@redwoodjs/sdk
Version:
Build fast, server-driven webapps on Cloudflare with SSR, RSC, and realtime
33 lines (32 loc) • 1.69 kB
JavaScript
import { createRequire } from "module";
import { resolve as importMetaResolve } from "import-meta-resolve";
import baseDebug from "debug";
// context(justinvdm, 31 Mar 2024): Miniflare always tries to use port 9229 for its inspector,
// which causes issues when running multiple worker scripts concurrently (e.g. during
// parallel postinstall runs in our monorepo). We patch Miniflare's constructor to use
// auto-assigned ports (port 0) instead of the hardcoded 9229.
const debug = baseDebug("rwsdk:patch-miniflare");
debug("Resolving @cloudflare/vite-plugin path...");
const vitePluginPath = importMetaResolve("@cloudflare/vite-plugin", import.meta.url);
debug("Resolved @cloudflare/vite-plugin to: %s", vitePluginPath);
debug("Creating require relative to vite plugin...");
const vitePluginRequire = createRequire(vitePluginPath);
debug("Resolving miniflare path...");
const miniflareModulePath = vitePluginRequire.resolve("miniflare");
debug("Resolved miniflare to: %s", miniflareModulePath);
debug("Loading miniflare module...");
const miniflare = vitePluginRequire("miniflare");
const OriginalMiniflare = miniflare.Miniflare;
debug("Patching Miniflare constructor via subclass...");
class PatchedMiniflare extends OriginalMiniflare {
constructor(options, ...args) {
debug("Constructor initialized: %o", options);
if (options?.inspectorPort === 9229 || options?.inspectorPort == null) {
debug("Replacing inspector port %s with 0", options?.inspectorPort);
options.inspectorPort = 0;
}
super(options, ...args);
}
}
miniflare.Miniflare = PatchedMiniflare;
debug("Miniflare constructor patched successfully via subclass");