From b31cbc94d0e8104a84b07212f3c6f66beb7591c6 Mon Sep 17 00:00:00 2001 From: Andrei Borza Date: Tue, 15 Jul 2025 12:55:00 +0200 Subject: [PATCH 1/3] fix(node-core): Apply correct SDK metadata From 64d056a0ddc3fd04fbb2b17a7bf9d3a30fbbaac2 Mon Sep 17 00:00:00 2001 From: Andrei Borza Date: Tue, 15 Jul 2025 12:55:16 +0200 Subject: [PATCH 2/3] Add tests for SDK metadata to node and node-core --- packages/node-core/test/sdk/init.test.ts | 20 +++++++++++++++++++- packages/node/test/sdk/init.test.ts | 20 +++++++++++++++++++- 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/packages/node-core/test/sdk/init.test.ts b/packages/node-core/test/sdk/init.test.ts index dc523a843b92..02115fa26ff7 100644 --- a/packages/node-core/test/sdk/init.test.ts +++ b/packages/node-core/test/sdk/init.test.ts @@ -1,5 +1,5 @@ import type { Integration } from '@sentry/core'; -import { logger } from '@sentry/core'; +import { logger, SDK_VERSION } from '@sentry/core'; import * as SentryOpentelemetry from '@sentry/opentelemetry'; import { type Mock, afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; import { getClient } from '../../src/'; @@ -31,6 +31,24 @@ describe('init()', () => { vi.clearAllMocks(); }); + describe('metadata', () => { + it('has the correct metadata', () => { + init({ dsn: PUBLIC_DSN }); + + const client = getClient(); + + expect(client?.getSdkMetadata()).toEqual( + expect.objectContaining({ + sdk: { + name: 'sentry.javascript.node-core', + version: SDK_VERSION, + packages: [{ name: 'npm:@sentry/node-core', version: SDK_VERSION }], + }, + }), + ); + }); + }); + describe('integrations', () => { it("doesn't install default integrations if told not to", () => { init({ dsn: PUBLIC_DSN, defaultIntegrations: false }); diff --git a/packages/node/test/sdk/init.test.ts b/packages/node/test/sdk/init.test.ts index 67bf2cdbde65..1aa11387f5c3 100644 --- a/packages/node/test/sdk/init.test.ts +++ b/packages/node/test/sdk/init.test.ts @@ -1,5 +1,5 @@ import type { Integration } from '@sentry/core'; -import { logger } from '@sentry/core'; +import { logger, SDK_VERSION } from '@sentry/core'; import * as SentryOpentelemetry from '@sentry/opentelemetry'; import { type Mock, type MockInstance, afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; import { getClient, NodeClient, validateOpenTelemetrySetup } from '../../src/'; @@ -38,6 +38,24 @@ describe('init()', () => { vi.clearAllMocks(); }); + describe('metadata', () => { + it('has the correct metadata', () => { + init({ dsn: PUBLIC_DSN }); + + const client = getClient(); + + expect(client?.getSdkMetadata()).toEqual( + expect.objectContaining({ + sdk: { + name: 'sentry.javascript.node', + version: SDK_VERSION, + packages: [{ name: 'npm:@sentry/node', version: SDK_VERSION }], + }, + }), + ); + }); + }); + describe('integrations', () => { it("doesn't install default integrations if told not to", () => { init({ dsn: PUBLIC_DSN, defaultIntegrations: false }); From 88a975aef0e09ee1b1b0c0701b83c128518b81e5 Mon Sep 17 00:00:00 2001 From: Andrei Borza Date: Tue, 15 Jul 2025 12:56:58 +0200 Subject: [PATCH 3/3] Apply correct SDK metadata to node and node-core --- packages/node-core/src/sdk/index.ts | 3 +++ packages/node/src/sdk/index.ts | 4 +++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/node-core/src/sdk/index.ts b/packages/node-core/src/sdk/index.ts index 47c4256c5c2f..9ec30a892927 100644 --- a/packages/node-core/src/sdk/index.ts +++ b/packages/node-core/src/sdk/index.ts @@ -1,5 +1,6 @@ import type { Integration, Options } from '@sentry/core'; import { + applySdkMetadata, consoleIntegration, consoleSandbox, functionToStringIntegration, @@ -120,6 +121,8 @@ function _init( ); } + applySdkMetadata(options, 'node-core'); + const client = new NodeClient(options); // The client is on the current scope, from where it generally is inherited getCurrentScope().setClient(client); diff --git a/packages/node/src/sdk/index.ts b/packages/node/src/sdk/index.ts index 7afa959b2ce8..6942c6500f84 100644 --- a/packages/node/src/sdk/index.ts +++ b/packages/node/src/sdk/index.ts @@ -1,5 +1,5 @@ import type { Integration, Options } from '@sentry/core'; -import { hasSpansEnabled } from '@sentry/core'; +import { applySdkMetadata, hasSpansEnabled } from '@sentry/core'; import type { NodeClient } from '@sentry/node-core'; import { getDefaultIntegrations as getNodeCoreDefaultIntegrations, @@ -50,6 +50,8 @@ function _init( options: NodeOptions | undefined = {}, getDefaultIntegrationsImpl: (options: Options) => Integration[], ): NodeClient | undefined { + applySdkMetadata(options, 'node'); + const client = initNodeCore({ ...options, // Only use Node SDK defaults if none provided