Skip to content

Commit a922a10

Browse files
committed
Switch to toucan-js
1 parent 7efcd68 commit a922a10

File tree

5 files changed

+149
-177
lines changed

5 files changed

+149
-177
lines changed

functions/_middleware.js

+10-7
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,19 @@
1-
import {Sentry} from "../sentry";
1+
import Toucan from "toucan-js";
22

33
const errorHandler = async (event) => {
44
const {next, request, env} = event;
5+
const sentry = new Toucan({
6+
dsn: env.SENTRY_DSN,
7+
// Includes 'waitUntil', which is essential for Sentry logs to be delivered. Also includes 'request' -- no need to set it separately.
8+
context: event,
9+
allowedHeaders: ["user-agent"],
10+
env: "production",
11+
});
12+
event.data.sentry = sentry;
513
try {
614
return await next();
715
} catch (err) {
8-
const sentry = new Sentry({
9-
dsn: env.SENTRY_DSN,
10-
app: "pocketletter",
11-
env: "production",
12-
});
13-
event.waitUntil(sentry.log(err, request));
16+
sentry.captureException(err);
1417
return new Response(`${err.message}\n${err.stack}`, {status: 500});
1518
}
1619
};

functions/digest.ts

+14-7
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import Toucan from "toucan-js";
12
import {POCKET_ADD_URL} from "../constants";
23
import {signature, decrypt} from "../crypto";
34

@@ -100,19 +101,25 @@ async function storeLetter(
100101
}
101102

102103
export const onRequest: PagesFunction<IPocketLetterEnv> = async ({
104+
data,
103105
request,
104106
env,
105107
}) => {
106-
const data = await request.formData();
107-
const title = (data.get("subject") as string).replace(SUBJECT_CLEANER, "");
108+
const formData = await request.formData();
109+
const title = (formData.get("subject") as string).replace(
110+
SUBJECT_CLEANER,
111+
"",
112+
);
108113
const rawHtml = makeHTML(
109114
title,
110-
(data.get("html") as string) || textToHTML(data.get("text") as string),
111-
);
112-
const [fromName] = JSON.parse(data.get("envelope") as string)["to"][0].split(
113-
"@",
114-
1,
115+
(formData.get("html") as string) ||
116+
textToHTML(formData.get("text") as string),
115117
);
118+
const [fromName] = JSON.parse(formData.get("envelope") as string)[
119+
"to"
120+
][0].split("@", 1);
121+
(data.sentry as Toucan).setUser({id: fromName});
122+
116123
const pocketToken = decrypt(fromName, env.POCKET_TOKEN_KEY);
117124
const {html, directLink} = await processHTML(rawHtml);
118125

package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
"node": "16.13.1"
1919
},
2020
"dependencies": {
21-
"crc": "^4.0.0"
21+
"crc": "^4.0.0",
22+
"toucan-js": "^2.5.0"
2223
}
2324
}

sentry.ts

-162
This file was deleted.

yarn.lock

+123
Original file line numberDiff line numberDiff line change
@@ -7,27 +7,150 @@
77
resolved "https://registry.yarnpkg.com/@cloudflare/workers-types/-/workers-types-3.3.0.tgz#a05cf8e27bf007a93c6437bf22daa616b1b5fc42"
88
integrity sha512-3v3bm/hOuzNtHgDqPowrRE63H0GEn40LfhLMVpzS5yeg5tlE5nEQ0qobmGOJBCvJJ1LhgRRHZTJszXHs1DXQWg==
99

