summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.changeset/thin-pigs-mate.md5
-rw-r--r--packages/integrations/cloudflare/README.md12
-rw-r--r--packages/integrations/cloudflare/src/server.advanced.ts5
-rw-r--r--packages/integrations/cloudflare/src/server.directory.ts4
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;
};