effect 3.5.9 → 3.6.1

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 (106) hide show
  1. package/DateTime/package.json +6 -0
  2. package/dist/cjs/DateTime.js +1514 -0
  3. package/dist/cjs/DateTime.js.map +1 -0
  4. package/dist/cjs/Effect.js.map +1 -1
  5. package/dist/cjs/List.js.map +1 -1
  6. package/dist/cjs/Metric.js.map +1 -1
  7. package/dist/cjs/Predicate.js +8 -0
  8. package/dist/cjs/Predicate.js.map +1 -1
  9. package/dist/cjs/Random.js +16 -1
  10. package/dist/cjs/Random.js.map +1 -1
  11. package/dist/cjs/Stream.js +82 -3
  12. package/dist/cjs/Stream.js.map +1 -1
  13. package/dist/cjs/Struct.js +23 -1
  14. package/dist/cjs/Struct.js.map +1 -1
  15. package/dist/cjs/index.js +4 -2
  16. package/dist/cjs/index.js.map +1 -1
  17. package/dist/cjs/internal/configProvider.js.map +1 -1
  18. package/dist/cjs/internal/core.js +1 -1
  19. package/dist/cjs/internal/core.js.map +1 -1
  20. package/dist/cjs/internal/defaultServices.js +9 -2
  21. package/dist/cjs/internal/defaultServices.js.map +1 -1
  22. package/dist/cjs/internal/metric.js.map +1 -1
  23. package/dist/cjs/internal/schedule.js +1 -1
  24. package/dist/cjs/internal/schedule.js.map +1 -1
  25. package/dist/cjs/internal/stream/emit.js +73 -1
  26. package/dist/cjs/internal/stream/emit.js.map +1 -1
  27. package/dist/cjs/internal/stream.js +30 -22
  28. package/dist/cjs/internal/stream.js.map +1 -1
  29. package/dist/cjs/internal/version.js +1 -1
  30. package/dist/dts/ConfigProvider.d.ts +2 -2
  31. package/dist/dts/ConfigProvider.d.ts.map +1 -1
  32. package/dist/dts/DateTime.d.ts +1265 -0
  33. package/dist/dts/DateTime.d.ts.map +1 -0
  34. package/dist/dts/Effect.d.ts +12 -0
  35. package/dist/dts/Effect.d.ts.map +1 -1
  36. package/dist/dts/List.d.ts +2 -1
  37. package/dist/dts/List.d.ts.map +1 -1
  38. package/dist/dts/Metric.d.ts +1 -1
  39. package/dist/dts/Metric.d.ts.map +1 -1
  40. package/dist/dts/MetricRegistry.d.ts +1 -1
  41. package/dist/dts/MetricRegistry.d.ts.map +1 -1
  42. package/dist/dts/Predicate.d.ts +63 -2
  43. package/dist/dts/Predicate.d.ts.map +1 -1
  44. package/dist/dts/Random.d.ts +18 -0
  45. package/dist/dts/Random.d.ts.map +1 -1
  46. package/dist/dts/Stream.d.ts +91 -0
  47. package/dist/dts/Stream.d.ts.map +1 -1
  48. package/dist/dts/StreamEmit.d.ts +44 -0
  49. package/dist/dts/StreamEmit.d.ts.map +1 -1
  50. package/dist/dts/Struct.d.ts +21 -0
  51. package/dist/dts/Struct.d.ts.map +1 -1
  52. package/dist/dts/index.d.ts +4 -0
  53. package/dist/dts/index.d.ts.map +1 -1
  54. package/dist/dts/internal/core.d.ts.map +1 -1
  55. package/dist/dts/internal/defaultServices.d.ts.map +1 -1
  56. package/dist/dts/internal/stream.d.ts.map +1 -1
  57. package/dist/esm/DateTime.js +1465 -0
  58. package/dist/esm/DateTime.js.map +1 -0
  59. package/dist/esm/Effect.js.map +1 -1
  60. package/dist/esm/List.js.map +1 -1
  61. package/dist/esm/Metric.js.map +1 -1
  62. package/dist/esm/Predicate.js +8 -0
  63. package/dist/esm/Predicate.js.map +1 -1
  64. package/dist/esm/Random.js +15 -0
  65. package/dist/esm/Random.js.map +1 -1
  66. package/dist/esm/Stream.js +79 -0
  67. package/dist/esm/Stream.js.map +1 -1
  68. package/dist/esm/Struct.js +21 -0
  69. package/dist/esm/Struct.js.map +1 -1
  70. package/dist/esm/index.js +4 -0
  71. package/dist/esm/index.js.map +1 -1
  72. package/dist/esm/internal/configProvider.js.map +1 -1
  73. package/dist/esm/internal/core.js +1 -1
  74. package/dist/esm/internal/core.js.map +1 -1
  75. package/dist/esm/internal/defaultServices.js +6 -0
  76. package/dist/esm/internal/defaultServices.js.map +1 -1
  77. package/dist/esm/internal/metric.js.map +1 -1
  78. package/dist/esm/internal/schedule.js +1 -1
  79. package/dist/esm/internal/schedule.js.map +1 -1
  80. package/dist/esm/internal/stream/emit.js +71 -0
  81. package/dist/esm/internal/stream/emit.js.map +1 -1
  82. package/dist/esm/internal/stream.js +24 -18
  83. package/dist/esm/internal/stream.js.map +1 -1
  84. package/dist/esm/internal/version.js +1 -1
  85. package/package.json +9 -1
  86. package/src/ConfigProvider.ts +2 -2
  87. package/src/DateTime.ts +2104 -0
  88. package/src/Effect.ts +22 -0
  89. package/src/List.ts +3 -2
  90. package/src/Metric.ts +1 -1
  91. package/src/MetricRegistry.ts +1 -1
  92. package/src/Predicate.ts +68 -8
  93. package/src/Random.ts +24 -0
  94. package/src/Stream.ts +105 -0
  95. package/src/StreamEmit.ts +53 -0
  96. package/src/Struct.ts +22 -0
  97. package/src/index.ts +5 -0
  98. package/src/internal/configProvider.ts +20 -20
  99. package/src/internal/core.ts +37 -12
  100. package/src/internal/defaultServices.ts +14 -0
  101. package/src/internal/metric/registry.ts +1 -1
  102. package/src/internal/metric.ts +2 -2
  103. package/src/internal/schedule.ts +1 -1
  104. package/src/internal/stream/emit.ts +77 -0
  105. package/src/internal/stream.ts +86 -18
  106. package/src/internal/version.ts +1 -1
