import type { Cache, CacheStorage, IncomingRequestCfProperties } from '@cloudflare/workers-types'; export type WorkerRuntime = { name: 'cloudflare'; env: T; waitUntil(promise: Promise): void; passThroughOnException(): void; caches?: CacheStorage & { default: Cache }; cf?: IncomingRequestCfProperties; }; export type PagesRuntime = { name: 'cloudflare'; env: T; functionPath: string; params: Record; data: U; waitUntil(promise: Promise): void; next(request: Request): void; caches?: CacheStorage & { default: Cache }; cf?: IncomingRequestCfProperties; }; export function getRuntime( request: Request ): WorkerRuntime | PagesRuntime { if (!!request) { return Reflect.get(request, Symbol.for('runtime')); } else { throw new Error( 'To retrieve the current cloudflare runtime you need to pass in the Astro request object' ); } }