one
Version:
One is a new React Framework that makes Vite serve both native and web.
42 lines (41 loc) • 1.6 kB
JavaScript
import { readFileSync } from "node:fs";
import { resolvePath } from "@vxrn/resolve";
const DEVTOOLS_VIRTUAL_ID = "/@one/dev.js";
function createDevtoolsPlugin(options = {}) {
const {
includeUI = !0
} = options;
return {
name: "one-devtools",
apply: "serve",
// only in dev
configureServer(server) {
server.middlewares.use(async (req, res, next) => {
if (req.url === DEVTOOLS_VIRTUAL_ID) {
try {
const devEntryPath = resolvePath("one/devtools/dev.mjs");
let code = readFileSync(devEntryPath, "utf-8").replace("import './devtools.mjs'", "").replace("import './source-inspector.mjs'", "");
if (includeUI) {
const devtoolsPath = resolvePath("one/devtools/devtools.mjs"),
sourceInspectorPath = resolvePath("one/devtools/source-inspector.mjs"),
devtools = readFileSync(devtoolsPath, "utf-8"),
sourceInspector = readFileSync(sourceInspectorPath, "utf-8");
code = `${code}
${devtools}
${sourceInspector}`;
}
res.setHeader("Content-Type", "application/javascript"), res.setHeader("Cache-Control", "no-store"), res.end(code);
return;
} catch (e) {
console.error("[one] Failed to load devtools script:", e);
}
res.setHeader("Content-Type", "application/javascript"), res.end("// devtools failed to load");
return;
}
next();
});
}
};
}
export { DEVTOOLS_VIRTUAL_ID, createDevtoolsPlugin };
//# sourceMappingURL=devtoolsPlugin.mjs.map