effect 3.7.3 → 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.
Files changed (209) hide show
  1. package/Mailbox/package.json +6 -0
  2. package/dist/cjs/Deferred.js.map +1 -1
  3. package/dist/cjs/Duration.js +99 -35
  4. package/dist/cjs/Duration.js.map +1 -1
  5. package/dist/cjs/Effect.js +30 -3
  6. package/dist/cjs/Effect.js.map +1 -1
  7. package/dist/cjs/Fiber.js.map +1 -1
  8. package/dist/cjs/FiberRef.js.map +1 -1
  9. package/dist/cjs/Logger.js +29 -1
  10. package/dist/cjs/Logger.js.map +1 -1
  11. package/dist/cjs/Mailbox.js +95 -0
  12. package/dist/cjs/Mailbox.js.map +1 -0
  13. package/dist/cjs/MutableHashMap.js +13 -1
  14. package/dist/cjs/MutableHashMap.js.map +1 -1
  15. package/dist/cjs/Number.js +20 -1
  16. package/dist/cjs/Number.js.map +1 -1
  17. package/dist/cjs/Queue.js.map +1 -1
  18. package/dist/cjs/RcMap.js +6 -1
  19. package/dist/cjs/RcMap.js.map +1 -1
  20. package/dist/cjs/RcRef.js.map +1 -1
  21. package/dist/cjs/Ref.js.map +1 -1
  22. package/dist/cjs/Stream.js +11 -2
  23. package/dist/cjs/Stream.js.map +1 -1
  24. package/dist/cjs/SubscriptionRef.js.map +1 -1
  25. package/dist/cjs/SynchronizedRef.js.map +1 -1
  26. package/dist/cjs/index.js +4 -2
  27. package/dist/cjs/index.js.map +1 -1
  28. package/dist/cjs/internal/core.js +32 -25
  29. package/dist/cjs/internal/core.js.map +1 -1
  30. package/dist/cjs/internal/defaultServices.js +8 -5
  31. package/dist/cjs/internal/defaultServices.js.map +1 -1
  32. package/dist/cjs/internal/effect/circular.js +81 -8
  33. package/dist/cjs/internal/effect/circular.js.map +1 -1
  34. package/dist/cjs/internal/fiber.js +51 -26
  35. package/dist/cjs/internal/fiber.js.map +1 -1
  36. package/dist/cjs/internal/fiberRefs.js.map +1 -1
  37. package/dist/cjs/internal/fiberRuntime.js +126 -96
  38. package/dist/cjs/internal/fiberRuntime.js.map +1 -1
  39. package/dist/cjs/internal/groupBy.js +6 -1
  40. package/dist/cjs/internal/groupBy.js.map +1 -1
  41. package/dist/cjs/internal/layer.js +3 -3
  42. package/dist/cjs/internal/layer.js.map +1 -1
  43. package/dist/cjs/internal/logger.js +4 -1
  44. package/dist/cjs/internal/logger.js.map +1 -1
  45. package/dist/cjs/internal/mailbox.js +408 -0
  46. package/dist/cjs/internal/mailbox.js.map +1 -0
  47. package/dist/cjs/internal/managedRuntime.js +1 -1
  48. package/dist/cjs/internal/managedRuntime.js.map +1 -1
  49. package/dist/cjs/internal/pubsub.js +6 -1
  50. package/dist/cjs/internal/pubsub.js.map +1 -1
  51. package/dist/cjs/internal/queue.js +6 -1
  52. package/dist/cjs/internal/queue.js.map +1 -1
  53. package/dist/cjs/internal/rcMap.js +7 -1
  54. package/dist/cjs/internal/rcMap.js.map +1 -1
  55. package/dist/cjs/internal/rcRef.js +10 -6
  56. package/dist/cjs/internal/rcRef.js.map +1 -1
  57. package/dist/cjs/internal/ref.js +7 -7
  58. package/dist/cjs/internal/ref.js.map +1 -1
  59. package/dist/cjs/internal/runtime.js +1 -1
  60. package/dist/cjs/internal/runtime.js.map +1 -1
  61. package/dist/cjs/internal/stream.js +7 -2
  62. package/dist/cjs/internal/stream.js.map +1 -1
  63. package/dist/cjs/internal/subscriptionRef.js +7 -8
  64. package/dist/cjs/internal/subscriptionRef.js.map +1 -1
  65. package/dist/cjs/internal/version.js +1 -1
  66. package/dist/dts/Deferred.d.ts +21 -2
  67. package/dist/dts/Deferred.d.ts.map +1 -1
  68. package/dist/dts/Duration.d.ts +38 -1
  69. package/dist/dts/Duration.d.ts.map +1 -1
  70. package/dist/dts/Effect.d.ts +45 -0
  71. package/dist/dts/Effect.d.ts.map +1 -1
  72. package/dist/dts/Fiber.d.ts +69 -2
  73. package/dist/dts/Fiber.d.ts.map +1 -1
  74. package/dist/dts/FiberRef.d.ts +21 -2
  75. package/dist/dts/FiberRef.d.ts.map +1 -1
  76. package/dist/dts/Logger.d.ts +28 -0
  77. package/dist/dts/Logger.d.ts.map +1 -1
  78. package/dist/dts/Mailbox.d.ts +220 -0
  79. package/dist/dts/Mailbox.d.ts.map +1 -0
  80. package/dist/dts/MutableHashMap.d.ts +5 -0
  81. package/dist/dts/MutableHashMap.d.ts.map +1 -1
  82. package/dist/dts/Number.d.ts +19 -0
  83. package/dist/dts/Number.d.ts.map +1 -1
  84. package/dist/dts/Queue.d.ts +40 -1
  85. package/dist/dts/Queue.d.ts.map +1 -1
  86. package/dist/dts/RcMap.d.ts +5 -0
  87. package/dist/dts/RcMap.d.ts.map +1 -1
  88. package/dist/dts/RcRef.d.ts +22 -2
  89. package/dist/dts/RcRef.d.ts.map +1 -1
  90. package/dist/dts/Ref.d.ts +22 -2
  91. package/dist/dts/Ref.d.ts.map +1 -1
  92. package/dist/dts/Stream.d.ts +30 -0
  93. package/dist/dts/Stream.d.ts.map +1 -1
  94. package/dist/dts/SubscriptionRef.d.ts +20 -0
  95. package/dist/dts/SubscriptionRef.d.ts.map +1 -1
  96. package/dist/dts/SynchronizedRef.d.ts +20 -0
  97. package/dist/dts/SynchronizedRef.d.ts.map +1 -1
  98. package/dist/dts/index.d.ts +5 -0
  99. package/dist/dts/index.d.ts.map +1 -1
  100. package/dist/dts/internal/core.d.ts.map +1 -1
  101. package/dist/dts/internal/fiber.d.ts.map +1 -1
  102. package/dist/dts/internal/fiberRuntime.d.ts.map +1 -1
  103. package/dist/dts/internal/logger.d.ts.map +1 -1
  104. package/dist/dts/internal/mailbox.d.ts +2 -0
  105. package/dist/dts/internal/mailbox.d.ts.map +1 -0
  106. package/dist/dts/internal/stream.d.ts +22 -0
  107. package/dist/dts/internal/stream.d.ts.map +1 -1
  108. package/dist/esm/Deferred.js.map +1 -1
  109. package/dist/esm/Duration.js +92 -33
  110. package/dist/esm/Duration.js.map +1 -1
  111. package/dist/esm/Effect.js +27 -0
  112. package/dist/esm/Effect.js.map +1 -1
  113. package/dist/esm/Fiber.js.map +1 -1
  114. package/dist/esm/FiberRef.js.map +1 -1
  115. package/dist/esm/Logger.js +28 -0
  116. package/dist/esm/Logger.js.map +1 -1
  117. package/dist/esm/Mailbox.js +85 -0
  118. package/dist/esm/Mailbox.js.map +1 -0
  119. package/dist/esm/MutableHashMap.js +11 -0
  120. package/dist/esm/MutableHashMap.js.map +1 -1
  121. package/dist/esm/Number.js +19 -0
  122. package/dist/esm/Number.js.map +1 -1
  123. package/dist/esm/Queue.js.map +1 -1
  124. package/dist/esm/RcMap.js +5 -0
  125. package/dist/esm/RcMap.js.map +1 -1
  126. package/dist/esm/RcRef.js.map +1 -1
  127. package/dist/esm/Ref.js.map +1 -1
  128. package/dist/esm/Stream.js +9 -0
  129. package/dist/esm/Stream.js.map +1 -1
  130. package/dist/esm/SubscriptionRef.js.map +1 -1
  131. package/dist/esm/SynchronizedRef.js.map +1 -1
  132. package/dist/esm/index.js +5 -0
  133. package/dist/esm/index.js.map +1 -1
  134. package/dist/esm/internal/core.js +33 -26
  135. package/dist/esm/internal/core.js.map +1 -1
  136. package/dist/esm/internal/defaultServices.js +6 -4
  137. package/dist/esm/internal/defaultServices.js.map +1 -1
  138. package/dist/esm/internal/effect/circular.js +77 -6
  139. package/dist/esm/internal/effect/circular.js.map +1 -1
  140. package/dist/esm/internal/fiber.js +51 -26
  141. package/dist/esm/internal/fiber.js.map +1 -1
  142. package/dist/esm/internal/fiberRefs.js.map +1 -1
  143. package/dist/esm/internal/fiberRuntime.js +124 -95
  144. package/dist/esm/internal/fiberRuntime.js.map +1 -1
  145. package/dist/esm/internal/groupBy.js +6 -1
  146. package/dist/esm/internal/groupBy.js.map +1 -1
  147. package/dist/esm/internal/layer.js +3 -3
  148. package/dist/esm/internal/layer.js.map +1 -1
  149. package/dist/esm/internal/logger.js +3 -0
  150. package/dist/esm/internal/logger.js.map +1 -1
  151. package/dist/esm/internal/mailbox.js +395 -0
  152. package/dist/esm/internal/mailbox.js.map +1 -0
  153. package/dist/esm/internal/managedRuntime.js +1 -1
  154. package/dist/esm/internal/managedRuntime.js.map +1 -1
  155. package/dist/esm/internal/pubsub.js +6 -1
  156. package/dist/esm/internal/pubsub.js.map +1 -1
  157. package/dist/esm/internal/queue.js +6 -1
  158. package/dist/esm/internal/queue.js.map +1 -1
  159. package/dist/esm/internal/rcMap.js +5 -0
  160. package/dist/esm/internal/rcMap.js.map +1 -1
  161. package/dist/esm/internal/rcRef.js +10 -6
  162. package/dist/esm/internal/rcRef.js.map +1 -1
  163. package/dist/esm/internal/ref.js +7 -7
  164. package/dist/esm/internal/ref.js.map +1 -1
  165. package/dist/esm/internal/runtime.js +1 -1
  166. package/dist/esm/internal/runtime.js.map +1 -1
  167. package/dist/esm/internal/stream.js +5 -0
  168. package/dist/esm/internal/stream.js.map +1 -1
  169. package/dist/esm/internal/subscriptionRef.js +7 -8
  170. package/dist/esm/internal/subscriptionRef.js.map +1 -1
  171. package/dist/esm/internal/version.js +1 -1
  172. package/package.json +9 -1
  173. package/src/Deferred.ts +21 -2
  174. package/src/Duration.ts +112 -35
  175. package/src/Effect.ts +52 -0
  176. package/src/Fiber.ts +78 -2
  177. package/src/FiberRef.ts +21 -2
  178. package/src/Logger.ts +30 -0
  179. package/src/Mailbox.ts +236 -0
  180. package/src/MutableHashMap.ts +12 -0
  181. package/src/Number.ts +23 -0
  182. package/src/Queue.ts +42 -1
  183. package/src/RcMap.ts +6 -0
  184. package/src/RcRef.ts +24 -2
  185. package/src/Ref.ts +22 -2
  186. package/src/Stream.ts +36 -0
  187. package/src/SubscriptionRef.ts +22 -0
  188. package/src/SynchronizedRef.ts +20 -0
  189. package/src/index.ts +6 -0
  190. package/src/internal/core.ts +31 -28
  191. package/src/internal/defaultServices.ts +9 -10
  192. package/src/internal/effect/circular.ts +83 -6
  193. package/src/internal/fiber.ts +56 -29
  194. package/src/internal/fiberRefs.ts +1 -2
  195. package/src/internal/fiberRuntime.ts +133 -102
  196. package/src/internal/groupBy.ts +7 -1
  197. package/src/internal/layer.ts +3 -3
  198. package/src/internal/logger.ts +4 -0
  199. package/src/internal/mailbox.ts +461 -0
  200. package/src/internal/managedRuntime.ts +1 -1
  201. package/src/internal/pubsub.ts +9 -2
  202. package/src/internal/queue.ts +7 -1
  203. package/src/internal/rcMap.ts +8 -0
  204. package/src/internal/rcRef.ts +10 -6
  205. package/src/internal/ref.ts +7 -7
  206. package/src/internal/runtime.ts +1 -1
  207. package/src/internal/stream.ts +53 -0
  208. package/src/internal/subscriptionRef.ts +7 -8
  209. package/src/internal/version.ts +1 -1
