@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,160 +0,0 @@
1
- import { getRuntimeEnv } from "../common/env.js";
2
- import { incDevCounter, setDevValue } from "../runtime/dev-namespace.js";
3
- import "../runtime/index.js";
4
- import { teardownNodeSubtree } from "./cleanup.js";
5
- import "./env.js";
6
- import { now, recordDOMReplace } from "./utils.js";
7
- import { keyedElements } from "./keyed.js";
8
- import { performBulkPositionalKeyedTextUpdate, tagsEqualIgnoreCase } from "./children-fastpath.js";
9
- import { createDOMNode, updateElementFromVnode } from "./dom-internal.js";
10
- import "./dom.js";
11
- //#region src/renderer/children.ts
12
- function performBulkTextReplace(parent, newChildren) {
13
- const start = now();
14
- const existing = Array.from(parent.childNodes);
15
- const finalNodes = [];
16
- let reused = 0;
17
- let created = 0;
18
- for (let index = 0; index < newChildren.length; index += 1) {
19
- const result = processChildNode(newChildren[index], existing[index], finalNodes);
20
- if (result === "reused") reused += 1;
21
- else if (result === "created") created += 1;
22
- }
23
- const tBuild = now() - start;
24
- const tCommit = commitBulkReplace(parent, finalNodes);
25
- keyedElements.delete(parent);
26
- const stats = {
27
- n: newChildren.length,
28
- reused,
29
- created,
30
- tBuild,
31
- tCommit
32
- };
33
- recordBulkTextStats(stats);
34
- return stats;
35
- }
36
- function processChildNode(vnode, existingNode, finalNodes) {
37
- if (typeof vnode === "string" || typeof vnode === "number") return processTextVnode(String(vnode), existingNode, finalNodes);
38
- if (typeof vnode === "object" && vnode !== null && "type" in vnode) return processElementVnode(vnode, existingNode, finalNodes);
39
- return "skipped";
40
- }
41
- function processTextVnode(text, existingNode, finalNodes) {
42
- if (existingNode && existingNode.nodeType === 3) {
43
- existingNode.data = text;
44
- finalNodes.push(existingNode);
45
- return "reused";
46
- }
47
- finalNodes.push(document.createTextNode(text));
48
- return "created";
49
- }
50
- function processElementVnode(vnode, existingNode, finalNodes) {
51
- const vnodeObj = vnode;
52
- if (typeof vnodeObj.type === "string") {
53
- const tag = vnodeObj.type;
54
- if (existingNode && existingNode.nodeType === 1 && tagsEqualIgnoreCase(existingNode.tagName, tag)) {
55
- updateElementFromVnode(existingNode, vnode);
56
- finalNodes.push(existingNode);
57
- return "reused";
58
- }
59
- }
60
- const dom = createDOMNode(vnode);
61
- if (dom) {
62
- finalNodes.push(dom);
63
- return "created";
64
- }
65
- return "skipped";
66
- }
67
- function commitBulkReplace(parent, nodes) {
68
- const startedAt = Date.now();
69
- const fragment = document.createDocumentFragment();
70
- for (let index = 0; index < nodes.length; index += 1) fragment.appendChild(nodes[index]);
71
- try {
72
- for (let node = parent.firstChild; node;) {
73
- const next = node.nextSibling;
74
- teardownNodeSubtree(node);
75
- node = next;
76
- }
77
- } catch {}
78
- recordDOMReplace("bulk-text-replace");
79
- parent.replaceChildren(fragment);
80
- return Date.now() - startedAt;
81
- }
82
- function recordBulkTextStats(stats) {
83
- try {
84
- setDevValue("__LAST_BULK_TEXT_FASTPATH_STATS", stats);
85
- setDevValue("__LAST_FASTPATH_STATS", stats);
86
- setDevValue("__LAST_FASTPATH_COMMIT_COUNT", 1);
87
- incDevCounter("bulkTextFastpathHits");
88
- } catch {}
89
- }
90
- function isBulkTextFastPathEligible(parent, newChildren) {
91
- const env = getRuntimeEnv();
92
- const threshold = Number(env.ASKR_BULK_TEXT_THRESHOLD) || 1024;
93
- const requiredFraction = .8;
94
- const total = Array.isArray(newChildren) ? newChildren.length : 0;
95
- if (total < threshold) {
96
- recordBulkDiag({
97
- phase: "bulk-unkeyed-eligible",
98
- reason: "too-small",
99
- total,
100
- threshold
101
- });
102
- return false;
103
- }
104
- const result = countSimpleChildren(newChildren);
105
- if (result.componentFound !== void 0) {
106
- recordBulkDiag({
107
- phase: "bulk-unkeyed-eligible",
108
- reason: "component-child",
109
- index: result.componentFound
110
- });
111
- return false;
112
- }
113
- const fraction = result.simple / total;
114
- const eligible = fraction >= requiredFraction && parent.childNodes.length >= total;
115
- recordBulkDiag({
116
- phase: "bulk-unkeyed-eligible",
117
- total,
118
- simple: result.simple,
119
- fraction,
120
- requiredFraction,
121
- eligible
122
- });
123
- return eligible;
124
- }
125
- function countSimpleChildren(children) {
126
- let simple = 0;
127
- for (let index = 0; index < children.length; index += 1) {
128
- const child = children[index];
129
- if (typeof child === "string" || typeof child === "number") {
130
- simple += 1;
131
- continue;
132
- }
133
- if (typeof child === "object" && child !== null && "type" in child) {
134
- const dom = child;
135
- if (typeof dom.type === "function") return {
136
- simple,
137
- componentFound: index
138
- };
139
- if (typeof dom.type === "string" && isSimpleElement(dom)) simple += 1;
140
- }
141
- }
142
- return { simple };
143
- }
144
- function isSimpleElement(dom) {
145
- const children = dom.props?.children ?? dom.children;
146
- if (children === null || children === void 0) return true;
147
- if (typeof children === "string" || typeof children === "number") return true;
148
- if (Array.isArray(children) && children.length === 1 && (typeof children[0] === "string" || typeof children[0] === "number")) return true;
149
- return false;
150
- }
151
- function recordBulkDiag(data) {
152
- const env = getRuntimeEnv();
153
- if (env.NODE_ENV !== "production" || env.ASKR_FASTPATH_DEBUG === "1") try {
154
- setDevValue("__BULK_DIAG", data);
155
- } catch {}
156
- }
157
- //#endregion
158
- export { isBulkTextFastPathEligible, performBulkPositionalKeyedTextUpdate, performBulkTextReplace };
159
-
160
- //# sourceMappingURL=children.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"children.js","names":[],"sources":["../../src/renderer/children.ts"],"sourcesContent":["import { setDevValue, incDevCounter } from '../runtime';\nimport { getRuntimeEnv } from './env';\nimport { keyedElements } from './keyed';\nimport { teardownNodeSubtree } from './cleanup';\nimport { createDOMNode, updateElementFromVnode } from './dom';\nimport { tagsEqualIgnoreCase } from './children-fastpath';\nimport type { DOMElement, VNode } from './types';\nimport { now, recordDOMReplace } from './utils';\n\nexport { performBulkPositionalKeyedTextUpdate } from './children-fastpath';\n\nexport function performBulkTextReplace(parent: Element, newChildren: VNode[]) {\n const start = now();\n const existing = Array.from(parent.childNodes);\n const finalNodes: Node[] = [];\n let reused = 0;\n let created = 0;\n\n for (let index = 0; index < newChildren.length; index += 1) {\n const result = processChildNode(\n newChildren[index],\n existing[index],\n finalNodes\n );\n if (result === 'reused') reused += 1;\n else if (result === 'created') created += 1;\n }\n\n const tBuild = now() - start;\n const tCommit = commitBulkReplace(parent, finalNodes);\n\n keyedElements.delete(parent);\n\n const stats = {\n n: newChildren.length,\n reused,\n created,\n tBuild,\n tCommit,\n } as const;\n recordBulkTextStats(stats);\n\n return stats;\n}\n\nfunction processChildNode(\n vnode: VNode,\n existingNode: ChildNode | undefined,\n finalNodes: Node[]\n): 'reused' | 'created' | 'skipped' {\n if (typeof vnode === 'string' || typeof vnode === 'number') {\n return processTextVnode(String(vnode), existingNode, finalNodes);\n }\n\n if (typeof vnode === 'object' && vnode !== null && 'type' in vnode) {\n return processElementVnode(vnode, existingNode, finalNodes);\n }\n\n return 'skipped';\n}\n\nfunction processTextVnode(\n text: string,\n existingNode: ChildNode | undefined,\n finalNodes: Node[]\n): 'reused' | 'created' {\n if (existingNode && existingNode.nodeType === 3) {\n (existingNode as Text).data = text;\n finalNodes.push(existingNode);\n return 'reused';\n }\n\n finalNodes.push(document.createTextNode(text));\n return 'created';\n}\n\nfunction processElementVnode(\n vnode: VNode,\n existingNode: ChildNode | undefined,\n finalNodes: Node[]\n): 'reused' | 'created' | 'skipped' {\n const vnodeObj = vnode as unknown as { type?: unknown };\n\n if (typeof vnodeObj.type === 'string') {\n const tag = vnodeObj.type;\n if (\n existingNode &&\n existingNode.nodeType === 1 &&\n tagsEqualIgnoreCase((existingNode as Element).tagName, tag)\n ) {\n updateElementFromVnode(existingNode as Element, vnode);\n finalNodes.push(existingNode);\n return 'reused';\n }\n }\n\n const dom = createDOMNode(vnode);\n if (dom) {\n finalNodes.push(dom);\n return 'created';\n }\n\n return 'skipped';\n}\n\nfunction commitBulkReplace(parent: Element, nodes: Node[]): number {\n const startedAt = Date.now();\n const fragment = document.createDocumentFragment();\n\n for (let index = 0; index < nodes.length; index += 1) {\n fragment.appendChild(nodes[index]);\n }\n\n try {\n for (let node = parent.firstChild; node; ) {\n const next = node.nextSibling;\n teardownNodeSubtree(node);\n node = next;\n }\n } catch {\n // SLOW PATH: cleanup failure\n }\n\n recordDOMReplace('bulk-text-replace');\n parent.replaceChildren(fragment);\n return Date.now() - startedAt;\n}\n\nfunction recordBulkTextStats(stats: {\n n: number;\n reused: number;\n created: number;\n tBuild: number;\n tCommit: number;\n}): void {\n try {\n setDevValue('__LAST_BULK_TEXT_FASTPATH_STATS', stats);\n setDevValue('__LAST_FASTPATH_STATS', stats);\n setDevValue('__LAST_FASTPATH_COMMIT_COUNT', 1);\n incDevCounter('bulkTextFastpathHits');\n } catch {\n // Ignore stats errors\n }\n}\n\nexport function isBulkTextFastPathEligible(\n parent: Element,\n newChildren: VNode[]\n) {\n const env = getRuntimeEnv();\n const threshold = Number(env.ASKR_BULK_TEXT_THRESHOLD) || 1024;\n const requiredFraction = 0.8;\n\n const total = Array.isArray(newChildren) ? newChildren.length : 0;\n\n if (total < threshold) {\n recordBulkDiag({\n phase: 'bulk-unkeyed-eligible',\n reason: 'too-small',\n total,\n threshold,\n });\n return false;\n }\n\n const result = countSimpleChildren(newChildren);\n if (result.componentFound !== undefined) {\n recordBulkDiag({\n phase: 'bulk-unkeyed-eligible',\n reason: 'component-child',\n index: result.componentFound,\n });\n return false;\n }\n\n const fraction = result.simple / total;\n const eligible =\n fraction >= requiredFraction && parent.childNodes.length >= total;\n\n recordBulkDiag({\n phase: 'bulk-unkeyed-eligible',\n total,\n simple: result.simple,\n fraction,\n requiredFraction,\n eligible,\n });\n\n return eligible;\n}\n\nfunction countSimpleChildren(children: VNode[]): {\n simple: number;\n componentFound?: number;\n} {\n let simple = 0;\n\n for (let index = 0; index < children.length; index += 1) {\n const child = children[index];\n\n if (typeof child === 'string' || typeof child === 'number') {\n simple += 1;\n continue;\n }\n\n if (typeof child === 'object' && child !== null && 'type' in child) {\n const dom = child as DOMElement;\n\n if (typeof dom.type === 'function') {\n return { simple, componentFound: index };\n }\n\n if (typeof dom.type === 'string' && isSimpleElement(dom)) {\n simple += 1;\n }\n }\n }\n\n return { simple };\n}\n\nfunction isSimpleElement(dom: DOMElement): boolean {\n const children = dom.props?.children ?? dom.children;\n\n if (children === null || children === undefined) return true;\n\n if (typeof children === 'string' || typeof children === 'number') {\n return true;\n }\n\n if (\n Array.isArray(children) &&\n children.length === 1 &&\n (typeof children[0] === 'string' || typeof children[0] === 'number')\n ) {\n return true;\n }\n\n return false;\n}\n\nfunction recordBulkDiag(data: Record<string, unknown>): void {\n const env = getRuntimeEnv();\n if (env.NODE_ENV !== 'production' || env.ASKR_FASTPATH_DEBUG === '1') {\n try {\n setDevValue('__BULK_DIAG', data);\n } catch {\n // Ignore\n }\n }\n}\n"],"mappings":"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"}
@@ -1,210 +0,0 @@
1
- import { logger } from "../common/logger.js";
2
- import { incDevCounter } from "../runtime/dev-namespace.js";
3
- import { cleanupComponent } from "../runtime/component-cleanup.js";
4
- import { clearDelegatedHandlersForElement, removeDelegatedListener } from "../runtime/events.js";
5
- import "../runtime/index.js";
6
- //#region src/renderer/cleanup.ts
7
- const elementRefs = /* @__PURE__ */ new WeakMap();
8
- function applyRefValue(ref, value) {
9
- const resolvedRef = ref;
10
- if (!resolvedRef) return;
11
- if (typeof resolvedRef === "function") {
12
- resolvedRef(value);
13
- return;
14
- }
15
- if (Object.isExtensible(resolvedRef)) resolvedRef.current = value;
16
- }
17
- function updateElementRef(element, ref) {
18
- const previousRef = elementRefs.get(element);
19
- if (previousRef === ref) return;
20
- if (previousRef) applyRefValue(previousRef, null);
21
- if (ref) {
22
- applyRefValue(ref, element);
23
- elementRefs.set(element, ref);
24
- } else elementRefs.delete(element);
25
- }
26
- function removeElementRef(element) {
27
- const ref = elementRefs.get(element);
28
- if (!ref) return;
29
- applyRefValue(ref, null);
30
- elementRefs.delete(element);
31
- }
32
- function cleanupSingleInstance(node, errors, strict) {
33
- const instances = /* @__PURE__ */ new Set();
34
- if (Array.isArray(node.__ASKR_INSTANCES)) {
35
- for (const instance of node.__ASKR_INSTANCES) if (instance) instances.add(instance);
36
- }
37
- if (node.__ASKR_INSTANCE) instances.add(node.__ASKR_INSTANCE);
38
- for (const instance of instances) try {
39
- cleanupComponent(instance);
40
- } catch (err) {
41
- if (strict) errors.push(err);
42
- else logger.warn("[Askr] cleanupComponent failed:", err);
43
- }
44
- try {
45
- delete node.__ASKR_INSTANCE;
46
- delete node.__ASKR_INSTANCES;
47
- } catch (e) {
48
- if (strict) errors.push(e);
49
- }
50
- }
51
- function teardownSingleElement(element, errors, strict) {
52
- try {
53
- removeElementRef(element);
54
- } catch (err) {
55
- if (strict) errors.push(err);
56
- else logger.warn("[Askr] removeElementRef failed:", err);
57
- }
58
- try {
59
- removeElementListeners(element);
60
- } catch (err) {
61
- if (strict) errors.push(err);
62
- else logger.warn("[Askr] removeElementListeners failed:", err);
63
- }
64
- try {
65
- removeElementReactiveProps(element);
66
- } catch (err) {
67
- if (strict) errors.push(err);
68
- else logger.warn("[Askr] removeElementReactiveProps failed:", err);
69
- }
70
- try {
71
- cleanupSingleInstance(element, errors, strict);
72
- } catch (err) {
73
- if (strict) errors.push(err);
74
- else logger.warn("[Askr] cleanupSingleInstance failed:", err);
75
- }
76
- }
77
- function forEachDescendantElement(root, visit) {
78
- try {
79
- const doc = root.ownerDocument;
80
- const createTreeWalker = doc?.createTreeWalker;
81
- if (typeof createTreeWalker === "function") {
82
- const walker = createTreeWalker.call(doc, root, 1);
83
- let n = walker.firstChild();
84
- while (n) {
85
- visit(n);
86
- n = walker.nextNode();
87
- }
88
- return;
89
- }
90
- } catch {}
91
- const descendants = root.querySelectorAll("*");
92
- for (let i = 0; i < descendants.length; i++) visit(descendants[i]);
93
- }
94
- function forEachDescendantNode(root, visit) {
95
- try {
96
- const doc = root.ownerDocument;
97
- const createTreeWalker = doc?.createTreeWalker;
98
- if (typeof createTreeWalker === "function") {
99
- const walker = createTreeWalker.call(doc, root, 4294967295);
100
- let node = walker.nextNode();
101
- while (node) {
102
- visit(node);
103
- node = walker.nextNode();
104
- }
105
- return;
106
- }
107
- } catch {}
108
- const stack = Array.from(root.childNodes).reverse();
109
- while (stack.length > 0) {
110
- const node = stack.pop();
111
- visit(node);
112
- for (let child = node.lastChild; child; child = child.previousSibling) stack.push(child);
113
- }
114
- }
115
- function forEachElementInSubtree(root, visit) {
116
- visit(root);
117
- forEachDescendantElement(root, visit);
118
- }
119
- const elementListeners = /* @__PURE__ */ new WeakMap();
120
- /**
121
- * Clean up component instance attached to a DOM node
122
- * Accepts an optional `opts.strict` flag to surface errors instead of swallowing them.
123
- */
124
- function cleanupInstanceIfPresent(node, opts) {
125
- if (!node) return;
126
- const strict = opts?.strict ?? false;
127
- const errors = strict ? [] : null;
128
- try {
129
- cleanupSingleInstance(node, errors, strict);
130
- } catch (err) {
131
- if (strict) errors.push(err);
132
- else logger.warn("[Askr] cleanupInstanceIfPresent failed:", err);
133
- }
134
- try {
135
- forEachDescendantNode(node, (descendant) => {
136
- try {
137
- cleanupSingleInstance(descendant, errors, strict);
138
- } catch (err) {
139
- if (strict) errors.push(err);
140
- else logger.warn("[Askr] cleanupInstanceIfPresent descendant cleanup failed:", err);
141
- }
142
- });
143
- } catch (err) {
144
- if (strict) errors.push(err);
145
- else logger.warn("[Askr] cleanupInstanceIfPresent descendant query failed:", err);
146
- }
147
- if (errors && errors.length > 0) throw new AggregateError(errors, "cleanupInstanceIfPresent failed");
148
- }
149
- function cleanupInstancesUnder(node, opts) {
150
- cleanupInstanceIfPresent(node, opts);
151
- }
152
- function teardownNodeSubtree(node, opts) {
153
- if (!node) return;
154
- const strict = opts?.strict ?? false;
155
- const errors = strict ? [] : null;
156
- if (!(node instanceof Element)) {
157
- cleanupSingleInstance(node, errors, strict);
158
- if (errors && errors.length > 0) throw new AggregateError(errors, "teardownNodeSubtree failed");
159
- return;
160
- }
161
- try {
162
- teardownSingleElement(node, errors, strict);
163
- forEachDescendantNode(node, (descendant) => {
164
- if (descendant instanceof Element) teardownSingleElement(descendant, errors, strict);
165
- else cleanupSingleInstance(descendant, errors, strict);
166
- });
167
- } catch (err) {
168
- if (strict) errors.push(err);
169
- else logger.warn("[Askr] teardownNodeSubtree failed:", err);
170
- }
171
- if (errors && errors.length > 0) throw new AggregateError(errors, "teardownNodeSubtree failed");
172
- }
173
- const REACTIVE_CHILDREN_KEY = "__askr_reactive_children__";
174
- const elementReactivePropsCleanup = /* @__PURE__ */ new WeakMap();
175
- function removeElementReactiveProps(element) {
176
- const cleanupMap = elementReactivePropsCleanup.get(element);
177
- if (cleanupMap) {
178
- for (const entry of cleanupMap.values()) try {
179
- entry.cleanup();
180
- } catch (err) {
181
- logger.warn("[Askr] reactive prop cleanup failed:", err);
182
- }
183
- elementReactivePropsCleanup.delete(element);
184
- }
185
- }
186
- function removeElementListeners(element) {
187
- const map = elementListeners.get(element);
188
- if (map) {
189
- for (const entry of map.values()) {
190
- incDevCounter("listenerRemoves");
191
- if (entry.isDelegated) removeDelegatedListener(element, entry.eventName);
192
- else if (entry.options !== void 0) element.removeEventListener(entry.eventName, entry.handler, entry.options);
193
- else element.removeEventListener(entry.eventName, entry.handler);
194
- }
195
- elementListeners.delete(element);
196
- }
197
- clearDelegatedHandlersForElement(element);
198
- }
199
- function removeAllListeners(root) {
200
- if (!root) return;
201
- forEachElementInSubtree(root, (el) => {
202
- removeElementRef(el);
203
- removeElementListeners(el);
204
- removeElementReactiveProps(el);
205
- });
206
- }
207
- //#endregion
208
- export { REACTIVE_CHILDREN_KEY, cleanupInstanceIfPresent, cleanupInstancesUnder, elementListeners, elementReactivePropsCleanup, elementRefs, removeAllListeners, removeElementListeners, removeElementReactiveProps, removeElementRef, teardownNodeSubtree, updateElementRef };
209
-
210
- //# sourceMappingURL=cleanup.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cleanup.js","names":[],"sources":["../../src/renderer/cleanup.ts"],"sourcesContent":["import { cleanupComponent, type ComponentInstance } from '../runtime';\nimport { logger } from '../common/logger';\nimport { incDevCounter } from '../runtime';\nimport {\n clearDelegatedHandlersForElement,\n removeDelegatedListener,\n} from '../runtime';\n\ntype InstanceHost = Node & {\n __ASKR_INSTANCE?: unknown;\n __ASKR_INSTANCES?: unknown[];\n};\n\ntype Ref<T> =\n | ((value: T | null) => void)\n | { current: T | null }\n | null\n | undefined;\n\nexport const elementRefs = new WeakMap<Element, unknown>();\n\nfunction applyRefValue<T>(ref: unknown, value: T | null): void {\n const resolvedRef = ref as Ref<T>;\n\n if (!resolvedRef) {\n return;\n }\n\n if (typeof resolvedRef === 'function') {\n resolvedRef(value);\n return;\n }\n\n if (Object.isExtensible(resolvedRef)) {\n (resolvedRef as { current: T | null }).current = value;\n }\n}\n\nexport function updateElementRef<T extends Element>(\n element: T,\n ref: unknown\n): void {\n const previousRef = elementRefs.get(element);\n\n if (previousRef === ref) {\n return;\n }\n\n if (previousRef) {\n applyRefValue(previousRef, null);\n }\n\n if (ref) {\n applyRefValue(ref, element);\n elementRefs.set(element, ref);\n } else {\n elementRefs.delete(element);\n }\n}\n\nexport function removeElementRef(element: Element): void {\n const ref = elementRefs.get(element);\n\n if (!ref) {\n return;\n }\n\n applyRefValue(ref, null);\n elementRefs.delete(element);\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Instance Cleanup Helpers\n// ─────────────────────────────────────────────────────────────────────────────\n\nfunction cleanupSingleInstance(\n node: InstanceHost,\n errors: unknown[] | null,\n strict: boolean\n): void {\n const instances = new Set<ComponentInstance>();\n\n if (Array.isArray(node.__ASKR_INSTANCES)) {\n for (const instance of node.__ASKR_INSTANCES) {\n if (instance) {\n instances.add(instance as ComponentInstance);\n }\n }\n }\n\n if (node.__ASKR_INSTANCE) {\n instances.add(node.__ASKR_INSTANCE as ComponentInstance);\n }\n\n for (const instance of instances) {\n try {\n cleanupComponent(instance);\n } catch (err) {\n if (strict) errors!.push(err);\n else logger.warn('[Askr] cleanupComponent failed:', err);\n }\n }\n\n try {\n delete node.__ASKR_INSTANCE;\n delete node.__ASKR_INSTANCES;\n } catch (e) {\n if (strict) errors!.push(e);\n }\n}\n\nfunction teardownSingleElement(\n element: Element,\n errors: unknown[] | null,\n strict: boolean\n): void {\n try {\n removeElementRef(element);\n } catch (err) {\n if (strict) errors!.push(err);\n else logger.warn('[Askr] removeElementRef failed:', err);\n }\n\n try {\n removeElementListeners(element);\n } catch (err) {\n if (strict) errors!.push(err);\n else logger.warn('[Askr] removeElementListeners failed:', err);\n }\n\n try {\n removeElementReactiveProps(element);\n } catch (err) {\n if (strict) errors!.push(err);\n else logger.warn('[Askr] removeElementReactiveProps failed:', err);\n }\n\n try {\n cleanupSingleInstance(element as InstanceHost, errors, strict);\n } catch (err) {\n if (strict) errors!.push(err);\n else logger.warn('[Askr] cleanupSingleInstance failed:', err);\n }\n}\n\n// Walk descendant elements with minimal allocations.\n// HOT PATH: used during subtree teardown (replace/unmount).\nfunction forEachDescendantElement(root: Element, visit: (el: Element) => void) {\n // Prefer TreeWalker when available; it avoids allocating a NodeList.\n try {\n const doc = root.ownerDocument;\n const createTreeWalker = doc?.createTreeWalker;\n if (typeof createTreeWalker === 'function') {\n // NodeFilter.SHOW_ELEMENT === 1\n const walker = createTreeWalker.call(doc, root, 1);\n let n = walker.firstChild();\n while (n) {\n visit(n as Element);\n n = walker.nextNode();\n }\n return;\n }\n } catch {\n // SLOW PATH: TreeWalker unavailable\n }\n\n // Fallback: querySelectorAll\n const descendants = root.querySelectorAll('*');\n for (let i = 0; i < descendants.length; i++) {\n visit(descendants[i]);\n }\n}\n\nfunction forEachDescendantNode(root: Node, visit: (node: Node) => void) {\n try {\n const doc = root.ownerDocument;\n const createTreeWalker = doc?.createTreeWalker;\n if (typeof createTreeWalker === 'function') {\n // NodeFilter.SHOW_ALL === 0xffffffff\n const walker = createTreeWalker.call(doc, root, 0xffffffff);\n let node = walker.nextNode();\n while (node) {\n visit(node);\n node = walker.nextNode();\n }\n return;\n }\n } catch {\n // SLOW PATH: TreeWalker unavailable\n }\n\n const stack = Array.from(root.childNodes).reverse();\n while (stack.length > 0) {\n const node = stack.pop()!;\n visit(node);\n for (let child = node.lastChild; child; child = child.previousSibling) {\n stack.push(child);\n }\n }\n}\n\nfunction forEachElementInSubtree(root: Element, visit: (el: Element) => void) {\n visit(root);\n forEachDescendantElement(root, visit);\n}\n\n// Track listeners so we can remove them on cleanup\nexport interface ListenerMapEntry {\n handler: EventListener;\n original: EventListener;\n eventName: string;\n options?: boolean | AddEventListenerOptions;\n isDelegated?: boolean;\n updateHandler?: (nextHandler: EventListener) => void;\n}\nexport const elementListeners = new WeakMap<\n Element,\n Map<string, ListenerMapEntry>\n>();\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Public API\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Clean up component instance attached to a DOM node\n * Accepts an optional `opts.strict` flag to surface errors instead of swallowing them.\n */\nexport function cleanupInstanceIfPresent(\n node: Node | null,\n opts?: { strict?: boolean }\n): void {\n if (!node) return;\n\n const strict = opts?.strict ?? false;\n const errors: unknown[] | null = strict ? [] : null;\n\n // Clean up the node itself\n try {\n cleanupSingleInstance(node as InstanceHost, errors, strict);\n } catch (err) {\n if (strict) errors!.push(err);\n else logger.warn('[Askr] cleanupInstanceIfPresent failed:', err);\n }\n\n // Clean up any nested instances, including null-component comment hosts.\n try {\n forEachDescendantNode(node, (descendant) => {\n try {\n cleanupSingleInstance(descendant as InstanceHost, errors, strict);\n } catch (err) {\n if (strict) errors!.push(err);\n else\n logger.warn(\n '[Askr] cleanupInstanceIfPresent descendant cleanup failed:',\n err\n );\n }\n });\n } catch (err) {\n if (strict) errors!.push(err);\n else\n logger.warn(\n '[Askr] cleanupInstanceIfPresent descendant query failed:',\n err\n );\n }\n\n if (errors && errors.length > 0) {\n throw new AggregateError(errors, 'cleanupInstanceIfPresent failed');\n }\n}\n\n// Public helper to clean up any component instances under a node. Used by\n// runtime commit logic to ensure component instances are torn down when their\n// host nodes are removed during an update.\nexport function cleanupInstancesUnder(\n node: Node | null,\n opts?: { strict?: boolean }\n): void {\n cleanupInstanceIfPresent(node, opts);\n}\n\nexport function teardownNodeSubtree(\n node: Node | null,\n opts?: { strict?: boolean }\n): void {\n if (!node) return;\n\n const strict = opts?.strict ?? false;\n const errors: unknown[] | null = strict ? [] : null;\n\n if (!(node instanceof Element)) {\n cleanupSingleInstance(node as InstanceHost, errors, strict);\n if (errors && errors.length > 0) {\n throw new AggregateError(errors, 'teardownNodeSubtree failed');\n }\n return;\n }\n\n try {\n teardownSingleElement(node, errors, strict);\n forEachDescendantNode(node, (descendant) => {\n if (descendant instanceof Element) {\n teardownSingleElement(descendant, errors, strict);\n } else {\n cleanupSingleInstance(descendant as InstanceHost, errors, strict);\n }\n });\n } catch (err) {\n if (strict) errors!.push(err);\n else logger.warn('[Askr] teardownNodeSubtree failed:', err);\n }\n\n if (errors && errors.length > 0) {\n throw new AggregateError(errors, 'teardownNodeSubtree failed');\n }\n}\n\n// Track reactive props cleanup functions and their function references\nexport interface ReactivePropCleanupEntry {\n cleanup: () => void;\n fnRef: unknown;\n restoreFn?: (nextValue: unknown) => ReactivePropCleanupEntry;\n updateFn?: (nextValue: unknown) => void;\n}\n\nexport const REACTIVE_CHILDREN_KEY = '__askr_reactive_children__';\n\nexport const elementReactivePropsCleanup = new WeakMap<\n Element,\n Map<string, ReactivePropCleanupEntry>\n>();\n\nexport function removeElementReactiveProps(element: Element): void {\n const cleanupMap = elementReactivePropsCleanup.get(element);\n if (cleanupMap) {\n for (const entry of cleanupMap.values()) {\n try {\n entry.cleanup();\n } catch (err) {\n logger.warn('[Askr] reactive prop cleanup failed:', err);\n }\n }\n elementReactivePropsCleanup.delete(element);\n }\n}\n\nexport function removeElementListeners(element: Element): void {\n const map = elementListeners.get(element);\n if (map) {\n for (const entry of map.values()) {\n incDevCounter('listenerRemoves');\n if (entry.isDelegated) {\n removeDelegatedListener(element, entry.eventName);\n } else {\n if (entry.options !== undefined)\n element.removeEventListener(\n entry.eventName,\n entry.handler,\n entry.options\n );\n else element.removeEventListener(entry.eventName, entry.handler);\n }\n }\n elementListeners.delete(element);\n }\n\n clearDelegatedHandlersForElement(element);\n}\n\nexport function removeAllListeners(root: Element | null): void {\n if (!root) return;\n\n forEachElementInSubtree(root, (el) => {\n removeElementRef(el);\n removeElementListeners(el);\n removeElementReactiveProps(el);\n });\n}\n"],"mappings":"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"}
@@ -1,68 +0,0 @@
1
- import { cleanupComponent } from "../runtime/component-cleanup.js";
2
- import "../runtime/index.js";
3
- import { removeElementListeners, removeElementReactiveProps } from "./cleanup.js";
4
- //#region src/renderer/component-host-cleanup.ts
5
- function cleanupDetachedComponentHost(host, retainedInstance) {
6
- removeElementListeners(host);
7
- removeElementReactiveProps(host);
8
- const hostInstances = host.__ASKR_INSTANCES;
9
- if (hostInstances && hostInstances.length > 0) for (const instance of hostInstances) {
10
- if (instance === retainedInstance) continue;
11
- cleanupComponent(instance);
12
- }
13
- else if (host.__ASKR_INSTANCE && host.__ASKR_INSTANCE !== retainedInstance) cleanupComponent(host.__ASKR_INSTANCE);
14
- const descendants = host.querySelectorAll("*");
15
- for (let index = 0; index < descendants.length; index += 1) {
16
- const descendant = descendants[index];
17
- removeElementListeners(descendant);
18
- removeElementReactiveProps(descendant);
19
- if (descendant.__ASKR_INSTANCES?.length) {
20
- for (const instance of descendant.__ASKR_INSTANCES) {
21
- if (instance === retainedInstance) continue;
22
- cleanupComponent(instance);
23
- }
24
- try {
25
- delete descendant.__ASKR_INSTANCES;
26
- } catch {}
27
- } else if (descendant.__ASKR_INSTANCE && descendant.__ASKR_INSTANCE !== retainedInstance) {
28
- cleanupComponent(descendant.__ASKR_INSTANCE);
29
- try {
30
- delete descendant.__ASKR_INSTANCE;
31
- } catch {}
32
- }
33
- }
34
- try {
35
- delete host.__ASKR_INSTANCE;
36
- delete host.__ASKR_INSTANCES;
37
- delete host.__ASKR_WRAPPER_HOST;
38
- } catch {}
39
- }
40
- function pruneComponentHostInstances(host, retainedInstances) {
41
- const retained = new Set(retainedInstances);
42
- const nextInstances = [];
43
- const staleInstances = /* @__PURE__ */ new Set();
44
- const retainOrMarkStale = (instance) => {
45
- if (!instance) return;
46
- if (retained.has(instance)) {
47
- if (!nextInstances.includes(instance)) nextInstances.push(instance);
48
- return;
49
- }
50
- staleInstances.add(instance);
51
- };
52
- for (const instance of host.__ASKR_INSTANCES ?? []) retainOrMarkStale(instance);
53
- retainOrMarkStale(host.__ASKR_INSTANCE);
54
- for (const instance of staleInstances) cleanupComponent(instance);
55
- try {
56
- if (nextInstances.length > 0) {
57
- host.__ASKR_INSTANCES = nextInstances;
58
- host.__ASKR_INSTANCE = nextInstances[0];
59
- } else {
60
- delete host.__ASKR_INSTANCES;
61
- delete host.__ASKR_INSTANCE;
62
- }
63
- } catch {}
64
- }
65
- //#endregion
66
- export { cleanupDetachedComponentHost, pruneComponentHostInstances };
67
-
68
- //# sourceMappingURL=component-host-cleanup.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"component-host-cleanup.js","names":[],"sources":["../../src/renderer/component-host-cleanup.ts"],"sourcesContent":["import { cleanupComponent } from '../runtime';\nimport type { ComponentInstance } from '../runtime';\nimport { removeElementListeners, removeElementReactiveProps } from './cleanup';\nimport type { InstanceHostElement } from './dom-host';\n\nexport function cleanupDetachedComponentHost(\n host: InstanceHostElement,\n retainedInstance: ComponentInstance\n): void {\n removeElementListeners(host);\n removeElementReactiveProps(host);\n\n const hostInstances = host.__ASKR_INSTANCES;\n if (hostInstances && hostInstances.length > 0) {\n for (const instance of hostInstances) {\n if (instance === retainedInstance) continue;\n cleanupComponent(instance);\n }\n } else if (\n host.__ASKR_INSTANCE &&\n host.__ASKR_INSTANCE !== retainedInstance\n ) {\n cleanupComponent(host.__ASKR_INSTANCE);\n }\n\n const descendants = host.querySelectorAll('*');\n for (let index = 0; index < descendants.length; index += 1) {\n const descendant = descendants[index] as InstanceHostElement;\n removeElementListeners(descendant);\n removeElementReactiveProps(descendant);\n\n if (descendant.__ASKR_INSTANCES?.length) {\n for (const instance of descendant.__ASKR_INSTANCES) {\n if (instance === retainedInstance) continue;\n cleanupComponent(instance);\n }\n try {\n delete descendant.__ASKR_INSTANCES;\n } catch {\n // Ignore host cleanup failures.\n }\n } else if (\n descendant.__ASKR_INSTANCE &&\n descendant.__ASKR_INSTANCE !== retainedInstance\n ) {\n cleanupComponent(descendant.__ASKR_INSTANCE);\n try {\n delete descendant.__ASKR_INSTANCE;\n } catch {\n // Ignore host cleanup failures.\n }\n }\n }\n\n try {\n delete host.__ASKR_INSTANCE;\n delete host.__ASKR_INSTANCES;\n delete host.__ASKR_WRAPPER_HOST;\n } catch {\n // Ignore host cleanup failures.\n }\n}\n\nexport function pruneComponentHostInstances(\n host: InstanceHostElement,\n retainedInstances: Iterable<ComponentInstance>\n): void {\n const retained = new Set(retainedInstances);\n const nextInstances: ComponentInstance[] = [];\n const staleInstances = new Set<ComponentInstance>();\n\n const retainOrMarkStale = (instance: ComponentInstance | undefined) => {\n if (!instance) {\n return;\n }\n\n if (retained.has(instance)) {\n if (!nextInstances.includes(instance)) {\n nextInstances.push(instance);\n }\n return;\n }\n\n staleInstances.add(instance);\n };\n\n for (const instance of host.__ASKR_INSTANCES ?? []) {\n retainOrMarkStale(instance);\n }\n retainOrMarkStale(host.__ASKR_INSTANCE);\n\n for (const instance of staleInstances) {\n cleanupComponent(instance);\n }\n\n try {\n if (nextInstances.length > 0) {\n host.__ASKR_INSTANCES = nextInstances;\n host.__ASKR_INSTANCE = nextInstances[0];\n } else {\n delete host.__ASKR_INSTANCES;\n delete host.__ASKR_INSTANCE;\n }\n } catch {\n // Ignore host metadata cleanup failures.\n }\n}\n"],"mappings":";;;;AAKA,SAAgB,6BACd,MACA,kBACM;CACN,uBAAuB,IAAI;CAC3B,2BAA2B,IAAI;CAE/B,MAAM,gBAAgB,KAAK;CAC3B,IAAI,iBAAiB,cAAc,SAAS,GAC1C,KAAK,MAAM,YAAY,eAAe;EACpC,IAAI,aAAa,kBAAkB;EACnC,iBAAiB,QAAQ;CAC3B;MACK,IACL,KAAK,mBACL,KAAK,oBAAoB,kBAEzB,iBAAiB,KAAK,eAAe;CAGvC,MAAM,cAAc,KAAK,iBAAiB,GAAG;CAC7C,KAAK,IAAI,QAAQ,GAAG,QAAQ,YAAY,QAAQ,SAAS,GAAG;EAC1D,MAAM,aAAa,YAAY;EAC/B,uBAAuB,UAAU;EACjC,2BAA2B,UAAU;EAErC,IAAI,WAAW,kBAAkB,QAAQ;GACvC,KAAK,MAAM,YAAY,WAAW,kBAAkB;IAClD,IAAI,aAAa,kBAAkB;IACnC,iBAAiB,QAAQ;GAC3B;GACA,IAAI;IACF,OAAO,WAAW;GACpB,QAAQ,CAER;EACF,OAAO,IACL,WAAW,mBACX,WAAW,oBAAoB,kBAC/B;GACA,iBAAiB,WAAW,eAAe;GAC3C,IAAI;IACF,OAAO,WAAW;GACpB,QAAQ,CAER;EACF;CACF;CAEA,IAAI;EACF,OAAO,KAAK;EACZ,OAAO,KAAK;EACZ,OAAO,KAAK;CACd,QAAQ,CAER;AACF;AAEA,SAAgB,4BACd,MACA,mBACM;CACN,MAAM,WAAW,IAAI,IAAI,iBAAiB;CAC1C,MAAM,gBAAqC,CAAC;CAC5C,MAAM,iCAAiB,IAAI,IAAuB;CAElD,MAAM,qBAAqB,aAA4C;EACrE,IAAI,CAAC,UACH;EAGF,IAAI,SAAS,IAAI,QAAQ,GAAG;GAC1B,IAAI,CAAC,cAAc,SAAS,QAAQ,GAClC,cAAc,KAAK,QAAQ;GAE7B;EACF;EAEA,eAAe,IAAI,QAAQ;CAC7B;CAEA,KAAK,MAAM,YAAY,KAAK,oBAAoB,CAAC,GAC/C,kBAAkB,QAAQ;CAE5B,kBAAkB,KAAK,eAAe;CAEtC,KAAK,MAAM,YAAY,gBACrB,iBAAiB,QAAQ;CAG3B,IAAI;EACF,IAAI,cAAc,SAAS,GAAG;GAC5B,KAAK,mBAAmB;GACxB,KAAK,kBAAkB,cAAc;EACvC,OAAO;GACL,OAAO,KAAK;GACZ,OAAO,KAAK;EACd;CACF,QAAQ,CAER;AACF"}
@@ -1,65 +0,0 @@
1
- import { getDevValue, incDevCounter } from "../runtime/dev-namespace.js";
2
- import { getCurrentInstance } from "../runtime/component-scope.js";
3
- import "../runtime/index.js";
4
- import { extractKey } from "./utils.js";
5
- import { ROUTE_ROOT_COMPONENT } from "../common/router-internal.js";
6
- //#region src/renderer/component-host-instances.ts
7
- function isRouteRootComponentVNode(node) {
8
- return typeof node === "object" && node !== null && node[ROUTE_ROOT_COMPONENT] === true;
9
- }
10
- function inheritComponentCleanupStrict(instance) {
11
- const owner = getCurrentInstance();
12
- if (owner) instance.cleanupStrict = owner.cleanupStrict;
13
- }
14
- const vnodeComponentInstances = /* @__PURE__ */ new WeakMap();
15
- function getVNodeComponentInstance(node) {
16
- if (typeof node !== "object" || node === null) return;
17
- return vnodeComponentInstances.get(node) ?? node.__instance;
18
- }
19
- function setVNodeComponentInstance(node, instance) {
20
- if (typeof node !== "object" || node === null) return;
21
- const objectNode = node;
22
- if (Object.prototype.hasOwnProperty.call(objectNode, "__instance")) try {
23
- objectNode.__instance = instance;
24
- return;
25
- } catch {}
26
- if (Object.isExtensible(objectNode)) try {
27
- objectNode.__instance = instance;
28
- return;
29
- } catch {}
30
- vnodeComponentInstances.set(objectNode, instance);
31
- }
32
- let fallbackComponentInstanceId = 0;
33
- function nextComponentInstanceId() {
34
- const key = "__COMPONENT_INSTANCE_ID";
35
- try {
36
- incDevCounter(key);
37
- const n = getDevValue(key);
38
- if (typeof n === "number" && Number.isFinite(n)) return `comp-${n}`;
39
- } catch {}
40
- fallbackComponentInstanceId++;
41
- return `comp-${fallbackComponentInstanceId}`;
42
- }
43
- function inheritComponentKey(target, source) {
44
- const inheritedKey = extractKey(source);
45
- if (inheritedKey === void 0 || extractKey(target) !== void 0) return target;
46
- target.key = inheritedKey;
47
- if (typeof target.type === "string") {
48
- if (!target.props) target.props = {};
49
- const props = target.props;
50
- if (props["data-key"] === void 0) props["data-key"] = String(inheritedKey);
51
- }
52
- return target;
53
- }
54
- function findHostInstanceByType(host, type) {
55
- const instances = host.__ASKR_INSTANCES;
56
- if (instances && instances.length > 0) for (let index = instances.length - 1; index >= 0; index -= 1) {
57
- const instance = instances[index];
58
- if (instance.fn === type) return instance;
59
- }
60
- return host.__ASKR_INSTANCE?.fn === type ? host.__ASKR_INSTANCE : null;
61
- }
62
- //#endregion
63
- export { findHostInstanceByType, getVNodeComponentInstance, inheritComponentCleanupStrict, inheritComponentKey, isRouteRootComponentVNode, nextComponentInstanceId, setVNodeComponentInstance };
64
-
65
- //# sourceMappingURL=component-host-instances.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"component-host-instances.js","names":[],"sources":["../../src/renderer/component-host-instances.ts"],"sourcesContent":["import { ROUTE_ROOT_COMPONENT } from '../common/router-internal';\nimport type { Props } from '../common/props';\nimport { getCurrentInstance, type ComponentInstance } from '../runtime';\nimport { getDevValue, incDevCounter } from '../runtime';\nimport type { InstanceHostElement } from './dom-host';\nimport type { DOMElement } from './types';\nimport { extractKey } from './utils';\n\nexport function isRouteRootComponentVNode(node: unknown): boolean {\n return (\n typeof node === 'object' &&\n node !== null &&\n (node as { [ROUTE_ROOT_COMPONENT]?: boolean })[ROUTE_ROOT_COMPONENT] ===\n true\n );\n}\n\nexport function inheritComponentCleanupStrict(\n instance: ComponentInstance\n): void {\n const owner = getCurrentInstance();\n if (owner) {\n instance.cleanupStrict = owner.cleanupStrict;\n }\n}\n\nconst vnodeComponentInstances = new WeakMap<object, ComponentInstance>();\n\nexport function getVNodeComponentInstance(\n node: unknown\n): ComponentInstance | undefined {\n if (typeof node !== 'object' || node === null) {\n return undefined;\n }\n\n return (\n vnodeComponentInstances.get(node) ??\n (node as { __instance?: ComponentInstance }).__instance\n );\n}\n\nexport function setVNodeComponentInstance(\n node: unknown,\n instance: ComponentInstance\n): void {\n if (typeof node !== 'object' || node === null) {\n return;\n }\n\n const objectNode = node as { __instance?: ComponentInstance };\n\n if (Object.prototype.hasOwnProperty.call(objectNode, '__instance')) {\n try {\n objectNode.__instance = instance;\n return;\n } catch {\n // Fall back to WeakMap for readonly vnode metadata.\n }\n }\n\n if (Object.isExtensible(objectNode)) {\n try {\n objectNode.__instance = instance;\n return;\n } catch {\n // Fall back to WeakMap for frozen/proxied objects.\n }\n }\n\n vnodeComponentInstances.set(objectNode, instance);\n}\n\nlet fallbackComponentInstanceId = 0;\n\nexport function nextComponentInstanceId(): string {\n const key = '__COMPONENT_INSTANCE_ID';\n try {\n incDevCounter(key);\n const n = getDevValue<number>(key);\n if (typeof n === 'number' && Number.isFinite(n)) return `comp-${n}`;\n } catch {\n // Fall through to local counter\n }\n fallbackComponentInstanceId++;\n return `comp-${fallbackComponentInstanceId}`;\n}\n\nexport function inheritComponentKey(\n target: DOMElement,\n source: DOMElement\n): DOMElement {\n const inheritedKey = extractKey(source);\n if (inheritedKey === undefined || extractKey(target) !== undefined) {\n return target;\n }\n\n target.key = inheritedKey;\n\n if (typeof target.type === 'string') {\n if (!target.props) {\n target.props = {};\n }\n\n const props = target.props as Record<string, unknown>;\n if (props['data-key'] === undefined) {\n props['data-key'] = String(inheritedKey);\n }\n }\n\n return target;\n}\n\nexport function findHostInstanceByType(\n host: InstanceHostElement,\n type: (props: Props) => unknown\n): ComponentInstance | null {\n const instances = host.__ASKR_INSTANCES;\n if (instances && instances.length > 0) {\n for (let index = instances.length - 1; index >= 0; index -= 1) {\n const instance = instances[index]!;\n if (instance.fn === type) {\n return instance;\n }\n }\n }\n\n return host.__ASKR_INSTANCE?.fn === type ? host.__ASKR_INSTANCE : null;\n}\n"],"mappings":";;;;;;AAQA,SAAgB,0BAA0B,MAAwB;CAChE,OACE,OAAO,SAAS,YAChB,SAAS,QACR,KAA8C,0BAC7C;AAEN;AAEA,SAAgB,8BACd,UACM;CACN,MAAM,QAAQ,mBAAmB;CACjC,IAAI,OACF,SAAS,gBAAgB,MAAM;AAEnC;AAEA,MAAM,0CAA0B,IAAI,QAAmC;AAEvE,SAAgB,0BACd,MAC+B;CAC/B,IAAI,OAAO,SAAS,YAAY,SAAS,MACvC;CAGF,OACE,wBAAwB,IAAI,IAAI,KAC/B,KAA4C;AAEjD;AAEA,SAAgB,0BACd,MACA,UACM;CACN,IAAI,OAAO,SAAS,YAAY,SAAS,MACvC;CAGF,MAAM,aAAa;CAEnB,IAAI,OAAO,UAAU,eAAe,KAAK,YAAY,YAAY,GAC/D,IAAI;EACF,WAAW,aAAa;EACxB;CACF,QAAQ,CAER;CAGF,IAAI,OAAO,aAAa,UAAU,GAChC,IAAI;EACF,WAAW,aAAa;EACxB;CACF,QAAQ,CAER;CAGF,wBAAwB,IAAI,YAAY,QAAQ;AAClD;AAEA,IAAI,8BAA8B;AAElC,SAAgB,0BAAkC;CAChD,MAAM,MAAM;CACZ,IAAI;EACF,cAAc,GAAG;EACjB,MAAM,IAAI,YAAoB,GAAG;EACjC,IAAI,OAAO,MAAM,YAAY,OAAO,SAAS,CAAC,GAAG,OAAO,QAAQ;CAClE,QAAQ,CAER;CACA;CACA,OAAO,QAAQ;AACjB;AAEA,SAAgB,oBACd,QACA,QACY;CACZ,MAAM,eAAe,WAAW,MAAM;CACtC,IAAI,iBAAiB,UAAa,WAAW,MAAM,MAAM,QACvD,OAAO;CAGT,OAAO,MAAM;CAEb,IAAI,OAAO,OAAO,SAAS,UAAU;EACnC,IAAI,CAAC,OAAO,OACV,OAAO,QAAQ,CAAC;EAGlB,MAAM,QAAQ,OAAO;EACrB,IAAI,MAAM,gBAAgB,QACxB,MAAM,cAAc,OAAO,YAAY;CAE3C;CAEA,OAAO;AACT;AAEA,SAAgB,uBACd,MACA,MAC0B;CAC1B,MAAM,YAAY,KAAK;CACvB,IAAI,aAAa,UAAU,SAAS,GAClC,KAAK,IAAI,QAAQ,UAAU,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG;EAC7D,MAAM,WAAW,UAAU;EAC3B,IAAI,SAAS,OAAO,MAClB,OAAO;CAEX;CAGF,OAAO,KAAK,iBAAiB,OAAO,OAAO,KAAK,kBAAkB;AACpE"}