@sentry/nuxt 8.25.0 → 8.26.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.
- package/build/cjs/client/sdk.js.map +1 -1
- package/build/cjs/module.js +2 -0
- package/build/cjs/module.js.map +1 -1
- package/build/cjs/runtime/plugins/sentry.server.js +11 -2
- package/build/cjs/runtime/plugins/sentry.server.js.map +1 -1
- package/build/cjs/runtime/utils.js +3 -11
- package/build/cjs/runtime/utils.js.map +1 -1
- package/build/cjs/server/sdk.js +22 -0
- package/build/cjs/server/sdk.js.map +1 -1
- package/build/esm/client/sdk.js.map +1 -1
- package/build/esm/module.js +2 -0
- package/build/esm/module.js.map +1 -1
- package/build/esm/runtime/plugins/sentry.server.js +11 -2
- package/build/esm/runtime/plugins/sentry.server.js.map +1 -1
- package/build/esm/runtime/utils.js +5 -13
- package/build/esm/runtime/utils.js.map +1 -1
- package/build/esm/server/sdk.js +22 -2
- package/build/esm/server/sdk.js.map +1 -1
- package/build/module/module.json +1 -1
- package/build/module/module.mjs +2 -0
- package/build/module/runtime/plugins/sentry.server.js +9 -2
- package/build/module/runtime/utils.js +4 -12
- package/build/types/client/sdk.d.ts +2 -2
- package/build/types/client/sdk.d.ts.map +1 -1
- package/build/types/common/types.d.ts +4 -2
- package/build/types/common/types.d.ts.map +1 -1
- package/build/types/module.d.ts.map +1 -1
- package/build/types/runtime/plugins/sentry.server.d.ts.map +1 -1
- package/build/types/runtime/utils.d.ts.map +1 -1
- package/build/types/server/sdk.d.ts +9 -2
- package/build/types/server/sdk.d.ts.map +1 -1
- package/package.json +8 -8
|
@@ -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 {
|
|
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","applySdkMetadata","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,8BAA6B,CAAC,OAAO,CAAC,CAAC;AACpE,IAAI,GAAG,OAAO;AACd,GAAG,CAAA;AACH;AACA,EAAEC,qBAAgB,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAA;AAC1D;AACA,EAAE,OAAOC,YAAW,CAAC,aAAa,CAAC,CAAA;AACnC;;;;"}
|
package/build/cjs/module.js
CHANGED
|
@@ -26,6 +26,7 @@ const module$1 = kit.defineNuxtModule({
|
|
|
26
26
|
filename: 'sentry-client-config.mjs',
|
|
27
27
|
getContents: () =>
|
|
28
28
|
`import "${buildDirResolver.resolve(`/${clientConfigFile}`)}"\n` +
|
|
29
|
+
'import { defineNuxtPlugin } from "#imports"\n' +
|
|
29
30
|
'export default defineNuxtPlugin(() => {})',
|
|
30
31
|
});
|
|
31
32
|
|
|
@@ -41,6 +42,7 @@ const module$1 = kit.defineNuxtModule({
|
|
|
41
42
|
filename: 'sentry-server-config.mjs',
|
|
42
43
|
getContents: () =>
|
|
43
44
|
`import "${buildDirResolver.resolve(`/${serverConfigFile}`)}"\n` +
|
|
45
|
+
'import { defineNuxtPlugin } from "#imports"\n' +
|
|
44
46
|
'export default defineNuxtPlugin(() => {})',
|
|
45
47
|
});
|
|
46
48
|
|
package/build/cjs/module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.js","sources":["../../src/module.ts"],"sourcesContent":["import * as fs from 'fs';\nimport * as path from 'path';\nimport { addPlugin, addPluginTemplate, addServerPlugin, createResolver, defineNuxtModule } from '@nuxt/kit';\nimport type { SentryNuxtModuleOptions } from './common/types';\nimport { setupSourceMaps } from './vite/sourceMaps';\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(moduleOptions, nuxt) {\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 getContents: () =>\n `import \"${buildDirResolver.resolve(`/${clientConfigFile}`)}\"\\n` +\n 'export default defineNuxtPlugin(() => {})',\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 // 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 'export default defineNuxtPlugin(() => {})',\n });\n\n addServerPlugin(moduleDirResolver.resolve('./runtime/plugins/sentry.server'));\n }\n\n if (clientConfigFile || serverConfigFile) {\n setupSourceMaps(moduleOptions, nuxt);\n }\n },\n});\n\nfunction findDefaultSdkInitFile(type: 'server' | 'client'): string | undefined {\n const possibleFileExtensions = ['ts', 'js', 'mjs', 'cjs', 'mts', 'cts'];\n\n const cwd = process.cwd();\n const filePath = possibleFileExtensions\n .map(e =>\n path.resolve(\n type === 'server'\n ? path.join(cwd, 'public', `instrument.${type}.${e}`)\n : path.join(cwd, `sentry.${type}.config.${e}`),\n ),\n )\n .find(filename => fs.existsSync(filename));\n\n return filePath ? path.basename(filePath) : undefined;\n}\n"],"names":["defineNuxtModule","createResolver","addPluginTemplate","addPlugin","addServerPlugin","setupSourceMaps"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"module.js","sources":["../../src/module.ts"],"sourcesContent":["import * as fs from 'fs';\nimport * as path from 'path';\nimport { addPlugin, addPluginTemplate, addServerPlugin, createResolver, defineNuxtModule } from '@nuxt/kit';\nimport type { SentryNuxtModuleOptions } from './common/types';\nimport { setupSourceMaps } from './vite/sourceMaps';\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(moduleOptions, nuxt) {\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 getContents: () =>\n `import \"${buildDirResolver.resolve(`/${clientConfigFile}`)}\"\\n` +\n 'import { defineNuxtPlugin } from \"#imports\"\\n' +\n 'export default defineNuxtPlugin(() => {})',\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 // 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 addServerPlugin(moduleDirResolver.resolve('./runtime/plugins/sentry.server'));\n }\n\n if (clientConfigFile || serverConfigFile) {\n setupSourceMaps(moduleOptions, nuxt);\n }\n },\n});\n\nfunction findDefaultSdkInitFile(type: 'server' | 'client'): string | undefined {\n const possibleFileExtensions = ['ts', 'js', 'mjs', 'cjs', 'mts', 'cts'];\n\n const cwd = process.cwd();\n const filePath = possibleFileExtensions\n .map(e =>\n path.resolve(\n type === 'server'\n ? path.join(cwd, 'public', `instrument.${type}.${e}`)\n : path.join(cwd, `sentry.${type}.config.${e}`),\n ),\n )\n .find(filename => fs.existsSync(filename));\n\n return filePath ? path.basename(filePath) : undefined;\n}\n"],"names":["defineNuxtModule","createResolver","addPluginTemplate","addPlugin","addServerPlugin","setupSourceMaps"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const
|
|
1
|
+
const Sentry = require('@sentry/node');
|
|
2
2
|
const h3 = require('h3');
|
|
3
3
|
const runtime = require('nitropack/runtime');
|
|
4
4
|
const utils = require('../utils.js');
|
|
@@ -13,9 +13,18 @@ const sentry_server = runtime.defineNitroPlugin(nitroApp => {
|
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
+
const { method, path } = {
|
|
17
|
+
method: errorContext.event && errorContext.event._method ? errorContext.event._method : '',
|
|
18
|
+
path: errorContext.event && errorContext.event._path ? errorContext.event._path : null,
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
if (path) {
|
|
22
|
+
Sentry.getCurrentScope().setTransactionName(`${method} ${path}`);
|
|
23
|
+
}
|
|
24
|
+
|
|
16
25
|
const structuredContext = utils.extractErrorContext(errorContext);
|
|
17
26
|
|
|
18
|
-
|
|
27
|
+
Sentry.captureException(error, {
|
|
19
28
|
captureContext: { contexts: { nuxt: structuredContext } },
|
|
20
29
|
mechanism: { handled: false },
|
|
21
30
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sentry.server.js","sources":["../../../../src/runtime/plugins/sentry.server.ts"],"sourcesContent":["import
|
|
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":["defineNitroPlugin","H3Error","extractErrorContext","addSentryTracingMetaTags"],"mappings":";;;;;AAMA,sBAAeA,yBAAiB,CAAC,QAAA,IAAY;AAC7C,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK;AACxD;AACA,IAAI,IAAI,KAAM,YAAWC,UAAO,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,GAAAC,yBAAA,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,IAAAC,8BAAA,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA;AACA,GAAA,CAAA,CAAA;AACA,CAAA,CAAA;;;;"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
2
2
|
|
|
3
3
|
const core = require('@sentry/core');
|
|
4
|
-
const opentelemetry = require('@sentry/opentelemetry');
|
|
5
4
|
const utils = require('@sentry/utils');
|
|
6
5
|
|
|
7
6
|
/**
|
|
@@ -35,17 +34,10 @@ function extractErrorContext(errorContext) {
|
|
|
35
34
|
* Exported only for testing
|
|
36
35
|
*/
|
|
37
36
|
function addSentryTracingMetaTags(head) {
|
|
38
|
-
const
|
|
39
|
-
const rootSpan = activeSpan ? core.getRootSpan(activeSpan) : undefined;
|
|
37
|
+
const metaTags = core.getTraceMetaTags();
|
|
40
38
|
|
|
41
|
-
if (
|
|
42
|
-
|
|
43
|
-
const dynamicSamplingContext = utils.dynamicSamplingContextToSentryBaggageHeader(
|
|
44
|
-
opentelemetry.getDynamicSamplingContextFromSpan(rootSpan),
|
|
45
|
-
);
|
|
46
|
-
|
|
47
|
-
head.push(`<meta name="sentry-trace" content="${traceParentData}"/>`);
|
|
48
|
-
head.push(`<meta name="baggage" content="${dynamicSamplingContext}"/>`);
|
|
39
|
+
if (metaTags) {
|
|
40
|
+
head.push(metaTags);
|
|
49
41
|
}
|
|
50
42
|
}
|
|
51
43
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../../src/runtime/utils.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../../src/runtime/utils.ts"],"sourcesContent":["import { getTraceMetaTags } from '@sentry/core';\nimport type { Context } from '@sentry/types';\nimport { dropUndefinedKeys } from '@sentry/utils';\nimport type { CapturedErrorContext } from 'nitropack';\nimport type { NuxtRenderHTMLContext } from 'nuxt/app';\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"],"names":["dropUndefinedKeys","getTraceMetaTags"],"mappings":";;;;;AAMA;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,OAAOA,uBAAiB,CAAC,iBAAiB,CAAC,CAAA;AAC7C,CAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,wBAAwB,CAAC,IAAI,EAAuC;AACpF,EAAE,MAAM,QAAA,GAAWC,qBAAgB,EAAE,CAAA;AACrC;AACA,EAAE,IAAI,QAAQ,EAAE;AAChB,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;AACvB,GAAE;AACF;;;;;"}
|
package/build/cjs/server/sdk.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
var {
|
|
2
|
+
_nullishCoalesce,
|
|
2
3
|
_optionalChain
|
|
3
4
|
} = require('@sentry/utils');
|
|
4
5
|
|
|
@@ -17,6 +18,7 @@ const debugBuild = require('../common/debug-build.js');
|
|
|
17
18
|
function init(options) {
|
|
18
19
|
const sentryOptions = {
|
|
19
20
|
...options,
|
|
21
|
+
registerEsmLoaderHooks: mergeRegisterEsmLoaderHooks(options),
|
|
20
22
|
};
|
|
21
23
|
|
|
22
24
|
core.applySdkMetadata(sentryOptions, 'nuxt', ['nuxt', 'node']);
|
|
@@ -49,5 +51,25 @@ function init(options) {
|
|
|
49
51
|
return client;
|
|
50
52
|
}
|
|
51
53
|
|
|
54
|
+
/**
|
|
55
|
+
* Adds /vue/ to the registerEsmLoaderHooks options and merges it with the old values in the array if one is defined.
|
|
56
|
+
* If the registerEsmLoaderHooks option is already a boolean, nothing is changed.
|
|
57
|
+
*
|
|
58
|
+
* Only exported for Testing purposes.
|
|
59
|
+
*/
|
|
60
|
+
function mergeRegisterEsmLoaderHooks(
|
|
61
|
+
options,
|
|
62
|
+
) {
|
|
63
|
+
if (typeof options.registerEsmLoaderHooks === 'object' && options.registerEsmLoaderHooks !== null) {
|
|
64
|
+
return {
|
|
65
|
+
exclude: Array.isArray(options.registerEsmLoaderHooks.exclude)
|
|
66
|
+
? [...options.registerEsmLoaderHooks.exclude, /vue/]
|
|
67
|
+
: _nullishCoalesce(options.registerEsmLoaderHooks.exclude, () => ( [/vue/])),
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
return _nullishCoalesce(options.registerEsmLoaderHooks, () => ( { exclude: [/vue/] }));
|
|
71
|
+
}
|
|
72
|
+
|
|
52
73
|
exports.init = init;
|
|
74
|
+
exports.mergeRegisterEsmLoaderHooks = mergeRegisterEsmLoaderHooks;
|
|
53
75
|
//# sourceMappingURL=sdk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk.js","sources":["../../../src/server/sdk.ts"],"sourcesContent":["import { applySdkMetadata, getGlobalScope } from '@sentry/core';\nimport { init as initNode } from '@sentry/node';\nimport type { Client, EventProcessor } from '@sentry/types';\nimport { logger } from '@sentry/utils';\nimport { DEBUG_BUILD } from '../common/debug-build';\nimport type {
|
|
1
|
+
{"version":3,"file":"sdk.js","sources":["../../../src/server/sdk.ts"],"sourcesContent":["import { applySdkMetadata, getGlobalScope } from '@sentry/core';\nimport { init as initNode } from '@sentry/node';\nimport type { Client, EventProcessor } from '@sentry/types';\nimport { logger } 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 };\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\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"],"names":["applySdkMetadata","initNode","getGlobalScope","DEBUG_BUILD","logger"],"mappings":"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"}
|
|
@@ -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 {
|
|
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;;;;"}
|
package/build/esm/module.js
CHANGED
|
@@ -25,6 +25,7 @@ const module = defineNuxtModule({
|
|
|
25
25
|
filename: 'sentry-client-config.mjs',
|
|
26
26
|
getContents: () =>
|
|
27
27
|
`import "${buildDirResolver.resolve(`/${clientConfigFile}`)}"\n` +
|
|
28
|
+
'import { defineNuxtPlugin } from "#imports"\n' +
|
|
28
29
|
'export default defineNuxtPlugin(() => {})',
|
|
29
30
|
});
|
|
30
31
|
|
|
@@ -40,6 +41,7 @@ const module = defineNuxtModule({
|
|
|
40
41
|
filename: 'sentry-server-config.mjs',
|
|
41
42
|
getContents: () =>
|
|
42
43
|
`import "${buildDirResolver.resolve(`/${serverConfigFile}`)}"\n` +
|
|
44
|
+
'import { defineNuxtPlugin } from "#imports"\n' +
|
|
43
45
|
'export default defineNuxtPlugin(() => {})',
|
|
44
46
|
});
|
|
45
47
|
|
package/build/esm/module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.js","sources":["../../src/module.ts"],"sourcesContent":["import * as fs from 'fs';\nimport * as path from 'path';\nimport { addPlugin, addPluginTemplate, addServerPlugin, createResolver, defineNuxtModule } from '@nuxt/kit';\nimport type { SentryNuxtModuleOptions } from './common/types';\nimport { setupSourceMaps } from './vite/sourceMaps';\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(moduleOptions, nuxt) {\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 getContents: () =>\n `import \"${buildDirResolver.resolve(`/${clientConfigFile}`)}\"\\n` +\n 'export default defineNuxtPlugin(() => {})',\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 // 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 'export default defineNuxtPlugin(() => {})',\n });\n\n addServerPlugin(moduleDirResolver.resolve('./runtime/plugins/sentry.server'));\n }\n\n if (clientConfigFile || serverConfigFile) {\n setupSourceMaps(moduleOptions, nuxt);\n }\n },\n});\n\nfunction findDefaultSdkInitFile(type: 'server' | 'client'): string | undefined {\n const possibleFileExtensions = ['ts', 'js', 'mjs', 'cjs', 'mts', 'cts'];\n\n const cwd = process.cwd();\n const filePath = possibleFileExtensions\n .map(e =>\n path.resolve(\n type === 'server'\n ? path.join(cwd, 'public', `instrument.${type}.${e}`)\n : path.join(cwd, `sentry.${type}.config.${e}`),\n ),\n )\n .find(filename => fs.existsSync(filename));\n\n return filePath ? path.basename(filePath) : undefined;\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"module.js","sources":["../../src/module.ts"],"sourcesContent":["import * as fs from 'fs';\nimport * as path from 'path';\nimport { addPlugin, addPluginTemplate, addServerPlugin, createResolver, defineNuxtModule } from '@nuxt/kit';\nimport type { SentryNuxtModuleOptions } from './common/types';\nimport { setupSourceMaps } from './vite/sourceMaps';\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(moduleOptions, nuxt) {\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 getContents: () =>\n `import \"${buildDirResolver.resolve(`/${clientConfigFile}`)}\"\\n` +\n 'import { defineNuxtPlugin } from \"#imports\"\\n' +\n 'export default defineNuxtPlugin(() => {})',\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 // 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 addServerPlugin(moduleDirResolver.resolve('./runtime/plugins/sentry.server'));\n }\n\n if (clientConfigFile || serverConfigFile) {\n setupSourceMaps(moduleOptions, nuxt);\n }\n },\n});\n\nfunction findDefaultSdkInitFile(type: 'server' | 'client'): string | undefined {\n const possibleFileExtensions = ['ts', 'js', 'mjs', 'cjs', 'mts', 'cts'];\n\n const cwd = process.cwd();\n const filePath = possibleFileExtensions\n .map(e =>\n path.resolve(\n type === 'server'\n ? path.join(cwd, 'public', `instrument.${type}.${e}`)\n : path.join(cwd, `sentry.${type}.config.${e}`),\n ),\n )\n .find(filename => fs.existsSync(filename));\n\n return filePath ? path.basename(filePath) : undefined;\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as Sentry from '@sentry/node';
|
|
2
2
|
import { H3Error } from 'h3';
|
|
3
3
|
import { defineNitroPlugin } from 'nitropack/runtime';
|
|
4
4
|
import { extractErrorContext, addSentryTracingMetaTags } from '../utils.js';
|
|
@@ -13,9 +13,18 @@ const sentry_server = defineNitroPlugin(nitroApp => {
|
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
+
const { method, path } = {
|
|
17
|
+
method: errorContext.event && errorContext.event._method ? errorContext.event._method : '',
|
|
18
|
+
path: errorContext.event && errorContext.event._path ? errorContext.event._path : null,
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
if (path) {
|
|
22
|
+
Sentry.getCurrentScope().setTransactionName(`${method} ${path}`);
|
|
23
|
+
}
|
|
24
|
+
|
|
16
25
|
const structuredContext = extractErrorContext(errorContext);
|
|
17
26
|
|
|
18
|
-
captureException(error, {
|
|
27
|
+
Sentry.captureException(error, {
|
|
19
28
|
captureContext: { contexts: { nuxt: structuredContext } },
|
|
20
29
|
mechanism: { handled: false },
|
|
21
30
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sentry.server.js","sources":["../../../../src/runtime/plugins/sentry.server.ts"],"sourcesContent":["import
|
|
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,6 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { dropUndefinedKeys, dynamicSamplingContextToSentryBaggageHeader } from '@sentry/utils';
|
|
1
|
+
import { getTraceMetaTags } from '@sentry/core';
|
|
2
|
+
import { dropUndefinedKeys } from '@sentry/utils';
|
|
4
3
|
|
|
5
4
|
/**
|
|
6
5
|
* Extracts the relevant context information from the error context (H3Event in Nitro Error)
|
|
@@ -33,17 +32,10 @@ function extractErrorContext(errorContext) {
|
|
|
33
32
|
* Exported only for testing
|
|
34
33
|
*/
|
|
35
34
|
function addSentryTracingMetaTags(head) {
|
|
36
|
-
const
|
|
37
|
-
const rootSpan = activeSpan ? getRootSpan(activeSpan) : undefined;
|
|
35
|
+
const metaTags = getTraceMetaTags();
|
|
38
36
|
|
|
39
|
-
if (
|
|
40
|
-
|
|
41
|
-
const dynamicSamplingContext = dynamicSamplingContextToSentryBaggageHeader(
|
|
42
|
-
getDynamicSamplingContextFromSpan(rootSpan),
|
|
43
|
-
);
|
|
44
|
-
|
|
45
|
-
head.push(`<meta name="sentry-trace" content="${traceParentData}"/>`);
|
|
46
|
-
head.push(`<meta name="baggage" content="${dynamicSamplingContext}"/>`);
|
|
37
|
+
if (metaTags) {
|
|
38
|
+
head.push(metaTags);
|
|
47
39
|
}
|
|
48
40
|
}
|
|
49
41
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../../src/runtime/utils.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../../src/runtime/utils.ts"],"sourcesContent":["import { getTraceMetaTags } from '@sentry/core';\nimport type { Context } from '@sentry/types';\nimport { dropUndefinedKeys } from '@sentry/utils';\nimport type { CapturedErrorContext } from 'nitropack';\nimport type { NuxtRenderHTMLContext } from 'nuxt/app';\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"],"names":[],"mappings":";;;AAMA;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;;;;"}
|
package/build/esm/server/sdk.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { _optionalChain } from '@sentry/utils';
|
|
1
|
+
import { _nullishCoalesce, _optionalChain } from '@sentry/utils';
|
|
2
2
|
import { applySdkMetadata, getGlobalScope } from '@sentry/core';
|
|
3
3
|
import { init as init$1 } from '@sentry/node';
|
|
4
4
|
import { logger } from '@sentry/utils';
|
|
@@ -12,6 +12,7 @@ import { DEBUG_BUILD } from '../common/debug-build.js';
|
|
|
12
12
|
function init(options) {
|
|
13
13
|
const sentryOptions = {
|
|
14
14
|
...options,
|
|
15
|
+
registerEsmLoaderHooks: mergeRegisterEsmLoaderHooks(options),
|
|
15
16
|
};
|
|
16
17
|
|
|
17
18
|
applySdkMetadata(sentryOptions, 'nuxt', ['nuxt', 'node']);
|
|
@@ -44,5 +45,24 @@ function init(options) {
|
|
|
44
45
|
return client;
|
|
45
46
|
}
|
|
46
47
|
|
|
47
|
-
|
|
48
|
+
/**
|
|
49
|
+
* Adds /vue/ to the registerEsmLoaderHooks options and merges it with the old values in the array if one is defined.
|
|
50
|
+
* If the registerEsmLoaderHooks option is already a boolean, nothing is changed.
|
|
51
|
+
*
|
|
52
|
+
* Only exported for Testing purposes.
|
|
53
|
+
*/
|
|
54
|
+
function mergeRegisterEsmLoaderHooks(
|
|
55
|
+
options,
|
|
56
|
+
) {
|
|
57
|
+
if (typeof options.registerEsmLoaderHooks === 'object' && options.registerEsmLoaderHooks !== null) {
|
|
58
|
+
return {
|
|
59
|
+
exclude: Array.isArray(options.registerEsmLoaderHooks.exclude)
|
|
60
|
+
? [...options.registerEsmLoaderHooks.exclude, /vue/]
|
|
61
|
+
: _nullishCoalesce(options.registerEsmLoaderHooks.exclude, () => ( [/vue/])),
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
return _nullishCoalesce(options.registerEsmLoaderHooks, () => ( { exclude: [/vue/] }));
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export { init, mergeRegisterEsmLoaderHooks };
|
|
48
68
|
//# sourceMappingURL=sdk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk.js","sources":["../../../src/server/sdk.ts"],"sourcesContent":["import { applySdkMetadata, getGlobalScope } from '@sentry/core';\nimport { init as initNode } from '@sentry/node';\nimport type { Client, EventProcessor } from '@sentry/types';\nimport { logger } from '@sentry/utils';\nimport { DEBUG_BUILD } from '../common/debug-build';\nimport type {
|
|
1
|
+
{"version":3,"file":"sdk.js","sources":["../../../src/server/sdk.ts"],"sourcesContent":["import { applySdkMetadata, getGlobalScope } from '@sentry/core';\nimport { init as initNode } from '@sentry/node';\nimport type { Client, EventProcessor } from '@sentry/types';\nimport { logger } 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 };\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\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"],"names":["initNode"],"mappings":";;;;;;AAOA,CAAA,CAAA;CACA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA;CACA;CACA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA;CACA,CAAA;AACO,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAI,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,EAA+C;EACzE,CAAA,CAAA,CAAA,CAAA,EAAM,cAAgB,EAAA;IACpB,GAAG,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;IACV,CAAsB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAE,CAA2B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,OAAO,CAAC;EAChE,CAAG;;EAED,CAAgB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,CAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAE,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,EAAE,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,EAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAC,CAAC;;EAEzD,MAAM,CAAO,CAAA,CAAA,CAAA,CAAA,EAAA,EAAEA,MAAQ,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAa,CAAC;;EAEtC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAc,CAAE,CAAA,CAAC,CAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;IAChC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAC,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA;MACjB,CAAO,MAAS,CAAA,EAAA;QACR,IAAI,CAAK,CAAA,CAAA,CAAA,CAAA,CAAC,CAAK,CAAA,CAAA,EAAA,CAAA,CAAA,EAAI,aAAa,EAAE;UAC1C,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA;UACA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;UACA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;UACU,CAAI,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAK,EAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,6BAAE,CAAK,CAAA,CAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAC,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAgB,CAAA,CAAA,CAAC,EAAE;YAC9C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAC,CAAM,CAAA,CAAA,CAAA,EAAA,CAAA;cACZ,CAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA;cACZ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAC,CAAA,CAAA,CAAG,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAyD,EAAE,CAAK,CAAA,CAAA,CAAA,CAAA,CAAC,CAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC;YAC1F,CAAA,CAAA,CAAA,CAAA,CAAA,EAAO,IAAI;UACb;;UAEA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAO,KAAK;QACtB,EAAe,CAAA,CAAA,CAAA,EAAA;UACL,CAAA,CAAA,CAAA,CAAA,CAAA,EAAO,KAAK;QACd;MACD,CAAA,EAAA;MACD,EAAE,CAAA,CAAE,EAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAoC,CAAA;IAC3C,CAAA;EACL,CAAG;;EAED,CAAA,CAAA,CAAA,CAAA,CAAA,EAAO,MAAM;AACf;;AAEA,CAAA,CAAA;CACA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;CACA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;CACA;CACA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;CACA,CAAA;AACO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAS,CAA2B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;EACzC,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACT,EAAqD;EACnD,CAAI,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAO,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,CAAuB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAI,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAG,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,CAAuB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAI,IAAI,EAAE;IACjG,CAAO,CAAA,CAAA,CAAA,CAAA,EAAA;MACL,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,EAAE,CAAA,CAAA,CAAA,CAAA,CAAK,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAsB,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO;QACzD,EAAA,CAAC,GAAG,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,sBAAsB,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,EAAE,CAAA,CAAA,CAAA,CAAA,CAAK;QAC3D,EAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAE,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,CAAsB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAG,EAAA,CAAA,EAAA,EAAA,CAAC,CAAK,CAAA,CAAA,CAAA,CAAA,CAAC,CAAA,CAAA;IAC3D,CAAK;EACH;EACA,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,sBAAuB,EAAA,CAAA,EAAA,CAAA,EAAA,EAAG,EAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,EAAE,CAAC,CAAA,CAAA,CAAA,CAAA,CAAK,EAAG,CAAA,CAAA,CAAA;AAC/D;;"}
|
package/build/module/module.json
CHANGED
package/build/module/module.mjs
CHANGED
|
@@ -60,6 +60,7 @@ const module = defineNuxtModule({
|
|
|
60
60
|
mode: "client",
|
|
61
61
|
filename: "sentry-client-config.mjs",
|
|
62
62
|
getContents: () => `import "${buildDirResolver.resolve(`/${clientConfigFile}`)}"
|
|
63
|
+
import { defineNuxtPlugin } from "#imports"
|
|
63
64
|
export default defineNuxtPlugin(() => {})`
|
|
64
65
|
});
|
|
65
66
|
addPlugin({ src: moduleDirResolver.resolve("./runtime/plugins/sentry.client"), mode: "client" });
|
|
@@ -70,6 +71,7 @@ export default defineNuxtPlugin(() => {})`
|
|
|
70
71
|
mode: "server",
|
|
71
72
|
filename: "sentry-server-config.mjs",
|
|
72
73
|
getContents: () => `import "${buildDirResolver.resolve(`/${serverConfigFile}`)}"
|
|
74
|
+
import { defineNuxtPlugin } from "#imports"
|
|
73
75
|
export default defineNuxtPlugin(() => {})`
|
|
74
76
|
});
|
|
75
77
|
addServerPlugin(moduleDirResolver.resolve("./runtime/plugins/sentry.server"));
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as Sentry from "@sentry/node";
|
|
2
2
|
import { H3Error } from "h3";
|
|
3
3
|
import { defineNitroPlugin } from "nitropack/runtime";
|
|
4
4
|
import { addSentryTracingMetaTags, extractErrorContext } from "../utils.js";
|
|
@@ -9,8 +9,15 @@ export default defineNitroPlugin((nitroApp) => {
|
|
|
9
9
|
return;
|
|
10
10
|
}
|
|
11
11
|
}
|
|
12
|
+
const { method, path } = {
|
|
13
|
+
method: errorContext.event && errorContext.event._method ? errorContext.event._method : "",
|
|
14
|
+
path: errorContext.event && errorContext.event._path ? errorContext.event._path : null
|
|
15
|
+
};
|
|
16
|
+
if (path) {
|
|
17
|
+
Sentry.getCurrentScope().setTransactionName(`${method} ${path}`);
|
|
18
|
+
}
|
|
12
19
|
const structuredContext = extractErrorContext(errorContext);
|
|
13
|
-
captureException(error, {
|
|
20
|
+
Sentry.captureException(error, {
|
|
14
21
|
captureContext: { contexts: { nuxt: structuredContext } },
|
|
15
22
|
mechanism: { handled: false }
|
|
16
23
|
});
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { getDynamicSamplingContextFromSpan } from "@sentry/opentelemetry";
|
|
1
|
+
import { getTraceMetaTags } from "@sentry/core";
|
|
3
2
|
import { dropUndefinedKeys } from "@sentry/utils";
|
|
4
|
-
import { dynamicSamplingContextToSentryBaggageHeader } from "@sentry/utils";
|
|
5
3
|
export function extractErrorContext(errorContext) {
|
|
6
4
|
const structuredContext = {
|
|
7
5
|
method: void 0,
|
|
@@ -20,14 +18,8 @@ export function extractErrorContext(errorContext) {
|
|
|
20
18
|
return dropUndefinedKeys(structuredContext);
|
|
21
19
|
}
|
|
22
20
|
export function addSentryTracingMetaTags(head) {
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
const traceParentData = spanToTraceHeader(rootSpan);
|
|
27
|
-
const dynamicSamplingContext = dynamicSamplingContextToSentryBaggageHeader(
|
|
28
|
-
getDynamicSamplingContextFromSpan(rootSpan)
|
|
29
|
-
);
|
|
30
|
-
head.push(`<meta name="sentry-trace" content="${traceParentData}"/>`);
|
|
31
|
-
head.push(`<meta name="baggage" content="${dynamicSamplingContext}"/>`);
|
|
21
|
+
const metaTags = getTraceMetaTags();
|
|
22
|
+
if (metaTags) {
|
|
23
|
+
head.push(metaTags);
|
|
32
24
|
}
|
|
33
25
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { Client } from '@sentry/types';
|
|
2
|
-
import type {
|
|
2
|
+
import type { SentryNuxtClientOptions } from '../common/types';
|
|
3
3
|
/**
|
|
4
4
|
* Initializes the client-side of the Nuxt SDK
|
|
5
5
|
*
|
|
6
6
|
* @param options Configuration options for the SDK.
|
|
7
7
|
*/
|
|
8
|
-
export declare function init(options:
|
|
8
|
+
export declare function init(options: SentryNuxtClientOptions): Client | undefined;
|
|
9
9
|
//# sourceMappingURL=sdk.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../../../src/client/sdk.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../../../src/client/sdk.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAE/D;;;;GAIG;AACH,wBAAgB,IAAI,CAAC,OAAO,EAAE,uBAAuB,GAAG,MAAM,GAAG,SAAS,CAUzE"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import type { init } from '@sentry/
|
|
2
|
-
|
|
1
|
+
import type { init as initNode } from '@sentry/node';
|
|
2
|
+
import type { init as initVue } from '@sentry/vue';
|
|
3
|
+
export type SentryNuxtClientOptions = Omit<Parameters<typeof initVue>[0] & object, 'app'>;
|
|
4
|
+
export type SentryNuxtServerOptions = Omit<Parameters<typeof initNode>[0] & object, 'app'>;
|
|
3
5
|
type SourceMapsOptions = {
|
|
4
6
|
/**
|
|
5
7
|
* If this flag is `true`, and an auth token is detected, the Sentry SDK will
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/common/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/common/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,KAAK,EAAE,IAAI,IAAI,OAAO,EAAE,MAAM,aAAa,CAAC;AAGnD,MAAM,MAAM,uBAAuB,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,CAAC;AAC1F,MAAM,MAAM,uBAAuB,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,CAAC;AAE3F,KAAK,iBAAiB,GAAG;IACvB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,UAAU,CAAC,EAAE;QACX;;;;;;;;;WASG;QACH,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;QAEhC;;;;;;;WAOG;QACH,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;QAEhC;;;;;;;WAOG;QACH,wBAAwB,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;KACnD,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG;IACpC;;;;;OAKG;IACH,uBAAuB,CAAC,EAAE,iBAAiB,CAAC;IAE5C;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../src/module.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAG9D,MAAM,MAAM,aAAa,GAAG,uBAAuB,CAAC;;AAEpD,
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../src/module.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAG9D,MAAM,MAAM,aAAa,GAAG,uBAAuB,CAAC;;AAEpD,wBAiDG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sentry.server.d.ts","sourceRoot":"","sources":["../../../../src/runtime/plugins/sentry.server.ts"],"names":[],"mappings":";AAMA,
|
|
1
|
+
{"version":3,"file":"sentry.server.d.ts","sourceRoot":"","sources":["../../../../src/runtime/plugins/sentry.server.ts"],"names":[],"mappings":";AAMA,wBA+BG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/runtime/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/runtime/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAEtD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,oBAAoB,GAAG,OAAO,CAmB/E;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,qBAAqB,CAAC,MAAM,CAAC,GAAG,IAAI,CAMlF"}
|
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
import type { Client } from '@sentry/types';
|
|
2
|
-
import type {
|
|
2
|
+
import type { SentryNuxtServerOptions } from '../common/types';
|
|
3
3
|
/**
|
|
4
4
|
* Initializes the server-side of the Nuxt SDK
|
|
5
5
|
*
|
|
6
6
|
* @param options Configuration options for the SDK.
|
|
7
7
|
*/
|
|
8
|
-
export declare function init(options:
|
|
8
|
+
export declare function init(options: SentryNuxtServerOptions): Client | undefined;
|
|
9
|
+
/**
|
|
10
|
+
* Adds /vue/ to the registerEsmLoaderHooks options and merges it with the old values in the array if one is defined.
|
|
11
|
+
* If the registerEsmLoaderHooks option is already a boolean, nothing is changed.
|
|
12
|
+
*
|
|
13
|
+
* Only exported for Testing purposes.
|
|
14
|
+
*/
|
|
15
|
+
export declare function mergeRegisterEsmLoaderHooks(options: SentryNuxtServerOptions): SentryNuxtServerOptions['registerEsmLoaderHooks'];
|
|
9
16
|
//# sourceMappingURL=sdk.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../../../src/server/sdk.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAkB,MAAM,eAAe,CAAC;AAG5D,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../../../src/server/sdk.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAkB,MAAM,eAAe,CAAC;AAG5D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAE/D;;;;GAIG;AACH,wBAAgB,IAAI,CAAC,OAAO,EAAE,uBAAuB,GAAG,MAAM,GAAG,SAAS,CAkCzE;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,uBAAuB,GAC/B,uBAAuB,CAAC,wBAAwB,CAAC,CASnD"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sentry/nuxt",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.26.0",
|
|
4
4
|
"description": "Official Sentry SDK for Nuxt (EXPERIMENTAL)",
|
|
5
5
|
"repository": "git://github.com/getsentry/sentry-javascript.git",
|
|
6
6
|
"homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/nuxt",
|
|
@@ -43,14 +43,14 @@
|
|
|
43
43
|
},
|
|
44
44
|
"dependencies": {
|
|
45
45
|
"@nuxt/kit": "^3.12.2",
|
|
46
|
-
"@sentry/browser": "8.
|
|
47
|
-
"@sentry/core": "8.
|
|
48
|
-
"@sentry/node": "8.
|
|
49
|
-
"@sentry/opentelemetry": "8.
|
|
50
|
-
"@sentry/types": "8.
|
|
51
|
-
"@sentry/utils": "8.
|
|
46
|
+
"@sentry/browser": "8.26.0",
|
|
47
|
+
"@sentry/core": "8.26.0",
|
|
48
|
+
"@sentry/node": "8.26.0",
|
|
49
|
+
"@sentry/opentelemetry": "8.26.0",
|
|
50
|
+
"@sentry/types": "8.26.0",
|
|
51
|
+
"@sentry/utils": "8.26.0",
|
|
52
52
|
"@sentry/vite-plugin": "2.20.1",
|
|
53
|
-
"@sentry/vue": "8.
|
|
53
|
+
"@sentry/vue": "8.26.0"
|
|
54
54
|
},
|
|
55
55
|
"devDependencies": {
|
|
56
56
|
"@nuxt/module-builder": "0.8.1",
|