10+
11+
version "6.11.0"
12+
resolved "https://registry.yarnpkg.com/@sentry/core/-/core-6.11.0.tgz#40e94043afcf6407a109be26655c77832c64e740"
13+
integrity sha512-09TB+f3pqEq8LFahFWHO6I/4DxHo+NcS52OkbWMDqEi6oNZRD7PhPn3i14LfjsYVv3u3AESU8oxSEGbFrr2UjQ==
14+
dependencies:
15+
"@sentry/hub" "6.11.0"
16+
"@sentry/minimal" "6.11.0"
17+
"@sentry/types" "6.11.0"
18+
"@sentry/utils" "6.11.0"
19+
tslib "^1.9.3"
20+
21+
22+
version "6.11.0"
23+
resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-6.11.0.tgz#ddf9ddb0577d1c8290dc02c0242d274fe84d6c16"
24+
integrity sha512-pT9hf+ZJfVFpoZopoC+yJmFNclr4NPqPcl2cgguqCHb69DklD1NxgBNWK8D6X05qjnNFDF991U6t1mxP9HrGuw==
25+
dependencies:
26+
"@sentry/types" "6.11.0"
27+
"@sentry/utils" "6.11.0"
28+
tslib "^1.9.3"
29+
30+
31+
version "6.11.0"
32+
resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-6.11.0.tgz#806d5512658370e40827b3e3663061db708fff33"
33+
integrity sha512-XkZ7qrdlGp4IM/gjGxf1Q575yIbl5RvPbg+WFeekpo16Ufvzx37Mr8c2xsZaWosISVyE6eyFpooORjUlzy8EDw==
34+
dependencies:
35+
"@sentry/hub" "6.11.0"
36+
"@sentry/types" "6.11.0"
37+
tslib "^1.9.3"
38+
39+
40+
version "6.11.0"
41+
resolved "https://registry.yarnpkg.com/@sentry/types/-/types-6.11.0.tgz#5122685478d32ddacd3a891cbcf550012df85f7c"
42+
integrity sha512-gm5H9eZhL6bsIy/h3T+/Fzzz2vINhHhqd92CjHle3w7uXdTdFV98i2pDpErBGNTSNzbntqOMifYEB5ENtZAvcg==
43+
44+
45+
version "6.11.0"
46+
resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-6.11.0.tgz#d1dee4faf4d9c42c54bba88d5a66fb96b902a14c"
47+
integrity sha512-IOvyFHcnbRQxa++jO+ZUzRvFHEJ1cZjrBIQaNVc0IYF0twUOB5PTP6joTcix38ldaLeapaPZ9LGfudbvYvxkdg==
48+
dependencies:
49+
"@sentry/types" "6.11.0"
50+
tslib "^1.9.3"
51+
1052
"@tsconfig/node12@^1.0.9":
1153
version "1.0.9"
1254
resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.9.tgz#62c1f6dee2ebd9aead80dc3afa56810e58e1a04c"
1355
integrity sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==
1456

57+
58+
version "0.4.1"
59+
resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.4.1.tgz#bfd02c1f2224567676c1545199f87c3a861d878d"
60+
integrity sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==
61+
1562
1663
version "12.0.0"
1764
resolved "https://registry.yarnpkg.com/@types/node/-/node-12.0.0.tgz#d11813b9c0ff8aaca29f04cbc12817f4c7d656e5"
1865
integrity sha512-Jrb/x3HT4PTJp6a4avhmJCDEVrPdqLfl3e8GGMbpkGGdwAV5UGlIs4vVEfsHHfylZVOKZWpOqmqFH8CbfOZ6kg==
1966

67+
68+
version "8.3.1"
69+
resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-8.3.1.tgz#1a32969cf8f0364b3d8c8af9cc3555b7805df14f"
70+
integrity sha512-Y2mHTRAbqfFkpjldbkHGY8JIzRN6XqYRliG8/24FcHm2D2PwW24fl5xMRTVGdrb7iMrwCaIEbLWerGIkXuFWVg==
71+
2072
"@types/uuid@^8.3.3":
2173
version "8.3.3"
2274
resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-8.3.3.tgz#c6a60686d953dbd1b1d45e66f4ecdbd5d471b4d0"
2375
integrity sha512-0LbEEx1zxrYB3pgpd1M5lEhLcXjKJnYghvhTRgaBeUivLHMDM1TzF3IJ6hXU2+8uA4Xz+5BA63mtZo5DjVT8iA==
2476

