effect 2.2.0 → 2.2.2
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/Cause.js.map +1 -1
- package/dist/cjs/Effect.js.map +1 -1
- package/dist/cjs/Either.js +1 -1
- package/dist/cjs/Either.js.map +1 -1
- package/dist/cjs/Exit.js.map +1 -1
- package/dist/cjs/HashMap.js.map +1 -1
- package/dist/cjs/HashSet.js.map +1 -1
- package/dist/cjs/List.js.map +1 -1
- package/dist/cjs/ReadonlyArray.js.map +1 -1
- package/dist/cjs/ReadonlyRecord.js.map +1 -1
- package/dist/cjs/STM.js.map +1 -1
- package/dist/cjs/internal/cause.js.map +1 -1
- package/dist/cjs/internal/channel.js +3 -3
- package/dist/cjs/internal/channel.js.map +1 -1
- package/dist/cjs/internal/core-effect.js +7 -7
- package/dist/cjs/internal/core-effect.js.map +1 -1
- package/dist/cjs/internal/core.js +1 -1
- package/dist/cjs/internal/core.js.map +1 -1
- package/dist/cjs/internal/groupBy.js.map +1 -1
- package/dist/cjs/internal/hashMap.js.map +1 -1
- package/dist/cjs/internal/hashSet.js.map +1 -1
- package/dist/cjs/internal/scopedRef.js +4 -5
- package/dist/cjs/internal/scopedRef.js.map +1 -1
- package/dist/cjs/internal/stm/stm.js.map +1 -1
- package/dist/cjs/internal/stream.js +1 -4
- package/dist/cjs/internal/stream.js.map +1 -1
- package/dist/cjs/internal/trie.js.map +1 -1
- package/dist/cjs/internal/version.js +1 -1
- package/dist/dts/Cause.d.ts +6 -4
- package/dist/dts/Cause.d.ts.map +1 -1
- package/dist/dts/Chunk.d.ts +16 -16
- package/dist/dts/Chunk.d.ts.map +1 -1
- package/dist/dts/Effect.d.ts +31 -31
- package/dist/dts/Effect.d.ts.map +1 -1
- package/dist/dts/Either.d.ts +9 -9
- package/dist/dts/Either.d.ts.map +1 -1
- package/dist/dts/Exit.d.ts +3 -2
- package/dist/dts/Exit.d.ts.map +1 -1
- package/dist/dts/GroupBy.d.ts +6 -6
- package/dist/dts/GroupBy.d.ts.map +1 -1
- package/dist/dts/HashMap.d.ts +5 -4
- package/dist/dts/HashMap.d.ts.map +1 -1
- package/dist/dts/HashSet.d.ts +6 -5
- package/dist/dts/HashSet.d.ts.map +1 -1
- package/dist/dts/List.d.ts +9 -8
- package/dist/dts/List.d.ts.map +1 -1
- package/dist/dts/Option.d.ts +7 -7
- package/dist/dts/Option.d.ts.map +1 -1
- package/dist/dts/ReadonlyArray.d.ts +25 -23
- package/dist/dts/ReadonlyArray.d.ts.map +1 -1
- package/dist/dts/ReadonlyRecord.d.ts +5 -4
- package/dist/dts/ReadonlyRecord.d.ts.map +1 -1
- package/dist/dts/STM.d.ts +28 -26
- package/dist/dts/STM.d.ts.map +1 -1
- package/dist/dts/SortedSet.d.ts +3 -3
- package/dist/dts/SortedSet.d.ts.map +1 -1
- package/dist/dts/Stream.d.ts +37 -37
- package/dist/dts/Stream.d.ts.map +1 -1
- package/dist/dts/Trie.d.ts +4 -4
- package/dist/dts/Trie.d.ts.map +1 -1
- package/dist/dts/internal/hashMap.d.ts.map +1 -1
- package/dist/dts/internal/stm/stm.d.ts.map +1 -1
- package/dist/dts/internal/version.d.ts +1 -1
- package/dist/esm/Cause.js.map +1 -1
- package/dist/esm/Effect.js.map +1 -1
- package/dist/esm/Either.js +1 -1
- package/dist/esm/Either.js.map +1 -1
- package/dist/esm/Exit.js.map +1 -1
- package/dist/esm/HashMap.js.map +1 -1
- package/dist/esm/HashSet.js.map +1 -1
- package/dist/esm/List.js.map +1 -1
- package/dist/esm/ReadonlyArray.js.map +1 -1
- package/dist/esm/ReadonlyRecord.js.map +1 -1
- package/dist/esm/STM.js.map +1 -1
- package/dist/esm/internal/cause.js.map +1 -1
- package/dist/esm/internal/channel.js +3 -3
- package/dist/esm/internal/channel.js.map +1 -1
- package/dist/esm/internal/core-effect.js +7 -7
- package/dist/esm/internal/core-effect.js.map +1 -1
- package/dist/esm/internal/core.js +1 -1
- package/dist/esm/internal/core.js.map +1 -1
- package/dist/esm/internal/groupBy.js.map +1 -1
- package/dist/esm/internal/hashMap.js.map +1 -1
- package/dist/esm/internal/hashSet.js.map +1 -1
- package/dist/esm/internal/scopedRef.js +4 -5
- package/dist/esm/internal/scopedRef.js.map +1 -1
- package/dist/esm/internal/stm/stm.js.map +1 -1
- package/dist/esm/internal/stream.js +1 -4
- package/dist/esm/internal/stream.js.map +1 -1
- package/dist/esm/internal/trie.js.map +1 -1
- package/dist/esm/internal/version.js +1 -1
- package/package.json +1 -1
- package/src/Cause.ts +6 -4
- package/src/Chunk.ts +20 -20
- package/src/Effect.ts +67 -72
- package/src/Either.ts +17 -21
- package/src/Exit.ts +3 -2
- package/src/GroupBy.ts +6 -6
- package/src/HashMap.ts +5 -4
- package/src/HashSet.ts +8 -7
- package/src/List.ts +11 -10
- package/src/Option.ts +8 -8
- package/src/ReadonlyArray.ts +44 -38
- package/src/ReadonlyRecord.ts +13 -10
- package/src/STM.ts +47 -46
- package/src/SortedSet.ts +5 -5
- package/src/Stream.ts +51 -51
- package/src/Trie.ts +4 -4
- package/src/internal/cause.ts +16 -7
- package/src/internal/channel.ts +21 -17
- package/src/internal/core-effect.ts +160 -162
- package/src/internal/core.ts +30 -34
- package/src/internal/groupBy.ts +2 -1
- package/src/internal/hashMap.ts +5 -4
- package/src/internal/hashSet.ts +9 -8
- package/src/internal/scopedRef.ts +34 -54
- package/src/internal/stm/stm.ts +104 -124
- package/src/internal/stream.ts +106 -97
- package/src/internal/trie.ts +3 -2
- package/src/internal/version.ts +1 -1
|
@@ -26,6 +26,7 @@ import * as ReadonlyArray from "../ReadonlyArray.js"
|
|
|
26
26
|
import * as Ref from "../Ref.js"
|
|
27
27
|
import type * as runtimeFlagsPatch from "../RuntimeFlagsPatch.js"
|
|
28
28
|
import * as Tracer from "../Tracer.js"
|
|
29
|
+
import type { NoInfer } from "../Types.js"
|
|
29
30
|
import * as internalCause from "./cause.js"
|
|
30
31
|
import * as core from "./core.js"
|
|
31
32
|
import * as defaultServices from "./defaultServices.js"
|
|
@@ -255,7 +256,12 @@ export const catchTag = dual<
|
|
|
255
256
|
k: K,
|
|
256
257
|
f: (e: Extract<E, { _tag: K }>) => Effect.Effect<R1, E1, A1>
|
|
257
258
|
) => Effect.Effect<R | R1, Exclude<E, { _tag: K }> | E1, A | A1>
|
|
258
|
-
>(3,
|
|
259
|
+
>(3, <R, E, A, K extends (E extends { _tag: string } ? E["_tag"] : never), R1, E1, A1>(
|
|
260
|
+
self: Effect.Effect<R, E, A>,
|
|
261
|
+
k: K,
|
|
262
|
+
f: (e: Extract<E, { _tag: K }>) => Effect.Effect<R1, E1, A1>
|
|
263
|
+
): Effect.Effect<R | R1, Exclude<E, { _tag: K }> | E1, A | A1> =>
|
|
264
|
+
core.catchIf(self, Predicate.isTagged(k) as Predicate.Refinement<E, Extract<E, { _tag: K }>>, f) as any)
|
|
259
265
|
|
|
260
266
|
/** @internal */
|
|
261
267
|
export const catchTags: {
|
|
@@ -453,50 +459,56 @@ export const bindValue = dual<
|
|
|
453
459
|
))
|
|
454
460
|
|
|
455
461
|
/* @internal */
|
|
456
|
-
export const dropUntil
|
|
462
|
+
export const dropUntil: {
|
|
463
|
+
<A, R, E>(
|
|
464
|
+
predicate: (a: NoInfer<A>, i: number) => Effect.Effect<R, E, boolean>
|
|
465
|
+
): (elements: Iterable<A>) => Effect.Effect<R, E, Array<A>>
|
|
457
466
|
<A, R, E>(
|
|
467
|
+
elements: Iterable<A>,
|
|
458
468
|
predicate: (a: A, i: number) => Effect.Effect<R, E, boolean>
|
|
459
|
-
)
|
|
469
|
+
): Effect.Effect<R, E, Array<A>>
|
|
470
|
+
} = dual(
|
|
471
|
+
2,
|
|
460
472
|
<A, R, E>(
|
|
461
473
|
elements: Iterable<A>,
|
|
462
474
|
predicate: (a: A, i: number) => Effect.Effect<R, E, boolean>
|
|
463
|
-
)
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
}
|
|
485
|
-
return core.map(dropping, () => builder)
|
|
486
|
-
}))
|
|
475
|
+
): Effect.Effect<R, E, Array<A>> =>
|
|
476
|
+
core.suspend(() => {
|
|
477
|
+
const iterator = elements[Symbol.iterator]()
|
|
478
|
+
const builder: Array<A> = []
|
|
479
|
+
let next: IteratorResult<A, any>
|
|
480
|
+
let dropping: Effect.Effect<R, E, boolean> = core.succeed(false)
|
|
481
|
+
let i = 0
|
|
482
|
+
while ((next = iterator.next()) && !next.done) {
|
|
483
|
+
const a = next.value
|
|
484
|
+
const index = i++
|
|
485
|
+
dropping = core.flatMap(dropping, (bool) => {
|
|
486
|
+
if (bool) {
|
|
487
|
+
builder.push(a)
|
|
488
|
+
return core.succeed(true)
|
|
489
|
+
}
|
|
490
|
+
return predicate(a, index)
|
|
491
|
+
})
|
|
492
|
+
}
|
|
493
|
+
return core.map(dropping, () => builder)
|
|
494
|
+
})
|
|
495
|
+
)
|
|
487
496
|
|
|
488
497
|
/* @internal */
|
|
489
|
-
export const dropWhile
|
|
490
|
-
<R, E
|
|
491
|
-
predicate: (a: A
|
|
492
|
-
)
|
|
493
|
-
<R, E
|
|
498
|
+
export const dropWhile: {
|
|
499
|
+
<A, R, E>(
|
|
500
|
+
predicate: (a: NoInfer<A>, i: number) => Effect.Effect<R, E, boolean>
|
|
501
|
+
): (elements: Iterable<A>) => Effect.Effect<R, E, Array<A>>
|
|
502
|
+
<A, R, E>(
|
|
494
503
|
elements: Iterable<A>,
|
|
495
504
|
predicate: (a: A, i: number) => Effect.Effect<R, E, boolean>
|
|
496
|
-
)
|
|
497
|
-
|
|
505
|
+
): Effect.Effect<R, E, Array<A>>
|
|
506
|
+
} = dual(
|
|
498
507
|
2,
|
|
499
|
-
<
|
|
508
|
+
<A, R, E>(
|
|
509
|
+
elements: Iterable<A>,
|
|
510
|
+
predicate: (a: A, i: number) => Effect.Effect<R, E, boolean>
|
|
511
|
+
): Effect.Effect<R, E, Array<A>> =>
|
|
500
512
|
core.suspend(() => {
|
|
501
513
|
const iterator = elements[Symbol.iterator]()
|
|
502
514
|
const builder: Array<A> = []
|
|
@@ -542,128 +554,111 @@ export const filterMap = dual<
|
|
|
542
554
|
))
|
|
543
555
|
|
|
544
556
|
/* @internal */
|
|
545
|
-
export const filterOrDie
|
|
546
|
-
|
|
547
|
-
<A
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
<A
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
): Effect.Effect<R, E, A> => filterOrElse(self, filter, (a) => core.dieSync(() => orDieWith(a as Y))))
|
|
557
|
+
export const filterOrDie: {
|
|
558
|
+
<A, B extends A>(
|
|
559
|
+
refinement: Predicate.Refinement<NoInfer<A>, B>,
|
|
560
|
+
orDieWith: (a: A) => unknown
|
|
561
|
+
): <R, E>(self: Effect.Effect<R, E, A>) => Effect.Effect<R, E, B>
|
|
562
|
+
<A>(
|
|
563
|
+
predicate: Predicate.Predicate<NoInfer<A>>,
|
|
564
|
+
orDieWith: (a: A) => unknown
|
|
565
|
+
): <R, E>(self: Effect.Effect<R, E, A>) => Effect.Effect<R, E, A>
|
|
566
|
+
<R, E, A, B extends A>(
|
|
567
|
+
self: Effect.Effect<R, E, A>,
|
|
568
|
+
refinement: Predicate.Refinement<A, B>,
|
|
569
|
+
orDieWith: (a: A) => unknown
|
|
570
|
+
): Effect.Effect<R, E, B>
|
|
571
|
+
<R, E, A>(
|
|
572
|
+
self: Effect.Effect<R, E, A>,
|
|
573
|
+
filter: Predicate.Predicate<A>,
|
|
574
|
+
orDieWith: (a: A) => unknown
|
|
575
|
+
): Effect.Effect<R, E, A>
|
|
576
|
+
} = dual(
|
|
577
|
+
3,
|
|
578
|
+
<R, E, A>(
|
|
579
|
+
self: Effect.Effect<R, E, A>,
|
|
580
|
+
predicate: Predicate.Predicate<A>,
|
|
581
|
+
orDieWith: (a: A) => unknown
|
|
582
|
+
): Effect.Effect<R, E, A> => filterOrElse(self, predicate, (a) => core.dieSync(() => orDieWith(a)))
|
|
583
|
+
)
|
|
573
584
|
|
|
574
585
|
/* @internal */
|
|
575
|
-
export const filterOrDieMessage
|
|
576
|
-
|
|
577
|
-
<A
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
<A
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
message: string
|
|
596
|
-
): Effect.Effect<R, E, A>
|
|
597
|
-
}
|
|
598
|
-
>(3, <R, E, A, X extends A>(
|
|
599
|
-
self: Effect.Effect<R, E, A>,
|
|
600
|
-
filter: Predicate.Predicate<X>,
|
|
601
|
-
message: string
|
|
602
|
-
): Effect.Effect<R, E, A> => filterOrElse(self, filter, () => core.dieMessage(message)))
|
|
586
|
+
export const filterOrDieMessage: {
|
|
587
|
+
<A, B extends A>(
|
|
588
|
+
refinement: Predicate.Refinement<NoInfer<A>, B>,
|
|
589
|
+
message: string
|
|
590
|
+
): <R, E>(self: Effect.Effect<R, E, A>) => Effect.Effect<R, E, B>
|
|
591
|
+
<A>(
|
|
592
|
+
predicate: Predicate.Predicate<NoInfer<A>>,
|
|
593
|
+
message: string
|
|
594
|
+
): <R, E>(self: Effect.Effect<R, E, A>) => Effect.Effect<R, E, A>
|
|
595
|
+
<R, E, A, B extends A>(
|
|
596
|
+
self: Effect.Effect<R, E, A>,
|
|
597
|
+
refinement: Predicate.Refinement<A, B>,
|
|
598
|
+
message: string
|
|
599
|
+
): Effect.Effect<R, E, B>
|
|
600
|
+
<R, E, A>(self: Effect.Effect<R, E, A>, predicate: Predicate.Predicate<A>, message: string): Effect.Effect<R, E, A>
|
|
601
|
+
} = dual(
|
|
602
|
+
3,
|
|
603
|
+
<R, E, A>(self: Effect.Effect<R, E, A>, predicate: Predicate.Predicate<A>, message: string): Effect.Effect<R, E, A> =>
|
|
604
|
+
filterOrElse(self, predicate, () => core.dieMessage(message))
|
|
605
|
+
)
|
|
603
606
|
|
|
604
607
|
/* @internal */
|
|
605
|
-
export const filterOrElse
|
|
606
|
-
|
|
607
|
-
<A
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
<A
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
orElse: (a: Y) => Effect.Effect<R2, E2, B>
|
|
626
|
-
): Effect.Effect<R | R2, E | E2, A | B>
|
|
627
|
-
}
|
|
628
|
-
>(3, <R, E, A, R2, E2, B>(
|
|
608
|
+
export const filterOrElse: {
|
|
609
|
+
<A, B extends A, R2, E2, C>(
|
|
610
|
+
refinement: Predicate.Refinement<NoInfer<A>, B>,
|
|
611
|
+
orElse: (a: NoInfer<A>) => Effect.Effect<R2, E2, C>
|
|
612
|
+
): <R, E>(self: Effect.Effect<R, E, A>) => Effect.Effect<R2 | R, E2 | E, B | C>
|
|
613
|
+
<A, R2, E2, B>(
|
|
614
|
+
predicate: Predicate.Predicate<NoInfer<A>>,
|
|
615
|
+
orElse: (a: NoInfer<A>) => Effect.Effect<R2, E2, B>
|
|
616
|
+
): <R, E>(self: Effect.Effect<R, E, A>) => Effect.Effect<R2 | R, E2 | E, A | B>
|
|
617
|
+
<R, E, A, B extends A, R2, E2, C>(
|
|
618
|
+
self: Effect.Effect<R, E, A>,
|
|
619
|
+
refinement: Predicate.Refinement<A, B>,
|
|
620
|
+
orElse: (a: A) => Effect.Effect<R2, E2, C>
|
|
621
|
+
): Effect.Effect<R | R2, E | E2, B | C>
|
|
622
|
+
<R, E, A, R2, E2, B>(
|
|
623
|
+
self: Effect.Effect<R, E, A>,
|
|
624
|
+
predicate: Predicate.Predicate<A>,
|
|
625
|
+
orElse: (a: A) => Effect.Effect<R2, E2, B>
|
|
626
|
+
): Effect.Effect<R | R2, E | E2, A | B>
|
|
627
|
+
} = dual(3, <R, E, A, R2, E2, B>(
|
|
629
628
|
self: Effect.Effect<R, E, A>,
|
|
630
|
-
|
|
629
|
+
predicate: Predicate.Predicate<A>,
|
|
631
630
|
orElse: (a: A) => Effect.Effect<R2, E2, B>
|
|
632
631
|
): Effect.Effect<R | R2, E | E2, A | B> =>
|
|
633
632
|
core.flatMap(
|
|
634
633
|
self,
|
|
635
|
-
(a) =>
|
|
634
|
+
(a) => predicate(a) ? core.succeed<A | B>(a) : orElse(a)
|
|
636
635
|
))
|
|
637
636
|
|
|
638
637
|
/* @internal */
|
|
639
|
-
export const filterOrFail
|
|
640
|
-
|
|
641
|
-
<A
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
<A
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
orFailWith: (a: Y) => E2
|
|
660
|
-
): Effect.Effect<R, E | E2, A>
|
|
661
|
-
}
|
|
662
|
-
>(3, <R, E, A, X extends A, Y extends A, E2>(
|
|
638
|
+
export const filterOrFail: {
|
|
639
|
+
<A, B extends A, E2>(
|
|
640
|
+
refinement: Predicate.Refinement<NoInfer<A>, B>,
|
|
641
|
+
orFailWith: (a: NoInfer<A>) => E2
|
|
642
|
+
): <R, E>(self: Effect.Effect<R, E, A>) => Effect.Effect<R, E2 | E, B>
|
|
643
|
+
<A, E2>(
|
|
644
|
+
predicate: Predicate.Predicate<NoInfer<A>>,
|
|
645
|
+
orFailWith: (a: NoInfer<A>) => E2
|
|
646
|
+
): <R, E>(self: Effect.Effect<R, E, A>) => Effect.Effect<R, E2 | E, A>
|
|
647
|
+
<R, E, A, B extends A, E2>(
|
|
648
|
+
self: Effect.Effect<R, E, A>,
|
|
649
|
+
refinement: Predicate.Refinement<A, B>,
|
|
650
|
+
orFailWith: (a: A) => E2
|
|
651
|
+
): Effect.Effect<R, E | E2, B>
|
|
652
|
+
<R, E, A, E2>(
|
|
653
|
+
self: Effect.Effect<R, E, A>,
|
|
654
|
+
predicate: Predicate.Predicate<A>,
|
|
655
|
+
orFailWith: (a: A) => E2
|
|
656
|
+
): Effect.Effect<R, E | E2, A>
|
|
657
|
+
} = dual(3, <R, E, A, E2>(
|
|
663
658
|
self: Effect.Effect<R, E, A>,
|
|
664
|
-
|
|
665
|
-
orFailWith: (a:
|
|
666
|
-
): Effect.Effect<R, E | E2, A> => filterOrElse(self,
|
|
659
|
+
predicate: Predicate.Predicate<A>,
|
|
660
|
+
orFailWith: (a: A) => E2
|
|
661
|
+
): Effect.Effect<R, E | E2, A> => filterOrElse(self, predicate, (a) => core.failSync(() => orFailWith(a))))
|
|
667
662
|
|
|
668
663
|
/* @internal */
|
|
669
664
|
export const findFirst = dual<
|
|
@@ -1400,17 +1395,20 @@ export const labelMetrics = dual<
|
|
|
1400
1395
|
)
|
|
1401
1396
|
|
|
1402
1397
|
/* @internal */
|
|
1403
|
-
export const takeUntil
|
|
1398
|
+
export const takeUntil: {
|
|
1399
|
+
<A, R, E>(
|
|
1400
|
+
predicate: (a: NoInfer<A>, i: number) => Effect.Effect<R, E, boolean>
|
|
1401
|
+
): (elements: Iterable<A>) => Effect.Effect<R, E, Array<A>>
|
|
1404
1402
|
<R, E, A>(
|
|
1403
|
+
elements: Iterable<A>,
|
|
1405
1404
|
predicate: (a: A, i: number) => Effect.Effect<R, E, boolean>
|
|
1406
|
-
)
|
|
1405
|
+
): Effect.Effect<R, E, Array<A>>
|
|
1406
|
+
} = dual(
|
|
1407
|
+
2,
|
|
1407
1408
|
<R, E, A>(
|
|
1408
1409
|
elements: Iterable<A>,
|
|
1409
1410
|
predicate: (a: A, i: number) => Effect.Effect<R, E, boolean>
|
|
1410
|
-
)
|
|
1411
|
-
>(
|
|
1412
|
-
2,
|
|
1413
|
-
<R, E, A>(elements: Iterable<A>, predicate: (a: A, i: number) => Effect.Effect<R, E, boolean>) =>
|
|
1411
|
+
): Effect.Effect<R, E, Array<A>> =>
|
|
1414
1412
|
core.suspend(() => {
|
|
1415
1413
|
const iterator = elements[Symbol.iterator]()
|
|
1416
1414
|
const builder: Array<A> = []
|
|
@@ -1435,7 +1433,7 @@ export const takeUntil = dual<
|
|
|
1435
1433
|
/* @internal */
|
|
1436
1434
|
export const takeWhile = dual<
|
|
1437
1435
|
<R, E, A>(
|
|
1438
|
-
predicate: (a: A
|
|
1436
|
+
predicate: (a: NoInfer<A>, i: number) => Effect.Effect<R, E, boolean>
|
|
1439
1437
|
) => (elements: Iterable<A>) => Effect.Effect<R, E, Array<A>>,
|
|
1440
1438
|
<R, E, A>(
|
|
1441
1439
|
elements: Iterable<A>,
|
|
@@ -1713,11 +1711,11 @@ export const tryMapPromise = dual<
|
|
|
1713
1711
|
|
|
1714
1712
|
/* @internal */
|
|
1715
1713
|
export const unless = dual<
|
|
1716
|
-
(
|
|
1717
|
-
<R, E, A>(self: Effect.Effect<R, E, A>,
|
|
1718
|
-
>(2, (self,
|
|
1714
|
+
(condition: LazyArg<boolean>) => <R, E, A>(self: Effect.Effect<R, E, A>) => Effect.Effect<R, E, Option.Option<A>>,
|
|
1715
|
+
<R, E, A>(self: Effect.Effect<R, E, A>, condition: LazyArg<boolean>) => Effect.Effect<R, E, Option.Option<A>>
|
|
1716
|
+
>(2, (self, condition) =>
|
|
1719
1717
|
core.suspend(() =>
|
|
1720
|
-
|
|
1718
|
+
condition()
|
|
1721
1719
|
? succeedNone
|
|
1722
1720
|
: asSome(self)
|
|
1723
1721
|
))
|
|
@@ -1725,13 +1723,13 @@ export const unless = dual<
|
|
|
1725
1723
|
/* @internal */
|
|
1726
1724
|
export const unlessEffect = dual<
|
|
1727
1725
|
<R2, E2>(
|
|
1728
|
-
|
|
1726
|
+
condition: Effect.Effect<R2, E2, boolean>
|
|
1729
1727
|
) => <R, E, A>(self: Effect.Effect<R, E, A>) => Effect.Effect<R | R2, E | E2, Option.Option<A>>,
|
|
1730
1728
|
<R, E, A, R2, E2>(
|
|
1731
1729
|
self: Effect.Effect<R, E, A>,
|
|
1732
|
-
|
|
1730
|
+
condition: Effect.Effect<R2, E2, boolean>
|
|
1733
1731
|
) => Effect.Effect<R | R2, E | E2, Option.Option<A>>
|
|
1734
|
-
>(2, (self,
|
|
1732
|
+
>(2, (self, condition) => core.flatMap(condition, (b) => (b ? succeedNone : asSome(self))))
|
|
1735
1733
|
|
|
1736
1734
|
/* @internal */
|
|
1737
1735
|
export const unsandbox = <R, E, A>(self: Effect.Effect<R, Cause.Cause<E>, A>) =>
|
|
@@ -1771,11 +1769,11 @@ export const updateService = dual<
|
|
|
1771
1769
|
|
|
1772
1770
|
/* @internal */
|
|
1773
1771
|
export const when = dual<
|
|
1774
|
-
(
|
|
1775
|
-
<R, E, A>(self: Effect.Effect<R, E, A>,
|
|
1776
|
-
>(2, (self,
|
|
1772
|
+
(condition: LazyArg<boolean>) => <R, E, A>(self: Effect.Effect<R, E, A>) => Effect.Effect<R, E, Option.Option<A>>,
|
|
1773
|
+
<R, E, A>(self: Effect.Effect<R, E, A>, condition: LazyArg<boolean>) => Effect.Effect<R, E, Option.Option<A>>
|
|
1774
|
+
>(2, (self, condition) =>
|
|
1777
1775
|
core.suspend(() =>
|
|
1778
|
-
|
|
1776
|
+
condition()
|
|
1779
1777
|
? core.map(self, Option.some)
|
|
1780
1778
|
: core.succeed(Option.none())
|
|
1781
1779
|
))
|
package/src/internal/core.ts
CHANGED
|
@@ -533,39 +533,35 @@ export const unified = <Args extends ReadonlyArray<any>, Ret extends Effect.Effe
|
|
|
533
533
|
(...args: Args): Effect.Effect.Unify<Ret> => f(...args)
|
|
534
534
|
|
|
535
535
|
/* @internal */
|
|
536
|
-
export const catchIf
|
|
537
|
-
|
|
538
|
-
<E
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
<E
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
f: (e: EX) => Effect.Effect<R2, E2, A2>
|
|
557
|
-
): Effect.Effect<R2 | R, E | E2, A2 | A>
|
|
558
|
-
}
|
|
559
|
-
>(3, <R, E, A, EX extends E, R2, E2, A2>(
|
|
536
|
+
export const catchIf: {
|
|
537
|
+
<E, EB extends E, R2, E2, A2>(
|
|
538
|
+
refinement: Refinement<NoInfer<E>, EB>,
|
|
539
|
+
f: (e: EB) => Effect.Effect<R2, E2, A2>
|
|
540
|
+
): <R, A>(self: Effect.Effect<R, E, A>) => Effect.Effect<R2 | R, E2 | Exclude<E, EB>, A2 | A>
|
|
541
|
+
<E, R2, E2, A2>(
|
|
542
|
+
predicate: Predicate<NoInfer<E>>,
|
|
543
|
+
f: (e: NoInfer<E>) => Effect.Effect<R2, E2, A2>
|
|
544
|
+
): <R, A>(self: Effect.Effect<R, E, A>) => Effect.Effect<R2 | R, E | E2, A2 | A>
|
|
545
|
+
<R, E, A, EA extends E, EB extends EA, R2, E2, A2>(
|
|
546
|
+
self: Effect.Effect<R, E, A>,
|
|
547
|
+
refinement: Refinement<EA, EB>,
|
|
548
|
+
f: (e: EB) => Effect.Effect<R2, E2, A2>
|
|
549
|
+
): Effect.Effect<R | R2, E2 | Exclude<E, EB>, A | A2>
|
|
550
|
+
<R, E, A, R2, E2, A2>(
|
|
551
|
+
self: Effect.Effect<R, E, A>,
|
|
552
|
+
predicate: Predicate<E>,
|
|
553
|
+
f: (e: E) => Effect.Effect<R2, E2, A2>
|
|
554
|
+
): Effect.Effect<R | R2, E | E2, A | A2>
|
|
555
|
+
} = dual(3, <R, E, A, R2, E2, A2>(
|
|
560
556
|
self: Effect.Effect<R, E, A>,
|
|
561
|
-
predicate: Predicate<
|
|
562
|
-
f: (e:
|
|
563
|
-
) =>
|
|
557
|
+
predicate: Predicate<E>,
|
|
558
|
+
f: (e: E) => Effect.Effect<R2, E2, A2>
|
|
559
|
+
): Effect.Effect<R | R2, E | E2, A | A2> =>
|
|
564
560
|
catchAllCause(self, (cause): Effect.Effect<R2 | R, E | E2, A2 | A> => {
|
|
565
561
|
const either = internalCause.failureOrCause(cause)
|
|
566
562
|
switch (either._tag) {
|
|
567
563
|
case "Left": {
|
|
568
|
-
return predicate(either.left
|
|
564
|
+
return predicate(either.left) ? f(either.left) : failCause(cause)
|
|
569
565
|
}
|
|
570
566
|
case "Right": {
|
|
571
567
|
return failCause(either.right)
|
|
@@ -1249,16 +1245,16 @@ export const updateRuntimeFlags = (patch: RuntimeFlagsPatch.RuntimeFlagsPatch):
|
|
|
1249
1245
|
/* @internal */
|
|
1250
1246
|
export const whenEffect = dual<
|
|
1251
1247
|
<R, E>(
|
|
1252
|
-
|
|
1248
|
+
condition: Effect.Effect<R, E, boolean>
|
|
1253
1249
|
) => <R2, E2, A>(
|
|
1254
1250
|
effect: Effect.Effect<R2, E2, A>
|
|
1255
1251
|
) => Effect.Effect<R | R2, E | E2, Option.Option<A>>,
|
|
1256
1252
|
<R, E, A, R2, E2>(
|
|
1257
1253
|
self: Effect.Effect<R2, E2, A>,
|
|
1258
|
-
|
|
1254
|
+
condition: Effect.Effect<R, E, boolean>
|
|
1259
1255
|
) => Effect.Effect<R | R2, E | E2, Option.Option<A>>
|
|
1260
|
-
>(2, (self,
|
|
1261
|
-
flatMap(
|
|
1256
|
+
>(2, (self, condition) =>
|
|
1257
|
+
flatMap(condition, (b) => {
|
|
1262
1258
|
if (b) {
|
|
1263
1259
|
return pipe(self, map(Option.some))
|
|
1264
1260
|
}
|
|
@@ -2373,8 +2369,8 @@ export const exitDie = (defect: unknown): Exit.Exit<never, never> =>
|
|
|
2373
2369
|
|
|
2374
2370
|
/** @internal */
|
|
2375
2371
|
export const exitExists: {
|
|
2376
|
-
<A, B extends A>(refinement: Refinement<A
|
|
2377
|
-
<A>(predicate: Predicate<A
|
|
2372
|
+
<A, B extends A>(refinement: Refinement<NoInfer<A>, B>): <E>(self: Exit.Exit<E, A>) => self is Exit.Exit<never, B>
|
|
2373
|
+
<A>(predicate: Predicate<NoInfer<A>>): <E>(self: Exit.Exit<E, A>) => boolean
|
|
2378
2374
|
<E, A, B extends A>(self: Exit.Exit<E, A>, refinement: Refinement<A, B>): self is Exit.Exit<never, B>
|
|
2379
2375
|
<E, A>(self: Exit.Exit<E, A>, predicate: Predicate<A>): boolean
|
|
2380
2376
|
} = dual(2, <E, A, B extends A>(self: Exit.Exit<E, A>, refinement: Refinement<A, B>): self is Exit.Exit<never, B> => {
|
package/src/internal/groupBy.ts
CHANGED
|
@@ -13,6 +13,7 @@ import * as Queue from "../Queue.js"
|
|
|
13
13
|
import * as Ref from "../Ref.js"
|
|
14
14
|
import type * as Stream from "../Stream.js"
|
|
15
15
|
import type * as Take from "../Take.js"
|
|
16
|
+
import type { NoInfer } from "../Types.js"
|
|
16
17
|
import * as channel from "./channel.js"
|
|
17
18
|
import * as channelExecutor from "./channel/channelExecutor.js"
|
|
18
19
|
import * as core from "./core-stream.js"
|
|
@@ -75,7 +76,7 @@ export const evaluate = dual<
|
|
|
75
76
|
|
|
76
77
|
/** @internal */
|
|
77
78
|
export const filter = dual<
|
|
78
|
-
<K>(predicate: Predicate<K
|
|
79
|
+
<K>(predicate: Predicate<NoInfer<K>>) => <R, E, V>(self: GroupBy.GroupBy<R, E, K, V>) => GroupBy.GroupBy<R, E, K, V>,
|
|
79
80
|
<R, E, V, K>(self: GroupBy.GroupBy<R, E, K, V>, predicate: Predicate<K>) => GroupBy.GroupBy<R, E, K, V>
|
|
80
81
|
>(2, <R, E, V, K>(self: GroupBy.GroupBy<R, E, K, V>, predicate: Predicate<K>): GroupBy.GroupBy<R, E, K, V> =>
|
|
81
82
|
make(
|
package/src/internal/hashMap.ts
CHANGED
|
@@ -7,6 +7,7 @@ import { format, NodeInspectSymbol, toJSON } from "../Inspectable.js"
|
|
|
7
7
|
import * as Option from "../Option.js"
|
|
8
8
|
import { pipeArguments } from "../Pipeable.js"
|
|
9
9
|
import { hasProperty } from "../Predicate.js"
|
|
10
|
+
import type { NoInfer } from "../Types.js"
|
|
10
11
|
import { fromBitmap, hashFragment, toBitmap } from "./hashMap/bitwise.js"
|
|
11
12
|
import { SIZE } from "./hashMap/config.js"
|
|
12
13
|
import * as Node from "./hashMap/node.js"
|
|
@@ -486,8 +487,8 @@ export const reduce = Dual.dual<
|
|
|
486
487
|
|
|
487
488
|
/** @internal */
|
|
488
489
|
export const filter: {
|
|
489
|
-
<K, A, B extends A>(f: (a: A
|
|
490
|
-
<K,
|
|
490
|
+
<K, A, B extends A>(f: (a: NoInfer<A>, k: K) => a is B): (self: HM.HashMap<K, A>) => HM.HashMap<K, B>
|
|
491
|
+
<K, A>(f: (a: NoInfer<A>, k: K) => boolean): (self: HM.HashMap<K, A>) => HM.HashMap<K, A>
|
|
491
492
|
<K, A, B extends A>(self: HM.HashMap<K, A>, f: (a: A, k: K) => a is B): HM.HashMap<K, B>
|
|
492
493
|
<K, A>(self: HM.HashMap<K, A>, f: (a: A, k: K) => boolean): HM.HashMap<K, A>
|
|
493
494
|
} = Dual.dual(
|
|
@@ -523,8 +524,8 @@ export const filterMap = Dual.dual<
|
|
|
523
524
|
|
|
524
525
|
/** @internal */
|
|
525
526
|
export const findFirst: {
|
|
526
|
-
<K, A, B extends A>(predicate: (a: A
|
|
527
|
-
<K,
|
|
527
|
+
<K, A, B extends A>(predicate: (a: NoInfer<A>, k: K) => a is B): (self: HM.HashMap<K, A>) => Option.Option<[K, B]>
|
|
528
|
+
<K, A>(predicate: (a: NoInfer<A>, k: K) => boolean): (self: HM.HashMap<K, A>) => Option.Option<[K, A]>
|
|
528
529
|
<K, A, B extends A>(self: HM.HashMap<K, A>, predicate: (a: A, k: K) => a is B): Option.Option<[K, B]>
|
|
529
530
|
<K, A>(self: HM.HashMap<K, A>, predicate: (a: A, k: K) => boolean): Option.Option<[K, A]>
|
|
530
531
|
} = Dual.dual(
|
package/src/internal/hashSet.ts
CHANGED
|
@@ -7,6 +7,7 @@ import { format, NodeInspectSymbol, toJSON } from "../Inspectable.js"
|
|
|
7
7
|
import { pipeArguments } from "../Pipeable.js"
|
|
8
8
|
import type { Predicate, Refinement } from "../Predicate.js"
|
|
9
9
|
import { hasProperty } from "../Predicate.js"
|
|
10
|
+
import type { NoInfer } from "../Types.js"
|
|
10
11
|
import * as HM from "./hashMap.js"
|
|
11
12
|
|
|
12
13
|
const HashSetSymbolKey = "effect/HashSet"
|
|
@@ -112,7 +113,7 @@ export const some = dual<
|
|
|
112
113
|
|
|
113
114
|
/** @internal */
|
|
114
115
|
export const every: {
|
|
115
|
-
<A, B extends A>(refinement: Refinement<A
|
|
116
|
+
<A, B extends A>(refinement: Refinement<NoInfer<A>, B>): (self: HS.HashSet<A>) => self is HS.HashSet<B>
|
|
116
117
|
<A>(predicate: Predicate<A>): (self: HS.HashSet<A>) => boolean
|
|
117
118
|
<A, B extends A>(self: HS.HashSet<A>, refinement: Refinement<A, B>): self is HS.HashSet<B>
|
|
118
119
|
<A>(self: HS.HashSet<A>, predicate: Predicate<A>): boolean
|
|
@@ -272,8 +273,8 @@ export const reduce = dual<
|
|
|
272
273
|
|
|
273
274
|
/** @internal */
|
|
274
275
|
export const filter: {
|
|
275
|
-
<A, B extends A>(refinement: Refinement<A
|
|
276
|
-
<
|
|
276
|
+
<A, B extends A>(refinement: Refinement<NoInfer<A>, B>): (self: HS.HashSet<A>) => HS.HashSet<B>
|
|
277
|
+
<A>(predicate: Predicate<NoInfer<A>>): (self: HS.HashSet<A>) => HS.HashSet<A>
|
|
277
278
|
<A, B extends A>(self: HS.HashSet<A>, refinement: Refinement<A, B>): HS.HashSet<B>
|
|
278
279
|
<A>(self: HS.HashSet<A>, predicate: Predicate<A>): HS.HashSet<A>
|
|
279
280
|
} = dual(2, <A>(self: HS.HashSet<A>, f: Predicate<A>) => {
|
|
@@ -291,12 +292,12 @@ export const filter: {
|
|
|
291
292
|
|
|
292
293
|
/** @internal */
|
|
293
294
|
export const partition: {
|
|
294
|
-
<C extends A, B extends A, A = C>(
|
|
295
|
-
refinement: Refinement<A, B>
|
|
296
|
-
): (self: HS.HashSet<C>) => [excluded: HS.HashSet<Exclude<C, B>>, satisfying: HS.HashSet<B>]
|
|
297
295
|
<A, B extends A>(
|
|
298
|
-
|
|
299
|
-
): (self: HS.HashSet<
|
|
296
|
+
refinement: Refinement<NoInfer<A>, B>
|
|
297
|
+
): (self: HS.HashSet<A>) => [excluded: HS.HashSet<Exclude<A, B>>, satisfying: HS.HashSet<B>]
|
|
298
|
+
<A>(
|
|
299
|
+
predicate: Predicate<NoInfer<A>>
|
|
300
|
+
): (self: HS.HashSet<A>) => [excluded: HS.HashSet<A>, satisfying: HS.HashSet<A>]
|
|
300
301
|
<A, B extends A>(
|
|
301
302
|
self: HS.HashSet<A>,
|
|
302
303
|
refinement: Refinement<A, B>
|