@sentry/wizard 3.5.0 → 3.6.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 (104) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/bin.ts +8 -9
  3. package/dist/bin.js +8 -5
  4. package/dist/bin.js.map +1 -1
  5. package/dist/lib/Constants.d.ts +2 -0
  6. package/dist/lib/Constants.js +5 -0
  7. package/dist/lib/Constants.js.map +1 -1
  8. package/dist/lib/Helper/Wizard.js +2 -0
  9. package/dist/lib/Helper/Wizard.js.map +1 -1
  10. package/dist/lib/Helper/__tests__/SentryCli.js +1 -0
  11. package/dist/lib/Helper/__tests__/SentryCli.js.map +1 -1
  12. package/dist/lib/Steps/ChooseIntegration.js +4 -0
  13. package/dist/lib/Steps/ChooseIntegration.js.map +1 -1
  14. package/dist/lib/Steps/Integrations/Apple.d.ts +10 -0
  15. package/dist/lib/Steps/Integrations/Apple.js +92 -0
  16. package/dist/lib/Steps/Integrations/Apple.js.map +1 -0
  17. package/dist/lib/Steps/Integrations/NextJsShim.js +1 -0
  18. package/dist/lib/Steps/Integrations/NextJsShim.js.map +1 -1
  19. package/dist/lib/Steps/Integrations/SourceMapsShim.js +1 -0
  20. package/dist/lib/Steps/Integrations/SourceMapsShim.js.map +1 -1
  21. package/dist/lib/Steps/Integrations/SvelteKitShim.js +1 -0
  22. package/dist/lib/Steps/Integrations/SvelteKitShim.js.map +1 -1
  23. package/dist/package.json +2 -2
  24. package/dist/src/apple/apple-wizard.d.ts +2 -0
  25. package/dist/src/apple/apple-wizard.js +197 -0
  26. package/dist/src/apple/apple-wizard.js.map +1 -0
  27. package/dist/src/apple/code-tools.d.ts +1 -0
  28. package/dist/src/apple/code-tools.js +100 -0
  29. package/dist/src/apple/code-tools.js.map +1 -0
  30. package/dist/src/apple/templates.d.ts +4 -0
  31. package/dist/src/apple/templates.js +19 -0
  32. package/dist/src/apple/templates.js.map +1 -0
  33. package/dist/src/apple/xcode-manager.d.ts +4 -0
  34. package/dist/src/apple/xcode-manager.js +145 -0
  35. package/dist/src/apple/xcode-manager.js.map +1 -0
  36. package/dist/src/sourcemaps/sourcemaps-wizard.js +143 -71
  37. package/dist/src/sourcemaps/sourcemaps-wizard.js.map +1 -1
  38. package/dist/src/sourcemaps/tools/angular.d.ts +1 -0
  39. package/dist/src/sourcemaps/tools/angular.js +76 -0
  40. package/dist/src/sourcemaps/tools/angular.js.map +1 -0
  41. package/dist/src/sourcemaps/tools/esbuild.js +2 -1
  42. package/dist/src/sourcemaps/tools/esbuild.js.map +1 -1
  43. package/dist/src/sourcemaps/tools/rollup.js +2 -1
  44. package/dist/src/sourcemaps/tools/rollup.js.map +1 -1
  45. package/dist/src/sourcemaps/tools/sentry-cli.js +2 -1
  46. package/dist/src/sourcemaps/tools/sentry-cli.js.map +1 -1
  47. package/dist/src/sourcemaps/tools/vite.js +2 -1
  48. package/dist/src/sourcemaps/tools/vite.js.map +1 -1
  49. package/dist/src/sourcemaps/tools/webpack.js +2 -1
  50. package/dist/src/sourcemaps/tools/webpack.js.map +1 -1
  51. package/dist/src/sourcemaps/utils/detect-tool.d.ts +3 -0
  52. package/dist/src/sourcemaps/utils/detect-tool.js +73 -0
  53. package/dist/src/sourcemaps/utils/detect-tool.js.map +1 -0
  54. package/dist/src/sourcemaps/utils/other-wizards.d.ts +4 -0
  55. package/dist/src/sourcemaps/utils/other-wizards.js +183 -0
  56. package/dist/src/sourcemaps/utils/other-wizards.js.map +1 -0
  57. package/dist/src/sourcemaps/utils/sdk-version.js +14 -13
  58. package/dist/src/sourcemaps/utils/sdk-version.js.map +1 -1
  59. package/dist/src/sveltekit/sveltekit-wizard.js +2 -1
  60. package/dist/src/sveltekit/sveltekit-wizard.js.map +1 -1
  61. package/dist/src/telemetry.d.ts +1 -0
  62. package/dist/src/telemetry.js +7 -1
  63. package/dist/src/telemetry.js.map +1 -1
  64. package/dist/src/utils/bash.d.ts +3 -0
  65. package/dist/src/utils/bash.js +118 -0
  66. package/dist/src/utils/bash.js.map +1 -0
  67. package/dist/src/utils/clack-utils.d.ts +9 -8
  68. package/dist/src/utils/clack-utils.js +54 -21
  69. package/dist/src/utils/clack-utils.js.map +1 -1
  70. package/dist/src/utils/package-json.d.ts +19 -0
  71. package/dist/src/utils/package-json.js +29 -0
  72. package/dist/src/utils/package-json.js.map +1 -0
  73. package/dist/src/utils/types.d.ts +4 -0
  74. package/dist/src/utils/types.js.map +1 -1
  75. package/lib/Constants.ts +6 -0
  76. package/lib/Helper/Wizard.ts +3 -0
  77. package/lib/Helper/__tests__/SentryCli.ts +2 -1
  78. package/lib/Steps/ChooseIntegration.ts +4 -0
  79. package/lib/Steps/Integrations/Apple.ts +27 -0
  80. package/lib/Steps/Integrations/NextJsShim.ts +1 -0
  81. package/lib/Steps/Integrations/SourceMapsShim.ts +1 -0
  82. package/lib/Steps/Integrations/SvelteKitShim.ts +1 -0
  83. package/package-lock.json +8910 -0
  84. package/package.json +2 -2
  85. package/src/apple/apple-wizard.ts +150 -0
  86. package/src/apple/code-tools.ts +81 -0
  87. package/src/apple/templates.ts +39 -0
  88. package/src/apple/xcode-manager.ts +147 -0
  89. package/src/sourcemaps/sourcemaps-wizard.ts +156 -91
  90. package/src/sourcemaps/tools/angular.ts +42 -0
  91. package/src/sourcemaps/tools/esbuild.ts +1 -1
  92. package/src/sourcemaps/tools/rollup.ts +2 -4
  93. package/src/sourcemaps/tools/sentry-cli.ts +1 -1
  94. package/src/sourcemaps/tools/vite.ts +1 -1
  95. package/src/sourcemaps/tools/webpack.ts +1 -1
  96. package/src/sourcemaps/utils/detect-tool.ts +41 -0
  97. package/src/sourcemaps/utils/other-wizards.ts +148 -0
  98. package/src/sourcemaps/utils/sdk-version.ts +9 -16
  99. package/src/sveltekit/sveltekit-wizard.ts +1 -1
  100. package/src/telemetry.ts +8 -0
  101. package/src/utils/bash.ts +44 -0
  102. package/src/utils/clack-utils.ts +44 -37
  103. package/src/utils/package-json.ts +45 -0
  104. package/src/utils/types.ts +5 -0
