effect 2.4.17 → 2.4.19

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 (136) hide show
  1. package/Readable/package.json +6 -0
  2. package/RegExp/package.json +6 -0
  3. package/Subscribable/package.json +6 -0
  4. package/dist/cjs/Duration.js +39 -2
  5. package/dist/cjs/Duration.js.map +1 -1
  6. package/dist/cjs/List.js +5 -4
  7. package/dist/cjs/List.js.map +1 -1
  8. package/dist/cjs/Logger.js +11 -1
  9. package/dist/cjs/Logger.js.map +1 -1
  10. package/dist/cjs/Readable.js +79 -0
  11. package/dist/cjs/Readable.js.map +1 -0
  12. package/dist/cjs/RegExp.js +24 -0
  13. package/dist/cjs/RegExp.js.map +1 -0
  14. package/dist/cjs/Subscribable.js +91 -0
  15. package/dist/cjs/Subscribable.js.map +1 -0
  16. package/dist/cjs/SubscriptionRef.js.map +1 -1
  17. package/dist/cjs/TestAnnotation.js +2 -1
  18. package/dist/cjs/TestAnnotation.js.map +1 -1
  19. package/dist/cjs/index.js +8 -2
  20. package/dist/cjs/index.js.map +1 -1
  21. package/dist/cjs/internal/cause.js +3 -2
  22. package/dist/cjs/internal/cause.js.map +1 -1
  23. package/dist/cjs/internal/configProvider.js +2 -2
  24. package/dist/cjs/internal/configProvider.js.map +1 -1
  25. package/dist/cjs/internal/core-effect.js +28 -14
  26. package/dist/cjs/internal/core-effect.js.map +1 -1
  27. package/dist/cjs/internal/core.js +16 -85
  28. package/dist/cjs/internal/core.js.map +1 -1
  29. package/dist/cjs/internal/effect/circular.js +5 -0
  30. package/dist/cjs/internal/effect/circular.js.map +1 -1
  31. package/dist/cjs/internal/errors.js +13 -0
  32. package/dist/cjs/internal/errors.js.map +1 -0
  33. package/dist/cjs/internal/fiberRuntime.js +94 -61
  34. package/dist/cjs/internal/fiberRuntime.js.map +1 -1
  35. package/dist/cjs/internal/hashMap.js +1 -1
  36. package/dist/cjs/internal/hashMap.js.map +1 -1
  37. package/dist/cjs/internal/matcher.js +5 -4
  38. package/dist/cjs/internal/matcher.js.map +1 -1
  39. package/dist/cjs/internal/ref.js +6 -1
  40. package/dist/cjs/internal/ref.js.map +1 -1
  41. package/dist/cjs/internal/schedule/intervals.js +2 -1
  42. package/dist/cjs/internal/schedule/intervals.js.map +1 -1
  43. package/dist/cjs/internal/subscriptionRef.js +8 -0
  44. package/dist/cjs/internal/subscriptionRef.js.map +1 -1
  45. package/dist/cjs/internal/trie.js +1 -1
  46. package/dist/cjs/internal/trie.js.map +1 -1
  47. package/dist/cjs/internal/version.js +1 -1
  48. package/dist/dts/Duration.d.ts +16 -0
  49. package/dist/dts/Duration.d.ts.map +1 -1
  50. package/dist/dts/List.d.ts.map +1 -1
  51. package/dist/dts/Logger.d.ts +10 -0
  52. package/dist/dts/Logger.d.ts.map +1 -1
  53. package/dist/dts/Readable.d.ts +55 -0
  54. package/dist/dts/Readable.d.ts.map +1 -0
  55. package/dist/dts/Ref.d.ts +2 -2
  56. package/dist/dts/Ref.d.ts.map +1 -1
  57. package/dist/dts/RegExp.d.ts +17 -0
  58. package/dist/dts/RegExp.d.ts.map +1 -0
  59. package/dist/dts/Subscribable.d.ts +59 -0
  60. package/dist/dts/Subscribable.d.ts.map +1 -0
  61. package/dist/dts/SubscriptionRef.d.ts +2 -2
  62. package/dist/dts/SubscriptionRef.d.ts.map +1 -1
  63. package/dist/dts/TestAnnotation.d.ts.map +1 -1
  64. package/dist/dts/index.d.ts +14 -0
  65. package/dist/dts/index.d.ts.map +1 -1
  66. package/dist/dts/internal/errors.d.ts +5 -0
  67. package/dist/dts/internal/errors.d.ts.map +1 -0
  68. package/dist/esm/Duration.js +38 -1
  69. package/dist/esm/Duration.js.map +1 -1
  70. package/dist/esm/List.js +4 -3
  71. package/dist/esm/List.js.map +1 -1
  72. package/dist/esm/Logger.js +10 -0
  73. package/dist/esm/Logger.js.map +1 -1
  74. package/dist/esm/Readable.js +45 -0
  75. package/dist/esm/Readable.js.map +1 -0
  76. package/dist/esm/RegExp.js +17 -0
  77. package/dist/esm/RegExp.js.map +1 -0
  78. package/dist/esm/Subscribable.js +56 -0
  79. package/dist/esm/Subscribable.js.map +1 -0
  80. package/dist/esm/SubscriptionRef.js.map +1 -1
  81. package/dist/esm/TestAnnotation.js +2 -1
  82. package/dist/esm/TestAnnotation.js.map +1 -1
  83. package/dist/esm/index.js +14 -0
  84. package/dist/esm/index.js.map +1 -1
  85. package/dist/esm/internal/cause.js +3 -2
  86. package/dist/esm/internal/cause.js.map +1 -1
  87. package/dist/esm/internal/configProvider.js +2 -2
  88. package/dist/esm/internal/configProvider.js.map +1 -1
  89. package/dist/esm/internal/core-effect.js +25 -12
  90. package/dist/esm/internal/core-effect.js.map +1 -1
  91. package/dist/esm/internal/core.js +13 -82
  92. package/dist/esm/internal/core.js.map +1 -1
  93. package/dist/esm/internal/effect/circular.js +5 -0
  94. package/dist/esm/internal/effect/circular.js.map +1 -1
  95. package/dist/esm/internal/errors.js +6 -0
  96. package/dist/esm/internal/errors.js.map +1 -0
  97. package/dist/esm/internal/fiberRuntime.js +90 -57
  98. package/dist/esm/internal/fiberRuntime.js.map +1 -1
  99. package/dist/esm/internal/hashMap.js +1 -1
  100. package/dist/esm/internal/hashMap.js.map +1 -1
  101. package/dist/esm/internal/matcher.js +4 -3
  102. package/dist/esm/internal/matcher.js.map +1 -1
  103. package/dist/esm/internal/ref.js +6 -1
  104. package/dist/esm/internal/ref.js.map +1 -1
  105. package/dist/esm/internal/schedule/intervals.js +2 -1
  106. package/dist/esm/internal/schedule/intervals.js.map +1 -1
  107. package/dist/esm/internal/subscriptionRef.js +8 -0
  108. package/dist/esm/internal/subscriptionRef.js.map +1 -1
  109. package/dist/esm/internal/trie.js +1 -1
  110. package/dist/esm/internal/trie.js.map +1 -1
  111. package/dist/esm/internal/version.js +1 -1
  112. package/package.json +25 -1
  113. package/src/Duration.ts +54 -1
  114. package/src/List.ts +5 -3
  115. package/src/Logger.ts +12 -0
  116. package/src/Readable.ts +92 -0
  117. package/src/Ref.ts +2 -2
  118. package/src/RegExp.ts +17 -0
  119. package/src/Subscribable.ts +99 -0
  120. package/src/SubscriptionRef.ts +2 -2
  121. package/src/TestAnnotation.ts +2 -1
  122. package/src/index.ts +17 -0
  123. package/src/internal/cause.ts +3 -2
  124. package/src/internal/configProvider.ts +2 -3
  125. package/src/internal/core-effect.ts +78 -66
  126. package/src/internal/core.ts +13 -150
  127. package/src/internal/effect/circular.ts +7 -1
  128. package/src/internal/errors.ts +7 -0
  129. package/src/internal/fiberRuntime.ts +136 -111
  130. package/src/internal/hashMap.ts +1 -1
  131. package/src/internal/matcher.ts +5 -3
  132. package/src/internal/ref.ts +8 -2
  133. package/src/internal/schedule/intervals.ts +2 -1
  134. package/src/internal/subscriptionRef.ts +8 -0
  135. package/src/internal/trie.ts +1 -1
  136. package/src/internal/version.ts +1 -1
