@ersbeth/picoflow 1.1.1 → 2.0.0

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 +857 -1528
  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 +28 -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 +35 -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 +22 -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 +37 -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 +2 -0
  72. package/dist/types/nodes/arrayNode.d.ts.map +1 -0
  73. package/dist/types/nodes/effectNode.d.ts +2 -0
  74. package/dist/types/nodes/effectNode.d.ts.map +1 -0
  75. package/dist/types/nodes/index.d.ts +9 -0
  76. package/dist/types/nodes/index.d.ts.map +1 -0
  77. package/dist/types/nodes/mapNode.d.ts +2 -0
  78. package/dist/types/nodes/mapNode.d.ts.map +1 -0
  79. package/dist/types/nodes/signalNode.d.ts +2 -0
  80. package/dist/types/nodes/signalNode.d.ts.map +1 -0
  81. package/dist/types/nodes/valueAsyncNode.d.ts +2 -0
  82. package/dist/types/nodes/valueAsyncNode.d.ts.map +1 -0
  83. package/dist/types/nodes/valueNode.d.ts +2 -0
  84. package/dist/types/nodes/valueNode.d.ts.map +1 -0
  85. package/dist/types/nodes/valueSyncNode.d.ts +2 -0
  86. package/dist/types/nodes/valueSyncNode.d.ts.map +1 -0
  87. package/dist/types/schedulers/asyncResolver.d.ts +2 -0
  88. package/dist/types/schedulers/asyncResolver.d.ts.map +1 -0
  89. package/dist/types/schedulers/asyncScheduler.d.ts +2 -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 +2 -0
  94. package/dist/types/schedulers/pendingError.d.ts.map +1 -0
  95. package/dist/types/schedulers/scheduler.d.ts +2 -0
  96. package/dist/types/schedulers/scheduler.d.ts.map +1 -0
  97. package/dist/types/schedulers/syncResolver.d.ts +2 -0
  98. package/dist/types/schedulers/syncResolver.d.ts.map +1 -0
  99. package/dist/types/schedulers/syncScheduler.d.ts +2 -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 +1 -81
  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 +36 -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 +22 -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 +87 -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 +172 -0
  199. package/src/nodes/effectNode.ts +59 -0
  200. package/src/nodes/index.ts +8 -0
  201. package/src/nodes/mapNode.ts +127 -0
  202. package/src/nodes/signalNode.ts +21 -0
  203. package/src/nodes/valueAsyncNode.ts +88 -0
  204. package/src/nodes/valueNode.ts +144 -0
  205. package/src/nodes/valueSyncNode.ts +128 -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 -53
  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 -139
  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,58 +2,15 @@
2
2
 
3
3
  # Function: from()
4
4
 
5
- Converts a FlowObservable or getter function into a Solid derivation or resource, depending on whether the value is synchronous or asynchronous.
6
-
7
- ## Param
8
-
9
- The FlowObservable or getter function to convert.
10
-
11
- ## Remarks
12
-
13
- This function bridges PicoFlow's reactive system with SolidJS, allowing you to use
14
- PicoFlow observables within Solid components. The conversion is automatic based on
15
- whether the value is a Promise or not:
16
-
17
- - **FlowObservable of non-Promise value** → SolidDerivation (reactive signal)
18
- - **FlowObservable of Promise** → SolidResource (async resource)
19
- - **Getter function returning non-Promise** → SolidDerivation (computed signal)
20
- - **Getter function returning Promise** → SolidResource (async computed resource)
21
-
22
- The created Solid primitives automatically subscribe to the PicoFlow observables and
23
- update when changes occur. The subscription is properly cleaned up when the Solid
24
- component unmounts.
25
-
26
- ## Example
27
-
28
- ```typescript
29
- import { from } from 'picoflow/solid';
30
- import { state } from 'picoflow';
31
-
32
- // Convert a PicoFlow state to a Solid signal
33
- const $count = state(0);
34
- const solidCount = from($count);
35
-
36
- // Use in a Solid component
37
- function Counter() {
38
- const count = solidCount.get(); // Solid's reactive get
39
- return <div>Count: {count}</div>;
40
- }
41
-
42
- // Or convert a computation function
43
- const solidDerived = from((t) => {
44
- return $count.get(t) * 2;
45
- });
46
- ```
47
-
48
5
  ## Call Signature
49
6
 
50
7
  ```ts
51
- function from<T>(flow): SolidResource<NotPromise<T>>;
8
+ function from<T>(flow): Resource<T>;
52
9
  ```
