@typed/fx 2.0.0-beta.3 → 2.0.0-beta.5
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 +34 -20
- package/dist/Fx/Fx.d.ts +364 -12
- package/dist/Fx/Fx.d.ts.map +1 -1
- package/dist/Fx/Fx.js +37 -6
- package/dist/Fx/TypeId.d.ts +49 -3
- package/dist/Fx/TypeId.d.ts.map +1 -1
- package/dist/Fx/TypeId.js +39 -2
- package/dist/Fx/combinators/additive.d.ts +156 -5
- package/dist/Fx/combinators/additive.d.ts.map +1 -1
- package/dist/Fx/combinators/additive.js +156 -5
- package/dist/Fx/combinators/catch.d.ts +195 -22
- package/dist/Fx/combinators/catch.d.ts.map +1 -1
- package/dist/Fx/combinators/catch.js +186 -16
- package/dist/Fx/combinators/causes.d.ts +24 -1
- package/dist/Fx/combinators/causes.d.ts.map +1 -1
- package/dist/Fx/combinators/causes.js +24 -1
- package/dist/Fx/combinators/changesWithEffect.d.ts +20 -0
- package/dist/Fx/combinators/changesWithEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/changesWithEffect.js +20 -0
- package/dist/Fx/combinators/compact.d.ts +17 -0
- package/dist/Fx/combinators/compact.d.ts.map +1 -1
- package/dist/Fx/combinators/compact.js +17 -0
- 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 +109 -1
- package/dist/Fx/combinators/continueWith.d.ts.map +1 -1
- package/dist/Fx/combinators/continueWith.js +109 -1
- 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 +34 -0
- package/dist/Fx/combinators/delay.d.ts.map +1 -0
- package/dist/Fx/combinators/delay.js +31 -0
- package/dist/Fx/combinators/dropUntil.d.ts +42 -0
- package/dist/Fx/combinators/dropUntil.d.ts.map +1 -1
- package/dist/Fx/combinators/dropUntil.js +42 -0
- 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 +33 -3
- package/dist/Fx/combinators/ensuring.d.ts.map +1 -1
- package/dist/Fx/combinators/ensuring.js +33 -3
- package/dist/Fx/combinators/exhaustLatestMap.d.ts +40 -4
- package/dist/Fx/combinators/exhaustLatestMap.d.ts.map +1 -1
- package/dist/Fx/combinators/exhaustLatestMap.js +40 -4
- package/dist/Fx/combinators/exhaustLatestMapEffect.d.ts +39 -3
- package/dist/Fx/combinators/exhaustLatestMapEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/exhaustLatestMapEffect.js +39 -3
- package/dist/Fx/combinators/exhaustMap.d.ts +37 -0
- package/dist/Fx/combinators/exhaustMap.d.ts.map +1 -1
- package/dist/Fx/combinators/exhaustMap.js +37 -0
- package/dist/Fx/combinators/exhaustMapEffect.d.ts +32 -0
- package/dist/Fx/combinators/exhaustMapEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/exhaustMapEffect.js +32 -0
- package/dist/Fx/combinators/exit.d.ts +22 -1
- package/dist/Fx/combinators/exit.d.ts.map +1 -1
- package/dist/Fx/combinators/exit.js +22 -1
- package/dist/Fx/combinators/filter.d.ts +16 -0
- package/dist/Fx/combinators/filter.d.ts.map +1 -1
- package/dist/Fx/combinators/filter.js +16 -0
- package/dist/Fx/combinators/filterEffect.d.ts +21 -0
- package/dist/Fx/combinators/filterEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/filterEffect.js +21 -0
- package/dist/Fx/combinators/filterMap.d.ts +19 -0
- package/dist/Fx/combinators/filterMap.d.ts.map +1 -1
- package/dist/Fx/combinators/filterMap.js +19 -0
- package/dist/Fx/combinators/filterMapEffect.d.ts +20 -0
- package/dist/Fx/combinators/filterMapEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/filterMapEffect.js +20 -0
- package/dist/Fx/combinators/filterMapLoop.d.ts +19 -0
- package/dist/Fx/combinators/filterMapLoop.d.ts.map +1 -1
- package/dist/Fx/combinators/filterMapLoop.js +19 -0
- package/dist/Fx/combinators/filterMapLoopCause.d.ts +20 -0
- package/dist/Fx/combinators/filterMapLoopCause.d.ts.map +1 -1
- package/dist/Fx/combinators/filterMapLoopCause.js +20 -0
- package/dist/Fx/combinators/filterMapLoopCauseEffect.d.ts +20 -0
- package/dist/Fx/combinators/filterMapLoopCauseEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/filterMapLoopCauseEffect.js +20 -0
- package/dist/Fx/combinators/filterMapLoopEffect.d.ts +20 -0
- package/dist/Fx/combinators/filterMapLoopEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/filterMapLoopEffect.js +20 -0
- package/dist/Fx/combinators/flatMap.d.ts +48 -3
- package/dist/Fx/combinators/flatMap.d.ts.map +1 -1
- package/dist/Fx/combinators/flatMap.js +35 -2
- package/dist/Fx/combinators/flatMapConcurrently.d.ts +50 -3
- package/dist/Fx/combinators/flatMapConcurrently.d.ts.map +1 -1
- package/dist/Fx/combinators/flatMapConcurrently.js +47 -1
- package/dist/Fx/combinators/flatMapConcurrentlyEffect.d.ts +47 -3
- package/dist/Fx/combinators/flatMapConcurrentlyEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/flatMapConcurrentlyEffect.js +39 -1
- package/dist/Fx/combinators/flatMapEffect.d.ts +44 -2
- package/dist/Fx/combinators/flatMapEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/flatMapEffect.js +31 -1
- package/dist/Fx/combinators/flip.d.ts +33 -1
- package/dist/Fx/combinators/flip.d.ts.map +1 -1
- package/dist/Fx/combinators/flip.js +33 -1
- package/dist/Fx/combinators/gen.d.ts +28 -9
- package/dist/Fx/combinators/gen.d.ts.map +1 -1
- package/dist/Fx/combinators/gen.js +27 -3
- package/dist/Fx/combinators/genScoped.d.ts +32 -9
- package/dist/Fx/combinators/genScoped.d.ts.map +1 -1
- package/dist/Fx/combinators/genScoped.js +30 -2
- 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 +121 -7
- package/dist/Fx/combinators/keyed.d.ts.map +1 -1
- package/dist/Fx/combinators/keyed.js +68 -10
- package/dist/Fx/combinators/loop.d.ts +16 -0
- package/dist/Fx/combinators/loop.d.ts.map +1 -1
- package/dist/Fx/combinators/loop.js +16 -0
- package/dist/Fx/combinators/loopCause.d.ts +17 -0
- package/dist/Fx/combinators/loopCause.d.ts.map +1 -1
- package/dist/Fx/combinators/loopCause.js +17 -0
- package/dist/Fx/combinators/loopCauseEffect.d.ts +18 -0
- package/dist/Fx/combinators/loopCauseEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/loopCauseEffect.js +18 -0
- package/dist/Fx/combinators/loopEffect.d.ts +23 -0
- package/dist/Fx/combinators/loopEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/loopEffect.js +23 -0
- package/dist/Fx/combinators/map.d.ts +45 -0
- package/dist/Fx/combinators/map.d.ts.map +1 -1
- package/dist/Fx/combinators/map.js +42 -0
- package/dist/Fx/combinators/mapBoth.d.ts +19 -0
- package/dist/Fx/combinators/mapBoth.d.ts.map +1 -1
- package/dist/Fx/combinators/mapBoth.js +19 -0
- package/dist/Fx/combinators/mapEffect.d.ts +24 -0
- package/dist/Fx/combinators/mapEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/mapEffect.js +24 -0
- package/dist/Fx/combinators/mapError.d.ts +20 -4
- package/dist/Fx/combinators/mapError.d.ts.map +1 -1
- package/dist/Fx/combinators/mapError.js +20 -4
- package/dist/Fx/combinators/mergeAll.d.ts +34 -0
- package/dist/Fx/combinators/mergeAll.d.ts.map +1 -1
- package/dist/Fx/combinators/mergeAll.js +34 -0
- package/dist/Fx/combinators/mergeOrdered.d.ts +35 -3
- package/dist/Fx/combinators/mergeOrdered.d.ts.map +1 -1
- package/dist/Fx/combinators/mergeOrdered.js +35 -3
- package/dist/Fx/combinators/onError.d.ts +33 -3
- package/dist/Fx/combinators/onError.d.ts.map +1 -1
- package/dist/Fx/combinators/onError.js +33 -3
- package/dist/Fx/combinators/onExit.d.ts +28 -2
- package/dist/Fx/combinators/onExit.d.ts.map +1 -1
- package/dist/Fx/combinators/onExit.js +28 -2
- package/dist/Fx/combinators/onInterrupt.d.ts +48 -3
- package/dist/Fx/combinators/onInterrupt.d.ts.map +1 -1
- package/dist/Fx/combinators/onInterrupt.js +48 -3
- 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 +138 -17
- package/dist/Fx/combinators/provide.d.ts.map +1 -1
- package/dist/Fx/combinators/provide.js +134 -13
- 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 +22 -0
- package/dist/Fx/combinators/result.d.ts.map +1 -1
- package/dist/Fx/combinators/result.js +26 -12
- 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 +39 -0
- package/dist/Fx/combinators/scan.d.ts.map +1 -1
- package/dist/Fx/combinators/scan.js +41 -2
- 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 +31 -0
- package/dist/Fx/combinators/skip.d.ts.map +1 -1
- package/dist/Fx/combinators/skip.js +31 -0
- package/dist/Fx/combinators/skipRepeats.d.ts +16 -0
- package/dist/Fx/combinators/skipRepeats.d.ts.map +1 -1
- package/dist/Fx/combinators/skipRepeats.js +16 -0
- package/dist/Fx/combinators/skipRepeatsWith.d.ts +17 -0
- package/dist/Fx/combinators/skipRepeatsWith.d.ts.map +1 -1
- package/dist/Fx/combinators/skipRepeatsWith.js +17 -0
- package/dist/Fx/combinators/skipWhile.d.ts +68 -0
- package/dist/Fx/combinators/skipWhile.d.ts.map +1 -1
- package/dist/Fx/combinators/skipWhile.js +68 -0
- package/dist/Fx/combinators/slice.d.ts +82 -0
- package/dist/Fx/combinators/slice.d.ts.map +1 -1
- package/dist/Fx/combinators/slice.js +33 -0
- package/dist/Fx/combinators/switchMap.d.ts +38 -0
- package/dist/Fx/combinators/switchMap.d.ts.map +1 -1
- package/dist/Fx/combinators/switchMap.js +42 -4
- package/dist/Fx/combinators/switchMapEffect.d.ts +37 -0
- package/dist/Fx/combinators/switchMapEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/switchMapEffect.js +37 -0
- package/dist/Fx/combinators/take.d.ts +32 -0
- package/dist/Fx/combinators/take.d.ts.map +1 -1
- package/dist/Fx/combinators/take.js +32 -0
- package/dist/Fx/combinators/takeUntil.d.ts +46 -0
- package/dist/Fx/combinators/takeUntil.d.ts.map +1 -1
- package/dist/Fx/combinators/takeUntil.js +46 -0
- package/dist/Fx/combinators/takeWhile.d.ts +31 -0
- package/dist/Fx/combinators/takeWhile.d.ts.map +1 -1
- package/dist/Fx/combinators/takeWhile.js +31 -0
- package/dist/Fx/combinators/tapEffect.d.ts +16 -0
- package/dist/Fx/combinators/tapEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/tapEffect.js +16 -0
- 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 +30 -0
- package/dist/Fx/combinators/tuple.d.ts.map +1 -1
- package/dist/Fx/combinators/tuple.js +34 -3
- 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 +29 -0
- package/dist/Fx/combinators/unwrap.d.ts.map +1 -1
- package/dist/Fx/combinators/unwrap.js +29 -0
- package/dist/Fx/combinators/unwrapScoped.d.ts +33 -0
- package/dist/Fx/combinators/unwrapScoped.d.ts.map +1 -1
- package/dist/Fx/combinators/unwrapScoped.js +33 -0
- package/dist/Fx/combinators/when.d.ts +35 -0
- package/dist/Fx/combinators/when.d.ts.map +1 -1
- package/dist/Fx/combinators/when.js +36 -1
- 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 +60 -0
- package/dist/Fx/combinators/zip.d.ts.map +1 -1
- package/dist/Fx/combinators/zip.js +60 -0
- package/dist/Fx/constructors/at.d.ts +20 -0
- package/dist/Fx/constructors/at.d.ts.map +1 -1
- package/dist/Fx/constructors/at.js +20 -0
- package/dist/Fx/constructors/die.d.ts +21 -0
- package/dist/Fx/constructors/die.d.ts.map +1 -1
- package/dist/Fx/constructors/die.js +21 -0
- package/dist/Fx/constructors/empty.d.ts +18 -0
- package/dist/Fx/constructors/empty.d.ts.map +1 -1
- package/dist/Fx/constructors/empty.js +18 -0
- package/dist/Fx/constructors/fail.d.ts +21 -0
- package/dist/Fx/constructors/fail.d.ts.map +1 -1
- package/dist/Fx/constructors/fail.js +21 -0
- package/dist/Fx/constructors/failCause.d.ts +22 -0
- package/dist/Fx/constructors/failCause.d.ts.map +1 -1
- package/dist/Fx/constructors/failCause.js +22 -0
- package/dist/Fx/constructors/fn.d.ts +113 -13
- 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 +43 -1
- package/dist/Fx/constructors/fromEffect.d.ts.map +1 -1
- package/dist/Fx/constructors/fromEffect.js +43 -1
- package/dist/Fx/constructors/fromFailures.d.ts +24 -0
- package/dist/Fx/constructors/fromFailures.d.ts.map +1 -1
- package/dist/Fx/constructors/fromFailures.js +24 -0
- package/dist/Fx/constructors/fromIterable.d.ts +22 -0
- package/dist/Fx/constructors/fromIterable.d.ts.map +1 -1
- package/dist/Fx/constructors/fromIterable.js +22 -0
- package/dist/Fx/constructors/fromSchedule.d.ts +23 -0
- package/dist/Fx/constructors/fromSchedule.d.ts.map +1 -1
- package/dist/Fx/constructors/fromSchedule.js +25 -2
- 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 +21 -1
- package/dist/Fx/constructors/interrupt.d.ts.map +1 -1
- package/dist/Fx/constructors/interrupt.js +21 -1
- package/dist/Fx/constructors/make.d.ts +146 -1
- package/dist/Fx/constructors/make.d.ts.map +1 -1
- package/dist/Fx/constructors/make.js +56 -5
- package/dist/Fx/constructors/periodic.d.ts +29 -0
- package/dist/Fx/constructors/periodic.d.ts.map +1 -1
- package/dist/Fx/constructors/periodic.js +29 -0
- package/dist/Fx/constructors/succeed.d.ts +75 -3
- package/dist/Fx/constructors/succeed.d.ts.map +1 -1
- package/dist/Fx/constructors/succeed.js +75 -3
- 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 +55 -0
- package/dist/Fx/internal/effectableWithOverride.d.ts.map +1 -0
- package/dist/Fx/internal/effectableWithOverride.js +46 -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 +89 -0
- package/dist/Fx/run/collect.d.ts.map +1 -1
- package/dist/Fx/run/collect.js +90 -1
- package/dist/Fx/run/first.d.ts +22 -0
- package/dist/Fx/run/first.d.ts.map +1 -1
- package/dist/Fx/run/first.js +22 -0
- package/dist/Fx/run/fork.d.ts +50 -0
- package/dist/Fx/run/fork.d.ts.map +1 -1
- package/dist/Fx/run/fork.js +50 -0
- package/dist/Fx/run/observe.d.ts +106 -0
- package/dist/Fx/run/observe.d.ts.map +1 -1
- package/dist/Fx/run/observe.js +108 -2
- package/dist/Fx/run/runPromise.d.ts +43 -0
- package/dist/Fx/run/runPromise.d.ts.map +1 -1
- package/dist/Fx/run/runPromise.js +43 -0
- 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 +1219 -94
- package/dist/Push/Push.d.ts.map +1 -1
- package/dist/Push/Push.js +1015 -86
- 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 +351 -4
- package/dist/RefSubject/RefArray.d.ts.map +1 -1
- package/dist/RefSubject/RefArray.js +339 -3
- package/dist/RefSubject/RefBigDecimal.d.ts +221 -1
- package/dist/RefSubject/RefBigDecimal.d.ts.map +1 -1
- package/dist/RefSubject/RefBigDecimal.js +210 -1
- package/dist/RefSubject/RefBigInt.d.ts +166 -1
- package/dist/RefSubject/RefBigInt.d.ts.map +1 -1
- package/dist/RefSubject/RefBigInt.js +155 -1
- package/dist/RefSubject/RefBoolean.d.ts +166 -1
- package/dist/RefSubject/RefBoolean.d.ts.map +1 -1
- package/dist/RefSubject/RefBoolean.js +155 -1
- package/dist/RefSubject/RefCause.d.ts +122 -1
- package/dist/RefSubject/RefCause.d.ts.map +1 -1
- package/dist/RefSubject/RefCause.js +111 -1
- package/dist/RefSubject/RefChunk.d.ts +406 -1
- package/dist/RefSubject/RefChunk.d.ts.map +1 -1
- package/dist/RefSubject/RefChunk.js +394 -0
- package/dist/RefSubject/RefDateTime.d.ts +122 -1
- package/dist/RefSubject/RefDateTime.d.ts.map +1 -1
- package/dist/RefSubject/RefDateTime.js +111 -1
- package/dist/RefSubject/RefDuration.d.ts +155 -1
- package/dist/RefSubject/RefDuration.d.ts.map +1 -1
- package/dist/RefSubject/RefDuration.js +144 -1
- package/dist/RefSubject/RefGraph.d.ts +320 -6
- package/dist/RefSubject/RefGraph.d.ts.map +1 -1
- package/dist/RefSubject/RefGraph.js +303 -0
- package/dist/RefSubject/RefHashMap.d.ts +296 -1
- package/dist/RefSubject/RefHashMap.d.ts.map +1 -1
- package/dist/RefSubject/RefHashMap.js +284 -0
- package/dist/RefSubject/RefHashRing.d.ts +146 -2
- package/dist/RefSubject/RefHashRing.d.ts.map +1 -1
- package/dist/RefSubject/RefHashRing.js +133 -0
- package/dist/RefSubject/RefHashSet.d.ts +230 -1
- package/dist/RefSubject/RefHashSet.d.ts.map +1 -1
- package/dist/RefSubject/RefHashSet.js +218 -0
- package/dist/RefSubject/RefIterable.d.ts +327 -1
- package/dist/RefSubject/RefIterable.d.ts.map +1 -1
- package/dist/RefSubject/RefIterable.js +315 -0
- package/dist/RefSubject/RefOption.d.ts +144 -1
- package/dist/RefSubject/RefOption.d.ts.map +1 -1
- package/dist/RefSubject/RefOption.js +133 -1
- package/dist/RefSubject/RefRecord.d.ts +339 -1
- package/dist/RefSubject/RefRecord.d.ts.map +1 -1
- package/dist/RefSubject/RefRecord.js +327 -0
- package/dist/RefSubject/RefResult.d.ts +155 -23
- package/dist/RefSubject/RefResult.d.ts.map +1 -1
- package/dist/RefSubject/RefResult.js +122 -1
- package/dist/RefSubject/RefString.d.ts +188 -1
- package/dist/RefSubject/RefString.d.ts.map +1 -1
- package/dist/RefSubject/RefString.js +177 -1
- package/dist/RefSubject/RefStruct.d.ts +156 -1
- package/dist/RefSubject/RefStruct.d.ts.map +1 -1
- package/dist/RefSubject/RefStruct.js +145 -1
- package/dist/RefSubject/RefSubject.d.ts +1168 -15
- package/dist/RefSubject/RefSubject.d.ts.map +1 -1
- package/dist/RefSubject/RefSubject.js +850 -58
- package/dist/RefSubject/RefTrie.d.ts +290 -4
- package/dist/RefSubject/RefTrie.d.ts.map +1 -1
- package/dist/RefSubject/RefTrie.js +278 -3
- package/dist/RefSubject/RefTuple.d.ts +117 -1
- package/dist/RefSubject/RefTuple.d.ts.map +1 -1
- package/dist/RefSubject/RefTuple.js +106 -1
- 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 +385 -14
- package/dist/Sink/Sink.d.ts.map +1 -1
- package/dist/Sink/Sink.js +53 -6
- package/dist/Sink/combinators.d.ts +731 -2
- package/dist/Sink/combinators.d.ts.map +1 -1
- package/dist/Sink/combinators.js +707 -5
- package/dist/Subject/Subject.d.ts +1016 -22
- package/dist/Subject/Subject.d.ts.map +1 -1
- package/dist/Subject/Subject.js +904 -39
- package/dist/Versioned/Versioned.d.ts +426 -9
- package/dist/Versioned/Versioned.d.ts.map +1 -1
- package/dist/Versioned/Versioned.js +241 -15
- package/dist/index.d.ts +22 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -3
- package/package.json +120 -11
- 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 -416
- 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 -516
- 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 -516
- package/src/RefSubject/RefDateTime.test.ts +0 -43
- package/src/RefSubject/RefDateTime.ts +0 -261
- package/src/RefSubject/RefDuration.test.ts +0 -49
- package/src/RefSubject/RefDuration.ts +0 -188
- package/src/RefSubject/RefGraph.ts +0 -649
- package/src/RefSubject/RefHashMap.ts +0 -474
- package/src/RefSubject/RefHashRing.ts +0 -262
- package/src/RefSubject/RefHashSet.ts +0 -308
- package/src/RefSubject/RefIterable.ts +0 -454
- package/src/RefSubject/RefOption.test.ts +0 -67
- package/src/RefSubject/RefOption.ts +0 -193
- package/src/RefSubject/RefRecord.ts +0 -621
- 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 -2644
- package/src/RefSubject/RefTrie.ts +0 -365
- 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
package/dist/Sink/Sink.d.ts
CHANGED
|
@@ -3,92 +3,463 @@ import type { Effect } from "effect/Effect";
|
|
|
3
3
|
import type { Layer } from "effect/Layer";
|
|
4
4
|
import type { Ref } from "effect/Ref";
|
|
5
5
|
import type { Scope } from "effect/Scope";
|
|
6
|
-
import * as
|
|
6
|
+
import * as Context from "effect/Context";
|
|
7
7
|
/**
|
|
8
|
-
*
|
|
9
|
-
*
|
|
8
|
+
* Consumes pushed successes and failures through effectful callbacks.
|
|
9
|
+
*
|
|
10
|
+
* @remarks
|
|
11
|
+
* ## Why
|
|
12
|
+
* `Sink` gives an `Fx` producer one uniform destination while retaining Effect's typed service
|
|
13
|
+
* requirements and complete failure `Cause`. The callback effects cannot fail: handling a value or
|
|
14
|
+
* cause is the terminal consumer boundary.
|
|
15
|
+
*
|
|
16
|
+
* ## Ownership and lifetime
|
|
17
|
+
* A sink is inert until a producer invokes one of its callbacks. The producer's fiber controls
|
|
18
|
+
* ordering, interruption, and callback lifetime; services in `R` must be available when callbacks
|
|
19
|
+
* run. `Sink` itself acquires no resources.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```ts
|
|
23
|
+
* import { Effect } from "effect"
|
|
24
|
+
* import * as Sink from "@typed/fx/Sink"
|
|
25
|
+
*
|
|
26
|
+
* const logger: Sink.Sink<number, string> = Sink.make(
|
|
27
|
+
* (cause) => Effect.logError(cause),
|
|
28
|
+
* (value) => Effect.log(`received ${value}`)
|
|
29
|
+
* )
|
|
30
|
+
* ```
|
|
10
31
|
*
|
|
11
32
|
* @since 1.0.0
|
|
12
33
|
* @category models
|
|
13
34
|
*/
|
|
14
35
|
export interface Sink<A, E = never, R = never> {
|
|
36
|
+
/**
|
|
37
|
+
* Handles one successful value.
|
|
38
|
+
*
|
|
39
|
+
* @remarks
|
|
40
|
+
* ## Why
|
|
41
|
+
* The success callback is the value-side consumer boundary used by Fx producers.
|
|
42
|
+
*
|
|
43
|
+
* ## Ownership and lifetime
|
|
44
|
+
* The invoking producer owns ordering and interruption. The returned Effect acquires and releases
|
|
45
|
+
* any resources according to its own services and Scope.
|
|
46
|
+
*
|
|
47
|
+
* @since 1.0.0
|
|
48
|
+
* @category callbacks
|
|
49
|
+
*/
|
|
15
50
|
readonly onSuccess: (value: A) => Effect<unknown, never, R>;
|
|
51
|
+
/**
|
|
52
|
+
* Handles the producer's complete typed failure, defect, or interruption cause.
|
|
53
|
+
*
|
|
54
|
+
* @remarks
|
|
55
|
+
* ## Why
|
|
56
|
+
* Accepting `Cause` retains information that would be lost by an error-only callback.
|
|
57
|
+
*
|
|
58
|
+
* ## Ownership and lifetime
|
|
59
|
+
* The invoking producer owns ordering and interruption. The returned Effect acquires and releases
|
|
60
|
+
* any resources according to its own services and Scope.
|
|
61
|
+
*
|
|
62
|
+
* @since 1.0.0
|
|
63
|
+
* @category callbacks
|
|
64
|
+
*/
|
|
16
65
|
readonly onFailure: (cause: Cause.Cause<E>) => Effect<unknown, never, R>;
|
|
17
66
|
}
|
|
18
67
|
export declare namespace Sink {
|
|
19
68
|
/**
|
|
20
|
-
*
|
|
69
|
+
* Matches any `Sink` when its channels do not need to be preserved.
|
|
70
|
+
*
|
|
71
|
+
* @remarks
|
|
72
|
+
* ## Why
|
|
73
|
+
* Generic utilities sometimes need to constrain a value to the Sink model before recovering its
|
|
74
|
+
* channels with `Success`, `Error`, or `Services`.
|
|
75
|
+
*
|
|
76
|
+
* ## Ownership and lifetime
|
|
77
|
+
* This type alias acquires no resources and does not change the matched sink's lifetime.
|
|
21
78
|
* @since 1.0.0
|
|
22
79
|
* @category models
|
|
23
80
|
*/
|
|
24
81
|
type Any = Sink<any, any, any>;
|
|
25
82
|
/**
|
|
26
|
-
*
|
|
83
|
+
* Extracts the successful input type consumed by a `Sink`.
|
|
84
|
+
*
|
|
85
|
+
* @remarks
|
|
86
|
+
* ## Why
|
|
87
|
+
* Library code can derive a consumer's input without repeating its generic arguments.
|
|
88
|
+
*
|
|
89
|
+
* ## Ownership and lifetime
|
|
90
|
+
* This conditional type is compile-time only and acquires no resources.
|
|
27
91
|
* @since 1.0.0
|
|
28
92
|
* @category type-level
|
|
29
93
|
*/
|
|
30
94
|
type Success<T> = T extends Sink<infer _A, infer _E, infer _R> ? _A : never;
|
|
31
95
|
/**
|
|
32
|
-
*
|
|
96
|
+
* Extracts the typed error carried by causes consumed by a `Sink`.
|
|
97
|
+
*
|
|
98
|
+
* @remarks
|
|
99
|
+
* ## Why
|
|
100
|
+
* It preserves the error-channel relationship when adapting or composing sinks.
|
|
101
|
+
*
|
|
102
|
+
* ## Ownership and lifetime
|
|
103
|
+
* This conditional type is compile-time only and acquires no resources.
|
|
33
104
|
* @since 1.0.0
|
|
34
105
|
* @category type-level
|
|
35
106
|
*/
|
|
36
107
|
type Error<T> = T extends Sink<infer _A, infer _E, infer _R> ? _E : never;
|
|
37
108
|
/**
|
|
38
|
-
*
|
|
109
|
+
* Extracts the Effect services required by a `Sink`'s callbacks.
|
|
110
|
+
*
|
|
111
|
+
* @remarks
|
|
112
|
+
* ## Why
|
|
113
|
+
* It exposes callback dependencies for higher-order utilities without executing the sink.
|
|
114
|
+
*
|
|
115
|
+
* ## Ownership and lifetime
|
|
116
|
+
* This conditional type is compile-time only and acquires no resources.
|
|
39
117
|
* @since 1.0.0
|
|
40
118
|
* @category type-level
|
|
41
119
|
*/
|
|
42
|
-
type
|
|
120
|
+
type Services<T> = T extends Sink<infer _A, infer _E, infer _R> ? _R : never;
|
|
121
|
+
/**
|
|
122
|
+
* Describes a Sink available through an Effect Context service.
|
|
123
|
+
*
|
|
124
|
+
* @remarks
|
|
125
|
+
* ## Why
|
|
126
|
+
* Producers can depend on a named consumer without receiving a concrete sink through every call.
|
|
127
|
+
*
|
|
128
|
+
* ## Ownership and lifetime
|
|
129
|
+
* The installed Layer owns the concrete callback closures. Calls resolve `Self` from the current
|
|
130
|
+
* Effect context; Layer scope owns any services captured while constructing them.
|
|
131
|
+
*
|
|
132
|
+
* @example
|
|
133
|
+
* ```ts
|
|
134
|
+
* import { Effect } from "effect"
|
|
135
|
+
* import * as Sink from "@typed/fx/Sink"
|
|
136
|
+
*
|
|
137
|
+
* class Events extends Sink.Service<Events, string>()("Events") {}
|
|
138
|
+
* const EventsLive = Events.make(Effect.logError, Effect.log)
|
|
139
|
+
* ```
|
|
140
|
+
*
|
|
141
|
+
* @since 1.0.0
|
|
142
|
+
* @category models
|
|
143
|
+
*/
|
|
43
144
|
interface Service<Self, Id extends string, A, E> extends Sink<A, E, Self> {
|
|
145
|
+
/**
|
|
146
|
+
* Stable Context service identifier.
|
|
147
|
+
*
|
|
148
|
+
* @remarks
|
|
149
|
+
* ## Why
|
|
150
|
+
* The literal ID names diagnostics and distinguishes the service tag.
|
|
151
|
+
*
|
|
152
|
+
* ## Ownership and lifetime
|
|
153
|
+
* This immutable string acquires no resources and lives with the service class.
|
|
154
|
+
*
|
|
155
|
+
* @since 1.0.0
|
|
156
|
+
* @category services
|
|
157
|
+
*/
|
|
44
158
|
readonly id: Id;
|
|
45
|
-
|
|
159
|
+
/**
|
|
160
|
+
* Effect Context reference used to install or retrieve the concrete sink.
|
|
161
|
+
*
|
|
162
|
+
* @remarks
|
|
163
|
+
* ## Why
|
|
164
|
+
* The tag connects the class-shaped API to Effect's Context and Layer ecosystem.
|
|
165
|
+
*
|
|
166
|
+
* ## Ownership and lifetime
|
|
167
|
+
* The tag is static and resource-free; the currently provided Layer owns the concrete value.
|
|
168
|
+
*
|
|
169
|
+
* @since 1.0.0
|
|
170
|
+
* @category services
|
|
171
|
+
*/
|
|
172
|
+
readonly service: Context.Service<Self, Sink<A, E>>;
|
|
173
|
+
/**
|
|
174
|
+
* Builds a Layer whose sink callbacks capture their construction services.
|
|
175
|
+
*
|
|
176
|
+
* @remarks
|
|
177
|
+
* ## Why
|
|
178
|
+
* Callback dependencies are resolved once when the Layer is built rather than on every value.
|
|
179
|
+
*
|
|
180
|
+
* ## Ownership and lifetime
|
|
181
|
+
* Layer scope owns captured services. Callback requirements exclude `Scope` because that scope is
|
|
182
|
+
* consumed during Layer construction.
|
|
183
|
+
*
|
|
184
|
+
* @since 1.0.0
|
|
185
|
+
* @category layers
|
|
186
|
+
*/
|
|
46
187
|
readonly make: <R = never>(onFailure: (cause: Cause.Cause<E>) => Effect<unknown, never, R>, onSuccess: (value: A) => Effect<unknown, never, R>) => Layer<Self, never, Exclude<R, Scope>>;
|
|
47
188
|
}
|
|
189
|
+
/**
|
|
190
|
+
* Constructor-shaped Context service returned by `Sink.Service`.
|
|
191
|
+
*
|
|
192
|
+
* @remarks
|
|
193
|
+
* ## Why
|
|
194
|
+
* A class-shaped tag supports standard Effect service declaration syntax while exposing the Sink
|
|
195
|
+
* callbacks directly as static operations.
|
|
196
|
+
*
|
|
197
|
+
* ## Ownership and lifetime
|
|
198
|
+
* Constructing the class returns its service tag; the providing Layer owns the concrete sink.
|
|
199
|
+
*
|
|
200
|
+
* @example
|
|
201
|
+
* ```ts
|
|
202
|
+
* import * as Sink from "@typed/fx/Sink"
|
|
203
|
+
* class Numbers extends Sink.Service<Numbers, number>()("Numbers") {}
|
|
204
|
+
* ```
|
|
205
|
+
*
|
|
206
|
+
* @since 1.0.0
|
|
207
|
+
* @category models
|
|
208
|
+
*/
|
|
48
209
|
interface Class<Self, Id extends string, A, E> extends Service<Self, Id, A, E> {
|
|
210
|
+
/**
|
|
211
|
+
* Returns the service tag rather than allocating a separate sink instance.
|
|
212
|
+
*
|
|
213
|
+
* @remarks
|
|
214
|
+
* ## Why
|
|
215
|
+
* This supports Effect's class declaration syntax while keeping one service identity.
|
|
216
|
+
*
|
|
217
|
+
* ## Ownership and lifetime
|
|
218
|
+
* Construction allocates no consumer resources; the provided Layer owns the concrete sink.
|
|
219
|
+
*
|
|
220
|
+
* @since 1.0.0
|
|
221
|
+
* @category constructors
|
|
222
|
+
*/
|
|
49
223
|
new (): Service<Self, Id, A, E>;
|
|
50
224
|
}
|
|
51
225
|
}
|
|
226
|
+
/**
|
|
227
|
+
* Alias of `Sink.Success` for direct imports.
|
|
228
|
+
*
|
|
229
|
+
* @remarks
|
|
230
|
+
* ## Why
|
|
231
|
+
* Consumers can extract a sink's success type without qualifying the merged namespace.
|
|
232
|
+
*
|
|
233
|
+
* ## Ownership and lifetime
|
|
234
|
+
* This conditional type is compile-time only and acquires no resources.
|
|
235
|
+
*
|
|
236
|
+
* @since 1.0.0
|
|
237
|
+
* @category type-level
|
|
238
|
+
*/
|
|
52
239
|
export type Success<T> = Sink.Success<T>;
|
|
240
|
+
/**
|
|
241
|
+
* Alias of `Sink.Error` for direct imports.
|
|
242
|
+
*
|
|
243
|
+
* @remarks
|
|
244
|
+
* ## Why
|
|
245
|
+
* Consumers can extract a sink's typed failure without qualifying the merged namespace.
|
|
246
|
+
*
|
|
247
|
+
* ## Ownership and lifetime
|
|
248
|
+
* This conditional type is compile-time only and acquires no resources.
|
|
249
|
+
*
|
|
250
|
+
* @since 1.0.0
|
|
251
|
+
* @category type-level
|
|
252
|
+
*/
|
|
53
253
|
export type Error<T> = Sink.Error<T>;
|
|
54
|
-
|
|
254
|
+
/**
|
|
255
|
+
* Alias of `Sink.Services` for direct imports.
|
|
256
|
+
*
|
|
257
|
+
* @remarks
|
|
258
|
+
* ## Why
|
|
259
|
+
* Consumers can extract callback service requirements without qualifying the merged namespace.
|
|
260
|
+
*
|
|
261
|
+
* ## Ownership and lifetime
|
|
262
|
+
* This conditional type is compile-time only and acquires no resources.
|
|
263
|
+
*
|
|
264
|
+
* @since 1.0.0
|
|
265
|
+
* @category type-level
|
|
266
|
+
*/
|
|
267
|
+
export type Services<T> = Sink.Services<T>;
|
|
55
268
|
/**
|
|
56
269
|
* Creates a Sink from success and failure callbacks.
|
|
57
270
|
*
|
|
271
|
+
* @remarks
|
|
272
|
+
* ## Why
|
|
273
|
+
* `make` is the smallest adapter from ordinary Effect programs to an `Fx` consumer.
|
|
274
|
+
*
|
|
275
|
+
* ## Ownership and lifetime
|
|
276
|
+
* Construction is pure and acquires nothing. Each callback runs in producer order and is
|
|
277
|
+
* interrupted with the producer. Requirements from both callbacks are combined in the returned
|
|
278
|
+
* sink; callback defects remain defects, while typed producer failures arrive through `onFailure`.
|
|
279
|
+
*
|
|
58
280
|
* @param onFailure - Callback for handling failures.
|
|
59
281
|
* @param onSuccess - Callback for handling successful values.
|
|
60
282
|
* @returns A `Sink`.
|
|
283
|
+
* @example
|
|
284
|
+
* ```ts
|
|
285
|
+
* import { Effect } from "effect"
|
|
286
|
+
* import * as Sink from "@typed/fx/Sink"
|
|
287
|
+
*
|
|
288
|
+
* const sink = Sink.make(Effect.logError, (value: number) => Effect.log(value))
|
|
289
|
+
* ```
|
|
61
290
|
* @since 1.0.0
|
|
62
291
|
* @category constructors
|
|
63
292
|
*/
|
|
64
|
-
export declare function make<A, E = never, R = never, R2 =
|
|
293
|
+
export declare function make<A, E = never, R = never, R2 = R>(onFailure: (cause: Cause.Cause<E>) => Effect<unknown, never, R>, onSuccess: (value: A) => Effect<unknown, never, R2>): Sink<A, E, R | R2>;
|
|
65
294
|
export declare namespace Sink {
|
|
66
295
|
/**
|
|
67
|
-
* A
|
|
296
|
+
* A sink that can ask its producer callback to stop early.
|
|
297
|
+
*
|
|
298
|
+
* @remarks
|
|
299
|
+
* ## Why
|
|
300
|
+
* Bounded consumers such as `slice` and `dropAfter` need to end production without encoding
|
|
301
|
+
* termination as a typed failure.
|
|
302
|
+
*
|
|
303
|
+
* ## Ownership and lifetime
|
|
304
|
+
* `earlyExit` completes the surrounding consumer effect. Further callback deliveries are ignored;
|
|
305
|
+
* interruption and cleanup remain owned by the surrounding producer effect.
|
|
306
|
+
*
|
|
307
|
+
* @example
|
|
308
|
+
* ```ts
|
|
309
|
+
* import { Effect } from "effect"
|
|
310
|
+
* import type * as Sink from "@typed/fx/Sink"
|
|
311
|
+
* const stop = (sink: Sink.Sink.WithEarlyExit<unknown, never, never>) => sink.earlyExit
|
|
312
|
+
* ```
|
|
68
313
|
* @since 1.0.0
|
|
69
314
|
* @category models
|
|
70
315
|
*/
|
|
71
316
|
interface WithEarlyExit<A, E, R> extends Sink<A, E, R> {
|
|
317
|
+
/**
|
|
318
|
+
* Completes the surrounding early-exit consumer and suppresses later deliveries.
|
|
319
|
+
*
|
|
320
|
+
* @remarks
|
|
321
|
+
* ## Why
|
|
322
|
+
* Normal bounded completion remains distinct from typed producer failure.
|
|
323
|
+
*
|
|
324
|
+
* ## Ownership and lifetime
|
|
325
|
+
* The surrounding `withEarlyExit` execution owns this Effect; running it aborts its callback fiber.
|
|
326
|
+
*
|
|
327
|
+
* @since 1.0.0
|
|
328
|
+
* @category lifecycle
|
|
329
|
+
*/
|
|
72
330
|
readonly earlyExit: Effect<void>;
|
|
73
331
|
}
|
|
74
332
|
/**
|
|
75
|
-
*
|
|
333
|
+
* An early-exit sink with a mutable Effect `Ref` for consumer-local state.
|
|
334
|
+
*
|
|
335
|
+
* @remarks
|
|
336
|
+
* ## Why
|
|
337
|
+
* Stateful consumers can accumulate values without moving that state into the producer.
|
|
338
|
+
*
|
|
339
|
+
* ## Ownership and lifetime
|
|
340
|
+
* The surrounding `withState` invocation creates and owns the Ref. It remains reachable only for
|
|
341
|
+
* that invocation; callback ordering determines the order of state updates.
|
|
342
|
+
*
|
|
343
|
+
* @example
|
|
344
|
+
* ```ts
|
|
345
|
+
* import { Ref } from "effect"
|
|
346
|
+
* import type * as Sink from "@typed/fx/Sink"
|
|
347
|
+
* const increment = (sink: Sink.Sink.WithState<number, never, never, number>) =>
|
|
348
|
+
* Ref.update(sink.state, (n) => n + 1)
|
|
349
|
+
* ```
|
|
76
350
|
* @since 1.0.0
|
|
77
351
|
* @category models
|
|
78
352
|
*/
|
|
79
353
|
interface WithState<A, E, R, B> extends WithEarlyExit<A, E, R> {
|
|
354
|
+
/**
|
|
355
|
+
* Mutable state created for the current consumer invocation.
|
|
356
|
+
*
|
|
357
|
+
* @remarks
|
|
358
|
+
* ## Why
|
|
359
|
+
* Stateful callback logic can use Effect's atomic Ref operations directly.
|
|
360
|
+
*
|
|
361
|
+
* ## Ownership and lifetime
|
|
362
|
+
* `withState` creates this Ref for one execution; it is not shared with later executions.
|
|
363
|
+
*
|
|
364
|
+
* @since 1.0.0
|
|
365
|
+
* @category state
|
|
366
|
+
*/
|
|
80
367
|
readonly state: Ref<B>;
|
|
81
368
|
}
|
|
82
369
|
/**
|
|
83
|
-
*
|
|
370
|
+
* An early-exit sink with serialized effectful access to consumer-local state.
|
|
371
|
+
*
|
|
372
|
+
* @remarks
|
|
373
|
+
* ## Why
|
|
374
|
+
* Effectful reducers may overlap; semaphore-guarded operations prevent lost updates while keeping
|
|
375
|
+
* their typed errors and service requirements visible.
|
|
376
|
+
*
|
|
377
|
+
* ## Ownership and lifetime
|
|
378
|
+
* `withStateSemaphore` owns the mutable cell and semaphore for one invocation. Each modify/update
|
|
379
|
+
* holds one permit until its effect completes or is interrupted, then releases it automatically.
|
|
380
|
+
*
|
|
381
|
+
* @example
|
|
382
|
+
* ```ts
|
|
383
|
+
* import { Effect } from "effect"
|
|
384
|
+
* import type * as Sink from "@typed/fx/Sink"
|
|
385
|
+
* const increment = (sink: Sink.Sink.WithStateSemaphore<number, never, never, number>) =>
|
|
386
|
+
* sink.updateEffect((n) => Effect.succeed(n + 1))
|
|
387
|
+
* ```
|
|
84
388
|
* @since 1.0.0
|
|
85
389
|
* @category models
|
|
86
390
|
*/
|
|
87
391
|
interface WithStateSemaphore<A, E, R, B> extends WithEarlyExit<A, E, R> {
|
|
392
|
+
/**
|
|
393
|
+
* Atomically derives a result and replacement state under the sink's semaphore.
|
|
394
|
+
*
|
|
395
|
+
* @remarks
|
|
396
|
+
* ## Why
|
|
397
|
+
* Returning a separate result avoids a second unlocked read after an update.
|
|
398
|
+
*
|
|
399
|
+
* ## Ownership and lifetime
|
|
400
|
+
* One semaphore permit is held for the entire Effect and released on completion or interruption.
|
|
401
|
+
* The state changes only when the Effect succeeds.
|
|
402
|
+
*
|
|
403
|
+
* @since 1.0.0
|
|
404
|
+
* @category state
|
|
405
|
+
*/
|
|
88
406
|
readonly modifyEffect: <C, E2, R2>(f: (state: B) => Effect<readonly [C, B], E2, R2>) => Effect<C, E | E2, R | R2>;
|
|
407
|
+
/**
|
|
408
|
+
* Atomically replaces state and returns the replacement value.
|
|
409
|
+
*
|
|
410
|
+
* @remarks
|
|
411
|
+
* ## Why
|
|
412
|
+
* It is the direct serialized form of an effectful state transition.
|
|
413
|
+
*
|
|
414
|
+
* ## Ownership and lifetime
|
|
415
|
+
* One semaphore permit is held until the transition completes or is interrupted. Failure leaves
|
|
416
|
+
* the state unchanged.
|
|
417
|
+
*
|
|
418
|
+
* @since 1.0.0
|
|
419
|
+
* @category state
|
|
420
|
+
*/
|
|
89
421
|
readonly updateEffect: <E2, R2>(f: (state: B) => Effect<B, E2, R2>) => Effect<B, E | E2, R | R2>;
|
|
422
|
+
/**
|
|
423
|
+
* Reads the current state under the same semaphore as updates.
|
|
424
|
+
*
|
|
425
|
+
* @remarks
|
|
426
|
+
* ## Why
|
|
427
|
+
* Locked reads cannot observe an in-progress effectful transition.
|
|
428
|
+
*
|
|
429
|
+
* ## Ownership and lifetime
|
|
430
|
+
* The read holds one permit briefly and acquires no resource beyond the invocation-owned semaphore.
|
|
431
|
+
*
|
|
432
|
+
* @since 1.0.0
|
|
433
|
+
* @category state
|
|
434
|
+
*/
|
|
90
435
|
readonly get: Effect<B, E, R>;
|
|
91
436
|
}
|
|
92
437
|
}
|
|
438
|
+
/**
|
|
439
|
+
* Defines a class-shaped Effect Context service for a Sink.
|
|
440
|
+
*
|
|
441
|
+
* @remarks
|
|
442
|
+
* ## Why
|
|
443
|
+
* A service sink lets producers emit toward an application capability while Layers choose the
|
|
444
|
+
* concrete destination, such as logging, persistence, or UI output.
|
|
445
|
+
*
|
|
446
|
+
* ## Ownership and lifetime
|
|
447
|
+
* Definition is pure. `Class.make` captures its construction context into the sink callbacks and
|
|
448
|
+
* returns a Layer; providing that Layer controls availability and cleanup of captured scoped
|
|
449
|
+
* services. Each static callback lookup uses the current Effect context.
|
|
450
|
+
*
|
|
451
|
+
* @example
|
|
452
|
+
* ```ts
|
|
453
|
+
* import { Effect } from "effect"
|
|
454
|
+
* import * as Sink from "@typed/fx/Sink"
|
|
455
|
+
*
|
|
456
|
+
* class Output extends Sink.Service<Output, string>()("Output") {}
|
|
457
|
+
* const OutputLive = Output.make(Effect.logError, Effect.log)
|
|
458
|
+
* const program = Output.onSuccess("ready").pipe(Effect.provide(OutputLive))
|
|
459
|
+
* ```
|
|
460
|
+
*
|
|
461
|
+
* @since 1.0.0
|
|
462
|
+
* @category constructors
|
|
463
|
+
*/
|
|
93
464
|
export declare function Service<Self, A, E = never>(): <const Id extends string>(id: Id) => Sink.Class<Self, Id, A, E>;
|
|
94
465
|
//# sourceMappingURL=Sink.d.ts.map
|
package/dist/Sink/Sink.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sink.d.ts","sourceRoot":"","sources":["../../src/Sink/Sink.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"Sink.d.ts","sourceRoot":"","sources":["../../src/Sink/Sink.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAE1C;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,WAAW,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK;IAC3C;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAC5D;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;CAC1E;AAED,MAAM,CAAC,OAAO,WAAW,IAAI,CAAC;IAC5B;;;;;;;;;;;;OAYG;IACH,KAAY,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAEtC;;;;;;;;;;;OAWG;IACH,KAAY,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;IAEnF;;;;;;;;;;;OAWG;IACH,KAAY,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;IAEjF;;;;;;;;;;;OAWG;IACH,KAAY,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;IAEpF;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,UAAiB,OAAO,CAAC,IAAI,EAAE,EAAE,SAAS,MAAM,EAAE,CAAC,EAAE,CAAC,CAAE,SAAQ,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC;QAC9E;;;;;;;;;;;;WAYG;QACH,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC;QAChB;;;;;;;;;;;;WAYG;QACH,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACpD;;;;;;;;;;;;;WAaG;QACH,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,KAAK,EACvB,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,EAC/D,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,KAC/C,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;KAC5C;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACH,UAAiB,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,MAAM,EAAE,CAAC,EAAE,CAAC,CAAE,SAAQ,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;QACnF;;;;;;;;;;;;WAYG;QACH,QAAQ,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;KACjC;CACF;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACzC;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACrC;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAE3C;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,EAAE,EAAE,GAAG,CAAC,EAClD,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,EAC/D,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,GAClD,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAKpB;AAED,MAAM,CAAC,OAAO,WAAW,IAAI,CAAC;IAC5B;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,UAAiB,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,SAAQ,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC3D;;;;;;;;;;;;WAYG;QACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;KAClC;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,UAAiB,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,SAAQ,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACnE;;;;;;;;;;;;WAYG;QACH,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;KACxB;IAED;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,UAAiB,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,SAAQ,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC5E;;;;;;;;;;;;;WAaG;QACH,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAC/B,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,KAC7C,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;QAE/B;;;;;;;;;;;;;WAaG;QACH,QAAQ,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE,EAC5B,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,KAC/B,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;QAE/B;;;;;;;;;;;;WAYG;QACH,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;KAC/B;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,KAAK,MAChC,KAAK,CAAC,EAAE,SAAS,MAAM,MAAM,EAAE,KAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAsCrE"}
|
package/dist/Sink/Sink.js
CHANGED
|
@@ -1,12 +1,28 @@
|
|
|
1
|
-
import { flatMap, map, provide,
|
|
1
|
+
import { flatMap, map, provide, context } from "effect/Effect";
|
|
2
2
|
import { effect } from "effect/Layer";
|
|
3
|
-
import * as
|
|
3
|
+
import * as Context from "effect/Context";
|
|
4
4
|
/**
|
|
5
5
|
* Creates a Sink from success and failure callbacks.
|
|
6
6
|
*
|
|
7
|
+
* @remarks
|
|
8
|
+
* ## Why
|
|
9
|
+
* `make` is the smallest adapter from ordinary Effect programs to an `Fx` consumer.
|
|
10
|
+
*
|
|
11
|
+
* ## Ownership and lifetime
|
|
12
|
+
* Construction is pure and acquires nothing. Each callback runs in producer order and is
|
|
13
|
+
* interrupted with the producer. Requirements from both callbacks are combined in the returned
|
|
14
|
+
* sink; callback defects remain defects, while typed producer failures arrive through `onFailure`.
|
|
15
|
+
*
|
|
7
16
|
* @param onFailure - Callback for handling failures.
|
|
8
17
|
* @param onSuccess - Callback for handling successful values.
|
|
9
18
|
* @returns A `Sink`.
|
|
19
|
+
* @example
|
|
20
|
+
* ```ts
|
|
21
|
+
* import { Effect } from "effect"
|
|
22
|
+
* import * as Sink from "@typed/fx/Sink"
|
|
23
|
+
*
|
|
24
|
+
* const sink = Sink.make(Effect.logError, (value: number) => Effect.log(value))
|
|
25
|
+
* ```
|
|
10
26
|
* @since 1.0.0
|
|
11
27
|
* @category constructors
|
|
12
28
|
*/
|
|
@@ -16,16 +32,47 @@ export function make(onFailure, onSuccess) {
|
|
|
16
32
|
onFailure,
|
|
17
33
|
};
|
|
18
34
|
}
|
|
35
|
+
/**
|
|
36
|
+
* Defines a class-shaped Effect Context service for a Sink.
|
|
37
|
+
*
|
|
38
|
+
* @remarks
|
|
39
|
+
* ## Why
|
|
40
|
+
* A service sink lets producers emit toward an application capability while Layers choose the
|
|
41
|
+
* concrete destination, such as logging, persistence, or UI output.
|
|
42
|
+
*
|
|
43
|
+
* ## Ownership and lifetime
|
|
44
|
+
* Definition is pure. `Class.make` captures its construction context into the sink callbacks and
|
|
45
|
+
* returns a Layer; providing that Layer controls availability and cleanup of captured scoped
|
|
46
|
+
* services. Each static callback lookup uses the current Effect context.
|
|
47
|
+
*
|
|
48
|
+
* @example
|
|
49
|
+
* ```ts
|
|
50
|
+
* import { Effect } from "effect"
|
|
51
|
+
* import * as Sink from "@typed/fx/Sink"
|
|
52
|
+
*
|
|
53
|
+
* class Output extends Sink.Service<Output, string>()("Output") {}
|
|
54
|
+
* const OutputLive = Output.make(Effect.logError, Effect.log)
|
|
55
|
+
* const program = Output.onSuccess("ready").pipe(Effect.provide(OutputLive))
|
|
56
|
+
* ```
|
|
57
|
+
*
|
|
58
|
+
* @since 1.0.0
|
|
59
|
+
* @category constructors
|
|
60
|
+
*/
|
|
19
61
|
export function Service() {
|
|
20
62
|
return (id) => {
|
|
21
|
-
const service =
|
|
63
|
+
const service = Context.Service(id);
|
|
22
64
|
// eslint-disable-next-line @typescript-eslint/no-extraneous-class
|
|
23
65
|
return class SinkService {
|
|
24
66
|
static id = id;
|
|
25
67
|
static service = service;
|
|
26
|
-
static
|
|
27
|
-
|
|
28
|
-
|
|
68
|
+
static {
|
|
69
|
+
// @effect-diagnostics-next-line floatingEffect:off
|
|
70
|
+
Object.assign(this, service);
|
|
71
|
+
Object.assign(this.prototype, Object.getPrototypeOf(service));
|
|
72
|
+
}
|
|
73
|
+
static make = (onFailure, onSuccess) => effect(service, map(context(), (context) => make((cause) => provide(onFailure(cause), context), (value) => provide(onSuccess(value), context))));
|
|
74
|
+
static onSuccess = (value) => flatMap(service, (sink) => sink.onSuccess(value));
|
|
75
|
+
static onFailure = (cause) => flatMap(service, (sink) => sink.onFailure(cause));
|
|
29
76
|
constructor() {
|
|
30
77
|
return SinkService;
|
|
31
78
|
}
|