@askrjs/askr 0.0.27 → 0.0.29

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 (442) hide show
  1. package/README.md +55 -147
  2. package/dist/_virtual/_rolldown/runtime.js +7 -0
  3. package/dist/bench/components/benchmark-row.d.ts +20 -0
  4. package/dist/bench/components/benchmark-row.d.ts.map +1 -0
  5. package/dist/bench/components/benchmark-row.js +42 -0
  6. package/dist/bench/components/benchmark-row.js.map +1 -0
  7. package/dist/bench/components/benchmark-table.js +25 -0
  8. package/dist/bench/components/benchmark-table.js.map +1 -0
  9. package/dist/benchmark.d.ts +22 -0
  10. package/dist/benchmark.d.ts.map +1 -0
  11. package/dist/benchmark.js +64 -1
  12. package/dist/benchmark.js.map +1 -0
  13. package/dist/bin/askr-ssg.d.ts +28 -0
  14. package/dist/bin/askr-ssg.d.ts.map +1 -0
  15. package/dist/bin/askr-ssg.js +171 -0
  16. package/dist/bin/askr-ssg.js.map +1 -0
  17. package/dist/boot/index.d.ts +64 -42
  18. package/dist/boot/index.d.ts.map +1 -1
  19. package/dist/boot/index.js +416 -2
  20. package/dist/boot/index.js.map +1 -0
  21. package/dist/common/component.d.ts +14 -13
  22. package/dist/common/component.d.ts.map +1 -1
  23. package/dist/common/control.d.ts +13 -0
  24. package/dist/common/control.d.ts.map +1 -0
  25. package/dist/common/control.js +14 -0
  26. package/dist/common/control.js.map +1 -0
  27. package/dist/common/env.js +47 -0
  28. package/dist/common/env.js.map +1 -0
  29. package/dist/common/jsx.d.ts +17 -15
  30. package/dist/common/jsx.d.ts.map +1 -1
  31. package/dist/common/jsx.js +8 -1
  32. package/dist/common/jsx.js.map +1 -0
  33. package/dist/common/props.d.ts +14 -11
  34. package/dist/common/props.d.ts.map +1 -1
  35. package/dist/common/router.d.ts +190 -32
  36. package/dist/common/router.d.ts.map +1 -1
  37. package/dist/common/ssr-errors.d.ts +6 -3
  38. package/dist/common/ssr-errors.d.ts.map +1 -1
  39. package/dist/common/ssr-errors.js +16 -1
  40. package/dist/common/ssr-errors.js.map +1 -0
  41. package/dist/common/ssr.d.ts +12 -9
  42. package/dist/common/ssr.d.ts.map +1 -1
  43. package/dist/common/vnode.d.ts +17 -15
  44. package/dist/common/vnode.d.ts.map +1 -1
  45. package/dist/common/vnode.js +10 -1
  46. package/dist/common/vnode.js.map +1 -0
  47. package/dist/components/link.d.ts +37 -25
  48. package/dist/components/link.d.ts.map +1 -1
  49. package/dist/components/link.js +64 -1
  50. package/dist/components/link.js.map +1 -0
  51. package/dist/control/case.d.ts +17 -0
  52. package/dist/control/case.d.ts.map +1 -0
  53. package/dist/control/case.js +69 -0
  54. package/dist/control/case.js.map +1 -0
  55. package/dist/control/for.d.ts +23 -0
  56. package/dist/control/for.d.ts.map +1 -0
  57. package/dist/control/for.js +62 -0
  58. package/dist/control/for.js.map +1 -0
  59. package/dist/control/index.d.ts +4 -0
  60. package/dist/control/index.js +4 -0
  61. package/dist/control/shared.js +20 -0
  62. package/dist/control/shared.js.map +1 -0
  63. package/dist/control/show.d.ts +14 -0
  64. package/dist/control/show.d.ts.map +1 -0
  65. package/dist/control/show.js +33 -0
  66. package/dist/control/show.js.map +1 -0
  67. package/dist/dev/invariant.js +29 -2
  68. package/dist/dev/invariant.js.map +1 -0
  69. package/dist/dev/logger.js +37 -1
  70. package/dist/dev/logger.js.map +1 -0
  71. package/dist/foundations/icon/icon.d.ts +53 -0
  72. package/dist/foundations/icon/icon.d.ts.map +1 -0
  73. package/dist/foundations/icon/icon.js +88 -0
  74. package/dist/foundations/icon/icon.js.map +1 -0
  75. package/dist/foundations/icon/icon.types.d.ts +21 -0
  76. package/dist/foundations/icon/icon.types.d.ts.map +1 -0
  77. package/dist/foundations/index.d.ts +10 -3
  78. package/dist/foundations/index.js +9 -1
  79. package/dist/foundations/interactions/interaction-policy.js +93 -1
  80. package/dist/foundations/interactions/interaction-policy.js.map +1 -0
  81. package/dist/foundations/interactions/pressable.js +51 -1
  82. package/dist/foundations/interactions/pressable.js.map +1 -0
  83. package/dist/foundations/structures/collection.d.ts +25 -40
  84. package/dist/foundations/structures/collection.d.ts.map +1 -1
  85. package/dist/foundations/structures/collection.js +51 -1
  86. package/dist/foundations/structures/collection.js.map +1 -0
  87. package/dist/foundations/structures/layer.d.ts +47 -68
  88. package/dist/foundations/structures/layer.d.ts.map +1 -1
  89. package/dist/foundations/structures/layer.js +81 -1
  90. package/dist/foundations/structures/layer.js.map +1 -0
  91. package/dist/foundations/structures/layout.d.ts +6 -3
  92. package/dist/foundations/structures/layout.d.ts.map +1 -1
  93. package/dist/foundations/structures/layout.js +13 -1
  94. package/dist/foundations/structures/layout.js.map +1 -0
  95. package/dist/foundations/structures/portal.d.ts +17 -10
  96. package/dist/foundations/structures/portal.d.ts.map +1 -1
  97. package/dist/foundations/structures/portal.js +105 -1
  98. package/dist/foundations/structures/portal.js.map +1 -0
  99. package/dist/foundations/structures/presence.d.ts +11 -5
  100. package/dist/foundations/structures/presence.d.ts.map +1 -1
  101. package/dist/foundations/structures/presence.js +39 -1
  102. package/dist/foundations/structures/presence.js.map +1 -0
  103. package/dist/foundations/structures/slot.d.ts +11 -8
  104. package/dist/foundations/structures/slot.d.ts.map +1 -1
  105. package/dist/foundations/structures/slot.js +41 -1
  106. package/dist/foundations/structures/slot.js.map +1 -0
  107. package/dist/foundations/structures.d.ts +7 -14
  108. package/dist/foundations/structures.js +6 -1
  109. package/dist/foundations/utilities/aria.js +11 -1
  110. package/dist/foundations/utilities/aria.js.map +1 -0
  111. package/dist/foundations/utilities/compose-handlers.js +20 -1
  112. package/dist/foundations/utilities/compose-handlers.js.map +1 -0
  113. package/dist/foundations/utilities/compose-ref.d.ts +7 -4
  114. package/dist/foundations/utilities/compose-ref.d.ts.map +1 -1
  115. package/dist/foundations/utilities/compose-ref.js +18 -1
  116. package/dist/foundations/utilities/compose-ref.js.map +1 -0
  117. package/dist/foundations/utilities/merge-props.js +49 -1
  118. package/dist/foundations/utilities/merge-props.js.map +1 -0
  119. package/dist/fx/fx.d.ts +24 -21
  120. package/dist/fx/fx.d.ts.map +1 -1
  121. package/dist/fx/fx.js +212 -1
  122. package/dist/fx/fx.js.map +1 -0
  123. package/dist/fx/index.d.ts +4 -7
  124. package/dist/fx/index.js +4 -1
  125. package/dist/fx/noop.js +9 -1
  126. package/dist/fx/noop.js.map +1 -0
  127. package/dist/fx/timing.d.ts +24 -21
  128. package/dist/fx/timing.d.ts.map +1 -1
  129. package/dist/fx/timing.js +236 -1
  130. package/dist/fx/timing.js.map +1 -0
  131. package/dist/index.d.ts +21 -20
  132. package/dist/index.js +34 -1
  133. package/dist/index.js.map +1 -0
  134. package/dist/jsx/index.d.ts +1 -4
  135. package/dist/jsx/index.js +3 -1
  136. package/dist/jsx/types.d.ts +18 -25
  137. package/dist/jsx/types.d.ts.map +1 -1
  138. package/dist/jsx/types.js +1 -1
  139. package/dist/jsx/utils.d.ts +4 -3
  140. package/dist/jsx/utils.d.ts.map +1 -1
  141. package/dist/jsx/utils.js +19 -1
  142. package/dist/jsx/utils.js.map +1 -0
  143. package/dist/jsx-dev-runtime.d.ts +8 -0
  144. package/dist/jsx-dev-runtime.d.ts.map +1 -0
  145. package/dist/jsx-dev-runtime.js +32 -1
  146. package/dist/jsx-dev-runtime.js.map +1 -0
  147. package/dist/jsx-runtime.d.ts +12 -0
  148. package/dist/jsx-runtime.d.ts.map +1 -0
  149. package/dist/jsx-runtime.js +45 -1
  150. package/dist/jsx-runtime.js.map +1 -0
  151. package/dist/jsx-runtime2.d.ts +2 -0
  152. package/dist/jsx-runtime2.js +3 -0
  153. package/dist/renderer/children.js +293 -0
  154. package/dist/renderer/children.js.map +1 -0
  155. package/dist/renderer/cleanup.js +150 -1
  156. package/dist/renderer/cleanup.js.map +1 -0
  157. package/dist/renderer/dom.js +2439 -1
  158. package/dist/renderer/dom.js.map +1 -0
  159. package/dist/renderer/env.js +1 -0
  160. package/dist/renderer/evaluate.js +450 -1
  161. package/dist/renderer/evaluate.js.map +1 -0
  162. package/dist/renderer/fastpath.js +145 -1
  163. package/dist/renderer/fastpath.js.map +1 -0
  164. package/dist/renderer/index.js +24 -1
  165. package/dist/renderer/index.js.map +1 -0
  166. package/dist/renderer/keyed.js +119 -1
  167. package/dist/renderer/keyed.js.map +1 -0
  168. package/dist/renderer/reconcile.js +359 -1
  169. package/dist/renderer/reconcile.js.map +1 -0
  170. package/dist/renderer/types.js +1 -1
  171. package/dist/renderer/utils.js +220 -1
  172. package/dist/renderer/utils.js.map +1 -0
  173. package/dist/resources/index.d.ts +3 -9
  174. package/dist/resources/index.js +3 -1
  175. package/dist/router/index.d.ts +6 -10
  176. package/dist/router/index.js +5 -1
  177. package/dist/router/match.js +83 -1
  178. package/dist/router/match.js.map +1 -0
  179. package/dist/router/navigate.d.ts +20 -8
  180. package/dist/router/navigate.d.ts.map +1 -1
  181. package/dist/router/navigate.js +288 -1
  182. package/dist/router/navigate.js.map +1 -0
  183. package/dist/router/policy.d.ts +22 -0
  184. package/dist/router/policy.d.ts.map +1 -0
  185. package/dist/router/policy.js +116 -0
  186. package/dist/router/policy.js.map +1 -0
  187. package/dist/router/route-context.js +79 -0
  188. package/dist/router/route-context.js.map +1 -0
  189. package/dist/router/route.d.ts +101 -33
  190. package/dist/router/route.d.ts.map +1 -1
  191. package/dist/router/route.js +599 -1
  192. package/dist/router/route.js.map +1 -0
  193. package/dist/runtime/child-scope.d.ts +21 -0
  194. package/dist/runtime/child-scope.d.ts.map +1 -0
  195. package/dist/runtime/child-scope.js +77 -0
  196. package/dist/runtime/child-scope.js.map +1 -0
  197. package/dist/runtime/component.d.ts +67 -53
  198. package/dist/runtime/component.d.ts.map +1 -1
  199. package/dist/runtime/component.js +462 -1
  200. package/dist/runtime/component.js.map +1 -0
  201. package/dist/runtime/context.d.ts +28 -42
  202. package/dist/runtime/context.d.ts.map +1 -1
  203. package/dist/runtime/context.js +205 -1
  204. package/dist/runtime/context.js.map +1 -0
  205. package/dist/runtime/control.d.ts +43 -0
  206. package/dist/runtime/control.d.ts.map +1 -0
  207. package/dist/runtime/control.js +125 -0
  208. package/dist/runtime/control.js.map +1 -0
  209. package/dist/runtime/derive.d.ts +15 -6
  210. package/dist/runtime/derive.d.ts.map +1 -1
  211. package/dist/runtime/derive.js +134 -1
  212. package/dist/runtime/derive.js.map +1 -0
  213. package/dist/runtime/dev-namespace.js +57 -1
  214. package/dist/runtime/dev-namespace.js.map +1 -0
  215. package/dist/runtime/effect.d.ts +32 -0
  216. package/dist/runtime/effect.d.ts.map +1 -0
  217. package/dist/runtime/effect.js +146 -0
  218. package/dist/runtime/effect.js.map +1 -0
  219. package/dist/runtime/events.js +162 -1
  220. package/dist/runtime/events.js.map +1 -0
  221. package/dist/runtime/execution-model.js +15 -1
  222. package/dist/runtime/execution-model.js.map +1 -0
  223. package/dist/runtime/fastlane.js +204 -1
  224. package/dist/runtime/fastlane.js.map +1 -0
  225. package/dist/runtime/for-bench.d.ts +41 -0
  226. package/dist/runtime/for-bench.d.ts.map +1 -0
  227. package/dist/runtime/for-bench.js +173 -0
  228. package/dist/runtime/for-bench.js.map +1 -0
  229. package/dist/runtime/for.d.ts +62 -49
  230. package/dist/runtime/for.d.ts.map +1 -1
  231. package/dist/runtime/for.js +668 -1
  232. package/dist/runtime/for.js.map +1 -0
  233. package/dist/runtime/operations.d.ts +18 -15
  234. package/dist/runtime/operations.d.ts.map +1 -1
  235. package/dist/runtime/operations.js +209 -1
  236. package/dist/runtime/operations.js.map +1 -0
  237. package/dist/runtime/perf-metrics.js +64 -0
  238. package/dist/runtime/perf-metrics.js.map +1 -0
  239. package/dist/runtime/readable.d.ts +27 -0
  240. package/dist/runtime/readable.d.ts.map +1 -0
  241. package/dist/runtime/readable.js +118 -0
  242. package/dist/runtime/readable.js.map +1 -0
  243. package/dist/runtime/resource-cell.js +102 -1
  244. package/dist/runtime/resource-cell.js.map +1 -0
  245. package/dist/runtime/scheduler.d.ts +51 -35
  246. package/dist/runtime/scheduler.d.ts.map +1 -1
  247. package/dist/runtime/scheduler.js +328 -1
  248. package/dist/runtime/scheduler.js.map +1 -0
  249. package/dist/runtime/selector.d.ts +11 -0
  250. package/dist/runtime/selector.d.ts.map +1 -0
  251. package/dist/runtime/selector.js +188 -0
  252. package/dist/runtime/selector.js.map +1 -0
  253. package/dist/runtime/ssr-bridge.js +24 -1
  254. package/dist/runtime/ssr-bridge.js.map +1 -0
  255. package/dist/runtime/state.d.ts +11 -21
  256. package/dist/runtime/state.d.ts.map +1 -1
  257. package/dist/runtime/state.js +99 -1
  258. package/dist/runtime/state.js.map +1 -0
  259. package/dist/ssg/batch-render.d.ts +16 -0
  260. package/dist/ssg/batch-render.d.ts.map +1 -0
  261. package/dist/ssg/batch-render.js +84 -0
  262. package/dist/ssg/batch-render.js.map +1 -0
  263. package/dist/ssg/create-static-gen.d.ts +50 -0
  264. package/dist/ssg/create-static-gen.d.ts.map +1 -0
  265. package/dist/ssg/create-static-gen.js +282 -0
  266. package/dist/ssg/create-static-gen.js.map +1 -0
  267. package/dist/ssg/generate-metadata.d.ts +24 -0
  268. package/dist/ssg/generate-metadata.d.ts.map +1 -0
  269. package/dist/ssg/generate-metadata.js +94 -0
  270. package/dist/ssg/generate-metadata.js.map +1 -0
  271. package/dist/ssg/incremental-manifest.js +56 -0
  272. package/dist/ssg/incremental-manifest.js.map +1 -0
  273. package/dist/ssg/index.d.ts +8 -0
  274. package/dist/ssg/index.js +7 -0
  275. package/dist/ssg/resolve-ssg-data.d.ts +23 -0
  276. package/dist/ssg/resolve-ssg-data.d.ts.map +1 -0
  277. package/dist/ssg/resolve-ssg-data.js +46 -0
  278. package/dist/ssg/resolve-ssg-data.js.map +1 -0
  279. package/dist/ssg/route-utils.d.ts +16 -0
  280. package/dist/ssg/route-utils.d.ts.map +1 -0
  281. package/dist/ssg/route-utils.js +24 -0
  282. package/dist/ssg/route-utils.js.map +1 -0
  283. package/dist/ssg/types.d.ts +177 -0
  284. package/dist/ssg/types.d.ts.map +1 -0
  285. package/dist/ssg/write-static-files.d.ts +15 -0
  286. package/dist/ssg/write-static-files.d.ts.map +1 -0
  287. package/dist/ssg/write-static-files.js +73 -0
  288. package/dist/ssg/write-static-files.js.map +1 -0
  289. package/dist/ssr/attrs.js +93 -1
  290. package/dist/ssr/attrs.js.map +1 -0
  291. package/dist/ssr/context.d.ts +31 -32
  292. package/dist/ssr/context.d.ts.map +1 -1
  293. package/dist/ssr/context.js +63 -1
  294. package/dist/ssr/context.js.map +1 -0
  295. package/dist/ssr/errors.d.ts +6 -4
  296. package/dist/ssr/errors.d.ts.map +1 -1
  297. package/dist/ssr/errors.js +4 -1
  298. package/dist/ssr/errors.js.map +1 -0
  299. package/dist/ssr/escape.js +153 -1
  300. package/dist/ssr/escape.js.map +1 -0
  301. package/dist/ssr/index.d.ts +75 -46
  302. package/dist/ssr/index.d.ts.map +1 -1
  303. package/dist/ssr/index.js +543 -1
  304. package/dist/ssr/index.js.map +1 -0
  305. package/dist/ssr/render-keys.d.ts +27 -29
  306. package/dist/ssr/render-keys.d.ts.map +1 -1
  307. package/dist/ssr/render-keys.js +39 -1
  308. package/dist/ssr/render-keys.js.map +1 -0
  309. package/dist/ssr/sink.js +86 -1
  310. package/dist/ssr/sink.js.map +1 -0
  311. package/dist/ssr/stream-render.js +76 -1
  312. package/dist/ssr/stream-render.js.map +1 -0
  313. package/dist/ssr/types.d.ts +14 -13
  314. package/dist/ssr/types.d.ts.map +1 -1
  315. package/package.json +53 -48
  316. package/dist/_virtual/___vite-browser-external.js +0 -1
  317. package/dist/_virtual/__vite-browser-external.js +0 -1
  318. package/dist/_virtual/_commonjsHelpers.js +0 -1
  319. package/dist/_virtual/main.js +0 -1
  320. package/dist/_virtual/preload-helper.js +0 -1
  321. package/dist/bench/benchmark-entry.d.ts +0 -14
  322. package/dist/bench/benchmark-entry.d.ts.map +0 -1
  323. package/dist/common/errors.d.ts +0 -53
  324. package/dist/common/errors.d.ts.map +0 -1
  325. package/dist/common/index.d.ts +0 -14
  326. package/dist/common/index.d.ts.map +0 -1
  327. package/dist/dev/invariant.d.ts +0 -83
  328. package/dist/dev/invariant.d.ts.map +0 -1
  329. package/dist/dev/logger.d.ts +0 -13
  330. package/dist/dev/logger.d.ts.map +0 -1
  331. package/dist/dev/vite-plugin-askr.d.ts +0 -18
  332. package/dist/dev/vite-plugin-askr.d.ts.map +0 -1
  333. package/dist/dev/warnings.d.ts +0 -5
  334. package/dist/dev/warnings.d.ts.map +0 -1
  335. package/dist/for/for.d.ts +0 -16
  336. package/dist/for/for.d.ts.map +0 -1
  337. package/dist/for/for.js +0 -1
  338. package/dist/for/index.d.ts +0 -2
  339. package/dist/for/index.d.ts.map +0 -1
  340. package/dist/for/index.js +0 -1
  341. package/dist/foundations/core.d.ts +0 -23
  342. package/dist/foundations/core.d.ts.map +0 -1
  343. package/dist/foundations/core.js +0 -1
  344. package/dist/foundations/index.d.ts.map +0 -1
  345. package/dist/foundations/interactions/dismissable.d.ts +0 -58
  346. package/dist/foundations/interactions/dismissable.d.ts.map +0 -1
  347. package/dist/foundations/interactions/dismissable.js +0 -1
  348. package/dist/foundations/interactions/focusable.d.ts +0 -16
  349. package/dist/foundations/interactions/focusable.d.ts.map +0 -1
  350. package/dist/foundations/interactions/focusable.js +0 -1
  351. package/dist/foundations/interactions/hoverable.d.ts +0 -19
  352. package/dist/foundations/interactions/hoverable.d.ts.map +0 -1
  353. package/dist/foundations/interactions/hoverable.js +0 -1
  354. package/dist/foundations/interactions/index.d.ts +0 -5
  355. package/dist/foundations/interactions/index.d.ts.map +0 -1
  356. package/dist/foundations/interactions/interaction-policy.d.ts +0 -96
  357. package/dist/foundations/interactions/interaction-policy.d.ts.map +0 -1
  358. package/dist/foundations/interactions/pressable.d.ts +0 -54
  359. package/dist/foundations/interactions/pressable.d.ts.map +0 -1
  360. package/dist/foundations/interactions/roving-focus.d.ts +0 -117
  361. package/dist/foundations/interactions/roving-focus.d.ts.map +0 -1
  362. package/dist/foundations/interactions/roving-focus.js +0 -1
  363. package/dist/foundations/state/controllable.d.ts +0 -53
  364. package/dist/foundations/state/controllable.d.ts.map +0 -1
  365. package/dist/foundations/state/controllable.js +0 -1
  366. package/dist/foundations/state/index.d.ts +0 -2
  367. package/dist/foundations/state/index.d.ts.map +0 -1
  368. package/dist/foundations/structures/index.d.ts +0 -5
  369. package/dist/foundations/structures/index.d.ts.map +0 -1
  370. package/dist/foundations/structures.d.ts.map +0 -1
  371. package/dist/foundations/utilities/aria.d.ts +0 -13
  372. package/dist/foundations/utilities/aria.d.ts.map +0 -1
  373. package/dist/foundations/utilities/compose-handlers.d.ts +0 -34
  374. package/dist/foundations/utilities/compose-handlers.d.ts.map +0 -1
  375. package/dist/foundations/utilities/event-types.d.ts +0 -17
  376. package/dist/foundations/utilities/event-types.d.ts.map +0 -1
  377. package/dist/foundations/utilities/index.d.ts +0 -7
  378. package/dist/foundations/utilities/index.d.ts.map +0 -1
  379. package/dist/foundations/utilities/merge-props.d.ts +0 -2
  380. package/dist/foundations/utilities/merge-props.d.ts.map +0 -1
  381. package/dist/foundations/utilities/use-id.d.ts +0 -29
  382. package/dist/foundations/utilities/use-id.d.ts.map +0 -1
  383. package/dist/foundations/utilities/use-id.js +0 -1
  384. package/dist/fx/index.d.ts.map +0 -1
  385. package/dist/fx/noop.d.ts +0 -12
  386. package/dist/fx/noop.d.ts.map +0 -1
  387. package/dist/index.d.ts.map +0 -1
  388. package/dist/jsx/index.d.ts.map +0 -1
  389. package/dist/jsx/jsx-dev-runtime.d.ts +0 -4
  390. package/dist/jsx/jsx-dev-runtime.d.ts.map +0 -1
  391. package/dist/jsx/jsx-runtime.d.ts +0 -10
  392. package/dist/jsx/jsx-runtime.d.ts.map +0 -1
  393. package/dist/node_modules/esbuild/lib/main.js +0 -65
  394. package/dist/renderer/cleanup.d.ts +0 -25
  395. package/dist/renderer/cleanup.d.ts.map +0 -1
  396. package/dist/renderer/dom.d.ts +0 -62
  397. package/dist/renderer/dom.d.ts.map +0 -1
  398. package/dist/renderer/evaluate.d.ts +0 -4
  399. package/dist/renderer/evaluate.d.ts.map +0 -1
  400. package/dist/renderer/fastpath.d.ts +0 -7
  401. package/dist/renderer/fastpath.d.ts.map +0 -1
  402. package/dist/renderer/index.d.ts +0 -6
  403. package/dist/renderer/index.d.ts.map +0 -1
  404. package/dist/renderer/keyed.d.ts +0 -23
  405. package/dist/renderer/keyed.d.ts.map +0 -1
  406. package/dist/renderer/reconcile.d.ts +0 -88
  407. package/dist/renderer/reconcile.d.ts.map +0 -1
  408. package/dist/renderer/types.d.ts +0 -3
  409. package/dist/renderer/types.d.ts.map +0 -1
  410. package/dist/renderer/utils.d.ts +0 -63
  411. package/dist/renderer/utils.d.ts.map +0 -1
  412. package/dist/resources/index.d.ts.map +0 -1
  413. package/dist/router/index.d.ts.map +0 -1
  414. package/dist/router/match.d.ts +0 -22
  415. package/dist/router/match.d.ts.map +0 -1
  416. package/dist/runtime/dev-namespace.d.ts +0 -31
  417. package/dist/runtime/dev-namespace.d.ts.map +0 -1
  418. package/dist/runtime/events.d.ts +0 -52
  419. package/dist/runtime/events.d.ts.map +0 -1
  420. package/dist/runtime/execution-model.d.ts +0 -4
  421. package/dist/runtime/execution-model.d.ts.map +0 -1
  422. package/dist/runtime/fastlane.d.ts +0 -27
  423. package/dist/runtime/fastlane.d.ts.map +0 -1
  424. package/dist/runtime/hydration.d.ts +0 -25
  425. package/dist/runtime/hydration.d.ts.map +0 -1
  426. package/dist/runtime/resource-cell.d.ts +0 -35
  427. package/dist/runtime/resource-cell.d.ts.map +0 -1
  428. package/dist/runtime/snapshot.d.ts +0 -25
  429. package/dist/runtime/snapshot.d.ts.map +0 -1
  430. package/dist/runtime/ssr-bridge.d.ts +0 -10
  431. package/dist/runtime/ssr-bridge.d.ts.map +0 -1
  432. package/dist/ssr/attrs.d.ts +0 -26
  433. package/dist/ssr/attrs.d.ts.map +0 -1
  434. package/dist/ssr/create-ssr.d.ts +0 -19
  435. package/dist/ssr/create-ssr.d.ts.map +0 -1
  436. package/dist/ssr/escape.d.ts +0 -38
  437. package/dist/ssr/escape.d.ts.map +0 -1
  438. package/dist/ssr/sink.d.ts +0 -23
  439. package/dist/ssr/sink.d.ts.map +0 -1
  440. package/dist/ssr/stream-render.d.ts +0 -7
  441. package/dist/ssr/stream-render.d.ts.map +0 -1
  442. package/dist/vite/index.js +0 -3
