@rangojs/router 0.0.0-experimental.111 → 0.0.0-experimental.113

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 (875) hide show
  1. package/dist/bin/rango.js +42 -38
  2. package/dist/vite/index.js +147 -194
  3. package/package.json +17 -16
  4. package/skills/cache-guide/SKILL.md +35 -24
  5. package/skills/caching/SKILL.md +115 -7
  6. package/skills/document-cache/SKILL.md +78 -55
  7. package/skills/hooks/SKILL.md +37 -19
  8. package/skills/loader/SKILL.md +3 -3
  9. package/skills/rango/SKILL.md +15 -10
  10. package/skills/use-cache/SKILL.md +34 -5
  11. package/src/browser/action-coordinator.ts +53 -36
  12. package/src/browser/event-controller.ts +42 -66
  13. package/src/browser/navigation-bridge.ts +4 -0
  14. package/src/browser/navigation-client.ts +12 -15
  15. package/src/browser/navigation-store.ts +7 -8
  16. package/src/browser/navigation-transaction.ts +7 -21
  17. package/src/browser/partial-update.ts +8 -16
  18. package/src/browser/react/NavigationProvider.tsx +29 -40
  19. package/src/browser/react/location-state-shared.ts +93 -3
  20. package/src/browser/react/use-params.ts +3 -4
  21. package/src/browser/response-adapter.ts +25 -0
  22. package/src/browser/rsc-router.tsx +16 -2
  23. package/src/browser/server-action-bridge.ts +23 -30
  24. package/src/browser/types.ts +2 -0
  25. package/src/build/generate-manifest.ts +29 -31
  26. package/src/build/generate-route-types.ts +2 -0
  27. package/src/build/route-types/per-module-writer.ts +4 -1
  28. package/src/build/route-types/router-processing.ts +37 -9
  29. package/src/build/runtime-discovery.ts +9 -20
  30. package/src/cache/cache-scope.ts +28 -42
  31. package/src/cache/cf/cf-cache-store.ts +49 -6
  32. package/src/decode-loader-results.ts +36 -0
  33. package/src/errors.ts +11 -0
  34. package/src/loader-store.ts +62 -25
  35. package/src/loader.ts +1 -5
  36. package/src/response-utils.ts +9 -0
  37. package/src/route-content-wrapper.tsx +6 -28
  38. package/src/route-definition/helpers-types.ts +13 -4
  39. package/src/router/content-negotiation.ts +15 -2
  40. package/src/router/intercept-resolution.ts +4 -18
  41. package/src/router/loader-resolution.ts +16 -2
  42. package/src/router/match-middleware/cache-lookup.ts +44 -91
  43. package/src/router/match-middleware/cache-store.ts +3 -2
  44. package/src/router/match-result.ts +32 -30
  45. package/src/router/middleware.ts +46 -78
  46. package/src/router/preview-match.ts +3 -1
  47. package/src/router/request-classification.ts +4 -28
  48. package/src/rsc/handler.ts +20 -65
  49. package/src/rsc/helpers.ts +3 -2
  50. package/src/rsc/origin-guard.ts +28 -10
  51. package/src/rsc/response-route-handler.ts +32 -52
  52. package/src/rsc/rsc-rendering.ts +27 -53
  53. package/src/rsc/runtime-warnings.ts +9 -10
  54. package/src/rsc/server-action.ts +13 -37
  55. package/src/rsc/ssr-setup.ts +16 -0
  56. package/src/segment-system.tsx +46 -47
  57. package/src/server/context.ts +26 -0
  58. package/src/server/cookie-store.ts +28 -4
  59. package/src/types/handler-context.ts +5 -2
  60. package/src/use-loader.tsx +89 -42
  61. package/src/vite/discovery/discover-routers.ts +10 -22
  62. package/src/vite/discovery/route-types-writer.ts +38 -82
  63. package/src/vite/plugins/cjs-to-esm.ts +3 -7
  64. package/src/vite/plugins/expose-ids/handler-transform.ts +8 -61
  65. package/src/vite/plugins/expose-ids/loader-transform.ts +3 -5
  66. package/src/vite/plugins/expose-internal-ids.ts +34 -62
  67. package/src/vite/plugins/use-cache-transform.ts +12 -10
  68. package/src/vite/plugins/version-injector.ts +2 -12
  69. package/src/vite/router-discovery.ts +71 -26
  70. package/src/vite/utils/shared-utils.ts +13 -1
  71. package/dist/__internal.d.ts +0 -83
  72. package/dist/__internal.d.ts.map +0 -1
  73. package/dist/__internal.js +0 -19
  74. package/dist/__internal.js.map +0 -1
  75. package/dist/__mocks__/version.d.ts +0 -7
  76. package/dist/__mocks__/version.d.ts.map +0 -1
  77. package/dist/__mocks__/version.js +0 -7
  78. package/dist/__mocks__/version.js.map +0 -1
  79. package/dist/__tests__/client-href.test.d.ts +0 -2
  80. package/dist/__tests__/client-href.test.d.ts.map +0 -1
  81. package/dist/__tests__/client-href.test.js +0 -74
  82. package/dist/__tests__/client-href.test.js.map +0 -1
  83. package/dist/__tests__/component-utils.test.d.ts +0 -2
  84. package/dist/__tests__/component-utils.test.d.ts.map +0 -1
  85. package/dist/__tests__/component-utils.test.js +0 -51
  86. package/dist/__tests__/component-utils.test.js.map +0 -1
  87. package/dist/__tests__/event-controller.test.d.ts +0 -2
  88. package/dist/__tests__/event-controller.test.d.ts.map +0 -1
  89. package/dist/__tests__/event-controller.test.js +0 -538
  90. package/dist/__tests__/event-controller.test.js.map +0 -1
  91. package/dist/__tests__/helpers/route-tree.d.ts +0 -118
  92. package/dist/__tests__/helpers/route-tree.d.ts.map +0 -1
  93. package/dist/__tests__/helpers/route-tree.js +0 -374
  94. package/dist/__tests__/helpers/route-tree.js.map +0 -1
  95. package/dist/__tests__/match-result.test.d.ts +0 -2
  96. package/dist/__tests__/match-result.test.d.ts.map +0 -1
  97. package/dist/__tests__/match-result.test.js +0 -154
  98. package/dist/__tests__/match-result.test.js.map +0 -1
  99. package/dist/__tests__/navigation-store.test.d.ts +0 -2
  100. package/dist/__tests__/navigation-store.test.d.ts.map +0 -1
  101. package/dist/__tests__/navigation-store.test.js +0 -440
  102. package/dist/__tests__/navigation-store.test.js.map +0 -1
  103. package/dist/__tests__/partial-update.test.d.ts +0 -2
  104. package/dist/__tests__/partial-update.test.d.ts.map +0 -1
  105. package/dist/__tests__/partial-update.test.js +0 -1009
  106. package/dist/__tests__/partial-update.test.js.map +0 -1
  107. package/dist/__tests__/reverse-types.test.d.ts +0 -8
  108. package/dist/__tests__/reverse-types.test.d.ts.map +0 -1
  109. package/dist/__tests__/reverse-types.test.js +0 -656
  110. package/dist/__tests__/reverse-types.test.js.map +0 -1
  111. package/dist/__tests__/route-definition.test.d.ts +0 -2
  112. package/dist/__tests__/route-definition.test.d.ts.map +0 -1
  113. package/dist/__tests__/route-definition.test.js +0 -55
  114. package/dist/__tests__/route-definition.test.js.map +0 -1
  115. package/dist/__tests__/router-helpers.test.d.ts +0 -2
  116. package/dist/__tests__/router-helpers.test.d.ts.map +0 -1
  117. package/dist/__tests__/router-helpers.test.js +0 -377
  118. package/dist/__tests__/router-helpers.test.js.map +0 -1
  119. package/dist/__tests__/router-integration-2.test.d.ts +0 -2
  120. package/dist/__tests__/router-integration-2.test.d.ts.map +0 -1
  121. package/dist/__tests__/router-integration-2.test.js +0 -426
  122. package/dist/__tests__/router-integration-2.test.js.map +0 -1
  123. package/dist/__tests__/router-integration.test.d.ts +0 -2
  124. package/dist/__tests__/router-integration.test.d.ts.map +0 -1
  125. package/dist/__tests__/router-integration.test.js +0 -1051
  126. package/dist/__tests__/router-integration.test.js.map +0 -1
  127. package/dist/__tests__/search-params.test.d.ts +0 -5
  128. package/dist/__tests__/search-params.test.d.ts.map +0 -1
  129. package/dist/__tests__/search-params.test.js +0 -306
  130. package/dist/__tests__/search-params.test.js.map +0 -1
  131. package/dist/__tests__/segment-system.test.d.ts +0 -2
  132. package/dist/__tests__/segment-system.test.d.ts.map +0 -1
  133. package/dist/__tests__/segment-system.test.js +0 -627
  134. package/dist/__tests__/segment-system.test.js.map +0 -1
  135. package/dist/__tests__/static-handler-types.test.d.ts +0 -8
  136. package/dist/__tests__/static-handler-types.test.d.ts.map +0 -1
  137. package/dist/__tests__/static-handler-types.test.js +0 -63
  138. package/dist/__tests__/static-handler-types.test.js.map +0 -1
  139. package/dist/__tests__/urls.test.d.ts +0 -2
  140. package/dist/__tests__/urls.test.d.ts.map +0 -1
  141. package/dist/__tests__/urls.test.js +0 -421
  142. package/dist/__tests__/urls.test.js.map +0 -1
  143. package/dist/__tests__/use-mount.test.d.ts +0 -2
  144. package/dist/__tests__/use-mount.test.d.ts.map +0 -1
  145. package/dist/__tests__/use-mount.test.js +0 -35
  146. package/dist/__tests__/use-mount.test.js.map +0 -1
  147. package/dist/bin/rango.d.ts +0 -2
  148. package/dist/bin/rango.d.ts.map +0 -1
  149. package/dist/bin/rango.js.map +0 -1
  150. package/dist/browser/event-controller.d.ts +0 -191
  151. package/dist/browser/event-controller.d.ts.map +0 -1
  152. package/dist/browser/event-controller.js +0 -559
  153. package/dist/browser/event-controller.js.map +0 -1
  154. package/dist/browser/index.d.ts +0 -2
  155. package/dist/browser/index.d.ts.map +0 -1
  156. package/dist/browser/index.js +0 -14
  157. package/dist/browser/index.js.map +0 -1
  158. package/dist/browser/link-interceptor.d.ts +0 -38
  159. package/dist/browser/link-interceptor.d.ts.map +0 -1
  160. package/dist/browser/link-interceptor.js +0 -99
  161. package/dist/browser/link-interceptor.js.map +0 -1
  162. package/dist/browser/logging.d.ts +0 -10
  163. package/dist/browser/logging.d.ts.map +0 -1
  164. package/dist/browser/logging.js +0 -29
  165. package/dist/browser/logging.js.map +0 -1
  166. package/dist/browser/lru-cache.d.ts +0 -17
  167. package/dist/browser/lru-cache.d.ts.map +0 -1
  168. package/dist/browser/lru-cache.js +0 -50
  169. package/dist/browser/lru-cache.js.map +0 -1
  170. package/dist/browser/merge-segment-loaders.d.ts +0 -39
  171. package/dist/browser/merge-segment-loaders.d.ts.map +0 -1
  172. package/dist/browser/merge-segment-loaders.js +0 -102
  173. package/dist/browser/merge-segment-loaders.js.map +0 -1
  174. package/dist/browser/navigation-bridge.d.ts +0 -102
  175. package/dist/browser/navigation-bridge.d.ts.map +0 -1
  176. package/dist/browser/navigation-bridge.js +0 -708
  177. package/dist/browser/navigation-bridge.js.map +0 -1
  178. package/dist/browser/navigation-client.d.ts +0 -25
  179. package/dist/browser/navigation-client.d.ts.map +0 -1
  180. package/dist/browser/navigation-client.js +0 -157
  181. package/dist/browser/navigation-client.js.map +0 -1
  182. package/dist/browser/navigation-store.d.ts +0 -101
  183. package/dist/browser/navigation-store.d.ts.map +0 -1
  184. package/dist/browser/navigation-store.js +0 -625
  185. package/dist/browser/navigation-store.js.map +0 -1
  186. package/dist/browser/partial-update.d.ts +0 -75
  187. package/dist/browser/partial-update.d.ts.map +0 -1
  188. package/dist/browser/partial-update.js +0 -426
  189. package/dist/browser/partial-update.js.map +0 -1
  190. package/dist/browser/react/Link.d.ts +0 -86
  191. package/dist/browser/react/Link.d.ts.map +0 -1
  192. package/dist/browser/react/Link.js +0 -128
  193. package/dist/browser/react/Link.js.map +0 -1
  194. package/dist/browser/react/NavigationProvider.d.ts +0 -63
  195. package/dist/browser/react/NavigationProvider.d.ts.map +0 -1
  196. package/dist/browser/react/NavigationProvider.js +0 -216
  197. package/dist/browser/react/NavigationProvider.js.map +0 -1
  198. package/dist/browser/react/ScrollRestoration.d.ts +0 -75
  199. package/dist/browser/react/ScrollRestoration.d.ts.map +0 -1
  200. package/dist/browser/react/ScrollRestoration.js +0 -57
  201. package/dist/browser/react/ScrollRestoration.js.map +0 -1
  202. package/dist/browser/react/context.d.ts +0 -46
  203. package/dist/browser/react/context.d.ts.map +0 -1
  204. package/dist/browser/react/context.js +0 -10
  205. package/dist/browser/react/context.js.map +0 -1
  206. package/dist/browser/react/index.d.ts +0 -11
  207. package/dist/browser/react/index.d.ts.map +0 -1
  208. package/dist/browser/react/index.js +0 -22
  209. package/dist/browser/react/index.js.map +0 -1
  210. package/dist/browser/react/location-state-shared.d.ts +0 -63
  211. package/dist/browser/react/location-state-shared.d.ts.map +0 -1
  212. package/dist/browser/react/location-state-shared.js +0 -81
  213. package/dist/browser/react/location-state-shared.js.map +0 -1
  214. package/dist/browser/react/location-state.d.ts +0 -23
  215. package/dist/browser/react/location-state.d.ts.map +0 -1
  216. package/dist/browser/react/location-state.js +0 -29
  217. package/dist/browser/react/location-state.js.map +0 -1
  218. package/dist/browser/react/mount-context.d.ts +0 -24
  219. package/dist/browser/react/mount-context.d.ts.map +0 -1
  220. package/dist/browser/react/mount-context.js +0 -24
  221. package/dist/browser/react/mount-context.js.map +0 -1
  222. package/dist/browser/react/use-action.d.ts +0 -64
  223. package/dist/browser/react/use-action.d.ts.map +0 -1
  224. package/dist/browser/react/use-action.js +0 -134
  225. package/dist/browser/react/use-action.js.map +0 -1
  226. package/dist/browser/react/use-client-cache.d.ts +0 -41
  227. package/dist/browser/react/use-client-cache.d.ts.map +0 -1
  228. package/dist/browser/react/use-client-cache.js +0 -39
  229. package/dist/browser/react/use-client-cache.js.map +0 -1
  230. package/dist/browser/react/use-handle.d.ts +0 -31
  231. package/dist/browser/react/use-handle.d.ts.map +0 -1
  232. package/dist/browser/react/use-handle.js +0 -144
  233. package/dist/browser/react/use-handle.js.map +0 -1
  234. package/dist/browser/react/use-href.d.ts +0 -33
  235. package/dist/browser/react/use-href.d.ts.map +0 -1
  236. package/dist/browser/react/use-href.js +0 -39
  237. package/dist/browser/react/use-href.js.map +0 -1
  238. package/dist/browser/react/use-link-status.d.ts +0 -37
  239. package/dist/browser/react/use-link-status.d.ts.map +0 -1
  240. package/dist/browser/react/use-link-status.js +0 -99
  241. package/dist/browser/react/use-link-status.js.map +0 -1
  242. package/dist/browser/react/use-mount.d.ts +0 -25
  243. package/dist/browser/react/use-mount.d.ts.map +0 -1
  244. package/dist/browser/react/use-mount.js +0 -30
  245. package/dist/browser/react/use-mount.js.map +0 -1
  246. package/dist/browser/react/use-navigation.d.ts +0 -27
  247. package/dist/browser/react/use-navigation.d.ts.map +0 -1
  248. package/dist/browser/react/use-navigation.js +0 -87
  249. package/dist/browser/react/use-navigation.js.map +0 -1
  250. package/dist/browser/react/use-segments.d.ts +0 -38
  251. package/dist/browser/react/use-segments.d.ts.map +0 -1
  252. package/dist/browser/react/use-segments.js +0 -130
  253. package/dist/browser/react/use-segments.js.map +0 -1
  254. package/dist/browser/request-controller.d.ts +0 -26
  255. package/dist/browser/request-controller.d.ts.map +0 -1
  256. package/dist/browser/request-controller.js +0 -147
  257. package/dist/browser/request-controller.js.map +0 -1
  258. package/dist/browser/rsc-router.d.ts +0 -129
  259. package/dist/browser/rsc-router.d.ts.map +0 -1
  260. package/dist/browser/rsc-router.js +0 -195
  261. package/dist/browser/rsc-router.js.map +0 -1
  262. package/dist/browser/scroll-restoration.d.ts +0 -93
  263. package/dist/browser/scroll-restoration.d.ts.map +0 -1
  264. package/dist/browser/scroll-restoration.js +0 -321
  265. package/dist/browser/scroll-restoration.js.map +0 -1
  266. package/dist/browser/segment-structure-assert.d.ts +0 -17
  267. package/dist/browser/segment-structure-assert.d.ts.map +0 -1
  268. package/dist/browser/segment-structure-assert.js +0 -59
  269. package/dist/browser/segment-structure-assert.js.map +0 -1
  270. package/dist/browser/server-action-bridge.d.ts +0 -26
  271. package/dist/browser/server-action-bridge.d.ts.map +0 -1
  272. package/dist/browser/server-action-bridge.js +0 -668
  273. package/dist/browser/server-action-bridge.js.map +0 -1
  274. package/dist/browser/shallow.d.ts +0 -12
  275. package/dist/browser/shallow.d.ts.map +0 -1
  276. package/dist/browser/shallow.js +0 -34
  277. package/dist/browser/shallow.js.map +0 -1
  278. package/dist/browser/types.d.ts +0 -369
  279. package/dist/browser/types.d.ts.map +0 -1
  280. package/dist/browser/types.js +0 -2
  281. package/dist/browser/types.js.map +0 -1
  282. package/dist/build/__tests__/generate-cli.test.d.ts +0 -2
  283. package/dist/build/__tests__/generate-cli.test.d.ts.map +0 -1
  284. package/dist/build/__tests__/generate-cli.test.js +0 -237
  285. package/dist/build/__tests__/generate-cli.test.js.map +0 -1
  286. package/dist/build/__tests__/generate-manifest.test.d.ts +0 -2
  287. package/dist/build/__tests__/generate-manifest.test.d.ts.map +0 -1
  288. package/dist/build/__tests__/generate-manifest.test.js +0 -119
  289. package/dist/build/__tests__/generate-manifest.test.js.map +0 -1
  290. package/dist/build/__tests__/generate-route-types.test.d.ts +0 -2
  291. package/dist/build/__tests__/generate-route-types.test.d.ts.map +0 -1
  292. package/dist/build/__tests__/generate-route-types.test.js +0 -620
  293. package/dist/build/__tests__/generate-route-types.test.js.map +0 -1
  294. package/dist/build/__tests__/per-router-manifest.test.d.ts +0 -2
  295. package/dist/build/__tests__/per-router-manifest.test.d.ts.map +0 -1
  296. package/dist/build/__tests__/per-router-manifest.test.js +0 -308
  297. package/dist/build/__tests__/per-router-manifest.test.js.map +0 -1
  298. package/dist/build/generate-manifest.d.ts +0 -81
  299. package/dist/build/generate-manifest.d.ts.map +0 -1
  300. package/dist/build/generate-manifest.js +0 -276
  301. package/dist/build/generate-manifest.js.map +0 -1
  302. package/dist/build/generate-route-types.d.ts +0 -115
  303. package/dist/build/generate-route-types.d.ts.map +0 -1
  304. package/dist/build/generate-route-types.js +0 -740
  305. package/dist/build/generate-route-types.js.map +0 -1
  306. package/dist/build/index.d.ts +0 -21
  307. package/dist/build/index.d.ts.map +0 -1
  308. package/dist/build/index.js +0 -21
  309. package/dist/build/index.js.map +0 -1
  310. package/dist/build/route-trie.d.ts +0 -71
  311. package/dist/build/route-trie.d.ts.map +0 -1
  312. package/dist/build/route-trie.js +0 -175
  313. package/dist/build/route-trie.js.map +0 -1
  314. package/dist/cache/__tests__/cache-scope.test.d.ts +0 -2
  315. package/dist/cache/__tests__/cache-scope.test.d.ts.map +0 -1
  316. package/dist/cache/__tests__/cache-scope.test.js +0 -208
  317. package/dist/cache/__tests__/cache-scope.test.js.map +0 -1
  318. package/dist/cache/__tests__/document-cache.test.d.ts +0 -2
  319. package/dist/cache/__tests__/document-cache.test.d.ts.map +0 -1
  320. package/dist/cache/__tests__/document-cache.test.js +0 -345
  321. package/dist/cache/__tests__/document-cache.test.js.map +0 -1
  322. package/dist/cache/__tests__/memory-segment-store.test.d.ts +0 -2
  323. package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +0 -1
  324. package/dist/cache/__tests__/memory-segment-store.test.js +0 -425
  325. package/dist/cache/__tests__/memory-segment-store.test.js.map +0 -1
  326. package/dist/cache/__tests__/memory-store.test.d.ts +0 -2
  327. package/dist/cache/__tests__/memory-store.test.d.ts.map +0 -1
  328. package/dist/cache/__tests__/memory-store.test.js +0 -367
  329. package/dist/cache/__tests__/memory-store.test.js.map +0 -1
  330. package/dist/cache/cache-scope.d.ts +0 -102
  331. package/dist/cache/cache-scope.d.ts.map +0 -1
  332. package/dist/cache/cache-scope.js +0 -440
  333. package/dist/cache/cache-scope.js.map +0 -1
  334. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +0 -2
  335. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +0 -1
  336. package/dist/cache/cf/__tests__/cf-cache-store.test.js +0 -330
  337. package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +0 -1
  338. package/dist/cache/cf/cf-cache-store.d.ts +0 -165
  339. package/dist/cache/cf/cf-cache-store.d.ts.map +0 -1
  340. package/dist/cache/cf/cf-cache-store.js +0 -242
  341. package/dist/cache/cf/cf-cache-store.js.map +0 -1
  342. package/dist/cache/cf/index.d.ts +0 -14
  343. package/dist/cache/cf/index.d.ts.map +0 -1
  344. package/dist/cache/cf/index.js +0 -17
  345. package/dist/cache/cf/index.js.map +0 -1
  346. package/dist/cache/document-cache.d.ts +0 -64
  347. package/dist/cache/document-cache.d.ts.map +0 -1
  348. package/dist/cache/document-cache.js +0 -228
  349. package/dist/cache/document-cache.js.map +0 -1
  350. package/dist/cache/index.d.ts +0 -19
  351. package/dist/cache/index.d.ts.map +0 -1
  352. package/dist/cache/index.js +0 -21
  353. package/dist/cache/index.js.map +0 -1
  354. package/dist/cache/memory-segment-store.d.ts +0 -110
  355. package/dist/cache/memory-segment-store.d.ts.map +0 -1
  356. package/dist/cache/memory-segment-store.js +0 -117
  357. package/dist/cache/memory-segment-store.js.map +0 -1
  358. package/dist/cache/memory-store.d.ts +0 -41
  359. package/dist/cache/memory-store.d.ts.map +0 -1
  360. package/dist/cache/memory-store.js +0 -191
  361. package/dist/cache/memory-store.js.map +0 -1
  362. package/dist/cache/types.d.ts +0 -317
  363. package/dist/cache/types.d.ts.map +0 -1
  364. package/dist/cache/types.js +0 -12
  365. package/dist/cache/types.js.map +0 -1
  366. package/dist/client.d.ts +0 -248
  367. package/dist/client.d.ts.map +0 -1
  368. package/dist/client.js +0 -367
  369. package/dist/client.js.map +0 -1
  370. package/dist/client.rsc.d.ts +0 -26
  371. package/dist/client.rsc.d.ts.map +0 -1
  372. package/dist/client.rsc.js +0 -46
  373. package/dist/client.rsc.js.map +0 -1
  374. package/dist/component-utils.d.ts +0 -36
  375. package/dist/component-utils.d.ts.map +0 -1
  376. package/dist/component-utils.js +0 -61
  377. package/dist/component-utils.js.map +0 -1
  378. package/dist/components/DefaultDocument.d.ts +0 -13
  379. package/dist/components/DefaultDocument.d.ts.map +0 -1
  380. package/dist/components/DefaultDocument.js +0 -15
  381. package/dist/components/DefaultDocument.js.map +0 -1
  382. package/dist/debug.d.ts +0 -58
  383. package/dist/debug.d.ts.map +0 -1
  384. package/dist/debug.js +0 -157
  385. package/dist/debug.js.map +0 -1
  386. package/dist/default-error-boundary.d.ts +0 -11
  387. package/dist/default-error-boundary.d.ts.map +0 -1
  388. package/dist/default-error-boundary.js +0 -45
  389. package/dist/default-error-boundary.js.map +0 -1
  390. package/dist/deps/browser.d.ts +0 -2
  391. package/dist/deps/browser.d.ts.map +0 -1
  392. package/dist/deps/browser.js +0 -3
  393. package/dist/deps/browser.js.map +0 -1
  394. package/dist/deps/html-stream-client.d.ts +0 -2
  395. package/dist/deps/html-stream-client.d.ts.map +0 -1
  396. package/dist/deps/html-stream-client.js +0 -3
  397. package/dist/deps/html-stream-client.js.map +0 -1
  398. package/dist/deps/html-stream-server.d.ts +0 -2
  399. package/dist/deps/html-stream-server.d.ts.map +0 -1
  400. package/dist/deps/html-stream-server.js +0 -3
  401. package/dist/deps/html-stream-server.js.map +0 -1
  402. package/dist/deps/rsc.d.ts +0 -2
  403. package/dist/deps/rsc.d.ts.map +0 -1
  404. package/dist/deps/rsc.js +0 -4
  405. package/dist/deps/rsc.js.map +0 -1
  406. package/dist/deps/ssr.d.ts +0 -2
  407. package/dist/deps/ssr.d.ts.map +0 -1
  408. package/dist/deps/ssr.js +0 -3
  409. package/dist/deps/ssr.js.map +0 -1
  410. package/dist/errors.d.ts +0 -174
  411. package/dist/errors.d.ts.map +0 -1
  412. package/dist/errors.js +0 -241
  413. package/dist/errors.js.map +0 -1
  414. package/dist/handle.d.ts +0 -78
  415. package/dist/handle.d.ts.map +0 -1
  416. package/dist/handle.js +0 -82
  417. package/dist/handle.js.map +0 -1
  418. package/dist/handles/MetaTags.d.ts +0 -14
  419. package/dist/handles/MetaTags.d.ts.map +0 -1
  420. package/dist/handles/MetaTags.js +0 -136
  421. package/dist/handles/MetaTags.js.map +0 -1
  422. package/dist/handles/index.d.ts +0 -6
  423. package/dist/handles/index.d.ts.map +0 -1
  424. package/dist/handles/index.js +0 -6
  425. package/dist/handles/index.js.map +0 -1
  426. package/dist/handles/meta.d.ts +0 -39
  427. package/dist/handles/meta.d.ts.map +0 -1
  428. package/dist/handles/meta.js +0 -202
  429. package/dist/handles/meta.js.map +0 -1
  430. package/dist/host/__tests__/errors.test.d.ts +0 -2
  431. package/dist/host/__tests__/errors.test.d.ts.map +0 -1
  432. package/dist/host/__tests__/errors.test.js +0 -76
  433. package/dist/host/__tests__/errors.test.js.map +0 -1
  434. package/dist/host/__tests__/pattern-comprehensive.test.d.ts +0 -2
  435. package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +0 -1
  436. package/dist/host/__tests__/pattern-comprehensive.test.js +0 -732
  437. package/dist/host/__tests__/pattern-comprehensive.test.js.map +0 -1
  438. package/dist/host/__tests__/pattern-matcher.test.d.ts +0 -2
  439. package/dist/host/__tests__/pattern-matcher.test.d.ts.map +0 -1
  440. package/dist/host/__tests__/pattern-matcher.test.js +0 -251
  441. package/dist/host/__tests__/pattern-matcher.test.js.map +0 -1
  442. package/dist/host/__tests__/router.test.d.ts +0 -2
  443. package/dist/host/__tests__/router.test.d.ts.map +0 -1
  444. package/dist/host/__tests__/router.test.js +0 -241
  445. package/dist/host/__tests__/router.test.js.map +0 -1
  446. package/dist/host/__tests__/testing.test.d.ts +0 -2
  447. package/dist/host/__tests__/testing.test.d.ts.map +0 -1
  448. package/dist/host/__tests__/testing.test.js +0 -64
  449. package/dist/host/__tests__/testing.test.js.map +0 -1
  450. package/dist/host/__tests__/utils.test.d.ts +0 -2
  451. package/dist/host/__tests__/utils.test.d.ts.map +0 -1
  452. package/dist/host/__tests__/utils.test.js +0 -29
  453. package/dist/host/__tests__/utils.test.js.map +0 -1
  454. package/dist/host/cookie-handler.d.ts +0 -34
  455. package/dist/host/cookie-handler.d.ts.map +0 -1
  456. package/dist/host/cookie-handler.js +0 -124
  457. package/dist/host/cookie-handler.js.map +0 -1
  458. package/dist/host/errors.d.ts +0 -56
  459. package/dist/host/errors.d.ts.map +0 -1
  460. package/dist/host/errors.js +0 -79
  461. package/dist/host/errors.js.map +0 -1
  462. package/dist/host/index.d.ts +0 -29
  463. package/dist/host/index.d.ts.map +0 -1
  464. package/dist/host/index.js +0 -32
  465. package/dist/host/index.js.map +0 -1
  466. package/dist/host/pattern-matcher.d.ts +0 -36
  467. package/dist/host/pattern-matcher.d.ts.map +0 -1
  468. package/dist/host/pattern-matcher.js +0 -172
  469. package/dist/host/pattern-matcher.js.map +0 -1
  470. package/dist/host/router.d.ts +0 -26
  471. package/dist/host/router.d.ts.map +0 -1
  472. package/dist/host/router.js +0 -218
  473. package/dist/host/router.js.map +0 -1
  474. package/dist/host/testing.d.ts +0 -36
  475. package/dist/host/testing.d.ts.map +0 -1
  476. package/dist/host/testing.js +0 -55
  477. package/dist/host/testing.js.map +0 -1
  478. package/dist/host/types.d.ts +0 -115
  479. package/dist/host/types.d.ts.map +0 -1
  480. package/dist/host/types.js +0 -7
  481. package/dist/host/types.js.map +0 -1
  482. package/dist/host/utils.d.ts +0 -21
  483. package/dist/host/utils.d.ts.map +0 -1
  484. package/dist/host/utils.js +0 -23
  485. package/dist/host/utils.js.map +0 -1
  486. package/dist/href-client.d.ts +0 -131
  487. package/dist/href-client.d.ts.map +0 -1
  488. package/dist/href-client.js +0 -64
  489. package/dist/href-client.js.map +0 -1
  490. package/dist/href-context.d.ts +0 -29
  491. package/dist/href-context.d.ts.map +0 -1
  492. package/dist/href-context.js +0 -21
  493. package/dist/href-context.js.map +0 -1
  494. package/dist/index.d.ts +0 -73
  495. package/dist/index.d.ts.map +0 -1
  496. package/dist/index.js +0 -91
  497. package/dist/index.js.map +0 -1
  498. package/dist/index.rsc.d.ts +0 -32
  499. package/dist/index.rsc.d.ts.map +0 -1
  500. package/dist/index.rsc.js +0 -40
  501. package/dist/index.rsc.js.map +0 -1
  502. package/dist/internal-debug.d.ts +0 -2
  503. package/dist/internal-debug.d.ts.map +0 -1
  504. package/dist/internal-debug.js +0 -5
  505. package/dist/internal-debug.js.map +0 -1
  506. package/dist/loader.d.ts +0 -14
  507. package/dist/loader.d.ts.map +0 -1
  508. package/dist/loader.js +0 -20
  509. package/dist/loader.js.map +0 -1
  510. package/dist/loader.rsc.d.ts +0 -19
  511. package/dist/loader.rsc.d.ts.map +0 -1
  512. package/dist/loader.rsc.js +0 -99
  513. package/dist/loader.rsc.js.map +0 -1
  514. package/dist/network-error-thrower.d.ts +0 -17
  515. package/dist/network-error-thrower.d.ts.map +0 -1
  516. package/dist/network-error-thrower.js +0 -14
  517. package/dist/network-error-thrower.js.map +0 -1
  518. package/dist/outlet-context.d.ts +0 -13
  519. package/dist/outlet-context.d.ts.map +0 -1
  520. package/dist/outlet-context.js +0 -3
  521. package/dist/outlet-context.js.map +0 -1
  522. package/dist/prerender/__tests__/param-hash.test.d.ts +0 -2
  523. package/dist/prerender/__tests__/param-hash.test.d.ts.map +0 -1
  524. package/dist/prerender/__tests__/param-hash.test.js +0 -148
  525. package/dist/prerender/__tests__/param-hash.test.js.map +0 -1
  526. package/dist/prerender/param-hash.d.ts +0 -16
  527. package/dist/prerender/param-hash.d.ts.map +0 -1
  528. package/dist/prerender/param-hash.js +0 -36
  529. package/dist/prerender/param-hash.js.map +0 -1
  530. package/dist/prerender/store.d.ts +0 -38
  531. package/dist/prerender/store.d.ts.map +0 -1
  532. package/dist/prerender/store.js +0 -61
  533. package/dist/prerender/store.js.map +0 -1
  534. package/dist/prerender.d.ts +0 -66
  535. package/dist/prerender.d.ts.map +0 -1
  536. package/dist/prerender.js +0 -57
  537. package/dist/prerender.js.map +0 -1
  538. package/dist/reverse.d.ts +0 -196
  539. package/dist/reverse.d.ts.map +0 -1
  540. package/dist/reverse.js +0 -78
  541. package/dist/reverse.js.map +0 -1
  542. package/dist/root-error-boundary.d.ts +0 -33
  543. package/dist/root-error-boundary.d.ts.map +0 -1
  544. package/dist/root-error-boundary.js +0 -165
  545. package/dist/root-error-boundary.js.map +0 -1
  546. package/dist/route-content-wrapper.d.ts +0 -46
  547. package/dist/route-content-wrapper.d.ts.map +0 -1
  548. package/dist/route-content-wrapper.js +0 -77
  549. package/dist/route-content-wrapper.js.map +0 -1
  550. package/dist/route-definition.d.ts +0 -421
  551. package/dist/route-definition.d.ts.map +0 -1
  552. package/dist/route-definition.js +0 -868
  553. package/dist/route-definition.js.map +0 -1
  554. package/dist/route-map-builder.d.ts +0 -155
  555. package/dist/route-map-builder.d.ts.map +0 -1
  556. package/dist/route-map-builder.js +0 -237
  557. package/dist/route-map-builder.js.map +0 -1
  558. package/dist/route-types.d.ts +0 -165
  559. package/dist/route-types.d.ts.map +0 -1
  560. package/dist/route-types.js +0 -7
  561. package/dist/route-types.js.map +0 -1
  562. package/dist/router/__tests__/handler-context.test.d.ts +0 -2
  563. package/dist/router/__tests__/handler-context.test.d.ts.map +0 -1
  564. package/dist/router/__tests__/handler-context.test.js +0 -65
  565. package/dist/router/__tests__/handler-context.test.js.map +0 -1
  566. package/dist/router/__tests__/loader-cycle-detection.test.d.ts +0 -2
  567. package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +0 -1
  568. package/dist/router/__tests__/loader-cycle-detection.test.js +0 -221
  569. package/dist/router/__tests__/loader-cycle-detection.test.js.map +0 -1
  570. package/dist/router/__tests__/match-context.test.d.ts +0 -2
  571. package/dist/router/__tests__/match-context.test.d.ts.map +0 -1
  572. package/dist/router/__tests__/match-context.test.js +0 -92
  573. package/dist/router/__tests__/match-context.test.js.map +0 -1
  574. package/dist/router/__tests__/match-pipelines.test.d.ts +0 -2
  575. package/dist/router/__tests__/match-pipelines.test.d.ts.map +0 -1
  576. package/dist/router/__tests__/match-pipelines.test.js +0 -417
  577. package/dist/router/__tests__/match-pipelines.test.js.map +0 -1
  578. package/dist/router/__tests__/match-result.test.d.ts +0 -2
  579. package/dist/router/__tests__/match-result.test.d.ts.map +0 -1
  580. package/dist/router/__tests__/match-result.test.js +0 -457
  581. package/dist/router/__tests__/match-result.test.js.map +0 -1
  582. package/dist/router/__tests__/on-error.test.d.ts +0 -2
  583. package/dist/router/__tests__/on-error.test.d.ts.map +0 -1
  584. package/dist/router/__tests__/on-error.test.js +0 -678
  585. package/dist/router/__tests__/on-error.test.js.map +0 -1
  586. package/dist/router/__tests__/pattern-matching.test.d.ts +0 -2
  587. package/dist/router/__tests__/pattern-matching.test.d.ts.map +0 -1
  588. package/dist/router/__tests__/pattern-matching.test.js +0 -629
  589. package/dist/router/__tests__/pattern-matching.test.js.map +0 -1
  590. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +0 -2
  591. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +0 -1
  592. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +0 -155
  593. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +0 -1
  594. package/dist/router/error-handling.d.ts +0 -77
  595. package/dist/router/error-handling.d.ts.map +0 -1
  596. package/dist/router/error-handling.js +0 -202
  597. package/dist/router/error-handling.js.map +0 -1
  598. package/dist/router/handler-context.d.ts +0 -20
  599. package/dist/router/handler-context.d.ts.map +0 -1
  600. package/dist/router/handler-context.js +0 -198
  601. package/dist/router/handler-context.js.map +0 -1
  602. package/dist/router/intercept-resolution.d.ts +0 -66
  603. package/dist/router/intercept-resolution.d.ts.map +0 -1
  604. package/dist/router/intercept-resolution.js +0 -246
  605. package/dist/router/intercept-resolution.js.map +0 -1
  606. package/dist/router/loader-resolution.d.ts +0 -64
  607. package/dist/router/loader-resolution.d.ts.map +0 -1
  608. package/dist/router/loader-resolution.js +0 -284
  609. package/dist/router/loader-resolution.js.map +0 -1
  610. package/dist/router/logging.d.ts +0 -15
  611. package/dist/router/logging.d.ts.map +0 -1
  612. package/dist/router/logging.js +0 -99
  613. package/dist/router/logging.js.map +0 -1
  614. package/dist/router/manifest.d.ts +0 -22
  615. package/dist/router/manifest.d.ts.map +0 -1
  616. package/dist/router/manifest.js +0 -181
  617. package/dist/router/manifest.js.map +0 -1
  618. package/dist/router/match-api.d.ts +0 -35
  619. package/dist/router/match-api.d.ts.map +0 -1
  620. package/dist/router/match-api.js +0 -406
  621. package/dist/router/match-api.js.map +0 -1
  622. package/dist/router/match-context.d.ts +0 -206
  623. package/dist/router/match-context.d.ts.map +0 -1
  624. package/dist/router/match-context.js +0 -17
  625. package/dist/router/match-context.js.map +0 -1
  626. package/dist/router/match-middleware/background-revalidation.d.ts +0 -127
  627. package/dist/router/match-middleware/background-revalidation.d.ts.map +0 -1
  628. package/dist/router/match-middleware/background-revalidation.js +0 -75
  629. package/dist/router/match-middleware/background-revalidation.js.map +0 -1
  630. package/dist/router/match-middleware/cache-lookup.d.ts +0 -112
  631. package/dist/router/match-middleware/cache-lookup.d.ts.map +0 -1
  632. package/dist/router/match-middleware/cache-lookup.js +0 -257
  633. package/dist/router/match-middleware/cache-lookup.js.map +0 -1
  634. package/dist/router/match-middleware/cache-store.d.ts +0 -113
  635. package/dist/router/match-middleware/cache-store.d.ts.map +0 -1
  636. package/dist/router/match-middleware/cache-store.js +0 -108
  637. package/dist/router/match-middleware/cache-store.js.map +0 -1
  638. package/dist/router/match-middleware/index.d.ts +0 -81
  639. package/dist/router/match-middleware/index.d.ts.map +0 -1
  640. package/dist/router/match-middleware/index.js +0 -80
  641. package/dist/router/match-middleware/index.js.map +0 -1
  642. package/dist/router/match-middleware/intercept-resolution.d.ts +0 -117
  643. package/dist/router/match-middleware/intercept-resolution.d.ts.map +0 -1
  644. package/dist/router/match-middleware/intercept-resolution.js +0 -134
  645. package/dist/router/match-middleware/intercept-resolution.js.map +0 -1
  646. package/dist/router/match-middleware/segment-resolution.d.ts +0 -99
  647. package/dist/router/match-middleware/segment-resolution.d.ts.map +0 -1
  648. package/dist/router/match-middleware/segment-resolution.js +0 -53
  649. package/dist/router/match-middleware/segment-resolution.js.map +0 -1
  650. package/dist/router/match-pipelines.d.ts +0 -147
  651. package/dist/router/match-pipelines.d.ts.map +0 -1
  652. package/dist/router/match-pipelines.js +0 -82
  653. package/dist/router/match-pipelines.js.map +0 -1
  654. package/dist/router/match-result.d.ts +0 -126
  655. package/dist/router/match-result.d.ts.map +0 -1
  656. package/dist/router/match-result.js +0 -93
  657. package/dist/router/match-result.js.map +0 -1
  658. package/dist/router/metrics.d.ts +0 -20
  659. package/dist/router/metrics.d.ts.map +0 -1
  660. package/dist/router/metrics.js +0 -47
  661. package/dist/router/metrics.js.map +0 -1
  662. package/dist/router/middleware.d.ts +0 -249
  663. package/dist/router/middleware.d.ts.map +0 -1
  664. package/dist/router/middleware.js +0 -434
  665. package/dist/router/middleware.js.map +0 -1
  666. package/dist/router/middleware.test.d.ts +0 -2
  667. package/dist/router/middleware.test.d.ts.map +0 -1
  668. package/dist/router/middleware.test.js +0 -816
  669. package/dist/router/middleware.test.js.map +0 -1
  670. package/dist/router/pattern-matching.d.ts +0 -149
  671. package/dist/router/pattern-matching.d.ts.map +0 -1
  672. package/dist/router/pattern-matching.js +0 -349
  673. package/dist/router/pattern-matching.js.map +0 -1
  674. package/dist/router/revalidation.d.ts +0 -44
  675. package/dist/router/revalidation.d.ts.map +0 -1
  676. package/dist/router/revalidation.js +0 -147
  677. package/dist/router/revalidation.js.map +0 -1
  678. package/dist/router/router-context.d.ts +0 -135
  679. package/dist/router/router-context.d.ts.map +0 -1
  680. package/dist/router/router-context.js +0 -36
  681. package/dist/router/router-context.js.map +0 -1
  682. package/dist/router/segment-resolution.d.ts +0 -127
  683. package/dist/router/segment-resolution.d.ts.map +0 -1
  684. package/dist/router/segment-resolution.js +0 -919
  685. package/dist/router/segment-resolution.js.map +0 -1
  686. package/dist/router/trie-matching.d.ts +0 -40
  687. package/dist/router/trie-matching.d.ts.map +0 -1
  688. package/dist/router/trie-matching.js +0 -127
  689. package/dist/router/trie-matching.js.map +0 -1
  690. package/dist/router/types.d.ts +0 -136
  691. package/dist/router/types.d.ts.map +0 -1
  692. package/dist/router/types.js +0 -7
  693. package/dist/router/types.js.map +0 -1
  694. package/dist/router.d.ts +0 -753
  695. package/dist/router.d.ts.map +0 -1
  696. package/dist/router.gen.d.ts +0 -6
  697. package/dist/router.gen.d.ts.map +0 -1
  698. package/dist/router.gen.js +0 -6
  699. package/dist/router.gen.js.map +0 -1
  700. package/dist/router.js +0 -1304
  701. package/dist/router.js.map +0 -1
  702. package/dist/rsc/__tests__/helpers.test.d.ts +0 -2
  703. package/dist/rsc/__tests__/helpers.test.d.ts.map +0 -1
  704. package/dist/rsc/__tests__/helpers.test.js +0 -140
  705. package/dist/rsc/__tests__/helpers.test.js.map +0 -1
  706. package/dist/rsc/handler.d.ts +0 -45
  707. package/dist/rsc/handler.d.ts.map +0 -1
  708. package/dist/rsc/handler.js +0 -1172
  709. package/dist/rsc/handler.js.map +0 -1
  710. package/dist/rsc/helpers.d.ts +0 -16
  711. package/dist/rsc/helpers.d.ts.map +0 -1
  712. package/dist/rsc/helpers.js +0 -55
  713. package/dist/rsc/helpers.js.map +0 -1
  714. package/dist/rsc/index.d.ts +0 -22
  715. package/dist/rsc/index.d.ts.map +0 -1
  716. package/dist/rsc/index.js +0 -23
  717. package/dist/rsc/index.js.map +0 -1
  718. package/dist/rsc/nonce.d.ts +0 -9
  719. package/dist/rsc/nonce.d.ts.map +0 -1
  720. package/dist/rsc/nonce.js +0 -18
  721. package/dist/rsc/nonce.js.map +0 -1
  722. package/dist/rsc/types.d.ts +0 -206
  723. package/dist/rsc/types.d.ts.map +0 -1
  724. package/dist/rsc/types.js +0 -8
  725. package/dist/rsc/types.js.map +0 -1
  726. package/dist/search-params.d.ts +0 -103
  727. package/dist/search-params.d.ts.map +0 -1
  728. package/dist/search-params.js +0 -74
  729. package/dist/search-params.js.map +0 -1
  730. package/dist/segment-system.d.ts +0 -75
  731. package/dist/segment-system.d.ts.map +0 -1
  732. package/dist/segment-system.js +0 -336
  733. package/dist/segment-system.js.map +0 -1
  734. package/dist/server/context.d.ts +0 -245
  735. package/dist/server/context.d.ts.map +0 -1
  736. package/dist/server/context.js +0 -197
  737. package/dist/server/context.js.map +0 -1
  738. package/dist/server/fetchable-loader-store.d.ts +0 -18
  739. package/dist/server/fetchable-loader-store.d.ts.map +0 -1
  740. package/dist/server/fetchable-loader-store.js +0 -18
  741. package/dist/server/fetchable-loader-store.js.map +0 -1
  742. package/dist/server/handle-store.d.ts +0 -85
  743. package/dist/server/handle-store.d.ts.map +0 -1
  744. package/dist/server/handle-store.js +0 -142
  745. package/dist/server/handle-store.js.map +0 -1
  746. package/dist/server/loader-registry.d.ts +0 -55
  747. package/dist/server/loader-registry.d.ts.map +0 -1
  748. package/dist/server/loader-registry.js +0 -132
  749. package/dist/server/loader-registry.js.map +0 -1
  750. package/dist/server/request-context.d.ts +0 -226
  751. package/dist/server/request-context.d.ts.map +0 -1
  752. package/dist/server/request-context.js +0 -290
  753. package/dist/server/request-context.js.map +0 -1
  754. package/dist/server/root-layout.d.ts +0 -4
  755. package/dist/server/root-layout.d.ts.map +0 -1
  756. package/dist/server/root-layout.js +0 -5
  757. package/dist/server/root-layout.js.map +0 -1
  758. package/dist/server.d.ts +0 -15
  759. package/dist/server.d.ts.map +0 -1
  760. package/dist/server.js +0 -20
  761. package/dist/server.js.map +0 -1
  762. package/dist/ssr/__tests__/ssr-handler.test.d.ts +0 -2
  763. package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +0 -1
  764. package/dist/ssr/__tests__/ssr-handler.test.js +0 -132
  765. package/dist/ssr/__tests__/ssr-handler.test.js.map +0 -1
  766. package/dist/ssr/index.d.ts +0 -98
  767. package/dist/ssr/index.d.ts.map +0 -1
  768. package/dist/ssr/index.js +0 -158
  769. package/dist/ssr/index.js.map +0 -1
  770. package/dist/static-handler.d.ts +0 -50
  771. package/dist/static-handler.d.ts.map +0 -1
  772. package/dist/static-handler.gen.d.ts +0 -5
  773. package/dist/static-handler.gen.d.ts.map +0 -1
  774. package/dist/static-handler.gen.js +0 -5
  775. package/dist/static-handler.gen.js.map +0 -1
  776. package/dist/static-handler.js +0 -29
  777. package/dist/static-handler.js.map +0 -1
  778. package/dist/theme/ThemeProvider.d.ts +0 -20
  779. package/dist/theme/ThemeProvider.d.ts.map +0 -1
  780. package/dist/theme/ThemeProvider.js +0 -240
  781. package/dist/theme/ThemeProvider.js.map +0 -1
  782. package/dist/theme/ThemeScript.d.ts +0 -48
  783. package/dist/theme/ThemeScript.d.ts.map +0 -1
  784. package/dist/theme/ThemeScript.js +0 -13
  785. package/dist/theme/ThemeScript.js.map +0 -1
  786. package/dist/theme/__tests__/theme.test.d.ts +0 -2
  787. package/dist/theme/__tests__/theme.test.d.ts.map +0 -1
  788. package/dist/theme/__tests__/theme.test.js +0 -103
  789. package/dist/theme/__tests__/theme.test.js.map +0 -1
  790. package/dist/theme/constants.d.ts +0 -29
  791. package/dist/theme/constants.d.ts.map +0 -1
  792. package/dist/theme/constants.js +0 -48
  793. package/dist/theme/constants.js.map +0 -1
  794. package/dist/theme/index.d.ts +0 -31
  795. package/dist/theme/index.d.ts.map +0 -1
  796. package/dist/theme/index.js +0 -36
  797. package/dist/theme/index.js.map +0 -1
  798. package/dist/theme/theme-context.d.ts +0 -40
  799. package/dist/theme/theme-context.d.ts.map +0 -1
  800. package/dist/theme/theme-context.js +0 -60
  801. package/dist/theme/theme-context.js.map +0 -1
  802. package/dist/theme/theme-script.d.ts +0 -27
  803. package/dist/theme/theme-script.d.ts.map +0 -1
  804. package/dist/theme/theme-script.js +0 -147
  805. package/dist/theme/theme-script.js.map +0 -1
  806. package/dist/theme/types.d.ts +0 -163
  807. package/dist/theme/types.d.ts.map +0 -1
  808. package/dist/theme/types.js +0 -11
  809. package/dist/theme/types.js.map +0 -1
  810. package/dist/theme/use-theme.d.ts +0 -12
  811. package/dist/theme/use-theme.d.ts.map +0 -1
  812. package/dist/theme/use-theme.js +0 -40
  813. package/dist/theme/use-theme.js.map +0 -1
  814. package/dist/types.d.ts +0 -1479
  815. package/dist/types.d.ts.map +0 -1
  816. package/dist/types.js +0 -10
  817. package/dist/types.js.map +0 -1
  818. package/dist/urls.d.ts +0 -441
  819. package/dist/urls.d.ts.map +0 -1
  820. package/dist/urls.gen.d.ts +0 -8
  821. package/dist/urls.gen.d.ts.map +0 -1
  822. package/dist/urls.gen.js +0 -8
  823. package/dist/urls.gen.js.map +0 -1
  824. package/dist/urls.js +0 -443
  825. package/dist/urls.js.map +0 -1
  826. package/dist/use-loader.d.ts +0 -127
  827. package/dist/use-loader.d.ts.map +0 -1
  828. package/dist/use-loader.js +0 -237
  829. package/dist/use-loader.js.map +0 -1
  830. package/dist/vite/__tests__/ast-handler-extract.test.d.ts +0 -2
  831. package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +0 -1
  832. package/dist/vite/__tests__/ast-handler-extract.test.js +0 -294
  833. package/dist/vite/__tests__/ast-handler-extract.test.js.map +0 -1
  834. package/dist/vite/__tests__/expose-id-utils.test.d.ts +0 -2
  835. package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +0 -1
  836. package/dist/vite/__tests__/expose-id-utils.test.js +0 -224
  837. package/dist/vite/__tests__/expose-id-utils.test.js.map +0 -1
  838. package/dist/vite/__tests__/expose-internal-ids.test.d.ts +0 -2
  839. package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +0 -1
  840. package/dist/vite/__tests__/expose-internal-ids.test.js +0 -647
  841. package/dist/vite/__tests__/expose-internal-ids.test.js.map +0 -1
  842. package/dist/vite/__tests__/expose-router-id.test.d.ts +0 -2
  843. package/dist/vite/__tests__/expose-router-id.test.d.ts.map +0 -1
  844. package/dist/vite/__tests__/expose-router-id.test.js +0 -39
  845. package/dist/vite/__tests__/expose-router-id.test.js.map +0 -1
  846. package/dist/vite/ast-handler-extract.d.ts +0 -49
  847. package/dist/vite/ast-handler-extract.d.ts.map +0 -1
  848. package/dist/vite/ast-handler-extract.js +0 -249
  849. package/dist/vite/ast-handler-extract.js.map +0 -1
  850. package/dist/vite/expose-action-id.d.ts +0 -19
  851. package/dist/vite/expose-action-id.d.ts.map +0 -1
  852. package/dist/vite/expose-action-id.js +0 -250
  853. package/dist/vite/expose-action-id.js.map +0 -1
  854. package/dist/vite/expose-id-utils.d.ts +0 -69
  855. package/dist/vite/expose-id-utils.d.ts.map +0 -1
  856. package/dist/vite/expose-id-utils.js +0 -289
  857. package/dist/vite/expose-id-utils.js.map +0 -1
  858. package/dist/vite/expose-internal-ids.d.ts +0 -22
  859. package/dist/vite/expose-internal-ids.d.ts.map +0 -1
  860. package/dist/vite/expose-internal-ids.js +0 -886
  861. package/dist/vite/expose-internal-ids.js.map +0 -1
  862. package/dist/vite/index.d.ts +0 -149
  863. package/dist/vite/index.d.ts.map +0 -1
  864. package/dist/vite/index.js.bak +0 -5448
  865. package/dist/vite/index.js.map +0 -1
  866. package/dist/vite/index.named-routes.gen.ts +0 -103
  867. package/dist/vite/package-resolution.d.ts +0 -43
  868. package/dist/vite/package-resolution.d.ts.map +0 -1
  869. package/dist/vite/package-resolution.js +0 -112
  870. package/dist/vite/package-resolution.js.map +0 -1
  871. package/dist/vite/virtual-entries.d.ts +0 -25
  872. package/dist/vite/virtual-entries.d.ts.map +0 -1
  873. package/dist/vite/virtual-entries.js +0 -110
  874. package/dist/vite/virtual-entries.js.map +0 -1
  875. package/src/browser/action-response-classifier.ts +0 -99
