rwsdk
Version:
Build fast, server-driven webapps on Cloudflare with SSR, RSC, and realtime
31 lines (30 loc) • 1.14 kB
JavaScript
import debug from "debug";
const log = debug("rwsdk:vite:invalidate-module");
export const invalidateModule = (devServer, environment, target, options = {}, seen = new Set()) => {
let moduleNode;
if (typeof target === "string") {
const id = target;
const [rawId, _query] = id.split("?");
moduleNode =
devServer?.environments[environment]?.moduleGraph.idToModuleMap.get(rawId);
}
else {
moduleNode = target;
}
if (moduleNode) {
if (seen.has(moduleNode)) {
return;
}
seen.add(moduleNode);
devServer.environments[environment]?.moduleGraph.invalidateModule(moduleNode, seen);
log("Invalidating module: id=%s, environment=%s", moduleNode.id, environment);
if (options.invalidateImportersRecursively) {
for (const importer of moduleNode.importers) {
invalidateModule(devServer, environment, importer, options, seen);
}
}
}
else {
log("Module not found: id=%s, environment=%s", typeof target === "string" ? target : target.id, environment);
}
};