@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
@@ -1,364 +0,0 @@
1
- [@ersbeth/picoflow](/api/index.md) / FlowStreamAsync
2
-
3
- # Class: FlowStreamAsync\<T\>
4
-
5
- Defined in: [advanced/streamAsync.ts:69](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/advanced/streamAsync.ts#L69)
6
-
7
- Represents an asynchronous reactive stream that always returns a Promise and updates based on an updater function.
8
-
9
- ## Remarks
10
-
11
- FlowStreamAsync extends FlowObservable to bridge external async event sources with PicoFlow's
12
- reactive system. Unlike [FlowStream](/api/classes/FlowStream.md) which returns `T | undefined`, FlowStreamAsync always
13
- returns a `Promise<T>`, making it suitable for use with async/await patterns.
14
-
15
- **How It Works:**
16
- 1. On construction, creates an initial Promise that resolves when the first value arrives
17
- 2. Your updater function receives a setter callback and sets up event subscriptions
18
- 3. When the setter is called with a value, the Promise resolves (first call) or a new Promise is created (subsequent calls)
19
- 4. The updater returns a disposer function for cleanup
20
-
21
- **Promise Behavior:**
22
- - **First call to setter**: Resolves the initial Promise created at construction
23
- - **Subsequent calls**: Creates a new `Promise.resolve(value)` for immediate resolution
24
- - **Reading the value**: Always returns a Promise, either pending (initial) or resolved
25
-
26
- **Change Detection:**
27
- After the first value is set, the stream only notifies subscribers when the new value
28
- differs from the previous value (using strict equality `===`). This prevents unnecessary
29
- updates for duplicate values.
30
-
31
- **Resource Management:**
32
- The disposer function returned by your updater is automatically called when the stream
33
- is disposed. Use it to clean up subscriptions, close connections, or clear timers.
34
-
35
- **Use Cases:**
36
- - Async WebSocket message streams
37
- - Server-sent events that you want to await
38
- - Async event handlers
39
- - Integration with async iterators
40
- - Any push-based async data source
41
-
42
- ## Example
43
-
44
- ```typescript
45
- // Async WebSocket stream
46
- const $messages = streamAsync<string>((set) => {
47
- const ws = new WebSocket('ws://example.com');
48
- ws.onmessage = (event) => set(event.data);
49
- return () => ws.close();
50
- });
51
-
52
- // Use with async/await
53
- effect(async (t) => {
54
- const message = await $messages.get(t);
55
- console.log('Received:', message);
56
- });
57
-
58
- // Wait for the first message
59
- const firstMessage = await $messages.pick();
60
- console.log('First message:', firstMessage);
61
-
62
- // Async timer stream
63
- const $asyncTick = streamAsync<number>((set) => {
64
- let count = 0;
65
- const id = setInterval(() => set(count++), 1000);
66
- return () => clearInterval(id);
67
- });
68
- ```
69
-
70
- ## Extends
71
-
72
- - [`FlowObservable`](/api/classes/FlowObservable.md)\<`Promise`\<`T`\>\>
73
-
74
- ## Type Parameters
75
-
76
- | Type Parameter | Description |
77
- | ------ | ------ |
78
- | `T` | The type of the values emitted by the stream (not the Promise itself). |
79
-
80
- ## Constructors
81
-
82
- ### Constructor
83
-
84
- ```ts
85
- new FlowStreamAsync<T>(updater): FlowStreamAsync<T>;
86
- ```
87
-
88
- Defined in: [advanced/streamAsync.ts:84](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/advanced/streamAsync.ts#L84)
89
-
90
- Creates a new asynchronous FlowStream.
91
-
92
- #### Parameters
93
-
94
- | Parameter | Type | Description |
95
- | ------ | ------ | ------ |
96
- | `updater` | [`FlowStreamUpdater`](/api/type-aliases/FlowStreamUpdater.md)\<`T`\> | A function that receives a setter callback and returns a disposer. The setter should be called whenever new data is available (can be called asynchronously). The disposer will be invoked when the stream is disposed to clean up resources. |
97
-
98
- #### Returns
99
-
100
- `FlowStreamAsync`\<`T`\>
101
-
102
- #### Remarks
103
-
104
- The updater is invoked immediately during construction. An initial Promise is created
105
- that will resolve when the setter is first called. Make sure to return a proper cleanup
106
- function to avoid resource leaks.
107
-
108
- #### Overrides
109
-
110
- [`FlowObservable`](/api/classes/FlowObservable.md).[`constructor`](/api/classes/FlowObservable.md#constructor)
111
-
112
- ## Accessors
113
-
114
- ### disposed
115
-
116
- #### Get Signature
117
-
118
- ```ts
119
- get disposed(): boolean;
120
- ```
121
-
122
- Defined in: [basic/signal.ts:97](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/basic/signal.ts#L97)
123
-
124
- Indicates whether the FlowSignal has been disposed.
125
-
126
- ##### Remarks
127
-
128
- Once disposed, the signal should not be used.
129
-
130
- ##### Returns
131
-
132
- `boolean`
133
-
134
- #### Inherited from
135
-
136
- [`FlowObservable`](/api/classes/FlowObservable.md).[`disposed`](/api/classes/FlowObservable.md#disposed)
137
-
138
- ## Methods
139
-
140
- ### dispose()
141
-
142
- ```ts
143
- dispose(): void;
144
- ```
145
-
146
- Defined in: [advanced/streamAsync.ts:110](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/advanced/streamAsync.ts#L110)
147
-
148
- Disposes the stream, releasing all resources.
149
-
150
- #### Returns
151
-
152
- `void`
153
-
154
- #### Remarks
155
-
156
- In addition to disposing the underlying observable, this method calls the disposer
157
- returned by the updater.
158
-
159
- #### Overrides
160
-
161
- [`FlowObservable`](/api/classes/FlowObservable.md).[`dispose`](/api/classes/FlowObservable.md#dispose)
162
-
163
- ***
164
-
165
- ### get()
166
-
167
- ```ts
168
- get(context): Promise;
169
- ```
170
-
171
- Defined in: [basic/observable.ts:47](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/basic/observable.ts#L47)
172
-
173
- Gets the current value with optional dependency tracking.
174
-
175
- #### Parameters
176
-
177
- | Parameter | Type | Description |
178
- | ------ | ------ | ------ |
179
- | `context` | [`TrackingContext`](/api/classes/TrackingContext.md) \| `null` | The tracking context for reactive tracking, or null for untracked access. When a context is provided, this observable is registered as a dependency. When null, the value is read without any tracking. |
180
-
181
- #### Returns
182
-
183
- `Promise`
184
-
185
- The current value of type T.
186
-
187
- #### Remarks
188
-
189
- Use `get(t)` within effects and derivations to create reactive dependencies.
190
- Use `get(null)` when you need to read a value without tracking (though `pick()` is more idiomatic).
191
-
192
- #### Example
193
-
194
- ```typescript
195
- effect((t) => {
196
- const tracked = $state.get(t); // Dependency registered
197
- const untracked = $other.get(null); // No dependency
198
- });
199
- ```
200
-
201
- #### Inherited from
202
-
203
- [`FlowObservable`](/api/classes/FlowObservable.md).[`get`](/api/classes/FlowObservable.md#get)
204
-
205
- ***
206
-
207
- ### pick()
208
-
209
- ```ts
210
- pick(): Promise;
211
- ```
212
-
213
- Defined in: [basic/observable.ts:82](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/basic/observable.ts#L82)
214
-
215
- Gets the current value without any dependency tracking.
216
-
217
- #### Returns
218
-
219
- `Promise`
220
-
221
- The current value of type T.
222
-
223
- #### Remarks
224
-
225
- This method is equivalent to calling `get(null)` but provides a more semantic and readable API.
226
- Use `pick()` when you want to read a snapshot of the current value without creating a reactive
227
- dependency. This is useful for:
228
- - Reading initial values
229
- - Accessing configuration that shouldn't trigger updates
230
- - Mixing tracked and untracked reads in the same effect
231
-
232
- #### Example
233
-
234
- ```typescript
235
- // Read a snapshot outside reactive context
236
- const currentValue = $state.pick();
237
-
238
- // Mix tracked and untracked reads
239
- effect((t) => {
240
- const tracked = $reactive.get(t); // Triggers re-runs
241
- const snapshot = $config.pick(); // Doesn't trigger re-runs
242
- processData(tracked, snapshot);
243
- });
244
- ```
245
-
246
- #### Inherited from
247
-
248
- [`FlowObservable`](/api/classes/FlowObservable.md).[`pick`](/api/classes/FlowObservable.md#pick)
249
-
250
- ***
251
-
252
- ### subscribe()
253
-
254
- ```ts
255
- subscribe(listener): () => void;
256
- ```
257
-
258
- Defined in: [basic/observable.ts:103](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/basic/observable.ts#L103)
259
-
260
- Subscribes a listener function to changes of the observable.
261
- The listener is executed immediately with the current value and on subsequent updates.
262
-
263
- #### Parameters
264
-
265
- | Parameter | Type | Description |
266
- | ------ | ------ | ------ |
267
- | `listener` | (`value`) => `void` | A callback function that receives the new value. |
268
-
269
- #### Returns
270
-
271
- A disposer function to cancel the subscription.
272
-
273
- ```ts
274
- (): void;
275
- ```
276
-
277
- ##### Returns
278
-
279
- `void`
280
-
281
- #### Inherited from
282
-
283
- [`FlowObservable`](/api/classes/FlowObservable.md).[`subscribe`](/api/classes/FlowObservable.md#subscribe)
284
-
285
- ***
286
-
287
- ### trigger()
288
-
289
- ```ts
290
- trigger(): void;
291
- ```
292
-
293
- Defined in: [basic/signal.ts:19](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/basic/signal.ts#L19)
294
-
295
- Triggers the FlowSignal.
296
- Notifies all registered listeners and schedules execution of associated effects.
297
-
298
- #### Returns
299
-
300
- `void`
301
-
302
- #### Throws
303
-
304
- If the FlowSignal has already been disposed.
305
-
306
- #### Inherited from
307
-
308
- [`FlowObservable`](/api/classes/FlowObservable.md).[`trigger`](/api/classes/FlowObservable.md#trigger)
309
-
310
- ***
311
-
312
- ### watch()
313
-
314
- ```ts
315
- watch(context): void;
316
- ```
317
-
318
- Defined in: [basic/signal.ts:57](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/basic/signal.ts#L57)
319
-
320
- Watches the signal, registering it as a dependency in the tracking context.
321
-
322
- #### Parameters
323
-
324
- | Parameter | Type | Description |
325
- | ------ | ------ | ------ |
326
- | `context` | [`TrackingContext`](/api/classes/TrackingContext.md) | The tracking context in which to register this signal as a dependency. |
327
-
328
- #### Returns
329
-
330
- `void`
331
-
332
- #### Remarks
333
-
334
- Use `watch()` when you want to track a signal without reading its value (signals don't
335
- have values to read). This is useful for triggering effects based on signal events
336
- without needing associated data.
337
-
338
- When the signal is triggered via `trigger()`, any effects or derivations that have
339
- watched this signal will automatically re-execute.
340
-
341
- This method must be called within an effect or derivation context where a TrackingContext
342
- is available. For observables (which hold values), use `.get(t)` instead, which both
343
- reads the value and watches for changes.
344
-
345
- #### Throws
346
-
347
- Error if the signal has been disposed.
348
-
349
- #### Example
350
-
351
- ```typescript
352
- const $signal = signal();
353
-
354
- effect((t) => {
355
- $signal.watch(t); // Track the signal
356
- console.log('Signal triggered!');
357
- });
358
-
359
- $signal.trigger(); // Logs: "Signal triggered!"
360
- ```
361
-
362
- #### Inherited from
363
-
364
- [`FlowObservable`](/api/classes/FlowObservable.md).[`watch`](/api/classes/FlowObservable.md#watch)
@@ -1,75 +0,0 @@
1
- [@ersbeth/picoflow](/api/index.md) / SolidDerivation
2
-
3
- # Class: SolidDerivation\<T\>
4
-
5
- Defined in: [solid/primitives.ts:114](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/solid/primitives.ts#L114)
6
-
7
- Solid-style derivation wrapping SolidJS's createMemo, providing a computed reactive value.
8
-
9
- ## Remarks
10
-
11
- SolidDerivation is a thin wrapper around SolidJS's `createMemo` that provides a class-based
12
- interface consistent with PicoFlow's API style. It creates a memoized computation that
13
- automatically tracks its dependencies and recomputes only when they change.
14
-
15
- Unlike PicoFlow's [FlowDerivation](/api/classes/FlowDerivation.md) which uses explicit tracking context, SolidDerivation
16
- relies on SolidJS's automatic dependency tracking. The computation function runs within
17
- SolidJS's reactive scope and automatically subscribes to any signals accessed during execution.
18
-
19
- **Memoization:**
20
- The computed value is cached and only recomputed when tracked dependencies change,
21
- providing efficient derived state management.
22
-
23
- ## Example
24
-
25
- ```typescript
26
- const firstName = new SolidState('John');
27
- const lastName = new SolidState('Doe');
28
-
29
- const fullName = new SolidDerivation(() => {
30
- return `${firstName.get()} ${lastName.get()}`;
31
- });
32
-
33
- // In a Solid component
34
- function Display() {
35
- return <div>{fullName.get()}</div>; // Automatically updates
36
- }
37
- ```
38
-
39
- ## Type Parameters
40
-
41
- | Type Parameter | Description |
42
- | ------ | ------ |
43
- | `T` | The value type. |
44
-
45
- ## Implements
46
-
47
- - [`SolidObservable`](/api/interfaces/SolidObservable.md)\<`T`\>
48
-
49
- ## Constructors
50
-
51
- ### Constructor
52
-
53
- ```ts
54
- new SolidDerivation<T>(calculator): SolidDerivation<T>;
55
- ```
56
-
57
- Defined in: [solid/primitives.ts:124](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/solid/primitives.ts#L124)
58
-
59
- Creates a new SolidDerivation from a getter function or value.
60
-
61
- #### Parameters
62
-
63
- | Parameter | Type | Description |
64
- | ------ | ------ | ------ |
65
- | `calculator` | [`SolidGetter`](/api/type-aliases/SolidGetter.md)\<`T`\> | The getter function or value. |
66
-
67
- #### Returns
68
-
69
- `SolidDerivation`\<`T`\>
70
-
71
- ## Properties
72
-
73
- | Property | Modifier | Type | Description | Defined in |
74
- | ------ | ------ | ------ | ------ | ------ |
75
- | <a id="get"></a> `get` | `readonly` | () => `T` | Returns the current derived value. | [solid/primitives.ts:118](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/solid/primitives.ts#L118) |
@@ -1,91 +0,0 @@
1
- [@ersbeth/picoflow](/api/index.md) / SolidResource
2
-
3
- # Class: SolidResource\<T\>
4
-
5
- Defined in: [solid/primitives.ts:177](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/solid/primitives.ts#L177)
6
-
7
- Solid-style resource wrapping SolidJS's createResource, providing async data loading with reactive state.
8
-
9
- ## Remarks
10
-
11
- SolidResource is a thin wrapper around SolidJS's `createResource` that provides a class-based
12
- interface consistent with PicoFlow's API style. It manages asynchronous data fetching with
13
- built-in loading states, error handling, and automatic reactivity.
14
-
15
- Unlike PicoFlow's [FlowResource](/api/classes/FlowResource.md) or [FlowResourceAsync](/api/classes/FlowResourceAsync.md), SolidResource integrates
16
- directly with SolidJS's Suspense and ErrorBoundary mechanisms, providing a first-class async
17
- data loading experience in Solid applications.
18
-
19
- **Resource States:**
20
- - `unresolved`: Initial state before first fetch
21
- - `pending`: Fetch is in progress
22
- - `ready`: Data has been successfully loaded
23
- - `refreshing`: Refetching while previous data is still available
24
- - `errored`: Fetch failed with an error
25
-
26
- **Properties:**
27
- - `get()`: Returns the current value (or undefined if not ready)
28
- - `state()`: Returns the current loading state
29
- - `latest()`: Returns the most recent successfully loaded value
30
- - `refetch()`: Triggers a new fetch operation
31
-
32
- ## Example
33
-
34
- ```typescript
35
- const user = new SolidResource(async () => {
36
- const res = await fetch('/api/user');
37
- return res.json();
38
- });
39
-
40
- // In a Solid component
41
- function UserProfile() {
42
- return (
43
- <div>
44
- {user.state() === 'pending' && <p>Loading...</p>}
45
- {user.state() === 'ready' && <p>Name: {user.get()?.name}</p>}
46
- <button onClick={() => user.refetch()}>Refresh</button>
47
- </div>
48
- );
49
- }
50
- ```
51
-
52
- ## Type Parameters
53
-
54
- | Type Parameter | Description |
55
- | ------ | ------ |
56
- | `T` | The value type. |
57
-
58
- ## Implements
59
-
60
- - [`SolidObservable`](/api/interfaces/SolidObservable.md)\<`T` \| `undefined`\>
61
-
62
- ## Constructors
63
-
64
- ### Constructor
65
-
66
- ```ts
67
- new SolidResource<T>(fetcher): SolidResource<T>;
68
- ```
69
-
70
- Defined in: [solid/primitives.ts:204](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/solid/primitives.ts#L204)
71
-
72
- Creates a new SolidResource from a fetcher function.
73
-
74
- #### Parameters
75
-
76
- | Parameter | Type | Description |
77
- | ------ | ------ | ------ |
78
- | `fetcher` | `ResourceFetcher`\<`true`, `T`, `unknown`\> | The async fetcher function. |
79
-
80
- #### Returns
81
-
82
- `SolidResource`\<`T`\>
83
-
84
- ## Properties
85
-
86
- | Property | Modifier | Type | Description | Defined in |
87
- | ------ | ------ | ------ | ------ | ------ |
88
- | <a id="get"></a> `get` | `readonly` | () => `T` \| `undefined` | Returns the current value (or undefined if not yet loaded). | [solid/primitives.ts:181](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/solid/primitives.ts#L181) |
89
- | <a id="latest"></a> `latest` | `readonly` | () => `T` \| `undefined` | Returns the latest successfully loaded value (or undefined). | [solid/primitives.ts:194](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/solid/primitives.ts#L194) |
90
- | <a id="refetch"></a> `refetch` | `readonly` | () => `void` | Triggers a refetch of the resource. | [solid/primitives.ts:198](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/solid/primitives.ts#L198) |
91
- | <a id="state"></a> `state` | `readonly` | () => `"unresolved"` \| `"pending"` \| `"errored"` \| `"ready"` \| `"refreshing"` | Returns the current resource state. | [solid/primitives.ts:185](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/solid/primitives.ts#L185) |
@@ -1,71 +0,0 @@
1
- [@ersbeth/picoflow](/api/index.md) / SolidState
2
-
3
- # Class: SolidState\<T\>
4
-
5
- Defined in: [solid/primitives.ts:58](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/solid/primitives.ts#L58)
6
-
7
- Solid-style state container wrapping SolidJS's createSignal, providing a writable reactive signal.
8
-
9
- ## Remarks
10
-
11
- SolidState is a thin wrapper around SolidJS's `createSignal` that provides a class-based
12
- interface consistent with PicoFlow's API style. It's used internally by PicoFlow's Solid
13
- integration but can also be used directly in Solid components.
14
-
15
- Unlike PicoFlow's [FlowState](/api/classes/FlowState.md) which uses explicit tracking context, SolidState
16
- relies on SolidJS's automatic dependency tracking within reactive contexts like
17
- `createEffect` or component render functions.
18
-
19
- ## Example
20
-
21
- ```typescript
22
- const count = new SolidState(0);
23
-
24
- // In a Solid component
25
- function Counter() {
26
- return <div>{count.get()}</div>; // Automatically reactive
27
- }
28
-
29
- // Update the value
30
- count.set(1);
31
- count.set(prev => prev + 1);
32
- ```
33
-
34
- ## Type Parameters
35
-
36
- | Type Parameter | Description |
37
- | ------ | ------ |
38
- | `T` | The value type. |
39
-
40
- ## Implements
41
-
42
- - [`SolidObservable`](/api/interfaces/SolidObservable.md)\<`T`\>
43
-
44
- ## Constructors
45
-
46
- ### Constructor
47
-
48
- ```ts
49
- new SolidState<T>(initialValue): SolidState<T>;
50
- ```
51
-
52
- Defined in: [solid/primitives.ts:72](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/solid/primitives.ts#L72)
53
-
54
- Creates a new SolidState with the given initial value.
55
-
56
- #### Parameters
57
-
58
- | Parameter | Type | Description |
59
- | ------ | ------ | ------ |
60
- | `initialValue` | `T` | The initial value. |
61
-
62
- #### Returns
63
-
64
- `SolidState`\<`T`\>
65
-
66
- ## Properties
67
-
68
- | Property | Modifier | Type | Description | Defined in |
69
- | ------ | ------ | ------ | ------ | ------ |
70
- | <a id="get"></a> `get` | `readonly` | () => `T` | Returns the current value. | [solid/primitives.ts:62](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/solid/primitives.ts#L62) |
71
- | <a id="set"></a> `set` | `readonly` | (`param`) => `void` | Sets the value or updates it using a getter function. | [solid/primitives.ts:66](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/solid/primitives.ts#L66) |
@@ -1,33 +0,0 @@
1
- [@ersbeth/picoflow](/api/index.md) / TrackingContext
2
-
3
- # Class: TrackingContext
4
-
5
- Defined in: [basic/trackingContext.ts:34](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/basic/trackingContext.ts#L34)
6
-
7
- Represents a tracking context used to register dependencies during reactive computations.
8
-
9
- ## Remarks
10
-
11
- TrackingContext is the core mechanism that enables automatic dependency tracking in PicoFlow's
12
- reactive system. When you create an effect or derivation, PicoFlow automatically creates and
13
- manages a TrackingContext instance for you. This context is passed as a parameter (typically
14
- named `t`) to your computation functions.
15
-
16
- You use the tracking context to explicitly mark which observables should be tracked as dependencies:
17
- - Call `observable.get(t)` to read a value AND register it as a dependency
18
- - Call `observable.pick()` to read a value WITHOUT registering it as a dependency
19
- - Call `signal.watch(t)` to register a signal as a dependency without reading a value
20
-
21
- End-users typically don't instantiate TrackingContext directly; instead, they receive it as
22
- a parameter in effect and derivation callbacks.
23
-
24
- ## Example
25
-
26
- ```typescript
27
- // TrackingContext passed as parameter 't'
28
- effect((t) => {
29
- const value = $state.get(t); // Tracked dependency
30
- const snapshot = $other.pick(); // Not tracked
31
- console.log(value, snapshot);
32
- });
33
- ```
@@ -1,49 +0,0 @@
1
- [@ersbeth/picoflow](/api/index.md) / effect
2
-
3
- # Function: effect()
4
-
5
- ```ts
6
- function effect(fn): FlowEffect;
7
- ```
8
-
9
- Defined in: [creators.ts:310](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/creators.ts#L310)
10
-
11
- Creates a new reactive effect that executes a side-effect function based on its dependencies.
12
-
13
- ## Parameters
14
-
15
- | Parameter | Type | Description |
16
- | ------ | ------ | ------ |
17
- | `fn` | (`t`) => `void` | A function that performs side effects using a tracking context. |
18
-
19
- ## Returns
20
-
21
- [`FlowEffect`](/api/classes/FlowEffect.md)
22
-
23
- A new instance of [FlowEffect](/api/classes/FlowEffect.md).
24
-
25
- ## Remarks
26
-
27
- An effect is a reactive computation that runs immediately and re-runs whenever its tracked
28
- dependencies change. Use effects for side effects like logging, DOM updates, network requests,
29
- or any operation that should respond to reactive state changes.
30
-
31
- The effect executes immediately upon creation and provides a tracking context (`t`) that you
32
- use to explicitly mark dependencies via `observable.get(t)`. Use `observable.pick()` for
33
- reads that shouldn't trigger re-runs.
34
-
35
- ## Example
36
-
37
- ```typescript
38
- const $count = state(0);
39
-
40
- const fx = effect((t) => {
41
- console.log('Count is:', $count.get(t));
42
- });
43
-
44
- $count.set(1); // Logs: "Count is: 1"
45
- $count.set(2); // Logs: "Count is: 2"
46
-
47
- // Clean up when done
48
- fx.dispose();
49
- ```