@rangojs/router 0.0.0-experimental.136 → 0.0.0-experimental.138

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 (862) hide show
  1. package/dist/bin/rango.js +237 -42
  2. package/dist/vite/index.js +239 -43
  3. package/package.json +19 -18
  4. package/skills/breadcrumbs/SKILL.md +29 -12
  5. package/skills/composability/SKILL.md +50 -0
  6. package/skills/migrate-nextjs/SKILL.md +12 -0
  7. package/skills/rango/SKILL.md +5 -1
  8. package/skills/response-routes/SKILL.md +14 -0
  9. package/skills/router-setup/SKILL.md +12 -0
  10. package/skills/testing/handles.md +4 -2
  11. package/skills/testing/reverse-and-types.md +8 -7
  12. package/src/browser/event-controller.ts +21 -0
  13. package/src/browser/react/NavigationProvider.tsx +68 -157
  14. package/src/browser/server-action-bridge.ts +22 -10
  15. package/src/build/generate-manifest.ts +155 -131
  16. package/src/build/index.ts +3 -1
  17. package/src/build/route-types/include-resolution.ts +347 -47
  18. package/src/build/runtime-discovery.ts +4 -1
  19. package/src/cache/cf/cf-cache-store.ts +22 -0
  20. package/src/client.rsc.tsx +0 -3
  21. package/src/client.tsx +0 -3
  22. package/src/defer.ts +11 -22
  23. package/src/handle.ts +37 -15
  24. package/src/handles/MetaTags.tsx +16 -88
  25. package/src/handles/breadcrumbs.ts +12 -14
  26. package/src/handles/deferred-resolution.ts +127 -0
  27. package/src/handles/is-thenable.ts +7 -8
  28. package/src/handles/meta.ts +7 -44
  29. package/src/index.rsc.ts +0 -1
  30. package/src/index.ts +0 -1
  31. package/src/prerender.ts +17 -4
  32. package/src/router/find-match.ts +71 -7
  33. package/src/router/lazy-includes.ts +64 -10
  34. package/src/router/manifest.ts +43 -6
  35. package/src/router/match-api.ts +2 -2
  36. package/src/router/navigation-snapshot.ts +7 -5
  37. package/src/router/prerender-match.ts +11 -5
  38. package/src/router/preview-match.ts +3 -1
  39. package/src/router/request-classification.ts +3 -1
  40. package/src/router/route-snapshot.ts +4 -2
  41. package/src/router/router-context.ts +3 -1
  42. package/src/router/router-interfaces.ts +9 -1
  43. package/src/router.ts +9 -2
  44. package/src/rsc/handler.ts +3 -1
  45. package/src/rsc/manifest-init.ts +1 -1
  46. package/src/rsc/progressive-enhancement.ts +5 -2
  47. package/src/rsc/rsc-rendering.ts +5 -1
  48. package/src/ssr/index.tsx +1 -0
  49. package/src/testing/collect-handle.ts +14 -8
  50. package/src/testing/dispatch.ts +3 -3
  51. package/src/testing/generated-routes.ts +27 -11
  52. package/src/testing/render-route.tsx +6 -1
  53. package/src/urls/include-helper.ts +10 -8
  54. package/src/urls/include-provider.ts +71 -0
  55. package/src/urls/path-helper-types.ts +25 -1
  56. package/src/vite/discovery/discover-routers.ts +1 -1
  57. package/src/vite/router-discovery.ts +8 -0
  58. package/dist/__internal.d.ts +0 -83
  59. package/dist/__internal.d.ts.map +0 -1
  60. package/dist/__internal.js +0 -19
  61. package/dist/__internal.js.map +0 -1
  62. package/dist/__mocks__/version.d.ts +0 -7
  63. package/dist/__mocks__/version.d.ts.map +0 -1
  64. package/dist/__mocks__/version.js +0 -7
  65. package/dist/__mocks__/version.js.map +0 -1
  66. package/dist/__tests__/client-href.test.d.ts +0 -2
  67. package/dist/__tests__/client-href.test.d.ts.map +0 -1
  68. package/dist/__tests__/client-href.test.js +0 -74
  69. package/dist/__tests__/client-href.test.js.map +0 -1
  70. package/dist/__tests__/component-utils.test.d.ts +0 -2
  71. package/dist/__tests__/component-utils.test.d.ts.map +0 -1
  72. package/dist/__tests__/component-utils.test.js +0 -51
  73. package/dist/__tests__/component-utils.test.js.map +0 -1
  74. package/dist/__tests__/event-controller.test.d.ts +0 -2
  75. package/dist/__tests__/event-controller.test.d.ts.map +0 -1
  76. package/dist/__tests__/event-controller.test.js +0 -538
  77. package/dist/__tests__/event-controller.test.js.map +0 -1
  78. package/dist/__tests__/helpers/route-tree.d.ts +0 -118
  79. package/dist/__tests__/helpers/route-tree.d.ts.map +0 -1
  80. package/dist/__tests__/helpers/route-tree.js +0 -374
  81. package/dist/__tests__/helpers/route-tree.js.map +0 -1
  82. package/dist/__tests__/match-result.test.d.ts +0 -2
  83. package/dist/__tests__/match-result.test.d.ts.map +0 -1
  84. package/dist/__tests__/match-result.test.js +0 -154
  85. package/dist/__tests__/match-result.test.js.map +0 -1
  86. package/dist/__tests__/navigation-store.test.d.ts +0 -2
  87. package/dist/__tests__/navigation-store.test.d.ts.map +0 -1
  88. package/dist/__tests__/navigation-store.test.js +0 -440
  89. package/dist/__tests__/navigation-store.test.js.map +0 -1
  90. package/dist/__tests__/partial-update.test.d.ts +0 -2
  91. package/dist/__tests__/partial-update.test.d.ts.map +0 -1
  92. package/dist/__tests__/partial-update.test.js +0 -1009
  93. package/dist/__tests__/partial-update.test.js.map +0 -1
  94. package/dist/__tests__/reverse-types.test.d.ts +0 -8
  95. package/dist/__tests__/reverse-types.test.d.ts.map +0 -1
  96. package/dist/__tests__/reverse-types.test.js +0 -656
  97. package/dist/__tests__/reverse-types.test.js.map +0 -1
  98. package/dist/__tests__/route-definition.test.d.ts +0 -2
  99. package/dist/__tests__/route-definition.test.d.ts.map +0 -1
  100. package/dist/__tests__/route-definition.test.js +0 -55
  101. package/dist/__tests__/route-definition.test.js.map +0 -1
  102. package/dist/__tests__/router-helpers.test.d.ts +0 -2
  103. package/dist/__tests__/router-helpers.test.d.ts.map +0 -1
  104. package/dist/__tests__/router-helpers.test.js +0 -377
  105. package/dist/__tests__/router-helpers.test.js.map +0 -1
  106. package/dist/__tests__/router-integration-2.test.d.ts +0 -2
  107. package/dist/__tests__/router-integration-2.test.d.ts.map +0 -1
  108. package/dist/__tests__/router-integration-2.test.js +0 -426
  109. package/dist/__tests__/router-integration-2.test.js.map +0 -1
  110. package/dist/__tests__/router-integration.test.d.ts +0 -2
  111. package/dist/__tests__/router-integration.test.d.ts.map +0 -1
  112. package/dist/__tests__/router-integration.test.js +0 -1051
  113. package/dist/__tests__/router-integration.test.js.map +0 -1
  114. package/dist/__tests__/search-params.test.d.ts +0 -5
  115. package/dist/__tests__/search-params.test.d.ts.map +0 -1
  116. package/dist/__tests__/search-params.test.js +0 -306
  117. package/dist/__tests__/search-params.test.js.map +0 -1
  118. package/dist/__tests__/segment-system.test.d.ts +0 -2
  119. package/dist/__tests__/segment-system.test.d.ts.map +0 -1
  120. package/dist/__tests__/segment-system.test.js +0 -627
  121. package/dist/__tests__/segment-system.test.js.map +0 -1
  122. package/dist/__tests__/static-handler-types.test.d.ts +0 -8
  123. package/dist/__tests__/static-handler-types.test.d.ts.map +0 -1
  124. package/dist/__tests__/static-handler-types.test.js +0 -63
  125. package/dist/__tests__/static-handler-types.test.js.map +0 -1
  126. package/dist/__tests__/urls.test.d.ts +0 -2
  127. package/dist/__tests__/urls.test.d.ts.map +0 -1
  128. package/dist/__tests__/urls.test.js +0 -421
  129. package/dist/__tests__/urls.test.js.map +0 -1
  130. package/dist/__tests__/use-mount.test.d.ts +0 -2
  131. package/dist/__tests__/use-mount.test.d.ts.map +0 -1
  132. package/dist/__tests__/use-mount.test.js +0 -35
  133. package/dist/__tests__/use-mount.test.js.map +0 -1
  134. package/dist/bin/rango.d.ts +0 -2
  135. package/dist/bin/rango.d.ts.map +0 -1
  136. package/dist/bin/rango.js.map +0 -1
  137. package/dist/browser/event-controller.d.ts +0 -191
  138. package/dist/browser/event-controller.d.ts.map +0 -1
  139. package/dist/browser/event-controller.js +0 -559
  140. package/dist/browser/event-controller.js.map +0 -1
  141. package/dist/browser/index.d.ts +0 -2
  142. package/dist/browser/index.d.ts.map +0 -1
  143. package/dist/browser/index.js +0 -14
  144. package/dist/browser/index.js.map +0 -1
  145. package/dist/browser/link-interceptor.d.ts +0 -38
  146. package/dist/browser/link-interceptor.d.ts.map +0 -1
  147. package/dist/browser/link-interceptor.js +0 -99
  148. package/dist/browser/link-interceptor.js.map +0 -1
  149. package/dist/browser/logging.d.ts +0 -10
  150. package/dist/browser/logging.d.ts.map +0 -1
  151. package/dist/browser/logging.js +0 -29
  152. package/dist/browser/logging.js.map +0 -1
  153. package/dist/browser/lru-cache.d.ts +0 -17
  154. package/dist/browser/lru-cache.d.ts.map +0 -1
  155. package/dist/browser/lru-cache.js +0 -50
  156. package/dist/browser/lru-cache.js.map +0 -1
  157. package/dist/browser/merge-segment-loaders.d.ts +0 -39
  158. package/dist/browser/merge-segment-loaders.d.ts.map +0 -1
  159. package/dist/browser/merge-segment-loaders.js +0 -102
  160. package/dist/browser/merge-segment-loaders.js.map +0 -1
  161. package/dist/browser/navigation-bridge.d.ts +0 -102
  162. package/dist/browser/navigation-bridge.d.ts.map +0 -1
  163. package/dist/browser/navigation-bridge.js +0 -708
  164. package/dist/browser/navigation-bridge.js.map +0 -1
  165. package/dist/browser/navigation-client.d.ts +0 -25
  166. package/dist/browser/navigation-client.d.ts.map +0 -1
  167. package/dist/browser/navigation-client.js +0 -157
  168. package/dist/browser/navigation-client.js.map +0 -1
  169. package/dist/browser/navigation-store.d.ts +0 -101
  170. package/dist/browser/navigation-store.d.ts.map +0 -1
  171. package/dist/browser/navigation-store.js +0 -625
  172. package/dist/browser/navigation-store.js.map +0 -1
  173. package/dist/browser/partial-update.d.ts +0 -75
  174. package/dist/browser/partial-update.d.ts.map +0 -1
  175. package/dist/browser/partial-update.js +0 -426
  176. package/dist/browser/partial-update.js.map +0 -1
  177. package/dist/browser/react/Link.d.ts +0 -86
  178. package/dist/browser/react/Link.d.ts.map +0 -1
  179. package/dist/browser/react/Link.js +0 -128
  180. package/dist/browser/react/Link.js.map +0 -1
  181. package/dist/browser/react/NavigationProvider.d.ts +0 -63
  182. package/dist/browser/react/NavigationProvider.d.ts.map +0 -1
  183. package/dist/browser/react/NavigationProvider.js +0 -216
  184. package/dist/browser/react/NavigationProvider.js.map +0 -1
  185. package/dist/browser/react/ScrollRestoration.d.ts +0 -75
  186. package/dist/browser/react/ScrollRestoration.d.ts.map +0 -1
  187. package/dist/browser/react/ScrollRestoration.js +0 -57
  188. package/dist/browser/react/ScrollRestoration.js.map +0 -1
  189. package/dist/browser/react/context.d.ts +0 -46
  190. package/dist/browser/react/context.d.ts.map +0 -1
  191. package/dist/browser/react/context.js +0 -10
  192. package/dist/browser/react/context.js.map +0 -1
  193. package/dist/browser/react/index.d.ts +0 -11
  194. package/dist/browser/react/index.d.ts.map +0 -1
  195. package/dist/browser/react/index.js +0 -22
  196. package/dist/browser/react/index.js.map +0 -1
  197. package/dist/browser/react/location-state-shared.d.ts +0 -63
  198. package/dist/browser/react/location-state-shared.d.ts.map +0 -1
  199. package/dist/browser/react/location-state-shared.js +0 -81
  200. package/dist/browser/react/location-state-shared.js.map +0 -1
  201. package/dist/browser/react/location-state.d.ts +0 -23
  202. package/dist/browser/react/location-state.d.ts.map +0 -1
  203. package/dist/browser/react/location-state.js +0 -29
  204. package/dist/browser/react/location-state.js.map +0 -1
  205. package/dist/browser/react/mount-context.d.ts +0 -24
  206. package/dist/browser/react/mount-context.d.ts.map +0 -1
  207. package/dist/browser/react/mount-context.js +0 -24
  208. package/dist/browser/react/mount-context.js.map +0 -1
  209. package/dist/browser/react/use-action.d.ts +0 -64
  210. package/dist/browser/react/use-action.d.ts.map +0 -1
  211. package/dist/browser/react/use-action.js +0 -134
  212. package/dist/browser/react/use-action.js.map +0 -1
  213. package/dist/browser/react/use-client-cache.d.ts +0 -41
  214. package/dist/browser/react/use-client-cache.d.ts.map +0 -1
  215. package/dist/browser/react/use-client-cache.js +0 -39
  216. package/dist/browser/react/use-client-cache.js.map +0 -1
  217. package/dist/browser/react/use-handle.d.ts +0 -31
  218. package/dist/browser/react/use-handle.d.ts.map +0 -1
  219. package/dist/browser/react/use-handle.js +0 -144
  220. package/dist/browser/react/use-handle.js.map +0 -1
  221. package/dist/browser/react/use-href.d.ts +0 -33
  222. package/dist/browser/react/use-href.d.ts.map +0 -1
  223. package/dist/browser/react/use-href.js +0 -39
  224. package/dist/browser/react/use-href.js.map +0 -1
  225. package/dist/browser/react/use-link-status.d.ts +0 -37
  226. package/dist/browser/react/use-link-status.d.ts.map +0 -1
  227. package/dist/browser/react/use-link-status.js +0 -99
  228. package/dist/browser/react/use-link-status.js.map +0 -1
  229. package/dist/browser/react/use-mount.d.ts +0 -25
  230. package/dist/browser/react/use-mount.d.ts.map +0 -1
  231. package/dist/browser/react/use-mount.js +0 -30
  232. package/dist/browser/react/use-mount.js.map +0 -1
  233. package/dist/browser/react/use-navigation.d.ts +0 -27
  234. package/dist/browser/react/use-navigation.d.ts.map +0 -1
  235. package/dist/browser/react/use-navigation.js +0 -87
  236. package/dist/browser/react/use-navigation.js.map +0 -1
  237. package/dist/browser/react/use-segments.d.ts +0 -38
  238. package/dist/browser/react/use-segments.d.ts.map +0 -1
  239. package/dist/browser/react/use-segments.js +0 -130
  240. package/dist/browser/react/use-segments.js.map +0 -1
  241. package/dist/browser/request-controller.d.ts +0 -26
  242. package/dist/browser/request-controller.d.ts.map +0 -1
  243. package/dist/browser/request-controller.js +0 -147
  244. package/dist/browser/request-controller.js.map +0 -1
  245. package/dist/browser/rsc-router.d.ts +0 -129
  246. package/dist/browser/rsc-router.d.ts.map +0 -1
  247. package/dist/browser/rsc-router.js +0 -195
  248. package/dist/browser/rsc-router.js.map +0 -1
  249. package/dist/browser/scroll-restoration.d.ts +0 -93
  250. package/dist/browser/scroll-restoration.d.ts.map +0 -1
  251. package/dist/browser/scroll-restoration.js +0 -321
  252. package/dist/browser/scroll-restoration.js.map +0 -1
  253. package/dist/browser/segment-structure-assert.d.ts +0 -17
  254. package/dist/browser/segment-structure-assert.d.ts.map +0 -1
  255. package/dist/browser/segment-structure-assert.js +0 -59
  256. package/dist/browser/segment-structure-assert.js.map +0 -1
  257. package/dist/browser/server-action-bridge.d.ts +0 -26
  258. package/dist/browser/server-action-bridge.d.ts.map +0 -1
  259. package/dist/browser/server-action-bridge.js +0 -668
  260. package/dist/browser/server-action-bridge.js.map +0 -1
  261. package/dist/browser/shallow.d.ts +0 -12
  262. package/dist/browser/shallow.d.ts.map +0 -1
  263. package/dist/browser/shallow.js +0 -34
  264. package/dist/browser/shallow.js.map +0 -1
  265. package/dist/browser/types.d.ts +0 -369
  266. package/dist/browser/types.d.ts.map +0 -1
  267. package/dist/browser/types.js +0 -2
  268. package/dist/browser/types.js.map +0 -1
  269. package/dist/build/__tests__/generate-cli.test.d.ts +0 -2
  270. package/dist/build/__tests__/generate-cli.test.d.ts.map +0 -1
  271. package/dist/build/__tests__/generate-cli.test.js +0 -237
  272. package/dist/build/__tests__/generate-cli.test.js.map +0 -1
  273. package/dist/build/__tests__/generate-manifest.test.d.ts +0 -2
  274. package/dist/build/__tests__/generate-manifest.test.d.ts.map +0 -1
  275. package/dist/build/__tests__/generate-manifest.test.js +0 -119
  276. package/dist/build/__tests__/generate-manifest.test.js.map +0 -1
  277. package/dist/build/__tests__/generate-route-types.test.d.ts +0 -2
  278. package/dist/build/__tests__/generate-route-types.test.d.ts.map +0 -1
  279. package/dist/build/__tests__/generate-route-types.test.js +0 -620
  280. package/dist/build/__tests__/generate-route-types.test.js.map +0 -1
  281. package/dist/build/__tests__/per-router-manifest.test.d.ts +0 -2
  282. package/dist/build/__tests__/per-router-manifest.test.d.ts.map +0 -1
  283. package/dist/build/__tests__/per-router-manifest.test.js +0 -308
  284. package/dist/build/__tests__/per-router-manifest.test.js.map +0 -1
  285. package/dist/build/generate-manifest.d.ts +0 -81
  286. package/dist/build/generate-manifest.d.ts.map +0 -1
  287. package/dist/build/generate-manifest.js +0 -276
  288. package/dist/build/generate-manifest.js.map +0 -1
  289. package/dist/build/generate-route-types.d.ts +0 -115
  290. package/dist/build/generate-route-types.d.ts.map +0 -1
  291. package/dist/build/generate-route-types.js +0 -740
  292. package/dist/build/generate-route-types.js.map +0 -1
  293. package/dist/build/index.d.ts +0 -21
  294. package/dist/build/index.d.ts.map +0 -1
  295. package/dist/build/index.js +0 -21
  296. package/dist/build/index.js.map +0 -1
  297. package/dist/build/route-trie.d.ts +0 -71
  298. package/dist/build/route-trie.d.ts.map +0 -1
  299. package/dist/build/route-trie.js +0 -175
  300. package/dist/build/route-trie.js.map +0 -1
  301. package/dist/cache/__tests__/cache-scope.test.d.ts +0 -2
  302. package/dist/cache/__tests__/cache-scope.test.d.ts.map +0 -1
  303. package/dist/cache/__tests__/cache-scope.test.js +0 -208
  304. package/dist/cache/__tests__/cache-scope.test.js.map +0 -1
  305. package/dist/cache/__tests__/document-cache.test.d.ts +0 -2
  306. package/dist/cache/__tests__/document-cache.test.d.ts.map +0 -1
  307. package/dist/cache/__tests__/document-cache.test.js +0 -345
  308. package/dist/cache/__tests__/document-cache.test.js.map +0 -1
  309. package/dist/cache/__tests__/memory-segment-store.test.d.ts +0 -2
  310. package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +0 -1
  311. package/dist/cache/__tests__/memory-segment-store.test.js +0 -425
  312. package/dist/cache/__tests__/memory-segment-store.test.js.map +0 -1
  313. package/dist/cache/__tests__/memory-store.test.d.ts +0 -2
  314. package/dist/cache/__tests__/memory-store.test.d.ts.map +0 -1
  315. package/dist/cache/__tests__/memory-store.test.js +0 -367
  316. package/dist/cache/__tests__/memory-store.test.js.map +0 -1
  317. package/dist/cache/cache-scope.d.ts +0 -102
  318. package/dist/cache/cache-scope.d.ts.map +0 -1
  319. package/dist/cache/cache-scope.js +0 -440
  320. package/dist/cache/cache-scope.js.map +0 -1
  321. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +0 -2
  322. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +0 -1
  323. package/dist/cache/cf/__tests__/cf-cache-store.test.js +0 -330
  324. package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +0 -1
  325. package/dist/cache/cf/cf-cache-store.d.ts +0 -165
  326. package/dist/cache/cf/cf-cache-store.d.ts.map +0 -1
  327. package/dist/cache/cf/cf-cache-store.js +0 -242
  328. package/dist/cache/cf/cf-cache-store.js.map +0 -1
  329. package/dist/cache/cf/index.d.ts +0 -14
  330. package/dist/cache/cf/index.d.ts.map +0 -1
  331. package/dist/cache/cf/index.js +0 -17
  332. package/dist/cache/cf/index.js.map +0 -1
  333. package/dist/cache/document-cache.d.ts +0 -64
  334. package/dist/cache/document-cache.d.ts.map +0 -1
  335. package/dist/cache/document-cache.js +0 -228
  336. package/dist/cache/document-cache.js.map +0 -1
  337. package/dist/cache/index.d.ts +0 -19
  338. package/dist/cache/index.d.ts.map +0 -1
  339. package/dist/cache/index.js +0 -21
  340. package/dist/cache/index.js.map +0 -1
  341. package/dist/cache/memory-segment-store.d.ts +0 -110
  342. package/dist/cache/memory-segment-store.d.ts.map +0 -1
  343. package/dist/cache/memory-segment-store.js +0 -117
  344. package/dist/cache/memory-segment-store.js.map +0 -1
  345. package/dist/cache/memory-store.d.ts +0 -41
  346. package/dist/cache/memory-store.d.ts.map +0 -1
  347. package/dist/cache/memory-store.js +0 -191
  348. package/dist/cache/memory-store.js.map +0 -1
  349. package/dist/cache/types.d.ts +0 -317
  350. package/dist/cache/types.d.ts.map +0 -1
  351. package/dist/cache/types.js +0 -12
  352. package/dist/cache/types.js.map +0 -1
  353. package/dist/client.d.ts +0 -248
  354. package/dist/client.d.ts.map +0 -1
  355. package/dist/client.js +0 -367
  356. package/dist/client.js.map +0 -1
  357. package/dist/client.rsc.d.ts +0 -26
  358. package/dist/client.rsc.d.ts.map +0 -1
  359. package/dist/client.rsc.js +0 -46
  360. package/dist/client.rsc.js.map +0 -1
  361. package/dist/component-utils.d.ts +0 -36
  362. package/dist/component-utils.d.ts.map +0 -1
  363. package/dist/component-utils.js +0 -61
  364. package/dist/component-utils.js.map +0 -1
  365. package/dist/components/DefaultDocument.d.ts +0 -13
  366. package/dist/components/DefaultDocument.d.ts.map +0 -1
  367. package/dist/components/DefaultDocument.js +0 -15
  368. package/dist/components/DefaultDocument.js.map +0 -1
  369. package/dist/debug.d.ts +0 -58
  370. package/dist/debug.d.ts.map +0 -1
  371. package/dist/debug.js +0 -157
  372. package/dist/debug.js.map +0 -1
  373. package/dist/default-error-boundary.d.ts +0 -11
  374. package/dist/default-error-boundary.d.ts.map +0 -1
  375. package/dist/default-error-boundary.js +0 -45
  376. package/dist/default-error-boundary.js.map +0 -1
  377. package/dist/deps/browser.d.ts +0 -2
  378. package/dist/deps/browser.d.ts.map +0 -1
  379. package/dist/deps/browser.js +0 -3
  380. package/dist/deps/browser.js.map +0 -1
  381. package/dist/deps/html-stream-client.d.ts +0 -2
  382. package/dist/deps/html-stream-client.d.ts.map +0 -1
  383. package/dist/deps/html-stream-client.js +0 -3
  384. package/dist/deps/html-stream-client.js.map +0 -1
  385. package/dist/deps/html-stream-server.d.ts +0 -2
  386. package/dist/deps/html-stream-server.d.ts.map +0 -1
  387. package/dist/deps/html-stream-server.js +0 -3
  388. package/dist/deps/html-stream-server.js.map +0 -1
  389. package/dist/deps/rsc.d.ts +0 -2
  390. package/dist/deps/rsc.d.ts.map +0 -1
  391. package/dist/deps/rsc.js +0 -4
  392. package/dist/deps/rsc.js.map +0 -1
  393. package/dist/deps/ssr.d.ts +0 -2
  394. package/dist/deps/ssr.d.ts.map +0 -1
  395. package/dist/deps/ssr.js +0 -3
  396. package/dist/deps/ssr.js.map +0 -1
  397. package/dist/errors.d.ts +0 -174
  398. package/dist/errors.d.ts.map +0 -1
  399. package/dist/errors.js +0 -241
  400. package/dist/errors.js.map +0 -1
  401. package/dist/handle.d.ts +0 -78
  402. package/dist/handle.d.ts.map +0 -1
  403. package/dist/handle.js +0 -82
  404. package/dist/handle.js.map +0 -1
  405. package/dist/handles/MetaTags.d.ts +0 -14
  406. package/dist/handles/MetaTags.d.ts.map +0 -1
  407. package/dist/handles/MetaTags.js +0 -136
  408. package/dist/handles/MetaTags.js.map +0 -1
  409. package/dist/handles/index.d.ts +0 -6
  410. package/dist/handles/index.d.ts.map +0 -1
  411. package/dist/handles/index.js +0 -6
  412. package/dist/handles/index.js.map +0 -1
  413. package/dist/handles/meta.d.ts +0 -39
  414. package/dist/handles/meta.d.ts.map +0 -1
  415. package/dist/handles/meta.js +0 -202
  416. package/dist/handles/meta.js.map +0 -1
  417. package/dist/host/__tests__/errors.test.d.ts +0 -2
  418. package/dist/host/__tests__/errors.test.d.ts.map +0 -1
  419. package/dist/host/__tests__/errors.test.js +0 -76
  420. package/dist/host/__tests__/errors.test.js.map +0 -1
  421. package/dist/host/__tests__/pattern-comprehensive.test.d.ts +0 -2
  422. package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +0 -1
  423. package/dist/host/__tests__/pattern-comprehensive.test.js +0 -732
  424. package/dist/host/__tests__/pattern-comprehensive.test.js.map +0 -1
  425. package/dist/host/__tests__/pattern-matcher.test.d.ts +0 -2
  426. package/dist/host/__tests__/pattern-matcher.test.d.ts.map +0 -1
  427. package/dist/host/__tests__/pattern-matcher.test.js +0 -251
  428. package/dist/host/__tests__/pattern-matcher.test.js.map +0 -1
  429. package/dist/host/__tests__/router.test.d.ts +0 -2
  430. package/dist/host/__tests__/router.test.d.ts.map +0 -1
  431. package/dist/host/__tests__/router.test.js +0 -241
  432. package/dist/host/__tests__/router.test.js.map +0 -1
  433. package/dist/host/__tests__/testing.test.d.ts +0 -2
  434. package/dist/host/__tests__/testing.test.d.ts.map +0 -1
  435. package/dist/host/__tests__/testing.test.js +0 -64
  436. package/dist/host/__tests__/testing.test.js.map +0 -1
  437. package/dist/host/__tests__/utils.test.d.ts +0 -2
  438. package/dist/host/__tests__/utils.test.d.ts.map +0 -1
  439. package/dist/host/__tests__/utils.test.js +0 -29
  440. package/dist/host/__tests__/utils.test.js.map +0 -1
  441. package/dist/host/cookie-handler.d.ts +0 -34
  442. package/dist/host/cookie-handler.d.ts.map +0 -1
  443. package/dist/host/cookie-handler.js +0 -124
  444. package/dist/host/cookie-handler.js.map +0 -1
  445. package/dist/host/errors.d.ts +0 -56
  446. package/dist/host/errors.d.ts.map +0 -1
  447. package/dist/host/errors.js +0 -79
  448. package/dist/host/errors.js.map +0 -1
  449. package/dist/host/index.d.ts +0 -29
  450. package/dist/host/index.d.ts.map +0 -1
  451. package/dist/host/index.js +0 -32
  452. package/dist/host/index.js.map +0 -1
  453. package/dist/host/pattern-matcher.d.ts +0 -36
  454. package/dist/host/pattern-matcher.d.ts.map +0 -1
  455. package/dist/host/pattern-matcher.js +0 -172
  456. package/dist/host/pattern-matcher.js.map +0 -1
  457. package/dist/host/router.d.ts +0 -26
  458. package/dist/host/router.d.ts.map +0 -1
  459. package/dist/host/router.js +0 -218
  460. package/dist/host/router.js.map +0 -1
  461. package/dist/host/testing.d.ts +0 -36
  462. package/dist/host/testing.d.ts.map +0 -1
  463. package/dist/host/testing.js +0 -55
  464. package/dist/host/testing.js.map +0 -1
  465. package/dist/host/types.d.ts +0 -115
  466. package/dist/host/types.d.ts.map +0 -1
  467. package/dist/host/types.js +0 -7
  468. package/dist/host/types.js.map +0 -1
  469. package/dist/host/utils.d.ts +0 -21
  470. package/dist/host/utils.d.ts.map +0 -1
  471. package/dist/host/utils.js +0 -23
  472. package/dist/host/utils.js.map +0 -1
  473. package/dist/href-client.d.ts +0 -131
  474. package/dist/href-client.d.ts.map +0 -1
  475. package/dist/href-client.js +0 -64
  476. package/dist/href-client.js.map +0 -1
  477. package/dist/href-context.d.ts +0 -29
  478. package/dist/href-context.d.ts.map +0 -1
  479. package/dist/href-context.js +0 -21
  480. package/dist/href-context.js.map +0 -1
  481. package/dist/index.d.ts +0 -73
  482. package/dist/index.d.ts.map +0 -1
  483. package/dist/index.js +0 -91
  484. package/dist/index.js.map +0 -1
  485. package/dist/index.rsc.d.ts +0 -32
  486. package/dist/index.rsc.d.ts.map +0 -1
  487. package/dist/index.rsc.js +0 -40
  488. package/dist/index.rsc.js.map +0 -1
  489. package/dist/internal-debug.d.ts +0 -2
  490. package/dist/internal-debug.d.ts.map +0 -1
  491. package/dist/internal-debug.js +0 -5
  492. package/dist/internal-debug.js.map +0 -1
  493. package/dist/loader.d.ts +0 -14
  494. package/dist/loader.d.ts.map +0 -1
  495. package/dist/loader.js +0 -20
  496. package/dist/loader.js.map +0 -1
  497. package/dist/loader.rsc.d.ts +0 -19
  498. package/dist/loader.rsc.d.ts.map +0 -1
  499. package/dist/loader.rsc.js +0 -99
  500. package/dist/loader.rsc.js.map +0 -1
  501. package/dist/network-error-thrower.d.ts +0 -17
  502. package/dist/network-error-thrower.d.ts.map +0 -1
  503. package/dist/network-error-thrower.js +0 -14
  504. package/dist/network-error-thrower.js.map +0 -1
  505. package/dist/outlet-context.d.ts +0 -13
  506. package/dist/outlet-context.d.ts.map +0 -1
  507. package/dist/outlet-context.js +0 -3
  508. package/dist/outlet-context.js.map +0 -1
  509. package/dist/prerender/__tests__/param-hash.test.d.ts +0 -2
  510. package/dist/prerender/__tests__/param-hash.test.d.ts.map +0 -1
  511. package/dist/prerender/__tests__/param-hash.test.js +0 -148
  512. package/dist/prerender/__tests__/param-hash.test.js.map +0 -1
  513. package/dist/prerender/param-hash.d.ts +0 -16
  514. package/dist/prerender/param-hash.d.ts.map +0 -1
  515. package/dist/prerender/param-hash.js +0 -36
  516. package/dist/prerender/param-hash.js.map +0 -1
  517. package/dist/prerender/store.d.ts +0 -38
  518. package/dist/prerender/store.d.ts.map +0 -1
  519. package/dist/prerender/store.js +0 -61
  520. package/dist/prerender/store.js.map +0 -1
  521. package/dist/prerender.d.ts +0 -66
  522. package/dist/prerender.d.ts.map +0 -1
  523. package/dist/prerender.js +0 -57
  524. package/dist/prerender.js.map +0 -1
  525. package/dist/reverse.d.ts +0 -196
  526. package/dist/reverse.d.ts.map +0 -1
  527. package/dist/reverse.js +0 -78
  528. package/dist/reverse.js.map +0 -1
  529. package/dist/root-error-boundary.d.ts +0 -33
  530. package/dist/root-error-boundary.d.ts.map +0 -1
  531. package/dist/root-error-boundary.js +0 -165
  532. package/dist/root-error-boundary.js.map +0 -1
  533. package/dist/route-content-wrapper.d.ts +0 -46
  534. package/dist/route-content-wrapper.d.ts.map +0 -1
  535. package/dist/route-content-wrapper.js +0 -77
  536. package/dist/route-content-wrapper.js.map +0 -1
  537. package/dist/route-definition.d.ts +0 -421
  538. package/dist/route-definition.d.ts.map +0 -1
  539. package/dist/route-definition.js +0 -868
  540. package/dist/route-definition.js.map +0 -1
  541. package/dist/route-map-builder.d.ts +0 -155
  542. package/dist/route-map-builder.d.ts.map +0 -1
  543. package/dist/route-map-builder.js +0 -237
  544. package/dist/route-map-builder.js.map +0 -1
  545. package/dist/route-types.d.ts +0 -165
  546. package/dist/route-types.d.ts.map +0 -1
  547. package/dist/route-types.js +0 -7
  548. package/dist/route-types.js.map +0 -1
  549. package/dist/router/__tests__/handler-context.test.d.ts +0 -2
  550. package/dist/router/__tests__/handler-context.test.d.ts.map +0 -1
  551. package/dist/router/__tests__/handler-context.test.js +0 -65
  552. package/dist/router/__tests__/handler-context.test.js.map +0 -1
  553. package/dist/router/__tests__/loader-cycle-detection.test.d.ts +0 -2
  554. package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +0 -1
  555. package/dist/router/__tests__/loader-cycle-detection.test.js +0 -221
  556. package/dist/router/__tests__/loader-cycle-detection.test.js.map +0 -1
  557. package/dist/router/__tests__/match-context.test.d.ts +0 -2
  558. package/dist/router/__tests__/match-context.test.d.ts.map +0 -1
  559. package/dist/router/__tests__/match-context.test.js +0 -92
  560. package/dist/router/__tests__/match-context.test.js.map +0 -1
  561. package/dist/router/__tests__/match-pipelines.test.d.ts +0 -2
  562. package/dist/router/__tests__/match-pipelines.test.d.ts.map +0 -1
  563. package/dist/router/__tests__/match-pipelines.test.js +0 -417
  564. package/dist/router/__tests__/match-pipelines.test.js.map +0 -1
  565. package/dist/router/__tests__/match-result.test.d.ts +0 -2
  566. package/dist/router/__tests__/match-result.test.d.ts.map +0 -1
  567. package/dist/router/__tests__/match-result.test.js +0 -457
  568. package/dist/router/__tests__/match-result.test.js.map +0 -1
  569. package/dist/router/__tests__/on-error.test.d.ts +0 -2
  570. package/dist/router/__tests__/on-error.test.d.ts.map +0 -1
  571. package/dist/router/__tests__/on-error.test.js +0 -678
  572. package/dist/router/__tests__/on-error.test.js.map +0 -1
  573. package/dist/router/__tests__/pattern-matching.test.d.ts +0 -2
  574. package/dist/router/__tests__/pattern-matching.test.d.ts.map +0 -1
  575. package/dist/router/__tests__/pattern-matching.test.js +0 -629
  576. package/dist/router/__tests__/pattern-matching.test.js.map +0 -1
  577. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +0 -2
  578. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +0 -1
  579. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +0 -155
  580. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +0 -1
  581. package/dist/router/error-handling.d.ts +0 -77
  582. package/dist/router/error-handling.d.ts.map +0 -1
  583. package/dist/router/error-handling.js +0 -202
  584. package/dist/router/error-handling.js.map +0 -1
  585. package/dist/router/handler-context.d.ts +0 -20
  586. package/dist/router/handler-context.d.ts.map +0 -1
  587. package/dist/router/handler-context.js +0 -198
  588. package/dist/router/handler-context.js.map +0 -1
  589. package/dist/router/intercept-resolution.d.ts +0 -66
  590. package/dist/router/intercept-resolution.d.ts.map +0 -1
  591. package/dist/router/intercept-resolution.js +0 -246
  592. package/dist/router/intercept-resolution.js.map +0 -1
  593. package/dist/router/loader-resolution.d.ts +0 -64
  594. package/dist/router/loader-resolution.d.ts.map +0 -1
  595. package/dist/router/loader-resolution.js +0 -284
  596. package/dist/router/loader-resolution.js.map +0 -1
  597. package/dist/router/logging.d.ts +0 -15
  598. package/dist/router/logging.d.ts.map +0 -1
  599. package/dist/router/logging.js +0 -99
  600. package/dist/router/logging.js.map +0 -1
  601. package/dist/router/manifest.d.ts +0 -22
  602. package/dist/router/manifest.d.ts.map +0 -1
  603. package/dist/router/manifest.js +0 -181
  604. package/dist/router/manifest.js.map +0 -1
  605. package/dist/router/match-api.d.ts +0 -35
  606. package/dist/router/match-api.d.ts.map +0 -1
  607. package/dist/router/match-api.js +0 -406
  608. package/dist/router/match-api.js.map +0 -1
  609. package/dist/router/match-context.d.ts +0 -206
  610. package/dist/router/match-context.d.ts.map +0 -1
  611. package/dist/router/match-context.js +0 -17
  612. package/dist/router/match-context.js.map +0 -1
  613. package/dist/router/match-middleware/background-revalidation.d.ts +0 -127
  614. package/dist/router/match-middleware/background-revalidation.d.ts.map +0 -1
  615. package/dist/router/match-middleware/background-revalidation.js +0 -75
  616. package/dist/router/match-middleware/background-revalidation.js.map +0 -1
  617. package/dist/router/match-middleware/cache-lookup.d.ts +0 -112
  618. package/dist/router/match-middleware/cache-lookup.d.ts.map +0 -1
  619. package/dist/router/match-middleware/cache-lookup.js +0 -257
  620. package/dist/router/match-middleware/cache-lookup.js.map +0 -1
  621. package/dist/router/match-middleware/cache-store.d.ts +0 -113
  622. package/dist/router/match-middleware/cache-store.d.ts.map +0 -1
  623. package/dist/router/match-middleware/cache-store.js +0 -108
  624. package/dist/router/match-middleware/cache-store.js.map +0 -1
  625. package/dist/router/match-middleware/index.d.ts +0 -81
  626. package/dist/router/match-middleware/index.d.ts.map +0 -1
  627. package/dist/router/match-middleware/index.js +0 -80
  628. package/dist/router/match-middleware/index.js.map +0 -1
  629. package/dist/router/match-middleware/intercept-resolution.d.ts +0 -117
  630. package/dist/router/match-middleware/intercept-resolution.d.ts.map +0 -1
  631. package/dist/router/match-middleware/intercept-resolution.js +0 -134
  632. package/dist/router/match-middleware/intercept-resolution.js.map +0 -1
  633. package/dist/router/match-middleware/segment-resolution.d.ts +0 -99
  634. package/dist/router/match-middleware/segment-resolution.d.ts.map +0 -1
  635. package/dist/router/match-middleware/segment-resolution.js +0 -53
  636. package/dist/router/match-middleware/segment-resolution.js.map +0 -1
  637. package/dist/router/match-pipelines.d.ts +0 -147
  638. package/dist/router/match-pipelines.d.ts.map +0 -1
  639. package/dist/router/match-pipelines.js +0 -82
  640. package/dist/router/match-pipelines.js.map +0 -1
  641. package/dist/router/match-result.d.ts +0 -126
  642. package/dist/router/match-result.d.ts.map +0 -1
  643. package/dist/router/match-result.js +0 -93
  644. package/dist/router/match-result.js.map +0 -1
  645. package/dist/router/metrics.d.ts +0 -20
  646. package/dist/router/metrics.d.ts.map +0 -1
  647. package/dist/router/metrics.js +0 -47
  648. package/dist/router/metrics.js.map +0 -1
  649. package/dist/router/middleware.d.ts +0 -249
  650. package/dist/router/middleware.d.ts.map +0 -1
  651. package/dist/router/middleware.js +0 -434
  652. package/dist/router/middleware.js.map +0 -1
  653. package/dist/router/middleware.test.d.ts +0 -2
  654. package/dist/router/middleware.test.d.ts.map +0 -1
  655. package/dist/router/middleware.test.js +0 -816
  656. package/dist/router/middleware.test.js.map +0 -1
  657. package/dist/router/pattern-matching.d.ts +0 -149
  658. package/dist/router/pattern-matching.d.ts.map +0 -1
  659. package/dist/router/pattern-matching.js +0 -349
  660. package/dist/router/pattern-matching.js.map +0 -1
  661. package/dist/router/revalidation.d.ts +0 -44
  662. package/dist/router/revalidation.d.ts.map +0 -1
  663. package/dist/router/revalidation.js +0 -147
  664. package/dist/router/revalidation.js.map +0 -1
  665. package/dist/router/router-context.d.ts +0 -135
  666. package/dist/router/router-context.d.ts.map +0 -1
  667. package/dist/router/router-context.js +0 -36
  668. package/dist/router/router-context.js.map +0 -1
  669. package/dist/router/segment-resolution.d.ts +0 -127
  670. package/dist/router/segment-resolution.d.ts.map +0 -1
  671. package/dist/router/segment-resolution.js +0 -919
  672. package/dist/router/segment-resolution.js.map +0 -1
  673. package/dist/router/trie-matching.d.ts +0 -40
  674. package/dist/router/trie-matching.d.ts.map +0 -1
  675. package/dist/router/trie-matching.js +0 -127
  676. package/dist/router/trie-matching.js.map +0 -1
  677. package/dist/router/types.d.ts +0 -136
  678. package/dist/router/types.d.ts.map +0 -1
  679. package/dist/router/types.js +0 -7
  680. package/dist/router/types.js.map +0 -1
  681. package/dist/router.d.ts +0 -753
  682. package/dist/router.d.ts.map +0 -1
  683. package/dist/router.gen.d.ts +0 -6
  684. package/dist/router.gen.d.ts.map +0 -1
  685. package/dist/router.gen.js +0 -6
  686. package/dist/router.gen.js.map +0 -1
  687. package/dist/router.js +0 -1304
  688. package/dist/router.js.map +0 -1
  689. package/dist/rsc/__tests__/helpers.test.d.ts +0 -2
  690. package/dist/rsc/__tests__/helpers.test.d.ts.map +0 -1
  691. package/dist/rsc/__tests__/helpers.test.js +0 -140
  692. package/dist/rsc/__tests__/helpers.test.js.map +0 -1
  693. package/dist/rsc/handler.d.ts +0 -45
  694. package/dist/rsc/handler.d.ts.map +0 -1
  695. package/dist/rsc/handler.js +0 -1172
  696. package/dist/rsc/handler.js.map +0 -1
  697. package/dist/rsc/helpers.d.ts +0 -16
  698. package/dist/rsc/helpers.d.ts.map +0 -1
  699. package/dist/rsc/helpers.js +0 -55
  700. package/dist/rsc/helpers.js.map +0 -1
  701. package/dist/rsc/index.d.ts +0 -22
  702. package/dist/rsc/index.d.ts.map +0 -1
  703. package/dist/rsc/index.js +0 -23
  704. package/dist/rsc/index.js.map +0 -1
  705. package/dist/rsc/nonce.d.ts +0 -9
  706. package/dist/rsc/nonce.d.ts.map +0 -1
  707. package/dist/rsc/nonce.js +0 -18
  708. package/dist/rsc/nonce.js.map +0 -1
  709. package/dist/rsc/types.d.ts +0 -206
  710. package/dist/rsc/types.d.ts.map +0 -1
  711. package/dist/rsc/types.js +0 -8
  712. package/dist/rsc/types.js.map +0 -1
  713. package/dist/search-params.d.ts +0 -103
  714. package/dist/search-params.d.ts.map +0 -1
  715. package/dist/search-params.js +0 -74
  716. package/dist/search-params.js.map +0 -1
  717. package/dist/segment-system.d.ts +0 -75
  718. package/dist/segment-system.d.ts.map +0 -1
  719. package/dist/segment-system.js +0 -336
  720. package/dist/segment-system.js.map +0 -1
  721. package/dist/server/context.d.ts +0 -245
  722. package/dist/server/context.d.ts.map +0 -1
  723. package/dist/server/context.js +0 -197
  724. package/dist/server/context.js.map +0 -1
  725. package/dist/server/fetchable-loader-store.d.ts +0 -18
  726. package/dist/server/fetchable-loader-store.d.ts.map +0 -1
  727. package/dist/server/fetchable-loader-store.js +0 -18
  728. package/dist/server/fetchable-loader-store.js.map +0 -1
  729. package/dist/server/handle-store.d.ts +0 -85
  730. package/dist/server/handle-store.d.ts.map +0 -1
  731. package/dist/server/handle-store.js +0 -142
  732. package/dist/server/handle-store.js.map +0 -1
  733. package/dist/server/loader-registry.d.ts +0 -55
  734. package/dist/server/loader-registry.d.ts.map +0 -1
  735. package/dist/server/loader-registry.js +0 -132
  736. package/dist/server/loader-registry.js.map +0 -1
  737. package/dist/server/request-context.d.ts +0 -226
  738. package/dist/server/request-context.d.ts.map +0 -1
  739. package/dist/server/request-context.js +0 -290
  740. package/dist/server/request-context.js.map +0 -1
  741. package/dist/server/root-layout.d.ts +0 -4
  742. package/dist/server/root-layout.d.ts.map +0 -1
  743. package/dist/server/root-layout.js +0 -5
  744. package/dist/server/root-layout.js.map +0 -1
  745. package/dist/server.d.ts +0 -15
  746. package/dist/server.d.ts.map +0 -1
  747. package/dist/server.js +0 -20
  748. package/dist/server.js.map +0 -1
  749. package/dist/ssr/__tests__/ssr-handler.test.d.ts +0 -2
  750. package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +0 -1
  751. package/dist/ssr/__tests__/ssr-handler.test.js +0 -132
  752. package/dist/ssr/__tests__/ssr-handler.test.js.map +0 -1
  753. package/dist/ssr/index.d.ts +0 -98
  754. package/dist/ssr/index.d.ts.map +0 -1
  755. package/dist/ssr/index.js +0 -158
  756. package/dist/ssr/index.js.map +0 -1
  757. package/dist/static-handler.d.ts +0 -50
  758. package/dist/static-handler.d.ts.map +0 -1
  759. package/dist/static-handler.gen.d.ts +0 -5
  760. package/dist/static-handler.gen.d.ts.map +0 -1
  761. package/dist/static-handler.gen.js +0 -5
  762. package/dist/static-handler.gen.js.map +0 -1
  763. package/dist/static-handler.js +0 -29
  764. package/dist/static-handler.js.map +0 -1
  765. package/dist/theme/ThemeProvider.d.ts +0 -20
  766. package/dist/theme/ThemeProvider.d.ts.map +0 -1
  767. package/dist/theme/ThemeProvider.js +0 -240
  768. package/dist/theme/ThemeProvider.js.map +0 -1
  769. package/dist/theme/ThemeScript.d.ts +0 -48
  770. package/dist/theme/ThemeScript.d.ts.map +0 -1
  771. package/dist/theme/ThemeScript.js +0 -13
  772. package/dist/theme/ThemeScript.js.map +0 -1
  773. package/dist/theme/__tests__/theme.test.d.ts +0 -2
  774. package/dist/theme/__tests__/theme.test.d.ts.map +0 -1
  775. package/dist/theme/__tests__/theme.test.js +0 -103
  776. package/dist/theme/__tests__/theme.test.js.map +0 -1
  777. package/dist/theme/constants.d.ts +0 -29
  778. package/dist/theme/constants.d.ts.map +0 -1
  779. package/dist/theme/constants.js +0 -48
  780. package/dist/theme/constants.js.map +0 -1
  781. package/dist/theme/index.d.ts +0 -31
  782. package/dist/theme/index.d.ts.map +0 -1
  783. package/dist/theme/index.js +0 -36
  784. package/dist/theme/index.js.map +0 -1
  785. package/dist/theme/theme-context.d.ts +0 -40
  786. package/dist/theme/theme-context.d.ts.map +0 -1
  787. package/dist/theme/theme-context.js +0 -60
  788. package/dist/theme/theme-context.js.map +0 -1
  789. package/dist/theme/theme-script.d.ts +0 -27
  790. package/dist/theme/theme-script.d.ts.map +0 -1
  791. package/dist/theme/theme-script.js +0 -147
  792. package/dist/theme/theme-script.js.map +0 -1
  793. package/dist/theme/types.d.ts +0 -163
  794. package/dist/theme/types.d.ts.map +0 -1
  795. package/dist/theme/types.js +0 -11
  796. package/dist/theme/types.js.map +0 -1
  797. package/dist/theme/use-theme.d.ts +0 -12
  798. package/dist/theme/use-theme.d.ts.map +0 -1
  799. package/dist/theme/use-theme.js +0 -40
  800. package/dist/theme/use-theme.js.map +0 -1
  801. package/dist/types.d.ts +0 -1479
  802. package/dist/types.d.ts.map +0 -1
  803. package/dist/types.js +0 -10
  804. package/dist/types.js.map +0 -1
  805. package/dist/urls.d.ts +0 -441
  806. package/dist/urls.d.ts.map +0 -1
  807. package/dist/urls.gen.d.ts +0 -8
  808. package/dist/urls.gen.d.ts.map +0 -1
  809. package/dist/urls.gen.js +0 -8
  810. package/dist/urls.gen.js.map +0 -1
  811. package/dist/urls.js +0 -443
  812. package/dist/urls.js.map +0 -1
  813. package/dist/use-loader.d.ts +0 -127
  814. package/dist/use-loader.d.ts.map +0 -1
  815. package/dist/use-loader.js +0 -237
  816. package/dist/use-loader.js.map +0 -1
  817. package/dist/vite/__tests__/ast-handler-extract.test.d.ts +0 -2
  818. package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +0 -1
  819. package/dist/vite/__tests__/ast-handler-extract.test.js +0 -294
  820. package/dist/vite/__tests__/ast-handler-extract.test.js.map +0 -1
  821. package/dist/vite/__tests__/expose-id-utils.test.d.ts +0 -2
  822. package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +0 -1
  823. package/dist/vite/__tests__/expose-id-utils.test.js +0 -224
  824. package/dist/vite/__tests__/expose-id-utils.test.js.map +0 -1
  825. package/dist/vite/__tests__/expose-internal-ids.test.d.ts +0 -2
  826. package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +0 -1
  827. package/dist/vite/__tests__/expose-internal-ids.test.js +0 -647
  828. package/dist/vite/__tests__/expose-internal-ids.test.js.map +0 -1
  829. package/dist/vite/__tests__/expose-router-id.test.d.ts +0 -2
  830. package/dist/vite/__tests__/expose-router-id.test.d.ts.map +0 -1
  831. package/dist/vite/__tests__/expose-router-id.test.js +0 -39
  832. package/dist/vite/__tests__/expose-router-id.test.js.map +0 -1
  833. package/dist/vite/ast-handler-extract.d.ts +0 -49
  834. package/dist/vite/ast-handler-extract.d.ts.map +0 -1
  835. package/dist/vite/ast-handler-extract.js +0 -249
  836. package/dist/vite/ast-handler-extract.js.map +0 -1
  837. package/dist/vite/expose-action-id.d.ts +0 -19
  838. package/dist/vite/expose-action-id.d.ts.map +0 -1
  839. package/dist/vite/expose-action-id.js +0 -250
  840. package/dist/vite/expose-action-id.js.map +0 -1
  841. package/dist/vite/expose-id-utils.d.ts +0 -69
  842. package/dist/vite/expose-id-utils.d.ts.map +0 -1
  843. package/dist/vite/expose-id-utils.js +0 -289
  844. package/dist/vite/expose-id-utils.js.map +0 -1
  845. package/dist/vite/expose-internal-ids.d.ts +0 -22
  846. package/dist/vite/expose-internal-ids.d.ts.map +0 -1
  847. package/dist/vite/expose-internal-ids.js +0 -886
  848. package/dist/vite/expose-internal-ids.js.map +0 -1
  849. package/dist/vite/index.d.ts +0 -149
  850. package/dist/vite/index.d.ts.map +0 -1
  851. package/dist/vite/index.js.bak +0 -5448
  852. package/dist/vite/index.js.map +0 -1
  853. package/dist/vite/index.named-routes.gen.ts +0 -103
  854. package/dist/vite/package-resolution.d.ts +0 -43
  855. package/dist/vite/package-resolution.d.ts.map +0 -1
  856. package/dist/vite/package-resolution.js +0 -112
  857. package/dist/vite/package-resolution.js.map +0 -1
  858. package/dist/vite/virtual-entries.d.ts +0 -25
  859. package/dist/vite/virtual-entries.d.ts.map +0 -1
  860. package/dist/vite/virtual-entries.js +0 -110
  861. package/dist/vite/virtual-entries.js.map +0 -1
  862. package/src/browser/react/deferred-handle-resolution.ts +0 -75
