@sentry/wizard 3.37.0 → 3.39.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.
Files changed (57) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/README.md +2 -2
  3. package/dist/e2e-tests/tests/nextjs.test.js +1 -1
  4. package/dist/e2e-tests/tests/nextjs.test.js.map +1 -1
  5. package/dist/e2e-tests/tests/nuxt-3.test.js +1 -1
  6. package/dist/e2e-tests/tests/nuxt-3.test.js.map +1 -1
  7. package/dist/e2e-tests/tests/nuxt-4.test.js +1 -1
  8. package/dist/e2e-tests/tests/nuxt-4.test.js.map +1 -1
  9. package/dist/e2e-tests/tests/remix.test.js +1 -2
  10. package/dist/e2e-tests/tests/remix.test.js.map +1 -1
  11. package/dist/e2e-tests/tests/sveltekit.test.js +17 -5
  12. package/dist/e2e-tests/tests/sveltekit.test.js.map +1 -1
  13. package/dist/e2e-tests/utils/index.d.ts +12 -2
  14. package/dist/e2e-tests/utils/index.js +23 -3
  15. package/dist/e2e-tests/utils/index.js.map +1 -1
  16. package/dist/package.json +2 -2
  17. package/dist/src/nextjs/nextjs-wizard.js +3 -1
  18. package/dist/src/nextjs/nextjs-wizard.js.map +1 -1
  19. package/dist/src/nuxt/nuxt-wizard.js +1 -0
  20. package/dist/src/nuxt/nuxt-wizard.js.map +1 -1
  21. package/dist/src/nuxt/sdk-setup.js +1 -0
  22. package/dist/src/nuxt/sdk-setup.js.map +1 -1
  23. package/dist/src/react-native/javascript.js +1 -1
  24. package/dist/src/react-native/javascript.js.map +1 -1
  25. package/dist/src/react-native/react-native-wizard.d.ts +5 -4
  26. package/dist/src/react-native/react-native-wizard.js +65 -41
  27. package/dist/src/react-native/react-native-wizard.js.map +1 -1
  28. package/dist/src/sourcemaps/sourcemaps-wizard.js +2 -3
  29. package/dist/src/sourcemaps/sourcemaps-wizard.js.map +1 -1
  30. package/dist/src/telemetry.d.ts +2 -1
  31. package/dist/src/telemetry.js +1 -1
  32. package/dist/src/telemetry.js.map +1 -1
  33. package/dist/src/utils/clack-utils.js +3 -3
  34. package/dist/src/utils/clack-utils.js.map +1 -1
  35. package/dist/src/utils/package-manager.d.ts +0 -1
  36. package/dist/src/utils/package-manager.js +9 -10
  37. package/dist/src/utils/package-manager.js.map +1 -1
  38. package/dist/test/react-native/javascript.test.js +1 -1
  39. package/dist/test/react-native/javascript.test.js.map +1 -1
  40. package/e2e-tests/test-applications/nextjs-test-app/package.json +1 -1
  41. package/e2e-tests/tests/nextjs.test.ts +1 -1
  42. package/e2e-tests/tests/nuxt-3.test.ts +1 -1
  43. package/e2e-tests/tests/nuxt-4.test.ts +1 -1
  44. package/e2e-tests/tests/remix.test.ts +30 -19
  45. package/e2e-tests/tests/sveltekit.test.ts +79 -50
  46. package/e2e-tests/utils/index.ts +33 -6
  47. package/package.json +2 -2
  48. package/src/nextjs/nextjs-wizard.ts +4 -1
  49. package/src/nuxt/nuxt-wizard.ts +1 -0
  50. package/src/nuxt/sdk-setup.ts +2 -0
  51. package/src/react-native/javascript.ts +1 -1
  52. package/src/react-native/react-native-wizard.ts +32 -12
  53. package/src/sourcemaps/sourcemaps-wizard.ts +3 -7
  54. package/src/telemetry.ts +6 -2
  55. package/src/utils/clack-utils.ts +4 -3
  56. package/src/utils/package-manager.ts +8 -11
  57. package/test/react-native/javascript.test.ts +1 -1
@@ -73,7 +73,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
73
73
  return (mod && mod.__esModule) ? mod : { "default": mod };
74
74
  };
75
75
  Object.defineProperty(exports, "__esModule", { value: true });
76
- exports.runReactNativeWizardWithTelemetry = exports.runReactNativeWizard = exports.SDK_SENTRY_METRO_WITH_SENTRY_CONFIG_SUPPORTED_SDK_RANGE = exports.SDK_EXPO_SUPPORTED_SDK_RANGE = exports.SDK_SENTRY_METRO_PLUGIN_SUPPORTED_SDK_RANGE = exports.SDK_XCODE_SCRIPTS_SUPPORTED_SDK_RANGE = exports.SUPPORTED_EXPO_RANGE = exports.SUPPORTED_RN_RANGE = exports.RN_HUMAN_NAME = exports.RN_PACKAGE = exports.RN_SDK_PACKAGE = void 0;
76
+ exports.runReactNativeWizardWithTelemetry = exports.runReactNativeWizard = exports.METRO_WITH_SENTRY_CONFIG_SUPPORTED_SDK_RANGE = exports.EXPO_SUPPORTED_SDK_RANGE = exports.SENTRY_METRO_PLUGIN_SUPPORTED_SDK_RANGE = exports.XCODE_SCRIPTS_SUPPORTED_SDK_RANGE = exports.SUPPORTED_EXPO_RANGE = exports.SUPPORTED_RN_RANGE = exports.RN_HUMAN_NAME = exports.RN_PACKAGE = exports.RN_SDK_SUPPORTED_RANGE = exports.RN_SDK_PACKAGE = void 0;
77
77
  /* eslint-disable max-lines */
78
78
  // @ts-ignore - clack is ESM and TS complains about that. It works though
79
79
  var prompts_1 = __importDefault(require("@clack/prompts"));
@@ -99,6 +99,7 @@ var expo_env_file_1 = require("./expo-env-file");
99
99
  // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
100
100
  var xcode = require('xcode');
101
101
  exports.RN_SDK_PACKAGE = '@sentry/react-native';
102
+ exports.RN_SDK_SUPPORTED_RANGE = '>=5.0.0';
102
103
  exports.RN_PACKAGE = 'react-native';
103
104
  exports.RN_HUMAN_NAME = 'React Native';
104
105
  exports.SUPPORTED_RN_RANGE = '>=0.69.0';
@@ -107,17 +108,17 @@ exports.SUPPORTED_EXPO_RANGE = '>=50.0.0';
107
108
  * The following SDK version ship with bundled Xcode scripts
108
109
  * which simplifies the Xcode Build Phases setup.
109
110
  */
110
- exports.SDK_XCODE_SCRIPTS_SUPPORTED_SDK_RANGE = '>=5.11.0';
111
+ exports.XCODE_SCRIPTS_SUPPORTED_SDK_RANGE = '>=5.11.0';
111
112
  /**
112
113
  * The following SDK version ship with Sentry Metro plugin
113
114
  */
114
- exports.SDK_SENTRY_METRO_PLUGIN_SUPPORTED_SDK_RANGE = '>=5.11.0';
115
+ exports.SENTRY_METRO_PLUGIN_SUPPORTED_SDK_RANGE = '>=5.11.0';
115
116
  /**
116
117
  * The following SDK version ship with bundled Expo plugin
117
118
  */
118
- exports.SDK_EXPO_SUPPORTED_SDK_RANGE = ">=5.16.0";
119
+ exports.EXPO_SUPPORTED_SDK_RANGE = ">=5.16.0";
119
120
  // The following SDK version shipped `withSentryConfig`
