From 1f697babaffdc4606bc3889592a6b5d9e16d53d0 Mon Sep 17 00:00:00 2001 From: emily-shen Date: Fri, 5 Jun 2026 16:28:03 +0100 Subject: [PATCH] [wrangler] Fix circular dependency build warning Break the circular dependency between src/api/index.ts and src/api/startDevWorker/utils.ts by having internal modules import directly from the source module instead of through the api barrel. The cycle was: api/index.ts re-exports from startDevWorker/utils.ts, which transitively depends (through types.ts, ConfigController, etc.) on files that import back from the api barrel. Pointing those imports at the actual source modules breaks every back-edge. --- packages/wrangler/src/assets.ts | 2 +- packages/wrangler/src/cli-hotkeys.ts | 2 +- packages/wrangler/src/dev.ts | 2 +- packages/wrangler/src/dev/hotkeys.ts | 2 +- packages/wrangler/src/dev/remote.ts | 2 +- packages/wrangler/src/dev/start-dev.ts | 8 ++++++-- packages/wrangler/src/tunnel/dev.ts | 2 +- packages/wrangler/src/utils/collectKeyValues.ts | 2 +- packages/wrangler/src/utils/useServiceEnvironments.ts | 2 +- packages/wrangler/src/versions/secrets/index.ts | 2 +- 10 files changed, 15 insertions(+), 11 deletions(-) diff --git a/packages/wrangler/src/assets.ts b/packages/wrangler/src/assets.ts index a8618aa8f3..6d4f7b3cbd 100644 --- a/packages/wrangler/src/assets.ts +++ b/packages/wrangler/src/assets.ts @@ -27,7 +27,7 @@ import { hashFile } from "./pages/hash"; import { isJwtExpired } from "./pages/upload"; import { getBasePath } from "./paths"; import { dedent } from "./utils/dedent"; -import type { StartDevWorkerOptions } from "./api"; +import type { StartDevWorkerOptions } from "./api/startDevWorker/types"; import type { DeployArgs } from "./deploy"; import type { StartDevOptions } from "./dev"; import type { AssetConfig, RouterConfig } from "@cloudflare/workers-shared"; diff --git a/packages/wrangler/src/cli-hotkeys.ts b/packages/wrangler/src/cli-hotkeys.ts index 8192ff6191..6f6d8215e1 100644 --- a/packages/wrangler/src/cli-hotkeys.ts +++ b/packages/wrangler/src/cli-hotkeys.ts @@ -3,7 +3,7 @@ import { dim } from "@cloudflare/cli-shared-helpers/colors"; import { unwrapHook } from "./api/startDevWorker/utils"; import { logger } from "./logger"; import { onKeyPress } from "./utils/onKeyPress"; -import type { Hook } from "./api"; +import type { Hook } from "./api/startDevWorker/types"; export default function ( options: Array<{ diff --git a/packages/wrangler/src/dev.ts b/packages/wrangler/src/dev.ts index a76a53c03f..cc5122ca86 100644 --- a/packages/wrangler/src/dev.ts +++ b/packages/wrangler/src/dev.ts @@ -14,7 +14,7 @@ import { validateRoutes } from "./deployment-bundle/resolve-config-args"; import { getVarsForDev } from "./dev/dev-vars"; import { startDev } from "./dev/start-dev"; import { logger } from "./logger"; -import type { StartDevWorkerInput, Trigger } from "./api"; +import type { StartDevWorkerInput, Trigger } from "./api/startDevWorker/types"; import type { EnablePagesAssetsServiceBindingOptions } from "./miniflare-cli/types"; import type { Binding, diff --git a/packages/wrangler/src/dev/hotkeys.ts b/packages/wrangler/src/dev/hotkeys.ts index 990fa9e7d3..6def5fabd4 100644 --- a/packages/wrangler/src/dev/hotkeys.ts +++ b/packages/wrangler/src/dev/hotkeys.ts @@ -6,7 +6,7 @@ import { logger } from "../logger"; import openInBrowser from "../open-in-browser"; import { debounce } from "../utils/debounce"; import { openInspector } from "./inspect"; -import type { DevEnv } from "../api"; +import type { DevEnv } from "../api/startDevWorker/DevEnv"; import type { TunnelManager } from "../tunnel/dev"; export default function registerDevHotKeys( diff --git a/packages/wrangler/src/dev/remote.ts b/packages/wrangler/src/dev/remote.ts index 436c692580..3786fae3c2 100644 --- a/packages/wrangler/src/dev/remote.ts +++ b/packages/wrangler/src/dev/remote.ts @@ -12,7 +12,7 @@ import { syncWorkersSite } from "../sites"; import { getAuthFromEnv, requireApiToken } from "../user"; import { isAbortError } from "../utils/isAbortError"; import { getZoneIdForPreview } from "../zones"; -import type { StartDevWorkerInput } from "../api"; +import type { StartDevWorkerInput } from "../api/startDevWorker/types"; import type { CfAccount } from "./create-worker-preview"; import type { EsbuildBundle } from "./use-esbuild"; import type { ApiCredentials } from "@cloudflare/workers-utils"; diff --git a/packages/wrangler/src/dev/start-dev.ts b/packages/wrangler/src/dev/start-dev.ts index 8067fb18e9..8d04bb3b46 100644 --- a/packages/wrangler/src/dev/start-dev.ts +++ b/packages/wrangler/src/dev/start-dev.ts @@ -4,7 +4,7 @@ import { bold, green } from "@cloudflare/cli-shared-helpers/colors"; import { generateContainerBuildId } from "@cloudflare/containers-shared"; import { getRegistryPath } from "@cloudflare/workers-utils"; import dedent from "ts-dedent"; -import { DevEnv } from "../api"; +import { DevEnv } from "../api/startDevWorker/DevEnv"; import { MultiworkerRuntimeController } from "../api/startDevWorker/MultiworkerRuntimeController"; import { NoOpProxyController } from "../api/startDevWorker/NoOpProxyController"; import { convertStartDevOptionsToBindings } from "../api/startDevWorker/utils"; @@ -19,7 +19,11 @@ import { collectKeyValues, collectPlainTextVars, } from "../utils/collectKeyValues"; -import type { AsyncHook, StartDevWorkerInput, Trigger } from "../api"; +import type { + AsyncHook, + StartDevWorkerInput, + Trigger, +} from "../api/startDevWorker/types"; import type { StartDevOptionsBindings } from "../api/startDevWorker/utils"; import type { StartDevOptions } from "../dev"; import type { EnablePagesAssetsServiceBindingOptions } from "../miniflare-cli/types"; diff --git a/packages/wrangler/src/tunnel/dev.ts b/packages/wrangler/src/tunnel/dev.ts index 2423061817..6f84dba06f 100644 --- a/packages/wrangler/src/tunnel/dev.ts +++ b/packages/wrangler/src/tunnel/dev.ts @@ -5,7 +5,7 @@ import encodeQR from "qr"; import { formatHostname } from "../dev/start-dev"; import { logger } from "../logger"; import { resolveNamedTunnel } from "./client"; -import type { DevEnv } from "../api"; +import type { DevEnv } from "../api/startDevWorker/DevEnv"; import type { StartDevOptions } from "../dev"; import type { Tunnel } from "@cloudflare/workers-utils"; diff --git a/packages/wrangler/src/utils/collectKeyValues.ts b/packages/wrangler/src/utils/collectKeyValues.ts index 09f4ac69b4..433d2adbeb 100644 --- a/packages/wrangler/src/utils/collectKeyValues.ts +++ b/packages/wrangler/src/utils/collectKeyValues.ts @@ -1,4 +1,4 @@ -import type { Binding } from "../api"; +import type { Binding } from "../api/startDevWorker/types"; /** * a function that takes an array of strings in `key:value` format diff --git a/packages/wrangler/src/utils/useServiceEnvironments.ts b/packages/wrangler/src/utils/useServiceEnvironments.ts index ccf5ba1fca..403df66dd4 100644 --- a/packages/wrangler/src/utils/useServiceEnvironments.ts +++ b/packages/wrangler/src/utils/useServiceEnvironments.ts @@ -1,4 +1,4 @@ -import type { StartDevWorkerOptions } from "../api"; +import type { StartDevWorkerOptions } from "../api/startDevWorker/types"; import type { Config } from "@cloudflare/workers-utils"; /** diff --git a/packages/wrangler/src/versions/secrets/index.ts b/packages/wrangler/src/versions/secrets/index.ts index 0a4c08808f..6f2e3863bb 100644 --- a/packages/wrangler/src/versions/secrets/index.ts +++ b/packages/wrangler/src/versions/secrets/index.ts @@ -7,7 +7,7 @@ import { fromMimeType, } from "../../deployment-bundle/create-worker-upload-form"; import { getMetricsUsageHeaders } from "../../metrics"; -import type { StartDevWorkerOptions } from "../../api"; +import type { StartDevWorkerOptions } from "../../api/startDevWorker/types"; import type { CfModule, CfPlacement,