@cfworker/sentry 5.0.2 → 5.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commonjs/capture.d.ts +1 -0
- package/dist/commonjs/capture.d.ts.map +1 -0
- package/dist/commonjs/capture.js +1 -0
- package/dist/commonjs/capture.js.map +1 -0
- package/dist/commonjs/index.d.ts +1 -0
- package/dist/commonjs/index.d.ts.map +1 -0
- package/dist/commonjs/index.js +1 -0
- package/dist/commonjs/index.js.map +1 -0
- package/dist/commonjs/package.json +2 -1
- package/dist/esm/capture.d.ts +1 -0
- package/dist/esm/capture.d.ts.map +1 -0
- package/dist/esm/capture.js +1 -0
- package/dist/esm/capture.js.map +1 -0
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/package.json +2 -1
- package/package.json +6 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capture.d.ts","sourceRoot":"","sources":["../../src/capture.ts"],"names":[],"mappings":"AAmFA,wBAAgB,YAAY,CAAC,EAC3B,SAAS,EACT,WAAW,EACX,OAAO,EACP,GAAG,EACH,OAAO,EACP,IAAI,EACJ,KAAe,EAChB,EAAE;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,OAAO,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,GAAG,CAAC;IACV,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;CAC1D,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAA;CAAE,CAsDlD"}
|
package/dist/commonjs/capture.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capture.js","sourceRoot":"","sources":["../../src/capture.ts"],"names":[],"mappings":"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","sourcesContent":["const sentryClient = 'cfworker-sentry';\n\nconst UNKNOWN_FUNCTION = '?';\nconst FILENAME_MATCH = /^\\s*[-]{4,}$/;\nconst FULL_MATCH =\n /at (?:async )?(?:(.+?)\\s+\\()?(?:(.+):(\\d+):(\\d+)?|([^)]+))\\)?/;\n\nfunction parseLine(line: string) {\n const lineMatch = line.match(FULL_MATCH);\n\n if (lineMatch) {\n let object: string | undefined;\n let method: string | undefined;\n let functionName: string | undefined;\n let typeName: string | undefined;\n let methodName: string | undefined;\n\n if (lineMatch[1]) {\n functionName = lineMatch[1];\n\n let methodStart = functionName.lastIndexOf('.');\n if (functionName[methodStart - 1] === '.') {\n methodStart--;\n }\n\n if (methodStart > 0) {\n object = functionName.slice(0, methodStart);\n method = functionName.slice(methodStart + 1);\n const objectEnd = object.indexOf('.Module');\n if (objectEnd > 0) {\n functionName = functionName.slice(objectEnd + 1);\n object = object.slice(0, objectEnd);\n }\n }\n typeName = undefined;\n }\n\n if (method) {\n typeName = object;\n methodName = method;\n }\n\n if (method === '<anonymous>') {\n methodName = undefined;\n functionName = undefined;\n }\n\n if (functionName === undefined) {\n methodName = methodName || UNKNOWN_FUNCTION;\n functionName = typeName ? `${typeName}.${methodName}` : methodName;\n }\n\n let filename = './' + lineMatch[2]?.split('/').pop();\n const isNative = lineMatch[5] === 'native';\n if (!filename && lineMatch[5] && !isNative) {\n filename = './' + lineMatch[5]?.split('/').pop();\n }\n\n return {\n filename,\n function: functionName,\n lineno: _parseIntOrUndefined(lineMatch[3]),\n colno: _parseIntOrUndefined(lineMatch[4]),\n in_app: true\n };\n }\n\n if (line.match(FILENAME_MATCH)) {\n return {\n filename: line\n };\n }\n\n return undefined;\n}\n\nfunction _parseIntOrUndefined(input: string | undefined): number | undefined {\n return parseInt(input || '', 10) || undefined;\n}\n\n/**\n * Report an error to Sentry\n */\nexport function captureError({\n sentryDsn,\n environment,\n release,\n err,\n request,\n user,\n level = 'error'\n}: {\n sentryDsn: string;\n environment: string;\n release: string;\n err: unknown;\n request: Request;\n user: any;\n level?: 'fatal' | 'error' | 'warning' | 'info' | 'debug';\n}): { event_id: string; posted: Promise<Response> } {\n const event_id = crypto.randomUUID();\n const timestamp = new Date().toISOString().substr(0, 19);\n let error: Error;\n if (err instanceof Error) {\n error = err;\n } else {\n error = new Error(err as string);\n error.message = String(err);\n }\n const body = {\n event_id,\n timestamp,\n sdk: {\n name: sentryClient,\n version: '1.0.0'\n },\n level,\n transaction: request.url,\n server_name: 'cloudflare',\n release,\n // tags: {},\n environment,\n // modules: {},\n extra: {},\n exception: {\n values: [\n {\n type: error.name,\n value: error.message,\n // Ref: https://develop.sentry.dev/sdk/event-payloads/stacktrace\n stacktrace: {\n frames:\n error.stack\n ?.split('\\n')\n .map(parseLine)\n .filter(Boolean)\n .reverse() ?? []\n }\n }\n ]\n },\n request: serializeRequest(request),\n user: Object.assign(user || {}, {\n ip_address: request.headers.get('CF-Connecting-IP')\n })\n };\n const { origin, pathname: project, username: key } = new URL(sentryDsn);\n const api = `${origin}/api${project}/store/?sentry_key=${key}&sentry_version=7&sentry_client=${sentryClient}`;\n const posted = fetch(api, {\n method: 'POST',\n body: JSON.stringify(body)\n });\n return { event_id, posted };\n}\n\nfunction serializeHeaders(headers: Headers) {\n const map: Record<string, string> = {};\n for (const [key, value] of headers) {\n if (key === 'cookie') {\n continue;\n }\n map[key] = value;\n }\n return map;\n}\n\nfunction serializeRequest(request: Request) {\n return {\n url: request.url,\n method: request.method,\n headers: serializeHeaders(request.headers)\n };\n}\n"]}
|
package/dist/commonjs/index.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/commonjs/index.js
CHANGED
|
@@ -3,3 +3,4 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.captureError = void 0;
|
|
4
4
|
var capture_js_1 = require("./capture.js");
|
|
5
5
|
Object.defineProperty(exports, "captureError", { enumerable: true, get: function () { return capture_js_1.captureError; } });
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,2CAA4C;AAAnC,0GAAA,YAAY,OAAA","sourcesContent":["export { captureError } from './capture.js';\n"]}
|
package/dist/esm/capture.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capture.d.ts","sourceRoot":"","sources":["../../src/capture.ts"],"names":[],"mappings":"AAmFA,wBAAgB,YAAY,CAAC,EAC3B,SAAS,EACT,WAAW,EACX,OAAO,EACP,GAAG,EACH,OAAO,EACP,IAAI,EACJ,KAAe,EAChB,EAAE;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,OAAO,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,GAAG,CAAC;IACV,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;CAC1D,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAA;CAAE,CAsDlD"}
|
package/dist/esm/capture.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capture.js","sourceRoot":"","sources":["../../src/capture.ts"],"names":[],"mappings":"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","sourcesContent":["const sentryClient = 'cfworker-sentry';\n\nconst UNKNOWN_FUNCTION = '?';\nconst FILENAME_MATCH = /^\\s*[-]{4,}$/;\nconst FULL_MATCH =\n /at (?:async )?(?:(.+?)\\s+\\()?(?:(.+):(\\d+):(\\d+)?|([^)]+))\\)?/;\n\nfunction parseLine(line: string) {\n const lineMatch = line.match(FULL_MATCH);\n\n if (lineMatch) {\n let object: string | undefined;\n let method: string | undefined;\n let functionName: string | undefined;\n let typeName: string | undefined;\n let methodName: string | undefined;\n\n if (lineMatch[1]) {\n functionName = lineMatch[1];\n\n let methodStart = functionName.lastIndexOf('.');\n if (functionName[methodStart - 1] === '.') {\n methodStart--;\n }\n\n if (methodStart > 0) {\n object = functionName.slice(0, methodStart);\n method = functionName.slice(methodStart + 1);\n const objectEnd = object.indexOf('.Module');\n if (objectEnd > 0) {\n functionName = functionName.slice(objectEnd + 1);\n object = object.slice(0, objectEnd);\n }\n }\n typeName = undefined;\n }\n\n if (method) {\n typeName = object;\n methodName = method;\n }\n\n if (method === '<anonymous>') {\n methodName = undefined;\n functionName = undefined;\n }\n\n if (functionName === undefined) {\n methodName = methodName || UNKNOWN_FUNCTION;\n functionName = typeName ? `${typeName}.${methodName}` : methodName;\n }\n\n let filename = './' + lineMatch[2]?.split('/').pop();\n const isNative = lineMatch[5] === 'native';\n if (!filename && lineMatch[5] && !isNative) {\n filename = './' + lineMatch[5]?.split('/').pop();\n }\n\n return {\n filename,\n function: functionName,\n lineno: _parseIntOrUndefined(lineMatch[3]),\n colno: _parseIntOrUndefined(lineMatch[4]),\n in_app: true\n };\n }\n\n if (line.match(FILENAME_MATCH)) {\n return {\n filename: line\n };\n }\n\n return undefined;\n}\n\nfunction _parseIntOrUndefined(input: string | undefined): number | undefined {\n return parseInt(input || '', 10) || undefined;\n}\n\n/**\n * Report an error to Sentry\n */\nexport function captureError({\n sentryDsn,\n environment,\n release,\n err,\n request,\n user,\n level = 'error'\n}: {\n sentryDsn: string;\n environment: string;\n release: string;\n err: unknown;\n request: Request;\n user: any;\n level?: 'fatal' | 'error' | 'warning' | 'info' | 'debug';\n}): { event_id: string; posted: Promise<Response> } {\n const event_id = crypto.randomUUID();\n const timestamp = new Date().toISOString().substr(0, 19);\n let error: Error;\n if (err instanceof Error) {\n error = err;\n } else {\n error = new Error(err as string);\n error.message = String(err);\n }\n const body = {\n event_id,\n timestamp,\n sdk: {\n name: sentryClient,\n version: '1.0.0'\n },\n level,\n transaction: request.url,\n server_name: 'cloudflare',\n release,\n // tags: {},\n environment,\n // modules: {},\n extra: {},\n exception: {\n values: [\n {\n type: error.name,\n value: error.message,\n // Ref: https://develop.sentry.dev/sdk/event-payloads/stacktrace\n stacktrace: {\n frames:\n error.stack\n ?.split('\\n')\n .map(parseLine)\n .filter(Boolean)\n .reverse() ?? []\n }\n }\n ]\n },\n request: serializeRequest(request),\n user: Object.assign(user || {}, {\n ip_address: request.headers.get('CF-Connecting-IP')\n })\n };\n const { origin, pathname: project, username: key } = new URL(sentryDsn);\n const api = `${origin}/api${project}/store/?sentry_key=${key}&sentry_version=7&sentry_client=${sentryClient}`;\n const posted = fetch(api, {\n method: 'POST',\n body: JSON.stringify(body)\n });\n return { event_id, posted };\n}\n\nfunction serializeHeaders(headers: Headers) {\n const map: Record<string, string> = {};\n for (const [key, value] of headers) {\n if (key === 'cookie') {\n continue;\n }\n map[key] = value;\n }\n return map;\n}\n\nfunction serializeRequest(request: Request) {\n return {\n url: request.url,\n method: request.method,\n headers: serializeHeaders(request.headers)\n };\n}\n"]}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/esm/index.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC","sourcesContent":["export { captureError } from './capture.js';\n"]}
|
package/dist/esm/package.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cfworker/sentry",
|
|
3
|
-
"version": "5.0.
|
|
3
|
+
"version": "5.0.4",
|
|
4
4
|
"description": "Minimalist Sentry client for Cloudflare workers and service workers",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"sentry",
|
|
@@ -40,14 +40,16 @@
|
|
|
40
40
|
],
|
|
41
41
|
"scripts": {
|
|
42
42
|
"prepare": "tshy",
|
|
43
|
-
"build": "
|
|
44
|
-
"
|
|
43
|
+
"build": "tshy",
|
|
44
|
+
"typecheck": "tsc --project tsconfig.json",
|
|
45
|
+
"clean": "tsc --build tsconfig.build.json --clean",
|
|
45
46
|
"test": "echo \"no tests 🥺\""
|
|
46
47
|
},
|
|
47
48
|
"devDependencies": {
|
|
48
|
-
"typescript": "^
|
|
49
|
+
"typescript": "^7.0.2"
|
|
49
50
|
},
|
|
50
51
|
"tshy": {
|
|
52
|
+
"project": "./tsconfig.build.json",
|
|
51
53
|
"exports": {
|
|
52
54
|
"./package.json": "./package.json",
|
|
53
55
|
".": "./src/index.ts"
|