@rangojs/router 0.0.0-experimental.9c87b9aa → 0.0.0-experimental.9eb4192e

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 (956) hide show
  1. package/README.md +126 -38
  2. package/dist/bin/rango.js +130 -47
  3. package/dist/vite/index.js +1537 -505
  4. package/dist/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
  5. package/package.json +7 -5
  6. package/skills/breadcrumbs/SKILL.md +3 -1
  7. package/skills/handler-use/SKILL.md +362 -0
  8. package/skills/hooks/SKILL.md +28 -20
  9. package/skills/intercept/SKILL.md +20 -0
  10. package/skills/layout/SKILL.md +22 -0
  11. package/skills/links/SKILL.md +91 -17
  12. package/skills/loader/SKILL.md +36 -3
  13. package/skills/middleware/SKILL.md +34 -3
  14. package/skills/migrate-nextjs/SKILL.md +560 -0
  15. package/skills/migrate-react-router/SKILL.md +765 -0
  16. package/skills/parallel/SKILL.md +59 -0
  17. package/skills/prerender/SKILL.md +110 -68
  18. package/skills/rango/SKILL.md +24 -22
  19. package/skills/response-routes/SKILL.md +8 -0
  20. package/skills/route/SKILL.md +24 -0
  21. package/skills/router-setup/SKILL.md +87 -2
  22. package/skills/streams-and-websockets/SKILL.md +283 -0
  23. package/skills/typesafety/SKILL.md +3 -1
  24. package/src/__internal.ts +1 -1
  25. package/src/browser/app-shell.ts +52 -0
  26. package/src/browser/app-version.ts +14 -0
  27. package/src/browser/navigation-bridge.ts +87 -6
  28. package/src/browser/navigation-client.ts +128 -53
  29. package/src/browser/navigation-store.ts +68 -9
  30. package/src/browser/partial-update.ts +60 -7
  31. package/src/browser/prefetch/cache.ts +129 -21
  32. package/src/browser/prefetch/fetch.ts +156 -18
  33. package/src/browser/prefetch/queue.ts +36 -5
  34. package/src/browser/rango-state.ts +53 -13
  35. package/src/browser/react/Link.tsx +72 -8
  36. package/src/browser/react/NavigationProvider.tsx +61 -13
  37. package/src/browser/react/context.ts +7 -2
  38. package/src/browser/react/use-handle.ts +9 -58
  39. package/src/browser/react/use-navigation.ts +22 -2
  40. package/src/browser/react/use-params.ts +11 -1
  41. package/src/browser/react/use-router.ts +29 -9
  42. package/src/browser/rsc-router.tsx +60 -9
  43. package/src/browser/scroll-restoration.ts +10 -8
  44. package/src/browser/segment-reconciler.ts +36 -14
  45. package/src/browser/server-action-bridge.ts +8 -6
  46. package/src/browser/types.ts +40 -5
  47. package/src/build/generate-manifest.ts +6 -6
  48. package/src/build/generate-route-types.ts +3 -0
  49. package/src/build/route-trie.ts +50 -24
  50. package/src/build/route-types/include-resolution.ts +8 -1
  51. package/src/build/route-types/router-processing.ts +211 -72
  52. package/src/build/route-types/scan-filter.ts +8 -1
  53. package/src/cache/cf/cf-cache-store.ts +5 -7
  54. package/src/client.tsx +84 -230
  55. package/src/handle.ts +40 -0
  56. package/src/index.rsc.ts +6 -1
  57. package/src/index.ts +49 -6
  58. package/src/outlet-context.ts +1 -1
  59. package/src/prerender/store.ts +5 -4
  60. package/src/prerender.ts +138 -77
  61. package/src/response-utils.ts +28 -0
  62. package/src/reverse.ts +27 -2
  63. package/src/route-definition/dsl-helpers.ts +210 -35
  64. package/src/route-definition/helpers-types.ts +61 -14
  65. package/src/route-definition/index.ts +3 -0
  66. package/src/route-definition/redirect.ts +9 -1
  67. package/src/route-definition/resolve-handler-use.ts +155 -0
  68. package/src/route-types.ts +18 -0
  69. package/src/router/content-negotiation.ts +100 -1
  70. package/src/router/handler-context.ts +70 -17
  71. package/src/router/intercept-resolution.ts +9 -4
  72. package/src/router/lazy-includes.ts +6 -6
  73. package/src/router/loader-resolution.ts +153 -21
  74. package/src/router/manifest.ts +22 -13
  75. package/src/router/match-api.ts +127 -192
  76. package/src/router/match-middleware/cache-lookup.ts +28 -8
  77. package/src/router/match-middleware/segment-resolution.ts +53 -0
  78. package/src/router/match-result.ts +82 -4
  79. package/src/router/middleware-types.ts +2 -28
  80. package/src/router/middleware.ts +32 -7
  81. package/src/router/navigation-snapshot.ts +182 -0
  82. package/src/router/pattern-matching.ts +60 -9
  83. package/src/router/prerender-match.ts +110 -10
  84. package/src/router/preview-match.ts +30 -102
  85. package/src/router/request-classification.ts +310 -0
  86. package/src/router/route-snapshot.ts +245 -0
  87. package/src/router/router-interfaces.ts +36 -4
  88. package/src/router/router-options.ts +37 -11
  89. package/src/router/segment-resolution/fresh.ts +70 -5
  90. package/src/router/segment-resolution/helpers.ts +29 -24
  91. package/src/router/segment-resolution/revalidation.ts +87 -9
  92. package/src/router/trie-matching.ts +10 -4
  93. package/src/router/types.ts +1 -0
  94. package/src/router/url-params.ts +49 -0
  95. package/src/router.ts +55 -7
  96. package/src/rsc/handler.ts +478 -374
  97. package/src/rsc/helpers.ts +69 -41
  98. package/src/rsc/loader-fetch.ts +23 -3
  99. package/src/rsc/manifest-init.ts +5 -1
  100. package/src/rsc/progressive-enhancement.ts +16 -2
  101. package/src/rsc/response-route-handler.ts +14 -1
  102. package/src/rsc/rsc-rendering.ts +17 -1
  103. package/src/rsc/server-action.ts +10 -0
  104. package/src/rsc/ssr-setup.ts +2 -2
  105. package/src/rsc/types.ts +9 -1
  106. package/src/segment-content-promise.ts +67 -0
  107. package/src/segment-loader-promise.ts +122 -0
  108. package/src/segment-system.tsx +11 -61
  109. package/src/server/context.ts +65 -5
  110. package/src/server/handle-store.ts +19 -0
  111. package/src/server/loader-registry.ts +9 -8
  112. package/src/server/request-context.ts +143 -49
  113. package/src/ssr/index.tsx +3 -0
  114. package/src/static-handler.ts +18 -6
  115. package/src/types/cache-types.ts +4 -4
  116. package/src/types/handler-context.ts +20 -46
  117. package/src/types/loader-types.ts +37 -11
  118. package/src/types/request-scope.ts +126 -0
  119. package/src/types/route-entry.ts +12 -1
  120. package/src/types/segments.ts +1 -1
  121. package/src/urls/include-helper.ts +24 -14
  122. package/src/urls/path-helper-types.ts +39 -6
  123. package/src/urls/path-helper.ts +47 -12
  124. package/src/urls/pattern-types.ts +12 -0
  125. package/src/urls/response-types.ts +18 -16
  126. package/src/use-loader.tsx +77 -5
  127. package/src/vite/debug.ts +140 -0
  128. package/src/vite/discovery/bundle-postprocess.ts +30 -33
  129. package/src/vite/discovery/discover-routers.ts +36 -4
  130. package/src/vite/discovery/prerender-collection.ts +175 -74
  131. package/src/vite/discovery/state.ts +13 -4
  132. package/src/vite/index.ts +4 -0
  133. package/src/vite/plugin-types.ts +60 -5
  134. package/src/vite/plugins/cjs-to-esm.ts +11 -0
  135. package/src/vite/plugins/client-ref-dedup.ts +21 -0
  136. package/src/vite/plugins/client-ref-hashing.ts +16 -4
  137. package/src/vite/plugins/cloudflare-protocol-loader-hook.d.mts +23 -0
  138. package/src/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
  139. package/src/vite/plugins/cloudflare-protocol-stub.ts +214 -0
  140. package/src/vite/plugins/expose-action-id.ts +52 -28
  141. package/src/vite/plugins/expose-id-utils.ts +12 -0
  142. package/src/vite/plugins/expose-ids/handler-transform.ts +30 -0
  143. package/src/vite/plugins/expose-ids/router-transform.ts +20 -3
  144. package/src/vite/plugins/expose-internal-ids.ts +563 -316
  145. package/src/vite/plugins/performance-tracks.ts +96 -0
  146. package/src/vite/plugins/refresh-cmd.ts +88 -26
  147. package/src/vite/plugins/use-cache-transform.ts +57 -43
  148. package/src/vite/rango.ts +63 -11
  149. package/src/vite/router-discovery.ts +389 -59
  150. package/src/vite/utils/banner.ts +1 -1
  151. package/src/vite/utils/package-resolution.ts +41 -1
  152. package/src/vite/utils/prerender-utils.ts +37 -5
  153. package/src/vite/utils/shared-utils.ts +3 -2
  154. package/dist/__internal.d.ts +0 -83
  155. package/dist/__internal.d.ts.map +0 -1
  156. package/dist/__internal.js +0 -19
  157. package/dist/__internal.js.map +0 -1
  158. package/dist/__mocks__/version.d.ts +0 -7
  159. package/dist/__mocks__/version.d.ts.map +0 -1
  160. package/dist/__mocks__/version.js +0 -7
  161. package/dist/__mocks__/version.js.map +0 -1
  162. package/dist/__tests__/client-href.test.d.ts +0 -2
  163. package/dist/__tests__/client-href.test.d.ts.map +0 -1
  164. package/dist/__tests__/client-href.test.js +0 -74
  165. package/dist/__tests__/client-href.test.js.map +0 -1
  166. package/dist/__tests__/component-utils.test.d.ts +0 -2
  167. package/dist/__tests__/component-utils.test.d.ts.map +0 -1
  168. package/dist/__tests__/component-utils.test.js +0 -51
  169. package/dist/__tests__/component-utils.test.js.map +0 -1
  170. package/dist/__tests__/event-controller.test.d.ts +0 -2
  171. package/dist/__tests__/event-controller.test.d.ts.map +0 -1
  172. package/dist/__tests__/event-controller.test.js +0 -538
  173. package/dist/__tests__/event-controller.test.js.map +0 -1
  174. package/dist/__tests__/helpers/route-tree.d.ts +0 -118
  175. package/dist/__tests__/helpers/route-tree.d.ts.map +0 -1
  176. package/dist/__tests__/helpers/route-tree.js +0 -374
  177. package/dist/__tests__/helpers/route-tree.js.map +0 -1
  178. package/dist/__tests__/match-result.test.d.ts +0 -2
  179. package/dist/__tests__/match-result.test.d.ts.map +0 -1
  180. package/dist/__tests__/match-result.test.js +0 -154
  181. package/dist/__tests__/match-result.test.js.map +0 -1
  182. package/dist/__tests__/navigation-store.test.d.ts +0 -2
  183. package/dist/__tests__/navigation-store.test.d.ts.map +0 -1
  184. package/dist/__tests__/navigation-store.test.js +0 -440
  185. package/dist/__tests__/navigation-store.test.js.map +0 -1
  186. package/dist/__tests__/partial-update.test.d.ts +0 -2
  187. package/dist/__tests__/partial-update.test.d.ts.map +0 -1
  188. package/dist/__tests__/partial-update.test.js +0 -1009
  189. package/dist/__tests__/partial-update.test.js.map +0 -1
  190. package/dist/__tests__/reverse-types.test.d.ts +0 -8
  191. package/dist/__tests__/reverse-types.test.d.ts.map +0 -1
  192. package/dist/__tests__/reverse-types.test.js +0 -656
  193. package/dist/__tests__/reverse-types.test.js.map +0 -1
  194. package/dist/__tests__/route-definition.test.d.ts +0 -2
  195. package/dist/__tests__/route-definition.test.d.ts.map +0 -1
  196. package/dist/__tests__/route-definition.test.js +0 -55
  197. package/dist/__tests__/route-definition.test.js.map +0 -1
  198. package/dist/__tests__/router-helpers.test.d.ts +0 -2
  199. package/dist/__tests__/router-helpers.test.d.ts.map +0 -1
  200. package/dist/__tests__/router-helpers.test.js +0 -377
  201. package/dist/__tests__/router-helpers.test.js.map +0 -1
  202. package/dist/__tests__/router-integration-2.test.d.ts +0 -2
  203. package/dist/__tests__/router-integration-2.test.d.ts.map +0 -1
  204. package/dist/__tests__/router-integration-2.test.js +0 -426
  205. package/dist/__tests__/router-integration-2.test.js.map +0 -1
  206. package/dist/__tests__/router-integration.test.d.ts +0 -2
  207. package/dist/__tests__/router-integration.test.d.ts.map +0 -1
  208. package/dist/__tests__/router-integration.test.js +0 -1051
  209. package/dist/__tests__/router-integration.test.js.map +0 -1
  210. package/dist/__tests__/search-params.test.d.ts +0 -5
  211. package/dist/__tests__/search-params.test.d.ts.map +0 -1
  212. package/dist/__tests__/search-params.test.js +0 -306
  213. package/dist/__tests__/search-params.test.js.map +0 -1
  214. package/dist/__tests__/segment-system.test.d.ts +0 -2
  215. package/dist/__tests__/segment-system.test.d.ts.map +0 -1
  216. package/dist/__tests__/segment-system.test.js +0 -627
  217. package/dist/__tests__/segment-system.test.js.map +0 -1
  218. package/dist/__tests__/static-handler-types.test.d.ts +0 -8
  219. package/dist/__tests__/static-handler-types.test.d.ts.map +0 -1
  220. package/dist/__tests__/static-handler-types.test.js +0 -63
  221. package/dist/__tests__/static-handler-types.test.js.map +0 -1
  222. package/dist/__tests__/urls.test.d.ts +0 -2
  223. package/dist/__tests__/urls.test.d.ts.map +0 -1
  224. package/dist/__tests__/urls.test.js +0 -421
  225. package/dist/__tests__/urls.test.js.map +0 -1
  226. package/dist/__tests__/use-mount.test.d.ts +0 -2
  227. package/dist/__tests__/use-mount.test.d.ts.map +0 -1
  228. package/dist/__tests__/use-mount.test.js +0 -35
  229. package/dist/__tests__/use-mount.test.js.map +0 -1
  230. package/dist/bin/rango.d.ts +0 -2
  231. package/dist/bin/rango.d.ts.map +0 -1
  232. package/dist/bin/rango.js.map +0 -1
  233. package/dist/browser/event-controller.d.ts +0 -191
  234. package/dist/browser/event-controller.d.ts.map +0 -1
  235. package/dist/browser/event-controller.js +0 -559
  236. package/dist/browser/event-controller.js.map +0 -1
  237. package/dist/browser/index.d.ts +0 -2
  238. package/dist/browser/index.d.ts.map +0 -1
  239. package/dist/browser/index.js +0 -14
  240. package/dist/browser/index.js.map +0 -1
  241. package/dist/browser/link-interceptor.d.ts +0 -38
  242. package/dist/browser/link-interceptor.d.ts.map +0 -1
  243. package/dist/browser/link-interceptor.js +0 -99
  244. package/dist/browser/link-interceptor.js.map +0 -1
  245. package/dist/browser/logging.d.ts +0 -10
  246. package/dist/browser/logging.d.ts.map +0 -1
  247. package/dist/browser/logging.js +0 -29
  248. package/dist/browser/logging.js.map +0 -1
  249. package/dist/browser/lru-cache.d.ts +0 -17
  250. package/dist/browser/lru-cache.d.ts.map +0 -1
  251. package/dist/browser/lru-cache.js +0 -50
  252. package/dist/browser/lru-cache.js.map +0 -1
  253. package/dist/browser/merge-segment-loaders.d.ts +0 -39
  254. package/dist/browser/merge-segment-loaders.d.ts.map +0 -1
  255. package/dist/browser/merge-segment-loaders.js +0 -102
  256. package/dist/browser/merge-segment-loaders.js.map +0 -1
  257. package/dist/browser/navigation-bridge.d.ts +0 -102
  258. package/dist/browser/navigation-bridge.d.ts.map +0 -1
  259. package/dist/browser/navigation-bridge.js +0 -708
  260. package/dist/browser/navigation-bridge.js.map +0 -1
  261. package/dist/browser/navigation-client.d.ts +0 -25
  262. package/dist/browser/navigation-client.d.ts.map +0 -1
  263. package/dist/browser/navigation-client.js +0 -157
  264. package/dist/browser/navigation-client.js.map +0 -1
  265. package/dist/browser/navigation-store.d.ts +0 -101
  266. package/dist/browser/navigation-store.d.ts.map +0 -1
  267. package/dist/browser/navigation-store.js +0 -625
  268. package/dist/browser/navigation-store.js.map +0 -1
  269. package/dist/browser/partial-update.d.ts +0 -75
  270. package/dist/browser/partial-update.d.ts.map +0 -1
  271. package/dist/browser/partial-update.js +0 -426
  272. package/dist/browser/partial-update.js.map +0 -1
  273. package/dist/browser/react/Link.d.ts +0 -86
  274. package/dist/browser/react/Link.d.ts.map +0 -1
  275. package/dist/browser/react/Link.js +0 -128
  276. package/dist/browser/react/Link.js.map +0 -1
  277. package/dist/browser/react/NavigationProvider.d.ts +0 -63
  278. package/dist/browser/react/NavigationProvider.d.ts.map +0 -1
  279. package/dist/browser/react/NavigationProvider.js +0 -216
  280. package/dist/browser/react/NavigationProvider.js.map +0 -1
  281. package/dist/browser/react/ScrollRestoration.d.ts +0 -75
  282. package/dist/browser/react/ScrollRestoration.d.ts.map +0 -1
  283. package/dist/browser/react/ScrollRestoration.js +0 -57
  284. package/dist/browser/react/ScrollRestoration.js.map +0 -1
  285. package/dist/browser/react/context.d.ts +0 -46
  286. package/dist/browser/react/context.d.ts.map +0 -1
  287. package/dist/browser/react/context.js +0 -10
  288. package/dist/browser/react/context.js.map +0 -1
  289. package/dist/browser/react/index.d.ts +0 -11
  290. package/dist/browser/react/index.d.ts.map +0 -1
  291. package/dist/browser/react/index.js +0 -22
  292. package/dist/browser/react/index.js.map +0 -1
  293. package/dist/browser/react/location-state-shared.d.ts +0 -63
  294. package/dist/browser/react/location-state-shared.d.ts.map +0 -1
  295. package/dist/browser/react/location-state-shared.js +0 -81
  296. package/dist/browser/react/location-state-shared.js.map +0 -1
  297. package/dist/browser/react/location-state.d.ts +0 -23
  298. package/dist/browser/react/location-state.d.ts.map +0 -1
  299. package/dist/browser/react/location-state.js +0 -29
  300. package/dist/browser/react/location-state.js.map +0 -1
  301. package/dist/browser/react/mount-context.d.ts +0 -24
  302. package/dist/browser/react/mount-context.d.ts.map +0 -1
  303. package/dist/browser/react/mount-context.js +0 -24
  304. package/dist/browser/react/mount-context.js.map +0 -1
  305. package/dist/browser/react/use-action.d.ts +0 -64
  306. package/dist/browser/react/use-action.d.ts.map +0 -1
  307. package/dist/browser/react/use-action.js +0 -134
  308. package/dist/browser/react/use-action.js.map +0 -1
  309. package/dist/browser/react/use-client-cache.d.ts +0 -41
  310. package/dist/browser/react/use-client-cache.d.ts.map +0 -1
  311. package/dist/browser/react/use-client-cache.js +0 -39
  312. package/dist/browser/react/use-client-cache.js.map +0 -1
  313. package/dist/browser/react/use-handle.d.ts +0 -31
  314. package/dist/browser/react/use-handle.d.ts.map +0 -1
  315. package/dist/browser/react/use-handle.js +0 -144
  316. package/dist/browser/react/use-handle.js.map +0 -1
  317. package/dist/browser/react/use-href.d.ts +0 -33
  318. package/dist/browser/react/use-href.d.ts.map +0 -1
  319. package/dist/browser/react/use-href.js +0 -39
  320. package/dist/browser/react/use-href.js.map +0 -1
  321. package/dist/browser/react/use-link-status.d.ts +0 -37
  322. package/dist/browser/react/use-link-status.d.ts.map +0 -1
  323. package/dist/browser/react/use-link-status.js +0 -99
  324. package/dist/browser/react/use-link-status.js.map +0 -1
  325. package/dist/browser/react/use-mount.d.ts +0 -25
  326. package/dist/browser/react/use-mount.d.ts.map +0 -1
  327. package/dist/browser/react/use-mount.js +0 -30
  328. package/dist/browser/react/use-mount.js.map +0 -1
  329. package/dist/browser/react/use-navigation.d.ts +0 -27
  330. package/dist/browser/react/use-navigation.d.ts.map +0 -1
  331. package/dist/browser/react/use-navigation.js +0 -87
  332. package/dist/browser/react/use-navigation.js.map +0 -1
  333. package/dist/browser/react/use-segments.d.ts +0 -38
  334. package/dist/browser/react/use-segments.d.ts.map +0 -1
  335. package/dist/browser/react/use-segments.js +0 -130
  336. package/dist/browser/react/use-segments.js.map +0 -1
  337. package/dist/browser/request-controller.d.ts +0 -26
  338. package/dist/browser/request-controller.d.ts.map +0 -1
  339. package/dist/browser/request-controller.js +0 -147
  340. package/dist/browser/request-controller.js.map +0 -1
  341. package/dist/browser/rsc-router.d.ts +0 -129
  342. package/dist/browser/rsc-router.d.ts.map +0 -1
  343. package/dist/browser/rsc-router.js +0 -195
  344. package/dist/browser/rsc-router.js.map +0 -1
  345. package/dist/browser/scroll-restoration.d.ts +0 -93
  346. package/dist/browser/scroll-restoration.d.ts.map +0 -1
  347. package/dist/browser/scroll-restoration.js +0 -321
  348. package/dist/browser/scroll-restoration.js.map +0 -1
  349. package/dist/browser/segment-structure-assert.d.ts +0 -17
  350. package/dist/browser/segment-structure-assert.d.ts.map +0 -1
  351. package/dist/browser/segment-structure-assert.js +0 -59
  352. package/dist/browser/segment-structure-assert.js.map +0 -1
  353. package/dist/browser/server-action-bridge.d.ts +0 -26
  354. package/dist/browser/server-action-bridge.d.ts.map +0 -1
  355. package/dist/browser/server-action-bridge.js +0 -668
  356. package/dist/browser/server-action-bridge.js.map +0 -1
  357. package/dist/browser/shallow.d.ts +0 -12
  358. package/dist/browser/shallow.d.ts.map +0 -1
  359. package/dist/browser/shallow.js +0 -34
  360. package/dist/browser/shallow.js.map +0 -1
  361. package/dist/browser/types.d.ts +0 -369
  362. package/dist/browser/types.d.ts.map +0 -1
  363. package/dist/browser/types.js +0 -2
  364. package/dist/browser/types.js.map +0 -1
  365. package/dist/build/__tests__/generate-cli.test.d.ts +0 -2
  366. package/dist/build/__tests__/generate-cli.test.d.ts.map +0 -1
  367. package/dist/build/__tests__/generate-cli.test.js +0 -237
  368. package/dist/build/__tests__/generate-cli.test.js.map +0 -1
  369. package/dist/build/__tests__/generate-manifest.test.d.ts +0 -2
  370. package/dist/build/__tests__/generate-manifest.test.d.ts.map +0 -1
  371. package/dist/build/__tests__/generate-manifest.test.js +0 -119
  372. package/dist/build/__tests__/generate-manifest.test.js.map +0 -1
  373. package/dist/build/__tests__/generate-route-types.test.d.ts +0 -2
  374. package/dist/build/__tests__/generate-route-types.test.d.ts.map +0 -1
  375. package/dist/build/__tests__/generate-route-types.test.js +0 -620
  376. package/dist/build/__tests__/generate-route-types.test.js.map +0 -1
  377. package/dist/build/__tests__/per-router-manifest.test.d.ts +0 -2
  378. package/dist/build/__tests__/per-router-manifest.test.d.ts.map +0 -1
  379. package/dist/build/__tests__/per-router-manifest.test.js +0 -308
  380. package/dist/build/__tests__/per-router-manifest.test.js.map +0 -1
  381. package/dist/build/generate-manifest.d.ts +0 -81
  382. package/dist/build/generate-manifest.d.ts.map +0 -1
  383. package/dist/build/generate-manifest.js +0 -276
  384. package/dist/build/generate-manifest.js.map +0 -1
  385. package/dist/build/generate-route-types.d.ts +0 -115
  386. package/dist/build/generate-route-types.d.ts.map +0 -1
  387. package/dist/build/generate-route-types.js +0 -740
  388. package/dist/build/generate-route-types.js.map +0 -1
  389. package/dist/build/index.d.ts +0 -21
  390. package/dist/build/index.d.ts.map +0 -1
  391. package/dist/build/index.js +0 -21
  392. package/dist/build/index.js.map +0 -1
  393. package/dist/build/route-trie.d.ts +0 -71
  394. package/dist/build/route-trie.d.ts.map +0 -1
  395. package/dist/build/route-trie.js +0 -175
  396. package/dist/build/route-trie.js.map +0 -1
  397. package/dist/cache/__tests__/cache-scope.test.d.ts +0 -2
  398. package/dist/cache/__tests__/cache-scope.test.d.ts.map +0 -1
  399. package/dist/cache/__tests__/cache-scope.test.js +0 -208
  400. package/dist/cache/__tests__/cache-scope.test.js.map +0 -1
  401. package/dist/cache/__tests__/document-cache.test.d.ts +0 -2
  402. package/dist/cache/__tests__/document-cache.test.d.ts.map +0 -1
  403. package/dist/cache/__tests__/document-cache.test.js +0 -345
  404. package/dist/cache/__tests__/document-cache.test.js.map +0 -1
  405. package/dist/cache/__tests__/memory-segment-store.test.d.ts +0 -2
  406. package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +0 -1
  407. package/dist/cache/__tests__/memory-segment-store.test.js +0 -425
  408. package/dist/cache/__tests__/memory-segment-store.test.js.map +0 -1
  409. package/dist/cache/__tests__/memory-store.test.d.ts +0 -2
  410. package/dist/cache/__tests__/memory-store.test.d.ts.map +0 -1
  411. package/dist/cache/__tests__/memory-store.test.js +0 -367
  412. package/dist/cache/__tests__/memory-store.test.js.map +0 -1
  413. package/dist/cache/cache-scope.d.ts +0 -102
  414. package/dist/cache/cache-scope.d.ts.map +0 -1
  415. package/dist/cache/cache-scope.js +0 -440
  416. package/dist/cache/cache-scope.js.map +0 -1
  417. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +0 -2
  418. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +0 -1
  419. package/dist/cache/cf/__tests__/cf-cache-store.test.js +0 -330
  420. package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +0 -1
  421. package/dist/cache/cf/cf-cache-store.d.ts +0 -165
  422. package/dist/cache/cf/cf-cache-store.d.ts.map +0 -1
  423. package/dist/cache/cf/cf-cache-store.js +0 -242
  424. package/dist/cache/cf/cf-cache-store.js.map +0 -1
  425. package/dist/cache/cf/index.d.ts +0 -14
  426. package/dist/cache/cf/index.d.ts.map +0 -1
  427. package/dist/cache/cf/index.js +0 -17
  428. package/dist/cache/cf/index.js.map +0 -1
  429. package/dist/cache/document-cache.d.ts +0 -64
  430. package/dist/cache/document-cache.d.ts.map +0 -1
  431. package/dist/cache/document-cache.js +0 -228
  432. package/dist/cache/document-cache.js.map +0 -1
  433. package/dist/cache/index.d.ts +0 -19
  434. package/dist/cache/index.d.ts.map +0 -1
  435. package/dist/cache/index.js +0 -21
  436. package/dist/cache/index.js.map +0 -1
  437. package/dist/cache/memory-segment-store.d.ts +0 -110
  438. package/dist/cache/memory-segment-store.d.ts.map +0 -1
  439. package/dist/cache/memory-segment-store.js +0 -117
  440. package/dist/cache/memory-segment-store.js.map +0 -1
  441. package/dist/cache/memory-store.d.ts +0 -41
  442. package/dist/cache/memory-store.d.ts.map +0 -1
  443. package/dist/cache/memory-store.js +0 -191
  444. package/dist/cache/memory-store.js.map +0 -1
  445. package/dist/cache/types.d.ts +0 -317
  446. package/dist/cache/types.d.ts.map +0 -1
  447. package/dist/cache/types.js +0 -12
  448. package/dist/cache/types.js.map +0 -1
  449. package/dist/client.d.ts +0 -248
  450. package/dist/client.d.ts.map +0 -1
  451. package/dist/client.js +0 -367
  452. package/dist/client.js.map +0 -1
  453. package/dist/client.rsc.d.ts +0 -26
  454. package/dist/client.rsc.d.ts.map +0 -1
  455. package/dist/client.rsc.js +0 -46
  456. package/dist/client.rsc.js.map +0 -1
  457. package/dist/component-utils.d.ts +0 -36
  458. package/dist/component-utils.d.ts.map +0 -1
  459. package/dist/component-utils.js +0 -61
  460. package/dist/component-utils.js.map +0 -1
  461. package/dist/components/DefaultDocument.d.ts +0 -13
  462. package/dist/components/DefaultDocument.d.ts.map +0 -1
  463. package/dist/components/DefaultDocument.js +0 -15
  464. package/dist/components/DefaultDocument.js.map +0 -1
  465. package/dist/debug.d.ts +0 -58
  466. package/dist/debug.d.ts.map +0 -1
  467. package/dist/debug.js +0 -157
  468. package/dist/debug.js.map +0 -1
  469. package/dist/default-error-boundary.d.ts +0 -11
  470. package/dist/default-error-boundary.d.ts.map +0 -1
  471. package/dist/default-error-boundary.js +0 -45
  472. package/dist/default-error-boundary.js.map +0 -1
  473. package/dist/deps/browser.d.ts +0 -2
  474. package/dist/deps/browser.d.ts.map +0 -1
  475. package/dist/deps/browser.js +0 -3
  476. package/dist/deps/browser.js.map +0 -1
  477. package/dist/deps/html-stream-client.d.ts +0 -2
  478. package/dist/deps/html-stream-client.d.ts.map +0 -1
  479. package/dist/deps/html-stream-client.js +0 -3
  480. package/dist/deps/html-stream-client.js.map +0 -1
  481. package/dist/deps/html-stream-server.d.ts +0 -2
  482. package/dist/deps/html-stream-server.d.ts.map +0 -1
  483. package/dist/deps/html-stream-server.js +0 -3
  484. package/dist/deps/html-stream-server.js.map +0 -1
  485. package/dist/deps/rsc.d.ts +0 -2
  486. package/dist/deps/rsc.d.ts.map +0 -1
  487. package/dist/deps/rsc.js +0 -4
  488. package/dist/deps/rsc.js.map +0 -1
  489. package/dist/deps/ssr.d.ts +0 -2
  490. package/dist/deps/ssr.d.ts.map +0 -1
  491. package/dist/deps/ssr.js +0 -3
  492. package/dist/deps/ssr.js.map +0 -1
  493. package/dist/errors.d.ts +0 -174
  494. package/dist/errors.d.ts.map +0 -1
  495. package/dist/errors.js +0 -241
  496. package/dist/errors.js.map +0 -1
  497. package/dist/handle.d.ts +0 -78
  498. package/dist/handle.d.ts.map +0 -1
  499. package/dist/handle.js +0 -82
  500. package/dist/handle.js.map +0 -1
  501. package/dist/handles/MetaTags.d.ts +0 -14
  502. package/dist/handles/MetaTags.d.ts.map +0 -1
  503. package/dist/handles/MetaTags.js +0 -136
  504. package/dist/handles/MetaTags.js.map +0 -1
  505. package/dist/handles/index.d.ts +0 -6
  506. package/dist/handles/index.d.ts.map +0 -1
  507. package/dist/handles/index.js +0 -6
  508. package/dist/handles/index.js.map +0 -1
  509. package/dist/handles/meta.d.ts +0 -39
  510. package/dist/handles/meta.d.ts.map +0 -1
  511. package/dist/handles/meta.js +0 -202
  512. package/dist/handles/meta.js.map +0 -1
  513. package/dist/host/__tests__/errors.test.d.ts +0 -2
  514. package/dist/host/__tests__/errors.test.d.ts.map +0 -1
  515. package/dist/host/__tests__/errors.test.js +0 -76
  516. package/dist/host/__tests__/errors.test.js.map +0 -1
  517. package/dist/host/__tests__/pattern-comprehensive.test.d.ts +0 -2
  518. package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +0 -1
  519. package/dist/host/__tests__/pattern-comprehensive.test.js +0 -732
  520. package/dist/host/__tests__/pattern-comprehensive.test.js.map +0 -1
  521. package/dist/host/__tests__/pattern-matcher.test.d.ts +0 -2
  522. package/dist/host/__tests__/pattern-matcher.test.d.ts.map +0 -1
  523. package/dist/host/__tests__/pattern-matcher.test.js +0 -251
  524. package/dist/host/__tests__/pattern-matcher.test.js.map +0 -1
  525. package/dist/host/__tests__/router.test.d.ts +0 -2
  526. package/dist/host/__tests__/router.test.d.ts.map +0 -1
  527. package/dist/host/__tests__/router.test.js +0 -241
  528. package/dist/host/__tests__/router.test.js.map +0 -1
  529. package/dist/host/__tests__/testing.test.d.ts +0 -2
  530. package/dist/host/__tests__/testing.test.d.ts.map +0 -1
  531. package/dist/host/__tests__/testing.test.js +0 -64
  532. package/dist/host/__tests__/testing.test.js.map +0 -1
  533. package/dist/host/__tests__/utils.test.d.ts +0 -2
  534. package/dist/host/__tests__/utils.test.d.ts.map +0 -1
  535. package/dist/host/__tests__/utils.test.js +0 -29
  536. package/dist/host/__tests__/utils.test.js.map +0 -1
  537. package/dist/host/cookie-handler.d.ts +0 -34
  538. package/dist/host/cookie-handler.d.ts.map +0 -1
  539. package/dist/host/cookie-handler.js +0 -124
  540. package/dist/host/cookie-handler.js.map +0 -1
  541. package/dist/host/errors.d.ts +0 -56
  542. package/dist/host/errors.d.ts.map +0 -1
  543. package/dist/host/errors.js +0 -79
  544. package/dist/host/errors.js.map +0 -1
  545. package/dist/host/index.d.ts +0 -29
  546. package/dist/host/index.d.ts.map +0 -1
  547. package/dist/host/index.js +0 -32
  548. package/dist/host/index.js.map +0 -1
  549. package/dist/host/pattern-matcher.d.ts +0 -36
  550. package/dist/host/pattern-matcher.d.ts.map +0 -1
  551. package/dist/host/pattern-matcher.js +0 -172
  552. package/dist/host/pattern-matcher.js.map +0 -1
  553. package/dist/host/router.d.ts +0 -26
  554. package/dist/host/router.d.ts.map +0 -1
  555. package/dist/host/router.js +0 -218
  556. package/dist/host/router.js.map +0 -1
  557. package/dist/host/testing.d.ts +0 -36
  558. package/dist/host/testing.d.ts.map +0 -1
  559. package/dist/host/testing.js +0 -55
  560. package/dist/host/testing.js.map +0 -1
  561. package/dist/host/types.d.ts +0 -115
  562. package/dist/host/types.d.ts.map +0 -1
  563. package/dist/host/types.js +0 -7
  564. package/dist/host/types.js.map +0 -1
  565. package/dist/host/utils.d.ts +0 -21
  566. package/dist/host/utils.d.ts.map +0 -1
  567. package/dist/host/utils.js +0 -23
  568. package/dist/host/utils.js.map +0 -1
  569. package/dist/href-client.d.ts +0 -131
  570. package/dist/href-client.d.ts.map +0 -1
  571. package/dist/href-client.js +0 -64
  572. package/dist/href-client.js.map +0 -1
  573. package/dist/href-context.d.ts +0 -29
  574. package/dist/href-context.d.ts.map +0 -1
  575. package/dist/href-context.js +0 -21
  576. package/dist/href-context.js.map +0 -1
  577. package/dist/index.d.ts +0 -73
  578. package/dist/index.d.ts.map +0 -1
  579. package/dist/index.js +0 -91
  580. package/dist/index.js.map +0 -1
  581. package/dist/index.rsc.d.ts +0 -32
  582. package/dist/index.rsc.d.ts.map +0 -1
  583. package/dist/index.rsc.js +0 -40
  584. package/dist/index.rsc.js.map +0 -1
  585. package/dist/internal-debug.d.ts +0 -2
  586. package/dist/internal-debug.d.ts.map +0 -1
  587. package/dist/internal-debug.js +0 -5
  588. package/dist/internal-debug.js.map +0 -1
  589. package/dist/loader.d.ts +0 -14
  590. package/dist/loader.d.ts.map +0 -1
  591. package/dist/loader.js +0 -20
  592. package/dist/loader.js.map +0 -1
  593. package/dist/loader.rsc.d.ts +0 -19
  594. package/dist/loader.rsc.d.ts.map +0 -1
  595. package/dist/loader.rsc.js +0 -99
  596. package/dist/loader.rsc.js.map +0 -1
  597. package/dist/network-error-thrower.d.ts +0 -17
  598. package/dist/network-error-thrower.d.ts.map +0 -1
  599. package/dist/network-error-thrower.js +0 -14
  600. package/dist/network-error-thrower.js.map +0 -1
  601. package/dist/outlet-context.d.ts +0 -13
  602. package/dist/outlet-context.d.ts.map +0 -1
  603. package/dist/outlet-context.js +0 -3
  604. package/dist/outlet-context.js.map +0 -1
  605. package/dist/prerender/__tests__/param-hash.test.d.ts +0 -2
  606. package/dist/prerender/__tests__/param-hash.test.d.ts.map +0 -1
  607. package/dist/prerender/__tests__/param-hash.test.js +0 -148
  608. package/dist/prerender/__tests__/param-hash.test.js.map +0 -1
  609. package/dist/prerender/param-hash.d.ts +0 -16
  610. package/dist/prerender/param-hash.d.ts.map +0 -1
  611. package/dist/prerender/param-hash.js +0 -36
  612. package/dist/prerender/param-hash.js.map +0 -1
  613. package/dist/prerender/store.d.ts +0 -38
  614. package/dist/prerender/store.d.ts.map +0 -1
  615. package/dist/prerender/store.js +0 -61
  616. package/dist/prerender/store.js.map +0 -1
  617. package/dist/prerender.d.ts +0 -66
  618. package/dist/prerender.d.ts.map +0 -1
  619. package/dist/prerender.js +0 -57
  620. package/dist/prerender.js.map +0 -1
  621. package/dist/reverse.d.ts +0 -196
  622. package/dist/reverse.d.ts.map +0 -1
  623. package/dist/reverse.js +0 -78
  624. package/dist/reverse.js.map +0 -1
  625. package/dist/root-error-boundary.d.ts +0 -33
  626. package/dist/root-error-boundary.d.ts.map +0 -1
  627. package/dist/root-error-boundary.js +0 -165
  628. package/dist/root-error-boundary.js.map +0 -1
  629. package/dist/route-content-wrapper.d.ts +0 -46
  630. package/dist/route-content-wrapper.d.ts.map +0 -1
  631. package/dist/route-content-wrapper.js +0 -77
  632. package/dist/route-content-wrapper.js.map +0 -1
  633. package/dist/route-definition.d.ts +0 -421
  634. package/dist/route-definition.d.ts.map +0 -1
  635. package/dist/route-definition.js +0 -868
  636. package/dist/route-definition.js.map +0 -1
  637. package/dist/route-map-builder.d.ts +0 -155
  638. package/dist/route-map-builder.d.ts.map +0 -1
  639. package/dist/route-map-builder.js +0 -237
  640. package/dist/route-map-builder.js.map +0 -1
  641. package/dist/route-types.d.ts +0 -165
  642. package/dist/route-types.d.ts.map +0 -1
  643. package/dist/route-types.js +0 -7
  644. package/dist/route-types.js.map +0 -1
  645. package/dist/router/__tests__/handler-context.test.d.ts +0 -2
  646. package/dist/router/__tests__/handler-context.test.d.ts.map +0 -1
  647. package/dist/router/__tests__/handler-context.test.js +0 -65
  648. package/dist/router/__tests__/handler-context.test.js.map +0 -1
  649. package/dist/router/__tests__/loader-cycle-detection.test.d.ts +0 -2
  650. package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +0 -1
  651. package/dist/router/__tests__/loader-cycle-detection.test.js +0 -221
  652. package/dist/router/__tests__/loader-cycle-detection.test.js.map +0 -1
  653. package/dist/router/__tests__/match-context.test.d.ts +0 -2
  654. package/dist/router/__tests__/match-context.test.d.ts.map +0 -1
  655. package/dist/router/__tests__/match-context.test.js +0 -92
  656. package/dist/router/__tests__/match-context.test.js.map +0 -1
  657. package/dist/router/__tests__/match-pipelines.test.d.ts +0 -2
  658. package/dist/router/__tests__/match-pipelines.test.d.ts.map +0 -1
  659. package/dist/router/__tests__/match-pipelines.test.js +0 -417
  660. package/dist/router/__tests__/match-pipelines.test.js.map +0 -1
  661. package/dist/router/__tests__/match-result.test.d.ts +0 -2
  662. package/dist/router/__tests__/match-result.test.d.ts.map +0 -1
  663. package/dist/router/__tests__/match-result.test.js +0 -457
  664. package/dist/router/__tests__/match-result.test.js.map +0 -1
  665. package/dist/router/__tests__/on-error.test.d.ts +0 -2
  666. package/dist/router/__tests__/on-error.test.d.ts.map +0 -1
  667. package/dist/router/__tests__/on-error.test.js +0 -678
  668. package/dist/router/__tests__/on-error.test.js.map +0 -1
  669. package/dist/router/__tests__/pattern-matching.test.d.ts +0 -2
  670. package/dist/router/__tests__/pattern-matching.test.d.ts.map +0 -1
  671. package/dist/router/__tests__/pattern-matching.test.js +0 -629
  672. package/dist/router/__tests__/pattern-matching.test.js.map +0 -1
  673. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +0 -2
  674. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +0 -1
  675. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +0 -155
  676. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +0 -1
  677. package/dist/router/error-handling.d.ts +0 -77
  678. package/dist/router/error-handling.d.ts.map +0 -1
  679. package/dist/router/error-handling.js +0 -202
  680. package/dist/router/error-handling.js.map +0 -1
  681. package/dist/router/handler-context.d.ts +0 -20
  682. package/dist/router/handler-context.d.ts.map +0 -1
  683. package/dist/router/handler-context.js +0 -198
  684. package/dist/router/handler-context.js.map +0 -1
  685. package/dist/router/intercept-resolution.d.ts +0 -66
  686. package/dist/router/intercept-resolution.d.ts.map +0 -1
  687. package/dist/router/intercept-resolution.js +0 -246
  688. package/dist/router/intercept-resolution.js.map +0 -1
  689. package/dist/router/loader-resolution.d.ts +0 -64
  690. package/dist/router/loader-resolution.d.ts.map +0 -1
  691. package/dist/router/loader-resolution.js +0 -284
  692. package/dist/router/loader-resolution.js.map +0 -1
  693. package/dist/router/logging.d.ts +0 -15
  694. package/dist/router/logging.d.ts.map +0 -1
  695. package/dist/router/logging.js +0 -99
  696. package/dist/router/logging.js.map +0 -1
  697. package/dist/router/manifest.d.ts +0 -22
  698. package/dist/router/manifest.d.ts.map +0 -1
  699. package/dist/router/manifest.js +0 -181
  700. package/dist/router/manifest.js.map +0 -1
  701. package/dist/router/match-api.d.ts +0 -35
  702. package/dist/router/match-api.d.ts.map +0 -1
  703. package/dist/router/match-api.js +0 -406
  704. package/dist/router/match-api.js.map +0 -1
  705. package/dist/router/match-context.d.ts +0 -206
  706. package/dist/router/match-context.d.ts.map +0 -1
  707. package/dist/router/match-context.js +0 -17
  708. package/dist/router/match-context.js.map +0 -1
  709. package/dist/router/match-middleware/background-revalidation.d.ts +0 -127
  710. package/dist/router/match-middleware/background-revalidation.d.ts.map +0 -1
  711. package/dist/router/match-middleware/background-revalidation.js +0 -75
  712. package/dist/router/match-middleware/background-revalidation.js.map +0 -1
  713. package/dist/router/match-middleware/cache-lookup.d.ts +0 -112
  714. package/dist/router/match-middleware/cache-lookup.d.ts.map +0 -1
  715. package/dist/router/match-middleware/cache-lookup.js +0 -257
  716. package/dist/router/match-middleware/cache-lookup.js.map +0 -1
  717. package/dist/router/match-middleware/cache-store.d.ts +0 -113
  718. package/dist/router/match-middleware/cache-store.d.ts.map +0 -1
  719. package/dist/router/match-middleware/cache-store.js +0 -108
  720. package/dist/router/match-middleware/cache-store.js.map +0 -1
  721. package/dist/router/match-middleware/index.d.ts +0 -81
  722. package/dist/router/match-middleware/index.d.ts.map +0 -1
  723. package/dist/router/match-middleware/index.js +0 -80
  724. package/dist/router/match-middleware/index.js.map +0 -1
  725. package/dist/router/match-middleware/intercept-resolution.d.ts +0 -117
  726. package/dist/router/match-middleware/intercept-resolution.d.ts.map +0 -1
  727. package/dist/router/match-middleware/intercept-resolution.js +0 -134
  728. package/dist/router/match-middleware/intercept-resolution.js.map +0 -1
  729. package/dist/router/match-middleware/segment-resolution.d.ts +0 -99
  730. package/dist/router/match-middleware/segment-resolution.d.ts.map +0 -1
  731. package/dist/router/match-middleware/segment-resolution.js +0 -53
  732. package/dist/router/match-middleware/segment-resolution.js.map +0 -1
  733. package/dist/router/match-pipelines.d.ts +0 -147
  734. package/dist/router/match-pipelines.d.ts.map +0 -1
  735. package/dist/router/match-pipelines.js +0 -82
  736. package/dist/router/match-pipelines.js.map +0 -1
  737. package/dist/router/match-result.d.ts +0 -126
  738. package/dist/router/match-result.d.ts.map +0 -1
  739. package/dist/router/match-result.js +0 -93
  740. package/dist/router/match-result.js.map +0 -1
  741. package/dist/router/metrics.d.ts +0 -20
  742. package/dist/router/metrics.d.ts.map +0 -1
  743. package/dist/router/metrics.js +0 -47
  744. package/dist/router/metrics.js.map +0 -1
  745. package/dist/router/middleware.d.ts +0 -249
  746. package/dist/router/middleware.d.ts.map +0 -1
  747. package/dist/router/middleware.js +0 -434
  748. package/dist/router/middleware.js.map +0 -1
  749. package/dist/router/middleware.test.d.ts +0 -2
  750. package/dist/router/middleware.test.d.ts.map +0 -1
  751. package/dist/router/middleware.test.js +0 -816
  752. package/dist/router/middleware.test.js.map +0 -1
  753. package/dist/router/pattern-matching.d.ts +0 -149
  754. package/dist/router/pattern-matching.d.ts.map +0 -1
  755. package/dist/router/pattern-matching.js +0 -349
  756. package/dist/router/pattern-matching.js.map +0 -1
  757. package/dist/router/revalidation.d.ts +0 -44
  758. package/dist/router/revalidation.d.ts.map +0 -1
  759. package/dist/router/revalidation.js +0 -147
  760. package/dist/router/revalidation.js.map +0 -1
  761. package/dist/router/router-context.d.ts +0 -135
  762. package/dist/router/router-context.d.ts.map +0 -1
  763. package/dist/router/router-context.js +0 -36
  764. package/dist/router/router-context.js.map +0 -1
  765. package/dist/router/segment-resolution.d.ts +0 -127
  766. package/dist/router/segment-resolution.d.ts.map +0 -1
  767. package/dist/router/segment-resolution.js +0 -919
  768. package/dist/router/segment-resolution.js.map +0 -1
  769. package/dist/router/trie-matching.d.ts +0 -40
  770. package/dist/router/trie-matching.d.ts.map +0 -1
  771. package/dist/router/trie-matching.js +0 -127
  772. package/dist/router/trie-matching.js.map +0 -1
  773. package/dist/router/types.d.ts +0 -136
  774. package/dist/router/types.d.ts.map +0 -1
  775. package/dist/router/types.js +0 -7
  776. package/dist/router/types.js.map +0 -1
  777. package/dist/router.d.ts +0 -753
  778. package/dist/router.d.ts.map +0 -1
  779. package/dist/router.gen.d.ts +0 -6
  780. package/dist/router.gen.d.ts.map +0 -1
  781. package/dist/router.gen.js +0 -6
  782. package/dist/router.gen.js.map +0 -1
  783. package/dist/router.js +0 -1304
  784. package/dist/router.js.map +0 -1
  785. package/dist/rsc/__tests__/helpers.test.d.ts +0 -2
  786. package/dist/rsc/__tests__/helpers.test.d.ts.map +0 -1
  787. package/dist/rsc/__tests__/helpers.test.js +0 -140
  788. package/dist/rsc/__tests__/helpers.test.js.map +0 -1
  789. package/dist/rsc/handler.d.ts +0 -45
  790. package/dist/rsc/handler.d.ts.map +0 -1
  791. package/dist/rsc/handler.js +0 -1172
  792. package/dist/rsc/handler.js.map +0 -1
  793. package/dist/rsc/helpers.d.ts +0 -16
  794. package/dist/rsc/helpers.d.ts.map +0 -1
  795. package/dist/rsc/helpers.js +0 -55
  796. package/dist/rsc/helpers.js.map +0 -1
  797. package/dist/rsc/index.d.ts +0 -22
  798. package/dist/rsc/index.d.ts.map +0 -1
  799. package/dist/rsc/index.js +0 -23
  800. package/dist/rsc/index.js.map +0 -1
  801. package/dist/rsc/nonce.d.ts +0 -9
  802. package/dist/rsc/nonce.d.ts.map +0 -1
  803. package/dist/rsc/nonce.js +0 -18
  804. package/dist/rsc/nonce.js.map +0 -1
  805. package/dist/rsc/types.d.ts +0 -206
  806. package/dist/rsc/types.d.ts.map +0 -1
  807. package/dist/rsc/types.js +0 -8
  808. package/dist/rsc/types.js.map +0 -1
  809. package/dist/search-params.d.ts +0 -103
  810. package/dist/search-params.d.ts.map +0 -1
  811. package/dist/search-params.js +0 -74
  812. package/dist/search-params.js.map +0 -1
  813. package/dist/segment-system.d.ts +0 -75
  814. package/dist/segment-system.d.ts.map +0 -1
  815. package/dist/segment-system.js +0 -336
  816. package/dist/segment-system.js.map +0 -1
  817. package/dist/server/context.d.ts +0 -245
  818. package/dist/server/context.d.ts.map +0 -1
  819. package/dist/server/context.js +0 -197
  820. package/dist/server/context.js.map +0 -1
  821. package/dist/server/fetchable-loader-store.d.ts +0 -18
  822. package/dist/server/fetchable-loader-store.d.ts.map +0 -1
  823. package/dist/server/fetchable-loader-store.js +0 -18
  824. package/dist/server/fetchable-loader-store.js.map +0 -1
  825. package/dist/server/handle-store.d.ts +0 -85
  826. package/dist/server/handle-store.d.ts.map +0 -1
  827. package/dist/server/handle-store.js +0 -142
  828. package/dist/server/handle-store.js.map +0 -1
  829. package/dist/server/loader-registry.d.ts +0 -55
  830. package/dist/server/loader-registry.d.ts.map +0 -1
  831. package/dist/server/loader-registry.js +0 -132
  832. package/dist/server/loader-registry.js.map +0 -1
  833. package/dist/server/request-context.d.ts +0 -226
  834. package/dist/server/request-context.d.ts.map +0 -1
  835. package/dist/server/request-context.js +0 -290
  836. package/dist/server/request-context.js.map +0 -1
  837. package/dist/server/root-layout.d.ts +0 -4
  838. package/dist/server/root-layout.d.ts.map +0 -1
  839. package/dist/server/root-layout.js +0 -5
  840. package/dist/server/root-layout.js.map +0 -1
  841. package/dist/server.d.ts +0 -15
  842. package/dist/server.d.ts.map +0 -1
  843. package/dist/server.js +0 -20
  844. package/dist/server.js.map +0 -1
  845. package/dist/ssr/__tests__/ssr-handler.test.d.ts +0 -2
  846. package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +0 -1
  847. package/dist/ssr/__tests__/ssr-handler.test.js +0 -132
  848. package/dist/ssr/__tests__/ssr-handler.test.js.map +0 -1
  849. package/dist/ssr/index.d.ts +0 -98
  850. package/dist/ssr/index.d.ts.map +0 -1
  851. package/dist/ssr/index.js +0 -158
  852. package/dist/ssr/index.js.map +0 -1
  853. package/dist/static-handler.d.ts +0 -50
  854. package/dist/static-handler.d.ts.map +0 -1
  855. package/dist/static-handler.gen.d.ts +0 -5
  856. package/dist/static-handler.gen.d.ts.map +0 -1
  857. package/dist/static-handler.gen.js +0 -5
  858. package/dist/static-handler.gen.js.map +0 -1
  859. package/dist/static-handler.js +0 -29
  860. package/dist/static-handler.js.map +0 -1
  861. package/dist/theme/ThemeProvider.d.ts +0 -20
  862. package/dist/theme/ThemeProvider.d.ts.map +0 -1
  863. package/dist/theme/ThemeProvider.js +0 -240
  864. package/dist/theme/ThemeProvider.js.map +0 -1
  865. package/dist/theme/ThemeScript.d.ts +0 -48
  866. package/dist/theme/ThemeScript.d.ts.map +0 -1
  867. package/dist/theme/ThemeScript.js +0 -13
  868. package/dist/theme/ThemeScript.js.map +0 -1
  869. package/dist/theme/__tests__/theme.test.d.ts +0 -2
  870. package/dist/theme/__tests__/theme.test.d.ts.map +0 -1
  871. package/dist/theme/__tests__/theme.test.js +0 -103
  872. package/dist/theme/__tests__/theme.test.js.map +0 -1
  873. package/dist/theme/constants.d.ts +0 -29
  874. package/dist/theme/constants.d.ts.map +0 -1
  875. package/dist/theme/constants.js +0 -48
  876. package/dist/theme/constants.js.map +0 -1
  877. package/dist/theme/index.d.ts +0 -31
  878. package/dist/theme/index.d.ts.map +0 -1
  879. package/dist/theme/index.js +0 -36
  880. package/dist/theme/index.js.map +0 -1
  881. package/dist/theme/theme-context.d.ts +0 -40
  882. package/dist/theme/theme-context.d.ts.map +0 -1
  883. package/dist/theme/theme-context.js +0 -60
  884. package/dist/theme/theme-context.js.map +0 -1
  885. package/dist/theme/theme-script.d.ts +0 -27
  886. package/dist/theme/theme-script.d.ts.map +0 -1
  887. package/dist/theme/theme-script.js +0 -147
  888. package/dist/theme/theme-script.js.map +0 -1
  889. package/dist/theme/types.d.ts +0 -163
  890. package/dist/theme/types.d.ts.map +0 -1
  891. package/dist/theme/types.js +0 -11
  892. package/dist/theme/types.js.map +0 -1
  893. package/dist/theme/use-theme.d.ts +0 -12
  894. package/dist/theme/use-theme.d.ts.map +0 -1
  895. package/dist/theme/use-theme.js +0 -40
  896. package/dist/theme/use-theme.js.map +0 -1
  897. package/dist/types.d.ts +0 -1479
  898. package/dist/types.d.ts.map +0 -1
  899. package/dist/types.js +0 -10
  900. package/dist/types.js.map +0 -1
  901. package/dist/urls.d.ts +0 -441
  902. package/dist/urls.d.ts.map +0 -1
  903. package/dist/urls.gen.d.ts +0 -8
  904. package/dist/urls.gen.d.ts.map +0 -1
  905. package/dist/urls.gen.js +0 -8
  906. package/dist/urls.gen.js.map +0 -1
  907. package/dist/urls.js +0 -443
  908. package/dist/urls.js.map +0 -1
  909. package/dist/use-loader.d.ts +0 -127
  910. package/dist/use-loader.d.ts.map +0 -1
  911. package/dist/use-loader.js +0 -237
  912. package/dist/use-loader.js.map +0 -1
  913. package/dist/vite/__tests__/ast-handler-extract.test.d.ts +0 -2
  914. package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +0 -1
  915. package/dist/vite/__tests__/ast-handler-extract.test.js +0 -294
  916. package/dist/vite/__tests__/ast-handler-extract.test.js.map +0 -1
  917. package/dist/vite/__tests__/expose-id-utils.test.d.ts +0 -2
  918. package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +0 -1
  919. package/dist/vite/__tests__/expose-id-utils.test.js +0 -224
  920. package/dist/vite/__tests__/expose-id-utils.test.js.map +0 -1
  921. package/dist/vite/__tests__/expose-internal-ids.test.d.ts +0 -2
  922. package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +0 -1
  923. package/dist/vite/__tests__/expose-internal-ids.test.js +0 -647
  924. package/dist/vite/__tests__/expose-internal-ids.test.js.map +0 -1
  925. package/dist/vite/__tests__/expose-router-id.test.d.ts +0 -2
  926. package/dist/vite/__tests__/expose-router-id.test.d.ts.map +0 -1
  927. package/dist/vite/__tests__/expose-router-id.test.js +0 -39
  928. package/dist/vite/__tests__/expose-router-id.test.js.map +0 -1
  929. package/dist/vite/ast-handler-extract.d.ts +0 -49
  930. package/dist/vite/ast-handler-extract.d.ts.map +0 -1
  931. package/dist/vite/ast-handler-extract.js +0 -249
  932. package/dist/vite/ast-handler-extract.js.map +0 -1
  933. package/dist/vite/expose-action-id.d.ts +0 -19
  934. package/dist/vite/expose-action-id.d.ts.map +0 -1
  935. package/dist/vite/expose-action-id.js +0 -250
  936. package/dist/vite/expose-action-id.js.map +0 -1
  937. package/dist/vite/expose-id-utils.d.ts +0 -69
  938. package/dist/vite/expose-id-utils.d.ts.map +0 -1
  939. package/dist/vite/expose-id-utils.js +0 -289
  940. package/dist/vite/expose-id-utils.js.map +0 -1
  941. package/dist/vite/expose-internal-ids.d.ts +0 -22
  942. package/dist/vite/expose-internal-ids.d.ts.map +0 -1
  943. package/dist/vite/expose-internal-ids.js +0 -886
  944. package/dist/vite/expose-internal-ids.js.map +0 -1
  945. package/dist/vite/index.d.ts +0 -149
  946. package/dist/vite/index.d.ts.map +0 -1
  947. package/dist/vite/index.js.map +0 -1
  948. package/dist/vite/index.named-routes.gen.ts +0 -103
  949. package/dist/vite/package-resolution.d.ts +0 -43
  950. package/dist/vite/package-resolution.d.ts.map +0 -1
  951. package/dist/vite/package-resolution.js +0 -112
  952. package/dist/vite/package-resolution.js.map +0 -1
  953. package/dist/vite/virtual-entries.d.ts +0 -25
  954. package/dist/vite/virtual-entries.d.ts.map +0 -1
  955. package/dist/vite/virtual-entries.js +0 -110
  956. package/dist/vite/virtual-entries.js.map +0 -1
