diff options
author | 2023-09-18 11:44:19 +0200 | |
---|---|---|
committer | 2023-09-18 10:44:19 +0100 | |
commit | 3da5d8404e56a05da93f6b0a70841acda5ca1a8f (patch) | |
tree | 18192b8b989140f7209cb9960313697f6ec5ed35 | |
parent | c9bbd304cac3cf1e95244fdc853bbea387929181 (diff) | |
download | astro-3da5d8404e56a05da93f6b0a70841acda5ca1a8f.tar.gz astro-3da5d8404e56a05da93f6b0a70841acda5ca1a8f.tar.zst astro-3da5d8404e56a05da93f6b0a70841acda5ca1a8f.zip |
feat(@astro/cloudflare): improve DX for runtime typing (#8560)
-rw-r--r-- | .changeset/thin-pigs-mate.md | 5 | ||||
-rw-r--r-- | packages/integrations/cloudflare/README.md | 12 | ||||
-rw-r--r-- | packages/integrations/cloudflare/src/server.advanced.ts | 5 | ||||
-rw-r--r-- | packages/integrations/cloudflare/src/server.directory.ts | 4 |
4 files changed, 19 insertions, 7 deletions
diff --git a/.changeset/thin-pigs-mate.md b/.changeset/thin-pigs-mate.md new file mode 100644 index 000000000..6a764cf18 --- /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 8d8b3c041..e8a1db204 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 /// <reference types="astro/client" /> import type { AdvancedRuntime } from '@astrojs/cloudflare'; +type ENV = { + SERVER_URL: string; +} + declare namespace App { - interface Locals extends AdvancedRuntime { + interface Locals extends AdvancedRuntime<ENV> { user: { name: string; surname: string; @@ -132,8 +136,12 @@ If you're using the `directory` runtime, you can type the `runtime` object as fo /// <reference types="astro/client" /> import type { DirectoryRuntime } from '@astrojs/cloudflare'; +type ENV = { + SERVER_URL: string; +} + declare namespace App { - interface Locals extends DirectoryRuntime { + interface Locals extends DirectoryRuntime<ENV> { user: { name: string; surname: string; diff --git a/packages/integrations/cloudflare/src/server.advanced.ts b/packages/integrations/cloudflare/src/server.advanced.ts index 6e305b1b9..ac6e0fe55 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<Response> }; - name: string; }; -export interface AdvancedRuntime { +export interface AdvancedRuntime<T extends object = object> { runtime: { waitUntil: (promise: Promise<any>) => 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 48c97392c..ffd4ba87a 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<T extends object = object> { runtime: { waitUntil: (promise: Promise<any>) => void; - env: EventContext<unknown, string, unknown>['env']; + env: EventContext<unknown, string, unknown>['env'] & T; cf: CFRequest['cf']; caches: typeof caches; }; |