effect 3.4.9 → 3.5.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.
- package/RcMap/package.json +6 -0
- package/RcRef/package.json +6 -0
- package/dist/cjs/Cause.js +22 -1
- package/dist/cjs/Cause.js.map +1 -1
- package/dist/cjs/Channel.js.map +1 -1
- package/dist/cjs/Config.js.map +1 -1
- package/dist/cjs/Console.js.map +1 -1
- package/dist/cjs/Data.js +3 -1
- package/dist/cjs/Data.js.map +1 -1
- package/dist/cjs/Duration.js +23 -2
- package/dist/cjs/Duration.js.map +1 -1
- package/dist/cjs/Effect.js +78 -15
- package/dist/cjs/Effect.js.map +1 -1
- package/dist/cjs/Logger.js +234 -13
- package/dist/cjs/Logger.js.map +1 -1
- package/dist/cjs/PubSub.js.map +1 -1
- package/dist/cjs/Random.js +24 -1
- package/dist/cjs/Random.js.map +1 -1
- package/dist/cjs/RcMap.js +52 -0
- package/dist/cjs/RcMap.js.map +1 -0
- package/dist/cjs/RcRef.js +51 -0
- package/dist/cjs/RcRef.js.map +1 -0
- package/dist/cjs/Stream.js +29 -2
- package/dist/cjs/Stream.js.map +1 -1
- package/dist/cjs/index.js +6 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/internal/cause.js +21 -5
- package/dist/cjs/internal/cause.js.map +1 -1
- package/dist/cjs/internal/channel/channelExecutor.js.map +1 -1
- package/dist/cjs/internal/channel.js.map +1 -1
- package/dist/cjs/internal/core-effect.js +0 -5
- package/dist/cjs/internal/core-effect.js.map +1 -1
- package/dist/cjs/internal/core.js +15 -10
- package/dist/cjs/internal/core.js.map +1 -1
- package/dist/cjs/internal/defaultServices.js +1 -1
- package/dist/cjs/internal/defaultServices.js.map +1 -1
- package/dist/cjs/internal/fiberRuntime.js +3 -1
- package/dist/cjs/internal/fiberRuntime.js.map +1 -1
- package/dist/cjs/internal/logger.js +129 -27
- package/dist/cjs/internal/logger.js.map +1 -1
- package/dist/cjs/internal/pubsub.js +216 -36
- package/dist/cjs/internal/pubsub.js.map +1 -1
- package/dist/cjs/internal/random.js +2 -1
- package/dist/cjs/internal/random.js.map +1 -1
- package/dist/cjs/internal/rcMap.js +129 -0
- package/dist/cjs/internal/rcMap.js.map +1 -0
- package/dist/cjs/internal/rcRef.js +122 -0
- package/dist/cjs/internal/rcRef.js.map +1 -0
- package/dist/cjs/internal/stream.js +57 -11
- package/dist/cjs/internal/stream.js.map +1 -1
- package/dist/cjs/internal/version.js +1 -1
- package/dist/dts/Cause.d.ts +40 -1
- package/dist/dts/Cause.d.ts.map +1 -1
- package/dist/dts/Channel.d.ts +3 -3
- package/dist/dts/Channel.d.ts.map +1 -1
- package/dist/dts/Config.d.ts +5 -0
- package/dist/dts/Config.d.ts.map +1 -1
- package/dist/dts/Console.d.ts +2 -4
- package/dist/dts/Console.d.ts.map +1 -1
- package/dist/dts/Duration.d.ts +5 -0
- package/dist/dts/Duration.d.ts.map +1 -1
- package/dist/dts/Effect.d.ts +78 -15
- package/dist/dts/Effect.d.ts.map +1 -1
- package/dist/dts/Logger.d.ts +238 -12
- package/dist/dts/Logger.d.ts.map +1 -1
- package/dist/dts/PubSub.d.ts +15 -4
- package/dist/dts/PubSub.d.ts.map +1 -1
- package/dist/dts/Random.d.ts +23 -0
- package/dist/dts/Random.d.ts.map +1 -1
- package/dist/dts/RcMap.d.ts +93 -0
- package/dist/dts/RcMap.d.ts.map +1 -0
- package/dist/dts/RcRef.d.ts +83 -0
- package/dist/dts/RcRef.d.ts.map +1 -0
- package/dist/dts/Stream.d.ts +64 -26
- package/dist/dts/Stream.d.ts.map +1 -1
- package/dist/dts/index.d.ts +8 -0
- package/dist/dts/index.d.ts.map +1 -1
- package/dist/dts/internal/core-effect.d.ts.map +1 -1
- package/dist/dts/internal/fiberRuntime.d.ts.map +1 -1
- package/dist/dts/internal/logger.d.ts.map +1 -1
- package/dist/dts/internal/random.d.ts +1 -1
- package/dist/dts/internal/random.d.ts.map +1 -1
- package/dist/dts/internal/rcMap.d.ts +2 -0
- package/dist/dts/internal/rcMap.d.ts.map +1 -0
- package/dist/dts/internal/rcRef.d.ts +2 -0
- package/dist/dts/internal/rcRef.d.ts.map +1 -0
- package/dist/dts/internal/stream.d.ts +1 -0
- package/dist/dts/internal/stream.d.ts.map +1 -1
- package/dist/esm/Cause.js +21 -0
- package/dist/esm/Cause.js.map +1 -1
- package/dist/esm/Channel.js.map +1 -1
- package/dist/esm/Config.js.map +1 -1
- package/dist/esm/Console.js.map +1 -1
- package/dist/esm/Data.js +3 -1
- package/dist/esm/Data.js.map +1 -1
- package/dist/esm/Duration.js +20 -0
- package/dist/esm/Duration.js.map +1 -1
- package/dist/esm/Effect.js +78 -15
- package/dist/esm/Effect.js.map +1 -1
- package/dist/esm/Logger.js +233 -12
- package/dist/esm/Logger.js.map +1 -1
- package/dist/esm/PubSub.js.map +1 -1
- package/dist/esm/Random.js +23 -0
- package/dist/esm/Random.js.map +1 -1
- package/dist/esm/RcMap.js +44 -0
- package/dist/esm/RcMap.js.map +1 -0
- package/dist/esm/RcRef.js +43 -0
- package/dist/esm/RcRef.js.map +1 -0
- package/dist/esm/Stream.js +27 -0
- package/dist/esm/Stream.js.map +1 -1
- package/dist/esm/index.js +8 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/internal/cause.js +21 -5
- package/dist/esm/internal/cause.js.map +1 -1
- package/dist/esm/internal/channel/channelExecutor.js.map +1 -1
- package/dist/esm/internal/channel.js.map +1 -1
- package/dist/esm/internal/core-effect.js +0 -5
- package/dist/esm/internal/core-effect.js.map +1 -1
- package/dist/esm/internal/core.js +11 -7
- package/dist/esm/internal/core.js.map +1 -1
- package/dist/esm/internal/defaultServices.js +1 -1
- package/dist/esm/internal/defaultServices.js.map +1 -1
- package/dist/esm/internal/fiberRuntime.js +2 -0
- package/dist/esm/internal/fiberRuntime.js.map +1 -1
- package/dist/esm/internal/logger.js +127 -26
- package/dist/esm/internal/logger.js.map +1 -1
- package/dist/esm/internal/pubsub.js +216 -36
- package/dist/esm/internal/pubsub.js.map +1 -1
- package/dist/esm/internal/random.js +2 -1
- package/dist/esm/internal/random.js.map +1 -1
- package/dist/esm/internal/rcMap.js +120 -0
- package/dist/esm/internal/rcMap.js.map +1 -0
- package/dist/esm/internal/rcRef.js +112 -0
- package/dist/esm/internal/rcRef.js.map +1 -0
- package/dist/esm/internal/stream.js +53 -8
- package/dist/esm/internal/stream.js.map +1 -1
- package/dist/esm/internal/version.js +1 -1
- package/package.json +17 -1
- package/src/Cause.ts +47 -1
- package/src/Channel.ts +3 -3
- package/src/Config.ts +6 -0
- package/src/Console.ts +2 -4
- package/src/Data.ts +1 -1
- package/src/Duration.ts +18 -0
- package/src/Effect.ts +78 -15
- package/src/Logger.ts +242 -12
- package/src/PubSub.ts +11 -4
- package/src/Random.ts +24 -0
- package/src/RcMap.ts +103 -0
- package/src/RcRef.ts +91 -0
- package/src/Stream.ts +83 -26
- package/src/index.ts +10 -0
- package/src/internal/cause.ts +26 -5
- package/src/internal/channel/channelExecutor.ts +1 -1
- package/src/internal/channel.ts +4 -3
- package/src/internal/core-effect.ts +0 -5
- package/src/internal/core.ts +19 -9
- package/src/internal/defaultServices.ts +1 -1
- package/src/internal/fiberRuntime.ts +6 -0
- package/src/internal/logger.ts +135 -27
- package/src/internal/pubsub.ts +249 -58
- package/src/internal/random.ts +2 -1
- package/src/internal/rcMap.ts +213 -0
- package/src/internal/rcRef.ts +172 -0
- package/src/internal/stream.ts +325 -111
- package/src/internal/version.ts +1 -1
|
@@ -163,8 +163,23 @@ export const aggregateWithinEither = /*#__PURE__*/dual(3, (self, sink, schedule)
|
|
|
163
163
|
});
|
|
164
164
|
/** @internal */
|
|
165
165
|
export const as = /*#__PURE__*/dual(2, (self, value) => map(self, () => value));
|
|
166
|
+
const queueFromBufferOptions = bufferSize => {
|
|
167
|
+
if (bufferSize === "unbounded") {
|
|
168
|
+
return Queue.unbounded();
|
|
169
|
+
} else if (typeof bufferSize === "number" || bufferSize === undefined) {
|
|
170
|
+
return Queue.bounded(bufferSize ?? 16);
|
|
171
|
+
}
|
|
172
|
+
switch (bufferSize.strategy) {
|
|
173
|
+
case "dropping":
|
|
174
|
+
return Queue.dropping(bufferSize.bufferSize ?? 16);
|
|
175
|
+
case "sliding":
|
|
176
|
+
return Queue.sliding(bufferSize.bufferSize ?? 16);
|
|
177
|
+
default:
|
|
178
|
+
return Queue.bounded(bufferSize.bufferSize ?? 16);
|
|
179
|
+
}
|
|
180
|
+
};
|
|
166
181
|
/** @internal */
|
|
167
|
-
export const _async = (register,
|
|
182
|
+
export const _async = (register, bufferSize) => Effect.acquireRelease(queueFromBufferOptions(bufferSize), queue => Queue.shutdown(queue)).pipe(Effect.flatMap(output => Effect.runtime().pipe(Effect.flatMap(runtime => Effect.sync(() => {
|
|
168
183
|
const runPromiseExit = Runtime.runPromiseExit(runtime);
|
|
169
184
|
const canceler = register(emit.make(resume => InternalTake.fromPull(resume).pipe(Effect.flatMap(take => Queue.offer(output, take)), Effect.asVoid, runPromiseExit).then(exit => {
|
|
170
185
|
if (Exit.isFailure(exit)) {
|
|
@@ -185,7 +200,7 @@ export const _async = (register, outputBuffer = 16) => Effect.acquireRelease(Que
|
|
|
185
200
|
return fromChannel(loop).pipe(ensuring(value ?? Effect.void));
|
|
186
201
|
}))), unwrapScoped);
|
|
187
202
|
/** @internal */
|
|
188
|
-
export const asyncEffect = (register,
|
|
203
|
+
export const asyncEffect = (register, bufferSize) => pipe(Effect.acquireRelease(queueFromBufferOptions(bufferSize), queue => Queue.shutdown(queue)), Effect.flatMap(output => pipe(Effect.runtime(), Effect.flatMap(runtime => pipe(register(emit.make(k => pipe(InternalTake.fromPull(k), Effect.flatMap(take => Queue.offer(output, take)), Effect.asVoid, Runtime.runPromiseExit(runtime)).then(exit => {
|
|
189
204
|
if (Exit.isFailure(exit)) {
|
|
190
205
|
if (!Cause.isInterrupted(exit.cause)) {
|
|
191
206
|
throw Cause.squash(exit.cause);
|
|
@@ -202,7 +217,7 @@ export const asyncEffect = (register, outputBuffer = 16) => pipe(Effect.acquireR
|
|
|
202
217
|
return loop;
|
|
203
218
|
}))))), channel.unwrapScoped, fromChannel);
|
|
204
219
|
/** @internal */
|
|
205
|
-
export const asyncScoped = (register,
|
|
220
|
+
export const asyncScoped = (register, bufferSize) => pipe(Effect.acquireRelease(queueFromBufferOptions(bufferSize), queue => Queue.shutdown(queue)), Effect.flatMap(output => pipe(Effect.runtime(), Effect.flatMap(runtime => pipe(register(emit.make(k => pipe(InternalTake.fromPull(k), Effect.flatMap(take => Queue.offer(output, take)), Effect.asVoid, Runtime.runPromiseExit(runtime)).then(exit => {
|
|
206
221
|
if (Exit.isFailure(exit)) {
|
|
207
222
|
if (!Cause.isInterrupted(exit.cause)) {
|
|
208
223
|
throw Cause.squash(exit.cause);
|
|
@@ -231,9 +246,9 @@ export const broadcast = /*#__PURE__*/dual(3, (self, n, maximumLag) => pipe(self
|
|
|
231
246
|
shutdown: true
|
|
232
247
|
}))))));
|
|
233
248
|
/** @internal */
|
|
234
|
-
export const broadcastDynamic = /*#__PURE__*/dual(2, (self, maximumLag) =>
|
|
249
|
+
export const broadcastDynamic = /*#__PURE__*/dual(2, (self, maximumLag) => Effect.map(toPubSub(self, maximumLag), pubsub => flattenTake(fromPubSub(pubsub))));
|
|
235
250
|
/** @internal */
|
|
236
|
-
export const broadcastedQueues = /*#__PURE__*/dual(3, (self, n, maximumLag) => Effect.flatMap(
|
|
251
|
+
export const broadcastedQueues = /*#__PURE__*/dual(3, (self, n, maximumLag) => Effect.flatMap(pubsubFromOptions(maximumLag), pubsub => pipe(Effect.all(Array.from({
|
|
237
252
|
length: n
|
|
238
253
|
}, () => PubSub.subscribe(pubsub))), Effect.tap(() => Effect.forkScoped(runIntoPubSubScoped(self, pubsub))))));
|
|
239
254
|
/** @internal */
|
|
@@ -1269,9 +1284,9 @@ export const mergeEither = /*#__PURE__*/dual(2, (self, that) => mergeWith(self,
|
|
|
1269
1284
|
onOther: Either.right
|
|
1270
1285
|
}));
|
|
1271
1286
|
/** @internal */
|
|
1272
|
-
export const mergeLeft = /*#__PURE__*/dual(2, (
|
|
1287
|
+
export const mergeLeft = /*#__PURE__*/dual(2, (left, right) => pipe(left, merge(drain(right))));
|
|
1273
1288
|
/** @internal */
|
|
1274
|
-
export const mergeRight = /*#__PURE__*/dual(2, (
|
|
1289
|
+
export const mergeRight = /*#__PURE__*/dual(2, (left, right) => pipe(drain(left), merge(right)));
|
|
1275
1290
|
/** @internal */
|
|
1276
1291
|
export const mergeWith = /*#__PURE__*/dual(3, (self, other, options) => {
|
|
1277
1292
|
const strategy = options.haltStrategy ? haltStrategy.fromInput(options.haltStrategy) : HaltStrategy.Both;
|
|
@@ -1454,6 +1469,19 @@ export const range = (min, max, chunkSize = DefaultChunkSize) => suspend(() => {
|
|
|
1454
1469
|
};
|
|
1455
1470
|
return new StreamImpl(go(min, max, chunkSize));
|
|
1456
1471
|
});
|
|
1472
|
+
export const raceAll = (...streams) => Deferred.make().pipe(Effect.map(halt => {
|
|
1473
|
+
let winner = null;
|
|
1474
|
+
return mergeAll(streams.map((stream, index) => stream.pipe(takeWhile(() => {
|
|
1475
|
+
if (winner === null) {
|
|
1476
|
+
winner = index;
|
|
1477
|
+
Deferred.unsafeDone(halt, Exit.void);
|
|
1478
|
+
return true;
|
|
1479
|
+
}
|
|
1480
|
+
return winner === index;
|
|
1481
|
+
}), interruptWhen(Deferred.await(halt).pipe(Effect.flatMap(() => winner === index ? Effect.never : Effect.void))))), {
|
|
1482
|
+
concurrency: streams.length
|
|
1483
|
+
});
|
|
1484
|
+
}), unwrap);
|
|
1457
1485
|
/** @internal */
|
|
1458
1486
|
export const rechunk = /*#__PURE__*/dual(2, (self, n) => suspend(() => {
|
|
1459
1487
|
const target = Math.max(n, 1);
|
|
@@ -2016,8 +2044,25 @@ export const timeoutTo = /*#__PURE__*/dual(3, (self, duration, that) => {
|
|
|
2016
2044
|
const StreamTimeout = new Cause.RuntimeException("Stream Timeout");
|
|
2017
2045
|
return pipe(self, timeoutFailCause(() => Cause.die(StreamTimeout), duration), catchSomeCause(cause => Cause.isDieType(cause) && Cause.isRuntimeException(cause.defect) && cause.defect.message !== undefined && cause.defect.message === "Stream Timeout" ? Option.some(that) : Option.none()));
|
|
2018
2046
|
});
|
|
2047
|
+
const pubsubFromOptions = options => {
|
|
2048
|
+
if (typeof options === "number") {
|
|
2049
|
+
return PubSub.bounded(options);
|
|
2050
|
+
} else if (options.capacity === "unbounded") {
|
|
2051
|
+
return PubSub.unbounded({
|
|
2052
|
+
replay: options.replay
|
|
2053
|
+
});
|
|
2054
|
+
}
|
|
2055
|
+
switch (options.strategy) {
|
|
2056
|
+
case "dropping":
|
|
2057
|
+
return PubSub.dropping(options);
|
|
2058
|
+
case "sliding":
|
|
2059
|
+
return PubSub.sliding(options);
|
|
2060
|
+
default:
|
|
2061
|
+
return PubSub.bounded(options);
|
|
2062
|
+
}
|
|
2063
|
+
};
|
|
2019
2064
|
/** @internal */
|
|
2020
|
-
export const toPubSub = /*#__PURE__*/dual(2, (self, capacity) => pipe(Effect.acquireRelease(
|
|
2065
|
+
export const toPubSub = /*#__PURE__*/dual(2, (self, capacity) => pipe(Effect.acquireRelease(pubsubFromOptions(capacity), pubsub => PubSub.shutdown(pubsub)), Effect.tap(pubsub => pipe(self, runIntoPubSubScoped(pubsub), Effect.forkScoped))));
|
|
2021
2066
|
/** @internal */
|
|
2022
2067
|
export const toPull = self => Effect.map(channel.toPull(toChannel(self)), pull => pipe(pull, Effect.mapError(Option.some), Effect.flatMap(Either.match({
|
|
2023
2068
|
onLeft: () => Effect.fail(Option.none()),
|