@pithyjs/router 0.1.0-beta.0

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 (163) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +621 -0
  3. package/dist/index.d.ts +29 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +49 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/router/core/config.d.ts +22 -0
  8. package/dist/router/core/config.d.ts.map +1 -0
  9. package/dist/router/core/config.js +54 -0
  10. package/dist/router/core/config.js.map +1 -0
  11. package/dist/router/core/constants.d.ts +89 -0
  12. package/dist/router/core/constants.d.ts.map +1 -0
  13. package/dist/router/core/constants.js +95 -0
  14. package/dist/router/core/constants.js.map +1 -0
  15. package/dist/router/core/history.d.ts +54 -0
  16. package/dist/router/core/history.d.ts.map +1 -0
  17. package/dist/router/core/history.js +89 -0
  18. package/dist/router/core/history.js.map +1 -0
  19. package/dist/router/core/matcher.d.ts +43 -0
  20. package/dist/router/core/matcher.d.ts.map +1 -0
  21. package/dist/router/core/matcher.js +242 -0
  22. package/dist/router/core/matcher.js.map +1 -0
  23. package/dist/router/core/params.d.ts +88 -0
  24. package/dist/router/core/params.d.ts.map +1 -0
  25. package/dist/router/core/params.js +150 -0
  26. package/dist/router/core/params.js.map +1 -0
  27. package/dist/router/core/pipeline.d.ts +90 -0
  28. package/dist/router/core/pipeline.d.ts.map +1 -0
  29. package/dist/router/core/pipeline.js +323 -0
  30. package/dist/router/core/pipeline.js.map +1 -0
  31. package/dist/router/core/route-tree.d.ts +76 -0
  32. package/dist/router/core/route-tree.d.ts.map +1 -0
  33. package/dist/router/core/route-tree.js +143 -0
  34. package/dist/router/core/route-tree.js.map +1 -0
  35. package/dist/router/core/router.d.ts +229 -0
  36. package/dist/router/core/router.d.ts.map +1 -0
  37. package/dist/router/core/router.js +762 -0
  38. package/dist/router/core/router.js.map +1 -0
  39. package/dist/router/core/types.d.ts +387 -0
  40. package/dist/router/core/types.d.ts.map +1 -0
  41. package/dist/router/core/types.js +22 -0
  42. package/dist/router/core/types.js.map +1 -0
  43. package/dist/router/core/utils.d.ts +66 -0
  44. package/dist/router/core/utils.d.ts.map +1 -0
  45. package/dist/router/core/utils.js +152 -0
  46. package/dist/router/core/utils.js.map +1 -0
  47. package/dist/router/features/coordinator.d.ts +75 -0
  48. package/dist/router/features/coordinator.d.ts.map +1 -0
  49. package/dist/router/features/coordinator.js +203 -0
  50. package/dist/router/features/coordinator.js.map +1 -0
  51. package/dist/router/features/errors/error-codes.d.ts +107 -0
  52. package/dist/router/features/errors/error-codes.d.ts.map +1 -0
  53. package/dist/router/features/errors/error-codes.js +247 -0
  54. package/dist/router/features/errors/error-codes.js.map +1 -0
  55. package/dist/router/features/errors/error-resolution.d.ts +31 -0
  56. package/dist/router/features/errors/error-resolution.d.ts.map +1 -0
  57. package/dist/router/features/errors/error-resolution.js +47 -0
  58. package/dist/router/features/errors/error-resolution.js.map +1 -0
  59. package/dist/router/features/errors/error-types.d.ts +60 -0
  60. package/dist/router/features/errors/error-types.d.ts.map +1 -0
  61. package/dist/router/features/errors/error-types.js +57 -0
  62. package/dist/router/features/errors/error-types.js.map +1 -0
  63. package/dist/router/features/errors/global-error-fallback.d.ts +33 -0
  64. package/dist/router/features/errors/global-error-fallback.d.ts.map +1 -0
  65. package/dist/router/features/errors/global-error-fallback.js +182 -0
  66. package/dist/router/features/errors/global-error-fallback.js.map +1 -0
  67. package/dist/router/features/errors/index.d.ts +15 -0
  68. package/dist/router/features/errors/index.d.ts.map +1 -0
  69. package/dist/router/features/errors/index.js +18 -0
  70. package/dist/router/features/errors/index.js.map +1 -0
  71. package/dist/router/features/errors/router-errors.d.ts +44 -0
  72. package/dist/router/features/errors/router-errors.d.ts.map +1 -0
  73. package/dist/router/features/errors/router-errors.js +53 -0
  74. package/dist/router/features/errors/router-errors.js.map +1 -0
  75. package/dist/router/features/guards/engine.d.ts +40 -0
  76. package/dist/router/features/guards/engine.d.ts.map +1 -0
  77. package/dist/router/features/guards/engine.js +67 -0
  78. package/dist/router/features/guards/engine.js.map +1 -0
  79. package/dist/router/features/guards/index.d.ts +52 -0
  80. package/dist/router/features/guards/index.d.ts.map +1 -0
  81. package/dist/router/features/guards/index.js +95 -0
  82. package/dist/router/features/guards/index.js.map +1 -0
  83. package/dist/router/features/loaders/cache.d.ts +60 -0
  84. package/dist/router/features/loaders/cache.d.ts.map +1 -0
  85. package/dist/router/features/loaders/cache.js +80 -0
  86. package/dist/router/features/loaders/cache.js.map +1 -0
  87. package/dist/router/features/loaders/engine.d.ts +17 -0
  88. package/dist/router/features/loaders/engine.d.ts.map +1 -0
  89. package/dist/router/features/loaders/engine.js +27 -0
  90. package/dist/router/features/loaders/engine.js.map +1 -0
  91. package/dist/router/features/loaders/index.d.ts +49 -0
  92. package/dist/router/features/loaders/index.d.ts.map +1 -0
  93. package/dist/router/features/loaders/index.js +112 -0
  94. package/dist/router/features/loaders/index.js.map +1 -0
  95. package/dist/router/features/loading-ui-manager.d.ts +69 -0
  96. package/dist/router/features/loading-ui-manager.d.ts.map +1 -0
  97. package/dist/router/features/loading-ui-manager.js +209 -0
  98. package/dist/router/features/loading-ui-manager.js.map +1 -0
  99. package/dist/router/features/module-loader.d.ts +50 -0
  100. package/dist/router/features/module-loader.d.ts.map +1 -0
  101. package/dist/router/features/module-loader.js +121 -0
  102. package/dist/router/features/module-loader.js.map +1 -0
  103. package/dist/router/features/outlet/errors.d.ts +24 -0
  104. package/dist/router/features/outlet/errors.d.ts.map +1 -0
  105. package/dist/router/features/outlet/errors.js +96 -0
  106. package/dist/router/features/outlet/errors.js.map +1 -0
  107. package/dist/router/features/outlet/index.d.ts +45 -0
  108. package/dist/router/features/outlet/index.d.ts.map +1 -0
  109. package/dist/router/features/outlet/index.js +95 -0
  110. package/dist/router/features/outlet/index.js.map +1 -0
  111. package/dist/router/features/outlet/mount.d.ts +38 -0
  112. package/dist/router/features/outlet/mount.d.ts.map +1 -0
  113. package/dist/router/features/outlet/mount.js +301 -0
  114. package/dist/router/features/outlet/mount.js.map +1 -0
  115. package/dist/router/features/outlet/segment-chain.d.ts +16 -0
  116. package/dist/router/features/outlet/segment-chain.d.ts.map +1 -0
  117. package/dist/router/features/outlet/segment-chain.js +62 -0
  118. package/dist/router/features/outlet/segment-chain.js.map +1 -0
  119. package/dist/router/features/prefetch/index.d.ts +97 -0
  120. package/dist/router/features/prefetch/index.d.ts.map +1 -0
  121. package/dist/router/features/prefetch/index.js +345 -0
  122. package/dist/router/features/prefetch/index.js.map +1 -0
  123. package/dist/router/features/ux/focus.d.ts +62 -0
  124. package/dist/router/features/ux/focus.d.ts.map +1 -0
  125. package/dist/router/features/ux/focus.js +136 -0
  126. package/dist/router/features/ux/focus.js.map +1 -0
  127. package/dist/router/features/ux/live-region.d.ts +81 -0
  128. package/dist/router/features/ux/live-region.d.ts.map +1 -0
  129. package/dist/router/features/ux/live-region.js +166 -0
  130. package/dist/router/features/ux/live-region.js.map +1 -0
  131. package/dist/router/features/ux/scroll-focus.d.ts +105 -0
  132. package/dist/router/features/ux/scroll-focus.d.ts.map +1 -0
  133. package/dist/router/features/ux/scroll-focus.js +111 -0
  134. package/dist/router/features/ux/scroll-focus.js.map +1 -0
  135. package/dist/router/features/ux/scroll.d.ts +71 -0
  136. package/dist/router/features/ux/scroll.d.ts.map +1 -0
  137. package/dist/router/features/ux/scroll.js +137 -0
  138. package/dist/router/features/ux/scroll.js.map +1 -0
  139. package/dist/router/features/ux/transitions.d.ts +120 -0
  140. package/dist/router/features/ux/transitions.d.ts.map +1 -0
  141. package/dist/router/features/ux/transitions.js +235 -0
  142. package/dist/router/features/ux/transitions.js.map +1 -0
  143. package/dist/router/integration/directive-binder.d.ts +20 -0
  144. package/dist/router/integration/directive-binder.d.ts.map +1 -0
  145. package/dist/router/integration/directive-binder.js +139 -0
  146. package/dist/router/integration/directive-binder.js.map +1 -0
  147. package/dist/router/integration/directives.d.ts +42 -0
  148. package/dist/router/integration/directives.d.ts.map +1 -0
  149. package/dist/router/integration/directives.js +109 -0
  150. package/dist/router/integration/directives.js.map +1 -0
  151. package/dist/router/integration/history-adapter.d.ts +76 -0
  152. package/dist/router/integration/history-adapter.d.ts.map +1 -0
  153. package/dist/router/integration/history-adapter.js +157 -0
  154. package/dist/router/integration/history-adapter.js.map +1 -0
  155. package/dist/router/integration/hmr.d.ts +83 -0
  156. package/dist/router/integration/hmr.d.ts.map +1 -0
  157. package/dist/router/integration/hmr.js +160 -0
  158. package/dist/router/integration/hmr.js.map +1 -0
  159. package/dist/router/integration/link-interceptor.d.ts +49 -0
  160. package/dist/router/integration/link-interceptor.d.ts.map +1 -0
  161. package/dist/router/integration/link-interceptor.js +94 -0
  162. package/dist/router/integration/link-interceptor.js.map +1 -0
  163. package/package.json +47 -0
