@ilha/router 0.4.2 → 0.4.3
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/dist/{index-DSE6uoR1.d.ts → index-CJT0h4u4.d.ts} +8 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/{plugin-Bhbl9aqc.js → plugin-BMk5Ey9X.js} +1 -1
- package/dist/rolldown.d.ts +1 -1
- package/dist/rolldown.js +2 -2
- package/dist/rspack.d.ts +1 -1
- package/dist/rspack.js +2 -2
- package/dist/{src-DX07qe2S.js → src-BqAWh426.js} +24 -6
- package/dist/vite.d.ts +1 -1
- package/dist/vite.js +2 -2
- package/package.json +1 -1
|
@@ -24,6 +24,8 @@ interface RouteRecord {
|
|
|
24
24
|
island: Island<any, any>;
|
|
25
25
|
/** Merged loader chain (layouts outer→inner, then page) — `undefined` if no loaders. */
|
|
26
26
|
loader?: Loader<any>;
|
|
27
|
+
/** True when the route has a server-side loader, even if the client only has a marker. */
|
|
28
|
+
hasLoader?: boolean;
|
|
27
29
|
}
|
|
28
30
|
interface RouteSnapshot {
|
|
29
31
|
path: string;
|
|
@@ -138,6 +140,12 @@ interface RouterBuilder {
|
|
|
138
140
|
* was never registered via `.route()`.
|
|
139
141
|
*/
|
|
140
142
|
attachLoader(pattern: string, loader: Loader<any>): RouterBuilder;
|
|
143
|
+
/**
|
|
144
|
+
* Mark an already-registered route as having a server-side loader without
|
|
145
|
+
* importing that loader into the client bundle. Used by FS-routing codegen
|
|
146
|
+
* so SPA navigation knows to call the loader endpoint.
|
|
147
|
+
*/
|
|
148
|
+
markLoader(pattern: string): RouterBuilder;
|
|
141
149
|
/**
|
|
142
150
|
* Return a snapshot of every registered route in match order. Useful for
|
|
143
151
|
* prerenderers that need to discover the filesystem routes exposed by
|
package/dist/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { A as loader, B as useRoute, C as RouterView, D as enableLinkInterception, E as defineLayout, F as routeHash, G as setHistoryMode, H as wrapLayout, I as routeParams, L as routePath, M as prefetch, N as prime, O as error, P as redirect, R as routeSearch, S as RouterOptions, T as composeLoaders, U as HistoryMode, V as wrapError, W as getHistoryMode, _ as RouteRecord, a as InferLoader, b as RouterLink, c as LinkInterceptionOptions, d as LoaderError, f as MergeLoaders, g as RenderResponse, h as Redirect, i as HydrateOptions, j as navigate, k as isActive, l as Loader, m as NavigateOptions, n as ErrorHandler, o as LOADER_ENDPOINT, p as MountOptions, r as HydratableRenderOptions, s as LayoutHandler, t as AppError, u as LoaderContext, v as RouteSnapshot, w as _default, x as RouterMode, y as RouterBuilder, z as router } from "./index-
|
|
1
|
+
import { A as loader, B as useRoute, C as RouterView, D as enableLinkInterception, E as defineLayout, F as routeHash, G as setHistoryMode, H as wrapLayout, I as routeParams, L as routePath, M as prefetch, N as prime, O as error, P as redirect, R as routeSearch, S as RouterOptions, T as composeLoaders, U as HistoryMode, V as wrapError, W as getHistoryMode, _ as RouteRecord, a as InferLoader, b as RouterLink, c as LinkInterceptionOptions, d as LoaderError, f as MergeLoaders, g as RenderResponse, h as Redirect, i as HydrateOptions, j as navigate, k as isActive, l as Loader, m as NavigateOptions, n as ErrorHandler, o as LOADER_ENDPOINT, p as MountOptions, r as HydratableRenderOptions, s as LayoutHandler, t as AppError, u as LoaderContext, v as RouteSnapshot, w as _default, x as RouterMode, y as RouterBuilder, z as router } from "./index-CJT0h4u4.js";
|
|
2
2
|
export { AppError, ErrorHandler, HistoryMode, HydratableRenderOptions, HydrateOptions, InferLoader, LOADER_ENDPOINT, LayoutHandler, LinkInterceptionOptions, Loader, LoaderContext, LoaderError, MergeLoaders, MountOptions, NavigateOptions, Redirect, RenderResponse, RouteRecord, RouteSnapshot, RouterBuilder, RouterLink, RouterMode, RouterOptions, RouterView, composeLoaders, _default as default, defineLayout, enableLinkInterception, error, getHistoryMode, isActive, loader, navigate, prefetch, prime, redirect, routeHash, routeParams, routePath, routeSearch, router, setHistoryMode, useRoute, wrapError, wrapLayout };
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { C as wrapError, E as setHistoryMode, S as useRoute, T as getHistoryMode, _ as routeParams, a as RouterView, b as router, c as enableLinkInterception, d as loader, f as navigate, g as routeHash, h as redirect, i as RouterLink, l as error, m as prime, n as LoaderError, o as composeLoaders, p as prefetch, r as Redirect, s as defineLayout, t as LOADER_ENDPOINT, u as isActive, v as routePath, w as wrapLayout, x as src_default, y as routeSearch } from "./src-
|
|
1
|
+
import { C as wrapError, E as setHistoryMode, S as useRoute, T as getHistoryMode, _ as routeParams, a as RouterView, b as router, c as enableLinkInterception, d as loader, f as navigate, g as routeHash, h as redirect, i as RouterLink, l as error, m as prime, n as LoaderError, o as composeLoaders, p as prefetch, r as Redirect, s as defineLayout, t as LOADER_ENDPOINT, u as isActive, v as routePath, w as wrapLayout, x as src_default, y as routeSearch } from "./src-BqAWh426.js";
|
|
2
2
|
export { LOADER_ENDPOINT, LoaderError, Redirect, RouterLink, RouterView, composeLoaders, src_default as default, defineLayout, enableLinkInterception, error, getHistoryMode, isActive, loader, navigate, prefetch, prime, redirect, routeHash, routeParams, routePath, routeSearch, router, setHistoryMode, useRoute, wrapError, wrapLayout };
|
|
@@ -162,7 +162,7 @@ async function generate(pagesDir, outFile, options = {}) {
|
|
|
162
162
|
const wrappedId = `_wrapped${i}`;
|
|
163
163
|
wrappedIslandLines.push(`const ${wrappedId} = ${expr};`);
|
|
164
164
|
registryLines.push(` ${JSON.stringify(entry.name)}: ${wrappedId}` + (i < entries.length - 1 ? "," : ""));
|
|
165
|
-
routeLines.push(` .route(${JSON.stringify(entry.pattern)}, ${wrappedId})`);
|
|
165
|
+
routeLines.push(` .route(${JSON.stringify(entry.pattern)}, ${wrappedId})` + (entry.hasLoader || entry.loaderLayouts.length > 0 ? `.markLoader(${JSON.stringify(entry.pattern)})` : ""));
|
|
166
166
|
}
|
|
167
167
|
const code = [
|
|
168
168
|
`// @generated by @ilha/router — do not edit`,
|
package/dist/rolldown.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { H as wrapLayout, V as wrapError, n as ErrorHandler, s as LayoutHandler, t as AppError, v as RouteSnapshot } from "./index-
|
|
1
|
+
import { H as wrapLayout, V as wrapError, n as ErrorHandler, s as LayoutHandler, t as AppError, v as RouteSnapshot } from "./index-CJT0h4u4.js";
|
|
2
2
|
import { n as ilhaPages, t as IlhaPagesOptions } from "./plugin-Diq1AxSa.js";
|
|
3
3
|
import * as _$unplugin from "unplugin";
|
|
4
4
|
|
package/dist/rolldown.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { C as wrapError, w as wrapLayout } from "./src-
|
|
2
|
-
import { t as ilhaPages } from "./plugin-
|
|
1
|
+
import { C as wrapError, w as wrapLayout } from "./src-BqAWh426.js";
|
|
2
|
+
import { t as ilhaPages } from "./plugin-BMk5Ey9X.js";
|
|
3
3
|
//#region src/rolldown.ts
|
|
4
4
|
/** Rolldown plugin — use via `@ilha/router/rolldown`. */
|
|
5
5
|
function pages(options = {}) {
|
package/dist/rspack.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { H as wrapLayout, V as wrapError, n as ErrorHandler, s as LayoutHandler, t as AppError, v as RouteSnapshot } from "./index-
|
|
1
|
+
import { H as wrapLayout, V as wrapError, n as ErrorHandler, s as LayoutHandler, t as AppError, v as RouteSnapshot } from "./index-CJT0h4u4.js";
|
|
2
2
|
import { n as ilhaPages, t as IlhaPagesOptions } from "./plugin-Diq1AxSa.js";
|
|
3
3
|
import * as _$unplugin from "unplugin";
|
|
4
4
|
|
package/dist/rspack.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { C as wrapError, w as wrapLayout } from "./src-
|
|
2
|
-
import { t as ilhaPages } from "./plugin-
|
|
1
|
+
import { C as wrapError, w as wrapLayout } from "./src-BqAWh426.js";
|
|
2
|
+
import { t as ilhaPages } from "./plugin-BMk5Ey9X.js";
|
|
3
3
|
//#region src/rspack.ts
|
|
4
4
|
/** Rspack plugin — use via `@ilha/router/rspack`. */
|
|
5
5
|
function pages(options = {}) {
|
|
@@ -349,7 +349,7 @@ function prefetch(pathWithSearch) {
|
|
|
349
349
|
if (!isBrowser) return;
|
|
350
350
|
if (prefetchCache.has(pathWithSearch)) return;
|
|
351
351
|
const pathOnly = pathWithSearch.split("?")[0] ?? "";
|
|
352
|
-
if (!findRoute(_rou3, "GET", pathOnly)?.data?.
|
|
352
|
+
if (!findRoute(_rou3, "GET", pathOnly)?.data?.hasLoader) return;
|
|
353
353
|
const promise = fetchLoaderData(pathWithSearch).catch((e) => {
|
|
354
354
|
return {
|
|
355
355
|
kind: "error",
|
|
@@ -369,7 +369,7 @@ async function mountRouteWithHydration(island, host, pathWithSearch, signal, reg
|
|
|
369
369
|
host.innerHTML = `<div data-router-empty></div>`;
|
|
370
370
|
return () => {};
|
|
371
371
|
}
|
|
372
|
-
const hasLoader = !!findRoute(_rou3, "GET", pathWithSearch.split("?")[0] ?? "")?.data?.
|
|
372
|
+
const hasLoader = !!findRoute(_rou3, "GET", pathWithSearch.split("?")[0] ?? "")?.data?.hasLoader;
|
|
373
373
|
let props = {};
|
|
374
374
|
const loaderResult = hasLoader ? await fetchLoaderData(pathWithSearch, signal) : {
|
|
375
375
|
kind: "data",
|
|
@@ -587,14 +587,17 @@ function router(options = {}) {
|
|
|
587
587
|
let _linkCleanup = null;
|
|
588
588
|
const builder = {
|
|
589
589
|
route(pattern, island, loader) {
|
|
590
|
+
const hasLoader = !!loader;
|
|
590
591
|
const data = {
|
|
591
592
|
island,
|
|
592
|
-
loader
|
|
593
|
+
loader,
|
|
594
|
+
hasLoader
|
|
593
595
|
};
|
|
594
596
|
_records.push({
|
|
595
597
|
pattern,
|
|
596
598
|
island,
|
|
597
|
-
loader
|
|
599
|
+
loader,
|
|
600
|
+
hasLoader
|
|
598
601
|
});
|
|
599
602
|
addRoute(_rou3, "GET", pattern, data);
|
|
600
603
|
_patternToData.set(pattern, data);
|
|
@@ -608,8 +611,23 @@ function router(options = {}) {
|
|
|
608
611
|
return builder;
|
|
609
612
|
}
|
|
610
613
|
data.loader = loader;
|
|
614
|
+
data.hasLoader = true;
|
|
611
615
|
const rec = _records.find((r) => r.pattern === pattern);
|
|
612
|
-
if (rec)
|
|
616
|
+
if (rec) {
|
|
617
|
+
rec.loader = loader;
|
|
618
|
+
rec.hasLoader = true;
|
|
619
|
+
}
|
|
620
|
+
return builder;
|
|
621
|
+
},
|
|
622
|
+
markLoader(pattern) {
|
|
623
|
+
const data = _patternToData.get(pattern);
|
|
624
|
+
if (!data) {
|
|
625
|
+
console.warn(`[ilha-router] markLoader("${pattern}"): pattern was never registered via .route(). The loader marker will be ignored.`);
|
|
626
|
+
return builder;
|
|
627
|
+
}
|
|
628
|
+
data.hasLoader = true;
|
|
629
|
+
const rec = _records.find((r) => r.pattern === pattern);
|
|
630
|
+
if (rec) rec.hasLoader = true;
|
|
613
631
|
return builder;
|
|
614
632
|
},
|
|
615
633
|
routes() {
|
|
@@ -693,7 +711,7 @@ function router(options = {}) {
|
|
|
693
711
|
const viewHost = host?.querySelector("[data-router-view]");
|
|
694
712
|
if (!viewHost) return;
|
|
695
713
|
const loc = getAdapter().readLocation();
|
|
696
|
-
const result = !!findRoute(_rou3, "GET", loc.pathname)?.data?.
|
|
714
|
+
const result = !!findRoute(_rou3, "GET", loc.pathname)?.data?.hasLoader ? await fetchLoaderData(loc.pathname + loc.search, signal) : {
|
|
697
715
|
kind: "data",
|
|
698
716
|
data: {}
|
|
699
717
|
};
|
package/dist/vite.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
import { H as wrapLayout, V as wrapError, n as ErrorHandler, s as LayoutHandler, t as AppError, v as RouteSnapshot } from "./index-
|
|
2
|
+
import { H as wrapLayout, V as wrapError, n as ErrorHandler, s as LayoutHandler, t as AppError, v as RouteSnapshot } from "./index-CJT0h4u4.js";
|
|
3
3
|
import { n as ilhaPages, t as IlhaPagesOptions } from "./plugin-Diq1AxSa.js";
|
|
4
4
|
import * as fs from "node:fs";
|
|
5
5
|
import * as http from "node:http";
|
package/dist/vite.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { C as wrapError, w as wrapLayout } from "./src-
|
|
2
|
-
import { t as ilhaPages } from "./plugin-
|
|
1
|
+
import { C as wrapError, w as wrapLayout } from "./src-BqAWh426.js";
|
|
2
|
+
import { t as ilhaPages } from "./plugin-BMk5Ey9X.js";
|
|
3
3
|
//#region src/vite.ts
|
|
4
4
|
/** Vite plugin — use via `@ilha/router/vite`. */
|
|
5
5
|
function pages(options = {}) {
|