@fncts/io 0.0.31 → 0.0.33
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/Channel/api/runScoped.d.ts +1 -0
- package/Channel/api.d.ts +1 -0
- package/Channel/internal/ChannelExecutor.d.ts +2 -2
- package/Fiber/FiberMessage.d.ts +5 -5
- package/Fiber/FiberRuntime.d.ts +3 -3
- package/IO/api/provideSomeLayer.d.ts +1 -2
- package/IO/api/zipConcurrent.d.ts +2 -1
- package/IO/api.d.ts +2 -1
- package/IO/definition.d.ts +34 -24
- package/IO/runtime.d.ts +10 -18
- package/STM/definition.d.ts +1 -1
- package/Stream/api.d.ts +113 -5
- package/_cjs/Channel/api/mapOutConcurrentIO.cjs +1 -1
- package/_cjs/Channel/api/mapOutConcurrentIO.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/mergeWith.cjs +4 -4
- package/_cjs/Channel/api/mergeWith.cjs.map +1 -1
- package/_cjs/Channel/api/runScoped.cjs +19 -3
- package/_cjs/Channel/api/runScoped.cjs.map +1 -1
- package/_cjs/Channel/api/toPull.cjs +3 -3
- package/_cjs/Channel/api/toPull.cjs.map +1 -1
- package/_cjs/Channel/api.cjs +8 -7
- package/_cjs/Channel/api.cjs.map +1 -1
- package/_cjs/Channel/internal/ChannelExecutor.cjs +71 -62
- package/_cjs/Channel/internal/ChannelExecutor.cjs.map +1 -1
- package/_cjs/Channel/internal/SingleProducerAsyncInput.cjs +3 -3
- package/_cjs/Channel/internal/SingleProducerAsyncInput.cjs.map +1 -1
- package/_cjs/Clock/live.cjs +1 -1
- package/_cjs/Clock/live.cjs.map +1 -1
- package/_cjs/Fiber/FiberMessage.cjs +12 -11
- package/_cjs/Fiber/FiberMessage.cjs.map +1 -1
- package/_cjs/Fiber/FiberRuntime.cjs +102 -70
- package/_cjs/Fiber/FiberRuntime.cjs.map +1 -1
- package/_cjs/Fiber/api/collectAll.cjs +1 -1
- package/_cjs/Fiber/api/collectAll.cjs.map +1 -1
- package/_cjs/Fiber/api/mapIO.cjs +1 -1
- package/_cjs/Fiber/api/mapIO.cjs.map +1 -1
- package/_cjs/Fiber/api/zipWith.cjs +1 -1
- package/_cjs/Fiber/api/zipWith.cjs.map +1 -1
- package/_cjs/Fiber/constructors.cjs +5 -5
- package/_cjs/Fiber/constructors.cjs.map +1 -1
- package/_cjs/FiberRef/unsafe.cjs +3 -2
- package/_cjs/FiberRef/unsafe.cjs.map +1 -1
- package/_cjs/FiberScope/definition.cjs +2 -2
- package/_cjs/FiberScope/definition.cjs.map +1 -1
- package/_cjs/Future/api.cjs +4 -4
- package/_cjs/Future/api.cjs.map +1 -1
- package/_cjs/Hub/api.cjs.map +1 -1
- package/_cjs/Hub/internal.cjs +1 -1
- 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/concurrency.cjs +3 -3
- package/_cjs/IO/api/concurrency.cjs.map +1 -1
- package/_cjs/IO/api/daemonChildren.cjs +1 -1
- package/_cjs/IO/api/daemonChildren.cjs.map +1 -1
- package/_cjs/IO/api/fork.cjs +2 -1
- package/_cjs/IO/api/fork.cjs.map +1 -1
- package/_cjs/IO/api/interrupt.cjs +2 -2
- package/_cjs/IO/api/interrupt.cjs.map +1 -1
- package/_cjs/IO/api/provideSomeLayer.cjs.map +1 -1
- package/_cjs/IO/api/raceWith.cjs +9 -12
- package/_cjs/IO/api/raceWith.cjs.map +1 -1
- package/_cjs/IO/api/repeat.cjs +2 -2
- package/_cjs/IO/api/repeat.cjs.map +1 -1
- package/_cjs/IO/api/stateful.cjs +3 -3
- package/_cjs/IO/api/stateful.cjs.map +1 -1
- package/_cjs/IO/api/timeout.cjs +1 -1
- package/_cjs/IO/api/timeout.cjs.map +1 -1
- package/_cjs/IO/api/transplant.cjs +1 -1
- package/_cjs/IO/api/transplant.cjs.map +1 -1
- package/_cjs/IO/api/withChildren.cjs +5 -4
- package/_cjs/IO/api/withChildren.cjs.map +1 -1
- package/_cjs/IO/api/withEarlyRelease.cjs +1 -1
- package/_cjs/IO/api/withEarlyRelease.cjs.map +1 -1
- package/_cjs/IO/api/zipConcurrent.cjs +23 -23
- package/_cjs/IO/api/zipConcurrent.cjs.map +1 -1
- package/_cjs/IO/api.cjs +33 -32
- package/_cjs/IO/api.cjs.map +1 -1
- package/_cjs/IO/definition.cjs +17 -31
- package/_cjs/IO/definition.cjs.map +1 -1
- package/_cjs/IO/runtime.cjs +47 -40
- package/_cjs/IO/runtime.cjs.map +1 -1
- package/_cjs/Logger/api.cjs +3 -2
- package/_cjs/Logger/api.cjs.map +1 -1
- package/_cjs/MVar/api.cjs +11 -11
- package/_cjs/MVar/api.cjs.map +1 -1
- package/_cjs/Push/api.cjs +3 -3
- package/_cjs/Push/api.cjs.map +1 -1
- package/_cjs/Push/internal.cjs +1 -1
- package/_cjs/Push/internal.cjs.map +1 -1
- package/_cjs/Queue/api/filterInputIO.cjs +2 -2
- package/_cjs/Queue/api/filterInputIO.cjs.map +1 -1
- package/_cjs/Queue/api/filterOutputIO.cjs.map +1 -1
- package/_cjs/Ref/Derived.cjs +4 -4
- package/_cjs/Ref/Derived.cjs.map +1 -1
- package/_cjs/Ref/DerivedAll.cjs +5 -5
- package/_cjs/Ref/DerivedAll.cjs.map +1 -1
- package/_cjs/Ref/Synchronized/api.cjs +3 -3
- package/_cjs/Ref/Synchronized/api.cjs.map +1 -1
- package/_cjs/Ref/api/collect.cjs +1 -1
- package/_cjs/Ref/api/collect.cjs.map +1 -1
- package/_cjs/Ref/api/dimap.cjs +3 -3
- package/_cjs/Ref/api/dimap.cjs.map +1 -1
- package/_cjs/Ref/api/filter.cjs +2 -2
- package/_cjs/Ref/api/filter.cjs.map +1 -1
- package/_cjs/Ref/api.cjs +2 -3
- package/_cjs/Ref/api.cjs.map +1 -1
- package/_cjs/RefSubject/Atomic.cjs +6 -6
- package/_cjs/RefSubject/Atomic.cjs.map +1 -1
- package/_cjs/STM/api.cjs +5 -5
- package/_cjs/STM/api.cjs.map +1 -1
- package/_cjs/STM/definition.cjs +1 -1
- package/_cjs/STM/definition.cjs.map +1 -1
- package/_cjs/STM/internal/CommitState.cjs +5 -4
- package/_cjs/STM/internal/CommitState.cjs.map +1 -1
- package/_cjs/STM/internal/Journal.cjs +8 -8
- package/_cjs/STM/internal/Journal.cjs.map +1 -1
- package/_cjs/Schedule/api/driver.cjs +3 -3
- package/_cjs/Schedule/api/driver.cjs.map +1 -1
- package/_cjs/Schedule/api.cjs +8 -8
- package/_cjs/Schedule/api.cjs.map +1 -1
- package/_cjs/Scope/ReleaseMap/api/releaseAll.cjs +1 -1
- package/_cjs/Scope/ReleaseMap/api/releaseAll.cjs.map +1 -1
- package/_cjs/Scope/ReleaseMap/api.cjs +3 -3
- package/_cjs/Scope/ReleaseMap/api.cjs.map +1 -1
- package/_cjs/ScopedRef/api.cjs +1 -1
- package/_cjs/ScopedRef/api.cjs.map +1 -1
- package/_cjs/Semaphore.cjs +2 -2
- package/_cjs/Semaphore.cjs.map +1 -1
- package/_cjs/Sink/api.cjs +6 -6
- package/_cjs/Sink/api.cjs.map +1 -1
- package/_cjs/Stream/api/zipAllWith.cjs +8 -8
- package/_cjs/Stream/api/zipAllWith.cjs.map +1 -1
- package/_cjs/Stream/api/zipWithChunks.cjs +6 -6
- package/_cjs/Stream/api/zipWithChunks.cjs.map +1 -1
- package/_cjs/Stream/api.cjs +415 -133
- package/_cjs/Stream/api.cjs.map +1 -1
- package/_cjs/Stream/internal/Handoff.cjs +2 -2
- package/_cjs/Stream/internal/Handoff.cjs.map +1 -1
- package/_cjs/Stream/internal/Pull.cjs +2 -2
- package/_cjs/Stream/internal/Pull.cjs.map +1 -1
- package/_cjs/Stream/internal/Take.cjs +6 -6
- package/_cjs/Stream/internal/Take.cjs.map +1 -1
- package/_cjs/Stream/internal/util.cjs +3 -2
- package/_cjs/Stream/internal/util.cjs.map +1 -1
- package/_cjs/TFuture/api.cjs +3 -3
- package/_cjs/TFuture/api.cjs.map +1 -1
- package/_cjs/TFuture/constructors.cjs +1 -1
- package/_cjs/TFuture/constructors.cjs.map +1 -1
- package/_cjs/TRef/definition.cjs +9 -9
- package/_cjs/TRef/definition.cjs.map +1 -1
- package/_cjs/collection/immutable/Conc/findIO.cjs +3 -3
- package/_cjs/collection/immutable/Conc/findIO.cjs.map +1 -1
- package/_cjs/data/Exit/foreachIO.cjs +1 -1
- package/_cjs/data/Exit/foreachIO.cjs.map +1 -1
- package/_mjs/Cached/definition.mjs.map +1 -1
- package/_mjs/Channel/api/mapOutConcurrentIO.mjs +1 -1
- package/_mjs/Channel/api/mapOutConcurrentIO.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/mergeWith.mjs +4 -4
- package/_mjs/Channel/api/mergeWith.mjs.map +1 -1
- package/_mjs/Channel/api/runScoped.mjs +19 -3
- package/_mjs/Channel/api/runScoped.mjs.map +1 -1
- package/_mjs/Channel/api/toPull.mjs +3 -3
- package/_mjs/Channel/api/toPull.mjs.map +1 -1
- package/_mjs/Channel/api.mjs +8 -7
- package/_mjs/Channel/api.mjs.map +1 -1
- package/_mjs/Channel/internal/ChannelExecutor.mjs +71 -62
- package/_mjs/Channel/internal/ChannelExecutor.mjs.map +1 -1
- package/_mjs/Channel/internal/SingleProducerAsyncInput.mjs +3 -3
- package/_mjs/Channel/internal/SingleProducerAsyncInput.mjs.map +1 -1
- package/_mjs/Clock/live.mjs +1 -1
- package/_mjs/Clock/live.mjs.map +1 -1
- package/_mjs/Fiber/FiberMessage.mjs +5 -5
- package/_mjs/Fiber/FiberMessage.mjs.map +1 -1
- package/_mjs/Fiber/FiberRuntime.mjs +102 -70
- package/_mjs/Fiber/FiberRuntime.mjs.map +1 -1
- package/_mjs/Fiber/api/collectAll.mjs +1 -1
- package/_mjs/Fiber/api/collectAll.mjs.map +1 -1
- package/_mjs/Fiber/api/mapIO.mjs +1 -1
- package/_mjs/Fiber/api/mapIO.mjs.map +1 -1
- package/_mjs/Fiber/api/zipWith.mjs +1 -1
- package/_mjs/Fiber/api/zipWith.mjs.map +1 -1
- package/_mjs/Fiber/constructors.mjs +5 -5
- package/_mjs/Fiber/constructors.mjs.map +1 -1
- package/_mjs/FiberRef/unsafe.mjs +3 -2
- package/_mjs/FiberRef/unsafe.mjs.map +1 -1
- package/_mjs/FiberScope/definition.mjs +2 -2
- package/_mjs/FiberScope/definition.mjs.map +1 -1
- package/_mjs/Future/api.mjs +4 -4
- package/_mjs/Future/api.mjs.map +1 -1
- package/_mjs/Hub/api.mjs.map +1 -1
- package/_mjs/Hub/internal.mjs +1 -1
- 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/concurrency.mjs +3 -3
- package/_mjs/IO/api/concurrency.mjs.map +1 -1
- package/_mjs/IO/api/daemonChildren.mjs +1 -1
- package/_mjs/IO/api/daemonChildren.mjs.map +1 -1
- package/_mjs/IO/api/fork.mjs +2 -1
- package/_mjs/IO/api/fork.mjs.map +1 -1
- package/_mjs/IO/api/interrupt.mjs +2 -2
- package/_mjs/IO/api/interrupt.mjs.map +1 -1
- package/_mjs/IO/api/provideSomeLayer.mjs.map +1 -1
- package/_mjs/IO/api/raceWith.mjs +9 -12
- package/_mjs/IO/api/raceWith.mjs.map +1 -1
- package/_mjs/IO/api/repeat.mjs +2 -2
- package/_mjs/IO/api/repeat.mjs.map +1 -1
- package/_mjs/IO/api/stateful.mjs +3 -3
- package/_mjs/IO/api/stateful.mjs.map +1 -1
- package/_mjs/IO/api/timeout.mjs +1 -1
- package/_mjs/IO/api/timeout.mjs.map +1 -1
- package/_mjs/IO/api/transplant.mjs +1 -1
- package/_mjs/IO/api/transplant.mjs.map +1 -1
- package/_mjs/IO/api/withChildren.mjs +5 -4
- package/_mjs/IO/api/withChildren.mjs.map +1 -1
- package/_mjs/IO/api/withEarlyRelease.mjs +1 -1
- package/_mjs/IO/api/withEarlyRelease.mjs.map +1 -1
- package/_mjs/IO/api/zipConcurrent.mjs +23 -23
- package/_mjs/IO/api/zipConcurrent.mjs.map +1 -1
- package/_mjs/IO/api.mjs +32 -30
- package/_mjs/IO/api.mjs.map +1 -1
- package/_mjs/IO/definition.mjs +16 -27
- package/_mjs/IO/definition.mjs.map +1 -1
- package/_mjs/IO/runtime.mjs +43 -34
- package/_mjs/IO/runtime.mjs.map +1 -1
- package/_mjs/Logger/api.mjs +3 -2
- package/_mjs/Logger/api.mjs.map +1 -1
- package/_mjs/MVar/api.mjs +11 -11
- package/_mjs/MVar/api.mjs.map +1 -1
- package/_mjs/Push/api.mjs +3 -3
- package/_mjs/Push/api.mjs.map +1 -1
- package/_mjs/Push/internal.mjs +1 -1
- package/_mjs/Push/internal.mjs.map +1 -1
- package/_mjs/Queue/api/filterInputIO.mjs +2 -2
- package/_mjs/Queue/api/filterInputIO.mjs.map +1 -1
- package/_mjs/Queue/api/filterOutputIO.mjs.map +1 -1
- package/_mjs/Ref/Derived.mjs +4 -4
- package/_mjs/Ref/Derived.mjs.map +1 -1
- package/_mjs/Ref/DerivedAll.mjs +5 -5
- package/_mjs/Ref/DerivedAll.mjs.map +1 -1
- package/_mjs/Ref/Synchronized/api.mjs +3 -3
- package/_mjs/Ref/Synchronized/api.mjs.map +1 -1
- package/_mjs/Ref/api/collect.mjs +1 -1
- package/_mjs/Ref/api/collect.mjs.map +1 -1
- package/_mjs/Ref/api/dimap.mjs +3 -3
- package/_mjs/Ref/api/dimap.mjs.map +1 -1
- package/_mjs/Ref/api/filter.mjs +2 -2
- package/_mjs/Ref/api/filter.mjs.map +1 -1
- package/_mjs/Ref/api.mjs +2 -1
- package/_mjs/Ref/api.mjs.map +1 -1
- package/_mjs/RefSubject/Atomic.mjs +6 -6
- package/_mjs/RefSubject/Atomic.mjs.map +1 -1
- package/_mjs/STM/api.mjs +5 -5
- package/_mjs/STM/api.mjs.map +1 -1
- package/_mjs/STM/definition.mjs +1 -1
- package/_mjs/STM/definition.mjs.map +1 -1
- package/_mjs/STM/internal/CommitState.mjs +5 -4
- package/_mjs/STM/internal/CommitState.mjs.map +1 -1
- package/_mjs/STM/internal/Journal.mjs +8 -8
- package/_mjs/STM/internal/Journal.mjs.map +1 -1
- package/_mjs/Schedule/api/driver.mjs +3 -3
- package/_mjs/Schedule/api/driver.mjs.map +1 -1
- package/_mjs/Schedule/api.mjs +8 -8
- package/_mjs/Schedule/api.mjs.map +1 -1
- package/_mjs/Scope/ReleaseMap/api/releaseAll.mjs +1 -1
- package/_mjs/Scope/ReleaseMap/api/releaseAll.mjs.map +1 -1
- package/_mjs/Scope/ReleaseMap/api.mjs +3 -3
- package/_mjs/Scope/ReleaseMap/api.mjs.map +1 -1
- package/_mjs/ScopedRef/api.mjs +1 -1
- package/_mjs/ScopedRef/api.mjs.map +1 -1
- package/_mjs/Semaphore.mjs +2 -2
- package/_mjs/Semaphore.mjs.map +1 -1
- package/_mjs/Sink/api.mjs +6 -6
- package/_mjs/Sink/api.mjs.map +1 -1
- package/_mjs/Stream/api/zipAllWith.mjs +8 -8
- package/_mjs/Stream/api/zipAllWith.mjs.map +1 -1
- package/_mjs/Stream/api/zipWithChunks.mjs +6 -6
- package/_mjs/Stream/api/zipWithChunks.mjs.map +1 -1
- package/_mjs/Stream/api.mjs +321 -60
- package/_mjs/Stream/api.mjs.map +1 -1
- package/_mjs/Stream/internal/Handoff.mjs +2 -2
- package/_mjs/Stream/internal/Handoff.mjs.map +1 -1
- package/_mjs/Stream/internal/Pull.mjs +2 -2
- package/_mjs/Stream/internal/Pull.mjs.map +1 -1
- package/_mjs/Stream/internal/Take.mjs +6 -6
- package/_mjs/Stream/internal/Take.mjs.map +1 -1
- package/_mjs/Stream/internal/util.mjs +3 -2
- package/_mjs/Stream/internal/util.mjs.map +1 -1
- package/_mjs/TFuture/api.mjs +3 -3
- package/_mjs/TFuture/api.mjs.map +1 -1
- package/_mjs/TFuture/constructors.mjs +1 -1
- package/_mjs/TFuture/constructors.mjs.map +1 -1
- package/_mjs/TRef/definition.mjs +9 -9
- package/_mjs/TRef/definition.mjs.map +1 -1
- package/_mjs/collection/immutable/Conc/findIO.mjs +3 -3
- package/_mjs/collection/immutable/Conc/findIO.mjs.map +1 -1
- package/_mjs/data/Exit/foreachIO.mjs +1 -1
- package/_mjs/data/Exit/foreachIO.mjs.map +1 -1
- package/_src/Cached/definition.ts +1 -1
- package/_src/Channel/api/runScoped.ts +30 -5
- package/_src/Channel/api/toPull.ts +1 -1
- package/_src/Channel/api.ts +1 -0
- package/_src/Channel/internal/ChannelExecutor.ts +24 -20
- package/_src/Fiber/FiberMessage.ts +5 -5
- package/_src/Fiber/FiberRuntime.ts +40 -17
- package/_src/FiberRefs/api.ts +1 -1
- package/_src/Hub/api.ts +1 -1
- package/_src/IO/api/asyncIO.ts +1 -1
- package/_src/IO/api/provideSomeLayer.ts +1 -3
- package/_src/IO/api/raceWith.ts +1 -3
- package/_src/IO/api/stateful.ts +1 -1
- package/_src/IO/api/zipConcurrent.ts +26 -30
- package/_src/IO/api.ts +4 -3
- package/_src/IO/definition.ts +35 -28
- package/_src/IO/runtime.ts +39 -38
- package/_src/Queue/api/filterInputIO.ts +1 -1
- package/_src/Queue/api/filterOutputIO.ts +1 -1
- package/_src/RefSubject/Atomic.ts +4 -4
- package/_src/STM/definition.ts +1 -1
- package/_src/State/definition.ts +1 -1
- package/_src/Stream/api.ts +315 -14
- package/_src/Subject/Atomic.ts +1 -1
- package/_src/global.ts +0 -4
- package/_src/index.ts +2 -2
- package/global.d.ts +0 -4
- package/index.d.ts +2 -2
- package/package.json +3 -3
- package/RuntimeConfig.d.ts +0 -11
- package/_cjs/RuntimeConfig.cjs +0 -12
- package/_cjs/RuntimeConfig.cjs.map +0 -1
- package/_mjs/RuntimeConfig.mjs +0 -3
- package/_mjs/RuntimeConfig.mjs.map +0 -1
- package/_src/RuntimeConfig.ts +0 -6
|
@@ -1,16 +1,14 @@
|
|
|
1
1
|
import type { InterruptibilityRestorer } from "./interrupt.js";
|
|
2
2
|
import type { Grafter } from "./transplant.js";
|
|
3
3
|
|
|
4
|
-
import { tuple } from "@fncts/base/data/function";
|
|
5
4
|
import { AtomicBoolean } from "@fncts/base/internal/AtomicBoolean";
|
|
6
|
-
import { AtomicReference } from "@fncts/base/internal/AtomicReference";
|
|
7
5
|
|
|
8
6
|
/**
|
|
9
7
|
* @tsplus pipeable fncts.io.IO zipConcurrent
|
|
10
8
|
*/
|
|
11
9
|
export function zipConcurrent<R1, E1, B>(that: IO<R1, E1, B>, __tsplusTrace?: string) {
|
|
12
|
-
return <R, E, A>(self: IO<R, E, A>): IO<R | R1, E | E1,
|
|
13
|
-
return self.zipWithConcurrent(that,
|
|
10
|
+
return <R, E, A>(self: IO<R, E, A>): IO<R | R1, E | E1, Zipped.Make<A, B>> => {
|
|
11
|
+
return self.zipWithConcurrent(that, (a, b) => Zipped(a, b));
|
|
14
12
|
};
|
|
15
13
|
}
|
|
16
14
|
|
|
@@ -19,32 +17,30 @@ export function zipConcurrent<R1, E1, B>(that: IO<R1, E1, B>, __tsplusTrace?: st
|
|
|
19
17
|
*/
|
|
20
18
|
export function zipWithConcurrent<A, R1, E1, B, C>(that: IO<R1, E1, B>, f: (a: A, b: B) => C, __tsplusTrace?: string) {
|
|
21
19
|
return <R, E>(self: IO<R, E, A>): IO<R | R1, E | E1, C> => {
|
|
22
|
-
return IO.
|
|
23
|
-
IO.
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
.
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
left
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
.
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
}),
|
|
47
|
-
);
|
|
20
|
+
return IO.uninterruptibleMask((restore) => {
|
|
21
|
+
return IO.transplant((graft) => {
|
|
22
|
+
const future = Future.unsafeMake<void, void>(FiberId.none);
|
|
23
|
+
const ref = new AtomicBoolean(false);
|
|
24
|
+
return fork(self, restore, graft, future, ref)
|
|
25
|
+
.zip(fork(that, restore, graft, future, ref))
|
|
26
|
+
.flatMap(([left, right]) =>
|
|
27
|
+
restore(future.await).matchCauseIO(
|
|
28
|
+
(cause) =>
|
|
29
|
+
left.interruptFork >
|
|
30
|
+
right.interruptFork >
|
|
31
|
+
left.await.zip(right.await).flatMap(([left, right]) =>
|
|
32
|
+
left
|
|
33
|
+
.zipWithCause(right, f, (a, b) => Cause.both(a, b))
|
|
34
|
+
.match(
|
|
35
|
+
(causes) => IO.refailCause(Cause.both(cause.stripFailures, causes)),
|
|
36
|
+
() => IO.refailCause(cause.stripFailures),
|
|
37
|
+
),
|
|
38
|
+
),
|
|
39
|
+
() => left.join.zipWith(right.join, f),
|
|
40
|
+
),
|
|
41
|
+
);
|
|
42
|
+
});
|
|
43
|
+
});
|
|
48
44
|
};
|
|
49
45
|
}
|
|
50
46
|
|
package/_src/IO/api.ts
CHANGED
|
@@ -4,6 +4,7 @@ import type { _E, _R } from "@fncts/base/types";
|
|
|
4
4
|
import type { FiberRuntime } from "@fncts/io/Fiber/FiberRuntime";
|
|
5
5
|
import type { RuntimeFlags } from "@fncts/io/RuntimeFlags";
|
|
6
6
|
|
|
7
|
+
import { IOError } from "@fncts/base/data/exceptions";
|
|
7
8
|
import { identity, pipe, tuple } from "@fncts/base/data/function";
|
|
8
9
|
import {
|
|
9
10
|
Async,
|
|
@@ -15,7 +16,7 @@ import {
|
|
|
15
16
|
YieldNow,
|
|
16
17
|
} from "@fncts/io/IO/definition";
|
|
17
18
|
import { Stateful } from "@fncts/io/IO/definition";
|
|
18
|
-
import { Fail, IO,
|
|
19
|
+
import { Fail, IO, SucceedNow } from "@fncts/io/IO/definition";
|
|
19
20
|
|
|
20
21
|
/**
|
|
21
22
|
* Imports an asynchronous side-effect into a `IO`
|
|
@@ -851,8 +852,8 @@ export function fromMaybe<A>(maybe: Lazy<Maybe<A>>, __tsplusTrace?: string): FIO
|
|
|
851
852
|
* @tsplus static fncts.io.IOOps fromMaybeNow
|
|
852
853
|
* @tsplus getter fncts.Maybe toIO
|
|
853
854
|
*/
|
|
854
|
-
export function fromMaybeNow<A = never>(maybe: Maybe<A>, __tsplusTrace?: string): IO<
|
|
855
|
-
return maybe.match(() => IO.failNow(
|
|
855
|
+
export function fromMaybeNow<A = never>(maybe: Maybe<A>, __tsplusTrace?: string): IO<never, NoSuchElementError, A> {
|
|
856
|
+
return maybe.match(() => IO.failNow(new NoSuchElementError("IO.fromMaybeNow")), IO.succeedNow);
|
|
856
857
|
}
|
|
857
858
|
|
|
858
859
|
/**
|
package/_src/IO/definition.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import type { FiberRuntime } from "../Fiber/FiberRuntime.js";
|
|
2
2
|
import type { Running } from "../FiberStatus.js";
|
|
3
3
|
import type { RuntimeFlagsPatch } from "../RuntimeFlags.js";
|
|
4
|
+
import type { Left, Right } from "@fncts/base/data/Either";
|
|
5
|
+
import type { Failure, Success } from "@fncts/base/data/Exit";
|
|
4
6
|
import type { Trace } from "@fncts/base/data/Trace";
|
|
5
7
|
|
|
6
8
|
import { RuntimeFlag } from "../RuntimeFlag.js";
|
|
@@ -34,6 +36,17 @@ export abstract class IO<R, E, A> {
|
|
|
34
36
|
};
|
|
35
37
|
}
|
|
36
38
|
|
|
39
|
+
declare module "@fncts/base/data/Either/definition" {
|
|
40
|
+
interface Either<E, A> extends IO<never, E, A> {}
|
|
41
|
+
}
|
|
42
|
+
declare module "@fncts/base/data/Maybe/definition" {
|
|
43
|
+
interface Maybe<A> extends IO<never, NoSuchElementError, A> {}
|
|
44
|
+
}
|
|
45
|
+
declare module "@fncts/base/data/Exit/definition" {
|
|
46
|
+
interface Success<A> extends IO<never, never, A> {}
|
|
47
|
+
interface Failure<E> extends IO<never, E, never> {}
|
|
48
|
+
}
|
|
49
|
+
|
|
37
50
|
/**
|
|
38
51
|
* @tsplus type fncts.io.IOAspects
|
|
39
52
|
*/
|
|
@@ -87,14 +100,14 @@ export function isIO(u: unknown): u is IO<any, any, any> {
|
|
|
87
100
|
}
|
|
88
101
|
|
|
89
102
|
export class Sync<A> extends IO<never, never, A> {
|
|
90
|
-
readonly
|
|
103
|
+
readonly _tag = IOOpCode.Sync;
|
|
91
104
|
constructor(readonly evaluate: () => A, readonly trace?: string) {
|
|
92
105
|
super();
|
|
93
106
|
}
|
|
94
107
|
}
|
|
95
108
|
|
|
96
109
|
export class Async<R, E, A> extends IO<R, E, A> {
|
|
97
|
-
readonly
|
|
110
|
+
readonly _tag = IOOpCode.Async;
|
|
98
111
|
constructor(
|
|
99
112
|
readonly registerCallback: (f: (_: IO<R, E, A>) => void) => any,
|
|
100
113
|
readonly blockingOn: () => FiberId,
|
|
@@ -108,7 +121,7 @@ export class Async<R, E, A> extends IO<R, E, A> {
|
|
|
108
121
|
* @internal
|
|
109
122
|
*/
|
|
110
123
|
export class OnSuccessAndFailure<R, E, A, R1, E1, B, R2, E2, C> extends IO<R | R1 | R2, E1 | E2, B | C> {
|
|
111
|
-
readonly
|
|
124
|
+
readonly _tag = IOOpCode.OnSuccessAndFailure;
|
|
112
125
|
|
|
113
126
|
constructor(
|
|
114
127
|
readonly first: IO<R, E, A>,
|
|
@@ -128,7 +141,7 @@ export class OnSuccessAndFailure<R, E, A, R1, E1, B, R2, E2, C> extends IO<R | R
|
|
|
128
141
|
}
|
|
129
142
|
|
|
130
143
|
export class OnFailure<R, E, A, R1, E1, B> extends IO<R | R1, E1, A | B> {
|
|
131
|
-
readonly
|
|
144
|
+
readonly _tag = IOOpCode.OnFailure;
|
|
132
145
|
constructor(
|
|
133
146
|
readonly first: IO<R, E, A>,
|
|
134
147
|
readonly failureK: (cause: Cause<E>) => IO<R1, E1, B>,
|
|
@@ -149,7 +162,7 @@ export class OnFailure<R, E, A, R1, E1, B> extends IO<R | R1, E1, A | B> {
|
|
|
149
162
|
* @internal
|
|
150
163
|
*/
|
|
151
164
|
export class OnSuccess<R, R1, E, E1, A, A1> extends IO<R | R1, E | E1, A1> {
|
|
152
|
-
readonly
|
|
165
|
+
readonly _tag = IOOpCode.OnSuccess;
|
|
153
166
|
constructor(readonly first: IO<R, E, A>, readonly successK: (a: A) => IO<R1, E1, A1>, readonly trace?: string) {
|
|
154
167
|
super();
|
|
155
168
|
}
|
|
@@ -165,21 +178,21 @@ export class OnSuccess<R, R1, E, E1, A, A1> extends IO<R | R1, E | E1, A1> {
|
|
|
165
178
|
* @internal
|
|
166
179
|
*/
|
|
167
180
|
export class SucceedNow<A> extends IO<never, never, A> {
|
|
168
|
-
readonly
|
|
181
|
+
readonly _tag = IOOpCode.SucceedNow;
|
|
169
182
|
constructor(readonly value: A, readonly trace?: string) {
|
|
170
183
|
super();
|
|
171
184
|
}
|
|
172
185
|
}
|
|
173
186
|
|
|
174
187
|
export class UpdateRuntimeFlags extends IO<never, never, void> {
|
|
175
|
-
readonly
|
|
188
|
+
readonly _tag = IOOpCode.UpdateRuntimeFlags;
|
|
176
189
|
constructor(readonly update: RuntimeFlags.Patch, readonly trace?: string) {
|
|
177
190
|
super();
|
|
178
191
|
}
|
|
179
192
|
}
|
|
180
193
|
|
|
181
194
|
export class Interruptible<R, E, A> extends IO<R, E, A> {
|
|
182
|
-
readonly
|
|
195
|
+
readonly _tag = IOOpCode.UpdateRuntimeFlagsWithin;
|
|
183
196
|
constructor(readonly effect: IO<R, E, A>, readonly trace?: string) {
|
|
184
197
|
super();
|
|
185
198
|
}
|
|
@@ -191,7 +204,7 @@ export class Interruptible<R, E, A> extends IO<R, E, A> {
|
|
|
191
204
|
}
|
|
192
205
|
|
|
193
206
|
export class Uninterruptible<R, E, A> extends IO<R, E, A> {
|
|
194
|
-
readonly
|
|
207
|
+
readonly _tag = IOOpCode.UpdateRuntimeFlagsWithin;
|
|
195
208
|
constructor(readonly effect: IO<R, E, A>, readonly trace?: string) {
|
|
196
209
|
super();
|
|
197
210
|
}
|
|
@@ -203,7 +216,7 @@ export class Uninterruptible<R, E, A> extends IO<R, E, A> {
|
|
|
203
216
|
}
|
|
204
217
|
|
|
205
218
|
export class Dynamic<R, E, A> extends IO<R, E, A> {
|
|
206
|
-
readonly
|
|
219
|
+
readonly _tag = IOOpCode.UpdateRuntimeFlagsWithin;
|
|
207
220
|
constructor(
|
|
208
221
|
readonly update: RuntimeFlagsPatch,
|
|
209
222
|
readonly f: (oldRuntimeFlags: RuntimeFlags) => IO<R, E, A>,
|
|
@@ -218,21 +231,21 @@ export class Dynamic<R, E, A> extends IO<R, E, A> {
|
|
|
218
231
|
}
|
|
219
232
|
|
|
220
233
|
export class GenerateStackTrace extends IO<never, never, Trace> {
|
|
221
|
-
readonly
|
|
234
|
+
readonly _tag = IOOpCode.GenerateStackTrace;
|
|
222
235
|
constructor(readonly trace?: string) {
|
|
223
236
|
super();
|
|
224
237
|
}
|
|
225
238
|
}
|
|
226
239
|
|
|
227
240
|
export class Stateful<R, E, A> extends IO<R, E, A> {
|
|
228
|
-
readonly
|
|
241
|
+
readonly _tag = IOOpCode.Stateful;
|
|
229
242
|
constructor(readonly onState: (fiber: FiberRuntime<E, A>, status: Running) => IO<R, E, A>, readonly trace?: string) {
|
|
230
243
|
super();
|
|
231
244
|
}
|
|
232
245
|
}
|
|
233
246
|
|
|
234
247
|
export class WhileLoop<R, E, A> extends IO<R, E, void> {
|
|
235
|
-
readonly
|
|
248
|
+
readonly _tag = IOOpCode.WhileLoop;
|
|
236
249
|
constructor(
|
|
237
250
|
readonly check: () => boolean,
|
|
238
251
|
readonly body: () => IO<R, E, A>,
|
|
@@ -244,7 +257,7 @@ export class WhileLoop<R, E, A> extends IO<R, E, void> {
|
|
|
244
257
|
}
|
|
245
258
|
|
|
246
259
|
export class YieldNow extends IO<never, never, void> {
|
|
247
|
-
readonly
|
|
260
|
+
readonly _tag = IOOpCode.YieldNow;
|
|
248
261
|
constructor(readonly trace?: string) {
|
|
249
262
|
super();
|
|
250
263
|
}
|
|
@@ -254,7 +267,7 @@ export class YieldNow extends IO<never, never, void> {
|
|
|
254
267
|
* @internal
|
|
255
268
|
*/
|
|
256
269
|
export class Fail<E> extends IO<never, E, never> {
|
|
257
|
-
readonly
|
|
270
|
+
readonly _tag = IOOpCode.Fail;
|
|
258
271
|
|
|
259
272
|
constructor(readonly cause: Lazy<Cause<E>>, readonly trace?: string) {
|
|
260
273
|
super();
|
|
@@ -275,7 +288,13 @@ export type Concrete =
|
|
|
275
288
|
| WhileLoop<any, any, any>
|
|
276
289
|
| YieldNow
|
|
277
290
|
| Fail<any>
|
|
278
|
-
| STM<any, any, any
|
|
291
|
+
| STM<any, any, any>
|
|
292
|
+
| Left<any>
|
|
293
|
+
| Right<any>
|
|
294
|
+
| Nothing
|
|
295
|
+
| Just<any>
|
|
296
|
+
| Failure<any>
|
|
297
|
+
| Success<any>;
|
|
279
298
|
|
|
280
299
|
/**
|
|
281
300
|
* @tsplus static fncts.io.IOOps concrete
|
|
@@ -296,15 +315,3 @@ export type UpdateRuntimeFlagsWithin =
|
|
|
296
315
|
| Dynamic<any, any, any>;
|
|
297
316
|
|
|
298
317
|
export type Canceler<R> = URIO<R, void>;
|
|
299
|
-
|
|
300
|
-
export const IOErrorTypeId = Symbol.for("fncts.io.IO.IOError");
|
|
301
|
-
export type IOErrorTypeId = typeof IOErrorTypeId;
|
|
302
|
-
|
|
303
|
-
export class IOError<E> {
|
|
304
|
-
readonly [IOErrorTypeId]: IOErrorTypeId = IOErrorTypeId;
|
|
305
|
-
constructor(readonly cause: Cause<E>) {}
|
|
306
|
-
}
|
|
307
|
-
|
|
308
|
-
export function isIOError(u: unknown): u is IOError<unknown> {
|
|
309
|
-
return isObject(u) && IOErrorTypeId in u;
|
|
310
|
-
}
|
package/_src/IO/runtime.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { IOError } from "@fncts/base/data/exceptions";
|
|
2
|
+
import { FiberRuntime } from "@fncts/io/Fiber";
|
|
2
3
|
import { FiberRefs } from "@fncts/io/FiberRefs";
|
|
3
4
|
import { RuntimeFlag } from "@fncts/io/RuntimeFlag";
|
|
4
5
|
import { RuntimeFlags } from "@fncts/io/RuntimeFlags";
|
|
@@ -12,7 +13,7 @@ export class Runtime<R> {
|
|
|
12
13
|
readonly fiberRefs: FiberRefs,
|
|
13
14
|
) {}
|
|
14
15
|
|
|
15
|
-
|
|
16
|
+
makeFiber = <E, A>(io: IO<R, E, A>, __tsplusTrace?: string): FiberRuntime<E, A> => {
|
|
16
17
|
const fiberId = FiberId.unsafeMake(__tsplusTrace);
|
|
17
18
|
const fiberRefs = this.fiberRefs.updateAs(fiberId, FiberRef.currentEnvironment, this.environment);
|
|
18
19
|
|
|
@@ -31,35 +32,39 @@ export class Runtime<R> {
|
|
|
31
32
|
|
|
32
33
|
FiberScope.global.unsafeAdd(null!, fiber.runtimeFlags0, fiber);
|
|
33
34
|
|
|
34
|
-
fiber.start(io);
|
|
35
|
-
|
|
36
35
|
return fiber;
|
|
37
36
|
};
|
|
38
37
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
): ((fiberId: FiberId) => (f: (exit: Exit<E, A>) => any) => void) => {
|
|
44
|
-
const fiber = this.unsafeRunFiber(io);
|
|
45
|
-
fiber.tell(FiberMessage.Stateful((fiber) => fiber.addObserver(k)));
|
|
46
|
-
return (fiberId) => (k) => this.unsafeRunAsyncWith(fiber.interruptAs(fiberId), (exit) => k(exit.flatten));
|
|
47
|
-
};
|
|
48
|
-
|
|
49
|
-
unsafeRunAsync = <E, A>(io: IO<R, E, A>, __tsplusTrace?: string) => {
|
|
50
|
-
this.unsafeRunAsyncWith(io, () => void 0);
|
|
38
|
+
unsafeRunFiber = <E, A>(io: IO<R, E, A>, __tsplusTrace?: string): FiberRuntime<E, A> => {
|
|
39
|
+
const fiber = this.makeFiber(io);
|
|
40
|
+
fiber.start(io);
|
|
41
|
+
return fiber;
|
|
51
42
|
};
|
|
52
43
|
|
|
53
|
-
|
|
54
|
-
|
|
44
|
+
unsafeRunPromiseExit = <E, A>(io: IO<R, E, A>, __tsplusTrace?: string): Promise<Exit<E, A>> => {
|
|
45
|
+
return new Promise((resolve) => {
|
|
46
|
+
const fiber = this.makeFiber(io);
|
|
47
|
+
fiber.addObserver((exit) => {
|
|
48
|
+
resolve(exit);
|
|
49
|
+
});
|
|
50
|
+
fiber.start(io);
|
|
51
|
+
});
|
|
55
52
|
};
|
|
56
53
|
|
|
57
|
-
|
|
58
|
-
new Promise((resolve) => {
|
|
59
|
-
this.
|
|
54
|
+
unsafeRunPromise = <E, A>(io: IO<R, E, A>, __tsplusTrace?: string): Promise<A> => {
|
|
55
|
+
return new Promise((resolve, reject) => {
|
|
56
|
+
const fiber = this.makeFiber(io);
|
|
57
|
+
fiber.addObserver((exit) => {
|
|
58
|
+
if (exit.isFailure()) {
|
|
59
|
+
reject(new IOError(exit.cause));
|
|
60
|
+
} else {
|
|
61
|
+
resolve(exit.value);
|
|
62
|
+
}
|
|
63
|
+
});
|
|
60
64
|
});
|
|
65
|
+
};
|
|
61
66
|
|
|
62
|
-
|
|
67
|
+
unsafeRunOrFork = <E, A>(io: IO<R, E, A>, __tsplusTrace?: string): Either<Fiber.Runtime<E, A>, Exit<E, A>> => {
|
|
63
68
|
const fiberId = FiberId.unsafeMake(__tsplusTrace);
|
|
64
69
|
const scheduler = new StagedScheduler();
|
|
65
70
|
const fiberRefs = this.fiberRefs.updateAs(fiberId, FiberRef.currentEnvironment, this.environment);
|
|
@@ -83,10 +88,16 @@ export class Runtime<R> {
|
|
|
83
88
|
|
|
84
89
|
const result = fiber.exitValue();
|
|
85
90
|
if (result !== null) {
|
|
86
|
-
return result;
|
|
91
|
+
return Either.right(result);
|
|
87
92
|
}
|
|
88
93
|
|
|
89
|
-
return
|
|
94
|
+
return Either.left(fiber);
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
unsafeRun = <E, A>(io: IO<R, E, A>, __tsplusTrace?: string): Exit<E, A> => {
|
|
98
|
+
return this.unsafeRunOrFork(io).match(() => {
|
|
99
|
+
throw new Error("Encountered async boundary");
|
|
100
|
+
}, Function.identity);
|
|
90
101
|
};
|
|
91
102
|
}
|
|
92
103
|
|
|
@@ -112,27 +123,17 @@ export const defaultRuntime = new Runtime(Environment.empty, RuntimeFlags.defaul
|
|
|
112
123
|
*/
|
|
113
124
|
export const unsafeRunFiber = defaultRuntime.unsafeRunFiber;
|
|
114
125
|
|
|
115
|
-
/**
|
|
116
|
-
* @tsplus fluent fncts.io.IO unsafeRunAsync
|
|
117
|
-
*/
|
|
118
|
-
export const unsafeRunAsync = defaultRuntime.unsafeRunAsync;
|
|
119
|
-
|
|
120
|
-
/**
|
|
121
|
-
* @tsplus fluent fncts.io.IO unsafeRunAsyncWith
|
|
122
|
-
*/
|
|
123
|
-
export const unsafeRunAsyncWith = defaultRuntime.unsafeRunAsyncWith;
|
|
124
|
-
|
|
125
126
|
/**
|
|
126
127
|
* @tsplus fluent fncts.io.IO unsafeRunPromiseExit
|
|
127
128
|
*/
|
|
128
129
|
export const unsafeRunPromiseExit = defaultRuntime.unsafeRunPromiseExit;
|
|
129
130
|
|
|
130
131
|
/**
|
|
131
|
-
* @tsplus
|
|
132
|
+
* @tsplus getter fncts.io.IO unsafeRunOrFork
|
|
132
133
|
*/
|
|
133
|
-
export const
|
|
134
|
+
export const unsafeRunOrFork = defaultRuntime.unsafeRunOrFork;
|
|
134
135
|
|
|
135
136
|
/**
|
|
136
|
-
* @tsplus getter fncts.io.IO
|
|
137
|
+
* @tsplus getter fncts.io.IO unsafeRun
|
|
137
138
|
*/
|
|
138
|
-
export const
|
|
139
|
+
export const unsafeRun = defaultRuntime.unsafeRun;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { PEnqueue, PEnqueueInternal } from "@fncts/io/Queue/definition";
|
|
2
2
|
|
|
3
|
-
import { concrete, EnqueueTypeId, QueueInternal, QueueTypeId
|
|
3
|
+
import { concrete, EnqueueTypeId, QueueInternal, QueueTypeId, QueueVariance } from "@fncts/io/Queue/definition";
|
|
4
4
|
|
|
5
5
|
class FilterInputIO<RA, RB, EA, EB, B, A, A1 extends A, R2, E2> extends QueueInternal<RA | R2, RB, EA | E2, EB, A1, B> {
|
|
6
6
|
constructor(readonly queue: QueueInternal<RA, RB, EA, EB, A, B>, readonly f: (_: A1) => IO<R2, E2, boolean>) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { PDequeue, PDequeueInternal } from "@fncts/io/Queue/definition";
|
|
2
2
|
|
|
3
|
-
import { concrete, DequeueTypeId, QueueInternal, QueueTypeId
|
|
3
|
+
import { concrete, DequeueTypeId, QueueInternal, QueueTypeId, QueueVariance } from "@fncts/io/Queue/definition";
|
|
4
4
|
|
|
5
5
|
class FilterOutputIO<RA, RB, EA, EB, A, B, RB1, EB1> extends QueueInternal<RA, RB | RB1, EA, EB | EB1, A, B> {
|
|
6
6
|
constructor(readonly queue: QueueInternal<RA, RB, EA, EB, A, B>, readonly f: (b: B) => IO<RB1, EB1, boolean>) {
|
|
@@ -53,15 +53,15 @@ export class AtomicRefSubject<E, A> extends RefSubjectInternal<never, E, A, A> {
|
|
|
53
53
|
end: IO<never, never, void> = this.stream.end;
|
|
54
54
|
|
|
55
55
|
unsafeEmit(value: A): void {
|
|
56
|
-
|
|
56
|
+
this.stream.emit(value).unsafeRunFiber();
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
unsafeFailCause(cause: Cause<E>): void {
|
|
60
|
-
|
|
60
|
+
this.stream.failCause(cause).unsafeRunFiber();
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
unsafeEnd(): void {
|
|
64
|
-
|
|
64
|
+
this.stream.end.unsafeRunFiber();
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
get unsafeGet(): A {
|
|
@@ -111,7 +111,7 @@ class AtomicEmitRef<E, A> extends Atomic<A> {
|
|
|
111
111
|
|
|
112
112
|
unsafeSet(value: A) {
|
|
113
113
|
this.ref.unsafeSet(value);
|
|
114
|
-
this.emitter.emit(value).
|
|
114
|
+
this.emitter.emit(value).unsafeRunFiber();
|
|
115
115
|
}
|
|
116
116
|
|
|
117
117
|
set(value: A, __tsplusTrace?: string) {
|
package/_src/STM/definition.ts
CHANGED
|
@@ -25,7 +25,7 @@ export type STMTypeId = typeof STMTypeId;
|
|
|
25
25
|
*/
|
|
26
26
|
export abstract class STM<R, E, A> {
|
|
27
27
|
readonly [IOTypeId]: IOTypeId = IOTypeId;
|
|
28
|
-
readonly
|
|
28
|
+
readonly _tag = IOOpCode.Commit;
|
|
29
29
|
readonly trace?: string;
|
|
30
30
|
readonly [STMTypeId]: STMTypeId = STMTypeId;
|
|
31
31
|
declare [IOVariance]: {
|
package/_src/State/definition.ts
CHANGED