@buzola/router 0.0.5 → 0.0.6

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.
Files changed (37) hide show
  1. package/dist/define/create-page.d.ts +7 -6
  2. package/dist/define/create-page.d.ts.map +1 -1
  3. package/dist/define/create-page.js +33 -120
  4. package/dist/define/create-page.js.map +1 -1
  5. package/dist/engine/loader-state.d.ts +68 -0
  6. package/dist/engine/loader-state.d.ts.map +1 -0
  7. package/dist/engine/loader-state.js +135 -0
  8. package/dist/engine/loader-state.js.map +1 -0
  9. package/dist/engine/route-tree.d.ts +1 -0
  10. package/dist/engine/route-tree.d.ts.map +1 -1
  11. package/dist/engine/route-tree.js +3 -1
  12. package/dist/engine/route-tree.js.map +1 -1
  13. package/dist/engine/router.d.ts +6 -0
  14. package/dist/engine/router.d.ts.map +1 -1
  15. package/dist/engine/router.js +19 -1
  16. package/dist/engine/router.js.map +1 -1
  17. package/dist/engine/types.d.ts +6 -0
  18. package/dist/engine/types.d.ts.map +1 -1
  19. package/dist/react/hooks.d.ts +2 -0
  20. package/dist/react/hooks.d.ts.map +1 -1
  21. package/dist/react/hooks.js +5 -1
  22. package/dist/react/hooks.js.map +1 -1
  23. package/dist/react/link.d.ts +7 -0
  24. package/dist/react/link.d.ts.map +1 -1
  25. package/dist/react/link.js +33 -6
  26. package/dist/react/link.js.map +1 -1
  27. package/package.json +1 -1
  28. package/src/__tests__/loader-state.test.ts +339 -0
  29. package/src/__tests__/router.test.ts +58 -0
  30. package/src/__tests__/type-safety.test.tsx +24 -0
  31. package/src/define/create-page.tsx +49 -140
  32. package/src/engine/loader-state.ts +178 -0
  33. package/src/engine/route-tree.ts +4 -0
  34. package/src/engine/router.ts +19 -1
  35. package/src/engine/types.ts +6 -0
  36. package/src/react/hooks.ts +5 -1
  37. package/src/react/link.tsx +49 -5
