@ersbeth/picoflow 1.1.1 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +857 -1528
- 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 -53
- 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 -139
- 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
|
@@ -2,58 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
# Function: from()
|
|
4
4
|
|
|
5
|
-
Converts a FlowObservable or getter function into a Solid derivation or resource, depending on whether the value is synchronous or asynchronous.
|
|
6
|
-
|
|
7
|
-
## Param
|
|
8
|
-
|
|
9
|
-
The FlowObservable or getter function to convert.
|
|
10
|
-
|
|
11
|
-
## Remarks
|
|
12
|
-
|
|
13
|
-
This function bridges PicoFlow's reactive system with SolidJS, allowing you to use
|
|
14
|
-
PicoFlow observables within Solid components. The conversion is automatic based on
|
|
15
|
-
whether the value is a Promise or not:
|
|
16
|
-
|
|
17
|
-
- **FlowObservable of non-Promise value** → SolidDerivation (reactive signal)
|
|
18
|
-
- **FlowObservable of Promise** → SolidResource (async resource)
|
|
19
|
-
- **Getter function returning non-Promise** → SolidDerivation (computed signal)
|
|
20
|
-
- **Getter function returning Promise** → SolidResource (async computed resource)
|
|
21
|
-
|
|
22
|
-
The created Solid primitives automatically subscribe to the PicoFlow observables and
|
|
23
|
-
update when changes occur. The subscription is properly cleaned up when the Solid
|
|
24
|
-
component unmounts.
|
|
25
|
-
|
|
26
|
-
## Example
|
|
27
|
-
|
|
28
|
-
```typescript
|
|
29
|
-
import { from } from 'picoflow/solid';
|
|
30
|
-
import { state } from 'picoflow';
|
|
31
|
-
|
|
32
|
-
// Convert a PicoFlow state to a Solid signal
|
|
33
|
-
const $count = state(0);
|
|
34
|
-
const solidCount = from($count);
|
|
35
|
-
|
|
36
|
-
// Use in a Solid component
|
|
37
|
-
function Counter() {
|
|
38
|
-
const count = solidCount.get(); // Solid's reactive get
|
|
39
|
-
return <div>Count: {count}</div>;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
// Or convert a computation function
|
|
43
|
-
const solidDerived = from((t) => {
|
|
44
|
-
return $count.get(t) * 2;
|
|
45
|
-
});
|
|
46
|
-
```
|
|
47
|
-
|
|
48
5
|
## Call Signature
|
|
49
6
|
|
|
50
7
|
```ts
|
|
51
|
-
function from<T>(flow):
|
|
8
|
+
function from<T>(flow): Resource<T>;
|
|
52
9
|
```
|
|
53
10
|
|
|
54
|
-
Defined in: [solid
|
|
11
|
+
Defined in: [converters/solid.ts:97](https://gitlab.com/ersbeth-web/picoflow/-/blob/4e864254f0eac72524c3be40b9e41d799a16e020/src/converters/solid.ts#L97)
|
|
55
12
|
|
|
56
|
-
Converts a
|
|
13
|
+
Converts a PicoFlow observable or getter function into a SolidJS resource.
|
|
57
14
|
|
|
58
15
|
### Type Parameters
|
|
59
16
|
|
|
@@ -65,82 +22,58 @@ Converts a FlowObservable of a Promise value into a SolidResource.
|
|
|
65
22
|
|
|
66
23
|
| Parameter | Type | Description |
|
|
67
24
|
| ------ | ------ | ------ |
|
|
68
|
-
| `flow` | [`FlowObservable`](/api/
|
|
25
|
+
| `flow` | [`FlowObservable`](/api/interfaces/FlowObservable.md)\<`T`\> | The FlowObservable or getter function to convert. |
|
|
69
26
|
|
|
70
27
|
### Returns
|
|
71
28
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
A SolidResource wrapping the observable.
|
|
75
|
-
|
|
76
|
-
## Call Signature
|
|
77
|
-
|
|
78
|
-
```ts
|
|
79
|
-
function from<T>(flow): SolidDerivation<NotPromise<T>>;
|
|
80
|
-
```
|
|
29
|
+
`Resource`\<`T`\>
|
|
81
30
|
|
|
82
|
-
|
|
31
|
+
A SolidJS Resource that wraps the value or computation.
|
|
83
32
|
|
|
84
|
-
|
|
33
|
+
### Remarks
|
|
85
34
|
|
|
86
|
-
|
|
35
|
+
This function bridges PicoFlow's reactive system with SolidJS, allowing you to use
|
|
36
|
+
PicoFlow primitives and computations within Solid components. All conversions return a
|
|
37
|
+
SolidJS Resource, which can handle both synchronous and asynchronous values seamlessly.
|
|
87
38
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
39
|
+
The conversion works with:
|
|
40
|
+
- **FlowObservable**: Any PicoFlow reactive primitive (e.g., from `state()`, `derivation()`, `stateAsync()`, `derivationAsync()`)
|
|
41
|
+
- **Getter functions**: Computation functions that use a FlowTracker to access reactive values
|
|
91
42
|
|
|
92
|
-
|
|
43
|
+
The created Resource automatically subscribes to the PicoFlow observables and updates
|
|
44
|
+
when their values change. The subscription is properly cleaned up when the Solid
|
|
45
|
+
component unmounts.
|
|
93
46
|
|
|
94
|
-
|
|
95
|
-
| ------ | ------ | ------ |
|
|
96
|
-
| `flow` | [`FlowObservable`](/api/classes/FlowObservable.md)\<[`NotPromise`](/api/type-aliases/NotPromise.md)\<`T`\>\> | The FlowObservable to convert. |
|
|
47
|
+
### Example
|
|
97
48
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
49
|
+
```typescript
|
|
50
|
+
import { from } from 'picoflow/solid';
|
|
51
|
+
import { state, derivation } from 'picoflow';
|
|
101
52
|
|
|
102
|
-
|
|
53
|
+
// Convert a PicoFlow state to a Solid resource
|
|
54
|
+
const $count = state(0);
|
|
55
|
+
const solidCount = from($count);
|
|
103
56
|
|
|
104
|
-
|
|
57
|
+
// Use in a Solid component
|
|
58
|
+
function Counter() {
|
|
59
|
+
return <div>Count: {solidCount()}</div>;
|
|
60
|
+
}
|
|
105
61
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
62
|
+
// Or convert a computation function
|
|
63
|
+
const solidDerived = from((t) => {
|
|
64
|
+
return $count.get(t) * 2;
|
|
65
|
+
});
|
|
110
66
|
```
|
|
111
67
|
|
|
112
|
-
Defined in: [solid/converters.ts:181](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/solid/converters.ts#L181)
|
|
113
|
-
|
|
114
|
-
Converts a FlowObservable into a Solid derivation or resource, depending on whether the value is synchronous or asynchronous.
|
|
115
|
-
|
|
116
|
-
### Type Parameters
|
|
117
|
-
|
|
118
|
-
| Type Parameter |
|
|
119
|
-
| ------ |
|
|
120
|
-
| `T` |
|
|
121
|
-
|
|
122
|
-
### Parameters
|
|
123
|
-
|
|
124
|
-
| Parameter | Type | Description |
|
|
125
|
-
| ------ | ------ | ------ |
|
|
126
|
-
| `flow` | \| [`FlowObservable`](/api/classes/FlowObservable.md)\<`Promise`\<[`NotPromise`](/api/type-aliases/NotPromise.md)\<`T`\>\>\> \| [`FlowObservable`](/api/classes/FlowObservable.md)\<[`NotPromise`](/api/type-aliases/NotPromise.md)\<`T`\>\> | The FlowObservable to convert. |
|
|
127
|
-
|
|
128
|
-
### Returns
|
|
129
|
-
|
|
130
|
-
\| [`SolidDerivation`](/api/classes/SolidDerivation.md)\<[`NotPromise`](/api/type-aliases/NotPromise.md)\<`T`\>\>
|
|
131
|
-
\| [`SolidResource`](/api/classes/SolidResource.md)\<[`NotPromise`](/api/type-aliases/NotPromise.md)\<`T`\>\>
|
|
132
|
-
|
|
133
|
-
A SolidDerivation or SolidResource, depending on the input type.
|
|
134
|
-
|
|
135
68
|
## Call Signature
|
|
136
69
|
|
|
137
70
|
```ts
|
|
138
|
-
function from<T>(flow):
|
|
71
|
+
function from<T>(flow): Resource<T>;
|
|
139
72
|
```
|
|
140
73
|
|
|
141
|
-
Defined in: [solid
|
|
74
|
+
Defined in: [converters/solid.ts:98](https://gitlab.com/ersbeth-web/picoflow/-/blob/4e864254f0eac72524c3be40b9e41d799a16e020/src/converters/solid.ts#L98)
|
|
142
75
|
|
|
143
|
-
Converts a
|
|
76
|
+
Converts a PicoFlow observable or getter function into a SolidJS resource.
|
|
144
77
|
|
|
145
78
|
### Type Parameters
|
|
146
79
|
|
|
@@ -152,69 +85,45 @@ Converts a getter function returning a non-Promise value into a SolidDerivation.
|
|
|
152
85
|
|
|
153
86
|
| Parameter | Type | Description |
|
|
154
87
|
| ------ | ------ | ------ |
|
|
155
|
-
| `flow` | (`t`) => [`NotPromise`](/api/type-aliases/NotPromise.md)\<`T`\> | The getter function to convert. |
|
|
88
|
+
| `flow` | (`t`) => [`NotPromise`](/api/type-aliases/NotPromise.md)\<`T`\> | The FlowObservable or getter function to convert. |
|
|
156
89
|
|
|
157
90
|
### Returns
|
|
158
91
|
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
A SolidDerivation wrapping the getter.
|
|
162
|
-
|
|
163
|
-
## Call Signature
|
|
164
|
-
|
|
165
|
-
```ts
|
|
166
|
-
function from<T>(flow): SolidResource<NotPromise<T>>;
|
|
167
|
-
```
|
|
92
|
+
`Resource`\<`T`\>
|
|
168
93
|
|
|
169
|
-
|
|
94
|
+
A SolidJS Resource that wraps the value or computation.
|
|
170
95
|
|
|
171
|
-
|
|
96
|
+
### Remarks
|
|
172
97
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
| ------ |
|
|
177
|
-
| `T` |
|
|
98
|
+
This function bridges PicoFlow's reactive system with SolidJS, allowing you to use
|
|
99
|
+
PicoFlow primitives and computations within Solid components. All conversions return a
|
|
100
|
+
SolidJS Resource, which can handle both synchronous and asynchronous values seamlessly.
|
|
178
101
|
|
|
179
|
-
|
|
102
|
+
The conversion works with:
|
|
103
|
+
- **FlowObservable**: Any PicoFlow reactive primitive (e.g., from `state()`, `derivation()`, `stateAsync()`, `derivationAsync()`)
|
|
104
|
+
- **Getter functions**: Computation functions that use a FlowTracker to access reactive values
|
|
180
105
|
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
106
|
+
The created Resource automatically subscribes to the PicoFlow observables and updates
|
|
107
|
+
when their values change. The subscription is properly cleaned up when the Solid
|
|
108
|
+
component unmounts.
|
|
184
109
|
|
|
185
|
-
###
|
|
110
|
+
### Example
|
|
186
111
|
|
|
187
|
-
|
|
112
|
+
```typescript
|
|
113
|
+
import { from } from 'picoflow/solid';
|
|
114
|
+
import { state, derivation } from 'picoflow';
|
|
188
115
|
|
|
189
|
-
|
|
116
|
+
// Convert a PicoFlow state to a Solid resource
|
|
117
|
+
const $count = state(0);
|
|
118
|
+
const solidCount = from($count);
|
|
190
119
|
|
|
191
|
-
|
|
120
|
+
// Use in a Solid component
|
|
121
|
+
function Counter() {
|
|
122
|
+
return <div>Count: {solidCount()}</div>;
|
|
123
|
+
}
|
|
192
124
|
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
125
|
+
// Or convert a computation function
|
|
126
|
+
const solidDerived = from((t) => {
|
|
127
|
+
return $count.get(t) * 2;
|
|
128
|
+
});
|
|
197
129
|
```
|
|
198
|
-
|
|
199
|
-
Defined in: [solid/converters.ts:214](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/solid/converters.ts#L214)
|
|
200
|
-
|
|
201
|
-
Converts a getter function into a Solid derivation or resource, depending on whether the returned value is synchronous or asynchronous.
|
|
202
|
-
|
|
203
|
-
### Type Parameters
|
|
204
|
-
|
|
205
|
-
| Type Parameter |
|
|
206
|
-
| ------ |
|
|
207
|
-
| `T` |
|
|
208
|
-
|
|
209
|
-
### Parameters
|
|
210
|
-
|
|
211
|
-
| Parameter | Type | Description |
|
|
212
|
-
| ------ | ------ | ------ |
|
|
213
|
-
| `flow` | \| (`t`) => [`NotPromise`](/api/type-aliases/NotPromise.md)\<`T`\> \| (`t`) => `Promise`\<[`NotPromise`](/api/type-aliases/NotPromise.md)\<`T`\>\> | The getter function to convert. |
|
|
214
|
-
|
|
215
|
-
### Returns
|
|
216
|
-
|
|
217
|
-
\| [`SolidDerivation`](/api/classes/SolidDerivation.md)\<`T`\>
|
|
218
|
-
\| [`SolidResource`](/api/classes/SolidResource.md)\<`T`\>
|
|
219
|
-
|
|
220
|
-
A SolidDerivation or SolidResource, depending on the input type.
|
|
@@ -6,44 +6,22 @@
|
|
|
6
6
|
function isDisposable(obj): obj is FlowDisposable;
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
Defined in: [
|
|
9
|
+
Defined in: [api/base/flowDisposable.ts:42](https://gitlab.com/ersbeth-web/picoflow/-/blob/4e864254f0eac72524c3be40b9e41d799a16e020/src/api/base/flowDisposable.ts#L42)
|
|
10
10
|
|
|
11
|
-
Type guard
|
|
11
|
+
Type guard to check if an object implements the FlowDisposable interface.
|
|
12
|
+
|
|
13
|
+
Useful for conditionally disposing objects that may or may not be disposable,
|
|
14
|
+
such as when cleaning up mixed collections of values. Returns true if the object
|
|
15
|
+
has a `dispose` method, providing type-safe access to disposal functionality.
|
|
12
16
|
|
|
13
17
|
## Parameters
|
|
14
18
|
|
|
15
19
|
| Parameter | Type | Description |
|
|
16
20
|
| ------ | ------ | ------ |
|
|
17
|
-
| `obj` | `unknown` | The object to
|
|
21
|
+
| `obj` | `unknown` | The object to check |
|
|
18
22
|
|
|
19
23
|
## Returns
|
|
20
24
|
|
|
21
25
|
`obj is FlowDisposable`
|
|
22
26
|
|
|
23
|
-
True if the object
|
|
24
|
-
|
|
25
|
-
## Remarks
|
|
26
|
-
|
|
27
|
-
This utility function is useful for safely checking if an object needs disposal before
|
|
28
|
-
attempting cleanup operations. It performs a runtime check for the presence of a `dispose`
|
|
29
|
-
method, making it safe to use with unknown types.
|
|
30
|
-
|
|
31
|
-
**Common Use Cases:**
|
|
32
|
-
- Conditionally disposing items in collections (arrays, maps)
|
|
33
|
-
- Generic cleanup functions that handle both disposable and non-disposable objects
|
|
34
|
-
- Defensive programming when working with mixed types
|
|
35
|
-
|
|
36
|
-
## Example
|
|
37
|
-
|
|
38
|
-
```typescript
|
|
39
|
-
function cleanupArray<T>(items: T[]) {
|
|
40
|
-
items.forEach(item => {
|
|
41
|
-
if (isDisposable(item)) {
|
|
42
|
-
item.dispose();
|
|
43
|
-
}
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
const mixed = [state(1), "string", signal(), 42];
|
|
48
|
-
cleanupArray(mixed); // Only disposes the state and signal
|
|
49
|
-
```
|
|
27
|
+
True if the object implements FlowDisposable, false otherwise
|
|
@@ -6,52 +6,31 @@
|
|
|
6
6
|
function map<K, V>(initial?): FlowMap<K, V>;
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
Defined in: [
|
|
9
|
+
Defined in: [api/nodes/collections/flowMap.ts:110](https://gitlab.com/ersbeth-web/picoflow/-/blob/4e864254f0eac72524c3be40b9e41d799a16e020/src/api/nodes/collections/flowMap.ts#L110)
|
|
10
10
|
|
|
11
|
-
Creates a
|
|
11
|
+
Creates a reactive map with mutation methods and fine-grained action tracking.
|
|
12
|
+
|
|
13
|
+
The map starts with the provided initial entries (or empty if none provided). All mutation methods
|
|
14
|
+
(add, update, delete) notify dependents and emit detailed action information to `$lastAction`.
|
|
15
|
+
Use the map itself for coarse-grained reactivity, or subscribe to `$lastAction` for fine-grained
|
|
16
|
+
reactivity to specific mutation types. Useful for entity stores, lookup tables, or any key-value
|
|
17
|
+
data that needs reactive updates.
|
|
12
18
|
|
|
13
19
|
## Type Parameters
|
|
14
20
|
|
|
15
|
-
| Type Parameter |
|
|
16
|
-
| ------ |
|
|
17
|
-
| `K` *extends* `string` \| `number` \| `symbol` |
|
|
18
|
-
| `V` |
|
|
21
|
+
| Type Parameter |
|
|
22
|
+
| ------ |
|
|
23
|
+
| `K` *extends* `string` \| `number` \| `symbol` |
|
|
24
|
+
| `V` |
|
|
19
25
|
|
|
20
26
|
## Parameters
|
|
21
27
|
|
|
22
28
|
| Parameter | Type | Description |
|
|
23
29
|
| ------ | ------ | ------ |
|
|
24
|
-
| `initial?` | `Record`\<`K`, `V`\>
|
|
30
|
+
| `initial?` | `Record`\<`K`, `V`\> \| `Map`\<`K`, `V`\> | Optional initial entries as a Record or Map |
|
|
25
31
|
|
|
26
32
|
## Returns
|
|
27
33
|
|
|
28
|
-
[`FlowMap`](/api/
|
|
29
|
-
|
|
30
|
-
A new instance of [FlowMap](/api/classes/FlowMap.md).
|
|
31
|
-
|
|
32
|
-
## Remarks
|
|
33
|
-
|
|
34
|
-
A reactive map wraps a native JavaScript Map and provides multiple levels of reactivity:
|
|
35
|
-
tracking the entire map, tracking individual set operations, and tracking individual
|
|
36
|
-
delete operations. The initial record (if provided) is converted to a native Map.
|
|
37
|
-
|
|
38
|
-
## Example
|
|
34
|
+
[`FlowMap`](/api/interfaces/FlowMap.md)\<`K`, `V`\>
|
|
39
35
|
|
|
40
|
-
|
|
41
|
-
const $users = map<string, User>({
|
|
42
|
-
'user1': { name: 'John', age: 30 }
|
|
43
|
-
});
|
|
44
|
-
|
|
45
|
-
// Track the whole map
|
|
46
|
-
effect((t) => {
|
|
47
|
-
console.log('Users:', $users.get(t).size);
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
// Track additions
|
|
51
|
-
effect((t) => {
|
|
52
|
-
const { key, value } = $users.$lastSet.get(t);
|
|
53
|
-
if (key) console.log(`Added: ${key}`);
|
|
54
|
-
});
|
|
55
|
-
|
|
56
|
-
$users.setAt('user2', { name: 'Jane', age: 25 });
|
|
57
|
-
```
|
|
36
|
+
A FlowMap with reactive mutation methods
|
|
@@ -6,31 +6,16 @@
|
|
|
6
6
|
function signal(): FlowSignal;
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
Defined in: [
|
|
9
|
+
Defined in: [api/nodes/flowSignal.ts:26](https://gitlab.com/ersbeth-web/picoflow/-/blob/4e864254f0eac72524c3be40b9e41d799a16e020/src/api/nodes/flowSignal.ts#L26)
|
|
10
10
|
|
|
11
|
-
Creates a
|
|
11
|
+
Creates a signal that can be manually triggered to notify dependents.
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
A new instance of [FlowSignal](/api/classes/FlowSignal.md).
|
|
18
|
-
|
|
19
|
-
## Remarks
|
|
13
|
+
Signals act as event emitters in the reactive graph. Call `trigger()` to notify all subscribers
|
|
14
|
+
and reactive computations that depend on the signal. Unlike state or derivations, signals don't
|
|
15
|
+
carry data values - they simply represent that an event occurred.
|
|
20
16
|
|
|
21
|
-
|
|
22
|
-
to notify dependent effects and derivations. Use signals when you need event-like notifications
|
|
23
|
-
without associated data.
|
|
24
|
-
|
|
25
|
-
## Example
|
|
26
|
-
|
|
27
|
-
```typescript
|
|
28
|
-
const $refresh = signal();
|
|
17
|
+
## Returns
|
|
29
18
|
|
|
30
|
-
|
|
31
|
-
$refresh.watch(t);
|
|
32
|
-
console.log('Refreshing...');
|
|
33
|
-
});
|
|
19
|
+
[`FlowSignal`](/api/interfaces/FlowSignal.md)
|
|
34
20
|
|
|
35
|
-
|
|
36
|
-
```
|
|
21
|
+
A FlowSignal that can be triggered manually and subscribed to
|
|
@@ -2,46 +2,66 @@
|
|
|
2
2
|
|
|
3
3
|
# Function: state()
|
|
4
4
|
|
|
5
|
+
## Call Signature
|
|
6
|
+
|
|
5
7
|
```ts
|
|
6
8
|
function state<T>(value): FlowState<T>;
|
|
7
9
|
```
|
|
8
10
|
|
|
9
|
-
Defined in: [
|
|
11
|
+
Defined in: [api/nodes/sync/flowState.ts:41](https://gitlab.com/ersbeth-web/picoflow/-/blob/4e864254f0eac72524c3be40b9e41d799a16e020/src/api/nodes/sync/flowState.ts#L41)
|
|
10
12
|
|
|
11
|
-
Creates a
|
|
13
|
+
Creates a mutable reactive state that can be read and updated imperatively.
|
|
12
14
|
|
|
13
|
-
|
|
15
|
+
State can be initialized with a direct value or a lazy initializer function. Changes propagate
|
|
16
|
+
automatically to all reactive computations that depend on this state. Use state for data that
|
|
17
|
+
changes through user actions, external events, or application logic rather than derived computations.
|
|
14
18
|
|
|
15
|
-
|
|
16
|
-
| ------ | ------ |
|
|
17
|
-
| `T` | The type of the state value. |
|
|
19
|
+
### Type Parameters
|
|
18
20
|
|
|
19
|
-
|
|
21
|
+
| Type Parameter |
|
|
22
|
+
| ------ |
|
|
23
|
+
| `T` |
|
|
24
|
+
|
|
25
|
+
### Parameters
|
|
20
26
|
|
|
21
27
|
| Parameter | Type | Description |
|
|
22
28
|
| ------ | ------ | ------ |
|
|
23
|
-
| `value` | `
|
|
29
|
+
| `value` | [`NotPromise`](/api/type-aliases/NotPromise.md)\<`T`\> | Initial value for the state, or lazy initializer function |
|
|
24
30
|
|
|
25
|
-
|
|
31
|
+
### Returns
|
|
26
32
|
|
|
27
|
-
[`FlowState`](/api/
|
|
33
|
+
[`FlowState`](/api/interfaces/FlowState.md)\<`T`\>
|
|
28
34
|
|
|
29
|
-
A
|
|
35
|
+
A FlowState that can be read and modified
|
|
30
36
|
|
|
31
|
-
##
|
|
37
|
+
## Call Signature
|
|
32
38
|
|
|
33
|
-
|
|
34
|
-
|
|
39
|
+
```ts
|
|
40
|
+
function state<T>(initializer): FlowState<T>;
|
|
41
|
+
```
|
|
35
42
|
|
|
36
|
-
|
|
43
|
+
Defined in: [api/nodes/sync/flowState.ts:42](https://gitlab.com/ersbeth-web/picoflow/-/blob/4e864254f0eac72524c3be40b9e41d799a16e020/src/api/nodes/sync/flowState.ts#L42)
|
|
37
44
|
|
|
38
|
-
|
|
39
|
-
const $count = state(0);
|
|
45
|
+
Creates a mutable reactive state that can be read and updated imperatively.
|
|
40
46
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
47
|
+
State can be initialized with a direct value or a lazy initializer function. Changes propagate
|
|
48
|
+
automatically to all reactive computations that depend on this state. Use state for data that
|
|
49
|
+
changes through user actions, external events, or application logic rather than derived computations.
|
|
44
50
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
51
|
+
### Type Parameters
|
|
52
|
+
|
|
53
|
+
| Type Parameter |
|
|
54
|
+
| ------ |
|
|
55
|
+
| `T` |
|
|
56
|
+
|
|
57
|
+
### Parameters
|
|
58
|
+
|
|
59
|
+
| Parameter | Type |
|
|
60
|
+
| ------ | ------ |
|
|
61
|
+
| `initializer` | [`InitFunction`](/api/type-aliases/InitFunction.md)\<`T`\> |
|
|
62
|
+
|
|
63
|
+
### Returns
|
|
64
|
+
|
|
65
|
+
[`FlowState`](/api/interfaces/FlowState.md)\<`T`\>
|
|
66
|
+
|
|
67
|
+
A FlowState that can be read and modified
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
[@ersbeth/picoflow](/api/index.md) / stateAsync
|
|
2
|
+
|
|
3
|
+
# Function: stateAsync()
|
|
4
|
+
|
|
5
|
+
## Call Signature
|
|
6
|
+
|
|
7
|
+
```ts
|
|
8
|
+
function stateAsync<T>(value): FlowStateAsync<T>;
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Defined in: [api/nodes/async/flowStateAsync.ts:43](https://gitlab.com/ersbeth-web/picoflow/-/blob/4e864254f0eac72524c3be40b9e41d799a16e020/src/api/nodes/async/flowStateAsync.ts#L43)
|
|
12
|
+
|
|
13
|
+
Creates a mutable async reactive state that resolves promises and can be updated imperatively.
|
|
14
|
+
|
|
15
|
+
State can be initialized with a direct promise or a lazy async initializer function. Update the state by
|
|
16
|
+
calling `set()` with a new promise or an async updater function. Changes propagate automatically to all
|
|
17
|
+
reactive computations that depend on this state. Use for async data that changes through user actions or
|
|
18
|
+
application logic, such as loading user profiles, fetching search results, or any async state updates.
|
|
19
|
+
|
|
20
|
+
### Type Parameters
|
|
21
|
+
|
|
22
|
+
| Type Parameter |
|
|
23
|
+
| ------ |
|
|
24
|
+
| `T` |
|
|
25
|
+
|
|
26
|
+
### Parameters
|
|
27
|
+
|
|
28
|
+
| Parameter | Type | Description |
|
|
29
|
+
| ------ | ------ | ------ |
|
|
30
|
+
| `value` | `Promise`\<`T`\> | Initial promise to resolve, or lazy async initializer function |
|
|
31
|
+
|
|
32
|
+
### Returns
|
|
33
|
+
|
|
34
|
+
[`FlowStateAsync`](/api/interfaces/FlowStateAsync.md)\<`T`\>
|
|
35
|
+
|
|
36
|
+
A FlowStateAsync that can be read and modified with promises
|
|
37
|
+
|
|
38
|
+
## Call Signature
|
|
39
|
+
|
|
40
|
+
```ts
|
|
41
|
+
function stateAsync<T>(initializer): FlowStateAsync<T>;
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Defined in: [api/nodes/async/flowStateAsync.ts:44](https://gitlab.com/ersbeth-web/picoflow/-/blob/4e864254f0eac72524c3be40b9e41d799a16e020/src/api/nodes/async/flowStateAsync.ts#L44)
|
|
45
|
+
|
|
46
|
+
Creates a mutable async reactive state that resolves promises and can be updated imperatively.
|
|
47
|
+
|
|
48
|
+
State can be initialized with a direct promise or a lazy async initializer function. Update the state by
|
|
49
|
+
calling `set()` with a new promise or an async updater function. Changes propagate automatically to all
|
|
50
|
+
reactive computations that depend on this state. Use for async data that changes through user actions or
|
|
51
|
+
application logic, such as loading user profiles, fetching search results, or any async state updates.
|
|
52
|
+
|
|
53
|
+
### Type Parameters
|
|
54
|
+
|
|
55
|
+
| Type Parameter |
|
|
56
|
+
| ------ |
|
|
57
|
+
| `T` |
|
|
58
|
+
|
|
59
|
+
### Parameters
|
|
60
|
+
|
|
61
|
+
| Parameter | Type |
|
|
62
|
+
| ------ | ------ |
|
|
63
|
+
| `initializer` | [`InitFunctionAsync`](/api/type-aliases/InitFunctionAsync.md)\<`T`\> |
|
|
64
|
+
|
|
65
|
+
### Returns
|
|
66
|
+
|
|
67
|
+
[`FlowStateAsync`](/api/interfaces/FlowStateAsync.md)\<`T`\>
|
|
68
|
+
|
|
69
|
+
A FlowStateAsync that can be read and modified with promises
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
[@ersbeth/picoflow](/api/index.md) / subscribe
|
|
2
|
+
|
|
3
|
+
# Function: subscribe()
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
function subscribe<T>(
|
|
7
|
+
data,
|
|
8
|
+
onData,
|
|
9
|
+
onError?,
|
|
10
|
+
onPending?): FlowEffect;
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Defined in: [api/nodes/flowEffect.ts:35](https://gitlab.com/ersbeth-web/picoflow/-/blob/4e864254f0eac72524c3be40b9e41d799a16e020/src/api/nodes/flowEffect.ts#L35)
|
|
14
|
+
|
|
15
|
+
Creates a reactive effect that runs immediately and automatically re-runs when dependencies change.
|
|
16
|
+
|
|
17
|
+
The effect function tracks any reactive values accessed and subscribes to their changes.
|
|
18
|
+
When any tracked value changes, the effect re-executes with the new values.
|
|
19
|
+
Optional callbacks handle errors and pending async states.
|
|
20
|
+
|
|
21
|
+
## Type Parameters
|
|
22
|
+
|
|
23
|
+
| Type Parameter |
|
|
24
|
+
| ------ |
|
|
25
|
+
| `T` |
|
|
26
|
+
|
|
27
|
+
## Parameters
|
|
28
|
+
|
|
29
|
+
| Parameter | Type | Description |
|
|
30
|
+
| ------ | ------ | ------ |
|
|
31
|
+
| `data` | [`FlowDataTracker`](/api/type-aliases/FlowDataTracker.md)\<`T`\> | Function that accesses reactive dependencies and returns data |
|
|
32
|
+
| `onData` | [`FlowOnDataListener`](/api/type-aliases/FlowOnDataListener.md)\<`T`\> | Callback invoked with the computed data on each execution |
|
|
33
|
+
| `onError?` | [`FlowOnErrorListener`](/api/type-aliases/FlowOnErrorListener.md) | Optional callback for handling errors during execution |
|
|
34
|
+
| `onPending?` | [`FlowOnPendingListener`](/api/type-aliases/FlowOnPendingListener.md) | Optional callback invoked when async dependencies are pending |
|
|
35
|
+
|
|
36
|
+
## Returns
|
|
37
|
+
|
|
38
|
+
[`FlowEffect`](/api/interfaces/FlowEffect.md)
|
|
39
|
+
|
|
40
|
+
A FlowEffect handle with a `dispose()` method to stop the effect
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
[@ersbeth/picoflow](/api/index.md) / writableDerivation
|
|
2
|
+
|
|
3
|
+
# Function: writableDerivation()
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
function writableDerivation<T>(compute): FlowWritableDerivation<T>;
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
Defined in: [api/nodes/sync/flowWritableDerivation.ts:29](https://gitlab.com/ersbeth-web/picoflow/-/blob/4e864254f0eac72524c3be40b9e41d799a16e020/src/api/nodes/sync/flowWritableDerivation.ts#L29)
|
|
10
|
+
|
|
11
|
+
Creates a derived value that recomputes automatically but can also be manually overridden.
|
|
12
|
+
|
|
13
|
+
The compute function tracks dependencies and recomputes when they change, just like a regular derivation.
|
|
14
|
+
However, you can also call `set()` to override the computed value. Use this for values that are normally
|
|
15
|
+
derived but need occasional manual adjustments, such as editable calculated fields or user-correctable totals.
|
|
16
|
+
|
|
17
|
+
## Type Parameters
|
|
18
|
+
|
|
19
|
+
| Type Parameter |
|
|
20
|
+
| ------ |
|
|
21
|
+
| `T` |
|
|
22
|
+
|
|
23
|
+
## Parameters
|
|
24
|
+
|
|
25
|
+
| Parameter | Type | Description |
|
|
26
|
+
| ------ | ------ | ------ |
|
|
27
|
+
| `compute` | [`DerivationFunction`](/api/type-aliases/DerivationFunction.md)\<`T`\> | Function that accesses dependencies and computes the derived value |
|
|
28
|
+
|
|
29
|
+
## Returns
|
|
30
|
+
|
|
31
|
+
[`FlowWritableDerivation`](/api/interfaces/FlowWritableDerivation.md)\<`T`\>
|
|
32
|
+
|
|
33
|
+
A FlowWritableDerivation that provides both reactive computation and manual control
|