@@ -9,6 +9,10 @@ import {
9
9
  import type { UrlPatterns } from "../urls.js";
10
10
  import type { AllUseItems, IncludeItem } from "../route-types.js";
11
11
  import type { ResolvedRouteMap, RouteEntry, TrailingSlashMode } from "../types";
12
+ import {
13
+ isIncludeProvider,
14
+ resolveIncludeModule,
15
+ } from "../urls/include-provider.js";
12
16
 
13
17
  export interface LazyEvalDeps<TEnv = any> {
14
18
  routesEntries: RouteEntry<TEnv>[];
@@ -69,7 +73,7 @@ export function findLazyIncludes<TEnv = any>(
69
73
  export function evaluateLazyEntry<TEnv = any>(
70
74
  entry: RouteEntry<TEnv>,
71
75
  deps: LazyEvalDeps<TEnv>,
72
- ): void {
76
+ ): void | Promise<void> {
73
77
  if (!entry.lazy || entry.lazyEvaluated || !entry.lazyPatterns) {
74
78
  return;
75
79
  }
@@ -93,9 +97,52 @@ export function evaluateLazyEntry<TEnv = any>(
93
97
  }
94
98
  }
95
99
 
96
- entry.lazyEvaluated = true;
100
+ // Async provider (`() => import("./routes")`): the route module is evaluated
101
+ // off the startup path, on the first request reaching this prefix. Concurrent
102
+ // first-hits share one in-flight promise so the import + expansion run exactly
103
+ // once. The eager path below stays fully synchronous (no Promise), so the
104
+ // per-entry match loop pays no microtask for normal includes.
105
+ const lazyPatterns = entry.lazyPatterns;
106
+ if (isIncludeProvider(lazyPatterns)) {
107
+ const inflight = (entry as { _lazyInflight?: Promise<void> })._lazyInflight;
108
+ if (inflight) return inflight;
109
+ const work = (async () => {
110
+ const resolved = resolveIncludeModule(
111
+ await lazyPatterns(),
112
+ entry.staticPrefix,
113
+ );
114
+ // Cache the resolved patterns: any later re-entry expands synchronously.
115
+ entry.lazyPatterns = resolved as unknown as UrlPatterns<TEnv>;
116
+ runExpansion(entry, deps, resolved as UrlPatterns<TEnv>);
117
+ })();
118
+ (entry as { _lazyInflight?: Promise<void> })._lazyInflight = work;
119
+ const clear = () => {
120
+ (entry as { _lazyInflight?: Promise<void> })._lazyInflight = undefined;
121
+ };
122
+ // On failure, clear the flag (lazyEvaluated stays false) so a later request
123
+ // can retry the import rather than wedging the route permanently.
124
+ work.then(clear, clear);
125
+ return work;
126
+ }
127
+
128
+ runExpansion(entry, deps, lazyPatterns as UrlPatterns<TEnv>);
129
+ }
97
130
 
98
- const lazyPatterns = entry.lazyPatterns as UrlPatterns<TEnv>;
131
+ /**
132
+ * Synchronously expand a lazy entry's (already-resolved) patterns into routes
133
+ * and splice any nested lazy includes as new entries. Runs once per entry.
134
+ */
135
+ function runExpansion<TEnv = any>(
136
+ entry: RouteEntry<TEnv>,
137
+ deps: LazyEvalDeps<TEnv>,
138
+ lazyPatterns: UrlPatterns<TEnv>,
139
+ ): void {
140
+ // lazyEvaluated is set at the END, only after the handler ran and the routes
141
+ // (and any nested includes) were spliced. Setting it up-front would mark the
142
+ // entry done even if the handler throws mid-expansion: the async provider
143
+ // path clears _lazyInflight on rejection so a later request can retry, but a
144
+ // premature lazyEvaluated=true would make evaluateLazyEntry short-circuit
145
+ // (line ~77) forever, wedging the route at 404 until the isolate restarts.
99
146
  const lazyContext = entry.lazyContext;
100
147
 
101
148
  const manifest = new Map<string, EntryData>();
@@ -105,12 +152,9 @@ export function evaluateLazyEntry<TEnv = any>(
105
152
 
106
153
  let handlerResult: AllUseItems[] = [];
107
154
 
108
- const lazyCounters: Record<string, number> = {};
109
- if (lazyContext?.counters) {
110
- for (const [key, value] of Object.entries(lazyContext.counters)) {
111
- lazyCounters[key] = value;
112
- }
113
- }
155
+ const lazyCounters: Record<string, number> = lazyContext?.counters
156
+ ? { ...lazyContext.counters }
157
+ : {};
114
158
 
115
159
  RangoContext.run(
116
160
  {
@@ -170,7 +214,12 @@ export function evaluateLazyEntry<TEnv = any>(
170
214
  staticPrefix: extractStaticPrefix(fullPrefix),
171
215
  routes: {} as ResolvedRouteMap<any>,
172
216
  trailingSlash: entry.trailingSlash,
173
- handler: (lazyInclude.patterns as UrlPatterns<TEnv>).handler,
217
+ // include entries don't invoke their own handler (real handlers come from
218
+ // the expanded routes); use the parent's placeholder. A provider has no
219
+ // `.handler` until resolved, so never read it here.
220
+ handler: isIncludeProvider(lazyInclude.patterns)
221
+ ? entry.handler
222
+ : (lazyInclude.patterns as UrlPatterns<TEnv>).handler,
174
223
  mountIndex: deps.nextMountIndex(),
175
224
  routerId: deps.routerId,
176
225
  lazy: true,
@@ -197,4 +246,9 @@ export function evaluateLazyEntry<TEnv = any>(
197
246
  }
198
247
 
199
248
  registerRouteMap(deps.mergedRouteMap);
249
+
250
+ // Expansion fully succeeded (handler ran, routes + nested includes spliced) —
251
+ // mark done now so a mid-expansion throw above leaves lazyEvaluated=false and
252
+ // the entry retriable.
253
+ entry.lazyEvaluated = true;
200
254
  }
@@ -11,8 +11,17 @@ import MapRootLayout from "../server/root-layout";
11
11
  import { joinPrefix } from "./pattern-matching.js";
12
12
  import type { RouteEntry } from "../types";
13
13
  import type { UrlPatterns } from "../urls";
14
+ import {
15
+ isIncludeProvider,
16
+ resolveIncludeModule,
17
+ } from "../urls/include-provider.js";
14
18
  import { VERSION } from "@rangojs/router:version";
15
19
 
20
+ // Tags an error thrown while dynamically importing an async include's module
21
+ // (`() => import("./routes")`) so loadManifest's outer catch re-raises it as a
22
+ // server error rather than masking it as a RouteNotFoundError (404).
23
+ const MODULE_LOAD_FAILURE = Symbol.for("rango.moduleLoadFailure");
24
+
16
25
  // Module-level manifest cache: avoids re-executing DSL handler on every request.
17
26
  // Handler execution is deterministic (components, loaders, middleware are module-level
18
27
  // stable references), so the resulting EntryData tree can be safely cached and reused
@@ -165,6 +174,29 @@ export async function loadManifest(
165
174
  // not exist in the non-lazy (root handler) path and would produce
166
175
  // mismatched shortCodes.
167
176
  if (entry.lazy && entry.lazyPatterns) {
177
+ // Resolve an async include provider (`() => import("./routes")`) before
178
+ // running its handler. The match-time precomputed shortcut can skip
179
+ // evaluateLazyEntry's resolution, so render-time must resolve it here;
180
+ // cache the resolved patterns on the entry so later renders reuse them.
181
+ if (isIncludeProvider(entry.lazyPatterns)) {
182
+ try {
183
+ entry.lazyPatterns = resolveIncludeModule(
184
+ await entry.lazyPatterns(),
185
+ entry.staticPrefix,
186
+ ) as unknown as UrlPatterns<any>;
187
+ } catch (err) {
188
+ // A failed dynamic import of a REAL, matched route's module is a
189
+ // server error, not a missing route. Tag it so the outer catch
190
+ // surfaces it as a 5xx instead of masking it as a
191
+ // RouteNotFoundError — which renders the 404 page (monitoring
192
+ // misses the failure and a CDN could cache the 404).
193
+ if (err && typeof err === "object") {
194
+ (err as Record<PropertyKey, unknown>)[MODULE_LOAD_FAILURE] =
195
+ true;
196
+ }
197
+ throw err;
198
+ }
199
+ }
168
200
  const lazyPatterns = entry.lazyPatterns as UrlPatterns<any>;
169
201
  const includePrefix = (entry as any)._lazyPrefix || "";
170
202
  // Slash-collapsing join so a trailing-slash parent prefix does not
@@ -192,12 +224,7 @@ export async function loadManifest(
192
224
 
193
225
  if (promiseResult !== null) {
194
226
  const load = await (promiseResult as Promise<any>);
195
- if (
196
- load &&
197
- load !== null &&
198
- typeof load === "object" &&
199
- "default" in load
200
- ) {
227
+ if (load && typeof load === "object" && "default" in load) {
201
228
  // Promise<{ default: () => Array }> - e.g., dynamic import
202
229
  if (typeof load.default !== "function") {
203
230
  throw new Error(
@@ -255,6 +282,16 @@ export async function loadManifest(
255
282
 
256
283
  return Store.manifest.get(routeKey)!;
257
284
  } catch (e) {
285
+ // A tagged async-include module-load failure is a server error for a REAL
286
+ // matched route — re-raise it unchanged (becomes a 5xx) instead of masking
287
+ // it as a RouteNotFoundError (which renders/caches a 404).
288
+ if (
289
+ e &&
290
+ typeof e === "object" &&
291
+ (e as Record<PropertyKey, unknown>)[MODULE_LOAD_FAILURE]
292
+ ) {
293
+ throw e;
294
+ }
258
295
  throw new RouteNotFoundError(
259
296
  `Failed to load route handlers for ${path}: ${(e as Error).message}`,
260
297
  {
@@ -220,7 +220,7 @@ export async function createMatchContextForPartial<TEnv>(
220
220
  matched.pt = true;
221
221
  }
222
222
 
223
- const nav = resolveNavigation(request, url, matched.routeKey, {
223
+ const nav = await resolveNavigation(request, url, matched.routeKey, {
224
224
  findMatch: deps.findMatch,
225
225
  });
226
226
  if (!nav) {
@@ -404,7 +404,7 @@ export async function matchError<TEnv>(
404
404
 
405
405
  debugLog("matchError", "matching error", { pathname });
406
406
 
407
- const matched = deps.findMatch(pathname);
407
+ const matched = await deps.findMatch(pathname);
408
408
  if (!matched) {
409
409
  debugWarn("matchError", "no route matched", { pathname });
410
410
  return null;
@@ -25,15 +25,17 @@ export interface NavigationSnapshot {
25
25
  }
26
26
 
27
27
  export interface ResolveNavigationDeps {
28
- findMatch: (pathname: string) => RouteMatchResult | null;
28
+ findMatch: (
29
+ pathname: string,
30
+ ) => RouteMatchResult | null | Promise<RouteMatchResult | null>;
29
31
  }
30
32
 
31
- export function resolveNavigation(
33
+ export async function resolveNavigation(
32
34
  request: Request,
33
35
  url: URL,
34
36
  currentRouteKey: string,
35
37
  deps: ResolveNavigationDeps,
36
- ): NavigationSnapshot | null {
38
+ ): Promise<NavigationSnapshot | null> {
37
39
  const clientSegmentIds =
38
40
  url.searchParams.get("_rsc_segments")?.split(",").filter(Boolean) || [];
39
41
  const stale = url.searchParams.get("_rsc_stale") === "true";
@@ -65,10 +67,10 @@ export function resolveNavigation(
65
67
  interceptContextUrl = prevUrl;
66
68
  }
67
69
 
68
- const prevMatch = deps.findMatch(prevUrl.pathname);
70
+ const prevMatch = await deps.findMatch(prevUrl.pathname);
69
71
  const prevParams = prevMatch?.params || {};
70
72
  const interceptContextMatch = interceptSourceUrl
71
- ? deps.findMatch(interceptContextUrl.pathname)
73
+ ? await deps.findMatch(interceptContextUrl.pathname)
72
74
  : prevMatch;
73
75
 
74
76
  const isSameRouteNavigation = !!(
@@ -1,5 +1,6 @@
1
1
  import { type ReactNode } from "react";
2
2
  import { createHandleStore } from "../server/handle-store.js";
3
+ import { resolveSegmentHandleValues } from "../handles/deferred-resolution.js";
3
4
  import { getRequestContext } from "../server/request-context.js";
4
5
  import {
5
6
  runWithRequestContext,
@@ -32,7 +33,9 @@ import type {
32
33
  import type { RouteMatchResult } from "./pattern-matching.js";
33
34
 
34
35
  export interface PrerenderMatchDeps<TEnv = any> {
35
- findMatch: (pathname: string) => RouteMatchResult<TEnv> | null;
36
+ findMatch: (
37
+ pathname: string,
38
+ ) => RouteMatchResult<TEnv> | null | Promise<RouteMatchResult<TEnv> | null>;
36
39
  buildRouterContext: () => RouterContext<TEnv>;
37
40
  mergedRouteMap: Record<string, string>;
38
41
  resolveAllSegments: (
@@ -73,7 +76,7 @@ export async function matchForPrerender<TEnv = any>(
73
76
  passthrough?: true;
74
77
  } | null> {
75
78
  // 1. Find the matching route entry
76
- const matched = deps.findMatch(pathname);
79
+ const matched = await deps.findMatch(pathname);
77
80
  if (!matched) return null;
78
81
 
79
82
  // Use params from trie match if available, fall back to provided params
@@ -293,7 +296,9 @@ export async function matchForPrerender<TEnv = any>(
293
296
  for (const seg of nonLoaderSegments) {
294
297
  const segHandles = handleStore.getDataForSegment(seg.id);
295
298
  if (Object.keys(segHandles).length > 0) {
296
- handlesRecord[seg.id] = segHandles;
299
+ // Resolve deferred values before encoding so the baked artifact holds
300
+ // resolved data (prerender = build-time cache).
301
+ handlesRecord[seg.id] = await resolveSegmentHandleValues(segHandles);
297
302
  }
298
303
  }
299
304
  const handles = await encodeHandles(handlesRecord);
@@ -394,7 +399,8 @@ export async function matchForPrerender<TEnv = any>(
394
399
  for (const seg of interceptResolvedSegments) {
395
400
  const segHandles = handleStore.getDataForSegment(seg.id);
396
401
  if (Object.keys(segHandles).length > 0) {
397
- interceptHandlesRecord[seg.id] = segHandles;
402
+ interceptHandlesRecord[seg.id] =
403
+ await resolveSegmentHandleValues(segHandles);
398
404
  }
399
405
  }
400
406
  // The intercept artifact serves main + intercept segments together, so
@@ -533,7 +539,7 @@ export async function renderStaticSegment<TEnv = any>(
533
539
  const segHandles = handleStore.getDataForSegment(handlerId);
534
540
  const handles =
535
541
  Object.keys(segHandles).length > 0
536
- ? await encodeHandleValue(segHandles)
542
+ ? await encodeHandleValue(await resolveSegmentHandleValues(segHandles))
537
543
  : "";
538
544
 
539
545
  return { encoded: serialized.encoded, handles };
@@ -6,7 +6,9 @@ import type { MiddlewareFn } from "./middleware.js";
6
6
  import { resolveRoute } from "./route-snapshot.js";
7
7
 
8
8
  export interface PreviewMatchDeps<TEnv = any> {
9
- findMatch: (pathname: string) => RouteMatchResult<TEnv> | null;
9
+ findMatch: (
10
+ pathname: string,
11
+ ) => RouteMatchResult<TEnv> | null | Promise<RouteMatchResult<TEnv> | null>;
10
12
  }
11
13
 
12
14
  /**
@@ -121,7 +121,9 @@ export type {
121
121
  };
122
122
 
123
123
  export interface ClassifyRequestDeps<TEnv = any> {
124
- findMatch: (pathname: string) => RouteMatchResult<TEnv> | null;
124
+ findMatch: (
125
+ pathname: string,
126
+ ) => RouteMatchResult<TEnv> | null | Promise<RouteMatchResult<TEnv> | null>;
125
127
  routerVersion: string;
126
128
  routerId: string;
127
129
  }
@@ -56,7 +56,9 @@ export type ResolveRouteResult<TEnv = any> =
56
56
  | null;
57
57
 
58
58
  export interface ResolveRouteDeps<TEnv = any> {
59
- findMatch: (pathname: string) => RouteMatchResult<TEnv> | null;
59
+ findMatch: (
60
+ pathname: string,
61
+ ) => RouteMatchResult<TEnv> | null | Promise<RouteMatchResult<TEnv> | null>;
60
62
  metricsStore?: MetricsStore;
61
63
  isSSR?: boolean;
62
64
  /**
@@ -105,7 +107,7 @@ export async function resolveRoute<TEnv = any>(
105
107
 
106
108
  const routeMatchStart =
107
109
  metricsStore && !skipRouteMatchMetric ? performance.now() : 0;
108
- const matched = deps.findMatch(pathname);
110
+ const matched = await deps.findMatch(pathname);
109
111
  if (metricsStore && !skipRouteMatchMetric) {
110
112
  metricsStore.metrics.push({
111
113
  label: "route-matching",
@@ -55,7 +55,9 @@ export interface InterceptResult {
55
55
  * Instead of passing 20+ parameters, middleware calls getRouterContext() to access them.
56
56
  */
57
57
  export interface RouterContext<TEnv = any> {
58
- findMatch: (pathname: string) => RouteMatchResult | null;
58
+ findMatch: (
59
+ pathname: string,
60
+ ) => RouteMatchResult | null | Promise<RouteMatchResult | null>;
59
61
 
60
62
  loadManifest: (
61
63
  entry: any,
@@ -9,6 +9,7 @@ import type { NonceProvider } from "../rsc/types.js";
9
9
  import type { ExecutionContext } from "../server/request-context.js";
10
10
  import type { SerializedSegmentData } from "../cache/types.js";
11
11
  import type { MiddlewareEntry, MiddlewareFn } from "./middleware.js";
12
+ import type { RouteMatchResult } from "./pattern-matching.js";
12
13
  import type { ExtractParams } from "../types/route-config.js";
13
14
  import { RSC_ROUTER_BRAND } from "./router-registry.js";
14
15
  import type { RangoOptions, RootLayoutProps } from "./router-options.js";
@@ -516,7 +517,14 @@ export interface RangoInternal<
516
517
  * Used by classifyRequest() for request classification without
517
518
  * entering the full match pipeline.
518
519
  */
519
- findMatch(pathname: string, metricsStore?: any): any;
520
+ // Async since a lazy async include (`() => import()`) must resolve before its
521
+ // routes can match. Typed (not `any`) so a consumer doing
522
+ // `const m = router.findMatch(p); if (!m) ...; m.entry` gets a compile error
523
+ // (m is a Promise) instead of the silent always-truthy bug.
524
+ findMatch(
525
+ pathname: string,
526
+ metricsStore?: any,
527
+ ): Promise<RouteMatchResult<TEnv> | null>;
520
528
 
521
529
  /**
522
530
  * Debug utility to serialize the manifest for inspection
package/src/router.ts CHANGED
@@ -620,8 +620,15 @@ export function createRouter<TEnv = any>(
620
620
  routerId,
621
621
  };
622
622
 
623
- function evaluateLazyEntry(entry: RouteEntry<TEnv>): void {
624
- _evaluateLazyEntry(entry, lazyEvalDeps);
623
+ // Must return the Promise from _evaluateLazyEntry: an async include provider
624
+ // (`() => import("./routes")`) resolves off the startup path, and createFindMatch
625
+ // awaits this to know when the import + expansion have completed. Dropping it
626
+ // (typing this `void`) makes the import fire-and-forget, so findMatch spins the
627
+ // lazy-eval retry loop to its cap and returns null on the first request to any
628
+ // async include whose prefix isn't already covered by a unique precomputed entry
629
+ // (nested includes, shared prefixes, regex fallback).
630
+ function evaluateLazyEntry(entry: RouteEntry<TEnv>): void | Promise<void> {
631
+ return _evaluateLazyEntry(entry, lazyEvalDeps);
625
632
  }
626
633
 
627
634
  // Create findMatch with single-entry cache, bound to router state
@@ -31,6 +31,7 @@ import {
31
31
  buildRouteMiddlewareEntries,
32
32
  } from "./helpers.js";
33
33
  import { guardOutgoingRedirect } from "./redirect-guard.js";
34
+ import { resolvedHandleStream } from "../handles/deferred-resolution.js";
34
35
  import {
35
36
  isWebSocketUpgradeResponse,
36
37
  appendVaryAccept,
@@ -1131,7 +1132,8 @@ export function createRSCHandler<
1131
1132
  params: {},
1132
1133
  isPartial: false,
1133
1134
  rootLayout: router.rootLayout,
1134
- handles: handleStore.stream(),
1135
+ // Full (404) render: resolve deferred handle values server-side.
1136
+ handles: resolvedHandleStream(handleStore),
1135
1137
  version,
1136
1138
  prefetchCacheTTL: router.prefetchCacheTTL,
1137
1139
  prefetchCacheSize: router.prefetchCacheSize,
@@ -32,7 +32,7 @@ export async function buildRouterTrieFromUrlpatterns(
32
32
  ): Promise<void> {
33
33
  const { generateManifestFull } =
34
34
  await import("../build/generate-manifest.js");
35
- const generated = generateManifestFull(
35
+ const generated = await generateManifestFull(
36
36
  router.urlpatterns,
37
37
  undefined,
38
38
  router.basename ? { urlPrefix: router.basename } : undefined,
@@ -15,6 +15,7 @@ import type { MiddlewareFn } from "../router/middleware.js";
15
15
  import { executeMiddleware } from "../router/middleware.js";
16
16
  import { observePhase, PHASES } from "../router/instrument.js";
17
17
  import { gateTransitions } from "./transition-gate.js";
18
+ import { resolvedHandleStream } from "../handles/deferred-resolution.js";
18
19
  import type { RscPayload, ReactFormState } from "./types.js";
19
20
  import {
20
21
  createResponseWithMergedHeaders,
@@ -315,7 +316,8 @@ export async function handleProgressiveEnhancement<TEnv>(
315
316
  params: match.params,
316
317
  isPartial: false,
317
318
  rootLayout: ctx.router.rootLayout,
318
- handles: handleStore.stream(),
319
+ // PE full render: resolve deferred handle values server-side.
320
+ handles: resolvedHandleStream(handleStore),
319
321
  version: ctx.version,
320
322
  stateCookieName: ctx.router.resolvedStateCookieName,
321
323
  themeConfig: ctx.router.themeConfig,
@@ -462,7 +464,8 @@ async function renderPeErrorBoundary<TEnv>(
462
464
  isPartial: false,
463
465
  isError: true,
464
466
  rootLayout: ctx.router.rootLayout,
465
- handles: handleStore.stream(),
467
+ // PE error-boundary full render: resolve deferred handle values server-side.
468
+ handles: resolvedHandleStream(handleStore),
466
469
  version: ctx.version,
467
470
  stateCookieName: ctx.router.resolvedStateCookieName,
468
471
  themeConfig: ctx.router.themeConfig,
@@ -22,6 +22,7 @@ import {
22
22
  } from "./helpers.js";
23
23
  import type { HandlerContext } from "./handler-context.js";
24
24
  import { gateTransitions } from "./transition-gate.js";
25
+ import { resolvedHandleStream } from "../handles/deferred-resolution.js";
25
26
 
26
27
  export function handleRscRendering<TEnv>(
27
28
  ctx: HandlerContext<TEnv>,
@@ -78,7 +79,10 @@ async function handleRscRenderingInner<TEnv>(
78
79
  params: m.params,
79
80
  isPartial: false,
80
81
  rootLayout: ctx.router.rootLayout,
81
- handles: handleStore.stream(),
82
+ // Full render: resolve deferred handle values server-side so SSR markup and
83
+ // the first sync useHandle read see resolved values. Partial payloads below
84
+ // keep streaming (handleStore.stream()).
85
+ handles: resolvedHandleStream(handleStore),
82
86
  version: ctx.version,
83
87
  prefetchCacheTTL: ctx.router.prefetchCacheTTL,
84
88
  prefetchCacheSize: ctx.router.prefetchCacheSize,
package/src/ssr/index.tsx CHANGED
@@ -195,6 +195,7 @@ function createSsrEventController(opts: {
195
195
  subscribeToHandles: () => () => {},
196
196
  setHandleData: () => {},
197
197
  getHandleState: () => handleState,
198
+ setRouteSegmentIds: () => {},
198
199
  setParams: (nextParams) => {
199
200
  params = nextParams;
200
201
  },
@@ -12,7 +12,9 @@
12
12
  * It relies on createHandle registering the collect even in a bare test (it
13
13
  * assigns a runtime fallback id when the Vite plugin did not inject one). If a
14
14
  * handle's module was never imported (so createHandle never ran), the collect is
15
- * unregistered and this falls back to a flat array with a warning.
15
+ * unregistered and this falls back to the default identity collect — with a
16
+ * warning, since a CUSTOM collect that failed to register silently returns the
17
+ * wrong shape.
16
18
  */
17
19
 
18
20
  import { getCollectFn, type Handle } from "../handle.js";
@@ -25,16 +27,20 @@ export function collectHandle<TData, TAccumulated>(
25
27
  | ((segments: TData[][]) => TAccumulated)
26
28
  | undefined;
27
29
 
30
+ // Drop empty arrays matching production behavior (segment count/indices).
31
+ const nonEmpty = segments.filter((seg) => seg.length > 0) as TData[][];
32
+
33
+ // No registered collect (the handle's module was not imported): fall back to the
34
+ // default identity collect — the per-segment arrays as-is, mirroring production
35
+ // collectHandleData. Warn, because a handle with a CUSTOM collect would silently
36
+ // get the wrong shape (the runtime can't tell it from an intended default).
28
37
  if (!collectFn) {
29
38
  console.warn(
30
- `[rango] collectHandle: handle "${handle.$$id}" has no registered collect ` +
31
- `function. Import the handle's module so createHandle() runs. Falling ` +
32
- `back to a flat array.`,
39
+ `[rango] collectHandle: handle "${handle.$$id}" has no registered collect ` +
40
+ `falling back to the identity (per-segment data as-is). Import the handle's ` +
41
+ `module so createHandle() runs if you expected a custom collect.`,
33
42
  );
34
- return segments.flat() as unknown as TAccumulated;
43
+ return nonEmpty as unknown as TAccumulated;
35
44
  }
36
-
37
- // Drop empty arrays matching production behavior (segment count/indices).
38
- const nonEmpty = segments.filter((seg) => seg.length > 0) as TData[][];
39
45
  return collectFn(nonEmpty);
40
46
  }
@@ -140,11 +140,11 @@ interface DispatchableRouter<TEnv> {
140
140
  routeMap: Record<string, unknown>;
141
141
  middleware: MiddlewareEntry<TEnv>[];
142
142
  onError?: OnErrorCallback<TEnv>;
143
- findMatch(pathname: string): {
143
+ findMatch(pathname: string): Promise<{
144
144
  redirectTo?: string;
145
145
  routeKey?: string;
146
146
  params?: Record<string, string>;
147
- } | null;
147
+ } | null>;
148
148
  previewMatch(
149
149
  request: Request,
150
150
  input?: { env?: TEnv },
@@ -351,7 +351,7 @@ export async function dispatch<TEnv = any>(
351
351
 
352
352
  // findMatch carries trailing-slash/redirect targets and null on no match.
353
353
  // previewMatch swallows redirects, so detect them here first.
354
- const match = router.findMatch(url.pathname);
354
+ const match = await router.findMatch(url.pathname);
355
355
  const redirectTo = match?.redirectTo;
356
356
  const isUnmatched = !match;
357
357
 
@@ -29,6 +29,10 @@ import { isAutoGeneratedRouteName } from "../route-name.js";
29
29
  */
30
30
  interface RouterWithRouteMap {
31
31
  routeMap: Record<string, unknown>;
32
+ // findMatch is async (it may await an async include provider's import before
33
+ // the route's names are spliced into routeMap), so expandLazyIncludes awaits
34
+ // it. Typed `unknown` (not `unknown | Promise<unknown>`, which collapses to
35
+ // the same thing) — the awaited value is never read, only its side effect.
32
36
  findMatch?: (pathname: string) => unknown;
33
37
  }
34
38
 
@@ -42,16 +46,28 @@ function concretePath(pattern: string): string {
42
46
  );
43
47
  }
44
48
 
45
- function expandLazyIncludes(
49
+ async function expandLazyIncludes(
46
50
  router: RouterWithRouteMap,
47
51
  patterns: Iterable<string>,
48
- ): void {
52
+ ): Promise<void> {
49
53
  const findMatch = router.findMatch;
50
54
  if (typeof findMatch !== "function") return;
51
55
  for (const pattern of patterns) {
52
56
  try {
53
- findMatch.call(router, concretePath(pattern));
54
- } catch {}
57
+ // Await: an async include(`() => import()`) resolves its module + splices
58
+ // its routes into routeMap only after findMatch's Promise settles. Without
59
+ // the await, the routeMap read below races the import and reports the
60
+ // split-group routes as missing.
61
+ await findMatch.call(router, concretePath(pattern));
62
+ } catch (e) {
63
+ // A findMatch throw here is almost always a failing async include()
64
+ // provider (its `() => import()` rejected). Surface it — swallowed, it
65
+ // resurfaces downstream as a misleading "missing route" in the diff.
66
+ console.warn(
67
+ `[@rangojs/router] assertGeneratedRoutesMatch: could not expand include ` +
68
+ `for "${pattern}": ${(e as Error)?.message ?? String(e)}`,
69
+ );
70
+ }
55
71
  }
56
72
  }
57
73
 
@@ -91,13 +107,13 @@ function patternOf(value: unknown): string {
91
107
  return String(value);
92
108
  }
93
109
 
94
- export function diffGeneratedRoutes(
110
+ export async function diffGeneratedRoutes(
95
111
  router: RouterWithRouteMap,
96
112
  generatedMap?: Record<string, unknown>,
97
- ): GeneratedRoutesDiff {
113
+ ): Promise<GeneratedRoutesDiff> {
98
114
  const generated = generatedMap ?? getGlobalRouteMap();
99
115
 
100
- expandLazyIncludes(
116
+ await expandLazyIncludes(
101
117
  router,
102
118
  Object.values(generated).map((v) => patternOf(v)),
103
119
  );
@@ -145,14 +161,14 @@ export function diffGeneratedRoutes(
145
161
  * import generated from "./router.named-routes.gen";
146
162
  * import { router } from "./router";
147
163
  *
148
- * assertGeneratedRoutesMatch(router, generated);
164
+ * await assertGeneratedRoutesMatch(router, generated);
149
165
  * ```
150
166
  */
151
- export function assertGeneratedRoutesMatch(
167
+ export async function assertGeneratedRoutesMatch(
152
168
  router: RouterWithRouteMap,
153
169
  generatedMap?: Record<string, unknown>,
154
- ): void {
155
- const diff = diffGeneratedRoutes(router, generatedMap);
170
+ ): Promise<void> {
171
+ const diff = await diffGeneratedRoutes(router, generatedMap);
156
172
  if (diff.ok) return;
157
173
 
158
174
  const lines: string[] = [
@@ -46,6 +46,7 @@ import {
46
46
  generateHistoryKey,
47
47
  } from "../browser/navigation-store.js";
48
48
  import { createEventController } from "../browser/event-controller.js";
49
+ import { resolveDeferredHandleValues } from "../handles/deferred-resolution.js";
49
50
  import type { NavigationStore, NavigationBridge } from "../browser/types.js";
50
51
  import type { EventController } from "../browser/event-controller.js";
51
52
  import type { ResolvedSegment, RscMetadata } from "../browser/types.js";
@@ -481,8 +482,12 @@ export async function renderRoute(
481
482
 
482
483
  const eventController = createEventController({ initialLocation: url });
483
484
  eventController.setParams(initialMatch.params);
485
+ // Resolve-by-default: resolve any deferred (Promise) seeded handle values
486
+ // before applying, so the seeded handles reach collect/useHandle resolved —
487
+ // matching what the server/client do in a real app.
488
+ const resolvedSeed = await resolveDeferredHandleValues(handleSeed);
484
489
  eventController.setHandleData(
485
- handleSeed,
490
+ resolvedSeed,
486
491
  initialSegments.map((s) => s.id),
487
492
  );
488
493