@monstermann/map 0.1.2 → 0.3.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
@@ -3,17 +3,24 @@ import { cloneMap } from "@monstermann/remmi";
3
3
 
4
4
  //#region src/Map/removeOrThrow.ts
5
5
  /**
6
+ * # removeOrThrow
7
+ *
6
8
  * ```ts
7
- * function Map.removeOrThrow(map, key)
9
+ * function Map.removeOrThrow<K, V>(
10
+ * target: ReadonlyMap<K, V>,
11
+ * key: NoInfer<K>,
12
+ * ): Map<K, V>
8
13
  * ```
9
14
  *
15
+ * Removes the specified key from the map, or throws an error if the key doesn't exist.
16
+ *
10
17
  * ## Example
11
18
  *
12
- * ```ts
19
+ * ```ts [data-first]
13
20
  * import { Map } from "@monstermann/map";
14
21
  *
15
22
  * Map.removeOrThrow(
16
- * Map.create([
23
+ * new Map([
17
24
  * ["a", 1],
18
25
  * ["b", 2],
19
26
  * ]),
@@ -21,7 +28,7 @@ import { cloneMap } from "@monstermann/remmi";
21
28
  * ); // Map(1) { "b" => 2 }
22
29
  *
23
30
  * Map.removeOrThrow(
24
- * Map.create([
31
+ * new Map([
25
32
  * ["a", 1],
26
33
  * ["b", 2],
27
34
  * ]),
@@ -29,11 +36,11 @@ import { cloneMap } from "@monstermann/remmi";
29
36
  * ); // throws FnError
30
37
  * ```
31
38
  *
32
- * ```ts
39
+ * ```ts [data-last]
33
40
  * import { Map } from "@monstermann/map";
34
41
  *
35
42
  * pipe(
36
- * Map.create([
43
+ * new Map([
37
44
  * ["a", 1],
38
45
  * ["b", 2],
39
46
  * ]),
@@ -41,13 +48,14 @@ import { cloneMap } from "@monstermann/remmi";
41
48
  * ); // Map(1) { "b" => 2 }
42
49
  *
43
50
  * pipe(
44
- * Map.create([
51
+ * new Map([
45
52
  * ["a", 1],
46
53
  * ["b", 2],
47
54
  * ]),
48
55
  * Map.removeOrThrow("c"),
49
56
  * ); // throws FnError
50
57
  * ```
58
+ *
51
59
  */
