one
Version:
One is a new React Framework that makes Vite serve both native and web.
42 lines • 1.9 kB
JavaScript
var import_node_fs = require("node:fs");
var import_node_os = require("node:os");
var import_node_path = require("node:path");
var import_vitest = require("vitest");
var import_workerdDevPlugin = require("./workerdDevPlugin.cjs");
let testDir;
(0, import_vitest.afterEach)(() => {
if (testDir) {
(0, import_node_fs.rmSync)(testDir, {
recursive: true,
force: true
});
testDir = void 0;
}
});
(0, import_vitest.describe)("generateWorkerdDevEntryModule", () => {
(0, import_vitest.it)("emits createWorkerHandler wiring and lazy imports for pages and api routes", () => {
testDir = (0, import_node_fs.mkdtempSync)((0, import_node_path.join)((0, import_node_os.tmpdir)(), "one-workerd-entry-"));
const appDir = (0, import_node_path.join)(testDir, "app");
(0, import_node_fs.mkdirSync)((0, import_node_path.join)(appDir, "api"), {
recursive: true
});
(0, import_node_fs.writeFileSync)((0, import_node_path.join)(appDir, "ssr-page+ssr.tsx"), "export default function Page() { return null }\n");
(0, import_node_fs.writeFileSync)((0, import_node_path.join)(appDir, "api", "hello+api.ts"), 'export function GET() { return new Response("ok") }\n');
const code = (0, import_workerdDevPlugin.generateWorkerdDevEntryModule)({
root: testDir,
options: {
web: {
defaultRenderMode: "ssr"
}
},
routerRoot: "app",
routePaths: ["./ssr-page+ssr.tsx", "./api/hello+api.ts"],
preloads: ["/@vite/client"]
});
(0, import_vitest.expect)(code).toContain("from 'one/serve-worker'");
(0, import_vitest.expect)(code).toContain("disableModuleCache: true");
(0, import_vitest.expect)(code).toContain('serverEntry: () => import("virtual:one-entry")');
(0, import_vitest.expect)(code).toContain("/api/hello");
(0, import_vitest.expect)(code).toContain("ssr-page+ssr.tsx");
});
});