From eac0b7f3985be99b8291a7d90017491fe631ae7d Mon Sep 17 00:00:00 2001 From: rileyg98 Date: Thu, 6 Mar 2025 21:13:07 +1000 Subject: [PATCH 1/2] Add cloudflare adapter detection and path generation --- packages/sveltekit/src/vite/detectAdapter.ts | 4 +++- packages/sveltekit/src/vite/svelteConfig.ts | 4 ++++ packages/sveltekit/test/vite/detectAdapter.test.ts | 6 +++++- packages/sveltekit/test/vite/svelteConfig.test.ts | 7 +++++++ 4 files changed, 19 insertions(+), 2 deletions(-) diff --git a/packages/sveltekit/src/vite/detectAdapter.ts b/packages/sveltekit/src/vite/detectAdapter.ts index e979eb0c43e4..85b794575c93 100644 --- a/packages/sveltekit/src/vite/detectAdapter.ts +++ b/packages/sveltekit/src/vite/detectAdapter.ts @@ -5,7 +5,7 @@ import type { Package } from '@sentry/core'; /** * Supported @sveltejs/adapters-[adapter] SvelteKit adapters */ -export type SupportedSvelteKitAdapters = 'node' | 'auto' | 'vercel' | 'other'; +export type SupportedSvelteKitAdapters = 'node' | 'auto' | 'vercel' | 'cloudflare' | 'other'; /** * Tries to detect the used adapter for SvelteKit by looking at the dependencies. @@ -21,6 +21,8 @@ export async function detectAdapter(debug?: boolean): Promise { const consoleWarnSpy = vi.spyOn(console, 'warn').mockImplementation(() => {}); const consoleLogSpy = vi.spyOn(console, 'log').mockImplementation(() => {}); - it.each(['auto', 'vercel', 'node'])( + it.each(['auto', 'vercel', 'node', 'cloudflare'])( 'returns the adapter name (adapter %s) and logs it to the console', async adapter => { pkgJson.dependencies[`@sveltejs/adapter-${adapter}`] = '1.0.0'; @@ -68,6 +68,7 @@ describe('detectAdapter', () => { pkgJson.dependencies['@sveltejs/adapter-auto'] = '1.0.0'; pkgJson.dependencies['@sveltejs/adapter-vercel'] = '1.0.0'; pkgJson.dependencies['@sveltejs/adapter-node'] = '1.0.0'; + pkgJson.dependencies['@sveltejs/adapter-cloudflare'] = '1.0.0'; const detectedAdapter = await detectAdapter(); expect(detectedAdapter).toEqual('vercel'); @@ -75,5 +76,8 @@ describe('detectAdapter', () => { delete pkgJson.dependencies['@sveltejs/adapter-vercel']; const detectedAdapter2 = await detectAdapter(); expect(detectedAdapter2).toEqual('node'); + delete pkgJson.dependencies['@sveltejs/adapter-node']; + const detectedAdapter3 = await detectAdapter(); + expect(detectedAdapter3).toEqual('cloudflare'); }); }); diff --git a/packages/sveltekit/test/vite/svelteConfig.test.ts b/packages/sveltekit/test/vite/svelteConfig.test.ts index 35e32ce8ac4d..ebfcd7e8119e 100644 --- a/packages/sveltekit/test/vite/svelteConfig.test.ts +++ b/packages/sveltekit/test/vite/svelteConfig.test.ts @@ -68,6 +68,11 @@ describe('getAdapterOutputDir', () => { expect(outputDir).toEqual('customBuildDir'); }); + it('returns the output directory of the Cloudflare adapter', async () => { + const outputDir = await getAdapterOutputDir({ kit: { outDir: 'customOutDir' } }, 'cloudflare'); + expect(outputDir).toEqual('customOutDir/cloudflare'); + }); + it.each(['vercel', 'auto', 'other'] as SupportedSvelteKitAdapters[])( 'returns the config.kit.outdir directory for adapter-%s', async adapter => { @@ -76,6 +81,8 @@ describe('getAdapterOutputDir', () => { }, ); + + it('falls back to the default out dir for all other adapters if outdir is not specified in the config', async () => { const outputDir = await getAdapterOutputDir({ kit: {} }, 'vercel'); expect(outputDir).toEqual('.svelte-kit/output'); From 28f272e31ffb2456d11dd84c3d55a686749d334b Mon Sep 17 00:00:00 2001 From: rileyg98 Date: Thu, 6 Mar 2025 22:01:24 +1000 Subject: [PATCH 2/2] Remove empty lines --- packages/sveltekit/test/vite/svelteConfig.test.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/sveltekit/test/vite/svelteConfig.test.ts b/packages/sveltekit/test/vite/svelteConfig.test.ts index ebfcd7e8119e..a567407b6623 100644 --- a/packages/sveltekit/test/vite/svelteConfig.test.ts +++ b/packages/sveltekit/test/vite/svelteConfig.test.ts @@ -81,8 +81,6 @@ describe('getAdapterOutputDir', () => { }, ); - - it('falls back to the default out dir for all other adapters if outdir is not specified in the config', async () => { const outputDir = await getAdapterOutputDir({ kit: {} }, 'vercel'); expect(outputDir).toEqual('.svelte-kit/output');