@@ -4,7 +4,7 @@ import * as Boolean from "../Boolean.js";
4
4
  import * as Chunk from "../Chunk.js";
5
5
  import * as Context from "../Context.js";
6
6
  import * as Deferred from "../Deferred.js";
7
- import { EffectTypeId } from "../Effectable.js";
7
+ import * as Effectable from "../Effectable.js";
8
8
  import * as ExecutionStrategy from "../ExecutionStrategy.js";
9
9
  import * as FiberId from "../FiberId.js";
10
10
  import * as FiberRefs from "../FiberRefs.js";
@@ -102,8 +102,8 @@ const contOpSuccess = {
102
102
  return internalCall(() => cont.effect_instruction_i2(value));
103
103
  },
104
104
  [OpCodes.OP_REVERT_FLAGS]: (self, cont, value) => {
105
- self.patchRuntimeFlags(self._runtimeFlags, cont.patch);
106
- if (_runtimeFlags.interruptible(self._runtimeFlags) && self.isInterrupted()) {
105
+ self.patchRuntimeFlags(self.currentRuntimeFlags, cont.patch);
106
+ if (_runtimeFlags.interruptible(self.currentRuntimeFlags) && self.isInterrupted()) {
107
107
  return core.exitFailCause(self.getInterruptedCause());
108
108
  } else {
109
109
  return core.exitSucceed(value);
@@ -153,15 +153,11 @@ const runBlockedRequests = self => core.forEachSequentialDiscard(_RequestBlock.f
153
153
  })), currentRequestMap, map);
