@sentry/nuxt 8.36.0-beta.0 → 8.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 (58) hide show
  1. package/build/cjs/client/index.js +2 -0
  2. package/build/cjs/client/index.js.map +1 -1
  3. package/build/cjs/client/piniaIntegration.js +40 -0
  4. package/build/cjs/client/piniaIntegration.js.map +1 -0
  5. package/build/cjs/client/sdk.js.map +1 -1
  6. package/build/cjs/index.client.js +2 -0
  7. package/build/cjs/index.client.js.map +1 -1
  8. package/build/cjs/module.js +3 -2
  9. package/build/cjs/module.js.map +1 -1
  10. package/build/cjs/runtime/plugins/sentry.client.js +5 -24
  11. package/build/cjs/runtime/plugins/sentry.client.js.map +1 -1
  12. package/build/cjs/runtime/plugins/sentry.server.js.map +1 -1
  13. package/build/cjs/runtime/utils.js.map +1 -1
  14. package/build/cjs/server/sdk.js.map +1 -1
  15. package/build/cjs/vite/addServerConfig.js +23 -12
  16. package/build/cjs/vite/addServerConfig.js.map +1 -1
  17. package/build/cjs/vite/sourceMaps.js.map +1 -1
  18. package/build/cjs/vite/utils.js +100 -28
  19. package/build/cjs/vite/utils.js.map +1 -1
  20. package/build/esm/client/index.js +1 -0
  21. package/build/esm/client/index.js.map +1 -1
  22. package/build/esm/client/piniaIntegration.js +38 -0
  23. package/build/esm/client/piniaIntegration.js.map +1 -0
  24. package/build/esm/client/sdk.js.map +1 -1
  25. package/build/esm/index.client.js +1 -0
  26. package/build/esm/index.client.js.map +1 -1
  27. package/build/esm/module.js +2 -1
  28. package/build/esm/module.js.map +1 -1
  29. package/build/esm/package.json +1 -1
  30. package/build/esm/runtime/plugins/sentry.client.js +3 -22
  31. package/build/esm/runtime/plugins/sentry.client.js.map +1 -1
  32. package/build/esm/runtime/plugins/sentry.server.js.map +1 -1
  33. package/build/esm/runtime/utils.js.map +1 -1
  34. package/build/esm/server/sdk.js.map +1 -1
  35. package/build/esm/vite/addServerConfig.js +24 -13
  36. package/build/esm/vite/addServerConfig.js.map +1 -1
  37. package/build/esm/vite/sourceMaps.js.map +1 -1
  38. package/build/esm/vite/utils.js +98 -28
  39. package/build/esm/vite/utils.js.map +1 -1
  40. package/build/module/module.d.mts +12 -0
  41. package/build/module/module.d.ts +12 -0
  42. package/build/module/module.json +1 -1
  43. package/build/module/module.mjs +65 -19
  44. package/build/module/runtime/plugins/sentry.client.js +5 -21
  45. package/build/types/client/index.d.ts +1 -0
  46. package/build/types/client/index.d.ts.map +1 -1
  47. package/build/types/client/piniaIntegration.d.ts +12 -0
  48. package/build/types/client/piniaIntegration.d.ts.map +1 -0
  49. package/build/types/common/types.d.ts +14 -12
  50. package/build/types/common/types.d.ts.map +1 -1
  51. package/build/types/index.types.d.ts.map +1 -1
  52. package/build/types/module.d.ts.map +1 -1
  53. package/build/types/runtime/plugins/sentry.client.d.ts.map +1 -1
  54. package/build/types/vite/addServerConfig.d.ts +1 -1
  55. package/build/types/vite/addServerConfig.d.ts.map +1 -1
  56. package/build/types/vite/utils.d.ts +15 -6
  57. package/build/types/vite/utils.d.ts.map +1 -1
  58. package/package.json +8 -8
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../../src/vite/utils.ts"],"sourcesContent":["import * as fs from 'fs';\nimport * as path from 'path';\n\n/**\n * Find the default SDK init file for the given type (client or server).\n * The sentry.server.config file is prioritized over the instrument.server file.\n */\nexport function findDefaultSdkInitFile(type: 'server' | 'client'): string | undefined {\n const possibleFileExtensions = ['ts', 'js', 'mjs', 'cjs', 'mts', 'cts'];\n const cwd = process.cwd();\n\n const filePaths: string[] = [];\n if (type === 'server') {\n for (const ext of possibleFileExtensions) {\n // order is important here - we want to prioritize the server.config file\n filePaths.push(path.join(cwd, `sentry.${type}.config.${ext}`));\n filePaths.push(path.join(cwd, 'public', `instrument.${type}.${ext}`));\n }\n } else {\n for (const ext of possibleFileExtensions) {\n filePaths.push(path.join(cwd, `sentry.${type}.config.${ext}`));\n }\n }\n\n return filePaths.find(filename => fs.existsSync(filename));\n}\n\nexport const SENTRY_WRAPPED_ENTRY = '?sentry-query-wrapped-entry';\nexport const SENTRY_FUNCTIONS_REEXPORT = '?sentry-query-functions-reexport=';\nexport const QUERY_END_INDICATOR = 'SENTRY-QUERY-END';\n\n/**\n * Strips the Sentry query part from a path.\n * Example: example/path?sentry-query-wrapped-entry?sentry-query-functions-reexport=foo,SENTRY-QUERY-END -> /example/path\n *\n * Only exported for testing.\n */\nexport function removeSentryQueryFromPath(url: string): string {\n // eslint-disable-next-line @sentry-internal/sdk/no-regexp-constructor\n const regex = new RegExp(`\\\\${SENTRY_WRAPPED_ENTRY}.*?\\\\${QUERY_END_INDICATOR}`);\n return url.replace(regex, '');\n}\n\n/**\n * Extracts and sanitizes function re-export query parameters from a query string.\n * If it is a default export, it is not considered for re-exporting. This function is mostly relevant for re-exporting\n * serverless `handler` functions.\n *\n * Only exported for testing.\n */\nexport function extractFunctionReexportQueryParameters(query: string): string[] {\n // Regex matches the comma-separated params between the functions query\n // eslint-disable-next-line @sentry-internal/sdk/no-regexp-constructor\n const regex = new RegExp(`\\\\${SENTRY_FUNCTIONS_REEXPORT}(.*?)\\\\${QUERY_END_INDICATOR}`);\n const match = query.match(regex);\n\n return match && match[1]\n ? match[1]\n .split(',')\n .filter(param => param !== '')\n // Sanitize, as code could be injected with another rollup plugin\n .map((str: string) => str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'))\n : [];\n}\n\n/**\n * Constructs a code snippet with function reexports (can be used in Rollup plugins)\n */\nexport function constructFunctionReExport(pathWithQuery: string, entryId: string): string {\n const functionNames = extractFunctionReexportQueryParameters(pathWithQuery);\n\n return functionNames.reduce(\n (functionsCode, currFunctionName) =>\n functionsCode.concat(\n 'async function reExport(...args) {\\n' +\n ` const res = await import(${JSON.stringify(entryId)});\\n` +\n ` return res.${currFunctionName}.call(this, ...args);\\n` +\n '}\\n' +\n `export { reExport as ${currFunctionName} };\\n`,\n ),\n '',\n );\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sources":["../../../src/vite/utils.ts"],"sourcesContent":["import * as fs from 'fs';\nimport * as path from 'path';\nimport { consoleSandbox, flatten } from '@sentry/utils';\n\n/**\n * Find the default SDK init file for the given type (client or server).\n * The sentry.server.config file is prioritized over the instrument.server file.\n */\nexport function findDefaultSdkInitFile(type: 'server' | 'client'): string | undefined {\n const possibleFileExtensions = ['ts', 'js', 'mjs', 'cjs', 'mts', 'cts'];\n const cwd = process.cwd();\n\n const filePaths: string[] = [];\n if (type === 'server') {\n for (const ext of possibleFileExtensions) {\n // order is important here - we want to prioritize the server.config file\n filePaths.push(path.join(cwd, `sentry.${type}.config.${ext}`));\n filePaths.push(path.join(cwd, 'public', `instrument.${type}.${ext}`));\n }\n } else {\n for (const ext of possibleFileExtensions) {\n filePaths.push(path.join(cwd, `sentry.${type}.config.${ext}`));\n }\n }\n\n return filePaths.find(filename => fs.existsSync(filename));\n}\n\nexport const SENTRY_WRAPPED_ENTRY = '?sentry-query-wrapped-entry';\nexport const SENTRY_WRAPPED_FUNCTIONS = '?sentry-query-wrapped-functions=';\nexport const SENTRY_REEXPORTED_FUNCTIONS = '?sentry-query-reexported-functions=';\nexport const QUERY_END_INDICATOR = 'SENTRY-QUERY-END';\n\n/**\n * Strips the Sentry query part from a path.\n * Example: example/path?sentry-query-wrapped-entry?sentry-query-functions-reexport=foo,SENTRY-QUERY-END -> /example/path\n *\n * Only exported for testing.\n */\nexport function removeSentryQueryFromPath(url: string): string {\n // eslint-disable-next-line @sentry-internal/sdk/no-regexp-constructor\n const regex = new RegExp(`\\\\${SENTRY_WRAPPED_ENTRY}.*?\\\\${QUERY_END_INDICATOR}`);\n return url.replace(regex, '');\n}\n\n/**\n * Extracts and sanitizes function re-export and function wrap query parameters from a query string.\n * If it is a default export, it is not considered for re-exporting.\n *\n * Only exported for testing.\n */\nexport function extractFunctionReexportQueryParameters(query: string): { wrap: string[]; reexport: string[] } {\n // Regex matches the comma-separated params between the functions query\n // eslint-disable-next-line @sentry-internal/sdk/no-regexp-constructor\n const wrapRegex = new RegExp(\n `\\\\${SENTRY_WRAPPED_FUNCTIONS}(.*?)(\\\\${QUERY_END_INDICATOR}|\\\\${SENTRY_REEXPORTED_FUNCTIONS})`,\n );\n // eslint-disable-next-line @sentry-internal/sdk/no-regexp-constructor\n const reexportRegex = new RegExp(`\\\\${SENTRY_REEXPORTED_FUNCTIONS}(.*?)(\\\\${QUERY_END_INDICATOR})`);\n\n const wrapMatch = query.match(wrapRegex);\n const reexportMatch = query.match(reexportRegex);\n\n const wrap =\n wrapMatch && wrapMatch[1]\n ? wrapMatch[1]\n .split(',')\n .filter(param => param !== '')\n // Sanitize, as code could be injected with another rollup plugin\n .map((str: string) => str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'))\n : [];\n\n const reexport =\n reexportMatch && reexportMatch[1]\n ? reexportMatch[1]\n .split(',')\n .filter(param => param !== '' && param !== 'default')\n // Sanitize, as code could be injected with another rollup plugin\n .map((str: string) => str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'))\n : [];\n\n return { wrap, reexport };\n}\n\n/**\n * Constructs a comma-separated string with all functions that need to be re-exported later from the server entry.\n * It uses Rollup's `exportedBindings` to determine the functions to re-export. Functions which should be wrapped\n * (e.g. serverless handlers) are wrapped by Sentry.\n */\nexport function constructWrappedFunctionExportQuery(\n exportedBindings: Record<string, string[]> | null,\n entrypointWrappedFunctions: string[],\n debug?: boolean,\n): string {\n // `exportedBindings` can look like this: `{ '.': [ 'handler' ] }` or `{ '.': [], './firebase-gen-1.mjs': [ 'server' ] }`\n // The key `.` refers to exports within the current file, while other keys show from where exports were imported first.\n const functionsToExport = flatten(Object.values(exportedBindings || {})).reduce(\n (functions, currFunctionName) => {\n if (entrypointWrappedFunctions.includes(currFunctionName)) {\n functions.wrap.push(currFunctionName);\n } else {\n functions.reexport.push(currFunctionName);\n }\n return functions;\n },\n { wrap: [], reexport: [] } as { wrap: string[]; reexport: string[] },\n );\n\n if (debug && functionsToExport.wrap.length === 0) {\n consoleSandbox(() =>\n // eslint-disable-next-line no-console\n console.warn(\n \"[Sentry] No functions found to wrap. In case the server needs to export async functions other than `handler` or `server`, consider adding the name(s) to Sentry's build options `sentry.entrypointWrappedFunctions` in `nuxt.config.ts`.\",\n ),\n );\n }\n\n const wrapQuery = functionsToExport.wrap.length\n ? `${SENTRY_WRAPPED_FUNCTIONS}${functionsToExport.wrap.join(',')}`\n : '';\n const reexportQuery = functionsToExport.reexport.length\n ? `${SENTRY_REEXPORTED_FUNCTIONS}${functionsToExport.reexport.join(',')}`\n : '';\n\n return [wrapQuery, reexportQuery].join('');\n}\n\n/**\n * Constructs a code snippet with function reexports (can be used in Rollup plugins as a return value for `load()`)\n */\nexport function constructFunctionReExport(pathWithQuery: string, entryId: string): string {\n const { wrap: wrapFunctions, reexport: reexportFunctions } = extractFunctionReexportQueryParameters(pathWithQuery);\n\n return wrapFunctions\n .reduce(\n (functionsCode, currFunctionName) =>\n functionsCode.concat(\n `async function ${currFunctionName}_sentryWrapped(...args) {\\n` +\n ` const res = await import(${JSON.stringify(entryId)});\\n` +\n ` return res.${currFunctionName}.call(this, ...args);\\n` +\n '}\\n' +\n `export { ${currFunctionName}_sentryWrapped as ${currFunctionName} };\\n`,\n ),\n '',\n )\n .concat(\n reexportFunctions.reduce(\n (functionsCode, currFunctionName) =>\n functionsCode.concat(`export { ${currFunctionName} } from ${JSON.stringify(entryId)};`),\n '',\n ),\n );\n}\n"],"names":["flatten","consoleSandbox"],"mappings":"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"}
@@ -1,3 +1,4 @@
1
1
  export * from '@sentry/vue';
2
2
  export { init } from './sdk.js';
3
+ export { piniaIntegration } from './piniaIntegration.js';
3
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
@@ -0,0 +1,38 @@
1
+ import { defineIntegration } from '@sentry/core';
2
+ import { consoleSandbox } from '@sentry/utils';
3
+ import { createSentryPiniaPlugin } from '@sentry/vue';
4
+
5
+ const INTEGRATION_NAME = 'Pinia';
6
+
7
+ const _piniaIntegration = ((
8
+ // `unknown` here as well because usePinia declares this type: `export declare const usePinia: () => unknown;`
9
+ pinia,
10
+ options = {},
11
+ ) => {
12
+ return {
13
+ name: INTEGRATION_NAME,
14
+ setup() {
15
+ if (!pinia || (typeof pinia === 'object' && !('use' in pinia))) {
16
+ consoleSandbox(() => {
17
+ // eslint-disable-next-line no-console
18
+ console.warn(
19
+ '[Sentry] The Pinia integration was added, but the passed parameter `pinia` has the wrong value. Make sure to enable Pinia by adding `"@pinia/nuxt"` to the Nuxt modules array and pass pinia to Sentry with `piniaIntegration(usePinia())`. Current value of `pinia`:',
20
+ pinia,
21
+ );
22
+ });
23
+ } else {
24
+ (pinia ).use(createSentryPiniaPlugin(options));
25
+ }
26
+ },
27
+ };
28
+ }) ;
29
+
30
+ /**
31
+ * Monitor an existing Pinia store.
32
+ *
33
+ * This only works if "@pinia/nuxt" is added to the `modules` array.
34
+ */
35
+ const piniaIntegration = defineIntegration(_piniaIntegration);
36
+
37
+ export { piniaIntegration };
38
+ //# sourceMappingURL=piniaIntegration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"piniaIntegration.js","sources":["../../../src/client/piniaIntegration.ts"],"sourcesContent":["import { defineIntegration } from '@sentry/core';\nimport type { IntegrationFn } from '@sentry/types';\n\nimport { consoleSandbox } from '@sentry/utils';\nimport { createSentryPiniaPlugin } from '@sentry/vue';\n\nconst INTEGRATION_NAME = 'Pinia';\n\ntype Pinia = { use: (plugin: ReturnType<typeof createSentryPiniaPlugin>) => void };\n\nconst _piniaIntegration = ((\n // `unknown` here as well because usePinia declares this type: `export declare const usePinia: () => unknown;`\n pinia: unknown | Pinia,\n options: Parameters<typeof createSentryPiniaPlugin>[0] = {},\n) => {\n return {\n name: INTEGRATION_NAME,\n setup() {\n if (!pinia || (typeof pinia === 'object' && !('use' in pinia))) {\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.warn(\n '[Sentry] The Pinia integration was added, but the passed parameter `pinia` has the wrong value. Make sure to enable Pinia by adding `\"@pinia/nuxt\"` to the Nuxt modules array and pass pinia to Sentry with `piniaIntegration(usePinia())`. Current value of `pinia`:',\n pinia,\n );\n });\n } else {\n (pinia as Pinia).use(createSentryPiniaPlugin(options));\n }\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Monitor an existing Pinia store.\n *\n * This only works if \"@pinia/nuxt\" is added to the `modules` array.\n */\nexport const piniaIntegration = defineIntegration(_piniaIntegration);\n"],"names":[],"mappings":";;;;AAMA,MAAM,gBAAA,GAAmB,OAAO;;AAIhC,MAAM,iBAAA,IAAqB;AAC3B;AACA,EAAE,KAAK;AACP,EAAE,OAAO,GAAkD,EAAE;AAC7D,KAAK;AACL,EAAE,OAAO;AACT,IAAI,IAAI,EAAE,gBAAgB;AAC1B,IAAI,KAAK,GAAG;AACZ,MAAM,IAAI,CAAC,UAAU,OAAO,KAAM,KAAI,QAAS,IAAG,EAAE,KAAA,IAAS,KAAK,CAAC,CAAC,EAAE;AACtE,QAAQ,cAAc,CAAC,MAAM;AAC7B;AACA,UAAU,OAAO,CAAC,IAAI;AACtB,YAAY,uQAAuQ;AACnR,YAAY,KAAK;AACjB,WAAW;AACX,SAAS,CAAC;AACV,aAAa;AACb,QAAQ,CAAC,KAAM,GAAU,GAAG,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;AAC9D;AACA,KAAK;AACL,GAAG;AACH,CAAC,CAAE;;AAEH;AACA;AACA;AACA;AACA;MACa,gBAAiB,GAAE,iBAAiB,CAAC,iBAAiB;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"sdk.js","sources":["../../../src/client/sdk.ts"],"sourcesContent":["import { getDefaultIntegrations as getBrowserDefaultIntegrations, init as initBrowser } from '@sentry/browser';\nimport { applySdkMetadata } from '@sentry/core';\nimport type { Client } from '@sentry/types';\nimport type { SentryNuxtClientOptions } from '../common/types';\n\n/**\n * Initializes the client-side of the Nuxt SDK\n *\n * @param options Configuration options for the SDK.\n */\nexport function init(options: SentryNuxtClientOptions): Client | undefined {\n const sentryOptions = {\n /* BrowserTracing is added later with the Nuxt client plugin */\n defaultIntegrations: [...getBrowserDefaultIntegrations(options)],\n ...options,\n };\n\n applySdkMetadata(sentryOptions, 'nuxt', ['nuxt', 'vue']);\n\n return initBrowser(sentryOptions);\n}\n"],"names":["getBrowserDefaultIntegrations","initBrowser"],"mappings":";;;AAKA;AACA;AACA;AACA;AACA;AACO,SAAS,IAAI,CAAC,OAAO,EAA+C;AAC3E,EAAE,MAAM,gBAAgB;AACxB;AACA,IAAI,mBAAmB,EAAE,CAAC,GAAGA,sBAA6B,CAAC,OAAO,CAAC,CAAC;AACpE,IAAI,GAAG,OAAO;AACd,GAAG,CAAA;AACH;AACA,EAAE,gBAAgB,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAA;AAC1D;AACA,EAAE,OAAOC,MAAW,CAAC,aAAa,CAAC,CAAA;AACnC;;;;"}
1
+ {"version":3,"file":"sdk.js","sources":["../../../src/client/sdk.ts"],"sourcesContent":["import { getDefaultIntegrations as getBrowserDefaultIntegrations, init as initBrowser } from '@sentry/browser';\nimport { applySdkMetadata } from '@sentry/core';\nimport type { Client } from '@sentry/types';\nimport type { SentryNuxtClientOptions } from '../common/types';\n\n/**\n * Initializes the client-side of the Nuxt SDK\n *\n * @param options Configuration options for the SDK.\n */\nexport function init(options: SentryNuxtClientOptions): Client | undefined {\n const sentryOptions = {\n /* BrowserTracing is added later with the Nuxt client plugin */\n defaultIntegrations: [...getBrowserDefaultIntegrations(options)],\n ...options,\n };\n\n applySdkMetadata(sentryOptions, 'nuxt', ['nuxt', 'vue']);\n\n return initBrowser(sentryOptions);\n}\n"],"names":["getBrowserDefaultIntegrations","initBrowser"],"mappings":";;;AAKA;AACA;AACA;AACA;AACA;AACO,SAAS,IAAI,CAAC,OAAO,EAA+C;AAC3E,EAAE,MAAM,gBAAgB;AACxB;AACA,IAAI,mBAAmB,EAAE,CAAC,GAAGA,sBAA6B,CAAC,OAAO,CAAC,CAAC;AACpE,IAAI,GAAG,OAAO;AACd,GAAG;;AAEH,EAAE,gBAAgB,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;;AAE1D,EAAE,OAAOC,MAAW,CAAC,aAAa,CAAC;AACnC;;;;"}
@@ -1,3 +1,4 @@
1
1
  export * from '@sentry/vue';
2
2
  export { init } from './client/sdk.js';
3
+ export { piniaIntegration } from './client/piniaIntegration.js';
3
4
  //# sourceMappingURL=index.client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.client.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
1
+ {"version":3,"file":"index.client.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
@@ -18,6 +18,7 @@ const module = defineNuxtModule({
18
18
  const moduleOptions = {
19
19
  ...moduleOptionsParam,
20
20
  dynamicImportForServerEntry: moduleOptionsParam.dynamicImportForServerEntry !== false, // default: true
21
+ entrypointWrappedFunctions: moduleOptionsParam.entrypointWrappedFunctions || ['default', 'handler', 'server'],
21
22
  };
22
23
 
23
24
  const moduleDirResolver = createResolver(import.meta.url);
@@ -98,7 +99,7 @@ const module = defineNuxtModule({
98
99
  });
99
100
  }
100
101
  } else {
101
- addDynamicImportEntryFileWrapper(nitro, serverConfigFile);
102
+ addDynamicImportEntryFileWrapper(nitro, serverConfigFile, moduleOptions);
102
103
 
103
104
  if (moduleOptions.debug) {
104
105
  consoleSandbox(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"module.js","sources":["../../src/module.ts"],"sourcesContent":["import * as path from 'path';\nimport { addPlugin, addPluginTemplate, addServerPlugin, createResolver, defineNuxtModule } from '@nuxt/kit';\nimport { consoleSandbox } from '@sentry/utils';\nimport type { SentryNuxtModuleOptions } from './common/types';\nimport { addDynamicImportEntryFileWrapper, addServerConfigToBuild } from './vite/addServerConfig';\nimport { setupSourceMaps } from './vite/sourceMaps';\nimport { findDefaultSdkInitFile } from './vite/utils';\n\nexport type ModuleOptions = SentryNuxtModuleOptions;\n\nexport default defineNuxtModule<ModuleOptions>({\n meta: {\n name: '@sentry/nuxt/module',\n configKey: 'sentry',\n compatibility: {\n nuxt: '^3.0.0',\n },\n },\n defaults: {},\n setup(moduleOptionsParam, nuxt) {\n const moduleOptions = {\n ...moduleOptionsParam,\n dynamicImportForServerEntry: moduleOptionsParam.dynamicImportForServerEntry !== false, // default: true\n };\n\n const moduleDirResolver = createResolver(import.meta.url);\n const buildDirResolver = createResolver(nuxt.options.buildDir);\n\n const clientConfigFile = findDefaultSdkInitFile('client');\n\n if (clientConfigFile) {\n // Inject the client-side Sentry config file with a side effect import\n addPluginTemplate({\n mode: 'client',\n filename: 'sentry-client-config.mjs',\n\n // Dynamic import of config file to wrap it within a Nuxt context (here: defineNuxtPlugin)\n // Makes it possible to call useRuntimeConfig() in the user-defined sentry config file\n getContents: () => `\n import { defineNuxtPlugin } from \"#imports\";\n\n export default defineNuxtPlugin({\n name: 'sentry-client-config',\n async setup() {\n await import(\"${buildDirResolver.resolve(`/${clientConfigFile}`)}\")\n }\n });`,\n });\n\n addPlugin({ src: moduleDirResolver.resolve('./runtime/plugins/sentry.client'), mode: 'client' });\n }\n\n const serverConfigFile = findDefaultSdkInitFile('server');\n\n if (serverConfigFile) {\n if (moduleOptions.dynamicImportForServerEntry === false) {\n // Inject the server-side Sentry config file with a side effect import\n addPluginTemplate({\n mode: 'server',\n filename: 'sentry-server-config.mjs',\n getContents: () =>\n `import \"${buildDirResolver.resolve(`/${serverConfigFile}`)}\"\\n` +\n 'import { defineNuxtPlugin } from \"#imports\"\\n' +\n 'export default defineNuxtPlugin(() => {})',\n });\n }\n\n addServerPlugin(moduleDirResolver.resolve('./runtime/plugins/sentry.server'));\n }\n\n if (clientConfigFile || serverConfigFile) {\n setupSourceMaps(moduleOptions, nuxt);\n }\n\n nuxt.hooks.hook('nitro:init', nitro => {\n if (serverConfigFile && serverConfigFile.includes('.server.config')) {\n if (nitro.options.dev) {\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.log(\n '[Sentry] Your application is running in development mode. Note: @sentry/nuxt is in beta and may not work as expected on the server-side (Nitro). Errors are reported, but tracing does not work.',\n );\n });\n }\n\n if (moduleOptions.dynamicImportForServerEntry === false) {\n addServerConfigToBuild(moduleOptions, nuxt, nitro, serverConfigFile);\n\n if (moduleOptions.debug) {\n const serverDirResolver = createResolver(nitro.options.output.serverDir);\n const serverConfigPath = serverDirResolver.resolve('sentry.server.config.mjs');\n\n // For the default nitro node-preset build output this relative path would be: ./.output/server/sentry.server.config.mjs\n const serverConfigRelativePath = `.${path.sep}${path.relative(nitro.options.rootDir, serverConfigPath)}`;\n\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.log(\n `[Sentry] Using your \\`${serverConfigFile}\\` file for the server-side Sentry configuration. Make sure to add the Node option \\`import\\` to the Node command where you deploy and/or run your application. This preloads the Sentry configuration at server startup. You can do this via a command-line flag (\\`node --import ${serverConfigRelativePath} [...]\\`) or via an environment variable (\\`NODE_OPTIONS='--import ${serverConfigRelativePath}' node [...]\\`).`,\n );\n });\n }\n } else {\n addDynamicImportEntryFileWrapper(nitro, serverConfigFile);\n\n if (moduleOptions.debug) {\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.log(\n '[Sentry] Wrapping the server entry file with a dynamic `import()`, so Sentry can be preloaded before the server initializes.',\n );\n });\n }\n }\n }\n });\n },\n});\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"module.js","sources":["../../src/module.ts"],"sourcesContent":["import * as path from 'path';\nimport { addPlugin, addPluginTemplate, addServerPlugin, createResolver, defineNuxtModule } from '@nuxt/kit';\nimport { consoleSandbox } from '@sentry/utils';\nimport type { SentryNuxtModuleOptions } from './common/types';\nimport { addDynamicImportEntryFileWrapper, addServerConfigToBuild } from './vite/addServerConfig';\nimport { setupSourceMaps } from './vite/sourceMaps';\nimport { findDefaultSdkInitFile } from './vite/utils';\n\nexport type ModuleOptions = SentryNuxtModuleOptions;\n\nexport default defineNuxtModule<ModuleOptions>({\n meta: {\n name: '@sentry/nuxt/module',\n configKey: 'sentry',\n compatibility: {\n nuxt: '^3.0.0',\n },\n },\n defaults: {},\n setup(moduleOptionsParam, nuxt) {\n const moduleOptions = {\n ...moduleOptionsParam,\n dynamicImportForServerEntry: moduleOptionsParam.dynamicImportForServerEntry !== false, // default: true\n entrypointWrappedFunctions: moduleOptionsParam.entrypointWrappedFunctions || ['default', 'handler', 'server'],\n };\n\n const moduleDirResolver = createResolver(import.meta.url);\n const buildDirResolver = createResolver(nuxt.options.buildDir);\n\n const clientConfigFile = findDefaultSdkInitFile('client');\n\n if (clientConfigFile) {\n // Inject the client-side Sentry config file with a side effect import\n addPluginTemplate({\n mode: 'client',\n filename: 'sentry-client-config.mjs',\n\n // Dynamic import of config file to wrap it within a Nuxt context (here: defineNuxtPlugin)\n // Makes it possible to call useRuntimeConfig() in the user-defined sentry config file\n getContents: () => `\n import { defineNuxtPlugin } from \"#imports\";\n\n export default defineNuxtPlugin({\n name: 'sentry-client-config',\n async setup() {\n await import(\"${buildDirResolver.resolve(`/${clientConfigFile}`)}\")\n }\n });`,\n });\n\n addPlugin({ src: moduleDirResolver.resolve('./runtime/plugins/sentry.client'), mode: 'client' });\n }\n\n const serverConfigFile = findDefaultSdkInitFile('server');\n\n if (serverConfigFile) {\n if (moduleOptions.dynamicImportForServerEntry === false) {\n // Inject the server-side Sentry config file with a side effect import\n addPluginTemplate({\n mode: 'server',\n filename: 'sentry-server-config.mjs',\n getContents: () =>\n `import \"${buildDirResolver.resolve(`/${serverConfigFile}`)}\"\\n` +\n 'import { defineNuxtPlugin } from \"#imports\"\\n' +\n 'export default defineNuxtPlugin(() => {})',\n });\n }\n\n addServerPlugin(moduleDirResolver.resolve('./runtime/plugins/sentry.server'));\n }\n\n if (clientConfigFile || serverConfigFile) {\n setupSourceMaps(moduleOptions, nuxt);\n }\n\n nuxt.hooks.hook('nitro:init', nitro => {\n if (serverConfigFile && serverConfigFile.includes('.server.config')) {\n if (nitro.options.dev) {\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.log(\n '[Sentry] Your application is running in development mode. Note: @sentry/nuxt is in beta and may not work as expected on the server-side (Nitro). Errors are reported, but tracing does not work.',\n );\n });\n }\n\n if (moduleOptions.dynamicImportForServerEntry === false) {\n addServerConfigToBuild(moduleOptions, nuxt, nitro, serverConfigFile);\n\n if (moduleOptions.debug) {\n const serverDirResolver = createResolver(nitro.options.output.serverDir);\n const serverConfigPath = serverDirResolver.resolve('sentry.server.config.mjs');\n\n // For the default nitro node-preset build output this relative path would be: ./.output/server/sentry.server.config.mjs\n const serverConfigRelativePath = `.${path.sep}${path.relative(nitro.options.rootDir, serverConfigPath)}`;\n\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.log(\n `[Sentry] Using your \\`${serverConfigFile}\\` file for the server-side Sentry configuration. Make sure to add the Node option \\`import\\` to the Node command where you deploy and/or run your application. This preloads the Sentry configuration at server startup. You can do this via a command-line flag (\\`node --import ${serverConfigRelativePath} [...]\\`) or via an environment variable (\\`NODE_OPTIONS='--import ${serverConfigRelativePath}' node [...]\\`).`,\n );\n });\n }\n } else {\n addDynamicImportEntryFileWrapper(nitro, serverConfigFile, moduleOptions);\n\n if (moduleOptions.debug) {\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.log(\n '[Sentry] Wrapping the server entry file with a dynamic `import()`, so Sentry can be preloaded before the server initializes.',\n );\n });\n }\n }\n }\n });\n },\n});\n"],"names":[],"mappings":";;;;;;;AAUA,eAAe,gBAAgB,CAAgB;AAC/C,EAAE,IAAI,EAAE;AACR,IAAI,IAAI,EAAE,qBAAqB;AAC/B,IAAI,SAAS,EAAE,QAAQ;AACvB,IAAI,aAAa,EAAE;AACnB,MAAM,IAAI,EAAE,QAAQ;AACpB,KAAK;AACL,GAAG;AACH,EAAE,QAAQ,EAAE,EAAE;AACd,EAAE,KAAK,CAAC,kBAAkB,EAAE,IAAI,EAAE;AAClC,IAAI,MAAM,gBAAgB;AAC1B,MAAM,GAAG,kBAAkB;AAC3B,MAAM,2BAA2B,EAAE,kBAAkB,CAAC,2BAAA,KAAgC,KAAK;AAC3F,MAAM,0BAA0B,EAAE,kBAAkB,CAAC,0BAA2B,IAAG,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC;AACnH,KAAK;;AAEL,IAAI,MAAM,iBAAkB,GAAE,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;AAC7D,IAAI,MAAM,gBAAiB,GAAE,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;;AAElE,IAAI,MAAM,gBAAiB,GAAE,sBAAsB,CAAC,QAAQ,CAAC;;AAE7D,IAAI,IAAI,gBAAgB,EAAE;AAC1B;AACA,MAAM,iBAAiB,CAAC;AACxB,QAAQ,IAAI,EAAE,QAAQ;AACtB,QAAQ,QAAQ,EAAE,0BAA0B;;AAE5C;AACA;AACA,QAAQ,WAAW,EAAE,MAAM;AAC3B;;AAEA;AACA;AACA;AACA,4BAA4B,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAA,CAAA,CAAA;AACA;AACA,aAAA,CAAA;AACA,OAAA,CAAA;;AAEA,MAAA,SAAA,CAAA,EAAA,GAAA,EAAA,iBAAA,CAAA,OAAA,CAAA,iCAAA,CAAA,EAAA,IAAA,EAAA,QAAA,EAAA,CAAA;AACA;;AAEA,IAAA,MAAA,gBAAA,GAAA,sBAAA,CAAA,QAAA,CAAA;;AAEA,IAAA,IAAA,gBAAA,EAAA;AACA,MAAA,IAAA,aAAA,CAAA,2BAAA,KAAA,KAAA,EAAA;AACA;AACA,QAAA,iBAAA,CAAA;AACA,UAAA,IAAA,EAAA,QAAA;AACA,UAAA,QAAA,EAAA,0BAAA;AACA,UAAA,WAAA,EAAA;AACA,YAAA,CAAA,QAAA,EAAA,gBAAA,CAAA,OAAA,CAAA,CAAA,CAAA,EAAA,gBAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA;AACA,YAAA,+CAAA;AACA,YAAA,2CAAA;AACA,SAAA,CAAA;AACA;;AAEA,MAAA,eAAA,CAAA,iBAAA,CAAA,OAAA,CAAA,iCAAA,CAAA,CAAA;AACA;;AAEA,IAAA,IAAA,gBAAA,IAAA,gBAAA,EAAA;AACA,MAAA,eAAA,CAAA,aAAA,EAAA,IAAA,CAAA;AACA;;AAEA,IAAA,IAAA,CAAA,KAAA,CAAA,IAAA,CAAA,YAAA,EAAA,KAAA,IAAA;AACA,MAAA,IAAA,gBAAA,IAAA,gBAAA,CAAA,QAAA,CAAA,gBAAA,CAAA,EAAA;AACA,QAAA,IAAA,KAAA,CAAA,OAAA,CAAA,GAAA,EAAA;AACA,UAAA,cAAA,CAAA,MAAA;AACA;AACA,YAAA,OAAA,CAAA,GAAA;AACA,cAAA,kMAAA;AACA,aAAA;AACA,WAAA,CAAA;AACA;;AAEA,QAAA,IAAA,aAAA,CAAA,2BAAA,KAAA,KAAA,EAAA;AACA,UAAA,sBAAA,CAAA,aAAA,EAAA,IAAA,EAAA,KAAA,EAAA,gBAAA,CAAA;;AAEA,UAAA,IAAA,aAAA,CAAA,KAAA,EAAA;AACA,YAAA,MAAA,iBAAA,GAAA,cAAA,CAAA,KAAA,CAAA,OAAA,CAAA,MAAA,CAAA,SAAA,CAAA;AACA,YAAA,MAAA,gBAAA,GAAA,iBAAA,CAAA,OAAA,CAAA,0BAAA,CAAA;;AAEA;AACA,YAAA,MAAA,wBAAA,GAAA,CAAA,CAAA,EAAA,IAAA,CAAA,GAAA,CAAA,EAAA,IAAA,CAAA,QAAA,CAAA,KAAA,CAAA,OAAA,CAAA,OAAA,EAAA,gBAAA,CAAA,CAAA,CAAA;;AAEA,YAAA,cAAA,CAAA,MAAA;AACA;AACA,cAAA,OAAA,CAAA,GAAA;AACA,gBAAA,CAAA,sBAAA,EAAA,gBAAA,CAAA,mRAAA,EAAA,wBAAA,CAAA,mEAAA,EAAA,wBAAA,CAAA,gBAAA,CAAA;AACA,eAAA;AACA,aAAA,CAAA;AACA;AACA,SAAA,MAAA;AACA,UAAA,gCAAA,CAAA,KAAA,EAAA,gBAAA,EAAA,aAAA,CAAA;;AAEA,UAAA,IAAA,aAAA,CAAA,KAAA,EAAA;AACA,YAAA,cAAA,CAAA,MAAA;AACA;AACA,cAAA,OAAA,CAAA,GAAA;AACA,gBAAA,8HAAA;AACA,eAAA;AACA,aAAA,CAAA;AACA;AACA;AACA;AACA,KAAA,CAAA;AACA,GAAA;AACA,CAAA,CAAA;;;;"}
@@ -1 +1 @@
1
- {"type":"module","version":"8.36.0-beta.0"}
1
+ {"type":"module","version":"8.37.0"}
@@ -1,6 +1,5 @@
1
1
  import { getClient } from '@sentry/core';
2
- import { consoleSandbox } from '@sentry/utils';
3
- import { browserTracingIntegration, createSentryPiniaPlugin, vueIntegration } from '@sentry/vue';
2
+ import { browserTracingIntegration, vueIntegration } from '@sentry/vue';
4
3
  import { defineNuxtPlugin } from 'nuxt/app';
5
4
  import { reportNuxtError } from '../utils.js';
6
5
 
@@ -12,12 +11,11 @@ const sentry_client = defineNuxtPlugin({
12
11
  name: 'sentry-client-integrations',
13
12
  dependsOn: ['sentry-client-config'],
14
13
  async setup(nuxtApp) {
15
- const sentryClient = getClient();
16
- const clientOptions = sentryClient && sentryClient.getOptions();
17
-
18
14
  // This evaluates to true unless __SENTRY_TRACING__ is text-replaced with "false", in which case everything inside
19
15
  // will get tree-shaken away
20
16
  if (typeof __SENTRY_TRACING__ === 'undefined' || __SENTRY_TRACING__) {
17
+ const sentryClient = getClient();
18
+
21
19
  if (sentryClient && '$router' in nuxtApp) {
22
20
  sentryClient.addIntegration(
23
21
  browserTracingIntegration({ router: nuxtApp.$router , routeLabel: 'path' }),
@@ -25,23 +23,6 @@ const sentry_client = defineNuxtPlugin({
25
23
  }
26
24
  }
27
25
 
28
- if (clientOptions && 'trackPinia' in clientOptions && clientOptions.trackPinia) {
29
- if ('$pinia' in nuxtApp) {
30
- (nuxtApp.$pinia ).use(
31
- // `trackPinia` is an object with custom options or `true` (pass `undefined` to use default options)
32
- createSentryPiniaPlugin(clientOptions.trackPinia === true ? undefined : clientOptions.trackPinia),
33
- );
34
- } else {
35
- clientOptions.debug &&
36
- consoleSandbox(() => {
37
- // eslint-disable-next-line no-console
38
- console.warn(
39
- '[Sentry] You set `trackPinia`, but the Pinia module was not found. Make sure to add `"@pinia/nuxt"` to your modules array.',
40
- );
41
- });
42
- }
43
- }
44
-
45
26
  nuxtApp.hook('app:created', vueApp => {
46
27
  const sentryClient = getClient();
47
28
 
@@ -1 +1 @@
1
- {"version":3,"file":"sentry.client.js","sources":["../../../../src/runtime/plugins/sentry.client.ts"],"sourcesContent":["import { getClient } from '@sentry/core';\nimport { consoleSandbox } from '@sentry/utils';\nimport { browserTracingIntegration, createSentryPiniaPlugin, vueIntegration } from '@sentry/vue';\nimport { defineNuxtPlugin } from 'nuxt/app';\nimport { reportNuxtError } from '../utils';\n\n// --- Types are copied from @sentry/vue (so it does not need to be exported) ---\n// The following type is an intersection of the Route type from VueRouter v2, v3, and v4.\n// This is not great, but kinda necessary to make it work with all versions at the same time.\ntype Route = {\n /** Unparameterized URL */\n path: string;\n /**\n * Query params (keys map to null when there is no value associated, e.g. \"?foo\" and to an array when there are\n * multiple query params that have the same key, e.g. \"?foo&foo=bar\")\n */\n query: Record<string, string | null | (string | null)[]>;\n /** Route name (VueRouter provides a way to give routes individual names) */\n name?: string | symbol | null | undefined;\n /** Evaluated parameters */\n params: Record<string, string | string[]>;\n /** All the matched route objects as defined in VueRouter constructor */\n matched: { path: string }[];\n};\n\ninterface VueRouter {\n onError: (fn: (err: Error) => void) => void;\n beforeEach: (fn: (to: Route, from: Route, next?: () => void) => void) => void;\n}\n\n// Tree-shakable guard to remove all code related to tracing\ndeclare const __SENTRY_TRACING__: boolean;\n\nexport default defineNuxtPlugin({\n name: 'sentry-client-integrations',\n dependsOn: ['sentry-client-config'],\n async setup(nuxtApp) {\n const sentryClient = getClient();\n const clientOptions = sentryClient && sentryClient.getOptions();\n\n // This evaluates to true unless __SENTRY_TRACING__ is text-replaced with \"false\", in which case everything inside\n // will get tree-shaken away\n if (typeof __SENTRY_TRACING__ === 'undefined' || __SENTRY_TRACING__) {\n if (sentryClient && '$router' in nuxtApp) {\n sentryClient.addIntegration(\n browserTracingIntegration({ router: nuxtApp.$router as VueRouter, routeLabel: 'path' }),\n );\n }\n }\n\n if (clientOptions && 'trackPinia' in clientOptions && clientOptions.trackPinia) {\n if ('$pinia' in nuxtApp) {\n (nuxtApp.$pinia as { use: (plugin: unknown) => void }).use(\n // `trackPinia` is an object with custom options or `true` (pass `undefined` to use default options)\n createSentryPiniaPlugin(clientOptions.trackPinia === true ? undefined : clientOptions.trackPinia),\n );\n } else {\n clientOptions.debug &&\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.warn(\n '[Sentry] You set `trackPinia`, but the Pinia module was not found. Make sure to add `\"@pinia/nuxt\"` to your modules array.',\n );\n });\n }\n }\n\n nuxtApp.hook('app:created', vueApp => {\n const sentryClient = getClient();\n\n if (sentryClient) {\n // Adding the Vue integration without the Vue error handler\n // Nuxt is registering their own error handler, which is unset after hydration: https://github.com/nuxt/nuxt/blob/d3fdbcaac6cf66d21e25d259390d7824696f1a87/packages/nuxt/src/app/entry.ts#L64-L73\n // We don't want to wrap the existing error handler, as it leads to a 500 error: https://github.com/getsentry/sentry-javascript/issues/12515\n sentryClient.addIntegration(vueIntegration({ app: vueApp, attachErrorHandler: false }));\n }\n });\n\n nuxtApp.hook('app:error', error => {\n reportNuxtError({ error });\n });\n\n nuxtApp.hook('vue:error', (error, instance, info) => {\n reportNuxtError({ error, instance, info });\n });\n },\n});\n"],"names":[],"mappings":";;;;;;AAMA;AACA;AACA;;AAyBA,sBAAe,gBAAgB,CAAC;AAChC,EAAE,IAAI,EAAE,4BAA4B;AACpC,EAAE,SAAS,EAAE,CAAC,sBAAsB,CAAC;AACrC,EAAE,MAAM,KAAK,CAAC,OAAO,EAAE;AACvB,IAAI,MAAM,YAAA,GAAe,SAAS,EAAE,CAAA;AACpC,IAAI,MAAM,gBAAgB,YAAA,IAAgB,YAAY,CAAC,UAAU,EAAE,CAAA;AACnE;AACA;AACA;AACA,IAAI,IAAI,OAAO,kBAAA,KAAuB,WAAY,IAAG,kBAAkB,EAAE;AACzE,MAAM,IAAI,YAAA,IAAgB,SAAU,IAAG,OAAO,EAAE;AAChD,QAAQ,YAAY,CAAC,cAAc;AACnC,UAAU,yBAAyB,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,OAAA,GAAsB,UAAU,EAAE,MAAA,EAAQ,CAAC;AACjG,SAAS,CAAA;AACT,OAAM;AACN,KAAI;AACJ;AACA,IAAI,IAAI,aAAA,IAAiB,YAAA,IAAgB,aAAA,IAAiB,aAAa,CAAC,UAAU,EAAE;AACpF,MAAM,IAAI,QAAS,IAAG,OAAO,EAAE;AAC/B,QAAQ,CAAC,OAAO,CAAC,MAAO,GAAuC,GAAG;AAClE;AACA,UAAU,uBAAuB,CAAC,aAAa,CAAC,UAAW,KAAI,IAAK,GAAE,SAAU,GAAE,aAAa,CAAC,UAAU,CAAC;AAC3G,SAAS,CAAA;AACT,aAAa;AACb,QAAQ,aAAa,CAAC,KAAM;AAC5B,UAAU,cAAc,CAAC,MAAM;AAC/B;AACA,YAAY,OAAO,CAAC,IAAI;AACxB,cAAc,4HAA4H;AAC1I,aAAa,CAAA;AACb,WAAW,CAAC,CAAA;AACZ,OAAM;AACN,KAAI;AACJ;AACA,IAAI,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU;AAC1C,MAAM,MAAM,YAAA,GAAe,SAAS,EAAE,CAAA;AACtC;AACA,MAAM,IAAI,YAAY,EAAE;AACxB;AACA;AACA;AACA,QAAQ,YAAY,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,kBAAkB,EAAE,KAAM,EAAC,CAAC,CAAC,CAAA;AAC/F,OAAM;AACN,KAAK,CAAC,CAAA;AACN;AACA,IAAI,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS;AACvC,MAAM,eAAe,CAAC,EAAE,KAAA,EAAO,CAAC,CAAA;AAChC,KAAK,CAAC,CAAA;AACN;AACA,IAAI,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,KAAK;AACzD,MAAM,eAAe,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAK,EAAC,CAAC,CAAA;AAChD,KAAK,CAAC,CAAA;AACN,GAAG;AACH,CAAC,CAAC;;;;"}
1
+ {"version":3,"file":"sentry.client.js","sources":["../../../../src/runtime/plugins/sentry.client.ts"],"sourcesContent":["import { getClient } from '@sentry/core';\nimport { browserTracingIntegration, vueIntegration } from '@sentry/vue';\nimport { defineNuxtPlugin } from 'nuxt/app';\nimport { reportNuxtError } from '../utils';\n\n// --- Types are copied from @sentry/vue (so it does not need to be exported) ---\n// The following type is an intersection of the Route type from VueRouter v2, v3, and v4.\n// This is not great, but kinda necessary to make it work with all versions at the same time.\ntype Route = {\n /** Unparameterized URL */\n path: string;\n /**\n * Query params (keys map to null when there is no value associated, e.g. \"?foo\" and to an array when there are\n * multiple query params that have the same key, e.g. \"?foo&foo=bar\")\n */\n query: Record<string, string | null | (string | null)[]>;\n /** Route name (VueRouter provides a way to give routes individual names) */\n name?: string | symbol | null | undefined;\n /** Evaluated parameters */\n params: Record<string, string | string[]>;\n /** All the matched route objects as defined in VueRouter constructor */\n matched: { path: string }[];\n};\n\ninterface VueRouter {\n onError: (fn: (err: Error) => void) => void;\n beforeEach: (fn: (to: Route, from: Route, next?: () => void) => void) => void;\n}\n\n// Tree-shakable guard to remove all code related to tracing\ndeclare const __SENTRY_TRACING__: boolean;\n\nexport default defineNuxtPlugin({\n name: 'sentry-client-integrations',\n dependsOn: ['sentry-client-config'],\n async setup(nuxtApp) {\n // This evaluates to true unless __SENTRY_TRACING__ is text-replaced with \"false\", in which case everything inside\n // will get tree-shaken away\n if (typeof __SENTRY_TRACING__ === 'undefined' || __SENTRY_TRACING__) {\n const sentryClient = getClient();\n\n if (sentryClient && '$router' in nuxtApp) {\n sentryClient.addIntegration(\n browserTracingIntegration({ router: nuxtApp.$router as VueRouter, routeLabel: 'path' }),\n );\n }\n }\n\n nuxtApp.hook('app:created', vueApp => {\n const sentryClient = getClient();\n\n if (sentryClient) {\n // Adding the Vue integration without the Vue error handler\n // Nuxt is registering their own error handler, which is unset after hydration: https://github.com/nuxt/nuxt/blob/d3fdbcaac6cf66d21e25d259390d7824696f1a87/packages/nuxt/src/app/entry.ts#L64-L73\n // We don't want to wrap the existing error handler, as it leads to a 500 error: https://github.com/getsentry/sentry-javascript/issues/12515\n sentryClient.addIntegration(vueIntegration({ app: vueApp, attachErrorHandler: false }));\n }\n });\n\n nuxtApp.hook('app:error', error => {\n reportNuxtError({ error });\n });\n\n nuxtApp.hook('vue:error', (error, instance, info) => {\n reportNuxtError({ error, instance, info });\n });\n },\n});\n"],"names":[],"mappings":";;;;;AAKA;AACA;AACA;;AAyBA,sBAAe,gBAAgB,CAAC;AAChC,EAAE,IAAI,EAAE,4BAA4B;AACpC,EAAE,SAAS,EAAE,CAAC,sBAAsB,CAAC;AACrC,EAAE,MAAM,KAAK,CAAC,OAAO,EAAE;AACvB;AACA;AACA,IAAI,IAAI,OAAO,kBAAA,KAAuB,WAAY,IAAG,kBAAkB,EAAE;AACzE,MAAM,MAAM,YAAA,GAAe,SAAS,EAAE;;AAEtC,MAAM,IAAI,YAAA,IAAgB,SAAU,IAAG,OAAO,EAAE;AAChD,QAAQ,YAAY,CAAC,cAAc;AACnC,UAAU,yBAAyB,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,OAAA,GAAsB,UAAU,EAAE,MAAA,EAAQ,CAAC;AACjG,SAAS;AACT;AACA;;AAEA,IAAI,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU;AAC1C,MAAM,MAAM,YAAA,GAAe,SAAS,EAAE;;AAEtC,MAAM,IAAI,YAAY,EAAE;AACxB;AACA;AACA;AACA,QAAQ,YAAY,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,kBAAkB,EAAE,KAAM,EAAC,CAAC,CAAC;AAC/F;AACA,KAAK,CAAC;;AAEN,IAAI,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS;AACvC,MAAM,eAAe,CAAC,EAAE,KAAA,EAAO,CAAC;AAChC,KAAK,CAAC;;AAEN,IAAI,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,KAAK;AACzD,MAAM,eAAe,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAK,EAAC,CAAC;AAChD,KAAK,CAAC;AACN,GAAG;AACH,CAAC,CAAC;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"sentry.server.js","sources":["../../../../src/runtime/plugins/sentry.server.ts"],"sourcesContent":["import * as Sentry from '@sentry/node';\nimport { H3Error } from 'h3';\nimport { defineNitroPlugin } from 'nitropack/runtime';\nimport type { NuxtRenderHTMLContext } from 'nuxt/app';\nimport { addSentryTracingMetaTags, extractErrorContext } from '../utils';\n\nexport default defineNitroPlugin(nitroApp => {\n nitroApp.hooks.hook('error', (error, errorContext) => {\n // Do not handle 404 and 422\n if (error instanceof H3Error) {\n // Do not report if status code is 3xx or 4xx\n if (error.statusCode >= 300 && error.statusCode < 500) {\n return;\n }\n }\n\n const { method, path } = {\n method: errorContext.event && errorContext.event._method ? errorContext.event._method : '',\n path: errorContext.event && errorContext.event._path ? errorContext.event._path : null,\n };\n\n if (path) {\n Sentry.getCurrentScope().setTransactionName(`${method} ${path}`);\n }\n\n const structuredContext = extractErrorContext(errorContext);\n\n Sentry.captureException(error, {\n captureContext: { contexts: { nuxt: structuredContext } },\n mechanism: { handled: false },\n });\n });\n\n // @ts-expect-error - 'render:html' is a valid hook name in the Nuxt context\n nitroApp.hooks.hook('render:html', (html: NuxtRenderHTMLContext) => {\n addSentryTracingMetaTags(html.head);\n });\n});\n"],"names":[],"mappings":";;;;;AAMA,sBAAe,iBAAiB,CAAC,QAAA,IAAY;AAC7C,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK;AACxD;AACA,IAAI,IAAI,KAAM,YAAW,OAAO,EAAE;AAClC;AACA,MAAM,IAAI,KAAK,CAAC,UAAW,IAAG,GAAI,IAAG,KAAK,CAAC,UAAW,GAAE,GAAG,EAAE;AAC7D,QAAQ,OAAM;AACd,OAAM;AACN,KAAI;AACJ;AACA,IAAI,MAAM,EAAE,MAAM,EAAE,IAAA,KAAS;AAC7B,MAAM,MAAM,EAAE,YAAY,CAAC,KAAM,IAAG,YAAY,CAAC,KAAK,CAAC,OAAA,GAAU,YAAY,CAAC,KAAK,CAAC,OAAA,GAAU,EAAE;AAChG,MAAM,IAAI,EAAE,YAAY,CAAC,KAAM,IAAG,YAAY,CAAC,KAAK,CAAC,KAAA,GAAQ,YAAY,CAAC,KAAK,CAAC,KAAA,GAAQ,IAAI;AAC5F,KAAK,CAAA;AACL;AACA,IAAI,IAAI,IAAI,EAAE;AACd,MAAM,MAAM,CAAC,eAAe,EAAE,CAAC,kBAAkB,CAAC,CAAC,EAAA,MAAA,CAAA,CAAA,EAAA,IAAA,CAAA,CAAA,CAAA,CAAA;AACA,KAAA;AACA;AACA,IAAA,MAAA,iBAAA,GAAA,mBAAA,CAAA,YAAA,CAAA,CAAA;AACA;AACA,IAAA,MAAA,CAAA,gBAAA,CAAA,KAAA,EAAA;AACA,MAAA,cAAA,EAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,EAAA;AACA,MAAA,SAAA,EAAA,EAAA,OAAA,EAAA,KAAA,EAAA;AACA,KAAA,CAAA,CAAA;AACA,GAAA,CAAA,CAAA;AACA;AACA;AACA,EAAA,QAAA,CAAA,KAAA,CAAA,IAAA,CAAA,aAAA,EAAA,CAAA,IAAA,KAAA;AACA,IAAA,wBAAA,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA;AACA,GAAA,CAAA,CAAA;AACA,CAAA,CAAA;;;;"}
1
+ {"version":3,"file":"sentry.server.js","sources":["../../../../src/runtime/plugins/sentry.server.ts"],"sourcesContent":["import * as Sentry from '@sentry/node';\nimport { H3Error } from 'h3';\nimport { defineNitroPlugin } from 'nitropack/runtime';\nimport type { NuxtRenderHTMLContext } from 'nuxt/app';\nimport { addSentryTracingMetaTags, extractErrorContext } from '../utils';\n\nexport default defineNitroPlugin(nitroApp => {\n nitroApp.hooks.hook('error', (error, errorContext) => {\n // Do not handle 404 and 422\n if (error instanceof H3Error) {\n // Do not report if status code is 3xx or 4xx\n if (error.statusCode >= 300 && error.statusCode < 500) {\n return;\n }\n }\n\n const { method, path } = {\n method: errorContext.event && errorContext.event._method ? errorContext.event._method : '',\n path: errorContext.event && errorContext.event._path ? errorContext.event._path : null,\n };\n\n if (path) {\n Sentry.getCurrentScope().setTransactionName(`${method} ${path}`);\n }\n\n const structuredContext = extractErrorContext(errorContext);\n\n Sentry.captureException(error, {\n captureContext: { contexts: { nuxt: structuredContext } },\n mechanism: { handled: false },\n });\n });\n\n // @ts-expect-error - 'render:html' is a valid hook name in the Nuxt context\n nitroApp.hooks.hook('render:html', (html: NuxtRenderHTMLContext) => {\n addSentryTracingMetaTags(html.head);\n });\n});\n"],"names":[],"mappings":";;;;;AAMA,sBAAe,iBAAiB,CAAC,QAAA,IAAY;AAC7C,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK;AACxD;AACA,IAAI,IAAI,KAAM,YAAW,OAAO,EAAE;AAClC;AACA,MAAM,IAAI,KAAK,CAAC,UAAW,IAAG,GAAI,IAAG,KAAK,CAAC,UAAW,GAAE,GAAG,EAAE;AAC7D,QAAQ;AACR;AACA;;AAEA,IAAI,MAAM,EAAE,MAAM,EAAE,IAAA,KAAS;AAC7B,MAAM,MAAM,EAAE,YAAY,CAAC,KAAM,IAAG,YAAY,CAAC,KAAK,CAAC,OAAA,GAAU,YAAY,CAAC,KAAK,CAAC,OAAA,GAAU,EAAE;AAChG,MAAM,IAAI,EAAE,YAAY,CAAC,KAAM,IAAG,YAAY,CAAC,KAAK,CAAC,KAAA,GAAQ,YAAY,CAAC,KAAK,CAAC,KAAA,GAAQ,IAAI;AAC5F,KAAK;;AAEL,IAAI,IAAI,IAAI,EAAE;AACd,MAAM,MAAM,CAAC,eAAe,EAAE,CAAC,kBAAkB,CAAC,CAAC,EAAA,MAAA,CAAA,CAAA,EAAA,IAAA,CAAA,CAAA,CAAA;AACA;;AAEA,IAAA,MAAA,iBAAA,GAAA,mBAAA,CAAA,YAAA,CAAA;;AAEA,IAAA,MAAA,CAAA,gBAAA,CAAA,KAAA,EAAA;AACA,MAAA,cAAA,EAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,EAAA;AACA,MAAA,SAAA,EAAA,EAAA,OAAA,EAAA,KAAA,EAAA;AACA,KAAA,CAAA;AACA,GAAA,CAAA;;AAEA;AACA,EAAA,QAAA,CAAA,KAAA,CAAA,IAAA,CAAA,aAAA,EAAA,CAAA,IAAA,KAAA;AACA,IAAA,wBAAA,CAAA,IAAA,CAAA,IAAA,CAAA;AACA,GAAA,CAAA;AACA,CAAA,CAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../../src/runtime/utils.ts"],"sourcesContent":["import { captureException, getClient, getTraceMetaTags } from '@sentry/core';\nimport type { ClientOptions, Context } from '@sentry/types';\nimport { dropUndefinedKeys } from '@sentry/utils';\nimport type { VueOptions } from '@sentry/vue/src/types';\nimport type { CapturedErrorContext } from 'nitropack';\nimport type { NuxtRenderHTMLContext } from 'nuxt/app';\nimport type { ComponentPublicInstance } from 'vue';\n\n/**\n * Extracts the relevant context information from the error context (H3Event in Nitro Error)\n * and created a structured context object.\n */\nexport function extractErrorContext(errorContext: CapturedErrorContext): Context {\n const structuredContext: Context = {\n method: undefined,\n path: undefined,\n tags: undefined,\n };\n\n if (errorContext) {\n if (errorContext.event) {\n structuredContext.method = errorContext.event._method || undefined;\n structuredContext.path = errorContext.event._path || undefined;\n }\n\n if (Array.isArray(errorContext.tags)) {\n structuredContext.tags = errorContext.tags || undefined;\n }\n }\n\n return dropUndefinedKeys(structuredContext);\n}\n\n/**\n * Adds Sentry tracing <meta> tags to the returned html page.\n *\n * Exported only for testing\n */\nexport function addSentryTracingMetaTags(head: NuxtRenderHTMLContext['head']): void {\n const metaTags = getTraceMetaTags();\n\n if (metaTags) {\n head.push(metaTags);\n }\n}\n\n/**\n * Reports an error to Sentry. This function is similar to `attachErrorHandler` in `@sentry/vue`.\n * The Nuxt SDK does not register an error handler, but uses the Nuxt error hooks to report errors.\n *\n * We don't want to use the error handling from `@sentry/vue` as it wraps the existing error handler, which leads to a 500 error: https://github.com/getsentry/sentry-javascript/issues/12515\n */\nexport function reportNuxtError(options: {\n error: unknown;\n instance?: ComponentPublicInstance | null;\n info?: string;\n}): void {\n const { error, instance, info } = options;\n\n const metadata: Record<string, unknown> = {\n info,\n // todo: add component name and trace (like in the vue integration)\n };\n\n if (instance && instance.$props) {\n const sentryClient = getClient();\n const sentryOptions = sentryClient ? (sentryClient.getOptions() as ClientOptions & VueOptions) : null;\n\n // `attachProps` is enabled by default and props should only not be attached if explicitly disabled (see DEFAULT_CONFIG in `vueIntegration`).\n if (sentryOptions && sentryOptions.attachProps && instance.$props !== false) {\n metadata.propsData = instance.$props;\n }\n }\n\n // Capture exception in the next event loop, to make sure that all breadcrumbs are recorded in time.\n setTimeout(() => {\n captureException(error, {\n captureContext: { contexts: { nuxt: metadata } },\n mechanism: { handled: false },\n });\n });\n}\n"],"names":[],"mappings":";;;AAQA;AACA;AACA;AACA;AACO,SAAS,mBAAmB,CAAC,YAAY,EAAiC;AACjF,EAAE,MAAM,iBAAiB,GAAY;AACrC,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,IAAI,EAAE,SAAS;AACnB,IAAI,IAAI,EAAE,SAAS;AACnB,GAAG,CAAA;AACH;AACA,EAAE,IAAI,YAAY,EAAE;AACpB,IAAI,IAAI,YAAY,CAAC,KAAK,EAAE;AAC5B,MAAM,iBAAiB,CAAC,MAAA,GAAS,YAAY,CAAC,KAAK,CAAC,OAAQ,IAAG,SAAS,CAAA;AACxE,MAAM,iBAAiB,CAAC,IAAA,GAAO,YAAY,CAAC,KAAK,CAAC,KAAM,IAAG,SAAS,CAAA;AACpE,KAAI;AACJ;AACA,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;AAC1C,MAAM,iBAAiB,CAAC,IAAK,GAAE,YAAY,CAAC,IAAA,IAAQ,SAAS,CAAA;AAC7D,KAAI;AACJ,GAAE;AACF;AACA,EAAE,OAAO,iBAAiB,CAAC,iBAAiB,CAAC,CAAA;AAC7C,CAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,wBAAwB,CAAC,IAAI,EAAuC;AACpF,EAAE,MAAM,QAAA,GAAW,gBAAgB,EAAE,CAAA;AACrC;AACA,EAAE,IAAI,QAAQ,EAAE;AAChB,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;AACvB,GAAE;AACF,CAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,eAAe,CAAC,OAAO;;AAIvC,EAAS;AACT,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAA,EAAO,GAAE,OAAO,CAAA;AAC3C;AACA,EAAE,MAAM,QAAQ,GAA4B;AAC5C,IAAI,IAAI;AACR;AACA,GAAG,CAAA;AACH;AACA,EAAE,IAAI,QAAA,IAAY,QAAQ,CAAC,MAAM,EAAE;AACnC,IAAI,MAAM,YAAA,GAAe,SAAS,EAAE,CAAA;AACpC,IAAI,MAAM,aAAA,GAAgB,YAAA,IAAgB,YAAY,CAAC,UAAU,EAAG,KAAiC,IAAI,CAAA;AACzG;AACA;AACA,IAAI,IAAI,aAAc,IAAG,aAAa,CAAC,WAAY,IAAG,QAAQ,CAAC,MAAO,KAAI,KAAK,EAAE;AACjF,MAAM,QAAQ,CAAC,SAAA,GAAY,QAAQ,CAAC,MAAM,CAAA;AAC1C,KAAI;AACJ,GAAE;AACF;AACA;AACA,EAAE,UAAU,CAAC,MAAM;AACnB,IAAI,gBAAgB,CAAC,KAAK,EAAE;AAC5B,MAAM,cAAc,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAS,EAAA,EAAG;AACtD,MAAM,SAAS,EAAE,EAAE,OAAO,EAAE,OAAO;AACnC,KAAK,CAAC,CAAA;AACN,GAAG,CAAC,CAAA;AACJ;;;;"}
1
+ {"version":3,"file":"utils.js","sources":["../../../src/runtime/utils.ts"],"sourcesContent":["import { captureException, getClient, getTraceMetaTags } from '@sentry/core';\nimport type { ClientOptions, Context } from '@sentry/types';\nimport { dropUndefinedKeys } from '@sentry/utils';\nimport type { VueOptions } from '@sentry/vue/src/types';\nimport type { CapturedErrorContext } from 'nitropack';\nimport type { NuxtRenderHTMLContext } from 'nuxt/app';\nimport type { ComponentPublicInstance } from 'vue';\n\n/**\n * Extracts the relevant context information from the error context (H3Event in Nitro Error)\n * and created a structured context object.\n */\nexport function extractErrorContext(errorContext: CapturedErrorContext): Context {\n const structuredContext: Context = {\n method: undefined,\n path: undefined,\n tags: undefined,\n };\n\n if (errorContext) {\n if (errorContext.event) {\n structuredContext.method = errorContext.event._method || undefined;\n structuredContext.path = errorContext.event._path || undefined;\n }\n\n if (Array.isArray(errorContext.tags)) {\n structuredContext.tags = errorContext.tags || undefined;\n }\n }\n\n return dropUndefinedKeys(structuredContext);\n}\n\n/**\n * Adds Sentry tracing <meta> tags to the returned html page.\n *\n * Exported only for testing\n */\nexport function addSentryTracingMetaTags(head: NuxtRenderHTMLContext['head']): void {\n const metaTags = getTraceMetaTags();\n\n if (metaTags) {\n head.push(metaTags);\n }\n}\n\n/**\n * Reports an error to Sentry. This function is similar to `attachErrorHandler` in `@sentry/vue`.\n * The Nuxt SDK does not register an error handler, but uses the Nuxt error hooks to report errors.\n *\n * We don't want to use the error handling from `@sentry/vue` as it wraps the existing error handler, which leads to a 500 error: https://github.com/getsentry/sentry-javascript/issues/12515\n */\nexport function reportNuxtError(options: {\n error: unknown;\n instance?: ComponentPublicInstance | null;\n info?: string;\n}): void {\n const { error, instance, info } = options;\n\n const metadata: Record<string, unknown> = {\n info,\n // todo: add component name and trace (like in the vue integration)\n };\n\n if (instance && instance.$props) {\n const sentryClient = getClient();\n const sentryOptions = sentryClient ? (sentryClient.getOptions() as ClientOptions & VueOptions) : null;\n\n // `attachProps` is enabled by default and props should only not be attached if explicitly disabled (see DEFAULT_CONFIG in `vueIntegration`).\n if (sentryOptions && sentryOptions.attachProps && instance.$props !== false) {\n metadata.propsData = instance.$props;\n }\n }\n\n // Capture exception in the next event loop, to make sure that all breadcrumbs are recorded in time.\n setTimeout(() => {\n captureException(error, {\n captureContext: { contexts: { nuxt: metadata } },\n mechanism: { handled: false },\n });\n });\n}\n"],"names":[],"mappings":";;;AAQA;AACA;AACA;AACA;AACO,SAAS,mBAAmB,CAAC,YAAY,EAAiC;AACjF,EAAE,MAAM,iBAAiB,GAAY;AACrC,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,IAAI,EAAE,SAAS;AACnB,IAAI,IAAI,EAAE,SAAS;AACnB,GAAG;;AAEH,EAAE,IAAI,YAAY,EAAE;AACpB,IAAI,IAAI,YAAY,CAAC,KAAK,EAAE;AAC5B,MAAM,iBAAiB,CAAC,MAAA,GAAS,YAAY,CAAC,KAAK,CAAC,OAAQ,IAAG,SAAS;AACxE,MAAM,iBAAiB,CAAC,IAAA,GAAO,YAAY,CAAC,KAAK,CAAC,KAAM,IAAG,SAAS;AACpE;;AAEA,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;AAC1C,MAAM,iBAAiB,CAAC,IAAK,GAAE,YAAY,CAAC,IAAA,IAAQ,SAAS;AAC7D;AACA;;AAEA,EAAE,OAAO,iBAAiB,CAAC,iBAAiB,CAAC;AAC7C;;AAEA;AACA;AACA;AACA;AACA;AACO,SAAS,wBAAwB,CAAC,IAAI,EAAuC;AACpF,EAAE,MAAM,QAAA,GAAW,gBAAgB,EAAE;;AAErC,EAAE,IAAI,QAAQ,EAAE;AAChB,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;AACvB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,eAAe,CAAC;;AAIhC,EAAS;AACT,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAA,EAAO,GAAE,OAAO;;AAE3C,EAAE,MAAM,QAAQ,GAA4B;AAC5C,IAAI,IAAI;AACR;AACA,GAAG;;AAEH,EAAE,IAAI,QAAA,IAAY,QAAQ,CAAC,MAAM,EAAE;AACnC,IAAI,MAAM,YAAA,GAAe,SAAS,EAAE;AACpC,IAAI,MAAM,aAAA,GAAgB,YAAA,IAAgB,YAAY,CAAC,UAAU,EAAG,KAAiC,IAAI;;AAEzG;AACA,IAAI,IAAI,aAAc,IAAG,aAAa,CAAC,WAAY,IAAG,QAAQ,CAAC,MAAO,KAAI,KAAK,EAAE;AACjF,MAAM,QAAQ,CAAC,SAAA,GAAY,QAAQ,CAAC,MAAM;AAC1C;AACA;;AAEA;AACA,EAAE,UAAU,CAAC,MAAM;AACnB,IAAI,gBAAgB,CAAC,KAAK,EAAE;AAC5B,MAAM,cAAc,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAS,EAAA,EAAG;AACtD,MAAM,SAAS,EAAE,EAAE,OAAO,EAAE,OAAO;AACnC,KAAK,CAAC;AACN,GAAG,CAAC;AACJ;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"sdk.js","sources":["../../../src/server/sdk.ts"],"sourcesContent":["import { applySdkMetadata, flush, getGlobalScope } from '@sentry/core';\nimport {\n type NodeOptions,\n getDefaultIntegrations as getDefaultNodeIntegrations,\n httpIntegration,\n init as initNode,\n} from '@sentry/node';\nimport type { Client, EventProcessor, Integration } from '@sentry/types';\nimport { logger, vercelWaitUntil } from '@sentry/utils';\nimport { DEBUG_BUILD } from '../common/debug-build';\nimport type { SentryNuxtServerOptions } from '../common/types';\n\n/**\n * Initializes the server-side of the Nuxt SDK\n *\n * @param options Configuration options for the SDK.\n */\nexport function init(options: SentryNuxtServerOptions): Client | undefined {\n const sentryOptions = {\n ...options,\n registerEsmLoaderHooks: mergeRegisterEsmLoaderHooks(options),\n defaultIntegrations: getNuxtDefaultIntegrations(options),\n };\n\n applySdkMetadata(sentryOptions, 'nuxt', ['nuxt', 'node']);\n\n const client = initNode(sentryOptions);\n\n getGlobalScope().addEventProcessor(\n Object.assign(\n (event => {\n if (event.type === 'transaction') {\n // Filter out transactions for Nuxt build assets\n // This regex matches the default path to the nuxt-generated build assets (`_nuxt`).\n // todo: the buildAssetDir could be changed in the nuxt config - change this to a more generic solution\n if (event.transaction?.match(/^GET \\/_nuxt\\//)) {\n options.debug &&\n DEBUG_BUILD &&\n logger.log('NuxtLowQualityTransactionsFilter filtered transaction: ', event.transaction);\n return null;\n }\n\n return event;\n } else {\n return event;\n }\n }) satisfies EventProcessor,\n { id: 'NuxtLowQualityTransactionsFilter' },\n ),\n );\n\n return client;\n}\n\nfunction getNuxtDefaultIntegrations(options: NodeOptions): Integration[] {\n return [\n ...getDefaultNodeIntegrations(options).filter(integration => integration.name !== 'Http'),\n // The httpIntegration is added as defaultIntegration, so users can still overwrite it\n httpIntegration({\n instrumentation: {\n responseHook: () => {\n // Makes it possible to end the tracing span before closing the Vercel lambda (https://vercel.com/docs/functions/functions-api-reference#waituntil)\n vercelWaitUntil(flushSafelyWithTimeout());\n },\n },\n }),\n ];\n}\n\n/**\n * Adds /vue/ to the registerEsmLoaderHooks options and merges it with the old values in the array if one is defined.\n * If the registerEsmLoaderHooks option is already a boolean, nothing is changed.\n *\n * Only exported for Testing purposes.\n */\nexport function mergeRegisterEsmLoaderHooks(\n options: SentryNuxtServerOptions,\n): SentryNuxtServerOptions['registerEsmLoaderHooks'] {\n if (typeof options.registerEsmLoaderHooks === 'object' && options.registerEsmLoaderHooks !== null) {\n return {\n exclude: Array.isArray(options.registerEsmLoaderHooks.exclude)\n ? [...options.registerEsmLoaderHooks.exclude, /vue/]\n : options.registerEsmLoaderHooks.exclude ?? [/vue/],\n };\n }\n return options.registerEsmLoaderHooks ?? { exclude: [/vue/] };\n}\n\n/**\n * Flushes pending Sentry events with a 2-second timeout and in a way that cannot create unhandled promise rejections.\n */\nexport async function flushSafelyWithTimeout(): Promise<void> {\n try {\n DEBUG_BUILD && logger.log('Flushing events...');\n await flush(2000);\n DEBUG_BUILD && logger.log('Done flushing events');\n } catch (e) {\n DEBUG_BUILD && logger.log('Error while flushing events:\\n', e);\n }\n}\n"],"names":["initNode","getDefaultNodeIntegrations"],"mappings":"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"}
1
+ {"version":3,"file":"sdk.js","sources":["../../../src/server/sdk.ts"],"sourcesContent":["import { applySdkMetadata, flush, getGlobalScope } from '@sentry/core';\nimport {\n type NodeOptions,\n getDefaultIntegrations as getDefaultNodeIntegrations,\n httpIntegration,\n init as initNode,\n} from '@sentry/node';\nimport type { Client, EventProcessor, Integration } from '@sentry/types';\nimport { logger, vercelWaitUntil } from '@sentry/utils';\nimport { DEBUG_BUILD } from '../common/debug-build';\nimport type { SentryNuxtServerOptions } from '../common/types';\n\n/**\n * Initializes the server-side of the Nuxt SDK\n *\n * @param options Configuration options for the SDK.\n */\nexport function init(options: SentryNuxtServerOptions): Client | undefined {\n const sentryOptions = {\n ...options,\n registerEsmLoaderHooks: mergeRegisterEsmLoaderHooks(options),\n defaultIntegrations: getNuxtDefaultIntegrations(options),\n };\n\n applySdkMetadata(sentryOptions, 'nuxt', ['nuxt', 'node']);\n\n const client = initNode(sentryOptions);\n\n getGlobalScope().addEventProcessor(\n Object.assign(\n (event => {\n if (event.type === 'transaction') {\n // Filter out transactions for Nuxt build assets\n // This regex matches the default path to the nuxt-generated build assets (`_nuxt`).\n // todo: the buildAssetDir could be changed in the nuxt config - change this to a more generic solution\n if (event.transaction?.match(/^GET \\/_nuxt\\//)) {\n options.debug &&\n DEBUG_BUILD &&\n logger.log('NuxtLowQualityTransactionsFilter filtered transaction: ', event.transaction);\n return null;\n }\n\n return event;\n } else {\n return event;\n }\n }) satisfies EventProcessor,\n { id: 'NuxtLowQualityTransactionsFilter' },\n ),\n );\n\n return client;\n}\n\nfunction getNuxtDefaultIntegrations(options: NodeOptions): Integration[] {\n return [\n ...getDefaultNodeIntegrations(options).filter(integration => integration.name !== 'Http'),\n // The httpIntegration is added as defaultIntegration, so users can still overwrite it\n httpIntegration({\n instrumentation: {\n responseHook: () => {\n // Makes it possible to end the tracing span before closing the Vercel lambda (https://vercel.com/docs/functions/functions-api-reference#waituntil)\n vercelWaitUntil(flushSafelyWithTimeout());\n },\n },\n }),\n ];\n}\n\n/**\n * Adds /vue/ to the registerEsmLoaderHooks options and merges it with the old values in the array if one is defined.\n * If the registerEsmLoaderHooks option is already a boolean, nothing is changed.\n *\n * Only exported for Testing purposes.\n */\nexport function mergeRegisterEsmLoaderHooks(\n options: SentryNuxtServerOptions,\n): SentryNuxtServerOptions['registerEsmLoaderHooks'] {\n if (typeof options.registerEsmLoaderHooks === 'object' && options.registerEsmLoaderHooks !== null) {\n return {\n exclude: Array.isArray(options.registerEsmLoaderHooks.exclude)\n ? [...options.registerEsmLoaderHooks.exclude, /vue/]\n : options.registerEsmLoaderHooks.exclude ?? [/vue/],\n };\n }\n return options.registerEsmLoaderHooks ?? { exclude: [/vue/] };\n}\n\n/**\n * Flushes pending Sentry events with a 2-second timeout and in a way that cannot create unhandled promise rejections.\n */\nexport async function flushSafelyWithTimeout(): Promise<void> {\n try {\n DEBUG_BUILD && logger.log('Flushing events...');\n await flush(2000);\n DEBUG_BUILD && logger.log('Done flushing events');\n } catch (e) {\n DEBUG_BUILD && logger.log('Error while flushing events:\\n', e);\n }\n}\n"],"names":["initNode","getDefaultNodeIntegrations"],"mappings":"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"}
@@ -2,7 +2,7 @@ import { _optionalChain } from '@sentry/utils';
2
2
  import * as fs from 'fs';
3
3
  import { createResolver } from '@nuxt/kit';
4
4
  import { consoleSandbox } from '@sentry/utils';
5
- import { SENTRY_WRAPPED_ENTRY, SENTRY_FUNCTIONS_REEXPORT, QUERY_END_INDICATOR, removeSentryQueryFromPath, constructFunctionReExport } from './utils.js';
5
+ import { SENTRY_WRAPPED_ENTRY, constructWrappedFunctionExportQuery, QUERY_END_INDICATOR, removeSentryQueryFromPath, SENTRY_WRAPPED_FUNCTIONS, SENTRY_REEXPORTED_FUNCTIONS, constructFunctionReExport } from './utils.js';
6
6
 
7
7
  const SERVER_CONFIG_FILENAME = 'sentry.server.config';
8
8
 
@@ -72,7 +72,12 @@ function addServerConfigToBuild(
72
72
  * With this, the Sentry server config can be loaded before all other modules of the application (which is needed for import-in-the-middle).
73
73
  * See: https://nodejs.org/api/module.html#enabling
74
74
  */
75
- function addDynamicImportEntryFileWrapper(nitro, serverConfigFile) {
75
+ function addDynamicImportEntryFileWrapper(
76
+ nitro,
77
+ serverConfigFile,
78
+ moduleOptions
79
+ ,
80
+ ) {
76
81
  if (!nitro.options.rollupConfig) {
77
82
  nitro.options.rollupConfig = { output: {} };
78
83
  }
@@ -85,8 +90,10 @@ function addDynamicImportEntryFileWrapper(nitro, serverConfigFile) {
85
90
  }
86
91
 
87
92
  nitro.options.rollupConfig.plugins.push(
88
- // @ts-expect-error - This is the correct type, but it shows an error because of two different definitions
89
- wrapEntryWithDynamicImport(createResolver(nitro.options.srcDir).resolve(`/${serverConfigFile}`)),
93
+ wrapEntryWithDynamicImport({
94
+ resolvedSentryConfigPath: createResolver(nitro.options.srcDir).resolve(`/${serverConfigFile}`),
95
+ entrypointWrappedFunctions: moduleOptions.entrypointWrappedFunctions,
96
+ }),
90
97
  );
91
98
  }
92
99
 
@@ -95,7 +102,11 @@ function addDynamicImportEntryFileWrapper(nitro, serverConfigFile) {
95
102
  * by using a regular `import` and load the server after that.
96
103
  * This also works with serverless `handler` functions, as it re-exports the `handler`.
97
104
  */
98
- function wrapEntryWithDynamicImport(resolvedSentryConfigPath) {
105
+ function wrapEntryWithDynamicImport({
106
+ resolvedSentryConfigPath,
107
+ entrypointWrappedFunctions,
108
+ debug,
109
+ }) {
99
110
  return {
100
111
  name: 'sentry-wrap-entry-with-dynamic-import',
101
112
  async resolveId(source, importer, options) {
@@ -111,7 +122,7 @@ function wrapEntryWithDynamicImport(resolvedSentryConfigPath) {
111
122
  return { id: source, moduleSideEffects: true, external: true };
112
123
  }
113
124
 
114
- if (options.isEntry && !source.includes(`.mjs${SENTRY_WRAPPED_ENTRY}`)) {
125
+ if (options.isEntry && source.includes('.mjs') && !source.includes(`.mjs${SENTRY_WRAPPED_ENTRY}`)) {
115
126
  const resolution = await this.resolve(source, importer, options);
116
127
 
117
128
  // If it cannot be resolved or is external, just return it so that Rollup can display an error
@@ -121,16 +132,15 @@ function wrapEntryWithDynamicImport(resolvedSentryConfigPath) {
121
132
 
122
133
  moduleInfo.moduleSideEffects = true;
123
134
 
124
- // The key `.` in `exportedBindings` refer to the exports within the file
125
- const exportedFunctions = _optionalChain([moduleInfo, 'access', _11 => _11.exportedBindings, 'optionalAccess', _12 => _12['.']]);
126
-
127
135
  // The enclosing `if` already checks for the suffix in `source`, but a check in `resolution.id` is needed as well to prevent multiple attachment of the suffix
128
136
  return resolution.id.includes(`.mjs${SENTRY_WRAPPED_ENTRY}`)
129
137
  ? resolution.id
130
138
  : resolution.id
131
139
  // Concatenates the query params to mark the file (also attaches names of re-exports - this is needed for serverless functions to re-export the handler)
132
140
  .concat(SENTRY_WRAPPED_ENTRY)
133
- .concat(_optionalChain([exportedFunctions, 'optionalAccess', _13 => _13.length]) ? SENTRY_FUNCTIONS_REEXPORT.concat(exportedFunctions.join(',')) : '')
141
+ .concat(
142
+ constructWrappedFunctionExportQuery(moduleInfo.exportedBindings, entrypointWrappedFunctions, debug),
143
+ )
134
144
  .concat(QUERY_END_INDICATOR);
135
145
  }
136
146
  return null;
@@ -140,9 +150,10 @@ function wrapEntryWithDynamicImport(resolvedSentryConfigPath) {
140
150
  const entryId = removeSentryQueryFromPath(id);
141
151
 
142
152
  // Mostly useful for serverless `handler` functions
143
- const reExportedFunctions = id.includes(SENTRY_FUNCTIONS_REEXPORT)
144
- ? constructFunctionReExport(id, entryId)
145
- : '';
153
+ const reExportedFunctions =
154
+ id.includes(SENTRY_WRAPPED_FUNCTIONS) || id.includes(SENTRY_REEXPORTED_FUNCTIONS)
155
+ ? constructFunctionReExport(id, entryId)
156
+ : '';
146
157
 
147
158
  return (
148
159
  // Regular `import` of the Sentry config