@ersbeth/picoflow 1.1.2 → 2.0.1

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 (383) hide show
  1. package/.vscode/settings.json +3 -3
  2. package/CHANGELOG.md +43 -0
  3. package/README.md +2 -18
  4. package/biome.json +45 -35
  5. package/dist/picoflow.js +854 -1520
  6. package/dist/types/api/base/flowDisposable.d.ts +41 -0
  7. package/dist/types/api/base/flowDisposable.d.ts.map +1 -0
  8. package/dist/types/api/base/flowObservable.d.ts +27 -0
  9. package/dist/types/api/base/flowObservable.d.ts.map +1 -0
  10. package/dist/types/api/base/flowSubscribable.d.ts +79 -0
  11. package/dist/types/api/base/flowSubscribable.d.ts.map +1 -0
  12. package/dist/types/api/base/flowTracker.d.ts +8 -0
  13. package/dist/types/api/base/flowTracker.d.ts.map +1 -0
  14. package/dist/types/api/base/index.d.ts +5 -0
  15. package/dist/types/api/base/index.d.ts.map +1 -0
  16. package/dist/types/api/index.d.ts +3 -0
  17. package/dist/types/api/index.d.ts.map +1 -0
  18. package/dist/types/api/nodes/async/flowConstantAsync.d.ts +31 -0
  19. package/dist/types/api/nodes/async/flowConstantAsync.d.ts.map +1 -0
  20. package/dist/types/api/nodes/async/flowDerivationAsync.d.ts +37 -0
  21. package/dist/types/api/nodes/async/flowDerivationAsync.d.ts.map +1 -0
  22. package/dist/types/api/nodes/async/flowStateAsync.d.ts +41 -0
  23. package/dist/types/api/nodes/async/flowStateAsync.d.ts.map +1 -0
  24. package/dist/types/api/nodes/async/flowWritableDerivationAsync.d.ts +30 -0
  25. package/dist/types/api/nodes/async/flowWritableDerivationAsync.d.ts.map +1 -0
  26. package/dist/types/{flow → api}/nodes/async/index.d.ts +1 -2
  27. package/dist/types/api/nodes/async/index.d.ts.map +1 -0
  28. package/dist/types/api/nodes/collections/flowArray.d.ts +134 -0
  29. package/dist/types/api/nodes/collections/flowArray.d.ts.map +1 -0
  30. package/dist/types/api/nodes/collections/flowMap.d.ts +98 -0
  31. package/dist/types/api/nodes/collections/flowMap.d.ts.map +1 -0
  32. package/dist/types/api/nodes/collections/index.d.ts.map +1 -0
  33. package/dist/types/api/nodes/flowEffect.d.ts +29 -0
  34. package/dist/types/api/nodes/flowEffect.d.ts.map +1 -0
  35. package/dist/types/api/nodes/flowSignal.d.ts +25 -0
  36. package/dist/types/api/nodes/flowSignal.d.ts.map +1 -0
  37. package/dist/types/api/nodes/flowValue.d.ts +36 -0
  38. package/dist/types/api/nodes/flowValue.d.ts.map +1 -0
  39. package/dist/types/api/nodes/index.d.ts +8 -0
  40. package/dist/types/api/nodes/index.d.ts.map +1 -0
  41. package/dist/types/api/nodes/sync/flowConstant.d.ts +29 -0
  42. package/dist/types/api/nodes/sync/flowConstant.d.ts.map +1 -0
  43. package/dist/types/api/nodes/sync/flowDerivation.d.ts +36 -0
  44. package/dist/types/api/nodes/sync/flowDerivation.d.ts.map +1 -0
  45. package/dist/types/api/nodes/sync/flowState.d.ts +39 -0
  46. package/dist/types/api/nodes/sync/flowState.d.ts.map +1 -0
  47. package/dist/types/api/nodes/sync/flowWritableDerivation.d.ts +28 -0
  48. package/dist/types/api/nodes/sync/flowWritableDerivation.d.ts.map +1 -0
  49. package/dist/types/{flow → api}/nodes/sync/index.d.ts +1 -2
  50. package/dist/types/api/nodes/sync/index.d.ts.map +1 -0
  51. package/dist/types/api/nodes/utils.d.ts +23 -0
  52. package/dist/types/api/nodes/utils.d.ts.map +1 -0
  53. package/dist/types/base/disposable.d.ts +11 -0
  54. package/dist/types/base/disposable.d.ts.map +1 -0
  55. package/dist/types/base/executionStack.d.ts +14 -0
  56. package/dist/types/base/executionStack.d.ts.map +1 -0
  57. package/dist/types/base/index.d.ts +6 -0
  58. package/dist/types/base/index.d.ts.map +1 -0
  59. package/dist/types/base/node.d.ts +27 -0
  60. package/dist/types/base/node.d.ts.map +1 -0
  61. package/dist/types/base/observable.d.ts +35 -0
  62. package/dist/types/base/observable.d.ts.map +1 -0
  63. package/dist/types/base/observer.d.ts +25 -0
  64. package/dist/types/base/observer.d.ts.map +1 -0
  65. package/dist/types/converters/index.d.ts +2 -0
  66. package/dist/types/converters/index.d.ts.map +1 -0
  67. package/dist/types/converters/solid.d.ts +46 -0
  68. package/dist/types/converters/solid.d.ts.map +1 -0
  69. package/dist/types/index.d.ts +2 -63
  70. package/dist/types/index.d.ts.map +1 -1
  71. package/dist/types/nodes/arrayNode.d.ts +25 -0
  72. package/dist/types/nodes/arrayNode.d.ts.map +1 -0
  73. package/dist/types/nodes/effectNode.d.ts +16 -0
  74. package/dist/types/nodes/effectNode.d.ts.map +1 -0
  75. package/dist/types/nodes/index.d.ts +8 -0
  76. package/dist/types/nodes/index.d.ts.map +1 -0
  77. package/dist/types/nodes/mapNode.d.ts +19 -0
  78. package/dist/types/nodes/mapNode.d.ts.map +1 -0
  79. package/dist/types/nodes/signalNode.d.ts +10 -0
  80. package/dist/types/nodes/signalNode.d.ts.map +1 -0
  81. package/dist/types/nodes/valueAsyncNode.d.ts +23 -0
  82. package/dist/types/nodes/valueAsyncNode.d.ts.map +1 -0
  83. package/dist/types/nodes/valueNode.d.ts +20 -0
  84. package/dist/types/nodes/valueNode.d.ts.map +1 -0
  85. package/dist/types/nodes/valueSyncNode.d.ts +23 -0
  86. package/dist/types/nodes/valueSyncNode.d.ts.map +1 -0
  87. package/dist/types/schedulers/asyncResolver.d.ts +19 -0
  88. package/dist/types/schedulers/asyncResolver.d.ts.map +1 -0
  89. package/dist/types/schedulers/asyncScheduler.d.ts +20 -0
  90. package/dist/types/schedulers/asyncScheduler.d.ts.map +1 -0
  91. package/dist/types/schedulers/index.d.ts +5 -0
  92. package/dist/types/schedulers/index.d.ts.map +1 -0
  93. package/dist/types/schedulers/pendingError.d.ts +9 -0
  94. package/dist/types/schedulers/pendingError.d.ts.map +1 -0
  95. package/dist/types/schedulers/scheduler.d.ts +10 -0
  96. package/dist/types/schedulers/scheduler.d.ts.map +1 -0
  97. package/dist/types/schedulers/syncResolver.d.ts +19 -0
  98. package/dist/types/schedulers/syncResolver.d.ts.map +1 -0
  99. package/dist/types/schedulers/syncScheduler.d.ts +19 -0
  100. package/dist/types/schedulers/syncScheduler.d.ts.map +1 -0
  101. package/docs/.vitepress/config.mts +128 -93
  102. package/docs/api/functions/array.md +14 -37
  103. package/docs/api/functions/constant.md +13 -25
  104. package/docs/api/functions/constantAsync.md +69 -0
  105. package/docs/api/functions/derivation.md +14 -33
  106. package/docs/api/functions/derivationAsync.md +34 -0
  107. package/docs/api/functions/from.md +62 -153
  108. package/docs/api/functions/isDisposable.md +8 -30
  109. package/docs/api/functions/map.md +15 -36
  110. package/docs/api/functions/signal.md +8 -23
  111. package/docs/api/functions/state.md +43 -23
  112. package/docs/api/functions/stateAsync.md +69 -0
  113. package/docs/api/functions/subscribe.md +40 -0
  114. package/docs/api/functions/writableDerivation.md +33 -0
  115. package/docs/api/functions/writableDerivationAsync.md +34 -0
  116. package/docs/api/index.md +45 -102
  117. package/docs/api/interfaces/FlowArray.md +439 -0
  118. package/docs/api/interfaces/FlowConstant.md +220 -0
  119. package/docs/api/interfaces/FlowConstantAsync.md +221 -0
  120. package/docs/api/interfaces/FlowDerivation.md +241 -0
  121. package/docs/api/interfaces/FlowDerivationAsync.md +242 -0
  122. package/docs/api/interfaces/FlowDisposable.md +32 -38
  123. package/docs/api/interfaces/FlowEffect.md +64 -0
  124. package/docs/api/interfaces/FlowMap.md +374 -0
  125. package/docs/api/interfaces/FlowObservable.md +155 -0
  126. package/docs/api/interfaces/FlowSignal.md +156 -0
  127. package/docs/api/interfaces/FlowState.md +269 -0
  128. package/docs/api/interfaces/FlowStateAsync.md +268 -0
  129. package/docs/api/interfaces/FlowSubscribable.md +55 -0
  130. package/docs/api/interfaces/FlowTracker.md +61 -0
  131. package/docs/api/interfaces/FlowValue.md +222 -0
  132. package/docs/api/interfaces/FlowWritableDerivation.md +292 -0
  133. package/docs/api/interfaces/FlowWritableDerivationAsync.md +293 -0
  134. package/docs/api/type-aliases/DerivationFunction.md +28 -0
  135. package/docs/api/type-aliases/DerivationFunctionAsync.md +28 -0
  136. package/docs/api/type-aliases/FlowArrayAction.md +19 -8
  137. package/docs/api/type-aliases/FlowDataTracker.md +33 -0
  138. package/docs/api/type-aliases/FlowMapAction.md +48 -0
  139. package/docs/api/type-aliases/FlowOnDataListener.md +33 -0
  140. package/docs/api/type-aliases/FlowOnErrorListener.md +27 -0
  141. package/docs/api/type-aliases/FlowOnPendingListener.md +21 -0
  142. package/docs/api/type-aliases/FlowReadonly.md +22 -0
  143. package/docs/api/type-aliases/InitFunction.md +21 -0
  144. package/docs/api/type-aliases/InitFunctionAsync.md +21 -0
  145. package/docs/api/type-aliases/NotPromise.md +6 -3
  146. package/docs/api/type-aliases/UpdateFunction.md +27 -0
  147. package/docs/api/type-aliases/UpdateFunctionAsync.md +27 -0
  148. package/docs/api/typedoc-sidebar.json +63 -79
  149. package/docs/examples/examples.md +0 -2
  150. package/docs/guide/advanced/architecture.md +1234 -0
  151. package/docs/guide/advanced/migration-v2.md +204 -0
  152. package/docs/guide/advanced/solidjs.md +2 -88
  153. package/docs/guide/introduction/concepts.md +4 -3
  154. package/docs/guide/introduction/conventions.md +2 -33
  155. package/docs/guide/introduction/getting-started.md +28 -23
  156. package/docs/guide/introduction/lifecycle.md +16 -19
  157. package/docs/guide/primitives/array.md +102 -216
  158. package/docs/guide/primitives/constant.md +39 -212
  159. package/docs/guide/primitives/derivations.md +55 -122
  160. package/docs/guide/primitives/effects.md +155 -241
  161. package/docs/guide/primitives/map.md +64 -186
  162. package/docs/guide/primitives/overview.md +45 -128
  163. package/docs/guide/primitives/signal.md +51 -88
  164. package/docs/guide/primitives/state.md +34 -130
  165. package/package.json +56 -60
  166. package/src/api/base/flowDisposable.ts +44 -0
  167. package/src/api/base/flowObservable.ts +28 -0
  168. package/src/api/base/flowSubscribable.ts +87 -0
  169. package/src/api/base/flowTracker.ts +7 -0
  170. package/src/api/base/index.ts +4 -0
  171. package/src/{flow → api}/index.ts +0 -1
  172. package/src/api/nodes/async/flowConstantAsync.ts +36 -0
  173. package/src/api/nodes/async/flowDerivationAsync.ts +42 -0
  174. package/src/api/nodes/async/flowStateAsync.ts +47 -0
  175. package/src/api/nodes/async/flowWritableDerivationAsync.ts +33 -0
  176. package/src/{flow → api}/nodes/async/index.ts +1 -2
  177. package/src/api/nodes/collections/flowArray.ts +155 -0
  178. package/src/api/nodes/collections/flowMap.ts +115 -0
  179. package/src/api/nodes/flowEffect.ts +42 -0
  180. package/src/api/nodes/flowSignal.ts +28 -0
  181. package/src/api/nodes/flowValue.ts +37 -0
  182. package/src/api/nodes/index.ts +7 -0
  183. package/src/api/nodes/sync/flowConstant.ts +33 -0
  184. package/src/api/nodes/sync/flowDerivation.ts +41 -0
  185. package/src/api/nodes/sync/flowState.ts +45 -0
  186. package/src/api/nodes/sync/flowWritableDerivation.ts +31 -0
  187. package/src/{flow → api}/nodes/sync/index.ts +1 -2
  188. package/src/api/nodes/utils.ts +24 -0
  189. package/src/base/disposable.ts +18 -0
  190. package/src/base/executionStack.ts +42 -0
  191. package/src/base/index.ts +5 -0
  192. package/src/base/node.ts +98 -0
  193. package/src/base/observable.ts +92 -0
  194. package/src/base/observer.ts +51 -0
  195. package/src/converters/index.ts +1 -0
  196. package/src/converters/solid.ts +109 -0
  197. package/src/index.ts +2 -64
  198. package/src/nodes/arrayNode.ts +180 -0
  199. package/src/nodes/effectNode.ts +58 -0
  200. package/src/nodes/index.ts +7 -0
  201. package/src/nodes/mapNode.ts +125 -0
  202. package/src/nodes/signalNode.ts +19 -0
  203. package/src/nodes/valueAsyncNode.ts +85 -0
  204. package/src/nodes/valueNode.ts +148 -0
  205. package/src/nodes/valueSyncNode.ts +125 -0
  206. package/src/schedulers/asyncResolver.ts +78 -0
  207. package/src/schedulers/asyncScheduler.ts +66 -0
  208. package/src/schedulers/index.ts +4 -0
  209. package/src/schedulers/pendingError.ts +13 -0
  210. package/src/schedulers/scheduler.ts +9 -0
  211. package/src/schedulers/syncResolver.ts +69 -0
  212. package/src/schedulers/syncScheduler.ts +55 -0
  213. package/test/base/pendingError.test.ts +67 -0
  214. package/test/converters/solid.derivation.browser.test.tsx +69 -0
  215. package/test/converters/solid.node.test.ts +654 -0
  216. package/test/converters/solid.state.browser.test.tsx +1592 -0
  217. package/test/reactivity/flowSignal.test.ts +226 -0
  218. package/test/reactivity/nodes/async/asyncScheduler/asyncResolver.test.ts +593 -0
  219. package/test/reactivity/nodes/async/asyncScheduler/asyncScheduler.test.ts +317 -0
  220. package/test/reactivity/nodes/async/flowConstantAsync.test.ts +652 -0
  221. package/test/reactivity/nodes/async/flowDerivation.test.ts +898 -0
  222. package/test/reactivity/nodes/async/flowDerivationAsync.test.ts +1716 -0
  223. package/test/reactivity/nodes/async/flowStateAsync.test.ts +708 -0
  224. package/test/reactivity/nodes/async/flowWritableDerivationAsync.test.ts +614 -0
  225. package/test/reactivity/nodes/collections/flowArray.asyncStates.test.ts +1289 -0
  226. package/test/reactivity/nodes/collections/flowArray.scalars.test.ts +961 -0
  227. package/test/reactivity/nodes/collections/flowArray.states.test.ts +1035 -0
  228. package/test/reactivity/nodes/collections/flowMap.asyncStates.test.ts +960 -0
  229. package/test/reactivity/nodes/collections/flowMap.scalars.test.ts +775 -0
  230. package/test/reactivity/nodes/collections/flowMap.states.test.ts +958 -0
  231. package/test/reactivity/nodes/sync/flowConstant.test.ts +377 -0
  232. package/test/reactivity/nodes/sync/flowDerivation.test.ts +896 -0
  233. package/test/reactivity/nodes/sync/flowState.test.ts +341 -0
  234. package/test/reactivity/nodes/sync/flowWritableDerivation.test.ts +603 -0
  235. package/test/vitest.d.ts +10 -0
  236. package/tsconfig.json +31 -20
  237. package/typedoc.json +35 -35
  238. package/vite.config.ts +25 -23
  239. package/vitest.browser.config.ts +21 -0
  240. package/vitest.config.ts +12 -12
  241. package/.cursor/plans/unifier-flowresource-avec-flowderivation-c9506e24.plan.md +0 -372
  242. package/.cursor/plans/update-js-e795d61b.plan.md +0 -567
  243. package/dist/types/flow/base/flowDisposable.d.ts +0 -67
  244. package/dist/types/flow/base/flowDisposable.d.ts.map +0 -1
  245. package/dist/types/flow/base/flowEffect.d.ts +0 -127
  246. package/dist/types/flow/base/flowEffect.d.ts.map +0 -1
  247. package/dist/types/flow/base/flowGraph.d.ts +0 -97
  248. package/dist/types/flow/base/flowGraph.d.ts.map +0 -1
  249. package/dist/types/flow/base/flowSignal.d.ts +0 -134
  250. package/dist/types/flow/base/flowSignal.d.ts.map +0 -1
  251. package/dist/types/flow/base/flowTracker.d.ts +0 -15
  252. package/dist/types/flow/base/flowTracker.d.ts.map +0 -1
  253. package/dist/types/flow/base/index.d.ts +0 -7
  254. package/dist/types/flow/base/index.d.ts.map +0 -1
  255. package/dist/types/flow/base/utils.d.ts +0 -20
  256. package/dist/types/flow/base/utils.d.ts.map +0 -1
  257. package/dist/types/flow/collections/flowArray.d.ts +0 -148
  258. package/dist/types/flow/collections/flowArray.d.ts.map +0 -1
  259. package/dist/types/flow/collections/flowMap.d.ts +0 -224
  260. package/dist/types/flow/collections/flowMap.d.ts.map +0 -1
  261. package/dist/types/flow/collections/index.d.ts.map +0 -1
  262. package/dist/types/flow/index.d.ts +0 -4
  263. package/dist/types/flow/index.d.ts.map +0 -1
  264. package/dist/types/flow/nodes/async/flowConstantAsync.d.ts +0 -137
  265. package/dist/types/flow/nodes/async/flowConstantAsync.d.ts.map +0 -1
  266. package/dist/types/flow/nodes/async/flowDerivationAsync.d.ts +0 -137
  267. package/dist/types/flow/nodes/async/flowDerivationAsync.d.ts.map +0 -1
  268. package/dist/types/flow/nodes/async/flowNodeAsync.d.ts +0 -343
  269. package/dist/types/flow/nodes/async/flowNodeAsync.d.ts.map +0 -1
  270. package/dist/types/flow/nodes/async/flowReadonlyAsync.d.ts +0 -81
  271. package/dist/types/flow/nodes/async/flowReadonlyAsync.d.ts.map +0 -1
  272. package/dist/types/flow/nodes/async/flowStateAsync.d.ts +0 -111
  273. package/dist/types/flow/nodes/async/flowStateAsync.d.ts.map +0 -1
  274. package/dist/types/flow/nodes/async/index.d.ts.map +0 -1
  275. package/dist/types/flow/nodes/index.d.ts +0 -3
  276. package/dist/types/flow/nodes/index.d.ts.map +0 -1
  277. package/dist/types/flow/nodes/sync/flowConstant.d.ts +0 -108
  278. package/dist/types/flow/nodes/sync/flowConstant.d.ts.map +0 -1
  279. package/dist/types/flow/nodes/sync/flowDerivation.d.ts +0 -100
  280. package/dist/types/flow/nodes/sync/flowDerivation.d.ts.map +0 -1
  281. package/dist/types/flow/nodes/sync/flowNode.d.ts +0 -314
  282. package/dist/types/flow/nodes/sync/flowNode.d.ts.map +0 -1
  283. package/dist/types/flow/nodes/sync/flowReadonly.d.ts +0 -57
  284. package/dist/types/flow/nodes/sync/flowReadonly.d.ts.map +0 -1
  285. package/dist/types/flow/nodes/sync/flowState.d.ts +0 -96
  286. package/dist/types/flow/nodes/sync/flowState.d.ts.map +0 -1
  287. package/dist/types/flow/nodes/sync/index.d.ts.map +0 -1
  288. package/dist/types/solid/converters.d.ts +0 -57
  289. package/dist/types/solid/converters.d.ts.map +0 -1
  290. package/dist/types/solid/index.d.ts +0 -3
  291. package/dist/types/solid/index.d.ts.map +0 -1
  292. package/dist/types/solid/primitives.d.ts +0 -181
  293. package/dist/types/solid/primitives.d.ts.map +0 -1
  294. package/docs/api/classes/FlowArray.md +0 -489
  295. package/docs/api/classes/FlowConstant.md +0 -350
  296. package/docs/api/classes/FlowDerivation.md +0 -334
  297. package/docs/api/classes/FlowEffect.md +0 -100
  298. package/docs/api/classes/FlowMap.md +0 -512
  299. package/docs/api/classes/FlowObservable.md +0 -306
  300. package/docs/api/classes/FlowResource.md +0 -380
  301. package/docs/api/classes/FlowResourceAsync.md +0 -362
  302. package/docs/api/classes/FlowSignal.md +0 -160
  303. package/docs/api/classes/FlowState.md +0 -368
  304. package/docs/api/classes/FlowStream.md +0 -367
  305. package/docs/api/classes/FlowStreamAsync.md +0 -364
  306. package/docs/api/classes/SolidDerivation.md +0 -75
  307. package/docs/api/classes/SolidResource.md +0 -91
  308. package/docs/api/classes/SolidState.md +0 -71
  309. package/docs/api/classes/TrackingContext.md +0 -33
  310. package/docs/api/functions/effect.md +0 -49
  311. package/docs/api/functions/resource.md +0 -52
  312. package/docs/api/functions/resourceAsync.md +0 -50
  313. package/docs/api/functions/stream.md +0 -53
  314. package/docs/api/functions/streamAsync.md +0 -50
  315. package/docs/api/interfaces/SolidObservable.md +0 -19
  316. package/docs/api/type-aliases/FlowStreamDisposer.md +0 -15
  317. package/docs/api/type-aliases/FlowStreamSetter.md +0 -27
  318. package/docs/api/type-aliases/FlowStreamUpdater.md +0 -32
  319. package/docs/api/type-aliases/SolidGetter.md +0 -17
  320. package/docs/guide/primitives/resources.md +0 -858
  321. package/docs/guide/primitives/streams.md +0 -931
  322. package/src/flow/base/flowDisposable.ts +0 -71
  323. package/src/flow/base/flowEffect.ts +0 -171
  324. package/src/flow/base/flowGraph.ts +0 -288
  325. package/src/flow/base/flowSignal.ts +0 -207
  326. package/src/flow/base/flowTracker.ts +0 -17
  327. package/src/flow/base/index.ts +0 -6
  328. package/src/flow/base/utils.ts +0 -19
  329. package/src/flow/collections/flowArray.ts +0 -409
  330. package/src/flow/collections/flowMap.ts +0 -398
  331. package/src/flow/nodes/async/flowConstantAsync.ts +0 -142
  332. package/src/flow/nodes/async/flowDerivationAsync.ts +0 -143
  333. package/src/flow/nodes/async/flowNodeAsync.ts +0 -474
  334. package/src/flow/nodes/async/flowReadonlyAsync.ts +0 -81
  335. package/src/flow/nodes/async/flowStateAsync.ts +0 -116
  336. package/src/flow/nodes/await/advanced/index.ts +0 -5
  337. package/src/flow/nodes/await/advanced/resource.ts +0 -134
  338. package/src/flow/nodes/await/advanced/resourceAsync.ts +0 -109
  339. package/src/flow/nodes/await/advanced/stream.ts +0 -188
  340. package/src/flow/nodes/await/advanced/streamAsync.ts +0 -176
  341. package/src/flow/nodes/await/flowConstantAwait.ts +0 -154
  342. package/src/flow/nodes/await/flowDerivationAwait.ts +0 -154
  343. package/src/flow/nodes/await/flowNodeAwait.ts +0 -508
  344. package/src/flow/nodes/await/flowReadonlyAwait.ts +0 -89
  345. package/src/flow/nodes/await/flowStateAwait.ts +0 -130
  346. package/src/flow/nodes/await/index.ts +0 -5
  347. package/src/flow/nodes/index.ts +0 -3
  348. package/src/flow/nodes/sync/flowConstant.ts +0 -111
  349. package/src/flow/nodes/sync/flowDerivation.ts +0 -105
  350. package/src/flow/nodes/sync/flowNode.ts +0 -439
  351. package/src/flow/nodes/sync/flowReadonly.ts +0 -57
  352. package/src/flow/nodes/sync/flowState.ts +0 -101
  353. package/src/solid/converters.ts +0 -148
  354. package/src/solid/index.ts +0 -2
  355. package/src/solid/primitives.ts +0 -215
  356. package/test/base/flowEffect.test.ts +0 -108
  357. package/test/base/flowGraph.test.ts +0 -485
  358. package/test/base/flowSignal.test.ts +0 -372
  359. package/test/collections/flowArray.asyncStates.test.ts +0 -1553
  360. package/test/collections/flowArray.scalars.test.ts +0 -1129
  361. package/test/collections/flowArray.states.test.ts +0 -1365
  362. package/test/collections/flowMap.asyncStates.test.ts +0 -1105
  363. package/test/collections/flowMap.scalars.test.ts +0 -877
  364. package/test/collections/flowMap.states.test.ts +0 -1097
  365. package/test/nodes/async/flowConstantAsync.test.ts +0 -860
  366. package/test/nodes/async/flowDerivationAsync.test.ts +0 -1517
  367. package/test/nodes/async/flowStateAsync.test.ts +0 -1387
  368. package/test/nodes/await/advanced/resource.test.ts +0 -129
  369. package/test/nodes/await/advanced/resourceAsync.test.ts +0 -108
  370. package/test/nodes/await/advanced/stream.test.ts +0 -198
  371. package/test/nodes/await/advanced/streamAsync.test.ts +0 -196
  372. package/test/nodes/await/flowConstantAwait.test.ts +0 -643
  373. package/test/nodes/await/flowDerivationAwait.test.ts +0 -1583
  374. package/test/nodes/await/flowStateAwait.test.ts +0 -999
  375. package/test/nodes/mixed/derivation.test.ts +0 -1527
  376. package/test/nodes/sync/flowConstant.test.ts +0 -620
  377. package/test/nodes/sync/flowDerivation.test.ts +0 -1373
  378. package/test/nodes/sync/flowState.test.ts +0 -945
  379. package/test/solid/converters.test.ts +0 -721
  380. package/test/solid/primitives.test.ts +0 -1031
  381. /package/dist/types/{flow → api/nodes}/collections/index.d.ts +0 -0
  382. /package/docs/guide/advanced/{upgrading.md → migration-v1.md} +0 -0
  383. /package/src/{flow → api/nodes}/collections/index.ts +0 -0