@@ -4,11 +4,12 @@ import type { EffectivePageParams, RegisteredPage, RouteComponent, StandardSchem
4
4
  export interface PageProps<TParams> {
5
5
  params: TParams;
6
6
  }
7
- export interface CatchContext {
7
+ export interface CatchContext<TParams = Record<string, never>> {
8
8
  error: Error;
9
+ params: TParams;
9
10
  retry: () => void;
10
11
  }
11
- type CatchHandler = React.ReactNode | ((ctx: CatchContext) => React.ReactNode);
12
+ type CatchHandler<TParams = Record<string, never>> = React.ReactNode | ((ctx: CatchContext<TParams>) => React.ReactNode);
12
13
  export interface ParamMeta {
13
14
  name: string;
14
15
  optional: boolean;
@@ -53,9 +54,9 @@ interface WithCatch<TParams, TRenderProps> {
53
54
  render(fn: ComponentType<TRenderProps>): PageDefinition<TParams>;
54
55
  }
55
56
  interface WithRoute<TParams, TRenderProps> {
56
- catch(handler: CatchHandler): WithCatch<TParams, TRenderProps>;
57
+ catch(handler: CatchHandler<TParams>): WithCatch<TParams, TRenderProps>;
57
58
  route<R extends string>(pattern: [ExtractRouteParams<R>] extends [keyof TParams & string] ? R : never): {
58
- catch(handler: CatchHandler): {
59
+ catch(handler: CatchHandler<TParams>): {
59
60
  render(fn: ComponentType<TRenderProps>): PageDefinition<TParams>;
60
61
  };
61
62
  render(fn: ComponentType<TRenderProps>): PageDefinition<TParams>;
@@ -85,9 +86,9 @@ interface PageBuilder {
85
86
  params: Record<string, never>;
86
87
  redirect: RedirectFn;
87
88
  }) => Promise<TData | BuzolaRedirect>): WithLoaderChain<Record<string, never>, TData>;
88
- catch(handler: CatchHandler): WithCatch<Record<string, never>, PageProps<Record<string, never>>>;
89
+ catch(handler: CatchHandler<Record<string, never>>): WithCatch<Record<string, never>, PageProps<Record<string, never>>>;
89
90
  route<R extends string>(pattern: [ExtractRouteParams<R>] extends [never] ? R : never): {
90
- catch(handler: CatchHandler): {
91
+ catch(handler: CatchHandler<Record<string, never>>): {
91
92
  render(fn: ComponentType<PageProps<Record<string, never>>>): PageDefinition;
92
93
  };
93
94
  render(fn: ComponentType<PageProps<Record<string, never>>>): PageDefinition;
@@ -1 +1 @@
1
- {"version":3,"file":"create-page.d.ts","sourceRoot":"","sources":["../../src/define/create-page.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-page.d.ts","sourceRoot":"","sources":["../../src/define/create-page.tsx"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { use, useCallback, useEffect, useMemo, useReducer, useState } from 'react';
3
+ import { PageLoaderState } from '../engine/loader-state.js';
3
4
  import { isOptionalSchema, resolveParamLiteral, validateSchema } from '../engine/schema.js';
4
5
  import { extractParamNames } from '../engine/utils.js';
5
6
  import { RouteContext, RouterContext } from '../react/context.js';
@@ -74,37 +75,12 @@ function combineLoaders(loaders) {
74
75
  };
75
76
  }
76
77
  // ─── Component factory ──────────────────────────────────────────────────────
77
- let nextPageId = 0;
78
78
  function createPageComponent(schema, paramsMeta, loaderFn, routePattern, RenderComponent, catchHandler) {
79
79
  const arrayParams = new Set(paramsMeta.filter(m => m.array).map(m => m.name));
80
- // Loader promise cache lives in the closure, outside React's render cycle.
81
- // This is critical: when use() suspends during the initial render, React
82
- // discards all uncommitted hook state (useRef, useState, useMemo).
83
- // On retry, hooks reinitialize, and useMemo/useRef would create a new promise,
84
- // causing an infinite suspend loop. The closure cache survives this.
85
- // Active load state (current URL)
86
- let activeUrlHref = null;
87
- let activeCacheKey = null;
88
- let activePromise = null;
89
- let activeResolvedData;
90
- let hasResolved = false;
91
- let pendingBackgroundKey = null;
92
- // Unique ID for namespacing entries in the global loader cache
93
- const pageId = nextPageId++;
94
- function staleCacheKey(urlHref) {
95
- return `${pageId}:${urlHref}`;
96
- }
97
- function staleCacheGet(cache, urlHref) {
98
- const key = staleCacheKey(urlHref);
99
- if (!cache.has(key))
100
- return { hit: false };
101
- const value = cache.get(key);
102
- cache.delete(key);
103
- return { hit: true, value };
104
- }
105
- function staleCacheSet(cache, urlHref, value) {
106
- cache.set(staleCacheKey(urlHref), value);
107
- }
80
+ // Loader state lives in the closure, outside React's render cycle.
81
+ // This is critical: when use() suspends, React discards uncommitted hook
82
+ // state. The PageLoaderState instance survives Suspense retries.
83
+ const loaderState = loaderFn ? new PageLoaderState() : undefined;
108
84
  function BuzolaPage() {
109
85
  const routeContext = use(RouteContext);
110
86
  if (!routeContext) {
@@ -156,117 +132,50 @@ function createPageComponent(schema, paramsMeta, loaderFn, routePattern, RenderC
156
132
  return;
157
133
  return router.onInvalidate(() => setLoaderKey(k => k + 1));
158
134
  }, [router]);
159
- const loaderCache = router?.loaderCache;
160
135
  let data;
161
136
  let isLoading = false;
162
137
  let shouldRedirect = false;
163
- if (loaderFn) {
138
+ if (loaderFn && loaderState) {
164
139
  const currentUrlHref = routeContext.state.location.href;
165
140
  const cacheKey = `${currentUrlHref}:${loaderKey}`;
166
- // URL changed — save old data to stale cache, restore from stale cache if available
167
- if (activeUrlHref !== null && activeUrlHref !== currentUrlHref) {
168
- if (loaderCache && hasResolved && activeResolvedData !== undefined) {
169
- staleCacheSet(loaderCache, activeUrlHref, activeResolvedData);
170
- }
171
- const cached = loaderCache && staleCacheGet(loaderCache, currentUrlHref);
172
- if (cached?.hit) {
173
- activeResolvedData = cached.value;
174
- hasResolved = true;
175
- }
176
- else {
177
- hasResolved = false;
178
- activeResolvedData = undefined;
179
- }
180
- pendingBackgroundKey = null;
181
- }
182
- else if (activeUrlHref === null && loaderCache) {
183
- // Remount — restore from stale cache
184
- const cached = staleCacheGet(loaderCache, currentUrlHref);
185
- if (cached.hit) {
186
- activeResolvedData = cached.value;
187
- hasResolved = true;
188
- }
189
- }
190
- activeUrlHref = currentUrlHref;
191
- if (activeCacheKey === cacheKey) {
192
- // Cache hit — check if background load is pending
193
- if (pendingBackgroundKey === cacheKey) {
194
- data = activeResolvedData;
195
- isLoading = true;
196
- }
197
- else {
198
- // Either resolved or first-time suspend
199
- if (hasResolved) {
200
- data = activeResolvedData;
201
- }
202
- else {
203
- data = use(activePromise);
204
- activeResolvedData = data;
205
- hasResolved = true;
206
- }
207
- }
208
- }
209
- else if (hasResolved) {
210
- // Cache key changed + we have stale data → background reload (SWR)
211
- const promise = loaderFn({ params, redirect });
212
- activeCacheKey = cacheKey;
213
- activePromise = promise;
214
- pendingBackgroundKey = cacheKey;
215
- data = activeResolvedData;
216
- isLoading = true;
217
- promise.then((result) => {
218
- // Only apply if this is still the active load
219
- if (activeCacheKey === cacheKey) {
220
- if (result instanceof BuzolaRedirect) {
221
- router?.navigateToPage(result.pageId, result.params, { replace: true });
141
+ const instruction = loaderState.resolve({
142
+ currentUrlHref,
143
+ cacheKey,
144
+ load: () => loaderFn({ params, redirect }),
145
+ loaderCache: router?.loaderCache,
146
+ onBackgroundSettled: (outcome) => {
147
+ if (outcome.ok) {
148
+ if (outcome.result instanceof BuzolaRedirect) {
149
+ router?.navigateToPage(outcome.result.pageId, outcome.result.params, { replace: true });
222
150
  return;
223
151
  }
224
- activeResolvedData = result;
225
- pendingBackgroundKey = null;
226
- forceUpdate();
152
+ loaderState.commitBackgroundResult(outcome.result);
227
153
  }
228
- }, (error) => {
229
- // Store rejected promise so use() triggers ErrorBoundary
230
- if (activeCacheKey === cacheKey) {
231
- activePromise = promise;
232
- hasResolved = false;
233
- pendingBackgroundKey = null;
234
- forceUpdate();
154
+ else {
155
+ loaderState.commitBackgroundError();
235
156
  }
236
- });
157
+ forceUpdate();
158
+ },
159
+ });
160
+ if (instruction.action === 'render') {
161
+ data = instruction.data;
162
+ isLoading = instruction.isLoading;
237
163
  }
238
164
  else {
239
- // No stale data — first load, suspend via use()
240
- const promise = loaderFn({ params, redirect });
241
- activeCacheKey = cacheKey;
242
- activePromise = promise;
243
- const result = use(promise);
165
+ const result = use(instruction.promise);
244
166
  if (result instanceof BuzolaRedirect) {
245
167
  router?.navigateToPage(result.pageId, result.params, { replace: true });
246
168
  shouldRedirect = true;
247
169
  }
248
170
  else {
249
171
  data = result;
250
- }
251
- if (!shouldRedirect) {
252
- activeResolvedData = data;
253
- hasResolved = true;
172
+ loaderState.commitResult(data);
254
173
  }
255
174
  }
256
175
  }
257
- // On unmount, save active data to stale cache and reset active state
176
+ // On unmount, save active data to stale cache and reset
258
177
  useEffect(() => {
259
- return () => {
260
- if (loaderCache && hasResolved && activeResolvedData !== undefined && activeUrlHref) {
261
- staleCacheSet(loaderCache, activeUrlHref, activeResolvedData);
262
- }
263
- hasResolved = false;
264
- activeResolvedData = undefined;
265
- activeCacheKey = null;
266
- activePromise = null;
267
- pendingBackgroundKey = null;
268
- activeUrlHref = null;
269
- };
178
+ return () => loaderState?.dispose(router?.loaderCache);
270
179
  }, []);
271
180
  if (shouldRedirect)
272
181
  return null;
@@ -278,7 +187,11 @@ function createPageComponent(schema, paramsMeta, loaderFn, routePattern, RenderC
278
187
  const retry = useCallback(() => setRetryCount(c => c + 1), []);
279
188
  const resetKey = `${routeContext?.state.location.href ?? ''}:${retryCount}`;
280
189
  const boundFallback = typeof catchHandler === 'function'
281
- ? (error) => catchHandler({ error, retry })
190
+ ? (error) => catchHandler({
191
+ error,
192
+ params: (routeContext?.params ?? {}),
193
+ retry,
194
+ })
282
195
  : catchHandler;
283
196
  return (_jsx(ErrorBoundary, { fallback: boundFallback, resetKey: resetKey, children: _jsx(BuzolaPage, {}, retryCount) }));
284
197
  }
@@ -1 +1 @@
1
- {"version":3,"file":"create-page.js","sourceRoot":"","sources":["../../src/define/create-page.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-page.js","sourceRoot":"","sources":["../../src/define/create-page.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ import type { LoaderCache } from './loader-cache.js';
2
+ export type LoaderInstruction = {
3
+ action: 'render';
4
+ data: unknown;
5
+ isLoading: boolean;
6
+ } | {
7
+ action: 'suspend';
8
+ promise: Promise<unknown>;
9
+ };
10
+ export interface LoaderResolveContext {
11
+ /** Current URL href — used for stale cache keying */
12
+ currentUrlHref: string;
13
+ /** Cache key that changes on URL change or invalidation */
14
+ cacheKey: string;
15
+ /** Factory that starts the actual data fetch */
16
+ load: () => Promise<unknown>;
17
+ /** Global loader cache for cross-navigation stale data */
18
+ loaderCache: LoaderCache | undefined;
19
+ /**
20
+ * Called when a background (SWR) fetch settles.
21
+ * Caller is responsible for calling commitBackgroundResult/commitBackgroundError
22
+ * and triggering a React re-render.
23
+ */
24
+ onBackgroundSettled: (outcome: {
25
+ ok: true;
26
+ result: unknown;
27
+ } | {
28
+ ok: false;
29
+ }) => void;
30
+ }
31
+ /**
32
+ * Manages loader data lifecycle outside of React's render cycle.
33
+ *
34
+ * This state survives React Suspense retries — when use() suspends, React
35
+ * discards uncommitted hook state (useRef, useState, useMemo). Closure/instance
36
+ * state is preserved, preventing infinite suspend loops from promise recreation.
37
+ *
38
+ * Supports stale-while-revalidate: when the cache key changes but stale data
39
+ * exists, returns stale data immediately and starts a background fetch.
40
+ */
41
+ export declare class PageLoaderState {
42
+ private activeUrlHref;
43
+ private activeCacheKey;
44
+ private activePromise;
45
+ private activeResolvedData;
46
+ private hasResolved;
47
+ private pendingBackgroundKey;
48
+ private readonly id;
49
+ constructor();
50
+ /**
51
+ * Determine what the component should do during render.
52
+ * Returns either resolved data to render, or a promise to suspend on.
53
+ */
54
+ resolve(ctx: LoaderResolveContext): LoaderInstruction;
55
+ /** Commit data after use() resolves (suspend case) */
56
+ commitResult(data: unknown): void;
57
+ /** Commit background SWR success — update data and clear pending flag */
58
+ commitBackgroundResult(data: unknown): void;
59
+ /** Mark background load as failed — next render will suspend with rejected promise */
60
+ commitBackgroundError(): void;
61
+ /** Save state to stale cache and reset (called on unmount) */
62
+ dispose(loaderCache: LoaderCache | undefined): void;
63
+ private handleUrlChange;
64
+ private staleCacheKey;
65
+ private restoreFromStaleCache;
66
+ private saveToStaleCache;
67
+ }
68
+ //# sourceMappingURL=loader-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader-state.d.ts","sourceRoot":"","sources":["../../src/engine/loader-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAIpD,MAAM,MAAM,iBAAiB,GAC1B;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,GACvD;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;CAAE,CAAA;AAEnD,MAAM,WAAW,oBAAoB;IACpC,qDAAqD;IACrD,cAAc,EAAE,MAAM,CAAA;IACtB,2DAA2D;IAC3D,QAAQ,EAAE,MAAM,CAAA;IAChB,gDAAgD;IAChD,IAAI,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;IAC5B,0DAA0D;IAC1D,WAAW,EAAE,WAAW,GAAG,SAAS,CAAA;IACpC;;;;OAIG;IACH,mBAAmB,EAAE,CAAC,OAAO,EAAE;QAAE,EAAE,EAAE,IAAI,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,KAAK,CAAA;KAAE,KAAK,IAAI,CAAA;CACrF;AAMD;;;;;;;;;GASG;AACH,qBAAa,eAAe;IAC3B,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,cAAc,CAAsB;IAC5C,OAAO,CAAC,aAAa,CAAgC;IACrD,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,oBAAoB,CAAsB;IAClD,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAQ;;IAM3B;;;OAGG;IACH,OAAO,CAAC,GAAG,EAAE,oBAAoB,GAAG,iBAAiB;IA8CrD,sDAAsD;IACtD,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAKjC,yEAAyE;IACzE,sBAAsB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAK3C,sFAAsF;IACtF,qBAAqB,IAAI,IAAI;IAK7B,8DAA8D;IAC9D,OAAO,CAAC,WAAW,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI;IAcnD,OAAO,CAAC,eAAe;IA2BvB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,qBAAqB;IAQ7B,OAAO,CAAC,gBAAgB;CAGxB"}
@@ -0,0 +1,135 @@
1
+ // ─── State machine ──────────────────────────────────────────────────────────
2
+ let nextId = 0;
3
+ /**
4
+ * Manages loader data lifecycle outside of React's render cycle.
5
+ *
6
+ * This state survives React Suspense retries — when use() suspends, React
7
+ * discards uncommitted hook state (useRef, useState, useMemo). Closure/instance
8
+ * state is preserved, preventing infinite suspend loops from promise recreation.
9
+ *
10
+ * Supports stale-while-revalidate: when the cache key changes but stale data
11
+ * exists, returns stale data immediately and starts a background fetch.
12
+ */
13
+ export class PageLoaderState {
14
+ activeUrlHref = null;
15
+ activeCacheKey = null;
16
+ activePromise = null;
17
+ activeResolvedData;
18
+ hasResolved = false;
19
+ pendingBackgroundKey = null;
20
+ id;
21
+ constructor() {
22
+ this.id = nextId++;
23
+ }
24
+ /**
25
+ * Determine what the component should do during render.
26
+ * Returns either resolved data to render, or a promise to suspend on.
27
+ */
28
+ resolve(ctx) {
29
+ const { currentUrlHref, cacheKey, load, loaderCache, onBackgroundSettled } = ctx;
30
+ this.handleUrlChange(currentUrlHref, loaderCache);
31
+ // ─── Same cache key — return current state ─────
32
+ if (this.activeCacheKey === cacheKey) {
33
+ if (this.pendingBackgroundKey === cacheKey) {
34
+ return { action: 'render', data: this.activeResolvedData, isLoading: true };
35
+ }
36
+ if (this.hasResolved) {
37
+ return { action: 'render', data: this.activeResolvedData, isLoading: false };
38
+ }
39
+ return { action: 'suspend', promise: this.activePromise };
40
+ }
41
+ // ─── Cache key changed + stale data available → SWR ─────
42
+ if (this.hasResolved) {
43
+ const promise = load();
44
+ this.activeCacheKey = cacheKey;
45
+ this.activePromise = promise;
46
+ this.pendingBackgroundKey = cacheKey;
47
+ promise.then((result) => {
48
+ if (this.activeCacheKey === cacheKey) {
49
+ onBackgroundSettled({ ok: true, result });
50
+ }
51
+ }, () => {
52
+ if (this.activeCacheKey === cacheKey) {
53
+ onBackgroundSettled({ ok: false });
54
+ }
55
+ });
56
+ return { action: 'render', data: this.activeResolvedData, isLoading: true };
57
+ }
58
+ // ─── No stale data → first load, suspend ─────
59
+ const promise = load();
60
+ this.activeCacheKey = cacheKey;
61
+ this.activePromise = promise;
62
+ return { action: 'suspend', promise };
63
+ }
64
+ /** Commit data after use() resolves (suspend case) */
65
+ commitResult(data) {
66
+ this.activeResolvedData = data;
67
+ this.hasResolved = true;
68
+ }
69
+ /** Commit background SWR success — update data and clear pending flag */
70
+ commitBackgroundResult(data) {
71
+ this.activeResolvedData = data;
72
+ this.pendingBackgroundKey = null;
73
+ }
74
+ /** Mark background load as failed — next render will suspend with rejected promise */
75
+ commitBackgroundError() {
76
+ this.hasResolved = false;
77
+ this.pendingBackgroundKey = null;
78
+ }
79
+ /** Save state to stale cache and reset (called on unmount) */
80
+ dispose(loaderCache) {
81
+ if (loaderCache && this.hasResolved && this.activeResolvedData !== undefined && this.activeUrlHref) {
82
+ this.saveToStaleCache(loaderCache, this.activeUrlHref, this.activeResolvedData);
83
+ }
84
+ this.activeUrlHref = null;
85
+ this.activeCacheKey = null;
86
+ this.activePromise = null;
87
+ this.activeResolvedData = undefined;
88
+ this.hasResolved = false;
89
+ this.pendingBackgroundKey = null;
90
+ }
91
+ // ─── Private ────────────────────────────────────────────────────────────
92
+ handleUrlChange(currentUrlHref, loaderCache) {
93
+ if (this.activeUrlHref !== null && this.activeUrlHref !== currentUrlHref) {
94
+ // URL changed — save old data to stale cache
95
+ if (loaderCache && this.hasResolved && this.activeResolvedData !== undefined) {
96
+ this.saveToStaleCache(loaderCache, this.activeUrlHref, this.activeResolvedData);
97
+ }
98
+ // Try to restore from stale cache for new URL
99
+ const cached = loaderCache && this.restoreFromStaleCache(loaderCache, currentUrlHref);
100
+ if (cached?.hit) {
101
+ this.activeResolvedData = cached.value;
102
+ this.hasResolved = true;
103
+ }
104
+ else {
105
+ this.hasResolved = false;
106
+ this.activeResolvedData = undefined;
107
+ }
108
+ this.pendingBackgroundKey = null;
109
+ }
110
+ else if (this.activeUrlHref === null && loaderCache) {
111
+ // Remount — try to restore from stale cache
112
+ const cached = this.restoreFromStaleCache(loaderCache, currentUrlHref);
113
+ if (cached.hit) {
114
+ this.activeResolvedData = cached.value;
115
+ this.hasResolved = true;
116
+ }
117
+ }
118
+ this.activeUrlHref = currentUrlHref;
119
+ }
120
+ staleCacheKey(urlHref) {
121
+ return `${this.id}:${urlHref}`;
122
+ }
123
+ restoreFromStaleCache(cache, urlHref) {
124
+ const key = this.staleCacheKey(urlHref);
125
+ if (!cache.has(key))
126
+ return { hit: false };
127
+ const value = cache.get(key);
128
+ cache.delete(key);
129
+ return { hit: true, value };
130
+ }
131
+ saveToStaleCache(cache, urlHref, value) {
132
+ cache.set(this.staleCacheKey(urlHref), value);
133
+ }
134
+ }
135
+ //# sourceMappingURL=loader-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader-state.js","sourceRoot":"","sources":["../../src/engine/loader-state.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ export interface CreateRouteNodeOptions {
4
4
  fullPath: string;
5
5
  component?: RouteComponent;
6
6
  searchSchema?: StandardSchema;
7
+ preload?: () => void;
7
8
  children?: RouteNode[];
8
9
  parent?: RouteNode;
9
10
  isLayout?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"route-tree.d.ts","sourceRoot":"","sources":["../../src/engine/route-tree.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAqBxF,MAAM,WAAW,sBAAsB;IACtC,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,cAAc,CAAA;IAC1B,YAAY,CAAC,EAAE,cAAc,CAAA;IAC7B,QAAQ,CAAC,EAAE,SAAS,EAAE,CAAA;IACtB,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,OAAO,CAAC,EAAE,OAAO,CAAA;CACjB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,SAAS,CA+C1E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,UAAU,SAAK,GAAG,SAAS,EAAE,CAEnF"}
1
+ {"version":3,"file":"route-tree.d.ts","sourceRoot":"","sources":["../../src/engine/route-tree.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAqBxF,MAAM,WAAW,sBAAsB;IACtC,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,cAAc,CAAA;IAC1B,YAAY,CAAC,EAAE,cAAc,CAAA;IAC7B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,QAAQ,CAAC,EAAE,SAAS,EAAE,CAAA;IACtB,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,OAAO,CAAC,EAAE,OAAO,CAAA;CACjB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,SAAS,CAiD1E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,UAAU,SAAK,GAAG,SAAS,EAAE,CAEnF"}
@@ -21,7 +21,7 @@ function joinPaths(parent, child) {
21
21
  * Create a route node with a compiled URLPattern.
22
22
  */
23
23
  export function createRouteNode(options) {
24
- const { path, fullPath, component, searchSchema, children = [], parent, isLayout = false, isIndex = false, } = options;
24
+ const { path, fullPath, component, searchSchema, preload, children = [], parent, isLayout = false, isIndex = false, } = options;
25
25
  // Build the pattern — layouts get a prefix pattern for param extraction,
26
26
  // index and leaf routes get an exact pattern for matching.
27
27
  let pattern;
@@ -44,6 +44,7 @@ export function createRouteNode(options) {
44
44
  prefixPattern,
45
45
  component,
46
46
  searchSchema,
47
+ preload,
47
48
  children,
48
49
  parent,
49
50
  isLayout,
@@ -86,6 +87,7 @@ function buildRouteNodes(configs, parentPath) {
86
87
  fullPath,
87
88
  component: config.component,
88
89
  searchSchema: config.searchSchema,
90
+ preload: config.preload,
89
91
  children,
90
92
  isLayout,
91
93
  isIndex,
@@ -1 +1 @@
1
- {"version":3,"file":"route-tree.js","sourceRoot":"","sources":["../../src/engine/route-tree.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"route-tree.js","sourceRoot":"","sources":["../../src/engine/route-tree.ts"],"names":[],"mappings":"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"}
@@ -95,6 +95,12 @@ export declare class Router {
95
95
  * Path params are substituted into the route pattern; extra params become query string.
96
96
  */
97
97
  buildPagePath(pageId: string, params?: Record<string, string>): string;
98
+ /**
99
+ * Preload a page by its page ID.
100
+ * Triggers lazy component imports for all matching route nodes,
101
+ * so the code is ready when the user navigates.
102
+ */
103
+ preload(pageId: string, params?: Record<string, string>): void;
98
104
  /**
99
105
  * Go back in history.
100
106
  */
@@ -1 +1 @@
1
- {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/engine/router.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/engine/router.ts"],"names":[],"mappings":"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"}