@fncts/io 0.0.10 → 0.0.13
Sign up to get free protection for your applications and to get access to all the features.
- package/Cached/api.d.ts +2 -3
- package/Channel/api/interruptWhen.d.ts +1 -1
- package/Channel/api/mapOutIOC.d.ts +1 -1
- package/Channel/api/mergeAll.d.ts +1 -1
- package/Channel/api/mergeAllUnboundedWith.d.ts +1 -1
- package/Channel/api/mergeAllWith.d.ts +1 -1
- package/Channel/api/mergeMap.d.ts +1 -1
- package/Channel/api/mergeWith.d.ts +1 -1
- package/Channel/api/runScoped.d.ts +1 -2
- package/Channel/api/toPull.d.ts +1 -2
- package/Channel/api/zipC.d.ts +3 -3
- package/Channel/api.d.ts +48 -49
- package/Channel/core-api.d.ts +10 -10
- package/Channel/definition.d.ts +12 -12
- package/Channel/internal/MergeDecision.d.ts +1 -1
- package/Channel/internal/SingleProducerAsyncInput.d.ts +1 -1
- package/Clock/api.d.ts +1 -1
- package/Fiber/FiberContext.d.ts +3 -3
- package/Fiber/api/awaitAll.d.ts +1 -1
- package/Fiber/api/evalOnIO.d.ts +1 -1
- package/Fiber/api/joinAll.d.ts +1 -1
- package/Fiber/definition.d.ts +1 -1
- package/FiberRef/api/locallyScoped.d.ts +1 -2
- package/FiberRef/api/locallyScopedWith.d.ts +1 -2
- package/FiberRef/constructors.d.ts +1 -2
- package/FiberRef/unsafe.d.ts +6 -0
- package/Future/api.d.ts +1 -1
- package/Future/constructors.d.ts +1 -1
- package/Hub/api.d.ts +6 -7
- package/Hub/definition.d.ts +6 -7
- package/Hub/internal.d.ts +0 -1
- package/IO/api/acquireRelease.d.ts +1 -2
- package/IO/api/acquireReleaseExit.d.ts +1 -2
- package/IO/api/acquireReleaseInterruptible.d.ts +1 -2
- package/IO/api/acquireReleaseInterruptibleExit.d.ts +1 -2
- package/IO/api/addFinalizer.d.ts +1 -2
- package/IO/api/addFinalizerExit.d.ts +1 -2
- package/IO/api/bracket.d.ts +1 -1
- package/IO/api/bracketExit.d.ts +1 -1
- package/IO/api/clockWith.d.ts +1 -1
- package/IO/api/concurrentFinalizers.d.ts +1 -2
- package/IO/api/consoleWith.d.ts +1 -1
- package/IO/api/core-scope.d.ts +1 -1
- package/IO/api/ensuringChildren.d.ts +1 -1
- package/IO/api/environment.d.ts +8 -10
- package/IO/api/forkScoped.d.ts +1 -2
- package/IO/api/interrupt.d.ts +3 -3
- package/IO/api/onExit.d.ts +1 -1
- package/IO/api/onTermination.d.ts +1 -1
- package/IO/api/provideSomeLayer.d.ts +1 -1
- package/IO/api/race.d.ts +1 -1
- package/IO/api/raceFirst.d.ts +1 -1
- package/IO/api/randomWith.d.ts +1 -1
- package/IO/api/repeat.d.ts +3 -3
- package/IO/api/retry.d.ts +3 -3
- package/IO/api/schedule.d.ts +2 -2
- package/IO/api/scope.d.ts +1 -2
- package/IO/api/scopeWith.d.ts +1 -2
- package/IO/api/scoped.d.ts +2 -3
- package/IO/api/sequenceT.d.ts +3 -3
- package/IO/api/stateful.d.ts +1 -2
- package/IO/api/withEarlyRelease.d.ts +1 -2
- package/IO/api/withFinalizer.d.ts +1 -2
- package/IO/api/withFinalizerExit.d.ts +1 -2
- package/IO/api/zipC.d.ts +2 -2
- package/IO/api.d.ts +50 -50
- package/IO/definition.d.ts +28 -24
- package/IO/runtime.d.ts +23 -10
- package/IOEnv/definition.d.ts +2 -3
- package/IOEnv/live.d.ts +1 -1
- package/IOSpec.d.ts +1 -2
- package/Layer/MemoMap.d.ts +2 -3
- package/Layer/api.d.ts +30 -32
- package/Layer/definition.d.ts +7 -8
- package/Queue/api/dimapIO.d.ts +3 -3
- package/Queue/api/filterInputIO.d.ts +4 -4
- package/Queue/api/filterOutputIO.d.ts +6 -6
- package/Queue/api/zipWithIO.d.ts +9 -9
- package/Queue/definition.d.ts +7 -7
- package/Queue/internal.d.ts +1 -1
- package/Random/api.d.ts +4 -4
- package/Random/live.d.ts +1 -1
- package/Ref/Atomic/Atomic.d.ts +3 -3
- package/Ref/Derived.d.ts +3 -3
- package/Ref/DerivedAll.d.ts +3 -3
- package/Ref/Synchronized/api.d.ts +15 -15
- package/Ref/Synchronized/definition.d.ts +2 -2
- package/Ref/api/get.d.ts +1 -1
- package/Ref/api/modify.d.ts +9 -9
- package/Ref/api/set.d.ts +1 -1
- package/Ref/definition.d.ts +13 -13
- package/STM/api/core-api.d.ts +4 -4
- package/STM/api/core-constructors.d.ts +7 -7
- package/STM/api.d.ts +27 -39
- package/STM/definition.d.ts +9 -8
- package/STM/driver.d.ts +1 -1
- package/STM/internal/Journal.d.ts +4 -3
- package/Schedule/Decision.d.ts +10 -4
- package/Schedule/Driver.d.ts +3 -3
- package/Schedule/api.d.ts +55 -43
- package/Schedule/definition.d.ts +1 -1
- package/Scope/Finalizer/definition.d.ts +2 -2
- package/Scope/ReleaseMap/api.d.ts +1 -1
- package/Scope/ReleaseMap/definition.d.ts +1 -1
- package/Scope/api.d.ts +3 -4
- package/ScopedRef/api.d.ts +1 -2
- package/ScopedRef/definition.d.ts +1 -2
- package/Sink/api.d.ts +255 -75
- package/State/api.d.ts +1 -2
- package/Stream/api/zipAllWith.d.ts +1 -1
- package/Stream/api/zipWith.d.ts +1 -1
- package/Stream/api/zipWithChunks.d.ts +1 -1
- package/Stream/api.d.ts +91 -93
- package/Stream/definition.d.ts +3 -3
- package/Stream/internal/Take.d.ts +1 -1
- package/Supervisor/constructors.d.ts +2 -2
- package/TFuture/api.d.ts +1 -1
- package/TFuture/definition.d.ts +1 -1
- package/TReentrantLock/api.d.ts +2 -3
- package/TRef/api.d.ts +11 -11
- package/TRef/constructors.d.ts +2 -2
- package/TSemaphore/api.d.ts +2 -2
- package/TSemaphore/definition.d.ts +1 -1
- package/_cjs/Cached/api.cjs.map +1 -1
- package/_cjs/Channel/api/mapOutIOC.cjs +1 -1
- package/_cjs/Channel/api/mapOutIOC.cjs.map +1 -1
- package/_cjs/Channel/api/mergeAllWith.cjs +3 -3
- package/_cjs/Channel/api/mergeAllWith.cjs.map +1 -1
- package/_cjs/Channel/api.cjs.map +1 -1
- package/_cjs/Channel/definition.cjs.map +1 -1
- package/_cjs/Clock/live.cjs.map +1 -1
- package/_cjs/Fiber/FiberContext.cjs +5 -7
- package/_cjs/Fiber/FiberContext.cjs.map +1 -1
- package/_cjs/FiberRef/unsafe.cjs +9 -1
- package/_cjs/FiberRef/unsafe.cjs.map +1 -1
- package/_cjs/Future/api.cjs.map +1 -1
- package/_cjs/Hub/api.cjs +1 -1
- package/_cjs/Hub/api.cjs.map +1 -1
- package/_cjs/Hub/internal.cjs +4 -12
- package/_cjs/Hub/internal.cjs.map +1 -1
- package/_cjs/IO/api/addFinalizerExit.cjs +4 -8
- package/_cjs/IO/api/addFinalizerExit.cjs.map +1 -1
- package/_cjs/IO/api/ensuringChildren.cjs +1 -1
- package/_cjs/IO/api/ensuringChildren.cjs.map +1 -1
- package/_cjs/IO/api/environment.cjs +2 -3
- package/_cjs/IO/api/environment.cjs.map +1 -1
- package/_cjs/IO/api/interrupt.cjs +1 -1
- package/_cjs/IO/api/interrupt.cjs.map +1 -1
- package/_cjs/IO/api/memoize.cjs +4 -8
- package/_cjs/IO/api/memoize.cjs.map +1 -1
- package/_cjs/IO/api/provideSomeLayer.cjs +1 -2
- package/_cjs/IO/api/provideSomeLayer.cjs.map +1 -1
- package/_cjs/IO/api/scope.cjs +1 -1
- package/_cjs/IO/api/scope.cjs.map +1 -1
- package/_cjs/IO/api/scoped.cjs.map +1 -1
- package/_cjs/IO/api/withChildren.cjs +1 -1
- package/_cjs/IO/api/withChildren.cjs.map +1 -1
- package/_cjs/IO/api.cjs +1 -1
- package/_cjs/IO/api.cjs.map +1 -1
- package/_cjs/IO/definition.cjs +5 -8
- package/_cjs/IO/definition.cjs.map +1 -1
- package/_cjs/IO/runtime.cjs +69 -21
- package/_cjs/IO/runtime.cjs.map +1 -1
- package/_cjs/Layer/MemoMap.cjs +22 -38
- package/_cjs/Layer/MemoMap.cjs.map +1 -1
- package/_cjs/Layer/api.cjs +6 -4
- package/_cjs/Layer/api.cjs.map +1 -1
- package/_cjs/Layer/definition.cjs.map +1 -1
- package/_cjs/Queue/internal.cjs +2 -2
- package/_cjs/Queue/internal.cjs.map +1 -1
- package/_cjs/Queue/strategy.cjs +1 -5
- package/_cjs/Queue/strategy.cjs.map +1 -1
- package/_cjs/Ref/Atomic/Atomic.cjs.map +1 -1
- package/_cjs/Ref/Derived.cjs.map +1 -1
- package/_cjs/Ref/DerivedAll.cjs.map +1 -1
- package/_cjs/Ref/Synchronized/constructors.cjs +7 -11
- package/_cjs/Ref/Synchronized/constructors.cjs.map +1 -1
- package/_cjs/STM/api/core-constructors.cjs.map +1 -1
- package/_cjs/STM/api.cjs +59 -78
- package/_cjs/STM/api.cjs.map +1 -1
- package/_cjs/STM/definition.cjs.map +1 -1
- package/_cjs/STM/driver.cjs +7 -5
- package/_cjs/STM/driver.cjs.map +1 -1
- package/_cjs/STM/internal/Journal.cjs +20 -22
- package/_cjs/STM/internal/Journal.cjs.map +1 -1
- package/_cjs/Schedule/Decision.cjs +17 -0
- package/_cjs/Schedule/Decision.cjs.map +1 -1
- package/_cjs/Schedule/api/driver.cjs +22 -21
- package/_cjs/Schedule/api/driver.cjs.map +1 -1
- package/_cjs/Schedule/api.cjs +91 -66
- package/_cjs/Schedule/api.cjs.map +1 -1
- package/_cjs/Scope/Finalizer/definition.cjs +4 -6
- package/_cjs/Scope/Finalizer/definition.cjs.map +1 -1
- package/_cjs/Scope/ReleaseMap/definition.cjs +2 -4
- package/_cjs/Scope/ReleaseMap/definition.cjs.map +1 -1
- package/_cjs/Scope/api.cjs +2 -12
- package/_cjs/Scope/api.cjs.map +1 -1
- package/_cjs/ScopedRef/api.cjs +14 -22
- package/_cjs/ScopedRef/api.cjs.map +1 -1
- package/_cjs/Sink/api.cjs +424 -131
- package/_cjs/Sink/api.cjs.map +1 -1
- package/_cjs/Stream/api.cjs +94 -94
- package/_cjs/Stream/api.cjs.map +1 -1
- package/_cjs/Supervisor/constructors.cjs +14 -8
- package/_cjs/Supervisor/constructors.cjs.map +1 -1
- package/_cjs/TFuture/definition.cjs +2 -4
- package/_cjs/TFuture/definition.cjs.map +1 -1
- package/_cjs/TSemaphore/api.cjs +7 -7
- package/_cjs/TSemaphore/api.cjs.map +1 -1
- package/_cjs/TSemaphore/definition.cjs +2 -4
- package/_cjs/TSemaphore/definition.cjs.map +1 -1
- package/_cjs/collection/immutable/Conc/dropUntilIO.cjs +38 -0
- package/_cjs/collection/immutable/Conc/dropUntilIO.cjs.map +1 -0
- package/_cjs/collection/immutable/Conc/dropWhileIO.cjs +38 -0
- package/_cjs/collection/immutable/Conc/dropWhileIO.cjs.map +1 -0
- package/_cjs/internal/Scheduler.cjs +64 -14
- package/_cjs/internal/Scheduler.cjs.map +1 -1
- package/_mjs/Cached/api.mjs.map +1 -1
- package/_mjs/Channel/api/mapOutIOC.mjs +1 -1
- package/_mjs/Channel/api/mapOutIOC.mjs.map +1 -1
- package/_mjs/Channel/api/mergeAllWith.mjs +3 -3
- package/_mjs/Channel/api/mergeAllWith.mjs.map +1 -1
- package/_mjs/Channel/api.mjs.map +1 -1
- package/_mjs/Channel/definition.mjs.map +1 -1
- package/_mjs/Clock/live.mjs.map +1 -1
- package/_mjs/Fiber/FiberContext.mjs +5 -6
- package/_mjs/Fiber/FiberContext.mjs.map +1 -1
- package/_mjs/FiberRef/unsafe.mjs +6 -0
- package/_mjs/FiberRef/unsafe.mjs.map +1 -1
- package/_mjs/Future/api.mjs.map +1 -1
- package/_mjs/Hub/api.mjs +1 -1
- package/_mjs/Hub/api.mjs.map +1 -1
- package/_mjs/Hub/internal.mjs +4 -12
- package/_mjs/Hub/internal.mjs.map +1 -1
- package/_mjs/IO/api/addFinalizerExit.mjs +4 -8
- package/_mjs/IO/api/addFinalizerExit.mjs.map +1 -1
- package/_mjs/IO/api/ensuringChildren.mjs +1 -1
- package/_mjs/IO/api/ensuringChildren.mjs.map +1 -1
- package/_mjs/IO/api/environment.mjs +2 -3
- package/_mjs/IO/api/environment.mjs.map +1 -1
- package/_mjs/IO/api/interrupt.mjs +1 -1
- package/_mjs/IO/api/interrupt.mjs.map +1 -1
- package/_mjs/IO/api/memoize.mjs +4 -8
- package/_mjs/IO/api/memoize.mjs.map +1 -1
- package/_mjs/IO/api/provideSomeLayer.mjs +1 -2
- package/_mjs/IO/api/provideSomeLayer.mjs.map +1 -1
- package/_mjs/IO/api/scope.mjs +1 -1
- package/_mjs/IO/api/scope.mjs.map +1 -1
- package/_mjs/IO/api/scoped.mjs.map +1 -1
- package/_mjs/IO/api/withChildren.mjs +1 -1
- package/_mjs/IO/api/withChildren.mjs.map +1 -1
- package/_mjs/IO/api.mjs +1 -1
- package/_mjs/IO/api.mjs.map +1 -1
- package/_mjs/IO/definition.mjs +3 -5
- package/_mjs/IO/definition.mjs.map +1 -1
- package/_mjs/IO/runtime.mjs +61 -18
- package/_mjs/IO/runtime.mjs.map +1 -1
- package/_mjs/Layer/MemoMap.mjs +22 -38
- package/_mjs/Layer/MemoMap.mjs.map +1 -1
- package/_mjs/Layer/api.mjs +5 -4
- package/_mjs/Layer/api.mjs.map +1 -1
- package/_mjs/Layer/definition.mjs.map +1 -1
- package/_mjs/Queue/internal.mjs +2 -2
- package/_mjs/Queue/internal.mjs.map +1 -1
- package/_mjs/Queue/strategy.mjs +1 -5
- package/_mjs/Queue/strategy.mjs.map +1 -1
- package/_mjs/Ref/Atomic/Atomic.mjs.map +1 -1
- package/_mjs/Ref/Derived.mjs.map +1 -1
- package/_mjs/Ref/DerivedAll.mjs.map +1 -1
- package/_mjs/Ref/Synchronized/constructors.mjs +7 -11
- package/_mjs/Ref/Synchronized/constructors.mjs.map +1 -1
- package/_mjs/STM/api/core-constructors.mjs.map +1 -1
- package/_mjs/STM/api.mjs +52 -72
- package/_mjs/STM/api.mjs.map +1 -1
- package/_mjs/STM/definition.mjs.map +1 -1
- package/_mjs/STM/driver.mjs +6 -5
- package/_mjs/STM/driver.mjs.map +1 -1
- package/_mjs/STM/internal/Journal.mjs +20 -21
- package/_mjs/STM/internal/Journal.mjs.map +1 -1
- package/_mjs/Schedule/Decision.mjs +9 -0
- package/_mjs/Schedule/Decision.mjs.map +1 -1
- package/_mjs/Schedule/api/driver.mjs +20 -20
- package/_mjs/Schedule/api/driver.mjs.map +1 -1
- package/_mjs/Schedule/api.mjs +84 -63
- package/_mjs/Schedule/api.mjs.map +1 -1
- package/_mjs/Scope/Finalizer/definition.mjs +4 -5
- package/_mjs/Scope/Finalizer/definition.mjs.map +1 -1
- package/_mjs/Scope/ReleaseMap/definition.mjs +2 -3
- package/_mjs/Scope/ReleaseMap/definition.mjs.map +1 -1
- package/_mjs/Scope/api.mjs +2 -12
- package/_mjs/Scope/api.mjs.map +1 -1
- package/_mjs/ScopedRef/api.mjs +14 -22
- package/_mjs/ScopedRef/api.mjs.map +1 -1
- package/_mjs/Sink/api.mjs +414 -129
- package/_mjs/Sink/api.mjs.map +1 -1
- package/_mjs/Stream/api.mjs +94 -94
- package/_mjs/Stream/api.mjs.map +1 -1
- package/_mjs/Supervisor/constructors.mjs +9 -6
- package/_mjs/Supervisor/constructors.mjs.map +1 -1
- package/_mjs/TFuture/definition.mjs +2 -3
- package/_mjs/TFuture/definition.mjs.map +1 -1
- package/_mjs/TSemaphore/api.mjs +4 -4
- package/_mjs/TSemaphore/api.mjs.map +1 -1
- package/_mjs/TSemaphore/definition.mjs +2 -3
- package/_mjs/TSemaphore/definition.mjs.map +1 -1
- package/_mjs/collection/immutable/Conc/dropUntilIO.mjs +26 -0
- package/_mjs/collection/immutable/Conc/dropUntilIO.mjs.map +1 -0
- package/_mjs/collection/immutable/Conc/dropWhileIO.mjs +26 -0
- package/_mjs/collection/immutable/Conc/dropWhileIO.mjs.map +1 -0
- package/_mjs/internal/Scheduler.mjs +62 -15
- package/_mjs/internal/Scheduler.mjs.map +1 -1
- package/_src/Cached/api.ts +3 -3
- package/_src/Channel/api/interruptWhen.ts +1 -1
- package/_src/Channel/api/mapOutIOC.ts +2 -2
- package/_src/Channel/api/mergeAll.ts +1 -1
- package/_src/Channel/api/mergeAllUnboundedWith.ts +1 -1
- package/_src/Channel/api/mergeAllWith.ts +3 -3
- package/_src/Channel/api/mergeMap.ts +1 -1
- package/_src/Channel/api/mergeWith.ts +9 -9
- package/_src/Channel/api/runScoped.ts +1 -1
- package/_src/Channel/api/toPull.ts +1 -1
- package/_src/Channel/api/zipC.ts +3 -3
- package/_src/Channel/api.ts +69 -69
- package/_src/Channel/core-api.ts +11 -11
- package/_src/Channel/definition.ts +12 -12
- package/_src/Channel/internal/MergeDecision.ts +1 -1
- package/_src/Clock/live.ts +1 -1
- package/_src/Fiber/FiberContext.ts +10 -8
- package/_src/Fiber/api/awaitAll.ts +1 -1
- package/_src/Fiber/api/evalOnIO.ts +1 -1
- package/_src/Fiber/api/joinAll.ts +1 -1
- package/_src/Fiber/definition.ts +1 -1
- package/_src/FiberRef/api/locallyScoped.ts +1 -1
- package/_src/FiberRef/api/locallyScopedWith.ts +1 -1
- package/_src/FiberRef/constructors.ts +2 -2
- package/_src/FiberRef/unsafe.ts +7 -0
- package/_src/Future/api.ts +3 -3
- package/_src/Future/constructors.ts +1 -1
- package/_src/Hub/api.ts +11 -11
- package/_src/Hub/definition.ts +6 -6
- package/_src/Hub/internal.ts +15 -15
- package/_src/IO/api/acquireRelease.ts +1 -1
- package/_src/IO/api/acquireReleaseExit.ts +1 -1
- package/_src/IO/api/acquireReleaseInterruptible.ts +1 -1
- package/_src/IO/api/acquireReleaseInterruptibleExit.ts +1 -1
- package/_src/IO/api/addFinalizer.ts +1 -1
- package/_src/IO/api/addFinalizerExit.ts +5 -7
- package/_src/IO/api/bracket.ts +1 -1
- package/_src/IO/api/bracketExit.ts +1 -1
- package/_src/IO/api/concurrentFinalizers.ts +1 -1
- package/_src/IO/api/core-scope.ts +1 -1
- package/_src/IO/api/ensuringChildren.ts +2 -2
- package/_src/IO/api/environment.ts +9 -11
- package/_src/IO/api/forkScoped.ts +1 -1
- package/_src/IO/api/interrupt.ts +3 -3
- package/_src/IO/api/memoize.ts +3 -3
- package/_src/IO/api/onExit.ts +1 -1
- package/_src/IO/api/onTermination.ts +1 -1
- package/_src/IO/api/provideSomeLayer.ts +1 -2
- package/_src/IO/api/race.ts +1 -1
- package/_src/IO/api/raceFirst.ts +1 -1
- package/_src/IO/api/repeat.ts +4 -4
- package/_src/IO/api/retry.ts +4 -4
- package/_src/IO/api/schedule.ts +3 -3
- package/_src/IO/api/scope.ts +1 -1
- package/_src/IO/api/scopeWith.ts +1 -1
- package/_src/IO/api/scoped.ts +2 -2
- package/_src/IO/api/sequenceT.ts +1 -1
- package/_src/IO/api/stateful.ts +1 -1
- package/_src/IO/api/withChildren.ts +1 -1
- package/_src/IO/api/withEarlyRelease.ts +1 -1
- package/_src/IO/api/withFinalizer.ts +1 -1
- package/_src/IO/api/withFinalizerExit.ts +1 -1
- package/_src/IO/api/zipC.ts +2 -2
- package/_src/IO/api.ts +48 -48
- package/_src/IO/definition.ts +29 -24
- package/_src/IO/runtime.ts +66 -12
- package/_src/IOEnv/definition.ts +1 -1
- package/_src/Layer/MemoMap.ts +19 -19
- package/_src/Layer/api.ts +38 -38
- package/_src/Layer/definition.ts +5 -5
- package/_src/Queue/api/dimapIO.ts +10 -10
- package/_src/Queue/api/filterInputIO.ts +4 -4
- package/_src/Queue/api/filterOutputIO.ts +6 -6
- package/_src/Queue/api/zipWithIO.ts +10 -10
- package/_src/Queue/definition.ts +7 -7
- package/_src/Queue/internal.ts +7 -7
- package/_src/Queue/strategy.ts +4 -4
- package/_src/Random/api.ts +1 -1
- package/_src/Ref/Atomic/Atomic.ts +3 -3
- package/_src/Ref/Derived.ts +3 -3
- package/_src/Ref/DerivedAll.ts +3 -3
- package/_src/Ref/Synchronized/api.ts +15 -15
- package/_src/Ref/Synchronized/constructors.ts +4 -4
- package/_src/Ref/Synchronized/definition.ts +2 -2
- package/_src/Ref/api/get.ts +2 -2
- package/_src/Ref/api/modify.ts +9 -9
- package/_src/Ref/api/set.ts +1 -1
- package/_src/Ref/definition.ts +13 -13
- package/_src/STM/api/core-api.ts +6 -6
- package/_src/STM/api/core-constructors.ts +7 -7
- package/_src/STM/api.ts +58 -89
- package/_src/STM/definition.ts +6 -6
- package/_src/STM/driver.ts +3 -3
- package/_src/STM/internal/Journal.ts +25 -16
- package/_src/Schedule/Decision.ts +10 -3
- package/_src/Schedule/Driver.ts +2 -2
- package/_src/Schedule/api/driver.ts +6 -6
- package/_src/Schedule/api.ts +97 -77
- package/_src/Schedule/definition.ts +1 -1
- package/_src/Scope/Finalizer/definition.ts +2 -2
- package/_src/Scope/ReleaseMap/api.ts +1 -1
- package/_src/Scope/ReleaseMap/definition.ts +1 -1
- package/_src/Scope/api.ts +11 -11
- package/_src/ScopedRef/api.ts +12 -17
- package/_src/ScopedRef/definition.ts +1 -1
- package/_src/Sink/api.ts +441 -86
- package/_src/State/api.ts +1 -1
- package/_src/Stream/api/zipAllWith.ts +2 -2
- package/_src/Stream/api/zipWith.ts +1 -1
- package/_src/Stream/api/zipWithChunks.ts +2 -2
- package/_src/Stream/api.ts +150 -149
- package/_src/Stream/definition.ts +3 -3
- package/_src/Stream/internal/Take.ts +1 -1
- package/_src/Supervisor/constructors.ts +7 -3
- package/_src/TFuture/api.ts +1 -1
- package/_src/TFuture/definition.ts +1 -1
- package/_src/TReentrantLock/api.ts +2 -2
- package/_src/TRef/api.ts +11 -11
- package/_src/TRef/constructors.ts +2 -2
- package/_src/TSemaphore/api.ts +2 -2
- package/_src/TSemaphore/definition.ts +1 -1
- package/_src/collection/immutable/Conc/dropUntilIO.ts +24 -0
- package/_src/collection/immutable/Conc/dropWhileIO.ts +26 -0
- package/_src/internal/Scheduler.ts +59 -15
- package/collection/immutable/Conc/dropUntilIO.d.ts +7 -0
- package/collection/immutable/Conc/dropWhileIO.d.ts +7 -0
- package/internal/Scheduler.d.ts +18 -1
- package/package.json +3 -3
@@ -26,13 +26,13 @@ export const enum ChannelTag {
|
|
26
26
|
* @tsplus companion fncts.io.ChannelOps
|
27
27
|
*/
|
28
28
|
export abstract class Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone> {
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
29
|
+
declare _Env: () => Env;
|
30
|
+
declare _InErr: (_: InErr) => void;
|
31
|
+
declare _InElem: (_: InElem) => void;
|
32
|
+
declare _InDone: (_: InDone) => void;
|
33
|
+
declare _OutErr: () => OutErr;
|
34
|
+
declare _OutElem: () => OutElem;
|
35
|
+
declare _OutDone: () => OutDone;
|
36
36
|
}
|
37
37
|
|
38
38
|
/**
|
@@ -53,7 +53,7 @@ export function unifyChannel<X extends Channel<any, any, any, any, any, any, any
|
|
53
53
|
}
|
54
54
|
|
55
55
|
export abstract class Continuation<Env, InErr, InElem, InDone, OutErr, OutErr2, OutElem, OutDone, OutDone2> {
|
56
|
-
readonly _Env!: (
|
56
|
+
readonly _Env!: () => Env;
|
57
57
|
readonly _InErr!: (_: InErr) => void;
|
58
58
|
readonly _InElem!: (_: InElem) => void;
|
59
59
|
readonly _InDone!: (_: InDone) => void;
|
@@ -170,14 +170,14 @@ export class Read<Env, InErr, InElem, InDone, OutErr, OutErr2, OutElem, OutDone,
|
|
170
170
|
}
|
171
171
|
}
|
172
172
|
|
173
|
-
export class Done<OutDone> extends Channel<
|
173
|
+
export class Done<OutDone> extends Channel<never, unknown, unknown, unknown, never, never, OutDone> {
|
174
174
|
readonly _tag = ChannelTag.Done;
|
175
175
|
constructor(readonly terminal: () => OutDone) {
|
176
176
|
super();
|
177
177
|
}
|
178
178
|
}
|
179
179
|
|
180
|
-
export class Fail<OutErr> extends Channel<
|
180
|
+
export class Fail<OutErr> extends Channel<never, unknown, unknown, unknown, OutErr, never, never> {
|
181
181
|
readonly _tag = ChannelTag.Halt;
|
182
182
|
constructor(readonly cause: () => Cause<OutErr>) {
|
183
183
|
super();
|
@@ -257,7 +257,7 @@ export class BracketOut<R, E, Z, OutDone> extends Channel<R, unknown, unknown, u
|
|
257
257
|
}
|
258
258
|
|
259
259
|
export class Provide<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone> extends Channel<
|
260
|
-
|
260
|
+
never,
|
261
261
|
InErr,
|
262
262
|
InElem,
|
263
263
|
InDone,
|
@@ -274,7 +274,7 @@ export class Provide<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone> exten
|
|
274
274
|
}
|
275
275
|
}
|
276
276
|
|
277
|
-
export class Emit<OutElem, OutDone> extends Channel<
|
277
|
+
export class Emit<OutElem, OutDone> extends Channel<never, unknown, unknown, unknown, never, OutElem, OutDone> {
|
278
278
|
readonly _tag = ChannelTag.Emit;
|
279
279
|
constructor(readonly out: () => OutElem) {
|
280
280
|
super();
|
@@ -12,7 +12,7 @@ export type MergeDecisionTypeId = typeof MergeDecisionTypeId;
|
|
12
12
|
*/
|
13
13
|
export abstract class MergeDecision<R, E0, Z0, E, Z> {
|
14
14
|
readonly _typeId: MergeDecisionTypeId = MergeDecisionTypeId;
|
15
|
-
readonly _R!: (
|
15
|
+
readonly _R!: () => R;
|
16
16
|
readonly _E0!: (_: E0) => void;
|
17
17
|
readonly _Z0!: (_: Z0) => void;
|
18
18
|
readonly _E!: () => E;
|
package/_src/Clock/live.ts
CHANGED
@@ -2,7 +2,7 @@ class LiveClock extends Clock {
|
|
2
2
|
currentTime: UIO<number> = IO.succeed(Date.now());
|
3
3
|
|
4
4
|
sleep(duration: Lazy<Duration>, __tsplusTrace?: string): UIO<void> {
|
5
|
-
return IO.asyncInterrupt<
|
5
|
+
return IO.asyncInterrupt<never, never, void>((k) => {
|
6
6
|
const handle = setTimeout(() => {
|
7
7
|
k(IO.unit);
|
8
8
|
}, duration().milliseconds);
|
@@ -34,7 +34,7 @@ export class TracedCont {
|
|
34
34
|
|
35
35
|
export class Finalizer {
|
36
36
|
readonly _tag = "Finalizer";
|
37
|
-
constructor(readonly finalizer:
|
37
|
+
constructor(readonly finalizer: IO<any, never, any>, readonly apply: ErasedCont, readonly trace?: string) {}
|
38
38
|
}
|
39
39
|
|
40
40
|
export type Frame =
|
@@ -533,7 +533,7 @@ export class FiberContext<E, A> implements Fiber.Runtime<E, A>, Hashable, Equata
|
|
533
533
|
}
|
534
534
|
|
535
535
|
unsafeRunLater(i0: Instruction) {
|
536
|
-
|
536
|
+
this.unsafeGetRef(FiberRef.currentScheduler).scheduleTask(() => {
|
537
537
|
this.nextIO = i0;
|
538
538
|
this.runUntil(this.runtimeConfig.yieldOpCount);
|
539
539
|
});
|
@@ -569,7 +569,7 @@ export class FiberContext<E, A> implements Fiber.Runtime<E, A>, Hashable, Equata
|
|
569
569
|
this.fiberRefLocals.set(this.fiberRefLocals.get.remove(ref));
|
570
570
|
}
|
571
571
|
|
572
|
-
|
572
|
+
unsafePoll() {
|
573
573
|
switch (this.state._tag) {
|
574
574
|
case "Executing": {
|
575
575
|
return Nothing();
|
@@ -592,7 +592,7 @@ export class FiberContext<E, A> implements Fiber.Runtime<E, A>, Hashable, Equata
|
|
592
592
|
}
|
593
593
|
});
|
594
594
|
|
595
|
-
private unsafeAddFinalizer(finalizer:
|
595
|
+
private unsafeAddFinalizer(finalizer: IO<any, never, any>): void {
|
596
596
|
this.stack.push(
|
597
597
|
new Finalizer(finalizer, (v) => {
|
598
598
|
this.unsafeDisableInterruption();
|
@@ -929,7 +929,9 @@ export class FiberContext<E, A> implements Fiber.Runtime<E, A>, Hashable, Equata
|
|
929
929
|
const childIO = !parentScope.unsafeAdd(childContext) ? IO.interruptAs(parentScope.fiberId) : io;
|
930
930
|
|
931
931
|
childContext.nextIO = concrete(childIO);
|
932
|
-
|
932
|
+
this.unsafeGetRef(FiberRef.currentScheduler).scheduleTask(() =>
|
933
|
+
childContext.runUntil(this.runtimeConfig.yieldOpCount),
|
934
|
+
);
|
933
935
|
|
934
936
|
return childContext;
|
935
937
|
}
|
@@ -968,12 +970,12 @@ export class FiberContext<E, A> implements Fiber.Runtime<E, A>, Hashable, Equata
|
|
968
970
|
|
969
971
|
private unsafeRace<R, E, A, R1, E1, A1, R2, E2, A2, R3, E3, A3>(
|
970
972
|
race: Race<R, E, A, R1, E1, A1, R2, E2, A2, R3, E3, A3>,
|
971
|
-
): IO<R
|
973
|
+
): IO<R | R1 | R2 | R3, E2 | E3, A2 | A3> {
|
972
974
|
const raceIndicator = new AtomicReference(true);
|
973
975
|
const left = this.unsafeFork(concrete(race.left), Nothing(), race.trace);
|
974
976
|
const right = this.unsafeFork(concrete(race.right), Nothing(), race.trace);
|
975
977
|
|
976
|
-
return IO.async<R
|
978
|
+
return IO.async<R | R1 | R2 | R3, E2 | E3, A2 | A3>((cb) => {
|
977
979
|
const leftRegister = left.unsafeAddObserver(() => {
|
978
980
|
this.unsafeCompleteRace(left, right, race.leftWins, raceIndicator, cb);
|
979
981
|
});
|
@@ -995,7 +997,7 @@ export class FiberContext<E, A> implements Fiber.Runtime<E, A>, Hashable, Equata
|
|
995
997
|
loser: Fiber<any, any>,
|
996
998
|
cont: (fiber0: Fiber<any, any>, fiber1: Fiber<any, any>) => Erased,
|
997
999
|
ab: AtomicReference<boolean>,
|
998
|
-
cb: (_: IO<R
|
1000
|
+
cb: (_: IO<R | R1 | R2 | R3, E2 | E3, A2 | A3>) => void,
|
999
1001
|
): void {
|
1000
1002
|
if (ab.compareAndSet(true, false)) {
|
1001
1003
|
cb(cont(winner, loser));
|
@@ -3,6 +3,6 @@
|
|
3
3
|
*
|
4
4
|
* @tsplus static fncts.io.FiberOps awaitAll
|
5
5
|
*/
|
6
|
-
export function awaitAll<E, A>(as: Iterable<Fiber<E, A>>): IO<
|
6
|
+
export function awaitAll<E, A>(as: Iterable<Fiber<E, A>>): IO<never, never, Exit<E, Conc<A>>> {
|
7
7
|
return IO.foreachC(as, (f) => f.await.flatMap(IO.fromExitNow)).result;
|
8
8
|
}
|
@@ -8,7 +8,7 @@ export function evalOnIO_<E, A, R1, E1, B, R2, E2, C>(
|
|
8
8
|
fiber: Fiber<E, A>,
|
9
9
|
effect: IO<R1, E1, B>,
|
10
10
|
orElse: IO<R2, E2, C>,
|
11
|
-
): IO<R1
|
11
|
+
): IO<R1 | R2, E1 | E2, B | C> {
|
12
12
|
return Do((Δ) => {
|
13
13
|
const r = Δ(IO.environment<R1 & R2>());
|
14
14
|
const f = Δ(Future.make<E1 | E2, B | C>());
|
@@ -5,7 +5,7 @@
|
|
5
5
|
*
|
6
6
|
* @tsplus static fncts.io.FiberOps joinAll
|
7
7
|
*/
|
8
|
-
export function joinAll<E, A>(as: Iterable<Fiber<E, A>>): IO<
|
8
|
+
export function joinAll<E, A>(as: Iterable<Fiber<E, A>>): IO<never, E, Conc<A>> {
|
9
9
|
return Fiber.awaitAll(as)
|
10
10
|
.flatMap(IO.fromExitNow)
|
11
11
|
.tap(() => IO.foreach(as, (f) => f.inheritRefs));
|
package/_src/Fiber/definition.ts
CHANGED
@@ -80,7 +80,7 @@ export interface RuntimeFiber<E, A> extends FiberCommon<E, A> {
|
|
80
80
|
readonly evalOnIO: <R1, E1, B, R2, E2, C>(
|
81
81
|
effect: IO<R1, E1, B>,
|
82
82
|
orElse: IO<R2, E2, C>,
|
83
|
-
) => IO<R1
|
83
|
+
) => IO<R1 | R2, E1 | E2, B | C>;
|
84
84
|
|
85
85
|
/**
|
86
86
|
* The status of the fiber.
|
@@ -1,7 +1,7 @@
|
|
1
1
|
/**
|
2
2
|
* @tsplus fluent fncts.io.FiberRef locallyScoped
|
3
3
|
*/
|
4
|
-
export function locallyScoped_<A>(ref: FiberRef<A>, a: A): IO<
|
4
|
+
export function locallyScoped_<A>(ref: FiberRef<A>, a: A): IO<Scope, never, void> {
|
5
5
|
return IO.acquireRelease(
|
6
6
|
ref.get.flatMap((old) => ref.set(a).as(old)),
|
7
7
|
(a) => ref.set(a),
|
@@ -1,6 +1,6 @@
|
|
1
1
|
/**
|
2
2
|
* @tsplus fluent fncts.io.FiberRef locallyScopedWith
|
3
3
|
*/
|
4
|
-
export function locallyScopedWith<A>(self: FiberRef<A>, f: (a: A) => A): IO<
|
4
|
+
export function locallyScopedWith<A>(self: FiberRef<A>, f: (a: A) => A): IO<Scope, never, void> {
|
5
5
|
return self.getWith((a) => self.locallyScoped(f(a)));
|
6
6
|
}
|
@@ -2,7 +2,7 @@ import { identity } from "@fncts/base/data/function";
|
|
2
2
|
|
3
3
|
function makeWith<Value, Patch>(
|
4
4
|
ref: Lazy<FiberRef.WithPatch<Value, Patch>>,
|
5
|
-
): IO<
|
5
|
+
): IO<Scope, never, FiberRef.WithPatch<Value, Patch>> {
|
6
6
|
return IO.acquireRelease(
|
7
7
|
IO.succeed(ref).tap((ref) => ref.update(identity)),
|
8
8
|
(ref) => ref.remove,
|
@@ -16,6 +16,6 @@ export function make<A>(
|
|
16
16
|
initial: A,
|
17
17
|
fork: (a: A) => A = identity,
|
18
18
|
join: (a: A, a1: A) => A = (_, a) => a,
|
19
|
-
): IO<
|
19
|
+
): IO<Scope, never, FiberRef<A>> {
|
20
20
|
return makeWith(FiberRef.unsafeMake(initial, fork, join));
|
21
21
|
}
|
package/_src/FiberRef/unsafe.ts
CHANGED
@@ -1,7 +1,9 @@
|
|
1
1
|
import type { LogSpan } from "../LogSpan.js";
|
2
|
+
import type { Scheduler } from "@fncts/io/internal/Scheduler.js";
|
2
3
|
|
3
4
|
import { identity } from "@fncts/base/data/function";
|
4
5
|
import { Patch } from "@fncts/base/data/Patch";
|
6
|
+
import { defaultScheduler } from "@fncts/io/internal/Scheduler";
|
5
7
|
|
6
8
|
import { FiberRefInternal } from "./definition.js";
|
7
9
|
|
@@ -77,3 +79,8 @@ export const currentLogSpan = FiberRef.unsafeMake<List<LogSpan>>(Nil());
|
|
77
79
|
* @tsplus static fncts.io.FiberRefOps currentLogAnnotations
|
78
80
|
*/
|
79
81
|
export const currentLogAnnotations = FiberRef.unsafeMake<HashMap<string, string>>(HashMap.makeDefault());
|
82
|
+
|
83
|
+
/**
|
84
|
+
* @tsplus static fncts.io.FiberRefOps currentScheduler
|
85
|
+
*/
|
86
|
+
export const currentScheduler = FiberRef.unsafeMake<Scheduler>(defaultScheduler);
|
package/_src/Future/api.ts
CHANGED
@@ -175,8 +175,8 @@ export function unsafeSucceed_<A>(future: Future<never, A>, a: A): void {
|
|
175
175
|
*
|
176
176
|
* @tsplus getter fncts.io.Future await
|
177
177
|
*/
|
178
|
-
export function wait<E, A>(future: Future<E, A>): IO<
|
179
|
-
return IO.asyncInterrupt<
|
178
|
+
export function wait<E, A>(future: Future<E, A>): IO<never, E, A> {
|
179
|
+
return IO.asyncInterrupt<never, E, A>((k) => {
|
180
180
|
switch (future.state._tag) {
|
181
181
|
case FutureStateTag.Done: {
|
182
182
|
return Either.right(future.state.value);
|
@@ -189,7 +189,7 @@ export function wait<E, A>(future: Future<E, A>): IO<unknown, E, A> {
|
|
189
189
|
}, future.blockingOn);
|
190
190
|
}
|
191
191
|
|
192
|
-
function interruptJoiner<E, A>(future: Future<E, A>, joiner: (a: FIO<E, A>) => void): Canceler<
|
192
|
+
function interruptJoiner<E, A>(future: Future<E, A>, joiner: (a: FIO<E, A>) => void): Canceler<never> {
|
193
193
|
return IO.succeed(() => {
|
194
194
|
switch (future.state._tag) {
|
195
195
|
case FutureStateTag.Pending: {
|
@@ -5,7 +5,7 @@ import { Future, Pending } from "@fncts/io/Future/definition";
|
|
5
5
|
*
|
6
6
|
* @tsplus static fncts.io.FutureOps make
|
7
7
|
*/
|
8
|
-
export function make<E, A>(): IO<
|
8
|
+
export function make<E, A>(): IO<never, never, Future<E, A>> {
|
9
9
|
return IO.fiberId.flatMap((id) => Future.makeAs<E, A>(id));
|
10
10
|
}
|
11
11
|
|
package/_src/Hub/api.ts
CHANGED
@@ -40,13 +40,13 @@ export function capacity<RA, RB, EA, EB, A, B>(self: PHub<RA, RB, EA, EB, A, B>)
|
|
40
40
|
export function contramapIO_<RA, RB, RC, EA, EB, EC, A, B, C>(
|
41
41
|
self: PHub<RA, RB, EA, EB, A, B>,
|
42
42
|
f: (c: C) => IO<RC, EC, A>,
|
43
|
-
): PHub<RC
|
43
|
+
): PHub<RC | RA, RB, EA | EC, EB, C, B> {
|
44
44
|
return self.dimapIO(f, IO.succeedNow);
|
45
45
|
}
|
46
46
|
|
47
47
|
class DimapIO<RA, RB, RC, RD, EA, EB, EC, ED, A, B, C, D> extends PHubInternal<
|
48
|
-
RC
|
49
|
-
RD
|
48
|
+
RC | RA,
|
49
|
+
RD | RB,
|
50
50
|
EA | EC,
|
51
51
|
EB | ED,
|
52
52
|
C,
|
@@ -96,12 +96,12 @@ export function dimapIO_<RA, RB, RC, RD, EA, EB, EC, ED, A, B, C, D>(
|
|
96
96
|
source: PHub<RA, RB, EA, EB, A, B>,
|
97
97
|
f: (c: C) => IO<RC, EC, A>,
|
98
98
|
g: (b: B) => IO<RD, ED, D>,
|
99
|
-
): PHub<RC
|
99
|
+
): PHub<RC | RA, RD | RB, EA | EC, EB | ED, C, D> {
|
100
100
|
concrete(source);
|
101
101
|
return new DimapIO(source, f, g);
|
102
102
|
}
|
103
103
|
|
104
|
-
class FilterInputIO<RA, RA1, RB, EA, EA1, EB, A, B> extends PHubInternal<RA
|
104
|
+
class FilterInputIO<RA, RA1, RB, EA, EA1, EB, A, B> extends PHubInternal<RA | RA1, RB, EA | EA1, EB, A, B> {
|
105
105
|
constructor(readonly source: PHubInternal<RA, RB, EA, EB, A, B>, readonly f: (a: A) => IO<RA1, EA1, boolean>) {
|
106
106
|
super();
|
107
107
|
}
|
@@ -125,7 +125,7 @@ class FilterInputIO<RA, RA1, RB, EA, EA1, EB, A, B> extends PHubInternal<RA & RA
|
|
125
125
|
export function filterInputIO_<RA, RA1, RB, EA, EA1, EB, A, B>(
|
126
126
|
source: PHub<RA, RB, EA, EB, A, B>,
|
127
127
|
f: (a: A) => IO<RA1, EA1, boolean>,
|
128
|
-
): PHub<RA
|
128
|
+
): PHub<RA | RA1, RB, EA | EA1, EB, A, B> {
|
129
129
|
concrete(source);
|
130
130
|
return new FilterInputIO(source, f);
|
131
131
|
}
|
@@ -139,7 +139,7 @@ export function filterInput_<RA, RB, EA, EB, A, B>(self: PHub<RA, RB, EA, EB, A,
|
|
139
139
|
return self.filterInputIO((a) => IO.succeedNow(f(a)));
|
140
140
|
}
|
141
141
|
|
142
|
-
class FilterOutputIO<RA, RB, RB1, EA, EB, EB1, A, B> extends PHubInternal<RA, RB
|
142
|
+
class FilterOutputIO<RA, RB, RB1, EA, EB, EB1, A, B> extends PHubInternal<RA, RB | RB1, EA, EB | EB1, A, B> {
|
143
143
|
constructor(readonly source: PHubInternal<RA, RB, EA, EB, A, B>, readonly f: (a: B) => IO<RB1, EB1, boolean>) {
|
144
144
|
super();
|
145
145
|
}
|
@@ -162,7 +162,7 @@ class FilterOutputIO<RA, RB, RB1, EA, EB, EB1, A, B> extends PHubInternal<RA, RB
|
|
162
162
|
export function filterOutputIO_<RA, RB, RB1, EA, EB, EB1, A, B>(
|
163
163
|
source: PHub<RA, RB, EA, EB, A, B>,
|
164
164
|
f: (a: B) => IO<RB1, EB1, boolean>,
|
165
|
-
): PHub<RA, RB
|
165
|
+
): PHub<RA, RB | RB1, EA, EB | EB1, A, B> {
|
166
166
|
concrete(source);
|
167
167
|
return new FilterOutputIO(source, f);
|
168
168
|
}
|
@@ -262,7 +262,7 @@ export function map_<RA, RB, EA, EB, A, B, C>(
|
|
262
262
|
export function mapIO_<RA, RB, RC, EA, EB, EC, A, B, C>(
|
263
263
|
self: PHub<RA, RB, EA, EB, A, B>,
|
264
264
|
f: (b: B) => IO<RC, EC, C>,
|
265
|
-
): PHub<RA, RC
|
265
|
+
): PHub<RA, RC | RB, EA, EB | EC, A, C> {
|
266
266
|
return self.dimapIO(IO.succeedNow, f);
|
267
267
|
}
|
268
268
|
|
@@ -279,7 +279,7 @@ class ToQueue<RA, RB, EA, EB, A, B> extends QueueInternal<RA, never, EA, unknown
|
|
279
279
|
takeAll = IO.succeedNow(Conc.empty<never>());
|
280
280
|
offer = (a: A): IO<RA, EA, boolean> => this.source.publish(a);
|
281
281
|
offerAll = (as: Iterable<A>): IO<RA, EA, boolean> => this.source.publishAll(as);
|
282
|
-
takeUpTo = (): IO<
|
282
|
+
takeUpTo = (): IO<never, never, Conc<never>> => IO.succeedNow(Conc.empty());
|
283
283
|
}
|
284
284
|
|
285
285
|
/**
|
@@ -326,7 +326,7 @@ export function shutdown<RA, RB, EA, EB, A, B>(self: PHub<RA, RB, EA, EB, A, B>)
|
|
326
326
|
*/
|
327
327
|
export function subscribe<RA, RB, EA, EB, A, B>(
|
328
328
|
self: PHub<RA, RB, EA, EB, A, B>,
|
329
|
-
): IO<
|
329
|
+
): IO<Scope, never, Hub.Dequeue<RB, EB, B>> {
|
330
330
|
concrete(self);
|
331
331
|
return self.subscribe;
|
332
332
|
}
|
package/_src/Hub/definition.ts
CHANGED
@@ -13,8 +13,8 @@ export type HubTypeId = typeof HubTypeId;
|
|
13
13
|
*/
|
14
14
|
export interface PHub<RA, RB, EA, EB, A, B> {
|
15
15
|
readonly _typeId: HubTypeId;
|
16
|
-
readonly _RA: (
|
17
|
-
readonly _RB: (
|
16
|
+
readonly _RA: () => RA;
|
17
|
+
readonly _RB: () => RB;
|
18
18
|
readonly _EA: () => EA;
|
19
19
|
readonly _EB: () => EB;
|
20
20
|
readonly _A: (_: A) => void;
|
@@ -24,7 +24,7 @@ export interface PHub<RA, RB, EA, EB, A, B> {
|
|
24
24
|
/**
|
25
25
|
* @tsplus type fncts.io.Hub
|
26
26
|
*/
|
27
|
-
export interface Hub<A> extends PHub<
|
27
|
+
export interface Hub<A> extends PHub<never, never, never, never, A, A> {}
|
28
28
|
|
29
29
|
/**
|
30
30
|
* @tsplus type fncts.io.HubOps
|
@@ -40,8 +40,8 @@ export declare namespace Hub {
|
|
40
40
|
|
41
41
|
export abstract class PHubInternal<RA, RB, EA, EB, A, B> implements PHub<RA, RB, EA, EB, A, B> {
|
42
42
|
_typeId: HubTypeId = HubTypeId;
|
43
|
-
readonly _RA!: (
|
44
|
-
readonly _RB!: (
|
43
|
+
readonly _RA!: () => RA;
|
44
|
+
readonly _RB!: () => RB;
|
45
45
|
readonly _EA!: () => EA;
|
46
46
|
readonly _EB!: () => EB;
|
47
47
|
readonly _A!: (_: A) => void;
|
@@ -89,7 +89,7 @@ export abstract class PHubInternal<RA, RB, EA, EB, A, B> implements PHub<RA, RB,
|
|
89
89
|
* can be evaluated multiple times within the scope of the managed to take a
|
90
90
|
* message from the hub each time.
|
91
91
|
*/
|
92
|
-
abstract subscribe: IO<
|
92
|
+
abstract subscribe: IO<Scope, never, Hub.Dequeue<RB, EB, B>>;
|
93
93
|
}
|
94
94
|
|
95
95
|
/**
|
package/_src/Hub/internal.ts
CHANGED
@@ -125,10 +125,10 @@ export class BackPressure<A> extends Strategy<A> {
|
|
125
125
|
get shutdown(): UIO<void> {
|
126
126
|
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
127
127
|
const self = this;
|
128
|
-
return
|
129
|
-
const fiberId =
|
130
|
-
const publishers =
|
131
|
-
|
128
|
+
return Do((_) => {
|
129
|
+
const fiberId = _(IO.fiberId);
|
130
|
+
const publishers = _(IO.succeed(self.publishers.unsafeDequeueAll));
|
131
|
+
_(IO.foreachC(publishers, ([_, future, last]) => (last ? future.interruptAs(fiberId) : IO.unit)));
|
132
132
|
});
|
133
133
|
}
|
134
134
|
|
@@ -254,7 +254,7 @@ export class Sliding<A> extends Strategy<A> {
|
|
254
254
|
}
|
255
255
|
}
|
256
256
|
|
257
|
-
class UnsafeSubscription<A> extends QueueInternal<never,
|
257
|
+
class UnsafeSubscription<A> extends QueueInternal<never, never, unknown, never, never, A> {
|
258
258
|
constructor(
|
259
259
|
readonly hub: HubInternal<A>,
|
260
260
|
readonly subscribers: HashSet<HashedPair<HubInternal.Subscription<A>, MutableQueue<Future<never, A>>>>,
|
@@ -294,7 +294,7 @@ class UnsafeSubscription<A> extends QueueInternal<never, unknown, unknown, never
|
|
294
294
|
|
295
295
|
offerAll = (_: Iterable<never>): IO<never, unknown, boolean> => IO.succeedNow(false);
|
296
296
|
|
297
|
-
take: IO<
|
297
|
+
take: IO<never, never, A> = IO.fiberId.flatMap((fiberId) =>
|
298
298
|
IO.defer(() => {
|
299
299
|
if (this.shutdownFlag.get) {
|
300
300
|
return IO.interrupt;
|
@@ -327,7 +327,7 @@ class UnsafeSubscription<A> extends QueueInternal<never, unknown, unknown, never
|
|
327
327
|
}),
|
328
328
|
);
|
329
329
|
|
330
|
-
takeAll: IO<
|
330
|
+
takeAll: IO<never, never, Conc<A>> = IO.defer(() => {
|
331
331
|
if (this.shutdownFlag.get) {
|
332
332
|
return IO.interrupt;
|
333
333
|
}
|
@@ -339,7 +339,7 @@ class UnsafeSubscription<A> extends QueueInternal<never, unknown, unknown, never
|
|
339
339
|
return IO.succeedNow(as);
|
340
340
|
});
|
341
341
|
|
342
|
-
takeUpTo = (n: number): IO<
|
342
|
+
takeUpTo = (n: number): IO<never, never, Conc<A>> => {
|
343
343
|
return IO.defer(() => {
|
344
344
|
if (this.shutdownFlag.get) {
|
345
345
|
return IO.interrupt;
|
@@ -395,7 +395,7 @@ export function subscribersHashSet<A>(): HashSet<
|
|
395
395
|
return HashSet.empty<HashedPair<HubInternal.Subscription<A>, MutableQueue<Future<never, A>>>>();
|
396
396
|
}
|
397
397
|
|
398
|
-
class UnsafeHub<A> extends PHubInternal<
|
398
|
+
class UnsafeHub<A> extends PHubInternal<never, never, never, never, A, A> {
|
399
399
|
constructor(
|
400
400
|
readonly hub: HubInternal<A>,
|
401
401
|
readonly subscribers: HashSet<HashedPair<HubInternal.Subscription<A>, MutableQueue<Future<never, A>>>>,
|
@@ -431,14 +431,14 @@ class UnsafeHub<A> extends PHubInternal<unknown, unknown, never, never, A, A> {
|
|
431
431
|
return IO.succeed(this.hub.size());
|
432
432
|
});
|
433
433
|
|
434
|
-
subscribe: IO<
|
434
|
+
subscribe: IO<Scope, never, Queue.Dequeue<A>> = IO.acquireRelease(
|
435
435
|
makeSubscription(this.hub, this.subscribers, this.strategy).tap((dequeue) =>
|
436
436
|
this.scope.addFinalizer(dequeue.shutdown),
|
437
437
|
),
|
438
438
|
(dequeue) => dequeue.shutdown,
|
439
439
|
);
|
440
440
|
|
441
|
-
publish = (a: A): IO<
|
441
|
+
publish = (a: A): IO<never, never, boolean> =>
|
442
442
|
IO.defer(() => {
|
443
443
|
if (this.shutdownFlag.get) {
|
444
444
|
return IO.interrupt;
|
@@ -452,7 +452,7 @@ class UnsafeHub<A> extends PHubInternal<unknown, unknown, never, never, A, A> {
|
|
452
452
|
return this.strategy.handleSurplus(this.hub, this.subscribers, Conc.single(a), this.shutdownFlag);
|
453
453
|
});
|
454
454
|
|
455
|
-
publishAll = (as: Iterable<A>): IO<
|
455
|
+
publishAll = (as: Iterable<A>): IO<never, never, boolean> =>
|
456
456
|
IO.defer(() => {
|
457
457
|
if (this.shutdownFlag.get) {
|
458
458
|
return IO.interrupt;
|
@@ -485,9 +485,9 @@ export function unsafeMakeHub<A>(
|
|
485
485
|
}
|
486
486
|
|
487
487
|
export function makeHubInternal<A>(hub: HubInternal<A>, strategy: Strategy<A>): UIO<Hub<A>> {
|
488
|
-
return
|
489
|
-
const scope =
|
490
|
-
const future =
|
488
|
+
return Do((_) => {
|
489
|
+
const scope = _(Scope.make);
|
490
|
+
const future = _(Future.make<never, void>());
|
491
491
|
return unsafeMakeHub(hub, subscribersHashSet(), scope, future, new AtomicBoolean(false), strategy);
|
492
492
|
});
|
493
493
|
}
|
@@ -6,6 +6,6 @@ export function acquireReleaseExit<R, E, A, R1>(
|
|
6
6
|
acquire: Lazy<IO<R, E, A>>,
|
7
7
|
release: (a: A, exit: Exit<any, any>) => IO<R1, never, any>,
|
8
8
|
__tsplusTrace?: string,
|
9
|
-
): IO<R
|
9
|
+
): IO<R | R1 | Scope, E, A> {
|
10
10
|
return IO.uninterruptible(IO.defer(acquire).tap((a) => IO.addFinalizerExit((exit) => release(a, exit))));
|
11
11
|
}
|
@@ -5,6 +5,6 @@ export function acquireReleaseInterruptible<R, E, A, R1>(
|
|
5
5
|
acquire: Lazy<IO<R, E, A>>,
|
6
6
|
release: IO<R1, never, any>,
|
7
7
|
__tsplusTrace?: string,
|
8
|
-
): IO<R
|
8
|
+
): IO<R | R1 | Scope, E, A> {
|
9
9
|
return IO.acquireReleaseInterruptibleExit(acquire, () => release);
|
10
10
|
}
|
@@ -5,6 +5,6 @@ export function acquireReleaseInterruptibleExit<R, E, A, R1>(
|
|
5
5
|
acquire: Lazy<IO<R, E, A>>,
|
6
6
|
release: (exit: Exit<any, any>) => IO<R1, never, any>,
|
7
7
|
__tsplusTrace?: string,
|
8
|
-
): IO<R
|
8
|
+
): IO<R | R1 | Scope, E, A> {
|
9
9
|
return IO.defer(acquire).ensuring(IO.addFinalizerExit(release));
|
10
10
|
}
|
@@ -1,12 +1,10 @@
|
|
1
1
|
/**
|
2
2
|
* @tsplus static fncts.io.IOOps addFinalizerExit
|
3
3
|
*/
|
4
|
-
export function addFinalizerExit<R>(
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
const scope = yield* _(IO.scope);
|
10
|
-
yield* _(scope.addFinalizerExit(Finalizer.get((exit) => finalizer(exit).provideEnvironment(environment))));
|
4
|
+
export function addFinalizerExit<R>(finalizer: (exit: Exit<any, any>) => URIO<R, any>): IO<R | Scope, never, void> {
|
5
|
+
return Do((_) => {
|
6
|
+
const environment = _(IO.environment<R>());
|
7
|
+
const scope = _(IO.scope);
|
8
|
+
_(scope.addFinalizerExit(Finalizer.get((exit) => finalizer(exit).provideEnvironment(environment))));
|
11
9
|
});
|
12
10
|
}
|
package/_src/IO/api/bracket.ts
CHANGED
@@ -25,6 +25,6 @@ export function bracket_<R, E, A, R1, E1, A1, R2, E2, A2>(
|
|
25
25
|
acquire: Lazy<IO<R, E, A>>,
|
26
26
|
use: (a: A) => IO<R1, E1, A1>,
|
27
27
|
release: (a: A) => IO<R2, E2, A2>,
|
28
|
-
): IO<R
|
28
|
+
): IO<R | R1 | R2, E | E1 | E2, A1> {
|
29
29
|
return IO.bracketExit(acquire, use, release);
|
30
30
|
}
|
@@ -12,7 +12,7 @@ export function bracketExit_<R, E, A, E1, R1, A1, R2, E2>(
|
|
12
12
|
acquire: Lazy<IO<R, E, A>>,
|
13
13
|
use: (a: A) => IO<R1, E1, A1>,
|
14
14
|
release: (a: A, e: Exit<E1, A1>) => IO<R2, E2, any>,
|
15
|
-
): IO<R
|
15
|
+
): IO<R | R1 | R2, E | E1 | E2, A1> {
|
16
16
|
return IO.uninterruptibleMask(({ restore }) =>
|
17
17
|
acquire().flatMap((a) =>
|
18
18
|
IO.defer(restore(use(a))).result.flatMap((exit) =>
|
@@ -1,7 +1,7 @@
|
|
1
1
|
/**
|
2
2
|
* @tsplus getter fncts.io.IO concurrentFinalizers
|
3
3
|
*/
|
4
|
-
export function concurrentFinalizers<R, E, A>(io: IO<R, E, A>): IO<R
|
4
|
+
export function concurrentFinalizers<R, E, A>(io: IO<R, E, A>): IO<R | Scope, E, A> {
|
5
5
|
return Do((Δ) => {
|
6
6
|
const outerScope = Δ(IO.scope);
|
7
7
|
const innerScope = Δ(Scope.concurrent);
|
@@ -62,7 +62,7 @@ export function raceWith_<R, E, A, R1, E1, A1, R2, E2, A2, R3, E3, A3>(
|
|
62
62
|
leftWins: (exit: Exit<E, A>, fiber: Fiber<E1, A1>) => IO<R2, E2, A2>,
|
63
63
|
rightWins: (exit: Exit<E1, A1>, fiber: Fiber<E, A>) => IO<R3, E3, A3>,
|
64
64
|
__tsplusTrace?: string,
|
65
|
-
): IO<R
|
65
|
+
): IO<R | R1 | R2 | R3, E2 | E3, A2 | A3> {
|
66
66
|
return IO.defer(
|
67
67
|
() =>
|
68
68
|
new Race(
|
@@ -4,8 +4,8 @@
|
|
4
4
|
export function ensuringChildren<R, E, A, R1>(
|
5
5
|
self: IO<R, E, A>,
|
6
6
|
children: (_: Conc<Fiber.Runtime<any, any>>) => IO<R1, never, void>,
|
7
|
-
): IO<R
|
8
|
-
return Supervisor.track.flatMap((supervisor) =>
|
7
|
+
): IO<R | R1, E, A> {
|
8
|
+
return Supervisor.track(true).flatMap((supervisor) =>
|
9
9
|
self.supervised(supervisor).ensuring(supervisor.value.flatMap(children)),
|
10
10
|
);
|
11
11
|
}
|