effect 3.22.0 → 3.22.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 (56) hide show
  1. package/dist/cjs/Context.js +1 -1
  2. package/dist/cjs/Mailbox.js +3 -2
  3. package/dist/cjs/Mailbox.js.map +1 -1
  4. package/dist/cjs/ParseResult.js +18 -0
  5. package/dist/cjs/ParseResult.js.map +1 -1
  6. package/dist/cjs/internal/config.js +5 -1
  7. package/dist/cjs/internal/config.js.map +1 -1
  8. package/dist/cjs/internal/configProvider.js +14 -1
  9. package/dist/cjs/internal/configProvider.js.map +1 -1
  10. package/dist/cjs/internal/effect/circular.js +5 -4
  11. package/dist/cjs/internal/effect/circular.js.map +1 -1
  12. package/dist/cjs/internal/mailbox.js +11 -19
  13. package/dist/cjs/internal/mailbox.js.map +1 -1
  14. package/dist/cjs/internal/opCodes/config.js +3 -1
  15. package/dist/cjs/internal/opCodes/config.js.map +1 -1
  16. package/dist/cjs/internal/stream/emit.js +6 -34
  17. package/dist/cjs/internal/stream/emit.js.map +1 -1
  18. package/dist/cjs/internal/stream.js +26 -16
  19. package/dist/cjs/internal/stream.js.map +1 -1
  20. package/dist/cjs/internal/version.js +1 -1
  21. package/dist/dts/Context.d.ts +1 -1
  22. package/dist/dts/Mailbox.d.ts.map +1 -1
  23. package/dist/dts/ParseResult.d.ts.map +1 -1
  24. package/dist/dts/internal/stream.d.ts.map +1 -1
  25. package/dist/esm/Context.js +1 -1
  26. package/dist/esm/Mailbox.js +3 -2
  27. package/dist/esm/Mailbox.js.map +1 -1
  28. package/dist/esm/ParseResult.js +18 -0
  29. package/dist/esm/ParseResult.js.map +1 -1
  30. package/dist/esm/internal/config.js +5 -1
  31. package/dist/esm/internal/config.js.map +1 -1
  32. package/dist/esm/internal/configProvider.js +14 -1
  33. package/dist/esm/internal/configProvider.js.map +1 -1
  34. package/dist/esm/internal/effect/circular.js +5 -4
  35. package/dist/esm/internal/effect/circular.js.map +1 -1
  36. package/dist/esm/internal/mailbox.js +10 -17
  37. package/dist/esm/internal/mailbox.js.map +1 -1
  38. package/dist/esm/internal/opCodes/config.js +2 -0
  39. package/dist/esm/internal/opCodes/config.js.map +1 -1
  40. package/dist/esm/internal/stream/emit.js +6 -34
  41. package/dist/esm/internal/stream/emit.js.map +1 -1
  42. package/dist/esm/internal/stream.js +22 -13
  43. package/dist/esm/internal/stream.js.map +1 -1
  44. package/dist/esm/internal/version.js +1 -1
  45. package/package.json +1 -1
  46. package/src/Context.ts +1 -1
  47. package/src/Mailbox.ts +3 -2
  48. package/src/ParseResult.ts +18 -0
  49. package/src/internal/config.ts +14 -1
  50. package/src/internal/configProvider.ts +24 -1
  51. package/src/internal/effect/circular.ts +5 -4
  52. package/src/internal/mailbox.ts +13 -52
  53. package/src/internal/opCodes/config.ts +6 -0
  54. package/src/internal/stream/emit.ts +7 -39
  55. package/src/internal/stream.ts +62 -24
  56. package/src/internal/version.ts +1 -1
@@ -4,9 +4,9 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
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.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.race = exports.provideSomeLayer = exports.provideSomeContext = 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.mergeWithTag = 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.fromTQueue = exports.fromTPubSub = exports.fromSchedule = exports.fromReadableStreamByob = exports.fromReadableStream = exports.fromQueue = exports.fromPull = exports.fromPubSub = exports.fromIteratorSucceed = exports.fromIterableEffect = exports.fromIterable = void 0;
8
- exports.zipAllSortedByKeyLeft = exports.zipAllSortedByKey = exports.zipAllRight = exports.zipAllLeft = exports.zipAll = exports.zip = exports.withSpan = exports.withExecutionPlan = exports.whenEffect = exports.whenCaseEffect = exports.whenCase = exports.when = exports.void = exports.updateService = exports.unwrapScopedWith = 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.toAsyncIterableRuntime = exports.toAsyncIterableEffect = exports.toAsyncIterable = 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.share = exports.scopedWith = 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 = exports.runCollect = exports.run = exports.retry = exports.repeatWith = exports.repeatValue = void 0;
9
- 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 = void 0;
7
+ 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.race = exports.provideSomeLayer = exports.provideSomeContext = 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.mergeWithTag = 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.mailboxToStream = exports.mailboxFromStream = 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.fromTQueue = exports.fromTPubSub = exports.fromSchedule = exports.fromReadableStreamByob = exports.fromReadableStream = exports.fromQueue = exports.fromPull = exports.fromPubSub = exports.fromIteratorSucceed = exports.fromIterableEffect = exports.fromIterable = void 0;
8
+ exports.zipAllRight = exports.zipAllLeft = exports.zipAll = exports.zip = exports.withSpan = exports.withExecutionPlan = exports.whenEffect = exports.whenCaseEffect = exports.whenCase = exports.when = exports.void = exports.updateService = exports.unwrapScopedWith = 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.toAsyncIterableRuntime = exports.toAsyncIterableEffect = exports.toAsyncIterable = 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.share = exports.scopedWith = 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 = exports.runCollect = exports.run = exports.retry = exports.repeatWith = exports.repeatValue = exports.repeatElementsWith = exports.repeatElements = void 0;
9
+ 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 = void 0;
10
10
  var Cause = _interopRequireWildcard(require("../Cause.js"));
