effect 3.6.8 → 3.7.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/dist/cjs/Array.js +2 -2
- package/dist/cjs/Array.js.map +1 -1
- package/dist/cjs/Config.js +8 -1
- package/dist/cjs/Config.js.map +1 -1
- package/dist/cjs/Context.js +9 -1
- package/dist/cjs/Context.js.map +1 -1
- package/dist/cjs/Effect.js +26 -4
- package/dist/cjs/Effect.js.map +1 -1
- package/dist/cjs/Fiber.js.map +1 -1
- package/dist/cjs/FiberHandle.js +20 -8
- package/dist/cjs/FiberHandle.js.map +1 -1
- package/dist/cjs/FiberMap.js +22 -11
- package/dist/cjs/FiberMap.js.map +1 -1
- package/dist/cjs/FiberSet.js +23 -9
- package/dist/cjs/FiberSet.js.map +1 -1
- package/dist/cjs/Micro.js +15 -2
- package/dist/cjs/Micro.js.map +1 -1
- package/dist/cjs/Stream.js +30 -2
- package/dist/cjs/Stream.js.map +1 -1
- package/dist/cjs/internal/config.js +7 -1
- package/dist/cjs/internal/config.js.map +1 -1
- package/dist/cjs/internal/context.js +8 -1
- package/dist/cjs/internal/context.js.map +1 -1
- package/dist/cjs/internal/effect/circular.js +3 -1
- package/dist/cjs/internal/effect/circular.js.map +1 -1
- package/dist/cjs/internal/fiberRuntime.js +23 -15
- package/dist/cjs/internal/fiberRuntime.js.map +1 -1
- package/dist/cjs/internal/stream.js +7 -4
- package/dist/cjs/internal/stream.js.map +1 -1
- package/dist/cjs/internal/version.js +1 -1
- package/dist/dts/Array.d.ts +9 -9
- package/dist/dts/Array.d.ts.map +1 -1
- package/dist/dts/Config.d.ts +7 -0
- package/dist/dts/Config.d.ts.map +1 -1
- package/dist/dts/Context.d.ts +12 -0
- package/dist/dts/Context.d.ts.map +1 -1
- package/dist/dts/Effect.d.ts +88 -8
- package/dist/dts/Effect.d.ts.map +1 -1
- package/dist/dts/Fiber.d.ts +5 -1
- package/dist/dts/Fiber.d.ts.map +1 -1
- package/dist/dts/FiberHandle.d.ts +7 -0
- package/dist/dts/FiberHandle.d.ts.map +1 -1
- package/dist/dts/FiberMap.d.ts +7 -0
- package/dist/dts/FiberMap.d.ts.map +1 -1
- package/dist/dts/FiberSet.d.ts +17 -5
- package/dist/dts/FiberSet.d.ts.map +1 -1
- package/dist/dts/Micro.d.ts +6 -0
- package/dist/dts/Micro.d.ts.map +1 -1
- package/dist/dts/Stream.d.ts +30 -0
- package/dist/dts/Stream.d.ts.map +1 -1
- package/dist/dts/internal/stream.d.ts +0 -1
- package/dist/dts/internal/stream.d.ts.map +1 -1
- package/dist/esm/Array.js +2 -2
- package/dist/esm/Array.js.map +1 -1
- package/dist/esm/Config.js +7 -0
- package/dist/esm/Config.js.map +1 -1
- package/dist/esm/Context.js +8 -0
- package/dist/esm/Context.js.map +1 -1
- package/dist/esm/Effect.js +22 -0
- package/dist/esm/Effect.js.map +1 -1
- package/dist/esm/Fiber.js.map +1 -1
- package/dist/esm/FiberHandle.js +20 -8
- package/dist/esm/FiberHandle.js.map +1 -1
- package/dist/esm/FiberMap.js +22 -11
- package/dist/esm/FiberMap.js.map +1 -1
- package/dist/esm/FiberSet.js +23 -9
- package/dist/esm/FiberSet.js.map +1 -1
- package/dist/esm/Micro.js +13 -1
- package/dist/esm/Micro.js.map +1 -1
- package/dist/esm/Stream.js +27 -0
- package/dist/esm/Stream.js.map +1 -1
- package/dist/esm/internal/config.js +5 -0
- package/dist/esm/internal/config.js.map +1 -1
- package/dist/esm/internal/context.js +7 -0
- package/dist/esm/internal/context.js.map +1 -1
- package/dist/esm/internal/effect/circular.js +2 -0
- package/dist/esm/internal/effect/circular.js.map +1 -1
- package/dist/esm/internal/fiberRuntime.js +20 -13
- package/dist/esm/internal/fiberRuntime.js.map +1 -1
- package/dist/esm/internal/stream.js +4 -1
- package/dist/esm/internal/stream.js.map +1 -1
- package/dist/esm/internal/version.js +1 -1
- package/package.json +1 -1
- package/src/Array.ts +41 -10
- package/src/Config.ts +8 -0
- package/src/Context.ts +13 -0
- package/src/Effect.ts +174 -21
- package/src/Fiber.ts +8 -1
- package/src/FiberHandle.ts +46 -10
- package/src/FiberMap.ts +48 -13
- package/src/FiberSet.ts +65 -24
- package/src/Micro.ts +14 -1
- package/src/Stream.ts +36 -0
- package/src/internal/config.ts +10 -0
- package/src/internal/context.ts +12 -0
- package/src/internal/effect/circular.ts +91 -0
- package/src/internal/fiberRuntime.ts +101 -30
- package/src/internal/stream.ts +19 -1
- package/src/internal/version.ts +1 -1
package/src/internal/config.ts
CHANGED
|
@@ -447,6 +447,16 @@ export const string = (name?: string): Config.Config<string> => {
|
|
|
447
447
|
return name === undefined ? config : nested(config, name)
|
|
448
448
|
}
|
|
449
449
|
|
|
450
|
+
/** @internal */
|
|
451
|
+
export const nonEmptyString = (name?: string): Config.Config<string> => {
|
|
452
|
+
const config = primitive(
|
|
453
|
+
"a non-empty text property",
|
|
454
|
+
Either.liftPredicate((text) => text.length > 0, () => configError.MissingData([], "Expected a non-empty string"))
|
|
455
|
+
)
|
|
456
|
+
|
|
457
|
+
return name === undefined ? config : nested(config, name)
|
|
458
|
+
}
|
|
459
|
+
|
|
450
460
|
/** @internal */
|
|
451
461
|
export const all = <const Arg extends Iterable<Config.Config<any>> | Record<string, Config.Config<any>>>(
|
|
452
462
|
arg: Arg
|
package/src/internal/context.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type * as C from "../Context.js"
|
|
2
2
|
import * as Equal from "../Equal.js"
|
|
3
|
+
import type { LazyArg } from "../Function.js"
|
|
3
4
|
import { dual } from "../Function.js"
|
|
4
5
|
import * as Hash from "../Hash.js"
|
|
5
6
|
import { format, NodeInspectSymbol, toJSON } from "../Inspectable.js"
|
|
@@ -209,6 +210,17 @@ export const get: {
|
|
|
209
210
|
<Services, T extends C.ValidTagsById<Services>>(self: C.Context<Services>, tag: T): C.Tag.Service<T>
|
|
210
211
|
} = unsafeGet
|
|
211
212
|
|
|
213
|
+
/** @internal */
|
|
214
|
+
export const getOrElse = dual<
|
|
215
|
+
<S, I, B>(tag: C.Tag<I, S>, orElse: LazyArg<B>) => <Services>(self: C.Context<Services>) => S | B,
|
|
216
|
+
<Services, S, I, B>(self: C.Context<Services>, tag: C.Tag<I, S>, orElse: LazyArg<B>) => S | B
|
|
217
|
+
>(3, (self, tag, orElse) => {
|
|
218
|
+
if (!self.unsafeMap.has(tag.key)) {
|
|
219
|
+
return orElse()
|
|
220
|
+
}
|
|
221
|
+
return self.unsafeMap.get(tag.key)! as any
|
|
222
|
+
})
|
|
223
|
+
|
|
212
224
|
/** @internal */
|
|
213
225
|
export const getOption = dual<
|
|
214
226
|
<S, I>(tag: C.Tag<I, S>) => <Services>(self: C.Context<Services>) => O.Option<S>,
|
|
@@ -22,6 +22,7 @@ import { currentScheduler } from "../../Scheduler.js"
|
|
|
22
22
|
import type * as Scope from "../../Scope.js"
|
|
23
23
|
import type * as Supervisor from "../../Supervisor.js"
|
|
24
24
|
import type * as Synchronized from "../../SynchronizedRef.js"
|
|
25
|
+
import type * as Types from "../../Types.js"
|
|
25
26
|
import * as internalCause from "../cause.js"
|
|
26
27
|
import * as effect from "../core-effect.js"
|
|
27
28
|
import * as core from "../core.js"
|
|
@@ -704,3 +705,93 @@ export const zipWithFiber = dual<
|
|
|
704
705
|
return pipeArguments(this, arguments)
|
|
705
706
|
}
|
|
706
707
|
}))
|
|
708
|
+
|
|
709
|
+
/* @internal */
|
|
710
|
+
export const bindAll: {
|
|
711
|
+
<
|
|
712
|
+
A extends object,
|
|
713
|
+
X extends Record<string, Effect.Effect<any, any, any>>,
|
|
714
|
+
O extends {
|
|
715
|
+
readonly concurrency?: Types.Concurrency | undefined
|
|
716
|
+
readonly batching?: boolean | "inherit" | undefined
|
|
717
|
+
readonly mode?: "default" | "validate" | "either" | undefined
|
|
718
|
+
readonly concurrentFinalizers?: boolean | undefined
|
|
719
|
+
}
|
|
720
|
+
>(
|
|
721
|
+
f: (a: A) => [Extract<keyof X, keyof A>] extends [never] ? X : `Duplicate keys`,
|
|
722
|
+
options?: undefined | O
|
|
723
|
+
): <E1, R1>(
|
|
724
|
+
self: Effect.Effect<A, E1, R1>
|
|
725
|
+
) => [Effect.All.ReturnObject<X, false, Effect.All.ExtractMode<O>>] extends
|
|
726
|
+
[Effect.Effect<infer Success, infer Error, infer Context>] ? Effect.Effect<
|
|
727
|
+
{
|
|
728
|
+
[K in keyof A | keyof Success]: K extends keyof A ? A[K]
|
|
729
|
+
: K extends keyof Success ? Success[K]
|
|
730
|
+
: never
|
|
731
|
+
},
|
|
732
|
+
| E1
|
|
733
|
+
| Error,
|
|
734
|
+
R1 | Context
|
|
735
|
+
>
|
|
736
|
+
: never
|
|
737
|
+
|
|
738
|
+
<
|
|
739
|
+
A extends object,
|
|
740
|
+
X extends Record<string, Effect.Effect<any, any, any>>,
|
|
741
|
+
O extends {
|
|
742
|
+
readonly concurrency?: Types.Concurrency | undefined
|
|
743
|
+
readonly batching?: boolean | "inherit" | undefined
|
|
744
|
+
readonly mode?: "default" | "validate" | "either" | undefined
|
|
745
|
+
readonly concurrentFinalizers?: boolean | undefined
|
|
746
|
+
},
|
|
747
|
+
E1,
|
|
748
|
+
R1
|
|
749
|
+
>(
|
|
750
|
+
self: Effect.Effect<A, E1, R1>,
|
|
751
|
+
f: (a: A) => [Extract<keyof X, keyof A>] extends [never] ? X : `Duplicate keys`,
|
|
752
|
+
options?: undefined | {
|
|
753
|
+
readonly concurrency?: Types.Concurrency | undefined
|
|
754
|
+
readonly batching?: boolean | "inherit" | undefined
|
|
755
|
+
readonly mode?: "default" | "validate" | "either" | undefined
|
|
756
|
+
readonly concurrentFinalizers?: boolean | undefined
|
|
757
|
+
}
|
|
758
|
+
): [Effect.All.ReturnObject<X, false, Effect.All.ExtractMode<O>>] extends
|
|
759
|
+
[Effect.Effect<infer Success, infer Error, infer Context>] ? Effect.Effect<
|
|
760
|
+
{
|
|
761
|
+
[K in keyof A | keyof Success]: K extends keyof A ? A[K]
|
|
762
|
+
: K extends keyof Success ? Success[K]
|
|
763
|
+
: never
|
|
764
|
+
},
|
|
765
|
+
| E1
|
|
766
|
+
| Error,
|
|
767
|
+
R1 | Context
|
|
768
|
+
>
|
|
769
|
+
: never
|
|
770
|
+
} = dual((args) => core.isEffect(args[0]), <
|
|
771
|
+
A extends object,
|
|
772
|
+
X extends Record<string, Effect.Effect<any, any, any>>,
|
|
773
|
+
O extends {
|
|
774
|
+
readonly concurrency?: Types.Concurrency | undefined
|
|
775
|
+
readonly batching?: boolean | "inherit" | undefined
|
|
776
|
+
readonly mode?: "default" | "validate" | "either" | undefined
|
|
777
|
+
readonly concurrentFinalizers?: boolean | undefined
|
|
778
|
+
},
|
|
779
|
+
E1,
|
|
780
|
+
R1
|
|
781
|
+
>(
|
|
782
|
+
self: Effect.Effect<A, E1, R1>,
|
|
783
|
+
f: (a: A) => X,
|
|
784
|
+
options?: undefined | O
|
|
785
|
+
) =>
|
|
786
|
+
core.flatMap(
|
|
787
|
+
self,
|
|
788
|
+
(a) =>
|
|
789
|
+
(fiberRuntime.all(f(a), options) as Effect.All.ReturnObject<
|
|
790
|
+
X,
|
|
791
|
+
Effect.All.IsDiscard<O>,
|
|
792
|
+
Effect.All.ExtractMode<O>
|
|
793
|
+
>)
|
|
794
|
+
.pipe(
|
|
795
|
+
core.map((record) => Object.assign({}, a, record))
|
|
796
|
+
)
|
|
797
|
+
))
|
|
@@ -1643,10 +1643,12 @@ export const exists: {
|
|
|
1643
1643
|
<A, E, R>(f: (a: A, i: number) => Effect.Effect<boolean, E, R>, options?: {
|
|
1644
1644
|
readonly concurrency?: Concurrency | undefined
|
|
1645
1645
|
readonly batching?: boolean | "inherit" | undefined
|
|
1646
|
+
readonly concurrentFinalizers?: boolean | undefined
|
|
1646
1647
|
}): (elements: Iterable<A>) => Effect.Effect<boolean, E, R>
|
|
1647
1648
|
<A, E, R>(elements: Iterable<A>, f: (a: A, i: number) => Effect.Effect<boolean, E, R>, options?: {
|
|
1648
1649
|
readonly concurrency?: Concurrency | undefined
|
|
1649
1650
|
readonly batching?: boolean | "inherit" | undefined
|
|
1651
|
+
readonly concurrentFinalizers?: boolean | undefined
|
|
1650
1652
|
}): Effect.Effect<boolean, E, R>
|
|
1651
1653
|
} = dual(
|
|
1652
1654
|
(args) => Predicate.isIterable(args[0]) && !core.isEffect(args[0]),
|
|
@@ -1695,12 +1697,14 @@ export const filter = dual<
|
|
|
1695
1697
|
readonly concurrency?: Concurrency | undefined
|
|
1696
1698
|
readonly batching?: boolean | "inherit" | undefined
|
|
1697
1699
|
readonly negate?: boolean | undefined
|
|
1700
|
+
readonly concurrentFinalizers?: boolean | undefined
|
|
1698
1701
|
}
|
|
1699
1702
|
) => (elements: Iterable<A>) => Effect.Effect<Array<A>, E, R>,
|
|
1700
1703
|
<A, E, R>(elements: Iterable<A>, f: (a: NoInfer<A>, i: number) => Effect.Effect<boolean, E, R>, options?: {
|
|
1701
1704
|
readonly concurrency?: Concurrency | undefined
|
|
1702
1705
|
readonly batching?: boolean | "inherit" | undefined
|
|
1703
1706
|
readonly negate?: boolean | undefined
|
|
1707
|
+
readonly concurrentFinalizers?: boolean | undefined
|
|
1704
1708
|
}) => Effect.Effect<Array<A>, E, R>
|
|
1705
1709
|
>(
|
|
1706
1710
|
(args) => Predicate.isIterable(args[0]) && !core.isEffect(args[0]),
|
|
@@ -1708,6 +1712,7 @@ export const filter = dual<
|
|
|
1708
1712
|
readonly concurrency?: Concurrency | undefined
|
|
1709
1713
|
readonly batching?: boolean | "inherit" | undefined
|
|
1710
1714
|
readonly negate?: boolean | undefined
|
|
1715
|
+
readonly concurrentFinalizers?: boolean | undefined
|
|
1711
1716
|
}) => {
|
|
1712
1717
|
const predicate = options?.negate ? (a: A, i: number) => core.map(f(a, i), Boolean.not) : f
|
|
1713
1718
|
return concurrency.matchSimple(
|
|
@@ -1767,6 +1772,7 @@ const allValidate = (
|
|
|
1767
1772
|
readonly batching?: boolean | "inherit" | undefined
|
|
1768
1773
|
readonly discard?: boolean | undefined
|
|
1769
1774
|
readonly mode?: "default" | "validate" | "either" | undefined
|
|
1775
|
+
readonly concurrentFinalizers?: boolean | undefined
|
|
1770
1776
|
}
|
|
1771
1777
|
) => {
|
|
1772
1778
|
const eitherEffects: Array<Effect.Effect<Either.Either<unknown, unknown>, never, unknown>> = []
|
|
@@ -1816,6 +1822,7 @@ const allEither = (
|
|
|
1816
1822
|
readonly batching?: boolean | "inherit" | undefined
|
|
1817
1823
|
readonly discard?: boolean | undefined
|
|
1818
1824
|
readonly mode?: "default" | "validate" | "either" | undefined
|
|
1825
|
+
readonly concurrentFinalizers?: boolean | undefined
|
|
1819
1826
|
}
|
|
1820
1827
|
) => {
|
|
1821
1828
|
const eitherEffects: Array<Effect.Effect<Either.Either<unknown, unknown>, never, unknown>> = []
|
|
@@ -1851,6 +1858,7 @@ export const all = <
|
|
|
1851
1858
|
readonly batching?: boolean | "inherit" | undefined
|
|
1852
1859
|
readonly discard?: boolean | undefined
|
|
1853
1860
|
readonly mode?: "default" | "validate" | "either" | undefined
|
|
1861
|
+
readonly concurrentFinalizers?: boolean | undefined
|
|
1854
1862
|
}
|
|
1855
1863
|
>(
|
|
1856
1864
|
arg: Arg,
|
|
@@ -1879,6 +1887,7 @@ export const allWith = <
|
|
|
1879
1887
|
readonly batching?: boolean | "inherit" | undefined
|
|
1880
1888
|
readonly discard?: boolean | undefined
|
|
1881
1889
|
readonly mode?: "default" | "validate" | "either" | undefined
|
|
1890
|
+
readonly concurrentFinalizers?: boolean | undefined
|
|
1882
1891
|
}
|
|
1883
1892
|
>(options?: O) =>
|
|
1884
1893
|
<const Arg extends Iterable<Effect.Effect<any, any, any>> | Record<string, Effect.Effect<any, any, any>>>(
|
|
@@ -1891,6 +1900,7 @@ export const allSuccesses = <Eff extends Effect.Effect<any, any, any>>(
|
|
|
1891
1900
|
options?: {
|
|
1892
1901
|
readonly concurrency?: Concurrency | undefined
|
|
1893
1902
|
readonly batching?: boolean | "inherit" | undefined
|
|
1903
|
+
readonly concurrentFinalizers?: boolean | undefined
|
|
1894
1904
|
}
|
|
1895
1905
|
): Effect.Effect<Array<Effect.Effect.Success<Eff>>, never, Effect.Effect.Context<Eff>> =>
|
|
1896
1906
|
core.map(
|
|
@@ -1912,6 +1922,7 @@ export const replicateEffect: {
|
|
|
1912
1922
|
readonly concurrency?: Concurrency | undefined
|
|
1913
1923
|
readonly batching?: boolean | "inherit" | undefined
|
|
1914
1924
|
readonly discard?: false | undefined
|
|
1925
|
+
readonly concurrentFinalizers?: boolean | undefined
|
|
1915
1926
|
}
|
|
1916
1927
|
): <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<Array<A>, E, R>
|
|
1917
1928
|
(
|
|
@@ -1920,6 +1931,7 @@ export const replicateEffect: {
|
|
|
1920
1931
|
readonly concurrency?: Concurrency | undefined
|
|
1921
1932
|
readonly batching?: boolean | "inherit" | undefined
|
|
1922
1933
|
readonly discard: true
|
|
1934
|
+
readonly concurrentFinalizers?: boolean | undefined
|
|
1923
1935
|
}
|
|
1924
1936
|
): <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<void, E, R>
|
|
1925
1937
|
<A, E, R>(
|
|
@@ -1929,6 +1941,7 @@ export const replicateEffect: {
|
|
|
1929
1941
|
readonly concurrency?: Concurrency | undefined
|
|
1930
1942
|
readonly batching?: boolean | "inherit" | undefined
|
|
1931
1943
|
readonly discard?: false | undefined
|
|
1944
|
+
readonly concurrentFinalizers?: boolean | undefined
|
|
1932
1945
|
}
|
|
1933
1946
|
): Effect.Effect<Array<A>, E, R>
|
|
1934
1947
|
<A, E, R>(
|
|
@@ -1938,6 +1951,7 @@ export const replicateEffect: {
|
|
|
1938
1951
|
readonly concurrency?: Concurrency | undefined
|
|
1939
1952
|
readonly batching?: boolean | "inherit" | undefined
|
|
1940
1953
|
readonly discard: true
|
|
1954
|
+
readonly concurrentFinalizers?: boolean | undefined
|
|
1941
1955
|
}
|
|
1942
1956
|
): Effect.Effect<void, E, R>
|
|
1943
1957
|
} = dual(
|
|
@@ -1953,6 +1967,7 @@ export const forEach: {
|
|
|
1953
1967
|
readonly concurrency?: Concurrency | undefined
|
|
1954
1968
|
readonly batching?: boolean | "inherit" | undefined
|
|
1955
1969
|
readonly discard?: false | undefined
|
|
1970
|
+
readonly concurrentFinalizers?: boolean | undefined
|
|
1956
1971
|
} | undefined
|
|
1957
1972
|
): (
|
|
1958
1973
|
self: S
|
|
@@ -1963,6 +1978,7 @@ export const forEach: {
|
|
|
1963
1978
|
readonly concurrency?: Concurrency | undefined
|
|
1964
1979
|
readonly batching?: boolean | "inherit" | undefined
|
|
1965
1980
|
readonly discard: true
|
|
1981
|
+
readonly concurrentFinalizers?: boolean | undefined
|
|
1966
1982
|
}
|
|
1967
1983
|
): (self: Iterable<A>) => Effect.Effect<void, E, R>
|
|
1968
1984
|
<A, B, E, R>(
|
|
@@ -1972,6 +1988,7 @@ export const forEach: {
|
|
|
1972
1988
|
readonly concurrency?: Concurrency | undefined
|
|
1973
1989
|
readonly batching?: boolean | "inherit" | undefined
|
|
1974
1990
|
readonly discard?: false | undefined
|
|
1991
|
+
readonly concurrentFinalizers?: boolean | undefined
|
|
1975
1992
|
} | undefined
|
|
1976
1993
|
): Effect.Effect<RA.NonEmptyArray<B>, E, R>
|
|
1977
1994
|
<A, B, E, R>(
|
|
@@ -1981,6 +1998,7 @@ export const forEach: {
|
|
|
1981
1998
|
readonly concurrency?: Concurrency | undefined
|
|
1982
1999
|
readonly batching?: boolean | "inherit" | undefined
|
|
1983
2000
|
readonly discard?: false | undefined
|
|
2001
|
+
readonly concurrentFinalizers?: boolean | undefined
|
|
1984
2002
|
} | undefined
|
|
1985
2003
|
): Effect.Effect<Array<B>, E, R>
|
|
1986
2004
|
<A, B, E, R>(
|
|
@@ -1990,6 +2008,7 @@ export const forEach: {
|
|
|
1990
2008
|
readonly concurrency?: Concurrency | undefined
|
|
1991
2009
|
readonly batching?: boolean | "inherit" | undefined
|
|
1992
2010
|
readonly discard: true
|
|
2011
|
+
readonly concurrentFinalizers?: boolean | undefined
|
|
1993
2012
|
}
|
|
1994
2013
|
): Effect.Effect<void, E, R>
|
|
1995
2014
|
} = dual((args) => Predicate.isIterable(args[0]), <A, R, E, B>(
|
|
@@ -1999,6 +2018,7 @@ export const forEach: {
|
|
|
1999
2018
|
readonly concurrency?: Concurrency | undefined
|
|
2000
2019
|
readonly batching?: boolean | "inherit" | undefined
|
|
2001
2020
|
readonly discard?: boolean | undefined
|
|
2021
|
+
readonly concurrentFinalizers?: boolean | undefined
|
|
2002
2022
|
}
|
|
2003
2023
|
) =>
|
|
2004
2024
|
core.withFiberRuntime<A | void, E, R>((r) => {
|
|
@@ -2009,17 +2029,17 @@ export const forEach: {
|
|
|
2009
2029
|
return concurrency.match(
|
|
2010
2030
|
options.concurrency,
|
|
2011
2031
|
() =>
|
|
2012
|
-
|
|
2032
|
+
finalizersMaskInternal(ExecutionStrategy.sequential, options?.concurrentFinalizers)((restore) =>
|
|
2013
2033
|
isRequestBatchingEnabled
|
|
2014
2034
|
? forEachConcurrentDiscard(self, (a, i) => restore(f(a, i)), true, false, 1)
|
|
2015
2035
|
: core.forEachSequentialDiscard(self, (a, i) => restore(f(a, i)))
|
|
2016
2036
|
),
|
|
2017
2037
|
() =>
|
|
2018
|
-
|
|
2038
|
+
finalizersMaskInternal(ExecutionStrategy.parallel, options?.concurrentFinalizers)((restore) =>
|
|
2019
2039
|
forEachConcurrentDiscard(self, (a, i) => restore(f(a, i)), isRequestBatchingEnabled, false)
|
|
2020
2040
|
),
|
|
2021
2041
|
(n) =>
|
|
2022
|
-
|
|
2042
|
+
finalizersMaskInternal(ExecutionStrategy.parallelN(n), options?.concurrentFinalizers)((restore) =>
|
|
2023
2043
|
forEachConcurrentDiscard(self, (a, i) => restore(f(a, i)), isRequestBatchingEnabled, false, n)
|
|
2024
2044
|
)
|
|
2025
2045
|
)
|
|
@@ -2028,17 +2048,17 @@ export const forEach: {
|
|
|
2028
2048
|
return concurrency.match(
|
|
2029
2049
|
options?.concurrency,
|
|
2030
2050
|
() =>
|
|
2031
|
-
|
|
2051
|
+
finalizersMaskInternal(ExecutionStrategy.sequential, options?.concurrentFinalizers)((restore) =>
|
|
2032
2052
|
isRequestBatchingEnabled
|
|
2033
2053
|
? forEachParN(self, 1, (a, i) => restore(f(a, i)), true)
|
|
2034
2054
|
: core.forEachSequential(self, (a, i) => restore(f(a, i)))
|
|
2035
2055
|
),
|
|
2036
2056
|
() =>
|
|
2037
|
-
|
|
2057
|
+
finalizersMaskInternal(ExecutionStrategy.parallel, options?.concurrentFinalizers)((restore) =>
|
|
2038
2058
|
forEachParUnbounded(self, (a, i) => restore(f(a, i)), isRequestBatchingEnabled)
|
|
2039
2059
|
),
|
|
2040
2060
|
(n) =>
|
|
2041
|
-
|
|
2061
|
+
finalizersMaskInternal(ExecutionStrategy.parallelN(n), options?.concurrentFinalizers)((restore) =>
|
|
2042
2062
|
forEachParN(self, n, (a, i) => restore(f(a, i)), isRequestBatchingEnabled)
|
|
2043
2063
|
)
|
|
2044
2064
|
)
|
|
@@ -2374,6 +2394,7 @@ export const mergeAll = dual<
|
|
|
2374
2394
|
options?: {
|
|
2375
2395
|
readonly concurrency?: Concurrency | undefined
|
|
2376
2396
|
readonly batching?: boolean | "inherit" | undefined
|
|
2397
|
+
readonly concurrentFinalizers?: boolean | undefined
|
|
2377
2398
|
}
|
|
2378
2399
|
) => (elements: Iterable<Eff>) => Effect.Effect<Z, Effect.Effect.Error<Eff>, Effect.Effect.Context<Eff>>,
|
|
2379
2400
|
<Eff extends Effect.Effect<any, any, any>, Z>(
|
|
@@ -2383,6 +2404,7 @@ export const mergeAll = dual<
|
|
|
2383
2404
|
options?: {
|
|
2384
2405
|
readonly concurrency?: Concurrency | undefined
|
|
2385
2406
|
readonly batching?: boolean | "inherit" | undefined
|
|
2407
|
+
readonly concurrentFinalizers?: boolean | undefined
|
|
2386
2408
|
}
|
|
2387
2409
|
) => Effect.Effect<Z, Effect.Effect.Error<Eff>, Effect.Effect.Context<Eff>>
|
|
2388
2410
|
>(
|
|
@@ -2390,6 +2412,7 @@ export const mergeAll = dual<
|
|
|
2390
2412
|
<A, E, R, Z>(elements: Iterable<Effect.Effect<A, E, R>>, zero: Z, f: (z: Z, a: A, i: number) => Z, options?: {
|
|
2391
2413
|
readonly concurrency?: Concurrency | undefined
|
|
2392
2414
|
readonly batching?: boolean | "inherit" | undefined
|
|
2415
|
+
readonly concurrentFinalizers?: boolean | undefined
|
|
2393
2416
|
}) =>
|
|
2394
2417
|
concurrency.matchSimple(
|
|
2395
2418
|
options?.concurrency,
|
|
@@ -2418,6 +2441,7 @@ export const partition = dual<
|
|
|
2418
2441
|
options?: {
|
|
2419
2442
|
readonly concurrency?: Concurrency | undefined
|
|
2420
2443
|
readonly batching?: boolean | "inherit" | undefined
|
|
2444
|
+
readonly concurrentFinalizers?: boolean | undefined
|
|
2421
2445
|
}
|
|
2422
2446
|
) => (elements: Iterable<A>) => Effect.Effect<[excluded: Array<E>, satisfying: Array<B>], never, R>,
|
|
2423
2447
|
<A, B, E, R>(
|
|
@@ -2426,6 +2450,7 @@ export const partition = dual<
|
|
|
2426
2450
|
options?: {
|
|
2427
2451
|
readonly concurrency?: Concurrency | undefined
|
|
2428
2452
|
readonly batching?: boolean | "inherit" | undefined
|
|
2453
|
+
readonly concurrentFinalizers?: boolean | undefined
|
|
2429
2454
|
}
|
|
2430
2455
|
) => Effect.Effect<[excluded: Array<E>, satisfying: Array<B>], never, R>
|
|
2431
2456
|
>((args) => Predicate.isIterable(args[0]), (elements, f, options) =>
|
|
@@ -2443,6 +2468,7 @@ export const validateAll = dual<
|
|
|
2443
2468
|
readonly concurrency?: Concurrency | undefined
|
|
2444
2469
|
readonly batching?: boolean | "inherit" | undefined
|
|
2445
2470
|
readonly discard?: false | undefined
|
|
2471
|
+
readonly concurrentFinalizers?: boolean | undefined
|
|
2446
2472
|
}
|
|
2447
2473
|
): (elements: Iterable<A>) => Effect.Effect<Array<B>, Array<E>, R>
|
|
2448
2474
|
<A, B, E, R>(
|
|
@@ -2451,6 +2477,7 @@ export const validateAll = dual<
|
|
|
2451
2477
|
readonly concurrency?: Concurrency | undefined
|
|
2452
2478
|
readonly batching?: boolean | "inherit" | undefined
|
|
2453
2479
|
readonly discard: true
|
|
2480
|
+
readonly concurrentFinalizers?: boolean | undefined
|
|
2454
2481
|
}
|
|
2455
2482
|
): (elements: Iterable<A>) => Effect.Effect<void, Array<E>, R>
|
|
2456
2483
|
},
|
|
@@ -2462,6 +2489,7 @@ export const validateAll = dual<
|
|
|
2462
2489
|
readonly concurrency?: Concurrency | undefined
|
|
2463
2490
|
readonly batching?: boolean | "inherit" | undefined
|
|
2464
2491
|
readonly discard?: false | undefined
|
|
2492
|
+
readonly concurrentFinalizers?: boolean | undefined
|
|
2465
2493
|
}
|
|
2466
2494
|
): Effect.Effect<Array<B>, Array<E>, R>
|
|
2467
2495
|
<A, B, E, R>(
|
|
@@ -2471,6 +2499,7 @@ export const validateAll = dual<
|
|
|
2471
2499
|
readonly concurrency?: Concurrency | undefined
|
|
2472
2500
|
readonly batching?: boolean | "inherit" | undefined
|
|
2473
2501
|
readonly discard: true
|
|
2502
|
+
readonly concurrentFinalizers?: boolean | undefined
|
|
2474
2503
|
}
|
|
2475
2504
|
): Effect.Effect<void, Array<E>, R>
|
|
2476
2505
|
}
|
|
@@ -2480,6 +2509,7 @@ export const validateAll = dual<
|
|
|
2480
2509
|
readonly concurrency?: Concurrency | undefined
|
|
2481
2510
|
readonly batching?: boolean | "inherit" | undefined
|
|
2482
2511
|
readonly discard?: boolean | undefined
|
|
2512
|
+
readonly concurrentFinalizers?: boolean | undefined
|
|
2483
2513
|
}): Effect.Effect<any, Array<E>, R> =>
|
|
2484
2514
|
core.flatMap(
|
|
2485
2515
|
partition(elements, f, {
|
|
@@ -2615,6 +2645,7 @@ export const reduceEffect = dual<
|
|
|
2615
2645
|
options?: {
|
|
2616
2646
|
readonly concurrency?: Concurrency | undefined
|
|
2617
2647
|
readonly batching?: boolean | "inherit" | undefined
|
|
2648
|
+
readonly concurrentFinalizers?: boolean | undefined
|
|
2618
2649
|
}
|
|
2619
2650
|
) => (elements: Iterable<Eff>) => Effect.Effect<Z, E | Effect.Effect.Error<Eff>, R | Effect.Effect.Context<Eff>>,
|
|
2620
2651
|
<Eff extends Effect.Effect<any, any, any>, Z, E, R>(
|
|
@@ -2624,6 +2655,7 @@ export const reduceEffect = dual<
|
|
|
2624
2655
|
options?: {
|
|
2625
2656
|
readonly concurrency?: Concurrency | undefined
|
|
2626
2657
|
readonly batching?: boolean | "inherit" | undefined
|
|
2658
|
+
readonly concurrentFinalizers?: boolean | undefined
|
|
2627
2659
|
}
|
|
2628
2660
|
) => Effect.Effect<Z, E | Effect.Effect.Error<Eff>, R | Effect.Effect.Context<Eff>>
|
|
2629
2661
|
>((args) => Predicate.isIterable(args[0]) && !core.isEffect(args[0]), <A, E, R, Z>(
|
|
@@ -2633,6 +2665,7 @@ export const reduceEffect = dual<
|
|
|
2633
2665
|
options?: {
|
|
2634
2666
|
readonly concurrency?: Concurrency | undefined
|
|
2635
2667
|
readonly batching?: boolean | "inherit" | undefined
|
|
2668
|
+
readonly concurrentFinalizers?: boolean | undefined
|
|
2636
2669
|
}
|
|
2637
2670
|
) =>
|
|
2638
2671
|
concurrency.matchSimple(
|
|
@@ -2713,28 +2746,43 @@ export const parallelNFinalizers =
|
|
|
2713
2746
|
/* @internal */
|
|
2714
2747
|
export const finalizersMask = (strategy: ExecutionStrategy.ExecutionStrategy) =>
|
|
2715
2748
|
<A, E, R>(
|
|
2716
|
-
self: (
|
|
2717
|
-
|
|
2718
|
-
|
|
2719
|
-
|
|
2720
|
-
|
|
2721
|
-
|
|
2722
|
-
|
|
2723
|
-
|
|
2724
|
-
|
|
2725
|
-
|
|
2726
|
-
|
|
2727
|
-
|
|
2728
|
-
|
|
2729
|
-
|
|
2730
|
-
|
|
2731
|
-
|
|
2732
|
-
|
|
2733
|
-
|
|
2749
|
+
self: (
|
|
2750
|
+
restore: <A1, E1, R1>(self: Effect.Effect<A1, E1, R1>) => Effect.Effect<A1, E1, R1>
|
|
2751
|
+
) => Effect.Effect<A, E, R>
|
|
2752
|
+
): Effect.Effect<A, E, R> => finalizersMaskInternal(strategy, true)(self)
|
|
2753
|
+
|
|
2754
|
+
/* @internal */
|
|
2755
|
+
export const finalizersMaskInternal =
|
|
2756
|
+
(strategy: ExecutionStrategy.ExecutionStrategy, concurrentFinalizers?: boolean | undefined) =>
|
|
2757
|
+
<A, E, R>(
|
|
2758
|
+
self: (
|
|
2759
|
+
restore: <A1, E1, R1>(self: Effect.Effect<A1, E1, R1>) => Effect.Effect<A1, E1, R1>
|
|
2760
|
+
) => Effect.Effect<A, E, R>
|
|
2761
|
+
): Effect.Effect<A, E, R> =>
|
|
2762
|
+
core.contextWithEffect((context) =>
|
|
2763
|
+
Option.match(Context.getOption(context, scopeTag), {
|
|
2764
|
+
onNone: () => self(identity),
|
|
2765
|
+
onSome: (scope) => {
|
|
2766
|
+
if (concurrentFinalizers === true) {
|
|
2767
|
+
const patch = strategy._tag === "Parallel"
|
|
2768
|
+
? parallelFinalizers
|
|
2769
|
+
: strategy._tag === "Sequential"
|
|
2770
|
+
? sequentialFinalizers
|
|
2771
|
+
: parallelNFinalizers(strategy.parallelism)
|
|
2772
|
+
switch (scope.strategy._tag) {
|
|
2773
|
+
case "Parallel":
|
|
2774
|
+
return patch(self(parallelFinalizers))
|
|
2775
|
+
case "Sequential":
|
|
2776
|
+
return patch(self(sequentialFinalizers))
|
|
2777
|
+
case "ParallelN":
|
|
2778
|
+
return patch(self(parallelNFinalizers(scope.strategy.parallelism)))
|
|
2779
|
+
}
|
|
2780
|
+
} else {
|
|
2781
|
+
return self(identity)
|
|
2782
|
+
}
|
|
2734
2783
|
}
|
|
2735
|
-
}
|
|
2736
|
-
|
|
2737
|
-
)
|
|
2784
|
+
})
|
|
2785
|
+
)
|
|
2738
2786
|
|
|
2739
2787
|
/* @internal */
|
|
2740
2788
|
export const scopeWith = <A, E, R>(
|
|
@@ -2798,6 +2846,7 @@ export const validate = dual<
|
|
|
2798
2846
|
options?: {
|
|
2799
2847
|
readonly concurrent?: boolean | undefined
|
|
2800
2848
|
readonly batching?: boolean | "inherit" | undefined
|
|
2849
|
+
readonly concurrentFinalizers?: boolean | undefined
|
|
2801
2850
|
}
|
|
2802
2851
|
) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<[A, B], E | E1, R | R1>,
|
|
2803
2852
|
<A, E, R, B, E1, R1>(
|
|
@@ -2806,6 +2855,7 @@ export const validate = dual<
|
|
|
2806
2855
|
options?: {
|
|
2807
2856
|
readonly concurrent?: boolean | undefined
|
|
2808
2857
|
readonly batching?: boolean | "inherit" | undefined
|
|
2858
|
+
readonly concurrentFinalizers?: boolean | undefined
|
|
2809
2859
|
}
|
|
2810
2860
|
) => Effect.Effect<[A, B], E | E1, R | R1>
|
|
2811
2861
|
>(
|
|
@@ -2821,6 +2871,7 @@ export const validateWith = dual<
|
|
|
2821
2871
|
options?: {
|
|
2822
2872
|
readonly concurrent?: boolean | undefined
|
|
2823
2873
|
readonly batching?: boolean | "inherit" | undefined
|
|
2874
|
+
readonly concurrentFinalizers?: boolean | undefined
|
|
2824
2875
|
}
|
|
2825
2876
|
) => <E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<C, E | E1, R | R1>,
|
|
2826
2877
|
<A, E, R, B, E1, R1, C>(
|
|
@@ -2830,6 +2881,7 @@ export const validateWith = dual<
|
|
|
2830
2881
|
options?: {
|
|
2831
2882
|
readonly concurrent?: boolean | undefined
|
|
2832
2883
|
readonly batching?: boolean | "inherit" | undefined
|
|
2884
|
+
readonly concurrentFinalizers?: boolean | undefined
|
|
2833
2885
|
}
|
|
2834
2886
|
) => Effect.Effect<C, E | E1, R | R1>
|
|
2835
2887
|
>((args) => core.isEffect(args[1]), (self, that, f, options) =>
|
|
@@ -2882,10 +2934,12 @@ export const validateFirst = dual<
|
|
|
2882
2934
|
<A, B, E, R>(f: (a: A, i: number) => Effect.Effect<B, E, R>, options?: {
|
|
2883
2935
|
readonly concurrency?: Concurrency | undefined
|
|
2884
2936
|
readonly batching?: boolean | "inherit" | undefined
|
|
2937
|
+
readonly concurrentFinalizers?: boolean | undefined
|
|
2885
2938
|
}) => (elements: Iterable<A>) => Effect.Effect<B, Array<E>, R>,
|
|
2886
2939
|
<A, B, E, R>(elements: Iterable<A>, f: (a: A, i: number) => Effect.Effect<B, E, R>, options?: {
|
|
2887
2940
|
readonly concurrency?: Concurrency | undefined
|
|
2888
2941
|
readonly batching?: boolean | "inherit" | undefined
|
|
2942
|
+
readonly concurrentFinalizers?: boolean | undefined
|
|
2889
2943
|
}) => Effect.Effect<B, Array<E>, R>
|
|
2890
2944
|
>(
|
|
2891
2945
|
(args) => Predicate.isIterable(args[0]),
|
|
@@ -2927,6 +2981,7 @@ export const zipOptions = dual<
|
|
|
2927
2981
|
options?: {
|
|
2928
2982
|
readonly concurrent?: boolean | undefined
|
|
2929
2983
|
readonly batching?: boolean | "inherit" | undefined
|
|
2984
|
+
readonly concurrentFinalizers?: boolean | undefined
|
|
2930
2985
|
}
|
|
2931
2986
|
) => <A, E, R>(
|
|
2932
2987
|
self: Effect.Effect<A, E, R>
|
|
@@ -2937,6 +2992,7 @@ export const zipOptions = dual<
|
|
|
2937
2992
|
options?: {
|
|
2938
2993
|
readonly concurrent?: boolean | undefined
|
|
2939
2994
|
readonly batching?: boolean | "inherit" | undefined
|
|
2995
|
+
readonly concurrentFinalizers?: boolean | undefined
|
|
2940
2996
|
}
|
|
2941
2997
|
) => Effect.Effect<[A, A2], E | E2, R | R2>
|
|
2942
2998
|
>((args) => core.isEffect(args[1]), (
|
|
@@ -2952,6 +3008,7 @@ export const zipLeftOptions = dual<
|
|
|
2952
3008
|
options?: {
|
|
2953
3009
|
readonly concurrent?: boolean | undefined
|
|
2954
3010
|
readonly batching?: boolean | "inherit" | undefined
|
|
3011
|
+
readonly concurrentFinalizers?: boolean | undefined
|
|
2955
3012
|
}
|
|
2956
3013
|
) => <A, E, R>(
|
|
2957
3014
|
self: Effect.Effect<A, E, R>
|
|
@@ -2962,6 +3019,7 @@ export const zipLeftOptions = dual<
|
|
|
2962
3019
|
options?: {
|
|
2963
3020
|
readonly concurrent?: boolean | undefined
|
|
2964
3021
|
readonly batching?: boolean | "inherit" | undefined
|
|
3022
|
+
readonly concurrentFinalizers?: boolean | undefined
|
|
2965
3023
|
}
|
|
2966
3024
|
) => Effect.Effect<A, E | E2, R | R2>
|
|
2967
3025
|
>(
|
|
@@ -2981,6 +3039,7 @@ export const zipRightOptions: {
|
|
|
2981
3039
|
options?: {
|
|
2982
3040
|
readonly concurrent?: boolean | undefined
|
|
2983
3041
|
readonly batching?: boolean | "inherit" | undefined
|
|
3042
|
+
readonly concurrentFinalizers?: boolean | undefined
|
|
2984
3043
|
}
|
|
2985
3044
|
): <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A2, E2 | E, R2 | R>
|
|
2986
3045
|
<A, E, R, A2, E2, R2>(
|
|
@@ -2989,6 +3048,7 @@ export const zipRightOptions: {
|
|
|
2989
3048
|
options?: {
|
|
2990
3049
|
readonly concurrent?: boolean | undefined
|
|
2991
3050
|
readonly batching?: boolean | "inherit" | undefined
|
|
3051
|
+
readonly concurrentFinalizers?: boolean | undefined
|
|
2992
3052
|
}
|
|
2993
3053
|
): Effect.Effect<A2, E2 | E, R2 | R>
|
|
2994
3054
|
} = dual((args) => core.isEffect(args[1]), <A, E, R, A2, E2, R2>(
|
|
@@ -2997,6 +3057,7 @@ export const zipRightOptions: {
|
|
|
2997
3057
|
options?: {
|
|
2998
3058
|
readonly concurrent?: boolean | undefined
|
|
2999
3059
|
readonly batching?: boolean | "inherit" | undefined
|
|
3060
|
+
readonly concurrentFinalizers?: boolean | undefined
|
|
3000
3061
|
}
|
|
3001
3062
|
): Effect.Effect<A2, E2 | E, R2 | R> => {
|
|
3002
3063
|
if (options?.concurrent !== true && (options?.batching === undefined || options.batching === false)) {
|
|
@@ -3013,6 +3074,7 @@ export const zipWithOptions: {
|
|
|
3013
3074
|
options?: {
|
|
3014
3075
|
readonly concurrent?: boolean | undefined
|
|
3015
3076
|
readonly batching?: boolean | "inherit" | undefined
|
|
3077
|
+
readonly concurrentFinalizers?: boolean | undefined
|
|
3016
3078
|
}
|
|
3017
3079
|
): <E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<B, E2 | E, R2 | R>
|
|
3018
3080
|
<A, E, R, A2, E2, R2, B>(
|
|
@@ -3022,6 +3084,7 @@ export const zipWithOptions: {
|
|
|
3022
3084
|
options?: {
|
|
3023
3085
|
readonly concurrent?: boolean | undefined
|
|
3024
3086
|
readonly batching?: boolean | "inherit" | undefined
|
|
3087
|
+
readonly concurrentFinalizers?: boolean | undefined
|
|
3025
3088
|
}
|
|
3026
3089
|
): Effect.Effect<B, E2 | E, R2 | R>
|
|
3027
3090
|
} = dual((args) => core.isEffect(args[1]), <A, E, R, A2, E2, R2, B>(
|
|
@@ -3031,12 +3094,14 @@ export const zipWithOptions: {
|
|
|
3031
3094
|
options?: {
|
|
3032
3095
|
readonly concurrent?: boolean | undefined
|
|
3033
3096
|
readonly batching?: boolean | "inherit" | undefined
|
|
3097
|
+
readonly concurrentFinalizers?: boolean | undefined
|
|
3034
3098
|
}
|
|
3035
3099
|
): Effect.Effect<B, E2 | E, R2 | R> =>
|
|
3036
3100
|
core.map(
|
|
3037
3101
|
all([self, that], {
|
|
3038
3102
|
concurrency: options?.concurrent ? 2 : 1,
|
|
3039
|
-
batching: options?.batching
|
|
3103
|
+
batching: options?.batching,
|
|
3104
|
+
concurrentFinalizers: options?.concurrentFinalizers
|
|
3040
3105
|
}),
|
|
3041
3106
|
([a, a2]) => f(a, a2)
|
|
3042
3107
|
))
|
|
@@ -3288,8 +3353,14 @@ export const currentSupervisor: FiberRef.FiberRef<Supervisor.Supervisor<any>> =
|
|
|
3288
3353
|
// circular with Fiber
|
|
3289
3354
|
|
|
3290
3355
|
/* @internal */
|
|
3291
|
-
export const fiberAwaitAll =
|
|
3292
|
-
|
|
3356
|
+
export const fiberAwaitAll = <const T extends Iterable<Fiber.Fiber<any, any>>>(
|
|
3357
|
+
fibers: T
|
|
3358
|
+
): Effect.Effect<
|
|
3359
|
+
[T] extends [ReadonlyArray<infer U>]
|
|
3360
|
+
? number extends T["length"] ? Array<U extends Fiber.Fiber<infer A, infer E> ? Exit.Exit<A, E> : never>
|
|
3361
|
+
: { -readonly [K in keyof T]: T[K] extends Fiber.Fiber<infer A, infer E> ? Exit.Exit<A, E> : never }
|
|
3362
|
+
: Array<T extends Iterable<infer U> ? U extends Fiber.Fiber<infer A, infer E> ? Exit.Exit<A, E> : never : never>
|
|
3363
|
+
> => forEach(fibers, internalFiber._await) as any
|
|
3293
3364
|
|
|
3294
3365
|
/** @internal */
|
|
3295
3366
|
export const fiberAll = <A, E>(fibers: Iterable<Fiber.Fiber<A, E>>): Fiber.Fiber<Array<A>, E> => ({
|
package/src/internal/stream.ts
CHANGED
|
@@ -2405,7 +2405,7 @@ export const either = <A, E, R>(self: Stream.Stream<A, E, R>): Stream.Stream<Eit
|
|
|
2405
2405
|
pipe(self, map(Either.right), catchAll((error) => make(Either.left(error))))
|
|
2406
2406
|
|
|
2407
2407
|
/** @internal */
|
|
2408
|
-
export const empty: Stream.Stream<never> = new StreamImpl(core.
|
|
2408
|
+
export const empty: Stream.Stream<never> = new StreamImpl(core.void)
|
|
2409
2409
|
|
|
2410
2410
|
/** @internal */
|
|
2411
2411
|
export const ensuring = dual<
|
|
@@ -4873,6 +4873,24 @@ export const range = (min: number, max: number, chunkSize = DefaultChunkSize): S
|
|
|
4873
4873
|
return new StreamImpl(go(min, max, chunkSize))
|
|
4874
4874
|
})
|
|
4875
4875
|
|
|
4876
|
+
/** @internal */
|
|
4877
|
+
export const race: {
|
|
4878
|
+
<AR, ER, RR>(
|
|
4879
|
+
right: Stream.Stream<AR, ER, RR>
|
|
4880
|
+
): <AL, EL, RL>(left: Stream.Stream<AL, EL, RL>) => Stream.Stream<AL | AR, EL | ER, RL | RR>
|
|
4881
|
+
<AL, EL, RL, AR, ER, RR>(
|
|
4882
|
+
left: Stream.Stream<AL, EL, RL>,
|
|
4883
|
+
right: Stream.Stream<AR, ER, RR>
|
|
4884
|
+
): Stream.Stream<AL | AR, EL | ER, RL | RR>
|
|
4885
|
+
} = dual(
|
|
4886
|
+
2,
|
|
4887
|
+
<AL, EL, RL, AR, ER, RR>(
|
|
4888
|
+
left: Stream.Stream<AL, EL, RL>,
|
|
4889
|
+
right: Stream.Stream<AR, ER, RR>
|
|
4890
|
+
): Stream.Stream<AL | AR, EL | ER, RL | RR> => raceAll(left, right)
|
|
4891
|
+
)
|
|
4892
|
+
|
|
4893
|
+
/** @internal */
|
|
4876
4894
|
export const raceAll = <S extends ReadonlyArray<Stream.Stream<any, any, any>>>(
|
|
4877
4895
|
...streams: S
|
|
4878
4896
|
): Stream.Stream<
|