@typed/fx 1.32.0 → 2.0.0-beta.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/README.md +344 -2
- package/dist/Fx/Fx.d.ts +96 -0
- package/dist/Fx/Fx.d.ts.map +1 -0
- package/dist/Fx/Fx.js +35 -0
- package/dist/Fx/TypeId.d.ts +20 -0
- package/dist/Fx/TypeId.d.ts.map +1 -0
- package/dist/Fx/TypeId.js +15 -0
- package/dist/Fx/combinators/catch.d.ts +53 -0
- package/dist/Fx/combinators/catch.d.ts.map +1 -0
- package/dist/Fx/combinators/catch.js +69 -0
- package/dist/Fx/combinators/causes.d.ts +12 -0
- package/dist/Fx/combinators/causes.d.ts.map +1 -0
- package/dist/Fx/combinators/causes.js +16 -0
- package/dist/Fx/combinators/compact.d.ts +12 -0
- package/dist/Fx/combinators/compact.d.ts.map +1 -0
- package/dist/Fx/combinators/compact.js +11 -0
- package/dist/Fx/combinators/continueWith.d.ts +51 -0
- package/dist/Fx/combinators/continueWith.d.ts.map +1 -0
- package/dist/Fx/combinators/continueWith.js +41 -0
- package/dist/Fx/combinators/ensuring.d.ts +16 -0
- package/dist/Fx/combinators/ensuring.d.ts.map +1 -0
- package/dist/Fx/combinators/ensuring.js +13 -0
- package/dist/Fx/combinators/exhaustLatestMap.d.ts +15 -0
- package/dist/Fx/combinators/exhaustLatestMap.d.ts.map +1 -0
- package/dist/Fx/combinators/exhaustLatestMap.js +48 -0
- package/dist/Fx/combinators/exhaustLatestMapEffect.d.ts +13 -0
- package/dist/Fx/combinators/exhaustLatestMapEffect.d.ts.map +1 -0
- package/dist/Fx/combinators/exhaustLatestMapEffect.js +14 -0
- package/dist/Fx/combinators/exhaustMap.d.ts +11 -0
- package/dist/Fx/combinators/exhaustMap.d.ts.map +1 -0
- package/dist/Fx/combinators/exhaustMap.js +19 -0
- package/dist/Fx/combinators/exhaustMapEffect.d.ts +11 -0
- package/dist/Fx/combinators/exhaustMapEffect.d.ts.map +1 -0
- package/dist/Fx/combinators/exhaustMapEffect.js +12 -0
- package/dist/Fx/combinators/exit.d.ts +12 -0
- package/dist/Fx/combinators/exit.d.ts.map +1 -0
- package/dist/Fx/combinators/exit.js +11 -0
- package/dist/Fx/combinators/filter.d.ts +14 -0
- package/dist/Fx/combinators/filter.d.ts.map +1 -0
- package/dist/Fx/combinators/filter.js +12 -0
- package/dist/Fx/combinators/filterEffect.d.ts +15 -0
- package/dist/Fx/combinators/filterEffect.d.ts.map +1 -0
- package/dist/Fx/combinators/filterEffect.js +12 -0
- package/dist/Fx/combinators/filterMap.d.ts +15 -0
- package/dist/Fx/combinators/filterMap.d.ts.map +1 -0
- package/dist/Fx/combinators/filterMap.js +12 -0
- package/dist/Fx/combinators/filterMapEffect.d.ts +16 -0
- package/dist/Fx/combinators/filterMapEffect.d.ts.map +1 -0
- package/dist/Fx/combinators/filterMapEffect.js +12 -0
- package/dist/Fx/combinators/filterMapLoop.d.ts +17 -0
- package/dist/Fx/combinators/filterMapLoop.d.ts.map +1 -0
- package/dist/Fx/combinators/filterMapLoop.js +14 -0
- package/dist/Fx/combinators/filterMapLoopCause.d.ts +18 -0
- package/dist/Fx/combinators/filterMapLoopCause.d.ts.map +1 -0
- package/dist/Fx/combinators/filterMapLoopCause.js +14 -0
- package/dist/Fx/combinators/filterMapLoopCauseEffect.d.ts +18 -0
- package/dist/Fx/combinators/filterMapLoopCauseEffect.d.ts.map +1 -0
- package/dist/Fx/combinators/filterMapLoopCauseEffect.js +13 -0
- package/dist/Fx/combinators/filterMapLoopEffect.d.ts +17 -0
- package/dist/Fx/combinators/filterMapLoopEffect.d.ts.map +1 -0
- package/dist/Fx/combinators/filterMapLoopEffect.js +13 -0
- package/dist/Fx/combinators/flatMap.d.ts +23 -0
- package/dist/Fx/combinators/flatMap.d.ts.map +1 -0
- package/dist/Fx/combinators/flatMap.js +21 -0
- package/dist/Fx/combinators/flatMapConcurrently.d.ts +12 -0
- package/dist/Fx/combinators/flatMapConcurrently.d.ts.map +1 -0
- package/dist/Fx/combinators/flatMapConcurrently.js +22 -0
- package/dist/Fx/combinators/flatMapConcurrentlyEffect.d.ts +12 -0
- package/dist/Fx/combinators/flatMapConcurrentlyEffect.d.ts.map +1 -0
- package/dist/Fx/combinators/flatMapConcurrentlyEffect.js +13 -0
- package/dist/Fx/combinators/flatMapEffect.d.ts +24 -0
- package/dist/Fx/combinators/flatMapEffect.d.ts.map +1 -0
- package/dist/Fx/combinators/flatMapEffect.js +14 -0
- package/dist/Fx/combinators/flip.d.ts +11 -0
- package/dist/Fx/combinators/flip.d.ts.map +1 -0
- package/dist/Fx/combinators/flip.js +11 -0
- package/dist/Fx/combinators/gen.d.ts +20 -0
- package/dist/Fx/combinators/gen.d.ts.map +1 -0
- package/dist/Fx/combinators/gen.js +14 -0
- package/dist/Fx/combinators/genScoped.d.ts +20 -0
- package/dist/Fx/combinators/genScoped.d.ts.map +1 -0
- package/dist/Fx/combinators/genScoped.js +13 -0
- package/dist/Fx/combinators/index.d.ts +52 -0
- package/dist/Fx/combinators/index.d.ts.map +1 -0
- package/dist/Fx/combinators/index.js +51 -0
- package/dist/Fx/combinators/keyed.d.ts +44 -0
- package/dist/Fx/combinators/keyed.d.ts.map +1 -0
- package/dist/Fx/combinators/keyed.js +199 -0
- package/dist/Fx/combinators/loop.d.ts +16 -0
- package/dist/Fx/combinators/loop.d.ts.map +1 -0
- package/dist/Fx/combinators/loop.js +14 -0
- package/dist/Fx/combinators/loopCause.d.ts +16 -0
- package/dist/Fx/combinators/loopCause.d.ts.map +1 -0
- package/dist/Fx/combinators/loopCause.js +13 -0
- package/dist/Fx/combinators/loopCauseEffect.d.ts +17 -0
- package/dist/Fx/combinators/loopCauseEffect.d.ts.map +1 -0
- package/dist/Fx/combinators/loopCauseEffect.js +13 -0
- package/dist/Fx/combinators/loopEffect.d.ts +16 -0
- package/dist/Fx/combinators/loopEffect.d.ts.map +1 -0
- package/dist/Fx/combinators/loopEffect.js +13 -0
- package/dist/Fx/combinators/map.d.ts +14 -0
- package/dist/Fx/combinators/map.d.ts.map +1 -0
- package/dist/Fx/combinators/map.js +12 -0
- package/dist/Fx/combinators/mapEffect.d.ts +15 -0
- package/dist/Fx/combinators/mapEffect.d.ts.map +1 -0
- package/dist/Fx/combinators/mapEffect.js +12 -0
- package/dist/Fx/combinators/mergeAll.d.ts +11 -0
- package/dist/Fx/combinators/mergeAll.d.ts.map +1 -0
- package/dist/Fx/combinators/mergeAll.js +15 -0
- package/dist/Fx/combinators/mergeOrdered.d.ts +14 -0
- package/dist/Fx/combinators/mergeOrdered.d.ts.map +1 -0
- package/dist/Fx/combinators/mergeOrdered.js +89 -0
- package/dist/Fx/combinators/onError.d.ts +17 -0
- package/dist/Fx/combinators/onError.d.ts.map +1 -0
- package/dist/Fx/combinators/onError.js +14 -0
- package/dist/Fx/combinators/onExit.d.ts +16 -0
- package/dist/Fx/combinators/onExit.d.ts.map +1 -0
- package/dist/Fx/combinators/onExit.js +39 -0
- package/dist/Fx/combinators/onInterrupt.d.ts +16 -0
- package/dist/Fx/combinators/onInterrupt.d.ts.map +1 -0
- package/dist/Fx/combinators/onInterrupt.js +38 -0
- package/dist/Fx/combinators/provide.d.ts +23 -0
- package/dist/Fx/combinators/provide.d.ts.map +1 -0
- package/dist/Fx/combinators/provide.js +27 -0
- package/dist/Fx/combinators/skip.d.ts +14 -0
- package/dist/Fx/combinators/skip.d.ts.map +1 -0
- package/dist/Fx/combinators/skip.js +11 -0
- package/dist/Fx/combinators/skipRepeats.d.ts +11 -0
- package/dist/Fx/combinators/skipRepeats.d.ts.map +1 -0
- package/dist/Fx/combinators/skipRepeats.js +12 -0
- package/dist/Fx/combinators/skipRepeatsWith.d.ts +12 -0
- package/dist/Fx/combinators/skipRepeatsWith.d.ts.map +1 -0
- package/dist/Fx/combinators/skipRepeatsWith.js +20 -0
- package/dist/Fx/combinators/slice.d.ts +23 -0
- package/dist/Fx/combinators/slice.d.ts.map +1 -0
- package/dist/Fx/combinators/slice.js +12 -0
- package/dist/Fx/combinators/switchMap.d.ts +13 -0
- package/dist/Fx/combinators/switchMap.d.ts.map +1 -0
- package/dist/Fx/combinators/switchMap.js +33 -0
- package/dist/Fx/combinators/switchMapEffect.d.ts +13 -0
- package/dist/Fx/combinators/switchMapEffect.d.ts.map +1 -0
- package/dist/Fx/combinators/switchMapEffect.js +14 -0
- package/dist/Fx/combinators/take.d.ts +14 -0
- package/dist/Fx/combinators/take.d.ts.map +1 -0
- package/dist/Fx/combinators/take.js +11 -0
- package/dist/Fx/combinators/takeUntil.d.ts +28 -0
- package/dist/Fx/combinators/takeUntil.d.ts.map +1 -0
- package/dist/Fx/combinators/takeUntil.js +31 -0
- package/dist/Fx/combinators/tapEffect.d.ts +15 -0
- package/dist/Fx/combinators/tapEffect.d.ts.map +1 -0
- package/dist/Fx/combinators/tapEffect.js +18 -0
- package/dist/Fx/combinators/tuple.d.ts +27 -0
- package/dist/Fx/combinators/tuple.d.ts.map +1 -0
- package/dist/Fx/combinators/tuple.js +46 -0
- package/dist/Fx/combinators/unwrap.d.ts +12 -0
- package/dist/Fx/combinators/unwrap.d.ts.map +1 -0
- package/dist/Fx/combinators/unwrap.js +14 -0
- package/dist/Fx/combinators/unwrapScoped.d.ts +15 -0
- package/dist/Fx/combinators/unwrapScoped.d.ts.map +1 -0
- package/dist/Fx/combinators/unwrapScoped.js +16 -0
- package/dist/Fx/combinators/when.d.ts +36 -0
- package/dist/Fx/combinators/when.d.ts.map +1 -0
- package/dist/Fx/combinators/when.js +28 -0
- package/dist/Fx/combinators/withSpan.d.ts +4 -0
- package/dist/Fx/combinators/withSpan.d.ts.map +1 -0
- package/dist/Fx/combinators/withSpan.js +6 -0
- package/dist/Fx/constructors/at.d.ts +16 -0
- package/dist/Fx/constructors/at.d.ts.map +1 -0
- package/dist/Fx/constructors/at.js +13 -0
- package/dist/Fx/constructors/die.d.ts +11 -0
- package/dist/Fx/constructors/die.d.ts.map +1 -0
- package/dist/Fx/constructors/die.js +12 -0
- package/dist/Fx/constructors/empty.d.ts +8 -0
- package/dist/Fx/constructors/empty.d.ts.map +1 -0
- package/dist/Fx/constructors/empty.js +8 -0
- package/dist/Fx/constructors/fail.d.ts +11 -0
- package/dist/Fx/constructors/fail.d.ts.map +1 -0
- package/dist/Fx/constructors/fail.js +12 -0
- package/dist/Fx/constructors/failCause.d.ts +12 -0
- package/dist/Fx/constructors/failCause.d.ts.map +1 -0
- package/dist/Fx/constructors/failCause.js +11 -0
- package/dist/Fx/constructors/fn.d.ts +47 -0
- package/dist/Fx/constructors/fn.d.ts.map +1 -0
- package/dist/Fx/constructors/fn.js +23 -0
- package/dist/Fx/constructors/fromEffect.d.ts +21 -0
- package/dist/Fx/constructors/fromEffect.d.ts.map +1 -0
- package/dist/Fx/constructors/fromEffect.js +21 -0
- package/dist/Fx/constructors/fromFailures.d.ts +10 -0
- package/dist/Fx/constructors/fromFailures.d.ts.map +1 -0
- package/dist/Fx/constructors/fromFailures.js +13 -0
- package/dist/Fx/constructors/fromIterable.d.ts +12 -0
- package/dist/Fx/constructors/fromIterable.d.ts.map +1 -0
- package/dist/Fx/constructors/fromIterable.js +12 -0
- package/dist/Fx/constructors/fromSchedule.d.ts +13 -0
- package/dist/Fx/constructors/fromSchedule.d.ts.map +1 -0
- package/dist/Fx/constructors/fromSchedule.js +13 -0
- package/dist/Fx/constructors/fromYieldable.d.ts +12 -0
- package/dist/Fx/constructors/fromYieldable.d.ts.map +1 -0
- package/dist/Fx/constructors/fromYieldable.js +12 -0
- package/dist/Fx/constructors/index.d.ts +16 -0
- package/dist/Fx/constructors/index.d.ts.map +1 -0
- package/dist/Fx/constructors/index.js +15 -0
- package/dist/Fx/constructors/interrupt.d.ts +10 -0
- package/dist/Fx/constructors/interrupt.d.ts.map +1 -0
- package/dist/Fx/constructors/interrupt.js +12 -0
- package/dist/Fx/constructors/make.d.ts +40 -0
- package/dist/Fx/constructors/make.d.ts.map +1 -0
- package/dist/Fx/constructors/make.js +61 -0
- package/dist/Fx/constructors/periodic.d.ts +12 -0
- package/dist/Fx/constructors/periodic.d.ts.map +1 -0
- package/dist/Fx/constructors/periodic.js +12 -0
- package/dist/Fx/constructors/succeed.d.ts +32 -0
- package/dist/Fx/constructors/succeed.d.ts.map +1 -0
- package/dist/Fx/constructors/succeed.js +32 -0
- package/dist/Fx/constructors/suspend.d.ts +3 -0
- package/dist/Fx/constructors/suspend.d.ts.map +1 -0
- package/dist/Fx/constructors/suspend.js +3 -0
- package/dist/Fx/index.d.ts +7 -0
- package/dist/Fx/index.d.ts.map +1 -0
- package/dist/Fx/index.js +6 -0
- package/dist/Fx/internal/DeferredRef.d.ts +29 -0
- package/dist/Fx/internal/DeferredRef.d.ts.map +1 -0
- package/dist/{esm → Fx}/internal/DeferredRef.js +21 -15
- package/dist/Fx/internal/UnionToTuple.d.ts.map +1 -0
- package/dist/Fx/internal/UnionToTuple.js +1 -0
- package/dist/{dts → Fx}/internal/diff.d.ts +3 -1
- package/dist/Fx/internal/diff.d.ts.map +1 -0
- package/dist/{esm → Fx}/internal/diff.js +37 -23
- package/dist/Fx/internal/equivalence.d.ts +4 -0
- package/dist/Fx/internal/equivalence.d.ts.map +1 -0
- package/dist/Fx/internal/equivalence.js +10 -0
- package/dist/Fx/internal/multicast.d.ts +10 -0
- package/dist/Fx/internal/multicast.d.ts.map +1 -0
- package/dist/Fx/internal/multicast.js +32 -0
- package/dist/Fx/internal/ring-buffer.d.ts +14 -0
- package/dist/Fx/internal/ring-buffer.d.ts.map +1 -0
- package/dist/Fx/internal/ring-buffer.js +52 -0
- package/dist/Fx/internal/scope.d.ts +11 -0
- package/dist/Fx/internal/scope.d.ts.map +1 -0
- package/dist/Fx/internal/scope.js +12 -0
- package/dist/Fx/internal/yieldable.d.ts +17 -0
- package/dist/Fx/internal/yieldable.d.ts.map +1 -0
- package/dist/Fx/internal/yieldable.js +20 -0
- package/dist/Fx/run/collect.d.ts +45 -0
- package/dist/Fx/run/collect.d.ts.map +1 -0
- package/dist/Fx/run/collect.js +51 -0
- package/dist/Fx/run/first.d.ts +14 -0
- package/dist/Fx/run/first.d.ts.map +1 -0
- package/dist/Fx/run/first.js +16 -0
- package/dist/Fx/run/fork.d.ts +29 -0
- package/dist/Fx/run/fork.d.ts.map +1 -0
- package/dist/Fx/run/fork.js +27 -0
- package/dist/Fx/run/index.d.ts +6 -0
- package/dist/Fx/run/index.d.ts.map +1 -0
- package/dist/Fx/run/index.js +5 -0
- package/dist/Fx/run/observe.d.ts +53 -0
- package/dist/Fx/run/observe.d.ts.map +1 -0
- package/dist/Fx/run/observe.js +55 -0
- package/dist/Fx/run/runPromise.d.ts +25 -0
- package/dist/Fx/run/runPromise.d.ts.map +1 -0
- package/dist/Fx/run/runPromise.js +23 -0
- package/dist/Fx/stream.d.ts +7 -0
- package/dist/Fx/stream.d.ts.map +1 -0
- package/dist/Fx/stream.js +7 -0
- package/dist/Fx.d.ts +2 -0
- package/dist/Fx.d.ts.map +1 -0
- package/dist/Fx.js +1 -0
- package/dist/Push/Push.d.ts +312 -0
- package/dist/Push/Push.d.ts.map +1 -0
- package/dist/Push/Push.js +289 -0
- package/dist/Push/index.d.ts +2 -0
- package/dist/Push/index.d.ts.map +1 -0
- package/dist/Push/index.js +1 -0
- package/dist/Push.d.ts +2 -0
- package/dist/Push.d.ts.map +1 -0
- package/dist/Push.js +1 -0
- package/dist/{dts → RefSubject}/RefArray.d.ts +68 -18
- package/dist/RefSubject/RefArray.d.ts.map +1 -0
- package/dist/{esm → RefSubject}/RefArray.js +80 -12
- package/dist/RefSubject/RefBigDecimal.d.ts +183 -0
- package/dist/RefSubject/RefBigDecimal.d.ts.map +1 -0
- package/dist/RefSubject/RefBigDecimal.js +161 -0
- package/dist/RefSubject/RefBigInt.d.ts +138 -0
- package/dist/RefSubject/RefBigInt.d.ts.map +1 -0
- package/dist/RefSubject/RefBigInt.js +126 -0
- package/dist/RefSubject/RefBoolean.d.ts +135 -0
- package/dist/RefSubject/RefBoolean.d.ts.map +1 -0
- package/dist/RefSubject/RefBoolean.js +124 -0
- package/dist/RefSubject/RefCause.d.ts +100 -0
- package/dist/RefSubject/RefCause.d.ts.map +1 -0
- package/dist/RefSubject/RefCause.js +93 -0
- package/dist/{dts → RefSubject}/RefChunk.d.ts +157 -71
- package/dist/RefSubject/RefChunk.d.ts.map +1 -0
- package/dist/{esm → RefSubject}/RefChunk.js +142 -52
- package/dist/RefSubject/RefDateTime.d.ts +155 -0
- package/dist/RefSubject/RefDateTime.d.ts.map +1 -0
- package/dist/RefSubject/RefDateTime.js +101 -0
- package/dist/RefSubject/RefDuration.d.ts +126 -0
- package/dist/RefSubject/RefDuration.d.ts.map +1 -0
- package/dist/RefSubject/RefDuration.js +115 -0
- package/dist/RefSubject/RefGraph.d.ts +239 -0
- package/dist/RefSubject/RefGraph.d.ts.map +1 -0
- package/dist/RefSubject/RefGraph.js +272 -0
- package/dist/RefSubject/RefHashMap.d.ts +228 -0
- package/dist/RefSubject/RefHashMap.d.ts.map +1 -0
- package/dist/RefSubject/RefHashMap.js +212 -0
- package/dist/RefSubject/RefHashRing.d.ts +123 -0
- package/dist/RefSubject/RefHashRing.d.ts.map +1 -0
- package/dist/RefSubject/RefHashRing.js +115 -0
- package/dist/RefSubject/RefHashSet.d.ts +179 -0
- package/dist/RefSubject/RefHashSet.d.ts.map +1 -0
- package/dist/RefSubject/RefHashSet.js +164 -0
- package/dist/RefSubject/RefIterable.d.ts +257 -0
- package/dist/RefSubject/RefIterable.d.ts.map +1 -0
- package/dist/RefSubject/RefIterable.js +237 -0
- package/dist/RefSubject/RefOption.d.ts +124 -0
- package/dist/RefSubject/RefOption.d.ts.map +1 -0
- package/dist/RefSubject/RefOption.js +115 -0
- package/dist/RefSubject/RefRecord.d.ts +264 -0
- package/dist/RefSubject/RefRecord.d.ts.map +1 -0
- package/dist/RefSubject/RefRecord.js +249 -0
- package/dist/RefSubject/RefResult.d.ts +121 -0
- package/dist/RefSubject/RefResult.d.ts.map +1 -0
- package/dist/RefSubject/RefResult.js +107 -0
- package/dist/RefSubject/RefString.d.ts +147 -0
- package/dist/RefSubject/RefString.d.ts.map +1 -0
- package/dist/RefSubject/RefString.js +137 -0
- package/dist/RefSubject/RefStruct.d.ts +123 -0
- package/dist/RefSubject/RefStruct.d.ts.map +1 -0
- package/dist/RefSubject/RefStruct.js +113 -0
- package/dist/RefSubject/RefSubject.d.ts +1010 -0
- package/dist/RefSubject/RefSubject.d.ts.map +1 -0
- package/dist/RefSubject/RefSubject.js +1310 -0
- package/dist/RefSubject/RefTrie.d.ts +216 -0
- package/dist/RefSubject/RefTrie.d.ts.map +1 -0
- package/dist/RefSubject/RefTrie.js +201 -0
- package/dist/RefSubject/RefTuple.d.ts +107 -0
- package/dist/RefSubject/RefTuple.d.ts.map +1 -0
- package/dist/RefSubject/RefTuple.js +94 -0
- package/dist/RefSubject/index.d.ts +22 -0
- package/dist/RefSubject/index.d.ts.map +1 -0
- package/dist/RefSubject/index.js +21 -0
- package/dist/RefSubject.d.ts +2 -0
- package/dist/RefSubject.d.ts.map +1 -0
- package/dist/RefSubject.js +1 -0
- package/dist/Sink/Sink.d.ts +94 -0
- package/dist/Sink/Sink.d.ts.map +1 -0
- package/dist/Sink/Sink.js +34 -0
- package/dist/Sink/combinators.d.ts +171 -0
- package/dist/Sink/combinators.d.ts.map +1 -0
- package/dist/{esm/Sink.js → Sink/combinators.js} +265 -352
- package/dist/Sink/index.d.ts +3 -0
- package/dist/Sink/index.d.ts.map +1 -0
- package/dist/Sink/index.js +2 -0
- package/dist/Sink.d.ts +2 -0
- package/dist/Sink.d.ts.map +1 -0
- package/dist/Sink.js +1 -0
- package/dist/Subject/Subject.d.ts +152 -0
- package/dist/Subject/Subject.d.ts.map +1 -0
- package/dist/Subject/Subject.js +272 -0
- package/dist/Subject/index.d.ts +2 -0
- package/dist/Subject/index.d.ts.map +1 -0
- package/dist/Subject/index.js +1 -0
- package/dist/Subject.d.ts +2 -0
- package/dist/Subject.d.ts.map +1 -0
- package/dist/Subject.js +1 -0
- package/dist/Versioned/Versioned.d.ts +176 -0
- package/dist/Versioned/Versioned.d.ts.map +1 -0
- package/dist/Versioned/Versioned.js +228 -0
- package/dist/Versioned/index.d.ts +2 -0
- package/dist/Versioned/index.d.ts.map +1 -0
- package/dist/Versioned/index.js +1 -0
- package/dist/Versioned.d.ts +2 -0
- package/dist/Versioned.d.ts.map +1 -0
- package/dist/Versioned.js +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/package.json +19 -192
- package/src/Fx/Fx.ts +164 -0
- package/src/Fx/TypeId.ts +25 -0
- package/src/Fx/combinators/catch.ts +165 -0
- package/src/Fx/combinators/causes.ts +23 -0
- package/src/Fx/combinators/compact.ts +15 -0
- package/src/Fx/combinators/continueWith.ts +78 -0
- package/src/Fx/combinators/ensuring.ts +23 -0
- package/src/Fx/combinators/exhaustLatestMap.ts +74 -0
- package/src/Fx/combinators/exhaustLatestMapEffect.ts +25 -0
- package/src/Fx/combinators/exhaustMap.ts +36 -0
- package/src/Fx/combinators/exhaustMapEffect.ts +23 -0
- package/src/Fx/combinators/exit.ts +15 -0
- package/src/Fx/combinators/filter.ts +22 -0
- package/src/Fx/combinators/filterEffect.ts +31 -0
- package/src/Fx/combinators/filterMap.ts +23 -0
- package/src/Fx/combinators/filterMapEffect.ts +32 -0
- package/src/Fx/combinators/filterMapLoop.ts +35 -0
- package/src/Fx/combinators/filterMapLoopCause.ts +36 -0
- package/src/Fx/combinators/filterMapLoopCauseEffect.ts +46 -0
- package/src/Fx/combinators/filterMapLoopEffect.ts +36 -0
- package/src/Fx/combinators/flatMap.ts +51 -0
- package/src/Fx/combinators/flatMapConcurrently.ts +36 -0
- package/src/Fx/combinators/flatMapConcurrentlyEffect.ts +26 -0
- package/src/Fx/combinators/flatMapEffect.ts +42 -0
- package/src/Fx/combinators/flip.ts +14 -0
- package/src/Fx/combinators/gen.ts +24 -0
- package/src/Fx/combinators/genScoped.ts +24 -0
- package/src/Fx/combinators/index.ts +51 -0
- package/src/Fx/combinators/keyed.ts +369 -0
- package/src/Fx/combinators/loop.ts +27 -0
- package/src/Fx/combinators/loopCause.ts +34 -0
- package/src/Fx/combinators/loopCauseEffect.ts +36 -0
- package/src/Fx/combinators/loopEffect.ts +34 -0
- package/src/Fx/combinators/map.ts +22 -0
- package/src/Fx/combinators/mapEffect.ts +32 -0
- package/src/Fx/combinators/mergeAll.ts +22 -0
- package/src/Fx/combinators/mergeOrdered.ts +123 -0
- package/src/Fx/combinators/onError.ts +40 -0
- package/src/Fx/combinators/onExit.ts +82 -0
- package/src/Fx/combinators/onInterrupt.ts +87 -0
- package/src/Fx/combinators/provide.ts +62 -0
- package/src/Fx/combinators/skip.ts +20 -0
- package/src/Fx/combinators/skipRepeats.ts +15 -0
- package/src/Fx/combinators/skipRepeatsWith.ts +40 -0
- package/src/Fx/combinators/slice.ts +32 -0
- package/src/Fx/combinators/switchMap.ts +55 -0
- package/src/Fx/combinators/switchMapEffect.ts +25 -0
- package/src/Fx/combinators/take.ts +17 -0
- package/src/Fx/combinators/takeUntil.ts +50 -0
- package/src/Fx/combinators/tapEffect.ts +39 -0
- package/src/Fx/combinators/tuple.ts +79 -0
- package/src/Fx/combinators/unwrap.ts +21 -0
- package/src/Fx/combinators/unwrapScoped.ts +26 -0
- package/src/Fx/combinators/when.ts +64 -0
- package/src/Fx/combinators/withSpan.ts +24 -0
- package/src/Fx/constructors/at.ts +23 -0
- package/src/Fx/constructors/die.ts +17 -0
- package/src/Fx/constructors/empty.ts +10 -0
- package/src/Fx/constructors/fail.ts +14 -0
- package/src/Fx/constructors/failCause.ts +14 -0
- package/src/Fx/constructors/fn.ts +245 -0
- package/src/Fx/constructors/fromEffect.ts +24 -0
- package/src/Fx/constructors/fromFailures.ts +19 -0
- package/src/Fx/constructors/fromIterable.ts +15 -0
- package/src/Fx/constructors/fromSchedule.ts +18 -0
- package/src/Fx/constructors/fromYieldable.ts +17 -0
- package/src/Fx/constructors/index.ts +15 -0
- package/src/Fx/constructors/interrupt.ts +13 -0
- package/src/Fx/constructors/make.ts +103 -0
- package/src/Fx/constructors/periodic.ts +15 -0
- package/src/Fx/constructors/succeed.ts +37 -0
- package/src/Fx/constructors/suspend.ts +6 -0
- package/src/Fx/index.ts +6 -0
- package/src/Fx/internal/DeferredRef.ts +87 -0
- package/src/Fx/internal/UnionToTuple.ts +12 -0
- package/src/Fx/internal/diff.ts +191 -0
- package/src/Fx/internal/equivalence.ts +12 -0
- package/src/Fx/internal/multicast.ts +51 -0
- package/src/Fx/internal/ring-buffer.ts +60 -0
- package/src/Fx/internal/scope.ts +58 -0
- package/src/Fx/internal/yieldable.ts +31 -0
- package/src/Fx/run/collect.ts +79 -0
- package/src/Fx/run/first.ts +20 -0
- package/src/Fx/run/fork.ts +40 -0
- package/src/Fx/run/index.ts +5 -0
- package/src/Fx/run/observe.ts +114 -0
- package/src/Fx/run/runPromise.ts +32 -0
- package/src/Fx/stream.ts +42 -0
- package/src/Fx.catch.test.ts +61 -0
- package/src/Fx.fn.test.ts +51 -0
- package/src/Fx.lifecycle.test.ts +80 -0
- package/src/Fx.test.ts +71 -0
- package/src/Fx.ts +1 -2591
- package/src/Push/Push.ts +903 -0
- package/src/Push/index.ts +1 -0
- package/src/Push.test.ts +26 -0
- package/src/Push.ts +1 -480
- package/src/{RefArray.ts → RefSubject/RefArray.ts} +246 -248
- package/src/RefSubject/RefBigDecimal.test.ts +56 -0
- package/src/RefSubject/RefBigDecimal.ts +295 -0
- package/src/RefSubject/RefBigInt.test.ts +56 -0
- package/src/RefSubject/RefBigInt.ts +189 -0
- package/src/RefSubject/RefBoolean.test.ts +57 -0
- package/src/RefSubject/RefBoolean.ts +185 -0
- package/src/RefSubject/RefCause.test.ts +53 -0
- package/src/RefSubject/RefCause.ts +146 -0
- package/src/RefSubject/RefChunk.ts +510 -0
- package/src/RefSubject/RefDateTime.test.ts +43 -0
- package/src/RefSubject/RefDateTime.ts +264 -0
- package/src/RefSubject/RefDuration.test.ts +49 -0
- package/src/RefSubject/RefDuration.ts +188 -0
- package/src/RefSubject/RefGraph.ts +650 -0
- package/src/RefSubject/RefHashMap.ts +465 -0
- package/src/RefSubject/RefHashRing.ts +262 -0
- package/src/RefSubject/RefHashSet.ts +308 -0
- package/src/RefSubject/RefIterable.ts +445 -0
- package/src/RefSubject/RefOption.test.ts +67 -0
- package/src/RefSubject/RefOption.ts +193 -0
- package/src/RefSubject/RefRecord.ts +612 -0
- package/src/RefSubject/RefResult.test.ts +63 -0
- package/src/RefSubject/RefResult.ts +209 -0
- package/src/RefSubject/RefString.test.ts +61 -0
- package/src/RefSubject/RefString.ts +256 -0
- package/src/RefSubject/RefStruct.test.ts +60 -0
- package/src/RefSubject/RefStruct.ts +253 -0
- package/src/RefSubject/RefSubject.ts +2545 -0
- package/src/RefSubject/RefTrie.ts +356 -0
- package/src/RefSubject/RefTuple.test.ts +60 -0
- package/src/RefSubject/RefTuple.ts +231 -0
- package/src/RefSubject/index.ts +21 -0
- package/src/RefSubject.test.ts +65 -0
- package/src/RefSubject.ts +1 -2488
- package/src/Sink/Sink.ts +159 -0
- package/src/Sink/combinators.ts +993 -0
- package/src/Sink/index.ts +2 -0
- package/src/Sink.ts +1 -1044
- package/src/Subject/Subject.ts +441 -0
- package/src/Subject/index.ts +1 -0
- package/src/Subject.test.ts +47 -0
- package/src/Subject.ts +1 -330
- package/src/Versioned/Versioned.ts +521 -0
- package/src/Versioned/index.ts +1 -0
- package/src/Versioned.test.ts +23 -0
- package/src/Versioned.ts +1 -357
- package/src/index.ts +7 -130
- package/tsconfig.json +6 -0
- package/AsyncData/package.json +0 -6
- package/Emitter/package.json +0 -6
- package/Form/package.json +0 -6
- package/FormEntry/package.json +0 -6
- package/Fx/package.json +0 -6
- package/Idle/package.json +0 -6
- package/LICENSE +0 -21
- package/Match/package.json +0 -6
- package/Pull/package.json +0 -6
- package/Push/package.json +0 -6
- package/RefArray/package.json +0 -6
- package/RefChunk/package.json +0 -6
- package/RefHashMap/package.json +0 -6
- package/RefHashSet/package.json +0 -6
- package/RefSubject/package.json +0 -6
- package/Sink/package.json +0 -6
- package/Stream/package.json +0 -6
- package/Subject/package.json +0 -6
- package/TypeId/package.json +0 -6
- package/Typeclass/package.json +0 -6
- package/Versioned/package.json +0 -6
- package/dist/cjs/AsyncData.js +0 -188
- package/dist/cjs/AsyncData.js.map +0 -1
- package/dist/cjs/Emitter.js +0 -44
- package/dist/cjs/Emitter.js.map +0 -1
- package/dist/cjs/Form.js +0 -178
- package/dist/cjs/Form.js.map +0 -1
- package/dist/cjs/FormEntry.js +0 -110
- package/dist/cjs/FormEntry.js.map +0 -1
- package/dist/cjs/Fx.js +0 -998
- package/dist/cjs/Fx.js.map +0 -1
- package/dist/cjs/Idle.js +0 -190
- package/dist/cjs/Idle.js.map +0 -1
- package/dist/cjs/Match.js +0 -191
- package/dist/cjs/Match.js.map +0 -1
- package/dist/cjs/Pull.js +0 -52
- package/dist/cjs/Pull.js.map +0 -1
- package/dist/cjs/Push.js +0 -168
- package/dist/cjs/Push.js.map +0 -1
- package/dist/cjs/RefArray.js +0 -253
- package/dist/cjs/RefArray.js.map +0 -1
- package/dist/cjs/RefChunk.js +0 -212
- package/dist/cjs/RefChunk.js.map +0 -1
- package/dist/cjs/RefHashMap.js +0 -198
- package/dist/cjs/RefHashMap.js.map +0 -1
- package/dist/cjs/RefHashSet.js +0 -99
- package/dist/cjs/RefHashSet.js.map +0 -1
- package/dist/cjs/RefSubject.js +0 -1115
- package/dist/cjs/RefSubject.js.map +0 -1
- package/dist/cjs/Sink.js +0 -662
- package/dist/cjs/Sink.js.map +0 -1
- package/dist/cjs/Stream.js +0 -87
- package/dist/cjs/Stream.js.map +0 -1
- package/dist/cjs/Subject.js +0 -205
- package/dist/cjs/Subject.js.map +0 -1
- package/dist/cjs/TypeId.js +0 -32
- package/dist/cjs/TypeId.js.map +0 -1
- package/dist/cjs/Typeclass.js +0 -380
- package/dist/cjs/Typeclass.js.map +0 -1
- package/dist/cjs/Versioned.js +0 -172
- package/dist/cjs/Versioned.js.map +0 -1
- package/dist/cjs/index.js +0 -89
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/internal/DeferredRef.js +0 -67
- package/dist/cjs/internal/DeferredRef.js.map +0 -1
- package/dist/cjs/internal/UnionToTuple.js +0 -6
- package/dist/cjs/internal/UnionToTuple.js.map +0 -1
- package/dist/cjs/internal/bounds.js +0 -26
- package/dist/cjs/internal/bounds.js.map +0 -1
- package/dist/cjs/internal/core.js +0 -1783
- package/dist/cjs/internal/core.js.map +0 -1
- package/dist/cjs/internal/diff.js +0 -122
- package/dist/cjs/internal/diff.js.map +0 -1
- package/dist/cjs/internal/effect-loop-operator.js +0 -288
- package/dist/cjs/internal/effect-loop-operator.js.map +0 -1
- package/dist/cjs/internal/effect-operator.js +0 -156
- package/dist/cjs/internal/effect-operator.js.map +0 -1
- package/dist/cjs/internal/effect-producer.js +0 -74
- package/dist/cjs/internal/effect-producer.js.map +0 -1
- package/dist/cjs/internal/helpers.js +0 -317
- package/dist/cjs/internal/helpers.js.map +0 -1
- package/dist/cjs/internal/keyed.js +0 -168
- package/dist/cjs/internal/keyed.js.map +0 -1
- package/dist/cjs/internal/loop-operator.js +0 -213
- package/dist/cjs/internal/loop-operator.js.map +0 -1
- package/dist/cjs/internal/operator.js +0 -79
- package/dist/cjs/internal/operator.js.map +0 -1
- package/dist/cjs/internal/protos.js +0 -48
- package/dist/cjs/internal/protos.js.map +0 -1
- package/dist/cjs/internal/provide.js +0 -100
- package/dist/cjs/internal/provide.js.map +0 -1
- package/dist/cjs/internal/requestIdleCallback.js +0 -22
- package/dist/cjs/internal/requestIdleCallback.js.map +0 -1
- package/dist/cjs/internal/share.js +0 -74
- package/dist/cjs/internal/share.js.map +0 -1
- package/dist/cjs/internal/strategies.js +0 -34
- package/dist/cjs/internal/strategies.js.map +0 -1
- package/dist/cjs/internal/sync-operator.js +0 -120
- package/dist/cjs/internal/sync-operator.js.map +0 -1
- package/dist/cjs/internal/sync-producer.js +0 -118
- package/dist/cjs/internal/sync-producer.js.map +0 -1
- package/dist/cjs/internal/withKey.js +0 -63
- package/dist/cjs/internal/withKey.js.map +0 -1
- package/dist/dts/AsyncData.d.ts +0 -179
- package/dist/dts/AsyncData.d.ts.map +0 -1
- package/dist/dts/Emitter.d.ts +0 -24
- package/dist/dts/Emitter.d.ts.map +0 -1
- package/dist/dts/Form.d.ts +0 -145
- package/dist/dts/Form.d.ts.map +0 -1
- package/dist/dts/FormEntry.d.ts +0 -65
- package/dist/dts/FormEntry.d.ts.map +0 -1
- package/dist/dts/Fx.d.ts +0 -1678
- package/dist/dts/Fx.d.ts.map +0 -1
- package/dist/dts/Idle.d.ts +0 -84
- package/dist/dts/Idle.d.ts.map +0 -1
- package/dist/dts/Match.d.ts +0 -60
- package/dist/dts/Match.d.ts.map +0 -1
- package/dist/dts/Pull.d.ts +0 -37
- package/dist/dts/Pull.d.ts.map +0 -1
- package/dist/dts/Push.d.ts +0 -176
- package/dist/dts/Push.d.ts.map +0 -1
- package/dist/dts/RefArray.d.ts.map +0 -1
- package/dist/dts/RefChunk.d.ts.map +0 -1
- package/dist/dts/RefHashMap.d.ts +0 -189
- package/dist/dts/RefHashMap.d.ts.map +0 -1
- package/dist/dts/RefHashSet.d.ts +0 -100
- package/dist/dts/RefHashSet.d.ts.map +0 -1
- package/dist/dts/RefSubject.d.ts +0 -601
- package/dist/dts/RefSubject.d.ts.map +0 -1
- package/dist/dts/Sink.d.ts +0 -252
- package/dist/dts/Sink.d.ts.map +0 -1
- package/dist/dts/Stream.d.ts +0 -66
- package/dist/dts/Stream.d.ts.map +0 -1
- package/dist/dts/Subject.d.ts +0 -61
- package/dist/dts/Subject.d.ts.map +0 -1
- package/dist/dts/TypeId.d.ts +0 -51
- package/dist/dts/TypeId.d.ts.map +0 -1
- package/dist/dts/Typeclass.d.ts +0 -284
- package/dist/dts/Typeclass.d.ts.map +0 -1
- package/dist/dts/Versioned.d.ts +0 -117
- package/dist/dts/Versioned.d.ts.map +0 -1
- package/dist/dts/index.d.ts +0 -111
- package/dist/dts/index.d.ts.map +0 -1
- package/dist/dts/internal/DeferredRef.d.ts +0 -22
- package/dist/dts/internal/DeferredRef.d.ts.map +0 -1
- package/dist/dts/internal/UnionToTuple.d.ts.map +0 -1
- package/dist/dts/internal/bounds.d.ts +0 -9
- package/dist/dts/internal/bounds.d.ts.map +0 -1
- package/dist/dts/internal/core.d.ts +0 -237
- package/dist/dts/internal/core.d.ts.map +0 -1
- package/dist/dts/internal/diff.d.ts.map +0 -1
- package/dist/dts/internal/effect-loop-operator.d.ts +0 -34
- package/dist/dts/internal/effect-loop-operator.d.ts.map +0 -1
- package/dist/dts/internal/effect-operator.d.ts +0 -40
- package/dist/dts/internal/effect-operator.d.ts.map +0 -1
- package/dist/dts/internal/effect-producer.d.ts +0 -25
- package/dist/dts/internal/effect-producer.d.ts.map +0 -1
- package/dist/dts/internal/helpers.d.ts +0 -60
- package/dist/dts/internal/helpers.d.ts.map +0 -1
- package/dist/dts/internal/keyed.d.ts +0 -4
- package/dist/dts/internal/keyed.d.ts.map +0 -1
- package/dist/dts/internal/loop-operator.d.ts +0 -40
- package/dist/dts/internal/loop-operator.d.ts.map +0 -1
- package/dist/dts/internal/operator.d.ts +0 -16
- package/dist/dts/internal/operator.d.ts.map +0 -1
- package/dist/dts/internal/protos.d.ts +0 -23
- package/dist/dts/internal/protos.d.ts.map +0 -1
- package/dist/dts/internal/provide.d.ts +0 -46
- package/dist/dts/internal/provide.d.ts.map +0 -1
- package/dist/dts/internal/requestIdleCallback.d.ts +0 -3
- package/dist/dts/internal/requestIdleCallback.d.ts.map +0 -1
- package/dist/dts/internal/share.d.ts +0 -33
- package/dist/dts/internal/share.d.ts.map +0 -1
- package/dist/dts/internal/strategies.d.ts +0 -9
- package/dist/dts/internal/strategies.d.ts.map +0 -1
- package/dist/dts/internal/sync-operator.d.ts +0 -32
- package/dist/dts/internal/sync-operator.d.ts.map +0 -1
- package/dist/dts/internal/sync-producer.d.ts +0 -36
- package/dist/dts/internal/sync-producer.d.ts.map +0 -1
- package/dist/dts/internal/withKey.d.ts +0 -4
- package/dist/dts/internal/withKey.d.ts.map +0 -1
- package/dist/esm/AsyncData.js +0 -156
- package/dist/esm/AsyncData.js.map +0 -1
- package/dist/esm/Emitter.js +0 -33
- package/dist/esm/Emitter.js.map +0 -1
- package/dist/esm/Form.js +0 -163
- package/dist/esm/Form.js.map +0 -1
- package/dist/esm/FormEntry.js +0 -100
- package/dist/esm/FormEntry.js.map +0 -1
- package/dist/esm/Fx.js +0 -984
- package/dist/esm/Fx.js.map +0 -1
- package/dist/esm/Idle.js +0 -178
- package/dist/esm/Idle.js.map +0 -1
- package/dist/esm/Match.js +0 -185
- package/dist/esm/Match.js.map +0 -1
- package/dist/esm/Pull.js +0 -41
- package/dist/esm/Pull.js.map +0 -1
- package/dist/esm/Push.js +0 -159
- package/dist/esm/Push.js.map +0 -1
- package/dist/esm/RefArray.js.map +0 -1
- package/dist/esm/RefChunk.js.map +0 -1
- package/dist/esm/RefHashMap.js +0 -176
- package/dist/esm/RefHashMap.js.map +0 -1
- package/dist/esm/RefHashSet.js +0 -86
- package/dist/esm/RefHashSet.js.map +0 -1
- package/dist/esm/RefSubject.js +0 -1076
- package/dist/esm/RefSubject.js.map +0 -1
- package/dist/esm/Sink.js.map +0 -1
- package/dist/esm/Stream.js +0 -76
- package/dist/esm/Stream.js.map +0 -1
- package/dist/esm/Subject.js +0 -198
- package/dist/esm/Subject.js.map +0 -1
- package/dist/esm/TypeId.js +0 -26
- package/dist/esm/TypeId.js.map +0 -1
- package/dist/esm/Typeclass.js +0 -375
- package/dist/esm/Typeclass.js.map +0 -1
- package/dist/esm/Versioned.js +0 -149
- package/dist/esm/Versioned.js.map +0 -1
- package/dist/esm/index.js +0 -111
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/internal/DeferredRef.js.map +0 -1
- package/dist/esm/internal/UnionToTuple.js +0 -2
- package/dist/esm/internal/UnionToTuple.js.map +0 -1
- package/dist/esm/internal/bounds.js +0 -13
- package/dist/esm/internal/bounds.js.map +0 -1
- package/dist/esm/internal/core.js +0 -1647
- package/dist/esm/internal/core.js.map +0 -1
- package/dist/esm/internal/diff.js.map +0 -1
- package/dist/esm/internal/effect-loop-operator.js +0 -269
- package/dist/esm/internal/effect-loop-operator.js.map +0 -1
- package/dist/esm/internal/effect-operator.js +0 -134
- package/dist/esm/internal/effect-operator.js.map +0 -1
- package/dist/esm/internal/effect-producer.js +0 -47
- package/dist/esm/internal/effect-producer.js.map +0 -1
- package/dist/esm/internal/helpers.js +0 -299
- package/dist/esm/internal/helpers.js.map +0 -1
- package/dist/esm/internal/keyed.js +0 -153
- package/dist/esm/internal/keyed.js.map +0 -1
- package/dist/esm/internal/loop-operator.js +0 -186
- package/dist/esm/internal/loop-operator.js.map +0 -1
- package/dist/esm/internal/operator.js +0 -68
- package/dist/esm/internal/operator.js.map +0 -1
- package/dist/esm/internal/protos.js +0 -39
- package/dist/esm/internal/protos.js.map +0 -1
- package/dist/esm/internal/provide.js +0 -72
- package/dist/esm/internal/provide.js.map +0 -1
- package/dist/esm/internal/requestIdleCallback.js +0 -16
- package/dist/esm/internal/requestIdleCallback.js.map +0 -1
- package/dist/esm/internal/share.js +0 -62
- package/dist/esm/internal/share.js.map +0 -1
- package/dist/esm/internal/strategies.js +0 -8
- package/dist/esm/internal/strategies.js.map +0 -1
- package/dist/esm/internal/sync-operator.js +0 -95
- package/dist/esm/internal/sync-operator.js.map +0 -1
- package/dist/esm/internal/sync-producer.js +0 -90
- package/dist/esm/internal/sync-producer.js.map +0 -1
- package/dist/esm/internal/withKey.js +0 -56
- package/dist/esm/internal/withKey.js.map +0 -1
- package/dist/esm/package.json +0 -4
- package/src/AsyncData.ts +0 -453
- package/src/Emitter.ts +0 -59
- package/src/Form.ts +0 -489
- package/src/FormEntry.ts +0 -214
- package/src/Idle.ts +0 -294
- package/src/Match.ts +0 -314
- package/src/Pull.ts +0 -95
- package/src/RefChunk.ts +0 -407
- package/src/RefHashMap.ts +0 -335
- package/src/RefHashSet.ts +0 -179
- package/src/Stream.ts +0 -140
- package/src/TypeId.ts +0 -59
- package/src/Typeclass.ts +0 -459
- package/src/internal/DeferredRef.ts +0 -72
- package/src/internal/UnionToTuple.ts +0 -11
- package/src/internal/bounds.ts +0 -21
- package/src/internal/core.ts +0 -3091
- package/src/internal/diff.ts +0 -171
- package/src/internal/effect-loop-operator.ts +0 -466
- package/src/internal/effect-operator.ts +0 -317
- package/src/internal/effect-producer.ts +0 -125
- package/src/internal/helpers.ts +0 -538
- package/src/internal/keyed.ts +0 -235
- package/src/internal/loop-operator.ts +0 -266
- package/src/internal/operator.ts +0 -87
- package/src/internal/protos.ts +0 -57
- package/src/internal/provide.ts +0 -151
- package/src/internal/requestIdleCallback.ts +0 -19
- package/src/internal/share.ts +0 -97
- package/src/internal/strategies.ts +0 -15
- package/src/internal/sync-operator.ts +0 -166
- package/src/internal/sync-producer.ts +0 -148
- package/src/internal/withKey.ts +0 -82
- /package/dist/{dts → Fx}/internal/UnionToTuple.d.ts +0 -0
package/src/Fx/Fx.ts
ADDED
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import { identity } from "effect/Function";
|
|
3
|
+
import type { Layer } from "effect/Layer";
|
|
4
|
+
import { effect } from "effect/Layer";
|
|
5
|
+
import { type Pipeable, pipeArguments } from "effect/Pipeable";
|
|
6
|
+
import type * as Scope from "effect/Scope";
|
|
7
|
+
import * as ServiceMap from "effect/ServiceMap";
|
|
8
|
+
import type * as Types from "effect/Types";
|
|
9
|
+
import type * as Sink from "../Sink/Sink.js";
|
|
10
|
+
import { provideServices } from "./combinators/provide.js";
|
|
11
|
+
import { FxTypeId, isFx } from "./TypeId.js";
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* `Fx` is a reactive stream of values that supports concurrency, error handling,
|
|
15
|
+
* and context management, fully integrated with the Effect ecosystem.
|
|
16
|
+
*
|
|
17
|
+
* Conceptually, an `Fx<A, E, R>` is a push-based stream that:
|
|
18
|
+
* - Emits values of type `A`
|
|
19
|
+
* - Can fail with an error of type `E`
|
|
20
|
+
* - Requires a context/environment of type `R`
|
|
21
|
+
*
|
|
22
|
+
* Unlike a standard `Effect` which produces a single value, `Fx` can produce
|
|
23
|
+
* 0, 1, or many values over time. It is similar to RxJS Observables or
|
|
24
|
+
* AsyncIterables, but built on top of Effect's fiber-based concurrency model.
|
|
25
|
+
*
|
|
26
|
+
* @since 1.0.0
|
|
27
|
+
* @category models
|
|
28
|
+
*/
|
|
29
|
+
export interface Fx<A, E = never, R = never> extends Pipeable {
|
|
30
|
+
readonly [FxTypeId]: Fx.Variance<A, E, R>;
|
|
31
|
+
/**
|
|
32
|
+
* Runs the Fx stream by providing a Sink to consume the values.
|
|
33
|
+
* The result is an Effect that runs the stream process.
|
|
34
|
+
*/
|
|
35
|
+
readonly run: <RSink>(sink: Sink.Sink<A, E, RSink>) => Effect.Effect<unknown, never, R | RSink>;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export declare namespace Fx {
|
|
39
|
+
/**
|
|
40
|
+
* Any Fx type with wildcards.
|
|
41
|
+
* @since 1.0.0
|
|
42
|
+
* @category models
|
|
43
|
+
*/
|
|
44
|
+
export type Any = Fx<any, any, any>;
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Variance markers for Fx types.
|
|
48
|
+
* @since 1.0.0
|
|
49
|
+
* @category models
|
|
50
|
+
*/
|
|
51
|
+
export interface Variance<A, E, R> {
|
|
52
|
+
readonly _A: Types.Covariant<A>;
|
|
53
|
+
readonly _E: Types.Covariant<E>;
|
|
54
|
+
readonly _R: Types.Covariant<R>;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Extract the success type from an Fx.
|
|
59
|
+
* @since 1.0.0
|
|
60
|
+
* @category type-level
|
|
61
|
+
*/
|
|
62
|
+
export type Success<T> = [T] extends [never]
|
|
63
|
+
? never
|
|
64
|
+
: T extends Fx<infer _A, infer _E, infer _R>
|
|
65
|
+
? _A
|
|
66
|
+
: never;
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Extract the error type from an Fx.
|
|
70
|
+
* @since 1.0.0
|
|
71
|
+
* @category type-level
|
|
72
|
+
*/
|
|
73
|
+
export type Error<T> = [T] extends [never]
|
|
74
|
+
? never
|
|
75
|
+
: T extends Fx<infer _A, infer _E, infer _R>
|
|
76
|
+
? _E
|
|
77
|
+
: never;
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Extract the required services from an Fx.
|
|
81
|
+
* @since 1.0.0
|
|
82
|
+
* @category type-level
|
|
83
|
+
*/
|
|
84
|
+
export type Services<T> = [T] extends [never]
|
|
85
|
+
? never
|
|
86
|
+
: [T] extends [Fx<infer _A, infer _E, infer _R>]
|
|
87
|
+
? _R
|
|
88
|
+
: never;
|
|
89
|
+
|
|
90
|
+
export interface Service<Self, Id extends string, A, E> extends Fx<A, E, Self> {
|
|
91
|
+
readonly id: Id;
|
|
92
|
+
readonly service: ServiceMap.Service<Self, Fx<A, E>>;
|
|
93
|
+
readonly make: <R = never>(
|
|
94
|
+
fx: Fx<A, E, R> | Effect.Effect<Fx<A, E, R>, E, R>,
|
|
95
|
+
) => Layer<Self, E, Exclude<R, Scope.Scope>>;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
export interface Class<Self, Id extends string, A, E> extends Service<Self, Id, A, E> {
|
|
99
|
+
new (): Service<Self, Id, A, E>;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Extract the success type from an Fx.
|
|
105
|
+
* @since 1.0.0
|
|
106
|
+
* @category type-level
|
|
107
|
+
*/
|
|
108
|
+
export type Success<T> = Fx.Success<T>;
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* Extract the error type from an Fx.
|
|
112
|
+
* @since 1.0.0
|
|
113
|
+
* @category type-level
|
|
114
|
+
*/
|
|
115
|
+
export type Error<T> = Fx.Error<T>;
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* Extract the required services from an Fx.
|
|
119
|
+
* @since 1.0.0
|
|
120
|
+
* @category type-level
|
|
121
|
+
*/
|
|
122
|
+
export type Services<T> = Fx.Services<T>;
|
|
123
|
+
|
|
124
|
+
const VARIANCE: Fx.Variance<any, any, any> = {
|
|
125
|
+
_A: identity,
|
|
126
|
+
_E: identity,
|
|
127
|
+
_R: identity,
|
|
128
|
+
};
|
|
129
|
+
|
|
130
|
+
export function Service<Self, A, E = never>() {
|
|
131
|
+
return <const Id extends string>(id: Id): Fx.Class<Self, Id, A, E> => {
|
|
132
|
+
const service = ServiceMap.Service<Self, Fx<A, E>>(id);
|
|
133
|
+
|
|
134
|
+
// eslint-disable-next-line @typescript-eslint/no-extraneous-class
|
|
135
|
+
return class FxService {
|
|
136
|
+
static readonly id = id;
|
|
137
|
+
static readonly service = service;
|
|
138
|
+
|
|
139
|
+
static readonly make = <R = never>(
|
|
140
|
+
fx: Fx<A, E, R> | Effect.Effect<Fx<A, E, R>, E, R>,
|
|
141
|
+
): Layer<Self, E, Exclude<R, Scope.Scope>> =>
|
|
142
|
+
effect(
|
|
143
|
+
service,
|
|
144
|
+
Effect.gen(function* () {
|
|
145
|
+
const services = yield* Effect.services<R>();
|
|
146
|
+
const result = isFx(fx) ? fx : yield* fx;
|
|
147
|
+
return provideServices(result, services);
|
|
148
|
+
}),
|
|
149
|
+
);
|
|
150
|
+
|
|
151
|
+
static readonly [FxTypeId] = VARIANCE;
|
|
152
|
+
static readonly pipe = function (this: any) {
|
|
153
|
+
return pipeArguments(this, arguments);
|
|
154
|
+
};
|
|
155
|
+
|
|
156
|
+
static readonly run = <RSink>(sink: Sink.Sink<A, E, RSink>) =>
|
|
157
|
+
Effect.flatMap(service.asEffect(), (fx) => fx.run(sink));
|
|
158
|
+
|
|
159
|
+
constructor() {
|
|
160
|
+
return FxService;
|
|
161
|
+
}
|
|
162
|
+
} as unknown as Fx.Class<Self, Id, A, E>;
|
|
163
|
+
};
|
|
164
|
+
}
|
package/src/Fx/TypeId.ts
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { hasProperty } from "effect/Predicate";
|
|
2
|
+
import type { Fx } from "./Fx.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* The unique type identifier for Fx.
|
|
6
|
+
* @since 1.0.0
|
|
7
|
+
* @category symbol
|
|
8
|
+
*/
|
|
9
|
+
export const FxTypeId = Symbol.for("@typed/fx/Fx");
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* The unique type identifier type for Fx.
|
|
13
|
+
* @since 1.0.0
|
|
14
|
+
* @category symbol
|
|
15
|
+
*/
|
|
16
|
+
export type FxTypeId = typeof FxTypeId;
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Checks if a value is an Fx.
|
|
20
|
+
* @since 1.0.0
|
|
21
|
+
* @category guards
|
|
22
|
+
*/
|
|
23
|
+
export function isFx(u: unknown): u is Fx<any, any, any> {
|
|
24
|
+
return hasProperty(u, FxTypeId);
|
|
25
|
+
}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import type * as Arr from "effect/Array";
|
|
2
|
+
import * as Cause from "effect/Cause";
|
|
3
|
+
import { dual } from "effect/Function";
|
|
4
|
+
import * as Result from "effect/Result";
|
|
5
|
+
import type { ExcludeTag, ExtractTag, NoInfer, Tags } from "effect/Types";
|
|
6
|
+
import { make as makeSink } from "../../Sink/Sink.js";
|
|
7
|
+
import { make } from "../constructors/make.js";
|
|
8
|
+
import type { Fx } from "../Fx.js";
|
|
9
|
+
|
|
10
|
+
const hasTag = (u: unknown): u is { readonly _tag: string } =>
|
|
11
|
+
typeof u === "object" &&
|
|
12
|
+
u !== null &&
|
|
13
|
+
"_tag" in u &&
|
|
14
|
+
typeof (u as Record<string, unknown>)["_tag"] === "string";
|
|
15
|
+
|
|
16
|
+
const matchesTag = <E, K extends string>(
|
|
17
|
+
tag: K | Arr.NonEmptyReadonlyArray<K>,
|
|
18
|
+
error: E,
|
|
19
|
+
): error is ExtractTag<E, K> => {
|
|
20
|
+
if (!hasTag(error)) return false;
|
|
21
|
+
if (typeof tag === "string") return error._tag === tag;
|
|
22
|
+
return tag.some((t) => t === error._tag);
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Recovers from a typed failure of an Fx by switching to a fallback Fx.
|
|
27
|
+
*
|
|
28
|
+
* Mirrors `Effect.catch` / `Effect.catchAll` (catches `Cause.Fail` only).
|
|
29
|
+
*
|
|
30
|
+
* @since 1.0.0
|
|
31
|
+
* @category combinators
|
|
32
|
+
*/
|
|
33
|
+
export const catch_: {
|
|
34
|
+
<E, A2, E2, R2>(f: (e: E) => Fx<A2, E2, R2>): <A, R>(self: Fx<A, E, R>) => Fx<A | A2, E2, R | R2>;
|
|
35
|
+
|
|
36
|
+
<A, E, R, A2, E2, R2>(self: Fx<A, E, R>, f: (e: E) => Fx<A2, E2, R2>): Fx<A | A2, E2, R | R2>;
|
|
37
|
+
} = dual(
|
|
38
|
+
2,
|
|
39
|
+
<A, E, R, A2, E2, R2>(self: Fx<A, E, R>, f: (e: E) => Fx<A2, E2, R2>): Fx<A | A2, E2, R | R2> =>
|
|
40
|
+
make<A | A2, E2, R | R2>((sink) =>
|
|
41
|
+
self.run(
|
|
42
|
+
makeSink((cause) => {
|
|
43
|
+
const result = Cause.findFail(cause);
|
|
44
|
+
if (Result.isFailure(result)) {
|
|
45
|
+
return sink.onFailure(result.failure);
|
|
46
|
+
}
|
|
47
|
+
return f(result.success.error).run(sink);
|
|
48
|
+
}, sink.onSuccess),
|
|
49
|
+
),
|
|
50
|
+
),
|
|
51
|
+
);
|
|
52
|
+
|
|
53
|
+
export { catch_ as catch };
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* An alias for {@link catch}.
|
|
57
|
+
*
|
|
58
|
+
* @since 1.0.0
|
|
59
|
+
* @category combinators
|
|
60
|
+
*/
|
|
61
|
+
export const catchAll = catch_;
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Recovers from *any* failure cause of an Fx (including defects and interrupts)
|
|
65
|
+
* by switching to a fallback Fx.
|
|
66
|
+
*
|
|
67
|
+
* Mirrors `Effect.catchCause`.
|
|
68
|
+
*
|
|
69
|
+
* @since 1.0.0
|
|
70
|
+
* @category combinators
|
|
71
|
+
*/
|
|
72
|
+
export const catchCause: {
|
|
73
|
+
<E, A2, E2, R2>(
|
|
74
|
+
f: (cause: Cause.Cause<E>) => Fx<A2, E2, R2>,
|
|
75
|
+
): <A, R>(self: Fx<A, E, R>) => Fx<A | A2, E2, R | R2>;
|
|
76
|
+
|
|
77
|
+
<A, E, R, A2, E2, R2>(
|
|
78
|
+
self: Fx<A, E, R>,
|
|
79
|
+
f: (cause: Cause.Cause<E>) => Fx<A2, E2, R2>,
|
|
80
|
+
): Fx<A | A2, E2, R | R2>;
|
|
81
|
+
} = dual(
|
|
82
|
+
2,
|
|
83
|
+
<A, E, R, A2, E2, R2>(
|
|
84
|
+
self: Fx<A, E, R>,
|
|
85
|
+
f: (cause: Cause.Cause<E>) => Fx<A2, E2, R2>,
|
|
86
|
+
): Fx<A | A2, E2, R | R2> =>
|
|
87
|
+
make<A | A2, E2, R | R2>((sink) =>
|
|
88
|
+
self.run(makeSink((cause) => f(cause).run(sink), sink.onSuccess)),
|
|
89
|
+
),
|
|
90
|
+
);
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Recovers from a typed failure by matching on the `_tag` field of the error.
|
|
94
|
+
*
|
|
95
|
+
* Mirrors `Effect.catchTag`.
|
|
96
|
+
*
|
|
97
|
+
* @since 1.0.0
|
|
98
|
+
* @category combinators
|
|
99
|
+
*/
|
|
100
|
+
export const catchTag: {
|
|
101
|
+
<const K extends Tags<E> | Arr.NonEmptyReadonlyArray<Tags<E>>, E, A2, E2, R2>(
|
|
102
|
+
k: K,
|
|
103
|
+
f: (
|
|
104
|
+
e: ExtractTag<NoInfer<E>, K extends Arr.NonEmptyReadonlyArray<string> ? K[number] : K>,
|
|
105
|
+
) => Fx<A2, E2, R2>,
|
|
106
|
+
): <A, R>(
|
|
107
|
+
self: Fx<A, E, R>,
|
|
108
|
+
) => Fx<
|
|
109
|
+
A | A2,
|
|
110
|
+
E2 | ExcludeTag<E, K extends Arr.NonEmptyReadonlyArray<string> ? K[number] : K>,
|
|
111
|
+
R | R2
|
|
112
|
+
>;
|
|
113
|
+
|
|
114
|
+
<A, E, R, const K extends Tags<E> | Arr.NonEmptyReadonlyArray<Tags<E>>, A2, E2, R2>(
|
|
115
|
+
self: Fx<A, E, R>,
|
|
116
|
+
k: K,
|
|
117
|
+
f: (
|
|
118
|
+
e: ExtractTag<E, K extends Arr.NonEmptyReadonlyArray<string> ? K[number] : K>,
|
|
119
|
+
) => Fx<A2, E2, R2>,
|
|
120
|
+
): Fx<
|
|
121
|
+
A | A2,
|
|
122
|
+
E2 | ExcludeTag<E, K extends Arr.NonEmptyReadonlyArray<string> ? K[number] : K>,
|
|
123
|
+
R | R2
|
|
124
|
+
>;
|
|
125
|
+
} = dual(
|
|
126
|
+
3,
|
|
127
|
+
<A, E, R, const K extends Tags<E> | Arr.NonEmptyReadonlyArray<Tags<E>>, A2, E2, R2>(
|
|
128
|
+
self: Fx<A, E, R>,
|
|
129
|
+
k: K,
|
|
130
|
+
f: (
|
|
131
|
+
e: ExtractTag<E, K extends Arr.NonEmptyReadonlyArray<string> ? K[number] : K>,
|
|
132
|
+
) => Fx<A2, E2, R2>,
|
|
133
|
+
): Fx<
|
|
134
|
+
A | A2,
|
|
135
|
+
E2 | ExcludeTag<E, K extends Arr.NonEmptyReadonlyArray<string> ? K[number] : K>,
|
|
136
|
+
R | R2
|
|
137
|
+
> =>
|
|
138
|
+
make<
|
|
139
|
+
A | A2,
|
|
140
|
+
E2 | ExcludeTag<E, K extends Arr.NonEmptyReadonlyArray<string> ? K[number] : K>,
|
|
141
|
+
R | R2
|
|
142
|
+
>((sink) =>
|
|
143
|
+
self.run(
|
|
144
|
+
makeSink((cause) => {
|
|
145
|
+
const result = Cause.findFail(cause);
|
|
146
|
+
if (Result.isFailure(result)) {
|
|
147
|
+
return sink.onFailure(result.failure);
|
|
148
|
+
} else if (matchesTag(k, result.success.error)) {
|
|
149
|
+
return f(
|
|
150
|
+
result.success.error as ExtractTag<
|
|
151
|
+
E,
|
|
152
|
+
K extends Arr.NonEmptyReadonlyArray<string> ? K[number] : K
|
|
153
|
+
>,
|
|
154
|
+
).run(sink);
|
|
155
|
+
} else {
|
|
156
|
+
return sink.onFailure(
|
|
157
|
+
cause as Cause.Cause<
|
|
158
|
+
E2 | ExcludeTag<E, K extends Arr.NonEmptyReadonlyArray<string> ? K[number] : K>
|
|
159
|
+
>,
|
|
160
|
+
);
|
|
161
|
+
}
|
|
162
|
+
}, sink.onSuccess),
|
|
163
|
+
),
|
|
164
|
+
),
|
|
165
|
+
);
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type * as Cause from "effect/Cause";
|
|
2
|
+
import * as Exit from "effect/Exit";
|
|
3
|
+
import * as Option from "effect/Option";
|
|
4
|
+
import type { Fx } from "../Fx.js";
|
|
5
|
+
import { exit } from "./exit.js";
|
|
6
|
+
import { filterMap } from "./filterMap.js";
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Emits only the failure causes from an Fx, discarding successful values.
|
|
10
|
+
*
|
|
11
|
+
* @param fx - The `Fx` stream.
|
|
12
|
+
* @returns An `Fx` emitting `Cause<E>`.
|
|
13
|
+
* @since 1.0.0
|
|
14
|
+
* @category combinators
|
|
15
|
+
*/
|
|
16
|
+
export const causes = <A, E, R>(fx: Fx<A, E, R>): Fx<Cause.Cause<E>, never, R> =>
|
|
17
|
+
filterMap(
|
|
18
|
+
exit(fx),
|
|
19
|
+
Exit.match({
|
|
20
|
+
onFailure: Option.some,
|
|
21
|
+
onSuccess: Option.none,
|
|
22
|
+
}),
|
|
23
|
+
);
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type * as Option from "effect/Option";
|
|
2
|
+
import * as sinkCore from "../../Sink/combinators.js";
|
|
3
|
+
import { make } from "../constructors/make.js";
|
|
4
|
+
import type { Fx } from "../Fx.js";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Compacts an Fx of Options, discarding `None` values and unwrapping `Some` values.
|
|
8
|
+
*
|
|
9
|
+
* @param self - An `Fx` emitting `Option<A>`.
|
|
10
|
+
* @returns An `Fx` emitting `A`.
|
|
11
|
+
* @since 1.0.0
|
|
12
|
+
* @category combinators
|
|
13
|
+
*/
|
|
14
|
+
export const compact = <A, E, R>(self: Fx<Option.Option<A>, E, R>): Fx<A, E, R> =>
|
|
15
|
+
make<A, E, R>((sink) => self.run(sinkCore.compact(sink)));
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import { dual } from "effect/Function";
|
|
3
|
+
import { make } from "../constructors/make.js";
|
|
4
|
+
import { succeed } from "../constructors/succeed.js";
|
|
5
|
+
import type { Fx } from "../Fx.js";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* continues an Fx with another Fx after the first one completes.
|
|
9
|
+
*
|
|
10
|
+
* @param f - A function that returns the next Fx to run.
|
|
11
|
+
* @returns An `Fx` that emits values from the first Fx, then from the second Fx.
|
|
12
|
+
* @since 1.0.0
|
|
13
|
+
* @category combinators
|
|
14
|
+
*/
|
|
15
|
+
export const continueWith: {
|
|
16
|
+
<B, E2, R2>(f: () => Fx<B, E2, R2>): <A, E, R>(fx: Fx<A, E, R>) => Fx<A | B, E | E2, R | R2>;
|
|
17
|
+
|
|
18
|
+
<A, E, R, B, E2, R2>(fx: Fx<A, E, R>, f: () => Fx<B, E2, R2>): Fx<A | B, E | E2, R | R2>;
|
|
19
|
+
} = dual(
|
|
20
|
+
2,
|
|
21
|
+
<A, E, R, B, E2, R2>(fx: Fx<A, E, R>, f: () => Fx<B, E2, R2>): Fx<A | B, E | E2, R | R2> =>
|
|
22
|
+
make<A | B, E | E2, R | R2>((sink) => Effect.flatMap(fx.run(sink), () => f().run(sink))),
|
|
23
|
+
);
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Appends a value to the end of an Fx.
|
|
27
|
+
*
|
|
28
|
+
* @param value - The value to append.
|
|
29
|
+
* @returns An `Fx` that emits values from the input Fx, then the appended value.
|
|
30
|
+
* @since 1.0.0
|
|
31
|
+
* @category combinators
|
|
32
|
+
*/
|
|
33
|
+
export const append: {
|
|
34
|
+
<B>(value: B): <A, E, R>(fx: Fx<A, E, R>) => Fx<A | B, E, R>;
|
|
35
|
+
|
|
36
|
+
<A, E, R, B>(fx: Fx<A, E, R>, value: B): Fx<A | B, E, R>;
|
|
37
|
+
} = dual(
|
|
38
|
+
2,
|
|
39
|
+
<A, E, R, B>(fx: Fx<A, E, R>, value: B): Fx<A | B, E, R> =>
|
|
40
|
+
continueWith(fx, () => succeed(value)),
|
|
41
|
+
);
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Prepends a value to the beginning of an Fx.
|
|
45
|
+
*
|
|
46
|
+
* @param value - The value to prepend.
|
|
47
|
+
* @returns An `Fx` that emits the prepended value, then values from the input Fx.
|
|
48
|
+
* @since 1.0.0
|
|
49
|
+
* @category combinators
|
|
50
|
+
*/
|
|
51
|
+
export const prepend: {
|
|
52
|
+
<B>(value: B): <A, E, R>(fx: Fx<A, E, R>) => Fx<B | A, E, R>;
|
|
53
|
+
|
|
54
|
+
<A, E, R, B>(fx: Fx<A, E, R>, value: B): Fx<B | A, E, R>;
|
|
55
|
+
} = dual(
|
|
56
|
+
2,
|
|
57
|
+
<A, E, R, B>(fx: Fx<A, E, R>, value: B): Fx<B | A, E, R> =>
|
|
58
|
+
continueWith(succeed(value), () => fx),
|
|
59
|
+
);
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Wraps an Fx with a start and end value.
|
|
63
|
+
*
|
|
64
|
+
* @param before - The value to emit before the Fx starts.
|
|
65
|
+
* @param after - The value to emit after the Fx completes.
|
|
66
|
+
* @returns An `Fx` that emits `before`, then values from the input Fx, then `after`.
|
|
67
|
+
* @since 1.0.0
|
|
68
|
+
* @category combinators
|
|
69
|
+
*/
|
|
70
|
+
export const delimit: {
|
|
71
|
+
<B, C>(before: B, after: C): <A, E, R>(fx: Fx<A, E, R>) => Fx<A | B | C, E, R>;
|
|
72
|
+
|
|
73
|
+
<A, E, R, B, C>(fx: Fx<A, E, R>, before: B, after: C): Fx<A | B | C, E, R>;
|
|
74
|
+
} = dual(
|
|
75
|
+
3,
|
|
76
|
+
<A, E, R, B, C>(fx: Fx<A, E, R>, before: B, after: C): Fx<A | B | C, E, R> =>
|
|
77
|
+
fx.pipe(prepend(before), append(after)),
|
|
78
|
+
);
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import { dual } from "effect/Function";
|
|
3
|
+
import { make } from "../constructors/make.js";
|
|
4
|
+
import type { Fx } from "../Fx.js";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Adds an `Effect.ensuring`-style finalizer to an `Fx`.
|
|
8
|
+
*
|
|
9
|
+
* The finalizer is guaranteed to run when the stream terminates (success,
|
|
10
|
+
* failure, or interruption).
|
|
11
|
+
*
|
|
12
|
+
* @since 1.0.0
|
|
13
|
+
* @category combinators
|
|
14
|
+
*/
|
|
15
|
+
export const ensuring: {
|
|
16
|
+
<R2>(finalizer: Effect.Effect<void, never, R2>): <A, E, R>(self: Fx<A, E, R>) => Fx<A, E, R | R2>;
|
|
17
|
+
|
|
18
|
+
<A, E, R, R2>(self: Fx<A, E, R>, finalizer: Effect.Effect<void, never, R2>): Fx<A, E, R | R2>;
|
|
19
|
+
} = dual(
|
|
20
|
+
2,
|
|
21
|
+
<A, E, R, R2>(self: Fx<A, E, R>, finalizer: Effect.Effect<void, never, R2>): Fx<A, E, R | R2> =>
|
|
22
|
+
make<A, E, R | R2>((sink) => self.run(sink).pipe(Effect.ensuring(finalizer))),
|
|
23
|
+
);
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import * as Fiber from "effect/Fiber";
|
|
3
|
+
import { dual } from "effect/Function";
|
|
4
|
+
import type * as Scope from "effect/Scope";
|
|
5
|
+
import { make as makeSink, type Sink } from "../../Sink/Sink.js";
|
|
6
|
+
import { make } from "../constructors/make.js";
|
|
7
|
+
import type { Fx } from "../Fx.js";
|
|
8
|
+
import { extendScope } from "../internal/scope.js";
|
|
9
|
+
import type { FlatMapLike } from "./flatMap.js";
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Maps each element of an Fx to a new Fx, but only runs one inner Fx at a time.
|
|
13
|
+
* If a new element arrives while an inner Fx is running, the new element is buffered (overwriting any previously buffered value).
|
|
14
|
+
* When the current inner Fx completes, the latest buffered Fx is run.
|
|
15
|
+
*
|
|
16
|
+
* This is useful for scenarios where you want to ignore intermediate values but ensure the latest value is eventually processed.
|
|
17
|
+
*
|
|
18
|
+
* @param f - A function that maps an element `A` to a new `Fx<B>`.
|
|
19
|
+
* @returns An `Fx` that emits values from the inner streams.
|
|
20
|
+
* @since 1.0.0
|
|
21
|
+
* @category combinators
|
|
22
|
+
*/
|
|
23
|
+
export const exhaustLatestMap: FlatMapLike = dual(
|
|
24
|
+
2,
|
|
25
|
+
<A, E, R, B, E2, R2>(
|
|
26
|
+
self: Fx<A, E, R>,
|
|
27
|
+
f: (a: A) => Fx<B, E2, R2>,
|
|
28
|
+
): Fx<B, E | E2, R | R2 | Scope.Scope> => {
|
|
29
|
+
return make<B, E | E2, R | R2 | Scope.Scope>(
|
|
30
|
+
Effect.fn(function* <RSink>(sink: Sink<B, E | E2, RSink>) {
|
|
31
|
+
let runningFiber: Fiber.Fiber<unknown, never> | undefined = undefined;
|
|
32
|
+
let nextEffectToFork: Effect.Effect<unknown, never, R2 | RSink> | undefined = undefined;
|
|
33
|
+
|
|
34
|
+
const scope = yield* Effect.scope;
|
|
35
|
+
|
|
36
|
+
const fork = (
|
|
37
|
+
effect: Effect.Effect<unknown, never, R2 | RSink>,
|
|
38
|
+
): Effect.Effect<Fiber.Fiber<unknown, never>, never, RSink | R2> =>
|
|
39
|
+
Effect.forkIn(
|
|
40
|
+
effect.pipe(Effect.ensuring(Effect.zip(resetRunningFiber, runNext))),
|
|
41
|
+
scope,
|
|
42
|
+
);
|
|
43
|
+
|
|
44
|
+
const resetRunningFiber: Effect.Effect<void, never, never> = Effect.sync(
|
|
45
|
+
() => (runningFiber = undefined),
|
|
46
|
+
);
|
|
47
|
+
|
|
48
|
+
const runNext: Effect.Effect<void, never, R2 | RSink> = Effect.gen(function* () {
|
|
49
|
+
if (nextEffectToFork !== undefined) {
|
|
50
|
+
const eff = nextEffectToFork;
|
|
51
|
+
nextEffectToFork = undefined;
|
|
52
|
+
yield* exhaustLatestFork(eff);
|
|
53
|
+
// Ensure we don't close the scope until the last fiber completes
|
|
54
|
+
if (runningFiber !== undefined) yield* Fiber.join(runningFiber);
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
const exhaustLatestFork = Effect.fn(function* (
|
|
59
|
+
eff: Effect.Effect<void, never, R2 | RSink>,
|
|
60
|
+
) {
|
|
61
|
+
if (runningFiber === undefined) {
|
|
62
|
+
runningFiber = yield* fork(eff);
|
|
63
|
+
} else {
|
|
64
|
+
nextEffectToFork = eff;
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
yield* self.run(makeSink(sink.onFailure, (a) => exhaustLatestFork(f(a).run(sink))));
|
|
69
|
+
|
|
70
|
+
if (runningFiber !== undefined) yield* Fiber.join(runningFiber as Fiber.Fiber<void, never>);
|
|
71
|
+
}, extendScope),
|
|
72
|
+
);
|
|
73
|
+
},
|
|
74
|
+
);
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type * as Effect from "effect/Effect";
|
|
2
|
+
import { dual, flow } from "effect/Function";
|
|
3
|
+
import type * as Scope from "effect/Scope";
|
|
4
|
+
import { fromEffect } from "../constructors/fromEffect.js";
|
|
5
|
+
import type { Fx } from "../Fx.js";
|
|
6
|
+
import { exhaustLatestMap } from "./exhaustLatestMap.js";
|
|
7
|
+
import type { FlatMapEffectLike } from "./flatMapEffect.js";
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Maps each element of an Fx to an Effect, but only runs one effect at a time.
|
|
11
|
+
* If a new element arrives while an effect is running, the new element is buffered (overwriting any previously buffered value).
|
|
12
|
+
* When the current effect completes, the latest buffered effect is run.
|
|
13
|
+
*
|
|
14
|
+
* @param f - A function that maps an element `A` to an `Effect<B>`.
|
|
15
|
+
* @returns An `Fx` that emits the results of the effects.
|
|
16
|
+
* @since 1.0.0
|
|
17
|
+
* @category combinators
|
|
18
|
+
*/
|
|
19
|
+
export const exhaustLatestMapEffect: FlatMapEffectLike = dual(
|
|
20
|
+
2,
|
|
21
|
+
<A, E, R, B, E2, R2>(
|
|
22
|
+
self: Fx<A, E, R>,
|
|
23
|
+
f: (a: A) => Effect.Effect<B, E2, R2>,
|
|
24
|
+
): Fx<B, E | E2, R | R2 | Scope.Scope> => exhaustLatestMap(self, flow(f, fromEffect)),
|
|
25
|
+
);
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import * as FiberHandle from "effect/FiberHandle";
|
|
3
|
+
import { dual } from "effect/Function";
|
|
4
|
+
import type * as Scope from "effect/Scope";
|
|
5
|
+
import { make as makeSink } from "../../Sink/Sink.js";
|
|
6
|
+
import { make } from "../constructors/make.js";
|
|
7
|
+
import type { Fx } from "../Fx.js";
|
|
8
|
+
import { extendScope } from "../internal/scope.js";
|
|
9
|
+
import type { FlatMapLike } from "./flatMap.js";
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Maps each element of an Fx to a new Fx, ignoring new elements until the current inner Fx completes.
|
|
13
|
+
*
|
|
14
|
+
* @param f - A function that maps an element `A` to a new `Fx<B>`.
|
|
15
|
+
* @returns An `Fx` that emits values from the active inner stream.
|
|
16
|
+
* @since 1.0.0
|
|
17
|
+
* @category combinators
|
|
18
|
+
*/
|
|
19
|
+
export const exhaustMap: FlatMapLike = dual(
|
|
20
|
+
2,
|
|
21
|
+
<A, E, R, B, E2, R2>(
|
|
22
|
+
self: Fx<A, E, R>,
|
|
23
|
+
f: (a: A) => Fx<B, E2, R2>,
|
|
24
|
+
): Fx<B, E | E2, R | R2 | Scope.Scope> =>
|
|
25
|
+
make<B, E | E2, R | R2 | Scope.Scope>(
|
|
26
|
+
Effect.fn(function* (sink) {
|
|
27
|
+
const handle = yield* FiberHandle.make<void, never>();
|
|
28
|
+
yield* self.run(
|
|
29
|
+
makeSink(sink.onFailure, (a) =>
|
|
30
|
+
FiberHandle.run(handle, f(a).run(sink), { onlyIfMissing: true }),
|
|
31
|
+
),
|
|
32
|
+
);
|
|
33
|
+
yield* FiberHandle.awaitEmpty(handle);
|
|
34
|
+
}, extendScope),
|
|
35
|
+
),
|
|
36
|
+
);
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type * as Effect from "effect/Effect";
|
|
2
|
+
import { dual, flow } from "effect/Function";
|
|
3
|
+
import type * as Scope from "effect/Scope";
|
|
4
|
+
import { fromEffect } from "../constructors/fromEffect.js";
|
|
5
|
+
import type { Fx } from "../Fx.js";
|
|
6
|
+
import { exhaustMap } from "./exhaustMap.js";
|
|
7
|
+
import type { FlatMapEffectLike } from "./flatMapEffect.js";
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Maps each element of an Fx to an Effect, ignoring new elements until the current effect completes.
|
|
11
|
+
*
|
|
12
|
+
* @param f - A function that maps an element `A` to an `Effect<B>`.
|
|
13
|
+
* @returns An `Fx` that emits the results of the active effect.
|
|
14
|
+
* @since 1.0.0
|
|
15
|
+
* @category combinators
|
|
16
|
+
*/
|
|
17
|
+
export const exhaustMapEffect: FlatMapEffectLike = dual(
|
|
18
|
+
2,
|
|
19
|
+
<A, E, R, B, E2, R2>(
|
|
20
|
+
self: Fx<A, E, R>,
|
|
21
|
+
f: (a: A) => Effect.Effect<B, E2, R2>,
|
|
22
|
+
): Fx<B, E | E2, R | R2 | Scope.Scope> => exhaustMap(self, flow(f, fromEffect)),
|
|
23
|
+
);
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type * as Exit from "effect/Exit";
|
|
2
|
+
import * as sinkCore from "../../Sink/combinators.js";
|
|
3
|
+
import { make } from "../constructors/make.js";
|
|
4
|
+
import type { Fx } from "../Fx.js";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Materializes the success and failure of an Fx into `Exit` values.
|
|
8
|
+
*
|
|
9
|
+
* @param fx - The `Fx` stream.
|
|
10
|
+
* @returns An `Fx` emitting `Exit<A, E>`.
|
|
11
|
+
* @since 1.0.0
|
|
12
|
+
* @category combinators
|
|
13
|
+
*/
|
|
14
|
+
export const exit = <A, E, R>(fx: Fx<A, E, R>): Fx<Exit.Exit<A, E>, never, R> =>
|
|
15
|
+
make<Exit.Exit<A, E>, never, R>((sink) => fx.run(sinkCore.exit(sink)));
|