From 58cec51cbd1b50ec61d5492d84b1c1cca69ae76a Mon Sep 17 00:00:00 2001 From: s1gr1d Date: Mon, 2 Jun 2025 14:12:32 +0200 Subject: [PATCH] Revert "fix(nuxt): Add `@sentry/nuxt` as external in Rollup (#16407)" This reverts commit 6e61f825abfff329f92ec30a97f3b49370683a2e. --- packages/nuxt/src/vite/addServerConfig.ts | 8 ---- packages/nuxt/src/vite/utils.ts | 30 ------------ packages/nuxt/test/vite/utils.test.ts | 58 ----------------------- 3 files changed, 96 deletions(-) diff --git a/packages/nuxt/src/vite/addServerConfig.ts b/packages/nuxt/src/vite/addServerConfig.ts index 83e59d439ecf..771c534705cb 100644 --- a/packages/nuxt/src/vite/addServerConfig.ts +++ b/packages/nuxt/src/vite/addServerConfig.ts @@ -8,7 +8,6 @@ import type { SentryNuxtModuleOptions } from '../common/types'; import { constructFunctionReExport, constructWrappedFunctionExportQuery, - getExternalOptionsWithSentryNuxt, getFilenameFromNodeStartCommand, QUERY_END_INDICATOR, removeSentryQueryFromPath, @@ -131,13 +130,6 @@ function injectServerConfigPlugin(nitro: Nitro, serverConfigFile: string, debug? return { name: 'rollup-plugin-inject-sentry-server-config', - options(opts) { - return { - ...opts, - external: getExternalOptionsWithSentryNuxt(opts.external), - }; - }, - buildStart() { const configPath = createResolver(nitro.options.srcDir).resolve(`/${serverConfigFile}`); diff --git a/packages/nuxt/src/vite/utils.ts b/packages/nuxt/src/vite/utils.ts index a0e88c892a25..f1ef1c9e4cf2 100644 --- a/packages/nuxt/src/vite/utils.ts +++ b/packages/nuxt/src/vite/utils.ts @@ -2,7 +2,6 @@ import { consoleSandbox } from '@sentry/core'; import * as fs from 'fs'; import type { Nuxt } from 'nuxt/schema'; import * as path from 'path'; -import type { ExternalOption } from 'rollup'; /** * Find the default SDK init file for the given type (client or server). @@ -73,35 +72,6 @@ export function removeSentryQueryFromPath(url: string): string { return url.replace(regex, ''); } -/** - * Add @sentry/nuxt to the external options of the Rollup configuration to prevent Rollup bundling all dependencies - * that would result in adding imports from OpenTelemetry libraries etc. to the server build. - */ -export function getExternalOptionsWithSentryNuxt(previousExternal: ExternalOption | undefined): ExternalOption { - const sentryNuxt = /^@sentry\/nuxt$/; - let external: ExternalOption; - - if (typeof previousExternal === 'function') { - external = new Proxy(previousExternal, { - apply(target, thisArg, args: [string, string | undefined, boolean]) { - const [source] = args; - if (sentryNuxt.test(source)) { - return true; - } - return Reflect.apply(target, thisArg, args); - }, - }); - } else if (Array.isArray(previousExternal)) { - external = [sentryNuxt, ...previousExternal]; - } else if (previousExternal) { - external = [sentryNuxt, previousExternal]; - } else { - external = sentryNuxt; - } - - return external; -} - /** * Extracts and sanitizes function re-export and function wrap query parameters from a query string. * If it is a default export, it is not considered for re-exporting. diff --git a/packages/nuxt/test/vite/utils.test.ts b/packages/nuxt/test/vite/utils.test.ts index 9419c5f0a545..f19ec98b4b64 100644 --- a/packages/nuxt/test/vite/utils.test.ts +++ b/packages/nuxt/test/vite/utils.test.ts @@ -6,7 +6,6 @@ import { constructWrappedFunctionExportQuery, extractFunctionReexportQueryParameters, findDefaultSdkInitFile, - getExternalOptionsWithSentryNuxt, getFilenameFromNodeStartCommand, QUERY_END_INDICATOR, removeSentryQueryFromPath, @@ -367,60 +366,3 @@ export { foo_sentryWrapped as foo }; expect(result).toBe(''); }); }); - -describe('getExternalOptionsWithSentryNuxt', () => { - it('should return sentryExternals when previousExternal is undefined', () => { - const result = getExternalOptionsWithSentryNuxt(undefined); - expect(result).toEqual(/^@sentry\/nuxt$/); - }); - - it('should merge sentryExternals with array previousExternal', () => { - const previousExternal = [/vue/, 'react']; - const result = getExternalOptionsWithSentryNuxt(previousExternal); - expect(result).toEqual([/^@sentry\/nuxt$/, /vue/, 'react']); - }); - - it('should create array with sentryExternals and non-array previousExternal', () => { - const previousExternal = 'vue'; - const result = getExternalOptionsWithSentryNuxt(previousExternal); - expect(result).toEqual([/^@sentry\/nuxt$/, 'vue']); - }); - - it('should create a proxy when previousExternal is a function', () => { - const mockExternalFn = vi.fn().mockReturnValue(false); - const result = getExternalOptionsWithSentryNuxt(mockExternalFn); - - expect(typeof result).toBe('function'); - expect(result).toBeInstanceOf(Function); - }); - - it('should return true from proxied function when source is @sentry/nuxt', () => { - const mockExternalFn = vi.fn().mockReturnValue(false); - const result = getExternalOptionsWithSentryNuxt(mockExternalFn); - - // @ts-expect-error - result is a function - const output = result('@sentry/nuxt', undefined, false); - expect(output).toBe(true); - expect(mockExternalFn).not.toHaveBeenCalled(); - }); - - it('should return false from proxied function and call function when source just includes @sentry/nuxt', () => { - const mockExternalFn = vi.fn().mockReturnValue(false); - const result = getExternalOptionsWithSentryNuxt(mockExternalFn); - - // @ts-expect-error - result is a function - const output = result('@sentry/nuxt/dist/index.js', undefined, false); - expect(output).toBe(false); - expect(mockExternalFn).toHaveBeenCalledWith('@sentry/nuxt/dist/index.js', undefined, false); - }); - - it('should call original function when source does not include @sentry/nuxt', () => { - const mockExternalFn = vi.fn().mockReturnValue(false); - const result = getExternalOptionsWithSentryNuxt(mockExternalFn); - - // @ts-expect-error - result is a function - const output = result('vue', undefined, false); - expect(output).toBe(false); - expect(mockExternalFn).toHaveBeenCalledWith('vue', undefined, false); - }); -});