@@ -0,0 +1,229 @@
1
+ /** @codex
2
+ {
3
+ "id": "pithy.router.core",
4
+ "title": "Router Core with Navigation Transaction State Machine",
5
+ "category": "runtime"
6
+ }
7
+ */
8
+ import { type Signal } from '@pithyjs/signals';
9
+ import { type NavigationId, type RouteParams, type QueryParams, type RouterConfig, type RouteNode, type RouterState, type NavigationOptions } from './types';
10
+ import { type ResourceState } from '../features/loaders';
11
+ /** @codexApi {"parent":"pithy.router.core","name":"Router","stability":"stable","signature":"class Router","description":"Core router class with navigation transaction state machine"} */
12
+ /**
13
+ * Core router class with navigation transaction state machine
14
+ * Implements enhanced architectural improvements for production-ready routing
15
+ */
16
+ export declare class Router {
17
+ private config;
18
+ private routes;
19
+ private routePatterns;
20
+ private pipeline;
21
+ private historyManager;
22
+ private features;
23
+ private linkInterceptor;
24
+ private outletManager;
25
+ private previousSegmentChain;
26
+ private mountedElement;
27
+ private isMounted;
28
+ private popstateListener;
29
+ private hmrCleanup;
30
+ private _path;
31
+ private _params;
32
+ private _query;
33
+ private _loaderData;
34
+ private routerState;
35
+ private committed;
36
+ private outletSnapshot;
37
+ constructor(routes: RouteNode[], config?: RouterConfig);
38
+ /** @codexApi {"parent":"pithy.router.core","name":"state","stability":"stable","signature":"() => Signal<RouterState>","description":"Get current router state as a reactive signal"} */
39
+ /**
40
+ * Get current router state as reactive signal
41
+ */
42
+ state(): Signal<RouterState>;
43
+ /** @codexApi {"parent":"pithy.router.core","name":"path","stability":"stable","signature":"() => () => string","description":"Get current path as a computed reactive signal"} */
44
+ /**
45
+ * Get current path as reactive signal (memoized to avoid leaking effects)
46
+ */
47
+ path(): () => string;
48
+ /** @codexApi {"parent":"pithy.router.core","name":"params","stability":"stable","signature":"() => () => RouteParams","description":"Get current route params as a computed reactive signal"} */
49
+ /**
50
+ * Get current params as reactive signal (memoized to avoid leaking effects)
51
+ */
52
+ params(): () => RouteParams;
53
+ /** @codexApi {"parent":"pithy.router.core","name":"query","stability":"stable","signature":"() => () => QueryParams","description":"Get current query params as a computed reactive signal"} */
54
+ /**
55
+ * Get current query as reactive signal (memoized to avoid leaking effects)
56
+ */
57
+ query(): () => QueryParams;
58
+ /** @codexApi {"parent":"pithy.router.core","name":"loaderData","stability":"stable","signature":"() => () => ResourceState | null","description":"Get current loader data as a computed reactive signal"} */
59
+ /**
60
+ * Get current loader data as reactive signal (memoized to avoid leaking effects)
61
+ */
62
+ loaderData(): () => ResourceState | null;
63
+ /** @codexApi {"parent":"pithy.router.core","name":"navigate","stability":"stable","signature":"(path: string, options?: NavigationOptions) => Promise<boolean>","description":"Navigate to a path with two-phase commit via the pipeline"} */
64
+ /**
65
+ * Navigate to a new path with two-phase commit and transactional navigation
66
+ * Delegates to NavigationPipeline for orchestration
67
+ */
68
+ navigate(path: string, options?: NavigationOptions): Promise<boolean>;
69
+ /** @codexApi {"parent":"pithy.router.core","name":"back","stability":"stable","signature":"() => void","description":"Go back one entry in browser history"} */
70
+ /**
71
+ * Go back in history
72
+ */
73
+ back(): void;
74
+ /** @codexApi {"parent":"pithy.router.core","name":"forward","stability":"stable","signature":"() => void","description":"Go forward one entry in browser history"} */
75
+ /**
76
+ * Go forward in history
77
+ */
78
+ forward(): void;
79
+ /** @codexApi {"parent":"pithy.router.core","name":"mount","stability":"stable","signature":"(rootElement: HTMLElement) => void","description":"Mount router to a DOM element and activate outlet routing"} */
80
+ /**
81
+ * Mount router to DOM element with outlet management
82
+ * Automatically finds outlet element and sets up routing
83
+ *
84
+ * @param rootElement - Root element containing the router outlet
85
+ */
86
+ mount(rootElement: HTMLElement): void;
87
+ /** @codexApi {"parent":"pithy.router.core","name":"getActiveNavId","stability":"experimental","signature":"() => NavigationId","description":"Get the active navigation ID for outlet manager integration"} */
88
+ /**
89
+ * Get the active navigation ID for outlet manager integration
90
+ */
91
+ getActiveNavId(): NavigationId;
92
+ /** @codexApi {"parent":"pithy.router.core","name":"isNavActive","stability":"experimental","signature":"(navId: NavigationId) => boolean","description":"Check if a navigation ID is still active"} */
93
+ /**
94
+ * Check if a navigation ID is still active
95
+ */
96
+ isNavActive(navId: NavigationId): boolean;
97
+ /** @codexApi {"parent":"pithy.router.core","name":"prefetchRoute","stability":"experimental","signature":"(href: string, signal: AbortSignal) => Promise<void>","description":"Prefetch route components using shared module cache"} */
98
+ /**
99
+ * Prefetch route components (for PrefetchManager integration)
100
+ * Uses shared module cache from @pithyjs/core for deduplication
101
+ */
102
+ prefetchRoute(href: string, signal: AbortSignal): Promise<void>;
103
+ /** @codexApi {"parent":"pithy.router.core","name":"updateRoutes","stability":"stable","signature":"(newRoutes: RouteNode[], options?: { source?: string }) => Promise<void>","description":"Hot-update routes for HMR, preserving router state"} */
104
+ /**
105
+ * Update routes (for HMR support)
106
+ * Called by HMR manager when route modules are updated
107
+ * Preserves router state and only re-mounts outlets with new code
108
+ *
109
+ * @param newRoutes - Updated route tree from HMR
110
+ * @param options - Optional configuration
111
+ */
112
+ updateRoutes(newRoutes: RouteNode[], _options?: {
113
+ source?: string;
114
+ }): Promise<void>;
115
+ /** @codexApi {"parent":"pithy.router.core","name":"prefetchLoader","stability":"experimental","signature":"(href: string, signal: AbortSignal) => Promise<void>","description":"Prefetch route loader data with guard checks"} */
116
+ /**
117
+ * Prefetch route loader data (for PrefetchManager integration)
118
+ */
119
+ prefetchLoader(href: string, signal: AbortSignal): Promise<void>;
120
+ /** @codexApi {"parent":"pithy.router.core","name":"getRouteCacheTTL","stability":"experimental","signature":"(href: string) => Promise<number | undefined>","description":"Get the configured cache TTL for a specific route"} */
121
+ /**
122
+ * Get the cache TTL for a specific route (for PrefetchManager integration)
123
+ * Returns the route's configured cache TTL, or undefined if not configured
124
+ */
125
+ getRouteCacheTTL(href: string): Promise<number | undefined>;
126
+ /** @codexApi {"parent":"pithy.router.core","name":"dispose","stability":"stable","signature":"() => void","description":"Dispose router and clean up all listeners, outlets, and navigations"} */
127
+ /**
128
+ * Dispose of the router and clean up all resources
129
+ *
130
+ * This method should be called when unmounting the router or destroying the app.
131
+ * It cleans up:
132
+ * - Mounted components and their disposers
133
+ * - Event listeners (popstate, click)
134
+ * - HMR subscriptions
135
+ * - Active navigation transactions
136
+ *
137
+ * Note: In typical SPA usage, the router lives for the entire page lifetime,
138
+ * so dispose() is rarely needed. It's mainly useful for:
139
+ * - Testing (to prevent memory leaks between tests)
140
+ * - Multiple router instances
141
+ * - Micro-frontends
142
+ * - Server-side rendering cleanup
143
+ */
144
+ dispose(): void;
145
+ /**
146
+ * Save current scroll position to history.state before navigation
147
+ * Delegates to HistoryManager to avoid code duplication
148
+ */
149
+ private saveScrollToHistory;
150
+ /**
151
+ * Generate a stable selector for an element
152
+ */
153
+ private isNavigationActive;
154
+ private initializeFromCurrentLocation;
155
+ private setupHistoryListeners;
156
+ /**
157
+ * Set up HMR integration (thin layer pattern)
158
+ * Delegates to HMRManager which handles Vite HMR subscription
159
+ * Preserves router state and only re-mounts outlets
160
+ */
161
+ private setupHMR;
162
+ /**
163
+ * Set up global link interceptor - delegates to LinkInterceptor class
164
+ */
165
+ private setupLinkInterceptor;
166
+ private normalizePath;
167
+ private parseQueryParams;
168
+ private updateRouterState;
169
+ /**
170
+ * Show route loading in outlet using atomic swap (no overlay, no blank)
171
+ * Implements the core "replace" policy for forward navigations
172
+ * NOTE: No View Transition here - loading UI should be plain swap to avoid
173
+ * the spinner becoming the "transition target" and getting stuck
174
+ */
175
+ /**
176
+ * Snapshot committed DOM for safety belt
177
+ */
178
+ private snapshotCommittedOutlet;
179
+ /**
180
+ * Restore snapshot if outlet is empty (safety belt)
181
+ */
182
+ private restoreSnapshotIfEmpty;
183
+ /**
184
+ * Mount the current route using the outlet manager
185
+ */
186
+ private mountCurrentRoute;
187
+ /**
188
+ * Build segment chain for the current route
189
+ * @returns Segment chain or null if empty
190
+ */
191
+ private buildCurrentSegmentChain;
192
+ /**
193
+ * Handle successful route mount
194
+ * Updates state, snapshots DOM, and manages scroll/focus restoration
195
+ */
196
+ private handleMountSuccess;
197
+ /**
198
+ * Restore HMR scroll position after successful mount
199
+ * Uses HMRManager singleton to consume the scroll snapshot
200
+ */
201
+ private restoreHMRScrollIfNeeded;
202
+ /**
203
+ * Schedule focus management after route mount
204
+ */
205
+ private scheduleFocusManagement;
206
+ /**
207
+ * Handle failed route mount
208
+ * Clears loading UI but keeps old view
209
+ */
210
+ private handleMountFailure;
211
+ /**
212
+ * Create navigation context for pipeline
213
+ * @private
214
+ */
215
+ private createNavigationContext;
216
+ }
217
+ /** @codexApi {"parent":"pithy.router.core","name":"createRouter","stability":"stable","signature":"(routes: RouteNode[], config?: RouterConfig) => Router","description":"Create a router instance with HMR hot-singleton reuse"} */
218
+ /**
219
+ * Create a new router instance with HMR hot-singleton pattern
220
+ *
221
+ * In development with HMR enabled, this function reuses the same router instance
222
+ * across module updates, preserving router state and avoiding duplicate instances.
223
+ *
224
+ * @param routes - Route tree from virtual:pithy/routes.gen
225
+ * @param config - Router configuration options
226
+ * @returns Router instance (may be existing instance if HMR is active)
227
+ */
228
+ export declare function createRouter(routes: RouteNode[], config?: RouterConfig): Router;
229
+ //# sourceMappingURL=router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../../src/router/core/router.ts"],"names":[],"mappings":"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"}