@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.
Files changed (118) hide show
  1. package/README.md +2496 -0
  2. package/dist/Map/{clone.d.ts → clone.d.mts} +10 -5
  3. package/dist/Map/{clone.js → clone.mjs} +10 -5
  4. package/dist/Map/compact.d.mts +48 -0
  5. package/dist/Map/{compact.js → compact.mjs} +13 -6
  6. package/dist/Map/{create.d.ts → create.d.mts} +9 -2
  7. package/dist/Map/{create.js → 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 +58 -0
  11. package/dist/Map/{filter.js → 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 +52 -0
  47. package/dist/Map/{forEach.js → forEach.mjs} +17 -5
  48. package/dist/Map/{get.d.ts → get.d.mts} +15 -7
  49. package/dist/Map/{get.js → get.mjs} +15 -7
  50. package/dist/Map/{getOr.d.ts → getOr.d.mts} +20 -14
  51. package/dist/Map/{getOr.js → getOr.mjs} +18 -9
  52. package/dist/Map/{getOrElse.d.ts → getOrElse.d.mts} +20 -14
  53. package/dist/Map/{getOrElse.js → getOrElse.mjs} +18 -9
  54. package/dist/Map/{getOrThrow.d.ts → getOrThrow.d.mts} +19 -14
  55. package/dist/Map/{getOrThrow.js → getOrThrow.mjs} +17 -9
  56. package/dist/Map/{has.d.ts → has.d.mts} +15 -7
  57. package/dist/Map/{has.js → has.mjs} +15 -7
  58. package/dist/Map/{hasAll.d.ts → hasAll.d.mts} +15 -7
  59. package/dist/Map/{hasAll.js → hasAll.mjs} +15 -7
  60. package/dist/Map/{hasAny.d.ts → hasAny.d.mts} +15 -7
  61. package/dist/Map/{hasAny.js → hasAny.mjs} +15 -7
  62. package/dist/Map/{hasNone.d.ts → hasNone.d.mts} +15 -7
  63. package/dist/Map/{hasNone.js → hasNone.mjs} +15 -7
  64. package/dist/Map/index.d.mts +56 -0
  65. package/dist/Map/index.mjs +103 -0
  66. package/dist/Map/{is.d.ts → is.d.mts} +12 -5
  67. package/dist/Map/{is.js → is.mjs} +12 -5
  68. package/dist/Map/isEmpty.d.mts +33 -0
  69. package/dist/Map/isEmpty.mjs +35 -0
  70. package/dist/Map/{isShallowEqual.d.ts → isShallowEqual.d.mts} +19 -11
  71. package/dist/Map/{isShallowEqual.js → isShallowEqual.mjs} +19 -11
  72. package/dist/Map/map.d.mts +71 -0
  73. package/dist/Map/{map.js → map.mjs} +21 -7
  74. package/dist/Map/mapEach.d.mts +52 -0
  75. package/dist/Map/{mapEach.js → mapEach.mjs} +17 -5
  76. package/dist/Map/mapOr.d.mts +74 -0
  77. package/dist/Map/{mapOr.js → mapOr.mjs} +21 -7
  78. package/dist/Map/mapOrElse.d.mts +82 -0
  79. package/dist/Map/{mapOrElse.js → mapOrElse.mjs} +21 -7
  80. package/dist/Map/mapOrThrow.d.mts +71 -0
  81. package/dist/Map/{mapOrThrow.js → 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 +58 -0
  85. package/dist/Map/{reject.js → reject.mjs} +17 -5
  86. package/dist/Map/{remove.d.ts → remove.d.mts} +15 -7
  87. package/dist/Map/{remove.js → remove.mjs} +15 -7
  88. package/dist/Map/{removeAll.d.ts → removeAll.d.mts} +15 -7
  89. package/dist/Map/{removeAll.js → removeAll.mjs} +15 -7
  90. package/dist/Map/{removeOr.d.ts → removeOr.d.mts} +16 -7
  91. package/dist/Map/{removeOr.js → removeOr.mjs} +16 -7
  92. package/dist/Map/{removeOrElse.d.ts → removeOrElse.d.mts} +18 -12
  93. package/dist/Map/{removeOrElse.js → removeOrElse.mjs} +16 -7
  94. package/dist/Map/{removeOrThrow.d.ts → removeOrThrow.d.mts} +15 -7
  95. package/dist/Map/{removeOrThrow.js → removeOrThrow.mjs} +15 -7
  96. package/dist/Map/{set.d.ts → set.d.mts} +16 -7
  97. package/dist/Map/{set.js → set.mjs} +16 -7
  98. package/dist/Map/some.d.mts +52 -0
  99. package/dist/Map/some.mjs +55 -0
  100. package/dist/index.d.mts +2 -0
  101. package/dist/index.mjs +3 -0
  102. package/package.json +2 -2
  103. package/dist/Map/compact.d.ts +0 -44
  104. package/dist/Map/filter.d.ts +0 -49
  105. package/dist/Map/forEach.d.ts +0 -43
  106. package/dist/Map/index.d.ts +0 -36
  107. package/dist/Map/index.js +0 -63
  108. package/dist/Map/internals/types.d.ts +0 -14
  109. package/dist/Map/isEmpty.d.ts +0 -28
  110. package/dist/Map/isEmpty.js +0 -30
  111. package/dist/Map/map.d.ts +0 -60
  112. package/dist/Map/mapEach.d.ts +0 -43
  113. package/dist/Map/mapOr.d.ts +0 -63
  114. package/dist/Map/mapOrElse.d.ts +0 -71
  115. package/dist/Map/mapOrThrow.d.ts +0 -61
  116. package/dist/Map/reject.d.ts +0 -49
  117. package/dist/index.d.ts +0 -2
  118. package/dist/index.js +0 -3
@@ -0,0 +1,74 @@
1
+ //#region src/Map/mapOr.d.ts
2
+ /**
3
+ * # mapOr
4
+ *
5
+ * ```ts
6
+ * function Map.mapOr<K, V, U>(
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
+ * or: U,
15
+ * ): ReadonlyMap<K, V> | U
16
+ * ```
17
+ *
18
+ * Transforms the value at the specified key using the provided function, or returns the fallback value if the key doesn't exist.
19
+ *
20
+ * ## Example
21
+ *
22
+ * ```ts [data-first]
23
+ * import { Map } from "@monstermann/map";
24
+ *
25
+ * Map.mapOr(
26
+ * new Map([
27
+ * ["a", 1],
28
+ * ["b", 2],
29
+ * ]),
30
+ * "a",
31
+ * (value) => value * 2,
32
+ * null,
33
+ * ); // Map(2) { "a" => 2, "b" => 2 }
34
+ *
35
+ * Map.mapOr(
36
+ * new Map([
37
+ * ["a", 1],
38
+ * ["b", 2],
39
+ * ]),
40
+ * "c",
41
+ * (value) => value * 2,
42
+ * null,
43
+ * ); // null
44
+ * ```
45
+ *
46
+ * ```ts [data-last]
47
+ * import { Map } from "@monstermann/map";
48
+ *
49
+ * pipe(
50
+ * new Map([
51
+ * ["a", 1],
52
+ * ["b", 2],
53
+ * ]),
54
+ * Map.mapOr("a", (value) => value * 2, null),
55
+ * ); // Map(2) { "a" => 2, "b" => 2 }
56
+ *
57
+ * pipe(
58
+ * new Map([
59
+ * ["a", 1],
60
+ * ["b", 2],
61
+ * ]),
62
+ * Map.mapOr("c", (value) => value * 2, null),
63
+ * ); // null
64
+ * ```
65
+ *
66
+ */
67
+ declare const mapOr: {
68
+ <K, V, U>(key: NoInfer<K>, transform: (value: NoInfer<V>, key: NoInfer<K>, target: ReadonlyMap<K, V>) => V, or: U): (target: Map<K, V>) => Map<K, V> | U;
69
+ <K, V, U>(key: NoInfer<K>, transform: (value: NoInfer<V>, key: NoInfer<K>, target: ReadonlyMap<K, V>) => V, or: U): (target: ReadonlyMap<K, V>) => ReadonlyMap<K, V> | U;
70
+ <K, V, U>(target: Map<K, V>, key: NoInfer<K>, transform: (value: NoInfer<V>, key: NoInfer<K>, target: ReadonlyMap<K, V>) => V, or: U): Map<K, V> | U;
71
+ <K, V, U>(target: ReadonlyMap<K, V>, key: NoInfer<K>, transform: (value: NoInfer<V>, key: NoInfer<K>, target: ReadonlyMap<K, V>) => V, or: U): ReadonlyMap<K, V> | U;
72
+ };
73
+ //#endregion
74
+ export { mapOr };
@@ -3,17 +3,30 @@ import { cloneMap } from "@monstermann/remmi";
3
3
 
4
4
  //#region src/Map/mapOr.ts
5
5
  /**
6
+ * # mapOr
7
+ *
6
8
  * ```ts
7
- * function Map.mapOr(map, key, transform, or)
9
+ * function Map.mapOr<K, V, U>(
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
+ * or: U,
18
+ * ): ReadonlyMap<K, V> | U
8
19
  * ```
9
20
  *
21
+ * Transforms the value at the specified key using the provided function, or returns the fallback value if the key doesn't exist.
22
+ *
10
23
  * ## Example
11
24
  *
12
- * ```ts
25
+ * ```ts [data-first]
13
26
  * import { Map } from "@monstermann/map";
14
27
  *
15
28
  * Map.mapOr(
16
- * Map.create([
29
+ * new Map([
17
30
  * ["a", 1],
18
31
  * ["b", 2],
19
32
  * ]),
@@ -23,7 +36,7 @@ import { cloneMap } from "@monstermann/remmi";
23
36
  * ); // Map(2) { "a" => 2, "b" => 2 }
24
37
  *
25
38
  * Map.mapOr(
26
- * Map.create([
39
+ * new Map([
27
40
  * ["a", 1],
28
41
  * ["b", 2],
29
42
  * ]),
@@ -33,11 +46,11 @@ import { cloneMap } from "@monstermann/remmi";
33
46
  * ); // null
34
47
  * ```
35
48
  *
36
- * ```ts
49
+ * ```ts [data-last]
37
50
  * import { Map } from "@monstermann/map";
38
51
  *
39
52
  * pipe(
40
- * Map.create([
53
+ * new Map([
41
54
  * ["a", 1],
42
55
  * ["b", 2],
43
56
  * ]),
@@ -45,13 +58,14 @@ import { cloneMap } from "@monstermann/remmi";
45
58
  * ); // Map(2) { "a" => 2, "b" => 2 }
46
59
  *
47
60
  * pipe(
48
- * Map.create([
61
+ * new Map([
49
62
  * ["a", 1],
50
63
  * ["b", 2],
51
64
  * ]),
52
65
  * Map.mapOr("c", (value) => value * 2, null),
53
66
  * ); // null
54
67
  * ```
68
+ *
55
69
  */
56
70
  const mapOr = dfdlT((target, key, transform, or) => {
57
71
  if (!target.has(key)) return or;
@@ -0,0 +1,82 @@
1
+ //#region src/Map/mapOrElse.d.ts
2
+ /**
3
+ * # mapOrElse
4
+ *
5
+ * ```ts
6
+ * function Map.mapOrElse<K, V, U>(
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
+ * orElse: (target: ReadonlyMap<K, V>) => U,
15
+ * ): ReadonlyMap<K, V> | U
16
+ * ```
17
+ *
18
+ * Transforms the value at the specified key using the provided function, or calls the fallback function if the key doesn't exist.
19
+ *
20
+ * ## Example
21
+ *
22
+ * ```ts [data-first]
23
+ * import { Map } from "@monstermann/map";
24
+ *
25
+ * Map.mapOrElse(
26
+ * new Map([
27
+ * ["a", 1],
28
+ * ["b", 2],
29
+ * ]),
30
+ * "a",
31
+ * (value) => value * 2,
32
+ * () => null,
33
+ * ); // Map(2) { "a" => 2, "b" => 2 }
34
+ *
35
+ * Map.mapOrElse(
36
+ * new Map([
37
+ * ["a", 1],
38
+ * ["b", 2],
39
+ * ]),
40
+ * "c",
41
+ * (value) => value * 2,
42
+ * (map) => map.size,
43
+ * ); // 2
44
+ * ```
45
+ *
46
+ * ```ts [data-last]
47
+ * import { Map } from "@monstermann/map";
48
+ *
49
+ * pipe(
50
+ * new Map([
51
+ * ["a", 1],
52
+ * ["b", 2],
53
+ * ]),
54
+ * Map.mapOrElse(
55
+ * "a",
56
+ * (value) => value * 2,
57
+ * () => null,
58
+ * ),
59
+ * ); // Map(2) { "a" => 2, "b" => 2 }
60
+ *
61
+ * pipe(
62
+ * new Map([
63
+ * ["a", 1],
64
+ * ["b", 2],
65
+ * ]),
66
+ * Map.mapOrElse(
67
+ * "c",
68
+ * (value) => value * 2,
69
+ * (map) => map.size,
70
+ * ),
71
+ * ); // 2
72
+ * ```
73
+ *
74
+ */
75
+ declare const mapOrElse: {
76
+ <K, V, U>(key: NoInfer<K>, transform: (value: NoInfer<V>, key: NoInfer<K>, target: ReadonlyMap<K, V>) => V, orElse: (target: ReadonlyMap<K, V>) => U): (target: Map<K, V>) => Map<K, V> | U;
77
+ <K, V, U>(key: NoInfer<K>, transform: (value: NoInfer<V>, key: NoInfer<K>, target: ReadonlyMap<K, V>) => V, orElse: (target: ReadonlyMap<K, V>) => U): (target: ReadonlyMap<K, V>) => ReadonlyMap<K, V> | U;
78
+ <K, V, U>(target: Map<K, V>, key: NoInfer<K>, transform: (value: NoInfer<V>, key: NoInfer<K>, target: ReadonlyMap<K, V>) => V, orElse: (target: ReadonlyMap<K, V>) => U): Map<K, V> | U;
79
+ <K, V, U>(target: ReadonlyMap<K, V>, key: NoInfer<K>, transform: (value: NoInfer<V>, key: NoInfer<K>, target: ReadonlyMap<K, V>) => V, orElse: (target: ReadonlyMap<K, V>) => U): ReadonlyMap<K, V> | U;
80
+ };
81
+ //#endregion
82
+ export { mapOrElse };
@@ -3,17 +3,30 @@ import { cloneMap } from "@monstermann/remmi";
3
3
 
4
4
  //#region src/Map/mapOrElse.ts
5
5
  /**
6
+ * # mapOrElse
7
+ *
6
8
  * ```ts
7
- * function Map.mapOrElse(map, key, transform, orElse)
9
+ * function Map.mapOrElse<K, V, U>(
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
+ * orElse: (target: ReadonlyMap<K, V>) => U,
18
+ * ): ReadonlyMap<K, V> | U
8
19
  * ```
9
20
  *
21
+ * Transforms the value at the specified key using the provided function, or calls the fallback function if the key doesn't exist.
22
+ *
10
23
  * ## Example
11
24
  *
12
- * ```ts
25
+ * ```ts [data-first]
13
26
  * import { Map } from "@monstermann/map";
14
27
  *
15
28
  * Map.mapOrElse(
16
- * Map.create([
29
+ * new Map([
17
30
  * ["a", 1],
18
31
  * ["b", 2],
19
32
  * ]),
@@ -23,7 +36,7 @@ import { cloneMap } from "@monstermann/remmi";
23
36
  * ); // Map(2) { "a" => 2, "b" => 2 }
24
37
  *
25
38
  * Map.mapOrElse(
26
- * Map.create([
39
+ * new Map([
27
40
  * ["a", 1],
28
41
  * ["b", 2],
29
42
  * ]),
@@ -33,11 +46,11 @@ import { cloneMap } from "@monstermann/remmi";
33
46
  * ); // 2
34
47
  * ```
35
48
  *
36
- * ```ts
49
+ * ```ts [data-last]
37
50
  * import { Map } from "@monstermann/map";
38
51
  *
39
52
  * pipe(
40
- * Map.create([
53
+ * new Map([
41
54
  * ["a", 1],
42
55
  * ["b", 2],
43
56
  * ]),
@@ -49,7 +62,7 @@ import { cloneMap } from "@monstermann/remmi";
49
62
  * ); // Map(2) { "a" => 2, "b" => 2 }
50
63
  *
51
64
  * pipe(
52
- * Map.create([
65
+ * new Map([
53
66
  * ["a", 1],
54
67
  * ["b", 2],
55
68
  * ]),
@@ -60,6 +73,7 @@ import { cloneMap } from "@monstermann/remmi";
60
73
  * ),
61
74
  * ); // 2
62
75
  * ```
76
+ *
63
77
  */
64
78
  const mapOrElse = dfdlT((target, key, transform, orElse) => {
65
79
  if (!target.has(key)) return orElse(target);
@@ -0,0 +1,71 @@
1
+ //#region src/Map/mapOrThrow.d.ts
2
+ /**
3
+ * # mapOrThrow
4
+ *
5
+ * ```ts
6
+ * function Map.mapOrThrow<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, or throws an error if the key doesn't exist.
18
+ *
19
+ * ## Example
20
+ *
21
+ * ```ts [data-first]
22
+ * import { Map } from "@monstermann/map";
23
+ *
24
+ * Map.mapOrThrow(
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.mapOrThrow(
34
+ * new Map([
35
+ * ["a", 1],
36
+ * ["b", 2],
37
+ * ]),
38
+ * "c",
39
+ * (value) => value * 2,
40
+ * ); // throws FnError
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.mapOrThrow("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.mapOrThrow("c", (value) => value * 2),
60
+ * ); // throws FnError
61
+ * ```
62
+ *
63
+ */
64
+ declare const mapOrThrow: {
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 { mapOrThrow };
@@ -3,17 +3,29 @@ import { cloneMap } from "@monstermann/remmi";
3
3
 
4
4
  //#region src/Map/mapOrThrow.ts
5
5
  /**
6
+ * # mapOrThrow
7
+ *
6
8
  * ```ts
7
- * function Map.mapOrThrow(map, key, transform)
9
+ * function Map.mapOrThrow<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, or throws an error 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.mapOrThrow(
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.mapOrThrow(
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
  * ); // throws FnError
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,13 +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.mapOrThrow("c", (value) => value * 2),
51
63
  * ); // throws FnError
52
64
  * ```
65
+ *
53
66
  */
54
67
  const mapOrThrow = dfdlT((target, key, transform) => {
55
68
  if (!target.has(key)) throw new Error("Map.mapOrThrow: Key does not exist.");
@@ -0,0 +1,58 @@
1
+ //#region src/Map/none.d.ts
2
+ /**
3
+ * # none
4
+ *
5
+ * ```ts
6
+ * function Map.none<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
+ * Returns `true` if no entries in the map satisfy the provided `predicate` function, otherwise returns `false`.
17
+ *
18
+ * ## Example
19
+ *
20
+ * ```ts [data-first]
21
+ * import { Map } from "@monstermann/map";
22
+ *
23
+ * Map.none(
24
+ * new Map([
25
+ * ["a", 1],
26
+ * ["b", 2],
27
+ * ["c", 3],
28
+ * ]),
29
+ * (value) => value > 10,
30
+ * ); // true
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.none((value) => value > 10),
43
+ * ); // true
44
+ * ```
45
+ *
46
+ */
47
+ declare const none: {
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, Exclude<V, 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, Exclude<V, 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, Exclude<V, 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, Exclude<V, 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 { none };
@@ -0,0 +1,55 @@
1
+ import { dfdlT } from "@monstermann/dfdl";
2
+
3
+ //#region src/Map/none.ts
4
+ /**
5
+ * # none
6
+ *
7
+ * ```ts
8
+ * function Map.none<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
+ * Returns `true` if no entries in the map satisfy the provided `predicate` function, otherwise returns `false`.
19
+ *
20
+ * ## Example
21
+ *
22
+ * ```ts [data-first]
23
+ * import { Map } from "@monstermann/map";
24
+ *
25
+ * Map.none(
26
+ * new Map([
27
+ * ["a", 1],
28
+ * ["b", 2],
29
+ * ["c", 3],
30
+ * ]),
31
+ * (value) => value > 10,
32
+ * ); // true
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.none((value) => value > 10),
45
+ * ); // true
46
+ * ```
47
+ *
48
+ */
49
+ const none = 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 { none };
@@ -0,0 +1,58 @@
1
+ //#region src/Map/reject.d.ts
2
+ /**
3
+ * # reject
4
+ *
5
+ * ```ts
6
+ * function Map.reject<K, V>(
7
+ * target: ReadonlyMap<K, V>,
8
+ * by: (
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 excluding entries that satisfy the predicate function.
17
+ *
18
+ * ## Example
19
+ *
20
+ * ```ts [data-first]
21
+ * import { Map } from "@monstermann/map";
22
+ *
23
+ * Map.reject(
24
+ * new Map([
25
+ * ["a", 1],
26
+ * ["b", 2],
27
+ * ["c", 3],
28
+ * ]),
29
+ * (value) => value > 1,
30
+ * ); // Map(1) { "a" => 1 }
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.reject((value) => value > 1),
43
+ * ); // Map(1) { "a" => 1 }
44
+ * ```
45
+ *
46
+ */
47
+ declare const reject: {
48
+ <K, V, U extends V>(by: (value: NoInfer<V>, key: NoInfer<K>, target: ReadonlyMap<K, V>) => value is U): (target: Map<K, V>) => Map<K, Exclude<V, U>>;
49
+ <K, V, U extends V>(by: (value: NoInfer<V>, key: NoInfer<K>, target: ReadonlyMap<K, V>) => value is U): (target: ReadonlyMap<K, V>) => ReadonlyMap<K, Exclude<V, U>>;
50
+ <K, V>(by: (value: NoInfer<V>, key: NoInfer<K>, target: ReadonlyMap<K, V>) => boolean): (target: Map<K, V>) => Map<K, V>;
51
+ <K, V>(by: (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>, by: (value: NoInfer<V>, key: NoInfer<K>, target: ReadonlyMap<K, V>) => value is U): Map<K, Exclude<V, U>>;
53
+ <K, V, U extends V>(target: ReadonlyMap<K, V>, by: (value: NoInfer<V>, key: NoInfer<K>, target: ReadonlyMap<K, V>) => value is U): ReadonlyMap<K, Exclude<V, U>>;
54
+ <K, V>(target: Map<K, V>, by: (value: NoInfer<V>, key: NoInfer<K>, target: ReadonlyMap<K, V>) => boolean): Map<K, V>;
55
+ <K, V>(target: ReadonlyMap<K, V>, by: (value: NoInfer<V>, key: NoInfer<K>, target: ReadonlyMap<K, V>) => boolean): ReadonlyMap<K, V>;
56
+ };
57
+ //#endregion
58
+ export { reject };
@@ -3,17 +3,28 @@ import { cloneMap } from "@monstermann/remmi";
3
3
 
4
4
  //#region src/Map/reject.ts
5
5
  /**
6
+ * # reject
7
+ *
6
8
  * ```ts
7
- * function Map.reject(map, by)
9
+ * function Map.reject<K, V>(
10
+ * target: ReadonlyMap<K, V>,
11
+ * by: (
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 excluding 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.reject(
16
- * Map.create([
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(1) { "a" => 1 }
23
34
  * ```
24
35
  *
25
- * ```ts
36
+ * ```ts [data-last]
26
37
  * import { Map } from "@monstermann/map";
27
38
  *
28
39
  * pipe(
29
- * Map.create([
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.reject((value) => value > 1),
35
46
  * ); // Map(1) { "a" => 1 }
36
47
  * ```
48
+ *
37
49
  */
38
50
  const reject = dfdlT((target, by) => {
39
51
  let result;