effect 3.7.2 → 3.8.0
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/Mailbox/package.json +6 -0
- package/dist/cjs/Deferred.js.map +1 -1
- package/dist/cjs/Duration.js +99 -35
- package/dist/cjs/Duration.js.map +1 -1
- package/dist/cjs/Effect.js +30 -3
- package/dist/cjs/Effect.js.map +1 -1
- package/dist/cjs/Fiber.js.map +1 -1
- package/dist/cjs/FiberRef.js.map +1 -1
- package/dist/cjs/Iterable.js +0 -1
- package/dist/cjs/Iterable.js.map +1 -1
- package/dist/cjs/List.js +0 -2
- package/dist/cjs/List.js.map +1 -1
- package/dist/cjs/Logger.js +29 -1
- package/dist/cjs/Logger.js.map +1 -1
- package/dist/cjs/Mailbox.js +95 -0
- package/dist/cjs/Mailbox.js.map +1 -0
- package/dist/cjs/Micro.js +1 -0
- package/dist/cjs/Micro.js.map +1 -1
- package/dist/cjs/MutableHashMap.js +13 -1
- package/dist/cjs/MutableHashMap.js.map +1 -1
- package/dist/cjs/Number.js +20 -1
- package/dist/cjs/Number.js.map +1 -1
- package/dist/cjs/Queue.js.map +1 -1
- package/dist/cjs/RcMap.js +6 -1
- package/dist/cjs/RcMap.js.map +1 -1
- package/dist/cjs/RcRef.js.map +1 -1
- package/dist/cjs/Ref.js.map +1 -1
- package/dist/cjs/Stream.js +11 -2
- package/dist/cjs/Stream.js.map +1 -1
- package/dist/cjs/SubscriptionRef.js.map +1 -1
- package/dist/cjs/SynchronizedRef.js.map +1 -1
- package/dist/cjs/TestClock.js +8 -2
- package/dist/cjs/TestClock.js.map +1 -1
- package/dist/cjs/index.js +4 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/internal/core.js +32 -25
- package/dist/cjs/internal/core.js.map +1 -1
- package/dist/cjs/internal/defaultServices/console.js.map +1 -1
- package/dist/cjs/internal/defaultServices.js +8 -5
- package/dist/cjs/internal/defaultServices.js.map +1 -1
- package/dist/cjs/internal/effect/circular.js +81 -8
- package/dist/cjs/internal/effect/circular.js.map +1 -1
- package/dist/cjs/internal/fiber.js +51 -26
- package/dist/cjs/internal/fiber.js.map +1 -1
- package/dist/cjs/internal/fiberRefs.js.map +1 -1
- package/dist/cjs/internal/fiberRuntime.js +126 -97
- package/dist/cjs/internal/fiberRuntime.js.map +1 -1
- package/dist/cjs/internal/groupBy.js +6 -1
- package/dist/cjs/internal/groupBy.js.map +1 -1
- package/dist/cjs/internal/hashMap/node.js +0 -1
- package/dist/cjs/internal/hashMap/node.js.map +1 -1
- package/dist/cjs/internal/hashMap.js +0 -1
- package/dist/cjs/internal/hashMap.js.map +1 -1
- package/dist/cjs/internal/layer.js +3 -3
- package/dist/cjs/internal/layer.js.map +1 -1
- package/dist/cjs/internal/logger.js +4 -1
- package/dist/cjs/internal/logger.js.map +1 -1
- package/dist/cjs/internal/mailbox.js +408 -0
- package/dist/cjs/internal/mailbox.js.map +1 -0
- package/dist/cjs/internal/managedRuntime.js +1 -1
- package/dist/cjs/internal/managedRuntime.js.map +1 -1
- package/dist/cjs/internal/pubsub.js +6 -1
- package/dist/cjs/internal/pubsub.js.map +1 -1
- package/dist/cjs/internal/queue.js +6 -1
- package/dist/cjs/internal/queue.js.map +1 -1
- package/dist/cjs/internal/rcMap.js +7 -1
- package/dist/cjs/internal/rcMap.js.map +1 -1
- package/dist/cjs/internal/rcRef.js +10 -6
- package/dist/cjs/internal/rcRef.js.map +1 -1
- package/dist/cjs/internal/ref.js +7 -7
- package/dist/cjs/internal/ref.js.map +1 -1
- package/dist/cjs/internal/runtime.js +1 -1
- package/dist/cjs/internal/runtime.js.map +1 -1
- package/dist/cjs/internal/stream.js +7 -2
- package/dist/cjs/internal/stream.js.map +1 -1
- package/dist/cjs/internal/subscriptionRef.js +7 -8
- package/dist/cjs/internal/subscriptionRef.js.map +1 -1
- package/dist/cjs/internal/version.js +1 -1
- package/dist/dts/Deferred.d.ts +21 -2
- package/dist/dts/Deferred.d.ts.map +1 -1
- package/dist/dts/Duration.d.ts +38 -1
- package/dist/dts/Duration.d.ts.map +1 -1
- package/dist/dts/Effect.d.ts +45 -0
- package/dist/dts/Effect.d.ts.map +1 -1
- package/dist/dts/Fiber.d.ts +69 -2
- package/dist/dts/Fiber.d.ts.map +1 -1
- package/dist/dts/FiberRef.d.ts +21 -2
- package/dist/dts/FiberRef.d.ts.map +1 -1
- package/dist/dts/List.d.ts.map +1 -1
- package/dist/dts/Logger.d.ts +28 -0
- package/dist/dts/Logger.d.ts.map +1 -1
- package/dist/dts/Mailbox.d.ts +220 -0
- package/dist/dts/Mailbox.d.ts.map +1 -0
- package/dist/dts/Micro.d.ts.map +1 -1
- package/dist/dts/MutableHashMap.d.ts +5 -0
- package/dist/dts/MutableHashMap.d.ts.map +1 -1
- package/dist/dts/Number.d.ts +19 -0
- package/dist/dts/Number.d.ts.map +1 -1
- package/dist/dts/Queue.d.ts +40 -1
- package/dist/dts/Queue.d.ts.map +1 -1
- package/dist/dts/RcMap.d.ts +5 -0
- package/dist/dts/RcMap.d.ts.map +1 -1
- package/dist/dts/RcRef.d.ts +22 -2
- package/dist/dts/RcRef.d.ts.map +1 -1
- package/dist/dts/Ref.d.ts +22 -2
- package/dist/dts/Ref.d.ts.map +1 -1
- package/dist/dts/ScheduleDecision.d.ts.map +1 -1
- package/dist/dts/Stream.d.ts +30 -0
- package/dist/dts/Stream.d.ts.map +1 -1
- package/dist/dts/SubscriptionRef.d.ts +20 -0
- package/dist/dts/SubscriptionRef.d.ts.map +1 -1
- package/dist/dts/SynchronizedRef.d.ts +20 -0
- package/dist/dts/SynchronizedRef.d.ts.map +1 -1
- package/dist/dts/TestClock.d.ts.map +1 -1
- package/dist/dts/index.d.ts +5 -0
- package/dist/dts/index.d.ts.map +1 -1
- package/dist/dts/internal/core.d.ts.map +1 -1
- package/dist/dts/internal/fiber.d.ts.map +1 -1
- package/dist/dts/internal/fiberRuntime.d.ts.map +1 -1
- package/dist/dts/internal/logger.d.ts.map +1 -1
- package/dist/dts/internal/mailbox.d.ts +2 -0
- package/dist/dts/internal/mailbox.d.ts.map +1 -0
- package/dist/dts/internal/stream.d.ts +22 -0
- package/dist/dts/internal/stream.d.ts.map +1 -1
- package/dist/esm/Deferred.js.map +1 -1
- package/dist/esm/Duration.js +92 -33
- package/dist/esm/Duration.js.map +1 -1
- package/dist/esm/Effect.js +27 -0
- package/dist/esm/Effect.js.map +1 -1
- package/dist/esm/Fiber.js.map +1 -1
- package/dist/esm/FiberRef.js.map +1 -1
- package/dist/esm/Iterable.js +0 -1
- package/dist/esm/Iterable.js.map +1 -1
- package/dist/esm/List.js +0 -2
- package/dist/esm/List.js.map +1 -1
- package/dist/esm/Logger.js +28 -0
- package/dist/esm/Logger.js.map +1 -1
- package/dist/esm/Mailbox.js +85 -0
- package/dist/esm/Mailbox.js.map +1 -0
- package/dist/esm/Micro.js +1 -0
- package/dist/esm/Micro.js.map +1 -1
- package/dist/esm/MutableHashMap.js +11 -0
- package/dist/esm/MutableHashMap.js.map +1 -1
- package/dist/esm/Number.js +19 -0
- package/dist/esm/Number.js.map +1 -1
- package/dist/esm/Queue.js.map +1 -1
- package/dist/esm/RcMap.js +5 -0
- package/dist/esm/RcMap.js.map +1 -1
- package/dist/esm/RcRef.js.map +1 -1
- package/dist/esm/Ref.js.map +1 -1
- package/dist/esm/Stream.js +9 -0
- package/dist/esm/Stream.js.map +1 -1
- package/dist/esm/SubscriptionRef.js.map +1 -1
- package/dist/esm/SynchronizedRef.js.map +1 -1
- package/dist/esm/TestClock.js +8 -2
- package/dist/esm/TestClock.js.map +1 -1
- package/dist/esm/index.js +5 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/internal/core.js +33 -26
- package/dist/esm/internal/core.js.map +1 -1
- package/dist/esm/internal/defaultServices/console.js.map +1 -1
- package/dist/esm/internal/defaultServices.js +6 -4
- package/dist/esm/internal/defaultServices.js.map +1 -1
- package/dist/esm/internal/effect/circular.js +77 -6
- package/dist/esm/internal/effect/circular.js.map +1 -1
- package/dist/esm/internal/fiber.js +51 -26
- package/dist/esm/internal/fiber.js.map +1 -1
- package/dist/esm/internal/fiberRefs.js.map +1 -1
- package/dist/esm/internal/fiberRuntime.js +124 -96
- package/dist/esm/internal/fiberRuntime.js.map +1 -1
- package/dist/esm/internal/groupBy.js +6 -1
- package/dist/esm/internal/groupBy.js.map +1 -1
- package/dist/esm/internal/hashMap/node.js +0 -1
- package/dist/esm/internal/hashMap/node.js.map +1 -1
- package/dist/esm/internal/hashMap.js +0 -1
- package/dist/esm/internal/hashMap.js.map +1 -1
- package/dist/esm/internal/layer.js +3 -3
- package/dist/esm/internal/layer.js.map +1 -1
- package/dist/esm/internal/logger.js +3 -0
- package/dist/esm/internal/logger.js.map +1 -1
- package/dist/esm/internal/mailbox.js +395 -0
- package/dist/esm/internal/mailbox.js.map +1 -0
- package/dist/esm/internal/managedRuntime.js +1 -1
- package/dist/esm/internal/managedRuntime.js.map +1 -1
- package/dist/esm/internal/pubsub.js +6 -1
- package/dist/esm/internal/pubsub.js.map +1 -1
- package/dist/esm/internal/queue.js +6 -1
- package/dist/esm/internal/queue.js.map +1 -1
- package/dist/esm/internal/rcMap.js +5 -0
- package/dist/esm/internal/rcMap.js.map +1 -1
- package/dist/esm/internal/rcRef.js +10 -6
- package/dist/esm/internal/rcRef.js.map +1 -1
- package/dist/esm/internal/ref.js +7 -7
- package/dist/esm/internal/ref.js.map +1 -1
- package/dist/esm/internal/runtime.js +1 -1
- package/dist/esm/internal/runtime.js.map +1 -1
- package/dist/esm/internal/stream.js +5 -0
- package/dist/esm/internal/stream.js.map +1 -1
- package/dist/esm/internal/subscriptionRef.js +7 -8
- package/dist/esm/internal/subscriptionRef.js.map +1 -1
- package/dist/esm/internal/version.js +1 -1
- package/package.json +9 -1
- package/src/Deferred.ts +21 -2
- package/src/Duration.ts +112 -35
- package/src/Effect.ts +52 -0
- package/src/Fiber.ts +78 -2
- package/src/FiberRef.ts +21 -2
- package/src/Iterable.ts +1 -1
- package/src/List.ts +0 -2
- package/src/Logger.ts +30 -0
- package/src/Mailbox.ts +236 -0
- package/src/Micro.ts +1 -0
- package/src/MutableHashMap.ts +12 -0
- package/src/Number.ts +23 -0
- package/src/Queue.ts +42 -1
- package/src/RcMap.ts +6 -0
- package/src/RcRef.ts +24 -2
- package/src/Ref.ts +22 -2
- package/src/Stream.ts +36 -0
- package/src/SubscriptionRef.ts +22 -0
- package/src/SynchronizedRef.ts +20 -0
- package/src/TestClock.ts +10 -2
- package/src/index.ts +6 -0
- package/src/internal/core.ts +31 -28
- package/src/internal/defaultServices/console.ts +1 -0
- package/src/internal/defaultServices.ts +9 -10
- package/src/internal/effect/circular.ts +83 -6
- package/src/internal/fiber.ts +56 -29
- package/src/internal/fiberRefs.ts +1 -2
- package/src/internal/fiberRuntime.ts +134 -103
- package/src/internal/groupBy.ts +7 -1
- package/src/internal/hashMap/node.ts +1 -1
- package/src/internal/hashMap.ts +1 -1
- package/src/internal/layer.ts +3 -3
- package/src/internal/logger.ts +4 -0
- package/src/internal/mailbox.ts +461 -0
- package/src/internal/managedRuntime.ts +1 -1
- package/src/internal/pubsub.ts +9 -2
- package/src/internal/queue.ts +7 -1
- package/src/internal/rcMap.ts +8 -0
- package/src/internal/rcRef.ts +10 -6
- package/src/internal/ref.ts +7 -7
- package/src/internal/runtime.ts +1 -1
- package/src/internal/stream.ts +53 -0
- package/src/internal/subscriptionRef.ts +7 -8
- package/src/internal/version.ts +1 -1
|
@@ -3,14 +3,14 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.zipWithOptions = exports.zipRightOptions = exports.zipOptions = exports.zipLeftOptions = exports.withTracerScoped = exports.withSpanScoped = exports.withRuntimeFlagsScoped = exports.withRandomScoped = exports.withEarlyRelease = exports.withConfigProviderScoped = exports.withClockScoped = exports.validateWith = exports.validateFirst = exports.validateAllParDiscard = exports.validateAllPar = exports.validateAll = exports.validate = exports.using = exports.unsafeMakeChildFiber = exports.unsafeForkUnstarted = exports.unsafeFork = exports.tracerLogger = exports.tagMetricsScoped = exports.structuredLogger = exports.sequentialFinalizers = exports.scopedEffect = exports.scopeWith = exports.scopeUse = exports.scopeTag = exports.scopeMake = exports.scopeExtend = exports.scope = exports.replicateEffect = exports.replicate = exports.reduceEffect = exports.raceWith = exports.raceFibersWith = exports.raceAll = exports.race = exports.prettyLogger = exports.partition = exports.parallelNFinalizers = exports.parallelFinalizers = exports.mergeAll = exports.makeSpanScoped = exports.loggerWithSpanAnnotations = exports.loggerWithConsoleLog = exports.loggerWithConsoleError = exports.logFmtLogger = exports.labelMetricsScoped = exports.jsonLogger = exports.invokeWithInterrupt = exports.interruptWhenPossible = exports.forkWithErrorHandler = exports.forkDaemon = exports.fork = exports.forEachParUnbounded = exports.forEachParN = exports.forEachConcurrentDiscard = exports.forEach = exports.finalizersMaskInternal = exports.finalizersMask = exports.filter = exports.fiberSuccesses = exports.fiberStarted = exports.fiberScoped = exports.fiberRefUnsafeMakeSupervisor = exports.fiberRefMakeWith = exports.fiberRefMakeRuntimeFlags = exports.fiberRefMakeContext = exports.fiberRefMake = exports.fiberRefLocallyScopedWith = exports.fiberRefLocallyScoped = exports.fiberLifetimes = exports.fiberJoinAll = exports.fiberInterruptFork = exports.fiberFailures = exports.fiberAwaitAll = exports.fiberAll = exports.fiberActive = exports.exists = exports.ensuring = exports.disconnect = exports.defaultLogger = exports.daemonChildren = exports.currentSupervisor = exports.currentRuntimeFlags = exports.currentMinimumLogLevel = exports.currentLoggers = exports.batchedLogger = exports.annotateLogsScoped = exports.allWith = exports.allSuccesses = exports.all = exports.addFinalizer = exports.acquireReleaseInterruptible = exports.acquireRelease = exports.FiberRuntime = void 0;
|
|
6
|
+
exports.zipWithOptions = exports.zipRightOptions = exports.zipOptions = exports.zipLeftOptions = exports.withTracerScoped = exports.withSpanScoped = exports.withRuntimeFlagsScoped = exports.withRandomScoped = exports.withEarlyRelease = exports.withConfigProviderScoped = exports.withClockScoped = exports.validateWith = exports.validateFirst = exports.validateAllParDiscard = exports.validateAllPar = exports.validateAll = exports.validate = exports.using = exports.unsafeMakeChildFiber = exports.unsafeForkUnstarted = exports.unsafeFork = exports.tracerLogger = exports.tagMetricsScoped = exports.structuredLogger = exports.sequentialFinalizers = exports.scopedEffect = exports.scopeWith = exports.scopeUse = exports.scopeTag = exports.scopeMake = exports.scopeExtend = exports.scope = exports.replicateEffect = exports.replicate = exports.reduceEffect = exports.raceWith = exports.raceFibersWith = exports.raceAll = exports.race = exports.prettyLogger = exports.partition = exports.parallelNFinalizers = exports.parallelFinalizers = exports.mergeAll = exports.makeSpanScoped = exports.loggerWithSpanAnnotations = exports.loggerWithLeveledLog = exports.loggerWithConsoleLog = exports.loggerWithConsoleError = exports.logFmtLogger = exports.labelMetricsScoped = exports.jsonLogger = exports.invokeWithInterrupt = exports.interruptWhenPossible = exports.forkWithErrorHandler = exports.forkDaemon = exports.fork = exports.forEachParUnbounded = exports.forEachParN = exports.forEachConcurrentDiscard = exports.forEach = exports.finalizersMaskInternal = exports.finalizersMask = exports.filter = exports.fiberSuccesses = exports.fiberStarted = exports.fiberScoped = exports.fiberRefUnsafeMakeSupervisor = exports.fiberRefMakeWith = exports.fiberRefMakeRuntimeFlags = exports.fiberRefMakeContext = exports.fiberRefMake = exports.fiberRefLocallyScopedWith = exports.fiberRefLocallyScoped = exports.fiberLifetimes = exports.fiberJoinAll = exports.fiberInterruptFork = exports.fiberFailures = exports.fiberAwaitAll = exports.fiberAll = exports.fiberActive = exports.exists = exports.ensuring = exports.disconnect = exports.defaultLogger = exports.daemonChildren = exports.currentSupervisor = exports.currentRuntimeFlags = exports.currentMinimumLogLevel = exports.currentLoggers = exports.batchedLogger = exports.annotateLogsScoped = exports.allWith = exports.allSuccesses = exports.all = exports.addFinalizer = exports.acquireReleaseInterruptible = exports.acquireRelease = exports.FiberRuntime = void 0;
|
|
7
7
|
var _Utils = require("effect/Utils");
|
|
8
8
|
var RA = _interopRequireWildcard(require("../Array.js"));
|
|
9
9
|
var Boolean = _interopRequireWildcard(require("../Boolean.js"));
|
|
10
10
|
var Chunk = _interopRequireWildcard(require("../Chunk.js"));
|
|
11
11
|
var Context = _interopRequireWildcard(require("../Context.js"));
|
|
12
12
|
var Deferred = _interopRequireWildcard(require("../Deferred.js"));
|
|
13
|
-
var
|
|
13
|
+
var Effectable = _interopRequireWildcard(require("../Effectable.js"));
|
|
14
14
|
var ExecutionStrategy = _interopRequireWildcard(require("../ExecutionStrategy.js"));
|
|
15
15
|
var FiberId = _interopRequireWildcard(require("../FiberId.js"));
|
|
16
16
|
var FiberRefs = _interopRequireWildcard(require("../FiberRefs.js"));
|
|
@@ -110,8 +110,8 @@ const contOpSuccess = {
|
|
|
110
110
|
return (0, _Utils.internalCall)(() => cont.effect_instruction_i2(value));
|
|
111
111
|
},
|
|
112
112
|
[OpCodes.OP_REVERT_FLAGS]: (self, cont, value) => {
|
|
113
|
-
self.patchRuntimeFlags(self.
|
|
114
|
-
if (_runtimeFlags.interruptible(self.
|
|
113
|
+
self.patchRuntimeFlags(self.currentRuntimeFlags, cont.patch);
|
|
114
|
+
if (_runtimeFlags.interruptible(self.currentRuntimeFlags) && self.isInterrupted()) {
|
|
115
115
|
return core.exitFailCause(self.getInterruptedCause());
|
|
116
116
|
} else {
|
|
117
117
|
return core.exitSucceed(value);
|
|
@@ -161,15 +161,11 @@ const runBlockedRequests = self => core.forEachSequentialDiscard(_RequestBlock.f
|
|
|
161
161
|
})), _completedRequestMap.currentRequestMap, map);
|
|
162
162
|
}, false, false));
|
|
163
163
|
/** @internal */
|
|
164
|
-
class FiberRuntime {
|
|
164
|
+
class FiberRuntime extends Effectable.Class {
|
|
165
165
|
[internalFiber.FiberTypeId] = internalFiber.fiberVariance;
|
|
166
166
|
[internalFiber.RuntimeFiberTypeId] = runtimeFiberVariance;
|
|
167
|
-
pipe() {
|
|
168
|
-
return (0, _Pipeable.pipeArguments)(this, arguments);
|
|
169
|
-
}
|
|
170
167
|
_fiberRefs;
|
|
171
168
|
_fiberId;
|
|
172
|
-
_runtimeFlags;
|
|
173
169
|
_queue = /*#__PURE__*/new Array();
|
|
174
170
|
_children = null;
|
|
175
171
|
_observers = /*#__PURE__*/new Array();
|
|
@@ -179,23 +175,29 @@ class FiberRuntime {
|
|
|
179
175
|
_asyncBlockingOn = null;
|
|
180
176
|
_exitValue = null;
|
|
181
177
|
_steps = [];
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
_tracer;
|
|
178
|
+
_isYielding = false;
|
|
179
|
+
currentRuntimeFlags;
|
|
185
180
|
currentOpCount = 0;
|
|
186
|
-
|
|
181
|
+
currentSupervisor;
|
|
182
|
+
currentScheduler;
|
|
183
|
+
currentTracer;
|
|
184
|
+
currentSpan;
|
|
185
|
+
currentContext;
|
|
186
|
+
currentDefaultServices;
|
|
187
187
|
constructor(fiberId, fiberRefs0, runtimeFlags0) {
|
|
188
|
-
|
|
188
|
+
super();
|
|
189
|
+
this.currentRuntimeFlags = runtimeFlags0;
|
|
189
190
|
this._fiberId = fiberId;
|
|
190
191
|
this._fiberRefs = fiberRefs0;
|
|
191
|
-
this._supervisor = this.getFiberRef(currentSupervisor);
|
|
192
|
-
this._scheduler = this.getFiberRef(_Scheduler.currentScheduler);
|
|
193
192
|
if (_runtimeFlags.runtimeMetrics(runtimeFlags0)) {
|
|
194
193
|
const tags = this.getFiberRef(core.currentMetricLabels);
|
|
195
194
|
fiberStarted.unsafeUpdate(1, tags);
|
|
196
195
|
fiberActive.unsafeUpdate(1, tags);
|
|
197
196
|
}
|
|
198
|
-
this.
|
|
197
|
+
this.refreshRefCache();
|
|
198
|
+
}
|
|
199
|
+
commit() {
|
|
200
|
+
return internalFiber.join(this);
|
|
199
201
|
}
|
|
200
202
|
/**
|
|
201
203
|
* The identity of the fiber.
|
|
@@ -223,7 +225,7 @@ class FiberRuntime {
|
|
|
223
225
|
get runtimeFlags() {
|
|
224
226
|
return this.ask((state, status) => {
|
|
225
227
|
if (FiberStatus.isDone(status)) {
|
|
226
|
-
return state.
|
|
228
|
+
return state.currentRuntimeFlags;
|
|
227
229
|
}
|
|
228
230
|
return status.runtimeFlags;
|
|
229
231
|
});
|
|
@@ -377,7 +379,7 @@ class FiberRuntime {
|
|
|
377
379
|
* log annotations and log level) may not be up-to-date.
|
|
378
380
|
*/
|
|
379
381
|
getFiberRefs() {
|
|
380
|
-
this.setFiberRef(currentRuntimeFlags, this.
|
|
382
|
+
this.setFiberRef(currentRuntimeFlags, this.currentRuntimeFlags);
|
|
381
383
|
return this._fiberRefs;
|
|
382
384
|
}
|
|
383
385
|
/**
|
|
@@ -415,9 +417,12 @@ class FiberRuntime {
|
|
|
415
417
|
this.refreshRefCache();
|
|
416
418
|
}
|
|
417
419
|
refreshRefCache() {
|
|
418
|
-
this.
|
|
419
|
-
this.
|
|
420
|
-
this.
|
|
420
|
+
this.currentDefaultServices = this.getFiberRef(defaultServices.currentServices);
|
|
421
|
+
this.currentTracer = this.currentDefaultServices.unsafeMap.get(tracer.tracerTag.key);
|
|
422
|
+
this.currentSupervisor = this.getFiberRef(currentSupervisor);
|
|
423
|
+
this.currentScheduler = this.getFiberRef(_Scheduler.currentScheduler);
|
|
424
|
+
this.currentContext = this.getFiberRef(core.currentContext);
|
|
425
|
+
this.currentSpan = this.currentContext.unsafeMap.get(tracer.spanTag.key);
|
|
421
426
|
}
|
|
422
427
|
/**
|
|
423
428
|
* Wholesale replaces all fiber refs of this fiber.
|
|
@@ -491,7 +496,7 @@ class FiberRuntime {
|
|
|
491
496
|
* **NOTE**: This method must be invoked by the fiber itself.
|
|
492
497
|
*/
|
|
493
498
|
drainQueueLaterOnExecutor() {
|
|
494
|
-
this.
|
|
499
|
+
this.currentScheduler.scheduleTask(this.run, this.getFiberRef(core.currentSchedulingPriority));
|
|
495
500
|
}
|
|
496
501
|
/**
|
|
497
502
|
* Drains the fiber's message queue while the fiber is actively running,
|
|
@@ -589,7 +594,7 @@ class FiberRuntime {
|
|
|
589
594
|
return null;
|
|
590
595
|
}
|
|
591
596
|
reportExitValue(exit) {
|
|
592
|
-
if (_runtimeFlags.runtimeMetrics(this.
|
|
597
|
+
if (_runtimeFlags.runtimeMetrics(this.currentRuntimeFlags)) {
|
|
593
598
|
const tags = this.getFiberRef(core.currentMetricLabels);
|
|
594
599
|
const startTimeMillis = this.id().startTimeMillis;
|
|
595
600
|
const endTimeMillis = Date.now();
|
|
@@ -683,7 +688,7 @@ class FiberRuntime {
|
|
|
683
688
|
}
|
|
684
689
|
case FiberMessage.OP_STATEFUL:
|
|
685
690
|
{
|
|
686
|
-
message.onFiber(this, this._exitValue !== null ? FiberStatus.done : FiberStatus.suspended(this.
|
|
691
|
+
message.onFiber(this, this._exitValue !== null ? FiberStatus.done : FiberStatus.suspended(this.currentRuntimeFlags, this._asyncBlockingOn));
|
|
687
692
|
return EvaluationSignalContinue;
|
|
688
693
|
}
|
|
689
694
|
default:
|
|
@@ -698,9 +703,9 @@ class FiberRuntime {
|
|
|
698
703
|
* **NOTE**: This method must be invoked by the fiber itself.
|
|
699
704
|
*/
|
|
700
705
|
evaluateEffect(effect0) {
|
|
701
|
-
this.
|
|
706
|
+
this.currentSupervisor.onResume(this);
|
|
702
707
|
try {
|
|
703
|
-
let effect = _runtimeFlags.interruptible(this.
|
|
708
|
+
let effect = _runtimeFlags.interruptible(this.currentRuntimeFlags) && this.isInterrupted() ? core.exitFailCause(this.getInterruptedCause()) : effect0;
|
|
704
709
|
while (effect !== null) {
|
|
705
710
|
const eff = effect;
|
|
706
711
|
const exit = this.runLoop(eff);
|
|
@@ -708,7 +713,7 @@ class FiberRuntime {
|
|
|
708
713
|
const op = yieldedOpChannel.currentOp;
|
|
709
714
|
yieldedOpChannel.currentOp = null;
|
|
710
715
|
if (op._op === OpCodes.OP_YIELD) {
|
|
711
|
-
if (_runtimeFlags.cooperativeYielding(this.
|
|
716
|
+
if (_runtimeFlags.cooperativeYielding(this.currentRuntimeFlags)) {
|
|
712
717
|
this.tell(FiberMessage.yieldNow());
|
|
713
718
|
this.tell(FiberMessage.resume(core.exitVoid));
|
|
714
719
|
effect = null;
|
|
@@ -720,7 +725,7 @@ class FiberRuntime {
|
|
|
720
725
|
effect = null;
|
|
721
726
|
}
|
|
722
727
|
} else {
|
|
723
|
-
this.
|
|
728
|
+
this.currentRuntimeFlags = (0, _Function.pipe)(this.currentRuntimeFlags, _runtimeFlags.enable(_runtimeFlags.WindDown));
|
|
724
729
|
const interruption = this.interruptAllChildren();
|
|
725
730
|
if (interruption !== null) {
|
|
726
731
|
effect = core.flatMap(interruption, () => exit);
|
|
@@ -739,7 +744,7 @@ class FiberRuntime {
|
|
|
739
744
|
}
|
|
740
745
|
}
|
|
741
746
|
} finally {
|
|
742
|
-
this.
|
|
747
|
+
this.currentSupervisor.onSuspend(this);
|
|
743
748
|
}
|
|
744
749
|
}
|
|
745
750
|
/**
|
|
@@ -791,7 +796,7 @@ class FiberRuntime {
|
|
|
791
796
|
patchRuntimeFlags(oldRuntimeFlags, patch) {
|
|
792
797
|
const newRuntimeFlags = _runtimeFlags.patch(oldRuntimeFlags, patch);
|
|
793
798
|
globalThis[internalFiber.currentFiberURI] = this;
|
|
794
|
-
this.
|
|
799
|
+
this.currentRuntimeFlags = newRuntimeFlags;
|
|
795
800
|
return newRuntimeFlags;
|
|
796
801
|
}
|
|
797
802
|
/**
|
|
@@ -823,7 +828,7 @@ class FiberRuntime {
|
|
|
823
828
|
if (cont._op === "OnStep") {
|
|
824
829
|
this._steps.push({
|
|
825
830
|
refs: this.getFiberRefs(),
|
|
826
|
-
flags: this.
|
|
831
|
+
flags: this.currentRuntimeFlags
|
|
827
832
|
});
|
|
828
833
|
}
|
|
829
834
|
}
|
|
@@ -856,7 +861,7 @@ class FiberRuntime {
|
|
|
856
861
|
}
|
|
857
862
|
}
|
|
858
863
|
[OpCodes.OP_TAG](op) {
|
|
859
|
-
return core.
|
|
864
|
+
return core.sync(() => Context.unsafeGet(this.currentContext, op));
|
|
860
865
|
}
|
|
861
866
|
["Left"](op) {
|
|
862
867
|
return core.fail(op.left);
|
|
@@ -939,7 +944,7 @@ class FiberRuntime {
|
|
|
939
944
|
case OpCodes.OP_ON_FAILURE:
|
|
940
945
|
case OpCodes.OP_ON_SUCCESS_AND_FAILURE:
|
|
941
946
|
{
|
|
942
|
-
if (!(_runtimeFlags.interruptible(this.
|
|
947
|
+
if (!(_runtimeFlags.interruptible(this.currentRuntimeFlags) && this.isInterrupted())) {
|
|
943
948
|
return (0, _Utils.internalCall)(() => cont.effect_instruction_i1(cause));
|
|
944
949
|
} else {
|
|
945
950
|
return core.exitFailCause(internalCause.stripFailures(cause));
|
|
@@ -947,7 +952,7 @@ class FiberRuntime {
|
|
|
947
952
|
}
|
|
948
953
|
case "OnStep":
|
|
949
954
|
{
|
|
950
|
-
if (!(_runtimeFlags.interruptible(this.
|
|
955
|
+
if (!(_runtimeFlags.interruptible(this.currentRuntimeFlags) && this.isInterrupted())) {
|
|
951
956
|
return core.exitSucceed(core.exitFailCause(cause));
|
|
952
957
|
} else {
|
|
953
958
|
return core.exitFailCause(internalCause.stripFailures(cause));
|
|
@@ -955,8 +960,8 @@ class FiberRuntime {
|
|
|
955
960
|
}
|
|
956
961
|
case OpCodes.OP_REVERT_FLAGS:
|
|
957
962
|
{
|
|
958
|
-
this.patchRuntimeFlags(this.
|
|
959
|
-
if (_runtimeFlags.interruptible(this.
|
|
963
|
+
this.patchRuntimeFlags(this.currentRuntimeFlags, cont.patch);
|
|
964
|
+
if (_runtimeFlags.interruptible(this.currentRuntimeFlags) && this.isInterrupted()) {
|
|
960
965
|
return core.exitFailCause(internalCause.sequential(cause, this.getInterruptedCause()));
|
|
961
966
|
} else {
|
|
962
967
|
return core.exitFailCause(cause);
|
|
@@ -973,11 +978,11 @@ class FiberRuntime {
|
|
|
973
978
|
}
|
|
974
979
|
}
|
|
975
980
|
[OpCodes.OP_WITH_RUNTIME](op) {
|
|
976
|
-
return (0, _Utils.internalCall)(() => op.effect_instruction_i0(this, FiberStatus.running(this.
|
|
981
|
+
return (0, _Utils.internalCall)(() => op.effect_instruction_i0(this, FiberStatus.running(this.currentRuntimeFlags)));
|
|
977
982
|
}
|
|
978
983
|
["Blocked"](op) {
|
|
979
984
|
const refs = this.getFiberRefs();
|
|
980
|
-
const flags = this.
|
|
985
|
+
const flags = this.currentRuntimeFlags;
|
|
981
986
|
if (this._steps.length > 0) {
|
|
982
987
|
const frames = [];
|
|
983
988
|
const snap = this._steps[this._steps.length - 1];
|
|
@@ -987,7 +992,7 @@ class FiberRuntime {
|
|
|
987
992
|
frame = this.popStack();
|
|
988
993
|
}
|
|
989
994
|
this.setFiberRefs(snap.refs);
|
|
990
|
-
this.
|
|
995
|
+
this.currentRuntimeFlags = snap.flags;
|
|
991
996
|
const patchRefs = FiberRefsPatch.diff(snap.refs, refs);
|
|
992
997
|
const patchFlags = _runtimeFlags.diff(snap.flags, flags);
|
|
993
998
|
return core.exitSucceed(core.blocked(op.effect_instruction_i0, core.withFiberRuntime(newFiber => {
|
|
@@ -995,7 +1000,7 @@ class FiberRuntime {
|
|
|
995
1000
|
newFiber.pushStack(frames.pop());
|
|
996
1001
|
}
|
|
997
1002
|
newFiber.setFiberRefs(FiberRefsPatch.patch(newFiber.id(), newFiber.getFiberRefs())(patchRefs));
|
|
998
|
-
newFiber.
|
|
1003
|
+
newFiber.currentRuntimeFlags = _runtimeFlags.patch(patchFlags)(newFiber.currentRuntimeFlags);
|
|
999
1004
|
return op.effect_instruction_i1;
|
|
1000
1005
|
})));
|
|
1001
1006
|
}
|
|
@@ -1006,7 +1011,7 @@ class FiberRuntime {
|
|
|
1006
1011
|
}
|
|
1007
1012
|
[OpCodes.OP_UPDATE_RUNTIME_FLAGS](op) {
|
|
1008
1013
|
const updateFlags = op.effect_instruction_i0;
|
|
1009
|
-
const oldRuntimeFlags = this.
|
|
1014
|
+
const oldRuntimeFlags = this.currentRuntimeFlags;
|
|
1010
1015
|
const newRuntimeFlags = _runtimeFlags.patch(oldRuntimeFlags, updateFlags);
|
|
1011
1016
|
// One more chance to short circuit: if we're immediately going
|
|
1012
1017
|
// to interrupt. Interruption will cause immediate reversion of
|
|
@@ -1016,7 +1021,7 @@ class FiberRuntime {
|
|
|
1016
1021
|
return core.exitFailCause(this.getInterruptedCause());
|
|
1017
1022
|
} else {
|
|
1018
1023
|
// Impossible to short circuit, so record the changes
|
|
1019
|
-
this.patchRuntimeFlags(this.
|
|
1024
|
+
this.patchRuntimeFlags(this.currentRuntimeFlags, updateFlags);
|
|
1020
1025
|
if (op.effect_instruction_i1) {
|
|
1021
1026
|
// Since we updated the flags, we need to revert them
|
|
1022
1027
|
const revertFlags = _runtimeFlags.diff(newRuntimeFlags, oldRuntimeFlags);
|
|
@@ -1045,12 +1050,12 @@ class FiberRuntime {
|
|
|
1045
1050
|
}
|
|
1046
1051
|
[OpCodes.OP_ASYNC](op) {
|
|
1047
1052
|
this._asyncBlockingOn = op.effect_instruction_i1;
|
|
1048
|
-
this.initiateAsync(this.
|
|
1053
|
+
this.initiateAsync(this.currentRuntimeFlags, op.effect_instruction_i0);
|
|
1049
1054
|
yieldedOpChannel.currentOp = op;
|
|
1050
1055
|
return YieldedOp;
|
|
1051
1056
|
}
|
|
1052
1057
|
[OpCodes.OP_YIELD](op) {
|
|
1053
|
-
this.
|
|
1058
|
+
this._isYielding = false;
|
|
1054
1059
|
yieldedOpChannel.currentOp = op;
|
|
1055
1060
|
return YieldedOp;
|
|
1056
1061
|
}
|
|
@@ -1075,19 +1080,18 @@ class FiberRuntime {
|
|
|
1075
1080
|
runLoop(effect0) {
|
|
1076
1081
|
let cur = effect0;
|
|
1077
1082
|
this.currentOpCount = 0;
|
|
1078
|
-
// eslint-disable-next-line no-constant-condition
|
|
1079
1083
|
while (true) {
|
|
1080
|
-
if ((this.
|
|
1081
|
-
this.
|
|
1084
|
+
if ((this.currentRuntimeFlags & _runtimeFlags2.OpSupervision) !== 0) {
|
|
1085
|
+
this.currentSupervisor.onEffect(this, cur);
|
|
1082
1086
|
}
|
|
1083
1087
|
if (this._queue.length > 0) {
|
|
1084
|
-
cur = this.drainQueueWhileRunning(this.
|
|
1088
|
+
cur = this.drainQueueWhileRunning(this.currentRuntimeFlags, cur);
|
|
1085
1089
|
}
|
|
1086
|
-
if (!this.
|
|
1090
|
+
if (!this._isYielding) {
|
|
1087
1091
|
this.currentOpCount += 1;
|
|
1088
|
-
const shouldYield = this.
|
|
1092
|
+
const shouldYield = this.currentScheduler.shouldYield(this);
|
|
1089
1093
|
if (shouldYield !== false) {
|
|
1090
|
-
this.
|
|
1094
|
+
this._isYielding = true;
|
|
1091
1095
|
this.currentOpCount = 0;
|
|
1092
1096
|
const oldCur = cur;
|
|
1093
1097
|
cur = core.flatMap(core.yieldNow({
|
|
@@ -1101,9 +1105,9 @@ class FiberRuntime {
|
|
|
1101
1105
|
absurd(cur);
|
|
1102
1106
|
}
|
|
1103
1107
|
// @ts-expect-error
|
|
1104
|
-
cur = this.
|
|
1105
|
-
if (version.getCurrentVersion() !== cur[
|
|
1106
|
-
return core.dieMessage(`Cannot execute an Effect versioned ${cur[
|
|
1108
|
+
cur = this.currentTracer.context(() => {
|
|
1109
|
+
if (version.getCurrentVersion() !== cur[core.EffectTypeId]._V) {
|
|
1110
|
+
return core.dieMessage(`Cannot execute an Effect versioned ${cur[core.EffectTypeId]._V} with a Runtime of version ${version.getCurrentVersion()}`);
|
|
1107
1111
|
}
|
|
1108
1112
|
// @ts-expect-error
|
|
1109
1113
|
return this[cur._op](cur);
|
|
@@ -1142,6 +1146,27 @@ const loggerWithConsoleLog = self => internalLogger.makeLogger(opts => {
|
|
|
1142
1146
|
});
|
|
1143
1147
|
/** @internal */
|
|
1144
1148
|
exports.loggerWithConsoleLog = loggerWithConsoleLog;
|
|
1149
|
+
const loggerWithLeveledLog = self => internalLogger.makeLogger(opts => {
|
|
1150
|
+
const services = FiberRefs.getOrDefault(opts.context, defaultServices.currentServices);
|
|
1151
|
+
const unsafeLogger = Context.get(services, _console.consoleTag).unsafe;
|
|
1152
|
+
switch (opts.logLevel._tag) {
|
|
1153
|
+
case "Debug":
|
|
1154
|
+
return unsafeLogger.debug(self.log(opts));
|
|
1155
|
+
case "Info":
|
|
1156
|
+
return unsafeLogger.info(self.log(opts));
|
|
1157
|
+
case "Trace":
|
|
1158
|
+
return unsafeLogger.trace(self.log(opts));
|
|
1159
|
+
case "Warning":
|
|
1160
|
+
return unsafeLogger.warn(self.log(opts));
|
|
1161
|
+
case "Error":
|
|
1162
|
+
case "Fatal":
|
|
1163
|
+
return unsafeLogger.error(self.log(opts));
|
|
1164
|
+
default:
|
|
1165
|
+
return unsafeLogger.log(self.log(opts));
|
|
1166
|
+
}
|
|
1167
|
+
});
|
|
1168
|
+
/** @internal */
|
|
1169
|
+
exports.loggerWithLeveledLog = loggerWithLeveledLog;
|
|
1145
1170
|
const loggerWithConsoleError = self => internalLogger.makeLogger(opts => {
|
|
1146
1171
|
const services = FiberRefs.getOrDefault(opts.context, defaultServices.currentServices);
|
|
1147
1172
|
Context.get(services, _console.consoleTag).unsafe.error(self.log(opts));
|
|
@@ -1154,7 +1179,7 @@ const jsonLogger = exports.jsonLogger = /*#__PURE__*/(0, _GlobalValue.globalValu
|
|
|
1154
1179
|
/** @internal */
|
|
1155
1180
|
const logFmtLogger = exports.logFmtLogger = /*#__PURE__*/(0, _GlobalValue.globalValue)( /*#__PURE__*/Symbol.for("effect/Logger/logFmtLogger"), () => loggerWithConsoleLog(internalLogger.logfmtLogger));
|
|
1156
1181
|
/** @internal */
|
|
1157
|
-
const prettyLogger = exports.prettyLogger = /*#__PURE__*/(0, _GlobalValue.globalValue)( /*#__PURE__*/Symbol.for("effect/Logger/prettyLogger"), () => internalLogger.
|
|
1182
|
+
const prettyLogger = exports.prettyLogger = /*#__PURE__*/(0, _GlobalValue.globalValue)( /*#__PURE__*/Symbol.for("effect/Logger/prettyLogger"), () => internalLogger.prettyLoggerDefault);
|
|
1158
1183
|
/** @internal */
|
|
1159
1184
|
const structuredLogger = exports.structuredLogger = /*#__PURE__*/(0, _GlobalValue.globalValue)( /*#__PURE__*/Symbol.for("effect/Logger/structuredLogger"), () => loggerWithConsoleLog(internalLogger.structuredLogger));
|
|
1160
1185
|
/** @internal */
|
|
@@ -1230,10 +1255,10 @@ const acquireReleaseInterruptible = exports.acquireReleaseInterruptible = /*#__P
|
|
|
1230
1255
|
/* @internal */
|
|
1231
1256
|
const addFinalizer = finalizer => core.withFiberRuntime(runtime => {
|
|
1232
1257
|
const acquireRefs = runtime.getFiberRefs();
|
|
1233
|
-
const acquireFlags = runtime.
|
|
1258
|
+
const acquireFlags = runtime.currentRuntimeFlags;
|
|
1234
1259
|
return core.flatMap(scope, scope => core.scopeAddFinalizerExit(scope, exit => core.withFiberRuntime(runtimeFinalizer => {
|
|
1235
1260
|
const preRefs = runtimeFinalizer.getFiberRefs();
|
|
1236
|
-
const preFlags = runtimeFinalizer.
|
|
1261
|
+
const preFlags = runtimeFinalizer.currentRuntimeFlags;
|
|
1237
1262
|
const patchRefs = FiberRefsPatch.diff(preRefs, acquireRefs);
|
|
1238
1263
|
const patchFlags = _runtimeFlags.diff(preFlags, acquireFlags);
|
|
1239
1264
|
const inverseRefs = FiberRefsPatch.diff(acquireRefs, preRefs);
|
|
@@ -1389,7 +1414,7 @@ const forEachConcurrentDiscard = (self, f, batching, processAll, n) => core.unin
|
|
|
1389
1414
|
const fibers = new Set();
|
|
1390
1415
|
const results = new Array();
|
|
1391
1416
|
const interruptAll = () => fibers.forEach(fiber => {
|
|
1392
|
-
fiber.
|
|
1417
|
+
fiber.currentScheduler.scheduleTask(() => {
|
|
1393
1418
|
fiber.unsafeInterruptAsFork(parent.id());
|
|
1394
1419
|
}, 0);
|
|
1395
1420
|
});
|
|
@@ -1409,8 +1434,8 @@ const forEachConcurrentDiscard = (self, f, batching, processAll, n) => core.unin
|
|
|
1409
1434
|
};
|
|
1410
1435
|
const runFiber = (eff, interruptImmediately = false) => {
|
|
1411
1436
|
const runnable = core.uninterruptible(graft(eff));
|
|
1412
|
-
const fiber = unsafeForkUnstarted(runnable, parent, parent.
|
|
1413
|
-
parent.
|
|
1437
|
+
const fiber = unsafeForkUnstarted(runnable, parent, parent.currentRuntimeFlags, fiberScope.globalScope);
|
|
1438
|
+
parent.currentScheduler.scheduleTask(() => {
|
|
1414
1439
|
if (interruptImmediately) {
|
|
1415
1440
|
fiber.unsafeInterruptAsFork(parent.id());
|
|
1416
1441
|
}
|
|
@@ -1464,7 +1489,7 @@ const forEachConcurrentDiscard = (self, f, batching, processAll, n) => core.unin
|
|
|
1464
1489
|
startOrder.push(fiber);
|
|
1465
1490
|
fibers.add(fiber);
|
|
1466
1491
|
if (interrupted) {
|
|
1467
|
-
fiber.
|
|
1492
|
+
fiber.currentScheduler.scheduleTask(() => {
|
|
1468
1493
|
fiber.unsafeInterruptAsFork(parent.id());
|
|
1469
1494
|
}, 0);
|
|
1470
1495
|
}
|
|
@@ -1578,7 +1603,7 @@ const unsafeMakeChildFiber = (effect, parentFiber, parentRuntimeFlags, overrideS
|
|
|
1578
1603
|
const childFiberRefs = fiberRefs.forkAs(parentFiberRefs, childId);
|
|
1579
1604
|
const childFiber = new FiberRuntime(childId, childFiberRefs, parentRuntimeFlags);
|
|
1580
1605
|
const childContext = fiberRefs.getOrDefault(childFiberRefs, core.currentContext);
|
|
1581
|
-
const supervisor = childFiber.
|
|
1606
|
+
const supervisor = childFiber.currentSupervisor;
|
|
1582
1607
|
supervisor.onStart(childContext, effect, Option.some(parentFiber), childFiber);
|
|
1583
1608
|
childFiber.addObserver(exit => supervisor.onEnd(exit, childFiber));
|
|
1584
1609
|
const parentScope = overrideScope !== null ? overrideScope : (0, _Function.pipe)(parentFiber.getFiberRef(core.currentForkScopeOverride), Option.getOrElse(() => parentFiber.scope()));
|
|
@@ -1886,41 +1911,45 @@ const currentSupervisor = exports.currentSupervisor = /*#__PURE__*/fiberRefUnsaf
|
|
|
1886
1911
|
const fiberAwaitAll = fibers => forEach(fibers, internalFiber._await);
|
|
1887
1912
|
/** @internal */
|
|
1888
1913
|
exports.fiberAwaitAll = fiberAwaitAll;
|
|
1889
|
-
const fiberAll = fibers =>
|
|
1890
|
-
|
|
1891
|
-
|
|
1892
|
-
|
|
1893
|
-
|
|
1894
|
-
|
|
1895
|
-
|
|
1896
|
-
|
|
1897
|
-
|
|
1898
|
-
|
|
1899
|
-
|
|
1900
|
-
|
|
1901
|
-
|
|
1902
|
-
|
|
1903
|
-
|
|
1904
|
-
|
|
1905
|
-
{
|
|
1906
|
-
return Option.none();
|
|
1907
|
-
}
|
|
1908
|
-
case "Some":
|
|
1909
|
-
{
|
|
1910
|
-
return Option.some(core.exitZipWith(optionA.value, optionB.value, {
|
|
1911
|
-
onSuccess: (a, chunk) => [a, ...chunk],
|
|
1912
|
-
onFailure: internalCause.parallel
|
|
1913
|
-
}));
|
|
1914
|
-
}
|
|
1914
|
+
const fiberAll = fibers => {
|
|
1915
|
+
const _fiberAll = {
|
|
1916
|
+
...Effectable.CommitPrototype,
|
|
1917
|
+
commit() {
|
|
1918
|
+
return internalFiber.join(this);
|
|
1919
|
+
},
|
|
1920
|
+
[internalFiber.FiberTypeId]: internalFiber.fiberVariance,
|
|
1921
|
+
id: () => RA.fromIterable(fibers).reduce((id, fiber) => FiberId.combine(id, fiber.id()), FiberId.none),
|
|
1922
|
+
await: core.exit(forEachParUnbounded(fibers, fiber => core.flatten(fiber.await), false)),
|
|
1923
|
+
children: core.map(forEachParUnbounded(fibers, fiber => fiber.children, false), RA.flatten),
|
|
1924
|
+
inheritAll: core.forEachSequentialDiscard(fibers, fiber => fiber.inheritAll),
|
|
1925
|
+
poll: core.map(core.forEachSequential(fibers, fiber => fiber.poll), RA.reduceRight(Option.some(core.exitSucceed(new Array())), (optionB, optionA) => {
|
|
1926
|
+
switch (optionA._tag) {
|
|
1927
|
+
case "None":
|
|
1928
|
+
{
|
|
1929
|
+
return Option.none();
|
|
1915
1930
|
}
|
|
1916
|
-
|
|
1917
|
-
|
|
1918
|
-
|
|
1919
|
-
|
|
1920
|
-
|
|
1921
|
-
|
|
1922
|
-
|
|
1923
|
-
|
|
1931
|
+
case "Some":
|
|
1932
|
+
{
|
|
1933
|
+
switch (optionB._tag) {
|
|
1934
|
+
case "None":
|
|
1935
|
+
{
|
|
1936
|
+
return Option.none();
|
|
1937
|
+
}
|
|
1938
|
+
case "Some":
|
|
1939
|
+
{
|
|
1940
|
+
return Option.some(core.exitZipWith(optionA.value, optionB.value, {
|
|
1941
|
+
onSuccess: (a, chunk) => [a, ...chunk],
|
|
1942
|
+
onFailure: internalCause.parallel
|
|
1943
|
+
}));
|
|
1944
|
+
}
|
|
1945
|
+
}
|
|
1946
|
+
}
|
|
1947
|
+
}
|
|
1948
|
+
})),
|
|
1949
|
+
interruptAsFork: fiberId => core.forEachSequentialDiscard(fibers, fiber => fiber.interruptAsFork(fiberId))
|
|
1950
|
+
};
|
|
1951
|
+
return _fiberAll;
|
|
1952
|
+
};
|
|
1924
1953
|
/* @internal */
|
|
1925
1954
|
exports.fiberAll = fiberAll;
|
|
1926
1955
|
const fiberInterruptFork = self => core.asVoid(forkDaemon(core.interruptFiber(self)));
|