@ersbeth/picoflow 1.1.2 → 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 +856 -1530
  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 -57
  289. package/dist/types/solid/converters.d.ts.map +0 -1
  290. package/dist/types/solid/index.d.ts +0 -3
  291. package/dist/types/solid/index.d.ts.map +0 -1
  292. package/dist/types/solid/primitives.d.ts +0 -181
  293. package/dist/types/solid/primitives.d.ts.map +0 -1
  294. package/docs/api/classes/FlowArray.md +0 -489
  295. package/docs/api/classes/FlowConstant.md +0 -350
  296. package/docs/api/classes/FlowDerivation.md +0 -334
  297. package/docs/api/classes/FlowEffect.md +0 -100
  298. package/docs/api/classes/FlowMap.md +0 -512
  299. package/docs/api/classes/FlowObservable.md +0 -306
  300. package/docs/api/classes/FlowResource.md +0 -380
  301. package/docs/api/classes/FlowResourceAsync.md +0 -362
  302. package/docs/api/classes/FlowSignal.md +0 -160
  303. package/docs/api/classes/FlowState.md +0 -368
  304. package/docs/api/classes/FlowStream.md +0 -367
  305. package/docs/api/classes/FlowStreamAsync.md +0 -364
  306. package/docs/api/classes/SolidDerivation.md +0 -75
  307. package/docs/api/classes/SolidResource.md +0 -91
  308. package/docs/api/classes/SolidState.md +0 -71
  309. package/docs/api/classes/TrackingContext.md +0 -33
  310. package/docs/api/functions/effect.md +0 -49
  311. package/docs/api/functions/resource.md +0 -52
  312. package/docs/api/functions/resourceAsync.md +0 -50
  313. package/docs/api/functions/stream.md +0 -53
  314. package/docs/api/functions/streamAsync.md +0 -50
  315. package/docs/api/interfaces/SolidObservable.md +0 -19
  316. package/docs/api/type-aliases/FlowStreamDisposer.md +0 -15
  317. package/docs/api/type-aliases/FlowStreamSetter.md +0 -27
  318. package/docs/api/type-aliases/FlowStreamUpdater.md +0 -32
  319. package/docs/api/type-aliases/SolidGetter.md +0 -17
  320. package/docs/guide/primitives/resources.md +0 -858
  321. package/docs/guide/primitives/streams.md +0 -931
  322. package/src/flow/base/flowDisposable.ts +0 -71
  323. package/src/flow/base/flowEffect.ts +0 -171
  324. package/src/flow/base/flowGraph.ts +0 -288
  325. package/src/flow/base/flowSignal.ts +0 -207
  326. package/src/flow/base/flowTracker.ts +0 -17
  327. package/src/flow/base/index.ts +0 -6
  328. package/src/flow/base/utils.ts +0 -19
  329. package/src/flow/collections/flowArray.ts +0 -409
  330. package/src/flow/collections/flowMap.ts +0 -398
  331. package/src/flow/nodes/async/flowConstantAsync.ts +0 -142
  332. package/src/flow/nodes/async/flowDerivationAsync.ts +0 -143
  333. package/src/flow/nodes/async/flowNodeAsync.ts +0 -474
  334. package/src/flow/nodes/async/flowReadonlyAsync.ts +0 -81
  335. package/src/flow/nodes/async/flowStateAsync.ts +0 -116
  336. package/src/flow/nodes/await/advanced/index.ts +0 -5
  337. package/src/flow/nodes/await/advanced/resource.ts +0 -134
  338. package/src/flow/nodes/await/advanced/resourceAsync.ts +0 -109
  339. package/src/flow/nodes/await/advanced/stream.ts +0 -188
  340. package/src/flow/nodes/await/advanced/streamAsync.ts +0 -176
  341. package/src/flow/nodes/await/flowConstantAwait.ts +0 -154
  342. package/src/flow/nodes/await/flowDerivationAwait.ts +0 -154
  343. package/src/flow/nodes/await/flowNodeAwait.ts +0 -508
  344. package/src/flow/nodes/await/flowReadonlyAwait.ts +0 -89
  345. package/src/flow/nodes/await/flowStateAwait.ts +0 -130
  346. package/src/flow/nodes/await/index.ts +0 -5
  347. package/src/flow/nodes/index.ts +0 -3
  348. package/src/flow/nodes/sync/flowConstant.ts +0 -111
  349. package/src/flow/nodes/sync/flowDerivation.ts +0 -105
  350. package/src/flow/nodes/sync/flowNode.ts +0 -439
  351. package/src/flow/nodes/sync/flowReadonly.ts +0 -57
  352. package/src/flow/nodes/sync/flowState.ts +0 -101
  353. package/src/solid/converters.ts +0 -148
  354. package/src/solid/index.ts +0 -2
  355. package/src/solid/primitives.ts +0 -215
  356. package/test/base/flowEffect.test.ts +0 -108
  357. package/test/base/flowGraph.test.ts +0 -485
  358. package/test/base/flowSignal.test.ts +0 -372
  359. package/test/collections/flowArray.asyncStates.test.ts +0 -1553
  360. package/test/collections/flowArray.scalars.test.ts +0 -1129
  361. package/test/collections/flowArray.states.test.ts +0 -1365
  362. package/test/collections/flowMap.asyncStates.test.ts +0 -1105
  363. package/test/collections/flowMap.scalars.test.ts +0 -877
  364. package/test/collections/flowMap.states.test.ts +0 -1097
  365. package/test/nodes/async/flowConstantAsync.test.ts +0 -860
  366. package/test/nodes/async/flowDerivationAsync.test.ts +0 -1517
  367. package/test/nodes/async/flowStateAsync.test.ts +0 -1387
  368. package/test/nodes/await/advanced/resource.test.ts +0 -129
  369. package/test/nodes/await/advanced/resourceAsync.test.ts +0 -108
  370. package/test/nodes/await/advanced/stream.test.ts +0 -198
  371. package/test/nodes/await/advanced/streamAsync.test.ts +0 -196
  372. package/test/nodes/await/flowConstantAwait.test.ts +0 -643
  373. package/test/nodes/await/flowDerivationAwait.test.ts +0 -1583
  374. package/test/nodes/await/flowStateAwait.test.ts +0 -999
  375. package/test/nodes/mixed/derivation.test.ts +0 -1527
  376. package/test/nodes/sync/flowConstant.test.ts +0 -620
  377. package/test/nodes/sync/flowDerivation.test.ts +0 -1373
  378. package/test/nodes/sync/flowState.test.ts +0 -945
  379. package/test/solid/converters.test.ts +0 -721
  380. package/test/solid/primitives.test.ts +0 -1031
  381. /package/dist/types/{flow → api/nodes}/collections/index.d.ts +0 -0
  382. /package/docs/guide/advanced/{upgrading.md → migration-v1.md} +0 -0
  383. /package/src/{flow → api/nodes}/collections/index.ts +0 -0
