@askrjs/askr 0.0.51 → 0.0.53

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 (651) hide show
  1. package/README.md +5 -1
  2. package/dist/{runtime/scheduler.js → access-Bg4RJNC8.js} +190 -20
  3. package/dist/actions/index.d.ts +2 -0
  4. package/dist/actions/index.js +103 -0
  5. package/dist/{common/attr-names.js → attr-names-CjhzmHOn.js} +1 -3
  6. package/dist/benchmark.d.ts +7 -4
  7. package/dist/benchmark.js +63 -13
  8. package/dist/boot/index.d.ts +62 -4
  9. package/dist/boot/index.js +1 -194
  10. package/dist/boot-j2KoN6ss.js +647 -0
  11. package/dist/cleanup-COv77su2.js +487 -0
  12. package/dist/component-internal-B3z7GXlD.js +614 -0
  13. package/dist/component-lifecycle-CO4hXlP4.js +357 -0
  14. package/dist/{runtime/component-scope.js → component-scope-CC3cojX9.js} +35 -9
  15. package/dist/component-scope-CvPba6O6.d.ts +12 -0
  16. package/dist/components/index.d.ts +17 -2
  17. package/dist/components/index.js +39 -1
  18. package/dist/compose-ref-Cc_YkUpM.js +92 -0
  19. package/dist/{foundations/utilities/compose-ref.d.ts → compose-ref-Cizq72-x.d.ts} +1 -2
  20. package/dist/control/index.d.ts +1 -3
  21. package/dist/control/index.js +1 -3
  22. package/dist/control-BQvNVfAd.d.ts +436 -0
  23. package/dist/control-BYyLTFyw.js +165 -0
  24. package/dist/control-Bf4Wkdvv.d.ts +9 -0
  25. package/dist/{common/control.js → control-DhFRTIoE.js} +1 -3
  26. package/dist/data/index.d.ts +2 -6
  27. package/dist/data/index.js +4 -5
  28. package/dist/data-DnxnDxD-.js +559 -0
  29. package/dist/{data/data-runtime.js → data-runtime-SJ1BSUvk.js} +35 -36
  30. package/dist/deferred-lKE8uR0z.js +386 -0
  31. package/dist/effect-BwnIvLah.js +260 -0
  32. package/dist/fastlane-Dw8SOBr9.js +343 -0
  33. package/dist/for-internal-BKf_Tnv1.js +1563 -0
  34. package/dist/foundations/icon/index.d.ts +68 -2
  35. package/dist/foundations/icon/index.js +85 -1
  36. package/dist/foundations/index.d.ts +2 -5
  37. package/dist/foundations/index.js +2 -5
  38. package/dist/foundations/interactions/index.d.ts +264 -6
  39. package/dist/foundations/interactions/index.js +1 -6
  40. package/dist/foundations/state/index.d.ts +32 -1
  41. package/dist/foundations/state/index.js +78 -1
  42. package/dist/foundations/structures/index.d.ts +2 -7
  43. package/dist/foundations/structures/index.js +2 -7
  44. package/dist/foundations/utilities/index.d.ts +2 -6
  45. package/dist/foundations/utilities/index.js +2 -5
  46. package/dist/fx/index.d.ts +190 -3
  47. package/dist/fx/index.js +454 -4
  48. package/dist/index-31Uoz_NS.d.ts +239 -0
  49. package/dist/index-Bki2rqcr.d.ts +233 -0
  50. package/dist/index-BnU0NPwM.d.ts +101 -0
  51. package/dist/index-D73jgYx1.d.ts +48 -0
  52. package/dist/{runtime/runtime.d.ts → index-R2JJIbM-.d.ts} +31 -9
  53. package/dist/index-SJXJkssx.d.ts +44 -0
  54. package/dist/index.d.ts +8 -13
  55. package/dist/index.js +150 -17
  56. package/dist/interactions-w7gQN4ha.js +280 -0
  57. package/dist/{data/invalidation-listeners.js → invalidation-listeners-Des3AHYs.js} +1 -3
  58. package/dist/{common/props.d.ts → jsx-CP0gmYwJ.d.ts} +17 -6
  59. package/dist/{common/jsx.js → jsx-CUpRxrLH.js} +1 -3
  60. package/dist/jsx-dev-runtime.d.ts +17 -5
  61. package/dist/jsx-dev-runtime.js +3 -10
  62. package/dist/jsx-runtime-92bV2hSa.d.ts +34 -0
  63. package/dist/jsx-runtime-BVVgDSdq.d.ts +1 -0
  64. package/dist/jsx-runtime.d.ts +3 -22
  65. package/dist/jsx-runtime.js +17 -20
  66. package/dist/{runtime/lifecycle-operations.js → lifecycle-operations-D9va7GOU.js} +9 -11
  67. package/dist/navigate-BVDCzOuB.d.ts +34 -0
  68. package/dist/navigate-CmPLSXyw.js +1449 -0
  69. package/dist/{runtime/portal.js → portal-CyU3Ucf2.js} +124 -35
  70. package/dist/query-registry-CQIT4mXr.js +73 -0
  71. package/dist/{common/render-context.js → render-context-Clw3rFiO.js} +14 -8
  72. package/dist/renderer-DzPjeLby.js +6197 -0
  73. package/dist/resource-operation-CEzfpnDk.js +276 -0
  74. package/dist/resources/index.d.ts +42 -3
  75. package/dist/resources/index.js +3 -4
  76. package/dist/{common/route-activity.js → route-activity-CNJfpwx-.js} +1 -3
  77. package/dist/route-matching-vJpvLVbX.js +515 -0
  78. package/dist/router/index.d.ts +166 -14
  79. package/dist/router/index.js +150 -12
  80. package/dist/{common/router.d.ts → router-CeYvjj5_.d.ts} +72 -29
  81. package/dist/{common/router-internal.js → router-internal-BC0w1_xk.js} +1 -3
  82. package/dist/{runtime/scheduler.d.ts → scheduler-CmLO4Dfm.d.ts} +1 -4
  83. package/dist/{runtime/selector.js → selector-DafVYzV4.js} +35 -20
  84. package/dist/{runtime/snapshot-source.js → snapshot-source-BB42xgwb.js} +1 -3
  85. package/dist/ssg/index.d.ts +252 -4
  86. package/dist/ssg/index.js +857 -1
  87. package/dist/ssr/index.d.ts +225 -8
  88. package/dist/ssr/index.js +3 -6
  89. package/dist/{common/ssr.js → ssr-CbQO5xd3.js} +1 -3
  90. package/dist/ssr-D3t80Rc0.js +1413 -0
  91. package/dist/{runtime/state.js → state-DPl8lffD.js} +4 -8
  92. package/dist/structures-DUB3HchX.js +221 -0
  93. package/dist/testing/index.d.ts +4 -4
  94. package/dist/testing/index.js +2 -7
  95. package/dist/{jsx/types.d.ts → types-DnQVG4ZY.d.ts} +2 -6
  96. package/dist/{foundations/utilities/use-id.js → utilities-C_CGX4Dz.js} +1 -3
  97. package/dist/{ssr/verify-hydration.js → verify-hydration-io9ahUeq.js} +2 -4
  98. package/dist/{common/vnode.js → vnode-CGMJYPMB.js} +2 -4
  99. package/package.json +63 -45
  100. package/dist/bench/components/benchmark-row.d.ts +0 -20
  101. package/dist/bench/components/benchmark-row.d.ts.map +0 -1
  102. package/dist/bench/components/benchmark-row.js +0 -42
  103. package/dist/bench/components/benchmark-row.js.map +0 -1
  104. package/dist/bench/components/benchmark-table.js +0 -25
  105. package/dist/bench/components/benchmark-table.js.map +0 -1
  106. package/dist/benchmark.d.ts.map +0 -1
  107. package/dist/benchmark.js.map +0 -1
  108. package/dist/bin/askr-ssg.d.ts +0 -28
  109. package/dist/bin/askr-ssg.d.ts.map +0 -1
  110. package/dist/bin/askr-ssg.js +0 -171
  111. package/dist/bin/askr-ssg.js.map +0 -1
  112. package/dist/boot/hydration.js +0 -140
  113. package/dist/boot/hydration.js.map +0 -1
  114. package/dist/boot/index.d.ts.map +0 -1
  115. package/dist/boot/index.js.map +0 -1
  116. package/dist/boot/root-lifecycle.d.ts +0 -15
  117. package/dist/boot/root-lifecycle.d.ts.map +0 -1
  118. package/dist/boot/root-lifecycle.js +0 -205
  119. package/dist/boot/root-lifecycle.js.map +0 -1
  120. package/dist/boot/route-startup.js +0 -45
  121. package/dist/boot/route-startup.js.map +0 -1
  122. package/dist/boot/types.d.ts +0 -62
  123. package/dist/boot/types.d.ts.map +0 -1
  124. package/dist/common/attr-names.js.map +0 -1
  125. package/dist/common/component.d.ts +0 -19
  126. package/dist/common/component.d.ts.map +0 -1
  127. package/dist/common/control.d.ts +0 -13
  128. package/dist/common/control.d.ts.map +0 -1
  129. package/dist/common/control.js.map +0 -1
  130. package/dist/common/env.js +0 -47
  131. package/dist/common/env.js.map +0 -1
  132. package/dist/common/error-boundary.d.ts +0 -16
  133. package/dist/common/error-boundary.d.ts.map +0 -1
  134. package/dist/common/invariant.js +0 -17
  135. package/dist/common/invariant.js.map +0 -1
  136. package/dist/common/jsx.d.ts +0 -23
  137. package/dist/common/jsx.d.ts.map +0 -1
  138. package/dist/common/jsx.js.map +0 -1
  139. package/dist/common/logger.js +0 -36
  140. package/dist/common/logger.js.map +0 -1
  141. package/dist/common/promise.js +0 -8
  142. package/dist/common/promise.js.map +0 -1
  143. package/dist/common/props.d.ts.map +0 -1
  144. package/dist/common/render-context.js.map +0 -1
  145. package/dist/common/route-activity.js.map +0 -1
  146. package/dist/common/router-internal.js.map +0 -1
  147. package/dist/common/router.d.ts.map +0 -1
  148. package/dist/common/ssr-errors.d.ts +0 -11
  149. package/dist/common/ssr-errors.d.ts.map +0 -1
  150. package/dist/common/ssr-errors.js +0 -16
  151. package/dist/common/ssr-errors.js.map +0 -1
  152. package/dist/common/ssr.d.ts +0 -42
  153. package/dist/common/ssr.d.ts.map +0 -1
  154. package/dist/common/ssr.js.map +0 -1
  155. package/dist/common/vnode.d.ts +0 -22
  156. package/dist/common/vnode.d.ts.map +0 -1
  157. package/dist/common/vnode.js.map +0 -1
  158. package/dist/components/error-boundary.d.ts +0 -15
  159. package/dist/components/error-boundary.d.ts.map +0 -1
  160. package/dist/components/error-boundary.js +0 -43
  161. package/dist/components/error-boundary.js.map +0 -1
  162. package/dist/components/link.d.ts +0 -68
  163. package/dist/components/link.d.ts.map +0 -1
  164. package/dist/components/link.js +0 -76
  165. package/dist/components/link.js.map +0 -1
  166. package/dist/control/case.d.ts +0 -19
  167. package/dist/control/case.d.ts.map +0 -1
  168. package/dist/control/case.js +0 -70
  169. package/dist/control/case.js.map +0 -1
  170. package/dist/control/for.d.ts +0 -24
  171. package/dist/control/for.d.ts.map +0 -1
  172. package/dist/control/for.js +0 -63
  173. package/dist/control/for.js.map +0 -1
  174. package/dist/control/shared.d.ts +0 -9
  175. package/dist/control/shared.d.ts.map +0 -1
  176. package/dist/control/shared.js +0 -20
  177. package/dist/control/shared.js.map +0 -1
  178. package/dist/control/show.d.ts +0 -15
  179. package/dist/control/show.d.ts.map +0 -1
  180. package/dist/control/show.js +0 -34
  181. package/dist/control/show.js.map +0 -1
  182. package/dist/data/data-runtime.d.ts +0 -28
  183. package/dist/data/data-runtime.d.ts.map +0 -1
  184. package/dist/data/data-runtime.js.map +0 -1
  185. package/dist/data/invalidation-listeners.js.map +0 -1
  186. package/dist/data/invalidation.d.ts +0 -9
  187. package/dist/data/invalidation.d.ts.map +0 -1
  188. package/dist/data/invalidation.js +0 -27
  189. package/dist/data/invalidation.js.map +0 -1
  190. package/dist/data/mutation-cell.d.ts +0 -28
  191. package/dist/data/mutation-cell.d.ts.map +0 -1
  192. package/dist/data/mutation-cell.js +0 -132
  193. package/dist/data/mutation-cell.js.map +0 -1
  194. package/dist/data/query-cell.d.ts +0 -46
  195. package/dist/data/query-cell.d.ts.map +0 -1
  196. package/dist/data/query-cell.js +0 -290
  197. package/dist/data/query-cell.js.map +0 -1
  198. package/dist/data/query-key.js +0 -42
  199. package/dist/data/query-key.js.map +0 -1
  200. package/dist/data/shared.js +0 -21
  201. package/dist/data/shared.js.map +0 -1
  202. package/dist/data/testing.js +0 -2
  203. package/dist/data/types.d.ts +0 -161
  204. package/dist/data/types.d.ts.map +0 -1
  205. package/dist/foundations/icon/icon.d.ts +0 -53
  206. package/dist/foundations/icon/icon.d.ts.map +0 -1
  207. package/dist/foundations/icon/icon.js +0 -88
  208. package/dist/foundations/icon/icon.js.map +0 -1
  209. package/dist/foundations/icon/icon.types.d.ts +0 -22
  210. package/dist/foundations/icon/icon.types.d.ts.map +0 -1
  211. package/dist/foundations/interactions/dismissable.d.ts +0 -72
  212. package/dist/foundations/interactions/dismissable.d.ts.map +0 -1
  213. package/dist/foundations/interactions/dismissable.js +0 -26
  214. package/dist/foundations/interactions/dismissable.js.map +0 -1
  215. package/dist/foundations/interactions/focusable.d.ts +0 -22
  216. package/dist/foundations/interactions/focusable.d.ts.map +0 -1
  217. package/dist/foundations/interactions/focusable.js +0 -18
  218. package/dist/foundations/interactions/focusable.js.map +0 -1
  219. package/dist/foundations/interactions/hoverable.d.ts +0 -26
  220. package/dist/foundations/interactions/hoverable.d.ts.map +0 -1
  221. package/dist/foundations/interactions/hoverable.js +0 -15
  222. package/dist/foundations/interactions/hoverable.js.map +0 -1
  223. package/dist/foundations/interactions/interaction-policy.d.ts +0 -50
  224. package/dist/foundations/interactions/interaction-policy.d.ts.map +0 -1
  225. package/dist/foundations/interactions/interaction-policy.js +0 -122
  226. package/dist/foundations/interactions/interaction-policy.js.map +0 -1
  227. package/dist/foundations/interactions/pressable.d.ts +0 -61
  228. package/dist/foundations/interactions/pressable.d.ts.map +0 -1
  229. package/dist/foundations/interactions/pressable.js +0 -51
  230. package/dist/foundations/interactions/pressable.js.map +0 -1
  231. package/dist/foundations/interactions/roving-focus.d.ts +0 -52
  232. package/dist/foundations/interactions/roving-focus.d.ts.map +0 -1
  233. package/dist/foundations/interactions/roving-focus.js +0 -71
  234. package/dist/foundations/interactions/roving-focus.js.map +0 -1
  235. package/dist/foundations/state/controllable.d.ts +0 -33
  236. package/dist/foundations/state/controllable.d.ts.map +0 -1
  237. package/dist/foundations/state/controllable.js +0 -82
  238. package/dist/foundations/state/controllable.js.map +0 -1
  239. package/dist/foundations/structures/collection.d.ts +0 -52
  240. package/dist/foundations/structures/collection.d.ts.map +0 -1
  241. package/dist/foundations/structures/collection.js +0 -51
  242. package/dist/foundations/structures/collection.js.map +0 -1
  243. package/dist/foundations/structures/layer.d.ts +0 -81
  244. package/dist/foundations/structures/layer.d.ts.map +0 -1
  245. package/dist/foundations/structures/layer.js +0 -81
  246. package/dist/foundations/structures/layer.js.map +0 -1
  247. package/dist/foundations/structures/layout.d.ts +0 -33
  248. package/dist/foundations/structures/layout.d.ts.map +0 -1
  249. package/dist/foundations/structures/layout.js +0 -13
  250. package/dist/foundations/structures/layout.js.map +0 -1
  251. package/dist/foundations/structures/portal.d.ts +0 -2
  252. package/dist/foundations/structures/portal.js +0 -3
  253. package/dist/foundations/structures/presence.d.ts +0 -37
  254. package/dist/foundations/structures/presence.d.ts.map +0 -1
  255. package/dist/foundations/structures/presence.js +0 -39
  256. package/dist/foundations/structures/presence.js.map +0 -1
  257. package/dist/foundations/structures/slot.d.ts +0 -35
  258. package/dist/foundations/structures/slot.d.ts.map +0 -1
  259. package/dist/foundations/structures/slot.js +0 -41
  260. package/dist/foundations/structures/slot.js.map +0 -1
  261. package/dist/foundations/utilities/aria.d.ts +0 -16
  262. package/dist/foundations/utilities/aria.d.ts.map +0 -1
  263. package/dist/foundations/utilities/aria.js +0 -17
  264. package/dist/foundations/utilities/aria.js.map +0 -1
  265. package/dist/foundations/utilities/compose-handlers.d.ts +0 -37
  266. package/dist/foundations/utilities/compose-handlers.d.ts.map +0 -1
  267. package/dist/foundations/utilities/compose-handlers.js +0 -20
  268. package/dist/foundations/utilities/compose-handlers.js.map +0 -1
  269. package/dist/foundations/utilities/compose-ref.d.ts.map +0 -1
  270. package/dist/foundations/utilities/compose-ref.js +0 -18
  271. package/dist/foundations/utilities/compose-ref.js.map +0 -1
  272. package/dist/foundations/utilities/event-types.d.ts +0 -20
  273. package/dist/foundations/utilities/event-types.d.ts.map +0 -1
  274. package/dist/foundations/utilities/merge-props.d.ts +0 -5
  275. package/dist/foundations/utilities/merge-props.d.ts.map +0 -1
  276. package/dist/foundations/utilities/merge-props.js +0 -49
  277. package/dist/foundations/utilities/merge-props.js.map +0 -1
  278. package/dist/foundations/utilities/use-id.d.ts +0 -32
  279. package/dist/foundations/utilities/use-id.d.ts.map +0 -1
  280. package/dist/foundations/utilities/use-id.js.map +0 -1
  281. package/dist/fx/fx.d.ts +0 -33
  282. package/dist/fx/fx.d.ts.map +0 -1
  283. package/dist/fx/fx.js +0 -213
  284. package/dist/fx/fx.js.map +0 -1
  285. package/dist/fx/noop.js +0 -9
  286. package/dist/fx/noop.js.map +0 -1
  287. package/dist/fx/timing.d.ts +0 -159
  288. package/dist/fx/timing.d.ts.map +0 -1
  289. package/dist/fx/timing.js +0 -243
  290. package/dist/fx/timing.js.map +0 -1
  291. package/dist/index.js.map +0 -1
  292. package/dist/jsx/index.d.ts +0 -2
  293. package/dist/jsx/index.js +0 -4
  294. package/dist/jsx/types.d.ts.map +0 -1
  295. package/dist/jsx/types.js +0 -2
  296. package/dist/jsx/utils.d.ts +0 -5
  297. package/dist/jsx/utils.d.ts.map +0 -1
  298. package/dist/jsx/utils.js +0 -19
  299. package/dist/jsx/utils.js.map +0 -1
  300. package/dist/jsx-dev-runtime.d.ts.map +0 -1
  301. package/dist/jsx-dev-runtime.js.map +0 -1
  302. package/dist/jsx-runtime.d.ts.map +0 -1
  303. package/dist/jsx-runtime.js.map +0 -1
  304. package/dist/jsx-runtime2.d.ts +0 -3
  305. package/dist/jsx-runtime2.js +0 -4
  306. package/dist/renderer/attributes.js +0 -232
  307. package/dist/renderer/attributes.js.map +0 -1
  308. package/dist/renderer/boundaries.js +0 -266
  309. package/dist/renderer/boundaries.js.map +0 -1
  310. package/dist/renderer/child-shape.js +0 -85
  311. package/dist/renderer/child-shape.js.map +0 -1
  312. package/dist/renderer/children-fastpath.js +0 -149
  313. package/dist/renderer/children-fastpath.js.map +0 -1
  314. package/dist/renderer/children.js +0 -160
  315. package/dist/renderer/children.js.map +0 -1
  316. package/dist/renderer/cleanup.js +0 -210
  317. package/dist/renderer/cleanup.js.map +0 -1
  318. package/dist/renderer/component-host-cleanup.js +0 -68
  319. package/dist/renderer/component-host-cleanup.js.map +0 -1
  320. package/dist/renderer/component-host-instances.js +0 -65
  321. package/dist/renderer/component-host-instances.js.map +0 -1
  322. package/dist/renderer/component-host.js +0 -247
  323. package/dist/renderer/component-host.js.map +0 -1
  324. package/dist/renderer/dom-host.js +0 -13
  325. package/dist/renderer/dom-host.js.map +0 -1
  326. package/dist/renderer/dom-internal.js +0 -186
  327. package/dist/renderer/dom-internal.js.map +0 -1
  328. package/dist/renderer/dom.js +0 -10
  329. package/dist/renderer/element-children.js +0 -279
  330. package/dist/renderer/element-children.js.map +0 -1
  331. package/dist/renderer/env.js +0 -2
  332. package/dist/renderer/error-boundary-dom.js +0 -78
  333. package/dist/renderer/error-boundary-dom.js.map +0 -1
  334. package/dist/renderer/evaluate-dom-range.js +0 -85
  335. package/dist/renderer/evaluate-dom-range.js.map +0 -1
  336. package/dist/renderer/evaluate-reconcile.js +0 -282
  337. package/dist/renderer/evaluate-reconcile.js.map +0 -1
  338. package/dist/renderer/evaluate.js +0 -84
  339. package/dist/renderer/evaluate.js.map +0 -1
  340. package/dist/renderer/fastpath.js +0 -150
  341. package/dist/renderer/fastpath.js.map +0 -1
  342. package/dist/renderer/for-commit-dom-map.js +0 -83
  343. package/dist/renderer/for-commit-dom-map.js.map +0 -1
  344. package/dist/renderer/for-commit-removal.js +0 -36
  345. package/dist/renderer/for-commit-removal.js.map +0 -1
  346. package/dist/renderer/for-commit-reorder.js +0 -89
  347. package/dist/renderer/for-commit-reorder.js.map +0 -1
  348. package/dist/renderer/for-commit.js +0 -314
  349. package/dist/renderer/for-commit.js.map +0 -1
  350. package/dist/renderer/index.js +0 -38
  351. package/dist/renderer/index.js.map +0 -1
  352. package/dist/renderer/keyed-children.js +0 -32
  353. package/dist/renderer/keyed-children.js.map +0 -1
  354. package/dist/renderer/keyed.js +0 -167
  355. package/dist/renderer/keyed.js.map +0 -1
  356. package/dist/renderer/namespaces.js +0 -23
  357. package/dist/renderer/namespaces.js.map +0 -1
  358. package/dist/renderer/prop-bindings.js +0 -280
  359. package/dist/renderer/prop-bindings.js.map +0 -1
  360. package/dist/renderer/reactive-child-dom.js +0 -133
  361. package/dist/renderer/reactive-child-dom.js.map +0 -1
  362. package/dist/renderer/reactive-child-sources.js +0 -184
  363. package/dist/renderer/reactive-child-sources.js.map +0 -1
  364. package/dist/renderer/reactive-children.js +0 -294
  365. package/dist/renderer/reactive-children.js.map +0 -1
  366. package/dist/renderer/reconcile-commit.js +0 -38
  367. package/dist/renderer/reconcile-commit.js.map +0 -1
  368. package/dist/renderer/reconcile-fastpaths.js +0 -107
  369. package/dist/renderer/reconcile-fastpaths.js.map +0 -1
  370. package/dist/renderer/reconcile-resolution.js +0 -187
  371. package/dist/renderer/reconcile-resolution.js.map +0 -1
  372. package/dist/renderer/reconcile.js +0 -39
  373. package/dist/renderer/reconcile.js.map +0 -1
  374. package/dist/renderer/retained-element-rollback.js +0 -277
  375. package/dist/renderer/retained-element-rollback.js.map +0 -1
  376. package/dist/renderer/stable-patch.js +0 -81
  377. package/dist/renderer/stable-patch.js.map +0 -1
  378. package/dist/renderer/static-reuse.js +0 -96
  379. package/dist/renderer/static-reuse.js.map +0 -1
  380. package/dist/renderer/types.js +0 -2
  381. package/dist/renderer/utils.js +0 -256
  382. package/dist/renderer/utils.js.map +0 -1
  383. package/dist/router/access.js +0 -36
  384. package/dist/router/access.js.map +0 -1
  385. package/dist/router/activity.d.ts +0 -10
  386. package/dist/router/activity.d.ts.map +0 -1
  387. package/dist/router/activity.js +0 -87
  388. package/dist/router/activity.js.map +0 -1
  389. package/dist/router/authoring.d.ts +0 -22
  390. package/dist/router/authoring.d.ts.map +0 -1
  391. package/dist/router/authoring.js +0 -198
  392. package/dist/router/authoring.js.map +0 -1
  393. package/dist/router/internal-types.d.ts +0 -31
  394. package/dist/router/internal-types.d.ts.map +0 -1
  395. package/dist/router/lazy.d.ts +0 -19
  396. package/dist/router/lazy.d.ts.map +0 -1
  397. package/dist/router/lazy.js +0 -52
  398. package/dist/router/lazy.js.map +0 -1
  399. package/dist/router/manifest.d.ts +0 -10
  400. package/dist/router/manifest.d.ts.map +0 -1
  401. package/dist/router/manifest.js +0 -49
  402. package/dist/router/manifest.js.map +0 -1
  403. package/dist/router/match.js +0 -122
  404. package/dist/router/match.js.map +0 -1
  405. package/dist/router/navigate.d.ts +0 -11
  406. package/dist/router/navigate.d.ts.map +0 -1
  407. package/dist/router/navigate.js +0 -76
  408. package/dist/router/navigate.js.map +0 -1
  409. package/dist/router/navigation-registry.d.ts +0 -32
  410. package/dist/router/navigation-registry.d.ts.map +0 -1
  411. package/dist/router/navigation-registry.js +0 -105
  412. package/dist/router/navigation-registry.js.map +0 -1
  413. package/dist/router/navigation-scroll.d.ts +0 -14
  414. package/dist/router/navigation-scroll.d.ts.map +0 -1
  415. package/dist/router/navigation-scroll.js +0 -93
  416. package/dist/router/navigation-scroll.js.map +0 -1
  417. package/dist/router/navigation-targets.d.ts +0 -31
  418. package/dist/router/navigation-targets.d.ts.map +0 -1
  419. package/dist/router/navigation-targets.js +0 -255
  420. package/dist/router/navigation-targets.js.map +0 -1
  421. package/dist/router/policy.d.ts +0 -28
  422. package/dist/router/policy.d.ts.map +0 -1
  423. package/dist/router/policy.js +0 -132
  424. package/dist/router/policy.js.map +0 -1
  425. package/dist/router/rendering.d.ts +0 -10
  426. package/dist/router/rendering.d.ts.map +0 -1
  427. package/dist/router/rendering.js +0 -46
  428. package/dist/router/rendering.js.map +0 -1
  429. package/dist/router/resolution.d.ts +0 -4
  430. package/dist/router/resolution.d.ts.map +0 -1
  431. package/dist/router/resolution.js +0 -86
  432. package/dist/router/resolution.js.map +0 -1
  433. package/dist/router/route-context.js +0 -79
  434. package/dist/router/route-context.js.map +0 -1
  435. package/dist/router/route-matching.d.ts +0 -20
  436. package/dist/router/route-matching.d.ts.map +0 -1
  437. package/dist/router/route-matching.js +0 -175
  438. package/dist/router/route-matching.js.map +0 -1
  439. package/dist/router/route-query.d.ts +0 -17
  440. package/dist/router/route-query.d.ts.map +0 -1
  441. package/dist/router/route-query.js +0 -47
  442. package/dist/router/route-query.js.map +0 -1
  443. package/dist/router/route.d.ts +0 -8
  444. package/dist/router/route.js +0 -10
  445. package/dist/router/store.d.ts +0 -50
  446. package/dist/router/store.d.ts.map +0 -1
  447. package/dist/router/store.js +0 -171
  448. package/dist/router/store.js.map +0 -1
  449. package/dist/router/testing.js +0 -4
  450. package/dist/runtime/access.d.ts +0 -20
  451. package/dist/runtime/access.d.ts.map +0 -1
  452. package/dist/runtime/access.js +0 -45
  453. package/dist/runtime/access.js.map +0 -1
  454. package/dist/runtime/child-scope.d.ts +0 -22
  455. package/dist/runtime/child-scope.d.ts.map +0 -1
  456. package/dist/runtime/child-scope.js +0 -87
  457. package/dist/runtime/child-scope.js.map +0 -1
  458. package/dist/runtime/component-cleanup.d.ts +0 -16
  459. package/dist/runtime/component-cleanup.d.ts.map +0 -1
  460. package/dist/runtime/component-cleanup.js +0 -70
  461. package/dist/runtime/component-cleanup.js.map +0 -1
  462. package/dist/runtime/component-commit.js +0 -165
  463. package/dist/runtime/component-commit.js.map +0 -1
  464. package/dist/runtime/component-facade.d.ts +0 -5
  465. package/dist/runtime/component-facade.js +0 -4
  466. package/dist/runtime/component-internal.d.ts +0 -100
  467. package/dist/runtime/component-internal.d.ts.map +0 -1
  468. package/dist/runtime/component-internal.js +0 -219
  469. package/dist/runtime/component-internal.js.map +0 -1
  470. package/dist/runtime/component-lifecycle.d.ts +0 -49
  471. package/dist/runtime/component-lifecycle.d.ts.map +0 -1
  472. package/dist/runtime/component-lifecycle.js +0 -176
  473. package/dist/runtime/component-lifecycle.js.map +0 -1
  474. package/dist/runtime/component-scope.d.ts +0 -55
  475. package/dist/runtime/component-scope.d.ts.map +0 -1
  476. package/dist/runtime/component-scope.js.map +0 -1
  477. package/dist/runtime/component.d.ts +0 -5
  478. package/dist/runtime/component.js +0 -5
  479. package/dist/runtime/context.d.ts +0 -69
  480. package/dist/runtime/context.d.ts.map +0 -1
  481. package/dist/runtime/context.js +0 -210
  482. package/dist/runtime/context.js.map +0 -1
  483. package/dist/runtime/control.d.ts +0 -43
  484. package/dist/runtime/control.d.ts.map +0 -1
  485. package/dist/runtime/control.js +0 -126
  486. package/dist/runtime/control.js.map +0 -1
  487. package/dist/runtime/derive.d.ts +0 -17
  488. package/dist/runtime/derive.d.ts.map +0 -1
  489. package/dist/runtime/derive.js +0 -142
  490. package/dist/runtime/derive.js.map +0 -1
  491. package/dist/runtime/dev-namespace.d.ts +0 -31
  492. package/dist/runtime/dev-namespace.d.ts.map +0 -1
  493. package/dist/runtime/dev-namespace.js +0 -57
  494. package/dist/runtime/dev-namespace.js.map +0 -1
  495. package/dist/runtime/effect.d.ts +0 -32
  496. package/dist/runtime/effect.d.ts.map +0 -1
  497. package/dist/runtime/effect.js +0 -177
  498. package/dist/runtime/effect.js.map +0 -1
  499. package/dist/runtime/error-boundary.d.ts +0 -5
  500. package/dist/runtime/error-boundary.d.ts.map +0 -1
  501. package/dist/runtime/error-boundary.js +0 -31
  502. package/dist/runtime/error-boundary.js.map +0 -1
  503. package/dist/runtime/events.d.ts +0 -58
  504. package/dist/runtime/events.d.ts.map +0 -1
  505. package/dist/runtime/events.js +0 -204
  506. package/dist/runtime/events.js.map +0 -1
  507. package/dist/runtime/execution-model.d.ts +0 -7
  508. package/dist/runtime/execution-model.d.ts.map +0 -1
  509. package/dist/runtime/execution-model.js +0 -15
  510. package/dist/runtime/execution-model.js.map +0 -1
  511. package/dist/runtime/fastlane.d.ts +0 -34
  512. package/dist/runtime/fastlane.d.ts.map +0 -1
  513. package/dist/runtime/fastlane.js +0 -175
  514. package/dist/runtime/fastlane.js.map +0 -1
  515. package/dist/runtime/for-bench.d.ts +0 -41
  516. package/dist/runtime/for-bench.d.ts.map +0 -1
  517. package/dist/runtime/for-bench.js +0 -171
  518. package/dist/runtime/for-bench.js.map +0 -1
  519. package/dist/runtime/for-internal.d.ts +0 -43
  520. package/dist/runtime/for-internal.d.ts.map +0 -1
  521. package/dist/runtime/for-internal.js +0 -98
  522. package/dist/runtime/for-internal.js.map +0 -1
  523. package/dist/runtime/for-reconcile.d.ts +0 -8
  524. package/dist/runtime/for-reconcile.d.ts.map +0 -1
  525. package/dist/runtime/for-reconcile.js +0 -389
  526. package/dist/runtime/for-reconcile.js.map +0 -1
  527. package/dist/runtime/for-scopes.d.ts +0 -26
  528. package/dist/runtime/for-scopes.d.ts.map +0 -1
  529. package/dist/runtime/for-scopes.js +0 -160
  530. package/dist/runtime/for-scopes.js.map +0 -1
  531. package/dist/runtime/for-signals.d.ts +0 -30
  532. package/dist/runtime/for-signals.d.ts.map +0 -1
  533. package/dist/runtime/for-signals.js +0 -139
  534. package/dist/runtime/for-signals.js.map +0 -1
  535. package/dist/runtime/for-types.d.ts +0 -9
  536. package/dist/runtime/for-types.d.ts.map +0 -1
  537. package/dist/runtime/for.d.ts +0 -4
  538. package/dist/runtime/for.js +0 -5
  539. package/dist/runtime/index.d.ts +0 -24
  540. package/dist/runtime/index.js +0 -31
  541. package/dist/runtime/lifecycle-operations.d.ts +0 -31
  542. package/dist/runtime/lifecycle-operations.d.ts.map +0 -1
  543. package/dist/runtime/lifecycle-operations.js.map +0 -1
  544. package/dist/runtime/operations.d.ts +0 -3
  545. package/dist/runtime/operations.js +0 -3
  546. package/dist/runtime/perf-metrics.d.ts +0 -26
  547. package/dist/runtime/perf-metrics.d.ts.map +0 -1
  548. package/dist/runtime/perf-metrics.js +0 -70
  549. package/dist/runtime/perf-metrics.js.map +0 -1
  550. package/dist/runtime/portal.d.ts +0 -22
  551. package/dist/runtime/portal.d.ts.map +0 -1
  552. package/dist/runtime/portal.js.map +0 -1
  553. package/dist/runtime/readable.d.ts +0 -29
  554. package/dist/runtime/readable.d.ts.map +0 -1
  555. package/dist/runtime/readable.js +0 -159
  556. package/dist/runtime/readable.js.map +0 -1
  557. package/dist/runtime/resource-cell.js +0 -114
  558. package/dist/runtime/resource-cell.js.map +0 -1
  559. package/dist/runtime/resource-operation.d.ts +0 -13
  560. package/dist/runtime/resource-operation.d.ts.map +0 -1
  561. package/dist/runtime/resource-operation.js +0 -170
  562. package/dist/runtime/resource-operation.js.map +0 -1
  563. package/dist/runtime/runtime.d.ts.map +0 -1
  564. package/dist/runtime/runtime.js +0 -59
  565. package/dist/runtime/runtime.js.map +0 -1
  566. package/dist/runtime/scheduler.d.ts.map +0 -1
  567. package/dist/runtime/scheduler.js.map +0 -1
  568. package/dist/runtime/selector-store.js +0 -24
  569. package/dist/runtime/selector-store.js.map +0 -1
  570. package/dist/runtime/selector.d.ts +0 -11
  571. package/dist/runtime/selector.d.ts.map +0 -1
  572. package/dist/runtime/selector.js.map +0 -1
  573. package/dist/runtime/snapshot-source.d.ts +0 -10
  574. package/dist/runtime/snapshot-source.d.ts.map +0 -1
  575. package/dist/runtime/snapshot-source.js.map +0 -1
  576. package/dist/runtime/state.d.ts +0 -55
  577. package/dist/runtime/state.d.ts.map +0 -1
  578. package/dist/runtime/state.js.map +0 -1
  579. package/dist/ssg/batch-render.js +0 -103
  580. package/dist/ssg/batch-render.js.map +0 -1
  581. package/dist/ssg/create-static-gen.d.ts +0 -64
  582. package/dist/ssg/create-static-gen.d.ts.map +0 -1
  583. package/dist/ssg/create-static-gen.js +0 -199
  584. package/dist/ssg/create-static-gen.js.map +0 -1
  585. package/dist/ssg/generate-metadata.js +0 -94
  586. package/dist/ssg/generate-metadata.js.map +0 -1
  587. package/dist/ssg/generation-plan.js +0 -70
  588. package/dist/ssg/generation-plan.js.map +0 -1
  589. package/dist/ssg/incremental-manifest.js +0 -56
  590. package/dist/ssg/incremental-manifest.js.map +0 -1
  591. package/dist/ssg/resolve-ssg-data.js +0 -105
  592. package/dist/ssg/resolve-ssg-data.js.map +0 -1
  593. package/dist/ssg/route-utils.js +0 -24
  594. package/dist/ssg/route-utils.js.map +0 -1
  595. package/dist/ssg/static-routes.js +0 -102
  596. package/dist/ssg/static-routes.js.map +0 -1
  597. package/dist/ssg/types.d.ts +0 -189
  598. package/dist/ssg/types.d.ts.map +0 -1
  599. package/dist/ssg/write-static-files.js +0 -73
  600. package/dist/ssg/write-static-files.js.map +0 -1
  601. package/dist/ssr/attrs.js +0 -94
  602. package/dist/ssr/attrs.js.map +0 -1
  603. package/dist/ssr/boundaries.js +0 -113
  604. package/dist/ssr/boundaries.js.map +0 -1
  605. package/dist/ssr/component-runtime.js +0 -111
  606. package/dist/ssr/component-runtime.js.map +0 -1
  607. package/dist/ssr/context.d.ts +0 -50
  608. package/dist/ssr/context.d.ts.map +0 -1
  609. package/dist/ssr/context.js +0 -91
  610. package/dist/ssr/context.js.map +0 -1
  611. package/dist/ssr/errors.d.ts +0 -10
  612. package/dist/ssr/errors.d.ts.map +0 -1
  613. package/dist/ssr/errors.js +0 -14
  614. package/dist/ssr/errors.js.map +0 -1
  615. package/dist/ssr/escape.js +0 -193
  616. package/dist/ssr/escape.js.map +0 -1
  617. package/dist/ssr/hydration-data.js +0 -10
  618. package/dist/ssr/hydration-data.js.map +0 -1
  619. package/dist/ssr/hydration-verify.d.ts +0 -12
  620. package/dist/ssr/hydration-verify.d.ts.map +0 -1
  621. package/dist/ssr/hydration-verify.js +0 -144
  622. package/dist/ssr/hydration-verify.js.map +0 -1
  623. package/dist/ssr/index-internal.d.ts +0 -15
  624. package/dist/ssr/index-internal.d.ts.map +0 -1
  625. package/dist/ssr/index-internal.js +0 -19
  626. package/dist/ssr/index-internal.js.map +0 -1
  627. package/dist/ssr/render-keys.js +0 -16
  628. package/dist/ssr/render-keys.js.map +0 -1
  629. package/dist/ssr/render-resolved.d.ts +0 -20
  630. package/dist/ssr/render-resolved.d.ts.map +0 -1
  631. package/dist/ssr/render-resolved.js +0 -35
  632. package/dist/ssr/render-resolved.js.map +0 -1
  633. package/dist/ssr/render-sync.d.ts +0 -21
  634. package/dist/ssr/render-sync.d.ts.map +0 -1
  635. package/dist/ssr/render-sync.js +0 -275
  636. package/dist/ssr/render-sync.js.map +0 -1
  637. package/dist/ssr/route-policy-resolution.js +0 -78
  638. package/dist/ssr/route-policy-resolution.js.map +0 -1
  639. package/dist/ssr/route-render.d.ts +0 -77
  640. package/dist/ssr/route-render.d.ts.map +0 -1
  641. package/dist/ssr/route-render.js +0 -120
  642. package/dist/ssr/route-render.js.map +0 -1
  643. package/dist/ssr/sink.d.ts +0 -26
  644. package/dist/ssr/sink.d.ts.map +0 -1
  645. package/dist/ssr/sink.js +0 -86
  646. package/dist/ssr/sink.js.map +0 -1
  647. package/dist/ssr/types.d.ts +0 -23
  648. package/dist/ssr/types.d.ts.map +0 -1
  649. package/dist/ssr/verify-hydration.js.map +0 -1
  650. package/dist/testing/index.d.ts.map +0 -1
  651. package/dist/testing/index.js.map +0 -1