@@ -3,7 +3,7 @@
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.releaseMapReleaseAll = exports.reduceEffect = exports.raceWith = exports.raceFibersWith = exports.raceAll = exports.race = exports.partition = exports.parallelNFinalizers = exports.parallelFinalizers = exports.mergeAll = exports.makeSpanScoped = exports.loggerWithSpanAnnotations = exports.logFmtLogger = exports.labelMetricsScoped = exports.jsonLogger = exports.invokeWithInterrupt = exports.interruptWhenPossible = exports.getConsole = exports.forkWithErrorHandler = exports.forkDaemon = exports.fork = exports.forEachParUnbounded = exports.forEachParN = exports.forEachConcurrentDiscard = exports.forEach = 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.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.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.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.allWith = exports.allSuccesses = exports.all = exports.addFinalizer = exports.acquireReleaseInterruptible = exports.acquireRelease = exports.FiberRuntime = void 0;
7
7
  var Boolean = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("../Boolean.js"));
8
8
  var Chunk = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("../Chunk.js"));
9
9
  var Context = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("../Context.js"));
@@ -1126,32 +1126,25 @@ class FiberRuntime {
1126
1126
  exports.FiberRuntime = FiberRuntime;
1127
1127
  const currentMinimumLogLevel = exports.currentMinimumLogLevel = /*#__PURE__*/(0, _GlobalValue.globalValue)("effect/FiberRef/currentMinimumLogLevel", () => core.fiberRefUnsafeMake(LogLevel.fromLiteral("Info")));
1128
1128
  /** @internal */
1129
- const getConsole = refs => {
1130
- const defaultServicesValue = FiberRefs.getOrDefault(refs, defaultServices.currentServices);
1131
- const cnsl = Context.get(defaultServicesValue, _console.consoleTag);
1132
- return cnsl.unsafe;
1133
- };
1129
+ const loggerWithConsoleLog = self => internalLogger.makeLogger(opts => {
1130
+ const services = FiberRefs.getOrDefault(opts.context, defaultServices.currentServices);
1131
+ Context.get(services, _console.consoleTag).unsafe.log(self.log(opts));
1132
+ });
1134
1133
  /** @internal */
1135
- exports.getConsole = getConsole;
1136
- const defaultLogger = exports.defaultLogger = /*#__PURE__*/(0, _GlobalValue.globalValue)( /*#__PURE__*/Symbol.for("effect/Logger/defaultLogger"), () => internalLogger.makeLogger(options => {
1137
- const formatted = internalLogger.stringLogger.log(options);
1138
- getConsole(options.context).log(formatted);
1139
- }));
1134
+ exports.loggerWithConsoleLog = loggerWithConsoleLog;
1135
+ const loggerWithConsoleError = self => internalLogger.makeLogger(opts => {
1136
+ const services = FiberRefs.getOrDefault(opts.context, defaultServices.currentServices);
1137
+ Context.get(services, _console.consoleTag).unsafe.error(self.log(opts));
1138
+ });
1140
1139
  /** @internal */
1141
- const jsonLogger = exports.jsonLogger = /*#__PURE__*/(0, _GlobalValue.globalValue)( /*#__PURE__*/Symbol.for("effect/Logger/jsonLogger"), () => internalLogger.makeLogger(options => {
1142
- const formatted = internalLogger.jsonLogger.log(options);
1143
- getConsole(options.context).log(formatted);
1144
- }));
1140
+ exports.loggerWithConsoleError = loggerWithConsoleError;
1141
+ const defaultLogger = exports.defaultLogger = /*#__PURE__*/(0, _GlobalValue.globalValue)( /*#__PURE__*/Symbol.for("effect/Logger/defaultLogger"), () => loggerWithConsoleLog(internalLogger.stringLogger));
1145
1142
  /** @internal */
1146
- const logFmtLogger = exports.logFmtLogger = /*#__PURE__*/(0, _GlobalValue.globalValue)( /*#__PURE__*/Symbol.for("effect/Logger/logFmtLogger"), () => internalLogger.makeLogger(options => {
1147
- const formatted = internalLogger.logfmtLogger.log(options);
1148
- getConsole(options.context).log(formatted);
1149
- }));
1143
+ const jsonLogger = exports.jsonLogger = /*#__PURE__*/(0, _GlobalValue.globalValue)( /*#__PURE__*/Symbol.for("effect/Logger/jsonLogger"), () => loggerWithConsoleLog(internalLogger.jsonLogger));
1150
1144
  /** @internal */
1151
- const structuredLogger = exports.structuredLogger = /*#__PURE__*/(0, _GlobalValue.globalValue)( /*#__PURE__*/Symbol.for("effect/Logger/structuredLogger"), () => internalLogger.makeLogger(options => {
1152
- const formatted = internalLogger.structuredLogger.log(options);
1153
- getConsole(options.context).log(formatted);
1154
- }));
1145
+ const logFmtLogger = exports.logFmtLogger = /*#__PURE__*/(0, _GlobalValue.globalValue)( /*#__PURE__*/Symbol.for("effect/Logger/logFmtLogger"), () => loggerWithConsoleLog(internalLogger.logfmtLogger));
1146
+ /** @internal */
1147
+ const structuredLogger = exports.structuredLogger = /*#__PURE__*/(0, _GlobalValue.globalValue)( /*#__PURE__*/Symbol.for("effect/Logger/structuredLogger"), () => loggerWithConsoleLog(internalLogger.structuredLogger));
1155
1148
  /** @internal */
1156
1149
  const tracerLogger = exports.tracerLogger = /*#__PURE__*/(0, _GlobalValue.globalValue)( /*#__PURE__*/Symbol.for("effect/Logger/tracerLogger"), () => internalLogger.makeLogger(({
1157
1150
  annotations,
@@ -1663,7 +1656,7 @@ exports.finalizersMask = finalizersMask;
1663
1656
  const scopeWith = f => core.flatMap(scopeTag, f);
1664
1657
  /* @internal */
1665
1658
  exports.scopeWith = scopeWith;
1666
- const scopedEffect = effect => core.flatMap(scopeMake(), scope => scopeUse(scope)(effect));
1659
+ const scopedEffect = effect => core.flatMap(scopeMake(), scope => scopeUse(effect, scope));
1667
1660
  /* @internal */
1668
1661
  exports.scopedEffect = scopedEffect;
1669
1662
  const sequentialFinalizers = self => core.contextWithEffect(context => Option.match(Context.getOption(context, scopeTag), {
@@ -1744,52 +1737,81 @@ const withRuntimeFlagsScoped = update => {
1744
1737
  return (0, _Function.pipe)(core.updateRuntimeFlags(update), core.zipRight(addFinalizer(() => core.updateRuntimeFlags(revertRuntimeFlags))), core.asUnit);
1745
1738
  }), core.uninterruptible);
1746
1739
  };
1747
- // circular with ReleaseMap
1748
- /* @internal */
1749
- exports.withRuntimeFlagsScoped = withRuntimeFlagsScoped;
1750
- const releaseMapReleaseAll = (strategy, exit) => self => core.suspend(() => {
1751
- switch (self.state._tag) {
1752
- case "Exited":
1753
- {
1754
- return core.unit;
1755
- }
1756
- case "Running":
1757
- {
1758
- const finalizersMap = self.state.finalizers;
1759
- const update = self.state.update;
1760
- const finalizers = Array.from(finalizersMap.keys()).sort((a, b) => b - a).map(key => finalizersMap.get(key));
1761
- self.state = {
1762
- _tag: "Exited",
1763
- nextKey: self.state.nextKey,
1764
- exit,
1765
- update
1766
- };
1767
- return executionStrategy.isSequential(strategy) ? (0, _Function.pipe)(finalizers, core.forEachSequential(fin => core.exit(update(fin)(exit))), core.flatMap(results => (0, _Function.pipe)(core.exitCollectAll(results), Option.map(core.exitAsUnit), Option.getOrElse(() => core.exitUnit)))) : executionStrategy.isParallel(strategy) ? (0, _Function.pipe)(forEachParUnbounded(finalizers, fin => core.exit(update(fin)(exit)), false), core.flatMap(results => (0, _Function.pipe)(core.exitCollectAll(results, {
1768
- parallel: true
1769
- }), Option.map(core.exitAsUnit), Option.getOrElse(() => core.exitUnit)))) : (0, _Function.pipe)(forEachParN(finalizers, strategy.parallelism, fin => core.exit(update(fin)(exit)), false), core.flatMap(results => (0, _Function.pipe)(core.exitCollectAll(results, {
1770
- parallel: true
1771
- }), Option.map(core.exitAsUnit), Option.getOrElse(() => core.exitUnit))));
1772
- }
1773
- }
1774
- });
1775
1740
  // circular with Scope
1776
1741
  /** @internal */
1777
- exports.releaseMapReleaseAll = releaseMapReleaseAll;
1742
+ exports.withRuntimeFlagsScoped = withRuntimeFlagsScoped;
1778
1743
  const scopeTag = exports.scopeTag = /*#__PURE__*/Context.GenericTag("effect/Scope");
1779
1744
  /* @internal */
1780
1745
  const scope = exports.scope = scopeTag;
1781
- /* @internal */
1782
- const scopeMake = (strategy = executionStrategy.sequential) => core.map(core.releaseMapMake, rm => ({
1746
+ const scopeUnsafeAddFinalizer = (scope, fin) => {
1747
+ if (scope.state._tag === "Open") {
1748
+ scope.state.finalizers.add(fin);
1749
+ }
1750
+ };
1751
+ const ScopeImplProto = {
1783
1752
  [core.ScopeTypeId]: core.ScopeTypeId,
1784
1753
  [core.CloseableScopeTypeId]: core.CloseableScopeTypeId,
1785
- strategy,
1786
1754
  pipe() {
1787
1755
  return (0, _Pipeable.pipeArguments)(this, arguments);
1788
1756
  },
1789
- fork: strategy => core.uninterruptible((0, _Function.pipe)(scopeMake(strategy), core.flatMap(scope => (0, _Function.pipe)(core.releaseMapAdd(rm, exit => core.scopeClose(scope, exit)), core.tap(fin => core.scopeAddFinalizerExit(scope, fin)), core.as(scope))))),
1790
- close: exit => core.asUnit(releaseMapReleaseAll(strategy, exit)(rm)),
1791
- addFinalizer: fin => core.asUnit(core.releaseMapAdd(fin)(rm))
1792
- }));
1757
+ fork(strategy) {
1758
+ return core.sync(() => {
1759
+ const newScope = scopeUnsafeMake(strategy);
1760
+ if (this.state._tag === "Closed") {
1761
+ newScope.state = this.state;
1762
+ return newScope;
1763
+ }
1764
+ const fin = exit => newScope.close(exit);
1765
+ this.state.finalizers.add(fin);
1766
+ scopeUnsafeAddFinalizer(newScope, _ => core.sync(() => {
1767
+ if (this.state._tag === "Open") {
1768
+ this.state.finalizers.delete(fin);
1769
+ }
1770
+ }));
1771
+ return newScope;
1772
+ });
1773
+ },
1774
+ close(exit) {
1775
+ return core.suspend(() => {
1776
+ if (this.state._tag === "Closed") {
1777
+ return core.unit;
1778
+ }
1779
+ const finalizers = Array.from(this.state.finalizers.values()).reverse();
1780
+ this.state = {
1781
+ _tag: "Closed",
1782
+ exit
1783
+ };
1784
+ if (finalizers.length === 0) {
1785
+ return core.unit;
1786
+ }
1787
+ return executionStrategy.isSequential(this.strategy) ? (0, _Function.pipe)(core.forEachSequential(finalizers, fin => core.exit(fin(exit))), core.flatMap(results => (0, _Function.pipe)(core.exitCollectAll(results), Option.map(core.exitAsUnit), Option.getOrElse(() => core.exitUnit)))) : executionStrategy.isParallel(this.strategy) ? (0, _Function.pipe)(forEachParUnbounded(finalizers, fin => core.exit(fin(exit)), false), core.flatMap(results => (0, _Function.pipe)(core.exitCollectAll(results, {
1788
+ parallel: true
1789
+ }), Option.map(core.exitAsUnit), Option.getOrElse(() => core.exitUnit)))) : (0, _Function.pipe)(forEachParN(finalizers, this.strategy.parallelism, fin => core.exit(fin(exit)), false), core.flatMap(results => (0, _Function.pipe)(core.exitCollectAll(results, {
1790
+ parallel: true
1791
+ }), Option.map(core.exitAsUnit), Option.getOrElse(() => core.exitUnit))));
1792
+ });
1793
+ },
1794
+ addFinalizer(fin) {
1795
+ return core.suspend(() => {
1796
+ if (this.state._tag === "Closed") {
1797
+ return fin(this.state.exit);
1798
+ }
1799
+ this.state.finalizers.add(fin);
1800
+ return core.unit;
1801
+ });
1802
+ }
1803
+ };
1804
+ const scopeUnsafeMake = (strategy = executionStrategy.sequential) => {
1805
+ const scope = Object.create(ScopeImplProto);
1806
+ scope.strategy = strategy;
1807
+ scope.state = {
1808
+ _tag: "Open",
1809
+ finalizers: new Set()
1810
+ };
1811
+ return scope;
1812
+ };
1813
+ /* @internal */
1814
+ const scopeMake = (strategy = executionStrategy.sequential) => core.sync(() => scopeUnsafeMake(strategy));
1793
1815
  /* @internal */
1794
1816
  exports.scopeMake = scopeMake;
1795
1817
  const scopeExtend = exports.scopeExtend = /*#__PURE__*/(0, _Function.dual)(2, (effect, scope) => core.mapInputContext(effect,
@@ -1988,7 +2010,18 @@ const interruptWhenPossible = exports.interruptWhenPossible = /*#__PURE__*/(0, _
1988
2010
  })));
1989
2011
  // circular Tracer
1990
2012
  /** @internal */
1991
- const makeSpanScoped = (name, options) => acquireRelease(internalEffect.makeSpan(name, options), (span, exit) => span.status._tag === "Ended" ? core.unit : core.flatMap(internalEffect.currentTimeNanosTracing, endTime => core.sync(() => span.end(endTime, exit))));
2013
+ const makeSpanScoped = (name, options) => core.uninterruptible(core.withFiberRuntime(fiber => {
2014
+ const scope = Context.unsafeGet(fiber.getFiberRef(core.currentContext), scopeTag);
2015
+ const span = internalEffect.unsafeMakeSpan(fiber, name, options);
2016
+ const timingEnabled = fiber.getFiberRef(core.currentTracerTimingEnabled);
2017
+ const clock_ = Context.get(fiber.getFiberRef(defaultServices.currentServices), clock.clockTag);
2018
+ return core.as(core.scopeAddFinalizerExit(scope, exit => core.sync(() => {
2019
+ if (span.status._tag === "Ended") {
2020
+ return;
2021
+ }
2022
+ span.end(timingEnabled ? clock_.unsafeCurrentTimeNanos() : BigInt(0), exit);
2023
+ })), span);
2024
+ }));
1992
2025
  /* @internal */
1993
2026
  exports.makeSpanScoped = makeSpanScoped;
1994
2027
  const withTracerScoped = value => fiberRefLocallyScopedWith(defaultServices.currentServices, Context.add(tracer.tracerTag, value));