From 8fa5d2da050e6a4f55be230006a7b99d3e46b6e1 Mon Sep 17 00:00:00 2001 From: Peter Hirn Date: Fri, 28 Mar 2025 15:16:06 +0100 Subject: [PATCH] wip: import global env see https://developers.cloudflare.com/changelog/2025-03-17-importable-env/ --- app.config.ts | 8 ++++++++ src/middleware.ts | 10 ++++------ src/routes/index.tsx | 3 +-- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/app.config.ts b/app.config.ts index 89a46073..68eb8ec6 100644 --- a/app.config.ts +++ b/app.config.ts @@ -13,6 +13,14 @@ export default defineConfig({ }, vite: { plugins: [tailwindcss()], + ssr: { + external: ["cloudflare:workers"] + }, + build: { + rollupOptions: { + external: ["cloudflare:workers"] + } + }, define: { "import.meta.env.VERSION": JSON.stringify(version), "import.meta.env.REVISION": JSON.stringify(revision) diff --git a/src/middleware.ts b/src/middleware.ts index bdba0995..b10fcc59 100644 --- a/src/middleware.ts +++ b/src/middleware.ts @@ -1,6 +1,7 @@ import { redirect } from "@solidjs/router"; import { createMiddleware } from "@solidjs/start/middleware"; import { type FetchEvent } from "@solidjs/start/server"; +import { env } from "cloudflare:workers"; import { type Toucan } from "toucan-js"; import { sendWebResponse } from "vinxi/http"; import { type PlatformProxy } from "wrangler"; @@ -25,7 +26,6 @@ declare global { declare module "@solidjs/start/server" { interface RequestEventLocals { cf: IncomingRequestCfProperties; - env: Env; caches: CacheStorage; waitUntil: (promise: Promise) => void; passThroughOnException: () => void; @@ -48,14 +48,12 @@ const cloudflare = async (event: FetchEvent): Promise => { if (import.meta.env.DEV) { const platformProxy = await ensurePlatformProxy(); event.locals.cf = platformProxy.cf; - event.locals.env = platformProxy.env; event.locals.caches = platformProxy.caches as unknown as CacheStorage; event.locals.waitUntil = platformProxy.ctx.waitUntil; event.locals.passThroughOnException = platformProxy.ctx.passThroughOnException; } else { const context = event.nativeEvent.context; event.locals.cf = context.cf; - event.locals.env = context.cloudflare.env; event.locals.caches = caches as unknown as CacheStorage; event.locals.waitUntil = context.waitUntil; event.locals.passThroughOnException = context.passThroughOnException; @@ -63,9 +61,9 @@ const cloudflare = async (event: FetchEvent): Promise => { }; const redirectToDomain = (event: FetchEvent): Response | undefined => { - if (import.meta.env.DEV || event.locals.env.LOCAL) return; + if (import.meta.env.DEV || env.LOCAL) return; - const domain = event.locals.env.DOMAIN; + const domain = env.DOMAIN; const url = new URL(event.request.url); if (url.host !== domain) { @@ -81,7 +79,7 @@ const sentry = (event: FetchEvent): void => { }; const user = async (event: FetchEvent): Promise => { - if (!event.locals.env.JWT_ISSUER) return; + if (!env.JWT_ISSUER) return; const user = await tryGetUser(event); if (!user) { diff --git a/src/routes/index.tsx b/src/routes/index.tsx index 608a9b22..8d0c04d9 100644 --- a/src/routes/index.tsx +++ b/src/routes/index.tsx @@ -1,4 +1,5 @@ import { createAsync, query } from "@solidjs/router"; +import { env } from "cloudflare:workers"; import { sql } from "drizzle-orm"; import { Suspense } from "solid-js"; import { getRequestEvent } from "solid-js/web"; @@ -12,8 +13,6 @@ const getData = query(async () => { const event = getRequestEvent(); if (!event) throw Error("Missing event"); - const env = event.locals.env; - const user = event.locals.user; const metadata = env.CF_VERSION_METADATA; const environment = env.ENVIRONMENT;