diff --git a/packages/svelte/package.json b/packages/svelte/package.json index 0ccd07ff99f7..b6c62254eb05 100644 --- a/packages/svelte/package.json +++ b/packages/svelte/package.json @@ -43,7 +43,7 @@ "lint": "run-s lint:prettier lint:eslint", "lint:eslint": "eslint . --cache --cache-location '../../eslintcache/' --format stylish", "lint:prettier": "prettier --check \"{src,test,scripts}/**/*.ts\"", - "test": "jest --passWithNoTests", + "test": "jest", "test:watch": "jest --watch" }, "volta": { diff --git a/packages/svelte/src/index.ts b/packages/svelte/src/index.ts index 7646bbd17d04..8e25b84c4a0c 100644 --- a/packages/svelte/src/index.ts +++ b/packages/svelte/src/index.ts @@ -1 +1,3 @@ -export default null; +export * from '@sentry/browser'; + +export { init } from './sdk'; diff --git a/packages/svelte/src/sdk.ts b/packages/svelte/src/sdk.ts new file mode 100644 index 000000000000..59108e903151 --- /dev/null +++ b/packages/svelte/src/sdk.ts @@ -0,0 +1,20 @@ +import { BrowserOptions, init as browserInit, SDK_VERSION } from '@sentry/browser'; + +/** + * Inits the Svelte SDK + */ +export function init(options: BrowserOptions): void { + options._metadata = options._metadata || {}; + options._metadata.sdk = { + name: 'sentry.javascript.svelte', + packages: [ + { + name: 'npm:@sentry/svelte', + version: SDK_VERSION, + }, + ], + version: SDK_VERSION, + }; + + browserInit(options); +} diff --git a/packages/svelte/test/sdk.test.ts b/packages/svelte/test/sdk.test.ts new file mode 100644 index 000000000000..8ca58bf93bca --- /dev/null +++ b/packages/svelte/test/sdk.test.ts @@ -0,0 +1,31 @@ +import { init as browserInitRaw, SDK_VERSION } from '@sentry/browser'; + +import { init as svelteInit } from '../src/sdk'; + +const browserInit = browserInitRaw as jest.Mock; +jest.mock('@sentry/browser'); + +describe('Initialize Svelte SDk', () => { + afterAll(() => { + jest.clearAllMocks(); + }); + + it('has the correct metadata', () => { + svelteInit({ + dsn: 'https://public@dsn.ingest.sentry.io/1337', + }); + + const expectedMetadata = { + _metadata: { + sdk: { + name: 'sentry.javascript.svelte', + packages: [{ name: 'npm:@sentry/svelte', version: SDK_VERSION }], + version: SDK_VERSION, + }, + }, + }; + + expect(browserInit).toHaveBeenCalledTimes(1); + expect(browserInit).toHaveBeenCalledWith(expect.objectContaining(expectedMetadata)); + }); +});