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