@typed/fx 0.0.4 → 0.0.6
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/.eslintcache +1 -1
- package/cjs/Cause/Cause.d.ts +10 -0
- package/cjs/Cause/Cause.d.ts.map +1 -1
- package/cjs/Cause/Cause.js +37 -2
- package/cjs/Cause/Cause.js.map +1 -1
- package/cjs/Cause/Renderer.js +1 -1
- package/cjs/Cause/Renderer.js.map +1 -1
- package/cjs/Env/Env.js +1 -1
- package/cjs/Env/Env.js.map +1 -1
- package/cjs/Fiber/fromScope.d.ts +5 -0
- package/cjs/Fiber/fromScope.d.ts.map +1 -0
- package/cjs/Fiber/fromScope.js +17 -0
- package/cjs/Fiber/fromScope.js.map +1 -0
- package/cjs/FiberContext/FiberContext.js +1 -1
- package/cjs/FiberContext/FiberContext.js.map +1 -1
- package/cjs/FiberRef/builtins.d.ts.map +1 -1
- package/cjs/FiberRef/builtins.js +6 -6
- package/cjs/FiberRef/builtins.js.map +1 -1
- package/cjs/FiberRuntime/FiberRuntime.d.ts.map +1 -1
- package/cjs/FiberRuntime/FiberRuntime.js +22 -13
- package/cjs/FiberRuntime/FiberRuntime.js.map +1 -1
- package/cjs/Fx/Fx.d.ts +3 -2
- package/cjs/Fx/Fx.d.ts.map +1 -1
- package/cjs/Fx/Fx.js +24 -22
- package/cjs/Fx/Fx.js.map +1 -1
- package/cjs/Fx/join.d.ts +1 -1
- package/cjs/Fx/join.d.ts.map +1 -1
- package/cjs/Fx/join.js +1 -1
- package/cjs/Fx/join.js.map +1 -1
- package/cjs/Schedule/ScheduleState.d.ts +3 -0
- package/cjs/Schedule/ScheduleState.d.ts.map +1 -1
- package/cjs/Schedule/ScheduleState.js +3 -0
- package/cjs/Schedule/ScheduleState.js.map +1 -1
- package/cjs/Scheduler/RootScheduler.d.ts.map +1 -1
- package/cjs/Scheduler/RootScheduler.js +4 -5
- package/cjs/Scheduler/RootScheduler.js.map +1 -1
- package/cjs/Scheduler/Scheduler.d.ts +2 -2
- package/cjs/Scheduler/Scheduler.d.ts.map +1 -1
- package/cjs/Scheduler/Scheduler.js.map +1 -1
- package/cjs/Scheduler/callbackScheduler.d.ts.map +1 -1
- package/cjs/Scheduler/callbackScheduler.js +1 -0
- package/cjs/Scheduler/callbackScheduler.js.map +1 -1
- package/cjs/Scheduler/runSchedule.d.ts +1 -1
- package/cjs/Scheduler/runSchedule.d.ts.map +1 -1
- package/cjs/Scheduler/runSchedule.js +3 -2
- package/cjs/Scheduler/runSchedule.js.map +1 -1
- package/cjs/Scope/LocalScope.d.ts.map +1 -1
- package/cjs/Scope/LocalScope.js +8 -8
- package/cjs/Scope/LocalScope.js.map +1 -1
- package/cjs/Semaphore/Semaphore.d.ts +9 -9
- package/cjs/Semaphore/Semaphore.d.ts.map +1 -1
- package/cjs/Semaphore/Semaphore.js +34 -15
- package/cjs/Semaphore/Semaphore.js.map +1 -1
- package/cjs/Sink/Sink.d.ts +1 -0
- package/cjs/Sink/Sink.d.ts.map +1 -1
- package/cjs/Sink/Sink.js +11 -1
- package/cjs/Sink/Sink.js.map +1 -1
- package/cjs/Stream/Stream.d.ts +5 -10
- package/cjs/Stream/Stream.d.ts.map +1 -1
- package/cjs/Stream/Stream.js.map +1 -1
- package/cjs/Stream/acquirePermit.d.ts +15 -0
- package/cjs/Stream/acquirePermit.d.ts.map +1 -0
- package/cjs/Stream/acquirePermit.js +43 -0
- package/cjs/Stream/acquirePermit.js.map +1 -0
- package/cjs/Stream/bimap.d.ts +5 -4
- package/cjs/Stream/bimap.d.ts.map +1 -1
- package/cjs/Stream/bimap.js +11 -9
- package/cjs/Stream/bimap.js.map +1 -1
- package/cjs/Stream/continueWith.d.ts +4 -3
- package/cjs/Stream/continueWith.d.ts.map +1 -1
- package/cjs/Stream/continueWith.js +9 -6
- package/cjs/Stream/continueWith.js.map +1 -1
- package/cjs/Stream/drain.d.ts +2 -2
- package/cjs/Stream/drain.d.ts.map +1 -1
- package/cjs/Stream/drain.js +5 -5
- package/cjs/Stream/drain.js.map +1 -1
- package/cjs/Stream/empty.d.ts.map +1 -1
- package/cjs/Stream/empty.js +1 -2
- package/cjs/Stream/empty.js.map +1 -1
- package/cjs/Stream/flatMap.d.ts +7 -5
- package/cjs/Stream/flatMap.d.ts.map +1 -1
- package/cjs/Stream/flatMap.js +43 -17
- package/cjs/Stream/flatMap.js.map +1 -1
- package/cjs/Stream/flatMapConcurrently.d.ts +5 -0
- package/cjs/Stream/flatMapConcurrently.d.ts.map +1 -0
- package/cjs/Stream/flatMapConcurrently.js +20 -0
- package/cjs/Stream/flatMapConcurrently.js.map +1 -0
- package/cjs/Stream/flatMapFx.d.ts +5 -1
- package/cjs/Stream/flatMapFx.d.ts.map +1 -1
- package/cjs/Stream/flatMapFx.js +18 -3
- package/cjs/Stream/flatMapFx.js.map +1 -1
- package/cjs/Stream/fromCallback.d.ts +4 -3
- package/cjs/Stream/fromCallback.d.ts.map +1 -1
- package/cjs/Stream/fromCallback.js +26 -26
- package/cjs/Stream/fromCallback.js.map +1 -1
- package/cjs/Stream/fromFx.d.ts +14 -8
- package/cjs/Stream/fromFx.d.ts.map +1 -1
- package/cjs/Stream/fromFx.js +24 -15
- package/cjs/Stream/fromFx.js.map +1 -1
- package/cjs/Stream/hold.d.ts +27 -0
- package/cjs/Stream/hold.d.ts.map +1 -0
- package/cjs/Stream/hold.js +94 -0
- package/cjs/Stream/hold.js.map +1 -0
- package/cjs/Stream/index.d.ts +8 -0
- package/cjs/Stream/index.d.ts.map +1 -1
- package/cjs/Stream/index.js +8 -0
- package/cjs/Stream/index.js.map +1 -1
- package/cjs/Stream/lazy.d.ts +3 -0
- package/cjs/Stream/lazy.d.ts.map +1 -0
- package/cjs/Stream/lazy.js +9 -0
- package/cjs/Stream/lazy.js.map +1 -0
- package/cjs/Stream/map.d.ts +4 -3
- package/cjs/Stream/map.d.ts.map +1 -1
- package/cjs/Stream/map.js +11 -8
- package/cjs/Stream/map.js.map +1 -1
- package/cjs/Stream/merge.d.ts +18 -0
- package/cjs/Stream/merge.d.ts.map +1 -0
- package/cjs/Stream/merge.js +84 -0
- package/cjs/Stream/merge.js.map +1 -0
- package/cjs/Stream/multicast.d.ts +27 -0
- package/cjs/Stream/multicast.d.ts.map +1 -0
- package/cjs/Stream/multicast.js +83 -0
- package/cjs/Stream/multicast.js.map +1 -0
- package/cjs/Stream/orElse.d.ts +17 -0
- package/cjs/Stream/orElse.d.ts.map +1 -0
- package/cjs/Stream/orElse.js +118 -0
- package/cjs/Stream/orElse.js.map +1 -0
- package/cjs/Stream/periodic.d.ts +1 -1
- package/cjs/Stream/periodic.d.ts.map +1 -1
- package/cjs/Stream/periodic.js +1 -1
- package/cjs/Stream/periodic.js.map +1 -1
- package/cjs/Stream/scan.d.ts +17 -0
- package/cjs/Stream/scan.d.ts.map +1 -0
- package/cjs/Stream/scan.js +32 -0
- package/cjs/Stream/scan.js.map +1 -0
- package/cjs/Stream/scheduled.d.ts +12 -3
- package/cjs/Stream/scheduled.d.ts.map +1 -1
- package/cjs/Stream/scheduled.js +23 -5
- package/cjs/Stream/scheduled.js.map +1 -1
- package/cjs/Stream/setFiberRefLocally.d.ts +15 -0
- package/cjs/Stream/setFiberRefLocally.d.ts.map +1 -0
- package/cjs/Stream/setFiberRefLocally.js +51 -0
- package/cjs/Stream/setFiberRefLocally.js.map +1 -0
- package/cjs/Stream/switchMap.d.ts +18 -0
- package/cjs/Stream/switchMap.d.ts.map +1 -0
- package/cjs/Stream/switchMap.js +136 -0
- package/cjs/Stream/switchMap.js.map +1 -0
- package/cjs/Stream/tap.d.ts +2 -1
- package/cjs/Stream/tap.d.ts.map +1 -1
- package/cjs/Stream/tap.js +4 -2
- package/cjs/Stream/tap.js.map +1 -1
- package/cjs/Timeline/index.js.map +1 -1
- package/esm/Cause/Cause.d.ts +10 -0
- package/esm/Cause/Cause.d.ts.map +1 -1
- package/esm/Cause/Cause.js +27 -0
- package/esm/Cause/Cause.js.map +1 -1
- package/esm/Cause/Renderer.js +1 -1
- package/esm/Cause/Renderer.js.map +1 -1
- package/esm/Env/Env.js +1 -1
- package/esm/Env/Env.js.map +1 -1
- package/esm/Fiber/fromScope.d.ts +5 -0
- package/esm/Fiber/fromScope.d.ts.map +1 -0
- package/esm/Fiber/fromScope.js +13 -0
- package/esm/Fiber/fromScope.js.map +1 -0
- package/esm/FiberContext/FiberContext.js +1 -1
- package/esm/FiberContext/FiberContext.js.map +1 -1
- package/esm/FiberRef/builtins.d.ts.map +1 -1
- package/esm/FiberRef/builtins.js +6 -6
- package/esm/FiberRef/builtins.js.map +1 -1
- package/esm/FiberRuntime/FiberRuntime.d.ts.map +1 -1
- package/esm/FiberRuntime/FiberRuntime.js +22 -13
- package/esm/FiberRuntime/FiberRuntime.js.map +1 -1
- package/esm/Fx/Fx.d.ts +3 -2
- package/esm/Fx/Fx.d.ts.map +1 -1
- package/esm/Fx/Fx.js +21 -20
- package/esm/Fx/Fx.js.map +1 -1
- package/esm/Fx/join.d.ts +1 -1
- package/esm/Fx/join.d.ts.map +1 -1
- package/esm/Fx/join.js +1 -1
- package/esm/Fx/join.js.map +1 -1
- package/esm/Schedule/ScheduleState.d.ts +3 -0
- package/esm/Schedule/ScheduleState.d.ts.map +1 -1
- package/esm/Schedule/ScheduleState.js +3 -0
- package/esm/Schedule/ScheduleState.js.map +1 -1
- package/esm/Scheduler/RootScheduler.d.ts.map +1 -1
- package/esm/Scheduler/RootScheduler.js +4 -5
- package/esm/Scheduler/RootScheduler.js.map +1 -1
- package/esm/Scheduler/Scheduler.d.ts +2 -2
- package/esm/Scheduler/Scheduler.d.ts.map +1 -1
- package/esm/Scheduler/Scheduler.js.map +1 -1
- package/esm/Scheduler/callbackScheduler.d.ts.map +1 -1
- package/esm/Scheduler/callbackScheduler.js +1 -0
- package/esm/Scheduler/callbackScheduler.js.map +1 -1
- package/esm/Scheduler/runSchedule.d.ts +1 -1
- package/esm/Scheduler/runSchedule.d.ts.map +1 -1
- package/esm/Scheduler/runSchedule.js +4 -3
- package/esm/Scheduler/runSchedule.js.map +1 -1
- package/esm/Scope/LocalScope.d.ts.map +1 -1
- package/esm/Scope/LocalScope.js +8 -8
- package/esm/Scope/LocalScope.js.map +1 -1
- package/esm/Semaphore/Semaphore.d.ts +9 -9
- package/esm/Semaphore/Semaphore.d.ts.map +1 -1
- package/esm/Semaphore/Semaphore.js +11 -15
- package/esm/Semaphore/Semaphore.js.map +1 -1
- package/esm/Sink/Sink.d.ts +1 -0
- package/esm/Sink/Sink.d.ts.map +1 -1
- package/esm/Sink/Sink.js +10 -1
- package/esm/Sink/Sink.js.map +1 -1
- package/esm/Stream/Stream.d.ts +5 -10
- package/esm/Stream/Stream.d.ts.map +1 -1
- package/esm/Stream/Stream.js.map +1 -1
- package/esm/Stream/acquirePermit.d.ts +15 -0
- package/esm/Stream/acquirePermit.d.ts.map +1 -0
- package/esm/Stream/acquirePermit.js +15 -0
- package/esm/Stream/acquirePermit.js.map +1 -0
- package/esm/Stream/bimap.d.ts +5 -4
- package/esm/Stream/bimap.d.ts.map +1 -1
- package/esm/Stream/bimap.js +11 -9
- package/esm/Stream/bimap.js.map +1 -1
- package/esm/Stream/continueWith.d.ts +4 -3
- package/esm/Stream/continueWith.d.ts.map +1 -1
- package/esm/Stream/continueWith.js +9 -6
- package/esm/Stream/continueWith.js.map +1 -1
- package/esm/Stream/drain.d.ts +2 -2
- package/esm/Stream/drain.d.ts.map +1 -1
- package/esm/Stream/drain.js +6 -6
- package/esm/Stream/drain.js.map +1 -1
- package/esm/Stream/empty.d.ts.map +1 -1
- package/esm/Stream/empty.js +1 -2
- package/esm/Stream/empty.js.map +1 -1
- package/esm/Stream/flatMap.d.ts +7 -5
- package/esm/Stream/flatMap.d.ts.map +1 -1
- package/esm/Stream/flatMap.js +43 -18
- package/esm/Stream/flatMap.js.map +1 -1
- package/esm/Stream/flatMapConcurrently.d.ts +5 -0
- package/esm/Stream/flatMapConcurrently.d.ts.map +1 -0
- package/esm/Stream/flatMapConcurrently.js +15 -0
- package/esm/Stream/flatMapConcurrently.js.map +1 -0
- package/esm/Stream/flatMapFx.d.ts +5 -1
- package/esm/Stream/flatMapFx.d.ts.map +1 -1
- package/esm/Stream/flatMapFx.js +16 -4
- package/esm/Stream/flatMapFx.js.map +1 -1
- package/esm/Stream/fromCallback.d.ts +4 -3
- package/esm/Stream/fromCallback.d.ts.map +1 -1
- package/esm/Stream/fromCallback.js +26 -26
- package/esm/Stream/fromCallback.js.map +1 -1
- package/esm/Stream/fromFx.d.ts +14 -8
- package/esm/Stream/fromFx.d.ts.map +1 -1
- package/esm/Stream/fromFx.js +13 -13
- package/esm/Stream/fromFx.js.map +1 -1
- package/esm/Stream/hold.d.ts +27 -0
- package/esm/Stream/hold.d.ts.map +1 -0
- package/esm/Stream/hold.js +66 -0
- package/esm/Stream/hold.js.map +1 -0
- package/esm/Stream/index.d.ts +8 -0
- package/esm/Stream/index.d.ts.map +1 -1
- package/esm/Stream/index.js +8 -0
- package/esm/Stream/index.js.map +1 -1
- package/esm/Stream/lazy.d.ts +3 -0
- package/esm/Stream/lazy.d.ts.map +1 -0
- package/esm/Stream/lazy.js +5 -0
- package/esm/Stream/lazy.js.map +1 -0
- package/esm/Stream/map.d.ts +4 -3
- package/esm/Stream/map.d.ts.map +1 -1
- package/esm/Stream/map.js +11 -8
- package/esm/Stream/map.js.map +1 -1
- package/esm/Stream/merge.d.ts +18 -0
- package/esm/Stream/merge.d.ts.map +1 -0
- package/esm/Stream/merge.js +55 -0
- package/esm/Stream/merge.js.map +1 -0
- package/esm/Stream/multicast.d.ts +27 -0
- package/esm/Stream/multicast.d.ts.map +1 -0
- package/esm/Stream/multicast.js +55 -0
- package/esm/Stream/multicast.js.map +1 -0
- package/esm/Stream/orElse.d.ts +17 -0
- package/esm/Stream/orElse.d.ts.map +1 -0
- package/esm/Stream/orElse.js +90 -0
- package/esm/Stream/orElse.js.map +1 -0
- package/esm/Stream/periodic.d.ts +1 -1
- package/esm/Stream/periodic.d.ts.map +1 -1
- package/esm/Stream/periodic.js +1 -1
- package/esm/Stream/periodic.js.map +1 -1
- package/esm/Stream/scan.d.ts +17 -0
- package/esm/Stream/scan.d.ts.map +1 -0
- package/esm/Stream/scan.js +27 -0
- package/esm/Stream/scan.js.map +1 -0
- package/esm/Stream/scheduled.d.ts +12 -3
- package/esm/Stream/scheduled.d.ts.map +1 -1
- package/esm/Stream/scheduled.js +16 -4
- package/esm/Stream/scheduled.js.map +1 -1
- package/esm/Stream/setFiberRefLocally.d.ts +15 -0
- package/esm/Stream/setFiberRefLocally.d.ts.map +1 -0
- package/esm/Stream/setFiberRefLocally.js +23 -0
- package/esm/Stream/setFiberRefLocally.js.map +1 -0
- package/esm/Stream/switchMap.d.ts +18 -0
- package/esm/Stream/switchMap.d.ts.map +1 -0
- package/esm/Stream/switchMap.js +107 -0
- package/esm/Stream/switchMap.js.map +1 -0
- package/esm/Stream/tap.d.ts +2 -1
- package/esm/Stream/tap.d.ts.map +1 -1
- package/esm/Stream/tap.js +3 -2
- package/esm/Stream/tap.js.map +1 -1
- package/esm/Timeline/index.js.map +1 -1
- package/package.json +111 -21
- package/readme.md +1 -1
- package/src/Cause/Cause.ts +63 -0
- package/src/Cause/Renderer.ts +1 -1
- package/src/Env/Env.ts +1 -1
- package/src/Fiber/fromScope.ts +19 -0
- package/src/FiberContext/FiberContext.ts +1 -1
- package/src/FiberRef/builtins.ts +19 -10
- package/src/FiberRuntime/FiberRuntime.ts +32 -25
- package/src/Fx/Fx.test.ts +2 -2
- package/src/Fx/Fx.ts +10 -9
- package/src/Fx/join.ts +4 -4
- package/src/Schedule/ScheduleState.ts +3 -0
- package/src/Scheduler/RootScheduler.ts +7 -9
- package/src/Scheduler/Scheduler.ts +5 -6
- package/src/Scheduler/callbackScheduler.ts +1 -0
- package/src/Scheduler/runSchedule.ts +5 -2
- package/src/Scope/LocalScope.ts +8 -6
- package/src/Semaphore/Semaphore.ts +12 -19
- package/src/Sink/Sink.ts +11 -1
- package/src/Stream/Stream.ts +9 -11
- package/src/Stream/acquirePermit.ts +32 -0
- package/src/Stream/bimap.ts +16 -9
- package/src/Stream/continueWith.ts +11 -7
- package/src/Stream/drain.ts +8 -7
- package/src/Stream/empty.ts +1 -2
- package/src/Stream/flatMap.test.ts +8 -21
- package/src/Stream/flatMap.ts +58 -23
- package/src/Stream/flatMapConcurrently.test.ts +77 -0
- package/src/Stream/flatMapConcurrently.ts +30 -0
- package/src/Stream/flatMapFx.ts +37 -4
- package/src/Stream/fromCallback.test.ts +3 -16
- package/src/Stream/fromCallback.ts +48 -29
- package/src/Stream/fromFx.test.ts +3 -24
- package/src/Stream/fromFx.ts +47 -30
- package/src/Stream/hold.test.ts +52 -0
- package/src/Stream/hold.ts +117 -0
- package/src/Stream/index.ts +8 -0
- package/src/Stream/lazy.ts +5 -0
- package/src/Stream/logging.test.ts +8 -3
- package/src/Stream/map.ts +25 -11
- package/src/Stream/merge.test.ts +31 -0
- package/src/Stream/merge.ts +76 -0
- package/src/Stream/multicast.test.ts +32 -0
- package/src/Stream/multicast.ts +114 -0
- package/src/Stream/orElse.ts +123 -0
- package/src/Stream/periodic.ts +2 -2
- package/src/Stream/scan.test.ts +28 -0
- package/src/Stream/scan.ts +46 -0
- package/src/Stream/scheduled.test.ts +9 -1
- package/src/Stream/scheduled.ts +46 -12
- package/src/Stream/setFiberRefLocally.ts +44 -0
- package/src/Stream/switchMap.test.ts +43 -0
- package/src/Stream/switchMap.ts +159 -0
- package/src/Stream/tap.ts +6 -3
- package/src/Timeline/index.ts +1 -0
- package/cjs/Effect/Effect.d.ts +0 -199
- package/cjs/Effect/Effect.d.ts.map +0 -1
- package/cjs/Effect/Effect.js +0 -66
- package/cjs/Effect/Effect.js.map +0 -1
- package/esm/Effect/Effect.d.ts +0 -199
- package/esm/Effect/Effect.d.ts.map +0 -1
- package/esm/Effect/Effect.js +0 -50
- package/esm/Effect/Effect.js.map +0 -1
- package/src/Effect/Effect.ts +0 -109
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { flow, pipe } from 'hkt-ts';
|
|
2
|
+
import { isRight } from 'hkt-ts/Either';
|
|
3
|
+
import { isJust } from 'hkt-ts/Maybe';
|
|
4
|
+
import { MapStream } from './map.js';
|
|
5
|
+
import { Disposable, settable } from "../Disposable/Disposable.js";
|
|
6
|
+
import * as FiberRefs from "../FiberRefs/index.js";
|
|
7
|
+
import * as Fx from "../Fx/index.js";
|
|
8
|
+
import { access, lazy, unit } from "../Fx/index.js";
|
|
9
|
+
import { Lock } from "../Semaphore/Semaphore.js";
|
|
10
|
+
import * as Sink from "../Sink/Sink.js";
|
|
11
|
+
import { None, and } from "../Supervisor/Supervisor.js";
|
|
12
|
+
export function switchMap(f, __trace) {
|
|
13
|
+
return (stream) => SwitchMapStream.make(stream, f, __trace);
|
|
14
|
+
}
|
|
15
|
+
export function switchLatest(stream, __trace) {
|
|
16
|
+
return switchMap((a) => a, __trace)(stream);
|
|
17
|
+
}
|
|
18
|
+
export class SwitchMapStream {
|
|
19
|
+
stream;
|
|
20
|
+
f;
|
|
21
|
+
__trace;
|
|
22
|
+
constructor(stream, f, __trace) {
|
|
23
|
+
this.stream = stream;
|
|
24
|
+
this.f = f;
|
|
25
|
+
this.__trace = __trace;
|
|
26
|
+
}
|
|
27
|
+
fork(sink, scheduler, context) {
|
|
28
|
+
const { stream, f } = this;
|
|
29
|
+
return access((env) => stream.fork(new SwitchMapSink(sink, scheduler, context, f, env, this.__trace), scheduler, context), "access" + " node_modules/@typed/fx/src/Stream/switchMap.ts:46:18");
|
|
30
|
+
}
|
|
31
|
+
static make(stream, f, __trace) {
|
|
32
|
+
if (stream instanceof MapStream) {
|
|
33
|
+
return SwitchMapStream.make(stream.stream, flow(stream.f, f), __trace);
|
|
34
|
+
}
|
|
35
|
+
return new SwitchMapStream(stream, f, __trace);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
class SwitchMapSink {
|
|
39
|
+
sink;
|
|
40
|
+
scheduler;
|
|
41
|
+
context;
|
|
42
|
+
f;
|
|
43
|
+
env;
|
|
44
|
+
__trace;
|
|
45
|
+
_ended = false;
|
|
46
|
+
_fibers = [];
|
|
47
|
+
_lock = new Lock();
|
|
48
|
+
_supervisor = None.extend({
|
|
49
|
+
onEnd: () => (fiber, exit) => {
|
|
50
|
+
const parentContext = fiber.context.parent;
|
|
51
|
+
// Merge FiberRefs upon successful completion
|
|
52
|
+
if (isRight(exit) && isJust(parentContext)) {
|
|
53
|
+
FiberRefs.join(parentContext.value.fiberRefs, fiber.context.fiberRefs);
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
});
|
|
57
|
+
constructor(sink, scheduler, context, f, env, __trace) {
|
|
58
|
+
this.sink = sink;
|
|
59
|
+
this.scheduler = scheduler;
|
|
60
|
+
this.context = context;
|
|
61
|
+
this.f = f;
|
|
62
|
+
this.env = env;
|
|
63
|
+
this.__trace = __trace;
|
|
64
|
+
}
|
|
65
|
+
event = (a) => Fx.lazy(() => {
|
|
66
|
+
const forked = this.context.fork({
|
|
67
|
+
supervisor: and(this._supervisor)(this.context.supervisor),
|
|
68
|
+
});
|
|
69
|
+
const cleanup = Fx.zipAll(this._fibers.map((f) => f.interruptAs(forked.id)));
|
|
70
|
+
const disposable = settable();
|
|
71
|
+
const sink = this.innerSink(disposable);
|
|
72
|
+
return pipe(cleanup, // eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
73
|
+
Fx.flatMap(() => this.f(a).fork(Sink.addTrace(sink, this.__trace), this.scheduler, forked)), Fx.tapLazy((fiber) => {
|
|
74
|
+
this._fibers.push(fiber);
|
|
75
|
+
disposable.add(Disposable(() => {
|
|
76
|
+
this._fibers.splice(this._fibers.indexOf(fiber), 1);
|
|
77
|
+
}));
|
|
78
|
+
}), Fx.flatMap((fiber) => pipe(fiber, Fx.join, Fx.tapLazy(() => disposable.dispose()))), (x) => x, Fx.provide(this.env));
|
|
79
|
+
}, "Fx.lazy" + " node_modules/@typed/fx/src/Stream/switchMap.ts:94:12");
|
|
80
|
+
error = (cause) => {
|
|
81
|
+
return lazy(() => {
|
|
82
|
+
this._ended = true;
|
|
83
|
+
return this.sink.error(cause);
|
|
84
|
+
}, "lazy" + " node_modules/@typed/fx/src/Stream/switchMap.ts:128:16");
|
|
85
|
+
};
|
|
86
|
+
end = lazy(() => {
|
|
87
|
+
this._ended = true;
|
|
88
|
+
return this.endIfCompleted();
|
|
89
|
+
}, "lazy" + " node_modules/@typed/fx/src/Stream/switchMap.ts:135:13");
|
|
90
|
+
endIfCompleted() {
|
|
91
|
+
if (this._ended && this._fibers.length === 0) {
|
|
92
|
+
return this.sink.end;
|
|
93
|
+
}
|
|
94
|
+
return unit;
|
|
95
|
+
}
|
|
96
|
+
innerSink(disposable) {
|
|
97
|
+
return {
|
|
98
|
+
event: this.sink.event,
|
|
99
|
+
error: this.error,
|
|
100
|
+
end: lazy(() => {
|
|
101
|
+
disposable.dispose();
|
|
102
|
+
return this.endIfCompleted();
|
|
103
|
+
}, "lazy" + " node_modules/@typed/fx/src/Stream/switchMap.ts:153:16"),
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=switchMap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"switchMap.js","sourceRoot":"","sources":["../../src/Stream/switchMap.ts"],"names":[],"mappings":"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"}
|
package/esm/Stream/tap.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Stream } from './Stream.js';
|
|
2
2
|
import { Fx } from "../Fx/Fx.js";
|
|
3
|
-
export declare const tap: <A, R2, E2, B>(f: (a: A) => Fx<R2, E2, B
|
|
3
|
+
export declare const tap: <A, R2, E2, B>(f: (a: A) => Fx<R2, E2, B>, __trace?: string) => <R, E>(stream: Stream<R, E, A>) => Stream<R2 | R, E2 | E, A>;
|
|
4
|
+
export declare const tapLazy: <A, B>(f: (a: A) => B, __trace?: string) => <R, E>(stream: Stream<R, E, A>) => Stream<R, E, A>;
|
|
4
5
|
//# sourceMappingURL=tap.d.ts.map
|
package/esm/Stream/tap.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tap.d.ts","sourceRoot":"","sources":["../../src/Stream/tap.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAGpC,OAAO,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"tap.d.ts","sourceRoot":"","sources":["../../src/Stream/tap.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAGpC,OAAO,EAAE,EAAE,EAAiB,oBAAkB;AAE9C,eAAO,MAAM,GAAG,uDACuC,MAAM,iEAYxD,CAAA;AAEL,eAAO,MAAM,OAAO,mCAAoC,MAAM,uDAChB,CAAA"}
|
package/esm/Stream/tap.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { pipe } from 'hkt-ts/function';
|
|
2
2
|
import { flatMapFx } from './flatMapFx.js';
|
|
3
|
-
import { map } from "../Fx/Fx.js";
|
|
4
|
-
export const tap = (f) => (stream) => pipe(stream, flatMapFx((a) => pipe(f(a), map(() => a)),
|
|
3
|
+
import { fromLazy, map } from "../Fx/Fx.js";
|
|
4
|
+
export const tap = (f, __trace) => (stream) => pipe(stream, flatMapFx((a) => pipe(f(a), map(() => a)), __trace));
|
|
5
|
+
export const tapLazy = (f, __trace) => tap((a) => fromLazy(() => f(a)), __trace);
|
|
5
6
|
//# sourceMappingURL=tap.js.map
|
package/esm/Stream/tap.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tap.js","sourceRoot":"","sources":["../../src/Stream/tap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAGtC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,OAAO,EAAM,GAAG,EAAE,oBAAkB;
|
|
1
|
+
{"version":3,"file":"tap.js","sourceRoot":"","sources":["../../src/Stream/tap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAGtC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,OAAO,EAAM,QAAQ,EAAE,GAAG,EAAE,oBAAkB;AAE9C,MAAM,CAAC,MAAM,GAAG,GACd,CAAe,CAA0B,EAAE,OAAgB,EAAE,EAAE,CAC/D,CAAO,MAAuB,EAA6B,EAAE,CAC3D,IAAI,CACF,MAAM,EACN,SAAS,CACP,CAAC,CAAC,EAAE,EAAE,CACJ,IAAI,CACF,CAAC,CAAC,CAAC,CAAC,EACJ,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CACb,EACH,OAAO,CACR,CACF,CAAA;AAEL,MAAM,CAAC,MAAM,OAAO,GAAG,CAAO,CAAc,EAAE,OAAgB,EAAE,EAAE,CAChE,GAAG,CAAC,CAAC,CAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Timeline/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,oCAAkC;AACvD,OAAO,EAAE,aAAa,EAAY,yBAAuB;AA6BzD,MAAM,UAAU,QAAQ,CAAI,SAAsB;IAChD,OAAO,IAAI,YAAY,CAAC,SAAS,CAAC,CAAA;AACpC,CAAC;AAED,MAAM,YAAY;IAGK;IAFX,SAAS,GAAkB,EAAE,CAAA;IAEvC,YAAqB,SAAsB;QAAtB,cAAS,GAAT,SAAS,CAAa;IAAG,CAAC;IAEtC,WAAW,GAAG,GAAa,EAAE;QACpC,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;YAClB,OAAO,aAAa,CAAA;SACrB;QAED,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAC/B,CAAC,CAAA;IAEQ,OAAO,GAAG,GAAY,EAAE;QAC/B,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,CAAA;IACpC,CAAC,CAAA;IAEQ,GAAG,GAAG,CAAC,IAAc,EAAE,CAAI,EAAc,EAAE;QAClD,YAAY,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Timeline/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@typed/fx",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.6",
|
|
4
4
|
"description": "High-performance Asynchronous Effects",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "esm/index.js",
|
|
@@ -256,26 +256,6 @@
|
|
|
256
256
|
"types": "./esm/Duration/Duration.d.ts"
|
|
257
257
|
}
|
|
258
258
|
},
|
|
259
|
-
"./Effect": {
|
|
260
|
-
"require": {
|
|
261
|
-
"default": "./cjs/Effect/index.js",
|
|
262
|
-
"types": "./cjs/Effect/index.js"
|
|
263
|
-
},
|
|
264
|
-
"import": {
|
|
265
|
-
"default": "./esm/Effect/index.js",
|
|
266
|
-
"types": "./esm/Effect/index.js"
|
|
267
|
-
}
|
|
268
|
-
},
|
|
269
|
-
"./Effect/Effect": {
|
|
270
|
-
"require": {
|
|
271
|
-
"default": "./cjs/Effect/Effect.js",
|
|
272
|
-
"types": "./cjs/Effect/Effect.d.ts"
|
|
273
|
-
},
|
|
274
|
-
"import": {
|
|
275
|
-
"default": "./esm/Effect/Effect.js",
|
|
276
|
-
"types": "./esm/Effect/Effect.d.ts"
|
|
277
|
-
}
|
|
278
|
-
},
|
|
279
259
|
"./Env": {
|
|
280
260
|
"require": {
|
|
281
261
|
"default": "./cjs/Env/index.js",
|
|
@@ -356,6 +336,16 @@
|
|
|
356
336
|
"types": "./esm/Fiber/fromExit.d.ts"
|
|
357
337
|
}
|
|
358
338
|
},
|
|
339
|
+
"./Fiber/fromScope": {
|
|
340
|
+
"require": {
|
|
341
|
+
"default": "./cjs/Fiber/fromScope.js",
|
|
342
|
+
"types": "./cjs/Fiber/fromScope.d.ts"
|
|
343
|
+
},
|
|
344
|
+
"import": {
|
|
345
|
+
"default": "./esm/Fiber/fromScope.js",
|
|
346
|
+
"types": "./esm/Fiber/fromScope.d.ts"
|
|
347
|
+
}
|
|
348
|
+
},
|
|
359
349
|
"./Fiber/hkt": {
|
|
360
350
|
"require": {
|
|
361
351
|
"default": "./cjs/Fiber/hkt.js",
|
|
@@ -1176,6 +1166,16 @@
|
|
|
1176
1166
|
"types": "./esm/Stream/Stream.d.ts"
|
|
1177
1167
|
}
|
|
1178
1168
|
},
|
|
1169
|
+
"./Stream/acquirePermit": {
|
|
1170
|
+
"require": {
|
|
1171
|
+
"default": "./cjs/Stream/acquirePermit.js",
|
|
1172
|
+
"types": "./cjs/Stream/acquirePermit.d.ts"
|
|
1173
|
+
},
|
|
1174
|
+
"import": {
|
|
1175
|
+
"default": "./esm/Stream/acquirePermit.js",
|
|
1176
|
+
"types": "./esm/Stream/acquirePermit.d.ts"
|
|
1177
|
+
}
|
|
1178
|
+
},
|
|
1179
1179
|
"./Stream/bimap": {
|
|
1180
1180
|
"require": {
|
|
1181
1181
|
"default": "./cjs/Stream/bimap.js",
|
|
@@ -1226,6 +1226,16 @@
|
|
|
1226
1226
|
"types": "./esm/Stream/flatMap.d.ts"
|
|
1227
1227
|
}
|
|
1228
1228
|
},
|
|
1229
|
+
"./Stream/flatMapConcurrently": {
|
|
1230
|
+
"require": {
|
|
1231
|
+
"default": "./cjs/Stream/flatMapConcurrently.js",
|
|
1232
|
+
"types": "./cjs/Stream/flatMapConcurrently.d.ts"
|
|
1233
|
+
},
|
|
1234
|
+
"import": {
|
|
1235
|
+
"default": "./esm/Stream/flatMapConcurrently.js",
|
|
1236
|
+
"types": "./esm/Stream/flatMapConcurrently.d.ts"
|
|
1237
|
+
}
|
|
1238
|
+
},
|
|
1229
1239
|
"./Stream/flatMapFx": {
|
|
1230
1240
|
"require": {
|
|
1231
1241
|
"default": "./cjs/Stream/flatMapFx.js",
|
|
@@ -1266,6 +1276,26 @@
|
|
|
1266
1276
|
"types": "./esm/Stream/hkt.d.ts"
|
|
1267
1277
|
}
|
|
1268
1278
|
},
|
|
1279
|
+
"./Stream/hold": {
|
|
1280
|
+
"require": {
|
|
1281
|
+
"default": "./cjs/Stream/hold.js",
|
|
1282
|
+
"types": "./cjs/Stream/hold.d.ts"
|
|
1283
|
+
},
|
|
1284
|
+
"import": {
|
|
1285
|
+
"default": "./esm/Stream/hold.js",
|
|
1286
|
+
"types": "./esm/Stream/hold.d.ts"
|
|
1287
|
+
}
|
|
1288
|
+
},
|
|
1289
|
+
"./Stream/lazy": {
|
|
1290
|
+
"require": {
|
|
1291
|
+
"default": "./cjs/Stream/lazy.js",
|
|
1292
|
+
"types": "./cjs/Stream/lazy.d.ts"
|
|
1293
|
+
},
|
|
1294
|
+
"import": {
|
|
1295
|
+
"default": "./esm/Stream/lazy.js",
|
|
1296
|
+
"types": "./esm/Stream/lazy.d.ts"
|
|
1297
|
+
}
|
|
1298
|
+
},
|
|
1269
1299
|
"./Stream/map": {
|
|
1270
1300
|
"require": {
|
|
1271
1301
|
"default": "./cjs/Stream/map.js",
|
|
@@ -1276,6 +1306,36 @@
|
|
|
1276
1306
|
"types": "./esm/Stream/map.d.ts"
|
|
1277
1307
|
}
|
|
1278
1308
|
},
|
|
1309
|
+
"./Stream/merge": {
|
|
1310
|
+
"require": {
|
|
1311
|
+
"default": "./cjs/Stream/merge.js",
|
|
1312
|
+
"types": "./cjs/Stream/merge.d.ts"
|
|
1313
|
+
},
|
|
1314
|
+
"import": {
|
|
1315
|
+
"default": "./esm/Stream/merge.js",
|
|
1316
|
+
"types": "./esm/Stream/merge.d.ts"
|
|
1317
|
+
}
|
|
1318
|
+
},
|
|
1319
|
+
"./Stream/multicast": {
|
|
1320
|
+
"require": {
|
|
1321
|
+
"default": "./cjs/Stream/multicast.js",
|
|
1322
|
+
"types": "./cjs/Stream/multicast.d.ts"
|
|
1323
|
+
},
|
|
1324
|
+
"import": {
|
|
1325
|
+
"default": "./esm/Stream/multicast.js",
|
|
1326
|
+
"types": "./esm/Stream/multicast.d.ts"
|
|
1327
|
+
}
|
|
1328
|
+
},
|
|
1329
|
+
"./Stream/orElse": {
|
|
1330
|
+
"require": {
|
|
1331
|
+
"default": "./cjs/Stream/orElse.js",
|
|
1332
|
+
"types": "./cjs/Stream/orElse.d.ts"
|
|
1333
|
+
},
|
|
1334
|
+
"import": {
|
|
1335
|
+
"default": "./esm/Stream/orElse.js",
|
|
1336
|
+
"types": "./esm/Stream/orElse.d.ts"
|
|
1337
|
+
}
|
|
1338
|
+
},
|
|
1279
1339
|
"./Stream/periodic": {
|
|
1280
1340
|
"require": {
|
|
1281
1341
|
"default": "./cjs/Stream/periodic.js",
|
|
@@ -1296,6 +1356,16 @@
|
|
|
1296
1356
|
"types": "./esm/Stream/run.d.ts"
|
|
1297
1357
|
}
|
|
1298
1358
|
},
|
|
1359
|
+
"./Stream/scan": {
|
|
1360
|
+
"require": {
|
|
1361
|
+
"default": "./cjs/Stream/scan.js",
|
|
1362
|
+
"types": "./cjs/Stream/scan.d.ts"
|
|
1363
|
+
},
|
|
1364
|
+
"import": {
|
|
1365
|
+
"default": "./esm/Stream/scan.js",
|
|
1366
|
+
"types": "./esm/Stream/scan.d.ts"
|
|
1367
|
+
}
|
|
1368
|
+
},
|
|
1299
1369
|
"./Stream/scheduled": {
|
|
1300
1370
|
"require": {
|
|
1301
1371
|
"default": "./cjs/Stream/scheduled.js",
|
|
@@ -1306,6 +1376,26 @@
|
|
|
1306
1376
|
"types": "./esm/Stream/scheduled.d.ts"
|
|
1307
1377
|
}
|
|
1308
1378
|
},
|
|
1379
|
+
"./Stream/setFiberRefLocally": {
|
|
1380
|
+
"require": {
|
|
1381
|
+
"default": "./cjs/Stream/setFiberRefLocally.js",
|
|
1382
|
+
"types": "./cjs/Stream/setFiberRefLocally.d.ts"
|
|
1383
|
+
},
|
|
1384
|
+
"import": {
|
|
1385
|
+
"default": "./esm/Stream/setFiberRefLocally.js",
|
|
1386
|
+
"types": "./esm/Stream/setFiberRefLocally.d.ts"
|
|
1387
|
+
}
|
|
1388
|
+
},
|
|
1389
|
+
"./Stream/switchMap": {
|
|
1390
|
+
"require": {
|
|
1391
|
+
"default": "./cjs/Stream/switchMap.js",
|
|
1392
|
+
"types": "./cjs/Stream/switchMap.d.ts"
|
|
1393
|
+
},
|
|
1394
|
+
"import": {
|
|
1395
|
+
"default": "./esm/Stream/switchMap.js",
|
|
1396
|
+
"types": "./esm/Stream/switchMap.d.ts"
|
|
1397
|
+
}
|
|
1398
|
+
},
|
|
1309
1399
|
"./Stream/tap": {
|
|
1310
1400
|
"require": {
|
|
1311
1401
|
"default": "./cjs/Stream/tap.js",
|
package/readme.md
CHANGED
|
@@ -23,7 +23,7 @@ bundle size, parse time, memory constraints, etc. are of great concern. There wi
|
|
|
23
23
|
these metrics, ergonomics, and feature-set. We'll attempt to tread these lines as best we can, but Fx is highly feature-rich
|
|
24
24
|
as it is, and can be used to build many many more abstractions that are not yet available as 3rd party plugins.
|
|
25
25
|
|
|
26
|
-
The full library, and its dependencies, are about
|
|
26
|
+
The full library, and its dependencies, are about 30kb minified + gzipped.
|
|
27
27
|
However, it is provided as ES modules and is highly tree-shakeable. Take only what you need.
|
|
28
28
|
|
|
29
29
|
## Come Back Soon
|
package/src/Cause/Cause.ts
CHANGED
|
@@ -85,6 +85,16 @@ export const traced =
|
|
|
85
85
|
<E>(cause: Cause<E>): Cause<E> =>
|
|
86
86
|
new Traced(cause, trace)
|
|
87
87
|
|
|
88
|
+
export const isEmpty = <E>(cause: Cause<E>): cause is Empty => cause.tag === Empty.tag
|
|
89
|
+
export const isInterrupted = <E>(cause: Cause<E>): cause is Interrupted =>
|
|
90
|
+
cause.tag === 'Interrupted'
|
|
91
|
+
export const isUnexpected = <E>(cause: Cause<E>): cause is Unexpected => cause.tag === 'Unexpected'
|
|
92
|
+
export const isExpected = <E>(cause: Cause<E>): cause is Expected<E> => cause.tag === 'Expected'
|
|
93
|
+
export const isSequential = <E>(cause: Cause<E>): cause is Sequential<E, E> =>
|
|
94
|
+
cause.tag === 'Sequential'
|
|
95
|
+
export const isParallel = <E>(cause: Cause<E>): cause is Parallel<E, E> => cause.tag === 'Parallel'
|
|
96
|
+
export const isTraced = <E>(cause: Cause<E>): cause is Traced<E> => cause.tag === 'Traced'
|
|
97
|
+
|
|
88
98
|
export const makeParallelAssociative = <E>(): Associative.Associative<Cause<E>> => ({
|
|
89
99
|
concat: (left, right) =>
|
|
90
100
|
left.tag === Empty.tag ? right : right.tag === Empty.tag ? left : new Parallel(left, right),
|
|
@@ -423,3 +433,56 @@ export const makeDebug = <E>(renderer: Renderer<E> = defaultRenderer): D.Debug<C
|
|
|
423
433
|
D.Debug((cause) => prettyPrint(cause, renderer))
|
|
424
434
|
|
|
425
435
|
export const Debug = makeDebug()
|
|
436
|
+
|
|
437
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
438
|
+
export const findExpected = find(<E>(_e: E): _e is E => true)
|
|
439
|
+
|
|
440
|
+
export function findType<T extends Cause<any>['tag']>(tag: T) {
|
|
441
|
+
return <E>(cause: Cause<E>): Maybe.Maybe<Cause<E>> => {
|
|
442
|
+
if (cause.tag === tag) {
|
|
443
|
+
return Maybe.Just(cause)
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
if (cause.tag === 'Sequential') {
|
|
447
|
+
return pipe(
|
|
448
|
+
findType(tag)(cause.left),
|
|
449
|
+
Maybe.match(
|
|
450
|
+
() => findType(tag)(cause.right),
|
|
451
|
+
(a) =>
|
|
452
|
+
pipe(
|
|
453
|
+
findType(tag)(cause.right),
|
|
454
|
+
Maybe.match(
|
|
455
|
+
() => Maybe.Just(a),
|
|
456
|
+
(b) => Maybe.Just(sequential(a, b)),
|
|
457
|
+
),
|
|
458
|
+
),
|
|
459
|
+
),
|
|
460
|
+
)
|
|
461
|
+
}
|
|
462
|
+
|
|
463
|
+
if (cause.tag === 'Parallel') {
|
|
464
|
+
return pipe(
|
|
465
|
+
findType(tag)(cause.left),
|
|
466
|
+
Maybe.match(
|
|
467
|
+
() => findType(tag)(cause.right),
|
|
468
|
+
(a) =>
|
|
469
|
+
pipe(
|
|
470
|
+
findType(tag)(cause.right),
|
|
471
|
+
Maybe.match(
|
|
472
|
+
() => Maybe.Just(a),
|
|
473
|
+
(b) => Maybe.Just(parallel(a, b)),
|
|
474
|
+
),
|
|
475
|
+
),
|
|
476
|
+
),
|
|
477
|
+
)
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
if (cause.tag === 'Traced') {
|
|
481
|
+
return findType(tag)(cause.cause)
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
return Maybe.Nothing
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
|
|
488
|
+
export const findInterrupted = findType('Interrupted')
|
package/src/Cause/Renderer.ts
CHANGED
|
@@ -67,7 +67,7 @@ export function renderInterrupted<E>(
|
|
|
67
67
|
): Sequential {
|
|
68
68
|
return Sequential([
|
|
69
69
|
Failure([
|
|
70
|
-
`Interrupted by
|
|
70
|
+
`Interrupted by ${FiberIdDebug.debug(cause.fiberId)}.`,
|
|
71
71
|
'',
|
|
72
72
|
...renderTrace(trace, renderer),
|
|
73
73
|
]),
|
package/src/Env/Env.ts
CHANGED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { pipe } from 'hkt-ts'
|
|
2
|
+
|
|
3
|
+
import { Synthetic } from './Fiber.js'
|
|
4
|
+
|
|
5
|
+
import { FiberId } from '@/FiberId/FiberId.js'
|
|
6
|
+
import { Closeable, closeOrWait, wait } from '@/Scope/Closeable.js'
|
|
7
|
+
import { Exit, FiberRefs, Fx } from '@/index.js'
|
|
8
|
+
|
|
9
|
+
export function fromScope(id: FiberId, fiberRefs: FiberRefs.FiberRefs, scope: Closeable) {
|
|
10
|
+
return Synthetic({
|
|
11
|
+
id,
|
|
12
|
+
exit: wait(scope),
|
|
13
|
+
inheritFiberRefs: pipe(
|
|
14
|
+
Fx.getFiberRefs,
|
|
15
|
+
Fx.flatMap((refs) => Fx.fromLazy(() => FiberRefs.join(refs, fiberRefs))),
|
|
16
|
+
),
|
|
17
|
+
interruptAs: (id) => closeOrWait(scope)(Exit.interrupt(id)),
|
|
18
|
+
})
|
|
19
|
+
}
|
|
@@ -61,7 +61,7 @@ export function fork<Id extends FiberId.FiberId = FiberId.Live, Id2 extends Fibe
|
|
|
61
61
|
platform: overrides?.platform ?? context.platform.fork(),
|
|
62
62
|
fiberRefs: overrides?.fiberRefs ?? context.fiberRefs.fork(),
|
|
63
63
|
scope: overrides?.scope ?? context.scope.fork(),
|
|
64
|
-
supervisor: overrides?.supervisor ??
|
|
64
|
+
supervisor: overrides?.supervisor ?? context.supervisor,
|
|
65
65
|
logger: overrides?.logger ?? context.logger,
|
|
66
66
|
parent: overrides?.parent ?? Just(context),
|
|
67
67
|
})
|
package/src/FiberRef/builtins.ts
CHANGED
|
@@ -20,7 +20,7 @@ export const CurrentEnv = make(
|
|
|
20
20
|
pipe(
|
|
21
21
|
Fx.getFiberContext,
|
|
22
22
|
// Always use a snapshot of the FiberRefs to avoid mutability problems.
|
|
23
|
-
Fx.map((c): Env<any> => ({ get: getServiceFromFiberRefs(c.fiberRefs) })),
|
|
23
|
+
Fx.map((c): Env<any> => ({ get: getServiceFromFiberRefs(c.fiberRefs.fork()) })),
|
|
24
24
|
),
|
|
25
25
|
{
|
|
26
26
|
fork: constant(Nothing), // Always create a new Env for each Fiber.
|
|
@@ -55,17 +55,26 @@ export const Layers = FiberRef.make(
|
|
|
55
55
|
},
|
|
56
56
|
)
|
|
57
57
|
|
|
58
|
-
export const Services = FiberRef.make(
|
|
59
|
-
|
|
60
|
-
|
|
58
|
+
export const Services = FiberRef.make(
|
|
59
|
+
Fx.fromLazy(() => ImmutableMap<Service<any>, any>()),
|
|
60
|
+
{
|
|
61
|
+
join: identity, // Always keep the parent Fiber's services
|
|
62
|
+
},
|
|
63
|
+
)
|
|
61
64
|
|
|
62
|
-
export const CurrentLogSpans = FiberRef.make(
|
|
63
|
-
|
|
64
|
-
|
|
65
|
+
export const CurrentLogSpans = FiberRef.make(
|
|
66
|
+
Fx.fromLazy(() => ImmutableMap<string, LogSpan>()),
|
|
67
|
+
{
|
|
68
|
+
join: identity,
|
|
69
|
+
},
|
|
70
|
+
)
|
|
65
71
|
|
|
66
|
-
export const CurrentLogAnnotations = FiberRef.make(
|
|
67
|
-
|
|
68
|
-
|
|
72
|
+
export const CurrentLogAnnotations = FiberRef.make(
|
|
73
|
+
Fx.fromLazy(() => ImmutableMap<string, LogAnnotation>()),
|
|
74
|
+
{
|
|
75
|
+
join: identity,
|
|
76
|
+
},
|
|
77
|
+
)
|
|
69
78
|
|
|
70
79
|
export function getServiceFromFiberRefs(fiberRefs: FiberRefs.FiberRefs) {
|
|
71
80
|
return <S>(id: Service<S>): Fx.Of<S> => {
|
|
@@ -119,6 +119,11 @@ export class FiberRuntime<F extends Fx.AnyFx>
|
|
|
119
119
|
readonly addObserver = (
|
|
120
120
|
observer: (exit: Exit.Exit<Fx.ErrorsOf<F>, Fx.OutputOf<F>>) => void,
|
|
121
121
|
): Disposable => {
|
|
122
|
+
if (this._status.tag === 'Done') {
|
|
123
|
+
const exit = this._status.exit
|
|
124
|
+
return this.setTimer(() => observer(exit))
|
|
125
|
+
}
|
|
126
|
+
|
|
122
127
|
this._observers.push(observer)
|
|
123
128
|
|
|
124
129
|
return Disposable(() => {
|
|
@@ -137,10 +142,7 @@ export class FiberRuntime<F extends Fx.AnyFx>
|
|
|
137
142
|
this._disposable.dispose()
|
|
138
143
|
this._disposable = settable()
|
|
139
144
|
this._current = Maybe.Just(Fx.interrupted(id).instr)
|
|
140
|
-
|
|
141
|
-
if (this._status.tag === 'Suspended') {
|
|
142
|
-
this.setTimer(() => this.loop())
|
|
143
|
-
}
|
|
145
|
+
this.loop()
|
|
144
146
|
} else {
|
|
145
147
|
// Record the interrupting FiberId for if/when the interrupt status becomes true again.
|
|
146
148
|
this._interruptedBy.add(id)
|
|
@@ -207,6 +209,7 @@ export class FiberRuntime<F extends Fx.AnyFx>
|
|
|
207
209
|
|
|
208
210
|
protected addCustomTrace(trace?: string) {
|
|
209
211
|
if (trace) {
|
|
212
|
+
this.pushPopFiberRef(Builtin.CurrentTrace, this.getRuntimeTrace())
|
|
210
213
|
this.pushPopFiberRef(Builtin.CurrentTrace, Trace.Trace.custom(trace))
|
|
211
214
|
}
|
|
212
215
|
}
|
|
@@ -225,14 +228,8 @@ export class FiberRuntime<F extends Fx.AnyFx>
|
|
|
225
228
|
this.withFiberRef(Builtin.CurrentConcurrencyLevel, (semaphore) => {
|
|
226
229
|
const withConcurrency = acquireFiber(semaphore.value)
|
|
227
230
|
|
|
228
|
-
const f = new FiberRuntime(
|
|
229
|
-
|
|
230
|
-
this.context.fork({ fiberRefs: this.context.fiberRefs }),
|
|
231
|
-
)
|
|
232
|
-
const s = new FiberRuntime(
|
|
233
|
-
withConcurrency(instr.second),
|
|
234
|
-
this.context.fork({ fiberRefs: this.context.fiberRefs }),
|
|
235
|
-
)
|
|
231
|
+
const f = new FiberRuntime(withConcurrency(instr.first), this.context.fork())
|
|
232
|
+
const s = new FiberRuntime(withConcurrency(instr.second), this.context.fork())
|
|
236
233
|
|
|
237
234
|
const [future, onExit] = bothFuture(f, s)
|
|
238
235
|
|
|
@@ -247,7 +244,14 @@ export class FiberRuntime<F extends Fx.AnyFx>
|
|
|
247
244
|
|
|
248
245
|
return pipe(
|
|
249
246
|
wait(future),
|
|
250
|
-
Fx.ensuring(() =>
|
|
247
|
+
Fx.ensuring(() =>
|
|
248
|
+
Fx.fromLazy(() => {
|
|
249
|
+
FiberRefs.join(this.context.fiberRefs, f.context.fiberRefs)
|
|
250
|
+
FiberRefs.join(this.context.fiberRefs, s.context.fiberRefs)
|
|
251
|
+
|
|
252
|
+
inner.dispose()
|
|
253
|
+
}),
|
|
254
|
+
),
|
|
251
255
|
)
|
|
252
256
|
})
|
|
253
257
|
}
|
|
@@ -267,14 +271,8 @@ export class FiberRuntime<F extends Fx.AnyFx>
|
|
|
267
271
|
protected processEither(instr: Extract<AnyInstruction, { readonly tag: 'Either' }>) {
|
|
268
272
|
this.withFiberRef(Builtin.CurrentConcurrencyLevel, (semaphore) => {
|
|
269
273
|
const withConcurrency = acquireFiber(semaphore.value)
|
|
270
|
-
const f = new FiberRuntime(
|
|
271
|
-
|
|
272
|
-
this.context.fork({ fiberRefs: this.context.fiberRefs }),
|
|
273
|
-
)
|
|
274
|
-
const s = new FiberRuntime(
|
|
275
|
-
withConcurrency(instr.second),
|
|
276
|
-
this.context.fork({ fiberRefs: this.context.fiberRefs }),
|
|
277
|
-
)
|
|
274
|
+
const f = new FiberRuntime(withConcurrency(instr.first), this.context.fork())
|
|
275
|
+
const s = new FiberRuntime(withConcurrency(instr.second), this.context.fork())
|
|
278
276
|
|
|
279
277
|
const inner = settable()
|
|
280
278
|
const future = Pending<never, any, any>()
|
|
@@ -283,10 +281,19 @@ export class FiberRuntime<F extends Fx.AnyFx>
|
|
|
283
281
|
pipe(
|
|
284
282
|
Fx.fromExit(exit),
|
|
285
283
|
Fx.ensuring(() =>
|
|
286
|
-
index === 0
|
|
284
|
+
index === 0
|
|
285
|
+
? pipe(
|
|
286
|
+
s.interruptAs(f.context.id),
|
|
287
|
+
Fx.tapLazy(() => FiberRefs.join(this.context.fiberRefs, f.context.fiberRefs)),
|
|
288
|
+
)
|
|
289
|
+
: pipe(
|
|
290
|
+
f.interruptAs(s.context.id),
|
|
291
|
+
Fx.tapLazy(() => FiberRefs.join(this.context.fiberRefs, s.context.fiberRefs)),
|
|
292
|
+
),
|
|
287
293
|
),
|
|
288
294
|
),
|
|
289
295
|
)
|
|
296
|
+
|
|
290
297
|
inner.dispose()
|
|
291
298
|
}
|
|
292
299
|
|
|
@@ -335,9 +342,9 @@ export class FiberRuntime<F extends Fx.AnyFx>
|
|
|
335
342
|
}
|
|
336
343
|
|
|
337
344
|
protected processFromCause(instr: Extract<AnyInstruction, { readonly tag: 'FromCause' }>) {
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
const interrupts = this._children.map((c) => c.interruptAs(
|
|
345
|
+
const interruptedCause = Cause.findInterrupted(instr.cause)
|
|
346
|
+
if (Maybe.isJust(interruptedCause) && this._children.length > 0) {
|
|
347
|
+
const interrupts = this._children.map((c) => c.interruptAs(this.id))
|
|
341
348
|
this._children = []
|
|
342
349
|
|
|
343
350
|
// Cancel all Child Fibers and then continue with the Cause
|