@rangojs/router 0.0.0-experimental.137 → 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 (838) 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/composability/SKILL.md +50 -0
  5. package/skills/migrate-nextjs/SKILL.md +12 -0
  6. package/skills/rango/SKILL.md +5 -1
  7. package/skills/response-routes/SKILL.md +14 -0
  8. package/skills/router-setup/SKILL.md +12 -0
  9. package/skills/testing/reverse-and-types.md +8 -7
  10. package/src/build/generate-manifest.ts +155 -131
  11. package/src/build/index.ts +3 -1
  12. package/src/build/route-types/include-resolution.ts +347 -47
  13. package/src/build/runtime-discovery.ts +4 -1
  14. package/src/cache/cf/cf-cache-store.ts +22 -0
  15. package/src/router/find-match.ts +71 -7
  16. package/src/router/lazy-includes.ts +64 -10
  17. package/src/router/manifest.ts +43 -6
  18. package/src/router/match-api.ts +2 -2
  19. package/src/router/navigation-snapshot.ts +7 -5
  20. package/src/router/prerender-match.ts +4 -2
  21. package/src/router/preview-match.ts +3 -1
  22. package/src/router/request-classification.ts +3 -1
  23. package/src/router/route-snapshot.ts +4 -2
  24. package/src/router/router-context.ts +3 -1
  25. package/src/router/router-interfaces.ts +9 -1
  26. package/src/router.ts +9 -2
  27. package/src/rsc/manifest-init.ts +1 -1
  28. package/src/testing/dispatch.ts +3 -3
  29. package/src/testing/generated-routes.ts +27 -11
  30. package/src/urls/include-helper.ts +10 -8
  31. package/src/urls/include-provider.ts +71 -0
  32. package/src/urls/path-helper-types.ts +25 -1
  33. package/src/vite/discovery/discover-routers.ts +1 -1
  34. package/src/vite/router-discovery.ts +8 -0
  35. package/dist/__internal.d.ts +0 -83
  36. package/dist/__internal.d.ts.map +0 -1
  37. package/dist/__internal.js +0 -19
  38. package/dist/__internal.js.map +0 -1
  39. package/dist/__mocks__/version.d.ts +0 -7
  40. package/dist/__mocks__/version.d.ts.map +0 -1
  41. package/dist/__mocks__/version.js +0 -7
  42. package/dist/__mocks__/version.js.map +0 -1
  43. package/dist/__tests__/client-href.test.d.ts +0 -2
  44. package/dist/__tests__/client-href.test.d.ts.map +0 -1
  45. package/dist/__tests__/client-href.test.js +0 -74
  46. package/dist/__tests__/client-href.test.js.map +0 -1
  47. package/dist/__tests__/component-utils.test.d.ts +0 -2
  48. package/dist/__tests__/component-utils.test.d.ts.map +0 -1
  49. package/dist/__tests__/component-utils.test.js +0 -51
  50. package/dist/__tests__/component-utils.test.js.map +0 -1
  51. package/dist/__tests__/event-controller.test.d.ts +0 -2
  52. package/dist/__tests__/event-controller.test.d.ts.map +0 -1
  53. package/dist/__tests__/event-controller.test.js +0 -538
  54. package/dist/__tests__/event-controller.test.js.map +0 -1
  55. package/dist/__tests__/helpers/route-tree.d.ts +0 -118
  56. package/dist/__tests__/helpers/route-tree.d.ts.map +0 -1
  57. package/dist/__tests__/helpers/route-tree.js +0 -374
  58. package/dist/__tests__/helpers/route-tree.js.map +0 -1
  59. package/dist/__tests__/match-result.test.d.ts +0 -2
  60. package/dist/__tests__/match-result.test.d.ts.map +0 -1
  61. package/dist/__tests__/match-result.test.js +0 -154
  62. package/dist/__tests__/match-result.test.js.map +0 -1
  63. package/dist/__tests__/navigation-store.test.d.ts +0 -2
  64. package/dist/__tests__/navigation-store.test.d.ts.map +0 -1
  65. package/dist/__tests__/navigation-store.test.js +0 -440
  66. package/dist/__tests__/navigation-store.test.js.map +0 -1
  67. package/dist/__tests__/partial-update.test.d.ts +0 -2
  68. package/dist/__tests__/partial-update.test.d.ts.map +0 -1
  69. package/dist/__tests__/partial-update.test.js +0 -1009
  70. package/dist/__tests__/partial-update.test.js.map +0 -1
  71. package/dist/__tests__/reverse-types.test.d.ts +0 -8
  72. package/dist/__tests__/reverse-types.test.d.ts.map +0 -1
  73. package/dist/__tests__/reverse-types.test.js +0 -656
  74. package/dist/__tests__/reverse-types.test.js.map +0 -1
  75. package/dist/__tests__/route-definition.test.d.ts +0 -2
  76. package/dist/__tests__/route-definition.test.d.ts.map +0 -1
  77. package/dist/__tests__/route-definition.test.js +0 -55
  78. package/dist/__tests__/route-definition.test.js.map +0 -1
  79. package/dist/__tests__/router-helpers.test.d.ts +0 -2
  80. package/dist/__tests__/router-helpers.test.d.ts.map +0 -1
  81. package/dist/__tests__/router-helpers.test.js +0 -377
  82. package/dist/__tests__/router-helpers.test.js.map +0 -1
  83. package/dist/__tests__/router-integration-2.test.d.ts +0 -2
  84. package/dist/__tests__/router-integration-2.test.d.ts.map +0 -1
  85. package/dist/__tests__/router-integration-2.test.js +0 -426
  86. package/dist/__tests__/router-integration-2.test.js.map +0 -1
  87. package/dist/__tests__/router-integration.test.d.ts +0 -2
  88. package/dist/__tests__/router-integration.test.d.ts.map +0 -1
  89. package/dist/__tests__/router-integration.test.js +0 -1051
  90. package/dist/__tests__/router-integration.test.js.map +0 -1
  91. package/dist/__tests__/search-params.test.d.ts +0 -5
  92. package/dist/__tests__/search-params.test.d.ts.map +0 -1
  93. package/dist/__tests__/search-params.test.js +0 -306
  94. package/dist/__tests__/search-params.test.js.map +0 -1
  95. package/dist/__tests__/segment-system.test.d.ts +0 -2
  96. package/dist/__tests__/segment-system.test.d.ts.map +0 -1
  97. package/dist/__tests__/segment-system.test.js +0 -627
  98. package/dist/__tests__/segment-system.test.js.map +0 -1
  99. package/dist/__tests__/static-handler-types.test.d.ts +0 -8
  100. package/dist/__tests__/static-handler-types.test.d.ts.map +0 -1
  101. package/dist/__tests__/static-handler-types.test.js +0 -63
  102. package/dist/__tests__/static-handler-types.test.js.map +0 -1
  103. package/dist/__tests__/urls.test.d.ts +0 -2
  104. package/dist/__tests__/urls.test.d.ts.map +0 -1
  105. package/dist/__tests__/urls.test.js +0 -421
  106. package/dist/__tests__/urls.test.js.map +0 -1
  107. package/dist/__tests__/use-mount.test.d.ts +0 -2
  108. package/dist/__tests__/use-mount.test.d.ts.map +0 -1
  109. package/dist/__tests__/use-mount.test.js +0 -35
  110. package/dist/__tests__/use-mount.test.js.map +0 -1
  111. package/dist/bin/rango.d.ts +0 -2
  112. package/dist/bin/rango.d.ts.map +0 -1
  113. package/dist/bin/rango.js.map +0 -1
  114. package/dist/browser/event-controller.d.ts +0 -191
  115. package/dist/browser/event-controller.d.ts.map +0 -1
  116. package/dist/browser/event-controller.js +0 -559
  117. package/dist/browser/event-controller.js.map +0 -1
  118. package/dist/browser/index.d.ts +0 -2
  119. package/dist/browser/index.d.ts.map +0 -1
  120. package/dist/browser/index.js +0 -14
  121. package/dist/browser/index.js.map +0 -1
  122. package/dist/browser/link-interceptor.d.ts +0 -38
  123. package/dist/browser/link-interceptor.d.ts.map +0 -1
  124. package/dist/browser/link-interceptor.js +0 -99
  125. package/dist/browser/link-interceptor.js.map +0 -1
  126. package/dist/browser/logging.d.ts +0 -10
  127. package/dist/browser/logging.d.ts.map +0 -1
  128. package/dist/browser/logging.js +0 -29
  129. package/dist/browser/logging.js.map +0 -1
  130. package/dist/browser/lru-cache.d.ts +0 -17
  131. package/dist/browser/lru-cache.d.ts.map +0 -1
  132. package/dist/browser/lru-cache.js +0 -50
  133. package/dist/browser/lru-cache.js.map +0 -1
  134. package/dist/browser/merge-segment-loaders.d.ts +0 -39
  135. package/dist/browser/merge-segment-loaders.d.ts.map +0 -1
  136. package/dist/browser/merge-segment-loaders.js +0 -102
  137. package/dist/browser/merge-segment-loaders.js.map +0 -1
  138. package/dist/browser/navigation-bridge.d.ts +0 -102
  139. package/dist/browser/navigation-bridge.d.ts.map +0 -1
  140. package/dist/browser/navigation-bridge.js +0 -708
  141. package/dist/browser/navigation-bridge.js.map +0 -1
  142. package/dist/browser/navigation-client.d.ts +0 -25
  143. package/dist/browser/navigation-client.d.ts.map +0 -1
  144. package/dist/browser/navigation-client.js +0 -157
  145. package/dist/browser/navigation-client.js.map +0 -1
  146. package/dist/browser/navigation-store.d.ts +0 -101
  147. package/dist/browser/navigation-store.d.ts.map +0 -1
  148. package/dist/browser/navigation-store.js +0 -625
  149. package/dist/browser/navigation-store.js.map +0 -1
  150. package/dist/browser/partial-update.d.ts +0 -75
  151. package/dist/browser/partial-update.d.ts.map +0 -1
  152. package/dist/browser/partial-update.js +0 -426
  153. package/dist/browser/partial-update.js.map +0 -1
  154. package/dist/browser/react/Link.d.ts +0 -86
  155. package/dist/browser/react/Link.d.ts.map +0 -1
  156. package/dist/browser/react/Link.js +0 -128
  157. package/dist/browser/react/Link.js.map +0 -1
  158. package/dist/browser/react/NavigationProvider.d.ts +0 -63
  159. package/dist/browser/react/NavigationProvider.d.ts.map +0 -1
  160. package/dist/browser/react/NavigationProvider.js +0 -216
  161. package/dist/browser/react/NavigationProvider.js.map +0 -1
  162. package/dist/browser/react/ScrollRestoration.d.ts +0 -75
  163. package/dist/browser/react/ScrollRestoration.d.ts.map +0 -1
  164. package/dist/browser/react/ScrollRestoration.js +0 -57
  165. package/dist/browser/react/ScrollRestoration.js.map +0 -1
  166. package/dist/browser/react/context.d.ts +0 -46
  167. package/dist/browser/react/context.d.ts.map +0 -1
  168. package/dist/browser/react/context.js +0 -10
  169. package/dist/browser/react/context.js.map +0 -1
  170. package/dist/browser/react/index.d.ts +0 -11
  171. package/dist/browser/react/index.d.ts.map +0 -1
  172. package/dist/browser/react/index.js +0 -22
  173. package/dist/browser/react/index.js.map +0 -1
  174. package/dist/browser/react/location-state-shared.d.ts +0 -63
  175. package/dist/browser/react/location-state-shared.d.ts.map +0 -1
  176. package/dist/browser/react/location-state-shared.js +0 -81
  177. package/dist/browser/react/location-state-shared.js.map +0 -1
  178. package/dist/browser/react/location-state.d.ts +0 -23
  179. package/dist/browser/react/location-state.d.ts.map +0 -1
  180. package/dist/browser/react/location-state.js +0 -29
  181. package/dist/browser/react/location-state.js.map +0 -1
  182. package/dist/browser/react/mount-context.d.ts +0 -24
  183. package/dist/browser/react/mount-context.d.ts.map +0 -1
  184. package/dist/browser/react/mount-context.js +0 -24
  185. package/dist/browser/react/mount-context.js.map +0 -1
  186. package/dist/browser/react/use-action.d.ts +0 -64
  187. package/dist/browser/react/use-action.d.ts.map +0 -1
  188. package/dist/browser/react/use-action.js +0 -134
  189. package/dist/browser/react/use-action.js.map +0 -1
  190. package/dist/browser/react/use-client-cache.d.ts +0 -41
  191. package/dist/browser/react/use-client-cache.d.ts.map +0 -1
  192. package/dist/browser/react/use-client-cache.js +0 -39
  193. package/dist/browser/react/use-client-cache.js.map +0 -1
  194. package/dist/browser/react/use-handle.d.ts +0 -31
  195. package/dist/browser/react/use-handle.d.ts.map +0 -1
  196. package/dist/browser/react/use-handle.js +0 -144
  197. package/dist/browser/react/use-handle.js.map +0 -1
  198. package/dist/browser/react/use-href.d.ts +0 -33
  199. package/dist/browser/react/use-href.d.ts.map +0 -1
  200. package/dist/browser/react/use-href.js +0 -39
  201. package/dist/browser/react/use-href.js.map +0 -1
  202. package/dist/browser/react/use-link-status.d.ts +0 -37
  203. package/dist/browser/react/use-link-status.d.ts.map +0 -1
  204. package/dist/browser/react/use-link-status.js +0 -99
  205. package/dist/browser/react/use-link-status.js.map +0 -1
  206. package/dist/browser/react/use-mount.d.ts +0 -25
  207. package/dist/browser/react/use-mount.d.ts.map +0 -1
  208. package/dist/browser/react/use-mount.js +0 -30
  209. package/dist/browser/react/use-mount.js.map +0 -1
  210. package/dist/browser/react/use-navigation.d.ts +0 -27
  211. package/dist/browser/react/use-navigation.d.ts.map +0 -1
  212. package/dist/browser/react/use-navigation.js +0 -87
  213. package/dist/browser/react/use-navigation.js.map +0 -1
  214. package/dist/browser/react/use-segments.d.ts +0 -38
  215. package/dist/browser/react/use-segments.d.ts.map +0 -1
  216. package/dist/browser/react/use-segments.js +0 -130
  217. package/dist/browser/react/use-segments.js.map +0 -1
  218. package/dist/browser/request-controller.d.ts +0 -26
  219. package/dist/browser/request-controller.d.ts.map +0 -1
  220. package/dist/browser/request-controller.js +0 -147
  221. package/dist/browser/request-controller.js.map +0 -1
  222. package/dist/browser/rsc-router.d.ts +0 -129
  223. package/dist/browser/rsc-router.d.ts.map +0 -1
  224. package/dist/browser/rsc-router.js +0 -195
  225. package/dist/browser/rsc-router.js.map +0 -1
  226. package/dist/browser/scroll-restoration.d.ts +0 -93
  227. package/dist/browser/scroll-restoration.d.ts.map +0 -1
  228. package/dist/browser/scroll-restoration.js +0 -321
  229. package/dist/browser/scroll-restoration.js.map +0 -1
  230. package/dist/browser/segment-structure-assert.d.ts +0 -17
  231. package/dist/browser/segment-structure-assert.d.ts.map +0 -1
  232. package/dist/browser/segment-structure-assert.js +0 -59
  233. package/dist/browser/segment-structure-assert.js.map +0 -1
  234. package/dist/browser/server-action-bridge.d.ts +0 -26
  235. package/dist/browser/server-action-bridge.d.ts.map +0 -1
  236. package/dist/browser/server-action-bridge.js +0 -668
  237. package/dist/browser/server-action-bridge.js.map +0 -1
  238. package/dist/browser/shallow.d.ts +0 -12
  239. package/dist/browser/shallow.d.ts.map +0 -1
  240. package/dist/browser/shallow.js +0 -34
  241. package/dist/browser/shallow.js.map +0 -1
  242. package/dist/browser/types.d.ts +0 -369
  243. package/dist/browser/types.d.ts.map +0 -1
  244. package/dist/browser/types.js +0 -2
  245. package/dist/browser/types.js.map +0 -1
  246. package/dist/build/__tests__/generate-cli.test.d.ts +0 -2
  247. package/dist/build/__tests__/generate-cli.test.d.ts.map +0 -1
  248. package/dist/build/__tests__/generate-cli.test.js +0 -237
  249. package/dist/build/__tests__/generate-cli.test.js.map +0 -1
  250. package/dist/build/__tests__/generate-manifest.test.d.ts +0 -2
  251. package/dist/build/__tests__/generate-manifest.test.d.ts.map +0 -1
  252. package/dist/build/__tests__/generate-manifest.test.js +0 -119
  253. package/dist/build/__tests__/generate-manifest.test.js.map +0 -1
  254. package/dist/build/__tests__/generate-route-types.test.d.ts +0 -2
  255. package/dist/build/__tests__/generate-route-types.test.d.ts.map +0 -1
  256. package/dist/build/__tests__/generate-route-types.test.js +0 -620
  257. package/dist/build/__tests__/generate-route-types.test.js.map +0 -1
  258. package/dist/build/__tests__/per-router-manifest.test.d.ts +0 -2
  259. package/dist/build/__tests__/per-router-manifest.test.d.ts.map +0 -1
  260. package/dist/build/__tests__/per-router-manifest.test.js +0 -308
  261. package/dist/build/__tests__/per-router-manifest.test.js.map +0 -1
  262. package/dist/build/generate-manifest.d.ts +0 -81
  263. package/dist/build/generate-manifest.d.ts.map +0 -1
  264. package/dist/build/generate-manifest.js +0 -276
  265. package/dist/build/generate-manifest.js.map +0 -1
  266. package/dist/build/generate-route-types.d.ts +0 -115
  267. package/dist/build/generate-route-types.d.ts.map +0 -1
  268. package/dist/build/generate-route-types.js +0 -740
  269. package/dist/build/generate-route-types.js.map +0 -1
  270. package/dist/build/index.d.ts +0 -21
  271. package/dist/build/index.d.ts.map +0 -1
  272. package/dist/build/index.js +0 -21
  273. package/dist/build/index.js.map +0 -1
  274. package/dist/build/route-trie.d.ts +0 -71
  275. package/dist/build/route-trie.d.ts.map +0 -1
  276. package/dist/build/route-trie.js +0 -175
  277. package/dist/build/route-trie.js.map +0 -1
  278. package/dist/cache/__tests__/cache-scope.test.d.ts +0 -2
  279. package/dist/cache/__tests__/cache-scope.test.d.ts.map +0 -1
  280. package/dist/cache/__tests__/cache-scope.test.js +0 -208
  281. package/dist/cache/__tests__/cache-scope.test.js.map +0 -1
  282. package/dist/cache/__tests__/document-cache.test.d.ts +0 -2
  283. package/dist/cache/__tests__/document-cache.test.d.ts.map +0 -1
  284. package/dist/cache/__tests__/document-cache.test.js +0 -345
  285. package/dist/cache/__tests__/document-cache.test.js.map +0 -1
  286. package/dist/cache/__tests__/memory-segment-store.test.d.ts +0 -2
  287. package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +0 -1
  288. package/dist/cache/__tests__/memory-segment-store.test.js +0 -425
  289. package/dist/cache/__tests__/memory-segment-store.test.js.map +0 -1
  290. package/dist/cache/__tests__/memory-store.test.d.ts +0 -2
  291. package/dist/cache/__tests__/memory-store.test.d.ts.map +0 -1
  292. package/dist/cache/__tests__/memory-store.test.js +0 -367
  293. package/dist/cache/__tests__/memory-store.test.js.map +0 -1
  294. package/dist/cache/cache-scope.d.ts +0 -102
  295. package/dist/cache/cache-scope.d.ts.map +0 -1
  296. package/dist/cache/cache-scope.js +0 -440
  297. package/dist/cache/cache-scope.js.map +0 -1
  298. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +0 -2
  299. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +0 -1
  300. package/dist/cache/cf/__tests__/cf-cache-store.test.js +0 -330
  301. package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +0 -1
  302. package/dist/cache/cf/cf-cache-store.d.ts +0 -165
  303. package/dist/cache/cf/cf-cache-store.d.ts.map +0 -1
  304. package/dist/cache/cf/cf-cache-store.js +0 -242
  305. package/dist/cache/cf/cf-cache-store.js.map +0 -1
  306. package/dist/cache/cf/index.d.ts +0 -14
  307. package/dist/cache/cf/index.d.ts.map +0 -1
  308. package/dist/cache/cf/index.js +0 -17
  309. package/dist/cache/cf/index.js.map +0 -1
  310. package/dist/cache/document-cache.d.ts +0 -64
  311. package/dist/cache/document-cache.d.ts.map +0 -1
  312. package/dist/cache/document-cache.js +0 -228
  313. package/dist/cache/document-cache.js.map +0 -1
  314. package/dist/cache/index.d.ts +0 -19
  315. package/dist/cache/index.d.ts.map +0 -1
  316. package/dist/cache/index.js +0 -21
  317. package/dist/cache/index.js.map +0 -1
  318. package/dist/cache/memory-segment-store.d.ts +0 -110
  319. package/dist/cache/memory-segment-store.d.ts.map +0 -1
  320. package/dist/cache/memory-segment-store.js +0 -117
  321. package/dist/cache/memory-segment-store.js.map +0 -1
  322. package/dist/cache/memory-store.d.ts +0 -41
  323. package/dist/cache/memory-store.d.ts.map +0 -1
  324. package/dist/cache/memory-store.js +0 -191
  325. package/dist/cache/memory-store.js.map +0 -1
  326. package/dist/cache/types.d.ts +0 -317
  327. package/dist/cache/types.d.ts.map +0 -1
  328. package/dist/cache/types.js +0 -12
  329. package/dist/cache/types.js.map +0 -1
  330. package/dist/client.d.ts +0 -248
  331. package/dist/client.d.ts.map +0 -1
  332. package/dist/client.js +0 -367
  333. package/dist/client.js.map +0 -1
  334. package/dist/client.rsc.d.ts +0 -26
  335. package/dist/client.rsc.d.ts.map +0 -1
  336. package/dist/client.rsc.js +0 -46
  337. package/dist/client.rsc.js.map +0 -1
  338. package/dist/component-utils.d.ts +0 -36
  339. package/dist/component-utils.d.ts.map +0 -1
  340. package/dist/component-utils.js +0 -61
  341. package/dist/component-utils.js.map +0 -1
  342. package/dist/components/DefaultDocument.d.ts +0 -13
  343. package/dist/components/DefaultDocument.d.ts.map +0 -1
  344. package/dist/components/DefaultDocument.js +0 -15
  345. package/dist/components/DefaultDocument.js.map +0 -1
  346. package/dist/debug.d.ts +0 -58
  347. package/dist/debug.d.ts.map +0 -1
  348. package/dist/debug.js +0 -157
  349. package/dist/debug.js.map +0 -1
  350. package/dist/default-error-boundary.d.ts +0 -11
  351. package/dist/default-error-boundary.d.ts.map +0 -1
  352. package/dist/default-error-boundary.js +0 -45
  353. package/dist/default-error-boundary.js.map +0 -1
  354. package/dist/deps/browser.d.ts +0 -2
  355. package/dist/deps/browser.d.ts.map +0 -1
  356. package/dist/deps/browser.js +0 -3
  357. package/dist/deps/browser.js.map +0 -1
  358. package/dist/deps/html-stream-client.d.ts +0 -2
  359. package/dist/deps/html-stream-client.d.ts.map +0 -1
  360. package/dist/deps/html-stream-client.js +0 -3
  361. package/dist/deps/html-stream-client.js.map +0 -1
  362. package/dist/deps/html-stream-server.d.ts +0 -2
  363. package/dist/deps/html-stream-server.d.ts.map +0 -1
  364. package/dist/deps/html-stream-server.js +0 -3
  365. package/dist/deps/html-stream-server.js.map +0 -1
  366. package/dist/deps/rsc.d.ts +0 -2
  367. package/dist/deps/rsc.d.ts.map +0 -1
  368. package/dist/deps/rsc.js +0 -4
  369. package/dist/deps/rsc.js.map +0 -1
  370. package/dist/deps/ssr.d.ts +0 -2
  371. package/dist/deps/ssr.d.ts.map +0 -1
  372. package/dist/deps/ssr.js +0 -3
  373. package/dist/deps/ssr.js.map +0 -1
  374. package/dist/errors.d.ts +0 -174
  375. package/dist/errors.d.ts.map +0 -1
  376. package/dist/errors.js +0 -241
  377. package/dist/errors.js.map +0 -1
  378. package/dist/handle.d.ts +0 -78
  379. package/dist/handle.d.ts.map +0 -1
  380. package/dist/handle.js +0 -82
  381. package/dist/handle.js.map +0 -1
  382. package/dist/handles/MetaTags.d.ts +0 -14
  383. package/dist/handles/MetaTags.d.ts.map +0 -1
  384. package/dist/handles/MetaTags.js +0 -136
  385. package/dist/handles/MetaTags.js.map +0 -1
  386. package/dist/handles/index.d.ts +0 -6
  387. package/dist/handles/index.d.ts.map +0 -1
  388. package/dist/handles/index.js +0 -6
  389. package/dist/handles/index.js.map +0 -1
  390. package/dist/handles/meta.d.ts +0 -39
  391. package/dist/handles/meta.d.ts.map +0 -1
  392. package/dist/handles/meta.js +0 -202
  393. package/dist/handles/meta.js.map +0 -1
  394. package/dist/host/__tests__/errors.test.d.ts +0 -2
  395. package/dist/host/__tests__/errors.test.d.ts.map +0 -1
  396. package/dist/host/__tests__/errors.test.js +0 -76
  397. package/dist/host/__tests__/errors.test.js.map +0 -1
  398. package/dist/host/__tests__/pattern-comprehensive.test.d.ts +0 -2
  399. package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +0 -1
  400. package/dist/host/__tests__/pattern-comprehensive.test.js +0 -732
  401. package/dist/host/__tests__/pattern-comprehensive.test.js.map +0 -1
  402. package/dist/host/__tests__/pattern-matcher.test.d.ts +0 -2
  403. package/dist/host/__tests__/pattern-matcher.test.d.ts.map +0 -1
  404. package/dist/host/__tests__/pattern-matcher.test.js +0 -251
  405. package/dist/host/__tests__/pattern-matcher.test.js.map +0 -1
  406. package/dist/host/__tests__/router.test.d.ts +0 -2
  407. package/dist/host/__tests__/router.test.d.ts.map +0 -1
  408. package/dist/host/__tests__/router.test.js +0 -241
  409. package/dist/host/__tests__/router.test.js.map +0 -1
  410. package/dist/host/__tests__/testing.test.d.ts +0 -2
  411. package/dist/host/__tests__/testing.test.d.ts.map +0 -1
  412. package/dist/host/__tests__/testing.test.js +0 -64
  413. package/dist/host/__tests__/testing.test.js.map +0 -1
  414. package/dist/host/__tests__/utils.test.d.ts +0 -2
  415. package/dist/host/__tests__/utils.test.d.ts.map +0 -1
  416. package/dist/host/__tests__/utils.test.js +0 -29
  417. package/dist/host/__tests__/utils.test.js.map +0 -1
  418. package/dist/host/cookie-handler.d.ts +0 -34
  419. package/dist/host/cookie-handler.d.ts.map +0 -1
  420. package/dist/host/cookie-handler.js +0 -124
  421. package/dist/host/cookie-handler.js.map +0 -1
  422. package/dist/host/errors.d.ts +0 -56
  423. package/dist/host/errors.d.ts.map +0 -1
  424. package/dist/host/errors.js +0 -79
  425. package/dist/host/errors.js.map +0 -1
  426. package/dist/host/index.d.ts +0 -29
  427. package/dist/host/index.d.ts.map +0 -1
  428. package/dist/host/index.js +0 -32
  429. package/dist/host/index.js.map +0 -1
  430. package/dist/host/pattern-matcher.d.ts +0 -36
  431. package/dist/host/pattern-matcher.d.ts.map +0 -1
  432. package/dist/host/pattern-matcher.js +0 -172
  433. package/dist/host/pattern-matcher.js.map +0 -1
  434. package/dist/host/router.d.ts +0 -26
  435. package/dist/host/router.d.ts.map +0 -1
  436. package/dist/host/router.js +0 -218
  437. package/dist/host/router.js.map +0 -1
  438. package/dist/host/testing.d.ts +0 -36
  439. package/dist/host/testing.d.ts.map +0 -1
  440. package/dist/host/testing.js +0 -55
  441. package/dist/host/testing.js.map +0 -1
  442. package/dist/host/types.d.ts +0 -115
  443. package/dist/host/types.d.ts.map +0 -1
  444. package/dist/host/types.js +0 -7
  445. package/dist/host/types.js.map +0 -1
  446. package/dist/host/utils.d.ts +0 -21
  447. package/dist/host/utils.d.ts.map +0 -1
  448. package/dist/host/utils.js +0 -23
  449. package/dist/host/utils.js.map +0 -1
  450. package/dist/href-client.d.ts +0 -131
  451. package/dist/href-client.d.ts.map +0 -1
  452. package/dist/href-client.js +0 -64
  453. package/dist/href-client.js.map +0 -1
  454. package/dist/href-context.d.ts +0 -29
  455. package/dist/href-context.d.ts.map +0 -1
  456. package/dist/href-context.js +0 -21
  457. package/dist/href-context.js.map +0 -1
  458. package/dist/index.d.ts +0 -73
  459. package/dist/index.d.ts.map +0 -1
  460. package/dist/index.js +0 -91
  461. package/dist/index.js.map +0 -1
  462. package/dist/index.rsc.d.ts +0 -32
  463. package/dist/index.rsc.d.ts.map +0 -1
  464. package/dist/index.rsc.js +0 -40
  465. package/dist/index.rsc.js.map +0 -1
  466. package/dist/internal-debug.d.ts +0 -2
  467. package/dist/internal-debug.d.ts.map +0 -1
  468. package/dist/internal-debug.js +0 -5
  469. package/dist/internal-debug.js.map +0 -1
  470. package/dist/loader.d.ts +0 -14
  471. package/dist/loader.d.ts.map +0 -1
  472. package/dist/loader.js +0 -20
  473. package/dist/loader.js.map +0 -1
  474. package/dist/loader.rsc.d.ts +0 -19
  475. package/dist/loader.rsc.d.ts.map +0 -1
  476. package/dist/loader.rsc.js +0 -99
  477. package/dist/loader.rsc.js.map +0 -1
  478. package/dist/network-error-thrower.d.ts +0 -17
  479. package/dist/network-error-thrower.d.ts.map +0 -1
  480. package/dist/network-error-thrower.js +0 -14
  481. package/dist/network-error-thrower.js.map +0 -1
  482. package/dist/outlet-context.d.ts +0 -13
  483. package/dist/outlet-context.d.ts.map +0 -1
  484. package/dist/outlet-context.js +0 -3
  485. package/dist/outlet-context.js.map +0 -1
  486. package/dist/prerender/__tests__/param-hash.test.d.ts +0 -2
  487. package/dist/prerender/__tests__/param-hash.test.d.ts.map +0 -1
  488. package/dist/prerender/__tests__/param-hash.test.js +0 -148
  489. package/dist/prerender/__tests__/param-hash.test.js.map +0 -1
  490. package/dist/prerender/param-hash.d.ts +0 -16
  491. package/dist/prerender/param-hash.d.ts.map +0 -1
  492. package/dist/prerender/param-hash.js +0 -36
  493. package/dist/prerender/param-hash.js.map +0 -1
  494. package/dist/prerender/store.d.ts +0 -38
  495. package/dist/prerender/store.d.ts.map +0 -1
  496. package/dist/prerender/store.js +0 -61
  497. package/dist/prerender/store.js.map +0 -1
  498. package/dist/prerender.d.ts +0 -66
  499. package/dist/prerender.d.ts.map +0 -1
  500. package/dist/prerender.js +0 -57
  501. package/dist/prerender.js.map +0 -1
  502. package/dist/reverse.d.ts +0 -196
  503. package/dist/reverse.d.ts.map +0 -1
  504. package/dist/reverse.js +0 -78
  505. package/dist/reverse.js.map +0 -1
  506. package/dist/root-error-boundary.d.ts +0 -33
  507. package/dist/root-error-boundary.d.ts.map +0 -1
  508. package/dist/root-error-boundary.js +0 -165
  509. package/dist/root-error-boundary.js.map +0 -1
  510. package/dist/route-content-wrapper.d.ts +0 -46
  511. package/dist/route-content-wrapper.d.ts.map +0 -1
  512. package/dist/route-content-wrapper.js +0 -77
  513. package/dist/route-content-wrapper.js.map +0 -1
  514. package/dist/route-definition.d.ts +0 -421
  515. package/dist/route-definition.d.ts.map +0 -1
  516. package/dist/route-definition.js +0 -868
  517. package/dist/route-definition.js.map +0 -1
  518. package/dist/route-map-builder.d.ts +0 -155
  519. package/dist/route-map-builder.d.ts.map +0 -1
  520. package/dist/route-map-builder.js +0 -237
  521. package/dist/route-map-builder.js.map +0 -1
  522. package/dist/route-types.d.ts +0 -165
  523. package/dist/route-types.d.ts.map +0 -1
  524. package/dist/route-types.js +0 -7
  525. package/dist/route-types.js.map +0 -1
  526. package/dist/router/__tests__/handler-context.test.d.ts +0 -2
  527. package/dist/router/__tests__/handler-context.test.d.ts.map +0 -1
  528. package/dist/router/__tests__/handler-context.test.js +0 -65
  529. package/dist/router/__tests__/handler-context.test.js.map +0 -1
  530. package/dist/router/__tests__/loader-cycle-detection.test.d.ts +0 -2
  531. package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +0 -1
  532. package/dist/router/__tests__/loader-cycle-detection.test.js +0 -221
  533. package/dist/router/__tests__/loader-cycle-detection.test.js.map +0 -1
  534. package/dist/router/__tests__/match-context.test.d.ts +0 -2
  535. package/dist/router/__tests__/match-context.test.d.ts.map +0 -1
  536. package/dist/router/__tests__/match-context.test.js +0 -92
  537. package/dist/router/__tests__/match-context.test.js.map +0 -1
  538. package/dist/router/__tests__/match-pipelines.test.d.ts +0 -2
  539. package/dist/router/__tests__/match-pipelines.test.d.ts.map +0 -1
  540. package/dist/router/__tests__/match-pipelines.test.js +0 -417
  541. package/dist/router/__tests__/match-pipelines.test.js.map +0 -1
  542. package/dist/router/__tests__/match-result.test.d.ts +0 -2
  543. package/dist/router/__tests__/match-result.test.d.ts.map +0 -1
  544. package/dist/router/__tests__/match-result.test.js +0 -457
  545. package/dist/router/__tests__/match-result.test.js.map +0 -1
  546. package/dist/router/__tests__/on-error.test.d.ts +0 -2
  547. package/dist/router/__tests__/on-error.test.d.ts.map +0 -1
  548. package/dist/router/__tests__/on-error.test.js +0 -678
  549. package/dist/router/__tests__/on-error.test.js.map +0 -1
  550. package/dist/router/__tests__/pattern-matching.test.d.ts +0 -2
  551. package/dist/router/__tests__/pattern-matching.test.d.ts.map +0 -1
  552. package/dist/router/__tests__/pattern-matching.test.js +0 -629
  553. package/dist/router/__tests__/pattern-matching.test.js.map +0 -1
  554. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +0 -2
  555. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +0 -1
  556. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +0 -155
  557. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +0 -1
  558. package/dist/router/error-handling.d.ts +0 -77
  559. package/dist/router/error-handling.d.ts.map +0 -1
  560. package/dist/router/error-handling.js +0 -202
  561. package/dist/router/error-handling.js.map +0 -1
  562. package/dist/router/handler-context.d.ts +0 -20
  563. package/dist/router/handler-context.d.ts.map +0 -1
  564. package/dist/router/handler-context.js +0 -198
  565. package/dist/router/handler-context.js.map +0 -1
  566. package/dist/router/intercept-resolution.d.ts +0 -66
  567. package/dist/router/intercept-resolution.d.ts.map +0 -1
  568. package/dist/router/intercept-resolution.js +0 -246
  569. package/dist/router/intercept-resolution.js.map +0 -1
  570. package/dist/router/loader-resolution.d.ts +0 -64
  571. package/dist/router/loader-resolution.d.ts.map +0 -1
  572. package/dist/router/loader-resolution.js +0 -284
  573. package/dist/router/loader-resolution.js.map +0 -1
  574. package/dist/router/logging.d.ts +0 -15
  575. package/dist/router/logging.d.ts.map +0 -1
  576. package/dist/router/logging.js +0 -99
  577. package/dist/router/logging.js.map +0 -1
  578. package/dist/router/manifest.d.ts +0 -22
  579. package/dist/router/manifest.d.ts.map +0 -1
  580. package/dist/router/manifest.js +0 -181
  581. package/dist/router/manifest.js.map +0 -1
  582. package/dist/router/match-api.d.ts +0 -35
  583. package/dist/router/match-api.d.ts.map +0 -1
  584. package/dist/router/match-api.js +0 -406
  585. package/dist/router/match-api.js.map +0 -1
  586. package/dist/router/match-context.d.ts +0 -206
  587. package/dist/router/match-context.d.ts.map +0 -1
  588. package/dist/router/match-context.js +0 -17
  589. package/dist/router/match-context.js.map +0 -1
  590. package/dist/router/match-middleware/background-revalidation.d.ts +0 -127
  591. package/dist/router/match-middleware/background-revalidation.d.ts.map +0 -1
  592. package/dist/router/match-middleware/background-revalidation.js +0 -75
  593. package/dist/router/match-middleware/background-revalidation.js.map +0 -1
  594. package/dist/router/match-middleware/cache-lookup.d.ts +0 -112
  595. package/dist/router/match-middleware/cache-lookup.d.ts.map +0 -1
  596. package/dist/router/match-middleware/cache-lookup.js +0 -257
  597. package/dist/router/match-middleware/cache-lookup.js.map +0 -1
  598. package/dist/router/match-middleware/cache-store.d.ts +0 -113
  599. package/dist/router/match-middleware/cache-store.d.ts.map +0 -1
  600. package/dist/router/match-middleware/cache-store.js +0 -108
  601. package/dist/router/match-middleware/cache-store.js.map +0 -1
  602. package/dist/router/match-middleware/index.d.ts +0 -81
  603. package/dist/router/match-middleware/index.d.ts.map +0 -1
  604. package/dist/router/match-middleware/index.js +0 -80
  605. package/dist/router/match-middleware/index.js.map +0 -1
  606. package/dist/router/match-middleware/intercept-resolution.d.ts +0 -117
  607. package/dist/router/match-middleware/intercept-resolution.d.ts.map +0 -1
  608. package/dist/router/match-middleware/intercept-resolution.js +0 -134
  609. package/dist/router/match-middleware/intercept-resolution.js.map +0 -1
  610. package/dist/router/match-middleware/segment-resolution.d.ts +0 -99
  611. package/dist/router/match-middleware/segment-resolution.d.ts.map +0 -1
  612. package/dist/router/match-middleware/segment-resolution.js +0 -53
  613. package/dist/router/match-middleware/segment-resolution.js.map +0 -1
  614. package/dist/router/match-pipelines.d.ts +0 -147
  615. package/dist/router/match-pipelines.d.ts.map +0 -1
  616. package/dist/router/match-pipelines.js +0 -82
  617. package/dist/router/match-pipelines.js.map +0 -1
  618. package/dist/router/match-result.d.ts +0 -126
  619. package/dist/router/match-result.d.ts.map +0 -1
  620. package/dist/router/match-result.js +0 -93
  621. package/dist/router/match-result.js.map +0 -1
  622. package/dist/router/metrics.d.ts +0 -20
  623. package/dist/router/metrics.d.ts.map +0 -1
  624. package/dist/router/metrics.js +0 -47
  625. package/dist/router/metrics.js.map +0 -1
  626. package/dist/router/middleware.d.ts +0 -249
  627. package/dist/router/middleware.d.ts.map +0 -1
  628. package/dist/router/middleware.js +0 -434
  629. package/dist/router/middleware.js.map +0 -1
  630. package/dist/router/middleware.test.d.ts +0 -2
  631. package/dist/router/middleware.test.d.ts.map +0 -1
  632. package/dist/router/middleware.test.js +0 -816
  633. package/dist/router/middleware.test.js.map +0 -1
  634. package/dist/router/pattern-matching.d.ts +0 -149
  635. package/dist/router/pattern-matching.d.ts.map +0 -1
  636. package/dist/router/pattern-matching.js +0 -349
  637. package/dist/router/pattern-matching.js.map +0 -1
  638. package/dist/router/revalidation.d.ts +0 -44
  639. package/dist/router/revalidation.d.ts.map +0 -1
  640. package/dist/router/revalidation.js +0 -147
  641. package/dist/router/revalidation.js.map +0 -1
  642. package/dist/router/router-context.d.ts +0 -135
  643. package/dist/router/router-context.d.ts.map +0 -1
  644. package/dist/router/router-context.js +0 -36
  645. package/dist/router/router-context.js.map +0 -1
  646. package/dist/router/segment-resolution.d.ts +0 -127
  647. package/dist/router/segment-resolution.d.ts.map +0 -1
  648. package/dist/router/segment-resolution.js +0 -919
  649. package/dist/router/segment-resolution.js.map +0 -1
  650. package/dist/router/trie-matching.d.ts +0 -40
  651. package/dist/router/trie-matching.d.ts.map +0 -1
  652. package/dist/router/trie-matching.js +0 -127
  653. package/dist/router/trie-matching.js.map +0 -1
  654. package/dist/router/types.d.ts +0 -136
  655. package/dist/router/types.d.ts.map +0 -1
  656. package/dist/router/types.js +0 -7
  657. package/dist/router/types.js.map +0 -1
  658. package/dist/router.d.ts +0 -753
  659. package/dist/router.d.ts.map +0 -1
  660. package/dist/router.gen.d.ts +0 -6
  661. package/dist/router.gen.d.ts.map +0 -1
  662. package/dist/router.gen.js +0 -6
  663. package/dist/router.gen.js.map +0 -1
  664. package/dist/router.js +0 -1304
  665. package/dist/router.js.map +0 -1
  666. package/dist/rsc/__tests__/helpers.test.d.ts +0 -2
  667. package/dist/rsc/__tests__/helpers.test.d.ts.map +0 -1
  668. package/dist/rsc/__tests__/helpers.test.js +0 -140
  669. package/dist/rsc/__tests__/helpers.test.js.map +0 -1
  670. package/dist/rsc/handler.d.ts +0 -45
  671. package/dist/rsc/handler.d.ts.map +0 -1
  672. package/dist/rsc/handler.js +0 -1172
  673. package/dist/rsc/handler.js.map +0 -1
  674. package/dist/rsc/helpers.d.ts +0 -16
  675. package/dist/rsc/helpers.d.ts.map +0 -1
  676. package/dist/rsc/helpers.js +0 -55
  677. package/dist/rsc/helpers.js.map +0 -1
  678. package/dist/rsc/index.d.ts +0 -22
  679. package/dist/rsc/index.d.ts.map +0 -1
  680. package/dist/rsc/index.js +0 -23
  681. package/dist/rsc/index.js.map +0 -1
  682. package/dist/rsc/nonce.d.ts +0 -9
  683. package/dist/rsc/nonce.d.ts.map +0 -1
  684. package/dist/rsc/nonce.js +0 -18
  685. package/dist/rsc/nonce.js.map +0 -1
  686. package/dist/rsc/types.d.ts +0 -206
  687. package/dist/rsc/types.d.ts.map +0 -1
  688. package/dist/rsc/types.js +0 -8
  689. package/dist/rsc/types.js.map +0 -1
  690. package/dist/search-params.d.ts +0 -103
  691. package/dist/search-params.d.ts.map +0 -1
  692. package/dist/search-params.js +0 -74
  693. package/dist/search-params.js.map +0 -1
  694. package/dist/segment-system.d.ts +0 -75
  695. package/dist/segment-system.d.ts.map +0 -1
  696. package/dist/segment-system.js +0 -336
  697. package/dist/segment-system.js.map +0 -1
  698. package/dist/server/context.d.ts +0 -245
  699. package/dist/server/context.d.ts.map +0 -1
  700. package/dist/server/context.js +0 -197
  701. package/dist/server/context.js.map +0 -1
  702. package/dist/server/fetchable-loader-store.d.ts +0 -18
  703. package/dist/server/fetchable-loader-store.d.ts.map +0 -1
  704. package/dist/server/fetchable-loader-store.js +0 -18
  705. package/dist/server/fetchable-loader-store.js.map +0 -1
  706. package/dist/server/handle-store.d.ts +0 -85
  707. package/dist/server/handle-store.d.ts.map +0 -1
  708. package/dist/server/handle-store.js +0 -142
  709. package/dist/server/handle-store.js.map +0 -1
  710. package/dist/server/loader-registry.d.ts +0 -55
  711. package/dist/server/loader-registry.d.ts.map +0 -1
  712. package/dist/server/loader-registry.js +0 -132
  713. package/dist/server/loader-registry.js.map +0 -1
  714. package/dist/server/request-context.d.ts +0 -226
  715. package/dist/server/request-context.d.ts.map +0 -1
  716. package/dist/server/request-context.js +0 -290
  717. package/dist/server/request-context.js.map +0 -1
  718. package/dist/server/root-layout.d.ts +0 -4
  719. package/dist/server/root-layout.d.ts.map +0 -1
  720. package/dist/server/root-layout.js +0 -5
  721. package/dist/server/root-layout.js.map +0 -1
  722. package/dist/server.d.ts +0 -15
  723. package/dist/server.d.ts.map +0 -1
  724. package/dist/server.js +0 -20
  725. package/dist/server.js.map +0 -1
  726. package/dist/ssr/__tests__/ssr-handler.test.d.ts +0 -2
  727. package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +0 -1
  728. package/dist/ssr/__tests__/ssr-handler.test.js +0 -132
  729. package/dist/ssr/__tests__/ssr-handler.test.js.map +0 -1
  730. package/dist/ssr/index.d.ts +0 -98
  731. package/dist/ssr/index.d.ts.map +0 -1
  732. package/dist/ssr/index.js +0 -158
  733. package/dist/ssr/index.js.map +0 -1
  734. package/dist/static-handler.d.ts +0 -50
  735. package/dist/static-handler.d.ts.map +0 -1
  736. package/dist/static-handler.gen.d.ts +0 -5
  737. package/dist/static-handler.gen.d.ts.map +0 -1
  738. package/dist/static-handler.gen.js +0 -5
  739. package/dist/static-handler.gen.js.map +0 -1
  740. package/dist/static-handler.js +0 -29
  741. package/dist/static-handler.js.map +0 -1
  742. package/dist/theme/ThemeProvider.d.ts +0 -20
  743. package/dist/theme/ThemeProvider.d.ts.map +0 -1
  744. package/dist/theme/ThemeProvider.js +0 -240
  745. package/dist/theme/ThemeProvider.js.map +0 -1
  746. package/dist/theme/ThemeScript.d.ts +0 -48
  747. package/dist/theme/ThemeScript.d.ts.map +0 -1
  748. package/dist/theme/ThemeScript.js +0 -13
  749. package/dist/theme/ThemeScript.js.map +0 -1
  750. package/dist/theme/__tests__/theme.test.d.ts +0 -2
  751. package/dist/theme/__tests__/theme.test.d.ts.map +0 -1
  752. package/dist/theme/__tests__/theme.test.js +0 -103
  753. package/dist/theme/__tests__/theme.test.js.map +0 -1
  754. package/dist/theme/constants.d.ts +0 -29
  755. package/dist/theme/constants.d.ts.map +0 -1
  756. package/dist/theme/constants.js +0 -48
  757. package/dist/theme/constants.js.map +0 -1
  758. package/dist/theme/index.d.ts +0 -31
  759. package/dist/theme/index.d.ts.map +0 -1
  760. package/dist/theme/index.js +0 -36
  761. package/dist/theme/index.js.map +0 -1
  762. package/dist/theme/theme-context.d.ts +0 -40
  763. package/dist/theme/theme-context.d.ts.map +0 -1
  764. package/dist/theme/theme-context.js +0 -60
  765. package/dist/theme/theme-context.js.map +0 -1
  766. package/dist/theme/theme-script.d.ts +0 -27
  767. package/dist/theme/theme-script.d.ts.map +0 -1
  768. package/dist/theme/theme-script.js +0 -147
  769. package/dist/theme/theme-script.js.map +0 -1
  770. package/dist/theme/types.d.ts +0 -163
  771. package/dist/theme/types.d.ts.map +0 -1
  772. package/dist/theme/types.js +0 -11
  773. package/dist/theme/types.js.map +0 -1
  774. package/dist/theme/use-theme.d.ts +0 -12
  775. package/dist/theme/use-theme.d.ts.map +0 -1
  776. package/dist/theme/use-theme.js +0 -40
  777. package/dist/theme/use-theme.js.map +0 -1
  778. package/dist/types.d.ts +0 -1479
  779. package/dist/types.d.ts.map +0 -1
  780. package/dist/types.js +0 -10
  781. package/dist/types.js.map +0 -1
  782. package/dist/urls.d.ts +0 -441
  783. package/dist/urls.d.ts.map +0 -1
  784. package/dist/urls.gen.d.ts +0 -8
  785. package/dist/urls.gen.d.ts.map +0 -1
  786. package/dist/urls.gen.js +0 -8
  787. package/dist/urls.gen.js.map +0 -1
  788. package/dist/urls.js +0 -443
  789. package/dist/urls.js.map +0 -1
  790. package/dist/use-loader.d.ts +0 -127
  791. package/dist/use-loader.d.ts.map +0 -1
  792. package/dist/use-loader.js +0 -237
  793. package/dist/use-loader.js.map +0 -1
  794. package/dist/vite/__tests__/ast-handler-extract.test.d.ts +0 -2
  795. package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +0 -1
  796. package/dist/vite/__tests__/ast-handler-extract.test.js +0 -294
  797. package/dist/vite/__tests__/ast-handler-extract.test.js.map +0 -1
  798. package/dist/vite/__tests__/expose-id-utils.test.d.ts +0 -2
  799. package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +0 -1
  800. package/dist/vite/__tests__/expose-id-utils.test.js +0 -224
  801. package/dist/vite/__tests__/expose-id-utils.test.js.map +0 -1
  802. package/dist/vite/__tests__/expose-internal-ids.test.d.ts +0 -2
  803. package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +0 -1
  804. package/dist/vite/__tests__/expose-internal-ids.test.js +0 -647
  805. package/dist/vite/__tests__/expose-internal-ids.test.js.map +0 -1
  806. package/dist/vite/__tests__/expose-router-id.test.d.ts +0 -2
  807. package/dist/vite/__tests__/expose-router-id.test.d.ts.map +0 -1
  808. package/dist/vite/__tests__/expose-router-id.test.js +0 -39
  809. package/dist/vite/__tests__/expose-router-id.test.js.map +0 -1
  810. package/dist/vite/ast-handler-extract.d.ts +0 -49
  811. package/dist/vite/ast-handler-extract.d.ts.map +0 -1
  812. package/dist/vite/ast-handler-extract.js +0 -249
  813. package/dist/vite/ast-handler-extract.js.map +0 -1
  814. package/dist/vite/expose-action-id.d.ts +0 -19
  815. package/dist/vite/expose-action-id.d.ts.map +0 -1
  816. package/dist/vite/expose-action-id.js +0 -250
  817. package/dist/vite/expose-action-id.js.map +0 -1
  818. package/dist/vite/expose-id-utils.d.ts +0 -69
  819. package/dist/vite/expose-id-utils.d.ts.map +0 -1
  820. package/dist/vite/expose-id-utils.js +0 -289
  821. package/dist/vite/expose-id-utils.js.map +0 -1
  822. package/dist/vite/expose-internal-ids.d.ts +0 -22
  823. package/dist/vite/expose-internal-ids.d.ts.map +0 -1
  824. package/dist/vite/expose-internal-ids.js +0 -886
  825. package/dist/vite/expose-internal-ids.js.map +0 -1
  826. package/dist/vite/index.d.ts +0 -149
  827. package/dist/vite/index.d.ts.map +0 -1
  828. package/dist/vite/index.js.bak +0 -5448
  829. package/dist/vite/index.js.map +0 -1
  830. package/dist/vite/index.named-routes.gen.ts +0 -103
  831. package/dist/vite/package-resolution.d.ts +0 -43
  832. package/dist/vite/package-resolution.d.ts.map +0 -1
  833. package/dist/vite/package-resolution.js +0 -112
  834. package/dist/vite/package-resolution.js.map +0 -1
  835. package/dist/vite/virtual-entries.d.ts +0 -25
  836. package/dist/vite/virtual-entries.d.ts.map +0 -1
  837. package/dist/vite/virtual-entries.js +0 -110
  838. package/dist/vite/virtual-entries.js.map +0 -1
