@sentry/wizard 3.10.0 → 3.12.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 +54 -7
- 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/lib/Steps/ChooseIntegration.js +8 -4
- package/dist/lib/Steps/ChooseIntegration.js.map +1 -1
- package/dist/lib/Steps/Integrations/Android.d.ts +9 -0
- package/dist/lib/Steps/Integrations/Android.js +86 -0
- package/dist/lib/Steps/Integrations/Android.js.map +1 -0
- package/dist/lib/Steps/Integrations/ReactNative.js +3 -3
- package/dist/lib/Steps/Integrations/ReactNative.js.map +1 -1
- package/dist/lib/Steps/PromptForParameters.js +36 -3
- package/dist/lib/Steps/PromptForParameters.js.map +1 -1
- package/dist/lib/Steps/SentryProjectSelector.js +1 -1
- package/dist/lib/Steps/SentryProjectSelector.js.map +1 -1
- package/dist/package.json +4 -3
- package/dist/src/android/android-wizard.d.ts +2 -0
- package/dist/src/android/android-wizard.js +225 -0
- package/dist/src/android/android-wizard.js.map +1 -0
- package/dist/src/android/code-tools.d.ts +47 -0
- package/dist/src/android/code-tools.js +173 -0
- package/dist/src/android/code-tools.js.map +1 -0
- package/dist/src/android/gradle.d.ts +62 -0
- package/dist/src/android/gradle.js +286 -0
- package/dist/src/android/gradle.js.map +1 -0
- package/dist/src/android/manifest.d.ts +57 -0
- package/dist/src/android/manifest.js +183 -0
- package/dist/src/android/manifest.js.map +1 -0
- package/dist/src/android/templates.d.ts +11 -0
- package/dist/src/android/templates.js +34 -0
- package/dist/src/android/templates.js.map +1 -0
- package/dist/src/apple/apple-wizard.js +123 -64
- package/dist/src/apple/apple-wizard.js.map +1 -1
- package/dist/src/apple/cocoapod.js +4 -3
- package/dist/src/apple/cocoapod.js.map +1 -1
- package/dist/src/apple/code-tools.d.ts +1 -1
- package/dist/src/apple/code-tools.js +43 -19
- package/dist/src/apple/code-tools.js.map +1 -1
- package/dist/src/apple/fastlane.d.ts +1 -1
- package/dist/src/apple/fastlane.js +12 -6
- package/dist/src/apple/fastlane.js.map +1 -1
- package/dist/src/apple/templates.d.ts +2 -2
- package/dist/src/apple/templates.js +4 -4
- package/dist/src/apple/templates.js.map +1 -1
- package/dist/src/apple/xcode-manager.d.ts +19 -3
- package/dist/src/apple/xcode-manager.js +126 -24
- package/dist/src/apple/xcode-manager.js.map +1 -1
- package/dist/src/nextjs/nextjs-wizard.js +49 -11
- package/dist/src/nextjs/nextjs-wizard.js.map +1 -1
- package/dist/src/nextjs/templates.d.ts +2 -0
- package/dist/src/nextjs/templates.js +6 -2
- package/dist/src/nextjs/templates.js.map +1 -1
- package/dist/src/remix/remix-wizard.js +10 -20
- package/dist/src/remix/remix-wizard.js.map +1 -1
- package/dist/src/sourcemaps/sourcemaps-wizard.js +26 -13
- package/dist/src/sourcemaps/sourcemaps-wizard.js.map +1 -1
- package/dist/src/sourcemaps/tools/nextjs.js +1 -1
- package/dist/src/sourcemaps/tools/nextjs.js.map +1 -1
- package/dist/src/sourcemaps/tools/sentry-cli.js +19 -16
- package/dist/src/sourcemaps/tools/sentry-cli.js.map +1 -1
- package/dist/src/sourcemaps/tools/vite.d.ts +2 -1
- package/dist/src/sourcemaps/tools/vite.js +123 -111
- package/dist/src/sourcemaps/tools/vite.js.map +1 -1
- package/dist/src/sourcemaps/tools/webpack.d.ts +6 -1
- package/dist/src/sourcemaps/tools/webpack.js +290 -25
- package/dist/src/sourcemaps/tools/webpack.js.map +1 -1
- package/dist/src/sourcemaps/utils/detect-tool.d.ts +1 -1
- package/dist/src/sourcemaps/utils/detect-tool.js.map +1 -1
- package/dist/src/sveltekit/sdk-setup.js +5 -5
- package/dist/src/sveltekit/sdk-setup.js.map +1 -1
- package/dist/src/sveltekit/sveltekit-wizard.js +34 -44
- package/dist/src/sveltekit/sveltekit-wizard.js.map +1 -1
- package/dist/src/telemetry.js +1 -0
- package/dist/src/telemetry.js.map +1 -1
- package/dist/src/utils/ast-utils.d.ts +9 -5
- package/dist/src/utils/ast-utils.js +26 -11
- package/dist/src/utils/ast-utils.js.map +1 -1
- package/dist/src/utils/clack-utils.d.ts +74 -28
- package/dist/src/utils/clack-utils.js +427 -264
- package/dist/src/utils/clack-utils.js.map +1 -1
- package/dist/src/utils/package-manager.d.ts +10 -0
- package/dist/{lib/Helper/PackageManager.js → src/utils/package-manager.js} +42 -74
- package/dist/src/utils/package-manager.js.map +1 -0
- package/dist/src/utils/release-registry.d.ts +1 -0
- package/dist/src/utils/release-registry.js +68 -0
- package/dist/src/utils/release-registry.js.map +1 -0
- package/dist/src/utils/sentrycli-utils.d.ts +4 -0
- package/dist/src/utils/sentrycli-utils.js +41 -0
- package/dist/src/utils/sentrycli-utils.js.map +1 -0
- package/dist/test/android/code-tools.test.d.ts +1 -0
- package/dist/test/android/code-tools.test.js +34 -0
- package/dist/test/android/code-tools.test.js.map +1 -0
- package/dist/test/sourcemaps/tools/vite.test.d.ts +1 -0
- package/dist/test/sourcemaps/tools/vite.test.js +132 -0
- package/dist/test/sourcemaps/tools/vite.test.js.map +1 -0
- package/dist/test/sourcemaps/tools/webpack.test.d.ts +1 -0
- package/dist/test/sourcemaps/tools/webpack.test.js +179 -0
- package/dist/test/sourcemaps/tools/webpack.test.js.map +1 -0
- package/dist/test/utils/ast-utils.test.js +42 -7
- package/dist/test/utils/ast-utils.test.js.map +1 -1
- package/dist/test/utils/clack-utils.test.d.ts +1 -0
- package/dist/test/utils/clack-utils.test.js +200 -0
- package/dist/test/utils/clack-utils.test.js.map +1 -0
- package/lib/Constants.ts +5 -0
- package/lib/Steps/ChooseIntegration.ts +7 -3
- package/lib/Steps/Integrations/Android.ts +23 -0
- package/lib/Steps/Integrations/ReactNative.ts +9 -3
- package/lib/Steps/PromptForParameters.ts +48 -3
- package/lib/Steps/SentryProjectSelector.ts +3 -1
- package/package.json +4 -3
- package/src/android/android-wizard.ts +204 -0
- package/src/android/code-tools.ts +170 -0
- package/src/android/gradle.ts +250 -0
- package/src/android/manifest.ts +180 -0
- package/src/android/templates.ts +88 -0
- package/src/apple/apple-wizard.ts +113 -35
- package/src/apple/cocoapod.ts +6 -3
- package/src/apple/code-tools.ts +46 -18
- package/src/apple/fastlane.ts +6 -12
- package/src/apple/templates.ts +2 -8
- package/src/apple/xcode-manager.ts +167 -25
- package/src/nextjs/nextjs-wizard.ts +72 -8
- package/src/nextjs/templates.ts +16 -2
- package/src/remix/remix-wizard.ts +10 -15
- package/src/sourcemaps/sourcemaps-wizard.ts +19 -5
- package/src/sourcemaps/tools/nextjs.ts +2 -2
- package/src/sourcemaps/tools/sentry-cli.ts +8 -7
- package/src/sourcemaps/tools/vite.ts +143 -79
- package/src/sourcemaps/tools/webpack.ts +369 -30
- package/src/sourcemaps/utils/detect-tool.ts +2 -1
- package/src/sveltekit/sdk-setup.ts +10 -6
- package/src/sveltekit/sveltekit-wizard.ts +5 -14
- package/src/telemetry.ts +2 -0
- package/src/utils/ast-utils.ts +29 -11
- package/src/utils/clack-utils.ts +485 -283
- package/src/utils/package-manager.ts +61 -0
- package/src/utils/release-registry.ts +19 -0
- package/src/utils/sentrycli-utils.ts +22 -0
- package/test/android/code-tools.test.ts +49 -0
- package/test/sourcemaps/tools/vite.test.ts +149 -0
- package/test/sourcemaps/tools/webpack.test.ts +303 -0
- package/test/utils/ast-utils.test.ts +28 -9
- package/test/utils/clack-utils.test.ts +142 -0
- package/dist/lib/Helper/PackageManager.d.ts +0 -22
- package/dist/lib/Helper/PackageManager.js.map +0 -1
- package/dist/src/utils/vendor/clack-custom-select.d.ts +0 -21
- package/dist/src/utils/vendor/clack-custom-select.js +0 -137
- package/dist/src/utils/vendor/clack-custom-select.js.map +0 -1
- package/lib/Helper/PackageManager.ts +0 -59
- package/src/utils/vendor/clack-custom-select.ts +0 -160
|
@@ -49,9 +49,9 @@ var sdk_example_1 = require("./sdk-example");
|
|
|
49
49
|
var sdk_setup_1 = require("./sdk-setup");
|
|
50
50
|
function runSvelteKitWizard(options) {
|
|
51
51
|
return __awaiter(this, void 0, void 0, function () {
|
|
52
|
-
var packageJson, _a,
|
|
53
|
-
return __generator(this, function (
|
|
54
|
-
switch (
|
|
52
|
+
var packageJson, _a, selectedProject, selfHosted, sentryUrl, authToken, svelteConfig, e_1, e_2;
|
|
53
|
+
return __generator(this, function (_b) {
|
|
54
|
+
switch (_b.label) {
|
|
55
55
|
case 0:
|
|
56
56
|
(0, clack_utils_1.printWelcome)({
|
|
57
57
|
wizardName: 'Sentry SvelteKit Wizard',
|
|
@@ -59,41 +59,31 @@ function runSvelteKitWizard(options) {
|
|
|
59
59
|
});
|
|
60
60
|
return [4 /*yield*/, (0, clack_utils_1.confirmContinueEvenThoughNoGitRepo)()];
|
|
61
61
|
case 1:
|
|
62
|
-
|
|
62
|
+
_b.sent();
|
|
63
63
|
return [4 /*yield*/, (0, clack_utils_1.getPackageDotJson)()];
|
|
64
64
|
case 2:
|
|
65
|
-
packageJson =
|
|
65
|
+
packageJson = _b.sent();
|
|
66
66
|
return [4 /*yield*/, (0, clack_utils_1.ensurePackageIsInstalled)(packageJson, '@sveltejs/kit', 'Sveltekit')];
|
|
67
67
|
case 3:
|
|
68
|
-
|
|
69
|
-
return [4 /*yield*/, (0, clack_utils_1.
|
|
68
|
+
_b.sent();
|
|
69
|
+
return [4 /*yield*/, (0, clack_utils_1.getOrAskForProjectData)(options, 'javascript-sveltekit')];
|
|
70
70
|
case 4:
|
|
71
|
-
_a =
|
|
72
|
-
return [4 /*yield*/, (0, clack_utils_1.askForWizardLogin)({
|
|
73
|
-
promoCode: options.promoCode,
|
|
74
|
-
url: sentryUrl,
|
|
75
|
-
platform: 'javascript-sveltekit',
|
|
76
|
-
})];
|
|
77
|
-
case 5:
|
|
78
|
-
_b = _c.sent(), projects = _b.projects, apiKeys = _b.apiKeys;
|
|
79
|
-
return [4 /*yield*/, (0, clack_utils_1.askForProjectSelection)(projects)];
|
|
80
|
-
case 6:
|
|
81
|
-
selectedProject = _c.sent();
|
|
71
|
+
_a = _b.sent(), selectedProject = _a.selectedProject, selfHosted = _a.selfHosted, sentryUrl = _a.sentryUrl, authToken = _a.authToken;
|
|
82
72
|
return [4 /*yield*/, (0, clack_utils_1.installPackage)({
|
|
83
73
|
packageName: '@sentry/sveltekit',
|
|
84
74
|
alreadyInstalled: (0, package_json_1.hasPackageInstalled)('@sentry/sveltekit', packageJson),
|
|
85
75
|
})];
|
|
76
|
+
case 5:
|
|
77
|
+
_b.sent();
|
|
78
|
+
return [4 /*yield*/, (0, clack_utils_1.addSentryCliConfig)(authToken)];
|
|
79
|
+
case 6:
|
|
80
|
+
_b.sent();
|
|
81
|
+
return [4 /*yield*/, (0, sdk_setup_1.loadSvelteConfig)()];
|
|
86
82
|
case 7:
|
|
87
|
-
|
|
88
|
-
|
|
83
|
+
svelteConfig = _b.sent();
|
|
84
|
+
_b.label = 8;
|
|
89
85
|
case 8:
|
|
90
|
-
|
|
91
|
-
return [4 /*yield*/, (0, sdk_setup_1.loadSvelteConfig)()];
|
|
92
|
-
case 9:
|
|
93
|
-
svelteConfig = _c.sent();
|
|
94
|
-
_c.label = 10;
|
|
95
|
-
case 10:
|
|
96
|
-
_c.trys.push([10, 12, , 14]);
|
|
86
|
+
_b.trys.push([8, 10, , 12]);
|
|
97
87
|
return [4 /*yield*/, (0, sdk_setup_1.createOrMergeSvelteKitFiles)({
|
|
98
88
|
dsn: selectedProject.keys[0].dsn.public,
|
|
99
89
|
org: selectedProject.organization.slug,
|
|
@@ -101,11 +91,11 @@ function runSvelteKitWizard(options) {
|
|
|
101
91
|
selfHosted: selfHosted,
|
|
102
92
|
url: sentryUrl,
|
|
103
93
|
}, svelteConfig)];
|
|
104
|
-
case
|
|
105
|
-
|
|
106
|
-
return [3 /*break*/,
|
|
107
|
-
case
|
|
108
|
-
e_1 =
|
|
94
|
+
case 9:
|
|
95
|
+
_b.sent();
|
|
96
|
+
return [3 /*break*/, 12];
|
|
97
|
+
case 10:
|
|
98
|
+
e_1 = _b.sent();
|
|
109
99
|
prompts_1.default.log.error('Error while setting up the SvelteKit SDK:');
|
|
110
100
|
prompts_1.default.log.info(chalk_1.default.dim(typeof e_1 === 'object' && e_1 != null && 'toString' in e_1
|
|
111
101
|
? e_1.toString()
|
|
@@ -113,22 +103,22 @@ function runSvelteKitWizard(options) {
|
|
|
113
103
|
? e_1
|
|
114
104
|
: 'Unknown error'));
|
|
115
105
|
return [4 /*yield*/, (0, clack_utils_1.abort)('Exiting Wizard')];
|
|
116
|
-
case
|
|
117
|
-
|
|
106
|
+
case 11:
|
|
107
|
+
_b.sent();
|
|
118
108
|
return [2 /*return*/];
|
|
119
|
-
case
|
|
120
|
-
|
|
109
|
+
case 12:
|
|
110
|
+
_b.trys.push([12, 14, , 16]);
|
|
121
111
|
return [4 /*yield*/, (0, sdk_example_1.createExamplePage)(svelteConfig, {
|
|
122
112
|
selfHosted: selfHosted,
|
|
123
113
|
url: sentryUrl,
|
|
124
114
|
orgSlug: selectedProject.organization.slug,
|
|
125
115
|
projectId: selectedProject.id,
|
|
126
116
|
})];
|
|
127
|
-
case
|
|
128
|
-
|
|
129
|
-
return [3 /*break*/,
|
|
130
|
-
case
|
|
131
|
-
e_2 =
|
|
117
|
+
case 13:
|
|
118
|
+
_b.sent();
|
|
119
|
+
return [3 /*break*/, 16];
|
|
120
|
+
case 14:
|
|
121
|
+
e_2 = _b.sent();
|
|
132
122
|
prompts_1.default.log.error('Error while creating an example page to test Sentry:');
|
|
133
123
|
prompts_1.default.log.info(chalk_1.default.dim(typeof e_2 === 'object' && e_2 != null && 'toString' in e_2
|
|
134
124
|
? e_2.toString()
|
|
@@ -136,10 +126,10 @@ function runSvelteKitWizard(options) {
|
|
|
136
126
|
? e_2
|
|
137
127
|
: 'Unknown error'));
|
|
138
128
|
return [4 /*yield*/, (0, clack_utils_1.abort)('Exiting Wizard')];
|
|
139
|
-
case
|
|
140
|
-
|
|
129
|
+
case 15:
|
|
130
|
+
_b.sent();
|
|
141
131
|
return [2 /*return*/];
|
|
142
|
-
case
|
|
132
|
+
case 16:
|
|
143
133
|
prompts_1.default.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 "));
|
|
144
134
|
return [2 /*return*/];
|
|
145
135
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sveltekit-wizard.js","sourceRoot":"","sources":["../../../src/sveltekit/sveltekit-wizard.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yEAAyE;AACzE,2DAAmC;AACnC,gDAA0B;AAE1B,
|
|
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 clack from '@clack/prompts';\nimport chalk from 'chalk';\n\nimport {\n abort,\n addSentryCliConfig,\n confirmContinueEvenThoughNoGitRepo,\n ensurePackageIsInstalled,\n getOrAskForProjectData,\n getPackageDotJson,\n installPackage,\n printWelcome,\n} from '../utils/clack-utils';\nimport { hasPackageInstalled } from '../utils/package-json';\nimport { WizardOptions } from '../utils/types';\nimport { createExamplePage } from './sdk-example';\nimport { createOrMergeSvelteKitFiles, loadSvelteConfig } from './sdk-setup';\n\nexport async function runSvelteKitWizard(\n options: WizardOptions,\n): Promise<void> {\n printWelcome({\n wizardName: 'Sentry SvelteKit Wizard',\n promoCode: options.promoCode,\n });\n\n await confirmContinueEvenThoughNoGitRepo();\n\n const packageJson = await getPackageDotJson();\n await ensurePackageIsInstalled(packageJson, '@sveltejs/kit', 'Sveltekit');\n\n const { selectedProject, selfHosted, sentryUrl, authToken } =\n await getOrAskForProjectData(options, 'javascript-sveltekit');\n\n await installPackage({\n packageName: '@sentry/sveltekit',\n alreadyInstalled: hasPackageInstalled('@sentry/sveltekit', packageJson),\n });\n\n await addSentryCliConfig(authToken);\n\n const svelteConfig = await loadSvelteConfig();\n\n try {\n await 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 } 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 await abort('Exiting Wizard');\n return;\n }\n\n try {\n await createExamplePage(svelteConfig, {\n selfHosted,\n url: sentryUrl,\n orgSlug: selectedProject.organization.slug,\n projectId: selectedProject.id,\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 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"]}
|
package/dist/src/telemetry.js
CHANGED
|
@@ -86,6 +86,7 @@ function createSentryInstance(enabled, integration) {
|
|
|
86
86
|
var client = new node_1.NodeClient({
|
|
87
87
|
dsn: 'https://8871d3ff64814ed8960c96d1fcc98a27@o1.ingest.sentry.io/4505425820712960',
|
|
88
88
|
enabled: enabled,
|
|
89
|
+
environment: "production-".concat(integration),
|
|
89
90
|
tracesSampleRate: 1,
|
|
90
91
|
sampleRate: 1,
|
|
91
92
|
release: package_json_1.default.version,
|
|
@@ -1 +1 @@
|
|
|
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 trace,\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 transaction = sentryHub.startTransaction({\n name: 'sentry-wizard-execution',\n status: 'ok',\n op: 'wizard.flow',\n });\n sentryHub.getScope().setSpan(transaction);\n const sentrySession = sentryHub.startSession();\n sentryHub.captureSession();\n\n try {\n return await runWithAsyncContext(() => callback());\n } catch (e) {\n sentryHub.captureException('Error during wizard execution.');\n transaction.setStatus('internal_error');\n sentrySession.status = 'crashed';\n throw e;\n } finally {\n transaction.finish();\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 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 return trace({ name: step, op: 'wizard.step' }, () => callback());\n}\n"]}
|
|
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 trace,\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 transaction = sentryHub.startTransaction({\n name: 'sentry-wizard-execution',\n status: 'ok',\n op: 'wizard.flow',\n });\n sentryHub.getScope().setSpan(transaction);\n const sentrySession = sentryHub.startSession();\n sentryHub.captureSession();\n\n try {\n return await runWithAsyncContext(() => callback());\n } catch (e) {\n sentryHub.captureException('Error during wizard execution.');\n transaction.setStatus('internal_error');\n sentrySession.status = 'crashed';\n throw e;\n } finally {\n transaction.finish();\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 return trace({ name: step, op: 'wizard.step' }, () => callback());\n}\n"]}
|
|
@@ -1,8 +1,12 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as recast from 'recast';
|
|
2
|
+
import x = recast.types;
|
|
3
|
+
import t = x.namedTypes;
|
|
2
4
|
/**
|
|
3
|
-
* Checks if a
|
|
5
|
+
* Checks if a file where we don't know its concrete file type yet exists
|
|
4
6
|
* and returns the full path to the file with the correct file type.
|
|
5
7
|
*/
|
|
6
|
-
export declare function
|
|
7
|
-
/**
|
|
8
|
-
|
|
8
|
+
export declare function findFile(filePath: string, fileTypes?: string[]): string | undefined;
|
|
9
|
+
/**
|
|
10
|
+
* checks for require('@sentry/*') syntax
|
|
11
|
+
*/
|
|
12
|
+
export declare function hasSentryContent(program: t.Program): boolean;
|
|
@@ -23,23 +23,38 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.hasSentryContent = exports.
|
|
26
|
+
exports.hasSentryContent = exports.findFile = void 0;
|
|
27
27
|
var fs = __importStar(require("fs"));
|
|
28
|
+
var recast = __importStar(require("recast"));
|
|
28
29
|
/**
|
|
29
|
-
* Checks if a
|
|
30
|
+
* Checks if a file where we don't know its concrete file type yet exists
|
|
30
31
|
* and returns the full path to the file with the correct file type.
|
|
31
32
|
*/
|
|
32
|
-
function
|
|
33
|
-
|
|
34
|
-
return
|
|
35
|
-
.map(function (type) { return "".concat(
|
|
33
|
+
function findFile(filePath, fileTypes) {
|
|
34
|
+
if (fileTypes === void 0) { fileTypes = ['.js', '.ts', '.mjs', '.cjs']; }
|
|
35
|
+
return fileTypes
|
|
36
|
+
.map(function (type) { return "".concat(filePath).concat(type); })
|
|
36
37
|
.find(function (file) { return fs.existsSync(file); });
|
|
37
38
|
}
|
|
38
|
-
exports.
|
|
39
|
-
/**
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
39
|
+
exports.findFile = findFile;
|
|
40
|
+
/**
|
|
41
|
+
* checks for require('@sentry/*') syntax
|
|
42
|
+
*/
|
|
43
|
+
function hasSentryContent(program) {
|
|
44
|
+
var foundSentry = false;
|
|
45
|
+
recast.visit(program, {
|
|
46
|
+
visitStringLiteral: function (path) {
|
|
47
|
+
foundSentry = foundSentry || path.node.value.startsWith('@sentry/');
|
|
48
|
+
this.traverse(path);
|
|
49
|
+
},
|
|
50
|
+
visitLiteral: function (path) {
|
|
51
|
+
var _a;
|
|
52
|
+
foundSentry =
|
|
53
|
+
foundSentry || ((_a = path.node.value) === null || _a === void 0 ? void 0 : _a.toString().startsWith('@sentry/'));
|
|
54
|
+
this.traverse(path);
|
|
55
|
+
},
|
|
56
|
+
});
|
|
57
|
+
return !!foundSentry;
|
|
43
58
|
}
|
|
44
59
|
exports.hasSentryContent = hasSentryContent;
|
|
45
60
|
//# sourceMappingURL=ast-utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ast-utils.js","sourceRoot":"","sources":["../../../src/utils/ast-utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qCAAyB;
|
|
1
|
+
{"version":3,"file":"ast-utils.js","sourceRoot":"","sources":["../../../src/utils/ast-utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qCAAyB;AAEzB,6CAAiC;AAIjC;;;GAGG;AACH,SAAgB,QAAQ,CACtB,QAAgB,EAChB,SAAoD;IAApD,0BAAA,EAAA,aAAuB,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC;IAEpD,OAAO,SAAS;SACb,GAAG,CAAC,UAAC,IAAI,IAAK,OAAA,UAAG,QAAQ,SAAG,IAAI,CAAE,EAApB,CAAoB,CAAC;SACnC,IAAI,CAAC,UAAC,IAAI,IAAK,OAAA,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAnB,CAAmB,CAAC,CAAC;AACzC,CAAC;AAPD,4BAOC;AAED;;GAEG;AACH,SAAgB,gBAAgB,CAAC,OAAkB;IACjD,IAAI,WAAW,GAAwB,KAAK,CAAC;IAC7C,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE;QACpB,kBAAkB,YAAC,IAAI;YACrB,WAAW,GAAG,WAAW,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YACpE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;QACD,YAAY,YAAC,IAAI;;YACf,WAAW;gBACT,WAAW,KAAI,MAAA,IAAI,CAAC,IAAI,CAAC,KAAK,0CAAE,QAAQ,GAAG,UAAU,CAAC,UAAU,CAAC,CAAA,CAAC;YACpE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;KACF,CAAC,CAAC;IAEH,OAAO,CAAC,CAAC,WAAW,CAAC;AACvB,CAAC;AAfD,4CAeC","sourcesContent":["import * as fs from 'fs';\n\nimport * as recast from 'recast';\nimport x = recast.types;\nimport t = x.namedTypes;\n\n/**\n * Checks if a file where we don't know its concrete file type yet exists\n * and returns the full path to the file with the correct file type.\n */\nexport function findFile(\n filePath: string,\n fileTypes: string[] = ['.js', '.ts', '.mjs', '.cjs'],\n): string | undefined {\n return fileTypes\n .map((type) => `${filePath}${type}`)\n .find((file) => fs.existsSync(file));\n}\n\n/**\n * checks for require('@sentry/*') syntax\n */\nexport function hasSentryContent(program: t.Program): boolean {\n let foundSentry: boolean | undefined = false;\n recast.visit(program, {\n visitStringLiteral(path) {\n foundSentry = foundSentry || path.node.value.startsWith('@sentry/');\n this.traverse(path);\n },\n visitLiteral(path) {\n foundSentry =\n foundSentry || path.node.value?.toString().startsWith('@sentry/');\n this.traverse(path);\n },\n });\n\n return !!foundSentry;\n}\n"]}
|
|
@@ -2,12 +2,16 @@ import { PackageDotJson } from './package-json';
|
|
|
2
2
|
import { SentryProjectData, WizardOptions } from './types';
|
|
3
3
|
export declare const SENTRY_DOT_ENV_FILE = ".env.sentry-build-plugin";
|
|
4
4
|
export declare const SENTRY_CLI_RC_FILE = ".sentryclirc";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
export declare const SENTRY_PROPERTIES_FILE = "sentry.properties";
|
|
6
|
+
export interface CliSetupConfig {
|
|
7
|
+
filename: string;
|
|
8
|
+
name: string;
|
|
9
|
+
likelyAlreadyHasAuthToken(contents: string): boolean;
|
|
10
|
+
tokenContent(authToken: string): string;
|
|
11
|
+
likelyAlreadyHasOrgAndProject(contents: string): boolean;
|
|
12
|
+
orgAndProjContent(org: string, project: string): string;
|
|
10
13
|
}
|
|
14
|
+
export declare const sourceMapsCliSetupConfig: CliSetupConfig;
|
|
11
15
|
export declare function abort(message?: string, status?: number): Promise<never>;
|
|
12
16
|
export declare function abortIfCancelled<T>(input: T | Promise<T>): Promise<Exclude<T, symbol>>;
|
|
13
17
|
export declare function printWelcome(options: {
|
|
@@ -18,44 +22,86 @@ export declare function printWelcome(options: {
|
|
|
18
22
|
}): void;
|
|
19
23
|
export declare function confirmContinueEvenThoughNoGitRepo(): Promise<void>;
|
|
20
24
|
export declare function askToInstallSentryCLI(): Promise<boolean>;
|
|
21
|
-
export declare function askForWizardLogin(options: {
|
|
22
|
-
url: string;
|
|
23
|
-
promoCode?: string;
|
|
24
|
-
platform?: 'javascript-nextjs' | 'javascript-remix' | 'javascript-sveltekit' | 'apple-ios';
|
|
25
|
-
}): Promise<WizardProjectData>;
|
|
26
25
|
export declare function askForItemSelection(items: string[], message: string): Promise<{
|
|
27
26
|
value: string;
|
|
28
27
|
index: number;
|
|
29
28
|
}>;
|
|
30
|
-
export declare function askForProjectSelection(projects: SentryProjectData[]): Promise<SentryProjectData>;
|
|
31
29
|
export declare function installPackage({ packageName, alreadyInstalled, askBeforeUpdating, }: {
|
|
32
30
|
packageName: string;
|
|
33
31
|
alreadyInstalled: boolean;
|
|
34
32
|
askBeforeUpdating?: boolean;
|
|
35
33
|
}): Promise<void>;
|
|
36
|
-
|
|
37
|
-
* Asks users if they are using SaaS or self-hosted Sentry and returns the validated URL.
|
|
38
|
-
*
|
|
39
|
-
* If users started the wizard with a --url arg, that URL is used as the default and we skip
|
|
40
|
-
* the self-hosted question. However, the passed url is still validated and in case it's
|
|
41
|
-
* invalid, users are asked to enter a new one until it is valid.
|
|
42
|
-
*
|
|
43
|
-
* @param urlFromArgs the url passed via the --url arg
|
|
44
|
-
*/
|
|
45
|
-
export declare function askForSelfHosted(urlFromArgs?: string): Promise<{
|
|
46
|
-
url: string;
|
|
47
|
-
selfHosted: boolean;
|
|
48
|
-
}>;
|
|
49
|
-
export declare function addSentryCliRc(authToken: string, orgSlug?: string, projectSlug?: string): Promise<void>;
|
|
34
|
+
export declare function addSentryCliConfig(authToken: string, setupConfig?: CliSetupConfig, orgSlug?: string, projectSlug?: string): Promise<void>;
|
|
50
35
|
export declare function addDotEnvSentryBuildPluginFile(authToken: string): Promise<void>;
|
|
51
36
|
export declare function ensurePackageIsInstalled(packageJson: PackageDotJson, packageId: string, packageName: string): Promise<void>;
|
|
52
37
|
export declare function getPackageDotJson(): Promise<PackageDotJson>;
|
|
53
|
-
export declare function detectPackageManager(): 'yarn' | 'npm' | 'pnpm' | undefined;
|
|
54
38
|
export declare function isUsingTypeScript(): boolean;
|
|
55
|
-
|
|
39
|
+
/**
|
|
40
|
+
* Checks if we already got project data from a previous wizard invocation.
|
|
41
|
+
* If yes, this data is returned.
|
|
42
|
+
* Otherwise, we start the login flow and ask the user to select a project.
|
|
43
|
+
*
|
|
44
|
+
* Use this function to get project data for the wizard.
|
|
45
|
+
*
|
|
46
|
+
* @param options wizard options
|
|
47
|
+
* @param platform the platform of the wizard
|
|
48
|
+
* @returns project data (org, project, token, url)
|
|
49
|
+
*/
|
|
50
|
+
export declare function getOrAskForProjectData(options: WizardOptions, platform?: 'javascript-nextjs' | 'javascript-remix' | 'javascript-sveltekit' | 'apple-ios' | 'android'): Promise<{
|
|
56
51
|
sentryUrl: string;
|
|
57
52
|
selfHosted: boolean;
|
|
58
53
|
selectedProject: SentryProjectData;
|
|
59
54
|
authToken: string;
|
|
60
55
|
}>;
|
|
61
|
-
|
|
56
|
+
/**
|
|
57
|
+
* Asks users if they have a config file for @param tool (e.g. Vite).
|
|
58
|
+
* If yes, asks users to specify the path to their config file.
|
|
59
|
+
*
|
|
60
|
+
* Use this helper function as a fallback mechanism if the lookup for
|
|
61
|
+
* a config file with its most usual location/name fails.
|
|
62
|
+
*
|
|
63
|
+
* @param toolName Name of the tool for which we're looking for the config file
|
|
64
|
+
* @param configFileName Name of the most common config file name (e.g. vite.config.js)
|
|
65
|
+
*
|
|
66
|
+
* @returns a user path to the config file or undefined if the user doesn't have a config file
|
|
67
|
+
*/
|
|
68
|
+
export declare function askForToolConfigPath(toolName: string, configFileName: string): Promise<string | undefined>;
|
|
69
|
+
/**
|
|
70
|
+
* Prints copy/paste-able instructions to the console.
|
|
71
|
+
* Afterwards asks the user if they added the code snippet to their file.
|
|
72
|
+
*
|
|
73
|
+
* While there's no point in providing a "no" answer here, it gives users time to fulfill the
|
|
74
|
+
* task before the wizard continues with additional steps.
|
|
75
|
+
*
|
|
76
|
+
* Use this function if you want to show users instructions on how to add/modify
|
|
77
|
+
* code in their file. This is helpful if automatic insertion failed or is not possible/feasible.
|
|
78
|
+
*
|
|
79
|
+
* @param filename the name of the file to which the code snippet should be applied.
|
|
80
|
+
* If a path is provided, only the filename will be used.
|
|
81
|
+
* @param codeSnippet the snippet to be printed.
|
|
82
|
+
* Make sure to follow the diff-like format of highlighting lines that require changes
|
|
83
|
+
* and showing unchanged lines in gray.
|
|
84
|
+
*
|
|
85
|
+
* TODO: Link to wizard spec (develop) once it is live
|
|
86
|
+
* TODO: refactor copy paste instructions across different wizards to use this function.
|
|
87
|
+
* this might require adding a custom message parameter to the function
|
|
88
|
+
*/
|
|
89
|
+
export declare function showCopyPasteInstructions(filename: string, codeSnippet: string): Promise<void>;
|
|
90
|
+
/**
|
|
91
|
+
* Creates a new config file with the given @param filepath and @param codeSnippet.
|
|
92
|
+
*
|
|
93
|
+
* Use this function to create a new config file for users. This is useful
|
|
94
|
+
* when users answered that they don't yet have a config file for a tool.
|
|
95
|
+
*
|
|
96
|
+
* (This doesn't mean that they don't yet have some other way of configuring
|
|
97
|
+
* their tool but we can leave it up to them to figure out how to merge configs
|
|
98
|
+
* here.)
|
|
99
|
+
*
|
|
100
|
+
* @param filepath absolute path to the new config file
|
|
101
|
+
* @param codeSnippet the snippet to be inserted into the file
|
|
102
|
+
* @param moreInformation (optional) the message to be printed after the file was created
|
|
103
|
+
* For example, this can be a link to more information about configuring the tool.
|
|
104
|
+
*
|
|
105
|
+
* @returns true on sucess, false otherwise
|
|
106
|
+
*/
|
|
107
|
+
export declare function createNewConfigFile(filepath: string, codeSnippet: string, moreInformation?: string): Promise<boolean>;
|