@askrjs/askr 0.0.50 → 0.0.52

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 (594) hide show
  1. package/dist/bench/components/benchmark-row.d.ts +2 -2
  2. package/dist/bench/components/benchmark-row.js +0 -2
  3. package/dist/bench/components/benchmark-table.js +0 -2
  4. package/dist/benchmark.d.ts +1 -2
  5. package/dist/benchmark.js +5 -6
  6. package/dist/bin/askr-ssg.d.ts +1 -2
  7. package/dist/bin/askr-ssg.js +21 -6
  8. package/dist/boot/hydration.js +10 -11
  9. package/dist/boot/index.d.ts +1 -2
  10. package/dist/boot/index.js +21 -11
  11. package/dist/boot/root-lifecycle.d.ts +6 -3
  12. package/dist/boot/root-lifecycle.js +18 -14
  13. package/dist/boot/route-startup.js +13 -4
  14. package/dist/boot/types.d.ts +1 -2
  15. package/dist/common/attr-names.js +0 -2
  16. package/dist/common/component.d.ts +1 -2
  17. package/dist/common/control.d.ts +1 -2
  18. package/dist/common/control.js +0 -2
  19. package/dist/common/dom-range.d.ts +13 -0
  20. package/dist/common/env.js +1 -7
  21. package/dist/common/error-boundary.d.ts +15 -0
  22. package/dist/common/invariant.js +15 -0
  23. package/dist/common/jsx.d.ts +1 -2
  24. package/dist/common/jsx.js +0 -2
  25. package/dist/{dev → common}/logger.js +5 -8
  26. package/dist/common/promise.js +0 -2
  27. package/dist/common/props.d.ts +1 -2
  28. package/dist/common/render-context.js +0 -2
  29. package/dist/common/route-activity.js +0 -2
  30. package/dist/common/router-internal.js +0 -2
  31. package/dist/common/router.d.ts +1 -2
  32. package/dist/common/ssr-errors.d.ts +1 -2
  33. package/dist/common/ssr-errors.js +0 -2
  34. package/dist/common/ssr.d.ts +1 -2
  35. package/dist/common/ssr.js +0 -2
  36. package/dist/common/vnode.d.ts +1 -2
  37. package/dist/common/vnode.js +0 -2
  38. package/dist/components/error-boundary.d.ts +2 -16
  39. package/dist/components/error-boundary.js +2 -76
  40. package/dist/components/index.d.ts +2 -1
  41. package/dist/components/link.d.ts +2 -2
  42. package/dist/components/link.js +2 -2
  43. package/dist/control/case.d.ts +1 -2
  44. package/dist/control/case.js +1 -2
  45. package/dist/control/for.d.ts +3 -4
  46. package/dist/control/for.js +2 -4
  47. package/dist/control/shared.d.ts +1 -2
  48. package/dist/control/shared.js +0 -2
  49. package/dist/control/show.d.ts +1 -2
  50. package/dist/control/show.js +1 -2
  51. package/dist/data/data-runtime.d.ts +1 -2
  52. package/dist/data/data-runtime.js +3 -5
  53. package/dist/data/invalidation-listeners.js +0 -2
  54. package/dist/data/invalidation.d.ts +1 -2
  55. package/dist/data/invalidation.js +2 -4
  56. package/dist/data/mutation-cell.d.ts +1 -2
  57. package/dist/data/mutation-cell.js +7 -6
  58. package/dist/data/query-cell.d.ts +3 -2
  59. package/dist/data/query-cell.js +45 -11
  60. package/dist/data/query-key.js +0 -2
  61. package/dist/data/shared.js +3 -3
  62. package/dist/data/testing.js +2 -0
  63. package/dist/data/types.d.ts +1 -2
  64. package/dist/foundations/icon/icon.d.ts +1 -2
  65. package/dist/foundations/icon/icon.js +0 -2
  66. package/dist/foundations/icon/icon.types.d.ts +1 -2
  67. package/dist/foundations/index.d.ts +1 -1
  68. package/dist/foundations/index.js +1 -1
  69. package/dist/foundations/interactions/dismissable.d.ts +1 -2
  70. package/dist/foundations/interactions/dismissable.js +0 -2
  71. package/dist/foundations/interactions/focusable.d.ts +1 -2
  72. package/dist/foundations/interactions/focusable.js +0 -2
  73. package/dist/foundations/interactions/hoverable.d.ts +1 -2
  74. package/dist/foundations/interactions/hoverable.js +0 -2
  75. package/dist/foundations/interactions/interaction-policy.d.ts +1 -2
  76. package/dist/foundations/interactions/interaction-policy.js +0 -2
  77. package/dist/foundations/interactions/pressable.d.ts +1 -2
  78. package/dist/foundations/interactions/pressable.js +0 -2
  79. package/dist/foundations/interactions/roving-focus.d.ts +1 -2
  80. package/dist/foundations/interactions/roving-focus.js +0 -2
  81. package/dist/foundations/state/controllable.d.ts +1 -3
  82. package/dist/foundations/state/controllable.js +1 -2
  83. package/dist/foundations/structures/collection.d.ts +1 -2
  84. package/dist/foundations/structures/collection.js +0 -2
  85. package/dist/foundations/structures/index.d.ts +1 -1
  86. package/dist/foundations/structures/index.js +2 -1
  87. package/dist/foundations/structures/layer.d.ts +1 -2
  88. package/dist/foundations/structures/layer.js +0 -2
  89. package/dist/foundations/structures/layout.d.ts +1 -2
  90. package/dist/foundations/structures/layout.js +0 -2
  91. package/dist/foundations/structures/portal.d.ts +2 -24
  92. package/dist/foundations/structures/portal.js +3 -187
  93. package/dist/foundations/structures/presence.d.ts +1 -2
  94. package/dist/foundations/structures/presence.js +0 -2
  95. package/dist/foundations/structures/slot.d.ts +1 -2
  96. package/dist/foundations/structures/slot.js +0 -2
  97. package/dist/foundations/utilities/aria.d.ts +1 -2
  98. package/dist/foundations/utilities/aria.js +0 -2
  99. package/dist/foundations/utilities/compose-handlers.d.ts +1 -2
  100. package/dist/foundations/utilities/compose-handlers.js +0 -2
  101. package/dist/foundations/utilities/compose-ref.d.ts +1 -2
  102. package/dist/foundations/utilities/compose-ref.js +0 -2
  103. package/dist/foundations/utilities/event-types.d.ts +1 -2
  104. package/dist/foundations/utilities/merge-props.d.ts +1 -2
  105. package/dist/foundations/utilities/merge-props.js +0 -2
  106. package/dist/foundations/utilities/use-id.d.ts +1 -2
  107. package/dist/foundations/utilities/use-id.js +0 -2
  108. package/dist/fx/fx.d.ts +1 -2
  109. package/dist/fx/fx.js +2 -4
  110. package/dist/fx/index.js +1 -0
  111. package/dist/fx/noop.js +0 -2
  112. package/dist/fx/timing.d.ts +1 -2
  113. package/dist/fx/timing.js +0 -2
  114. package/dist/index.d.ts +4 -4
  115. package/dist/index.js +4 -6
  116. package/dist/jsx/types.d.ts +1 -2
  117. package/dist/jsx/utils.d.ts +1 -2
  118. package/dist/jsx/utils.js +0 -2
  119. package/dist/jsx-dev-runtime.d.ts +16 -2
  120. package/dist/jsx-dev-runtime.js +4 -12
  121. package/dist/jsx-runtime.d.ts +16 -2
  122. package/dist/jsx-runtime.js +16 -24
  123. package/dist/jsx-runtime2.d.ts +1 -1
  124. package/dist/renderer/attributes.js +29 -6
  125. package/dist/renderer/boundaries.js +50 -174
  126. package/dist/renderer/boundary-materialization.js +72 -0
  127. package/dist/renderer/boundary-range-adoption.js +76 -0
  128. package/dist/renderer/boundary-range-sync.js +101 -0
  129. package/dist/renderer/boundary-state.js +50 -0
  130. package/dist/renderer/child-shape.js +2 -4
  131. package/dist/renderer/children-fastpath.js +149 -0
  132. package/dist/renderer/children.js +3 -140
  133. package/dist/renderer/cleanup.js +72 -15
  134. package/dist/renderer/component-host-cleanup.js +124 -49
  135. package/dist/renderer/component-host-instances.js +60 -9
  136. package/dist/renderer/component-host-replacement.js +105 -0
  137. package/dist/renderer/component-host-results.js +138 -0
  138. package/dist/renderer/component-host.js +95 -170
  139. package/dist/renderer/dom-host.js +0 -2
  140. package/dist/renderer/dom-internal.js +115 -57
  141. package/dist/renderer/dom-range.js +161 -0
  142. package/dist/renderer/dom.js +7 -5
  143. package/dist/renderer/element-children.js +112 -32
  144. package/dist/renderer/error-boundary-dom.js +70 -13
  145. package/dist/renderer/evaluate-dom-range.js +3 -4
  146. package/dist/renderer/evaluate-reconcile.js +18 -42
  147. package/dist/renderer/evaluate.js +14 -3
  148. package/dist/renderer/fastpath.js +7 -14
  149. package/dist/renderer/for-commit-dom-map.js +6 -18
  150. package/dist/renderer/for-commit-removal.js +8 -17
  151. package/dist/renderer/for-commit-reorder.js +2 -4
  152. package/dist/renderer/for-commit.js +173 -45
  153. package/dist/renderer/hydration-boundaries.js +60 -0
  154. package/dist/renderer/hydration-listener-transaction.js +49 -0
  155. package/dist/renderer/index.js +11 -8
  156. package/dist/renderer/intrinsic-blueprint-analysis.js +202 -0
  157. package/dist/renderer/intrinsic-blueprint-bindings.js +152 -0
  158. package/dist/renderer/intrinsic-blueprint-materialization.js +100 -0
  159. package/dist/renderer/intrinsic-blueprint.js +30 -0
  160. package/dist/renderer/intrinsic-hydration-adoption.js +66 -0
  161. package/dist/renderer/keyed-children.js +3 -9
  162. package/dist/renderer/keyed.js +10 -10
  163. package/dist/renderer/namespaces.js +0 -2
  164. package/dist/renderer/prop-bindings.js +59 -24
  165. package/dist/renderer/reactive-child-dom.js +10 -4
  166. package/dist/renderer/reactive-child-sources.js +0 -2
  167. package/dist/renderer/reactive-children.js +33 -24
  168. package/dist/renderer/reconcile-commit.js +0 -2
  169. package/dist/renderer/reconcile-fastpaths.js +6 -12
  170. package/dist/renderer/reconcile-resolution.js +32 -56
  171. package/dist/renderer/reconcile.js +0 -2
  172. package/dist/renderer/retained-element-rollback.js +161 -149
  173. package/dist/renderer/stable-patch.js +5 -7
  174. package/dist/renderer/static-reuse.js +0 -2
  175. package/dist/renderer/utils.js +20 -10
  176. package/dist/resources/index.js +1 -2
  177. package/dist/router/access.js +0 -2
  178. package/dist/router/activity.d.ts +1 -2
  179. package/dist/router/activity.js +20 -24
  180. package/dist/router/authoring.d.ts +1 -2
  181. package/dist/router/authoring.js +1 -3
  182. package/dist/router/index.d.ts +1 -1
  183. package/dist/router/internal-types.d.ts +1 -2
  184. package/dist/router/lazy.d.ts +1 -2
  185. package/dist/router/lazy.js +0 -2
  186. package/dist/router/manifest.d.ts +1 -2
  187. package/dist/router/manifest.js +0 -2
  188. package/dist/router/match.js +0 -2
  189. package/dist/router/navigate.d.ts +1 -2
  190. package/dist/router/navigate.js +5 -8
  191. package/dist/router/navigation-registry.d.ts +1 -2
  192. package/dist/router/navigation-registry.js +1 -3
  193. package/dist/router/navigation-scroll.d.ts +1 -2
  194. package/dist/router/navigation-scroll.js +0 -2
  195. package/dist/router/navigation-targets.d.ts +3 -4
  196. package/dist/router/navigation-targets.js +425 -44
  197. package/dist/router/policy.d.ts +1 -2
  198. package/dist/router/policy.js +0 -2
  199. package/dist/router/rendering.d.ts +1 -2
  200. package/dist/router/rendering.js +5 -3
  201. package/dist/router/resolution.d.ts +2 -16
  202. package/dist/router/resolution.js +6 -175
  203. package/dist/router/route-context.js +0 -2
  204. package/dist/router/route-matching.d.ts +19 -0
  205. package/dist/router/route-matching.js +173 -0
  206. package/dist/router/route-query.d.ts +1 -2
  207. package/dist/router/route-query.js +1 -3
  208. package/dist/router/route.js +4 -2
  209. package/dist/router/store.d.ts +1 -2
  210. package/dist/router/store.js +0 -2
  211. package/dist/router/testing.js +4 -0
  212. package/dist/runtime/access.d.ts +19 -0
  213. package/dist/runtime/access.js +0 -2
  214. package/dist/runtime/child-scope.d.ts +21 -2
  215. package/dist/runtime/child-scope.js +101 -54
  216. package/dist/runtime/component-cleanup.d.ts +1 -2
  217. package/dist/runtime/component-cleanup.js +3 -5
  218. package/dist/runtime/component-commit.js +26 -24
  219. package/dist/runtime/component-facade.js +5 -3
  220. package/dist/runtime/component-internal.d.ts +12 -7
  221. package/dist/runtime/component-internal.js +64 -46
  222. package/dist/runtime/component-lifecycle.d.ts +2 -41
  223. package/dist/runtime/component-lifecycle.js +6 -149
  224. package/dist/runtime/component-scope.d.ts +4 -5
  225. package/dist/runtime/component-scope.js +27 -8
  226. package/dist/runtime/component.js +4 -3
  227. package/dist/runtime/context.d.ts +5 -2
  228. package/dist/runtime/context.js +29 -3
  229. package/dist/runtime/control.d.ts +22 -3
  230. package/dist/runtime/control.js +168 -55
  231. package/dist/runtime/derive.d.ts +1 -2
  232. package/dist/runtime/derive.js +0 -2
  233. package/dist/runtime/dev-namespace.d.ts +30 -0
  234. package/dist/runtime/dev-namespace.js +32 -25
  235. package/dist/runtime/effect.d.ts +8 -5
  236. package/dist/runtime/effect.js +158 -75
  237. package/dist/runtime/error-boundary.d.ts +4 -0
  238. package/dist/runtime/error-boundary.js +29 -0
  239. package/dist/runtime/events.d.ts +58 -0
  240. package/dist/runtime/events.js +67 -70
  241. package/dist/runtime/execution-model.d.ts +6 -0
  242. package/dist/runtime/execution-model.js +0 -2
  243. package/dist/runtime/fastlane.d.ts +33 -0
  244. package/dist/runtime/fastlane.js +0 -2
  245. package/dist/runtime/for-bench.d.ts +1 -2
  246. package/dist/runtime/for-bench.js +9 -167
  247. package/dist/runtime/for-internal.d.ts +73 -10
  248. package/dist/runtime/for-internal.js +201 -14
  249. package/dist/runtime/for-reconcile.d.ts +1 -2
  250. package/dist/runtime/for-reconcile.js +76 -23
  251. package/dist/runtime/for-scopes.d.ts +5 -5
  252. package/dist/runtime/for-scopes.js +168 -48
  253. package/dist/runtime/for-signals.d.ts +14 -5
  254. package/dist/runtime/for-signals.js +157 -83
  255. package/dist/runtime/for-types.d.ts +8 -0
  256. package/dist/runtime/for.d.ts +2 -2
  257. package/dist/runtime/for.js +3 -3
  258. package/dist/runtime/index.d.ts +24 -0
  259. package/dist/runtime/index.js +33 -0
  260. package/dist/runtime/lifecycle-batch.d.ts +59 -0
  261. package/dist/runtime/lifecycle-batch.js +178 -0
  262. package/dist/runtime/lifecycle-operation-settlement.d.ts +5 -0
  263. package/dist/runtime/lifecycle-operation-settlement.js +51 -0
  264. package/dist/runtime/lifecycle-operations.d.ts +1 -2
  265. package/dist/runtime/lifecycle-operations.js +5 -6
  266. package/dist/runtime/perf-metrics.d.ts +27 -0
  267. package/dist/runtime/perf-metrics.js +4 -68
  268. package/dist/runtime/portal.d.ts +21 -0
  269. package/dist/runtime/portal.js +305 -0
  270. package/dist/runtime/readable.d.ts +9 -4
  271. package/dist/runtime/readable.js +41 -17
  272. package/dist/runtime/resource-cell.js +3 -5
  273. package/dist/runtime/resource-operation.d.ts +1 -2
  274. package/dist/runtime/resource-operation.js +38 -35
  275. package/dist/runtime/runtime.d.ts +2 -3
  276. package/dist/runtime/runtime.js +0 -2
  277. package/dist/runtime/scheduler.d.ts +1 -2
  278. package/dist/runtime/scheduler.js +10 -13
  279. package/dist/runtime/selector-store.js +22 -0
  280. package/dist/runtime/selector.d.ts +1 -2
  281. package/dist/runtime/selector.js +6 -29
  282. package/dist/runtime/snapshot-source.d.ts +1 -2
  283. package/dist/runtime/snapshot-source.js +0 -2
  284. package/dist/runtime/state.d.ts +1 -2
  285. package/dist/runtime/state.js +1 -3
  286. package/dist/ssg/batch-render.js +0 -2
  287. package/dist/ssg/create-static-gen.d.ts +4 -2
  288. package/dist/ssg/create-static-gen.js +66 -14
  289. package/dist/ssg/generate-metadata.js +0 -2
  290. package/dist/ssg/generation-plan.js +0 -2
  291. package/dist/ssg/incremental-manifest.js +1 -3
  292. package/dist/ssg/resolve-ssg-data.js +0 -2
  293. package/dist/ssg/route-utils.js +0 -2
  294. package/dist/ssg/static-routes.js +1 -2
  295. package/dist/ssg/types.d.ts +2 -3
  296. package/dist/ssg/write-static-files.js +16 -12
  297. package/dist/ssr/attrs.js +0 -2
  298. package/dist/ssr/boundaries.js +17 -6
  299. package/dist/ssr/component-runtime.js +4 -30
  300. package/dist/ssr/context.d.ts +1 -2
  301. package/dist/ssr/context.js +0 -2
  302. package/dist/ssr/errors.d.ts +1 -2
  303. package/dist/ssr/errors.js +0 -2
  304. package/dist/ssr/escape.js +0 -2
  305. package/dist/ssr/hydration-data.js +0 -2
  306. package/dist/ssr/hydration-verify.d.ts +1 -2
  307. package/dist/ssr/hydration-verify.js +34 -7
  308. package/dist/ssr/index-internal.d.ts +1 -2
  309. package/dist/ssr/index-internal.js +0 -2
  310. package/dist/ssr/render-keys.js +0 -2
  311. package/dist/ssr/render-resolved.d.ts +1 -2
  312. package/dist/ssr/render-resolved.js +1 -3
  313. package/dist/ssr/render-sync.d.ts +1 -2
  314. package/dist/ssr/render-sync.js +28 -20
  315. package/dist/ssr/route-policy-resolution.js +2 -3
  316. package/dist/ssr/route-render.d.ts +1 -2
  317. package/dist/ssr/route-render.js +2 -3
  318. package/dist/ssr/sink.d.ts +1 -2
  319. package/dist/ssr/sink.js +0 -2
  320. package/dist/ssr/types.d.ts +1 -2
  321. package/dist/ssr/verify-hydration.js +0 -2
  322. package/dist/testing/index.d.ts +1 -2
  323. package/dist/testing/index.js +3 -4
  324. package/package.json +60 -47
  325. package/dist/bench/components/benchmark-row.d.ts.map +0 -1
  326. package/dist/bench/components/benchmark-row.js.map +0 -1
  327. package/dist/bench/components/benchmark-table.js.map +0 -1
  328. package/dist/benchmark.d.ts.map +0 -1
  329. package/dist/benchmark.js.map +0 -1
  330. package/dist/bin/askr-ssg.d.ts.map +0 -1
  331. package/dist/bin/askr-ssg.js.map +0 -1
  332. package/dist/boot/hydration.js.map +0 -1
  333. package/dist/boot/index.d.ts.map +0 -1
  334. package/dist/boot/index.js.map +0 -1
  335. package/dist/boot/root-lifecycle.d.ts.map +0 -1
  336. package/dist/boot/root-lifecycle.js.map +0 -1
  337. package/dist/boot/route-startup.js.map +0 -1
  338. package/dist/boot/types.d.ts.map +0 -1
  339. package/dist/common/attr-names.js.map +0 -1
  340. package/dist/common/component.d.ts.map +0 -1
  341. package/dist/common/control.d.ts.map +0 -1
  342. package/dist/common/control.js.map +0 -1
  343. package/dist/common/env.js.map +0 -1
  344. package/dist/common/jsx.d.ts.map +0 -1
  345. package/dist/common/jsx.js.map +0 -1
  346. package/dist/common/promise.js.map +0 -1
  347. package/dist/common/props.d.ts.map +0 -1
  348. package/dist/common/render-context.js.map +0 -1
  349. package/dist/common/route-activity.js.map +0 -1
  350. package/dist/common/router-internal.js.map +0 -1
  351. package/dist/common/router.d.ts.map +0 -1
  352. package/dist/common/ssr-errors.d.ts.map +0 -1
  353. package/dist/common/ssr-errors.js.map +0 -1
  354. package/dist/common/ssr.d.ts.map +0 -1
  355. package/dist/common/ssr.js.map +0 -1
  356. package/dist/common/vnode.d.ts.map +0 -1
  357. package/dist/common/vnode.js.map +0 -1
  358. package/dist/components/error-boundary.d.ts.map +0 -1
  359. package/dist/components/error-boundary.js.map +0 -1
  360. package/dist/components/link.d.ts.map +0 -1
  361. package/dist/components/link.js.map +0 -1
  362. package/dist/control/case.d.ts.map +0 -1
  363. package/dist/control/case.js.map +0 -1
  364. package/dist/control/for.d.ts.map +0 -1
  365. package/dist/control/for.js.map +0 -1
  366. package/dist/control/shared.d.ts.map +0 -1
  367. package/dist/control/shared.js.map +0 -1
  368. package/dist/control/show.d.ts.map +0 -1
  369. package/dist/control/show.js.map +0 -1
  370. package/dist/data/data-runtime.d.ts.map +0 -1
  371. package/dist/data/data-runtime.js.map +0 -1
  372. package/dist/data/invalidation-listeners.js.map +0 -1
  373. package/dist/data/invalidation.d.ts.map +0 -1
  374. package/dist/data/invalidation.js.map +0 -1
  375. package/dist/data/mutation-cell.d.ts.map +0 -1
  376. package/dist/data/mutation-cell.js.map +0 -1
  377. package/dist/data/query-cell.d.ts.map +0 -1
  378. package/dist/data/query-cell.js.map +0 -1
  379. package/dist/data/query-key.js.map +0 -1
  380. package/dist/data/shared.js.map +0 -1
  381. package/dist/data/types.d.ts.map +0 -1
  382. package/dist/dev/invariant.js +0 -29
  383. package/dist/dev/invariant.js.map +0 -1
  384. package/dist/dev/logger.js.map +0 -1
  385. package/dist/foundations/icon/icon.d.ts.map +0 -1
  386. package/dist/foundations/icon/icon.js.map +0 -1
  387. package/dist/foundations/icon/icon.types.d.ts.map +0 -1
  388. package/dist/foundations/interactions/dismissable.d.ts.map +0 -1
  389. package/dist/foundations/interactions/dismissable.js.map +0 -1
  390. package/dist/foundations/interactions/focusable.d.ts.map +0 -1
  391. package/dist/foundations/interactions/focusable.js.map +0 -1
  392. package/dist/foundations/interactions/hoverable.d.ts.map +0 -1
  393. package/dist/foundations/interactions/hoverable.js.map +0 -1
  394. package/dist/foundations/interactions/interaction-policy.d.ts.map +0 -1
  395. package/dist/foundations/interactions/interaction-policy.js.map +0 -1
  396. package/dist/foundations/interactions/pressable.d.ts.map +0 -1
  397. package/dist/foundations/interactions/pressable.js.map +0 -1
  398. package/dist/foundations/interactions/roving-focus.d.ts.map +0 -1
  399. package/dist/foundations/interactions/roving-focus.js.map +0 -1
  400. package/dist/foundations/state/controllable.d.ts.map +0 -1
  401. package/dist/foundations/state/controllable.js.map +0 -1
  402. package/dist/foundations/structures/collection.d.ts.map +0 -1
  403. package/dist/foundations/structures/collection.js.map +0 -1
  404. package/dist/foundations/structures/layer.d.ts.map +0 -1
  405. package/dist/foundations/structures/layer.js.map +0 -1
  406. package/dist/foundations/structures/layout.d.ts.map +0 -1
  407. package/dist/foundations/structures/layout.js.map +0 -1
  408. package/dist/foundations/structures/portal.d.ts.map +0 -1
  409. package/dist/foundations/structures/portal.js.map +0 -1
  410. package/dist/foundations/structures/presence.d.ts.map +0 -1
  411. package/dist/foundations/structures/presence.js.map +0 -1
  412. package/dist/foundations/structures/slot.d.ts.map +0 -1
  413. package/dist/foundations/structures/slot.js.map +0 -1
  414. package/dist/foundations/utilities/aria.d.ts.map +0 -1
  415. package/dist/foundations/utilities/aria.js.map +0 -1
  416. package/dist/foundations/utilities/compose-handlers.d.ts.map +0 -1
  417. package/dist/foundations/utilities/compose-handlers.js.map +0 -1
  418. package/dist/foundations/utilities/compose-ref.d.ts.map +0 -1
  419. package/dist/foundations/utilities/compose-ref.js.map +0 -1
  420. package/dist/foundations/utilities/event-types.d.ts.map +0 -1
  421. package/dist/foundations/utilities/merge-props.d.ts.map +0 -1
  422. package/dist/foundations/utilities/merge-props.js.map +0 -1
  423. package/dist/foundations/utilities/use-id.d.ts.map +0 -1
  424. package/dist/foundations/utilities/use-id.js.map +0 -1
  425. package/dist/fx/fx.d.ts.map +0 -1
  426. package/dist/fx/fx.js.map +0 -1
  427. package/dist/fx/noop.js.map +0 -1
  428. package/dist/fx/timing.d.ts.map +0 -1
  429. package/dist/fx/timing.js.map +0 -1
  430. package/dist/index.js.map +0 -1
  431. package/dist/jsx/types.d.ts.map +0 -1
  432. package/dist/jsx/utils.d.ts.map +0 -1
  433. package/dist/jsx/utils.js.map +0 -1
  434. package/dist/jsx-dev-runtime.d.ts.map +0 -1
  435. package/dist/jsx-dev-runtime.js.map +0 -1
  436. package/dist/jsx-runtime.d.ts.map +0 -1
  437. package/dist/jsx-runtime.js.map +0 -1
  438. package/dist/renderer/attributes.js.map +0 -1
  439. package/dist/renderer/boundaries.js.map +0 -1
  440. package/dist/renderer/child-shape.js.map +0 -1
  441. package/dist/renderer/children.js.map +0 -1
  442. package/dist/renderer/cleanup.js.map +0 -1
  443. package/dist/renderer/component-host-cleanup.js.map +0 -1
  444. package/dist/renderer/component-host-instances.js.map +0 -1
  445. package/dist/renderer/component-host.js.map +0 -1
  446. package/dist/renderer/dom-host.js.map +0 -1
  447. package/dist/renderer/dom-internal.js.map +0 -1
  448. package/dist/renderer/element-children.js.map +0 -1
  449. package/dist/renderer/error-boundary-dom.js.map +0 -1
  450. package/dist/renderer/evaluate-dom-range.js.map +0 -1
  451. package/dist/renderer/evaluate-reconcile.js.map +0 -1
  452. package/dist/renderer/evaluate.js.map +0 -1
  453. package/dist/renderer/fastpath.js.map +0 -1
  454. package/dist/renderer/for-commit-dom-map.js.map +0 -1
  455. package/dist/renderer/for-commit-removal.js.map +0 -1
  456. package/dist/renderer/for-commit-reorder.js.map +0 -1
  457. package/dist/renderer/for-commit.js.map +0 -1
  458. package/dist/renderer/index.js.map +0 -1
  459. package/dist/renderer/keyed-children.js.map +0 -1
  460. package/dist/renderer/keyed.js.map +0 -1
  461. package/dist/renderer/namespaces.js.map +0 -1
  462. package/dist/renderer/prop-bindings.js.map +0 -1
  463. package/dist/renderer/reactive-child-dom.js.map +0 -1
  464. package/dist/renderer/reactive-child-sources.js.map +0 -1
  465. package/dist/renderer/reactive-children.js.map +0 -1
  466. package/dist/renderer/reconcile-commit.js.map +0 -1
  467. package/dist/renderer/reconcile-fastpaths.js.map +0 -1
  468. package/dist/renderer/reconcile-resolution.js.map +0 -1
  469. package/dist/renderer/reconcile.js.map +0 -1
  470. package/dist/renderer/retained-element-rollback.js.map +0 -1
  471. package/dist/renderer/stable-patch.js.map +0 -1
  472. package/dist/renderer/static-reuse.js.map +0 -1
  473. package/dist/renderer/utils.js.map +0 -1
  474. package/dist/router/access.js.map +0 -1
  475. package/dist/router/activity.d.ts.map +0 -1
  476. package/dist/router/activity.js.map +0 -1
  477. package/dist/router/authoring.d.ts.map +0 -1
  478. package/dist/router/authoring.js.map +0 -1
  479. package/dist/router/internal-types.d.ts.map +0 -1
  480. package/dist/router/lazy.d.ts.map +0 -1
  481. package/dist/router/lazy.js.map +0 -1
  482. package/dist/router/manifest.d.ts.map +0 -1
  483. package/dist/router/manifest.js.map +0 -1
  484. package/dist/router/match.js.map +0 -1
  485. package/dist/router/navigate.d.ts.map +0 -1
  486. package/dist/router/navigate.js.map +0 -1
  487. package/dist/router/navigation-registry.d.ts.map +0 -1
  488. package/dist/router/navigation-registry.js.map +0 -1
  489. package/dist/router/navigation-scroll.d.ts.map +0 -1
  490. package/dist/router/navigation-scroll.js.map +0 -1
  491. package/dist/router/navigation-targets.d.ts.map +0 -1
  492. package/dist/router/navigation-targets.js.map +0 -1
  493. package/dist/router/policy.d.ts.map +0 -1
  494. package/dist/router/policy.js.map +0 -1
  495. package/dist/router/rendering.d.ts.map +0 -1
  496. package/dist/router/rendering.js.map +0 -1
  497. package/dist/router/resolution.d.ts.map +0 -1
  498. package/dist/router/resolution.js.map +0 -1
  499. package/dist/router/route-context.js.map +0 -1
  500. package/dist/router/route-query.d.ts.map +0 -1
  501. package/dist/router/route-query.js.map +0 -1
  502. package/dist/router/store.d.ts.map +0 -1
  503. package/dist/router/store.js.map +0 -1
  504. package/dist/runtime/access.js.map +0 -1
  505. package/dist/runtime/child-scope.d.ts.map +0 -1
  506. package/dist/runtime/child-scope.js.map +0 -1
  507. package/dist/runtime/component-cleanup.d.ts.map +0 -1
  508. package/dist/runtime/component-cleanup.js.map +0 -1
  509. package/dist/runtime/component-commit.js.map +0 -1
  510. package/dist/runtime/component-contracts.js +0 -5
  511. package/dist/runtime/component-internal.d.ts.map +0 -1
  512. package/dist/runtime/component-internal.js.map +0 -1
  513. package/dist/runtime/component-lifecycle.d.ts.map +0 -1
  514. package/dist/runtime/component-lifecycle.js.map +0 -1
  515. package/dist/runtime/component-scope.d.ts.map +0 -1
  516. package/dist/runtime/component-scope.js.map +0 -1
  517. package/dist/runtime/context.d.ts.map +0 -1
  518. package/dist/runtime/context.js.map +0 -1
  519. package/dist/runtime/control.d.ts.map +0 -1
  520. package/dist/runtime/control.js.map +0 -1
  521. package/dist/runtime/derive.d.ts.map +0 -1
  522. package/dist/runtime/derive.js.map +0 -1
  523. package/dist/runtime/dev-namespace.js.map +0 -1
  524. package/dist/runtime/effect.d.ts.map +0 -1
  525. package/dist/runtime/effect.js.map +0 -1
  526. package/dist/runtime/events.js.map +0 -1
  527. package/dist/runtime/execution-model.js.map +0 -1
  528. package/dist/runtime/fastlane.js.map +0 -1
  529. package/dist/runtime/for-bench.d.ts.map +0 -1
  530. package/dist/runtime/for-bench.js.map +0 -1
  531. package/dist/runtime/for-internal.d.ts.map +0 -1
  532. package/dist/runtime/for-internal.js.map +0 -1
  533. package/dist/runtime/for-reconcile.d.ts.map +0 -1
  534. package/dist/runtime/for-reconcile.js.map +0 -1
  535. package/dist/runtime/for-scopes.d.ts.map +0 -1
  536. package/dist/runtime/for-scopes.js.map +0 -1
  537. package/dist/runtime/for-signals.d.ts.map +0 -1
  538. package/dist/runtime/for-signals.js.map +0 -1
  539. package/dist/runtime/lifecycle-operations.d.ts.map +0 -1
  540. package/dist/runtime/lifecycle-operations.js.map +0 -1
  541. package/dist/runtime/perf-metrics.js.map +0 -1
  542. package/dist/runtime/readable.d.ts.map +0 -1
  543. package/dist/runtime/readable.js.map +0 -1
  544. package/dist/runtime/resource-cell.js.map +0 -1
  545. package/dist/runtime/resource-operation.d.ts.map +0 -1
  546. package/dist/runtime/resource-operation.js.map +0 -1
  547. package/dist/runtime/runtime.d.ts.map +0 -1
  548. package/dist/runtime/runtime.js.map +0 -1
  549. package/dist/runtime/scheduler.d.ts.map +0 -1
  550. package/dist/runtime/scheduler.js.map +0 -1
  551. package/dist/runtime/selector.d.ts.map +0 -1
  552. package/dist/runtime/selector.js.map +0 -1
  553. package/dist/runtime/snapshot-source.d.ts.map +0 -1
  554. package/dist/runtime/snapshot-source.js.map +0 -1
  555. package/dist/runtime/state.d.ts.map +0 -1
  556. package/dist/runtime/state.js.map +0 -1
  557. package/dist/ssg/batch-render.js.map +0 -1
  558. package/dist/ssg/create-static-gen.d.ts.map +0 -1
  559. package/dist/ssg/create-static-gen.js.map +0 -1
  560. package/dist/ssg/generate-metadata.js.map +0 -1
  561. package/dist/ssg/generation-plan.js.map +0 -1
  562. package/dist/ssg/incremental-manifest.js.map +0 -1
  563. package/dist/ssg/resolve-ssg-data.js.map +0 -1
  564. package/dist/ssg/route-utils.js.map +0 -1
  565. package/dist/ssg/static-routes.js.map +0 -1
  566. package/dist/ssg/types.d.ts.map +0 -1
  567. package/dist/ssg/write-static-files.js.map +0 -1
  568. package/dist/ssr/attrs.js.map +0 -1
  569. package/dist/ssr/boundaries.js.map +0 -1
  570. package/dist/ssr/component-runtime.js.map +0 -1
  571. package/dist/ssr/context.d.ts.map +0 -1
  572. package/dist/ssr/context.js.map +0 -1
  573. package/dist/ssr/errors.d.ts.map +0 -1
  574. package/dist/ssr/errors.js.map +0 -1
  575. package/dist/ssr/escape.js.map +0 -1
  576. package/dist/ssr/hydration-data.js.map +0 -1
  577. package/dist/ssr/hydration-verify.d.ts.map +0 -1
  578. package/dist/ssr/hydration-verify.js.map +0 -1
  579. package/dist/ssr/index-internal.d.ts.map +0 -1
  580. package/dist/ssr/index-internal.js.map +0 -1
  581. package/dist/ssr/render-keys.js.map +0 -1
  582. package/dist/ssr/render-resolved.d.ts.map +0 -1
  583. package/dist/ssr/render-resolved.js.map +0 -1
  584. package/dist/ssr/render-sync.d.ts.map +0 -1
  585. package/dist/ssr/render-sync.js.map +0 -1
  586. package/dist/ssr/route-policy-resolution.js.map +0 -1
  587. package/dist/ssr/route-render.d.ts.map +0 -1
  588. package/dist/ssr/route-render.js.map +0 -1
  589. package/dist/ssr/sink.d.ts.map +0 -1
  590. package/dist/ssr/sink.js.map +0 -1
  591. package/dist/ssr/types.d.ts.map +0 -1
  592. package/dist/ssr/verify-hydration.js.map +0 -1
  593. package/dist/testing/index.d.ts.map +0 -1
  594. package/dist/testing/index.js.map +0 -1
