@ersbeth/picoflow 0.2.4 → 1.0.1

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 (248) hide show
  1. package/.cursor/plans/update-js-e795d61b.plan.md +567 -0
  2. package/.gitlab-ci.yml +24 -0
  3. package/.vscode/settings.json +3 -3
  4. package/CHANGELOG.md +51 -0
  5. package/IMPLEMENTATION_GUIDE.md +1578 -0
  6. package/README.md +9 -134
  7. package/biome.json +32 -32
  8. package/dist/picoflow.js +610 -436
  9. package/dist/types/advanced/array.d.ts +0 -6
  10. package/dist/types/advanced/array.d.ts.map +1 -1
  11. package/dist/types/advanced/index.d.ts +5 -5
  12. package/dist/types/advanced/index.d.ts.map +1 -1
  13. package/dist/types/advanced/map.d.ts +114 -23
  14. package/dist/types/advanced/map.d.ts.map +1 -1
  15. package/dist/types/advanced/resource.d.ts +51 -12
  16. package/dist/types/advanced/resource.d.ts.map +1 -1
  17. package/dist/types/advanced/resourceAsync.d.ts +28 -13
  18. package/dist/types/advanced/resourceAsync.d.ts.map +1 -1
  19. package/dist/types/advanced/stream.d.ts +74 -16
  20. package/dist/types/advanced/stream.d.ts.map +1 -1
  21. package/dist/types/advanced/streamAsync.d.ts +69 -15
  22. package/dist/types/advanced/streamAsync.d.ts.map +1 -1
  23. package/dist/types/basic/constant.d.ts +44 -16
  24. package/dist/types/basic/constant.d.ts.map +1 -1
  25. package/dist/types/basic/derivation.d.ts +73 -24
  26. package/dist/types/basic/derivation.d.ts.map +1 -1
  27. package/dist/types/basic/disposable.d.ts +65 -6
  28. package/dist/types/basic/disposable.d.ts.map +1 -1
  29. package/dist/types/basic/effect.d.ts +27 -16
  30. package/dist/types/basic/effect.d.ts.map +1 -1
  31. package/dist/types/basic/index.d.ts +7 -8
  32. package/dist/types/basic/index.d.ts.map +1 -1
  33. package/dist/types/basic/observable.d.ts +62 -13
  34. package/dist/types/basic/observable.d.ts.map +1 -1
  35. package/dist/types/basic/signal.d.ts +35 -6
  36. package/dist/types/basic/signal.d.ts.map +1 -1
  37. package/dist/types/basic/state.d.ts +25 -4
  38. package/dist/types/basic/state.d.ts.map +1 -1
  39. package/dist/types/basic/trackingContext.d.ts +33 -0
  40. package/dist/types/basic/trackingContext.d.ts.map +1 -0
  41. package/dist/types/creators.d.ts +271 -26
  42. package/dist/types/creators.d.ts.map +1 -1
  43. package/dist/types/index.d.ts +60 -7
  44. package/dist/types/index.d.ts.map +1 -1
  45. package/dist/types/solid/converters.d.ts +5 -5
  46. package/dist/types/solid/converters.d.ts.map +1 -1
  47. package/dist/types/solid/index.d.ts +2 -2
  48. package/dist/types/solid/index.d.ts.map +1 -1
  49. package/dist/types/solid/primitives.d.ts +96 -4
  50. package/dist/types/solid/primitives.d.ts.map +1 -1
  51. package/docs/.vitepress/config.mts +110 -0
  52. package/docs/api/classes/FlowArray.md +489 -0
  53. package/docs/api/classes/FlowConstant.md +350 -0
  54. package/docs/api/classes/FlowDerivation.md +334 -0
  55. package/docs/api/classes/FlowEffect.md +100 -0
  56. package/docs/api/classes/FlowMap.md +512 -0
  57. package/docs/api/classes/FlowObservable.md +306 -0
  58. package/docs/api/classes/FlowResource.md +380 -0
  59. package/docs/api/classes/FlowResourceAsync.md +362 -0
  60. package/docs/api/classes/FlowSignal.md +160 -0
  61. package/docs/api/classes/FlowState.md +368 -0
  62. package/docs/api/classes/FlowStream.md +367 -0
  63. package/docs/api/classes/FlowStreamAsync.md +364 -0
  64. package/docs/api/classes/SolidDerivation.md +75 -0
  65. package/docs/api/classes/SolidResource.md +91 -0
  66. package/docs/api/classes/SolidState.md +71 -0
  67. package/docs/api/classes/TrackingContext.md +33 -0
  68. package/docs/api/functions/array.md +58 -0
  69. package/docs/api/functions/constant.md +45 -0
  70. package/docs/api/functions/derivation.md +53 -0
  71. package/docs/api/functions/effect.md +49 -0
  72. package/docs/api/functions/from.md +220 -0
  73. package/docs/api/functions/isDisposable.md +49 -0
  74. package/docs/api/functions/map.md +57 -0
  75. package/docs/api/functions/resource.md +52 -0
  76. package/docs/api/functions/resourceAsync.md +50 -0
  77. package/docs/api/functions/signal.md +36 -0
  78. package/docs/api/functions/state.md +47 -0
  79. package/docs/api/functions/stream.md +53 -0
  80. package/docs/api/functions/streamAsync.md +50 -0
  81. package/docs/api/index.md +118 -0
  82. package/docs/api/interfaces/FlowDisposable.md +65 -0
  83. package/docs/api/interfaces/SolidObservable.md +19 -0
  84. package/docs/api/type-aliases/FlowArrayAction.md +49 -0
  85. package/docs/api/type-aliases/FlowStreamDisposer.md +15 -0
  86. package/docs/api/type-aliases/FlowStreamSetter.md +27 -0
  87. package/docs/api/type-aliases/FlowStreamUpdater.md +32 -0
  88. package/docs/api/type-aliases/NotPromise.md +18 -0
  89. package/docs/api/type-aliases/SolidGetter.md +17 -0
  90. package/docs/api/typedoc-sidebar.json +1 -0
  91. package/docs/examples/examples.md +2313 -0
  92. package/docs/examples/patterns.md +649 -0
  93. package/docs/guide/advanced/disposal.md +426 -0
  94. package/docs/guide/advanced/solidjs.md +221 -0
  95. package/docs/guide/advanced/upgrading.md +464 -0
  96. package/docs/guide/introduction/concepts.md +56 -0
  97. package/docs/guide/introduction/conventions.md +61 -0
  98. package/docs/guide/introduction/getting-started.md +134 -0
  99. package/docs/guide/introduction/lifecycle.md +371 -0
  100. package/docs/guide/primitives/array.md +400 -0
  101. package/docs/guide/primitives/constant.md +380 -0
  102. package/docs/guide/primitives/derivations.md +348 -0
  103. package/docs/guide/primitives/effects.md +458 -0
  104. package/docs/guide/primitives/map.md +387 -0
  105. package/docs/guide/primitives/overview.md +175 -0
  106. package/docs/guide/primitives/resources.md +858 -0
  107. package/docs/guide/primitives/signal.md +259 -0
  108. package/docs/guide/primitives/state.md +368 -0
  109. package/docs/guide/primitives/streams.md +931 -0
  110. package/docs/index.md +47 -0
  111. package/docs/public/logo.svg +1 -0
  112. package/package.json +57 -41
  113. package/src/advanced/array.ts +208 -210
  114. package/src/advanced/index.ts +7 -7
  115. package/src/advanced/map.ts +178 -68
  116. package/src/advanced/resource.ts +87 -43
  117. package/src/advanced/resourceAsync.ts +62 -42
  118. package/src/advanced/stream.ts +113 -50
  119. package/src/advanced/streamAsync.ts +120 -61
  120. package/src/basic/constant.ts +82 -49
  121. package/src/basic/derivation.ts +128 -84
  122. package/src/basic/disposable.ts +74 -15
  123. package/src/basic/effect.ts +85 -77
  124. package/src/basic/index.ts +7 -8
  125. package/src/basic/observable.ts +94 -36
  126. package/src/basic/signal.ts +133 -105
  127. package/src/basic/state.ts +46 -25
  128. package/src/basic/trackingContext.ts +45 -0
  129. package/src/creators.ts +297 -54
  130. package/src/index.ts +96 -43
  131. package/src/solid/converters.ts +186 -67
  132. package/src/solid/index.ts +8 -2
  133. package/src/solid/primitives.ts +167 -65
  134. package/test/array.test.ts +592 -612
  135. package/test/constant.test.ts +31 -33
  136. package/test/derivation.test.ts +531 -536
  137. package/test/effect.test.ts +21 -21
  138. package/test/map.test.ts +233 -137
  139. package/test/resource.test.ts +119 -121
  140. package/test/resourceAsync.test.ts +98 -100
  141. package/test/signal.test.ts +51 -55
  142. package/test/state.test.ts +186 -168
  143. package/test/stream.test.ts +189 -189
  144. package/test/streamAsync.test.ts +186 -186
  145. package/tsconfig.json +19 -18
  146. package/typedoc.json +37 -0
  147. package/vite.config.ts +23 -23
  148. package/vitest.config.ts +7 -7
  149. package/api/doc/index.md +0 -31
  150. package/api/doc/picoflow.array.md +0 -55
  151. package/api/doc/picoflow.constant.md +0 -55
  152. package/api/doc/picoflow.derivation.md +0 -55
  153. package/api/doc/picoflow.effect.md +0 -55
  154. package/api/doc/picoflow.flowarray._constructor_.md +0 -49
  155. package/api/doc/picoflow.flowarray._lastaction.md +0 -13
  156. package/api/doc/picoflow.flowarray.clear.md +0 -17
  157. package/api/doc/picoflow.flowarray.dispose.md +0 -55
  158. package/api/doc/picoflow.flowarray.get.md +0 -19
  159. package/api/doc/picoflow.flowarray.length.md +0 -13
  160. package/api/doc/picoflow.flowarray.md +0 -273
  161. package/api/doc/picoflow.flowarray.pop.md +0 -17
  162. package/api/doc/picoflow.flowarray.push.md +0 -53
  163. package/api/doc/picoflow.flowarray.set.md +0 -53
  164. package/api/doc/picoflow.flowarray.setitem.md +0 -69
  165. package/api/doc/picoflow.flowarray.shift.md +0 -17
  166. package/api/doc/picoflow.flowarray.splice.md +0 -85
  167. package/api/doc/picoflow.flowarray.unshift.md +0 -53
  168. package/api/doc/picoflow.flowarrayaction.md +0 -37
  169. package/api/doc/picoflow.flowconstant._constructor_.md +0 -49
  170. package/api/doc/picoflow.flowconstant.get.md +0 -25
  171. package/api/doc/picoflow.flowconstant.md +0 -88
  172. package/api/doc/picoflow.flowderivation._constructor_.md +0 -49
  173. package/api/doc/picoflow.flowderivation.get.md +0 -23
  174. package/api/doc/picoflow.flowderivation.md +0 -86
  175. package/api/doc/picoflow.flowdisposable.dispose.md +0 -55
  176. package/api/doc/picoflow.flowdisposable.md +0 -43
  177. package/api/doc/picoflow.floweffect._constructor_.md +0 -54
  178. package/api/doc/picoflow.floweffect.dispose.md +0 -21
  179. package/api/doc/picoflow.floweffect.disposed.md +0 -13
  180. package/api/doc/picoflow.floweffect.md +0 -131
  181. package/api/doc/picoflow.flowgetter.md +0 -15
  182. package/api/doc/picoflow.flowmap._lastdeleted.md +0 -21
  183. package/api/doc/picoflow.flowmap._lastset.md +0 -21
  184. package/api/doc/picoflow.flowmap.delete.md +0 -61
  185. package/api/doc/picoflow.flowmap.md +0 -133
  186. package/api/doc/picoflow.flowmap.setat.md +0 -77
  187. package/api/doc/picoflow.flowobservable.get.md +0 -19
  188. package/api/doc/picoflow.flowobservable.md +0 -68
  189. package/api/doc/picoflow.flowobservable.subscribe.md +0 -55
  190. package/api/doc/picoflow.flowresource._constructor_.md +0 -49
  191. package/api/doc/picoflow.flowresource.fetch.md +0 -27
  192. package/api/doc/picoflow.flowresource.get.md +0 -23
  193. package/api/doc/picoflow.flowresource.md +0 -100
  194. package/api/doc/picoflow.flowresourceasync._constructor_.md +0 -49
  195. package/api/doc/picoflow.flowresourceasync.fetch.md +0 -27
  196. package/api/doc/picoflow.flowresourceasync.get.md +0 -23
  197. package/api/doc/picoflow.flowresourceasync.md +0 -100
  198. package/api/doc/picoflow.flowsignal.dispose.md +0 -59
  199. package/api/doc/picoflow.flowsignal.disposed.md +0 -18
  200. package/api/doc/picoflow.flowsignal.md +0 -112
  201. package/api/doc/picoflow.flowsignal.trigger.md +0 -21
  202. package/api/doc/picoflow.flowstate.md +0 -52
  203. package/api/doc/picoflow.flowstate.set.md +0 -61
  204. package/api/doc/picoflow.flowstream._constructor_.md +0 -49
  205. package/api/doc/picoflow.flowstream.dispose.md +0 -21
  206. package/api/doc/picoflow.flowstream.get.md +0 -23
  207. package/api/doc/picoflow.flowstream.md +0 -100
  208. package/api/doc/picoflow.flowstreamasync._constructor_.md +0 -54
  209. package/api/doc/picoflow.flowstreamasync.dispose.md +0 -21
  210. package/api/doc/picoflow.flowstreamasync.get.md +0 -23
  211. package/api/doc/picoflow.flowstreamasync.md +0 -100
  212. package/api/doc/picoflow.flowstreamdisposer.md +0 -13
  213. package/api/doc/picoflow.flowstreamsetter.md +0 -13
  214. package/api/doc/picoflow.flowstreamupdater.md +0 -19
  215. package/api/doc/picoflow.flowwatcher.md +0 -15
  216. package/api/doc/picoflow.from.md +0 -55
  217. package/api/doc/picoflow.from_1.md +0 -55
  218. package/api/doc/picoflow.from_2.md +0 -55
  219. package/api/doc/picoflow.from_3.md +0 -55
  220. package/api/doc/picoflow.from_4.md +0 -55
  221. package/api/doc/picoflow.from_5.md +0 -55
  222. package/api/doc/picoflow.isdisposable.md +0 -55
  223. package/api/doc/picoflow.map.md +0 -59
  224. package/api/doc/picoflow.md +0 -544
  225. package/api/doc/picoflow.resource.md +0 -55
  226. package/api/doc/picoflow.resourceasync.md +0 -55
  227. package/api/doc/picoflow.signal.md +0 -19
  228. package/api/doc/picoflow.solidderivation._constructor_.md +0 -49
  229. package/api/doc/picoflow.solidderivation.get.md +0 -13
  230. package/api/doc/picoflow.solidderivation.md +0 -94
  231. package/api/doc/picoflow.solidgetter.md +0 -13
  232. package/api/doc/picoflow.solidobservable.get.md +0 -13
  233. package/api/doc/picoflow.solidobservable.md +0 -57
  234. package/api/doc/picoflow.solidresource._constructor_.md +0 -49
  235. package/api/doc/picoflow.solidresource.get.md +0 -13
  236. package/api/doc/picoflow.solidresource.latest.md +0 -13
  237. package/api/doc/picoflow.solidresource.md +0 -157
  238. package/api/doc/picoflow.solidresource.refetch.md +0 -13
  239. package/api/doc/picoflow.solidresource.state.md +0 -13
  240. package/api/doc/picoflow.solidstate._constructor_.md +0 -49
  241. package/api/doc/picoflow.solidstate.get.md +0 -13
  242. package/api/doc/picoflow.solidstate.md +0 -115
  243. package/api/doc/picoflow.solidstate.set.md +0 -13
  244. package/api/doc/picoflow.state.md +0 -55
  245. package/api/doc/picoflow.stream.md +0 -55
  246. package/api/doc/picoflow.streamasync.md +0 -55
  247. package/api/picoflow.public.api.md +0 -244
  248. package/api-extractor.json +0 -61
