diff --git a/.changeset/thin-pigs-mate.md b/.changeset/thin-pigs-mate.md new file mode 100644 index 000000000000..6a764cf18b4e --- /dev/null +++ b/.changeset/thin-pigs-mate.md @@ -0,0 +1,5 @@ +--- +'@astrojs/cloudflare': patch +--- + +add the option to type environment variables using a generic diff --git a/packages/integrations/cloudflare/README.md b/packages/integrations/cloudflare/README.md index 8d8b3c041576..e8a1db204e39 100644 --- a/packages/integrations/cloudflare/README.md +++ b/packages/integrations/cloudflare/README.md @@ -115,8 +115,12 @@ If you're using the `advanced` runtime, you can type the `runtime` object as fol /// import type { AdvancedRuntime } from '@astrojs/cloudflare'; +type ENV = { + SERVER_URL: string; +} + declare namespace App { - interface Locals extends AdvancedRuntime { + interface Locals extends AdvancedRuntime { user: { name: string; surname: string; @@ -132,8 +136,12 @@ If you're using the `directory` runtime, you can type the `runtime` object as fo /// import type { DirectoryRuntime } from '@astrojs/cloudflare'; +type ENV = { + SERVER_URL: string; +} + declare namespace App { - interface Locals extends DirectoryRuntime { + interface Locals extends DirectoryRuntime { user: { name: string; surname: string; diff --git a/packages/integrations/cloudflare/src/server.advanced.ts b/packages/integrations/cloudflare/src/server.advanced.ts index 6e305b1b96cc..ac6e0fe5547c 100644 --- a/packages/integrations/cloudflare/src/server.advanced.ts +++ b/packages/integrations/cloudflare/src/server.advanced.ts @@ -9,13 +9,12 @@ if (!isNode) { type Env = { ASSETS: { fetch: (req: Request) => Promise }; - name: string; }; -export interface AdvancedRuntime { +export interface AdvancedRuntime { runtime: { waitUntil: (promise: Promise) => void; - env: Env; + env: Env & T; cf: CFRequest['cf']; caches: typeof caches; }; diff --git a/packages/integrations/cloudflare/src/server.directory.ts b/packages/integrations/cloudflare/src/server.directory.ts index 48c97392cc03..ffd4ba87a696 100644 --- a/packages/integrations/cloudflare/src/server.directory.ts +++ b/packages/integrations/cloudflare/src/server.directory.ts @@ -7,10 +7,10 @@ if (!isNode) { process.env = getProcessEnvProxy(); } -export interface DirectoryRuntime { +export interface DirectoryRuntime { runtime: { waitUntil: (promise: Promise) => void; - env: EventContext['env']; + env: EventContext['env'] & T; cf: CFRequest['cf']; caches: typeof caches; };