@@ -567,8 +567,11 @@ export type ShouldRevalidateFn<TParams = GenericParams, TEnv = any> = (args: {
567
567
 
568
568
  // ── Segment metadata (which segment is being evaluated) ──────────────
569
569
 
570
- /** The type of segment being revalidated. */
571
- segmentType: "layout" | "route" | "parallel";
570
+ /**
571
+ * The type of segment being revalidated. `"loader"` is passed to revalidate
572
+ * functions attached to a `loader(Fn, () => [revalidate(...)])` registration.
573
+ */
574
+ segmentType: "layout" | "route" | "parallel" | "loader";
572
575
  /** Layout name (e.g., `"root"`, `"shop"`, `"auth"`). Only set for layout segments. */
573
576
  layoutName?: string;
574
577
  /** Slot name (e.g., `"@sidebar"`, `"@modal"`). Only set for parallel segments. */
@@ -187,17 +187,20 @@ export interface UseLoaderOptions {
187
187
  */
188
188
  key?: string;
189
189
  /**
190
- * Cross-loader refresh group. Tag reads of DIFFERENT loaders with the same
191
- * `refreshGroup` name, then call `useRefreshLoaders(name)()` to refresh the
192
- * whole group at once. Each member is refreshed with a plain GET against the
193
- * current route URL no params, no body, no mutation methods because a
194
- * group spans heterogeneous loaders with different param/return shapes.
190
+ * Cross-loader refresh group tag(s). Tag reads of DIFFERENT loaders with a
191
+ * shared name, then call `useRefreshLoaders()(name)` to refresh the whole group
192
+ * at once. Pass an array to tag one read into several groups — it is refreshed
193
+ * when ANY of its groups is refreshed, so a coarse tag can cover the whole set
194
+ * while a finer tag targets a subset. Each member is refreshed with a plain GET
195
+ * against the current route URL — no params, no body, no mutation methods —
196
+ * because a group spans heterogeneous loaders with different param/return
197
+ * shapes.
195
198
  *
196
199
  * For parameterized sharing of a SINGLE loader, use `key` instead; group
197
200
  * members should be registered or non-parameterized-keyed reads (a plain-GET
198
201
  * group refresh would drop any per-call params).
199
202
  */
200
- refreshGroup?: string;
203
+ refreshGroup?: string | string[];
201
204
  }
202
205
 
203
206
  /**
@@ -254,29 +257,42 @@ function useLoaderInternal<T>(
254
257
  // only hooks with the same `key` refresh together. Default (no key) keeps the
255
258
  // historical behavior: one bucket per loader id.
256
259
  const key = options?.key;
257
- const refreshGroup = options?.refreshGroup;
260
+ // Normalize the refresh-group tag(s) to a stable, deduped, sorted list. The
261
+ // joined `groupKey` string is the subscribe effect's dependency, so passing an
262
+ // inline array literal (`refreshGroup={["a", "b"]}`) does not force a
263
+ // resubscribe on every render. An empty list means "no groups" — identical to
264
+ // omitting the option (`hasGroups` stays false, no private bucket is created).
265
+ const refreshGroupOption = options?.refreshGroup;
266
+ const groupKey =
267
+ refreshGroupOption === undefined
268
+ ? ""
269
+ : JSON.stringify(
270
+ typeof refreshGroupOption === "string"
271
+ ? [refreshGroupOption]
272
+ : [...new Set(refreshGroupOption)].sort(),
273
+ );
274
+ const groupList = useMemo<string[]>(
275
+ () => (groupKey === "" ? [] : (JSON.parse(groupKey) as string[])),
276
+ [groupKey],
277
+ );
278
+ const hasGroups = groupList.length > 0;
258
279
  // A grouped reader with no explicit key gets a private per-hook bucket so a
259
280
  // cross-loader group refresh cannot leak into the bare `loader.$$id` bucket
260
281
  // shared by unrelated unkeyed readers. Sharing within a group is opt-in via
261
282
  // an explicit `key`.
262
283
  const privateBucketIdRef = useRef<string | null>(null);
263
- if (
264
- refreshGroup !== undefined &&
265
- key === undefined &&
266
- privateBucketIdRef.current === null
267
- ) {
284
+ if (hasGroups && key === undefined && privateBucketIdRef.current === null) {
268
285
  privateBucketIdRef.current = `__rg${privateGroupBucketSeq++}`;
269
286
  }
270
287
  const effectiveKey =
271
- key ??
272
- (refreshGroup !== undefined ? privateBucketIdRef.current! : undefined);
288
+ key ?? (hasGroups ? privateBucketIdRef.current! : undefined);
273
289
  const bucketKey =
274
290
  effectiveKey === undefined ? loaderId : `${loaderId}::${effectiveKey}`;
275
291
 
276
292
  // Plain-GET refresh thunk registered with the store for cross-loader group
277
293
  // refresh (useRefreshLoaders). Always shares into this hook's bucket, never
278
294
  // touches lastSharedRequestIdRef (so a group refresh never render-throws —
279
- // errors surface via `error` and reject the refreshGroup() promise instead),
295
+ // errors surface via `error` and reject the refreshGroups() promise instead),
280
296
  // and sends no params/body. Stable across navigations (depends only on
281
297
  // loaderId + bucketKey), so the store keeps one current thunk per bucket.
282
298
  const groupRefetch = useCallback(async (): Promise<void> => {
@@ -340,16 +356,17 @@ function useLoaderInternal<T>(
340
356
  {
341
357
  loaderId,
342
358
  ephemeral: !hasContextData,
343
- group: refreshGroup,
344
- refetch: refreshGroup !== undefined ? groupRefetch : undefined,
359
+ group: hasGroups ? groupList : undefined,
360
+ refetch: hasGroups ? groupRefetch : undefined,
345
361
  },
346
362
  );
347
363
  // eslint-disable-next-line react-hooks/exhaustive-deps -- intentional:
348
364
  // sharedSnapshot is captured for the one-shot init sync; we don't want
349
365
  // to re-subscribe on every snapshot change. bucketKey, hasContextData,
350
- // refreshGroup, and groupRefetch are the only inputs that require a fresh
351
- // subscription (groupRefetch is stable per bucketKey).
352
- }, [bucketKey, hasContextData, refreshGroup, groupRefetch]);
366
+ // groupKey, and groupRefetch are the only inputs that require a fresh
367
+ // subscription (groupList is memoized on groupKey; groupRefetch is stable
368
+ // per bucketKey).
369
+ }, [bucketKey, hasContextData, groupKey, groupRefetch]);
353
370
 
354
371
  // Local state holds the result of:
355
372
  // - parameterized / mutation `load()` calls (load({ params }), POST,
@@ -360,9 +377,13 @@ function useLoaderInternal<T>(
360
377
  // prevents two unrelated components from accidentally sharing data
361
378
  // through the global store just because they reference the same
362
379
  // loader id.
363
- const [localFetchedData, setLocalFetchedData] = useState<T | undefined>(
364
- undefined,
365
- );
380
+ // `has` distinguishes a committed local result (including `null`/`undefined`)
381
+ // from "no local load yet", so a load() that resolves to a falsy value is not
382
+ // discarded in favor of the shared snapshot or the seeded context.
383
+ const [localFetchedData, setLocalFetchedData] = useState<{
384
+ has: boolean;
385
+ value: T | undefined;
386
+ }>({ has: false, value: undefined });
366
387
  const [localIsLoading, setLocalIsLoading] = useState(false);
367
388
  const [localError, setLocalError] = useState<Error | null>(null);
368
389
 
@@ -385,7 +406,7 @@ function useLoaderInternal<T>(
385
406
  const prevContextDataRef = useRef(contextData);
386
407
  useEffect(() => {
387
408
  if (prevContextDataRef.current !== contextData) {
388
- setLocalFetchedData(undefined);
409
+ setLocalFetchedData({ has: false, value: undefined });
389
410
  setLocalIsLoading(false);
390
411
  setLocalError(null);
391
412
  lastSharedRequestIdRef.current = null;
@@ -396,10 +417,14 @@ function useLoaderInternal<T>(
396
417
  }
397
418
  }, [contextData, loaderId]);
398
419
 
399
- // Read priority: a parameterized load() result overrides the shared
400
- // snapshot; the shared snapshot overrides the server-seeded context.
401
- const data =
402
- localFetchedData ?? (sharedSnapshot.value as T | undefined) ?? contextData;
420
+ // Read priority: a committed parameterized load() result overrides the shared
421
+ // snapshot; a committed shared snapshot overrides the server-seeded context.
422
+ // `has`/`hasValue` gate each level so a committed falsy value is not skipped.
423
+ const data = localFetchedData.has
424
+ ? localFetchedData.value
425
+ : sharedSnapshot.hasValue
426
+ ? (sharedSnapshot.value as T | undefined)
427
+ : contextData;
403
428
  const isLoading = localIsLoading || sharedSnapshot.isLoading;
404
429
  const error = localError ?? sharedSnapshot.error;
405
430
 
@@ -553,7 +578,7 @@ function useLoaderInternal<T>(
553
578
  // if a newer load() was issued from this hook before this one
554
579
  // resolved, drop the stale result.
555
580
  startTransition(() => {
556
- setLocalFetchedData(result);
581
+ setLocalFetchedData({ has: true, value: result });
557
582
  setLocalIsLoading(false);
558
583
  });
559
584
  }
@@ -712,14 +737,21 @@ export function useFetchLoader<T>(
712
737
  }
713
738
 
714
739
  /**
715
- * Refresh every loader tagged with a shared `refreshGroup` name.
740
+ * Get a stable function that refreshes loaders by cross-loader group tag.
716
741
  *
717
- * Returns a stable async function that refreshes all currently-mounted reads
718
- * in the group with a plain GET against the current route URL. This is the
719
- * cross-loader counterpart to the single-loader `key`: use it to refresh a set
720
- * of DIFFERENT loaders together (e.g. profile + orders after an account
721
- * switch). Members are tagged via `useLoader(Loader, { refreshGroup })` /
722
- * `useFetchLoader(Loader, { refreshGroup })`.
742
+ * The returned `refresh(groups)` takes one group name or an array of names and
743
+ * re-runs every currently-mounted read tagged with ANY of them, with a plain GET
744
+ * against the current route URL. This is the cross-loader counterpart to the
745
+ * single-loader `key`: use it to refresh a set of DIFFERENT loaders together
746
+ * (e.g. profile + orders after an account switch). Members are tagged via
747
+ * `useLoader(Loader, { refreshGroup })` / `useFetchLoader(Loader, { refreshGroup })`,
748
+ * where `refreshGroup` is one name or several.
749
+ *
750
+ * Passing the group(s) to the returned function rather than to the hook lets a
751
+ * single `useRefreshLoaders()` instance refresh different groups depending on
752
+ * context, and lets one call refresh several groups at once — their members are
753
+ * unioned and deduped, so a loader tagged into two of the named groups is fetched
754
+ * exactly once.
723
755
  *
724
756
  * Group refresh never render-throws: a failing member surfaces its error via
725
757
  * that read's `error` state, and the returned promise rejects with an
@@ -736,15 +768,30 @@ export function useFetchLoader<T>(
736
768
  * return <span>{data.name}</span>;
737
769
  * }
738
770
  * function Orders() {
739
- * const { data } = useLoader(OrdersLoader, { key: userId, refreshGroup: "account" });
771
+ * // Tagged into two groups: refreshed by "account" (the whole set) or "orders".
772
+ * const { data } = useLoader(OrdersLoader, {
773
+ * key: userId,
774
+ * refreshGroup: ["account", "orders"],
775
+ * });
740
776
  * return <span>{data.count} orders</span>;
741
777
  * }
742
- * function RefreshButton() {
743
- * const refreshAccount = useRefreshLoaders("account");
744
- * return <button onClick={() => refreshAccount()}>Refresh</button>;
778
+ * function RefreshButtons() {
779
+ * const refresh = useRefreshLoaders();
780
+ * return (
781
+ * <>
782
+ * <button onClick={() => refresh("account")}>Refresh account</button>
783
+ * <button onClick={() => refresh("orders")}>Refresh orders</button>
784
+ * <button onClick={() => refresh(["account", "orders"])}>Refresh both</button>
785
+ * </>
786
+ * );
745
787
  * }
746
788
  * ```
747
789
  */
748
- export function useRefreshLoaders(group: string): () => Promise<void> {
749
- return useCallback(() => loaderStore.refreshGroup(group), [group]);
790
+ export function useRefreshLoaders(): (
791
+ groups: string | string[],
792
+ ) => Promise<void> {
793
+ return useCallback(
794
+ (groups: string | string[]) => loaderStore.refreshGroups(groups),
795
+ [],
796
+ );
750
797
  }
@@ -292,18 +292,16 @@ export async function discoverRouters(
292
292
  }
293
293
  }
294
294
 
295
+ // buildRouteTrie reads these via ?.has / ?.[] — empty is observationally
296
+ // identical to undefined, so no empty->undefined coercion is needed.
295
297
  newMergedRouteTrie = buildRouteTrie(
296
298
  newMergedRouteManifest,
297
299
  mergedRouteAncestry,
298
300
  routeToStaticPrefix,
299
- Object.keys(mergedRouteTrailingSlash).length > 0
300
- ? mergedRouteTrailingSlash
301
- : undefined,
302
- prerenderRouteNames.size > 0 ? prerenderRouteNames : undefined,
303
- passthroughRouteNames.size > 0 ? passthroughRouteNames : undefined,
304
- Object.keys(mergedResponseTypeRoutes).length > 0
305
- ? mergedResponseTypeRoutes
306
- : undefined,
301
+ mergedRouteTrailingSlash,
302
+ prerenderRouteNames,
303
+ passthroughRouteNames,
304
+ mergedResponseTypeRoutes,
307
305
  );
308
306
 
309
307
  // Build per-router tries for multi-router isolation.
@@ -330,20 +328,10 @@ export async function discoverRouters(
330
328
  manifest.routeManifest,
331
329
  manifest._routeAncestry,
332
330
  perRouterStaticPrefix,
333
- manifest.routeTrailingSlash &&
334
- Object.keys(manifest.routeTrailingSlash).length > 0
335
- ? manifest.routeTrailingSlash
336
- : undefined,
337
- perRouterPrerenderNames && perRouterPrerenderNames.size > 0
338
- ? perRouterPrerenderNames
339
- : undefined,
340
- perRouterPassthroughNames && perRouterPassthroughNames.size > 0
341
- ? perRouterPassthroughNames
342
- : undefined,
343
- manifest.responseTypeRoutes &&
344
- Object.keys(manifest.responseTypeRoutes).length > 0
345
- ? manifest.responseTypeRoutes
346
- : undefined,
331
+ manifest.routeTrailingSlash,
332
+ perRouterPrerenderNames,
333
+ perRouterPassthroughNames,
334
+ manifest.responseTypeRoutes,
347
335
  );
348
336
  newPerRouterTrieMap.set(id, perRouterTrie);
349
337
  }
@@ -5,13 +5,15 @@
5
5
  * from discovered router manifests and static source parsing.
6
6
  */
7
7
 
8
- import { dirname, basename, join, resolve } from "node:path";
8
+ import { dirname, join, resolve } from "node:path";
9
9
  import { readFileSync, writeFileSync, existsSync, unlinkSync } from "node:fs";
10
10
  import {
11
11
  generateRouteTypesSource,
12
12
  writeCombinedRouteTypes,
13
13
  findRouterFiles,
14
14
  buildCombinedRouteMapForRouterFile,
15
+ genFileTsPath,
16
+ resolveSearchSchemas,
15
17
  } from "../../build/generate-route-types.js";
16
18
  import type { DiscoveryState } from "./state.js";
17
19
  import { markSelfGenWrite } from "./self-gen-tracking.js";
@@ -35,6 +37,22 @@ function filterUserNamedRoutes(
35
37
  return filtered;
36
38
  }
37
39
 
40
+ // Write a gen file only when content changed, marking the write as
41
+ // self-generated BEFORE writeFileSync so the watcher distinguishes it from a
42
+ // manual edit (the HMR self-gen-loop guard).
43
+ function writeGenFileIfChanged(
44
+ state: DiscoveryState,
45
+ outPath: string,
46
+ source: string,
47
+ opts?: { log?: boolean },
48
+ ): void {
49
+ const existing = existsSync(outPath) ? readFileSync(outPath, "utf-8") : null;
50
+ if (existing === source) return;
51
+ markSelfGenWrite(state, outPath, source);
52
+ writeFileSync(outPath, source);
53
+ if (opts?.log) console.log(`[rango] Generated route types -> ${outPath}`);
54
+ }
55
+
38
56
  /**
39
57
  * Write combined route types for all router files.
40
58
  * Only writes when content has changed to avoid triggering HMR loops.
@@ -48,45 +66,16 @@ export function writeCombinedRouteTypesWithTracking(
48
66
  findRouterFiles(state.projectRoot, state.scanFilter);
49
67
  state.cachedRouterFiles = routerFiles;
50
68
 
51
- // Snapshot pre-write content to detect which files actually change.
52
- const preContent = new Map<string, string>();
53
- for (const routerFilePath of routerFiles) {
54
- const routerDir = dirname(routerFilePath);
55
- const routerBasename = basename(routerFilePath).replace(
56
- /\.(tsx?|jsx?)$/,
57
- "",
58
- );
59
- const outPath = join(routerDir, `${routerBasename}.named-routes.gen.ts`);
60
- try {
61
- preContent.set(outPath, readFileSync(outPath, "utf-8"));
62
- } catch {
63
- // File doesn't exist yet — any write is a real change.
64
- }
65
- }
66
-
67
- writeCombinedRouteTypes(state.projectRoot, routerFiles, opts);
68
-
69
- // Mark only files that were actually written so the watcher can
70
- // distinguish self-triggered change events from manual edits.
71
- // Marking unchanged files creates stale entries that interfere with
72
- // multi-server setups (e.g. shared webServer + isolated HMR server).
73
- for (const routerFilePath of routerFiles) {
74
- const routerDir = dirname(routerFilePath);
75
- const routerBasename = basename(routerFilePath).replace(
76
- /\.(tsx?|jsx?)$/,
77
- "",
78
- );
79
- const outPath = join(routerDir, `${routerBasename}.named-routes.gen.ts`);
80
- if (!existsSync(outPath)) continue;
81
- try {
82
- const content = readFileSync(outPath, "utf-8");
83
- if (content !== preContent.get(outPath)) {
84
- markSelfGenWrite(state, outPath, content);
85
- }
86
- } catch {
87
- // Ignore transient fs errors while files are being rewritten.
88
- }
89
- }
69
+ // Mark each gen file as self-generated BEFORE it is written, via the onWrite
70
+ // callback fired at every writeFileSync site, so the watcher distinguishes
71
+ // self-triggered change events from manual edits. The callback fires only
72
+ // for files actually written, so unchanged files are never marked (stale
73
+ // entries interfere with multi-server setups such as a shared webServer plus
74
+ // an isolated HMR server).
75
+ writeCombinedRouteTypes(state.projectRoot, routerFiles, {
76
+ ...opts,
77
+ onWrite: (outPath, content) => markSelfGenWrite(state, outPath, content),
78
+ });
90
79
  }
91
80
 
92
81
  /**
@@ -128,34 +117,16 @@ export function writeRouteTypesFiles(state: DiscoveryState): void {
128
117
  );
129
118
  }
130
119
 
131
- const routerDir = dirname(sourceFile);
132
- const routerBasename = basename(sourceFile).replace(/\.(tsx?|jsx?)$/, "");
133
- const outPath = join(routerDir, `${routerBasename}.named-routes.gen.ts`);
120
+ const outPath = genFileTsPath(sourceFile);
134
121
 
135
122
  // Filter out auto-generated route names (e.g. "$path____debug_reverse-test")
136
123
  // to match the static parser's output and prevent HMR oscillation.
137
124
  const userRoutes = filterUserNamedRoutes(routeManifest);
138
- let effectiveSearchSchemas = routeSearchSchemas;
139
-
140
- // Runtime manifest may omit search schema metadata in some module-runner
141
- // flows. Fall back to static source parsing from the router file.
142
- if (
143
- (!effectiveSearchSchemas ||
144
- Object.keys(effectiveSearchSchemas).length === 0) &&
145
- sourceFile
146
- ) {
147
- const staticParsed = buildCombinedRouteMapForRouterFile(sourceFile);
148
- if (Object.keys(staticParsed.searchSchemas).length > 0) {
149
- const filtered: Record<string, Record<string, string>> = {};
150
- for (const name of Object.keys(userRoutes)) {
151
- const schema = staticParsed.searchSchemas[name];
152
- if (schema) filtered[name] = schema;
153
- }
154
- if (Object.keys(filtered).length > 0) {
155
- effectiveSearchSchemas = filtered;
156
- }
157
- }
158
- }
125
+ const effectiveSearchSchemas = resolveSearchSchemas(
126
+ Object.keys(userRoutes),
127
+ routeSearchSchemas,
128
+ sourceFile,
129
+ );
159
130
 
160
131
  const source = generateRouteTypesSource(
161
132
  userRoutes,
@@ -163,14 +134,7 @@ export function writeRouteTypesFiles(state: DiscoveryState): void {
163
134
  ? effectiveSearchSchemas
164
135
  : undefined,
165
136
  );
166
- const existing = existsSync(outPath)
167
- ? readFileSync(outPath, "utf-8")
168
- : null;
169
- if (existing !== source) {
170
- markSelfGenWrite(state, outPath, source);
171
- writeFileSync(outPath, source);
172
- console.log(`[rango] Generated route types -> ${outPath}`);
173
- }
137
+ writeGenFileIfChanged(state, outPath, source, { log: true });
174
138
  }
175
139
  }
176
140
 
@@ -236,22 +200,14 @@ export function supplementGenFilesWithRuntimeRoutes(
236
200
  }
237
201
  }
238
202
 
239
- const routerDir = dirname(sourceFile);
240
- const routerBasename = basename(sourceFile).replace(/\.(tsx?|jsx?)$/, "");
241
- const outPath = join(routerDir, `${routerBasename}.named-routes.gen.ts`);
203
+ const outPath = genFileTsPath(sourceFile);
242
204
  const source = generateRouteTypesSource(
243
205
  mergedRoutes,
244
206
  Object.keys(mergedSearchSchemas).length > 0
245
207
  ? mergedSearchSchemas
246
208
  : undefined,
247
209
  );
248
- const existing = existsSync(outPath)
249
- ? readFileSync(outPath, "utf-8")
250
- : null;
251
- if (existing !== source) {
252
- markSelfGenWrite(state, outPath, source);
253
- writeFileSync(outPath, source);
254
- }
210
+ writeGenFileIfChanged(state, outPath, source);
255
211
  }
256
212
  // No manual manifest update needed: the virtual module imports the gen
257
213
  // file, so Vite's HMR automatically re-evaluates it with fresh data.
@@ -12,13 +12,10 @@ export function createCjsToEsmPlugin(): Plugin {
12
12
  name: "@rangojs/router:cjs-to-esm",
13
13
  enforce: "pre",
14
14
  transform(code, id) {
15
- const cleanId = id.split("?")[0];
15
+ const cleanId = id.split("?")[0].replaceAll("\\", "/");
16
16
 
17
17
  // Transform the client.browser.js entry point to re-export from CJS
18
- if (
19
- cleanId.includes("vendor/react-server-dom/client.browser.js") ||
20
- cleanId.includes("vendor\\react-server-dom\\client.browser.js")
21
- ) {
18
+ if (cleanId.includes("vendor/react-server-dom/client.browser.js")) {
22
19
  const isProd = process.env.NODE_ENV === "production";
23
20
  const cjsFile = isProd
24
21
  ? "./cjs/react-server-dom-webpack-client.browser.production.js"
@@ -33,8 +30,7 @@ export function createCjsToEsmPlugin(): Plugin {
33
30
 
34
31
  // Transform the actual CJS files to ESM
35
32
  if (
36
- (cleanId.includes("vendor/react-server-dom/cjs/") ||
37
- cleanId.includes("vendor\\react-server-dom\\cjs\\")) &&
33
+ cleanId.includes("vendor/react-server-dom/cjs/") &&
38
34
  cleanId.includes("client.browser")
39
35
  ) {
40
36
  let transformed = code;
@@ -1,5 +1,5 @@
1
1
  import MagicString from "magic-string";
2
- import { hashId } from "../expose-id-utils.js";
2
+ import { makeStubId } from "../expose-id-utils.js";
3
3
  import type { HandlerTransformConfig, CreateExportBinding } from "./types.js";
4
4
  import { isExportOnlyFile } from "./export-analysis.js";
5
5
 
@@ -28,9 +28,7 @@ export function transformHandles(
28
28
  binding.callCloseParenPos,
29
29
  );
30
30
 
31
- const handleId = isBuild
32
- ? hashId(filePath, exportName)
33
- : `${filePath}#${exportName}`;
31
+ const handleId = makeStubId(filePath, exportName, isBuild);
34
32
 
35
33
  let paramInjection: string;
36
34
  if (!args.hasArgs) {
@@ -58,9 +56,7 @@ export function transformLocationState(
58
56
  for (const binding of bindings) {
59
57
  const exportName = binding.exportNames[0];
60
58
 
61
- const stateKey = isBuild
62
- ? hashId(filePath, exportName)
63
- : `${filePath}#${exportName}`;
59
+ const stateKey = makeStubId(filePath, exportName, isBuild);
64
60
 
65
61
  // Key is injected as a property assignment (not as a function argument).
66
62
  // This allows createLocationState to accept options like { flash: true }
@@ -88,7 +84,7 @@ export function generateWholeFileStubs(
88
84
 
89
85
  const exportNames = bindings.flatMap((b) => b.exportNames);
90
86
  const stubs = exportNames.map((name) => {
91
- const handlerId = isBuild ? hashId(filePath, name) : `${filePath}#${name}`;
87
+ const handlerId = makeStubId(filePath, name, isBuild);
92
88
  return `export const ${name} = { __brand: "${cfg.brand}", $$id: "${handlerId}" };`;
93
89
  });
94
90
 
@@ -96,53 +92,8 @@ export function generateWholeFileStubs(
96
92
  }
97
93
 
98
94
  /**
99
- * Replace handler call expressions with lightweight stub objects in non-RSC
100
- * environments. Other exports, imports, and module-level code remain untouched.
101
- */
102
- export function generateExprStubs(
103
- cfg: HandlerTransformConfig,
104
- bindings: CreateExportBinding[],
105
- code: string,
106
- filePath: string,
107
- sourceId: string,
108
- isBuild: boolean,
109
- ): { code: string; map: ReturnType<MagicString["generateMap"]> } | null {
110
- if (bindings.length === 0) return null;
111
-
112
- const s = new MagicString(code);
113
- let hasChanges = false;
114
-
115
- for (const binding of bindings) {
116
- const exportName = binding.exportNames[0];
117
- const handlerId = isBuild
118
- ? hashId(filePath, exportName)
119
- : `${filePath}#${exportName}`;
120
-
121
- s.overwrite(
122
- binding.callExprStart,
123
- binding.callCloseParenPos + 1,
124
- `{ __brand: "${cfg.brand}", $$id: "${handlerId}" }`,
125
- );
126
- hasChanges = true;
127
- }
128
-
129
- if (!hasChanges) return null;
130
-
131
- return {
132
- code: s.toString(),
133
- map: s.generateMap({
134
- source: sourceId,
135
- includeContent: true,
136
- hires: "boundary",
137
- }),
138
- };
139
- }
140
-
141
- /**
142
- * Replace handler call expressions with lightweight stub objects on an
143
- * existing MagicString. Unlike generateExprStubs (which creates its own
144
- * MagicString and returns the full result), this integrates into the
145
- * unified transform pipeline so all transforms share one sourcemap.
95
+ * Replace handler call expressions with lightweight stub objects on the shared
96
+ * unified-pipeline MagicString so all transforms share one sourcemap.
146
97
  */
147
98
  export function stubHandlerExprs(
148
99
  cfg: HandlerTransformConfig,
@@ -154,9 +105,7 @@ export function stubHandlerExprs(
154
105
  let hasChanges = false;
155
106
  for (const binding of bindings) {
156
107
  const exportName = binding.exportNames[0];
157
- const handlerId = isBuild
158
- ? hashId(filePath, exportName)
159
- : `${filePath}#${exportName}`;
108
+ const handlerId = makeStubId(filePath, exportName, isBuild);
160
109
 
161
110
  s.overwrite(
162
111
  binding.callExprStart,
@@ -182,9 +131,7 @@ export function transformHandlerIds(
182
131
  for (const binding of bindings) {
183
132
  const exportName = binding.exportNames[0];
184
133
 
185
- const handlerId = isBuild
186
- ? hashId(filePath, exportName)
187
- : `${filePath}#${exportName}`;
134
+ const handlerId = makeStubId(filePath, exportName, isBuild);
188
135
 
189
136
  // Injection strategy matches the runtime overload signatures:
190
137
  // 0 args -> inject undefined, "id"
@@ -1,5 +1,5 @@
1
1
  import type MagicString from "magic-string";
2
- import { hashId } from "../expose-id-utils.js";
2
+ import { makeStubId } from "../expose-id-utils.js";
3
3
  import type { CreateExportBinding } from "./types.js";
4
4
  import { isExportOnlyFile } from "./export-analysis.js";
5
5
 
@@ -33,7 +33,7 @@ export function generateClientLoaderStubs(
33
33
 
34
34
  for (const binding of bindings) {
35
35
  for (const name of binding.exportNames) {
36
- const loaderId = isBuild ? hashId(filePath, name) : `${filePath}#${name}`;
36
+ const loaderId = makeStubId(filePath, name, isBuild);
37
37
  lines.push(
38
38
  `export const ${name} = { __brand: "loader", $$id: "${loaderId}" };`,
39
39
  );
@@ -54,9 +54,7 @@ export function transformLoaders(
54
54
  for (const binding of bindings) {
55
55
  const exportName = binding.exportNames[0];
56
56
 
57
- const loaderId = isBuild
58
- ? hashId(filePath, exportName)
59
- : `${filePath}#${exportName}`;
57
+ const loaderId = makeStubId(filePath, exportName, isBuild);
60
58
 
61
59
  // Inject $$id as hidden third parameter.
62
60
  // createLoader(fn) -> createLoader(fn, undefined, "id")