From aaf8e28f76495e346fa0262e9aaf22bba29a2e79 Mon Sep 17 00:00:00 2001 From: Saiful Alom Date: Tue, 16 Jun 2026 13:25:27 +0600 Subject: [PATCH] fix(worker): use createExports pattern for @astrojs/cloudflare v12 --- .../__tests__/website.repository.test.ts | 2 +- src/pages/api/events.ts | 2 +- src/worker.ts | 19 ++++++++++++------- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/modules/website/__tests__/website.repository.test.ts b/src/modules/website/__tests__/website.repository.test.ts index 6ea5d4a..680e7b2 100644 --- a/src/modules/website/__tests__/website.repository.test.ts +++ b/src/modules/website/__tests__/website.repository.test.ts @@ -11,7 +11,7 @@ describe("Website repository integration test", () => { url: "https://trackflow.dev", isActive: true }; - const createdSite = await siteRepository.create(db, testMockSite); + const createdSite = await siteRepository.create(db, testMockSite as any); expect(createdSite).toBeDefined(); }); }); \ No newline at end of file diff --git a/src/pages/api/events.ts b/src/pages/api/events.ts index 80924ba..ceea0ff 100644 --- a/src/pages/api/events.ts +++ b/src/pages/api/events.ts @@ -62,7 +62,7 @@ export const POST: APIRoute = async ({ request, locals }) => { // 6. Fire your type-safe database service ingestion operation block! // If the incoming event URL is localhost, mock a successful save and skip DB ingestion - let savedId = "mocked-local-id"; + let savedId: any = "mocked-local-id"; if (isProductionOrRemote(rawBody.url)) { // 6. Fire your type-safe database service ingestion operation block! diff --git a/src/worker.ts b/src/worker.ts index f77296e..b4e9119 100644 --- a/src/worker.ts +++ b/src/worker.ts @@ -1,9 +1,14 @@ // src/worker.ts -import { handle } from '@astrojs/cloudflare/handler'; +import type { SSRManifest } from 'astro'; +import { App } from 'astro/app'; - -export default { - async fetch(request: Request, env: Env, ctx: ExecutionContext) { - return handle(request, env, ctx); - } -} satisfies ExportedHandler; +export function createExports(manifest: SSRManifest) { + const app = new App(manifest); + return { + default: { + async fetch(request: Request, env: Env, ctx: ExecutionContext) { + return app.render(request, { locals: { runtime: { env, ctx } } }); + }, + } satisfies ExportedHandler, + }; +} \ No newline at end of file