@askrjs/askr 0.0.51 → 0.0.53

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (651) hide show
  1. package/README.md +5 -1
  2. package/dist/{runtime/scheduler.js → access-Bg4RJNC8.js} +190 -20
  3. package/dist/actions/index.d.ts +2 -0
  4. package/dist/actions/index.js +103 -0
  5. package/dist/{common/attr-names.js → attr-names-CjhzmHOn.js} +1 -3
  6. package/dist/benchmark.d.ts +7 -4
  7. package/dist/benchmark.js +63 -13
  8. package/dist/boot/index.d.ts +62 -4
  9. package/dist/boot/index.js +1 -194
  10. package/dist/boot-j2KoN6ss.js +647 -0
  11. package/dist/cleanup-COv77su2.js +487 -0
  12. package/dist/component-internal-B3z7GXlD.js +614 -0
  13. package/dist/component-lifecycle-CO4hXlP4.js +357 -0
  14. package/dist/{runtime/component-scope.js → component-scope-CC3cojX9.js} +35 -9
  15. package/dist/component-scope-CvPba6O6.d.ts +12 -0
  16. package/dist/components/index.d.ts +17 -2
  17. package/dist/components/index.js +39 -1
  18. package/dist/compose-ref-Cc_YkUpM.js +92 -0
  19. package/dist/{foundations/utilities/compose-ref.d.ts → compose-ref-Cizq72-x.d.ts} +1 -2
  20. package/dist/control/index.d.ts +1 -3
  21. package/dist/control/index.js +1 -3
  22. package/dist/control-BQvNVfAd.d.ts +436 -0
  23. package/dist/control-BYyLTFyw.js +165 -0
  24. package/dist/control-Bf4Wkdvv.d.ts +9 -0
  25. package/dist/{common/control.js → control-DhFRTIoE.js} +1 -3
  26. package/dist/data/index.d.ts +2 -6
  27. package/dist/data/index.js +4 -5
  28. package/dist/data-DnxnDxD-.js +559 -0
  29. package/dist/{data/data-runtime.js → data-runtime-SJ1BSUvk.js} +35 -36
  30. package/dist/deferred-lKE8uR0z.js +386 -0
  31. package/dist/effect-BwnIvLah.js +260 -0
  32. package/dist/fastlane-Dw8SOBr9.js +343 -0
  33. package/dist/for-internal-BKf_Tnv1.js +1563 -0
  34. package/dist/foundations/icon/index.d.ts +68 -2
  35. package/dist/foundations/icon/index.js +85 -1
  36. package/dist/foundations/index.d.ts +2 -5
  37. package/dist/foundations/index.js +2 -5
  38. package/dist/foundations/interactions/index.d.ts +264 -6
  39. package/dist/foundations/interactions/index.js +1 -6
  40. package/dist/foundations/state/index.d.ts +32 -1
  41. package/dist/foundations/state/index.js +78 -1
  42. package/dist/foundations/structures/index.d.ts +2 -7
  43. package/dist/foundations/structures/index.js +2 -7
  44. package/dist/foundations/utilities/index.d.ts +2 -6
  45. package/dist/foundations/utilities/index.js +2 -5
  46. package/dist/fx/index.d.ts +190 -3
  47. package/dist/fx/index.js +454 -4
  48. package/dist/index-31Uoz_NS.d.ts +239 -0
  49. package/dist/index-Bki2rqcr.d.ts +233 -0
  50. package/dist/index-BnU0NPwM.d.ts +101 -0
  51. package/dist/index-D73jgYx1.d.ts +48 -0
  52. package/dist/{runtime/runtime.d.ts → index-R2JJIbM-.d.ts} +31 -9
  53. package/dist/index-SJXJkssx.d.ts +44 -0
  54. package/dist/index.d.ts +8 -13
  55. package/dist/index.js +150 -17
  56. package/dist/interactions-w7gQN4ha.js +280 -0
  57. package/dist/{data/invalidation-listeners.js → invalidation-listeners-Des3AHYs.js} +1 -3
  58. package/dist/{common/props.d.ts → jsx-CP0gmYwJ.d.ts} +17 -6
  59. package/dist/{common/jsx.js → jsx-CUpRxrLH.js} +1 -3
  60. package/dist/jsx-dev-runtime.d.ts +17 -5
  61. package/dist/jsx-dev-runtime.js +3 -10
  62. package/dist/jsx-runtime-92bV2hSa.d.ts +34 -0
  63. package/dist/jsx-runtime-BVVgDSdq.d.ts +1 -0
  64. package/dist/jsx-runtime.d.ts +3 -22
  65. package/dist/jsx-runtime.js +17 -20
  66. package/dist/{runtime/lifecycle-operations.js → lifecycle-operations-D9va7GOU.js} +9 -11
  67. package/dist/navigate-BVDCzOuB.d.ts +34 -0
  68. package/dist/navigate-CmPLSXyw.js +1449 -0
  69. package/dist/{runtime/portal.js → portal-CyU3Ucf2.js} +124 -35
  70. package/dist/query-registry-CQIT4mXr.js +73 -0
  71. package/dist/{common/render-context.js → render-context-Clw3rFiO.js} +14 -8
  72. package/dist/renderer-DzPjeLby.js +6197 -0
  73. package/dist/resource-operation-CEzfpnDk.js +276 -0
  74. package/dist/resources/index.d.ts +42 -3
  75. package/dist/resources/index.js +3 -4
  76. package/dist/{common/route-activity.js → route-activity-CNJfpwx-.js} +1 -3
  77. package/dist/route-matching-vJpvLVbX.js +515 -0
  78. package/dist/router/index.d.ts +166 -14
  79. package/dist/router/index.js +150 -12
  80. package/dist/{common/router.d.ts → router-CeYvjj5_.d.ts} +72 -29
  81. package/dist/{common/router-internal.js → router-internal-BC0w1_xk.js} +1 -3
  82. package/dist/{runtime/scheduler.d.ts → scheduler-CmLO4Dfm.d.ts} +1 -4
  83. package/dist/{runtime/selector.js → selector-DafVYzV4.js} +35 -20
  84. package/dist/{runtime/snapshot-source.js → snapshot-source-BB42xgwb.js} +1 -3
  85. package/dist/ssg/index.d.ts +252 -4
  86. package/dist/ssg/index.js +857 -1
  87. package/dist/ssr/index.d.ts +225 -8
  88. package/dist/ssr/index.js +3 -6
  89. package/dist/{common/ssr.js → ssr-CbQO5xd3.js} +1 -3
  90. package/dist/ssr-D3t80Rc0.js +1413 -0
  91. package/dist/{runtime/state.js → state-DPl8lffD.js} +4 -8
  92. package/dist/structures-DUB3HchX.js +221 -0
  93. package/dist/testing/index.d.ts +4 -4
  94. package/dist/testing/index.js +2 -7
  95. package/dist/{jsx/types.d.ts → types-DnQVG4ZY.d.ts} +2 -6
  96. package/dist/{foundations/utilities/use-id.js → utilities-C_CGX4Dz.js} +1 -3
  97. package/dist/{ssr/verify-hydration.js → verify-hydration-io9ahUeq.js} +2 -4
  98. package/dist/{common/vnode.js → vnode-CGMJYPMB.js} +2 -4
  99. package/package.json +63 -45
  100. package/dist/bench/components/benchmark-row.d.ts +0 -20
  101. package/dist/bench/components/benchmark-row.d.ts.map +0 -1
  102. package/dist/bench/components/benchmark-row.js +0 -42
  103. package/dist/bench/components/benchmark-row.js.map +0 -1
  104. package/dist/bench/components/benchmark-table.js +0 -25
  105. package/dist/bench/components/benchmark-table.js.map +0 -1
  106. package/dist/benchmark.d.ts.map +0 -1
  107. package/dist/benchmark.js.map +0 -1
  108. package/dist/bin/askr-ssg.d.ts +0 -28
  109. package/dist/bin/askr-ssg.d.ts.map +0 -1
  110. package/dist/bin/askr-ssg.js +0 -171
  111. package/dist/bin/askr-ssg.js.map +0 -1
  112. package/dist/boot/hydration.js +0 -140
  113. package/dist/boot/hydration.js.map +0 -1
  114. package/dist/boot/index.d.ts.map +0 -1
  115. package/dist/boot/index.js.map +0 -1
  116. package/dist/boot/root-lifecycle.d.ts +0 -15
  117. package/dist/boot/root-lifecycle.d.ts.map +0 -1
  118. package/dist/boot/root-lifecycle.js +0 -205
  119. package/dist/boot/root-lifecycle.js.map +0 -1
  120. package/dist/boot/route-startup.js +0 -45
  121. package/dist/boot/route-startup.js.map +0 -1
  122. package/dist/boot/types.d.ts +0 -62
  123. package/dist/boot/types.d.ts.map +0 -1
  124. package/dist/common/attr-names.js.map +0 -1
  125. package/dist/common/component.d.ts +0 -19
  126. package/dist/common/component.d.ts.map +0 -1
  127. package/dist/common/control.d.ts +0 -13
  128. package/dist/common/control.d.ts.map +0 -1
  129. package/dist/common/control.js.map +0 -1
  130. package/dist/common/env.js +0 -47
  131. package/dist/common/env.js.map +0 -1
  132. package/dist/common/error-boundary.d.ts +0 -16
  133. package/dist/common/error-boundary.d.ts.map +0 -1
  134. package/dist/common/invariant.js +0 -17
  135. package/dist/common/invariant.js.map +0 -1
  136. package/dist/common/jsx.d.ts +0 -23
  137. package/dist/common/jsx.d.ts.map +0 -1
  138. package/dist/common/jsx.js.map +0 -1
  139. package/dist/common/logger.js +0 -36
  140. package/dist/common/logger.js.map +0 -1
  141. package/dist/common/promise.js +0 -8
  142. package/dist/common/promise.js.map +0 -1
  143. package/dist/common/props.d.ts.map +0 -1
  144. package/dist/common/render-context.js.map +0 -1
  145. package/dist/common/route-activity.js.map +0 -1
  146. package/dist/common/router-internal.js.map +0 -1
  147. package/dist/common/router.d.ts.map +0 -1
  148. package/dist/common/ssr-errors.d.ts +0 -11
  149. package/dist/common/ssr-errors.d.ts.map +0 -1
  150. package/dist/common/ssr-errors.js +0 -16
  151. package/dist/common/ssr-errors.js.map +0 -1
  152. package/dist/common/ssr.d.ts +0 -42
  153. package/dist/common/ssr.d.ts.map +0 -1
  154. package/dist/common/ssr.js.map +0 -1
  155. package/dist/common/vnode.d.ts +0 -22
  156. package/dist/common/vnode.d.ts.map +0 -1
  157. package/dist/common/vnode.js.map +0 -1
  158. package/dist/components/error-boundary.d.ts +0 -15
  159. package/dist/components/error-boundary.d.ts.map +0 -1
  160. package/dist/components/error-boundary.js +0 -43
  161. package/dist/components/error-boundary.js.map +0 -1
  162. package/dist/components/link.d.ts +0 -68
  163. package/dist/components/link.d.ts.map +0 -1
  164. package/dist/components/link.js +0 -76
  165. package/dist/components/link.js.map +0 -1
  166. package/dist/control/case.d.ts +0 -19
  167. package/dist/control/case.d.ts.map +0 -1
  168. package/dist/control/case.js +0 -70
  169. package/dist/control/case.js.map +0 -1
  170. package/dist/control/for.d.ts +0 -24
  171. package/dist/control/for.d.ts.map +0 -1
  172. package/dist/control/for.js +0 -63
  173. package/dist/control/for.js.map +0 -1
  174. package/dist/control/shared.d.ts +0 -9
  175. package/dist/control/shared.d.ts.map +0 -1
  176. package/dist/control/shared.js +0 -20
  177. package/dist/control/shared.js.map +0 -1
  178. package/dist/control/show.d.ts +0 -15
  179. package/dist/control/show.d.ts.map +0 -1
  180. package/dist/control/show.js +0 -34
  181. package/dist/control/show.js.map +0 -1
  182. package/dist/data/data-runtime.d.ts +0 -28
  183. package/dist/data/data-runtime.d.ts.map +0 -1
  184. package/dist/data/data-runtime.js.map +0 -1
  185. package/dist/data/invalidation-listeners.js.map +0 -1
  186. package/dist/data/invalidation.d.ts +0 -9
  187. package/dist/data/invalidation.d.ts.map +0 -1
  188. package/dist/data/invalidation.js +0 -27
  189. package/dist/data/invalidation.js.map +0 -1
  190. package/dist/data/mutation-cell.d.ts +0 -28
  191. package/dist/data/mutation-cell.d.ts.map +0 -1
  192. package/dist/data/mutation-cell.js +0 -132
  193. package/dist/data/mutation-cell.js.map +0 -1
  194. package/dist/data/query-cell.d.ts +0 -46
  195. package/dist/data/query-cell.d.ts.map +0 -1
  196. package/dist/data/query-cell.js +0 -290
  197. package/dist/data/query-cell.js.map +0 -1
  198. package/dist/data/query-key.js +0 -42
  199. package/dist/data/query-key.js.map +0 -1
  200. package/dist/data/shared.js +0 -21
  201. package/dist/data/shared.js.map +0 -1
  202. package/dist/data/testing.js +0 -2
  203. package/dist/data/types.d.ts +0 -161
  204. package/dist/data/types.d.ts.map +0 -1
  205. package/dist/foundations/icon/icon.d.ts +0 -53
  206. package/dist/foundations/icon/icon.d.ts.map +0 -1
  207. package/dist/foundations/icon/icon.js +0 -88
  208. package/dist/foundations/icon/icon.js.map +0 -1
  209. package/dist/foundations/icon/icon.types.d.ts +0 -22
  210. package/dist/foundations/icon/icon.types.d.ts.map +0 -1
  211. package/dist/foundations/interactions/dismissable.d.ts +0 -72
  212. package/dist/foundations/interactions/dismissable.d.ts.map +0 -1
  213. package/dist/foundations/interactions/dismissable.js +0 -26
  214. package/dist/foundations/interactions/dismissable.js.map +0 -1
  215. package/dist/foundations/interactions/focusable.d.ts +0 -22
  216. package/dist/foundations/interactions/focusable.d.ts.map +0 -1
  217. package/dist/foundations/interactions/focusable.js +0 -18
  218. package/dist/foundations/interactions/focusable.js.map +0 -1
  219. package/dist/foundations/interactions/hoverable.d.ts +0 -26
  220. package/dist/foundations/interactions/hoverable.d.ts.map +0 -1
  221. package/dist/foundations/interactions/hoverable.js +0 -15
  222. package/dist/foundations/interactions/hoverable.js.map +0 -1
  223. package/dist/foundations/interactions/interaction-policy.d.ts +0 -50
  224. package/dist/foundations/interactions/interaction-policy.d.ts.map +0 -1
  225. package/dist/foundations/interactions/interaction-policy.js +0 -122
  226. package/dist/foundations/interactions/interaction-policy.js.map +0 -1
  227. package/dist/foundations/interactions/pressable.d.ts +0 -61
  228. package/dist/foundations/interactions/pressable.d.ts.map +0 -1
  229. package/dist/foundations/interactions/pressable.js +0 -51
  230. package/dist/foundations/interactions/pressable.js.map +0 -1
  231. package/dist/foundations/interactions/roving-focus.d.ts +0 -52
  232. package/dist/foundations/interactions/roving-focus.d.ts.map +0 -1
  233. package/dist/foundations/interactions/roving-focus.js +0 -71
  234. package/dist/foundations/interactions/roving-focus.js.map +0 -1
  235. package/dist/foundations/state/controllable.d.ts +0 -33
  236. package/dist/foundations/state/controllable.d.ts.map +0 -1
  237. package/dist/foundations/state/controllable.js +0 -82
  238. package/dist/foundations/state/controllable.js.map +0 -1
  239. package/dist/foundations/structures/collection.d.ts +0 -52
  240. package/dist/foundations/structures/collection.d.ts.map +0 -1
  241. package/dist/foundations/structures/collection.js +0 -51
  242. package/dist/foundations/structures/collection.js.map +0 -1
  243. package/dist/foundations/structures/layer.d.ts +0 -81
  244. package/dist/foundations/structures/layer.d.ts.map +0 -1
  245. package/dist/foundations/structures/layer.js +0 -81
  246. package/dist/foundations/structures/layer.js.map +0 -1
  247. package/dist/foundations/structures/layout.d.ts +0 -33
  248. package/dist/foundations/structures/layout.d.ts.map +0 -1
  249. package/dist/foundations/structures/layout.js +0 -13
  250. package/dist/foundations/structures/layout.js.map +0 -1
  251. package/dist/foundations/structures/portal.d.ts +0 -2
  252. package/dist/foundations/structures/portal.js +0 -3
  253. package/dist/foundations/structures/presence.d.ts +0 -37
  254. package/dist/foundations/structures/presence.d.ts.map +0 -1
  255. package/dist/foundations/structures/presence.js +0 -39
  256. package/dist/foundations/structures/presence.js.map +0 -1
  257. package/dist/foundations/structures/slot.d.ts +0 -35
  258. package/dist/foundations/structures/slot.d.ts.map +0 -1
  259. package/dist/foundations/structures/slot.js +0 -41
  260. package/dist/foundations/structures/slot.js.map +0 -1
  261. package/dist/foundations/utilities/aria.d.ts +0 -16
  262. package/dist/foundations/utilities/aria.d.ts.map +0 -1
  263. package/dist/foundations/utilities/aria.js +0 -17
  264. package/dist/foundations/utilities/aria.js.map +0 -1
  265. package/dist/foundations/utilities/compose-handlers.d.ts +0 -37
  266. package/dist/foundations/utilities/compose-handlers.d.ts.map +0 -1
  267. package/dist/foundations/utilities/compose-handlers.js +0 -20
  268. package/dist/foundations/utilities/compose-handlers.js.map +0 -1
  269. package/dist/foundations/utilities/compose-ref.d.ts.map +0 -1
  270. package/dist/foundations/utilities/compose-ref.js +0 -18
  271. package/dist/foundations/utilities/compose-ref.js.map +0 -1
  272. package/dist/foundations/utilities/event-types.d.ts +0 -20
  273. package/dist/foundations/utilities/event-types.d.ts.map +0 -1
  274. package/dist/foundations/utilities/merge-props.d.ts +0 -5
  275. package/dist/foundations/utilities/merge-props.d.ts.map +0 -1
  276. package/dist/foundations/utilities/merge-props.js +0 -49
  277. package/dist/foundations/utilities/merge-props.js.map +0 -1
  278. package/dist/foundations/utilities/use-id.d.ts +0 -32
  279. package/dist/foundations/utilities/use-id.d.ts.map +0 -1
  280. package/dist/foundations/utilities/use-id.js.map +0 -1
  281. package/dist/fx/fx.d.ts +0 -33
  282. package/dist/fx/fx.d.ts.map +0 -1
  283. package/dist/fx/fx.js +0 -213
  284. package/dist/fx/fx.js.map +0 -1
  285. package/dist/fx/noop.js +0 -9
  286. package/dist/fx/noop.js.map +0 -1
  287. package/dist/fx/timing.d.ts +0 -159
  288. package/dist/fx/timing.d.ts.map +0 -1
  289. package/dist/fx/timing.js +0 -243
  290. package/dist/fx/timing.js.map +0 -1
  291. package/dist/index.js.map +0 -1
  292. package/dist/jsx/index.d.ts +0 -2
  293. package/dist/jsx/index.js +0 -4
  294. package/dist/jsx/types.d.ts.map +0 -1
  295. package/dist/jsx/types.js +0 -2
  296. package/dist/jsx/utils.d.ts +0 -5
  297. package/dist/jsx/utils.d.ts.map +0 -1
  298. package/dist/jsx/utils.js +0 -19
  299. package/dist/jsx/utils.js.map +0 -1
  300. package/dist/jsx-dev-runtime.d.ts.map +0 -1
  301. package/dist/jsx-dev-runtime.js.map +0 -1
  302. package/dist/jsx-runtime.d.ts.map +0 -1
  303. package/dist/jsx-runtime.js.map +0 -1
  304. package/dist/jsx-runtime2.d.ts +0 -3
  305. package/dist/jsx-runtime2.js +0 -4
  306. package/dist/renderer/attributes.js +0 -232
  307. package/dist/renderer/attributes.js.map +0 -1
  308. package/dist/renderer/boundaries.js +0 -266
  309. package/dist/renderer/boundaries.js.map +0 -1
  310. package/dist/renderer/child-shape.js +0 -85
  311. package/dist/renderer/child-shape.js.map +0 -1
  312. package/dist/renderer/children-fastpath.js +0 -149
  313. package/dist/renderer/children-fastpath.js.map +0 -1
  314. package/dist/renderer/children.js +0 -160
  315. package/dist/renderer/children.js.map +0 -1
  316. package/dist/renderer/cleanup.js +0 -210
  317. package/dist/renderer/cleanup.js.map +0 -1
  318. package/dist/renderer/component-host-cleanup.js +0 -68
  319. package/dist/renderer/component-host-cleanup.js.map +0 -1
  320. package/dist/renderer/component-host-instances.js +0 -65
  321. package/dist/renderer/component-host-instances.js.map +0 -1
  322. package/dist/renderer/component-host.js +0 -247
  323. package/dist/renderer/component-host.js.map +0 -1
  324. package/dist/renderer/dom-host.js +0 -13
  325. package/dist/renderer/dom-host.js.map +0 -1
  326. package/dist/renderer/dom-internal.js +0 -186
  327. package/dist/renderer/dom-internal.js.map +0 -1
  328. package/dist/renderer/dom.js +0 -10
  329. package/dist/renderer/element-children.js +0 -279
  330. package/dist/renderer/element-children.js.map +0 -1
  331. package/dist/renderer/env.js +0 -2
  332. package/dist/renderer/error-boundary-dom.js +0 -78
  333. package/dist/renderer/error-boundary-dom.js.map +0 -1
  334. package/dist/renderer/evaluate-dom-range.js +0 -85
  335. package/dist/renderer/evaluate-dom-range.js.map +0 -1
  336. package/dist/renderer/evaluate-reconcile.js +0 -282
  337. package/dist/renderer/evaluate-reconcile.js.map +0 -1
  338. package/dist/renderer/evaluate.js +0 -84
  339. package/dist/renderer/evaluate.js.map +0 -1
  340. package/dist/renderer/fastpath.js +0 -150
  341. package/dist/renderer/fastpath.js.map +0 -1
  342. package/dist/renderer/for-commit-dom-map.js +0 -83
  343. package/dist/renderer/for-commit-dom-map.js.map +0 -1
  344. package/dist/renderer/for-commit-removal.js +0 -36
  345. package/dist/renderer/for-commit-removal.js.map +0 -1
  346. package/dist/renderer/for-commit-reorder.js +0 -89
  347. package/dist/renderer/for-commit-reorder.js.map +0 -1
  348. package/dist/renderer/for-commit.js +0 -314
  349. package/dist/renderer/for-commit.js.map +0 -1
  350. package/dist/renderer/index.js +0 -38
  351. package/dist/renderer/index.js.map +0 -1
  352. package/dist/renderer/keyed-children.js +0 -32
  353. package/dist/renderer/keyed-children.js.map +0 -1
  354. package/dist/renderer/keyed.js +0 -167
  355. package/dist/renderer/keyed.js.map +0 -1
  356. package/dist/renderer/namespaces.js +0 -23
  357. package/dist/renderer/namespaces.js.map +0 -1
  358. package/dist/renderer/prop-bindings.js +0 -280
  359. package/dist/renderer/prop-bindings.js.map +0 -1
  360. package/dist/renderer/reactive-child-dom.js +0 -133
  361. package/dist/renderer/reactive-child-dom.js.map +0 -1
  362. package/dist/renderer/reactive-child-sources.js +0 -184
  363. package/dist/renderer/reactive-child-sources.js.map +0 -1
  364. package/dist/renderer/reactive-children.js +0 -294
  365. package/dist/renderer/reactive-children.js.map +0 -1
  366. package/dist/renderer/reconcile-commit.js +0 -38
  367. package/dist/renderer/reconcile-commit.js.map +0 -1
  368. package/dist/renderer/reconcile-fastpaths.js +0 -107
  369. package/dist/renderer/reconcile-fastpaths.js.map +0 -1
  370. package/dist/renderer/reconcile-resolution.js +0 -187
  371. package/dist/renderer/reconcile-resolution.js.map +0 -1
  372. package/dist/renderer/reconcile.js +0 -39
  373. package/dist/renderer/reconcile.js.map +0 -1
  374. package/dist/renderer/retained-element-rollback.js +0 -277
  375. package/dist/renderer/retained-element-rollback.js.map +0 -1
  376. package/dist/renderer/stable-patch.js +0 -81
  377. package/dist/renderer/stable-patch.js.map +0 -1
  378. package/dist/renderer/static-reuse.js +0 -96
  379. package/dist/renderer/static-reuse.js.map +0 -1
  380. package/dist/renderer/types.js +0 -2
  381. package/dist/renderer/utils.js +0 -256
  382. package/dist/renderer/utils.js.map +0 -1
  383. package/dist/router/access.js +0 -36
  384. package/dist/router/access.js.map +0 -1
  385. package/dist/router/activity.d.ts +0 -10
  386. package/dist/router/activity.d.ts.map +0 -1
  387. package/dist/router/activity.js +0 -87
  388. package/dist/router/activity.js.map +0 -1
  389. package/dist/router/authoring.d.ts +0 -22
  390. package/dist/router/authoring.d.ts.map +0 -1
  391. package/dist/router/authoring.js +0 -198
  392. package/dist/router/authoring.js.map +0 -1
  393. package/dist/router/internal-types.d.ts +0 -31
  394. package/dist/router/internal-types.d.ts.map +0 -1
  395. package/dist/router/lazy.d.ts +0 -19
  396. package/dist/router/lazy.d.ts.map +0 -1
  397. package/dist/router/lazy.js +0 -52
  398. package/dist/router/lazy.js.map +0 -1
  399. package/dist/router/manifest.d.ts +0 -10
  400. package/dist/router/manifest.d.ts.map +0 -1
  401. package/dist/router/manifest.js +0 -49
  402. package/dist/router/manifest.js.map +0 -1
  403. package/dist/router/match.js +0 -122
  404. package/dist/router/match.js.map +0 -1
  405. package/dist/router/navigate.d.ts +0 -11
  406. package/dist/router/navigate.d.ts.map +0 -1
  407. package/dist/router/navigate.js +0 -76
  408. package/dist/router/navigate.js.map +0 -1
  409. package/dist/router/navigation-registry.d.ts +0 -32
  410. package/dist/router/navigation-registry.d.ts.map +0 -1
  411. package/dist/router/navigation-registry.js +0 -105
  412. package/dist/router/navigation-registry.js.map +0 -1
  413. package/dist/router/navigation-scroll.d.ts +0 -14
  414. package/dist/router/navigation-scroll.d.ts.map +0 -1
  415. package/dist/router/navigation-scroll.js +0 -93
  416. package/dist/router/navigation-scroll.js.map +0 -1
  417. package/dist/router/navigation-targets.d.ts +0 -31
  418. package/dist/router/navigation-targets.d.ts.map +0 -1
  419. package/dist/router/navigation-targets.js +0 -255
  420. package/dist/router/navigation-targets.js.map +0 -1
  421. package/dist/router/policy.d.ts +0 -28
  422. package/dist/router/policy.d.ts.map +0 -1
  423. package/dist/router/policy.js +0 -132
  424. package/dist/router/policy.js.map +0 -1
  425. package/dist/router/rendering.d.ts +0 -10
  426. package/dist/router/rendering.d.ts.map +0 -1
  427. package/dist/router/rendering.js +0 -46
  428. package/dist/router/rendering.js.map +0 -1
  429. package/dist/router/resolution.d.ts +0 -4
  430. package/dist/router/resolution.d.ts.map +0 -1
  431. package/dist/router/resolution.js +0 -86
  432. package/dist/router/resolution.js.map +0 -1
  433. package/dist/router/route-context.js +0 -79
  434. package/dist/router/route-context.js.map +0 -1
  435. package/dist/router/route-matching.d.ts +0 -20
  436. package/dist/router/route-matching.d.ts.map +0 -1
  437. package/dist/router/route-matching.js +0 -175
  438. package/dist/router/route-matching.js.map +0 -1
  439. package/dist/router/route-query.d.ts +0 -17
  440. package/dist/router/route-query.d.ts.map +0 -1
  441. package/dist/router/route-query.js +0 -47
  442. package/dist/router/route-query.js.map +0 -1
  443. package/dist/router/route.d.ts +0 -8
  444. package/dist/router/route.js +0 -10
  445. package/dist/router/store.d.ts +0 -50
  446. package/dist/router/store.d.ts.map +0 -1
  447. package/dist/router/store.js +0 -171
  448. package/dist/router/store.js.map +0 -1
  449. package/dist/router/testing.js +0 -4
  450. package/dist/runtime/access.d.ts +0 -20
  451. package/dist/runtime/access.d.ts.map +0 -1
  452. package/dist/runtime/access.js +0 -45
  453. package/dist/runtime/access.js.map +0 -1
  454. package/dist/runtime/child-scope.d.ts +0 -22
  455. package/dist/runtime/child-scope.d.ts.map +0 -1
  456. package/dist/runtime/child-scope.js +0 -87
  457. package/dist/runtime/child-scope.js.map +0 -1
  458. package/dist/runtime/component-cleanup.d.ts +0 -16
  459. package/dist/runtime/component-cleanup.d.ts.map +0 -1
  460. package/dist/runtime/component-cleanup.js +0 -70
  461. package/dist/runtime/component-cleanup.js.map +0 -1
  462. package/dist/runtime/component-commit.js +0 -165
  463. package/dist/runtime/component-commit.js.map +0 -1
  464. package/dist/runtime/component-facade.d.ts +0 -5
  465. package/dist/runtime/component-facade.js +0 -4
  466. package/dist/runtime/component-internal.d.ts +0 -100
  467. package/dist/runtime/component-internal.d.ts.map +0 -1
  468. package/dist/runtime/component-internal.js +0 -219
  469. package/dist/runtime/component-internal.js.map +0 -1
  470. package/dist/runtime/component-lifecycle.d.ts +0 -49
  471. package/dist/runtime/component-lifecycle.d.ts.map +0 -1
  472. package/dist/runtime/component-lifecycle.js +0 -176
  473. package/dist/runtime/component-lifecycle.js.map +0 -1
  474. package/dist/runtime/component-scope.d.ts +0 -55
  475. package/dist/runtime/component-scope.d.ts.map +0 -1
  476. package/dist/runtime/component-scope.js.map +0 -1
  477. package/dist/runtime/component.d.ts +0 -5
  478. package/dist/runtime/component.js +0 -5
  479. package/dist/runtime/context.d.ts +0 -69
  480. package/dist/runtime/context.d.ts.map +0 -1
  481. package/dist/runtime/context.js +0 -210
  482. package/dist/runtime/context.js.map +0 -1
  483. package/dist/runtime/control.d.ts +0 -43
  484. package/dist/runtime/control.d.ts.map +0 -1
  485. package/dist/runtime/control.js +0 -126
  486. package/dist/runtime/control.js.map +0 -1
  487. package/dist/runtime/derive.d.ts +0 -17
  488. package/dist/runtime/derive.d.ts.map +0 -1
  489. package/dist/runtime/derive.js +0 -142
  490. package/dist/runtime/derive.js.map +0 -1
  491. package/dist/runtime/dev-namespace.d.ts +0 -31
  492. package/dist/runtime/dev-namespace.d.ts.map +0 -1
  493. package/dist/runtime/dev-namespace.js +0 -57
  494. package/dist/runtime/dev-namespace.js.map +0 -1
  495. package/dist/runtime/effect.d.ts +0 -32
  496. package/dist/runtime/effect.d.ts.map +0 -1
  497. package/dist/runtime/effect.js +0 -177
  498. package/dist/runtime/effect.js.map +0 -1
  499. package/dist/runtime/error-boundary.d.ts +0 -5
  500. package/dist/runtime/error-boundary.d.ts.map +0 -1
  501. package/dist/runtime/error-boundary.js +0 -31
  502. package/dist/runtime/error-boundary.js.map +0 -1
  503. package/dist/runtime/events.d.ts +0 -58
  504. package/dist/runtime/events.d.ts.map +0 -1
  505. package/dist/runtime/events.js +0 -204
  506. package/dist/runtime/events.js.map +0 -1
  507. package/dist/runtime/execution-model.d.ts +0 -7
  508. package/dist/runtime/execution-model.d.ts.map +0 -1
  509. package/dist/runtime/execution-model.js +0 -15
  510. package/dist/runtime/execution-model.js.map +0 -1
  511. package/dist/runtime/fastlane.d.ts +0 -34
  512. package/dist/runtime/fastlane.d.ts.map +0 -1
  513. package/dist/runtime/fastlane.js +0 -175
  514. package/dist/runtime/fastlane.js.map +0 -1
  515. package/dist/runtime/for-bench.d.ts +0 -41
  516. package/dist/runtime/for-bench.d.ts.map +0 -1
  517. package/dist/runtime/for-bench.js +0 -171
  518. package/dist/runtime/for-bench.js.map +0 -1
  519. package/dist/runtime/for-internal.d.ts +0 -43
  520. package/dist/runtime/for-internal.d.ts.map +0 -1
  521. package/dist/runtime/for-internal.js +0 -98
  522. package/dist/runtime/for-internal.js.map +0 -1
  523. package/dist/runtime/for-reconcile.d.ts +0 -8
  524. package/dist/runtime/for-reconcile.d.ts.map +0 -1
  525. package/dist/runtime/for-reconcile.js +0 -389
  526. package/dist/runtime/for-reconcile.js.map +0 -1
  527. package/dist/runtime/for-scopes.d.ts +0 -26
  528. package/dist/runtime/for-scopes.d.ts.map +0 -1
  529. package/dist/runtime/for-scopes.js +0 -160
  530. package/dist/runtime/for-scopes.js.map +0 -1
  531. package/dist/runtime/for-signals.d.ts +0 -30
  532. package/dist/runtime/for-signals.d.ts.map +0 -1
  533. package/dist/runtime/for-signals.js +0 -139
  534. package/dist/runtime/for-signals.js.map +0 -1
  535. package/dist/runtime/for-types.d.ts +0 -9
  536. package/dist/runtime/for-types.d.ts.map +0 -1
  537. package/dist/runtime/for.d.ts +0 -4
  538. package/dist/runtime/for.js +0 -5
  539. package/dist/runtime/index.d.ts +0 -24
  540. package/dist/runtime/index.js +0 -31
  541. package/dist/runtime/lifecycle-operations.d.ts +0 -31
  542. package/dist/runtime/lifecycle-operations.d.ts.map +0 -1
  543. package/dist/runtime/lifecycle-operations.js.map +0 -1
  544. package/dist/runtime/operations.d.ts +0 -3
  545. package/dist/runtime/operations.js +0 -3
  546. package/dist/runtime/perf-metrics.d.ts +0 -26
  547. package/dist/runtime/perf-metrics.d.ts.map +0 -1
  548. package/dist/runtime/perf-metrics.js +0 -70
  549. package/dist/runtime/perf-metrics.js.map +0 -1
  550. package/dist/runtime/portal.d.ts +0 -22
  551. package/dist/runtime/portal.d.ts.map +0 -1
  552. package/dist/runtime/portal.js.map +0 -1
  553. package/dist/runtime/readable.d.ts +0 -29
  554. package/dist/runtime/readable.d.ts.map +0 -1
  555. package/dist/runtime/readable.js +0 -159
  556. package/dist/runtime/readable.js.map +0 -1
  557. package/dist/runtime/resource-cell.js +0 -114
  558. package/dist/runtime/resource-cell.js.map +0 -1
  559. package/dist/runtime/resource-operation.d.ts +0 -13
  560. package/dist/runtime/resource-operation.d.ts.map +0 -1
  561. package/dist/runtime/resource-operation.js +0 -170
  562. package/dist/runtime/resource-operation.js.map +0 -1
  563. package/dist/runtime/runtime.d.ts.map +0 -1
  564. package/dist/runtime/runtime.js +0 -59
  565. package/dist/runtime/runtime.js.map +0 -1
  566. package/dist/runtime/scheduler.d.ts.map +0 -1
  567. package/dist/runtime/scheduler.js.map +0 -1
  568. package/dist/runtime/selector-store.js +0 -24
  569. package/dist/runtime/selector-store.js.map +0 -1
  570. package/dist/runtime/selector.d.ts +0 -11
  571. package/dist/runtime/selector.d.ts.map +0 -1
  572. package/dist/runtime/selector.js.map +0 -1
  573. package/dist/runtime/snapshot-source.d.ts +0 -10
  574. package/dist/runtime/snapshot-source.d.ts.map +0 -1
  575. package/dist/runtime/snapshot-source.js.map +0 -1
  576. package/dist/runtime/state.d.ts +0 -55
  577. package/dist/runtime/state.d.ts.map +0 -1
  578. package/dist/runtime/state.js.map +0 -1
  579. package/dist/ssg/batch-render.js +0 -103
  580. package/dist/ssg/batch-render.js.map +0 -1
  581. package/dist/ssg/create-static-gen.d.ts +0 -64
  582. package/dist/ssg/create-static-gen.d.ts.map +0 -1
  583. package/dist/ssg/create-static-gen.js +0 -199
  584. package/dist/ssg/create-static-gen.js.map +0 -1
  585. package/dist/ssg/generate-metadata.js +0 -94
  586. package/dist/ssg/generate-metadata.js.map +0 -1
  587. package/dist/ssg/generation-plan.js +0 -70
  588. package/dist/ssg/generation-plan.js.map +0 -1
  589. package/dist/ssg/incremental-manifest.js +0 -56
  590. package/dist/ssg/incremental-manifest.js.map +0 -1
  591. package/dist/ssg/resolve-ssg-data.js +0 -105
  592. package/dist/ssg/resolve-ssg-data.js.map +0 -1
  593. package/dist/ssg/route-utils.js +0 -24
  594. package/dist/ssg/route-utils.js.map +0 -1
  595. package/dist/ssg/static-routes.js +0 -102
  596. package/dist/ssg/static-routes.js.map +0 -1
  597. package/dist/ssg/types.d.ts +0 -189
  598. package/dist/ssg/types.d.ts.map +0 -1
  599. package/dist/ssg/write-static-files.js +0 -73
  600. package/dist/ssg/write-static-files.js.map +0 -1
  601. package/dist/ssr/attrs.js +0 -94
  602. package/dist/ssr/attrs.js.map +0 -1
  603. package/dist/ssr/boundaries.js +0 -113
  604. package/dist/ssr/boundaries.js.map +0 -1
  605. package/dist/ssr/component-runtime.js +0 -111
  606. package/dist/ssr/component-runtime.js.map +0 -1
  607. package/dist/ssr/context.d.ts +0 -50
  608. package/dist/ssr/context.d.ts.map +0 -1
  609. package/dist/ssr/context.js +0 -91
  610. package/dist/ssr/context.js.map +0 -1
  611. package/dist/ssr/errors.d.ts +0 -10
  612. package/dist/ssr/errors.d.ts.map +0 -1
  613. package/dist/ssr/errors.js +0 -14
  614. package/dist/ssr/errors.js.map +0 -1
  615. package/dist/ssr/escape.js +0 -193
  616. package/dist/ssr/escape.js.map +0 -1
  617. package/dist/ssr/hydration-data.js +0 -10
  618. package/dist/ssr/hydration-data.js.map +0 -1
  619. package/dist/ssr/hydration-verify.d.ts +0 -12
  620. package/dist/ssr/hydration-verify.d.ts.map +0 -1
  621. package/dist/ssr/hydration-verify.js +0 -144
  622. package/dist/ssr/hydration-verify.js.map +0 -1
  623. package/dist/ssr/index-internal.d.ts +0 -15
  624. package/dist/ssr/index-internal.d.ts.map +0 -1
  625. package/dist/ssr/index-internal.js +0 -19
  626. package/dist/ssr/index-internal.js.map +0 -1
  627. package/dist/ssr/render-keys.js +0 -16
  628. package/dist/ssr/render-keys.js.map +0 -1
  629. package/dist/ssr/render-resolved.d.ts +0 -20
  630. package/dist/ssr/render-resolved.d.ts.map +0 -1
  631. package/dist/ssr/render-resolved.js +0 -35
  632. package/dist/ssr/render-resolved.js.map +0 -1
  633. package/dist/ssr/render-sync.d.ts +0 -21
  634. package/dist/ssr/render-sync.d.ts.map +0 -1
  635. package/dist/ssr/render-sync.js +0 -275
  636. package/dist/ssr/render-sync.js.map +0 -1
  637. package/dist/ssr/route-policy-resolution.js +0 -78
  638. package/dist/ssr/route-policy-resolution.js.map +0 -1
  639. package/dist/ssr/route-render.d.ts +0 -77
  640. package/dist/ssr/route-render.d.ts.map +0 -1
  641. package/dist/ssr/route-render.js +0 -120
  642. package/dist/ssr/route-render.js.map +0 -1
  643. package/dist/ssr/sink.d.ts +0 -26
  644. package/dist/ssr/sink.d.ts.map +0 -1
  645. package/dist/ssr/sink.js +0 -86
  646. package/dist/ssr/sink.js.map +0 -1
  647. package/dist/ssr/types.d.ts +0 -23
  648. package/dist/ssr/types.d.ts.map +0 -1
  649. package/dist/ssr/verify-hydration.js.map +0 -1
  650. package/dist/testing/index.d.ts.map +0 -1
  651. package/dist/testing/index.js.map +0 -1