52
60
  const removeOrThrow = dfdlT((target, key) => {
53
61
  if (!target.has(key)) throw new Error("Map.removeOrThrow: Key does not exist.");
@@ -1,16 +1,24 @@
1
1
  //#region src/Map/set.d.ts
2
2
  /**
3
+ * # set
4
+ *
3
5
  * ```ts
4
- * function Map.set(map, key, value)
6
+ * function Map.set<K, V>(
7
+ * target: ReadonlyMap<K, V>,
8
+ * key: NoInfer<K>,
9
+ * value: NoInfer<V>,
10
+ * ): ReadonlyMap<K, V>
5
11
  * ```
6
12
  *
13
+ * Sets or updates the value for the specified key in the map.
14
+ *
7
15
  * ## Example
8
16
  *
9
- * ```ts
17
+ * ```ts [data-first]
10
18
  * import { Map } from "@monstermann/map";
11
19
  *
12
20
  * Map.set(
13
- * Map.create([
21
+ * new Map([
14
22
  * ["a", 1],
15
23
  * ["b", 2],
16
24
  * ]),
@@ -19,7 +27,7 @@
19
27
  * ); // Map(2) { "a" => 10, "b" => 2 }
20
28
  *
21
29
  * Map.set(
22
- * Map.create([
30
+ * new Map([
23
31
  * ["a", 1],
24
32
  * ["b", 2],
25
33
  * ]),
@@ -28,11 +36,11 @@
28
36
  * ); // Map(3) { "a" => 1, "b" => 2, "c" => 3 }
29
37
  * ```
30
38
  *
31
- * ```ts
39
+ * ```ts [data-last]
32
40
  * import { Map } from "@monstermann/map";
33
41
  *
34
42
  * pipe(
35
- * Map.create([
43
+ * new Map([
36
44
  * ["a", 1],
37
45
  * ["b", 2],
38
46
  * ]),
@@ -40,13 +48,14 @@
40
48
  * ); // Map(2) { "a" => 10, "b" => 2 }
41
49
  *
42
50
  * pipe(
43
- * Map.create([
51
+ * new Map([
44
52
  * ["a", 1],
45
53
  * ["b", 2],
46
54
  * ]),
47
55
  * Map.set("c", 3),
48
56
  * ); // Map(3) { "a" => 1, "b" => 2, "c" => 3 }
49
57
  * ```
58
+ *
50
59
  */
51
60
  declare const set: {
52
61
  <K, V>(key: NoInfer<K>, value: NoInfer<V>): (target: Map<K, V>) => Map<K, V>;
package/dist/Map/set.mjs CHANGED
@@ -3,17 +3,25 @@ import { cloneMap } from "@monstermann/remmi";
3
3
 
4
4
  //#region src/Map/set.ts
5
5
  /**
6
+ * # set
7
+ *
6
8
  * ```ts
7
- * function Map.set(map, key, value)
9
+ * function Map.set<K, V>(
10
+ * target: ReadonlyMap<K, V>,
11
+ * key: NoInfer<K>,
12
+ * value: NoInfer<V>,
13
+ * ): ReadonlyMap<K, V>
8
14
  * ```
9
15
  *
16
+ * Sets or updates the value for the specified key in the map.
17
+ *
10
18
  * ## Example
11
19
  *
12
- * ```ts
20
+ * ```ts [data-first]
13
21
  * import { Map } from "@monstermann/map";
14
22
  *
15
23
  * Map.set(
16
- * Map.create([
24
+ * new Map([
17
25
  * ["a", 1],
18
26
  * ["b", 2],
19
27
  * ]),
@@ -22,7 +30,7 @@ import { cloneMap } from "@monstermann/remmi";
22
30
  * ); // Map(2) { "a" => 10, "b" => 2 }
23
31
  *
24
32
  * Map.set(
25
- * Map.create([
33
+ * new Map([
26
34
  * ["a", 1],
27
35
  * ["b", 2],
28
36
  * ]),
@@ -31,11 +39,11 @@ import { cloneMap } from "@monstermann/remmi";
31
39
  * ); // Map(3) { "a" => 1, "b" => 2, "c" => 3 }
32
40
  * ```
33
41
  *
34
- * ```ts
42
+ * ```ts [data-last]
35
43
  * import { Map } from "@monstermann/map";
36
44
  *
37
45
  * pipe(
38
- * Map.create([
46
+ * new Map([
39
47
  * ["a", 1],
40
48
  * ["b", 2],
41
49
  * ]),
@@ -43,13 +51,14 @@ import { cloneMap } from "@monstermann/remmi";
43
51
  * ); // Map(2) { "a" => 10, "b" => 2 }
44
52
  *
45
53
  * pipe(
46
- * Map.create([
54
+ * new Map([
47
55
  * ["a", 1],
48
56
  * ["b", 2],
49
57
  * ]),
50
58
  * Map.set("c", 3),
51
59
  * ); // Map(3) { "a" => 1, "b" => 2, "c" => 3 }
52
60
  * ```
61
+ *
53
62
  */
54
63
  const set = dfdlT((target, key, value) => {
55
64
  if (target.get(key) === value) return target;
@@ -0,0 +1,52 @@
1
+ //#region src/Map/some.d.ts
2
+ /**
3
+ * # some
4
+ *
5
+ * ```ts
6
+ * function Map.some<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 at least one entry in the map satisfies the provided `predicate` function, otherwise returns `false`.
17
+ *
18
+ * ## Example
19
+ *
20
+ * ```ts [data-first]
21
+ * import { Map } from "@monstermann/map";
22
+ *
23
+ * Map.some(
24
+ * new Map([
25
+ * ["a", 1],
26
+ * ["b", 2],
27
+ * ["c", 3],
28
+ * ]),
29
+ * (value) => value > 2,
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.some((value) => value > 2),
43
+ * ); // true
44
+ * ```
45
+ *
46
+ */
47
+ declare const some: {
48
+ <K, V>(predicate: (value: NoInfer<V>, key: NoInfer<K>, target: ReadonlyMap<K, V>) => boolean): (target: ReadonlyMap<K, V>) => boolean;
49
+ <K, V>(target: ReadonlyMap<K, V>, predicate: (value: NoInfer<V>, key: NoInfer<K>, target: ReadonlyMap<K, V>) => boolean): boolean;
50
+ };
51
+ //#endregion
52
+ export { some };
@@ -0,0 +1,55 @@
1
+ import { dfdlT } from "@monstermann/dfdl";
2
+
3
+ //#region src/Map/some.ts
4
+ /**
5
+ * # some
6
+ *
7
+ * ```ts
8
+ * function Map.some<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 at least one entry in the map satisfies the provided `predicate` function, otherwise returns `false`.
19
+ *
20
+ * ## Example
21
+ *
22
+ * ```ts [data-first]
23
+ * import { Map } from "@monstermann/map";
24
+ *
25
+ * Map.some(
26
+ * new Map([
27
+ * ["a", 1],
28
+ * ["b", 2],
29
+ * ["c", 3],
30
+ * ]),
31
+ * (value) => value > 2,
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.some((value) => value > 2),
45
+ * ); // true
46
+ * ```
47
+ *
48
+ */
49
+ const some = dfdlT((target, predicate) => {
50
+ for (const [key, value] of target) if (predicate(value, key, target)) return true;
51
+ return false;
52
+ }, 2);
53
+
54
+ //#endregion
55
+ export { some };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@monstermann/map",
3
3
  "type": "module",
4
- "version": "0.1.2",
4
+ "version": "0.3.0",
5
5
  "description": "Functional utilities for maps.",
6
6
  "author": "Michael Ostermann <michaelostermann@me.com>",
7
7
  "license": "MIT",
@@ -34,6 +34,6 @@
34
34
  },
35
35
  "dependencies": {
36
36
  "@monstermann/dfdl": "^0.1.0",
37
- "@monstermann/remmi": "^0.0.0"
37
+ "@monstermann/remmi": "^0.2.0"
38
38
  }
39
39
  }
@@ -1,14 +0,0 @@
1
- //#region src/Map/internals/types.d.ts
2
- type NonNil<T> = Exclude<T, null | undefined>;
3
- interface MapGuard<K, V, U extends V> {
4
- (value: NoInfer<V>, key: NoInfer<K>, target: ReadonlyMap<K, V>): value is U;
5
- }
6
- interface MapMap<K, V, U = V> {
7
- (value: NoInfer<V>, key: NoInfer<K>, target: ReadonlyMap<K, V>): U;
8
- }
9
- type MapPredicate<K, V> = MapMap<K, V, boolean>;
10
- interface OrElse<K, V, U> {
11
- (target: ReadonlyMap<K, V>): U;
12
- }
13
- //#endregion
14
- export { MapGuard, MapMap, MapPredicate, NonNil, OrElse };