11
11
  var Chunk = _interopRequireWildcard(require("../Chunk.js"));
12
12
  var Clock = _interopRequireWildcard(require("../Clock.js"));
@@ -18,7 +18,6 @@ var Either = _interopRequireWildcard(require("../Either.js"));
18
18
  var Equal = _interopRequireWildcard(require("../Equal.js"));
19
19
  var Exit = _interopRequireWildcard(require("../Exit.js"));
20
20
  var Fiber = _interopRequireWildcard(require("../Fiber.js"));
21
- var FiberRef = _interopRequireWildcard(require("../FiberRef.js"));
22
21
  var _Function = require("../Function.js");
23
22
  var internalExecutionPlan = _interopRequireWildcard(require("../internal/executionPlan.js"));
24
23
  var Layer = _interopRequireWildcard(require("../Layer.js"));
@@ -40,7 +39,11 @@ var channel = _interopRequireWildcard(require("./channel.js"));
40
39
  var channelExecutor = _interopRequireWildcard(require("./channel/channelExecutor.js"));
41
40
  var MergeStrategy = _interopRequireWildcard(require("./channel/mergeStrategy.js"));
42
41
  var core = _interopRequireWildcard(require("./core-stream.js"));
42
+ var effectCore = _interopRequireWildcard(require("./core.js"));
43
43
  var doNotation = _interopRequireWildcard(require("./doNotation.js"));
44
+ var circular = _interopRequireWildcard(require("./effect/circular.js"));
45
+ var fiberRuntime = _interopRequireWildcard(require("./fiberRuntime.js"));
46
+ var mailbox = _interopRequireWildcard(require("./mailbox.js"));
44
47
  var _ringBuffer = require("./ringBuffer.js");
45
48
  var InternalSchedule = _interopRequireWildcard(require("./schedule.js"));
46
49
  var sink_ = _interopRequireWildcard(require("./sink.js"));
@@ -237,22 +240,17 @@ const asyncEffect = (register, bufferSize) => (0, _Function.pipe)(Effect.acquire
237
240
  return loop;
238
241
  }))))), channel.unwrapScoped, fromChannel);
239
242
  exports.asyncEffect = asyncEffect;
240
- const queueFromBufferOptionsPush = options => {
243
+ const mailboxFromBufferOptionsPush = options => {
241
244
  if (options?.bufferSize === "unbounded" || options?.bufferSize === undefined && options?.strategy === undefined) {
242
- return Queue.unbounded();
243
- }
244
- switch (options?.strategy) {
245
- case "sliding":
246
- return Queue.sliding(options.bufferSize ?? 16);
247
- default:
248
- return Queue.dropping(options?.bufferSize ?? 16);
245
+ return mailbox.make();
249
246
  }
247
+ return mailbox.make({
248
+ capacity: options?.bufferSize ?? 16,
249
+ strategy: options?.strategy ?? "dropping"
250
+ });
250
251
  };
251
252
  /** @internal */
252
- 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 => {
253
- 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));
254
- return loop;
255
- }), channel.unwrapScoped, fromChannel);
253
+ const asyncPush = (register, options) => Effect.acquireRelease(mailboxFromBufferOptionsPush(options), mailbox => mailbox.shutdown).pipe(Effect.tap(mailbox => register(emit.makePush(mailbox))), Effect.map(mailboxToStream), unwrapScoped);
256
254
  /** @internal */
257
255
  exports.asyncPush = asyncPush;
258
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 => {
@@ -969,6 +967,18 @@ const toChannel = stream => {
969
967
  };
970
968
  /** @internal */
971
969
  exports.toChannel = toChannel;
970
+ const mailboxToStream = self => fromChannel(mailbox.toChannel(self));
971
+ /** @internal */
972
+ exports.mailboxToStream = mailboxToStream;
973
+ const mailboxFromStream = exports.mailboxFromStream = /*#__PURE__*/(0, _Function.dual)(args => isStream(args[0]), (self, options) => effectCore.tap(fiberRuntime.acquireRelease(mailbox.make(options), mailbox => mailbox.shutdown), mailbox => {
974
+ const writer = core.readWithCause({
975
+ onInput: input => core.flatMap(mailbox.offerAll(input), () => writer),
976
+ onFailure: cause => mailbox.failCause(cause),
977
+ onDone: () => mailbox.end
978
+ });
979
+ return fiberRuntime.scopeWith(scope => toChannel(self).pipe(core.pipeTo(writer), channelExecutor.runIn(scope), circular.forkIn(scope)));
980
+ }));
981
+ /** @internal */
972
982
  const fromChunk = chunk => new StreamImpl(Chunk.isEmpty(chunk) ? core.void : core.write(chunk));
973
983
  /** @internal */
974
984
  exports.fromChunk = fromChunk;