@sentry/wizard 3.12.0 → 3.14.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 +19 -0
- package/dist/lib/Steps/ChooseIntegration.js +1 -0
- package/dist/lib/Steps/ChooseIntegration.js.map +1 -1
- package/dist/package.json +2 -2
- package/dist/src/android/android-wizard.js +8 -8
- package/dist/src/android/android-wizard.js.map +1 -1
- package/dist/src/apple/apple-wizard.js +1 -1
- package/dist/src/apple/apple-wizard.js.map +1 -1
- package/dist/src/nextjs/nextjs-wizard.d.ts +1 -0
- package/dist/src/nextjs/nextjs-wizard.js +257 -163
- package/dist/src/nextjs/nextjs-wizard.js.map +1 -1
- package/dist/src/nextjs/templates.d.ts +1 -1
- package/dist/src/nextjs/templates.js +2 -2
- package/dist/src/nextjs/templates.js.map +1 -1
- package/dist/src/nextjs/utils.d.ts +1 -0
- package/dist/src/nextjs/utils.js +25 -0
- package/dist/src/nextjs/utils.js.map +1 -0
- package/dist/src/remix/remix-wizard.js +13 -11
- package/dist/src/remix/remix-wizard.js.map +1 -1
- package/dist/src/remix/sdk-setup.d.ts +5 -1
- package/dist/src/remix/sdk-setup.js +13 -6
- package/dist/src/remix/sdk-setup.js.map +1 -1
- package/dist/src/sourcemaps/sourcemaps-wizard.js +1 -1
- package/dist/src/sourcemaps/sourcemaps-wizard.js.map +1 -1
- package/dist/src/sourcemaps/tools/sentry-cli.d.ts +9 -0
- package/dist/src/sourcemaps/tools/sentry-cli.js +26 -22
- package/dist/src/sourcemaps/tools/sentry-cli.js.map +1 -1
- package/dist/src/sourcemaps/tools/tsc.d.ts +6 -0
- package/dist/src/sourcemaps/tools/tsc.js +98 -17
- package/dist/src/sourcemaps/tools/tsc.js.map +1 -1
- package/dist/src/sourcemaps/tools/vite.js +3 -13
- package/dist/src/sourcemaps/tools/vite.js.map +1 -1
- package/dist/src/sourcemaps/tools/webpack.js +3 -13
- package/dist/src/sourcemaps/tools/webpack.js.map +1 -1
- package/dist/src/sveltekit/sdk-setup.js +122 -48
- package/dist/src/sveltekit/sdk-setup.js.map +1 -1
- package/dist/src/sveltekit/sveltekit-wizard.d.ts +1 -0
- package/dist/src/sveltekit/sveltekit-wizard.js +113 -42
- package/dist/src/sveltekit/sveltekit-wizard.js.map +1 -1
- package/dist/src/sveltekit/utils.d.ts +2 -0
- package/dist/src/sveltekit/utils.js +48 -0
- package/dist/src/sveltekit/utils.js.map +1 -0
- package/dist/src/telemetry.d.ts +1 -0
- package/dist/src/telemetry.js +27 -12
- package/dist/src/telemetry.js.map +1 -1
- package/dist/src/utils/ast-utils.d.ts +70 -0
- package/dist/src/utils/ast-utils.js +152 -1
- package/dist/src/utils/ast-utils.js.map +1 -1
- package/dist/src/utils/clack-utils.d.ts +49 -7
- package/dist/src/utils/clack-utils.js +238 -168
- package/dist/src/utils/clack-utils.js.map +1 -1
- package/dist/src/utils/package-manager.d.ts +5 -0
- package/dist/src/utils/package-manager.js +23 -14
- package/dist/src/utils/package-manager.js.map +1 -1
- package/dist/test/sourcemaps/tools/sentry-cli.test.d.ts +1 -0
- package/dist/test/sourcemaps/tools/sentry-cli.test.js +112 -0
- package/dist/test/sourcemaps/tools/sentry-cli.test.js.map +1 -0
- package/dist/test/sourcemaps/tools/tsc.test.d.ts +1 -0
- package/dist/test/sourcemaps/tools/tsc.test.js +121 -0
- package/dist/test/sourcemaps/tools/tsc.test.js.map +1 -0
- package/dist/test/utils/ast-utils.test.js +157 -26
- package/dist/test/utils/ast-utils.test.js.map +1 -1
- package/lib/Steps/ChooseIntegration.ts +1 -0
- package/package.json +2 -2
- package/src/android/android-wizard.ts +12 -10
- package/src/apple/apple-wizard.ts +2 -2
- package/src/nextjs/nextjs-wizard.ts +277 -198
- package/src/nextjs/templates.ts +3 -2
- package/src/nextjs/utils.ts +21 -0
- package/src/remix/remix-wizard.ts +15 -20
- package/src/remix/sdk-setup.ts +20 -5
- package/src/sourcemaps/sourcemaps-wizard.ts +2 -2
- package/src/sourcemaps/tools/sentry-cli.ts +16 -9
- package/src/sourcemaps/tools/tsc.ts +133 -28
- package/src/sourcemaps/tools/vite.ts +15 -39
- package/src/sourcemaps/tools/webpack.ts +16 -39
- package/src/sveltekit/sdk-setup.ts +109 -37
- package/src/sveltekit/sveltekit-wizard.ts +86 -21
- package/src/sveltekit/utils.ts +50 -0
- package/src/telemetry.ts +22 -11
- package/src/utils/ast-utils.ts +180 -0
- package/src/utils/clack-utils.ts +238 -149
- package/src/utils/package-manager.ts +24 -12
- package/test/sourcemaps/tools/sentry-cli.test.ts +51 -0
- package/test/sourcemaps/tools/tsc.test.ts +181 -0
- package/test/utils/ast-utils.test.ts +233 -32
|
@@ -1,4 +1,27 @@
|
|
|
1
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
|
+
};
|
|
2
25
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
26
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
27
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -39,25 +62,40 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
39
62
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
40
63
|
};
|
|
41
64
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
-
exports.runSvelteKitWizard = void 0;
|
|
65
|
+
exports.runSvelteKitWizardWithTelemetry = exports.runSvelteKitWizard = void 0;
|
|
43
66
|
// @ts-ignore - clack is ESM and TS complains about that. It works though
|
|
44
|
-
var
|
|
67
|
+
var clack = __importStar(require("@clack/prompts"));
|
|
45
68
|
var chalk_1 = __importDefault(require("chalk"));
|
|
69
|
+
var Sentry = __importStar(require("@sentry/node"));
|
|
46
70
|
var clack_utils_1 = require("../utils/clack-utils");
|
|
47
71
|
var package_json_1 = require("../utils/package-json");
|
|
48
72
|
var sdk_example_1 = require("./sdk-example");
|
|
49
73
|
var sdk_setup_1 = require("./sdk-setup");
|
|
74
|
+
var telemetry_1 = require("../telemetry");
|
|
75
|
+
var utils_1 = require("./utils");
|
|
50
76
|
function runSvelteKitWizard(options) {
|
|
51
77
|
return __awaiter(this, void 0, void 0, function () {
|
|
52
|
-
|
|
78
|
+
return __generator(this, function (_a) {
|
|
79
|
+
return [2 /*return*/, (0, telemetry_1.withTelemetry)({
|
|
80
|
+
enabled: options.telemetryEnabled,
|
|
81
|
+
integration: 'sveltekit',
|
|
82
|
+
}, function () { return runSvelteKitWizardWithTelemetry(options); })];
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
exports.runSvelteKitWizard = runSvelteKitWizard;
|
|
87
|
+
function runSvelteKitWizardWithTelemetry(options) {
|
|
88
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
89
|
+
var packageJson, kitVersion, kitVersionBucket, shouldContinue, _a, selectedProject, selfHosted, sentryUrl, authToken, sdkAlreadyInstalled, svelteConfig, e_1, e_2;
|
|
53
90
|
return __generator(this, function (_b) {
|
|
54
91
|
switch (_b.label) {
|
|
55
92
|
case 0:
|
|
56
93
|
(0, clack_utils_1.printWelcome)({
|
|
57
94
|
wizardName: 'Sentry SvelteKit Wizard',
|
|
58
95
|
promoCode: options.promoCode,
|
|
96
|
+
telemetryEnabled: options.telemetryEnabled,
|
|
59
97
|
});
|
|
60
|
-
return [4 /*yield*/, (0, clack_utils_1.
|
|
98
|
+
return [4 /*yield*/, (0, clack_utils_1.confirmContinueIfNoOrDirtyGitRepo)()];
|
|
61
99
|
case 1:
|
|
62
100
|
_b.sent();
|
|
63
101
|
return [4 /*yield*/, (0, clack_utils_1.getPackageDotJson)()];
|
|
@@ -66,75 +104,108 @@ function runSvelteKitWizard(options) {
|
|
|
66
104
|
return [4 /*yield*/, (0, clack_utils_1.ensurePackageIsInstalled)(packageJson, '@sveltejs/kit', 'Sveltekit')];
|
|
67
105
|
case 3:
|
|
68
106
|
_b.sent();
|
|
69
|
-
|
|
107
|
+
kitVersion = (0, package_json_1.getPackageVersion)('@sveltejs/kit', packageJson);
|
|
108
|
+
kitVersionBucket = (0, utils_1.getKitVersionBucket)(kitVersion);
|
|
109
|
+
Sentry.setTag('sveltekit-version', kitVersionBucket);
|
|
110
|
+
if (!(kitVersionBucket === '0.x')) return [3 /*break*/, 6];
|
|
111
|
+
clack.log.warn("It seems you're using a SvelteKit version <1.0.0 which is not supported by Sentry.\nWe recommend upgrading to the latest 1.x version before you continue.");
|
|
112
|
+
return [4 /*yield*/, (0, clack_utils_1.abortIfCancelled)(clack.select({
|
|
113
|
+
message: 'Do you want to continue anyway?',
|
|
114
|
+
options: [
|
|
115
|
+
{
|
|
116
|
+
label: 'Yes, continue',
|
|
117
|
+
hint: 'The SDK might not work correctly',
|
|
118
|
+
value: true,
|
|
119
|
+
},
|
|
120
|
+
{ label: "No, I'll upgrade first", value: false },
|
|
121
|
+
],
|
|
122
|
+
}))];
|
|
70
123
|
case 4:
|
|
124
|
+
shouldContinue = _b.sent();
|
|
125
|
+
if (!!shouldContinue) return [3 /*break*/, 6];
|
|
126
|
+
return [4 /*yield*/, (0, clack_utils_1.abort)('Exiting Wizard', 0)];
|
|
127
|
+
case 5:
|
|
128
|
+
_b.sent();
|
|
129
|
+
return [2 /*return*/];
|
|
130
|
+
case 6:
|
|
131
|
+
Sentry.setTag('svelte-version', (0, utils_1.getSvelteVersionBucket)((0, package_json_1.getPackageVersion)('svelte', packageJson)));
|
|
132
|
+
return [4 /*yield*/, (0, clack_utils_1.getOrAskForProjectData)(options, 'javascript-sveltekit')];
|
|
133
|
+
case 7:
|
|
71
134
|
_a = _b.sent(), selectedProject = _a.selectedProject, selfHosted = _a.selfHosted, sentryUrl = _a.sentryUrl, authToken = _a.authToken;
|
|
135
|
+
sdkAlreadyInstalled = (0, package_json_1.hasPackageInstalled)('@sentry/sveltekit', packageJson);
|
|
136
|
+
Sentry.setTag('sdk-already-installed', sdkAlreadyInstalled);
|
|
72
137
|
return [4 /*yield*/, (0, clack_utils_1.installPackage)({
|
|
73
138
|
packageName: '@sentry/sveltekit',
|
|
74
|
-
alreadyInstalled:
|
|
139
|
+
alreadyInstalled: sdkAlreadyInstalled,
|
|
75
140
|
})];
|
|
76
|
-
case
|
|
141
|
+
case 8:
|
|
77
142
|
_b.sent();
|
|
78
143
|
return [4 /*yield*/, (0, clack_utils_1.addSentryCliConfig)(authToken)];
|
|
79
|
-
case 6:
|
|
80
|
-
_b.sent();
|
|
81
|
-
return [4 /*yield*/, (0, sdk_setup_1.loadSvelteConfig)()];
|
|
82
|
-
case 7:
|
|
83
|
-
svelteConfig = _b.sent();
|
|
84
|
-
_b.label = 8;
|
|
85
|
-
case 8:
|
|
86
|
-
_b.trys.push([8, 10, , 12]);
|
|
87
|
-
return [4 /*yield*/, (0, sdk_setup_1.createOrMergeSvelteKitFiles)({
|
|
88
|
-
dsn: selectedProject.keys[0].dsn.public,
|
|
89
|
-
org: selectedProject.organization.slug,
|
|
90
|
-
project: selectedProject.slug,
|
|
91
|
-
selfHosted: selfHosted,
|
|
92
|
-
url: sentryUrl,
|
|
93
|
-
}, svelteConfig)];
|
|
94
144
|
case 9:
|
|
95
145
|
_b.sent();
|
|
96
|
-
return [
|
|
146
|
+
return [4 /*yield*/, (0, telemetry_1.traceStep)('load-svelte-config', sdk_setup_1.loadSvelteConfig)];
|
|
97
147
|
case 10:
|
|
148
|
+
svelteConfig = _b.sent();
|
|
149
|
+
_b.label = 11;
|
|
150
|
+
case 11:
|
|
151
|
+
_b.trys.push([11, 13, , 15]);
|
|
152
|
+
return [4 /*yield*/, (0, telemetry_1.traceStep)('configure-sdk', function () {
|
|
153
|
+
return (0, sdk_setup_1.createOrMergeSvelteKitFiles)({
|
|
154
|
+
dsn: selectedProject.keys[0].dsn.public,
|
|
155
|
+
org: selectedProject.organization.slug,
|
|
156
|
+
project: selectedProject.slug,
|
|
157
|
+
selfHosted: selfHosted,
|
|
158
|
+
url: sentryUrl,
|
|
159
|
+
}, svelteConfig);
|
|
160
|
+
})];
|
|
161
|
+
case 12:
|
|
162
|
+
_b.sent();
|
|
163
|
+
return [3 /*break*/, 15];
|
|
164
|
+
case 13:
|
|
98
165
|
e_1 = _b.sent();
|
|
99
|
-
|
|
100
|
-
|
|
166
|
+
clack.log.error('Error while setting up the SvelteKit SDK:');
|
|
167
|
+
clack.log.info(chalk_1.default.dim(typeof e_1 === 'object' && e_1 != null && 'toString' in e_1
|
|
101
168
|
? e_1.toString()
|
|
102
169
|
: typeof e_1 === 'string'
|
|
103
170
|
? e_1
|
|
104
171
|
: 'Unknown error'));
|
|
172
|
+
Sentry.captureException('Error while setting up the SvelteKit SDK');
|
|
105
173
|
return [4 /*yield*/, (0, clack_utils_1.abort)('Exiting Wizard')];
|
|
106
|
-
case
|
|
174
|
+
case 14:
|
|
107
175
|
_b.sent();
|
|
108
176
|
return [2 /*return*/];
|
|
109
|
-
case
|
|
110
|
-
_b.trys.push([
|
|
111
|
-
return [4 /*yield*/, (0,
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
177
|
+
case 15:
|
|
178
|
+
_b.trys.push([15, 17, , 19]);
|
|
179
|
+
return [4 /*yield*/, (0, telemetry_1.traceStep)('create-example-page', function () {
|
|
180
|
+
return (0, sdk_example_1.createExamplePage)(svelteConfig, {
|
|
181
|
+
selfHosted: selfHosted,
|
|
182
|
+
url: sentryUrl,
|
|
183
|
+
orgSlug: selectedProject.organization.slug,
|
|
184
|
+
projectId: selectedProject.id,
|
|
185
|
+
});
|
|
116
186
|
})];
|
|
117
|
-
case
|
|
187
|
+
case 16:
|
|
118
188
|
_b.sent();
|
|
119
|
-
return [3 /*break*/,
|
|
120
|
-
case
|
|
189
|
+
return [3 /*break*/, 19];
|
|
190
|
+
case 17:
|
|
121
191
|
e_2 = _b.sent();
|
|
122
|
-
|
|
123
|
-
|
|
192
|
+
clack.log.error('Error while creating an example page to test Sentry:');
|
|
193
|
+
clack.log.info(chalk_1.default.dim(typeof e_2 === 'object' && e_2 != null && 'toString' in e_2
|
|
124
194
|
? e_2.toString()
|
|
125
195
|
: typeof e_2 === 'string'
|
|
126
196
|
? e_2
|
|
127
197
|
: 'Unknown error'));
|
|
198
|
+
Sentry.captureException('Error while creating an example Svelte page to test Sentry');
|
|
128
199
|
return [4 /*yield*/, (0, clack_utils_1.abort)('Exiting Wizard')];
|
|
129
|
-
case
|
|
200
|
+
case 18:
|
|
130
201
|
_b.sent();
|
|
131
202
|
return [2 /*return*/];
|
|
132
|
-
case
|
|
133
|
-
|
|
203
|
+
case 19:
|
|
204
|
+
clack.outro("\n".concat(chalk_1.default.green('Successfully installed the Sentry SvelteKit SDK!'), "\n\n").concat(chalk_1.default.cyan('You can validate your setup by starting your dev environment (`npm run dev`) and visiting "/sentry-example".'), "\n\nCheck out the SDK documentation for further configuration:\nhttps://docs.sentry.io/platforms/javascript/guides/sveltekit/\n "));
|
|
134
205
|
return [2 /*return*/];
|
|
135
206
|
}
|
|
136
207
|
});
|
|
137
208
|
});
|
|
138
209
|
}
|
|
139
|
-
exports.
|
|
210
|
+
exports.runSvelteKitWizardWithTelemetry = runSvelteKitWizardWithTelemetry;
|
|
140
211
|
//# sourceMappingURL=sveltekit-wizard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sveltekit-wizard.js","sourceRoot":"","sources":["../../../src/sveltekit/sveltekit-wizard.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sveltekit-wizard.js","sourceRoot":"","sources":["../../../src/sveltekit/sveltekit-wizard.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-ignore - clack is ESM and TS complains about that. It works though\nimport * as clack from '@clack/prompts';\nimport chalk from 'chalk';\n\nimport * as Sentry from '@sentry/node';\n\nimport {\n abort,\n abortIfCancelled,\n addSentryCliConfig,\n confirmContinueIfNoOrDirtyGitRepo,\n ensurePackageIsInstalled,\n getOrAskForProjectData,\n getPackageDotJson,\n installPackage,\n printWelcome,\n} from '../utils/clack-utils';\nimport { getPackageVersion, hasPackageInstalled } from '../utils/package-json';\nimport { WizardOptions } from '../utils/types';\nimport { createExamplePage } from './sdk-example';\nimport { createOrMergeSvelteKitFiles, loadSvelteConfig } from './sdk-setup';\nimport { traceStep, withTelemetry } from '../telemetry';\nimport { getKitVersionBucket, getSvelteVersionBucket } from './utils';\n\nexport async function runSvelteKitWizard(\n options: WizardOptions,\n): Promise<void> {\n return withTelemetry(\n {\n enabled: options.telemetryEnabled,\n integration: 'sveltekit',\n },\n () => runSvelteKitWizardWithTelemetry(options),\n );\n}\n\nexport async function runSvelteKitWizardWithTelemetry(\n options: WizardOptions,\n): Promise<void> {\n printWelcome({\n wizardName: 'Sentry SvelteKit Wizard',\n promoCode: options.promoCode,\n telemetryEnabled: options.telemetryEnabled,\n });\n\n await confirmContinueIfNoOrDirtyGitRepo();\n\n const packageJson = await getPackageDotJson();\n\n await ensurePackageIsInstalled(packageJson, '@sveltejs/kit', 'Sveltekit');\n\n const kitVersion = getPackageVersion('@sveltejs/kit', packageJson);\n const kitVersionBucket = getKitVersionBucket(kitVersion);\n Sentry.setTag('sveltekit-version', kitVersionBucket);\n\n if (kitVersionBucket === '0.x') {\n clack.log.warn(\n \"It seems you're using a SvelteKit version <1.0.0 which is not supported by Sentry.\\nWe recommend upgrading to the latest 1.x version before you continue.\",\n );\n const shouldContinue = await abortIfCancelled(\n clack.select({\n message: 'Do you want to continue anyway?',\n options: [\n {\n label: 'Yes, continue',\n hint: 'The SDK might not work correctly',\n value: true,\n },\n { label: \"No, I'll upgrade first\", value: false },\n ],\n }),\n );\n if (!shouldContinue) {\n await abort('Exiting Wizard', 0);\n return;\n }\n }\n\n Sentry.setTag(\n 'svelte-version',\n getSvelteVersionBucket(getPackageVersion('svelte', packageJson)),\n );\n\n const { selectedProject, selfHosted, sentryUrl, authToken } =\n await getOrAskForProjectData(options, 'javascript-sveltekit');\n\n const sdkAlreadyInstalled = hasPackageInstalled(\n '@sentry/sveltekit',\n packageJson,\n );\n Sentry.setTag('sdk-already-installed', sdkAlreadyInstalled);\n\n await installPackage({\n packageName: '@sentry/sveltekit',\n alreadyInstalled: sdkAlreadyInstalled,\n });\n\n await addSentryCliConfig(authToken);\n\n const svelteConfig = await traceStep('load-svelte-config', loadSvelteConfig);\n\n try {\n await traceStep('configure-sdk', () =>\n createOrMergeSvelteKitFiles(\n {\n dsn: selectedProject.keys[0].dsn.public,\n org: selectedProject.organization.slug,\n project: selectedProject.slug,\n selfHosted,\n url: sentryUrl,\n },\n svelteConfig,\n ),\n );\n } catch (e: unknown) {\n clack.log.error('Error while setting up the SvelteKit SDK:');\n clack.log.info(\n chalk.dim(\n typeof e === 'object' && e != null && 'toString' in e\n ? e.toString()\n : typeof e === 'string'\n ? e\n : 'Unknown error',\n ),\n );\n Sentry.captureException('Error while setting up the SvelteKit SDK');\n await abort('Exiting Wizard');\n return;\n }\n\n try {\n await traceStep('create-example-page', () =>\n createExamplePage(svelteConfig, {\n selfHosted,\n url: sentryUrl,\n orgSlug: selectedProject.organization.slug,\n projectId: selectedProject.id,\n }),\n );\n } catch (e: unknown) {\n clack.log.error('Error while creating an example page to test Sentry:');\n clack.log.info(\n chalk.dim(\n typeof e === 'object' && e != null && 'toString' in e\n ? e.toString()\n : typeof e === 'string'\n ? e\n : 'Unknown error',\n ),\n );\n Sentry.captureException(\n 'Error while creating an example Svelte page to test Sentry',\n );\n await abort('Exiting Wizard');\n return;\n }\n\n clack.outro(`\n${chalk.green('Successfully installed the Sentry SvelteKit SDK!')}\n\n${chalk.cyan(\n 'You can validate your setup by starting your dev environment (`npm run dev`) and visiting \"/sentry-example\".',\n)}\n\nCheck out the SDK documentation for further configuration:\nhttps://docs.sentry.io/platforms/javascript/guides/sveltekit/\n `);\n}\n"]}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getSvelteVersionBucket = exports.getKitVersionBucket = void 0;
|
|
4
|
+
var semver_1 = require("semver");
|
|
5
|
+
function getKitVersionBucket(version) {
|
|
6
|
+
if (!version) {
|
|
7
|
+
return 'none';
|
|
8
|
+
}
|
|
9
|
+
var minVer = (0, semver_1.minVersion)(version);
|
|
10
|
+
if (!minVer) {
|
|
11
|
+
return 'invalid';
|
|
12
|
+
}
|
|
13
|
+
if ((0, semver_1.lt)(minVer, '1.0.0')) {
|
|
14
|
+
return '0.x';
|
|
15
|
+
}
|
|
16
|
+
else if ((0, semver_1.lt)(minVer, '1.24.0')) {
|
|
17
|
+
return '>=1.0.0 <1.24.0';
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
// This is the version when the client-side invalidation fix was released
|
|
21
|
+
// https://github.com/sveltejs/kit/releases/tag/%40sveltejs%2Fkit%401.24.0
|
|
22
|
+
// https://github.com/sveltejs/kit/pull/10576
|
|
23
|
+
return '>=1.24.0';
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
exports.getKitVersionBucket = getKitVersionBucket;
|
|
27
|
+
function getSvelteVersionBucket(version) {
|
|
28
|
+
if (!version) {
|
|
29
|
+
return 'none';
|
|
30
|
+
}
|
|
31
|
+
var minVer = (0, semver_1.minVersion)(version);
|
|
32
|
+
if (!minVer) {
|
|
33
|
+
return 'invalid';
|
|
34
|
+
}
|
|
35
|
+
if ((0, semver_1.lt)(minVer, '3.0.0')) {
|
|
36
|
+
return '<3.0.0';
|
|
37
|
+
}
|
|
38
|
+
if ((0, semver_1.lt)(minVer, '4.0.0')) {
|
|
39
|
+
return '3.x';
|
|
40
|
+
}
|
|
41
|
+
if ((0, semver_1.lt)(minVer, '5.0.0')) {
|
|
42
|
+
return '4.x';
|
|
43
|
+
}
|
|
44
|
+
// Svelte 5 isn't released yet but it's being worked on
|
|
45
|
+
return '>4.x';
|
|
46
|
+
}
|
|
47
|
+
exports.getSvelteVersionBucket = getSvelteVersionBucket;
|
|
48
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/sveltekit/utils.ts"],"names":[],"mappings":";;;AAAA,iCAAwC;AAExC,SAAgB,mBAAmB,CACjC,OAA2B;IAE3B,IAAI,CAAC,OAAO,EAAE;QACZ,OAAO,MAAM,CAAC;KACf;IAED,IAAM,MAAM,GAAG,IAAA,mBAAU,EAAC,OAAO,CAAC,CAAC;IACnC,IAAI,CAAC,MAAM,EAAE;QACX,OAAO,SAAS,CAAC;KAClB;IAED,IAAI,IAAA,WAAE,EAAC,MAAM,EAAE,OAAO,CAAC,EAAE;QACvB,OAAO,KAAK,CAAC;KACd;SAAM,IAAI,IAAA,WAAE,EAAC,MAAM,EAAE,QAAQ,CAAC,EAAE;QAC/B,OAAO,iBAAiB,CAAC;KAC1B;SAAM;QACL,yEAAyE;QACzE,0EAA0E;QAC1E,6CAA6C;QAC7C,OAAO,UAAU,CAAC;KACnB;AACH,CAAC;AAtBD,kDAsBC;AAED,SAAgB,sBAAsB,CACpC,OAA2B;IAE3B,IAAI,CAAC,OAAO,EAAE;QACZ,OAAO,MAAM,CAAC;KACf;IAED,IAAM,MAAM,GAAG,IAAA,mBAAU,EAAC,OAAO,CAAC,CAAC;IACnC,IAAI,CAAC,MAAM,EAAE;QACX,OAAO,SAAS,CAAC;KAClB;IAED,IAAI,IAAA,WAAE,EAAC,MAAM,EAAE,OAAO,CAAC,EAAE;QACvB,OAAO,QAAQ,CAAC;KACjB;IACD,IAAI,IAAA,WAAE,EAAC,MAAM,EAAE,OAAO,CAAC,EAAE;QACvB,OAAO,KAAK,CAAC;KACd;IACD,IAAI,IAAA,WAAE,EAAC,MAAM,EAAE,OAAO,CAAC,EAAE;QACvB,OAAO,KAAK,CAAC;KACd;IACD,uDAAuD;IACvD,OAAO,MAAM,CAAC;AAChB,CAAC;AAvBD,wDAuBC","sourcesContent":["import { lt, minVersion } from 'semver';\n\nexport function getKitVersionBucket(\n version: string | undefined,\n): 'none' | 'invalid' | '0.x' | '>=1.0.0 <1.24.0' | '>=1.24.0' {\n if (!version) {\n return 'none';\n }\n\n const minVer = minVersion(version);\n if (!minVer) {\n return 'invalid';\n }\n\n if (lt(minVer, '1.0.0')) {\n return '0.x';\n } else if (lt(minVer, '1.24.0')) {\n return '>=1.0.0 <1.24.0';\n } else {\n // This is the version when the client-side invalidation fix was released\n // https://github.com/sveltejs/kit/releases/tag/%40sveltejs%2Fkit%401.24.0\n // https://github.com/sveltejs/kit/pull/10576\n return '>=1.24.0';\n }\n}\n\nexport function getSvelteVersionBucket(\n version: string | undefined,\n): 'none' | 'invalid' | '<3.0.0' | '3.x' | '4.x' | '>4.x' {\n if (!version) {\n return 'none';\n }\n\n const minVer = minVersion(version);\n if (!minVer) {\n return 'invalid';\n }\n\n if (lt(minVer, '3.0.0')) {\n return '<3.0.0';\n }\n if (lt(minVer, '4.0.0')) {\n return '3.x';\n }\n if (lt(minVer, '5.0.0')) {\n return '4.x';\n }\n // Svelte 5 isn't released yet but it's being worked on\n return '>4.x';\n}\n"]}
|
package/dist/src/telemetry.d.ts
CHANGED
package/dist/src/telemetry.js
CHANGED
|
@@ -39,38 +39,48 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
39
39
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
40
40
|
};
|
|
41
41
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
-
exports.traceStep = exports.withTelemetry = void 0;
|
|
42
|
+
exports.updateProgress = exports.traceStep = exports.withTelemetry = void 0;
|
|
43
43
|
var node_1 = require("@sentry/node");
|
|
44
44
|
var package_json_1 = __importDefault(require("../package.json"));
|
|
45
45
|
function withTelemetry(options, callback) {
|
|
46
46
|
return __awaiter(this, void 0, void 0, function () {
|
|
47
|
-
var _a, sentryHub, sentryClient,
|
|
47
|
+
var _a, sentryHub, sentryClient, sentrySession, e_1;
|
|
48
|
+
var _this = this;
|
|
48
49
|
return __generator(this, function (_b) {
|
|
49
50
|
switch (_b.label) {
|
|
50
51
|
case 0:
|
|
51
52
|
_a = createSentryInstance(options.enabled, options.integration), sentryHub = _a.sentryHub, sentryClient = _a.sentryClient;
|
|
52
53
|
(0, node_1.makeMain)(sentryHub);
|
|
53
|
-
transaction = sentryHub.startTransaction({
|
|
54
|
-
name: 'sentry-wizard-execution',
|
|
55
|
-
status: 'ok',
|
|
56
|
-
op: 'wizard.flow',
|
|
57
|
-
});
|
|
58
|
-
sentryHub.getScope().setSpan(transaction);
|
|
59
54
|
sentrySession = sentryHub.startSession();
|
|
60
55
|
sentryHub.captureSession();
|
|
61
56
|
_b.label = 1;
|
|
62
57
|
case 1:
|
|
63
58
|
_b.trys.push([1, 3, 4, 6]);
|
|
64
|
-
return [4 /*yield*/, (0, node_1.
|
|
59
|
+
return [4 /*yield*/, (0, node_1.startSpan)({
|
|
60
|
+
name: 'sentry-wizard-execution',
|
|
61
|
+
status: 'ok',
|
|
62
|
+
op: 'wizard.flow',
|
|
63
|
+
}, function () { return __awaiter(_this, void 0, void 0, function () {
|
|
64
|
+
var res;
|
|
65
|
+
return __generator(this, function (_a) {
|
|
66
|
+
switch (_a.label) {
|
|
67
|
+
case 0:
|
|
68
|
+
updateProgress('start');
|
|
69
|
+
return [4 /*yield*/, (0, node_1.runWithAsyncContext)(callback)];
|
|
70
|
+
case 1:
|
|
71
|
+
res = _a.sent();
|
|
72
|
+
updateProgress('finished');
|
|
73
|
+
return [2 /*return*/, res];
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
}); })];
|
|
65
77
|
case 2: return [2 /*return*/, _b.sent()];
|
|
66
78
|
case 3:
|
|
67
79
|
e_1 = _b.sent();
|
|
68
80
|
sentryHub.captureException('Error during wizard execution.');
|
|
69
|
-
transaction.setStatus('internal_error');
|
|
70
81
|
sentrySession.status = 'crashed';
|
|
71
82
|
throw e_1;
|
|
72
83
|
case 4:
|
|
73
|
-
transaction.finish();
|
|
74
84
|
sentryHub.endSession();
|
|
75
85
|
return [4 /*yield*/, sentryClient.flush(3000)];
|
|
76
86
|
case 5:
|
|
@@ -115,7 +125,12 @@ function createSentryInstance(enabled, integration) {
|
|
|
115
125
|
return { sentryHub: hub, sentryClient: client };
|
|
116
126
|
}
|
|
117
127
|
function traceStep(step, callback) {
|
|
118
|
-
|
|
128
|
+
updateProgress(step);
|
|
129
|
+
return (0, node_1.startSpan)({ name: step, op: 'wizard.step' }, function () { return callback(); });
|
|
119
130
|
}
|
|
120
131
|
exports.traceStep = traceStep;
|
|
132
|
+
function updateProgress(step) {
|
|
133
|
+
(0, node_1.setTag)('progress', step);
|
|
134
|
+
}
|
|
135
|
+
exports.updateProgress = updateProgress;
|
|
121
136
|
//# sourceMappingURL=telemetry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/telemetry.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/telemetry.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n defaultStackParser,\n Hub,\n Integrations,\n makeMain,\n makeNodeTransport,\n NodeClient,\n runWithAsyncContext,\n setTag,\n startSpan,\n} from '@sentry/node';\nimport packageJson from '../package.json';\n\nexport async function withTelemetry<F>(\n options: {\n enabled: boolean;\n integration: string;\n },\n callback: () => F | Promise<F>,\n): Promise<F> {\n const { sentryHub, sentryClient } = createSentryInstance(\n options.enabled,\n options.integration,\n );\n\n makeMain(sentryHub);\n\n const sentrySession = sentryHub.startSession();\n sentryHub.captureSession();\n\n try {\n return await startSpan(\n {\n name: 'sentry-wizard-execution',\n status: 'ok',\n op: 'wizard.flow',\n },\n async () => {\n updateProgress('start');\n const res = await runWithAsyncContext(callback);\n updateProgress('finished');\n\n return res;\n },\n );\n } catch (e) {\n sentryHub.captureException('Error during wizard execution.');\n sentrySession.status = 'crashed';\n throw e;\n } finally {\n sentryHub.endSession();\n await sentryClient.flush(3000);\n }\n}\n\nfunction createSentryInstance(enabled: boolean, integration: string) {\n const client = new NodeClient({\n dsn: 'https://8871d3ff64814ed8960c96d1fcc98a27@o1.ingest.sentry.io/4505425820712960',\n enabled: enabled,\n\n environment: `production-${integration}`,\n\n tracesSampleRate: 1,\n sampleRate: 1,\n\n release: packageJson.version,\n integrations: [new Integrations.Http()],\n tracePropagationTargets: [/^https:\\/\\/sentry.io\\//],\n\n stackParser: defaultStackParser,\n\n beforeSendTransaction: (event) => {\n delete event.server_name; // Server name might contain PII\n return event;\n },\n\n beforeSend: (event) => {\n event.exception?.values?.forEach((exception) => {\n delete exception.stacktrace;\n });\n\n delete event.server_name; // Server name might contain PII\n return event;\n },\n\n transport: makeNodeTransport,\n\n debug: true,\n });\n\n const hub = new Hub(client);\n\n hub.setTag('integration', integration);\n hub.setTag('node', process.version);\n hub.setTag('platform', process.platform);\n\n return { sentryHub: hub, sentryClient: client };\n}\n\nexport function traceStep<T>(step: string, callback: () => T): T {\n updateProgress(step);\n return startSpan({ name: step, op: 'wizard.step' }, () => callback());\n}\n\nexport function updateProgress(step: string) {\n setTag('progress', step);\n}\n"]}
|
|
@@ -10,3 +10,73 @@ export declare function findFile(filePath: string, fileTypes?: string[]): string
|
|
|
10
10
|
* checks for require('@sentry/*') syntax
|
|
11
11
|
*/
|
|
12
12
|
export declare function hasSentryContent(program: t.Program): boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Searches for a property of an ObjectExpression by name
|
|
15
|
+
*
|
|
16
|
+
* @param object the ObjectExpression to search in
|
|
17
|
+
* @param name the name of the property to search for
|
|
18
|
+
*
|
|
19
|
+
* @returns the property if it exists
|
|
20
|
+
*/
|
|
21
|
+
export declare function getObjectProperty(object: t.ObjectExpression, name: string): t.Property | undefined;
|
|
22
|
+
/**
|
|
23
|
+
* Attempts to find a property of an ObjectExpression by name. If it doesn't exist,
|
|
24
|
+
* the property will be added to the ObjectExpression with the provided default value.
|
|
25
|
+
*
|
|
26
|
+
* @param object the parent object expression to search in
|
|
27
|
+
* @param name the name of the property to search for
|
|
28
|
+
* @param defaultValue the default value to set if the property doesn't exist
|
|
29
|
+
*
|
|
30
|
+
* @returns the
|
|
31
|
+
*/
|
|
32
|
+
export declare function getOrSetObjectProperty(object: t.ObjectExpression, name: string, defaultValue: t.Literal | t.BooleanLiteral | t.StringLiteral | t.ObjectExpression): t.Property;
|
|
33
|
+
/**
|
|
34
|
+
* Sets a property of an ObjectExpression if it exists, otherwise adds it
|
|
35
|
+
* to the ObjectExpression. Optionally, a comment can be added to the
|
|
36
|
+
* property.
|
|
37
|
+
*
|
|
38
|
+
* @param object the ObjectExpression to set the property on
|
|
39
|
+
* @param name the name of the property to set
|
|
40
|
+
* @param value the value of the property to set
|
|
41
|
+
* @param comment (optional) a comment to add to the property
|
|
42
|
+
*/
|
|
43
|
+
export declare function setOrUpdateObjectProperty(object: t.ObjectExpression, name: string, value: t.Literal | t.BooleanLiteral | t.StringLiteral | t.ObjectExpression, comment?: string): void;
|
|
44
|
+
type JsonCParseResult = {
|
|
45
|
+
jsonObject: t.ObjectExpression;
|
|
46
|
+
ast: t.Program;
|
|
47
|
+
} | {
|
|
48
|
+
jsonObject: undefined;
|
|
49
|
+
ast: undefined;
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* Parses a JSON string with (potential) comments (JSON-C) and returns the JS AST
|
|
53
|
+
* that can be walked and modified with recast like a normal JS AST.
|
|
54
|
+
*
|
|
55
|
+
* This is done by wrapping the JSON-C string in parentheses, thereby making it
|
|
56
|
+
* a JS `Program` with an `ExpressionStatement` as its body. The expression is then
|
|
57
|
+
* extracted from the AST and returned alongside the AST.
|
|
58
|
+
*
|
|
59
|
+
* To preserve as much original formatting as possible, the returned `ast`
|
|
60
|
+
* property should be passed to {@link `printJsonC`} to get the JSON-C string back.
|
|
61
|
+
*
|
|
62
|
+
* If the input is not valid JSON-C, the result will be undefined.
|
|
63
|
+
*
|
|
64
|
+
* @see {@link JsonCParseResult}
|
|
65
|
+
*
|
|
66
|
+
* @param jsonString a JSON-C string
|
|
67
|
+
*
|
|
68
|
+
* @returns a {@link JsonCParseResult}, containing either the JSON-C object and the AST or undefined in both cases
|
|
69
|
+
*/
|
|
70
|
+
export declare function parseJsonC(jsonString: string): JsonCParseResult;
|
|
71
|
+
/**
|
|
72
|
+
* Takes the AST of a parsed JSON-C "program" and returns the JSON-C string without
|
|
73
|
+
* any of the temporary JS wrapper code that was previously applied.
|
|
74
|
+
*
|
|
75
|
+
* Only use this in conjunction with {@link `parseJsonC`}
|
|
76
|
+
*
|
|
77
|
+
* @param ast the `ast` returned from {@link `parseJsonC`}
|
|
78
|
+
*
|
|
79
|
+
* @returns the JSON-C string
|
|
80
|
+
*/
|
|
81
|
+
export declare function printJsonC(ast: t.Program): string;
|
|
82
|
+
export {};
|