@sentry/wizard 3.36.0 → 3.37.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 (39) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/e2e-tests/tests/nuxt-3.test.js +7 -13
  3. package/dist/e2e-tests/tests/nuxt-3.test.js.map +1 -1
  4. package/dist/e2e-tests/tests/nuxt-4.test.js +7 -13
  5. package/dist/e2e-tests/tests/nuxt-4.test.js.map +1 -1
  6. package/dist/package.json +1 -1
  7. package/dist/src/nuxt/nuxt-wizard.js +26 -20
  8. package/dist/src/nuxt/nuxt-wizard.js.map +1 -1
  9. package/dist/src/nuxt/sdk-setup.d.ts +6 -2
  10. package/dist/src/nuxt/sdk-setup.js +106 -43
  11. package/dist/src/nuxt/sdk-setup.js.map +1 -1
  12. package/dist/src/nuxt/templates.d.ts +1 -1
  13. package/dist/src/nuxt/templates.js +5 -3
  14. package/dist/src/nuxt/templates.js.map +1 -1
  15. package/dist/src/nuxt/types.d.ts +2 -0
  16. package/dist/src/nuxt/types.js +10 -0
  17. package/dist/src/nuxt/types.js.map +1 -0
  18. package/dist/src/nuxt/utils.js +42 -6
  19. package/dist/src/nuxt/utils.js.map +1 -1
  20. package/dist/src/utils/clack-utils.d.ts +5 -0
  21. package/dist/src/utils/clack-utils.js +15 -3
  22. package/dist/src/utils/clack-utils.js.map +1 -1
  23. package/dist/test/nuxt/templates.test.js +10 -1
  24. package/dist/test/nuxt/templates.test.js.map +1 -1
  25. package/e2e-tests/test-applications/nuxt-4-test-app/README.md +75 -0
  26. package/e2e-tests/test-applications/nuxt-4-test-app/nuxt.config.ts +6 -0
  27. package/e2e-tests/test-applications/nuxt-4-test-app/package.json +18 -0
  28. package/e2e-tests/test-applications/nuxt-4-test-app/public/favicon.ico +0 -0
  29. package/e2e-tests/test-applications/nuxt-4-test-app/public/robots.txt +1 -0
  30. package/e2e-tests/tests/nuxt-3.test.ts +6 -9
  31. package/e2e-tests/tests/nuxt-4.test.ts +6 -9
  32. package/package.json +1 -1
  33. package/src/nuxt/nuxt-wizard.ts +11 -4
  34. package/src/nuxt/sdk-setup.ts +134 -37
  35. package/src/nuxt/templates.ts +15 -8
  36. package/src/nuxt/types.ts +8 -0
  37. package/src/nuxt/utils.ts +17 -7
  38. package/src/utils/clack-utils.ts +13 -1
  39. package/test/nuxt/templates.test.ts +33 -6
