@askrjs/askr 0.0.52 → 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 (386) hide show
  1. package/README.md +5 -1
  2. package/dist/{runtime/scheduler.js → access-Bg4RJNC8.js} +182 -9
  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 -1
  6. package/dist/benchmark.d.ts +6 -2
  7. package/dist/benchmark.js +63 -11
  8. package/dist/boot/index.d.ts +61 -2
  9. package/dist/boot/index.js +1 -203
  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} +8 -1
  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 -1
  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 -1
  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} +32 -31
  30. package/dist/deferred-lKE8uR0z.js +386 -0
  31. package/dist/{runtime/effect.js → effect-BwnIvLah.js} +4 -4
  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 -8
  53. package/dist/index-SJXJkssx.d.ts +44 -0
  54. package/dist/index.d.ts +8 -13
  55. package/dist/index.js +150 -15
  56. package/dist/interactions-w7gQN4ha.js +280 -0
  57. package/dist/{data/invalidation-listeners.js → invalidation-listeners-Des3AHYs.js} +1 -1
  58. package/dist/{common/props.d.ts → jsx-CP0gmYwJ.d.ts} +17 -5
  59. package/dist/{common/jsx.js → jsx-CUpRxrLH.js} +1 -1
  60. package/dist/jsx-dev-runtime.d.ts +2 -4
  61. package/dist/jsx-dev-runtime.js +7 -5
  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 +2 -35
  65. package/dist/jsx-runtime.js +11 -5
  66. package/dist/{runtime/lifecycle-operations.js → lifecycle-operations-D9va7GOU.js} +4 -5
  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} +33 -36
  70. package/dist/query-registry-CQIT4mXr.js +73 -0
  71. package/dist/{common/render-context.js → render-context-Clw3rFiO.js} +14 -6
  72. package/dist/renderer-DzPjeLby.js +6197 -0
  73. package/dist/{runtime/resource-operation.js → resource-operation-CEzfpnDk.js} +118 -15
  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 -1
  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 -28
  81. package/dist/{common/router-internal.js → router-internal-BC0w1_xk.js} +1 -1
  82. package/dist/{runtime/scheduler.d.ts → scheduler-CmLO4Dfm.d.ts} +1 -3
  83. package/dist/{runtime/selector.js → selector-DafVYzV4.js} +34 -11
  84. package/dist/{runtime/snapshot-source.js → snapshot-source-BB42xgwb.js} +1 -1
  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 -1
  90. package/dist/ssr-D3t80Rc0.js +1413 -0
  91. package/dist/{runtime/state.js → state-DPl8lffD.js} +3 -5
  92. package/dist/structures-DUB3HchX.js +221 -0
  93. package/dist/testing/index.d.ts +3 -2
  94. package/dist/testing/index.js +2 -5
  95. package/dist/{jsx/types.d.ts → types-DnQVG4ZY.d.ts} +2 -5
  96. package/dist/{foundations/utilities/use-id.js → utilities-C_CGX4Dz.js} +1 -1
  97. package/dist/{ssr/verify-hydration.js → verify-hydration-io9ahUeq.js} +2 -2
  98. package/dist/{common/vnode.js → vnode-CGMJYPMB.js} +2 -2
  99. package/package.json +12 -7
  100. package/dist/bench/components/benchmark-row.d.ts +0 -20
  101. package/dist/bench/components/benchmark-row.js +0 -40
  102. package/dist/bench/components/benchmark-table.js +0 -23
  103. package/dist/bin/askr-ssg.d.ts +0 -27
  104. package/dist/bin/askr-ssg.js +0 -186
  105. package/dist/boot/hydration.js +0 -139
  106. package/dist/boot/root-lifecycle.d.ts +0 -18
  107. package/dist/boot/root-lifecycle.js +0 -209
  108. package/dist/boot/route-startup.js +0 -54
  109. package/dist/boot/types.d.ts +0 -61
  110. package/dist/common/component.d.ts +0 -18
  111. package/dist/common/control.d.ts +0 -12
  112. package/dist/common/dom-range.d.ts +0 -13
  113. package/dist/common/env.js +0 -41
  114. package/dist/common/error-boundary.d.ts +0 -15
  115. package/dist/common/invariant.js +0 -15
  116. package/dist/common/jsx.d.ts +0 -22
  117. package/dist/common/logger.js +0 -34
  118. package/dist/common/promise.js +0 -6
  119. package/dist/common/ssr-errors.d.ts +0 -10
  120. package/dist/common/ssr-errors.js +0 -14
  121. package/dist/common/ssr.d.ts +0 -41
  122. package/dist/common/vnode.d.ts +0 -21
  123. package/dist/components/error-boundary.d.ts +0 -14
  124. package/dist/components/error-boundary.js +0 -41
  125. package/dist/components/link.d.ts +0 -68
  126. package/dist/components/link.js +0 -74
  127. package/dist/control/case.d.ts +0 -18
  128. package/dist/control/case.js +0 -68
  129. package/dist/control/for.d.ts +0 -23
  130. package/dist/control/for.js +0 -61
  131. package/dist/control/shared.d.ts +0 -8
  132. package/dist/control/shared.js +0 -18
  133. package/dist/control/show.d.ts +0 -14
  134. package/dist/control/show.js +0 -32
  135. package/dist/data/data-runtime.d.ts +0 -27
  136. package/dist/data/invalidation.d.ts +0 -8
  137. package/dist/data/invalidation.js +0 -25
  138. package/dist/data/mutation-cell.d.ts +0 -27
  139. package/dist/data/mutation-cell.js +0 -133
  140. package/dist/data/query-cell.d.ts +0 -47
  141. package/dist/data/query-cell.js +0 -324
  142. package/dist/data/query-key.js +0 -40
  143. package/dist/data/shared.js +0 -20
  144. package/dist/data/testing.js +0 -2
  145. package/dist/data/types.d.ts +0 -160
  146. package/dist/foundations/icon/icon.d.ts +0 -52
  147. package/dist/foundations/icon/icon.js +0 -86
  148. package/dist/foundations/icon/icon.types.d.ts +0 -21
  149. package/dist/foundations/interactions/dismissable.d.ts +0 -71
  150. package/dist/foundations/interactions/dismissable.js +0 -24
  151. package/dist/foundations/interactions/focusable.d.ts +0 -21
  152. package/dist/foundations/interactions/focusable.js +0 -16
  153. package/dist/foundations/interactions/hoverable.d.ts +0 -25
  154. package/dist/foundations/interactions/hoverable.js +0 -13
  155. package/dist/foundations/interactions/interaction-policy.d.ts +0 -49
  156. package/dist/foundations/interactions/interaction-policy.js +0 -120
  157. package/dist/foundations/interactions/pressable.d.ts +0 -60
  158. package/dist/foundations/interactions/pressable.js +0 -49
  159. package/dist/foundations/interactions/roving-focus.d.ts +0 -51
  160. package/dist/foundations/interactions/roving-focus.js +0 -69
  161. package/dist/foundations/state/controllable.d.ts +0 -32
  162. package/dist/foundations/state/controllable.js +0 -80
  163. package/dist/foundations/structures/collection.d.ts +0 -51
  164. package/dist/foundations/structures/collection.js +0 -49
  165. package/dist/foundations/structures/layer.d.ts +0 -80
  166. package/dist/foundations/structures/layer.js +0 -79
  167. package/dist/foundations/structures/layout.d.ts +0 -32
  168. package/dist/foundations/structures/layout.js +0 -11
  169. package/dist/foundations/structures/portal.d.ts +0 -2
  170. package/dist/foundations/structures/portal.js +0 -3
  171. package/dist/foundations/structures/presence.d.ts +0 -36
  172. package/dist/foundations/structures/presence.js +0 -37
  173. package/dist/foundations/structures/slot.d.ts +0 -34
  174. package/dist/foundations/structures/slot.js +0 -39
  175. package/dist/foundations/utilities/aria.d.ts +0 -15
  176. package/dist/foundations/utilities/aria.js +0 -15
  177. package/dist/foundations/utilities/compose-handlers.d.ts +0 -36
  178. package/dist/foundations/utilities/compose-handlers.js +0 -18
  179. package/dist/foundations/utilities/compose-ref.js +0 -16
  180. package/dist/foundations/utilities/event-types.d.ts +0 -19
  181. package/dist/foundations/utilities/merge-props.d.ts +0 -4
  182. package/dist/foundations/utilities/merge-props.js +0 -47
  183. package/dist/foundations/utilities/use-id.d.ts +0 -31
  184. package/dist/fx/fx.d.ts +0 -32
  185. package/dist/fx/fx.js +0 -211
  186. package/dist/fx/noop.js +0 -7
  187. package/dist/fx/timing.d.ts +0 -158
  188. package/dist/fx/timing.js +0 -241
  189. package/dist/jsx/index.d.ts +0 -2
  190. package/dist/jsx/index.js +0 -4
  191. package/dist/jsx/types.js +0 -2
  192. package/dist/jsx/utils.d.ts +0 -4
  193. package/dist/jsx/utils.js +0 -17
  194. package/dist/jsx-runtime2.d.ts +0 -3
  195. package/dist/jsx-runtime2.js +0 -4
  196. package/dist/renderer/attributes.js +0 -254
  197. package/dist/renderer/boundaries.js +0 -142
  198. package/dist/renderer/boundary-materialization.js +0 -72
  199. package/dist/renderer/boundary-range-adoption.js +0 -76
  200. package/dist/renderer/boundary-range-sync.js +0 -101
  201. package/dist/renderer/boundary-state.js +0 -50
  202. package/dist/renderer/child-shape.js +0 -83
  203. package/dist/renderer/children-fastpath.js +0 -149
  204. package/dist/renderer/children.js +0 -158
  205. package/dist/renderer/cleanup.js +0 -267
  206. package/dist/renderer/component-host-cleanup.js +0 -143
  207. package/dist/renderer/component-host-instances.js +0 -116
  208. package/dist/renderer/component-host-replacement.js +0 -105
  209. package/dist/renderer/component-host-results.js +0 -138
  210. package/dist/renderer/component-host.js +0 -172
  211. package/dist/renderer/dom-host.js +0 -11
  212. package/dist/renderer/dom-internal.js +0 -243
  213. package/dist/renderer/dom-range.js +0 -161
  214. package/dist/renderer/dom.js +0 -11
  215. package/dist/renderer/element-children.js +0 -359
  216. package/dist/renderer/env.js +0 -2
  217. package/dist/renderer/error-boundary-dom.js +0 -86
  218. package/dist/renderer/evaluate-dom-range.js +0 -84
  219. package/dist/renderer/evaluate-reconcile.js +0 -257
  220. package/dist/renderer/evaluate.js +0 -95
  221. package/dist/renderer/fastpath.js +0 -142
  222. package/dist/renderer/for-commit-dom-map.js +0 -71
  223. package/dist/renderer/for-commit-removal.js +0 -27
  224. package/dist/renderer/for-commit-reorder.js +0 -87
  225. package/dist/renderer/for-commit.js +0 -442
  226. package/dist/renderer/hydration-boundaries.js +0 -60
  227. package/dist/renderer/hydration-listener-transaction.js +0 -49
  228. package/dist/renderer/index.js +0 -39
  229. package/dist/renderer/intrinsic-blueprint-analysis.js +0 -202
  230. package/dist/renderer/intrinsic-blueprint-bindings.js +0 -152
  231. package/dist/renderer/intrinsic-blueprint-materialization.js +0 -100
  232. package/dist/renderer/intrinsic-blueprint.js +0 -30
  233. package/dist/renderer/intrinsic-hydration-adoption.js +0 -66
  234. package/dist/renderer/keyed-children.js +0 -26
  235. package/dist/renderer/keyed.js +0 -167
  236. package/dist/renderer/namespaces.js +0 -21
  237. package/dist/renderer/prop-bindings.js +0 -315
  238. package/dist/renderer/reactive-child-dom.js +0 -139
  239. package/dist/renderer/reactive-child-sources.js +0 -182
  240. package/dist/renderer/reactive-children.js +0 -303
  241. package/dist/renderer/reconcile-commit.js +0 -36
  242. package/dist/renderer/reconcile-fastpaths.js +0 -100
  243. package/dist/renderer/reconcile-resolution.js +0 -163
  244. package/dist/renderer/reconcile.js +0 -37
  245. package/dist/renderer/retained-element-rollback.js +0 -288
  246. package/dist/renderer/stable-patch.js +0 -80
  247. package/dist/renderer/static-reuse.js +0 -94
  248. package/dist/renderer/types.js +0 -2
  249. package/dist/renderer/utils.js +0 -265
  250. package/dist/router/access.js +0 -34
  251. package/dist/router/activity.d.ts +0 -9
  252. package/dist/router/activity.js +0 -85
  253. package/dist/router/authoring.d.ts +0 -21
  254. package/dist/router/authoring.js +0 -196
  255. package/dist/router/internal-types.d.ts +0 -30
  256. package/dist/router/lazy.d.ts +0 -18
  257. package/dist/router/lazy.js +0 -50
  258. package/dist/router/manifest.d.ts +0 -9
  259. package/dist/router/manifest.js +0 -47
  260. package/dist/router/match.js +0 -120
  261. package/dist/router/navigate.d.ts +0 -10
  262. package/dist/router/navigate.js +0 -73
  263. package/dist/router/navigation-registry.d.ts +0 -31
  264. package/dist/router/navigation-registry.js +0 -103
  265. package/dist/router/navigation-scroll.d.ts +0 -13
  266. package/dist/router/navigation-scroll.js +0 -91
  267. package/dist/router/navigation-targets.d.ts +0 -30
  268. package/dist/router/navigation-targets.js +0 -634
  269. package/dist/router/policy.d.ts +0 -27
  270. package/dist/router/policy.js +0 -130
  271. package/dist/router/rendering.d.ts +0 -9
  272. package/dist/router/rendering.js +0 -47
  273. package/dist/router/resolution.d.ts +0 -3
  274. package/dist/router/resolution.js +0 -84
  275. package/dist/router/route-context.js +0 -77
  276. package/dist/router/route-matching.d.ts +0 -19
  277. package/dist/router/route-matching.js +0 -173
  278. package/dist/router/route-query.d.ts +0 -16
  279. package/dist/router/route-query.js +0 -45
  280. package/dist/router/route.d.ts +0 -8
  281. package/dist/router/route.js +0 -10
  282. package/dist/router/store.d.ts +0 -49
  283. package/dist/router/store.js +0 -169
  284. package/dist/router/testing.js +0 -4
  285. package/dist/runtime/access.d.ts +0 -19
  286. package/dist/runtime/access.js +0 -43
  287. package/dist/runtime/child-scope.d.ts +0 -41
  288. package/dist/runtime/child-scope.js +0 -134
  289. package/dist/runtime/component-cleanup.d.ts +0 -15
  290. package/dist/runtime/component-cleanup.js +0 -68
  291. package/dist/runtime/component-commit.js +0 -167
  292. package/dist/runtime/component-facade.d.ts +0 -5
  293. package/dist/runtime/component-facade.js +0 -6
  294. package/dist/runtime/component-internal.d.ts +0 -105
  295. package/dist/runtime/component-internal.js +0 -237
  296. package/dist/runtime/component-lifecycle.d.ts +0 -10
  297. package/dist/runtime/component-lifecycle.js +0 -33
  298. package/dist/runtime/component-scope.d.ts +0 -54
  299. package/dist/runtime/component.d.ts +0 -5
  300. package/dist/runtime/component.js +0 -6
  301. package/dist/runtime/context.d.ts +0 -72
  302. package/dist/runtime/context.js +0 -236
  303. package/dist/runtime/control.d.ts +0 -62
  304. package/dist/runtime/control.js +0 -239
  305. package/dist/runtime/derive.d.ts +0 -16
  306. package/dist/runtime/derive.js +0 -140
  307. package/dist/runtime/dev-namespace.d.ts +0 -30
  308. package/dist/runtime/dev-namespace.js +0 -64
  309. package/dist/runtime/effect.d.ts +0 -35
  310. package/dist/runtime/error-boundary.d.ts +0 -4
  311. package/dist/runtime/error-boundary.js +0 -29
  312. package/dist/runtime/events.d.ts +0 -58
  313. package/dist/runtime/events.js +0 -201
  314. package/dist/runtime/execution-model.d.ts +0 -6
  315. package/dist/runtime/execution-model.js +0 -13
  316. package/dist/runtime/fastlane.d.ts +0 -33
  317. package/dist/runtime/fastlane.js +0 -173
  318. package/dist/runtime/for-bench.d.ts +0 -40
  319. package/dist/runtime/for-bench.js +0 -13
  320. package/dist/runtime/for-internal.d.ts +0 -106
  321. package/dist/runtime/for-internal.js +0 -285
  322. package/dist/runtime/for-reconcile.d.ts +0 -7
  323. package/dist/runtime/for-reconcile.js +0 -442
  324. package/dist/runtime/for-scopes.d.ts +0 -26
  325. package/dist/runtime/for-scopes.js +0 -280
  326. package/dist/runtime/for-signals.d.ts +0 -39
  327. package/dist/runtime/for-signals.js +0 -213
  328. package/dist/runtime/for-types.d.ts +0 -8
  329. package/dist/runtime/for.d.ts +0 -4
  330. package/dist/runtime/for.js +0 -5
  331. package/dist/runtime/index.d.ts +0 -24
  332. package/dist/runtime/index.js +0 -33
  333. package/dist/runtime/lifecycle-batch.d.ts +0 -59
  334. package/dist/runtime/lifecycle-batch.js +0 -178
  335. package/dist/runtime/lifecycle-operation-settlement.d.ts +0 -5
  336. package/dist/runtime/lifecycle-operation-settlement.js +0 -51
  337. package/dist/runtime/lifecycle-operations.d.ts +0 -30
  338. package/dist/runtime/operations.d.ts +0 -3
  339. package/dist/runtime/operations.js +0 -3
  340. package/dist/runtime/perf-metrics.d.ts +0 -27
  341. package/dist/runtime/perf-metrics.js +0 -6
  342. package/dist/runtime/portal.d.ts +0 -21
  343. package/dist/runtime/readable.d.ts +0 -34
  344. package/dist/runtime/readable.js +0 -183
  345. package/dist/runtime/resource-cell.js +0 -112
  346. package/dist/runtime/resource-operation.d.ts +0 -12
  347. package/dist/runtime/runtime.js +0 -57
  348. package/dist/runtime/selector-store.js +0 -22
  349. package/dist/runtime/selector.d.ts +0 -10
  350. package/dist/runtime/snapshot-source.d.ts +0 -9
  351. package/dist/runtime/state.d.ts +0 -54
  352. package/dist/ssg/batch-render.js +0 -101
  353. package/dist/ssg/create-static-gen.d.ts +0 -66
  354. package/dist/ssg/create-static-gen.js +0 -250
  355. package/dist/ssg/generate-metadata.js +0 -92
  356. package/dist/ssg/generation-plan.js +0 -68
  357. package/dist/ssg/incremental-manifest.js +0 -54
  358. package/dist/ssg/resolve-ssg-data.js +0 -103
  359. package/dist/ssg/route-utils.js +0 -22
  360. package/dist/ssg/static-routes.js +0 -100
  361. package/dist/ssg/types.d.ts +0 -188
  362. package/dist/ssg/write-static-files.js +0 -77
  363. package/dist/ssr/attrs.js +0 -92
  364. package/dist/ssr/boundaries.js +0 -124
  365. package/dist/ssr/component-runtime.js +0 -85
  366. package/dist/ssr/context.d.ts +0 -49
  367. package/dist/ssr/context.js +0 -89
  368. package/dist/ssr/errors.d.ts +0 -9
  369. package/dist/ssr/errors.js +0 -12
  370. package/dist/ssr/escape.js +0 -191
  371. package/dist/ssr/hydration-data.js +0 -8
  372. package/dist/ssr/hydration-verify.d.ts +0 -11
  373. package/dist/ssr/hydration-verify.js +0 -171
  374. package/dist/ssr/index-internal.d.ts +0 -14
  375. package/dist/ssr/index-internal.js +0 -17
  376. package/dist/ssr/render-keys.js +0 -14
  377. package/dist/ssr/render-resolved.d.ts +0 -19
  378. package/dist/ssr/render-resolved.js +0 -33
  379. package/dist/ssr/render-sync.d.ts +0 -20
  380. package/dist/ssr/render-sync.js +0 -283
  381. package/dist/ssr/route-policy-resolution.js +0 -76
  382. package/dist/ssr/route-render.d.ts +0 -76
  383. package/dist/ssr/route-render.js +0 -118
  384. package/dist/ssr/sink.d.ts +0 -25
  385. package/dist/ssr/sink.js +0 -84
  386. package/dist/ssr/types.d.ts +0 -22
