From a97a79f11ed68e037c8943cbe1e68f024cc998bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szymon=20R=C4=85czka?= <04_barista_pads@icloud.com> Date: Sun, 28 Dec 2025 12:47:09 +0100 Subject: [PATCH] fix(sveltekit): make adapter runtime-agnostic Remove process.env default to support all SvelteKit runtimes (Node, Cloudflare Workers, Vercel Edge, Deno). Users now pass env explicitly via $env/dynamic/private. --- .../sveltekit/sveltekit.adapter.spec.ts | 4 +-- .../adapter/sveltekit/sveltekit.adapter.ts | 26 +++++++++++++------ examples/sveltekit/src/hooks.server.ts | 3 ++- examples/sveltekit/src/routes/+page.server.ts | 3 ++- 4 files changed, 24 insertions(+), 12 deletions(-) diff --git a/app/src/adapter/sveltekit/sveltekit.adapter.spec.ts b/app/src/adapter/sveltekit/sveltekit.adapter.spec.ts index 002cf27..17da756 100644 --- a/app/src/adapter/sveltekit/sveltekit.adapter.spec.ts +++ b/app/src/adapter/sveltekit/sveltekit.adapter.spec.ts @@ -9,7 +9,7 @@ afterAll(enableConsoleLog); describe("sveltekit adapter", () => { adapterTestSuite(bunTestRunner, { - makeApp: sveltekit.getApp, - makeHandler: (c, a) => (request: Request) => sveltekit.serve(c, a)({ request }), + makeApp: (c, a) => sveltekit.getApp(c, a ?? ({} as any)), + makeHandler: (c, a) => (request: Request) => sveltekit.serve(c, a ?? ({} as any))({ request }), }); }); diff --git a/app/src/adapter/sveltekit/sveltekit.adapter.ts b/app/src/adapter/sveltekit/sveltekit.adapter.ts index 3454d72..7d7ea8d 100644 --- a/app/src/adapter/sveltekit/sveltekit.adapter.ts +++ b/app/src/adapter/sveltekit/sveltekit.adapter.ts @@ -1,21 +1,31 @@ import { type FrameworkBkndConfig, createFrameworkApp } from "bknd/adapter"; -type SvelteKitEnv = NodeJS.ProcessEnv; type TSvelteKit = { request: Request; }; -export type SvelteKitBkndConfig = FrameworkBkndConfig; -export async function getApp( - config: SvelteKitBkndConfig = {}, - args: Env = process.env as Env, +export type SvelteKitBkndConfig = FrameworkBkndConfig; + +/** + * Get bknd app instance + * @param config - bknd configuration + * @param args - environment variables (use $env/dynamic/private for universal runtime support) + */ +export async function getApp( + config: SvelteKitBkndConfig = {} as SvelteKitBkndConfig, + args: Env, ) { return await createFrameworkApp(config, args); } -export function serve( - config: SvelteKitBkndConfig = {}, - args: Env = process.env as Env, +/** + * Create request handler for hooks.server.ts + * @param config - bknd configuration + * @param args - environment variables (use $env/dynamic/private for universal runtime support) + */ +export function serve( + config: SvelteKitBkndConfig = {} as SvelteKitBkndConfig, + args: Env, ) { return async (fnArgs: TSvelteKit) => { return (await getApp(config, args)).fetch(fnArgs.request); diff --git a/examples/sveltekit/src/hooks.server.ts b/examples/sveltekit/src/hooks.server.ts index 9993b77..1f4b055 100644 --- a/examples/sveltekit/src/hooks.server.ts +++ b/examples/sveltekit/src/hooks.server.ts @@ -1,8 +1,9 @@ import type { Handle } from "@sveltejs/kit"; import { serve } from "bknd/adapter/sveltekit"; +import { env } from "$env/dynamic/private"; import config from "../bknd.config"; -const bkndHandler = serve(config); +const bkndHandler = serve(config, env); export const handle: Handle = async ({ event, resolve }) => { // Handle bknd API requests diff --git a/examples/sveltekit/src/routes/+page.server.ts b/examples/sveltekit/src/routes/+page.server.ts index 6ca8ca1..8efbda8 100644 --- a/examples/sveltekit/src/routes/+page.server.ts +++ b/examples/sveltekit/src/routes/+page.server.ts @@ -1,9 +1,10 @@ import type { PageServerLoad } from "./$types"; import { getApp } from "bknd/adapter/sveltekit"; +import { env } from "$env/dynamic/private"; import config from "../../bknd.config"; export const load: PageServerLoad = async () => { - const app = await getApp(config); + const app = await getApp(config, env); const api = app.getApi(); const todos = await api.data.readMany("todos");