@monstermann/map 0.0.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 (62) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +9 -0
  3. package/dist/Map/clone.d.ts +32 -0
  4. package/dist/Map/clone.js +33 -0
  5. package/dist/Map/compact.d.ts +40 -0
  6. package/dist/Map/compact.js +38 -0
  7. package/dist/Map/filter.d.ts +45 -0
  8. package/dist/Map/filter.js +44 -0
  9. package/dist/Map/forEach.d.ts +39 -0
  10. package/dist/Map/forEach.js +37 -0
  11. package/dist/Map/get.d.ts +50 -0
  12. package/dist/Map/get.js +52 -0
  13. package/dist/Map/getOr.d.ts +72 -0
  14. package/dist/Map/getOr.js +71 -0
  15. package/dist/Map/getOrElse.d.ts +72 -0
  16. package/dist/Map/getOrElse.js +71 -0
  17. package/dist/Map/getOrThrow.d.ts +69 -0
  18. package/dist/Map/getOrThrow.js +70 -0
  19. package/dist/Map/has.d.ts +50 -0
  20. package/dist/Map/has.js +52 -0
  21. package/dist/Map/hasAll.d.ts +54 -0
  22. package/dist/Map/hasAll.js +57 -0
  23. package/dist/Map/hasAny.d.ts +50 -0
  24. package/dist/Map/hasAny.js +53 -0
  25. package/dist/Map/hasNone.d.ts +50 -0
  26. package/dist/Map/hasNone.js +53 -0
  27. package/dist/Map/index.d.ts +35 -0
  28. package/dist/Map/index.js +61 -0
  29. package/dist/Map/internals/types.d.ts +14 -0
  30. package/dist/Map/isEmpty.d.ts +24 -0
  31. package/dist/Map/isEmpty.js +26 -0
  32. package/dist/Map/isMap.d.ts +26 -0
  33. package/dist/Map/isMap.js +28 -0
  34. package/dist/Map/isShallowEqual.d.ts +66 -0
  35. package/dist/Map/isShallowEqual.js +80 -0
  36. package/dist/Map/map.d.ts +55 -0
  37. package/dist/Map/map.js +59 -0
  38. package/dist/Map/mapEach.d.ts +39 -0
  39. package/dist/Map/mapEach.js +44 -0
  40. package/dist/Map/mapOr.d.ts +59 -0
  41. package/dist/Map/mapOr.js +63 -0
  42. package/dist/Map/mapOrElse.d.ts +67 -0
  43. package/dist/Map/mapOrElse.js +71 -0
  44. package/dist/Map/mapOrThrow.d.ts +57 -0
  45. package/dist/Map/mapOrThrow.js +61 -0
  46. package/dist/Map/reject.d.ts +45 -0
  47. package/dist/Map/reject.js +44 -0
  48. package/dist/Map/remove.d.ts +52 -0
  49. package/dist/Map/remove.js +56 -0
  50. package/dist/Map/removeAll.d.ts +56 -0
  51. package/dist/Map/removeAll.js +63 -0
  52. package/dist/Map/removeOr.d.ts +52 -0
  53. package/dist/Map/removeOr.js +58 -0
  54. package/dist/Map/removeOrElse.d.ts +55 -0
  55. package/dist/Map/removeOrElse.js +58 -0
  56. package/dist/Map/removeOrThrow.d.ts +50 -0
  57. package/dist/Map/removeOrThrow.js +56 -0
  58. package/dist/Map/set.d.ts +54 -0
  59. package/dist/Map/set.js +58 -0
  60. package/dist/index.d.ts +2 -0
  61. package/dist/index.js +3 -0
  62. package/package.json +39 -0
