@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,181 +0,0 @@
1
- import { ResourceFetcher } from 'solid-js';
2
- /**
3
- * A getter function or value for Solid state/derivation.
4
- *
5
- * @typeParam T - The value type.
6
- * @public
7
- */
8
- export type SolidGetter<T> = ((previous: T) => T) | T;
9
- /**
10
- * Interface for a Solid-style observable value.
11
- *
12
- * @typeParam T - The value type.
13
- * @public
14
- */
15
- export interface SolidObservable<T> {
16
- /**
17
- * Returns the current value.
18
- */
19
- get: () => T;
20
- }
21
- /**
22
- * Solid-style state container wrapping SolidJS's createSignal, providing a writable reactive signal.
23
- *
24
- * @remarks
25
- * SolidState is a thin wrapper around SolidJS's `createSignal` that provides a class-based
26
- * interface consistent with PicoFlow's API style. It's used internally by PicoFlow's Solid
27
- * integration but can also be used directly in Solid components.
28
- *
29
- * Unlike PicoFlow's {@link FlowState} which uses explicit tracking context, SolidState
30
- * relies on SolidJS's automatic dependency tracking within reactive contexts like
31
- * `createEffect` or component render functions.
32
- *
33
- * @example
34
- * ```typescript
35
- * const count = new SolidState(0);
36
- *
37
- * // In a Solid component
38
- * function Counter() {
39
- * return <div>{count.get()}</div>; // Automatically reactive
40
- * }
41
- *
42
- * // Update the value
43
- * count.set(1);
44
- * count.set(prev => prev + 1);
45
- * ```
46
- *
47
- * @typeParam T - The value type.
48
- * @public
49
- */
50
- export declare class SolidState<T> implements SolidObservable<T> {
51
- /**
52
- * Returns the current value.
53
- */
54
- readonly get: () => T;
55
- /**
56
- * Sets the value or updates it using a getter function.
57
- */
58
- readonly set: (param: SolidGetter<T>) => void;
59
- /**
60
- * Creates a new SolidState with the given initial value.
61
- * @param initialValue - The initial value.
62
- */
63
- constructor(initialValue: T);
64
- }
65
- /**
66
- * Solid-style derivation wrapping SolidJS's createMemo, providing a computed reactive value.
67
- *
68
- * @remarks
69
- * SolidDerivation is a thin wrapper around SolidJS's `createMemo` that provides a class-based
70
- * interface consistent with PicoFlow's API style. It creates a memoized computation that
71
- * automatically tracks its dependencies and recomputes only when they change.
72
- *
73
- * Unlike PicoFlow's {@link FlowDerivation} which uses explicit tracking context, SolidDerivation
74
- * relies on SolidJS's automatic dependency tracking. The computation function runs within
75
- * SolidJS's reactive scope and automatically subscribes to any signals accessed during execution.
76
- *
77
- * **Memoization:**
78
- * The computed value is cached and only recomputed when tracked dependencies change,
79
- * providing efficient derived state management.
80
- *
81
- * @example
82
- * ```typescript
83
- * const firstName = new SolidState('John');
84
- * const lastName = new SolidState('Doe');
85
- *
86
- * const fullName = new SolidDerivation(() => {
87
- * return `${firstName.get()} ${lastName.get()}`;
88
- * });
89
- *
90
- * // In a Solid component
91
- * function Display() {
92
- * return <div>{fullName.get()}</div>; // Automatically updates
93
- * }
94
- * ```
95
- *
96
- * @typeParam T - The value type.
97
- * @public
98
- */
99
- export declare class SolidDerivation<T> implements SolidObservable<T> {
100
- /**
101
- * Returns the current derived value.
102
- */
103
- readonly get: () => T;
104
- /**
105
- * Creates a new SolidDerivation from a getter function or value.
106
- * @param calculator - The getter function or value.
107
- */
108
- constructor(calculator: SolidGetter<T>);
109
- }
110
- /**
111
- * Solid-style resource wrapping SolidJS's createResource, providing async data loading with reactive state.
112
- *
113
- * @remarks
114
- * SolidResource is a thin wrapper around SolidJS's `createResource` that provides a class-based
115
- * interface consistent with PicoFlow's API style. It manages asynchronous data fetching with
116
- * built-in loading states, error handling, and automatic reactivity.
117
- *
118
- * Unlike PicoFlow's {@link FlowResource} or {@link FlowResourceAsync}, SolidResource integrates
119
- * directly with SolidJS's Suspense and ErrorBoundary mechanisms, providing a first-class async
120
- * data loading experience in Solid applications.
121
- *
122
- * **Resource States:**
123
- * - `unresolved`: Initial state before first fetch
124
- * - `pending`: Fetch is in progress
125
- * - `ready`: Data has been successfully loaded
126
- * - `refreshing`: Refetching while previous data is still available
127
- * - `errored`: Fetch failed with an error
128
- *
129
- * **Properties:**
130
- * - `get()`: Returns the current value (or undefined if not ready)
131
- * - `state()`: Returns the current loading state
132
- * - `latest()`: Returns the most recent successfully loaded value
133
- * - `refetch()`: Triggers a new fetch operation
134
- *
135
- * @example
136
- * ```typescript
137
- * const user = new SolidResource(async () => {
138
- * const res = await fetch('/api/user');
139
- * return res.json();
140
- * });
141
- *
142
- * // In a Solid component
143
- * function UserProfile() {
144
- * return (
145
- * <div>
146
- * {user.state() === 'pending' && <p>Loading...</p>}
147
- * {user.state() === 'ready' && <p>Name: {user.get()?.name}</p>}
148
- * <button onClick={() => user.refetch()}>Refresh</button>
149
- * </div>
150
- * );
151
- * }
152
- * ```
153
- *
154
- * @typeParam T - The value type.
155
- * @public
156
- */
157
- export declare class SolidResource<T> implements SolidObservable<T | undefined> {
158
- /**
159
- * Returns the current value (or undefined if not yet loaded).
160
- */
161
- readonly get: () => T | undefined;
162
- /**
163
- * Returns the current resource state.
164
- */
165
- readonly state: () => "unresolved" | "pending" | "errored" | "ready" | "refreshing";
166
- /**
167
- * Returns the latest successfully loaded value (or undefined).
168
- */
169
- readonly latest: () => T | undefined;
170
- /**
171
- * Triggers a refetch of the resource.
172
- */
173
- readonly refetch: () => void;
174
- readonly set: (param: SolidGetter<T>) => void;
175
- /**
176
- * Creates a new SolidResource from a fetcher function.
177
- * @param fetcher - The async fetcher function.
178
- */
179
- constructor(fetcher: ResourceFetcher<true, T, unknown>);
180
- }
181
- //# sourceMappingURL=primitives.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../../../src/solid/primitives.ts"],"names":[],"mappings":"AAAA,OAAO,EAIN,KAAK,eAAe,EACpB,MAAM,UAAU,CAAC;AAElB;;;;;GAKG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;AAEtD;;;;;GAKG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC;IACjC;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC,CAAC;CACb;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qBAAa,UAAU,CAAC,CAAC,CAAE,YAAW,eAAe,CAAC,CAAC,CAAC;IACvD;;OAEG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACtB;;OAEG;IACH,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAE9C;;;OAGG;gBACS,YAAY,EAAE,CAAC;CAK3B;AAGD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,qBAAa,eAAe,CAAC,CAAC,CAAE,YAAW,eAAe,CAAC,CAAC,CAAC;IAC5D;;OAEG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAEtB;;;OAGG;gBACS,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC;CAItC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,qBAAa,aAAa,CAAC,CAAC,CAAE,YAAW,eAAe,CAAC,CAAC,GAAG,SAAS,CAAC;IACtE;;OAEG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IAClC;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,MACb,YAAY,GACZ,SAAS,GACT,SAAS,GACT,OAAO,GACP,YAAY,CAAC;IAChB;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IACrC;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;IAE7B,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAE9C;;;OAGG;gBACS,OAAO,EAAE,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC;CAStD"}
@@ -1,489 +0,0 @@
1
- [@ersbeth/picoflow](/api/index.md) / FlowArray
2
-
3
- # Class: FlowArray\<T\>
4
-
5
- Defined in: [advanced/array.ts:46](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/advanced/array.ts#L46)
6
-
7
- Represents a reactive array.
8
-
9
- ## Extends
10
-
11
- - [`FlowObservable`](/api/classes/FlowObservable.md)\<`T`[]\>
12
-
13
- ## Type Parameters
14
-
15
- | Type Parameter |
16
- | ------ |
17
- | `T` |
18
-
19
- ## Constructors
20
-
21
- ### Constructor
22
-
23
- ```ts
24
- new FlowArray<T>(value): FlowArray<T>;
25
- ```
26
-
27
- Defined in: [advanced/array.ts:58](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/advanced/array.ts#L58)
28
-
29
- Creates an instance of FlowArray.
30
-
31
- #### Parameters
32
-
33
- | Parameter | Type | Default value | Description |
34
- | ------ | ------ | ------ | ------ |
35
- | `value` | `T`[] | `[]` | Initial array value. |
36
-
37
- #### Returns
38
-
39
- `FlowArray`\<`T`\>
40
-
41
- #### Overrides
42
-
43
- [`FlowObservable`](/api/classes/FlowObservable.md).[`constructor`](/api/classes/FlowObservable.md#constructor)
44
-
45
- ## Properties
46
-
47
- | Property | Modifier | Type | Description | Defined in |
48
- | ------ | ------ | ------ | ------ | ------ |
49
- | <a id="lastaction"></a> `$lastAction` | `public` | [`FlowState`](/api/classes/FlowState.md)\<[`FlowArrayAction`](/api/type-aliases/FlowArrayAction.md)\<`T`\>\> | Last action performed on the FlowArray. | [advanced/array.ts:51](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/advanced/array.ts#L51) |
50
-
51
- ## Accessors
52
-
53
- ### disposed
54
-
55
- #### Get Signature
56
-
57
- ```ts
58
- get disposed(): boolean;
59
- ```
60
-
61
- Defined in: [basic/signal.ts:97](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/basic/signal.ts#L97)
62
-
63
- Indicates whether the FlowSignal has been disposed.
64
-
65
- ##### Remarks
66
-
67
- Once disposed, the signal should not be used.
68
-
69
- ##### Returns
70
-
71
- `boolean`
72
-
73
- #### Inherited from
74
-
75
- [`FlowObservable`](/api/classes/FlowObservable.md).[`disposed`](/api/classes/FlowObservable.md#disposed)
76
-
77
- ***
78
-
79
- ### length
80
-
81
- #### Get Signature
82
-
83
- ```ts
84
- get length(): number;
85
- ```
86
-
87
- Defined in: [advanced/array.ts:72](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/advanced/array.ts#L72)
88
-
89
- Gets the current length of the array.
90
-
91
- ##### Returns
92
-
93
- `number`
94
-
95
- The length of the array.
96
-
97
- ## Methods
98
-
99
- ### clear()
100
-
101
- ```ts
102
- clear(): void;
103
- ```
104
-
105
- Defined in: [advanced/array.ts:195](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/advanced/array.ts#L195)
106
-
107
- Clears all items from the array.
108
-
109
- #### Returns
110
-
111
- `void`
112
-
113
- ***
114
-
115
- ### dispose()
116
-
117
- ```ts
118
- dispose(options?): void;
119
- ```
120
-
121
- Defined in: [advanced/array.ts:211](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/advanced/array.ts#L211)
122
-
123
- Disposes the FlowArray and its items.
124
-
125
- #### Parameters
126
-
127
- | Parameter | Type | Description |
128
- | ------ | ------ | ------ |
129
- | `options?` | \{ `self`: `boolean`; \} | Disposal options. |
130
- | `options.self?` | `boolean` | - |
131
-
132
- #### Returns
133
-
134
- `void`
135
-
136
- #### Overrides
137
-
138
- [`FlowObservable`](/api/classes/FlowObservable.md).[`dispose`](/api/classes/FlowObservable.md#dispose)
139
-
140
- ***
141
-
142
- ### get()
143
-
144
- ```ts
145
- get(context): T[];
146
- ```
147
-
148
- Defined in: [basic/observable.ts:47](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/basic/observable.ts#L47)
149
-
150
- Gets the current value with optional dependency tracking.
151
-
152
- #### Parameters
153
-
154
- | Parameter | Type | Description |
155
- | ------ | ------ | ------ |
156
- | `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. |
157
-
158
- #### Returns
159
-
160
- `T`[]
161
-
162
- The current value of type T.
163
-
164
- #### Remarks
165
-
166
- Use `get(t)` within effects and derivations to create reactive dependencies.
167
- Use `get(null)` when you need to read a value without tracking (though `pick()` is more idiomatic).
168
-
169
- #### Example
170
-
171
- ```typescript
172
- effect((t) => {
173
- const tracked = $state.get(t); // Dependency registered
174
- const untracked = $other.get(null); // No dependency
175
- });
176
- ```
177
-
178
- #### Inherited from
179
-
180
- [`FlowObservable`](/api/classes/FlowObservable.md).[`get`](/api/classes/FlowObservable.md#get)
181
-
182
- ***
183
-
184
- ### pick()
185
-
186
- ```ts
187
- pick(): T[];
188
- ```
189
-
190
- Defined in: [basic/observable.ts:82](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/basic/observable.ts#L82)
191
-
192
- Gets the current value without any dependency tracking.
193
-
194
- #### Returns
195
-
196
- `T`[]
197
-
198
- The current value of type T.
199
-
200
- #### Remarks
201
-
202
- This method is equivalent to calling `get(null)` but provides a more semantic and readable API.
203
- Use `pick()` when you want to read a snapshot of the current value without creating a reactive
204
- dependency. This is useful for:
205
- - Reading initial values
206
- - Accessing configuration that shouldn't trigger updates
207
- - Mixing tracked and untracked reads in the same effect
208
-
209
- #### Example
210
-
211
- ```typescript
212
- // Read a snapshot outside reactive context
213
- const currentValue = $state.pick();
214
-
215
- // Mix tracked and untracked reads
216
- effect((t) => {
217
- const tracked = $reactive.get(t); // Triggers re-runs
218
- const snapshot = $config.pick(); // Doesn't trigger re-runs
219
- processData(tracked, snapshot);
220
- });
221
- ```
222
-
223
- #### Inherited from
224
-
225
- [`FlowObservable`](/api/classes/FlowObservable.md).[`pick`](/api/classes/FlowObservable.md#pick)
226
-
227
- ***
228
-
229
- ### pop()
230
-
231
- ```ts
232
- pop(): void;
233
- ```
234
-
235
- Defined in: [advanced/array.ts:133](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/advanced/array.ts#L133)
236
-
237
- Removes the last item from the array.
238
-
239
- #### Returns
240
-
241
- `void`
242
-
243
- ***
244
-
245
- ### push()
246
-
247
- ```ts
248
- push(item): void;
249
- ```
250
-
251
- Defined in: [advanced/array.ts:122](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/advanced/array.ts#L122)
252
-
253
- Appends an item to the end of the array.
254
-
255
- #### Parameters
256
-
257
- | Parameter | Type | Description |
258
- | ------ | ------ | ------ |
259
- | `item` | `T` | The item to append. |
260
-
261
- #### Returns
262
-
263
- `void`
264
-
265
- ***
266
-
267
- ### set()
268
-
269
- ```ts
270
- set(items): void;
271
- ```
272
-
273
- Defined in: [advanced/array.ts:91](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/advanced/array.ts#L91)
274
-
275
- Replaces the entire array with new items.
276
-
277
- #### Parameters
278
-
279
- | Parameter | Type | Description |
280
- | ------ | ------ | ------ |
281
- | `items` | `T`[] | The new array of items. |
282
-
283
- #### Returns
284
-
285
- `void`
286
-
287
- ***
288
-
289
- ### setItem()
290
-
291
- ```ts
292
- setItem(index, item): void;
293
- ```
294
-
295
- Defined in: [advanced/array.ts:107](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/advanced/array.ts#L107)
296
-
297
- Replaces an item at a specific index.
298
-
299
- #### Parameters
300
-
301
- | Parameter | Type | Description |
302
- | ------ | ------ | ------ |
303
- | `index` | `number` | The index of the item to replace. |
304
- | `item` | `T` | The new item. |
305
-
306
- #### Returns
307
-
308
- `void`
309
-
310
- ***
311
-
312
- ### shift()
313
-
314
- ```ts
315
- shift(): void;
316
- ```
317
-
318
- Defined in: [advanced/array.ts:159](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/advanced/array.ts#L159)
319
-
320
- Removes the first item from the array.
321
-
322
- #### Returns
323
-
324
- `void`
325
-
326
- ***
327
-
328
- ### splice()
329
-
330
- ```ts
331
- splice(
332
- start,
333
- deleteCount, ...
334
- newItems): void;
335
- ```
336
-
337
- Defined in: [advanced/array.ts:176](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/advanced/array.ts#L176)
338
-
339
- Changes the content of the array.
340
-
341
- #### Parameters
342
-
343
- | Parameter | Type | Description |
344
- | ------ | ------ | ------ |
345
- | `start` | `number` | The starting index. |
346
- | `deleteCount` | `number` | Number of items to remove. |
347
- | ...`newItems` | `T`[] | New items to add. |
348
-
349
- #### Returns
350
-
351
- `void`
352
-
353
- ***
354
-
355
- ### subscribe()
356
-
357
- ```ts
358
- subscribe(listener): () => void;
359
- ```
360
-
361
- Defined in: [basic/observable.ts:103](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/basic/observable.ts#L103)
362
-
363
- Subscribes a listener function to changes of the observable.
364
- The listener is executed immediately with the current value and on subsequent updates.
365
-
366
- #### Parameters
367
-
368
- | Parameter | Type | Description |
369
- | ------ | ------ | ------ |
370
- | `listener` | (`value`) => `void` | A callback function that receives the new value. |
371
-
372
- #### Returns
373
-
374
- A disposer function to cancel the subscription.
375
-
376
- ```ts
377
- (): void;
378
- ```
379
-
380
- ##### Returns
381
-
382
- `void`
383
-
384
- #### Inherited from
385
-
386
- [`FlowObservable`](/api/classes/FlowObservable.md).[`subscribe`](/api/classes/FlowObservable.md#subscribe)
387
-
388
- ***
389
-
390
- ### trigger()
391
-
392
- ```ts
393
- trigger(): void;
394
- ```
395
-
396
- Defined in: [basic/signal.ts:19](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/basic/signal.ts#L19)
397
-
398
- Triggers the FlowSignal.
399
- Notifies all registered listeners and schedules execution of associated effects.
400
-
401
- #### Returns
402
-
403
- `void`
404
-
405
- #### Throws
406
-
407
- If the FlowSignal has already been disposed.
408
-
409
- #### Inherited from
410
-
411
- [`FlowObservable`](/api/classes/FlowObservable.md).[`trigger`](/api/classes/FlowObservable.md#trigger)
412
-
413
- ***
414
-
415
- ### unshift()
416
-
417
- ```ts
418
- unshift(item): void;
419
- ```
420
-
421
- Defined in: [advanced/array.ts:148](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/advanced/array.ts#L148)
422
-
423
- Inserts an item at the beginning of the array.
424
-
425
- #### Parameters
426
-
427
- | Parameter | Type | Description |
428
- | ------ | ------ | ------ |
429
- | `item` | `T` | The item to insert. |
430
-
431
- #### Returns
432
-
433
- `void`
434
-
435
- ***
436
-
437
- ### watch()
438
-
439
- ```ts
440
- watch(context): void;
441
- ```
442
-
443
- Defined in: [basic/signal.ts:57](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/basic/signal.ts#L57)
444
-
445
- Watches the signal, registering it as a dependency in the tracking context.
446
-
447
- #### Parameters
448
-
449
- | Parameter | Type | Description |
450
- | ------ | ------ | ------ |
451
- | `context` | [`TrackingContext`](/api/classes/TrackingContext.md) | The tracking context in which to register this signal as a dependency. |
452
-
453
- #### Returns
454
-
455
- `void`
456
-
457
- #### Remarks
458
-
459
- Use `watch()` when you want to track a signal without reading its value (signals don't
460
- have values to read). This is useful for triggering effects based on signal events
461
- without needing associated data.
462
-
463
- When the signal is triggered via `trigger()`, any effects or derivations that have
464
- watched this signal will automatically re-execute.
465
-
466
- This method must be called within an effect or derivation context where a TrackingContext
467
- is available. For observables (which hold values), use `.get(t)` instead, which both
468
- reads the value and watches for changes.
469
-
470
- #### Throws
471
-
472
- Error if the signal has been disposed.
473
-
474
- #### Example
475
-
476
- ```typescript
477
- const $signal = signal();
478
-
479
- effect((t) => {
480
- $signal.watch(t); // Track the signal
481
- console.log('Signal triggered!');
482
- });
483
-
484
- $signal.trigger(); // Logs: "Signal triggered!"
485
- ```
486
-
487
- #### Inherited from
488
-
489
- [`FlowObservable`](/api/classes/FlowObservable.md).[`watch`](/api/classes/FlowObservable.md#watch)