diff --git a/app/src/adapter/cloudflare/cloudflare-workers.adapter.spec.ts b/app/src/adapter/cloudflare/cloudflare-workers.adapter.spec.ts index 22449a4..0c51acb 100644 --- a/app/src/adapter/cloudflare/cloudflare-workers.adapter.spec.ts +++ b/app/src/adapter/cloudflare/cloudflare-workers.adapter.spec.ts @@ -1,6 +1,6 @@ import { afterAll, beforeAll, describe, expect, it } from "bun:test"; import { makeApp } from "./modes/fresh"; -import { makeConfig } from "./config"; +import { makeConfig, type CfMakeConfigArgs } from "./config"; import { disableConsoleLog, enableConsoleLog } from "core/utils"; import { adapterTestSuite } from "adapter/adapter-test-suite"; import { bunTestRunner } from "adapter/bun/test"; @@ -23,7 +23,7 @@ describe("cf adapter", () => { { connection: { url: DB_URL }, }, - {}, + $ctx({ DB_URL }), ), ).toEqual({ connection: { url: DB_URL } }); @@ -34,15 +34,15 @@ describe("cf adapter", () => { connection: { url: env.DB_URL }, }), }, - { - DB_URL, - }, + $ctx({ DB_URL }), ), ).toEqual({ connection: { url: DB_URL } }); }); - adapterTestSuite(bunTestRunner, { - makeApp, + adapterTestSuite>(bunTestRunner, { + makeApp: async (c, a, o) => { + return await makeApp(c, { env: a } as any, o); + }, makeHandler: (c, a, o) => { return async (request: any) => { const app = await makeApp( @@ -50,7 +50,7 @@ describe("cf adapter", () => { c ?? { connection: { url: DB_URL }, }, - a, + a!, o, ); return app.fetch(request); diff --git a/app/src/adapter/cloudflare/config.ts b/app/src/adapter/cloudflare/config.ts index 37e8f4b..9fb9f15 100644 --- a/app/src/adapter/cloudflare/config.ts +++ b/app/src/adapter/cloudflare/config.ts @@ -85,58 +85,61 @@ export function d1SessionHelper(config: CloudflareBkndConfig) { let media_registered: boolean = false; export function makeConfig( config: CloudflareBkndConfig, - args: CfMakeConfigArgs, + args?: CfMakeConfigArgs, ) { if (!media_registered) { registerMedia(args as any); media_registered = true; } - const appConfig = makeAdapterConfig(config, args.env); - const bindings = config.bindings?.(args.env); + const appConfig = makeAdapterConfig(config, args?.env); - const sessionHelper = d1SessionHelper(config); - const sessionId = sessionHelper.get(args.request); - let session: D1DatabaseSession | undefined; + if (args?.env) { + const bindings = config.bindings?.(args?.env); - if (!appConfig.connection) { - let db: D1Database | undefined; - if (bindings?.db) { - $console.log("Using database from bindings"); - db = bindings.db; - } else if (Object.keys(args).length > 0) { - const binding = getBinding(args.env, "D1Database"); - if (binding) { - $console.log(`Using database from env "${binding.key}"`); - db = binding.value; + const sessionHelper = d1SessionHelper(config); + const sessionId = sessionHelper.get(args.request); + let session: D1DatabaseSession | undefined; + + if (!appConfig.connection) { + let db: D1Database | undefined; + if (bindings?.db) { + $console.log("Using database from bindings"); + db = bindings.db; + } else if (Object.keys(args).length > 0) { + const binding = getBinding(args.env, "D1Database"); + if (binding) { + $console.log(`Using database from env "${binding.key}"`); + db = binding.value; + } } - } - if (db) { - if (config.d1?.session) { - session = db.withSession(sessionId ?? config.d1?.first); - appConfig.connection = new D1Connection({ binding: session }); + if (db) { + if (config.d1?.session) { + session = db.withSession(sessionId ?? config.d1?.first); + appConfig.connection = new D1Connection({ binding: session }); + } else { + appConfig.connection = new D1Connection({ binding: db }); + } } else { - appConfig.connection = new D1Connection({ binding: db }); + throw new Error("No database connection given"); } - } else { - throw new Error("No database connection given"); } - } - if (config.d1?.session) { - appConfig.options = { - ...appConfig.options, - manager: { - ...appConfig.options?.manager, - onServerInit: (server) => { - server.use(async (c, next) => { - sessionHelper.set(c, session); - await next(); - }); + if (config.d1?.session) { + appConfig.options = { + ...appConfig.options, + manager: { + ...appConfig.options?.manager, + onServerInit: (server) => { + server.use(async (c, next) => { + sessionHelper.set(c, session); + await next(); + }); + }, }, - }, - }; + }; + } } return appConfig; diff --git a/app/src/adapter/cloudflare/modes/fresh.ts b/app/src/adapter/cloudflare/modes/fresh.ts index 4c6bc9b..7fb37e3 100644 --- a/app/src/adapter/cloudflare/modes/fresh.ts +++ b/app/src/adapter/cloudflare/modes/fresh.ts @@ -4,10 +4,10 @@ import { makeConfig, registerAsyncsExecutionContext, type CfMakeConfigArgs } fro export async function makeApp( config: CloudflareBkndConfig, - args: CfMakeConfigArgs, + args?: CfMakeConfigArgs, opts?: RuntimeOptions, ) { - return await createRuntimeApp(makeConfig(config, args), args.env, opts); + return await createRuntimeApp(makeConfig(config, args), args?.env, opts); } export async function getFresh(