@@ -10,7 +10,9 @@
10
10
  * import { generateManifest } from "@rangojs/router/build";
11
11
  * import { urlpatterns } from "./urls";
12
12
  *
13
- * const manifest = generateManifest(urlpatterns);
13
+ * // Async: generateManifest awaits any async include() providers
14
+ * // (`() => import("./routes")`) so the split groups appear in the manifest.
15
+ * const manifest = await generateManifest(urlpatterns);
14
16
  * console.log(manifest.routeManifest); // { home: "/", about: "/about", ... }
15
17
  * ```
16
18
  */
@@ -97,6 +97,147 @@ function extractNamePrefixFromInclude(node: ts.CallExpression): string | null {
97
97
  return null;
98
98
  }
99
99
 
100
+ /**
101
+ * True when the thunk transforms its dynamic import via a `.then(cb)` whose
102
+ * callback selects a NAMED export other than `default` (e.g.
103
+ * `import("./x").then((m) => m.routes)`). The static resolver walks the module's
104
+ * `export default`, so such a selector would resolve the WRONG export — the
105
+ * caller must treat it as unresolvable instead of silently mis-resolving. Returns
106
+ * false for the supported shapes (no `.then`, `.then((m) => m)`,
107
+ * `.then((m) => m.default)`) and for any shape it cannot positively identify as a
108
+ * non-default member selection (those keep the existing resolve-via-default path).
109
+ */
110
+ function thenSelectsNonDefaultMember(expr: ts.Expression): boolean {
111
+ const findThenCall = (e: ts.Expression): ts.CallExpression | null => {
112
+ if (
113
+ ts.isCallExpression(e) &&
114
+ ts.isPropertyAccessExpression(e.expression) &&
115
+ e.expression.name.text === "then"
116
+ ) {
117
+ return e;
118
+ }
119
+ if (ts.isCallExpression(e) && ts.isPropertyAccessExpression(e.expression)) {
120
+ return findThenCall(e.expression.expression);
121
+ }
122
+ if (ts.isPropertyAccessExpression(e)) return findThenCall(e.expression);
123
+ if (ts.isParenthesizedExpression(e)) return findThenCall(e.expression);
124
+ if (ts.isAwaitExpression(e)) return findThenCall(e.expression);
125
+ return null;
126
+ };
127
+
128
+ const thenCall = findThenCall(expr);
129
+ if (!thenCall || thenCall.arguments.length === 0) return false;
130
+ const cb = thenCall.arguments[0];
131
+ if (!ts.isArrowFunction(cb) && !ts.isFunctionExpression(cb)) return false;
132
+
133
+ let ret: ts.Expression | undefined;
134
+ if (ts.isBlock(cb.body)) {
135
+ for (const stmt of cb.body.statements) {
136
+ if (ts.isReturnStatement(stmt) && stmt.expression) {
137
+ ret = stmt.expression;
138
+ break;
139
+ }
140
+ }
141
+ } else {
142
+ ret = cb.body;
143
+ }
144
+ if (!ret) return false;
145
+
146
+ if (ts.isPropertyAccessExpression(ret)) {
147
+ return ret.name.text !== "default";
148
+ }
149
+ return false;
150
+ }
151
+
152
+ /**
153
+ * Extract the module specifier from an async include thunk
154
+ * (`() => import("./mod")`). Handles arrow and function-expression thunks,
155
+ * concise or block bodies, and `import("./mod").then(...)` chains. Returns the
156
+ * specifier string, or null when the second arg is not a dynamic-import thunk
157
+ * (so the caller can fall through to identifier / factory-call / dynamic-expr
158
+ * classification).
159
+ */
160
+ function extractDynamicImportSpecifier(node: ts.Expression): string | null {
161
+ let body: ts.ConciseBody | undefined;
162
+ if (ts.isArrowFunction(node) || ts.isFunctionExpression(node)) {
163
+ body = node.body;
164
+ }
165
+ if (!body) return null;
166
+
167
+ // Concise body is the expression itself; block body: first `return <expr>`.
168
+ let expr: ts.Expression | undefined;
169
+ if (ts.isBlock(body)) {
170
+ for (const stmt of body.statements) {
171
+ if (ts.isReturnStatement(stmt) && stmt.expression) {
172
+ expr = stmt.expression;
173
+ break;
174
+ }
175
+ }
176
+ } else {
177
+ expr = body;
178
+ }
179
+ if (!expr) return null;
180
+
181
+ // Descend `import("./mod").then(...)` / parenthesized / await wrappers down to
182
+ // the `import(...)` call itself.
183
+ const findImportCall = (e: ts.Expression): ts.CallExpression | null => {
184
+ if (
185
+ ts.isCallExpression(e) &&
186
+ e.expression.kind === ts.SyntaxKind.ImportKeyword
187
+ ) {
188
+ return e;
189
+ }
190
+ if (ts.isCallExpression(e) && ts.isPropertyAccessExpression(e.expression)) {
191
+ return findImportCall(e.expression.expression);
192
+ }
193
+ if (ts.isPropertyAccessExpression(e)) return findImportCall(e.expression);
194
+ if (ts.isParenthesizedExpression(e)) return findImportCall(e.expression);
195
+ if (ts.isAwaitExpression(e)) return findImportCall(e.expression);
196
+ return null;
197
+ };
198
+
199
+ const importCall = findImportCall(expr);
200
+ if (!importCall || importCall.arguments.length === 0) return null;
201
+ // A `.then()` selecting a non-default named export can't be statically
202
+ // resolved to `export default`; return null so the caller emits a diagnostic
203
+ // rather than silently generating types for the wrong export.
204
+ if (thenSelectsNonDefaultMember(expr)) return null;
205
+ return getStringValue(importCall.arguments[0]);
206
+ }
207
+
208
+ /**
209
+ * Resolve a module's `export default` to either a same-file `urls()` variable
210
+ * name (`export default shopPatterns`) or the inline call block
211
+ * (`export default urls(...)`). Used to walk async include modules
212
+ * (`() => import("./mod")`), whose convention is `export default urls(...)`.
213
+ */
214
+ function resolveDefaultExportTarget(
215
+ code: string,
216
+ sourceFile: ts.SourceFile,
217
+ ): { variableName?: string; inlineBlock?: string } | null {
218
+ let result: { variableName?: string; inlineBlock?: string } | null = null;
219
+
220
+ function visit(node: ts.Node) {
221
+ if (result) return;
222
+ if (ts.isExportAssignment(node) && !node.isExportEquals) {
223
+ const expr = node.expression;
224
+ if (ts.isIdentifier(expr)) {
225
+ result = { variableName: expr.text };
226
+ } else if (ts.isCallExpression(expr)) {
227
+ const callee = expr.expression;
228
+ if (ts.isIdentifier(callee) && callee.text === "urls") {
229
+ result = { inlineBlock: expr.getText(sourceFile) };
230
+ }
231
+ }
232
+ return;
233
+ }
234
+ ts.forEachChild(node, visit);
235
+ }
236
+
237
+ visit(sourceFile);
238
+ return result;
239
+ }
240
+
100
241
  /**
101
242
  * Extract include() calls with diagnostics for unresolvable ones.
102
243
  * Returns both resolved includes (identifier second args) and unresolvable
@@ -108,7 +249,12 @@ export function extractIncludesWithDiagnostics(
108
249
  ): {
109
250
  resolved: Array<{
110
251
  pathPrefix: string;
111
- variableName: string;
252
+ // Exactly one of variableName / moduleSpecifier is set. variableName is the
253
+ // classic `include("/api", apiUrls)` identifier form; moduleSpecifier is the
254
+ // async `include("/api", () => import("./api"))` form, carrying the imported
255
+ // module path so resolution can walk its `export default`.
256
+ variableName?: string;
257
+ moduleSpecifier?: string;
112
258
  namePrefix: string | null;
113
259
  }>;
114
260
  unresolvable: Array<{
@@ -130,7 +276,8 @@ export function extractIncludesWithDiagnostics(
130
276
  );
131
277
  const resolved: Array<{
132
278
  pathPrefix: string;
133
- variableName: string;
279
+ variableName?: string;
280
+ moduleSpecifier?: string;
134
281
  namePrefix: string | null;
135
282
  }> = [];
136
283
  const unresolvable: Array<{
@@ -158,12 +305,22 @@ export function extractIncludesWithDiagnostics(
158
305
  const secondArg = node.arguments[1];
159
306
  const namePrefix = extractNamePrefixFromInclude(node);
160
307
 
308
+ const dynamicImportSpec = extractDynamicImportSpecifier(secondArg);
309
+
161
310
  if (ts.isIdentifier(secondArg)) {
162
311
  resolved.push({
163
312
  pathPrefix,
164
313
  variableName: secondArg.text,
165
314
  namePrefix,
166
315
  });
316
+ } else if (dynamicImportSpec !== null) {
317
+ // Async include: `include("/api", () => import("./api"))`. Resolvable
318
+ // statically by walking the imported module's `export default`.
319
+ resolved.push({
320
+ pathPrefix,
321
+ moduleSpecifier: dynamicImportSpec,
322
+ namePrefix,
323
+ });
167
324
  } else if (ts.isCallExpression(secondArg)) {
168
325
  const callText = secondArg.expression.getText(sourceFile);
169
326
  unresolvable.push({
@@ -348,65 +505,120 @@ function buildRouteMapFromBlock(
348
505
  }
349
506
  }
350
507
 
351
- for (const { pathPrefix, variableName, namePrefix } of includes) {
508
+ for (const inc of includes) {
509
+ const { pathPrefix, namePrefix } = inc;
352
510
  let childResult: {
353
511
  routes: Record<string, string>;
354
512
  searchSchemas: Record<string, Record<string, string>>;
355
513
  };
356
514
 
357
- // Try import resolution first
358
- const imported = resolveImportedVariable(fullSource, variableName);
359
- if (imported) {
360
- const targetFile = resolveImportPath(imported.specifier, filePath);
515
+ if (inc.moduleSpecifier) {
516
+ // Async include `() => import("./mod")`: resolve the imported module's
517
+ // `export default` (convention: `export default urls(...)`), then recurse
518
+ // into it exactly like an identifier include. Nested include()s inside the
519
+ // async module — eager or async — resolve through the same recursion.
520
+ const targetFile = resolveImportPath(inc.moduleSpecifier, filePath);
361
521
  if (!targetFile) {
362
- if (diagnosticsOut) {
363
- diagnosticsOut.push({
364
- pathPrefix,
365
- namePrefix,
366
- reason: "file-not-found",
367
- sourceFile: filePath,
368
- detail: `import "${imported.specifier}" resolved to no file`,
369
- });
370
- }
522
+ diagnosticsOut?.push({
523
+ pathPrefix,
524
+ namePrefix,
525
+ reason: "file-not-found",
526
+ sourceFile: filePath,
527
+ detail: `import("${inc.moduleSpecifier}") resolved to no file`,
528
+ });
371
529
  continue;
372
530
  }
373
- childResult = buildCombinedRouteMapWithSearch(
374
- targetFile,
375
- imported.exportedName,
376
- visited,
377
- diagnosticsOut,
378
- undefined,
379
- memo,
380
- );
381
- } else {
382
- // Check if variable exists as a same-file urls() definition. Share the
383
- // full-source SourceFile parse via the memo (block === fullSource hits the
384
- // same cache entry already used above).
385
- const sameFileBlock = extractUrlsBlockForVariable(
386
- fullSource,
387
- variableName,
388
- parseBlock(memo, fullSource),
531
+ let targetSource: string;
532
+ try {
533
+ targetSource = readSourceMemoized(memo, resolve(targetFile));
534
+ } catch (err) {
535
+ // Every other failure path in this function emits a diagnostic; a bare
536
+ // `continue` here would drop the group from generated types with no
537
+ // signal at all. Emit one like the siblings do.
538
+ diagnosticsOut?.push({
539
+ pathPrefix,
540
+ namePrefix,
541
+ reason: "file-not-found",
542
+ sourceFile: filePath,
543
+ detail: `import("${inc.moduleSpecifier}") resolved to "${targetFile}" but reading it failed: ${(err as Error)?.message ?? String(err)}`,
544
+ });
545
+ continue;
546
+ }
547
+ const def = resolveDefaultExportTarget(
548
+ targetSource,
549
+ parseBlock(memo, targetSource),
389
550
  );
390
- if (!sameFileBlock) {
391
- if (diagnosticsOut) {
392
- diagnosticsOut.push({
393
- pathPrefix,
394
- namePrefix,
395
- reason: "unresolvable-import",
396
- sourceFile: filePath,
397
- detail: `variable "${variableName}" not found in imports or same-file scope`,
398
- });
399
- }
551
+ if (!def) {
552
+ diagnosticsOut?.push({
553
+ pathPrefix,
554
+ namePrefix,
555
+ reason: "unresolvable-import",
556
+ sourceFile: filePath,
557
+ detail: `import("${inc.moduleSpecifier}") has no resolvable \`export default urls(...)\``,
558
+ });
400
559
  continue;
