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
|
@@ -6,10 +6,11 @@ import * as Chunk from "../Chunk.js"
|
|
|
6
6
|
import type * as Clock from "../Clock.js"
|
|
7
7
|
import type { ConfigProvider } from "../ConfigProvider.js"
|
|
8
8
|
import * as Context from "../Context.js"
|
|
9
|
+
import type { DefaultServices } from "../DefaultServices.js"
|
|
9
10
|
import * as Deferred from "../Deferred.js"
|
|
10
11
|
import type * as Duration from "../Duration.js"
|
|
11
12
|
import type * as Effect from "../Effect.js"
|
|
12
|
-
import
|
|
13
|
+
import * as Effectable from "../Effectable.js"
|
|
13
14
|
import type * as Either from "../Either.js"
|
|
14
15
|
import * as ExecutionStrategy from "../ExecutionStrategy.js"
|
|
15
16
|
import type * as Exit from "../Exit.js"
|
|
@@ -169,8 +170,8 @@ const contOpSuccess = {
|
|
|
169
170
|
cont: core.RevertFlags,
|
|
170
171
|
value: unknown
|
|
171
172
|
) => {
|
|
172
|
-
self.patchRuntimeFlags(self.
|
|
173
|
-
if (_runtimeFlags.interruptible(self.
|
|
173
|
+
self.patchRuntimeFlags(self.currentRuntimeFlags, cont.patch)
|
|
174
|
+
if (_runtimeFlags.interruptible(self.currentRuntimeFlags) && self.isInterrupted()) {
|
|
174
175
|
return core.exitFailCause(self.getInterruptedCause())
|
|
175
176
|
} else {
|
|
176
177
|
return core.exitSucceed(value)
|
|
@@ -268,18 +269,13 @@ export interface Snapshot {
|
|
|
268
269
|
}
|
|
269
270
|
|
|
270
271
|
/** @internal */
|
|
271
|
-
export class FiberRuntime<in out A, in out E = never>
|
|
272
|
+
export class FiberRuntime<in out A, in out E = never> extends Effectable.Class<A, E>
|
|
273
|
+
implements Fiber.RuntimeFiber<A, E>
|
|
274
|
+
{
|
|
272
275
|
readonly [internalFiber.FiberTypeId] = internalFiber.fiberVariance
|
|
273
276
|
readonly [internalFiber.RuntimeFiberTypeId] = runtimeFiberVariance
|
|
274
|
-
|
|
275
|
-
pipe() {
|
|
276
|
-
return pipeArguments(this, arguments)
|
|
277
|
-
}
|
|
278
|
-
|
|
279
277
|
private _fiberRefs: FiberRefs.FiberRefs
|
|
280
278
|
private _fiberId: FiberId.Runtime
|
|
281
|
-
public _runtimeFlags: RuntimeFlags.RuntimeFlags
|
|
282
|
-
|
|
283
279
|
private _queue = new Array<FiberMessage.FiberMessage>()
|
|
284
280
|
private _children: Set<FiberRuntime<any, any>> | null = null
|
|
285
281
|
private _observers = new Array<(exit: Exit.Exit<A, E>) => void>()
|
|
@@ -289,28 +285,36 @@ export class FiberRuntime<in out A, in out E = never> implements Fiber.RuntimeFi
|
|
|
289
285
|
private _asyncBlockingOn: FiberId.FiberId | null = null
|
|
290
286
|
private _exitValue: Exit.Exit<A, E> | null = null
|
|
291
287
|
private _steps: Array<Snapshot> = []
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
288
|
+
private _isYielding = false
|
|
289
|
+
|
|
290
|
+
public currentRuntimeFlags: RuntimeFlags.RuntimeFlags
|
|
295
291
|
public currentOpCount: number = 0
|
|
296
|
-
|
|
292
|
+
public currentSupervisor!: Supervisor.Supervisor<any>
|
|
293
|
+
public currentScheduler!: Scheduler
|
|
294
|
+
public currentTracer!: Tracer.Tracer
|
|
295
|
+
public currentSpan!: Tracer.AnySpan | undefined
|
|
296
|
+
public currentContext!: Context.Context<never>
|
|
297
|
+
public currentDefaultServices!: Context.Context<DefaultServices>
|
|
297
298
|
|
|
298
299
|
constructor(
|
|
299
300
|
fiberId: FiberId.Runtime,
|
|
300
301
|
fiberRefs0: FiberRefs.FiberRefs,
|
|
301
302
|
runtimeFlags0: RuntimeFlags.RuntimeFlags
|
|
302
303
|
) {
|
|
303
|
-
|
|
304
|
+
super()
|
|
305
|
+
this.currentRuntimeFlags = runtimeFlags0
|
|
304
306
|
this._fiberId = fiberId
|
|
305
307
|
this._fiberRefs = fiberRefs0
|
|
306
|
-
this._supervisor = this.getFiberRef(currentSupervisor)
|
|
307
|
-
this._scheduler = this.getFiberRef(currentScheduler)
|
|
308
308
|
if (_runtimeFlags.runtimeMetrics(runtimeFlags0)) {
|
|
309
309
|
const tags = this.getFiberRef(core.currentMetricLabels)
|
|
310
310
|
fiberStarted.unsafeUpdate(1, tags)
|
|
311
311
|
fiberActive.unsafeUpdate(1, tags)
|
|
312
312
|
}
|
|
313
|
-
this.
|
|
313
|
+
this.refreshRefCache()
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
commit(): Effect.Effect<A, E, never> {
|
|
317
|
+
return internalFiber.join(this)
|
|
314
318
|
}
|
|
315
319
|
|
|
316
320
|
/**
|
|
@@ -342,7 +346,7 @@ export class FiberRuntime<in out A, in out E = never> implements Fiber.RuntimeFi
|
|
|
342
346
|
get runtimeFlags(): Effect.Effect<RuntimeFlags.RuntimeFlags> {
|
|
343
347
|
return this.ask((state, status) => {
|
|
344
348
|
if (FiberStatus.isDone(status)) {
|
|
345
|
-
return state.
|
|
349
|
+
return state.currentRuntimeFlags
|
|
346
350
|
}
|
|
347
351
|
return status.runtimeFlags
|
|
348
352
|
})
|
|
@@ -528,7 +532,7 @@ export class FiberRuntime<in out A, in out E = never> implements Fiber.RuntimeFi
|
|
|
528
532
|
* log annotations and log level) may not be up-to-date.
|
|
529
533
|
*/
|
|
530
534
|
getFiberRefs(): FiberRefs.FiberRefs {
|
|
531
|
-
this.setFiberRef(currentRuntimeFlags, this.
|
|
535
|
+
this.setFiberRef(currentRuntimeFlags, this.currentRuntimeFlags)
|
|
532
536
|
return this._fiberRefs
|
|
533
537
|
}
|
|
534
538
|
|
|
@@ -570,9 +574,12 @@ export class FiberRuntime<in out A, in out E = never> implements Fiber.RuntimeFi
|
|
|
570
574
|
}
|
|
571
575
|
|
|
572
576
|
refreshRefCache() {
|
|
573
|
-
this.
|
|
574
|
-
this.
|
|
575
|
-
this.
|
|
577
|
+
this.currentDefaultServices = this.getFiberRef(defaultServices.currentServices)
|
|
578
|
+
this.currentTracer = this.currentDefaultServices.unsafeMap.get(tracer.tracerTag.key)
|
|
579
|
+
this.currentSupervisor = this.getFiberRef(currentSupervisor)
|
|
580
|
+
this.currentScheduler = this.getFiberRef(currentScheduler)
|
|
581
|
+
this.currentContext = this.getFiberRef(core.currentContext)
|
|
582
|
+
this.currentSpan = this.currentContext.unsafeMap.get(tracer.spanTag.key)
|
|
576
583
|
}
|
|
577
584
|
|
|
578
585
|
/**
|
|
@@ -653,7 +660,7 @@ export class FiberRuntime<in out A, in out E = never> implements Fiber.RuntimeFi
|
|
|
653
660
|
* **NOTE**: This method must be invoked by the fiber itself.
|
|
654
661
|
*/
|
|
655
662
|
drainQueueLaterOnExecutor() {
|
|
656
|
-
this.
|
|
663
|
+
this.currentScheduler.scheduleTask(
|
|
657
664
|
this.run,
|
|
658
665
|
this.getFiberRef(core.currentSchedulingPriority)
|
|
659
666
|
)
|
|
@@ -764,7 +771,7 @@ export class FiberRuntime<in out A, in out E = never> implements Fiber.RuntimeFi
|
|
|
764
771
|
}
|
|
765
772
|
|
|
766
773
|
reportExitValue(exit: Exit.Exit<A, E>) {
|
|
767
|
-
if (_runtimeFlags.runtimeMetrics(this.
|
|
774
|
+
if (_runtimeFlags.runtimeMetrics(this.currentRuntimeFlags)) {
|
|
768
775
|
const tags = this.getFiberRef(core.currentMetricLabels)
|
|
769
776
|
const startTimeMillis = this.id().startTimeMillis
|
|
770
777
|
const endTimeMillis = Date.now()
|
|
@@ -866,7 +873,7 @@ export class FiberRuntime<in out A, in out E = never> implements Fiber.RuntimeFi
|
|
|
866
873
|
this,
|
|
867
874
|
this._exitValue !== null ?
|
|
868
875
|
FiberStatus.done :
|
|
869
|
-
FiberStatus.suspended(this.
|
|
876
|
+
FiberStatus.suspended(this.currentRuntimeFlags, this._asyncBlockingOn!)
|
|
870
877
|
)
|
|
871
878
|
return EvaluationSignalContinue
|
|
872
879
|
}
|
|
@@ -882,10 +889,10 @@ export class FiberRuntime<in out A, in out E = never> implements Fiber.RuntimeFi
|
|
|
882
889
|
* **NOTE**: This method must be invoked by the fiber itself.
|
|
883
890
|
*/
|
|
884
891
|
evaluateEffect(effect0: Effect.Effect<any, any, any>) {
|
|
885
|
-
this.
|
|
892
|
+
this.currentSupervisor.onResume(this)
|
|
886
893
|
try {
|
|
887
894
|
let effect: Effect.Effect<any, any, any> | null =
|
|
888
|
-
_runtimeFlags.interruptible(this.
|
|
895
|
+
_runtimeFlags.interruptible(this.currentRuntimeFlags) && this.isInterrupted() ?
|
|
889
896
|
core.exitFailCause(this.getInterruptedCause()) :
|
|
890
897
|
effect0
|
|
891
898
|
while (effect !== null) {
|
|
@@ -895,7 +902,7 @@ export class FiberRuntime<in out A, in out E = never> implements Fiber.RuntimeFi
|
|
|
895
902
|
const op = yieldedOpChannel.currentOp!
|
|
896
903
|
yieldedOpChannel.currentOp = null
|
|
897
904
|
if (op._op === OpCodes.OP_YIELD) {
|
|
898
|
-
if (_runtimeFlags.cooperativeYielding(this.
|
|
905
|
+
if (_runtimeFlags.cooperativeYielding(this.currentRuntimeFlags)) {
|
|
899
906
|
this.tell(FiberMessage.yieldNow())
|
|
900
907
|
this.tell(FiberMessage.resume(core.exitVoid))
|
|
901
908
|
effect = null
|
|
@@ -907,7 +914,7 @@ export class FiberRuntime<in out A, in out E = never> implements Fiber.RuntimeFi
|
|
|
907
914
|
effect = null
|
|
908
915
|
}
|
|
909
916
|
} else {
|
|
910
|
-
this.
|
|
917
|
+
this.currentRuntimeFlags = pipe(this.currentRuntimeFlags, _runtimeFlags.enable(_runtimeFlags.WindDown))
|
|
911
918
|
const interruption = this.interruptAllChildren()
|
|
912
919
|
if (interruption !== null) {
|
|
913
920
|
effect = core.flatMap(interruption, () => exit)
|
|
@@ -926,7 +933,7 @@ export class FiberRuntime<in out A, in out E = never> implements Fiber.RuntimeFi
|
|
|
926
933
|
}
|
|
927
934
|
}
|
|
928
935
|
} finally {
|
|
929
|
-
this.
|
|
936
|
+
this.currentSupervisor.onSuspend(this)
|
|
930
937
|
}
|
|
931
938
|
}
|
|
932
939
|
|
|
@@ -981,7 +988,7 @@ export class FiberRuntime<in out A, in out E = never> implements Fiber.RuntimeFi
|
|
|
981
988
|
patchRuntimeFlags(oldRuntimeFlags: RuntimeFlags.RuntimeFlags, patch: RuntimeFlagsPatch.RuntimeFlagsPatch) {
|
|
982
989
|
const newRuntimeFlags = _runtimeFlags.patch(oldRuntimeFlags, patch)
|
|
983
990
|
;(globalThis as any)[internalFiber.currentFiberURI] = this
|
|
984
|
-
this.
|
|
991
|
+
this.currentRuntimeFlags = newRuntimeFlags
|
|
985
992
|
return newRuntimeFlags
|
|
986
993
|
}
|
|
987
994
|
|
|
@@ -1016,7 +1023,7 @@ export class FiberRuntime<in out A, in out E = never> implements Fiber.RuntimeFi
|
|
|
1016
1023
|
pushStack(cont: core.Continuation) {
|
|
1017
1024
|
this._stack.push(cont)
|
|
1018
1025
|
if (cont._op === "OnStep") {
|
|
1019
|
-
this._steps.push({ refs: this.getFiberRefs(), flags: this.
|
|
1026
|
+
this._steps.push({ refs: this.getFiberRefs(), flags: this.currentRuntimeFlags })
|
|
1020
1027
|
}
|
|
1021
1028
|
}
|
|
1022
1029
|
|
|
@@ -1052,10 +1059,7 @@ export class FiberRuntime<in out A, in out E = never> implements Fiber.RuntimeFi
|
|
|
1052
1059
|
}
|
|
1053
1060
|
|
|
1054
1061
|
[OpCodes.OP_TAG](op: core.Primitive & { _op: OpCodes.OP_SYNC }) {
|
|
1055
|
-
return core.
|
|
1056
|
-
core.fiberRefGet(core.currentContext),
|
|
1057
|
-
(context) => Context.unsafeGet(context, op as unknown as Context.Tag<any, any>)
|
|
1058
|
-
)
|
|
1062
|
+
return core.sync(() => Context.unsafeGet(this.currentContext, op as unknown as Context.Tag<any, any>))
|
|
1059
1063
|
}
|
|
1060
1064
|
|
|
1061
1065
|
["Left"](op: core.Primitive & { _op: "Left" }) {
|
|
@@ -1144,22 +1148,22 @@ export class FiberRuntime<in out A, in out E = never> implements Fiber.RuntimeFi
|
|
|
1144
1148
|
switch (cont._op) {
|
|
1145
1149
|
case OpCodes.OP_ON_FAILURE:
|
|
1146
1150
|
case OpCodes.OP_ON_SUCCESS_AND_FAILURE: {
|
|
1147
|
-
if (!(_runtimeFlags.interruptible(this.
|
|
1151
|
+
if (!(_runtimeFlags.interruptible(this.currentRuntimeFlags) && this.isInterrupted())) {
|
|
1148
1152
|
return internalCall(() => cont.effect_instruction_i1(cause))
|
|
1149
1153
|
} else {
|
|
1150
1154
|
return core.exitFailCause(internalCause.stripFailures(cause))
|
|
1151
1155
|
}
|
|
1152
1156
|
}
|
|
1153
1157
|
case "OnStep": {
|
|
1154
|
-
if (!(_runtimeFlags.interruptible(this.
|
|
1158
|
+
if (!(_runtimeFlags.interruptible(this.currentRuntimeFlags) && this.isInterrupted())) {
|
|
1155
1159
|
return core.exitSucceed(core.exitFailCause(cause))
|
|
1156
1160
|
} else {
|
|
1157
1161
|
return core.exitFailCause(internalCause.stripFailures(cause))
|
|
1158
1162
|
}
|
|
1159
1163
|
}
|
|
1160
1164
|
case OpCodes.OP_REVERT_FLAGS: {
|
|
1161
|
-
this.patchRuntimeFlags(this.
|
|
1162
|
-
if (_runtimeFlags.interruptible(this.
|
|
1165
|
+
this.patchRuntimeFlags(this.currentRuntimeFlags, cont.patch)
|
|
1166
|
+
if (_runtimeFlags.interruptible(this.currentRuntimeFlags) && this.isInterrupted()) {
|
|
1163
1167
|
return core.exitFailCause(internalCause.sequential(cause, this.getInterruptedCause()))
|
|
1164
1168
|
} else {
|
|
1165
1169
|
return core.exitFailCause(cause)
|
|
@@ -1179,14 +1183,14 @@ export class FiberRuntime<in out A, in out E = never> implements Fiber.RuntimeFi
|
|
|
1179
1183
|
return internalCall(() =>
|
|
1180
1184
|
op.effect_instruction_i0(
|
|
1181
1185
|
this as FiberRuntime<unknown, unknown>,
|
|
1182
|
-
FiberStatus.running(this.
|
|
1186
|
+
FiberStatus.running(this.currentRuntimeFlags) as FiberStatus.Running
|
|
1183
1187
|
)
|
|
1184
1188
|
)
|
|
1185
1189
|
}
|
|
1186
1190
|
|
|
1187
1191
|
["Blocked"](op: core.Primitive & { _op: "Blocked" }) {
|
|
1188
1192
|
const refs = this.getFiberRefs()
|
|
1189
|
-
const flags = this.
|
|
1193
|
+
const flags = this.currentRuntimeFlags
|
|
1190
1194
|
if (this._steps.length > 0) {
|
|
1191
1195
|
const frames: Array<core.Continuation> = []
|
|
1192
1196
|
const snap = this._steps[this._steps.length - 1]
|
|
@@ -1196,7 +1200,7 @@ export class FiberRuntime<in out A, in out E = never> implements Fiber.RuntimeFi
|
|
|
1196
1200
|
frame = this.popStack()
|
|
1197
1201
|
}
|
|
1198
1202
|
this.setFiberRefs(snap.refs)
|
|
1199
|
-
this.
|
|
1203
|
+
this.currentRuntimeFlags = snap.flags
|
|
1200
1204
|
const patchRefs = FiberRefsPatch.diff(snap.refs, refs)
|
|
1201
1205
|
const patchFlags = _runtimeFlags.diff(snap.flags, flags)
|
|
1202
1206
|
return core.exitSucceed(core.blocked(
|
|
@@ -1208,7 +1212,7 @@ export class FiberRuntime<in out A, in out E = never> implements Fiber.RuntimeFi
|
|
|
1208
1212
|
newFiber.setFiberRefs(
|
|
1209
1213
|
FiberRefsPatch.patch(newFiber.id(), newFiber.getFiberRefs())(patchRefs)
|
|
1210
1214
|
)
|
|
1211
|
-
newFiber.
|
|
1215
|
+
newFiber.currentRuntimeFlags = _runtimeFlags.patch(patchFlags)(newFiber.currentRuntimeFlags)
|
|
1212
1216
|
return op.effect_instruction_i1
|
|
1213
1217
|
})
|
|
1214
1218
|
))
|
|
@@ -1227,7 +1231,7 @@ export class FiberRuntime<in out A, in out E = never> implements Fiber.RuntimeFi
|
|
|
1227
1231
|
|
|
1228
1232
|
[OpCodes.OP_UPDATE_RUNTIME_FLAGS](op: core.Primitive & { _op: OpCodes.OP_UPDATE_RUNTIME_FLAGS }) {
|
|
1229
1233
|
const updateFlags = op.effect_instruction_i0
|
|
1230
|
-
const oldRuntimeFlags = this.
|
|
1234
|
+
const oldRuntimeFlags = this.currentRuntimeFlags
|
|
1231
1235
|
const newRuntimeFlags = _runtimeFlags.patch(oldRuntimeFlags, updateFlags)
|
|
1232
1236
|
// One more chance to short circuit: if we're immediately going
|
|
1233
1237
|
// to interrupt. Interruption will cause immediate reversion of
|
|
@@ -1237,7 +1241,7 @@ export class FiberRuntime<in out A, in out E = never> implements Fiber.RuntimeFi
|
|
|
1237
1241
|
return core.exitFailCause(this.getInterruptedCause())
|
|
1238
1242
|
} else {
|
|
1239
1243
|
// Impossible to short circuit, so record the changes
|
|
1240
|
-
this.patchRuntimeFlags(this.
|
|
1244
|
+
this.patchRuntimeFlags(this.currentRuntimeFlags, updateFlags)
|
|
1241
1245
|
if (op.effect_instruction_i1) {
|
|
1242
1246
|
// Since we updated the flags, we need to revert them
|
|
1243
1247
|
const revertFlags = _runtimeFlags.diff(newRuntimeFlags, oldRuntimeFlags)
|
|
@@ -1271,13 +1275,13 @@ export class FiberRuntime<in out A, in out E = never> implements Fiber.RuntimeFi
|
|
|
1271
1275
|
|
|
1272
1276
|
[OpCodes.OP_ASYNC](op: core.Primitive & { _op: OpCodes.OP_ASYNC }) {
|
|
1273
1277
|
this._asyncBlockingOn = op.effect_instruction_i1
|
|
1274
|
-
this.initiateAsync(this.
|
|
1278
|
+
this.initiateAsync(this.currentRuntimeFlags, op.effect_instruction_i0)
|
|
1275
1279
|
yieldedOpChannel.currentOp = op
|
|
1276
1280
|
return YieldedOp
|
|
1277
1281
|
}
|
|
1278
1282
|
|
|
1279
1283
|
[OpCodes.OP_YIELD](op: core.Primitive & { op: OpCodes.OP_YIELD }) {
|
|
1280
|
-
this.
|
|
1284
|
+
this._isYielding = false
|
|
1281
1285
|
yieldedOpChannel.currentOp = op
|
|
1282
1286
|
return YieldedOp
|
|
1283
1287
|
}
|
|
@@ -1305,19 +1309,19 @@ export class FiberRuntime<in out A, in out E = never> implements Fiber.RuntimeFi
|
|
|
1305
1309
|
runLoop(effect0: Effect.Effect<any, any, any>): Exit.Exit<any, any> | YieldedOp {
|
|
1306
1310
|
let cur: Effect.Effect<any, any, any> | YieldedOp = effect0
|
|
1307
1311
|
this.currentOpCount = 0
|
|
1308
|
-
|
|
1312
|
+
|
|
1309
1313
|
while (true) {
|
|
1310
|
-
if ((this.
|
|
1311
|
-
this.
|
|
1314
|
+
if ((this.currentRuntimeFlags & OpSupervision) !== 0) {
|
|
1315
|
+
this.currentSupervisor.onEffect(this, cur)
|
|
1312
1316
|
}
|
|
1313
1317
|
if (this._queue.length > 0) {
|
|
1314
|
-
cur = this.drainQueueWhileRunning(this.
|
|
1318
|
+
cur = this.drainQueueWhileRunning(this.currentRuntimeFlags, cur)
|
|
1315
1319
|
}
|
|
1316
|
-
if (!this.
|
|
1320
|
+
if (!this._isYielding) {
|
|
1317
1321
|
this.currentOpCount += 1
|
|
1318
|
-
const shouldYield = this.
|
|
1322
|
+
const shouldYield = this.currentScheduler.shouldYield(this)
|
|
1319
1323
|
if (shouldYield !== false) {
|
|
1320
|
-
this.
|
|
1324
|
+
this._isYielding = true
|
|
1321
1325
|
this.currentOpCount = 0
|
|
1322
1326
|
const oldCur = cur
|
|
1323
1327
|
cur = core.flatMap(core.yieldNow({ priority: shouldYield }), () => oldCur)
|
|
@@ -1330,12 +1334,12 @@ export class FiberRuntime<in out A, in out E = never> implements Fiber.RuntimeFi
|
|
|
1330
1334
|
}
|
|
1331
1335
|
|
|
1332
1336
|
// @ts-expect-error
|
|
1333
|
-
cur = this.
|
|
1337
|
+
cur = this.currentTracer.context(
|
|
1334
1338
|
() => {
|
|
1335
|
-
if (version.getCurrentVersion() !== (cur as core.Primitive)[EffectTypeId]._V) {
|
|
1339
|
+
if (version.getCurrentVersion() !== (cur as core.Primitive)[core.EffectTypeId]._V) {
|
|
1336
1340
|
return core.dieMessage(
|
|
1337
1341
|
`Cannot execute an Effect versioned ${
|
|
1338
|
-
(cur as core.Primitive)[EffectTypeId]._V
|
|
1342
|
+
(cur as core.Primitive)[core.EffectTypeId]._V
|
|
1339
1343
|
} with a Runtime of version ${version.getCurrentVersion()}`
|
|
1340
1344
|
)
|
|
1341
1345
|
}
|
|
@@ -1396,6 +1400,28 @@ export const loggerWithConsoleLog = <M, O>(self: Logger<M, O>): Logger<M, void>
|
|
|
1396
1400
|
Context.get(services, consoleTag).unsafe.log(self.log(opts))
|
|
1397
1401
|
})
|
|
1398
1402
|
|
|
1403
|
+
/** @internal */
|
|
1404
|
+
export const loggerWithLeveledLog = <M, O>(self: Logger<M, O>): Logger<M, void> =>
|
|
1405
|
+
internalLogger.makeLogger((opts) => {
|
|
1406
|
+
const services = FiberRefs.getOrDefault(opts.context, defaultServices.currentServices)
|
|
1407
|
+
const unsafeLogger = Context.get(services, consoleTag).unsafe
|
|
1408
|
+
switch (opts.logLevel._tag) {
|
|
1409
|
+
case "Debug":
|
|
1410
|
+
return unsafeLogger.debug(self.log(opts))
|
|
1411
|
+
case "Info":
|
|
1412
|
+
return unsafeLogger.info(self.log(opts))
|
|
1413
|
+
case "Trace":
|
|
1414
|
+
return unsafeLogger.trace(self.log(opts))
|
|
1415
|
+
case "Warning":
|
|
1416
|
+
return unsafeLogger.warn(self.log(opts))
|
|
1417
|
+
case "Error":
|
|
1418
|
+
case "Fatal":
|
|
1419
|
+
return unsafeLogger.error(self.log(opts))
|
|
1420
|
+
default:
|
|
1421
|
+
return unsafeLogger.log(self.log(opts))
|
|
1422
|
+
}
|
|
1423
|
+
})
|
|
1424
|
+
|
|
1399
1425
|
/** @internal */
|
|
1400
1426
|
export const loggerWithConsoleError = <M, O>(self: Logger<M, O>): Logger<M, void> =>
|
|
1401
1427
|
internalLogger.makeLogger((opts) => {
|
|
@@ -1424,7 +1450,7 @@ export const logFmtLogger: Logger<unknown, void> = globalValue(
|
|
|
1424
1450
|
/** @internal */
|
|
1425
1451
|
export const prettyLogger: Logger<unknown, void> = globalValue(
|
|
1426
1452
|
Symbol.for("effect/Logger/prettyLogger"),
|
|
1427
|
-
() => internalLogger.
|
|
1453
|
+
() => internalLogger.prettyLoggerDefault
|
|
1428
1454
|
)
|
|
1429
1455
|
|
|
1430
1456
|
/** @internal */
|
|
@@ -1604,12 +1630,12 @@ export const addFinalizer = <X, R>(
|
|
|
1604
1630
|
core.withFiberRuntime(
|
|
1605
1631
|
(runtime) => {
|
|
1606
1632
|
const acquireRefs = runtime.getFiberRefs()
|
|
1607
|
-
const acquireFlags = runtime.
|
|
1633
|
+
const acquireFlags = runtime.currentRuntimeFlags
|
|
1608
1634
|
return core.flatMap(scope, (scope) =>
|
|
1609
1635
|
core.scopeAddFinalizerExit(scope, (exit) =>
|
|
1610
1636
|
core.withFiberRuntime((runtimeFinalizer) => {
|
|
1611
1637
|
const preRefs = runtimeFinalizer.getFiberRefs()
|
|
1612
|
-
const preFlags = runtimeFinalizer.
|
|
1638
|
+
const preFlags = runtimeFinalizer.currentRuntimeFlags
|
|
1613
1639
|
const patchRefs = FiberRefsPatch.diff(preRefs, acquireRefs)
|
|
1614
1640
|
const patchFlags = _runtimeFlags.diff(preFlags, acquireFlags)
|
|
1615
1641
|
const inverseRefs = FiberRefsPatch.diff(acquireRefs, preRefs)
|
|
@@ -2100,7 +2126,7 @@ export const forEachConcurrentDiscard = <A, X, E, R>(
|
|
|
2100
2126
|
const results = new Array()
|
|
2101
2127
|
const interruptAll = () =>
|
|
2102
2128
|
fibers.forEach((fiber) => {
|
|
2103
|
-
fiber.
|
|
2129
|
+
fiber.currentScheduler.scheduleTask(() => {
|
|
2104
2130
|
fiber.unsafeInterruptAsFork(parent.id())
|
|
2105
2131
|
}, 0)
|
|
2106
2132
|
})
|
|
@@ -2122,10 +2148,10 @@ export const forEachConcurrentDiscard = <A, X, E, R>(
|
|
|
2122
2148
|
const fiber = unsafeForkUnstarted(
|
|
2123
2149
|
runnable,
|
|
2124
2150
|
parent,
|
|
2125
|
-
parent.
|
|
2151
|
+
parent.currentRuntimeFlags,
|
|
2126
2152
|
fiberScope.globalScope
|
|
2127
2153
|
)
|
|
2128
|
-
parent.
|
|
2154
|
+
parent.currentScheduler.scheduleTask(() => {
|
|
2129
2155
|
if (interruptImmediately) {
|
|
2130
2156
|
fiber.unsafeInterruptAsFork(parent.id())
|
|
2131
2157
|
}
|
|
@@ -2186,7 +2212,7 @@ export const forEachConcurrentDiscard = <A, X, E, R>(
|
|
|
2186
2212
|
startOrder.push(fiber)
|
|
2187
2213
|
fibers.add(fiber)
|
|
2188
2214
|
if (interrupted) {
|
|
2189
|
-
fiber.
|
|
2215
|
+
fiber.currentScheduler.scheduleTask(() => {
|
|
2190
2216
|
fiber.unsafeInterruptAsFork(parent.id())
|
|
2191
2217
|
}, 0)
|
|
2192
2218
|
}
|
|
@@ -2356,7 +2382,7 @@ export const unsafeMakeChildFiber = <A, E, R, E2, B>(
|
|
|
2356
2382
|
childFiberRefs,
|
|
2357
2383
|
core.currentContext as unknown as FiberRef.FiberRef<Context.Context<R>>
|
|
2358
2384
|
)
|
|
2359
|
-
const supervisor = childFiber.
|
|
2385
|
+
const supervisor = childFiber.currentSupervisor
|
|
2360
2386
|
|
|
2361
2387
|
supervisor.onStart(
|
|
2362
2388
|
childContext,
|
|
@@ -3363,46 +3389,51 @@ export const fiberAwaitAll = <const T extends Iterable<Fiber.Fiber<any, any>>>(
|
|
|
3363
3389
|
> => forEach(fibers, internalFiber._await) as any
|
|
3364
3390
|
|
|
3365
3391
|
/** @internal */
|
|
3366
|
-
export const fiberAll = <A, E>(fibers: Iterable<Fiber.Fiber<A, E>>): Fiber.Fiber<Array<A>, E> =>
|
|
3367
|
-
|
|
3368
|
-
|
|
3369
|
-
|
|
3370
|
-
|
|
3371
|
-
|
|
3372
|
-
|
|
3373
|
-
|
|
3374
|
-
|
|
3375
|
-
|
|
3376
|
-
|
|
3377
|
-
|
|
3378
|
-
|
|
3379
|
-
|
|
3380
|
-
|
|
3381
|
-
|
|
3382
|
-
|
|
3383
|
-
|
|
3384
|
-
|
|
3385
|
-
|
|
3386
|
-
|
|
3387
|
-
|
|
3388
|
-
|
|
3389
|
-
|
|
3390
|
-
|
|
3391
|
-
|
|
3392
|
-
|
|
3393
|
-
|
|
3392
|
+
export const fiberAll = <A, E>(fibers: Iterable<Fiber.Fiber<A, E>>): Fiber.Fiber<Array<A>, E> => {
|
|
3393
|
+
const _fiberAll = {
|
|
3394
|
+
...Effectable.CommitPrototype,
|
|
3395
|
+
commit() {
|
|
3396
|
+
return internalFiber.join(this)
|
|
3397
|
+
},
|
|
3398
|
+
[internalFiber.FiberTypeId]: internalFiber.fiberVariance,
|
|
3399
|
+
id: () =>
|
|
3400
|
+
RA.fromIterable(fibers).reduce((id, fiber) => FiberId.combine(id, fiber.id()), FiberId.none as FiberId.FiberId),
|
|
3401
|
+
await: core.exit(forEachParUnbounded(fibers, (fiber) => core.flatten(fiber.await), false)),
|
|
3402
|
+
children: core.map(forEachParUnbounded(fibers, (fiber) => fiber.children, false), RA.flatten),
|
|
3403
|
+
inheritAll: core.forEachSequentialDiscard(fibers, (fiber) => fiber.inheritAll),
|
|
3404
|
+
poll: core.map(
|
|
3405
|
+
core.forEachSequential(fibers, (fiber) => fiber.poll),
|
|
3406
|
+
RA.reduceRight(
|
|
3407
|
+
Option.some<Exit.Exit<Array<A>, E>>(core.exitSucceed(new Array())),
|
|
3408
|
+
(optionB, optionA) => {
|
|
3409
|
+
switch (optionA._tag) {
|
|
3410
|
+
case "None": {
|
|
3411
|
+
return Option.none()
|
|
3412
|
+
}
|
|
3413
|
+
case "Some": {
|
|
3414
|
+
switch (optionB._tag) {
|
|
3415
|
+
case "None": {
|
|
3416
|
+
return Option.none()
|
|
3417
|
+
}
|
|
3418
|
+
case "Some": {
|
|
3419
|
+
return Option.some(
|
|
3420
|
+
core.exitZipWith(optionA.value, optionB.value, {
|
|
3421
|
+
onSuccess: (a, chunk) => [a, ...chunk],
|
|
3422
|
+
onFailure: internalCause.parallel
|
|
3423
|
+
})
|
|
3424
|
+
)
|
|
3425
|
+
}
|
|
3394
3426
|
}
|
|
3395
3427
|
}
|
|
3396
3428
|
}
|
|
3397
3429
|
}
|
|
3398
|
-
|
|
3399
|
-
)
|
|
3400
|
-
|
|
3401
|
-
|
|
3402
|
-
pipe() {
|
|
3403
|
-
return pipeArguments(this, arguments)
|
|
3430
|
+
)
|
|
3431
|
+
),
|
|
3432
|
+
interruptAsFork: (fiberId: FiberId.FiberId) =>
|
|
3433
|
+
core.forEachSequentialDiscard(fibers, (fiber) => fiber.interruptAsFork(fiberId))
|
|
3404
3434
|
}
|
|
3405
|
-
|
|
3435
|
+
return _fiberAll
|
|
3436
|
+
}
|
|
3406
3437
|
|
|
3407
3438
|
/* @internal */
|
|
3408
3439
|
export const fiberInterruptFork = <A, E>(self: Fiber.Fiber<A, E>): Effect.Effect<void> =>
|
package/src/internal/groupBy.ts
CHANGED
|
@@ -3,6 +3,7 @@ import type * as Channel from "../Channel.js"
|
|
|
3
3
|
import * as Chunk from "../Chunk.js"
|
|
4
4
|
import * as Deferred from "../Deferred.js"
|
|
5
5
|
import * as Effect from "../Effect.js"
|
|
6
|
+
import * as Effectable from "../Effectable.js"
|
|
6
7
|
import * as Exit from "../Exit.js"
|
|
7
8
|
import { dual, pipe } from "../Function.js"
|
|
8
9
|
import type * as GroupBy from "../GroupBy.js"
|
|
@@ -316,7 +317,7 @@ export const bindEffect = dual<
|
|
|
316
317
|
|
|
317
318
|
const mapDequeue = <A, B>(dequeue: Queue.Dequeue<A>, f: (a: A) => B): Queue.Dequeue<B> => new MapDequeue(dequeue, f)
|
|
318
319
|
|
|
319
|
-
class MapDequeue<in out A, out B> implements Queue.Dequeue<B> {
|
|
320
|
+
class MapDequeue<in out A, out B> extends Effectable.Class<B> implements Queue.Dequeue<B> {
|
|
320
321
|
readonly [Queue.DequeueTypeId] = {
|
|
321
322
|
_Out: (_: never) => _
|
|
322
323
|
}
|
|
@@ -325,6 +326,7 @@ class MapDequeue<in out A, out B> implements Queue.Dequeue<B> {
|
|
|
325
326
|
readonly dequeue: Queue.Dequeue<A>,
|
|
326
327
|
readonly f: (a: A) => B
|
|
327
328
|
) {
|
|
329
|
+
super()
|
|
328
330
|
}
|
|
329
331
|
|
|
330
332
|
capacity(): number {
|
|
@@ -390,6 +392,10 @@ class MapDequeue<in out A, out B> implements Queue.Dequeue<B> {
|
|
|
390
392
|
pipe() {
|
|
391
393
|
return pipeArguments(this, arguments)
|
|
392
394
|
}
|
|
395
|
+
|
|
396
|
+
commit() {
|
|
397
|
+
return this.take
|
|
398
|
+
}
|
|
393
399
|
}
|
|
394
400
|
|
|
395
401
|
/** @internal */
|
|
@@ -372,7 +372,7 @@ function mergeLeaves<K, V>(
|
|
|
372
372
|
): Node<K, V> {
|
|
373
373
|
let stack: Stack.Stack<(node: Node<K, V>) => Node<K, V>> | undefined = undefined
|
|
374
374
|
let currentShift = shift
|
|
375
|
-
|
|
375
|
+
|
|
376
376
|
while (true) {
|
|
377
377
|
const res = mergeLeavesInner(edit, currentShift, h1, n1, h2, n2)
|
|
378
378
|
|
package/src/internal/hashMap.ts
CHANGED
|
@@ -221,7 +221,7 @@ export const getHash = Dual.dual<
|
|
|
221
221
|
>(3, <K, V, K1>(self: HM.HashMap<K, V>, key: K1, hash: number) => {
|
|
222
222
|
let node = (self as HashMapImpl<K, V>)._root
|
|
223
223
|
let shift = 0
|
|
224
|
-
|
|
224
|
+
|
|
225
225
|
while (true) {
|
|
226
226
|
switch (node._tag) {
|
|
227
227
|
case "LeafNode": {
|
package/src/internal/layer.ts
CHANGED
|
@@ -1270,17 +1270,17 @@ const provideSomeRuntime = dual<
|
|
|
1270
1270
|
const oldContext = fiber.getFiberRef(core.currentContext)
|
|
1271
1271
|
const oldRefs = fiber.getFiberRefs()
|
|
1272
1272
|
const newRefs = FiberRefsPatch.patch(fiber.id(), oldRefs)(patchRefs)
|
|
1273
|
-
const oldFlags = fiber.
|
|
1273
|
+
const oldFlags = fiber.currentRuntimeFlags
|
|
1274
1274
|
const newFlags = runtimeFlags.patch(patchFlags)(oldFlags)
|
|
1275
1275
|
const rollbackRefs = FiberRefsPatch.diff(newRefs, oldRefs)
|
|
1276
1276
|
const rollbackFlags = runtimeFlags.diff(newFlags, oldFlags)
|
|
1277
1277
|
fiber.setFiberRefs(newRefs)
|
|
1278
|
-
fiber.
|
|
1278
|
+
fiber.currentRuntimeFlags = newFlags
|
|
1279
1279
|
return fiberRuntime.ensuring(
|
|
1280
1280
|
core.provideSomeContext(restore(self), Context.merge(oldContext, rt.context)),
|
|
1281
1281
|
core.withFiberRuntime((fiber) => {
|
|
1282
1282
|
fiber.setFiberRefs(FiberRefsPatch.patch(fiber.id(), fiber.getFiberRefs())(rollbackRefs))
|
|
1283
|
-
fiber.
|
|
1283
|
+
fiber.currentRuntimeFlags = runtimeFlags.patch(rollbackFlags)(fiber.currentRuntimeFlags)
|
|
1284
1284
|
return core.void
|
|
1285
1285
|
})
|
|
1286
1286
|
)
|
package/src/internal/logger.ts
CHANGED
|
@@ -3,6 +3,7 @@ import * as Context from "../Context.js"
|
|
|
3
3
|
import * as FiberRefs from "../FiberRefs.js"
|
|
4
4
|
import type { LazyArg } from "../Function.js"
|
|
5
5
|
import { constVoid, dual, pipe } from "../Function.js"
|
|
6
|
+
import { globalValue } from "../GlobalValue.js"
|
|
6
7
|
import * as HashMap from "../HashMap.js"
|
|
7
8
|
import * as Inspectable from "../Inspectable.js"
|
|
8
9
|
import * as List from "../List.js"
|
|
@@ -570,3 +571,6 @@ const prettyLoggerBrowser = (options: {
|
|
|
570
571
|
}
|
|
571
572
|
)
|
|
572
573
|
}
|
|
574
|
+
|
|
575
|
+
/** @internal */
|
|
576
|
+
export const prettyLoggerDefault = globalValue("effect/Logger/prettyLoggerDefault", () => prettyLogger())
|