From d6593ae570a15bd7cd3da27207710bcb7380fd0c Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Fri, 7 Apr 2023 15:31:15 +0200 Subject: [PATCH] feat(sveltekit): Remove `withSentryViteConfig` --- packages/sveltekit/src/vite/index.ts | 1 - .../src/vite/withSentryViteConfig.ts | 63 -------- .../test/vite/withSentryViteConfig.test.ts | 152 ------------------ 3 files changed, 216 deletions(-) delete mode 100644 packages/sveltekit/src/vite/withSentryViteConfig.ts delete mode 100644 packages/sveltekit/test/vite/withSentryViteConfig.test.ts diff --git a/packages/sveltekit/src/vite/index.ts b/packages/sveltekit/src/vite/index.ts index a29a564fd275..2e736f9290e8 100644 --- a/packages/sveltekit/src/vite/index.ts +++ b/packages/sveltekit/src/vite/index.ts @@ -1,2 +1 @@ -export { withSentryViteConfig } from './withSentryViteConfig'; export { sentrySvelteKitPlugin } from './sentrySvelteKitPlugin'; diff --git a/packages/sveltekit/src/vite/withSentryViteConfig.ts b/packages/sveltekit/src/vite/withSentryViteConfig.ts deleted file mode 100644 index 1dad490a4a58..000000000000 --- a/packages/sveltekit/src/vite/withSentryViteConfig.ts +++ /dev/null @@ -1,63 +0,0 @@ -import type { UserConfig, UserConfigExport } from 'vite'; - -import { injectSentryInitPlugin } from './injectInitPlugin'; -import { hasSentryInitFiles } from './utils'; - -/** - * This function adds Sentry-specific configuration to your Vite config. - * Pass your config to this function and make sure the return value is exported - * from your `vite.config.js` file. - * - * Note: If you're already wrapping your config with another wrapper, - * for instance with `defineConfig` from vitest, make sure - * that the Sentry wrapper is the outermost one. - * - * @param originalConfig your original vite config - * - * @returns a vite config with Sentry-specific configuration added to it. - */ -export function withSentryViteConfig(originalConfig: UserConfigExport): UserConfigExport { - if (typeof originalConfig === 'function') { - return function (this: unknown, ...viteConfigFunctionArgs: unknown[]): UserConfig | Promise { - const userViteConfigObject = originalConfig.apply(this, viteConfigFunctionArgs); - if (userViteConfigObject instanceof Promise) { - return userViteConfigObject.then(userConfig => addSentryConfig(userConfig)); - } - return addSentryConfig(userViteConfigObject); - }; - } else if (originalConfig instanceof Promise) { - return originalConfig.then(userConfig => addSentryConfig(userConfig)); - } - return addSentryConfig(originalConfig); -} - -function addSentryConfig(originalConfig: UserConfig): UserConfig { - const sentryPlugins = []; - - const shouldAddInjectInitPlugin = hasSentryInitFiles(); - - if (shouldAddInjectInitPlugin) { - sentryPlugins.push(injectSentryInitPlugin); - } - - const config = { - ...originalConfig, - plugins: originalConfig.plugins ? [...sentryPlugins, ...originalConfig.plugins] : [...sentryPlugins], - }; - - const mergedDevServerFileSystemConfig: UserConfig['server'] = shouldAddInjectInitPlugin - ? { - fs: { - ...(config.server && config.server.fs), - allow: [...((config.server && config.server.fs && config.server.fs.allow) || []), '.'], - }, - } - : {}; - - config.server = { - ...config.server, - ...mergedDevServerFileSystemConfig, - }; - - return config; -} diff --git a/packages/sveltekit/test/vite/withSentryViteConfig.test.ts b/packages/sveltekit/test/vite/withSentryViteConfig.test.ts deleted file mode 100644 index 8add96c00b05..000000000000 --- a/packages/sveltekit/test/vite/withSentryViteConfig.test.ts +++ /dev/null @@ -1,152 +0,0 @@ -import type fs from 'fs'; -import type { Plugin, UserConfig } from 'vite'; -import { vi } from 'vitest'; - -import { withSentryViteConfig } from '../../src/vite/withSentryViteConfig'; - -let existsFile = true; -vi.mock('fs', async () => { - const original = await vi.importActual('fs'); - return { - ...original, - existsSync: vi.fn().mockImplementation(() => existsFile), - }; -}); -describe('withSentryViteConfig', () => { - const originalConfig = { - plugins: [{ name: 'foo' }], - server: { - fs: { - allow: ['./bar'], - }, - }, - test: { - include: ['src/**/*.{test,spec}.{js,ts}'], - }, - }; - - it('takes a POJO Vite config and returns the sentrified version', () => { - const sentrifiedConfig = withSentryViteConfig(originalConfig); - - expect(typeof sentrifiedConfig).toBe('object'); - - const plugins = (sentrifiedConfig as UserConfig).plugins as Plugin[]; - - expect(plugins).toHaveLength(2); - expect(plugins[0].name).toBe('sentry-init-injection-plugin'); - expect(plugins[1].name).toBe('foo'); - - expect((sentrifiedConfig as UserConfig).server?.fs?.allow).toStrictEqual(['./bar', '.']); - - expect((sentrifiedConfig as any).test).toEqual(originalConfig.test); - }); - - it('takes a Vite config Promise and returns the sentrified version', async () => { - const sentrifiedConfig = await withSentryViteConfig(Promise.resolve(originalConfig)); - - expect(typeof sentrifiedConfig).toBe('object'); - - const plugins = (sentrifiedConfig as UserConfig).plugins as Plugin[]; - - expect(plugins).toHaveLength(2); - expect(plugins[0].name).toBe('sentry-init-injection-plugin'); - expect(plugins[1].name).toBe('foo'); - - expect((sentrifiedConfig as UserConfig).server?.fs?.allow).toStrictEqual(['./bar', '.']); - - expect((sentrifiedConfig as any).test).toEqual(originalConfig.test); - }); - - it('takes a function returning a Vite config and returns the sentrified version', () => { - const sentrifiedConfigFunction = withSentryViteConfig(_env => { - return originalConfig; - }); - const sentrifiedConfig = - typeof sentrifiedConfigFunction === 'function' && sentrifiedConfigFunction({ command: 'build', mode: 'test' }); - - expect(typeof sentrifiedConfig).toBe('object'); - - const plugins = (sentrifiedConfig as UserConfig).plugins as Plugin[]; - - expect(plugins).toHaveLength(2); - expect(plugins[0].name).toBe('sentry-init-injection-plugin'); - expect(plugins[1].name).toBe('foo'); - - expect((sentrifiedConfig as UserConfig).server?.fs?.allow).toStrictEqual(['./bar', '.']); - - expect((sentrifiedConfig as any).test).toEqual(originalConfig.test); - }); - - it('takes a function returning a Vite config promise and returns the sentrified version', async () => { - const sentrifiedConfigFunction = withSentryViteConfig(_env => { - return Promise.resolve(originalConfig); - }); - const sentrifiedConfig = - typeof sentrifiedConfigFunction === 'function' && - (await sentrifiedConfigFunction({ command: 'build', mode: 'test' })); - - expect(typeof sentrifiedConfig).toBe('object'); - - const plugins = (sentrifiedConfig as UserConfig).plugins as Plugin[]; - - expect(plugins).toHaveLength(2); - expect(plugins[0].name).toBe('sentry-init-injection-plugin'); - expect(plugins[1].name).toBe('foo'); - - expect((sentrifiedConfig as UserConfig).server?.fs?.allow).toStrictEqual(['./bar', '.']); - - expect((sentrifiedConfig as any).test).toEqual(originalConfig.test); - }); - - it('adds the vite plugin if no plugins are present', () => { - const sentrifiedConfig = withSentryViteConfig({ - test: { - include: ['src/**/*.{test,spec}.{js,ts}'], - }, - } as UserConfig); - - expect(typeof sentrifiedConfig).toBe('object'); - - const plugins = (sentrifiedConfig as UserConfig).plugins as Plugin[]; - - expect(plugins).toHaveLength(1); - expect(plugins[0].name).toBe('sentry-init-injection-plugin'); - }); - - it('adds the vite plugin and server config to an empty vite config', () => { - const sentrifiedConfig = withSentryViteConfig({}); - - expect(typeof sentrifiedConfig).toBe('object'); - - const plugins = (sentrifiedConfig as UserConfig).plugins as Plugin[]; - - expect(plugins).toHaveLength(1); - expect(plugins[0].name).toBe('sentry-init-injection-plugin'); - - expect((sentrifiedConfig as UserConfig).server?.fs?.allow).toStrictEqual(['.']); - }); - - it("doesn't add the inject init plugin or the server config if sentry config files don't exist", () => { - existsFile = false; - - const sentrifiedConfig = withSentryViteConfig({ - plugins: [{ name: 'some plugin' }], - test: { - include: ['src/**/*.{test,spec}.{js,ts}'], - }, - server: { - fs: { - allow: ['./bar'], - }, - }, - } as UserConfig); - - expect(typeof sentrifiedConfig).toBe('object'); - const plugins = (sentrifiedConfig as UserConfig).plugins as Plugin[]; - expect(plugins).toHaveLength(1); - expect(plugins[0].name).toBe('some plugin'); - expect((sentrifiedConfig as UserConfig).server?.fs?.allow).toStrictEqual(['./bar']); - - existsFile = true; - }); -});