@typed/fx 2.0.0-beta.1 → 2.0.0-beta.11
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/LICENSE +21 -0
- package/README.md +35 -21
- package/dist/Fx/Fx.d.ts +371 -19
- package/dist/Fx/Fx.d.ts.map +1 -1
- package/dist/Fx/Fx.js +37 -6
- package/dist/Fx/TypeId.d.ts +52 -6
- package/dist/Fx/TypeId.d.ts.map +1 -1
- package/dist/Fx/TypeId.js +41 -4
- package/dist/Fx/combinators/additive.d.ts +162 -11
- package/dist/Fx/combinators/additive.d.ts.map +1 -1
- package/dist/Fx/combinators/additive.js +162 -11
- package/dist/Fx/combinators/catch.d.ts +202 -29
- package/dist/Fx/combinators/catch.d.ts.map +1 -1
- package/dist/Fx/combinators/catch.js +193 -23
- package/dist/Fx/combinators/causes.d.ts +25 -2
- package/dist/Fx/combinators/causes.d.ts.map +1 -1
- package/dist/Fx/combinators/causes.js +25 -2
- package/dist/Fx/combinators/changesWithEffect.d.ts +21 -1
- package/dist/Fx/combinators/changesWithEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/changesWithEffect.js +21 -1
- package/dist/Fx/combinators/compact.d.ts +18 -1
- package/dist/Fx/combinators/compact.d.ts.map +1 -1
- package/dist/Fx/combinators/compact.js +18 -1
- package/dist/Fx/combinators/concatMap.d.ts +86 -0
- package/dist/Fx/combinators/concatMap.d.ts.map +1 -0
- package/dist/Fx/combinators/concatMap.js +86 -0
- package/dist/Fx/combinators/continueWith.d.ts +113 -5
- package/dist/Fx/combinators/continueWith.d.ts.map +1 -1
- package/dist/Fx/combinators/continueWith.js +113 -5
- package/dist/Fx/combinators/debounce.d.ts +34 -0
- package/dist/Fx/combinators/debounce.d.ts.map +1 -0
- package/dist/Fx/combinators/debounce.js +35 -0
- package/dist/Fx/combinators/delay.d.ts +36 -0
- package/dist/Fx/combinators/delay.d.ts.map +1 -0
- package/dist/Fx/combinators/delay.js +33 -0
- package/dist/Fx/combinators/dropUntil.d.ts +44 -2
- package/dist/Fx/combinators/dropUntil.d.ts.map +1 -1
- package/dist/Fx/combinators/dropUntil.js +44 -2
- package/dist/Fx/combinators/during.d.ts +38 -0
- package/dist/Fx/combinators/during.d.ts.map +1 -0
- package/dist/Fx/combinators/during.js +85 -0
- package/dist/Fx/combinators/ensuring.d.ts +34 -4
- package/dist/Fx/combinators/ensuring.d.ts.map +1 -1
- package/dist/Fx/combinators/ensuring.js +34 -4
- package/dist/Fx/combinators/exhaustLatestMap.d.ts +41 -5
- package/dist/Fx/combinators/exhaustLatestMap.d.ts.map +1 -1
- package/dist/Fx/combinators/exhaustLatestMap.js +41 -5
- package/dist/Fx/combinators/exhaustLatestMapEffect.d.ts +40 -4
- package/dist/Fx/combinators/exhaustLatestMapEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/exhaustLatestMapEffect.js +40 -4
- package/dist/Fx/combinators/exhaustMap.d.ts +38 -1
- package/dist/Fx/combinators/exhaustMap.d.ts.map +1 -1
- package/dist/Fx/combinators/exhaustMap.js +38 -1
- package/dist/Fx/combinators/exhaustMapEffect.d.ts +33 -1
- package/dist/Fx/combinators/exhaustMapEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/exhaustMapEffect.js +33 -1
- package/dist/Fx/combinators/exit.d.ts +23 -2
- package/dist/Fx/combinators/exit.d.ts.map +1 -1
- package/dist/Fx/combinators/exit.js +23 -2
- package/dist/Fx/combinators/filter.d.ts +17 -1
- package/dist/Fx/combinators/filter.d.ts.map +1 -1
- package/dist/Fx/combinators/filter.js +17 -1
- package/dist/Fx/combinators/filterEffect.d.ts +22 -1
- package/dist/Fx/combinators/filterEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/filterEffect.js +22 -1
- package/dist/Fx/combinators/filterMap.d.ts +20 -1
- package/dist/Fx/combinators/filterMap.d.ts.map +1 -1
- package/dist/Fx/combinators/filterMap.js +20 -1
- package/dist/Fx/combinators/filterMapEffect.d.ts +21 -1
- package/dist/Fx/combinators/filterMapEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/filterMapEffect.js +21 -1
- package/dist/Fx/combinators/filterMapLoop.d.ts +20 -1
- package/dist/Fx/combinators/filterMapLoop.d.ts.map +1 -1
- package/dist/Fx/combinators/filterMapLoop.js +20 -1
- package/dist/Fx/combinators/filterMapLoopCause.d.ts +21 -1
- package/dist/Fx/combinators/filterMapLoopCause.d.ts.map +1 -1
- package/dist/Fx/combinators/filterMapLoopCause.js +21 -1
- package/dist/Fx/combinators/filterMapLoopCauseEffect.d.ts +21 -1
- package/dist/Fx/combinators/filterMapLoopCauseEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/filterMapLoopCauseEffect.js +21 -1
- package/dist/Fx/combinators/filterMapLoopEffect.d.ts +21 -1
- package/dist/Fx/combinators/filterMapLoopEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/filterMapLoopEffect.js +21 -1
- package/dist/Fx/combinators/flatMap.d.ts +50 -5
- package/dist/Fx/combinators/flatMap.d.ts.map +1 -1
- package/dist/Fx/combinators/flatMap.js +36 -3
- package/dist/Fx/combinators/flatMapConcurrently.d.ts +51 -4
- package/dist/Fx/combinators/flatMapConcurrently.d.ts.map +1 -1
- package/dist/Fx/combinators/flatMapConcurrently.js +48 -2
- package/dist/Fx/combinators/flatMapConcurrentlyEffect.d.ts +48 -4
- package/dist/Fx/combinators/flatMapConcurrentlyEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/flatMapConcurrentlyEffect.js +40 -2
- package/dist/Fx/combinators/flatMapEffect.d.ts +46 -4
- package/dist/Fx/combinators/flatMapEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/flatMapEffect.js +32 -2
- package/dist/Fx/combinators/flip.d.ts +34 -2
- package/dist/Fx/combinators/flip.d.ts.map +1 -1
- package/dist/Fx/combinators/flip.js +34 -2
- package/dist/Fx/combinators/gen.d.ts +29 -10
- package/dist/Fx/combinators/gen.d.ts.map +1 -1
- package/dist/Fx/combinators/gen.js +28 -4
- package/dist/Fx/combinators/genScoped.d.ts +33 -10
- package/dist/Fx/combinators/genScoped.d.ts.map +1 -1
- package/dist/Fx/combinators/genScoped.js +31 -3
- package/dist/Fx/combinators/grouped.d.ts +89 -0
- package/dist/Fx/combinators/grouped.d.ts.map +1 -0
- package/dist/Fx/combinators/grouped.js +146 -0
- package/dist/Fx/combinators/index.d.ts +35 -0
- package/dist/Fx/combinators/index.d.ts.map +1 -1
- package/dist/Fx/combinators/index.js +35 -0
- package/dist/Fx/combinators/keyed.d.ts +123 -9
- package/dist/Fx/combinators/keyed.d.ts.map +1 -1
- package/dist/Fx/combinators/keyed.js +69 -11
- package/dist/Fx/combinators/loop.d.ts +17 -1
- package/dist/Fx/combinators/loop.d.ts.map +1 -1
- package/dist/Fx/combinators/loop.js +17 -1
- package/dist/Fx/combinators/loopCause.d.ts +18 -1
- package/dist/Fx/combinators/loopCause.d.ts.map +1 -1
- package/dist/Fx/combinators/loopCause.js +18 -1
- package/dist/Fx/combinators/loopCauseEffect.d.ts +19 -1
- package/dist/Fx/combinators/loopCauseEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/loopCauseEffect.js +19 -1
- package/dist/Fx/combinators/loopEffect.d.ts +24 -1
- package/dist/Fx/combinators/loopEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/loopEffect.js +24 -1
- package/dist/Fx/combinators/map.d.ts +46 -1
- package/dist/Fx/combinators/map.d.ts.map +1 -1
- package/dist/Fx/combinators/map.js +43 -1
- package/dist/Fx/combinators/mapBoth.d.ts +20 -1
- package/dist/Fx/combinators/mapBoth.d.ts.map +1 -1
- package/dist/Fx/combinators/mapBoth.js +20 -1
- package/dist/Fx/combinators/mapEffect.d.ts +25 -1
- package/dist/Fx/combinators/mapEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/mapEffect.js +25 -1
- package/dist/Fx/combinators/mapError.d.ts +21 -5
- package/dist/Fx/combinators/mapError.d.ts.map +1 -1
- package/dist/Fx/combinators/mapError.js +21 -5
- package/dist/Fx/combinators/mergeAll.d.ts +35 -1
- package/dist/Fx/combinators/mergeAll.d.ts.map +1 -1
- package/dist/Fx/combinators/mergeAll.js +35 -1
- package/dist/Fx/combinators/mergeOrdered.d.ts +36 -4
- package/dist/Fx/combinators/mergeOrdered.d.ts.map +1 -1
- package/dist/Fx/combinators/mergeOrdered.js +68 -14
- package/dist/Fx/combinators/onError.d.ts +34 -4
- package/dist/Fx/combinators/onError.d.ts.map +1 -1
- package/dist/Fx/combinators/onError.js +34 -4
- package/dist/Fx/combinators/onExit.d.ts +29 -3
- package/dist/Fx/combinators/onExit.d.ts.map +1 -1
- package/dist/Fx/combinators/onExit.js +29 -3
- package/dist/Fx/combinators/onInterrupt.d.ts +49 -4
- package/dist/Fx/combinators/onInterrupt.d.ts.map +1 -1
- package/dist/Fx/combinators/onInterrupt.js +49 -4
- package/dist/Fx/combinators/pairwise.d.ts +28 -0
- package/dist/Fx/combinators/pairwise.d.ts.map +1 -0
- package/dist/Fx/combinators/pairwise.js +31 -0
- package/dist/Fx/combinators/provide.d.ts +141 -20
- package/dist/Fx/combinators/provide.d.ts.map +1 -1
- package/dist/Fx/combinators/provide.js +137 -16
- package/dist/Fx/combinators/race.d.ts +92 -0
- package/dist/Fx/combinators/race.d.ts.map +1 -0
- package/dist/Fx/combinators/race.js +149 -0
- package/dist/Fx/combinators/repeat.d.ts +41 -0
- package/dist/Fx/combinators/repeat.d.ts.map +1 -0
- package/dist/Fx/combinators/repeat.js +57 -0
- package/dist/Fx/combinators/result.d.ts +23 -1
- package/dist/Fx/combinators/result.d.ts.map +1 -1
- package/dist/Fx/combinators/result.js +27 -13
- package/dist/Fx/combinators/retry.d.ts +53 -0
- package/dist/Fx/combinators/retry.d.ts.map +1 -0
- package/dist/Fx/combinators/retry.js +71 -0
- package/dist/Fx/combinators/sample.d.ts +31 -0
- package/dist/Fx/combinators/sample.d.ts.map +1 -0
- package/dist/Fx/combinators/sample.js +42 -0
- package/dist/Fx/combinators/scan.d.ts +41 -2
- package/dist/Fx/combinators/scan.d.ts.map +1 -1
- package/dist/Fx/combinators/scan.js +43 -4
- package/dist/Fx/combinators/since.d.ts +30 -0
- package/dist/Fx/combinators/since.d.ts.map +1 -0
- package/dist/Fx/combinators/since.js +39 -0
- package/dist/Fx/combinators/skip.d.ts +33 -2
- package/dist/Fx/combinators/skip.d.ts.map +1 -1
- package/dist/Fx/combinators/skip.js +33 -2
- package/dist/Fx/combinators/skipRepeats.d.ts +17 -1
- package/dist/Fx/combinators/skipRepeats.d.ts.map +1 -1
- package/dist/Fx/combinators/skipRepeats.js +17 -1
- package/dist/Fx/combinators/skipRepeatsWith.d.ts +18 -1
- package/dist/Fx/combinators/skipRepeatsWith.d.ts.map +1 -1
- package/dist/Fx/combinators/skipRepeatsWith.js +18 -1
- package/dist/Fx/combinators/skipWhile.d.ts +72 -4
- package/dist/Fx/combinators/skipWhile.d.ts.map +1 -1
- package/dist/Fx/combinators/skipWhile.js +72 -4
- package/dist/Fx/combinators/slice.d.ts +85 -3
- package/dist/Fx/combinators/slice.d.ts.map +1 -1
- package/dist/Fx/combinators/slice.js +35 -2
- package/dist/Fx/combinators/switchMap.d.ts +39 -1
- package/dist/Fx/combinators/switchMap.d.ts.map +1 -1
- package/dist/Fx/combinators/switchMap.js +43 -5
- package/dist/Fx/combinators/switchMapEffect.d.ts +38 -1
- package/dist/Fx/combinators/switchMapEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/switchMapEffect.js +38 -1
- package/dist/Fx/combinators/take.d.ts +34 -2
- package/dist/Fx/combinators/take.d.ts.map +1 -1
- package/dist/Fx/combinators/take.js +34 -2
- package/dist/Fx/combinators/takeUntil.d.ts +49 -3
- package/dist/Fx/combinators/takeUntil.d.ts.map +1 -1
- package/dist/Fx/combinators/takeUntil.js +49 -3
- package/dist/Fx/combinators/takeWhile.d.ts +33 -2
- package/dist/Fx/combinators/takeWhile.d.ts.map +1 -1
- package/dist/Fx/combinators/takeWhile.js +33 -2
- package/dist/Fx/combinators/tapEffect.d.ts +17 -1
- package/dist/Fx/combinators/tapEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/tapEffect.js +17 -1
- package/dist/Fx/combinators/throttle.d.ts +79 -0
- package/dist/Fx/combinators/throttle.d.ts.map +1 -0
- package/dist/Fx/combinators/throttle.js +99 -0
- package/dist/Fx/combinators/timeout.d.ts +76 -0
- package/dist/Fx/combinators/timeout.d.ts.map +1 -0
- package/dist/Fx/combinators/timeout.js +110 -0
- package/dist/Fx/combinators/tuple.d.ts +32 -2
- package/dist/Fx/combinators/tuple.d.ts.map +1 -1
- package/dist/Fx/combinators/tuple.js +36 -5
- package/dist/Fx/combinators/until.d.ts +27 -0
- package/dist/Fx/combinators/until.d.ts.map +1 -0
- package/dist/Fx/combinators/until.js +56 -0
- package/dist/Fx/combinators/unwrap.d.ts +31 -2
- package/dist/Fx/combinators/unwrap.d.ts.map +1 -1
- package/dist/Fx/combinators/unwrap.js +30 -1
- package/dist/Fx/combinators/unwrapScoped.d.ts +34 -1
- package/dist/Fx/combinators/unwrapScoped.d.ts.map +1 -1
- package/dist/Fx/combinators/unwrapScoped.js +34 -1
- package/dist/Fx/combinators/when.d.ts +37 -2
- package/dist/Fx/combinators/when.d.ts.map +1 -1
- package/dist/Fx/combinators/when.js +38 -3
- package/dist/Fx/combinators/withLatestFrom.d.ts +58 -0
- package/dist/Fx/combinators/withLatestFrom.d.ts.map +1 -0
- package/dist/Fx/combinators/withLatestFrom.js +68 -0
- package/dist/Fx/combinators/withSpan.d.ts +35 -1
- package/dist/Fx/combinators/withSpan.d.ts.map +1 -1
- package/dist/Fx/combinators/withSpan.js +34 -3
- package/dist/Fx/combinators/zip.d.ts +64 -4
- package/dist/Fx/combinators/zip.d.ts.map +1 -1
- package/dist/Fx/combinators/zip.js +64 -4
- package/dist/Fx/constructors/at.d.ts +21 -1
- package/dist/Fx/constructors/at.d.ts.map +1 -1
- package/dist/Fx/constructors/at.js +21 -1
- package/dist/Fx/constructors/die.d.ts +22 -1
- package/dist/Fx/constructors/die.d.ts.map +1 -1
- package/dist/Fx/constructors/die.js +22 -1
- package/dist/Fx/constructors/empty.d.ts +19 -1
- package/dist/Fx/constructors/empty.d.ts.map +1 -1
- package/dist/Fx/constructors/empty.js +19 -1
- package/dist/Fx/constructors/fail.d.ts +22 -1
- package/dist/Fx/constructors/fail.d.ts.map +1 -1
- package/dist/Fx/constructors/fail.js +22 -1
- package/dist/Fx/constructors/failCause.d.ts +23 -1
- package/dist/Fx/constructors/failCause.d.ts.map +1 -1
- package/dist/Fx/constructors/failCause.js +23 -1
- package/dist/Fx/constructors/fn.d.ts +116 -16
- package/dist/Fx/constructors/fn.d.ts.map +1 -1
- package/dist/Fx/constructors/fn.js +36 -0
- package/dist/Fx/constructors/fromEffect.d.ts +45 -3
- package/dist/Fx/constructors/fromEffect.d.ts.map +1 -1
- package/dist/Fx/constructors/fromEffect.js +45 -3
- package/dist/Fx/constructors/fromFailures.d.ts +25 -1
- package/dist/Fx/constructors/fromFailures.d.ts.map +1 -1
- package/dist/Fx/constructors/fromFailures.js +25 -1
- package/dist/Fx/constructors/fromIterable.d.ts +23 -1
- package/dist/Fx/constructors/fromIterable.d.ts.map +1 -1
- package/dist/Fx/constructors/fromIterable.js +23 -1
- package/dist/Fx/constructors/fromSchedule.d.ts +26 -1
- package/dist/Fx/constructors/fromSchedule.d.ts.map +1 -1
- package/dist/Fx/constructors/fromSchedule.js +28 -3
- package/dist/Fx/constructors/index.d.ts +2 -1
- package/dist/Fx/constructors/index.d.ts.map +1 -1
- package/dist/Fx/constructors/index.js +2 -1
- package/dist/Fx/constructors/interrupt.d.ts +22 -2
- package/dist/Fx/constructors/interrupt.d.ts.map +1 -1
- package/dist/Fx/constructors/interrupt.js +22 -2
- package/dist/Fx/constructors/make.d.ts +151 -4
- package/dist/Fx/constructors/make.d.ts.map +1 -1
- package/dist/Fx/constructors/make.js +60 -7
- package/dist/Fx/constructors/periodic.d.ts +30 -1
- package/dist/Fx/constructors/periodic.d.ts.map +1 -1
- package/dist/Fx/constructors/periodic.js +30 -1
- package/dist/Fx/constructors/succeed.d.ts +79 -7
- package/dist/Fx/constructors/succeed.d.ts.map +1 -1
- package/dist/Fx/constructors/succeed.js +79 -7
- package/dist/Fx/constructors/suspend.d.ts +28 -0
- package/dist/Fx/constructors/suspend.d.ts.map +1 -1
- package/dist/Fx/constructors/suspend.js +28 -0
- package/dist/Fx/constructors/sync.d.ts +32 -0
- package/dist/Fx/constructors/sync.d.ts.map +1 -0
- package/dist/Fx/constructors/sync.js +32 -0
- package/dist/Fx/internal/DeferredRef.d.ts +259 -7
- package/dist/Fx/internal/DeferredRef.d.ts.map +1 -1
- package/dist/Fx/internal/DeferredRef.js +260 -9
- package/dist/Fx/internal/UnionToTuple.d.ts +22 -0
- package/dist/Fx/internal/UnionToTuple.d.ts.map +1 -1
- package/dist/Fx/internal/diff.d.ts +586 -0
- package/dist/Fx/internal/diff.d.ts.map +1 -1
- package/dist/Fx/internal/diff.js +120 -9
- package/dist/Fx/internal/effectableEvaluateKey.d.ts +30 -0
- package/dist/Fx/internal/effectableEvaluateKey.d.ts.map +1 -0
- package/dist/Fx/internal/effectableEvaluateKey.js +29 -0
- package/dist/Fx/internal/effectableWithOverride.d.ts +70 -0
- package/dist/Fx/internal/effectableWithOverride.d.ts.map +1 -0
- package/dist/Fx/internal/effectableWithOverride.js +54 -0
- package/dist/Fx/internal/equivalence.d.ts +29 -0
- package/dist/Fx/internal/equivalence.d.ts.map +1 -1
- package/dist/Fx/internal/equivalence.js +29 -0
- package/dist/Fx/internal/multicast.d.ts +145 -2
- package/dist/Fx/internal/multicast.d.ts.map +1 -1
- package/dist/Fx/internal/multicast.js +146 -4
- package/dist/Fx/internal/ring-buffer.d.ts +149 -0
- package/dist/Fx/internal/ring-buffer.d.ts.map +1 -1
- package/dist/Fx/internal/ring-buffer.js +155 -0
- package/dist/Fx/internal/scope.d.ts +184 -0
- package/dist/Fx/internal/scope.d.ts.map +1 -1
- package/dist/Fx/internal/scope.js +150 -0
- package/dist/Fx/internal/yieldable.d.ts +117 -2
- package/dist/Fx/internal/yieldable.d.ts.map +1 -1
- package/dist/Fx/internal/yieldable.js +86 -3
- package/dist/Fx/run/collect.d.ts +93 -4
- package/dist/Fx/run/collect.d.ts.map +1 -1
- package/dist/Fx/run/collect.js +94 -5
- package/dist/Fx/run/first.d.ts +23 -1
- package/dist/Fx/run/first.d.ts.map +1 -1
- package/dist/Fx/run/first.js +23 -1
- package/dist/Fx/run/fork.d.ts +52 -2
- package/dist/Fx/run/fork.d.ts.map +1 -1
- package/dist/Fx/run/fork.js +52 -2
- package/dist/Fx/run/observe.d.ts +112 -4
- package/dist/Fx/run/observe.d.ts.map +1 -1
- package/dist/Fx/run/observe.js +137 -16
- package/dist/Fx/run/runPromise.d.ts +45 -2
- package/dist/Fx/run/runPromise.d.ts.map +1 -1
- package/dist/Fx/run/runPromise.js +45 -2
- package/dist/Fx/stream.d.ts +92 -0
- package/dist/Fx/stream.d.ts.map +1 -1
- package/dist/Fx/stream.js +60 -1
- package/dist/Push/Push.d.ts +1229 -104
- package/dist/Push/Push.d.ts.map +1 -1
- package/dist/Push/Push.js +1024 -95
- package/dist/RefArray.d.ts +2 -0
- package/dist/RefArray.d.ts.map +1 -0
- package/dist/RefArray.js +1 -0
- package/dist/RefBigDecimal.d.ts +2 -0
- package/dist/RefBigDecimal.d.ts.map +1 -0
- package/dist/RefBigDecimal.js +1 -0
- package/dist/RefBigInt.d.ts +2 -0
- package/dist/RefBigInt.d.ts.map +1 -0
- package/dist/RefBigInt.js +1 -0
- package/dist/RefBoolean.d.ts +2 -0
- package/dist/RefBoolean.d.ts.map +1 -0
- package/dist/RefBoolean.js +1 -0
- package/dist/RefCause.d.ts +2 -0
- package/dist/RefCause.d.ts.map +1 -0
- package/dist/RefCause.js +1 -0
- package/dist/RefChunk.d.ts +2 -0
- package/dist/RefChunk.d.ts.map +1 -0
- package/dist/RefChunk.js +1 -0
- package/dist/RefDateTime.d.ts +2 -0
- package/dist/RefDateTime.d.ts.map +1 -0
- package/dist/RefDateTime.js +1 -0
- package/dist/RefDuration.d.ts +2 -0
- package/dist/RefDuration.d.ts.map +1 -0
- package/dist/RefDuration.js +1 -0
- package/dist/RefGraph.d.ts +2 -0
- package/dist/RefGraph.d.ts.map +1 -0
- package/dist/RefGraph.js +1 -0
- package/dist/RefHashMap.d.ts +2 -0
- package/dist/RefHashMap.d.ts.map +1 -0
- package/dist/RefHashMap.js +1 -0
- package/dist/RefHashRing.d.ts +2 -0
- package/dist/RefHashRing.d.ts.map +1 -0
- package/dist/RefHashRing.js +1 -0
- package/dist/RefHashSet.d.ts +2 -0
- package/dist/RefHashSet.d.ts.map +1 -0
- package/dist/RefHashSet.js +1 -0
- package/dist/RefIterable.d.ts +2 -0
- package/dist/RefIterable.d.ts.map +1 -0
- package/dist/RefIterable.js +1 -0
- package/dist/RefOption.d.ts +2 -0
- package/dist/RefOption.d.ts.map +1 -0
- package/dist/RefOption.js +1 -0
- package/dist/RefRecord.d.ts +2 -0
- package/dist/RefRecord.d.ts.map +1 -0
- package/dist/RefRecord.js +1 -0
- package/dist/RefResult.d.ts +2 -0
- package/dist/RefResult.d.ts.map +1 -0
- package/dist/RefResult.js +1 -0
- package/dist/RefString.d.ts +2 -0
- package/dist/RefString.d.ts.map +1 -0
- package/dist/RefString.js +1 -0
- package/dist/RefStruct.d.ts +2 -0
- package/dist/RefStruct.d.ts.map +1 -0
- package/dist/RefStruct.js +1 -0
- package/dist/RefSubject/Hydration.d.ts +504 -0
- package/dist/RefSubject/Hydration.d.ts.map +1 -0
- package/dist/RefSubject/Hydration.js +300 -0
- package/dist/RefSubject/RefArray.d.ts +382 -35
- package/dist/RefSubject/RefArray.d.ts.map +1 -1
- package/dist/RefSubject/RefArray.js +374 -40
- package/dist/RefSubject/RefBigDecimal.d.ts +241 -21
- package/dist/RefSubject/RefBigDecimal.d.ts.map +1 -1
- package/dist/RefSubject/RefBigDecimal.js +229 -20
- package/dist/RefSubject/RefBigInt.d.ts +181 -16
- package/dist/RefSubject/RefBigInt.d.ts.map +1 -1
- package/dist/RefSubject/RefBigInt.js +169 -15
- package/dist/RefSubject/RefBoolean.d.ts +181 -16
- package/dist/RefSubject/RefBoolean.d.ts.map +1 -1
- package/dist/RefSubject/RefBoolean.js +169 -15
- package/dist/RefSubject/RefCause.d.ts +133 -12
- package/dist/RefSubject/RefCause.d.ts.map +1 -1
- package/dist/RefSubject/RefCause.js +121 -11
- package/dist/RefSubject/RefChunk.d.ts +481 -76
- package/dist/RefSubject/RefChunk.d.ts.map +1 -1
- package/dist/RefSubject/RefChunk.js +471 -75
- package/dist/RefSubject/RefDateTime.d.ts +133 -12
- package/dist/RefSubject/RefDateTime.d.ts.map +1 -1
- package/dist/RefSubject/RefDateTime.js +122 -12
- package/dist/RefSubject/RefDuration.d.ts +169 -15
- package/dist/RefSubject/RefDuration.d.ts.map +1 -1
- package/dist/RefSubject/RefDuration.js +157 -14
- package/dist/RefSubject/RefGraph.d.ts +349 -35
- package/dist/RefSubject/RefGraph.d.ts.map +1 -1
- package/dist/RefSubject/RefGraph.js +334 -32
- package/dist/RefSubject/RefHashMap.d.ts +323 -28
- package/dist/RefSubject/RefHashMap.d.ts.map +1 -1
- package/dist/RefSubject/RefHashMap.js +317 -29
- package/dist/RefSubject/RefHashRing.d.ts +159 -15
- package/dist/RefSubject/RefHashRing.d.ts.map +1 -1
- package/dist/RefSubject/RefHashRing.js +145 -12
- package/dist/RefSubject/RefHashSet.d.ts +251 -22
- package/dist/RefSubject/RefHashSet.d.ts.map +1 -1
- package/dist/RefSubject/RefHashSet.js +238 -20
- package/dist/RefSubject/RefIterable.d.ts +358 -32
- package/dist/RefSubject/RefIterable.d.ts.map +1 -1
- package/dist/RefSubject/RefIterable.js +350 -30
- package/dist/RefSubject/RefOption.d.ts +157 -14
- package/dist/RefSubject/RefOption.d.ts.map +1 -1
- package/dist/RefSubject/RefOption.js +145 -13
- package/dist/RefSubject/RefRecord.d.ts +402 -64
- package/dist/RefSubject/RefRecord.d.ts.map +1 -1
- package/dist/RefSubject/RefRecord.js +364 -39
- package/dist/RefSubject/RefResult.d.ts +167 -35
- package/dist/RefSubject/RefResult.d.ts.map +1 -1
- package/dist/RefSubject/RefResult.js +133 -12
- package/dist/RefSubject/RefString.d.ts +205 -18
- package/dist/RefSubject/RefString.d.ts.map +1 -1
- package/dist/RefSubject/RefString.js +193 -17
- package/dist/RefSubject/RefStruct.d.ts +169 -14
- package/dist/RefSubject/RefStruct.d.ts.map +1 -1
- package/dist/RefSubject/RefStruct.js +157 -13
- package/dist/RefSubject/RefSubject.d.ts +1197 -45
- package/dist/RefSubject/RefSubject.d.ts.map +1 -1
- package/dist/RefSubject/RefSubject.js +935 -88
- package/dist/RefSubject/RefTrie.d.ts +323 -37
- package/dist/RefSubject/RefTrie.d.ts.map +1 -1
- package/dist/RefSubject/RefTrie.js +311 -31
- package/dist/RefSubject/RefTuple.d.ts +127 -11
- package/dist/RefSubject/RefTuple.d.ts.map +1 -1
- package/dist/RefSubject/RefTuple.js +114 -9
- package/dist/RefSubject/index.d.ts +1 -0
- package/dist/RefSubject/index.d.ts.map +1 -1
- package/dist/RefSubject/index.js +1 -0
- package/dist/RefSubject.d.ts +2 -1
- package/dist/RefSubject.d.ts.map +1 -1
- package/dist/RefSubject.js +2 -1
- package/dist/RefTrie.d.ts +2 -0
- package/dist/RefTrie.d.ts.map +1 -0
- package/dist/RefTrie.js +1 -0
- package/dist/RefTuple.d.ts +2 -0
- package/dist/RefTuple.d.ts.map +1 -0
- package/dist/RefTuple.js +1 -0
- package/dist/Sink/Sink.d.ts +396 -23
- package/dist/Sink/Sink.d.ts.map +1 -1
- package/dist/Sink/Sink.js +55 -7
- package/dist/Sink/combinators.d.ts +740 -11
- package/dist/Sink/combinators.d.ts.map +1 -1
- package/dist/Sink/combinators.js +716 -14
- package/dist/Subject/Subject.d.ts +1022 -27
- package/dist/Subject/Subject.d.ts.map +1 -1
- package/dist/Subject/Subject.js +909 -43
- package/dist/Versioned/Versioned.d.ts +447 -27
- package/dist/Versioned/Versioned.d.ts.map +1 -1
- package/dist/Versioned/Versioned.js +282 -48
- package/dist/index.d.ts +22 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -3
- package/package.json +126 -16
- package/dist/Fx/constructors/fromYieldable.d.ts +0 -12
- package/dist/Fx/constructors/fromYieldable.d.ts.map +0 -1
- package/dist/Fx/constructors/fromYieldable.js +0 -12
- package/src/Fx/Fx.ts +0 -164
- package/src/Fx/TypeId.ts +0 -25
- package/src/Fx/combinators/additive.ts +0 -142
- package/src/Fx/combinators/catch.ts +0 -421
- package/src/Fx/combinators/causes.ts +0 -23
- package/src/Fx/combinators/changesWithEffect.ts +0 -66
- package/src/Fx/combinators/compact.ts +0 -15
- package/src/Fx/combinators/continueWith.ts +0 -78
- package/src/Fx/combinators/dropUntil.ts +0 -47
- package/src/Fx/combinators/ensuring.ts +0 -23
- package/src/Fx/combinators/exhaustLatestMap.ts +0 -74
- package/src/Fx/combinators/exhaustLatestMapEffect.ts +0 -25
- package/src/Fx/combinators/exhaustMap.ts +0 -36
- package/src/Fx/combinators/exhaustMapEffect.ts +0 -23
- package/src/Fx/combinators/exit.ts +0 -15
- package/src/Fx/combinators/filter.ts +0 -22
- package/src/Fx/combinators/filterEffect.ts +0 -31
- package/src/Fx/combinators/filterMap.ts +0 -23
- package/src/Fx/combinators/filterMapEffect.ts +0 -32
- package/src/Fx/combinators/filterMapLoop.ts +0 -35
- package/src/Fx/combinators/filterMapLoopCause.ts +0 -36
- package/src/Fx/combinators/filterMapLoopCauseEffect.ts +0 -46
- package/src/Fx/combinators/filterMapLoopEffect.ts +0 -36
- package/src/Fx/combinators/flatMap.ts +0 -51
- package/src/Fx/combinators/flatMapConcurrently.ts +0 -39
- package/src/Fx/combinators/flatMapConcurrentlyEffect.ts +0 -26
- package/src/Fx/combinators/flatMapEffect.ts +0 -42
- package/src/Fx/combinators/flip.ts +0 -14
- package/src/Fx/combinators/gen.ts +0 -24
- package/src/Fx/combinators/genScoped.ts +0 -24
- package/src/Fx/combinators/index.ts +0 -61
- package/src/Fx/combinators/keyed.ts +0 -369
- package/src/Fx/combinators/loop.ts +0 -27
- package/src/Fx/combinators/loopCause.ts +0 -34
- package/src/Fx/combinators/loopCauseEffect.ts +0 -36
- package/src/Fx/combinators/loopEffect.ts +0 -34
- package/src/Fx/combinators/map.ts +0 -22
- package/src/Fx/combinators/mapBoth.ts +0 -40
- package/src/Fx/combinators/mapEffect.ts +0 -32
- package/src/Fx/combinators/mapError.ts +0 -28
- package/src/Fx/combinators/mergeAll.ts +0 -22
- package/src/Fx/combinators/mergeOrdered.ts +0 -123
- package/src/Fx/combinators/onError.ts +0 -40
- package/src/Fx/combinators/onExit.ts +0 -82
- package/src/Fx/combinators/onInterrupt.ts +0 -87
- package/src/Fx/combinators/provide.ts +0 -124
- package/src/Fx/combinators/result.ts +0 -39
- package/src/Fx/combinators/scan.ts +0 -82
- package/src/Fx/combinators/skip.ts +0 -41
- package/src/Fx/combinators/skipRepeats.ts +0 -15
- package/src/Fx/combinators/skipRepeatsWith.ts +0 -40
- package/src/Fx/combinators/skipWhile.ts +0 -100
- package/src/Fx/combinators/slice.ts +0 -55
- package/src/Fx/combinators/switchMap.ts +0 -55
- package/src/Fx/combinators/switchMapEffect.ts +0 -25
- package/src/Fx/combinators/take.ts +0 -38
- package/src/Fx/combinators/takeUntil.ts +0 -88
- package/src/Fx/combinators/takeWhile.ts +0 -47
- package/src/Fx/combinators/tapEffect.ts +0 -39
- package/src/Fx/combinators/tuple.ts +0 -79
- package/src/Fx/combinators/unwrap.ts +0 -21
- package/src/Fx/combinators/unwrapScoped.ts +0 -26
- package/src/Fx/combinators/when.ts +0 -64
- package/src/Fx/combinators/withSpan.ts +0 -24
- package/src/Fx/combinators/zip.ts +0 -175
- package/src/Fx/constructors/at.ts +0 -23
- package/src/Fx/constructors/die.ts +0 -17
- package/src/Fx/constructors/empty.ts +0 -10
- package/src/Fx/constructors/fail.ts +0 -14
- package/src/Fx/constructors/failCause.ts +0 -14
- package/src/Fx/constructors/fn.ts +0 -245
- package/src/Fx/constructors/fromEffect.ts +0 -24
- package/src/Fx/constructors/fromFailures.ts +0 -19
- package/src/Fx/constructors/fromIterable.ts +0 -15
- package/src/Fx/constructors/fromSchedule.ts +0 -18
- package/src/Fx/constructors/fromYieldable.ts +0 -17
- package/src/Fx/constructors/index.ts +0 -15
- package/src/Fx/constructors/interrupt.ts +0 -13
- package/src/Fx/constructors/make.ts +0 -103
- package/src/Fx/constructors/periodic.ts +0 -15
- package/src/Fx/constructors/succeed.ts +0 -37
- package/src/Fx/constructors/suspend.ts +0 -6
- package/src/Fx/index.ts +0 -6
- package/src/Fx/internal/DeferredRef.ts +0 -87
- package/src/Fx/internal/UnionToTuple.ts +0 -12
- package/src/Fx/internal/diff.ts +0 -191
- package/src/Fx/internal/equivalence.ts +0 -12
- package/src/Fx/internal/multicast.ts +0 -51
- package/src/Fx/internal/ring-buffer.ts +0 -60
- package/src/Fx/internal/scope.ts +0 -58
- package/src/Fx/internal/yieldable.ts +0 -31
- package/src/Fx/run/collect.ts +0 -79
- package/src/Fx/run/first.ts +0 -20
- package/src/Fx/run/fork.ts +0 -40
- package/src/Fx/run/index.ts +0 -5
- package/src/Fx/run/observe.ts +0 -114
- package/src/Fx/run/runPromise.ts +0 -32
- package/src/Fx/stream.ts +0 -42
- package/src/Fx.additive-combinators.test.ts +0 -126
- package/src/Fx.catch-additive.test.ts +0 -206
- package/src/Fx.catch.test.ts +0 -60
- package/src/Fx.dropUntil.test.ts +0 -61
- package/src/Fx.fn.test.ts +0 -51
- package/src/Fx.lifecycle.test.ts +0 -79
- package/src/Fx.mapError-mapBoth.test.ts +0 -101
- package/src/Fx.provide-combinators.test.ts +0 -94
- package/src/Fx.result-changesWithEffect.test.ts +0 -112
- package/src/Fx.scan.test.ts +0 -73
- package/src/Fx.takeWhile-skipWhile.test.ts +0 -84
- package/src/Fx.test.ts +0 -71
- package/src/Fx.ts +0 -1
- package/src/Fx.zip-merge-additive.test.ts +0 -171
- package/src/Fx.zip.test.ts +0 -133
- package/src/Push/Push.ts +0 -1072
- package/src/Push/index.ts +0 -1
- package/src/Push.additive.test.ts +0 -256
- package/src/Push.test.ts +0 -26
- package/src/Push.ts +0 -1
- package/src/RefSubject/RefArray.ts +0 -512
- package/src/RefSubject/RefBigDecimal.test.ts +0 -56
- package/src/RefSubject/RefBigDecimal.ts +0 -295
- package/src/RefSubject/RefBigInt.test.ts +0 -56
- package/src/RefSubject/RefBigInt.ts +0 -189
- package/src/RefSubject/RefBoolean.test.ts +0 -57
- package/src/RefSubject/RefBoolean.ts +0 -185
- package/src/RefSubject/RefCause.test.ts +0 -53
- package/src/RefSubject/RefCause.ts +0 -146
- package/src/RefSubject/RefChunk.ts +0 -510
- package/src/RefSubject/RefDateTime.test.ts +0 -43
- package/src/RefSubject/RefDateTime.ts +0 -264
- package/src/RefSubject/RefDuration.test.ts +0 -49
- package/src/RefSubject/RefDuration.ts +0 -188
- package/src/RefSubject/RefGraph.ts +0 -650
- package/src/RefSubject/RefHashMap.ts +0 -465
- package/src/RefSubject/RefHashRing.ts +0 -262
- package/src/RefSubject/RefHashSet.ts +0 -308
- package/src/RefSubject/RefIterable.ts +0 -445
- package/src/RefSubject/RefOption.test.ts +0 -67
- package/src/RefSubject/RefOption.ts +0 -193
- package/src/RefSubject/RefRecord.ts +0 -612
- package/src/RefSubject/RefResult.test.ts +0 -63
- package/src/RefSubject/RefResult.ts +0 -209
- package/src/RefSubject/RefString.test.ts +0 -61
- package/src/RefSubject/RefString.ts +0 -256
- package/src/RefSubject/RefStruct.test.ts +0 -60
- package/src/RefSubject/RefStruct.ts +0 -253
- package/src/RefSubject/RefSubject.ts +0 -2646
- package/src/RefSubject/RefTrie.ts +0 -356
- package/src/RefSubject/RefTuple.test.ts +0 -60
- package/src/RefSubject/RefTuple.ts +0 -231
- package/src/RefSubject/index.ts +0 -21
- package/src/RefSubject.additive-parity.test.ts +0 -101
- package/src/RefSubject.test.ts +0 -65
- package/src/RefSubject.ts +0 -1
- package/src/Sink/Sink.ts +0 -159
- package/src/Sink/combinators.ts +0 -1115
- package/src/Sink/index.ts +0 -2
- package/src/Sink.combinators.test.ts +0 -88
- package/src/Sink.reduce-collect-head-last.test.ts +0 -107
- package/src/Sink.ts +0 -1
- package/src/Subject/Subject.ts +0 -441
- package/src/Subject/index.ts +0 -1
- package/src/Subject.test.ts +0 -47
- package/src/Subject.ts +0 -1
- package/src/Versioned/Versioned.ts +0 -597
- package/src/Versioned/index.ts +0 -1
- package/src/Versioned.filterMap.test.ts +0 -91
- package/src/Versioned.test.ts +0 -23
- package/src/Versioned.ts +0 -1
- package/src/index.ts +0 -7
|
@@ -11,13 +11,39 @@ import { zip } from "./zip.js";
|
|
|
11
11
|
* **Completion:** The merged stream completes when **both** input streams have
|
|
12
12
|
* completed.
|
|
13
13
|
*
|
|
14
|
-
* **
|
|
15
|
-
* the
|
|
14
|
+
* **Failures:** Every failure Cause is delivered to the downstream Sink. Delivery does not make
|
|
15
|
+
* `Fx.run` fail, so `merge` does not itself cancel the sibling; a terminal observer may choose to.
|
|
16
|
+
*
|
|
17
|
+
* @remarks
|
|
18
|
+
* ## Why
|
|
19
|
+
* `merge` preserves both producers instead of imposing a pairing relationship. Each input value is
|
|
20
|
+
* emitted once as soon as its source pushes it, so inter-source ordering is intentionally undefined.
|
|
21
|
+
*
|
|
22
|
+
* ## Ownership and lifetime
|
|
23
|
+
* Both runs are children of the consumer and completion waits for both. Downstream interruption
|
|
24
|
+
* cancels the remaining runs. A source Cause is only sent to `sink.onFailure`; whether that callback
|
|
25
|
+
* ends observation is Sink policy, not an intrinsic terminal rule of `merge`.
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```ts
|
|
29
|
+
* import { Effect, Ref } from "effect"
|
|
30
|
+
* import { Fx, Sink } from "@typed/fx"
|
|
31
|
+
*
|
|
32
|
+
* const program = Effect.gen(function* () {
|
|
33
|
+
* const deliveries = yield* Ref.make<Array<string>>([])
|
|
34
|
+
* const sink = Sink.make(
|
|
35
|
+
* () => Ref.update(deliveries, (xs) => [...xs, "failure"]),
|
|
36
|
+
* (value: string) => Ref.update(deliveries, (xs) => [...xs, value])
|
|
37
|
+
* )
|
|
38
|
+
* yield* Fx.merge(Fx.fail("left failed"), Fx.succeed("right continued")).run(sink)
|
|
39
|
+
* return yield* Ref.get(deliveries) // both "failure" and "right continued"
|
|
40
|
+
* })
|
|
41
|
+
* ```
|
|
16
42
|
*
|
|
17
43
|
* @param that - The second Fx stream.
|
|
18
44
|
* @returns An Fx that emits values from both streams.
|
|
19
45
|
* @since 1.0.0
|
|
20
|
-
* @category
|
|
46
|
+
* @category Combining sources
|
|
21
47
|
*/
|
|
22
48
|
export const merge = dual(2, (self, that) => mergeAll(self, that));
|
|
23
49
|
/**
|
|
@@ -28,44 +54,145 @@ export const merge = dual(2, (self, that) => mergeAll(self, that));
|
|
|
28
54
|
* **Completion:** The concatenated stream completes when the **second** stream
|
|
29
55
|
* completes (the first must complete before the second starts).
|
|
30
56
|
*
|
|
31
|
-
* **
|
|
32
|
-
*
|
|
33
|
-
*
|
|
57
|
+
* **Failures:** A source Cause is delivered to the Sink. Because `Fx.run` is infallible, delivery
|
|
58
|
+
* alone does not suppress the continuation: the right source is run after the left run returns.
|
|
59
|
+
*
|
|
60
|
+
* @remarks
|
|
61
|
+
* ## Why
|
|
62
|
+
* `concat` makes subscription order explicit: the right source is not acquired until the left run
|
|
63
|
+
* returns. It preserves every value and each source's internal order. A failure callback can be
|
|
64
|
+
* followed by continuation values when the Sink handles the Cause without interrupting the run.
|
|
65
|
+
*
|
|
66
|
+
* ## Ownership and lifetime
|
|
67
|
+
* Only one source is active at a time. Interruption stops the active source and prevents later
|
|
68
|
+
* acquisition. Failure is Sink delivery rather than a failing `Fx.run` Effect, so it does not by
|
|
69
|
+
* itself prevent the right source from being acquired.
|
|
70
|
+
*
|
|
71
|
+
* @example
|
|
72
|
+
* ```ts
|
|
73
|
+
* import { Effect, Ref } from "effect"
|
|
74
|
+
* import { Fx, Sink } from "@typed/fx"
|
|
75
|
+
*
|
|
76
|
+
* const program = Effect.gen(function* () {
|
|
77
|
+
* const deliveries = yield* Ref.make<Array<string>>([])
|
|
78
|
+
* const sink = Sink.make(
|
|
79
|
+
* () => Ref.update(deliveries, (xs) => [...xs, "failure"]),
|
|
80
|
+
* (value: string) => Ref.update(deliveries, (xs) => [...xs, value])
|
|
81
|
+
* )
|
|
82
|
+
* yield* Fx.concat(Fx.fail("left failed"), Fx.succeed("right still runs")).run(sink)
|
|
83
|
+
* return yield* Ref.get(deliveries) // ["failure", "right still runs"]
|
|
84
|
+
* })
|
|
85
|
+
* ```
|
|
34
86
|
*
|
|
35
87
|
* @param that - The second Fx stream (run after the first completes).
|
|
36
88
|
* @returns An Fx that emits values from the first stream, then the second.
|
|
37
89
|
* @since 1.0.0
|
|
38
|
-
* @category
|
|
90
|
+
* @category Combining sources
|
|
39
91
|
*/
|
|
40
92
|
export const concat = dual(2, (self, that) => continueWith(self, () => that));
|
|
41
93
|
/**
|
|
42
94
|
* Zips two Fx streams in strict lockstep and emits only the left value.
|
|
43
95
|
* Completes when the **first** of the two streams completes.
|
|
44
96
|
*
|
|
97
|
+
* @remarks
|
|
98
|
+
* ## Why
|
|
99
|
+
* `zipLeft` uses the right source as a one-for-one pacing or validation partner while retaining the
|
|
100
|
+
* left payload. It emits one left value per completed pair and preserves pair order.
|
|
101
|
+
*
|
|
102
|
+
* ## Ownership and lifetime
|
|
103
|
+
* Both sources run concurrently. The first run to complete ends pairing and interrupts the other,
|
|
104
|
+
* while consumer interruption stops both. A failure Cause is delivered to the Sink but does not by
|
|
105
|
+
* itself end pairing; a producer may continue and supply a value afterward.
|
|
106
|
+
*
|
|
107
|
+
* @example
|
|
108
|
+
* ```ts
|
|
109
|
+
* import { Cause, Effect, Ref } from "effect"
|
|
110
|
+
* import { Fx, Sink } from "@typed/fx"
|
|
111
|
+
*
|
|
112
|
+
* const program = Effect.gen(function* () {
|
|
113
|
+
* const deliveries = yield* Ref.make<Array<string>>([])
|
|
114
|
+
* const left = Fx.make<number, string>((sink) =>
|
|
115
|
+
* sink.onFailure(Cause.fail("warning")).pipe(Effect.andThen(sink.onSuccess(1)))
|
|
116
|
+
* )
|
|
117
|
+
* yield* Fx.zipLeft(left, Fx.succeed("pair")).run(Sink.make(
|
|
118
|
+
* () => Ref.update(deliveries, (xs) => [...xs, "failure"]),
|
|
119
|
+
* (value) => Ref.update(deliveries, (xs) => [...xs, `value:${value}`])
|
|
120
|
+
* ))
|
|
121
|
+
* return yield* Ref.get(deliveries) // ["failure", "value:1"]
|
|
122
|
+
* })
|
|
123
|
+
* ```
|
|
124
|
+
*
|
|
45
125
|
* @param that - The second Fx stream.
|
|
46
126
|
* @returns An Fx that emits values from the left stream only.
|
|
47
127
|
* @since 1.0.0
|
|
48
|
-
* @category
|
|
128
|
+
* @category Combining sources
|
|
49
129
|
*/
|
|
50
130
|
export const zipLeft = dual(2, (self, that) => map(zip(self, that), (pair) => pair[0]));
|
|
51
131
|
/**
|
|
52
132
|
* Zips two Fx streams in strict lockstep and emits only the right value.
|
|
53
133
|
* Completes when the **first** of the two streams completes.
|
|
54
134
|
*
|
|
135
|
+
* @remarks
|
|
136
|
+
* ## Why
|
|
137
|
+
* `zipRight` pairs both sources but deliberately keeps the right payload. It emits once per pair,
|
|
138
|
+
* in pairing order, and never emits an unmatched right value.
|
|
139
|
+
*
|
|
140
|
+
* ## Ownership and lifetime
|
|
141
|
+
* Both runs belong to the consumer. The first completion or consumer interruption cancels the
|
|
142
|
+
* remaining run and releases the lockstep queues. Failure is Sink delivery, not an automatic stop;
|
|
143
|
+
* pairing can continue when the failing producer remains active and later emits a value.
|
|
144
|
+
*
|
|
145
|
+
* @example
|
|
146
|
+
* ```ts
|
|
147
|
+
* import { Cause, Effect } from "effect"
|
|
148
|
+
* import { Fx, Sink } from "@typed/fx"
|
|
149
|
+
*
|
|
150
|
+
* const left = Fx.make<number, string>((sink) =>
|
|
151
|
+
* sink.onFailure(Cause.fail("warning")).pipe(Effect.andThen(sink.onSuccess(1)))
|
|
152
|
+
* )
|
|
153
|
+
* const program = Fx.zipRight(left, Fx.succeed("paired")).run(
|
|
154
|
+
* Sink.make(Effect.logError, Effect.log)
|
|
155
|
+
* ) // logs the failure and then "paired"
|
|
156
|
+
* ```
|
|
157
|
+
*
|
|
55
158
|
* @param that - The second Fx stream.
|
|
56
159
|
* @returns An Fx that emits values from the right stream only.
|
|
57
160
|
* @since 1.0.0
|
|
58
|
-
* @category
|
|
161
|
+
* @category Combining sources
|
|
59
162
|
*/
|
|
60
163
|
export const zipRight = dual(2, (self, that) => map(zip(self, that), (pair) => pair[1]));
|
|
61
164
|
/**
|
|
62
165
|
* Merges two Fx streams and emits only values from the left stream.
|
|
63
166
|
* Both streams run concurrently; completion when **both** complete.
|
|
64
167
|
*
|
|
168
|
+
* @remarks
|
|
169
|
+
* ## Why
|
|
170
|
+
* `mergeLeft` keeps the right producer's lifetime and failure signal while suppressing its values.
|
|
171
|
+
* Every left value is emitted once; right emissions only affect scheduling.
|
|
172
|
+
*
|
|
173
|
+
* ## Ownership and lifetime
|
|
174
|
+
* Both sources are acquired together and owned by the consuming run. Interruption cancels both and
|
|
175
|
+
* normal completion waits for both. A Cause from either source is delivered to the Sink but does not
|
|
176
|
+
* intrinsically cancel its sibling; right successes remain suppressed by the filter.
|
|
177
|
+
*
|
|
178
|
+
* @example
|
|
179
|
+
* ```ts
|
|
180
|
+
* import { Effect, Ref } from "effect"
|
|
181
|
+
* import { Fx, Sink } from "@typed/fx"
|
|
182
|
+
*
|
|
183
|
+
* const program = Effect.gen(function* () {
|
|
184
|
+
* const failures = yield* Ref.make(0)
|
|
185
|
+
* yield* Fx.mergeLeft(Fx.succeed("visible"), Fx.fail("hidden side failed")).run(
|
|
186
|
+
* Sink.make(() => Ref.update(failures, (n) => n + 1), () => Effect.void)
|
|
187
|
+
* )
|
|
188
|
+
* return yield* Ref.get(failures) // 1; failure is still delivered
|
|
189
|
+
* })
|
|
190
|
+
* ```
|
|
191
|
+
*
|
|
65
192
|
* @param that - The second Fx stream (values are dropped).
|
|
66
193
|
* @returns An Fx that emits only values from the left stream.
|
|
67
194
|
* @since 1.0.0
|
|
68
|
-
* @category
|
|
195
|
+
* @category Combining sources
|
|
69
196
|
*/
|
|
70
197
|
export const mergeLeft = dual(2, (self, that) => {
|
|
71
198
|
const taggedLeft = map(self, (a) => ({ _tag: "Left", value: a }));
|
|
@@ -78,10 +205,34 @@ export const mergeLeft = dual(2, (self, that) => {
|
|
|
78
205
|
* Merges two Fx streams and emits only values from the right stream.
|
|
79
206
|
* Both streams run concurrently; completion when **both** complete.
|
|
80
207
|
*
|
|
208
|
+
* @remarks
|
|
209
|
+
* ## Why
|
|
210
|
+
* `mergeRight` observes the left producer's completion and failure while exposing only right
|
|
211
|
+
* values. Each right value is emitted once with no deterministic ordering against hidden left work.
|
|
212
|
+
*
|
|
213
|
+
* ## Ownership and lifetime
|
|
214
|
+
* The consumer owns both concurrent runs and normal completion waits for both. Interruption cancels
|
|
215
|
+
* both. A Cause is delivered to the Sink without inherently canceling the sibling; left successes
|
|
216
|
+
* remain suppressed even while their failures are observable.
|
|
217
|
+
*
|
|
218
|
+
* @example
|
|
219
|
+
* ```ts
|
|
220
|
+
* import { Effect, Ref } from "effect"
|
|
221
|
+
* import { Fx, Sink } from "@typed/fx"
|
|
222
|
+
*
|
|
223
|
+
* const program = Effect.gen(function* () {
|
|
224
|
+
* const values = yield* Ref.make<Array<string>>([])
|
|
225
|
+
* yield* Fx.mergeRight(Fx.fail("hidden side failed"), Fx.succeed("visible")).run(
|
|
226
|
+
* Sink.make(() => Effect.void, (value) => Ref.update(values, (xs) => [...xs, value]))
|
|
227
|
+
* )
|
|
228
|
+
* return yield* Ref.get(values) // ["visible"]
|
|
229
|
+
* })
|
|
230
|
+
* ```
|
|
231
|
+
*
|
|
81
232
|
* @param that - The second Fx stream.
|
|
82
233
|
* @returns An Fx that emits only values from the right stream.
|
|
83
234
|
* @since 1.0.0
|
|
84
|
-
* @category
|
|
235
|
+
* @category Combining sources
|
|
85
236
|
*/
|
|
86
237
|
export const mergeRight = dual(2, (self, that) => {
|
|
87
238
|
const taggedLeft = map(self, (a) => ({ _tag: "Left", value: a }));
|
|
@@ -3,12 +3,44 @@ import * as Cause from "effect/Cause";
|
|
|
3
3
|
import type { ExcludeTag, ExtractTag, NoInfer, Tags } from "effect/Types";
|
|
4
4
|
import type { Fx } from "../Fx.js";
|
|
5
5
|
/**
|
|
6
|
-
* Recovers from
|
|
6
|
+
* Recovers from the first typed failure of an Fx by running a fallback Fx.
|
|
7
7
|
*
|
|
8
|
-
*
|
|
8
|
+
* @remarks
|
|
9
|
+
* ## Why
|
|
10
|
+
*
|
|
11
|
+
* Typed failures are part of an Fx's public error channel, so callers often
|
|
12
|
+
* need to replace a failed producer based on its first typed failure. This is
|
|
13
|
+
* the push-stream counterpart of Effect's typed recovery.
|
|
14
|
+
*
|
|
15
|
+
* ## Ownership and lifetime
|
|
16
|
+
*
|
|
17
|
+
* The source runs until it reports a Cause containing a `Fail`. The first typed
|
|
18
|
+
* failure starts exactly one fallback and the entire original Cause is replaced,
|
|
19
|
+
* including any defects or interrupts composed beside that Fail. A Cause with
|
|
20
|
+
* no Fail passes through unchanged. Source values already delivered remain
|
|
21
|
+
* delivered. The fallback's services become requirements of the returned Fx,
|
|
22
|
+
* and external interruption stops whichever run is active.
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```ts
|
|
26
|
+
* import { catch as recover } from "@typed/fx/Fx"
|
|
27
|
+
* import { fail, succeed } from "@typed/fx/Fx"
|
|
28
|
+
*
|
|
29
|
+
* const resilient = recover(fail("offline"), (error) => succeed(error.length))
|
|
30
|
+
* ```
|
|
31
|
+
*
|
|
32
|
+
* @example Recovering a Fail discards its complete composite Cause
|
|
33
|
+
* ```ts
|
|
34
|
+
* import { Cause } from "effect"
|
|
35
|
+
* import { catch as recover } from "@typed/fx/Fx"
|
|
36
|
+
* import { failCause, succeed } from "@typed/fx/Fx"
|
|
37
|
+
*
|
|
38
|
+
* const composite = Cause.combine(Cause.fail("offline"), Cause.die("socket defect"))
|
|
39
|
+
* const recovered = recover(failCause(composite), () => succeed("cached"))
|
|
40
|
+
* ```
|
|
9
41
|
*
|
|
10
42
|
* @since 1.0.0
|
|
11
|
-
* @category
|
|
43
|
+
* @category Errors and recovery
|
|
12
44
|
*/
|
|
13
45
|
export declare const catch_: {
|
|
14
46
|
<E, A2, E2, R2>(f: (e: E) => Fx<A2, E2, R2>): <A, R>(self: Fx<A, E, R>) => Fx<A | A2, E2, R | R2>;
|
|
@@ -16,61 +48,171 @@ export declare const catch_: {
|
|
|
16
48
|
};
|
|
17
49
|
export { catch_ as catch };
|
|
18
50
|
/**
|
|
19
|
-
*
|
|
51
|
+
* Uses the Effect-style `catchAll` name for {@link catch}.
|
|
52
|
+
*
|
|
53
|
+
* @remarks
|
|
54
|
+
* ## Why
|
|
55
|
+
*
|
|
56
|
+
* The alias lets Effect users apply the same typed-failure recovery vocabulary
|
|
57
|
+
* to Fx without introducing different runtime behavior.
|
|
58
|
+
*
|
|
59
|
+
* ## Ownership and lifetime
|
|
60
|
+
*
|
|
61
|
+
* It has exactly the source/fallback switching, failure, service, and
|
|
62
|
+
* interruption semantics of {@link catch}; it allocates no wrapper resource
|
|
63
|
+
* beyond that combinator.
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* ```ts
|
|
67
|
+
* import { catchAll } from "@typed/fx/Fx"
|
|
68
|
+
* import { fail, succeed } from "@typed/fx/Fx"
|
|
69
|
+
*
|
|
70
|
+
* const recovered = catchAll(fail("missing"), () => succeed("default"))
|
|
71
|
+
* ```
|
|
20
72
|
*
|
|
21
73
|
* @since 1.0.0
|
|
22
|
-
* @category
|
|
74
|
+
* @category Errors and recovery
|
|
23
75
|
*/
|
|
24
76
|
export declare const catchAll: {
|
|
25
77
|
<E, A2, E2, R2>(f: (e: E) => Fx<A2, E2, R2>): <A, R>(self: Fx<A, E, R>) => Fx<A | A2, E2, R | R2>;
|
|
26
78
|
<A, E, R, A2, E2, R2>(self: Fx<A, E, R>, f: (e: E) => Fx<A2, E2, R2>): Fx<A | A2, E2, R | R2>;
|
|
27
79
|
};
|
|
28
80
|
/**
|
|
29
|
-
* Recovers from
|
|
30
|
-
*
|
|
81
|
+
* Recovers from any failure cause by running a fallback Fx.
|
|
82
|
+
*
|
|
83
|
+
* @remarks
|
|
84
|
+
* ## Why
|
|
85
|
+
*
|
|
86
|
+
* A full `Cause` retains typed failures, defects, interruption, and composed
|
|
87
|
+
* causes. Handling that structure explicitly is necessary at boundaries that
|
|
88
|
+
* must translate every termination mode rather than only expected errors.
|
|
31
89
|
*
|
|
32
|
-
*
|
|
90
|
+
* ## Ownership and lifetime
|
|
91
|
+
*
|
|
92
|
+
* The handler runs once after the source reports a cause and its returned Fx
|
|
93
|
+
* continues in the same subscription. It receives the cause unchanged. Values
|
|
94
|
+
* emitted before failure are not replayed, and the fallback's errors and
|
|
95
|
+
* services replace the recovered source error and join its requirements.
|
|
96
|
+
* Because interruption is catchable here, use this only when intentionally
|
|
97
|
+
* translating interruption rather than for ordinary typed recovery.
|
|
98
|
+
*
|
|
99
|
+
* @example
|
|
100
|
+
* ```ts
|
|
101
|
+
* import { Cause } from "effect"
|
|
102
|
+
* import { catchCause } from "@typed/fx/Fx"
|
|
103
|
+
* import { failCause, succeed } from "@typed/fx/Fx"
|
|
104
|
+
*
|
|
105
|
+
* const reported = catchCause(failCause(Cause.die("boom")), (cause) =>
|
|
106
|
+
* succeed(Cause.pretty(cause))
|
|
107
|
+
* )
|
|
108
|
+
* ```
|
|
33
109
|
*
|
|
34
110
|
* @since 1.0.0
|
|
35
|
-
* @category
|
|
111
|
+
* @category Errors and recovery
|
|
36
112
|
*/
|
|
37
113
|
export declare const catchCause: {
|
|
38
114
|
<E, A2, E2, R2>(f: (cause: Cause.Cause<E>) => Fx<A2, E2, R2>): <A, R>(self: Fx<A, E, R>) => Fx<A | A2, E2, R | R2>;
|
|
39
115
|
<A, E, R, A2, E2, R2>(self: Fx<A, E, R>, f: (cause: Cause.Cause<E>) => Fx<A2, E2, R2>): Fx<A | A2, E2, R | R2>;
|
|
40
116
|
};
|
|
41
117
|
/**
|
|
42
|
-
* Recovers
|
|
118
|
+
* Recovers selected tagged typed failures by running a fallback Fx.
|
|
119
|
+
*
|
|
120
|
+
* @remarks
|
|
121
|
+
* ## Why
|
|
43
122
|
*
|
|
44
|
-
*
|
|
123
|
+
* Tagged error unions are idiomatic Effect APIs. Selecting one or more tags
|
|
124
|
+
* narrows the handler input and removes only those variants from the returned
|
|
125
|
+
* error channel, preserving the rest for later composition.
|
|
126
|
+
*
|
|
127
|
+
* ## Ownership and lifetime
|
|
128
|
+
*
|
|
129
|
+
* The source owns the subscription until its Cause contains a Fail whose tag
|
|
130
|
+
* matches. That first matching Fail starts one handler Fx and replaces the
|
|
131
|
+
* entire original Cause, including any defects or interrupts composed with it.
|
|
132
|
+
* A Cause with no Fail, or a first Fail with another tag, passes through intact.
|
|
133
|
+
* The fallback is lazy and contributes its errors and services to the result.
|
|
134
|
+
*
|
|
135
|
+
* @example
|
|
136
|
+
* ```ts
|
|
137
|
+
* import { catchTag } from "@typed/fx/Fx"
|
|
138
|
+
* import { fail, succeed } from "@typed/fx/Fx"
|
|
139
|
+
*
|
|
140
|
+
* type Missing = { readonly _tag: "Missing"; readonly id: string }
|
|
141
|
+
* const source = fail<Missing>({ _tag: "Missing", id: "42" })
|
|
142
|
+
* const recovered = catchTag(source, "Missing", ({ id }) => succeed(`missing:${id}`))
|
|
143
|
+
* ```
|
|
45
144
|
*
|
|
46
145
|
* @since 1.0.0
|
|
47
|
-
* @category
|
|
146
|
+
* @category Errors and recovery
|
|
48
147
|
*/
|
|
49
148
|
export declare const catchTag: {
|
|
50
149
|
<const K extends Tags<E> | Arr.NonEmptyReadonlyArray<Tags<E>>, E, A2, E2, R2>(k: K, f: (e: ExtractTag<NoInfer<E>, K extends Arr.NonEmptyReadonlyArray<string> ? K[number] : K>) => Fx<A2, E2, R2>): <A, R>(self: Fx<A, E, R>) => Fx<A | A2, E2 | ExcludeTag<E, K extends Arr.NonEmptyReadonlyArray<string> ? K[number] : K>, R | R2>;
|
|
51
150
|
<A, E, R, const K extends Tags<E> | Arr.NonEmptyReadonlyArray<Tags<E>>, A2, E2, R2>(self: Fx<A, E, R>, k: K, f: (e: ExtractTag<E, K extends Arr.NonEmptyReadonlyArray<string> ? K[number] : K>) => Fx<A2, E2, R2>): Fx<A | A2, E2 | ExcludeTag<E, K extends Arr.NonEmptyReadonlyArray<string> ? K[number] : K>, R | R2>;
|
|
52
151
|
};
|
|
53
152
|
/**
|
|
54
|
-
* Recovers
|
|
55
|
-
*
|
|
153
|
+
* Recovers a typed failure only when a predicate accepts it.
|
|
154
|
+
*
|
|
155
|
+
* @remarks
|
|
156
|
+
* ## Why
|
|
56
157
|
*
|
|
57
|
-
*
|
|
158
|
+
* Some typed errors are distinguished by values rather than tags. Predicate
|
|
159
|
+
* recovery handles that subset while retaining `E` in the result because a
|
|
160
|
+
* rejected error can still escape.
|
|
161
|
+
*
|
|
162
|
+
* ## Ownership and lifetime
|
|
163
|
+
*
|
|
164
|
+
* The predicate is evaluated on the first Fail found anywhere in the source
|
|
165
|
+
* Cause. A match starts one lazy fallback and replaces that entire Cause,
|
|
166
|
+
* including any defects or interrupts composed with the Fail. A rejection, or
|
|
167
|
+
* a Cause containing no Fail, forwards the original Cause unchanged. The
|
|
168
|
+
* fallback contributes its errors and services and shares the subscription.
|
|
169
|
+
*
|
|
170
|
+
* @example
|
|
171
|
+
* ```ts
|
|
172
|
+
* import { catchIf } from "@typed/fx/Fx"
|
|
173
|
+
* import { fail, succeed } from "@typed/fx/Fx"
|
|
174
|
+
*
|
|
175
|
+
* const recovered = catchIf(fail(404), (status) => status === 404, () => succeed("missing"))
|
|
176
|
+
* ```
|
|
58
177
|
*
|
|
59
178
|
* @since 1.0.0
|
|
60
|
-
* @category
|
|
179
|
+
* @category Errors and recovery
|
|
61
180
|
*/
|
|
62
181
|
export declare const catchIf: {
|
|
63
182
|
<E, A2, E2, R2>(predicate: (e: E) => boolean, f: (e: E) => Fx<A2, E2, R2>): <A, R>(self: Fx<A, E, R>) => Fx<A | A2, E | E2, R | R2>;
|
|
64
183
|
<A, E, R, A2, E2, R2>(self: Fx<A, E, R>, predicate: (e: E) => boolean, f: (e: E) => Fx<A2, E2, R2>): Fx<A | A2, E | E2, R | R2>;
|
|
65
184
|
};
|
|
66
185
|
/**
|
|
67
|
-
* Recovers
|
|
68
|
-
*
|
|
186
|
+
* Recovers a failure cause only when a predicate accepts the complete cause.
|
|
187
|
+
*
|
|
188
|
+
* @remarks
|
|
189
|
+
* ## Why
|
|
69
190
|
*
|
|
70
|
-
*
|
|
191
|
+
* Cause-level predicates can distinguish defects, interruption, sequential or
|
|
192
|
+
* parallel cause structure that a typed-error predicate cannot observe.
|
|
193
|
+
*
|
|
194
|
+
* ## Ownership and lifetime
|
|
195
|
+
*
|
|
196
|
+
* The predicate receives the source cause unchanged. A match starts one lazy
|
|
197
|
+
* fallback in the same subscription; otherwise the original cause propagates.
|
|
198
|
+
* The fallback's requirements and errors are added, prior source values stay
|
|
199
|
+
* delivered, and interrupting the returned Fx interrupts its active run.
|
|
200
|
+
*
|
|
201
|
+
* @example
|
|
202
|
+
* ```ts
|
|
203
|
+
* import { Cause } from "effect"
|
|
204
|
+
* import { catchCauseIf } from "@typed/fx/Fx"
|
|
205
|
+
* import { failCause, succeed } from "@typed/fx/Fx"
|
|
206
|
+
*
|
|
207
|
+
* const recovered = catchCauseIf(
|
|
208
|
+
* failCause(Cause.die("bad decoder")),
|
|
209
|
+
* Cause.hasDies,
|
|
210
|
+
* () => succeed("reported")
|
|
211
|
+
* )
|
|
212
|
+
* ```
|
|
71
213
|
*
|
|
72
214
|
* @since 1.0.0
|
|
73
|
-
* @category
|
|
215
|
+
* @category Errors and recovery
|
|
74
216
|
*/
|
|
75
217
|
export declare const catchCauseIf: {
|
|
76
218
|
<E, A2, E2, R2>(predicate: (cause: Cause.Cause<E>) => boolean, f: (cause: Cause.Cause<E>) => Fx<A2, E2, R2>): <A, R>(self: Fx<A, E, R>) => Fx<A | A2, E | E2, R | R2>;
|
|
@@ -83,32 +225,63 @@ type TaggedCase<E> = {
|
|
|
83
225
|
_tag: K;
|
|
84
226
|
}>) => Fx<unknown, unknown, unknown>;
|
|
85
227
|
};
|
|
228
|
+
type CaseSuccess<T> = T extends (error: never) => Fx<infer A, infer _E, infer _R> ? A : never;
|
|
229
|
+
type CaseError<T> = T extends (error: never) => Fx<infer _A, infer E, infer _R> ? E : never;
|
|
230
|
+
type CaseServices<T> = T extends (error: never) => Fx<infer _A, infer _E, infer R> ? R : never;
|
|
86
231
|
/**
|
|
87
|
-
* Recovers
|
|
232
|
+
* Recovers several tagged typed-error variants with one handler table.
|
|
233
|
+
*
|
|
234
|
+
* @remarks
|
|
235
|
+
* ## Why
|
|
236
|
+
*
|
|
237
|
+
* A handler table keeps multi-variant recovery exhaustive and preserves the
|
|
238
|
+
* precise success, error, and service unions produced by each selected case.
|
|
239
|
+
* Unlisted variants remain visible in the returned error channel.
|
|
240
|
+
*
|
|
241
|
+
* ## Ownership and lifetime
|
|
242
|
+
*
|
|
243
|
+
* The first Fail found anywhere in the source Cause is inspected. A listed tag
|
|
244
|
+
* starts exactly one handler Fx and replaces the entire original Cause,
|
|
245
|
+
* including any defects or interrupts composed with that Fail. An untagged or
|
|
246
|
+
* unlisted first Fail, or a Cause with no Fail, propagates intact. Handlers are
|
|
247
|
+
* lazy and contribute their individual errors and service requirements.
|
|
248
|
+
*
|
|
249
|
+
* @example
|
|
250
|
+
* ```ts
|
|
251
|
+
* import { catchTags } from "@typed/fx/Fx"
|
|
252
|
+
* import { fail, succeed } from "@typed/fx/Fx"
|
|
88
253
|
*
|
|
89
|
-
*
|
|
254
|
+
* type Failure =
|
|
255
|
+
* | { readonly _tag: "Missing"; readonly id: string }
|
|
256
|
+
* | { readonly _tag: "Forbidden" }
|
|
257
|
+
* const source = fail<Failure>({ _tag: "Missing", id: "42" })
|
|
258
|
+
* const recovered = catchTags(source, {
|
|
259
|
+
* Missing: ({ id }) => succeed(`missing:${id}`),
|
|
260
|
+
* Forbidden: () => succeed("forbidden")
|
|
261
|
+
* })
|
|
262
|
+
* ```
|
|
90
263
|
*
|
|
91
264
|
* @since 1.0.0
|
|
92
|
-
* @category
|
|
265
|
+
* @category Errors and recovery
|
|
93
266
|
*/
|
|
94
267
|
export declare const catchTags: {
|
|
95
268
|
<E, Cases extends TaggedCase<E>>(cases: Cases): <A, R>(self: Fx<A, E, R>) => Fx<A | {
|
|
96
|
-
[K in keyof Cases]: Cases[K]
|
|
269
|
+
[K in keyof Cases]: CaseSuccess<Cases[K]>;
|
|
97
270
|
}[keyof Cases], Exclude<E, {
|
|
98
271
|
_tag: keyof Cases;
|
|
99
272
|
}> | {
|
|
100
|
-
[K in keyof Cases]: Cases[K]
|
|
273
|
+
[K in keyof Cases]: CaseError<Cases[K]>;
|
|
101
274
|
}[keyof Cases], R | {
|
|
102
|
-
[K in keyof Cases]: Cases[K]
|
|
275
|
+
[K in keyof Cases]: CaseServices<Cases[K]>;
|
|
103
276
|
}[keyof Cases]>;
|
|
104
277
|
<A, E, R, Cases extends TaggedCase<E>>(self: Fx<A, E, R>, cases: Cases): Fx<A | {
|
|
105
|
-
[K in keyof Cases]: Cases[K]
|
|
278
|
+
[K in keyof Cases]: CaseSuccess<Cases[K]>;
|
|
106
279
|
}[keyof Cases], Exclude<E, {
|
|
107
280
|
_tag: keyof Cases;
|
|
108
281
|
}> | {
|
|
109
|
-
[K in keyof Cases]: Cases[K]
|
|
282
|
+
[K in keyof Cases]: CaseError<Cases[K]>;
|
|
110
283
|
}[keyof Cases], R | {
|
|
111
|
-
[K in keyof Cases]: Cases[K]
|
|
284
|
+
[K in keyof Cases]: CaseServices<Cases[K]>;
|
|
112
285
|
}[keyof Cases]>;
|
|
113
286
|
};
|
|
114
287
|
//# sourceMappingURL=catch.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catch.d.ts","sourceRoot":"","sources":["../../../src/Fx/combinators/catch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,cAAc,CAAC;AACzC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAGtC,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAG1E,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAiBnC
|
|
1
|
+
{"version":3,"file":"catch.d.ts","sourceRoot":"","sources":["../../../src/Fx/combinators/catch.ts"],"names":[],"mappings":"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"}
|