@askrjs/askr 0.0.51 → 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 (593) 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 +2 -4
  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 +20 -11
  11. package/dist/boot/root-lifecycle.d.ts +6 -3
  12. package/dist/boot/root-lifecycle.js +14 -10
  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 +1 -2
  22. package/dist/common/invariant.js +0 -2
  23. package/dist/common/jsx.d.ts +1 -2
  24. package/dist/common/jsx.js +0 -2
  25. package/dist/common/logger.js +0 -2
  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 +1 -2
  39. package/dist/components/error-boundary.js +0 -2
  40. package/dist/components/link.d.ts +2 -2
  41. package/dist/components/link.js +0 -2
  42. package/dist/control/case.d.ts +1 -2
  43. package/dist/control/case.js +0 -2
  44. package/dist/control/for.d.ts +1 -2
  45. package/dist/control/for.js +0 -2
  46. package/dist/control/shared.d.ts +1 -2
  47. package/dist/control/shared.js +0 -2
  48. package/dist/control/show.d.ts +1 -2
  49. package/dist/control/show.js +0 -2
  50. package/dist/data/data-runtime.d.ts +1 -2
  51. package/dist/data/data-runtime.js +3 -5
  52. package/dist/data/invalidation-listeners.js +0 -2
  53. package/dist/data/invalidation.d.ts +1 -2
  54. package/dist/data/invalidation.js +0 -2
  55. package/dist/data/mutation-cell.d.ts +1 -2
  56. package/dist/data/mutation-cell.js +6 -5
  57. package/dist/data/query-cell.d.ts +3 -2
  58. package/dist/data/query-cell.js +43 -9
  59. package/dist/data/query-key.js +0 -2
  60. package/dist/data/shared.js +2 -3
  61. package/dist/data/types.d.ts +1 -2
  62. package/dist/foundations/icon/icon.d.ts +1 -2
  63. package/dist/foundations/icon/icon.js +0 -2
  64. package/dist/foundations/icon/icon.types.d.ts +1 -2
  65. package/dist/foundations/interactions/dismissable.d.ts +1 -2
  66. package/dist/foundations/interactions/dismissable.js +0 -2
  67. package/dist/foundations/interactions/focusable.d.ts +1 -2
  68. package/dist/foundations/interactions/focusable.js +0 -2
  69. package/dist/foundations/interactions/hoverable.d.ts +1 -2
  70. package/dist/foundations/interactions/hoverable.js +0 -2
  71. package/dist/foundations/interactions/interaction-policy.d.ts +1 -2
  72. package/dist/foundations/interactions/interaction-policy.js +0 -2
  73. package/dist/foundations/interactions/pressable.d.ts +1 -2
  74. package/dist/foundations/interactions/pressable.js +0 -2
  75. package/dist/foundations/interactions/roving-focus.d.ts +1 -2
  76. package/dist/foundations/interactions/roving-focus.js +0 -2
  77. package/dist/foundations/state/controllable.d.ts +1 -2
  78. package/dist/foundations/state/controllable.js +0 -2
  79. package/dist/foundations/structures/collection.d.ts +1 -2
  80. package/dist/foundations/structures/collection.js +0 -2
  81. package/dist/foundations/structures/layer.d.ts +1 -2
  82. package/dist/foundations/structures/layer.js +0 -2
  83. package/dist/foundations/structures/layout.d.ts +1 -2
  84. package/dist/foundations/structures/layout.js +0 -2
  85. package/dist/foundations/structures/presence.d.ts +1 -2
  86. package/dist/foundations/structures/presence.js +0 -2
  87. package/dist/foundations/structures/slot.d.ts +1 -2
  88. package/dist/foundations/structures/slot.js +0 -2
  89. package/dist/foundations/utilities/aria.d.ts +1 -2
  90. package/dist/foundations/utilities/aria.js +0 -2
  91. package/dist/foundations/utilities/compose-handlers.d.ts +1 -2
  92. package/dist/foundations/utilities/compose-handlers.js +0 -2
  93. package/dist/foundations/utilities/compose-ref.d.ts +1 -2
  94. package/dist/foundations/utilities/compose-ref.js +0 -2
  95. package/dist/foundations/utilities/event-types.d.ts +1 -2
  96. package/dist/foundations/utilities/merge-props.d.ts +1 -2
  97. package/dist/foundations/utilities/merge-props.js +0 -2
  98. package/dist/foundations/utilities/use-id.d.ts +1 -2
  99. package/dist/foundations/utilities/use-id.js +0 -2
  100. package/dist/fx/fx.d.ts +1 -2
  101. package/dist/fx/fx.js +0 -2
  102. package/dist/fx/noop.js +0 -2
  103. package/dist/fx/timing.d.ts +1 -2
  104. package/dist/fx/timing.js +0 -2
  105. package/dist/index.d.ts +1 -1
  106. package/dist/index.js +0 -2
  107. package/dist/jsx/types.d.ts +1 -2
  108. package/dist/jsx/utils.d.ts +1 -2
  109. package/dist/jsx/utils.js +0 -2
  110. package/dist/jsx-dev-runtime.d.ts +16 -2
  111. package/dist/jsx-dev-runtime.js +3 -12
  112. package/dist/jsx-runtime.d.ts +16 -2
  113. package/dist/jsx-runtime.js +15 -24
  114. package/dist/jsx-runtime2.d.ts +1 -1
  115. package/dist/renderer/attributes.js +28 -6
  116. package/dist/renderer/boundaries.js +48 -172
  117. package/dist/renderer/boundary-materialization.js +72 -0
  118. package/dist/renderer/boundary-range-adoption.js +76 -0
  119. package/dist/renderer/boundary-range-sync.js +101 -0
  120. package/dist/renderer/boundary-state.js +50 -0
  121. package/dist/renderer/child-shape.js +0 -2
  122. package/dist/renderer/children-fastpath.js +3 -3
  123. package/dist/renderer/children.js +0 -2
  124. package/dist/renderer/cleanup.js +70 -13
  125. package/dist/renderer/component-host-cleanup.js +123 -48
  126. package/dist/renderer/component-host-instances.js +59 -8
  127. package/dist/renderer/component-host-replacement.js +105 -0
  128. package/dist/renderer/component-host-results.js +138 -0
  129. package/dist/renderer/component-host.js +94 -169
  130. package/dist/renderer/dom-host.js +0 -2
  131. package/dist/renderer/dom-internal.js +110 -53
  132. package/dist/renderer/dom-range.js +161 -0
  133. package/dist/renderer/dom.js +5 -4
  134. package/dist/renderer/element-children.js +112 -32
  135. package/dist/renderer/error-boundary-dom.js +19 -11
  136. package/dist/renderer/evaluate-dom-range.js +3 -4
  137. package/dist/renderer/evaluate-reconcile.js +12 -37
  138. package/dist/renderer/evaluate.js +14 -3
  139. package/dist/renderer/fastpath.js +4 -12
  140. package/dist/renderer/for-commit-dom-map.js +6 -18
  141. package/dist/renderer/for-commit-removal.js +7 -16
  142. package/dist/renderer/for-commit-reorder.js +0 -2
  143. package/dist/renderer/for-commit.js +172 -44
  144. package/dist/renderer/hydration-boundaries.js +60 -0
  145. package/dist/renderer/hydration-listener-transaction.js +49 -0
  146. package/dist/renderer/index.js +8 -7
  147. package/dist/renderer/intrinsic-blueprint-analysis.js +202 -0
  148. package/dist/renderer/intrinsic-blueprint-bindings.js +152 -0
  149. package/dist/renderer/intrinsic-blueprint-materialization.js +100 -0
  150. package/dist/renderer/intrinsic-blueprint.js +30 -0
  151. package/dist/renderer/intrinsic-hydration-adoption.js +66 -0
  152. package/dist/renderer/keyed-children.js +3 -9
  153. package/dist/renderer/keyed.js +10 -10
  154. package/dist/renderer/namespaces.js +0 -2
  155. package/dist/renderer/prop-bindings.js +56 -21
  156. package/dist/renderer/reactive-child-dom.js +10 -4
  157. package/dist/renderer/reactive-child-sources.js +0 -2
  158. package/dist/renderer/reactive-children.js +29 -20
  159. package/dist/renderer/reconcile-commit.js +0 -2
  160. package/dist/renderer/reconcile-fastpaths.js +4 -11
  161. package/dist/renderer/reconcile-resolution.js +31 -55
  162. package/dist/renderer/reconcile.js +0 -2
  163. package/dist/renderer/retained-element-rollback.js +159 -148
  164. package/dist/renderer/stable-patch.js +3 -4
  165. package/dist/renderer/static-reuse.js +0 -2
  166. package/dist/renderer/utils.js +18 -9
  167. package/dist/router/access.js +0 -2
  168. package/dist/router/activity.d.ts +1 -2
  169. package/dist/router/activity.js +0 -2
  170. package/dist/router/authoring.d.ts +1 -2
  171. package/dist/router/authoring.js +0 -2
  172. package/dist/router/internal-types.d.ts +1 -2
  173. package/dist/router/lazy.d.ts +1 -2
  174. package/dist/router/lazy.js +0 -2
  175. package/dist/router/manifest.d.ts +1 -2
  176. package/dist/router/manifest.js +0 -2
  177. package/dist/router/match.js +0 -2
  178. package/dist/router/navigate.d.ts +1 -2
  179. package/dist/router/navigate.js +4 -7
  180. package/dist/router/navigation-registry.d.ts +1 -2
  181. package/dist/router/navigation-registry.js +0 -2
  182. package/dist/router/navigation-scroll.d.ts +1 -2
  183. package/dist/router/navigation-scroll.js +0 -2
  184. package/dist/router/navigation-targets.d.ts +3 -4
  185. package/dist/router/navigation-targets.js +419 -40
  186. package/dist/router/policy.d.ts +1 -2
  187. package/dist/router/policy.js +0 -2
  188. package/dist/router/rendering.d.ts +1 -2
  189. package/dist/router/rendering.js +4 -3
  190. package/dist/router/resolution.d.ts +1 -2
  191. package/dist/router/resolution.js +0 -2
  192. package/dist/router/route-context.js +0 -2
  193. package/dist/router/route-matching.d.ts +1 -2
  194. package/dist/router/route-matching.js +0 -2
  195. package/dist/router/route-query.d.ts +1 -2
  196. package/dist/router/route-query.js +1 -3
  197. package/dist/router/store.d.ts +1 -2
  198. package/dist/router/store.js +0 -2
  199. package/dist/runtime/access.d.ts +1 -2
  200. package/dist/runtime/access.js +0 -2
  201. package/dist/runtime/child-scope.d.ts +21 -2
  202. package/dist/runtime/child-scope.js +101 -54
  203. package/dist/runtime/component-cleanup.d.ts +1 -2
  204. package/dist/runtime/component-cleanup.js +2 -4
  205. package/dist/runtime/component-commit.js +25 -23
  206. package/dist/runtime/component-facade.js +5 -3
  207. package/dist/runtime/component-internal.d.ts +11 -6
  208. package/dist/runtime/component-internal.js +63 -45
  209. package/dist/runtime/component-lifecycle.d.ts +2 -41
  210. package/dist/runtime/component-lifecycle.js +6 -149
  211. package/dist/runtime/component-scope.d.ts +3 -4
  212. package/dist/runtime/component-scope.js +27 -8
  213. package/dist/runtime/component.js +4 -3
  214. package/dist/runtime/context.d.ts +5 -2
  215. package/dist/runtime/context.js +29 -3
  216. package/dist/runtime/control.d.ts +22 -3
  217. package/dist/runtime/control.js +168 -55
  218. package/dist/runtime/derive.d.ts +1 -2
  219. package/dist/runtime/derive.js +0 -2
  220. package/dist/runtime/dev-namespace.d.ts +5 -6
  221. package/dist/runtime/dev-namespace.js +32 -25
  222. package/dist/runtime/effect.d.ts +8 -5
  223. package/dist/runtime/effect.js +158 -75
  224. package/dist/runtime/error-boundary.d.ts +1 -2
  225. package/dist/runtime/error-boundary.js +0 -2
  226. package/dist/runtime/events.d.ts +3 -3
  227. package/dist/runtime/events.js +66 -69
  228. package/dist/runtime/execution-model.d.ts +1 -2
  229. package/dist/runtime/execution-model.js +0 -2
  230. package/dist/runtime/fastlane.d.ts +1 -2
  231. package/dist/runtime/fastlane.js +0 -2
  232. package/dist/runtime/for-bench.d.ts +1 -2
  233. package/dist/runtime/for-bench.js +9 -167
  234. package/dist/runtime/for-internal.d.ts +68 -5
  235. package/dist/runtime/for-internal.js +201 -14
  236. package/dist/runtime/for-reconcile.d.ts +1 -2
  237. package/dist/runtime/for-reconcile.js +76 -23
  238. package/dist/runtime/for-scopes.d.ts +5 -5
  239. package/dist/runtime/for-scopes.js +168 -48
  240. package/dist/runtime/for-signals.d.ts +13 -4
  241. package/dist/runtime/for-signals.js +155 -81
  242. package/dist/runtime/for-types.d.ts +1 -2
  243. package/dist/runtime/for.d.ts +2 -2
  244. package/dist/runtime/for.js +3 -3
  245. package/dist/runtime/index.d.ts +5 -5
  246. package/dist/runtime/index.js +12 -10
  247. package/dist/runtime/lifecycle-batch.d.ts +59 -0
  248. package/dist/runtime/lifecycle-batch.js +178 -0
  249. package/dist/runtime/lifecycle-operation-settlement.d.ts +5 -0
  250. package/dist/runtime/lifecycle-operation-settlement.js +51 -0
  251. package/dist/runtime/lifecycle-operations.d.ts +1 -2
  252. package/dist/runtime/lifecycle-operations.js +5 -6
  253. package/dist/runtime/perf-metrics.d.ts +8 -7
  254. package/dist/runtime/perf-metrics.js +4 -68
  255. package/dist/runtime/portal.d.ts +1 -2
  256. package/dist/runtime/portal.js +103 -11
  257. package/dist/runtime/readable.d.ts +9 -4
  258. package/dist/runtime/readable.js +41 -17
  259. package/dist/runtime/resource-cell.js +2 -4
  260. package/dist/runtime/resource-operation.d.ts +1 -2
  261. package/dist/runtime/resource-operation.js +37 -34
  262. package/dist/runtime/runtime.d.ts +1 -2
  263. package/dist/runtime/runtime.js +0 -2
  264. package/dist/runtime/scheduler.d.ts +1 -2
  265. package/dist/runtime/scheduler.js +8 -11
  266. package/dist/runtime/selector-store.js +0 -2
  267. package/dist/runtime/selector.d.ts +1 -2
  268. package/dist/runtime/selector.js +3 -11
  269. package/dist/runtime/snapshot-source.d.ts +1 -2
  270. package/dist/runtime/snapshot-source.js +0 -2
  271. package/dist/runtime/state.d.ts +1 -2
  272. package/dist/runtime/state.js +1 -3
  273. package/dist/ssg/batch-render.js +0 -2
  274. package/dist/ssg/create-static-gen.d.ts +4 -2
  275. package/dist/ssg/create-static-gen.js +65 -14
  276. package/dist/ssg/generate-metadata.js +0 -2
  277. package/dist/ssg/generation-plan.js +0 -2
  278. package/dist/ssg/incremental-manifest.js +1 -3
  279. package/dist/ssg/resolve-ssg-data.js +0 -2
  280. package/dist/ssg/route-utils.js +0 -2
  281. package/dist/ssg/static-routes.js +0 -2
  282. package/dist/ssg/types.d.ts +2 -3
  283. package/dist/ssg/write-static-files.js +16 -12
  284. package/dist/ssr/attrs.js +0 -2
  285. package/dist/ssr/boundaries.js +16 -5
  286. package/dist/ssr/component-runtime.js +1 -27
  287. package/dist/ssr/context.d.ts +1 -2
  288. package/dist/ssr/context.js +0 -2
  289. package/dist/ssr/errors.d.ts +1 -2
  290. package/dist/ssr/errors.js +0 -2
  291. package/dist/ssr/escape.js +0 -2
  292. package/dist/ssr/hydration-data.js +0 -2
  293. package/dist/ssr/hydration-verify.d.ts +1 -2
  294. package/dist/ssr/hydration-verify.js +34 -7
  295. package/dist/ssr/index-internal.d.ts +1 -2
  296. package/dist/ssr/index-internal.js +0 -2
  297. package/dist/ssr/render-keys.js +0 -2
  298. package/dist/ssr/render-resolved.d.ts +1 -2
  299. package/dist/ssr/render-resolved.js +0 -2
  300. package/dist/ssr/render-sync.d.ts +1 -2
  301. package/dist/ssr/render-sync.js +27 -19
  302. package/dist/ssr/route-policy-resolution.js +0 -2
  303. package/dist/ssr/route-render.d.ts +1 -2
  304. package/dist/ssr/route-render.js +0 -2
  305. package/dist/ssr/sink.d.ts +1 -2
  306. package/dist/ssr/sink.js +0 -2
  307. package/dist/ssr/types.d.ts +1 -2
  308. package/dist/ssr/verify-hydration.js +0 -2
  309. package/dist/testing/index.d.ts +1 -2
  310. package/dist/testing/index.js +0 -2
  311. package/package.json +57 -44
  312. package/dist/bench/components/benchmark-row.d.ts.map +0 -1
  313. package/dist/bench/components/benchmark-row.js.map +0 -1
  314. package/dist/bench/components/benchmark-table.js.map +0 -1
  315. package/dist/benchmark.d.ts.map +0 -1
  316. package/dist/benchmark.js.map +0 -1
  317. package/dist/bin/askr-ssg.d.ts.map +0 -1
  318. package/dist/bin/askr-ssg.js.map +0 -1
  319. package/dist/boot/hydration.js.map +0 -1
  320. package/dist/boot/index.d.ts.map +0 -1
  321. package/dist/boot/index.js.map +0 -1
  322. package/dist/boot/root-lifecycle.d.ts.map +0 -1
  323. package/dist/boot/root-lifecycle.js.map +0 -1
  324. package/dist/boot/route-startup.js.map +0 -1
  325. package/dist/boot/types.d.ts.map +0 -1
  326. package/dist/common/attr-names.js.map +0 -1
  327. package/dist/common/component.d.ts.map +0 -1
  328. package/dist/common/control.d.ts.map +0 -1
  329. package/dist/common/control.js.map +0 -1
  330. package/dist/common/env.js.map +0 -1
  331. package/dist/common/error-boundary.d.ts.map +0 -1
  332. package/dist/common/invariant.js.map +0 -1
  333. package/dist/common/jsx.d.ts.map +0 -1
  334. package/dist/common/jsx.js.map +0 -1
  335. package/dist/common/logger.js.map +0 -1
  336. package/dist/common/promise.js.map +0 -1
  337. package/dist/common/props.d.ts.map +0 -1
  338. package/dist/common/render-context.js.map +0 -1
  339. package/dist/common/route-activity.js.map +0 -1
  340. package/dist/common/router-internal.js.map +0 -1
  341. package/dist/common/router.d.ts.map +0 -1
  342. package/dist/common/ssr-errors.d.ts.map +0 -1
  343. package/dist/common/ssr-errors.js.map +0 -1
  344. package/dist/common/ssr.d.ts.map +0 -1
  345. package/dist/common/ssr.js.map +0 -1
  346. package/dist/common/vnode.d.ts.map +0 -1
  347. package/dist/common/vnode.js.map +0 -1
  348. package/dist/components/error-boundary.d.ts.map +0 -1
  349. package/dist/components/error-boundary.js.map +0 -1
  350. package/dist/components/link.d.ts.map +0 -1
  351. package/dist/components/link.js.map +0 -1
  352. package/dist/control/case.d.ts.map +0 -1
  353. package/dist/control/case.js.map +0 -1
  354. package/dist/control/for.d.ts.map +0 -1
  355. package/dist/control/for.js.map +0 -1
  356. package/dist/control/shared.d.ts.map +0 -1
  357. package/dist/control/shared.js.map +0 -1
  358. package/dist/control/show.d.ts.map +0 -1
  359. package/dist/control/show.js.map +0 -1
  360. package/dist/data/data-runtime.d.ts.map +0 -1
  361. package/dist/data/data-runtime.js.map +0 -1
  362. package/dist/data/invalidation-listeners.js.map +0 -1
  363. package/dist/data/invalidation.d.ts.map +0 -1
  364. package/dist/data/invalidation.js.map +0 -1
  365. package/dist/data/mutation-cell.d.ts.map +0 -1
  366. package/dist/data/mutation-cell.js.map +0 -1
  367. package/dist/data/query-cell.d.ts.map +0 -1
  368. package/dist/data/query-cell.js.map +0 -1
  369. package/dist/data/query-key.js.map +0 -1
  370. package/dist/data/shared.js.map +0 -1
  371. package/dist/data/types.d.ts.map +0 -1
  372. package/dist/foundations/icon/icon.d.ts.map +0 -1
  373. package/dist/foundations/icon/icon.js.map +0 -1
  374. package/dist/foundations/icon/icon.types.d.ts.map +0 -1
  375. package/dist/foundations/interactions/dismissable.d.ts.map +0 -1
  376. package/dist/foundations/interactions/dismissable.js.map +0 -1
  377. package/dist/foundations/interactions/focusable.d.ts.map +0 -1
  378. package/dist/foundations/interactions/focusable.js.map +0 -1
  379. package/dist/foundations/interactions/hoverable.d.ts.map +0 -1
  380. package/dist/foundations/interactions/hoverable.js.map +0 -1
  381. package/dist/foundations/interactions/interaction-policy.d.ts.map +0 -1
  382. package/dist/foundations/interactions/interaction-policy.js.map +0 -1
  383. package/dist/foundations/interactions/pressable.d.ts.map +0 -1
  384. package/dist/foundations/interactions/pressable.js.map +0 -1
  385. package/dist/foundations/interactions/roving-focus.d.ts.map +0 -1
  386. package/dist/foundations/interactions/roving-focus.js.map +0 -1
  387. package/dist/foundations/state/controllable.d.ts.map +0 -1
  388. package/dist/foundations/state/controllable.js.map +0 -1
  389. package/dist/foundations/structures/collection.d.ts.map +0 -1
  390. package/dist/foundations/structures/collection.js.map +0 -1
  391. package/dist/foundations/structures/layer.d.ts.map +0 -1
  392. package/dist/foundations/structures/layer.js.map +0 -1
  393. package/dist/foundations/structures/layout.d.ts.map +0 -1
  394. package/dist/foundations/structures/layout.js.map +0 -1
  395. package/dist/foundations/structures/presence.d.ts.map +0 -1
  396. package/dist/foundations/structures/presence.js.map +0 -1
  397. package/dist/foundations/structures/slot.d.ts.map +0 -1
  398. package/dist/foundations/structures/slot.js.map +0 -1
  399. package/dist/foundations/utilities/aria.d.ts.map +0 -1
  400. package/dist/foundations/utilities/aria.js.map +0 -1
  401. package/dist/foundations/utilities/compose-handlers.d.ts.map +0 -1
  402. package/dist/foundations/utilities/compose-handlers.js.map +0 -1
  403. package/dist/foundations/utilities/compose-ref.d.ts.map +0 -1
  404. package/dist/foundations/utilities/compose-ref.js.map +0 -1
  405. package/dist/foundations/utilities/event-types.d.ts.map +0 -1
  406. package/dist/foundations/utilities/merge-props.d.ts.map +0 -1
  407. package/dist/foundations/utilities/merge-props.js.map +0 -1
  408. package/dist/foundations/utilities/use-id.d.ts.map +0 -1
  409. package/dist/foundations/utilities/use-id.js.map +0 -1
  410. package/dist/fx/fx.d.ts.map +0 -1
  411. package/dist/fx/fx.js.map +0 -1
  412. package/dist/fx/noop.js.map +0 -1
  413. package/dist/fx/timing.d.ts.map +0 -1
  414. package/dist/fx/timing.js.map +0 -1
  415. package/dist/index.js.map +0 -1
  416. package/dist/jsx/types.d.ts.map +0 -1
  417. package/dist/jsx/utils.d.ts.map +0 -1
  418. package/dist/jsx/utils.js.map +0 -1
  419. package/dist/jsx-dev-runtime.d.ts.map +0 -1
  420. package/dist/jsx-dev-runtime.js.map +0 -1
  421. package/dist/jsx-runtime.d.ts.map +0 -1
  422. package/dist/jsx-runtime.js.map +0 -1
  423. package/dist/renderer/attributes.js.map +0 -1
  424. package/dist/renderer/boundaries.js.map +0 -1
  425. package/dist/renderer/child-shape.js.map +0 -1
  426. package/dist/renderer/children-fastpath.js.map +0 -1
  427. package/dist/renderer/children.js.map +0 -1
  428. package/dist/renderer/cleanup.js.map +0 -1
  429. package/dist/renderer/component-host-cleanup.js.map +0 -1
  430. package/dist/renderer/component-host-instances.js.map +0 -1
  431. package/dist/renderer/component-host.js.map +0 -1
  432. package/dist/renderer/dom-host.js.map +0 -1
  433. package/dist/renderer/dom-internal.js.map +0 -1
  434. package/dist/renderer/element-children.js.map +0 -1
  435. package/dist/renderer/error-boundary-dom.js.map +0 -1
  436. package/dist/renderer/evaluate-dom-range.js.map +0 -1
  437. package/dist/renderer/evaluate-reconcile.js.map +0 -1
  438. package/dist/renderer/evaluate.js.map +0 -1
  439. package/dist/renderer/fastpath.js.map +0 -1
  440. package/dist/renderer/for-commit-dom-map.js.map +0 -1
  441. package/dist/renderer/for-commit-removal.js.map +0 -1
  442. package/dist/renderer/for-commit-reorder.js.map +0 -1
  443. package/dist/renderer/for-commit.js.map +0 -1
  444. package/dist/renderer/index.js.map +0 -1
  445. package/dist/renderer/keyed-children.js.map +0 -1
  446. package/dist/renderer/keyed.js.map +0 -1
  447. package/dist/renderer/namespaces.js.map +0 -1
  448. package/dist/renderer/prop-bindings.js.map +0 -1
  449. package/dist/renderer/reactive-child-dom.js.map +0 -1
  450. package/dist/renderer/reactive-child-sources.js.map +0 -1
  451. package/dist/renderer/reactive-children.js.map +0 -1
  452. package/dist/renderer/reconcile-commit.js.map +0 -1
  453. package/dist/renderer/reconcile-fastpaths.js.map +0 -1
  454. package/dist/renderer/reconcile-resolution.js.map +0 -1
  455. package/dist/renderer/reconcile.js.map +0 -1
  456. package/dist/renderer/retained-element-rollback.js.map +0 -1
  457. package/dist/renderer/stable-patch.js.map +0 -1
  458. package/dist/renderer/static-reuse.js.map +0 -1
  459. package/dist/renderer/utils.js.map +0 -1
  460. package/dist/router/access.js.map +0 -1
  461. package/dist/router/activity.d.ts.map +0 -1
  462. package/dist/router/activity.js.map +0 -1
  463. package/dist/router/authoring.d.ts.map +0 -1
  464. package/dist/router/authoring.js.map +0 -1
  465. package/dist/router/internal-types.d.ts.map +0 -1
  466. package/dist/router/lazy.d.ts.map +0 -1
  467. package/dist/router/lazy.js.map +0 -1
  468. package/dist/router/manifest.d.ts.map +0 -1
  469. package/dist/router/manifest.js.map +0 -1
  470. package/dist/router/match.js.map +0 -1
  471. package/dist/router/navigate.d.ts.map +0 -1
  472. package/dist/router/navigate.js.map +0 -1
  473. package/dist/router/navigation-registry.d.ts.map +0 -1
  474. package/dist/router/navigation-registry.js.map +0 -1
  475. package/dist/router/navigation-scroll.d.ts.map +0 -1
  476. package/dist/router/navigation-scroll.js.map +0 -1
  477. package/dist/router/navigation-targets.d.ts.map +0 -1
  478. package/dist/router/navigation-targets.js.map +0 -1
  479. package/dist/router/policy.d.ts.map +0 -1
  480. package/dist/router/policy.js.map +0 -1
  481. package/dist/router/rendering.d.ts.map +0 -1
  482. package/dist/router/rendering.js.map +0 -1
  483. package/dist/router/resolution.d.ts.map +0 -1
  484. package/dist/router/resolution.js.map +0 -1
  485. package/dist/router/route-context.js.map +0 -1
  486. package/dist/router/route-matching.d.ts.map +0 -1
  487. package/dist/router/route-matching.js.map +0 -1
  488. package/dist/router/route-query.d.ts.map +0 -1
  489. package/dist/router/route-query.js.map +0 -1
  490. package/dist/router/store.d.ts.map +0 -1
  491. package/dist/router/store.js.map +0 -1
  492. package/dist/runtime/access.d.ts.map +0 -1
  493. package/dist/runtime/access.js.map +0 -1
  494. package/dist/runtime/child-scope.d.ts.map +0 -1
  495. package/dist/runtime/child-scope.js.map +0 -1
  496. package/dist/runtime/component-cleanup.d.ts.map +0 -1
  497. package/dist/runtime/component-cleanup.js.map +0 -1
  498. package/dist/runtime/component-commit.js.map +0 -1
  499. package/dist/runtime/component-internal.d.ts.map +0 -1
  500. package/dist/runtime/component-internal.js.map +0 -1
  501. package/dist/runtime/component-lifecycle.d.ts.map +0 -1
  502. package/dist/runtime/component-lifecycle.js.map +0 -1
  503. package/dist/runtime/component-scope.d.ts.map +0 -1
  504. package/dist/runtime/component-scope.js.map +0 -1
  505. package/dist/runtime/context.d.ts.map +0 -1
  506. package/dist/runtime/context.js.map +0 -1
  507. package/dist/runtime/control.d.ts.map +0 -1
  508. package/dist/runtime/control.js.map +0 -1
  509. package/dist/runtime/derive.d.ts.map +0 -1
  510. package/dist/runtime/derive.js.map +0 -1
  511. package/dist/runtime/dev-namespace.d.ts.map +0 -1
  512. package/dist/runtime/dev-namespace.js.map +0 -1
  513. package/dist/runtime/effect.d.ts.map +0 -1
  514. package/dist/runtime/effect.js.map +0 -1
  515. package/dist/runtime/error-boundary.d.ts.map +0 -1
  516. package/dist/runtime/error-boundary.js.map +0 -1
  517. package/dist/runtime/events.d.ts.map +0 -1
  518. package/dist/runtime/events.js.map +0 -1
  519. package/dist/runtime/execution-model.d.ts.map +0 -1
  520. package/dist/runtime/execution-model.js.map +0 -1
  521. package/dist/runtime/fastlane.d.ts.map +0 -1
  522. package/dist/runtime/fastlane.js.map +0 -1
  523. package/dist/runtime/for-bench.d.ts.map +0 -1
  524. package/dist/runtime/for-bench.js.map +0 -1
  525. package/dist/runtime/for-internal.d.ts.map +0 -1
  526. package/dist/runtime/for-internal.js.map +0 -1
  527. package/dist/runtime/for-reconcile.d.ts.map +0 -1
  528. package/dist/runtime/for-reconcile.js.map +0 -1
  529. package/dist/runtime/for-scopes.d.ts.map +0 -1
  530. package/dist/runtime/for-scopes.js.map +0 -1
  531. package/dist/runtime/for-signals.d.ts.map +0 -1
  532. package/dist/runtime/for-signals.js.map +0 -1
  533. package/dist/runtime/for-types.d.ts.map +0 -1
  534. package/dist/runtime/lifecycle-operations.d.ts.map +0 -1
  535. package/dist/runtime/lifecycle-operations.js.map +0 -1
  536. package/dist/runtime/perf-metrics.d.ts.map +0 -1
  537. package/dist/runtime/perf-metrics.js.map +0 -1
  538. package/dist/runtime/portal.d.ts.map +0 -1
  539. package/dist/runtime/portal.js.map +0 -1
  540. package/dist/runtime/readable.d.ts.map +0 -1
  541. package/dist/runtime/readable.js.map +0 -1
  542. package/dist/runtime/resource-cell.js.map +0 -1
  543. package/dist/runtime/resource-operation.d.ts.map +0 -1
  544. package/dist/runtime/resource-operation.js.map +0 -1
  545. package/dist/runtime/runtime.d.ts.map +0 -1
  546. package/dist/runtime/runtime.js.map +0 -1
  547. package/dist/runtime/scheduler.d.ts.map +0 -1
  548. package/dist/runtime/scheduler.js.map +0 -1
  549. package/dist/runtime/selector-store.js.map +0 -1
  550. package/dist/runtime/selector.d.ts.map +0 -1
  551. package/dist/runtime/selector.js.map +0 -1
  552. package/dist/runtime/snapshot-source.d.ts.map +0 -1
  553. package/dist/runtime/snapshot-source.js.map +0 -1
  554. package/dist/runtime/state.d.ts.map +0 -1
  555. package/dist/runtime/state.js.map +0 -1
  556. package/dist/ssg/batch-render.js.map +0 -1
  557. package/dist/ssg/create-static-gen.d.ts.map +0 -1
  558. package/dist/ssg/create-static-gen.js.map +0 -1
  559. package/dist/ssg/generate-metadata.js.map +0 -1
  560. package/dist/ssg/generation-plan.js.map +0 -1
  561. package/dist/ssg/incremental-manifest.js.map +0 -1
  562. package/dist/ssg/resolve-ssg-data.js.map +0 -1
  563. package/dist/ssg/route-utils.js.map +0 -1
  564. package/dist/ssg/static-routes.js.map +0 -1
  565. package/dist/ssg/types.d.ts.map +0 -1
  566. package/dist/ssg/write-static-files.js.map +0 -1
  567. package/dist/ssr/attrs.js.map +0 -1
  568. package/dist/ssr/boundaries.js.map +0 -1
  569. package/dist/ssr/component-runtime.js.map +0 -1
  570. package/dist/ssr/context.d.ts.map +0 -1
  571. package/dist/ssr/context.js.map +0 -1
  572. package/dist/ssr/errors.d.ts.map +0 -1
  573. package/dist/ssr/errors.js.map +0 -1
  574. package/dist/ssr/escape.js.map +0 -1
  575. package/dist/ssr/hydration-data.js.map +0 -1
  576. package/dist/ssr/hydration-verify.d.ts.map +0 -1
  577. package/dist/ssr/hydration-verify.js.map +0 -1
  578. package/dist/ssr/index-internal.d.ts.map +0 -1
  579. package/dist/ssr/index-internal.js.map +0 -1
  580. package/dist/ssr/render-keys.js.map +0 -1
  581. package/dist/ssr/render-resolved.d.ts.map +0 -1
  582. package/dist/ssr/render-resolved.js.map +0 -1
  583. package/dist/ssr/render-sync.d.ts.map +0 -1
  584. package/dist/ssr/render-sync.js.map +0 -1
  585. package/dist/ssr/route-policy-resolution.js.map +0 -1
  586. package/dist/ssr/route-render.d.ts.map +0 -1
  587. package/dist/ssr/route-render.js.map +0 -1
  588. package/dist/ssr/sink.d.ts.map +0 -1
  589. package/dist/ssr/sink.js.map +0 -1
  590. package/dist/ssr/types.d.ts.map +0 -1
  591. package/dist/ssr/verify-hydration.js.map +0 -1
  592. package/dist/testing/index.d.ts.map +0 -1
  593. package/dist/testing/index.js.map +0 -1
