@sentry/nuxt 9.10.0 → 9.11.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.
@@ -10,24 +10,77 @@ import { sentryVitePlugin } from '@sentry/vite-plugin';
10
10
  * Setup source maps for Sentry inside the Nuxt module during build time (in Vite for Nuxt and Rollup for Nitro).
11
11
  */
12
12
  function setupSourceMaps(moduleOptions, nuxt) {
13
+ const isDebug = moduleOptions.debug;
14
+
13
15
  const sourceMapsUploadOptions = moduleOptions.sourceMapsUploadOptions || {};
14
16
  const sourceMapsEnabled = sourceMapsUploadOptions.enabled ?? true;
15
17
 
18
+ // In case we overwrite the source map settings, we default to deleting the files
19
+ let shouldDeleteFilesFallback = { client: true, server: true };
20
+
16
21
  nuxt.hook('modules:done', () => {
17
22
  if (sourceMapsEnabled && !nuxt.options.dev) {
18
- changeNuxtSourceMapSettings(nuxt, moduleOptions);
23
+ // Changing this setting will propagate:
24
+ // - for client to viteConfig.build.sourceMap
25
+ // - for server to viteConfig.build.sourceMap and nitro.sourceMap
26
+ // On server, nitro.rollupConfig.output.sourcemap remains unaffected from this change.
27
+
28
+ // ONLY THIS nuxt.sourcemap.(server/client) setting is the one Sentry will eventually overwrite with 'hidden'
29
+ const previousSourceMapSettings = changeNuxtSourceMapSettings(nuxt, moduleOptions);
30
+
31
+ shouldDeleteFilesFallback = {
32
+ client: previousSourceMapSettings.client === 'unset',
33
+ server: previousSourceMapSettings.server === 'unset',
34
+ };
35
+
36
+ if (
37
+ isDebug &&
38
+ !sourceMapsUploadOptions.sourcemaps?.filesToDeleteAfterUpload &&
39
+ (shouldDeleteFilesFallback.client || shouldDeleteFilesFallback.server)
40
+ ) {
41
+ consoleSandbox(() =>
42
+ // eslint-disable-next-line no-console
43
+ console.log(
44
+ "[Sentry] As Sentry enabled `'hidden'` source maps, source maps will be automatically deleted after uploading them to Sentry.",
45
+ ),
46
+ );
47
+ }
19
48
  }
20
49
  });
21
50
 
22
- nuxt.hook('vite:extendConfig', async (viteConfig, _env) => {
51
+ nuxt.hook('vite:extendConfig', async (viteConfig, env) => {
23
52
  if (sourceMapsEnabled && viteConfig.mode !== 'development') {
24
- const previousUserSourceMapSetting = changeViteSourceMapSettings(viteConfig, moduleOptions);
53
+ const runtime = env.isServer ? 'server' : env.isClient ? 'client' : undefined;
54
+ const nuxtSourceMapSetting = extractNuxtSourceMapSetting(nuxt, runtime);
55
+
56
+ viteConfig.build = viteConfig.build || {};
57
+ const viteSourceMap = viteConfig.build.sourcemap;
58
+
59
+ // Vite source map options are the same as the Nuxt source map config options (unless overwritten)
60
+ validateDifferentSourceMapSettings({
61
+ nuxtSettingKey: `sourcemap.${runtime}`,
62
+ nuxtSettingValue: nuxtSourceMapSetting,
63
+ otherSettingKey: 'viteConfig.build.sourcemap',
64
+ otherSettingValue: viteSourceMap,
65
+ });
66
+
67
+ if (isDebug) {
68
+ consoleSandbox(() => {
69
+ if (!runtime) {
70
+ // eslint-disable-next-line no-console
71
+ console.log("[Sentry] Cannot detect runtime (client/server) inside hook 'vite:extendConfig'.");
72
+ } else {
73
+ // eslint-disable-next-line no-console
74
+ console.log(`[Sentry] Adding Sentry Vite plugin to the ${runtime} runtime.`);
75
+ }
76
+ });
77
+ }
25
78
 
26
- // Add Sentry plugin
79
+ // Add Sentry plugin
80
+ // Vite plugin is added on the client and server side (hook runs twice)
81
+ // Nuxt client source map is 'false' by default. Warning about this will be shown already in an earlier step, and it's also documented that `nuxt.sourcemap.client` needs to be enabled.
27
82
  viteConfig.plugins = viteConfig.plugins || [];
28
- viteConfig.plugins.push(
29
- sentryVitePlugin(getPluginOptions(moduleOptions, previousUserSourceMapSetting === 'unset')),
30
- );
83
+ viteConfig.plugins.push(sentryVitePlugin(getPluginOptions(moduleOptions, shouldDeleteFilesFallback)));
31
84
  }
32
85
  });
33
86
 
@@ -44,11 +97,19 @@ function setupSourceMaps(moduleOptions, nuxt) {
44
97
  nitroConfig.rollupConfig.plugins = [nitroConfig.rollupConfig.plugins];
45
98
  }
46
99
 
47
- const previousUserSourceMapSetting = changeRollupSourceMapSettings(nitroConfig, moduleOptions);
100
+ validateNitroSourceMapSettings(nuxt, nitroConfig, moduleOptions);
101
+
102
+ if (isDebug) {
103
+ consoleSandbox(() => {
104
+ // eslint-disable-next-line no-console
105
+ console.log('[Sentry] Adding Sentry Rollup plugin to the server runtime.');
106
+ });
107
+ }
48
108
 
49
109
  // Add Sentry plugin
110
+ // Runs only on server-side (Nitro)
50
111
  nitroConfig.rollupConfig.plugins.push(
51
- sentryRollupPlugin(getPluginOptions(moduleOptions, previousUserSourceMapSetting === 'unset')),
112
+ sentryRollupPlugin(getPluginOptions(moduleOptions, shouldDeleteFilesFallback)),
52
113
  );
53
114
  }
54
115
  });
