@sentry/wizard 6.10.0 → 6.11.0
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/CHANGELOG.md +20 -0
- package/dist/ci-ensure-runtime-loaded.sh +82 -0
- package/dist/e2e-tests/tests/angular-17.test.js +72 -82
- package/dist/e2e-tests/tests/angular-17.test.js.map +1 -1
- package/dist/e2e-tests/tests/angular-19.test.js +71 -80
- package/dist/e2e-tests/tests/angular-19.test.js.map +1 -1
- package/dist/e2e-tests/tests/cloudflare-worker.test.d.ts +1 -0
- package/dist/e2e-tests/tests/cloudflare-worker.test.js +64 -0
- package/dist/e2e-tests/tests/cloudflare-worker.test.js.map +1 -0
- package/dist/e2e-tests/tests/cloudflare-wrangler-sourcemaps.test.js +2 -5
- package/dist/e2e-tests/tests/cloudflare-wrangler-sourcemaps.test.js.map +1 -1
- package/dist/e2e-tests/tests/expo.test.js +36 -61
- package/dist/e2e-tests/tests/expo.test.js.map +1 -1
- package/dist/e2e-tests/tests/flutter.test.js +63 -70
- package/dist/e2e-tests/tests/flutter.test.js.map +1 -1
- package/dist/e2e-tests/tests/help-message.test.js +2 -2
- package/dist/e2e-tests/tests/help-message.test.js.map +1 -1
- package/dist/e2e-tests/tests/nextjs-14.test.js +48 -76
- package/dist/e2e-tests/tests/nextjs-14.test.js.map +1 -1
- package/dist/e2e-tests/tests/nextjs-15.test.js +89 -99
- package/dist/e2e-tests/tests/nextjs-15.test.js.map +1 -1
- package/dist/e2e-tests/tests/nextjs-16.test.js +48 -45
- package/dist/e2e-tests/tests/nextjs-16.test.js.map +1 -1
- package/dist/e2e-tests/tests/nuxt-3.test.js +45 -58
- package/dist/e2e-tests/tests/nuxt-3.test.js.map +1 -1
- package/dist/e2e-tests/tests/nuxt-4.test.js +59 -73
- package/dist/e2e-tests/tests/nuxt-4.test.js.map +1 -1
- package/dist/e2e-tests/tests/pnpm-workspace.test.js +4 -7
- package/dist/e2e-tests/tests/pnpm-workspace.test.js.map +1 -1
- package/dist/e2e-tests/tests/react-native.test.js +44 -80
- package/dist/e2e-tests/tests/react-native.test.js.map +1 -1
- package/dist/e2e-tests/tests/react-router.test.js +163 -145
- package/dist/e2e-tests/tests/react-router.test.js.map +1 -1
- package/dist/e2e-tests/tests/remix.test.js +162 -132
- package/dist/e2e-tests/tests/remix.test.js.map +1 -1
- package/dist/e2e-tests/tests/sveltekit-hooks.test.js +48 -36
- package/dist/e2e-tests/tests/sveltekit-hooks.test.js.map +1 -1
- package/dist/e2e-tests/tests/sveltekit-tracing.test.js +3 -6
- package/dist/e2e-tests/tests/sveltekit-tracing.test.js.map +1 -1
- package/dist/e2e-tests/utils/index.d.ts +15 -43
- package/dist/e2e-tests/utils/index.js +95 -185
- package/dist/e2e-tests/utils/index.js.map +1 -1
- package/dist/get-e2e-test-matrix.mjs +11 -0
- package/dist/lib/Constants.d.ts +1 -0
- package/dist/lib/Constants.js +5 -0
- package/dist/lib/Constants.js.map +1 -1
- package/dist/src/android/android-wizard.js +2 -4
- package/dist/src/android/android-wizard.js.map +1 -1
- package/dist/src/angular/angular-wizard.js +4 -6
- package/dist/src/angular/angular-wizard.js.map +1 -1
- package/dist/src/angular/sdk-setup.js +1 -1
- package/dist/src/angular/sdk-setup.js.map +1 -1
- package/dist/src/apple/apple-wizard.js +2 -4
- package/dist/src/apple/apple-wizard.js.map +1 -1
- package/dist/src/cloudflare/cloudflare-wizard.d.ts +3 -0
- package/dist/src/cloudflare/cloudflare-wizard.js +99 -0
- package/dist/src/cloudflare/cloudflare-wizard.js.map +1 -0
- package/dist/src/cloudflare/sdk-setup.d.ts +7 -0
- package/dist/src/cloudflare/sdk-setup.js +47 -0
- package/dist/src/cloudflare/sdk-setup.js.map +1 -0
- package/dist/src/cloudflare/templates.d.ts +4 -0
- package/dist/src/cloudflare/templates.js +44 -0
- package/dist/src/cloudflare/templates.js.map +1 -0
- package/dist/src/cloudflare/wrangler/create-wrangler-config.d.ts +4 -0
- package/dist/src/cloudflare/wrangler/create-wrangler-config.js +27 -0
- package/dist/src/cloudflare/wrangler/create-wrangler-config.js.map +1 -0
- package/dist/src/cloudflare/wrangler/ensure-wrangler-config.d.ts +4 -0
- package/dist/src/cloudflare/wrangler/ensure-wrangler-config.js +25 -0
- package/dist/src/cloudflare/wrangler/ensure-wrangler-config.js.map +1 -0
- package/dist/src/cloudflare/wrangler/find-wrangler-config.d.ts +4 -0
- package/dist/src/cloudflare/wrangler/find-wrangler-config.js +23 -0
- package/dist/src/cloudflare/wrangler/find-wrangler-config.js.map +1 -0
- package/dist/src/cloudflare/wrangler/get-entry-point-from-wrangler-config.d.ts +6 -0
- package/dist/src/cloudflare/wrangler/get-entry-point-from-wrangler-config.js +52 -0
- package/dist/src/cloudflare/wrangler/get-entry-point-from-wrangler-config.js.map +1 -0
- package/dist/src/cloudflare/wrangler/update-wrangler-config.d.ts +17 -0
- package/dist/src/cloudflare/wrangler/update-wrangler-config.js +173 -0
- package/dist/src/cloudflare/wrangler/update-wrangler-config.js.map +1 -0
- package/dist/src/cloudflare/wrap-worker.d.ts +32 -0
- package/dist/src/cloudflare/wrap-worker.js +109 -0
- package/dist/src/cloudflare/wrap-worker.js.map +1 -0
- package/dist/src/flutter/flutter-wizard.js +3 -6
- package/dist/src/flutter/flutter-wizard.js.map +1 -1
- package/dist/src/nextjs/nextjs-wizard.js +0 -2
- package/dist/src/nextjs/nextjs-wizard.js.map +1 -1
- package/dist/src/nuxt/nuxt-wizard.js +3 -5
- package/dist/src/nuxt/nuxt-wizard.js.map +1 -1
- package/dist/src/react-native/react-native-wizard.js +2 -4
- package/dist/src/react-native/react-native-wizard.js.map +1 -1
- package/dist/src/react-router/react-router-wizard.js +3 -5
- package/dist/src/react-router/react-router-wizard.js.map +1 -1
- package/dist/src/react-router/sdk-setup.d.ts +1 -1
- package/dist/src/react-router/sdk-setup.js +3 -4
- package/dist/src/react-router/sdk-setup.js.map +1 -1
- package/dist/src/remix/remix-wizard.js +2 -4
- package/dist/src/remix/remix-wizard.js.map +1 -1
- package/dist/src/run.d.ts +1 -1
- package/dist/src/run.js +5 -0
- package/dist/src/run.js.map +1 -1
- package/dist/src/sveltekit/sveltekit-wizard.js +2 -4
- package/dist/src/sveltekit/sveltekit-wizard.js.map +1 -1
- package/dist/src/utils/abort-if-sportlight-not-supported.d.ts +5 -0
- package/dist/src/utils/abort-if-sportlight-not-supported.js +40 -0
- package/dist/src/utils/abort-if-sportlight-not-supported.js.map +1 -0
- package/dist/src/utils/ast-utils.d.ts +1 -1
- package/dist/src/utils/ast-utils.js.map +1 -1
- package/dist/src/utils/clack/index.d.ts +2 -2
- package/dist/src/utils/clack/index.js.map +1 -1
- package/dist/src/utils/clack/mcp-config.js +117 -59
- package/dist/src/utils/clack/mcp-config.js.map +1 -1
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +1 -1
- package/dist/src/version.js.map +1 -1
- package/dist/test/angular/angular-wizard.test.js +2 -4
- package/dist/test/angular/angular-wizard.test.js.map +1 -1
- package/dist/test/cloudflare/create-wrangler-config.test.d.ts +1 -0
- package/dist/test/cloudflare/create-wrangler-config.test.js +48 -0
- package/dist/test/cloudflare/create-wrangler-config.test.js.map +1 -0
- package/dist/test/cloudflare/ensure-wrangler-config.test.d.ts +1 -0
- package/dist/test/cloudflare/ensure-wrangler-config.test.js +61 -0
- package/dist/test/cloudflare/ensure-wrangler-config.test.js.map +1 -0
- package/dist/test/cloudflare/find-wrangler-config.test.d.ts +1 -0
- package/dist/test/cloudflare/find-wrangler-config.test.js +77 -0
- package/dist/test/cloudflare/find-wrangler-config.test.js.map +1 -0
- package/dist/test/cloudflare/get-entry-point-from-wrangler-config.test.d.ts +1 -0
- package/dist/test/cloudflare/get-entry-point-from-wrangler-config.test.js +81 -0
- package/dist/test/cloudflare/get-entry-point-from-wrangler-config.test.js.map +1 -0
- package/dist/test/cloudflare/sdk-setup.test.d.ts +1 -0
- package/dist/test/cloudflare/sdk-setup.test.js +152 -0
- package/dist/test/cloudflare/sdk-setup.test.js.map +1 -0
- package/dist/test/cloudflare/templates.test.d.ts +1 -0
- package/dist/test/cloudflare/templates.test.js +68 -0
- package/dist/test/cloudflare/templates.test.js.map +1 -0
- package/dist/test/cloudflare/update-wrangler-config.test.d.ts +1 -0
- package/dist/test/cloudflare/update-wrangler-config.test.js +216 -0
- package/dist/test/cloudflare/update-wrangler-config.test.js.map +1 -0
- package/dist/test/cloudflare/wrap-worker.test.d.ts +1 -0
- package/dist/test/cloudflare/wrap-worker.test.js +143 -0
- package/dist/test/cloudflare/wrap-worker.test.js.map +1 -0
- package/dist/test/react-router/sdk-setup.test.js +2 -2
- package/dist/test/react-router/sdk-setup.test.js.map +1 -1
- package/dist/test/utils/clack/mcp-config.test.js +176 -51
- package/dist/test/utils/clack/mcp-config.test.js.map +1 -1
- package/package.json +5 -4
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
const vitest_1 = require("vitest");
|
|
27
|
+
const fs = __importStar(require("node:fs"));
|
|
28
|
+
const path = __importStar(require("node:path"));
|
|
29
|
+
const os = __importStar(require("node:os"));
|
|
30
|
+
const find_wrangler_config_1 = require("../../src/cloudflare/wrangler/find-wrangler-config");
|
|
31
|
+
(0, vitest_1.describe)('findWranglerConfig', () => {
|
|
32
|
+
let tmpDir;
|
|
33
|
+
(0, vitest_1.beforeEach)(() => {
|
|
34
|
+
vitest_1.vi.clearAllMocks();
|
|
35
|
+
tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'find-wrangler-config-'));
|
|
36
|
+
vitest_1.vi.spyOn(process, 'cwd').mockReturnValue(tmpDir);
|
|
37
|
+
});
|
|
38
|
+
(0, vitest_1.afterEach)(() => {
|
|
39
|
+
if (fs.existsSync(tmpDir)) {
|
|
40
|
+
fs.rmSync(tmpDir, { recursive: true });
|
|
41
|
+
}
|
|
42
|
+
vitest_1.vi.restoreAllMocks();
|
|
43
|
+
});
|
|
44
|
+
(0, vitest_1.it)('returns wrangler.toml if it exists', () => {
|
|
45
|
+
fs.writeFileSync(path.join(tmpDir, 'wrangler.toml'), '');
|
|
46
|
+
const result = (0, find_wrangler_config_1.findWranglerConfig)();
|
|
47
|
+
(0, vitest_1.expect)(result).toBe('wrangler.toml');
|
|
48
|
+
});
|
|
49
|
+
(0, vitest_1.it)('returns wrangler.jsonc if it exists', () => {
|
|
50
|
+
fs.writeFileSync(path.join(tmpDir, 'wrangler.jsonc'), '{}');
|
|
51
|
+
const result = (0, find_wrangler_config_1.findWranglerConfig)();
|
|
52
|
+
(0, vitest_1.expect)(result).toBe('wrangler.jsonc');
|
|
53
|
+
});
|
|
54
|
+
(0, vitest_1.it)('returns wrangler.json if it exists', () => {
|
|
55
|
+
fs.writeFileSync(path.join(tmpDir, 'wrangler.json'), '{}');
|
|
56
|
+
const result = (0, find_wrangler_config_1.findWranglerConfig)();
|
|
57
|
+
(0, vitest_1.expect)(result).toBe('wrangler.json');
|
|
58
|
+
});
|
|
59
|
+
(0, vitest_1.it)('returns wrangler.jsonc when multiple config files exist (priority order)', () => {
|
|
60
|
+
fs.writeFileSync(path.join(tmpDir, 'wrangler.toml'), '');
|
|
61
|
+
fs.writeFileSync(path.join(tmpDir, 'wrangler.jsonc'), '{}');
|
|
62
|
+
fs.writeFileSync(path.join(tmpDir, 'wrangler.json'), '{}');
|
|
63
|
+
const result = (0, find_wrangler_config_1.findWranglerConfig)();
|
|
64
|
+
(0, vitest_1.expect)(result).toBe('wrangler.jsonc');
|
|
65
|
+
});
|
|
66
|
+
(0, vitest_1.it)('returns wrangler.json when jsonc and json do exist but toml does not', () => {
|
|
67
|
+
fs.writeFileSync(path.join(tmpDir, 'wrangler.toml'), '{}');
|
|
68
|
+
fs.writeFileSync(path.join(tmpDir, 'wrangler.json'), '{}');
|
|
69
|
+
const result = (0, find_wrangler_config_1.findWranglerConfig)();
|
|
70
|
+
(0, vitest_1.expect)(result).toBe('wrangler.json');
|
|
71
|
+
});
|
|
72
|
+
(0, vitest_1.it)('returns undefined if no config file exists', () => {
|
|
73
|
+
const result = (0, find_wrangler_config_1.findWranglerConfig)();
|
|
74
|
+
(0, vitest_1.expect)(result).toBeUndefined();
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
//# sourceMappingURL=find-wrangler-config.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"find-wrangler-config.test.js","sourceRoot":"","sources":["../../../test/cloudflare/find-wrangler-config.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';\nimport * as fs from 'node:fs';\nimport * as path from 'node:path';\nimport * as os from 'node:os';\nimport { findWranglerConfig } from '../../src/cloudflare/wrangler/find-wrangler-config';\n\ndescribe('findWranglerConfig', () => {\n let tmpDir: string;\n\n beforeEach(() => {\n vi.clearAllMocks();\n\n tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'find-wrangler-config-'));\n\n vi.spyOn(process, 'cwd').mockReturnValue(tmpDir);\n });\n\n afterEach(() => {\n if (fs.existsSync(tmpDir)) {\n fs.rmSync(tmpDir, { recursive: true });\n }\n\n vi.restoreAllMocks();\n });\n\n it('returns wrangler.toml if it exists', () => {\n fs.writeFileSync(path.join(tmpDir, 'wrangler.toml'), '');\n\n const result = findWranglerConfig();\n\n expect(result).toBe('wrangler.toml');\n });\n\n it('returns wrangler.jsonc if it exists', () => {\n fs.writeFileSync(path.join(tmpDir, 'wrangler.jsonc'), '{}');\n\n const result = findWranglerConfig();\n\n expect(result).toBe('wrangler.jsonc');\n });\n\n it('returns wrangler.json if it exists', () => {\n fs.writeFileSync(path.join(tmpDir, 'wrangler.json'), '{}');\n\n const result = findWranglerConfig();\n\n expect(result).toBe('wrangler.json');\n });\n\n it('returns wrangler.jsonc when multiple config files exist (priority order)', () => {\n fs.writeFileSync(path.join(tmpDir, 'wrangler.toml'), '');\n fs.writeFileSync(path.join(tmpDir, 'wrangler.jsonc'), '{}');\n fs.writeFileSync(path.join(tmpDir, 'wrangler.json'), '{}');\n\n const result = findWranglerConfig();\n\n expect(result).toBe('wrangler.jsonc');\n });\n\n it('returns wrangler.json when jsonc and json do exist but toml does not', () => {\n fs.writeFileSync(path.join(tmpDir, 'wrangler.toml'), '{}');\n fs.writeFileSync(path.join(tmpDir, 'wrangler.json'), '{}');\n\n const result = findWranglerConfig();\n\n expect(result).toBe('wrangler.json');\n });\n\n it('returns undefined if no config file exists', () => {\n const result = findWranglerConfig();\n\n expect(result).toBeUndefined();\n });\n});\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
const vitest_1 = require("vitest");
|
|
27
|
+
const fs = __importStar(require("node:fs"));
|
|
28
|
+
const path = __importStar(require("node:path"));
|
|
29
|
+
const os = __importStar(require("node:os"));
|
|
30
|
+
const get_entry_point_from_wrangler_config_1 = require("../../src/cloudflare/wrangler/get-entry-point-from-wrangler-config");
|
|
31
|
+
(0, vitest_1.describe)('getEntryPointFromWranglerConfig', () => {
|
|
32
|
+
let tmpDir;
|
|
33
|
+
(0, vitest_1.beforeEach)(() => {
|
|
34
|
+
vitest_1.vi.clearAllMocks();
|
|
35
|
+
tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'get-entry-point-from-wrangler-config-'));
|
|
36
|
+
vitest_1.vi.spyOn(process, 'cwd').mockReturnValue(tmpDir);
|
|
37
|
+
});
|
|
38
|
+
(0, vitest_1.afterEach)(() => {
|
|
39
|
+
if (fs.existsSync(tmpDir)) {
|
|
40
|
+
fs.rmSync(tmpDir, { recursive: true });
|
|
41
|
+
}
|
|
42
|
+
vitest_1.vi.restoreAllMocks();
|
|
43
|
+
});
|
|
44
|
+
(0, vitest_1.it)('returns undefined if no config file exists', () => {
|
|
45
|
+
const result = (0, get_entry_point_from_wrangler_config_1.getEntryPointFromWranglerConfig)();
|
|
46
|
+
(0, vitest_1.expect)(result).toBeUndefined();
|
|
47
|
+
});
|
|
48
|
+
(0, vitest_1.it)('parses main from wrangler.toml', () => {
|
|
49
|
+
fs.writeFileSync(path.join(tmpDir, 'wrangler.toml'), `name = "my-worker"
|
|
50
|
+
main = "src/worker.ts"
|
|
51
|
+
compatibility_date = "2024-01-01"`);
|
|
52
|
+
const result = (0, get_entry_point_from_wrangler_config_1.getEntryPointFromWranglerConfig)();
|
|
53
|
+
(0, vitest_1.expect)(result).toBe('src/worker.ts');
|
|
54
|
+
});
|
|
55
|
+
(0, vitest_1.it)('parses main from wrangler.json', () => {
|
|
56
|
+
fs.writeFileSync(path.join(tmpDir, 'wrangler.json'), JSON.stringify({ name: 'my-worker', main: 'src/deeplink/index.ts' }));
|
|
57
|
+
const result = (0, get_entry_point_from_wrangler_config_1.getEntryPointFromWranglerConfig)();
|
|
58
|
+
(0, vitest_1.expect)(result).toBe('src/deeplink/index.ts');
|
|
59
|
+
});
|
|
60
|
+
(0, vitest_1.it)('parses main from wrangler.jsonc with comments', () => {
|
|
61
|
+
fs.writeFileSync(path.join(tmpDir, 'wrangler.jsonc'), `{
|
|
62
|
+
// Comment
|
|
63
|
+
"name": "my-worker",
|
|
64
|
+
"main": "src/inside-app/index.ts"
|
|
65
|
+
}`);
|
|
66
|
+
const result = (0, get_entry_point_from_wrangler_config_1.getEntryPointFromWranglerConfig)();
|
|
67
|
+
(0, vitest_1.expect)(result).toBe('src/inside-app/index.ts');
|
|
68
|
+
});
|
|
69
|
+
(0, vitest_1.it)('returns undefined if main field is not specified', () => {
|
|
70
|
+
fs.writeFileSync(path.join(tmpDir, 'wrangler.toml'), `name = "my-worker"
|
|
71
|
+
compatibility_date = "2024-01-01"`);
|
|
72
|
+
const result = (0, get_entry_point_from_wrangler_config_1.getEntryPointFromWranglerConfig)();
|
|
73
|
+
(0, vitest_1.expect)(result).toBeUndefined();
|
|
74
|
+
});
|
|
75
|
+
(0, vitest_1.it)('returns undefined if JSON parsing fails', () => {
|
|
76
|
+
fs.writeFileSync(path.join(tmpDir, 'wrangler.json'), '{ invalid json }');
|
|
77
|
+
const result = (0, get_entry_point_from_wrangler_config_1.getEntryPointFromWranglerConfig)();
|
|
78
|
+
(0, vitest_1.expect)(result).toBeUndefined();
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
//# sourceMappingURL=get-entry-point-from-wrangler-config.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-entry-point-from-wrangler-config.test.js","sourceRoot":"","sources":["../../../test/cloudflare/get-entry-point-from-wrangler-config.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';\nimport * as fs from 'node:fs';\nimport * as path from 'node:path';\nimport * as os from 'node:os';\nimport { getEntryPointFromWranglerConfig } from '../../src/cloudflare/wrangler/get-entry-point-from-wrangler-config';\n\ndescribe('getEntryPointFromWranglerConfig', () => {\n let tmpDir: string;\n\n beforeEach(() => {\n vi.clearAllMocks();\n\n tmpDir = fs.mkdtempSync(\n path.join(os.tmpdir(), 'get-entry-point-from-wrangler-config-'),\n );\n\n vi.spyOn(process, 'cwd').mockReturnValue(tmpDir);\n });\n\n afterEach(() => {\n if (fs.existsSync(tmpDir)) {\n fs.rmSync(tmpDir, { recursive: true });\n }\n\n vi.restoreAllMocks();\n });\n\n it('returns undefined if no config file exists', () => {\n const result = getEntryPointFromWranglerConfig();\n\n expect(result).toBeUndefined();\n });\n\n it('parses main from wrangler.toml', () => {\n fs.writeFileSync(\n path.join(tmpDir, 'wrangler.toml'),\n `name = \"my-worker\"\nmain = \"src/worker.ts\"\ncompatibility_date = \"2024-01-01\"`,\n );\n\n const result = getEntryPointFromWranglerConfig();\n\n expect(result).toBe('src/worker.ts');\n });\n\n it('parses main from wrangler.json', () => {\n fs.writeFileSync(\n path.join(tmpDir, 'wrangler.json'),\n JSON.stringify({ name: 'my-worker', main: 'src/deeplink/index.ts' }),\n );\n\n const result = getEntryPointFromWranglerConfig();\n\n expect(result).toBe('src/deeplink/index.ts');\n });\n\n it('parses main from wrangler.jsonc with comments', () => {\n fs.writeFileSync(\n path.join(tmpDir, 'wrangler.jsonc'),\n `{\n // Comment\n \"name\": \"my-worker\",\n \"main\": \"src/inside-app/index.ts\"\n}`,\n );\n\n const result = getEntryPointFromWranglerConfig();\n\n expect(result).toBe('src/inside-app/index.ts');\n });\n\n it('returns undefined if main field is not specified', () => {\n fs.writeFileSync(\n path.join(tmpDir, 'wrangler.toml'),\n `name = \"my-worker\"\ncompatibility_date = \"2024-01-01\"`,\n );\n\n const result = getEntryPointFromWranglerConfig();\n\n expect(result).toBeUndefined();\n });\n\n it('returns undefined if JSON parsing fails', () => {\n fs.writeFileSync(path.join(tmpDir, 'wrangler.json'), '{ invalid json }');\n\n const result = getEntryPointFromWranglerConfig();\n\n expect(result).toBeUndefined();\n });\n});\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
const vitest_1 = require("vitest");
|
|
27
|
+
const fs = __importStar(require("node:fs"));
|
|
28
|
+
const path = __importStar(require("node:path"));
|
|
29
|
+
const os = __importStar(require("node:os"));
|
|
30
|
+
const sdk_setup_1 = require("../../src/cloudflare/sdk-setup");
|
|
31
|
+
const get_entry_point_from_wrangler_config_1 = require("../../src/cloudflare/wrangler/get-entry-point-from-wrangler-config");
|
|
32
|
+
const templates = __importStar(require("../../src/cloudflare/templates"));
|
|
33
|
+
const wrapWorker = __importStar(require("../../src/cloudflare/wrap-worker"));
|
|
34
|
+
const { clackMocks } = vitest_1.vi.hoisted(() => {
|
|
35
|
+
const info = vitest_1.vi.fn();
|
|
36
|
+
const warn = vitest_1.vi.fn();
|
|
37
|
+
const success = vitest_1.vi.fn();
|
|
38
|
+
const step = vitest_1.vi.fn();
|
|
39
|
+
const note = vitest_1.vi.fn();
|
|
40
|
+
return {
|
|
41
|
+
clackMocks: {
|
|
42
|
+
info,
|
|
43
|
+
warn,
|
|
44
|
+
success,
|
|
45
|
+
step,
|
|
46
|
+
note,
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
});
|
|
50
|
+
vitest_1.vi.mock('@clack/prompts', () => ({
|
|
51
|
+
__esModule: true,
|
|
52
|
+
default: {
|
|
53
|
+
log: {
|
|
54
|
+
info: clackMocks.info,
|
|
55
|
+
warn: clackMocks.warn,
|
|
56
|
+
success: clackMocks.success,
|
|
57
|
+
step: clackMocks.step,
|
|
58
|
+
},
|
|
59
|
+
note: clackMocks.note,
|
|
60
|
+
},
|
|
61
|
+
}));
|
|
62
|
+
const { getEntryPointFromWranglerConfigMock } = vitest_1.vi.hoisted(() => ({
|
|
63
|
+
getEntryPointFromWranglerConfigMock: vitest_1.vi.fn(),
|
|
64
|
+
}));
|
|
65
|
+
vitest_1.vi.mock('../../src/cloudflare/wrangler/get-entry-point-from-wrangler-config', () => ({
|
|
66
|
+
getEntryPointFromWranglerConfig: getEntryPointFromWranglerConfigMock,
|
|
67
|
+
defaultEntryPoint: 'src/index.ts',
|
|
68
|
+
}));
|
|
69
|
+
(0, vitest_1.describe)('createSentryInitFile', () => {
|
|
70
|
+
let tmpDir;
|
|
71
|
+
const testDsn = 'https://example@sentry.io/123';
|
|
72
|
+
const testFeatures = {
|
|
73
|
+
performance: true,
|
|
74
|
+
};
|
|
75
|
+
(0, vitest_1.beforeEach)(() => {
|
|
76
|
+
vitest_1.vi.clearAllMocks();
|
|
77
|
+
tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'sdk-setup-test-'));
|
|
78
|
+
vitest_1.vi.spyOn(process, 'cwd').mockReturnValue(tmpDir);
|
|
79
|
+
});
|
|
80
|
+
(0, vitest_1.afterEach)(() => {
|
|
81
|
+
if (fs.existsSync(tmpDir)) {
|
|
82
|
+
fs.rmSync(tmpDir, { recursive: true });
|
|
83
|
+
}
|
|
84
|
+
vitest_1.vi.restoreAllMocks();
|
|
85
|
+
});
|
|
86
|
+
(0, vitest_1.it)('creates a new default entry point file', async () => {
|
|
87
|
+
const template = 'export default { async fetch() { return new Response("ᕕ(⌐■_■)ᕗ ♪♬"); } }';
|
|
88
|
+
const getCloudflareWorkerTemplateWithHandlerSpy = vitest_1.vi
|
|
89
|
+
.spyOn(templates, 'getCloudflareWorkerTemplateWithHandler')
|
|
90
|
+
.mockReturnValue(template);
|
|
91
|
+
await (0, sdk_setup_1.createSentryInitFile)(testDsn, testFeatures);
|
|
92
|
+
const expectedPath = path.join(tmpDir, 'src/index.ts');
|
|
93
|
+
const content = fs.readFileSync(expectedPath, 'utf-8');
|
|
94
|
+
(0, vitest_1.expect)(clackMocks.info).toHaveBeenCalledWith('No entry point found in wrangler config, creating a new one.');
|
|
95
|
+
(0, vitest_1.expect)(fs.existsSync(expectedPath)).toBe(true);
|
|
96
|
+
(0, vitest_1.expect)(content).toBe(template);
|
|
97
|
+
(0, vitest_1.expect)(clackMocks.success).toHaveBeenCalledWith('Created src/index.ts.');
|
|
98
|
+
(0, vitest_1.expect)(getCloudflareWorkerTemplateWithHandlerSpy).toHaveBeenCalled();
|
|
99
|
+
});
|
|
100
|
+
(0, vitest_1.describe)('when entry point is found in wrangler config', () => {
|
|
101
|
+
(0, vitest_1.describe)('and the entry point file exists', () => {
|
|
102
|
+
(0, vitest_1.beforeEach)(async () => {
|
|
103
|
+
await (0, sdk_setup_1.createSentryInitFile)(testDsn, testFeatures);
|
|
104
|
+
getEntryPointFromWranglerConfigMock.mockReturnValue(get_entry_point_from_wrangler_config_1.defaultEntryPoint);
|
|
105
|
+
});
|
|
106
|
+
(0, vitest_1.it)('wraps the worker with Sentry when wrapping succeeds', async () => {
|
|
107
|
+
const wrapWorkerWithSentrySpy = vitest_1.vi
|
|
108
|
+
.spyOn(wrapWorker, 'wrapWorkerWithSentry')
|
|
109
|
+
.mockResolvedValue(undefined);
|
|
110
|
+
await (0, sdk_setup_1.createSentryInitFile)(testDsn, testFeatures);
|
|
111
|
+
(0, vitest_1.expect)(wrapWorkerWithSentrySpy).toHaveBeenCalledWith(path.join(tmpDir, get_entry_point_from_wrangler_config_1.defaultEntryPoint), testDsn, testFeatures);
|
|
112
|
+
});
|
|
113
|
+
(0, vitest_1.it)('handles wrapping failure gracefully', async () => {
|
|
114
|
+
vitest_1.vi.spyOn(wrapWorker, 'wrapWorkerWithSentry').mockRejectedValue(new Error('Wrapping failed'));
|
|
115
|
+
await (0, sdk_setup_1.createSentryInitFile)(testDsn, testFeatures);
|
|
116
|
+
(0, vitest_1.expect)(clackMocks.warn).toHaveBeenCalledWith('Failed to wrap worker automatically.');
|
|
117
|
+
(0, vitest_1.expect)(clackMocks.step).toHaveBeenCalledWith('Please wrap your handler with Sentry initialization:');
|
|
118
|
+
(0, vitest_1.expect)(clackMocks.note).toHaveBeenCalledWith(vitest_1.expect.stringContaining('import * as Sentry'));
|
|
119
|
+
});
|
|
120
|
+
(0, vitest_1.it)('shows template with correct DSN when wrapping fails', async () => {
|
|
121
|
+
vitest_1.vi.spyOn(wrapWorker, 'wrapWorkerWithSentry').mockRejectedValue(new Error('Failed'));
|
|
122
|
+
const getCloudflareWorkerTemplateSpy = vitest_1.vi
|
|
123
|
+
.spyOn(templates, 'getCloudflareWorkerTemplate')
|
|
124
|
+
.mockReturnValue('template with dsn');
|
|
125
|
+
await (0, sdk_setup_1.createSentryInitFile)(testDsn, testFeatures);
|
|
126
|
+
(0, vitest_1.expect)(getCloudflareWorkerTemplateSpy).toHaveBeenCalledWith(testDsn, testFeatures);
|
|
127
|
+
(0, vitest_1.expect)(clackMocks.note).toHaveBeenCalledWith('template with dsn');
|
|
128
|
+
});
|
|
129
|
+
(0, vitest_1.it)('passes performance feature flag correctly', async () => {
|
|
130
|
+
const wrapWorkerWithSentrySpy = vitest_1.vi
|
|
131
|
+
.spyOn(wrapWorker, 'wrapWorkerWithSentry')
|
|
132
|
+
.mockResolvedValue(undefined);
|
|
133
|
+
await (0, sdk_setup_1.createSentryInitFile)(testDsn, { performance: false });
|
|
134
|
+
(0, vitest_1.expect)(wrapWorkerWithSentrySpy).toHaveBeenCalledWith(path.join(tmpDir, get_entry_point_from_wrangler_config_1.defaultEntryPoint), testDsn, { performance: false });
|
|
135
|
+
});
|
|
136
|
+
});
|
|
137
|
+
(0, vitest_1.describe)('and the entry point file does not exist', () => {
|
|
138
|
+
(0, vitest_1.it)('does not throw an error', async () => {
|
|
139
|
+
vitest_1.vi.spyOn(wrapWorker, 'wrapWorkerWithSentry').mockResolvedValue(undefined);
|
|
140
|
+
await (0, vitest_1.expect)((0, sdk_setup_1.createSentryInitFile)(testDsn, testFeatures)).resolves.not.toThrow();
|
|
141
|
+
});
|
|
142
|
+
(0, vitest_1.it)('does not call wrapWorkerWithSentry', async () => {
|
|
143
|
+
const wrapWorkerWithSentrySpy = vitest_1.vi
|
|
144
|
+
.spyOn(wrapWorker, 'wrapWorkerWithSentry')
|
|
145
|
+
.mockResolvedValue(undefined);
|
|
146
|
+
await (0, sdk_setup_1.createSentryInitFile)(testDsn, testFeatures);
|
|
147
|
+
(0, vitest_1.expect)(wrapWorkerWithSentrySpy).not.toHaveBeenCalled();
|
|
148
|
+
});
|
|
149
|
+
});
|
|
150
|
+
});
|
|
151
|
+
});
|
|
152
|
+
//# sourceMappingURL=sdk-setup.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sdk-setup.test.js","sourceRoot":"","sources":["../../../test/cloudflare/sdk-setup.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';\nimport * as fs from 'node:fs';\nimport * as path from 'node:path';\nimport * as os from 'node:os';\nimport { createSentryInitFile } from '../../src/cloudflare/sdk-setup';\nimport { defaultEntryPoint } from '../../src/cloudflare/wrangler/get-entry-point-from-wrangler-config';\nimport * as templates from '../../src/cloudflare/templates';\nimport * as wrapWorker from '../../src/cloudflare/wrap-worker';\n\nconst { clackMocks } = vi.hoisted(() => {\n const info = vi.fn();\n const warn = vi.fn();\n const success = vi.fn();\n const step = vi.fn();\n const note = vi.fn();\n\n return {\n clackMocks: {\n info,\n warn,\n success,\n step,\n note,\n },\n };\n});\n\nvi.mock('@clack/prompts', () => ({\n __esModule: true,\n default: {\n log: {\n info: clackMocks.info,\n warn: clackMocks.warn,\n success: clackMocks.success,\n step: clackMocks.step,\n },\n note: clackMocks.note,\n },\n}));\n\nconst { getEntryPointFromWranglerConfigMock } = vi.hoisted(() => ({\n getEntryPointFromWranglerConfigMock: vi.fn(),\n}));\n\nvi.mock(\n '../../src/cloudflare/wrangler/get-entry-point-from-wrangler-config',\n () => ({\n getEntryPointFromWranglerConfig: getEntryPointFromWranglerConfigMock,\n defaultEntryPoint: 'src/index.ts',\n }),\n);\n\ndescribe('createSentryInitFile', () => {\n let tmpDir: string;\n const testDsn = 'https://example@sentry.io/123';\n const testFeatures = {\n performance: true,\n };\n\n beforeEach(() => {\n vi.clearAllMocks();\n\n tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'sdk-setup-test-'));\n\n vi.spyOn(process, 'cwd').mockReturnValue(tmpDir);\n });\n\n afterEach(() => {\n if (fs.existsSync(tmpDir)) {\n fs.rmSync(tmpDir, { recursive: true });\n }\n\n vi.restoreAllMocks();\n });\n\n it('creates a new default entry point file', async () => {\n const template =\n 'export default { async fetch() { return new Response(\"ᕕ(⌐■_■)ᕗ ♪♬\"); } }';\n const getCloudflareWorkerTemplateWithHandlerSpy = vi\n .spyOn(templates, 'getCloudflareWorkerTemplateWithHandler')\n .mockReturnValue(template);\n\n await createSentryInitFile(testDsn, testFeatures);\n\n const expectedPath = path.join(tmpDir, 'src/index.ts');\n const content = fs.readFileSync(expectedPath, 'utf-8');\n\n expect(clackMocks.info).toHaveBeenCalledWith(\n 'No entry point found in wrangler config, creating a new one.',\n );\n expect(fs.existsSync(expectedPath)).toBe(true);\n expect(content).toBe(template);\n expect(clackMocks.success).toHaveBeenCalledWith('Created src/index.ts.');\n expect(getCloudflareWorkerTemplateWithHandlerSpy).toHaveBeenCalled();\n });\n\n describe('when entry point is found in wrangler config', () => {\n describe('and the entry point file exists', () => {\n beforeEach(async () => {\n await createSentryInitFile(testDsn, testFeatures);\n getEntryPointFromWranglerConfigMock.mockReturnValue(defaultEntryPoint);\n });\n\n it('wraps the worker with Sentry when wrapping succeeds', async () => {\n const wrapWorkerWithSentrySpy = vi\n .spyOn(wrapWorker, 'wrapWorkerWithSentry')\n .mockResolvedValue(undefined);\n\n await createSentryInitFile(testDsn, testFeatures);\n\n expect(wrapWorkerWithSentrySpy).toHaveBeenCalledWith(\n path.join(tmpDir, defaultEntryPoint),\n testDsn,\n testFeatures,\n );\n });\n\n it('handles wrapping failure gracefully', async () => {\n vi.spyOn(wrapWorker, 'wrapWorkerWithSentry').mockRejectedValue(\n new Error('Wrapping failed'),\n );\n\n await createSentryInitFile(testDsn, testFeatures);\n\n expect(clackMocks.warn).toHaveBeenCalledWith(\n 'Failed to wrap worker automatically.',\n );\n expect(clackMocks.step).toHaveBeenCalledWith(\n 'Please wrap your handler with Sentry initialization:',\n );\n expect(clackMocks.note).toHaveBeenCalledWith(\n expect.stringContaining('import * as Sentry'),\n );\n });\n\n it('shows template with correct DSN when wrapping fails', async () => {\n vi.spyOn(wrapWorker, 'wrapWorkerWithSentry').mockRejectedValue(\n new Error('Failed'),\n );\n const getCloudflareWorkerTemplateSpy = vi\n .spyOn(templates, 'getCloudflareWorkerTemplate')\n .mockReturnValue('template with dsn');\n\n await createSentryInitFile(testDsn, testFeatures);\n\n expect(getCloudflareWorkerTemplateSpy).toHaveBeenCalledWith(\n testDsn,\n testFeatures,\n );\n expect(clackMocks.note).toHaveBeenCalledWith('template with dsn');\n });\n\n it('passes performance feature flag correctly', async () => {\n const wrapWorkerWithSentrySpy = vi\n .spyOn(wrapWorker, 'wrapWorkerWithSentry')\n .mockResolvedValue(undefined);\n\n await createSentryInitFile(testDsn, { performance: false });\n\n expect(wrapWorkerWithSentrySpy).toHaveBeenCalledWith(\n path.join(tmpDir, defaultEntryPoint),\n testDsn,\n { performance: false },\n );\n });\n });\n\n describe('and the entry point file does not exist', () => {\n it('does not throw an error', async () => {\n vi.spyOn(wrapWorker, 'wrapWorkerWithSentry').mockResolvedValue(\n undefined,\n );\n\n await expect(\n createSentryInitFile(testDsn, testFeatures),\n ).resolves.not.toThrow();\n });\n\n it('does not call wrapWorkerWithSentry', async () => {\n const wrapWorkerWithSentrySpy = vi\n .spyOn(wrapWorker, 'wrapWorkerWithSentry')\n .mockResolvedValue(undefined);\n\n await createSentryInitFile(testDsn, testFeatures);\n\n expect(wrapWorkerWithSentrySpy).not.toHaveBeenCalled();\n });\n });\n });\n});\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const templates_1 = require("../../src/cloudflare/templates");
|
|
5
|
+
(0, vitest_1.describe)('Cloudflare code templates', () => {
|
|
6
|
+
(0, vitest_1.describe)('getCloudflareWorkerTemplate', () => {
|
|
7
|
+
(0, vitest_1.it)('generates worker template with performance monitoring enabled', () => {
|
|
8
|
+
const template = (0, templates_1.getCloudflareWorkerTemplate)('my-dsn', {
|
|
9
|
+
performance: true,
|
|
10
|
+
});
|
|
11
|
+
(0, vitest_1.expect)(template).toMatchInlineSnapshot(`
|
|
12
|
+
"import * as Sentry from '@sentry/cloudflare';
|
|
13
|
+
|
|
14
|
+
export default Sentry.withSentry(
|
|
15
|
+
(env) => ({
|
|
16
|
+
dsn: 'my-dsn',
|
|
17
|
+
// Define how likely traces are sampled. Adjust this value in production, or use tracesSampler for greater control.
|
|
18
|
+
tracesSampleRate: 1,
|
|
19
|
+
}),
|
|
20
|
+
{
|
|
21
|
+
async fetch(request, env, ctx): Promise<Response> {
|
|
22
|
+
// Your worker logic here
|
|
23
|
+
return new Response('Hello World!');
|
|
24
|
+
},
|
|
25
|
+
} satisfies ExportedHandler<Env>,
|
|
26
|
+
);
|
|
27
|
+
"
|
|
28
|
+
`);
|
|
29
|
+
});
|
|
30
|
+
(0, vitest_1.it)('generates worker template with performance monitoring disabled', () => {
|
|
31
|
+
const template = (0, templates_1.getCloudflareWorkerTemplate)('my-dsn', {
|
|
32
|
+
performance: false,
|
|
33
|
+
});
|
|
34
|
+
(0, vitest_1.expect)(template).toMatchInlineSnapshot(`
|
|
35
|
+
"import * as Sentry from '@sentry/cloudflare';
|
|
36
|
+
|
|
37
|
+
export default Sentry.withSentry(
|
|
38
|
+
(env) => ({
|
|
39
|
+
dsn: 'my-dsn',
|
|
40
|
+
}),
|
|
41
|
+
{
|
|
42
|
+
async fetch(request, env, ctx): Promise<Response> {
|
|
43
|
+
// Your worker logic here
|
|
44
|
+
return new Response('Hello World!');
|
|
45
|
+
},
|
|
46
|
+
} satisfies ExportedHandler<Env>,
|
|
47
|
+
);
|
|
48
|
+
"
|
|
49
|
+
`);
|
|
50
|
+
});
|
|
51
|
+
(0, vitest_1.it)('includes the correct DSN', () => {
|
|
52
|
+
const dsn = 'https://example@sentry.io/123';
|
|
53
|
+
const template = (0, templates_1.getCloudflareWorkerTemplate)(dsn, {
|
|
54
|
+
performance: true,
|
|
55
|
+
});
|
|
56
|
+
(0, vitest_1.expect)(template).toContain(`dsn: '${dsn}'`);
|
|
57
|
+
});
|
|
58
|
+
(0, vitest_1.it)('wraps handler with Sentry.withSentry', () => {
|
|
59
|
+
const template = (0, templates_1.getCloudflareWorkerTemplate)('my-dsn', {
|
|
60
|
+
performance: false,
|
|
61
|
+
});
|
|
62
|
+
(0, vitest_1.expect)(template).toContain('Sentry.withSentry');
|
|
63
|
+
(0, vitest_1.expect)(template).toContain('async fetch(request, env, ctx)');
|
|
64
|
+
(0, vitest_1.expect)(template).toContain('satisfies ExportedHandler<Env>');
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
//# sourceMappingURL=templates.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templates.test.js","sourceRoot":"","sources":["../../../test/cloudflare/templates.test.ts"],"names":[],"mappings":";;AAAA,mCAA8C;AAC9C,8DAA6E;AAE7E,IAAA,iBAAQ,EAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,IAAA,iBAAQ,EAAC,6BAA6B,EAAE,GAAG,EAAE;QAC3C,IAAA,WAAE,EAAC,+DAA+D,EAAE,GAAG,EAAE;YACvE,MAAM,QAAQ,GAAG,IAAA,uCAA2B,EAAC,QAAQ,EAAE;gBACrD,WAAW,EAAE,IAAI;aAClB,CAAC,CAAC;YAEH,IAAA,eAAM,EAAC,QAAQ,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;;;;;;;;OAiBtC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,gEAAgE,EAAE,GAAG,EAAE;YACxE,MAAM,QAAQ,GAAG,IAAA,uCAA2B,EAAC,QAAQ,EAAE;gBACrD,WAAW,EAAE,KAAK;aACnB,CAAC,CAAC;YAEH,IAAA,eAAM,EAAC,QAAQ,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;;;;;;OAetC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,0BAA0B,EAAE,GAAG,EAAE;YAClC,MAAM,GAAG,GAAG,+BAA+B,CAAC;YAC5C,MAAM,QAAQ,GAAG,IAAA,uCAA2B,EAAC,GAAG,EAAE;gBAChD,WAAW,EAAE,IAAI;aAClB,CAAC,CAAC;YAEH,IAAA,eAAM,EAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,sCAAsC,EAAE,GAAG,EAAE;YAC9C,MAAM,QAAQ,GAAG,IAAA,uCAA2B,EAAC,QAAQ,EAAE;gBACrD,WAAW,EAAE,KAAK;aACnB,CAAC,CAAC;YAEH,IAAA,eAAM,EAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;YAChD,IAAA,eAAM,EAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,gCAAgC,CAAC,CAAC;YAC7D,IAAA,eAAM,EAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,gCAAgC,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { describe, expect, it } from 'vitest';\nimport { getCloudflareWorkerTemplate } from '../../src/cloudflare/templates';\n\ndescribe('Cloudflare code templates', () => {\n describe('getCloudflareWorkerTemplate', () => {\n it('generates worker template with performance monitoring enabled', () => {\n const template = getCloudflareWorkerTemplate('my-dsn', {\n performance: true,\n });\n\n expect(template).toMatchInlineSnapshot(`\n \"import * as Sentry from '@sentry/cloudflare';\n\n export default Sentry.withSentry(\n \t(env) => ({\n \t\tdsn: 'my-dsn',\n \t\t// Define how likely traces are sampled. Adjust this value in production, or use tracesSampler for greater control.\n \t\ttracesSampleRate: 1,\n \t}),\n \t{\n \t\tasync fetch(request, env, ctx): Promise<Response> {\n \t\t\t// Your worker logic here\n \t\t\treturn new Response('Hello World!');\n \t\t},\n \t} satisfies ExportedHandler<Env>,\n );\n \"\n `);\n });\n\n it('generates worker template with performance monitoring disabled', () => {\n const template = getCloudflareWorkerTemplate('my-dsn', {\n performance: false,\n });\n\n expect(template).toMatchInlineSnapshot(`\n \"import * as Sentry from '@sentry/cloudflare';\n\n export default Sentry.withSentry(\n \t(env) => ({\n \t\tdsn: 'my-dsn',\n \t}),\n \t{\n \t\tasync fetch(request, env, ctx): Promise<Response> {\n \t\t\t// Your worker logic here\n \t\t\treturn new Response('Hello World!');\n \t\t},\n \t} satisfies ExportedHandler<Env>,\n );\n \"\n `);\n });\n\n it('includes the correct DSN', () => {\n const dsn = 'https://example@sentry.io/123';\n const template = getCloudflareWorkerTemplate(dsn, {\n performance: true,\n });\n\n expect(template).toContain(`dsn: '${dsn}'`);\n });\n\n it('wraps handler with Sentry.withSentry', () => {\n const template = getCloudflareWorkerTemplate('my-dsn', {\n performance: false,\n });\n\n expect(template).toContain('Sentry.withSentry');\n expect(template).toContain('async fetch(request, env, ctx)');\n expect(template).toContain('satisfies ExportedHandler<Env>');\n });\n });\n});\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|