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
package/src/GroupBy.ts
CHANGED
|
@@ -7,7 +7,7 @@ import type { Predicate } from "./Predicate.js"
|
|
|
7
7
|
import type * as Queue from "./Queue.js"
|
|
8
8
|
import type * as Stream from "./Stream.js"
|
|
9
9
|
import type * as Take from "./Take.js"
|
|
10
|
-
import type
|
|
10
|
+
import type { Covariant, NoInfer } from "./Types.js"
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
13
|
* @since 2.0.0
|
|
@@ -43,10 +43,10 @@ export declare namespace GroupBy {
|
|
|
43
43
|
*/
|
|
44
44
|
export interface Variance<out R, out E, out K, out V> {
|
|
45
45
|
readonly [GroupByTypeId]: {
|
|
46
|
-
readonly _R:
|
|
47
|
-
readonly _E:
|
|
48
|
-
readonly _K:
|
|
49
|
-
readonly _V:
|
|
46
|
+
readonly _R: Covariant<R>
|
|
47
|
+
readonly _E: Covariant<E>
|
|
48
|
+
readonly _K: Covariant<K>
|
|
49
|
+
readonly _V: Covariant<V>
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
52
|
}
|
|
@@ -81,7 +81,7 @@ export const evaluate: {
|
|
|
81
81
|
* @category utils
|
|
82
82
|
*/
|
|
83
83
|
export const filter: {
|
|
84
|
-
<K>(predicate: Predicate<K
|
|
84
|
+
<K>(predicate: Predicate<NoInfer<K>>): <R, E, V>(self: GroupBy<R, E, K, V>) => GroupBy<R, E, K, V>
|
|
85
85
|
<R, E, V, K>(self: GroupBy<R, E, K, V>, predicate: Predicate<K>): GroupBy<R, E, K, V>
|
|
86
86
|
} = internal.filter
|
|
87
87
|
|
package/src/HashMap.ts
CHANGED
|
@@ -9,6 +9,7 @@ import * as HM from "./internal/hashMap.js"
|
|
|
9
9
|
import * as _keySet from "./internal/hashMap/keySet.js"
|
|
10
10
|
import type { Option } from "./Option.js"
|
|
11
11
|
import type { Pipeable } from "./Pipeable.js"
|
|
12
|
+
import type { NoInfer } from "./Types.js"
|
|
12
13
|
|
|
13
14
|
const TypeId: unique symbol = HM.HashMapTypeId as TypeId
|
|
14
15
|
|
|
@@ -380,8 +381,8 @@ export const reduce: {
|
|
|
380
381
|
* @category filtering
|
|
381
382
|
*/
|
|
382
383
|
export const filter: {
|
|
383
|
-
<K, A, B extends A>(f: (a: A
|
|
384
|
-
<K,
|
|
384
|
+
<K, A, B extends A>(f: (a: NoInfer<A>, k: K) => a is B): (self: HashMap<K, A>) => HashMap<K, B>
|
|
385
|
+
<K, A>(f: (a: NoInfer<A>, k: K) => boolean): (self: HashMap<K, A>) => HashMap<K, A>
|
|
385
386
|
<K, A, B extends A>(self: HashMap<K, A>, f: (a: A, k: K) => a is B): HashMap<K, B>
|
|
386
387
|
<K, A>(self: HashMap<K, A>, f: (a: A, k: K) => boolean): HashMap<K, A>
|
|
387
388
|
} = HM.filter
|
|
@@ -414,8 +415,8 @@ export const filterMap: {
|
|
|
414
415
|
* @since 2.0.0
|
|
415
416
|
*/
|
|
416
417
|
export const findFirst: {
|
|
417
|
-
<K, A, B extends A>(predicate: (a: A
|
|
418
|
-
<K,
|
|
418
|
+
<K, A, B extends A>(predicate: (a: NoInfer<A>, k: K) => a is B): (self: HashMap<K, A>) => Option<[K, B]>
|
|
419
|
+
<K, A>(predicate: (a: NoInfer<A>, k: K) => boolean): (self: HashMap<K, A>) => Option<[K, A]>
|
|
419
420
|
<K, A, B extends A>(self: HashMap<K, A>, predicate: (a: A, k: K) => a is B): Option<[K, B]>
|
|
420
421
|
<K, A>(self: HashMap<K, A>, predicate: (a: A, k: K) => boolean): Option<[K, A]>
|
|
421
422
|
} = HM.findFirst
|
package/src/HashSet.ts
CHANGED
|
@@ -7,6 +7,7 @@ import type { Inspectable } from "./Inspectable.js"
|
|
|
7
7
|
import * as HS from "./internal/hashSet.js"
|
|
8
8
|
import type { Pipeable } from "./Pipeable.js"
|
|
9
9
|
import type { Predicate, Refinement } from "./Predicate.js"
|
|
10
|
+
import type { NoInfer } from "./Types.js"
|
|
10
11
|
|
|
11
12
|
const TypeId: unique symbol = HS.HashSetTypeId as TypeId
|
|
12
13
|
|
|
@@ -86,7 +87,7 @@ export const some: {
|
|
|
86
87
|
* @category elements
|
|
87
88
|
*/
|
|
88
89
|
export const every: {
|
|
89
|
-
<A, B extends A>(refinement: Refinement<A
|
|
90
|
+
<A, B extends A>(refinement: Refinement<NoInfer<A>, B>): (self: HashSet<A>) => self is HashSet<B>
|
|
90
91
|
<A>(predicate: Predicate<A>): (self: HashSet<A>) => boolean
|
|
91
92
|
<A, B extends A>(self: HashSet<A>, refinement: Refinement<A, B>): self is HashSet<B>
|
|
92
93
|
<A>(self: HashSet<A>, predicate: Predicate<A>): boolean
|
|
@@ -271,8 +272,8 @@ export const reduce: {
|
|
|
271
272
|
* @category filtering
|
|
272
273
|
*/
|
|
273
274
|
export const filter: {
|
|
274
|
-
<A, B extends A>(refinement: Refinement<A
|
|
275
|
-
<
|
|
275
|
+
<A, B extends A>(refinement: Refinement<NoInfer<A>, B>): (self: HashSet<A>) => HashSet<B>
|
|
276
|
+
<A>(predicate: Predicate<NoInfer<A>>): (self: HashSet<A>) => HashSet<A>
|
|
276
277
|
<A, B extends A>(self: HashSet<A>, refinement: Refinement<A, B>): HashSet<B>
|
|
277
278
|
<A>(self: HashSet<A>, predicate: Predicate<A>): HashSet<A>
|
|
278
279
|
} = HS.filter
|
|
@@ -288,10 +289,10 @@ export const filter: {
|
|
|
288
289
|
* @category partitioning
|
|
289
290
|
*/
|
|
290
291
|
export const partition: {
|
|
291
|
-
<
|
|
292
|
-
refinement: Refinement<A
|
|
293
|
-
): (self: HashSet<
|
|
294
|
-
<
|
|
292
|
+
<A, B extends A>(
|
|
293
|
+
refinement: Refinement<NoInfer<A>, B>
|
|
294
|
+
): (self: HashSet<A>) => [excluded: HashSet<Exclude<A, B>>, satisfying: HashSet<B>]
|
|
295
|
+
<A>(predicate: Predicate<NoInfer<A>>): (self: HashSet<A>) => [excluded: HashSet<A>, satisfying: HashSet<A>]
|
|
295
296
|
<A, B extends A>(
|
|
296
297
|
self: HashSet<A>,
|
|
297
298
|
refinement: Refinement<A, B>
|
package/src/List.ts
CHANGED
|
@@ -33,6 +33,7 @@ import type { Pipeable } from "./Pipeable.js"
|
|
|
33
33
|
import { pipeArguments } from "./Pipeable.js"
|
|
34
34
|
import { hasProperty, type Predicate, type Refinement } from "./Predicate.js"
|
|
35
35
|
import * as ReadonlyArray from "./ReadonlyArray.js"
|
|
36
|
+
import type { NoInfer } from "./Types.js"
|
|
36
37
|
|
|
37
38
|
/**
|
|
38
39
|
* Represents an immutable linked list of elements of type `A`.
|
|
@@ -441,7 +442,7 @@ export const drop: {
|
|
|
441
442
|
* @category elements
|
|
442
443
|
*/
|
|
443
444
|
export const every: {
|
|
444
|
-
<A, B extends A>(refinement: Refinement<A
|
|
445
|
+
<A, B extends A>(refinement: Refinement<NoInfer<A>, B>): (self: List<A>) => self is List<B>
|
|
445
446
|
<A>(predicate: Predicate<A>): (self: List<A>) => boolean
|
|
446
447
|
<A, B extends A>(self: List<A>, refinement: Refinement<A, B>): self is List<B>
|
|
447
448
|
<A>(self: List<A>, predicate: Predicate<A>): boolean
|
|
@@ -461,7 +462,7 @@ export const every: {
|
|
|
461
462
|
* @category elements
|
|
462
463
|
*/
|
|
463
464
|
export const some: {
|
|
464
|
-
<
|
|
465
|
+
<A>(predicate: Predicate<NoInfer<A>>): (self: List<A>) => self is Cons<A>
|
|
465
466
|
<A>(self: List<A>, predicate: Predicate<A>): self is Cons<A>
|
|
466
467
|
} = dual(2, <A>(self: List<A>, predicate: Predicate<A>): self is Cons<A> => {
|
|
467
468
|
let these = self
|
|
@@ -481,8 +482,8 @@ export const some: {
|
|
|
481
482
|
* @category combinators
|
|
482
483
|
*/
|
|
483
484
|
export const filter: {
|
|
484
|
-
<A, B extends A>(refinement: Refinement<A
|
|
485
|
-
<
|
|
485
|
+
<A, B extends A>(refinement: Refinement<NoInfer<A>, B>): (self: List<A>) => List<B>
|
|
486
|
+
<A>(predicate: Predicate<NoInfer<A>>): (self: List<A>) => List<A>
|
|
486
487
|
<A, B extends A>(self: List<A>, refinement: Refinement<A, B>): List<B>
|
|
487
488
|
<A>(self: List<A>, predicate: Predicate<A>): List<A>
|
|
488
489
|
} = dual(2, <A>(self: List<A>, predicate: Predicate<A>): List<A> => noneIn(self, predicate, false))
|
|
@@ -617,8 +618,8 @@ export const compact = <A>(self: List<Option.Option<A>>): List<A> => filterMap(s
|
|
|
617
618
|
* @since 2.0.0
|
|
618
619
|
*/
|
|
619
620
|
export const findFirst: {
|
|
620
|
-
<A, B extends A>(refinement: Refinement<A
|
|
621
|
-
<
|
|
621
|
+
<A, B extends A>(refinement: Refinement<NoInfer<A>, B>): (self: List<A>) => Option.Option<B>
|
|
622
|
+
<A>(predicate: Predicate<NoInfer<A>>): (self: List<A>) => Option.Option<A>
|
|
622
623
|
<A, B extends A>(self: List<A>, refinement: Refinement<A, B>): Option.Option<B>
|
|
623
624
|
<A>(self: List<A>, predicate: Predicate<A>): Option.Option<A>
|
|
624
625
|
} = dual(2, <A>(self: List<A>, predicate: Predicate<A>): Option.Option<A> => {
|
|
@@ -769,10 +770,10 @@ export const map: {
|
|
|
769
770
|
* @category combinators
|
|
770
771
|
*/
|
|
771
772
|
export const partition: {
|
|
772
|
-
<
|
|
773
|
-
refinement: Refinement<A
|
|
774
|
-
): (self: List<
|
|
775
|
-
<
|
|
773
|
+
<A, B extends A>(
|
|
774
|
+
refinement: Refinement<NoInfer<A>, B>
|
|
775
|
+
): (self: List<A>) => [excluded: List<Exclude<A, B>>, satisfying: List<B>]
|
|
776
|
+
<A>(predicate: Predicate<NoInfer<A>>): (self: List<A>) => [excluded: List<A>, satisfying: List<A>]
|
|
776
777
|
<A, B extends A>(self: List<A>, refinement: Refinement<A, B>): [excluded: List<Exclude<A, B>>, satisfying: List<B>]
|
|
777
778
|
<A>(self: List<A>, predicate: Predicate<A>): [excluded: List<A>, satisfying: List<A>]
|
|
778
779
|
} = dual(2, <A>(self: List<A>, predicate: Predicate<A>): [excluded: List<A>, satisfying: List<A>] => {
|
package/src/Option.ts
CHANGED
|
@@ -15,7 +15,7 @@ import type { Order } from "./Order.js"
|
|
|
15
15
|
import * as order from "./Order.js"
|
|
16
16
|
import type { Pipeable } from "./Pipeable.js"
|
|
17
17
|
import type { Predicate, Refinement } from "./Predicate.js"
|
|
18
|
-
import type
|
|
18
|
+
import type { Covariant, NoInfer } from "./Types.js"
|
|
19
19
|
import type * as Unify from "./Unify.js"
|
|
20
20
|
import * as Gen from "./Utils.js"
|
|
21
21
|
|
|
@@ -45,7 +45,7 @@ export interface None<out A> extends Data.Case, Pipeable, Inspectable {
|
|
|
45
45
|
readonly _tag: "None"
|
|
46
46
|
readonly _op: "None"
|
|
47
47
|
readonly [TypeId]: {
|
|
48
|
-
readonly _A:
|
|
48
|
+
readonly _A: Covariant<A>
|
|
49
49
|
}
|
|
50
50
|
[Unify.typeSymbol]?: unknown
|
|
51
51
|
[Unify.unifySymbol]?: OptionUnify<this>
|
|
@@ -61,7 +61,7 @@ export interface Some<out A> extends Data.Case, Pipeable, Inspectable {
|
|
|
61
61
|
readonly _op: "Some"
|
|
62
62
|
readonly value: A
|
|
63
63
|
readonly [TypeId]: {
|
|
64
|
-
readonly _A:
|
|
64
|
+
readonly _A: Covariant<A>
|
|
65
65
|
}
|
|
66
66
|
[Unify.typeSymbol]?: unknown
|
|
67
67
|
[Unify.unifySymbol]?: OptionUnify<this>
|
|
@@ -983,8 +983,8 @@ export const filterMap: {
|
|
|
983
983
|
* @since 2.0.0
|
|
984
984
|
*/
|
|
985
985
|
export const filter: {
|
|
986
|
-
<A, B extends A>(refinement: Refinement<A
|
|
987
|
-
<
|
|
986
|
+
<A, B extends A>(refinement: Refinement<NoInfer<A>, B>): (self: Option<A>) => Option<B>
|
|
987
|
+
<A>(predicate: Predicate<NoInfer<A>>): (self: Option<A>) => Option<A>
|
|
988
988
|
<A, B extends A>(self: Option<A>, refinement: Refinement<A, B>): Option<B>
|
|
989
989
|
<A>(self: Option<A>, predicate: Predicate<A>): Option<A>
|
|
990
990
|
} = dual(
|
|
@@ -1066,7 +1066,7 @@ export const lift2 = <A, B, C>(f: (a: A, b: B) => C): {
|
|
|
1066
1066
|
* @category lifting
|
|
1067
1067
|
* @since 2.0.0
|
|
1068
1068
|
*/
|
|
1069
|
-
export const liftPredicate: {
|
|
1069
|
+
export const liftPredicate: { // Note: I intentionally avoid using the NoInfer pattern here.
|
|
1070
1070
|
<A, B extends A>(refinement: Refinement<A, B>): (a: A) => Option<B>
|
|
1071
1071
|
<B extends A, A = B>(predicate: Predicate<A>): (b: B) => Option<B>
|
|
1072
1072
|
} = <B extends A, A = B>(predicate: Predicate<A>) => (b: B): Option<B> => predicate(b) ? some(b) : none()
|
|
@@ -1127,8 +1127,8 @@ export const contains: {
|
|
|
1127
1127
|
* @since 2.0.0
|
|
1128
1128
|
*/
|
|
1129
1129
|
export const exists: {
|
|
1130
|
-
<A, B extends A>(refinement: Refinement<A
|
|
1131
|
-
<
|
|
1130
|
+
<A, B extends A>(refinement: Refinement<NoInfer<A>, B>): (self: Option<A>) => self is Option<B>
|
|
1131
|
+
<A>(predicate: Predicate<NoInfer<A>>): (self: Option<A>) => boolean
|
|
1132
1132
|
<A, B extends A>(self: Option<A>, refinement: Refinement<A, B>): self is Option<B>
|
|
1133
1133
|
<A>(self: Option<A>, predicate: Predicate<A>): boolean
|
|
1134
1134
|
} = dual(
|
package/src/ReadonlyArray.ts
CHANGED
|
@@ -19,6 +19,7 @@ import type { Predicate, Refinement } from "./Predicate.js"
|
|
|
19
19
|
import { isBoolean } from "./Predicate.js"
|
|
20
20
|
import * as RR from "./ReadonlyRecord.js"
|
|
21
21
|
import * as Tuple from "./Tuple.js"
|
|
22
|
+
import type { NoInfer } from "./Types.js"
|
|
22
23
|
|
|
23
24
|
/**
|
|
24
25
|
* @category type lambdas
|
|
@@ -559,8 +560,8 @@ export const takeRight: {
|
|
|
559
560
|
* @since 2.0.0
|
|
560
561
|
*/
|
|
561
562
|
export const takeWhile: {
|
|
562
|
-
<A, B extends A>(refinement: (a: A
|
|
563
|
-
<
|
|
563
|
+
<A, B extends A>(refinement: (a: NoInfer<A>, i: number) => a is B): (self: Iterable<A>) => Array<B>
|
|
564
|
+
<A>(predicate: (a: NoInfer<A>, i: number) => boolean): (self: Iterable<A>) => Array<A>
|
|
564
565
|
<A, B extends A>(self: Iterable<A>, refinement: (a: A, i: number) => a is B): Array<B>
|
|
565
566
|
<A>(self: Iterable<A>, predicate: (a: A, i: number) => boolean): Array<A>
|
|
566
567
|
} = dual(2, <A>(self: Iterable<A>, predicate: (a: A, i: number) => boolean): Array<A> => {
|
|
@@ -597,10 +598,10 @@ const spanIndex = <A>(self: Iterable<A>, predicate: (a: A, i: number) => boolean
|
|
|
597
598
|
* @since 2.0.0
|
|
598
599
|
*/
|
|
599
600
|
export const span: {
|
|
600
|
-
<
|
|
601
|
-
refinement: (a: A
|
|
602
|
-
): (self: Iterable<
|
|
603
|
-
<
|
|
601
|
+
<A, B extends A>(
|
|
602
|
+
refinement: (a: NoInfer<A>, i: number) => a is B
|
|
603
|
+
): (self: Iterable<A>) => [init: Array<B>, rest: Array<Exclude<A, B>>]
|
|
604
|
+
<A>(predicate: (a: NoInfer<A>, i: number) => boolean): (self: Iterable<A>) => [init: Array<A>, rest: Array<A>]
|
|
604
605
|
<A, B extends A>(
|
|
605
606
|
self: Iterable<A>,
|
|
606
607
|
refinement: (a: A, i: number) => a is B
|
|
@@ -651,7 +652,7 @@ export const dropRight: {
|
|
|
651
652
|
* @since 2.0.0
|
|
652
653
|
*/
|
|
653
654
|
export const dropWhile: {
|
|
654
|
-
<
|
|
655
|
+
<A>(predicate: (a: NoInfer<A>, i: number) => boolean): (self: Iterable<A>) => Array<A>
|
|
655
656
|
<A>(self: Iterable<A>, predicate: (a: A, i: number) => boolean): Array<A>
|
|
656
657
|
} = dual(
|
|
657
658
|
2,
|
|
@@ -666,7 +667,7 @@ export const dropWhile: {
|
|
|
666
667
|
* @since 2.0.0
|
|
667
668
|
*/
|
|
668
669
|
export const findFirstIndex: {
|
|
669
|
-
<A>(predicate: (a: A
|
|
670
|
+
<A>(predicate: (a: NoInfer<A>, i: number) => boolean): (self: Iterable<A>) => Option<number>
|
|
670
671
|
<A>(self: Iterable<A>, predicate: (a: A, i: number) => boolean): Option<number>
|
|
671
672
|
} = dual(2, <A>(self: Iterable<A>, predicate: (a: A, i: number) => boolean): Option<number> => {
|
|
672
673
|
let i = 0
|
|
@@ -686,7 +687,7 @@ export const findFirstIndex: {
|
|
|
686
687
|
* @since 2.0.0
|
|
687
688
|
*/
|
|
688
689
|
export const findLastIndex: {
|
|
689
|
-
<A>(predicate: (a: A
|
|
690
|
+
<A>(predicate: (a: NoInfer<A>, i: number) => boolean): (self: Iterable<A>) => Option<number>
|
|
690
691
|
<A>(self: Iterable<A>, predicate: (a: A, i: number) => boolean): Option<number>
|
|
691
692
|
} = dual(2, <A>(self: Iterable<A>, predicate: (a: A, i: number) => boolean): Option<number> => {
|
|
692
693
|
const input = fromIterable(self)
|
|
@@ -706,9 +707,9 @@ export const findLastIndex: {
|
|
|
706
707
|
* @since 2.0.0
|
|
707
708
|
*/
|
|
708
709
|
export const findFirst: {
|
|
709
|
-
<A, B>(f: (a: A
|
|
710
|
-
<A, B extends A>(refinement: (a: A
|
|
711
|
-
<
|
|
710
|
+
<A, B>(f: (a: NoInfer<A>, i: number) => Option<B>): (self: Iterable<A>) => Option<B>
|
|
711
|
+
<A, B extends A>(refinement: (a: NoInfer<A>, i: number) => a is B): (self: Iterable<A>) => Option<B>
|
|
712
|
+
<A>(predicate: (a: NoInfer<A>, i: number) => boolean): (self: Iterable<A>) => Option<A>
|
|
712
713
|
<A, B>(self: Iterable<A>, f: (a: A, i: number) => Option<B>): Option<B>
|
|
713
714
|
<A, B extends A>(self: Iterable<A>, refinement: (a: A, i: number) => a is B): Option<B>
|
|
714
715
|
<A>(self: Iterable<A>, predicate: (a: A, i: number) => boolean): Option<A>
|
|
@@ -740,9 +741,9 @@ export const findFirst: {
|
|
|
740
741
|
* @since 2.0.0
|
|
741
742
|
*/
|
|
742
743
|
export const findLast: {
|
|
743
|
-
<A, B>(f: (a: A
|
|
744
|
-
<A, B extends A>(refinement: (a: A
|
|
745
|
-
<
|
|
744
|
+
<A, B>(f: (a: NoInfer<A>, i: number) => Option<B>): (self: Iterable<A>) => Option<B>
|
|
745
|
+
<A, B extends A>(refinement: (a: NoInfer<A>, i: number) => a is B): (self: Iterable<A>) => Option<B>
|
|
746
|
+
<A>(predicate: (a: NoInfer<A>, i: number) => boolean): (self: Iterable<A>) => Option<A>
|
|
746
747
|
<A, B>(self: Iterable<A>, f: (a: A, i: number) => Option<B>): Option<B>
|
|
747
748
|
<A, B extends A>(self: Iterable<A>, refinement: (a: A, i: number) => a is B): Option<B>
|
|
748
749
|
<A>(self: Iterable<A>, predicate: (a: A, i: number) => boolean): Option<A>
|
|
@@ -896,12 +897,15 @@ export const sort: {
|
|
|
896
897
|
* @category elements
|
|
897
898
|
*/
|
|
898
899
|
export const sortWith: {
|
|
899
|
-
<
|
|
900
|
-
|
|
900
|
+
<S extends Iterable<any> | NonEmptyReadonlyArray<any>, B>(
|
|
901
|
+
f: (a: ReadonlyArray.Infer<S>) => B,
|
|
902
|
+
order: Order.Order<B>
|
|
903
|
+
): (self: S) => ReadonlyArray.With<S, ReadonlyArray.Infer<S>>
|
|
904
|
+
<A, B>(self: NonEmptyReadonlyArray<A>, f: (a: A) => B, O: Order.Order<B>): NonEmptyArray<A>
|
|
905
|
+
<A, B>(self: Iterable<A>, f: (a: A) => B, order: Order.Order<B>): Array<A>
|
|
901
906
|
} = dual(
|
|
902
907
|
3,
|
|
903
|
-
<A, B>(self:
|
|
904
|
-
sort(self, Order.mapInput(order, f))
|
|
908
|
+
<A, B>(self: Iterable<A>, f: (a: A) => B, order: Order.Order<B>): Array<A> => sort(self, Order.mapInput(order, f))
|
|
905
909
|
)
|
|
906
910
|
|
|
907
911
|
/**
|
|
@@ -1236,9 +1240,9 @@ export const split: {
|
|
|
1236
1240
|
* @since 2.0.0
|
|
1237
1241
|
*/
|
|
1238
1242
|
export const splitWhere: {
|
|
1239
|
-
<
|
|
1240
|
-
predicate: (a: A
|
|
1241
|
-
): (self: Iterable<
|
|
1243
|
+
<A>(
|
|
1244
|
+
predicate: (a: NoInfer<A>, i: number) => boolean
|
|
1245
|
+
): (self: Iterable<A>) => [beforeMatch: Array<A>, fromMatch: Array<A>]
|
|
1242
1246
|
<A>(self: Iterable<A>, predicate: (a: A, i: number) => boolean): [beforeMatch: Array<A>, fromMatch: Array<A>]
|
|
1243
1247
|
} = dual(
|
|
1244
1248
|
2,
|
|
@@ -1702,15 +1706,15 @@ export const getRights = <E, A>(self: Iterable<Either<E, A>>): Array<A> => {
|
|
|
1702
1706
|
* @since 2.0.0
|
|
1703
1707
|
*/
|
|
1704
1708
|
export const filter: {
|
|
1705
|
-
<A, B extends A>(refinement: (a: A
|
|
1706
|
-
<A
|
|
1709
|
+
<A, B extends A>(refinement: (a: NoInfer<A>, i: number) => a is B): (self: Iterable<A>) => Array<B>
|
|
1710
|
+
<A>(predicate: (a: NoInfer<A>, i: number) => boolean): (self: Iterable<A>) => Array<A>
|
|
1707
1711
|
<A, B extends A>(self: Iterable<A>, refinement: (a: A, i: number) => a is B): Array<B>
|
|
1708
1712
|
<A>(self: Iterable<A>, predicate: (a: A, i: number) => boolean): Array<A>
|
|
1709
1713
|
} = dual(
|
|
1710
1714
|
2,
|
|
1711
|
-
<
|
|
1715
|
+
<A>(self: Iterable<A>, predicate: (a: A, i: number) => boolean): Array<A> => {
|
|
1712
1716
|
const as = fromIterable(self)
|
|
1713
|
-
const out: Array<
|
|
1717
|
+
const out: Array<A> = []
|
|
1714
1718
|
for (let i = 0; i < as.length; i++) {
|
|
1715
1719
|
if (predicate(as[i], i)) {
|
|
1716
1720
|
out.push(as[i])
|
|
@@ -1727,12 +1731,12 @@ export const filter: {
|
|
|
1727
1731
|
* @since 2.0.0
|
|
1728
1732
|
*/
|
|
1729
1733
|
export const partition: {
|
|
1730
|
-
<
|
|
1731
|
-
self: Iterable<
|
|
1732
|
-
) => [excluded: Array<Exclude<
|
|
1733
|
-
<
|
|
1734
|
-
predicate: (a: A
|
|
1735
|
-
): (self: Iterable<
|
|
1734
|
+
<A, B extends A>(refinement: (a: NoInfer<A>, i: number) => a is B): (
|
|
1735
|
+
self: Iterable<A>
|
|
1736
|
+
) => [excluded: Array<Exclude<A, B>>, satisfying: Array<B>]
|
|
1737
|
+
<A>(
|
|
1738
|
+
predicate: (a: NoInfer<A>, i: number) => boolean
|
|
1739
|
+
): (self: Iterable<A>) => [excluded: Array<A>, satisfying: Array<A>]
|
|
1736
1740
|
<A, B extends A>(
|
|
1737
1741
|
self: Iterable<A>,
|
|
1738
1742
|
refinement: (a: A, i: number) => a is B
|
|
@@ -1793,7 +1797,7 @@ export const reduceRight: {
|
|
|
1793
1797
|
* @category lifting
|
|
1794
1798
|
* @since 2.0.0
|
|
1795
1799
|
*/
|
|
1796
|
-
export const liftPredicate: {
|
|
1800
|
+
export const liftPredicate: { // Note: I intentionally avoid using the NoInfer pattern here.
|
|
1797
1801
|
<A, B extends A>(refinement: Refinement<A, B>): (a: A) => Array<B>
|
|
1798
1802
|
<A>(predicate: Predicate<A>): <B extends A>(b: B) => Array<B>
|
|
1799
1803
|
} = <A>(predicate: Predicate<A>) => <B extends A>(b: B): Array<B> => predicate(b) ? [b] : []
|
|
@@ -1854,8 +1858,10 @@ export const liftEither = <A extends Array<unknown>, E, B>(
|
|
|
1854
1858
|
* @since 2.0.0
|
|
1855
1859
|
*/
|
|
1856
1860
|
export const every: {
|
|
1857
|
-
<A, B extends A>(
|
|
1858
|
-
|
|
1861
|
+
<A, B extends A>(
|
|
1862
|
+
refinement: (a: NoInfer<A>, i: number) => a is B
|
|
1863
|
+
): (self: ReadonlyArray<A>) => self is ReadonlyArray<B>
|
|
1864
|
+
<A>(predicate: (a: NoInfer<A>, i: number) => boolean): (self: ReadonlyArray<A>) => boolean
|
|
1859
1865
|
<A, B extends A>(self: ReadonlyArray<A>, refinement: (a: A, i: number) => a is B): self is ReadonlyArray<B>
|
|
1860
1866
|
<A>(self: ReadonlyArray<A>, predicate: (a: A, i: number) => boolean): boolean
|
|
1861
1867
|
} = dual(
|
|
@@ -1871,9 +1877,9 @@ export const every: {
|
|
|
1871
1877
|
* @since 2.0.0
|
|
1872
1878
|
*/
|
|
1873
1879
|
export const some: {
|
|
1874
|
-
<
|
|
1875
|
-
predicate: (a: A
|
|
1876
|
-
): (self: ReadonlyArray<
|
|
1880
|
+
<A>(
|
|
1881
|
+
predicate: (a: NoInfer<A>, i: number) => boolean
|
|
1882
|
+
): (self: ReadonlyArray<A>) => self is NonEmptyReadonlyArray<A>
|
|
1877
1883
|
<A>(self: ReadonlyArray<A>, predicate: (a: A, i: number) => boolean): self is NonEmptyReadonlyArray<A>
|
|
1878
1884
|
} = dual(
|
|
1879
1885
|
2,
|
package/src/ReadonlyRecord.ts
CHANGED
|
@@ -11,6 +11,7 @@ import type { Equivalence } from "./Equivalence.js"
|
|
|
11
11
|
import { dual, identity } from "./Function.js"
|
|
12
12
|
import type { TypeLambda } from "./HKT.js"
|
|
13
13
|
import * as Option from "./Option.js"
|
|
14
|
+
import type { NoInfer } from "./Types.js"
|
|
14
15
|
|
|
15
16
|
/**
|
|
16
17
|
* @category models
|
|
@@ -527,10 +528,12 @@ export const filterMap: {
|
|
|
527
528
|
* @since 2.0.0
|
|
528
529
|
*/
|
|
529
530
|
export const filter: {
|
|
530
|
-
<K extends string, A, B extends A>(
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
531
|
+
<K extends string, A, B extends A>(
|
|
532
|
+
refinement: (a: NoInfer<A>, key: K) => a is B
|
|
533
|
+
): (self: Record<K, A>) => Record<string, B>
|
|
534
|
+
<K extends string, A>(
|
|
535
|
+
predicate: (A: NoInfer<A>, key: K) => boolean
|
|
536
|
+
): (self: Record<K, A>) => Record<string, A>
|
|
534
537
|
<K extends string, A, B extends A>(self: Record<K, A>, refinement: (a: A, key: K) => a is B): Record<string, B>
|
|
535
538
|
<K extends string, A>(self: Record<K, A>, predicate: (a: A, key: K) => boolean): Record<string, A>
|
|
536
539
|
} = dual(
|
|
@@ -709,12 +712,12 @@ export const separate: <A, B>(
|
|
|
709
712
|
* @since 2.0.0
|
|
710
713
|
*/
|
|
711
714
|
export const partition: {
|
|
712
|
-
<K extends string,
|
|
713
|
-
self: Record<K,
|
|
714
|
-
) => [excluded: Record<string, Exclude<
|
|
715
|
-
<K extends string,
|
|
716
|
-
predicate: (a: A
|
|
717
|
-
): (self: Record<K,
|
|
715
|
+
<K extends string, A, B extends A>(refinement: (a: NoInfer<A>, key: K) => a is B): (
|
|
716
|
+
self: Record<K, A>
|
|
717
|
+
) => [excluded: Record<string, Exclude<A, B>>, satisfying: Record<string, B>]
|
|
718
|
+
<K extends string, A>(
|
|
719
|
+
predicate: (a: NoInfer<A>, key: K) => boolean
|
|
720
|
+
): (self: Record<K, A>) => [excluded: Record<string, A>, satisfying: Record<string, A>]
|
|
718
721
|
<K extends string, A, B extends A>(
|
|
719
722
|
self: Record<K, A>,
|
|
720
723
|
refinement: (a: A, key: K) => a is B
|