astro-ghostcms/.pnpm-store/v3/files/11/a654ef6b2014b68a204231aa5f7...

83 lines
2.1 KiB
Plaintext
Raw Normal View History

2024-02-14 14:10:47 +00:00
import { EventEmitter } from "node:events";
import path from "node:path";
function createViteLoader(viteServer) {
const events = new EventEmitter();
let isTsconfigUpdated = false;
function isTsconfigUpdate(filePath) {
const result = path.basename(filePath) === "tsconfig.json";
if (result)
isTsconfigUpdated = true;
return result;
}
viteServer.watcher.on("add", (...args) => {
if (!isTsconfigUpdate(args[0])) {
events.emit("file-add", args);
}
});
viteServer.watcher.on("unlink", (...args) => {
if (!isTsconfigUpdate(args[0])) {
events.emit("file-unlink", args);
}
});
viteServer.watcher.on("change", (...args) => {
if (!isTsconfigUpdate(args[0])) {
events.emit("file-change", args);
}
});
const _wsSend = viteServer.ws.send;
viteServer.ws.send = function(...args) {
if (isTsconfigUpdated) {
isTsconfigUpdated = false;
return;
}
const msg = args[0];
if (msg?.type === "error") {
events.emit("hmr-error", msg);
}
_wsSend.apply(this, args);
};
return {
import(src) {
return viteServer.ssrLoadModule(src);
},
async resolveId(spec, parent) {
const ret = await viteServer.pluginContainer.resolveId(spec, parent);
return ret?.id;
},
getModuleById(id) {
return viteServer.moduleGraph.getModuleById(id);
},
getModulesByFile(file) {
return viteServer.moduleGraph.getModulesByFile(file);
},
getModuleInfo(id) {
return viteServer.pluginContainer.getModuleInfo(id);
},
eachModule(cb) {
return viteServer.moduleGraph.idToModuleMap.forEach(cb);
},
invalidateModule(mod) {
viteServer.moduleGraph.invalidateModule(mod);
},
fixStacktrace(err) {
return viteServer.ssrFixStacktrace(err);
},
clientReload() {
viteServer.ws.send({
type: "full-reload",
path: "*"
});
},
webSocketSend(msg) {
return viteServer.ws.send(msg);
},
isHttps() {
return !!viteServer.config.server.https;
},
events
};
}
export {
createViteLoader
};