53
10
 
54
- Defined in: [solid/converters.ts:159](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/solid/converters.ts#L159)
11
+ Defined in: [converters/solid.ts:97](https://gitlab.com/ersbeth-web/picoflow/-/blob/4e864254f0eac72524c3be40b9e41d799a16e020/src/converters/solid.ts#L97)
55
12
 
56
- Converts a FlowObservable of a Promise value into a SolidResource.
13
+ Converts a PicoFlow observable or getter function into a SolidJS resource.
57
14
 
58
15
  ### Type Parameters
59
16
 
@@ -65,82 +22,58 @@ Converts a FlowObservable of a Promise value into a SolidResource.
65
22
 
66
23
  | Parameter | Type | Description |
67
24
  | ------ | ------ | ------ |
68
- | `flow` | [`FlowObservable`](/api/classes/FlowObservable.md)\<`Promise`\<[`NotPromise`](/api/type-aliases/NotPromise.md)\<`T`\>\>\> | The FlowObservable to convert. |
25
+ | `flow` | [`FlowObservable`](/api/interfaces/FlowObservable.md)\<`T`\> | The FlowObservable or getter function to convert. |
69
26
 
70
27
  ### Returns
71
28
 
72
- [`SolidResource`](/api/classes/SolidResource.md)\<[`NotPromise`](/api/type-aliases/NotPromise.md)\<`T`\>\>
73
-
74
- A SolidResource wrapping the observable.
75
-
76
- ## Call Signature
77
-
78
- ```ts
79
- function from<T>(flow): SolidDerivation<NotPromise<T>>;
80
- ```
29
+ `Resource`\<`T`\>
81
30
 
82
- Defined in: [solid/converters.ts:170](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/solid/converters.ts#L170)
31
+ A SolidJS Resource that wraps the value or computation.
83
32
 
84
- Converts a FlowObservable of a non-Promise value into a SolidDerivation.
33
+ ### Remarks
85
34
 
86
- ### Type Parameters
35
+ This function bridges PicoFlow's reactive system with SolidJS, allowing you to use
36
+ PicoFlow primitives and computations within Solid components. All conversions return a
37
+ SolidJS Resource, which can handle both synchronous and asynchronous values seamlessly.
87
38
 
88
- | Type Parameter |
89
- | ------ |
90
- | `T` |
39
+ The conversion works with:
40
+ - **FlowObservable**: Any PicoFlow reactive primitive (e.g., from `state()`, `derivation()`, `stateAsync()`, `derivationAsync()`)
41
+ - **Getter functions**: Computation functions that use a FlowTracker to access reactive values
91
42
 
92
- ### Parameters
43
+ The created Resource automatically subscribes to the PicoFlow observables and updates
44
+ when their values change. The subscription is properly cleaned up when the Solid
45
+ component unmounts.
93
46
 
94
- | Parameter | Type | Description |
95
- | ------ | ------ | ------ |
96
- | `flow` | [`FlowObservable`](/api/classes/FlowObservable.md)\<[`NotPromise`](/api/type-aliases/NotPromise.md)\<`T`\>\> | The FlowObservable to convert. |
47
+ ### Example
97
48
 
98
- ### Returns
99
-
100
- [`SolidDerivation`](/api/classes/SolidDerivation.md)\<[`NotPromise`](/api/type-aliases/NotPromise.md)\<`T`\>\>
49
+ ```typescript
50
+ import { from } from 'picoflow/solid';
51
+ import { state, derivation } from 'picoflow';
101
52
 
102
- A SolidDerivation wrapping the observable.
53
+ // Convert a PicoFlow state to a Solid resource
54
+ const $count = state(0);
55
+ const solidCount = from($count);
103
56
 
104
- ## Call Signature
57
+ // Use in a Solid component
58
+ function Counter() {
59
+ return <div>Count: {solidCount()}</div>;
60
+ }
105
61
 
106
- ```ts
107
- function from<T>(flow):
108
- | SolidDerivation<NotPromise<T>>
109
- | SolidResource<NotPromise<T>>;
62
+ // Or convert a computation function
63
+ const solidDerived = from((t) => {
64
+ return $count.get(t) * 2;
65
+ });
110
66
  ```
111
67
 
112
- Defined in: [solid/converters.ts:181](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/solid/converters.ts#L181)
113
-
114
- Converts a FlowObservable into a Solid derivation or resource, depending on whether the value is synchronous or asynchronous.
115
-
116
- ### Type Parameters
117
-
118
- | Type Parameter |
119
- | ------ |
120
- | `T` |
121
-
122
- ### Parameters
123
-
124
- | Parameter | Type | Description |
125
- | ------ | ------ | ------ |
126
- | `flow` | \| [`FlowObservable`](/api/classes/FlowObservable.md)\<`Promise`\<[`NotPromise`](/api/type-aliases/NotPromise.md)\<`T`\>\>\> \| [`FlowObservable`](/api/classes/FlowObservable.md)\<[`NotPromise`](/api/type-aliases/NotPromise.md)\<`T`\>\> | The FlowObservable to convert. |
127
-
128
- ### Returns
129
-
130
- \| [`SolidDerivation`](/api/classes/SolidDerivation.md)\<[`NotPromise`](/api/type-aliases/NotPromise.md)\<`T`\>\>
131
- \| [`SolidResource`](/api/classes/SolidResource.md)\<[`NotPromise`](/api/type-aliases/NotPromise.md)\<`T`\>\>
132
-
133
- A SolidDerivation or SolidResource, depending on the input type.
134
-
135
68
  ## Call Signature
136
69
 
137
70
  ```ts
138
- function from<T>(flow): SolidDerivation<NotPromise<T>>;
71
+ function from<T>(flow): Resource<T>;
139
72
  ```
140
73
 
141
- Defined in: [solid/converters.ts:192](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/solid/converters.ts#L192)
74
+ Defined in: [converters/solid.ts:98](https://gitlab.com/ersbeth-web/picoflow/-/blob/4e864254f0eac72524c3be40b9e41d799a16e020/src/converters/solid.ts#L98)
142
75
 
143
- Converts a getter function returning a non-Promise value into a SolidDerivation.
76
+ Converts a PicoFlow observable or getter function into a SolidJS resource.
144
77
 
145
78
  ### Type Parameters
146
79
 
@@ -152,69 +85,45 @@ Converts a getter function returning a non-Promise value into a SolidDerivation.
152
85
 
153
86
  | Parameter | Type | Description |
154
87
  | ------ | ------ | ------ |
155
- | `flow` | (`t`) => [`NotPromise`](/api/type-aliases/NotPromise.md)\<`T`\> | The getter function to convert. |
88
+ | `flow` | (`t`) => [`NotPromise`](/api/type-aliases/NotPromise.md)\<`T`\> | The FlowObservable or getter function to convert. |
156
89
 
157
90
  ### Returns
158
91
 
159
- [`SolidDerivation`](/api/classes/SolidDerivation.md)\<[`NotPromise`](/api/type-aliases/NotPromise.md)\<`T`\>\>
160
-
161
- A SolidDerivation wrapping the getter.
162
-
163
- ## Call Signature
164
-
165
- ```ts
166
- function from<T>(flow): SolidResource<NotPromise<T>>;
167
- ```
92
+ `Resource`\<`T`\>
168
93
 
169
- Defined in: [solid/converters.ts:203](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/solid/converters.ts#L203)
94
+ A SolidJS Resource that wraps the value or computation.
170
95
 
171
- Converts a getter function returning a Promise into a SolidResource.
96
+ ### Remarks
172
97
 
173
- ### Type Parameters
174
-
175
- | Type Parameter |
176
- | ------ |
177
- | `T` |
98
+ This function bridges PicoFlow's reactive system with SolidJS, allowing you to use
99
+ PicoFlow primitives and computations within Solid components. All conversions return a
100
+ SolidJS Resource, which can handle both synchronous and asynchronous values seamlessly.
178
101
 
179
- ### Parameters
102
+ The conversion works with:
103
+ - **FlowObservable**: Any PicoFlow reactive primitive (e.g., from `state()`, `derivation()`, `stateAsync()`, `derivationAsync()`)
104
+ - **Getter functions**: Computation functions that use a FlowTracker to access reactive values
180
105
 
181
- | Parameter | Type | Description |
182
- | ------ | ------ | ------ |
183
- | `flow` | (`t`) => `Promise`\<[`NotPromise`](/api/type-aliases/NotPromise.md)\<`T`\>\> | The getter function to convert. |
106
+ The created Resource automatically subscribes to the PicoFlow observables and updates
107
+ when their values change. The subscription is properly cleaned up when the Solid
108
+ component unmounts.
184
109
 
185
- ### Returns
110
+ ### Example
186
111
 
187
- [`SolidResource`](/api/classes/SolidResource.md)\<[`NotPromise`](/api/type-aliases/NotPromise.md)\<`T`\>\>
112
+ ```typescript
113
+ import { from } from 'picoflow/solid';
114
+ import { state, derivation } from 'picoflow';
188
115
 
189
- A SolidResource wrapping the getter.
116
+ // Convert a PicoFlow state to a Solid resource
117
+ const $count = state(0);
118
+ const solidCount = from($count);
190
119
 
191
- ## Call Signature
120
+ // Use in a Solid component
121
+ function Counter() {
122
+ return <div>Count: {solidCount()}</div>;
123
+ }
192
124
 
193
- ```ts
194
- function from<T>(flow):
195
- | SolidDerivation<T>
196
- | SolidResource<T>;
125
+ // Or convert a computation function
126
+ const solidDerived = from((t) => {
127
+ return $count.get(t) * 2;
128
+ });
197
129
  ```
198
-
199
- Defined in: [solid/converters.ts:214](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/solid/converters.ts#L214)
200
-
201
- Converts a getter function into a Solid derivation or resource, depending on whether the returned value is synchronous or asynchronous.
202
-
203
- ### Type Parameters
204
-
205
- | Type Parameter |
206
- | ------ |
207
- | `T` |
208
-
209
- ### Parameters
210
-
211
- | Parameter | Type | Description |
212
- | ------ | ------ | ------ |
213
- | `flow` | \| (`t`) => [`NotPromise`](/api/type-aliases/NotPromise.md)\<`T`\> \| (`t`) => `Promise`\<[`NotPromise`](/api/type-aliases/NotPromise.md)\<`T`\>\> | The getter function to convert. |
214
-
215
- ### Returns
216
-
217
- \| [`SolidDerivation`](/api/classes/SolidDerivation.md)\<`T`\>
218
- \| [`SolidResource`](/api/classes/SolidResource.md)\<`T`\>
219
-
220
- A SolidDerivation or SolidResource, depending on the input type.
@@ -6,44 +6,22 @@
6
6
  function isDisposable(obj): obj is FlowDisposable;
7
7
  ```
8
8
 
9
- Defined in: [basic/disposable.ts:80](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/basic/disposable.ts#L80)
9
+ Defined in: [api/base/flowDisposable.ts:42](https://gitlab.com/ersbeth-web/picoflow/-/blob/4e864254f0eac72524c3be40b9e41d799a16e020/src/api/base/flowDisposable.ts#L42)
10
10
 
11
- Type guard that checks whether an object implements the FlowDisposable interface.
11
+ Type guard to check if an object implements the FlowDisposable interface.
12
+
13
+ Useful for conditionally disposing objects that may or may not be disposable,
14
+ such as when cleaning up mixed collections of values. Returns true if the object
15
+ has a `dispose` method, providing type-safe access to disposal functionality.
12
16
 
13
17
  ## Parameters
14
18
 
15
19
  | Parameter | Type | Description |
16
20
  | ------ | ------ | ------ |
17
- | `obj` | `unknown` | The object to test for disposability. |
21
+ | `obj` | `unknown` | The object to check |
18
22
 
19
23
  ## Returns
20
24
 
21
25
  `obj is FlowDisposable`
22
26
 
23
- True if the object has a `dispose` method and is therefore disposable, false otherwise.
24
-
25
- ## Remarks
26
-
27
- This utility function is useful for safely checking if an object needs disposal before
28
- attempting cleanup operations. It performs a runtime check for the presence of a `dispose`
29
- method, making it safe to use with unknown types.
30
-
31
- **Common Use Cases:**
32
- - Conditionally disposing items in collections (arrays, maps)
33
- - Generic cleanup functions that handle both disposable and non-disposable objects
34
- - Defensive programming when working with mixed types
35
-
36
- ## Example
37
-
38
- ```typescript
39
- function cleanupArray<T>(items: T[]) {
40
- items.forEach(item => {
41
- if (isDisposable(item)) {
42
- item.dispose();
43
- }
44
- });
45
- }
46
-
47
- const mixed = [state(1), "string", signal(), 42];
48
- cleanupArray(mixed); // Only disposes the state and signal
49
- ```
27
+ True if the object implements FlowDisposable, false otherwise
@@ -6,52 +6,31 @@
6
6
  function map<K, V>(initial?): FlowMap<K, V>;
7
7
  ```
8
8
 
9
- Defined in: [creators.ts:349](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/creators.ts#L349)
9
+ Defined in: [api/nodes/collections/flowMap.ts:110](https://gitlab.com/ersbeth-web/picoflow/-/blob/4e864254f0eac72524c3be40b9e41d799a16e020/src/api/nodes/collections/flowMap.ts#L110)
10
10
 
11
- Creates a new reactive map state with fine-grained tracking of operations.
11
+ Creates a reactive map with mutation methods and fine-grained action tracking.
12
+
13
+ The map starts with the provided initial entries (or empty if none provided). All mutation methods
14
+ (add, update, delete) notify dependents and emit detailed action information to `$lastAction`.
15
+ Use the map itself for coarse-grained reactivity, or subscribe to `$lastAction` for fine-grained
16
+ reactivity to specific mutation types. Useful for entity stores, lookup tables, or any key-value
17
+ data that needs reactive updates.
12
18
 
13
19
  ## Type Parameters
14
20
 
15
- | Type Parameter | Description |
16
- | ------ | ------ |
17
- | `K` *extends* `string` \| `number` \| `symbol` | The type of the keys. |
18
- | `V` | The type of the values. |
21
+ | Type Parameter |
22
+ | ------ |
23
+ | `K` *extends* `string` \| `number` \| `symbol` |
24
+ | `V` |
19
25
 
20
26
  ## Parameters
21
27
 
22
28
  | Parameter | Type | Description |
23
29
  | ------ | ------ | ------ |
24
- | `initial?` | `Record`\<`K`, `V`\> | An optional record of key-value pairs to initialize the map. |
30
+ | `initial?` | `Record`\<`K`, `V`\> \| `Map`\<`K`, `V`\> | Optional initial entries as a Record or Map |
25
31
 
26
32
  ## Returns
27
33
 
28
- [`FlowMap`](/api/classes/FlowMap.md)\<`K`, `V`\>
29
-
30
- A new instance of [FlowMap](/api/classes/FlowMap.md).
31
-
32
- ## Remarks
33
-
34
- A reactive map wraps a native JavaScript Map and provides multiple levels of reactivity:
35
- tracking the entire map, tracking individual set operations, and tracking individual
36
- delete operations. The initial record (if provided) is converted to a native Map.
37
-
38
- ## Example
34
+ [`FlowMap`](/api/interfaces/FlowMap.md)\<`K`, `V`\>
39
35
 
40
- ```typescript
41
- const $users = map<string, User>({
42
- 'user1': { name: 'John', age: 30 }
43
- });
44
-
45
- // Track the whole map
46
- effect((t) => {
47
- console.log('Users:', $users.get(t).size);
48
- });
49
-
50
- // Track additions
51
- effect((t) => {
52
- const { key, value } = $users.$lastSet.get(t);
53
- if (key) console.log(`Added: ${key}`);
54
- });
55
-
56
- $users.setAt('user2', { name: 'Jane', age: 25 });
57
- ```
36
+ A FlowMap with reactive mutation methods
@@ -6,31 +6,16 @@
6
6
  function signal(): FlowSignal;
7
7
  ```
8
8
 
9
- Defined in: [creators.ts:42](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/creators.ts#L42)
9
+ Defined in: [api/nodes/flowSignal.ts:26](https://gitlab.com/ersbeth-web/picoflow/-/blob/4e864254f0eac72524c3be40b9e41d799a16e020/src/api/nodes/flowSignal.ts#L26)
10
10
 
11
- Creates a new reactive signal.
11
+ Creates a signal that can be manually triggered to notify dependents.
12
12
 
13
- ## Returns
14
-
15
- [`FlowSignal`](/api/classes/FlowSignal.md)
16
-
17
- A new instance of [FlowSignal](/api/classes/FlowSignal.md).
18
-
19
- ## Remarks
13
+ Signals act as event emitters in the reactive graph. Call `trigger()` to notify all subscribers
14
+ and reactive computations that depend on the signal. Unlike state or derivations, signals don't
15
+ carry data values - they simply represent that an event occurred.
20
16
 
21
- A signal is the simplest reactive primitive - it doesn't hold a value, but can be triggered
22
- to notify dependent effects and derivations. Use signals when you need event-like notifications
23
- without associated data.
24
-
25
- ## Example
26
-
27
- ```typescript
28
- const $refresh = signal();
17
+ ## Returns
29
18
 
30
- effect((t) => {
31
- $refresh.watch(t);
32
- console.log('Refreshing...');
33
- });
19
+ [`FlowSignal`](/api/interfaces/FlowSignal.md)
34
20
 
35
- $refresh.trigger(); // Logs: "Refreshing..."
36
- ```
21
+ A FlowSignal that can be triggered manually and subscribed to
@@ -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