@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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"valueSyncNode.d.ts","sourceRoot":"","sources":["../../../src/nodes/valueSyncNode.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asyncResolver.d.ts","sourceRoot":"","sources":["../../../src/schedulers/asyncResolver.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asyncScheduler.d.ts","sourceRoot":"","sources":["../../../src/schedulers/asyncScheduler.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/schedulers/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pendingError.d.ts","sourceRoot":"","sources":["../../../src/schedulers/pendingError.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../../src/schedulers/scheduler.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"syncResolver.d.ts","sourceRoot":"","sources":["../../../src/schedulers/syncResolver.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"syncScheduler.d.ts","sourceRoot":"","sources":["../../../src/schedulers/syncScheduler.ts"],"names":[],"mappings":""}
|
|
@@ -3,108 +3,143 @@ import { withMermaid } from "vitepress-plugin-mermaid";
|
|
|
3
3
|
import typedocSidebar from "../api/typedoc-sidebar.json";
|
|
4
4
|
|
|
5
5
|
export default withMermaid(
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
defineConfig({
|
|
7
|
+
title: "PicoFlow",
|
|
8
|
+
description: "Lightweight reactive dataflow library for TypeScript",
|
|
9
|
+
base: "/picoflow/",
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
mermaid: {},
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
head: [["link", { rel: "icon", type: "image/svg+xml", href: "/logo.svg" }]],
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
themeConfig: {
|
|
16
|
+
logo: "/logo.svg",
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
18
|
+
nav: [
|
|
19
|
+
{ text: "Guide", link: "/guide/introduction/getting-started" },
|
|
20
|
+
// { text: "Examples", link: "/examples/patterns" },
|
|
21
|
+
{ text: "API Reference", link: "/api/" },
|
|
22
|
+
],
|
|
23
23
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
items: [
|
|
56
|
-
{
|
|
57
|
-
text: "Disposal",
|
|
58
|
-
link: "/guide/advanced/disposal",
|
|
59
|
-
},
|
|
60
|
-
{
|
|
61
|
-
text: "Use with SolidJS",
|
|
62
|
-
link: "/guide/advanced/solidjs",
|
|
63
|
-
},
|
|
64
|
-
{
|
|
65
|
-
text: "Upgrade from v0.x",
|
|
66
|
-
link: "/guide/advanced/upgrading",
|
|
67
|
-
},
|
|
68
|
-
],
|
|
69
|
-
},
|
|
70
|
-
],
|
|
24
|
+
sidebar: {
|
|
25
|
+
"/guide/": [
|
|
26
|
+
{
|
|
27
|
+
text: "Introduction",
|
|
28
|
+
items: [
|
|
29
|
+
{
|
|
30
|
+
text: "Getting Started",
|
|
31
|
+
link: "/guide/introduction/getting-started",
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
text: "Conventions",
|
|
35
|
+
link: "/guide/introduction/conventions",
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
text: "Concepts",
|
|
39
|
+
link: "/guide/introduction/concepts",
|
|
40
|
+
},
|
|
41
|
+
],
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
text: "Primitives",
|
|
45
|
+
items: [
|
|
46
|
+
{
|
|
47
|
+
text: "Overview",
|
|
48
|
+
link: "/guide/primitives/overview",
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
text: "Signals",
|
|
52
|
+
link: "/guide/primitives/signal",
|
|
53
|
+
},
|
|
54
|
+
{ text: "Constants", link: "/guide/primitives/constant" },
|
|
71
55
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
56
|
+
{ text: "States", link: "/guide/primitives/state" },
|
|
57
|
+
{
|
|
58
|
+
text: "Derivations",
|
|
59
|
+
link: "/guide/primitives/derivations",
|
|
60
|
+
},
|
|
61
|
+
{ text: "Maps", link: "/guide/primitives/map" },
|
|
62
|
+
{ text: "Arrays", link: "/guide/primitives/array" },
|
|
63
|
+
{
|
|
64
|
+
text: "Side Effects",
|
|
65
|
+
link: "/guide/primitives/effects",
|
|
66
|
+
},
|
|
67
|
+
],
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
text: "Advanced",
|
|
71
|
+
items: [
|
|
72
|
+
{
|
|
73
|
+
text: "Use with SolidJS",
|
|
74
|
+
link: "/guide/advanced/solidjs",
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
text: "Upgrade to v2",
|
|
78
|
+
link: "/guide/advanced/migration-v2",
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
text: "Upgrade to v1",
|
|
82
|
+
link: "/guide/advanced/migration-v1",
|
|
83
|
+
},
|
|
84
|
+
// {
|
|
85
|
+
// text: "Lifecycle",
|
|
86
|
+
// link: "/guide/introduction/lifecycle",
|
|
87
|
+
// },
|
|
88
|
+
// {
|
|
89
|
+
// text: "Disposal",
|
|
90
|
+
// link: "/guide/advanced/disposal",
|
|
91
|
+
// },
|
|
92
|
+
// {
|
|
93
|
+
// text: "Architecture",
|
|
94
|
+
// link: "/guide/advanced/architecture",
|
|
95
|
+
// },
|
|
96
|
+
],
|
|
97
|
+
},
|
|
98
|
+
],
|
|
81
99
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
100
|
+
// "/examples/": [
|
|
101
|
+
// {
|
|
102
|
+
// text: "Examples",
|
|
103
|
+
// items: [
|
|
104
|
+
// {
|
|
105
|
+
// text: "Common Patterns",
|
|
106
|
+
// link: "/examples/patterns",
|
|
107
|
+
// },
|
|
108
|
+
// {
|
|
109
|
+
// text: "Code Examples",
|
|
110
|
+
// link: "/examples/examples",
|
|
111
|
+
// },
|
|
112
|
+
// ],
|
|
113
|
+
// },
|
|
114
|
+
// ],
|
|
89
115
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
116
|
+
"/api/": [
|
|
117
|
+
{
|
|
118
|
+
text: "API Reference",
|
|
119
|
+
items: typedocSidebar,
|
|
120
|
+
},
|
|
121
|
+
],
|
|
122
|
+
},
|
|
93
123
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
124
|
+
socialLinks: [
|
|
125
|
+
{
|
|
126
|
+
icon: "gitlab",
|
|
127
|
+
link: "https://gitlab.com/ersbeth-web/picoflow",
|
|
128
|
+
},
|
|
129
|
+
],
|
|
97
130
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
text: "Edit this page on GitLab",
|
|
102
|
-
},
|
|
131
|
+
search: {
|
|
132
|
+
provider: "local",
|
|
133
|
+
},
|
|
103
134
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
135
|
+
editLink: {
|
|
136
|
+
pattern: "https://gitlab.com/ersbeth-web/picoflow/-/edit/main/docs/:path",
|
|
137
|
+
text: "Edit this page on GitLab",
|
|
138
|
+
},
|
|
139
|
+
|
|
140
|
+
footer: {
|
|
141
|
+
copyright: "Copyright ©2025 <a href='https://gitlab.com/ersbeth/'>Ersbeth</a>",
|
|
142
|
+
},
|
|
143
|
+
},
|
|
144
|
+
}),
|
|
110
145
|
);
|
|
@@ -6,53 +6,30 @@
|
|
|
6
6
|
function array<T>(initial?): FlowArray<T>;
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
Defined in: [
|
|
9
|
+
Defined in: [api/nodes/collections/flowArray.ts:153](https://gitlab.com/ersbeth-web/picoflow/-/blob/4e864254f0eac72524c3be40b9e41d799a16e020/src/api/nodes/collections/flowArray.ts#L153)
|
|
10
10
|
|
|
11
|
-
Creates a
|
|
11
|
+
Creates a reactive array with mutation methods and fine-grained action tracking.
|
|
12
|
+
|
|
13
|
+
The array starts with the provided initial items (or empty if none provided). All mutation methods
|
|
14
|
+
(push, pop, splice, etc.) notify dependents and emit detailed action information to `$lastAction`.
|
|
15
|
+
Use the array itself for coarse-grained reactivity, or subscribe to `$lastAction` for fine-grained
|
|
16
|
+
reactivity to specific mutation types. Useful for reactive lists, collections, or any data that
|
|
17
|
+
needs array-like operations with automatic change propagation.
|
|
12
18
|
|
|
13
19
|
## Type Parameters
|
|
14
20
|
|
|
15
|
-
| Type Parameter |
|
|
16
|
-
| ------ |
|
|
17
|
-
| `T` |
|
|
21
|
+
| Type Parameter |
|
|
22
|
+
| ------ |
|
|
23
|
+
| `T` |
|
|
18
24
|
|
|
19
25
|
## Parameters
|
|
20
26
|
|
|
21
27
|
| Parameter | Type | Description |
|
|
22
28
|
| ------ | ------ | ------ |
|
|
23
|
-
| `initial?` | `T`[] |
|
|
29
|
+
| `initial?` | `T`[] | Optional initial array of items |
|
|
24
30
|
|
|
25
31
|
## Returns
|
|
26
32
|
|
|
27
|
-
[`FlowArray`](/api/
|
|
28
|
-
|
|
29
|
-
A new instance of [FlowArray](/api/classes/FlowArray.md).
|
|
30
|
-
|
|
31
|
-
## Remarks
|
|
32
|
-
|
|
33
|
-
A reactive array provides array-like mutation methods (push, pop, shift, unshift, splice)
|
|
34
|
-
and tracks the last operation performed via `$lastAction`. This enables both whole-array
|
|
35
|
-
reactivity and fine-grained tracking of specific mutations.
|
|
36
|
-
|
|
37
|
-
The array automatically disposes disposable items when they are removed (if they implement
|
|
38
|
-
the FlowDisposable interface).
|
|
33
|
+
[`FlowArray`](/api/interfaces/FlowArray.md)\<`T`\>
|
|
39
34
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
```typescript
|
|
43
|
-
const $items = array([1, 2, 3]);
|
|
44
|
-
|
|
45
|
-
// Track the whole array
|
|
46
|
-
effect((t) => {
|
|
47
|
-
console.log('Items:', $items.get(t));
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
// Track the last action
|
|
51
|
-
effect((t) => {
|
|
52
|
-
const action = $items.$lastAction.get(t);
|
|
53
|
-
console.log('Action:', action.type);
|
|
54
|
-
});
|
|
55
|
-
|
|
56
|
-
$items.push(4); // Logs action: "push"
|
|
57
|
-
$items.pop(); // Logs action: "pop"
|
|
58
|
-
```
|
|
35
|
+
A FlowArray with reactive mutation methods
|
|
@@ -3,43 +3,31 @@
|
|
|
3
3
|
# Function: constant()
|
|
4
4
|
|
|
5
5
|
```ts
|
|
6
|
-
function constant<T>(
|
|
6
|
+
function constant<T>(initializer): FlowConstant<T>;
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
Defined in: [
|
|
9
|
+
Defined in: [api/nodes/sync/flowConstant.ts:31](https://gitlab.com/ersbeth-web/picoflow/-/blob/4e864254f0eac72524c3be40b9e41d799a16e020/src/api/nodes/sync/flowConstant.ts#L31)
|
|
10
10
|
|
|
11
|
-
Creates a
|
|
11
|
+
Creates a constant reactive value that initializes lazily and never recomputes.
|
|
12
|
+
|
|
13
|
+
The initializer function runs once on first access, and the result is cached permanently.
|
|
14
|
+
Unlike state or derivations, constants never react to changes - they represent immutable values
|
|
15
|
+
in the reactive graph. Useful for expensive one-time computations or static configuration.
|
|
12
16
|
|
|
13
17
|
## Type Parameters
|
|
14
18
|
|
|
15
|
-
| Type Parameter |
|
|
16
|
-
| ------ |
|
|
17
|
-
| `T` |
|
|
19
|
+
| Type Parameter |
|
|
20
|
+
| ------ |
|
|
21
|
+
| `T` |
|
|
18
22
|
|
|
19
23
|
## Parameters
|
|
20
24
|
|
|
21
25
|
| Parameter | Type | Description |
|
|
22
26
|
| ------ | ------ | ------ |
|
|
23
|
-
| `
|
|
27
|
+
| `initializer` | [`InitFunction`](/api/type-aliases/InitFunction.md)\<`T`\> | Function that computes the constant value on first access |
|
|
24
28
|
|
|
25
29
|
## Returns
|
|
26
30
|
|
|
27
|
-
[`FlowConstant`](/api/
|
|
28
|
-
|
|
29
|
-
A new instance of [FlowConstant](/api/classes/FlowConstant.md).
|
|
30
|
-
|
|
31
|
-
## Remarks
|
|
32
|
-
|
|
33
|
-
A constant is an immutable reactive value that never changes after initialization.
|
|
34
|
-
It can be initialized eagerly (direct value) or lazily (function). Use constants for
|
|
35
|
-
configuration, computed-once values, or expensive initialization that should only run once.
|
|
31
|
+
[`FlowConstant`](/api/interfaces/FlowConstant.md)\<`T`\>
|
|
36
32
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
```typescript
|
|
40
|
-
// Eager initialization
|
|
41
|
-
const $config = constant({ apiUrl: 'https://api.example.com' });
|
|
42
|
-
|
|
43
|
-
// Lazy initialization
|
|
44
|
-
const $computed = constant(() => expensiveCalculation());
|
|
45
|
-
```
|
|
33
|
+
A FlowConstant that provides read-only access to the cached value
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
[@ersbeth/picoflow](/api/index.md) / constantAsync
|
|
2
|
+
|
|
3
|
+
# Function: constantAsync()
|
|
4
|
+
|
|
5
|
+
## Call Signature
|
|
6
|
+
|
|
7
|
+
```ts
|
|
8
|
+
function constantAsync<T>(value): FlowConstantAsync<T>;
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Defined in: [api/nodes/async/flowConstantAsync.ts:32](https://gitlab.com/ersbeth-web/picoflow/-/blob/4e864254f0eac72524c3be40b9e41d799a16e020/src/api/nodes/async/flowConstantAsync.ts#L32)
|
|
12
|
+
|
|
13
|
+
Creates a constant reactive value from a promise or async initializer that resolves once and never recomputes.
|
|
14
|
+
|
|
15
|
+
The promise or async initializer executes once on first access, and the resolved value is cached permanently.
|
|
16
|
+
While the promise is pending, any reactive computation that accesses the value will receive PendingError and
|
|
17
|
+
automatically retry once the promise resolves. Use for one-time async operations that don't depend on other
|
|
18
|
+
reactive values, such as loading configuration or fetching initial data.
|
|
19
|
+
|
|
20
|
+
### Type Parameters
|
|
21
|
+
|
|
22
|
+
| Type Parameter |
|
|
23
|
+
| ------ |
|
|
24
|
+
| `T` |
|
|
25
|
+
|
|
26
|
+
### Parameters
|
|
27
|
+
|
|
28
|
+
| Parameter | Type | Description |
|
|
29
|
+
| ------ | ------ | ------ |
|
|
30
|
+
| `value` | `Promise`\<`T`\> | Promise to resolve, or async function that returns a promise on first access |
|
|
31
|
+
|
|
32
|
+
### Returns
|
|
33
|
+
|
|
34
|
+
[`FlowConstantAsync`](/api/interfaces/FlowConstantAsync.md)\<`T`\>
|
|
35
|
+
|
|
36
|
+
A FlowConstantAsync that provides read-only access to the resolved value
|
|
37
|
+
|
|
38
|
+
## Call Signature
|
|
39
|
+
|
|
40
|
+
```ts
|
|
41
|
+
function constantAsync<T>(initializer): FlowConstantAsync<T>;
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Defined in: [api/nodes/async/flowConstantAsync.ts:33](https://gitlab.com/ersbeth-web/picoflow/-/blob/4e864254f0eac72524c3be40b9e41d799a16e020/src/api/nodes/async/flowConstantAsync.ts#L33)
|
|
45
|
+
|
|
46
|
+
Creates a constant reactive value from a promise or async initializer that resolves once and never recomputes.
|
|
47
|
+
|
|
48
|
+
The promise or async initializer executes once on first access, and the resolved value is cached permanently.
|
|
49
|
+
While the promise is pending, any reactive computation that accesses the value will receive PendingError and
|
|
50
|
+
automatically retry once the promise resolves. Use for one-time async operations that don't depend on other
|
|
51
|
+
reactive values, such as loading configuration or fetching initial data.
|
|
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
|
+
[`FlowConstantAsync`](/api/interfaces/FlowConstantAsync.md)\<`T`\>
|
|
68
|
+
|
|
69
|
+
A FlowConstantAsync that provides read-only access to the resolved value
|
|
@@ -3,51 +3,32 @@
|
|
|
3
3
|
# Function: derivation()
|
|
4
4
|
|
|
5
5
|
```ts
|
|
6
|
-
function derivation<T>(
|
|
6
|
+
function derivation<T>(compute): FlowDerivation<T>;
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
Defined in: [
|
|
9
|
+
Defined in: [api/nodes/sync/flowDerivation.ts:39](https://gitlab.com/ersbeth-web/picoflow/-/blob/4e864254f0eac72524c3be40b9e41d799a16e020/src/api/nodes/sync/flowDerivation.ts#L39)
|
|
10
10
|
|
|
11
|
-
Creates a
|
|
11
|
+
Creates a derived reactive value that automatically recomputes when dependencies change.
|
|
12
|
+
|
|
13
|
+
The compute function runs when any tracked dependency changes, and the result is cached until the next change.
|
|
14
|
+
Access reactive values within the compute function to establish dependencies automatically. The derivation
|
|
15
|
+
computes lazily on first access and then reactively thereafter. Use for derived data that should stay
|
|
16
|
+
synchronized with source state.
|
|
12
17
|
|
|
13
18
|
## Type Parameters
|
|
14
19
|
|
|
15
|
-
| Type Parameter |
|
|
16
|
-
| ------ |
|
|
17
|
-
| `T` |
|
|
20
|
+
| Type Parameter |
|
|
21
|
+
| ------ |
|
|
22
|
+
| `T` |
|
|
18
23
|
|
|
19
24
|
## Parameters
|
|
20
25
|
|
|
21
26
|
| Parameter | Type | Description |
|
|
22
27
|
| ------ | ------ | ------ |
|
|
23
|
-
| `
|
|
28
|
+
| `compute` | [`DerivationFunction`](/api/type-aliases/DerivationFunction.md)\<`T`\> | Function that accesses dependencies and computes the derived value |
|
|
24
29
|
|
|
25
30
|
## Returns
|
|
26
31
|
|
|
27
|
-
[`FlowDerivation`](/api/
|
|
28
|
-
|
|
29
|
-
A new instance of [FlowDerivation](/api/classes/FlowDerivation.md).
|
|
30
|
-
|
|
31
|
-
## Remarks
|
|
32
|
-
|
|
33
|
-
A derivation is a computed reactive value that automatically tracks its dependencies and
|
|
34
|
-
recomputes when they change. The computation is lazy - it runs only when the value is
|
|
35
|
-
accessed, not on construction. Use derivations to create derived state without manual
|
|
36
|
-
dependency management.
|
|
37
|
-
|
|
38
|
-
## Example
|
|
32
|
+
[`FlowDerivation`](/api/interfaces/FlowDerivation.md)\<`T`\>
|
|
39
33
|
|
|
40
|
-
|
|
41
|
-
const $firstName = state('John');
|
|
42
|
-
const $lastName = state('Doe');
|
|
43
|
-
|
|
44
|
-
const $fullName = derivation((t) => {
|
|
45
|
-
return `${$firstName.get(t)} ${$lastName.get(t)}`;
|
|
46
|
-
});
|
|
47
|
-
|
|
48
|
-
effect((t) => {
|
|
49
|
-
console.log($fullName.get(t)); // Logs: "John Doe"
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
$firstName.set('Jane'); // Logs: "Jane Doe"
|
|
53
|
-
```
|
|
34
|
+
A FlowDerivation that provides read-only access to the computed value
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
[@ersbeth/picoflow](/api/index.md) / derivationAsync
|
|
2
|
+
|
|
3
|
+
# Function: derivationAsync()
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
function derivationAsync<T>(compute): FlowDerivationAsync<T>;
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
Defined in: [api/nodes/async/flowDerivationAsync.ts:40](https://gitlab.com/ersbeth-web/picoflow/-/blob/4e864254f0eac72524c3be40b9e41d799a16e020/src/api/nodes/async/flowDerivationAsync.ts#L40)
|
|
10
|
+
|
|
11
|
+
Creates an async derived value that automatically recomputes when dependencies change.
|
|
12
|
+
|
|
13
|
+
The async compute function tracks dependencies and returns a promise. When any tracked dependency changes,
|
|
14
|
+
the function runs again and returns a new promise. The resolved value is cached until the next change.
|
|
15
|
+
While the promise is pending, reactive computations that access this value receive PendingError and automatically
|
|
16
|
+
retry once resolved. Use for derived data from async sources like filtered API results or computed database queries.
|
|
17
|
+
|
|
18
|
+
## Type Parameters
|
|
19
|
+
|
|
20
|
+
| Type Parameter |
|
|
21
|
+
| ------ |
|
|
22
|
+
| `T` |
|
|
23
|
+
|
|
24
|
+
## Parameters
|
|
25
|
+
|
|
26
|
+
| Parameter | Type | Description |
|
|
27
|
+
| ------ | ------ | ------ |
|
|
28
|
+
| `compute` | [`DerivationFunctionAsync`](/api/type-aliases/DerivationFunctionAsync.md)\<`T`\> | Async function that accesses dependencies and returns a promise of the derived value |
|
|
29
|
+
|
|
30
|
+
## Returns
|
|
31
|
+
|
|
32
|
+
[`FlowDerivationAsync`](/api/interfaces/FlowDerivationAsync.md)\<`T`\>
|
|
33
|
+
|
|
34
|
+
A FlowDerivationAsync that provides read-only access to the resolved computed value
|