401
560
  }
402
- childResult = buildCombinedRouteMapWithSearch(
403
- filePath,
561
+ if (def.inlineBlock) {
562
+ // `export default urls(...)` — recurse into the inline call block.
563
+ childResult = buildCombinedRouteMapWithSearch(
564
+ targetFile,
565
+ undefined,
566
+ visited,
567
+ diagnosticsOut,
568
+ def.inlineBlock,
569
+ memo,
570
+ );
571
+ } else {
572
+ // `export default <name>`. That name may be a same-file
573
+ // `const name = urls(...)` OR itself re-exported from an import
574
+ // (`import { name } from "./x"; export default name`). The shared helper
575
+ // resolves the import chain first, then falls back to same-file
576
+ // extraction — without this a re-exported default silently yields empty
577
+ // routes. Resolution scope is the imported module (targetFile); the
578
+ // diagnostic is still attributed to the file with the async include.
579
+ const variableName = def.variableName!;
580
+ const resolved = resolveIncludedVariable({
581
+ variableName,
582
+ resolutionFile: targetFile,
583
+ resolutionSource: targetSource,
584
+ reportFile: filePath,
585
+ memo,
586
+ visited,
587
+ diagnosticsOut,
588
+ pathPrefix,
589
+ namePrefix,
590
+ fileNotFoundDetail: (specifier) =>
591
+ `import("${inc.moduleSpecifier}") default re-exports "${variableName}" from "${specifier}", which resolved to no file`,
592
+ notFoundDetail: () =>
593
+ `import("${inc.moduleSpecifier}") default "${variableName}" not found in its imports or same-file scope`,
594
+ });
595
+ if (!resolved) continue;
596
+ childResult = resolved;
597
+ }
598
+ } else if (inc.variableName) {
599
+ // Identifier include `include(prefix, patterns)`: resolve `patterns`
600
+ // (imported or same-file) through the same shared helper as the async
601
+ // `export default <name>` form above.
602
+ const variableName = inc.variableName;
603
+ const resolved = resolveIncludedVariable({
404
604
  variableName,
605
+ resolutionFile: filePath,
606
+ resolutionSource: fullSource,
607
+ reportFile: filePath,
608
+ memo,
405
609
  visited,
406
610
  diagnosticsOut,
407
- undefined,
408
- memo,
409
- );
611
+ pathPrefix,
612
+ namePrefix,
613
+ fileNotFoundDetail: (specifier) =>
614
+ `import "${specifier}" resolved to no file`,
615
+ notFoundDetail: () =>
616
+ `variable "${variableName}" not found in imports or same-file scope`,
617
+ });
618
+ if (!resolved) continue;
619
+ childResult = resolved;
620
+ } else {
621
+ continue;
410
622
  }
