From 4e87195739f2a5d9a05451b48773c8afdc680765 Mon Sep 17 00:00:00 2001 From: akiyamn Date: Sun, 24 Sep 2023 23:22:21 +1000 Subject: Initial commit (by create-cloudflare CLI) --- .../middleware/middleware-multiworker-dev.ts | 59 ++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 node_modules/wrangler/templates/middleware/middleware-multiworker-dev.ts (limited to 'node_modules/wrangler/templates/middleware/middleware-multiworker-dev.ts') diff --git a/node_modules/wrangler/templates/middleware/middleware-multiworker-dev.ts b/node_modules/wrangler/templates/middleware/middleware-multiworker-dev.ts new file mode 100644 index 0000000..fee33d5 --- /dev/null +++ b/node_modules/wrangler/templates/middleware/middleware-multiworker-dev.ts @@ -0,0 +1,59 @@ +// @ts-nocheck +/// + +import { workers } from "config:middleware/multiworker-dev"; +import type { WorkerRegistry } from "../../src/dev-registry"; + +export function wrap(env: Record) { + const facadeEnv = { ...env }; + // For every Worker definition that's available, + // create a fetcher for it on the facade env. + // for const [name, binding] of env + // if Workers[name] + // const details = Workers[name]; + + for (const [name, details] of Object.entries(workers as WorkerRegistry)) { + if (details) { + facadeEnv[name] = { + async fetch(...reqArgs: Parameters) { + const reqFromArgs = new Request(...reqArgs); + if (details.headers) { + for (const [key, value] of Object.entries(details.headers)) { + // In remote mode, you need to add a couple of headers + // to make sure it's talking to the 'dev' preview session + // (much like wrangler dev already does via proxy.ts) + reqFromArgs.headers.set(key, value); + } + return (env[name] as Fetcher).fetch(reqFromArgs); + } + + const url = new URL(reqFromArgs.url); + if (details.protocol !== undefined) { + url.protocol = details.protocol; + } + if (details.host !== undefined) { + url.host = details.host; + } + if (details.port !== undefined) { + url.port = details.port.toString(); + } + + const request = new Request(url.toString(), reqFromArgs); + return fetch(request); + }, + }; + } else { + // This means there's no dev binding available. + // Let's use whatever's available, or put a shim with a message. + facadeEnv[name] = facadeEnv[name] || { + async fetch() { + return new Response( + `You should start up wrangler dev --local on the ${name} worker`, + { status: 404 } + ); + }, + }; + } + } + return facadeEnv; +} -- cgit v1.2.3