From 8fd35de795909befe327d0986fe118f091f9a90e Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Mon, 13 May 2024 13:55:53 +0200 Subject: [PATCH 1/2] feat(node): No-code init via `--import=@sentry/node/init` --- .../suites/no-code/app.js | 3 ++ .../suites/no-code/app.mjs | 3 ++ .../suites/no-code/test.ts | 37 +++++++++++++++++++ packages/node/package.json | 8 ++++ packages/node/rollup.npm.config.mjs | 1 + packages/node/src/init.ts | 9 +++++ 6 files changed, 61 insertions(+) create mode 100644 dev-packages/node-integration-tests/suites/no-code/app.js create mode 100644 dev-packages/node-integration-tests/suites/no-code/app.mjs create mode 100644 dev-packages/node-integration-tests/suites/no-code/test.ts create mode 100644 packages/node/src/init.ts diff --git a/dev-packages/node-integration-tests/suites/no-code/app.js b/dev-packages/node-integration-tests/suites/no-code/app.js new file mode 100644 index 000000000000..cb1937007297 --- /dev/null +++ b/dev-packages/node-integration-tests/suites/no-code/app.js @@ -0,0 +1,3 @@ +setTimeout(() => { + throw new Error('Test error'); +}, 1000); diff --git a/dev-packages/node-integration-tests/suites/no-code/app.mjs b/dev-packages/node-integration-tests/suites/no-code/app.mjs new file mode 100644 index 000000000000..cb1937007297 --- /dev/null +++ b/dev-packages/node-integration-tests/suites/no-code/app.mjs @@ -0,0 +1,3 @@ +setTimeout(() => { + throw new Error('Test error'); +}, 1000); diff --git a/dev-packages/node-integration-tests/suites/no-code/test.ts b/dev-packages/node-integration-tests/suites/no-code/test.ts new file mode 100644 index 000000000000..2647c6db7dac --- /dev/null +++ b/dev-packages/node-integration-tests/suites/no-code/test.ts @@ -0,0 +1,37 @@ +import { conditionalTest } from '../../utils'; +import { cleanupChildProcesses, createRunner } from '../../utils/runner'; + +const EVENT = { + exception: { + values: [ + { + type: 'Error', + value: 'Test error', + }, + ], + }, +} + +describe('no-code init', () => { + afterAll(() => { + cleanupChildProcesses(); + }); + + test('CJS', done => { + createRunner(__dirname, 'app.js') + .withFlags('--require=@sentry/node/init') + .withMockSentryServer() + .expect({ event: EVENT }) + .start(done); + }); + + conditionalTest({ min: 18 })('--import', () => { + test('ESM', done => { + createRunner(__dirname, 'app.mjs') + .withFlags('--import=@sentry/node/init') + .withMockSentryServer() + .expect({ event: EVENT }) + .start(done); + }); + }); +}); diff --git a/packages/node/package.json b/packages/node/package.json index 86ade617c440..22dce767adc2 100644 --- a/packages/node/package.json +++ b/packages/node/package.json @@ -41,6 +41,14 @@ "import": { "default": "./build/loader-hook.mjs" } + }, + "./init":{ + "import": { + "default": "./build/esm/init.js" + }, + "require": { + "default": "./build/cjs/init.js" + } } }, "typesVersions": { diff --git a/packages/node/rollup.npm.config.mjs b/packages/node/rollup.npm.config.mjs index c4a621cf7ee3..99ba1046c239 100644 --- a/packages/node/rollup.npm.config.mjs +++ b/packages/node/rollup.npm.config.mjs @@ -19,6 +19,7 @@ export default [ localVariablesWorkerConfig, ...makeNPMConfigVariants( makeBaseNPMConfig({ + entrypoints: ['src/index.ts', 'src/init.ts'], packageSpecificConfig: { output: { // set exports to 'named' or 'auto' so that rollup doesn't warn diff --git a/packages/node/src/init.ts b/packages/node/src/init.ts new file mode 100644 index 000000000000..0fc5e80c7e09 --- /dev/null +++ b/packages/node/src/init.ts @@ -0,0 +1,9 @@ +import { init } from './sdk/init'; + +/** + * The @sentry/node/init export can be used with the node --import and --require args to initialize the SDK entirely via + * environment variables. + * + * > SENTRY_DSN=https://examplePublicKey@o0.ingest.sentry.io/0 node --import=@sentry/node/init app.mjs + */ +init(); From fdff91b2c28c82e3c1c086ac4c26c76f912fe5de Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Wed, 22 May 2024 01:14:23 +0200 Subject: [PATCH 2/2] Lint and review --- dev-packages/node-integration-tests/suites/no-code/test.ts | 2 +- packages/node/src/init.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dev-packages/node-integration-tests/suites/no-code/test.ts b/dev-packages/node-integration-tests/suites/no-code/test.ts index 2647c6db7dac..dfaae9de7cdc 100644 --- a/dev-packages/node-integration-tests/suites/no-code/test.ts +++ b/dev-packages/node-integration-tests/suites/no-code/test.ts @@ -10,7 +10,7 @@ const EVENT = { }, ], }, -} +}; describe('no-code init', () => { afterAll(() => { diff --git a/packages/node/src/init.ts b/packages/node/src/init.ts index 0fc5e80c7e09..245ae8573afa 100644 --- a/packages/node/src/init.ts +++ b/packages/node/src/init.ts @@ -4,6 +4,6 @@ import { init } from './sdk/init'; * The @sentry/node/init export can be used with the node --import and --require args to initialize the SDK entirely via * environment variables. * - * > SENTRY_DSN=https://examplePublicKey@o0.ingest.sentry.io/0 node --import=@sentry/node/init app.mjs + * > SENTRY_DSN=https://examplePublicKey@o0.ingest.sentry.io/0 SENTRY_TRACES_SAMPLE_RATE=1.0 node --import=@sentry/node/init app.mjs */ init();