From 33a0a021ae356d717591652c4d4110f9e0d541c9 Mon Sep 17 00:00:00 2001 From: Pedro Cattori Date: Wed, 7 Feb 2024 11:20:12 -0500 Subject: [PATCH] vite: make getLoadContext optional for cloudflare pages handler (#8701) --- .changeset/brown-rats-flow.md | 8 ++++++++ docs/guides/envvars.md | 12 +----------- docs/guides/manual-mode.md | 5 +---- docs/other-api/dev.md | 8 +------- integration/helpers/deno-template/server.ts | 1 - packages/remix-cloudflare-pages/worker.ts | 4 ++-- .../__tests__/fixtures/cloudflare/server.ts | 6 +----- packages/remix-dev/__tests__/fixtures/deno/server.ts | 1 - templates/arc/server.ts | 5 +---- templates/cloudflare-pages/server.ts | 6 +----- templates/deno/server.ts | 3 +-- templates/express/server.js | 5 +---- 12 files changed, 18 insertions(+), 46 deletions(-) create mode 100644 .changeset/brown-rats-flow.md diff --git a/.changeset/brown-rats-flow.md b/.changeset/brown-rats-flow.md new file mode 100644 index 00000000000..85cb43486b7 --- /dev/null +++ b/.changeset/brown-rats-flow.md @@ -0,0 +1,8 @@ +--- +"@remix-run/cloudflare-pages": minor +--- + +Make `getLoadContext` optional for Cloudflare Pages + +Defaults to `(context) => ({ env: context })`, which is what we used to have in all the templates. +This gives parity with the Cloudflare preset for the Remix Vite plugin and keeps our templates leaner. diff --git a/docs/guides/envvars.md b/docs/guides/envvars.md index 7aa6beee2bf..546e11fc827 100644 --- a/docs/guides/envvars.md +++ b/docs/guides/envvars.md @@ -48,17 +48,7 @@ export async function loader() { If you're using the `@remix-run/cloudflare-pages` adapter, env variables work a little differently. Since Cloudflare Pages are powered by Functions, you'll need to define your local environment variables in the [`.dev.vars`][dev-vars] file. It has the same syntax as `.env` example file mentioned above. -Then, you can pass those through via `getLoadContext` in your server file: - -```ts -export const onRequest = createPagesFunctionHandler({ - build, - getLoadContext: (context) => ({ env: context.env }), // Hand-off Cloudflare ENV vars to the Remix `context` object - mode: build.mode, -}); -``` - -And they'll be available via Remix's `context` in your `loader`/`action` functions: +Then, they'll be available via Remix's `context.env` in your `loader`/`action` functions: ```tsx export const loader = async ({ diff --git a/docs/guides/manual-mode.md b/docs/guides/manual-mode.md index adaeb0fc509..a470cce5acb 100644 --- a/docs/guides/manual-mode.md +++ b/docs/guides/manual-mode.md @@ -259,10 +259,7 @@ app.all( "*", process.env.NODE_ENV === "development" ? createDevRequestHandler(initialBuild) - : createRequestHandler({ - build: initialBuild, - mode: initialBuild.mode, - }) + : createRequestHandler({ build: initialBuild }) ); ``` diff --git a/docs/other-api/dev.md b/docs/other-api/dev.md index a8b64b254dd..9f880dcb0de 100644 --- a/docs/other-api/dev.md +++ b/docs/other-api/dev.md @@ -91,13 +91,7 @@ If not, you can follow these steps to integrate your project with `remix dev`: // ... code for setting up your express app goes here ... - app.all( - "*", - createRequestHandler({ - build, - mode: build.mode, - }) - ); + app.all("*", createRequestHandler({ build })); const port = 3000; app.listen(port, () => { diff --git a/integration/helpers/deno-template/server.ts b/integration/helpers/deno-template/server.ts index 943b4f0616e..a7caa47e204 100644 --- a/integration/helpers/deno-template/server.ts +++ b/integration/helpers/deno-template/server.ts @@ -6,7 +6,6 @@ import * as build from "@remix-run/dev/server-build"; const remixHandler = createRequestHandlerWithStaticFiles({ build, getLoadContext: () => ({}), - mode: build.mode, }); const port = Number(Deno.env.get("PORT")) || 8000; diff --git a/packages/remix-cloudflare-pages/worker.ts b/packages/remix-cloudflare-pages/worker.ts index 5b24e6e36b9..0fc0bfbf9e8 100644 --- a/packages/remix-cloudflare-pages/worker.ts +++ b/packages/remix-cloudflare-pages/worker.ts @@ -26,13 +26,13 @@ export interface createPagesFunctionHandlerParams { export function createRequestHandler({ build, - getLoadContext, mode, + getLoadContext = (context) => ({ env: context.env }), }: createPagesFunctionHandlerParams): RequestHandler { let handleRequest = createRemixRequestHandler(build, mode); return async (context) => { - let loadContext = await getLoadContext?.(context); + let loadContext = await getLoadContext(context); return handleRequest(context.request, loadContext); }; diff --git a/packages/remix-dev/__tests__/fixtures/cloudflare/server.ts b/packages/remix-dev/__tests__/fixtures/cloudflare/server.ts index 56df96a4aa7..338a5e57378 100644 --- a/packages/remix-dev/__tests__/fixtures/cloudflare/server.ts +++ b/packages/remix-dev/__tests__/fixtures/cloudflare/server.ts @@ -6,8 +6,4 @@ if (process.env.NODE_ENV === "development") { logDevReady(build); } -export const onRequest = createPagesFunctionHandler({ - build, - getLoadContext: (context) => ({ env: context.env }), - mode: build.mode, -}); +export const onRequest = createPagesFunctionHandler({ build }); diff --git a/packages/remix-dev/__tests__/fixtures/deno/server.ts b/packages/remix-dev/__tests__/fixtures/deno/server.ts index 943b4f0616e..a7caa47e204 100644 --- a/packages/remix-dev/__tests__/fixtures/deno/server.ts +++ b/packages/remix-dev/__tests__/fixtures/deno/server.ts @@ -6,7 +6,6 @@ import * as build from "@remix-run/dev/server-build"; const remixHandler = createRequestHandlerWithStaticFiles({ build, getLoadContext: () => ({}), - mode: build.mode, }); const port = Number(Deno.env.get("PORT")) || 8000; diff --git a/templates/arc/server.ts b/templates/arc/server.ts index fba9f66780b..4db5dcdece6 100644 --- a/templates/arc/server.ts +++ b/templates/arc/server.ts @@ -6,7 +6,4 @@ import sourceMapSupport from "source-map-support"; sourceMapSupport.install(); installGlobals(); -export const handler = createRequestHandler({ - build, - mode: build.mode, -}); +export const handler = createRequestHandler({ build }); diff --git a/templates/cloudflare-pages/server.ts b/templates/cloudflare-pages/server.ts index 56df96a4aa7..338a5e57378 100644 --- a/templates/cloudflare-pages/server.ts +++ b/templates/cloudflare-pages/server.ts @@ -6,8 +6,4 @@ if (process.env.NODE_ENV === "development") { logDevReady(build); } -export const onRequest = createPagesFunctionHandler({ - build, - getLoadContext: (context) => ({ env: context.env }), - mode: build.mode, -}); +export const onRequest = createPagesFunctionHandler({ build }); diff --git a/templates/deno/server.ts b/templates/deno/server.ts index 943b4f0616e..3c233f2162c 100644 --- a/templates/deno/server.ts +++ b/templates/deno/server.ts @@ -1,12 +1,11 @@ -import { serve } from "https://deno.land/std@0.128.0/http/server.ts"; import { createRequestHandlerWithStaticFiles } from "@remix-run/deno"; // Import path interpreted by the Remix compiler import * as build from "@remix-run/dev/server-build"; +import { serve } from "https://deno.land/std@0.128.0/http/server.ts"; const remixHandler = createRequestHandlerWithStaticFiles({ build, getLoadContext: () => ({}), - mode: build.mode, }); const port = Number(Deno.env.get("PORT")) || 8000; diff --git a/templates/express/server.js b/templates/express/server.js index d381d280606..38406cef874 100644 --- a/templates/express/server.js +++ b/templates/express/server.js @@ -36,10 +36,7 @@ const initialBuild = await reimportServer(); const remixHandler = process.env.NODE_ENV === "development" ? await createDevRequestHandler(initialBuild) - : createRequestHandler({ - build: initialBuild, - mode: initialBuild.mode, - }); + : createRequestHandler({ build: initialBuild }); const app = express();