@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
@@ -0,0 +1,25 @@
1
+ import { FlowObservable } from '../../../api/base';
2
+ /**
3
+ * Manual trigger that notifies subscribers without carrying data.
4
+ *
5
+ * Unlike reactive state or derivations, signals don't hold values. They serve as event emitters
6
+ * that notify dependents when explicitly triggered. Use signals for side effects that should run
7
+ * in response to manual actions rather than data changes.
8
+ *
9
+ * @public
10
+ */
11
+ export interface FlowSignal extends FlowObservable<void> {
12
+ }
13
+ /**
14
+ * Creates a signal that can be manually triggered to notify dependents.
15
+ *
16
+ * Signals act as event emitters in the reactive graph. Call `trigger()` to notify all subscribers
17
+ * and reactive computations that depend on the signal. Unlike state or derivations, signals don't
18
+ * carry data values - they simply represent that an event occurred.
19
+ *
20
+ * @returns A FlowSignal that can be triggered manually and subscribed to
21
+ *
22
+ * @public
23
+ */
24
+ export declare function signal(): FlowSignal;
25
+ //# sourceMappingURL=flowSignal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flowSignal.d.ts","sourceRoot":"","sources":["../../../../src/api/nodes/flowSignal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAGjD;;;;;;;;GAQG;AACH,MAAM,WAAW,UAAW,SAAQ,cAAc,CAAC,IAAI,CAAC;CAAG;AAE3D;;;;;;;;;;GAUG;AACH,wBAAgB,MAAM,IAAI,UAAU,CAEnC"}
@@ -0,0 +1,35 @@
1
+ import { FlowObservable, FlowTracker } from '../../../api/base';
2
+ /**
3
+ * Base interface for reactive values that can be read synchronously or asynchronously.
4
+ *
5
+ * FlowValue extends FlowObservable with methods to access the current value. Use `get()` to read
6
+ * the value reactively (establishing a dependency), or `pick()` to read it non-reactively. All
7
+ * value-based primitives (state, derivation, constant, and their async variants) implement this
8
+ * interface, providing a consistent API for value access across the reactive system.
9
+ *
10
+ * @public
11
+ */
12
+ export interface FlowValue<T> extends FlowObservable<T> {
13
+ /**
14
+ * Gets the current value and establishes a reactive dependency.
15
+ *
16
+ * When called from within a reactive computation, this method registers the value as a dependency,
17
+ * ensuring the computation re-executes when the value changes. The value is computed on first access
18
+ * (if lazy) and then cached. For async values, throws PendingError while the value is resolving.
19
+ *
20
+ * @param tracker - Tracker that records this value as a dependency
21
+ * @returns The current value
22
+ */
23
+ get(tracker: FlowTracker): T;
24
+ /**
25
+ * Asynchronously gets the current value without establishing a reactive dependency.
26
+ *
27
+ * This method reads the value non-reactively, meaning it won't trigger re-execution of the calling
28
+ * computation when the value changes. The value is computed on first access (if lazy) and then cached.
29
+ * For async values, the promise resolves once the value is available.
30
+ *
31
+ * @returns Promise that resolves with the current value
32
+ */
33
+ pick(): Promise<T>;
34
+ }
35
+ //# sourceMappingURL=flowValue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flowValue.d.ts","sourceRoot":"","sources":["../../../../src/api/nodes/flowValue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9D;;;;;;;;;GASG;AACH,MAAM,WAAW,SAAS,CAAC,CAAC,CAAE,SAAQ,cAAc,CAAC,CAAC,CAAC;IACnD;;;;;;;;;OASG;IACH,GAAG,CAAC,OAAO,EAAE,WAAW,GAAG,CAAC,CAAC;IAE7B;;;;;;;;OAQG;IACH,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;CACtB"}
@@ -0,0 +1,8 @@
1
+ export * from './async';
2
+ export * from './collections';
3
+ export * from './flowEffect';
4
+ export * from './flowSignal';
5
+ export * from './flowValue';
6
+ export * from './sync';
7
+ export * from './utils';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/api/nodes/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { FlowValue } from '../flowValue';
2
+ import { NotPromise } from '../utils';
3
+ /** Function that initializes a value. */
4
+ export type InitFunction<T> = () => NotPromise<T>;
5
+ /**
6
+ * Read-only reactive value that computes once on initialization and never changes.
7
+ *
8
+ * Constants provide lazy initialization - the value isn't computed until first accessed via `get()` or `pick()`.
9
+ * Once computed, the value is cached forever. Use constants for expensive computations that only need to run once,
10
+ * such as loading configuration, computing static lookups, or initializing resources.
11
+ *
12
+ * @public
13
+ */
14
+ export interface FlowConstant<T> extends FlowValue<T> {
15
+ }
16
+ /**
17
+ * Creates a constant reactive value that initializes lazily and never recomputes.
18
+ *
19
+ * The initializer function runs once on first access, and the result is cached permanently.
20
+ * Unlike state or derivations, constants never react to changes - they represent immutable values
21
+ * in the reactive graph. Useful for expensive one-time computations or static configuration.
22
+ *
23
+ * @param initializer - Function that computes the constant value on first access
24
+ * @returns A FlowConstant that provides read-only access to the cached value
25
+ *
26
+ * @public
27
+ */
28
+ export declare function constant<T>(initializer: InitFunction<T>): FlowConstant<T>;
29
+ //# sourceMappingURL=flowConstant.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flowConstant.d.ts","sourceRoot":"","sources":["../../../../../src/api/nodes/sync/flowConstant.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,yCAAyC;AACzC,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,MAAM,UAAU,CAAC,CAAC,CAAC,CAAC;AAElD;;;;;;;;GAQG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC,CAAE,SAAQ,SAAS,CAAC,CAAC,CAAC;CAAG;AAExD;;;;;;;;;;;GAWG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAEzE"}
@@ -0,0 +1,36 @@
1
+ import { FlowTracker } from '../../base';
2
+ import { FlowValue } from '../flowValue';
3
+ import { NotPromise } from '../utils';
4
+ /** Function that derives a value from dependencies and optionally the previous value. */
5
+ export type DerivationFunction<T> = (tracker: FlowTracker, previous?: NotPromise<T> | undefined) => NotPromise<T>;
6
+ /**
7
+ * Read-only reactive value that recomputes automatically when dependencies change.
8
+ *
9
+ * Derivations track reactive values accessed during computation and automatically recompute when any
10
+ * tracked dependency changes. The computed value is cached until dependencies change, avoiding unnecessary
11
+ * recomputations. Use derivations for values derived from other reactive state, such as filtered lists,
12
+ * computed properties, or aggregated data.
13
+ *
14
+ * @public
15
+ */
16
+ export interface FlowDerivation<T> extends FlowValue<T> {
17
+ /**
18
+ * Forces the derivation to recompute even if dependencies haven't changed.
19
+ */
20
+ refresh(): void;
21
+ }
22
+ /**
23
+ * Creates a derived reactive value that automatically recomputes when dependencies change.
24
+ *
25
+ * The compute function runs when any tracked dependency changes, and the result is cached until the next change.
26
+ * Access reactive values within the compute function to establish dependencies automatically. The derivation
27
+ * computes lazily on first access and then reactively thereafter. Use for derived data that should stay
28
+ * synchronized with source state.
29
+ *
30
+ * @param compute - Function that accesses dependencies and computes the derived value
31
+ * @returns A FlowDerivation that provides read-only access to the computed value
32
+ *
33
+ * @public
34
+ */
35
+ export declare function derivation<T>(compute: DerivationFunction<T>): FlowDerivation<T>;
36
+ //# sourceMappingURL=flowDerivation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flowDerivation.d.ts","sourceRoot":"","sources":["../../../../../src/api/nodes/sync/flowDerivation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,yFAAyF;AACzF,MAAM,MAAM,kBAAkB,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC;AAElH;;;;;;;;;GASG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC,CAAE,SAAQ,SAAS,CAAC,CAAC,CAAC;IACnD;;OAEG;IACH,OAAO,IAAI,IAAI,CAAC;CACnB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAE/E"}
@@ -0,0 +1,39 @@
1
+ import { FlowValue } from '../flowValue';
2
+ import { NotPromise } from '../utils';
3
+ import { InitFunction } from './flowConstant';
4
+ /** Function that updates a value based on the previous value. */
5
+ export type UpdateFunction<T> = (previous: NotPromise<T> | undefined) => NotPromise<T>;
6
+ /**
7
+ * Writable reactive value that can be updated manually and notifies dependents on changes.
8
+ *
9
+ * State is the simplest writable reactive primitive. Unlike derivations, it has no dependencies and never
10
+ * recomputes automatically - changes only occur when you explicitly call `set()`. Use state for user input,
11
+ * application state, or any data that changes imperatively. Changes propagate automatically to all dependents.
12
+ *
13
+ * @public
14
+ */
15
+ export interface FlowState<T> extends FlowValue<T> {
16
+ /**
17
+ * Updates the state with a new value or via an updater function.
18
+ * Notifies all dependents after the update.
19
+ *
20
+ * @param value - New value to set, or function that receives current value and returns new value
21
+ */
22
+ set(value: NotPromise<T>): void;
23
+ set(updater: UpdateFunction<T>): void;
24
+ }
25
+ /**
26
+ * Creates a mutable reactive state that can be read and updated imperatively.
27
+ *
28
+ * State can be initialized with a direct value or a lazy initializer function. Changes propagate
29
+ * automatically to all reactive computations that depend on this state. Use state for data that
30
+ * changes through user actions, external events, or application logic rather than derived computations.
31
+ *
32
+ * @param value - Initial value for the state, or lazy initializer function
33
+ * @returns A FlowState that can be read and modified
34
+ *
35
+ * @public
36
+ */
37
+ export declare function state<T>(value: NotPromise<T>): FlowState<T>;
38
+ export declare function state<T>(initializer: InitFunction<T>): FlowState<T>;
39
+ //# sourceMappingURL=flowState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flowState.d.ts","sourceRoot":"","sources":["../../../../../src/api/nodes/sync/flowState.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,iEAAiE;AACjE,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC;AAEvF;;;;;;;;GAQG;AACH,MAAM,WAAW,SAAS,CAAC,CAAC,CAAE,SAAQ,SAAS,CAAC,CAAC,CAAC;IAC9C;;;;;OAKG;IACH,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAChC,GAAG,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;CACzC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AAC7D,wBAAgB,KAAK,CAAC,CAAC,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { DerivationFunction, FlowDerivation } from './flowDerivation';
2
+ import { FlowState } from './flowState';
3
+ /**
4
+ * Writable reactive value that recomputes automatically when dependencies change, but can be manually overridden.
5
+ *
6
+ * Writable derivations combine reactive computation with manual control. They track dependencies and recompute
7
+ * like regular derivations, but you can also call `set()` to override the computed value temporarily. Use this
8
+ * for computed values that users can edit, such as formatted fields, calculated totals that can be adjusted,
9
+ * or any value that is usually derived but sometimes needs manual correction.
10
+ *
11
+ * @public
12
+ */
13
+ export interface FlowWritableDerivation<T> extends FlowState<T>, FlowDerivation<T> {
14
+ }
15
+ /**
16
+ * Creates a derived value that recomputes automatically but can also be manually overridden.
17
+ *
18
+ * The compute function tracks dependencies and recomputes when they change, just like a regular derivation.
19
+ * However, you can also call `set()` to override the computed value. Use this for values that are normally
20
+ * derived but need occasional manual adjustments, such as editable calculated fields or user-correctable totals.
21
+ *
22
+ * @param compute - Function that accesses dependencies and computes the derived value
23
+ * @returns A FlowWritableDerivation that provides both reactive computation and manual control
24
+ *
25
+ * @public
26
+ */
27
+ export declare function writableDerivation<T>(compute: DerivationFunction<T>): FlowWritableDerivation<T>;
28
+ //# sourceMappingURL=flowWritableDerivation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flowWritableDerivation.d.ts","sourceRoot":"","sources":["../../../../../src/api/nodes/sync/flowWritableDerivation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C;;;;;;;;;GASG;AACH,MAAM,WAAW,sBAAsB,CAAC,CAAC,CAAE,SAAQ,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC;CAAG;AAErF;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,sBAAsB,CAAC,CAAC,CAAC,CAE/F"}
@@ -1,6 +1,5 @@
1
1
  export * from './flowConstant';
