@sigil-dev/grimoire 0.7.5 → 0.7.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.grimoire/_routes.dom.js +8 -0
- package/.grimoire/_routes.hydrate.js +8 -0
- package/.grimoire/tsconfig.generated.json +11 -0
- package/.grimoire/types/ambient.d.ts +59 -0
- package/.grimoire/types/api/hello/$types.d.ts +50 -0
- package/.grimoire/types/api/items/$types.d.ts +50 -0
- package/.grimoire/types/echo/$types.d.ts +50 -0
- package/.grimoire/types/env-private.d.ts +5 -0
- package/.grimoire/types/env-public.d.ts +5 -0
- package/.grimoire/types/mixed/$types.d.ts +50 -0
- package/.grimoire/types/params/[docId]/$types.d.ts +52 -0
- package/.grimoire/types/reject/$types.d.ts +50 -0
- package/index.ts +21 -20
- package/package.json +13 -7
- package/preload.js +3 -0
- package/public/__grimoire__/hydrate.js +585 -0
- package/public/__grimoire__/index.js +490 -0
- package/server.ts +13 -13
- package/src/client/head.ts +29 -0
- package/src/client/router.ts +254 -40
- package/src/dev/compile-module.ts +173 -0
- package/src/dev/effect-registry.ts +23 -0
- package/src/dev/graph.ts +114 -0
- package/src/dev/hmr-client.ts +158 -0
- package/src/dev/hmr-server.ts +187 -0
- package/src/dev/loader.ts +47 -0
- package/src/dev/paths.ts +14 -0
- package/src/dev/runtime-bundle.ts +49 -0
- package/src/dev/watcher.ts +44 -0
- package/src/env/index.ts +25 -0
- package/src/env/plugin.ts +13 -0
- package/src/env/private.ts +5 -0
- package/src/env/public.ts +7 -0
- package/src/env/typegen.ts +51 -0
- package/src/integrations/vite.ts +1 -0
- package/src/rendering/head.ts +22 -2
- package/src/rendering/hydrate.ts +111 -18
- package/src/rendering/index.ts +263 -153
- package/src/rendering/ssrPlugin.ts +59 -39
- package/src/routing/manifest-gen.ts +18 -2
- package/src/routing/router.ts +94 -83
- package/src/routing/scanner.ts +26 -14
- package/src/routing/transform-routes.ts +68 -68
- package/src/server/build.ts +225 -76
- package/src/server/coordinator.ts +9 -0
- package/src/server/hooks.ts +24 -3
- package/src/server/index.ts +388 -104
- package/src/typegen/index.ts +30 -14
- package/src/types.ts +12 -2
- package/test/middleware.test.ts +6 -4
- package/test/rendering.test.ts +510 -356
- package/test/routing.test.ts +36 -0
- package/test/scanning.test.ts +39 -8
- package/test/scope.test.ts +24 -8
- package/test/server.test.ts +27 -7
- package/test/streaming.test.ts +117 -98
- package/test/typegen.test.ts +52 -24
- package/tsconfig.json +1 -0
package/test/typegen.test.ts
CHANGED
|
@@ -94,6 +94,7 @@ function makeRouteFile(
|
|
|
94
94
|
path: "/",
|
|
95
95
|
clientPath: "/src/routes/+page.tsx",
|
|
96
96
|
paramNames: [],
|
|
97
|
+
restParamNames: [],
|
|
97
98
|
...overrides,
|
|
98
99
|
};
|
|
99
100
|
}
|
|
@@ -302,6 +303,15 @@ export async function POST() { return Response.json({}); }`,
|
|
|
302
303
|
join(tmpDir, "src", "routes", "about.tsx"),
|
|
303
304
|
"export default () => null;",
|
|
304
305
|
);
|
|
306
|
+
|
|
307
|
+
// Rest (catch-all) param route
|
|
308
|
+
await mkdir(join(tmpDir, "src", "routes", "files", "[...path]"), {
|
|
309
|
+
recursive: true,
|
|
310
|
+
});
|
|
311
|
+
await writeFile(
|
|
312
|
+
join(tmpDir, "src", "routes", "files", "[...path]", "+server.ts"),
|
|
313
|
+
`export async function GET() { return new Response("ok"); }`,
|
|
314
|
+
);
|
|
305
315
|
});
|
|
306
316
|
|
|
307
317
|
afterAll(async () => {
|
|
@@ -471,7 +481,7 @@ describe("generateTypes — route with +page.server.ts", () => {
|
|
|
471
481
|
});
|
|
472
482
|
|
|
473
483
|
describe("generateTypes — +layout.server.ts", () => {
|
|
474
|
-
test("LayoutData inferred from load() via
|
|
484
|
+
test("LayoutData inferred from load() via typeof import", async () => {
|
|
475
485
|
const content = await readGenerated("src/routes/blog");
|
|
476
486
|
expect(content).toMatch(/type _LS = typeof import\("/);
|
|
477
487
|
expect(content).toContain(
|
|
@@ -508,34 +518,43 @@ describe("generateTypes — +error.tsx", () => {
|
|
|
508
518
|
test("generates ErrorProps type", async () => {
|
|
509
519
|
const content = await readGenerated("src/routes");
|
|
510
520
|
expect(content).toContain(
|
|
511
|
-
"export type ErrorProps = { status: number; message: string };",
|
|
521
|
+
"export type ErrorProps = { status: number; message: string; error: unknown; route: string };",
|
|
512
522
|
);
|
|
513
523
|
});
|
|
514
524
|
});
|
|
515
525
|
|
|
516
|
-
describe("generateTypes —
|
|
517
|
-
test("
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
tmpDir,
|
|
522
|
-
".grimoire",
|
|
523
|
-
"types",
|
|
524
|
-
"src",
|
|
525
|
-
"routes",
|
|
526
|
-
"old-route",
|
|
527
|
-
);
|
|
528
|
-
await mkdir(staleDir, { recursive: true });
|
|
529
|
-
await writeFile(join(staleDir, "$types.d.ts"), "// stale");
|
|
530
|
-
|
|
531
|
-
// Re-run
|
|
532
|
-
await runGenerate();
|
|
533
|
-
|
|
534
|
-
// Stale file should be gone
|
|
535
|
-
expect(existsSync(join(staleDir, "$types.d.ts"))).toBe(false);
|
|
526
|
+
describe("generateTypes — rest (catch-all) params", () => {
|
|
527
|
+
test("Params includes rest param name as string", async () => {
|
|
528
|
+
const content = await readGenerated("src/routes/files/[...path]");
|
|
529
|
+
expect(content).toContain("path: string;");
|
|
530
|
+
expect(content).toMatch(/export type Params = \{\s+path: string;\s+\};/);
|
|
536
531
|
});
|
|
537
532
|
});
|
|
538
533
|
|
|
534
|
+
// This behavior no lnger exists
|
|
535
|
+
// describe("generateTypes — clears stale output", () => {
|
|
536
|
+
// test("removes files from a deleted route on re-run", async () => {
|
|
537
|
+
// // First run already happened in beforeAll via runGenerate()
|
|
538
|
+
// // Write a stale file manually
|
|
539
|
+
// const staleDir = join(
|
|
540
|
+
// tmpDir,
|
|
541
|
+
// ".grimoire",
|
|
542
|
+
// "types",
|
|
543
|
+
// "src",
|
|
544
|
+
// "routes",
|
|
545
|
+
// "old-route",
|
|
546
|
+
// );
|
|
547
|
+
// await mkdir(staleDir, { recursive: true });
|
|
548
|
+
// await writeFile(join(staleDir, "$types.d.ts"), "// stale");
|
|
549
|
+
|
|
550
|
+
// // Re-run
|
|
551
|
+
// await runGenerate();
|
|
552
|
+
|
|
553
|
+
// // Stale file should be gone
|
|
554
|
+
// expect(existsSync(join(staleDir, "$types.d.ts"))).toBe(false);
|
|
555
|
+
// });
|
|
556
|
+
// });
|
|
557
|
+
|
|
539
558
|
// ---------------------------------------------------------------------------
|
|
540
559
|
// tsc integration — proves the generated types actually type-check
|
|
541
560
|
// ---------------------------------------------------------------------------
|
|
@@ -603,10 +622,19 @@ export {};`,
|
|
|
603
622
|
});
|
|
604
623
|
|
|
605
624
|
function runTsc(cwd: string) {
|
|
606
|
-
|
|
607
|
-
[
|
|
625
|
+
const proc = Bun.spawnSync(
|
|
626
|
+
[
|
|
627
|
+
process.execPath,
|
|
628
|
+
"x",
|
|
629
|
+
"--bun",
|
|
630
|
+
"@typescript/native-preview",
|
|
631
|
+
"--noEmit",
|
|
632
|
+
"--project",
|
|
633
|
+
"tsconfig.json",
|
|
634
|
+
],
|
|
608
635
|
{ cwd },
|
|
609
636
|
);
|
|
637
|
+
return proc;
|
|
610
638
|
}
|
|
611
639
|
|
|
612
640
|
test("check.ts with correct types passes tsc", () => {
|