@askrjs/askr 0.0.52 → 0.0.53

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (386) hide show
  1. package/README.md +5 -1
  2. package/dist/{runtime/scheduler.js → access-Bg4RJNC8.js} +182 -9
  3. package/dist/actions/index.d.ts +2 -0
  4. package/dist/actions/index.js +103 -0
  5. package/dist/{common/attr-names.js → attr-names-CjhzmHOn.js} +1 -1
  6. package/dist/benchmark.d.ts +6 -2
  7. package/dist/benchmark.js +63 -11
  8. package/dist/boot/index.d.ts +61 -2
  9. package/dist/boot/index.js +1 -203
  10. package/dist/boot-j2KoN6ss.js +647 -0
  11. package/dist/cleanup-COv77su2.js +487 -0
  12. package/dist/component-internal-B3z7GXlD.js +614 -0
  13. package/dist/component-lifecycle-CO4hXlP4.js +357 -0
  14. package/dist/{runtime/component-scope.js → component-scope-CC3cojX9.js} +8 -1
  15. package/dist/component-scope-CvPba6O6.d.ts +12 -0
  16. package/dist/components/index.d.ts +17 -2
  17. package/dist/components/index.js +39 -1
  18. package/dist/compose-ref-Cc_YkUpM.js +92 -0
  19. package/dist/{foundations/utilities/compose-ref.d.ts → compose-ref-Cizq72-x.d.ts} +1 -1
  20. package/dist/control/index.d.ts +1 -3
  21. package/dist/control/index.js +1 -3
  22. package/dist/control-BQvNVfAd.d.ts +436 -0
  23. package/dist/control-BYyLTFyw.js +165 -0
  24. package/dist/control-Bf4Wkdvv.d.ts +9 -0
  25. package/dist/{common/control.js → control-DhFRTIoE.js} +1 -1
  26. package/dist/data/index.d.ts +2 -6
  27. package/dist/data/index.js +4 -5
  28. package/dist/data-DnxnDxD-.js +559 -0
  29. package/dist/{data/data-runtime.js → data-runtime-SJ1BSUvk.js} +32 -31
  30. package/dist/deferred-lKE8uR0z.js +386 -0
  31. package/dist/{runtime/effect.js → effect-BwnIvLah.js} +4 -4
  32. package/dist/fastlane-Dw8SOBr9.js +343 -0
  33. package/dist/for-internal-BKf_Tnv1.js +1563 -0
  34. package/dist/foundations/icon/index.d.ts +68 -2
  35. package/dist/foundations/icon/index.js +85 -1
  36. package/dist/foundations/index.d.ts +2 -5
  37. package/dist/foundations/index.js +2 -5
  38. package/dist/foundations/interactions/index.d.ts +264 -6
  39. package/dist/foundations/interactions/index.js +1 -6
  40. package/dist/foundations/state/index.d.ts +32 -1
  41. package/dist/foundations/state/index.js +78 -1
  42. package/dist/foundations/structures/index.d.ts +2 -7
  43. package/dist/foundations/structures/index.js +2 -7
  44. package/dist/foundations/utilities/index.d.ts +2 -6
  45. package/dist/foundations/utilities/index.js +2 -5
  46. package/dist/fx/index.d.ts +190 -3
  47. package/dist/fx/index.js +454 -4
  48. package/dist/index-31Uoz_NS.d.ts +239 -0
  49. package/dist/index-Bki2rqcr.d.ts +233 -0
  50. package/dist/index-BnU0NPwM.d.ts +101 -0
  51. package/dist/index-D73jgYx1.d.ts +48 -0
  52. package/dist/{runtime/runtime.d.ts → index-R2JJIbM-.d.ts} +31 -8
  53. package/dist/index-SJXJkssx.d.ts +44 -0
  54. package/dist/index.d.ts +8 -13
  55. package/dist/index.js +150 -15
  56. package/dist/interactions-w7gQN4ha.js +280 -0
  57. package/dist/{data/invalidation-listeners.js → invalidation-listeners-Des3AHYs.js} +1 -1
  58. package/dist/{common/props.d.ts → jsx-CP0gmYwJ.d.ts} +17 -5
  59. package/dist/{common/jsx.js → jsx-CUpRxrLH.js} +1 -1
  60. package/dist/jsx-dev-runtime.d.ts +2 -4
  61. package/dist/jsx-dev-runtime.js +7 -5
  62. package/dist/jsx-runtime-92bV2hSa.d.ts +34 -0
  63. package/dist/jsx-runtime-BVVgDSdq.d.ts +1 -0
  64. package/dist/jsx-runtime.d.ts +2 -35
  65. package/dist/jsx-runtime.js +11 -5
  66. package/dist/{runtime/lifecycle-operations.js → lifecycle-operations-D9va7GOU.js} +4 -5
  67. package/dist/navigate-BVDCzOuB.d.ts +34 -0
  68. package/dist/navigate-CmPLSXyw.js +1449 -0
  69. package/dist/{runtime/portal.js → portal-CyU3Ucf2.js} +33 -36
  70. package/dist/query-registry-CQIT4mXr.js +73 -0
  71. package/dist/{common/render-context.js → render-context-Clw3rFiO.js} +14 -6
  72. package/dist/renderer-DzPjeLby.js +6197 -0
  73. package/dist/{runtime/resource-operation.js → resource-operation-CEzfpnDk.js} +118 -15
  74. package/dist/resources/index.d.ts +42 -3
  75. package/dist/resources/index.js +3 -4
  76. package/dist/{common/route-activity.js → route-activity-CNJfpwx-.js} +1 -1
  77. package/dist/route-matching-vJpvLVbX.js +515 -0
  78. package/dist/router/index.d.ts +166 -14
  79. package/dist/router/index.js +150 -12
  80. package/dist/{common/router.d.ts → router-CeYvjj5_.d.ts} +72 -28
  81. package/dist/{common/router-internal.js → router-internal-BC0w1_xk.js} +1 -1
  82. package/dist/{runtime/scheduler.d.ts → scheduler-CmLO4Dfm.d.ts} +1 -3
  83. package/dist/{runtime/selector.js → selector-DafVYzV4.js} +34 -11
  84. package/dist/{runtime/snapshot-source.js → snapshot-source-BB42xgwb.js} +1 -1
  85. package/dist/ssg/index.d.ts +252 -4
  86. package/dist/ssg/index.js +857 -1
  87. package/dist/ssr/index.d.ts +225 -8
  88. package/dist/ssr/index.js +3 -6
  89. package/dist/{common/ssr.js → ssr-CbQO5xd3.js} +1 -1
  90. package/dist/ssr-D3t80Rc0.js +1413 -0
  91. package/dist/{runtime/state.js → state-DPl8lffD.js} +3 -5
  92. package/dist/structures-DUB3HchX.js +221 -0
  93. package/dist/testing/index.d.ts +3 -2
  94. package/dist/testing/index.js +2 -5
  95. package/dist/{jsx/types.d.ts → types-DnQVG4ZY.d.ts} +2 -5
  96. package/dist/{foundations/utilities/use-id.js → utilities-C_CGX4Dz.js} +1 -1
  97. package/dist/{ssr/verify-hydration.js → verify-hydration-io9ahUeq.js} +2 -2
  98. package/dist/{common/vnode.js → vnode-CGMJYPMB.js} +2 -2
  99. package/package.json +12 -7
  100. package/dist/bench/components/benchmark-row.d.ts +0 -20
  101. package/dist/bench/components/benchmark-row.js +0 -40
  102. package/dist/bench/components/benchmark-table.js +0 -23
  103. package/dist/bin/askr-ssg.d.ts +0 -27
  104. package/dist/bin/askr-ssg.js +0 -186
  105. package/dist/boot/hydration.js +0 -139
  106. package/dist/boot/root-lifecycle.d.ts +0 -18
  107. package/dist/boot/root-lifecycle.js +0 -209
  108. package/dist/boot/route-startup.js +0 -54
  109. package/dist/boot/types.d.ts +0 -61
  110. package/dist/common/component.d.ts +0 -18
  111. package/dist/common/control.d.ts +0 -12
  112. package/dist/common/dom-range.d.ts +0 -13
  113. package/dist/common/env.js +0 -41
  114. package/dist/common/error-boundary.d.ts +0 -15
  115. package/dist/common/invariant.js +0 -15
  116. package/dist/common/jsx.d.ts +0 -22
  117. package/dist/common/logger.js +0 -34
  118. package/dist/common/promise.js +0 -6
  119. package/dist/common/ssr-errors.d.ts +0 -10
  120. package/dist/common/ssr-errors.js +0 -14
  121. package/dist/common/ssr.d.ts +0 -41
  122. package/dist/common/vnode.d.ts +0 -21
  123. package/dist/components/error-boundary.d.ts +0 -14
  124. package/dist/components/error-boundary.js +0 -41
  125. package/dist/components/link.d.ts +0 -68
  126. package/dist/components/link.js +0 -74
  127. package/dist/control/case.d.ts +0 -18
  128. package/dist/control/case.js +0 -68
  129. package/dist/control/for.d.ts +0 -23
  130. package/dist/control/for.js +0 -61
  131. package/dist/control/shared.d.ts +0 -8
  132. package/dist/control/shared.js +0 -18
  133. package/dist/control/show.d.ts +0 -14
  134. package/dist/control/show.js +0 -32
  135. package/dist/data/data-runtime.d.ts +0 -27
  136. package/dist/data/invalidation.d.ts +0 -8
  137. package/dist/data/invalidation.js +0 -25
  138. package/dist/data/mutation-cell.d.ts +0 -27
  139. package/dist/data/mutation-cell.js +0 -133
  140. package/dist/data/query-cell.d.ts +0 -47
  141. package/dist/data/query-cell.js +0 -324
  142. package/dist/data/query-key.js +0 -40
  143. package/dist/data/shared.js +0 -20
  144. package/dist/data/testing.js +0 -2
  145. package/dist/data/types.d.ts +0 -160
  146. package/dist/foundations/icon/icon.d.ts +0 -52
  147. package/dist/foundations/icon/icon.js +0 -86
  148. package/dist/foundations/icon/icon.types.d.ts +0 -21
  149. package/dist/foundations/interactions/dismissable.d.ts +0 -71
  150. package/dist/foundations/interactions/dismissable.js +0 -24
  151. package/dist/foundations/interactions/focusable.d.ts +0 -21
  152. package/dist/foundations/interactions/focusable.js +0 -16
  153. package/dist/foundations/interactions/hoverable.d.ts +0 -25
  154. package/dist/foundations/interactions/hoverable.js +0 -13
  155. package/dist/foundations/interactions/interaction-policy.d.ts +0 -49
  156. package/dist/foundations/interactions/interaction-policy.js +0 -120
  157. package/dist/foundations/interactions/pressable.d.ts +0 -60
  158. package/dist/foundations/interactions/pressable.js +0 -49
  159. package/dist/foundations/interactions/roving-focus.d.ts +0 -51
  160. package/dist/foundations/interactions/roving-focus.js +0 -69
  161. package/dist/foundations/state/controllable.d.ts +0 -32
  162. package/dist/foundations/state/controllable.js +0 -80
  163. package/dist/foundations/structures/collection.d.ts +0 -51
  164. package/dist/foundations/structures/collection.js +0 -49
  165. package/dist/foundations/structures/layer.d.ts +0 -80
  166. package/dist/foundations/structures/layer.js +0 -79
  167. package/dist/foundations/structures/layout.d.ts +0 -32
  168. package/dist/foundations/structures/layout.js +0 -11
  169. package/dist/foundations/structures/portal.d.ts +0 -2
  170. package/dist/foundations/structures/portal.js +0 -3
  171. package/dist/foundations/structures/presence.d.ts +0 -36
  172. package/dist/foundations/structures/presence.js +0 -37
  173. package/dist/foundations/structures/slot.d.ts +0 -34
  174. package/dist/foundations/structures/slot.js +0 -39
  175. package/dist/foundations/utilities/aria.d.ts +0 -15
  176. package/dist/foundations/utilities/aria.js +0 -15
  177. package/dist/foundations/utilities/compose-handlers.d.ts +0 -36
  178. package/dist/foundations/utilities/compose-handlers.js +0 -18
  179. package/dist/foundations/utilities/compose-ref.js +0 -16
  180. package/dist/foundations/utilities/event-types.d.ts +0 -19
  181. package/dist/foundations/utilities/merge-props.d.ts +0 -4
  182. package/dist/foundations/utilities/merge-props.js +0 -47
  183. package/dist/foundations/utilities/use-id.d.ts +0 -31
  184. package/dist/fx/fx.d.ts +0 -32
  185. package/dist/fx/fx.js +0 -211
  186. package/dist/fx/noop.js +0 -7
  187. package/dist/fx/timing.d.ts +0 -158
  188. package/dist/fx/timing.js +0 -241
  189. package/dist/jsx/index.d.ts +0 -2
  190. package/dist/jsx/index.js +0 -4
  191. package/dist/jsx/types.js +0 -2
  192. package/dist/jsx/utils.d.ts +0 -4
  193. package/dist/jsx/utils.js +0 -17
  194. package/dist/jsx-runtime2.d.ts +0 -3
  195. package/dist/jsx-runtime2.js +0 -4
  196. package/dist/renderer/attributes.js +0 -254
  197. package/dist/renderer/boundaries.js +0 -142
  198. package/dist/renderer/boundary-materialization.js +0 -72
  199. package/dist/renderer/boundary-range-adoption.js +0 -76
  200. package/dist/renderer/boundary-range-sync.js +0 -101
  201. package/dist/renderer/boundary-state.js +0 -50
  202. package/dist/renderer/child-shape.js +0 -83
  203. package/dist/renderer/children-fastpath.js +0 -149
  204. package/dist/renderer/children.js +0 -158
  205. package/dist/renderer/cleanup.js +0 -267
  206. package/dist/renderer/component-host-cleanup.js +0 -143
  207. package/dist/renderer/component-host-instances.js +0 -116
  208. package/dist/renderer/component-host-replacement.js +0 -105
  209. package/dist/renderer/component-host-results.js +0 -138
  210. package/dist/renderer/component-host.js +0 -172
  211. package/dist/renderer/dom-host.js +0 -11
  212. package/dist/renderer/dom-internal.js +0 -243
  213. package/dist/renderer/dom-range.js +0 -161
  214. package/dist/renderer/dom.js +0 -11
  215. package/dist/renderer/element-children.js +0 -359
  216. package/dist/renderer/env.js +0 -2
  217. package/dist/renderer/error-boundary-dom.js +0 -86
  218. package/dist/renderer/evaluate-dom-range.js +0 -84
  219. package/dist/renderer/evaluate-reconcile.js +0 -257
  220. package/dist/renderer/evaluate.js +0 -95
  221. package/dist/renderer/fastpath.js +0 -142
  222. package/dist/renderer/for-commit-dom-map.js +0 -71
  223. package/dist/renderer/for-commit-removal.js +0 -27
  224. package/dist/renderer/for-commit-reorder.js +0 -87
  225. package/dist/renderer/for-commit.js +0 -442
  226. package/dist/renderer/hydration-boundaries.js +0 -60
  227. package/dist/renderer/hydration-listener-transaction.js +0 -49
  228. package/dist/renderer/index.js +0 -39
  229. package/dist/renderer/intrinsic-blueprint-analysis.js +0 -202
  230. package/dist/renderer/intrinsic-blueprint-bindings.js +0 -152
  231. package/dist/renderer/intrinsic-blueprint-materialization.js +0 -100
  232. package/dist/renderer/intrinsic-blueprint.js +0 -30
  233. package/dist/renderer/intrinsic-hydration-adoption.js +0 -66
  234. package/dist/renderer/keyed-children.js +0 -26
  235. package/dist/renderer/keyed.js +0 -167
  236. package/dist/renderer/namespaces.js +0 -21
  237. package/dist/renderer/prop-bindings.js +0 -315
  238. package/dist/renderer/reactive-child-dom.js +0 -139
  239. package/dist/renderer/reactive-child-sources.js +0 -182
  240. package/dist/renderer/reactive-children.js +0 -303
  241. package/dist/renderer/reconcile-commit.js +0 -36
  242. package/dist/renderer/reconcile-fastpaths.js +0 -100
  243. package/dist/renderer/reconcile-resolution.js +0 -163
  244. package/dist/renderer/reconcile.js +0 -37
  245. package/dist/renderer/retained-element-rollback.js +0 -288
  246. package/dist/renderer/stable-patch.js +0 -80
  247. package/dist/renderer/static-reuse.js +0 -94
  248. package/dist/renderer/types.js +0 -2
  249. package/dist/renderer/utils.js +0 -265
  250. package/dist/router/access.js +0 -34
  251. package/dist/router/activity.d.ts +0 -9
  252. package/dist/router/activity.js +0 -85
  253. package/dist/router/authoring.d.ts +0 -21
  254. package/dist/router/authoring.js +0 -196
  255. package/dist/router/internal-types.d.ts +0 -30
  256. package/dist/router/lazy.d.ts +0 -18
  257. package/dist/router/lazy.js +0 -50
  258. package/dist/router/manifest.d.ts +0 -9
  259. package/dist/router/manifest.js +0 -47
  260. package/dist/router/match.js +0 -120
  261. package/dist/router/navigate.d.ts +0 -10
  262. package/dist/router/navigate.js +0 -73
  263. package/dist/router/navigation-registry.d.ts +0 -31
  264. package/dist/router/navigation-registry.js +0 -103
  265. package/dist/router/navigation-scroll.d.ts +0 -13
  266. package/dist/router/navigation-scroll.js +0 -91
  267. package/dist/router/navigation-targets.d.ts +0 -30
  268. package/dist/router/navigation-targets.js +0 -634
  269. package/dist/router/policy.d.ts +0 -27
  270. package/dist/router/policy.js +0 -130
  271. package/dist/router/rendering.d.ts +0 -9
  272. package/dist/router/rendering.js +0 -47
  273. package/dist/router/resolution.d.ts +0 -3
  274. package/dist/router/resolution.js +0 -84
  275. package/dist/router/route-context.js +0 -77
  276. package/dist/router/route-matching.d.ts +0 -19
  277. package/dist/router/route-matching.js +0 -173
  278. package/dist/router/route-query.d.ts +0 -16
  279. package/dist/router/route-query.js +0 -45
  280. package/dist/router/route.d.ts +0 -8
  281. package/dist/router/route.js +0 -10
  282. package/dist/router/store.d.ts +0 -49
  283. package/dist/router/store.js +0 -169
  284. package/dist/router/testing.js +0 -4
  285. package/dist/runtime/access.d.ts +0 -19
  286. package/dist/runtime/access.js +0 -43
  287. package/dist/runtime/child-scope.d.ts +0 -41
  288. package/dist/runtime/child-scope.js +0 -134
  289. package/dist/runtime/component-cleanup.d.ts +0 -15
  290. package/dist/runtime/component-cleanup.js +0 -68
  291. package/dist/runtime/component-commit.js +0 -167
  292. package/dist/runtime/component-facade.d.ts +0 -5
  293. package/dist/runtime/component-facade.js +0 -6
  294. package/dist/runtime/component-internal.d.ts +0 -105
  295. package/dist/runtime/component-internal.js +0 -237
  296. package/dist/runtime/component-lifecycle.d.ts +0 -10
  297. package/dist/runtime/component-lifecycle.js +0 -33
  298. package/dist/runtime/component-scope.d.ts +0 -54
  299. package/dist/runtime/component.d.ts +0 -5
  300. package/dist/runtime/component.js +0 -6
  301. package/dist/runtime/context.d.ts +0 -72
  302. package/dist/runtime/context.js +0 -236
  303. package/dist/runtime/control.d.ts +0 -62
  304. package/dist/runtime/control.js +0 -239
  305. package/dist/runtime/derive.d.ts +0 -16
  306. package/dist/runtime/derive.js +0 -140
  307. package/dist/runtime/dev-namespace.d.ts +0 -30
  308. package/dist/runtime/dev-namespace.js +0 -64
  309. package/dist/runtime/effect.d.ts +0 -35
  310. package/dist/runtime/error-boundary.d.ts +0 -4
  311. package/dist/runtime/error-boundary.js +0 -29
  312. package/dist/runtime/events.d.ts +0 -58
  313. package/dist/runtime/events.js +0 -201
  314. package/dist/runtime/execution-model.d.ts +0 -6
  315. package/dist/runtime/execution-model.js +0 -13
  316. package/dist/runtime/fastlane.d.ts +0 -33
  317. package/dist/runtime/fastlane.js +0 -173
  318. package/dist/runtime/for-bench.d.ts +0 -40
  319. package/dist/runtime/for-bench.js +0 -13
  320. package/dist/runtime/for-internal.d.ts +0 -106
  321. package/dist/runtime/for-internal.js +0 -285
  322. package/dist/runtime/for-reconcile.d.ts +0 -7
  323. package/dist/runtime/for-reconcile.js +0 -442
  324. package/dist/runtime/for-scopes.d.ts +0 -26
  325. package/dist/runtime/for-scopes.js +0 -280
  326. package/dist/runtime/for-signals.d.ts +0 -39
  327. package/dist/runtime/for-signals.js +0 -213
  328. package/dist/runtime/for-types.d.ts +0 -8
  329. package/dist/runtime/for.d.ts +0 -4
  330. package/dist/runtime/for.js +0 -5
  331. package/dist/runtime/index.d.ts +0 -24
  332. package/dist/runtime/index.js +0 -33
  333. package/dist/runtime/lifecycle-batch.d.ts +0 -59
  334. package/dist/runtime/lifecycle-batch.js +0 -178
  335. package/dist/runtime/lifecycle-operation-settlement.d.ts +0 -5
  336. package/dist/runtime/lifecycle-operation-settlement.js +0 -51
  337. package/dist/runtime/lifecycle-operations.d.ts +0 -30
  338. package/dist/runtime/operations.d.ts +0 -3
  339. package/dist/runtime/operations.js +0 -3
  340. package/dist/runtime/perf-metrics.d.ts +0 -27
  341. package/dist/runtime/perf-metrics.js +0 -6
  342. package/dist/runtime/portal.d.ts +0 -21
  343. package/dist/runtime/readable.d.ts +0 -34
  344. package/dist/runtime/readable.js +0 -183
  345. package/dist/runtime/resource-cell.js +0 -112
  346. package/dist/runtime/resource-operation.d.ts +0 -12
  347. package/dist/runtime/runtime.js +0 -57
  348. package/dist/runtime/selector-store.js +0 -22
  349. package/dist/runtime/selector.d.ts +0 -10
  350. package/dist/runtime/snapshot-source.d.ts +0 -9
  351. package/dist/runtime/state.d.ts +0 -54
  352. package/dist/ssg/batch-render.js +0 -101
  353. package/dist/ssg/create-static-gen.d.ts +0 -66
  354. package/dist/ssg/create-static-gen.js +0 -250
  355. package/dist/ssg/generate-metadata.js +0 -92
  356. package/dist/ssg/generation-plan.js +0 -68
  357. package/dist/ssg/incremental-manifest.js +0 -54
  358. package/dist/ssg/resolve-ssg-data.js +0 -103
  359. package/dist/ssg/route-utils.js +0 -22
  360. package/dist/ssg/static-routes.js +0 -100
  361. package/dist/ssg/types.d.ts +0 -188
  362. package/dist/ssg/write-static-files.js +0 -77
  363. package/dist/ssr/attrs.js +0 -92
  364. package/dist/ssr/boundaries.js +0 -124
  365. package/dist/ssr/component-runtime.js +0 -85
  366. package/dist/ssr/context.d.ts +0 -49
  367. package/dist/ssr/context.js +0 -89
  368. package/dist/ssr/errors.d.ts +0 -9
  369. package/dist/ssr/errors.js +0 -12
  370. package/dist/ssr/escape.js +0 -191
  371. package/dist/ssr/hydration-data.js +0 -8
  372. package/dist/ssr/hydration-verify.d.ts +0 -11
  373. package/dist/ssr/hydration-verify.js +0 -171
  374. package/dist/ssr/index-internal.d.ts +0 -14
  375. package/dist/ssr/index-internal.js +0 -17
  376. package/dist/ssr/render-keys.js +0 -14
  377. package/dist/ssr/render-resolved.d.ts +0 -19
  378. package/dist/ssr/render-resolved.js +0 -33
  379. package/dist/ssr/render-sync.d.ts +0 -20
  380. package/dist/ssr/render-sync.js +0 -283
  381. package/dist/ssr/route-policy-resolution.js +0 -76
  382. package/dist/ssr/route-render.d.ts +0 -76
  383. package/dist/ssr/route-render.js +0 -118
  384. package/dist/ssr/sink.d.ts +0 -25
  385. package/dist/ssr/sink.js +0 -84
  386. package/dist/ssr/types.d.ts +0 -22