@@ -2,46 +2,66 @@
2
2
 
3
3
  # Function: state()
4
4
 
5
+ ## Call Signature
6
+
5
7
  ```ts
6
8
  function state<T>(value): FlowState<T>;
7
9
  ```
8
10
 
9
- Defined in: [creators.ts:98](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/creators.ts#L98)
11
+ Defined in: [api/nodes/sync/flowState.ts:41](https://gitlab.com/ersbeth-web/picoflow/-/blob/4e864254f0eac72524c3be40b9e41d799a16e020/src/api/nodes/sync/flowState.ts#L41)
10
12
 
11
- Creates a new reactive state holding a mutable value.
13
+ Creates a mutable reactive state that can be read and updated imperatively.
12
14
 
13
- ## Type Parameters
15
+ State can be initialized with a direct value or a lazy initializer function. Changes propagate
16
+ automatically to all reactive computations that depend on this state. Use state for data that
17
+ changes through user actions, external events, or application logic rather than derived computations.
14
18
 
15
- | Type Parameter | Description |
16
- | ------ | ------ |
17
- | `T` | The type of the state value. |
19
+ ### Type Parameters
18
20
 
19
- ## Parameters
21
+ | Type Parameter |
22
+ | ------ |
23
+ | `T` |
24
+
25
+ ### Parameters
20
26
 
21
27
  | Parameter | Type | Description |
22
28
  | ------ | ------ | ------ |
23
- | `value` | `T` \| () => `T` | The initial value for the state, or a function returning the initial value. |
29
+ | `value` | [`NotPromise`](/api/type-aliases/NotPromise.md)\<`T`\> | Initial value for the state, or lazy initializer function |
24
30
 
25
- ## Returns
31
+ ### Returns
26
32
 
27
- [`FlowState`](/api/classes/FlowState.md)\<`T`\>
33
+ [`FlowState`](/api/interfaces/FlowState.md)\<`T`\>
28
34
 
29
- A new instance of [FlowState](/api/classes/FlowState.md).
35
+ A FlowState that can be read and modified
30
36
 
31
- ## Remarks
37
+ ## Call Signature
32
38
 
33
- State is the most common reactive primitive - a mutable container that notifies dependents
34
- when its value changes. Use `set()` to update the value and `get(t)` or `pick()` to read it.
39
+ ```ts
40
+ function state<T>(initializer): FlowState<T>;
41
+ ```
35
42
 
36
- ## Example
43
+ Defined in: [api/nodes/sync/flowState.ts:42](https://gitlab.com/ersbeth-web/picoflow/-/blob/4e864254f0eac72524c3be40b9e41d799a16e020/src/api/nodes/sync/flowState.ts#L42)
37
44
 
38
- ```typescript
39
- const $count = state(0);
45
+ Creates a mutable reactive state that can be read and updated imperatively.
40
46
 
41
- effect((t) => {
42
- console.log($count.get(t));
43
- });
47
+ State can be initialized with a direct value or a lazy initializer function. Changes propagate
48
+ automatically to all reactive computations that depend on this state. Use state for data that
49
+ changes through user actions, external events, or application logic rather than derived computations.
44
50
 
45
- $count.set(1); // Logs: 1
46
- $count.set(n => n + 1); // Logs: 2
47
- ```
51
+ ### Type Parameters
52
+
53
+ | Type Parameter |
54
+ | ------ |
55
+ | `T` |
56
+
57
+ ### Parameters
58
+
59
+ | Parameter | Type |
60
+ | ------ | ------ |
61
+ | `initializer` | [`InitFunction`](/api/type-aliases/InitFunction.md)\<`T`\> |
62
+
63
+ ### Returns
64
+
65
+ [`FlowState`](/api/interfaces/FlowState.md)\<`T`\>
66
+
67
+ A FlowState that can be read and modified
@@ -0,0 +1,69 @@
1
+ [@ersbeth/picoflow](/api/index.md) / stateAsync
2
+
3
+ # Function: stateAsync()
4
+
5
+ ## Call Signature
6
+
7
+ ```ts
8
+ function stateAsync<T>(value): FlowStateAsync<T>;
9
+ ```
10
+
11
+ Defined in: [api/nodes/async/flowStateAsync.ts:43](https://gitlab.com/ersbeth-web/picoflow/-/blob/4e864254f0eac72524c3be40b9e41d799a16e020/src/api/nodes/async/flowStateAsync.ts#L43)
12
+
13
+ Creates a mutable async reactive state that resolves promises and can be updated imperatively.
14
+
15
+ State can be initialized with a direct promise or a lazy async initializer function. Update the state by
16
+ calling `set()` with a new promise or an async updater function. Changes propagate automatically to all
17
+ reactive computations that depend on this state. Use for async data that changes through user actions or
18
+ application logic, such as loading user profiles, fetching search results, or any async state updates.
19
+
20
+ ### Type Parameters
21
+
22
+ | Type Parameter |
23
+ | ------ |
24
+ | `T` |
25
+
26
+ ### Parameters
27
+
28
+ | Parameter | Type | Description |
29
+ | ------ | ------ | ------ |
30
+ | `value` | `Promise`\<`T`\> | Initial promise to resolve, or lazy async initializer function |
31
+
32
+ ### Returns
33
+
34
+ [`FlowStateAsync`](/api/interfaces/FlowStateAsync.md)\<`T`\>
35
+
36
+ A FlowStateAsync that can be read and modified with promises
37
+
38
+ ## Call Signature
39
+
40
+ ```ts
41
+ function stateAsync<T>(initializer): FlowStateAsync<T>;
42
+ ```
43
+
44
+ Defined in: [api/nodes/async/flowStateAsync.ts:44](https://gitlab.com/ersbeth-web/picoflow/-/blob/4e864254f0eac72524c3be40b9e41d799a16e020/src/api/nodes/async/flowStateAsync.ts#L44)
45
+
46
+ Creates a mutable async reactive state that resolves promises and can be updated imperatively.
47
+
48
+ State can be initialized with a direct promise or a lazy async initializer function. Update the state by
49
+ calling `set()` with a new promise or an async updater function. Changes propagate automatically to all
50
+ reactive computations that depend on this state. Use for async data that changes through user actions or
51
+ application logic, such as loading user profiles, fetching search results, or any async state updates.
52
+
53
+ ### Type Parameters
54
+
55
+ | Type Parameter |
56
+ | ------ |
57
+ | `T` |
58
+
59
+ ### Parameters
60
+
61
+ | Parameter | Type |
62
+ | ------ | ------ |
63
+ | `initializer` | [`InitFunctionAsync`](/api/type-aliases/InitFunctionAsync.md)\<`T`\> |
64
+
65
+ ### Returns
66
+
67
+ [`FlowStateAsync`](/api/interfaces/FlowStateAsync.md)\<`T`\>
68
+
69
+ A FlowStateAsync that can be read and modified with promises
@@ -0,0 +1,40 @@
1
+ [@ersbeth/picoflow](/api/index.md) / subscribe
2
+
3
+ # Function: subscribe()
4
+
5
+ ```ts
6
+ function subscribe<T>(
7
+ data,
8
+ onData,
9
+ onError?,
10
+ onPending?): FlowEffect;
11
+ ```
12
+
13
+ Defined in: [api/nodes/flowEffect.ts:35](https://gitlab.com/ersbeth-web/picoflow/-/blob/4e864254f0eac72524c3be40b9e41d799a16e020/src/api/nodes/flowEffect.ts#L35)
14
+
15
+ Creates a reactive effect that runs immediately and automatically re-runs when dependencies change.
16
+
17
+ The effect function tracks any reactive values accessed and subscribes to their changes.
18
+ When any tracked value changes, the effect re-executes with the new values.
19
+ Optional callbacks handle errors and pending async states.
20
+
21
+ ## Type Parameters
22
+
23
+ | Type Parameter |
24
+ | ------ |
25
+ | `T` |
26
+
27
+ ## Parameters
28
+
29
+ | Parameter | Type | Description |
30
+ | ------ | ------ | ------ |
31
+ | `data` | [`FlowDataTracker`](/api/type-aliases/FlowDataTracker.md)\<`T`\> | Function that accesses reactive dependencies and returns data |
32
+ | `onData` | [`FlowOnDataListener`](/api/type-aliases/FlowOnDataListener.md)\<`T`\> | Callback invoked with the computed data on each execution |
33
+ | `onError?` | [`FlowOnErrorListener`](/api/type-aliases/FlowOnErrorListener.md) | Optional callback for handling errors during execution |
34
+ | `onPending?` | [`FlowOnPendingListener`](/api/type-aliases/FlowOnPendingListener.md) | Optional callback invoked when async dependencies are pending |
35
+
36
+ ## Returns
37
+
38
+ [`FlowEffect`](/api/interfaces/FlowEffect.md)
39
+
40
+ A FlowEffect handle with a `dispose()` method to stop the effect
@@ -0,0 +1,33 @@
1
+ [@ersbeth/picoflow](/api/index.md) / writableDerivation
2
+
3
+ # Function: writableDerivation()
4
+
5
+ ```ts
6
+ function writableDerivation<T>(compute): FlowWritableDerivation<T>;
7
+ ```
8
+
9
+ Defined in: [api/nodes/sync/flowWritableDerivation.ts:29](https://gitlab.com/ersbeth-web/picoflow/-/blob/4e864254f0eac72524c3be40b9e41d799a16e020/src/api/nodes/sync/flowWritableDerivation.ts#L29)
10
+
11
+ Creates a derived value that recomputes automatically but can also be manually overridden.
12
+
13
+ The compute function tracks dependencies and recomputes when they change, just like a regular derivation.
14
+ However, you can also call `set()` to override the computed value. Use this for values that are normally
15
+ derived but need occasional manual adjustments, such as editable calculated fields or user-correctable totals.
16
+
17
+ ## Type Parameters
18
+
19
+ | Type Parameter |
20
+ | ------ |
21
+ | `T` |
22
+
23
+ ## Parameters
24
+
25
+ | Parameter | Type | Description |
26
+ | ------ | ------ | ------ |
27
+ | `compute` | [`DerivationFunction`](/api/type-aliases/DerivationFunction.md)\<`T`\> | Function that accesses dependencies and computes the derived value |
28
+
29
+ ## Returns
30
+
31
+ [`FlowWritableDerivation`](/api/interfaces/FlowWritableDerivation.md)\<`T`\>
32
+
33
+ A FlowWritableDerivation that provides both reactive computation and manual control
@@ -0,0 +1,34 @@
1
+ [@ersbeth/picoflow](/api/index.md) / writableDerivationAsync
2
+
3
+ # Function: writableDerivationAsync()
4
+
5
+ ```ts
6
+ function writableDerivationAsync<T>(compute): FlowWritableDerivationAsync<T>;
7
+ ```
8
+
9
+ Defined in: [api/nodes/async/flowWritableDerivationAsync.ts:31](https://gitlab.com/ersbeth-web/picoflow/-/blob/4e864254f0eac72524c3be40b9e41d799a16e020/src/api/nodes/async/flowWritableDerivationAsync.ts#L31)
10
+
11
+ Creates an async derived value that recomputes automatically but can also be manually overridden.
12
+
13
+ The async compute function tracks dependencies and returns a promise. When any tracked dependency changes,
14
+ the function runs again and returns a new promise. However, you can also call `set()` to override the computed
15
+ value with a new promise. Use for async values that are normally derived but need occasional manual adjustments,
16
+ such as editable async calculated fields or user-correctable async totals.
17
+
18
+ ## Type Parameters
19
+
20
+ | Type Parameter |
21
+ | ------ |
22
+ | `T` |
23
+
24
+ ## Parameters
25
+
26
+ | Parameter | Type | Description |
27
+ | ------ | ------ | ------ |
28
+ | `compute` | [`DerivationFunctionAsync`](/api/type-aliases/DerivationFunctionAsync.md)\<`T`\> | Async function that accesses dependencies and returns a promise of the derived value |
29
+
30
+ ## Returns
31
+
32
+ [`FlowWritableDerivationAsync`](/api/interfaces/FlowWritableDerivationAsync.md)\<`T`\>
33
+
34
+ A FlowWritableDerivationAsync that provides both reactive async computation and manual control
package/docs/api/index.md CHANGED
@@ -1,118 +1,61 @@
1
1
  # @ersbeth/picoflow
2
2
 
3
- # PicoFlow
4
-
5
- PicoFlow is a lightweight reactive dataflow library that provides a comprehensive set of
6
- reactive primitives for building reactive applications with explicit dependency tracking.
7
-
8
- ## Core Concepts
9
-
10
- **Reactive Primitives:**
11
- - [FlowSignal](/api/classes/FlowSignal.md): Event-like notifications without values
12
- - [FlowState](/api/classes/FlowState.md): Mutable reactive values
13
- - [FlowConstant](/api/classes/FlowConstant.md): Immutable reactive values (computed once)
14
- - [FlowDerivation](/api/classes/FlowDerivation.md): Computed values that track dependencies
15
- - [FlowEffect](/api/classes/FlowEffect.md): Side effects that run when dependencies change
16
-
17
- **Advanced Primitives:**
18
- - [FlowArray](/api/classes/FlowArray.md): Reactive arrays with mutation tracking
19
- - [FlowMap](/api/classes/FlowMap.md): Reactive maps with operation tracking
20
- - [FlowResource](/api/classes/FlowResource.md): Async data fetching returning `T | undefined`
21
- - [FlowResourceAsync](/api/classes/FlowResourceAsync.md): Async data fetching returning `Promise<T>`
22
- - [FlowStream](/api/classes/FlowStream.md): Event streams from external sources
23
- - [FlowStreamAsync](/api/classes/FlowStreamAsync.md): Async event streams returning Promises
24
-
25
- **Tracking Context:**
26
- - [TrackingContext](/api/classes/TrackingContext.md): The core mechanism for explicit dependency tracking
27
- - Use `observable.get(t)` to read with tracking
28
- - Use `observable.pick()` to read without tracking
29
- - Use `signal.watch(t)` to track signals without values
30
-
31
- ## Key Features
32
-
33
- - **Explicit tracking**: Full control over what triggers re-execution via TrackingContext
34
- - **Lazy evaluation**: Derivations compute only when accessed
35
- - **Fine-grained reactivity**: Track specific operations on collections
36
- - **Resource management**: Automatic cleanup with dispose patterns
37
- - **SolidJS integration**: Seamless bridge to SolidJS primitives
38
-
39
- ## Basic Usage
40
-
41
- ```typescript
42
- import { state, effect, derivation } from 'picoflow';
43
-
44
- // Create reactive state
45
- const $count = state(0);
46
-
47
- // Create derived value
48
- const $double = derivation((t) => $count.get(t) * 2);
49
-
50
- // Create effect
51
- effect((t) => {
52
- console.log('Count:', $count.get(t), 'Double:', $double.get(t));
53
- });
54
-
55
- // Update state
56
- $count.set(1); // Logs: "Count: 1 Double: 2"
57
- ```
58
-
59
- ## See
60
-
61
- [GitHub Repository](https://github.com/yourusername/picoflow)
62
-
63
- ## Classes
64
-
65
- | Class | Description |
66
- | ------ | ------ |
67
- | [FlowArray](/api/classes/FlowArray.md) | Represents a reactive array. |
68
- | [FlowConstant](/api/classes/FlowConstant.md) | Represents a reactive and immutable constant value that can be computed lazily upon first access. |
69
- | [FlowDerivation](/api/classes/FlowDerivation.md) | Represents a reactive derivation whose value is computed based on other reactive signals. |
70
- | [FlowEffect](/api/classes/FlowEffect.md) | Represents a reactive effect that executes side-effect functions based on its tracked dependencies. |
71
- | [FlowMap](/api/classes/FlowMap.md) | Represents a reactive map that extends [FlowState](/api/classes/FlowState.md) for tracking key-value pairs. |
72
- | [FlowObservable](/api/classes/FlowObservable.md) | Represents a reactive observable that holds and tracks a value. |
73
- | [FlowResource](/api/classes/FlowResource.md) | Represents a reactive resource that asynchronously fetches its value and returns `T | undefined`. |
74
- | [FlowResourceAsync](/api/classes/FlowResourceAsync.md) | Represents a reactive resource that asynchronously fetches its value and always returns a Promise. |
75
- | [FlowSignal](/api/classes/FlowSignal.md) | Represents a reactive signal. |
76
- | [FlowState](/api/classes/FlowState.md) | Represents a reactive state that holds a mutable value. |
77
- | [FlowStream](/api/classes/FlowStream.md) | Represents a reactive stream that updates its value based on an external updater function. |
78
- | [FlowStreamAsync](/api/classes/FlowStreamAsync.md) | Represents an asynchronous reactive stream that always returns a Promise and updates based on an updater function. |
79
- | [SolidDerivation](/api/classes/SolidDerivation.md) | Solid-style derivation wrapping SolidJS's createMemo, providing a computed reactive value. |
80
- | [SolidResource](/api/classes/SolidResource.md) | Solid-style resource wrapping SolidJS's createResource, providing async data loading with reactive state. |
81
- | [SolidState](/api/classes/SolidState.md) | Solid-style state container wrapping SolidJS's createSignal, providing a writable reactive signal. |
82
- | [TrackingContext](/api/classes/TrackingContext.md) | Represents a tracking context used to register dependencies during reactive computations. |
83
-
84
3
  ## Interfaces
85
4
 
86
5
  | Interface | Description |
87
6
  | ------ | ------ |
88
- | [FlowDisposable](/api/interfaces/FlowDisposable.md) | Represents an object with a disposable lifecycle that manages resources requiring cleanup. |
89
- | [SolidObservable](/api/interfaces/SolidObservable.md) | Interface for a Solid-style observable value. |
7
+ | [FlowArray](/api/interfaces/FlowArray.md) | Reactive array with standard mutation methods and fine-grained change tracking. |
8
+ | [FlowConstant](/api/interfaces/FlowConstant.md) | Read-only reactive value that computes once on initialization and never changes. |
9
+ | [FlowConstantAsync](/api/interfaces/FlowConstantAsync.md) | Read-only reactive value that resolves once from a promise or async initializer. |
10
+ | [FlowDerivation](/api/interfaces/FlowDerivation.md) | Read-only reactive value that recomputes automatically when dependencies change. |
11
+ | [FlowDerivationAsync](/api/interfaces/FlowDerivationAsync.md) | Read-only reactive value that recomputes asynchronously when dependencies change. |
12
+ | [FlowDisposable](/api/interfaces/FlowDisposable.md) | Contract for resources that can be explicitly released to prevent memory leaks. |
13
+ | [FlowEffect](/api/interfaces/FlowEffect.md) | Handle to a reactive effect that automatically tracks dependencies and re-executes when they change. |
14
+ | [FlowMap](/api/interfaces/FlowMap.md) | Reactive map with standard mutation methods and fine-grained change tracking. |
15
+ | [FlowObservable](/api/interfaces/FlowObservable.md) | Contract for reactive primitives that emit changes and notify their dependents in the reactivity graph. |
16
+ | [FlowSignal](/api/interfaces/FlowSignal.md) | Manual trigger that notifies subscribers without carrying data. |
17
+ | [FlowState](/api/interfaces/FlowState.md) | Writable reactive value that can be updated manually and notifies dependents on changes. |
18
+ | [FlowStateAsync](/api/interfaces/FlowStateAsync.md) | Writable reactive value that resolves promises and can be updated with new promises. |
19
+ | [FlowSubscribable](/api/interfaces/FlowSubscribable.md) | Contract for observables that can be subscribed to with lifecycle callbacks. |
20
+ | [FlowTracker](/api/interfaces/FlowTracker.md) | Contract for reactive computations that track dependencies and react to changes in the reactivity graph. |
21
+ | [FlowValue](/api/interfaces/FlowValue.md) | Base interface for reactive values that can be read synchronously or asynchronously. |
22
+ | [FlowWritableDerivation](/api/interfaces/FlowWritableDerivation.md) | Writable reactive value that recomputes automatically when dependencies change, but can be manually overridden. |
23
+ | [FlowWritableDerivationAsync](/api/interfaces/FlowWritableDerivationAsync.md) | Writable reactive value that recomputes asynchronously when dependencies change, but can be manually overridden. |
90
24
 
91
25
  ## Type Aliases
92
26
 
93
27
  | Type Alias | Description |
94
28
  | ------ | ------ |
95
- | [FlowArrayAction](/api/type-aliases/FlowArrayAction.md) | Represents the actions that can be performed on a FlowArray. |
96
- | [FlowStreamDisposer](/api/type-aliases/FlowStreamDisposer.md) | A function type that disposes of a resource. |
97
- | [FlowStreamSetter](/api/type-aliases/FlowStreamSetter.md) | A function type that sets a new value for the reactive stream. |
98
- | [FlowStreamUpdater](/api/type-aliases/FlowStreamUpdater.md) | A function type that updates a stream and returns a disposer for cleanup. |
99
- | [NotPromise](/api/type-aliases/NotPromise.md) | Utility type that excludes Promise types from T. Used to ensure type safety for synchronous derivations/resources. |
100
- | [SolidGetter](/api/type-aliases/SolidGetter.md) | A getter function or value for Solid state/derivation. |
29
+ | [DerivationFunction](/api/type-aliases/DerivationFunction.md) | Function that derives a value from dependencies and optionally the previous value. |
30
+ | [DerivationFunctionAsync](/api/type-aliases/DerivationFunctionAsync.md) | Function that derives a value asynchronously from dependencies and optionally the previous value. |
31
+ | [FlowArrayAction](/api/type-aliases/FlowArrayAction.md) | Discriminated union representing all possible array mutation operations. |
32
+ | [FlowDataTracker](/api/type-aliases/FlowDataTracker.md) | Function that tracks reactive dependencies and returns data. |
33
+ | [FlowMapAction](/api/type-aliases/FlowMapAction.md) | Discriminated union representing all possible map mutation operations. |
34
+ | [FlowOnDataListener](/api/type-aliases/FlowOnDataListener.md) | Callback invoked when new data is available. |
35
+ | [FlowOnErrorListener](/api/type-aliases/FlowOnErrorListener.md) | Callback invoked when an error occurs during effect execution. |
36
+ | [FlowOnPendingListener](/api/type-aliases/FlowOnPendingListener.md) | Callback invoked when an async computation is pending. |
37
+ | [FlowReadonly](/api/type-aliases/FlowReadonly.md) | Type that restricts mutation methods to create read-only versions of reactive primitives. |
38
+ | [InitFunction](/api/type-aliases/InitFunction.md) | Function that initializes a value. |
39
+ | [InitFunctionAsync](/api/type-aliases/InitFunctionAsync.md) | Function that initializes a value asynchronously. |
40
+ | [NotPromise](/api/type-aliases/NotPromise.md) | Type that excludes Promise values from a type union. |
41
+ | [UpdateFunction](/api/type-aliases/UpdateFunction.md) | Function that updates a value based on the previous value. |
42
+ | [UpdateFunctionAsync](/api/type-aliases/UpdateFunctionAsync.md) | Function that updates a value asynchronously based on the previous value. |
101
43
 
102
44
  ## Functions
103
45
 
104
46
  | Function | Description |
105
47
  | ------ | ------ |
106
- | [array](/api/functions/array.md) | Creates a new reactive array with mutation methods and fine-grained action tracking. |
107
- | [constant](/api/functions/constant.md) | Creates a new reactive constant. |
108
- | [derivation](/api/functions/derivation.md) | Creates a new reactive derivation whose value is computed based on other reactive signals. |
109
- | [effect](/api/functions/effect.md) | Creates a new reactive effect that executes a side-effect function based on its dependencies. |
110
- | [from](/api/functions/from.md) | Converts a FlowObservable or getter function into a Solid derivation or resource, depending on whether the value is synchronous or asynchronous. |
111
- | [isDisposable](/api/functions/isDisposable.md) | Type guard that checks whether an object implements the FlowDisposable interface. |
112
- | [map](/api/functions/map.md) | Creates a new reactive map state with fine-grained tracking of operations. |
113
- | [resource](/api/functions/resource.md) | Creates a new reactive resource that asynchronously fetches its value, returning `T | undefined`. |
114
- | [resourceAsync](/api/functions/resourceAsync.md) | Creates a new reactive asynchronous resource that always returns a Promise. |
115
- | [signal](/api/functions/signal.md) | Creates a new reactive signal. |
116
- | [state](/api/functions/state.md) | Creates a new reactive state holding a mutable value. |
117
- | [stream](/api/functions/stream.md) | Creates a new reactive stream that bridges external event sources with PicoFlow's reactive system. |
118
- | [streamAsync](/api/functions/streamAsync.md) | Creates a new reactive asynchronous stream that always returns a Promise. |
48
+ | [array](/api/functions/array.md) | Creates a reactive array with mutation methods and fine-grained action tracking. |
49
+ | [constant](/api/functions/constant.md) | Creates a constant reactive value that initializes lazily and never recomputes. |
50
+ | [constantAsync](/api/functions/constantAsync.md) | Creates a constant reactive value from a promise or async initializer that resolves once and never recomputes. |
51
+ | [derivation](/api/functions/derivation.md) | Creates a derived reactive value that automatically recomputes when dependencies change. |
52
+ | [derivationAsync](/api/functions/derivationAsync.md) | Creates an async derived value that automatically recomputes when dependencies change. |
53
+ | [from](/api/functions/from.md) | Converts a PicoFlow observable or getter function into a SolidJS resource. |
54
+ | [isDisposable](/api/functions/isDisposable.md) | Type guard to check if an object implements the FlowDisposable interface. |
55
+ | [map](/api/functions/map.md) | Creates a reactive map with mutation methods and fine-grained action tracking. |
56
+ | [signal](/api/functions/signal.md) | Creates a signal that can be manually triggered to notify dependents. |
57
+ | [state](/api/functions/state.md) | Creates a mutable reactive state that can be read and updated imperatively. |
58
+ | [stateAsync](/api/functions/stateAsync.md) | Creates a mutable async reactive state that resolves promises and can be updated imperatively. |
59
+ | [subscribe](/api/functions/subscribe.md) | Creates a reactive effect that runs immediately and automatically re-runs when dependencies change. |
60
+ | [writableDerivation](/api/functions/writableDerivation.md) | Creates a derived value that recomputes automatically but can also be manually overridden. |
61
+ | [writableDerivationAsync](/api/functions/writableDerivationAsync.md) | Creates an async derived value that recomputes automatically but can also be manually overridden. |