@@ -1 +1,11 @@
1
- function a(r){return r?{"aria-disabled":"true"}:{}}function i(r){return r===void 0?{}:{"aria-expanded":String(r)}}function n(r){return r===void 0?{}:{"aria-selected":String(r)}}export{a as ariaDisabled,i as ariaExpanded,n as ariaSelected};
1
+ //#region src/foundations/utilities/aria.ts
2
+ /**
3
+ * Tiny aria helpers
4
+ */
5
+ function ariaDisabled(disabled) {
6
+ return disabled ? { "aria-disabled": "true" } : {};
7
+ }
8
+ //#endregion
9
+ export { ariaDisabled };
10
+
11
+ //# sourceMappingURL=aria.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aria.js","names":[],"sources":["../../../src/foundations/utilities/aria.ts"],"sourcesContent":["/**\n * Tiny aria helpers\n */\n\nexport function ariaDisabled(disabled?: boolean): { 'aria-disabled'?: 'true' } {\n return disabled ? { 'aria-disabled': 'true' } : {};\n}\n\nexport function ariaExpanded(expanded?: boolean): {\n 'aria-expanded'?: 'true' | 'false';\n} {\n return expanded === undefined\n ? {}\n : { 'aria-expanded': String(expanded) as 'true' | 'false' };\n}\n\nexport function ariaSelected(selected?: boolean): {\n 'aria-selected'?: 'true' | 'false';\n} {\n return selected === undefined\n ? {}\n : { 'aria-selected': String(selected) as 'true' | 'false' };\n}\n"],"mappings":";;;;AAIA,SAAgB,aAAa,UAAkD;AAC7E,QAAO,WAAW,EAAE,iBAAiB,QAAQ,GAAG,EAAE"}
@@ -1 +1,20 @@
1
- function f(e){return typeof e=="object"&&e!==null&&"defaultPrevented"in e&&e.defaultPrevented===!0}function i(e,t,r){if(!e&&!t)return o;if(!e)return t;if(!t)return e;const u=r?.checkDefaultPrevented!==!1;return function(...n){e(...n),!(u&&f(n[0]))&&t(...n)}}function o(){}export{i as composeHandlers};
1
+ //#region src/foundations/utilities/compose-handlers.ts
2
+ function isDefaultPrevented(value) {
3
+ return typeof value === "object" && value !== null && "defaultPrevented" in value && value.defaultPrevented === true;
4
+ }
5
+ function composeHandlers(first, second, options) {
6
+ if (!first && !second) return noop;
7
+ if (!first) return second;
8
+ if (!second) return first;
9
+ const checkDefaultPrevented = options?.checkDefaultPrevented !== false;
10
+ return function composed(...args) {
11
+ first(...args);
12
+ if (checkDefaultPrevented && isDefaultPrevented(args[0])) return;
13
+ second(...args);
14
+ };
15
+ }
16
+ function noop() {}
17
+ //#endregion
18
+ export { composeHandlers };
19
+
20
+ //# sourceMappingURL=compose-handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compose-handlers.js","names":[],"sources":["../../../src/foundations/utilities/compose-handlers.ts"],"sourcesContent":["/**\n * composeHandlers\n *\n * Compose two event handlers into one. The first handler runs, and unless it\n * calls `event.preventDefault()` (or sets `defaultPrevented`), the second\n * handler runs. This prevents accidental clobbering of child handlers when\n * injecting props.\n *\n * POLICY DECISIONS (LOCKED):\n *\n * 1. Execution Order\n * First handler runs before second (injected before base).\n * This allows injected handlers to prevent default behavior.\n *\n * 2. Default Prevention Check\n * By default, checks `defaultPrevented` on first argument.\n * Can be disabled via options.checkDefaultPrevented = false.\n *\n * 3. Undefined Handler Support\n * Undefined handlers are skipped (no-op). This simplifies usage\n * where handlers are optional.\n *\n * 4. Type Safety\n * Args are readonly to prevent mutation. Return type matches input.\n */\n\nexport interface ComposeHandlersOptions {\n /**\n * When true (default), do not run the second handler if the first prevented default.\n * When false, always run both handlers.\n */\n checkDefaultPrevented?: boolean;\n}\n\nfunction isDefaultPrevented(\n value: unknown\n): value is { defaultPrevented: true } {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'defaultPrevented' in value &&\n (value as { defaultPrevented?: boolean }).defaultPrevented === true\n );\n}\n\nexport function composeHandlers<A extends readonly unknown[]>(\n first?: (...args: A) => void,\n second?: (...args: A) => void,\n options?: ComposeHandlersOptions\n): (...args: A) => void {\n // Fast path: if neither handler exists, return stable no-op\n if (!first && !second) {\n return noop as (...args: A) => void;\n }\n\n // Fast path: if only one handler exists, return it directly\n if (!first) return second!;\n if (!second) return first;\n\n // Composition path: both handlers exist\n const checkDefaultPrevented = options?.checkDefaultPrevented !== false;\n\n return function composed(...args: A) {\n first(...args);\n\n if (checkDefaultPrevented && isDefaultPrevented(args[0])) {\n return;\n }\n\n second(...args);\n } as (...args: A) => void;\n}\n\n// Stable no-op for fast path\nfunction noop() {}\n"],"mappings":";AAkCA,SAAS,mBACP,OACqC;AACrC,QACE,OAAO,UAAU,YACjB,UAAU,QACV,sBAAsB,SACrB,MAAyC,qBAAqB;;AAInE,SAAgB,gBACd,OACA,QACA,SACsB;AAEtB,KAAI,CAAC,SAAS,CAAC,OACb,QAAO;AAIT,KAAI,CAAC,MAAO,QAAO;AACnB,KAAI,CAAC,OAAQ,QAAO;CAGpB,MAAM,wBAAwB,SAAS,0BAA0B;AAEjE,QAAO,SAAS,SAAS,GAAG,MAAS;AACnC,QAAM,GAAG,KAAK;AAEd,MAAI,yBAAyB,mBAAmB,KAAK,GAAG,CACtD;AAGF,SAAO,GAAG,KAAK;;;AAKnB,SAAS,OAAO"}
@@ -1,3 +1,4 @@
1
+ //#region src/foundations/utilities/compose-ref.d.ts
1
2
  /**
2
3
  * Ref composition utilities
3
4
  *
@@ -16,9 +17,11 @@
16
17
  * composeRefs applies refs in array order (left to right).
17
18
  * All refs are called even if one fails.
18
19
  */