@@ -2,7 +2,12 @@ import type { Plugin, ResolvedConfig } from "vite";
2
2
  import { parseAst } from "vite";
3
3
  import MagicString from "magic-string";
4
4
  import path from "node:path";
5
- import { normalizePath, hashId, detectImports } from "./expose-id-utils.js";
5
+ import {
6
+ normalizePath,
7
+ hashId,
8
+ makeStubId,
9
+ detectImports,
10
+ } from "./expose-id-utils.js";
6
11
  import {
7
12
  transformInlineHandlers,
8
13
  type VirtualHandlerEntry,
@@ -23,6 +28,7 @@ import {
23
28
  getImportedFnNames,
24
29
  collectCreateExportBindings,
25
30
  buildUnsupportedShapeWarning,
31
+ isExportOnlyFile,
26
32
  } from "./expose-ids/export-analysis.js";
27
33
  import {
28
34
  hasCreateLoaderImport,
@@ -34,8 +40,12 @@ import {
34
40
  transformLocationState,
35
41
  generateWholeFileStubs,
36
42
  generateExprStubs,
43
+ stubHandlerExprs,
37
44
  transformHandlerIds,
38
45
  } from "./expose-ids/handler-transform.js";
46
+ import { createRangoDebugger, createCounter } from "../debug.js";
47
+
48
+ const debug = createRangoDebugger("rango:transform");
39
49
 
40
50
  // Re-exports consumed by other packages/plugins
41
51
  export { exposeRouterId } from "./expose-ids/router-transform.js";
@@ -80,10 +90,16 @@ export function exposeInternalIds(options?: { forceBuild?: boolean }): Plugin {
80
90
  // De-duplicate unsupported shape warnings across repeated transforms.
81
91
  const unsupportedShapeWarnings = new Set<string>();
82
92
 
93
+ const counter = createCounter(debug, "expose-internal-ids");
94
+
83
95
  return {
84
96
  name: "@rangojs/router:expose-internal-ids",
85
97
  enforce: "post",
86
98
 
99
+ buildEnd() {
100
+ counter?.flush();
101
+ },
102
+
87
103
  api: {
88
104
  prerenderHandlerModules,
89
105
  staticHandlerModules,
@@ -226,344 +242,575 @@ ${lazyImports.join(",\n")}
226
242
  transform(code, id) {
227
243
  if (id.includes("/node_modules/")) return;
228
244
 
229
- const filePath = normalizePath(path.relative(projectRoot, id));
230
- const isRscEnv = this.environment?.name === "rsc";
231
-
232
- // Warn if named-routes.gen is imported in a client component.
233
- // NamedRoutes is server-only data and would bloat the client bundle.
234
- if (
235
- id.includes(".named-routes.gen.") &&
236
- !isRscEnv &&
237
- this.environment?.name === "client"
238
- ) {
239
- this.warn(
240
- `\n` +
241
- `!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n` +
242
- `!! !!\n` +
243
- `!! WARNING: NamedRoutes imported in a CLIENT component! !!\n` +
244
- `!! !!\n` +
245
- `!! File: ${filePath.padEnd(53)}!!\n` +
246
- `!! !!\n` +
247
- `!! NamedRoutes contains your entire route structure — every !!\n` +
248
- `!! route name and URL pattern in your application. Shipping !!\n` +
249
- `!! this to the browser exposes your full routing topology to !!\n` +
250
- `!! the client, which is a security concern (internal/admin !!\n` +
251
- `!! routes, API endpoints, hidden paths become visible). !!\n` +
252
- `!! !!\n` +
253
- `!! It also bloats the client bundle — this map contains all !!\n` +
254
- `!! named routes in your application. !!\n` +
255
- `!! !!\n` +
256
- `!! Fix: remove the import or move it to a server component. !!\n` +
257
- `!! !!\n` +
258
- `!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n`,
259
- );
260
- }
261
-
262
- // Fast exit: if the file doesn't import from @rangojs/router at all,
263
- // skip all create* analysis and transforms.
264
- if (!code.includes("@rangojs/router")) return;
265
-
266
- // Detect all relevant imports in one pass
267
- const has = detectImports(code);
268
-
269
- // Quick bail-out: also check for raw create* identifiers.
270
- // This is safe even with aliases (e.g., `import { createLoader as cl }`)
271
- // because the import statement itself always contains the canonical name
272
- // "createLoader", so code.includes("createLoader") will still match.
273
- const hasLoaderCode = has.loader && code.includes("createLoader");
274
- const hasHandleCode = has.handle && code.includes("createHandle");
275
- const hasLocationStateCode =
276
- has.locationState && code.includes("createLocationState");
277
- const hasPrerenderHandlerCode =
278
- has.prerenderHandler && code.includes("Prerender");
279
- const hasStaticHandlerCode = has.staticHandler && code.includes("Static");
280
- if (
281
- !hasLoaderCode &&
282
- !hasHandleCode &&
283
- !hasLocationStateCode &&
284
- !hasPrerenderHandlerCode &&
285
- !hasStaticHandlerCode
286
- ) {
287
- return;
288
- }
245
+ const __t0 = counter ? performance.now() : 0;
246
+ try {
247
+ const filePath = normalizePath(path.relative(projectRoot, id));
248
+ const isRscEnv = this.environment?.name === "rsc";
249
+
250
+ // Warn if named-routes.gen is imported in a client component.
251
+ // NamedRoutes is server-only data and would bloat the client bundle.
252
+ if (
253
+ id.includes(".named-routes.gen.") &&
254
+ !isRscEnv &&
255
+ this.environment?.name === "client"
256
+ ) {
257
+ this.warn(
258
+ `\n` +
259
+ `!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n` +
260
+ `!! !!\n` +
261
+ `!! WARNING: NamedRoutes imported in a CLIENT component! !!\n` +
262
+ `!! !!\n` +
263
+ `!! File: ${filePath.padEnd(53)}!!\n` +
264
+ `!! !!\n` +
265
+ `!! NamedRoutes contains your entire route structure every !!\n` +
266
+ `!! route name and URL pattern in your application. Shipping !!\n` +
267
+ `!! this to the browser exposes your full routing topology to !!\n` +
268
+ `!! the client, which is a security concern (internal/admin !!\n` +
269
+ `!! routes, API endpoints, hidden paths become visible). !!\n` +
270
+ `!! !!\n` +
271
+ `!! It also bloats the client bundle — this map contains all !!\n` +
272
+ `!! named routes in your application. !!\n` +
273
+ `!! !!\n` +
274
+ `!! Fix: remove the import or move it to a server component. !!\n` +
275
+ `!! !!\n` +
276
+ `!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n`,
277
+ );
278
+ }
289
279
 
290
- // Per-invocation caches to avoid redundant AST parsing.
291
- // getImportedFnNames is cached by canonical name (imports never change).
292
- // collectCreateExportBindings is cached by fnNames key; the cache is
293
- // cleared when `code` changes (e.g., after inline handler extraction).
294
- const _fnNamesCache = new Map<string, string[]>();
295
- const _bindingsCache = new Map<string, CreateExportBinding[]>();
296
- let _cachedAst: any;
297
- let _astParseFailed = false;
298
- let _astCodeRef = code;
299
-
300
- const getFnNames = (canonicalName: string): string[] => {
301
- let result = _fnNamesCache.get(canonicalName);
302
- if (!result) {
303
- result = getImportedFnNames(code, canonicalName);
304
- _fnNamesCache.set(canonicalName, result);
280
+ // Fast exit: if the file doesn't import from @rangojs/router at all,
281
+ // skip all create* analysis and transforms.
282
+ if (!code.includes("@rangojs/router")) return;
283
+
284
+ // Detect all relevant imports in one pass
285
+ const has = detectImports(code);
286
+
287
+ // Quick bail-out: also check for raw create* identifiers.
288
+ // This is safe even with aliases (e.g., `import { createLoader as cl }`)
289
+ // because the import statement itself always contains the canonical name
290
+ // "createLoader", so code.includes("createLoader") will still match.
291
+ const hasLoaderCode = has.loader && code.includes("createLoader");
292
+ const hasHandleCode = has.handle && code.includes("createHandle");
293
+ const hasLocationStateCode =
294
+ has.locationState && code.includes("createLocationState");
295
+ const hasPrerenderHandlerCode =
296
+ has.prerenderHandler && code.includes("Prerender");
297
+ const hasStaticHandlerCode =
298
+ has.staticHandler && code.includes("Static");
299
+ if (
300
+ !hasLoaderCode &&
301
+ !hasHandleCode &&
302
+ !hasLocationStateCode &&
303
+ !hasPrerenderHandlerCode &&
304
+ !hasStaticHandlerCode
305
+ ) {
306
+ return;
305
307
  }
306
- return result;
307
- };
308
-
309
- // Lazy AST parse: parsed once and shared across all
310
- // collectCreateExportBindings calls for the same code string.
311
- const lazyAst = (): any | undefined => {
312
- if (code !== _astCodeRef) {
313
- _cachedAst = undefined;
314
- _astParseFailed = false;
315
- _astCodeRef = code;
308
+
309
+ // Per-invocation caches to avoid redundant AST parsing.
310
+ // getImportedFnNames is cached by canonical name (imports never change).
311
+ // collectCreateExportBindings is cached by fnNames key; the cache is
312
+ // cleared when `code` changes (e.g., after inline handler extraction).
313
+ const _fnNamesCache = new Map<string, string[]>();
314
+ const _bindingsCache = new Map<string, CreateExportBinding[]>();
315
+ let _cachedAst: any;
316
+ let _astParseFailed = false;
317
+ let _astCodeRef = code;
318
+
319
+ const getFnNames = (canonicalName: string): string[] => {
320
+ let result = _fnNamesCache.get(canonicalName);
321
+ if (!result) {
322
+ result = getImportedFnNames(code, canonicalName);
323
+ _fnNamesCache.set(canonicalName, result);
324
+ }
325
+ return result;
326
+ };
327
+
328
+ // Lazy AST parse: parsed once and shared across all
329
+ // collectCreateExportBindings calls for the same code string.
330
+ const lazyAst = (): any | undefined => {
331
+ if (code !== _astCodeRef) {
332
+ _cachedAst = undefined;
333
+ _astParseFailed = false;
334
+ _astCodeRef = code;
335
+ }
336
+ if (_cachedAst !== undefined || _astParseFailed) return _cachedAst;
337
+ try {
338
+ _cachedAst = parseAst(code, { jsx: true });
339
+ } catch {
340
+ _astParseFailed = true;
341
+ }
342
+ return _cachedAst;
343
+ };
344
+
345
+ const getBindings = (
346
+ currentCode: string,
347
+ fnNames: string[],
348
+ ): CreateExportBinding[] => {
349
+ const key = fnNames.join("\0");
350
+ let result = _bindingsCache.get(key);
351
+ if (!result) {
352
+ result = collectCreateExportBindings(
353
+ currentCode,
354
+ fnNames,
355
+ lazyAst(),
356
+ );
357
+ _bindingsCache.set(key, result);
358
+ }
359
+ return result;
360
+ };
361
+
362
+ // Warn on create* declaration shapes that are currently unsupported by
363
+ // non-AST transforms (loader/handle/locationState only).
364
+ for (const cfg of STRICT_CREATE_CONFIGS) {
365
+ const hasCode =
366
+ cfg.fnName === "createLoader"
367
+ ? hasLoaderCode
368
+ : cfg.fnName === "createHandle"
369
+ ? hasHandleCode
370
+ : hasLocationStateCode;
371
+ if (!hasCode) continue;
372
+
373
+ const fnNames = getFnNames(cfg.fnName);
374
+ const totalCalls = countCreateCallsForNames(code, fnNames);
375
+ const supportedBindings = getBindings(code, fnNames).length;
376
+ if (totalCalls <= supportedBindings) continue;
377
+
378
+ const warnKey = `${id}::${cfg.fnName}`;
379
+ if (unsupportedShapeWarnings.has(warnKey)) continue;
380
+ unsupportedShapeWarnings.add(warnKey);
381
+ this.warn(buildUnsupportedShapeWarning(filePath, cfg.fnName));
316
382
  }
317
- if (_cachedAst !== undefined || _astParseFailed) return _cachedAst;
318
- try {
319
- _cachedAst = parseAst(code, { jsx: true });
320
- } catch {
321
- _astParseFailed = true;
383
+
384
+ // --- Loader: track for manifest (RSC env only) ---
385
+ if (hasLoaderCode && isRscEnv) {
386
+ const fnNames = getFnNames("createLoader");
387
+ const bindings = getBindings(code, fnNames);
388
+ for (const binding of bindings) {
389
+ const exportName = binding.exportNames[0];
390
+ const hashedId = hashId(filePath, exportName);
391
+ loaderRegistry.set(hashedId, {
392
+ filePath,
393
+ exportName,
394
+ });
395
+ }
322
396
  }
323
- return _cachedAst;
324
- };
325
-
326
- const getBindings = (
327
- currentCode: string,
328
- fnNames: string[],
329
- ): CreateExportBinding[] => {
330
- const key = fnNames.join("\0");
331
- let result = _bindingsCache.get(key);
332
- if (!result) {
333
- result = collectCreateExportBindings(currentCode, fnNames, lazyAst());
334
- _bindingsCache.set(key, result);
397
+
398
+ // --- Loader: client stubs for non-RSC environments ---
399
+ if (hasLoaderCode && !isRscEnv) {
400
+ const fnNames = getFnNames("createLoader");
401
+ const bindings = getBindings(code, fnNames);
402
+ const stubResult = generateClientLoaderStubs(
403
+ bindings,
404
+ code,
405
+ filePath,
406
+ isBuild,
407
+ );
408
+ if (stubResult) return stubResult;
335
409
  }
336
- return result;
337
- };
338
-
339
- // Warn on create* declaration shapes that are currently unsupported by
340
- // non-AST transforms (loader/handle/locationState only).
341
- for (const cfg of STRICT_CREATE_CONFIGS) {
342
- const hasCode =
343
- cfg.fnName === "createLoader"
344
- ? hasLoaderCode
345
- : cfg.fnName === "createHandle"
346
- ? hasHandleCode
347
- : hasLocationStateCode;
348
- if (!hasCode) continue;
349
-
350
- const fnNames = getFnNames(cfg.fnName);
351
- const totalCalls = countCreateCallsForNames(code, fnNames);
352
- const supportedBindings = getBindings(code, fnNames).length;
353
- if (totalCalls <= supportedBindings) continue;
354
-
355
- const warnKey = `${id}::${cfg.fnName}`;
356
- if (unsupportedShapeWarnings.has(warnKey)) continue;
357
- unsupportedShapeWarnings.add(warnKey);
358
- this.warn(buildUnsupportedShapeWarning(filePath, cfg.fnName));
359
- }
360
410
 
361
- // --- Loader: track for manifest (RSC env only) ---
362
- if (hasLoaderCode && isRscEnv) {
363
- const fnNames = getFnNames("createLoader");
364
- const bindings = getBindings(code, fnNames);
365
- for (const binding of bindings) {
366
- const exportName = binding.exportNames[0];
367
- const hashedId = hashId(filePath, exportName);
368
- loaderRegistry.set(hashedId, {
411
+ // --- PrerenderHandler: non-RSC whole-file stub replacement ---
412
+ // When ALL exports are Prerender() calls, replace the entire file.
413
+ // Mixed-export files are handled in the unified pipeline below.
414
+ if (hasPrerenderHandlerCode && !isRscEnv) {
415
+ const fnNames = getFnNames(PRERENDER_CONFIG.fnName);
416
+ const bindings = getBindings(code, fnNames);
417
+ const wholeFile = generateWholeFileStubs(
418
+ PRERENDER_CONFIG,
419
+ bindings,
420
+ code,
369
421
  filePath,
370
- exportName,
371
- });
422
+ isBuild,
423
+ );
424
+ if (wholeFile) return wholeFile;
372
425
  }
373
- }
374
426
 
375
- // --- Loader: client stubs for non-RSC environments ---
376
- if (hasLoaderCode && !isRscEnv) {
377
- const fnNames = getFnNames("createLoader");
378
- const bindings = getBindings(code, fnNames);
379
- const stubResult = generateClientLoaderStubs(
380
- bindings,
381
- code,
382
- filePath,
383
- isBuild,
384
- );
385
- if (stubResult) return stubResult;
386
- }
427
+ // --- PrerenderHandler: RSC build module tracking ---
428
+ if (hasPrerenderHandlerCode && isRscEnv && isBuild) {
429
+ const fnNames = getFnNames(PRERENDER_CONFIG.fnName);
430
+ const exportNames = getBindings(code, fnNames).map(
431
+ (b) => b.exportNames[0],
432
+ );
433
+ if (exportNames.length > 0) {
434
+ prerenderHandlerModules.set(id, exportNames);
435
+ }
436
+ }
387
437
 
388
- // --- PrerenderHandler: non-RSC stub replacement ---
389
- if (hasPrerenderHandlerCode && !isRscEnv) {
390
- const fnNames = getFnNames(PRERENDER_CONFIG.fnName);
391
- const bindings = getBindings(code, fnNames);
392
- const wholeFile = generateWholeFileStubs(
393
- PRERENDER_CONFIG,
394
- bindings,
395
- code,
396
- filePath,
397
- isBuild,
398
- );
399
- if (wholeFile) return wholeFile;
400
-
401
- const exprStubs = generateExprStubs(
402
- PRERENDER_CONFIG,
403
- bindings,
404
- code,
405
- filePath,
406
- id,
407
- isBuild,
408
- );
409
- if (exprStubs) return exprStubs;
410
- }
438
+ // --- Inline handler extraction to virtual modules ---
439
+ // Runs before stubs/tracking so inline calls become imports, then
440
+ // the existing regex fast path handles both the original file's
441
+ // export const patterns and the virtual modules independently.
442
+ //
443
+ // Cheap pre-check: count total fnName( occurrences vs export const
444
+ // patterns. If they match, every call is a named export and the
445
+ // regex fast path handles them -- skip the AST parse entirely.
446
+ //
447
+ // Each iteration creates a fresh MagicString so that AST positions
448
+ // from findHandlerCalls always match the string they were parsed from.
449
+ let changed = false;
450
+
451
+ const handlerConfigs = [
452
+ hasStaticHandlerCode && STATIC_CONFIG,
453
+ hasPrerenderHandlerCode && PRERENDER_CONFIG,
454
+ ]
455
+ .filter((c): c is HandlerTransformConfig => !!c)
456
+ .map((cfg) => {
457
+ const fnNames = getFnNames(cfg.fnName);
458
+ return { cfg, fnNames };
459
+ });
411
460
 
412
- // --- PrerenderHandler: RSC build module tracking ---
413
- if (hasPrerenderHandlerCode && isRscEnv && isBuild) {
414
- const fnNames = getFnNames(PRERENDER_CONFIG.fnName);
415
- const exportNames = getBindings(code, fnNames).map(
416
- (b) => b.exportNames[0],
417
- );
418
- if (exportNames.length > 0) {
419
- prerenderHandlerModules.set(id, exportNames);
461
+ for (const { cfg, fnNames } of handlerConfigs) {
462
+ const totalCalls = countCreateCallsForNames(code, fnNames);
463
+ const supportedBindings = getBindings(code, fnNames).length;
464
+
465
+ if (totalCalls > supportedBindings) {
466
+ const iterS = new MagicString(code);
467
+ const result = transformInlineHandlers(
468
+ cfg.fnName,
469
+ VIRTUAL_HANDLER_PREFIX,
470
+ iterS,
471
+ code,
472
+ filePath,
473
+ virtualHandlers,
474
+ id,
475
+ parseAst,
476
+ );
477
+ if (result) {
478
+ changed = true;
479
+ code = iterS.toString();
480
+ _bindingsCache.clear();
481
+ }
482
+ }
420
483
  }
421
- }
422
484
 
423
- // --- Inline handler extraction to virtual modules ---
424
- // Runs before stubs/tracking so inline calls become imports, then
425
- // the existing regex fast path handles both the original file's
426
- // export const patterns and the virtual modules independently.
427
- //
428
- // Cheap pre-check: count total fnName( occurrences vs export const
429
- // patterns. If they match, every call is a named export and the
430
- // regex fast path handles them -- skip the AST parse entirely.
431
- //
432
- // Each iteration creates a fresh MagicString so that AST positions
433
- // from findHandlerCalls always match the string they were parsed from.
434
- let changed = false;
435
-
436
- const handlerConfigs = [
437
- hasStaticHandlerCode && STATIC_CONFIG,
438
- hasPrerenderHandlerCode && PRERENDER_CONFIG,
439
- ]
440
- .filter((c): c is HandlerTransformConfig => !!c)
441
- .map((cfg) => {
442
- const fnNames = getFnNames(cfg.fnName);
443
- return { cfg, fnNames };
444
- });
445
-
446
- for (const { cfg, fnNames } of handlerConfigs) {
447
- const totalCalls = countCreateCallsForNames(code, fnNames);
448
- const supportedBindings = getBindings(code, fnNames).length;
449
-
450
- if (totalCalls > supportedBindings) {
451
- const iterS = new MagicString(code);
452
- const result = transformInlineHandlers(
453
- cfg.fnName,
454
- VIRTUAL_HANDLER_PREFIX,
455
- iterS,
485
+ // --- StaticHandler: non-RSC whole-file stub replacement ---
486
+ // When ALL exports are Static() calls, replace the entire file.
487
+ if (hasStaticHandlerCode && !isRscEnv) {
488
+ const fnNames = getFnNames(STATIC_CONFIG.fnName);
489
+ const bindings = getBindings(code, fnNames);
490
+ const wholeFile = generateWholeFileStubs(
491
+ STATIC_CONFIG,
492
+ bindings,
456
493
  code,
457
494
  filePath,
458
- virtualHandlers,
459
- id,
460
- parseAst,
495
+ isBuild,
461
496
  );
462
- if (result) {
463
- changed = true;
464
- code = iterS.toString();
465
- _bindingsCache.clear();
466
- }
497
+ if (wholeFile) return wholeFile;
467
498
  }
468
- }
469
499
 
470
- // --- StaticHandler: non-RSC stub replacement ---
471
- if (hasStaticHandlerCode && !isRscEnv) {
472
- const fnNames = getFnNames(STATIC_CONFIG.fnName);
473
- const bindings = getBindings(code, fnNames);
474
- const wholeFile = generateWholeFileStubs(
475
- STATIC_CONFIG,
476
- bindings,
477
- code,
478
- filePath,
479
- isBuild,
480
- );
481
- if (wholeFile) return wholeFile;
482
-
483
- const exprStubs = generateExprStubs(
484
- STATIC_CONFIG,
485
- bindings,
486
- code,
487
- filePath,
488
- id,
489
- isBuild,
490
- );
491
- if (exprStubs) return exprStubs;
492
- }
500
+ // --- Mixed-type whole-file stub replacement (non-RSC) ---
501
+ // When the individual whole-file checks above fail (each only checks
502
+ // one type), the file has mixed exports (e.g. createLoader + Prerender).
503
+ // Gather ALL stub-safe bindings and check if they cover every export.
504
+ // If yes, replace the entire file with stubs — this strips server-only
505
+ // imports (node:fs, DB clients, etc.) that would crash in the browser.
506
+ //
507
+ // Only applies when the file contains Prerender/Static (the handler
508
+ // types that bring server-only code). Files with only loaders, handles,
509
+ // or locationState are handled correctly by the unified pipeline below.
510
+ //
511
+ // Loader, Prerender, and Static exports become plain { __brand, $$id }
512
+ // stubs. createHandle and createLocationState need their create*()
513
+ // functions to execute (collect registration / __rsc_ls_key), so their
514
+ // call expressions are preserved with only a @rangojs/router import.
515
+ // This strips all server-only imports while keeping the correct
516
+ // client contract for every export type.
517
+ if (!isRscEnv && (hasPrerenderHandlerCode || hasStaticHandlerCode)) {
518
+ const prerenderFnNames = hasPrerenderHandlerCode
519
+ ? getFnNames(PRERENDER_CONFIG.fnName)
520
+ : [];
521
+ const staticFnNames = hasStaticHandlerCode
522
+ ? getFnNames(STATIC_CONFIG.fnName)
523
+ : [];
524
+ const loaderFnNames = hasLoaderCode ? getFnNames("createLoader") : [];
525
+ const handleFnNames = hasHandleCode ? getFnNames("createHandle") : [];
526
+ const lsFnNames = hasLocationStateCode
527
+ ? getFnNames("createLocationState")
528
+ : [];
529
+
530
+ // Collect ALL recognized bindings to check export coverage
531
+ const allBindings: CreateExportBinding[] = [];
532
+ for (const fnNames of [
533
+ prerenderFnNames,
534
+ staticFnNames,
535
+ loaderFnNames,
536
+ handleFnNames,
537
+ lsFnNames,
538
+ ]) {
539
+ if (fnNames.length > 0) {
540
+ allBindings.push(...getBindings(code, fnNames));
541
+ }
542
+ }
493
543
 
494
- // --- StaticHandler: RSC build module tracking ---
495
- if (hasStaticHandlerCode && isRscEnv && isBuild) {
496
- const fnNames = getFnNames(STATIC_CONFIG.fnName);
497
- const exportNames = getBindings(code, fnNames).map(
498
- (b) => b.exportNames[0],
499
- );
500
- if (exportNames.length > 0) {
501
- staticHandlerModules.set(id, exportNames);
544
+ // Check if preserved createHandle/createLocationState calls
545
+ // reference non-exported locals (e.g. helper functions, constants).
546
+ // If so, the whole-file stub would strip those locals, breaking
547
+ // the call. Fall through to the unified pipeline instead.
548
+ let canStubWholeFile =
549
+ allBindings.length > 0 && isExportOnlyFile(code, allBindings);
550
+
551
+ if (
552
+ canStubWholeFile &&
553
+ (handleFnNames.length > 0 || lsFnNames.length > 0)
554
+ ) {
555
+ const exportedLocals = new Set(allBindings.map((b) => b.localName));
556
+ // Collect bindings that would be stripped by whole-file replacement:
557
+ // local declarations and imported bindings from non-@rangojs/router
558
+ // modules. This is a regex-based heuristic — it intentionally skips
559
+ // edge cases (class decls, destructured bindings, combined
560
+ // default+named imports) since those rarely appear in route files.
561
+ const strippedBindings: string[] = [];
562
+
563
+ // Skip React Fast Refresh temporaries (_c, _c2, ...) which are
564
+ // injected by @vitejs/plugin-react in the client environment and
565
+ // would falsely trigger the bailout.
566
+ const localDeclPattern =
567
+ /(?:^|;|\n)\s*(?:const|let|var|function)\s+(\w+)/g;
568
+ let declMatch: RegExpExecArray | null;
569
+ while ((declMatch = localDeclPattern.exec(code)) !== null) {
570
+ const name = declMatch[1];
571
+ if (!exportedLocals.has(name) && !/^_c\d*$/.test(name)) {
572
+ strippedBindings.push(name);
573
+ }
574
+ }
575
+
576
+ const importPattern =
577
+ /import\s*\{([^}]*)\}\s*from\s*["'](?!@rangojs\/router)[^"']*["']/g;
578
+ let importMatch: RegExpExecArray | null;
579
+ while ((importMatch = importPattern.exec(code)) !== null) {
580
+ for (const spec of importMatch[1].split(",")) {
581
+ const m = spec
582
+ .trim()
583
+ .match(/^[A-Za-z_$][\w$]*(?:\s+as\s+([A-Za-z_$][\w$]*))?$/);
584
+ if (m)
585
+ strippedBindings.push(m[1] || m[0].trim().split(/\s/)[0]);
586
+ }
587
+ }
588
+ const defaultImportPattern =
589
+ /import\s+([A-Za-z_$][\w$]*)\s+from\s*["'](?!@rangojs\/router)[^"']*["']/g;
590
+ while ((importMatch = defaultImportPattern.exec(code)) !== null) {
591
+ strippedBindings.push(importMatch[1]);
592
+ }
593
+ const nsImportPattern =
594
+ /import\s+\*\s+as\s+([A-Za-z_$][\w$]*)\s+from\s*["'](?!@rangojs\/router)[^"']*["']/g;
595
+ while ((importMatch = nsImportPattern.exec(code)) !== null) {
596
+ strippedBindings.push(importMatch[1]);
597
+ }
598
+
599
+ if (strippedBindings.length > 0) {
600
+ const preservedBindings = allBindings.filter((b) => {
601
+ const fc = code.slice(b.callExprStart, b.callOpenParenPos + 1);
602
+ return (
603
+ handleFnNames.some((n) => fc.includes(n)) ||
604
+ lsFnNames.some((n) => fc.includes(n))
605
+ );
606
+ });
607
+ const strippedRe = new RegExp(
608
+ `\\b(?:${strippedBindings.join("|")})\\b`,
609
+ );
610
+ canStubWholeFile = !preservedBindings.some((b) => {
611
+ const expr = code.slice(
612
+ b.callExprStart,
613
+ b.callCloseParenPos + 1,
614
+ );
615
+ return strippedRe.test(expr);
616
+ });
617
+ }
618
+ }
619
+
620
+ if (canStubWholeFile) {
621
+ const lines: string[] = [];
622
+ const neededImports: string[] = [];
623
+ if (handleFnNames.length > 0) neededImports.push("createHandle");
624
+ if (lsFnNames.length > 0) neededImports.push("createLocationState");
625
+ if (neededImports.length > 0) {
626
+ lines.push(
627
+ `import { ${neededImports.join(", ")} } from "@rangojs/router";`,
628
+ );
629
+ }
630
+
631
+ for (const binding of allBindings) {
632
+ const fnCall = code.slice(
633
+ binding.callExprStart,
634
+ binding.callOpenParenPos + 1,
635
+ );
636
+ const isHandle = handleFnNames.some((n) => fnCall.includes(n));
637
+ const isLocationState = lsFnNames.some((n) => fnCall.includes(n));
638
+
639
+ // Aliases share the primary name's ID (matches server transforms).
640
+ const primaryName = binding.exportNames[0];
641
+ const stubId = makeStubId(filePath, primaryName, isBuild);
642
+
643
+ if (isHandle || isLocationState) {
644
+ // Rewrite alias to canonical name since the stub file only
645
+ // imports canonical names from @rangojs/router.
646
+ // Strip React Fast Refresh `_c = ` wrappers from args
647
+ // (e.g. `_c = (segments) => ...` → `(segments) => ...`)
648
+ const rawArgs = code
649
+ .slice(
650
+ binding.callOpenParenPos + 1,
651
+ binding.callCloseParenPos,
652
+ )
653
+ .replace(/\b_c\d*\s*=\s*/g, "");
654
+ const canonicalName = isHandle
655
+ ? "createHandle"
656
+ : "createLocationState";
657
+ const activeFnNames = isHandle ? handleFnNames : lsFnNames;
658
+
659
+ // Reconstruct the function name (handling aliases + generics)
660
+ let rawCallee = code.slice(
661
+ binding.callExprStart,
662
+ binding.callOpenParenPos,
663
+ );
664
+ for (const alias of activeFnNames) {
665
+ if (alias !== canonicalName && rawCallee.startsWith(alias)) {
666
+ rawCallee = canonicalName + rawCallee.slice(alias.length);
667
+ break;
668
+ }
669
+ }
670
+
671
+ if (isHandle) {
672
+ // createHandle checks __injectedId DURING the call, so $$id
673
+ // must be a parameter, not a post-call property assignment.
674
+ const idParam =
675
+ binding.argCount === 0
676
+ ? `undefined, "${stubId}"`
677
+ : `, "${stubId}"`;
678
+ lines.push(
679
+ `export const ${primaryName} = ${rawCallee}(${rawArgs}${idParam});`,
680
+ );
681
+ lines.push(`${primaryName}.$$id = "${stubId}";`);
682
+ } else {
683
+ lines.push(
684
+ `export const ${primaryName} = ${rawCallee}(${rawArgs});`,
685
+ );
686
+ lines.push(
687
+ `${primaryName}.__rsc_ls_key = "__rsc_ls_${stubId}";`,
688
+ );
689
+ }
690
+ for (const name of binding.exportNames.slice(1)) {
691
+ lines.push(`export const ${name} = ${primaryName};`);
692
+ }
693
+ } else {
694
+ let brand = "loader";
695
+ if (prerenderFnNames.some((n) => fnCall.includes(n))) {
696
+ brand = PRERENDER_CONFIG.brand;
697
+ } else if (staticFnNames.some((n) => fnCall.includes(n))) {
698
+ brand = STATIC_CONFIG.brand;
699
+ }
700
+ lines.push(
701
+ `export const ${primaryName} = { __brand: "${brand}", $$id: "${stubId}" };`,
702
+ );
703
+ for (const name of binding.exportNames.slice(1)) {
704
+ lines.push(`export const ${name} = ${primaryName};`);
705
+ }
706
+ }
707
+ }
708
+
709
+ return { code: lines.join("\n") + "\n", map: null };
710
+ }
502
711
  }
503
- }
504
712
 
505
- // --- Unified MagicString transforms ---
506
- // Single pipeline for all downstream transforms (loaders, handles,
507
- // locationState, handler IDs). Uses the post-extraction code so
508
- // positions are always consistent.
509
- const s = new MagicString(code);
510
-
511
- if (hasLoaderCode) {
512
- const fnNames = getFnNames("createLoader");
513
- changed =
514
- transformLoaders(getBindings(code, fnNames), s, filePath, isBuild) ||
515
- changed;
516
- }
517
- if (hasHandleCode) {
518
- const fnNames = getFnNames("createHandle");
519
- changed =
520
- transformHandles(
521
- getBindings(code, fnNames),
522
- s,
523
- code,
524
- filePath,
525
- isBuild,
526
- ) || changed;
527
- }
528
- if (hasLocationStateCode) {
529
- const fnNames = getFnNames("createLocationState");
530
- changed =
531
- transformLocationState(
532
- getBindings(code, fnNames),
533
- s,
534
- filePath,
535
- isBuild,
536
- ) || changed;
537
- }
538
- if (hasPrerenderHandlerCode && isRscEnv) {
539
- const fnNames = getFnNames(PRERENDER_CONFIG.fnName);
540
- changed =
541
- transformHandlerIds(
542
- PRERENDER_CONFIG,
543
- getBindings(code, fnNames),
544
- s,
545
- filePath,
546
- isBuild,
547
- ) || changed;
548
- }
549
- if (hasStaticHandlerCode && isRscEnv) {
550
- const fnNames = getFnNames(STATIC_CONFIG.fnName);
551
- changed =
552
- transformHandlerIds(
553
- STATIC_CONFIG,
554
- getBindings(code, fnNames),
555
- s,
556
- filePath,
557
- isBuild,
558
- ) || changed;
559
- }
713
+ // --- StaticHandler: RSC build module tracking ---
714
+ if (hasStaticHandlerCode && isRscEnv && isBuild) {
715
+ const fnNames = getFnNames(STATIC_CONFIG.fnName);
716
+ const exportNames = getBindings(code, fnNames).map(
717
+ (b) => b.exportNames[0],
718
+ );
719
+ if (exportNames.length > 0) {
720
+ staticHandlerModules.set(id, exportNames);
721
+ }
722
+ }
560
723
 
561
- if (!changed) return;
724
+ // --- Unified MagicString transforms ---
725
+ // Single pipeline for all downstream transforms (loaders, handles,
726
+ // locationState, handler IDs). Uses the post-extraction code so
727
+ // positions are always consistent.
728
+ const s = new MagicString(code);
729
+
730
+ if (hasLoaderCode) {
731
+ const fnNames = getFnNames("createLoader");
732
+ changed =
733
+ transformLoaders(
734
+ getBindings(code, fnNames),
735
+ s,
736
+ filePath,
737
+ isBuild,
738
+ ) || changed;
739
+ }
740
+ if (hasHandleCode) {
741
+ const fnNames = getFnNames("createHandle");
742
+ changed =
743
+ transformHandles(
744
+ getBindings(code, fnNames),
745
+ s,
746
+ code,
747
+ filePath,
748
+ isBuild,
749
+ ) || changed;
750
+ }
751
+ if (hasLocationStateCode) {
752
+ const fnNames = getFnNames("createLocationState");
753
+ changed =
754
+ transformLocationState(
755
+ getBindings(code, fnNames),
756
+ s,
757
+ filePath,
758
+ isBuild,
759
+ ) || changed;
760
+ }
761
+ if (hasPrerenderHandlerCode) {
762
+ const fnNames = getFnNames(PRERENDER_CONFIG.fnName);
763
+ const bindings = getBindings(code, fnNames);
764
+ if (isRscEnv) {
765
+ changed =
766
+ transformHandlerIds(
767
+ PRERENDER_CONFIG,
768
+ bindings,
769
+ s,
770
+ filePath,
771
+ isBuild,
772
+ ) || changed;
773
+ } else {
774
+ // Non-RSC mixed-export file: replace Prerender() calls with stubs
775
+ // on the shared MagicString so sourcemaps stay accurate.
776
+ changed =
777
+ stubHandlerExprs(
778
+ PRERENDER_CONFIG,
779
+ bindings,
780
+ s,
781
+ filePath,
782
+ isBuild,
783
+ ) || changed;
784
+ }
785
+ }
786
+ if (hasStaticHandlerCode) {
787
+ const fnNames = getFnNames(STATIC_CONFIG.fnName);
788
+ const bindings = getBindings(code, fnNames);
789
+ if (isRscEnv) {
790
+ changed =
791
+ transformHandlerIds(
792
+ STATIC_CONFIG,
793
+ bindings,
794
+ s,
795
+ filePath,
796
+ isBuild,
797
+ ) || changed;
798
+ } else {
799
+ changed =
800
+ stubHandlerExprs(STATIC_CONFIG, bindings, s, filePath, isBuild) ||
801
+ changed;
802
+ }
803
+ }
804
+
805
+ if (!changed) return;
562
806
 
563
- return {
564
- code: s.toString(),
565
- map: s.generateMap({ source: id, includeContent: true }),
566
- };
807
+ return {
808
+ code: s.toString(),
809
+ map: s.generateMap({ source: id, includeContent: true }),
810
+ };
811
+ } finally {
812
+ counter?.record(id, performance.now() - __t0);
813
+ }
567
814
  },
568
815
  };
569
816
  }