@@ -1,17 +1,20 @@
1
1
  import { isDevelopmentEnvironment } from "../common/env.js";
2
- import { logger } from "../dev/logger.js";
2
+ import { logger } from "../common/logger.js";
3
+ import { flushRuntimeScheduler } from "../runtime/access.js";
3
4
  import { ELEMENT_TYPE, Fragment } from "../common/jsx.js";
4
5
  import { cleanupComponent } from "../runtime/component-cleanup.js";
5
6
  import { isPromiseLike } from "../common/promise.js";
7
+ import { beginLifecycleCommitBatch, discardLifecycleCommitBatch, drainLifecycleCommitErrors, flushLifecycleCommitBatch } from "../runtime/lifecycle-batch.js";
6
8
  import { mountComponent } from "../runtime/component-internal.js";
7
- import "../runtime/component.js";
8
- import { cleanupInstancesUnder } from "../renderer/cleanup.js";
9
- import { applyHistoryScroll, applyNavigationScroll, saveScrollPosition } from "./navigation-scroll.js";
10
- import { resolveRouteFromRoutes, resolveRouteRequest } from "./resolution.js";
9
+ import { DefaultPortal, clearDefaultPortalForInstance } from "../runtime/portal.js";
10
+ import "../runtime/index.js";
11
+ import { teardownNodeSubtree } from "../renderer/cleanup.js";
12
+ import "../jsx/index.js";
13
+ import { resolveRouteFromRoutes } from "./route-matching.js";
14
+ import { resolveRouteRequest } from "./resolution.js";
11
15
  import "./route.js";
