@askrjs/askr 0.0.28 → 0.0.30

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 (457) hide show
  1. package/README.md +44 -172
  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 +22 -26
  14. package/dist/bin/askr-ssg.d.ts.map +1 -1
  15. package/dist/bin/askr-ssg.js +149 -2
  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/core.d.ts +15 -23
  72. package/dist/foundations/core.js +13 -1
  73. package/dist/foundations/icon/icon.d.ts +53 -0
  74. package/dist/foundations/icon/icon.d.ts.map +1 -0
  75. package/dist/foundations/icon/icon.js +88 -0
  76. package/dist/foundations/icon/icon.js.map +1 -0
  77. package/dist/foundations/icon/icon.types.d.ts +21 -0
  78. package/dist/foundations/icon/icon.types.d.ts.map +1 -0
  79. package/dist/foundations/index.d.ts +23 -3
  80. package/dist/foundations/index.js +22 -1
  81. package/dist/foundations/interactions/dismissable.d.ts +25 -17
  82. package/dist/foundations/interactions/dismissable.d.ts.map +1 -1
  83. package/dist/foundations/interactions/dismissable.js +26 -1
  84. package/dist/foundations/interactions/dismissable.js.map +1 -0
  85. package/dist/foundations/interactions/focusable.d.ts +13 -7
  86. package/dist/foundations/interactions/focusable.d.ts.map +1 -1
  87. package/dist/foundations/interactions/focusable.js +18 -1
  88. package/dist/foundations/interactions/focusable.js.map +1 -0
  89. package/dist/foundations/interactions/hoverable.d.ts +17 -10
  90. package/dist/foundations/interactions/hoverable.d.ts.map +1 -1
  91. package/dist/foundations/interactions/hoverable.js +15 -1
  92. package/dist/foundations/interactions/hoverable.js.map +1 -0
  93. package/dist/foundations/interactions/interaction-policy.d.ts +32 -78
  94. package/dist/foundations/interactions/interaction-policy.d.ts.map +1 -1
  95. package/dist/foundations/interactions/interaction-policy.js +122 -1
  96. package/dist/foundations/interactions/interaction-policy.js.map +1 -0
  97. package/dist/foundations/interactions/pressable.d.ts +25 -18
  98. package/dist/foundations/interactions/pressable.d.ts.map +1 -1
  99. package/dist/foundations/interactions/pressable.js +51 -1
  100. package/dist/foundations/interactions/pressable.js.map +1 -0
  101. package/dist/foundations/interactions/roving-focus.d.ts +49 -114
  102. package/dist/foundations/interactions/roving-focus.d.ts.map +1 -1
  103. package/dist/foundations/interactions/roving-focus.js +71 -1
  104. package/dist/foundations/interactions/roving-focus.js.map +1 -0
  105. package/dist/foundations/state/controllable.d.ts +22 -41
  106. package/dist/foundations/state/controllable.d.ts.map +1 -1
  107. package/dist/foundations/state/controllable.js +81 -1
  108. package/dist/foundations/state/controllable.js.map +1 -0
  109. package/dist/foundations/structures/collection.d.ts +25 -40
  110. package/dist/foundations/structures/collection.d.ts.map +1 -1
  111. package/dist/foundations/structures/collection.js +51 -1
  112. package/dist/foundations/structures/collection.js.map +1 -0
  113. package/dist/foundations/structures/layer.d.ts +47 -68
  114. package/dist/foundations/structures/layer.d.ts.map +1 -1
  115. package/dist/foundations/structures/layer.js +81 -1
  116. package/dist/foundations/structures/layer.js.map +1 -0
  117. package/dist/foundations/structures/layout.d.ts +6 -3
  118. package/dist/foundations/structures/layout.d.ts.map +1 -1
  119. package/dist/foundations/structures/layout.js +13 -1
  120. package/dist/foundations/structures/layout.js.map +1 -0
  121. package/dist/foundations/structures/portal.d.ts +17 -10
  122. package/dist/foundations/structures/portal.d.ts.map +1 -1
  123. package/dist/foundations/structures/portal.js +105 -1
  124. package/dist/foundations/structures/portal.js.map +1 -0
  125. package/dist/foundations/structures/presence.d.ts +11 -5
  126. package/dist/foundations/structures/presence.d.ts.map +1 -1
  127. package/dist/foundations/structures/presence.js +39 -1
  128. package/dist/foundations/structures/presence.js.map +1 -0
  129. package/dist/foundations/structures/slot.d.ts +11 -8
  130. package/dist/foundations/structures/slot.d.ts.map +1 -1
  131. package/dist/foundations/structures/slot.js +41 -1
  132. package/dist/foundations/structures/slot.js.map +1 -0
  133. package/dist/foundations/structures.d.ts +7 -14
  134. package/dist/foundations/structures.js +6 -1
  135. package/dist/foundations/utilities/aria.d.ts +9 -6
  136. package/dist/foundations/utilities/aria.d.ts.map +1 -1
  137. package/dist/foundations/utilities/aria.js +17 -1
  138. package/dist/foundations/utilities/aria.js.map +1 -0
  139. package/dist/foundations/utilities/compose-handlers.d.ts +10 -7
  140. package/dist/foundations/utilities/compose-handlers.d.ts.map +1 -1
  141. package/dist/foundations/utilities/compose-handlers.js +20 -1
  142. package/dist/foundations/utilities/compose-handlers.js.map +1 -0
  143. package/dist/foundations/utilities/compose-ref.d.ts +7 -4
  144. package/dist/foundations/utilities/compose-ref.d.ts.map +1 -1
  145. package/dist/foundations/utilities/compose-ref.js +18 -1
  146. package/dist/foundations/utilities/compose-ref.js.map +1 -0
  147. package/dist/foundations/utilities/event-types.d.ts +14 -11
  148. package/dist/foundations/utilities/event-types.d.ts.map +1 -1
  149. package/dist/foundations/utilities/merge-props.d.ts +4 -1
  150. package/dist/foundations/utilities/merge-props.d.ts.map +1 -1
  151. package/dist/foundations/utilities/merge-props.js +49 -1
  152. package/dist/foundations/utilities/merge-props.js.map +1 -0
  153. package/dist/foundations/utilities/use-id.d.ts +9 -6
  154. package/dist/foundations/utilities/use-id.d.ts.map +1 -1
  155. package/dist/foundations/utilities/use-id.js +29 -1
  156. package/dist/foundations/utilities/use-id.js.map +1 -0
  157. package/dist/fx/fx.d.ts +24 -21
  158. package/dist/fx/fx.d.ts.map +1 -1
  159. package/dist/fx/fx.js +212 -1
  160. package/dist/fx/fx.js.map +1 -0
  161. package/dist/fx/index.d.ts +4 -7
  162. package/dist/fx/index.js +4 -1
  163. package/dist/fx/noop.js +9 -1
  164. package/dist/fx/noop.js.map +1 -0
  165. package/dist/fx/timing.d.ts +24 -21
  166. package/dist/fx/timing.d.ts.map +1 -1
  167. package/dist/fx/timing.js +236 -1
  168. package/dist/fx/timing.js.map +1 -0
  169. package/dist/index.d.ts +21 -23
  170. package/dist/index.js +34 -1
  171. package/dist/index.js.map +1 -0
  172. package/dist/jsx/index.d.ts +1 -4
  173. package/dist/jsx/index.js +3 -1
  174. package/dist/jsx/types.d.ts +18 -25
  175. package/dist/jsx/types.d.ts.map +1 -1
  176. package/dist/jsx/types.js +1 -1
  177. package/dist/jsx/utils.d.ts +4 -3
  178. package/dist/jsx/utils.d.ts.map +1 -1
  179. package/dist/jsx/utils.js +19 -1
  180. package/dist/jsx/utils.js.map +1 -0
  181. package/dist/jsx-dev-runtime.d.ts +8 -0
  182. package/dist/jsx-dev-runtime.d.ts.map +1 -0
  183. package/dist/jsx-dev-runtime.js +32 -1
  184. package/dist/jsx-dev-runtime.js.map +1 -0
  185. package/dist/jsx-runtime.d.ts +12 -0
  186. package/dist/jsx-runtime.d.ts.map +1 -0
  187. package/dist/jsx-runtime.js +45 -1
  188. package/dist/jsx-runtime.js.map +1 -0
  189. package/dist/jsx-runtime2.d.ts +2 -0
  190. package/dist/jsx-runtime2.js +3 -0
  191. package/dist/renderer/children.js +293 -0
  192. package/dist/renderer/children.js.map +1 -0
  193. package/dist/renderer/cleanup.js +150 -1
  194. package/dist/renderer/cleanup.js.map +1 -0
  195. package/dist/renderer/dom.js +2439 -1
  196. package/dist/renderer/dom.js.map +1 -0
  197. package/dist/renderer/env.js +1 -0
  198. package/dist/renderer/evaluate.js +450 -1
  199. package/dist/renderer/evaluate.js.map +1 -0
  200. package/dist/renderer/fastpath.js +145 -1
  201. package/dist/renderer/fastpath.js.map +1 -0
  202. package/dist/renderer/index.js +24 -1
  203. package/dist/renderer/index.js.map +1 -0
  204. package/dist/renderer/keyed.js +119 -1
  205. package/dist/renderer/keyed.js.map +1 -0
  206. package/dist/renderer/reconcile.js +359 -1
  207. package/dist/renderer/reconcile.js.map +1 -0
  208. package/dist/renderer/types.js +1 -1
  209. package/dist/renderer/utils.js +220 -1
  210. package/dist/renderer/utils.js.map +1 -0
  211. package/dist/resources/index.d.ts +3 -9
  212. package/dist/resources/index.js +3 -1
  213. package/dist/router/index.d.ts +6 -10
  214. package/dist/router/index.js +5 -1
  215. package/dist/router/match.js +83 -1
  216. package/dist/router/match.js.map +1 -0
  217. package/dist/router/navigate.d.ts +20 -8
  218. package/dist/router/navigate.d.ts.map +1 -1
  219. package/dist/router/navigate.js +288 -1
  220. package/dist/router/navigate.js.map +1 -0
  221. package/dist/router/policy.d.ts +22 -0
  222. package/dist/router/policy.d.ts.map +1 -0
  223. package/dist/router/policy.js +116 -0
  224. package/dist/router/policy.js.map +1 -0
  225. package/dist/router/route-context.js +79 -0
  226. package/dist/router/route-context.js.map +1 -0
  227. package/dist/router/route.d.ts +101 -34
  228. package/dist/router/route.d.ts.map +1 -1
  229. package/dist/router/route.js +599 -1
  230. package/dist/router/route.js.map +1 -0
  231. package/dist/runtime/child-scope.d.ts +21 -0
  232. package/dist/runtime/child-scope.d.ts.map +1 -0
  233. package/dist/runtime/child-scope.js +77 -0
  234. package/dist/runtime/child-scope.js.map +1 -0
  235. package/dist/runtime/component.d.ts +67 -56
  236. package/dist/runtime/component.d.ts.map +1 -1
  237. package/dist/runtime/component.js +462 -1
  238. package/dist/runtime/component.js.map +1 -0
  239. package/dist/runtime/context.d.ts +28 -42
  240. package/dist/runtime/context.d.ts.map +1 -1
  241. package/dist/runtime/context.js +205 -1
  242. package/dist/runtime/context.js.map +1 -0
  243. package/dist/runtime/control.d.ts +43 -0
  244. package/dist/runtime/control.d.ts.map +1 -0
  245. package/dist/runtime/control.js +125 -0
  246. package/dist/runtime/control.js.map +1 -0
  247. package/dist/runtime/derive.d.ts +12 -9
  248. package/dist/runtime/derive.d.ts.map +1 -1
  249. package/dist/runtime/derive.js +134 -1
  250. package/dist/runtime/derive.js.map +1 -0
  251. package/dist/runtime/dev-namespace.js +57 -1
  252. package/dist/runtime/dev-namespace.js.map +1 -0
  253. package/dist/runtime/effect.d.ts +32 -0
  254. package/dist/runtime/effect.d.ts.map +1 -0
  255. package/dist/runtime/effect.js +146 -0
  256. package/dist/runtime/effect.js.map +1 -0
  257. package/dist/runtime/events.js +162 -1
  258. package/dist/runtime/events.js.map +1 -0
  259. package/dist/runtime/execution-model.js +15 -1
  260. package/dist/runtime/execution-model.js.map +1 -0
  261. package/dist/runtime/fastlane.js +204 -1
  262. package/dist/runtime/fastlane.js.map +1 -0
  263. package/dist/runtime/for-bench.d.ts +41 -0
  264. package/dist/runtime/for-bench.d.ts.map +1 -0
  265. package/dist/runtime/for-bench.js +173 -0
  266. package/dist/runtime/for-bench.js.map +1 -0
  267. package/dist/runtime/for.d.ts +62 -49
  268. package/dist/runtime/for.d.ts.map +1 -1
  269. package/dist/runtime/for.js +668 -1
  270. package/dist/runtime/for.js.map +1 -0
  271. package/dist/runtime/operations.d.ts +18 -15
  272. package/dist/runtime/operations.d.ts.map +1 -1
  273. package/dist/runtime/operations.js +209 -1
  274. package/dist/runtime/operations.js.map +1 -0
  275. package/dist/runtime/perf-metrics.js +64 -1
  276. package/dist/runtime/perf-metrics.js.map +1 -0
  277. package/dist/runtime/readable.d.ts +24 -18
  278. package/dist/runtime/readable.d.ts.map +1 -1
  279. package/dist/runtime/readable.js +118 -1
  280. package/dist/runtime/readable.js.map +1 -0
  281. package/dist/runtime/resource-cell.js +102 -1
  282. package/dist/runtime/resource-cell.js.map +1 -0
  283. package/dist/runtime/scheduler.d.ts +51 -50
  284. package/dist/runtime/scheduler.d.ts.map +1 -1
  285. package/dist/runtime/scheduler.js +328 -1
  286. package/dist/runtime/scheduler.js.map +1 -0
  287. package/dist/runtime/selector.d.ts +7 -5
  288. package/dist/runtime/selector.d.ts.map +1 -1
  289. package/dist/runtime/selector.js +188 -1
  290. package/dist/runtime/selector.js.map +1 -0
  291. package/dist/runtime/ssr-bridge.js +24 -1
  292. package/dist/runtime/ssr-bridge.js.map +1 -0
  293. package/dist/runtime/state.d.ts +11 -19
  294. package/dist/runtime/state.d.ts.map +1 -1
  295. package/dist/runtime/state.js +99 -1
  296. package/dist/runtime/state.js.map +1 -0
  297. package/dist/ssg/batch-render.d.ts +10 -10
  298. package/dist/ssg/batch-render.d.ts.map +1 -1
  299. package/dist/ssg/batch-render.js +84 -1
  300. package/dist/ssg/batch-render.js.map +1 -0
  301. package/dist/ssg/create-static-gen.d.ts +28 -29
  302. package/dist/ssg/create-static-gen.d.ts.map +1 -1
  303. package/dist/ssg/create-static-gen.js +282 -1
  304. package/dist/ssg/create-static-gen.js.map +1 -0
  305. package/dist/ssg/generate-metadata.d.ts +12 -15
  306. package/dist/ssg/generate-metadata.d.ts.map +1 -1
  307. package/dist/ssg/generate-metadata.js +94 -1
  308. package/dist/ssg/generate-metadata.js.map +1 -0
  309. package/dist/ssg/incremental-manifest.js +56 -1
  310. package/dist/ssg/incremental-manifest.js.map +1 -0
  311. package/dist/ssg/index.d.ts +8 -28
  312. package/dist/ssg/index.js +7 -1
  313. package/dist/ssg/resolve-ssg-data.d.ts +10 -13
  314. package/dist/ssg/resolve-ssg-data.d.ts.map +1 -1
  315. package/dist/ssg/resolve-ssg-data.js +46 -1
  316. package/dist/ssg/resolve-ssg-data.js.map +1 -0
  317. package/dist/ssg/route-utils.d.ts +14 -10
  318. package/dist/ssg/route-utils.d.ts.map +1 -1
  319. package/dist/ssg/route-utils.js +24 -1
  320. package/dist/ssg/route-utils.js.map +1 -0
  321. package/dist/ssg/types.d.ts +157 -144
  322. package/dist/ssg/types.d.ts.map +1 -1
  323. package/dist/ssg/write-static-files.d.ts +8 -14
  324. package/dist/ssg/write-static-files.d.ts.map +1 -1
  325. package/dist/ssg/write-static-files.js +73 -1
  326. package/dist/ssg/write-static-files.js.map +1 -0
  327. package/dist/ssr/attrs.js +93 -1
  328. package/dist/ssr/attrs.js.map +1 -0
  329. package/dist/ssr/context.d.ts +31 -35
  330. package/dist/ssr/context.d.ts.map +1 -1
  331. package/dist/ssr/context.js +63 -1
  332. package/dist/ssr/context.js.map +1 -0
  333. package/dist/ssr/errors.d.ts +6 -4
  334. package/dist/ssr/errors.d.ts.map +1 -1
  335. package/dist/ssr/errors.js +4 -1
  336. package/dist/ssr/errors.js.map +1 -0
  337. package/dist/ssr/escape.js +153 -1
  338. package/dist/ssr/escape.js.map +1 -0
  339. package/dist/ssr/index.d.ts +74 -72
  340. package/dist/ssr/index.d.ts.map +1 -1
  341. package/dist/ssr/index.js +543 -1
  342. package/dist/ssr/index.js.map +1 -0
  343. package/dist/ssr/render-keys.d.ts +27 -29
  344. package/dist/ssr/render-keys.d.ts.map +1 -1
  345. package/dist/ssr/render-keys.js +39 -1
  346. package/dist/ssr/render-keys.js.map +1 -0
  347. package/dist/ssr/sink.js +86 -1
  348. package/dist/ssr/sink.js.map +1 -0
  349. package/dist/ssr/stream-render.js +76 -1
  350. package/dist/ssr/stream-render.js.map +1 -0
  351. package/dist/ssr/types.d.ts +14 -13
  352. package/dist/ssr/types.d.ts.map +1 -1
  353. package/package.json +49 -69
  354. package/dist/_virtual/___vite-browser-external.js +0 -1
  355. package/dist/_virtual/__vite-browser-external.js +0 -1
  356. package/dist/_virtual/_commonjsHelpers.js +0 -1
  357. package/dist/_virtual/_fs.js +0 -1
  358. package/dist/_virtual/_path.js +0 -1
  359. package/dist/_virtual/main.js +0 -1
  360. package/dist/_virtual/preload-helper.js +0 -1
  361. package/dist/bench/benchmark-entry.d.ts +0 -14
  362. package/dist/bench/benchmark-entry.d.ts.map +0 -1
  363. package/dist/common/errors.d.ts +0 -53
  364. package/dist/common/errors.d.ts.map +0 -1
  365. package/dist/common/index.d.ts +0 -14
  366. package/dist/common/index.d.ts.map +0 -1
  367. package/dist/dev/invariant.d.ts +0 -83
  368. package/dist/dev/invariant.d.ts.map +0 -1
  369. package/dist/dev/logger.d.ts +0 -13
  370. package/dist/dev/logger.d.ts.map +0 -1
  371. package/dist/dev/vite-plugin-askr.d.ts +0 -25
  372. package/dist/dev/vite-plugin-askr.d.ts.map +0 -1
  373. package/dist/dev/warnings.d.ts +0 -5
  374. package/dist/dev/warnings.d.ts.map +0 -1
  375. package/dist/for/for.d.ts +0 -16
  376. package/dist/for/for.d.ts.map +0 -1
  377. package/dist/for/for.js +0 -1
  378. package/dist/for/index.d.ts +0 -2
  379. package/dist/for/index.d.ts.map +0 -1
  380. package/dist/for/index.js +0 -1
  381. package/dist/foundations/core.d.ts.map +0 -1
  382. package/dist/foundations/index.d.ts.map +0 -1
  383. package/dist/foundations/interactions/index.d.ts +0 -5
  384. package/dist/foundations/interactions/index.d.ts.map +0 -1
  385. package/dist/foundations/state/index.d.ts +0 -2
  386. package/dist/foundations/state/index.d.ts.map +0 -1
  387. package/dist/foundations/structures/index.d.ts +0 -5
  388. package/dist/foundations/structures/index.d.ts.map +0 -1
  389. package/dist/foundations/structures.d.ts.map +0 -1
  390. package/dist/foundations/utilities/index.d.ts +0 -7
  391. package/dist/foundations/utilities/index.d.ts.map +0 -1
  392. package/dist/fx/index.d.ts.map +0 -1
  393. package/dist/fx/noop.d.ts +0 -12
  394. package/dist/fx/noop.d.ts.map +0 -1
  395. package/dist/index.d.ts.map +0 -1
  396. package/dist/jsx/index.d.ts.map +0 -1
  397. package/dist/jsx/jsx-dev-runtime.d.ts +0 -4
  398. package/dist/jsx/jsx-dev-runtime.d.ts.map +0 -1
  399. package/dist/jsx/jsx-runtime.d.ts +0 -10
  400. package/dist/jsx/jsx-runtime.d.ts.map +0 -1
  401. package/dist/node_modules/esbuild/lib/main.js +0 -65
  402. package/dist/renderer/cleanup.d.ts +0 -28
  403. package/dist/renderer/cleanup.d.ts.map +0 -1
  404. package/dist/renderer/dom.d.ts +0 -64
  405. package/dist/renderer/dom.d.ts.map +0 -1
  406. package/dist/renderer/evaluate.d.ts +0 -4
  407. package/dist/renderer/evaluate.d.ts.map +0 -1
  408. package/dist/renderer/fastpath.d.ts +0 -7
  409. package/dist/renderer/fastpath.d.ts.map +0 -1
  410. package/dist/renderer/index.d.ts +0 -6
  411. package/dist/renderer/index.d.ts.map +0 -1
  412. package/dist/renderer/keyed.d.ts +0 -23
  413. package/dist/renderer/keyed.d.ts.map +0 -1
  414. package/dist/renderer/reconcile.d.ts +0 -88
  415. package/dist/renderer/reconcile.d.ts.map +0 -1
  416. package/dist/renderer/types.d.ts +0 -3
  417. package/dist/renderer/types.d.ts.map +0 -1
  418. package/dist/renderer/utils.d.ts +0 -63
  419. package/dist/renderer/utils.d.ts.map +0 -1
  420. package/dist/resources/index.d.ts.map +0 -1
  421. package/dist/router/index.d.ts.map +0 -1
  422. package/dist/router/match.d.ts +0 -22
  423. package/dist/router/match.d.ts.map +0 -1
  424. package/dist/runtime/dev-namespace.d.ts +0 -31
  425. package/dist/runtime/dev-namespace.d.ts.map +0 -1
  426. package/dist/runtime/events.d.ts +0 -53
  427. package/dist/runtime/events.d.ts.map +0 -1
  428. package/dist/runtime/execution-model.d.ts +0 -4
  429. package/dist/runtime/execution-model.d.ts.map +0 -1
  430. package/dist/runtime/fastlane.d.ts +0 -27
  431. package/dist/runtime/fastlane.d.ts.map +0 -1
  432. package/dist/runtime/hydration.d.ts +0 -25
  433. package/dist/runtime/hydration.d.ts.map +0 -1
  434. package/dist/runtime/perf-metrics.d.ts +0 -25
  435. package/dist/runtime/perf-metrics.d.ts.map +0 -1
  436. package/dist/runtime/resource-cell.d.ts +0 -35
  437. package/dist/runtime/resource-cell.d.ts.map +0 -1
  438. package/dist/runtime/snapshot.d.ts +0 -25
  439. package/dist/runtime/snapshot.d.ts.map +0 -1
  440. package/dist/runtime/ssr-bridge.d.ts +0 -10
  441. package/dist/runtime/ssr-bridge.d.ts.map +0 -1
  442. package/dist/ssg/discover-resources.d.ts +0 -15
  443. package/dist/ssg/discover-resources.d.ts.map +0 -1
  444. package/dist/ssg/incremental-manifest.d.ts +0 -23
  445. package/dist/ssg/incremental-manifest.d.ts.map +0 -1
  446. package/dist/ssg/index.d.ts.map +0 -1
  447. package/dist/ssr/attrs.d.ts +0 -26
  448. package/dist/ssr/attrs.d.ts.map +0 -1
  449. package/dist/ssr/create-ssr.d.ts +0 -19
  450. package/dist/ssr/create-ssr.d.ts.map +0 -1
  451. package/dist/ssr/escape.d.ts +0 -38
  452. package/dist/ssr/escape.d.ts.map +0 -1
  453. package/dist/ssr/sink.d.ts +0 -23
  454. package/dist/ssr/sink.d.ts.map +0 -1
  455. package/dist/ssr/stream-render.d.ts +0 -7
  456. package/dist/ssr/stream-render.d.ts.map +0 -1
  457. package/dist/vite/index.js +0 -4
