From a5e862af225b32a2718db8955e5ae0fe02639655 Mon Sep 17 00:00:00 2001 From: Andrei Borza Date: Thu, 30 Jul 2026 14:32:03 +0200 Subject: [PATCH] ref(rollup-utils): Remove legacy makeOtelLoaders All framework SDKs now use `makeOrchestrionLoader`, so the iitm-era `makeOtelLoaders` util and its hook templates are no longer used. --- .../code/otelEsmImportHookTemplate.js | 5 - ...mportHookWithDiagnosticsChannelTemplate.js | 10 -- .../code/otelEsmLoaderHookTemplate.js | 2 - .../code/sentryNodeEsmImportHookTemplate.js | 2 - .../code/sentryNodeEsmLoaderHookTemplate.js | 1 - dev-packages/rollup-utils/npmHelpers.mjs | 94 ------------------- 6 files changed, 114 deletions(-) delete mode 100644 dev-packages/rollup-utils/code/otelEsmImportHookTemplate.js delete mode 100644 dev-packages/rollup-utils/code/otelEsmImportHookWithDiagnosticsChannelTemplate.js delete mode 100644 dev-packages/rollup-utils/code/otelEsmLoaderHookTemplate.js delete mode 100644 dev-packages/rollup-utils/code/sentryNodeEsmImportHookTemplate.js delete mode 100644 dev-packages/rollup-utils/code/sentryNodeEsmLoaderHookTemplate.js diff --git a/dev-packages/rollup-utils/code/otelEsmImportHookTemplate.js b/dev-packages/rollup-utils/code/otelEsmImportHookTemplate.js deleted file mode 100644 index 35c805c137f7..000000000000 --- a/dev-packages/rollup-utils/code/otelEsmImportHookTemplate.js +++ /dev/null @@ -1,5 +0,0 @@ -import { register } from 'module'; - -register('@opentelemetry/instrumentation/hook.mjs', import.meta.url); - -globalThis._sentryEsmLoaderHookRegistered = true; diff --git a/dev-packages/rollup-utils/code/otelEsmImportHookWithDiagnosticsChannelTemplate.js b/dev-packages/rollup-utils/code/otelEsmImportHookWithDiagnosticsChannelTemplate.js deleted file mode 100644 index e221b22cbd4a..000000000000 --- a/dev-packages/rollup-utils/code/otelEsmImportHookWithDiagnosticsChannelTemplate.js +++ /dev/null @@ -1,10 +0,0 @@ -// Like otelEsmImportHookTemplate.js, but also registers the diagnostics-channel -// injection so that `node --import @sentry/node/import app.js` injects the -// channels unconditionally (they are only *subscribed* to when the app opts in -// via `experimentalUseDiagnosticsChannelInjection()`). -import '@sentry/server-utils/orchestrion/import-hook'; -import { register } from 'module'; - -register('@opentelemetry/instrumentation/hook.mjs', import.meta.url); - -globalThis._sentryEsmLoaderHookRegistered = true; diff --git a/dev-packages/rollup-utils/code/otelEsmLoaderHookTemplate.js b/dev-packages/rollup-utils/code/otelEsmLoaderHookTemplate.js deleted file mode 100644 index 51c72d9d7192..000000000000 --- a/dev-packages/rollup-utils/code/otelEsmLoaderHookTemplate.js +++ /dev/null @@ -1,2 +0,0 @@ -import { getFormat, getSource, load, resolve } from '@opentelemetry/instrumentation/hook.mjs'; -export { getFormat, getSource, load, resolve }; diff --git a/dev-packages/rollup-utils/code/sentryNodeEsmImportHookTemplate.js b/dev-packages/rollup-utils/code/sentryNodeEsmImportHookTemplate.js deleted file mode 100644 index a071457406a7..000000000000 --- a/dev-packages/rollup-utils/code/sentryNodeEsmImportHookTemplate.js +++ /dev/null @@ -1,2 +0,0 @@ -import { getFormat, getSource, load, resolve } from '@sentry/node/loader-hook'; -export { getFormat, getSource, load, resolve }; diff --git a/dev-packages/rollup-utils/code/sentryNodeEsmLoaderHookTemplate.js b/dev-packages/rollup-utils/code/sentryNodeEsmLoaderHookTemplate.js deleted file mode 100644 index d5167fd15bf9..000000000000 --- a/dev-packages/rollup-utils/code/sentryNodeEsmLoaderHookTemplate.js +++ /dev/null @@ -1 +0,0 @@ -import '@sentry/node/import-hook'; diff --git a/dev-packages/rollup-utils/npmHelpers.mjs b/dev-packages/rollup-utils/npmHelpers.mjs index 41d6cbc2a354..064dd6f4e8e9 100644 --- a/dev-packages/rollup-utils/npmHelpers.mjs +++ b/dev-packages/rollup-utils/npmHelpers.mjs @@ -189,100 +189,6 @@ export function makeNPMConfigVariants(baseConfig, options = {}) { ); } -/** - * This creates a loader file at the target location as part of the rollup build. - * This loader script can then be used in combination with various Node.js flags (like --import=...) to monkeypatch 3rd party modules. - * - * @param {string} outputFolder Build output folder. - * @param {'otel' | 'sentry-node'} hookVariant Which hook template to use. - * @param {{ injectDiagnosticsChannel?: boolean }} [options] When `injectDiagnosticsChannel` - * is set (only valid for the `'otel'` variant), the generated `import-hook.mjs` - * additionally imports `@sentry/server-utils/orchestrion/import-hook`, which - * registers the diagnostics-channel injection. Used by `@sentry/node` so that - * `node --import @sentry/node/import` injects the channels unconditionally. - */ -export function makeOtelLoaders(outputFolder, hookVariant, options = {}) { - if (hookVariant !== 'otel' && hookVariant !== 'sentry-node') { - throw new Error('hookVariant is neither "otel" nor "sentry-node". Pick one.'); - } - - const { injectDiagnosticsChannel = false } = options; - if (injectDiagnosticsChannel && hookVariant !== 'otel') { - throw new Error('injectDiagnosticsChannel is only supported with the "otel" hookVariant.'); - } - - const expectedRegisterLoaderLocation = `${outputFolder}/import-hook.mjs`; - const foundRegisterLoaderExport = Object.keys(packageDotJSON.exports ?? {}).some(key => { - return packageDotJSON?.exports?.[key]?.import?.default === expectedRegisterLoaderLocation; - }); - if (!foundRegisterLoaderExport) { - throw new Error( - `You used the makeOtelLoaders() rollup utility without specifying the import hook inside \`exports[something].import.default\`. Please add "${expectedRegisterLoaderLocation}" as a value there (maybe check for typos - it needs to be "${expectedRegisterLoaderLocation}" exactly).`, - ); - } - - const expectedHooksLoaderLocation = `${outputFolder}/loader-hook.mjs`; - const foundHookLoaderExport = Object.keys(packageDotJSON.exports ?? {}).some(key => { - return packageDotJSON?.exports?.[key]?.import?.default === expectedHooksLoaderLocation; - }); - if (!foundHookLoaderExport) { - throw new Error( - `You used the makeOtelLoaders() rollup utility without specifying the loader hook inside \`exports[something].import.default\`. Please add "${expectedHooksLoaderLocation}" as a value there (maybe check for typos - it needs to be "${expectedHooksLoaderLocation}" exactly).`, - ); - } - - const requiredDep = hookVariant === 'otel' ? '@opentelemetry/instrumentation' : '@sentry/node'; - const foundImportInTheMiddleDep = - Object.keys(packageDotJSON.dependencies ?? {}).some(key => { - return key === requiredDep; - }) || - Object.keys(packageDotJSON.devDependencies ?? {}).some(key => { - return key === requiredDep; - }); - - if (!foundImportInTheMiddleDep) { - throw new Error( - `You used the makeOtelLoaders() rollup utility but didn't specify the "${requiredDep}" dependency in ${path.resolve( - process.cwd(), - 'package.json', - )}. Please add it to the dependencies.`, - ); - } - - return defineConfig([ - // register() hook - { - input: path.join( - __dirname, - 'code', - hookVariant === 'otel' - ? injectDiagnosticsChannel - ? 'otelEsmImportHookWithDiagnosticsChannelTemplate.js' - : 'otelEsmImportHookTemplate.js' - : 'sentryNodeEsmImportHookTemplate.js', - ), - external: /.*/, - output: { - format: 'esm', - file: path.join(outputFolder, 'import-hook.mjs'), - }, - }, - // --loader hook - { - input: path.join( - __dirname, - 'code', - hookVariant === 'otel' ? 'otelEsmLoaderHookTemplate.js' : 'sentryNodeEsmLoaderHookTemplate.js', - ), - external: /.*/, - output: { - format: 'esm', - file: path.join(outputFolder, 'loader-hook.mjs'), - }, - }, - ]); -} - /** * Emits the `@sentry//import` entry (`build/import-hook.mjs`) as part of the rollup build, * used as `node --import @sentry//import app.js`. The generated hook imports