@monstermann/map 0.1.1 → 0.2.0
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/README.md +2496 -0
- package/dist/Map/{clone.d.ts → clone.d.mts} +10 -5
- package/dist/Map/{clone.js → clone.mjs} +10 -5
- package/dist/Map/compact.d.mts +48 -0
- package/dist/Map/{compact.js → compact.mjs} +13 -6
- package/dist/Map/{create.d.ts → create.d.mts} +9 -2
- package/dist/Map/{create.js → create.mjs} +9 -2
- package/dist/Map/every.d.mts +58 -0
- package/dist/Map/every.mjs +55 -0
- package/dist/Map/filter.d.mts +58 -0
- package/dist/Map/{filter.js → filter.mjs} +17 -5
- package/dist/Map/find.d.mts +54 -0
- package/dist/Map/find.mjs +54 -0
- package/dist/Map/findMap.d.mts +67 -0
- package/dist/Map/findMap.mjs +71 -0
- package/dist/Map/findMapAll.d.mts +67 -0
- package/dist/Map/findMapAll.mjs +72 -0
- package/dist/Map/findMapOr.d.mts +70 -0
- package/dist/Map/findMapOr.mjs +74 -0
- package/dist/Map/findMapOrElse.d.mts +70 -0
- package/dist/Map/findMapOrElse.mjs +74 -0
- package/dist/Map/findMapOrThrow.d.mts +67 -0
- package/dist/Map/findMapOrThrow.mjs +71 -0
- package/dist/Map/findOr.d.mts +56 -0
- package/dist/Map/findOr.mjs +57 -0
- package/dist/Map/findOrElse.d.mts +59 -0
- package/dist/Map/findOrElse.mjs +60 -0
- package/dist/Map/findOrThrow.d.mts +54 -0
- package/dist/Map/findOrThrow.mjs +55 -0
- package/dist/Map/findRemove.d.mts +54 -0
- package/dist/Map/findRemove.mjs +60 -0
- package/dist/Map/findRemoveOr.d.mts +56 -0
- package/dist/Map/findRemoveOr.mjs +62 -0
- package/dist/Map/findRemoveOrElse.d.mts +59 -0
- package/dist/Map/findRemoveOrElse.mjs +65 -0
- package/dist/Map/findRemoveOrThrow.d.mts +54 -0
- package/dist/Map/findRemoveOrThrow.mjs +60 -0
- package/dist/Map/findReplace.d.mts +56 -0
- package/dist/Map/findReplace.mjs +63 -0
- package/dist/Map/findReplaceOr.d.mts +58 -0
- package/dist/Map/findReplaceOr.mjs +65 -0
- package/dist/Map/findReplaceOrElse.d.mts +62 -0
- package/dist/Map/findReplaceOrElse.mjs +69 -0
- package/dist/Map/findReplaceOrThrow.d.mts +56 -0
- package/dist/Map/findReplaceOrThrow.mjs +63 -0
- package/dist/Map/forEach.d.mts +52 -0
- package/dist/Map/{forEach.js → forEach.mjs} +17 -5
- package/dist/Map/{get.d.ts → get.d.mts} +15 -7
- package/dist/Map/{get.js → get.mjs} +15 -7
- package/dist/Map/{getOr.d.ts → getOr.d.mts} +20 -14
- package/dist/Map/{getOr.js → getOr.mjs} +18 -9
- package/dist/Map/{getOrElse.d.ts → getOrElse.d.mts} +20 -14
- package/dist/Map/{getOrElse.js → getOrElse.mjs} +18 -9
- package/dist/Map/{getOrThrow.d.ts → getOrThrow.d.mts} +19 -14
- package/dist/Map/{getOrThrow.js → getOrThrow.mjs} +17 -9
- package/dist/Map/{has.d.ts → has.d.mts} +15 -7
- package/dist/Map/{has.js → has.mjs} +15 -7
- package/dist/Map/{hasAll.d.ts → hasAll.d.mts} +15 -7
- package/dist/Map/{hasAll.js → hasAll.mjs} +15 -7
- package/dist/Map/{hasAny.d.ts → hasAny.d.mts} +15 -7
- package/dist/Map/{hasAny.js → hasAny.mjs} +15 -7
- package/dist/Map/{hasNone.d.ts → hasNone.d.mts} +15 -7
- package/dist/Map/{hasNone.js → hasNone.mjs} +15 -7
- package/dist/Map/index.d.mts +56 -0
- package/dist/Map/index.mjs +103 -0
- package/dist/Map/{is.d.ts → is.d.mts} +12 -5
- package/dist/Map/{is.js → is.mjs} +12 -5
- package/dist/Map/isEmpty.d.mts +33 -0
- package/dist/Map/isEmpty.mjs +35 -0
- package/dist/Map/{isShallowEqual.d.ts → isShallowEqual.d.mts} +19 -11
- package/dist/Map/{isShallowEqual.js → isShallowEqual.mjs} +19 -11
- package/dist/Map/map.d.mts +71 -0
- package/dist/Map/{map.js → map.mjs} +21 -7
- package/dist/Map/mapEach.d.mts +52 -0
- package/dist/Map/{mapEach.js → mapEach.mjs} +17 -5
- package/dist/Map/mapOr.d.mts +74 -0
- package/dist/Map/{mapOr.js → mapOr.mjs} +21 -7
- package/dist/Map/mapOrElse.d.mts +82 -0
- package/dist/Map/{mapOrElse.js → mapOrElse.mjs} +21 -7
- package/dist/Map/mapOrThrow.d.mts +71 -0
- package/dist/Map/{mapOrThrow.js → mapOrThrow.mjs} +20 -7
- package/dist/Map/none.d.mts +58 -0
- package/dist/Map/none.mjs +55 -0
- package/dist/Map/reject.d.mts +58 -0
- package/dist/Map/{reject.js → reject.mjs} +17 -5
- package/dist/Map/{remove.d.ts → remove.d.mts} +15 -7
- package/dist/Map/{remove.js → remove.mjs} +15 -7
- package/dist/Map/{removeAll.d.ts → removeAll.d.mts} +15 -7
- package/dist/Map/{removeAll.js → removeAll.mjs} +15 -7
- package/dist/Map/{removeOr.d.ts → removeOr.d.mts} +16 -7
- package/dist/Map/{removeOr.js → removeOr.mjs} +16 -7
- package/dist/Map/{removeOrElse.d.ts → removeOrElse.d.mts} +18 -12
- package/dist/Map/{removeOrElse.js → removeOrElse.mjs} +16 -7
- package/dist/Map/{removeOrThrow.d.ts → removeOrThrow.d.mts} +15 -7
- package/dist/Map/{removeOrThrow.js → removeOrThrow.mjs} +15 -7
- package/dist/Map/{set.d.ts → set.d.mts} +16 -7
- package/dist/Map/{set.js → set.mjs} +16 -7
- package/dist/Map/some.d.mts +52 -0
- package/dist/Map/some.mjs +55 -0
- package/dist/index.d.mts +2 -0
- package/dist/index.mjs +3 -0
- package/package.json +2 -2
- package/dist/Map/compact.d.ts +0 -44
- package/dist/Map/filter.d.ts +0 -49
- package/dist/Map/forEach.d.ts +0 -43
- package/dist/Map/index.d.ts +0 -36
- package/dist/Map/index.js +0 -63
- package/dist/Map/internals/types.d.ts +0 -14
- package/dist/Map/isEmpty.d.ts +0 -28
- package/dist/Map/isEmpty.js +0 -30
- package/dist/Map/map.d.ts +0 -60
- package/dist/Map/mapEach.d.ts +0 -43
- package/dist/Map/mapOr.d.ts +0 -63
- package/dist/Map/mapOrElse.d.ts +0 -71
- package/dist/Map/mapOrThrow.d.ts +0 -61
- package/dist/Map/reject.d.ts +0 -49
- package/dist/index.d.ts +0 -2
- package/dist/index.js +0 -3
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
//#region src/Map/clone.d.ts
|
|
2
2
|
/**
|
|
3
|
+
* # clone
|
|
4
|
+
*
|
|
3
5
|
* ```ts
|
|
4
|
-
* function Map.clone(target)
|
|
6
|
+
* function Map.clone<K, V>(target: ReadonlyMap<K, V>): Map<K, V>
|
|
5
7
|
* ```
|
|
6
8
|
*
|
|
9
|
+
* Creates a shallow copy of the map, unless marked as mutable with `markAsMutable` inside a mutation context (see [@monstermann/remmi](https://michaelostermann.github.io/remmi/#clonearray-array)).
|
|
10
|
+
*
|
|
7
11
|
* ## Example
|
|
8
12
|
*
|
|
9
|
-
* ```ts
|
|
13
|
+
* ```ts [data-first]
|
|
10
14
|
* import { Map } from "@monstermann/map";
|
|
11
15
|
*
|
|
12
|
-
* const original = Map
|
|
16
|
+
* const original = new Map([
|
|
13
17
|
* ["a", 1],
|
|
14
18
|
* ["b", 2],
|
|
15
19
|
* ]);
|
|
@@ -17,16 +21,17 @@
|
|
|
17
21
|
* const copy = Map.clone(original); // Map { 'a' => 1, 'b' => 2 }
|
|
18
22
|
* ```
|
|
19
23
|
*
|
|
20
|
-
* ```ts
|
|
24
|
+
* ```ts [data-last]
|
|
21
25
|
* import { Map } from "@monstermann/map";
|
|
22
26
|
*
|
|
23
|
-
* const original = Map
|
|
27
|
+
* const original = new Map([
|
|
24
28
|
* ["a", 1],
|
|
25
29
|
* ["b", 2],
|
|
26
30
|
* ]);
|
|
27
31
|
*
|
|
28
32
|
* const copy = pipe(original, Map.clone()); // Map { 'a' => 1, 'b' => 2 }
|
|
29
33
|
* ```
|
|
34
|
+
*
|
|
30
35
|
*/
|
|
31
36
|
declare const clone: {
|
|
32
37
|
(): <K, V>(target: ReadonlyMap<K, V>) => Map<K, V>;
|
|
@@ -3,16 +3,20 @@ import { cloneMap } from "@monstermann/remmi";
|
|
|
3
3
|
|
|
4
4
|
//#region src/Map/clone.ts
|
|
5
5
|
/**
|
|
6
|
+
* # clone
|
|
7
|
+
*
|
|
6
8
|
* ```ts
|
|
7
|
-
* function Map.clone(target)
|
|
9
|
+
* function Map.clone<K, V>(target: ReadonlyMap<K, V>): Map<K, V>
|
|
8
10
|
* ```
|
|
9
11
|
*
|
|
12
|
+
* Creates a shallow copy of the map, unless marked as mutable with `markAsMutable` inside a mutation context (see [@monstermann/remmi](https://michaelostermann.github.io/remmi/#clonearray-array)).
|
|
13
|
+
*
|
|
10
14
|
* ## Example
|
|
11
15
|
*
|
|
12
|
-
* ```ts
|
|
16
|
+
* ```ts [data-first]
|
|
13
17
|
* import { Map } from "@monstermann/map";
|
|
14
18
|
*
|
|
15
|
-
* const original = Map
|
|
19
|
+
* const original = new Map([
|
|
16
20
|
* ["a", 1],
|
|
17
21
|
* ["b", 2],
|
|
18
22
|
* ]);
|
|
@@ -20,16 +24,17 @@ import { cloneMap } from "@monstermann/remmi";
|
|
|
20
24
|
* const copy = Map.clone(original); // Map { 'a' => 1, 'b' => 2 }
|
|
21
25
|
* ```
|
|
22
26
|
*
|
|
23
|
-
* ```ts
|
|
27
|
+
* ```ts [data-last]
|
|
24
28
|
* import { Map } from "@monstermann/map";
|
|
25
29
|
*
|
|
26
|
-
* const original = Map
|
|
30
|
+
* const original = new Map([
|
|
27
31
|
* ["a", 1],
|
|
28
32
|
* ["b", 2],
|
|
29
33
|
* ]);
|
|
30
34
|
*
|
|
31
35
|
* const copy = pipe(original, Map.clone()); // Map { 'a' => 1, 'b' => 2 }
|
|
32
36
|
* ```
|
|
37
|
+
*
|
|
33
38
|
*/
|
|
34
39
|
const clone = dfdlT(cloneMap, 1);
|
|
35
40
|
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
//#region src/Map/compact.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* # compact
|
|
4
|
+
*
|
|
5
|
+
* ```ts
|
|
6
|
+
* function Map.compact<K, V>(
|
|
7
|
+
* target: ReadonlyMap<K, V>,
|
|
8
|
+
* ): ReadonlyMap<K, Exclude<V, null | undefined>>
|
|
9
|
+
* ```
|
|
10
|
+
*
|
|
11
|
+
* Removes all entries with `null` or `undefined` values.
|
|
12
|
+
*
|
|
13
|
+
* ## Example
|
|
14
|
+
*
|
|
15
|
+
* ```ts [data-first]
|
|
16
|
+
* import { Map } from "@monstermann/map";
|
|
17
|
+
*
|
|
18
|
+
* Map.compact(
|
|
19
|
+
* new Map([
|
|
20
|
+
* ["a", 1],
|
|
21
|
+
* ["b", null],
|
|
22
|
+
* ["c", undefined],
|
|
23
|
+
* ]),
|
|
24
|
+
* ); // Map(1) { "a" => 1 }
|
|
25
|
+
* ```
|
|
26
|
+
*
|
|
27
|
+
* ```ts [data-last]
|
|
28
|
+
* import { Map } from "@monstermann/map";
|
|
29
|
+
*
|
|
30
|
+
* pipe(
|
|
31
|
+
* new Map([
|
|
32
|
+
* ["a", 1],
|
|
33
|
+
* ["b", null],
|
|
34
|
+
* ["c", undefined],
|
|
35
|
+
* ]),
|
|
36
|
+
* Map.compact(),
|
|
37
|
+
* ); // Map(1) { "a" => 1 }
|
|
38
|
+
* ```
|
|
39
|
+
*
|
|
40
|
+
*/
|
|
41
|
+
declare const compact: {
|
|
42
|
+
(): <K, V>(target: Map<K, V>) => Map<K, Exclude<V, null | undefined>>;
|
|
43
|
+
(): <K, V>(target: ReadonlyMap<K, V>) => ReadonlyMap<K, Exclude<V, null | undefined>>;
|
|
44
|
+
<K, V>(target: Map<K, V>): Map<K, Exclude<V, null | undefined>>;
|
|
45
|
+
<K, V>(target: ReadonlyMap<K, V>): ReadonlyMap<K, Exclude<V, null | undefined>>;
|
|
46
|
+
};
|
|
47
|
+
//#endregion
|
|
48
|
+
export { compact };
|
|
@@ -1,19 +1,25 @@
|
|
|
1
|
-
import { filter } from "./filter.
|
|
1
|
+
import { filter } from "./filter.mjs";
|
|
2
2
|
import { dfdlT } from "@monstermann/dfdl";
|
|
3
3
|
|
|
4
4
|
//#region src/Map/compact.ts
|
|
5
5
|
/**
|
|
6
|
+
* # compact
|
|
7
|
+
*
|
|
6
8
|
* ```ts
|
|
7
|
-
* function Map.compact(
|
|
9
|
+
* function Map.compact<K, V>(
|
|
10
|
+
* target: ReadonlyMap<K, V>,
|
|
11
|
+
* ): ReadonlyMap<K, Exclude<V, null | undefined>>
|
|
8
12
|
* ```
|
|
9
13
|
*
|
|
14
|
+
* Removes all entries with `null` or `undefined` values.
|
|
15
|
+
*
|
|
10
16
|
* ## Example
|
|
11
17
|
*
|
|
12
|
-
* ```ts
|
|
18
|
+
* ```ts [data-first]
|
|
13
19
|
* import { Map } from "@monstermann/map";
|
|
14
20
|
*
|
|
15
21
|
* Map.compact(
|
|
16
|
-
* Map
|
|
22
|
+
* new Map([
|
|
17
23
|
* ["a", 1],
|
|
18
24
|
* ["b", null],
|
|
19
25
|
* ["c", undefined],
|
|
@@ -21,11 +27,11 @@ import { dfdlT } from "@monstermann/dfdl";
|
|
|
21
27
|
* ); // Map(1) { "a" => 1 }
|
|
22
28
|
* ```
|
|
23
29
|
*
|
|
24
|
-
* ```ts
|
|
30
|
+
* ```ts [data-last]
|
|
25
31
|
* import { Map } from "@monstermann/map";
|
|
26
32
|
*
|
|
27
33
|
* pipe(
|
|
28
|
-
* Map
|
|
34
|
+
* new Map([
|
|
29
35
|
* ["a", 1],
|
|
30
36
|
* ["b", null],
|
|
31
37
|
* ["c", undefined],
|
|
@@ -33,6 +39,7 @@ import { dfdlT } from "@monstermann/dfdl";
|
|
|
33
39
|
* Map.compact(),
|
|
34
40
|
* ); // Map(1) { "a" => 1 }
|
|
35
41
|
* ```
|
|
42
|
+
*
|
|
36
43
|
*/
|
|
37
44
|
const compact = dfdlT((target) => {
|
|
38
45
|
return filter(target, (v) => v != null);
|
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
//#region src/Map/create.d.ts
|
|
2
2
|
/**
|
|
3
|
+
* # create
|
|
4
|
+
*
|
|
3
5
|
* ```ts
|
|
4
|
-
* function Map.create(
|
|
6
|
+
* function Map.create<K, V>(
|
|
7
|
+
* iterable?: Iterable<readonly [K, V]> | null | undefined,
|
|
8
|
+
* ): Map<K, V>
|
|
5
9
|
* ```
|
|
6
10
|
*
|
|
11
|
+
* Creates a new Map from an iterable of key-value pairs.
|
|
12
|
+
*
|
|
7
13
|
* ## Example
|
|
8
14
|
*
|
|
9
15
|
* ```ts
|
|
@@ -13,8 +19,9 @@
|
|
|
13
19
|
* ["a", 1],
|
|
14
20
|
* ["b", 2],
|
|
15
21
|
* ["c", 3],
|
|
16
|
-
* ]) // Map(2) { "a" => 1, "b" => 2, "c" => 3 }
|
|
22
|
+
* ]); // Map(2) { "a" => 1, "b" => 2, "c" => 3 }
|
|
17
23
|
* ```
|
|
24
|
+
*
|
|
18
25
|
*/
|
|
19
26
|
declare function create<K, V>(iterable?: Iterable<readonly [K, V]> | null | undefined): Map<K, V>;
|
|
20
27
|
//#endregion
|
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
//#region src/Map/create.ts
|
|
2
2
|
/**
|
|
3
|
+
* # create
|
|
4
|
+
*
|
|
3
5
|
* ```ts
|
|
4
|
-
* function Map.create(
|
|
6
|
+
* function Map.create<K, V>(
|
|
7
|
+
* iterable?: Iterable<readonly [K, V]> | null | undefined,
|
|
8
|
+
* ): Map<K, V>
|
|
5
9
|
* ```
|
|
6
10
|
*
|
|
11
|
+
* Creates a new Map from an iterable of key-value pairs.
|
|
12
|
+
*
|
|
7
13
|
* ## Example
|
|
8
14
|
*
|
|
9
15
|
* ```ts
|
|
@@ -13,8 +19,9 @@
|
|
|
13
19
|
* ["a", 1],
|
|
14
20
|
* ["b", 2],
|
|
15
21
|
* ["c", 3],
|
|
16
|
-
* ]) // Map(2) { "a" => 1, "b" => 2, "c" => 3 }
|
|
22
|
+
* ]); // Map(2) { "a" => 1, "b" => 2, "c" => 3 }
|
|
17
23
|
* ```
|
|
24
|
+
*
|
|
18
25
|
*/
|
|
19
26
|
function create(iterable) {
|
|
20
27
|
return new globalThis.Map(iterable);
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
//#region src/Map/every.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* # every
|
|
4
|
+
*
|
|
5
|
+
* ```ts
|
|
6
|
+
* function Map.every<K, V>(
|
|
7
|
+
* target: ReadonlyMap<K, V>,
|
|
8
|
+
* predicate: (
|
|
9
|
+
* value: NoInfer<V>,
|
|
10
|
+
* key: NoInfer<K>,
|
|
11
|
+
* target: ReadonlyMap<K, V>,
|
|
12
|
+
* ) => boolean,
|
|
13
|
+
* ): boolean
|
|
14
|
+
* ```
|
|
15
|
+
*
|
|
16
|
+
* Tests whether all entries in the map pass the test implemented by the `predicate` function. It returns `true` if all entries pass, otherwise `false`.
|
|
17
|
+
*
|
|
18
|
+
* ## Example
|
|
19
|
+
*
|
|
20
|
+
* ```ts [data-first]
|
|
21
|
+
* import { Map } from "@monstermann/map";
|
|
22
|
+
*
|
|
23
|
+
* Map.every(
|
|
24
|
+
* new Map([
|
|
25
|
+
* ["a", 2],
|
|
26
|
+
* ["b", 4],
|
|
27
|
+
* ["c", 6],
|
|
28
|
+
* ]),
|
|
29
|
+
* (value) => value % 2 === 0,
|
|
30
|
+
* ); // true
|
|
31
|
+
* ```
|
|
32
|
+
*
|
|
33
|
+
* ```ts [data-last]
|
|
34
|
+
* import { Map } from "@monstermann/map";
|
|
35
|
+
*
|
|
36
|
+
* pipe(
|
|
37
|
+
* new Map([
|
|
38
|
+
* ["a", 2],
|
|
39
|
+
* ["b", 4],
|
|
40
|
+
* ["c", 6],
|
|
41
|
+
* ]),
|
|
42
|
+
* Map.every((value) => value % 2 === 0),
|
|
43
|
+
* ); // true
|
|
44
|
+
* ```
|
|
45
|
+
*
|
|
46
|
+
*/
|
|
47
|
+
declare const every: {
|
|
48
|
+
<K, V, U extends V>(predicate: (value: NoInfer<V>, key: NoInfer<K>, target: ReadonlyMap<K, V>) => value is U): (target: Map<K, V>) => target is Map<K, U>;
|
|
49
|
+
<K, V, U extends V>(predicate: (value: NoInfer<V>, key: NoInfer<K>, target: ReadonlyMap<K, V>) => value is U): (target: ReadonlyMap<K, V>) => target is ReadonlyMap<K, U>;
|
|
50
|
+
<K, V>(predicate: (value: NoInfer<V>, key: NoInfer<K>, target: ReadonlyMap<K, V>) => boolean): (target: Map<K, V>) => boolean;
|
|
51
|
+
<K, V>(predicate: (value: NoInfer<V>, key: NoInfer<K>, target: ReadonlyMap<K, V>) => boolean): (target: ReadonlyMap<K, V>) => boolean;
|
|
52
|
+
<K, V, U extends V>(target: Map<K, V>, predicate: (value: NoInfer<V>, key: NoInfer<K>, target: ReadonlyMap<K, V>) => value is U): target is Map<K, U>;
|
|
53
|
+
<K, V, U extends V>(target: ReadonlyMap<K, V>, predicate: (value: NoInfer<V>, key: NoInfer<K>, target: ReadonlyMap<K, V>) => value is U): target is ReadonlyMap<K, U>;
|
|
54
|
+
<K, V>(target: Map<K, V>, predicate: (value: NoInfer<V>, key: NoInfer<K>, target: ReadonlyMap<K, V>) => boolean): boolean;
|
|
55
|
+
<K, V>(target: ReadonlyMap<K, V>, predicate: (value: NoInfer<V>, key: NoInfer<K>, target: ReadonlyMap<K, V>) => boolean): boolean;
|
|
56
|
+
};
|
|
57
|
+
//#endregion
|
|
58
|
+
export { every };
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { dfdlT } from "@monstermann/dfdl";
|
|
2
|
+
|
|
3
|
+
//#region src/Map/every.ts
|
|
4
|
+
/**
|
|
5
|
+
* # every
|
|
6
|
+
*
|
|
7
|
+
* ```ts
|
|
8
|
+
* function Map.every<K, V>(
|
|
9
|
+
* target: ReadonlyMap<K, V>,
|
|
10
|
+
* predicate: (
|
|
11
|
+
* value: NoInfer<V>,
|
|
12
|
+
* key: NoInfer<K>,
|
|
13
|
+
* target: ReadonlyMap<K, V>,
|
|
14
|
+
* ) => boolean,
|
|
15
|
+
* ): boolean
|
|
16
|
+
* ```
|
|
17
|
+
*
|
|
18
|
+
* Tests whether all entries in the map pass the test implemented by the `predicate` function. It returns `true` if all entries pass, otherwise `false`.
|
|
19
|
+
*
|
|
20
|
+
* ## Example
|
|
21
|
+
*
|
|
22
|
+
* ```ts [data-first]
|
|
23
|
+
* import { Map } from "@monstermann/map";
|
|
24
|
+
*
|
|
25
|
+
* Map.every(
|
|
26
|
+
* new Map([
|
|
27
|
+
* ["a", 2],
|
|
28
|
+
* ["b", 4],
|
|
29
|
+
* ["c", 6],
|
|
30
|
+
* ]),
|
|
31
|
+
* (value) => value % 2 === 0,
|
|
32
|
+
* ); // true
|
|
33
|
+
* ```
|
|
34
|
+
*
|
|
35
|
+
* ```ts [data-last]
|
|
36
|
+
* import { Map } from "@monstermann/map";
|
|
37
|
+
*
|
|
38
|
+
* pipe(
|
|
39
|
+
* new Map([
|
|
40
|
+
* ["a", 2],
|
|
41
|
+
* ["b", 4],
|
|
42
|
+
* ["c", 6],
|
|
43
|
+
* ]),
|
|
44
|
+
* Map.every((value) => value % 2 === 0),
|
|
45
|
+
* ); // true
|
|
46
|
+
* ```
|
|
47
|
+
*
|
|
48
|
+
*/
|
|
49
|
+
const every = dfdlT(((target, predicate) => {
|
|
50
|
+
for (const [key, value] of target) if (!predicate(value, key, target)) return false;
|
|
51
|
+
return true;
|
|
52
|
+
}), 2);
|
|
53
|
+
|
|
54
|
+
//#endregion
|
|
55
|
+
export { every };
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
//#region src/Map/filter.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* # filter
|
|
4
|
+
*
|
|
5
|
+
* ```ts
|
|
6
|
+
* function Map.filter<K, V>(
|
|
7
|
+
* target: ReadonlyMap<K, V>,
|
|
8
|
+
* predicate: (
|
|
9
|
+
* value: NoInfer<V>,
|
|
10
|
+
* key: NoInfer<K>,
|
|
11
|
+
* target: ReadonlyMap<K, V>,
|
|
12
|
+
* ) => boolean,
|
|
13
|
+
* ): ReadonlyMap<K, V>
|
|
14
|
+
* ```
|
|
15
|
+
*
|
|
16
|
+
* Returns a new map containing only entries that satisfy the predicate function.
|
|
17
|
+
*
|
|
18
|
+
* ## Example
|
|
19
|
+
*
|
|
20
|
+
* ```ts [data-first]
|
|
21
|
+
* import { Map } from "@monstermann/map";
|
|
22
|
+
*
|
|
23
|
+
* Map.filter(
|
|
24
|
+
* new Map([
|
|
25
|
+
* ["a", 1],
|
|
26
|
+
* ["b", 2],
|
|
27
|
+
* ["c", 3],
|
|
28
|
+
* ]),
|
|
29
|
+
* (value) => value > 1,
|
|
30
|
+
* ); // Map(2) { "b" => 2, "c" => 3 }
|
|
31
|
+
* ```
|
|
32
|
+
*
|
|
33
|
+
* ```ts [data-last]
|
|
34
|
+
* import { Map } from "@monstermann/map";
|
|
35
|
+
*
|
|
36
|
+
* pipe(
|
|
37
|
+
* new Map([
|
|
38
|
+
* ["a", 1],
|
|
39
|
+
* ["b", 2],
|
|
40
|
+
* ["c", 3],
|
|
41
|
+
* ]),
|
|
42
|
+
* Map.filter((value) => value > 1),
|
|
43
|
+
* ); // Map(2) { "b" => 2, "c" => 3 }
|
|
44
|
+
* ```
|
|
45
|
+
*
|
|
46
|
+
*/
|
|
47
|
+
declare const filter: {
|
|
48
|
+
<K, V, U extends V>(predicate: (value: NoInfer<V>, key: NoInfer<K>, target: ReadonlyMap<K, V>) => value is U): (target: Map<K, V>) => Map<K, U>;
|
|
49
|
+
<K, V, U extends V>(predicate: (value: NoInfer<V>, key: NoInfer<K>, target: ReadonlyMap<K, V>) => value is U): (target: ReadonlyMap<K, V>) => ReadonlyMap<K, U>;
|
|
50
|
+
<K, V>(predicate: (value: NoInfer<V>, key: NoInfer<K>, target: ReadonlyMap<K, V>) => boolean): (target: Map<K, V>) => Map<K, V>;
|
|
51
|
+
<K, V>(predicate: (value: NoInfer<V>, key: NoInfer<K>, target: ReadonlyMap<K, V>) => boolean): (target: ReadonlyMap<K, V>) => ReadonlyMap<K, V>;
|
|
52
|
+
<K, V, U extends V>(target: Map<K, V>, predicate: (value: NoInfer<V>, key: NoInfer<K>, target: ReadonlyMap<K, V>) => value is U): Map<K, U>;
|
|
53
|
+
<K, V, U extends V>(target: ReadonlyMap<K, V>, predicate: (value: NoInfer<V>, key: NoInfer<K>, target: ReadonlyMap<K, V>) => value is U): ReadonlyMap<K, U>;
|
|
54
|
+
<K, V>(target: Map<K, V>, predicate: (value: NoInfer<V>, key: NoInfer<K>, target: ReadonlyMap<K, V>) => boolean): Map<K, V>;
|
|
55
|
+
<K, V>(target: ReadonlyMap<K, V>, predicate: (value: NoInfer<V>, key: NoInfer<K>, target: ReadonlyMap<K, V>) => boolean): ReadonlyMap<K, V>;
|
|
56
|
+
};
|
|
57
|
+
//#endregion
|
|
58
|
+
export { filter };
|
|
@@ -3,17 +3,28 @@ import { cloneMap } from "@monstermann/remmi";
|
|
|
3
3
|
|
|
4
4
|
//#region src/Map/filter.ts
|
|
5
5
|
/**
|
|
6
|
+
* # filter
|
|
7
|
+
*
|
|
6
8
|
* ```ts
|
|
7
|
-
* function Map.filter
|
|
9
|
+
* function Map.filter<K, V>(
|
|
10
|
+
* target: ReadonlyMap<K, V>,
|
|
11
|
+
* predicate: (
|
|
12
|
+
* value: NoInfer<V>,
|
|
13
|
+
* key: NoInfer<K>,
|
|
14
|
+
* target: ReadonlyMap<K, V>,
|
|
15
|
+
* ) => boolean,
|
|
16
|
+
* ): ReadonlyMap<K, V>
|
|
8
17
|
* ```
|
|
9
18
|
*
|
|
19
|
+
* Returns a new map containing only entries that satisfy the predicate function.
|
|
20
|
+
*
|
|
10
21
|
* ## Example
|
|
11
22
|
*
|
|
12
|
-
* ```ts
|
|
23
|
+
* ```ts [data-first]
|
|
13
24
|
* import { Map } from "@monstermann/map";
|
|
14
25
|
*
|
|
15
26
|
* Map.filter(
|
|
16
|
-
* Map
|
|
27
|
+
* new Map([
|
|
17
28
|
* ["a", 1],
|
|
18
29
|
* ["b", 2],
|
|
19
30
|
* ["c", 3],
|
|
@@ -22,11 +33,11 @@ import { cloneMap } from "@monstermann/remmi";
|
|
|
22
33
|
* ); // Map(2) { "b" => 2, "c" => 3 }
|
|
23
34
|
* ```
|
|
24
35
|
*
|
|
25
|
-
* ```ts
|
|
36
|
+
* ```ts [data-last]
|
|
26
37
|
* import { Map } from "@monstermann/map";
|
|
27
38
|
*
|
|
28
39
|
* pipe(
|
|
29
|
-
* Map
|
|
40
|
+
* new Map([
|
|
30
41
|
* ["a", 1],
|
|
31
42
|
* ["b", 2],
|
|
32
43
|
* ["c", 3],
|
|
@@ -34,6 +45,7 @@ import { cloneMap } from "@monstermann/remmi";
|
|
|
34
45
|
* Map.filter((value) => value > 1),
|
|
35
46
|
* ); // Map(2) { "b" => 2, "c" => 3 }
|
|
36
47
|
* ```
|
|
48
|
+
*
|
|
37
49
|
*/
|
|
38
50
|
const filter = dfdlT((target, predicate) => {
|
|
39
51
|
let result;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
//#region src/Map/find.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* # find
|
|
4
|
+
*
|
|
5
|
+
* ```ts
|
|
6
|
+
* function Map.find<K, V>(
|
|
7
|
+
* target: ReadonlyMap<K, V>,
|
|
8
|
+
* predicate: (
|
|
9
|
+
* value: NoInfer<V>,
|
|
10
|
+
* key: NoInfer<K>,
|
|
11
|
+
* target: ReadonlyMap<K, V>,
|
|
12
|
+
* ) => boolean,
|
|
13
|
+
* ): V | undefined
|
|
14
|
+
* ```
|
|
15
|
+
*
|
|
16
|
+
* Returns the first value in the map that satisfies the provided `predicate` function, or `undefined` if no value is found.
|
|
17
|
+
*
|
|
18
|
+
* ## Example
|
|
19
|
+
*
|
|
20
|
+
* ```ts [data-first]
|
|
21
|
+
* import { Map } from "@monstermann/map";
|
|
22
|
+
*
|
|
23
|
+
* Map.find(
|
|
24
|
+
* new Map([
|
|
25
|
+
* ["a", 1],
|
|
26
|
+
* ["b", 2],
|
|
27
|
+
* ["c", 3],
|
|
28
|
+
* ]),
|
|
29
|
+
* (value) => value > 2,
|
|
30
|
+
* ); // 3
|
|
31
|
+
* ```
|
|
32
|
+
*
|
|
33
|
+
* ```ts [data-last]
|
|
34
|
+
* import { Map } from "@monstermann/map";
|
|
35
|
+
*
|
|
36
|
+
* pipe(
|
|
37
|
+
* new Map([
|
|
38
|
+
* ["a", 1],
|
|
39
|
+
* ["b", 2],
|
|
40
|
+
* ["c", 3],
|
|
41
|
+
* ]),
|
|
42
|
+
* Map.find((value) => value > 2),
|
|
43
|
+
* ); // 3
|
|
44
|
+
* ```
|
|
45
|
+
*
|
|
46
|
+
*/
|
|
47
|
+
declare const find: {
|
|
48
|
+
<K, V, U extends V>(predicate: (value: NoInfer<V>, key: NoInfer<K>, target: ReadonlyMap<K, V>) => value is U): (target: ReadonlyMap<K, V>) => U | undefined;
|
|
49
|
+
<K, V>(predicate: (value: NoInfer<V>, key: NoInfer<K>, target: ReadonlyMap<K, V>) => boolean): (target: ReadonlyMap<K, V>) => V | undefined;
|
|
50
|
+
<K, V, U extends V>(target: ReadonlyMap<K, V>, predicate: (value: NoInfer<V>, key: NoInfer<K>, target: ReadonlyMap<K, V>) => value is U): U | undefined;
|
|
51
|
+
<K, V>(target: ReadonlyMap<K, V>, predicate: (value: NoInfer<V>, key: NoInfer<K>, target: ReadonlyMap<K, V>) => boolean): V | undefined;
|
|
52
|
+
};
|
|
53
|
+
//#endregion
|
|
54
|
+
export { find };
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { dfdlT } from "@monstermann/dfdl";
|
|
2
|
+
|
|
3
|
+
//#region src/Map/find.ts
|
|
4
|
+
/**
|
|
5
|
+
* # find
|
|
6
|
+
*
|
|
7
|
+
* ```ts
|
|
8
|
+
* function Map.find<K, V>(
|
|
9
|
+
* target: ReadonlyMap<K, V>,
|
|
10
|
+
* predicate: (
|
|
11
|
+
* value: NoInfer<V>,
|
|
12
|
+
* key: NoInfer<K>,
|
|
13
|
+
* target: ReadonlyMap<K, V>,
|
|
14
|
+
* ) => boolean,
|
|
15
|
+
* ): V | undefined
|
|
16
|
+
* ```
|
|
17
|
+
*
|
|
18
|
+
* Returns the first value in the map that satisfies the provided `predicate` function, or `undefined` if no value is found.
|
|
19
|
+
*
|
|
20
|
+
* ## Example
|
|
21
|
+
*
|
|
22
|
+
* ```ts [data-first]
|
|
23
|
+
* import { Map } from "@monstermann/map";
|
|
24
|
+
*
|
|
25
|
+
* Map.find(
|
|
26
|
+
* new Map([
|
|
27
|
+
* ["a", 1],
|
|
28
|
+
* ["b", 2],
|
|
29
|
+
* ["c", 3],
|
|
30
|
+
* ]),
|
|
31
|
+
* (value) => value > 2,
|
|
32
|
+
* ); // 3
|
|
33
|
+
* ```
|
|
34
|
+
*
|
|
35
|
+
* ```ts [data-last]
|
|
36
|
+
* import { Map } from "@monstermann/map";
|
|
37
|
+
*
|
|
38
|
+
* pipe(
|
|
39
|
+
* new Map([
|
|
40
|
+
* ["a", 1],
|
|
41
|
+
* ["b", 2],
|
|
42
|
+
* ["c", 3],
|
|
43
|
+
* ]),
|
|
44
|
+
* Map.find((value) => value > 2),
|
|
45
|
+
* ); // 3
|
|
46
|
+
* ```
|
|
47
|
+
*
|
|
48
|
+
*/
|
|
49
|
+
const find = dfdlT((target, predicate) => {
|
|
50
|
+
for (const [key, value] of target) if (predicate(value, key, target)) return value;
|
|
51
|
+
}, 2);
|
|
52
|
+
|
|
53
|
+
//#endregion
|
|
54
|
+
export { find };
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
//#region src/Map/findMap.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* # findMap
|
|
4
|
+
*
|
|
5
|
+
* ```ts
|
|
6
|
+
* function Map.findMap<K, V>(
|
|
7
|
+
* target: ReadonlyMap<K, V>,
|
|
8
|
+
* predicate: (
|
|
9
|
+
* value: NoInfer<V>,
|
|
10
|
+
* key: NoInfer<K>,
|
|
11
|
+
* target: ReadonlyMap<K, V>,
|
|
12
|
+
* ) => boolean,
|
|
13
|
+
* mapper: (
|
|
14
|
+
* value: NoInfer<V>,
|
|
15
|
+
* key: NoInfer<K>,
|
|
16
|
+
* target: ReadonlyMap<K, V>,
|
|
17
|
+
* ) => V,
|
|
18
|
+
* ): ReadonlyMap<K, V>
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* Finds the first entry in the map that satisfies the provided `predicate` function and applies the `mapper` function to it, returning a new map with the mapped value.
|
|
22
|
+
*
|
|
23
|
+
* ## Example
|
|
24
|
+
*
|
|
25
|
+
* ```ts [data-first]
|
|
26
|
+
* import { Map } from "@monstermann/map";
|
|
27
|
+
*
|
|
28
|
+
* Map.findMap(
|
|
29
|
+
* new Map([
|
|
30
|
+
* ["a", 1],
|
|
31
|
+
* ["b", 2],
|
|
32
|
+
* ["c", 3],
|
|
33
|
+
* ]),
|
|
34
|
+
* (value) => value > 1,
|
|
35
|
+
* (value) => value * 10,
|
|
36
|
+
* ); // Map(3) { "a" => 1, "b" => 20, "c" => 3 }
|
|
37
|
+
* ```
|
|
38
|
+
*
|
|
39
|
+
* ```ts [data-last]
|
|
40
|
+
* import { Map } from "@monstermann/map";
|
|
41
|
+
*
|
|
42
|
+
* pipe(
|
|
43
|
+
* new Map([
|
|
44
|
+
* ["a", 1],
|
|
45
|
+
* ["b", 2],
|
|
46
|
+
* ["c", 3],
|
|
47
|
+
* ]),
|
|
48
|
+
* Map.findMap(
|
|
49
|
+
* (value) => value > 1,
|
|
50
|
+
* (value) => value * 10,
|
|
51
|
+
* ),
|
|
52
|
+
* ); // Map(3) { "a" => 1, "b" => 20, "c" => 3 }
|
|
53
|
+
* ```
|
|
54
|
+
*
|
|
55
|
+
*/
|
|
56
|
+
declare const findMap: {
|
|
57
|
+
<K, V, U extends V>(predicate: (value: NoInfer<V>, key: NoInfer<K>, target: ReadonlyMap<K, V>) => value is U, mapper: (value: U, key: NoInfer<K>, target: ReadonlyMap<K, V>) => V): (target: Map<K, V>) => Map<K, V>;
|
|
58
|
+
<K, V, U extends V>(predicate: (value: NoInfer<V>, key: NoInfer<K>, target: ReadonlyMap<K, V>) => value is U, mapper: (value: U, key: NoInfer<K>, target: ReadonlyMap<K, V>) => V): (target: ReadonlyMap<K, V>) => ReadonlyMap<K, V>;
|
|
59
|
+
<K, V>(predicate: (value: NoInfer<V>, key: NoInfer<K>, target: ReadonlyMap<K, V>) => boolean, mapper: (value: NoInfer<V>, key: NoInfer<K>, target: ReadonlyMap<K, V>) => V): (target: Map<K, V>) => Map<K, V>;
|
|
60
|
+
<K, V>(predicate: (value: NoInfer<V>, key: NoInfer<K>, target: ReadonlyMap<K, V>) => boolean, mapper: (value: NoInfer<V>, key: NoInfer<K>, target: ReadonlyMap<K, V>) => V): (target: ReadonlyMap<K, V>) => ReadonlyMap<K, V>;
|
|
61
|
+
<K, V, U extends V>(target: Map<K, V>, predicate: (value: NoInfer<V>, key: NoInfer<K>, target: ReadonlyMap<K, V>) => value is U, mapper: (value: U, key: NoInfer<K>, target: ReadonlyMap<K, V>) => V): Map<K, V>;
|
|
62
|
+
<K, V, U extends V>(target: ReadonlyMap<K, V>, predicate: (value: NoInfer<V>, key: NoInfer<K>, target: ReadonlyMap<K, V>) => value is U, mapper: (value: U, key: NoInfer<K>, target: ReadonlyMap<K, V>) => V): ReadonlyMap<K, V>;
|
|
63
|
+
<K, V>(target: Map<K, V>, predicate: (value: NoInfer<V>, key: NoInfer<K>, target: ReadonlyMap<K, V>) => boolean, mapper: (value: NoInfer<V>, key: NoInfer<K>, target: ReadonlyMap<K, V>) => V): Map<K, V>;
|
|
64
|
+
<K, V>(target: ReadonlyMap<K, V>, predicate: (value: NoInfer<V>, key: NoInfer<K>, target: ReadonlyMap<K, V>) => boolean, mapper: (value: NoInfer<V>, key: NoInfer<K>, target: ReadonlyMap<K, V>) => V): ReadonlyMap<K, V>;
|
|
65
|
+
};
|
|
66
|
+
//#endregion
|
|
67
|
+
export { findMap };
|