@@ -1,14 +1,166 @@
1
- import { AccessDecision, AccessDenyDecision, AccessRedirectDecision, GroupHelperOptions, LayoutScopeRecord, PageHelperOptions, PageScopeRecord, ParsedSegment, RegisterRoutesOptions, Route, RouteAuthMode, RouteAuthOptions, RouteAuthResolver, RouteAuthState, RouteComponent, RouteContext, RouteDefinition, RouteHandler, RouteManifest, RouteMatch, RouteMode, RouteOptions, RouteParams, RoutePathParams, RoutePolicy, RouteQuery, RouteRecord, RouteRegistry, RouteRenderResult, RouteRequestOptions, RouteRequestResult, RouteSnapshot } from "../common/router.js";
2
- import { HistoryScrollBehavior, NavigationScrollBehavior, ScrollRestorationOptions } from "./navigation-scroll.js";
3
- import { NavigateOptions } from "./navigation-targets.js";
4
- import { RouteQueryParamInput, RouteQueryParamValue, RouteQueryUpdater, RouteQueryUpdates, UpdateRouteQueryOptions, updateRouteQuery } from "./route-query.js";
5
- import { navigate } from "./navigate.js";
6
- import { fallback, group, index, page, registerRoutes, route } from "./authoring.js";
7
- import { currentRoute } from "./activity.js";
8
- import { allow, deny, forbidden, notFound, redirect, requireAuth, requirePermission, requireRole, unauthorized } from "./policy.js";
9
- import { clearRoutes, createRouteRegistry, getManifest } from "./manifest.js";
10
- import { getRoutes } from "./store.js";
11
- import { lazy } from "./lazy.js";
12
- import { Outlet } from "./rendering.js";
13
- import { Link, LinkProps } from "../components/link.js";
14
- export { type AccessDecision, type AccessDenyDecision, type AccessRedirectDecision, type GroupHelperOptions, type HistoryScrollBehavior, type LayoutScopeRecord, Link, type LinkProps, type NavigateOptions, type NavigationScrollBehavior, Outlet, type PageHelperOptions, type PageScopeRecord, type ParsedSegment, type RegisterRoutesOptions, type Route, type RouteAuthMode, type RouteAuthOptions, type RouteAuthResolver, type RouteAuthState, type RouteComponent, type RouteContext, type RouteDefinition, type RouteHandler, type RouteManifest, type RouteMatch, type RouteMode, type RouteOptions, type RouteParams, type RoutePathParams, type RoutePolicy, type RouteQuery, type RouteQueryParamInput, type RouteQueryParamValue, type RouteQueryUpdater, type RouteQueryUpdates, type RouteRecord, type RouteRegistry, type RouteRenderResult, type RouteRequestOptions, type RouteRequestResult, type RouteSnapshot, type ScrollRestorationOptions, type UpdateRouteQueryOptions, allow, clearRoutes, createRouteRegistry, currentRoute, deny, fallback, forbidden, getManifest, getRoutes, group, index, lazy, navigate, notFound, page, redirect, registerRoutes, requireAuth, requirePermission, requireRole, route, unauthorized, updateRouteQuery };
1
+ import { c as RenderableChild } from "../control-BQvNVfAd.js";
2
+ import { r as JSXElement, s as Props } from "../jsx-CP0gmYwJ.js";
3
+ import { A as RouteQuery, B as RouteSnapshot, C as RouteMeta, D as RouteParams, E as RouteOptions, F as RouteRenderResult, I as RouteRequestOptions, L as RouteRequestResult, M as RouteRef, N as RouteRefSearch, O as RoutePathParams, P as RouteRegistry, R as RouteSearch, S as RouteMatch, T as RouteMode, _ as RouteContext, a as AccessRedirectDecision, b as RouteHandler, c as LayoutScopeRecord, d as ParsedSegment, f as RegisterRoutesOptions, g as RouteComponent, h as RouteAuthResolver, i as AccessDenyStatus, j as RouteRecord, k as RoutePolicy, l as PageHelperOptions, m as RouteAuthOptions, n as AccessDecision, o as AccessRedirectStatus, p as Route, r as AccessDenyDecision, s as GroupHelperOptions, t as AccessAllowDecision, u as PageScopeRecord, v as RouteDefinition, w as RouteMetaSource, x as RouteManifest, y as RouteDestination, z as RouteSearchValue } from "../router-CeYvjj5_.js";
4
+ import { a as RouteQueryUpdates, c as NavigateOptions, d as ScrollRestorationOptions, i as RouteQueryUpdater, l as HistoryScrollBehavior, n as RouteQueryParamInput, o as UpdateRouteQueryOptions, r as RouteQueryParamValue, s as updateRouteQuery, t as navigate, u as NavigationScrollBehavior } from "../navigate-BVDCzOuB.js";
5
+ import { AuthContext, AuthContext as AuthContext$1, AuthRequirement, AuthRequirement as AuthRequirement$1 } from "@askrjs/auth";
6
+ import { ObjectSchema } from "@askrjs/schema";
7
+
8
+ //#region src/router/internal-types.d.ts
9
+ type AnyRouteComponent = (...args: any[]) => RenderableChild;
10
+ //#endregion
11
+ //#region src/router/authoring.d.ts
12
+ type RouteComponentParam<TComponent extends AnyRouteComponent> = Parameters<TComponent> extends [] ? unknown : Parameters<TComponent>[0];
13
+ type CompatibleAbsoluteRouteComponent<Path extends string, TComponent extends AnyRouteComponent> = Parameters<TComponent> extends [] ? TComponent : RoutePathParams<Path> extends RouteComponentParam<TComponent> ? TComponent : never;
14
+ type CompatibleRelativeRouteComponent<Path extends string, TComponent extends AnyRouteComponent> = Parameters<TComponent> extends [] ? TComponent : RouteComponentParam<TComponent> extends Record<keyof RoutePathParams<Path>, string> ? TComponent : never;
15
+ type CompatibleRouteComponent<Path extends string, TComponent extends AnyRouteComponent> = Path extends `/${string}` ? CompatibleAbsoluteRouteComponent<Path, TComponent> : CompatibleRelativeRouteComponent<Path, TComponent>;
16
+ type RouteOptionsForComponent<Path extends string, TComponent extends AnyRouteComponent, TSearchSchema extends ObjectSchema<RouteSearch> | undefined = ObjectSchema<RouteSearch> | undefined> = Parameters<TComponent> extends [] ? RouteOptions<RoutePathParams<Path>, TSearchSchema> : RouteComponentParam<TComponent> extends RouteParams ? RouteOptions<RouteComponentParam<TComponent>, TSearchSchema> : RouteOptions<RoutePathParams<Path>, TSearchSchema>;
17
+ declare function group(options: GroupHelperOptions, fn: RouteDefinition): void;
18
+ declare function page<const TPath extends string>(path: TPath, Component: RouteComponent<RoutePathParams<TPath>>, fn: RouteDefinition): void;
19
+ declare function page<const TPath extends string, TComponent extends AnyRouteComponent>(path: TPath, Component: CompatibleRouteComponent<TPath, TComponent>, fn: RouteDefinition): void;
20
+ declare function page<const TPath extends string>(path: TPath, Component: RouteComponent<RoutePathParams<TPath>>, options: PageHelperOptions, fn: RouteDefinition): void;
21
+ declare function page<const TPath extends string, TComponent extends AnyRouteComponent>(path: TPath, Component: CompatibleRouteComponent<TPath, TComponent>, options: PageHelperOptions, fn: RouteDefinition): void;
22
+ declare function index(Component: RouteComponent, options?: RouteOptions): void;
23
+ declare function fallback(Component: RouteComponent): void;
24
+ declare function registerRoutes(definition: RouteDefinition, options?: RegisterRoutesOptions): void;
25
+ declare function route<const TPath extends string, const TSearchSchema extends ObjectSchema<RouteSearch> | undefined = undefined>(path: TPath, Component: RouteComponent<RoutePathParams<TPath>>, options?: RouteOptions<RoutePathParams<TPath>, TSearchSchema>): RouteRef<RoutePathParams<TPath>, RouteRefSearch<TSearchSchema>>;
26
+ declare function route<const TPath extends string, TComponent extends AnyRouteComponent, const TSearchSchema extends ObjectSchema<RouteSearch> | undefined = undefined>(path: TPath, Component: CompatibleRouteComponent<TPath, TComponent>, options?: RouteOptionsForComponent<TPath, TComponent, TSearchSchema>): RouteRef<RoutePathParams<TPath>, RouteRefSearch<TSearchSchema>>;
27
+ //#endregion
28
+ //#region src/router/activity.d.ts
29
+ declare function currentRoute<TParams extends RouteParams = RouteParams>(): RouteSnapshot<TParams>;
30
+ //#endregion
31
+ //#region src/router/auth.d.ts
32
+ /** Return the identity resolved for the route currently being rendered. */
33
+ declare function currentAuth(): AuthContext$1;
34
+ //#endregion
35
+ //#region src/router/resolution.d.ts
36
+ declare function resolveRouteRequest(target: string, options?: RouteRequestOptions): RouteRequestResult | Promise<RouteRequestResult>;
37
+ //#endregion
38
+ //#region src/router/manifest.d.ts
39
+ declare function getManifest(): RouteManifest;
40
+ declare function clearRoutes(): void;
41
+ declare function createRouteRegistry(definition: RouteDefinition, options?: RegisterRoutesOptions): RouteRegistry;
42
+ //#endregion
43
+ //#region src/router/store.d.ts
44
+ declare function getRoutes(): Route[];
45
+ //#endregion
46
+ //#region src/router/lazy.d.ts
47
+ declare function lazy<TComponent extends AnyRouteComponent>(factory: () => Promise<{
48
+ default: TComponent;
49
+ } | TComponent>): TComponent;
50
+ //#endregion
51
+ //#region src/router/rendering.d.ts
52
+ declare function Outlet(): JSXElement;
53
+ //#endregion
54
+ //#region src/router/policy.d.ts
55
+ declare function allow(): AccessAllowDecision;
56
+ declare function redirect(to: string, init?: {
57
+ status?: AccessRedirectStatus;
58
+ replace?: boolean;
59
+ }): AccessRedirectDecision;
60
+ declare function deny(status: AccessDenyStatus): AccessDenyDecision;
61
+ declare function unauthorized(): AccessDenyDecision;
62
+ declare function forbidden(): AccessDenyDecision;
63
+ declare function notFound(): AccessDenyDecision;
64
+ //#endregion
65
+ //#region src/router/destination.d.ts
66
+ declare function to$1<TParams extends RouteParams, TSearch extends RouteSearch = RouteSearch>(route: RouteRef<TParams, TSearch>, params: TParams, search?: TSearch): RouteDestination;
67
+ //#endregion
68
+ //#region src/router/metadata.d.ts
69
+ declare function resolveRouteMeta(record: RouteRecord, context: RouteContext): Promise<Readonly<RouteMeta>>;
70
+ /** Replace only Askr-owned head nodes after a successful client navigation. */
71
+ declare function reconcileRouteMeta(meta: Readonly<RouteMeta>, target?: Document): void;
72
+ declare function serializeRouteMeta(meta: RouteMeta): string;
73
+ //#endregion
74
+ //#region src/router/deferred.d.ts
75
+ declare const DEFERRED_VALUE: unique symbol;
76
+ type DeferredState = 'pending' | 'fulfilled' | 'rejected';
77
+ interface Deferred<T> {
78
+ readonly state: DeferredState;
79
+ readonly value: T | undefined;
80
+ readonly error: unknown;
81
+ readonly promise: Promise<T>;
82
+ readonly [DEFERRED_VALUE]: true;
83
+ }
84
+ interface ResolveProps<T> {
85
+ value: Deferred<T>;
86
+ pending?: RenderableChild;
87
+ rejected?: RenderableChild | ((error: unknown) => RenderableChild);
88
+ children: (value: T) => RenderableChild;
89
+ }
90
+ declare function defer<T>(promise: PromiseLike<T>): Deferred<T>;
91
+ declare function isDeferred<T = unknown>(value: unknown): value is Deferred<T>;
92
+ declare function resolveDeferredValues<T>(input: T, signal?: AbortSignal): Promise<T>;
93
+ declare function routeData<T>(): T;
94
+ declare function Resolve<T>(props: ResolveProps<T>): JSXElement;
95
+ //#endregion
96
+ //#region src/components/link.d.ts
97
+ type LinkBaseProps = Omit<Props, 'children' | 'href' | 'class' | 'rel' | 'target' | 'aria-current' | 'aria-label'> & {
98
+ class?: string;
99
+ children?: RenderableChild;
100
+ /**
101
+ * Optional rel attribute for link relationships.
102
+ * Common values: "noopener", "noreferrer", "nofollow"
103
+ */
104
+ rel?: string;
105
+ /**
106
+ * Optional target attribute.
107
+ * Use "_blank" for new tab/window.
108
+ */
109
+ target?: string;
110
+ /**
111
+ * Optional aria-current attribute for indicating current page/location.
112
+ * Use "page" for the current page in navigation.
113
+ */
114
+ 'aria-current'?: 'page' | 'step' | 'location' | 'date' | 'time' | 'true' | 'false';
115
+ /**
116
+ * Optional aria-label for accessibility when link text isn't descriptive enough.
117
+ */
118
+ 'aria-label'?: string;
119
+ };
120
+ type LinkProps = LinkBaseProps & ({
121
+ href: string;
122
+ to?: never;
123
+ } | {
124
+ href?: never;
125
+ to: RouteDestination;
126
+ });
127
+ /**
128
+ * Link component that prevents default navigation and uses navigate()
129
+ * Provides declarative way to navigate between routes
130
+ *
131
+ * Accessibility features:
132
+ * - Proper semantic <a> element (not a button)
133
+ * - Supports aria-current for indicating active page
134
+ * - Supports aria-label for descriptive labels
135
+ * - Keyboard accessible (Enter key handled by native <a> element)
136
+ *
137
+ * Respects native browser behaviors:
138
+ * - Middle-click (opens in new tab)
139
+ * - Ctrl/Cmd+click (opens in new tab)
140
+ * - Shift+click (opens in new window)
141
+ * - Alt+click (downloads link)
142
+ * - Right-click context menu
143
+ *
144
+ * Best practices:
145
+ * - Use target="_blank" with rel="noopener noreferrer" for external links
146
+ * - Use aria-current="page" for the current page in navigation
147
+ * - Provide descriptive link text or aria-label
148
+ *
149
+ * Uses applyInteractionPolicy to enforce pit-of-success principles:
150
+ * - Interaction behavior centralized in foundations
151
+ * - Keyboard handling automatic
152
+ * - Composable via mergeProps
153
+ */
154
+ declare function Link({
155
+ href: suppliedHref,
156
+ to,
157
+ class: className,
158
+ children,
159
+ rel,
160
+ target,
161
+ 'aria-current': ariaCurrent,
162
+ 'aria-label': ariaLabel,
163
+ ...rest
164
+ }: LinkProps): JSXElement;
165
+ //#endregion
166
+ export { type AccessDecision, type AccessDenyDecision, type AccessRedirectDecision, type AuthContext, type AuthRequirement, type Deferred, type DeferredState, type GroupHelperOptions, type HistoryScrollBehavior, type LayoutScopeRecord, Link, type LinkProps, type NavigateOptions, type NavigationScrollBehavior, Outlet, type PageHelperOptions, type PageScopeRecord, type ParsedSegment, type RegisterRoutesOptions, Resolve, type ResolveProps, type Route, type RouteAuthOptions, type RouteAuthResolver, type RouteComponent, type RouteContext, type RouteDefinition, type RouteDestination, type RouteHandler, type RouteManifest, type RouteMatch, type RouteMeta, type RouteMetaSource, type RouteMode, type RouteOptions, type RouteParams, type RoutePathParams, type RoutePolicy, type RouteQuery, type RouteQueryParamInput, type RouteQueryParamValue, type RouteQueryUpdater, type RouteQueryUpdates, type RouteRecord, type RouteRef, type RouteRegistry, type RouteRenderResult, type RouteRequestOptions, type RouteRequestResult, type RouteSearch, type RouteSearchValue, type RouteSnapshot, type ScrollRestorationOptions, type UpdateRouteQueryOptions, allow, clearRoutes, createRouteRegistry, currentAuth, currentRoute, defer, deny, fallback, forbidden, getManifest, getRoutes, group, index, isDeferred, lazy, navigate, notFound, page, reconcileRouteMeta, redirect, registerRoutes, resolveDeferredValues, resolveRouteMeta, resolveRouteRequest, route, routeData, serializeRouteMeta, to$1 as to, unauthorized, updateRouteQuery };
@@ -1,12 +1,150 @@
1
- import { allow, deny, forbidden, notFound, redirect, requireAuth, requirePermission, requireRole, unauthorized } from "./policy.js";
2
- import { Outlet } from "./rendering.js";
3
- import { getRoutes } from "./store.js";
4
- import { fallback, group, index, page, registerRoutes, route } from "./authoring.js";
5
- import { currentRoute } from "./activity.js";
6
- import { lazy } from "./lazy.js";
7
- import { clearRoutes, createRouteRegistry, getManifest } from "./manifest.js";
8
- import "./route.js";
9
- import { updateRouteQuery } from "./route-query.js";
10
- import { navigate } from "./navigate.js";
11
- import { Link } from "../components/link.js";
12
- export { Link, Outlet, allow, clearRoutes, createRouteRegistry, currentRoute, deny, fallback, forbidden, getManifest, getRoutes, group, index, lazy, navigate, notFound, page, redirect, registerRoutes, requireAuth, requirePermission, requireRole, route, unauthorized, updateRouteQuery };
1
+ import { C as index, E as route, S as group, T as registerRoutes, _ as lazy, a as resolveRouteMeta, d as clearRoutes, f as createRouteRegistry, i as reconcileRouteMeta, n as navigate, o as serializeRouteMeta, p as getManifest, r as updateRouteQuery, v as currentRoute, w as page, x as fallback } from "../navigate-CmPLSXyw.js";
2
+ import { jsx } from "../jsx-runtime.js";
3
+ import { D as getRoutes } from "../route-matching-vJpvLVbX.js";
4
+ import { a as resolveDeferredValues, f as resolveRouteRequest, i as isDeferred, n as Resolve, p as currentAuth, r as defer, s as routeData, v as Outlet } from "../deferred-lKE8uR0z.js";
5
+ import { o as mergeProps } from "../compose-ref-Cc_YkUpM.js";
6
+ import { t as applyInteractionPolicy } from "../interactions-w7gQN4ha.js";
7
+ //#region src/router/policy.ts
8
+ function allow() {
9
+ return { kind: "allow" };
10
+ }
11
+ function redirect(to, init = {}) {
12
+ return {
13
+ kind: "redirect",
14
+ to,
15
+ ...init.status ? { status: init.status } : {},
16
+ ...init.replace !== void 0 ? { replace: init.replace } : {}
17
+ };
18
+ }
19
+ function deny(status) {
20
+ return {
21
+ kind: "deny",
22
+ status
23
+ };
24
+ }
25
+ function unauthorized() {
26
+ return deny(401);
27
+ }
28
+ function forbidden() {
29
+ return deny(403);
30
+ }
31
+ function notFound() {
32
+ return deny(404);
33
+ }
34
+ //#endregion
35
+ //#region src/router/destination.ts
36
+ function routeParameterName(segment) {
37
+ if (segment === "*") return {
38
+ name: "*",
39
+ splat: true
40
+ };
41
+ if (!(segment.startsWith("{") && segment.endsWith("}"))) return null;
42
+ const raw = segment.slice(1, -1).trim();
43
+ return raw.startsWith("*") ? {
44
+ name: raw.slice(1).trim(),
45
+ splat: true
46
+ } : {
47
+ name: raw,
48
+ splat: false
49
+ };
50
+ }
51
+ function encodeParameter(value, splat) {
52
+ return splat ? value.split("/").map((part) => encodeURIComponent(part)).join("/") : encodeURIComponent(value);
53
+ }
54
+ function buildPath(route, params) {
55
+ return route.path.split("/").map((segment) => {
56
+ const parameter = routeParameterName(segment);
57
+ if (!parameter) return segment;
58
+ const value = params[parameter.name];
59
+ if (value === void 0) throw new Error(`Missing route parameter "${parameter.name}".`);
60
+ return encodeParameter(value, parameter.splat);
61
+ }).join("/");
62
+ }
63
+ function appendSearchValue(query, key, value) {
64
+ if (value === void 0) return;
65
+ if (Array.isArray(value)) {
66
+ for (const entry of value) query.append(key, String(entry));
67
+ return;
68
+ }
69
+ query.set(key, String(value));
70
+ }
71
+ function formatSearchIssues(issues) {
72
+ return issues.map((issue) => `${issue.path.length ? issue.path.join(".") : "search"}: ${issue.message}`).join("; ");
73
+ }
74
+ function to(route, params, search) {
75
+ const path = buildPath(route, params);
76
+ const parsedSearch = route.searchSchema?.safeParse(search ?? {});
77
+ if (parsedSearch && !parsedSearch.success) throw new Error(`Invalid route search. ${formatSearchIssues(parsedSearch.issues)}`);
78
+ const values = parsedSearch?.success ? parsedSearch.data : search;
79
+ if (!values) return Object.freeze({ href: path });
80
+ const query = new URLSearchParams();
81
+ for (const [key, value] of Object.entries(values)) appendSearchValue(query, key, value);
82
+ const suffix = query.toString();
83
+ return Object.freeze({ href: suffix ? `${path}?${suffix}` : path });
84
+ }
85
+ //#endregion
86
+ //#region src/components/link.tsx
87
+ function isSameOriginNavigableHref(href) {
88
+ if (typeof window === "undefined") return true;
89
+ try {
90
+ const target = new URL(href, window.location.href);
91
+ return target.origin === window.location.origin && (target.protocol === "http:" || target.protocol === "https:");
92
+ } catch {
93
+ return false;
94
+ }
95
+ }
96
+ /**
97
+ * Link component that prevents default navigation and uses navigate()
98
+ * Provides declarative way to navigate between routes
99
+ *
100
+ * Accessibility features:
101
+ * - Proper semantic <a> element (not a button)
102
+ * - Supports aria-current for indicating active page
103
+ * - Supports aria-label for descriptive labels
104
+ * - Keyboard accessible (Enter key handled by native <a> element)
105
+ *
106
+ * Respects native browser behaviors:
107
+ * - Middle-click (opens in new tab)
108
+ * - Ctrl/Cmd+click (opens in new tab)
109
+ * - Shift+click (opens in new window)
110
+ * - Alt+click (downloads link)
111
+ * - Right-click context menu
112
+ *
113
+ * Best practices:
114
+ * - Use target="_blank" with rel="noopener noreferrer" for external links
115
+ * - Use aria-current="page" for the current page in navigation
116
+ * - Provide descriptive link text or aria-label
117
+ *
118
+ * Uses applyInteractionPolicy to enforce pit-of-success principles:
119
+ * - Interaction behavior centralized in foundations
120
+ * - Keyboard handling automatic
121
+ * - Composable via mergeProps
122
+ */
123
+ function Link({ href: suppliedHref, to, class: className, children, rel, target, "aria-current": ariaCurrent, "aria-label": ariaLabel, ...rest }) {
124
+ const href = to?.href ?? suppliedHref;
125
+ if (!href) throw new Error("Link requires href or to.");
126
+ return /* @__PURE__ */ jsx("a", {
127
+ ...mergeProps(rest, {
128
+ ...applyInteractionPolicy({
129
+ isNative: true,
130
+ disabled: false,
131
+ onPress: (e) => {
132
+ const event = e;
133
+ if ((event.button ?? 0) !== 0 || event.ctrlKey || event.metaKey || event.shiftKey || event.altKey) return;
134
+ if (target || !isSameOriginNavigableHref(href)) return;
135
+ event.preventDefault();
136
+ navigate(href);
137
+ }
138
+ }),
139
+ href,
140
+ class: className,
141
+ rel,
142
+ target,
143
+ "aria-current": ariaCurrent,
144
+ "aria-label": ariaLabel
145
+ }),
146
+ children
147
+ });
148
+ }
149
+ //#endregion
150
+ export { Link, Outlet, Resolve, allow, clearRoutes, createRouteRegistry, currentAuth, currentRoute, defer, deny, fallback, forbidden, getManifest, getRoutes, group, index, isDeferred, lazy, navigate, notFound, page, reconcileRouteMeta, redirect, registerRoutes, resolveDeferredValues, resolveRouteMeta, resolveRouteRequest, route, routeData, serializeRouteMeta, to, unauthorized, updateRouteQuery };
@@ -1,4 +1,8 @@
1
- import { RenderableChild } from "./vnode.js";
1
+ import { c as RenderableChild } from "./control-BQvNVfAd.js";
2
+ import { D as QueryPrefetchContext, u as CoreTelemetry } from "./index-Bki2rqcr.js";
3
+ import { t as ActionDescriptor } from "./index-SJXJkssx.js";
4
+ import { AuthContext, AuthRequirement } from "@askrjs/auth";
5
+ import { InferSchema, ObjectSchema } from "@askrjs/schema";
2
6
 