package/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## 3.37.0
4
+
5
+ - feat(nuxt): Add `import-in-the-middle` install step when using pnpm ([#727](https://github.com/getsentry/sentry-wizard/pull/727))
6
+ - fix(nuxt): Remove unused parameter in sentry-example-api template ([#734](https://github.com/getsentry/sentry-wizard/pull/734))
7
+ - fix(nuxt): Remove option to downgrade override nitropack ([#744](https://github.com/getsentry/sentry-wizard/pull/744))
8
+ - feat(nuxt): Add deployment-platform flow with links to docs ([#747](https://github.com/getsentry/sentry-wizard/pull/747))
9
+
3
10
  ## 3.36.0
4
11
 
5
12
  - Remove Profiling for Android ([#720](https://github.com/getsentry/sentry-wizard/pull/720))
@@ -84,7 +84,7 @@ describe('Nuxt-3', function () {
84
84
  });
85
85
  function runWizardOnNuxtProject(projectDir) {
86
86
  return __awaiter(this, void 0, void 0, function () {
87
- var integration, wizardInstance, packageManagerPrompted, nitropackOverridePrompted, _a, nftOverridePrompted, _b, tracingOptionPrompted, _c, replayOptionPrompted, _d, _e;
87
+ var integration, wizardInstance, packageManagerPrompted, nftOverridePrompted, _a, deploymentPlatformPrompted, _b, tracingOptionPrompted, _c, replayOptionPrompted, _d, _e;
88
88
  return __generator(this, function (_f) {
89
89
  switch (_f.label) {
90
90
  case 0:
@@ -97,31 +97,25 @@ function runWizardOnNuxtProject(projectDir) {
97
97
  if (!_a) return [3 /*break*/, 3];
98
98
  return [4 /*yield*/, wizardInstance.sendStdinAndWaitForOutput(
99
99
  // Selecting `yarn` as the package manager
100
- [utils_1.KEYS.DOWN, utils_1.KEYS.ENTER],
101
- // Do you want to install version 2.9.7 of nitropack and add an override to package.json?
102
- 'Do you want to add an override for nitropack version ~2.9.7?', {
100
+ [utils_1.KEYS.DOWN, utils_1.KEYS.ENTER], 'Do you want to add an override for @vercel/nft version ^0.27.4?', {
103
101
  timeout: 240000,
104
102
  })];
105
103
  case 2:
106
104
  _a = (_f.sent());
107
105
  _f.label = 3;
108
106
  case 3:
109
- nitropackOverridePrompted = _a;
110
- _b = nitropackOverridePrompted;
107
+ nftOverridePrompted = _a;
108
+ _b = nftOverridePrompted;
111
109
  if (!_b) return [3 /*break*/, 5];
112
- return [4 /*yield*/, wizardInstance.sendStdinAndWaitForOutput(
113
- // Selecting `yes` to downgrade nitropack
114
- utils_1.KEYS.ENTER, 'Do you want to add an override for @vercel/nft version ^0.27.4?',
115
- // 'Do you want to install version',
116
- {
110
+ return [4 /*yield*/, wizardInstance.sendStdinAndWaitForOutput(utils_1.KEYS.ENTER, 'Please select your deployment platform.', {
117
111
  timeout: 240000,
118
112
  })];
119
113
  case 4:
120
114
  _b = (_f.sent());
121
115
  _f.label = 5;
122
116
  case 5:
123
- nftOverridePrompted = _b;
124
- _c = nftOverridePrompted;
117
+ deploymentPlatformPrompted = _b;
118
+ _c = deploymentPlatformPrompted;
125
119
  if (!_c) return [3 /*break*/, 7];
126
120
  return [4 /*yield*/, wizardInstance.sendStdinAndWaitForOutput(utils_1.KEYS.ENTER,
127
121
  // "Do you want to enable Tracing", sometimes doesn't work as `Tracing` can be printed in bold.
@@ -1 +1 @@
1
- {"version":3,"file":"nuxt-3.test.js","sourceRoot":"","sources":["../../../e2e-tests/tests/nuxt-3.test.ts"],"names":[],"mappings":"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","sourcesContent":["import * as path from 'path';\nimport {\n checkEnvBuildPlugin,\n checkFileContents,\n checkFileExists,\n checkIfBuilds,\n checkIfRunsOnProdMode,\n checkPackageJson,\n cleanupGit,\n KEYS,\n revertLocalChanges,\n startWizardInstance,\n TEST_ARGS,\n} from '../utils';\nimport { Integration } from '../../lib/Constants';\n\ndescribe('Nuxt-3', () => {\n const projectDir = path.resolve(\n __dirname,\n '../test-applications/nuxt-3-test-app',\n );\n\n beforeAll(async () => {\n await runWizardOnNuxtProject(projectDir);\n });\n\n afterAll(() => {\n revertLocalChanges(projectDir);\n cleanupGit(projectDir);\n });\n\n testNuxtProjectSetup(projectDir);\n\n testNuxtProjectConfigs(projectDir);\n\n testNuxtProjectBuildsAndRuns(projectDir);\n});\n\nasync function runWizardOnNuxtProject(projectDir: string): Promise<void> {\n const integration = Integration.nuxt;\n\n const wizardInstance = startWizardInstance(integration, projectDir);\n const packageManagerPrompted = await wizardInstance.waitForOutput(\n 'Please select your package manager.',\n );\n\n const nitropackOverridePrompted =\n packageManagerPrompted &&\n (await wizardInstance.sendStdinAndWaitForOutput(\n // Selecting `yarn` as the package manager\n [KEYS.DOWN, KEYS.ENTER],\n // Do you want to install version 2.9.7 of nitropack and add an override to package.json?\n 'Do you want to add an override for nitropack version ~2.9.7?',\n {\n timeout: 240_000,\n },\n ));\n\n const nftOverridePrompted =\n nitropackOverridePrompted &&\n (await wizardInstance.sendStdinAndWaitForOutput(\n // Selecting `yes` to downgrade nitropack\n KEYS.ENTER,\n 'Do you want to add an override for @vercel/nft version ^0.27.4?',\n // 'Do you want to install version',\n {\n timeout: 240_000,\n },\n ));\n\n const tracingOptionPrompted =\n nftOverridePrompted &&\n (await wizardInstance.sendStdinAndWaitForOutput(\n KEYS.ENTER,\n // \"Do you want to enable Tracing\", sometimes doesn't work as `Tracing` can be printed in bold.\n 'Do you want to enable',\n {\n timeout: 240_000,\n },\n ));\n\n const replayOptionPrompted =\n tracingOptionPrompted &&\n (await wizardInstance.sendStdinAndWaitForOutput(\n KEYS.ENTER,\n // \"Do you want to enable Sentry Session Replay\", sometimes doesn't work as `Sentry Session Replay` can be printed in bold.\n 'to get a video-like reproduction of errors during a user session?',\n ));\n\n replayOptionPrompted &&\n (await wizardInstance.sendStdinAndWaitForOutput(\n [KEYS.ENTER],\n 'Do you want to create an example page',\n {\n optional: true,\n },\n ));\n\n await wizardInstance.sendStdinAndWaitForOutput(\n [KEYS.ENTER, KEYS.ENTER],\n 'Successfully installed the Sentry Nuxt SDK!',\n );\n\n wizardInstance.kill();\n}\n\nfunction testNuxtProjectSetup(projectDir: string) {\n const integration = Integration.nuxt;\n\n test('package.json is updated correctly', () => {\n checkPackageJson(projectDir, integration);\n });\n\n test('.env-sentry-build-plugin is created and contains the auth token', () => {\n checkEnvBuildPlugin(projectDir);\n });\n\n test('config files created', () => {\n checkFileExists(`${projectDir}/sentry.server.config.ts`);\n checkFileExists(`${projectDir}/sentry.client.config.ts`);\n });\n\n test('example page exists', () => {\n checkFileExists(`${projectDir}/pages/sentry-example-page.vue`);\n checkFileExists(`${projectDir}/server/api/sentry-example-api.ts`);\n });\n}\n\nfunction testNuxtProjectConfigs(projectDir: string) {\n test('nuxt config contains sentry module', () => {\n checkFileContents(path.resolve(projectDir, 'nuxt.config.ts'), [\n \"modules: ['@sentry/nuxt/module'],\",\n 'sentry: {',\n ' sourceMapsUploadOptions: {',\n ` org: '${TEST_ARGS.ORG_SLUG}',`,\n ` project: '${TEST_ARGS.PROJECT_SLUG}'`,\n ' }',\n '},',\n 'sourcemap: {',\n \" client: 'hidden'\",\n '}',\n ]);\n });\n\n test('sentry.client.config.ts contents', () => {\n checkFileContents(path.resolve(projectDir, 'sentry.client.config.ts'), [\n 'import * as Sentry from \"@sentry/nuxt\";',\n 'Sentry.init({',\n ' // If set up, you can use your runtime config here',\n ' // dsn: useRuntimeConfig().public.sentry.dsn,',\n ` dsn: \"${TEST_ARGS.PROJECT_DSN}\",`,\n ' // We recommend adjusting this value in production, or using tracesSampler',\n ' // for finer control',\n ' tracesSampleRate: 1.0,',\n ' // This sets the sample rate to be 10%. You may want this to be 100% while',\n ' // in development and sample at a lower rate in production',\n ' replaysSessionSampleRate: 0.1,',\n ' // If the entire session is not sampled, use the below sample rate to sample',\n ' // sessions when an error occurs.',\n ' replaysOnErrorSampleRate: 1.0,',\n \" // If you don't want to use Session Replay, just remove the line below:\",\n ' integrations: [Sentry.replayIntegration()],',\n \" // Setting this option to true will print useful information to the console while you're setting up Sentry.\",\n ' debug: false,',\n '});',\n ]);\n });\n\n test('sentry.server.config.ts contents', () => {\n checkFileContents(path.resolve(projectDir, 'sentry.server.config.ts'), [\n 'import * as Sentry from \"@sentry/nuxt\";',\n 'Sentry.init({',\n ` dsn: \"${TEST_ARGS.PROJECT_DSN}\",`,\n ' // We recommend adjusting this value in production, or using tracesSampler',\n ' // for finer control',\n ' tracesSampleRate: 1.0,',\n \" // Setting this option to true will print useful information to the console while you're setting up Sentry.\",\n ' debug: false,',\n '});',\n ]);\n });\n}\n\nfunction testNuxtProjectBuildsAndRuns(projectDir: string) {\n test('builds successfully', async () => {\n await checkIfBuilds(projectDir, 'preview this build');\n });\n\n test('runs on prod mode correctly', async () => {\n await checkIfRunsOnProdMode(projectDir, 'Listening on');\n });\n}\n"]}
1
+ {"version":3,"file":"nuxt-3.test.js","sourceRoot":"","sources":["../../../e2e-tests/tests/nuxt-3.test.ts"],"names":[],"mappings":"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","sourcesContent":["import * as path from 'path';\nimport {\n checkEnvBuildPlugin,\n checkFileContents,\n checkFileExists,\n checkIfBuilds,\n checkIfRunsOnProdMode,\n checkPackageJson,\n cleanupGit,\n KEYS,\n revertLocalChanges,\n startWizardInstance,\n TEST_ARGS,\n} from '../utils';\nimport { Integration } from '../../lib/Constants';\n\ndescribe('Nuxt-3', () => {\n const projectDir = path.resolve(\n __dirname,\n '../test-applications/nuxt-3-test-app',\n );\n\n beforeAll(async () => {\n await runWizardOnNuxtProject(projectDir);\n });\n\n afterAll(() => {\n revertLocalChanges(projectDir);\n cleanupGit(projectDir);\n });\n\n testNuxtProjectSetup(projectDir);\n\n testNuxtProjectConfigs(projectDir);\n\n testNuxtProjectBuildsAndRuns(projectDir);\n});\n\nasync function runWizardOnNuxtProject(projectDir: string): Promise<void> {\n const integration = Integration.nuxt;\n\n const wizardInstance = startWizardInstance(integration, projectDir);\n const packageManagerPrompted = await wizardInstance.waitForOutput(\n 'Please select your package manager.',\n );\n\n const nftOverridePrompted =\n packageManagerPrompted &&\n (await wizardInstance.sendStdinAndWaitForOutput(\n // Selecting `yarn` as the package manager\n [KEYS.DOWN, KEYS.ENTER],\n 'Do you want to add an override for @vercel/nft version ^0.27.4?',\n {\n timeout: 240_000,\n },\n ));\n\n const deploymentPlatformPrompted =\n nftOverridePrompted &&\n (await wizardInstance.sendStdinAndWaitForOutput(\n KEYS.ENTER,\n 'Please select your deployment platform.',\n {\n timeout: 240_000,\n },\n ));\n\n const tracingOptionPrompted =\n deploymentPlatformPrompted &&\n (await wizardInstance.sendStdinAndWaitForOutput(\n KEYS.ENTER,\n // \"Do you want to enable Tracing\", sometimes doesn't work as `Tracing` can be printed in bold.\n 'Do you want to enable',\n {\n timeout: 240_000,\n },\n ));\n\n const replayOptionPrompted =\n tracingOptionPrompted &&\n (await wizardInstance.sendStdinAndWaitForOutput(\n KEYS.ENTER,\n // \"Do you want to enable Sentry Session Replay\", sometimes doesn't work as `Sentry Session Replay` can be printed in bold.\n 'to get a video-like reproduction of errors during a user session?',\n ));\n\n replayOptionPrompted &&\n (await wizardInstance.sendStdinAndWaitForOutput(\n [KEYS.ENTER],\n 'Do you want to create an example page',\n {\n optional: true,\n },\n ));\n\n await wizardInstance.sendStdinAndWaitForOutput(\n [KEYS.ENTER, KEYS.ENTER],\n 'Successfully installed the Sentry Nuxt SDK!',\n );\n\n wizardInstance.kill();\n}\n\nfunction testNuxtProjectSetup(projectDir: string) {\n const integration = Integration.nuxt;\n\n test('package.json is updated correctly', () => {\n checkPackageJson(projectDir, integration);\n });\n\n test('.env-sentry-build-plugin is created and contains the auth token', () => {\n checkEnvBuildPlugin(projectDir);\n });\n\n test('config files created', () => {\n checkFileExists(`${projectDir}/sentry.server.config.ts`);\n checkFileExists(`${projectDir}/sentry.client.config.ts`);\n });\n\n test('example page exists', () => {\n checkFileExists(`${projectDir}/pages/sentry-example-page.vue`);\n checkFileExists(`${projectDir}/server/api/sentry-example-api.ts`);\n });\n}\n\nfunction testNuxtProjectConfigs(projectDir: string) {\n test('nuxt config contains sentry module', () => {\n checkFileContents(path.resolve(projectDir, 'nuxt.config.ts'), [\n \"modules: ['@sentry/nuxt/module'],\",\n 'sentry: {',\n ' sourceMapsUploadOptions: {',\n ` org: '${TEST_ARGS.ORG_SLUG}',`,\n ` project: '${TEST_ARGS.PROJECT_SLUG}'`,\n ' }',\n '},',\n 'sourcemap: {',\n \" client: 'hidden'\",\n '}',\n ]);\n });\n\n test('sentry.client.config.ts contents', () => {\n checkFileContents(path.resolve(projectDir, 'sentry.client.config.ts'), [\n 'import * as Sentry from \"@sentry/nuxt\";',\n 'Sentry.init({',\n ' // If set up, you can use your runtime config here',\n ' // dsn: useRuntimeConfig().public.sentry.dsn,',\n ` dsn: \"${TEST_ARGS.PROJECT_DSN}\",`,\n ' // We recommend adjusting this value in production, or using tracesSampler',\n ' // for finer control',\n ' tracesSampleRate: 1.0,',\n ' // This sets the sample rate to be 10%. You may want this to be 100% while',\n ' // in development and sample at a lower rate in production',\n ' replaysSessionSampleRate: 0.1,',\n ' // If the entire session is not sampled, use the below sample rate to sample',\n ' // sessions when an error occurs.',\n ' replaysOnErrorSampleRate: 1.0,',\n \" // If you don't want to use Session Replay, just remove the line below:\",\n ' integrations: [Sentry.replayIntegration()],',\n \" // Setting this option to true will print useful information to the console while you're setting up Sentry.\",\n ' debug: false,',\n '});',\n ]);\n });\n\n test('sentry.server.config.ts contents', () => {\n checkFileContents(path.resolve(projectDir, 'sentry.server.config.ts'), [\n 'import * as Sentry from \"@sentry/nuxt\";',\n 'Sentry.init({',\n ` dsn: \"${TEST_ARGS.PROJECT_DSN}\",`,\n ' // We recommend adjusting this value in production, or using tracesSampler',\n ' // for finer control',\n ' tracesSampleRate: 1.0,',\n \" // Setting this option to true will print useful information to the console while you're setting up Sentry.\",\n ' debug: false,',\n '});',\n ]);\n });\n}\n\nfunction testNuxtProjectBuildsAndRuns(projectDir: string) {\n test('builds successfully', async () => {\n await checkIfBuilds(projectDir, 'preview this build');\n });\n\n test('runs on prod mode correctly', async () => {\n await checkIfRunsOnProdMode(projectDir, 'Listening on');\n });\n}\n"]}
@@ -85,7 +85,7 @@ describe('Nuxt-4', function () {
85
85
  });
86
86
  function runWizardOnNuxtProject(projectDir) {
87
87
  return __awaiter(this, void 0, void 0, function () {
88
- var integration, wizardInstance, packageManagerPrompted, nitropackOverridePrompted, _a, nftOverridePrompted, _b, tracingOptionPrompted, _c, replayOptionPrompted, _d, _e;
88
+ var integration, wizardInstance, packageManagerPrompted, nftOverridePrompted, _a, deploymentPlatformPrompted, _b, tracingOptionPrompted, _c, replayOptionPrompted, _d, _e;
89
89
  return __generator(this, function (_f) {
90
90
  switch (_f.label) {
91
91
  case 0:
@@ -98,31 +98,25 @@ function runWizardOnNuxtProject(projectDir) {
98
98
  if (!_a) return [3 /*break*/, 3];
99
99
  return [4 /*yield*/, wizardInstance.sendStdinAndWaitForOutput(
100
100
  // Selecting `yarn` as the package manager
101
- [utils_2.KEYS.DOWN, utils_2.KEYS.ENTER],
102
- // Do you want to install version 2.9.7 of nitropack and add an override to package.json?
103
- 'Do you want to add an override for nitropack version ~2.9.7?', {
101
+ [utils_2.KEYS.DOWN, utils_2.KEYS.ENTER], 'Do you want to add an override for @vercel/nft version ^0.27.4?', {
104
102
  timeout: 240000,
105
103
  })];
106
104
  case 2:
107
105
  _a = (_f.sent());
108
106
  _f.label = 3;
109
107
  case 3:
110
- nitropackOverridePrompted = _a;
111
- _b = nitropackOverridePrompted;
108
+ nftOverridePrompted = _a;
109
+ _b = nftOverridePrompted;
112
110
  if (!_b) return [3 /*break*/, 5];
113
- return [4 /*yield*/, wizardInstance.sendStdinAndWaitForOutput(
114
- // Selecting `yes` to downgrade nitropack
115
- utils_2.KEYS.ENTER, 'Do you want to add an override for @vercel/nft version ^0.27.4?',
116
- // 'Do you want to install version',
117
- {
111
+ return [4 /*yield*/, wizardInstance.sendStdinAndWaitForOutput(utils_2.KEYS.ENTER, 'Please select your deployment platform.', {
118
112
  timeout: 240000,
119
113
  })];
120
114
  case 4:
121
115
  _b = (_f.sent());
122
116
  _f.label = 5;
123
117
  case 5:
124
- nftOverridePrompted = _b;
125
- _c = nftOverridePrompted;
118
+ deploymentPlatformPrompted = _b;
119
+ _c = deploymentPlatformPrompted;
126
120
  if (!_c) return [3 /*break*/, 7];
127
121
  return [4 /*yield*/, wizardInstance.sendStdinAndWaitForOutput(utils_2.KEYS.ENTER,
128
122
  // "Do you want to enable Tracing", sometimes doesn't work as `Tracing` can be printed in bold.
@@ -1 +1 @@
1
- {"version":3,"file":"nuxt-4.test.js","sourceRoot":"","sources":["../../../e2e-tests/tests/nuxt-4.test.ts"],"names":[],"mappings":"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","sourcesContent":["import * as path from 'path';\nimport { Integration } from '../../lib/Constants';\nimport { cleanupGit, revertLocalChanges } from '../utils';\nimport {\n checkEnvBuildPlugin,\n checkFileContents,\n checkFileExists,\n checkIfBuilds,\n checkIfRunsOnProdMode,\n checkPackageJson,\n KEYS,\n startWizardInstance,\n TEST_ARGS,\n} from '../utils';\n\ndescribe('Nuxt-4', () => {\n const projectDir = path.resolve(\n __dirname,\n '../test-applications/nuxt-4-test-app',\n );\n\n beforeAll(async () => {\n await runWizardOnNuxtProject(projectDir);\n });\n\n afterAll(() => {\n revertLocalChanges(projectDir);\n cleanupGit(projectDir);\n });\n\n testNuxtProjectSetup(projectDir);\n\n testNuxtProjectConfigs(projectDir);\n\n testNuxtProjectBuildsAndRuns(projectDir);\n});\n\nasync function runWizardOnNuxtProject(projectDir: string): Promise<void> {\n const integration = Integration.nuxt;\n\n const wizardInstance = startWizardInstance(integration, projectDir);\n const packageManagerPrompted = await wizardInstance.waitForOutput(\n 'Please select your package manager.',\n );\n\n const nitropackOverridePrompted =\n packageManagerPrompted &&\n (await wizardInstance.sendStdinAndWaitForOutput(\n // Selecting `yarn` as the package manager\n [KEYS.DOWN, KEYS.ENTER],\n // Do you want to install version 2.9.7 of nitropack and add an override to package.json?\n 'Do you want to add an override for nitropack version ~2.9.7?',\n {\n timeout: 240_000,\n },\n ));\n\n const nftOverridePrompted =\n nitropackOverridePrompted &&\n (await wizardInstance.sendStdinAndWaitForOutput(\n // Selecting `yes` to downgrade nitropack\n KEYS.ENTER,\n 'Do you want to add an override for @vercel/nft version ^0.27.4?',\n // 'Do you want to install version',\n {\n timeout: 240_000,\n },\n ));\n\n const tracingOptionPrompted =\n nftOverridePrompted &&\n (await wizardInstance.sendStdinAndWaitForOutput(\n KEYS.ENTER,\n // \"Do you want to enable Tracing\", sometimes doesn't work as `Tracing` can be printed in bold.\n 'Do you want to enable',\n {\n timeout: 240_000,\n },\n ));\n\n const replayOptionPrompted =\n tracingOptionPrompted &&\n (await wizardInstance.sendStdinAndWaitForOutput(\n [KEYS.ENTER],\n // \"Do you want to enable Sentry Session Replay\", sometimes doesn't work as `Sentry Session Replay` can be printed in bold.\n 'to get a video-like reproduction of errors during a user session?',\n ));\n\n replayOptionPrompted &&\n (await wizardInstance.sendStdinAndWaitForOutput(\n [KEYS.ENTER],\n 'Do you want to create an example page',\n {\n optional: true,\n },\n ));\n\n await wizardInstance.sendStdinAndWaitForOutput(\n [KEYS.ENTER, KEYS.ENTER],\n 'Successfully installed the Sentry Nuxt SDK!',\n );\n\n wizardInstance.kill();\n}\n\nfunction testNuxtProjectSetup(projectDir: string) {\n const integration = Integration.nuxt;\n\n test('package.json is updated correctly', () => {\n checkPackageJson(projectDir, integration);\n });\n\n test('.env-sentry-build-plugin is created and contains the auth token', () => {\n checkEnvBuildPlugin(projectDir);\n });\n\n test('config files created', () => {\n checkFileExists(`${projectDir}/sentry.server.config.ts`);\n checkFileExists(`${projectDir}/sentry.client.config.ts`);\n });\n\n test('example page exists', () => {\n checkFileExists(`${projectDir}/app/pages/sentry-example-page.vue`);\n checkFileExists(`${projectDir}/server/api/sentry-example-api.ts`);\n });\n}\n\nfunction testNuxtProjectConfigs(projectDir: string) {\n test('nuxt config contains sentry module', () => {\n checkFileContents(path.resolve(projectDir, 'nuxt.config.ts'), [\n \"modules: ['@sentry/nuxt/module'],\",\n 'sentry: {',\n ' sourceMapsUploadOptions: {',\n ` org: '${TEST_ARGS.ORG_SLUG}',`,\n ` project: '${TEST_ARGS.PROJECT_SLUG}'`,\n ' }',\n '},',\n 'sourcemap: {',\n \" client: 'hidden'\",\n '}',\n ]);\n });\n\n test('sentry.client.config.ts contents', () => {\n checkFileContents(path.resolve(projectDir, 'sentry.client.config.ts'), [\n 'import * as Sentry from \"@sentry/nuxt\";',\n 'Sentry.init({',\n ' // If set up, you can use your runtime config here',\n ' // dsn: useRuntimeConfig().public.sentry.dsn,',\n ` dsn: \"${TEST_ARGS.PROJECT_DSN}\",`,\n ' // We recommend adjusting this value in production, or using tracesSampler',\n ' // for finer control',\n ' tracesSampleRate: 1.0,',\n ' // This sets the sample rate to be 10%. You may want this to be 100% while',\n ' // in development and sample at a lower rate in production',\n ' replaysSessionSampleRate: 0.1,',\n ' // If the entire session is not sampled, use the below sample rate to sample',\n ' // sessions when an error occurs.',\n ' replaysOnErrorSampleRate: 1.0,',\n \" // If you don't want to use Session Replay, just remove the line below:\",\n ' integrations: [Sentry.replayIntegration()],',\n \" // Setting this option to true will print useful information to the console while you're setting up Sentry.\",\n ' debug: false,',\n '});',\n ]);\n });\n\n test('sentry.server.config.ts contents', () => {\n checkFileContents(path.resolve(projectDir, 'sentry.server.config.ts'), [\n 'import * as Sentry from \"@sentry/nuxt\";',\n 'Sentry.init({',\n ` dsn: \"${TEST_ARGS.PROJECT_DSN}\",`,\n ' // We recommend adjusting this value in production, or using tracesSampler',\n ' // for finer control',\n ' tracesSampleRate: 1.0,',\n \" // Setting this option to true will print useful information to the console while you're setting up Sentry.\",\n ' debug: false,',\n '});',\n ]);\n });\n}\n\nfunction testNuxtProjectBuildsAndRuns(projectDir: string) {\n test('builds successfully', async () => {\n await checkIfBuilds(projectDir, 'preview this build');\n });\n\n test('runs on prod mode correctly', async () => {\n await checkIfRunsOnProdMode(projectDir, 'Listening on');\n });\n}\n"]}
1
+ {"version":3,"file":"nuxt-4.test.js","sourceRoot":"","sources":["../../../e2e-tests/tests/nuxt-4.test.ts"],"names":[],"mappings":"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","sourcesContent":["import * as path from 'path';\nimport { Integration } from '../../lib/Constants';\nimport { cleanupGit, revertLocalChanges } from '../utils';\nimport {\n checkEnvBuildPlugin,\n checkFileContents,\n checkFileExists,\n checkIfBuilds,\n checkIfRunsOnProdMode,\n checkPackageJson,\n KEYS,\n startWizardInstance,\n TEST_ARGS,\n} from '../utils';\n\ndescribe('Nuxt-4', () => {\n const projectDir = path.resolve(\n __dirname,\n '../test-applications/nuxt-4-test-app',\n );\n\n beforeAll(async () => {\n await runWizardOnNuxtProject(projectDir);\n });\n\n afterAll(() => {\n revertLocalChanges(projectDir);\n cleanupGit(projectDir);\n });\n\n testNuxtProjectSetup(projectDir);\n\n testNuxtProjectConfigs(projectDir);\n\n testNuxtProjectBuildsAndRuns(projectDir);\n});\n\nasync function runWizardOnNuxtProject(projectDir: string): Promise<void> {\n const integration = Integration.nuxt;\n\n const wizardInstance = startWizardInstance(integration, projectDir);\n const packageManagerPrompted = await wizardInstance.waitForOutput(\n 'Please select your package manager.',\n );\n\n const nftOverridePrompted =\n packageManagerPrompted &&\n (await wizardInstance.sendStdinAndWaitForOutput(\n // Selecting `yarn` as the package manager\n [KEYS.DOWN, KEYS.ENTER],\n 'Do you want to add an override for @vercel/nft version ^0.27.4?',\n {\n timeout: 240_000,\n },\n ));\n\n const deploymentPlatformPrompted =\n nftOverridePrompted &&\n (await wizardInstance.sendStdinAndWaitForOutput(\n KEYS.ENTER,\n 'Please select your deployment platform.',\n {\n timeout: 240_000,\n },\n ));\n\n const tracingOptionPrompted =\n deploymentPlatformPrompted &&\n (await wizardInstance.sendStdinAndWaitForOutput(\n KEYS.ENTER,\n // \"Do you want to enable Tracing\", sometimes doesn't work as `Tracing` can be printed in bold.\n 'Do you want to enable',\n {\n timeout: 240_000,\n },\n ));\n\n const replayOptionPrompted =\n tracingOptionPrompted &&\n (await wizardInstance.sendStdinAndWaitForOutput(\n [KEYS.ENTER],\n // \"Do you want to enable Sentry Session Replay\", sometimes doesn't work as `Sentry Session Replay` can be printed in bold.\n 'to get a video-like reproduction of errors during a user session?',\n ));\n\n replayOptionPrompted &&\n (await wizardInstance.sendStdinAndWaitForOutput(\n [KEYS.ENTER],\n 'Do you want to create an example page',\n {\n optional: true,\n },\n ));\n\n await wizardInstance.sendStdinAndWaitForOutput(\n [KEYS.ENTER, KEYS.ENTER],\n 'Successfully installed the Sentry Nuxt SDK!',\n );\n\n wizardInstance.kill();\n}\n\nfunction testNuxtProjectSetup(projectDir: string) {\n const integration = Integration.nuxt;\n\n test('package.json is updated correctly', () => {\n checkPackageJson(projectDir, integration);\n });\n\n test('.env-sentry-build-plugin is created and contains the auth token', () => {\n checkEnvBuildPlugin(projectDir);\n });\n\n test('config files created', () => {\n checkFileExists(`${projectDir}/sentry.server.config.ts`);\n checkFileExists(`${projectDir}/sentry.client.config.ts`);\n });\n\n test('example page exists', () => {\n checkFileExists(`${projectDir}/app/pages/sentry-example-page.vue`);\n checkFileExists(`${projectDir}/server/api/sentry-example-api.ts`);\n });\n}\n\nfunction testNuxtProjectConfigs(projectDir: string) {\n test('nuxt config contains sentry module', () => {\n checkFileContents(path.resolve(projectDir, 'nuxt.config.ts'), [\n \"modules: ['@sentry/nuxt/module'],\",\n 'sentry: {',\n ' sourceMapsUploadOptions: {',\n ` org: '${TEST_ARGS.ORG_SLUG}',`,\n ` project: '${TEST_ARGS.PROJECT_SLUG}'`,\n ' }',\n '},',\n 'sourcemap: {',\n \" client: 'hidden'\",\n '}',\n ]);\n });\n\n test('sentry.client.config.ts contents', () => {\n checkFileContents(path.resolve(projectDir, 'sentry.client.config.ts'), [\n 'import * as Sentry from \"@sentry/nuxt\";',\n 'Sentry.init({',\n ' // If set up, you can use your runtime config here',\n ' // dsn: useRuntimeConfig().public.sentry.dsn,',\n ` dsn: \"${TEST_ARGS.PROJECT_DSN}\",`,\n ' // We recommend adjusting this value in production, or using tracesSampler',\n ' // for finer control',\n ' tracesSampleRate: 1.0,',\n ' // This sets the sample rate to be 10%. You may want this to be 100% while',\n ' // in development and sample at a lower rate in production',\n ' replaysSessionSampleRate: 0.1,',\n ' // If the entire session is not sampled, use the below sample rate to sample',\n ' // sessions when an error occurs.',\n ' replaysOnErrorSampleRate: 1.0,',\n \" // If you don't want to use Session Replay, just remove the line below:\",\n ' integrations: [Sentry.replayIntegration()],',\n \" // Setting this option to true will print useful information to the console while you're setting up Sentry.\",\n ' debug: false,',\n '});',\n ]);\n });\n\n test('sentry.server.config.ts contents', () => {\n checkFileContents(path.resolve(projectDir, 'sentry.server.config.ts'), [\n 'import * as Sentry from \"@sentry/nuxt\";',\n 'Sentry.init({',\n ` dsn: \"${TEST_ARGS.PROJECT_DSN}\",`,\n ' // We recommend adjusting this value in production, or using tracesSampler',\n ' // for finer control',\n ' tracesSampleRate: 1.0,',\n \" // Setting this option to true will print useful information to the console while you're setting up Sentry.\",\n ' debug: false,',\n '});',\n ]);\n });\n}\n\nfunction testNuxtProjectBuildsAndRuns(projectDir: string) {\n test('builds successfully', async () => {\n await checkIfBuilds(projectDir, 'preview this build');\n });\n\n test('runs on prod mode correctly', async () => {\n await checkIfRunsOnProdMode(projectDir, 'Listening on');\n });\n}\n"]}
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sentry/wizard",
3
- "version": "3.36.0",
3
+ "version": "3.37.0",
4
4
  "homepage": "https://github.com/getsentry/sentry-wizard",
5
5
  "repository": "https://github.com/getsentry/sentry-wizard",
6
6
  "description": "Sentry wizard helping you to configure your project",
@@ -84,7 +84,7 @@ function runNuxtWizard(options) {
84
84
  exports.runNuxtWizard = runNuxtWizard;
85
85
  function runNuxtWizardWithTelemetry(options) {
86
86
  return __awaiter(this, void 0, void 0, function () {
87
- var packageJson, nuxtVersion, minVer, shouldContinue, _a, authToken, selectedProject, selfHosted, sentryUrl, packageManager, sdkAlreadyInstalled, nuxtConfig, projectData, shouldCreateExamplePage, shouldCreateExampleButton, isV4, canCreateExamplePage;
87
+ var packageJson, nuxtVersion, minVer, shouldContinue, _a, authToken, selectedProject, selfHosted, sentryUrl, packageManager, sdkAlreadyInstalled, nuxtConfig, projectData, deploymentPlatform, shouldCreateExamplePage, shouldCreateExampleButton, isV4, canCreateExamplePage;
88
88
  var _this = this;
89
89
  return __generator(this, function (_b) {
90
90
  switch (_b.label) {
@@ -132,7 +132,7 @@ function runNuxtWizardWithTelemetry(options) {
132
132
  return [4 /*yield*/, (0, clack_utils_1.getPackageManager)()];
133
133
  case 8:
134
134
  packageManager = _b.sent();
135
- return [4 /*yield*/, (0, sdk_setup_1.addNuxtOverrides)(packageManager, minVer)];
135
+ return [4 /*yield*/, (0, sdk_setup_1.addNuxtOverrides)(packageJson, packageManager, minVer)];
136
136
  case 9:
137
137
  _b.sent();
138
138
  sdkAlreadyInstalled = (0, package_json_1.hasPackageInstalled)('@sentry/nuxt', packageJson);
@@ -157,10 +157,13 @@ function runNuxtWizardWithTelemetry(options) {
157
157
  url: sentryUrl,
158
158
  selfHosted: selfHosted,
159
159
  };
160
+ return [4 /*yield*/, (0, sdk_setup_1.askDeploymentPlatform)()];
161
+ case 13:
162
+ deploymentPlatform = _b.sent();
160
163
  return [4 /*yield*/, (0, telemetry_1.traceStep)('configure-sdk', function () { return __awaiter(_this, void 0, void 0, function () {
161
164
  return __generator(this, function (_a) {
162
165
  switch (_a.label) {
163
- case 0: return [4 /*yield*/, (0, sdk_setup_1.addSDKModule)(nuxtConfig, projectData)];
166
+ case 0: return [4 /*yield*/, (0, sdk_setup_1.addSDKModule)(nuxtConfig, projectData, deploymentPlatform)];
164
167
  case 1:
165
168
  _a.sent();
166
169
  return [4 /*yield*/, (0, sdk_setup_1.createConfigFiles)(selectedProject.keys[0].dsn.public)];
@@ -170,41 +173,44 @@ function runNuxtWizardWithTelemetry(options) {
170
173
  }
171
174
  });
172
175
  }); })];
173
- case 13:
176
+ case 14:
174
177
  _b.sent();
175
178
  shouldCreateExamplePage = false;
176
179
  shouldCreateExampleButton = false;
177
180
  return [4 /*yield*/, (0, utils_1.isNuxtV4)(nuxtConfig, nuxtVersion)];
178
- case 14:
181
+ case 15:
179
182
  isV4 = _b.sent();
180
183
  return [4 /*yield*/, (0, sdk_example_1.supportsExamplePage)(isV4)];
181
- case 15:
184
+ case 16:
182
185
  canCreateExamplePage = _b.sent();
183
186
  Sentry.setTag('supports-example-page-creation', canCreateExamplePage);
184
- if (!canCreateExamplePage) return [3 /*break*/, 19];
187
+ if (!canCreateExamplePage) return [3 /*break*/, 20];
185
188
  return [4 /*yield*/, (0, clack_utils_1.askShouldCreateExamplePage)()];
186
- case 16:
189
+ case 17:
187
190
  shouldCreateExamplePage = _b.sent();
188
- if (!shouldCreateExamplePage) return [3 /*break*/, 18];
191
+ if (!shouldCreateExamplePage) return [3 /*break*/, 19];
189
192
  return [4 /*yield*/, (0, telemetry_1.traceStep)('create-example-page', function () { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {
190
193
  return [2 /*return*/, (0, sdk_example_1.createExamplePage)(isV4, projectData)];
191
194
  }); }); })];
192
- case 17:
195
+ case 18:
193
196
  _b.sent();
194
- _b.label = 18;
195
- case 18: return [3 /*break*/, 22];
196
- case 19: return [4 /*yield*/, (0, clack_utils_1.askShouldCreateExampleComponent)()];
197
- case 20:
197
+ _b.label = 19;
198
+ case 19: return [3 /*break*/, 23];
199
+ case 20: return [4 /*yield*/, (0, clack_utils_1.askShouldCreateExampleComponent)()];
200
+ case 21:
198
201
  shouldCreateExampleButton = _b.sent();
199
- if (!shouldCreateExampleButton) return [3 /*break*/, 22];
202
+ if (!shouldCreateExampleButton) return [3 /*break*/, 23];
200
203
  return [4 /*yield*/, (0, telemetry_1.traceStep)('create-example-component', function () { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {
201
204
  return [2 /*return*/, (0, sdk_example_1.createExampleComponent)(isV4)];
202
205
  }); }); })];
203
- case 21:
206
+ case 22:
207
+ _b.sent();
208
+ _b.label = 23;
209
+ case 23: return [4 /*yield*/, (0, clack_utils_1.runPrettierIfInstalled)()];
210
+ case 24:
204
211
  _b.sent();
205
- _b.label = 22;
206
- case 22: return [4 /*yield*/, (0, clack_utils_1.runPrettierIfInstalled)()];
207
- case 23:
212
+ return [4 /*yield*/, (0, sdk_setup_1.confirmReadImportDocs)(deploymentPlatform)];
213
+ case 25:
208
214
  _b.sent();
209
215
  clack.outro(buildOutroMessage(shouldCreateExamplePage, shouldCreateExampleButton));
210
216
  return [2 /*return*/];
@@ -221,7 +227,7 @@ function buildOutroMessage(shouldCreateExamplePage, shouldCreateExampleButton) {
221
227
  if (shouldCreateExampleButton) {
222
228
  msg += "\n\nYou can validate your setup by adding the ".concat(chalk_1.default.cyan('`SentryExampleButton`'), " component to a page and triggering it.");
223
229
  }
224
- msg += "\n\nCheck out the SDK documentation for further configuration:\nhttps://docs.sentry.io/platforms/javascript/guides/nuxt/";
230
+ msg += "\n\nCheck out the SDK documentation for further configuration: ".concat(chalk_1.default.underline('https://docs.sentry.io/platforms/javascript/guides/nuxt/'));
225
231
  return msg;
226
232
  }
227
233
  //# sourceMappingURL=nuxt-wizard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"nuxt-wizard.js","sourceRoot":"","sources":["../../../src/nuxt/nuxt-wizard.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-ignore - clack is ESM and TS complains about that. It works though\nimport * as clack from '@clack/prompts';\nimport * as Sentry from '@sentry/node';\nimport chalk from 'chalk';\nimport { lt, minVersion } from 'semver';\nimport type { WizardOptions } from '../utils/types';\nimport { traceStep, withTelemetry } from '../telemetry';\nimport {\n abort,\n abortIfCancelled,\n addDotEnvSentryBuildPluginFile,\n askShouldCreateExampleComponent,\n askShouldCreateExamplePage,\n confirmContinueIfNoOrDirtyGitRepo,\n ensurePackageIsInstalled,\n getOrAskForProjectData,\n getPackageDotJson,\n getPackageManager,\n installPackage,\n printWelcome,\n runPrettierIfInstalled,\n} from '../utils/clack-utils';\nimport { getPackageVersion, hasPackageInstalled } from '../utils/package-json';\nimport {\n addSDKModule,\n getNuxtConfig,\n createConfigFiles,\n addNuxtOverrides,\n} from './sdk-setup';\nimport {\n createExampleComponent,\n createExamplePage,\n supportsExamplePage,\n} from './sdk-example';\nimport { isNuxtV4 } from './utils';\n\nexport function runNuxtWizard(options: WizardOptions) {\n return withTelemetry(\n {\n enabled: options.telemetryEnabled,\n integration: 'nuxt',\n wizardOptions: options,\n },\n () => runNuxtWizardWithTelemetry(options),\n );\n}\n\nexport async function runNuxtWizardWithTelemetry(\n options: WizardOptions,\n): Promise<void> {\n printWelcome({\n wizardName: 'Sentry Nuxt Wizard',\n promoCode: options.promoCode,\n telemetryEnabled: options.telemetryEnabled,\n });\n\n await confirmContinueIfNoOrDirtyGitRepo();\n\n const packageJson = await getPackageDotJson();\n\n await ensurePackageIsInstalled(packageJson, 'nuxt', 'Nuxt');\n\n const nuxtVersion = getPackageVersion('nuxt', packageJson);\n Sentry.setTag('nuxt-version', nuxtVersion);\n\n const minVer = minVersion(nuxtVersion || '0.0.0');\n\n if (!nuxtVersion || !minVer || lt(minVer, '3.7.0')) {\n clack.log.warn(\n \"It seems you're using a Nuxt version <3.7.0 which is not supported by Sentry.\\nWe recommend upgrading to the latest version before you continue.\",\n );\n const shouldContinue = await abortIfCancelled(\n clack.select({\n message: 'Do you want to continue anyway?',\n options: [\n {\n label: 'Yes, continue',\n hint: 'The SDK might not work correctly',\n value: true,\n },\n { label: \"No, I'll upgrade first\", value: false },\n ],\n }),\n );\n if (!shouldContinue) {\n await abort('Exiting Wizard', 0);\n return;\n }\n }\n\n const { authToken, selectedProject, selfHosted, sentryUrl } =\n await getOrAskForProjectData(options, 'javascript-nuxt');\n\n const packageManager = await getPackageManager();\n\n await addNuxtOverrides(packageManager, minVer);\n\n const sdkAlreadyInstalled = hasPackageInstalled('@sentry/nuxt', packageJson);\n Sentry.setTag('sdk-already-installed', sdkAlreadyInstalled);\n\n await installPackage({\n packageName: '@sentry/nuxt',\n alreadyInstalled: sdkAlreadyInstalled,\n packageManager,\n });\n\n await addDotEnvSentryBuildPluginFile(authToken);\n\n const nuxtConfig = await traceStep('load-nuxt-config', getNuxtConfig);\n\n const projectData = {\n org: selectedProject.organization.slug,\n project: selectedProject.slug,\n projectId: selectedProject.id,\n url: sentryUrl,\n selfHosted,\n };\n\n await traceStep('configure-sdk', async () => {\n await addSDKModule(nuxtConfig, projectData);\n await createConfigFiles(selectedProject.keys[0].dsn.public);\n });\n\n let shouldCreateExamplePage = false;\n let shouldCreateExampleButton = false;\n\n const isV4 = await isNuxtV4(nuxtConfig, nuxtVersion);\n const canCreateExamplePage = await supportsExamplePage(isV4);\n Sentry.setTag('supports-example-page-creation', canCreateExamplePage);\n\n if (canCreateExamplePage) {\n shouldCreateExamplePage = await askShouldCreateExamplePage();\n\n if (shouldCreateExamplePage) {\n await traceStep('create-example-page', async () =>\n createExamplePage(isV4, projectData),\n );\n }\n } else {\n shouldCreateExampleButton = await askShouldCreateExampleComponent();\n\n if (shouldCreateExampleButton) {\n await traceStep('create-example-component', async () =>\n createExampleComponent(isV4),\n );\n }\n }\n\n await runPrettierIfInstalled();\n\n clack.outro(\n buildOutroMessage(shouldCreateExamplePage, shouldCreateExampleButton),\n );\n}\n\nfunction buildOutroMessage(\n shouldCreateExamplePage: boolean,\n shouldCreateExampleButton: boolean,\n): string {\n let msg = chalk.green('\\nSuccessfully installed the Sentry Nuxt SDK!');\n\n if (shouldCreateExamplePage) {\n msg += `\\n\\nYou can validate your setup by visiting ${chalk.cyan(\n '\"/sentry-example-page\"',\n )}.`;\n }\n if (shouldCreateExampleButton) {\n msg += `\\n\\nYou can validate your setup by adding the ${chalk.cyan(\n '`SentryExampleButton`',\n )} component to a page and triggering it.`;\n }\n\n msg += `\\n\\nCheck out the SDK documentation for further configuration:\nhttps://docs.sentry.io/platforms/javascript/guides/nuxt/`;\n\n return msg;\n}\n"]}
1
+ {"version":3,"file":"nuxt-wizard.js","sourceRoot":"","sources":["../../../src/nuxt/nuxt-wizard.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-ignore - clack is ESM and TS complains about that. It works though\nimport * as clack from '@clack/prompts';\nimport * as Sentry from '@sentry/node';\nimport chalk from 'chalk';\nimport { lt, minVersion } from 'semver';\nimport type { WizardOptions } from '../utils/types';\nimport { traceStep, withTelemetry } from '../telemetry';\nimport {\n abort,\n abortIfCancelled,\n addDotEnvSentryBuildPluginFile,\n askShouldCreateExampleComponent,\n askShouldCreateExamplePage,\n confirmContinueIfNoOrDirtyGitRepo,\n ensurePackageIsInstalled,\n getOrAskForProjectData,\n getPackageDotJson,\n getPackageManager,\n installPackage,\n printWelcome,\n runPrettierIfInstalled,\n} from '../utils/clack-utils';\nimport { getPackageVersion, hasPackageInstalled } from '../utils/package-json';\nimport {\n addSDKModule,\n getNuxtConfig,\n createConfigFiles,\n addNuxtOverrides,\n askDeploymentPlatform,\n confirmReadImportDocs,\n} from './sdk-setup';\nimport {\n createExampleComponent,\n createExamplePage,\n supportsExamplePage,\n} from './sdk-example';\nimport { isNuxtV4 } from './utils';\n\nexport function runNuxtWizard(options: WizardOptions) {\n return withTelemetry(\n {\n enabled: options.telemetryEnabled,\n integration: 'nuxt',\n wizardOptions: options,\n },\n () => runNuxtWizardWithTelemetry(options),\n );\n}\n\nexport async function runNuxtWizardWithTelemetry(\n options: WizardOptions,\n): Promise<void> {\n printWelcome({\n wizardName: 'Sentry Nuxt Wizard',\n promoCode: options.promoCode,\n telemetryEnabled: options.telemetryEnabled,\n });\n\n await confirmContinueIfNoOrDirtyGitRepo();\n\n const packageJson = await getPackageDotJson();\n\n await ensurePackageIsInstalled(packageJson, 'nuxt', 'Nuxt');\n\n const nuxtVersion = getPackageVersion('nuxt', packageJson);\n Sentry.setTag('nuxt-version', nuxtVersion);\n\n const minVer = minVersion(nuxtVersion || '0.0.0');\n\n if (!nuxtVersion || !minVer || lt(minVer, '3.7.0')) {\n clack.log.warn(\n \"It seems you're using a Nuxt version <3.7.0 which is not supported by Sentry.\\nWe recommend upgrading to the latest version before you continue.\",\n );\n const shouldContinue = await abortIfCancelled(\n clack.select({\n message: 'Do you want to continue anyway?',\n options: [\n {\n label: 'Yes, continue',\n hint: 'The SDK might not work correctly',\n value: true,\n },\n { label: \"No, I'll upgrade first\", value: false },\n ],\n }),\n );\n if (!shouldContinue) {\n await abort('Exiting Wizard', 0);\n return;\n }\n }\n\n const { authToken, selectedProject, selfHosted, sentryUrl } =\n await getOrAskForProjectData(options, 'javascript-nuxt');\n\n const packageManager = await getPackageManager();\n\n await addNuxtOverrides(packageJson, packageManager, minVer);\n\n const sdkAlreadyInstalled = hasPackageInstalled('@sentry/nuxt', packageJson);\n Sentry.setTag('sdk-already-installed', sdkAlreadyInstalled);\n\n await installPackage({\n packageName: '@sentry/nuxt',\n alreadyInstalled: sdkAlreadyInstalled,\n packageManager,\n });\n\n await addDotEnvSentryBuildPluginFile(authToken);\n\n const nuxtConfig = await traceStep('load-nuxt-config', getNuxtConfig);\n\n const projectData = {\n org: selectedProject.organization.slug,\n project: selectedProject.slug,\n projectId: selectedProject.id,\n url: sentryUrl,\n selfHosted,\n };\n\n const deploymentPlatform = await askDeploymentPlatform();\n\n await traceStep('configure-sdk', async () => {\n await addSDKModule(nuxtConfig, projectData, deploymentPlatform);\n await createConfigFiles(selectedProject.keys[0].dsn.public);\n });\n\n let shouldCreateExamplePage = false;\n let shouldCreateExampleButton = false;\n\n const isV4 = await isNuxtV4(nuxtConfig, nuxtVersion);\n const canCreateExamplePage = await supportsExamplePage(isV4);\n Sentry.setTag('supports-example-page-creation', canCreateExamplePage);\n\n if (canCreateExamplePage) {\n shouldCreateExamplePage = await askShouldCreateExamplePage();\n\n if (shouldCreateExamplePage) {\n await traceStep('create-example-page', async () =>\n createExamplePage(isV4, projectData),\n );\n }\n } else {\n shouldCreateExampleButton = await askShouldCreateExampleComponent();\n\n if (shouldCreateExampleButton) {\n await traceStep('create-example-component', async () =>\n createExampleComponent(isV4),\n );\n }\n }\n\n await runPrettierIfInstalled();\n\n await confirmReadImportDocs(deploymentPlatform);\n\n clack.outro(\n buildOutroMessage(shouldCreateExamplePage, shouldCreateExampleButton),\n );\n}\n\nfunction buildOutroMessage(\n shouldCreateExamplePage: boolean,\n shouldCreateExampleButton: boolean,\n): string {\n let msg = chalk.green('\\nSuccessfully installed the Sentry Nuxt SDK!');\n\n if (shouldCreateExamplePage) {\n msg += `\\n\\nYou can validate your setup by visiting ${chalk.cyan(\n '\"/sentry-example-page\"',\n )}.`;\n }\n if (shouldCreateExampleButton) {\n msg += `\\n\\nYou can validate your setup by adding the ${chalk.cyan(\n '`SentryExampleButton`',\n )} component to a page and triggering it.`;\n }\n\n msg += `\\n\\nCheck out the SDK documentation for further configuration: ${chalk.underline(\n 'https://docs.sentry.io/platforms/javascript/guides/nuxt/',\n )}`;\n\n return msg;\n}\n"]}
@@ -1,11 +1,15 @@
1
1
  import { SemVer } from 'semver';
2
2
  import { PackageManager } from '../utils/package-manager';
3
+ import { PackageDotJson } from '../utils/package-json';
4
+ import { DeploymentPlatform } from './types';
3
5
  export declare function getNuxtConfig(): Promise<string>;
6
+ export declare function askDeploymentPlatform(): Promise<DeploymentPlatform | symbol>;
4
7
  export declare function addSDKModule(config: string, options: {
5
8
  org: string;
6
9
  project: string;
7
10
  url: string;
8
11
  selfHosted: boolean;
9
- }): Promise<void>;
12
+ }, deploymentPlatform: DeploymentPlatform | symbol): Promise<void>;
10
13
  export declare function createConfigFiles(dsn: string): Promise<void>;
11
- export declare function addNuxtOverrides(packageManager: PackageManager, nuxtMinVer: SemVer | null): Promise<void>;
14
+ export declare function addNuxtOverrides(packageJson: PackageDotJson, packageManager: PackageManager, nuxtMinVer: SemVer | null): Promise<void>;
15
+ export declare function confirmReadImportDocs(deploymentPlatform: DeploymentPlatform | symbol): Promise<void>;