411
623
 
412
624
  // Includes without a name keep their child names private to the mounted
@@ -438,6 +650,94 @@ function buildRouteMapFromBlock(
438
650
  return routeMap;
439
651
  }
440
652
 
653
+ /**
654
+ * Resolve an include's target VARIABLE to its child route map. The variable may
655
+ * be imported (`import { name } from "./x"`) or defined in the same file
656
+ * (`const name = urls(...)`). Shared by the identifier include branch and the
657
+ * async-include `export default <name>` branch so a future import-resolution fix
658
+ * cannot silently miss one form. Returns null (with a diagnostic pushed) when
659
+ * the variable is unresolvable — the caller should skip the include.
660
+ *
661
+ * `resolutionFile`/`resolutionSource` is the module whose import + same-file
662
+ * scope is searched; `reportFile` is the file the diagnostic is attributed to
663
+ * (the one containing the include() call), which differs for async includes.
664
+ */
665
+ function resolveIncludedVariable(opts: {
666
+ variableName: string;
667
+ resolutionFile: string;
668
+ resolutionSource: string;
669
+ reportFile: string;
670
+ memo: ScanMemo | undefined;
671
+ visited: Set<string> | undefined;
672
+ diagnosticsOut: UnresolvableInclude[] | undefined;
673
+ pathPrefix: string;
674
+ namePrefix: string | null;
675
+ fileNotFoundDetail: (specifier: string) => string;
676
+ notFoundDetail: () => string;
677
+ }): {
678
+ routes: Record<string, string>;
679
+ searchSchemas: Record<string, Record<string, string>>;
680
+ } | null {
681
+ const {
682
+ variableName,
683
+ resolutionFile,
684
+ resolutionSource,
685
+ reportFile,
686
+ memo,
687
+ visited,
688
+ diagnosticsOut,
689
+ pathPrefix,
690
+ namePrefix,
691
+ } = opts;
692
+ const imported = resolveImportedVariable(resolutionSource, variableName);
693
+ if (imported) {
694
+ const targetFile = resolveImportPath(imported.specifier, resolutionFile);
695
+ if (!targetFile) {
696
+ diagnosticsOut?.push({
697
+ pathPrefix,
698
+ namePrefix,
699
+ reason: "file-not-found",
700
+ sourceFile: reportFile,
701
+ detail: opts.fileNotFoundDetail(imported.specifier),
702
+ });
703
+ return null;
704
+ }
705
+ return buildCombinedRouteMapWithSearch(
706
+ targetFile,
707
+ imported.exportedName,
708
+ visited,
709
+ diagnosticsOut,
710
+ undefined,
711
+ memo,
712
+ );
713
+ }
714
+ // Not imported: it must be a same-file `const name = urls(...)`. Confirm it
715
+ // exists so an undefined name emits a diagnostic instead of empty routes.
716
+ const sameFileBlock = extractUrlsBlockForVariable(
717
+ resolutionSource,
718
+ variableName,
719
+ parseBlock(memo, resolutionSource),
720
+ );
721
+ if (!sameFileBlock) {
722
+ diagnosticsOut?.push({
723
+ pathPrefix,
724
+ namePrefix,
725
+ reason: "unresolvable-import",
726
+ sourceFile: reportFile,
727
+ detail: opts.notFoundDetail(),
728
+ });
729
+ return null;
730
+ }
731
+ return buildCombinedRouteMapWithSearch(
732
+ resolutionFile,
733
+ variableName,
734
+ visited,
735
+ diagnosticsOut,
736
+ undefined,
737
+ memo,
738
+ );
739
+ }
740
+
441
741
  /**
442
742
  * Build route map and search schemas together.
443
743
  * Internal helper used by the include resolution path.
@@ -139,7 +139,10 @@ export async function discoverAndWriteRouteTypes(
139
139
  for (const [id, router] of registry) {
140
140
  if (!router.urlpatterns) continue;
141
141
 
142
- const manifest = generateManifest(router.urlpatterns, routerMountIndex);
142
+ const manifest = await generateManifest(
143
+ router.urlpatterns,
144
+ routerMountIndex,
145
+ );
143
146
  routerMountIndex++;
144
147
 
145
148
  // Filter out auto-generated route names that the runtime creates for
@@ -2267,6 +2267,28 @@ export class CFCacheStore<TEnv = unknown> implements SegmentCacheStore<TEnv> {
2267
2267
  if (!this.kv || !this.waitUntil || totalTtl < 60) return;
2268
2268
 
2269
2269
  const kvKey = this.toKVKey(key);
2270
+
2271
+ // Reject an oversized data-segment KV key the same way tag-marker keys are
2272
+ // rejected in invalidateTags(). A key over KV_MAX_KEY_BYTES makes kv.put()
2273
+ // fail, so the segment silently never lands in L2 (KV) and every cold-colo
2274
+ // or TTL-expired read re-renders instead of serving stale. Segment keys can
2275
+ // grow with user-controlled inputs (e.g. a route's search params), so report
2276
+ // a clear, actionable error and skip the doomed write rather than letting it
2277
+ // reject deep inside waitUntil as an opaque cache-write failure.
2278
+ const kvKeyBytes = kvKeyByteLength(kvKey);
2279
+ if (kvKeyBytes > KV_MAX_KEY_BYTES) {
2280
+ reportCacheError(
2281
+ new Error(
2282
+ `cache segment key produces a ${kvKeyBytes}-byte KV key, over the ` +
2283
+ `${KV_MAX_KEY_BYTES}-byte limit; the segment was not persisted to KV (L2). ` +
2284
+ `Reduce the cache-key inputs (e.g. large search params on this route).`,
2285
+ ),
2286
+ "cache-write",
2287
+ "[CFCacheStore] kvSetSegment",
2288
+ );
2289
+ return;
2290
+ }
2291
+
2270
2292
  const expiresAt = staleAt + swrWindow * 1000;
2271
2293
 
2272
2294
  this.waitUntil(() =>
@@ -20,27 +20,39 @@ function cloneMatchResult<TEnv>(
20
20
 
21
21
  export interface FindMatchDeps<TEnv = any> {
22
22
  routesEntries: RouteEntry<TEnv>[];
23
- evaluateLazyEntry: (entry: RouteEntry<TEnv>) => void;
23
+ // Returns a Promise only when it had to resolve an async include provider
24
+ // (`() => import()`); void for eager/precomputed includes, so the per-entry
25
+ // match loop pays no microtask in the common case.
26
+ evaluateLazyEntry: (entry: RouteEntry<TEnv>) => void | Promise<void>;
24
27
  routerId: string;
25
28
  }
26
29
 
27
30
  /**
28
31
  * Create a findMatch function bound to router state.
29
32
  * Includes single-entry cache to avoid redundant matching within the same request.
33
+ *
34
+ * Async because a lazy include may be backed by an async provider
35
+ * (`() => import("./routes")`) that must be resolved before its routes can be
36
+ * matched. The hot path is unaffected: `await` only suspends on the first
37
+ * request to a not-yet-loaded dynamic include; eager routes resolve in the same
38
+ * microtask. Every caller already runs inside an async match pipeline.
30
39
  */