3
7
  //#region src/common/router.d.ts
4
8
  /**
@@ -20,7 +24,6 @@ type RoutePathParams<Path extends string> = [ExtractRoutePathParamNames<Path>] e
20
24
  */
21
25
  type RouteComponent<TParams extends RouteParams = RouteParams> = (props: TParams) => RenderableChild;
22
26
  type RouteMode = 'spa' | 'ssr' | 'ssg';
23
- type RouteAuthMode = true | 'guest';
24
27
  type AccessRedirectStatus = 301 | 302 | 303 | 307 | 308;
25
28
  type AccessDenyStatus = 401 | 403 | 404;
26
29
  interface AccessAllowDecision {
@@ -37,36 +40,28 @@ interface AccessDenyDecision {
37
40
  status: AccessDenyStatus;
38
41
  }
39
42
  type AccessDecision = AccessAllowDecision | AccessRedirectDecision | AccessDenyDecision;
40
- interface RouteContext<Session = unknown, User = unknown, TParams extends RouteParams = RouteParams> {
43
+ interface RouteContext<TParams extends RouteParams = RouteParams> {
41
44
  mode: RouteMode;
42
45
  params: TParams;
43
46
  pathname: string;
44
47
  search: string;
45
48
  hash: string;
46
49
  href: string;
47
- session: Session | null;
48
- user: User | null;
50
+ auth: AuthContext;
49
51
  signal: AbortSignal;
50
52
  }
51
53
  type RoutePolicy = (context: RouteContext) => AccessDecision | PromiseLike<AccessDecision>;
52
- interface RouteAuthState<Session = unknown, User = unknown> {
53
- session: Session | null;
54
- user: User | null;
55
- }
56
- type RouteAuthResolver<Session = unknown, User = unknown> = (context: Omit<RouteContext<Session, User>, 'session' | 'user'>) => RouteAuthState<Session, User> | PromiseLike<RouteAuthState<Session, User>>;
57
- interface RouteAuthOptions<Session = unknown, User = unknown> {
58
- resolve: RouteAuthResolver<Session, User>;
59
- loginPath?: string | ((context: RouteContext<Session, User>) => string | PromiseLike<string>);
60
- guestRedirectTo?: string | ((context: RouteContext<Session, User>) => string | PromiseLike<string>);
61
- hasRole?: (user: User, role: string, context: RouteContext<Session, User>) => boolean | PromiseLike<boolean>;
62
- hasPermission?: (user: User, permission: string, context: RouteContext<Session, User>) => boolean | PromiseLike<boolean>;
54
+ type RouteAuthResolver = (context: Omit<RouteContext, 'auth'>) => AuthContext | PromiseLike<AuthContext>;
55
+ interface RouteAuthOptions {
56
+ resolve: RouteAuthResolver;
57
+ loginPath?: string | ((context: RouteContext) => string | PromiseLike<string>);
58
+ authenticatedRedirectTo?: string | ((context: RouteContext) => string | PromiseLike<string>);
63
59
  }
64
60
  interface CommonAccessOptions {
65
- auth?: RouteAuthMode;
66
- role?: string;
67
- permission?: string;
61
+ auth?: AuthRequirement;
68
62
  policies?: readonly RoutePolicy[];
69
63
  }
64
+ type RouteMetaSource<TParams extends RouteParams = RouteParams> = RouteMeta | ((context: RouteContext<TParams>) => RouteMeta | PromiseLike<RouteMeta>);
70
65
  /**
71
66
  * Options for `route()` declarations.
72
67
  *
@@ -75,15 +70,59 @@ interface CommonAccessOptions {
75
70
  * - `title`: page title hint used by SSG and document-meta integrations
76
71
  * - `namespace`: MFE namespace key for grouped route management
77
72
  */
78
- interface RouteOptions<TParams extends RouteParams = RouteParams> extends CommonAccessOptions {
79
- loader?: (context: {
80
- params: TParams;
73
+ interface RouteOptions<TParams extends RouteParams = RouteParams, TSearchSchema extends ObjectSchema<RouteSearch> | undefined = ObjectSchema<RouteSearch> | undefined> extends CommonAccessOptions {
74
+ loader?: (context: RouteContext<TParams> & {
75
+ request?: Request;
76
+ }) => unknown;
77
+ preload?: (context: RouteContext<TParams> & {
78
+ request?: Request;
79
+ data: QueryPrefetchContext;
81
80
  }) => unknown;
82
81
  entries?: () => Array<TParams> | Promise<Array<TParams>>;
83
82
  title?: string;
84
83
  namespace?: string;
84
+ search?: TSearchSchema;
85
+ meta?: RouteMetaSource<TParams>;
86
+ actions?: readonly ActionDescriptor[];
87
+ }
88
+ interface RouteMeta {
89
+ title?: string;
90
+ description?: string;
91
+ canonical?: string;
92
+ robots?: string;
93
+ openGraph?: Record<string, string>;
94
+ links?: readonly {
95
+ rel: string;
96
+ href: string;
97
+ [key: string]: string;
98
+ }[];
99
+ jsonLd?: unknown | readonly unknown[];
100
+ html?: {
101
+ lang?: string;
102
+ dir?: 'ltr' | 'rtl' | 'auto';
103
+ };
104
+ }
105
+ /** A stable, typed reference returned by route() for destination construction. */
106
+ type RouteSearchValue = string | number | boolean | null | undefined | readonly (string | number | boolean | null)[];
107
+ type RouteSearch = Record<string, RouteSearchValue>;
108
+ interface RouteRef<TParams extends RouteParams = RouteParams, TSearch = RouteSearch> {
109
+ readonly path: string;
110
+ /** @internal Executable schema retained for destination validation. */
111
+ readonly searchSchema?: ObjectSchema<TSearch & RouteSearch>;
112
+ readonly __params?: TParams;
113
+ readonly __search?: TSearch;
114
+ }
115
+ type RouteRefSearch<TSchema extends ObjectSchema<RouteSearch> | undefined> = TSchema extends ObjectSchema<RouteSearch> ? InferSchema<TSchema> : RouteSearch;
116
+ interface RouteDestination {
117
+ readonly href: string;
118
+ }
119
+ interface PageHelperOptions extends CommonAccessOptions {
120
+ preload?: (context: RouteContext & {
121
+ request?: Request;
122
+ data: QueryPrefetchContext;
123
+ }) => unknown;
124
+ meta?: RouteMetaSource;
85
125
  }
86
- interface PageHelperOptions extends CommonAccessOptions {}
87
126
  /**
88
127
  * A single parsed segment from a route path.
89
128
  *
@@ -115,19 +154,26 @@ type RouteDefinition = () => void;
115
154
  interface RouteRequestOptions {
116
155
  manifest?: RouteManifest;
117
156
  mode?: RouteMode;
157
+ /** @internal Hydration adopts server loader data instead of rerunning it. */
158
+ load?: boolean;
118
159
  auth?: RouteAuthOptions;
160
+ authContext?: AuthContext;
119
161
  signal?: AbortSignal;
162
+ request?: Request;
163
+ telemetry?: CoreTelemetry;
120
164
  }
121
165
  interface RouteRenderResult<TParams extends RouteParams = RouteParams> {
122
166
  kind: 'render';
123
167
  handler: RouteHandler<TParams>;
124
168
  params: TParams;
169
+ record?: RouteRecord;
125
170
  }
126
171
  type RouteRequestResult<TParams extends RouteParams = RouteParams> = RouteRenderResult<TParams> | AccessRedirectDecision | AccessDenyDecision | null;
127
172
  interface GroupHelperOptions extends CommonAccessOptions {
128
173
  layout?: (props: {
129
174
  children?: RenderableChild;
130
175
  }) => RenderableChild;
176
+ meta?: RouteMetaSource;
131
177
  }
132
178
  /**
133
179
  * A fully normalized route record produced by `route(path, Component, options?)`.
@@ -152,6 +198,8 @@ interface RouteRecord {
152
198
  pageChain: PageScopeRecord[];
153
199
  /** Route metadata: loader, entries, policies, title, namespace */
154
200
  options: RouteOptions;
201
+ /** Metadata sources ordered from outermost group/page to the route leaf. */
202
+ metaChain?: readonly RouteMetaSource[];
155
203
  /** True when this is the `/*` catch-all fallback route */
156
204
  isFallback: boolean;
157
205
  /**
@@ -189,10 +237,6 @@ interface RouteRegistry {
189
237
  manifest: RouteManifest;
190
238
  routes: readonly Route[];
191
239
  }
192
- interface ResolvedRoute<TParams extends RouteParams = RouteParams> {
193
- handler: RouteHandler<TParams>;
194
- params: TParams;
195
- }
196
240
  interface RouteMatch<TParams extends RouteParams = RouteParams> {
197
241
  path: string;
198
242
  params: Readonly<TParams>;
@@ -215,4 +259,4 @@ interface RouteSnapshot<TParams extends RouteParams = RouteParams> {
215
259
  matches: readonly RouteMatch<TParams>[];
216
260
  }
217
261
  //#endregion
218
- export { AccessAllowDecision, AccessDecision, AccessDenyDecision, AccessDenyStatus, AccessRedirectDecision, AccessRedirectStatus, CommonAccessOptions, GroupHelperOptions, LayoutScopeRecord, PageHelperOptions, PageScopeRecord, ParsedSegment, RegisterRoutesOptions, ResolvedRoute, Route, RouteAuthMode, RouteAuthOptions, RouteAuthResolver, RouteAuthState, RouteComponent, RouteContext, RouteDefinition, RouteHandler, RouteManifest, RouteMatch, RouteMode, RouteOptions, RouteParams, RoutePathParams, RoutePolicy, RouteQuery, RouteRecord, RouteRegistry, RouteRenderResult, RouteRequestOptions, RouteRequestResult, RouteSnapshot };
262
+ export { RouteQuery as A, RouteSnapshot as B, RouteMeta as C, RouteParams as D, RouteOptions as E, RouteRenderResult as F, RouteRequestOptions as I, RouteRequestResult as L, RouteRef as M, RouteRefSearch as N, RoutePathParams as O, RouteRegistry as P, RouteSearch as R, RouteMatch as S, RouteMode as T, RouteContext as _, AccessRedirectDecision as a, RouteHandler as b, LayoutScopeRecord as c, ParsedSegment as d, RegisterRoutesOptions as f, RouteComponent as g, RouteAuthResolver as h, AccessDenyStatus as i, RouteRecord as j, RoutePolicy as k, PageHelperOptions as l, RouteAuthOptions as m, AccessDecision as n, AccessRedirectStatus as o, Route as p, AccessDenyDecision as r, GroupHelperOptions as s, AccessAllowDecision as t, PageScopeRecord as u, RouteDefinition as v, RouteMetaSource as w, RouteManifest as x, RouteDestination as y, RouteSearchValue as z };
@@ -1,4 +1,4 @@
1
1
  //#region src/common/router-internal.ts
2
2
  const ROUTE_ROOT_COMPONENT = Symbol.for("askr.route-root-component");
3
3
  //#endregion
4
- export { ROUTE_ROOT_COMPONENT };
4
+ export { ROUTE_ROOT_COMPONENT as t };
@@ -60,8 +60,6 @@ declare class Scheduler {
60
60
  clearPendingSyncTasks(): number;
61
61
  private resolveWaiters;
62
62
  }
63
- declare const globalScheduler: Scheduler;
64
- declare function isSchedulerExecuting(): boolean;
65
63
  declare function scheduleEventHandler(handler: EventListener): EventListener;
66
64
  //#endregion
67
- export { Scheduler, SchedulerBulkCommitProbe, SchedulerLane, scheduleEventHandler };
65
+ export { scheduleEventHandler as n, Scheduler as t };
@@ -1,15 +1,35 @@
1
- import "./perf-metrics.js";
2
- import { clearDerivedDependencySubscriptions, markReactivePropsDirtySource, markReadableDerivedSubscribersDirty, markReadableUsage, notifyReadableReaders, recordReadableRead, syncDerivedDependencySubscriptions, withDerivedReadTracking } from "./readable.js";
3
- import { claimHookIndex, getCurrentInstance } from "./component-scope.js";
4
- import "./component.js";
5
- import { markDirtySelectorRecord, takeDirtySelectorRecords } from "./selector-store.js";
1
+ import { t as enqueueRuntimeLane } from "./access-Bg4RJNC8.js";
2
+ import { d as markReadableUsage, f as notifyReadableReaders, g as withDerivedReadTracking, h as syncDerivedDependencySubscriptions, l as markReactivePropsDirtySource, o as clearDerivedDependencySubscriptions, p as recordReadableRead, u as markReadableDerivedSubscribersDirty } from "./fastlane-Dw8SOBr9.js";
3
+ import { i as claimHookIndex, p as getCurrentInstance } from "./component-scope-CC3cojX9.js";
4
+ //#region src/runtime/selector-store.ts
5
+ const dirtySelectorRecords = /* @__PURE__ */ new Set();
6
+ let hasPendingSelectorFlush = false;
7
+ function markDirtySelectorRecord(record, flush) {
8
+ record._dirty = true;
9
+ if (record._scheduled) return;
10
+ record._scheduled = true;
11
+ dirtySelectorRecords.add(record);
12
+ if (hasPendingSelectorFlush) return;
13
+ hasPendingSelectorFlush = true;
14
+ enqueueRuntimeLane("derived", flush);
15
+ }
16
+ function takeDirtySelectorRecords() {
17
+ hasPendingSelectorFlush = false;
18
+ if (dirtySelectorRecords.size === 0) return [];
19
+ const pending = Array.from(dirtySelectorRecords);
20
+ dirtySelectorRecords.clear();
21
+ return pending;
22
+ }
23
+ //#endregion
24
+ //#region src/runtime/selector.ts
6
25
  const selectorCells = /* @__PURE__ */ new WeakMap();
7
26
  const selectorRecords = /* @__PURE__ */ new WeakMap();
8
27
  function getSelectorStore(instance) {
9
- let store = selectorCells.get(instance);
28
+ const generation = instance._ownershipGeneration;
29
+ let store = selectorCells.get(generation);
10
30
  if (!store) {
11
31
  store = /* @__PURE__ */ new Map();
12
- selectorCells.set(instance, store);
32
+ selectorCells.set(generation, store);
13
33
  }
14
34
  return store;
15
35
  }
@@ -103,10 +123,12 @@ function createSelectorLane(record, equals) {
103
123
  _objectCandidateSources: /* @__PURE__ */ new Set(),
104
124
  _cleanup: () => {
105
125
  for (const sourceRef of lane._primitiveCandidates.values()) {
126
+ sourceRef._readers?.size;
106
127
  sourceRef._readers?.clear();
107
128
  sourceRef._derivedSubscribers?.clear();
108
129
  }
109
130
  for (const sourceRef of lane._objectCandidateSources) {
131
+ sourceRef._readers?.size;
110
132
  sourceRef._readers?.clear();
111
133
  sourceRef._derivedSubscribers?.clear();
112
134
  }
@@ -198,7 +220,7 @@ function ensureSelectorHookBinding(hook) {
198
220
  attachSelectorHookBinding(hook, hook._source, hook._equals);
199
221
  return hook._record;
200
222
  }
201
- function createSelectorHook(instance, hookIndex, source, equals) {
223
+ function createSelectorHook(instance, generation, store, hookIndex, source, equals) {
202
224
  const hook = function selectorPredicate(candidate) {
203
225
  const selectorHook = hook;
204
226
  const record = selectorHook._record ?? ensureSelectorHookBinding(selectorHook);
@@ -220,7 +242,8 @@ function createSelectorHook(instance, hookIndex, source, equals) {
220
242
  attachSelectorHookBinding(hook, source, equals);
221
243
  (instance.cleanupFns ??= []).push(() => {
222
244
  hook._cleanup();
223
- selectorCells.get(instance)?.delete(hookIndex);
245
+ store.delete(hookIndex);
246
+ if (store.size === 0 && selectorCells.get(generation) === store) selectorCells.delete(generation);
224
247
  });
225
248
  return hook;
226
249
  }
@@ -234,7 +257,7 @@ function getOrCreateSelectorHook(instance, hookIndex, source, equals) {
234
257
  } else ensureSelectorHookBinding(existing);
235
258
  return existing;
236
259
  }
237
- const created = createSelectorHook(instance, hookIndex, source, equals);
260
+ const created = createSelectorHook(instance, instance._ownershipGeneration, store, hookIndex, source, equals);
238
261
  store.set(hookIndex, created);
239
262
  return created;
240
263
  }
@@ -248,4 +271,4 @@ function selector(source, equals = Object.is) {
248
271
  return hook;
249
272
  }
250
273
  //#endregion
251
- export { selector };
274
+ export { selector as t };
@@ -12,4 +12,4 @@ function isSnapshotSource(value) {
12
12
  return !!value && typeof value === "object" && value[SNAPSHOT_SOURCE_BRAND] === true;
13
13
  }
14
14
  //#endregion
15
- export { SNAPSHOT_SOURCE_BRAND, brandSnapshotSource, isSnapshotSource };
15
+ export { isSnapshotSource as n, brandSnapshotSource as t };