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;
};