@@ -3,9 +3,10 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.fromIterable = exports.fromEventListener = exports.fromEffectOption = exports.fromEffect = exports.fromChunks = exports.fromChunkQueue = exports.fromChunkPubSub = exports.fromChunk = exports.fromChannel = exports.fromAsyncIterable = exports.forever = exports.flattenTake = exports.flattenIterables = exports.flattenExitOption = exports.flattenEffect = exports.flattenChunks = exports.flatten = exports.flatMap = exports.findEffect = exports.find = exports.finalizer = exports.filterMapWhileEffect = exports.filterMapWhile = exports.filterMapEffect = exports.filterMap = exports.filterEffect = exports.filter = exports.failSync = exports.failCauseSync = exports.failCause = exports.fail = exports.execute = exports.ensuringWith = exports.ensuring = exports.encodeText = exports.empty = exports.either = exports.dropWhileEffect = exports.dropWhile = exports.dropUntilEffect = exports.dropUntil = exports.dropRight = exports.drop = exports.drainFork = exports.drain = exports.distributedWithDynamicCallback = exports.distributedWithDynamic = exports.distributedWith = exports.dieSync = exports.dieMessage = exports.die = exports.decodeText = exports.debounce = exports.crossWith = exports.crossRight = exports.crossLeft = exports.cross = exports.contextWithStream = exports.contextWithEffect = exports.contextWith = exports.context = exports.concatAll = exports.concat = exports.combineChunks = exports.combine = exports.chunksWith = exports.chunks = exports.channelToStream = exports.changesWithEffect = exports.changesWith = exports.changes = exports.catchTags = exports.catchTag = exports.catchSomeCause = exports.catchSome = exports.catchAllCause = exports.catchAll = exports.bufferChunks = exports.buffer = exports.broadcastedQueuesDynamic = exports.broadcastedQueues = exports.broadcastDynamic = exports.broadcast = exports.branchAfter = exports.bindTo = exports.bind = exports.asyncScoped = exports.asyncEffect = exports.as = exports.aggregateWithinEither = exports.aggregateWithin = exports.aggregate = exports.acquireRelease = exports.accumulateChunks = exports.accumulate = exports._async = exports.StreamTypeId = exports.StreamImpl = exports.Do = exports.DefaultChunkSize = void 0;
7
- exports.runFold = exports.runDrain = exports.runCount = exports.runCollect = exports.run = exports.retry = exports.repeatWith = exports.repeatValue = exports.repeatElementsWith = exports.repeatElements = exports.repeatEither = exports.repeatEffectWithSchedule = exports.repeatEffectOption = exports.repeatEffectChunkOption = exports.repeatEffectChunk = exports.repeatEffect = exports.repeat = exports.refineOrDieWith = exports.refineOrDie = exports.rechunk = exports.range = exports.raceAll = exports.provideSomeLayer = exports.provideServiceStream = exports.provideServiceEffect = exports.provideService = exports.provideLayer = exports.provideContext = exports.prepend = exports.pipeThroughChannelOrFail = exports.pipeThroughChannel = exports.pipeThrough = exports.peel = exports.partitionEither = exports.partition = exports.paginateEffect = exports.paginateChunkEffect = exports.paginateChunk = exports.paginate = exports.orElseSucceed = exports.orElseIfEmptyStream = exports.orElseIfEmptyChunk = exports.orElseIfEmpty = exports.orElseFail = exports.orElseEither = exports.orElse = exports.orDieWith = exports.orDie = exports.onError = exports.onDone = exports.never = exports.mkString = exports.mergeWith = exports.mergeRight = exports.mergeLeft = exports.mergeEither = exports.mergeAll = exports.merge = exports.matchConcurrency = exports.mapInputContext = exports.mapErrorCause = exports.mapError = exports.mapEffectSequential = exports.mapEffectPar = exports.mapConcatEffect = exports.mapConcatChunkEffect = exports.mapConcatChunk = exports.mapConcat = exports.mapChunksEffect = exports.mapChunks = exports.mapBoth = exports.mapAccumEffect = exports.mapAccum = exports.map = exports.make = exports.let_ = exports.iterate = exports.isStream = exports.intersperseAffixes = exports.intersperse = exports.interruptWhenDeferred = exports.interruptWhen = exports.interruptAfter = exports.interleaveWith = exports.interleave = exports.identityStream = exports.haltWhenDeferred = exports.haltWhen = exports.haltAfter = exports.groupedWithin = exports.grouped = exports.groupAdjacentBy = exports.fromSchedule = exports.fromReadableStreamByob = exports.fromReadableStream = exports.fromQueue = exports.fromPull = exports.fromPubSub = exports.fromIteratorSucceed = exports.fromIterableEffect = void 0;
8
- exports.zipWithPreviousAndNext = exports.zipWithPrevious = exports.zipWithNext = exports.zipWithIndex = exports.zipWithChunks = exports.zipWith = exports.zipRight = exports.zipLeft = exports.zipLatestWith = exports.zipLatestAll = exports.zipLatest = exports.zipFlatten = exports.zipAllWith = exports.zipAllSortedByKeyWith = exports.zipAllSortedByKeyRight = exports.zipAllSortedByKeyLeft = exports.zipAllSortedByKey = exports.zipAllRight = exports.zipAllLeft = exports.zipAll = exports.zip = exports.withSpan = exports.whenEffect = exports.whenCaseEffect = exports.whenCase = exports.when = exports.void = exports.updateService = exports.unwrapScoped = exports.unwrap = exports.unfoldEffect = exports.unfoldChunkEffect = exports.unfoldChunk = exports.unfold = exports.transduce = exports.toReadableStreamRuntime = exports.toReadableStreamEffect = exports.toReadableStream = exports.toQueueOfElements = exports.toQueue = exports.toPull = exports.toPubSub = exports.toChannel = exports.timeoutTo = exports.timeoutFailCause = exports.timeoutFail = exports.timeout = exports.tick = exports.throttleEffect = exports.throttle = exports.tapSink = exports.tapErrorCause = exports.tapError = exports.tapBoth = exports.tap = exports.takeWhile = exports.takeUntilEffect = exports.takeUntil = exports.takeRight = exports.take = exports.sync = exports.suspend = exports.succeed = exports.splitOnChunk = exports.splitLines = exports.split = exports.someOrFail = exports.someOrElse = exports.some = exports.slidingSize = exports.sliding = exports.scoped = exports.scheduleWith = exports.schedule = exports.scanReduceEffect = exports.scanReduce = exports.scanEffect = exports.scan = exports.runSum = exports.runScoped = exports.runLast = exports.runIntoQueueScoped = exports.runIntoQueueElementsScoped = exports.runIntoQueue = exports.runIntoPubSubScoped = exports.runIntoPubSub = exports.runHead = exports.runForEachWhileScoped = exports.runForEachWhile = exports.runForEachScoped = exports.runForEachChunkScoped = exports.runForEachChunk = exports.runForEach = exports.runFoldWhileScopedEffect = exports.runFoldWhileScoped = exports.runFoldWhileEffect = exports.runFoldWhile = exports.runFoldScopedEffect = exports.runFoldScoped = exports.runFoldEffect = void 0;
6
+ exports.fromEventListener = exports.fromEffectOption = exports.fromEffect = exports.fromChunks = exports.fromChunkQueue = exports.fromChunkPubSub = exports.fromChunk = exports.fromChannel = exports.fromAsyncIterable = exports.forever = exports.flattenTake = exports.flattenIterables = exports.flattenExitOption = exports.flattenEffect = exports.flattenChunks = exports.flatten = exports.flatMap = exports.findEffect = exports.find = exports.finalizer = exports.filterMapWhileEffect = exports.filterMapWhile = exports.filterMapEffect = exports.filterMap = exports.filterEffect = exports.filter = exports.failSync = exports.failCauseSync = exports.failCause = exports.fail = exports.execute = exports.ensuringWith = exports.ensuring = exports.encodeText = exports.empty = exports.either = exports.dropWhileEffect = exports.dropWhile = exports.dropUntilEffect = exports.dropUntil = exports.dropRight = exports.drop = exports.drainFork = exports.drain = exports.distributedWithDynamicCallback = exports.distributedWithDynamic = exports.distributedWith = exports.dieSync = exports.dieMessage = exports.die = exports.decodeText = exports.debounce = exports.crossWith = exports.crossRight = exports.crossLeft = exports.cross = exports.contextWithStream = exports.contextWithEffect = exports.contextWith = exports.context = exports.concatAll = exports.concat = exports.combineChunks = exports.combine = exports.chunksWith = exports.chunks = exports.channelToStream = exports.changesWithEffect = exports.changesWith = exports.changes = exports.catchTags = exports.catchTag = exports.catchSomeCause = exports.catchSome = exports.catchAllCause = exports.catchAll = exports.bufferChunks = exports.buffer = exports.broadcastedQueuesDynamic = exports.broadcastedQueues = exports.broadcastDynamic = exports.broadcast = exports.branchAfter = exports.bindTo = exports.bind = exports.asyncScoped = exports.asyncPush = exports.asyncEffect = exports.as = exports.aggregateWithinEither = exports.aggregateWithin = exports.aggregate = exports.acquireRelease = exports.accumulateChunks = exports.accumulate = exports._async = exports.StreamTypeId = exports.StreamImpl = exports.Do = exports.DefaultChunkSize = void 0;
7
+ exports.runCollect = exports.run = exports.retry = exports.repeatWith = exports.repeatValue = exports.repeatElementsWith = exports.repeatElements = exports.repeatEither = exports.repeatEffectWithSchedule = exports.repeatEffectOption = exports.repeatEffectChunkOption = exports.repeatEffectChunk = exports.repeatEffect = exports.repeat = exports.refineOrDieWith = exports.refineOrDie = exports.rechunk = exports.range = exports.raceAll = exports.provideSomeLayer = exports.provideServiceStream = exports.provideServiceEffect = exports.provideService = exports.provideLayer = exports.provideContext = exports.prepend = exports.pipeThroughChannelOrFail = exports.pipeThroughChannel = exports.pipeThrough = exports.peel = exports.partitionEither = exports.partition = exports.paginateEffect = exports.paginateChunkEffect = exports.paginateChunk = exports.paginate = exports.orElseSucceed = exports.orElseIfEmptyStream = exports.orElseIfEmptyChunk = exports.orElseIfEmpty = exports.orElseFail = exports.orElseEither = exports.orElse = exports.orDieWith = exports.orDie = exports.onStart = exports.onError = exports.onEnd = exports.onDone = exports.never = exports.mkString = exports.mergeWith = exports.mergeRight = exports.mergeLeft = exports.mergeEither = exports.mergeAll = exports.merge = exports.matchConcurrency = exports.mapInputContext = exports.mapErrorCause = exports.mapError = exports.mapEffectSequential = exports.mapEffectPar = exports.mapConcatEffect = exports.mapConcatChunkEffect = exports.mapConcatChunk = exports.mapConcat = exports.mapChunksEffect = exports.mapChunks = exports.mapBoth = exports.mapAccumEffect = exports.mapAccum = exports.map = exports.make = exports.let_ = exports.iterate = exports.isStream = exports.intersperseAffixes = exports.intersperse = exports.interruptWhenDeferred = exports.interruptWhen = exports.interruptAfter = exports.interleaveWith = exports.interleave = exports.identityStream = exports.haltWhenDeferred = exports.haltWhen = exports.haltAfter = exports.groupedWithin = exports.grouped = exports.groupAdjacentBy = exports.fromSchedule = exports.fromReadableStreamByob = exports.fromReadableStream = exports.fromQueue = exports.fromPull = exports.fromPubSub = exports.fromIteratorSucceed = exports.fromIterableEffect = exports.fromIterable = void 0;
8
+ exports.zipWithIndex = exports.zipWithChunks = exports.zipWith = exports.zipRight = exports.zipLeft = exports.zipLatestWith = exports.zipLatestAll = exports.zipLatest = exports.zipFlatten = exports.zipAllWith = exports.zipAllSortedByKeyWith = exports.zipAllSortedByKeyRight = exports.zipAllSortedByKeyLeft = exports.zipAllSortedByKey = exports.zipAllRight = exports.zipAllLeft = exports.zipAll = exports.zip = exports.withSpan = exports.whenEffect = exports.whenCaseEffect = exports.whenCase = exports.when = exports.void = exports.updateService = exports.unwrapScoped = exports.unwrap = exports.unfoldEffect = exports.unfoldChunkEffect = exports.unfoldChunk = exports.unfold = exports.transduce = exports.toReadableStreamRuntime = exports.toReadableStreamEffect = exports.toReadableStream = exports.toQueueOfElements = exports.toQueue = exports.toPull = exports.toPubSub = exports.toChannel = exports.timeoutTo = exports.timeoutFailCause = exports.timeoutFail = exports.timeout = exports.tick = exports.throttleEffect = exports.throttle = exports.tapSink = exports.tapErrorCause = exports.tapError = exports.tapBoth = exports.tap = exports.takeWhile = exports.takeUntilEffect = exports.takeUntil = exports.takeRight = exports.take = exports.sync = exports.suspend = exports.succeed = exports.splitOnChunk = exports.splitLines = exports.split = exports.someOrFail = exports.someOrElse = exports.some = exports.slidingSize = exports.sliding = exports.scoped = exports.scheduleWith = exports.schedule = exports.scanReduceEffect = exports.scanReduce = exports.scanEffect = exports.scan = exports.runSum = exports.runScoped = exports.runLast = exports.runIntoQueueScoped = exports.runIntoQueueElementsScoped = exports.runIntoQueue = exports.runIntoPubSubScoped = exports.runIntoPubSub = exports.runHead = exports.runForEachWhileScoped = exports.runForEachWhile = exports.runForEachScoped = exports.runForEachChunkScoped = exports.runForEachChunk = exports.runForEach = exports.runFoldWhileScopedEffect = exports.runFoldWhileScoped = exports.runFoldWhileEffect = exports.runFoldWhile = exports.runFoldScopedEffect = exports.runFoldScoped = exports.runFoldEffect = exports.runFold = exports.runDrain = exports.runCount = void 0;
9
+ exports.zipWithPreviousAndNext = exports.zipWithPrevious = exports.zipWithNext = void 0;
9
10
  var Cause = _interopRequireWildcard(require("../Cause.js"));