154
154
  }, false, false));
155
155
  /** @internal */
156
- export class FiberRuntime {
156
+ export class FiberRuntime extends Effectable.Class {
157
157
  [internalFiber.FiberTypeId] = internalFiber.fiberVariance;
158
158
  [internalFiber.RuntimeFiberTypeId] = runtimeFiberVariance;
159
- pipe() {
160
- return pipeArguments(this, arguments);
161
- }
162
159
  _fiberRefs;
163
160
  _fiberId;
164
- _runtimeFlags;
165
161
  _queue = /*#__PURE__*/new Array();
166
162
  _children = null;
167
163
  _observers = /*#__PURE__*/new Array();
@@ -171,23 +167,29 @@ export class FiberRuntime {
171
167
  _asyncBlockingOn = null;
172
168
  _exitValue = null;
173
169
  _steps = [];
174
- _supervisor;
175
- _scheduler;
176
- _tracer;
170
+ _isYielding = false;
171
+ currentRuntimeFlags;
177
172
  currentOpCount = 0;
178
- isYielding = false;
173
+ currentSupervisor;
174
+ currentScheduler;
175
+ currentTracer;
176
+ currentSpan;
177
+ currentContext;
178
+ currentDefaultServices;
179
179
  constructor(fiberId, fiberRefs0, runtimeFlags0) {
180
- this._runtimeFlags = runtimeFlags0;
180
+ super();
181
+ this.currentRuntimeFlags = runtimeFlags0;
181
182
  this._fiberId = fiberId;
182
183
  this._fiberRefs = fiberRefs0;
183
- this._supervisor = this.getFiberRef(currentSupervisor);
184
- this._scheduler = this.getFiberRef(currentScheduler);
185
184
  if (_runtimeFlags.runtimeMetrics(runtimeFlags0)) {
186
185
  const tags = this.getFiberRef(core.currentMetricLabels);
187
186
  fiberStarted.unsafeUpdate(1, tags);
188
187
  fiberActive.unsafeUpdate(1, tags);
189
188
  }
190
- this._tracer = Context.get(this.getFiberRef(defaultServices.currentServices), tracer.tracerTag);
189
+ this.refreshRefCache();
190
+ }
191
+ commit() {
192
+ return internalFiber.join(this);
191
193
  }
192
194
  /**
193
195
  * The identity of the fiber.
@@ -215,7 +217,7 @@ export class FiberRuntime {
215
217
  get runtimeFlags() {
216
218
  return this.ask((state, status) => {
217
219
  if (FiberStatus.isDone(status)) {
218
- return state._runtimeFlags;
220
+ return state.currentRuntimeFlags;
219
221
  }
220
222
  return status.runtimeFlags;
221
223
  });
@@ -369,7 +371,7 @@ export class FiberRuntime {
369
371
  * log annotations and log level) may not be up-to-date.
370
372
  */
371
373
  getFiberRefs() {
372
- this.setFiberRef(currentRuntimeFlags, this._runtimeFlags);
374
+ this.setFiberRef(currentRuntimeFlags, this.currentRuntimeFlags);
373
375
  return this._fiberRefs;
374
376
  }
375
377
  /**
@@ -407,9 +409,12 @@ export class FiberRuntime {
407
409
  this.refreshRefCache();
408
410
  }
409
411
  refreshRefCache() {
410
- this._tracer = Context.get(this.getFiberRef(defaultServices.currentServices), tracer.tracerTag);
411
- this._supervisor = this.getFiberRef(currentSupervisor);
412
- this._scheduler = this.getFiberRef(currentScheduler);
412
+ this.currentDefaultServices = this.getFiberRef(defaultServices.currentServices);
413
+ this.currentTracer = this.currentDefaultServices.unsafeMap.get(tracer.tracerTag.key);
414
+ this.currentSupervisor = this.getFiberRef(currentSupervisor);
415
+ this.currentScheduler = this.getFiberRef(currentScheduler);
416
+ this.currentContext = this.getFiberRef(core.currentContext);
417
+ this.currentSpan = this.currentContext.unsafeMap.get(tracer.spanTag.key);
413
418
  }
414
419
  /**
415
420
  * Wholesale replaces all fiber refs of this fiber.
@@ -483,7 +488,7 @@ export class FiberRuntime {
483
488
  * **NOTE**: This method must be invoked by the fiber itself.
484
489
  */
485
490
  drainQueueLaterOnExecutor() {
486
- this._scheduler.scheduleTask(this.run, this.getFiberRef(core.currentSchedulingPriority));
491
+ this.currentScheduler.scheduleTask(this.run, this.getFiberRef(core.currentSchedulingPriority));
487
492
  }
488
493
  /**
489
494
  * Drains the fiber's message queue while the fiber is actively running,
@@ -581,7 +586,7 @@ export class FiberRuntime {
581
586
  return null;
582
587
  }
583
588
  reportExitValue(exit) {
584
- if (_runtimeFlags.runtimeMetrics(this._runtimeFlags)) {
589
+ if (_runtimeFlags.runtimeMetrics(this.currentRuntimeFlags)) {
585
590
  const tags = this.getFiberRef(core.currentMetricLabels);
586
591
  const startTimeMillis = this.id().startTimeMillis;
587
592
  const endTimeMillis = Date.now();
@@ -675,7 +680,7 @@ export class FiberRuntime {
675
680
  }
676
681
  case FiberMessage.OP_STATEFUL:
677
682
  {
678
- message.onFiber(this, this._exitValue !== null ? FiberStatus.done : FiberStatus.suspended(this._runtimeFlags, this._asyncBlockingOn));
683
+ message.onFiber(this, this._exitValue !== null ? FiberStatus.done : FiberStatus.suspended(this.currentRuntimeFlags, this._asyncBlockingOn));
679
684
  return EvaluationSignalContinue;
680
685
  }
681
686
  default:
@@ -690,9 +695,9 @@ export class FiberRuntime {
690
695
  * **NOTE**: This method must be invoked by the fiber itself.
691
696
  */
692
697
  evaluateEffect(effect0) {
693
- this._supervisor.onResume(this);
698
+ this.currentSupervisor.onResume(this);
694
699
  try {
695
- let effect = _runtimeFlags.interruptible(this._runtimeFlags) && this.isInterrupted() ? core.exitFailCause(this.getInterruptedCause()) : effect0;
700
+ let effect = _runtimeFlags.interruptible(this.currentRuntimeFlags) && this.isInterrupted() ? core.exitFailCause(this.getInterruptedCause()) : effect0;
696
701
  while (effect !== null) {
697
702
  const eff = effect;
698
703
  const exit = this.runLoop(eff);
@@ -700,7 +705,7 @@ export class FiberRuntime {
700
705
  const op = yieldedOpChannel.currentOp;
701
706
  yieldedOpChannel.currentOp = null;
702
707
  if (op._op === OpCodes.OP_YIELD) {
703
- if (_runtimeFlags.cooperativeYielding(this._runtimeFlags)) {
708
+ if (_runtimeFlags.cooperativeYielding(this.currentRuntimeFlags)) {
704
709
  this.tell(FiberMessage.yieldNow());
705
710
  this.tell(FiberMessage.resume(core.exitVoid));
706
711
  effect = null;
@@ -712,7 +717,7 @@ export class FiberRuntime {
712
717
  effect = null;
713
718
  }
714
719
  } else {
715
- this._runtimeFlags = pipe(this._runtimeFlags, _runtimeFlags.enable(_runtimeFlags.WindDown));
720
+ this.currentRuntimeFlags = pipe(this.currentRuntimeFlags, _runtimeFlags.enable(_runtimeFlags.WindDown));
716
721
  const interruption = this.interruptAllChildren();
717
722
  if (interruption !== null) {
718
723
  effect = core.flatMap(interruption, () => exit);
@@ -731,7 +736,7 @@ export class FiberRuntime {
731
736
  }
732
737
  }
733
738
  } finally {
734
- this._supervisor.onSuspend(this);
739
+ this.currentSupervisor.onSuspend(this);
735
740
  }
736
741
  }
737
742
  /**
@@ -783,7 +788,7 @@ export class FiberRuntime {
783
788
  patchRuntimeFlags(oldRuntimeFlags, patch) {
784
789
  const newRuntimeFlags = _runtimeFlags.patch(oldRuntimeFlags, patch);
785
790
  globalThis[internalFiber.currentFiberURI] = this;
786
- this._runtimeFlags = newRuntimeFlags;
791
+ this.currentRuntimeFlags = newRuntimeFlags;
787
792
  return newRuntimeFlags;
788
793
  }
789
794
  /**
@@ -815,7 +820,7 @@ export class FiberRuntime {
815
820
  if (cont._op === "OnStep") {
816
821
  this._steps.push({
817
822
  refs: this.getFiberRefs(),
818
- flags: this._runtimeFlags
823
+ flags: this.currentRuntimeFlags
819
824
  });
820
825
  }
821
826
  }
@@ -848,7 +853,7 @@ export class FiberRuntime {
848
853
  }
849
854
  }
850
855
  [OpCodes.OP_TAG](op) {
851
- return core.map(core.fiberRefGet(core.currentContext), context => Context.unsafeGet(context, op));
856
+ return core.sync(() => Context.unsafeGet(this.currentContext, op));
852
857
  }
853
858
  ["Left"](op) {
854
859
  return core.fail(op.left);
@@ -931,7 +936,7 @@ export class FiberRuntime {
931
936
  case OpCodes.OP_ON_FAILURE:
932
937
  case OpCodes.OP_ON_SUCCESS_AND_FAILURE:
933
938
  {
934
- if (!(_runtimeFlags.interruptible(this._runtimeFlags) && this.isInterrupted())) {
939
+ if (!(_runtimeFlags.interruptible(this.currentRuntimeFlags) && this.isInterrupted())) {
935
940
  return internalCall(() => cont.effect_instruction_i1(cause));
936
941
  } else {
937
942
  return core.exitFailCause(internalCause.stripFailures(cause));
@@ -939,7 +944,7 @@ export class FiberRuntime {
939
944
  }
940
945
  case "OnStep":
941
946
  {
942
- if (!(_runtimeFlags.interruptible(this._runtimeFlags) && this.isInterrupted())) {
947
+ if (!(_runtimeFlags.interruptible(this.currentRuntimeFlags) && this.isInterrupted())) {
943
948
  return core.exitSucceed(core.exitFailCause(cause));
944
949
  } else {
945
950
  return core.exitFailCause(internalCause.stripFailures(cause));
@@ -947,8 +952,8 @@ export class FiberRuntime {
947
952
  }
948
953
  case OpCodes.OP_REVERT_FLAGS:
949
954
  {
950
- this.patchRuntimeFlags(this._runtimeFlags, cont.patch);
951
- if (_runtimeFlags.interruptible(this._runtimeFlags) && this.isInterrupted()) {
955
+ this.patchRuntimeFlags(this.currentRuntimeFlags, cont.patch);
956
+ if (_runtimeFlags.interruptible(this.currentRuntimeFlags) && this.isInterrupted()) {
952
957
  return core.exitFailCause(internalCause.sequential(cause, this.getInterruptedCause()));
953
958
  } else {
954
959
  return core.exitFailCause(cause);
@@ -965,11 +970,11 @@ export class FiberRuntime {
965
970
  }
966
971
  }
967
972
  [OpCodes.OP_WITH_RUNTIME](op) {
968
- return internalCall(() => op.effect_instruction_i0(this, FiberStatus.running(this._runtimeFlags)));
973
+ return internalCall(() => op.effect_instruction_i0(this, FiberStatus.running(this.currentRuntimeFlags)));
969
974
  }
970
975
  ["Blocked"](op) {
971
976
  const refs = this.getFiberRefs();
972
- const flags = this._runtimeFlags;
977
+ const flags = this.currentRuntimeFlags;
973
978
  if (this._steps.length > 0) {
974
979
  const frames = [];
975
980
  const snap = this._steps[this._steps.length - 1];
@@ -979,7 +984,7 @@ export class FiberRuntime {
979
984
  frame = this.popStack();
980
985
  }
981
986
  this.setFiberRefs(snap.refs);
982
- this._runtimeFlags = snap.flags;
987
+ this.currentRuntimeFlags = snap.flags;
983
988
  const patchRefs = FiberRefsPatch.diff(snap.refs, refs);
984
989
  const patchFlags = _runtimeFlags.diff(snap.flags, flags);
985
990
  return core.exitSucceed(core.blocked(op.effect_instruction_i0, core.withFiberRuntime(newFiber => {
@@ -987,7 +992,7 @@ export class FiberRuntime {
987
992
  newFiber.pushStack(frames.pop());
988
993
  }
989
994
  newFiber.setFiberRefs(FiberRefsPatch.patch(newFiber.id(), newFiber.getFiberRefs())(patchRefs));
990
- newFiber._runtimeFlags = _runtimeFlags.patch(patchFlags)(newFiber._runtimeFlags);
995
+ newFiber.currentRuntimeFlags = _runtimeFlags.patch(patchFlags)(newFiber.currentRuntimeFlags);
991
996
  return op.effect_instruction_i1;
992
997
  })));
993
998
  }
@@ -998,7 +1003,7 @@ export class FiberRuntime {
998
1003
  }
999
1004
  [OpCodes.OP_UPDATE_RUNTIME_FLAGS](op) {
1000
1005
  const updateFlags = op.effect_instruction_i0;
1001
- const oldRuntimeFlags = this._runtimeFlags;
1006
+ const oldRuntimeFlags = this.currentRuntimeFlags;
1002
1007
  const newRuntimeFlags = _runtimeFlags.patch(oldRuntimeFlags, updateFlags);
1003
1008
  // One more chance to short circuit: if we're immediately going
1004
1009
  // to interrupt. Interruption will cause immediate reversion of
@@ -1008,7 +1013,7 @@ export class FiberRuntime {
1008
1013
  return core.exitFailCause(this.getInterruptedCause());
1009
1014
  } else {
1010
1015
  // Impossible to short circuit, so record the changes
1011
- this.patchRuntimeFlags(this._runtimeFlags, updateFlags);
1016
+ this.patchRuntimeFlags(this.currentRuntimeFlags, updateFlags);
1012
1017
  if (op.effect_instruction_i1) {
1013
1018
  // Since we updated the flags, we need to revert them
1014
1019
  const revertFlags = _runtimeFlags.diff(newRuntimeFlags, oldRuntimeFlags);
@@ -1037,12 +1042,12 @@ export class FiberRuntime {
1037
1042
  }
1038
1043
  [OpCodes.OP_ASYNC](op) {
1039
1044
  this._asyncBlockingOn = op.effect_instruction_i1;
1040
- this.initiateAsync(this._runtimeFlags, op.effect_instruction_i0);
1045
+ this.initiateAsync(this.currentRuntimeFlags, op.effect_instruction_i0);
1041
1046
  yieldedOpChannel.currentOp = op;
1042
1047
  return YieldedOp;
1043
1048
  }
1044
1049
  [OpCodes.OP_YIELD](op) {
1045
- this.isYielding = false;
1050
+ this._isYielding = false;
1046
1051
  yieldedOpChannel.currentOp = op;
1047
1052
  return YieldedOp;
1048
1053
  }
@@ -1068,17 +1073,17 @@ export class FiberRuntime {
1068
1073
  let cur = effect0;
1069
1074
  this.currentOpCount = 0;
1070
1075
  while (true) {
1071
- if ((this._runtimeFlags & OpSupervision) !== 0) {
1072
- this._supervisor.onEffect(this, cur);
1076
+ if ((this.currentRuntimeFlags & OpSupervision) !== 0) {
1077
+ this.currentSupervisor.onEffect(this, cur);
1073
1078
  }
1074
1079
  if (this._queue.length > 0) {
1075
- cur = this.drainQueueWhileRunning(this._runtimeFlags, cur);
1080
+ cur = this.drainQueueWhileRunning(this.currentRuntimeFlags, cur);
1076
1081
  }
1077
- if (!this.isYielding) {
1082
+ if (!this._isYielding) {
1078
1083
  this.currentOpCount += 1;
1079
- const shouldYield = this._scheduler.shouldYield(this);
1084
+ const shouldYield = this.currentScheduler.shouldYield(this);
1080
1085
  if (shouldYield !== false) {
1081
- this.isYielding = true;
1086
+ this._isYielding = true;
1082
1087
  this.currentOpCount = 0;
1083
1088
  const oldCur = cur;
1084
1089
  cur = core.flatMap(core.yieldNow({
@@ -1092,9 +1097,9 @@ export class FiberRuntime {
1092
1097
  absurd(cur);
1093
1098
  }
1094
1099
  // @ts-expect-error
1095
- cur = this._tracer.context(() => {
1096
- if (version.getCurrentVersion() !== cur[EffectTypeId]._V) {
1097
- return core.dieMessage(`Cannot execute an Effect versioned ${cur[EffectTypeId]._V} with a Runtime of version ${version.getCurrentVersion()}`);
1100
+ cur = this.currentTracer.context(() => {
1101
+ if (version.getCurrentVersion() !== cur[core.EffectTypeId]._V) {
1102
+ return core.dieMessage(`Cannot execute an Effect versioned ${cur[core.EffectTypeId]._V} with a Runtime of version ${version.getCurrentVersion()}`);
1098
1103
  }
1099
1104
  // @ts-expect-error
1100
1105
  return this[cur._op](cur);
@@ -1131,6 +1136,26 @@ export const loggerWithConsoleLog = self => internalLogger.makeLogger(opts => {
1131
1136
  Context.get(services, consoleTag).unsafe.log(self.log(opts));
1132
1137
  });
1133
1138
  /** @internal */
1139
+ export const loggerWithLeveledLog = self => internalLogger.makeLogger(opts => {
1140
+ const services = FiberRefs.getOrDefault(opts.context, defaultServices.currentServices);
1141
+ const unsafeLogger = Context.get(services, consoleTag).unsafe;
1142
+ switch (opts.logLevel._tag) {
1143
+ case "Debug":
1144
+ return unsafeLogger.debug(self.log(opts));
1145
+ case "Info":
1146
+ return unsafeLogger.info(self.log(opts));
1147
+ case "Trace":
1148
+ return unsafeLogger.trace(self.log(opts));
1149
+ case "Warning":
1150
+ return unsafeLogger.warn(self.log(opts));
1151
+ case "Error":
1152
+ case "Fatal":
1153
+ return unsafeLogger.error(self.log(opts));
1154
+ default:
1155
+ return unsafeLogger.log(self.log(opts));
1156
+ }
1157
+ });
1158
+ /** @internal */
1134
1159
  export const loggerWithConsoleError = self => internalLogger.makeLogger(opts => {
1135
1160
  const services = FiberRefs.getOrDefault(opts.context, defaultServices.currentServices);
1136
1161
  Context.get(services, consoleTag).unsafe.error(self.log(opts));
@@ -1142,7 +1167,7 @@ export const jsonLogger = /*#__PURE__*/globalValue( /*#__PURE__*/Symbol.for("eff
1142
1167
  /** @internal */
1143
1168
  export const logFmtLogger = /*#__PURE__*/globalValue( /*#__PURE__*/Symbol.for("effect/Logger/logFmtLogger"), () => loggerWithConsoleLog(internalLogger.logfmtLogger));
1144
1169
  /** @internal */
1145
- export const prettyLogger = /*#__PURE__*/globalValue( /*#__PURE__*/Symbol.for("effect/Logger/prettyLogger"), () => internalLogger.prettyLogger());
1170
+ export const prettyLogger = /*#__PURE__*/globalValue( /*#__PURE__*/Symbol.for("effect/Logger/prettyLogger"), () => internalLogger.prettyLoggerDefault);
1146
1171
  /** @internal */
1147
1172
  export const structuredLogger = /*#__PURE__*/globalValue( /*#__PURE__*/Symbol.for("effect/Logger/structuredLogger"), () => loggerWithConsoleLog(internalLogger.structuredLogger));
1148
1173
  /** @internal */
@@ -1216,10 +1241,10 @@ export const acquireReleaseInterruptible = /*#__PURE__*/dual(args => core.isEffe
1216
1241
  /* @internal */
1217
1242
  export const addFinalizer = finalizer => core.withFiberRuntime(runtime => {
1218
1243
  const acquireRefs = runtime.getFiberRefs();
1219
- const acquireFlags = runtime._runtimeFlags;
1244
+ const acquireFlags = runtime.currentRuntimeFlags;
1220
1245
  return core.flatMap(scope, scope => core.scopeAddFinalizerExit(scope, exit => core.withFiberRuntime(runtimeFinalizer => {
1221
1246
  const preRefs = runtimeFinalizer.getFiberRefs();
1222
- const preFlags = runtimeFinalizer._runtimeFlags;
1247
+ const preFlags = runtimeFinalizer.currentRuntimeFlags;
1223
1248
  const patchRefs = FiberRefsPatch.diff(preRefs, acquireRefs);
1224
1249
  const patchFlags = _runtimeFlags.diff(preFlags, acquireFlags);
1225
1250
  const inverseRefs = FiberRefsPatch.diff(acquireRefs, preRefs);
@@ -1369,7 +1394,7 @@ export const forEachConcurrentDiscard = (self, f, batching, processAll, n) => co
1369
1394
  const fibers = new Set();
1370
1395
  const results = new Array();
1371
1396
  const interruptAll = () => fibers.forEach(fiber => {
1372
- fiber._scheduler.scheduleTask(() => {
1397
+ fiber.currentScheduler.scheduleTask(() => {
1373
1398
  fiber.unsafeInterruptAsFork(parent.id());
1374
1399
  }, 0);
1375
1400
  });
@@ -1389,8 +1414,8 @@ export const forEachConcurrentDiscard = (self, f, batching, processAll, n) => co
1389
1414
  };
1390
1415
  const runFiber = (eff, interruptImmediately = false) => {
1391
1416
  const runnable = core.uninterruptible(graft(eff));
1392
- const fiber = unsafeForkUnstarted(runnable, parent, parent._runtimeFlags, fiberScope.globalScope);
1393
- parent._scheduler.scheduleTask(() => {
1417
+ const fiber = unsafeForkUnstarted(runnable, parent, parent.currentRuntimeFlags, fiberScope.globalScope);
1418
+ parent.currentScheduler.scheduleTask(() => {
1394
1419
  if (interruptImmediately) {
1395
1420
  fiber.unsafeInterruptAsFork(parent.id());
1396
1421
  }
@@ -1444,7 +1469,7 @@ export const forEachConcurrentDiscard = (self, f, batching, processAll, n) => co
1444
1469
  startOrder.push(fiber);
1445
1470
  fibers.add(fiber);
1446
1471
  if (interrupted) {
1447
- fiber._scheduler.scheduleTask(() => {
1472
+ fiber.currentScheduler.scheduleTask(() => {
1448
1473
  fiber.unsafeInterruptAsFork(parent.id());
1449
1474
  }, 0);
1450
1475
  }
@@ -1552,7 +1577,7 @@ export const unsafeMakeChildFiber = (effect, parentFiber, parentRuntimeFlags, ov
1552
1577
  const childFiberRefs = fiberRefs.forkAs(parentFiberRefs, childId);
1553
1578
  const childFiber = new FiberRuntime(childId, childFiberRefs, parentRuntimeFlags);
1554
1579
  const childContext = fiberRefs.getOrDefault(childFiberRefs, core.currentContext);
1555
- const supervisor = childFiber._supervisor;
1580
+ const supervisor = childFiber.currentSupervisor;
1556
1581
  supervisor.onStart(childContext, effect, Option.some(parentFiber), childFiber);
1557
1582
  childFiber.addObserver(exit => supervisor.onEnd(exit, childFiber));
1558
1583
  const parentScope = overrideScope !== null ? overrideScope : pipe(parentFiber.getFiberRef(core.currentForkScopeOverride), Option.getOrElse(() => parentFiber.scope()));
@@ -1837,41 +1862,45 @@ export const currentSupervisor = /*#__PURE__*/fiberRefUnsafeMakeSupervisor(super
1837
1862
  /* @internal */
1838
1863
  export const fiberAwaitAll = fibers => forEach(fibers, internalFiber._await);
1839
1864
  /** @internal */
1840
- export const fiberAll = fibers => ({
1841
- [internalFiber.FiberTypeId]: internalFiber.fiberVariance,
1842
- id: () => RA.fromIterable(fibers).reduce((id, fiber) => FiberId.combine(id, fiber.id()), FiberId.none),
1843
- await: core.exit(forEachParUnbounded(fibers, fiber => core.flatten(fiber.await), false)),
1844
- children: core.map(forEachParUnbounded(fibers, fiber => fiber.children, false), RA.flatten),
1845
- inheritAll: core.forEachSequentialDiscard(fibers, fiber => fiber.inheritAll),
1846
- poll: core.map(core.forEachSequential(fibers, fiber => fiber.poll), RA.reduceRight(Option.some(core.exitSucceed(new Array())), (optionB, optionA) => {
1847
- switch (optionA._tag) {
1848
- case "None":
1849
- {
1850
- return Option.none();
1851
- }
1852
- case "Some":
1853
- {
1854
- switch (optionB._tag) {
1855
- case "None":
1856
- {
1857
- return Option.none();
1858
- }
1859
- case "Some":
1860
- {
1861
- return Option.some(core.exitZipWith(optionA.value, optionB.value, {
1862
- onSuccess: (a, chunk) => [a, ...chunk],
1863
- onFailure: internalCause.parallel
1864
- }));
1865
- }
1865
+ export const fiberAll = fibers => {
1866
+ const _fiberAll = {
1867
+ ...Effectable.CommitPrototype,
1868
+ commit() {
1869
+ return internalFiber.join(this);
1870
+ },
1871
+ [internalFiber.FiberTypeId]: internalFiber.fiberVariance,
1872
+ id: () => RA.fromIterable(fibers).reduce((id, fiber) => FiberId.combine(id, fiber.id()), FiberId.none),
1873
+ await: core.exit(forEachParUnbounded(fibers, fiber => core.flatten(fiber.await), false)),
1874
+ children: core.map(forEachParUnbounded(fibers, fiber => fiber.children, false), RA.flatten),
1875
+ inheritAll: core.forEachSequentialDiscard(fibers, fiber => fiber.inheritAll),
1876
+ poll: core.map(core.forEachSequential(fibers, fiber => fiber.poll), RA.reduceRight(Option.some(core.exitSucceed(new Array())), (optionB, optionA) => {
1877
+ switch (optionA._tag) {
1878
+ case "None":
1879
+ {
1880
+ return Option.none();
1866
1881
  }
1867
- }
1868
- }
1869
- })),
1870
- interruptAsFork: fiberId => core.forEachSequentialDiscard(fibers, fiber => fiber.interruptAsFork(fiberId)),
1871
- pipe() {
1872
- return pipeArguments(this, arguments);
1873
- }
1874
- });
1882
+ case "Some":
1883
+ {
1884
+ switch (optionB._tag) {
1885
+ case "None":
1886
+ {
1887
+ return Option.none();
1888
+ }
1889
+ case "Some":
1890
+ {
1891
+ return Option.some(core.exitZipWith(optionA.value, optionB.value, {
1892
+ onSuccess: (a, chunk) => [a, ...chunk],
1893
+ onFailure: internalCause.parallel
1894
+ }));
1895
+ }
1896
+ }
1897
+ }
1898
+ }
1899
+ })),
1900
+ interruptAsFork: fiberId => core.forEachSequentialDiscard(fibers, fiber => fiber.interruptAsFork(fiberId))
1901
+ };
1902
+ return _fiberAll;
1903
+ };
1875
1904
  /* @internal */
1876
1905
  export const fiberInterruptFork = self => core.asVoid(forkDaemon(core.interruptFiber(self)));
1877
1906
  /* @internal */