From 7c244bbf0f45413df9b8c3e0186332e32a755f91 Mon Sep 17 00:00:00 2001 From: Rahul Sethi <5822355+RamIdeas@users.noreply.github.com> Date: Mon, 22 Jul 2024 18:58:10 +0100 Subject: [PATCH] reimplement handling enablePagesAssetsServiceBinding as a fetcher type binding --- .../startDevWorker/LocalRuntimeController.ts | 17 ----------- .../wrangler/src/api/startDevWorker/types.ts | 2 -- packages/wrangler/src/dev.tsx | 29 +++++++++++++++++++ packages/wrangler/src/dev/dev.tsx | 2 -- packages/wrangler/src/dev/start-server.ts | 3 -- 5 files changed, 29 insertions(+), 24 deletions(-) diff --git a/packages/wrangler/src/api/startDevWorker/LocalRuntimeController.ts b/packages/wrangler/src/api/startDevWorker/LocalRuntimeController.ts index ff6ed2253e7e..d34f1b2a3387 100644 --- a/packages/wrangler/src/api/startDevWorker/LocalRuntimeController.ts +++ b/packages/wrangler/src/api/startDevWorker/LocalRuntimeController.ts @@ -84,23 +84,6 @@ async function convertToConfigBundle( event.bundle = { ...event.bundle, modules: [] }; } - if (event.config.legacy?.enablePagesAssetsServiceBinding !== undefined) { - // `../miniflare-cli/assets` dynamically imports`@cloudflare/pages-shared/environment-polyfills`. - // `@cloudflare/pages-shared/environment-polyfills/types.ts` defines `global` - // augmentations that pollute the `import`-site's typing environment. - // - // We `require` instead of `import`ing here to avoid polluting the main - // `wrangler` TypeScript project with the `global` augmentations. This - // relies on the fact that `require` is untyped. - // - // eslint-disable-next-line @typescript-eslint/no-var-requires - const generateASSETSBinding = require("../../miniflare-cli/assets").default; - fetchers.ASSETS = await generateASSETSBinding({ - log: logger, - ...event.config.legacy?.enablePagesAssetsServiceBinding, - }); - } - return { name: event.config.name, bundle: event.bundle, diff --git a/packages/wrangler/src/api/startDevWorker/types.ts b/packages/wrangler/src/api/startDevWorker/types.ts index 55aca7aed165..9a71f4be460f 100644 --- a/packages/wrangler/src/api/startDevWorker/types.ts +++ b/packages/wrangler/src/api/startDevWorker/types.ts @@ -28,7 +28,6 @@ import type { import type { WorkerRegistry } from "../../dev-registry"; import type { CfAccount } from "../../dev/create-worker-preview"; import type { EsbuildBundle } from "../../dev/use-esbuild"; -import type { EnablePagesAssetsServiceBindingOptions } from "../../miniflare-cli/types"; import type { ConfigController } from "./ConfigController"; import type { DispatchFetch, @@ -161,7 +160,6 @@ export interface StartDevWorkerInput { site?: Hook; assets?: Hook; enableServiceEnvironments?: boolean; - enablePagesAssetsServiceBinding?: EnablePagesAssetsServiceBindingOptions; }; unsafe?: Omit; } diff --git a/packages/wrangler/src/dev.tsx b/packages/wrangler/src/dev.tsx index 628b33ae9ced..c681490cf420 100644 --- a/packages/wrangler/src/dev.tsx +++ b/packages/wrangler/src/dev.tsx @@ -485,6 +485,32 @@ async function updateDevEnvRegistry( }); } +async function getPagesAssetsFetcher( + options: EnablePagesAssetsServiceBindingOptions | undefined +): Promise { + if (options !== undefined) { + // `../miniflare-cli/assets` dynamically imports`@cloudflare/pages-shared/environment-polyfills`. + // `@cloudflare/pages-shared/environment-polyfills/types.ts` defines `global` + // augmentations that pollute the `import`-site's typing environment. + // + // We `require` instead of `import`ing here to avoid polluting the main + // `wrangler` TypeScript project with the `global` augmentations. This + // relies on the fact that `require` is untyped. + // + // eslint-disable-next-line @typescript-eslint/no-var-requires + const generateASSETSBinding = require("../miniflare-cli/assets").default; + return { + ASSETS: { + type: "fetcher", + fetcher: await generateASSETSBinding({ + log: logger, + ...options, + }), + }, + }; + } +} + export async function startDev(args: StartDevOptions) { let watcher: ReturnType | undefined; let rerender: (node: React.ReactNode) => void | undefined; @@ -625,6 +651,9 @@ export async function startDev(args: StartDevOptions) { }), }, bindings: { + ...(await getPagesAssetsFetcher( + args.enablePagesAssetsServiceBinding + )), ...collectPlainTextVars(args.var), ...convertCfWorkerInitBindingstoBindings({ kv_namespaces: args.kv, diff --git a/packages/wrangler/src/dev/dev.tsx b/packages/wrangler/src/dev/dev.tsx index 010e5ad439a8..dfc6ac212ee8 100644 --- a/packages/wrangler/src/dev/dev.tsx +++ b/packages/wrangler/src/dev/dev.tsx @@ -474,7 +474,6 @@ function DevSession(props: DevSessionProps) { : undefined, assets: props.assetsConfig, enableServiceEnvironments: !props.legacyEnv, - enablePagesAssetsServiceBinding: props.enablePagesAssetsServiceBinding, }, unsafe: { capnp: props.bindings.unsafe?.capnp, @@ -519,7 +518,6 @@ function DevSession(props: DevSessionProps) { props.localUpstream, props.liveReload, props.testScheduled, - props.enablePagesAssetsServiceBinding, accountIdDeferred, ]); diff --git a/packages/wrangler/src/dev/start-server.ts b/packages/wrangler/src/dev/start-server.ts index 6f2be8da9feb..16e5001bac24 100644 --- a/packages/wrangler/src/dev/start-server.ts +++ b/packages/wrangler/src/dev/start-server.ts @@ -137,9 +137,6 @@ export async function startDevServer( moduleRoot: props.entry.moduleRoot, nodejsCompatMode: null, }, - legacy: { - enablePagesAssetsServiceBinding: props.enablePagesAssetsServiceBinding, - }, }; // temp: fake these events by calling the handler directly