10
11
  var Chunk = _interopRequireWildcard(require("../Chunk.js"));
11
12
  var Clock = _interopRequireWildcard(require("../Clock.js"));
@@ -17,6 +18,7 @@ var Either = _interopRequireWildcard(require("../Either.js"));
17
18
  var Equal = _interopRequireWildcard(require("../Equal.js"));
18
19
  var Exit = _interopRequireWildcard(require("../Exit.js"));
19
20
  var Fiber = _interopRequireWildcard(require("../Fiber.js"));
21
+ var FiberRef = _interopRequireWildcard(require("../FiberRef.js"));
20
22
  var _Function = require("../Function.js");
21
23
  var Layer = _interopRequireWildcard(require("../Layer.js"));
22
24
  var MergeDecision = _interopRequireWildcard(require("../MergeDecision.js"));
@@ -232,8 +234,25 @@ const asyncEffect = (register, bufferSize) => (0, _Function.pipe)(Effect.acquire
232
234
  }), channel.unwrap);
233
235
  return loop;
234
236
  }))))), channel.unwrapScoped, fromChannel);
235
- /** @internal */
236
237
  exports.asyncEffect = asyncEffect;
238
+ const queueFromBufferOptionsPush = options => {
239
+ if (options?.bufferSize === "unbounded" || options?.bufferSize === undefined && options?.strategy === undefined) {
240
+ return Queue.unbounded();
241
+ }
242
+ switch (options?.strategy) {
243
+ case "sliding":
244
+ return Queue.sliding(options.bufferSize ?? 16);
245
+ default:
246
+ return Queue.dropping(options?.bufferSize ?? 16);
247
+ }
248
+ };
249
+ /** @internal */
250
+ const asyncPush = (register, options) => Effect.acquireRelease(queueFromBufferOptionsPush(options), Queue.shutdown).pipe(Effect.tap(queue => FiberRef.getWith(FiberRef.currentScheduler, scheduler => register(emit.makePush(queue, scheduler)))), Effect.map(queue => {
251
+ const loop = core.flatMap(Queue.take(queue), item => Exit.isExit(item) ? Exit.isSuccess(item) ? core.void : core.failCause(item.cause) : channel.zipRight(core.write(Chunk.unsafeFromArray(item)), loop));
252
+ return loop;
253
+ }), channel.unwrapScoped, fromChannel);
254
+ /** @internal */
255
+ exports.asyncPush = asyncPush;
237
256
  const asyncScoped = (register, bufferSize) => (0, _Function.pipe)(Effect.acquireRelease(queueFromBufferOptions(bufferSize), queue => Queue.shutdown(queue)), Effect.flatMap(output => (0, _Function.pipe)(Effect.runtime(), Effect.flatMap(runtime => (0, _Function.pipe)(register(emit.make(k => (0, _Function.pipe)(InternalTake.fromPull(k), Effect.flatMap(take => Queue.offer(output, take)), Effect.asVoid, Runtime.runPromiseExit(runtime)).then(exit => {
238
257
  if (Exit.isFailure(exit)) {
239
258
  if (!Cause.isInterrupted(exit.cause)) {
@@ -1368,10 +1387,14 @@ const mkString = self => run(self, _sink.mkString);
1368
1387
  exports.mkString = mkString;
1369
1388
  const never = exports.never = /*#__PURE__*/fromEffect(Effect.never);
1370
1389
  /** @internal */
1390
+ const onEnd = exports.onEnd = /*#__PURE__*/(0, _Function.dual)(2, (self, effect) => concat(self, drain(fromEffect(effect))));
1391
+ /** @internal */
1371
1392
  const onError = exports.onError = /*#__PURE__*/(0, _Function.dual)(2, (self, cleanup) => (0, _Function.pipe)(self, catchAllCause(cause => fromEffect((0, _Function.pipe)(cleanup(cause), Effect.zipRight(Effect.failCause(cause)))))));
1372
1393
  /** @internal */
1373
1394
  const onDone = exports.onDone = /*#__PURE__*/(0, _Function.dual)(2, (self, cleanup) => new StreamImpl((0, _Function.pipe)(toChannel(self), core.ensuringWith(exit => Exit.isSuccess(exit) ? cleanup() : Effect.void))));
1374
1395
  /** @internal */
1396
+ const onStart = exports.onStart = /*#__PURE__*/(0, _Function.dual)(2, (self, effect) => unwrap(Effect.as(effect, self)));
1397
+ /** @internal */
1375
1398
  const orDie = self => (0, _Function.pipe)(self, orDieWith(_Function.identity));
1376
1399
  /** @internal */
1377
1400
  exports.orDie = orDie;
@@ -2792,23 +2815,8 @@ const encodeText = self => suspend(() => {
2792
2815
  });
2793
2816
  /** @internal */
2794
2817
  exports.encodeText = encodeText;
2795
- const fromEventListener = (target, type, options) => _async(emit => {
2796
- let batch = [];
2797
- let taskRunning = false;
2798
- function cb(e) {
2799
- batch.push(e);
2800
- if (!taskRunning) {
2801
- taskRunning = true;
2802
- queueMicrotask(() => {
2803
- const events = batch;
2804
- batch = [];
2805
- taskRunning = false;
2806
- emit.chunk(Chunk.unsafeFromArray(events));
2807
- });
2808
- }
2809
- }
2810
- target.addEventListener(type, cb, options);
2811
- return Effect.sync(() => target.removeEventListener(type, cb, options));
2812
- }, "unbounded");
2818
+ const fromEventListener = (target, type, options) => asyncPush(emit => Effect.acquireRelease(Effect.sync(() => target.addEventListener(type, emit.single, options)), () => Effect.sync(() => target.removeEventListener(type, emit.single, options))), {
2819
+ bufferSize: typeof options === "object" ? options.bufferSize : undefined
2820
+ });
2813
2821
  exports.fromEventListener = fromEventListener;
2814
2822
  //# sourceMappingURL=stream.js.map