77+
78+
version "0.4.1"
79+
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1"
80+
integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==
81+
2582
crc@^4.0.0:
2683
version "4.0.0"
2784
resolved "https://registry.yarnpkg.com/crc/-/crc-4.0.0.tgz#49d97bba62bbe97a0018d9d109ab2540f81a3b5a"
2885
integrity sha512-MFJnrsPVGMW9NkRO+BNquPNqTTvblLQ49VoSJSUdVSqlqJ+SLJylxsfuvNNlDNkoGwbR/2nO0T8rgUTv7HxUyg==
2986

87+
error-stack-parser@^2.0.6:
88+
version "2.0.6"
89+
resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.0.6.tgz#5a99a707bd7a4c58a797902d48d82803ede6aad8"
90+
integrity sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ==
91+
dependencies:
92+
stackframe "^1.1.1"
93+
3094
prettier@^2.5.1:
3195
version "2.5.1"
3296
resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.5.1.tgz#fff75fa9d519c54cf0fce328c1017d94546bc56a"
3397
integrity sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==
98+
99+
100+
version "0.5.6"
101+
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412"
102+
integrity sha1-dc449SvwczxafwwRjYEzSiu19BI=
103+
104+
stack-generator@^2.0.5:
105+
version "2.0.5"
106+
resolved "https://registry.yarnpkg.com/stack-generator/-/stack-generator-2.0.5.tgz#fb00e5b4ee97de603e0773ea78ce944d81596c36"
107+
integrity sha512-/t1ebrbHkrLrDuNMdeAcsvynWgoH/i4o8EGGfX7dEYDoTXOYVAkEpFdtshlvabzc6JlJ8Kf9YdFEoz7JkzGN9Q==
108+
dependencies:
109+
stackframe "^1.1.1"
110+
111+
stackframe@^1.1.1:
112+
version "1.2.0"
113+
resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.2.0.tgz#52429492d63c62eb989804c11552e3d22e779303"
114+
integrity sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA==
115+
116+
stacktrace-gps@^3.0.4:
117+
version "3.0.4"
118+
resolved "https://registry.yarnpkg.com/stacktrace-gps/-/stacktrace-gps-3.0.4.tgz#7688dc2fc09ffb3a13165ebe0dbcaf41bcf0c69a"
119+
integrity sha512-qIr8x41yZVSldqdqe6jciXEaSCKw1U8XTXpjDuy0ki/apyTn/r3w9hDAAQOhZdxvsC93H+WwwEu5cq5VemzYeg==
120+
dependencies:
121+
source-map "0.5.6"
122+
stackframe "^1.1.1"
123+
124+
125+
version "2.0.2"
126+
resolved "https://registry.yarnpkg.com/stacktrace-js/-/stacktrace-js-2.0.2.tgz#4ca93ea9f494752d55709a081d400fdaebee897b"
127+
integrity sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg==
128+
dependencies:
129+
error-stack-parser "^2.0.6"
130+
stack-generator "^2.0.5"
131+
stacktrace-gps "^3.0.4"
132+
133+
toucan-js@^2.5.0:
134+
version "2.5.0"
135+
resolved "https://registry.yarnpkg.com/toucan-js/-/toucan-js-2.5.0.tgz#049cd46237e34720c20607b0aabb564ea4cc1a51"
136+
integrity sha512-kGC4aBI5ou0L6jIe+CqYxWjobknU7CTsgQOfHMFadSm8KLh/8f2oKgtqcmRB5Iysvai2/4vJDrFXqX/3K4iAjQ==
137+
dependencies:
138+
"@sentry/core" "6.11.0"
139+
"@sentry/hub" "6.11.0"
140+
"@sentry/types" "6.11.0"
141+
"@sentry/utils" "6.11.0"
142+
"@types/cookie" "0.4.1"
143+
"@types/uuid" "8.3.1"
144+
cookie "0.4.1"
145+
stacktrace-js "2.0.2"
146+
uuid "8.3.2"
147+
148+
tslib@^1.9.3:
149+
version "1.14.1"
150+
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
151+
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
152+
153+
154+
version "8.3.2"
155+
resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
156+
integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==

0 commit comments

Comments
 (0)