@@ -0,0 +1,110 @@
1
+ import { defineConfig } from "vitepress";
2
+ import { withMermaid } from "vitepress-plugin-mermaid";
3
+ import typedocSidebar from "../api/typedoc-sidebar.json";
4
+
5
+ export default withMermaid(
6
+ defineConfig({
7
+ title: "PicoFlow",
8
+ description: "Lightweight reactive dataflow library for TypeScript",
9
+ base: "/picoflow/",
10
+
11
+ mermaid: {},
12
+
13
+ head: [["link", { rel: "icon", type: "image/svg+xml", href: "/logo.svg" }]],
14
+
15
+ themeConfig: {
16
+ logo: "/logo.svg",
17
+
18
+ nav: [
19
+ { text: "Guide", link: "/guide/introduction/getting-started" },
20
+ { text: "Examples", link: "/examples/patterns" },
21
+ { text: "API Reference", link: "/api/" },
22
+ ],
23
+
24
+ sidebar: {
25
+ "/guide/": [
26
+ {
27
+ text: "Introduction",
28
+ items: [
29
+ {
30
+ text: "Getting Started",
31
+ link: "/guide/introduction/getting-started",
32
+ },
33
+ { text: "Conventions", link: "/guide/introduction/conventions" },
34
+ { text: "Concepts", link: "/guide/introduction/concepts" },
35
+ { text: "Lifecycle", link: "/guide/introduction/lifecycle" },
36
+ ],
37
+ },
38
+ {
39
+ text: "Primitives",
40
+ items: [
41
+ { text: "Overview", link: "/guide/primitives/overview" },
42
+ { text: "Signals", link: "/guide/primitives/signal" },
43
+ { text: "States", link: "/guide/primitives/state" },
44
+ { text: "Derivations", link: "/guide/primitives/derivations" },
45
+ { text: "Effects", link: "/guide/primitives/effects" },
46
+ // { text: "Resources", link: "/guide/primitives/resources" },
47
+ // { text: "Streams", link: "/guide/primitives/streams" },
48
+ { text: "Maps", link: "/guide/primitives/map" },
49
+ { text: "Arrays", link: "/guide/primitives/array" },
50
+ // { text: "Constants", link: "/guide/primitives/constant" },
51
+ ],
52
+ },
53
+ {
54
+ text: "Advanced",
55
+ items: [
56
+ {
57
+ text: "Disposal",
58
+ link: "/guide/advanced/disposal",
59
+ },
60
+ {
61
+ text: "Use with SolidJS",
62
+ link: "/guide/advanced/solidjs",
63
+ },
64
+ {
65
+ text: "Upgrade from v0.x",
66
+ link: "/guide/advanced/upgrading",
67
+ }
68
+ ],
69
+ },
70
+ ],
71
+
72
+ "/examples/": [
73
+ {
74
+ text: "Examples",
75
+ items: [
76
+ { text: "Common Patterns", link: "/examples/patterns" },
77
+ { text: "Code Examples", link: "/examples/examples" },
78
+ ],
79
+ },
80
+ ],
81
+
82
+ "/api/": [
83
+ {
84
+ text: "API Reference",
85
+ items: typedocSidebar,
86
+ },
87
+ ],
88
+ },
89
+
90
+ socialLinks: [
91
+ { icon: "gitlab", link: "https://gitlab.com/ersbeth-web/picoflow" },
92
+ ],
93
+
94
+ search: {
95
+ provider: "local",
96
+ },
97
+
98
+ editLink: {
99
+ pattern:
100
+ "https://gitlab.com/ersbeth-web/picoflow/-/edit/main/docs/:path",
101
+ text: "Edit this page on GitLab",
102
+ },
103
+
104
+ footer: {
105
+ copyright:
106
+ "Copyright ©2025 <a href='https://gitlab.com/ersbeth/'>Ersbeth</a>",
107
+ },
108
+ },
109
+ }),
110
+ );
@@ -0,0 +1,489 @@
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)