@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
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { clone } from "./clone.mjs";
|
|
2
|
+
import { filter } from "./filter.mjs";
|
|
3
|
+
import { compact } from "./compact.mjs";
|
|
4
|
+
import { create } from "./create.mjs";
|
|
5
|
+
import { every } from "./every.mjs";
|
|
6
|
+
import { find } from "./find.mjs";
|
|
7
|
+
import { findMap } from "./findMap.mjs";
|
|
8
|
+
import { findMapAll } from "./findMapAll.mjs";
|
|
9
|
+
import { findMapOr } from "./findMapOr.mjs";
|
|
10
|
+
import { findMapOrElse } from "./findMapOrElse.mjs";
|
|
11
|
+
import { findMapOrThrow } from "./findMapOrThrow.mjs";
|
|
12
|
+
import { findOr } from "./findOr.mjs";
|
|
13
|
+
import { findOrElse } from "./findOrElse.mjs";
|
|
14
|
+
import { findOrThrow } from "./findOrThrow.mjs";
|
|
15
|
+
import { findRemove } from "./findRemove.mjs";
|
|
16
|
+
import { findRemoveOr } from "./findRemoveOr.mjs";
|
|
17
|
+
import { findRemoveOrElse } from "./findRemoveOrElse.mjs";
|
|
18
|
+
import { findRemoveOrThrow } from "./findRemoveOrThrow.mjs";
|
|
19
|
+
import { findReplace } from "./findReplace.mjs";
|
|
20
|
+
import { findReplaceOr } from "./findReplaceOr.mjs";
|
|
21
|
+
import { findReplaceOrElse } from "./findReplaceOrElse.mjs";
|
|
22
|
+
import { findReplaceOrThrow } from "./findReplaceOrThrow.mjs";
|
|
23
|
+
import { forEach } from "./forEach.mjs";
|
|
24
|
+
import { get } from "./get.mjs";
|
|
25
|
+
import { getOr } from "./getOr.mjs";
|
|
26
|
+
import { getOrElse } from "./getOrElse.mjs";
|
|
27
|
+
import { getOrThrow } from "./getOrThrow.mjs";
|
|
28
|
+
import { has } from "./has.mjs";
|
|
29
|
+
import { hasAll } from "./hasAll.mjs";
|
|
30
|
+
import { hasAny } from "./hasAny.mjs";
|
|
31
|
+
import { hasNone } from "./hasNone.mjs";
|
|
32
|
+
import { is } from "./is.mjs";
|
|
33
|
+
import { isEmpty } from "./isEmpty.mjs";
|
|
34
|
+
import { isShallowEqual } from "./isShallowEqual.mjs";
|
|
35
|
+
import { map } from "./map.mjs";
|
|
36
|
+
import { mapEach } from "./mapEach.mjs";
|
|
37
|
+
import { mapOr } from "./mapOr.mjs";
|
|
38
|
+
import { mapOrElse } from "./mapOrElse.mjs";
|
|
39
|
+
import { mapOrThrow } from "./mapOrThrow.mjs";
|
|
40
|
+
import { none } from "./none.mjs";
|
|
41
|
+
import { reject } from "./reject.mjs";
|
|
42
|
+
import { remove } from "./remove.mjs";
|
|
43
|
+
import { removeAll } from "./removeAll.mjs";
|
|
44
|
+
import { removeOr } from "./removeOr.mjs";
|
|
45
|
+
import { removeOrElse } from "./removeOrElse.mjs";
|
|
46
|
+
import { removeOrThrow } from "./removeOrThrow.mjs";
|
|
47
|
+
import { set } from "./set.mjs";
|
|
48
|
+
import { some } from "./some.mjs";
|
|
49
|
+
|
|
50
|
+
//#region src/Map/index.js
|
|
51
|
+
const Map = {
|
|
52
|
+
clone,
|
|
53
|
+
compact,
|
|
54
|
+
create,
|
|
55
|
+
every,
|
|
56
|
+
filter,
|
|
57
|
+
find,
|
|
58
|
+
findMap,
|
|
59
|
+
findMapAll,
|
|
60
|
+
findMapOr,
|
|
61
|
+
findMapOrElse,
|
|
62
|
+
findMapOrThrow,
|
|
63
|
+
findOr,
|
|
64
|
+
findOrElse,
|
|
65
|
+
findOrThrow,
|
|
66
|
+
findRemove,
|
|
67
|
+
findRemoveOr,
|
|
68
|
+
findRemoveOrElse,
|
|
69
|
+
findRemoveOrThrow,
|
|
70
|
+
findReplace,
|
|
71
|
+
findReplaceOr,
|
|
72
|
+
findReplaceOrElse,
|
|
73
|
+
findReplaceOrThrow,
|
|
74
|
+
forEach,
|
|
75
|
+
get,
|
|
76
|
+
getOr,
|
|
77
|
+
getOrElse,
|
|
78
|
+
getOrThrow,
|
|
79
|
+
has,
|
|
80
|
+
hasAll,
|
|
81
|
+
hasAny,
|
|
82
|
+
hasNone,
|
|
83
|
+
is,
|
|
84
|
+
isEmpty,
|
|
85
|
+
isShallowEqual,
|
|
86
|
+
map,
|
|
87
|
+
mapEach,
|
|
88
|
+
mapOr,
|
|
89
|
+
mapOrElse,
|
|
90
|
+
mapOrThrow,
|
|
91
|
+
none,
|
|
92
|
+
reject,
|
|
93
|
+
remove,
|
|
94
|
+
removeAll,
|
|
95
|
+
removeOr,
|
|
96
|
+
removeOrElse,
|
|
97
|
+
removeOrThrow,
|
|
98
|
+
set,
|
|
99
|
+
some
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
//#endregion
|
|
103
|
+
export { Map };
|
|
@@ -1,26 +1,33 @@
|
|
|
1
1
|
//#region src/Map/is.d.ts
|
|
2
2
|
/**
|
|
3
|
+
* # is
|
|
4
|
+
*
|
|
3
5
|
* ```ts
|
|
4
|
-
* function Map.is(
|
|
6
|
+
* function Map.is(
|
|
7
|
+
* target: unknown,
|
|
8
|
+
* ): target is Map<unknown, unknown>
|
|
5
9
|
* ```
|
|
6
10
|
*
|
|
11
|
+
* Type guard that checks whether a value is a Map instance.
|
|
12
|
+
*
|
|
7
13
|
* ## Example
|
|
8
14
|
*
|
|
9
|
-
* ```ts
|
|
15
|
+
* ```ts [data-first]
|
|
10
16
|
* import { Map } from "@monstermann/map";
|
|
11
17
|
*
|
|
12
|
-
* Map.is(Map
|
|
18
|
+
* Map.is(new Map()); // true
|
|
13
19
|
* Map.is({}); // false
|
|
14
20
|
* Map.is([]); // false
|
|
15
21
|
* ```
|
|
16
22
|
*
|
|
17
|
-
* ```ts
|
|
23
|
+
* ```ts [data-last]
|
|
18
24
|
* import { Map } from "@monstermann/map";
|
|
19
25
|
*
|
|
20
|
-
* pipe(Map
|
|
26
|
+
* pipe(new Map(), Map.is()); // true
|
|
21
27
|
* pipe({}, Map.is()); // false
|
|
22
28
|
* pipe([], Map.is()); // false
|
|
23
29
|
* ```
|
|
30
|
+
*
|
|
24
31
|
*/
|
|
25
32
|
declare const is: {
|
|
26
33
|
(): (target: unknown) => target is Map<unknown, unknown>;
|
|
@@ -2,27 +2,34 @@ import { dfdlT } from "@monstermann/dfdl";
|
|
|
2
2
|
|
|
3
3
|
//#region src/Map/is.ts
|
|
4
4
|
/**
|
|
5
|
+
* # is
|
|
6
|
+
*
|
|
5
7
|
* ```ts
|
|
6
|
-
* function Map.is(
|
|
8
|
+
* function Map.is(
|
|
9
|
+
* target: unknown,
|
|
10
|
+
* ): target is Map<unknown, unknown>
|
|
7
11
|
* ```
|
|
8
12
|
*
|
|
13
|
+
* Type guard that checks whether a value is a Map instance.
|
|
14
|
+
*
|
|
9
15
|
* ## Example
|
|
10
16
|
*
|
|
11
|
-
* ```ts
|
|
17
|
+
* ```ts [data-first]
|
|
12
18
|
* import { Map } from "@monstermann/map";
|
|
13
19
|
*
|
|
14
|
-
* Map.is(Map
|
|
20
|
+
* Map.is(new Map()); // true
|
|
15
21
|
* Map.is({}); // false
|
|
16
22
|
* Map.is([]); // false
|
|
17
23
|
* ```
|
|
18
24
|
*
|
|
19
|
-
* ```ts
|
|
25
|
+
* ```ts [data-last]
|
|
20
26
|
* import { Map } from "@monstermann/map";
|
|
21
27
|
*
|
|
22
|
-
* pipe(Map
|
|
28
|
+
* pipe(new Map(), Map.is()); // true
|
|
23
29
|
* pipe({}, Map.is()); // false
|
|
24
30
|
* pipe([], Map.is()); // false
|
|
25
31
|
* ```
|
|
32
|
+
*
|
|
26
33
|
*/
|
|
27
34
|
const is = dfdlT((target) => {
|
|
28
35
|
return target instanceof Map;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
//#region src/Map/isEmpty.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* # isEmpty
|
|
4
|
+
*
|
|
5
|
+
* ```ts
|
|
6
|
+
* function Map.isEmpty<T, U>(target: ReadonlyMap<T, U>): boolean
|
|
7
|
+
* ```
|
|
8
|
+
*
|
|
9
|
+
* Checks whether the map is empty (contains no entries).
|
|
10
|
+
*
|
|
11
|
+
* ## Example
|
|
12
|
+
*
|
|
13
|
+
* ```ts [data-first]
|
|
14
|
+
* import { Map } from "@monstermann/map";
|
|
15
|
+
*
|
|
16
|
+
* Map.isEmpty(new Map()); // true
|
|
17
|
+
* Map.isEmpty(new Map([["a", 1]])); // false
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* ```ts [data-last]
|
|
21
|
+
* import { Map } from "@monstermann/map";
|
|
22
|
+
*
|
|
23
|
+
* pipe(new Map(), Map.isEmpty()); // true
|
|
24
|
+
* pipe(new Map([["a", 1]]), Map.isEmpty()); // false
|
|
25
|
+
* ```
|
|
26
|
+
*
|
|
27
|
+
*/
|
|
28
|
+
declare const isEmpty: {
|
|
29
|
+
(): <T, U>(target: ReadonlyMap<T, U>) => boolean;
|
|
30
|
+
<T, U>(target: ReadonlyMap<T, U>): boolean;
|
|
31
|
+
};
|
|
32
|
+
//#endregion
|
|
33
|
+
export { isEmpty };
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { dfdlT } from "@monstermann/dfdl";
|
|
2
|
+
|
|
3
|
+
//#region src/Map/isEmpty.ts
|
|
4
|
+
/**
|
|
5
|
+
* # isEmpty
|
|
6
|
+
*
|
|
7
|
+
* ```ts
|
|
8
|
+
* function Map.isEmpty<T, U>(target: ReadonlyMap<T, U>): boolean
|
|
9
|
+
* ```
|
|
10
|
+
*
|
|
11
|
+
* Checks whether the map is empty (contains no entries).
|
|
12
|
+
*
|
|
13
|
+
* ## Example
|
|
14
|
+
*
|
|
15
|
+
* ```ts [data-first]
|
|
16
|
+
* import { Map } from "@monstermann/map";
|
|
17
|
+
*
|
|
18
|
+
* Map.isEmpty(new Map()); // true
|
|
19
|
+
* Map.isEmpty(new Map([["a", 1]])); // false
|
|
20
|
+
* ```
|
|
21
|
+
*
|
|
22
|
+
* ```ts [data-last]
|
|
23
|
+
* import { Map } from "@monstermann/map";
|
|
24
|
+
*
|
|
25
|
+
* pipe(new Map(), Map.isEmpty()); // true
|
|
26
|
+
* pipe(new Map([["a", 1]]), Map.isEmpty()); // false
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
*/
|
|
30
|
+
const isEmpty = dfdlT((target) => {
|
|
31
|
+
return target.size === 0;
|
|
32
|
+
}, 1);
|
|
33
|
+
|
|
34
|
+
//#endregion
|
|
35
|
+
export { isEmpty };
|
|
@@ -1,47 +1,54 @@
|
|
|
1
1
|
//#region src/Map/isShallowEqual.d.ts
|
|
2
2
|
/**
|
|
3
|
+
* # isShallowEqual
|
|
4
|
+
*
|
|
3
5
|
* ```ts
|
|
4
|
-
* function Map.isShallowEqual
|
|
6
|
+
* function Map.isShallowEqual<K, V>(
|
|
7
|
+
* target: ReadonlyMap<K, V>,
|
|
8
|
+
* source: ReadonlyMap<NoInfer<K>, NoInfer<V>>,
|
|
9
|
+
* ): boolean
|
|
5
10
|
* ```
|
|
6
11
|
*
|
|
12
|
+
* Checks whether two maps are shallowly equal (same keys and values using strict equality).
|
|
13
|
+
*
|
|
7
14
|
* ## Example
|
|
8
15
|
*
|
|
9
|
-
* ```ts
|
|
16
|
+
* ```ts [data-first]
|
|
10
17
|
* import { Map } from "@monstermann/map";
|
|
11
18
|
*
|
|
12
19
|
* Map.isShallowEqual(
|
|
13
|
-
* Map
|
|
20
|
+
* new Map([
|
|
14
21
|
* ["a", 1],
|
|
15
22
|
* ["b", 2],
|
|
16
23
|
* ]),
|
|
17
|
-
* Map
|
|
24
|
+
* new Map([
|
|
18
25
|
* ["a", 1],
|
|
19
26
|
* ["b", 2],
|
|
20
27
|
* ]),
|
|
21
28
|
* ); // true
|
|
22
29
|
*
|
|
23
30
|
* Map.isShallowEqual(
|
|
24
|
-
* Map
|
|
31
|
+
* new Map([
|
|
25
32
|
* ["a", 1],
|
|
26
33
|
* ["b", 2],
|
|
27
34
|
* ]),
|
|
28
|
-
* Map
|
|
35
|
+
* new Map([
|
|
29
36
|
* ["a", 1],
|
|
30
37
|
* ["b", 3],
|
|
31
38
|
* ]),
|
|
32
39
|
* ); // false
|
|
33
40
|
* ```
|
|
34
41
|
*
|
|
35
|
-
* ```ts
|
|
42
|
+
* ```ts [data-last]
|
|
36
43
|
* import { Map } from "@monstermann/map";
|
|
37
44
|
*
|
|
38
45
|
* pipe(
|
|
39
|
-
* Map
|
|
46
|
+
* new Map([
|
|
40
47
|
* ["a", 1],
|
|
41
48
|
* ["b", 2],
|
|
42
49
|
* ]),
|
|
43
50
|
* Map.isShallowEqual(
|
|
44
|
-
* Map
|
|
51
|
+
* new Map([
|
|
45
52
|
* ["a", 1],
|
|
46
53
|
* ["b", 2],
|
|
47
54
|
* ]),
|
|
@@ -49,18 +56,19 @@
|
|
|
49
56
|
* ); // true
|
|
50
57
|
*
|
|
51
58
|
* pipe(
|
|
52
|
-
* Map
|
|
59
|
+
* new Map([
|
|
53
60
|
* ["a", 1],
|
|
54
61
|
* ["b", 2],
|
|
55
62
|
* ]),
|
|
56
63
|
* Map.isShallowEqual(
|
|
57
|
-
* Map
|
|
64
|
+
* new Map([
|
|
58
65
|
* ["a", 1],
|
|
59
66
|
* ["b", 3],
|
|
60
67
|
* ]),
|
|
61
68
|
* ),
|
|
62
69
|
* ); // false
|
|
63
70
|
* ```
|
|
71
|
+
*
|
|
64
72
|
*/
|
|
65
73
|
declare const isShallowEqual: {
|
|
66
74
|
<K, V>(source: ReadonlyMap<NoInfer<K>, NoInfer<V>>): (target: ReadonlyMap<K, V>) => boolean;
|
|
@@ -2,48 +2,55 @@ import { dfdlT } from "@monstermann/dfdl";
|
|
|
2
2
|
|
|
3
3
|
//#region src/Map/isShallowEqual.ts
|
|
4
4
|
/**
|
|
5
|
+
* # isShallowEqual
|
|
6
|
+
*
|
|
5
7
|
* ```ts
|
|
6
|
-
* function Map.isShallowEqual
|
|
8
|
+
* function Map.isShallowEqual<K, V>(
|
|
9
|
+
* target: ReadonlyMap<K, V>,
|
|
10
|
+
* source: ReadonlyMap<NoInfer<K>, NoInfer<V>>,
|
|
11
|
+
* ): boolean
|
|
7
12
|
* ```
|
|
8
13
|
*
|
|
14
|
+
* Checks whether two maps are shallowly equal (same keys and values using strict equality).
|
|
15
|
+
*
|
|
9
16
|
* ## Example
|
|
10
17
|
*
|
|
11
|
-
* ```ts
|
|
18
|
+
* ```ts [data-first]
|
|
12
19
|
* import { Map } from "@monstermann/map";
|
|
13
20
|
*
|
|
14
21
|
* Map.isShallowEqual(
|
|
15
|
-
* Map
|
|
22
|
+
* new Map([
|
|
16
23
|
* ["a", 1],
|
|
17
24
|
* ["b", 2],
|
|
18
25
|
* ]),
|
|
19
|
-
* Map
|
|
26
|
+
* new Map([
|
|
20
27
|
* ["a", 1],
|
|
21
28
|
* ["b", 2],
|
|
22
29
|
* ]),
|
|
23
30
|
* ); // true
|
|
24
31
|
*
|
|
25
32
|
* Map.isShallowEqual(
|
|
26
|
-
* Map
|
|
33
|
+
* new Map([
|
|
27
34
|
* ["a", 1],
|
|
28
35
|
* ["b", 2],
|
|
29
36
|
* ]),
|
|
30
|
-
* Map
|
|
37
|
+
* new Map([
|
|
31
38
|
* ["a", 1],
|
|
32
39
|
* ["b", 3],
|
|
33
40
|
* ]),
|
|
34
41
|
* ); // false
|
|
35
42
|
* ```
|
|
36
43
|
*
|
|
37
|
-
* ```ts
|
|
44
|
+
* ```ts [data-last]
|
|
38
45
|
* import { Map } from "@monstermann/map";
|
|
39
46
|
*
|
|
40
47
|
* pipe(
|
|
41
|
-
* Map
|
|
48
|
+
* new Map([
|
|
42
49
|
* ["a", 1],
|
|
43
50
|
* ["b", 2],
|
|
44
51
|
* ]),
|
|
45
52
|
* Map.isShallowEqual(
|
|
46
|
-
* Map
|
|
53
|
+
* new Map([
|
|
47
54
|
* ["a", 1],
|
|
48
55
|
* ["b", 2],
|
|
49
56
|
* ]),
|
|
@@ -51,18 +58,19 @@ import { dfdlT } from "@monstermann/dfdl";
|
|
|
51
58
|
* ); // true
|
|
52
59
|
*
|
|
53
60
|
* pipe(
|
|
54
|
-
* Map
|
|
61
|
+
* new Map([
|
|
55
62
|
* ["a", 1],
|
|
56
63
|
* ["b", 2],
|
|
57
64
|
* ]),
|
|
58
65
|
* Map.isShallowEqual(
|
|
59
|
-
* Map
|
|
66
|
+
* new Map([
|
|
60
67
|
* ["a", 1],
|
|
61
68
|
* ["b", 3],
|
|
62
69
|
* ]),
|
|
63
70
|
* ),
|
|
64
71
|
* ); // false
|
|
65
72
|
* ```
|
|
73
|
+
*
|
|
66
74
|
*/
|
|
67
75
|
const isShallowEqual = dfdlT((target, source) => {
|
|
68
76
|
if (target.size !== source.size) return false;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
//#region src/Map/map.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* # map
|
|
4
|
+
*
|
|
5
|
+
* ```ts
|
|
6
|
+
* function Map.map<K, V>(
|
|
7
|
+
* target: ReadonlyMap<K, V>,
|
|
8
|
+
* key: NoInfer<K>,
|
|
9
|
+
* transform: (
|
|
10
|
+
* value: NoInfer<V>,
|
|
11
|
+
* key: NoInfer<K>,
|
|
12
|
+
* target: ReadonlyMap<K, V>,
|
|
13
|
+
* ) => V,
|
|
14
|
+
* ): ReadonlyMap<K, V>
|
|
15
|
+
* ```
|
|
16
|
+
*
|
|
17
|
+
* Transforms the value at the specified key using the provided function. Returns the original map if the key doesn't exist.
|
|
18
|
+
*
|
|
19
|
+
* ## Example
|
|
20
|
+
*
|
|
21
|
+
* ```ts [data-first]
|
|
22
|
+
* import { Map } from "@monstermann/map";
|
|
23
|
+
*
|
|
24
|
+
* Map.map(
|
|
25
|
+
* new Map([
|
|
26
|
+
* ["a", 1],
|
|
27
|
+
* ["b", 2],
|
|
28
|
+
* ]),
|
|
29
|
+
* "a",
|
|
30
|
+
* (value) => value * 2,
|
|
31
|
+
* ); // Map(2) { "a" => 2, "b" => 2 }
|
|
32
|
+
*
|
|
33
|
+
* Map.map(
|
|
34
|
+
* new Map([
|
|
35
|
+
* ["a", 1],
|
|
36
|
+
* ["b", 2],
|
|
37
|
+
* ]),
|
|
38
|
+
* "c",
|
|
39
|
+
* (value) => value * 2,
|
|
40
|
+
* ); // Map(2) { "a" => 1, "b" => 2 }
|
|
41
|
+
* ```
|
|
42
|
+
*
|
|
43
|
+
* ```ts [data-last]
|
|
44
|
+
* import { Map } from "@monstermann/map";
|
|
45
|
+
*
|
|
46
|
+
* pipe(
|
|
47
|
+
* new Map([
|
|
48
|
+
* ["a", 1],
|
|
49
|
+
* ["b", 2],
|
|
50
|
+
* ]),
|
|
51
|
+
* Map.map("a", (value) => value * 2),
|
|
52
|
+
* ); // Map(2) { "a" => 2, "b" => 2 }
|
|
53
|
+
*
|
|
54
|
+
* pipe(
|
|
55
|
+
* new Map([
|
|
56
|
+
* ["a", 1],
|
|
57
|
+
* ["b", 2],
|
|
58
|
+
* ]),
|
|
59
|
+
* Map.map("c", (value) => value * 2),
|
|
60
|
+
* ); // Map(2) { "a" => 1, "b" => 2 }
|
|
61
|
+
* ```
|
|
62
|
+
*
|
|
63
|
+
*/
|
|
64
|
+
declare const map: {
|
|
65
|
+
<K, V>(key: NoInfer<K>, transform: (value: NoInfer<V>, key: NoInfer<K>, target: ReadonlyMap<K, V>) => V): (target: Map<K, V>) => Map<K, V>;
|
|
66
|
+
<K, V>(key: NoInfer<K>, transform: (value: NoInfer<V>, key: NoInfer<K>, target: ReadonlyMap<K, V>) => V): (target: ReadonlyMap<K, V>) => ReadonlyMap<K, V>;
|
|
67
|
+
<K, V>(target: Map<K, V>, key: NoInfer<K>, transform: (value: NoInfer<V>, key: NoInfer<K>, target: ReadonlyMap<K, V>) => V): Map<K, V>;
|
|
68
|
+
<K, V>(target: ReadonlyMap<K, V>, key: NoInfer<K>, transform: (value: NoInfer<V>, key: NoInfer<K>, target: ReadonlyMap<K, V>) => V): ReadonlyMap<K, V>;
|
|
69
|
+
};
|
|
70
|
+
//#endregion
|
|
71
|
+
export { map };
|
|
@@ -3,17 +3,29 @@ import { cloneMap } from "@monstermann/remmi";
|
|
|
3
3
|
|
|
4
4
|
//#region src/Map/map.ts
|
|
5
5
|
/**
|
|
6
|
+
* # map
|
|
7
|
+
*
|
|
6
8
|
* ```ts
|
|
7
|
-
* function Map.map
|
|
9
|
+
* function Map.map<K, V>(
|
|
10
|
+
* target: ReadonlyMap<K, V>,
|
|
11
|
+
* key: NoInfer<K>,
|
|
12
|
+
* transform: (
|
|
13
|
+
* value: NoInfer<V>,
|
|
14
|
+
* key: NoInfer<K>,
|
|
15
|
+
* target: ReadonlyMap<K, V>,
|
|
16
|
+
* ) => V,
|
|
17
|
+
* ): ReadonlyMap<K, V>
|
|
8
18
|
* ```
|
|
9
19
|
*
|
|
20
|
+
* Transforms the value at the specified key using the provided function. Returns the original map if the key doesn't exist.
|
|
21
|
+
*
|
|
10
22
|
* ## Example
|
|
11
23
|
*
|
|
12
|
-
* ```ts
|
|
24
|
+
* ```ts [data-first]
|
|
13
25
|
* import { Map } from "@monstermann/map";
|
|
14
26
|
*
|
|
15
27
|
* Map.map(
|
|
16
|
-
* Map
|
|
28
|
+
* new Map([
|
|
17
29
|
* ["a", 1],
|
|
18
30
|
* ["b", 2],
|
|
19
31
|
* ]),
|
|
@@ -22,7 +34,7 @@ import { cloneMap } from "@monstermann/remmi";
|
|
|
22
34
|
* ); // Map(2) { "a" => 2, "b" => 2 }
|
|
23
35
|
*
|
|
24
36
|
* Map.map(
|
|
25
|
-
* Map
|
|
37
|
+
* new Map([
|
|
26
38
|
* ["a", 1],
|
|
27
39
|
* ["b", 2],
|
|
28
40
|
* ]),
|
|
@@ -31,11 +43,11 @@ import { cloneMap } from "@monstermann/remmi";
|
|
|
31
43
|
* ); // Map(2) { "a" => 1, "b" => 2 }
|
|
32
44
|
* ```
|
|
33
45
|
*
|
|
34
|
-
* ```ts
|
|
46
|
+
* ```ts [data-last]
|
|
35
47
|
* import { Map } from "@monstermann/map";
|
|
36
48
|
*
|
|
37
49
|
* pipe(
|
|
38
|
-
* Map
|
|
50
|
+
* new Map([
|
|
39
51
|
* ["a", 1],
|
|
40
52
|
* ["b", 2],
|
|
41
53
|
* ]),
|
|
@@ -43,12 +55,14 @@ import { cloneMap } from "@monstermann/remmi";
|
|
|
43
55
|
* ); // Map(2) { "a" => 2, "b" => 2 }
|
|
44
56
|
*
|
|
45
57
|
* pipe(
|
|
46
|
-
* Map
|
|
58
|
+
* new Map([
|
|
47
59
|
* ["a", 1],
|
|
48
60
|
* ["b", 2],
|
|
49
61
|
* ]),
|
|
50
62
|
* Map.map("c", (value) => value * 2),
|
|
63
|
+
* ); // Map(2) { "a" => 1, "b" => 2 }
|
|
51
64
|
* ```
|
|
65
|
+
*
|
|
52
66
|
*/
|
|
53
67
|
const map = dfdlT((target, key, transform) => {
|
|
54
68
|
if (!target.has(key)) return target;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
//#region src/Map/mapEach.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* # mapEach
|
|
4
|
+
*
|
|
5
|
+
* ```ts
|
|
6
|
+
* function Map.mapEach<K, V, U>(
|
|
7
|
+
* target: ReadonlyMap<K, V>,
|
|
8
|
+
* fn: (
|
|
9
|
+
* value: NoInfer<V>,
|
|
10
|
+
* key: NoInfer<K>,
|
|
11
|
+
* target: ReadonlyMap<K, V>,
|
|
12
|
+
* ) => U,
|
|
13
|
+
* ): ReadonlyMap<K, U>
|
|
14
|
+
* ```
|
|
15
|
+
*
|
|
16
|
+
* Transforms all values in the map using the provided function.
|
|
17
|
+
*
|
|
18
|
+
* ## Example
|
|
19
|
+
*
|
|
20
|
+
* ```ts [data-first]
|
|
21
|
+
* import { Map } from "@monstermann/map";
|
|
22
|
+
*
|
|
23
|
+
* Map.mapEach(
|
|
24
|
+
* new Map([
|
|
25
|
+
* ["a", 1],
|
|
26
|
+
* ["b", 2],
|
|
27
|
+
* ]),
|
|
28
|
+
* (value, key) => value * 2,
|
|
29
|
+
* ); // Map(2) { "a" => 2, "b" => 4 }
|
|
30
|
+
* ```
|
|
31
|
+
*
|
|
32
|
+
* ```ts [data-last]
|
|
33
|
+
* import { Map } from "@monstermann/map";
|
|
34
|
+
*
|
|
35
|
+
* pipe(
|
|
36
|
+
* new Map([
|
|
37
|
+
* ["a", 1],
|
|
38
|
+
* ["b", 2],
|
|
39
|
+
* ]),
|
|
40
|
+
* Map.mapEach((value, key) => value * 2),
|
|
41
|
+
* ); // Map(2) { "a" => 2, "b" => 4 }
|
|
42
|
+
* ```
|
|
43
|
+
*
|
|
44
|
+
*/
|
|
45
|
+
declare const mapEach: {
|
|
46
|
+
<K, V, U>(fn: (value: NoInfer<V>, key: NoInfer<K>, target: ReadonlyMap<K, V>) => U): (target: Map<K, V>) => Map<K, U>;
|
|
47
|
+
<K, V, U>(fn: (value: NoInfer<V>, key: NoInfer<K>, target: ReadonlyMap<K, V>) => U): (target: ReadonlyMap<K, V>) => ReadonlyMap<K, U>;
|
|
48
|
+
<K, V, U>(target: Map<K, V>, fn: (value: NoInfer<V>, key: NoInfer<K>, target: ReadonlyMap<K, V>) => U): Map<K, U>;
|
|
49
|
+
<K, V, U>(target: ReadonlyMap<K, V>, fn: (value: NoInfer<V>, key: NoInfer<K>, target: ReadonlyMap<K, V>) => U): ReadonlyMap<K, U>;
|
|
50
|
+
};
|
|
51
|
+
//#endregion
|
|
52
|
+
export { mapEach };
|
|
@@ -3,17 +3,28 @@ import { cloneMap } from "@monstermann/remmi";
|
|
|
3
3
|
|
|
4
4
|
//#region src/Map/mapEach.ts
|
|
5
5
|
/**
|
|
6
|
+
* # mapEach
|
|
7
|
+
*
|
|
6
8
|
* ```ts
|
|
7
|
-
* function Map.mapEach
|
|
9
|
+
* function Map.mapEach<K, V, U>(
|
|
10
|
+
* target: ReadonlyMap<K, V>,
|
|
11
|
+
* fn: (
|
|
12
|
+
* value: NoInfer<V>,
|
|
13
|
+
* key: NoInfer<K>,
|
|
14
|
+
* target: ReadonlyMap<K, V>,
|
|
15
|
+
* ) => U,
|
|
16
|
+
* ): ReadonlyMap<K, U>
|
|
8
17
|
* ```
|
|
9
18
|
*
|
|
19
|
+
* Transforms all values in the map using the provided 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.mapEach(
|
|
16
|
-
* Map
|
|
27
|
+
* new Map([
|
|
17
28
|
* ["a", 1],
|
|
18
29
|
* ["b", 2],
|
|
19
30
|
* ]),
|
|
@@ -21,17 +32,18 @@ import { cloneMap } from "@monstermann/remmi";
|
|
|
21
32
|
* ); // Map(2) { "a" => 2, "b" => 4 }
|
|
22
33
|
* ```
|
|
23
34
|
*
|
|
24
|
-
* ```ts
|
|
35
|
+
* ```ts [data-last]
|
|
25
36
|
* import { Map } from "@monstermann/map";
|
|
26
37
|
*
|
|
27
38
|
* pipe(
|
|
28
|
-
* Map
|
|
39
|
+
* new Map([
|
|
29
40
|
* ["a", 1],
|
|
30
41
|
* ["b", 2],
|
|
31
42
|
* ]),
|
|
32
43
|
* Map.mapEach((value, key) => value * 2),
|
|
33
44
|
* ); // Map(2) { "a" => 2, "b" => 4 }
|
|
34
45
|
* ```
|
|
46
|
+
*
|
|
35
47
|
*/
|
|
36
48
|
const mapEach = dfdlT((target, fn) => {
|
|
37
49
|
let result;
|