@@ -68,15 +129,29 @@ function normalizePath(path) {
68
129
  */
69
130
  function getPluginOptions(
70
131
  moduleOptions,
71
- deleteFilesAfterUpload,
132
+ shouldDeleteFilesFallback,
72
133
  ) {
73
134
  const sourceMapsUploadOptions = moduleOptions.sourceMapsUploadOptions || {};
74
135
 
75
- if (typeof sourceMapsUploadOptions.sourcemaps?.filesToDeleteAfterUpload === 'undefined' && deleteFilesAfterUpload) {
136
+ const shouldDeleteFilesAfterUpload = shouldDeleteFilesFallback?.client || shouldDeleteFilesFallback?.server;
137
+ const fallbackFilesToDelete = [
138
+ ...(shouldDeleteFilesFallback?.client ? ['.*/**/public/**/*.map'] : []),
139
+ ...(shouldDeleteFilesFallback?.server
140
+ ? ['.*/**/server/**/*.map', '.*/**/output/**/*.map', '.*/**/function/**/*.map']
141
+ : []),
142
+ ];
143
+
144
+ if (
145
+ typeof sourceMapsUploadOptions.sourcemaps?.filesToDeleteAfterUpload === 'undefined' &&
146
+ shouldDeleteFilesAfterUpload
147
+ ) {
76
148
  consoleSandbox(() => {
77
149
  // eslint-disable-next-line no-console
78
150
  console.log(
79
- '[Sentry] Setting `sentry.sourceMapsUploadOptions.sourcemaps.filesToDeleteAfterUpload: [".*/**/public/**/*.map"]` to delete generated source maps after they were uploaded to Sentry.',
151
+ `[Sentry] Setting \`sentry.sourceMapsUploadOptions.sourcemaps.filesToDeleteAfterUpload: [${fallbackFilesToDelete
152
+ // Logging it as strings in the array
153
+ .map(path => `"${path}"`)
154
+ .join(', ')}]\` to delete generated source maps after they were uploaded to Sentry.`,
80
155
  );
81
156
  });
82
157
  }
@@ -109,8 +184,8 @@ function getPluginOptions(
109
184
  ignore: sourceMapsUploadOptions.sourcemaps?.ignore ?? undefined,
110
185
  filesToDeleteAfterUpload: sourceMapsUploadOptions.sourcemaps?.filesToDeleteAfterUpload
111
186
  ? sourceMapsUploadOptions.sourcemaps?.filesToDeleteAfterUpload
112
- : deleteFilesAfterUpload
113
- ? ['.*/**/public/**/*.map']
187
+ : shouldDeleteFilesFallback?.server || shouldDeleteFilesFallback?.client
188
+ ? fallbackFilesToDelete
114
189
  : undefined,
115
190
  rewriteSources: (source) => normalizePath(source),
116
191
  ...moduleOptions?.unstable_sentryBundlerPluginOptions?.sourcemaps,
@@ -118,7 +193,7 @@ function getPluginOptions(
118
193
  };
119
194
  }
120
195
 
121
- /* There are 3 ways to set up source maps (https://github.com/getsentry/sentry-javascript/issues/13993)
196
+ /* There are multiple ways to set up source maps (https://github.com/getsentry/sentry-javascript/issues/13993 and https://github.com/getsentry/sentry-javascript/pull/15859)
122
197
  1. User explicitly disabled source maps
123
198
  - keep this setting (emit a warning that errors won't be unminified in Sentry)
124
199
  - We will not upload anything
@@ -128,11 +203,24 @@ function getPluginOptions(
128
203
  - we enable 'hidden' source maps generation
129
204
  - configure `filesToDeleteAfterUpload` to delete all .map files (we emit a log about this)
130
205
 
131
- Nuxt has 3 places to set source maps: vite options, rollup options, nuxt itself
132
- Ideally, all 3 are enabled to get all source maps.
206
+ Users only have to explicitly enable client source maps. Sentry only overwrites the base Nuxt source map settings as they propagate.
133
207
  */
134
208
 
135
- /** only exported for testing */
209
+ /** only exported for tests */
210
+ function extractNuxtSourceMapSetting(
211
+ nuxt,
212
+ runtime,
213
+ ) {
214
+ if (!runtime) {
215
+ return undefined;
216
+ } else {
217
+ return typeof nuxt.options?.sourcemap === 'boolean' || typeof nuxt.options?.sourcemap === 'string'
218
+ ? nuxt.options.sourcemap
219
+ : nuxt.options?.sourcemap?.[runtime];
220
+ }
221
+ }
222
+
223
+ /** only exported for testing */
136
224
  function changeNuxtSourceMapSettings(
137
225
  nuxt,
138
226
  sentryModuleOptions,
@@ -155,7 +243,7 @@ function changeNuxtSourceMapSettings(
155
243
 
156
244
  case 'hidden':
157
245
  case true:
158
- logKeepSourceMapSetting(sentryModuleOptions, 'sourcemap', (nuxtSourceMap ).toString());
246
+ logKeepEnabledSourceMapSetting(sentryModuleOptions, 'sourcemap', (nuxtSourceMap ).toString());
159
247
  previousUserSourceMapSetting = { client: 'enabled', server: 'enabled' };
160
248
  break;
161
249
  case undefined:
@@ -170,7 +258,7 @@ function changeNuxtSourceMapSettings(
170
258
  warnExplicitlyDisabledSourceMap('sourcemap.client');
171
259
  previousUserSourceMapSetting.client = 'disabled';
172
260
  } else if (['hidden', true].includes(nuxtSourceMap.client)) {
173
- logKeepSourceMapSetting(sentryModuleOptions, 'sourcemap.client', nuxtSourceMap.client.toString());
261
+ logKeepEnabledSourceMapSetting(sentryModuleOptions, 'sourcemap.client', nuxtSourceMap.client.toString());
174
262
  previousUserSourceMapSetting.client = 'enabled';
175
263
  } else {
176
264
  nuxt.options.sourcemap.client = 'hidden';
@@ -182,7 +270,7 @@ function changeNuxtSourceMapSettings(
182
270
  warnExplicitlyDisabledSourceMap('sourcemap.server');
183
271
  previousUserSourceMapSetting.server = 'disabled';
184
272
  } else if (['hidden', true].includes(nuxtSourceMap.server)) {
185
- logKeepSourceMapSetting(sentryModuleOptions, 'sourcemap.server', nuxtSourceMap.server.toString());
273
+ logKeepEnabledSourceMapSetting(sentryModuleOptions, 'sourcemap.server', nuxtSourceMap.server.toString());
186
274
  previousUserSourceMapSetting.server = 'enabled';
187
275
  } else {
188
276
  nuxt.options.sourcemap.server = 'hidden';
@@ -194,69 +282,76 @@ function changeNuxtSourceMapSettings(
194
282
  return previousUserSourceMapSetting;
195
283
  }
196
284
 
197
- /** only exported for testing */
198
- function changeViteSourceMapSettings(
199
- viteConfig,
285
+ /** Logs warnings about potentially conflicting source map settings.
286
+ * Configures `sourcemapExcludeSources` in Nitro to make source maps usable in Sentry.
287
+ *
288
+ * only exported for testing
289
+ */
290
+ function validateNitroSourceMapSettings(
291
+ nuxt,
292
+ nitroConfig,
200
293
  sentryModuleOptions,
201
294
  ) {
202
- viteConfig.build = viteConfig.build || {};
203
- const viteSourceMap = viteConfig.build.sourcemap;
204
-
205
- let previousUserSourceMapSetting;
295
+ const isDebug = sentryModuleOptions.debug;
296
+ const nuxtSourceMap = extractNuxtSourceMapSetting(nuxt, 'server');
206
297
 
207
- if (viteSourceMap === false) {
208
- warnExplicitlyDisabledSourceMap('vite.build.sourcemap');
209
- previousUserSourceMapSetting = 'disabled';
210
- } else if (viteSourceMap && ['hidden', 'inline', true].includes(viteSourceMap)) {
211
- logKeepSourceMapSetting(sentryModuleOptions, 'vite.build.sourcemap', viteSourceMap.toString());
212
- previousUserSourceMapSetting = 'enabled';
213
- } else {
214
- viteConfig.build.sourcemap = 'hidden';
215
- logSentryEnablesSourceMap('vite.build.sourcemap', 'hidden');
216
- previousUserSourceMapSetting = 'unset';
217
- }
298
+ // NITRO CONFIG ---
218
299
 
219
- return previousUserSourceMapSetting;
220
- }
300
+ validateDifferentSourceMapSettings({
301
+ nuxtSettingKey: 'sourcemap.server',
302
+ nuxtSettingValue: nuxtSourceMap,
303
+ otherSettingKey: 'nitro.sourceMap',
304
+ otherSettingValue: nitroConfig.sourceMap,
305
+ });
221
306
 
222
- /** only exported for testing */
223
- function changeRollupSourceMapSettings(
224
- nitroConfig
307
+ // ROLLUP CONFIG ---
225
308
 
226
- ,
227
- sentryModuleOptions,
228
- ) {
229
309
  nitroConfig.rollupConfig = nitroConfig.rollupConfig || {};
230
310
  nitroConfig.rollupConfig.output = nitroConfig.rollupConfig.output || { sourcemap: undefined };
311
+ const nitroRollupSourceMap = nitroConfig.rollupConfig.output.sourcemap;
231
312
 
232
- let previousUserSourceMapSetting;
313
+ // We don't override nitro.rollupConfig.output.sourcemap (undefined by default, but overrides all other server-side source map settings)
314
+ if (typeof nitroRollupSourceMap !== 'undefined' && ['hidden', 'inline', true, false].includes(nitroRollupSourceMap)) {
315
+ const settingKey = 'nitro.rollupConfig.output.sourcemap';
233
316
 
234
- const nitroSourceMap = nitroConfig.rollupConfig.output.sourcemap;
235
-
236
- if (nitroSourceMap === false) {
237
- warnExplicitlyDisabledSourceMap('nitro.rollupConfig.output.sourcemap');
238
- previousUserSourceMapSetting = 'disabled';
239
- } else if (nitroSourceMap && ['hidden', 'inline', true].includes(nitroSourceMap)) {
240
- logKeepSourceMapSetting(sentryModuleOptions, 'nitro.rollupConfig.output.sourcemap', nitroSourceMap.toString());
241
- previousUserSourceMapSetting = 'enabled';
242
- } else {
243
- nitroConfig.rollupConfig.output.sourcemap = 'hidden';
244
- logSentryEnablesSourceMap('nitro.rollupConfig.output.sourcemap', 'hidden');
245
- previousUserSourceMapSetting = 'unset';
317
+ validateDifferentSourceMapSettings({
318
+ nuxtSettingKey: 'sourcemap.server',
319
+ nuxtSettingValue: nuxtSourceMap,
320
+ otherSettingKey: settingKey,
321
+ otherSettingValue: nitroRollupSourceMap,
322
+ });
246
323
  }
247
324
 
248
325
  nitroConfig.rollupConfig.output.sourcemapExcludeSources = false;
249
- consoleSandbox(() => {
250
- // eslint-disable-next-line no-console
251
- console.log(
252
- '[Sentry] Disabled source map setting in the Nuxt config: `nitro.rollupConfig.output.sourcemapExcludeSources`. Source maps will include the actual code to be able to un-minify code snippets in Sentry.',
253
- );
254
- });
326
+ if (isDebug) {
327
+ consoleSandbox(() => {
328
+ // eslint-disable-next-line no-console
329
+ console.log(
330
+ '[Sentry] Set `sourcemapExcludeSources: false` in the Nuxt config (`nitro.rollupConfig.output`). Source maps will now include the actual code to be able to un-minify code snippets in Sentry.',
331
+ );
332
+ });
333
+ }
334
+ }
255
335
 
256
- return previousUserSourceMapSetting;
336
+ function validateDifferentSourceMapSettings({
337
+ nuxtSettingKey,
338
+ nuxtSettingValue,
339
+ otherSettingKey,
340
+ otherSettingValue,
341
+ }
342
+
343
+ ) {
344
+ if (nuxtSettingValue !== otherSettingValue) {
345
+ consoleSandbox(() => {
346
+ // eslint-disable-next-line no-console
347
+ console.warn(
348
+ `[Sentry] Source map generation settings are conflicting. Sentry uses \`${nuxtSettingKey}: ${nuxtSettingValue}\`. However, a conflicting setting was discovered (\`${otherSettingKey}: ${otherSettingValue}\`). This setting was probably explicitly set in your configuration. Sentry won't override this setting but it may affect source maps generation and upload. Without source maps, code snippets on the Sentry Issues page will remain minified.`,
349
+ );
350
+ });
351
+ }
257
352
  }
258
353
 
259
- function logKeepSourceMapSetting(
354
+ function logKeepEnabledSourceMapSetting(
260
355
  sentryNuxtModuleOptions,
261
356
  settingKey,
262
357
  settingValue,
@@ -265,7 +360,7 @@ function logKeepSourceMapSetting(
265
360
  consoleSandbox(() => {
266
361
  // eslint-disable-next-line no-console
267
362
  console.log(
268
- `[Sentry] We discovered \`${settingKey}\` is set to \`${settingValue}\`. Sentry will keep this source map setting. This will un-minify the code snippet on the Sentry Issue page.`,
363
+ `[Sentry] \`${settingKey}\` is enabled with \`${settingValue}\`. This will correctly un-minify the code snippet on the Sentry Issue Details page.`,
269
364
  );
270
365
  });
271
366
  }
@@ -273,19 +368,19 @@ function logKeepSourceMapSetting(
273
368
 
274
369
  function warnExplicitlyDisabledSourceMap(settingKey) {
275
370
  consoleSandbox(() => {
276
- // eslint-disable-next-line no-console
371
+ // eslint-disable-next-line no-console
277
372
  console.warn(
278
- `[Sentry] Parts of source map generation are currently disabled in your Nuxt configuration (\`${settingKey}: false\`). This setting is either a default setting or was explicitly set in your configuration. Sentry won't override this setting. Without source maps, code snippets on the Sentry Issues page will remain minified. To show unminified code, enable source maps in \`${settingKey}\` (e.g. by setting them to \`hidden\`).`,
373
+ `[Sentry] We discovered \`${settingKey}\` is set to \`false\`. This setting is either a default setting or was explicitly set in your configuration. Sentry won't override this setting. Without source maps, code snippets on the Sentry Issues page will remain minified. To show unminified code, enable source maps in \`${settingKey}\` (e.g. by setting them to \`'hidden'\`).`,
279
374
  );
280
375
  });
281
376
  }
282
377
 
283
378
  function logSentryEnablesSourceMap(settingKey, settingValue) {
284
379
  consoleSandbox(() => {
285
- // eslint-disable-next-line no-console
380
+ // eslint-disable-next-line no-console
286
381
  console.log(`[Sentry] Enabled source map generation in the build options with \`${settingKey}: ${settingValue}\`.`);
287
382
  });
288
383
  }
289
384
 
290
- export { changeNuxtSourceMapSettings, changeRollupSourceMapSettings, changeViteSourceMapSettings, getPluginOptions, setupSourceMaps };
385
+ export { changeNuxtSourceMapSettings, extractNuxtSourceMapSetting, getPluginOptions, setupSourceMaps, validateNitroSourceMapSettings };
291
386
  //# sourceMappingURL=sourceMaps.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sourceMaps.js","sources":["../../../src/vite/sourceMaps.ts"],"sourcesContent":["import type { Nuxt } from '@nuxt/schema';\nimport { consoleSandbox } from '@sentry/core';\nimport { type SentryRollupPluginOptions, sentryRollupPlugin } from '@sentry/rollup-plugin';\nimport { type SentryVitePluginOptions, sentryVitePlugin } from '@sentry/vite-plugin';\nimport type { NitroConfig } from 'nitropack';\nimport type { OutputOptions } from 'rollup';\nimport type { SentryNuxtModuleOptions } from '../common/types';\n\n/**\n * Whether the user enabled (true, 'hidden', 'inline') or disabled (false) source maps\n */\nexport type UserSourceMapSetting = 'enabled' | 'disabled' | 'unset' | undefined;\n\n/**\n * Setup source maps for Sentry inside the Nuxt module during build time (in Vite for Nuxt and Rollup for Nitro).\n */\nexport function setupSourceMaps(moduleOptions: SentryNuxtModuleOptions, nuxt: Nuxt): void {\n const sourceMapsUploadOptions = moduleOptions.sourceMapsUploadOptions || {};\n const sourceMapsEnabled = sourceMapsUploadOptions.enabled ?? true;\n\n nuxt.hook('modules:done', () => {\n if (sourceMapsEnabled && !nuxt.options.dev) {\n changeNuxtSourceMapSettings(nuxt, moduleOptions);\n }\n });\n\n nuxt.hook('vite:extendConfig', async (viteConfig, _env) => {\n if (sourceMapsEnabled && viteConfig.mode !== 'development') {\n const previousUserSourceMapSetting = changeViteSourceMapSettings(viteConfig, moduleOptions);\n\n // Add Sentry plugin\n viteConfig.plugins = viteConfig.plugins || [];\n viteConfig.plugins.push(\n sentryVitePlugin(getPluginOptions(moduleOptions, previousUserSourceMapSetting === 'unset')),\n );\n }\n });\n\n nuxt.hook('nitro:config', (nitroConfig: NitroConfig) => {\n if (sourceMapsEnabled && !nitroConfig.dev) {\n if (!nitroConfig.rollupConfig) {\n nitroConfig.rollupConfig = {};\n }\n\n if (nitroConfig.rollupConfig.plugins === null || nitroConfig.rollupConfig.plugins === undefined) {\n nitroConfig.rollupConfig.plugins = [];\n } else if (!Array.isArray(nitroConfig.rollupConfig.plugins)) {\n // `rollupConfig.plugins` can be a single plugin, so we want to put it into an array so that we can push our own plugin\n nitroConfig.rollupConfig.plugins = [nitroConfig.rollupConfig.plugins];\n }\n\n const previousUserSourceMapSetting = changeRollupSourceMapSettings(nitroConfig, moduleOptions);\n\n // Add Sentry plugin\n nitroConfig.rollupConfig.plugins.push(\n sentryRollupPlugin(getPluginOptions(moduleOptions, previousUserSourceMapSetting === 'unset')),\n );\n }\n });\n}\n\n/**\n * Normalizes the beginning of a path from e.g. ../../../ to ./\n */\nfunction normalizePath(path: string): string {\n return path.replace(/^(\\.\\.\\/)+/, './');\n}\n\n/**\n * Generates source maps upload options for the Sentry Vite and Rollup plugin.\n *\n * Only exported for Testing purposes.\n */\nexport function getPluginOptions(\n moduleOptions: SentryNuxtModuleOptions,\n deleteFilesAfterUpload: boolean,\n): SentryVitePluginOptions | SentryRollupPluginOptions {\n const sourceMapsUploadOptions = moduleOptions.sourceMapsUploadOptions || {};\n\n if (typeof sourceMapsUploadOptions.sourcemaps?.filesToDeleteAfterUpload === 'undefined' && deleteFilesAfterUpload) {\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.log(\n '[Sentry] Setting `sentry.sourceMapsUploadOptions.sourcemaps.filesToDeleteAfterUpload: [\".*/**/public/**/*.map\"]` to delete generated source maps after they were uploaded to Sentry.',\n );\n });\n }\n\n return {\n org: sourceMapsUploadOptions.org ?? process.env.SENTRY_ORG,\n project: sourceMapsUploadOptions.project ?? process.env.SENTRY_PROJECT,\n authToken: sourceMapsUploadOptions.authToken ?? process.env.SENTRY_AUTH_TOKEN,\n telemetry: sourceMapsUploadOptions.telemetry ?? true,\n url: sourceMapsUploadOptions.url ?? process.env.SENTRY_URL,\n debug: moduleOptions.debug ?? false,\n silent: sourceMapsUploadOptions.silent ?? false,\n errorHandler: sourceMapsUploadOptions.errorHandler,\n release: {\n name: sourceMapsUploadOptions.release?.name,\n ...moduleOptions?.unstable_sentryBundlerPluginOptions?.release,\n },\n _metaOptions: {\n telemetry: {\n metaFramework: 'nuxt',\n },\n },\n ...moduleOptions?.unstable_sentryBundlerPluginOptions,\n\n sourcemaps: {\n // The server/client files are in different places depending on the nitro preset (e.g. '.output/server' or '.netlify/functions-internal/server')\n // We cannot determine automatically how the build folder looks like (depends on the preset), so we have to accept that source maps are uploaded multiple times (with the vitePlugin for Nuxt and the rollupPlugin for Nitro).\n // If we could know where the server/client assets are located, we could do something like this (based on the Nitro preset): isNitro ? ['./.output/server/**/*'] : ['./.output/public/**/*'],\n assets: sourceMapsUploadOptions.sourcemaps?.assets ?? undefined,\n ignore: sourceMapsUploadOptions.sourcemaps?.ignore ?? undefined,\n filesToDeleteAfterUpload: sourceMapsUploadOptions.sourcemaps?.filesToDeleteAfterUpload\n ? sourceMapsUploadOptions.sourcemaps?.filesToDeleteAfterUpload\n : deleteFilesAfterUpload\n ? ['.*/**/public/**/*.map']\n : undefined,\n rewriteSources: (source: string) => normalizePath(source),\n ...moduleOptions?.unstable_sentryBundlerPluginOptions?.sourcemaps,\n },\n };\n}\n\n/* There are 3 ways to set up source maps (https://github.com/getsentry/sentry-javascript/issues/13993)\n 1. User explicitly disabled source maps\n - keep this setting (emit a warning that errors won't be unminified in Sentry)\n - We will not upload anything\n 2. users enabled source map generation (true, hidden, inline).\n - keep this setting (don't do anything - like deletion - besides uploading)\n 3. users did not set source maps generation\n - we enable 'hidden' source maps generation\n - configure `filesToDeleteAfterUpload` to delete all .map files (we emit a log about this)\n\n Nuxt has 3 places to set source maps: vite options, rollup options, nuxt itself\n Ideally, all 3 are enabled to get all source maps.\n */\n\n/** only exported for testing */\nexport function changeNuxtSourceMapSettings(\n nuxt: Nuxt,\n sentryModuleOptions: SentryNuxtModuleOptions,\n): { client: UserSourceMapSetting; server: UserSourceMapSetting } {\n nuxt.options.sourcemap = nuxt.options.sourcemap ?? { server: undefined, client: undefined };\n\n let previousUserSourceMapSetting: { client: UserSourceMapSetting; server: UserSourceMapSetting } = {\n client: undefined,\n server: undefined,\n };\n\n const nuxtSourceMap = nuxt.options.sourcemap;\n\n if (typeof nuxtSourceMap === 'string' || typeof nuxtSourceMap === 'boolean' || typeof nuxtSourceMap === 'undefined') {\n switch (nuxtSourceMap) {\n case false:\n warnExplicitlyDisabledSourceMap('sourcemap');\n previousUserSourceMapSetting = { client: 'disabled', server: 'disabled' };\n break;\n\n case 'hidden':\n case true:\n logKeepSourceMapSetting(sentryModuleOptions, 'sourcemap', (nuxtSourceMap as true).toString());\n previousUserSourceMapSetting = { client: 'enabled', server: 'enabled' };\n break;\n case undefined:\n nuxt.options.sourcemap = { server: 'hidden', client: 'hidden' };\n logSentryEnablesSourceMap('sourcemap.client', 'hidden');\n logSentryEnablesSourceMap('sourcemap.server', 'hidden');\n previousUserSourceMapSetting = { client: 'unset', server: 'unset' };\n break;\n }\n } else {\n if (nuxtSourceMap.client === false) {\n warnExplicitlyDisabledSourceMap('sourcemap.client');\n previousUserSourceMapSetting.client = 'disabled';\n } else if (['hidden', true].includes(nuxtSourceMap.client)) {\n logKeepSourceMapSetting(sentryModuleOptions, 'sourcemap.client', nuxtSourceMap.client.toString());\n previousUserSourceMapSetting.client = 'enabled';\n } else {\n nuxt.options.sourcemap.client = 'hidden';\n logSentryEnablesSourceMap('sourcemap.client', 'hidden');\n previousUserSourceMapSetting.client = 'unset';\n }\n\n if (nuxtSourceMap.server === false) {\n warnExplicitlyDisabledSourceMap('sourcemap.server');\n previousUserSourceMapSetting.server = 'disabled';\n } else if (['hidden', true].includes(nuxtSourceMap.server)) {\n logKeepSourceMapSetting(sentryModuleOptions, 'sourcemap.server', nuxtSourceMap.server.toString());\n previousUserSourceMapSetting.server = 'enabled';\n } else {\n nuxt.options.sourcemap.server = 'hidden';\n logSentryEnablesSourceMap('sourcemap.server', 'hidden');\n previousUserSourceMapSetting.server = 'unset';\n }\n }\n\n return previousUserSourceMapSetting;\n}\n\n/** only exported for testing */\nexport function changeViteSourceMapSettings(\n viteConfig: { build?: { sourcemap?: boolean | 'inline' | 'hidden' } },\n sentryModuleOptions: SentryNuxtModuleOptions,\n): UserSourceMapSetting {\n viteConfig.build = viteConfig.build || {};\n const viteSourceMap = viteConfig.build.sourcemap;\n\n let previousUserSourceMapSetting: UserSourceMapSetting;\n\n if (viteSourceMap === false) {\n warnExplicitlyDisabledSourceMap('vite.build.sourcemap');\n previousUserSourceMapSetting = 'disabled';\n } else if (viteSourceMap && ['hidden', 'inline', true].includes(viteSourceMap)) {\n logKeepSourceMapSetting(sentryModuleOptions, 'vite.build.sourcemap', viteSourceMap.toString());\n previousUserSourceMapSetting = 'enabled';\n } else {\n viteConfig.build.sourcemap = 'hidden';\n logSentryEnablesSourceMap('vite.build.sourcemap', 'hidden');\n previousUserSourceMapSetting = 'unset';\n }\n\n return previousUserSourceMapSetting;\n}\n\n/** only exported for testing */\nexport function changeRollupSourceMapSettings(\n nitroConfig: {\n rollupConfig?: {\n output?: {\n sourcemap?: OutputOptions['sourcemap'];\n sourcemapExcludeSources?: OutputOptions['sourcemapExcludeSources'];\n };\n };\n },\n sentryModuleOptions: SentryNuxtModuleOptions,\n): UserSourceMapSetting {\n nitroConfig.rollupConfig = nitroConfig.rollupConfig || {};\n nitroConfig.rollupConfig.output = nitroConfig.rollupConfig.output || { sourcemap: undefined };\n\n let previousUserSourceMapSetting: UserSourceMapSetting;\n\n const nitroSourceMap = nitroConfig.rollupConfig.output.sourcemap;\n\n if (nitroSourceMap === false) {\n warnExplicitlyDisabledSourceMap('nitro.rollupConfig.output.sourcemap');\n previousUserSourceMapSetting = 'disabled';\n } else if (nitroSourceMap && ['hidden', 'inline', true].includes(nitroSourceMap)) {\n logKeepSourceMapSetting(sentryModuleOptions, 'nitro.rollupConfig.output.sourcemap', nitroSourceMap.toString());\n previousUserSourceMapSetting = 'enabled';\n } else {\n nitroConfig.rollupConfig.output.sourcemap = 'hidden';\n logSentryEnablesSourceMap('nitro.rollupConfig.output.sourcemap', 'hidden');\n previousUserSourceMapSetting = 'unset';\n }\n\n nitroConfig.rollupConfig.output.sourcemapExcludeSources = false;\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.log(\n '[Sentry] Disabled source map setting in the Nuxt config: `nitro.rollupConfig.output.sourcemapExcludeSources`. Source maps will include the actual code to be able to un-minify code snippets in Sentry.',\n );\n });\n\n return previousUserSourceMapSetting;\n}\n\nfunction logKeepSourceMapSetting(\n sentryNuxtModuleOptions: SentryNuxtModuleOptions,\n settingKey: string,\n settingValue: string,\n): void {\n if (sentryNuxtModuleOptions.debug) {\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.log(\n `[Sentry] We discovered \\`${settingKey}\\` is set to \\`${settingValue}\\`. Sentry will keep this source map setting. This will un-minify the code snippet on the Sentry Issue page.`,\n );\n });\n }\n}\n\nfunction warnExplicitlyDisabledSourceMap(settingKey: string): void {\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.warn(\n `[Sentry] Parts of source map generation are currently disabled in your Nuxt configuration (\\`${settingKey}: false\\`). This setting is either a default setting or was explicitly set in your configuration. Sentry won't override this setting. Without source maps, code snippets on the Sentry Issues page will remain minified. To show unminified code, enable source maps in \\`${settingKey}\\` (e.g. by setting them to \\`hidden\\`).`,\n );\n });\n}\n\nfunction logSentryEnablesSourceMap(settingKey: string, settingValue: string): void {\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.log(`[Sentry] Enabled source map generation in the build options with \\`${settingKey}: ${settingValue}\\`.`);\n });\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sourceMaps.js","sources":["../../../src/vite/sourceMaps.ts"],"sourcesContent":["import type { Nuxt } from '@nuxt/schema';\nimport { consoleSandbox } from '@sentry/core';\nimport { type SentryRollupPluginOptions, sentryRollupPlugin } from '@sentry/rollup-plugin';\nimport { type SentryVitePluginOptions, sentryVitePlugin } from '@sentry/vite-plugin';\nimport type { NitroConfig } from 'nitropack';\nimport type { SentryNuxtModuleOptions } from '../common/types';\n\n/**\n * Whether the user enabled (true, 'hidden', 'inline') or disabled (false) source maps\n */\nexport type UserSourceMapSetting = 'enabled' | 'disabled' | 'unset' | undefined;\n\n/** A valid source map setting */\nexport type SourceMapSetting = boolean | 'hidden' | 'inline';\n\n/**\n * Setup source maps for Sentry inside the Nuxt module during build time (in Vite for Nuxt and Rollup for Nitro).\n */\nexport function setupSourceMaps(moduleOptions: SentryNuxtModuleOptions, nuxt: Nuxt): void {\n const isDebug = moduleOptions.debug;\n\n const sourceMapsUploadOptions = moduleOptions.sourceMapsUploadOptions || {};\n const sourceMapsEnabled = sourceMapsUploadOptions.enabled ?? true;\n\n // In case we overwrite the source map settings, we default to deleting the files\n let shouldDeleteFilesFallback = { client: true, server: true };\n\n nuxt.hook('modules:done', () => {\n if (sourceMapsEnabled && !nuxt.options.dev) {\n // Changing this setting will propagate:\n // - for client to viteConfig.build.sourceMap\n // - for server to viteConfig.build.sourceMap and nitro.sourceMap\n // On server, nitro.rollupConfig.output.sourcemap remains unaffected from this change.\n\n // ONLY THIS nuxt.sourcemap.(server/client) setting is the one Sentry will eventually overwrite with 'hidden'\n const previousSourceMapSettings = changeNuxtSourceMapSettings(nuxt, moduleOptions);\n\n shouldDeleteFilesFallback = {\n client: previousSourceMapSettings.client === 'unset',\n server: previousSourceMapSettings.server === 'unset',\n };\n\n if (\n isDebug &&\n !sourceMapsUploadOptions.sourcemaps?.filesToDeleteAfterUpload &&\n (shouldDeleteFilesFallback.client || shouldDeleteFilesFallback.server)\n ) {\n consoleSandbox(() =>\n // eslint-disable-next-line no-console\n console.log(\n \"[Sentry] As Sentry enabled `'hidden'` source maps, source maps will be automatically deleted after uploading them to Sentry.\",\n ),\n );\n }\n }\n });\n\n nuxt.hook('vite:extendConfig', async (viteConfig, env) => {\n if (sourceMapsEnabled && viteConfig.mode !== 'development') {\n const runtime = env.isServer ? 'server' : env.isClient ? 'client' : undefined;\n const nuxtSourceMapSetting = extractNuxtSourceMapSetting(nuxt, runtime);\n\n viteConfig.build = viteConfig.build || {};\n const viteSourceMap = viteConfig.build.sourcemap;\n\n // Vite source map options are the same as the Nuxt source map config options (unless overwritten)\n validateDifferentSourceMapSettings({\n nuxtSettingKey: `sourcemap.${runtime}`,\n nuxtSettingValue: nuxtSourceMapSetting,\n otherSettingKey: 'viteConfig.build.sourcemap',\n otherSettingValue: viteSourceMap,\n });\n\n if (isDebug) {\n consoleSandbox(() => {\n if (!runtime) {\n // eslint-disable-next-line no-console\n console.log(\"[Sentry] Cannot detect runtime (client/server) inside hook 'vite:extendConfig'.\");\n } else {\n // eslint-disable-next-line no-console\n console.log(`[Sentry] Adding Sentry Vite plugin to the ${runtime} runtime.`);\n }\n });\n }\n\n // Add Sentry plugin\n // Vite plugin is added on the client and server side (hook runs twice)\n // Nuxt client source map is 'false' by default. Warning about this will be shown already in an earlier step, and it's also documented that `nuxt.sourcemap.client` needs to be enabled.\n viteConfig.plugins = viteConfig.plugins || [];\n viteConfig.plugins.push(sentryVitePlugin(getPluginOptions(moduleOptions, shouldDeleteFilesFallback)));\n }\n });\n\n nuxt.hook('nitro:config', (nitroConfig: NitroConfig) => {\n if (sourceMapsEnabled && !nitroConfig.dev) {\n if (!nitroConfig.rollupConfig) {\n nitroConfig.rollupConfig = {};\n }\n\n if (nitroConfig.rollupConfig.plugins === null || nitroConfig.rollupConfig.plugins === undefined) {\n nitroConfig.rollupConfig.plugins = [];\n } else if (!Array.isArray(nitroConfig.rollupConfig.plugins)) {\n // `rollupConfig.plugins` can be a single plugin, so we want to put it into an array so that we can push our own plugin\n nitroConfig.rollupConfig.plugins = [nitroConfig.rollupConfig.plugins];\n }\n\n validateNitroSourceMapSettings(nuxt, nitroConfig, moduleOptions);\n\n if (isDebug) {\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.log('[Sentry] Adding Sentry Rollup plugin to the server runtime.');\n });\n }\n\n // Add Sentry plugin\n // Runs only on server-side (Nitro)\n nitroConfig.rollupConfig.plugins.push(\n sentryRollupPlugin(getPluginOptions(moduleOptions, shouldDeleteFilesFallback)),\n );\n }\n });\n}\n\n/**\n * Normalizes the beginning of a path from e.g. ../../../ to ./\n */\nfunction normalizePath(path: string): string {\n return path.replace(/^(\\.\\.\\/)+/, './');\n}\n\n/**\n * Generates source maps upload options for the Sentry Vite and Rollup plugin.\n *\n * Only exported for Testing purposes.\n */\nexport function getPluginOptions(\n moduleOptions: SentryNuxtModuleOptions,\n shouldDeleteFilesFallback?: { client: boolean; server: boolean },\n): SentryVitePluginOptions | SentryRollupPluginOptions {\n const sourceMapsUploadOptions = moduleOptions.sourceMapsUploadOptions || {};\n\n const shouldDeleteFilesAfterUpload = shouldDeleteFilesFallback?.client || shouldDeleteFilesFallback?.server;\n const fallbackFilesToDelete = [\n ...(shouldDeleteFilesFallback?.client ? ['.*/**/public/**/*.map'] : []),\n ...(shouldDeleteFilesFallback?.server\n ? ['.*/**/server/**/*.map', '.*/**/output/**/*.map', '.*/**/function/**/*.map']\n : []),\n ];\n\n if (\n typeof sourceMapsUploadOptions.sourcemaps?.filesToDeleteAfterUpload === 'undefined' &&\n shouldDeleteFilesAfterUpload\n ) {\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.log(\n `[Sentry] Setting \\`sentry.sourceMapsUploadOptions.sourcemaps.filesToDeleteAfterUpload: [${fallbackFilesToDelete\n // Logging it as strings in the array\n .map(path => `\"${path}\"`)\n .join(', ')}]\\` to delete generated source maps after they were uploaded to Sentry.`,\n );\n });\n }\n\n return {\n org: sourceMapsUploadOptions.org ?? process.env.SENTRY_ORG,\n project: sourceMapsUploadOptions.project ?? process.env.SENTRY_PROJECT,\n authToken: sourceMapsUploadOptions.authToken ?? process.env.SENTRY_AUTH_TOKEN,\n telemetry: sourceMapsUploadOptions.telemetry ?? true,\n url: sourceMapsUploadOptions.url ?? process.env.SENTRY_URL,\n debug: moduleOptions.debug ?? false,\n silent: sourceMapsUploadOptions.silent ?? false,\n errorHandler: sourceMapsUploadOptions.errorHandler,\n release: {\n name: sourceMapsUploadOptions.release?.name,\n ...moduleOptions?.unstable_sentryBundlerPluginOptions?.release,\n },\n _metaOptions: {\n telemetry: {\n metaFramework: 'nuxt',\n },\n },\n ...moduleOptions?.unstable_sentryBundlerPluginOptions,\n\n sourcemaps: {\n // The server/client files are in different places depending on the nitro preset (e.g. '.output/server' or '.netlify/functions-internal/server')\n // We cannot determine automatically how the build folder looks like (depends on the preset), so we have to accept that source maps are uploaded multiple times (with the vitePlugin for Nuxt and the rollupPlugin for Nitro).\n // If we could know where the server/client assets are located, we could do something like this (based on the Nitro preset): isNitro ? ['./.output/server/**/*'] : ['./.output/public/**/*'],\n assets: sourceMapsUploadOptions.sourcemaps?.assets ?? undefined,\n ignore: sourceMapsUploadOptions.sourcemaps?.ignore ?? undefined,\n filesToDeleteAfterUpload: sourceMapsUploadOptions.sourcemaps?.filesToDeleteAfterUpload\n ? sourceMapsUploadOptions.sourcemaps?.filesToDeleteAfterUpload\n : shouldDeleteFilesFallback?.server || shouldDeleteFilesFallback?.client\n ? fallbackFilesToDelete\n : undefined,\n rewriteSources: (source: string) => normalizePath(source),\n ...moduleOptions?.unstable_sentryBundlerPluginOptions?.sourcemaps,\n },\n };\n}\n\n/* There are multiple ways to set up source maps (https://github.com/getsentry/sentry-javascript/issues/13993 and https://github.com/getsentry/sentry-javascript/pull/15859)\n 1. User explicitly disabled source maps\n - keep this setting (emit a warning that errors won't be unminified in Sentry)\n - We will not upload anything\n 2. users enabled source map generation (true, hidden, inline).\n - keep this setting (don't do anything - like deletion - besides uploading)\n 3. users did not set source maps generation\n - we enable 'hidden' source maps generation\n - configure `filesToDeleteAfterUpload` to delete all .map files (we emit a log about this)\n\n Users only have to explicitly enable client source maps. Sentry only overwrites the base Nuxt source map settings as they propagate.\n */\n\n/** only exported for tests */\nexport function extractNuxtSourceMapSetting(\n nuxt: { options: { sourcemap?: SourceMapSetting | { server?: SourceMapSetting; client?: SourceMapSetting } } },\n runtime: 'client' | 'server' | undefined,\n): SourceMapSetting | undefined {\n if (!runtime) {\n return undefined;\n } else {\n return typeof nuxt.options?.sourcemap === 'boolean' || typeof nuxt.options?.sourcemap === 'string'\n ? nuxt.options.sourcemap\n : nuxt.options?.sourcemap?.[runtime];\n }\n}\n\n/** only exported for testing */\nexport function changeNuxtSourceMapSettings(\n nuxt: Nuxt,\n sentryModuleOptions: SentryNuxtModuleOptions,\n): { client: UserSourceMapSetting; server: UserSourceMapSetting } {\n nuxt.options.sourcemap = nuxt.options.sourcemap ?? { server: undefined, client: undefined };\n\n let previousUserSourceMapSetting: { client: UserSourceMapSetting; server: UserSourceMapSetting } = {\n client: undefined,\n server: undefined,\n };\n\n const nuxtSourceMap = nuxt.options.sourcemap;\n\n if (typeof nuxtSourceMap === 'string' || typeof nuxtSourceMap === 'boolean' || typeof nuxtSourceMap === 'undefined') {\n switch (nuxtSourceMap) {\n case false:\n warnExplicitlyDisabledSourceMap('sourcemap');\n previousUserSourceMapSetting = { client: 'disabled', server: 'disabled' };\n break;\n\n case 'hidden':\n case true:\n logKeepEnabledSourceMapSetting(sentryModuleOptions, 'sourcemap', (nuxtSourceMap as true).toString());\n previousUserSourceMapSetting = { client: 'enabled', server: 'enabled' };\n break;\n case undefined:\n nuxt.options.sourcemap = { server: 'hidden', client: 'hidden' };\n logSentryEnablesSourceMap('sourcemap.client', 'hidden');\n logSentryEnablesSourceMap('sourcemap.server', 'hidden');\n previousUserSourceMapSetting = { client: 'unset', server: 'unset' };\n break;\n }\n } else {\n if (nuxtSourceMap.client === false) {\n warnExplicitlyDisabledSourceMap('sourcemap.client');\n previousUserSourceMapSetting.client = 'disabled';\n } else if (['hidden', true].includes(nuxtSourceMap.client)) {\n logKeepEnabledSourceMapSetting(sentryModuleOptions, 'sourcemap.client', nuxtSourceMap.client.toString());\n previousUserSourceMapSetting.client = 'enabled';\n } else {\n nuxt.options.sourcemap.client = 'hidden';\n logSentryEnablesSourceMap('sourcemap.client', 'hidden');\n previousUserSourceMapSetting.client = 'unset';\n }\n\n if (nuxtSourceMap.server === false) {\n warnExplicitlyDisabledSourceMap('sourcemap.server');\n previousUserSourceMapSetting.server = 'disabled';\n } else if (['hidden', true].includes(nuxtSourceMap.server)) {\n logKeepEnabledSourceMapSetting(sentryModuleOptions, 'sourcemap.server', nuxtSourceMap.server.toString());\n previousUserSourceMapSetting.server = 'enabled';\n } else {\n nuxt.options.sourcemap.server = 'hidden';\n logSentryEnablesSourceMap('sourcemap.server', 'hidden');\n previousUserSourceMapSetting.server = 'unset';\n }\n }\n\n return previousUserSourceMapSetting;\n}\n\n/** Logs warnings about potentially conflicting source map settings.\n * Configures `sourcemapExcludeSources` in Nitro to make source maps usable in Sentry.\n *\n * only exported for testing\n */\nexport function validateNitroSourceMapSettings(\n nuxt: { options: { sourcemap?: SourceMapSetting | { server?: SourceMapSetting } } },\n nitroConfig: NitroConfig,\n sentryModuleOptions: SentryNuxtModuleOptions,\n): void {\n const isDebug = sentryModuleOptions.debug;\n const nuxtSourceMap = extractNuxtSourceMapSetting(nuxt, 'server');\n\n // NITRO CONFIG ---\n\n validateDifferentSourceMapSettings({\n nuxtSettingKey: 'sourcemap.server',\n nuxtSettingValue: nuxtSourceMap,\n otherSettingKey: 'nitro.sourceMap',\n otherSettingValue: nitroConfig.sourceMap,\n });\n\n // ROLLUP CONFIG ---\n\n nitroConfig.rollupConfig = nitroConfig.rollupConfig || {};\n nitroConfig.rollupConfig.output = nitroConfig.rollupConfig.output || { sourcemap: undefined };\n const nitroRollupSourceMap = nitroConfig.rollupConfig.output.sourcemap;\n\n // We don't override nitro.rollupConfig.output.sourcemap (undefined by default, but overrides all other server-side source map settings)\n if (typeof nitroRollupSourceMap !== 'undefined' && ['hidden', 'inline', true, false].includes(nitroRollupSourceMap)) {\n const settingKey = 'nitro.rollupConfig.output.sourcemap';\n\n validateDifferentSourceMapSettings({\n nuxtSettingKey: 'sourcemap.server',\n nuxtSettingValue: nuxtSourceMap,\n otherSettingKey: settingKey,\n otherSettingValue: nitroRollupSourceMap,\n });\n }\n\n nitroConfig.rollupConfig.output.sourcemapExcludeSources = false;\n if (isDebug) {\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.log(\n '[Sentry] Set `sourcemapExcludeSources: false` in the Nuxt config (`nitro.rollupConfig.output`). Source maps will now include the actual code to be able to un-minify code snippets in Sentry.',\n );\n });\n }\n}\n\nfunction validateDifferentSourceMapSettings({\n nuxtSettingKey,\n nuxtSettingValue,\n otherSettingKey,\n otherSettingValue,\n}: {\n nuxtSettingKey: string;\n nuxtSettingValue?: SourceMapSetting;\n otherSettingKey: string;\n otherSettingValue?: SourceMapSetting;\n}): void {\n if (nuxtSettingValue !== otherSettingValue) {\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.warn(\n `[Sentry] Source map generation settings are conflicting. Sentry uses \\`${nuxtSettingKey}: ${nuxtSettingValue}\\`. However, a conflicting setting was discovered (\\`${otherSettingKey}: ${otherSettingValue}\\`). This setting was probably explicitly set in your configuration. Sentry won't override this setting but it may affect source maps generation and upload. Without source maps, code snippets on the Sentry Issues page will remain minified.`,\n );\n });\n }\n}\n\nfunction logKeepEnabledSourceMapSetting(\n sentryNuxtModuleOptions: SentryNuxtModuleOptions,\n settingKey: string,\n settingValue: string,\n): void {\n if (sentryNuxtModuleOptions.debug) {\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.log(\n `[Sentry] \\`${settingKey}\\` is enabled with \\`${settingValue}\\`. This will correctly un-minify the code snippet on the Sentry Issue Details page.`,\n );\n });\n }\n}\n\nfunction warnExplicitlyDisabledSourceMap(settingKey: string): void {\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.warn(\n `[Sentry] We discovered \\`${settingKey}\\` is set to \\`false\\`. This setting is either a default setting or was explicitly set in your configuration. Sentry won't override this setting. Without source maps, code snippets on the Sentry Issues page will remain minified. To show unminified code, enable source maps in \\`${settingKey}\\` (e.g. by setting them to \\`'hidden'\\`).`,\n );\n });\n}\n\nfunction logSentryEnablesSourceMap(settingKey: string, settingValue: string): void {\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.log(`[Sentry] Enabled source map generation in the build options with \\`${settingKey}: ${settingValue}\\`.`);\n });\n}\n"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
  "compatibility": {
5
5
  "nuxt": ">=3.7.0"
6
6
  },
7
- "version": "9.10.0",
7
+ "version": "9.11.0",
8
8
  "builder": {
9
9
  "@nuxt/module-builder": "0.8.4",
10
10
  "unbuild": "2.0.0"