@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,255 +0,0 @@
1
- import { isDevelopmentEnvironment } from "../common/env.js";
2
- import { logger } from "../common/logger.js";
3
- import { ELEMENT_TYPE, Fragment } from "../common/jsx.js";
4
- import { cleanupComponent } from "../runtime/component-cleanup.js";
5
- import { isPromiseLike } from "../common/promise.js";
6
- import { mountComponent } from "../runtime/component-internal.js";
7
- import { DefaultPortal, clearDefaultPortalForInstance } from "../runtime/portal.js";
8
- import "../runtime/index.js";
9
- import { cleanupInstancesUnder } from "../renderer/cleanup.js";
10
- import "../renderer/index.js";
11
- import { applyHistoryScroll, applyNavigationScroll, saveScrollPosition } from "./navigation-scroll.js";
12
- import { resolveRouteFromRoutes } from "./route-matching.js";
13
- import { resolveRouteRequest } from "./resolution.js";
14
- import "./route.js";
15
- import { getCurrentHref, getCurrentPathname, getRegisteredAppsSnapshot, parseTargetUrl, setCurrentRouteLocation, syncAppRegistrationLocation, syncRegisteredRouteSnapshot } from "./navigation-registry.js";
16
- import "../jsx/index.js";
17
- //#region src/router/navigation-targets.ts
18
- const MAX_NAVIGATION_REDIRECTS = 20;
19
- let activeRouteRequestId = 0;
20
- let activeRouteRequestController = null;
21
- function beginRouteRequest() {
22
- activeRouteRequestId += 1;
23
- activeRouteRequestController?.abort();
24
- activeRouteRequestController = new AbortController();
25
- return {
26
- id: activeRouteRequestId,
27
- signal: activeRouteRequestController.signal
28
- };
29
- }
30
- function isStaleRouteRequest(requestId) {
31
- return requestId !== activeRouteRequestId;
32
- }
33
- function cancelRouteRequests() {
34
- activeRouteRequestId += 1;
35
- activeRouteRequestController?.abort();
36
- activeRouteRequestController = null;
37
- }
38
- function isRenderResult(result) {
39
- return result !== null && result.kind === "render";
40
- }
41
- function getRedirectHistoryMode(replace) {
42
- return replace === false ? "push" : "replace";
43
- }
44
- function getNavigationHistoryMode(options) {
45
- if (options.history) return options.history;
46
- return options.replace ? "replace" : "push";
47
- }
48
- function createDeniedResolvedRoute(status) {
49
- return {
50
- handler: () => ({
51
- type: "div",
52
- props: { "data-route-denied": String(status) },
53
- children: [String(status)]
54
- }),
55
- params: {}
56
- };
57
- }
58
- function bindResolvedRouteHandler(resolved) {
59
- return () => resolved.handler(resolved.params);
60
- }
61
- function wrapRootRouteHandler(componentFn) {
62
- const wrappedFn = (props, ctx) => {
63
- const out = componentFn(props, ctx);
64
- if (isPromiseLike(out)) throw new Error("Async components are not supported. Components must return synchronously.");
65
- const portalVNode = {
66
- $$typeof: ELEMENT_TYPE,
67
- type: DefaultPortal,
68
- props: { __askrAutoDefaultPortal: true },
69
- key: "__default_portal"
70
- };
71
- return {
72
- $$typeof: ELEMENT_TYPE,
73
- type: Fragment,
74
- props: { children: out === void 0 || out === null ? [portalVNode] : [out, portalVNode] }
75
- };
76
- };
77
- Object.defineProperty(wrappedFn, "name", { value: componentFn.name || "Component" });
78
- return wrappedFn;
79
- }
80
- function cleanupRouteOwnership(instance) {
81
- const cleanupErrors = [];
82
- const children = instance.target ? Array.from(instance.target.childNodes) : [];
83
- for (const child of children) try {
84
- cleanupInstancesUnder(child, { strict: instance.cleanupStrict });
85
- } catch (error) {
86
- cleanupErrors.push(error);
87
- }
88
- try {
89
- cleanupComponent(instance);
90
- } catch (error) {
91
- cleanupErrors.push(error);
92
- }
93
- if (cleanupErrors.length > 0) throw new AggregateError(cleanupErrors, "Route cleanup failed");
94
- }
95
- function remountResolvedRoute(instance, resolved, pathname, href) {
96
- clearDefaultPortalForInstance(instance);
97
- cleanupRouteOwnership(instance);
98
- instance.fn = wrapRootRouteHandler(bindResolvedRouteHandler(resolved));
99
- instance.props = {};
100
- instance.stateValues = [];
101
- instance.expectedStateIndices = [];
102
- instance.firstRenderComplete = false;
103
- instance.stateIndexCheck = -1;
104
- instance.evaluationGeneration++;
105
- instance.notifyUpdate = null;
106
- instance.mountOperations = [];
107
- instance.commitOperations = [];
108
- instance.lifecycleSlots = [];
109
- instance.cleanupFns = [];
110
- instance._placeholder = void 0;
111
- instance.hasPendingUpdate = false;
112
- instance._currentRenderToken = void 0;
113
- instance.lastRenderToken = 0;
114
- instance._pendingReadSources = void 0;
115
- instance._lastReadSources = void 0;
116
- instance.abortController = null;
117
- mountComponent(instance);
118
- setCurrentRouteLocation(pathname, href);
119
- return true;
120
- }
121
- function rerenderResolvedRoute(instance, pathname, href) {
122
- setCurrentRouteLocation(pathname, href);
123
- instance._enqueueRun?.();
124
- return true;
125
- }
126
- function resolveAppRouteRequest(app, pathname, href, signal) {
127
- if (app.manifest) return resolveRouteRequest(href, {
128
- manifest: app.manifest,
129
- auth: app.auth,
130
- signal
131
- });
132
- if (app.routes) {
133
- const resolved = resolveRouteFromRoutes(pathname, app.routes);
134
- if (!resolved) return null;
135
- return {
136
- kind: "render",
137
- handler: resolved.handler,
138
- params: resolved.params
139
- };
140
- }
141
- return resolveRouteRequest(href, {
142
- auth: app.auth,
143
- signal
144
- });
145
- }
146
- function resolveNavigationTargetsForApps(pathname, href, signal) {
147
- const apps = getRegisteredAppsSnapshot();
148
- if (apps.length === 1) {
149
- const app = apps[0];
150
- const resolved = resolveAppRouteRequest(app, pathname, href, signal);
151
- if (isPromiseLike(resolved)) return Promise.resolve(resolved).then((next) => [{
152
- app,
153
- resolved: next
154
- }]);
155
- return [{
156
- app,
157
- resolved
158
- }];
159
- }
160
- const syncTargets = [];
161
- const pendingTargets = [];
162
- for (const app of apps) {
163
- const resolved = resolveAppRouteRequest(app, pathname, href, signal);
164
- if (isPromiseLike(resolved)) {
165
- pendingTargets.push(Promise.resolve(resolved).then((next) => ({
166
- app,
167
- resolved: next
168
- })));
169
- continue;
170
- }
171
- syncTargets.push({
172
- app,
173
- resolved
174
- });
175
- }
176
- if (pendingTargets.length === 0) return syncTargets;
177
- return Promise.all([...syncTargets.map((target) => Promise.resolve(target)), ...pendingTargets]);
178
- }
179
- function applyNavigationTargets(path, options, redirectState, pathname, href, targets, navigateWithRedirectState) {
180
- const previousPathname = getCurrentPathname();
181
- for (const target of targets) {
182
- const resolved = target.resolved;
183
- if (!resolved || resolved.kind !== "redirect") continue;
184
- const redirectTarget = parseTargetUrl(resolved.to);
185
- const redirectHref = `${redirectTarget.pathname}${redirectTarget.search}${redirectTarget.hash}`;
186
- if (redirectHref === href) {
187
- if (isDevelopmentEnvironment()) logger.warn(`Navigation guard redirected to the same path: ${redirectHref}`);
188
- return;
189
- }
190
- if (redirectState.visited.has(redirectHref)) throw new Error(`[Askr] Navigation redirect cycle detected at ${redirectHref}.`);
191
- if (redirectState.redirects >= MAX_NAVIGATION_REDIRECTS) throw new Error(`[Askr] Navigation redirect limit exceeded (${MAX_NAVIGATION_REDIRECTS}).`);
192
- redirectState.visited.add(redirectHref);
193
- redirectState.redirects++;
194
- navigateWithRedirectState(redirectHref, { history: getRedirectHistoryMode(resolved.replace) }, redirectState);
195
- return;
196
- }
197
- const matchedTargets = targets.filter((target) => target.resolved !== null);
198
- if (matchedTargets.length === 0) {
199
- if (isDevelopmentEnvironment()) logger.warn(`No route found for path: ${path}`);
200
- return;
201
- }
202
- saveScrollPosition(getCurrentHref());
203
- const historyMethod = getNavigationHistoryMode(options) === "replace" ? "replaceState" : "pushState";
204
- window.history[historyMethod]({ path: href }, "", href);
205
- syncRegisteredRouteSnapshot();
206
- for (const target of matchedTargets) {
207
- const resolved = target.resolved;
208
- if (resolved.kind === "redirect") continue;
209
- if (pathname === target.app.pathname && isRenderResult(resolved)) {
210
- rerenderResolvedRoute(target.app.instance, pathname, href);
211
- syncAppRegistrationLocation(target.app, pathname, href);
212
- continue;
213
- }
214
- remountResolvedRoute(target.app.instance, resolved.kind === "deny" ? createDeniedResolvedRoute(resolved.status) : {
215
- handler: resolved.handler,
216
- params: resolved.params
217
- }, pathname, href);
218
- syncAppRegistrationLocation(target.app, pathname, href);
219
- }
220
- if (pathname !== previousPathname) applyNavigationScroll(options.scroll);
221
- }
222
- function applyPopStateNavigationTargets(requestId, pathname, href, state, targets, navigate) {
223
- if (isStaleRouteRequest(requestId)) return;
224
- const matchedTargets = targets.filter((target) => target.resolved !== null);
225
- if (matchedTargets.length === 0) {
226
- if (isDevelopmentEnvironment()) logger.warn(`No route found for path: ${pathname}`);
227
- return;
228
- }
229
- for (const target of matchedTargets) {
230
- const resolved = target.resolved;
231
- if (resolved.kind !== "redirect") continue;
232
- navigate(resolved.to, { history: getRedirectHistoryMode(resolved.replace) });
233
- return;
234
- }
235
- syncRegisteredRouteSnapshot();
236
- for (const target of matchedTargets) {
237
- const resolved = target.resolved;
238
- if (pathname === target.app.pathname && isRenderResult(resolved)) {
239
- rerenderResolvedRoute(target.app.instance, pathname, href);
240
- syncAppRegistrationLocation(target.app, pathname, href);
241
- continue;
242
- }
243
- if (resolved.kind === "redirect") continue;
244
- remountResolvedRoute(target.app.instance, resolved.kind === "deny" ? createDeniedResolvedRoute(resolved.status) : {
245
- handler: resolved.handler,
246
- params: resolved.params
247
- }, pathname, href);
248
- syncAppRegistrationLocation(target.app, pathname, href);
249
- }
250
- applyHistoryScroll(href, state);
251
- }
252
- //#endregion
253
- export { applyNavigationTargets, applyPopStateNavigationTargets, beginRouteRequest, cancelRouteRequests, getRedirectHistoryMode, isStaleRouteRequest, resolveNavigationTargetsForApps };
254
-
255
- //# sourceMappingURL=navigation-targets.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"navigation-targets.js","names":[],"sources":["../../src/router/navigation-targets.ts"],"sourcesContent":["import { isDevelopmentEnvironment } from '../common/env';\nimport { isPromiseLike } from '../common/promise';\nimport type { RouteRenderResult, RouteRequestResult } from '../common/router';\nimport { cleanupInstancesUnder } from '../renderer';\nimport { DefaultPortal, clearDefaultPortalForInstance } from '../runtime';\nimport { ELEMENT_TYPE, Fragment } from '../jsx';\nimport { logger } from '../common/logger';\nimport {\n cleanupComponent,\n mountComponent,\n type ComponentInstance,\n} from '../runtime';\nimport {\n applyHistoryScroll,\n applyNavigationScroll,\n saveScrollPosition,\n type NavigationScrollBehavior,\n} from './navigation-scroll';\nimport {\n getCurrentHref,\n getCurrentPathname,\n getRegisteredAppsSnapshot,\n parseTargetUrl,\n setCurrentRouteLocation,\n syncAppRegistrationLocation,\n syncRegisteredRouteSnapshot,\n type AppRegistration,\n} from './navigation-registry';\nimport {\n resolveRouteFromRoutes,\n resolveRouteRequest,\n type ResolvedRoute,\n} from './route';\n\nexport type NavigateOptions = {\n history?: 'push' | 'replace';\n replace?: boolean;\n scroll?: NavigationScrollBehavior;\n};\n\nexport type NavigationRedirectState = {\n redirects: number;\n visited: Set<string>;\n};\n\nexport type AppNavigationTarget = {\n app: AppRegistration;\n resolved: RouteRequestResult;\n};\n\nconst MAX_NAVIGATION_REDIRECTS = 20;\n\nlet activeRouteRequestId = 0;\nlet activeRouteRequestController: AbortController | null = null;\n\nexport function beginRouteRequest(): { id: number; signal: AbortSignal } {\n activeRouteRequestId += 1;\n activeRouteRequestController?.abort();\n activeRouteRequestController = new AbortController();\n\n return {\n id: activeRouteRequestId,\n signal: activeRouteRequestController.signal,\n };\n}\n\nexport function isStaleRouteRequest(requestId: number): boolean {\n return requestId !== activeRouteRequestId;\n}\n\nexport function cancelRouteRequests(): void {\n activeRouteRequestId += 1;\n activeRouteRequestController?.abort();\n activeRouteRequestController = null;\n}\n\nfunction isRenderResult(\n result: RouteRequestResult\n): result is RouteRenderResult {\n return result !== null && result.kind === 'render';\n}\n\nexport function getRedirectHistoryMode(\n replace: boolean | undefined\n): 'push' | 'replace' {\n return replace === false ? 'push' : 'replace';\n}\n\nfunction getNavigationHistoryMode(\n options: NavigateOptions\n): 'push' | 'replace' {\n if (options.history) {\n return options.history;\n }\n\n return options.replace ? 'replace' : 'push';\n}\n\nfunction createDeniedResolvedRoute(status: number): ResolvedRoute {\n return {\n handler: () => ({\n type: 'div',\n props: {\n 'data-route-denied': String(status),\n },\n children: [String(status)],\n }),\n params: {},\n };\n}\n\nfunction bindResolvedRouteHandler(\n resolved: ResolvedRoute\n): ComponentInstance['fn'] {\n return () =>\n resolved.handler(resolved.params) as ReturnType<ComponentInstance['fn']>;\n}\n\nfunction wrapRootRouteHandler(\n componentFn: ComponentInstance['fn']\n): ComponentInstance['fn'] {\n const wrappedFn: ComponentInstance['fn'] = (props, ctx) => {\n const out = componentFn(props, ctx);\n if (isPromiseLike(out)) {\n throw new Error(\n 'Async components are not supported. Components must return synchronously.'\n );\n }\n const portalVNode = {\n $$typeof: ELEMENT_TYPE,\n type: DefaultPortal,\n props: { __askrAutoDefaultPortal: true },\n key: '__default_portal',\n } as unknown;\n\n return {\n $$typeof: ELEMENT_TYPE,\n type: Fragment,\n props: {\n children:\n out === undefined || out === null\n ? [portalVNode]\n : [out, portalVNode],\n },\n } as ReturnType<ComponentInstance['fn']>;\n };\n\n Object.defineProperty(wrappedFn, 'name', {\n value: componentFn.name || 'Component',\n });\n\n return wrappedFn;\n}\n\nfunction cleanupRouteOwnership(instance: ComponentInstance): void {\n const cleanupErrors: unknown[] = [];\n const children = instance.target\n ? Array.from(instance.target.childNodes)\n : [];\n\n for (const child of children) {\n try {\n cleanupInstancesUnder(child, { strict: instance.cleanupStrict });\n } catch (error) {\n cleanupErrors.push(error);\n }\n }\n\n try {\n cleanupComponent(instance);\n } catch (error) {\n cleanupErrors.push(error);\n }\n\n if (cleanupErrors.length > 0) {\n throw new AggregateError(cleanupErrors, 'Route cleanup failed');\n }\n}\n\nfunction remountResolvedRoute(\n instance: ComponentInstance,\n resolved: ResolvedRoute,\n pathname: string,\n href: string\n): boolean {\n clearDefaultPortalForInstance(instance);\n cleanupRouteOwnership(instance);\n\n instance.fn = wrapRootRouteHandler(bindResolvedRouteHandler(resolved));\n instance.props = {};\n\n instance.stateValues = [];\n instance.expectedStateIndices = [];\n instance.firstRenderComplete = false;\n instance.stateIndexCheck = -1;\n instance.evaluationGeneration++;\n instance.notifyUpdate = null;\n instance.mountOperations = [];\n instance.commitOperations = [];\n instance.lifecycleSlots = [];\n instance.cleanupFns = [];\n instance._placeholder = undefined;\n instance.hasPendingUpdate = false;\n instance._currentRenderToken = undefined;\n instance.lastRenderToken = 0;\n instance._pendingReadSources = undefined;\n instance._lastReadSources = undefined;\n\n instance.abortController = null;\n\n mountComponent(instance);\n setCurrentRouteLocation(pathname, href);\n return true;\n}\n\nfunction rerenderResolvedRoute(\n instance: ComponentInstance,\n pathname: string,\n href: string\n): boolean {\n setCurrentRouteLocation(pathname, href);\n instance._enqueueRun?.();\n return true;\n}\n\nfunction resolveAppRouteRequest(\n app: AppRegistration,\n pathname: string,\n href: string,\n signal: AbortSignal\n): RouteRequestResult | Promise<RouteRequestResult> {\n if (app.manifest) {\n return resolveRouteRequest(href, {\n manifest: app.manifest,\n auth: app.auth,\n signal,\n });\n }\n\n if (app.routes) {\n const resolved = resolveRouteFromRoutes(pathname, app.routes);\n if (!resolved) {\n return null;\n }\n\n return {\n kind: 'render',\n handler: resolved.handler,\n params: resolved.params,\n };\n }\n\n return resolveRouteRequest(href, {\n auth: app.auth,\n signal,\n });\n}\n\nexport function resolveNavigationTargetsForApps(\n pathname: string,\n href: string,\n signal: AbortSignal\n): AppNavigationTarget[] | Promise<AppNavigationTarget[]> {\n const apps = getRegisteredAppsSnapshot();\n\n if (apps.length === 1) {\n const app = apps[0]!;\n const resolved = resolveAppRouteRequest(app, pathname, href, signal);\n if (isPromiseLike<RouteRequestResult>(resolved)) {\n return Promise.resolve(resolved).then((next) => [\n {\n app,\n resolved: next,\n },\n ]);\n }\n\n return [\n {\n app,\n resolved,\n },\n ];\n }\n\n const syncTargets: AppNavigationTarget[] = [];\n const pendingTargets: Array<Promise<AppNavigationTarget>> = [];\n\n for (const app of apps) {\n const resolved = resolveAppRouteRequest(app, pathname, href, signal);\n if (isPromiseLike<RouteRequestResult>(resolved)) {\n pendingTargets.push(\n Promise.resolve(resolved).then((next) => ({ app, resolved: next }))\n );\n continue;\n }\n\n syncTargets.push({ app, resolved });\n }\n\n if (pendingTargets.length === 0) {\n return syncTargets;\n }\n\n return Promise.all([\n ...syncTargets.map((target) => Promise.resolve(target)),\n ...pendingTargets,\n ]);\n}\n\nexport function applyNavigationTargets(\n path: string,\n options: NavigateOptions,\n redirectState: NavigationRedirectState,\n pathname: string,\n href: string,\n targets: AppNavigationTarget[],\n navigateWithRedirectState: (\n path: string,\n options: NavigateOptions,\n redirectState: NavigationRedirectState\n ) => void\n): void {\n const previousPathname = getCurrentPathname();\n\n for (const target of targets) {\n const resolved = target.resolved;\n if (!resolved || resolved.kind !== 'redirect') {\n continue;\n }\n\n const redirectTarget = parseTargetUrl(resolved.to);\n const redirectHref = `${redirectTarget.pathname}${redirectTarget.search}${redirectTarget.hash}`;\n if (redirectHref === href) {\n if (isDevelopmentEnvironment()) {\n logger.warn(\n `Navigation guard redirected to the same path: ${redirectHref}`\n );\n }\n return;\n }\n\n if (redirectState.visited.has(redirectHref)) {\n throw new Error(\n `[Askr] Navigation redirect cycle detected at ${redirectHref}.`\n );\n }\n if (redirectState.redirects >= MAX_NAVIGATION_REDIRECTS) {\n throw new Error(\n `[Askr] Navigation redirect limit exceeded (${MAX_NAVIGATION_REDIRECTS}).`\n );\n }\n\n redirectState.visited.add(redirectHref);\n redirectState.redirects++;\n navigateWithRedirectState(\n redirectHref,\n {\n history: getRedirectHistoryMode(resolved.replace),\n },\n redirectState\n );\n return;\n }\n\n const matchedTargets = targets.filter((target) => target.resolved !== null);\n if (matchedTargets.length === 0) {\n if (isDevelopmentEnvironment()) {\n logger.warn(`No route found for path: ${path}`);\n }\n return;\n }\n\n saveScrollPosition(getCurrentHref());\n\n const historyMethod =\n getNavigationHistoryMode(options) === 'replace'\n ? 'replaceState'\n : 'pushState';\n window.history[historyMethod]({ path: href }, '', href);\n syncRegisteredRouteSnapshot();\n\n for (const target of matchedTargets) {\n const resolved = target.resolved!;\n if (resolved.kind === 'redirect') {\n continue;\n }\n\n if (pathname === target.app.pathname && isRenderResult(resolved)) {\n rerenderResolvedRoute(target.app.instance, pathname, href);\n syncAppRegistrationLocation(target.app, pathname, href);\n continue;\n }\n\n remountResolvedRoute(\n target.app.instance,\n resolved.kind === 'deny'\n ? createDeniedResolvedRoute(resolved.status)\n : {\n handler: resolved.handler,\n params: resolved.params,\n },\n pathname,\n href\n );\n syncAppRegistrationLocation(target.app, pathname, href);\n }\n\n if (pathname !== previousPathname) {\n applyNavigationScroll(options.scroll);\n }\n}\n\nexport function applyPopStateNavigationTargets(\n requestId: number,\n pathname: string,\n href: string,\n state: unknown,\n targets: AppNavigationTarget[],\n navigate: (path: string, options: NavigateOptions) => void\n): void {\n if (isStaleRouteRequest(requestId)) {\n return;\n }\n\n const matchedTargets = targets.filter((target) => target.resolved !== null);\n if (matchedTargets.length === 0) {\n if (isDevelopmentEnvironment()) {\n logger.warn(`No route found for path: ${pathname}`);\n }\n return;\n }\n\n for (const target of matchedTargets) {\n const resolved = target.resolved!;\n if (resolved.kind !== 'redirect') {\n continue;\n }\n\n navigate(resolved.to, {\n history: getRedirectHistoryMode(resolved.replace),\n });\n return;\n }\n\n syncRegisteredRouteSnapshot();\n\n for (const target of matchedTargets) {\n const resolved = target.resolved!;\n if (pathname === target.app.pathname && isRenderResult(resolved)) {\n rerenderResolvedRoute(target.app.instance, pathname, href);\n syncAppRegistrationLocation(target.app, pathname, href);\n continue;\n }\n\n if (resolved.kind === 'redirect') {\n continue;\n }\n\n remountResolvedRoute(\n target.app.instance,\n resolved.kind === 'deny'\n ? createDeniedResolvedRoute(resolved.status)\n : {\n handler: resolved.handler,\n params: resolved.params,\n },\n pathname,\n href\n );\n syncAppRegistrationLocation(target.app, pathname, href);\n }\n\n applyHistoryScroll(href, state);\n}\n"],"mappings":"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"}
@@ -1,28 +0,0 @@
1
- import { AccessAllowDecision, AccessDecision, AccessDenyDecision, AccessDenyStatus, AccessRedirectDecision, AccessRedirectStatus, RouteAuthOptions, RouteContext, RoutePolicy } from "../common/router.js";
2
-
3
- //#region src/router/policy.d.ts
4
- type BuiltInRoutePolicyKind = 'auth' | 'guest' | 'role' | 'permission';
5
- interface BuiltInRoutePolicyMetadata {
6
- kind: BuiltInRoutePolicyKind;
7
- value?: string;
8
- }
9
- declare function allow(): AccessAllowDecision;
10
- declare function redirect(to: string, init?: {
11
- status?: AccessRedirectStatus;
12
- replace?: boolean;
13
- }): AccessRedirectDecision;
14
- declare function deny(status: AccessDenyStatus): AccessDenyDecision;
15
- declare function unauthorized(): AccessDenyDecision;
16
- declare function forbidden(): AccessDenyDecision;
17
- declare function notFound(): AccessDenyDecision;
18
- declare function normalizeAccessDecision(result: AccessDecision): AccessDecision;
19
- declare function withRouteAuthOptions(context: RouteContext, auth: RouteAuthOptions | undefined): RouteContext;
20
- declare function _getBuiltInRoutePolicy(policy: RoutePolicy): BuiltInRoutePolicyMetadata | null;
21
- declare function requireAuth(): RoutePolicy;
22
- declare function requireGuest(): RoutePolicy;
23
- declare function requireRole(role: string): RoutePolicy;
24
- declare function requirePermission(permission: string): RoutePolicy;
25
- declare function evaluateRoutePolicy(policy: RoutePolicy, context: RouteContext): Promise<AccessDecision>;
26
- //#endregion
27
- export { BuiltInRoutePolicyKind, BuiltInRoutePolicyMetadata, allow, deny, forbidden, notFound, redirect, requireAuth, requirePermission, requireRole, unauthorized };
28
- //# sourceMappingURL=policy.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"policy.d.ts","names":[],"sources":["../../src/router/policy.ts"],"mappings":";;;KAoBY,sBAAA;AAAA,UAEK,0BAAA;EACf,IAAA,EAAM,sBAAsB;EAC5B,KAAA;AAAA;AAAA,iBAWc,KAAA,IAAS,mBAAmB;AAAA,iBAI5B,QAAA,CACd,EAAA,UACA,IAAA;EACE,MAAA,GAAS,oBAAA;EACT,OAAA;AAAA,IAED,sBAAsB;AAAA,iBAST,IAAA,CAAK,MAAA,EAAQ,gBAAA,GAAmB,kBAAkB;AAAA,iBAIlD,YAAA,IAAgB,kBAAkB;AAAA,iBAIlC,SAAA,IAAa,kBAAkB;AAAA,iBAI/B,QAAA,IAAY,kBAAkB;AAAA,iBAI9B,uBAAA,CACd,MAAA,EAAQ,cAAA,GACP,cAAc;AAAA,iBAID,oBAAA,CACd,OAAA,EAAS,YAAA,EACT,IAAA,EAAM,gBAAA,eACL,YAAA;AAAA,iBA0Ca,sBAAA,CACd,MAAA,EAAQ,WAAA,GACP,0BAA0B;AAAA,iBAoGb,WAAA,IAAe,WAAW;AAAA,iBAa1B,YAAA,IAAgB,WAAW;AAAA,iBAa3B,WAAA,CAAY,IAAA,WAAe,WAAW;AAAA,iBAwBtC,iBAAA,CAAkB,UAAA,WAAqB,WAAW;AAAA,iBAwB5C,mBAAA,CACpB,MAAA,EAAQ,WAAA,EACR,OAAA,EAAS,YAAA,GACR,OAAA,CAAQ,cAAA"}
@@ -1,132 +0,0 @@
1
- import { isPromiseLike } from "../common/promise.js";
2
- //#region src/router/policy.ts
3
- const ROUTE_AUTH_OPTIONS = Symbol.for("__ASKR_ROUTE_AUTH_OPTIONS__");
4
- const BUILT_IN_ROUTE_POLICY = Symbol.for("__ASKR_BUILT_IN_ROUTE_POLICY__");
5
- function allow() {
6
- return { kind: "allow" };
7
- }
8
- function redirect(to, init = {}) {
9
- return {
10
- kind: "redirect",
11
- to,
12
- ...init.status ? { status: init.status } : {},
13
- ...init.replace !== void 0 ? { replace: init.replace } : {}
14
- };
15
- }
16
- function deny(status) {
17
- return {
18
- kind: "deny",
19
- status
20
- };
21
- }
22
- function unauthorized() {
23
- return deny(401);
24
- }
25
- function forbidden() {
26
- return deny(403);
27
- }
28
- function notFound() {
29
- return deny(404);
30
- }
31
- function withRouteAuthOptions(context, auth) {
32
- const internal = context;
33
- if (!auth) {
34
- delete internal[ROUTE_AUTH_OPTIONS];
35
- return context;
36
- }
37
- internal[ROUTE_AUTH_OPTIONS] = auth;
38
- return context;
39
- }
40
- function getRouteAuthOptions(context) {
41
- return context[ROUTE_AUTH_OPTIONS];
42
- }
43
- function assertRouteAuthOptions(context) {
44
- const auth = getRouteAuthOptions(context);
45
- if (!auth?.resolve) throw new Error("Built-in auth policies require router auth configuration. Provide `auth` to registerRoutes(...), createSPA(...), hydrateSPA(...), or SSR route resolution.");
46
- return auth;
47
- }
48
- function markBuiltInRoutePolicy(policy, metadata) {
49
- Object.defineProperty(policy, BUILT_IN_ROUTE_POLICY, {
50
- value: Object.freeze({ ...metadata }),
51
- enumerable: false,
52
- configurable: false
53
- });
54
- return policy;
55
- }
56
- function _getBuiltInRoutePolicy(policy) {
57
- return policy[BUILT_IN_ROUTE_POLICY] ?? null;
58
- }
59
- function resolvePathSetting(value, fallback, context) {
60
- if (!value) return fallback;
61
- if (typeof value === "function") return value(context);
62
- return value;
63
- }
64
- function appendNextTarget(path, href) {
65
- const resolved = new URL(path, "http://localhost");
66
- resolved.searchParams.set("next", href);
67
- return `${resolved.pathname}${resolved.search}${resolved.hash}`;
68
- }
69
- function collectStringValues(value) {
70
- if (typeof value === "string") return [value];
71
- if (Array.isArray(value)) return value.filter((entry) => typeof entry === "string");
72
- if (value instanceof Set) return Array.from(value).filter((entry) => typeof entry === "string");
73
- return [];
74
- }
75
- function defaultHasRole(user, role) {
76
- if (!user || typeof user !== "object") return false;
77
- return collectStringValues(user.roles).includes(role);
78
- }
79
- function defaultHasPermission(user, permission) {
80
- if (!user || typeof user !== "object") return false;
81
- return collectStringValues(user.permissions).includes(permission);
82
- }
83
- function resolveUnauthenticatedRedirect(context) {
84
- const loginPath = resolvePathSetting(assertRouteAuthOptions(context).loginPath, "/login", context);
85
- if (isPromiseLike(loginPath)) return Promise.resolve(loginPath).then((nextPath) => redirect(appendNextTarget(nextPath, context.href), { replace: context.mode === "spa" }));
86
- return redirect(appendNextTarget(loginPath, context.href), { replace: context.mode === "spa" });
87
- }
88
- function resolveAuthenticatedRedirect(context) {
89
- const target = resolvePathSetting(assertRouteAuthOptions(context).guestRedirectTo, "/", context);
90
- if (isPromiseLike(target)) return Promise.resolve(target).then((nextTarget) => redirect(nextTarget, { replace: true }));
91
- return redirect(target, { replace: true });
92
- }
93
- function requireAuth() {
94
- return markBuiltInRoutePolicy((context) => {
95
- if (context.session) return allow();
96
- return resolveUnauthenticatedRedirect(context);
97
- }, { kind: "auth" });
98
- }
99
- function requireGuest() {
100
- return markBuiltInRoutePolicy((context) => {
101
- if (!context.session) return allow();
102
- return resolveAuthenticatedRedirect(context);
103
- }, { kind: "guest" });
104
- }
105
- function requireRole(role) {
106
- return markBuiltInRoutePolicy((context) => {
107
- if (!context.user) return resolveUnauthenticatedRedirect(context);
108
- const auth = assertRouteAuthOptions(context);
109
- const hasRole = auth.hasRole ? auth.hasRole(context.user, role, context) : defaultHasRole(context.user, role);
110
- if (isPromiseLike(hasRole)) return Promise.resolve(hasRole).then((next) => next ? allow() : forbidden());
111
- return hasRole ? allow() : forbidden();
112
- }, {
113
- kind: "role",
114
- value: role
115
- });
116
- }
117
- function requirePermission(permission) {
118
- return markBuiltInRoutePolicy((context) => {
119
- if (!context.user) return resolveUnauthenticatedRedirect(context);
120
- const auth = assertRouteAuthOptions(context);
121
- const hasPermission = auth.hasPermission ? auth.hasPermission(context.user, permission, context) : defaultHasPermission(context.user, permission);
122
- if (isPromiseLike(hasPermission)) return Promise.resolve(hasPermission).then((next) => next ? allow() : forbidden());
123
- return hasPermission ? allow() : forbidden();
124
- }, {
125
- kind: "permission",
126
- value: permission
127
- });
128
- }
129
- //#endregion
130
- export { _getBuiltInRoutePolicy, allow, deny, forbidden, notFound, redirect, requireAuth, requireGuest, requirePermission, requireRole, unauthorized, withRouteAuthOptions };
131
-
132
- //# sourceMappingURL=policy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"policy.js","names":[],"sources":["../../src/router/policy.ts"],"sourcesContent":["import type {\n AccessDecision,\n AccessAllowDecision,\n AccessDenyDecision,\n AccessDenyStatus,\n AccessRedirectDecision,\n AccessRedirectStatus,\n RouteAuthOptions,\n RouteContext,\n RoutePolicy,\n} from '../common/router';\nimport { isPromiseLike } from '../common/promise';\n\nconst ROUTE_AUTH_OPTIONS = Symbol.for('__ASKR_ROUTE_AUTH_OPTIONS__');\nconst BUILT_IN_ROUTE_POLICY = Symbol.for('__ASKR_BUILT_IN_ROUTE_POLICY__');\n\ntype InternalRouteContext = RouteContext & {\n [ROUTE_AUTH_OPTIONS]?: RouteAuthOptions;\n};\n\nexport type BuiltInRoutePolicyKind = 'auth' | 'guest' | 'role' | 'permission';\n\nexport interface BuiltInRoutePolicyMetadata {\n kind: BuiltInRoutePolicyKind;\n value?: string;\n}\n\ntype InternalRoutePolicy = RoutePolicy & {\n [BUILT_IN_ROUTE_POLICY]?: BuiltInRoutePolicyMetadata;\n};\n\ntype RoutePathResolver =\n | string\n | ((context: RouteContext) => string | PromiseLike<string>);\n\nexport function allow(): AccessAllowDecision {\n return { kind: 'allow' };\n}\n\nexport function redirect(\n to: string,\n init: {\n status?: AccessRedirectStatus;\n replace?: boolean;\n } = {}\n): AccessRedirectDecision {\n return {\n kind: 'redirect',\n to,\n ...(init.status ? { status: init.status } : {}),\n ...(init.replace !== undefined ? { replace: init.replace } : {}),\n };\n}\n\nexport function deny(status: AccessDenyStatus): AccessDenyDecision {\n return { kind: 'deny', status };\n}\n\nexport function unauthorized(): AccessDenyDecision {\n return deny(401);\n}\n\nexport function forbidden(): AccessDenyDecision {\n return deny(403);\n}\n\nexport function notFound(): AccessDenyDecision {\n return deny(404);\n}\n\nexport function normalizeAccessDecision(\n result: AccessDecision\n): AccessDecision {\n return result;\n}\n\nexport function withRouteAuthOptions(\n context: RouteContext,\n auth: RouteAuthOptions | undefined\n): RouteContext {\n const internal = context as InternalRouteContext;\n\n if (!auth) {\n delete internal[ROUTE_AUTH_OPTIONS];\n return context;\n }\n\n internal[ROUTE_AUTH_OPTIONS] = auth;\n return context;\n}\n\nfunction getRouteAuthOptions(\n context: RouteContext\n): RouteAuthOptions | undefined {\n return (context as InternalRouteContext)[ROUTE_AUTH_OPTIONS];\n}\n\nfunction assertRouteAuthOptions(context: RouteContext): RouteAuthOptions {\n const auth = getRouteAuthOptions(context);\n if (!auth?.resolve) {\n throw new Error(\n 'Built-in auth policies require router auth configuration. ' +\n 'Provide `auth` to registerRoutes(...), createSPA(...), hydrateSPA(...), or SSR route resolution.'\n );\n }\n\n return auth;\n}\n\nfunction markBuiltInRoutePolicy(\n policy: RoutePolicy,\n metadata: BuiltInRoutePolicyMetadata\n): RoutePolicy {\n Object.defineProperty(policy, BUILT_IN_ROUTE_POLICY, {\n value: Object.freeze({ ...metadata }),\n enumerable: false,\n configurable: false,\n });\n return policy;\n}\n\nexport function _getBuiltInRoutePolicy(\n policy: RoutePolicy\n): BuiltInRoutePolicyMetadata | null {\n return (policy as InternalRoutePolicy)[BUILT_IN_ROUTE_POLICY] ?? null;\n}\n\nfunction resolvePathSetting(\n value: RoutePathResolver | undefined,\n fallback: string,\n context: RouteContext\n): string | PromiseLike<string> {\n if (!value) {\n return fallback;\n }\n\n if (typeof value === 'function') {\n return value(context);\n }\n\n return value;\n}\n\nfunction appendNextTarget(path: string, href: string): string {\n const resolved = new URL(path, 'http://localhost');\n resolved.searchParams.set('next', href);\n return `${resolved.pathname}${resolved.search}${resolved.hash}`;\n}\n\nfunction collectStringValues(value: unknown): string[] {\n if (typeof value === 'string') {\n return [value];\n }\n\n if (Array.isArray(value)) {\n return value.filter((entry): entry is string => typeof entry === 'string');\n }\n\n if (value instanceof Set) {\n return Array.from(value).filter(\n (entry): entry is string => typeof entry === 'string'\n );\n }\n\n return [];\n}\n\nfunction defaultHasRole(user: unknown, role: string): boolean {\n if (!user || typeof user !== 'object') {\n return false;\n }\n\n return collectStringValues((user as { roles?: unknown }).roles).includes(\n role\n );\n}\n\nfunction defaultHasPermission(user: unknown, permission: string): boolean {\n if (!user || typeof user !== 'object') {\n return false;\n }\n\n return collectStringValues(\n (user as { permissions?: unknown }).permissions\n ).includes(permission);\n}\n\nfunction resolveUnauthenticatedRedirect(\n context: RouteContext\n): AccessDecision | Promise<AccessDecision> {\n const auth = assertRouteAuthOptions(context);\n const loginPath = resolvePathSetting(auth.loginPath, '/login', context);\n if (isPromiseLike<string>(loginPath)) {\n return Promise.resolve(loginPath).then((nextPath) =>\n redirect(appendNextTarget(nextPath, context.href), {\n replace: context.mode === 'spa',\n })\n );\n }\n\n return redirect(appendNextTarget(loginPath, context.href), {\n replace: context.mode === 'spa',\n });\n}\n\nfunction resolveAuthenticatedRedirect(\n context: RouteContext\n): AccessDecision | Promise<AccessDecision> {\n const auth = assertRouteAuthOptions(context);\n const target = resolvePathSetting(auth.guestRedirectTo, '/', context);\n if (isPromiseLike<string>(target)) {\n return Promise.resolve(target).then((nextTarget) =>\n redirect(nextTarget, {\n replace: true,\n })\n );\n }\n\n return redirect(target, {\n replace: true,\n });\n}\n\nexport function requireAuth(): RoutePolicy {\n return markBuiltInRoutePolicy(\n (context) => {\n if (context.session) {\n return allow();\n }\n\n return resolveUnauthenticatedRedirect(context);\n },\n { kind: 'auth' }\n );\n}\n\nexport function requireGuest(): RoutePolicy {\n return markBuiltInRoutePolicy(\n (context) => {\n if (!context.session) {\n return allow();\n }\n\n return resolveAuthenticatedRedirect(context);\n },\n { kind: 'guest' }\n );\n}\n\nexport function requireRole(role: string): RoutePolicy {\n return markBuiltInRoutePolicy(\n (context) => {\n if (!context.user) {\n return resolveUnauthenticatedRedirect(context);\n }\n\n const auth = assertRouteAuthOptions(context);\n const hasRole = auth.hasRole\n ? auth.hasRole(context.user, role, context)\n : defaultHasRole(context.user, role);\n\n if (isPromiseLike<boolean>(hasRole)) {\n return Promise.resolve(hasRole).then((next) =>\n next ? allow() : forbidden()\n );\n }\n\n return hasRole ? allow() : forbidden();\n },\n { kind: 'role', value: role }\n );\n}\n\nexport function requirePermission(permission: string): RoutePolicy {\n return markBuiltInRoutePolicy(\n (context) => {\n if (!context.user) {\n return resolveUnauthenticatedRedirect(context);\n }\n\n const auth = assertRouteAuthOptions(context);\n const hasPermission = auth.hasPermission\n ? auth.hasPermission(context.user, permission, context)\n : defaultHasPermission(context.user, permission);\n\n if (isPromiseLike<boolean>(hasPermission)) {\n return Promise.resolve(hasPermission).then((next) =>\n next ? allow() : forbidden()\n );\n }\n\n return hasPermission ? allow() : forbidden();\n },\n { kind: 'permission', value: permission }\n );\n}\n\nexport async function evaluateRoutePolicy(\n policy: RoutePolicy,\n context: RouteContext\n): Promise<AccessDecision> {\n const result = await policy(context);\n return result;\n}\n"],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- import { JSXElement } from "../common/jsx.js";
2
- import { LayoutScopeRecord, PageScopeRecord, RouteComponent, RouteHandler, RouteRecord } from "../common/router.js";
3
-
4
- //#region src/router/rendering.d.ts
5
- declare function Outlet(): JSXElement;
6
- declare function createRouteHandler(component: RouteComponent, pageChain: readonly PageScopeRecord[], layoutChain: readonly LayoutScopeRecord[], deferComponents?: boolean): RouteHandler;
7
- declare function getRenderHandler(record: RouteRecord): RouteHandler;
8
- //#endregion
9
- export { Outlet };
10
- //# sourceMappingURL=rendering.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rendering.d.ts","names":[],"sources":["../../src/router/rendering.ts"],"mappings":";;;;iBAegB,MAAA,IAAU,UAAU;AAAA,iBA2CpB,kBAAA,CACd,SAAA,EAAW,cAAA,EACX,SAAA,WAAoB,eAAA,IACpB,WAAA,WAAsB,iBAAA,IACtB,eAAA,aACC,YAAA;AAAA,iBAgBa,gBAAA,CAAiB,MAAA,EAAQ,WAAA,GAAc,YAAY"}
@@ -1,46 +0,0 @@
1
- import { ELEMENT_TYPE, Fragment } from "../common/jsx.js";
2
- import { defineContext, readContext } from "../runtime/context.js";
3
- import "../runtime/index.js";
4
- import { ROUTE_ROOT_COMPONENT } from "../common/router-internal.js";
5
- //#region src/router/rendering.ts
6
- const outletContext = defineContext(null);
7
- function Outlet() {
8
- return {
9
- $$typeof: ELEMENT_TYPE,
10
- type: Fragment,
11
- props: { children: readContext(outletContext) },
12
- key: null
13
- };
14
- }
15
- function applyPageChain(pageChain, params, content, deferComponents = false) {
16
- let nextContent = content;
17
- for (let i = pageChain.length - 1; i >= 0; i--) nextContent = outletContext.Scope({
18
- value: nextContent,
19
- children: deferComponents ? createRouteComponentVNode(pageChain[i].component, params) : pageChain[i].component(params)
20
- });
21
- return nextContent;
22
- }
23
- function createRouteComponentVNode(component, params, routeRoot = false) {
24
- return {
25
- $$typeof: ELEMENT_TYPE,
26
- type: component,
27
- props: params,
28
- key: null,
29
- ...routeRoot ? { [ROUTE_ROOT_COMPONENT]: true } : {}
30
- };
31
- }
32
- function createRouteHandler(component, pageChain, layoutChain, deferComponents = false) {
33
- return (params) => {
34
- let content = deferComponents ? createRouteComponentVNode(component, params, true) : component(params);
35
- content = applyPageChain(pageChain, params, content, deferComponents);
36
- for (let i = layoutChain.length - 1; i >= 0; i--) content = layoutChain[i].component({ children: content });
37
- return content;
38
- };
39
- }
40
- function getRenderHandler(record) {
41
- return record.renderHandler ?? createRouteHandler(record.component, record.pageChain, record.layoutChain, true);
42
- }
43
- //#endregion
44
- export { Outlet, createRouteHandler, getRenderHandler };
45
-
46
- //# sourceMappingURL=rendering.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rendering.js","names":[],"sources":["../../src/router/rendering.ts"],"sourcesContent":["import { ELEMENT_TYPE, Fragment, type JSXElement } from '../common/jsx';\nimport type {\n LayoutScopeRecord,\n PageScopeRecord,\n RouteComponent,\n RouteHandler,\n RouteRecord,\n} from '../common/router';\nimport { ROUTE_ROOT_COMPONENT } from '../common/router-internal';\nimport type { RenderableChild } from '../common/vnode';\nimport { defineContext, readContext } from '../runtime';\nimport type { InternalRouteRecord } from './internal-types';\n\nconst outletContext = defineContext<RenderableChild>(null);\n\nexport function Outlet(): JSXElement {\n return {\n $$typeof: ELEMENT_TYPE,\n type: Fragment,\n props: { children: readContext(outletContext) },\n key: null,\n };\n}\n\nfunction applyPageChain(\n pageChain: readonly PageScopeRecord[],\n params: Record<string, string>,\n content: RenderableChild,\n deferComponents = false\n): RenderableChild {\n let nextContent = content;\n\n for (let i = pageChain.length - 1; i >= 0; i--) {\n nextContent = outletContext.Scope({\n value: nextContent,\n children: deferComponents\n ? createRouteComponentVNode(pageChain[i].component, params)\n : pageChain[i].component(params),\n });\n }\n\n return nextContent;\n}\n\nfunction createRouteComponentVNode(\n component: RouteComponent,\n params: Record<string, string>,\n routeRoot = false\n): RenderableChild {\n return {\n $$typeof: ELEMENT_TYPE,\n type: component,\n props: params,\n key: null,\n ...(routeRoot ? { [ROUTE_ROOT_COMPONENT]: true } : {}),\n };\n}\n\nexport function createRouteHandler(\n component: RouteComponent,\n pageChain: readonly PageScopeRecord[],\n layoutChain: readonly LayoutScopeRecord[],\n deferComponents = false\n): RouteHandler {\n return (params) => {\n let content = deferComponents\n ? createRouteComponentVNode(component, params, true)\n : component(params);\n\n content = applyPageChain(pageChain, params, content, deferComponents);\n\n for (let i = layoutChain.length - 1; i >= 0; i--) {\n content = layoutChain[i].component({ children: content });\n }\n\n return content;\n };\n}\n\nexport function getRenderHandler(record: RouteRecord): RouteHandler {\n const internalRecord = record as InternalRouteRecord;\n return (\n internalRecord.renderHandler ??\n createRouteHandler(\n record.component,\n record.pageChain,\n record.layoutChain,\n true\n )\n );\n}\n"],"mappings":";;;;;AAaA,MAAM,gBAAgB,cAA+B,IAAI;AAEzD,SAAgB,SAAqB;CACnC,OAAO;EACL,UAAU;EACV,MAAM;EACN,OAAO,EAAE,UAAU,YAAY,aAAa,EAAE;EAC9C,KAAK;CACP;AACF;AAEA,SAAS,eACP,WACA,QACA,SACA,kBAAkB,OACD;CACjB,IAAI,cAAc;CAElB,KAAK,IAAI,IAAI,UAAU,SAAS,GAAG,KAAK,GAAG,KACzC,cAAc,cAAc,MAAM;EAChC,OAAO;EACP,UAAU,kBACN,0BAA0B,UAAU,EAAE,CAAC,WAAW,MAAM,IACxD,UAAU,EAAE,CAAC,UAAU,MAAM;CACnC,CAAC;CAGH,OAAO;AACT;AAEA,SAAS,0BACP,WACA,QACA,YAAY,OACK;CACjB,OAAO;EACL,UAAU;EACV,MAAM;EACN,OAAO;EACP,KAAK;EACL,GAAI,YAAY,GAAG,uBAAuB,KAAK,IAAI,CAAC;CACtD;AACF;AAEA,SAAgB,mBACd,WACA,WACA,aACA,kBAAkB,OACJ;CACd,QAAQ,WAAW;EACjB,IAAI,UAAU,kBACV,0BAA0B,WAAW,QAAQ,IAAI,IACjD,UAAU,MAAM;EAEpB,UAAU,eAAe,WAAW,QAAQ,SAAS,eAAe;EAEpE,KAAK,IAAI,IAAI,YAAY,SAAS,GAAG,KAAK,GAAG,KAC3C,UAAU,YAAY,EAAE,CAAC,UAAU,EAAE,UAAU,QAAQ,CAAC;EAG1D,OAAO;CACT;AACF;AAEA,SAAgB,iBAAiB,QAAmC;CAElE,OACE,OAAe,iBACf,mBACE,OAAO,WACP,OAAO,WACP,OAAO,aACP,IACF;AAEJ"}
@@ -1,4 +0,0 @@
1
- import { RouteRequestOptions, RouteRequestResult } from "../common/router.js";
2
- //#region src/router/resolution.d.ts
3
- declare function resolveRouteRequest(target: string, options?: RouteRequestOptions): RouteRequestResult | Promise<RouteRequestResult>;
4
- //# sourceMappingURL=resolution.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolution.d.ts","names":[],"sources":["../../src/router/resolution.ts"],"mappings":";;iBAiIgB,mBAAA,CACd,MAAA,UACA,OAAA,GAAS,mBAAA,GACR,kBAAA,GAAqB,OAAA,CAAQ,kBAAA"}
@@ -1,86 +0,0 @@
1
- import { isPromiseLike } from "../common/promise.js";
2
- import { getActiveRenderContext } from "../common/render-context.js";
3
- import { compileNodePolicies } from "./access.js";
4
- import { getRenderHandler } from "./rendering.js";
5
- import { getActiveRouteAuthOptions, getRouteRecords } from "./store.js";
6
- import { buildRouteContext, buildRouteContextBase } from "./route-context.js";
7
- import { computeMatchesFromRoutes, computeRouteActivityMatches, getMatchingRouteRecord, resolveRouteFromRoutes } from "./route-matching.js";
8
- //#region src/router/resolution.ts
9
- function getRoutePolicies(options) {
10
- if (!options) return [];
11
- if (options.policies?.length) return options.policies;
12
- return compileNodePolicies(options);
13
- }
14
- function getDefaultRouteMode() {
15
- if (typeof window !== "undefined") return "spa";
16
- return "ssr";
17
- }
18
- function createRenderDataAwareHandler(handler, data) {
19
- return (params, context) => {
20
- const renderContext = getActiveRenderContext();
21
- if (renderContext) renderContext.renderData = data ?? null;
22
- return handler(params, context);
23
- };
24
- }
25
- function buildRenderResult(record, params, mode) {
26
- const renderHandler = getRenderHandler(record);
27
- const loader = mode === "ssr" ? record.options?.loader : void 0;
28
- if (loader) {
29
- const loaded = loader({ params });
30
- const finalize = (data) => ({
31
- kind: "render",
32
- handler: createRenderDataAwareHandler(renderHandler, data),
33
- params
34
- });
35
- if (isPromiseLike(loaded)) return Promise.resolve(loaded).then((data) => finalize(data));
36
- return finalize(loaded);
37
- }
38
- return {
39
- kind: "render",
40
- handler: renderHandler,
41
- params
42
- };
43
- }
44
- function continueRoutePolicies(policies, context, record, params, startIndex = 0) {
45
- for (let index = startIndex; index < policies.length; index += 1) {
46
- const policyResult = policies[index](context);
47
- if (isPromiseLike(policyResult)) return Promise.resolve(policyResult).then((next) => {
48
- if (next.kind !== "allow") return next;
49
- return continueRoutePolicies(policies, context, record, params, index + 1);
50
- });
51
- if (policyResult.kind !== "allow") return policyResult;
52
- }
53
- return buildRenderResult(record, params, context.mode);
54
- }
55
- function resolveRouteRequest(target, options = {}) {
56
- const match = getMatchingRouteRecord(target, options.manifest?.records ?? getRouteRecords());
57
- if (!match) return null;
58
- const { record, params } = match;
59
- const policies = getRoutePolicies(record.options);
60
- const mode = options.mode ?? getDefaultRouteMode();
61
- if (policies.length === 0) return buildRenderResult(record, params, mode);
62
- const signal = options.signal ?? getActiveRenderContext()?.signal ?? new AbortController().signal;
63
- const auth = getActiveRouteAuthOptions(options.auth ?? options.manifest?.auth);
64
- const baseContext = buildRouteContextBase(target, params, {
65
- mode,
66
- signal
67
- });
68
- const finalize = (authState) => continueRoutePolicies(policies, buildRouteContext(target, params, {
69
- mode,
70
- signal,
71
- auth,
72
- session: authState.session,
73
- user: authState.user
74
- }), record, params);
75
- if (!auth?.resolve) return finalize({
76
- session: null,
77
- user: null
78
- });
79
- const authState = auth.resolve(baseContext);
80
- if (isPromiseLike(authState)) return Promise.resolve(authState).then((next) => finalize(next));
81
- return finalize(authState);
82
- }
83
- //#endregion
84
- export { computeMatchesFromRoutes, computeRouteActivityMatches, resolveRouteFromRoutes, resolveRouteRequest };
85
-
86
- //# sourceMappingURL=resolution.js.map