@@ -1,306 +0,0 @@
1
- [@ersbeth/picoflow](/api/index.md) / FlowObservable
2
-
3
- # Abstract Class: FlowObservable\<T\>
4
-
5
- Defined in: [basic/observable.ts:23](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/basic/observable.ts#L23)
6
-
7
- Represents a reactive observable that holds and tracks a value.
8
-
9
- ## Remarks
10
-
11
- FlowObservable is the base class for all reactive values in PicoFlow. It provides two ways
12
- to access the current value:
13
-
14
- 1. **Tracked access** via `get(context)`: Registers the observable as a dependency in the
15
- tracking context, so changes trigger re-execution of the effect or derivation.
16
-
17
- 2. **Untracked access** via `pick()` or `get(null)`: Reads the current value without registering
18
- a dependency, useful for reading values within effects that shouldn't trigger re-runs.
19
-
20
- Subclasses must implement the [FlowObservable.\_getRaw](#) method to provide the actual value.
21
-
22
- ## Extends
23
-
24
- - [`FlowSignal`](/api/classes/FlowSignal.md)
25
-
26
- ## Extended by
27
-
28
- - [`FlowArray`](/api/classes/FlowArray.md)
29
- - [`FlowResource`](/api/classes/FlowResource.md)
30
- - [`FlowResourceAsync`](/api/classes/FlowResourceAsync.md)
31
- - [`FlowStream`](/api/classes/FlowStream.md)
32
- - [`FlowStreamAsync`](/api/classes/FlowStreamAsync.md)
33
- - [`FlowConstant`](/api/classes/FlowConstant.md)
34
- - [`FlowDerivation`](/api/classes/FlowDerivation.md)
35
-
36
- ## Type Parameters
37
-
38
- | Type Parameter | Description |
39
- | ------ | ------ |
40
- | `T` | The type of the value held by the observable. |
41
-
42
- ## Constructors
43
-
44
- ### Constructor
45
-
46
- ```ts
47
- new FlowObservable<T>(): FlowObservable<T>;
48
- ```
49
-
50
- #### Returns
51
-
52
- `FlowObservable`\<`T`\>
53
-
54
- #### Inherited from
55
-
56
- [`FlowSignal`](/api/classes/FlowSignal.md).[`constructor`](/api/classes/FlowSignal.md#constructor)
57
-
58
- ## Accessors
59
-
60
- ### disposed
61
-
62
- #### Get Signature
63
-
64
- ```ts
65
- get disposed(): boolean;
66
- ```
67
-
68
- Defined in: [basic/signal.ts:97](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/basic/signal.ts#L97)
69
-
70
- Indicates whether the FlowSignal has been disposed.
71
-
72
- ##### Remarks
73
-
74
- Once disposed, the signal should not be used.
75
-
76
- ##### Returns
77
-
78
- `boolean`
79
-
80
- #### Inherited from
81
-
82
- [`FlowSignal`](/api/classes/FlowSignal.md).[`disposed`](/api/classes/FlowSignal.md#disposed)
83
-
84
- ## Methods
85
-
86
- ### dispose()
87
-
88
- ```ts
89
- dispose(options?): void;
90
- ```
91
-
92
- Defined in: [basic/signal.ts:69](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/basic/signal.ts#L69)
93
-
94
- Disposes the FlowSignal.
95
- Cleans up all registered effects, listeners, and dependencies.
96
- Once disposed, further usage of the signal will throw an error.
97
-
98
- #### Parameters
99
-
100
- | Parameter | Type |
101
- | ------ | ------ |
102
- | `options?` | \{ `self`: `boolean`; \} |
103
- | `options.self?` | `boolean` |
104
-
105
- #### Returns
106
-
107
- `void`
108
-
109
- #### Throws
110
-
111
- If the FlowSignal is already disposed.
112
-
113
- #### Inherited from
114
-
115
- [`FlowSignal`](/api/classes/FlowSignal.md).[`dispose`](/api/classes/FlowSignal.md#dispose)
116
-
117
- ***
118
-
119
- ### get()
120
-
121
- ```ts
122
- get(context): T;
123
- ```
124
-
125
- Defined in: [basic/observable.ts:47](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/basic/observable.ts#L47)
126
-
127
- Gets the current value with optional dependency tracking.
128
-
129
- #### Parameters
130
-
131
- | Parameter | Type | Description |
132
- | ------ | ------ | ------ |
133
- | `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. |
134
-
135
- #### Returns
136
-
137
- `T`
138
-
139
- The current value of type T.
140
-
141
- #### Remarks
142
-
143
- Use `get(t)` within effects and derivations to create reactive dependencies.
144
- Use `get(null)` when you need to read a value without tracking (though `pick()` is more idiomatic).
145
-
146
- #### Example
147
-
148
- ```typescript
149
- effect((t) => {
150
- const tracked = $state.get(t); // Dependency registered
151
- const untracked = $other.get(null); // No dependency
152
- });
153
- ```
154
-
155
- ***
156
-
157
- ### pick()
158
-
159
- ```ts
160
- pick(): T;
161
- ```
162
-
163
- Defined in: [basic/observable.ts:82](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/basic/observable.ts#L82)
164
-
165
- Gets the current value without any dependency tracking.
166
-
167
- #### Returns
168
-
169
- `T`
170
-
171
- The current value of type T.
172
-
173
- #### Remarks
174
-
175
- This method is equivalent to calling `get(null)` but provides a more semantic and readable API.
176
- Use `pick()` when you want to read a snapshot of the current value without creating a reactive
177
- dependency. This is useful for:
178
- - Reading initial values
179
- - Accessing configuration that shouldn't trigger updates
180
- - Mixing tracked and untracked reads in the same effect
181
-
182
- #### Example
183
-
184
- ```typescript
185
- // Read a snapshot outside reactive context
186
- const currentValue = $state.pick();
187
-
188
- // Mix tracked and untracked reads
189
- effect((t) => {
190
- const tracked = $reactive.get(t); // Triggers re-runs
191
- const snapshot = $config.pick(); // Doesn't trigger re-runs
192
- processData(tracked, snapshot);
193
- });
194
- ```
195
-
196
- ***
197
-
198
- ### subscribe()
199
-
200
- ```ts
201
- subscribe(listener): () => void;
202
- ```
203
-
204
- Defined in: [basic/observable.ts:103](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/basic/observable.ts#L103)
205
-
206
- Subscribes a listener function to changes of the observable.
207
- The listener is executed immediately with the current value and on subsequent updates.
208
-
209
- #### Parameters
210
-
211
- | Parameter | Type | Description |
212
- | ------ | ------ | ------ |
213
- | `listener` | (`value`) => `void` | A callback function that receives the new value. |
214
-
215
- #### Returns
216
-
217
- A disposer function to cancel the subscription.
218
-
219
- ```ts
220
- (): void;
221
- ```
222
-
223
- ##### Returns
224
-
225
- `void`
226
-
227
- ***
228
-
229
- ### trigger()
230
-
231
- ```ts
232
- trigger(): void;
233
- ```
234
-
235
- Defined in: [basic/signal.ts:19](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/basic/signal.ts#L19)
236
-
237
- Triggers the FlowSignal.
238
- Notifies all registered listeners and schedules execution of associated effects.
239
-
240
- #### Returns
241
-
242
- `void`
243
-
244
- #### Throws
245
-
246
- If the FlowSignal has already been disposed.
247
-
248
- #### Inherited from
249
-
250
- [`FlowSignal`](/api/classes/FlowSignal.md).[`trigger`](/api/classes/FlowSignal.md#trigger)
251
-
252
- ***
253
-
254
- ### watch()
255
-
256
- ```ts
257
- watch(context): void;
258
- ```
259
-
260
- Defined in: [basic/signal.ts:57](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/basic/signal.ts#L57)
261
-
262
- Watches the signal, registering it as a dependency in the tracking context.
263
-
264
- #### Parameters
265
-
266
- | Parameter | Type | Description |
267
- | ------ | ------ | ------ |
268
- | `context` | [`TrackingContext`](/api/classes/TrackingContext.md) | The tracking context in which to register this signal as a dependency. |
269
-
270
- #### Returns
271
-
272
- `void`
273
-
274
- #### Remarks
275
-
276
- Use `watch()` when you want to track a signal without reading its value (signals don't
277
- have values to read). This is useful for triggering effects based on signal events
278
- without needing associated data.
279
-
280
- When the signal is triggered via `trigger()`, any effects or derivations that have
281
- watched this signal will automatically re-execute.
282
-
283
- This method must be called within an effect or derivation context where a TrackingContext
284
- is available. For observables (which hold values), use `.get(t)` instead, which both
285
- reads the value and watches for changes.
286
-
287
- #### Throws
288
-
289
- Error if the signal has been disposed.
290
-
291
- #### Example
292
-
293
- ```typescript
294
- const $signal = signal();
295
-
296
- effect((t) => {
297
- $signal.watch(t); // Track the signal
298
- console.log('Signal triggered!');
299
- });
300
-
301
- $signal.trigger(); // Logs: "Signal triggered!"
302
- ```
303
-
304
- #### Inherited from
305
-
306
- [`FlowSignal`](/api/classes/FlowSignal.md).[`watch`](/api/classes/FlowSignal.md#watch)
@@ -1,380 +0,0 @@
1
- [@ersbeth/picoflow](/api/index.md) / FlowResource
2
-
3
- # Class: FlowResource\<T\>
4
-
5
- Defined in: [advanced/resource.ts:56](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/advanced/resource.ts#L56)
6
-
7
- Represents a reactive resource that asynchronously fetches its value and returns `T | undefined`.
8
-
9
- ## Remarks
10
-
11
- FlowResource extends FlowObservable to manage asynchronous data fetching with reactive updates.
12
- Unlike [FlowResourceAsync](/api/classes/FlowResourceAsync.md) which always returns a Promise, FlowResource returns the resolved
13
- value directly (or `undefined` if not yet fetched), making it more convenient for synchronous access
14
- patterns in effects and derivations.
15
-
16
- **Key Characteristics:**
17
- - The value is `undefined` initially, before the first fetch
18
- - Call `fetch()` to trigger the asynchronous fetch operation
19
- - When fetched, the value is compared to the current value; only different values trigger updates
20
- - Reading via `get(t)` or `pick()` returns the current value (possibly `undefined`) without triggering a fetch
21
-
22
- **Fetch Behavior:**
23
- The fetch function is NOT called automatically on construction. You must explicitly call the
24
- `fetch()` method to retrieve the resource. This gives you control over when network requests
25
- or expensive async operations occur.
26
-
27
- **Use Cases:**
28
- - API data fetching where you want synchronous access to the cached value
29
- - Lazy-loaded data that shouldn't fetch on construction
30
- - Resources that need manual refresh control
31
- - Data that may or may not be available (hence `T | undefined`)
32
-
33
- ## Example
34
-
35
- ```typescript
36
- const $user = resource(() => fetchUserFromAPI());
37
-
38
- // Initially undefined
39
- console.log($user.pick()); // undefined
40
-
41
- // Trigger the fetch
42
- await $user.fetch();
43
- console.log($user.pick()); // { id: 1, name: 'John' }
44
-
45
- // Use in an effect
46
- effect((t) => {
47
- const user = $user.get(t);
48
- if (user) {
49
- console.log(`Hello, ${user.name}`);
50
- }
51
- });
52
-
53
- // Refetch to update
54
- await $user.fetch();
55
- ```
56
-
57
- ## Extends
58
-
59
- - [`FlowObservable`](/api/classes/FlowObservable.md)\<`T` \| `undefined`\>
60
-
61
- ## Type Parameters
62
-
63
- | Type Parameter | Description |
64
- | ------ | ------ |
65
- | `T` | The type of the resource value (not including the undefined case). |
66
-
67
- ## Constructors
68
-
69
- ### Constructor
70
-
71
- ```ts
72
- new FlowResource<T>(fetch): FlowResource<T>;
73
- ```
74
-
75
- Defined in: [advanced/resource.ts:66](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/advanced/resource.ts#L66)
76
-
77
- Creates a new FlowResource.
78
-
79
- #### Parameters
80
-
81
- | Parameter | Type | Description |
82
- | ------ | ------ | ------ |
83
- | `fetch` | () => `Promise`\<`T`\> | An asynchronous function that retrieves the resource's value. This function is not invoked on construction; you must call the `fetch()` method to execute it. |
84
-
85
- #### Returns
86
-
87
- `FlowResource`\<`T`\>
88
-
89
- #### Overrides
90
-
91
- [`FlowObservable`](/api/classes/FlowObservable.md).[`constructor`](/api/classes/FlowObservable.md#constructor)
92
-
93
- ## Accessors
94
-
95
- ### disposed
96
-
97
- #### Get Signature
98
-
99
- ```ts
100
- get disposed(): boolean;
101
- ```
102
-
103
- Defined in: [basic/signal.ts:97](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/basic/signal.ts#L97)
104
-
105
- Indicates whether the FlowSignal has been disposed.
106
-
107
- ##### Remarks
108
-
109
- Once disposed, the signal should not be used.
110
-
111
- ##### Returns
112
-
113
- `boolean`
114
-
115
- #### Inherited from
116
-
117
- [`FlowObservable`](/api/classes/FlowObservable.md).[`disposed`](/api/classes/FlowObservable.md#disposed)
118
-
119
- ## Methods
120
-
121
- ### dispose()
122
-
123
- ```ts
124
- dispose(options?): void;
125
- ```
126
-
127
- Defined in: [basic/signal.ts:69](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/basic/signal.ts#L69)
128
-
129
- Disposes the FlowSignal.
130
- Cleans up all registered effects, listeners, and dependencies.
131
- Once disposed, further usage of the signal will throw an error.
132
-
133
- #### Parameters
134
-
135
- | Parameter | Type |
136
- | ------ | ------ |
137
- | `options?` | \{ `self`: `boolean`; \} |
138
- | `options.self?` | `boolean` |
139
-
140
- #### Returns
141
-
142
- `void`
143
-
144
- #### Throws
145
-
146
- If the FlowSignal is already disposed.
147
-
148
- #### Inherited from
149
-
150
- [`FlowObservable`](/api/classes/FlowObservable.md).[`dispose`](/api/classes/FlowObservable.md#dispose)
151
-
152
- ***
153
-
154
- ### fetch()
155
-
156
- ```ts
157
- fetch(): Promise<void>;
158
- ```
159
-
160
- Defined in: [advanced/resource.ts:89](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/advanced/resource.ts#L89)
161
-
162
- Asynchronously fetches a new value for the resource.
163
-
164
- #### Returns
165
-
166
- `Promise`\<`void`\>
167
-
168
- A Promise that resolves when the fetch operation is complete.
169
-
170
- #### Remarks
171
-
172
- Executes the internal fetch function. If the fetched value differs from the current one,
173
- updates the resource's value and notifies subscribers.
174
-
175
- #### Throws
176
-
177
- Error if the resource is disposed.
178
-
179
- ***
180
-
181
- ### get()
182
-
183
- ```ts
184
- get(context): T | undefined;
185
- ```
186
-
187
- Defined in: [basic/observable.ts:47](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/basic/observable.ts#L47)
188
-
189
- Gets the current value with optional dependency tracking.
190
-
191
- #### Parameters
192
-
193
- | Parameter | Type | Description |
194
- | ------ | ------ | ------ |
195
- | `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. |
196
-
197
- #### Returns
198
-
199
- `T` \| `undefined`
200
-
201
- The current value of type T.
202
-
203
- #### Remarks
204
-
205
- Use `get(t)` within effects and derivations to create reactive dependencies.
206
- Use `get(null)` when you need to read a value without tracking (though `pick()` is more idiomatic).
207
-
208
- #### Example
209
-
210
- ```typescript
211
- effect((t) => {
212
- const tracked = $state.get(t); // Dependency registered
213
- const untracked = $other.get(null); // No dependency
214
- });
215
- ```
216
-
217
- #### Inherited from
218
-
219
- [`FlowObservable`](/api/classes/FlowObservable.md).[`get`](/api/classes/FlowObservable.md#get)
220
-
221
- ***
222
-
223
- ### pick()
224
-
225
- ```ts
226
- pick(): T | undefined;
227
- ```
228
-
229
- Defined in: [basic/observable.ts:82](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/basic/observable.ts#L82)
230
-
231
- Gets the current value without any dependency tracking.
232
-
233
- #### Returns
234
-
235
- `T` \| `undefined`
236
-
237
- The current value of type T.
238
-
239
- #### Remarks
240
-
241
- This method is equivalent to calling `get(null)` but provides a more semantic and readable API.
242
- Use `pick()` when you want to read a snapshot of the current value without creating a reactive
243
- dependency. This is useful for:
244
- - Reading initial values
245
- - Accessing configuration that shouldn't trigger updates
246
- - Mixing tracked and untracked reads in the same effect
247
-
248
- #### Example
249
-
250
- ```typescript
251
- // Read a snapshot outside reactive context
252
- const currentValue = $state.pick();
253
-
254
- // Mix tracked and untracked reads
255
- effect((t) => {
256
- const tracked = $reactive.get(t); // Triggers re-runs
257
- const snapshot = $config.pick(); // Doesn't trigger re-runs
258
- processData(tracked, snapshot);
259
- });
260
- ```
261
-
262
- #### Inherited from
263
-
264
- [`FlowObservable`](/api/classes/FlowObservable.md).[`pick`](/api/classes/FlowObservable.md#pick)
265
-
266
- ***
267
-
268
- ### subscribe()
269
-
270
- ```ts
271
- subscribe(listener): () => void;
272
- ```
273
-
274
- Defined in: [basic/observable.ts:103](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/basic/observable.ts#L103)
275
-
276
- Subscribes a listener function to changes of the observable.
277
- The listener is executed immediately with the current value and on subsequent updates.
278
-
279
- #### Parameters
280
-
281
- | Parameter | Type | Description |
282
- | ------ | ------ | ------ |
283
- | `listener` | (`value`) => `void` | A callback function that receives the new value. |
284
-
285
- #### Returns
286
-
287
- A disposer function to cancel the subscription.
288
-
289
- ```ts
290
- (): void;
291
- ```
292
-
293
- ##### Returns
294
-
295
- `void`
296
-
297
- #### Inherited from
298
-
299
- [`FlowObservable`](/api/classes/FlowObservable.md).[`subscribe`](/api/classes/FlowObservable.md#subscribe)
300
-
301
- ***
302
-
303
- ### trigger()
304
-
305
- ```ts
306
- trigger(): void;
307
- ```
308
-
309
- Defined in: [basic/signal.ts:19](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/basic/signal.ts#L19)
310
-
311
- Triggers the FlowSignal.
312
- Notifies all registered listeners and schedules execution of associated effects.
313
-
314
- #### Returns
315
-
316
- `void`
317
-
318
- #### Throws
319
-
320
- If the FlowSignal has already been disposed.
321
-
322
- #### Inherited from
323
-
324
- [`FlowObservable`](/api/classes/FlowObservable.md).[`trigger`](/api/classes/FlowObservable.md#trigger)
325
-
326
- ***
327
-
328
- ### watch()
329
-
330
- ```ts
331
- watch(context): void;
332
- ```
333
-
334
- Defined in: [basic/signal.ts:57](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/basic/signal.ts#L57)
335
-
336
- Watches the signal, registering it as a dependency in the tracking context.
337
-
338
- #### Parameters
339
-
340
- | Parameter | Type | Description |
341
- | ------ | ------ | ------ |
342
- | `context` | [`TrackingContext`](/api/classes/TrackingContext.md) | The tracking context in which to register this signal as a dependency. |
343
-
344
- #### Returns
345
-
346
- `void`
347
-
348
- #### Remarks
349
-
350
- Use `watch()` when you want to track a signal without reading its value (signals don't
351
- have values to read). This is useful for triggering effects based on signal events
352
- without needing associated data.
353
-
354
- When the signal is triggered via `trigger()`, any effects or derivations that have
355
- watched this signal will automatically re-execute.
356
-
357
- This method must be called within an effect or derivation context where a TrackingContext
358
- is available. For observables (which hold values), use `.get(t)` instead, which both
359
- reads the value and watches for changes.
360
-
361
- #### Throws
362
-
363
- Error if the signal has been disposed.
364
-
365
- #### Example
366
-
367
- ```typescript
368
- const $signal = signal();
369
-
370
- effect((t) => {
371
- $signal.watch(t); // Track the signal
372
- console.log('Signal triggered!');
373
- });
374
-
375
- $signal.trigger(); // Logs: "Signal triggered!"
376
- ```
377
-
378
- #### Inherited from
379
-
380
- [`FlowObservable`](/api/classes/FlowObservable.md).[`watch`](/api/classes/FlowObservable.md#watch)