@fncts/io 0.0.22 → 0.0.23
Sign up to get free protection for your applications and to get access to all the features.
- package/Cached/definition.d.ts +6 -4
- package/Cached/internal.d.ts +4 -4
- package/Channel/api.d.ts +4 -4
- package/Channel/definition.d.ts +35 -14
- package/Channel/internal/ChannelExecutor.d.ts +1 -0
- package/Channel/internal/MergeDecision.d.ts +10 -6
- package/CountdownLatch.d.ts +1 -1
- package/Differ/definition.d.ts +2 -4
- package/Fiber/FiberRuntime.d.ts +9 -11
- package/Fiber/definition.d.ts +12 -6
- package/FiberRef/definition.d.ts +6 -2
- package/FiberRefs/api.d.ts +1 -1
- package/FiberRefs/definition.d.ts +1 -1
- package/Hub/definition.d.ts +29 -15
- package/IO/api/interrupt.d.ts +19 -19
- package/IO/api/onTermination.d.ts +0 -1
- package/IO/api/sequenceT.d.ts +19 -3
- package/IO/api.d.ts +17 -1
- package/IO/definition.d.ts +40 -26
- package/IO.d.ts +0 -1
- package/Layer/definition.d.ts +17 -13
- package/Logger/definition.d.ts +10 -6
- package/MVar/api.d.ts +101 -0
- package/MVar/definition.d.ts +43 -0
- package/MVar.d.ts +2 -0
- package/Push/api.d.ts +7 -4
- package/Push/definition.d.ts +10 -3
- package/Push/internal.d.ts +1 -1
- package/Queue/api/dimapIO.d.ts +17 -13
- package/Queue/definition.d.ts +26 -18
- package/Ref/Derived.d.ts +3 -1
- package/Ref/Synchronized/constructors.d.ts +6 -1
- package/Ref/Synchronized/definition.d.ts +4 -2
- package/Ref/definition.d.ts +36 -25
- package/Ref.d.ts +0 -1
- package/RefSubject/definition.d.ts +17 -11
- package/Reloadable/definition.d.ts +5 -1
- package/STM/api/atomically.d.ts +9 -0
- package/STM/api.d.ts +12 -6
- package/STM/definition.d.ts +28 -15
- package/STM/internal/Entry.d.ts +2 -2
- package/STM/internal/TryCommit.d.ts +2 -2
- package/STM/internal/Versioned.d.ts +1 -1
- package/STM.d.ts +1 -0
- package/Schedule/definition.d.ts +7 -3
- package/Scope/definition.d.ts +1 -1
- package/ScopedRef/definition.d.ts +1 -1
- package/State/api.d.ts +1 -1
- package/State/definition.d.ts +5 -2
- package/State/internal.d.ts +6 -2
- package/Stream/definition.d.ts +26 -5
- package/Stream/internal/Handoff.d.ts +21 -15
- package/Stream/internal/SinkEndReason.d.ts +2 -2
- package/Subject/Atomic.d.ts +8 -4
- package/SupervisorPatch.d.ts +1 -1
- package/TExit/definition.d.ts +5 -5
- package/TRef/definition.d.ts +16 -14
- package/TRef.d.ts +0 -1
- package/_cjs/Cached/definition.cjs +4 -2
- package/_cjs/Cached/definition.cjs.map +1 -1
- package/_cjs/Cached/internal.cjs +7 -6
- package/_cjs/Cached/internal.cjs.map +1 -1
- package/_cjs/Channel/api/mapOutConcurrentIO.cjs +1 -1
- package/_cjs/Channel/api/mergeAllWith.cjs +1 -1
- package/_cjs/Channel/api.cjs +20 -20
- package/_cjs/Channel/api.cjs.map +1 -1
- package/_cjs/Channel/definition.cjs +13 -3
- package/_cjs/Channel/definition.cjs.map +1 -1
- package/_cjs/Channel/internal/ChannelExecutor.cjs +11 -6
- package/_cjs/Channel/internal/ChannelExecutor.cjs.map +1 -1
- package/_cjs/Channel/internal/MergeDecision.cjs +7 -3
- package/_cjs/Channel/internal/MergeDecision.cjs.map +1 -1
- package/_cjs/CountdownLatch.cjs +4 -2
- package/_cjs/CountdownLatch.cjs.map +1 -1
- package/_cjs/Differ/definition.cjs +3 -1
- package/_cjs/Differ/definition.cjs.map +1 -1
- package/_cjs/Fiber/FiberRuntime.cjs +96 -89
- package/_cjs/Fiber/FiberRuntime.cjs.map +1 -1
- package/_cjs/Fiber/definition.cjs +8 -4
- package/_cjs/Fiber/definition.cjs.map +1 -1
- package/_cjs/FiberRef/definition.cjs +8 -4
- package/_cjs/FiberRef/definition.cjs.map +1 -1
- package/_cjs/Future/api.cjs +17 -6
- package/_cjs/Future/api.cjs.map +1 -1
- package/_cjs/Hub/api.cjs +5 -5
- package/_cjs/Hub/api.cjs.map +1 -1
- package/_cjs/Hub/definition.cjs +9 -7
- package/_cjs/Hub/definition.cjs.map +1 -1
- package/_cjs/Hub/internal.cjs +6 -6
- package/_cjs/Hub/internal.cjs.map +1 -1
- package/_cjs/IO/api/asyncIO.cjs +1 -1
- package/_cjs/IO/api/asyncIO.cjs.map +1 -1
- package/_cjs/IO/api/asyncInterrupt.cjs +2 -2
- package/_cjs/IO/api/asyncInterrupt.cjs.map +1 -1
- package/_cjs/IO/api/bracketExit.cjs +1 -1
- package/_cjs/IO/api/bracketExit.cjs.map +1 -1
- package/_cjs/IO/api/foreachConcurrent.cjs +2 -2
- package/_cjs/IO/api/foreachConcurrent.cjs.map +1 -1
- package/_cjs/IO/api/forkIn.cjs +1 -1
- package/_cjs/IO/api/forkIn.cjs.map +1 -1
- package/_cjs/IO/api/forkScoped.cjs +1 -1
- package/_cjs/IO/api/forkScoped.cjs.map +1 -1
- package/_cjs/IO/api/fulfill.cjs +1 -1
- package/_cjs/IO/api/fulfill.cjs.map +1 -1
- package/_cjs/IO/api/interrupt.cjs +52 -43
- package/_cjs/IO/api/interrupt.cjs.map +1 -1
- package/_cjs/IO/api/onTermination.cjs +7 -6
- package/_cjs/IO/api/onTermination.cjs.map +1 -1
- package/_cjs/IO/api/race.cjs +1 -1
- package/_cjs/IO/api/race.cjs.map +1 -1
- package/_cjs/IO/api/sequenceT.cjs +1 -1
- package/_cjs/IO/api/sequenceT.cjs.map +1 -1
- package/_cjs/IO/api/zipConcurrent.cjs +1 -1
- package/_cjs/IO/api/zipConcurrent.cjs.map +1 -1
- package/_cjs/IO/api.cjs +79 -53
- package/_cjs/IO/api.cjs.map +1 -1
- package/_cjs/IO/definition.cjs +26 -21
- package/_cjs/IO/definition.cjs.map +1 -1
- package/_cjs/IO.cjs +0 -11
- package/_cjs/IO.cjs.map +1 -1
- package/_cjs/Layer/MemoMap.cjs +30 -31
- package/_cjs/Layer/MemoMap.cjs.map +1 -1
- package/_cjs/Layer/api.cjs +1 -1
- package/_cjs/Layer/api.cjs.map +1 -1
- package/_cjs/Layer/definition.cjs +12 -10
- package/_cjs/Layer/definition.cjs.map +1 -1
- package/_cjs/Logger/definition.cjs +3 -1
- package/_cjs/Logger/definition.cjs.map +1 -1
- package/_cjs/MVar/api.cjs +170 -0
- package/_cjs/MVar/api.cjs.map +1 -0
- package/_cjs/MVar/definition.cjs +28 -0
- package/_cjs/MVar/definition.cjs.map +1 -0
- package/_cjs/MVar.cjs +28 -0
- package/_cjs/MVar.cjs.map +1 -0
- package/_cjs/Push/api.cjs +39 -36
- package/_cjs/Push/api.cjs.map +1 -1
- package/_cjs/Push/definition.cjs +9 -2
- package/_cjs/Push/definition.cjs.map +1 -1
- package/_cjs/Push/internal.cjs +4 -2
- package/_cjs/Push/internal.cjs.map +1 -1
- package/_cjs/Queue/api/dimapIO.cjs +10 -10
- package/_cjs/Queue/api/dimapIO.cjs.map +1 -1
- package/_cjs/Queue/api/filterInputIO.cjs +4 -4
- package/_cjs/Queue/api/filterInputIO.cjs.map +1 -1
- package/_cjs/Queue/api/filterOutputIO.cjs +7 -7
- package/_cjs/Queue/api/filterOutputIO.cjs.map +1 -1
- package/_cjs/Queue/definition.cjs +3 -1
- package/_cjs/Queue/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 +2 -2
- package/_cjs/Queue/strategy.cjs.map +1 -1
- package/_cjs/Ref/Derived.cjs +8 -4
- package/_cjs/Ref/Derived.cjs.map +1 -1
- package/_cjs/Ref/Synchronized/constructors.cjs +16 -7
- package/_cjs/Ref/Synchronized/constructors.cjs.map +1 -1
- package/_cjs/Ref/Synchronized/definition.cjs +16 -12
- package/_cjs/Ref/Synchronized/definition.cjs.map +1 -1
- package/_cjs/Ref/definition.cjs +3 -2
- package/_cjs/Ref/definition.cjs.map +1 -1
- package/_cjs/Ref.cjs +0 -11
- package/_cjs/Ref.cjs.map +1 -1
- package/_cjs/RefSubject/Synchronized/api.cjs +1 -1
- package/_cjs/RefSubject/definition.cjs +9 -5
- package/_cjs/RefSubject/definition.cjs.map +1 -1
- package/_cjs/Reloadable/definition.cjs +4 -2
- package/_cjs/Reloadable/definition.cjs.map +1 -1
- package/_cjs/STM/api/atomically.cjs +55 -0
- package/_cjs/STM/api/atomically.cjs.map +1 -0
- package/_cjs/STM/api.cjs +65 -91
- package/_cjs/STM/api.cjs.map +1 -1
- package/_cjs/STM/definition.cjs +32 -19
- package/_cjs/STM/definition.cjs.map +1 -1
- package/_cjs/STM/driver.cjs +3 -3
- package/_cjs/STM/driver.cjs.map +1 -1
- package/_cjs/STM/internal/Entry.cjs +6 -3
- package/_cjs/STM/internal/Entry.cjs.map +1 -1
- package/_cjs/STM/internal/TryCommit.cjs +5 -2
- package/_cjs/STM/internal/TryCommit.cjs.map +1 -1
- package/_cjs/STM/internal/Versioned.cjs +3 -1
- package/_cjs/STM/internal/Versioned.cjs.map +1 -1
- package/_cjs/STM.cjs +11 -0
- package/_cjs/STM.cjs.map +1 -1
- package/_cjs/Schedule/definition.cjs +3 -1
- package/_cjs/Schedule/definition.cjs.map +1 -1
- package/_cjs/Scope/api.cjs +1 -2
- package/_cjs/Scope/api.cjs.map +1 -1
- package/_cjs/Scope/definition.cjs +5 -3
- package/_cjs/Scope/definition.cjs.map +1 -1
- package/_cjs/ScopedRef/api.cjs +2 -2
- package/_cjs/ScopedRef/api.cjs.map +1 -1
- package/_cjs/ScopedRef/definition.cjs +3 -1
- package/_cjs/ScopedRef/definition.cjs.map +1 -1
- package/_cjs/State/api.cjs +2 -2
- package/_cjs/State/api.cjs.map +1 -1
- package/_cjs/State/definition.cjs +4 -2
- package/_cjs/State/definition.cjs.map +1 -1
- package/_cjs/State/internal.cjs +7 -3
- package/_cjs/State/internal.cjs.map +1 -1
- package/_cjs/Stream/api.cjs +1 -1
- package/_cjs/Stream/definition.cjs +4 -2
- package/_cjs/Stream/definition.cjs.map +1 -1
- package/_cjs/Stream/internal/Handoff.cjs +37 -37
- package/_cjs/Stream/internal/Handoff.cjs.map +1 -1
- package/_cjs/Stream/internal/SinkEndReason.cjs +6 -3
- package/_cjs/Stream/internal/SinkEndReason.cjs.map +1 -1
- package/_cjs/Subject/Atomic.cjs +6 -4
- package/_cjs/Subject/Atomic.cjs.map +1 -1
- package/_cjs/SubscriptionRef.cjs +1 -1
- package/_cjs/SupervisorPatch.cjs +3 -1
- package/_cjs/SupervisorPatch.cjs.map +1 -1
- package/_cjs/TExit/definition.cjs +25 -24
- package/_cjs/TExit/definition.cjs.map +1 -1
- package/_cjs/TFuture/constructors.cjs +1 -1
- package/_cjs/TReentrantLock/api.cjs +10 -9
- package/_cjs/TReentrantLock/api.cjs.map +1 -1
- package/_cjs/TRef/constructors.cjs +1 -1
- package/_cjs/TRef/definition.cjs +21 -21
- package/_cjs/TRef/definition.cjs.map +1 -1
- package/_cjs/TRef.cjs +0 -11
- package/_cjs/TRef.cjs.map +1 -1
- package/_cjs/TSemaphore/api.cjs +2 -2
- package/_cjs/TSemaphore/api.cjs.map +1 -1
- package/_cjs/TSemaphore/constructors.cjs +1 -1
- package/_cjs/internal/IsFatal.cjs +3 -1
- package/_cjs/internal/IsFatal.cjs.map +1 -1
- package/_mjs/Cached/definition.mjs +4 -2
- package/_mjs/Cached/definition.mjs.map +1 -1
- package/_mjs/Cached/internal.mjs +3 -5
- package/_mjs/Cached/internal.mjs.map +1 -1
- package/_mjs/Channel/api/mapOutConcurrentIO.mjs +1 -1
- package/_mjs/Channel/api/mergeAllWith.mjs +1 -1
- package/_mjs/Channel/api.mjs +15 -14
- package/_mjs/Channel/api.mjs.map +1 -1
- package/_mjs/Channel/definition.mjs +9 -1
- package/_mjs/Channel/definition.mjs.map +1 -1
- package/_mjs/Channel/internal/ChannelExecutor.mjs +11 -6
- package/_mjs/Channel/internal/ChannelExecutor.mjs.map +1 -1
- package/_mjs/Channel/internal/MergeDecision.mjs +4 -1
- package/_mjs/Channel/internal/MergeDecision.mjs.map +1 -1
- package/_mjs/CountdownLatch.mjs +3 -1
- package/_mjs/CountdownLatch.mjs.map +1 -1
- package/_mjs/Differ/definition.mjs +3 -1
- package/_mjs/Differ/definition.mjs.map +1 -1
- package/_mjs/Fiber/FiberRuntime.mjs +97 -90
- package/_mjs/Fiber/FiberRuntime.mjs.map +1 -1
- package/_mjs/Fiber/definition.mjs +5 -2
- package/_mjs/Fiber/definition.mjs.map +1 -1
- package/_mjs/FiberRef/definition.mjs +6 -3
- package/_mjs/FiberRef/definition.mjs.map +1 -1
- package/_mjs/Future/api.mjs +17 -6
- package/_mjs/Future/api.mjs.map +1 -1
- package/_mjs/Hub/api.mjs +6 -6
- package/_mjs/Hub/api.mjs.map +1 -1
- package/_mjs/Hub/definition.mjs +5 -4
- package/_mjs/Hub/definition.mjs.map +1 -1
- package/_mjs/Hub/internal.mjs +6 -6
- package/_mjs/Hub/internal.mjs.map +1 -1
- package/_mjs/IO/api/asyncIO.mjs +1 -1
- package/_mjs/IO/api/asyncIO.mjs.map +1 -1
- package/_mjs/IO/api/asyncInterrupt.mjs +2 -2
- package/_mjs/IO/api/asyncInterrupt.mjs.map +1 -1
- package/_mjs/IO/api/bracketExit.mjs +1 -1
- package/_mjs/IO/api/bracketExit.mjs.map +1 -1
- package/_mjs/IO/api/foreachConcurrent.mjs +2 -2
- package/_mjs/IO/api/foreachConcurrent.mjs.map +1 -1
- package/_mjs/IO/api/forkIn.mjs +1 -1
- package/_mjs/IO/api/forkIn.mjs.map +1 -1
- package/_mjs/IO/api/forkScoped.mjs +1 -1
- package/_mjs/IO/api/forkScoped.mjs.map +1 -1
- package/_mjs/IO/api/fulfill.mjs +1 -1
- package/_mjs/IO/api/fulfill.mjs.map +1 -1
- package/_mjs/IO/api/interrupt.mjs +46 -38
- package/_mjs/IO/api/interrupt.mjs.map +1 -1
- package/_mjs/IO/api/onTermination.mjs +7 -6
- package/_mjs/IO/api/onTermination.mjs.map +1 -1
- package/_mjs/IO/api/race.mjs +1 -1
- package/_mjs/IO/api/race.mjs.map +1 -1
- package/_mjs/IO/api/sequenceT.mjs +1 -1
- package/_mjs/IO/api/sequenceT.mjs.map +1 -1
- package/_mjs/IO/api/zipConcurrent.mjs +1 -1
- package/_mjs/IO/api/zipConcurrent.mjs.map +1 -1
- package/_mjs/IO/api.mjs +73 -50
- package/_mjs/IO/api.mjs.map +1 -1
- package/_mjs/IO/definition.mjs +23 -19
- package/_mjs/IO/definition.mjs.map +1 -1
- package/_mjs/IO.mjs +0 -1
- package/_mjs/IO.mjs.map +1 -1
- package/_mjs/Layer/MemoMap.mjs +28 -29
- package/_mjs/Layer/MemoMap.mjs.map +1 -1
- package/_mjs/Layer/api.mjs +2 -2
- package/_mjs/Layer/api.mjs.map +1 -1
- package/_mjs/Layer/definition.mjs +9 -8
- package/_mjs/Layer/definition.mjs.map +1 -1
- package/_mjs/Logger/definition.mjs +1 -0
- package/_mjs/Logger/definition.mjs.map +1 -1
- package/_mjs/MVar/api.mjs +150 -0
- package/_mjs/MVar/api.mjs.map +1 -0
- package/_mjs/MVar/definition.mjs +18 -0
- package/_mjs/MVar/definition.mjs.map +1 -0
- package/_mjs/MVar.mjs +4 -0
- package/_mjs/MVar.mjs.map +1 -0
- package/_mjs/Push/api.mjs +39 -36
- package/_mjs/Push/api.mjs.map +1 -1
- package/_mjs/Push/definition.mjs +5 -0
- package/_mjs/Push/definition.mjs.map +1 -1
- package/_mjs/Push/internal.mjs +4 -2
- package/_mjs/Push/internal.mjs.map +1 -1
- package/_mjs/Queue/api/dimapIO.mjs +11 -11
- package/_mjs/Queue/api/dimapIO.mjs.map +1 -1
- package/_mjs/Queue/api/filterInputIO.mjs +5 -5
- package/_mjs/Queue/api/filterInputIO.mjs.map +1 -1
- package/_mjs/Queue/api/filterOutputIO.mjs +8 -8
- package/_mjs/Queue/api/filterOutputIO.mjs.map +1 -1
- package/_mjs/Queue/definition.mjs +1 -0
- package/_mjs/Queue/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 +2 -2
- package/_mjs/Queue/strategy.mjs.map +1 -1
- package/_mjs/Ref/Derived.mjs +6 -3
- package/_mjs/Ref/Derived.mjs.map +1 -1
- package/_mjs/Ref/Synchronized/constructors.mjs +15 -7
- package/_mjs/Ref/Synchronized/constructors.mjs.map +1 -1
- package/_mjs/Ref/Synchronized/definition.mjs +13 -10
- package/_mjs/Ref/Synchronized/definition.mjs.map +1 -1
- package/_mjs/Ref/definition.mjs +1 -1
- package/_mjs/Ref/definition.mjs.map +1 -1
- package/_mjs/Ref.mjs +0 -1
- package/_mjs/Ref.mjs.map +1 -1
- package/_mjs/RefSubject/Synchronized/api.mjs +1 -1
- package/_mjs/RefSubject/definition.mjs +10 -3
- package/_mjs/RefSubject/definition.mjs.map +1 -1
- package/_mjs/Reloadable/definition.mjs +2 -1
- package/_mjs/Reloadable/definition.mjs.map +1 -1
- package/_mjs/STM/api/atomically.mjs +47 -0
- package/_mjs/STM/api/atomically.mjs.map +1 -0
- package/_mjs/STM/api.mjs +61 -88
- package/_mjs/STM/api.mjs.map +1 -1
- package/_mjs/STM/definition.mjs +27 -17
- package/_mjs/STM/definition.mjs.map +1 -1
- package/_mjs/STM/driver.mjs +3 -3
- package/_mjs/STM/driver.mjs.map +1 -1
- package/_mjs/STM/internal/Entry.mjs +5 -2
- package/_mjs/STM/internal/Entry.mjs.map +1 -1
- package/_mjs/STM/internal/TryCommit.mjs +6 -2
- package/_mjs/STM/internal/TryCommit.mjs.map +1 -1
- package/_mjs/STM/internal/Versioned.mjs +3 -1
- package/_mjs/STM/internal/Versioned.mjs.map +1 -1
- package/_mjs/STM.mjs +1 -0
- package/_mjs/STM.mjs.map +1 -1
- package/_mjs/Schedule/definition.mjs +1 -0
- package/_mjs/Schedule/definition.mjs.map +1 -1
- package/_mjs/Scope/api.mjs +1 -2
- package/_mjs/Scope/api.mjs.map +1 -1
- package/_mjs/Scope/definition.mjs +4 -2
- package/_mjs/Scope/definition.mjs.map +1 -1
- package/_mjs/ScopedRef/api.mjs +2 -2
- package/_mjs/ScopedRef/api.mjs.map +1 -1
- package/_mjs/ScopedRef/definition.mjs +3 -1
- package/_mjs/ScopedRef/definition.mjs.map +1 -1
- package/_mjs/State/api.mjs +1 -1
- package/_mjs/State/api.mjs.map +1 -1
- package/_mjs/State/definition.mjs +4 -1
- package/_mjs/State/definition.mjs.map +1 -1
- package/_mjs/State/internal.mjs +5 -2
- package/_mjs/State/internal.mjs.map +1 -1
- package/_mjs/Stream/api.mjs +1 -1
- package/_mjs/Stream/definition.mjs +2 -1
- package/_mjs/Stream/definition.mjs.map +1 -1
- package/_mjs/Stream/internal/Handoff.mjs +40 -32
- package/_mjs/Stream/internal/Handoff.mjs.map +1 -1
- package/_mjs/Stream/internal/SinkEndReason.mjs +6 -2
- package/_mjs/Stream/internal/SinkEndReason.mjs.map +1 -1
- package/_mjs/Subject/Atomic.mjs +4 -2
- package/_mjs/Subject/Atomic.mjs.map +1 -1
- package/_mjs/SubscriptionRef.mjs +1 -1
- package/_mjs/SupervisorPatch.mjs +3 -1
- package/_mjs/SupervisorPatch.mjs.map +1 -1
- package/_mjs/TExit/definition.mjs +25 -24
- package/_mjs/TExit/definition.mjs.map +1 -1
- package/_mjs/TFuture/constructors.mjs +1 -1
- package/_mjs/TReentrantLock/api.mjs +10 -9
- package/_mjs/TReentrantLock/api.mjs.map +1 -1
- package/_mjs/TRef/constructors.mjs +1 -1
- package/_mjs/TRef/definition.mjs +19 -20
- package/_mjs/TRef/definition.mjs.map +1 -1
- package/_mjs/TRef.mjs +0 -1
- package/_mjs/TRef.mjs.map +1 -1
- package/_mjs/TSemaphore/api.mjs +2 -2
- package/_mjs/TSemaphore/api.mjs.map +1 -1
- package/_mjs/TSemaphore/constructors.mjs +1 -1
- package/_mjs/internal/IsFatal.mjs +3 -1
- package/_mjs/internal/IsFatal.mjs.map +1 -1
- package/_src/Cached/definition.ts +6 -4
- package/_src/Cached/internal.ts +4 -4
- package/_src/Channel/api.ts +14 -15
- package/_src/Channel/definition.ts +37 -14
- package/_src/Channel/internal/ChannelExecutor.ts +14 -3
- package/_src/Channel/internal/MergeDecision.ts +11 -6
- package/_src/CountdownLatch.ts +1 -1
- package/_src/Differ/definition.ts +2 -4
- package/_src/Fiber/FiberRuntime.ts +54 -50
- package/_src/Fiber/definition.ts +15 -8
- package/_src/FiberRef/definition.ts +9 -4
- package/_src/FiberRefs/api.ts +1 -1
- package/_src/FiberRefs/definition.ts +1 -1
- package/_src/Future/api.ts +14 -5
- package/_src/Hub/api.ts +9 -7
- package/_src/Hub/definition.ts +30 -15
- package/_src/IO/api/interrupt.ts +72 -55
- package/_src/IO/api/onTermination.ts +8 -7
- package/_src/IO/api/sequenceT.ts +4 -6
- package/_src/IO/api.ts +23 -1
- package/_src/IO/definition.ts +36 -27
- package/_src/IO.ts +0 -1
- package/_src/Layer/MemoMap.ts +1 -1
- package/_src/Layer/api.ts +2 -2
- package/_src/Layer/definition.ts +18 -13
- package/_src/Logger/definition.ts +9 -4
- package/_src/MVar/api.ts +185 -0
- package/_src/MVar/definition.ts +45 -0
- package/_src/MVar.ts +4 -0
- package/_src/Push/api.ts +7 -4
- package/_src/Push/definition.ts +12 -3
- package/_src/Push/internal.ts +2 -2
- package/_src/Queue/api/dimapIO.ts +24 -13
- package/_src/Queue/api/filterInputIO.ts +9 -7
- package/_src/Queue/api/filterOutputIO.ts +9 -7
- package/_src/Queue/definition.ts +27 -18
- package/_src/Ref/Derived.ts +4 -1
- package/_src/Ref/Synchronized/constructors.ts +9 -0
- package/_src/Ref/Synchronized/definition.ts +5 -2
- package/_src/Ref/definition.ts +36 -25
- package/_src/Ref.ts +0 -1
- package/_src/RefSubject/definition.ts +19 -12
- package/_src/Reloadable/definition.ts +6 -1
- package/_src/STM/api/atomically.ts +43 -0
- package/_src/STM/api.ts +20 -38
- package/_src/STM/definition.ts +33 -20
- package/_src/STM/driver.ts +3 -3
- package/_src/STM/internal/Entry.ts +2 -2
- package/_src/STM/internal/TryCommit.ts +4 -4
- package/_src/STM/internal/Versioned.ts +1 -1
- package/_src/STM.ts +1 -0
- package/_src/Schedule/definition.ts +8 -3
- package/_src/Scope/definition.ts +2 -2
- package/_src/ScopedRef/definition.ts +1 -1
- package/_src/State/api.ts +1 -1
- package/_src/State/definition.ts +6 -3
- package/_src/State/internal.ts +8 -3
- package/_src/Stream/definition.ts +17 -5
- package/_src/Stream/internal/Handoff.ts +31 -24
- package/_src/Stream/internal/SinkEndReason.ts +2 -2
- package/_src/Subject/Atomic.ts +8 -4
- package/_src/SupervisorPatch.ts +1 -1
- package/_src/TExit/definition.ts +11 -12
- package/_src/TRef/definition.ts +18 -14
- package/_src/TRef.ts +0 -1
- package/_src/global.ts +4 -0
- package/_src/internal/IsFatal.ts +1 -1
- package/global.d.ts +4 -0
- package/internal/IsFatal.d.ts +1 -1
- package/package.json +2 -2
- package/IO/api/onExit.d.ts +0 -7
- package/Ref/symbols.d.ts +0 -30
- package/TRef/symbols.d.ts +0 -20
- package/_cjs/IO/api/onExit.cjs +0 -19
- package/_cjs/IO/api/onExit.cjs.map +0 -1
- package/_cjs/Ref/symbols.cjs +0 -37
- package/_cjs/Ref/symbols.cjs.map +0 -1
- package/_cjs/TRef/symbols.cjs +0 -27
- package/_cjs/TRef/symbols.cjs.map +0 -1
- package/_mjs/IO/api/onExit.mjs +0 -11
- package/_mjs/IO/api/onExit.mjs.map +0 -1
- package/_mjs/Ref/symbols.mjs +0 -25
- package/_mjs/Ref/symbols.mjs.map +0 -1
- package/_mjs/TRef/symbols.mjs +0 -17
- package/_mjs/TRef/symbols.mjs.map +0 -1
- package/_src/IO/api/onExit.ts +0 -11
- package/_src/Ref/symbols.ts +0 -29
- package/_src/TRef/symbols.ts +0 -19
package/_src/FiberRefs/api.ts
CHANGED
@@ -81,6 +81,6 @@ export function remove(self: FiberRefs, fiberRef: FiberRef<any>): FiberRefs {
|
|
81
81
|
* @tsplus getter fncts.io.FiberRefs unFiberRefs
|
82
82
|
* @tsplus macro identity
|
83
83
|
*/
|
84
|
-
export function unFiberRefs(self: FiberRefs): HashMap<FiberRef<
|
84
|
+
export function unFiberRefs(self: FiberRefs): HashMap<FiberRef<any>, Cons<readonly [FiberId.Runtime, unknown]>> {
|
85
85
|
return FiberRefs.reverseGet(self);
|
86
86
|
}
|
@@ -8,7 +8,7 @@ export interface FiberRefsN extends HKT {
|
|
8
8
|
export interface FiberRefs
|
9
9
|
extends Newtype<
|
10
10
|
{ readonly FiberRefs: unique symbol },
|
11
|
-
HashMap<FiberRef<
|
11
|
+
HashMap<FiberRef<any>, Cons<readonly [FiberId.Runtime, unknown]>>
|
12
12
|
> {}
|
13
13
|
|
14
14
|
/**
|
package/_src/Future/api.ts
CHANGED
@@ -194,17 +194,26 @@ export function unsafeSucceed<A>(a: A, __tsplusTrace?: string) {
|
|
194
194
|
* @tsplus getter fncts.io.Future await
|
195
195
|
*/
|
196
196
|
export function wait<E, A>(future: Future<E, A>, __tsplusTrace?: string): IO<never, E, A> {
|
197
|
-
return IO.
|
197
|
+
return IO.defer(() => {
|
198
198
|
switch (future.state._tag) {
|
199
199
|
case FutureStateTag.Done: {
|
200
|
-
return
|
200
|
+
return future.state.value;
|
201
201
|
}
|
202
202
|
case FutureStateTag.Pending: {
|
203
|
-
|
204
|
-
|
203
|
+
return IO.asyncInterrupt<never, E, A>((k) => {
|
204
|
+
switch (future.state._tag) {
|
205
|
+
case FutureStateTag.Done: {
|
206
|
+
return Either.right(future.state.value);
|
207
|
+
}
|
208
|
+
case FutureStateTag.Pending: {
|
209
|
+
future.state = new Pending(future.state.joiners.prepend(k));
|
210
|
+
return Either.left(interruptJoiner(future, k));
|
211
|
+
}
|
212
|
+
}
|
213
|
+
}, future.blockingOn);
|
205
214
|
}
|
206
215
|
}
|
207
|
-
}
|
216
|
+
});
|
208
217
|
}
|
209
218
|
|
210
219
|
function interruptJoiner<E, A>(
|
package/_src/Hub/api.ts
CHANGED
@@ -11,7 +11,7 @@ import {
|
|
11
11
|
unsafeMakeHub,
|
12
12
|
} from "@fncts/io/Hub/internal";
|
13
13
|
import { Hub as HubInternal } from "@fncts/io/internal/Hub";
|
14
|
-
import { EnqueueTypeId, QueueTypeId } from "@fncts/io/Queue";
|
14
|
+
import { EnqueueTypeId, QueueTypeId , QueueVariance } from "@fncts/io/Queue";
|
15
15
|
|
16
16
|
/**
|
17
17
|
* Waits for the hub to be shut down.
|
@@ -275,12 +275,14 @@ export function mapIO<B, RC, EC, C>(f: (b: B) => IO<RC, EC, C>, __tsplusTrace?:
|
|
275
275
|
class ToQueue<RA, RB, EA, EB, A, B> implements PEnqueue<RA, RB, EA, EB, A, B> {
|
276
276
|
readonly [QueueTypeId]: QueueTypeId = QueueTypeId;
|
277
277
|
readonly [EnqueueTypeId]: EnqueueTypeId = EnqueueTypeId;
|
278
|
-
declare
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
278
|
+
declare [QueueVariance]: {
|
279
|
+
readonly _RA: (_: never) => RA;
|
280
|
+
readonly _RB: (_: never) => RB;
|
281
|
+
readonly _EA: (_: never) => EA;
|
282
|
+
readonly _EB: (_: never) => EB;
|
283
|
+
readonly _A: (_: A) => void;
|
284
|
+
readonly _B: (_: never) => B;
|
285
|
+
};
|
284
286
|
constructor(readonly source: PHubInternal<RA, RB, EA, EB, A, B>) {}
|
285
287
|
awaitShutdown = this.source.awaitShutdown;
|
286
288
|
capacity = this.source.capacity;
|
package/_src/Hub/definition.ts
CHANGED
@@ -1,7 +1,10 @@
|
|
1
1
|
import type { IO } from "@fncts/io/IO";
|
2
2
|
import type { PDequeue, PEnqueue, PEnqueueInternal } from "@fncts/io/Queue";
|
3
3
|
|
4
|
-
import { EnqueueTypeId, QueueTypeId } from "@fncts/io/Queue";
|
4
|
+
import { EnqueueTypeId, QueueTypeId, QueueVariance } from "@fncts/io/Queue/definition";
|
5
|
+
|
6
|
+
export const HubVariance = Symbol.for("fncts.io.Hub.Variance");
|
7
|
+
export type HubVariance = typeof HubVariance;
|
5
8
|
|
6
9
|
export const HubTypeId = Symbol.for("fncts.io.Hub");
|
7
10
|
export type HubTypeId = typeof HubTypeId;
|
@@ -17,13 +20,15 @@ export type HubTypeId = typeof HubTypeId;
|
|
17
20
|
* @tsplus type fncts.io.Hub
|
18
21
|
*/
|
19
22
|
export interface PHub<RA, RB, EA, EB, A, B> extends PEnqueue<RA, RB, EA, EB, A, B> {
|
20
|
-
readonly
|
21
|
-
readonly
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
23
|
+
readonly [HubTypeId]: HubTypeId;
|
24
|
+
readonly [HubVariance]: {
|
25
|
+
readonly _RA: (_: never) => RA;
|
26
|
+
readonly _RB: (_: never) => RB;
|
27
|
+
readonly _EA: (_: never) => EA;
|
28
|
+
readonly _EB: (_: never) => EB;
|
29
|
+
readonly _A: (_: A) => void;
|
30
|
+
readonly _B: (_: never) => B;
|
31
|
+
};
|
27
32
|
}
|
28
33
|
|
29
34
|
/**
|
@@ -46,13 +51,23 @@ export abstract class PHubInternal<RA, RB, EA, EB, A, B>
|
|
46
51
|
{
|
47
52
|
readonly [QueueTypeId]: QueueTypeId = QueueTypeId;
|
48
53
|
readonly [EnqueueTypeId]: EnqueueTypeId = EnqueueTypeId;
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
54
|
+
readonly [HubTypeId]: HubTypeId = HubTypeId;
|
55
|
+
declare [HubVariance]: {
|
56
|
+
readonly _RA: (_: never) => RA;
|
57
|
+
readonly _RB: (_: never) => RB;
|
58
|
+
readonly _EA: (_: never) => EA;
|
59
|
+
readonly _EB: (_: never) => EB;
|
60
|
+
readonly _A: (_: A) => void;
|
61
|
+
readonly _B: (_: never) => B;
|
62
|
+
};
|
63
|
+
declare [QueueVariance]: {
|
64
|
+
readonly _RA: (_: never) => RA;
|
65
|
+
readonly _RB: (_: never) => RB;
|
66
|
+
readonly _EA: (_: never) => EA;
|
67
|
+
readonly _EB: (_: never) => EB;
|
68
|
+
readonly _A: (_: A) => void;
|
69
|
+
readonly _B: (_: never) => B;
|
70
|
+
};
|
56
71
|
|
57
72
|
/**
|
58
73
|
* Waits for the hub to be shut down.
|
package/_src/IO/api/interrupt.ts
CHANGED
@@ -2,6 +2,21 @@ import { Dynamic, Interruptible, Uninterruptible } from "@fncts/io/IO/definition
|
|
2
2
|
import { RuntimeFlag } from "@fncts/io/RuntimeFlag";
|
3
3
|
import { RuntimeFlags } from "@fncts/io/RuntimeFlags";
|
4
4
|
|
5
|
+
export interface InterruptibilityRestorer {
|
6
|
+
readonly restore: <R, E, A>(io: IO<R, E, A>, __tsplusTrace?: string) => IO<R, E, A>;
|
7
|
+
readonly force: <R, E, A>(io: IO<R, E, A>, __tsplusTrace?: string) => IO<R, E, A>;
|
8
|
+
}
|
9
|
+
|
10
|
+
const RestoreInterruptible: InterruptibilityRestorer = {
|
11
|
+
restore: (io, __tsplusTrace) => io.interruptible,
|
12
|
+
force: (io, __tsplusTrace) => io.interruptible,
|
13
|
+
};
|
14
|
+
|
15
|
+
const RestoreUninterruptible: InterruptibilityRestorer = {
|
16
|
+
restore: (io, __tsplusTrace) => io.uninterruptible,
|
17
|
+
force: (io, __tsplusTrace) => io.uninterruptible.disconnect.interruptible,
|
18
|
+
};
|
19
|
+
|
5
20
|
/**
|
6
21
|
* Returns an effect that is interrupted as if by the specified fiber.
|
7
22
|
*
|
@@ -51,7 +66,6 @@ export const interrupt: IO<never, never, never> = IO.fiberId.flatMap(IO.interrup
|
|
51
66
|
*/
|
52
67
|
export function interruptible<R, E, A>(self: IO<R, E, A>, __tsplusTrace?: string): IO<R, E, A> {
|
53
68
|
return new Interruptible(self, __tsplusTrace);
|
54
|
-
// return self.setInterruptStatus(InterruptStatus.interruptible);
|
55
69
|
}
|
56
70
|
|
57
71
|
/**
|
@@ -67,7 +81,6 @@ export function interruptible<R, E, A>(self: IO<R, E, A>, __tsplusTrace?: string
|
|
67
81
|
*/
|
68
82
|
export function uninterruptible<R, E, A>(self: IO<R, E, A>, __tsplusTrace?: string): IO<R, E, A> {
|
69
83
|
return new Uninterruptible(self, __tsplusTrace);
|
70
|
-
// return self.setInterruptStatus(InterruptStatus.uninterruptible);
|
71
84
|
}
|
72
85
|
|
73
86
|
/**
|
@@ -77,9 +90,9 @@ export function uninterruptible<R, E, A>(self: IO<R, E, A>, __tsplusTrace?: stri
|
|
77
90
|
*
|
78
91
|
* @tsplus static fncts.io.IOOps uninterruptibleMask
|
79
92
|
*/
|
80
|
-
export function uninterruptibleMask<R, E, A>(f: (restore:
|
93
|
+
export function uninterruptibleMask<R, E, A>(f: (restore: InterruptibilityRestorer) => IO<R, E, A>): IO<R, E, A> {
|
81
94
|
return new Dynamic(RuntimeFlags.disable(RuntimeFlag.Interruption), (oldFlags) =>
|
82
|
-
f(
|
95
|
+
f(oldFlags.interruption ? RestoreInterruptible : RestoreUninterruptible),
|
83
96
|
);
|
84
97
|
}
|
85
98
|
|
@@ -109,52 +122,72 @@ export function ensuring<R1>(finalizer: IO<R1, never, any>, __tsplusTrace?: stri
|
|
109
122
|
* @tsplus static fncts.io.IOOps interruptibleMask
|
110
123
|
*/
|
111
124
|
export function interruptibleMask<R, E, A>(
|
112
|
-
k: (restore:
|
125
|
+
k: (restore: InterruptibilityRestorer) => IO<R, E, A>,
|
113
126
|
__tsplusTrace?: string,
|
114
127
|
): IO<R, E, A> {
|
115
|
-
return IO.checkInterruptible(
|
128
|
+
return IO.checkInterruptible(
|
129
|
+
(flag) => k(flag.isInterruptible ? RestoreInterruptible : RestoreUninterruptible).interruptible,
|
130
|
+
);
|
116
131
|
}
|
117
132
|
|
118
133
|
/**
|
119
134
|
* Calls the specified function, and runs the effect it returns, if this
|
120
135
|
* effect is interrupted.
|
121
136
|
*
|
122
|
-
* @tsplus
|
137
|
+
* @tsplus pipeable fncts.io.IO onInterrupt
|
123
138
|
*/
|
124
|
-
export function
|
125
|
-
ma: IO<R, E, A
|
126
|
-
|
127
|
-
|
128
|
-
)
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
IO.succeedNow,
|
134
|
-
),
|
135
|
-
);
|
139
|
+
export function onInterrupt<R1, E1>(cleanup: Lazy<IO<R1, E1, any>>, __tsplusTrace?: string) {
|
140
|
+
return <R, E, A>(ma: IO<R, E, A>): IO<R | R1, E | E1, A> => {
|
141
|
+
return ma.onExit((exit) =>
|
142
|
+
exit.match(
|
143
|
+
(cause) => (cause.isInterruptedOnly ? cleanup() : IO.unit),
|
144
|
+
() => IO.unit,
|
145
|
+
),
|
146
|
+
);
|
147
|
+
};
|
136
148
|
}
|
137
149
|
|
138
150
|
/**
|
139
151
|
* Calls the specified function, and runs the effect it returns, if this
|
140
|
-
* effect is interrupted
|
152
|
+
* effect is interrupted.
|
141
153
|
*
|
142
|
-
* @tsplus
|
154
|
+
* @tsplus pipeable fncts.io.IO onInterrupt
|
143
155
|
*/
|
144
|
-
export function
|
145
|
-
|
146
|
-
cleanup: Lazy<IO<R2, E2, any>>,
|
156
|
+
export function onInterruptWith<R1, E1>(
|
157
|
+
cleanup: (interruptors: HashSet<FiberId>) => IO<R1, E1, any>,
|
147
158
|
__tsplusTrace?: string,
|
148
|
-
)
|
149
|
-
return
|
150
|
-
|
151
|
-
(
|
152
|
-
cause.
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
159
|
+
) {
|
160
|
+
return <R, E, A>(ma: IO<R, E, A>): IO<R | R1, E | E1, A> => {
|
161
|
+
return ma.onExit((exit) =>
|
162
|
+
exit.match(
|
163
|
+
(cause) => (cause.isInterruptedOnly ? cleanup(cause.interruptors) : IO.unit),
|
164
|
+
() => IO.unit,
|
165
|
+
),
|
166
|
+
);
|
167
|
+
};
|
168
|
+
}
|
169
|
+
|
170
|
+
/**
|
171
|
+
* @tsplus pipeable fncts.io.IO onExit
|
172
|
+
*/
|
173
|
+
export function onExit<E, A, R1, E1>(cleanup: (exit: Exit<E, A>) => IO<R1, E1, any>, __tsplusTrace?: string) {
|
174
|
+
return <R>(self: IO<R, E, A>): IO<R | R1, E | E1, A> => {
|
175
|
+
return IO.uninterruptibleMask(({ restore }) =>
|
176
|
+
restore(self).matchCauseIO(
|
177
|
+
(failure1) => {
|
178
|
+
const result = Exit.failCause(failure1);
|
179
|
+
return cleanup(result).matchCauseIO(
|
180
|
+
(failure2) => IO.failCauseNow(Cause.then(failure1, failure2)),
|
181
|
+
() => IO.fromExitNow(result),
|
182
|
+
);
|
183
|
+
},
|
184
|
+
(success) => {
|
185
|
+
const result = Exit.succeed(success);
|
186
|
+
return cleanup(result) > IO.fromExitNow(result);
|
187
|
+
},
|
188
|
+
),
|
189
|
+
);
|
190
|
+
};
|
158
191
|
}
|
159
192
|
|
160
193
|
/**
|
@@ -174,27 +207,11 @@ export function onInterruptExtended_<R, E, A, R2, E2>(
|
|
174
207
|
*/
|
175
208
|
export function disconnect<R, E, A>(self: IO<R, E, A>, __tsplusTrace?: string): IO<R, E, A> {
|
176
209
|
return uninterruptibleMask(({ restore }) =>
|
177
|
-
IO.fiberId.flatMap((
|
178
|
-
|
179
|
-
|
180
|
-
|
210
|
+
IO.fiberId.flatMap((fiberId) =>
|
211
|
+
Do((Δ) => {
|
212
|
+
const fiber = Δ(restore(self).forkDaemon);
|
213
|
+
return Δ(restore(fiber.join).onInterrupt(fiber.interruptAsFork(fiberId)));
|
214
|
+
}),
|
181
215
|
),
|
182
216
|
);
|
183
217
|
}
|
184
|
-
|
185
|
-
/**
|
186
|
-
* Used to restore the inherited interruptibility
|
187
|
-
*/
|
188
|
-
export class InterruptStatusRestore {
|
189
|
-
constructor(readonly flag: InterruptStatus) {}
|
190
|
-
|
191
|
-
restore = <R, E, A>(io: IO<R, E, A>): IO<R, E, A> =>
|
192
|
-
this.flag.isInterruptible ? io.interruptible : io.uninterruptible;
|
193
|
-
|
194
|
-
force = <R, E, A>(io: IO<R, E, A>): IO<R, E, A> => {
|
195
|
-
if (this.flag.isUninteruptible) {
|
196
|
-
return io.uninterruptible.disconnect.interruptible;
|
197
|
-
}
|
198
|
-
return io.interruptible;
|
199
|
-
};
|
200
|
-
}
|
@@ -3,13 +3,14 @@
|
|
3
3
|
*/
|
4
4
|
export function onTermination<R1>(cleanup: (cause: Cause<never>) => URIO<R1, any>, __tsplusTrace?: string) {
|
5
5
|
return <R, E, A>(self: Lazy<IO<R, E, A>>): IO<R | R1, E, A> => {
|
6
|
-
return IO.
|
7
|
-
(
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
),
|
6
|
+
return IO.defer(self).onExit((exit) =>
|
7
|
+
exit.match(
|
8
|
+
(cause) => {
|
9
|
+
if (cause.isFailure) return IO.unit;
|
10
|
+
else return cleanup(cause as Cause<never>);
|
11
|
+
},
|
12
|
+
() => IO.unit,
|
13
|
+
),
|
13
14
|
);
|
14
15
|
};
|
15
16
|
}
|
package/_src/IO/api/sequenceT.ts
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
import type {
|
1
|
+
import type { IOVariance } from "@fncts/io/IO/definition";
|
2
2
|
|
3
3
|
import { identity, unsafeCoerce } from "@fncts/base/data/function";
|
4
4
|
|
@@ -8,11 +8,9 @@ import { identity, unsafeCoerce } from "@fncts/base/data/function";
|
|
8
8
|
export function sequenceT<T extends ReadonlyNonEmptyArray<IO<any, any, any>>>(
|
9
9
|
...ios: T
|
10
10
|
): IO<
|
11
|
-
|
12
|
-
|
13
|
-
{
|
14
|
-
[K in keyof T]: _A<T[K]>;
|
15
|
-
}
|
11
|
+
[T[number]] extends [{ [IOVariance]: { _R: () => infer R } }] ? R : never,
|
12
|
+
[T[number]] extends [{ [IOVariance]: { _E: () => infer E } }] ? E : never,
|
13
|
+
{ [K in keyof T]: T[K] extends { [IOVariance]: { _A: () => infer A } } ? A : never }
|
16
14
|
> {
|
17
15
|
return unsafeCoerce(IO.foreach(ios, identity));
|
18
16
|
}
|
package/_src/IO/api.ts
CHANGED
@@ -410,6 +410,21 @@ export function deferTryCatch<R, E, A, E1>(
|
|
410
410
|
});
|
411
411
|
}
|
412
412
|
|
413
|
+
/**
|
414
|
+
* @tsplus static fncts.io.IOOps descriptorWith
|
415
|
+
*/
|
416
|
+
export function descriptorWith<R, E, A>(f: (descriptor: FiberDescriptor) => IO<R, E, A>): IO<R, E, A> {
|
417
|
+
return IO.withFiberRuntime((fiber, status) => {
|
418
|
+
const descriptor = new FiberDescriptor(fiber.id, status, fiber.getFiberRef(FiberRef.interruptedCause).interruptors);
|
419
|
+
return f(descriptor);
|
420
|
+
});
|
421
|
+
}
|
422
|
+
|
423
|
+
/**
|
424
|
+
* @tsplus static fncts.io.IOOps descriptor
|
425
|
+
*/
|
426
|
+
export const descriptor: UIO<FiberDescriptor> = IO.descriptorWith((descriptor) => IO.succeedNow(descriptor));
|
427
|
+
|
413
428
|
/**
|
414
429
|
* Folds an `IO` that may fail with `E` or succeed with `A` into one that never fails but succeeds with `Either<E, A>`
|
415
430
|
*
|
@@ -488,7 +503,14 @@ export function failCause<E = never, A = never>(cause: Lazy<Cause<E>>, __tsplusT
|
|
488
503
|
*
|
489
504
|
* @tsplus static fncts.io.IOOps fiberId
|
490
505
|
*/
|
491
|
-
export const fiberId: IO<never, never, FiberId> = IO.
|
506
|
+
export const fiberId: IO<never, never, FiberId> = IO.fiberIdWith((id) => IO.succeedNow(id));
|
507
|
+
|
508
|
+
/**
|
509
|
+
* @tsplus static fncts.io.IOOps fiberIdWith
|
510
|
+
*/
|
511
|
+
export function fiberIdWith<R, E, A>(f: (id: FiberId.Runtime) => IO<R, E, A>): IO<R, E, A> {
|
512
|
+
return IO.withFiberRuntime((fiber) => f(fiber.id));
|
513
|
+
}
|
492
514
|
|
493
515
|
/**
|
494
516
|
* Filters the collection using the specified effectual predicate.
|
package/_src/IO/definition.ts
CHANGED
@@ -6,6 +6,9 @@ import type { Trace } from "@fncts/base/data/Trace";
|
|
6
6
|
import { RuntimeFlag } from "../RuntimeFlag.js";
|
7
7
|
import { RuntimeFlags } from "../RuntimeFlags.js";
|
8
8
|
|
9
|
+
export const IOVariance = Symbol.for("fncts.io.IO.Variance");
|
10
|
+
export type IOVariance = typeof IOVariance;
|
11
|
+
|
9
12
|
export const IOTypeId = Symbol.for("fncts.io.IO");
|
10
13
|
export type IOTypeId = typeof IOTypeId;
|
11
14
|
|
@@ -23,10 +26,12 @@ export interface IOF extends HKT {
|
|
23
26
|
* @tsplus companion fncts.io.IOOps
|
24
27
|
*/
|
25
28
|
export abstract class IO<R, E, A> {
|
26
|
-
readonly
|
27
|
-
declare
|
28
|
-
|
29
|
-
|
29
|
+
readonly [IOTypeId]: IOTypeId = IOTypeId;
|
30
|
+
declare [IOVariance]: {
|
31
|
+
_R: () => R;
|
32
|
+
_E: () => E;
|
33
|
+
_A: () => A;
|
34
|
+
};
|
30
35
|
}
|
31
36
|
|
32
37
|
/**
|
@@ -45,9 +50,9 @@ export const IOAspects: IOAspects = {};
|
|
45
50
|
export function unifyIO<X extends IO<any, any, any>>(
|
46
51
|
self: X,
|
47
52
|
): IO<
|
48
|
-
[X] extends [{ _R: () => infer R }] ? R : never,
|
49
|
-
[X] extends [{ _E: () => infer E }] ? E : never,
|
50
|
-
[X] extends [{ _A: () => infer A }] ? A : never
|
53
|
+
[X] extends [{ [IOVariance]: { _R: () => infer R } }] ? R : never,
|
54
|
+
[X] extends [{ [IOVariance]: { _E: () => infer E } }] ? E : never,
|
55
|
+
[X] extends [{ [IOVariance]: { _A: () => infer A } }] ? A : never
|
51
56
|
> {
|
52
57
|
return self;
|
53
58
|
}
|
@@ -58,7 +63,7 @@ export type URIO<R, A> = IO<R, never, A>;
|
|
58
63
|
|
59
64
|
export type FIO<E, A> = IO<never, E, A>;
|
60
65
|
|
61
|
-
export const enum
|
66
|
+
export const enum IOOpCode {
|
62
67
|
SucceedNow,
|
63
68
|
Fail,
|
64
69
|
Sync,
|
@@ -72,21 +77,24 @@ export const enum IOTag {
|
|
72
77
|
Stateful,
|
73
78
|
WhileLoop,
|
74
79
|
YieldNow,
|
80
|
+
Commit,
|
81
|
+
RevertFlags,
|
82
|
+
UpdateTrace,
|
75
83
|
}
|
76
84
|
|
77
85
|
export function isIO(u: unknown): u is IO<any, any, any> {
|
78
|
-
return
|
86
|
+
return isObject(u) && IOTypeId in u;
|
79
87
|
}
|
80
88
|
|
81
89
|
export class Sync<A> extends IO<never, never, A> {
|
82
|
-
readonly
|
90
|
+
readonly ioOpCode = IOOpCode.Sync;
|
83
91
|
constructor(readonly evaluate: () => A, readonly trace?: string) {
|
84
92
|
super();
|
85
93
|
}
|
86
94
|
}
|
87
95
|
|
88
96
|
export class Async<R, E, A> extends IO<R, E, A> {
|
89
|
-
readonly
|
97
|
+
readonly ioOpCode = IOOpCode.Async;
|
90
98
|
constructor(
|
91
99
|
readonly registerCallback: (f: (_: IO<R, E, A>) => void) => any,
|
92
100
|
readonly blockingOn: () => FiberId,
|
@@ -100,7 +108,7 @@ export class Async<R, E, A> extends IO<R, E, A> {
|
|
100
108
|
* @internal
|
101
109
|
*/
|
102
110
|
export class OnSuccessAndFailure<R, E, A, R1, E1, B, R2, E2, C> extends IO<R | R1 | R2, E1 | E2, B | C> {
|
103
|
-
readonly
|
111
|
+
readonly ioOpCode = IOOpCode.OnSuccessAndFailure;
|
104
112
|
|
105
113
|
constructor(
|
106
114
|
readonly first: IO<R, E, A>,
|
@@ -120,7 +128,7 @@ export class OnSuccessAndFailure<R, E, A, R1, E1, B, R2, E2, C> extends IO<R | R
|
|
120
128
|
}
|
121
129
|
|
122
130
|
export class OnFailure<R, E, A, R1, E1, B> extends IO<R | R1, E1, A | B> {
|
123
|
-
readonly
|
131
|
+
readonly ioOpCode = IOOpCode.OnFailure;
|
124
132
|
constructor(
|
125
133
|
readonly first: IO<R, E, A>,
|
126
134
|
readonly failureK: (cause: Cause<E>) => IO<R1, E1, B>,
|
@@ -141,7 +149,7 @@ export class OnFailure<R, E, A, R1, E1, B> extends IO<R | R1, E1, A | B> {
|
|
141
149
|
* @internal
|
142
150
|
*/
|
143
151
|
export class OnSuccess<R, R1, E, E1, A, A1> extends IO<R | R1, E | E1, A1> {
|
144
|
-
readonly
|
152
|
+
readonly ioOpCode = IOOpCode.OnSuccess;
|
145
153
|
constructor(readonly first: IO<R, E, A>, readonly successK: (a: A) => IO<R1, E1, A1>, readonly trace?: string) {
|
146
154
|
super();
|
147
155
|
}
|
@@ -157,21 +165,21 @@ export class OnSuccess<R, R1, E, E1, A, A1> extends IO<R | R1, E | E1, A1> {
|
|
157
165
|
* @internal
|
158
166
|
*/
|
159
167
|
export class SucceedNow<A> extends IO<never, never, A> {
|
160
|
-
readonly
|
168
|
+
readonly ioOpCode = IOOpCode.SucceedNow;
|
161
169
|
constructor(readonly value: A, readonly trace?: string) {
|
162
170
|
super();
|
163
171
|
}
|
164
172
|
}
|
165
173
|
|
166
174
|
export class UpdateRuntimeFlags extends IO<never, never, void> {
|
167
|
-
readonly
|
175
|
+
readonly ioOpCode = IOOpCode.UpdateRuntimeFlags;
|
168
176
|
constructor(readonly update: RuntimeFlags.Patch, readonly trace?: string) {
|
169
177
|
super();
|
170
178
|
}
|
171
179
|
}
|
172
180
|
|
173
181
|
export class Interruptible<R, E, A> extends IO<R, E, A> {
|
174
|
-
readonly
|
182
|
+
readonly ioOpCode = IOOpCode.UpdateRuntimeFlagsWithin;
|
175
183
|
constructor(readonly effect: IO<R, E, A>, readonly trace?: string) {
|
176
184
|
super();
|
177
185
|
}
|
@@ -183,7 +191,7 @@ export class Interruptible<R, E, A> extends IO<R, E, A> {
|
|
183
191
|
}
|
184
192
|
|
185
193
|
export class Uninterruptible<R, E, A> extends IO<R, E, A> {
|
186
|
-
readonly
|
194
|
+
readonly ioOpCode = IOOpCode.UpdateRuntimeFlagsWithin;
|
187
195
|
constructor(readonly effect: IO<R, E, A>, readonly trace?: string) {
|
188
196
|
super();
|
189
197
|
}
|
@@ -195,7 +203,7 @@ export class Uninterruptible<R, E, A> extends IO<R, E, A> {
|
|
195
203
|
}
|
196
204
|
|
197
205
|
export class Dynamic<R, E, A> extends IO<R, E, A> {
|
198
|
-
readonly
|
206
|
+
readonly ioOpCode = IOOpCode.UpdateRuntimeFlagsWithin;
|
199
207
|
constructor(
|
200
208
|
readonly update: RuntimeFlagsPatch,
|
201
209
|
readonly f: (oldRuntimeFlags: RuntimeFlags) => IO<R, E, A>,
|
@@ -210,21 +218,21 @@ export class Dynamic<R, E, A> extends IO<R, E, A> {
|
|
210
218
|
}
|
211
219
|
|
212
220
|
export class GenerateStackTrace extends IO<never, never, Trace> {
|
213
|
-
readonly
|
221
|
+
readonly ioOpCode = IOOpCode.GenerateStackTrace;
|
214
222
|
constructor(readonly trace?: string) {
|
215
223
|
super();
|
216
224
|
}
|
217
225
|
}
|
218
226
|
|
219
227
|
export class Stateful<R, E, A> extends IO<R, E, A> {
|
220
|
-
readonly
|
228
|
+
readonly ioOpCode = IOOpCode.Stateful;
|
221
229
|
constructor(readonly onState: (fiber: FiberRuntime<E, A>, status: Running) => IO<R, E, A>, readonly trace?: string) {
|
222
230
|
super();
|
223
231
|
}
|
224
232
|
}
|
225
233
|
|
226
234
|
export class WhileLoop<R, E, A> extends IO<R, E, void> {
|
227
|
-
readonly
|
235
|
+
readonly ioOpCode = IOOpCode.WhileLoop;
|
228
236
|
constructor(
|
229
237
|
readonly check: () => boolean,
|
230
238
|
readonly body: () => IO<R, E, A>,
|
@@ -236,7 +244,7 @@ export class WhileLoop<R, E, A> extends IO<R, E, void> {
|
|
236
244
|
}
|
237
245
|
|
238
246
|
export class YieldNow extends IO<never, never, void> {
|
239
|
-
readonly
|
247
|
+
readonly ioOpCode = IOOpCode.YieldNow;
|
240
248
|
constructor(readonly trace?: string) {
|
241
249
|
super();
|
242
250
|
}
|
@@ -246,7 +254,7 @@ export class YieldNow extends IO<never, never, void> {
|
|
246
254
|
* @internal
|
247
255
|
*/
|
248
256
|
export class Fail<E> extends IO<never, E, never> {
|
249
|
-
readonly
|
257
|
+
readonly ioOpCode = IOOpCode.Fail;
|
250
258
|
|
251
259
|
constructor(readonly cause: Lazy<Cause<E>>, readonly trace?: string) {
|
252
260
|
super();
|
@@ -266,7 +274,8 @@ export type Concrete =
|
|
266
274
|
| Stateful<any, any, any>
|
267
275
|
| WhileLoop<any, any, any>
|
268
276
|
| YieldNow
|
269
|
-
| Fail<any
|
277
|
+
| Fail<any>
|
278
|
+
| STM<any, any, any>;
|
270
279
|
|
271
280
|
/**
|
272
281
|
* @tsplus static fncts.io.IOOps concrete
|
@@ -292,10 +301,10 @@ export const IOErrorTypeId = Symbol.for("fncts.io.IO.IOError");
|
|
292
301
|
export type IOErrorTypeId = typeof IOErrorTypeId;
|
293
302
|
|
294
303
|
export class IOError<E> {
|
295
|
-
readonly
|
304
|
+
readonly [IOErrorTypeId]: IOErrorTypeId = IOErrorTypeId;
|
296
305
|
constructor(readonly cause: Cause<E>) {}
|
297
306
|
}
|
298
307
|
|
299
308
|
export function isIOError(u: unknown): u is IOError<unknown> {
|
300
|
-
return
|
309
|
+
return isObject(u) && IOErrorTypeId in u;
|
301
310
|
}
|
package/_src/IO.ts
CHANGED
@@ -33,7 +33,6 @@ export * from "./IO/api/fulfill.js";
|
|
33
33
|
export * from "./IO/api/interrupt.js";
|
34
34
|
export * from "./IO/api/memoize.js";
|
35
35
|
export * from "./IO/api/once.js";
|
36
|
-
export * from "./IO/api/onExit.js";
|
37
36
|
export * from "./IO/api/onTermination.js";
|
38
37
|
export * from "./IO/api/provideLayer.js";
|
39
38
|
export * from "./IO/api/provideSomeLayer.js";
|
package/_src/Layer/MemoMap.ts
CHANGED
@@ -162,7 +162,7 @@ export function scope(scope: Scope, __tsplusTrace?: string) {
|
|
162
162
|
.zipWith(memoMap.getOrElseMemoize(scope, layer.that, layer.trace), layer.f, layer.trace),
|
163
163
|
);
|
164
164
|
}
|
165
|
-
case LayerTag.
|
165
|
+
case LayerTag.ZipWithConcurrent: {
|
166
166
|
return IO.succeed(
|
167
167
|
() => (memoMap: MemoMap) =>
|
168
168
|
memoMap
|
package/_src/Layer/api.ts
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
import type { Spreadable } from "@fncts/base/types";
|
2
2
|
import type { Erase } from "@fncts/typelevel/Intersection";
|
3
3
|
|
4
|
-
import { Fold, Fresh, FromScoped, Layer, To,
|
4
|
+
import { Fold, Fresh, FromScoped, Layer, To, ZipWithConcurrent } from "@fncts/io/Layer/definition";
|
5
5
|
import { DecisionTag } from "@fncts/io/Schedule";
|
6
6
|
|
7
7
|
/**
|
@@ -9,7 +9,7 @@ import { DecisionTag } from "@fncts/io/Schedule";
|
|
9
9
|
*/
|
10
10
|
export function and<RIn1, E1, ROut1>(that: Layer<RIn1, E1, ROut1>, __tsplusTrace?: string) {
|
11
11
|
return <RIn, E, ROut>(self: Layer<RIn, E, ROut>): Layer<RIn | RIn1, E | E1, ROut | ROut1> => {
|
12
|
-
return new
|
12
|
+
return new ZipWithConcurrent(self, that, (a, b) => a.union(b), __tsplusTrace);
|
13
13
|
};
|
14
14
|
}
|
15
15
|
|