120
- exports.SDK_SENTRY_METRO_WITH_SENTRY_CONFIG_SUPPORTED_SDK_RANGE = '>=5.17.0';
121
+ exports.METRO_WITH_SENTRY_CONFIG_SUPPORTED_SDK_RANGE = '>=5.17.0';
121
122
  function runReactNativeWizard(params) {
122
123
  return __awaiter(this, void 0, void 0, function () {
123
124
  return __generator(this, function (_a) {
@@ -132,7 +133,7 @@ function runReactNativeWizard(params) {
132
133
  exports.runReactNativeWizard = runReactNativeWizard;
133
134
  function runReactNativeWizardWithTelemetry(options) {
134
135
  return __awaiter(this, void 0, void 0, function () {
135
- var packageJson, hasInstalled, rnVersion, sdkVersion, _a, _b, expoVersion, isExpo, _c, selectedProject, authToken, sentryUrl, orgSlug, projectSlug, projectId, cliConfig, confirmedFirstException;
136
+ var packageJson, hasInstalled, rnVersion, sdkVersion, _a, _b, continueWithoutSdk, expoVersion, isExpo, _c, selectedProject, authToken, sentryUrl, orgSlug, projectSlug, projectId, cliConfig, confirmedFirstException;
136
137
  return __generator(this, function (_d) {
137
138
  switch (_d.label) {
138
139
  case 0:
@@ -183,17 +184,40 @@ function runReactNativeWizardWithTelemetry(options) {
183
184
  return [4 /*yield*/, (0, clack_utils_1.getPackageDotJson)()];
184
185
  case 7:
185
186
  sdkVersion = _a.apply(void 0, _b.concat([_d.sent()]));
187
+ if (!sdkVersion) return [3 /*break*/, 9];
188
+ return [4 /*yield*/, (0, clack_utils_1.confirmContinueIfPackageVersionNotSupported)({
189
+ packageName: 'Sentry React Native SDK',
190
+ packageVersion: sdkVersion,
191
+ packageId: exports.RN_SDK_PACKAGE,
192
+ acceptableVersions: exports.RN_SDK_SUPPORTED_RANGE,
193
+ note: "Please upgrade to ".concat(exports.RN_SDK_SUPPORTED_RANGE, " to continue with the wizard in this project."),
194
+ })];
195
+ case 8:
196
+ _d.sent();
197
+ return [3 /*break*/, 12];
198
+ case 9: return [4 /*yield*/, (0, clack_utils_1.abortIfCancelled)(prompts_1.default.confirm({
199
+ message: 'Could not detect Sentry React Native SDK version. Do you want to continue anyway?',
200
+ }))];
201
+ case 10:
202
+ continueWithoutSdk = _d.sent();
203
+ if (!!continueWithoutSdk) return [3 /*break*/, 12];
204
+ return [4 /*yield*/, (0, clack_utils_1.abort)(undefined, 0)];
205
+ case 11:
206
+ _d.sent();
207
+ _d.label = 12;
208
+ case 12:
209
+ Sentry.setTag("detected-sentry-react-native-sdk-version", sdkVersion);
186
210
  expoVersion = (0, package_json_1.getPackageVersion)('expo', packageJson);
187
211
  isExpo = !!expoVersion;
188
- if (!(expoVersion && sdkVersion)) return [3 /*break*/, 10];
212
+ if (!(expoVersion && sdkVersion)) return [3 /*break*/, 15];
189
213
  return [4 /*yield*/, (0, clack_utils_1.confirmContinueIfPackageVersionNotSupported)({
190
214
  packageName: 'Sentry React Native SDK',
191
215
  packageVersion: sdkVersion,
192
216
  packageId: exports.RN_SDK_PACKAGE,
193
- acceptableVersions: exports.SDK_EXPO_SUPPORTED_SDK_RANGE,
194
- note: "Please upgrade to ".concat(exports.SDK_EXPO_SUPPORTED_SDK_RANGE, " to continue with the wizard in this Expo project."),
217
+ acceptableVersions: exports.EXPO_SUPPORTED_SDK_RANGE,
218
+ note: "Please upgrade to ".concat(exports.EXPO_SUPPORTED_SDK_RANGE, " to continue with the wizard in this Expo project."),
195
219
  })];
196
- case 8:
220
+ case 13:
197
221
  _d.sent();
198
222
  return [4 /*yield*/, (0, clack_utils_1.confirmContinueIfPackageVersionNotSupported)({
199
223
  packageName: 'Expo SDK',
@@ -202,11 +226,11 @@ function runReactNativeWizardWithTelemetry(options) {
202
226
  acceptableVersions: exports.SUPPORTED_EXPO_RANGE,
203
227
  note: "Please upgrade to ".concat(exports.SUPPORTED_EXPO_RANGE, " to continue with the wizard in this Expo project."),
204
228
  })];
205
- case 9:
229
+ case 14:
206
230
  _d.sent();
207
- _d.label = 10;
208
- case 10: return [4 /*yield*/, (0, clack_utils_1.getOrAskForProjectData)(options, 'react-native')];
209
- case 11:
231
+ _d.label = 15;
232
+ case 15: return [4 /*yield*/, (0, clack_utils_1.getOrAskForProjectData)(options, 'react-native')];
233
+ case 16:
210
234
  _c = _d.sent(), selectedProject = _c.selectedProject, authToken = _c.authToken, sentryUrl = _c.sentryUrl;
211
235
  orgSlug = selectedProject.organization.slug;
212
236
  projectSlug = selectedProject.slug;
@@ -220,51 +244,51 @@ function runReactNativeWizardWithTelemetry(options) {
220
244
  return [4 /*yield*/, (0, telemetry_1.traceStep)('patch-app-js', function () {
221
245
  return (0, javascript_1.addSentryInit)({ dsn: selectedProject.keys[0].dsn.public });
222
246
  })];
223
- case 12:
247
+ case 17:
224
248
  _d.sent();
225
- if (!isExpo) return [3 /*break*/, 15];
249
+ if (!isExpo) return [3 /*break*/, 20];
226
250
  return [4 /*yield*/, (0, telemetry_1.traceStep)('patch-expo-app-config', function () {
227
251
  return (0, expo_1.patchExpoAppConfig)(cliConfig);
228
252
  })];
229
- case 13:
253
+ case 18:
230
254
  _d.sent();
231
255
  return [4 /*yield*/, (0, telemetry_1.traceStep)('add-expo-env-local', function () { return (0, expo_env_file_1.addExpoEnvLocal)(cliConfig); })];
232
- case 14:
256
+ case 19:
233
257
  _d.sent();
234
- _d.label = 15;
235
- case 15:
236
- if (!isExpo) return [3 /*break*/, 17];
258
+ _d.label = 20;
259
+ case 20:
260
+ if (!isExpo) return [3 /*break*/, 22];
237
261
  return [4 /*yield*/, (0, telemetry_1.traceStep)('patch-metro-config', expo_metro_1.addSentryToExpoMetroConfig)];
238
- case 16:
262
+ case 21:
239
263
  _d.sent();
240
- return [3 /*break*/, 19];
241
- case 17: return [4 /*yield*/, (0, telemetry_1.traceStep)('patch-metro-config', function () {
264
+ return [3 /*break*/, 24];
265
+ case 22: return [4 /*yield*/, (0, telemetry_1.traceStep)('patch-metro-config', function () {
242
266
  return addSentryToMetroConfig({ sdkVersion: sdkVersion });
243
267
  })];
244
- case 18:
268
+ case 23:
245
269
  _d.sent();
246
- _d.label = 19;
247
- case 19:
248
- if (!fs.existsSync('ios')) return [3 /*break*/, 21];
270
+ _d.label = 24;
271
+ case 24:
272
+ if (!fs.existsSync('ios')) return [3 /*break*/, 26];
249
273
  Sentry.setTag('patch-ios', true);
250
274
  return [4 /*yield*/, (0, telemetry_1.traceStep)('patch-xcode-files', function () {
251
275
  return patchXcodeFiles(cliConfig, { sdkVersion: sdkVersion });
252
276
  })];
253
- case 20:
277
+ case 25:
254
278
  _d.sent();
255
- _d.label = 21;
256
- case 21:
257
- if (!fs.existsSync('android')) return [3 /*break*/, 23];
279
+ _d.label = 26;
280
+ case 26:
281
+ if (!fs.existsSync('android')) return [3 /*break*/, 28];
258
282
  Sentry.setTag('patch-android', true);
259
283
  return [4 /*yield*/, (0, telemetry_1.traceStep)('patch-android-files', function () { return patchAndroidFiles(cliConfig); })];
260
- case 22:
284
+ case 27:
261
285
  _d.sent();
262
- _d.label = 23;
263
- case 23: return [4 /*yield*/, (0, clack_utils_1.runPrettierIfInstalled)()];
264
- case 24:
286
+ _d.label = 28;
287
+ case 28: return [4 /*yield*/, (0, clack_utils_1.runPrettierIfInstalled)()];
288
+ case 29:
265
289
  _d.sent();
266
290
  return [4 /*yield*/, confirmFirstSentryException(sentryUrl, orgSlug, projectId)];
267
- case 25:
291
+ case 30:
268
292
  confirmedFirstException = _d.sent();
269
293
  Sentry.setTag('user-confirmed-first-error', confirmedFirstException);
270
294
  if (confirmedFirstException) {
@@ -284,7 +308,7 @@ function addSentryToMetroConfig(_a) {
284
308
  if (sdkVersion &&
285
309
  (0, semver_1.fulfillsVersionRange)({
286
310
  version: sdkVersion,
287
- acceptableVersions: exports.SDK_SENTRY_METRO_WITH_SENTRY_CONFIG_SUPPORTED_SDK_RANGE,
311
+ acceptableVersions: exports.METRO_WITH_SENTRY_CONFIG_SUPPORTED_SDK_RANGE,
288
312
  canBeLatest: true,
289
313
  })) {
290
314
  return (0, metro_1.patchMetroWithSentryConfig)();
@@ -292,7 +316,7 @@ function addSentryToMetroConfig(_a) {
292
316
  if (sdkVersion &&
293
317
  (0, semver_1.fulfillsVersionRange)({
294
318
  version: sdkVersion,
295
- acceptableVersions: exports.SDK_SENTRY_METRO_PLUGIN_SUPPORTED_SDK_RANGE,
319
+ acceptableVersions: exports.SENTRY_METRO_PLUGIN_SUPPORTED_SDK_RANGE,
296
320
  canBeLatest: true,
297
321
  })) {
298
322
  return (0, metro_1.patchMetroConfigWithSentrySerializer)();
@@ -359,7 +383,7 @@ function patchXcodeFiles(config, context) {
359
383
  if (context.sdkVersion &&
360
384
  (0, semver_1.fulfillsVersionRange)({
361
385
  version: context.sdkVersion,
362
- acceptableVersions: exports.SDK_XCODE_SCRIPTS_SUPPORTED_SDK_RANGE,
386
+ acceptableVersions: exports.XCODE_SCRIPTS_SUPPORTED_SDK_RANGE,
363
387
  canBeLatest: true,
364
388
  })) {
365
389
  (0, xcode_1.patchBundlePhase)(bundlePhase, xcode_1.addSentryWithBundledScriptsToBundleShellScript);
@@ -375,7 +399,7 @@ function patchXcodeFiles(config, context) {
375
399
  if (context.sdkVersion &&
376
400
  (0, semver_1.fulfillsVersionRange)({
377
401
  version: context.sdkVersion,
378
- acceptableVersions: exports.SDK_XCODE_SCRIPTS_SUPPORTED_SDK_RANGE,
402
+ acceptableVersions: exports.XCODE_SCRIPTS_SUPPORTED_SDK_RANGE,
379
403
  canBeLatest: true,
380
404
  })) {
381
405
  (0, xcode_1.addDebugFilesUploadPhaseWithBundledScripts)(xcodeProject, {
@@ -1 +1 @@
1
- {"version":3,"file":"react-native-wizard.js","sourceRoot":"","sources":["../../../src/react-native/react-native-wizard.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable max-lines */\n// @ts-ignore - clack is ESM and TS complains about that. It works though\nimport clack from '@clack/prompts';\nimport chalk from 'chalk';\nimport * as fs from 'fs';\n\nimport {\n CliSetupConfigContent,\n abortIfCancelled,\n addSentryCliConfig,\n confirmContinueIfNoOrDirtyGitRepo,\n confirmContinueIfPackageVersionNotSupported,\n ensurePackageIsInstalled,\n getOrAskForProjectData,\n getPackageDotJson,\n installPackage,\n printWelcome,\n propertiesCliSetupConfig,\n runPrettierIfInstalled,\n} from '../utils/clack-utils';\nimport { getPackageVersion, hasPackageInstalled } from '../utils/package-json';\nimport { podInstall } from '../apple/cocoapod';\nimport { platform } from 'os';\nimport {\n getValidExistingBuildPhases,\n findBundlePhase,\n patchBundlePhase,\n findDebugFilesUploadPhase,\n addDebugFilesUploadPhaseWithCli,\n writeXcodeProject,\n addSentryWithCliToBundleShellScript,\n addSentryWithBundledScriptsToBundleShellScript,\n addDebugFilesUploadPhaseWithBundledScripts,\n} from './xcode';\nimport {\n doesAppBuildGradleIncludeRNSentryGradlePlugin,\n addRNSentryGradlePlugin,\n writeAppBuildGradle,\n} from './gradle';\nimport { runReactNativeUninstall } from './uninstall';\nimport { APP_BUILD_GRADLE, XCODE_PROJECT, getFirstMatchedPath } from './glob';\nimport { ReactNativeWizardOptions } from './options';\nimport { addSentryInit } from './javascript';\nimport { traceStep, withTelemetry } from '../telemetry';\nimport * as Sentry from '@sentry/node';\nimport { fulfillsVersionRange } from '../utils/semver';\nimport { getIssueStreamUrl } from '../utils/url';\nimport {\n patchMetroConfigWithSentrySerializer,\n patchMetroWithSentryConfig,\n} from './metro';\nimport { patchExpoAppConfig, printSentryExpoMigrationOutro } from './expo';\nimport { addSentryToExpoMetroConfig } from './expo-metro';\nimport { addExpoEnvLocal } from './expo-env-file';\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\nconst xcode = require('xcode');\n\nexport const RN_SDK_PACKAGE = '@sentry/react-native';\n\nexport const RN_PACKAGE = 'react-native';\nexport const RN_HUMAN_NAME = 'React Native';\n\nexport const SUPPORTED_RN_RANGE = '>=0.69.0';\nexport const SUPPORTED_EXPO_RANGE = '>=50.0.0';\n\n/**\n * The following SDK version ship with bundled Xcode scripts\n * which simplifies the Xcode Build Phases setup.\n */\nexport const SDK_XCODE_SCRIPTS_SUPPORTED_SDK_RANGE = '>=5.11.0';\n\n/**\n * The following SDK version ship with Sentry Metro plugin\n */\nexport const SDK_SENTRY_METRO_PLUGIN_SUPPORTED_SDK_RANGE = '>=5.11.0';\n\n/**\n * The following SDK version ship with bundled Expo plugin\n */\nexport const SDK_EXPO_SUPPORTED_SDK_RANGE = `>=5.16.0`;\n\n// The following SDK version shipped `withSentryConfig`\nexport const SDK_SENTRY_METRO_WITH_SENTRY_CONFIG_SUPPORTED_SDK_RANGE =\n '>=5.17.0';\n\nexport type RNCliSetupConfigContent = Pick<\n Required<CliSetupConfigContent>,\n 'authToken' | 'org' | 'project' | 'url'\n>;\n\nexport async function runReactNativeWizard(\n params: ReactNativeWizardOptions,\n): Promise<void> {\n return withTelemetry(\n {\n enabled: params.telemetryEnabled,\n integration: 'react-native',\n wizardOptions: params,\n },\n () => runReactNativeWizardWithTelemetry(params),\n );\n}\n\nexport async function runReactNativeWizardWithTelemetry(\n options: ReactNativeWizardOptions,\n): Promise<void> {\n if (options.uninstall) {\n Sentry.setTag('uninstall', true);\n return runReactNativeUninstall(options);\n }\n\n printWelcome({\n wizardName: 'Sentry React Native Wizard',\n promoCode: options.promoCode,\n telemetryEnabled: options.telemetryEnabled,\n });\n\n await confirmContinueIfNoOrDirtyGitRepo();\n\n const packageJson = await getPackageDotJson();\n const hasInstalled = (dep: string) => hasPackageInstalled(dep, packageJson);\n\n if (hasInstalled('sentry-expo')) {\n Sentry.setTag('has-sentry-expo-installed', true);\n printSentryExpoMigrationOutro();\n return;\n }\n\n await ensurePackageIsInstalled(packageJson, RN_PACKAGE, RN_HUMAN_NAME);\n\n const rnVersion = getPackageVersion(RN_PACKAGE, packageJson);\n if (rnVersion) {\n await confirmContinueIfPackageVersionNotSupported({\n packageName: RN_HUMAN_NAME,\n packageVersion: rnVersion,\n packageId: RN_PACKAGE,\n acceptableVersions: SUPPORTED_RN_RANGE,\n note: `Please upgrade to ${SUPPORTED_RN_RANGE} if you wish to use the Sentry Wizard.\nOr setup using ${chalk.cyan(\n 'https://docs.sentry.io/platforms/react-native/manual-setup/manual-setup/',\n )}`,\n });\n }\n\n await installPackage({\n packageName: RN_SDK_PACKAGE,\n alreadyInstalled: hasPackageInstalled(RN_SDK_PACKAGE, packageJson),\n });\n const sdkVersion = getPackageVersion(\n RN_SDK_PACKAGE,\n await getPackageDotJson(),\n );\n\n const expoVersion = getPackageVersion('expo', packageJson);\n const isExpo = !!expoVersion;\n if (expoVersion && sdkVersion) {\n await confirmContinueIfPackageVersionNotSupported({\n packageName: 'Sentry React Native SDK',\n packageVersion: sdkVersion,\n packageId: RN_SDK_PACKAGE,\n acceptableVersions: SDK_EXPO_SUPPORTED_SDK_RANGE,\n note: `Please upgrade to ${SDK_EXPO_SUPPORTED_SDK_RANGE} to continue with the wizard in this Expo project.`,\n });\n await confirmContinueIfPackageVersionNotSupported({\n packageName: 'Expo SDK',\n packageVersion: expoVersion,\n packageId: 'expo',\n acceptableVersions: SUPPORTED_EXPO_RANGE,\n note: `Please upgrade to ${SUPPORTED_EXPO_RANGE} to continue with the wizard in this Expo project.`,\n });\n }\n\n const { selectedProject, authToken, sentryUrl } =\n await getOrAskForProjectData(options, 'react-native');\n const orgSlug = selectedProject.organization.slug;\n const projectSlug = selectedProject.slug;\n const projectId = selectedProject.id;\n const cliConfig: RNCliSetupConfigContent = {\n authToken,\n org: orgSlug,\n project: projectSlug,\n url: sentryUrl,\n };\n\n await traceStep('patch-app-js', () =>\n addSentryInit({ dsn: selectedProject.keys[0].dsn.public }),\n );\n\n if (isExpo) {\n await traceStep('patch-expo-app-config', () =>\n patchExpoAppConfig(cliConfig),\n );\n await traceStep('add-expo-env-local', () => addExpoEnvLocal(cliConfig));\n }\n\n if (isExpo) {\n await traceStep('patch-metro-config', addSentryToExpoMetroConfig);\n } else {\n await traceStep('patch-metro-config', () =>\n addSentryToMetroConfig({ sdkVersion }),\n );\n }\n\n if (fs.existsSync('ios')) {\n Sentry.setTag('patch-ios', true);\n await traceStep('patch-xcode-files', () =>\n patchXcodeFiles(cliConfig, { sdkVersion }),\n );\n }\n\n if (fs.existsSync('android')) {\n Sentry.setTag('patch-android', true);\n await traceStep('patch-android-files', () => patchAndroidFiles(cliConfig));\n }\n\n await runPrettierIfInstalled();\n\n const confirmedFirstException = await confirmFirstSentryException(\n sentryUrl,\n orgSlug,\n projectId,\n );\n\n Sentry.setTag('user-confirmed-first-error', confirmedFirstException);\n\n if (confirmedFirstException) {\n clack.outro(\n `${chalk.green('Everything is set up!')}\n\n ${chalk.dim(\n 'If you encounter any issues, let us know here: https://github.com/getsentry/sentry-react-native/issues',\n )}`,\n );\n } else {\n clack.outro(\n `${chalk.dim(\n 'Let us know here: https://github.com/getsentry/sentry-react-native/issues',\n )}`,\n );\n }\n}\n\nfunction addSentryToMetroConfig({\n sdkVersion,\n}: {\n sdkVersion: string | undefined;\n}) {\n if (\n sdkVersion &&\n fulfillsVersionRange({\n version: sdkVersion,\n acceptableVersions:\n SDK_SENTRY_METRO_WITH_SENTRY_CONFIG_SUPPORTED_SDK_RANGE,\n canBeLatest: true,\n })\n ) {\n return patchMetroWithSentryConfig();\n }\n\n if (\n sdkVersion &&\n fulfillsVersionRange({\n version: sdkVersion,\n acceptableVersions: SDK_SENTRY_METRO_PLUGIN_SUPPORTED_SDK_RANGE,\n canBeLatest: true,\n })\n ) {\n return patchMetroConfigWithSentrySerializer();\n }\n}\n\nasync function confirmFirstSentryException(\n url: string,\n orgSlug: string,\n projectId: string,\n) {\n const issuesStreamUrl = getIssueStreamUrl({ url, orgSlug, projectId });\n\n clack.log\n .step(`To make sure everything is set up correctly, put the following code snippet into your application.\nThe snippet will create a button that, when tapped, sends a test event to Sentry.\n\nAfter that check your project issues:\n\n${chalk.cyan(issuesStreamUrl)}`);\n\n // We want the code snippet to be easily copy-pasteable, without any clack artifacts\n // eslint-disable-next-line no-console\n console.log(\n chalk.greenBright(`\n<Button title='Try!' onPress={ () => { Sentry.captureException(new Error('First error')) }}/>\n`),\n );\n\n const firstErrorConfirmed = clack.confirm({\n message: `Have you successfully sent a test event?`,\n });\n\n return firstErrorConfirmed;\n}\n\nasync function patchXcodeFiles(\n config: RNCliSetupConfigContent,\n context: {\n sdkVersion: string | undefined;\n },\n) {\n await addSentryCliConfig(config, {\n ...propertiesCliSetupConfig,\n name: 'source maps and iOS debug files',\n filename: 'ios/sentry.properties',\n gitignore: false,\n });\n\n if (platform() === 'darwin' && (await confirmPodInstall())) {\n await traceStep('pod-install', () => podInstall('ios'));\n }\n\n const xcodeProjectPath = traceStep('find-xcode-project', () =>\n getFirstMatchedPath(XCODE_PROJECT),\n );\n Sentry.setTag(\n 'xcode-project-status',\n xcodeProjectPath ? 'found' : 'not-found',\n );\n if (!xcodeProjectPath) {\n clack.log.warn(\n `Could not find Xcode project file using ${chalk.cyan(XCODE_PROJECT)}.`,\n );\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const [xcodeProject, buildPhasesMap] = traceStep(\n 'parse-xcode-project',\n () => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n const project = xcode.project(xcodeProjectPath);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n project.parseSync();\n\n const map = getValidExistingBuildPhases(project);\n return [project, map];\n },\n );\n Sentry.setTag('xcode-project-status', 'parsed');\n\n traceStep('patch-bundle-phase', () => {\n const bundlePhase = findBundlePhase(buildPhasesMap);\n Sentry.setTag(\n 'xcode-bundle-phase-status',\n bundlePhase ? 'found' : 'not-found',\n );\n if (\n context.sdkVersion &&\n fulfillsVersionRange({\n version: context.sdkVersion,\n acceptableVersions: SDK_XCODE_SCRIPTS_SUPPORTED_SDK_RANGE,\n canBeLatest: true,\n })\n ) {\n patchBundlePhase(\n bundlePhase,\n addSentryWithBundledScriptsToBundleShellScript,\n );\n } else {\n patchBundlePhase(bundlePhase, addSentryWithCliToBundleShellScript);\n }\n Sentry.setTag('xcode-bundle-phase-status', 'patched');\n });\n\n traceStep('add-debug-files-upload-phase', () => {\n const debugFilesUploadPhaseExists =\n !!findDebugFilesUploadPhase(buildPhasesMap);\n Sentry.setTag(\n 'xcode-debug-files-upload-phase-status',\n debugFilesUploadPhaseExists ? 'already-exists' : undefined,\n );\n if (\n context.sdkVersion &&\n fulfillsVersionRange({\n version: context.sdkVersion,\n acceptableVersions: SDK_XCODE_SCRIPTS_SUPPORTED_SDK_RANGE,\n canBeLatest: true,\n })\n ) {\n addDebugFilesUploadPhaseWithBundledScripts(xcodeProject, {\n debugFilesUploadPhaseExists,\n });\n } else {\n addDebugFilesUploadPhaseWithCli(xcodeProject, {\n debugFilesUploadPhaseExists,\n });\n }\n Sentry.setTag('xcode-debug-files-upload-phase-status', 'added');\n });\n\n traceStep('write-xcode-project', () => {\n writeXcodeProject(xcodeProjectPath, xcodeProject);\n });\n Sentry.setTag('xcode-project-status', 'patched');\n}\n\nasync function patchAndroidFiles(config: RNCliSetupConfigContent) {\n await addSentryCliConfig(config, {\n ...propertiesCliSetupConfig,\n name: 'source maps and iOS debug files',\n filename: 'android/sentry.properties',\n gitignore: false,\n });\n\n const appBuildGradlePath = traceStep('find-app-build-gradle', () =>\n getFirstMatchedPath(APP_BUILD_GRADLE),\n );\n Sentry.setTag(\n 'app-build-gradle-status',\n appBuildGradlePath ? 'found' : 'not-found',\n );\n if (!appBuildGradlePath) {\n clack.log.warn(\n `Could not find Android ${chalk.cyan(\n 'app/build.gradle',\n )} file using ${chalk.cyan(APP_BUILD_GRADLE)}.`,\n );\n return;\n }\n\n const appBuildGradle = traceStep('read-app-build-gradle', () =>\n fs.readFileSync(appBuildGradlePath, 'utf-8'),\n );\n const includesSentry =\n doesAppBuildGradleIncludeRNSentryGradlePlugin(appBuildGradle);\n if (includesSentry) {\n Sentry.setTag('app-build-gradle-status', 'already-includes-sentry');\n clack.log.warn(\n `Android ${chalk.cyan('app/build.gradle')} file already includes Sentry.`,\n );\n return;\n }\n\n const patchedAppBuildGradle = traceStep('add-rn-sentry-gradle-plugin', () =>\n addRNSentryGradlePlugin(appBuildGradle),\n );\n if (!doesAppBuildGradleIncludeRNSentryGradlePlugin(patchedAppBuildGradle)) {\n Sentry.setTag(\n 'app-build-gradle-status',\n 'failed-to-add-rn-sentry-gradle-plugin',\n );\n clack.log.warn(\n `Could not add Sentry RN Gradle Plugin to ${chalk.cyan(\n 'app/build.gradle',\n )}.`,\n );\n return;\n }\n\n Sentry.setTag('app-build-gradle-status', 'added-rn-sentry-gradle-plugin');\n clack.log.success(\n `Added Sentry RN Gradle Plugin to ${chalk.bold('app/build.gradle')}.`,\n );\n\n traceStep('write-app-build-gradle', () =>\n writeAppBuildGradle(appBuildGradlePath, patchedAppBuildGradle),\n );\n clack.log.success(\n chalk.green(`Android ${chalk.cyan('app/build.gradle')} saved.`),\n );\n}\n\nasync function confirmPodInstall(): Promise<boolean> {\n return traceStep('confirm-pod-install', async () => {\n const continueWithPodInstall = await abortIfCancelled(\n clack.select({\n message: 'Do you want to run `pod install` now?',\n options: [\n {\n value: true,\n label: 'Yes',\n hint: 'Recommended for smaller projects, this might take several minutes',\n },\n { value: false, label: `No, I'll do it later` },\n ],\n initialValue: true,\n }),\n );\n Sentry.setTag('continue-with-pod-install', continueWithPodInstall);\n return continueWithPodInstall;\n });\n}\n"]}
1
+ {"version":3,"file":"react-native-wizard.js","sourceRoot":"","sources":["../../../src/react-native/react-native-wizard.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable max-lines */\n// @ts-ignore - clack is ESM and TS complains about that. It works though\nimport clack from '@clack/prompts';\nimport chalk from 'chalk';\nimport * as fs from 'fs';\n\nimport {\n CliSetupConfigContent,\n abortIfCancelled,\n addSentryCliConfig,\n confirmContinueIfNoOrDirtyGitRepo,\n confirmContinueIfPackageVersionNotSupported,\n ensurePackageIsInstalled,\n getOrAskForProjectData,\n getPackageDotJson,\n installPackage,\n printWelcome,\n propertiesCliSetupConfig,\n runPrettierIfInstalled,\n abort,\n} from '../utils/clack-utils';\nimport { getPackageVersion, hasPackageInstalled } from '../utils/package-json';\nimport { podInstall } from '../apple/cocoapod';\nimport { platform } from 'os';\nimport {\n getValidExistingBuildPhases,\n findBundlePhase,\n patchBundlePhase,\n findDebugFilesUploadPhase,\n addDebugFilesUploadPhaseWithCli,\n writeXcodeProject,\n addSentryWithCliToBundleShellScript,\n addSentryWithBundledScriptsToBundleShellScript,\n addDebugFilesUploadPhaseWithBundledScripts,\n} from './xcode';\nimport {\n doesAppBuildGradleIncludeRNSentryGradlePlugin,\n addRNSentryGradlePlugin,\n writeAppBuildGradle,\n} from './gradle';\nimport { runReactNativeUninstall } from './uninstall';\nimport { APP_BUILD_GRADLE, XCODE_PROJECT, getFirstMatchedPath } from './glob';\nimport { ReactNativeWizardOptions } from './options';\nimport { addSentryInit } from './javascript';\nimport { traceStep, withTelemetry } from '../telemetry';\nimport * as Sentry from '@sentry/node';\nimport { fulfillsVersionRange } from '../utils/semver';\nimport { getIssueStreamUrl } from '../utils/url';\nimport {\n patchMetroConfigWithSentrySerializer,\n patchMetroWithSentryConfig,\n} from './metro';\nimport { patchExpoAppConfig, printSentryExpoMigrationOutro } from './expo';\nimport { addSentryToExpoMetroConfig } from './expo-metro';\nimport { addExpoEnvLocal } from './expo-env-file';\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\nconst xcode = require('xcode');\n\nexport const RN_SDK_PACKAGE = '@sentry/react-native';\nexport const RN_SDK_SUPPORTED_RANGE = '>=5.0.0';\n\nexport const RN_PACKAGE = 'react-native';\nexport const RN_HUMAN_NAME = 'React Native';\n\nexport const SUPPORTED_RN_RANGE = '>=0.69.0';\nexport const SUPPORTED_EXPO_RANGE = '>=50.0.0';\n\n/**\n * The following SDK version ship with bundled Xcode scripts\n * which simplifies the Xcode Build Phases setup.\n */\nexport const XCODE_SCRIPTS_SUPPORTED_SDK_RANGE = '>=5.11.0';\n\n/**\n * The following SDK version ship with Sentry Metro plugin\n */\nexport const SENTRY_METRO_PLUGIN_SUPPORTED_SDK_RANGE = '>=5.11.0';\n\n/**\n * The following SDK version ship with bundled Expo plugin\n */\nexport const EXPO_SUPPORTED_SDK_RANGE = `>=5.16.0`;\n\n// The following SDK version shipped `withSentryConfig`\nexport const METRO_WITH_SENTRY_CONFIG_SUPPORTED_SDK_RANGE = '>=5.17.0';\n\nexport type RNCliSetupConfigContent = Pick<\n Required<CliSetupConfigContent>,\n 'authToken' | 'org' | 'project' | 'url'\n>;\n\nexport async function runReactNativeWizard(\n params: ReactNativeWizardOptions,\n): Promise<void> {\n return withTelemetry(\n {\n enabled: params.telemetryEnabled,\n integration: 'react-native',\n wizardOptions: params,\n },\n () => runReactNativeWizardWithTelemetry(params),\n );\n}\n\nexport async function runReactNativeWizardWithTelemetry(\n options: ReactNativeWizardOptions,\n): Promise<void> {\n if (options.uninstall) {\n Sentry.setTag('uninstall', true);\n return runReactNativeUninstall(options);\n }\n\n printWelcome({\n wizardName: 'Sentry React Native Wizard',\n promoCode: options.promoCode,\n telemetryEnabled: options.telemetryEnabled,\n });\n\n await confirmContinueIfNoOrDirtyGitRepo();\n\n const packageJson = await getPackageDotJson();\n const hasInstalled = (dep: string) => hasPackageInstalled(dep, packageJson);\n\n if (hasInstalled('sentry-expo')) {\n Sentry.setTag('has-sentry-expo-installed', true);\n printSentryExpoMigrationOutro();\n return;\n }\n\n await ensurePackageIsInstalled(packageJson, RN_PACKAGE, RN_HUMAN_NAME);\n\n const rnVersion = getPackageVersion(RN_PACKAGE, packageJson);\n if (rnVersion) {\n await confirmContinueIfPackageVersionNotSupported({\n packageName: RN_HUMAN_NAME,\n packageVersion: rnVersion,\n packageId: RN_PACKAGE,\n acceptableVersions: SUPPORTED_RN_RANGE,\n note: `Please upgrade to ${SUPPORTED_RN_RANGE} if you wish to use the Sentry Wizard.\nOr setup using ${chalk.cyan(\n 'https://docs.sentry.io/platforms/react-native/manual-setup/manual-setup/',\n )}`,\n });\n }\n\n await installPackage({\n packageName: RN_SDK_PACKAGE,\n alreadyInstalled: hasPackageInstalled(RN_SDK_PACKAGE, packageJson),\n });\n const sdkVersion = getPackageVersion(\n RN_SDK_PACKAGE,\n await getPackageDotJson(),\n );\n if (sdkVersion) {\n await confirmContinueIfPackageVersionNotSupported({\n packageName: 'Sentry React Native SDK',\n packageVersion: sdkVersion,\n packageId: RN_SDK_PACKAGE,\n acceptableVersions: RN_SDK_SUPPORTED_RANGE,\n note: `Please upgrade to ${RN_SDK_SUPPORTED_RANGE} to continue with the wizard in this project.`,\n });\n } else {\n const continueWithoutSdk = await abortIfCancelled(\n clack.confirm({\n message:\n 'Could not detect Sentry React Native SDK version. Do you want to continue anyway?',\n }),\n );\n if (!continueWithoutSdk) {\n await abort(undefined, 0);\n }\n }\n Sentry.setTag(`detected-sentry-react-native-sdk-version`, sdkVersion);\n\n const expoVersion = getPackageVersion('expo', packageJson);\n const isExpo = !!expoVersion;\n if (expoVersion && sdkVersion) {\n await confirmContinueIfPackageVersionNotSupported({\n packageName: 'Sentry React Native SDK',\n packageVersion: sdkVersion,\n packageId: RN_SDK_PACKAGE,\n acceptableVersions: EXPO_SUPPORTED_SDK_RANGE,\n note: `Please upgrade to ${EXPO_SUPPORTED_SDK_RANGE} to continue with the wizard in this Expo project.`,\n });\n await confirmContinueIfPackageVersionNotSupported({\n packageName: 'Expo SDK',\n packageVersion: expoVersion,\n packageId: 'expo',\n acceptableVersions: SUPPORTED_EXPO_RANGE,\n note: `Please upgrade to ${SUPPORTED_EXPO_RANGE} to continue with the wizard in this Expo project.`,\n });\n }\n\n const { selectedProject, authToken, sentryUrl } =\n await getOrAskForProjectData(options, 'react-native');\n const orgSlug = selectedProject.organization.slug;\n const projectSlug = selectedProject.slug;\n const projectId = selectedProject.id;\n const cliConfig: RNCliSetupConfigContent = {\n authToken,\n org: orgSlug,\n project: projectSlug,\n url: sentryUrl,\n };\n\n await traceStep('patch-app-js', () =>\n addSentryInit({ dsn: selectedProject.keys[0].dsn.public }),\n );\n\n if (isExpo) {\n await traceStep('patch-expo-app-config', () =>\n patchExpoAppConfig(cliConfig),\n );\n await traceStep('add-expo-env-local', () => addExpoEnvLocal(cliConfig));\n }\n\n if (isExpo) {\n await traceStep('patch-metro-config', addSentryToExpoMetroConfig);\n } else {\n await traceStep('patch-metro-config', () =>\n addSentryToMetroConfig({ sdkVersion }),\n );\n }\n\n if (fs.existsSync('ios')) {\n Sentry.setTag('patch-ios', true);\n await traceStep('patch-xcode-files', () =>\n patchXcodeFiles(cliConfig, { sdkVersion }),\n );\n }\n\n if (fs.existsSync('android')) {\n Sentry.setTag('patch-android', true);\n await traceStep('patch-android-files', () => patchAndroidFiles(cliConfig));\n }\n\n await runPrettierIfInstalled();\n\n const confirmedFirstException = await confirmFirstSentryException(\n sentryUrl,\n orgSlug,\n projectId,\n );\n\n Sentry.setTag('user-confirmed-first-error', confirmedFirstException);\n\n if (confirmedFirstException) {\n clack.outro(\n `${chalk.green('Everything is set up!')}\n\n ${chalk.dim(\n 'If you encounter any issues, let us know here: https://github.com/getsentry/sentry-react-native/issues',\n )}`,\n );\n } else {\n clack.outro(\n `${chalk.dim(\n 'Let us know here: https://github.com/getsentry/sentry-react-native/issues',\n )}`,\n );\n }\n}\n\nfunction addSentryToMetroConfig({\n sdkVersion,\n}: {\n sdkVersion: string | undefined;\n}) {\n if (\n sdkVersion &&\n fulfillsVersionRange({\n version: sdkVersion,\n acceptableVersions: METRO_WITH_SENTRY_CONFIG_SUPPORTED_SDK_RANGE,\n canBeLatest: true,\n })\n ) {\n return patchMetroWithSentryConfig();\n }\n\n if (\n sdkVersion &&\n fulfillsVersionRange({\n version: sdkVersion,\n acceptableVersions: SENTRY_METRO_PLUGIN_SUPPORTED_SDK_RANGE,\n canBeLatest: true,\n })\n ) {\n return patchMetroConfigWithSentrySerializer();\n }\n}\n\nasync function confirmFirstSentryException(\n url: string,\n orgSlug: string,\n projectId: string,\n) {\n const issuesStreamUrl = getIssueStreamUrl({ url, orgSlug, projectId });\n\n clack.log\n .step(`To make sure everything is set up correctly, put the following code snippet into your application.\nThe snippet will create a button that, when tapped, sends a test event to Sentry.\n\nAfter that check your project issues:\n\n${chalk.cyan(issuesStreamUrl)}`);\n\n // We want the code snippet to be easily copy-pasteable, without any clack artifacts\n // eslint-disable-next-line no-console\n console.log(\n chalk.greenBright(`\n<Button title='Try!' onPress={ () => { Sentry.captureException(new Error('First error')) }}/>\n`),\n );\n\n const firstErrorConfirmed = clack.confirm({\n message: `Have you successfully sent a test event?`,\n });\n\n return firstErrorConfirmed;\n}\n\nasync function patchXcodeFiles(\n config: RNCliSetupConfigContent,\n context: {\n sdkVersion: string | undefined;\n },\n) {\n await addSentryCliConfig(config, {\n ...propertiesCliSetupConfig,\n name: 'source maps and iOS debug files',\n filename: 'ios/sentry.properties',\n gitignore: false,\n });\n\n if (platform() === 'darwin' && (await confirmPodInstall())) {\n await traceStep('pod-install', () => podInstall('ios'));\n }\n\n const xcodeProjectPath = traceStep('find-xcode-project', () =>\n getFirstMatchedPath(XCODE_PROJECT),\n );\n Sentry.setTag(\n 'xcode-project-status',\n xcodeProjectPath ? 'found' : 'not-found',\n );\n if (!xcodeProjectPath) {\n clack.log.warn(\n `Could not find Xcode project file using ${chalk.cyan(XCODE_PROJECT)}.`,\n );\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const [xcodeProject, buildPhasesMap] = traceStep(\n 'parse-xcode-project',\n () => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n const project = xcode.project(xcodeProjectPath);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n project.parseSync();\n\n const map = getValidExistingBuildPhases(project);\n return [project, map];\n },\n );\n Sentry.setTag('xcode-project-status', 'parsed');\n\n traceStep('patch-bundle-phase', () => {\n const bundlePhase = findBundlePhase(buildPhasesMap);\n Sentry.setTag(\n 'xcode-bundle-phase-status',\n bundlePhase ? 'found' : 'not-found',\n );\n if (\n context.sdkVersion &&\n fulfillsVersionRange({\n version: context.sdkVersion,\n acceptableVersions: XCODE_SCRIPTS_SUPPORTED_SDK_RANGE,\n canBeLatest: true,\n })\n ) {\n patchBundlePhase(\n bundlePhase,\n addSentryWithBundledScriptsToBundleShellScript,\n );\n } else {\n patchBundlePhase(bundlePhase, addSentryWithCliToBundleShellScript);\n }\n Sentry.setTag('xcode-bundle-phase-status', 'patched');\n });\n\n traceStep('add-debug-files-upload-phase', () => {\n const debugFilesUploadPhaseExists =\n !!findDebugFilesUploadPhase(buildPhasesMap);\n Sentry.setTag(\n 'xcode-debug-files-upload-phase-status',\n debugFilesUploadPhaseExists ? 'already-exists' : undefined,\n );\n if (\n context.sdkVersion &&\n fulfillsVersionRange({\n version: context.sdkVersion,\n acceptableVersions: XCODE_SCRIPTS_SUPPORTED_SDK_RANGE,\n canBeLatest: true,\n })\n ) {\n addDebugFilesUploadPhaseWithBundledScripts(xcodeProject, {\n debugFilesUploadPhaseExists,\n });\n } else {\n addDebugFilesUploadPhaseWithCli(xcodeProject, {\n debugFilesUploadPhaseExists,\n });\n }\n Sentry.setTag('xcode-debug-files-upload-phase-status', 'added');\n });\n\n traceStep('write-xcode-project', () => {\n writeXcodeProject(xcodeProjectPath, xcodeProject);\n });\n Sentry.setTag('xcode-project-status', 'patched');\n}\n\nasync function patchAndroidFiles(config: RNCliSetupConfigContent) {\n await addSentryCliConfig(config, {\n ...propertiesCliSetupConfig,\n name: 'source maps and iOS debug files',\n filename: 'android/sentry.properties',\n gitignore: false,\n });\n\n const appBuildGradlePath = traceStep('find-app-build-gradle', () =>\n getFirstMatchedPath(APP_BUILD_GRADLE),\n );\n Sentry.setTag(\n 'app-build-gradle-status',\n appBuildGradlePath ? 'found' : 'not-found',\n );\n if (!appBuildGradlePath) {\n clack.log.warn(\n `Could not find Android ${chalk.cyan(\n 'app/build.gradle',\n )} file using ${chalk.cyan(APP_BUILD_GRADLE)}.`,\n );\n return;\n }\n\n const appBuildGradle = traceStep('read-app-build-gradle', () =>\n fs.readFileSync(appBuildGradlePath, 'utf-8'),\n );\n const includesSentry =\n doesAppBuildGradleIncludeRNSentryGradlePlugin(appBuildGradle);\n if (includesSentry) {\n Sentry.setTag('app-build-gradle-status', 'already-includes-sentry');\n clack.log.warn(\n `Android ${chalk.cyan('app/build.gradle')} file already includes Sentry.`,\n );\n return;\n }\n\n const patchedAppBuildGradle = traceStep('add-rn-sentry-gradle-plugin', () =>\n addRNSentryGradlePlugin(appBuildGradle),\n );\n if (!doesAppBuildGradleIncludeRNSentryGradlePlugin(patchedAppBuildGradle)) {\n Sentry.setTag(\n 'app-build-gradle-status',\n 'failed-to-add-rn-sentry-gradle-plugin',\n );\n clack.log.warn(\n `Could not add Sentry RN Gradle Plugin to ${chalk.cyan(\n 'app/build.gradle',\n )}.`,\n );\n return;\n }\n\n Sentry.setTag('app-build-gradle-status', 'added-rn-sentry-gradle-plugin');\n clack.log.success(\n `Added Sentry RN Gradle Plugin to ${chalk.bold('app/build.gradle')}.`,\n );\n\n traceStep('write-app-build-gradle', () =>\n writeAppBuildGradle(appBuildGradlePath, patchedAppBuildGradle),\n );\n clack.log.success(\n chalk.green(`Android ${chalk.cyan('app/build.gradle')} saved.`),\n );\n}\n\nasync function confirmPodInstall(): Promise<boolean> {\n return traceStep('confirm-pod-install', async () => {\n const continueWithPodInstall = await abortIfCancelled(\n clack.select({\n message: 'Do you want to run `pod install` now?',\n options: [\n {\n value: true,\n label: 'Yes',\n hint: 'Recommended for smaller projects, this might take several minutes',\n },\n { value: false, label: `No, I'll do it later` },\n ],\n initialValue: true,\n }),\n );\n Sentry.setTag('continue-with-pod-install', continueWithPodInstall);\n return continueWithPodInstall;\n });\n}\n"]}
@@ -320,7 +320,7 @@ function startToolSetupFlow(selctedTool, options, wizardOptions) {
320
320
  }
321
321
  function configureCI(selectedTool, authToken) {
322
322
  return __awaiter(this, void 0, void 0, function () {
323
- var isUsingCI, isCliBasedFlowTool, usesSentryCliRc, authTokenFile;
323
+ var isUsingCI, isCliBasedFlowTool, authTokenFile;
324
324
  return __generator(this, function (_a) {
325
325
  switch (_a.label) {
326
326
  case 0: return [4 /*yield*/, (0, clack_utils_1.abortIfCancelled)(prompts_1.default.select({
@@ -348,8 +348,7 @@ function configureCI(selectedTool, authToken) {
348
348
  'angular',
349
349
  'create-react-app',
350
350
  ].includes(selectedTool);
351
- usesSentryCliRc = selectedTool === 'nextjs';
352
- authTokenFile = isCliBasedFlowTool || usesSentryCliRc
351
+ authTokenFile = isCliBasedFlowTool
353
352
  ? clack_utils_1.SENTRY_CLI_RC_FILE
354
353
  : clack_utils_1.SENTRY_DOT_ENV_FILE;
355
354
  if (!isUsingCI) {
@@ -1 +1 @@
1
- {"version":3,"file":"sourcemaps-wizard.js","sourceRoot":"","sources":["../../../src/sourcemaps/sourcemaps-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';\nimport * as Sentry from '@sentry/node';\n\nimport {\n abort,\n abortIfCancelled,\n confirmContinueIfNoOrDirtyGitRepo,\n SENTRY_DOT_ENV_FILE,\n printWelcome,\n SENTRY_CLI_RC_FILE,\n getOrAskForProjectData,\n} from '../utils/clack-utils';\nimport { isUnicodeSupported } from '../utils/vendor/is-unicorn-supported';\nimport type { SourceMapUploadToolConfigurationOptions } from './tools/types';\nimport { configureVitePlugin } from './tools/vite';\nimport { setupNpmScriptInCI, configureSentryCLI } from './tools/sentry-cli';\nimport { configureWebPackPlugin } from './tools/webpack';\nimport { configureTscSourcemapGenerationFlow } from './tools/tsc';\nimport { configureRollupPlugin } from './tools/rollup';\nimport { configureEsbuildPlugin } from './tools/esbuild';\nimport type { WizardOptions } from '../utils/types';\nimport { configureCRASourcemapGenerationFlow } from './tools/create-react-app';\nimport { ensureMinimumSdkVersionIsInstalled } from './utils/sdk-version';\nimport { traceStep, withTelemetry } from '../telemetry';\nimport { checkIfMoreSuitableWizardExistsAndAskForRedirect } from './utils/other-wizards';\nimport { configureAngularSourcemapGenerationFlow } from './tools/angular';\nimport type { SupportedTools } from './utils/detect-tool';\nimport { detectUsedTool } from './utils/detect-tool';\nimport { configureNextJsSourceMapsUpload } from './tools/nextjs';\nimport { configureRemixSourceMapsUpload } from './tools/remix';\nimport { detectPackageManger } from '../utils/package-manager';\nimport { getIssueStreamUrl } from '../utils/url';\n\nexport async function runSourcemapsWizard(\n options: WizardOptions,\n): Promise<void> {\n return withTelemetry(\n {\n enabled: options.telemetryEnabled,\n integration: 'sourcemaps',\n wizardOptions: options,\n },\n () => runSourcemapsWizardWithTelemetry(options),\n );\n}\n\nasync function runSourcemapsWizardWithTelemetry(\n options: WizardOptions,\n): Promise<void> {\n printWelcome({\n wizardName: 'Sentry Source Maps Upload Configuration Wizard',\n message: `This wizard will help you upload source maps to Sentry as part of your build.\nThank you for using Sentry :)${\n options.telemetryEnabled\n ? `\n\n(This setup wizard sends telemetry data and crash reports to Sentry.\nYou can turn this off by running the wizard with the '--disable-telemetry' flag.)`\n : ''\n }`,\n promoCode: options.promoCode,\n });\n\n const moreSuitableWizard = await traceStep(\n 'check-framework-wizard',\n checkIfMoreSuitableWizardExistsAndAskForRedirect,\n );\n if (moreSuitableWizard) {\n await traceStep('run-framework-wizard', () => moreSuitableWizard(options));\n return;\n }\n\n await confirmContinueIfNoOrDirtyGitRepo();\n\n await traceStep('check-sdk-version', ensureMinimumSdkVersionIsInstalled);\n\n const { selfHosted, selectedProject, sentryUrl, authToken } =\n await getOrAskForProjectData(options);\n\n const wizardOptionsWithPreSelectedProject = {\n ...options,\n preSelectedProject: {\n project: selectedProject,\n authToken,\n selfHosted,\n },\n };\n\n const selectedTool = await traceStep('select-tool', askForUsedBundlerTool);\n\n Sentry.setTag('selected-tool', selectedTool);\n\n if (selectedTool === 'no-tool') {\n clack.log.info(\n \"No Problem! But in this case, there's nothing to configure :)\",\n );\n await abort('Exiting, have a great day!', 0);\n return;\n }\n\n await traceStep('tool-setup', () =>\n startToolSetupFlow(\n selectedTool,\n {\n orgSlug: selectedProject.organization.slug,\n projectSlug: selectedProject.slug,\n selfHosted,\n url: sentryUrl,\n authToken,\n },\n wizardOptionsWithPreSelectedProject,\n ),\n );\n\n await traceStep('ci-setup', () => configureCI(selectedTool, authToken));\n\n traceStep('outro', () =>\n printOutro(\n sentryUrl,\n selectedProject.organization.slug,\n selectedProject.id,\n ),\n );\n}\n\nasync function askForUsedBundlerTool(): Promise<SupportedTools> {\n const selectedTool = await abortIfCancelled(\n clack.select({\n message: 'Which framework, bundler or build tool are you using?',\n options: [\n {\n label: 'Angular',\n value: 'angular',\n hint: 'Select this option if you are using Angular.',\n },\n {\n label: 'Create React App',\n value: 'create-react-app',\n hint: 'Select this option if you set up your app with Create React App.',\n },\n {\n label: 'Next.js',\n value: 'nextjs',\n hint: 'Select this option if you want to set up source maps in a Next.js project.',\n },\n {\n label: 'Remix',\n value: 'remix',\n hint: 'Select this option if you want to set up source maps in a Remix project.',\n },\n {\n label: 'Webpack',\n value: 'webpack',\n hint: 'Select this if you are using Webpack and you have access to your Webpack config.',\n },\n {\n label: 'Vite',\n value: 'vite',\n hint: 'Select this if you are using Vite and you have access to your Vite config.',\n },\n {\n label: 'esbuild',\n value: 'esbuild',\n hint: 'Select this if you are using esbuild and you have access to your esbuild config.',\n },\n {\n label: 'Rollup',\n value: 'rollup',\n hint: 'Select this if you are using Rollup and you have access to your Rollup config.',\n },\n {\n label: 'tsc',\n value: 'tsc',\n hint: 'Configure source maps when using tsc as build tool',\n },\n {\n label: 'I use another tool',\n value: 'sentry-cli',\n hint: 'This will configure source maps upload for you using sentry-cli',\n },\n {\n label: \"I don't minify, transpile or bundle my code\",\n value: 'no-tool',\n hint: 'This will exit the wizard',\n },\n ],\n initialValue: await detectUsedTool(),\n }),\n );\n\n return selectedTool;\n}\n\nasync function startToolSetupFlow(\n selctedTool: SupportedTools,\n options: SourceMapUploadToolConfigurationOptions,\n wizardOptions: WizardOptions,\n): Promise<void> {\n switch (selctedTool) {\n case 'webpack':\n await configureWebPackPlugin(options);\n break;\n case 'vite':\n await configureVitePlugin(options);\n break;\n case 'esbuild':\n await configureEsbuildPlugin(options);\n break;\n case 'rollup':\n await configureRollupPlugin(options);\n break;\n case 'tsc':\n await configureSentryCLI(options, configureTscSourcemapGenerationFlow);\n break;\n case 'create-react-app':\n await configureSentryCLI(options, configureCRASourcemapGenerationFlow);\n break;\n case 'angular':\n await configureSentryCLI(\n options,\n configureAngularSourcemapGenerationFlow,\n );\n break;\n case 'nextjs':\n await configureNextJsSourceMapsUpload(options, wizardOptions);\n break;\n case 'remix':\n await configureRemixSourceMapsUpload(options, wizardOptions);\n break;\n default:\n await configureSentryCLI(options);\n break;\n }\n}\n\nexport async function configureCI(\n selectedTool: SupportedTools,\n authToken: string,\n): Promise<void> {\n const isUsingCI = await abortIfCancelled(\n clack.select({\n message: `Are you using a CI/CD tool to build and deploy your application?`,\n options: [\n {\n label: 'Yes',\n hint: 'I use a tool like GitHub Actions, GitLab, CircleCI, TravisCI, Jenkins, Vercel, ...',\n value: true,\n },\n {\n label: 'No',\n hint: 'I build and deploy my application manually',\n value: false,\n },\n ],\n initialValue: true,\n }),\n );\n\n Sentry.setTag('using-ci', isUsingCI);\n\n const isCliBasedFlowTool = [\n 'sentry-cli',\n 'tsc',\n 'angular',\n 'create-react-app',\n ].includes(selectedTool);\n\n // some non-cli-based flows also use the .sentryclirc file\n const usesSentryCliRc = selectedTool === 'nextjs';\n\n const authTokenFile =\n isCliBasedFlowTool || usesSentryCliRc\n ? SENTRY_CLI_RC_FILE\n : SENTRY_DOT_ENV_FILE;\n\n if (!isUsingCI) {\n clack.log.info(\n `No Problem! Just make sure that the Sentry auth token from ${chalk.cyan(\n authTokenFile,\n )} is available whenever you build and deploy your app.`,\n );\n return;\n }\n\n if (isCliBasedFlowTool) {\n await traceStep('ci-npm-script-setup', setupNpmScriptInCI);\n }\n\n await traceStep('ci-auth-token-setup', () => setupAuthTokenInCI(authToken));\n}\n\nasync function setupAuthTokenInCI(authToken: string) {\n clack.log.step(\n 'Add the Sentry authentication token as an environment variable to your CI setup:',\n );\n\n // Intentially logging directly to console here so that the code can be copied/pasted directly\n // eslint-disable-next-line no-console\n console.log(\n chalk.greenBright(`\nSENTRY_AUTH_TOKEN=${authToken}\n`),\n );\n\n clack.log.warn(\n chalk.yellow('DO NOT commit this auth token to your repository!'),\n );\n\n const addedEnvVarToCI = await abortIfCancelled(\n clack.select({\n message: 'Did you configure CI as shown above?',\n options: [\n { label: 'Yes, continue!', value: true },\n {\n label: \"I'll do it later...\",\n value: false,\n hint: chalk.yellow(\n 'You need to set the auth token to upload source maps in CI',\n ),\n },\n ],\n initialValue: true,\n }),\n );\n\n Sentry.setTag('added-env-var-to-ci', addedEnvVarToCI);\n\n if (!addedEnvVarToCI) {\n clack.log.info(\"Don't forget! :)\");\n }\n}\n\nfunction printOutro(url: string, orgSlug: string, projectId: string) {\n const packageManager = detectPackageManger();\n const buildCommand = packageManager?.buildCommand ?? 'npm run build';\n\n const issueStreamUrl = getIssueStreamUrl({ url, orgSlug, projectId });\n\n const arrow = isUnicodeSupported() ? '→' : '->';\n\n clack.outro(`${chalk.green(\"That's it - everything is set up!\")}\n\n ${chalk.cyan(`Test and validate your setup locally with the following Steps:\n\n 1. Build your application in ${chalk.bold('production mode')}.\n ${chalk.gray(`${arrow} For example, run ${chalk.bold(buildCommand)}.`)}\n ${chalk.gray(\n `${arrow} You should see source map upload logs in your console.`,\n )}\n 2. Run your application and throw a test error.\n ${chalk.gray(`${arrow} The error should appear in Sentry:`)}\n ${chalk.gray(`${arrow} ${issueStreamUrl}`)}\n 3. Open the error in Sentry and verify that it's source-mapped.\n ${chalk.gray(\n `${arrow} The stack trace should show your original source code.`,\n )}\n `)}\n ${chalk.dim(\n `If you encounter any issues, please refer to the Troubleshooting Guide:\n https://docs.sentry.io/platforms/javascript/sourcemaps/troubleshooting_js\n\n If the guide doesn't help or you encounter a bug, please let us know:\n https://github.com/getsentry/sentry-javascript/issues`,\n )}\n`);\n}\n"]}
1
+ {"version":3,"file":"sourcemaps-wizard.js","sourceRoot":"","sources":["../../../src/sourcemaps/sourcemaps-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';\nimport * as Sentry from '@sentry/node';\n\nimport {\n abort,\n abortIfCancelled,\n confirmContinueIfNoOrDirtyGitRepo,\n SENTRY_DOT_ENV_FILE,\n printWelcome,\n SENTRY_CLI_RC_FILE,\n getOrAskForProjectData,\n} from '../utils/clack-utils';\nimport { isUnicodeSupported } from '../utils/vendor/is-unicorn-supported';\nimport type { SourceMapUploadToolConfigurationOptions } from './tools/types';\nimport { configureVitePlugin } from './tools/vite';\nimport { setupNpmScriptInCI, configureSentryCLI } from './tools/sentry-cli';\nimport { configureWebPackPlugin } from './tools/webpack';\nimport { configureTscSourcemapGenerationFlow } from './tools/tsc';\nimport { configureRollupPlugin } from './tools/rollup';\nimport { configureEsbuildPlugin } from './tools/esbuild';\nimport type { WizardOptions } from '../utils/types';\nimport { configureCRASourcemapGenerationFlow } from './tools/create-react-app';\nimport { ensureMinimumSdkVersionIsInstalled } from './utils/sdk-version';\nimport { traceStep, withTelemetry } from '../telemetry';\nimport { checkIfMoreSuitableWizardExistsAndAskForRedirect } from './utils/other-wizards';\nimport { configureAngularSourcemapGenerationFlow } from './tools/angular';\nimport type { SupportedTools } from './utils/detect-tool';\nimport { detectUsedTool } from './utils/detect-tool';\nimport { configureNextJsSourceMapsUpload } from './tools/nextjs';\nimport { configureRemixSourceMapsUpload } from './tools/remix';\nimport { detectPackageManger } from '../utils/package-manager';\nimport { getIssueStreamUrl } from '../utils/url';\n\nexport async function runSourcemapsWizard(\n options: WizardOptions,\n): Promise<void> {\n return withTelemetry(\n {\n enabled: options.telemetryEnabled,\n integration: 'sourcemaps',\n wizardOptions: options,\n },\n () => runSourcemapsWizardWithTelemetry(options),\n );\n}\n\nasync function runSourcemapsWizardWithTelemetry(\n options: WizardOptions,\n): Promise<void> {\n printWelcome({\n wizardName: 'Sentry Source Maps Upload Configuration Wizard',\n message: `This wizard will help you upload source maps to Sentry as part of your build.\nThank you for using Sentry :)${\n options.telemetryEnabled\n ? `\n\n(This setup wizard sends telemetry data and crash reports to Sentry.\nYou can turn this off by running the wizard with the '--disable-telemetry' flag.)`\n : ''\n }`,\n promoCode: options.promoCode,\n });\n\n const moreSuitableWizard = await traceStep(\n 'check-framework-wizard',\n checkIfMoreSuitableWizardExistsAndAskForRedirect,\n );\n if (moreSuitableWizard) {\n await traceStep('run-framework-wizard', () => moreSuitableWizard(options));\n return;\n }\n\n await confirmContinueIfNoOrDirtyGitRepo();\n\n await traceStep('check-sdk-version', ensureMinimumSdkVersionIsInstalled);\n\n const { selfHosted, selectedProject, sentryUrl, authToken } =\n await getOrAskForProjectData(options);\n\n const wizardOptionsWithPreSelectedProject = {\n ...options,\n preSelectedProject: {\n project: selectedProject,\n authToken,\n selfHosted,\n },\n };\n\n const selectedTool = await traceStep('select-tool', askForUsedBundlerTool);\n\n Sentry.setTag('selected-tool', selectedTool);\n\n if (selectedTool === 'no-tool') {\n clack.log.info(\n \"No Problem! But in this case, there's nothing to configure :)\",\n );\n await abort('Exiting, have a great day!', 0);\n return;\n }\n\n await traceStep('tool-setup', () =>\n startToolSetupFlow(\n selectedTool,\n {\n orgSlug: selectedProject.organization.slug,\n projectSlug: selectedProject.slug,\n selfHosted,\n url: sentryUrl,\n authToken,\n },\n wizardOptionsWithPreSelectedProject,\n ),\n );\n\n await traceStep('ci-setup', () => configureCI(selectedTool, authToken));\n\n traceStep('outro', () =>\n printOutro(\n sentryUrl,\n selectedProject.organization.slug,\n selectedProject.id,\n ),\n );\n}\n\nasync function askForUsedBundlerTool(): Promise<SupportedTools> {\n const selectedTool = await abortIfCancelled(\n clack.select({\n message: 'Which framework, bundler or build tool are you using?',\n options: [\n {\n label: 'Angular',\n value: 'angular',\n hint: 'Select this option if you are using Angular.',\n },\n {\n label: 'Create React App',\n value: 'create-react-app',\n hint: 'Select this option if you set up your app with Create React App.',\n },\n {\n label: 'Next.js',\n value: 'nextjs',\n hint: 'Select this option if you want to set up source maps in a Next.js project.',\n },\n {\n label: 'Remix',\n value: 'remix',\n hint: 'Select this option if you want to set up source maps in a Remix project.',\n },\n {\n label: 'Webpack',\n value: 'webpack',\n hint: 'Select this if you are using Webpack and you have access to your Webpack config.',\n },\n {\n label: 'Vite',\n value: 'vite',\n hint: 'Select this if you are using Vite and you have access to your Vite config.',\n },\n {\n label: 'esbuild',\n value: 'esbuild',\n hint: 'Select this if you are using esbuild and you have access to your esbuild config.',\n },\n {\n label: 'Rollup',\n value: 'rollup',\n hint: 'Select this if you are using Rollup and you have access to your Rollup config.',\n },\n {\n label: 'tsc',\n value: 'tsc',\n hint: 'Configure source maps when using tsc as build tool',\n },\n {\n label: 'I use another tool',\n value: 'sentry-cli',\n hint: 'This will configure source maps upload for you using sentry-cli',\n },\n {\n label: \"I don't minify, transpile or bundle my code\",\n value: 'no-tool',\n hint: 'This will exit the wizard',\n },\n ],\n initialValue: await detectUsedTool(),\n }),\n );\n\n return selectedTool;\n}\n\nasync function startToolSetupFlow(\n selctedTool: SupportedTools,\n options: SourceMapUploadToolConfigurationOptions,\n wizardOptions: WizardOptions,\n): Promise<void> {\n switch (selctedTool) {\n case 'webpack':\n await configureWebPackPlugin(options);\n break;\n case 'vite':\n await configureVitePlugin(options);\n break;\n case 'esbuild':\n await configureEsbuildPlugin(options);\n break;\n case 'rollup':\n await configureRollupPlugin(options);\n break;\n case 'tsc':\n await configureSentryCLI(options, configureTscSourcemapGenerationFlow);\n break;\n case 'create-react-app':\n await configureSentryCLI(options, configureCRASourcemapGenerationFlow);\n break;\n case 'angular':\n await configureSentryCLI(\n options,\n configureAngularSourcemapGenerationFlow,\n );\n break;\n case 'nextjs':\n await configureNextJsSourceMapsUpload(options, wizardOptions);\n break;\n case 'remix':\n await configureRemixSourceMapsUpload(options, wizardOptions);\n break;\n default:\n await configureSentryCLI(options);\n break;\n }\n}\n\nexport async function configureCI(\n selectedTool: SupportedTools,\n authToken: string,\n): Promise<void> {\n const isUsingCI = await abortIfCancelled(\n clack.select({\n message: `Are you using a CI/CD tool to build and deploy your application?`,\n options: [\n {\n label: 'Yes',\n hint: 'I use a tool like GitHub Actions, GitLab, CircleCI, TravisCI, Jenkins, Vercel, ...',\n value: true,\n },\n {\n label: 'No',\n hint: 'I build and deploy my application manually',\n value: false,\n },\n ],\n initialValue: true,\n }),\n );\n\n Sentry.setTag('using-ci', isUsingCI);\n\n const isCliBasedFlowTool = [\n 'sentry-cli',\n 'tsc',\n 'angular',\n 'create-react-app',\n ].includes(selectedTool);\n\n const authTokenFile = isCliBasedFlowTool\n ? SENTRY_CLI_RC_FILE\n : SENTRY_DOT_ENV_FILE;\n\n if (!isUsingCI) {\n clack.log.info(\n `No Problem! Just make sure that the Sentry auth token from ${chalk.cyan(\n authTokenFile,\n )} is available whenever you build and deploy your app.`,\n );\n return;\n }\n\n if (isCliBasedFlowTool) {\n await traceStep('ci-npm-script-setup', setupNpmScriptInCI);\n }\n\n await traceStep('ci-auth-token-setup', () => setupAuthTokenInCI(authToken));\n}\n\nasync function setupAuthTokenInCI(authToken: string) {\n clack.log.step(\n 'Add the Sentry authentication token as an environment variable to your CI setup:',\n );\n\n // Intentially logging directly to console here so that the code can be copied/pasted directly\n // eslint-disable-next-line no-console\n console.log(\n chalk.greenBright(`\nSENTRY_AUTH_TOKEN=${authToken}\n`),\n );\n\n clack.log.warn(\n chalk.yellow('DO NOT commit this auth token to your repository!'),\n );\n\n const addedEnvVarToCI = await abortIfCancelled(\n clack.select({\n message: 'Did you configure CI as shown above?',\n options: [\n { label: 'Yes, continue!', value: true },\n {\n label: \"I'll do it later...\",\n value: false,\n hint: chalk.yellow(\n 'You need to set the auth token to upload source maps in CI',\n ),\n },\n ],\n initialValue: true,\n }),\n );\n\n Sentry.setTag('added-env-var-to-ci', addedEnvVarToCI);\n\n if (!addedEnvVarToCI) {\n clack.log.info(\"Don't forget! :)\");\n }\n}\n\nfunction printOutro(url: string, orgSlug: string, projectId: string) {\n const packageManager = detectPackageManger();\n const buildCommand = packageManager?.buildCommand ?? 'npm run build';\n\n const issueStreamUrl = getIssueStreamUrl({ url, orgSlug, projectId });\n\n const arrow = isUnicodeSupported() ? '→' : '->';\n\n clack.outro(`${chalk.green(\"That's it - everything is set up!\")}\n\n ${chalk.cyan(`Test and validate your setup locally with the following Steps:\n\n 1. Build your application in ${chalk.bold('production mode')}.\n ${chalk.gray(`${arrow} For example, run ${chalk.bold(buildCommand)}.`)}\n ${chalk.gray(\n `${arrow} You should see source map upload logs in your console.`,\n )}\n 2. Run your application and throw a test error.\n ${chalk.gray(`${arrow} The error should appear in Sentry:`)}\n ${chalk.gray(`${arrow} ${issueStreamUrl}`)}\n 3. Open the error in Sentry and verify that it's source-mapped.\n ${chalk.gray(\n `${arrow} The stack trace should show your original source code.`,\n )}\n `)}\n ${chalk.dim(\n `If you encounter any issues, please refer to the Troubleshooting Guide:\n https://docs.sentry.io/platforms/javascript/sourcemaps/troubleshooting_js\n\n If the guide doesn't help or you encounter a bug, please let us know:\n https://github.com/getsentry/sentry-javascript/issues`,\n )}\n`);\n}\n"]}
@@ -1,8 +1,9 @@
1
+ import { Span } from '@sentry/node';
1
2
  import { WizardOptions } from './utils/types';
2
3
  export declare function withTelemetry<F>(options: {
3
4
  enabled: boolean;
4
5
  integration: string;
5
6
  wizardOptions: WizardOptions;
6
7
  }, callback: () => F | Promise<F>): Promise<F>;
7
- export declare function traceStep<T>(step: string, callback: () => T): T;
8
+ export declare function traceStep<T>(step: string, callback: (span: Span | undefined) => T): T;
8
9
  export declare function updateProgress(step: string): void;
@@ -137,7 +137,7 @@ function createSentryInstance(enabled, integration) {
137
137
  }
138
138
  function traceStep(step, callback) {
139
139
  updateProgress(step);
140
- return (0, node_1.startSpan)({ name: step, op: 'wizard.step' }, function () { return callback(); });
140
+ return (0, node_1.startSpan)({ name: step, op: 'wizard.step' }, function (span) { return callback(span); });
141
141
  }
142
142
  exports.traceStep = traceStep;
143
143
  function updateProgress(step) {
@@ -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 setTag,\n startSpan,\n flush,\n} from '@sentry/node';\nimport packageJson from '../package.json';\nimport { WizardOptions } from './utils/types';\n\nexport async function withTelemetry<F>(\n options: {\n enabled: boolean;\n integration: string;\n wizardOptions: WizardOptions;\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 // Set tag for passed CLI args\n sentryHub.setTag('args.project', !!options.wizardOptions.projectSlug);\n sentryHub.setTag('args.org', !!options.wizardOptions.orgSlug);\n sentryHub.setTag('args.saas', !!options.wizardOptions.saas);\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).then(null, () => {\n // If telemetry flushing fails we generally don't care\n });\n await flush(3000).then(null, () => {\n // If telemetry flushing fails we generally don't care\n });\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"]}
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 flush,\n Span,\n} from '@sentry/node';\nimport packageJson from '../package.json';\nimport { WizardOptions } from './utils/types';\n\nexport async function withTelemetry<F>(\n options: {\n enabled: boolean;\n integration: string;\n wizardOptions: WizardOptions;\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 // Set tag for passed CLI args\n sentryHub.setTag('args.project', !!options.wizardOptions.projectSlug);\n sentryHub.setTag('args.org', !!options.wizardOptions.orgSlug);\n sentryHub.setTag('args.saas', !!options.wizardOptions.saas);\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).then(null, () => {\n // If telemetry flushing fails we generally don't care\n });\n await flush(3000).then(null, () => {\n // If telemetry flushing fails we generally don't care\n });\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>(\n step: string,\n callback: (span: Span | undefined) => T,\n): T {\n updateProgress(step);\n return startSpan({ name: step, op: 'wizard.step' }, (span) => callback(span));\n}\n\nexport function updateProgress(step: string) {\n setTag('progress', step);\n}\n"]}
@@ -1010,9 +1010,9 @@ function askForWizardLogin(options) {
1010
1010
  }
1011
1011
  if (!hasSentryAccount) {
1012
1012
  loginUrl.searchParams.set('signup', '1');
1013
- if (options.platform) {
1014
- loginUrl.searchParams.set('project_platform', options.platform);
1015
- }
1013
+ }
1014
+ if (options.platform) {
1015
+ loginUrl.searchParams.set('project_platform', options.platform);
1016
1016
  }
1017
1017
  if (options.promoCode) {
1018
1018
  loginUrl.searchParams.set('code', options.promoCode);