From 1f0dd7136345aeaa26a5cae7438c9585eb382d2d Mon Sep 17 00:00:00 2001 From: Pedro Cattori Date: Tue, 20 Feb 2024 18:22:54 -0600 Subject: [PATCH] fix(cloudflare-pages): cloudflare context at top level for back compat --- .changeset/great-jokes-destroy.md | 9 +++++ packages/remix-cloudflare-pages/worker.ts | 49 ++++++++++++++++------- 2 files changed, 43 insertions(+), 15 deletions(-) create mode 100644 .changeset/great-jokes-destroy.md diff --git a/.changeset/great-jokes-destroy.md b/.changeset/great-jokes-destroy.md new file mode 100644 index 00000000000..3514538e956 --- /dev/null +++ b/.changeset/great-jokes-destroy.md @@ -0,0 +1,9 @@ +--- +"@remix-run/cloudflare-pages": patch +--- + +Fix breaking change for `@remix-run/cloudflare-pages` + +Restore Cloudflare event context fields in `getLoadContext` argument for backwards compatibility. + + diff --git a/packages/remix-cloudflare-pages/worker.ts b/packages/remix-cloudflare-pages/worker.ts index 2d251aa3963..0115cadf95e 100644 --- a/packages/remix-cloudflare-pages/worker.ts +++ b/packages/remix-cloudflare-pages/worker.ts @@ -13,23 +13,41 @@ export type GetLoadContextFunction< Env = unknown, Params extends string = any, Data extends Record = Record -> = (args: { - request: Request; - context: { - cloudflare: EventContext & { - cf: EventContext["request"]["cf"]; - ctx: { - waitUntil: EventContext["waitUntil"]; - passThroughOnException: EventContext< - Env, - Params, - Data - >["passThroughOnException"]; +> = ( + // prettier-ignore + args: { + /** @deprecated use `context.cloudflare.env` instead */ + env: EventContext["env"]; + /** @deprecated use `context.cloudflare.functionPath` instead */ + functionPath: EventContext["functionPath"]; + /** @deprecated use `context.cloudflare.waitUntil` instead */ + waitUntil: EventContext["waitUntil"]; + /** @deprecated use `context.cloudflare.passThroughOnException` instead */ + passThroughOnException: EventContext["passThroughOnException"]; + /** @deprecated use `context.cloudflare.next` instead */ + next: EventContext["next"]; + /** @deprecated use `context.cloudflare.params` instead */ + params: EventContext["params"]; + /** @deprecated use `context.cloudflare.data` instead */ + data: EventContext["data"]; + + request: Request; + context: { + cloudflare: EventContext & { + cf: EventContext["request"]["cf"]; + ctx: { + waitUntil: EventContext["waitUntil"]; + passThroughOnException: EventContext< + Env, + Params, + Data + >["passThroughOnException"]; + }; + caches: CacheStorage; }; - caches: CacheStorage; }; - }; -}) => AppLoadContext | Promise; + } +) => AppLoadContext | Promise; export type RequestHandler = PagesFunction; @@ -54,6 +72,7 @@ export function createRequestHandler({ return async (cloudflare) => { let loadContext = await getLoadContext({ + ...cloudflare, // Backcompat, remove in v3 request: cloudflare.request, context: { cloudflare: {