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