@@ -1,173 +0,0 @@
1
- import { isDevelopmentEnvironment } from "../common/env.js";
2
- import { getRuntimeRenderer, getRuntimeSchedulerState, runRuntimeWithSyncProgress, setRuntimeBulkCommitProbe } from "./access.js";
3
- import { Fragment } from "../common/jsx.js";
4
- import { finalizeReadableSubscriptions } from "./readable.js";
5
- import { getDevNamespace, getDevValue, setDevValue } from "./dev-namespace.js";
6
- //#region src/runtime/fastlane.ts
7
- let _bulkCommitActive = false;
8
- let _appliedParents = null;
9
- function enterBulkCommit() {
10
- _bulkCommitActive = true;
11
- _appliedParents = /* @__PURE__ */ new WeakSet();
12
- setDevValue("__FASTLANE_CLEARED_TASKS", 0);
13
- }
14
- function exitBulkCommit() {
15
- _bulkCommitActive = false;
16
- _appliedParents = null;
17
- }
18
- function isBulkCommitActive() {
19
- return _bulkCommitActive;
20
- }
21
- function markFastPathApplied(parent) {
22
- if (!_appliedParents) return;
23
- try {
24
- _appliedParents.add(parent);
25
- } catch (e) {}
26
- }
27
- function finalizeReadSubscriptions(instance) {
28
- finalizeReadableSubscriptions(instance);
29
- }
30
- /**
31
- * Attempt to execute a runtime fast-lane for a single component's synchronous
32
- * render result. Returns true if the fast-lane was used and commit was done.
33
- *
34
- * Preconditions (checked conservatively):
35
- * - The render result is an intrinsic element root with keyed children
36
- * - The renderer's fast-path heuristics indicate to use the fast-path
37
- * - No mount operations are pending on the component instance
38
- * - No child vnodes are component functions (avoid async/component mounts)
39
- */
40
- function unwrapFragmentForFastPath(vnode) {
41
- if (!vnode || typeof vnode !== "object" || !("type" in vnode)) return vnode;
42
- const v = vnode;
43
- if (typeof v.type === "symbol" && (v.type === Fragment || String(v.type) === "Symbol(askr.fragment)")) {
44
- const children = v.props?.children ?? v.children;
45
- if (Array.isArray(children) && children.length > 0) {
46
- for (const child of children) if (child && typeof child === "object" && "type" in child) {
47
- if (typeof child.type === "string") return child;
48
- }
49
- }
50
- }
51
- return vnode;
52
- }
53
- function classifyUpdate(instance, result) {
54
- const unwrappedResult = unwrapFragmentForFastPath(result);
55
- if (!unwrappedResult || typeof unwrappedResult !== "object" || !("type" in unwrappedResult)) return {
56
- useFastPath: false,
57
- reason: "not-vnode"
58
- };
59
- const vnode = unwrappedResult;
60
- if (vnode == null || typeof vnode.type !== "string") return {
61
- useFastPath: false,
62
- reason: "not-intrinsic"
63
- };
64
- const parent = instance.target;
65
- if (!parent) return {
66
- useFastPath: false,
67
- reason: "no-root"
68
- };
69
- const firstChild = parent.children[0];
70
- if (!firstChild) return {
71
- useFastPath: false,
72
- reason: "no-first-child"
73
- };
74
- if (firstChild.tagName.toLowerCase() !== String(vnode.type).toLowerCase()) return {
75
- useFastPath: false,
76
- reason: "root-tag-mismatch"
77
- };
78
- const children = vnode.props?.children ?? vnode.children;
79
- if (!Array.isArray(children)) return {
80
- useFastPath: false,
81
- reason: "no-children-array"
82
- };
83
- for (const c of children) if (typeof c === "object" && c !== null && "type" in c && typeof c.type === "function") return {
84
- useFastPath: false,
85
- reason: "component-child-present"
86
- };
87
- if ((instance.mountOperations?.length ?? 0) > 0) return {
88
- useFastPath: false,
89
- reason: "pending-mounts"
90
- };
91
- if ((instance.commitOperations?.length ?? 0) > 0) return {
92
- useFastPath: false,
93
- reason: "pending-lifecycle-commits"
94
- };
95
- const renderer = getRuntimeRenderer();
96
- try {
97
- renderer.populateKeyMapForElement(firstChild);
98
- } catch {}
99
- const oldKeyMap = renderer.getKeyMapForElement(firstChild);
100
- const decision = renderer.isKeyedReorderFastPathEligible(firstChild, children, oldKeyMap);
101
- if (!decision.useFastPath || decision.totalKeyed < 128) return {
102
- ...decision,
103
- useFastPath: false,
104
- reason: "renderer-declined"
105
- };
106
- return {
107
- ...decision,
108
- useFastPath: true
109
- };
110
- }
111
- function commitReorderOnly(instance, result) {
112
- const renderer = getRuntimeRenderer();
113
- const schedBefore = isDevelopmentEnvironment() ? getRuntimeSchedulerState() : null;
114
- enterBulkCommit();
115
- try {
116
- runRuntimeWithSyncProgress(() => {
117
- renderer.evaluate(result, instance.target);
118
- try {
119
- finalizeReadSubscriptions(instance);
120
- } catch (e) {
121
- if (isDevelopmentEnvironment()) throw e;
122
- }
123
- });
124
- setDevValue("__FASTLANE_CLEARED_AFTER", 0);
125
- if (isDevelopmentEnvironment()) validateFastLaneInvariants(instance, schedBefore);
126
- return true;
127
- } finally {
128
- exitBulkCommit();
129
- }
130
- }
131
- /**
132
- * Validates fast-lane invariants in dev mode.
133
- * Extracted to reduce complexity in commitReorderOnly.
134
- */
135
- function validateFastLaneInvariants(instance, schedBefore) {
136
- const commitCount = getDevValue("__LAST_FASTPATH_COMMIT_COUNT") ?? 0;
137
- const invariants = {
138
- commitCount,
139
- mountOps: instance.mountOperations?.length ?? 0,
140
- commitOps: instance.commitOperations?.length ?? 0,
141
- cleanupFns: instance.cleanupFns?.length ?? 0
142
- };
143
- setDevValue("__LAST_FASTLANE_INVARIANTS", invariants);
144
- if (commitCount !== 1) {
145
- console.error("[FASTLANE][INV] commitCount", commitCount, "diag", getDevNamespace());
146
- throw new Error("Fast-lane invariant violated: expected exactly one DOM commit during reorder-only commit");
147
- }
148
- if (invariants.mountOps > 0) throw new Error("Fast-lane invariant violated: mount operations were registered during bulk commit");
149
- if (invariants.commitOps > 0) throw new Error("Fast-lane invariant violated: lifecycle commit operations were registered during bulk commit");
150
- if (invariants.cleanupFns > 0) throw new Error("Fast-lane invariant violated: cleanup functions were added during bulk commit");
151
- const schedAfter = getRuntimeSchedulerState();
152
- if (schedBefore && schedAfter && schedAfter.taskCount > schedBefore.taskCount) {
153
- console.error("[FASTLANE] schedBefore, schedAfter", schedBefore, schedAfter);
154
- console.error("[FASTLANE] enqueue logs", getDevValue("__ENQUEUE_LOGS"));
155
- throw new Error("Fast-lane invariant violated: scheduler enqueued leftover work during bulk commit");
156
- }
157
- }
158
- function tryRuntimeFastLaneSync(instance, result) {
159
- if (!classifyUpdate(instance, result).useFastPath) {
160
- setDevValue("__LAST_FASTPATH_STATS", void 0);
161
- setDevValue("__LAST_FASTPATH_COMMIT_COUNT", 0);
162
- return false;
163
- }
164
- try {
165
- return commitReorderOnly(instance, result);
166
- } catch (err) {
167
- if (isDevelopmentEnvironment()) throw err;
168
- return false;
169
- }
170
- }
171
- setRuntimeBulkCommitProbe(isBulkCommitActive);
172
- //#endregion
173
- export { classifyUpdate, commitReorderOnly, enterBulkCommit, exitBulkCommit, isBulkCommitActive, markFastPathApplied, tryRuntimeFastLaneSync };
@@ -1,40 +0,0 @@
1
- //#region src/runtime/for-bench.d.ts
2
- interface BenchMetrics {
3
- itemsCreated: number;
4
- itemsReused: number;
5
- itemsRemoved: number;
6
- itemsMoved: number;
7
- rowFactoryInvocations: number;
8
- keyLookups: number;
9
- keyHits: number;
10
- keyMisses: number;
11
- domInserts: number;
12
- domRemoves: number;
13
- domMoves: number;
14
- domAttrSets: number;
15
- domTextSets: number;
16
- domNodesCreated: number;
17
- listenerBindings: number;
18
- reactivePropsMounted: number;
19
- replaceChildrenCommits: number;
20
- bulkClearCommits: number;
21
- reconcilePhaseMs: number;
22
- domCommitPhaseMs: number;
23
- fastLaneName: string | null;
24
- }
25
- type BenchEvent = 'itemCreated' | 'itemReused' | 'itemRemoved' | 'itemMoved' | 'rowFactory' | 'keyLookup' | 'keyHit' | 'keyMiss' | 'domInsert' | 'domRemove' | 'domMove' | 'domAttrSet' | 'domTextSet';
26
- type BenchMetricScope = 'coldCreate' | 'fullClear';
27
- type BenchCounter = 'domNodesCreated' | 'listenerBindings' | 'reactivePropsMounted' | 'replaceChildrenCommits' | 'bulkClearCommits';
28
- declare function withBenchMetricScopeLive<T>(scope: BenchMetricScope, run: () => T): T;
29
- declare const resetBenchMetrics: () => void;
30
- declare const recordBenchEvent: (event: BenchEvent, delta?: number) => void;
31
- declare const recordBenchFastLane: (name: string) => void;
32
- declare const recordBenchTiming: (phase: "reconcile" | "domCommit", ms: number) => void;
33
- declare const recordBenchCounter: (counter: BenchCounter, delta?: number) => void;
34
- declare const withBenchMetricScope: typeof withBenchMetricScopeLive;
35
- declare const isBenchMetricScopeActive: (scope: BenchMetricScope) => boolean;
36
- declare const getBenchMetrics: () => BenchMetrics;
37
- declare const flushBenchMetrics: () => void;
38
- declare const isBenchBuildEnabled: () => boolean;
39
- //#endregion
40
- export { BenchEvent, BenchMetrics };
@@ -1,13 +0,0 @@
1
- //#region src/runtime/for-bench.ts
2
- const BENCH_BUILD_ENABLED = false;
3
- const resetBenchMetrics = () => {};
4
- const recordBenchEvent = (_event) => {};
5
- const recordBenchFastLane = (_name) => {};
6
- const recordBenchTiming = (_phase, _ms) => {};
7
- const recordBenchCounter = (_counter, _delta = 1) => {};
8
- const withBenchMetricScope = (_scope, run) => run();
9
- const isBenchMetricScopeActive = (_scope) => false;
10
- const flushBenchMetrics = () => {};
11
- const isBenchBuildEnabled = () => BENCH_BUILD_ENABLED;
12
- //#endregion
13
- export { flushBenchMetrics, isBenchBuildEnabled, isBenchMetricScopeActive, recordBenchCounter, recordBenchEvent, recordBenchFastLane, recordBenchTiming, resetBenchMetrics, withBenchMetricScope };
@@ -1,106 +0,0 @@
1
- import { ComponentInstance } from "./component-internal.js";
2
- import { ReadableSource } from "./readable.js";
3
- import { DOMRange } from "../common/dom-range.js";
4
- import { ChildScope, ChildScopeTransactionSnapshot } from "./child-scope.js";
5
- import { ForIndexSignal, ForItemPropertySignal } from "./for-signals.js";
6
- import { ForItemInstance } from "./for-scopes.js";
7
- import { FineGrainedEffectHandle } from "./effect.js";
8
- import { ForEachSource, ForKeySelector, ForRenderItem } from "./for-types.js";
9
- import { reconcileForItems } from "./for-reconcile.js";
10
- import { VNode } from "../common/vnode.js";
11
-
12
- //#region src/runtime/for-internal.d.ts
13
- type ForCommitStrategy = 'APPEND' | 'INSERT_ONE' | 'TRUNCATE' | 'NO_REORDER' | 'SWAP' | 'FULL_KEYED';
14
- interface ForState<T> {
15
- kind: 'for';
16
- currentItems: T[];
17
- _committedItems: T[];
18
- eachSource: ForEachSource<T>;
19
- fallback: VNode | null;
20
- fallbackScope: ChildScope | null;
21
- items: Map<string | number, ForItemInstance<T>>;
22
- orderedKeys: Array<string | number>;
23
- orderedItems: ForItemInstance<T>[];
24
- orderedVNodes: VNode[];
25
- byFn: ForKeySelector<T>;
26
- renderFn: ForRenderItem<T>;
27
- parentInstance: ComponentInstance | null;
28
- lastCommitStrategy: ForCommitStrategy;
29
- lastRemovedNodes: Node[];
30
- lastRemovedRanges: DOMRange[];
31
- pendingDirtyIndices: number[] | null;
32
- pendingSwapIndices: [number, number] | null;
33
- pendingMoveOnly: boolean;
34
- pendingInsertedIndex: number | null;
35
- pendingAppendStart: number | null;
36
- _hasResolvedItemDom: boolean;
37
- _needsSourceReconcile: boolean;
38
- _sourceEffect: FineGrainedEffectHandle<T[]> | null;
39
- _suspendSourceCommit: boolean;
40
- _enqueueBoundaryCommit?: (() => void) | null;
41
- _hasPendingBoundaryCommit?: boolean;
42
- devKeyKinds?: Map<string | number, 'number' | 'string'>;
43
- _transaction?: ForTransaction<T> | null;
44
- }
45
- interface ForItemTransactionSnapshot<T> {
46
- item: T;
47
- itemSignalExists: boolean;
48
- itemSignalValue: T | undefined;
49
- itemSignalHasBeenRead: boolean;
50
- indexValue: number;
51
- indexHasBeenRead: boolean;
52
- propertySignalStore: Map<PropertyKey, ForItemPropertySignal> | null;
53
- propertySignals: Map<PropertyKey, {
54
- signal: ForItemPropertySignal;
55
- value: unknown;
56
- hasBeenRead: boolean;
57
- }> | null;
58
- scope: ChildScopeTransactionSnapshot;
59
- }
60
- interface ForTransaction<T> {
61
- collectionSnapshotMode: 'copy' | 'reset-empty' | 'preserve-clear' | 'reuse';
62
- currentItems: T[];
63
- items: Map<string | number, ForItemInstance<T>>;
64
- orderedKeys: Array<string | number>;
65
- orderedItems: ForItemInstance<T>[];
66
- orderedVNodes: VNode[];
67
- fallbackScope: ChildScope | null;
68
- lastCommitStrategy: ForCommitStrategy;
69
- lastRemovedNodes: Node[];
70
- lastRemovedRanges: DOMRange[];
71
- pendingDirtyIndices: number[] | null;
72
- pendingSwapIndices: [number, number] | null;
73
- pendingMoveOnly: boolean;
74
- pendingInsertedIndex: number | null;
75
- pendingAppendStart: number | null;
76
- hasResolvedItemDom: boolean;
77
- needsSourceReconcile: boolean;
78
- devKeyKinds?: Map<string | number, 'number' | 'string'>;
79
- itemSnapshots: Map<ForItemInstance<T>, ForItemTransactionSnapshot<T>> | null;
80
- unreadIndexSnapshots: Map<ForIndexSignal, number> | null;
81
- fallbackScopeSnapshot: ChildScopeTransactionSnapshot | null;
82
- removedScopes: ChildScope[] | null;
83
- removeAllItems: boolean;
84
- signalEffects: Map<ReadableSource<unknown>, {
85
- parentInstance: ComponentInstance | null;
86
- notify: boolean;
87
- skipInstance: ComponentInstance | null;
88
- skipOwnedBy: ComponentInstance | null;
89
- }> | null;
90
- shouldClearDomUpdateState: boolean;
91
- }
92
- declare function createForState<T>(eachSource: ForEachSource<T>, byFn: ForState<T>['byFn'], renderFn: ForRenderItem<T>, fallback: VNode | null): ForState<T>;
93
- declare function useForState<T>(eachSource: ForEachSource<T>, byFn: ForState<T>['byFn'], renderFn: ForRenderItem<T>, fallback: VNode | null): ForState<T>;
94
- declare function evaluateForState<T>(forState: ForState<T>): VNode[];
95
- /**
96
- * Reconciliation changes ownership before DOM work can fail. Keep a private
97
- * structural snapshot until the boundary has committed so failed work cannot
98
- * leave provisional child scopes in the parent owner graph.
99
- */
100
- declare function beginForStateTransaction<T>(forState: ForState<T>, collectionMode?: 'auto' | 'reuse'): void;
101
- declare function registerForStateTransaction<T>(forState: ForState<T>, transaction?: ForTransaction<T> | null | undefined): boolean;
102
- declare function commitForStateTransaction<T>(forState: ForState<T>, transaction?: ForTransaction<T> | null | undefined): void;
103
- declare function rollbackForStateTransaction<T>(forState: ForState<T>, transaction?: ForTransaction<T> | null | undefined): void;
104
- declare function clearForDomUpdateState<T>(forState: ForState<T>): void;
105
- //#endregion
106
- export { ForCommitStrategy, ForItemTransactionSnapshot, ForState, ForTransaction, reconcileForItems };
@@ -1,285 +0,0 @@
1
- import { logger } from "../common/logger.js";
2
- import { getRuntimeRenderer } from "./access.js";
3
- import { claimHookIndex, getCurrentInstance } from "./component-scope.js";
4
- import { registerLifecycleTransaction } from "./lifecycle-batch.js";
5
- import "./component-lifecycle.js";
6
- import "./component.js";
7
- import { disposeChildScope, restoreChildScopeTransactionSnapshot } from "./child-scope.js";
8
- import { notifyForSignalReaders, removeForParentReaders } from "./for-signals.js";
9
- import { isBenchMetricScopeActive, recordBenchCounter, recordBenchEvent, recordBenchTiming, withBenchMetricScope } from "./for-bench.js";
10
- import { reconcileForItems } from "./for-reconcile.js";
11
- //#region src/runtime/for-internal.ts
12
- /**
13
- * For primitive runtime
14
- *
15
- * Manages For state storage, hook binding, source evaluation,
16
- * and DOM update state cleanup.
17
- */
18
- const forStates = /* @__PURE__ */ new WeakMap();
19
- function getForStore(instance) {
20
- let store = forStates.get(instance);
21
- if (!store) {
22
- store = /* @__PURE__ */ new Map();
23
- forStates.set(instance, store);
24
- }
25
- return store;
26
- }
27
- function createForState(eachSource, byFn, renderFn, fallback) {
28
- const parentInstance = getCurrentInstance();
29
- return {
30
- kind: "for",
31
- currentItems: [],
32
- _committedItems: [],
33
- eachSource,
34
- fallback,
35
- fallbackScope: null,
36
- items: /* @__PURE__ */ new Map(),
37
- orderedKeys: [],
38
- orderedItems: [],
39
- orderedVNodes: [],
40
- byFn,
41
- renderFn,
42
- parentInstance,
43
- lastCommitStrategy: "NO_REORDER",
44
- lastRemovedNodes: [],
45
- lastRemovedRanges: [],
46
- pendingDirtyIndices: null,
47
- pendingSwapIndices: null,
48
- pendingMoveOnly: false,
49
- pendingInsertedIndex: null,
50
- pendingAppendStart: null,
51
- _hasResolvedItemDom: false,
52
- _needsSourceReconcile: false,
53
- _sourceEffect: null,
54
- _suspendSourceCommit: false,
55
- _enqueueBoundaryCommit: null,
56
- _hasPendingBoundaryCommit: false,
57
- _transaction: null
58
- };
59
- }
60
- function useForState(eachSource, byFn, renderFn, fallback) {
61
- const instance = getCurrentInstance();
62
- if (!instance) throw new Error("For can only be created during component render execution.");
63
- const hookIndex = claimHookIndex(instance, "For");
64
- const store = getForStore(instance);
65
- const existing = store.get(hookIndex);
66
- if (existing) {
67
- existing.eachSource = eachSource;
68
- existing.byFn = byFn;
69
- existing.renderFn = renderFn;
70
- existing.fallback = fallback;
71
- return existing;
72
- }
73
- const created = createForState(eachSource, byFn, renderFn, fallback);
74
- store.set(hookIndex, created);
75
- (instance.cleanupFns ??= []).push(() => {
76
- created._sourceEffect?.cleanup();
77
- created._sourceEffect = null;
78
- store.delete(hookIndex);
79
- });
80
- return created;
81
- }
82
- function evaluateForState(forState) {
83
- if (!Array.isArray(forState.currentItems)) throw new Error("For source must evaluate to an array");
84
- beginForStateTransaction(forState);
85
- forState._needsSourceReconcile = false;
86
- try {
87
- return reconcileForItems(forState, forState.currentItems);
88
- } catch (error) {
89
- rollbackForStateTransaction(forState);
90
- throw error;
91
- }
92
- }
93
- /**
94
- * Reconciliation changes ownership before DOM work can fail. Keep a private
95
- * structural snapshot until the boundary has committed so failed work cannot
96
- * leave provisional child scopes in the parent owner graph.
97
- */
98
- function beginForStateTransaction(forState, collectionMode = "auto") {
99
- if (forState._transaction) return;
100
- const hasEmptyCollections = forState.items.size === 0 && forState.orderedKeys.length === 0 && forState.orderedItems.length === 0 && forState.orderedVNodes.length === 0;
101
- const isFullClear = forState.currentItems.length === 0 && forState.orderedKeys.length > 0;
102
- const collectionSnapshotMode = collectionMode === "reuse" ? "reuse" : hasEmptyCollections ? "reset-empty" : isFullClear ? "preserve-clear" : "copy";
103
- const transaction = {
104
- collectionSnapshotMode,
105
- currentItems: forState._committedItems,
106
- items: collectionSnapshotMode === "copy" ? new Map(forState.items) : forState.items,
107
- orderedKeys: collectionSnapshotMode === "copy" ? forState.orderedKeys.slice() : forState.orderedKeys,
108
- orderedItems: collectionSnapshotMode === "copy" ? forState.orderedItems.slice() : forState.orderedItems,
109
- orderedVNodes: collectionSnapshotMode === "copy" ? forState.orderedVNodes.slice() : forState.orderedVNodes,
110
- fallbackScope: forState.fallbackScope,
111
- lastCommitStrategy: forState.lastCommitStrategy,
112
- lastRemovedNodes: forState.lastRemovedNodes,
113
- lastRemovedRanges: forState.lastRemovedRanges,
114
- pendingDirtyIndices: forState.pendingDirtyIndices,
115
- pendingSwapIndices: forState.pendingSwapIndices,
116
- pendingMoveOnly: forState.pendingMoveOnly,
117
- pendingInsertedIndex: forState.pendingInsertedIndex,
118
- pendingAppendStart: forState.pendingAppendStart,
119
- hasResolvedItemDom: forState._hasResolvedItemDom,
120
- needsSourceReconcile: forState._needsSourceReconcile,
121
- devKeyKinds: forState.devKeyKinds,
122
- itemSnapshots: null,
123
- unreadIndexSnapshots: null,
124
- fallbackScopeSnapshot: null,
125
- removedScopes: null,
126
- removeAllItems: false,
127
- signalEffects: null,
128
- shouldClearDomUpdateState: false
129
- };
130
- forState._transaction = transaction;
131
- registerForStateTransaction(forState, transaction);
132
- }
133
- function registerForStateTransaction(forState, transaction = forState._transaction) {
134
- if (!transaction || forState._transaction !== transaction) return false;
135
- return registerLifecycleTransaction(transaction, () => commitForStateTransaction(forState, transaction), () => rollbackForStateTransaction(forState, transaction));
136
- }
137
- function finalizeForStateRemovals(transaction) {
138
- const removedScopes = transaction.removedScopes;
139
- if (!transaction.removeAllItems && !removedScopes) return;
140
- const cleanupErrors = [];
141
- const finalizeScope = (scope) => {
142
- const removedDom = scope.dom;
143
- const removedRange = scope.range;
144
- try {
145
- disposeChildScope(scope);
146
- } catch (error) {
147
- cleanupErrors.push(error);
148
- }
149
- if (typeof Element !== "undefined" && removedDom instanceof Element) try {
150
- getRuntimeRenderer().teardownNodeSubtree(removedDom);
151
- } catch (error) {
152
- cleanupErrors.push(error);
153
- }
154
- if (removedRange && !removedRange.single) for (let node = removedRange.start.nextSibling; node && node !== removedRange.end;) {
155
- const next = node.nextSibling;
156
- if (typeof Element !== "undefined" && node instanceof Element) try {
157
- getRuntimeRenderer().teardownNodeSubtree(node);
158
- } catch (error) {
159
- cleanupErrors.push(error);
160
- }
161
- node = next;
162
- }
163
- };
164
- if (transaction.removeAllItems) for (let index = 0; index < transaction.orderedItems.length; index++) {
165
- const item = transaction.orderedItems[index];
166
- if (item) finalizeScope(item.scope);
167
- }
168
- for (const scope of removedScopes ?? []) finalizeScope(scope);
169
- if (removedScopes) removedScopes.length = 0;
170
- transaction.removeAllItems = false;
171
- if (cleanupErrors.length > 0) logger.error("[Askr] For removal cleanup failed:", new AggregateError(cleanupErrors, "For removal cleanup failed"));
172
- }
173
- function finalizeForSignalEffects(transaction) {
174
- if (!transaction.signalEffects) return;
175
- for (const [source, effect] of transaction.signalEffects) {
176
- removeForParentReaders(effect.parentInstance, source);
177
- if (effect.notify) notifyForSignalReaders(source, effect.skipInstance, effect.skipOwnedBy);
178
- }
179
- transaction.signalEffects.clear();
180
- }
181
- function finalizeForDomUpdateFlags(forState) {
182
- for (let index = 0; index < forState.orderedItems.length; index++) {
183
- const item = forState.orderedItems[index];
184
- if (item) item.scope.needsDomUpdate = false;
185
- }
186
- if (forState.fallbackScope) forState.fallbackScope.needsDomUpdate = false;
187
- }
188
- function commitForStateTransaction(forState, transaction = forState._transaction) {
189
- if (!transaction || forState._transaction !== transaction) return;
190
- try {
191
- finalizeForStateRemovals(transaction);
192
- finalizeForSignalEffects(transaction);
193
- if (transaction.shouldClearDomUpdateState) finalizeForDomUpdateFlags(forState);
194
- } finally {
195
- transaction.itemSnapshots?.clear();
196
- transaction.unreadIndexSnapshots?.clear();
197
- transaction.fallbackScopeSnapshot = null;
198
- forState._committedItems = forState.currentItems;
199
- forState._transaction = null;
200
- }
201
- }
202
- function rollbackForStateTransaction(forState, transaction = forState._transaction) {
203
- if (!transaction || forState._transaction !== transaction) return;
204
- const rollbackCleanupErrors = [];
205
- const scopesToDispose = /* @__PURE__ */ new Set();
206
- const committedScopes = transaction.collectionSnapshotMode === "reset-empty" ? null : new Set(transaction.orderedItems.map((item) => item.scope));
207
- if (transaction.fallbackScope) committedScopes?.add(transaction.fallbackScope);
208
- if (transaction.collectionSnapshotMode === "reset-empty") for (const item of forState.items.values()) scopesToDispose.add(item.scope);
209
- else for (const [key, item] of forState.items) if (transaction.items.get(key) !== item) scopesToDispose.add(item.scope);
210
- for (const scope of transaction.removedScopes ?? []) if (scope !== transaction.fallbackScope && !committedScopes?.has(scope)) scopesToDispose.add(scope);
211
- if (forState.fallbackScope && forState.fallbackScope !== transaction.fallbackScope) scopesToDispose.add(forState.fallbackScope);
212
- for (const scope of scopesToDispose) try {
213
- disposeChildScope(scope);
214
- } catch (error) {
215
- rollbackCleanupErrors.push(error);
216
- }
217
- if (transaction.collectionSnapshotMode === "reset-empty") {
218
- forState.items.clear();
219
- forState.orderedKeys.length = 0;
220
- forState.orderedItems.length = 0;
221
- forState.orderedVNodes.length = 0;
222
- }
223
- for (const [itemInstance, snapshot] of transaction.itemSnapshots ?? []) {
224
- itemInstance.item = snapshot.item;
225
- const reactiveItemState = itemInstance.reactiveItemState;
226
- if (reactiveItemState) reactiveItemState.currentItem = snapshot.item;
227
- const itemSignal = reactiveItemState?.itemSignal;
228
- if (itemSignal && snapshot.itemSignalExists) {
229
- itemSignal.set(snapshot.itemSignalValue, false);
230
- itemSignal._hasBeenRead = snapshot.itemSignalHasBeenRead;
231
- }
232
- itemInstance.indexSignal.set(snapshot.indexValue, false);
233
- itemInstance.indexSignal._hasBeenRead = snapshot.indexHasBeenRead;
234
- const propertySignals = snapshot.propertySignalStore;
235
- if (reactiveItemState) reactiveItemState.propertySignals = propertySignals;
236
- if (propertySignals) {
237
- propertySignals.clear();
238
- for (const [property, propertySnapshot] of snapshot.propertySignals ?? []) {
239
- propertySnapshot.signal.set(propertySnapshot.value, false);
240
- propertySnapshot.signal._hasBeenRead = propertySnapshot.hasBeenRead;
241
- propertySignals.set(property, propertySnapshot.signal);
242
- }
243
- }
244
- restoreChildScopeTransactionSnapshot(itemInstance.scope, snapshot.scope);
245
- }
246
- for (const [indexSignal, index] of transaction.unreadIndexSnapshots ?? []) indexSignal.set(index, false);
247
- if (transaction.fallbackScope && transaction.fallbackScopeSnapshot) restoreChildScopeTransactionSnapshot(transaction.fallbackScope, transaction.fallbackScopeSnapshot);
248
- forState.currentItems = transaction.currentItems;
249
- forState._committedItems = transaction.currentItems;
250
- forState.items = transaction.items;
251
- forState.orderedKeys = transaction.orderedKeys;
252
- forState.orderedItems = transaction.orderedItems;
253
- forState.orderedVNodes = transaction.orderedVNodes;
254
- forState.fallbackScope = transaction.fallbackScope;
255
- forState.lastCommitStrategy = transaction.lastCommitStrategy;
256
- forState.lastRemovedNodes = transaction.lastRemovedNodes;
257
- forState.lastRemovedRanges = transaction.lastRemovedRanges;
258
- forState.pendingDirtyIndices = transaction.pendingDirtyIndices;
259
- forState.pendingSwapIndices = transaction.pendingSwapIndices;
260
- forState.pendingMoveOnly = transaction.pendingMoveOnly;
261
- forState.pendingInsertedIndex = transaction.pendingInsertedIndex;
262
- forState.pendingAppendStart = transaction.pendingAppendStart;
263
- forState._hasResolvedItemDom = transaction.hasResolvedItemDom;
264
- forState._needsSourceReconcile = transaction.needsSourceReconcile;
265
- forState.devKeyKinds = transaction.devKeyKinds;
266
- forState._transaction = null;
267
- if (rollbackCleanupErrors.length > 0) logger.error("[Askr] transaction rollback cleanup failed:", new AggregateError(rollbackCleanupErrors, "Transaction rollback cleanup failed"));
268
- }
269
- function clearForDomUpdateState(forState) {
270
- const transaction = forState._transaction;
271
- if (transaction) transaction.shouldClearDomUpdateState = true;
272
- if (transaction && !registerForStateTransaction(forState, transaction)) commitForStateTransaction(forState, transaction);
273
- if (!transaction) finalizeForDomUpdateFlags(forState);
274
- forState.lastRemovedNodes = [];
275
- forState.lastRemovedRanges = [];
276
- forState.pendingDirtyIndices = null;
277
- forState.pendingSwapIndices = null;
278
- forState.pendingMoveOnly = false;
279
- forState.pendingInsertedIndex = null;
280
- forState.pendingAppendStart = null;
281
- forState._needsSourceReconcile = false;
282
- forState._hasResolvedItemDom = forState.orderedKeys.length > 0;
283
- }
284
- //#endregion
285
- export { beginForStateTransaction, clearForDomUpdateState, commitForStateTransaction, createForState, evaluateForState, isBenchMetricScopeActive, reconcileForItems, recordBenchCounter, recordBenchEvent, recordBenchTiming, registerForStateTransaction, rollbackForStateTransaction, useForState, withBenchMetricScope };
@@ -1,7 +0,0 @@
1
- import { ForState } from "./for-internal.js";
2
- import { VNode } from "../common/vnode.js";
3
-
4
- //#region src/runtime/for-reconcile.d.ts
5
- declare function reconcileForItems<T>(forState: ForState<T>, newArray: T[]): VNode[];
6
- //#endregion
7
- export { reconcileForItems };