@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.
- package/.vscode/settings.json +3 -3
- package/CHANGELOG.md +43 -0
- package/README.md +2 -18
- package/biome.json +45 -35
- package/dist/picoflow.js +856 -1530
- package/dist/types/api/base/flowDisposable.d.ts +41 -0
- package/dist/types/api/base/flowDisposable.d.ts.map +1 -0
- package/dist/types/api/base/flowObservable.d.ts +27 -0
- package/dist/types/api/base/flowObservable.d.ts.map +1 -0
- package/dist/types/api/base/flowSubscribable.d.ts +79 -0
- package/dist/types/api/base/flowSubscribable.d.ts.map +1 -0
- package/dist/types/api/base/flowTracker.d.ts +8 -0
- package/dist/types/api/base/flowTracker.d.ts.map +1 -0
- package/dist/types/api/base/index.d.ts +5 -0
- package/dist/types/api/base/index.d.ts.map +1 -0
- package/dist/types/api/index.d.ts +3 -0
- package/dist/types/api/index.d.ts.map +1 -0
- package/dist/types/api/nodes/async/flowConstantAsync.d.ts +31 -0
- package/dist/types/api/nodes/async/flowConstantAsync.d.ts.map +1 -0
- package/dist/types/api/nodes/async/flowDerivationAsync.d.ts +37 -0
- package/dist/types/api/nodes/async/flowDerivationAsync.d.ts.map +1 -0
- package/dist/types/api/nodes/async/flowStateAsync.d.ts +41 -0
- package/dist/types/api/nodes/async/flowStateAsync.d.ts.map +1 -0
- package/dist/types/api/nodes/async/flowWritableDerivationAsync.d.ts +30 -0
- package/dist/types/api/nodes/async/flowWritableDerivationAsync.d.ts.map +1 -0
- package/dist/types/{flow → api}/nodes/async/index.d.ts +1 -2
- package/dist/types/api/nodes/async/index.d.ts.map +1 -0
- package/dist/types/api/nodes/collections/flowArray.d.ts +134 -0
- package/dist/types/api/nodes/collections/flowArray.d.ts.map +1 -0
- package/dist/types/api/nodes/collections/flowMap.d.ts +98 -0
- package/dist/types/api/nodes/collections/flowMap.d.ts.map +1 -0
- package/dist/types/api/nodes/collections/index.d.ts.map +1 -0
- package/dist/types/api/nodes/flowEffect.d.ts +28 -0
- package/dist/types/api/nodes/flowEffect.d.ts.map +1 -0
- package/dist/types/api/nodes/flowSignal.d.ts +25 -0
- package/dist/types/api/nodes/flowSignal.d.ts.map +1 -0
- package/dist/types/api/nodes/flowValue.d.ts +35 -0
- package/dist/types/api/nodes/flowValue.d.ts.map +1 -0
- package/dist/types/api/nodes/index.d.ts +8 -0
- package/dist/types/api/nodes/index.d.ts.map +1 -0
- package/dist/types/api/nodes/sync/flowConstant.d.ts +29 -0
- package/dist/types/api/nodes/sync/flowConstant.d.ts.map +1 -0
- package/dist/types/api/nodes/sync/flowDerivation.d.ts +36 -0
- package/dist/types/api/nodes/sync/flowDerivation.d.ts.map +1 -0
- package/dist/types/api/nodes/sync/flowState.d.ts +39 -0
- package/dist/types/api/nodes/sync/flowState.d.ts.map +1 -0
- package/dist/types/api/nodes/sync/flowWritableDerivation.d.ts +28 -0
- package/dist/types/api/nodes/sync/flowWritableDerivation.d.ts.map +1 -0
- package/dist/types/{flow → api}/nodes/sync/index.d.ts +1 -2
- package/dist/types/api/nodes/sync/index.d.ts.map +1 -0
- package/dist/types/api/nodes/utils.d.ts +22 -0
- package/dist/types/api/nodes/utils.d.ts.map +1 -0
- package/dist/types/base/disposable.d.ts +11 -0
- package/dist/types/base/disposable.d.ts.map +1 -0
- package/dist/types/base/executionStack.d.ts +14 -0
- package/dist/types/base/executionStack.d.ts.map +1 -0
- package/dist/types/base/index.d.ts +6 -0
- package/dist/types/base/index.d.ts.map +1 -0
- package/dist/types/base/node.d.ts +27 -0
- package/dist/types/base/node.d.ts.map +1 -0
- package/dist/types/base/observable.d.ts +37 -0
- package/dist/types/base/observable.d.ts.map +1 -0
- package/dist/types/base/observer.d.ts +25 -0
- package/dist/types/base/observer.d.ts.map +1 -0
- package/dist/types/converters/index.d.ts +2 -0
- package/dist/types/converters/index.d.ts.map +1 -0
- package/dist/types/converters/solid.d.ts +46 -0
- package/dist/types/converters/solid.d.ts.map +1 -0
- package/dist/types/index.d.ts +2 -63
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/nodes/arrayNode.d.ts +2 -0
- package/dist/types/nodes/arrayNode.d.ts.map +1 -0
- package/dist/types/nodes/effectNode.d.ts +2 -0
- package/dist/types/nodes/effectNode.d.ts.map +1 -0
- package/dist/types/nodes/index.d.ts +9 -0
- package/dist/types/nodes/index.d.ts.map +1 -0
- package/dist/types/nodes/mapNode.d.ts +2 -0
- package/dist/types/nodes/mapNode.d.ts.map +1 -0
- package/dist/types/nodes/signalNode.d.ts +2 -0
- package/dist/types/nodes/signalNode.d.ts.map +1 -0
- package/dist/types/nodes/valueAsyncNode.d.ts +2 -0
- package/dist/types/nodes/valueAsyncNode.d.ts.map +1 -0
- package/dist/types/nodes/valueNode.d.ts +2 -0
- package/dist/types/nodes/valueNode.d.ts.map +1 -0
- package/dist/types/nodes/valueSyncNode.d.ts +2 -0
- package/dist/types/nodes/valueSyncNode.d.ts.map +1 -0
- package/dist/types/schedulers/asyncResolver.d.ts +2 -0
- package/dist/types/schedulers/asyncResolver.d.ts.map +1 -0
- package/dist/types/schedulers/asyncScheduler.d.ts +2 -0
- package/dist/types/schedulers/asyncScheduler.d.ts.map +1 -0
- package/dist/types/schedulers/index.d.ts +5 -0
- package/dist/types/schedulers/index.d.ts.map +1 -0
- package/dist/types/schedulers/pendingError.d.ts +2 -0
- package/dist/types/schedulers/pendingError.d.ts.map +1 -0
- package/dist/types/schedulers/scheduler.d.ts +2 -0
- package/dist/types/schedulers/scheduler.d.ts.map +1 -0
- package/dist/types/schedulers/syncResolver.d.ts +2 -0
- package/dist/types/schedulers/syncResolver.d.ts.map +1 -0
- package/dist/types/schedulers/syncScheduler.d.ts +2 -0
- package/dist/types/schedulers/syncScheduler.d.ts.map +1 -0
- package/docs/.vitepress/config.mts +128 -93
- package/docs/api/functions/array.md +14 -37
- package/docs/api/functions/constant.md +13 -25
- package/docs/api/functions/constantAsync.md +69 -0
- package/docs/api/functions/derivation.md +14 -33
- package/docs/api/functions/derivationAsync.md +34 -0
- package/docs/api/functions/from.md +62 -153
- package/docs/api/functions/isDisposable.md +8 -30
- package/docs/api/functions/map.md +15 -36
- package/docs/api/functions/signal.md +8 -23
- package/docs/api/functions/state.md +43 -23
- package/docs/api/functions/stateAsync.md +69 -0
- package/docs/api/functions/subscribe.md +40 -0
- package/docs/api/functions/writableDerivation.md +33 -0
- package/docs/api/functions/writableDerivationAsync.md +34 -0
- package/docs/api/index.md +45 -102
- package/docs/api/interfaces/FlowArray.md +439 -0
- package/docs/api/interfaces/FlowConstant.md +220 -0
- package/docs/api/interfaces/FlowConstantAsync.md +221 -0
- package/docs/api/interfaces/FlowDerivation.md +241 -0
- package/docs/api/interfaces/FlowDerivationAsync.md +242 -0
- package/docs/api/interfaces/FlowDisposable.md +32 -38
- package/docs/api/interfaces/FlowEffect.md +64 -0
- package/docs/api/interfaces/FlowMap.md +374 -0
- package/docs/api/interfaces/FlowObservable.md +155 -0
- package/docs/api/interfaces/FlowSignal.md +156 -0
- package/docs/api/interfaces/FlowState.md +269 -0
- package/docs/api/interfaces/FlowStateAsync.md +268 -0
- package/docs/api/interfaces/FlowSubscribable.md +55 -0
- package/docs/api/interfaces/FlowTracker.md +61 -0
- package/docs/api/interfaces/FlowValue.md +222 -0
- package/docs/api/interfaces/FlowWritableDerivation.md +292 -0
- package/docs/api/interfaces/FlowWritableDerivationAsync.md +293 -0
- package/docs/api/type-aliases/DerivationFunction.md +28 -0
- package/docs/api/type-aliases/DerivationFunctionAsync.md +28 -0
- package/docs/api/type-aliases/FlowArrayAction.md +19 -8
- package/docs/api/type-aliases/FlowDataTracker.md +33 -0
- package/docs/api/type-aliases/FlowMapAction.md +48 -0
- package/docs/api/type-aliases/FlowOnDataListener.md +33 -0
- package/docs/api/type-aliases/FlowOnErrorListener.md +27 -0
- package/docs/api/type-aliases/FlowOnPendingListener.md +21 -0
- package/docs/api/type-aliases/FlowReadonly.md +22 -0
- package/docs/api/type-aliases/InitFunction.md +21 -0
- package/docs/api/type-aliases/InitFunctionAsync.md +21 -0
- package/docs/api/type-aliases/NotPromise.md +6 -3
- package/docs/api/type-aliases/UpdateFunction.md +27 -0
- package/docs/api/type-aliases/UpdateFunctionAsync.md +27 -0
- package/docs/api/typedoc-sidebar.json +1 -81
- package/docs/examples/examples.md +0 -2
- package/docs/guide/advanced/architecture.md +1234 -0
- package/docs/guide/advanced/migration-v2.md +204 -0
- package/docs/guide/advanced/solidjs.md +2 -88
- package/docs/guide/introduction/concepts.md +4 -3
- package/docs/guide/introduction/conventions.md +2 -33
- package/docs/guide/introduction/getting-started.md +28 -23
- package/docs/guide/introduction/lifecycle.md +16 -19
- package/docs/guide/primitives/array.md +102 -216
- package/docs/guide/primitives/constant.md +39 -212
- package/docs/guide/primitives/derivations.md +55 -122
- package/docs/guide/primitives/effects.md +155 -241
- package/docs/guide/primitives/map.md +64 -186
- package/docs/guide/primitives/overview.md +45 -128
- package/docs/guide/primitives/signal.md +51 -88
- package/docs/guide/primitives/state.md +34 -130
- package/package.json +56 -60
- package/src/api/base/flowDisposable.ts +44 -0
- package/src/api/base/flowObservable.ts +28 -0
- package/src/api/base/flowSubscribable.ts +87 -0
- package/src/api/base/flowTracker.ts +7 -0
- package/src/api/base/index.ts +4 -0
- package/src/{flow → api}/index.ts +0 -1
- package/src/api/nodes/async/flowConstantAsync.ts +36 -0
- package/src/api/nodes/async/flowDerivationAsync.ts +42 -0
- package/src/api/nodes/async/flowStateAsync.ts +47 -0
- package/src/api/nodes/async/flowWritableDerivationAsync.ts +33 -0
- package/src/{flow → api}/nodes/async/index.ts +1 -2
- package/src/api/nodes/collections/flowArray.ts +155 -0
- package/src/api/nodes/collections/flowMap.ts +115 -0
- package/src/api/nodes/flowEffect.ts +42 -0
- package/src/api/nodes/flowSignal.ts +28 -0
- package/src/api/nodes/flowValue.ts +36 -0
- package/src/api/nodes/index.ts +7 -0
- package/src/api/nodes/sync/flowConstant.ts +33 -0
- package/src/api/nodes/sync/flowDerivation.ts +41 -0
- package/src/api/nodes/sync/flowState.ts +45 -0
- package/src/api/nodes/sync/flowWritableDerivation.ts +31 -0
- package/src/{flow → api}/nodes/sync/index.ts +1 -2
- package/src/api/nodes/utils.ts +22 -0
- package/src/base/disposable.ts +18 -0
- package/src/base/executionStack.ts +42 -0
- package/src/base/index.ts +5 -0
- package/src/base/node.ts +98 -0
- package/src/base/observable.ts +87 -0
- package/src/base/observer.ts +51 -0
- package/src/converters/index.ts +1 -0
- package/src/converters/solid.ts +109 -0
- package/src/index.ts +2 -64
- package/src/nodes/arrayNode.ts +172 -0
- package/src/nodes/effectNode.ts +59 -0
- package/src/nodes/index.ts +8 -0
- package/src/nodes/mapNode.ts +127 -0
- package/src/nodes/signalNode.ts +21 -0
- package/src/nodes/valueAsyncNode.ts +88 -0
- package/src/nodes/valueNode.ts +144 -0
- package/src/nodes/valueSyncNode.ts +128 -0
- package/src/schedulers/asyncResolver.ts +78 -0
- package/src/schedulers/asyncScheduler.ts +66 -0
- package/src/schedulers/index.ts +4 -0
- package/src/schedulers/pendingError.ts +13 -0
- package/src/schedulers/scheduler.ts +9 -0
- package/src/schedulers/syncResolver.ts +69 -0
- package/src/schedulers/syncScheduler.ts +55 -0
- package/test/base/pendingError.test.ts +67 -0
- package/test/converters/solid.derivation.browser.test.tsx +69 -0
- package/test/converters/solid.node.test.ts +654 -0
- package/test/converters/solid.state.browser.test.tsx +1592 -0
- package/test/reactivity/flowSignal.test.ts +226 -0
- package/test/reactivity/nodes/async/asyncScheduler/asyncResolver.test.ts +593 -0
- package/test/reactivity/nodes/async/asyncScheduler/asyncScheduler.test.ts +317 -0
- package/test/reactivity/nodes/async/flowConstantAsync.test.ts +652 -0
- package/test/reactivity/nodes/async/flowDerivation.test.ts +898 -0
- package/test/reactivity/nodes/async/flowDerivationAsync.test.ts +1716 -0
- package/test/reactivity/nodes/async/flowStateAsync.test.ts +708 -0
- package/test/reactivity/nodes/async/flowWritableDerivationAsync.test.ts +614 -0
- package/test/reactivity/nodes/collections/flowArray.asyncStates.test.ts +1289 -0
- package/test/reactivity/nodes/collections/flowArray.scalars.test.ts +961 -0
- package/test/reactivity/nodes/collections/flowArray.states.test.ts +1035 -0
- package/test/reactivity/nodes/collections/flowMap.asyncStates.test.ts +960 -0
- package/test/reactivity/nodes/collections/flowMap.scalars.test.ts +775 -0
- package/test/reactivity/nodes/collections/flowMap.states.test.ts +958 -0
- package/test/reactivity/nodes/sync/flowConstant.test.ts +377 -0
- package/test/reactivity/nodes/sync/flowDerivation.test.ts +896 -0
- package/test/reactivity/nodes/sync/flowState.test.ts +341 -0
- package/test/reactivity/nodes/sync/flowWritableDerivation.test.ts +603 -0
- package/test/vitest.d.ts +10 -0
- package/tsconfig.json +31 -20
- package/typedoc.json +35 -35
- package/vite.config.ts +25 -23
- package/vitest.browser.config.ts +21 -0
- package/vitest.config.ts +12 -12
- package/.cursor/plans/unifier-flowresource-avec-flowderivation-c9506e24.plan.md +0 -372
- package/.cursor/plans/update-js-e795d61b.plan.md +0 -567
- package/dist/types/flow/base/flowDisposable.d.ts +0 -67
- package/dist/types/flow/base/flowDisposable.d.ts.map +0 -1
- package/dist/types/flow/base/flowEffect.d.ts +0 -127
- package/dist/types/flow/base/flowEffect.d.ts.map +0 -1
- package/dist/types/flow/base/flowGraph.d.ts +0 -97
- package/dist/types/flow/base/flowGraph.d.ts.map +0 -1
- package/dist/types/flow/base/flowSignal.d.ts +0 -134
- package/dist/types/flow/base/flowSignal.d.ts.map +0 -1
- package/dist/types/flow/base/flowTracker.d.ts +0 -15
- package/dist/types/flow/base/flowTracker.d.ts.map +0 -1
- package/dist/types/flow/base/index.d.ts +0 -7
- package/dist/types/flow/base/index.d.ts.map +0 -1
- package/dist/types/flow/base/utils.d.ts +0 -20
- package/dist/types/flow/base/utils.d.ts.map +0 -1
- package/dist/types/flow/collections/flowArray.d.ts +0 -148
- package/dist/types/flow/collections/flowArray.d.ts.map +0 -1
- package/dist/types/flow/collections/flowMap.d.ts +0 -224
- package/dist/types/flow/collections/flowMap.d.ts.map +0 -1
- package/dist/types/flow/collections/index.d.ts.map +0 -1
- package/dist/types/flow/index.d.ts +0 -4
- package/dist/types/flow/index.d.ts.map +0 -1
- package/dist/types/flow/nodes/async/flowConstantAsync.d.ts +0 -137
- package/dist/types/flow/nodes/async/flowConstantAsync.d.ts.map +0 -1
- package/dist/types/flow/nodes/async/flowDerivationAsync.d.ts +0 -137
- package/dist/types/flow/nodes/async/flowDerivationAsync.d.ts.map +0 -1
- package/dist/types/flow/nodes/async/flowNodeAsync.d.ts +0 -343
- package/dist/types/flow/nodes/async/flowNodeAsync.d.ts.map +0 -1
- package/dist/types/flow/nodes/async/flowReadonlyAsync.d.ts +0 -81
- package/dist/types/flow/nodes/async/flowReadonlyAsync.d.ts.map +0 -1
- package/dist/types/flow/nodes/async/flowStateAsync.d.ts +0 -111
- package/dist/types/flow/nodes/async/flowStateAsync.d.ts.map +0 -1
- package/dist/types/flow/nodes/async/index.d.ts.map +0 -1
- package/dist/types/flow/nodes/index.d.ts +0 -3
- package/dist/types/flow/nodes/index.d.ts.map +0 -1
- package/dist/types/flow/nodes/sync/flowConstant.d.ts +0 -108
- package/dist/types/flow/nodes/sync/flowConstant.d.ts.map +0 -1
- package/dist/types/flow/nodes/sync/flowDerivation.d.ts +0 -100
- package/dist/types/flow/nodes/sync/flowDerivation.d.ts.map +0 -1
- package/dist/types/flow/nodes/sync/flowNode.d.ts +0 -314
- package/dist/types/flow/nodes/sync/flowNode.d.ts.map +0 -1
- package/dist/types/flow/nodes/sync/flowReadonly.d.ts +0 -57
- package/dist/types/flow/nodes/sync/flowReadonly.d.ts.map +0 -1
- package/dist/types/flow/nodes/sync/flowState.d.ts +0 -96
- package/dist/types/flow/nodes/sync/flowState.d.ts.map +0 -1
- package/dist/types/flow/nodes/sync/index.d.ts.map +0 -1
- package/dist/types/solid/converters.d.ts +0 -57
- package/dist/types/solid/converters.d.ts.map +0 -1
- package/dist/types/solid/index.d.ts +0 -3
- package/dist/types/solid/index.d.ts.map +0 -1
- package/dist/types/solid/primitives.d.ts +0 -181
- package/dist/types/solid/primitives.d.ts.map +0 -1
- package/docs/api/classes/FlowArray.md +0 -489
- package/docs/api/classes/FlowConstant.md +0 -350
- package/docs/api/classes/FlowDerivation.md +0 -334
- package/docs/api/classes/FlowEffect.md +0 -100
- package/docs/api/classes/FlowMap.md +0 -512
- package/docs/api/classes/FlowObservable.md +0 -306
- package/docs/api/classes/FlowResource.md +0 -380
- package/docs/api/classes/FlowResourceAsync.md +0 -362
- package/docs/api/classes/FlowSignal.md +0 -160
- package/docs/api/classes/FlowState.md +0 -368
- package/docs/api/classes/FlowStream.md +0 -367
- package/docs/api/classes/FlowStreamAsync.md +0 -364
- package/docs/api/classes/SolidDerivation.md +0 -75
- package/docs/api/classes/SolidResource.md +0 -91
- package/docs/api/classes/SolidState.md +0 -71
- package/docs/api/classes/TrackingContext.md +0 -33
- package/docs/api/functions/effect.md +0 -49
- package/docs/api/functions/resource.md +0 -52
- package/docs/api/functions/resourceAsync.md +0 -50
- package/docs/api/functions/stream.md +0 -53
- package/docs/api/functions/streamAsync.md +0 -50
- package/docs/api/interfaces/SolidObservable.md +0 -19
- package/docs/api/type-aliases/FlowStreamDisposer.md +0 -15
- package/docs/api/type-aliases/FlowStreamSetter.md +0 -27
- package/docs/api/type-aliases/FlowStreamUpdater.md +0 -32
- package/docs/api/type-aliases/SolidGetter.md +0 -17
- package/docs/guide/primitives/resources.md +0 -858
- package/docs/guide/primitives/streams.md +0 -931
- package/src/flow/base/flowDisposable.ts +0 -71
- package/src/flow/base/flowEffect.ts +0 -171
- package/src/flow/base/flowGraph.ts +0 -288
- package/src/flow/base/flowSignal.ts +0 -207
- package/src/flow/base/flowTracker.ts +0 -17
- package/src/flow/base/index.ts +0 -6
- package/src/flow/base/utils.ts +0 -19
- package/src/flow/collections/flowArray.ts +0 -409
- package/src/flow/collections/flowMap.ts +0 -398
- package/src/flow/nodes/async/flowConstantAsync.ts +0 -142
- package/src/flow/nodes/async/flowDerivationAsync.ts +0 -143
- package/src/flow/nodes/async/flowNodeAsync.ts +0 -474
- package/src/flow/nodes/async/flowReadonlyAsync.ts +0 -81
- package/src/flow/nodes/async/flowStateAsync.ts +0 -116
- package/src/flow/nodes/await/advanced/index.ts +0 -5
- package/src/flow/nodes/await/advanced/resource.ts +0 -134
- package/src/flow/nodes/await/advanced/resourceAsync.ts +0 -109
- package/src/flow/nodes/await/advanced/stream.ts +0 -188
- package/src/flow/nodes/await/advanced/streamAsync.ts +0 -176
- package/src/flow/nodes/await/flowConstantAwait.ts +0 -154
- package/src/flow/nodes/await/flowDerivationAwait.ts +0 -154
- package/src/flow/nodes/await/flowNodeAwait.ts +0 -508
- package/src/flow/nodes/await/flowReadonlyAwait.ts +0 -89
- package/src/flow/nodes/await/flowStateAwait.ts +0 -130
- package/src/flow/nodes/await/index.ts +0 -5
- package/src/flow/nodes/index.ts +0 -3
- package/src/flow/nodes/sync/flowConstant.ts +0 -111
- package/src/flow/nodes/sync/flowDerivation.ts +0 -105
- package/src/flow/nodes/sync/flowNode.ts +0 -439
- package/src/flow/nodes/sync/flowReadonly.ts +0 -57
- package/src/flow/nodes/sync/flowState.ts +0 -101
- package/src/solid/converters.ts +0 -148
- package/src/solid/index.ts +0 -2
- package/src/solid/primitives.ts +0 -215
- package/test/base/flowEffect.test.ts +0 -108
- package/test/base/flowGraph.test.ts +0 -485
- package/test/base/flowSignal.test.ts +0 -372
- package/test/collections/flowArray.asyncStates.test.ts +0 -1553
- package/test/collections/flowArray.scalars.test.ts +0 -1129
- package/test/collections/flowArray.states.test.ts +0 -1365
- package/test/collections/flowMap.asyncStates.test.ts +0 -1105
- package/test/collections/flowMap.scalars.test.ts +0 -877
- package/test/collections/flowMap.states.test.ts +0 -1097
- package/test/nodes/async/flowConstantAsync.test.ts +0 -860
- package/test/nodes/async/flowDerivationAsync.test.ts +0 -1517
- package/test/nodes/async/flowStateAsync.test.ts +0 -1387
- package/test/nodes/await/advanced/resource.test.ts +0 -129
- package/test/nodes/await/advanced/resourceAsync.test.ts +0 -108
- package/test/nodes/await/advanced/stream.test.ts +0 -198
- package/test/nodes/await/advanced/streamAsync.test.ts +0 -196
- package/test/nodes/await/flowConstantAwait.test.ts +0 -643
- package/test/nodes/await/flowDerivationAwait.test.ts +0 -1583
- package/test/nodes/await/flowStateAwait.test.ts +0 -999
- package/test/nodes/mixed/derivation.test.ts +0 -1527
- package/test/nodes/sync/flowConstant.test.ts +0 -620
- package/test/nodes/sync/flowDerivation.test.ts +0 -1373
- package/test/nodes/sync/flowState.test.ts +0 -945
- package/test/solid/converters.test.ts +0 -721
- package/test/solid/primitives.test.ts +0 -1031
- /package/dist/types/{flow → api/nodes}/collections/index.d.ts +0 -0
- /package/docs/guide/advanced/{upgrading.md → migration-v1.md} +0 -0
- /package/src/{flow → api/nodes}/collections/index.ts +0 -0
|
@@ -1,350 +0,0 @@
|
|
|
1
|
-
[@ersbeth/picoflow](/api/index.md) / FlowConstant
|
|
2
|
-
|
|
3
|
-
# Class: FlowConstant\<T\>
|
|
4
|
-
|
|
5
|
-
Defined in: [basic/constant.ts:49](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/basic/constant.ts#L49)
|
|
6
|
-
|
|
7
|
-
Represents a reactive and immutable constant value that can be computed lazily upon first access.
|
|
8
|
-
|
|
9
|
-
## Remarks
|
|
10
|
-
|
|
11
|
-
FlowConstant extends FlowObservable to provide an immutable reactive value. Unlike [FlowState](/api/classes/FlowState.md),
|
|
12
|
-
which is mutable via the `set()` method, a constant's value never changes after initialization.
|
|
13
|
-
|
|
14
|
-
**Initialization Patterns:**
|
|
15
|
-
- **Direct value**: Pass a value directly; it's stored immediately.
|
|
16
|
-
- **Lazy initialization**: Pass a function; it's called only when the value is first accessed
|
|
17
|
-
via `get()` or `pick()`.
|
|
18
|
-
|
|
19
|
-
**Lazy Evaluation Benefits:**
|
|
20
|
-
Lazy initialization is useful when:
|
|
21
|
-
- The computation is expensive and may not be needed immediately
|
|
22
|
-
- The value depends on resources that aren't available at construction time
|
|
23
|
-
- You want to defer computation until the value is actually needed
|
|
24
|
-
|
|
25
|
-
**Caching:**
|
|
26
|
-
Once computed (either immediately or lazily), the value is cached permanently. All subsequent
|
|
27
|
-
accesses return the cached value without re-computation.
|
|
28
|
-
|
|
29
|
-
**Use Cases:**
|
|
30
|
-
- Configuration values that don't change
|
|
31
|
-
- Expensive computations that should only run once
|
|
32
|
-
- Initialization values for other reactive primitives
|
|
33
|
-
|
|
34
|
-
## Example
|
|
35
|
-
|
|
36
|
-
```typescript
|
|
37
|
-
// Direct value - initialized immediately
|
|
38
|
-
const $config = constant({ apiUrl: 'https://api.example.com' });
|
|
39
|
-
|
|
40
|
-
// Lazy initialization - computed on first access
|
|
41
|
-
const $expensiveValue = constant(() => {
|
|
42
|
-
console.log('Computing...');
|
|
43
|
-
return performExpensiveCalculation();
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
$expensiveValue.pick(); // Logs: "Computing..."
|
|
47
|
-
$expensiveValue.pick(); // No log - returns cached value
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
## Extends
|
|
51
|
-
|
|
52
|
-
- [`FlowObservable`](/api/classes/FlowObservable.md)\<`T`\>
|
|
53
|
-
|
|
54
|
-
## Extended by
|
|
55
|
-
|
|
56
|
-
- [`FlowState`](/api/classes/FlowState.md)
|
|
57
|
-
|
|
58
|
-
## Type Parameters
|
|
59
|
-
|
|
60
|
-
| Type Parameter | Description |
|
|
61
|
-
| ------ | ------ |
|
|
62
|
-
| `T` | The type of the constant value. |
|
|
63
|
-
|
|
64
|
-
## Constructors
|
|
65
|
-
|
|
66
|
-
### Constructor
|
|
67
|
-
|
|
68
|
-
```ts
|
|
69
|
-
new FlowConstant<T>(value): FlowConstant<T>;
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
Defined in: [basic/constant.ts:59](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/basic/constant.ts#L59)
|
|
73
|
-
|
|
74
|
-
Creates a new FlowConstant instance.
|
|
75
|
-
|
|
76
|
-
#### Parameters
|
|
77
|
-
|
|
78
|
-
| Parameter | Type | Description |
|
|
79
|
-
| ------ | ------ | ------ |
|
|
80
|
-
| `value` | `T` \| () => `T` | Either a direct value of type T or a function returning a value of type T. If a function is provided, it will be invoked lazily on the first value access. If a direct value is provided, it is stored immediately. |
|
|
81
|
-
|
|
82
|
-
#### Returns
|
|
83
|
-
|
|
84
|
-
`FlowConstant`\<`T`\>
|
|
85
|
-
|
|
86
|
-
#### Overrides
|
|
87
|
-
|
|
88
|
-
[`FlowObservable`](/api/classes/FlowObservable.md).[`constructor`](/api/classes/FlowObservable.md#constructor)
|
|
89
|
-
|
|
90
|
-
## Accessors
|
|
91
|
-
|
|
92
|
-
### disposed
|
|
93
|
-
|
|
94
|
-
#### Get Signature
|
|
95
|
-
|
|
96
|
-
```ts
|
|
97
|
-
get disposed(): boolean;
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
Defined in: [basic/signal.ts:97](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/basic/signal.ts#L97)
|
|
101
|
-
|
|
102
|
-
Indicates whether the FlowSignal has been disposed.
|
|
103
|
-
|
|
104
|
-
##### Remarks
|
|
105
|
-
|
|
106
|
-
Once disposed, the signal should not be used.
|
|
107
|
-
|
|
108
|
-
##### Returns
|
|
109
|
-
|
|
110
|
-
`boolean`
|
|
111
|
-
|
|
112
|
-
#### Inherited from
|
|
113
|
-
|
|
114
|
-
[`FlowObservable`](/api/classes/FlowObservable.md).[`disposed`](/api/classes/FlowObservable.md#disposed)
|
|
115
|
-
|
|
116
|
-
## Methods
|
|
117
|
-
|
|
118
|
-
### dispose()
|
|
119
|
-
|
|
120
|
-
```ts
|
|
121
|
-
dispose(options?): void;
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
Defined in: [basic/signal.ts:69](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/basic/signal.ts#L69)
|
|
125
|
-
|
|
126
|
-
Disposes the FlowSignal.
|
|
127
|
-
Cleans up all registered effects, listeners, and dependencies.
|
|
128
|
-
Once disposed, further usage of the signal will throw an error.
|
|
129
|
-
|
|
130
|
-
#### Parameters
|
|
131
|
-
|
|
132
|
-
| Parameter | Type |
|
|
133
|
-
| ------ | ------ |
|
|
134
|
-
| `options?` | \{ `self`: `boolean`; \} |
|
|
135
|
-
| `options.self?` | `boolean` |
|
|
136
|
-
|
|
137
|
-
#### Returns
|
|
138
|
-
|
|
139
|
-
`void`
|
|
140
|
-
|
|
141
|
-
#### Throws
|
|
142
|
-
|
|
143
|
-
If the FlowSignal is already disposed.
|
|
144
|
-
|
|
145
|
-
#### Inherited from
|
|
146
|
-
|
|
147
|
-
[`FlowObservable`](/api/classes/FlowObservable.md).[`dispose`](/api/classes/FlowObservable.md#dispose)
|
|
148
|
-
|
|
149
|
-
***
|
|
150
|
-
|
|
151
|
-
### get()
|
|
152
|
-
|
|
153
|
-
```ts
|
|
154
|
-
get(context): T;
|
|
155
|
-
```
|
|
156
|
-
|
|
157
|
-
Defined in: [basic/observable.ts:47](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/basic/observable.ts#L47)
|
|
158
|
-
|
|
159
|
-
Gets the current value with optional dependency tracking.
|
|
160
|
-
|
|
161
|
-
#### Parameters
|
|
162
|
-
|
|
163
|
-
| Parameter | Type | Description |
|
|
164
|
-
| ------ | ------ | ------ |
|
|
165
|
-
| `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. |
|
|
166
|
-
|
|
167
|
-
#### Returns
|
|
168
|
-
|
|
169
|
-
`T`
|
|
170
|
-
|
|
171
|
-
The current value of type T.
|
|
172
|
-
|
|
173
|
-
#### Remarks
|
|
174
|
-
|
|
175
|
-
Use `get(t)` within effects and derivations to create reactive dependencies.
|
|
176
|
-
Use `get(null)` when you need to read a value without tracking (though `pick()` is more idiomatic).
|
|
177
|
-
|
|
178
|
-
#### Example
|
|
179
|
-
|
|
180
|
-
```typescript
|
|
181
|
-
effect((t) => {
|
|
182
|
-
const tracked = $state.get(t); // Dependency registered
|
|
183
|
-
const untracked = $other.get(null); // No dependency
|
|
184
|
-
});
|
|
185
|
-
```
|
|
186
|
-
|
|
187
|
-
#### Inherited from
|
|
188
|
-
|
|
189
|
-
[`FlowObservable`](/api/classes/FlowObservable.md).[`get`](/api/classes/FlowObservable.md#get)
|
|
190
|
-
|
|
191
|
-
***
|
|
192
|
-
|
|
193
|
-
### pick()
|
|
194
|
-
|
|
195
|
-
```ts
|
|
196
|
-
pick(): T;
|
|
197
|
-
```
|
|
198
|
-
|
|
199
|
-
Defined in: [basic/observable.ts:82](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/basic/observable.ts#L82)
|
|
200
|
-
|
|
201
|
-
Gets the current value without any dependency tracking.
|
|
202
|
-
|
|
203
|
-
#### Returns
|
|
204
|
-
|
|
205
|
-
`T`
|
|
206
|
-
|
|
207
|
-
The current value of type T.
|
|
208
|
-
|
|
209
|
-
#### Remarks
|
|
210
|
-
|
|
211
|
-
This method is equivalent to calling `get(null)` but provides a more semantic and readable API.
|
|
212
|
-
Use `pick()` when you want to read a snapshot of the current value without creating a reactive
|
|
213
|
-
dependency. This is useful for:
|
|
214
|
-
- Reading initial values
|
|
215
|
-
- Accessing configuration that shouldn't trigger updates
|
|
216
|
-
- Mixing tracked and untracked reads in the same effect
|
|
217
|
-
|
|
218
|
-
#### Example
|
|
219
|
-
|
|
220
|
-
```typescript
|
|
221
|
-
// Read a snapshot outside reactive context
|
|
222
|
-
const currentValue = $state.pick();
|
|
223
|
-
|
|
224
|
-
// Mix tracked and untracked reads
|
|
225
|
-
effect((t) => {
|
|
226
|
-
const tracked = $reactive.get(t); // Triggers re-runs
|
|
227
|
-
const snapshot = $config.pick(); // Doesn't trigger re-runs
|
|
228
|
-
processData(tracked, snapshot);
|
|
229
|
-
});
|
|
230
|
-
```
|
|
231
|
-
|
|
232
|
-
#### Inherited from
|
|
233
|
-
|
|
234
|
-
[`FlowObservable`](/api/classes/FlowObservable.md).[`pick`](/api/classes/FlowObservable.md#pick)
|
|
235
|
-
|
|
236
|
-
***
|
|
237
|
-
|
|
238
|
-
### subscribe()
|
|
239
|
-
|
|
240
|
-
```ts
|
|
241
|
-
subscribe(listener): () => void;
|
|
242
|
-
```
|
|
243
|
-
|
|
244
|
-
Defined in: [basic/observable.ts:103](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/basic/observable.ts#L103)
|
|
245
|
-
|
|
246
|
-
Subscribes a listener function to changes of the observable.
|
|
247
|
-
The listener is executed immediately with the current value and on subsequent updates.
|
|
248
|
-
|
|
249
|
-
#### Parameters
|
|
250
|
-
|
|
251
|
-
| Parameter | Type | Description |
|
|
252
|
-
| ------ | ------ | ------ |
|
|
253
|
-
| `listener` | (`value`) => `void` | A callback function that receives the new value. |
|
|
254
|
-
|
|
255
|
-
#### Returns
|
|
256
|
-
|
|
257
|
-
A disposer function to cancel the subscription.
|
|
258
|
-
|
|
259
|
-
```ts
|
|
260
|
-
(): void;
|
|
261
|
-
```
|
|
262
|
-
|
|
263
|
-
##### Returns
|
|
264
|
-
|
|
265
|
-
`void`
|
|
266
|
-
|
|
267
|
-
#### Inherited from
|
|
268
|
-
|
|
269
|
-
[`FlowObservable`](/api/classes/FlowObservable.md).[`subscribe`](/api/classes/FlowObservable.md#subscribe)
|
|
270
|
-
|
|
271
|
-
***
|
|
272
|
-
|
|
273
|
-
### trigger()
|
|
274
|
-
|
|
275
|
-
```ts
|
|
276
|
-
trigger(): void;
|
|
277
|
-
```
|
|
278
|
-
|
|
279
|
-
Defined in: [basic/signal.ts:19](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/basic/signal.ts#L19)
|
|
280
|
-
|
|
281
|
-
Triggers the FlowSignal.
|
|
282
|
-
Notifies all registered listeners and schedules execution of associated effects.
|
|
283
|
-
|
|
284
|
-
#### Returns
|
|
285
|
-
|
|
286
|
-
`void`
|
|
287
|
-
|
|
288
|
-
#### Throws
|
|
289
|
-
|
|
290
|
-
If the FlowSignal has already been disposed.
|
|
291
|
-
|
|
292
|
-
#### Inherited from
|
|
293
|
-
|
|
294
|
-
[`FlowObservable`](/api/classes/FlowObservable.md).[`trigger`](/api/classes/FlowObservable.md#trigger)
|
|
295
|
-
|
|
296
|
-
***
|
|
297
|
-
|
|
298
|
-
### watch()
|
|
299
|
-
|
|
300
|
-
```ts
|
|
301
|
-
watch(context): void;
|
|
302
|
-
```
|
|
303
|
-
|
|
304
|
-
Defined in: [basic/signal.ts:57](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/basic/signal.ts#L57)
|
|
305
|
-
|
|
306
|
-
Watches the signal, registering it as a dependency in the tracking context.
|
|
307
|
-
|
|
308
|
-
#### Parameters
|
|
309
|
-
|
|
310
|
-
| Parameter | Type | Description |
|
|
311
|
-
| ------ | ------ | ------ |
|
|
312
|
-
| `context` | [`TrackingContext`](/api/classes/TrackingContext.md) | The tracking context in which to register this signal as a dependency. |
|
|
313
|
-
|
|
314
|
-
#### Returns
|
|
315
|
-
|
|
316
|
-
`void`
|
|
317
|
-
|
|
318
|
-
#### Remarks
|
|
319
|
-
|
|
320
|
-
Use `watch()` when you want to track a signal without reading its value (signals don't
|
|
321
|
-
have values to read). This is useful for triggering effects based on signal events
|
|
322
|
-
without needing associated data.
|
|
323
|
-
|
|
324
|
-
When the signal is triggered via `trigger()`, any effects or derivations that have
|
|
325
|
-
watched this signal will automatically re-execute.
|
|
326
|
-
|
|
327
|
-
This method must be called within an effect or derivation context where a TrackingContext
|
|
328
|
-
is available. For observables (which hold values), use `.get(t)` instead, which both
|
|
329
|
-
reads the value and watches for changes.
|
|
330
|
-
|
|
331
|
-
#### Throws
|
|
332
|
-
|
|
333
|
-
Error if the signal has been disposed.
|
|
334
|
-
|
|
335
|
-
#### Example
|
|
336
|
-
|
|
337
|
-
```typescript
|
|
338
|
-
const $signal = signal();
|
|
339
|
-
|
|
340
|
-
effect((t) => {
|
|
341
|
-
$signal.watch(t); // Track the signal
|
|
342
|
-
console.log('Signal triggered!');
|
|
343
|
-
});
|
|
344
|
-
|
|
345
|
-
$signal.trigger(); // Logs: "Signal triggered!"
|
|
346
|
-
```
|
|
347
|
-
|
|
348
|
-
#### Inherited from
|
|
349
|
-
|
|
350
|
-
[`FlowObservable`](/api/classes/FlowObservable.md).[`watch`](/api/classes/FlowObservable.md#watch)
|
|
@@ -1,334 +0,0 @@
|
|
|
1
|
-
[@ersbeth/picoflow](/api/index.md) / FlowDerivation
|
|
2
|
-
|
|
3
|
-
# Class: FlowDerivation\<T\>
|
|
4
|
-
|
|
5
|
-
Defined in: [basic/derivation.ts:43](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/basic/derivation.ts#L43)
|
|
6
|
-
|
|
7
|
-
Represents a reactive derivation whose value is computed based on other reactive signals.
|
|
8
|
-
|
|
9
|
-
## Remarks
|
|
10
|
-
|
|
11
|
-
FlowDerivation creates a computed value that automatically tracks its dependencies and
|
|
12
|
-
recomputes when any dependency changes. The computation is lazy: it doesn't execute until
|
|
13
|
-
the value is first accessed (via `get()` or `pick()`), and subsequent accesses return the
|
|
14
|
-
cached value until a dependency changes.
|
|
15
|
-
|
|
16
|
-
**Lazy Initialization:**
|
|
17
|
-
The compute function doesn't run immediately upon creation. It runs only when:
|
|
18
|
-
- The value is first read via `get()` or `pick()`
|
|
19
|
-
- The derivation is watched via `watch()`
|
|
20
|
-
|
|
21
|
-
**Dirty Checking and Recomputation:**
|
|
22
|
-
When a tracked dependency changes, the derivation is marked as "dirty" but doesn't recompute
|
|
23
|
-
immediately. Recomputation happens lazily on the next value access. This prevents unnecessary
|
|
24
|
-
computations when multiple dependencies change in quick succession.
|
|
25
|
-
|
|
26
|
-
**Dynamic Dependencies:**
|
|
27
|
-
Dependencies are tracked dynamically during each computation. If the compute function
|
|
28
|
-
conditionally tracks different observables, the dependency graph updates automatically.
|
|
29
|
-
|
|
30
|
-
## Example
|
|
31
|
-
|
|
32
|
-
```typescript
|
|
33
|
-
const $firstName = state('John');
|
|
34
|
-
const $lastName = state('Doe');
|
|
35
|
-
|
|
36
|
-
const $fullName = derivation((t) => {
|
|
37
|
-
return `${$firstName.get(t)} ${$lastName.get(t)}`;
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
// Compute function hasn't run yet (lazy)
|
|
41
|
-
const name = $fullName.pick(); // Now it computes
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
## Extends
|
|
45
|
-
|
|
46
|
-
- [`FlowObservable`](/api/classes/FlowObservable.md)\<`T`\>
|
|
47
|
-
|
|
48
|
-
## Type Parameters
|
|
49
|
-
|
|
50
|
-
| Type Parameter | Description |
|
|
51
|
-
| ------ | ------ |
|
|
52
|
-
| `T` | The type of the computed value. |
|
|
53
|
-
|
|
54
|
-
## Constructors
|
|
55
|
-
|
|
56
|
-
### Constructor
|
|
57
|
-
|
|
58
|
-
```ts
|
|
59
|
-
new FlowDerivation<T>(compute): FlowDerivation<T>;
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
Defined in: [basic/derivation.ts:53](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/basic/derivation.ts#L53)
|
|
63
|
-
|
|
64
|
-
Creates a new FlowDerivation.
|
|
65
|
-
|
|
66
|
-
#### Parameters
|
|
67
|
-
|
|
68
|
-
| Parameter | Type | Description |
|
|
69
|
-
| ------ | ------ | ------ |
|
|
70
|
-
| `compute` | (`t`) => `T` | A function that computes the derived value using a tracking context. The function receives a TrackingContext and should use it to access dependencies via `.get(t)`. The function is not executed immediately; it runs lazily on first access. |
|
|
71
|
-
|
|
72
|
-
#### Returns
|
|
73
|
-
|
|
74
|
-
`FlowDerivation`\<`T`\>
|
|
75
|
-
|
|
76
|
-
#### Overrides
|
|
77
|
-
|
|
78
|
-
[`FlowObservable`](/api/classes/FlowObservable.md).[`constructor`](/api/classes/FlowObservable.md#constructor)
|
|
79
|
-
|
|
80
|
-
## Accessors
|
|
81
|
-
|
|
82
|
-
### disposed
|
|
83
|
-
|
|
84
|
-
#### Get Signature
|
|
85
|
-
|
|
86
|
-
```ts
|
|
87
|
-
get disposed(): boolean;
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
Defined in: [basic/signal.ts:97](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/basic/signal.ts#L97)
|
|
91
|
-
|
|
92
|
-
Indicates whether the FlowSignal has been disposed.
|
|
93
|
-
|
|
94
|
-
##### Remarks
|
|
95
|
-
|
|
96
|
-
Once disposed, the signal should not be used.
|
|
97
|
-
|
|
98
|
-
##### Returns
|
|
99
|
-
|
|
100
|
-
`boolean`
|
|
101
|
-
|
|
102
|
-
#### Inherited from
|
|
103
|
-
|
|
104
|
-
[`FlowObservable`](/api/classes/FlowObservable.md).[`disposed`](/api/classes/FlowObservable.md#disposed)
|
|
105
|
-
|
|
106
|
-
## Methods
|
|
107
|
-
|
|
108
|
-
### dispose()
|
|
109
|
-
|
|
110
|
-
```ts
|
|
111
|
-
dispose(options?): void;
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
Defined in: [basic/signal.ts:69](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/basic/signal.ts#L69)
|
|
115
|
-
|
|
116
|
-
Disposes the FlowSignal.
|
|
117
|
-
Cleans up all registered effects, listeners, and dependencies.
|
|
118
|
-
Once disposed, further usage of the signal will throw an error.
|
|
119
|
-
|
|
120
|
-
#### Parameters
|
|
121
|
-
|
|
122
|
-
| Parameter | Type |
|
|
123
|
-
| ------ | ------ |
|
|
124
|
-
| `options?` | \{ `self`: `boolean`; \} |
|
|
125
|
-
| `options.self?` | `boolean` |
|
|
126
|
-
|
|
127
|
-
#### Returns
|
|
128
|
-
|
|
129
|
-
`void`
|
|
130
|
-
|
|
131
|
-
#### Throws
|
|
132
|
-
|
|
133
|
-
If the FlowSignal is already disposed.
|
|
134
|
-
|
|
135
|
-
#### Inherited from
|
|
136
|
-
|
|
137
|
-
[`FlowObservable`](/api/classes/FlowObservable.md).[`dispose`](/api/classes/FlowObservable.md#dispose)
|
|
138
|
-
|
|
139
|
-
***
|
|
140
|
-
|
|
141
|
-
### get()
|
|
142
|
-
|
|
143
|
-
```ts
|
|
144
|
-
get(context): T;
|
|
145
|
-
```
|
|
146
|
-
|
|
147
|
-
Defined in: [basic/observable.ts:47](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/basic/observable.ts#L47)
|
|
148
|
-
|
|
149
|
-
Gets the current value with optional dependency tracking.
|
|
150
|
-
|
|
151
|
-
#### Parameters
|
|
152
|
-
|
|
153
|
-
| Parameter | Type | Description |
|
|
154
|
-
| ------ | ------ | ------ |
|
|
155
|
-
| `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. |
|
|
156
|
-
|
|
157
|
-
#### Returns
|
|
158
|
-
|
|
159
|
-
`T`
|
|
160
|
-
|
|
161
|
-
The current value of type T.
|
|
162
|
-
|
|
163
|
-
#### Remarks
|
|
164
|
-
|
|
165
|
-
Use `get(t)` within effects and derivations to create reactive dependencies.
|
|
166
|
-
Use `get(null)` when you need to read a value without tracking (though `pick()` is more idiomatic).
|
|
167
|
-
|
|
168
|
-
#### Example
|
|
169
|
-
|
|
170
|
-
```typescript
|
|
171
|
-
effect((t) => {
|
|
172
|
-
const tracked = $state.get(t); // Dependency registered
|
|
173
|
-
const untracked = $other.get(null); // No dependency
|
|
174
|
-
});
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
#### Inherited from
|
|
178
|
-
|
|
179
|
-
[`FlowObservable`](/api/classes/FlowObservable.md).[`get`](/api/classes/FlowObservable.md#get)
|
|
180
|
-
|
|
181
|
-
***
|
|
182
|
-
|
|
183
|
-
### pick()
|
|
184
|
-
|
|
185
|
-
```ts
|
|
186
|
-
pick(): T;
|
|
187
|
-
```
|
|
188
|
-
|
|
189
|
-
Defined in: [basic/observable.ts:82](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/basic/observable.ts#L82)
|
|
190
|
-
|
|
191
|
-
Gets the current value without any dependency tracking.
|
|
192
|
-
|
|
193
|
-
#### Returns
|
|
194
|
-
|
|
195
|
-
`T`
|
|
196
|
-
|
|
197
|
-
The current value of type T.
|
|
198
|
-
|
|
199
|
-
#### Remarks
|
|
200
|
-
|
|
201
|
-
This method is equivalent to calling `get(null)` but provides a more semantic and readable API.
|
|
202
|
-
Use `pick()` when you want to read a snapshot of the current value without creating a reactive
|
|
203
|
-
dependency. This is useful for:
|
|
204
|
-
- Reading initial values
|
|
205
|
-
- Accessing configuration that shouldn't trigger updates
|
|
206
|
-
- Mixing tracked and untracked reads in the same effect
|
|
207
|
-
|
|
208
|
-
#### Example
|
|
209
|
-
|
|
210
|
-
```typescript
|
|
211
|
-
// Read a snapshot outside reactive context
|
|
212
|
-
const currentValue = $state.pick();
|
|
213
|
-
|
|
214
|
-
// Mix tracked and untracked reads
|
|
215
|
-
effect((t) => {
|
|
216
|
-
const tracked = $reactive.get(t); // Triggers re-runs
|
|
217
|
-
const snapshot = $config.pick(); // Doesn't trigger re-runs
|
|
218
|
-
processData(tracked, snapshot);
|
|
219
|
-
});
|
|
220
|
-
```
|
|
221
|
-
|
|
222
|
-
#### Inherited from
|
|
223
|
-
|
|
224
|
-
[`FlowObservable`](/api/classes/FlowObservable.md).[`pick`](/api/classes/FlowObservable.md#pick)
|
|
225
|
-
|
|
226
|
-
***
|
|
227
|
-
|
|
228
|
-
### subscribe()
|
|
229
|
-
|
|
230
|
-
```ts
|
|
231
|
-
subscribe(listener): () => void;
|
|
232
|
-
```
|
|
233
|
-
|
|
234
|
-
Defined in: [basic/observable.ts:103](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/basic/observable.ts#L103)
|
|
235
|
-
|
|
236
|
-
Subscribes a listener function to changes of the observable.
|
|
237
|
-
The listener is executed immediately with the current value and on subsequent updates.
|
|
238
|
-
|
|
239
|
-
#### Parameters
|
|
240
|
-
|
|
241
|
-
| Parameter | Type | Description |
|
|
242
|
-
| ------ | ------ | ------ |
|
|
243
|
-
| `listener` | (`value`) => `void` | A callback function that receives the new value. |
|
|
244
|
-
|
|
245
|
-
#### Returns
|
|
246
|
-
|
|
247
|
-
A disposer function to cancel the subscription.
|
|
248
|
-
|
|
249
|
-
```ts
|
|
250
|
-
(): void;
|
|
251
|
-
```
|
|
252
|
-
|
|
253
|
-
##### Returns
|
|
254
|
-
|
|
255
|
-
`void`
|
|
256
|
-
|
|
257
|
-
#### Inherited from
|
|
258
|
-
|
|
259
|
-
[`FlowObservable`](/api/classes/FlowObservable.md).[`subscribe`](/api/classes/FlowObservable.md#subscribe)
|
|
260
|
-
|
|
261
|
-
***
|
|
262
|
-
|
|
263
|
-
### trigger()
|
|
264
|
-
|
|
265
|
-
```ts
|
|
266
|
-
trigger(): void;
|
|
267
|
-
```
|
|
268
|
-
|
|
269
|
-
Defined in: [basic/signal.ts:19](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/basic/signal.ts#L19)
|
|
270
|
-
|
|
271
|
-
Triggers the FlowSignal.
|
|
272
|
-
Notifies all registered listeners and schedules execution of associated effects.
|
|
273
|
-
|
|
274
|
-
#### Returns
|
|
275
|
-
|
|
276
|
-
`void`
|
|
277
|
-
|
|
278
|
-
#### Throws
|
|
279
|
-
|
|
280
|
-
If the FlowSignal has already been disposed.
|
|
281
|
-
|
|
282
|
-
#### Inherited from
|
|
283
|
-
|
|
284
|
-
[`FlowObservable`](/api/classes/FlowObservable.md).[`trigger`](/api/classes/FlowObservable.md#trigger)
|
|
285
|
-
|
|
286
|
-
***
|
|
287
|
-
|
|
288
|
-
### watch()
|
|
289
|
-
|
|
290
|
-
```ts
|
|
291
|
-
watch(context): void;
|
|
292
|
-
```
|
|
293
|
-
|
|
294
|
-
Defined in: [basic/derivation.ts:139](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/basic/derivation.ts#L139)
|
|
295
|
-
|
|
296
|
-
Watches the derivation, registering it as a dependency in the given context.
|
|
297
|
-
|
|
298
|
-
#### Parameters
|
|
299
|
-
|
|
300
|
-
| Parameter | Type | Description |
|
|
301
|
-
| ------ | ------ | ------ |
|
|
302
|
-
| `context` | [`TrackingContext`](/api/classes/TrackingContext.md) | The tracking context in which to register this derivation. |
|
|
303
|
-
|
|
304
|
-
#### Returns
|
|
305
|
-
|
|
306
|
-
`void`
|
|
307
|
-
|
|
308
|
-
#### Remarks
|
|
309
|
-
|
|
310
|
-
This method overrides the base `watch()` to handle a special case: when a derivation
|
|
311
|
-
is watched without having its value read (e.g., `$derivation.watch(t)` instead of
|
|
312
|
-
`$derivation.get(t)`), the derivation still needs to compute its value to establish
|
|
313
|
-
its own dependencies. Otherwise, the derivation would be tracked but wouldn't track
|
|
314
|
-
its own dependencies, breaking the reactive chain.
|
|
315
|
-
|
|
316
|
-
This override ensures that:
|
|
317
|
-
1. The derivation is registered as a dependency in the provided context
|
|
318
|
-
2. The derivation computes its value (if not already computed)
|
|
319
|
-
3. The derivation tracks its own dependencies during computation
|
|
320
|
-
|
|
321
|
-
#### Example
|
|
322
|
-
|
|
323
|
-
```typescript
|
|
324
|
-
const $derived = derivation((t) => $state.get(t) * 2);
|
|
325
|
-
|
|
326
|
-
effect((t) => {
|
|
327
|
-
$derived.watch(t); // Derivation computes even without reading value
|
|
328
|
-
doSomething(); // Effect re-runs when $derived's dependencies change
|
|
329
|
-
});
|
|
330
|
-
```
|
|
331
|
-
|
|
332
|
-
#### Overrides
|
|
333
|
-
|
|
334
|
-
[`FlowObservable`](/api/classes/FlowObservable.md).[`watch`](/api/classes/FlowObservable.md#watch)
|