@@ -0,0 +1,51 @@
1
+ import { logger } from "../common/logger.js";
2
+ import { isPromiseLike } from "../common/promise.js";
3
+ //#region src/runtime/lifecycle-operation-settlement.ts
4
+ function settleLifecycleOperationResult(instance, lifecycleGeneration, result) {
5
+ if (isPromiseLike(result)) Promise.resolve(result).then((cleanup) => {
6
+ if (typeof cleanup === "function") {
7
+ if (instance.lifecycleGeneration === lifecycleGeneration && instance.mounted) {
8
+ (instance.cleanupFns ??= []).push(cleanup);
9
+ return;
10
+ }
11
+ try {
12
+ cleanup();
13
+ } catch (err) {
14
+ logger.error("[Askr] async mount cleanup failed:", err);
15
+ }
16
+ }
17
+ }, (err) => {
18
+ logger.error("[Askr] async mount operation failed:", err);
19
+ });
20
+ else if (typeof result === "function") (instance.cleanupFns ??= []).push(result);
21
+ }
22
+ function executeOperations(instance, operations) {
23
+ if (operations.length === 0) return [];
24
+ const lifecycleGeneration = instance.lifecycleGeneration;
25
+ const errors = [];
26
+ for (const operation of operations) try {
27
+ settleLifecycleOperationResult(instance, lifecycleGeneration, operation());
28
+ } catch (error) {
29
+ errors.push(error);
30
+ }
31
+ return errors;
32
+ }
33
+ function discardCommitOperations(instance) {
34
+ instance.commitOperations = [];
35
+ }
36
+ function executeCommittedLifecycleOperations(instance, wasFirstMount) {
37
+ const errors = [];
38
+ if (wasFirstMount && (instance.mountOperations?.length ?? 0) > 0) {
39
+ const operations = instance.mountOperations;
40
+ instance.mountOperations = [];
41
+ errors.push(...executeOperations(instance, operations));
42
+ }
43
+ if ((instance.commitOperations?.length ?? 0) > 0) {
44
+ const operations = instance.commitOperations;
45
+ instance.commitOperations = [];
46
+ errors.push(...executeOperations(instance, operations));
47
+ }
48
+ if (errors.length > 0) throw new AggregateError(errors, `Committed lifecycle operations failed for ${instance.id}`);
49
+ }
50
+ //#endregion
51
+ export { discardCommitOperations, executeCommittedLifecycleOperations };
@@ -27,5 +27,4 @@ declare function task(fn: () => void | (() => void) | PromiseLike<void | (() =>
27
27
  */
28
28
  declare function capture<T>(fn: () => T): () => T;
29
29
  //#endregion
30
- export { ActivityPredicate, TimerOptions, capture, documentVisible, on, routeActive, stream, task, timer, windowFocused };
31
- //# sourceMappingURL=lifecycle-operations.d.ts.map
30
+ export { ActivityPredicate, TimerOptions, capture, documentVisible, on, routeActive, stream, task, timer, windowFocused };
@@ -12,14 +12,15 @@ function allPredicatesPass(predicates) {
12
12
  return true;
13
13
  }
14
14
  function getLifecycleSlot(instance, index, kind, create) {
15
- const existing = instance.lifecycleSlots[index];
15
+ const lifecycleSlots = instance.lifecycleSlots ??= [];
16
+ const existing = lifecycleSlots[index];
16
17
  if (existing) {
17
18
  const slot = existing;
18
19
  if (slot.kind !== kind) throw new Error(`${kind}() lifecycle order violation: slot ${index} already belongs to ${slot.kind}(). Keep lifecycle primitives in a stable top-level order.`);
19
20
  return existing;
20
21
  }
21
22
  const slot = create();
22
- instance.lifecycleSlots[index] = slot;
23
+ lifecycleSlots[index] = slot;
23
24
  return slot;
24
25
  }
25
26
  function routeActive(pathOrPaths) {
@@ -63,7 +64,7 @@ function commitListenerSlot(instance, slot) {
63
64
  }
64
65
  if (!slot.cleanupRegistered) {
65
66
  slot.cleanupRegistered = true;
66
- instance.cleanupFns.push(() => {
67
+ (instance.cleanupFns ??= []).push(() => {
67
68
  detachListenerSlot(slot);
68
69
  slot.cleanupRegistered = false;
69
70
  });
@@ -122,7 +123,7 @@ function commitTimerSlot(instance, slot) {
122
123
  }
123
124
  if (!slot.cleanupRegistered) {
124
125
  slot.cleanupRegistered = true;
125
- instance.cleanupFns.push(() => {
126
+ (instance.cleanupFns ??= []).push(() => {
126
127
  stopTimerSlot(slot);
127
128
  slot.cleanupRegistered = false;
128
129
  });
@@ -191,5 +192,3 @@ function capture(fn) {
191
192
  }
192
193
  //#endregion
193
194
  export { capture, documentVisible, on, routeActive, stream, task, timer, windowFocused };
194
-
195
- //# sourceMappingURL=lifecycle-operations.js.map
@@ -17,10 +17,11 @@ type PerfMetrics = {
17
17
  ssgWorkerRenderTimeMs: number;
18
18
  ssgWriteTimeMs: number;
19
19
  };
20
- declare function getPerfMetricsStore(): PerfMetrics | null;
21
- declare function incrementPerfMetric(key: 'selectorInvalidations' | 'selectorCandidateReads' | 'reactivePropReevaluations' | 'skippedDomPropWrites' | 'classListPatchOps' | 'delegatedAncestorHops' | 'hydrationBoundaryActivations' | 'ssrTagCacheHits' | 'ssgWorkerCount', delta?: number): void;
22
- declare function addPerfDuration(key: 'ssgRenderTimeMs' | 'ssgWorkerRenderTimeMs' | 'ssgWriteTimeMs', deltaMs: number): void;
23
- declare function recordSchedulerFlushTaskCount(taskCount: number): void;
24
- declare function getPerfMetrics(): Readonly<PerfMetrics> | undefined;
25
- declare function resetPerfMetrics(): void;
26
- //# sourceMappingURL=perf-metrics.d.ts.map
20
+ type IncrementPerfMetric = (key: 'selectorInvalidations' | 'selectorCandidateReads' | 'reactivePropReevaluations' | 'skippedDomPropWrites' | 'classListPatchOps' | 'delegatedAncestorHops' | 'hydrationBoundaryActivations' | 'ssrTagCacheHits' | 'ssgWorkerCount', delta?: number) => void;
21
+ type AddPerfDuration = (key: 'ssgRenderTimeMs' | 'ssgWorkerRenderTimeMs' | 'ssgWriteTimeMs', deltaMs: number) => void;
22
+ declare const getPerfMetricsStore: () => PerfMetrics | null;
23
+ declare const incrementPerfMetric: IncrementPerfMetric;
24
+ declare const addPerfDuration: AddPerfDuration;
25
+ declare const recordSchedulerFlushTaskCount: (taskCount: number) => void;
26
+ declare const getPerfMetrics: () => Readonly<PerfMetrics> | undefined;
27
+ declare const resetPerfMetrics: () => void;
@@ -1,70 +1,6 @@
1
- import { isDevelopmentEnvironment, isRuntimeEnvFlagEnabled } from "../common/env.js";
2
- //#region src/runtime/perf-metrics.ts
3
- const BENCH_BUILD_ENABLED = isRuntimeEnvFlagEnabled("ASKR_BENCH");
4
- let cachedPerfStore;
5
- function createInitialPerfMetrics() {
6
- return {
7
- selectorInvalidations: 0,
8
- selectorCandidateReads: 0,
9
- reactivePropReevaluations: 0,
10
- skippedDomPropWrites: 0,
11
- classListPatchOps: 0,
12
- delegatedAncestorHops: 0,
13
- hydrationBoundaryActivations: 0,
14
- ssrTagCacheHits: 0,
15
- lastSchedulerTaskCountPerFlush: 0,
16
- maxSchedulerTaskCountPerFlush: 0,
17
- schedulerFlushCount: 0,
18
- schedulerTaskExecutions: 0,
19
- ssgWorkerCount: 0,
20
- ssgRenderTimeMs: 0,
21
- ssgWorkerRenderTimeMs: 0,
22
- ssgWriteTimeMs: 0
23
- };
24
- }
25
- function shouldCollectPerfMetrics() {
26
- if (isDevelopmentEnvironment()) return true;
27
- if (!BENCH_BUILD_ENABLED) return false;
28
- try {
29
- return !!globalThis.__ASKR_BENCH__;
30
- } catch {
31
- return false;
32
- }
33
- }
34
- function getPerfStore() {
35
- if (cachedPerfStore) return cachedPerfStore;
36
- if (!shouldCollectPerfMetrics()) return null;
37
- try {
38
- const g = globalThis;
39
- if (!g.__ASKR_PERF__) g.__ASKR_PERF__ = createInitialPerfMetrics();
40
- cachedPerfStore = g.__ASKR_PERF__;
41
- return cachedPerfStore;
42
- } catch {
43
- return null;
44
- }
45
- }
46
- function getPerfMetricsStore() {
47
- return getPerfStore();
48
- }
49
- function incrementPerfMetric(key, delta = 1) {
50
- const store = getPerfStore();
51
- if (!store) return;
52
- store[key] += delta;
53
- }
54
- function addPerfDuration(key, deltaMs) {
55
- const store = getPerfStore();
56
- if (!store) return;
57
- store[key] += deltaMs;
58
- }
59
- function recordSchedulerFlushTaskCount(taskCount) {
60
- const store = getPerfStore();
61
- if (!store) return;
62
- store.lastSchedulerTaskCountPerFlush = taskCount;
63
- store.maxSchedulerTaskCountPerFlush = Math.max(store.maxSchedulerTaskCountPerFlush, taskCount);
64
- store.schedulerFlushCount += 1;
65
- store.schedulerTaskExecutions += taskCount;
66
- }
1
+ const getPerfMetricsStore = () => null;
2
+ const incrementPerfMetric = () => {};
3
+ const addPerfDuration = () => {};
4
+ const recordSchedulerFlushTaskCount = () => {};
67
5
  //#endregion
68
6
  export { addPerfDuration, getPerfMetricsStore, incrementPerfMetric, recordSchedulerFlushTaskCount };
69
-
70
- //# sourceMappingURL=perf-metrics.js.map
@@ -18,5 +18,4 @@ declare function clearDefaultPortalForInstance(instance: ComponentInstance): voi
18
18
  declare const DefaultPortal: Portal<RenderableChild>;
19
19
  declare function Portal(props: PortalProps): null;
20
20
  //#endregion
21
- export { DefaultPortal, Portal, PortalProps, definePortal };
22
- //# sourceMappingURL=portal.d.ts.map
21
+ export { DefaultPortal, Portal, PortalProps, definePortal };
@@ -1,6 +1,9 @@
1
- import { enqueueRuntimeTask } from "./access.js";
1
+ import { enqueueRuntimeTask, getRuntimeRenderer } from "./access.js";
2
2
  import { markReactivePropsDirtySource, markReadableDerivedSubscribersDirty, notifyReadableReaders, recordReadableRead } from "./readable.js";
3
3
  import { getCurrentComponentInstance, getCurrentPortalScope } from "./component-scope.js";
4
+ import { cleanupComponent } from "./component-cleanup.js";
5
+ import { getCurrentLifecycleCommitBatch, registerLifecycleTransaction } from "./lifecycle-batch.js";
6
+ import "./component-lifecycle.js";
4
7
  import "./component.js";
5
8
  //#region src/runtime/portal.ts
6
9
  function createPortalSlot() {
@@ -50,6 +53,8 @@ function definePortal() {
50
53
  let _defaultPortalStates = /* @__PURE__ */ new Map();
51
54
  let _hasPendingDefaultPortalValue = false;
52
55
  let _pendingDefaultPortalValue = void 0;
56
+ let _pendingDefaultPortalWrites = /* @__PURE__ */ new WeakMap();
57
+ const _batchPortalWrites = /* @__PURE__ */ new WeakMap();
53
58
  function createExplicitHostSource(readCount) {
54
59
  let source = (() => {
55
60
  recordReadableRead(source);
@@ -69,6 +74,7 @@ function createDefaultPortalState() {
69
74
  const state = {
70
75
  portal: definePortal(),
71
76
  owner: null,
77
+ host: null,
72
78
  cleanupOwners: /* @__PURE__ */ new WeakSet(),
73
79
  explicitHostOwners: /* @__PURE__ */ new Set(),
74
80
  explicitHostCleanupOwners: /* @__PURE__ */ new WeakSet(),
@@ -91,6 +97,35 @@ function disposeDefaultPortalScope(scope) {
91
97
  function isComponentPortalScope(scope) {
92
98
  return Array.isArray(scope.cleanupFns);
93
99
  }
100
+ function isEmptyPortalValue(value) {
101
+ return value === null || value === void 0 || value === false;
102
+ }
103
+ function detachDefaultPortalHostOutput(state) {
104
+ const host = state.host;
105
+ const target = host?.target;
106
+ const parent = target?.parentNode;
107
+ if (!host || !target || !parent) return;
108
+ const portalHost = target;
109
+ const hostedInstances = new Set(portalHost.__ASKR_INSTANCES ?? []);
110
+ if (portalHost.__ASKR_INSTANCE) hostedInstances.add(portalHost.__ASKR_INSTANCE);
111
+ for (const instance of hostedInstances) if (instance !== host) cleanupComponent(instance);
112
+ try {
113
+ delete portalHost.__ASKR_INSTANCE;
114
+ delete portalHost.__ASKR_INSTANCES;
115
+ delete portalHost.__ASKR_WRAPPER_HOST;
116
+ } catch {}
117
+ getRuntimeRenderer().teardownNodeSubtree(target);
118
+ const placeholder = document.createComment("");
119
+ placeholder.__ASKR_INSTANCE = host;
120
+ parent.replaceChild(placeholder, target);
121
+ host.target = null;
122
+ host._placeholder = placeholder;
123
+ }
124
+ function applyDefaultPortalWrite(state, children, owner) {
125
+ state.portal.render({ children });
126
+ state.owner = owner;
127
+ if (isEmptyPortalValue(children)) detachDefaultPortalHostOutput(state);
128
+ }
94
129
  function isStaleDefaultPortalScope(scope) {
95
130
  if (!isComponentPortalScope(scope)) return false;
96
131
  if (scope.target && scope.target.isConnected === false) return true;
@@ -125,10 +160,70 @@ function writeDefaultPortal(props, owner) {
125
160
  return;
126
161
  }
127
162
  const state = getDefaultPortalState(scope);
163
+ const batch = getCurrentLifecycleCommitBatch();
164
+ if (batch) {
165
+ let writes = _batchPortalWrites.get(batch);
166
+ if (!writes) {
167
+ writes = /* @__PURE__ */ new Map();
168
+ _batchPortalWrites.set(batch, writes);
169
+ }
170
+ const existing = writes.get(state);
171
+ if (existing) {
172
+ existing.owner = owner;
173
+ existing.children = props.children;
174
+ return;
175
+ }
176
+ const transaction = {
177
+ state,
178
+ owner,
179
+ children: props.children,
180
+ batch
181
+ };
182
+ if (registerLifecycleTransaction(state, () => {
183
+ if (_batchPortalWrites.get(batch)?.get(state) !== transaction) return;
184
+ _batchPortalWrites.get(batch)?.delete(state);
185
+ applyDefaultPortalWrite(state, transaction.children, transaction.owner);
186
+ }, () => {
187
+ if (_batchPortalWrites.get(batch)?.get(state) === transaction) _batchPortalWrites.get(batch)?.delete(state);
188
+ }, () => {
189
+ const parentBatch = batch.parent;
190
+ const parentWrite = parentBatch ? _batchPortalWrites.get(parentBatch)?.get(state) : void 0;
191
+ if (parentWrite) {
192
+ parentWrite.owner = transaction.owner;
193
+ parentWrite.children = transaction.children;
194
+ }
195
+ _batchPortalWrites.get(batch)?.delete(state);
196
+ })) {
197
+ writes.set(state, transaction);
198
+ return;
199
+ }
200
+ }
201
+ const pending = _pendingDefaultPortalWrites.get(state);
202
+ if (pending) {
203
+ pending.owner = owner;
204
+ pending.children = props.children;
205
+ return;
206
+ }
207
+ const transaction = {
208
+ state,
209
+ owner,
210
+ children: props.children
211
+ };
212
+ if (registerLifecycleTransaction(transaction, () => {
213
+ if (_pendingDefaultPortalWrites.get(state) !== transaction) return;
214
+ _pendingDefaultPortalWrites.delete(state);
215
+ _hasPendingDefaultPortalValue = false;
216
+ _pendingDefaultPortalValue = void 0;
217
+ applyDefaultPortalWrite(state, transaction.children, transaction.owner);
218
+ }, () => {
219
+ if (_pendingDefaultPortalWrites.get(state) === transaction) _pendingDefaultPortalWrites.delete(state);
220
+ })) {
221
+ _pendingDefaultPortalWrites.set(state, transaction);
222
+ return;
223
+ }
128
224
  _hasPendingDefaultPortalValue = false;
129
225
  _pendingDefaultPortalValue = void 0;
130
- state.portal.render(props);
131
- state.owner = owner;
226
+ applyDefaultPortalWrite(state, props.children, owner);
132
227
  }
133
228
  function applyPendingDefaultPortalValue(scope) {
134
229
  if (!_hasPendingDefaultPortalValue) return;
@@ -144,13 +239,10 @@ function registerDefaultPortalOwner(owner) {
144
239
  const state = getDefaultPortalState(scope);
145
240
  if (state.cleanupOwners.has(owner)) return;
146
241
  state.cleanupOwners.add(owner);
147
- owner.cleanupFns.push(() => {
242
+ (owner.cleanupFns ??= []).push(() => {
148
243
  const currentState = _defaultPortalStates.get(scope);
149
244
  if (!currentState) return;
150
- if (currentState.owner === owner) {
151
- currentState.portal.render({ children: void 0 });
152
- currentState.owner = null;
153
- }
245
+ if (currentState.owner === owner) applyDefaultPortalWrite(currentState, void 0, null);
154
246
  currentState.cleanupOwners.delete(owner);
155
247
  });
156
248
  }
@@ -162,7 +254,7 @@ function registerExplicitDefaultPortalHost(scope, state, owner) {
162
254
  }
163
255
  if (!state.explicitHostCleanupOwners.has(owner)) {
164
256
  state.explicitHostCleanupOwners.add(owner);
165
- owner.cleanupFns.push(() => {
257
+ (owner.cleanupFns ??= []).push(() => {
166
258
  if (_defaultPortalStates.get(scope) !== state) return;
167
259
  state.explicitHostCleanupOwners.delete(owner);
168
260
  enqueueRuntimeTask(() => {
@@ -182,6 +274,7 @@ function clearDefaultPortalForInstance(instance) {
182
274
  _pendingDefaultPortalValue = void 0;
183
275
  state.portal.render({ children: void 0 });
184
276
  state.owner = null;
277
+ detachDefaultPortalHostOutput(state);
185
278
  }
186
279
  const DefaultPortal = (() => {
187
280
  function Host(props) {
@@ -189,6 +282,7 @@ const DefaultPortal = (() => {
189
282
  const scope = resolveDefaultPortalScope(owner);
190
283
  if (!scope) return null;
191
284
  const state = getDefaultPortalState(scope);
285
+ state.host = owner;
192
286
  if (!(props?.__askrAutoDefaultPortal === true)) registerExplicitDefaultPortalHost(scope, state, owner);
193
287
  else if (readExplicitDefaultPortalHosts(state) > 0) return null;
194
288
  applyPendingDefaultPortalValue(scope);
@@ -209,5 +303,3 @@ function Portal(props) {
209
303
  }
210
304
  //#endregion
211
305
  export { DefaultPortal, Portal, clearDefaultPortalForInstance, definePortal, disposeDefaultPortalScope };
212
-
213
- //# sourceMappingURL=portal.js.map
@@ -12,9 +12,15 @@ interface ReadableSource<T = unknown> {
12
12
  _derivedSubscribers?: Set<DerivedSubscriber>;
13
13
  _version?: number;
14
14
  }
15
+ interface FineGrainedReadCollector {
16
+ _pendingFineGrainedReadSource: ReadableSource<unknown> | null;
17
+ _pendingFineGrainedReadSources: ReadableSource<unknown> | ReadableSource<unknown>[] | Set<ReadableSource<unknown>> | null;
18
+ }
15
19
  declare function markReadableUsage(source: unknown): void;
16
20
  declare function recordReadableRead(source: ReadableSource<unknown>): void;
17
- declare function withFineGrainedReadTracking<T>(pendingSources: Set<ReadableSource<unknown>>, fn: () => T): T;
21
+ declare function withFineGrainedReadTracking<T>(collector: FineGrainedReadCollector, fn: () => T): T;
22
+ /** @internal Whether the active grouped effect coalesces item-property reads. */
23
+ declare function shouldCoalesceFineGrainedItemReads(): boolean;
18
24
  declare function finalizeReadableSubscriptions(instance: ComponentInstance): void;
19
25
  declare function finalizeReadableSubscriptionsFromSnapshot(instance: ComponentInstance, token: number | undefined, newSet: Set<ReadableSource<unknown>> | undefined, pendingReadSourceVersions?: Map<ReadableSource<unknown>, number> | undefined): void;
20
26
  declare function cleanupReadableSubscriptions(instance: ComponentInstance): void;
@@ -23,7 +29,6 @@ declare function syncDerivedDependencySubscriptions(subscriber: DerivedSubscribe
23
29
  declare function clearDerivedDependencySubscriptions(subscriber: DerivedSubscriber, sources: Set<ReadableSource<unknown>>): void;
24
30
  declare function markReadableDerivedSubscribersDirty(source: ReadableSource<unknown>): void;
25
31
  declare function markReactivePropsDirtySource(source: ReadableSource<unknown>): void;
26
- declare function notifyReadableReaders(source: ReadableSource<unknown>, skipInstance?: ComponentInstance | null): boolean;
32
+ declare function notifyReadableReaders(source: ReadableSource<unknown>, skipInstance?: ComponentInstance | null, skipOwnedBy?: ComponentInstance | null): boolean;
27
33
  //#endregion
28
- export { DerivedSubscriber, ReadableSource };
29
- //# sourceMappingURL=readable.d.ts.map
34
+ export { DerivedSubscriber, FineGrainedReadCollector, ReadableSource };
@@ -1,17 +1,15 @@
1
1
  import { enqueueRuntimeTask, markRuntimeReactivePropsDirtySource } from "./access.js";
2
2
  import { getCurrentInstance } from "./component-scope.js";
3
3
  import "./component.js";
4
- //#region src/runtime/readable.ts
5
4
  function markReadableUsage(source) {
6
5
  if (source && typeof source === "function" && ("_hasBeenRead" in source || "_readers" in source)) {
7
6
  const readable = source;
8
7
  readable._hasBeenRead = true;
9
- readable._hasEverBeenRead = true;
10
8
  }
11
9
  }
12
10
  let currentDerivedSubscriber = null;
13
11
  let suppressComponentReadTrackingDepth = 0;
14
- let currentFineGrainedReadSources = null;
12
+ let currentFineGrainedReadCollector = null;
15
13
  function scheduleReadableInstanceUpdate(instance) {
16
14
  if (instance.hasPendingUpdate) return;
17
15
  instance.hasPendingUpdate = true;
@@ -26,9 +24,21 @@ function scheduleReadableInstanceUpdate(instance) {
26
24
  });
27
25
  }
28
26
  function recordReadableRead(source) {
29
- source._hasEverBeenRead = true;
30
- if (currentFineGrainedReadSources) {
31
- currentFineGrainedReadSources.add(source);
27
+ if (currentFineGrainedReadCollector) {
28
+ const first = currentFineGrainedReadCollector._pendingFineGrainedReadSource;
29
+ if (!first) currentFineGrainedReadCollector._pendingFineGrainedReadSource = source;
30
+ else if (first !== source) {
31
+ let sources = currentFineGrainedReadCollector._pendingFineGrainedReadSources;
32
+ if (!sources) currentFineGrainedReadCollector._pendingFineGrainedReadSources = source;
33
+ else if (Array.isArray(sources)) {
34
+ if (!sources.includes(source)) sources.push(source);
35
+ } else if (sources instanceof Set) sources.add(source);
36
+ else if (sources !== source) currentFineGrainedReadCollector._pendingFineGrainedReadSources = [
37
+ first,
38
+ sources,
39
+ source
40
+ ];
41
+ }
32
42
  return;
33
43
  }
34
44
  if (currentDerivedSubscriber) {
@@ -48,15 +58,19 @@ function recordReadableRead(source) {
48
58
  }
49
59
  pendingVersions.set(source, sourceVersion);
50
60
  }
51
- function withFineGrainedReadTracking(pendingSources, fn) {
52
- const previousPendingSources = currentFineGrainedReadSources;
53
- currentFineGrainedReadSources = pendingSources;
61
+ function withFineGrainedReadTracking(collector, fn) {
62
+ const previousCollector = currentFineGrainedReadCollector;
63
+ currentFineGrainedReadCollector = collector;
54
64
  try {
55
- return fn();
65
+ return fn.call(collector);
56
66
  } finally {
57
- currentFineGrainedReadSources = previousPendingSources;
67
+ currentFineGrainedReadCollector = previousCollector;
58
68
  }
59
69
  }
70
+ /** @internal Whether the active grouped effect coalesces item-property reads. */
71
+ function shouldCoalesceFineGrainedItemReads() {
72
+ return (currentFineGrainedReadCollector?._owner)?._coalesceForItemReads === true;
73
+ }
60
74
  function finalizeReadableSubscriptions(instance) {
61
75
  const newSet = instance._pendingReadSources;
62
76
  const token = instance._currentRenderToken;
@@ -88,7 +102,7 @@ function finalizeReadableSubscriptionsFromSnapshot(instance, token, newSet, pend
88
102
  }
89
103
  readers.set(instance, instance.lastRenderToken ?? 0);
90
104
  }
91
- instance._lastReadSources = newSet ?? /* @__PURE__ */ new Set();
105
+ instance._lastReadSources = newSet?.size ? newSet : void 0;
92
106
  if (needsFollowUpUpdate) scheduleReadableInstanceUpdate(instance);
93
107
  }
94
108
  function cleanupReadableSubscriptions(instance) {
@@ -99,7 +113,7 @@ function cleanupReadableSubscriptions(instance) {
99
113
  return;
100
114
  }
101
115
  for (const source of sources) source._readers?.delete(instance);
102
- instance._lastReadSources = /* @__PURE__ */ new Set();
116
+ instance._lastReadSources = void 0;
103
117
  instance._pendingReadSources = void 0;
104
118
  instance._pendingReadSourceVersions = void 0;
105
119
  }
@@ -139,13 +153,25 @@ function markReactivePropsDirtySource(source) {
139
153
  markRuntimeReactivePropsDirtySource(source);
140
154
  } catch {}
141
155
  }
142
- function notifyReadableReaders(source, skipInstance) {
156
+ function notifyReadableReaders(source, skipInstance, skipOwnedBy) {
143
157
  source._version = (source._version ?? 0) + 1;
144
158
  const readers = source._readers;
145
159
  let didScheduleUpdate = false;
146
160
  if (!readers || readers.size === 0) return false;
147
161
  for (const [instance, token] of readers) {
148
162
  if (skipInstance && instance === skipInstance) continue;
163
+ if (skipOwnedBy) {
164
+ let owner = instance;
165
+ let isOwned = false;
166
+ while (owner) {
167
+ if (owner === skipOwnedBy) {
168
+ isOwned = true;
169
+ break;
170
+ }
171
+ owner = owner.parentInstance;
172
+ }
173
+ if (isOwned) continue;
174
+ }
149
175
  if (instance.lastRenderToken !== token) continue;
150
176
  if (instance.hasPendingUpdate) continue;
151
177
  scheduleReadableInstanceUpdate(instance);
@@ -154,6 +180,4 @@ function notifyReadableReaders(source, skipInstance) {
154
180
  return didScheduleUpdate;
155
181
  }
156
182
  //#endregion
157
- export { cleanupReadableSubscriptions, clearDerivedDependencySubscriptions, finalizeReadableSubscriptions, finalizeReadableSubscriptionsFromSnapshot, markReactivePropsDirtySource, markReadableDerivedSubscribersDirty, markReadableUsage, notifyReadableReaders, recordReadableRead, syncDerivedDependencySubscriptions, withDerivedReadTracking, withFineGrainedReadTracking };
158
-
159
- //# sourceMappingURL=readable.js.map
183
+ export { cleanupReadableSubscriptions, clearDerivedDependencySubscriptions, finalizeReadableSubscriptions, finalizeReadableSubscriptionsFromSnapshot, markReactivePropsDirtySource, markReadableDerivedSubscribersDirty, markReadableUsage, notifyReadableReaders, recordReadableRead, shouldCoalesceFineGrainedItemReads, syncDerivedDependencySubscriptions, withDerivedReadTracking, withFineGrainedReadTracking };
@@ -59,7 +59,7 @@ var ResourceCell = class {
59
59
  result = withAsyncResourceContext(this.resourceFrame, () => this.fn({ signal: controller.signal }));
60
60
  } catch (err) {
61
61
  this.pending = false;
62
- this.error = err;
62
+ this.error = err instanceof Error ? err : new Error(String(err));
63
63
  if (notify) this.notifySubscribers();
64
64
  return;
65
65
  }
@@ -84,7 +84,7 @@ var ResourceCell = class {
84
84
  if (this.controller !== controller) return;
85
85
  if (controller.signal.aborted || err instanceof Error && err.name === "AbortError" || typeof DOMException !== "undefined" && err instanceof DOMException && err.name === "AbortError") return;
86
86
  this.pending = false;
87
- this.error = err;
87
+ this.error = err instanceof Error ? err : new Error(String(err));
88
88
  try {
89
89
  if (this.ownerName) logger.error(`[Askr] Async resource error in ${this.ownerName}:`, err);
90
90
  else logger.error("[Askr] Async resource error:", err);
@@ -110,5 +110,3 @@ var ResourceCell = class {
110
110
  };
111
111
  //#endregion
112
112
  export { ResourceCell };
113
-
114
- //# sourceMappingURL=resource-cell.js.map
@@ -9,5 +9,4 @@ declare function resource<T, const TDeps extends readonly unknown[]>(fn: (opts:
9
9
  signal: AbortSignal;
10
10
  }) => PromiseLike<T> | T, deps: TDeps): ResourceResult<T>;
11
11
  //#endregion
12
- export { ResourceResult, resource };
13
- //# sourceMappingURL=resource-operation.d.ts.map
12
+ export { ResourceResult, resource };
@@ -1,6 +1,7 @@
1
1
  import { enqueueRuntimeLane } from "./access.js";
2
2
  import { getCurrentContextFrame } from "./context.js";
3
3
  import { getCurrentComponentInstance } from "./component-scope.js";
4
+ import { registerCommitOperationForInstance } from "./component-lifecycle.js";
4
5
  import "./component.js";
5
6
  import { brandSnapshotSource } from "./snapshot-source.js";
6
7
  import { SSRDataMissingError } from "../common/ssr-errors.js";
@@ -95,27 +96,29 @@ function resource(fn, deps = []) {
95
96
  }
96
97
  } else {
97
98
  const scheduledGeneration = cell.generation;
98
- enqueueRuntimeLane("post", () => {
99
- if (!inst.notifyUpdate || cell.generation !== scheduledGeneration) return;
100
- try {
101
- cell.start(false, false);
102
- } catch (err) {
103
- const cur = holder();
104
- cur.snapshot.value = cell.value;
105
- cur.snapshot.pending = cell.pending;
106
- cur.snapshot.error = err ?? null;
107
- holder.set(cur);
108
- inst.notifyUpdate?.();
109
- return;
110
- }
111
- if (!cell.pending) {
112
- const cur = holder();
113
- cur.snapshot.value = cell.value;
114
- cur.snapshot.pending = cell.pending;
115
- cur.snapshot.error = cell.error;
116
- holder.set(cur);
117
- inst.notifyUpdate?.();
118
- }
99
+ registerCommitOperationForInstance(inst, () => {
100
+ enqueueRuntimeLane("post", () => {
101
+ if (!inst.notifyUpdate || cell.generation !== scheduledGeneration) return;
102
+ try {
103
+ cell.start(false, false);
104
+ } catch (err) {
105
+ const cur = holder();
106
+ cur.snapshot.value = cell.value;
107
+ cur.snapshot.pending = cell.pending;
108
+ cur.snapshot.error = err ?? null;
109
+ holder.set(cur);
110
+ inst.notifyUpdate?.();
111
+ return;
112
+ }
113
+ if (!cell.pending) {
114
+ const cur = holder();
115
+ cur.snapshot.value = cell.value;
116
+ cur.snapshot.pending = cell.pending;
117
+ cur.snapshot.error = cell.error;
118
+ holder.set(cur);
119
+ inst.notifyUpdate?.();
120
+ }
121
+ });
119
122
  });
120
123
  }
121
124
  }
@@ -139,17 +142,19 @@ function resource(fn, deps = []) {
139
142
  }
140
143
  } else {
141
144
  const scheduledGeneration = cell.generation;
142
- enqueueRuntimeLane("post", () => {
143
- if (!inst.notifyUpdate || cell.generation !== scheduledGeneration) return;
144
- cell.start(false, false);
145
- if (!cell.pending) {
146
- const cur = holder();
147
- cur.snapshot.value = cell.value;
148
- cur.snapshot.pending = cell.pending;
149
- cur.snapshot.error = cell.error;
150
- holder.set(cur);
151
- inst.notifyUpdate?.();
152
- }
145
+ registerCommitOperationForInstance(inst, () => {
146
+ enqueueRuntimeLane("post", () => {
147
+ if (!inst.notifyUpdate || cell.generation !== scheduledGeneration) return;
148
+ cell.start(false, false);
149
+ if (!cell.pending) {
150
+ const cur = holder();
151
+ cur.snapshot.value = cell.value;
152
+ cur.snapshot.pending = cell.pending;
153
+ cur.snapshot.error = cell.error;
154
+ holder.set(cur);
155
+ inst.notifyUpdate?.();
156
+ }
157
+ });
153
158
  });
154
159
  }
155
160
  } catch (err) {
@@ -166,5 +171,3 @@ function resource(fn, deps = []) {
166
171
  }
167
172
  //#endregion
168
173
  export { resource };
169
-
170
- //# sourceMappingURL=resource-operation.js.map