@@ -1,177 +0,0 @@
1
- import { enqueueRuntimeLane } from "./access.js";
2
- import { withFineGrainedReadTracking } from "./readable.js";
3
- import { incDevCounter } from "./dev-namespace.js";
4
- //#region src/runtime/effect.ts
5
- const effectSources = /* @__PURE__ */ new WeakMap();
6
- const dirtyEffectsByLane = {
7
- derived: /* @__PURE__ */ new Set(),
8
- component: /* @__PURE__ */ new Set(),
9
- reactive: /* @__PURE__ */ new Set(),
10
- post: /* @__PURE__ */ new Set()
11
- };
12
- const hasPendingLaneFlush = {
13
- derived: false,
14
- component: false,
15
- reactive: false,
16
- post: false
17
- };
18
- const dirtyLaneState = {
19
- derived: false,
20
- component: false,
21
- reactive: false,
22
- post: false
23
- };
24
- const MAX_EFFECT_RUNS_PER_FLUSH = 50;
25
- const LANE_FLUSH_TASKS = {
26
- derived: () => flushLaneEffects("derived"),
27
- component: () => flushLaneEffects("component"),
28
- reactive: () => flushLaneEffects("reactive"),
29
- post: () => flushLaneEffects("post")
30
- };
31
- function registerEffectSource(source, effect) {
32
- let effects = effectSources.get(source);
33
- if (!effects) {
34
- effects = /* @__PURE__ */ new Set();
35
- effectSources.set(source, effects);
36
- }
37
- effects.add(effect);
38
- }
39
- function unregisterEffectSource(source, effect) {
40
- effectSources.get(source)?.delete(effect);
41
- }
42
- function clearEffectSubscriptions(effect) {
43
- for (const source of effect.readSources) unregisterEffectSource(source, effect);
44
- effect.readSources.clear();
45
- }
46
- function normalizeNextSources(previousSources, pendingSources) {
47
- if (previousSources.size === pendingSources.size) {
48
- let same = true;
49
- for (const source of previousSources) if (!pendingSources.has(source)) {
50
- same = false;
51
- break;
52
- }
53
- if (same) return previousSources;
54
- }
55
- return new Set(pendingSources);
56
- }
57
- function evaluateEffect(effect) {
58
- const pendingSources = /* @__PURE__ */ new Set();
59
- incDevCounter("effectRuns");
60
- return {
61
- value: withFineGrainedReadTracking(pendingSources, () => effect.compute()),
62
- nextSources: normalizeNextSources(effect.readSources, pendingSources)
63
- };
64
- }
65
- function commitEffectSubscriptions(effect, nextSources) {
66
- const previousSources = effect.readSources;
67
- if (previousSources === nextSources) return;
68
- for (const source of previousSources) if (!nextSources.has(source)) unregisterEffectSource(source, effect);
69
- for (const source of nextSources) if (!previousSources.has(source)) registerEffectSource(source, effect);
70
- effect.readSources = nextSources;
71
- }
72
- function commitEffectResult(effect, value, nextSources) {
73
- const previousValue = effect.lastValue;
74
- if (!effect.hasValue || !effect.equals(previousValue, value)) effect.commit(value, effect.hasValue ? previousValue : void 0);
75
- commitEffectSubscriptions(effect, nextSources);
76
- effect.lastValue = value;
77
- effect.hasValue = true;
78
- }
79
- function flushLaneEffects(lane) {
80
- hasPendingLaneFlush[lane] = false;
81
- const effects = dirtyEffectsByLane[lane];
82
- if (effects.size === 0) return;
83
- const pending = effects.values();
84
- const effectRuns = /* @__PURE__ */ new Map();
85
- let next = pending.next();
86
- while (!next.done) {
87
- const effect = next.value;
88
- effects.delete(effect);
89
- if (!effect.isActive) {
90
- next = pending.next();
91
- continue;
92
- }
93
- const runCount = (effectRuns.get(effect) ?? 0) + 1;
94
- effectRuns.set(effect, runCount);
95
- if (runCount > MAX_EFFECT_RUNS_PER_FLUSH) {
96
- const error = /* @__PURE__ */ new Error(`[Askr] fine-grained effect exceeded ${MAX_EFFECT_RUNS_PER_FLUSH} runs in one flush. Likely reactive cycle.`);
97
- if (effect.onError) effect.onError(error);
98
- else throw error;
99
- next = pending.next();
100
- continue;
101
- }
102
- try {
103
- const { value, nextSources } = evaluateEffect(effect);
104
- commitEffectResult(effect, value, nextSources);
105
- } catch (error) {
106
- effect.onError?.(error);
107
- }
108
- next = pending.next();
109
- }
110
- }
111
- function scheduleLaneFlush(lane) {
112
- if (hasPendingLaneFlush[lane]) return;
113
- hasPendingLaneFlush[lane] = true;
114
- enqueueRuntimeLane(lane, LANE_FLUSH_TASKS[lane]);
115
- }
116
- function unscheduleEffect(effect) {
117
- dirtyEffectsByLane[effect.lane].delete(effect);
118
- }
119
- function recomputeEffectNow(effect) {
120
- const { value, nextSources } = evaluateEffect(effect);
121
- commitEffectResult(effect, value, nextSources);
122
- }
123
- function markFineGrainedEffectsDirtySource(source) {
124
- const effects = effectSources.get(source);
125
- if (!effects || effects.size === 0) return;
126
- dirtyLaneState.derived = false;
127
- dirtyLaneState.component = false;
128
- dirtyLaneState.reactive = false;
129
- dirtyLaneState.post = false;
130
- for (const effect of effects) {
131
- if (!effect.isActive) continue;
132
- const lane = effect.lane;
133
- dirtyEffectsByLane[lane].add(effect);
134
- dirtyLaneState[lane] = true;
135
- }
136
- if (dirtyLaneState.derived) scheduleLaneFlush("derived");
137
- if (dirtyLaneState.component) scheduleLaneFlush("component");
138
- if (dirtyLaneState.reactive) scheduleLaneFlush("reactive");
139
- if (dirtyLaneState.post) scheduleLaneFlush("post");
140
- }
141
- function createFineGrainedEffect(options) {
142
- const effect = {
143
- lane: options.lane,
144
- compute: options.compute,
145
- commit: options.commit,
146
- equals: options.equals ?? Object.is,
147
- readSources: /* @__PURE__ */ new Set(),
148
- isActive: true,
149
- hasValue: false,
150
- lastValue: void 0,
151
- onError: options.onError
152
- };
153
- recomputeEffectNow(effect);
154
- return {
155
- cleanup() {
156
- if (!effect.isActive) return;
157
- effect.isActive = false;
158
- unscheduleEffect(effect);
159
- clearEffectSubscriptions(effect);
160
- },
161
- updateCompute(nextCompute) {
162
- if (!effect.isActive) return;
163
- effect.compute = nextCompute;
164
- unscheduleEffect(effect);
165
- recomputeEffectNow(effect);
166
- },
167
- flush() {
168
- if (!effect.isActive) return;
169
- unscheduleEffect(effect);
170
- recomputeEffectNow(effect);
171
- }
172
- };
173
- }
174
- //#endregion
175
- export { createFineGrainedEffect, markFineGrainedEffectsDirtySource };
176
-
177
- //# sourceMappingURL=effect.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"effect.js","names":[],"sources":["../../src/runtime/effect.ts"],"sourcesContent":["import { incDevCounter } from './dev-namespace';\nimport { type ReadableSource, withFineGrainedReadTracking } from './readable';\nimport { enqueueRuntimeLane } from './access';\nimport type { SchedulerLane } from './scheduler';\n\ntype EffectRegistry = WeakMap<\n ReadableSource<unknown>,\n Set<FineGrainedEffect<unknown>>\n>;\n\ntype EffectFlushSets = Record<SchedulerLane, Set<FineGrainedEffect<unknown>>>;\n\ntype EffectPendingFlushState = Record<SchedulerLane, boolean>;\ntype EffectLaneDirtyState = Record<SchedulerLane, boolean>;\n\nconst effectSources: EffectRegistry = new WeakMap();\nconst dirtyEffectsByLane: EffectFlushSets = {\n derived: new Set(),\n component: new Set(),\n reactive: new Set(),\n post: new Set(),\n};\nconst hasPendingLaneFlush: EffectPendingFlushState = {\n derived: false,\n component: false,\n reactive: false,\n post: false,\n};\n\nconst dirtyLaneState: EffectLaneDirtyState = {\n derived: false,\n component: false,\n reactive: false,\n post: false,\n};\n\nconst MAX_EFFECT_RUNS_PER_FLUSH = 50;\nconst LANE_FLUSH_TASKS: Record<SchedulerLane, () => void> = {\n derived: () => flushLaneEffects('derived'),\n component: () => flushLaneEffects('component'),\n reactive: () => flushLaneEffects('reactive'),\n post: () => flushLaneEffects('post'),\n};\n\nexport interface FineGrainedEffect<T> {\n lane: SchedulerLane;\n compute(): T;\n commit(value: T, previousValue: T | undefined): void;\n equals(previousValue: T, nextValue: T): boolean;\n readSources: Set<ReadableSource<unknown>>;\n isActive: boolean;\n hasValue: boolean;\n lastValue: T | undefined;\n onError?(error: unknown): void;\n}\n\nexport interface FineGrainedEffectHandle<T> {\n cleanup(): void;\n updateCompute(nextCompute: () => T): void;\n flush(): void;\n}\n\nexport interface CreateFineGrainedEffectOptions<T> {\n lane: SchedulerLane;\n compute: () => T;\n commit: (value: T, previousValue: T | undefined) => void;\n equals?: (previousValue: T, nextValue: T) => boolean;\n onError?: (error: unknown) => void;\n}\n\nfunction registerEffectSource(\n source: ReadableSource<unknown>,\n effect: FineGrainedEffect<unknown>\n): void {\n let effects = effectSources.get(source);\n if (!effects) {\n effects = new Set();\n effectSources.set(source, effects);\n }\n effects.add(effect);\n}\n\nfunction unregisterEffectSource(\n source: ReadableSource<unknown>,\n effect: FineGrainedEffect<unknown>\n): void {\n effectSources.get(source)?.delete(effect);\n}\n\nfunction clearEffectSubscriptions(effect: FineGrainedEffect<unknown>): void {\n for (const source of effect.readSources) {\n unregisterEffectSource(source, effect);\n }\n effect.readSources.clear();\n}\n\nfunction normalizeNextSources(\n previousSources: Set<ReadableSource<unknown>>,\n pendingSources: Set<ReadableSource<unknown>>\n): Set<ReadableSource<unknown>> {\n if (previousSources.size === pendingSources.size) {\n let same = true;\n for (const source of previousSources) {\n if (!pendingSources.has(source)) {\n same = false;\n break;\n }\n }\n\n if (same) {\n return previousSources;\n }\n }\n\n return new Set(pendingSources);\n}\n\nfunction evaluateEffect<T>(effect: FineGrainedEffect<T>): {\n value: T;\n nextSources: Set<ReadableSource<unknown>>;\n} {\n const pendingSources = new Set<ReadableSource<unknown>>();\n\n incDevCounter('effectRuns');\n const value = withFineGrainedReadTracking(pendingSources, () =>\n effect.compute()\n );\n const nextSources = normalizeNextSources(effect.readSources, pendingSources);\n return { value, nextSources };\n}\n\nfunction commitEffectSubscriptions(\n effect: FineGrainedEffect<unknown>,\n nextSources: Set<ReadableSource<unknown>>\n): void {\n const previousSources = effect.readSources;\n\n if (previousSources === nextSources) {\n return;\n }\n\n for (const source of previousSources) {\n if (!nextSources.has(source)) {\n unregisterEffectSource(source, effect);\n }\n }\n\n for (const source of nextSources) {\n if (!previousSources.has(source)) {\n registerEffectSource(source, effect);\n }\n }\n\n effect.readSources = nextSources;\n}\n\nfunction commitEffectResult<T>(\n effect: FineGrainedEffect<T>,\n value: T,\n nextSources: Set<ReadableSource<unknown>>\n): void {\n const previousValue = effect.lastValue;\n const shouldCommit =\n !effect.hasValue || !effect.equals(previousValue as T, value);\n\n if (shouldCommit) {\n effect.commit(value, effect.hasValue ? previousValue : undefined);\n }\n\n commitEffectSubscriptions(effect, nextSources);\n effect.lastValue = value;\n effect.hasValue = true;\n}\n\nfunction flushLaneEffects(lane: SchedulerLane): void {\n hasPendingLaneFlush[lane] = false;\n\n const effects = dirtyEffectsByLane[lane];\n if (effects.size === 0) {\n return;\n }\n\n const pending = effects.values();\n const effectRuns = new Map<FineGrainedEffect<unknown>, number>();\n let next = pending.next();\n\n while (!next.done) {\n const effect = next.value as FineGrainedEffect<unknown>;\n effects.delete(effect);\n if (!effect.isActive) {\n next = pending.next();\n continue;\n }\n\n const runCount = (effectRuns.get(effect) ?? 0) + 1;\n effectRuns.set(effect, runCount);\n if (runCount > MAX_EFFECT_RUNS_PER_FLUSH) {\n const error = new Error(\n `[Askr] fine-grained effect exceeded ${MAX_EFFECT_RUNS_PER_FLUSH} runs in one flush. Likely reactive cycle.`\n );\n if (effect.onError) {\n effect.onError(error);\n } else {\n throw error;\n }\n next = pending.next();\n continue;\n }\n\n try {\n const { value, nextSources } = evaluateEffect(effect);\n commitEffectResult(effect, value, nextSources);\n } catch (error) {\n effect.onError?.(error);\n }\n\n next = pending.next();\n }\n}\n\nfunction scheduleLaneFlush(lane: SchedulerLane): void {\n if (hasPendingLaneFlush[lane]) {\n return;\n }\n\n hasPendingLaneFlush[lane] = true;\n enqueueRuntimeLane(lane, LANE_FLUSH_TASKS[lane]);\n}\n\nfunction unscheduleEffect(effect: FineGrainedEffect<unknown>): void {\n dirtyEffectsByLane[effect.lane].delete(effect);\n}\n\nfunction recomputeEffectNow<T>(effect: FineGrainedEffect<T>): void {\n const { value, nextSources } = evaluateEffect(effect);\n commitEffectResult(effect, value, nextSources);\n}\n\nexport function markFineGrainedEffectsDirtySource(\n source: ReadableSource<unknown>\n): void {\n const effects = effectSources.get(source);\n if (!effects || effects.size === 0) {\n return;\n }\n\n dirtyLaneState.derived = false;\n dirtyLaneState.component = false;\n dirtyLaneState.reactive = false;\n dirtyLaneState.post = false;\n\n for (const effect of effects) {\n if (!effect.isActive) {\n continue;\n }\n const lane = effect.lane;\n dirtyEffectsByLane[lane].add(effect);\n dirtyLaneState[lane] = true;\n }\n\n if (dirtyLaneState.derived) {\n scheduleLaneFlush('derived');\n }\n if (dirtyLaneState.component) {\n scheduleLaneFlush('component');\n }\n if (dirtyLaneState.reactive) {\n scheduleLaneFlush('reactive');\n }\n if (dirtyLaneState.post) {\n scheduleLaneFlush('post');\n }\n}\n\nexport function createFineGrainedEffect<T>(\n options: CreateFineGrainedEffectOptions<T>\n): FineGrainedEffectHandle<T> {\n const effect: FineGrainedEffect<T> = {\n lane: options.lane,\n compute: options.compute,\n commit: options.commit,\n equals: options.equals ?? Object.is,\n readSources: new Set(),\n isActive: true,\n hasValue: false,\n lastValue: undefined,\n onError: options.onError,\n };\n\n recomputeEffectNow(effect);\n\n return {\n cleanup(): void {\n if (!effect.isActive) {\n return;\n }\n\n effect.isActive = false;\n unscheduleEffect(effect);\n clearEffectSubscriptions(effect);\n },\n\n updateCompute(nextCompute: () => T): void {\n if (!effect.isActive) {\n return;\n }\n\n effect.compute = nextCompute;\n unscheduleEffect(effect);\n recomputeEffectNow(effect);\n },\n\n flush(): void {\n if (!effect.isActive) {\n return;\n }\n\n unscheduleEffect(effect);\n recomputeEffectNow(effect);\n },\n };\n}\n"],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- import { ComponentInstance } from "./component-internal.js";
2
- //#region src/runtime/error-boundary.d.ts
3
- declare function createBoundaryReset(instance: ComponentInstance): () => void;
4
- declare function reportBoundaryError(instance: ComponentInstance, error: unknown, onError?: (error: unknown) => void): void;
5
- //# sourceMappingURL=error-boundary.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"error-boundary.d.ts","names":[],"sources":["../../src/runtime/error-boundary.ts"],"mappings":";;iBAGgB,mBAAA,CAAoB,QAA2B,EAAjB,iBAAiB;AAAA,iBAc/C,mBAAA,CACd,QAAA,EAAU,iBAAiB,EAC3B,KAAA,WACA,OAAA,IAAW,KAAA"}
@@ -1,31 +0,0 @@
1
- import { logger } from "../common/logger.js";
2
- //#region src/runtime/error-boundary.ts
3
- function createBoundaryReset(instance) {
4
- return () => {
5
- const boundaryState = instance.errorBoundaryState;
6
- if (!boundaryState) return;
7
- boundaryState.error = null;
8
- boundaryState.notified = false;
9
- queueMicrotask(() => {
10
- instance._enqueueRun?.();
11
- });
12
- };
13
- }
14
- function reportBoundaryError(instance, error, onError) {
15
- const boundaryState = instance.errorBoundaryState;
16
- if (boundaryState && Object.is(boundaryState.error, error) && boundaryState.notified) return;
17
- if (boundaryState) {
18
- boundaryState.error = error;
19
- boundaryState.notified = true;
20
- }
21
- try {
22
- onError?.(error);
23
- } catch (hookError) {
24
- logger.error("[Askr] ErrorBoundary onError handler threw:", hookError);
25
- }
26
- logger.error("[Askr] ErrorBoundary caught render error:", error);
27
- }
28
- //#endregion
29
- export { createBoundaryReset, reportBoundaryError };
30
-
31
- //# sourceMappingURL=error-boundary.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"error-boundary.js","names":[],"sources":["../../src/runtime/error-boundary.ts"],"sourcesContent":["import { logger } from '../common/logger';\nimport type { ComponentInstance } from './component';\n\nexport function createBoundaryReset(instance: ComponentInstance): () => void {\n return () => {\n const boundaryState = instance.errorBoundaryState;\n if (!boundaryState) {\n return;\n }\n boundaryState.error = null;\n boundaryState.notified = false;\n queueMicrotask(() => {\n instance._enqueueRun?.();\n });\n };\n}\n\nexport function reportBoundaryError(\n instance: ComponentInstance,\n error: unknown,\n onError?: (error: unknown) => void\n): void {\n const boundaryState = instance.errorBoundaryState;\n if (\n boundaryState &&\n Object.is(boundaryState.error, error) &&\n boundaryState.notified\n ) {\n return;\n }\n\n if (boundaryState) {\n boundaryState.error = error;\n boundaryState.notified = true;\n }\n\n try {\n onError?.(error);\n } catch (hookError) {\n logger.error('[Askr] ErrorBoundary onError handler threw:', hookError);\n }\n\n logger.error('[Askr] ErrorBoundary caught render error:', error);\n}\n"],"mappings":";;AAGA,SAAgB,oBAAoB,UAAyC;CAC3E,aAAa;EACX,MAAM,gBAAgB,SAAS;EAC/B,IAAI,CAAC,eACH;EAEF,cAAc,QAAQ;EACtB,cAAc,WAAW;EACzB,qBAAqB;GACnB,SAAS,cAAc;EACzB,CAAC;CACH;AACF;AAEA,SAAgB,oBACd,UACA,OACA,SACM;CACN,MAAM,gBAAgB,SAAS;CAC/B,IACE,iBACA,OAAO,GAAG,cAAc,OAAO,KAAK,KACpC,cAAc,UAEd;CAGF,IAAI,eAAe;EACjB,cAAc,QAAQ;EACtB,cAAc,WAAW;CAC3B;CAEA,IAAI;EACF,UAAU,KAAK;CACjB,SAAS,WAAW;EAClB,OAAO,MAAM,+CAA+C,SAAS;CACvE;CAEA,OAAO,MAAM,6CAA6C,KAAK;AACjE"}
@@ -1,58 +0,0 @@
1
- //#region src/runtime/events.d.ts
2
- /**
3
- * Event delegation system for Askr
4
- *
5
- * Provides efficient event handling by attaching listeners to a container
6
- * instead of individual elements. This significantly reduces memory usage
7
- * and improves performance when many elements have the same event type.
8
- *
9
- * Delegated handling is enabled by default. Tests and internal runtime code
10
- * can still disable or re-enable it when they need to exercise both modes.
11
- */
12
- interface DelegatedEventMap {
13
- click: MouseEvent;
14
- dblclick: MouseEvent;
15
- mousedown: MouseEvent;
16
- mouseup: MouseEvent;
17
- mouseover: MouseEvent;
18
- mouseout: MouseEvent;
19
- mousemove: MouseEvent;
20
- focus: FocusEvent;
21
- blur: FocusEvent;
22
- input: InputEvent;
23
- change: Event;
24
- keydown: KeyboardEvent;
25
- keyup: KeyboardEvent;
26
- keypress: KeyboardEvent;
27
- submit: Event;
28
- scroll: Event;
29
- wheel: WheelEvent;
30
- touchstart: TouchEvent;
31
- touchend: TouchEvent;
32
- touchmove: TouchEvent;
33
- touchcancel: TouchEvent;
34
- }
35
- interface DelegatedHandler {
36
- handler: EventListener;
37
- original: EventListener;
38
- element: Element;
39
- container: Element;
40
- eventName: string;
41
- options?: AddEventListenerOptions;
42
- }
43
- declare function isEventDelegationEnabled(): boolean;
44
- declare function disableEventDelegation(): void;
45
- declare function enableEventDelegation(container?: Element): void;
46
- declare function setGlobalDelegationContainer(container: Element): void;
47
- declare function addDelegatedListener(element: Element, eventName: string, handler: EventListener, originalHandler: EventListener, options?: AddEventListenerOptions): void;
48
- declare function updateDelegatedListener(element: Element, eventName: string, handler: EventListener, originalHandler: EventListener, options?: AddEventListenerOptions): boolean;
49
- declare function removeDelegatedListener(element: Element, eventName: string): void;
50
- declare function getDelegatedHandlerForElement(element: Element, eventName: string): DelegatedHandler | undefined;
51
- declare function getDelegatedHandlersForElement(element: Element): Map<string, DelegatedHandler> | undefined;
52
- declare function hasDelegatedHandler(element: Element, eventName: string): boolean;
53
- declare function clearDelegatedHandlersForElement(element: Element): void;
54
- declare function getDelegatedEventNames(): readonly (keyof DelegatedEventMap)[];
55
- declare function isDelegatedEvent(eventName: string): boolean;
56
- //#endregion
57
- export { DelegatedEventMap };
58
- //# sourceMappingURL=events.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"events.d.ts","names":[],"sources":["../../src/runtime/events.ts"],"mappings":";;AAgBA;;;;;;;;;UAAiB,iBAAA;EACf,KAAA,EAAO,UAAA;EACP,QAAA,EAAU,UAAA;EACV,SAAA,EAAW,UAAA;EACX,OAAA,EAAS,UAAA;EACT,SAAA,EAAW,UAAA;EACX,QAAA,EAAU,UAAA;EACV,SAAA,EAAW,UAAA;EACX,KAAA,EAAO,UAAA;EACP,IAAA,EAAM,UAAA;EACN,KAAA,EAAO,UAAA;EACP,MAAA,EAAQ,KAAA;EACR,OAAA,EAAS,aAAA;EACT,KAAA,EAAO,aAAA;EACP,QAAA,EAAU,aAAA;EACV,MAAA,EAAQ,KAAA;EACR,MAAA,EAAQ,KAAA;EACR,KAAA,EAAO,UAAA;EACP,UAAA,EAAY,UAAA;EACZ,QAAA,EAAU,UAAA;EACV,SAAA,EAAW,UAAA;EACX,WAAA,EAAa,UAAA;AAAA;AAAA,UA2BL,gBAAA;EACR,OAAA,EAAS,aAAA;EACT,QAAA,EAAU,aAAA;EACV,OAAA,EAAS,OAAA;EACT,SAAA,EAAW,OAAA;EACX,SAAA;EACA,OAAA,GAAU,uBAAA;AAAA;AAAA,iBAgBI,wBAAA;AAAA,iBAIA,sBAAA;AAAA,iBAKA,qBAAA,CAAsB,SAAmB,GAAP,OAAO;AAAA,iBAOzC,4BAAA,CAA6B,SAAkB,EAAP,OAAO;AAAA,iBAyK/C,oBAAA,CACd,OAAA,EAAS,OAAA,EACT,SAAA,UACA,OAAA,EAAS,aAAA,EACT,eAAA,EAAiB,aAAA,EACjB,OAAA,GAAU,uBAAA;AAAA,iBAmBI,uBAAA,CACd,OAAA,EAAS,OAAA,EACT,SAAA,UACA,OAAA,EAAS,aAAA,EACT,eAAA,EAAiB,aAAA,EACjB,OAAA,GAAU,uBAAA;AAAA,iBAuBI,uBAAA,CACd,OAAA,EAAS,OAAO,EAChB,SAAA;AAAA,iBA+Bc,6BAAA,CACd,OAAA,EAAS,OAAA,EACT,SAAA,WACC,gBAAgB;AAAA,iBAOH,8BAAA,CACd,OAAA,EAAS,OAAA,GACR,GAAA,SAAY,gBAAA;AAAA,iBAOC,mBAAA,CACd,OAAA,EAAS,OAAO,EAChB,SAAA;AAAA,iBAKc,gCAAA,CAAiC,OAAgB,EAAP,OAAO;AAAA,iBAYjD,sBAAA,oBAA0C,iBAAiB;AAAA,iBAI3D,gBAAA,CAAiB,SAAiB"}
@@ -1,204 +0,0 @@
1
- import { logger } from "../common/logger.js";
2
- import { incrementPerfMetric } from "./perf-metrics.js";
3
- import { runRuntimeHandlerScope } from "./access.js";
4
- import { incDevCounter } from "./dev-namespace.js";
5
- //#region src/runtime/events.ts
6
- /**
7
- * Event delegation system for Askr
8
- *
9
- * Provides efficient event handling by attaching listeners to a container
10
- * instead of individual elements. This significantly reduces memory usage
11
- * and improves performance when many elements have the same event type.
12
- *
13
- * Delegated handling is enabled by default. Tests and internal runtime code
14
- * can still disable or re-enable it when they need to exercise both modes.
15
- */
16
- const DELEGATED_EVENTS = [
17
- "click",
18
- "dblclick",
19
- "mousedown",
20
- "mouseup",
21
- "mouseover",
22
- "mouseout",
23
- "mousemove",
24
- "focus",
25
- "blur",
26
- "input",
27
- "change",
28
- "keydown",
29
- "keyup",
30
- "keypress",
31
- "submit",
32
- "scroll",
33
- "wheel",
34
- "touchstart",
35
- "touchend",
36
- "touchmove",
37
- "touchcancel"
38
- ];
39
- const delegatedHandlers = /* @__PURE__ */ new WeakMap();
40
- let eventDelegationEnabled = true;
41
- const containerDelegatedListeners = /* @__PURE__ */ new Map();
42
- const containerDelegatedListenerUsage = /* @__PURE__ */ new Map();
43
- function isEventDelegationEnabled() {
44
- return eventDelegationEnabled;
45
- }
46
- function incrementContainerListenerUsage(container, eventName) {
47
- let usage = containerDelegatedListenerUsage.get(container);
48
- if (!usage) {
49
- usage = /* @__PURE__ */ new Map();
50
- containerDelegatedListenerUsage.set(container, usage);
51
- }
52
- usage.set(eventName, (usage.get(eventName) ?? 0) + 1);
53
- }
54
- function decrementContainerListenerUsage(entry) {
55
- const usage = containerDelegatedListenerUsage.get(entry.container);
56
- if (!usage) return;
57
- const nextCount = (usage.get(entry.eventName) ?? 0) - 1;
58
- if (nextCount > 0) {
59
- usage.set(entry.eventName, nextCount);
60
- return;
61
- }
62
- usage.delete(entry.eventName);
63
- const listeners = containerDelegatedListeners.get(entry.container);
64
- const listener = listeners?.get(entry.eventName);
65
- if (listener) {
66
- entry.container.removeEventListener(entry.eventName, listener);
67
- listeners?.delete(entry.eventName);
68
- }
69
- if (listeners?.size === 0) containerDelegatedListeners.delete(entry.container);
70
- if (usage.size === 0) containerDelegatedListenerUsage.delete(entry.container);
71
- }
72
- function getDelegationContainer() {
73
- if (typeof document !== "undefined") return document.body;
74
- return null;
75
- }
76
- function attachDelegatedListener(container, element, eventName, handler, originalHandler, options) {
77
- const hadHandler = !!getDelegatedHandlerForElement(element, eventName);
78
- if (!containerDelegatedListeners.has(container)) containerDelegatedListeners.set(container, /* @__PURE__ */ new Map());
79
- const containerListeners = containerDelegatedListeners.get(container);
80
- if (!containerListeners.has(eventName)) {
81
- const delegatedHandler = (e) => {
82
- const target = e.target;
83
- if (!target) return;
84
- runRuntimeHandlerScope(() => {
85
- let current = target;
86
- while (current && current !== container) {
87
- incrementPerfMetric("delegatedAncestorHops");
88
- const store = delegatedHandlers.get(current);
89
- const entry = !store ? void 0 : store instanceof Map ? store.get(eventName) : store.eventName === eventName ? store : void 0;
90
- if (entry) try {
91
- entry.handler(e);
92
- } catch (error) {
93
- logger.error("[Askr] Delegated event error:", error);
94
- }
95
- if (e.cancelBubble) break;
96
- current = current.parentElement;
97
- }
98
- }, "sync");
99
- };
100
- const listenerOptions = getPassiveOptions(eventName) ?? options;
101
- container.addEventListener(eventName, delegatedHandler, listenerOptions);
102
- containerListeners.set(eventName, delegatedHandler);
103
- }
104
- setDelegatedHandlerForElement(element, {
105
- handler,
106
- original: originalHandler,
107
- element,
108
- container,
109
- eventName,
110
- options
111
- });
112
- if (!hadHandler) incrementContainerListenerUsage(container, eventName);
113
- }
114
- function setDelegatedHandlerForElement(element, entry) {
115
- const existing = delegatedHandlers.get(element);
116
- if (!existing) {
117
- delegatedHandlers.set(element, entry);
118
- return;
119
- }
120
- if (existing instanceof Map) {
121
- existing.set(entry.eventName, entry);
122
- return;
123
- }
124
- if (existing.eventName === entry.eventName) {
125
- delegatedHandlers.set(element, entry);
126
- return;
127
- }
128
- const next = /* @__PURE__ */ new Map();
129
- next.set(existing.eventName, existing);
130
- next.set(entry.eventName, entry);
131
- delegatedHandlers.set(element, next);
132
- }
133
- function getPassiveOptions(eventName) {
134
- if (eventName === "wheel" || eventName === "scroll" || eventName.startsWith("touch")) return { passive: true };
135
- }
136
- function addDelegatedListener(element, eventName, handler, originalHandler, options) {
137
- const container = getDelegationContainer();
138
- if (!container) return;
139
- incDevCounter("listenerAdds");
140
- attachDelegatedListener(container, element, eventName, handler, originalHandler, options);
141
- }
142
- function updateDelegatedListener(element, eventName, handler, originalHandler, options) {
143
- const existing = getDelegatedHandlerForElement(element, eventName);
144
- if (!existing) return false;
145
- const container = getDelegationContainer();
146
- if (!container || existing.container !== container || !containerDelegatedListeners.get(existing.container)?.has(eventName)) {
147
- removeDelegatedListener(element, eventName);
148
- return false;
149
- }
150
- existing.handler = handler;
151
- existing.original = originalHandler;
152
- existing.options = options;
153
- return true;
154
- }
155
- function removeDelegatedListener(element, eventName) {
156
- const existing = delegatedHandlers.get(element);
157
- if (!existing) return;
158
- if (existing instanceof Map) {
159
- if (existing.has(eventName)) {
160
- incDevCounter("listenerRemoves");
161
- decrementContainerListenerUsage(existing.get(eventName));
162
- }
163
- existing.delete(eventName);
164
- if (existing.size === 0) {
165
- delegatedHandlers.delete(element);
166
- return;
167
- }
168
- if (existing.size === 1) {
169
- const only = existing.values().next().value;
170
- delegatedHandlers.set(element, only);
171
- }
172
- return;
173
- }
174
- if (existing.eventName === eventName) {
175
- incDevCounter("listenerRemoves");
176
- decrementContainerListenerUsage(existing);
177
- delegatedHandlers.delete(element);
178
- }
179
- }
180
- function getDelegatedHandlerForElement(element, eventName) {
181
- const store = delegatedHandlers.get(element);
182
- if (!store) return void 0;
183
- if (store instanceof Map) return store.get(eventName);
184
- return store.eventName === eventName ? store : void 0;
185
- }
186
- function getDelegatedHandlersForElement(element) {
187
- const store = delegatedHandlers.get(element);
188
- if (!store) return void 0;
189
- if (store instanceof Map) return store;
190
- return /* @__PURE__ */ new Map([[store.eventName, store]]);
191
- }
192
- function clearDelegatedHandlersForElement(element) {
193
- const existing = delegatedHandlers.get(element);
194
- if (existing instanceof Map) for (const entry of existing.values()) decrementContainerListenerUsage(entry);
195
- else if (existing) decrementContainerListenerUsage(existing);
196
- delegatedHandlers.delete(element);
197
- }
198
- function isDelegatedEvent(eventName) {
199
- return DELEGATED_EVENTS.includes(eventName);
200
- }
201
- //#endregion
202
- export { addDelegatedListener, clearDelegatedHandlersForElement, getDelegatedHandlerForElement, getDelegatedHandlersForElement, isDelegatedEvent, isEventDelegationEnabled, removeDelegatedListener, updateDelegatedListener };
203
-
204
- //# sourceMappingURL=events.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"events.js","names":[],"sources":["../../src/runtime/events.ts"],"sourcesContent":["/**\n * Event delegation system for Askr\n *\n * Provides efficient event handling by attaching listeners to a container\n * instead of individual elements. This significantly reduces memory usage\n * and improves performance when many elements have the same event type.\n *\n * Delegated handling is enabled by default. Tests and internal runtime code\n * can still disable or re-enable it when they need to exercise both modes.\n */\n\nimport { runRuntimeHandlerScope } from './access';\nimport { logger } from '../common/logger';\nimport { incrementPerfMetric } from './perf-metrics';\nimport { incDevCounter } from './dev-namespace';\n\nexport interface DelegatedEventMap {\n click: MouseEvent;\n dblclick: MouseEvent;\n mousedown: MouseEvent;\n mouseup: MouseEvent;\n mouseover: MouseEvent;\n mouseout: MouseEvent;\n mousemove: MouseEvent;\n focus: FocusEvent;\n blur: FocusEvent;\n input: InputEvent;\n change: Event;\n keydown: KeyboardEvent;\n keyup: KeyboardEvent;\n keypress: KeyboardEvent;\n submit: Event;\n scroll: Event;\n wheel: WheelEvent;\n touchstart: TouchEvent;\n touchend: TouchEvent;\n touchmove: TouchEvent;\n touchcancel: TouchEvent;\n}\n\nconst DELEGATED_EVENTS: (keyof DelegatedEventMap)[] = [\n 'click',\n 'dblclick',\n 'mousedown',\n 'mouseup',\n 'mouseover',\n 'mouseout',\n 'mousemove',\n 'focus',\n 'blur',\n 'input',\n 'change',\n 'keydown',\n 'keyup',\n 'keypress',\n 'submit',\n 'scroll',\n 'wheel',\n 'touchstart',\n 'touchend',\n 'touchmove',\n 'touchcancel',\n];\n\ninterface DelegatedHandler {\n handler: EventListener;\n original: EventListener;\n element: Element;\n container: Element;\n eventName: string;\n options?: AddEventListenerOptions;\n}\n\ntype DelegatedHandlerStore = DelegatedHandler | Map<string, DelegatedHandler>;\n\nconst delegatedHandlers = new WeakMap<Element, DelegatedHandlerStore>();\n\nlet eventDelegationEnabled = true;\nlet defaultContainer: Element | null = null;\nlet globalDelegationContainer: Element | null = null;\nconst containerDelegatedListeners = new Map<\n Element,\n Map<string, EventListener>\n>();\nconst containerDelegatedListenerUsage = new Map<Element, Map<string, number>>();\n\nexport function isEventDelegationEnabled(): boolean {\n return eventDelegationEnabled;\n}\n\nexport function disableEventDelegation(): void {\n eventDelegationEnabled = false;\n cleanupAllDelegatedListeners();\n}\n\nexport function enableEventDelegation(container?: Element): void {\n eventDelegationEnabled = true;\n if (container) {\n defaultContainer = container;\n }\n}\n\nexport function setGlobalDelegationContainer(container: Element): void {\n globalDelegationContainer = container;\n}\n\nfunction cleanupAllDelegatedListeners(): void {\n for (const [container, listeners] of containerDelegatedListeners) {\n for (const [eventName, handler] of listeners) {\n container.removeEventListener(eventName, handler);\n }\n }\n containerDelegatedListeners.clear();\n containerDelegatedListenerUsage.clear();\n}\n\nfunction incrementContainerListenerUsage(\n container: Element,\n eventName: string\n): void {\n let usage = containerDelegatedListenerUsage.get(container);\n if (!usage) {\n usage = new Map();\n containerDelegatedListenerUsage.set(container, usage);\n }\n usage.set(eventName, (usage.get(eventName) ?? 0) + 1);\n}\n\nfunction decrementContainerListenerUsage(entry: DelegatedHandler): void {\n const usage = containerDelegatedListenerUsage.get(entry.container);\n if (!usage) {\n return;\n }\n\n const nextCount = (usage.get(entry.eventName) ?? 0) - 1;\n if (nextCount > 0) {\n usage.set(entry.eventName, nextCount);\n return;\n }\n\n usage.delete(entry.eventName);\n const listeners = containerDelegatedListeners.get(entry.container);\n const listener = listeners?.get(entry.eventName);\n if (listener) {\n entry.container.removeEventListener(entry.eventName, listener);\n listeners?.delete(entry.eventName);\n }\n\n if (listeners?.size === 0) {\n containerDelegatedListeners.delete(entry.container);\n }\n if (usage.size === 0) {\n containerDelegatedListenerUsage.delete(entry.container);\n }\n}\n\nfunction getDelegationContainer(): Element | null {\n if (globalDelegationContainer) return globalDelegationContainer;\n if (defaultContainer) return defaultContainer;\n if (typeof document !== 'undefined') return document.body;\n return null;\n}\n\nfunction attachDelegatedListener(\n container: Element,\n element: Element,\n eventName: string,\n handler: EventListener,\n originalHandler: EventListener,\n options?: AddEventListenerOptions\n): void {\n const hadHandler = !!getDelegatedHandlerForElement(element, eventName);\n\n if (!containerDelegatedListeners.has(container)) {\n containerDelegatedListeners.set(container, new Map());\n }\n const containerListeners = containerDelegatedListeners.get(container)!;\n\n if (!containerListeners.has(eventName)) {\n const delegatedHandler = (e: Event) => {\n const target = e.target as Element;\n if (!target) return;\n\n runRuntimeHandlerScope(() => {\n let current: Element | null = target;\n while (current && current !== container) {\n incrementPerfMetric('delegatedAncestorHops');\n const store = delegatedHandlers.get(current);\n const entry = !store\n ? undefined\n : store instanceof Map\n ? store.get(eventName)\n : store.eventName === eventName\n ? store\n : undefined;\n if (entry) {\n try {\n entry.handler(e);\n } catch (error) {\n logger.error('[Askr] Delegated event error:', error);\n }\n }\n\n if (e.cancelBubble) {\n break;\n }\n\n current = current.parentElement;\n }\n }, 'sync');\n };\n\n const passiveOptions = getPassiveOptions(eventName);\n const listenerOptions = passiveOptions ?? options;\n\n container.addEventListener(eventName, delegatedHandler, listenerOptions);\n containerListeners.set(eventName, delegatedHandler);\n }\n\n setDelegatedHandlerForElement(element, {\n handler,\n original: originalHandler,\n element,\n container,\n eventName,\n options,\n });\n if (!hadHandler) {\n incrementContainerListenerUsage(container, eventName);\n }\n}\n\nfunction setDelegatedHandlerForElement(\n element: Element,\n entry: DelegatedHandler\n): void {\n const existing = delegatedHandlers.get(element);\n if (!existing) {\n delegatedHandlers.set(element, entry);\n return;\n }\n\n if (existing instanceof Map) {\n existing.set(entry.eventName, entry);\n return;\n }\n\n if (existing.eventName === entry.eventName) {\n delegatedHandlers.set(element, entry);\n return;\n }\n\n const next = new Map<string, DelegatedHandler>();\n next.set(existing.eventName, existing);\n next.set(entry.eventName, entry);\n delegatedHandlers.set(element, next);\n}\n\nfunction getPassiveOptions(\n eventName: string\n): AddEventListenerOptions | undefined {\n if (\n eventName === 'wheel' ||\n eventName === 'scroll' ||\n eventName.startsWith('touch')\n ) {\n return { passive: true };\n }\n return undefined;\n}\n\nexport function addDelegatedListener(\n element: Element,\n eventName: string,\n handler: EventListener,\n originalHandler: EventListener,\n options?: AddEventListenerOptions\n): void {\n if (!eventDelegationEnabled) return;\n\n const container = getDelegationContainer();\n if (!container) return;\n\n incDevCounter('listenerAdds');\n\n attachDelegatedListener(\n container,\n element,\n eventName,\n handler,\n originalHandler,\n options\n );\n}\n\nexport function updateDelegatedListener(\n element: Element,\n eventName: string,\n handler: EventListener,\n originalHandler: EventListener,\n options?: AddEventListenerOptions\n): boolean {\n const existing = getDelegatedHandlerForElement(element, eventName);\n if (!existing) {\n return false;\n }\n\n const container = getDelegationContainer();\n if (\n !container ||\n existing.container !== container ||\n !containerDelegatedListeners.get(existing.container)?.has(eventName)\n ) {\n removeDelegatedListener(element, eventName);\n return false;\n }\n\n existing.handler = handler;\n existing.original = originalHandler;\n existing.options = options;\n return true;\n}\n\nexport function removeDelegatedListener(\n element: Element,\n eventName: string\n): void {\n const existing = delegatedHandlers.get(element);\n if (!existing) {\n return;\n }\n\n if (existing instanceof Map) {\n if (existing.has(eventName)) {\n incDevCounter('listenerRemoves');\n decrementContainerListenerUsage(existing.get(eventName)!);\n }\n existing.delete(eventName);\n if (existing.size === 0) {\n delegatedHandlers.delete(element);\n return;\n }\n if (existing.size === 1) {\n const only = existing.values().next().value as DelegatedHandler;\n delegatedHandlers.set(element, only);\n }\n return;\n }\n\n if (existing.eventName === eventName) {\n incDevCounter('listenerRemoves');\n decrementContainerListenerUsage(existing);\n delegatedHandlers.delete(element);\n }\n}\n\nexport function getDelegatedHandlerForElement(\n element: Element,\n eventName: string\n): DelegatedHandler | undefined {\n const store = delegatedHandlers.get(element);\n if (!store) return undefined;\n if (store instanceof Map) return store.get(eventName);\n return store.eventName === eventName ? store : undefined;\n}\n\nexport function getDelegatedHandlersForElement(\n element: Element\n): Map<string, DelegatedHandler> | undefined {\n const store = delegatedHandlers.get(element);\n if (!store) return undefined;\n if (store instanceof Map) return store;\n return new Map([[store.eventName, store]]);\n}\n\nexport function hasDelegatedHandler(\n element: Element,\n eventName: string\n): boolean {\n return getDelegatedHandlerForElement(element, eventName) !== undefined;\n}\n\nexport function clearDelegatedHandlersForElement(element: Element): void {\n const existing = delegatedHandlers.get(element);\n if (existing instanceof Map) {\n for (const entry of existing.values()) {\n decrementContainerListenerUsage(entry);\n }\n } else if (existing) {\n decrementContainerListenerUsage(existing);\n }\n delegatedHandlers.delete(element);\n}\n\nexport function getDelegatedEventNames(): readonly (keyof DelegatedEventMap)[] {\n return DELEGATED_EVENTS;\n}\n\nexport function isDelegatedEvent(eventName: string): boolean {\n return DELEGATED_EVENTS.includes(eventName as keyof DelegatedEventMap);\n}\n"],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- //#region src/runtime/execution-model.d.ts
2
- type ExecutionModel = 'spa' | 'islands' | 'ssr';
3
- declare function getExecutionModel(): ExecutionModel | undefined;
4
- declare function assertExecutionModel(model: ExecutionModel): void;
5
- //#endregion
6
- export { ExecutionModel };
7
- //# sourceMappingURL=execution-model.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"execution-model.d.ts","names":[],"sources":["../../src/runtime/execution-model.ts"],"mappings":";KAAY,cAAA;AAAA,iBAII,iBAAA,IAAqB,cAAc;AAAA,iBAKnC,oBAAA,CAAqB,KAAqB,EAAd,cAAc"}
@@ -1,15 +0,0 @@
1
- //#region src/runtime/execution-model.ts
2
- const EXECUTION_MODEL_KEY = Symbol.for("__ASKR_EXECUTION_MODEL__");
3
- function getExecutionModel() {
4
- return globalThis[EXECUTION_MODEL_KEY];
5
- }
6
- function assertExecutionModel(model) {
7
- const g = globalThis;
8
- const cur = g[EXECUTION_MODEL_KEY];
9
- if (cur && cur !== model) throw new Error(`[Askr] mixing execution models is not allowed (current: ${cur}, attempted: ${model}). Choose exactly one: createSPA, createSSR, or createIslands.`);
10
- if (!cur) g[EXECUTION_MODEL_KEY] = model;
11
- }
12
- //#endregion
13
- export { assertExecutionModel, getExecutionModel };
14
-
15
- //# sourceMappingURL=execution-model.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"execution-model.js","names":[],"sources":["../../src/runtime/execution-model.ts"],"sourcesContent":["export type ExecutionModel = 'spa' | 'islands' | 'ssr';\n\nconst EXECUTION_MODEL_KEY = Symbol.for('__ASKR_EXECUTION_MODEL__');\n\nexport function getExecutionModel(): ExecutionModel | undefined {\n const g = globalThis as unknown as Record<string | symbol, unknown>;\n return g[EXECUTION_MODEL_KEY] as ExecutionModel | undefined;\n}\n\nexport function assertExecutionModel(model: ExecutionModel): void {\n // Mixing execution models is forbidden: once an app starts in one model,\n // attempting to start another is an invariant violation.\n const g = globalThis as unknown as Record<string | symbol, unknown>;\n const cur = g[EXECUTION_MODEL_KEY] as ExecutionModel | undefined;\n if (cur && cur !== model) {\n throw new Error(\n `[Askr] mixing execution models is not allowed (current: ${cur}, attempted: ${model}). ` +\n `Choose exactly one: createSPA, createSSR, or createIslands.`\n );\n }\n if (!cur) g[EXECUTION_MODEL_KEY] = model;\n}\n"],"mappings":";AAEA,MAAM,sBAAsB,OAAO,IAAI,0BAA0B;AAEjE,SAAgB,oBAAgD;CAE9D,OAAO,WAAE;AACX;AAEA,SAAgB,qBAAqB,OAA6B;CAGhE,MAAM,IAAI;CACV,MAAM,MAAM,EAAE;CACd,IAAI,OAAO,QAAQ,OACjB,MAAM,IAAI,MACR,2DAA2D,IAAI,eAAe,MAAM,+DAEtF;CAEF,IAAI,CAAC,KAAK,EAAE,uBAAuB;AACrC"}
@@ -1,34 +0,0 @@
1
- import { ComponentInstance } from "./component-internal.js";
2
- //#region src/runtime/fastlane.d.ts
3
- declare function enterBulkCommit(): void;
4
- declare function exitBulkCommit(): void;
5
- declare function isBulkCommitActive(): boolean;
6
- declare function markFastPathApplied(parent: Element): void;
7
- declare function isFastPathApplied(parent: Element): boolean;
8
- declare function classifyUpdate(instance: ComponentInstance, result: unknown): {
9
- useFastPath: boolean;
10
- reason: string;
11
- } | {
12
- useFastPath: boolean;
13
- reason: string;
14
- totalKeyed: number;
15
- totalChildren: number;
16
- currentKeyCount: number;
17
- moveCount: number;
18
- lisLen: number;
19
- hasPropChanges: boolean;
20
- isWholeKeyedList: boolean;
21
- } | {
22
- readonly useFastPath: true;
23
- readonly totalKeyed: number;
24
- readonly totalChildren: number;
25
- readonly currentKeyCount: number;
26
- readonly moveCount: number;
27
- readonly lisLen: number;
28
- readonly hasPropChanges: boolean;
29
- readonly isWholeKeyedList: boolean;
30
- reason?: undefined;
31
- };
32
- declare function commitReorderOnly(instance: ComponentInstance, result: unknown): boolean;
33
- declare function tryRuntimeFastLaneSync(instance: ComponentInstance, result: unknown): boolean;
34
- //# sourceMappingURL=fastlane.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fastlane.d.ts","names":[],"sources":["../../src/runtime/fastlane.ts"],"mappings":";;iBAegB,eAAA;AAAA,iBAOA,cAAA;AAAA,iBAMA,kBAAA;AAAA,iBAMA,mBAAA,CAAoB,MAAe,EAAP,OAAO;AAAA,iBASnC,iBAAA,CAAkB,MAAe,EAAP,OAAO;AAAA,iBAgDjC,cAAA,CAAe,QAAA,EAAU,iBAAiB,EAAE,MAAA;;;;;;;;;;;;;;;;;;;;;;;;iBA2E5C,iBAAA,CACd,QAAA,EAAU,iBAAiB,EAC3B,MAAA;AAAA,iBAyGc,sBAAA,CACd,QAAA,EAAU,iBAAiB,EAC3B,MAAA"}