@@ -0,0 +1,71 @@
1
+ import { dfdlT } from "@monstermann/dfdl";
2
+
3
+ //#region src/Map/getOrElse.ts
4
+ /**
5
+ * `Map.getOrElse(map, key, orElse)`
6
+ *
7
+ * Gets the value associated with `key` from `map`, calling `orElse` with the map if the key doesn't exist or the value is nullable.
8
+ *
9
+ * ## Example
10
+ *
11
+ * ```ts
12
+ * Map.getOrElse(
13
+ * Map.create([
14
+ * ["a", 1],
15
+ * ["b", null],
16
+ * ]),
17
+ * "a",
18
+ * () => 0,
19
+ * ); // 1
20
+ *
21
+ * Map.getOrElse(
22
+ * Map.create([
23
+ * ["a", 1],
24
+ * ["b", null],
25
+ * ]),
26
+ * "b",
27
+ * () => 0,
28
+ * ); // 0
29
+ *
30
+ * Map.getOrElse(
31
+ * Map.create([
32
+ * ["a", 1],
33
+ * ["b", null],
34
+ * ]),
35
+ * "c",
36
+ * (map) => map.size,
37
+ * ); // 2
38
+ * ```
39
+ *
40
+ * ```ts
41
+ * pipe(
42
+ * Map.create([
43
+ * ["a", 1],
44
+ * ["b", null],
45
+ * ]),
46
+ * Map.getOrElse("a", () => 0),
47
+ * ); // 1
48
+ *
49
+ * pipe(
50
+ * Map.create([
51
+ * ["a", 1],
52
+ * ["b", null],
53
+ * ]),
54
+ * Map.getOrElse("b", () => 0),
55
+ * ); // 0
56
+ *
57
+ * pipe(
58
+ * Map.create([
59
+ * ["a", 1],
60
+ * ["b", null],
61
+ * ]),
62
+ * Map.getOrElse("c", (map) => map.size),
63
+ * ); // 2
64
+ * ```
65
+ */
66
+ const getOrElse = dfdlT((target, key, orElse) => {
67
+ return target.get(key) ?? orElse(target);
68
+ }, 3);
69
+
70
+ //#endregion
71
+ export { getOrElse };
@@ -0,0 +1,69 @@
1
+ import { NonNil } from "./internals/types.js";
2
+
3
+ //#region src/Map/getOrThrow.d.ts
4
+
5
+ /**
6
+ * `Map.getOrThrow(map, key)`
7
+ *
8
+ * Gets the value associated with `key` from `map`, throwing an error if the key doesn't exist or the value is nullable.
9
+ *
10
+ * ## Example
11
+ *
12
+ * ```ts
13
+ * Map.getOrThrow(
14
+ * Map.create([
15
+ * ["a", 1],
16
+ * ["b", 2],
17
+ * ]),
18
+ * "a",
19
+ * ); // 1
20
+ *
21
+ * Map.getOrThrow(
22
+ * Map.create([
23
+ * ["a", 1],
24
+ * ["b", null],
25
+ * ]),
26
+ * "b",
27
+ * ); // throws FnError
28
+ *
29
+ * Map.getOrThrow(
30
+ * Map.create([
31
+ * ["a", 1],
32
+ * ["b", 2],
33
+ * ]),
34
+ * "c",
35
+ * ); // throws FnError
36
+ * ```
37
+ *
38
+ * ```ts
39
+ * pipe(
40
+ * Map.create([
41
+ * ["a", 1],
42
+ * ["b", 2],
43
+ * ]),
44
+ * Map.getOrThrow("a"),
45
+ * ); // 1
46
+ *
47
+ * pipe(
48
+ * Map.create([
49
+ * ["a", 1],
50
+ * ["b", null],
51
+ * ]),
52
+ * Map.getOrThrow("b"),
53
+ * ); // throws FnError
54
+ *
55
+ * pipe(
56
+ * Map.create([
57
+ * ["a", 1],
58
+ * ["b", 2],
59
+ * ]),
60
+ * Map.getOrThrow("c"),
61
+ * ); // throws FnError
62
+ * ```
63
+ */
64
+ declare const getOrThrow: {
65
+ <K, V>(key: NoInfer<K>): (target: ReadonlyMap<K, V>) => NonNil<V>;
66
+ <K, V>(target: ReadonlyMap<K, V>, key: NoInfer<K>): NonNil<V>;
67
+ };
68
+ //#endregion
69
+ export { getOrThrow };
@@ -0,0 +1,70 @@
1
+ import { dfdlT } from "@monstermann/dfdl";
2
+
3
+ //#region src/Map/getOrThrow.ts
4
+ /**
5
+ * `Map.getOrThrow(map, key)`
6
+ *
7
+ * Gets the value associated with `key` from `map`, throwing an error if the key doesn't exist or the value is nullable.
8
+ *
9
+ * ## Example
10
+ *
11
+ * ```ts
12
+ * Map.getOrThrow(
13
+ * Map.create([
14
+ * ["a", 1],
15
+ * ["b", 2],
16
+ * ]),
17
+ * "a",
18
+ * ); // 1
19
+ *
20
+ * Map.getOrThrow(
21
+ * Map.create([
22
+ * ["a", 1],
23
+ * ["b", null],
24
+ * ]),
25
+ * "b",
26
+ * ); // throws FnError
27
+ *
28
+ * Map.getOrThrow(
29
+ * Map.create([
30
+ * ["a", 1],
31
+ * ["b", 2],
32
+ * ]),
33
+ * "c",
34
+ * ); // throws FnError
35
+ * ```
36
+ *
37
+ * ```ts
38
+ * pipe(
39
+ * Map.create([
40
+ * ["a", 1],
41
+ * ["b", 2],
42
+ * ]),
43
+ * Map.getOrThrow("a"),
44
+ * ); // 1
45
+ *
46
+ * pipe(
47
+ * Map.create([
48
+ * ["a", 1],
49
+ * ["b", null],
50
+ * ]),
51
+ * Map.getOrThrow("b"),
52
+ * ); // throws FnError
53
+ *
54
+ * pipe(
55
+ * Map.create([
56
+ * ["a", 1],
57
+ * ["b", 2],
58
+ * ]),
59
+ * Map.getOrThrow("c"),
60
+ * ); // throws FnError
61
+ * ```
62
+ */
63
+ const getOrThrow = dfdlT((target, key) => {
64
+ const value = target.get(key);
65
+ if (value != null) return value;
66
+ throw new Error("Map.getOrThrow: Value not found.");
67
+ }, 2);
68
+
69
+ //#endregion
70
+ export { getOrThrow };
@@ -0,0 +1,50 @@
1
+ //#region src/Map/has.d.ts
2
+ /**
3
+ * `Map.has(map, key)`
4
+ *
5
+ * Checks if `map` contains the specified `key`.
6
+ *
7
+ * ## Example
8
+ *
9
+ * ```ts
10
+ * Map.has(
11
+ * Map.create([
12
+ * ["a", 1],
13
+ * ["b", 2],
14
+ * ]),
15
+ * "a",
16
+ * ); // true
17
+ *
18
+ * Map.has(
19
+ * Map.create([
20
+ * ["a", 1],
21
+ * ["b", 2],
22
+ * ]),
23
+ * "c",
24
+ * ); // false
25
+ * ```
26
+ *
27
+ * ```ts
28
+ * pipe(
29
+ * Map.create([
30
+ * ["a", 1],
31
+ * ["b", 2],
32
+ * ]),
33
+ * Map.has("a"),
34
+ * ); // true
35
+ *
36
+ * pipe(
37
+ * Map.create([
38
+ * ["a", 1],
39
+ * ["b", 2],
40
+ * ]),
41
+ * Map.has("c"),
42
+ * ); // false
43
+ * ```
44
+ */
45
+ declare const has: {
46
+ <K, V>(key: NoInfer<K>): (target: ReadonlyMap<K, V>) => boolean;
47
+ <K, V>(target: ReadonlyMap<K, V>, key: NoInfer<K>): boolean;
48
+ };
49
+ //#endregion
50
+ export { has };
@@ -0,0 +1,52 @@
1
+ import { dfdlT } from "@monstermann/dfdl";
2
+
3
+ //#region src/Map/has.ts
4
+ /**
5
+ * `Map.has(map, key)`
6
+ *
7
+ * Checks if `map` contains the specified `key`.
8
+ *
9
+ * ## Example
10
+ *
11
+ * ```ts
12
+ * Map.has(
13
+ * Map.create([
14
+ * ["a", 1],
15
+ * ["b", 2],
16
+ * ]),
17
+ * "a",
18
+ * ); // true
19
+ *
20
+ * Map.has(
21
+ * Map.create([
22
+ * ["a", 1],
23
+ * ["b", 2],
24
+ * ]),
25
+ * "c",
26
+ * ); // false
27
+ * ```
28
+ *
29
+ * ```ts
30
+ * pipe(
31
+ * Map.create([
32
+ * ["a", 1],
33
+ * ["b", 2],
34
+ * ]),
35
+ * Map.has("a"),
36
+ * ); // true
37
+ *
38
+ * pipe(
39
+ * Map.create([
40
+ * ["a", 1],
41
+ * ["b", 2],
42
+ * ]),
43
+ * Map.has("c"),
44
+ * ); // false
45
+ * ```
46
+ */
47
+ const has = dfdlT((target, key) => {
48
+ return target.has(key);
49
+ }, 2);
50
+
51
+ //#endregion
52
+ export { has };
@@ -0,0 +1,54 @@
1
+ //#region src/Map/hasAll.d.ts
2
+ /**
3
+ * `Map.hasAll(map, keys)`
4
+ *
5
+ * Checks if `map` contains all of the specified `keys`. This function supports iterables.
6
+ *
7
+ * ## Example
8
+ *
9
+ * ```ts
10
+ * Map.hasAll(
11
+ * Map.create([
12
+ * ["a", 1],
13
+ * ["b", 2],
14
+ * ["c", 3],
15
+ * ]),
16
+ * ["a", "b"],
17
+ * ); // true
18
+ *
19
+ * Map.hasAll(
20
+ * Map.create([
21
+ * ["a", 1],
22
+ * ["b", 2],
23
+ * ["c", 3],
24
+ * ]),
25
+ * ["a", "d"],
26
+ * ); // false
27
+ * ```
28
+ *
29
+ * ```ts
30
+ * pipe(
31
+ * Map.create([
32
+ * ["a", 1],
33
+ * ["b", 2],
34
+ * ["c", 3],
35
+ * ]),
36
+ * Map.hasAll(["a", "b"]),
37
+ * ); // true
38
+ *
39
+ * pipe(
40
+ * Map.create([
41
+ * ["a", 1],
42
+ * ["b", 2],
43
+ * ["c", 3],
44
+ * ]),
45
+ * Map.hasAll(["a", "d"]),
46
+ * ); // false
47
+ * ```
48
+ */
49
+ declare const hasAll: {
50
+ <K, V>(keys: Iterable<NoInfer<K>>): (target: ReadonlyMap<K, V>) => boolean;
51
+ <K, V>(target: ReadonlyMap<K, V>, keys: Iterable<NoInfer<K>>): boolean;
52
+ };
53
+ //#endregion
54
+ export { hasAll };
@@ -0,0 +1,57 @@
1
+ import { dfdlT } from "@monstermann/dfdl";
2
+
3
+ //#region src/Map/hasAll.ts
4
+ /**
5
+ * `Map.hasAll(map, keys)`
6
+ *
7
+ * Checks if `map` contains all of the specified `keys`. This function supports iterables.
8
+ *
9
+ * ## Example
10
+ *
11
+ * ```ts
12
+ * Map.hasAll(
13
+ * Map.create([
14
+ * ["a", 1],
15
+ * ["b", 2],
16
+ * ["c", 3],
17
+ * ]),
18
+ * ["a", "b"],
19
+ * ); // true
20
+ *
21
+ * Map.hasAll(
22
+ * Map.create([
23
+ * ["a", 1],
24
+ * ["b", 2],
25
+ * ["c", 3],
26
+ * ]),
27
+ * ["a", "d"],
28
+ * ); // false
29
+ * ```
30
+ *
31
+ * ```ts
32
+ * pipe(
33
+ * Map.create([
34
+ * ["a", 1],
35
+ * ["b", 2],
36
+ * ["c", 3],
37
+ * ]),
38
+ * Map.hasAll(["a", "b"]),
39
+ * ); // true
40
+ *
41
+ * pipe(
42
+ * Map.create([
43
+ * ["a", 1],
44
+ * ["b", 2],
45
+ * ["c", 3],
46
+ * ]),
47
+ * Map.hasAll(["a", "d"]),
48
+ * ); // false
49
+ * ```
50
+ */
51
+ const hasAll = dfdlT((target, keys) => {
52
+ for (const key of keys) if (!target.has(key)) return false;
53
+ return true;
54
+ }, 2);
55
+
56
+ //#endregion
57
+ export { hasAll };
@@ -0,0 +1,50 @@
1
+ //#region src/Map/hasAny.d.ts
2
+ /**
3
+ * `Map.hasAny(map, keys)`
4
+ *
5
+ * Checks if `map` contains any of the specified `keys`. This function supports iterables.
6
+ *
7
+ * ## Example
8
+ *
9
+ * ```ts
10
+ * Map.hasAny(
11
+ * Map.create([
12
+ * ["a", 1],
13
+ * ["b", 2],
14
+ * ]),
15
+ * ["a", "c"],
16
+ * ); // true
17
+ *
18
+ * Map.hasAny(
19
+ * Map.create([
20
+ * ["a", 1],
21
+ * ["b", 2],
22
+ * ]),
23
+ * ["c", "d"],
24
+ * ); // false
25
+ * ```
26
+ *
27
+ * ```ts
28
+ * pipe(
29
+ * Map.create([
30
+ * ["a", 1],
31
+ * ["b", 2],
32
+ * ]),
33
+ * Map.hasAny(["a", "c"]),
34
+ * ); // true
35
+ *
36
+ * pipe(
37
+ * Map.create([
38
+ * ["a", 1],
39
+ * ["b", 2],
40
+ * ]),
41
+ * Map.hasAny(["c", "d"]),
42
+ * ); // false
43
+ * ```
44
+ */
45
+ declare const hasAny: {
46
+ <K, V>(keys: Iterable<NoInfer<K>>): (target: ReadonlyMap<K, V>) => boolean;
47
+ <K, V>(target: ReadonlyMap<K, V>, keys: Iterable<NoInfer<K>>): boolean;
48
+ };
49
+ //#endregion
50
+ export { hasAny };
@@ -0,0 +1,53 @@
1
+ import { dfdlT } from "@monstermann/dfdl";
2
+
3
+ //#region src/Map/hasAny.ts
4
+ /**
5
+ * `Map.hasAny(map, keys)`
6
+ *
7
+ * Checks if `map` contains any of the specified `keys`. This function supports iterables.
8
+ *
9
+ * ## Example
10
+ *
11
+ * ```ts
12
+ * Map.hasAny(
13
+ * Map.create([
14
+ * ["a", 1],
15
+ * ["b", 2],
16
+ * ]),
17
+ * ["a", "c"],
18
+ * ); // true
19
+ *
20
+ * Map.hasAny(
21
+ * Map.create([
22
+ * ["a", 1],
23
+ * ["b", 2],
24
+ * ]),
25
+ * ["c", "d"],
26
+ * ); // false
27
+ * ```
28
+ *
29
+ * ```ts
30
+ * pipe(
31
+ * Map.create([
32
+ * ["a", 1],
33
+ * ["b", 2],
34
+ * ]),
35
+ * Map.hasAny(["a", "c"]),
36
+ * ); // true
37
+ *
38
+ * pipe(
39
+ * Map.create([
40
+ * ["a", 1],
41
+ * ["b", 2],
42
+ * ]),
43
+ * Map.hasAny(["c", "d"]),
44
+ * ); // false
45
+ * ```
46
+ */
47
+ const hasAny = dfdlT((target, keys) => {
48
+ for (const key of keys) if (target.has(key)) return true;
49
+ return false;
50
+ }, 2);
51
+
52
+ //#endregion
53
+ export { hasAny };
@@ -0,0 +1,50 @@
1
+ //#region src/Map/hasNone.d.ts
2
+ /**
3
+ * `Map.hasNone(map, keys)`
4
+ *
5
+ * Checks if `map` contains none of the specified `keys`. This function supports iterables.
6
+ *
7
+ * ## Example
8
+ *
9
+ * ```ts
10
+ * Map.hasNone(
11
+ * Map.create([
12
+ * ["a", 1],
13
+ * ["b", 2],
14
+ * ]),
15
+ * ["c", "d"],
16
+ * ); // true
17
+ *
18
+ * Map.hasNone(
19
+ * Map.create([
20
+ * ["a", 1],
21
+ * ["b", 2],
22
+ * ]),
23
+ * ["a", "c"],
24
+ * ); // false
25
+ * ```
26
+ *
27
+ * ```ts
28
+ * pipe(
29
+ * Map.create([
30
+ * ["a", 1],
31
+ * ["b", 2],
32
+ * ]),
33
+ * Map.hasNone(["c", "d"]),
34
+ * ); // true
35
+ *
36
+ * pipe(
37
+ * Map.create([
38
+ * ["a", 1],
39
+ * ["b", 2],
40
+ * ]),
41
+ * Map.hasNone(["a", "c"]),
42
+ * ); // false
43
+ * ```
44
+ */
45
+ declare const hasNone: {
46
+ <K, V>(keys: Iterable<NoInfer<K>>): (target: ReadonlyMap<K, V>) => boolean;
47
+ <K, V>(target: ReadonlyMap<K, V>, keys: Iterable<NoInfer<K>>): boolean;
48
+ };
49
+ //#endregion
50
+ export { hasNone };
@@ -0,0 +1,53 @@
1
+ import { dfdlT } from "@monstermann/dfdl";
2
+
3
+ //#region src/Map/hasNone.ts
4
+ /**
5
+ * `Map.hasNone(map, keys)`
6
+ *
7
+ * Checks if `map` contains none of the specified `keys`. This function supports iterables.
8
+ *
9
+ * ## Example
10
+ *
11
+ * ```ts
12
+ * Map.hasNone(
13
+ * Map.create([
14
+ * ["a", 1],
15
+ * ["b", 2],
16
+ * ]),
17
+ * ["c", "d"],
18
+ * ); // true
19
+ *
20
+ * Map.hasNone(
21
+ * Map.create([
22
+ * ["a", 1],
23
+ * ["b", 2],
24
+ * ]),
25
+ * ["a", "c"],
26
+ * ); // false
27
+ * ```
28
+ *
29
+ * ```ts
30
+ * pipe(
31
+ * Map.create([
32
+ * ["a", 1],
33
+ * ["b", 2],
34
+ * ]),
35
+ * Map.hasNone(["c", "d"]),
36
+ * ); // true
37
+ *
38
+ * pipe(
39
+ * Map.create([
40
+ * ["a", 1],
41
+ * ["b", 2],
42
+ * ]),
43
+ * Map.hasNone(["a", "c"]),
44
+ * ); // false
45
+ * ```
46
+ */
47
+ const hasNone = dfdlT((target, keys) => {
48
+ for (const key of keys) if (target.has(key)) return false;
49
+ return true;
50
+ }, 2);
51
+
52
+ //#endregion
53
+ export { hasNone };
@@ -0,0 +1,35 @@
1
+ import { clone } from "./clone.js";
2
+ import { compact } from "./compact.js";
3
+ import { filter } from "./filter.js";
4
+ import { forEach } from "./forEach.js";
5
+ import { get } from "./get.js";
6
+ import { getOr } from "./getOr.js";
7
+ import { getOrElse } from "./getOrElse.js";
8
+ import { getOrThrow } from "./getOrThrow.js";
9
+ import { has } from "./has.js";
10
+ import { hasAll } from "./hasAll.js";
11
+ import { hasAny } from "./hasAny.js";
12
+ import { hasNone } from "./hasNone.js";
13
+ import { isEmpty } from "./isEmpty.js";
14
+ import { isMap } from "./isMap.js";
15
+ import { isShallowEqual } from "./isShallowEqual.js";
16
+ import { map } from "./map.js";
17
+ import { mapEach } from "./mapEach.js";
18
+ import { mapOr } from "./mapOr.js";
19
+ import { mapOrElse } from "./mapOrElse.js";
20
+ import { mapOrThrow } from "./mapOrThrow.js";
21
+ import { reject } from "./reject.js";
22
+ import { remove } from "./remove.js";
23
+ import { removeAll } from "./removeAll.js";
24
+ import { removeOr } from "./removeOr.js";
25
+ import { removeOrElse } from "./removeOrElse.js";
26
+ import { removeOrThrow } from "./removeOrThrow.js";
27
+ import { set } from "./set.js";
28
+
29
+ //#region src/Map/index.d.ts
30
+
31
+ declare namespace Map {
32
+ export { clone, compact, filter, forEach, get, getOr, getOrElse, getOrThrow, has, hasAll, hasAny, hasNone, isEmpty, isMap, isShallowEqual, map, mapEach, mapOr, mapOrElse, mapOrThrow, reject, remove, removeAll, removeOr, removeOrElse, removeOrThrow, set };
33
+ }
34
+ //#endregion
35
+ export { Map };