effect 4.0.0-beta.17 → 4.0.0-beta.19
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/Array.d.ts +127 -299
- package/dist/Array.d.ts.map +1 -1
- package/dist/Array.js +102 -62
- package/dist/Array.js.map +1 -1
- package/dist/Cache.d.ts.map +1 -1
- package/dist/Cache.js +5 -4
- package/dist/Cache.js.map +1 -1
- package/dist/Channel.d.ts +97 -11
- package/dist/Channel.d.ts.map +1 -1
- package/dist/Channel.js +72 -29
- package/dist/Channel.js.map +1 -1
- package/dist/Chunk.d.ts +54 -247
- package/dist/Chunk.d.ts.map +1 -1
- package/dist/Chunk.js +36 -67
- package/dist/Chunk.js.map +1 -1
- package/dist/Effect.d.ts +337 -437
- package/dist/Effect.d.ts.map +1 -1
- package/dist/Effect.js +118 -134
- package/dist/Effect.js.map +1 -1
- package/dist/Filter.d.ts +0 -33
- package/dist/Filter.d.ts.map +1 -1
- package/dist/Filter.js +0 -13
- package/dist/Filter.js.map +1 -1
- package/dist/HashMap.d.ts +15 -14
- package/dist/HashMap.d.ts.map +1 -1
- package/dist/HashMap.js +4 -4
- package/dist/HashMap.js.map +1 -1
- package/dist/Iterable.d.ts +40 -39
- package/dist/Iterable.d.ts.map +1 -1
- package/dist/Iterable.js +94 -22
- package/dist/Iterable.js.map +1 -1
- package/dist/Option.d.ts +22 -15
- package/dist/Option.d.ts.map +1 -1
- package/dist/Option.js +14 -7
- package/dist/Option.js.map +1 -1
- package/dist/Pull.d.ts.map +1 -1
- package/dist/Pull.js +1 -1
- package/dist/Pull.js.map +1 -1
- package/dist/Record.d.ts +24 -120
- package/dist/Record.d.ts.map +1 -1
- package/dist/Record.js +21 -41
- package/dist/Record.js.map +1 -1
- package/dist/Sink.d.ts +11 -11
- package/dist/Sink.d.ts.map +1 -1
- package/dist/Sink.js +53 -6
- package/dist/Sink.js.map +1 -1
- package/dist/Stream.d.ts +198 -386
- package/dist/Stream.d.ts.map +1 -1
- package/dist/Stream.js +103 -59
- package/dist/Stream.js.map +1 -1
- package/dist/Trie.d.ts +18 -17
- package/dist/Trie.d.ts.map +1 -1
- package/dist/Trie.js +5 -5
- package/dist/Trie.js.map +1 -1
- package/dist/TxChunk.d.ts +37 -37
- package/dist/TxChunk.d.ts.map +1 -1
- package/dist/TxChunk.js +3 -3
- package/dist/TxChunk.js.map +1 -1
- package/dist/TxDeferred.d.ts +328 -0
- package/dist/TxDeferred.d.ts.map +1 -0
- package/dist/TxDeferred.js +196 -0
- package/dist/TxDeferred.js.map +1 -0
- package/dist/TxHashMap.d.ts +84 -83
- package/dist/TxHashMap.d.ts.map +1 -1
- package/dist/TxHashMap.js +24 -24
- package/dist/TxHashMap.js.map +1 -1
- package/dist/TxHashSet.d.ts +35 -35
- package/dist/TxHashSet.d.ts.map +1 -1
- package/dist/TxHashSet.js +14 -14
- package/dist/TxHashSet.js.map +1 -1
- package/dist/TxPriorityQueue.d.ts +609 -0
- package/dist/TxPriorityQueue.d.ts.map +1 -0
- package/dist/TxPriorityQueue.js +415 -0
- package/dist/TxPriorityQueue.js.map +1 -0
- package/dist/TxPubSub.d.ts +585 -0
- package/dist/TxPubSub.d.ts.map +1 -0
- package/dist/TxPubSub.js +521 -0
- package/dist/TxPubSub.js.map +1 -0
- package/dist/TxQueue.d.ts +32 -32
- package/dist/TxQueue.d.ts.map +1 -1
- package/dist/TxQueue.js +26 -26
- package/dist/TxQueue.js.map +1 -1
- package/dist/TxReentrantLock.d.ts +523 -0
- package/dist/TxReentrantLock.d.ts.map +1 -0
- package/dist/TxReentrantLock.js +504 -0
- package/dist/TxReentrantLock.js.map +1 -0
- package/dist/TxRef.d.ts +34 -34
- package/dist/TxRef.d.ts.map +1 -1
- package/dist/TxRef.js +21 -14
- package/dist/TxRef.js.map +1 -1
- package/dist/TxSemaphore.d.ts +8 -8
- package/dist/TxSemaphore.d.ts.map +1 -1
- package/dist/TxSemaphore.js +7 -7
- package/dist/TxSemaphore.js.map +1 -1
- package/dist/TxSubscriptionRef.d.ts +508 -0
- package/dist/TxSubscriptionRef.d.ts.map +1 -0
- package/dist/TxSubscriptionRef.js +293 -0
- package/dist/TxSubscriptionRef.js.map +1 -0
- package/dist/index.d.ts +40 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +40 -0
- package/dist/index.js.map +1 -1
- package/dist/internal/effect.js +99 -42
- package/dist/internal/effect.js.map +1 -1
- package/dist/internal/hashMap.js +3 -2
- package/dist/internal/hashMap.js.map +1 -1
- package/dist/internal/trie.js +5 -4
- package/dist/internal/trie.js.map +1 -1
- package/dist/unstable/ai/Tool.d.ts.map +1 -1
- package/dist/unstable/ai/Tool.js +0 -9
- package/dist/unstable/ai/Tool.js.map +1 -1
- package/dist/unstable/cli/Command.d.ts +1 -1
- package/dist/unstable/cli/Command.d.ts.map +1 -1
- package/dist/unstable/cli/Command.js +1 -1
- package/dist/unstable/cli/Command.js.map +1 -1
- package/dist/unstable/cluster/K8sHttpClient.js +4 -4
- package/dist/unstable/cluster/K8sHttpClient.js.map +1 -1
- package/dist/unstable/cluster/Sharding.js +1 -1
- package/dist/unstable/cluster/Sharding.js.map +1 -1
- package/dist/unstable/encoding/Sse.js +1 -1
- package/dist/unstable/encoding/Sse.js.map +1 -1
- package/dist/unstable/rpc/RpcServer.d.ts.map +1 -1
- package/dist/unstable/rpc/RpcServer.js +1 -2
- package/dist/unstable/rpc/RpcServer.js.map +1 -1
- package/dist/unstable/socket/Socket.d.ts.map +1 -1
- package/dist/unstable/socket/Socket.js +3 -3
- package/dist/unstable/socket/Socket.js.map +1 -1
- package/package.json +1 -1
- package/src/Array.ts +190 -342
- package/src/Cache.ts +6 -5
- package/src/Channel.ts +506 -102
- package/src/Chunk.ts +81 -268
- package/src/Effect.ts +437 -518
- package/src/Filter.ts +0 -57
- package/src/HashMap.ts +15 -14
- package/src/Iterable.ts +105 -50
- package/src/Option.ts +30 -20
- package/src/Pull.ts +1 -1
- package/src/Record.ts +43 -152
- package/src/Sink.ts +75 -23
- package/src/Stream.ts +442 -502
- package/src/Trie.ts +18 -17
- package/src/TxChunk.ts +72 -53
- package/src/TxDeferred.ts +394 -0
- package/src/TxHashMap.ts +332 -285
- package/src/TxHashSet.ts +111 -116
- package/src/TxPriorityQueue.ts +767 -0
- package/src/TxPubSub.ts +789 -0
- package/src/TxQueue.ts +241 -251
- package/src/TxReentrantLock.ts +753 -0
- package/src/TxRef.ts +50 -38
- package/src/TxSemaphore.ts +29 -32
- package/src/TxSubscriptionRef.ts +639 -0
- package/src/index.ts +45 -0
- package/src/internal/effect.ts +368 -163
- package/src/internal/hashMap.ts +7 -5
- package/src/internal/trie.ts +16 -9
- package/src/unstable/ai/Tool.ts +0 -9
- package/src/unstable/cli/Command.ts +6 -4
- package/src/unstable/cluster/K8sHttpClient.ts +4 -4
- package/src/unstable/cluster/Sharding.ts +1 -1
- package/src/unstable/encoding/Sse.ts +1 -1
- package/src/unstable/rpc/RpcServer.ts +1 -7
- package/src/unstable/socket/Socket.ts +9 -11
package/src/Channel.ts
CHANGED
|
@@ -63,7 +63,7 @@ import * as Chunk from "./Chunk.ts"
|
|
|
63
63
|
import * as Effect from "./Effect.ts"
|
|
64
64
|
import * as Exit from "./Exit.ts"
|
|
65
65
|
import * as Fiber from "./Fiber.ts"
|
|
66
|
-
import * as Filter from "./Filter.ts"
|
|
66
|
+
import type * as Filter from "./Filter.ts"
|
|
67
67
|
import type { LazyArg } from "./Function.ts"
|
|
68
68
|
import { constant, constTrue, constVoid, dual, identity as identity_ } from "./Function.ts"
|
|
69
69
|
import { ClockRef, endSpan } from "./internal/effect.ts"
|
|
@@ -3564,9 +3564,9 @@ export const filter: {
|
|
|
3564
3564
|
* @since 2.0.0
|
|
3565
3565
|
* @category Filtering
|
|
3566
3566
|
*/
|
|
3567
|
-
<OutElem
|
|
3567
|
+
<OutElem>(predicate: Predicate.Predicate<OutElem>): <OutErr, OutDone, InElem, InErr, InDone, Env>(
|
|
3568
3568
|
self: Channel<OutElem, OutErr, OutDone, InElem, InErr, InDone, Env>
|
|
3569
|
-
) => Channel<
|
|
3569
|
+
) => Channel<OutElem, OutErr, OutDone, InElem, InErr, InDone, Env>
|
|
3570
3570
|
/**
|
|
3571
3571
|
* Filters the output elements of a channel using a predicate function.
|
|
3572
3572
|
* Elements that don't match the predicate are discarded.
|
|
@@ -3625,24 +3625,59 @@ export const filter: {
|
|
|
3625
3625
|
* @since 2.0.0
|
|
3626
3626
|
* @category Filtering
|
|
3627
3627
|
*/
|
|
3628
|
-
<OutElem, OutErr, OutDone, InElem, InErr, InDone, Env
|
|
3628
|
+
<OutElem, OutErr, OutDone, InElem, InErr, InDone, Env>(
|
|
3629
|
+
self: Channel<OutElem, OutErr, OutDone, InElem, InErr, InDone, Env>,
|
|
3630
|
+
predicate: Predicate.Predicate<OutElem>
|
|
3631
|
+
): Channel<OutElem, OutErr, OutDone, InElem, InErr, InDone, Env>
|
|
3632
|
+
} = dual(2, <OutElem, OutErr, OutDone, InElem, InErr, InDone, Env>(
|
|
3633
|
+
self: Channel<OutElem, OutErr, OutDone, InElem, InErr, InDone, Env>,
|
|
3634
|
+
predicate: Predicate.Predicate<OutElem>
|
|
3635
|
+
): Channel<OutElem, OutErr, OutDone, InElem, InErr, InDone, Env> =>
|
|
3636
|
+
fromTransform((upstream, scope) =>
|
|
3637
|
+
Effect.map(
|
|
3638
|
+
toTransform(self)(upstream, scope),
|
|
3639
|
+
(pull) =>
|
|
3640
|
+
Effect.flatMap(pull, function loop(elem): Pull.Pull<OutElem, OutErr, OutDone> {
|
|
3641
|
+
return predicate(elem)
|
|
3642
|
+
? Effect.succeed(elem)
|
|
3643
|
+
: Effect.flatMap(pull, loop)
|
|
3644
|
+
})
|
|
3645
|
+
)
|
|
3646
|
+
))
|
|
3647
|
+
|
|
3648
|
+
/**
|
|
3649
|
+
* @since 4.0.0
|
|
3650
|
+
* @category Filtering
|
|
3651
|
+
*/
|
|
3652
|
+
export const filterMap: {
|
|
3653
|
+
/**
|
|
3654
|
+
* @since 4.0.0
|
|
3655
|
+
* @category Filtering
|
|
3656
|
+
*/
|
|
3657
|
+
<OutElem, B, X>(filter: Filter.Filter<OutElem, B, X>): <OutErr, OutDone, InElem, InErr, InDone, Env>(
|
|
3658
|
+
self: Channel<OutElem, OutErr, OutDone, InElem, InErr, InDone, Env>
|
|
3659
|
+
) => Channel<B, OutErr, OutDone, InElem, InErr, InDone, Env>
|
|
3660
|
+
/**
|
|
3661
|
+
* @since 4.0.0
|
|
3662
|
+
* @category Filtering
|
|
3663
|
+
*/
|
|
3664
|
+
<OutElem, OutErr, OutDone, InElem, InErr, InDone, Env, B, X>(
|
|
3629
3665
|
self: Channel<OutElem, OutErr, OutDone, InElem, InErr, InDone, Env>,
|
|
3630
|
-
filter: Filter.
|
|
3631
|
-
): Channel<
|
|
3632
|
-
} = dual(2, <OutElem, OutErr, OutDone, InElem, InErr, InDone, Env,
|
|
3666
|
+
filter: Filter.Filter<OutElem, B, X>
|
|
3667
|
+
): Channel<B, OutErr, OutDone, InElem, InErr, InDone, Env>
|
|
3668
|
+
} = dual(2, <OutElem, OutErr, OutDone, InElem, InErr, InDone, Env, B, X>(
|
|
3633
3669
|
self: Channel<OutElem, OutErr, OutDone, InElem, InErr, InDone, Env>,
|
|
3634
|
-
filter: Filter.
|
|
3635
|
-
): Channel<
|
|
3670
|
+
filter: Filter.Filter<OutElem, B, X>
|
|
3671
|
+
): Channel<B, OutErr, OutDone, InElem, InErr, InDone, Env> =>
|
|
3636
3672
|
fromTransform((upstream, scope) =>
|
|
3637
3673
|
Effect.map(
|
|
3638
3674
|
toTransform(self)(upstream, scope),
|
|
3639
3675
|
(pull) =>
|
|
3640
|
-
Effect.flatMap(pull, function loop(elem): Pull.Pull<
|
|
3676
|
+
Effect.flatMap(pull, function loop(elem): Pull.Pull<B, OutErr, OutDone> {
|
|
3641
3677
|
const result = filter(elem)
|
|
3642
|
-
|
|
3643
|
-
|
|
3644
|
-
|
|
3645
|
-
return Effect.flatMap(pull, loop)
|
|
3678
|
+
return Result.isFailure(result)
|
|
3679
|
+
? Effect.flatMap(pull, loop)
|
|
3680
|
+
: Effect.succeed(result.success)
|
|
3646
3681
|
})
|
|
3647
3682
|
)
|
|
3648
3683
|
))
|
|
@@ -3652,6 +3687,46 @@ export const filter: {
|
|
|
3652
3687
|
* @category Filtering
|
|
3653
3688
|
*/
|
|
3654
3689
|
export const filterEffect: {
|
|
3690
|
+
/**
|
|
3691
|
+
* @since 4.0.0
|
|
3692
|
+
* @category Filtering
|
|
3693
|
+
*/
|
|
3694
|
+
<OutElem, E, R>(predicate: (a: OutElem) => Effect.Effect<boolean, E, R>): <OutErr, OutDone, InElem, InErr, InDone, Env>(
|
|
3695
|
+
self: Channel<OutElem, OutErr, OutDone, InElem, InErr, InDone, Env>
|
|
3696
|
+
) => Channel<OutElem, OutErr | E, OutDone, InElem, InErr, InDone, Env | R>
|
|
3697
|
+
/**
|
|
3698
|
+
* @since 4.0.0
|
|
3699
|
+
* @category Filtering
|
|
3700
|
+
*/
|
|
3701
|
+
<OutElem, OutErr, OutDone, InElem, InErr, InDone, Env, E, R>(
|
|
3702
|
+
self: Channel<OutElem, OutErr, OutDone, InElem, InErr, InDone, Env>,
|
|
3703
|
+
predicate: (a: OutElem) => Effect.Effect<boolean, E, R>
|
|
3704
|
+
): Channel<OutElem, OutErr | E, OutDone, InElem, InErr, InDone, Env | R>
|
|
3705
|
+
} = dual(2, <OutElem, OutErr, OutDone, InElem, InErr, InDone, Env, E, R>(
|
|
3706
|
+
self: Channel<OutElem, OutErr, OutDone, InElem, InErr, InDone, Env>,
|
|
3707
|
+
predicate: (a: OutElem) => Effect.Effect<boolean, E, R>
|
|
3708
|
+
): Channel<OutElem, OutErr | E, OutDone, InElem, InErr, InDone, Env | R> =>
|
|
3709
|
+
fromTransform((upstream, scope) =>
|
|
3710
|
+
Effect.map(
|
|
3711
|
+
toTransform(self)(upstream, scope),
|
|
3712
|
+
(pull) =>
|
|
3713
|
+
Effect.flatMap(pull, function loop(elem): Pull.Pull<OutElem, OutErr | E, OutDone, R> {
|
|
3714
|
+
return Effect.flatMap(
|
|
3715
|
+
predicate(elem),
|
|
3716
|
+
(passes) =>
|
|
3717
|
+
passes
|
|
3718
|
+
? Effect.succeed(elem)
|
|
3719
|
+
: Effect.flatMap(pull, loop)
|
|
3720
|
+
)
|
|
3721
|
+
})
|
|
3722
|
+
)
|
|
3723
|
+
))
|
|
3724
|
+
|
|
3725
|
+
/**
|
|
3726
|
+
* @since 4.0.0
|
|
3727
|
+
* @category Filtering
|
|
3728
|
+
*/
|
|
3729
|
+
export const filterMapEffect: {
|
|
3655
3730
|
/**
|
|
3656
3731
|
* @since 4.0.0
|
|
3657
3732
|
* @category Filtering
|
|
@@ -3796,9 +3871,9 @@ export const filterArray: {
|
|
|
3796
3871
|
* @since 4.0.0
|
|
3797
3872
|
* @category Filtering
|
|
3798
3873
|
*/
|
|
3799
|
-
<OutElem
|
|
3874
|
+
<OutElem>(predicate: Predicate.Predicate<Types.NoInfer<OutElem>>): <OutErr, OutDone, InElem, InErr, InDone, Env>(
|
|
3800
3875
|
self: Channel<Arr.NonEmptyReadonlyArray<OutElem>, OutErr, OutDone, InElem, InErr, InDone, Env>
|
|
3801
|
-
) => Channel<Arr.NonEmptyReadonlyArray<
|
|
3876
|
+
) => Channel<Arr.NonEmptyReadonlyArray<OutElem>, OutErr, OutDone, InElem, InErr, InDone, Env>
|
|
3802
3877
|
/**
|
|
3803
3878
|
* Filters arrays of elements emitted by a channel, applying the filter
|
|
3804
3879
|
* to each element within the arrays and only emitting non-empty filtered arrays.
|
|
@@ -3873,19 +3948,24 @@ export const filterArray: {
|
|
|
3873
3948
|
* @since 4.0.0
|
|
3874
3949
|
* @category Filtering
|
|
3875
3950
|
*/
|
|
3876
|
-
<OutElem, OutErr, OutDone, InElem, InErr, InDone, Env
|
|
3951
|
+
<OutElem, OutErr, OutDone, InElem, InErr, InDone, Env>(
|
|
3877
3952
|
self: Channel<Arr.NonEmptyReadonlyArray<OutElem>, OutErr, OutDone, InElem, InErr, InDone, Env>,
|
|
3878
|
-
|
|
3879
|
-
): Channel<Arr.NonEmptyReadonlyArray<
|
|
3880
|
-
} = dual(2, <OutElem, OutErr, OutDone, InElem, InErr, InDone, Env
|
|
3953
|
+
predicate: Predicate.Predicate<Types.NoInfer<OutElem>>
|
|
3954
|
+
): Channel<Arr.NonEmptyReadonlyArray<OutElem>, OutErr, OutDone, InElem, InErr, InDone, Env>
|
|
3955
|
+
} = dual(2, <OutElem, OutErr, OutDone, InElem, InErr, InDone, Env>(
|
|
3881
3956
|
self: Channel<Arr.NonEmptyReadonlyArray<OutElem>, OutErr, OutDone, InElem, InErr, InDone, Env>,
|
|
3882
|
-
|
|
3883
|
-
): Channel<Arr.NonEmptyReadonlyArray<
|
|
3957
|
+
predicate: Predicate.Predicate<Types.NoInfer<OutElem>>
|
|
3958
|
+
): Channel<Arr.NonEmptyReadonlyArray<OutElem>, OutErr, OutDone, InElem, InErr, InDone, Env> =>
|
|
3884
3959
|
transformPull(self, (pull) =>
|
|
3885
3960
|
Effect.succeed(Effect.flatMap(
|
|
3886
3961
|
pull,
|
|
3887
|
-
function loop(arr): Pull.Pull<Arr.NonEmptyReadonlyArray<
|
|
3888
|
-
const
|
|
3962
|
+
function loop(arr): Pull.Pull<Arr.NonEmptyReadonlyArray<OutElem>, OutErr, OutDone> {
|
|
3963
|
+
const passes: Array<OutElem> = []
|
|
3964
|
+
for (let i = 0; i < arr.length; i++) {
|
|
3965
|
+
if (predicate(arr[i] as Types.NoInfer<OutElem>)) {
|
|
3966
|
+
passes.push(arr[i])
|
|
3967
|
+
}
|
|
3968
|
+
}
|
|
3889
3969
|
return Arr.isReadonlyArrayNonEmpty(passes)
|
|
3890
3970
|
? Effect.succeed(passes)
|
|
3891
3971
|
: Effect.flatMap(pull, loop)
|
|
@@ -3896,23 +3976,57 @@ export const filterArray: {
|
|
|
3896
3976
|
* @since 4.0.0
|
|
3897
3977
|
* @category Filtering
|
|
3898
3978
|
*/
|
|
3899
|
-
export const
|
|
3979
|
+
export const filterMapArray: {
|
|
3900
3980
|
/**
|
|
3901
3981
|
* @since 4.0.0
|
|
3902
3982
|
* @category Filtering
|
|
3903
3983
|
*/
|
|
3904
|
-
<OutElem,
|
|
3905
|
-
predicate: (a: Types.NoInfer<OutElem>, index: number) => Effect.Effect<boolean, E, R>
|
|
3906
|
-
): <OutErr, OutDone, InElem, InErr, InDone, Env>(
|
|
3984
|
+
<OutElem, B, X>(filter: Filter.Filter<Types.NoInfer<OutElem>, B, X>): <OutErr, OutDone, InElem, InErr, InDone, Env>(
|
|
3907
3985
|
self: Channel<Arr.NonEmptyReadonlyArray<OutElem>, OutErr, OutDone, InElem, InErr, InDone, Env>
|
|
3908
|
-
) => Channel<Arr.NonEmptyReadonlyArray<
|
|
3986
|
+
) => Channel<Arr.NonEmptyReadonlyArray<B>, OutErr, OutDone, InElem, InErr, InDone, Env>
|
|
3909
3987
|
/**
|
|
3910
3988
|
* @since 4.0.0
|
|
3911
3989
|
* @category Filtering
|
|
3912
3990
|
*/
|
|
3913
|
-
<OutElem,
|
|
3991
|
+
<OutElem, OutErr, OutDone, InElem, InErr, InDone, Env, B, X>(
|
|
3992
|
+
self: Channel<Arr.NonEmptyReadonlyArray<OutElem>, OutErr, OutDone, InElem, InErr, InDone, Env>,
|
|
3993
|
+
filter: Filter.Filter<OutElem, B, X>
|
|
3994
|
+
): Channel<Arr.NonEmptyReadonlyArray<B>, OutErr, OutDone, InElem, InErr, InDone, Env>
|
|
3995
|
+
} = dual(2, <OutElem, OutErr, OutDone, InElem, InErr, InDone, Env, B, X>(
|
|
3996
|
+
self: Channel<Arr.NonEmptyReadonlyArray<OutElem>, OutErr, OutDone, InElem, InErr, InDone, Env>,
|
|
3997
|
+
filter: Filter.Filter<OutElem, B, X>
|
|
3998
|
+
): Channel<Arr.NonEmptyReadonlyArray<B>, OutErr, OutDone, InElem, InErr, InDone, Env> =>
|
|
3999
|
+
transformPull(self, (pull) =>
|
|
4000
|
+
Effect.succeed(Effect.flatMap(
|
|
4001
|
+
pull,
|
|
4002
|
+
function loop(arr): Pull.Pull<Arr.NonEmptyReadonlyArray<B>, OutErr, OutDone> {
|
|
4003
|
+
const passes: Array<B> = []
|
|
4004
|
+
for (let i = 0; i < arr.length; i++) {
|
|
4005
|
+
const result = filter(arr[i])
|
|
4006
|
+
if (Result.isSuccess(result)) {
|
|
4007
|
+
passes.push(result.success)
|
|
4008
|
+
}
|
|
4009
|
+
}
|
|
4010
|
+
return Arr.isReadonlyArrayNonEmpty(passes)
|
|
4011
|
+
? Effect.succeed(passes)
|
|
4012
|
+
: Effect.flatMap(pull, loop)
|
|
4013
|
+
}
|
|
4014
|
+
))))
|
|
4015
|
+
|
|
4016
|
+
/**
|
|
4017
|
+
* @since 4.0.0
|
|
4018
|
+
* @category Filtering
|
|
4019
|
+
*/
|
|
4020
|
+
export const filterArrayEffect: {
|
|
4021
|
+
/**
|
|
4022
|
+
* @since 4.0.0
|
|
4023
|
+
* @category Filtering
|
|
4024
|
+
*/
|
|
4025
|
+
<OutElem, E, R>(
|
|
4026
|
+
predicate: (a: Types.NoInfer<OutElem>, index: number) => Effect.Effect<boolean, E, R>
|
|
4027
|
+
): <OutErr, OutDone, InElem, InErr, InDone, Env>(
|
|
3914
4028
|
self: Channel<Arr.NonEmptyReadonlyArray<OutElem>, OutErr, OutDone, InElem, InErr, InDone, Env>
|
|
3915
|
-
) => Channel<Arr.NonEmptyReadonlyArray<
|
|
4029
|
+
) => Channel<Arr.NonEmptyReadonlyArray<OutElem>, OutErr | E, OutDone, InElem, InErr, InDone, Env | R>
|
|
3916
4030
|
/**
|
|
3917
4031
|
* @since 4.0.0
|
|
3918
4032
|
* @category Filtering
|
|
@@ -3921,6 +4035,32 @@ export const filterArrayEffect: {
|
|
|
3921
4035
|
self: Channel<Arr.NonEmptyReadonlyArray<OutElem>, OutErr, OutDone, InElem, InErr, InDone, Env>,
|
|
3922
4036
|
predicate: (a: Types.NoInfer<OutElem>, index: number) => Effect.Effect<boolean, E, R>
|
|
3923
4037
|
): Channel<Arr.NonEmptyReadonlyArray<OutElem>, OutErr | E, OutDone, InElem, InErr, InDone, Env | R>
|
|
4038
|
+
} = dual(2, <OutElem, OutErr, OutDone, InElem, InErr, InDone, Env, E, R>(
|
|
4039
|
+
self: Channel<Arr.NonEmptyReadonlyArray<OutElem>, OutErr, OutDone, InElem, InErr, InDone, Env>,
|
|
4040
|
+
predicate: (a: Types.NoInfer<OutElem>, index: number) => Effect.Effect<boolean, E, R>
|
|
4041
|
+
): Channel<Arr.NonEmptyReadonlyArray<OutElem>, OutErr | E, OutDone, InElem, InErr, InDone, Env | R> =>
|
|
4042
|
+
transformPull(self, (pull) => {
|
|
4043
|
+
const f = Effect.flatMap(pull, (arr) => Effect.filter(arr, predicate))
|
|
4044
|
+
return Effect.succeed(Effect.flatMap(
|
|
4045
|
+
f,
|
|
4046
|
+
function loop(arr): Pull.Pull<Arr.NonEmptyReadonlyArray<OutElem>, OutErr | E, OutDone, R> {
|
|
4047
|
+
return Arr.isReadonlyArrayNonEmpty(arr) ? Effect.succeed(arr) : Effect.flatMap(f, loop)
|
|
4048
|
+
}
|
|
4049
|
+
))
|
|
4050
|
+
}))
|
|
4051
|
+
|
|
4052
|
+
/**
|
|
4053
|
+
* @since 4.0.0
|
|
4054
|
+
* @category Filtering
|
|
4055
|
+
*/
|
|
4056
|
+
export const filterMapArrayEffect: {
|
|
4057
|
+
/**
|
|
4058
|
+
* @since 4.0.0
|
|
4059
|
+
* @category Filtering
|
|
4060
|
+
*/
|
|
4061
|
+
<OutElem, B, X, EX, RX>(filter: Filter.FilterEffect<Types.NoInfer<OutElem>, B, X, EX, RX>): <OutErr, OutDone, InElem, InErr, InDone, Env>(
|
|
4062
|
+
self: Channel<Arr.NonEmptyReadonlyArray<OutElem>, OutErr, OutDone, InElem, InErr, InDone, Env>
|
|
4063
|
+
) => Channel<Arr.NonEmptyReadonlyArray<B>, OutErr | EX, OutDone, InElem, InErr, InDone, Env | RX>
|
|
3924
4064
|
/**
|
|
3925
4065
|
* @since 4.0.0
|
|
3926
4066
|
* @category Filtering
|
|
@@ -3929,32 +4069,23 @@ export const filterArrayEffect: {
|
|
|
3929
4069
|
self: Channel<Arr.NonEmptyReadonlyArray<OutElem>, OutErr, OutDone, InElem, InErr, InDone, Env>,
|
|
3930
4070
|
filter: Filter.FilterEffect<OutElem, B, X, EX, RX>
|
|
3931
4071
|
): Channel<Arr.NonEmptyReadonlyArray<B>, OutErr | EX, OutDone, InElem, InErr, InDone, Env | RX>
|
|
3932
|
-
} = dual(2, <OutElem, OutErr, OutDone, InElem, InErr, InDone, Env>(
|
|
4072
|
+
} = dual(2, <OutElem, OutErr, OutDone, InElem, InErr, InDone, Env, B, X, EX, RX>(
|
|
3933
4073
|
self: Channel<Arr.NonEmptyReadonlyArray<OutElem>, OutErr, OutDone, InElem, InErr, InDone, Env>,
|
|
3934
|
-
filter:
|
|
3935
|
-
|
|
3936
|
-
|
|
3937
|
-
|
|
3938
|
-
|
|
3939
|
-
|
|
3940
|
-
|
|
3941
|
-
|
|
3942
|
-
|
|
3943
|
-
|
|
3944
|
-
|
|
3945
|
-
|
|
3946
|
-
|
|
3947
|
-
|
|
3948
|
-
|
|
3949
|
-
})
|
|
3950
|
-
}
|
|
3951
|
-
// FilterEffect: (a) => Effect<pass|fail>
|
|
3952
|
-
return filterEffect(self, (arr) =>
|
|
3953
|
-
Effect.map(
|
|
3954
|
-
Effect.filter(arr, filter as any),
|
|
3955
|
-
(passes) => Arr.isReadonlyArrayNonEmpty(passes) ? Result.succeed(passes) : Result.fail(undefined)
|
|
3956
|
-
))
|
|
3957
|
-
})
|
|
4074
|
+
filter: Filter.FilterEffect<OutElem, B, X, EX, RX>
|
|
4075
|
+
): Channel<Arr.NonEmptyReadonlyArray<B>, OutErr | EX, OutDone, InElem, InErr, InDone, Env | RX> =>
|
|
4076
|
+
transformPull(self, (pull) =>
|
|
4077
|
+
Effect.succeed(Effect.flatMap(
|
|
4078
|
+
pull,
|
|
4079
|
+
function loop(arr): Pull.Pull<Arr.NonEmptyReadonlyArray<B>, OutErr | EX, OutDone, RX> {
|
|
4080
|
+
return Effect.flatMap(
|
|
4081
|
+
Effect.filterMapEffect(arr, filter as any),
|
|
4082
|
+
(passes) =>
|
|
4083
|
+
Arr.isReadonlyArrayNonEmpty(passes)
|
|
4084
|
+
? Effect.succeed(passes as Arr.NonEmptyReadonlyArray<B>)
|
|
4085
|
+
: Effect.flatMap(pull, loop)
|
|
4086
|
+
)
|
|
4087
|
+
}
|
|
4088
|
+
))))
|
|
3958
4089
|
|
|
3959
4090
|
/**
|
|
3960
4091
|
* Statefully maps over a channel with an accumulator, where each element can produce multiple output values.
|
|
@@ -4757,7 +4888,6 @@ export const catchCauseIf: {
|
|
|
4757
4888
|
*/
|
|
4758
4889
|
<
|
|
4759
4890
|
OutErr,
|
|
4760
|
-
Result extends Filter.ResultOrBool<Cause.Cause<any>>,
|
|
4761
4891
|
OutElem1,
|
|
4762
4892
|
OutErr1,
|
|
4763
4893
|
OutDone1,
|
|
@@ -4766,11 +4896,8 @@ export const catchCauseIf: {
|
|
|
4766
4896
|
InDone1,
|
|
4767
4897
|
Env1
|
|
4768
4898
|
>(
|
|
4769
|
-
|
|
4770
|
-
f: (
|
|
4771
|
-
failure: Filter.Pass<Cause.Cause<OutErr>, Result>,
|
|
4772
|
-
cause: Cause.Cause<OutErr>
|
|
4773
|
-
) => Channel<OutElem1, OutErr1, OutDone1, InElem1, InErr1, InDone1, Env1>
|
|
4899
|
+
predicate: Predicate.Predicate<Cause.Cause<OutErr>>,
|
|
4900
|
+
f: (cause: Cause.Cause<OutErr>) => Channel<OutElem1, OutErr1, OutDone1, InElem1, InErr1, InDone1, Env1>
|
|
4774
4901
|
): <
|
|
4775
4902
|
OutElem,
|
|
4776
4903
|
OutDone,
|
|
@@ -4780,7 +4907,7 @@ export const catchCauseIf: {
|
|
|
4780
4907
|
Env
|
|
4781
4908
|
>(self: Channel<OutElem, OutErr, OutDone, InElem, InErr, InDone, Env>) => Channel<
|
|
4782
4909
|
OutElem | OutElem1,
|
|
4783
|
-
|
|
4910
|
+
OutErr | OutErr1,
|
|
4784
4911
|
OutDone | OutDone1,
|
|
4785
4912
|
InElem & InElem1,
|
|
4786
4913
|
InErr & InErr1,
|
|
@@ -4802,7 +4929,6 @@ export const catchCauseIf: {
|
|
|
4802
4929
|
InErr,
|
|
4803
4930
|
InDone,
|
|
4804
4931
|
Env,
|
|
4805
|
-
Result extends Filter.ResultOrBool<Cause.Cause<any>>,
|
|
4806
4932
|
OutElem1,
|
|
4807
4933
|
OutErr1,
|
|
4808
4934
|
OutDone1,
|
|
@@ -4812,14 +4938,137 @@ export const catchCauseIf: {
|
|
|
4812
4938
|
Env1
|
|
4813
4939
|
>(
|
|
4814
4940
|
self: Channel<OutElem, OutErr, OutDone, InElem, InErr, InDone, Env>,
|
|
4815
|
-
|
|
4941
|
+
predicate: Predicate.Predicate<Cause.Cause<OutErr>>,
|
|
4942
|
+
f: (cause: Cause.Cause<OutErr>) => Channel<OutElem1, OutErr1, OutDone1, InElem1, InErr1, InDone1, Env1>
|
|
4943
|
+
): Channel<
|
|
4944
|
+
OutElem | OutElem1,
|
|
4945
|
+
OutErr | OutErr1,
|
|
4946
|
+
OutDone | OutDone1,
|
|
4947
|
+
InElem & InElem1,
|
|
4948
|
+
InErr & InErr1,
|
|
4949
|
+
InDone & InDone1,
|
|
4950
|
+
Env | Env1
|
|
4951
|
+
>
|
|
4952
|
+
} = dual(3, <
|
|
4953
|
+
OutElem,
|
|
4954
|
+
OutErr,
|
|
4955
|
+
OutDone,
|
|
4956
|
+
InElem,
|
|
4957
|
+
InErr,
|
|
4958
|
+
InDone,
|
|
4959
|
+
Env,
|
|
4960
|
+
OutElem1,
|
|
4961
|
+
OutErr1,
|
|
4962
|
+
OutDone1,
|
|
4963
|
+
InElem1,
|
|
4964
|
+
InErr1,
|
|
4965
|
+
InDone1,
|
|
4966
|
+
Env1
|
|
4967
|
+
>(
|
|
4968
|
+
self: Channel<OutElem, OutErr, OutDone, InElem, InErr, InDone, Env>,
|
|
4969
|
+
predicate: Predicate.Predicate<Cause.Cause<OutErr>>,
|
|
4970
|
+
f: (cause: Cause.Cause<OutErr>) => Channel<OutElem1, OutErr1, OutDone1, InElem1, InErr1, InDone1, Env1>
|
|
4971
|
+
): Channel<
|
|
4972
|
+
OutElem | OutElem1,
|
|
4973
|
+
OutErr | OutErr1,
|
|
4974
|
+
OutDone | OutDone1,
|
|
4975
|
+
InElem & InElem1,
|
|
4976
|
+
InErr & InErr1,
|
|
4977
|
+
InDone & InDone1,
|
|
4978
|
+
Env | Env1
|
|
4979
|
+
> =>
|
|
4980
|
+
catchCause(
|
|
4981
|
+
self,
|
|
4982
|
+
(
|
|
4983
|
+
cause
|
|
4984
|
+
): Channel<
|
|
4985
|
+
OutElem1,
|
|
4986
|
+
OutErr | OutErr1,
|
|
4987
|
+
OutDone1,
|
|
4988
|
+
InElem1,
|
|
4989
|
+
InErr1,
|
|
4990
|
+
InDone1,
|
|
4991
|
+
Env1
|
|
4992
|
+
> => {
|
|
4993
|
+
return predicate(cause)
|
|
4994
|
+
? f(cause)
|
|
4995
|
+
: failCause(cause as any)
|
|
4996
|
+
}
|
|
4997
|
+
))
|
|
4998
|
+
|
|
4999
|
+
/**
|
|
5000
|
+
* @since 4.0.0
|
|
5001
|
+
* @category Error handling
|
|
5002
|
+
*/
|
|
5003
|
+
export const catchCauseFilter: {
|
|
5004
|
+
/**
|
|
5005
|
+
* @since 4.0.0
|
|
5006
|
+
* @category Error handling
|
|
5007
|
+
*/
|
|
5008
|
+
<
|
|
5009
|
+
OutErr,
|
|
5010
|
+
EB,
|
|
5011
|
+
X extends Cause.Cause<any>,
|
|
5012
|
+
OutElem1,
|
|
5013
|
+
OutErr1,
|
|
5014
|
+
OutDone1,
|
|
5015
|
+
InElem1,
|
|
5016
|
+
InErr1,
|
|
5017
|
+
InDone1,
|
|
5018
|
+
Env1
|
|
5019
|
+
>(
|
|
5020
|
+
filter: Filter.Filter<Cause.Cause<OutErr>, EB, X>,
|
|
5021
|
+
f: (
|
|
5022
|
+
failure: EB,
|
|
5023
|
+
cause: Cause.Cause<OutErr>
|
|
5024
|
+
) => Channel<OutElem1, OutErr1, OutDone1, InElem1, InErr1, InDone1, Env1>
|
|
5025
|
+
): <
|
|
5026
|
+
OutElem,
|
|
5027
|
+
OutDone,
|
|
5028
|
+
InElem,
|
|
5029
|
+
InErr,
|
|
5030
|
+
InDone,
|
|
5031
|
+
Env
|
|
5032
|
+
>(self: Channel<OutElem, OutErr, OutDone, InElem, InErr, InDone, Env>) => Channel<
|
|
5033
|
+
OutElem | OutElem1,
|
|
5034
|
+
Cause.Cause.Error<X> | OutErr1,
|
|
5035
|
+
OutDone | OutDone1,
|
|
5036
|
+
InElem & InElem1,
|
|
5037
|
+
InErr & InErr1,
|
|
5038
|
+
InDone & InDone1,
|
|
5039
|
+
Env | Env1
|
|
5040
|
+
>
|
|
5041
|
+
/**
|
|
5042
|
+
* @since 4.0.0
|
|
5043
|
+
* @category Error handling
|
|
5044
|
+
*/
|
|
5045
|
+
<
|
|
5046
|
+
OutElem,
|
|
5047
|
+
OutErr,
|
|
5048
|
+
OutDone,
|
|
5049
|
+
InElem,
|
|
5050
|
+
InErr,
|
|
5051
|
+
InDone,
|
|
5052
|
+
Env,
|
|
5053
|
+
EB,
|
|
5054
|
+
X extends Cause.Cause<any>,
|
|
5055
|
+
OutElem1,
|
|
5056
|
+
OutErr1,
|
|
5057
|
+
OutDone1,
|
|
5058
|
+
InElem1,
|
|
5059
|
+
InErr1,
|
|
5060
|
+
InDone1,
|
|
5061
|
+
Env1
|
|
5062
|
+
>(
|
|
5063
|
+
self: Channel<OutElem, OutErr, OutDone, InElem, InErr, InDone, Env>,
|
|
5064
|
+
filter: Filter.Filter<Cause.Cause<OutErr>, EB, X>,
|
|
4816
5065
|
f: (
|
|
4817
|
-
failure:
|
|
5066
|
+
failure: EB,
|
|
4818
5067
|
cause: Cause.Cause<OutErr>
|
|
4819
5068
|
) => Channel<OutElem1, OutErr1, OutDone1, InElem1, InErr1, InDone1, Env1>
|
|
4820
5069
|
): Channel<
|
|
4821
5070
|
OutElem | OutElem1,
|
|
4822
|
-
Cause.Cause.Error<
|
|
5071
|
+
Cause.Cause.Error<X> | OutErr1,
|
|
4823
5072
|
OutDone | OutDone1,
|
|
4824
5073
|
InElem & InElem1,
|
|
4825
5074
|
InErr & InErr1,
|
|
@@ -4834,7 +5083,8 @@ export const catchCauseIf: {
|
|
|
4834
5083
|
InErr,
|
|
4835
5084
|
InDone,
|
|
4836
5085
|
Env,
|
|
4837
|
-
|
|
5086
|
+
EB,
|
|
5087
|
+
X extends Cause.Cause<any>,
|
|
4838
5088
|
OutElem1,
|
|
4839
5089
|
OutErr1,
|
|
4840
5090
|
OutDone1,
|
|
@@ -4844,14 +5094,14 @@ export const catchCauseIf: {
|
|
|
4844
5094
|
Env1
|
|
4845
5095
|
>(
|
|
4846
5096
|
self: Channel<OutElem, OutErr, OutDone, InElem, InErr, InDone, Env>,
|
|
4847
|
-
filter: Filter.
|
|
5097
|
+
filter: Filter.Filter<Cause.Cause<OutErr>, EB, X>,
|
|
4848
5098
|
f: (
|
|
4849
|
-
failure:
|
|
5099
|
+
failure: EB,
|
|
4850
5100
|
cause: Cause.Cause<OutErr>
|
|
4851
5101
|
) => Channel<OutElem1, OutErr1, OutDone1, InElem1, InErr1, InDone1, Env1>
|
|
4852
5102
|
): Channel<
|
|
4853
5103
|
OutElem | OutElem1,
|
|
4854
|
-
Cause.Cause.Error<
|
|
5104
|
+
Cause.Cause.Error<X> | OutErr1,
|
|
4855
5105
|
OutDone | OutDone1,
|
|
4856
5106
|
InElem & InElem1,
|
|
4857
5107
|
InErr & InErr1,
|
|
@@ -4864,18 +5114,17 @@ export const catchCauseIf: {
|
|
|
4864
5114
|
cause
|
|
4865
5115
|
): Channel<
|
|
4866
5116
|
OutElem1,
|
|
4867
|
-
Cause.Cause.Error<
|
|
5117
|
+
Cause.Cause.Error<X> | OutErr1,
|
|
4868
5118
|
OutDone1,
|
|
4869
5119
|
InElem1,
|
|
4870
5120
|
InErr1,
|
|
4871
5121
|
InDone1,
|
|
4872
5122
|
Env1
|
|
4873
5123
|
> => {
|
|
4874
|
-
const
|
|
4875
|
-
|
|
4876
|
-
|
|
4877
|
-
|
|
4878
|
-
return failCause(eb.failure)
|
|
5124
|
+
const result = filter(cause)
|
|
5125
|
+
return Result.isFailure(result)
|
|
5126
|
+
? failCause(result.failure)
|
|
5127
|
+
: f(result.success, cause)
|
|
4879
5128
|
}
|
|
4880
5129
|
))
|
|
4881
5130
|
|
|
@@ -4951,7 +5200,7 @@ const catch_: {
|
|
|
4951
5200
|
InErr & InErr1,
|
|
4952
5201
|
InDone & InDone1,
|
|
4953
5202
|
Env | Env1
|
|
4954
|
-
> =>
|
|
5203
|
+
> => catchCauseFilter(self, Cause.findError, (e) => f(e)))
|
|
4955
5204
|
|
|
4956
5205
|
export {
|
|
4957
5206
|
/**
|
|
@@ -5101,7 +5350,6 @@ export const catchIf: {
|
|
|
5101
5350
|
*/
|
|
5102
5351
|
<
|
|
5103
5352
|
OutErr,
|
|
5104
|
-
Result extends Filter.ResultOrBool,
|
|
5105
5353
|
OutElem1,
|
|
5106
5354
|
OutErr1,
|
|
5107
5355
|
OutDone1,
|
|
@@ -5110,18 +5358,18 @@ export const catchIf: {
|
|
|
5110
5358
|
InDone1,
|
|
5111
5359
|
Env1,
|
|
5112
5360
|
OutElem2 = never,
|
|
5113
|
-
OutErr2 =
|
|
5361
|
+
OutErr2 = OutErr,
|
|
5114
5362
|
OutDone2 = never,
|
|
5115
5363
|
InElem2 = unknown,
|
|
5116
5364
|
InErr2 = unknown,
|
|
5117
5365
|
InDone2 = unknown,
|
|
5118
5366
|
Env2 = never
|
|
5119
5367
|
>(
|
|
5120
|
-
|
|
5121
|
-
f: (failure:
|
|
5368
|
+
predicate: Predicate.Predicate<OutErr>,
|
|
5369
|
+
f: (failure: OutErr) => Channel<OutElem1, OutErr1, OutDone1, InElem1, InErr1, InDone1, Env1>,
|
|
5122
5370
|
orElse?:
|
|
5123
5371
|
| ((
|
|
5124
|
-
failure:
|
|
5372
|
+
failure: OutErr
|
|
5125
5373
|
) => Channel<OutElem2, OutErr2, OutDone2, InElem2, InErr2, InDone2, Env2>)
|
|
5126
5374
|
| undefined
|
|
5127
5375
|
): <
|
|
@@ -5197,7 +5445,6 @@ export const catchIf: {
|
|
|
5197
5445
|
InErr,
|
|
5198
5446
|
InDone,
|
|
5199
5447
|
Env,
|
|
5200
|
-
Result extends Filter.ResultOrBool,
|
|
5201
5448
|
OutElem1,
|
|
5202
5449
|
OutErr1,
|
|
5203
5450
|
OutDone1,
|
|
@@ -5206,7 +5453,7 @@ export const catchIf: {
|
|
|
5206
5453
|
InDone1,
|
|
5207
5454
|
Env1,
|
|
5208
5455
|
OutElem2 = never,
|
|
5209
|
-
OutErr2 =
|
|
5456
|
+
OutErr2 = OutErr,
|
|
5210
5457
|
OutDone2 = never,
|
|
5211
5458
|
InElem2 = unknown,
|
|
5212
5459
|
InErr2 = unknown,
|
|
@@ -5214,11 +5461,11 @@ export const catchIf: {
|
|
|
5214
5461
|
Env2 = never
|
|
5215
5462
|
>(
|
|
5216
5463
|
self: Channel<OutElem, OutErr, OutDone, InElem, InErr, InDone, Env>,
|
|
5217
|
-
|
|
5218
|
-
f: (failure:
|
|
5464
|
+
predicate: Predicate.Predicate<OutErr>,
|
|
5465
|
+
f: (failure: OutErr) => Channel<OutElem1, OutErr1, OutDone1, InElem1, InErr1, InDone1, Env1>,
|
|
5219
5466
|
orElse?:
|
|
5220
5467
|
| ((
|
|
5221
|
-
failure:
|
|
5468
|
+
failure: OutErr
|
|
5222
5469
|
) => Channel<OutElem2, OutErr2, OutDone2, InElem2, InErr2, InDone2, Env2>)
|
|
5223
5470
|
| undefined
|
|
5224
5471
|
): Channel<
|
|
@@ -5238,7 +5485,6 @@ export const catchIf: {
|
|
|
5238
5485
|
InErr,
|
|
5239
5486
|
InDone,
|
|
5240
5487
|
Env,
|
|
5241
|
-
Result extends Filter.ResultOrBool,
|
|
5242
5488
|
OutElem1,
|
|
5243
5489
|
OutErr1,
|
|
5244
5490
|
OutDone1,
|
|
@@ -5247,7 +5493,7 @@ export const catchIf: {
|
|
|
5247
5493
|
InDone1,
|
|
5248
5494
|
Env1,
|
|
5249
5495
|
OutElem2 = never,
|
|
5250
|
-
OutErr2 =
|
|
5496
|
+
OutErr2 = OutErr,
|
|
5251
5497
|
OutDone2 = never,
|
|
5252
5498
|
InElem2 = unknown,
|
|
5253
5499
|
InErr2 = unknown,
|
|
@@ -5255,11 +5501,11 @@ export const catchIf: {
|
|
|
5255
5501
|
Env2 = never
|
|
5256
5502
|
>(
|
|
5257
5503
|
self: Channel<OutElem, OutErr, OutDone, InElem, InErr, InDone, Env>,
|
|
5258
|
-
|
|
5259
|
-
f: (failure:
|
|
5504
|
+
predicate: Predicate.Predicate<OutErr>,
|
|
5505
|
+
f: (failure: OutErr) => Channel<OutElem1, OutErr1, OutDone1, InElem1, InErr1, InDone1, Env1>,
|
|
5260
5506
|
orElse?:
|
|
5261
5507
|
| ((
|
|
5262
|
-
failure:
|
|
5508
|
+
failure: OutErr
|
|
5263
5509
|
) => Channel<OutElem2, OutErr2, OutDone2, InElem2, InErr2, InDone2, Env2>)
|
|
5264
5510
|
| undefined
|
|
5265
5511
|
): Channel<
|
|
@@ -5282,12 +5528,170 @@ export const catchIf: {
|
|
|
5282
5528
|
InDone1 & InDone2,
|
|
5283
5529
|
Env1 | Env2
|
|
5284
5530
|
> => {
|
|
5285
|
-
|
|
5286
|
-
|
|
5287
|
-
? f(eb.success as any)
|
|
5531
|
+
return predicate(err)
|
|
5532
|
+
? f(err)
|
|
5288
5533
|
: orElse
|
|
5289
|
-
? orElse(
|
|
5290
|
-
: fail(
|
|
5534
|
+
? orElse(err)
|
|
5535
|
+
: fail(err as any) as any
|
|
5536
|
+
}
|
|
5537
|
+
))
|
|
5538
|
+
|
|
5539
|
+
/**
|
|
5540
|
+
* @since 4.0.0
|
|
5541
|
+
* @category Error handling
|
|
5542
|
+
*/
|
|
5543
|
+
export const catchFilter: {
|
|
5544
|
+
/**
|
|
5545
|
+
* @since 4.0.0
|
|
5546
|
+
* @category Error handling
|
|
5547
|
+
*/
|
|
5548
|
+
<
|
|
5549
|
+
OutErr,
|
|
5550
|
+
EB,
|
|
5551
|
+
X,
|
|
5552
|
+
OutElem1,
|
|
5553
|
+
OutErr1,
|
|
5554
|
+
OutDone1,
|
|
5555
|
+
InElem1,
|
|
5556
|
+
InErr1,
|
|
5557
|
+
InDone1,
|
|
5558
|
+
Env1,
|
|
5559
|
+
OutElem2 = never,
|
|
5560
|
+
OutErr2 = X,
|
|
5561
|
+
OutDone2 = never,
|
|
5562
|
+
InElem2 = unknown,
|
|
5563
|
+
InErr2 = unknown,
|
|
5564
|
+
InDone2 = unknown,
|
|
5565
|
+
Env2 = never
|
|
5566
|
+
>(
|
|
5567
|
+
filter: Filter.Filter<OutErr, EB, X>,
|
|
5568
|
+
f: (failure: EB) => Channel<OutElem1, OutErr1, OutDone1, InElem1, InErr1, InDone1, Env1>,
|
|
5569
|
+
orElse?:
|
|
5570
|
+
| ((
|
|
5571
|
+
failure: X
|
|
5572
|
+
) => Channel<OutElem2, OutErr2, OutDone2, InElem2, InErr2, InDone2, Env2>)
|
|
5573
|
+
| undefined
|
|
5574
|
+
): <
|
|
5575
|
+
OutElem,
|
|
5576
|
+
OutDone,
|
|
5577
|
+
InElem,
|
|
5578
|
+
InErr,
|
|
5579
|
+
InDone,
|
|
5580
|
+
Env
|
|
5581
|
+
>(self: Channel<OutElem, OutErr, OutDone, InElem, InErr, InDone, Env>) => Channel<
|
|
5582
|
+
OutElem | OutElem1 | OutElem2,
|
|
5583
|
+
OutErr1 | OutErr2,
|
|
5584
|
+
OutDone | OutDone1 | OutDone2,
|
|
5585
|
+
InElem & InElem1 & InElem2,
|
|
5586
|
+
InErr & InErr1 & InErr2,
|
|
5587
|
+
InDone & InDone1 & InDone2,
|
|
5588
|
+
Env | Env1 | Env2
|
|
5589
|
+
>
|
|
5590
|
+
/**
|
|
5591
|
+
* @since 4.0.0
|
|
5592
|
+
* @category Error handling
|
|
5593
|
+
*/
|
|
5594
|
+
<
|
|
5595
|
+
OutElem,
|
|
5596
|
+
OutErr,
|
|
5597
|
+
OutDone,
|
|
5598
|
+
InElem,
|
|
5599
|
+
InErr,
|
|
5600
|
+
InDone,
|
|
5601
|
+
Env,
|
|
5602
|
+
EB,
|
|
5603
|
+
X,
|
|
5604
|
+
OutElem1,
|
|
5605
|
+
OutErr1,
|
|
5606
|
+
OutDone1,
|
|
5607
|
+
InElem1,
|
|
5608
|
+
InErr1,
|
|
5609
|
+
InDone1,
|
|
5610
|
+
Env1,
|
|
5611
|
+
OutElem2 = never,
|
|
5612
|
+
OutErr2 = X,
|
|
5613
|
+
OutDone2 = never,
|
|
5614
|
+
InElem2 = unknown,
|
|
5615
|
+
InErr2 = unknown,
|
|
5616
|
+
InDone2 = unknown,
|
|
5617
|
+
Env2 = never
|
|
5618
|
+
>(
|
|
5619
|
+
self: Channel<OutElem, OutErr, OutDone, InElem, InErr, InDone, Env>,
|
|
5620
|
+
filter: Filter.Filter<OutErr, EB, X>,
|
|
5621
|
+
f: (failure: EB) => Channel<OutElem1, OutErr1, OutDone1, InElem1, InErr1, InDone1, Env1>,
|
|
5622
|
+
orElse?:
|
|
5623
|
+
| ((
|
|
5624
|
+
failure: X
|
|
5625
|
+
) => Channel<OutElem2, OutErr2, OutDone2, InElem2, InErr2, InDone2, Env2>)
|
|
5626
|
+
| undefined
|
|
5627
|
+
): Channel<
|
|
5628
|
+
OutElem | OutElem1 | OutElem2,
|
|
5629
|
+
OutErr1 | OutErr2,
|
|
5630
|
+
OutDone | OutDone1 | OutDone2,
|
|
5631
|
+
InElem & InElem1 & InElem2,
|
|
5632
|
+
InErr & InErr1 & InErr2,
|
|
5633
|
+
InDone & InDone1 & InDone2,
|
|
5634
|
+
Env | Env1 | Env2
|
|
5635
|
+
>
|
|
5636
|
+
} = dual((args) => isChannel(args[0]), <
|
|
5637
|
+
OutElem,
|
|
5638
|
+
OutErr,
|
|
5639
|
+
OutDone,
|
|
5640
|
+
InElem,
|
|
5641
|
+
InErr,
|
|
5642
|
+
InDone,
|
|
5643
|
+
Env,
|
|
5644
|
+
EB,
|
|
5645
|
+
X,
|
|
5646
|
+
OutElem1,
|
|
5647
|
+
OutErr1,
|
|
5648
|
+
OutDone1,
|
|
5649
|
+
InElem1,
|
|
5650
|
+
InErr1,
|
|
5651
|
+
InDone1,
|
|
5652
|
+
Env1,
|
|
5653
|
+
OutElem2 = never,
|
|
5654
|
+
OutErr2 = X,
|
|
5655
|
+
OutDone2 = never,
|
|
5656
|
+
InElem2 = unknown,
|
|
5657
|
+
InErr2 = unknown,
|
|
5658
|
+
InDone2 = unknown,
|
|
5659
|
+
Env2 = never
|
|
5660
|
+
>(
|
|
5661
|
+
self: Channel<OutElem, OutErr, OutDone, InElem, InErr, InDone, Env>,
|
|
5662
|
+
filter: Filter.Filter<OutErr, EB, X>,
|
|
5663
|
+
f: (failure: EB) => Channel<OutElem1, OutErr1, OutDone1, InElem1, InErr1, InDone1, Env1>,
|
|
5664
|
+
orElse?:
|
|
5665
|
+
| ((
|
|
5666
|
+
failure: X
|
|
5667
|
+
) => Channel<OutElem2, OutErr2, OutDone2, InElem2, InErr2, InDone2, Env2>)
|
|
5668
|
+
| undefined
|
|
5669
|
+
): Channel<
|
|
5670
|
+
OutElem | OutElem1 | OutElem2,
|
|
5671
|
+
OutErr1 | OutErr2,
|
|
5672
|
+
OutDone | OutDone1 | OutDone2,
|
|
5673
|
+
InElem & InElem1 & InElem2,
|
|
5674
|
+
InErr & InErr1 & InErr2,
|
|
5675
|
+
InDone & InDone1 & InDone2,
|
|
5676
|
+
Env | Env1 | Env2
|
|
5677
|
+
> =>
|
|
5678
|
+
catch_(
|
|
5679
|
+
self,
|
|
5680
|
+
(err): Channel<
|
|
5681
|
+
OutElem1 | OutElem2,
|
|
5682
|
+
OutErr1 | OutErr2,
|
|
5683
|
+
OutDone1 | OutDone2,
|
|
5684
|
+
InElem1 & InElem2,
|
|
5685
|
+
InErr1 & InErr2,
|
|
5686
|
+
InDone1 & InDone2,
|
|
5687
|
+
Env1 | Env2
|
|
5688
|
+
> => {
|
|
5689
|
+
const result = filter(err)
|
|
5690
|
+
return Result.isFailure(result)
|
|
5691
|
+
? orElse
|
|
5692
|
+
? orElse(result.failure)
|
|
5693
|
+
: fail(result.failure as any) as any
|
|
5694
|
+
: f(result.success)
|
|
5291
5695
|
}
|
|
5292
5696
|
))
|
|
5293
5697
|
|
|
@@ -5872,7 +6276,7 @@ export const catchReasons: {
|
|
|
5872
6276
|
>
|
|
5873
6277
|
} = dual((args) => isChannel(args[0]), (self, errorTag, cases, orElse) => {
|
|
5874
6278
|
let keys: Set<string>
|
|
5875
|
-
return catch_(self, (error
|
|
6279
|
+
return catch_(self, (error) => {
|
|
5876
6280
|
if (
|
|
5877
6281
|
isTagged(error, errorTag) &&
|
|
5878
6282
|
hasProperty(error, "reason") &&
|
|
@@ -6034,11 +6438,11 @@ export const unwrapReason: {
|
|
|
6034
6438
|
InDone,
|
|
6035
6439
|
Env
|
|
6036
6440
|
> =>
|
|
6037
|
-
|
|
6441
|
+
catchFilter(
|
|
6038
6442
|
self,
|
|
6039
|
-
(error
|
|
6443
|
+
(error) =>
|
|
6040
6444
|
isTagged(error, errorTag) && hasProperty(error, "reason") ? Result.succeed(error.reason) : Result.fail(error),
|
|
6041
|
-
fail
|
|
6445
|
+
fail
|
|
6042
6446
|
) as any)
|
|
6043
6447
|
|
|
6044
6448
|
/**
|