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
package/src/internal/stream.ts
CHANGED
|
@@ -31,7 +31,7 @@ import * as HaltStrategy from "../StreamHaltStrategy.js"
|
|
|
31
31
|
import type * as Take from "../Take.js"
|
|
32
32
|
import type * as Tracer from "../Tracer.js"
|
|
33
33
|
import * as Tuple from "../Tuple.js"
|
|
34
|
-
import type { NoInfer } from "../Types.js"
|
|
34
|
+
import type { NoInfer, TupleOf } from "../Types.js"
|
|
35
35
|
import * as channel from "./channel.js"
|
|
36
36
|
import * as channelExecutor from "./channel/channelExecutor.js"
|
|
37
37
|
import * as MergeStrategy from "./channel/mergeStrategy.js"
|
|
@@ -461,15 +461,39 @@ export const as = dual<
|
|
|
461
461
|
<A, E, R, B>(self: Stream.Stream<A, E, R>, value: B) => Stream.Stream<B, E, R>
|
|
462
462
|
>(2, <A, E, R, B>(self: Stream.Stream<A, E, R>, value: B): Stream.Stream<B, E, R> => map(self, () => value))
|
|
463
463
|
|
|
464
|
+
const queueFromBufferOptions = <A, E>(
|
|
465
|
+
bufferSize?: number | "unbounded" | {
|
|
466
|
+
readonly bufferSize?: number | undefined
|
|
467
|
+
readonly strategy?: "dropping" | "sliding" | "suspend" | undefined
|
|
468
|
+
} | undefined
|
|
469
|
+
): Effect.Effect<Queue.Queue<Take.Take<A, E>>> => {
|
|
470
|
+
if (bufferSize === "unbounded") {
|
|
471
|
+
return Queue.unbounded()
|
|
472
|
+
} else if (typeof bufferSize === "number" || bufferSize === undefined) {
|
|
473
|
+
return Queue.bounded(bufferSize ?? 16)
|
|
474
|
+
}
|
|
475
|
+
switch (bufferSize.strategy) {
|
|
476
|
+
case "dropping":
|
|
477
|
+
return Queue.dropping(bufferSize.bufferSize ?? 16)
|
|
478
|
+
case "sliding":
|
|
479
|
+
return Queue.sliding(bufferSize.bufferSize ?? 16)
|
|
480
|
+
default:
|
|
481
|
+
return Queue.bounded(bufferSize.bufferSize ?? 16)
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
|
|
464
485
|
/** @internal */
|
|
465
486
|
export const _async = <A, E = never, R = never>(
|
|
466
487
|
register: (
|
|
467
488
|
emit: Emit.Emit<R, E, A, void>
|
|
468
489
|
) => Effect.Effect<void, never, R> | void,
|
|
469
|
-
|
|
490
|
+
bufferSize?: number | "unbounded" | {
|
|
491
|
+
readonly bufferSize?: number | undefined
|
|
492
|
+
readonly strategy?: "dropping" | "sliding" | "suspend" | undefined
|
|
493
|
+
} | undefined
|
|
470
494
|
): Stream.Stream<A, E, R> =>
|
|
471
495
|
Effect.acquireRelease(
|
|
472
|
-
|
|
496
|
+
queueFromBufferOptions<A, E>(bufferSize),
|
|
473
497
|
(queue) => Queue.shutdown(queue)
|
|
474
498
|
).pipe(
|
|
475
499
|
Effect.flatMap((output) =>
|
|
@@ -518,11 +542,14 @@ export const _async = <A, E = never, R = never>(
|
|
|
518
542
|
/** @internal */
|
|
519
543
|
export const asyncEffect = <A, E = never, R = never>(
|
|
520
544
|
register: (emit: Emit.Emit<R, E, A, void>) => Effect.Effect<unknown, E, R>,
|
|
521
|
-
|
|
545
|
+
bufferSize?: number | "unbounded" | {
|
|
546
|
+
readonly bufferSize?: number | undefined
|
|
547
|
+
readonly strategy?: "dropping" | "sliding" | "suspend" | undefined
|
|
548
|
+
} | undefined
|
|
522
549
|
): Stream.Stream<A, E, R> =>
|
|
523
550
|
pipe(
|
|
524
551
|
Effect.acquireRelease(
|
|
525
|
-
|
|
552
|
+
queueFromBufferOptions<A, E>(bufferSize),
|
|
526
553
|
(queue) => Queue.shutdown(queue)
|
|
527
554
|
),
|
|
528
555
|
Effect.flatMap((output) =>
|
|
@@ -573,11 +600,14 @@ export const asyncEffect = <A, E = never, R = never>(
|
|
|
573
600
|
/** @internal */
|
|
574
601
|
export const asyncScoped = <A, E = never, R = never>(
|
|
575
602
|
register: (emit: Emit.Emit<R, E, A, void>) => Effect.Effect<unknown, E, R | Scope.Scope>,
|
|
576
|
-
|
|
603
|
+
bufferSize?: number | "unbounded" | {
|
|
604
|
+
readonly bufferSize?: number | undefined
|
|
605
|
+
readonly strategy?: "dropping" | "sliding" | "suspend" | undefined
|
|
606
|
+
} | undefined
|
|
577
607
|
): Stream.Stream<A, E, Exclude<R, Scope.Scope>> =>
|
|
578
608
|
pipe(
|
|
579
609
|
Effect.acquireRelease(
|
|
580
|
-
|
|
610
|
+
queueFromBufferOptions<A, E>(bufferSize),
|
|
581
611
|
(queue) => Queue.shutdown(queue)
|
|
582
612
|
),
|
|
583
613
|
Effect.flatMap((output) =>
|
|
@@ -682,72 +712,128 @@ export const branchAfter = dual<
|
|
|
682
712
|
export const broadcast = dual<
|
|
683
713
|
<N extends number>(
|
|
684
714
|
n: N,
|
|
685
|
-
maximumLag: number
|
|
715
|
+
maximumLag: number | {
|
|
716
|
+
readonly capacity: "unbounded"
|
|
717
|
+
readonly replay?: number | undefined
|
|
718
|
+
} | {
|
|
719
|
+
readonly capacity: number
|
|
720
|
+
readonly strategy?: "sliding" | "dropping" | "suspend" | undefined
|
|
721
|
+
readonly replay?: number | undefined
|
|
722
|
+
}
|
|
686
723
|
) => <A, E, R>(
|
|
687
724
|
self: Stream.Stream<A, E, R>
|
|
688
|
-
) => Effect.Effect<
|
|
725
|
+
) => Effect.Effect<TupleOf<N, Stream.Stream<A, E>>, never, Scope.Scope | R>,
|
|
689
726
|
<A, E, R, N extends number>(
|
|
690
727
|
self: Stream.Stream<A, E, R>,
|
|
691
728
|
n: N,
|
|
692
|
-
maximumLag: number
|
|
693
|
-
|
|
729
|
+
maximumLag: number | {
|
|
730
|
+
readonly capacity: "unbounded"
|
|
731
|
+
readonly replay?: number | undefined
|
|
732
|
+
} | {
|
|
733
|
+
readonly capacity: number
|
|
734
|
+
readonly strategy?: "sliding" | "dropping" | "suspend" | undefined
|
|
735
|
+
readonly replay?: number | undefined
|
|
736
|
+
}
|
|
737
|
+
) => Effect.Effect<TupleOf<N, Stream.Stream<A, E>>, never, Scope.Scope | R>
|
|
694
738
|
>(3, <A, E, R, N extends number>(
|
|
695
739
|
self: Stream.Stream<A, E, R>,
|
|
696
740
|
n: N,
|
|
697
|
-
maximumLag: number
|
|
698
|
-
|
|
741
|
+
maximumLag: number | {
|
|
742
|
+
readonly capacity: "unbounded"
|
|
743
|
+
readonly replay?: number | undefined
|
|
744
|
+
} | {
|
|
745
|
+
readonly capacity: number
|
|
746
|
+
readonly strategy?: "sliding" | "dropping" | "suspend" | undefined
|
|
747
|
+
readonly replay?: number | undefined
|
|
748
|
+
}
|
|
749
|
+
): Effect.Effect<TupleOf<N, Stream.Stream<A, E>>, never, Scope.Scope | R> =>
|
|
699
750
|
pipe(
|
|
700
751
|
self,
|
|
701
752
|
broadcastedQueues(n, maximumLag),
|
|
702
753
|
Effect.map((tuple) =>
|
|
703
|
-
tuple.map((queue) => flattenTake(fromQueue(queue, { shutdown: true }))) as Stream.Stream
|
|
704
|
-
Stream.Stream<A, E>,
|
|
705
|
-
N
|
|
706
|
-
>
|
|
754
|
+
tuple.map((queue) => flattenTake(fromQueue(queue, { shutdown: true }))) as TupleOf<N, Stream.Stream<A, E>>
|
|
707
755
|
)
|
|
708
756
|
))
|
|
709
757
|
|
|
710
758
|
/** @internal */
|
|
711
759
|
export const broadcastDynamic = dual<
|
|
712
760
|
(
|
|
713
|
-
maximumLag: number
|
|
761
|
+
maximumLag: number | {
|
|
762
|
+
readonly capacity: "unbounded"
|
|
763
|
+
readonly replay?: number | undefined
|
|
764
|
+
} | {
|
|
765
|
+
readonly capacity: number
|
|
766
|
+
readonly strategy?: "sliding" | "dropping" | "suspend" | undefined
|
|
767
|
+
readonly replay?: number | undefined
|
|
768
|
+
}
|
|
714
769
|
) => <A, E, R>(self: Stream.Stream<A, E, R>) => Effect.Effect<Stream.Stream<A, E>, never, Scope.Scope | R>,
|
|
715
770
|
<A, E, R>(
|
|
716
771
|
self: Stream.Stream<A, E, R>,
|
|
717
|
-
maximumLag: number
|
|
772
|
+
maximumLag: number | {
|
|
773
|
+
readonly capacity: "unbounded"
|
|
774
|
+
readonly replay?: number | undefined
|
|
775
|
+
} | {
|
|
776
|
+
readonly capacity: number
|
|
777
|
+
readonly strategy?: "sliding" | "dropping" | "suspend" | undefined
|
|
778
|
+
readonly replay?: number | undefined
|
|
779
|
+
}
|
|
718
780
|
) => Effect.Effect<Stream.Stream<A, E>, never, Scope.Scope | R>
|
|
719
781
|
>(2, <A, E, R>(
|
|
720
782
|
self: Stream.Stream<A, E, R>,
|
|
721
|
-
maximumLag: number
|
|
783
|
+
maximumLag: number | {
|
|
784
|
+
readonly capacity: "unbounded"
|
|
785
|
+
readonly replay?: number | undefined
|
|
786
|
+
} | {
|
|
787
|
+
readonly capacity: number
|
|
788
|
+
readonly strategy?: "sliding" | "dropping" | "suspend" | undefined
|
|
789
|
+
readonly replay?: number | undefined
|
|
790
|
+
}
|
|
722
791
|
): Effect.Effect<Stream.Stream<A, E>, never, Scope.Scope | R> =>
|
|
723
|
-
|
|
724
|
-
self,
|
|
725
|
-
broadcastedQueuesDynamic(maximumLag),
|
|
726
|
-
Effect.map((effect) => flattenTake(flatMap(scoped(effect), fromQueue)))
|
|
727
|
-
))
|
|
792
|
+
Effect.map(toPubSub(self, maximumLag), (pubsub) => flattenTake(fromPubSub(pubsub))))
|
|
728
793
|
|
|
729
794
|
/** @internal */
|
|
730
795
|
export const broadcastedQueues = dual<
|
|
731
796
|
<N extends number>(
|
|
732
797
|
n: N,
|
|
733
|
-
maximumLag: number
|
|
798
|
+
maximumLag: number | {
|
|
799
|
+
readonly capacity: "unbounded"
|
|
800
|
+
readonly replay?: number | undefined
|
|
801
|
+
} | {
|
|
802
|
+
readonly capacity: number
|
|
803
|
+
readonly strategy?: "sliding" | "dropping" | "suspend" | undefined
|
|
804
|
+
readonly replay?: number | undefined
|
|
805
|
+
}
|
|
734
806
|
) => <A, E, R>(
|
|
735
807
|
self: Stream.Stream<A, E, R>
|
|
736
|
-
) => Effect.Effect<
|
|
808
|
+
) => Effect.Effect<TupleOf<N, Queue.Dequeue<Take.Take<A, E>>>, never, Scope.Scope | R>,
|
|
737
809
|
<A, E, R, N extends number>(
|
|
738
810
|
self: Stream.Stream<A, E, R>,
|
|
739
811
|
n: N,
|
|
740
|
-
maximumLag: number
|
|
741
|
-
|
|
812
|
+
maximumLag: number | {
|
|
813
|
+
readonly capacity: "unbounded"
|
|
814
|
+
readonly replay?: number | undefined
|
|
815
|
+
} | {
|
|
816
|
+
readonly capacity: number
|
|
817
|
+
readonly strategy?: "sliding" | "dropping" | "suspend" | undefined
|
|
818
|
+
readonly replay?: number | undefined
|
|
819
|
+
}
|
|
820
|
+
) => Effect.Effect<TupleOf<N, Queue.Dequeue<Take.Take<A, E>>>, never, Scope.Scope | R>
|
|
742
821
|
>(3, <A, E, R, N extends number>(
|
|
743
822
|
self: Stream.Stream<A, E, R>,
|
|
744
823
|
n: N,
|
|
745
|
-
maximumLag: number
|
|
746
|
-
|
|
747
|
-
|
|
824
|
+
maximumLag: number | {
|
|
825
|
+
readonly capacity: "unbounded"
|
|
826
|
+
readonly replay?: number | undefined
|
|
827
|
+
} | {
|
|
828
|
+
readonly capacity: number
|
|
829
|
+
readonly strategy?: "sliding" | "dropping" | "suspend" | undefined
|
|
830
|
+
readonly replay?: number | undefined
|
|
831
|
+
}
|
|
832
|
+
): Effect.Effect<TupleOf<N, Queue.Dequeue<Take.Take<A, E>>>, never, Scope.Scope | R> =>
|
|
833
|
+
Effect.flatMap(pubsubFromOptions(maximumLag), (pubsub) =>
|
|
748
834
|
pipe(
|
|
749
835
|
Effect.all(Array.from({ length: n }, () => PubSub.subscribe(pubsub))) as Effect.Effect<
|
|
750
|
-
|
|
836
|
+
TupleOf<N, Queue.Dequeue<Take.Take<A, E>>>,
|
|
751
837
|
never,
|
|
752
838
|
R
|
|
753
839
|
>,
|
|
@@ -757,17 +843,38 @@ export const broadcastedQueues = dual<
|
|
|
757
843
|
/** @internal */
|
|
758
844
|
export const broadcastedQueuesDynamic = dual<
|
|
759
845
|
(
|
|
760
|
-
maximumLag: number
|
|
846
|
+
maximumLag: number | {
|
|
847
|
+
readonly capacity: "unbounded"
|
|
848
|
+
readonly replay?: number | undefined
|
|
849
|
+
} | {
|
|
850
|
+
readonly capacity: number
|
|
851
|
+
readonly strategy?: "sliding" | "dropping" | "suspend" | undefined
|
|
852
|
+
readonly replay?: number | undefined
|
|
853
|
+
}
|
|
761
854
|
) => <A, E, R>(
|
|
762
855
|
self: Stream.Stream<A, E, R>
|
|
763
856
|
) => Effect.Effect<Effect.Effect<Queue.Dequeue<Take.Take<A, E>>, never, Scope.Scope>, never, Scope.Scope | R>,
|
|
764
857
|
<A, E, R>(
|
|
765
858
|
self: Stream.Stream<A, E, R>,
|
|
766
|
-
maximumLag: number
|
|
859
|
+
maximumLag: number | {
|
|
860
|
+
readonly capacity: "unbounded"
|
|
861
|
+
readonly replay?: number | undefined
|
|
862
|
+
} | {
|
|
863
|
+
readonly capacity: number
|
|
864
|
+
readonly strategy?: "sliding" | "dropping" | "suspend" | undefined
|
|
865
|
+
readonly replay?: number | undefined
|
|
866
|
+
}
|
|
767
867
|
) => Effect.Effect<Effect.Effect<Queue.Dequeue<Take.Take<A, E>>, never, Scope.Scope>, never, Scope.Scope | R>
|
|
768
868
|
>(2, <A, E, R>(
|
|
769
869
|
self: Stream.Stream<A, E, R>,
|
|
770
|
-
maximumLag: number
|
|
870
|
+
maximumLag: number | {
|
|
871
|
+
readonly capacity: "unbounded"
|
|
872
|
+
readonly replay?: number | undefined
|
|
873
|
+
} | {
|
|
874
|
+
readonly capacity: number
|
|
875
|
+
readonly strategy?: "sliding" | "dropping" | "suspend" | undefined
|
|
876
|
+
readonly replay?: number | undefined
|
|
877
|
+
}
|
|
771
878
|
): Effect.Effect<Effect.Effect<Queue.Dequeue<Take.Take<A, E>>, never, Scope.Scope>, never, Scope.Scope | R> =>
|
|
772
879
|
Effect.map(toPubSub(self, maximumLag), PubSub.subscribe))
|
|
773
880
|
|
|
@@ -1764,7 +1871,7 @@ export const distributedWith = dual<
|
|
|
1764
1871
|
) => <E, R>(
|
|
1765
1872
|
self: Stream.Stream<A, E, R>
|
|
1766
1873
|
) => Effect.Effect<
|
|
1767
|
-
|
|
1874
|
+
TupleOf<N, Queue.Dequeue<Exit.Exit<A, Option.Option<E>>>>,
|
|
1768
1875
|
never,
|
|
1769
1876
|
Scope.Scope | R
|
|
1770
1877
|
>,
|
|
@@ -1776,7 +1883,7 @@ export const distributedWith = dual<
|
|
|
1776
1883
|
readonly decide: (a: A) => Effect.Effect<Predicate<number>>
|
|
1777
1884
|
}
|
|
1778
1885
|
) => Effect.Effect<
|
|
1779
|
-
|
|
1886
|
+
TupleOf<N, Queue.Dequeue<Exit.Exit<A, Option.Option<E>>>>,
|
|
1780
1887
|
never,
|
|
1781
1888
|
Scope.Scope | R
|
|
1782
1889
|
>
|
|
@@ -1790,7 +1897,7 @@ export const distributedWith = dual<
|
|
|
1790
1897
|
readonly decide: (a: A) => Effect.Effect<Predicate<number>>
|
|
1791
1898
|
}
|
|
1792
1899
|
): Effect.Effect<
|
|
1793
|
-
|
|
1900
|
+
TupleOf<N, Queue.Dequeue<Exit.Exit<A, Option.Option<E>>>>,
|
|
1794
1901
|
never,
|
|
1795
1902
|
Scope.Scope | R
|
|
1796
1903
|
> =>
|
|
@@ -1829,7 +1936,7 @@ export const distributedWith = dual<
|
|
|
1829
1936
|
Deferred.succeed(deferred, (a: A) =>
|
|
1830
1937
|
Effect.map(options.decide(a), (f) => (key: number) => pipe(f(mappings.get(key)!)))),
|
|
1831
1938
|
Effect.as(
|
|
1832
|
-
Array.from(queues) as
|
|
1939
|
+
Array.from(queues) as TupleOf<N, Queue.Dequeue<Exit.Exit<A, Option.Option<E>>>>
|
|
1833
1940
|
)
|
|
1834
1941
|
)
|
|
1835
1942
|
})
|
|
@@ -3921,36 +4028,36 @@ export const mergeEither = dual<
|
|
|
3921
4028
|
|
|
3922
4029
|
/** @internal */
|
|
3923
4030
|
export const mergeLeft = dual<
|
|
3924
|
-
<
|
|
3925
|
-
|
|
3926
|
-
) => <
|
|
3927
|
-
<
|
|
3928
|
-
|
|
3929
|
-
|
|
3930
|
-
) => Stream.Stream<
|
|
4031
|
+
<AR, ER, RR>(
|
|
4032
|
+
right: Stream.Stream<AR, ER, RR>
|
|
4033
|
+
) => <AL, EL, RL>(left: Stream.Stream<AL, EL, RL>) => Stream.Stream<AL, ER | EL, RR | RL>,
|
|
4034
|
+
<AL, EL, RL, AR, ER, RR>(
|
|
4035
|
+
left: Stream.Stream<AL, EL, RL>,
|
|
4036
|
+
right: Stream.Stream<AR, ER, RR>
|
|
4037
|
+
) => Stream.Stream<AL, ER | EL, RR | RL>
|
|
3931
4038
|
>(
|
|
3932
4039
|
2,
|
|
3933
|
-
<
|
|
3934
|
-
|
|
3935
|
-
|
|
3936
|
-
): Stream.Stream<
|
|
4040
|
+
<AL, EL, RL, AR, ER, RR>(
|
|
4041
|
+
left: Stream.Stream<AL, EL, RL>,
|
|
4042
|
+
right: Stream.Stream<AR, ER, RR>
|
|
4043
|
+
): Stream.Stream<AL, EL | ER, RL | RR> => pipe(left, merge(drain(right)))
|
|
3937
4044
|
)
|
|
3938
4045
|
|
|
3939
4046
|
/** @internal */
|
|
3940
4047
|
export const mergeRight = dual<
|
|
3941
|
-
<
|
|
3942
|
-
|
|
3943
|
-
) => <
|
|
3944
|
-
<
|
|
3945
|
-
|
|
3946
|
-
|
|
3947
|
-
) => Stream.Stream<
|
|
4048
|
+
<AR, ER, RR>(
|
|
4049
|
+
right: Stream.Stream<AR, ER, RR>
|
|
4050
|
+
) => <AL, EL, RL>(left: Stream.Stream<AL, EL, RL>) => Stream.Stream<AR, ER | EL, RR | RL>,
|
|
4051
|
+
<AL, EL, RL, AR, ER, RR>(
|
|
4052
|
+
left: Stream.Stream<AL, EL, RL>,
|
|
4053
|
+
right: Stream.Stream<AR, ER, RR>
|
|
4054
|
+
) => Stream.Stream<AR, ER | EL, RR | RL>
|
|
3948
4055
|
>(
|
|
3949
4056
|
2,
|
|
3950
|
-
<
|
|
3951
|
-
|
|
3952
|
-
|
|
3953
|
-
): Stream.Stream<
|
|
4057
|
+
<AL, EL, RL, AR, ER, RR>(
|
|
4058
|
+
left: Stream.Stream<AL, EL, RL>,
|
|
4059
|
+
right: Stream.Stream<AR, ER, RR>
|
|
4060
|
+
): Stream.Stream<AR, EL | ER, RL | RR> => pipe(drain(left), merge(right))
|
|
3954
4061
|
)
|
|
3955
4062
|
|
|
3956
4063
|
/** @internal */
|
|
@@ -4686,6 +4793,40 @@ export const range = (min: number, max: number, chunkSize = DefaultChunkSize): S
|
|
|
4686
4793
|
return new StreamImpl(go(min, max, chunkSize))
|
|
4687
4794
|
})
|
|
4688
4795
|
|
|
4796
|
+
export const raceAll = <S extends ReadonlyArray<Stream.Stream<any, any, any>>>(
|
|
4797
|
+
...streams: S
|
|
4798
|
+
): Stream.Stream<
|
|
4799
|
+
Stream.Stream.Success<S[number]>,
|
|
4800
|
+
Stream.Stream.Error<S[number]>,
|
|
4801
|
+
Stream.Stream.Context<S[number]>
|
|
4802
|
+
> =>
|
|
4803
|
+
Deferred.make<void>().pipe(
|
|
4804
|
+
Effect.map((halt) => {
|
|
4805
|
+
let winner: number | null = null
|
|
4806
|
+
return mergeAll(
|
|
4807
|
+
streams.map((stream, index) =>
|
|
4808
|
+
stream.pipe(
|
|
4809
|
+
takeWhile(() => {
|
|
4810
|
+
if (winner === null) {
|
|
4811
|
+
winner = index
|
|
4812
|
+
Deferred.unsafeDone(halt, Exit.void)
|
|
4813
|
+
return true
|
|
4814
|
+
}
|
|
4815
|
+
return winner === index
|
|
4816
|
+
}),
|
|
4817
|
+
interruptWhen(
|
|
4818
|
+
Deferred.await(halt).pipe(
|
|
4819
|
+
Effect.flatMap(() => winner === index ? Effect.never : Effect.void)
|
|
4820
|
+
)
|
|
4821
|
+
)
|
|
4822
|
+
)
|
|
4823
|
+
),
|
|
4824
|
+
{ concurrency: streams.length }
|
|
4825
|
+
)
|
|
4826
|
+
}),
|
|
4827
|
+
unwrap
|
|
4828
|
+
)
|
|
4829
|
+
|
|
4689
4830
|
/** @internal */
|
|
4690
4831
|
export const rechunk = dual<
|
|
4691
4832
|
(n: number) => <A, E, R>(self: Stream.Stream<A, E, R>) => Stream.Stream<A, E, R>,
|
|
@@ -5097,37 +5238,44 @@ export const retry = dual<
|
|
|
5097
5238
|
export const run = dual<
|
|
5098
5239
|
<A2, A, E2, R2>(
|
|
5099
5240
|
sink: Sink.Sink<A2, A, unknown, E2, R2>
|
|
5100
|
-
) => <E, R>(self: Stream.Stream<A, E, R>) => Effect.Effect<A2, E2 | E,
|
|
5241
|
+
) => <E, R>(self: Stream.Stream<A, E, R>) => Effect.Effect<A2, E2 | E, Exclude<R | R2, Scope.Scope>>,
|
|
5101
5242
|
<A, E, R, A2, E2, R2>(
|
|
5102
5243
|
self: Stream.Stream<A, E, R>,
|
|
5103
5244
|
sink: Sink.Sink<A2, A, unknown, E2, R2>
|
|
5104
|
-
) => Effect.Effect<A2, E2 | E,
|
|
5245
|
+
) => Effect.Effect<A2, E2 | E, Exclude<R | R2, Scope.Scope>>
|
|
5105
5246
|
>(2, <A, E, R, A2, E2, R2>(
|
|
5106
5247
|
self: Stream.Stream<A, E, R>,
|
|
5107
5248
|
sink: Sink.Sink<A2, A, unknown, E2, R2>
|
|
5108
|
-
): Effect.Effect<A2, E2 | E,
|
|
5249
|
+
): Effect.Effect<A2, E2 | E, Exclude<R | R2, Scope.Scope>> =>
|
|
5109
5250
|
pipe(toChannel(self), channel.pipeToOrFail(_sink.toChannel(sink)), channel.runDrain))
|
|
5110
5251
|
|
|
5111
5252
|
/** @internal */
|
|
5112
|
-
export const runCollect = <A, E, R>(
|
|
5113
|
-
|
|
5253
|
+
export const runCollect = <A, E, R>(
|
|
5254
|
+
self: Stream.Stream<A, E, R>
|
|
5255
|
+
): Effect.Effect<Chunk.Chunk<A>, E, Exclude<R, Scope.Scope>> => pipe(self, run(_sink.collectAll()))
|
|
5114
5256
|
|
|
5115
5257
|
/** @internal */
|
|
5116
|
-
export const runCount = <A, E, R>(self: Stream.Stream<A, E, R>): Effect.Effect<number, E, R
|
|
5258
|
+
export const runCount = <A, E, R>(self: Stream.Stream<A, E, R>): Effect.Effect<number, E, Exclude<R, Scope.Scope>> =>
|
|
5117
5259
|
pipe(self, run(_sink.count))
|
|
5118
5260
|
|
|
5119
5261
|
/** @internal */
|
|
5120
|
-
export const runDrain = <A, E, R>(self: Stream.Stream<A, E, R>): Effect.Effect<void, E, R
|
|
5262
|
+
export const runDrain = <A, E, R>(self: Stream.Stream<A, E, R>): Effect.Effect<void, E, Exclude<R, Scope.Scope>> =>
|
|
5121
5263
|
pipe(self, run(_sink.drain))
|
|
5122
5264
|
|
|
5123
5265
|
/** @internal */
|
|
5124
5266
|
export const runFold = dual<
|
|
5125
|
-
<S, A>(
|
|
5126
|
-
|
|
5267
|
+
<S, A>(
|
|
5268
|
+
s: S,
|
|
5269
|
+
f: (s: S, a: A) => S
|
|
5270
|
+
) => <E, R>(self: Stream.Stream<A, E, R>) => Effect.Effect<S, E, Exclude<R, Scope.Scope>>,
|
|
5271
|
+
<A, E, R, S>(self: Stream.Stream<A, E, R>, s: S, f: (s: S, a: A) => S) => Effect.Effect<S, E, Exclude<R, Scope.Scope>>
|
|
5127
5272
|
>(
|
|
5128
5273
|
3,
|
|
5129
|
-
<A, E, R, S>(
|
|
5130
|
-
|
|
5274
|
+
<A, E, R, S>(
|
|
5275
|
+
self: Stream.Stream<A, E, R>,
|
|
5276
|
+
s: S,
|
|
5277
|
+
f: (s: S, a: A) => S
|
|
5278
|
+
): Effect.Effect<S, E, Exclude<R, Scope.Scope>> => pipe(self, runFoldWhileScoped(s, constTrue, f), Effect.scoped)
|
|
5131
5279
|
)
|
|
5132
5280
|
|
|
5133
5281
|
/** @internal */
|
|
@@ -5135,17 +5283,18 @@ export const runFoldEffect = dual<
|
|
|
5135
5283
|
<S, A, E2, R2>(
|
|
5136
5284
|
s: S,
|
|
5137
5285
|
f: (s: S, a: A) => Effect.Effect<S, E2, R2>
|
|
5138
|
-
) => <E, R>(self: Stream.Stream<A, E, R>) => Effect.Effect<S, E2 | E,
|
|
5286
|
+
) => <E, R>(self: Stream.Stream<A, E, R>) => Effect.Effect<S, E2 | E, Exclude<R | R2, Scope.Scope>>,
|
|
5139
5287
|
<A, E, R, S, E2, R2>(
|
|
5140
5288
|
self: Stream.Stream<A, E, R>,
|
|
5141
5289
|
s: S,
|
|
5142
5290
|
f: (s: S, a: A) => Effect.Effect<S, E2, R2>
|
|
5143
|
-
) => Effect.Effect<S, E2 | E,
|
|
5291
|
+
) => Effect.Effect<S, E2 | E, Exclude<R | R2, Scope.Scope>>
|
|
5144
5292
|
>(3, <A, E, R, S, E2, R2>(
|
|
5145
5293
|
self: Stream.Stream<A, E, R>,
|
|
5146
5294
|
s: S,
|
|
5147
5295
|
f: (s: S, a: A) => Effect.Effect<S, E2, R2>
|
|
5148
|
-
): Effect.Effect<S, E2 | E,
|
|
5296
|
+
): Effect.Effect<S, E2 | E, Exclude<R | R2, Scope.Scope>> =>
|
|
5297
|
+
pipe(self, runFoldWhileScopedEffect(s, constTrue, f), Effect.scoped))
|
|
5149
5298
|
|
|
5150
5299
|
/** @internal */
|
|
5151
5300
|
export const runFoldScoped = dual<
|
|
@@ -5180,14 +5329,19 @@ export const runFoldWhile = dual<
|
|
|
5180
5329
|
s: S,
|
|
5181
5330
|
cont: Predicate<S>,
|
|
5182
5331
|
f: (s: S, a: A) => S
|
|
5183
|
-
) => <E, R>(self: Stream.Stream<A, E, R>) => Effect.Effect<S, E, R
|
|
5184
|
-
<A, E, R, S>(
|
|
5332
|
+
) => <E, R>(self: Stream.Stream<A, E, R>) => Effect.Effect<S, E, Exclude<R, Scope.Scope>>,
|
|
5333
|
+
<A, E, R, S>(
|
|
5334
|
+
self: Stream.Stream<A, E, R>,
|
|
5335
|
+
s: S,
|
|
5336
|
+
cont: Predicate<S>,
|
|
5337
|
+
f: (s: S, a: A) => S
|
|
5338
|
+
) => Effect.Effect<S, E, Exclude<R, Scope.Scope>>
|
|
5185
5339
|
>(4, <A, E, R, S>(
|
|
5186
5340
|
self: Stream.Stream<A, E, R>,
|
|
5187
5341
|
s: S,
|
|
5188
5342
|
cont: Predicate<S>,
|
|
5189
5343
|
f: (s: S, a: A) => S
|
|
5190
|
-
): Effect.Effect<S, E, R
|
|
5344
|
+
): Effect.Effect<S, E, Exclude<R, Scope.Scope>> => pipe(self, runFoldWhileScoped(s, cont, f), Effect.scoped))
|
|
5191
5345
|
|
|
5192
5346
|
/** @internal */
|
|
5193
5347
|
export const runFoldWhileEffect = dual<
|
|
@@ -5195,19 +5349,20 @@ export const runFoldWhileEffect = dual<
|
|
|
5195
5349
|
s: S,
|
|
5196
5350
|
cont: Predicate<S>,
|
|
5197
5351
|
f: (s: S, a: A) => Effect.Effect<S, E2, R2>
|
|
5198
|
-
) => <E, R>(self: Stream.Stream<A, E, R>) => Effect.Effect<S, E2 | E,
|
|
5352
|
+
) => <E, R>(self: Stream.Stream<A, E, R>) => Effect.Effect<S, E2 | E, Exclude<R | R2, Scope.Scope>>,
|
|
5199
5353
|
<A, E, R, S, E2, R2>(
|
|
5200
5354
|
self: Stream.Stream<A, E, R>,
|
|
5201
5355
|
s: S,
|
|
5202
5356
|
cont: Predicate<S>,
|
|
5203
5357
|
f: (s: S, a: A) => Effect.Effect<S, E2, R2>
|
|
5204
|
-
) => Effect.Effect<S, E2 | E,
|
|
5358
|
+
) => Effect.Effect<S, E2 | E, Exclude<R | R2, Scope.Scope>>
|
|
5205
5359
|
>(4, <A, E, R, S, E2, R2>(
|
|
5206
5360
|
self: Stream.Stream<A, E, R>,
|
|
5207
5361
|
s: S,
|
|
5208
5362
|
cont: Predicate<S>,
|
|
5209
5363
|
f: (s: S, a: A) => Effect.Effect<S, E2, R2>
|
|
5210
|
-
): Effect.Effect<S, E2 | E,
|
|
5364
|
+
): Effect.Effect<S, E2 | E, Exclude<R | R2, Scope.Scope>> =>
|
|
5365
|
+
pipe(self, runFoldWhileScopedEffect(s, cont, f), Effect.scoped))
|
|
5211
5366
|
|
|
5212
5367
|
/** @internal */
|
|
5213
5368
|
export const runFoldWhileScoped = dual<
|
|
@@ -5253,29 +5408,29 @@ export const runFoldWhileScopedEffect = dual<
|
|
|
5253
5408
|
export const runForEach = dual<
|
|
5254
5409
|
<A, X, E2, R2>(
|
|
5255
5410
|
f: (a: A) => Effect.Effect<X, E2, R2>
|
|
5256
|
-
) => <E, R>(self: Stream.Stream<A, E, R>) => Effect.Effect<void, E2 | E,
|
|
5411
|
+
) => <E, R>(self: Stream.Stream<A, E, R>) => Effect.Effect<void, E2 | E, Exclude<R | R2, Scope.Scope>>,
|
|
5257
5412
|
<A, E, R, X, E2, R2>(
|
|
5258
5413
|
self: Stream.Stream<A, E, R>,
|
|
5259
5414
|
f: (a: A) => Effect.Effect<X, E2, R2>
|
|
5260
|
-
) => Effect.Effect<void, E2 | E,
|
|
5415
|
+
) => Effect.Effect<void, E2 | E, Exclude<R | R2, Scope.Scope>>
|
|
5261
5416
|
>(2, <A, E, R, X, E2, R2>(
|
|
5262
5417
|
self: Stream.Stream<A, E, R>,
|
|
5263
5418
|
f: (a: A) => Effect.Effect<X, E2, R2>
|
|
5264
|
-
): Effect.Effect<void, E2 | E,
|
|
5419
|
+
): Effect.Effect<void, E2 | E, Exclude<R | R2, Scope.Scope>> => pipe(self, run(_sink.forEach(f))))
|
|
5265
5420
|
|
|
5266
5421
|
/** @internal */
|
|
5267
5422
|
export const runForEachChunk = dual<
|
|
5268
5423
|
<A, X, E2, R2>(
|
|
5269
5424
|
f: (a: Chunk.Chunk<A>) => Effect.Effect<X, E2, R2>
|
|
5270
|
-
) => <E, R>(self: Stream.Stream<A, E, R>) => Effect.Effect<void, E2 | E,
|
|
5425
|
+
) => <E, R>(self: Stream.Stream<A, E, R>) => Effect.Effect<void, E2 | E, Exclude<R | R2, Scope.Scope>>,
|
|
5271
5426
|
<A, E, R, X, E2, R2>(
|
|
5272
5427
|
self: Stream.Stream<A, E, R>,
|
|
5273
5428
|
f: (a: Chunk.Chunk<A>) => Effect.Effect<X, E2, R2>
|
|
5274
|
-
) => Effect.Effect<void, E2 | E,
|
|
5429
|
+
) => Effect.Effect<void, E2 | E, Exclude<R | R2, Scope.Scope>>
|
|
5275
5430
|
>(2, <A, E, R, X, E2, R2>(
|
|
5276
5431
|
self: Stream.Stream<A, E, R>,
|
|
5277
5432
|
f: (a: Chunk.Chunk<A>) => Effect.Effect<X, E2, R2>
|
|
5278
|
-
): Effect.Effect<void, E2 | E,
|
|
5433
|
+
): Effect.Effect<void, E2 | E, Exclude<R | R2, Scope.Scope>> => pipe(self, run(_sink.forEachChunk(f))))
|
|
5279
5434
|
|
|
5280
5435
|
/** @internal */
|
|
5281
5436
|
export const runForEachChunkScoped = dual<
|
|
@@ -5309,15 +5464,15 @@ export const runForEachScoped = dual<
|
|
|
5309
5464
|
export const runForEachWhile = dual<
|
|
5310
5465
|
<A, E2, R2>(
|
|
5311
5466
|
f: (a: A) => Effect.Effect<boolean, E2, R2>
|
|
5312
|
-
) => <E, R>(self: Stream.Stream<A, E, R>) => Effect.Effect<void, E2 | E,
|
|
5467
|
+
) => <E, R>(self: Stream.Stream<A, E, R>) => Effect.Effect<void, E2 | E, Exclude<R | R2, Scope.Scope>>,
|
|
5313
5468
|
<A, E, R, E2, R2>(
|
|
5314
5469
|
self: Stream.Stream<A, E, R>,
|
|
5315
5470
|
f: (a: A) => Effect.Effect<boolean, E2, R2>
|
|
5316
|
-
) => Effect.Effect<void, E2 | E,
|
|
5471
|
+
) => Effect.Effect<void, E2 | E, Exclude<R | R2, Scope.Scope>>
|
|
5317
5472
|
>(2, <A, E, R, E2, R2>(
|
|
5318
5473
|
self: Stream.Stream<A, E, R>,
|
|
5319
5474
|
f: (a: A) => Effect.Effect<boolean, E2, R2>
|
|
5320
|
-
): Effect.Effect<void, E2 | E,
|
|
5475
|
+
): Effect.Effect<void, E2 | E, Exclude<R | R2, Scope.Scope>> => pipe(self, run(_sink.forEachWhile(f))))
|
|
5321
5476
|
|
|
5322
5477
|
/** @internal */
|
|
5323
5478
|
export const runForEachWhileScoped = dual<
|
|
@@ -5334,17 +5489,25 @@ export const runForEachWhileScoped = dual<
|
|
|
5334
5489
|
): Effect.Effect<void, E2 | E, R2 | R | Scope.Scope> => pipe(self, runScoped(_sink.forEachWhile(f))))
|
|
5335
5490
|
|
|
5336
5491
|
/** @internal */
|
|
5337
|
-
export const runHead = <A, E, R>(
|
|
5338
|
-
|
|
5492
|
+
export const runHead = <A, E, R>(
|
|
5493
|
+
self: Stream.Stream<A, E, R>
|
|
5494
|
+
): Effect.Effect<Option.Option<A>, E, Exclude<R, Scope.Scope>> => pipe(self, run(_sink.head<A>()))
|
|
5339
5495
|
|
|
5340
5496
|
/** @internal */
|
|
5341
5497
|
export const runIntoPubSub = dual<
|
|
5342
|
-
<A, E>(
|
|
5343
|
-
|
|
5498
|
+
<A, E>(
|
|
5499
|
+
pubsub: PubSub.PubSub<Take.Take<A, E>>
|
|
5500
|
+
) => <R>(self: Stream.Stream<A, E, R>) => Effect.Effect<void, never, Exclude<R, Scope.Scope>>,
|
|
5501
|
+
<A, E, R>(
|
|
5502
|
+
self: Stream.Stream<A, E, R>,
|
|
5503
|
+
pubsub: PubSub.PubSub<Take.Take<A, E>>
|
|
5504
|
+
) => Effect.Effect<void, never, Exclude<R, Scope.Scope>>
|
|
5344
5505
|
>(
|
|
5345
5506
|
2,
|
|
5346
|
-
<A, E, R>(
|
|
5347
|
-
|
|
5507
|
+
<A, E, R>(
|
|
5508
|
+
self: Stream.Stream<A, E, R>,
|
|
5509
|
+
pubsub: PubSub.PubSub<Take.Take<A, E>>
|
|
5510
|
+
): Effect.Effect<void, never, Exclude<R, Scope.Scope>> => pipe(self, runIntoQueue(pubsub))
|
|
5348
5511
|
)
|
|
5349
5512
|
|
|
5350
5513
|
/** @internal */
|
|
@@ -5363,12 +5526,19 @@ export const runIntoPubSubScoped = dual<
|
|
|
5363
5526
|
|
|
5364
5527
|
/** @internal */
|
|
5365
5528
|
export const runIntoQueue = dual<
|
|
5366
|
-
<A, E>(
|
|
5367
|
-
|
|
5529
|
+
<A, E>(
|
|
5530
|
+
queue: Queue.Enqueue<Take.Take<A, E>>
|
|
5531
|
+
) => <R>(self: Stream.Stream<A, E, R>) => Effect.Effect<void, never, Exclude<R, Scope.Scope>>,
|
|
5532
|
+
<A, E, R>(
|
|
5533
|
+
self: Stream.Stream<A, E, R>,
|
|
5534
|
+
queue: Queue.Enqueue<Take.Take<A, E>>
|
|
5535
|
+
) => Effect.Effect<void, never, Exclude<R, Scope.Scope>>
|
|
5368
5536
|
>(
|
|
5369
5537
|
2,
|
|
5370
|
-
<A, E, R>(
|
|
5371
|
-
|
|
5538
|
+
<A, E, R>(
|
|
5539
|
+
self: Stream.Stream<A, E, R>,
|
|
5540
|
+
queue: Queue.Enqueue<Take.Take<A, E>>
|
|
5541
|
+
): Effect.Effect<void, never, Exclude<R, Scope.Scope>> => pipe(self, runIntoQueueScoped(queue), Effect.scoped)
|
|
5372
5542
|
)
|
|
5373
5543
|
|
|
5374
5544
|
/** @internal */
|
|
@@ -5431,8 +5601,9 @@ export const runIntoQueueScoped = dual<
|
|
|
5431
5601
|
})
|
|
5432
5602
|
|
|
5433
5603
|
/** @internal */
|
|
5434
|
-
export const runLast = <A, E, R>(
|
|
5435
|
-
|
|
5604
|
+
export const runLast = <A, E, R>(
|
|
5605
|
+
self: Stream.Stream<A, E, R>
|
|
5606
|
+
): Effect.Effect<Option.Option<A>, E, Exclude<R, Scope.Scope>> => pipe(self, run(_sink.last()))
|
|
5436
5607
|
|
|
5437
5608
|
/** @internal */
|
|
5438
5609
|
export const runScoped = dual<
|
|
@@ -5455,7 +5626,7 @@ export const runScoped = dual<
|
|
|
5455
5626
|
))
|
|
5456
5627
|
|
|
5457
5628
|
/** @internal */
|
|
5458
|
-
export const runSum = <E, R>(self: Stream.Stream<number, E, R>): Effect.Effect<number, E, R
|
|
5629
|
+
export const runSum = <E, R>(self: Stream.Stream<number, E, R>): Effect.Effect<number, E, Exclude<R, Scope.Scope>> =>
|
|
5459
5630
|
pipe(self, run(_sink.sum))
|
|
5460
5631
|
|
|
5461
5632
|
/** @internal */
|
|
@@ -6435,24 +6606,67 @@ export const timeoutTo = dual<
|
|
|
6435
6606
|
}
|
|
6436
6607
|
)
|
|
6437
6608
|
|
|
6609
|
+
const pubsubFromOptions = <A, E>(
|
|
6610
|
+
options: number | {
|
|
6611
|
+
readonly capacity: "unbounded"
|
|
6612
|
+
readonly replay?: number | undefined
|
|
6613
|
+
} | {
|
|
6614
|
+
readonly capacity: number
|
|
6615
|
+
readonly strategy?: "sliding" | "dropping" | "suspend" | undefined
|
|
6616
|
+
readonly replay?: number | undefined
|
|
6617
|
+
}
|
|
6618
|
+
): Effect.Effect<PubSub.PubSub<Take.Take<A, E>>> => {
|
|
6619
|
+
if (typeof options === "number") {
|
|
6620
|
+
return PubSub.bounded(options)
|
|
6621
|
+
} else if (options.capacity === "unbounded") {
|
|
6622
|
+
return PubSub.unbounded({ replay: options.replay })
|
|
6623
|
+
}
|
|
6624
|
+
switch (options.strategy) {
|
|
6625
|
+
case "dropping":
|
|
6626
|
+
return PubSub.dropping(options)
|
|
6627
|
+
case "sliding":
|
|
6628
|
+
return PubSub.sliding(options)
|
|
6629
|
+
default:
|
|
6630
|
+
return PubSub.bounded(options)
|
|
6631
|
+
}
|
|
6632
|
+
}
|
|
6633
|
+
|
|
6438
6634
|
/** @internal */
|
|
6439
6635
|
export const toPubSub = dual<
|
|
6440
6636
|
(
|
|
6441
|
-
capacity: number
|
|
6637
|
+
capacity: number | {
|
|
6638
|
+
readonly capacity: "unbounded"
|
|
6639
|
+
readonly replay?: number | undefined
|
|
6640
|
+
} | {
|
|
6641
|
+
readonly capacity: number
|
|
6642
|
+
readonly strategy?: "sliding" | "dropping" | "suspend" | undefined
|
|
6643
|
+
readonly replay?: number | undefined
|
|
6644
|
+
}
|
|
6442
6645
|
) => <A, E, R>(self: Stream.Stream<A, E, R>) => Effect.Effect<PubSub.PubSub<Take.Take<A, E>>, never, Scope.Scope | R>,
|
|
6443
6646
|
<A, E, R>(
|
|
6444
6647
|
self: Stream.Stream<A, E, R>,
|
|
6445
|
-
capacity: number
|
|
6648
|
+
capacity: number | {
|
|
6649
|
+
readonly capacity: "unbounded"
|
|
6650
|
+
readonly replay?: number | undefined
|
|
6651
|
+
} | {
|
|
6652
|
+
readonly capacity: number
|
|
6653
|
+
readonly strategy?: "sliding" | "dropping" | "suspend" | undefined
|
|
6654
|
+
readonly replay?: number | undefined
|
|
6655
|
+
}
|
|
6446
6656
|
) => Effect.Effect<PubSub.PubSub<Take.Take<A, E>>, never, Scope.Scope | R>
|
|
6447
6657
|
>(2, <A, E, R>(
|
|
6448
6658
|
self: Stream.Stream<A, E, R>,
|
|
6449
|
-
capacity: number
|
|
6659
|
+
capacity: number | {
|
|
6660
|
+
readonly capacity: "unbounded"
|
|
6661
|
+
readonly replay?: number | undefined
|
|
6662
|
+
} | {
|
|
6663
|
+
readonly capacity: number
|
|
6664
|
+
readonly strategy?: "sliding" | "dropping" | "suspend" | undefined
|
|
6665
|
+
readonly replay?: number | undefined
|
|
6666
|
+
}
|
|
6450
6667
|
): Effect.Effect<PubSub.PubSub<Take.Take<A, E>>, never, Scope.Scope | R> =>
|
|
6451
6668
|
pipe(
|
|
6452
|
-
Effect.acquireRelease(
|
|
6453
|
-
PubSub.bounded<Take.Take<A, E>>(capacity),
|
|
6454
|
-
(pubsub) => PubSub.shutdown(pubsub)
|
|
6455
|
-
),
|
|
6669
|
+
Effect.acquireRelease(pubsubFromOptions<A, E>(capacity), (pubsub) => PubSub.shutdown(pubsub)),
|
|
6456
6670
|
Effect.tap((pubsub) => pipe(self, runIntoPubSubScoped(pubsub), Effect.forkScoped))
|
|
6457
6671
|
))
|
|
6458
6672
|
|