diff --git a/.changeset/dry-women-cry.md b/.changeset/dry-women-cry.md new file mode 100644 index 000000000000..a279463fe47b --- /dev/null +++ b/.changeset/dry-women-cry.md @@ -0,0 +1,5 @@ +--- +"@cloudflare/vite-plugin": patch +--- + +Fix Vite 7.2 compatibility. diff --git a/packages/vite-plugin-cloudflare/src/cloudflare-environment.ts b/packages/vite-plugin-cloudflare/src/cloudflare-environment.ts index 4df8cb04fa52..50c38c698901 100644 --- a/packages/vite-plugin-cloudflare/src/cloudflare-environment.ts +++ b/packages/vite-plugin-cloudflare/src/cloudflare-environment.ts @@ -1,6 +1,7 @@ import assert from "node:assert"; import * as util from "node:util"; import * as vite from "vite"; +import { additionalModuleRE } from "./plugins/additional-modules"; import { VIRTUAL_WORKER_ENTRY } from "./plugins/virtual-modules"; import { INIT_PATH, @@ -17,6 +18,7 @@ import type { ReplaceWorkersTypes, WebSocket, } from "miniflare"; +import type { FetchFunctionOptions } from "vite/module-runner"; export const MAIN_ENTRY_NAME = "index"; @@ -121,6 +123,21 @@ export class CloudflareDevEnvironment extends vite.DevEnvironment { webSocket.accept(); this.#webSocketContainer.webSocket = webSocket; } + + override async fetchModule( + id: string, + importer?: string, + options?: FetchFunctionOptions + ): Promise { + // Additional modules (CompiledWasm, Data, Text) + if (additionalModuleRE.test(id)) { + return { + externalize: id, + type: "module", + }; + } + return super.fetchModule(id, importer, options); + } } export const cloudflareBuiltInModules = [ diff --git a/packages/vite-plugin-cloudflare/src/miniflare-options.ts b/packages/vite-plugin-cloudflare/src/miniflare-options.ts index 56a2f8675cc1..ac34f68ef9c7 100644 --- a/packages/vite-plugin-cloudflare/src/miniflare-options.ts +++ b/packages/vite-plugin-cloudflare/src/miniflare-options.ts @@ -46,7 +46,6 @@ import type { WorkerdStructuredLog, WorkerOptions, } from "miniflare"; -import type { FetchFunctionOptions } from "vite/module-runner"; import type { Binding, RemoteProxySession, @@ -506,36 +505,11 @@ export async function getDevMiniflareOptions(config: { __VITE_INVOKE_MODULE__: async (request) => { const payload = (await request.json()) as vite.CustomPayload; - const invokePayloadData = payload.data as { - id: string; - name: string; - data: [string, string, FetchFunctionOptions]; - }; - - assert( - invokePayloadData.name === "fetchModule", - `Invalid invoke event: ${invokePayloadData.name}` - ); - - const [moduleId] = invokePayloadData.data; - - // Additional modules (CompiledWasm, Data, Text) - if (additionalModuleRE.test(moduleId)) { - const result = { - externalize: moduleId, - type: "module", - } satisfies vite.FetchResult; - - return MiniflareResponse.json({ result }); - } - const devEnvironment = viteDevServer.environments[ environmentName ] as CloudflareDevEnvironment; - const result = await devEnvironment.hot.handleInvoke(payload); - return MiniflareResponse.json(result); }, },