@ersbeth/picoflow 1.1.2 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.vscode/settings.json +3 -3
- package/CHANGELOG.md +43 -0
- package/README.md +2 -18
- package/biome.json +45 -35
- package/dist/picoflow.js +856 -1530
- package/dist/types/api/base/flowDisposable.d.ts +41 -0
- package/dist/types/api/base/flowDisposable.d.ts.map +1 -0
- package/dist/types/api/base/flowObservable.d.ts +27 -0
- package/dist/types/api/base/flowObservable.d.ts.map +1 -0
- package/dist/types/api/base/flowSubscribable.d.ts +79 -0
- package/dist/types/api/base/flowSubscribable.d.ts.map +1 -0
- package/dist/types/api/base/flowTracker.d.ts +8 -0
- package/dist/types/api/base/flowTracker.d.ts.map +1 -0
- package/dist/types/api/base/index.d.ts +5 -0
- package/dist/types/api/base/index.d.ts.map +1 -0
- package/dist/types/api/index.d.ts +3 -0
- package/dist/types/api/index.d.ts.map +1 -0
- package/dist/types/api/nodes/async/flowConstantAsync.d.ts +31 -0
- package/dist/types/api/nodes/async/flowConstantAsync.d.ts.map +1 -0
- package/dist/types/api/nodes/async/flowDerivationAsync.d.ts +37 -0
- package/dist/types/api/nodes/async/flowDerivationAsync.d.ts.map +1 -0
- package/dist/types/api/nodes/async/flowStateAsync.d.ts +41 -0
- package/dist/types/api/nodes/async/flowStateAsync.d.ts.map +1 -0
- package/dist/types/api/nodes/async/flowWritableDerivationAsync.d.ts +30 -0
- package/dist/types/api/nodes/async/flowWritableDerivationAsync.d.ts.map +1 -0
- package/dist/types/{flow → api}/nodes/async/index.d.ts +1 -2
- package/dist/types/api/nodes/async/index.d.ts.map +1 -0
- package/dist/types/api/nodes/collections/flowArray.d.ts +134 -0
- package/dist/types/api/nodes/collections/flowArray.d.ts.map +1 -0
- package/dist/types/api/nodes/collections/flowMap.d.ts +98 -0
- package/dist/types/api/nodes/collections/flowMap.d.ts.map +1 -0
- package/dist/types/api/nodes/collections/index.d.ts.map +1 -0
- package/dist/types/api/nodes/flowEffect.d.ts +28 -0
- package/dist/types/api/nodes/flowEffect.d.ts.map +1 -0
- package/dist/types/api/nodes/flowSignal.d.ts +25 -0
- package/dist/types/api/nodes/flowSignal.d.ts.map +1 -0
- package/dist/types/api/nodes/flowValue.d.ts +35 -0
- package/dist/types/api/nodes/flowValue.d.ts.map +1 -0
- package/dist/types/api/nodes/index.d.ts +8 -0
- package/dist/types/api/nodes/index.d.ts.map +1 -0
- package/dist/types/api/nodes/sync/flowConstant.d.ts +29 -0
- package/dist/types/api/nodes/sync/flowConstant.d.ts.map +1 -0
- package/dist/types/api/nodes/sync/flowDerivation.d.ts +36 -0
- package/dist/types/api/nodes/sync/flowDerivation.d.ts.map +1 -0
- package/dist/types/api/nodes/sync/flowState.d.ts +39 -0
- package/dist/types/api/nodes/sync/flowState.d.ts.map +1 -0
- package/dist/types/api/nodes/sync/flowWritableDerivation.d.ts +28 -0
- package/dist/types/api/nodes/sync/flowWritableDerivation.d.ts.map +1 -0
- package/dist/types/{flow → api}/nodes/sync/index.d.ts +1 -2
- package/dist/types/api/nodes/sync/index.d.ts.map +1 -0
- package/dist/types/api/nodes/utils.d.ts +22 -0
- package/dist/types/api/nodes/utils.d.ts.map +1 -0
- package/dist/types/base/disposable.d.ts +11 -0
- package/dist/types/base/disposable.d.ts.map +1 -0
- package/dist/types/base/executionStack.d.ts +14 -0
- package/dist/types/base/executionStack.d.ts.map +1 -0
- package/dist/types/base/index.d.ts +6 -0
- package/dist/types/base/index.d.ts.map +1 -0
- package/dist/types/base/node.d.ts +27 -0
- package/dist/types/base/node.d.ts.map +1 -0
- package/dist/types/base/observable.d.ts +37 -0
- package/dist/types/base/observable.d.ts.map +1 -0
- package/dist/types/base/observer.d.ts +25 -0
- package/dist/types/base/observer.d.ts.map +1 -0
- package/dist/types/converters/index.d.ts +2 -0
- package/dist/types/converters/index.d.ts.map +1 -0
- package/dist/types/converters/solid.d.ts +46 -0
- package/dist/types/converters/solid.d.ts.map +1 -0
- package/dist/types/index.d.ts +2 -63
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/nodes/arrayNode.d.ts +2 -0
- package/dist/types/nodes/arrayNode.d.ts.map +1 -0
- package/dist/types/nodes/effectNode.d.ts +2 -0
- package/dist/types/nodes/effectNode.d.ts.map +1 -0
- package/dist/types/nodes/index.d.ts +9 -0
- package/dist/types/nodes/index.d.ts.map +1 -0
- package/dist/types/nodes/mapNode.d.ts +2 -0
- package/dist/types/nodes/mapNode.d.ts.map +1 -0
- package/dist/types/nodes/signalNode.d.ts +2 -0
- package/dist/types/nodes/signalNode.d.ts.map +1 -0
- package/dist/types/nodes/valueAsyncNode.d.ts +2 -0
- package/dist/types/nodes/valueAsyncNode.d.ts.map +1 -0
- package/dist/types/nodes/valueNode.d.ts +2 -0
- package/dist/types/nodes/valueNode.d.ts.map +1 -0
- package/dist/types/nodes/valueSyncNode.d.ts +2 -0
- package/dist/types/nodes/valueSyncNode.d.ts.map +1 -0
- package/dist/types/schedulers/asyncResolver.d.ts +2 -0
- package/dist/types/schedulers/asyncResolver.d.ts.map +1 -0
- package/dist/types/schedulers/asyncScheduler.d.ts +2 -0
- package/dist/types/schedulers/asyncScheduler.d.ts.map +1 -0
- package/dist/types/schedulers/index.d.ts +5 -0
- package/dist/types/schedulers/index.d.ts.map +1 -0
- package/dist/types/schedulers/pendingError.d.ts +2 -0
- package/dist/types/schedulers/pendingError.d.ts.map +1 -0
- package/dist/types/schedulers/scheduler.d.ts +2 -0
- package/dist/types/schedulers/scheduler.d.ts.map +1 -0
- package/dist/types/schedulers/syncResolver.d.ts +2 -0
- package/dist/types/schedulers/syncResolver.d.ts.map +1 -0
- package/dist/types/schedulers/syncScheduler.d.ts +2 -0
- package/dist/types/schedulers/syncScheduler.d.ts.map +1 -0
- package/docs/.vitepress/config.mts +128 -93
- package/docs/api/functions/array.md +14 -37
- package/docs/api/functions/constant.md +13 -25
- package/docs/api/functions/constantAsync.md +69 -0
- package/docs/api/functions/derivation.md +14 -33
- package/docs/api/functions/derivationAsync.md +34 -0
- package/docs/api/functions/from.md +62 -153
- package/docs/api/functions/isDisposable.md +8 -30
- package/docs/api/functions/map.md +15 -36
- package/docs/api/functions/signal.md +8 -23
- package/docs/api/functions/state.md +43 -23
- package/docs/api/functions/stateAsync.md +69 -0
- package/docs/api/functions/subscribe.md +40 -0
- package/docs/api/functions/writableDerivation.md +33 -0
- package/docs/api/functions/writableDerivationAsync.md +34 -0
- package/docs/api/index.md +45 -102
- package/docs/api/interfaces/FlowArray.md +439 -0
- package/docs/api/interfaces/FlowConstant.md +220 -0
- package/docs/api/interfaces/FlowConstantAsync.md +221 -0
- package/docs/api/interfaces/FlowDerivation.md +241 -0
- package/docs/api/interfaces/FlowDerivationAsync.md +242 -0
- package/docs/api/interfaces/FlowDisposable.md +32 -38
- package/docs/api/interfaces/FlowEffect.md +64 -0
- package/docs/api/interfaces/FlowMap.md +374 -0
- package/docs/api/interfaces/FlowObservable.md +155 -0
- package/docs/api/interfaces/FlowSignal.md +156 -0
- package/docs/api/interfaces/FlowState.md +269 -0
- package/docs/api/interfaces/FlowStateAsync.md +268 -0
- package/docs/api/interfaces/FlowSubscribable.md +55 -0
- package/docs/api/interfaces/FlowTracker.md +61 -0
- package/docs/api/interfaces/FlowValue.md +222 -0
- package/docs/api/interfaces/FlowWritableDerivation.md +292 -0
- package/docs/api/interfaces/FlowWritableDerivationAsync.md +293 -0
- package/docs/api/type-aliases/DerivationFunction.md +28 -0
- package/docs/api/type-aliases/DerivationFunctionAsync.md +28 -0
- package/docs/api/type-aliases/FlowArrayAction.md +19 -8
- package/docs/api/type-aliases/FlowDataTracker.md +33 -0
- package/docs/api/type-aliases/FlowMapAction.md +48 -0
- package/docs/api/type-aliases/FlowOnDataListener.md +33 -0
- package/docs/api/type-aliases/FlowOnErrorListener.md +27 -0
- package/docs/api/type-aliases/FlowOnPendingListener.md +21 -0
- package/docs/api/type-aliases/FlowReadonly.md +22 -0
- package/docs/api/type-aliases/InitFunction.md +21 -0
- package/docs/api/type-aliases/InitFunctionAsync.md +21 -0
- package/docs/api/type-aliases/NotPromise.md +6 -3
- package/docs/api/type-aliases/UpdateFunction.md +27 -0
- package/docs/api/type-aliases/UpdateFunctionAsync.md +27 -0
- package/docs/api/typedoc-sidebar.json +1 -81
- package/docs/examples/examples.md +0 -2
- package/docs/guide/advanced/architecture.md +1234 -0
- package/docs/guide/advanced/migration-v2.md +204 -0
- package/docs/guide/advanced/solidjs.md +2 -88
- package/docs/guide/introduction/concepts.md +4 -3
- package/docs/guide/introduction/conventions.md +2 -33
- package/docs/guide/introduction/getting-started.md +28 -23
- package/docs/guide/introduction/lifecycle.md +16 -19
- package/docs/guide/primitives/array.md +102 -216
- package/docs/guide/primitives/constant.md +39 -212
- package/docs/guide/primitives/derivations.md +55 -122
- package/docs/guide/primitives/effects.md +155 -241
- package/docs/guide/primitives/map.md +64 -186
- package/docs/guide/primitives/overview.md +45 -128
- package/docs/guide/primitives/signal.md +51 -88
- package/docs/guide/primitives/state.md +34 -130
- package/package.json +56 -60
- package/src/api/base/flowDisposable.ts +44 -0
- package/src/api/base/flowObservable.ts +28 -0
- package/src/api/base/flowSubscribable.ts +87 -0
- package/src/api/base/flowTracker.ts +7 -0
- package/src/api/base/index.ts +4 -0
- package/src/{flow → api}/index.ts +0 -1
- package/src/api/nodes/async/flowConstantAsync.ts +36 -0
- package/src/api/nodes/async/flowDerivationAsync.ts +42 -0
- package/src/api/nodes/async/flowStateAsync.ts +47 -0
- package/src/api/nodes/async/flowWritableDerivationAsync.ts +33 -0
- package/src/{flow → api}/nodes/async/index.ts +1 -2
- package/src/api/nodes/collections/flowArray.ts +155 -0
- package/src/api/nodes/collections/flowMap.ts +115 -0
- package/src/api/nodes/flowEffect.ts +42 -0
- package/src/api/nodes/flowSignal.ts +28 -0
- package/src/api/nodes/flowValue.ts +36 -0
- package/src/api/nodes/index.ts +7 -0
- package/src/api/nodes/sync/flowConstant.ts +33 -0
- package/src/api/nodes/sync/flowDerivation.ts +41 -0
- package/src/api/nodes/sync/flowState.ts +45 -0
- package/src/api/nodes/sync/flowWritableDerivation.ts +31 -0
- package/src/{flow → api}/nodes/sync/index.ts +1 -2
- package/src/api/nodes/utils.ts +22 -0
- package/src/base/disposable.ts +18 -0
- package/src/base/executionStack.ts +42 -0
- package/src/base/index.ts +5 -0
- package/src/base/node.ts +98 -0
- package/src/base/observable.ts +87 -0
- package/src/base/observer.ts +51 -0
- package/src/converters/index.ts +1 -0
- package/src/converters/solid.ts +109 -0
- package/src/index.ts +2 -64
- package/src/nodes/arrayNode.ts +172 -0
- package/src/nodes/effectNode.ts +59 -0
- package/src/nodes/index.ts +8 -0
- package/src/nodes/mapNode.ts +127 -0
- package/src/nodes/signalNode.ts +21 -0
- package/src/nodes/valueAsyncNode.ts +88 -0
- package/src/nodes/valueNode.ts +144 -0
- package/src/nodes/valueSyncNode.ts +128 -0
- package/src/schedulers/asyncResolver.ts +78 -0
- package/src/schedulers/asyncScheduler.ts +66 -0
- package/src/schedulers/index.ts +4 -0
- package/src/schedulers/pendingError.ts +13 -0
- package/src/schedulers/scheduler.ts +9 -0
- package/src/schedulers/syncResolver.ts +69 -0
- package/src/schedulers/syncScheduler.ts +55 -0
- package/test/base/pendingError.test.ts +67 -0
- package/test/converters/solid.derivation.browser.test.tsx +69 -0
- package/test/converters/solid.node.test.ts +654 -0
- package/test/converters/solid.state.browser.test.tsx +1592 -0
- package/test/reactivity/flowSignal.test.ts +226 -0
- package/test/reactivity/nodes/async/asyncScheduler/asyncResolver.test.ts +593 -0
- package/test/reactivity/nodes/async/asyncScheduler/asyncScheduler.test.ts +317 -0
- package/test/reactivity/nodes/async/flowConstantAsync.test.ts +652 -0
- package/test/reactivity/nodes/async/flowDerivation.test.ts +898 -0
- package/test/reactivity/nodes/async/flowDerivationAsync.test.ts +1716 -0
- package/test/reactivity/nodes/async/flowStateAsync.test.ts +708 -0
- package/test/reactivity/nodes/async/flowWritableDerivationAsync.test.ts +614 -0
- package/test/reactivity/nodes/collections/flowArray.asyncStates.test.ts +1289 -0
- package/test/reactivity/nodes/collections/flowArray.scalars.test.ts +961 -0
- package/test/reactivity/nodes/collections/flowArray.states.test.ts +1035 -0
- package/test/reactivity/nodes/collections/flowMap.asyncStates.test.ts +960 -0
- package/test/reactivity/nodes/collections/flowMap.scalars.test.ts +775 -0
- package/test/reactivity/nodes/collections/flowMap.states.test.ts +958 -0
- package/test/reactivity/nodes/sync/flowConstant.test.ts +377 -0
- package/test/reactivity/nodes/sync/flowDerivation.test.ts +896 -0
- package/test/reactivity/nodes/sync/flowState.test.ts +341 -0
- package/test/reactivity/nodes/sync/flowWritableDerivation.test.ts +603 -0
- package/test/vitest.d.ts +10 -0
- package/tsconfig.json +31 -20
- package/typedoc.json +35 -35
- package/vite.config.ts +25 -23
- package/vitest.browser.config.ts +21 -0
- package/vitest.config.ts +12 -12
- package/.cursor/plans/unifier-flowresource-avec-flowderivation-c9506e24.plan.md +0 -372
- package/.cursor/plans/update-js-e795d61b.plan.md +0 -567
- package/dist/types/flow/base/flowDisposable.d.ts +0 -67
- package/dist/types/flow/base/flowDisposable.d.ts.map +0 -1
- package/dist/types/flow/base/flowEffect.d.ts +0 -127
- package/dist/types/flow/base/flowEffect.d.ts.map +0 -1
- package/dist/types/flow/base/flowGraph.d.ts +0 -97
- package/dist/types/flow/base/flowGraph.d.ts.map +0 -1
- package/dist/types/flow/base/flowSignal.d.ts +0 -134
- package/dist/types/flow/base/flowSignal.d.ts.map +0 -1
- package/dist/types/flow/base/flowTracker.d.ts +0 -15
- package/dist/types/flow/base/flowTracker.d.ts.map +0 -1
- package/dist/types/flow/base/index.d.ts +0 -7
- package/dist/types/flow/base/index.d.ts.map +0 -1
- package/dist/types/flow/base/utils.d.ts +0 -20
- package/dist/types/flow/base/utils.d.ts.map +0 -1
- package/dist/types/flow/collections/flowArray.d.ts +0 -148
- package/dist/types/flow/collections/flowArray.d.ts.map +0 -1
- package/dist/types/flow/collections/flowMap.d.ts +0 -224
- package/dist/types/flow/collections/flowMap.d.ts.map +0 -1
- package/dist/types/flow/collections/index.d.ts.map +0 -1
- package/dist/types/flow/index.d.ts +0 -4
- package/dist/types/flow/index.d.ts.map +0 -1
- package/dist/types/flow/nodes/async/flowConstantAsync.d.ts +0 -137
- package/dist/types/flow/nodes/async/flowConstantAsync.d.ts.map +0 -1
- package/dist/types/flow/nodes/async/flowDerivationAsync.d.ts +0 -137
- package/dist/types/flow/nodes/async/flowDerivationAsync.d.ts.map +0 -1
- package/dist/types/flow/nodes/async/flowNodeAsync.d.ts +0 -343
- package/dist/types/flow/nodes/async/flowNodeAsync.d.ts.map +0 -1
- package/dist/types/flow/nodes/async/flowReadonlyAsync.d.ts +0 -81
- package/dist/types/flow/nodes/async/flowReadonlyAsync.d.ts.map +0 -1
- package/dist/types/flow/nodes/async/flowStateAsync.d.ts +0 -111
- package/dist/types/flow/nodes/async/flowStateAsync.d.ts.map +0 -1
- package/dist/types/flow/nodes/async/index.d.ts.map +0 -1
- package/dist/types/flow/nodes/index.d.ts +0 -3
- package/dist/types/flow/nodes/index.d.ts.map +0 -1
- package/dist/types/flow/nodes/sync/flowConstant.d.ts +0 -108
- package/dist/types/flow/nodes/sync/flowConstant.d.ts.map +0 -1
- package/dist/types/flow/nodes/sync/flowDerivation.d.ts +0 -100
- package/dist/types/flow/nodes/sync/flowDerivation.d.ts.map +0 -1
- package/dist/types/flow/nodes/sync/flowNode.d.ts +0 -314
- package/dist/types/flow/nodes/sync/flowNode.d.ts.map +0 -1
- package/dist/types/flow/nodes/sync/flowReadonly.d.ts +0 -57
- package/dist/types/flow/nodes/sync/flowReadonly.d.ts.map +0 -1
- package/dist/types/flow/nodes/sync/flowState.d.ts +0 -96
- package/dist/types/flow/nodes/sync/flowState.d.ts.map +0 -1
- package/dist/types/flow/nodes/sync/index.d.ts.map +0 -1
- package/dist/types/solid/converters.d.ts +0 -57
- package/dist/types/solid/converters.d.ts.map +0 -1
- package/dist/types/solid/index.d.ts +0 -3
- package/dist/types/solid/index.d.ts.map +0 -1
- package/dist/types/solid/primitives.d.ts +0 -181
- package/dist/types/solid/primitives.d.ts.map +0 -1
- package/docs/api/classes/FlowArray.md +0 -489
- package/docs/api/classes/FlowConstant.md +0 -350
- package/docs/api/classes/FlowDerivation.md +0 -334
- package/docs/api/classes/FlowEffect.md +0 -100
- package/docs/api/classes/FlowMap.md +0 -512
- package/docs/api/classes/FlowObservable.md +0 -306
- package/docs/api/classes/FlowResource.md +0 -380
- package/docs/api/classes/FlowResourceAsync.md +0 -362
- package/docs/api/classes/FlowSignal.md +0 -160
- package/docs/api/classes/FlowState.md +0 -368
- package/docs/api/classes/FlowStream.md +0 -367
- package/docs/api/classes/FlowStreamAsync.md +0 -364
- package/docs/api/classes/SolidDerivation.md +0 -75
- package/docs/api/classes/SolidResource.md +0 -91
- package/docs/api/classes/SolidState.md +0 -71
- package/docs/api/classes/TrackingContext.md +0 -33
- package/docs/api/functions/effect.md +0 -49
- package/docs/api/functions/resource.md +0 -52
- package/docs/api/functions/resourceAsync.md +0 -50
- package/docs/api/functions/stream.md +0 -53
- package/docs/api/functions/streamAsync.md +0 -50
- package/docs/api/interfaces/SolidObservable.md +0 -19
- package/docs/api/type-aliases/FlowStreamDisposer.md +0 -15
- package/docs/api/type-aliases/FlowStreamSetter.md +0 -27
- package/docs/api/type-aliases/FlowStreamUpdater.md +0 -32
- package/docs/api/type-aliases/SolidGetter.md +0 -17
- package/docs/guide/primitives/resources.md +0 -858
- package/docs/guide/primitives/streams.md +0 -931
- package/src/flow/base/flowDisposable.ts +0 -71
- package/src/flow/base/flowEffect.ts +0 -171
- package/src/flow/base/flowGraph.ts +0 -288
- package/src/flow/base/flowSignal.ts +0 -207
- package/src/flow/base/flowTracker.ts +0 -17
- package/src/flow/base/index.ts +0 -6
- package/src/flow/base/utils.ts +0 -19
- package/src/flow/collections/flowArray.ts +0 -409
- package/src/flow/collections/flowMap.ts +0 -398
- package/src/flow/nodes/async/flowConstantAsync.ts +0 -142
- package/src/flow/nodes/async/flowDerivationAsync.ts +0 -143
- package/src/flow/nodes/async/flowNodeAsync.ts +0 -474
- package/src/flow/nodes/async/flowReadonlyAsync.ts +0 -81
- package/src/flow/nodes/async/flowStateAsync.ts +0 -116
- package/src/flow/nodes/await/advanced/index.ts +0 -5
- package/src/flow/nodes/await/advanced/resource.ts +0 -134
- package/src/flow/nodes/await/advanced/resourceAsync.ts +0 -109
- package/src/flow/nodes/await/advanced/stream.ts +0 -188
- package/src/flow/nodes/await/advanced/streamAsync.ts +0 -176
- package/src/flow/nodes/await/flowConstantAwait.ts +0 -154
- package/src/flow/nodes/await/flowDerivationAwait.ts +0 -154
- package/src/flow/nodes/await/flowNodeAwait.ts +0 -508
- package/src/flow/nodes/await/flowReadonlyAwait.ts +0 -89
- package/src/flow/nodes/await/flowStateAwait.ts +0 -130
- package/src/flow/nodes/await/index.ts +0 -5
- package/src/flow/nodes/index.ts +0 -3
- package/src/flow/nodes/sync/flowConstant.ts +0 -111
- package/src/flow/nodes/sync/flowDerivation.ts +0 -105
- package/src/flow/nodes/sync/flowNode.ts +0 -439
- package/src/flow/nodes/sync/flowReadonly.ts +0 -57
- package/src/flow/nodes/sync/flowState.ts +0 -101
- package/src/solid/converters.ts +0 -148
- package/src/solid/index.ts +0 -2
- package/src/solid/primitives.ts +0 -215
- package/test/base/flowEffect.test.ts +0 -108
- package/test/base/flowGraph.test.ts +0 -485
- package/test/base/flowSignal.test.ts +0 -372
- package/test/collections/flowArray.asyncStates.test.ts +0 -1553
- package/test/collections/flowArray.scalars.test.ts +0 -1129
- package/test/collections/flowArray.states.test.ts +0 -1365
- package/test/collections/flowMap.asyncStates.test.ts +0 -1105
- package/test/collections/flowMap.scalars.test.ts +0 -877
- package/test/collections/flowMap.states.test.ts +0 -1097
- package/test/nodes/async/flowConstantAsync.test.ts +0 -860
- package/test/nodes/async/flowDerivationAsync.test.ts +0 -1517
- package/test/nodes/async/flowStateAsync.test.ts +0 -1387
- package/test/nodes/await/advanced/resource.test.ts +0 -129
- package/test/nodes/await/advanced/resourceAsync.test.ts +0 -108
- package/test/nodes/await/advanced/stream.test.ts +0 -198
- package/test/nodes/await/advanced/streamAsync.test.ts +0 -196
- package/test/nodes/await/flowConstantAwait.test.ts +0 -643
- package/test/nodes/await/flowDerivationAwait.test.ts +0 -1583
- package/test/nodes/await/flowStateAwait.test.ts +0 -999
- package/test/nodes/mixed/derivation.test.ts +0 -1527
- package/test/nodes/sync/flowConstant.test.ts +0 -620
- package/test/nodes/sync/flowDerivation.test.ts +0 -1373
- package/test/nodes/sync/flowState.test.ts +0 -945
- package/test/solid/converters.test.ts +0 -721
- package/test/solid/primitives.test.ts +0 -1031
- /package/dist/types/{flow → api/nodes}/collections/index.d.ts +0 -0
- /package/docs/guide/advanced/{upgrading.md → migration-v1.md} +0 -0
- /package/src/{flow → api/nodes}/collections/index.ts +0 -0
|
@@ -1,364 +0,0 @@
|
|
|
1
|
-
[@ersbeth/picoflow](/api/index.md) / FlowStreamAsync
|
|
2
|
-
|
|
3
|
-
# Class: FlowStreamAsync\<T\>
|
|
4
|
-
|
|
5
|
-
Defined in: [advanced/streamAsync.ts:69](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/advanced/streamAsync.ts#L69)
|
|
6
|
-
|
|
7
|
-
Represents an asynchronous reactive stream that always returns a Promise and updates based on an updater function.
|
|
8
|
-
|
|
9
|
-
## Remarks
|
|
10
|
-
|
|
11
|
-
FlowStreamAsync extends FlowObservable to bridge external async event sources with PicoFlow's
|
|
12
|
-
reactive system. Unlike [FlowStream](/api/classes/FlowStream.md) which returns `T | undefined`, FlowStreamAsync always
|
|
13
|
-
returns a `Promise<T>`, making it suitable for use with async/await patterns.
|
|
14
|
-
|
|
15
|
-
**How It Works:**
|
|
16
|
-
1. On construction, creates an initial Promise that resolves when the first value arrives
|
|
17
|
-
2. Your updater function receives a setter callback and sets up event subscriptions
|
|
18
|
-
3. When the setter is called with a value, the Promise resolves (first call) or a new Promise is created (subsequent calls)
|
|
19
|
-
4. The updater returns a disposer function for cleanup
|
|
20
|
-
|
|
21
|
-
**Promise Behavior:**
|
|
22
|
-
- **First call to setter**: Resolves the initial Promise created at construction
|
|
23
|
-
- **Subsequent calls**: Creates a new `Promise.resolve(value)` for immediate resolution
|
|
24
|
-
- **Reading the value**: Always returns a Promise, either pending (initial) or resolved
|
|
25
|
-
|
|
26
|
-
**Change Detection:**
|
|
27
|
-
After the first value is set, the stream only notifies subscribers when the new value
|
|
28
|
-
differs from the previous value (using strict equality `===`). This prevents unnecessary
|
|
29
|
-
updates for duplicate values.
|
|
30
|
-
|
|
31
|
-
**Resource Management:**
|
|
32
|
-
The disposer function returned by your updater is automatically called when the stream
|
|
33
|
-
is disposed. Use it to clean up subscriptions, close connections, or clear timers.
|
|
34
|
-
|
|
35
|
-
**Use Cases:**
|
|
36
|
-
- Async WebSocket message streams
|
|
37
|
-
- Server-sent events that you want to await
|
|
38
|
-
- Async event handlers
|
|
39
|
-
- Integration with async iterators
|
|
40
|
-
- Any push-based async data source
|
|
41
|
-
|
|
42
|
-
## Example
|
|
43
|
-
|
|
44
|
-
```typescript
|
|
45
|
-
// Async WebSocket stream
|
|
46
|
-
const $messages = streamAsync<string>((set) => {
|
|
47
|
-
const ws = new WebSocket('ws://example.com');
|
|
48
|
-
ws.onmessage = (event) => set(event.data);
|
|
49
|
-
return () => ws.close();
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
// Use with async/await
|
|
53
|
-
effect(async (t) => {
|
|
54
|
-
const message = await $messages.get(t);
|
|
55
|
-
console.log('Received:', message);
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
// Wait for the first message
|
|
59
|
-
const firstMessage = await $messages.pick();
|
|
60
|
-
console.log('First message:', firstMessage);
|
|
61
|
-
|
|
62
|
-
// Async timer stream
|
|
63
|
-
const $asyncTick = streamAsync<number>((set) => {
|
|
64
|
-
let count = 0;
|
|
65
|
-
const id = setInterval(() => set(count++), 1000);
|
|
66
|
-
return () => clearInterval(id);
|
|
67
|
-
});
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
## Extends
|
|
71
|
-
|
|
72
|
-
- [`FlowObservable`](/api/classes/FlowObservable.md)\<`Promise`\<`T`\>\>
|
|
73
|
-
|
|
74
|
-
## Type Parameters
|
|
75
|
-
|
|
76
|
-
| Type Parameter | Description |
|
|
77
|
-
| ------ | ------ |
|
|
78
|
-
| `T` | The type of the values emitted by the stream (not the Promise itself). |
|
|
79
|
-
|
|
80
|
-
## Constructors
|
|
81
|
-
|
|
82
|
-
### Constructor
|
|
83
|
-
|
|
84
|
-
```ts
|
|
85
|
-
new FlowStreamAsync<T>(updater): FlowStreamAsync<T>;
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
Defined in: [advanced/streamAsync.ts:84](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/advanced/streamAsync.ts#L84)
|
|
89
|
-
|
|
90
|
-
Creates a new asynchronous FlowStream.
|
|
91
|
-
|
|
92
|
-
#### Parameters
|
|
93
|
-
|
|
94
|
-
| Parameter | Type | Description |
|
|
95
|
-
| ------ | ------ | ------ |
|
|
96
|
-
| `updater` | [`FlowStreamUpdater`](/api/type-aliases/FlowStreamUpdater.md)\<`T`\> | A function that receives a setter callback and returns a disposer. The setter should be called whenever new data is available (can be called asynchronously). The disposer will be invoked when the stream is disposed to clean up resources. |
|
|
97
|
-
|
|
98
|
-
#### Returns
|
|
99
|
-
|
|
100
|
-
`FlowStreamAsync`\<`T`\>
|
|
101
|
-
|
|
102
|
-
#### Remarks
|
|
103
|
-
|
|
104
|
-
The updater is invoked immediately during construction. An initial Promise is created
|
|
105
|
-
that will resolve when the setter is first called. Make sure to return a proper cleanup
|
|
106
|
-
function to avoid resource leaks.
|
|
107
|
-
|
|
108
|
-
#### Overrides
|
|
109
|
-
|
|
110
|
-
[`FlowObservable`](/api/classes/FlowObservable.md).[`constructor`](/api/classes/FlowObservable.md#constructor)
|
|
111
|
-
|
|
112
|
-
## Accessors
|
|
113
|
-
|
|
114
|
-
### disposed
|
|
115
|
-
|
|
116
|
-
#### Get Signature
|
|
117
|
-
|
|
118
|
-
```ts
|
|
119
|
-
get disposed(): boolean;
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
Defined in: [basic/signal.ts:97](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/basic/signal.ts#L97)
|
|
123
|
-
|
|
124
|
-
Indicates whether the FlowSignal has been disposed.
|
|
125
|
-
|
|
126
|
-
##### Remarks
|
|
127
|
-
|
|
128
|
-
Once disposed, the signal should not be used.
|
|
129
|
-
|
|
130
|
-
##### Returns
|
|
131
|
-
|
|
132
|
-
`boolean`
|
|
133
|
-
|
|
134
|
-
#### Inherited from
|
|
135
|
-
|
|
136
|
-
[`FlowObservable`](/api/classes/FlowObservable.md).[`disposed`](/api/classes/FlowObservable.md#disposed)
|
|
137
|
-
|
|
138
|
-
## Methods
|
|
139
|
-
|
|
140
|
-
### dispose()
|
|
141
|
-
|
|
142
|
-
```ts
|
|
143
|
-
dispose(): void;
|
|
144
|
-
```
|
|
145
|
-
|
|
146
|
-
Defined in: [advanced/streamAsync.ts:110](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/advanced/streamAsync.ts#L110)
|
|
147
|
-
|
|
148
|
-
Disposes the stream, releasing all resources.
|
|
149
|
-
|
|
150
|
-
#### Returns
|
|
151
|
-
|
|
152
|
-
`void`
|
|
153
|
-
|
|
154
|
-
#### Remarks
|
|
155
|
-
|
|
156
|
-
In addition to disposing the underlying observable, this method calls the disposer
|
|
157
|
-
returned by the updater.
|
|
158
|
-
|
|
159
|
-
#### Overrides
|
|
160
|
-
|
|
161
|
-
[`FlowObservable`](/api/classes/FlowObservable.md).[`dispose`](/api/classes/FlowObservable.md#dispose)
|
|
162
|
-
|
|
163
|
-
***
|
|
164
|
-
|
|
165
|
-
### get()
|
|
166
|
-
|
|
167
|
-
```ts
|
|
168
|
-
get(context): Promise;
|
|
169
|
-
```
|
|
170
|
-
|
|
171
|
-
Defined in: [basic/observable.ts:47](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/basic/observable.ts#L47)
|
|
172
|
-
|
|
173
|
-
Gets the current value with optional dependency tracking.
|
|
174
|
-
|
|
175
|
-
#### Parameters
|
|
176
|
-
|
|
177
|
-
| Parameter | Type | Description |
|
|
178
|
-
| ------ | ------ | ------ |
|
|
179
|
-
| `context` | [`TrackingContext`](/api/classes/TrackingContext.md) \| `null` | The tracking context for reactive tracking, or null for untracked access. When a context is provided, this observable is registered as a dependency. When null, the value is read without any tracking. |
|
|
180
|
-
|
|
181
|
-
#### Returns
|
|
182
|
-
|
|
183
|
-
`Promise`
|
|
184
|
-
|
|
185
|
-
The current value of type T.
|
|
186
|
-
|
|
187
|
-
#### Remarks
|
|
188
|
-
|
|
189
|
-
Use `get(t)` within effects and derivations to create reactive dependencies.
|
|
190
|
-
Use `get(null)` when you need to read a value without tracking (though `pick()` is more idiomatic).
|
|
191
|
-
|
|
192
|
-
#### Example
|
|
193
|
-
|
|
194
|
-
```typescript
|
|
195
|
-
effect((t) => {
|
|
196
|
-
const tracked = $state.get(t); // Dependency registered
|
|
197
|
-
const untracked = $other.get(null); // No dependency
|
|
198
|
-
});
|
|
199
|
-
```
|
|
200
|
-
|
|
201
|
-
#### Inherited from
|
|
202
|
-
|
|
203
|
-
[`FlowObservable`](/api/classes/FlowObservable.md).[`get`](/api/classes/FlowObservable.md#get)
|
|
204
|
-
|
|
205
|
-
***
|
|
206
|
-
|
|
207
|
-
### pick()
|
|
208
|
-
|
|
209
|
-
```ts
|
|
210
|
-
pick(): Promise;
|
|
211
|
-
```
|
|
212
|
-
|
|
213
|
-
Defined in: [basic/observable.ts:82](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/basic/observable.ts#L82)
|
|
214
|
-
|
|
215
|
-
Gets the current value without any dependency tracking.
|
|
216
|
-
|
|
217
|
-
#### Returns
|
|
218
|
-
|
|
219
|
-
`Promise`
|
|
220
|
-
|
|
221
|
-
The current value of type T.
|
|
222
|
-
|
|
223
|
-
#### Remarks
|
|
224
|
-
|
|
225
|
-
This method is equivalent to calling `get(null)` but provides a more semantic and readable API.
|
|
226
|
-
Use `pick()` when you want to read a snapshot of the current value without creating a reactive
|
|
227
|
-
dependency. This is useful for:
|
|
228
|
-
- Reading initial values
|
|
229
|
-
- Accessing configuration that shouldn't trigger updates
|
|
230
|
-
- Mixing tracked and untracked reads in the same effect
|
|
231
|
-
|
|
232
|
-
#### Example
|
|
233
|
-
|
|
234
|
-
```typescript
|
|
235
|
-
// Read a snapshot outside reactive context
|
|
236
|
-
const currentValue = $state.pick();
|
|
237
|
-
|
|
238
|
-
// Mix tracked and untracked reads
|
|
239
|
-
effect((t) => {
|
|
240
|
-
const tracked = $reactive.get(t); // Triggers re-runs
|
|
241
|
-
const snapshot = $config.pick(); // Doesn't trigger re-runs
|
|
242
|
-
processData(tracked, snapshot);
|
|
243
|
-
});
|
|
244
|
-
```
|
|
245
|
-
|
|
246
|
-
#### Inherited from
|
|
247
|
-
|
|
248
|
-
[`FlowObservable`](/api/classes/FlowObservable.md).[`pick`](/api/classes/FlowObservable.md#pick)
|
|
249
|
-
|
|
250
|
-
***
|
|
251
|
-
|
|
252
|
-
### subscribe()
|
|
253
|
-
|
|
254
|
-
```ts
|
|
255
|
-
subscribe(listener): () => void;
|
|
256
|
-
```
|
|
257
|
-
|
|
258
|
-
Defined in: [basic/observable.ts:103](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/basic/observable.ts#L103)
|
|
259
|
-
|
|
260
|
-
Subscribes a listener function to changes of the observable.
|
|
261
|
-
The listener is executed immediately with the current value and on subsequent updates.
|
|
262
|
-
|
|
263
|
-
#### Parameters
|
|
264
|
-
|
|
265
|
-
| Parameter | Type | Description |
|
|
266
|
-
| ------ | ------ | ------ |
|
|
267
|
-
| `listener` | (`value`) => `void` | A callback function that receives the new value. |
|
|
268
|
-
|
|
269
|
-
#### Returns
|
|
270
|
-
|
|
271
|
-
A disposer function to cancel the subscription.
|
|
272
|
-
|
|
273
|
-
```ts
|
|
274
|
-
(): void;
|
|
275
|
-
```
|
|
276
|
-
|
|
277
|
-
##### Returns
|
|
278
|
-
|
|
279
|
-
`void`
|
|
280
|
-
|
|
281
|
-
#### Inherited from
|
|
282
|
-
|
|
283
|
-
[`FlowObservable`](/api/classes/FlowObservable.md).[`subscribe`](/api/classes/FlowObservable.md#subscribe)
|
|
284
|
-
|
|
285
|
-
***
|
|
286
|
-
|
|
287
|
-
### trigger()
|
|
288
|
-
|
|
289
|
-
```ts
|
|
290
|
-
trigger(): void;
|
|
291
|
-
```
|
|
292
|
-
|
|
293
|
-
Defined in: [basic/signal.ts:19](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/basic/signal.ts#L19)
|
|
294
|
-
|
|
295
|
-
Triggers the FlowSignal.
|
|
296
|
-
Notifies all registered listeners and schedules execution of associated effects.
|
|
297
|
-
|
|
298
|
-
#### Returns
|
|
299
|
-
|
|
300
|
-
`void`
|
|
301
|
-
|
|
302
|
-
#### Throws
|
|
303
|
-
|
|
304
|
-
If the FlowSignal has already been disposed.
|
|
305
|
-
|
|
306
|
-
#### Inherited from
|
|
307
|
-
|
|
308
|
-
[`FlowObservable`](/api/classes/FlowObservable.md).[`trigger`](/api/classes/FlowObservable.md#trigger)
|
|
309
|
-
|
|
310
|
-
***
|
|
311
|
-
|
|
312
|
-
### watch()
|
|
313
|
-
|
|
314
|
-
```ts
|
|
315
|
-
watch(context): void;
|
|
316
|
-
```
|
|
317
|
-
|
|
318
|
-
Defined in: [basic/signal.ts:57](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/basic/signal.ts#L57)
|
|
319
|
-
|
|
320
|
-
Watches the signal, registering it as a dependency in the tracking context.
|
|
321
|
-
|
|
322
|
-
#### Parameters
|
|
323
|
-
|
|
324
|
-
| Parameter | Type | Description |
|
|
325
|
-
| ------ | ------ | ------ |
|
|
326
|
-
| `context` | [`TrackingContext`](/api/classes/TrackingContext.md) | The tracking context in which to register this signal as a dependency. |
|
|
327
|
-
|
|
328
|
-
#### Returns
|
|
329
|
-
|
|
330
|
-
`void`
|
|
331
|
-
|
|
332
|
-
#### Remarks
|
|
333
|
-
|
|
334
|
-
Use `watch()` when you want to track a signal without reading its value (signals don't
|
|
335
|
-
have values to read). This is useful for triggering effects based on signal events
|
|
336
|
-
without needing associated data.
|
|
337
|
-
|
|
338
|
-
When the signal is triggered via `trigger()`, any effects or derivations that have
|
|
339
|
-
watched this signal will automatically re-execute.
|
|
340
|
-
|
|
341
|
-
This method must be called within an effect or derivation context where a TrackingContext
|
|
342
|
-
is available. For observables (which hold values), use `.get(t)` instead, which both
|
|
343
|
-
reads the value and watches for changes.
|
|
344
|
-
|
|
345
|
-
#### Throws
|
|
346
|
-
|
|
347
|
-
Error if the signal has been disposed.
|
|
348
|
-
|
|
349
|
-
#### Example
|
|
350
|
-
|
|
351
|
-
```typescript
|
|
352
|
-
const $signal = signal();
|
|
353
|
-
|
|
354
|
-
effect((t) => {
|
|
355
|
-
$signal.watch(t); // Track the signal
|
|
356
|
-
console.log('Signal triggered!');
|
|
357
|
-
});
|
|
358
|
-
|
|
359
|
-
$signal.trigger(); // Logs: "Signal triggered!"
|
|
360
|
-
```
|
|
361
|
-
|
|
362
|
-
#### Inherited from
|
|
363
|
-
|
|
364
|
-
[`FlowObservable`](/api/classes/FlowObservable.md).[`watch`](/api/classes/FlowObservable.md#watch)
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
[@ersbeth/picoflow](/api/index.md) / SolidDerivation
|
|
2
|
-
|
|
3
|
-
# Class: SolidDerivation\<T\>
|
|
4
|
-
|
|
5
|
-
Defined in: [solid/primitives.ts:114](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/solid/primitives.ts#L114)
|
|
6
|
-
|
|
7
|
-
Solid-style derivation wrapping SolidJS's createMemo, providing a computed reactive value.
|
|
8
|
-
|
|
9
|
-
## Remarks
|
|
10
|
-
|
|
11
|
-
SolidDerivation is a thin wrapper around SolidJS's `createMemo` that provides a class-based
|
|
12
|
-
interface consistent with PicoFlow's API style. It creates a memoized computation that
|
|
13
|
-
automatically tracks its dependencies and recomputes only when they change.
|
|
14
|
-
|
|
15
|
-
Unlike PicoFlow's [FlowDerivation](/api/classes/FlowDerivation.md) which uses explicit tracking context, SolidDerivation
|
|
16
|
-
relies on SolidJS's automatic dependency tracking. The computation function runs within
|
|
17
|
-
SolidJS's reactive scope and automatically subscribes to any signals accessed during execution.
|
|
18
|
-
|
|
19
|
-
**Memoization:**
|
|
20
|
-
The computed value is cached and only recomputed when tracked dependencies change,
|
|
21
|
-
providing efficient derived state management.
|
|
22
|
-
|
|
23
|
-
## Example
|
|
24
|
-
|
|
25
|
-
```typescript
|
|
26
|
-
const firstName = new SolidState('John');
|
|
27
|
-
const lastName = new SolidState('Doe');
|
|
28
|
-
|
|
29
|
-
const fullName = new SolidDerivation(() => {
|
|
30
|
-
return `${firstName.get()} ${lastName.get()}`;
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
// In a Solid component
|
|
34
|
-
function Display() {
|
|
35
|
-
return <div>{fullName.get()}</div>; // Automatically updates
|
|
36
|
-
}
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
## Type Parameters
|
|
40
|
-
|
|
41
|
-
| Type Parameter | Description |
|
|
42
|
-
| ------ | ------ |
|
|
43
|
-
| `T` | The value type. |
|
|
44
|
-
|
|
45
|
-
## Implements
|
|
46
|
-
|
|
47
|
-
- [`SolidObservable`](/api/interfaces/SolidObservable.md)\<`T`\>
|
|
48
|
-
|
|
49
|
-
## Constructors
|
|
50
|
-
|
|
51
|
-
### Constructor
|
|
52
|
-
|
|
53
|
-
```ts
|
|
54
|
-
new SolidDerivation<T>(calculator): SolidDerivation<T>;
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
Defined in: [solid/primitives.ts:124](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/solid/primitives.ts#L124)
|
|
58
|
-
|
|
59
|
-
Creates a new SolidDerivation from a getter function or value.
|
|
60
|
-
|
|
61
|
-
#### Parameters
|
|
62
|
-
|
|
63
|
-
| Parameter | Type | Description |
|
|
64
|
-
| ------ | ------ | ------ |
|
|
65
|
-
| `calculator` | [`SolidGetter`](/api/type-aliases/SolidGetter.md)\<`T`\> | The getter function or value. |
|
|
66
|
-
|
|
67
|
-
#### Returns
|
|
68
|
-
|
|
69
|
-
`SolidDerivation`\<`T`\>
|
|
70
|
-
|
|
71
|
-
## Properties
|
|
72
|
-
|
|
73
|
-
| Property | Modifier | Type | Description | Defined in |
|
|
74
|
-
| ------ | ------ | ------ | ------ | ------ |
|
|
75
|
-
| <a id="get"></a> `get` | `readonly` | () => `T` | Returns the current derived value. | [solid/primitives.ts:118](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/solid/primitives.ts#L118) |
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
[@ersbeth/picoflow](/api/index.md) / SolidResource
|
|
2
|
-
|
|
3
|
-
# Class: SolidResource\<T\>
|
|
4
|
-
|
|
5
|
-
Defined in: [solid/primitives.ts:177](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/solid/primitives.ts#L177)
|
|
6
|
-
|
|
7
|
-
Solid-style resource wrapping SolidJS's createResource, providing async data loading with reactive state.
|
|
8
|
-
|
|
9
|
-
## Remarks
|
|
10
|
-
|
|
11
|
-
SolidResource is a thin wrapper around SolidJS's `createResource` that provides a class-based
|
|
12
|
-
interface consistent with PicoFlow's API style. It manages asynchronous data fetching with
|
|
13
|
-
built-in loading states, error handling, and automatic reactivity.
|
|
14
|
-
|
|
15
|
-
Unlike PicoFlow's [FlowResource](/api/classes/FlowResource.md) or [FlowResourceAsync](/api/classes/FlowResourceAsync.md), SolidResource integrates
|
|
16
|
-
directly with SolidJS's Suspense and ErrorBoundary mechanisms, providing a first-class async
|
|
17
|
-
data loading experience in Solid applications.
|
|
18
|
-
|
|
19
|
-
**Resource States:**
|
|
20
|
-
- `unresolved`: Initial state before first fetch
|
|
21
|
-
- `pending`: Fetch is in progress
|
|
22
|
-
- `ready`: Data has been successfully loaded
|
|
23
|
-
- `refreshing`: Refetching while previous data is still available
|
|
24
|
-
- `errored`: Fetch failed with an error
|
|
25
|
-
|
|
26
|
-
**Properties:**
|
|
27
|
-
- `get()`: Returns the current value (or undefined if not ready)
|
|
28
|
-
- `state()`: Returns the current loading state
|
|
29
|
-
- `latest()`: Returns the most recent successfully loaded value
|
|
30
|
-
- `refetch()`: Triggers a new fetch operation
|
|
31
|
-
|
|
32
|
-
## Example
|
|
33
|
-
|
|
34
|
-
```typescript
|
|
35
|
-
const user = new SolidResource(async () => {
|
|
36
|
-
const res = await fetch('/api/user');
|
|
37
|
-
return res.json();
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
// In a Solid component
|
|
41
|
-
function UserProfile() {
|
|
42
|
-
return (
|
|
43
|
-
<div>
|
|
44
|
-
{user.state() === 'pending' && <p>Loading...</p>}
|
|
45
|
-
{user.state() === 'ready' && <p>Name: {user.get()?.name}</p>}
|
|
46
|
-
<button onClick={() => user.refetch()}>Refresh</button>
|
|
47
|
-
</div>
|
|
48
|
-
);
|
|
49
|
-
}
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
## Type Parameters
|
|
53
|
-
|
|
54
|
-
| Type Parameter | Description |
|
|
55
|
-
| ------ | ------ |
|
|
56
|
-
| `T` | The value type. |
|
|
57
|
-
|
|
58
|
-
## Implements
|
|
59
|
-
|
|
60
|
-
- [`SolidObservable`](/api/interfaces/SolidObservable.md)\<`T` \| `undefined`\>
|
|
61
|
-
|
|
62
|
-
## Constructors
|
|
63
|
-
|
|
64
|
-
### Constructor
|
|
65
|
-
|
|
66
|
-
```ts
|
|
67
|
-
new SolidResource<T>(fetcher): SolidResource<T>;
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
Defined in: [solid/primitives.ts:204](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/solid/primitives.ts#L204)
|
|
71
|
-
|
|
72
|
-
Creates a new SolidResource from a fetcher function.
|
|
73
|
-
|
|
74
|
-
#### Parameters
|
|
75
|
-
|
|
76
|
-
| Parameter | Type | Description |
|
|
77
|
-
| ------ | ------ | ------ |
|
|
78
|
-
| `fetcher` | `ResourceFetcher`\<`true`, `T`, `unknown`\> | The async fetcher function. |
|
|
79
|
-
|
|
80
|
-
#### Returns
|
|
81
|
-
|
|
82
|
-
`SolidResource`\<`T`\>
|
|
83
|
-
|
|
84
|
-
## Properties
|
|
85
|
-
|
|
86
|
-
| Property | Modifier | Type | Description | Defined in |
|
|
87
|
-
| ------ | ------ | ------ | ------ | ------ |
|
|
88
|
-
| <a id="get"></a> `get` | `readonly` | () => `T` \| `undefined` | Returns the current value (or undefined if not yet loaded). | [solid/primitives.ts:181](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/solid/primitives.ts#L181) |
|
|
89
|
-
| <a id="latest"></a> `latest` | `readonly` | () => `T` \| `undefined` | Returns the latest successfully loaded value (or undefined). | [solid/primitives.ts:194](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/solid/primitives.ts#L194) |
|
|
90
|
-
| <a id="refetch"></a> `refetch` | `readonly` | () => `void` | Triggers a refetch of the resource. | [solid/primitives.ts:198](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/solid/primitives.ts#L198) |
|
|
91
|
-
| <a id="state"></a> `state` | `readonly` | () => `"unresolved"` \| `"pending"` \| `"errored"` \| `"ready"` \| `"refreshing"` | Returns the current resource state. | [solid/primitives.ts:185](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/solid/primitives.ts#L185) |
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
[@ersbeth/picoflow](/api/index.md) / SolidState
|
|
2
|
-
|
|
3
|
-
# Class: SolidState\<T\>
|
|
4
|
-
|
|
5
|
-
Defined in: [solid/primitives.ts:58](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/solid/primitives.ts#L58)
|
|
6
|
-
|
|
7
|
-
Solid-style state container wrapping SolidJS's createSignal, providing a writable reactive signal.
|
|
8
|
-
|
|
9
|
-
## Remarks
|
|
10
|
-
|
|
11
|
-
SolidState is a thin wrapper around SolidJS's `createSignal` that provides a class-based
|
|
12
|
-
interface consistent with PicoFlow's API style. It's used internally by PicoFlow's Solid
|
|
13
|
-
integration but can also be used directly in Solid components.
|
|
14
|
-
|
|
15
|
-
Unlike PicoFlow's [FlowState](/api/classes/FlowState.md) which uses explicit tracking context, SolidState
|
|
16
|
-
relies on SolidJS's automatic dependency tracking within reactive contexts like
|
|
17
|
-
`createEffect` or component render functions.
|
|
18
|
-
|
|
19
|
-
## Example
|
|
20
|
-
|
|
21
|
-
```typescript
|
|
22
|
-
const count = new SolidState(0);
|
|
23
|
-
|
|
24
|
-
// In a Solid component
|
|
25
|
-
function Counter() {
|
|
26
|
-
return <div>{count.get()}</div>; // Automatically reactive
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
// Update the value
|
|
30
|
-
count.set(1);
|
|
31
|
-
count.set(prev => prev + 1);
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
## Type Parameters
|
|
35
|
-
|
|
36
|
-
| Type Parameter | Description |
|
|
37
|
-
| ------ | ------ |
|
|
38
|
-
| `T` | The value type. |
|
|
39
|
-
|
|
40
|
-
## Implements
|
|
41
|
-
|
|
42
|
-
- [`SolidObservable`](/api/interfaces/SolidObservable.md)\<`T`\>
|
|
43
|
-
|
|
44
|
-
## Constructors
|
|
45
|
-
|
|
46
|
-
### Constructor
|
|
47
|
-
|
|
48
|
-
```ts
|
|
49
|
-
new SolidState<T>(initialValue): SolidState<T>;
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
Defined in: [solid/primitives.ts:72](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/solid/primitives.ts#L72)
|
|
53
|
-
|
|
54
|
-
Creates a new SolidState with the given initial value.
|
|
55
|
-
|
|
56
|
-
#### Parameters
|
|
57
|
-
|
|
58
|
-
| Parameter | Type | Description |
|
|
59
|
-
| ------ | ------ | ------ |
|
|
60
|
-
| `initialValue` | `T` | The initial value. |
|
|
61
|
-
|
|
62
|
-
#### Returns
|
|
63
|
-
|
|
64
|
-
`SolidState`\<`T`\>
|
|
65
|
-
|
|
66
|
-
## Properties
|
|
67
|
-
|
|
68
|
-
| Property | Modifier | Type | Description | Defined in |
|
|
69
|
-
| ------ | ------ | ------ | ------ | ------ |
|
|
70
|
-
| <a id="get"></a> `get` | `readonly` | () => `T` | Returns the current value. | [solid/primitives.ts:62](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/solid/primitives.ts#L62) |
|
|
71
|
-
| <a id="set"></a> `set` | `readonly` | (`param`) => `void` | Sets the value or updates it using a getter function. | [solid/primitives.ts:66](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/solid/primitives.ts#L66) |
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
[@ersbeth/picoflow](/api/index.md) / TrackingContext
|
|
2
|
-
|
|
3
|
-
# Class: TrackingContext
|
|
4
|
-
|
|
5
|
-
Defined in: [basic/trackingContext.ts:34](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/basic/trackingContext.ts#L34)
|
|
6
|
-
|
|
7
|
-
Represents a tracking context used to register dependencies during reactive computations.
|
|
8
|
-
|
|
9
|
-
## Remarks
|
|
10
|
-
|
|
11
|
-
TrackingContext is the core mechanism that enables automatic dependency tracking in PicoFlow's
|
|
12
|
-
reactive system. When you create an effect or derivation, PicoFlow automatically creates and
|
|
13
|
-
manages a TrackingContext instance for you. This context is passed as a parameter (typically
|
|
14
|
-
named `t`) to your computation functions.
|
|
15
|
-
|
|
16
|
-
You use the tracking context to explicitly mark which observables should be tracked as dependencies:
|
|
17
|
-
- Call `observable.get(t)` to read a value AND register it as a dependency
|
|
18
|
-
- Call `observable.pick()` to read a value WITHOUT registering it as a dependency
|
|
19
|
-
- Call `signal.watch(t)` to register a signal as a dependency without reading a value
|
|
20
|
-
|
|
21
|
-
End-users typically don't instantiate TrackingContext directly; instead, they receive it as
|
|
22
|
-
a parameter in effect and derivation callbacks.
|
|
23
|
-
|
|
24
|
-
## Example
|
|
25
|
-
|
|
26
|
-
```typescript
|
|
27
|
-
// TrackingContext passed as parameter 't'
|
|
28
|
-
effect((t) => {
|
|
29
|
-
const value = $state.get(t); // Tracked dependency
|
|
30
|
-
const snapshot = $other.pick(); // Not tracked
|
|
31
|
-
console.log(value, snapshot);
|
|
32
|
-
});
|
|
33
|
-
```
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
[@ersbeth/picoflow](/api/index.md) / effect
|
|
2
|
-
|
|
3
|
-
# Function: effect()
|
|
4
|
-
|
|
5
|
-
```ts
|
|
6
|
-
function effect(fn): FlowEffect;
|
|
7
|
-
```
|
|
8
|
-
|
|
9
|
-
Defined in: [creators.ts:310](https://gitlab.com/ersbeth-web/picoflow/-/blob/a6cd2e5702b60b87a8efe22e2fe7d2ce3b0ccca4/src/creators.ts#L310)
|
|
10
|
-
|
|
11
|
-
Creates a new reactive effect that executes a side-effect function based on its dependencies.
|
|
12
|
-
|
|
13
|
-
## Parameters
|
|
14
|
-
|
|
15
|
-
| Parameter | Type | Description |
|
|
16
|
-
| ------ | ------ | ------ |
|
|
17
|
-
| `fn` | (`t`) => `void` | A function that performs side effects using a tracking context. |
|
|
18
|
-
|
|
19
|
-
## Returns
|
|
20
|
-
|
|
21
|
-
[`FlowEffect`](/api/classes/FlowEffect.md)
|
|
22
|
-
|
|
23
|
-
A new instance of [FlowEffect](/api/classes/FlowEffect.md).
|
|
24
|
-
|
|
25
|
-
## Remarks
|
|
26
|
-
|
|
27
|
-
An effect is a reactive computation that runs immediately and re-runs whenever its tracked
|
|
28
|
-
dependencies change. Use effects for side effects like logging, DOM updates, network requests,
|
|
29
|
-
or any operation that should respond to reactive state changes.
|
|
30
|
-
|
|
31
|
-
The effect executes immediately upon creation and provides a tracking context (`t`) that you
|
|
32
|
-
use to explicitly mark dependencies via `observable.get(t)`. Use `observable.pick()` for
|
|
33
|
-
reads that shouldn't trigger re-runs.
|
|
34
|
-
|
|
35
|
-
## Example
|
|
36
|
-
|
|
37
|
-
```typescript
|
|
38
|
-
const $count = state(0);
|
|
39
|
-
|
|
40
|
-
const fx = effect((t) => {
|
|
41
|
-
console.log('Count is:', $count.get(t));
|
|
42
|
-
});
|
|
43
|
-
|
|
44
|
-
$count.set(1); // Logs: "Count is: 1"
|
|
45
|
-
$count.set(2); // Logs: "Count is: 2"
|
|
46
|
-
|
|
47
|
-
// Clean up when done
|
|
48
|
-
fx.dispose();
|
|
49
|
-
```
|