12
16
  import { getCurrentHref, getCurrentPathname, getRegisteredAppsSnapshot, parseTargetUrl, setCurrentRouteLocation, syncAppRegistrationLocation, syncRegisteredRouteSnapshot } from "./navigation-registry.js";
13
- import { DefaultPortal, clearDefaultPortalForInstance } from "../foundations/structures/portal.js";
14
- import "../jsx/index.js";
17
+ import { applyHistoryScroll, applyNavigationScroll, saveScrollPosition } from "./navigation-scroll.js";
15
18
  //#region src/router/navigation-targets.ts
16
19
  const MAX_NAVIGATION_REDIRECTS = 20;
17
20
  let activeRouteRequestId = 0;
@@ -63,7 +66,7 @@ function wrapRootRouteHandler(componentFn) {
63
66
  const portalVNode = {
64
67
  $$typeof: ELEMENT_TYPE,
65
68
  type: DefaultPortal,
66
- props: {},
69
+ props: { __askrAutoDefaultPortal: true },
67
70
  key: "__default_portal"
68
71
  };
69
72
  return {
@@ -75,24 +78,249 @@ function wrapRootRouteHandler(componentFn) {
75
78
  Object.defineProperty(wrappedFn, "name", { value: componentFn.name || "Component" });
76
79
  return wrappedFn;
77
80
  }
78
- function cleanupRouteOwnership(instance) {
79
- const cleanupErrors = [];
80
- const children = instance.target ? Array.from(instance.target.childNodes) : [];
81
- for (const child of children) try {
82
- cleanupInstancesUnder(child, { strict: instance.cleanupStrict });
81
+ function flattenLifecycleErrors(error, result) {
82
+ if (error instanceof AggregateError) {
83
+ for (const nested of error.errors) flattenLifecycleErrors(nested, result);
84
+ return;
85
+ }
86
+ result.push(error);
87
+ }
88
+ function reportRouteCleanupErrors(errors) {
89
+ for (const error of errors) {
90
+ const flattened = [];
91
+ flattenLifecycleErrors(error, flattened);
92
+ for (const cleanupError of flattened.length > 0 ? flattened : [error]) logger.error("[Askr] route cleanup failed:", cleanupError);
93
+ }
94
+ }
95
+ function captureRouteDom(root) {
96
+ if (!root) return null;
97
+ const nodes = [];
98
+ const visit = (node) => {
99
+ nodes.push({
100
+ node,
101
+ children: Array.from(node.childNodes),
102
+ attributes: node instanceof Element ? Array.from(node.attributes).map((attribute) => [attribute.name, attribute.value]) : null,
103
+ nodeValue: node.nodeValue
104
+ });
105
+ for (const child of Array.from(node.childNodes)) visit(child);
106
+ };
107
+ visit(root);
108
+ return {
109
+ root,
110
+ nodes
111
+ };
112
+ }
113
+ function collectProvisionalRouteNodes(snapshot) {
114
+ const originalNodes = new Set(snapshot.nodes.map((entry) => entry.node));
115
+ const provisional = [];
116
+ const visit = (node) => {
117
+ if (!originalNodes.has(node)) {
118
+ provisional.push(node);
119
+ return;
120
+ }
121
+ for (const child of Array.from(node.childNodes)) visit(child);
122
+ };
123
+ for (const child of Array.from(snapshot.root.childNodes)) visit(child);
124
+ return provisional;
125
+ }
126
+ function restoreRouteDom(snapshot) {
127
+ if (!snapshot) return [];
128
+ const errors = [];
129
+ for (const node of collectProvisionalRouteNodes(snapshot)) try {
130
+ teardownNodeSubtree(node, { strict: true });
83
131
  } catch (error) {
84
- cleanupErrors.push(error);
132
+ errors.push(error);
133
+ }
134
+ for (const entry of snapshot.nodes) {
135
+ const { node, attributes } = entry;
136
+ try {
137
+ if (attributes && node instanceof Element) {
138
+ const expected = new Map(attributes);
139
+ for (const attribute of Array.from(node.attributes)) if (!expected.has(attribute.name)) node.removeAttribute(attribute.name);
140
+ for (const [name, value] of attributes) if (node.getAttribute(name) !== value) node.setAttribute(name, value);
141
+ } else if (!(node instanceof Element)) node.nodeValue = entry.nodeValue;
142
+ if (node instanceof Element || node instanceof DocumentFragment) node.replaceChildren(...entry.children);
143
+ } catch (error) {
144
+ errors.push(error);
145
+ }
85
146
  }
147
+ return errors;
148
+ }
149
+ function collectHostInstances(root) {
150
+ const instances = [];
151
+ const seen = /* @__PURE__ */ new Set();
152
+ const pending = [root];
153
+ while (pending.length > 0) {
154
+ const node = pending.pop();
155
+ if (node instanceof Element) {
156
+ const host = node;
157
+ for (const instance of host.__ASKR_INSTANCES ?? []) if (!seen.has(instance)) {
158
+ seen.add(instance);
159
+ instances.push(instance);
160
+ }
161
+ if (host.__ASKR_INSTANCE && !seen.has(host.__ASKR_INSTANCE)) {
162
+ seen.add(host.__ASKR_INSTANCE);
163
+ instances.push(host.__ASKR_INSTANCE);
164
+ }
165
+ } else {
166
+ const instance = node.__ASKR_INSTANCE;
167
+ if (instance && !seen.has(instance)) {
168
+ seen.add(instance);
169
+ instances.push(instance);
170
+ }
171
+ }
172
+ for (let child = node.lastChild; child; child = child.previousSibling) pending.push(child);
173
+ }
174
+ return instances;
175
+ }
176
+ function captureDeferredRouteCleanup(instance) {
177
+ return {
178
+ instance,
179
+ previousFn: instance.fn,
180
+ previousProps: instance.props,
181
+ previousExpectedStateIndices: instance.expectedStateIndices,
182
+ previousFirstRenderComplete: instance.firstRenderComplete,
183
+ previousStateIndexCheck: instance.stateIndexCheck,
184
+ previousErrorBoundaryState: instance.errorBoundaryState,
185
+ previousTarget: instance.target,
186
+ previousDom: captureRouteDom(instance.target),
187
+ previousStateValues: instance.stateValues,
188
+ previousCleanupFns: instance.cleanupFns,
189
+ previousOwnedChildScopes: instance._ownedChildScopes,
190
+ previousAbortController: instance.abortController,
191
+ previousMountOperations: instance.mountOperations,
192
+ previousCommitOperations: instance.commitOperations,
193
+ previousLifecycleSlots: instance.lifecycleSlots,
194
+ previousLifecycleGeneration: instance.lifecycleGeneration,
195
+ previousEvaluationGeneration: instance.evaluationGeneration,
196
+ previousHasPendingUpdate: instance.hasPendingUpdate,
197
+ previousNotifyUpdate: instance.notifyUpdate,
198
+ previousPlaceholder: instance._placeholder,
199
+ previousMounted: instance.mounted,
200
+ previousCurrentRenderToken: instance._currentRenderToken,
201
+ previousLastRenderToken: instance.lastRenderToken,
202
+ previousPendingReadSources: instance._pendingReadSources,
203
+ previousPendingReadSourceVersions: instance._pendingReadSourceVersions,
204
+ previousLastReadSources: instance._lastReadSources,
205
+ previousInstances: instance.target ? collectHostInstances(instance.target) : []
206
+ };
207
+ }
208
+ function restoreDeferredRouteInstance(deferred) {
209
+ const instance = deferred.instance;
210
+ const errors = restoreRouteDom(deferred.previousDom);
211
+ instance.fn = deferred.previousFn;
212
+ instance.props = deferred.previousProps;
213
+ instance.expectedStateIndices = deferred.previousExpectedStateIndices;
214
+ instance.firstRenderComplete = deferred.previousFirstRenderComplete;
215
+ instance.stateIndexCheck = deferred.previousStateIndexCheck;
216
+ instance.errorBoundaryState = deferred.previousErrorBoundaryState;
217
+ instance.target = deferred.previousTarget;
218
+ instance.stateValues = deferred.previousStateValues;
219
+ instance.cleanupFns = deferred.previousCleanupFns;
220
+ instance._ownedChildScopes = deferred.previousOwnedChildScopes;
221
+ instance.abortController = deferred.previousAbortController;
222
+ instance.mountOperations = deferred.previousMountOperations;
223
+ instance.commitOperations = deferred.previousCommitOperations;
224
+ instance.lifecycleSlots = deferred.previousLifecycleSlots;
225
+ instance.lifecycleGeneration = deferred.previousLifecycleGeneration;
226
+ instance.evaluationGeneration = deferred.previousEvaluationGeneration;
227
+ instance.hasPendingUpdate = deferred.previousHasPendingUpdate;
228
+ instance.notifyUpdate = deferred.previousNotifyUpdate;
229
+ instance._placeholder = deferred.previousPlaceholder;
230
+ instance.mounted = deferred.previousMounted;
231
+ instance._currentRenderToken = deferred.previousCurrentRenderToken;
232
+ instance.lastRenderToken = deferred.previousLastRenderToken;
233
+ instance._pendingReadSources = deferred.previousPendingReadSources;
234
+ instance._pendingReadSourceVersions = deferred.previousPendingReadSourceVersions;
235
+ instance._lastReadSources = deferred.previousLastReadSources;
236
+ return errors;
237
+ }
238
+ function restoreDeferredRouteInstances(deferredCleanups) {
239
+ const errors = [];
240
+ for (let index = deferredCleanups.length - 1; index >= 0; index -= 1) errors.push(...restoreDeferredRouteInstance(deferredCleanups[index]));
241
+ if (errors.length > 0) reportRouteCleanupErrors(errors);
242
+ }
243
+ function cleanupDeferredRouteInstance(deferred) {
244
+ const errors = [];
245
+ const instance = deferred.instance;
246
+ const current = {
247
+ stateValues: instance.stateValues,
248
+ cleanupFns: instance.cleanupFns,
249
+ ownedChildScopes: instance._ownedChildScopes,
250
+ abortController: instance.abortController,
251
+ mountOperations: instance.mountOperations,
252
+ commitOperations: instance.commitOperations,
253
+ lifecycleSlots: instance.lifecycleSlots,
254
+ lifecycleGeneration: instance.lifecycleGeneration,
255
+ evaluationGeneration: instance.evaluationGeneration,
256
+ hasPendingUpdate: instance.hasPendingUpdate,
257
+ notifyUpdate: instance.notifyUpdate,
258
+ placeholder: instance._placeholder,
259
+ mounted: instance.mounted,
260
+ currentRenderToken: instance._currentRenderToken,
261
+ lastRenderToken: instance.lastRenderToken,
262
+ pendingReadSources: instance._pendingReadSources,
263
+ pendingReadSourceVersions: instance._pendingReadSourceVersions,
264
+ lastReadSources: instance._lastReadSources
265
+ };
266
+ instance.stateValues = deferred.previousStateValues;
267
+ instance.cleanupFns = deferred.previousCleanupFns;
268
+ instance._ownedChildScopes = deferred.previousOwnedChildScopes;
269
+ instance.abortController = deferred.previousAbortController;
270
+ instance.mountOperations = deferred.previousMountOperations;
271
+ instance.commitOperations = deferred.previousCommitOperations;
272
+ instance.lifecycleSlots = deferred.previousLifecycleSlots;
273
+ instance.lifecycleGeneration = deferred.previousLifecycleGeneration;
274
+ instance.evaluationGeneration = deferred.previousEvaluationGeneration;
275
+ instance.hasPendingUpdate = deferred.previousHasPendingUpdate;
276
+ instance.notifyUpdate = deferred.previousNotifyUpdate;
277
+ instance._placeholder = deferred.previousPlaceholder;
278
+ instance.mounted = deferred.previousMounted;
279
+ instance._currentRenderToken = deferred.previousCurrentRenderToken;
280
+ instance.lastRenderToken = deferred.previousLastRenderToken;
281
+ instance._pendingReadSources = deferred.previousPendingReadSources;
282
+ instance._pendingReadSourceVersions = deferred.previousPendingReadSourceVersions;
283
+ instance._lastReadSources = deferred.previousLastReadSources;
86
284
  try {
87
285
  cleanupComponent(instance);
88
286
  } catch (error) {
89
- cleanupErrors.push(error);
287
+ errors.push(error);
288
+ } finally {
289
+ instance.stateValues = current.stateValues;
290
+ instance.cleanupFns = current.cleanupFns;
291
+ instance._ownedChildScopes = current.ownedChildScopes;
292
+ instance.abortController = current.abortController;
293
+ instance.mountOperations = current.mountOperations;
294
+ instance.commitOperations = current.commitOperations;
295
+ instance.lifecycleSlots = current.lifecycleSlots;
296
+ instance.lifecycleGeneration = current.lifecycleGeneration;
297
+ instance.evaluationGeneration = current.evaluationGeneration;
298
+ instance.hasPendingUpdate = current.hasPendingUpdate;
299
+ instance.notifyUpdate = current.notifyUpdate;
300
+ instance._placeholder = current.placeholder;
301
+ instance.mounted = current.mounted;
302
+ instance._currentRenderToken = current.currentRenderToken;
303
+ instance.lastRenderToken = current.lastRenderToken;
304
+ instance._pendingReadSources = current.pendingReadSources;
305
+ instance._pendingReadSourceVersions = current.pendingReadSourceVersions;
306
+ instance._lastReadSources = current.lastReadSources;
90
307
  }
91
- if (cleanupErrors.length > 0) throw new AggregateError(cleanupErrors, "Route cleanup failed");
308
+ const root = instance.target;
309
+ const liveInstances = root ? new Set(collectHostInstances(root)) : /* @__PURE__ */ new Set();
310
+ for (let index = deferred.previousInstances.length - 1; index >= 0; index--) {
311
+ const previous = deferred.previousInstances[index];
312
+ if (previous === instance || liveInstances.has(previous)) continue;
313
+ try {
314
+ cleanupComponent(previous);
315
+ } catch (error) {
316
+ errors.push(error);
317
+ }
318
+ }
319
+ return errors;
92
320
  }
93
- function remountResolvedRoute(instance, resolved, pathname, href) {
321
+ function remountResolvedRoute(instance, resolved, pathname, href, existingSnapshot) {
322
+ const deferredCleanup = existingSnapshot ?? captureDeferredRouteCleanup(instance);
94
323
  clearDefaultPortalForInstance(instance);
95
- cleanupRouteOwnership(instance);
96
324
  instance.fn = wrapRootRouteHandler(bindResolvedRouteHandler(resolved));
97
325
  instance.props = {};
98
326
  instance.stateValues = [];
@@ -105,6 +333,7 @@ function remountResolvedRoute(instance, resolved, pathname, href) {
105
333
  instance.commitOperations = [];
106
334
  instance.lifecycleSlots = [];
107
335
  instance.cleanupFns = [];
336
+ instance._ownedChildScopes = /* @__PURE__ */ new Set();
108
337
  instance._placeholder = void 0;
109
338
  instance.hasPendingUpdate = false;
110
339
  instance._currentRenderToken = void 0;
@@ -114,7 +343,7 @@ function remountResolvedRoute(instance, resolved, pathname, href) {
114
343
  instance.abortController = null;
115
344
  mountComponent(instance);
116
345
  setCurrentRouteLocation(pathname, href);
117
- return true;
346
+ return deferredCleanup;
118
347
  }
119
348
  function rerenderResolvedRoute(instance, pathname, href) {
120
349
  setCurrentRouteLocation(pathname, href);
@@ -141,6 +370,15 @@ function resolveAppRouteRequest(app, pathname, href, signal) {
141
370
  signal
142
371
  });
143
372
  }
373
+ function getResolvedRouteHandler(resolved) {
374
+ if (!resolved) throw new Error("[Askr] cannot prepare an unmatched navigation target");
375
+ if (resolved.kind === "deny") return createDeniedResolvedRoute(resolved.status);
376
+ if (!isRenderResult(resolved)) throw new Error("[Askr] cannot prepare a redirect as a destination root");
377
+ return {
378
+ handler: resolved.handler,
379
+ params: resolved.params
380
+ };
381
+ }
144
382
  function resolveNavigationTargetsForApps(pathname, href, signal) {
145
383
  const apps = getRegisteredAppsSnapshot();
146
384
  if (apps.length === 1) {
@@ -174,8 +412,10 @@ function resolveNavigationTargetsForApps(pathname, href, signal) {
174
412
  if (pendingTargets.length === 0) return syncTargets;
175
413
  return Promise.all([...syncTargets.map((target) => Promise.resolve(target)), ...pendingTargets]);
176
414
  }
177
- function applyNavigationTargets(path, options, redirectState, pathname, href, targets, navigateWithRedirectState) {
415
+ function applyNavigationTargets(requestId, path, options, redirectState, pathname, href, targets, navigateWithRedirectState) {
416
+ if (isStaleRouteRequest(requestId)) return;
178
417
  const previousPathname = getCurrentPathname();
418
+ const previousHref = getCurrentHref();
179
419
  for (const target of targets) {
180
420
  const resolved = target.resolved;
181
421
  if (!resolved || resolved.kind !== "redirect") continue;
@@ -197,27 +437,96 @@ function applyNavigationTargets(path, options, redirectState, pathname, href, ta
197
437
  if (isDevelopmentEnvironment()) logger.warn(`No route found for path: ${path}`);
198
438
  return;
199
439
  }
200
- saveScrollPosition(getCurrentHref());
201
- const historyMethod = getNavigationHistoryMode(options) === "replace" ? "replaceState" : "pushState";
202
- window.history[historyMethod]({ path: href }, "", href);
203
- syncRegisteredRouteSnapshot();
440
+ if (isStaleRouteRequest(requestId)) return;
441
+ const samePathTargets = [];
442
+ const rootsToPrepare = [];
204
443
  for (const target of matchedTargets) {
205
444
  const resolved = target.resolved;
206
445
  if (resolved.kind === "redirect") continue;
207
446
  if (pathname === target.app.pathname && isRenderResult(resolved)) {
208
- rerenderResolvedRoute(target.app.instance, pathname, href);
209
- syncAppRegistrationLocation(target.app, pathname, href);
447
+ samePathTargets.push(target);
210
448
  continue;
211
449
  }
212
- remountResolvedRoute(target.app.instance, resolved.kind === "deny" ? createDeniedResolvedRoute(resolved.status) : {
213
- handler: resolved.handler,
214
- params: resolved.params
215
- }, pathname, href);
216
- syncAppRegistrationLocation(target.app, pathname, href);
450
+ rootsToPrepare.push(target);
451
+ }
452
+ const rollbackSnapshots = matchedTargets.map((target) => captureDeferredRouteCleanup(target.app.instance));
453
+ const rollbackSnapshotByInstance = new Map(rollbackSnapshots.map((snapshot) => [snapshot.instance, snapshot]));
454
+ const deferredCleanups = [];
455
+ const cleanupErrors = [];
456
+ const previousAppLocations = matchedTargets.map((target) => ({
457
+ app: target.app,
458
+ pathname: target.app.pathname,
459
+ href: target.app.href
460
+ }));
461
+ const restoreOnExit = () => {
462
+ if (!navigationBatchClosed) {
463
+ discardLifecycleCommitBatch(navigationBatch);
464
+ navigationBatchClosed = true;
465
+ }
466
+ restoreDeferredRouteInstances(rollbackSnapshots);
467
+ for (const previous of previousAppLocations) {
468
+ previous.app.pathname = previous.pathname;
469
+ previous.app.href = previous.href;
470
+ }
471
+ setCurrentRouteLocation(previousPathname, previousHref);
472
+ };
473
+ const navigationBatch = beginLifecycleCommitBatch();
474
+ let navigationBatchClosed = false;
475
+ try {
476
+ for (const target of rootsToPrepare) {
477
+ if (isStaleRouteRequest(requestId)) {
478
+ restoreOnExit();
479
+ return;
480
+ }
481
+ const deferredCleanup = remountResolvedRoute(target.app.instance, getResolvedRouteHandler(target.resolved), pathname, href, rollbackSnapshotByInstance.get(target.app.instance));
482
+ deferredCleanups.push(deferredCleanup);
483
+ }
484
+ if (isStaleRouteRequest(requestId)) {
485
+ restoreOnExit();
486
+ return;
487
+ }
488
+ flushRuntimeScheduler();
489
+ cleanupErrors.push(...drainLifecycleCommitErrors());
490
+ if (isStaleRouteRequest(requestId)) {
491
+ restoreOnExit();
492
+ return;
493
+ }
494
+ for (const target of samePathTargets) {
495
+ if (isStaleRouteRequest(requestId)) {
496
+ restoreOnExit();
497
+ return;
498
+ }
499
+ rerenderResolvedRoute(target.app.instance, pathname, href);
500
+ }
501
+ flushRuntimeScheduler();
502
+ cleanupErrors.push(...drainLifecycleCommitErrors());
503
+ if (isStaleRouteRequest(requestId)) {
504
+ restoreOnExit();
505
+ return;
506
+ }
507
+ flushLifecycleCommitBatch(navigationBatch);
508
+ navigationBatchClosed = true;
509
+ cleanupErrors.push(...drainLifecycleCommitErrors());
510
+ for (const target of matchedTargets) if (target.resolved && target.resolved.kind !== "redirect") syncAppRegistrationLocation(target.app, pathname, href);
511
+ if (isStaleRouteRequest(requestId)) {
512
+ restoreOnExit();
513
+ return;
514
+ }
515
+ saveScrollPosition(previousHref);
516
+ const historyMethod = getNavigationHistoryMode(options) === "replace" ? "replaceState" : "pushState";
517
+ window.history[historyMethod]({ path: href }, "", href);
518
+ setCurrentRouteLocation(pathname, href);
519
+ syncRegisteredRouteSnapshot();
520
+ if (pathname !== previousPathname) applyNavigationScroll(options.scroll);
521
+ for (const deferredCleanup of deferredCleanups) cleanupErrors.push(...cleanupDeferredRouteInstance(deferredCleanup));
522
+ for (const error of cleanupErrors) reportRouteCleanupErrors([error]);
523
+ } catch (error) {
524
+ restoreOnExit();
525
+ logger.error("[Askr] navigation failed:", error);
526
+ throw error;
217
527
  }
218
- if (pathname !== previousPathname) applyNavigationScroll(options.scroll);
219
528
  }
220
- function applyPopStateNavigationTargets(requestId, pathname, href, state, targets, navigate) {
529
+ function applyPopStateNavigationTargets(requestId, previousHref, previousState, pathname, href, state, targets, navigate) {
221
530
  if (isStaleRouteRequest(requestId)) return;
222
531
  const matchedTargets = targets.filter((target) => target.resolved !== null);
223
532
  if (matchedTargets.length === 0) {
@@ -230,24 +539,96 @@ function applyPopStateNavigationTargets(requestId, pathname, href, state, target
230
539
  navigate(resolved.to, { history: getRedirectHistoryMode(resolved.replace) });
231
540
  return;
232
541
  }
233
- syncRegisteredRouteSnapshot();
542
+ const samePathTargets = [];
543
+ const rootsToPrepare = [];
234
544
  for (const target of matchedTargets) {
235
545
  const resolved = target.resolved;
236
546
  if (pathname === target.app.pathname && isRenderResult(resolved)) {
237
- rerenderResolvedRoute(target.app.instance, pathname, href);
238
- syncAppRegistrationLocation(target.app, pathname, href);
547
+ samePathTargets.push(target);
239
548
  continue;
240
549
  }
241
550
  if (resolved.kind === "redirect") continue;
242
- remountResolvedRoute(target.app.instance, resolved.kind === "deny" ? createDeniedResolvedRoute(resolved.status) : {
243
- handler: resolved.handler,
244
- params: resolved.params
245
- }, pathname, href);
246
- syncAppRegistrationLocation(target.app, pathname, href);
551
+ rootsToPrepare.push(target);
552
+ }
553
+ const previousPathname = getCurrentPathname();
554
+ const rollbackSnapshots = matchedTargets.map((target) => captureDeferredRouteCleanup(target.app.instance));
555
+ const rollbackSnapshotByInstance = new Map(rollbackSnapshots.map((snapshot) => [snapshot.instance, snapshot]));
556
+ const deferredCleanups = [];
557
+ const cleanupErrors = [];
558
+ const previousAppLocations = matchedTargets.map((target) => ({
559
+ app: target.app,
560
+ pathname: target.app.pathname,
561
+ href: target.app.href
562
+ }));
563
+ const restoreOnExit = () => {
564
+ if (!navigationBatchClosed) {
565
+ discardLifecycleCommitBatch(navigationBatch);
566
+ navigationBatchClosed = true;
567
+ }
568
+ restoreDeferredRouteInstances(rollbackSnapshots);
569
+ for (const previous of previousAppLocations) {
570
+ previous.app.pathname = previous.pathname;
571
+ previous.app.href = previous.href;
572
+ }
573
+ setCurrentRouteLocation(previousPathname, previousHref);
574
+ };
575
+ const navigationBatch = beginLifecycleCommitBatch();
576
+ let navigationBatchClosed = false;
577
+ try {
578
+ for (const target of rootsToPrepare) {
579
+ if (isStaleRouteRequest(requestId)) {
580
+ restoreOnExit();
581
+ return;
582
+ }
583
+ const deferredCleanup = remountResolvedRoute(target.app.instance, getResolvedRouteHandler(target.resolved), pathname, href, rollbackSnapshotByInstance.get(target.app.instance));
584
+ deferredCleanups.push(deferredCleanup);
585
+ }
586
+ if (isStaleRouteRequest(requestId)) {
587
+ restoreOnExit();
588
+ return;
589
+ }
590
+ flushRuntimeScheduler();
591
+ cleanupErrors.push(...drainLifecycleCommitErrors());
592
+ if (isStaleRouteRequest(requestId)) {
593
+ restoreOnExit();
594
+ return;
595
+ }
596
+ for (const target of samePathTargets) {
597
+ if (isStaleRouteRequest(requestId)) {
598
+ restoreOnExit();
599
+ return;
600
+ }
601
+ rerenderResolvedRoute(target.app.instance, pathname, href);
602
+ }
603
+ flushRuntimeScheduler();
604
+ cleanupErrors.push(...drainLifecycleCommitErrors());
605
+ if (isStaleRouteRequest(requestId)) {
606
+ restoreOnExit();
607
+ return;
608
+ }
609
+ flushLifecycleCommitBatch(navigationBatch);
610
+ navigationBatchClosed = true;
611
+ cleanupErrors.push(...drainLifecycleCommitErrors());
612
+ for (const target of matchedTargets) if (target.resolved && target.resolved.kind !== "redirect") syncAppRegistrationLocation(target.app, pathname, href);
613
+ if (isStaleRouteRequest(requestId)) {
614
+ restoreOnExit();
615
+ return;
616
+ }
617
+ setCurrentRouteLocation(pathname, href);
618
+ syncRegisteredRouteSnapshot();
619
+ applyHistoryScroll(href, state);
620
+ for (const deferredCleanup of deferredCleanups) cleanupErrors.push(...cleanupDeferredRouteInstance(deferredCleanup));
621
+ for (const error of cleanupErrors) reportRouteCleanupErrors([error]);
622
+ } catch (error) {
623
+ restoreOnExit();
624
+ try {
625
+ window.history.replaceState(previousState, "", previousHref);
626
+ syncRegisteredRouteSnapshot();
627
+ } catch (rollbackError) {
628
+ logger.error("[Askr] failed to restore URL after popstate failure:", rollbackError);
629
+ }
630
+ throw error;
247
631
  }
248
- applyHistoryScroll(href, state);
249
632
  }
250
633
  //#endregion
251
634
  export { applyNavigationTargets, applyPopStateNavigationTargets, beginRouteRequest, cancelRouteRequests, getRedirectHistoryMode, isStaleRouteRequest, resolveNavigationTargetsForApps };
252
-
253
- //# sourceMappingURL=navigation-targets.js.map
@@ -24,5 +24,4 @@ declare function requireRole(role: string): RoutePolicy;
24
24
  declare function requirePermission(permission: string): RoutePolicy;
25
25
  declare function evaluateRoutePolicy(policy: RoutePolicy, context: RouteContext): Promise<AccessDecision>;
26
26
  //#endregion
27
- export { BuiltInRoutePolicyKind, BuiltInRoutePolicyMetadata, allow, deny, forbidden, notFound, redirect, requireAuth, requirePermission, requireRole, unauthorized };
28
- //# sourceMappingURL=policy.d.ts.map
27
+ export { BuiltInRoutePolicyKind, BuiltInRoutePolicyMetadata, allow, deny, forbidden, notFound, redirect, requireAuth, requirePermission, requireRole, unauthorized };
@@ -128,5 +128,3 @@ function requirePermission(permission) {
128
128
  }
129
129
  //#endregion
130
130
  export { _getBuiltInRoutePolicy, allow, deny, forbidden, notFound, redirect, requireAuth, requireGuest, requirePermission, requireRole, unauthorized, withRouteAuthOptions };
131
-
132
- //# sourceMappingURL=policy.js.map
@@ -6,5 +6,4 @@ declare function Outlet(): JSXElement;
6
6
  declare function createRouteHandler(component: RouteComponent, pageChain: readonly PageScopeRecord[], layoutChain: readonly LayoutScopeRecord[], deferComponents?: boolean): RouteHandler;
7
7
  declare function getRenderHandler(record: RouteRecord): RouteHandler;
8
8
  //#endregion
9
- export { Outlet };
10
- //# sourceMappingURL=rendering.d.ts.map
9
+ export { Outlet };
@@ -1,5 +1,6 @@
1
1
  import { ELEMENT_TYPE, Fragment } from "../common/jsx.js";
2
2
  import { defineContext, readContext } from "../runtime/context.js";
3
+ import "../runtime/index.js";
3
4
  import { ROUTE_ROOT_COMPONENT } from "../common/router-internal.js";
4
5
  //#region src/router/rendering.ts
5
6
  const outletContext = defineContext(null);
@@ -32,7 +33,10 @@ function createRouteHandler(component, pageChain, layoutChain, deferComponents =
32
33
  return (params) => {
33
34
  let content = deferComponents ? createRouteComponentVNode(component, params, true) : component(params);
34
35
  content = applyPageChain(pageChain, params, content, deferComponents);
35
- for (let i = layoutChain.length - 1; i >= 0; i--) content = layoutChain[i].component({ children: content });
36
+ for (let i = layoutChain.length - 1; i >= 0; i--) {
37
+ const layout = layoutChain[i].component;
38
+ content = layout({ children: content });
39
+ }
36
40
  return content;
37
41
  };
38
42
  }
@@ -41,5 +45,3 @@ function getRenderHandler(record) {
41
45
  }
42
46
  //#endregion
43
47
  export { Outlet, createRouteHandler, getRenderHandler };
44
-
45
- //# sourceMappingURL=rendering.js.map
@@ -1,17 +1,3 @@
1
- import { ResolvedRoute, Route, RouteManifest, RouteMatch, RouteRecord, RouteRequestOptions, RouteRequestResult } from "../common/router.js";
2
-
1
+ import { RouteRequestOptions, RouteRequestResult } from "../common/router.js";
3
2
  //#region src/router/resolution.d.ts
4
- declare function computeMatchesFromRoutes(pathname: string, routesList: readonly Route[]): RouteMatch[];
5
- declare function computeMatchesFromRouteRecords(pathname: string, routeRecords: readonly RouteRecord[]): RouteMatch[];
6
- declare function computeRouteActivityMatches(pathname: string, options?: {
7
- manifest?: RouteManifest;
8
- routes?: readonly Route[];
9
- }): RouteMatch[];
10
- declare function resolveRoute(pathname: string): ResolvedRoute | null;
11
- declare function resolveRouteRequest(target: string, options?: RouteRequestOptions): RouteRequestResult | Promise<RouteRequestResult>;
12
- declare function resolveRouteFromRoutes(pathname: string, routeList: readonly Route[]): ResolvedRoute | null;
13
- declare function _resolveRouteMatchFromRoutes(pathname: string, routeList: readonly Route[]): {
14
- route: Route;
15
- params: Record<string, string>;
16
- } | null;
17
- //# sourceMappingURL=resolution.d.ts.map
3
+ declare function resolveRouteRequest(target: string, options?: RouteRequestOptions): RouteRequestResult | Promise<RouteRequestResult>;