@@ -1 +1 @@
1
- {"version":3,"file":"vite.js","sourceRoot":"","sources":["../../../../src/sourcemaps/tools/vite.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yEAAyE;AACzE,wDAA+C;AAC/C,gDAA0B;AAC1B,uDAMiC;AAOjC,IAAM,cAAc,GAAG,UAAC,OAAgD;IACtE,OAAA,eAAK,CAAC,IAAI,CAAC,oDAEX,eAAK,CAAC,WAAW,CAAC,wDAAwD,CAAC,iEAIvE,eAAK,CAAC,WAAW,CACjB,6DAA6D,CAC9D,kGAIC,eAAK,CAAC,WAAW,CAAC,4FAEV,OAAO,CAAC,OAAO,mCACX,OAAO,CAAC,WAAW,gBAC/B,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,yBAAiB,OAAO,CAAC,GAAG,QAAI,CAAC,CAAC,CAAC,EAAE,cAExD,CAAC,kBAGR,CAAC;AArBA,CAqBA,CAAC;AAEI,IAAM,mBAAmB,GAC9B,UAAO,OAAO;;;;;;gBACN,KAAA,4BAAc,CAAA;;oBAClB,WAAW,EAAE,qBAAqB;;gBAChB,KAAA,iCAAmB,CAAA;sBACnC,qBAAqB;gBACrB,qBAAM,IAAA,+BAAiB,GAAE,EAAA;oBAJ7B,qBAAM,mBAEJ,mBAAgB,GAAE,4BAEhB,SAAyB,GAC1B;6BACD,EAAA;;gBANF,SAME,CAAC;gBAEH,iBAAK,CAAC,GAAG,CAAC,IAAI,CACZ,yCAAkC,eAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAQ,CACvE,CAAC;gBAEF,8FAA8F;gBAC9F,sCAAsC;gBACtC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;gBAErC,qBAAM,IAAA,8BAAgB,EACpB,IAAA,gBAAM,EAAC;wBACL,OAAO,EAAE,iCAAiC;wBAC1C,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;wBACnD,YAAY,EAAE,IAAI;qBACnB,CAAC,CACH,EAAA;;gBAND,SAMC,CAAC;gBAEF,qBAAM,IAAA,4CAA8B,EAAC,OAAO,CAAC,SAAS,CAAC,EAAA;;gBAAvD,SAAuD,CAAC;;;;KACzD,CAAC;AA3BS,QAAA,mBAAmB,uBA2B5B","sourcesContent":["// @ts-ignore - clack is ESM and TS complains about that. It works though\nimport clack, { select } from '@clack/prompts';\nimport chalk from 'chalk';\nimport {\n abortIfCancelled,\n addDotEnvSentryBuildPluginFile,\n getPackageDotJson,\n hasPackageInstalled,\n installPackage,\n} from '../../utils/clack-utils';\n\nimport {\n SourceMapUploadToolConfigurationFunction,\n SourceMapUploadToolConfigurationOptions,\n} from './types';\n\nconst getCodeSnippet = (options: SourceMapUploadToolConfigurationOptions) =>\n chalk.gray(`\nimport { defineConfig } from \"vite\";\n${chalk.greenBright('import { sentryVitePlugin } from \"@sentry/vite-plugin\"')};\n\nexport default defineConfig({\n build: {\n ${chalk.greenBright(\n 'sourcemap: true, // Source map generation must be turned on',\n )}\n },\n plugins: [\n // Put the Sentry vite plugin after all other plugins\n ${chalk.greenBright(`sentryVitePlugin({\n authToken: process.env.SENTRY_AUTH_TOKEN,\n org: \"${options.orgSlug}\",\n project: \"${options.projectSlug}\",${\n options.selfHosted ? `\\n url: \"${options.url}\",` : ''\n }\n }),`)}\n ],\n});\n`);\n\nexport const configureVitePlugin: SourceMapUploadToolConfigurationFunction =\n async (options) => {\n await installPackage({\n packageName: '@sentry/vite-plugin',\n alreadyInstalled: hasPackageInstalled(\n '@sentry/vite-plugin',\n await getPackageDotJson(),\n ),\n });\n\n clack.log.step(\n `Add the following code to your ${chalk.bold('vite.config.js')} file:`,\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(getCodeSnippet(options));\n\n await abortIfCancelled(\n select({\n message: 'Did you copy the snippet above?',\n options: [{ label: 'Yes, continue!', value: true }],\n initialValue: true,\n }),\n );\n\n await addDotEnvSentryBuildPluginFile(options.authToken);\n };\n"]}
1
+ {"version":3,"file":"vite.js","sourceRoot":"","sources":["../../../../src/sourcemaps/tools/vite.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yEAAyE;AACzE,wDAA+C;AAC/C,gDAA0B;AAC1B,uDAKiC;AACjC,yDAA+D;AAO/D,IAAM,cAAc,GAAG,UAAC,OAAgD;IACtE,OAAA,eAAK,CAAC,IAAI,CAAC,oDAEX,eAAK,CAAC,WAAW,CAAC,wDAAwD,CAAC,iEAIvE,eAAK,CAAC,WAAW,CACjB,6DAA6D,CAC9D,kGAIC,eAAK,CAAC,WAAW,CAAC,4FAEV,OAAO,CAAC,OAAO,mCACX,OAAO,CAAC,WAAW,gBAC/B,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,yBAAiB,OAAO,CAAC,GAAG,QAAI,CAAC,CAAC,CAAC,EAAE,cAExD,CAAC,kBAGR,CAAC;AArBA,CAqBA,CAAC;AAEI,IAAM,mBAAmB,GAC9B,UAAO,OAAO;;;;;;gBACN,KAAA,4BAAc,CAAA;;oBAClB,WAAW,EAAE,qBAAqB;;gBAChB,KAAA,kCAAmB,CAAA;sBACnC,qBAAqB;gBACrB,qBAAM,IAAA,+BAAiB,GAAE,EAAA;oBAJ7B,qBAAM,mBAEJ,mBAAgB,GAAE,4BAEhB,SAAyB,GAC1B;6BACD,EAAA;;gBANF,SAME,CAAC;gBAEH,iBAAK,CAAC,GAAG,CAAC,IAAI,CACZ,yCAAkC,eAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAQ,CACvE,CAAC;gBAEF,8FAA8F;gBAC9F,sCAAsC;gBACtC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;gBAErC,qBAAM,IAAA,8BAAgB,EACpB,IAAA,gBAAM,EAAC;wBACL,OAAO,EAAE,iCAAiC;wBAC1C,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;wBACnD,YAAY,EAAE,IAAI;qBACnB,CAAC,CACH,EAAA;;gBAND,SAMC,CAAC;gBAEF,qBAAM,IAAA,4CAA8B,EAAC,OAAO,CAAC,SAAS,CAAC,EAAA;;gBAAvD,SAAuD,CAAC;;;;KACzD,CAAC;AA3BS,QAAA,mBAAmB,uBA2B5B","sourcesContent":["// @ts-ignore - clack is ESM and TS complains about that. It works though\nimport clack, { select } from '@clack/prompts';\nimport chalk from 'chalk';\nimport {\n abortIfCancelled,\n addDotEnvSentryBuildPluginFile,\n getPackageDotJson,\n installPackage,\n} from '../../utils/clack-utils';\nimport { hasPackageInstalled } from '../../utils/package-json';\n\nimport {\n SourceMapUploadToolConfigurationFunction,\n SourceMapUploadToolConfigurationOptions,\n} from './types';\n\nconst getCodeSnippet = (options: SourceMapUploadToolConfigurationOptions) =>\n chalk.gray(`\nimport { defineConfig } from \"vite\";\n${chalk.greenBright('import { sentryVitePlugin } from \"@sentry/vite-plugin\"')};\n\nexport default defineConfig({\n build: {\n ${chalk.greenBright(\n 'sourcemap: true, // Source map generation must be turned on',\n )}\n },\n plugins: [\n // Put the Sentry vite plugin after all other plugins\n ${chalk.greenBright(`sentryVitePlugin({\n authToken: process.env.SENTRY_AUTH_TOKEN,\n org: \"${options.orgSlug}\",\n project: \"${options.projectSlug}\",${\n options.selfHosted ? `\\n url: \"${options.url}\",` : ''\n }\n }),`)}\n ],\n});\n`);\n\nexport const configureVitePlugin: SourceMapUploadToolConfigurationFunction =\n async (options) => {\n await installPackage({\n packageName: '@sentry/vite-plugin',\n alreadyInstalled: hasPackageInstalled(\n '@sentry/vite-plugin',\n await getPackageDotJson(),\n ),\n });\n\n clack.log.step(\n `Add the following code to your ${chalk.bold('vite.config.js')} file:`,\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(getCodeSnippet(options));\n\n await abortIfCancelled(\n select({\n message: 'Did you copy the snippet above?',\n options: [{ label: 'Yes, continue!', value: true }],\n initialValue: true,\n }),\n );\n\n await addDotEnvSentryBuildPluginFile(options.authToken);\n };\n"]}
@@ -67,6 +67,7 @@ exports.configureWebPackPlugin = void 0;
67
67
  var prompts_1 = __importStar(require("@clack/prompts"));
68
68
  var chalk_1 = __importDefault(require("chalk"));
69
69
  var clack_utils_1 = require("../../utils/clack-utils");
70
+ var package_json_1 = require("../../utils/package-json");
70
71
  var getCodeSnippet = function (options) {
71
72
  return chalk_1.default.gray("\n".concat(chalk_1.default.greenBright('const { sentryWebpackPlugin } = require("@sentry/webpack-plugin");'), "\n\nmodule.exports = {\n // ... other config options\n ").concat(chalk_1.default.greenBright('devtool: "source-map", // Source map generation must be turned on'), "\n plugins: [\n ").concat(chalk_1.default.greenBright("sentryWebpackPlugin({\n authToken: process.env.SENTRY_AUTH_TOKEN,\n org: \"".concat(options.orgSlug, "\",\n project: \"").concat(options.projectSlug, "\",").concat(options.selfHosted ? "\n url: \"".concat(options.url, "\",") : '', " \n })")), ",\n ],\n};\n"));
72
73
  };
@@ -80,7 +81,7 @@ var configureWebPackPlugin = function (options) { return __awaiter(void 0, void
80
81
  _d = {
81
82
  packageName: '@sentry/webpack-plugin'
82
83
  };
83
- _b = clack_utils_1.hasPackageInstalled;
84
+ _b = package_json_1.hasPackageInstalled;
84
85
  _c = ['@sentry/webpack-plugin'];
85
86
  return [4 /*yield*/, (0, clack_utils_1.getPackageDotJson)()];
86
87
  case 1: return [4 /*yield*/, _a.apply(void 0, [(_d.alreadyInstalled = _b.apply(void 0, _c.concat([_e.sent()])),
@@ -1 +1 @@
1
- {"version":3,"file":"webpack.js","sourceRoot":"","sources":["../../../../src/sourcemaps/tools/webpack.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yEAAyE;AACzE,wDAA+C;AAC/C,gDAA0B;AAC1B,uDAMiC;AAOjC,IAAM,cAAc,GAAG,UAAC,OAAgD;IACtE,OAAA,eAAK,CAAC,IAAI,CAAC,YACX,eAAK,CAAC,WAAW,CACjB,oEAAoE,CACrE,sEAIG,eAAK,CAAC,WAAW,CACjB,mEAAmE,CACpE,iCAEG,eAAK,CAAC,WAAW,CAAC,+FAEV,OAAO,CAAC,OAAO,mCACX,OAAO,CAAC,WAAW,gBAC/B,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,yBAAiB,OAAO,CAAC,GAAG,QAAI,CAAC,CAAC,CAAC,EAAE,eAEzD,CAAC,kBAGP,CAAC;AApBA,CAoBA,CAAC;AAEI,IAAM,sBAAsB,GACjC,UAAO,OAAO;;;;;;gBACN,KAAA,4BAAc,CAAA;;oBAClB,WAAW,EAAE,wBAAwB;;gBACnB,KAAA,iCAAmB,CAAA;sBACnC,wBAAwB;gBACxB,qBAAM,IAAA,+BAAiB,GAAE,EAAA;oBAJ7B,qBAAM,mBAEJ,mBAAgB,GAAE,4BAEhB,SAAyB,GAC1B;6BACD,EAAA;;gBANF,SAME,CAAC;gBAEH,iBAAK,CAAC,GAAG,CAAC,IAAI,CACZ,yCAAkC,eAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,WAAQ,CAC1E,CAAC;gBAEF,8FAA8F;gBAC9F,sCAAsC;gBACtC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;gBAErC,qBAAM,IAAA,8BAAgB,EACpB,IAAA,gBAAM,EAAC;wBACL,OAAO,EAAE,iCAAiC;wBAC1C,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;wBACnD,YAAY,EAAE,IAAI;qBACnB,CAAC,CACH,EAAA;;gBAND,SAMC,CAAC;gBAEF,qBAAM,IAAA,4CAA8B,EAAC,OAAO,CAAC,SAAS,CAAC,EAAA;;gBAAvD,SAAuD,CAAC;;;;KACzD,CAAC;AA3BS,QAAA,sBAAsB,0BA2B/B","sourcesContent":["// @ts-ignore - clack is ESM and TS complains about that. It works though\nimport clack, { select } from '@clack/prompts';\nimport chalk from 'chalk';\nimport {\n abortIfCancelled,\n addDotEnvSentryBuildPluginFile,\n getPackageDotJson,\n hasPackageInstalled,\n installPackage,\n} from '../../utils/clack-utils';\n\nimport {\n SourceMapUploadToolConfigurationFunction,\n SourceMapUploadToolConfigurationOptions,\n} from './types';\n\nconst getCodeSnippet = (options: SourceMapUploadToolConfigurationOptions) =>\n chalk.gray(`\n${chalk.greenBright(\n 'const { sentryWebpackPlugin } = require(\"@sentry/webpack-plugin\");',\n)}\n\nmodule.exports = {\n // ... other config options\n ${chalk.greenBright(\n 'devtool: \"source-map\", // Source map generation must be turned on',\n )}\n plugins: [\n ${chalk.greenBright(`sentryWebpackPlugin({\n authToken: process.env.SENTRY_AUTH_TOKEN,\n org: \"${options.orgSlug}\",\n project: \"${options.projectSlug}\",${\n options.selfHosted ? `\\n url: \"${options.url}\",` : ''\n } \n })`)},\n ],\n};\n`);\n\nexport const configureWebPackPlugin: SourceMapUploadToolConfigurationFunction =\n async (options) => {\n await installPackage({\n packageName: '@sentry/webpack-plugin',\n alreadyInstalled: hasPackageInstalled(\n '@sentry/webpack-plugin',\n await getPackageDotJson(),\n ),\n });\n\n clack.log.step(\n `Add the following code to your ${chalk.bold('webpack.config.js')} file:`,\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(getCodeSnippet(options));\n\n await abortIfCancelled(\n select({\n message: 'Did you copy the snippet above?',\n options: [{ label: 'Yes, continue!', value: true }],\n initialValue: true,\n }),\n );\n\n await addDotEnvSentryBuildPluginFile(options.authToken);\n };\n"]}
1
+ {"version":3,"file":"webpack.js","sourceRoot":"","sources":["../../../../src/sourcemaps/tools/webpack.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yEAAyE;AACzE,wDAA+C;AAC/C,gDAA0B;AAC1B,uDAKiC;AACjC,yDAA+D;AAO/D,IAAM,cAAc,GAAG,UAAC,OAAgD;IACtE,OAAA,eAAK,CAAC,IAAI,CAAC,YACX,eAAK,CAAC,WAAW,CACjB,oEAAoE,CACrE,sEAIG,eAAK,CAAC,WAAW,CACjB,mEAAmE,CACpE,iCAEG,eAAK,CAAC,WAAW,CAAC,+FAEV,OAAO,CAAC,OAAO,mCACX,OAAO,CAAC,WAAW,gBAC/B,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,yBAAiB,OAAO,CAAC,GAAG,QAAI,CAAC,CAAC,CAAC,EAAE,eAEzD,CAAC,kBAGP,CAAC;AApBA,CAoBA,CAAC;AAEI,IAAM,sBAAsB,GACjC,UAAO,OAAO;;;;;;gBACN,KAAA,4BAAc,CAAA;;oBAClB,WAAW,EAAE,wBAAwB;;gBACnB,KAAA,kCAAmB,CAAA;sBACnC,wBAAwB;gBACxB,qBAAM,IAAA,+BAAiB,GAAE,EAAA;oBAJ7B,qBAAM,mBAEJ,mBAAgB,GAAE,4BAEhB,SAAyB,GAC1B;6BACD,EAAA;;gBANF,SAME,CAAC;gBAEH,iBAAK,CAAC,GAAG,CAAC,IAAI,CACZ,yCAAkC,eAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,WAAQ,CAC1E,CAAC;gBAEF,8FAA8F;gBAC9F,sCAAsC;gBACtC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;gBAErC,qBAAM,IAAA,8BAAgB,EACpB,IAAA,gBAAM,EAAC;wBACL,OAAO,EAAE,iCAAiC;wBAC1C,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;wBACnD,YAAY,EAAE,IAAI;qBACnB,CAAC,CACH,EAAA;;gBAND,SAMC,CAAC;gBAEF,qBAAM,IAAA,4CAA8B,EAAC,OAAO,CAAC,SAAS,CAAC,EAAA;;gBAAvD,SAAuD,CAAC;;;;KACzD,CAAC;AA3BS,QAAA,sBAAsB,0BA2B/B","sourcesContent":["// @ts-ignore - clack is ESM and TS complains about that. It works though\nimport clack, { select } from '@clack/prompts';\nimport chalk from 'chalk';\nimport {\n abortIfCancelled,\n addDotEnvSentryBuildPluginFile,\n getPackageDotJson,\n installPackage,\n} from '../../utils/clack-utils';\nimport { hasPackageInstalled } from '../../utils/package-json';\n\nimport {\n SourceMapUploadToolConfigurationFunction,\n SourceMapUploadToolConfigurationOptions,\n} from './types';\n\nconst getCodeSnippet = (options: SourceMapUploadToolConfigurationOptions) =>\n chalk.gray(`\n${chalk.greenBright(\n 'const { sentryWebpackPlugin } = require(\"@sentry/webpack-plugin\");',\n)}\n\nmodule.exports = {\n // ... other config options\n ${chalk.greenBright(\n 'devtool: \"source-map\", // Source map generation must be turned on',\n )}\n plugins: [\n ${chalk.greenBright(`sentryWebpackPlugin({\n authToken: process.env.SENTRY_AUTH_TOKEN,\n org: \"${options.orgSlug}\",\n project: \"${options.projectSlug}\",${\n options.selfHosted ? `\\n url: \"${options.url}\",` : ''\n } \n })`)},\n ],\n};\n`);\n\nexport const configureWebPackPlugin: SourceMapUploadToolConfigurationFunction =\n async (options) => {\n await installPackage({\n packageName: '@sentry/webpack-plugin',\n alreadyInstalled: hasPackageInstalled(\n '@sentry/webpack-plugin',\n await getPackageDotJson(),\n ),\n });\n\n clack.log.step(\n `Add the following code to your ${chalk.bold('webpack.config.js')} file:`,\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(getCodeSnippet(options));\n\n await abortIfCancelled(\n select({\n message: 'Did you copy the snippet above?',\n options: [{ label: 'Yes, continue!', value: true }],\n initialValue: true,\n }),\n );\n\n await addDotEnvSentryBuildPluginFile(options.authToken);\n };\n"]}
@@ -0,0 +1,3 @@
1
+ export type SupportedTools = 'webpack' | 'vite' | 'rollup' | 'esbuild' | 'tsc' | 'sentry-cli' | 'create-react-app' | 'angular';
2
+ export declare const TOOL_PACKAGE_MAP: Record<string, SupportedTools>;
3
+ export declare function detectUsedTool(): Promise<SupportedTools>;
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.detectUsedTool = exports.TOOL_PACKAGE_MAP = void 0;
40
+ var clack_utils_1 = require("../../utils/clack-utils");
41
+ var package_json_1 = require("../../utils/package-json");
42
+ // A map of package names pointing to the tool slug.
43
+ // The order is important, because we want to detect the most specific tool first.
44
+ // For instance, webpack needs to come before tsc because typescript c
45
+ // Similarly
46
+ exports.TOOL_PACKAGE_MAP = {
47
+ '@angular/core': 'angular',
48
+ 'create-react-app': 'create-react-app',
49
+ webpack: 'webpack',
50
+ vite: 'vite',
51
+ esbuild: 'esbuild',
52
+ rollup: 'rollup',
53
+ typescript: 'tsc',
54
+ };
55
+ function detectUsedTool() {
56
+ return __awaiter(this, void 0, void 0, function () {
57
+ var packageJson, foundToolPackage;
58
+ return __generator(this, function (_a) {
59
+ switch (_a.label) {
60
+ case 0: return [4 /*yield*/, (0, clack_utils_1.getPackageDotJson)()];
61
+ case 1:
62
+ packageJson = _a.sent();
63
+ foundToolPackage = (0, package_json_1.findInstalledPackageFromList)(Object.keys(exports.TOOL_PACKAGE_MAP), packageJson);
64
+ if (foundToolPackage) {
65
+ return [2 /*return*/, exports.TOOL_PACKAGE_MAP[foundToolPackage.name]];
66
+ }
67
+ return [2 /*return*/, 'sentry-cli'];
68
+ }
69
+ });
70
+ });
71
+ }
72
+ exports.detectUsedTool = detectUsedTool;
73
+ //# sourceMappingURL=detect-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detect-tool.js","sourceRoot":"","sources":["../../../../src/sourcemaps/utils/detect-tool.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uDAA4D;AAC5D,yDAAwE;AAYxE,oDAAoD;AACpD,kFAAkF;AAClF,sEAAsE;AACtE,YAAY;AACC,QAAA,gBAAgB,GAAmC;IAC9D,eAAe,EAAE,SAAS;IAC1B,kBAAkB,EAAE,kBAAkB;IACtC,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,QAAQ;IAChB,UAAU,EAAE,KAAK;CAClB,CAAC;AAEF,SAAsB,cAAc;;;;;wBACd,qBAAM,IAAA,+BAAiB,GAAE,EAAA;;oBAAvC,WAAW,GAAG,SAAyB;oBAEvC,gBAAgB,GAAG,IAAA,2CAA4B,EACnD,MAAM,CAAC,IAAI,CAAC,wBAAgB,CAAC,EAC7B,WAAW,CACZ,CAAC;oBAEF,IAAI,gBAAgB,EAAE;wBACpB,sBAAO,wBAAgB,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAC;qBAChD;oBAED,sBAAO,YAAY,EAAC;;;;CACrB;AAbD,wCAaC","sourcesContent":["import { getPackageDotJson } from '../../utils/clack-utils';\nimport { findInstalledPackageFromList } from '../../utils/package-json';\n\nexport type SupportedTools =\n | 'webpack'\n | 'vite'\n | 'rollup'\n | 'esbuild'\n | 'tsc'\n | 'sentry-cli'\n | 'create-react-app'\n | 'angular';\n\n// A map of package names pointing to the tool slug.\n// The order is important, because we want to detect the most specific tool first.\n// For instance, webpack needs to come before tsc because typescript c\n// Similarly\nexport const TOOL_PACKAGE_MAP: Record<string, SupportedTools> = {\n '@angular/core': 'angular',\n 'create-react-app': 'create-react-app',\n webpack: 'webpack',\n vite: 'vite',\n esbuild: 'esbuild',\n rollup: 'rollup',\n typescript: 'tsc',\n};\n\nexport async function detectUsedTool(): Promise<SupportedTools> {\n const packageJson = await getPackageDotJson();\n\n const foundToolPackage = findInstalledPackageFromList(\n Object.keys(TOOL_PACKAGE_MAP),\n packageJson,\n );\n\n if (foundToolPackage) {\n return TOOL_PACKAGE_MAP[foundToolPackage.name];\n }\n\n return 'sentry-cli';\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import { WizardOptions } from '../../utils/types';
2
+ type WizardFunction = (options: WizardOptions) => Promise<void>;
3
+ export declare function checkIfMoreSuitableWizardExistsAndAskForRedirect(): Promise<WizardFunction | undefined>;
4
+ export {};
@@ -0,0 +1,183 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ var __generator = (this && this.__generator) || function (thisArg, body) {
35
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
36
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
37
+ function verb(n) { return function (v) { return step([n, v]); }; }
38
+ function step(op) {
39
+ if (f) throw new TypeError("Generator is already executing.");
40
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
41
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
42
+ if (y = 0, t) op = [op[0] & 2, t.value];
43
+ switch (op[0]) {
44
+ case 0: case 1: t = op; break;
45
+ case 4: _.label++; return { value: op[1], done: false };
46
+ case 5: _.label++; y = op[1]; op = [0]; continue;
47
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
48
+ default:
49
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
50
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
51
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
52
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
53
+ if (t[2]) _.ops.pop();
54
+ _.trys.pop(); continue;
55
+ }
56
+ op = body.call(thisArg, _);
57
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
58
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
59
+ }
60
+ };
61
+ var __importDefault = (this && this.__importDefault) || function (mod) {
62
+ return (mod && mod.__esModule) ? mod : { "default": mod };
63
+ };
64
+ Object.defineProperty(exports, "__esModule", { value: true });
65
+ exports.checkIfMoreSuitableWizardExistsAndAskForRedirect = void 0;
66
+ // @ts-ignore - clack is ESM and TS complains about that. It works though
67
+ var prompts_1 = __importDefault(require("@clack/prompts"));
68
+ var chalk_1 = __importDefault(require("chalk"));
69
+ var nextjs_wizard_1 = require("../../nextjs/nextjs-wizard");
70
+ var sveltekit_wizard_1 = require("../../sveltekit/sveltekit-wizard");
71
+ var clack_utils_1 = require("../../utils/clack-utils");
72
+ var package_json_1 = require("../../utils/package-json");
73
+ var Sentry = __importStar(require("@sentry/node"));
74
+ var sdkMap = {
75
+ '@sentry/nextjs': {
76
+ frameworkName: 'Next.js',
77
+ frameworkSlug: 'nextjs',
78
+ frameworkPackage: 'next',
79
+ sourcemapsDocsLink: 'https://docs.sentry.io/platforms/javascript/guides/nextjs/manual-setup/#configure-source-maps',
80
+ wizard: nextjs_wizard_1.runNextjsWizard,
81
+ },
82
+ '@sentry/sveltekit': {
83
+ frameworkName: 'SvelteKit',
84
+ frameworkSlug: 'sveltekit',
85
+ frameworkPackage: '@sveltejs/kit',
86
+ sourcemapsDocsLink: 'https://docs.sentry.io/platforms/javascript/guides/sveltekit/manual-setup/#configure-source-maps-upload',
87
+ wizard: sveltekit_wizard_1.runSvelteKitWizard,
88
+ },
89
+ };
90
+ function checkIfMoreSuitableWizardExistsAndAskForRedirect() {
91
+ return __awaiter(this, void 0, void 0, function () {
92
+ var sdkName;
93
+ return __generator(this, function (_a) {
94
+ switch (_a.label) {
95
+ case 0: return [4 /*yield*/, checkIfMoreSuitableWizardExists()];
96
+ case 1:
97
+ sdkName = _a.sent();
98
+ if (!sdkName) {
99
+ return [2 /*return*/, undefined];
100
+ }
101
+ return [4 /*yield*/, askForRedirect(sdkName)];
102
+ case 2: return [2 /*return*/, _a.sent()];
103
+ }
104
+ });
105
+ });
106
+ }
107
+ exports.checkIfMoreSuitableWizardExistsAndAskForRedirect = checkIfMoreSuitableWizardExistsAndAskForRedirect;
108
+ function checkIfMoreSuitableWizardExists() {
109
+ return __awaiter(this, void 0, void 0, function () {
110
+ var packageJson, installedSdkPackage, sdkPackageName, frameworkPackage;
111
+ return __generator(this, function (_a) {
112
+ switch (_a.label) {
113
+ case 0:
114
+ Sentry.setTag('using-wrong-wizard', false);
115
+ return [4 /*yield*/, (0, clack_utils_1.getPackageDotJson)()];
116
+ case 1:
117
+ packageJson = _a.sent();
118
+ installedSdkPackage = (0, package_json_1.findInstalledPackageFromList)(Object.keys(sdkMap), packageJson);
119
+ if (!installedSdkPackage) {
120
+ return [2 /*return*/, undefined];
121
+ }
122
+ sdkPackageName = installedSdkPackage.name;
123
+ frameworkPackage = sdkMap[sdkPackageName].frameworkPackage;
124
+ if (!(0, package_json_1.hasPackageInstalled)(frameworkPackage, packageJson)) {
125
+ // The user has installed the SDK but not the framework.
126
+ // Maybe it's a false positive and the user is using a different framework.
127
+ // Let's not redirect them to the framework wizard in that case.
128
+ return [2 /*return*/, undefined];
129
+ }
130
+ Sentry.setTag('using-wrong-wizard', true);
131
+ return [2 /*return*/, sdkPackageName];
132
+ }
133
+ });
134
+ });
135
+ }
136
+ function askForRedirect(sdkName) {
137
+ return __awaiter(this, void 0, void 0, function () {
138
+ var _a, frameworkName, sourcemapsDocsLink, frameworkSlug, wizard, nextStep, _b;
139
+ return __generator(this, function (_c) {
140
+ switch (_c.label) {
141
+ case 0:
142
+ _a = sdkMap[sdkName], frameworkName = _a.frameworkName, sourcemapsDocsLink = _a.sourcemapsDocsLink, frameworkSlug = _a.frameworkSlug, wizard = _a.wizard;
143
+ prompts_1.default.log.warn("".concat(chalk_1.default.yellow("It seems like you're using this wizard in a ".concat(frameworkName, " project.")), "\n\nWe recommend using our dedicated ").concat(frameworkName, " wizard instead of this wizard.\nThe ").concat(frameworkName, " wizard will set up our ").concat(sdkName, " SDK and also configure uploading source maps for you.\n\nIf you already tried the ").concat(frameworkName, " wizard and it didn't work for you, check out the following guides:\n\nManual source maps configuration for ").concat(frameworkName, ":\n").concat(sourcemapsDocsLink, "\n\nTroubleshooting Source Maps:\nhttps://docs.sentry.io/platforms/javascript/guides/").concat(frameworkSlug, "/sourcemaps/troubleshooting_js/\n"));
144
+ return [4 /*yield*/, (0, clack_utils_1.abortIfCancelled)(prompts_1.default.select({
145
+ message: "Do you want to run the ".concat(frameworkName, " wizard now?"),
146
+ options: [
147
+ {
148
+ label: 'Yes',
149
+ value: 'redirect',
150
+ hint: "".concat(chalk_1.default.green('Recommended')),
151
+ },
152
+ {
153
+ label: 'No, continue with this wizard',
154
+ value: 'continue',
155
+ },
156
+ {
157
+ label: "No, I'll check out the guides ",
158
+ value: 'stop',
159
+ hint: 'Exit this wizard',
160
+ },
161
+ ],
162
+ }))];
163
+ case 1:
164
+ nextStep = _c.sent();
165
+ Sentry.setTag('wrong-wizard-decision', nextStep);
166
+ _b = nextStep;
167
+ switch (_b) {
168
+ case 'redirect': return [3 /*break*/, 2];
169
+ case 'stop': return [3 /*break*/, 3];
170
+ }
171
+ return [3 /*break*/, 5];
172
+ case 2: return [2 /*return*/, wizard];
173
+ case 3: return [4 /*yield*/, (0, clack_utils_1.abort)('Exiting Wizard', 0)];
174
+ case 4:
175
+ _c.sent();
176
+ return [3 /*break*/, 6];
177
+ case 5: return [2 /*return*/, undefined];
178
+ case 6: return [2 /*return*/];
179
+ }
180
+ });
181
+ });
182
+ }
183
+ //# sourceMappingURL=other-wizards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"other-wizards.js","sourceRoot":"","sources":["../../../../src/sourcemaps/utils/other-wizards.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 { runNextjsWizard } from '../../nextjs/nextjs-wizard';\nimport { runSvelteKitWizard } from '../../sveltekit/sveltekit-wizard';\n\nimport {\n abort,\n abortIfCancelled,\n getPackageDotJson,\n} from '../../utils/clack-utils';\nimport {\n findInstalledPackageFromList,\n hasPackageInstalled,\n} from '../../utils/package-json';\n\nimport * as Sentry from '@sentry/node';\nimport { WizardOptions } from '../../utils/types';\n\ntype WizardFunction = (options: WizardOptions) => Promise<void>;\n\ntype FrameworkInfo = {\n frameworkName: string;\n frameworkSlug: string;\n frameworkPackage: string;\n sourcemapsDocsLink: string;\n wizard: WizardFunction;\n};\n\nconst sdkMap: Record<string, FrameworkInfo> = {\n '@sentry/nextjs': {\n frameworkName: 'Next.js',\n frameworkSlug: 'nextjs',\n frameworkPackage: 'next',\n sourcemapsDocsLink:\n 'https://docs.sentry.io/platforms/javascript/guides/nextjs/manual-setup/#configure-source-maps',\n wizard: runNextjsWizard,\n },\n '@sentry/sveltekit': {\n frameworkName: 'SvelteKit',\n frameworkSlug: 'sveltekit',\n frameworkPackage: '@sveltejs/kit',\n sourcemapsDocsLink:\n 'https://docs.sentry.io/platforms/javascript/guides/sveltekit/manual-setup/#configure-source-maps-upload',\n wizard: runSvelteKitWizard,\n },\n};\n\nexport async function checkIfMoreSuitableWizardExistsAndAskForRedirect(): Promise<\n WizardFunction | undefined\n> {\n const sdkName = await checkIfMoreSuitableWizardExists();\n\n if (!sdkName) {\n return undefined;\n }\n\n return await askForRedirect(sdkName);\n}\n\nasync function checkIfMoreSuitableWizardExists(): Promise<string | undefined> {\n Sentry.setTag('using-wrong-wizard', false);\n\n const packageJson = await getPackageDotJson();\n\n const installedSdkPackage = findInstalledPackageFromList(\n Object.keys(sdkMap),\n packageJson,\n );\n\n if (!installedSdkPackage) {\n return undefined;\n }\n\n const sdkPackageName = installedSdkPackage.name;\n\n const { frameworkPackage } = sdkMap[sdkPackageName];\n\n if (!hasPackageInstalled(frameworkPackage, packageJson)) {\n // The user has installed the SDK but not the framework.\n // Maybe it's a false positive and the user is using a different framework.\n // Let's not redirect them to the framework wizard in that case.\n return undefined;\n }\n\n Sentry.setTag('using-wrong-wizard', true);\n\n return sdkPackageName;\n}\n\nasync function askForRedirect(\n sdkName: string,\n): Promise<WizardFunction | undefined> {\n const { frameworkName, sourcemapsDocsLink, frameworkSlug, wizard } =\n sdkMap[sdkName];\n\n clack.log.warn(\n `${chalk.yellow(\n `It seems like you're using this wizard in a ${frameworkName} project.`,\n )}\n\nWe recommend using our dedicated ${frameworkName} wizard instead of this wizard.\nThe ${frameworkName} wizard will set up our ${sdkName} SDK and also configure uploading source maps for you.\n\nIf you already tried the ${frameworkName} wizard and it didn't work for you, check out the following guides:\n\nManual source maps configuration for ${frameworkName}:\n${sourcemapsDocsLink}\n\nTroubleshooting Source Maps:\nhttps://docs.sentry.io/platforms/javascript/guides/${frameworkSlug}/sourcemaps/troubleshooting_js/\n`,\n );\n\n const nextStep: 'redirect' | 'continue' | 'stop' = await abortIfCancelled(\n clack.select({\n message: `Do you want to run the ${frameworkName} wizard now?`,\n options: [\n {\n label: 'Yes',\n value: 'redirect',\n hint: `${chalk.green('Recommended')}`,\n },\n {\n label: 'No, continue with this wizard',\n value: 'continue',\n },\n {\n label: \"No, I'll check out the guides \",\n value: 'stop',\n hint: 'Exit this wizard',\n },\n ],\n }),\n );\n\n Sentry.setTag('wrong-wizard-decision', nextStep);\n\n switch (nextStep) {\n case 'redirect':\n return wizard;\n case 'stop':\n await abort('Exiting Wizard', 0);\n break;\n default:\n return undefined;\n }\n}\n"]}
@@ -69,6 +69,7 @@ var chalk_1 = __importDefault(require("chalk"));
69
69
  var semver_1 = require("semver");
70
70
  var clack_utils_1 = require("../../utils/clack-utils");
71
71
  var Sentry = __importStar(require("@sentry/node"));
72
+ var package_json_1 = require("../../utils/package-json");
72
73
  var MINIMUM_DEBUG_ID_SDK_VERSION = '7.47.0';
73
74
  // This array is orderd by the SDKs we want to check for first.
74
75
  // The reason is that some SDKs depend on others and some users might
@@ -107,22 +108,21 @@ var SENTRY_SDK_PACKAGE_NAMES = [
107
108
  */
108
109
  function ensureMinimumSdkVersionIsInstalled() {
109
110
  return __awaiter(this, void 0, void 0, function () {
110
- var packageJson, installedSdkPackages, installedSdkPackage, installedSdkName, installedSdkVersionOrRange, minInstalledVersion, hasDebugIdCompatibleSdkVersion, hasV7SdkVersion;
111
- return __generator(this, function (_a) {
112
- switch (_a.label) {
113
- case 0: return [4 /*yield*/, (0, clack_utils_1.getPackageDotJson)()];
111
+ var installedSdkPackage, _a, _b, installedSdkName, installedSdkVersionOrRange, minInstalledVersion, hasDebugIdCompatibleSdkVersion, hasV7SdkVersion;
112
+ return __generator(this, function (_c) {
113
+ switch (_c.label) {
114
+ case 0:
115
+ _a = package_json_1.findInstalledPackageFromList;
116
+ _b = [SENTRY_SDK_PACKAGE_NAMES];
117
+ return [4 /*yield*/, (0, clack_utils_1.getPackageDotJson)()];
114
118
  case 1:
115
- packageJson = _a.sent();
116
- installedSdkPackages = SENTRY_SDK_PACKAGE_NAMES.map(function (packageName) { return ({
117
- name: packageName,
118
- version: (0, clack_utils_1.getPackageVersion)(packageName, packageJson),
119
- }); }).filter(function (sdkPackage) { return !!sdkPackage.version; });
120
- installedSdkPackage = installedSdkPackages.length > 0 && installedSdkPackages[0];
119
+ installedSdkPackage = _a.apply(void 0, _b.concat([_c.sent()]));
121
120
  if (!!installedSdkPackage) return [3 /*break*/, 3];
122
121
  return [4 /*yield*/, handleNoSdkInstalled()];
123
- case 2: return [2 /*return*/, _a.sent()];
122
+ case 2: return [2 /*return*/, _c.sent()];
124
123
  case 3:
125
124
  installedSdkName = installedSdkPackage.name, installedSdkVersionOrRange = installedSdkPackage.version;
125
+ Sentry.setTag('installed-sdk', installedSdkName);
126
126
  minInstalledVersion = getMinInstalledVersion(installedSdkVersionOrRange, installedSdkName);
127
127
  if (!minInstalledVersion) {
128
128
  // This is handled in the getMinInstalledVersion function
@@ -139,14 +139,14 @@ function ensureMinimumSdkVersionIsInstalled() {
139
139
  if (!hasV7SdkVersion) return [3 /*break*/, 5];
140
140
  return [4 /*yield*/, handleAutoUpdateSdk(installedSdkName)];
141
141
  case 4:
142
- _a.sent();
142
+ _c.sent();
143
143
  return [2 /*return*/];
144
144
  case 5:
145
145
  // Case 4:
146
146
  return [4 /*yield*/, handleManuallyUpdateSdk(minInstalledVersion)];
147
147
  case 6:
148
148
  // Case 4:
149
- _a.sent();
149
+ _c.sent();
150
150
  return [2 /*return*/];
151
151
  }
152
152
  });
@@ -233,6 +233,7 @@ function handleNoSdkInstalled() {
233
233
  switch (_a.label) {
234
234
  case 0:
235
235
  Sentry.setTag('initial-sdk-version', 'none');
236
+ Sentry.setTag('installed-sdk', 'none');
236
237
  prompts_1.default.log.warn("".concat(chalk_1.default.yellowBright("It seems like you didn't yet install a Sentry SDK in your project."), "\nWe recommend setting up the SDK before continuing with the source maps wizard.\n\n").concat(chalk_1.default.dim("Take a look at our docs to get started:\nhttps://docs.sentry.io/")));
237
238
  return [4 /*yield*/, (0, clack_utils_1.abortIfCancelled)(prompts_1.default.select({
238
239
  message: 'Did you set up your Sentry SDK?',
@@ -1 +1 @@
1
- {"version":3,"file":"sdk-version.js","sourceRoot":"","sources":["../../../../src/sourcemaps/utils/sdk-version.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 { minVersion, satisfies } from 'semver';\nimport {\n abortIfCancelled,\n getPackageDotJson,\n getPackageVersion,\n installPackage,\n} from '../../utils/clack-utils';\n\nimport * as Sentry from '@sentry/node';\n\nconst MINIMUM_DEBUG_ID_SDK_VERSION = '7.47.0';\n\n// This array is orderd by the SDKs we want to check for first.\n// The reason is that some SDKs depend on others and some users might\n// have added the dependencies to their package.json. We want to make sure\n// that we actually detect the \"top-level\" SDK first.\nconst SENTRY_SDK_PACKAGE_NAMES = [\n // SDKs using other framework SDKs need to be checked first\n '@sentry/gatsby',\n '@sentry/nextjs',\n '@sentry/remix',\n '@sentry/sveltekit',\n\n // Framework SDKs\n '@sentry/angular',\n '@sentry/angular-ivy',\n '@sentry/ember',\n '@sentry/react',\n '@sentry/svelte',\n '@sentry/vue',\n '@sentry/serverless',\n\n // Base SDKs\n '@sentry/browser',\n '@sentry/node',\n] as const;\n\ntype SdkPackage = {\n name: (typeof SENTRY_SDK_PACKAGE_NAMES)[number];\n version: string;\n};\n\n/**\n * Check for a minimum SDK version and prompt the user to upgrade if necessary.\n * We distinguish between 4 cases here:\n *\n * 1. Users didn't install any SDK yet\n * -> We tell them to install an SDK and then continue with the wizard\n * 2. Users installed an SDK in the range >=7.47.0\n * -> All good, no need to do anything!\n * 3. Users installed an SDK in the range >=7.0.0 <= 7.46.0\n * -> We ask if they want to auto-update to the latest version\n * 4. Users installed an SDK in the range <7.x\n * -> We tell users to manually upgrade (migrate between majors)\n */\nexport async function ensureMinimumSdkVersionIsInstalled(): Promise<void> {\n const packageJson = await getPackageDotJson();\n\n const installedSdkPackages = SENTRY_SDK_PACKAGE_NAMES.map((packageName) => ({\n name: packageName,\n version: getPackageVersion(packageName, packageJson),\n })).filter((sdkPackage): sdkPackage is SdkPackage => !!sdkPackage.version);\n\n const installedSdkPackage =\n installedSdkPackages.length > 0 && installedSdkPackages[0];\n\n // Case 1:\n if (!installedSdkPackage) {\n return await handleNoSdkInstalled();\n }\n\n const { name: installedSdkName, version: installedSdkVersionOrRange } =\n installedSdkPackage;\n\n const minInstalledVersion = getMinInstalledVersion(\n installedSdkVersionOrRange,\n installedSdkName,\n );\n\n if (!minInstalledVersion) {\n // This is handled in the getMinInstalledVersion function\n return;\n }\n\n const hasDebugIdCompatibleSdkVersion = satisfies(\n minInstalledVersion,\n `>=${MINIMUM_DEBUG_ID_SDK_VERSION}`,\n );\n\n // Case 2:\n if (hasDebugIdCompatibleSdkVersion) {\n Sentry.setTag('initial-sdk-version', '>=7.47.0');\n return;\n }\n\n const hasV7SdkVersion = satisfies(minInstalledVersion, '>=7.0.0');\n\n clack.log.warn(\n `${chalk.yellowBright(\n `It seems like you're using an outdated version (${installedSdkVersionOrRange}) of the ${chalk.bold(\n installedSdkName,\n )} SDK.`,\n )}\nUploading source maps is easiest with an SDK from version ${chalk.bold(\n MINIMUM_DEBUG_ID_SDK_VERSION,\n )} or newer. \n`,\n );\n\n // Case 3:\n if (hasV7SdkVersion) {\n await handleAutoUpdateSdk(installedSdkName);\n return;\n }\n\n // Case 4:\n await handleManuallyUpdateSdk(minInstalledVersion);\n}\n\nasync function handleManuallyUpdateSdk(minInstalledVersion: string) {\n Sentry.setTag(\n 'initial-sdk-version',\n `${satisfies(minInstalledVersion, '>=6.0.0') ? '6.x' : '<6.0.0'}`,\n );\n\n clack.log\n .info(`When upgrading from a version older than 7.0.0, make sure to follow the migration guide:\nhttps://github.com/getsentry/sentry-javascript/blob/develop/MIGRATION.md#upgrading-from-6x-to-7x\n`);\n\n const didUpdate = await abortIfCancelled(\n clack.select({\n message: 'Did you update your SDK to the latest version?',\n options: [\n {\n label: 'Yes!',\n value: true,\n },\n {\n label: \"No, I'll do it later...\",\n value: false,\n hint: chalk.yellow(\n `Remember to update your SDK to at least ${MINIMUM_DEBUG_ID_SDK_VERSION}.`,\n ),\n },\n ],\n initialValue: true,\n }),\n );\n\n Sentry.setTag(\n 'resolved-sdk-status',\n didUpdate ? 'updated-manually' : 'update-later',\n );\n}\n\nasync function handleAutoUpdateSdk(packageName: string) {\n Sentry.setTag('initial-sdk-version', '>=7.0.0 <7.47.0');\n\n const shouldUpdate = await abortIfCancelled(\n clack.select({\n message:\n 'Do you want to automatically update your SDK to the latest version?',\n options: [\n {\n label: 'Yes!',\n value: true,\n hint: chalk.green('Recommended'),\n },\n {\n label: \"No, I'll do it later...\",\n value: false,\n hint: chalk.yellow(\n `Remember to update your SDK to at least ${MINIMUM_DEBUG_ID_SDK_VERSION}.`,\n ),\n },\n ],\n initialValue: true,\n }),\n );\n\n if (shouldUpdate) {\n await installPackage({\n packageName,\n alreadyInstalled: true,\n askBeforeUpdating: false, // we already did this above\n });\n }\n\n Sentry.setTag(\n 'resolved-sdk-status',\n shouldUpdate ? 'updated-automatically' : 'update-later',\n );\n}\n\nasync function handleNoSdkInstalled(): Promise<void> {\n Sentry.setTag('initial-sdk-version', 'none');\n\n clack.log.warn(\n `${chalk.yellowBright(\n `It seems like you didn't yet install a Sentry SDK in your project.`,\n )}\nWe recommend setting up the SDK before continuing with the source maps wizard.\n\n${chalk.dim(`Take a look at our docs to get started:\nhttps://docs.sentry.io/`)}`,\n );\n\n const installedSDK = await abortIfCancelled(\n clack.select({\n message: 'Did you set up your Sentry SDK?',\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 up an SDK before you can use Sentry',\n ),\n },\n ],\n initialValue: true,\n }),\n );\n\n Sentry.setTag(\n 'resolved-sdk-status',\n installedSDK ? 'installed-manually' : 'install-later',\n );\n}\n\nfunction getMinInstalledVersion(\n installedSdkVersionOrRange: string,\n installedSdkName: string,\n): string | undefined {\n try {\n // If `minVersion` is unable to parse the version it will throw an error\n // However, it will also return `null` if the parameter is undefined, which\n // we explicitly checked before but the typing doesn't know that.\n const minInstalledVersion = minVersion(installedSdkVersionOrRange)?.version;\n if (minInstalledVersion) {\n return minInstalledVersion;\n }\n } catch {\n // handling this, along with the `null` case below\n }\n\n Sentry.setTag('initial-sdk-version', 'unknown');\n clack.log.warn(\n `${chalk.yellow(\n `Could not parse the version of your installed SDK (\"${installedSdkName}\": \"${installedSdkVersionOrRange}\")`,\n )}\n\nPlease make sure that your Sentry SDK is updated to version ${chalk.bold(\n MINIMUM_DEBUG_ID_SDK_VERSION,\n )} or newer.\n `,\n );\n\n return undefined;\n}\n"]}
1
+ {"version":3,"file":"sdk-version.js","sourceRoot":"","sources":["../../../../src/sourcemaps/utils/sdk-version.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 { minVersion, satisfies } from 'semver';\nimport {\n abortIfCancelled,\n getPackageDotJson,\n installPackage,\n} from '../../utils/clack-utils';\n\nimport * as Sentry from '@sentry/node';\nimport { findInstalledPackageFromList } from '../../utils/package-json';\n\nconst MINIMUM_DEBUG_ID_SDK_VERSION = '7.47.0';\n\n// This array is orderd by the SDKs we want to check for first.\n// The reason is that some SDKs depend on others and some users might\n// have added the dependencies to their package.json. We want to make sure\n// that we actually detect the \"top-level\" SDK first.\nconst SENTRY_SDK_PACKAGE_NAMES = [\n // SDKs using other framework SDKs need to be checked first\n '@sentry/gatsby',\n '@sentry/nextjs',\n '@sentry/remix',\n '@sentry/sveltekit',\n\n // Framework SDKs\n '@sentry/angular',\n '@sentry/angular-ivy',\n '@sentry/ember',\n '@sentry/react',\n '@sentry/svelte',\n '@sentry/vue',\n '@sentry/serverless',\n\n // Base SDKs\n '@sentry/browser',\n '@sentry/node',\n];\n\n/**\n * Check for a minimum SDK version and prompt the user to upgrade if necessary.\n * We distinguish between 4 cases here:\n *\n * 1. Users didn't install any SDK yet\n * -> We tell them to install an SDK and then continue with the wizard\n * 2. Users installed an SDK in the range >=7.47.0\n * -> All good, no need to do anything!\n * 3. Users installed an SDK in the range >=7.0.0 <= 7.46.0\n * -> We ask if they want to auto-update to the latest version\n * 4. Users installed an SDK in the range <7.x\n * -> We tell users to manually upgrade (migrate between majors)\n */\nexport async function ensureMinimumSdkVersionIsInstalled(): Promise<void> {\n const installedSdkPackage = findInstalledPackageFromList(\n SENTRY_SDK_PACKAGE_NAMES,\n await getPackageDotJson(),\n );\n\n // Case 1:\n if (!installedSdkPackage) {\n return await handleNoSdkInstalled();\n }\n\n const { name: installedSdkName, version: installedSdkVersionOrRange } =\n installedSdkPackage;\n\n Sentry.setTag('installed-sdk', installedSdkName);\n\n const minInstalledVersion = getMinInstalledVersion(\n installedSdkVersionOrRange,\n installedSdkName,\n );\n\n if (!minInstalledVersion) {\n // This is handled in the getMinInstalledVersion function\n return;\n }\n\n const hasDebugIdCompatibleSdkVersion = satisfies(\n minInstalledVersion,\n `>=${MINIMUM_DEBUG_ID_SDK_VERSION}`,\n );\n\n // Case 2:\n if (hasDebugIdCompatibleSdkVersion) {\n Sentry.setTag('initial-sdk-version', '>=7.47.0');\n return;\n }\n\n const hasV7SdkVersion = satisfies(minInstalledVersion, '>=7.0.0');\n\n clack.log.warn(\n `${chalk.yellowBright(\n `It seems like you're using an outdated version (${installedSdkVersionOrRange}) of the ${chalk.bold(\n installedSdkName,\n )} SDK.`,\n )}\nUploading source maps is easiest with an SDK from version ${chalk.bold(\n MINIMUM_DEBUG_ID_SDK_VERSION,\n )} or newer. \n`,\n );\n\n // Case 3:\n if (hasV7SdkVersion) {\n await handleAutoUpdateSdk(installedSdkName);\n return;\n }\n\n // Case 4:\n await handleManuallyUpdateSdk(minInstalledVersion);\n}\n\nasync function handleManuallyUpdateSdk(minInstalledVersion: string) {\n Sentry.setTag(\n 'initial-sdk-version',\n `${satisfies(minInstalledVersion, '>=6.0.0') ? '6.x' : '<6.0.0'}`,\n );\n\n clack.log\n .info(`When upgrading from a version older than 7.0.0, make sure to follow the migration guide:\nhttps://github.com/getsentry/sentry-javascript/blob/develop/MIGRATION.md#upgrading-from-6x-to-7x\n`);\n\n const didUpdate = await abortIfCancelled(\n clack.select({\n message: 'Did you update your SDK to the latest version?',\n options: [\n {\n label: 'Yes!',\n value: true,\n },\n {\n label: \"No, I'll do it later...\",\n value: false,\n hint: chalk.yellow(\n `Remember to update your SDK to at least ${MINIMUM_DEBUG_ID_SDK_VERSION}.`,\n ),\n },\n ],\n initialValue: true,\n }),\n );\n\n Sentry.setTag(\n 'resolved-sdk-status',\n didUpdate ? 'updated-manually' : 'update-later',\n );\n}\n\nasync function handleAutoUpdateSdk(packageName: string) {\n Sentry.setTag('initial-sdk-version', '>=7.0.0 <7.47.0');\n\n const shouldUpdate = await abortIfCancelled(\n clack.select({\n message:\n 'Do you want to automatically update your SDK to the latest version?',\n options: [\n {\n label: 'Yes!',\n value: true,\n hint: chalk.green('Recommended'),\n },\n {\n label: \"No, I'll do it later...\",\n value: false,\n hint: chalk.yellow(\n `Remember to update your SDK to at least ${MINIMUM_DEBUG_ID_SDK_VERSION}.`,\n ),\n },\n ],\n initialValue: true,\n }),\n );\n\n if (shouldUpdate) {\n await installPackage({\n packageName,\n alreadyInstalled: true,\n askBeforeUpdating: false, // we already did this above\n });\n }\n\n Sentry.setTag(\n 'resolved-sdk-status',\n shouldUpdate ? 'updated-automatically' : 'update-later',\n );\n}\n\nasync function handleNoSdkInstalled(): Promise<void> {\n Sentry.setTag('initial-sdk-version', 'none');\n Sentry.setTag('installed-sdk', 'none');\n\n clack.log.warn(\n `${chalk.yellowBright(\n `It seems like you didn't yet install a Sentry SDK in your project.`,\n )}\nWe recommend setting up the SDK before continuing with the source maps wizard.\n\n${chalk.dim(`Take a look at our docs to get started:\nhttps://docs.sentry.io/`)}`,\n );\n\n const installedSDK = await abortIfCancelled(\n clack.select({\n message: 'Did you set up your Sentry SDK?',\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 up an SDK before you can use Sentry',\n ),\n },\n ],\n initialValue: true,\n }),\n );\n\n Sentry.setTag(\n 'resolved-sdk-status',\n installedSDK ? 'installed-manually' : 'install-later',\n );\n}\n\nfunction getMinInstalledVersion(\n installedSdkVersionOrRange: string,\n installedSdkName: string,\n): string | undefined {\n try {\n // If `minVersion` is unable to parse the version it will throw an error\n // However, it will also return `null` if the parameter is undefined, which\n // we explicitly checked before but the typing doesn't know that.\n const minInstalledVersion = minVersion(installedSdkVersionOrRange)?.version;\n if (minInstalledVersion) {\n return minInstalledVersion;\n }\n } catch {\n // handling this, along with the `null` case below\n }\n\n Sentry.setTag('initial-sdk-version', 'unknown');\n clack.log.warn(\n `${chalk.yellow(\n `Could not parse the version of your installed SDK (\"${installedSdkName}\": \"${installedSdkVersionOrRange}\")`,\n )}\n\nPlease make sure that your Sentry SDK is updated to version ${chalk.bold(\n MINIMUM_DEBUG_ID_SDK_VERSION,\n )} or newer.\n `,\n );\n\n return undefined;\n}\n"]}
@@ -44,6 +44,7 @@ exports.runSvelteKitWizard = void 0;
44
44
  var prompts_1 = __importDefault(require("@clack/prompts"));
45
45
  var chalk_1 = __importDefault(require("chalk"));
46
46
  var clack_utils_1 = require("../utils/clack-utils");
47
+ var package_json_1 = require("../utils/package-json");
47
48
  var sdk_example_1 = require("./sdk-example");
48
49
  var sdk_setup_1 = require("./sdk-setup");
49
50
  var sentry_cli_setup_1 = require("./sentry-cli-setup");
@@ -81,7 +82,7 @@ function runSvelteKitWizard(options) {
81
82
  selectedProject = _c.sent();
82
83
  return [4 /*yield*/, (0, clack_utils_1.installPackage)({
83
84
  packageName: '@sentry/sveltekit',
84
- alreadyInstalled: (0, clack_utils_1.hasPackageInstalled)('@sentry/sveltekit', packageJson),
85
+ alreadyInstalled: (0, package_json_1.hasPackageInstalled)('@sentry/sveltekit', packageJson),
85
86
  })];
86
87
  case 7:
87
88
  _c.sent();
@@ -1 +1 @@
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 askForProjectSelection,\n askForSelfHosted,\n askForWizardLogin,\n confirmContinueEvenThoughNoGitRepo,\n ensurePackageIsInstalled,\n getPackageDotJson,\n hasPackageInstalled,\n installPackage,\n printWelcome,\n} from '../utils/clack-utils';\nimport { WizardOptions } from '../utils/types';\nimport { createExamplePage } from './sdk-example';\nimport { createOrMergeSvelteKitFiles, loadSvelteConfig } from './sdk-setup';\n\nimport { setupCLIConfig } from './sentry-cli-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 { url: sentryUrl, selfHosted } = await askForSelfHosted(options.url);\n\n const { projects, apiKeys } = await askForWizardLogin({\n promoCode: options.promoCode,\n url: sentryUrl,\n platform: 'javascript-sveltekit',\n });\n\n const selectedProject = await askForProjectSelection(projects);\n\n await installPackage({\n packageName: '@sentry/sveltekit',\n alreadyInstalled: hasPackageInstalled('@sentry/sveltekit', packageJson),\n });\n\n await setupCLIConfig(apiKeys.token, selectedProject, sentryUrl);\n\n const dsn = selectedProject.keys[0].dsn.public;\n\n const svelteConfig = await loadSvelteConfig();\n\n try {\n await createOrMergeSvelteKitFiles(dsn, svelteConfig);\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 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 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"]}
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 askForProjectSelection,\n askForSelfHosted,\n askForWizardLogin,\n confirmContinueEvenThoughNoGitRepo,\n ensurePackageIsInstalled,\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\nimport { setupCLIConfig } from './sentry-cli-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 { url: sentryUrl, selfHosted } = await askForSelfHosted(options.url);\n\n const { projects, apiKeys } = await askForWizardLogin({\n promoCode: options.promoCode,\n url: sentryUrl,\n platform: 'javascript-sveltekit',\n });\n\n const selectedProject = await askForProjectSelection(projects);\n\n await installPackage({\n packageName: '@sentry/sveltekit',\n alreadyInstalled: hasPackageInstalled('@sentry/sveltekit', packageJson),\n });\n\n await setupCLIConfig(apiKeys.token, selectedProject, sentryUrl);\n\n const dsn = selectedProject.keys[0].dsn.public;\n\n const svelteConfig = await loadSvelteConfig();\n\n try {\n await createOrMergeSvelteKitFiles(dsn, svelteConfig);\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 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 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"]}
@@ -2,3 +2,4 @@ export declare function withTelemetry<F>(options: {
2
2
  enabled: boolean;
3
3
  integration: string;
4
4
  }, callback: () => F | Promise<F>): Promise<F>;
5
+ export declare function traceStep<T>(step: string, callback: () => T): T;
@@ -39,7 +39,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
39
39
  return (mod && mod.__esModule) ? mod : { "default": mod };
40
40
  };
41
41
  Object.defineProperty(exports, "__esModule", { value: true });
42
- exports.withTelemetry = void 0;
42
+ exports.traceStep = exports.withTelemetry = void 0;
43
43
  var node_1 = require("@sentry/node");
44
44
  var package_json_1 = __importDefault(require("../package.json"));
45
45
  function withTelemetry(options, callback) {
@@ -53,6 +53,7 @@ function withTelemetry(options, callback) {
53
53
  transaction = sentryHub.startTransaction({
54
54
  name: 'sentry-wizard-execution',
55
55
  status: 'ok',
56
+ op: 'wizard.flow',
56
57
  });
57
58
  sentryHub.getScope().setSpan(transaction);
58
59
  sentrySession = sentryHub.startSession();
@@ -104,6 +105,7 @@ function createSentryInstance(enabled, integration) {
104
105
  return event;
105
106
  },
106
107
  transport: node_1.makeNodeTransport,
108
+ debug: true,
107
109
  });
108
110
  var hub = new node_1.Hub(client);
109
111
  hub.setTag('integration', integration);
@@ -111,4 +113,8 @@ function createSentryInstance(enabled, integration) {
111
113
  hub.setTag('platform', process.platform);
112
114
  return { sentryHub: hub, sentryClient: client };
113
115
  }
116
+ function traceStep(step, callback) {
117
+ return (0, node_1.trace)({ name: step, op: 'wizard.step' }, function () { return callback(); });
118
+ }
119
+ exports.traceStep = traceStep;
114
120
  //# sourceMappingURL=telemetry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/telemetry.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qCAQsB;AACtB,iEAA0C;AAE1C,SAAsB,aAAa,CACjC,OAGC,EACD,QAA8B;;;;;;oBAExB,KAA8B,oBAAoB,CACtD,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,WAAW,CACpB,EAHO,SAAS,eAAA,EAAE,YAAY,kBAAA,CAG7B;oBAEF,IAAA,eAAQ,EAAC,SAAS,CAAC,CAAC;oBAEd,WAAW,GAAG,SAAS,CAAC,gBAAgB,CAAC;wBAC7C,IAAI,EAAE,yBAAyB;wBAC/B,MAAM,EAAE,IAAI;qBACb,CAAC,CAAC;oBACH,SAAS,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;oBACpC,aAAa,GAAG,SAAS,CAAC,YAAY,EAAE,CAAC;oBAC/C,SAAS,CAAC,cAAc,EAAE,CAAC;;;;oBAGlB,qBAAM,IAAA,0BAAmB,EAAC,cAAM,OAAA,QAAQ,EAAE,EAAV,CAAU,CAAC,EAAA;wBAAlD,sBAAO,SAA2C,EAAC;;;oBAEnD,SAAS,CAAC,gBAAgB,CAAC,gCAAgC,CAAC,CAAC;oBAC7D,WAAW,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;oBACxC,aAAa,CAAC,MAAM,GAAG,SAAS,CAAC;oBACjC,MAAM,GAAC,CAAC;;oBAER,WAAW,CAAC,MAAM,EAAE,CAAC;oBACrB,SAAS,CAAC,UAAU,EAAE,CAAC;oBACvB,qBAAM,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,EAAA;;oBAA9B,SAA8B,CAAC;;;;;;CAElC;AAlCD,sCAkCC;AAED,SAAS,oBAAoB,CAAC,OAAgB,EAAE,WAAmB;IACjE,IAAM,MAAM,GAAG,IAAI,iBAAU,CAAC;QAC5B,GAAG,EAAE,+EAA+E;QACpF,OAAO,EAAE,OAAO;QAEhB,gBAAgB,EAAE,CAAC;QACnB,UAAU,EAAE,CAAC;QAEb,OAAO,EAAE,sBAAW,CAAC,OAAO;QAC5B,YAAY,EAAE,CAAC,IAAI,mBAAY,CAAC,IAAI,EAAE,CAAC;QACvC,uBAAuB,EAAE,CAAC,wBAAwB,CAAC;QAEnD,WAAW,EAAE,yBAAkB;QAE/B,qBAAqB,EAAE,UAAC,KAAK;YAC3B,OAAO,KAAK,CAAC,WAAW,CAAC,CAAC,gCAAgC;YAC1D,OAAO,KAAK,CAAC;QACf,CAAC;QAED,UAAU,EAAE,UAAC,KAAK;;YAChB,MAAA,MAAA,KAAK,CAAC,SAAS,0CAAE,MAAM,0CAAE,OAAO,CAAC,UAAC,SAAS;gBACzC,OAAO,SAAS,CAAC,UAAU,CAAC;YAC9B,CAAC,CAAC,CAAC;YAEH,OAAO,KAAK,CAAC,WAAW,CAAC,CAAC,gCAAgC;YAC1D,OAAO,KAAK,CAAC;QACf,CAAC;QAED,SAAS,EAAE,wBAAiB;KAC7B,CAAC,CAAC;IAEH,IAAM,GAAG,GAAG,IAAI,UAAG,CAAC,MAAM,CAAC,CAAC;IAE5B,GAAG,CAAC,MAAM,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IACvC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IACpC,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEzC,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC;AAClD,CAAC","sourcesContent":["import {\n defaultStackParser,\n Hub,\n Integrations,\n makeMain,\n makeNodeTransport,\n NodeClient,\n runWithAsyncContext,\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 });\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\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"]}
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"]}
@@ -0,0 +1,3 @@
1
+ export declare function hasSentryCLI(): boolean;
2
+ export declare function installSentryCLI(): Promise<void>;
3
+ export declare function execute(command: string): string;