@fncts/io 0.0.10 → 0.0.13
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/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
|
}
|