diff --git a/packages/angular-ivy/src/sdk.ts b/packages/angular-ivy/src/sdk.ts index 3cbf570bcb5d..da73fb49a1a2 100644 --- a/packages/angular-ivy/src/sdk.ts +++ b/packages/angular-ivy/src/sdk.ts @@ -1,8 +1,7 @@ import { VERSION } from '@angular/core'; import type { BrowserOptions } from '@sentry/browser'; -import { getDefaultIntegrations } from '@sentry/browser'; -import { SDK_VERSION, init as browserInit, setContext } from '@sentry/browser'; -import type { SdkMetadata } from '@sentry/types'; +import { getDefaultIntegrations, init as browserInit, setContext } from '@sentry/browser'; +import { applySdkMetadata } from '@sentry/core'; import { logger } from '@sentry/utils'; import { IS_DEBUG_BUILD } from './flags'; @@ -12,7 +11,6 @@ import { IS_DEBUG_BUILD } from './flags'; */ export function init(options: BrowserOptions): void { const opts = { - _metadata: {} as SdkMetadata, // Filter out TryCatch integration as it interferes with our Angular `ErrorHandler`: // TryCatch would catch certain errors before they reach the `ErrorHandler` and thus provide a // lower fidelity error than what `SentryErrorHandler` (see errorhandler.ts) would provide. @@ -25,16 +23,7 @@ export function init(options: BrowserOptions): void { ...options, }; - opts._metadata.sdk = opts._metadata.sdk || { - name: 'sentry.javascript.angular-ivy', - packages: [ - { - name: 'npm:@sentry/angular-ivy', - version: SDK_VERSION, - }, - ], - version: SDK_VERSION, - }; + applySdkMetadata(opts, 'angular-ivy'); checkAndSetAngularVersion(); browserInit(opts); diff --git a/packages/angular/src/sdk.ts b/packages/angular/src/sdk.ts index 78d3d4ba632b..8e6bbc5eb0d6 100755 --- a/packages/angular/src/sdk.ts +++ b/packages/angular/src/sdk.ts @@ -1,8 +1,7 @@ import { VERSION } from '@angular/core'; import type { BrowserOptions } from '@sentry/browser'; -import { getDefaultIntegrations } from '@sentry/browser'; -import { SDK_VERSION, init as browserInit, setContext } from '@sentry/browser'; -import type { SdkMetadata } from '@sentry/types'; +import { getDefaultIntegrations, init as browserInit, setContext } from '@sentry/browser'; +import { applySdkMetadata } from '@sentry/core'; import { logger } from '@sentry/utils'; import { IS_DEBUG_BUILD } from './flags'; @@ -12,7 +11,6 @@ import { IS_DEBUG_BUILD } from './flags'; */ export function init(options: BrowserOptions): void { const opts = { - _metadata: {} as SdkMetadata, // Filter out TryCatch integration as it interferes with our Angular `ErrorHandler`: // TryCatch would catch certain errors before they reach the `ErrorHandler` and thus provide a // lower fidelity error than what `SentryErrorHandler` (see errorhandler.ts) would provide. @@ -25,16 +23,7 @@ export function init(options: BrowserOptions): void { ...options, }; - opts._metadata.sdk = opts._metadata.sdk || { - name: 'sentry.javascript.angular', - packages: [ - { - name: 'npm:@sentry/angular', - version: SDK_VERSION, - }, - ], - version: SDK_VERSION, - }; + applySdkMetadata(opts, 'angular'); checkAndSetAngularVersion(); browserInit(opts); diff --git a/packages/astro/src/client/sdk.ts b/packages/astro/src/client/sdk.ts index 65cc9d54fa9e..8d2b70ee6751 100644 --- a/packages/astro/src/client/sdk.ts +++ b/packages/astro/src/client/sdk.ts @@ -5,11 +5,9 @@ import { init as initBrowserSdk, setTag, } from '@sentry/browser'; -import { hasTracingEnabled } from '@sentry/core'; +import { applySdkMetadata, hasTracingEnabled } from '@sentry/core'; import type { Integration } from '@sentry/types'; -import { applySdkMetadata } from '../common/metadata'; - // Treeshakable guard to remove all code related to tracing declare const __SENTRY_TRACING__: boolean; @@ -24,7 +22,7 @@ export function init(options: BrowserOptions): void { ...options, }; - applySdkMetadata(opts, ['astro', 'browser']); + applySdkMetadata(opts, 'astro', ['astro', 'browser']); initBrowserSdk(opts); diff --git a/packages/astro/src/server/sdk.ts b/packages/astro/src/server/sdk.ts index 2628e94ac9c8..6a529b60b74e 100644 --- a/packages/astro/src/server/sdk.ts +++ b/packages/astro/src/server/sdk.ts @@ -1,14 +1,13 @@ +import { applySdkMetadata } from '@sentry/core'; import type { NodeOptions } from '@sentry/node'; import { init as initNodeSdk, setTag } from '@sentry/node'; -import { applySdkMetadata } from '../common/metadata'; - /** * * @param options */ export function init(options: NodeOptions): void { - applySdkMetadata(options, ['astro', 'node']); + applySdkMetadata(options, 'astro', ['astro', 'node']); initNodeSdk(options); diff --git a/packages/browser/src/client.ts b/packages/browser/src/client.ts index 14d4660b8482..2f1c5ba2fdbb 100644 --- a/packages/browser/src/client.ts +++ b/packages/browser/src/client.ts @@ -1,5 +1,6 @@ import type { Scope } from '@sentry/core'; -import { BaseClient, SDK_VERSION } from '@sentry/core'; +import { applySdkMetadata } from '@sentry/core'; +import { BaseClient } from '@sentry/core'; import type { BrowserClientProfilingOptions, BrowserClientReplayOptions, @@ -50,18 +51,7 @@ export class BrowserClient extends BaseClient { */ public constructor(options: BrowserClientOptions) { const sdkSource = WINDOW.SENTRY_SDK_SOURCE || getSDKSource(); - - options._metadata = options._metadata || {}; - options._metadata.sdk = options._metadata.sdk || { - name: 'sentry.javascript.browser', - packages: [ - { - name: `${sdkSource}:@sentry/browser`, - version: SDK_VERSION, - }, - ], - version: SDK_VERSION, - }; + applySdkMetadata(options, 'browser', ['browser'], sdkSource); super(options); diff --git a/packages/bun/src/client.ts b/packages/bun/src/client.ts index cb77b37b1111..7b3a350f2821 100644 --- a/packages/bun/src/client.ts +++ b/packages/bun/src/client.ts @@ -1,6 +1,7 @@ import * as os from 'os'; import type { ServerRuntimeClientOptions } from '@sentry/core'; -import { SDK_VERSION, ServerRuntimeClient } from '@sentry/core'; +import { applySdkMetadata } from '@sentry/core'; +import { ServerRuntimeClient } from '@sentry/core'; import type { BunClientOptions } from './types'; @@ -16,17 +17,7 @@ export class BunClient extends ServerRuntimeClient { * @param options Configuration options for this SDK. */ public constructor(options: BunClientOptions) { - options._metadata = options._metadata || {}; - options._metadata.sdk = options._metadata.sdk || { - name: 'sentry.javascript.bun', - packages: [ - { - name: 'npm:@sentry/bun', - version: SDK_VERSION, - }, - ], - version: SDK_VERSION, - }; + applySdkMetadata(options, 'bun'); const clientOptions: ServerRuntimeClientOptions = { ...options, diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 871332a20ad6..3eec5fe4ca0a 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -86,6 +86,7 @@ export { spanIsSampled, } from './utils/spanUtils'; export { getRootSpan } from './utils/getRootSpan'; +export { applySdkMetadata } from './utils/sdkMetadata'; export { DEFAULT_ENVIRONMENT } from './constants'; /* eslint-disable deprecation/deprecation */ export { ModuleMetadata } from './integrations/metadata'; diff --git a/packages/astro/src/common/metadata.ts b/packages/core/src/utils/sdkMetadata.ts similarity index 59% rename from packages/astro/src/common/metadata.ts rename to packages/core/src/utils/sdkMetadata.ts index ddd53f27362a..e865861f4f55 100644 --- a/packages/astro/src/common/metadata.ts +++ b/packages/core/src/utils/sdkMetadata.ts @@ -1,7 +1,5 @@ -import { SDK_VERSION } from '@sentry/core'; -import type { Options, SdkInfo } from '@sentry/types'; - -const PACKAGE_NAME_PREFIX = 'npm:@sentry/'; +import type { Options } from '@sentry/types'; +import { SDK_VERSION } from '../version'; /** * A builder for the SDK metadata in the options for the SDK initialization. @@ -16,16 +14,19 @@ const PACKAGE_NAME_PREFIX = 'npm:@sentry/'; * @param options SDK options object that gets mutated * @param names list of package names */ -export function applySdkMetadata(options: Options, names: string[]): void { - options._metadata = options._metadata || {}; - options._metadata.sdk = - options._metadata.sdk || - ({ - name: 'sentry.javascript.astro', +export function applySdkMetadata(options: Options, name: string, names = [name], source = 'npm'): void { + const metadata = options._metadata || {}; + + if (!metadata.sdk) { + metadata.sdk = { + name: `sentry.javascript.${name}`, packages: names.map(name => ({ - name: `${PACKAGE_NAME_PREFIX}${name}`, + name: `${source}:@sentry/${name}`, version: SDK_VERSION, })), version: SDK_VERSION, - } as SdkInfo); + }; + } + + options._metadata = metadata; } diff --git a/packages/ember/addon/index.ts b/packages/ember/addon/index.ts index 009ab2dfe6e0..07b13697676e 100644 --- a/packages/ember/addon/index.ts +++ b/packages/ember/addon/index.ts @@ -5,7 +5,7 @@ import { getOwnConfig, isDevelopingApp, macroCondition } from '@embroider/macros import { startSpan } from '@sentry/browser'; import type { BrowserOptions } from '@sentry/browser'; import * as Sentry from '@sentry/browser'; -import { SDK_VERSION } from '@sentry/browser'; +import { applySdkMetadata } from '@sentry/core'; import { GLOBAL_OBJ } from '@sentry/utils'; import Ember from 'ember'; @@ -33,17 +33,7 @@ export function InitSentryForEmber(_runtimeConfig?: BrowserOptions): void { Object.assign(environmentConfig.sentry, _runtimeConfig || {}); const initConfig = Object.assign({}, environmentConfig.sentry); - initConfig._metadata = initConfig._metadata || {}; - initConfig._metadata.sdk = { - name: 'sentry.javascript.ember', - packages: [ - { - name: 'npm:@sentry/ember', - version: SDK_VERSION, - }, - ], - version: SDK_VERSION, - }; + applySdkMetadata(initConfig, 'ember'); // Persist Sentry init options so they are identical when performance initializers call init again. const sentryInitConfig = _getSentryInitConfig(); diff --git a/packages/gatsby/src/sdk.ts b/packages/gatsby/src/sdk.ts index 26c9ab831da3..d615daa8682a 100644 --- a/packages/gatsby/src/sdk.ts +++ b/packages/gatsby/src/sdk.ts @@ -1,4 +1,5 @@ -import { SDK_VERSION, init as reactInit } from '@sentry/react'; +import { applySdkMetadata } from '@sentry/core'; +import { init as reactInit } from '@sentry/react'; import { getIntegrationsFromOptions } from './utils/integrations'; import type { GatsbyOptions } from './utils/types'; @@ -7,18 +8,7 @@ import type { GatsbyOptions } from './utils/types'; * Inits the Sentry Gatsby SDK. */ export function init(options: GatsbyOptions): void { - options._metadata = options._metadata || {}; - options._metadata.sdk = options._metadata.sdk || { - name: 'sentry.javascript.gatsby', - packages: [ - { - name: 'npm:@sentry/gatsby', - version: SDK_VERSION, - }, - ], - version: SDK_VERSION, - }; - + applySdkMetadata(options, 'gatsby'); const integrations = getIntegrationsFromOptions(options); reactInit({ ...options, diff --git a/packages/nextjs/src/client/index.ts b/packages/nextjs/src/client/index.ts index f9a2fe5c9b97..14c788a44307 100644 --- a/packages/nextjs/src/client/index.ts +++ b/packages/nextjs/src/client/index.ts @@ -1,4 +1,4 @@ -import { hasTracingEnabled } from '@sentry/core'; +import { applySdkMetadata, hasTracingEnabled } from '@sentry/core'; import type { BrowserOptions } from '@sentry/react'; import { Integrations as OriginalIntegrations, @@ -10,7 +10,6 @@ import type { EventProcessor, Integration } from '@sentry/types'; import { devErrorSymbolicationEventProcessor } from '../common/devErrorSymbolicationEventProcessor'; import { getVercelEnv } from '../common/getVercelEnv'; -import { buildMetadata } from '../common/metadata'; import { BrowserTracing } from './browserTracingIntegration'; import { rewriteFramesIntegration } from './rewriteFramesIntegration'; import { applyTunnelRouteOption } from './tunnelRoute'; @@ -50,7 +49,7 @@ export function init(options: BrowserOptions): void { fixBrowserTracingIntegration(opts); applyTunnelRouteOption(opts); - buildMetadata(opts, ['nextjs', 'react']); + applySdkMetadata(opts, 'nextjs', ['nextjs', 'react']); reactInit(opts); diff --git a/packages/nextjs/src/common/metadata.ts b/packages/nextjs/src/common/metadata.ts deleted file mode 100644 index 9216c6eaec07..000000000000 --- a/packages/nextjs/src/common/metadata.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { SDK_VERSION } from '@sentry/core'; -import type { Options, SdkInfo } from '@sentry/types'; - -const PACKAGE_NAME_PREFIX = 'npm:@sentry/'; - -/** - * A builder for the SDK metadata in the options for the SDK initialization. - * @param options sdk options object that gets mutated - * @param names list of package names - */ -export function buildMetadata(options: Options, names: string[]): void { - options._metadata = options._metadata || {}; - options._metadata.sdk = - options._metadata.sdk || - ({ - name: 'sentry.javascript.nextjs', - packages: names.map(name => ({ - name: `${PACKAGE_NAME_PREFIX}${name}`, - version: SDK_VERSION, - })), - version: SDK_VERSION, - } as SdkInfo); -} diff --git a/packages/nextjs/src/edge/index.ts b/packages/nextjs/src/edge/index.ts index a322dbed07df..42599277c451 100644 --- a/packages/nextjs/src/edge/index.ts +++ b/packages/nextjs/src/edge/index.ts @@ -1,5 +1,4 @@ -import { SDK_VERSION, addTracingExtensions } from '@sentry/core'; -import type { SdkMetadata } from '@sentry/types'; +import { addTracingExtensions, applySdkMetadata } from '@sentry/core'; import type { VercelEdgeOptions } from '@sentry/vercel-edge'; import { getDefaultIntegrations, init as vercelEdgeInit } from '@sentry/vercel-edge'; @@ -21,21 +20,11 @@ export function init(options: VercelEdgeOptions = {}): void { const customDefaultIntegrations = [...getDefaultIntegrations(options), rewriteFramesIntegration()]; const opts = { - _metadata: {} as SdkMetadata, defaultIntegrations: customDefaultIntegrations, ...options, }; - opts._metadata.sdk = opts._metadata.sdk || { - name: 'sentry.javascript.nextjs', - packages: [ - { - name: 'npm:@sentry/nextjs', - version: SDK_VERSION, - }, - ], - version: SDK_VERSION, - }; + applySdkMetadata(opts, 'nextjs'); vercelEdgeInit(opts); } diff --git a/packages/nextjs/src/server/index.ts b/packages/nextjs/src/server/index.ts index ca1167ecfcb0..1373bb7a0905 100644 --- a/packages/nextjs/src/server/index.ts +++ b/packages/nextjs/src/server/index.ts @@ -1,4 +1,4 @@ -import { addTracingExtensions, getClient } from '@sentry/core'; +import { addTracingExtensions, applySdkMetadata, getClient } from '@sentry/core'; import type { NodeOptions } from '@sentry/node'; import { Integrations as OriginalIntegrations, @@ -12,7 +12,6 @@ import { logger } from '@sentry/utils'; import { DEBUG_BUILD } from '../common/debug-build'; import { devErrorSymbolicationEventProcessor } from '../common/devErrorSymbolicationEventProcessor'; import { getVercelEnv } from '../common/getVercelEnv'; -import { buildMetadata } from '../common/metadata'; import { isBuild } from '../common/utils/isBuild'; import { Http } from './httpIntegration'; import { OnUncaughtException } from './onUncaughtExceptionIntegration'; @@ -109,7 +108,7 @@ export function init(options: NodeOptions): void { return; } - buildMetadata(opts, ['nextjs', 'node']); + applySdkMetadata(opts, 'nextjs', ['nextjs', 'node']); nodeInit(opts); diff --git a/packages/node-experimental/src/sdk/client.ts b/packages/node-experimental/src/sdk/client.ts index 6f1012bdb422..15d5720e4ac9 100644 --- a/packages/node-experimental/src/sdk/client.ts +++ b/packages/node-experimental/src/sdk/client.ts @@ -3,6 +3,7 @@ import { NodeClient, SDK_VERSION } from '@sentry/node'; import type { Tracer } from '@opentelemetry/api'; import { trace } from '@opentelemetry/api'; import type { BasicTracerProvider } from '@opentelemetry/sdk-trace-base'; +import { applySdkMetadata } from '@sentry/core'; import type { CaptureContext, Event, EventHint } from '@sentry/types'; import { Scope, getIsolationScope } from './scope'; @@ -12,17 +13,7 @@ export class NodeExperimentalClient extends NodeClient { private _tracer: Tracer | undefined; public constructor(options: ConstructorParameters[0]) { - options._metadata = options._metadata || {}; - options._metadata.sdk = options._metadata.sdk || { - name: 'sentry.javascript.node-experimental', - packages: [ - { - name: 'npm:@sentry/node-experimental', - version: SDK_VERSION, - }, - ], - version: SDK_VERSION, - }; + applySdkMetadata(options, 'node-experimental'); super(options); } diff --git a/packages/node/src/client.ts b/packages/node/src/client.ts index 70fcd043d537..8611f902ab0e 100644 --- a/packages/node/src/client.ts +++ b/packages/node/src/client.ts @@ -1,7 +1,7 @@ import * as os from 'os'; import { TextEncoder } from 'util'; import type { ServerRuntimeClientOptions } from '@sentry/core'; -import { SDK_VERSION, ServerRuntimeClient } from '@sentry/core'; +import { ServerRuntimeClient, applySdkMetadata } from '@sentry/core'; import type { NodeClientOptions } from './types'; @@ -17,17 +17,7 @@ export class NodeClient extends ServerRuntimeClient { * @param options Configuration options for this SDK. */ public constructor(options: NodeClientOptions) { - options._metadata = options._metadata || {}; - options._metadata.sdk = options._metadata.sdk || { - name: 'sentry.javascript.node', - packages: [ - { - name: 'npm:@sentry/node', - version: SDK_VERSION, - }, - ], - version: SDK_VERSION, - }; + applySdkMetadata(options, 'node'); // Until node supports global TextEncoder in all versions we support, we are forced to pass it from util options.transportOptions = { diff --git a/packages/react/src/sdk.ts b/packages/react/src/sdk.ts index eeba4c58907d..24e75e8556f5 100644 --- a/packages/react/src/sdk.ts +++ b/packages/react/src/sdk.ts @@ -1,25 +1,16 @@ import type { BrowserOptions } from '@sentry/browser'; -import { SDK_VERSION, init as browserInit } from '@sentry/browser'; -import type { SdkMetadata } from '@sentry/types'; +import { init as browserInit } from '@sentry/browser'; +import { applySdkMetadata } from '@sentry/core'; /** * Inits the React SDK */ export function init(options: BrowserOptions): void { const opts = { - _metadata: {} as SdkMetadata, ...options, }; - opts._metadata.sdk = opts._metadata.sdk || { - name: 'sentry.javascript.react', - packages: [ - { - name: 'npm:@sentry/react', - version: SDK_VERSION, - }, - ], - version: SDK_VERSION, - }; + applySdkMetadata(opts, 'react'); + browserInit(opts); } diff --git a/packages/remix/src/index.client.tsx b/packages/remix/src/index.client.tsx index 63b39253416d..9c619ff1d851 100644 --- a/packages/remix/src/index.client.tsx +++ b/packages/remix/src/index.client.tsx @@ -1,13 +1,13 @@ +import { applySdkMetadata } from '@sentry/core'; import { getCurrentScope, init as reactInit } from '@sentry/react'; -import { buildMetadata } from './utils/metadata'; import type { RemixOptions } from './utils/remixOptions'; export { remixRouterInstrumentation, withSentry } from './client/performance'; export { captureRemixErrorBoundaryError } from './client/errors'; export * from '@sentry/react'; export function init(options: RemixOptions): void { - buildMetadata(options, ['remix', 'react']); + applySdkMetadata(options, 'remix', ['remix', 'react']); options.environment = options.environment || process.env.NODE_ENV; reactInit(options); diff --git a/packages/remix/src/index.server.ts b/packages/remix/src/index.server.ts index ef61c9b2285d..240a7d3787e1 100644 --- a/packages/remix/src/index.server.ts +++ b/packages/remix/src/index.server.ts @@ -1,3 +1,4 @@ +import { applySdkMetadata } from '@sentry/core'; import type { NodeOptions } from '@sentry/node'; import { getClient } from '@sentry/node'; import { getCurrentScope, init as nodeInit } from '@sentry/node'; @@ -5,7 +6,6 @@ import { logger } from '@sentry/utils'; import { DEBUG_BUILD } from './utils/debug-build'; import { instrumentServer } from './utils/instrumentServer'; -import { buildMetadata } from './utils/metadata'; import type { RemixOptions } from './utils/remixOptions'; // We need to explicitly export @sentry/node as they end up under `default` in ESM builds @@ -87,7 +87,7 @@ function sdkAlreadyInitialized(): boolean { /** Initializes Sentry Remix SDK on Node. */ export function init(options: RemixOptions): void { - buildMetadata(options, ['remix', 'node']); + applySdkMetadata(options, 'remix', ['remix', 'node']); if (sdkAlreadyInitialized()) { DEBUG_BUILD && logger.log('SDK already initialized'); diff --git a/packages/remix/src/utils/metadata.ts b/packages/remix/src/utils/metadata.ts deleted file mode 100644 index 3270e1c983cc..000000000000 --- a/packages/remix/src/utils/metadata.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { SDK_VERSION } from '@sentry/core'; -import type { SdkInfo } from '@sentry/types'; - -import type { RemixOptions } from './remixOptions'; - -const PACKAGE_NAME_PREFIX = 'npm:@sentry/'; - -/** - * A builder for the SDK metadata in the options for the SDK initialization. - * @param options sdk options object that gets mutated - * @param names list of package names - */ -export function buildMetadata(options: RemixOptions, names: string[]): void { - options._metadata = options._metadata || {}; - options._metadata.sdk = - options._metadata.sdk || - ({ - name: 'sentry.javascript.remix', - packages: names.map(name => ({ - name: `${PACKAGE_NAME_PREFIX}${name}`, - version: SDK_VERSION, - })), - version: SDK_VERSION, - } as SdkInfo); -} diff --git a/packages/svelte/src/sdk.ts b/packages/svelte/src/sdk.ts index fb6cb575cdcd..30d35d7963f4 100644 --- a/packages/svelte/src/sdk.ts +++ b/packages/svelte/src/sdk.ts @@ -1,26 +1,18 @@ import type { BrowserOptions } from '@sentry/browser'; -import { SDK_VERSION, addEventProcessor, init as browserInit } from '@sentry/browser'; -import type { EventProcessor, SdkMetadata } from '@sentry/types'; +import { addEventProcessor, init as browserInit } from '@sentry/browser'; +import { applySdkMetadata } from '@sentry/core'; +import type { EventProcessor } from '@sentry/types'; import { getDomElement } from '@sentry/utils'; /** * Inits the Svelte SDK */ export function init(options: BrowserOptions): void { const opts = { - _metadata: {} as SdkMetadata, ...options, }; - opts._metadata.sdk = opts._metadata.sdk || { - name: 'sentry.javascript.svelte', - packages: [ - { - name: 'npm:@sentry/svelte', - version: SDK_VERSION, - }, - ], - version: SDK_VERSION, - }; + applySdkMetadata(opts, 'svelte'); + browserInit(opts); detectAndReportSvelteKit(); diff --git a/packages/sveltekit/src/client/sdk.ts b/packages/sveltekit/src/client/sdk.ts index ebfd1f281404..daf8cd3ed7d2 100644 --- a/packages/sveltekit/src/client/sdk.ts +++ b/packages/sveltekit/src/client/sdk.ts @@ -1,9 +1,8 @@ -import { hasTracingEnabled } from '@sentry/core'; +import { applySdkMetadata, hasTracingEnabled } from '@sentry/core'; import type { BrowserOptions } from '@sentry/svelte'; import { BrowserTracing, WINDOW, getCurrentScope, init as initSvelteSdk } from '@sentry/svelte'; import { addOrUpdateIntegration } from '@sentry/utils'; -import { applySdkMetadata } from '../common/metadata'; import { svelteKitRoutingInstrumentation } from './router'; type WindowWithSentryFetchProxy = typeof WINDOW & { @@ -19,7 +18,7 @@ declare const __SENTRY_TRACING__: boolean; * @param options Configuration options for the SDK. */ export function init(options: BrowserOptions): void { - applySdkMetadata(options, ['sveltekit', 'svelte']); + applySdkMetadata(options, 'sveltekit', ['sveltekit', 'svelte']); addClientIntegrations(options); diff --git a/packages/sveltekit/src/common/metadata.ts b/packages/sveltekit/src/common/metadata.ts deleted file mode 100644 index d6acf72510cb..000000000000 --- a/packages/sveltekit/src/common/metadata.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { SDK_VERSION } from '@sentry/core'; -import type { Options, SdkInfo } from '@sentry/types'; - -const PACKAGE_NAME_PREFIX = 'npm:@sentry/'; - -/** - * A builder for the SDK metadata in the options for the SDK initialization. - * - * Note: This function is identical to `buildMetadata` in Remix and NextJS. - * We don't extract it for bundle size reasons. - * If you make changes to this function consider updating the others as well. - * - * @param options SDK options object that gets mutated - * @param names list of package names - */ -export function applySdkMetadata(options: Options, names: string[]): void { - options._metadata = options._metadata || {}; - options._metadata.sdk = - options._metadata.sdk || - ({ - name: 'sentry.javascript.sveltekit', - packages: names.map(name => ({ - name: `${PACKAGE_NAME_PREFIX}${name}`, - version: SDK_VERSION, - })), - version: SDK_VERSION, - } as SdkInfo); -} diff --git a/packages/sveltekit/src/server/sdk.ts b/packages/sveltekit/src/server/sdk.ts index b4e216b271ca..1001e922a031 100644 --- a/packages/sveltekit/src/server/sdk.ts +++ b/packages/sveltekit/src/server/sdk.ts @@ -1,10 +1,9 @@ -import { getCurrentScope } from '@sentry/core'; +import { applySdkMetadata, getCurrentScope } from '@sentry/core'; import { RewriteFrames } from '@sentry/integrations'; import type { NodeOptions } from '@sentry/node'; import { init as initNodeSdk } from '@sentry/node'; import { addOrUpdateIntegration } from '@sentry/utils'; -import { applySdkMetadata } from '../common/metadata'; import { rewriteFramesIteratee } from './utils'; /** @@ -12,7 +11,7 @@ import { rewriteFramesIteratee } from './utils'; * @param options */ export function init(options: NodeOptions): void { - applySdkMetadata(options, ['sveltekit', 'node']); + applySdkMetadata(options, 'sveltekit', ['sveltekit', 'node']); addServerIntegrations(options); diff --git a/packages/vercel-edge/src/client.ts b/packages/vercel-edge/src/client.ts index 2ded776719b4..b2c7416130bc 100644 --- a/packages/vercel-edge/src/client.ts +++ b/packages/vercel-edge/src/client.ts @@ -1,5 +1,6 @@ import type { ServerRuntimeClientOptions } from '@sentry/core'; -import { SDK_VERSION, ServerRuntimeClient } from '@sentry/core'; +import { applySdkMetadata } from '@sentry/core'; +import { ServerRuntimeClient } from '@sentry/core'; import type { VercelEdgeClientOptions } from './types'; @@ -19,17 +20,8 @@ export class VercelEdgeClient extends ServerRuntimeClient