@@ -1,198 +0,0 @@
1
- import { getCurrentComponentInstance } from "../runtime/component-scope.js";
2
- import { getExecutionModel } from "../runtime/execution-model.js";
3
- import "../runtime/index.js";
4
- import { computeRank, normalizeRouteSegmentName, parseSegments } from "./match.js";
5
- import { compileNodePolicies, nextAccessScopeState, validateAccessMetadata } from "./access.js";
6
- import { createRouteHandler } from "./rendering.js";
7
- import { addRouteToStores, assertRouteRegistrationUnlocked, getCurrentAccessScopeState, getCurrentInheritedPolicies, getCurrentLayoutChain, getCurrentPageChain, getCurrentPageScope, getCurrentPathPrefix, getCurrentRegistrationSession, getCurrentScopeKind, hasActivePageScope, insertRecordSorted, pushRegistrationScope, pushRegistrationSession, setDefaultRouteAuthOptions } from "./store.js";
8
- //#region src/router/authoring.ts
9
- function validateRoutePath(path) {
10
- if (!path.startsWith("/")) throw new Error(`Route path must begin with "/". Got: "${path}"`);
11
- if (/\/{2,}/.test(path)) throw new Error("Route path cannot contain consecutive slashes.");
12
- if (/:([^/{}]+)/.test(path)) {
13
- const suggested = path.replace(/:([^/{}]+)/g, "{$1}");
14
- throw new Error(`Route parameter syntax uses {name} interpolation, not :name. Use "${suggested}" instead of "${path}".`);
15
- }
16
- const segments = path.split("/").filter(Boolean);
17
- const seenParamNames = /* @__PURE__ */ new Set();
18
- for (let index = 0; index < segments.length; index++) {
19
- const segment = segments[index];
20
- if (segment === "*") continue;
21
- const hasOpenBrace = segment.includes("{");
22
- const hasCloseBrace = segment.includes("}");
23
- if (!hasOpenBrace && !hasCloseBrace) continue;
24
- if (!(segment.startsWith("{") && segment.endsWith("}"))) throw new Error("Route parameter segments must use complete {name} interpolation.");
25
- const rawParamName = normalizeRouteSegmentName(segment.slice(1, -1));
26
- const isSplat = rawParamName.startsWith("*");
27
- const paramName = isSplat ? normalizeRouteSegmentName(rawParamName.slice(1)) : rawParamName;
28
- if (!paramName) throw new Error(isSplat ? "Route splat parameter name cannot be empty." : "Route parameter name cannot be empty.");
29
- if (isSplat && paramName === "*") throw new Error("Route named splat parameter name cannot be \"*\".");
30
- if (isSplat && index !== segments.length - 1) throw new Error("Route named splat parameters must be the final segment.");
31
- if (seenParamNames.has(paramName)) throw new Error(`Route path cannot reuse duplicate parameter name "${paramName}".`);
32
- seenParamNames.add(paramName);
33
- }
34
- }
35
- function normalizeAbsoluteRoutePath(path) {
36
- if (!path || path === "/") return "/";
37
- return (path.endsWith("/") ? path.slice(0, -1) : path) || "/";
38
- }
39
- function joinRoutePaths(prefix, path) {
40
- const normalizedPrefix = normalizeAbsoluteRoutePath(prefix || "/");
41
- const normalizedPath = path.replace(/^\/+|\/+$/g, "");
42
- if (!normalizedPath) return normalizedPrefix;
43
- return normalizedPrefix === "/" ? `/${normalizedPath}` : `${normalizedPrefix}/${normalizedPath}`;
44
- }
45
- function resolvePageScopePath(path) {
46
- if (!path) throw new Error("page(path, Component, fn) requires a non-empty path.");
47
- if (path.startsWith("/")) {
48
- validateRoutePath(path);
49
- return normalizeAbsoluteRoutePath(path);
50
- }
51
- return joinRoutePaths(getCurrentPathPrefix(), path);
52
- }
53
- function resolveIndexPath() {
54
- return normalizeAbsoluteRoutePath(getCurrentPathPrefix() || "/");
55
- }
56
- function resolveRouteRegistrationPath(path) {
57
- if (path.startsWith("/")) {
58
- if (hasActivePageScope()) throw new Error(`Child route paths inside page() must be relative. Use "${path.slice(1)}" instead of "${path}".`);
59
- validateRoutePath(path);
60
- return normalizeAbsoluteRoutePath(path);
61
- }
62
- const prefix = getCurrentPathPrefix();
63
- if (!prefix) throw new Error(`Route path must begin with "/". Got: "${path}"`);
64
- return joinRoutePaths(prefix, path);
65
- }
66
- function pushGroupScope(options, fn) {
67
- validateAccessMetadata(options, {
68
- authConfigured: getCurrentRegistrationSession().authConfigured,
69
- state: getCurrentAccessScopeState()
70
- });
71
- const policies = compileNodePolicies(options);
72
- pushRegistrationScope({
73
- kind: "group",
74
- pathPrefix: getCurrentPathPrefix(),
75
- layout: options.layout,
76
- policies,
77
- state: nextAccessScopeState(options, getCurrentAccessScopeState())
78
- }, fn);
79
- }
80
- function pushPageScope(path, Component, options, fn) {
81
- if (hasActivePageScope()) throw new Error("page() cannot be nested inside another page(). Use route() for child leaves or group() for inherited behavior inside the existing page scope.");
82
- validateAccessMetadata(options, {
83
- authConfigured: getCurrentRegistrationSession().authConfigured,
84
- state: getCurrentAccessScopeState()
85
- });
86
- const policies = compileNodePolicies(options);
87
- pushRegistrationScope({
88
- kind: "page",
89
- pathPrefix: resolvePageScopePath(path),
90
- page: Component,
91
- hasIndex: false,
92
- policies,
93
- state: nextAccessScopeState(options, getCurrentAccessScopeState())
94
- }, fn);
95
- }
96
- function normalizeRouteOptions(options) {
97
- if (!options) return;
98
- const loader = options.loader;
99
- const policies = compileNodePolicies(options);
100
- if (!loader && !options.entries && policies.length === 0 && !options.title && !options.namespace && options.auth === void 0 && !options.role && !options.permission) return;
101
- return {
102
- ...loader ? { loader } : {},
103
- ...options.entries ? { entries: options.entries } : {},
104
- ...options.auth !== void 0 ? { auth: options.auth } : {},
105
- ...options.role ? { role: options.role } : {},
106
- ...options.permission ? { permission: options.permission } : {},
107
- ...policies.length > 0 ? { policies } : {},
108
- ...options.title ? { title: options.title } : {},
109
- ...options.namespace ? { namespace: options.namespace } : {}
110
- };
111
- }
112
- function registerRouteAtResolvedPath(path, Component, options, metadata) {
113
- validateRoutePath(path);
114
- validateAccessMetadata(options ?? {}, {
115
- authConfigured: getCurrentRegistrationSession().authConfigured,
116
- state: getCurrentAccessScopeState()
117
- });
118
- const chain = getCurrentLayoutChain();
119
- const pageChain = getCurrentPageChain();
120
- const segments = parseSegments(path);
121
- const rank = computeRank(segments);
122
- const isFallback = metadata?.isFallback ?? path === "/*";
123
- const comp = Component;
124
- const normalizedOptions = normalizeRouteOptions(options);
125
- const policies = [...getCurrentInheritedPolicies(), ...normalizedOptions?.policies ?? []];
126
- const handler = createRouteHandler(comp, pageChain, chain);
127
- const renderHandler = createRouteHandler(comp, pageChain, chain, true);
128
- insertRecordSorted({
129
- path,
130
- component: comp,
131
- segments,
132
- rank,
133
- layoutChain: chain,
134
- pageChain,
135
- options: normalizedOptions ? {
136
- ...normalizedOptions,
137
- ...policies.length > 0 ? { policies } : {}
138
- } : policies.length > 0 ? { policies } : {},
139
- isFallback,
140
- handler,
141
- renderHandler,
142
- ...metadata?.fallbackPrefix ? { fallbackPrefix: metadata.fallbackPrefix } : {}
143
- });
144
- addRouteToStores({
145
- path,
146
- handler,
147
- namespace: normalizedOptions?.namespace ?? options?.namespace,
148
- ...metadata?.fallbackPrefix ? { fallbackPrefix: metadata.fallbackPrefix } : {}
149
- });
150
- }
151
- function group(options, fn) {
152
- pushGroupScope(options, fn);
153
- }
154
- function page(path, Component, optionsOrFn, maybeFn) {
155
- const options = typeof optionsOrFn === "function" ? {} : optionsOrFn;
156
- const fn = typeof optionsOrFn === "function" ? optionsOrFn : maybeFn;
157
- if (typeof Component !== "function") throw new Error("page(path, Component, fn) requires a component function as the second argument.");
158
- if (typeof fn !== "function") throw new Error("page(path, Component, fn) requires a route definition callback as the final argument.");
159
- pushPageScope(path, Component, options, fn);
160
- }
161
- function index(Component, options) {
162
- const pageScope = getCurrentPageScope();
163
- if (pageScope?.hasIndex) throw new Error("page() cannot declare multiple index routes.");
164
- if (pageScope) pageScope.hasIndex = true;
165
- registerRouteAtResolvedPath(resolveIndexPath(), Component, options);
166
- }
167
- function fallback(Component) {
168
- if (hasActivePageScope()) {
169
- if (getCurrentScopeKind() !== "page") throw new Error("fallback() inside page() must be declared directly in the page scope, not inside nested group().");
170
- registerRouteAtResolvedPath(`${getCurrentPathPrefix()}/*`, Component, void 0, {
171
- isFallback: true,
172
- fallbackPrefix: getCurrentPathPrefix()
173
- });
174
- return;
175
- }
176
- if (!(getCurrentInheritedPolicies().length === 0 && !getCurrentAccessScopeState().guestOnly && !getCurrentAccessScopeState().authenticated)) throw new Error("fallback() can only be registered at the root scope. Use route(\"/*\", Component) if you need compatibility behavior.");
177
- registerRouteAtResolvedPath("/*", Component, void 0, {
178
- isFallback: true,
179
- fallbackPrefix: "/"
180
- });
181
- }
182
- function registerRoutes(definition, options = {}) {
183
- setDefaultRouteAuthOptions(options.auth);
184
- pushRegistrationSession({ authConfigured: !!options.auth?.resolve }, definition);
185
- }
186
- function route(path, Component, options) {
187
- if (typeof path === "undefined") throw new Error("route() is only for route registration. Use currentRoute() inside components.");
188
- if (getExecutionModel() === "islands") throw new Error("Routes are not supported with islands. Use createSPA (client) or createSSR (server) instead.");
189
- const currentInst = getCurrentComponentInstance();
190
- if (currentInst && currentInst.ssr) throw new Error("route() cannot be called during SSR rendering. Register routes at module load time instead.");
191
- assertRouteRegistrationUnlocked();
192
- if (typeof Component !== "function") throw new Error("route(path, Component) requires a component function as the second argument. Passing JSX elements or VNodes directly is not supported.");
193
- registerRouteAtResolvedPath(resolveRouteRegistrationPath(path), Component, options);
194
- }
195
- //#endregion
196
- export { fallback, group, index, page, registerRoutes, route };
197
-
198
- //# sourceMappingURL=authoring.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"authoring.js","names":[],"sources":["../../src/router/authoring.ts"],"sourcesContent":["import type {\n GroupHelperOptions,\n PageHelperOptions,\n RegisterRoutesOptions,\n RouteComponent,\n RouteDefinition,\n RouteOptions,\n RouteParams,\n RoutePathParams,\n} from '../common/router';\nimport { getCurrentComponentInstance } from '../runtime';\nimport { getExecutionModel } from '../runtime';\nimport { computeRank, normalizeRouteSegmentName, parseSegments } from './match';\nimport {\n compileNodePolicies,\n nextAccessScopeState,\n validateAccessMetadata,\n} from './access';\nimport type { AnyRouteComponent, InternalRouteRecord } from './internal-types';\nimport { createRouteHandler } from './rendering';\nimport {\n addRouteToStores,\n assertRouteRegistrationUnlocked,\n getCurrentAccessScopeState,\n getCurrentInheritedPolicies,\n getCurrentLayoutChain,\n getCurrentPageChain,\n getCurrentPageScope,\n getCurrentPathPrefix,\n getCurrentRegistrationSession,\n getCurrentScopeKind,\n hasActivePageScope,\n insertRecordSorted,\n pushRegistrationScope,\n pushRegistrationSession,\n setDefaultRouteAuthOptions,\n} from './store';\n\ntype RouteComponentParam<TComponent extends AnyRouteComponent> =\n Parameters<TComponent> extends [] ? unknown : Parameters<TComponent>[0];\n\ntype CompatibleAbsoluteRouteComponent<\n Path extends string,\n TComponent extends AnyRouteComponent,\n> =\n Parameters<TComponent> extends []\n ? TComponent\n : RoutePathParams<Path> extends RouteComponentParam<TComponent>\n ? TComponent\n : never;\n\ntype CompatibleRelativeRouteComponent<\n Path extends string,\n TComponent extends AnyRouteComponent,\n> =\n Parameters<TComponent> extends []\n ? TComponent\n : RouteComponentParam<TComponent> extends Record<\n keyof RoutePathParams<Path>,\n string\n >\n ? TComponent\n : never;\n\ntype CompatibleRouteComponent<\n Path extends string,\n TComponent extends AnyRouteComponent,\n> = Path extends `/${string}`\n ? CompatibleAbsoluteRouteComponent<Path, TComponent>\n : CompatibleRelativeRouteComponent<Path, TComponent>;\n\ntype RouteOptionsForComponent<\n Path extends string,\n TComponent extends AnyRouteComponent,\n> =\n Parameters<TComponent> extends []\n ? RouteOptions<RoutePathParams<Path>>\n : RouteComponentParam<TComponent> extends RouteParams\n ? RouteOptions<RouteComponentParam<TComponent>>\n : RouteOptions<RoutePathParams<Path>>;\n\nfunction validateRoutePath(path: string): void {\n if (!path.startsWith('/')) {\n throw new Error(`Route path must begin with \"/\". Got: \"${path}\"`);\n }\n if (/\\/{2,}/.test(path)) {\n throw new Error('Route path cannot contain consecutive slashes.');\n }\n if (/:([^/{}]+)/.test(path)) {\n const suggested = path.replace(/:([^/{}]+)/g, '{$1}');\n throw new Error(\n `Route parameter syntax uses {name} interpolation, not :name. ` +\n `Use \"${suggested}\" instead of \"${path}\".`\n );\n }\n\n const segments = path.split('/').filter(Boolean);\n const seenParamNames = new Set<string>();\n\n for (let index = 0; index < segments.length; index++) {\n const segment = segments[index];\n if (segment === '*') {\n continue;\n }\n\n const hasOpenBrace = segment.includes('{');\n const hasCloseBrace = segment.includes('}');\n\n if (!hasOpenBrace && !hasCloseBrace) {\n continue;\n }\n\n if (!(segment.startsWith('{') && segment.endsWith('}'))) {\n throw new Error(\n 'Route parameter segments must use complete {name} interpolation.'\n );\n }\n\n const rawParamName = normalizeRouteSegmentName(segment.slice(1, -1));\n const isSplat = rawParamName.startsWith('*');\n const paramName = isSplat\n ? normalizeRouteSegmentName(rawParamName.slice(1))\n : rawParamName;\n\n if (!paramName) {\n throw new Error(\n isSplat\n ? 'Route splat parameter name cannot be empty.'\n : 'Route parameter name cannot be empty.'\n );\n }\n\n if (isSplat && paramName === '*') {\n throw new Error('Route named splat parameter name cannot be \"*\".');\n }\n\n if (isSplat && index !== segments.length - 1) {\n throw new Error(\n 'Route named splat parameters must be the final segment.'\n );\n }\n\n if (seenParamNames.has(paramName)) {\n throw new Error(\n `Route path cannot reuse duplicate parameter name \"${paramName}\".`\n );\n }\n\n seenParamNames.add(paramName);\n }\n}\n\nfunction normalizeAbsoluteRoutePath(path: string): string {\n if (!path || path === '/') {\n return '/';\n }\n\n const normalized = path.endsWith('/') ? path.slice(0, -1) : path;\n return normalized || '/';\n}\n\nfunction joinRoutePaths(prefix: string, path: string): string {\n const normalizedPrefix = normalizeAbsoluteRoutePath(prefix || '/');\n const normalizedPath = path.replace(/^\\/+|\\/+$/g, '');\n\n if (!normalizedPath) {\n return normalizedPrefix;\n }\n\n return normalizedPrefix === '/'\n ? `/${normalizedPath}`\n : `${normalizedPrefix}/${normalizedPath}`;\n}\n\nfunction resolvePageScopePath(path: string): string {\n if (!path) {\n throw new Error('page(path, Component, fn) requires a non-empty path.');\n }\n\n if (path.startsWith('/')) {\n validateRoutePath(path);\n return normalizeAbsoluteRoutePath(path);\n }\n\n return joinRoutePaths(getCurrentPathPrefix(), path);\n}\n\nfunction resolveIndexPath(): string {\n return normalizeAbsoluteRoutePath(getCurrentPathPrefix() || '/');\n}\n\nfunction resolveRouteRegistrationPath(path: string): string {\n if (path.startsWith('/')) {\n if (hasActivePageScope()) {\n throw new Error(\n 'Child route paths inside page() must be relative. ' +\n `Use \"${path.slice(1)}\" instead of \"${path}\".`\n );\n }\n\n validateRoutePath(path);\n return normalizeAbsoluteRoutePath(path);\n }\n\n const prefix = getCurrentPathPrefix();\n\n if (!prefix) {\n throw new Error(`Route path must begin with \"/\". Got: \"${path}\"`);\n }\n\n return joinRoutePaths(prefix, path);\n}\n\nfunction pushGroupScope(\n options: GroupHelperOptions,\n fn: RouteDefinition\n): void {\n const session = getCurrentRegistrationSession();\n validateAccessMetadata(options, {\n authConfigured: session.authConfigured,\n state: getCurrentAccessScopeState(),\n });\n const policies = compileNodePolicies(options);\n\n pushRegistrationScope(\n {\n kind: 'group',\n pathPrefix: getCurrentPathPrefix(),\n layout: options.layout,\n policies,\n state: nextAccessScopeState(options, getCurrentAccessScopeState()),\n },\n fn\n );\n}\n\nfunction pushPageScope(\n path: string,\n Component: RouteComponent,\n options: PageHelperOptions,\n fn: RouteDefinition\n): void {\n if (hasActivePageScope()) {\n throw new Error(\n 'page() cannot be nested inside another page(). ' +\n 'Use route() for child leaves or group() for inherited behavior inside the existing page scope.'\n );\n }\n\n const session = getCurrentRegistrationSession();\n validateAccessMetadata(options, {\n authConfigured: session.authConfigured,\n state: getCurrentAccessScopeState(),\n });\n\n const policies = compileNodePolicies(options);\n\n pushRegistrationScope(\n {\n kind: 'page',\n pathPrefix: resolvePageScopePath(path),\n page: Component,\n hasIndex: false,\n policies,\n state: nextAccessScopeState(options, getCurrentAccessScopeState()),\n },\n fn\n );\n}\n\nfunction normalizeRouteOptions(\n options: RouteOptions | undefined\n): RouteOptions | undefined {\n if (!options) {\n return undefined;\n }\n\n const loader = options.loader;\n const policies = compileNodePolicies(options);\n\n if (\n !loader &&\n !options.entries &&\n policies.length === 0 &&\n !options.title &&\n !options.namespace &&\n options.auth === undefined &&\n !options.role &&\n !options.permission\n ) {\n return undefined;\n }\n\n return {\n ...(loader ? { loader } : {}),\n ...(options.entries ? { entries: options.entries } : {}),\n ...(options.auth !== undefined ? { auth: options.auth } : {}),\n ...(options.role ? { role: options.role } : {}),\n ...(options.permission ? { permission: options.permission } : {}),\n ...(policies.length > 0 ? { policies } : {}),\n ...(options.title ? { title: options.title } : {}),\n ...(options.namespace ? { namespace: options.namespace } : {}),\n };\n}\n\nfunction registerRouteAtResolvedPath(\n path: string,\n Component: RouteComponent,\n options?: RouteOptions,\n metadata?: {\n isFallback?: boolean;\n fallbackPrefix?: string;\n }\n): void {\n validateRoutePath(path);\n\n validateAccessMetadata(options ?? {}, {\n authConfigured: getCurrentRegistrationSession().authConfigured,\n state: getCurrentAccessScopeState(),\n });\n\n const chain = getCurrentLayoutChain();\n const pageChain = getCurrentPageChain();\n const segments = parseSegments(path);\n const rank = computeRank(segments);\n const isFallback = metadata?.isFallback ?? path === '/*';\n const comp = Component;\n const normalizedOptions = normalizeRouteOptions(options);\n const policies = [\n ...getCurrentInheritedPolicies(),\n ...(normalizedOptions?.policies ?? []),\n ];\n\n const handler = createRouteHandler(comp, pageChain, chain);\n const renderHandler = createRouteHandler(comp, pageChain, chain, true);\n\n const record: InternalRouteRecord = {\n path,\n component: comp,\n segments,\n rank,\n layoutChain: chain,\n pageChain,\n options: normalizedOptions\n ? {\n ...normalizedOptions,\n ...(policies.length > 0 ? { policies } : {}),\n }\n : policies.length > 0\n ? { policies }\n : {},\n isFallback,\n handler,\n renderHandler,\n ...(metadata?.fallbackPrefix\n ? { fallbackPrefix: metadata.fallbackPrefix }\n : {}),\n };\n\n insertRecordSorted(record);\n addRouteToStores({\n path,\n handler,\n namespace: normalizedOptions?.namespace ?? options?.namespace,\n ...(metadata?.fallbackPrefix\n ? { fallbackPrefix: metadata.fallbackPrefix }\n : {}),\n });\n}\n\nexport function group(options: GroupHelperOptions, fn: RouteDefinition): void;\nexport function group(options: GroupHelperOptions, fn: RouteDefinition): void {\n pushGroupScope(options, fn);\n}\n\nexport function page<const TPath extends string>(\n path: TPath,\n Component: RouteComponent<RoutePathParams<TPath>>,\n fn: RouteDefinition\n): void;\nexport function page<\n const TPath extends string,\n TComponent extends AnyRouteComponent,\n>(\n path: TPath,\n Component: CompatibleRouteComponent<TPath, TComponent>,\n fn: RouteDefinition\n): void;\nexport function page<const TPath extends string>(\n path: TPath,\n Component: RouteComponent<RoutePathParams<TPath>>,\n options: PageHelperOptions,\n fn: RouteDefinition\n): void;\nexport function page<\n const TPath extends string,\n TComponent extends AnyRouteComponent,\n>(\n path: TPath,\n Component: CompatibleRouteComponent<TPath, TComponent>,\n options: PageHelperOptions,\n fn: RouteDefinition\n): void;\nexport function page(\n path: string,\n Component: RouteComponent,\n optionsOrFn: PageHelperOptions | RouteDefinition,\n maybeFn?: RouteDefinition\n): void {\n const options =\n typeof optionsOrFn === 'function' ? ({} as PageHelperOptions) : optionsOrFn;\n const fn = typeof optionsOrFn === 'function' ? optionsOrFn : maybeFn;\n\n if (typeof Component !== 'function') {\n throw new Error(\n 'page(path, Component, fn) requires a component function as the second argument.'\n );\n }\n\n if (typeof fn !== 'function') {\n throw new Error(\n 'page(path, Component, fn) requires a route definition callback as the final argument.'\n );\n }\n\n pushPageScope(path, Component, options, fn);\n}\n\nexport function index(Component: RouteComponent, options?: RouteOptions): void {\n const pageScope = getCurrentPageScope();\n if (pageScope?.hasIndex) {\n throw new Error('page() cannot declare multiple index routes.');\n }\n\n if (pageScope) {\n pageScope.hasIndex = true;\n }\n\n registerRouteAtResolvedPath(resolveIndexPath(), Component, options);\n}\n\nexport function fallback(Component: RouteComponent): void {\n if (hasActivePageScope()) {\n if (getCurrentScopeKind() !== 'page') {\n throw new Error(\n 'fallback() inside page() must be declared directly in the page scope, not inside nested group().'\n );\n }\n\n registerRouteAtResolvedPath(\n `${getCurrentPathPrefix()}/*`,\n Component,\n undefined,\n { isFallback: true, fallbackPrefix: getCurrentPathPrefix() }\n );\n return;\n }\n\n const allowsRootFallback =\n getCurrentInheritedPolicies().length === 0 &&\n !getCurrentAccessScopeState().guestOnly &&\n !getCurrentAccessScopeState().authenticated;\n\n if (!allowsRootFallback) {\n throw new Error(\n 'fallback() can only be registered at the root scope. ' +\n 'Use route(\"/*\", Component) if you need compatibility behavior.'\n );\n }\n\n registerRouteAtResolvedPath('/*', Component, undefined, {\n isFallback: true,\n fallbackPrefix: '/',\n });\n}\n\nexport function registerRoutes(\n definition: RouteDefinition,\n options: RegisterRoutesOptions = {}\n): void {\n setDefaultRouteAuthOptions(options.auth);\n pushRegistrationSession(\n {\n authConfigured: !!options.auth?.resolve,\n },\n definition\n );\n}\n\nexport function route<const TPath extends string>(\n path: TPath,\n Component: RouteComponent<RoutePathParams<TPath>>,\n options?: RouteOptions<RoutePathParams<TPath>>\n): void;\nexport function route<\n const TPath extends string,\n TComponent extends AnyRouteComponent,\n>(\n path: TPath,\n Component: CompatibleRouteComponent<TPath, TComponent>,\n options?: RouteOptionsForComponent<TPath, TComponent>\n): void;\nexport function route(\n path: string,\n Component: RouteComponent,\n options?: RouteOptions\n): void {\n if (typeof path === 'undefined') {\n throw new Error(\n 'route() is only for route registration. Use currentRoute() inside components.'\n );\n }\n\n if (getExecutionModel() === 'islands') {\n throw new Error(\n 'Routes are not supported with islands. Use createSPA (client) or createSSR (server) instead.'\n );\n }\n\n const currentInst = getCurrentComponentInstance();\n if (currentInst && currentInst.ssr) {\n throw new Error(\n 'route() cannot be called during SSR rendering. Register routes at module load time instead.'\n );\n }\n\n assertRouteRegistrationUnlocked();\n\n if (typeof Component !== 'function') {\n throw new Error(\n 'route(path, Component) requires a component function as the second argument. ' +\n 'Passing JSX elements or VNodes directly is not supported.'\n );\n }\n\n registerRouteAtResolvedPath(\n resolveRouteRegistrationPath(path),\n Component,\n options\n );\n}\n"],"mappings":"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"}
@@ -1,31 +0,0 @@
1
- import { RenderableChild } from "../common/vnode.js";
2
- import { LayoutScopeRecord, PageScopeRecord, Route, RouteHandler, RoutePolicy, RouteRecord } from "../common/router.js";
3
-
4
- //#region src/router/internal-types.d.ts
5
- type AnyRouteComponent = (...args: any[]) => RenderableChild;
6
- type InternalRoute = Route & {
7
- fallbackPrefix?: string;
8
- };
9
- type InternalRouteRecord = RouteRecord & {
10
- fallbackPrefix?: string;
11
- renderHandler?: RouteHandler;
12
- };
13
- type AccessScopeState = {
14
- guestOnly: boolean;
15
- authenticated: boolean;
16
- };
17
- type RegistrationScope = {
18
- kind: 'group' | 'page';
19
- pathPrefix: string;
20
- layout?: LayoutScopeRecord['component'];
21
- page?: PageScopeRecord['component'];
22
- hasIndex?: boolean;
23
- policies: readonly RoutePolicy[];
24
- state: AccessScopeState;
25
- };
26
- type RegistrationSession = {
27
- authConfigured: boolean;
28
- };
29
- //#endregion
30
- export { AccessScopeState, AnyRouteComponent, InternalRoute, InternalRouteRecord, RegistrationScope, RegistrationSession };
31
- //# sourceMappingURL=internal-types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"internal-types.d.ts","names":[],"sources":["../../src/router/internal-types.ts"],"mappings":";;;;KAUY,iBAAA,OAAwB,IAAA,YAAgB,eAAe;AAAA,KAEvD,aAAA,GAAgB,KAAK;EAC/B,cAAc;AAAA;AAAA,KAGJ,mBAAA,GAAsB,WAAA;EAChC,cAAA;EACA,aAAA,GAAgB,YAAY;AAAA;AAAA,KAGlB,gBAAA;EACV,SAAA;EACA,aAAa;AAAA;AAAA,KAGH,iBAAA;EACV,IAAA;EACA,UAAA;EACA,MAAA,GAAS,iBAAA;EACT,IAAA,GAAO,eAAA;EACP,QAAA;EACA,QAAA,WAAmB,WAAA;EACnB,KAAA,EAAO,gBAAA;AAAA;AAAA,KAGG,mBAAA;EACV,cAAc;AAAA"}
@@ -1,19 +0,0 @@
1
- import { RouteManifest, RouteRegistry } from "../common/router.js";
2
- import { AnyRouteComponent } from "./internal-types.js";
3
-
4
- //#region src/router/lazy.d.ts
5
- declare function lazy<TComponent extends AnyRouteComponent>(factory: () => Promise<{
6
- default: TComponent;
7
- } | TComponent>): TComponent;
8
- declare function _snapshotLazy(): Promise<unknown>[];
9
- declare function _snapshotRouteSourceLazy(source: {
10
- registry?: RouteRegistry;
11
- manifest?: RouteManifest;
12
- }): Promise<unknown>[];
13
- declare function _drainLazy(additionalPending?: Iterable<Promise<unknown>>): Promise<void>;
14
- declare function associateRouteSourceLazy(registry: RouteRegistry, manifest: RouteManifest, lazyImports: Promise<unknown>[]): void;
15
- declare function clearPendingLazy(): void;
16
- declare function restorePendingLazy(lazyImports: readonly Promise<unknown>[]): void;
17
- //#endregion
18
- export { lazy };
19
- //# sourceMappingURL=lazy.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lazy.d.ts","names":[],"sources":["../../src/router/lazy.ts"],"mappings":";;;;iBAYgB,IAAA,oBAAwB,iBAAA,EACtC,OAAA,QAAe,OAAA;EAAU,OAAA,EAAS,UAAA;AAAA,IAAe,UAAA,IAChD,UAAA;AAAA,iBA+Ba,aAAA,IAAiB,OAAO;AAAA,iBAIxB,wBAAA,CAAyB,MAAA;EACvC,QAAA,GAAW,aAAA;EACX,QAAA,GAAW,aAAA;AAAA,IACT,OAAA;AAAA,iBAmBY,UAAA,CACd,iBAAA,GAAmB,QAAA,CAAS,OAAA,aAC3B,OAAA;AAAA,iBASa,wBAAA,CACd,QAAA,EAAU,aAAA,EACV,QAAA,EAAU,aAAA,EACV,WAAA,EAAa,OAAA;AAAA,iBAUC,gBAAA;AAAA,iBAIA,kBAAA,CAAmB,WAAwC,WAAlB,OAAO"}
@@ -1,52 +0,0 @@
1
- //#region src/router/lazy.ts
2
- const pendingLazy = /* @__PURE__ */ new Set();
3
- const registryLazyImports = /* @__PURE__ */ new WeakMap();
4
- const manifestLazyImports = /* @__PURE__ */ new WeakMap();
5
- function lazy(factory) {
6
- let resolved = null;
7
- let loadError = null;
8
- const promise = factory().then((mod) => {
9
- resolved = typeof mod === "function" ? mod : mod.default;
10
- pendingLazy.delete(promise);
11
- }, (err) => {
12
- loadError = err;
13
- pendingLazy.delete(promise);
14
- });
15
- pendingLazy.add(promise);
16
- return ((params) => {
17
- if (loadError) throw loadError;
18
- if (!resolved) throw new Error("lazy() component used before it was resolved. Await createSPA() / hydrateSPA() to ensure all chunks load first.");
19
- return resolved(params);
20
- });
21
- }
22
- function _snapshotLazy() {
23
- return [...pendingLazy];
24
- }
25
- function _snapshotRouteSourceLazy(source) {
26
- const imports = /* @__PURE__ */ new Set();
27
- if (source.registry) for (const lazyImport of registryLazyImports.get(source.registry) ?? []) imports.add(lazyImport);
28
- const manifest = source.manifest ?? source.registry?.manifest;
29
- if (manifest) for (const lazyImport of manifestLazyImports.get(manifest) ?? []) imports.add(lazyImport);
30
- return [...imports];
31
- }
32
- function _drainLazy(additionalPending = []) {
33
- const combined = /* @__PURE__ */ new Set([...additionalPending, ...pendingLazy]);
34
- if (combined.size === 0) return Promise.resolve();
35
- return Promise.allSettled(combined).then(() => void 0);
36
- }
37
- function associateRouteSourceLazy(registry, manifest, lazyImports) {
38
- if (lazyImports.length === 0) return;
39
- registryLazyImports.set(registry, lazyImports);
40
- manifestLazyImports.set(manifest, lazyImports);
41
- }
42
- function clearPendingLazy() {
43
- pendingLazy.clear();
44
- }
45
- function restorePendingLazy(lazyImports) {
46
- pendingLazy.clear();
47
- for (const lazyImport of lazyImports) pendingLazy.add(lazyImport);
48
- }
49
- //#endregion
50
- export { _drainLazy, _snapshotLazy, _snapshotRouteSourceLazy, associateRouteSourceLazy, clearPendingLazy, lazy, restorePendingLazy };
51
-
52
- //# sourceMappingURL=lazy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lazy.js","names":[],"sources":["../../src/router/lazy.ts"],"sourcesContent":["import type {\n RouteManifest,\n RouteParams,\n RouteRegistry,\n RouteComponent,\n} from '../common/router';\nimport type { AnyRouteComponent } from './internal-types';\n\nconst pendingLazy = new Set<Promise<unknown>>();\nconst registryLazyImports = new WeakMap<RouteRegistry, Promise<unknown>[]>();\nconst manifestLazyImports = new WeakMap<RouteManifest, Promise<unknown>[]>();\n\nexport function lazy<TComponent extends AnyRouteComponent>(\n factory: () => Promise<{ default: TComponent } | TComponent>\n): TComponent {\n let resolved: TComponent | null = null;\n let loadError: unknown = null;\n\n const promise = factory().then(\n (mod) => {\n resolved =\n typeof mod === 'function'\n ? mod\n : (mod as { default: TComponent }).default;\n pendingLazy.delete(promise);\n },\n (err: unknown) => {\n loadError = err;\n pendingLazy.delete(promise);\n }\n );\n pendingLazy.add(promise);\n\n return ((params: RouteParams) => {\n if (loadError) throw loadError as Error;\n if (!resolved) {\n throw new Error(\n 'lazy() component used before it was resolved. ' +\n 'Await createSPA() / hydrateSPA() to ensure all chunks load first.'\n );\n }\n return (resolved as RouteComponent<RouteParams>)(params);\n }) as TComponent;\n}\n\nexport function _snapshotLazy(): Promise<unknown>[] {\n return [...pendingLazy];\n}\n\nexport function _snapshotRouteSourceLazy(source: {\n registry?: RouteRegistry;\n manifest?: RouteManifest;\n}): Promise<unknown>[] {\n const imports = new Set<Promise<unknown>>();\n\n if (source.registry) {\n for (const lazyImport of registryLazyImports.get(source.registry) ?? []) {\n imports.add(lazyImport);\n }\n }\n\n const manifest = source.manifest ?? source.registry?.manifest;\n if (manifest) {\n for (const lazyImport of manifestLazyImports.get(manifest) ?? []) {\n imports.add(lazyImport);\n }\n }\n\n return [...imports];\n}\n\nexport function _drainLazy(\n additionalPending: Iterable<Promise<unknown>> = []\n): Promise<void> {\n const combined = new Set<Promise<unknown>>([\n ...additionalPending,\n ...pendingLazy,\n ]);\n if (combined.size === 0) return Promise.resolve();\n return Promise.allSettled(combined).then(() => undefined);\n}\n\nexport function associateRouteSourceLazy(\n registry: RouteRegistry,\n manifest: RouteManifest,\n lazyImports: Promise<unknown>[]\n): void {\n if (lazyImports.length === 0) {\n return;\n }\n\n registryLazyImports.set(registry, lazyImports);\n manifestLazyImports.set(manifest, lazyImports);\n}\n\nexport function clearPendingLazy(): void {\n pendingLazy.clear();\n}\n\nexport function restorePendingLazy(lazyImports: readonly Promise<unknown>[]) {\n pendingLazy.clear();\n for (const lazyImport of lazyImports) {\n pendingLazy.add(lazyImport);\n }\n}\n"],"mappings":";AAQA,MAAM,8BAAc,IAAI,IAAsB;AAC9C,MAAM,sCAAsB,IAAI,QAA2C;AAC3E,MAAM,sCAAsB,IAAI,QAA2C;AAE3E,SAAgB,KACd,SACY;CACZ,IAAI,WAA8B;CAClC,IAAI,YAAqB;CAEzB,MAAM,UAAU,QAAQ,CAAC,CAAC,MACvB,QAAQ;EACP,WACE,OAAO,QAAQ,aACX,MACC,IAAgC;EACvC,YAAY,OAAO,OAAO;CAC5B,IACC,QAAiB;EAChB,YAAY;EACZ,YAAY,OAAO,OAAO;CAC5B,CACF;CACA,YAAY,IAAI,OAAO;CAEvB,SAAS,WAAwB;EAC/B,IAAI,WAAW,MAAM;EACrB,IAAI,CAAC,UACH,MAAM,IAAI,MACR,iHAEF;EAEF,OAAQ,SAAyC,MAAM;CACzD;AACF;AAEA,SAAgB,gBAAoC;CAClD,OAAO,CAAC,GAAG,WAAW;AACxB;AAEA,SAAgB,yBAAyB,QAGlB;CACrB,MAAM,0BAAU,IAAI,IAAsB;CAE1C,IAAI,OAAO,UACT,KAAK,MAAM,cAAc,oBAAoB,IAAI,OAAO,QAAQ,KAAK,CAAC,GACpE,QAAQ,IAAI,UAAU;CAI1B,MAAM,WAAW,OAAO,YAAY,OAAO,UAAU;CACrD,IAAI,UACF,KAAK,MAAM,cAAc,oBAAoB,IAAI,QAAQ,KAAK,CAAC,GAC7D,QAAQ,IAAI,UAAU;CAI1B,OAAO,CAAC,GAAG,OAAO;AACpB;AAEA,SAAgB,WACd,oBAAgD,CAAC,GAClC;CACf,MAAM,2BAAW,IAAI,IAAsB,CACzC,GAAG,mBACH,GAAG,WACL,CAAC;CACD,IAAI,SAAS,SAAS,GAAG,OAAO,QAAQ,QAAQ;CAChD,OAAO,QAAQ,WAAW,QAAQ,CAAC,CAAC,WAAW,MAAS;AAC1D;AAEA,SAAgB,yBACd,UACA,UACA,aACM;CACN,IAAI,YAAY,WAAW,GACzB;CAGF,oBAAoB,IAAI,UAAU,WAAW;CAC7C,oBAAoB,IAAI,UAAU,WAAW;AAC/C;AAEA,SAAgB,mBAAyB;CACvC,YAAY,MAAM;AACpB;AAEA,SAAgB,mBAAmB,aAA0C;CAC3E,YAAY,MAAM;CAClB,KAAK,MAAM,cAAc,aACvB,YAAY,IAAI,UAAU;AAE9B"}
@@ -1,10 +0,0 @@
1
- import { RegisterRoutesOptions, RouteDefinition, RouteManifest, RouteRegistry } from "../common/router.js";
2
-
3
- //#region src/router/manifest.d.ts
4
- declare function getManifest(): RouteManifest;
5
- declare function _applyManifest(manifest: RouteManifest): void;
6
- declare function clearRoutes(): void;
7
- declare function createRouteRegistry(definition: RouteDefinition, options?: RegisterRoutesOptions): RouteRegistry;
8
- //#endregion
9
- export { clearRoutes, createRouteRegistry, getManifest };
10
- //# sourceMappingURL=manifest.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"manifest.d.ts","names":[],"sources":["../../src/router/manifest.ts"],"mappings":";;;iBA0BgB,WAAA,IAAe,aAAa;AAAA,iBAQ5B,cAAA,CAAe,QAAuB,EAAb,aAAa;AAAA,iBAkBtC,WAAA;AAAA,iBAKA,mBAAA,CACd,UAAA,EAAY,eAAA,EACZ,OAAA,GAAS,qBAAA,GACR,aAAA"}
@@ -1,49 +0,0 @@
1
- import { addRouteToStores, clearRouteState, getDefaultRouteAuthOptions, getRouteRecords, getRoutes, insertRecordSorted, restoreRouteState, setDefaultRouteAuthOptions, snapshotRouteState } from "./store.js";
2
- import { registerRoutes } from "./authoring.js";
3
- import { _snapshotLazy, associateRouteSourceLazy, clearPendingLazy, restorePendingLazy } from "./lazy.js";
4
- //#region src/router/manifest.ts
5
- function getManifest() {
6
- const auth = getDefaultRouteAuthOptions();
7
- return {
8
- records: [...getRouteRecords()],
9
- ...auth ? { auth } : {}
10
- };
11
- }
12
- function _applyManifest(manifest) {
13
- setDefaultRouteAuthOptions(manifest.auth);
14
- for (const record of manifest.records) {
15
- insertRecordSorted(record);
16
- addRouteToStores({
17
- path: record.path,
18
- handler: record.handler,
19
- namespace: record.options.namespace,
20
- ..."fallbackPrefix" in record && typeof record.fallbackPrefix === "string" ? { fallbackPrefix: record.fallbackPrefix } : {}
21
- });
22
- }
23
- }
24
- function clearRoutes() {
25
- clearRouteState();
26
- clearPendingLazy();
27
- }
28
- function createRouteRegistry(definition, options = {}) {
29
- const previous = snapshotRouteState();
30
- const previousLazy = _snapshotLazy();
31
- clearRoutes();
32
- try {
33
- registerRoutes(definition, options);
34
- const manifest = getManifest();
35
- const registry = Object.freeze({
36
- manifest,
37
- routes: getRoutes()
38
- });
39
- associateRouteSourceLazy(registry, manifest, _snapshotLazy());
40
- return registry;
41
- } finally {
42
- restoreRouteState(previous);
43
- restorePendingLazy(previousLazy);
44
- }
45
- }
46
- //#endregion
47
- export { _applyManifest, clearRoutes, createRouteRegistry, getManifest };
48
-
49
- //# sourceMappingURL=manifest.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"manifest.js","names":[],"sources":["../../src/router/manifest.ts"],"sourcesContent":["import type {\n RegisterRoutesOptions,\n RouteManifest,\n RouteRegistry,\n RouteDefinition,\n} from '../common/router';\nimport { registerRoutes } from './authoring';\nimport {\n addRouteToStores,\n clearRouteState,\n getDefaultRouteAuthOptions,\n getRouteRecords,\n getRoutes,\n insertRecordSorted,\n restoreRouteState,\n setDefaultRouteAuthOptions,\n snapshotRouteState,\n} from './store';\nimport type { InternalRouteRecord } from './internal-types';\nimport {\n _snapshotLazy,\n associateRouteSourceLazy,\n clearPendingLazy,\n restorePendingLazy,\n} from './lazy';\n\nexport function getManifest(): RouteManifest {\n const auth = getDefaultRouteAuthOptions();\n return {\n records: [...getRouteRecords()],\n ...(auth ? { auth } : {}),\n };\n}\n\nexport function _applyManifest(manifest: RouteManifest): void {\n setDefaultRouteAuthOptions(manifest.auth);\n for (const record of manifest.records) {\n insertRecordSorted(record as InternalRouteRecord);\n addRouteToStores({\n path: record.path,\n handler: record.handler,\n namespace: record.options.namespace,\n ...('fallbackPrefix' in record &&\n typeof (record as InternalRouteRecord).fallbackPrefix === 'string'\n ? {\n fallbackPrefix: (record as InternalRouteRecord).fallbackPrefix,\n }\n : {}),\n });\n }\n}\n\nexport function clearRoutes(): void {\n clearRouteState();\n clearPendingLazy();\n}\n\nexport function createRouteRegistry(\n definition: RouteDefinition,\n options: RegisterRoutesOptions = {}\n): RouteRegistry {\n const previous = snapshotRouteState();\n const previousLazy = _snapshotLazy();\n clearRoutes();\n\n try {\n registerRoutes(definition, options);\n const manifest = getManifest();\n const registry = Object.freeze({\n manifest,\n routes: getRoutes(),\n });\n const lazyImports = _snapshotLazy();\n associateRouteSourceLazy(registry, manifest, lazyImports);\n\n return registry;\n } finally {\n restoreRouteState(previous);\n restorePendingLazy(previousLazy);\n }\n}\n"],"mappings":";;;;AA0BA,SAAgB,cAA6B;CAC3C,MAAM,OAAO,2BAA2B;CACxC,OAAO;EACL,SAAS,CAAC,GAAG,gBAAgB,CAAC;EAC9B,GAAI,OAAO,EAAE,KAAK,IAAI,CAAC;CACzB;AACF;AAEA,SAAgB,eAAe,UAA+B;CAC5D,2BAA2B,SAAS,IAAI;CACxC,KAAK,MAAM,UAAU,SAAS,SAAS;EACrC,mBAAmB,MAA6B;EAChD,iBAAiB;GACf,MAAM,OAAO;GACb,SAAS,OAAO;GAChB,WAAW,OAAO,QAAQ;GAC1B,GAAI,oBAAoB,UACxB,OAAQ,OAA+B,mBAAmB,WACtD,EACE,gBAAiB,OAA+B,eAClD,IACA,CAAC;EACP,CAAC;CACH;AACF;AAEA,SAAgB,cAAoB;CAClC,gBAAgB;CAChB,iBAAiB;AACnB;AAEA,SAAgB,oBACd,YACA,UAAiC,CAAC,GACnB;CACf,MAAM,WAAW,mBAAmB;CACpC,MAAM,eAAe,cAAc;CACnC,YAAY;CAEZ,IAAI;EACF,eAAe,YAAY,OAAO;EAClC,MAAM,WAAW,YAAY;EAC7B,MAAM,WAAW,OAAO,OAAO;GAC7B;GACA,QAAQ,UAAU;EACpB,CAAC;EAED,yBAAyB,UAAU,UADf,cACyB,CAAW;EAExD,OAAO;CACT,UAAU;EACR,kBAAkB,QAAQ;EAC1B,mBAAmB,YAAY;CACjC;AACF"}
@@ -1,122 +0,0 @@
1
- //#region src/router/match.ts
2
- function splitPathSegments(path) {
3
- const normalized = path.endsWith("/") && path !== "/" ? path.slice(0, -1) : path;
4
- if (!normalized || normalized === "/") return [];
5
- const withoutLeadingSlash = normalized.startsWith("/") ? normalized.slice(1) : normalized;
6
- return withoutLeadingSlash.length === 0 ? [] : withoutLeadingSlash.split("/");
7
- }
8
- function normalizeRouteSegmentName(value) {
9
- return value.trim();
10
- }
11
- /**
12
- * Parse a route template path into typed segments.
13
- *
14
- * @example
15
- * parseSegments('/users/{id}') // [{kind:'static',value:'users'},{kind:'param',value:'id'}]
16
- * parseSegments('/*') // [{kind:'catchall',value:'*'}]
17
- * parseSegments('/posts/*') // [{kind:'static',value:'posts'},{kind:'wildcard',value:'*'}]
18
- * parseSegments('/files/{*path}') // [{kind:'static',value:'files'},{kind:'splat',value:'path'}]
19
- */
20
- function parseSegments(path) {
21
- const parts = (path.endsWith("/") && path !== "/" ? path.slice(0, -1) : path).split("/").filter(Boolean);
22
- if (parts.length === 1 && parts[0] === "*") return [{
23
- kind: "catchall",
24
- value: "*"
25
- }];
26
- return parts.map((segment) => {
27
- if (segment.startsWith("{") && segment.endsWith("}")) {
28
- const value = normalizeRouteSegmentName(segment.slice(1, -1));
29
- if (value.startsWith("*")) return {
30
- kind: "splat",
31
- value: normalizeRouteSegmentName(value.slice(1))
32
- };
33
- return {
34
- kind: "param",
35
- value
36
- };
37
- }
38
- if (segment === "*") return {
39
- kind: "wildcard",
40
- value: "*"
41
- };
42
- return {
43
- kind: "static",
44
- value: segment
45
- };
46
- });
47
- }
48
- /**
49
- * Compute a numeric specificity rank from a parsed segment list.
50
- *
51
- * Scoring: static = 3, param = 2, wildcard = 1, catchall = 0.
52
- * Higher rank wins when multiple routes match the same path.
53
- */
54
- function computeRank(segments) {
55
- if (segments.length === 1 && segments[0].kind === "catchall") return -1;
56
- let score = 0;
57
- for (const seg of segments) if (seg.kind === "static") score += 3;
58
- else if (seg.kind === "param") score += 2;
59
- else if (seg.kind === "wildcard") score += 1;
60
- else if (seg.kind === "splat") score -= .5;
61
- return score;
62
- }
63
- /** Reused frozen empty params object — returned for purely-static (no-capture) routes. */
64
- const emptyParams = Object.freeze(Object.create(null));
65
- Object.freeze({
66
- matched: false,
67
- params: emptyParams
68
- });
69
- function decodeRouteParam(part) {
70
- if (!part.includes("%")) return part;
71
- try {
72
- return decodeURIComponent(part);
73
- } catch {
74
- return part;
75
- }
76
- }
77
- /**
78
- * Match pre-split URL parts against pre-parsed route segments.
79
- *
80
- * This is the hot-path matcher used by `resolveRoute` and
81
- * `resolveRouteFromRoutes`. Callers split the URL path **once** and reuse
82
- * `urlParts` across all route comparisons in a single resolution call.
83
- *
84
- * - Returns a params object (possibly the shared `{}`) on match.
85
- * - Returns `null` on no match.
86
- * - Params are allocated lazily — purely-static routes return the frozen
87
- * empty sentinel without any heap allocation.
88
- */
89
- function matchSegments(urlParts, segments) {
90
- if (segments.length === 1 && segments[0].kind === "catchall") return { "*": urlParts.length === 0 ? "/" : urlParts.length === 1 ? urlParts[0] : "/" + urlParts.join("/") };
91
- const splatIndex = segments.findIndex((segment) => segment.kind === "splat");
92
- if (splatIndex !== -1) {
93
- if (splatIndex !== segments.length - 1) return null;
94
- if (urlParts.length < splatIndex) return null;
95
- } else if (urlParts.length !== segments.length) return null;
96
- let params = null;
97
- const normalizeCapturedSplatParts = (parts) => {
98
- let start = 0;
99
- while (start < parts.length && parts[start] === "") start += 1;
100
- return start === 0 ? parts : parts.slice(start);
101
- };
102
- for (let i = 0; i < segments.length; i++) {
103
- const seg = segments[i];
104
- const part = urlParts[i];
105
- if (seg.kind === "static") {
106
- if (seg.value !== part) return null;
107
- } else if (seg.kind === "splat") {
108
- if (params === null) params = {};
109
- params[seg.value] = normalizeCapturedSplatParts(urlParts.slice(i).map(decodeRouteParam)).join("/");
110
- return params;
111
- } else {
112
- if (params === null) params = {};
113
- if (seg.kind === "param") params[seg.value] = decodeRouteParam(part);
114
- else params["*"] = part;
115
- }
116
- }
117
- return params ?? emptyParams;
118
- }
119
- //#endregion
120
- export { computeRank, matchSegments, normalizeRouteSegmentName, parseSegments, splitPathSegments };
121
-
122
- //# sourceMappingURL=match.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"match.js","names":[],"sources":["../../src/router/match.ts"],"sourcesContent":["/**\n * Path matching, segment parsing, and specificity scoring.\n */\n\nimport type { ParsedSegment } from '../common/router';\n\nexport function splitPathSegments(path: string): string[] {\n const normalized =\n path.endsWith('/') && path !== '/' ? path.slice(0, -1) : path;\n\n if (!normalized || normalized === '/') {\n return [];\n }\n\n const withoutLeadingSlash = normalized.startsWith('/')\n ? normalized.slice(1)\n : normalized;\n\n return withoutLeadingSlash.length === 0 ? [] : withoutLeadingSlash.split('/');\n}\n\nexport function normalizeRouteSegmentName(value: string): string {\n return value.trim();\n}\n\n/**\n * Parse a route template path into typed segments.\n *\n * @example\n * parseSegments('/users/{id}') // [{kind:'static',value:'users'},{kind:'param',value:'id'}]\n * parseSegments('/*') // [{kind:'catchall',value:'*'}]\n * parseSegments('/posts/*') // [{kind:'static',value:'posts'},{kind:'wildcard',value:'*'}]\n * parseSegments('/files/{*path}') // [{kind:'static',value:'files'},{kind:'splat',value:'path'}]\n */\nexport function parseSegments(path: string): ParsedSegment[] {\n const normalized =\n path.endsWith('/') && path !== '/' ? path.slice(0, -1) : path;\n\n const parts = normalized.split('/').filter(Boolean);\n\n // Bare catch-all: /*\n if (parts.length === 1 && parts[0] === '*') {\n return [{ kind: 'catchall', value: '*' }];\n }\n\n return parts.map((segment): ParsedSegment => {\n if (segment.startsWith('{') && segment.endsWith('}')) {\n const value = normalizeRouteSegmentName(segment.slice(1, -1));\n if (value.startsWith('*')) {\n return {\n kind: 'splat',\n value: normalizeRouteSegmentName(value.slice(1)),\n };\n }\n return { kind: 'param', value };\n }\n if (segment === '*') {\n return { kind: 'wildcard', value: '*' };\n }\n return { kind: 'static', value: segment };\n });\n}\n\n/**\n * Compute a numeric specificity rank from a parsed segment list.\n *\n * Scoring: static = 3, param = 2, wildcard = 1, catchall = 0.\n * Higher rank wins when multiple routes match the same path.\n */\nexport function computeRank(segments: ParsedSegment[]): number {\n if (segments.length === 1 && segments[0].kind === 'catchall') return -1;\n let score = 0;\n for (const seg of segments) {\n if (seg.kind === 'static') score += 3;\n else if (seg.kind === 'param') score += 2;\n else if (seg.kind === 'wildcard') score += 1;\n else if (seg.kind === 'splat') score -= 0.5;\n // catchall contributes 0 per segment but is handled above\n }\n return score;\n}\n\n/** Reused frozen empty params object — returned for purely-static (no-capture) routes. */\nconst emptyParams: Record<string, string> = Object.freeze(\n Object.create(null) as Record<string, string>\n);\n\n/** Returned for every failed match — avoids per-call allocation. */\nconst noMatch: MatchResult = Object.freeze({\n matched: false,\n params: emptyParams,\n});\n\nfunction decodeRouteParam(part: string): string {\n if (!part.includes('%')) {\n return part;\n }\n\n try {\n return decodeURIComponent(part);\n } catch {\n return part;\n }\n}\n\n/**\n * Match pre-split URL parts against pre-parsed route segments.\n *\n * This is the hot-path matcher used by `resolveRoute` and\n * `resolveRouteFromRoutes`. Callers split the URL path **once** and reuse\n * `urlParts` across all route comparisons in a single resolution call.\n *\n * - Returns a params object (possibly the shared `{}`) on match.\n * - Returns `null` on no match.\n * - Params are allocated lazily — purely-static routes return the frozen\n * empty sentinel without any heap allocation.\n */\nexport function matchSegments(\n urlParts: string[],\n segments: ParsedSegment[]\n): Record<string, string> | null {\n // catch-all /* — matches every URL at any depth\n if (segments.length === 1 && segments[0].kind === 'catchall') {\n return {\n '*':\n urlParts.length === 0\n ? '/'\n : urlParts.length === 1\n ? urlParts[0]\n : '/' + urlParts.join('/'),\n };\n }\n\n const splatIndex = segments.findIndex((segment) => segment.kind === 'splat');\n if (splatIndex !== -1) {\n if (splatIndex !== segments.length - 1) {\n return null;\n }\n if (urlParts.length < splatIndex) {\n return null;\n }\n } else if (urlParts.length !== segments.length) {\n return null;\n }\n\n // non-catchall: part count must equal segment count\n\n // Walk segments; allocate the params object lazily on first capture\n let params: Record<string, string> | null = null;\n\n const normalizeCapturedSplatParts = (parts: string[]): string[] => {\n let start = 0;\n while (start < parts.length && parts[start] === '') {\n start += 1;\n }\n\n return start === 0 ? parts : parts.slice(start);\n };\n\n for (let i = 0; i < segments.length; i++) {\n const seg = segments[i];\n const part = urlParts[i];\n if (seg.kind === 'static') {\n if (seg.value !== part) return null;\n } else if (seg.kind === 'splat') {\n if (params === null) params = {};\n params[seg.value] = normalizeCapturedSplatParts(\n urlParts.slice(i).map(decodeRouteParam)\n ).join('/');\n return params;\n } else {\n if (params === null) params = {};\n if (seg.kind === 'param') {\n params[seg.value] = decodeRouteParam(part);\n } else {\n // wildcard\n params['*'] = part;\n }\n }\n }\n return params ?? emptyParams;\n}\n\nexport interface MatchResult {\n matched: boolean;\n params: Record<string, string>;\n}\n\n/**\n * Match a path against a route pattern and extract params\n *\n * @example\n * match('/users/123', '/users/{id}')\n * // → { matched: true, params: { id: '123' } }\n *\n * match('/posts/hello-world/edit', '/posts/{slug}/{action}')\n * // → { matched: true, params: { slug: 'hello-world', action: 'edit' } }\n *\n * match('/users', '/posts/{id}')\n * // → { matched: false, params: {} }\n */\nexport function match(path: string, pattern: string): MatchResult {\n // Normalize trailing slashes\n const normalizedPath =\n path.endsWith('/') && path !== '/' ? path.slice(0, -1) : path;\n const normalizedPattern =\n pattern.endsWith('/') && pattern !== '/' ? pattern.slice(0, -1) : pattern;\n\n const pathSegments = splitPathSegments(normalizedPath);\n const patternSegments = parseSegments(normalizedPattern);\n const params = matchSegments(pathSegments, patternSegments);\n\n return params === null ? noMatch : { matched: true, params };\n}\n"],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- import { HistoryScrollBehavior, NavigationScrollBehavior, ScrollRestorationOptions } from "./navigation-scroll.js";
2
- import { NavigateOptions } from "./navigation-targets.js";
3
- import { RouteQueryParamInput, RouteQueryParamValue, RouteQueryUpdater, RouteQueryUpdates, UpdateRouteQueryOptions, updateRouteQuery } from "./route-query.js";
4
-
5
- //#region src/router/navigate.d.ts
6
- declare function navigate(path: string, options?: NavigateOptions): void;
7
- declare function initializeNavigation(): void;
8
- declare function cleanupNavigation(): void;
9
- //#endregion
10
- export { type HistoryScrollBehavior, type NavigateOptions, type NavigationScrollBehavior, type RouteQueryParamInput, type RouteQueryParamValue, type RouteQueryUpdater, type RouteQueryUpdates, type ScrollRestorationOptions, type UpdateRouteQueryOptions, navigate, updateRouteQuery };
11
- //# sourceMappingURL=navigate.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"navigate.d.ts","names":[],"sources":["../../src/router/navigate.ts"],"mappings":";;;;;iBAmDgB,QAAA,CAAS,IAAA,UAAc,OAAA,GAAS,eAAoB;AAAA,iBAyHpD,oBAAA;AAAA,iBASA,iBAAA"}