@ersbeth/picoflow 1.1.2 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +854 -1520
- 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 +29 -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 +36 -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 +23 -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 +35 -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 +25 -0
- package/dist/types/nodes/arrayNode.d.ts.map +1 -0
- package/dist/types/nodes/effectNode.d.ts +16 -0
- package/dist/types/nodes/effectNode.d.ts.map +1 -0
- package/dist/types/nodes/index.d.ts +8 -0
- package/dist/types/nodes/index.d.ts.map +1 -0
- package/dist/types/nodes/mapNode.d.ts +19 -0
- package/dist/types/nodes/mapNode.d.ts.map +1 -0
- package/dist/types/nodes/signalNode.d.ts +10 -0
- package/dist/types/nodes/signalNode.d.ts.map +1 -0
- package/dist/types/nodes/valueAsyncNode.d.ts +23 -0
- package/dist/types/nodes/valueAsyncNode.d.ts.map +1 -0
- package/dist/types/nodes/valueNode.d.ts +20 -0
- package/dist/types/nodes/valueNode.d.ts.map +1 -0
- package/dist/types/nodes/valueSyncNode.d.ts +23 -0
- package/dist/types/nodes/valueSyncNode.d.ts.map +1 -0
- package/dist/types/schedulers/asyncResolver.d.ts +19 -0
- package/dist/types/schedulers/asyncResolver.d.ts.map +1 -0
- package/dist/types/schedulers/asyncScheduler.d.ts +20 -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 +9 -0
- package/dist/types/schedulers/pendingError.d.ts.map +1 -0
- package/dist/types/schedulers/scheduler.d.ts +10 -0
- package/dist/types/schedulers/scheduler.d.ts.map +1 -0
- package/dist/types/schedulers/syncResolver.d.ts +19 -0
- package/dist/types/schedulers/syncResolver.d.ts.map +1 -0
- package/dist/types/schedulers/syncScheduler.d.ts +19 -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 +63 -79
- 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 +37 -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 +24 -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 +92 -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 +180 -0
- package/src/nodes/effectNode.ts +58 -0
- package/src/nodes/index.ts +7 -0
- package/src/nodes/mapNode.ts +125 -0
- package/src/nodes/signalNode.ts +19 -0
- package/src/nodes/valueAsyncNode.ts +85 -0
- package/src/nodes/valueNode.ts +148 -0
- package/src/nodes/valueSyncNode.ts +125 -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,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
|
|
@@ -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
|