19
- export type Ref<T> = ((value: T | null) => void) | {
20
- current: T | null;
20
+ type Ref<T> = ((value: T | null) => void) | {
21
+ current: T | null;
21
22
  } | null | undefined;
22
- export declare function setRef<T>(ref: Ref<T>, value: T | null): void;
23
- export declare function composeRefs<T>(...refs: Array<Ref<T>>): (value: T | null) => void;
23
+ declare function setRef<T>(ref: Ref<T>, value: T | null): void;
24
+ declare function composeRefs<T>(...refs: Array<Ref<T>>): (value: T | null) => void;
25
+ //#endregion
26
+ export { Ref };
24
27
  //# sourceMappingURL=compose-ref.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"compose-ref.d.ts","sourceRoot":"","sources":["../../../src/foundations/utilities/compose-ref.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,MAAM,GAAG,CAAC,CAAC,IACb,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC,GAC3B;IAAE,OAAO,EAAE,CAAC,GAAG,IAAI,CAAA;CAAE,GACrB,IAAI,GACJ,SAAS,CAAC;AAEd,wBAAgB,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,CAU5D;AAED,wBAAgB,WAAW,CAAC,CAAC,EAC3B,GAAG,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GACrB,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,KAAK,IAAI,CAI3B"}
1
+ {"version":3,"file":"compose-ref.d.ts","names":[],"sources":["../../../src/foundations/utilities/compose-ref.ts"],"mappings":";;AAmBA;;;;;;;;;;;AAMA;;;;;;KANY,GAAA,QACN,KAAA,EAAO,CAAA;EACP,OAAA,EAAS,CAAA;AAAA;AAAA,iBAIC,MAAA,GAAA,CAAU,GAAA,EAAK,GAAA,CAAI,CAAA,GAAI,KAAA,EAAO,CAAA;AAAA,iBAY9B,WAAA,GAAA,CAAA,GACX,IAAA,EAAM,KAAA,CAAM,GAAA,CAAI,CAAA,MACjB,KAAA,EAAO,CAAA"}
@@ -1 +1,18 @@
1
- function e(t,n){if(t){if(typeof t=="function"){t(n);return}Object.isExtensible(t)&&(t.current=n)}}function f(...t){return n=>{for(const o of t)e(o,n)}}export{f as composeRefs,e as setRef};
1
+ //#region src/foundations/utilities/compose-ref.ts
2
+ function setRef(ref, value) {
3
+ if (!ref) return;
4
+ if (typeof ref === "function") {
5
+ ref(value);
6
+ return;
7
+ }
8
+ if (Object.isExtensible(ref)) ref.current = value;
9
+ }
10
+ function composeRefs(...refs) {
11
+ return (value) => {
12
+ for (const ref of refs) setRef(ref, value);
13
+ };
14
+ }
15
+ //#endregion
16
+ export { composeRefs };
17
+
18
+ //# sourceMappingURL=compose-ref.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compose-ref.js","names":[],"sources":["../../../src/foundations/utilities/compose-ref.ts"],"sourcesContent":["/**\n * Ref composition utilities\n *\n * POLICY DECISIONS (LOCKED):\n *\n * 1. Ref Types Supported\n * - Callback refs: (value: T | null) => void\n * - Object refs: { current: T | null }\n * - null/undefined (no-op)\n *\n * 2. Write Failure Handling\n * setRef catches write failures (readonly refs) and ignores them.\n * This is intentional — refs may be readonly in some contexts.\n *\n * 3. Composition Order\n * composeRefs applies refs in array order (left to right).\n * All refs are called even if one fails.\n */\n\nexport type Ref<T> =\n | ((value: T | null) => void)\n | { current: T | null }\n | null\n | undefined;\n\nexport function setRef<T>(ref: Ref<T>, value: T | null): void {\n if (!ref) return;\n if (typeof ref === 'function') {\n ref(value);\n return;\n }\n // Fast path: use Object.isExtensible check instead of try/catch for better performance\n if (Object.isExtensible(ref)) {\n (ref as { current: T | null }).current = value;\n }\n}\n\nexport function composeRefs<T>(\n ...refs: Array<Ref<T>>\n): (value: T | null) => void {\n return (value: T | null) => {\n for (const ref of refs) setRef(ref, value);\n };\n}\n"],"mappings":";AAyBA,SAAgB,OAAU,KAAa,OAAuB;AAC5D,KAAI,CAAC,IAAK;AACV,KAAI,OAAO,QAAQ,YAAY;AAC7B,MAAI,MAAM;AACV;;AAGF,KAAI,OAAO,aAAa,IAAI,CACzB,KAA8B,UAAU;;AAI7C,SAAgB,YACd,GAAG,MACwB;AAC3B,SAAQ,UAAoB;AAC1B,OAAK,MAAM,OAAO,KAAM,QAAO,KAAK,MAAM"}
@@ -1 +1,49 @@
1
- import{composeHandlers as f}from"./compose-handlers.js";function u(n){return n.startsWith("on")}function a(n,o){const s=Object.keys(n);if(s.length===0)return o;const e={...o};for(const t of s){const r=n[t],c=o[t];if(u(t)&&typeof r=="function"&&typeof c=="function"){e[t]=f(c,r);continue}e[t]=r}return e}export{a as mergeProps};
1
+ import { composeHandlers } from "./compose-handlers.js";
2
+ //#region src/foundations/utilities/merge-props.ts
3
+ /**
4
+ * mergeProps
5
+ *
6
+ * Deterministic props merging.
7
+ * - For non-handlers: `base` overwrites `injected`.
8
+ * - For handlers present in both: handlers are composed with `injected` running
9
+ * first; it may call `preventDefault()` to suppress the `base` handler.
10
+ *
11
+ * POLICY DECISIONS (LOCKED):
12
+ *
13
+ * 1. Merge Strategy
14
+ * Base props overwrite injected props (base wins).
15
+ * Exception: Event handlers are composed, not overwritten.
16
+ *
17
+ * 2. Event Handler Detection
18
+ * Keys starting with "on" are treated as event handlers.
19
+ * This matches JSX conventions.
20
+ *
21
+ * 3. Handler Composition Order
22
+ * Injected handler runs first, base handler second.
23
+ * This allows injected handlers to prevent default.
24
+ *
25
+ * 4. Return Type
26
+ * Returns intersection type (TInjected & TBase) for type safety.
27
+ */
28
+ function isEventHandlerKey(key) {
29
+ return key.startsWith("on");
30
+ }
31
+ function mergeProps(base, injected) {
32
+ const baseKeys = Object.keys(base);
33
+ if (baseKeys.length === 0) return injected;
34
+ const out = { ...injected };
35
+ for (const key of baseKeys) {
36
+ const baseValue = base[key];
37
+ const injectedValue = injected[key];
38
+ if (isEventHandlerKey(key) && typeof baseValue === "function" && typeof injectedValue === "function") {
39
+ out[key] = composeHandlers(injectedValue, baseValue);
40
+ continue;
41
+ }
42
+ out[key] = baseValue;
43
+ }
44
+ return out;
45
+ }
46
+ //#endregion
47
+ export { mergeProps };
48
+
49
+ //# sourceMappingURL=merge-props.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge-props.js","names":[],"sources":["../../../src/foundations/utilities/merge-props.ts"],"sourcesContent":["/**\n * mergeProps\n *\n * Deterministic props merging.\n * - For non-handlers: `base` overwrites `injected`.\n * - For handlers present in both: handlers are composed with `injected` running\n * first; it may call `preventDefault()` to suppress the `base` handler.\n *\n * POLICY DECISIONS (LOCKED):\n *\n * 1. Merge Strategy\n * Base props overwrite injected props (base wins).\n * Exception: Event handlers are composed, not overwritten.\n *\n * 2. Event Handler Detection\n * Keys starting with \"on\" are treated as event handlers.\n * This matches JSX conventions.\n *\n * 3. Handler Composition Order\n * Injected handler runs first, base handler second.\n * This allows injected handlers to prevent default.\n *\n * 4. Return Type\n * Returns intersection type (TInjected & TBase) for type safety.\n */\nimport { composeHandlers } from './compose-handlers';\n\ntype Fn = (...args: readonly unknown[]) => void;\n\nfunction isEventHandlerKey(key: string): boolean {\n return key.startsWith('on');\n}\n\nexport function mergeProps<TBase extends object, TInjected extends object>(\n base: TBase,\n injected: TInjected\n): TInjected & TBase {\n // Fast path: if base is empty, return injected as-is\n const baseKeys = Object.keys(base);\n if (baseKeys.length === 0) {\n return injected as TInjected & TBase;\n }\n\n const out = { ...(injected as object) } as TInjected & TBase;\n\n for (const key of baseKeys as Array<Extract<keyof TBase, string>>) {\n const baseValue = (base as Record<string, unknown>)[key];\n const injectedValue = (injected as Record<string, unknown>)[key];\n\n if (\n isEventHandlerKey(key) &&\n typeof baseValue === 'function' &&\n typeof injectedValue === 'function'\n ) {\n // Invariant: injected runs first; it may call preventDefault() to\n // suppress base behaviour.\n (out as Record<string, unknown>)[key] = composeHandlers(\n injectedValue as unknown as Fn,\n baseValue as unknown as Fn\n );\n continue;\n }\n\n (out as Record<string, unknown>)[key] = baseValue;\n }\n\n return out;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BA,SAAS,kBAAkB,KAAsB;AAC/C,QAAO,IAAI,WAAW,KAAK;;AAG7B,SAAgB,WACd,MACA,UACmB;CAEnB,MAAM,WAAW,OAAO,KAAK,KAAK;AAClC,KAAI,SAAS,WAAW,EACtB,QAAO;CAGT,MAAM,MAAM,EAAE,GAAI,UAAqB;AAEvC,MAAK,MAAM,OAAO,UAAiD;EACjE,MAAM,YAAa,KAAiC;EACpD,MAAM,gBAAiB,SAAqC;AAE5D,MACE,kBAAkB,IAAI,IACtB,OAAO,cAAc,cACrB,OAAO,kBAAkB,YACzB;AAGC,OAAgC,OAAO,gBACtC,eACA,UACD;AACD;;AAGD,MAAgC,OAAO;;AAG1C,QAAO"}
package/dist/fx/fx.d.ts CHANGED
@@ -1,30 +1,33 @@
1
- export type CancelFn = () => void;
2
- export declare function debounceEvent(ms: number, handler: EventListener, options?: {
3
- leading?: boolean;
4
- trailing?: boolean;
1
+ //#region src/fx/fx.d.ts
2
+ type CancelFn = () => void;
3
+ declare function debounceEvent(ms: number, handler: EventListener, options?: {
4
+ leading?: boolean;
5
+ trailing?: boolean;
5
6
  }): EventListener & {
6
- cancel(): void;
7
- flush(): void;
7
+ cancel(): void;
8
+ flush(): void;
8
9
  };
9
- export declare function throttleEvent(ms: number, handler: EventListener, options?: {
10
- leading?: boolean;
11
- trailing?: boolean;
10
+ declare function throttleEvent(ms: number, handler: EventListener, options?: {
11
+ leading?: boolean;
12
+ trailing?: boolean;
12
13
  }): EventListener & {
13
- cancel(): void;
14
+ cancel(): void;
14
15
  };
15
- export declare function rafEvent(handler: EventListener): EventListener & {
16
- cancel(): void;
16
+ declare function rafEvent(handler: EventListener): EventListener & {
17
+ cancel(): void;
17
18
  };
18
- export declare function scheduleTimeout(ms: number, fn: () => void): CancelFn;
19
- export declare function scheduleIdle(fn: () => void, options?: {
20
- timeout?: number;
19
+ declare function scheduleTimeout(ms: number, fn: () => void): CancelFn;
20
+ declare function scheduleIdle(fn: () => void, options?: {
21
+ timeout?: number;
21
22
  }): CancelFn;
22
- export interface RetryOptions {
23
- maxAttempts?: number;
24
- delayMs?: number;
25
- backoff?: (attemptIndex: number) => number;
23
+ interface RetryOptions {
24
+ maxAttempts?: number;
25
+ delayMs?: number;
26
+ backoff?: (attemptIndex: number) => number;
26
27
  }
27
- export declare function scheduleRetry<T>(fn: () => Promise<T>, options?: RetryOptions): {
28
- cancel(): void;
28
+ declare function scheduleRetry<T>(fn: () => Promise<T>, options?: RetryOptions): {
29
+ cancel(): void;
29
30
  };
31
+ //#endregion
32
+ export { debounceEvent, rafEvent, scheduleIdle, scheduleRetry, scheduleTimeout, throttleEvent };
30
33
  //# sourceMappingURL=fx.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fx.d.ts","sourceRoot":"","sources":["../../src/fx/fx.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC;AAwClC,wBAAgB,aAAa,CAC3B,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,aAAa,EACtB,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,GAClD,aAAa,GAAG;IAAE,MAAM,IAAI,IAAI,CAAC;IAAC,KAAK,IAAI,IAAI,CAAA;CAAE,CAoEnD;AAED,wBAAgB,aAAa,CAC3B,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,aAAa,EACtB,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,GAClD,aAAa,GAAG;IAAE,MAAM,IAAI,IAAI,CAAA;CAAE,CAwDpC;AAED,wBAAgB,QAAQ,CACtB,OAAO,EAAE,aAAa,GACrB,aAAa,GAAG;IAAE,MAAM,IAAI,IAAI,CAAA;CAAE,CAmDpC;AAID,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,IAAI,GAAG,QAAQ,CAqBpE;AAED,wBAAgB,YAAY,CAC1B,EAAE,EAAE,MAAM,IAAI,EACd,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7B,QAAQ,CAwCV;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,MAAM,CAAC;CAC5C;AAED,wBAAgB,aAAa,CAAC,CAAC,EAC7B,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,CAAC,EAAE,YAAY,GACrB;IAAE,MAAM,IAAI,IAAI,CAAA;CAAE,CAiDpB"}
1
+ {"version":3,"file":"fx.d.ts","names":[],"sources":["../../src/fx/fx.ts"],"mappings":";KAKY,QAAA;AAAA,iBAwCI,aAAA,CACd,EAAA,UACA,OAAA,EAAS,aAAA,EACT,OAAA;EAAY,OAAA;EAAmB,QAAA;AAAA,IAC9B,aAAA;EAAkB,MAAA;EAAgB,KAAA;AAAA;AAAA,iBAsErB,aAAA,CACd,EAAA,UACA,OAAA,EAAS,aAAA,EACT,OAAA;EAAY,OAAA;EAAmB,QAAA;AAAA,IAC9B,aAAA;EAAkB,MAAA;AAAA;AAAA,iBA0DL,QAAA,CACd,OAAA,EAAS,aAAA,GACR,aAAA;EAAkB,MAAA;AAAA;AAAA,iBAuDL,eAAA,CAAgB,EAAA,UAAY,EAAA,eAAiB,QAAA;AAAA,iBAuB7C,YAAA,CACd,EAAA,cACA,OAAA;EAAY,OAAA;AAAA,IACX,QAAA;AAAA,UA0Cc,YAAA;EACf,WAAA;EACA,OAAA;EACA,OAAA,IAAW,YAAA;AAAA;AAAA,iBAGG,aAAA,GAAA,CACd,EAAA,QAAU,OAAA,CAAQ,CAAA,GAClB,OAAA,GAAU,YAAA;EACP,MAAA;AAAA"}
package/dist/fx/fx.js CHANGED
@@ -1 +1,212 @@
1
- import{globalScheduler as h}from"../runtime/scheduler.js";import{getCurrentComponentInstance as d}from"../runtime/component.js";import{logger as T}from"../dev/logger.js";import{noopEventListenerWithFlush as g,noopEventListener as F}from"./noop.js";function p(){if(d()!==null)throw new Error("[Askr] calling FX handler during render is not allowed. Move calls to event handlers or effects.")}function m(c){h.enqueue(()=>{try{c()}catch(u){T.error("[Askr] FX handler error:",u)}})}function A(c,u,e){const{leading:n=!1,trailing:o=!0}=e||{},r=d();if(r&&r.ssr)return g;let l=null,t=null,s=0;const i=function(f){p();const a=Date.now();t=f,l!==null&&(clearTimeout(l),l=null),n&&a-s>=c&&(m(()=>u.call(null,f)),s=a),o&&(l=setTimeout(()=>{t&&m(()=>u.call(null,t)),l=null,s=Date.now()},c))};return i.cancel=()=>{l!==null&&(clearTimeout(l),l=null),t=null},i.flush=()=>{if(l!==null){clearTimeout(l);const f=t;t=null,l=null,f&&m(()=>u.call(null,f))}},r&&r.cleanupFns.push(()=>{i.cancel()}),i}function C(c,u,e){const{leading:n=!0,trailing:o=!0}=e||{},r=d();if(r&&r.ssr)return F;let l=0,t=null,s=null;const i=function(f){p();const a=Date.now();if(s=f,n&&a-l>=c?(m(()=>u.call(null,f)),l=a,t!==null&&(clearTimeout(t),t=null)):!n&&l===0&&(l=a),o&&t===null){const w=c-(a-l);t=setTimeout(()=>{s&&m(()=>u.call(null,s)),l=Date.now(),t=null},Math.max(0,w))}};return i.cancel=()=>{t!==null&&(clearTimeout(t),t=null),s=null},r&&r.cleanupFns.push(()=>i.cancel()),i}function k(c){const u=d();if(u&&u.ssr)return F;let e=null,n=null;const o=()=>{e=(typeof requestAnimationFrame<"u"?requestAnimationFrame:t=>setTimeout(()=>t(Date.now()),16))(()=>{if(e=null,n){const t=n;n=null,m(()=>c.call(null,t))}})},r=function(l){p(),n=l,e===null&&o()};return r.cancel=()=>{e!==null&&(typeof cancelAnimationFrame<"u"&&typeof e=="number"?cancelAnimationFrame(e):clearTimeout(e),e=null),n=null},u&&u.cleanupFns.push(()=>r.cancel()),r}function E(c,u){p();const e=d();if(e&&e.ssr)return()=>{};let n=setTimeout(()=>{n=null,m(u)},c);const o=()=>{n!==null&&(clearTimeout(n),n=null)};return e&&e.cleanupFns.push(o),o}function q(c,u){p();const e=d();if(e&&e.ssr)return()=>{};let n=null,o=!1;typeof requestIdleCallback<"u"?(o=!0,n=requestIdleCallback(()=>{n=null,m(c)},u)):n=setTimeout(()=>{n=null,m(c)},0);const r=()=>{n!==null&&(o&&typeof cancelIdleCallback<"u"&&typeof n=="number"?cancelIdleCallback(n):clearTimeout(n),n=null)};return e&&e.cleanupFns.push(r),r}function D(c,u){p();const e=d();if(e&&e.ssr)return{cancel:()=>{}};const{maxAttempts:n=3,delayMs:o=100,backoff:r=i=>o*Math.pow(2,i)}=u||{};let l=!1;const t=i=>{l||h.enqueue(()=>{if(l)return;c().then(()=>{},()=>{if(!l&&i+1<n){const a=r(i);setTimeout(()=>{t(i+1)},a)}}).catch(a=>{T.error("[Askr] scheduleRetry error:",a)})})};t(0);const s=()=>{l=!0};return e&&e.cleanupFns.push(s),{cancel:s}}export{A as debounceEvent,k as rafEvent,q as scheduleIdle,D as scheduleRetry,E as scheduleTimeout,C as throttleEvent};
1
+ import { logger } from "../dev/logger.js";
2
+ import { globalScheduler } from "../runtime/scheduler.js";
3
+ import { getCurrentComponentInstance } from "../runtime/component.js";
4
+ import { noopEventListener, noopEventListenerWithFlush } from "./noop.js";
5
+ //#region src/fx/fx.ts
6
+ function throwIfDuringRender() {
7
+ if (getCurrentComponentInstance() !== null) throw new Error("[Askr] calling FX handler during render is not allowed. Move calls to event handlers or effects.");
8
+ }
9
+ /**
10
+ * Helper: schedule a user callback through the global scheduler
11
+ */
12
+ function enqueueUserCallback(fn) {
13
+ globalScheduler.enqueue(() => {
14
+ try {
15
+ fn();
16
+ } catch (err) {
17
+ logger.error("[Askr] FX handler error:", err);
18
+ }
19
+ });
20
+ }
21
+ function debounceEvent(ms, handler, options) {
22
+ const { leading = false, trailing = true } = options || {};
23
+ const inst = getCurrentComponentInstance();
24
+ if (inst && inst.ssr) return noopEventListenerWithFlush;
25
+ let timeoutId = null;
26
+ let lastEvent = null;
27
+ let lastCallTime = 0;
28
+ const debounced = function(ev) {
29
+ throwIfDuringRender();
30
+ const now = Date.now();
31
+ lastEvent = ev;
32
+ if (timeoutId !== null) {
33
+ clearTimeout(timeoutId);
34
+ timeoutId = null;
35
+ }
36
+ if (leading && now - lastCallTime >= ms) {
37
+ enqueueUserCallback(() => handler.call(null, ev));
38
+ lastCallTime = now;
39
+ }
40
+ if (trailing) timeoutId = setTimeout(() => {
41
+ if (lastEvent) enqueueUserCallback(() => handler.call(null, lastEvent));
42
+ timeoutId = null;
43
+ lastCallTime = Date.now();
44
+ }, ms);
45
+ };
46
+ debounced.cancel = () => {
47
+ if (timeoutId !== null) {
48
+ clearTimeout(timeoutId);
49
+ timeoutId = null;
50
+ }
51
+ lastEvent = null;
52
+ };
53
+ debounced.flush = () => {
54
+ if (timeoutId !== null) {
55
+ clearTimeout(timeoutId);
56
+ const ev = lastEvent;
57
+ lastEvent = null;
58
+ timeoutId = null;
59
+ if (ev) enqueueUserCallback(() => handler.call(null, ev));
60
+ }
61
+ };
62
+ if (inst) (inst.cleanupFns ??= []).push(() => {
63
+ debounced.cancel();
64
+ });
65
+ return debounced;
66
+ }
67
+ function throttleEvent(ms, handler, options) {
68
+ const { leading = true, trailing = true } = options || {};
69
+ const inst = getCurrentComponentInstance();
70
+ if (inst && inst.ssr) return noopEventListener;
71
+ let lastCallTime = 0;
72
+ let timeoutId = null;
73
+ let lastEvent = null;
74
+ const throttled = function(ev) {
75
+ throwIfDuringRender();
76
+ const now = Date.now();
77
+ lastEvent = ev;
78
+ if (leading && now - lastCallTime >= ms) {
79
+ enqueueUserCallback(() => handler.call(null, ev));
80
+ lastCallTime = now;
81
+ if (timeoutId !== null) {
82
+ clearTimeout(timeoutId);
83
+ timeoutId = null;
84
+ }
85
+ } else if (!leading && lastCallTime === 0) lastCallTime = now;
86
+ if (trailing && timeoutId === null) {
87
+ const wait = ms - (now - lastCallTime);
88
+ timeoutId = setTimeout(() => {
89
+ if (lastEvent) enqueueUserCallback(() => handler.call(null, lastEvent));
90
+ lastCallTime = Date.now();
91
+ timeoutId = null;
92
+ }, Math.max(0, wait));
93
+ }
94
+ };
95
+ throttled.cancel = () => {
96
+ if (timeoutId !== null) {
97
+ clearTimeout(timeoutId);
98
+ timeoutId = null;
99
+ }
100
+ lastEvent = null;
101
+ };
102
+ if (inst) (inst.cleanupFns ??= []).push(() => throttled.cancel());
103
+ return throttled;
104
+ }
105
+ function rafEvent(handler) {
106
+ const inst = getCurrentComponentInstance();
107
+ if (inst && inst.ssr) return noopEventListener;
108
+ let frameId = null;
109
+ let lastEvent = null;
110
+ const scheduleFrame = () => {
111
+ frameId = (typeof requestAnimationFrame !== "undefined" ? requestAnimationFrame : (cb) => setTimeout(() => cb(Date.now()), 16))(() => {
112
+ frameId = null;
113
+ if (lastEvent) {
114
+ const ev = lastEvent;
115
+ lastEvent = null;
116
+ enqueueUserCallback(() => handler.call(null, ev));
117
+ }
118
+ });
119
+ };
120
+ const fn = function(ev) {
121
+ throwIfDuringRender();
122
+ lastEvent = ev;
123
+ if (frameId === null) scheduleFrame();
124
+ };
125
+ fn.cancel = () => {
126
+ if (frameId !== null) {
127
+ if (typeof cancelAnimationFrame !== "undefined" && typeof frameId === "number") cancelAnimationFrame(frameId);
128
+ else clearTimeout(frameId);
129
+ frameId = null;
130
+ }
131
+ lastEvent = null;
132
+ };
133
+ if (inst) (inst.cleanupFns ??= []).push(() => fn.cancel());
134
+ return fn;
135
+ }
136
+ function scheduleTimeout(ms, fn) {
137
+ throwIfDuringRender();
138
+ const inst = getCurrentComponentInstance();
139
+ if (inst && inst.ssr) return () => {};
140
+ let id = setTimeout(() => {
141
+ id = null;
142
+ enqueueUserCallback(fn);
143
+ }, ms);
144
+ const cancel = () => {
145
+ if (id !== null) {
146
+ clearTimeout(id);
147
+ id = null;
148
+ }
149
+ };
150
+ if (inst) (inst.cleanupFns ??= []).push(cancel);
151
+ return cancel;
152
+ }
153
+ function scheduleIdle(fn, options) {
154
+ throwIfDuringRender();
155
+ const inst = getCurrentComponentInstance();
156
+ if (inst && inst.ssr) return () => {};
157
+ let id = null;
158
+ let usingRIC = false;
159
+ if (typeof requestIdleCallback !== "undefined") {
160
+ usingRIC = true;
161
+ id = requestIdleCallback(() => {
162
+ id = null;
163
+ enqueueUserCallback(fn);
164
+ }, options);
165
+ } else id = setTimeout(() => {
166
+ id = null;
167
+ enqueueUserCallback(fn);
168
+ }, 0);
169
+ const cancel = () => {
170
+ if (id !== null) {
171
+ if (usingRIC && typeof cancelIdleCallback !== "undefined" && typeof id === "number") cancelIdleCallback(id);
172
+ else clearTimeout(id);
173
+ id = null;
174
+ }
175
+ };
176
+ if (inst) (inst.cleanupFns ??= []).push(cancel);
177
+ return cancel;
178
+ }
179
+ function scheduleRetry(fn, options) {
180
+ throwIfDuringRender();
181
+ const inst = getCurrentComponentInstance();
182
+ if (inst && inst.ssr) return { cancel: () => {} };
183
+ const { maxAttempts = 3, delayMs = 100, backoff = (i) => delayMs * Math.pow(2, i) } = options || {};
184
+ let cancelled = false;
185
+ const attempt = (index) => {
186
+ if (cancelled) return;
187
+ globalScheduler.enqueue(() => {
188
+ if (cancelled) return;
189
+ fn().then(() => {}, () => {
190
+ if (cancelled) return;
191
+ if (index + 1 < maxAttempts) {
192
+ const delay = backoff(index);
193
+ setTimeout(() => {
194
+ attempt(index + 1);
195
+ }, delay);
196
+ }
197
+ }).catch((e) => {
198
+ logger.error("[Askr] scheduleRetry error:", e);
199
+ });
200
+ });
201
+ };
202
+ attempt(0);
203
+ const cancel = () => {
204
+ cancelled = true;
205
+ };
206
+ if (inst) (inst.cleanupFns ??= []).push(cancel);
207
+ return { cancel };
208
+ }
209
+ //#endregion
210
+ export { debounceEvent, rafEvent, scheduleIdle, scheduleRetry, scheduleTimeout, throttleEvent };
211
+
212
+ //# sourceMappingURL=fx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fx.js","names":[],"sources":["../../src/fx/fx.ts"],"sourcesContent":["import { globalScheduler } from '../runtime/scheduler';\nimport { getCurrentComponentInstance } from '../runtime/component';\nimport { logger } from '../dev/logger';\nimport { noopEventListener, noopEventListenerWithFlush } from './noop';\n\nexport type CancelFn = () => void;\n\n// Platform-specific timer handle types\ntype TimeoutHandle = ReturnType<typeof setTimeout> | null;\n// rAF may fall back to setTimeout in some environments/tests, include both\ntype RafHandle =\n | ReturnType<typeof requestAnimationFrame>\n | ReturnType<typeof setTimeout>\n | null;\n// requestIdleCallback may be unavailable; allow setTimeout fallback handle\ntype IdleHandle =\n | ReturnType<typeof requestIdleCallback>\n | ReturnType<typeof setTimeout>\n | null;\n\nfunction throwIfDuringRender(): void {\n const inst = getCurrentComponentInstance();\n if (inst !== null) {\n throw new Error(\n '[Askr] calling FX handler during render is not allowed. Move calls to event handlers or effects.'\n );\n }\n}\n\n/**\n * Helper: schedule a user callback through the global scheduler\n */\nfunction enqueueUserCallback(fn: () => void) {\n globalScheduler.enqueue(() => {\n try {\n fn();\n } catch (err) {\n // Keep behavior consistent with other scheduler-queued work\n logger.error('[Askr] FX handler error:', err);\n }\n });\n}\n\n// ---------- Event handlers ----------\n\nexport function debounceEvent(\n ms: number,\n handler: EventListener,\n options?: { leading?: boolean; trailing?: boolean }\n): EventListener & { cancel(): void; flush(): void } {\n const { leading = false, trailing = true } = options || {};\n\n const inst = getCurrentComponentInstance();\n // On SSR, event handlers are inert\n if (inst && inst.ssr) {\n return noopEventListenerWithFlush;\n }\n\n let timeoutId: TimeoutHandle = null;\n let lastEvent: Event | null = null;\n let lastCallTime = 0;\n\n const debounced = function (this: unknown, ev: Event) {\n // Disallow using returned handler during render\n throwIfDuringRender();\n\n const now = Date.now();\n lastEvent = ev;\n\n if (timeoutId !== null) {\n clearTimeout(timeoutId);\n timeoutId = null;\n }\n\n if (leading && now - lastCallTime >= ms) {\n enqueueUserCallback(() => handler.call(null, ev));\n lastCallTime = now;\n }\n\n if (trailing) {\n timeoutId = setTimeout(() => {\n // Schedule through scheduler\n if (lastEvent) {\n enqueueUserCallback(() => handler.call(null, lastEvent!));\n }\n timeoutId = null;\n lastCallTime = Date.now();\n }, ms);\n }\n } as EventListener & { cancel(): void; flush(): void };\n\n debounced.cancel = () => {\n if (timeoutId !== null) {\n clearTimeout(timeoutId);\n timeoutId = null;\n }\n lastEvent = null;\n };\n\n debounced.flush = () => {\n if (timeoutId !== null) {\n clearTimeout(timeoutId);\n const ev = lastEvent;\n lastEvent = null;\n timeoutId = null;\n if (ev) enqueueUserCallback(() => handler.call(null, ev));\n }\n };\n\n // Auto-cleanup on component unmount\n if (inst) {\n (inst.cleanupFns ??= []).push(() => {\n debounced.cancel();\n });\n }\n\n return debounced;\n}\n\nexport function throttleEvent(\n ms: number,\n handler: EventListener,\n options?: { leading?: boolean; trailing?: boolean }\n): EventListener & { cancel(): void } {\n const { leading = true, trailing = true } = options || {};\n\n const inst = getCurrentComponentInstance();\n if (inst && inst.ssr) {\n return noopEventListener;\n }\n\n let lastCallTime = 0;\n let timeoutId: TimeoutHandle = null;\n let lastEvent: Event | null = null;\n\n const throttled = function (this: unknown, ev: Event) {\n throwIfDuringRender();\n\n const now = Date.now();\n lastEvent = ev;\n\n if (leading && now - lastCallTime >= ms) {\n enqueueUserCallback(() => handler.call(null, ev));\n lastCallTime = now;\n if (timeoutId !== null) {\n clearTimeout(timeoutId);\n timeoutId = null;\n }\n } else if (!leading && lastCallTime === 0) {\n lastCallTime = now;\n }\n\n if (trailing && timeoutId === null) {\n const wait = ms - (now - lastCallTime);\n timeoutId = setTimeout(\n () => {\n if (lastEvent)\n enqueueUserCallback(() => handler.call(null, lastEvent!));\n lastCallTime = Date.now();\n timeoutId = null;\n },\n Math.max(0, wait)\n );\n }\n } as EventListener & { cancel(): void };\n\n throttled.cancel = () => {\n if (timeoutId !== null) {\n clearTimeout(timeoutId);\n timeoutId = null;\n }\n lastEvent = null;\n };\n\n if (inst) {\n (inst.cleanupFns ??= []).push(() => throttled.cancel());\n }\n\n return throttled;\n}\n\nexport function rafEvent(\n handler: EventListener\n): EventListener & { cancel(): void } {\n const inst = getCurrentComponentInstance();\n if (inst && inst.ssr) {\n return noopEventListener;\n }\n\n let frameId: RafHandle = null;\n let lastEvent: Event | null = null;\n\n const scheduleFrame = () => {\n const rAF =\n typeof requestAnimationFrame !== 'undefined'\n ? requestAnimationFrame\n : (cb: FrameRequestCallback) => setTimeout(() => cb(Date.now()), 16);\n\n frameId = rAF(() => {\n frameId = null;\n if (lastEvent) {\n const ev = lastEvent;\n lastEvent = null;\n enqueueUserCallback(() => handler.call(null, ev));\n }\n });\n };\n\n const fn = function (this: unknown, ev: Event) {\n throwIfDuringRender();\n lastEvent = ev;\n if (frameId === null) scheduleFrame();\n } as EventListener & { cancel(): void };\n\n fn.cancel = () => {\n if (frameId !== null) {\n // If frameId is numeric and cancelAnimationFrame is available, use it;\n // otherwise fall back to clearTimeout for the setTimeout fallback.\n if (\n typeof cancelAnimationFrame !== 'undefined' &&\n typeof frameId === 'number'\n ) {\n cancelAnimationFrame(frameId);\n } else {\n clearTimeout(frameId as ReturnType<typeof setTimeout>);\n }\n frameId = null;\n }\n lastEvent = null;\n };\n\n if (inst) (inst.cleanupFns ??= []).push(() => fn.cancel());\n\n return fn;\n}\n\n// ---------- Scheduled work ----------\n\nexport function scheduleTimeout(ms: number, fn: () => void): CancelFn {\n throwIfDuringRender();\n const inst = getCurrentComponentInstance();\n if (inst && inst.ssr) {\n return () => {};\n }\n\n let id: TimeoutHandle = setTimeout(() => {\n id = null;\n enqueueUserCallback(fn);\n }, ms);\n\n const cancel = () => {\n if (id !== null) {\n clearTimeout(id);\n id = null;\n }\n };\n\n if (inst) (inst.cleanupFns ??= []).push(cancel);\n return cancel;\n}\n\nexport function scheduleIdle(\n fn: () => void,\n options?: { timeout?: number }\n): CancelFn {\n throwIfDuringRender();\n const inst = getCurrentComponentInstance();\n if (inst && inst.ssr) return () => {};\n\n let id: IdleHandle = null;\n let usingRIC = false;\n\n if (typeof requestIdleCallback !== 'undefined') {\n usingRIC = true;\n id = requestIdleCallback(() => {\n id = null;\n enqueueUserCallback(fn);\n }, options);\n } else {\n // Fallback: schedule on next macrotask\n id = setTimeout(() => {\n id = null;\n enqueueUserCallback(fn);\n }, 0);\n }\n\n const cancel = () => {\n if (id !== null) {\n // If using requestIdleCallback and available, call cancelIdleCallback for numeric ids.\n if (\n usingRIC &&\n typeof cancelIdleCallback !== 'undefined' &&\n typeof id === 'number'\n ) {\n cancelIdleCallback(id);\n } else {\n clearTimeout(id as ReturnType<typeof setTimeout>);\n }\n id = null;\n }\n };\n\n if (inst) (inst.cleanupFns ??= []).push(cancel);\n return cancel;\n}\n\nexport interface RetryOptions {\n maxAttempts?: number;\n delayMs?: number;\n backoff?: (attemptIndex: number) => number;\n}\n\nexport function scheduleRetry<T>(\n fn: () => Promise<T>,\n options?: RetryOptions\n): { cancel(): void } {\n throwIfDuringRender();\n const inst = getCurrentComponentInstance();\n if (inst && inst.ssr) return { cancel: () => {} };\n\n const {\n maxAttempts = 3,\n delayMs = 100,\n backoff = (i: number) => delayMs * Math.pow(2, i),\n } = options || {};\n\n let cancelled = false;\n\n const attempt = (index: number) => {\n if (cancelled) return;\n // Run user fn inside scheduler\n globalScheduler.enqueue(() => {\n if (cancelled) return;\n // Call fn (it may be async)\n const p = fn();\n p.then(\n () => {\n // Completed successfully\n },\n () => {\n if (cancelled) return;\n if (index + 1 < maxAttempts) {\n const delay = backoff(index);\n // Schedule next attempt via setTimeout so it gets enqueued through scheduleTimeout\n setTimeout(() => {\n attempt(index + 1);\n }, delay);\n }\n }\n ).catch((e) => {\n logger.error('[Askr] scheduleRetry error:', e);\n });\n });\n };\n\n // Start first attempt\n attempt(0);\n\n const cancel = () => {\n cancelled = true;\n };\n\n if (inst) (inst.cleanupFns ??= []).push(cancel);\n return { cancel };\n}\n"],"mappings":"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"}
@@ -1,7 +1,4 @@
1
- /**
2
- * Standard library pure helpers for common patterns
3
- * Zero framework coupling
4
- */
5
- export { debounce, throttle, once, defer, raf, idle, timeout, retry, type DebounceOptions, type ThrottleOptions, type RetryOptions, } from './timing';
6
- export { debounceEvent, throttleEvent, rafEvent, scheduleTimeout, scheduleIdle, scheduleRetry, } from './fx';
7
- //# sourceMappingURL=index.d.ts.map
1
+ import { scheduleEventHandler } from "../runtime/scheduler.js";
2
+ import { DebounceOptions, RetryOptions, ThrottleOptions, debounce, defer, idle, once, raf, retry, throttle, timeout } from "./timing.js";
3
+ import { debounceEvent, rafEvent, scheduleIdle, scheduleRetry, scheduleTimeout, throttleEvent } from "./fx.js";
4
+ export { type DebounceOptions, type RetryOptions, type ThrottleOptions, debounce, debounceEvent, defer, idle, once, raf, rafEvent, retry, scheduleEventHandler, scheduleIdle, scheduleRetry, scheduleTimeout, throttle, throttleEvent, timeout };
package/dist/fx/index.js CHANGED
@@ -1 +1,4 @@
1
- import{debounce as r,defer as o,idle as d,once as l,raf as u,retry as c,throttle as n,timeout as f}from"./timing.js";import{debounceEvent as m,rafEvent as i,scheduleIdle as s,scheduleRetry as v,scheduleTimeout as E,throttleEvent as a}from"./fx.js";export{r as debounce,m as debounceEvent,o as defer,d as idle,l as once,u as raf,i as rafEvent,c as retry,s as scheduleIdle,v as scheduleRetry,E as scheduleTimeout,n as throttle,a as throttleEvent,f as timeout};
1
+ import { scheduleEventHandler } from "../runtime/scheduler.js";
2
+ import { debounce, defer, idle, once, raf, retry, throttle, timeout } from "./timing.js";
3
+ import { debounceEvent, rafEvent, scheduleIdle, scheduleRetry, scheduleTimeout, throttleEvent } from "./fx.js";
4
+ export { debounce, debounceEvent, defer, idle, once, raf, rafEvent, retry, scheduleEventHandler, scheduleIdle, scheduleRetry, scheduleTimeout, throttle, throttleEvent, timeout };
package/dist/fx/noop.js CHANGED
@@ -1 +1,9 @@
1
- const e=()=>{},c=Object.assign(n=>{},{cancel(){}}),o=Object.assign(n=>{},{cancel(){},flush(){}}),s={cancel(){}};export{e as noop,s as noopCancel,c as noopEventListener,o as noopEventListenerWithFlush};
1
+ const noopEventListener = Object.assign((_ev) => {}, { cancel() {} });
2
+ const noopEventListenerWithFlush = Object.assign((_ev) => {}, {
3
+ cancel() {},
4
+ flush() {}
5
+ });
6
+ //#endregion
7
+ export { noopEventListener, noopEventListenerWithFlush };
8
+
9
+ //# sourceMappingURL=noop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"noop.js","names":[],"sources":["../../src/fx/noop.ts"],"sourcesContent":["// Lightweight shared no-op helpers to avoid double-casts and duplicated definitions\n\nexport const noop: () => void = () => {};\n\nexport const noopEventListener: EventListener & { cancel(): void } =\n Object.assign((_ev?: Event) => {}, { cancel() {} });\n\nexport const noopEventListenerWithFlush: EventListener & {\n cancel(): void;\n flush(): void;\n} = Object.assign((_ev?: Event) => {}, { cancel() {}, flush() {} });\n\nexport const noopCancel: { cancel(): void } = { cancel() {} };\n"],"mappings":"AAIA,MAAa,oBACX,OAAO,QAAQ,QAAgB,IAAI,EAAE,SAAS,IAAI,CAAC;AAErD,MAAa,6BAGT,OAAO,QAAQ,QAAgB,IAAI;CAAE,SAAS;CAAI,QAAQ;CAAI,CAAC"}
@@ -1,19 +1,20 @@
1
+ //#region src/fx/timing.d.ts
1
2
  /**
2
3
  * Timing utilities — pure helpers for common async patterns
3
4
  * No framework coupling. No lifecycle awareness.
4
5
  */
5
- export interface DebounceOptions {
6
- leading?: boolean;
7
- trailing?: boolean;
6
+ interface DebounceOptions {
7
+ leading?: boolean;
8
+ trailing?: boolean;
8
9
  }
9
- export interface ThrottleOptions {
10
- leading?: boolean;
11
- trailing?: boolean;
10
+ interface ThrottleOptions {
11
+ leading?: boolean;
12
+ trailing?: boolean;
12
13
  }
13
- export interface RetryOptions {
14
- maxAttempts?: number;
15
- delayMs?: number;
16
- backoff?: (attemptIndex: number) => number;
14
+ interface RetryOptions {
15
+ maxAttempts?: number;
16
+ delayMs?: number;
17
+ backoff?: (attemptIndex: number) => number;
17
18
  }
18
19
  /**
19
20
  * Debounce — delay execution, coalesce rapid calls
@@ -32,8 +33,8 @@ export interface RetryOptions {
32
33
  * save.cancel(); // stop any pending execution
33
34
  * ```
34
35
  */
35
- export declare function debounce<T extends (...args: unknown[]) => unknown>(fn: T, ms: number, options?: DebounceOptions): T & {
36
- cancel(): void;
36
+ declare function debounce<T extends (...args: unknown[]) => unknown>(fn: T, ms: number, options?: DebounceOptions): T & {
37
+ cancel(): void;
37
38
  };
38
39
  /**
39
40
  * Throttle — rate-limit execution, keep first/last
@@ -52,8 +53,8 @@ export declare function debounce<T extends (...args: unknown[]) => unknown>(fn:
52
53
  * handleScroll.cancel();
53
54
  * ```
54
55
  */
55
- export declare function throttle<T extends (...args: unknown[]) => unknown>(fn: T, ms: number, options?: ThrottleOptions): T & {
56
- cancel(): void;
56
+ declare function throttle<T extends (...args: unknown[]) => unknown>(fn: T, ms: number, options?: ThrottleOptions): T & {
57
+ cancel(): void;
57
58
  };
58
59
  /**
59
60
  * Once — guard against double execution
@@ -71,7 +72,7 @@ export declare function throttle<T extends (...args: unknown[]) => unknown>(fn:
71
72
  * init(); // does nothing
72
73
  * ```
73
74
  */
74
- export declare function once<T extends (...args: unknown[]) => unknown>(fn: T): T;
75
+ declare function once<T extends (...args: unknown[]) => unknown>(fn: T): T;
75
76
  /**
76
77
  * Defer — schedule on microtask queue
77
78
  *
@@ -85,7 +86,7 @@ export declare function once<T extends (...args: unknown[]) => unknown>(fn: T):
85
86
  * defer(() => update()); // runs after current stack, before next macrotask
86
87
  * ```
87
88
  */
88
- export declare function defer(fn: () => void): void;
89
+ declare function defer(fn: () => void): void;
89
90
  /**
90
91
  * RAF — coalesce multiple updates into single frame
91
92
  *
@@ -101,7 +102,7 @@ export declare function defer(fn: () => void): void;
101
102
  * update(); // same frame, no duplicate
102
103
  * ```
103
104
  */
104
- export declare function raf<T extends (...args: unknown[]) => unknown>(fn: T): T;
105
+ declare function raf<T extends (...args: unknown[]) => unknown>(fn: T): T;
105
106
  /**
106
107
  * Idle — schedule low-priority work
107
108
  *
@@ -116,8 +117,8 @@ export declare function raf<T extends (...args: unknown[]) => unknown>(fn: T): T
116
117
  * idle(() => prefetchData());
117
118
  * ```
118
119
  */
119
- export declare function idle(fn: () => void, options?: {
120
- timeout?: number;
120
+ declare function idle(fn: () => void, options?: {
121
+ timeout?: number;
121
122
  }): void;
122
123
  /**
123
124
  * Timeout — Promise-based delay
@@ -133,7 +134,7 @@ export declare function idle(fn: () => void, options?: {
133
134
  * console.log('300ms later');
134
135
  * ```
135
136
  */
136
- export declare function timeout(ms: number): Promise<void>;
137
+ declare function timeout(ms: number): Promise<void>;
137
138
  /**
138
139
  * Retry — attempt function with backoff
139
140
  *
@@ -151,5 +152,7 @@ export declare function timeout(ms: number): Promise<void>;
151
152
  * });
152
153
  * ```
153
154
  */
154
- export declare function retry<T>(fn: () => Promise<T>, options?: RetryOptions): Promise<T>;
155
+ declare function retry<T>(fn: () => Promise<T>, options?: RetryOptions): Promise<T>;
156
+ //#endregion
157
+ export { DebounceOptions, RetryOptions, ThrottleOptions, debounce, defer, idle, once, raf, retry, throttle, timeout };
155
158
  //# sourceMappingURL=timing.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"timing.d.ts","sourceRoot":"","sources":["../../src/fx/timing.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,MAAM,CAAC;CAC5C;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,EAChE,EAAE,EAAE,CAAC,EACL,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE,eAAe,GACxB,CAAC,GAAG;IAAE,MAAM,IAAI,IAAI,CAAA;CAAE,CAuCxB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,EAChE,EAAE,EAAE,CAAC,EACL,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE,eAAe,GACxB,CAAC,GAAG;IAAE,MAAM,IAAI,IAAI,CAAA;CAAE,CA4CxB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAWxE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI,CAE1C;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAiBvE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,IAAI,CAAC,EAAE,EAAE,MAAM,IAAI,EAAE,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CASzE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEjD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,KAAK,CAAC,CAAC,EAC3B,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,CAAC,CAAC,CAsBZ"}
1
+ {"version":3,"file":"timing.d.ts","names":[],"sources":["../../src/fx/timing.ts"],"mappings":";;AAKA;;;UAAiB,eAAA;EACf,OAAA;EACA,QAAA;AAAA;AAAA,UAGe,eAAA;EACf,OAAA;EACA,QAAA;AAAA;AAAA,UAGe,YAAA;EACf,WAAA;EACA,OAAA;EACA,OAAA,IAAW,YAAA;AAAA;;;;;AAoBb;;;;;;;;;;;;;iBAAgB,QAAA,eAAuB,IAAA,wBAAA,CACrC,EAAA,EAAI,CAAA,EACJ,EAAA,UACA,OAAA,GAAU,eAAA,GACT,CAAA;EAAM,MAAA;AAAA;;;;AA0DT;;;;;;;;;;;;;;iBAAgB,QAAA,eAAuB,IAAA,wBAAA,CACrC,EAAA,EAAI,CAAA,EACJ,EAAA,UACA,OAAA,GAAU,eAAA,GACT,CAAA;EAAM,MAAA;AAAA;;;AA8DT;;;;;;;;;;;AA0BA;;;iBA1BgB,IAAA,eAAmB,IAAA,wBAAA,CAA6B,EAAA,EAAI,CAAA,GAAI,CAAA;;AA6CxE;;;;;;;;;;;AAiCA;iBApDgB,KAAA,CAAM,EAAA;;;;;;;;AA6EtB;;;;;AAqBA;;;iBA/EgB,GAAA,eAAkB,IAAA,wBAAA,CAA6B,EAAA,EAAI,CAAA,GAAI,CAAA;;;;;;;;;;;;;;;iBAiCvD,IAAA,CAAK,EAAA,cAAgB,OAAA;EAAY,OAAA;AAAA;;;;;;;;;;;;;;;iBAyBjC,OAAA,CAAQ,EAAA,WAAa,OAAA;;;;;;;;;;;;;;;;;;iBAqBf,KAAA,GAAA,CACpB,EAAA,QAAU,OAAA,CAAQ,CAAA,GAClB,OAAA,GAAU,YAAA,GACT,OAAA,CAAQ,CAAA"}