@@ -1,8 +1,9 @@
1
- export interface FormatIdOptions {
2
- /** Defaults to 'askr' */
3
- prefix?: string;
4
- /** Stable, caller-provided identity */
5
- id: string | number;
1
+ //#region src/foundations/utilities/use-id.d.ts
2
+ interface FormatIdOptions {
3
+ /** Defaults to 'askr' */
4
+ prefix?: string;
5
+ /** Stable, caller-provided identity */
6
+ id: string | number;
6
7
  }
7
8
  /**
8
9
  * formatId
@@ -25,5 +26,7 @@ export interface FormatIdOptions {
25
26
  * Numbers are coerced to strings via String().
26
27
  * This is deterministic and consistent.
27
28
  */
28
- export declare function formatId(options: FormatIdOptions): string;
29
+ declare function formatId(options: FormatIdOptions): string;
30
+ //#endregion
31
+ export { FormatIdOptions, formatId };
29
32
  //# sourceMappingURL=use-id.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-id.d.ts","sourceRoot":"","sources":["../../../src/foundations/utilities/use-id.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,yBAAyB;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uCAAuC;IACvC,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAGzD"}
1
+ {"version":3,"file":"use-id.d.ts","names":[],"sources":["../../../src/foundations/utilities/use-id.ts"],"mappings":";UAAiB,eAAA;EAAA;EAEf,MAAA;;EAEA,EAAA;AAAA;AAwBF;;;;;;;;;;;;;;;;;;;;;AAAA,iBAAgB,QAAA,CAAS,OAAA,EAAS,eAAA"}
@@ -1 +1,29 @@
1
- function f(r){return`${r.prefix??"askr"}-${String(r.id)}`}export{f as formatId};
1
+ //#region src/foundations/utilities/use-id.ts
2
+ /**
3
+ * formatId
4
+ *
5
+ * Formats a stable ID from a caller-provided identity.
6
+ * - Pure and deterministic (no time/randomness/global counters)
7
+ * - SSR-safe
8
+ *
9
+ * POLICY DECISIONS (LOCKED):
10
+ *
11
+ * 1. No Auto-Generation
12
+ * Caller must provide the `id`. No random/sequential generation.
13
+ * This ensures determinism and SSR safety.
14
+ *
15
+ * 2. Format Convention
16
+ * IDs are formatted as `{prefix}-{id}`.
17
+ * Default prefix is "askr".
18
+ *
19
+ * 3. Type Coercion
20
+ * Numbers are coerced to strings via String().
21
+ * This is deterministic and consistent.
22
+ */
23
+ function formatId(options) {
24
+ return `${options.prefix ?? "askr"}-${String(options.id)}`;
25
+ }
26
+ //#endregion
27
+ export { formatId };
28
+
29
+ //# sourceMappingURL=use-id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-id.js","names":[],"sources":["../../../src/foundations/utilities/use-id.ts"],"sourcesContent":["export interface FormatIdOptions {\n /** Defaults to 'askr' */\n prefix?: string;\n /** Stable, caller-provided identity */\n id: string | number;\n}\n\n/**\n * formatId\n *\n * Formats a stable ID from a caller-provided identity.\n * - Pure and deterministic (no time/randomness/global counters)\n * - SSR-safe\n *\n * POLICY DECISIONS (LOCKED):\n *\n * 1. No Auto-Generation\n * Caller must provide the `id`. No random/sequential generation.\n * This ensures determinism and SSR safety.\n *\n * 2. Format Convention\n * IDs are formatted as `{prefix}-{id}`.\n * Default prefix is \"askr\".\n *\n * 3. Type Coercion\n * Numbers are coerced to strings via String().\n * This is deterministic and consistent.\n */\nexport function formatId(options: FormatIdOptions): string {\n const prefix = options.prefix ?? 'askr';\n return `${prefix}-${String(options.id)}`;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AA4BA,SAAgB,SAAS,SAAkC;AAEzD,QAAO,GADQ,QAAQ,UAAU,OAChB,GAAG,OAAO,QAAQ,GAAG"}
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"}