31
40
  export function createFindMatch<TEnv = any>(
32
41
  deps: FindMatchDeps<TEnv>,
33
- ): (pathname: string, ms?: MetricsStore) => RouteMatchResult<TEnv> | null {
42
+ ): (
43
+ pathname: string,
44
+ ms?: MetricsStore,
45
+ ) => Promise<RouteMatchResult<TEnv> | null> {
34
46
  // Single-entry cache for findMatch to avoid redundant matching within the same request.
35
47
  // previewMatch and match both call findMatch with the same pathname — this ensures
36
48
  // the route matching work (which may check thousands of routes) only happens once.
37
49
  let lastFindMatchPathname: string | null = null;
38
50
  let lastFindMatchResult: RouteMatchResult<TEnv> | null = null;
39
51
 
40
- return function findMatch(
52
+ return async function findMatch(
41
53
  pathname: string,
42
54
  ms?: MetricsStore,
43
- ): RouteMatchResult<TEnv> | null {
55
+ ): Promise<RouteMatchResult<TEnv> | null> {
44
56
  if (lastFindMatchPathname === pathname) {
45
57
  return cloneMatchResult(lastFindMatchResult);
46
58
  }
@@ -71,11 +83,33 @@ export function createFindMatch<TEnv = any>(
71
83
  const entryStart = performance.now();
72
84
  let entry: RouteEntry<TEnv> | undefined;
73
85
  let fallbackEntry: RouteEntry<TEnv> | undefined;
86
+ let candidateError: unknown;
87
+ let candidateFailed = false;
74
88
 
75
89
  for (const e of deps.routesEntries) {
76
90
  if (e.staticPrefix !== trieResult.sp) continue;
77
91
  if (!fallbackEntry) fallbackEntry = e;
78
- deps.evaluateLazyEntry(e);
92
+ try {
93
+ const ev = deps.evaluateLazyEntry(e);
94
+ if (ev) await ev;
95
+ } catch (err) {
96
+ // Multiple async includes can share one collapsed static prefix, so
97
+ // this loop may evaluate a candidate that is NOT the route's owner.
98
+ // Remember the failure and keep scanning: if another candidate owns
99
+ // the route, this sibling's failure is correctly isolated (its
100
+ // _lazyInflight was cleared, so a later request retries). But if NO
101
+ // candidate ends up owning it, the failing one WAS the owner — a
102
+ // real, trie-matched route whose module failed to import — and we
103
+ // rethrow below as a 5xx rather than silently 404ing (see finding 3:
104
+ // owner failure must stay loud).
105
+ candidateError = err;
106
+ candidateFailed = true;
107
+ console.error(
108
+ `[@rangojs/router] include at "${e.staticPrefix}" failed to load: ` +
109
+ `${(err as Error)?.message ?? String(err)}`,
110
+ );
111
+ continue;
112
+ }
79
113
  if (
80
114
  e.routes &&
81
115
  trieResult.routeKey in (e.routes as Record<string, unknown>)
@@ -85,6 +119,14 @@ export function createFindMatch<TEnv = any>(
85
119
  }
86
120
  }
87
121
 
122
+ // The trie matched this route, so it EXISTS. If no same-prefix candidate
123
+ // could own it AND one failed to load, the owning module is the one that
124
+ // threw — surface the module failure as a 5xx, not the misleading 404 a
125
+ // fallthrough would give.
126
+ if (!entry && candidateFailed) {
127
+ throw candidateError;
128
+ }
129
+
88
130
  if (!entry) entry = fallbackEntry;
89
131
 
90
132
  if (!entry) {
@@ -95,7 +137,8 @@ export function createFindMatch<TEnv = any>(
95
137
  );
96
138
  if (parent) {
97
139
  const lazyStart = performance.now();
98
- deps.evaluateLazyEntry(parent);
140
+ const ev = deps.evaluateLazyEntry(parent);
141
+ if (ev) await ev;
99
142
  pushMetric?.("match:lazy-eval", lazyStart);
100
143
  }
101
144
  entry = deps.routesEntries.find(
@@ -141,7 +184,28 @@ export function createFindMatch<TEnv = any>(
141
184
  lastFindMatchResult = null;
142
185
  return null;
143
186
  }
144
- deps.evaluateLazyEntry(result.lazyEntry);
187
+ try {
188
+ const ev = deps.evaluateLazyEntry(result.lazyEntry);
189
+ if (ev) await ev;
190
+ } catch (err) {
191
+ // If the trie matched this pathname, the route is REAL and this lazy
192
+ // entry owns (part of) it — a module-load failure is a genuine error, so
193
+ // propagate it as a 5xx. If the trie did NOT match, this is a
194
+ // genuinely-unmatched pathname (a typo, a bot probe): its 404 must not be
195
+ // upgraded to a 500 just because some lazy include — e.g. a failing root
196
+ // `include("/")` — happened to need evaluating while we probed. Isolate
197
+ // and fall through to the 404 (finding 4: the two match phases agree —
198
+ // owner failure is loud, unmatched stays 404).
199
+ if (trieMatched) throw err;
200
+ console.error(
201
+ `[@rangojs/router] include at "${result.lazyEntry.staticPrefix}" ` +
202
+ `failed to load while resolving unmatched path "${pathname}": ` +
203
+ `${(err as Error)?.message ?? String(err)}`,
204
+ );
205
+ lastFindMatchPathname = pathname;
206
+ lastFindMatchResult = null;
207
+ return null;
208
+ }
145
209
  result = findRouteMatch(pathname, deps.routesEntries);
146
210
  }
147
211
  pushMetric?.("match:regex-fallback", regexStart);