2
2
  export * from './flowDerivation';
3
- export * from './flowNode';
4
- export * from './flowReadonly';
5
3
  export * from './flowState';
4
+ export * from './flowWritableDerivation';
6
5
  //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/api/nodes/sync/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,0BAA0B,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Type that excludes Promise values from a type union.
3
+ *
4
+ * This utility type ensures that synchronous reactive primitives (like `state`, `constant`, `derivation`)
5
+ * only accept non-Promise values. Use this to prevent accidental mixing of sync and async values, which
6
+ * would cause runtime errors. For async values, use the async variants (like `stateAsync`, `constantAsync`).
7
+ *
8
+ * @public
9
+ */
10
+ export type NotPromise<T> = T extends Promise<unknown> ? never : T;
11
+ /**
12
+ * Type that restricts mutation methods to create read-only versions of reactive primitives.
13
+ *
14
+ * This utility type removes mutation methods (`set`, `refresh`, `trigger`) from a reactive primitive,
15
+ * creating a read-only interface. Use this when you want to expose reactive values to consumers who
16
+ * should observe but not modify them, such as passing state to child components or external modules
17
+ * while maintaining encapsulation of write access.
18
+ *
19
+ * @public
20
+ */
21
+ export type FlowReadonly<T> = Omit<T, "set" | "refresh" | "trigger">;
22
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/api/nodes/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,CAAC,SAAS,OAAO,CAAC,OAAO,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;AAEnE;;;;;;;;;GASG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,SAAS,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { FlowDisposable } from '../../api/base/flowDisposable';
2
+ /**
3
+ * Base implementation of the disposable pattern for reactive primitives.
4
+ * Throws an error if disposed multiple times.
5
+ */
6
+ export declare class Disposable implements FlowDisposable {
7
+ protected _disposed: boolean;
8
+ get disposed(): boolean;
9
+ dispose(): void;
10
+ }
11
+ //# sourceMappingURL=disposable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"disposable.d.ts","sourceRoot":"","sources":["../../../src/base/disposable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAEhE;;;GAGG;AACH,qBAAa,UAAW,YAAW,cAAc;IAC7C,SAAS,CAAC,SAAS,UAAS;IAE5B,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,OAAO,IAAI,IAAI;CAIlB"}
@@ -0,0 +1,14 @@
1
+ import { IObserver } from './observer';
2
+ /**
3
+ * Global scheduler that batches and executes reactive computations asynchronously.
4
+ */
5
+ export declare class ExecutionStack {
6
+ private static readonly _pendingQueue;
7
+ private static readonly _effectQueue;
8
+ private static _executionScheduled?;
9
+ static pushPending(node: IObserver): void;
10
+ static pushEffect(effect: IObserver): void;
11
+ private static _scheduleExecution;
12
+ private static _execute;
13
+ }
14
+ //# sourceMappingURL=executionStack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executionStack.d.ts","sourceRoot":"","sources":["../../../src/base/executionStack.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C;;GAEG;AACH,qBAAa,cAAc;IACvB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAmB;IACxD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAmB;IACvD,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAgB;IAEnD,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IAKzC,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI;IAK1C,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAWjC,OAAO,CAAC,MAAM,CAAC,QAAQ;CAU1B"}
@@ -0,0 +1,6 @@
1
+ export * from './disposable';
2
+ export * from './executionStack';
3
+ export * from './node';
4
+ export * from './observable';
5
+ export * from './observer';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/base/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { FlowEffect, FlowOnDataListener, FlowOnErrorListener, FlowOnPendingListener, FlowTracker } from '../../api';
2
+ import { Disposable } from './disposable';
3
+ import { IObservable, ObservableStatus } from './observable';
4
+ import { IObserver } from './observer';
5
+ /**
6
+ * Base implementation for reactive nodes that propagate changes through the dependency graph.
7
+ */
8
+ export declare abstract class Node<T> extends Disposable implements IObservable<T>, IObserver {
9
+ private _dependencies;
10
+ private _dependents;
11
+ protected _status: ObservableStatus;
12
+ get status(): ObservableStatus;
13
+ set status(status: ObservableStatus);
14
+ registerDependency(dependency: IObservable<unknown>): void;
15
+ unregisterDependency(dependency: IObservable<unknown>): void;
16
+ clearDependencies(): void;
17
+ registerDependent(dependent: IObserver): void;
18
+ unregisterDependent(dependent: IObserver): void;
19
+ notifyDependents(): void;
20
+ watch(tracker: FlowTracker): void;
21
+ trigger(): void;
22
+ notify(): void;
23
+ dispose(): void;
24
+ abstract execute(): void;
25
+ abstract subscribe(onValue: FlowOnDataListener<T>, onError?: FlowOnErrorListener, onPending?: FlowOnPendingListener): FlowEffect;
26
+ }
27
+ //# sourceMappingURL=node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../src/base/node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACrH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C;;GAEG;AACH,8BAAsB,IAAI,CAAC,CAAC,CAAE,SAAQ,UAAW,YAAW,WAAW,CAAC,CAAC,CAAC,EAAE,SAAS;IACjF,OAAO,CAAC,aAAa,CAAmC;IACxD,OAAO,CAAC,WAAW,CAAwB;IAC3C,SAAS,CAAC,OAAO,EAAE,gBAAgB,CAAc;IAEjD,IAAI,MAAM,IAAI,gBAAgB,CAG7B;IAED,IAAI,MAAM,CAAC,MAAM,EAAE,gBAAgB,EAGlC;IAED,kBAAkB,CAAC,UAAU,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI;IAM1D,oBAAoB,CAAC,UAAU,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI;IAM5D,iBAAiB,IAAI,IAAI;IAQzB,iBAAiB,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;IAK7C,mBAAmB,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;IAK/C,gBAAgB,IAAI,IAAI;IAOxB,KAAK,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAKjC,OAAO,IAAI,IAAI;IAKf,MAAM,IAAI,IAAI;IAOL,OAAO,IAAI,IAAI;IAaxB,QAAQ,CAAC,OAAO,IAAI,IAAI;IAExB,QAAQ,CAAC,SAAS,CACd,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAC9B,OAAO,CAAC,EAAE,mBAAmB,EAC7B,SAAS,CAAC,EAAE,qBAAqB,GAClC,UAAU;CAChB"}
@@ -0,0 +1,37 @@
1
+ import { FlowEffect, FlowTracker } from '../../api';
2
+ import { FlowObservable } from '../../api/base/flowObservable';
3
+ import { FlowOnDataListener, FlowOnErrorListener, FlowOnPendingListener } from '../../api/base/flowSubscribable';
4
+ import { Disposable } from './disposable';
5
+ import { IObserver } from './observer';
6
+ /**
7
+ * Status of an observable: resolved (has value), pending (async in progress), error (failed), or dirty (needs recomputation).
8
+ */
9
+ export type ObservableStatus = "resolved" | "pending" | "error" | "dirty";
10
+ /**
11
+ * Internal interface extending FlowObservable with dependency graph management methods.
12
+ */
13
+ export interface IObservable<T> extends FlowObservable<T> {
14
+ get status(): ObservableStatus;
15
+ set status(status: ObservableStatus);
16
+ registerDependent(dependent: IObserver): void;
17
+ unregisterDependent(dependent: IObserver): void;
18
+ notifyDependents(): void;
19
+ subscribe(onValue: FlowOnDataListener<T>, onError?: FlowOnErrorListener, onPending?: FlowOnPendingListener): FlowEffect;
20
+ }
21
+ /**
22
+ * Base implementation managing the dependency graph for reactive observables.
23
+ */
24
+ export declare abstract class Observable<T> extends Disposable implements IObservable<T> {
25
+ private _dependents;
26
+ protected _status: ObservableStatus;
27
+ get status(): ObservableStatus;
28
+ set status(status: ObservableStatus);
29
+ registerDependent(dependent: IObserver): void;
30
+ unregisterDependent(dependent: IObserver): void;
31
+ notifyDependents(): void;
32
+ watch(tracker: FlowTracker): void;
33
+ trigger(): void;
34
+ dispose(): void;
35
+ abstract subscribe(onValue: FlowOnDataListener<T>, onError?: FlowOnErrorListener, onPending?: FlowOnPendingListener): FlowEffect;
36
+ }
37
+ //# sourceMappingURL=observable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observable.d.ts","sourceRoot":"","sources":["../../../src/base/observable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAClH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;AAE1E;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,CAAE,SAAQ,cAAc,CAAC,CAAC,CAAC;IACrD,IAAI,MAAM,IAAI,gBAAgB,CAAC;IAC/B,IAAI,MAAM,CAAC,MAAM,EAAE,gBAAgB,EAAE;IACrC,iBAAiB,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;IAC9C,mBAAmB,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;IAChD,gBAAgB,IAAI,IAAI,CAAC;IACzB,SAAS,CACL,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAC9B,OAAO,CAAC,EAAE,mBAAmB,EAC7B,SAAS,CAAC,EAAE,qBAAqB,GAClC,UAAU,CAAC;CACjB;AAED;;GAEG;AACH,8BAAsB,UAAU,CAAC,CAAC,CAAE,SAAQ,UAAW,YAAW,WAAW,CAAC,CAAC,CAAC;IAC5E,OAAO,CAAC,WAAW,CAAwB;IAC3C,SAAS,CAAC,OAAO,EAAE,gBAAgB,CAAc;IAEjD,IAAI,MAAM,IAAI,gBAAgB,CAG7B;IAED,IAAI,MAAM,CAAC,MAAM,EAAE,gBAAgB,EAGlC;IAED,iBAAiB,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;IAK7C,mBAAmB,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;IAK/C,gBAAgB,IAAI,IAAI;IAOxB,KAAK,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAKjC,OAAO,IAAI,IAAI;IAKN,OAAO,IAAI,IAAI;IAUxB,QAAQ,CAAC,SAAS,CACd,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAC9B,OAAO,CAAC,EAAE,mBAAmB,EAC7B,SAAS,CAAC,EAAE,qBAAqB,GAClC,UAAU;CAChB"}
@@ -0,0 +1,25 @@
1
+ import { Disposable } from './disposable';
2
+ import { IObservable } from './observable';
3
+ /**
4
+ * Internal interface for reactive computations that track dependencies and respond to changes.
5
+ */
6
+ export interface IObserver {
7
+ registerDependency(dependency: IObservable<unknown>): void;
8
+ unregisterDependency(dependency: IObservable<unknown>): void;
9
+ clearDependencies(): void;
10
+ notify(): void;
11
+ execute(): void;
12
+ }
13
+ /**
14
+ * Base implementation managing dependency tracking for reactive observers.
15
+ */
16
+ export declare abstract class Observer extends Disposable implements IObserver {
17
+ private _dependencies;
18
+ registerDependency(dependency: IObservable<unknown>): void;
19
+ unregisterDependency(dependency: IObservable<unknown>): void;
20
+ clearDependencies(): void;
21
+ dispose(): void;
22
+ abstract notify(): void;
23
+ abstract execute(): void;
24
+ }
25
+ //# sourceMappingURL=observer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observer.d.ts","sourceRoot":"","sources":["../../../src/base/observer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD;;GAEG;AACH,MAAM,WAAW,SAAS;IACtB,kBAAkB,CAAC,UAAU,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IAC3D,oBAAoB,CAAC,UAAU,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IAC7D,iBAAiB,IAAI,IAAI,CAAC;IAC1B,MAAM,IAAI,IAAI,CAAC;IACf,OAAO,IAAI,IAAI,CAAC;CACnB;AAED;;GAEG;AACH,8BAAsB,QAAS,SAAQ,UAAW,YAAW,SAAS;IAClE,OAAO,CAAC,aAAa,CAAmC;IAExD,kBAAkB,CAAC,UAAU,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI;IAM1D,oBAAoB,CAAC,UAAU,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI;IAM5D,iBAAiB,IAAI,IAAI;IAQhB,OAAO,IAAI,IAAI;IAQxB,QAAQ,CAAC,MAAM,IAAI,IAAI;IACvB,QAAQ,CAAC,OAAO,IAAI,IAAI;CAC3B"}
@@ -0,0 +1,2 @@
1
+ export * from './solid';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/converters/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC"}
@@ -0,0 +1,46 @@
1
+ import { Resource } from 'solid-js';
2
+ import { FlowObservable, FlowTracker, NotPromise } from '../../api';
3
+ /**
4
+ * Converts a PicoFlow observable or getter function into a SolidJS resource.
5
+ *
6
+ * @param flow - The FlowObservable or getter function to convert.
7
+ * @returns A SolidJS Resource that wraps the value or computation.
8
+ *
9
+ * @remarks
10
+ * This function bridges PicoFlow's reactive system with SolidJS, allowing you to use
11
+ * PicoFlow primitives and computations within Solid components. All conversions return a
12
+ * SolidJS Resource, which can handle both synchronous and asynchronous values seamlessly.
13
+ *
14
+ * The conversion works with:
15
+ * - **FlowObservable**: Any PicoFlow reactive primitive (e.g., from `state()`, `derivation()`, `stateAsync()`, `derivationAsync()`)
16
+ * - **Getter functions**: Computation functions that use a FlowTracker to access reactive values
17
+ *
18
+ * The created Resource automatically subscribes to the PicoFlow observables and updates
19
+ * when their values change. The subscription is properly cleaned up when the Solid
20
+ * component unmounts.
21
+ *
22
+ * @example
23
+ * ```typescript
24
+ * import { from } from 'picoflow/solid';
25
+ * import { state, derivation } from 'picoflow';
26
+ *
27
+ * // Convert a PicoFlow state to a Solid resource
28
+ * const $count = state(0);
29
+ * const solidCount = from($count);
30
+ *
31
+ * // Use in a Solid component
32
+ * function Counter() {
33
+ * return <div>Count: {solidCount()}</div>;
34
+ * }
35
+ *
36
+ * // Or convert a computation function
37
+ * const solidDerived = from((t) => {
38
+ * return $count.get(t) * 2;
39
+ * });
40
+ * ```
41
+ *
42
+ * @public
43
+ */
44
+ export declare function from<T>(flow: FlowObservable<T>): Resource<T>;
45
+ export declare function from<T>(flow: (t: FlowTracker) => NotPromise<T>): Resource<T>;
46
+ //# sourceMappingURL=solid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solid.d.ts","sourceRoot":"","sources":["../../../src/converters/solid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoD,KAAK,QAAQ,EAAwB,MAAM,UAAU,CAAC;AACjH,OAAO,EAAmB,KAAK,cAAc,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EAAa,MAAM,OAAO,CAAC;AAsD3G;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC9D,wBAAgB,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,WAAW,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC"}
@@ -1,64 +1,3 @@
1
- /**
2
- * @packageDocumentation
3
- *
4
- * # PicoFlow
5
- *
6
- * PicoFlow is a lightweight reactive dataflow library that provides a comprehensive set of
7
- * reactive primitives for building reactive applications with explicit dependency tracking.
8
- *
9
- * ## Core Concepts
10
- *
11
- * **Reactive Primitives:**
12
- * - {@link FlowSignal}: Event-like notifications without values
13
- * - {@link FlowState}: Mutable reactive values
14
- * - {@link FlowConstant}: Immutable reactive values (computed once)
15
- * - {@link FlowDerivation}: Computed values that track dependencies
16
- * - {@link FlowEffect}: Side effects that run when dependencies change
17
- *
18
- * **Advanced Primitives:**
19
- * - {@link FlowArray}: Reactive arrays with mutation tracking
20
- * - {@link FlowMap}: Reactive maps with operation tracking
21
- * - {@link FlowResource}: Async data fetching returning `T | undefined`
22
- * - {@link FlowResourceAsync}: Async data fetching returning `Promise<T>`
23
- * - {@link FlowStream}: Event streams from external sources
24
- * - {@link FlowStreamAsync}: Async event streams returning Promises
25
- *
26
- * **Tracking Context:**
27
- * - {@link TrackingContext}: The core mechanism for explicit dependency tracking
28
- * - Use `observable.get(t)` to read with tracking
29
- * - Use `observable.pick()` to read without tracking
30
- * - Use `signal.watch(t)` to track signals without values
31
- *
32
- * ## Key Features
33
- *
34
- * - **Explicit tracking**: Full control over what triggers re-execution via TrackingContext
35
- * - **Lazy evaluation**: Derivations compute only when accessed
36
- * - **Fine-grained reactivity**: Track specific operations on collections
37
- * - **Resource management**: Automatic cleanup with dispose patterns
38
- * - **SolidJS integration**: Seamless bridge to SolidJS primitives
39
- *
40
- * ## Basic Usage
41
- *
42
- * ```typescript
43
- * import { state, effect, derivation } from 'picoflow';
44
- *
45
- * // Create reactive state
46
- * const $count = state(0);
47
- *
48
- * // Create derived value
49
- * const $double = derivation((t) => $count.get(t) * 2);
50
- *
51
- * // Create effect
52
- * effect((t) => {
53
- * console.log('Count:', $count.get(t), 'Double:', $double.get(t));
54
- * });
55
- *
56
- * // Update state
57
- * $count.set(1); // Logs: "Count: 1 Double: 2"
58
- * ```
59
- *
60
- * @see {@link https://github.com/yourusername/picoflow | GitHub Repository}
61
- */
62
- export * from './flow';
63
- export * from './solid';
1
+ export * from './api';
2
+ export * from './converters';
64
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AAEH,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,cAAc,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=arrayNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arrayNode.d.ts","sourceRoot":"","sources":["../../../src/nodes/arrayNode.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=effectNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effectNode.d.ts","sourceRoot":"","sources":["../../../src/nodes/effectNode.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ export * from '../base/executionStack';
2
+ export * from './arrayNode';
3
+ export * from './effectNode';
4
+ export * from './mapNode';
5
+ export * from './signalNode';
6
+ export * from './valueAsyncNode';
7
+ export * from './valueNode';
8
+ export * from './valueSyncNode';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/nodes/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=mapNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapNode.d.ts","sourceRoot":"","sources":["../../../src/nodes/mapNode.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=signalNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signalNode.d.ts","sourceRoot":"","sources":["../../../src/nodes/signalNode.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=valueAsyncNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"valueAsyncNode.d.ts","sourceRoot":"","sources":["../../../src/nodes/valueAsyncNode.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=valueNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"valueNode.d.ts","sourceRoot":"","sources":["../../../src/nodes/valueNode.ts"],"names":[],"mappings":""}