ts-data-forge 14.6.2 → 14.6.3

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 (182) hide show
  1. package/dist/array/impl/array-utils-creation.mjs +103 -103
  2. package/dist/array/impl/array-utils-element-access.mjs +46 -46
  3. package/dist/array/impl/array-utils-iterators.mjs +54 -54
  4. package/dist/array/impl/array-utils-length-bounded-array-cast.mjs +49 -49
  5. package/dist/array/impl/array-utils-length-bounded-array-guard.mjs +40 -40
  6. package/dist/array/impl/array-utils-length-bounded-tuple-cast.mjs +42 -42
  7. package/dist/array/impl/array-utils-length-bounded-tuple-guard.mjs +46 -46
  8. package/dist/array/impl/array-utils-modification.mjs +4 -4
  9. package/dist/array/impl/array-utils-reducing-value.mjs +11 -11
  10. package/dist/array/impl/array-utils-search.mjs +6 -6
  11. package/dist/array/impl/array-utils-set-op.mjs +116 -116
  12. package/dist/array/impl/array-utils-size.mjs +6 -6
  13. package/dist/array/impl/array-utils-slice-clamped.mjs +1 -1
  14. package/dist/array/impl/array-utils-slicing.mjs +56 -56
  15. package/dist/array/impl/array-utils-transformation.mjs +156 -156
  16. package/dist/array/impl/array-utils-validation.mjs +36 -36
  17. package/dist/collections/imap-mapped.mjs +195 -195
  18. package/dist/collections/imap.mjs +143 -143
  19. package/dist/collections/iset-mapped.mjs +320 -320
  20. package/dist/collections/iset.mjs +207 -207
  21. package/dist/collections/queue.mjs +130 -130
  22. package/dist/collections/stack.mjs +125 -125
  23. package/dist/expect-type.mjs +68 -68
  24. package/dist/functional/async-result/impl/async-result-flat-map.mjs +3 -3
  25. package/dist/functional/async-result/impl/async-result-map-err.mjs +2 -2
  26. package/dist/functional/async-result/impl/async-result-map.mjs +2 -2
  27. package/dist/functional/async-result/impl/async-result-unwrap-or.mjs +31 -31
  28. package/dist/functional/optional/impl/optional-expect-to-be.mjs +1 -1
  29. package/dist/functional/optional/impl/optional-filter.mjs +1 -1
  30. package/dist/functional/optional/impl/optional-flat-map.mjs +1 -1
  31. package/dist/functional/optional/impl/optional-from-nullable.mjs +24 -24
  32. package/dist/functional/optional/impl/optional-is-none.mjs +19 -19
  33. package/dist/functional/optional/impl/optional-is-optional.mjs +18 -18
  34. package/dist/functional/optional/impl/optional-is-some.mjs +20 -20
  35. package/dist/functional/optional/impl/optional-map.mjs +2 -2
  36. package/dist/functional/optional/impl/optional-match.mjs +2 -2
  37. package/dist/functional/optional/impl/optional-none.mjs +16 -16
  38. package/dist/functional/optional/impl/optional-or-else.mjs +1 -1
  39. package/dist/functional/optional/impl/optional-some.mjs +19 -19
  40. package/dist/functional/optional/impl/optional-to-nullable.mjs +26 -26
  41. package/dist/functional/optional/impl/optional-unwrap-or.mjs +1 -1
  42. package/dist/functional/optional/impl/optional-unwrap-throw.mjs +28 -28
  43. package/dist/functional/optional/impl/optional-unwrap.mjs +1 -1
  44. package/dist/functional/optional/impl/optional-zip.mjs +32 -32
  45. package/dist/functional/optional/impl/tag.mjs +1 -1
  46. package/dist/functional/pipe.mjs +19 -19
  47. package/dist/functional/result/impl/result-err.mjs +25 -25
  48. package/dist/functional/result/impl/result-expect-to-be.mjs +2 -2
  49. package/dist/functional/result/impl/result-flat-map.mjs +4 -4
  50. package/dist/functional/result/impl/result-fold.mjs +4 -4
  51. package/dist/functional/result/impl/result-from-optional.mjs +2 -2
  52. package/dist/functional/result/impl/result-from-promise.mjs +34 -34
  53. package/dist/functional/result/impl/result-from-throwable.mjs +29 -29
  54. package/dist/functional/result/impl/result-is-err.mjs +19 -19
  55. package/dist/functional/result/impl/result-is-ok.mjs +19 -19
  56. package/dist/functional/result/impl/result-is-result.mjs +19 -19
  57. package/dist/functional/result/impl/result-map-err.mjs +4 -4
  58. package/dist/functional/result/impl/result-map.mjs +4 -4
  59. package/dist/functional/result/impl/result-match.mjs +3 -3
  60. package/dist/functional/result/impl/result-ok.mjs +25 -25
  61. package/dist/functional/result/impl/result-or-else.mjs +2 -2
  62. package/dist/functional/result/impl/result-safe-try.mjs +15 -15
  63. package/dist/functional/result/impl/result-safe-unwrap.mjs +33 -33
  64. package/dist/functional/result/impl/result-swap.mjs +20 -20
  65. package/dist/functional/result/impl/result-to-optional.mjs +27 -27
  66. package/dist/functional/result/impl/result-unwrap-err-or.mjs +2 -2
  67. package/dist/functional/result/impl/result-unwrap-err-throw.mjs +31 -31
  68. package/dist/functional/result/impl/result-unwrap-err.mjs +30 -30
  69. package/dist/functional/result/impl/result-unwrap-ok-or.mjs +2 -2
  70. package/dist/functional/result/impl/result-unwrap-ok.mjs +1 -1
  71. package/dist/functional/result/impl/result-unwrap-throw.mjs +31 -31
  72. package/dist/functional/result/impl/result-zip.mjs +29 -29
  73. package/dist/functional/result/impl/tag.mjs +1 -1
  74. package/dist/functional/ternary-result/impl/tag.mjs +2 -2
  75. package/dist/functional/ternary-result/impl/ternary-result-err.mjs +13 -13
  76. package/dist/functional/ternary-result/impl/ternary-result-flat-map.mjs +4 -4
  77. package/dist/functional/ternary-result/impl/ternary-result-fold.mjs +4 -4
  78. package/dist/functional/ternary-result/impl/ternary-result-from-promise.mjs +18 -18
  79. package/dist/functional/ternary-result/impl/ternary-result-from-throwable.mjs +17 -17
  80. package/dist/functional/ternary-result/impl/ternary-result-is-err.mjs +17 -17
  81. package/dist/functional/ternary-result/impl/ternary-result-is-ok.mjs +19 -19
  82. package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.mjs +19 -19
  83. package/dist/functional/ternary-result/impl/ternary-result-is-warn.mjs +18 -18
  84. package/dist/functional/ternary-result/impl/ternary-result-map-err.mjs +2 -2
  85. package/dist/functional/ternary-result/impl/ternary-result-map-warn.mjs +3 -3
  86. package/dist/functional/ternary-result/impl/ternary-result-map.mjs +4 -4
  87. package/dist/functional/ternary-result/impl/ternary-result-ok.mjs +14 -14
  88. package/dist/functional/ternary-result/impl/ternary-result-to-optional.mjs +19 -19
  89. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-throw.mjs +19 -19
  90. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err.mjs +17 -17
  91. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok.mjs +1 -1
  92. package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.mjs +20 -20
  93. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.mjs +18 -18
  94. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn.mjs +17 -17
  95. package/dist/functional/ternary-result/impl/ternary-result-warn.mjs +16 -16
  96. package/dist/functional/ternary-result/impl/ternary-result-zip.mjs +31 -31
  97. package/dist/functional/ternary-result/impl/variant-name.mjs +1 -1
  98. package/dist/guard/has-key.mjs +41 -41
  99. package/dist/guard/is-non-empty-string.mjs +37 -37
  100. package/dist/guard/is-non-null-object.mjs +34 -34
  101. package/dist/guard/is-primitive.mjs +31 -31
  102. package/dist/guard/is-record.mjs +86 -86
  103. package/dist/guard/is-type.mjs +387 -387
  104. package/dist/guard/key-is-in.mjs +40 -40
  105. package/dist/iterator/range.mjs +1 -1
  106. package/dist/json/json.mjs +289 -289
  107. package/dist/number/branded-types/finite-number.mjs +116 -116
  108. package/dist/number/branded-types/int.mjs +223 -223
  109. package/dist/number/branded-types/int16.mjs +116 -116
  110. package/dist/number/branded-types/int32.mjs +116 -116
  111. package/dist/number/branded-types/negative-finite-number.mjs +126 -126
  112. package/dist/number/branded-types/negative-int.mjs +104 -104
  113. package/dist/number/branded-types/negative-safe-int.mjs +104 -104
  114. package/dist/number/branded-types/non-negative-finite-number.mjs +132 -132
  115. package/dist/number/branded-types/non-negative-int16.mjs +113 -113
  116. package/dist/number/branded-types/non-negative-int32.mjs +113 -113
  117. package/dist/number/branded-types/non-positive-finite-number.mjs +116 -116
  118. package/dist/number/branded-types/non-positive-int.mjs +97 -97
  119. package/dist/number/branded-types/non-positive-safe-int.mjs +98 -98
  120. package/dist/number/branded-types/non-zero-finite-number.mjs +112 -112
  121. package/dist/number/branded-types/non-zero-int.mjs +82 -82
  122. package/dist/number/branded-types/non-zero-int16.mjs +95 -95
  123. package/dist/number/branded-types/non-zero-int32.mjs +95 -95
  124. package/dist/number/branded-types/non-zero-safe-int.mjs +99 -99
  125. package/dist/number/branded-types/non-zero-uint16.mjs +95 -95
  126. package/dist/number/branded-types/non-zero-uint32.mjs +95 -95
  127. package/dist/number/branded-types/positive-finite-number.mjs +134 -134
  128. package/dist/number/branded-types/positive-int.mjs +237 -237
  129. package/dist/number/branded-types/positive-int16.mjs +110 -110
  130. package/dist/number/branded-types/positive-int32.mjs +110 -110
  131. package/dist/number/branded-types/positive-safe-int.mjs +268 -268
  132. package/dist/number/branded-types/positive-uint16.mjs +110 -110
  133. package/dist/number/branded-types/positive-uint32.mjs +110 -110
  134. package/dist/number/branded-types/safe-int.mjs +259 -259
  135. package/dist/number/branded-types/safe-uint.mjs +111 -111
  136. package/dist/number/branded-types/uint.mjs +225 -225
  137. package/dist/number/branded-types/uint16.mjs +108 -108
  138. package/dist/number/branded-types/uint32.mjs +108 -108
  139. package/dist/number/enum/int8.mjs +118 -118
  140. package/dist/number/enum/uint8.mjs +109 -109
  141. package/dist/number/num-arithmetic-types.mjs +1 -1
  142. package/dist/number/num.mjs +478 -478
  143. package/dist/number/refined-number-utils.mjs +170 -170
  144. package/dist/object/object.mjs +234 -234
  145. package/dist/others/cast-mutable.mjs +33 -33
  146. package/dist/others/cast-readonly.mjs +32 -32
  147. package/dist/others/debounce-function.mjs +13 -13
  148. package/dist/others/fast-deep-equal.mjs +14 -14
  149. package/dist/others/if-then.mjs +29 -29
  150. package/dist/others/tuple.mjs +50 -50
  151. package/dist/others/unknown-to-string.mjs +38 -38
  152. package/dist/promise/promise.mjs +47 -47
  153. package/dist/string/str.mjs +177 -177
  154. package/dist/types.mjs +1 -1
  155. package/package.json +6 -6
  156. package/src/guard/is-type.test.mts +2 -2
  157. package/src/number/branded-types/finite-number.test.mts +1 -1
  158. package/src/number/branded-types/int.test.mts +1 -1
  159. package/src/number/branded-types/int16.test.mts +1 -1
  160. package/src/number/branded-types/int32.test.mts +1 -1
  161. package/src/number/branded-types/non-negative-finite-number.test.mts +1 -1
  162. package/src/number/branded-types/non-negative-int16.test.mts +1 -1
  163. package/src/number/branded-types/non-negative-int32.test.mts +1 -1
  164. package/src/number/branded-types/non-zero-finite-number.test.mts +1 -1
  165. package/src/number/branded-types/non-zero-int.test.mts +1 -1
  166. package/src/number/branded-types/non-zero-int16.test.mts +1 -1
  167. package/src/number/branded-types/non-zero-int32.test.mts +1 -1
  168. package/src/number/branded-types/non-zero-safe-int.test.mts +1 -1
  169. package/src/number/branded-types/non-zero-uint16.test.mts +1 -1
  170. package/src/number/branded-types/non-zero-uint32.test.mts +1 -1
  171. package/src/number/branded-types/positive-finite-number.test.mts +1 -1
  172. package/src/number/branded-types/positive-int.test.mts +1 -1
  173. package/src/number/branded-types/positive-int16.test.mts +1 -1
  174. package/src/number/branded-types/positive-int32.test.mts +1 -1
  175. package/src/number/branded-types/positive-safe-int.test.mts +1 -1
  176. package/src/number/branded-types/positive-uint16.test.mts +1 -1
  177. package/src/number/branded-types/positive-uint32.test.mts +1 -1
  178. package/src/number/branded-types/safe-int.test.mts +1 -1
  179. package/src/number/branded-types/safe-uint.test.mts +1 -1
  180. package/src/number/branded-types/uint.test.mts +1 -1
  181. package/src/number/branded-types/uint16.test.mts +1 -1
  182. package/src/number/branded-types/uint32.test.mts +1 -1
@@ -1,182 +1,182 @@
1
1
  import { Optional, pipe } from '../functional/index.mjs';
2
2
  import { asUint32 } from '../number/index.mjs';
3
3
  import { tp, unknownToString } from '../others/index.mjs';
4
- /** Provides utility functions for IMapMapped. */
4
+
5
5
  export var IMapMapped;
6
6
  (function (IMapMapped) {
7
- /**
8
- * Creates a new IMapMapped instance with custom key transformation functions.
9
- *
10
- * This factory function creates an immutable map that can use complex objects
11
- * as keys by providing bidirectional transformation functions. The `toKey`
12
- * function converts your custom key type to a primitive type that can be
13
- * efficiently stored, while `fromKey` reconstructs the original key type for
14
- * iteration and access.
15
- *
16
- * **Performance:** O(n) where n is the number of entries in the iterable.
17
- *
18
- * @template K The type of the custom keys.
19
- * @template V The type of the values.
20
- * @template KM The type of the mapped primitive keys.
21
- * @example
22
- *
23
- * ```ts
24
- * type Point = Readonly<{ x: number; y: number }>;
25
- *
26
- * const toKey = (p: Point) => JSON.stringify(p);
27
- *
28
- * // eslint-disable-next-line total-functions/no-unsafe-type-assertion
29
- * const fromKey = (key: string) => JSON.parse(key) as Point;
30
- *
31
- * const map = IMapMapped.create<Point, string, string>(
32
- * [
33
- * [{ x: 0, y: 0 }, 'origin'],
34
- * [{ x: 1, y: 0 }, 'right'],
35
- * ],
36
- * toKey,
37
- * fromKey,
38
- * );
39
- *
40
- * assert.isTrue(map.size === 2);
41
- *
42
- * assert.deepStrictEqual(map.get({ x: 0, y: 0 }), Optional.some('origin'));
43
- * ```
44
- *
45
- * @param iterable An iterable of key-value pairs using the custom key type.
46
- * @param toKey A function that converts a custom key `K` to a primitive key
47
- * `KM`. This function must be deterministic and produce unique values for
48
- * unique keys.
49
- * @param fromKey A function that converts a primitive key `KM` back to the
50
- * custom key `K`. This should be the inverse of `toKey`.
51
- * @returns A new IMapMapped instance containing all entries from the
52
- * iterable.
53
- */
7
+
8
+
9
+
10
+
11
+
12
+
13
+
14
+
15
+
16
+
17
+
18
+
19
+
20
+
21
+
22
+
23
+
24
+
25
+
26
+
27
+
28
+
29
+
30
+
31
+
32
+
33
+
34
+
35
+
36
+
37
+
38
+
39
+
40
+
41
+
42
+
43
+
44
+
45
+
46
+
47
+
48
+
49
+
50
+
51
+
52
+
53
+
54
54
  IMapMapped.create = (iterable, toKey, fromKey) => new IMapMappedClass(iterable, toKey, fromKey);
55
- /**
56
- * Checks if two IMapMapped instances are structurally equal.
57
- *
58
- * Two IMapMapped instances are considered equal if they have the same size
59
- * and contain exactly the same key-value pairs. The comparison is performed
60
- * on the underlying mapped keys and values, so the transformation functions
61
- * themselves don't need to be identical. Values are compared using
62
- * JavaScript's `===` operator.
63
- *
64
- * **Performance:** O(n) where n is the size of the smaller map.
65
- *
66
- * @template K The type of the custom keys.
67
- * @template V The type of the values.
68
- * @template KM The type of the mapped primitive keys.
69
- * @example
70
- *
71
- * ```ts
72
- * type Point = Readonly<{ x: number; y: number }>;
73
- *
74
- * const toKey = (p: Point) => JSON.stringify(p);
75
- *
76
- * // eslint-disable-next-line total-functions/no-unsafe-type-assertion
77
- * const fromKey = (key: string) => JSON.parse(key) as Point;
78
- *
79
- * const first = IMapMapped.create<Point, string, string>(
80
- * [
81
- * [{ x: 0, y: 0 }, 'origin'],
82
- * [{ x: 1, y: 0 }, 'right'],
83
- * ],
84
- * toKey,
85
- * fromKey,
86
- * );
87
- *
88
- * const second = IMapMapped.create<Point, string, string>(
89
- * [
90
- * [{ x: 1, y: 0 }, 'right'],
91
- * [{ x: 0, y: 0 }, 'origin'],
92
- * ],
93
- * toKey,
94
- * fromKey,
95
- * );
96
- *
97
- * const third = IMapMapped.create<Point, string, string>(
98
- * [[{ x: 0, y: 0 }, 'different']],
99
- * toKey,
100
- * fromKey,
101
- * );
102
- *
103
- * assert.isTrue(IMapMapped.equal(first, second));
104
- *
105
- * assert.isFalse(IMapMapped.equal(first, third));
106
- * ```
107
- *
108
- * @param a The first IMapMapped instance to compare.
109
- * @param b The second IMapMapped instance to compare.
110
- * @returns `true` if the maps contain exactly the same key-value pairs,
111
- * `false` otherwise.
112
- */
55
+
56
+
57
+
58
+
59
+
60
+
61
+
62
+
63
+
64
+
65
+
66
+
67
+
68
+
69
+
70
+
71
+
72
+
73
+
74
+
75
+
76
+
77
+
78
+
79
+
80
+
81
+
82
+
83
+
84
+
85
+
86
+
87
+
88
+
89
+
90
+
91
+
92
+
93
+
94
+
95
+
96
+
97
+
98
+
99
+
100
+
101
+
102
+
103
+
104
+
105
+
106
+
107
+
108
+
109
+
110
+
111
+
112
+
113
113
  IMapMapped.equal = (a, b) => a.size === b.size &&
114
114
  a.every((v, k) => pipe(b.get(k)).map((bv) => Optional.isSome(bv) && bv.value === v).value);
115
115
  })(IMapMapped || (IMapMapped = {}));
116
- /**
117
- * Internal class implementation for IMapMapped providing immutable map
118
- * operations with key transformation.
119
- *
120
- * This class implements the IMapMapped interface by maintaining a JavaScript
121
- * Map with primitive keys internally while exposing an API that works with
122
- * custom key types. The transformation between custom and primitive keys is
123
- * handled transparently through the provided `toKey` and `fromKey` functions.
124
- *
125
- * **Implementation Details:**
126
- *
127
- * - Uses ReadonlyMap<KM, V> internally where KM is the primitive key type
128
- * - Stores transformation functions for bidirectional key conversion
129
- * - Implements copy-on-write semantics for efficiency
130
- * - Provides optional debug messaging for development
131
- *
132
- * @template K The type of the custom keys.
133
- * @template V The type of the values.
134
- * @template KM The type of the mapped primitive keys.
135
- * @implements IMapMapped
136
- * @implements Iterable
137
- * @internal This class should not be used directly. Use IMapMapped.create() instead.
138
- */
116
+
117
+
118
+
119
+
120
+
121
+
122
+
123
+
124
+
125
+
126
+
127
+
128
+
129
+
130
+
131
+
132
+
133
+
134
+
135
+
136
+
137
+
138
+
139
139
  class IMapMappedClass {
140
140
  #map;
141
141
  #toKey;
142
142
  #fromKey;
143
143
  #showNotFoundMessage;
144
- /**
145
- * Constructs an IMapMappedClass instance with custom key transformation.
146
- *
147
- * @param iterable An iterable of key-value pairs using the custom key type K.
148
- * @param toKey A function that converts a custom key K to a primitive key KM.
149
- * Must be deterministic and produce unique values for unique keys.
150
- * @param fromKey A function that converts a primitive key KM back to the
151
- * custom key K. Should be the inverse of the toKey function.
152
- * @param showNotFoundMessage Whether to log warning messages when operations
153
- * are performed on non-existent keys. Useful for debugging. Defaults to
154
- * false for production use.
155
- * @internal Use IMapMapped.create() instead of calling this constructor directly.
156
- */
144
+
145
+
146
+
147
+
148
+
149
+
150
+
151
+
152
+
153
+
154
+
155
+
156
+
157
157
  constructor(iterable, toKey, fromKey, showNotFoundMessage = false) {
158
158
  this.#map = new Map(Array.from(iterable, ([k, v]) => [toKey(k), v]));
159
159
  this.#toKey = toKey;
160
160
  this.#fromKey = fromKey;
161
161
  this.#showNotFoundMessage = showNotFoundMessage;
162
162
  }
163
- /** @inheritdoc */
163
+
164
164
  get size() {
165
165
  return asUint32(this.#map.size);
166
166
  }
167
- /** @inheritdoc */
167
+
168
168
  has(key) {
169
- // eslint-disable-next-line total-functions/no-unsafe-type-assertion
169
+
170
170
  return this.#map.has(this.#toKey(key));
171
171
  }
172
- /** @inheritdoc */
172
+
173
173
  get(key) {
174
174
  if (!this.has(key))
175
175
  return Optional.none;
176
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion, total-functions/no-unsafe-type-assertion
176
+
177
177
  return Optional.some(this.#map.get(this.#toKey(key)));
178
178
  }
179
- /** @inheritdoc */
179
+
180
180
  every(predicate) {
181
181
  for (const [k, v] of this.entries()) {
182
182
  if (!predicate(v, k))
@@ -184,7 +184,7 @@ class IMapMappedClass {
184
184
  }
185
185
  return true;
186
186
  }
187
- /** @inheritdoc */
187
+
188
188
  some(predicate) {
189
189
  for (const [k, v] of this.entries()) {
190
190
  if (predicate(v, k))
@@ -192,7 +192,7 @@ class IMapMappedClass {
192
192
  }
193
193
  return false;
194
194
  }
195
- /** @inheritdoc */
195
+
196
196
  delete(key) {
197
197
  if (!this.has(key)) {
198
198
  if (this.#showNotFoundMessage) {
@@ -205,7 +205,7 @@ class IMapMappedClass {
205
205
  .filter(([km]) => !Object.is(km, keyMapped))
206
206
  .map(([km, v]) => tp(this.#fromKey(km), v)), this.#toKey, this.#fromKey);
207
207
  }
208
- /** @inheritdoc */
208
+
209
209
  set(key, value) {
210
210
  const curr = this.get(key);
211
211
  if (Optional.isSome(curr) && value === curr.value)
@@ -216,7 +216,7 @@ class IMapMappedClass {
216
216
  }
217
217
  return IMapMapped.create(Array.from(this.#map, ([km, v]) => tp(this.#fromKey(km), Object.is(km, keyMapped) ? value : v)), this.#toKey, this.#fromKey);
218
218
  }
219
- /** @inheritdoc */
219
+
220
220
  update(key, updater) {
221
221
  const curr = this.get(key);
222
222
  if (Optional.isNone(curr)) {
@@ -228,7 +228,7 @@ class IMapMappedClass {
228
228
  const keyMapped = this.#toKey(key);
229
229
  return IMapMapped.create(Array.from(this.#map, ([km, v]) => tp(this.#fromKey(km), Object.is(km, keyMapped) ? updater(curr.value) : v)), this.#toKey, this.#fromKey);
230
230
  }
231
- /** @inheritdoc */
231
+
232
232
  withMutations(actions) {
233
233
  const mut_result = new Map(this.#map);
234
234
  const updateFn = (action) => {
@@ -258,92 +258,92 @@ class IMapMappedClass {
258
258
  }
259
259
  return IMapMapped.create(Array.from(mut_result, ([k, v]) => [this.#fromKey(k), v]), this.#toKey, this.#fromKey);
260
260
  }
261
- /** @inheritdoc */
261
+
262
262
  map(mapFn) {
263
263
  return IMapMapped.create(this.toArray().map(([k, v]) => tp(k, mapFn(v, k))), this.#toKey, this.#fromKey);
264
264
  }
265
- /** @inheritdoc */
265
+
266
266
  mapKeys(mapFn) {
267
267
  return IMapMapped.create(this.toArray().map(([k, v]) => tp(mapFn(k), v)), this.#toKey, this.#fromKey);
268
268
  }
269
- /** @inheritdoc */
269
+
270
270
  mapEntries(mapFn) {
271
271
  return IMapMapped.create(this.toArray().map(mapFn), this.#toKey, this.#fromKey);
272
272
  }
273
- /** @inheritdoc */
273
+
274
274
  forEach(callbackfn) {
275
275
  for (const [km, value] of this.#map) {
276
276
  callbackfn(value, this.#fromKey(km));
277
277
  }
278
278
  }
279
- /**
280
- * @example
281
- *
282
- * ```ts
283
- * type Point = Readonly<{ x: number; y: number }>;
284
- *
285
- * const toKey = (p: Point) => JSON.stringify(p);
286
- *
287
- * // eslint-disable-next-line total-functions/no-unsafe-type-assertion
288
- * const fromKey = (key: string) => JSON.parse(key) as Point;
289
- *
290
- * const map = IMapMapped.create<Point, string, string>(
291
- * [
292
- * [{ x: 0, y: 0 }, 'origin'],
293
- * [{ x: 1, y: 0 }, 'right'],
294
- * ],
295
- * toKey,
296
- * fromKey,
297
- * );
298
- *
299
- * const collected = Array.from(map);
300
- *
301
- * assert.deepStrictEqual(collected, [
302
- * [{ x: 0, y: 0 }, 'origin'],
303
- * [{ x: 1, y: 0 }, 'right'],
304
- * ]);
305
- * ```
306
- *
307
- * @inheritdoc
308
- */
279
+
280
+
281
+
282
+
283
+
284
+
285
+
286
+
287
+
288
+
289
+
290
+
291
+
292
+
293
+
294
+
295
+
296
+
297
+
298
+
299
+
300
+
301
+
302
+
303
+
304
+
305
+
306
+
307
+
308
+
309
309
  *[Symbol.iterator]() {
310
310
  for (const e of this.entries()) {
311
311
  yield e;
312
312
  }
313
313
  }
314
- /** @inheritdoc */
314
+
315
315
  *keys() {
316
316
  for (const km of this.#map.keys()) {
317
317
  yield this.#fromKey(km);
318
318
  }
319
319
  }
320
- /** @inheritdoc */
320
+
321
321
  values() {
322
322
  return this.#map.values();
323
323
  }
324
- /** @inheritdoc */
324
+
325
325
  *entries() {
326
326
  for (const [km, v] of this.#map) {
327
327
  yield [this.#fromKey(km), v];
328
328
  }
329
329
  }
330
- /** @inheritdoc */
330
+
331
331
  toKeysArray() {
332
332
  return Array.from(this.keys());
333
333
  }
334
- /** @inheritdoc */
334
+
335
335
  toValuesArray() {
336
336
  return Array.from(this.values());
337
337
  }
338
- /** @inheritdoc */
338
+
339
339
  toEntriesArray() {
340
340
  return Array.from(this.entries());
341
341
  }
342
- /** @inheritdoc */
342
+
343
343
  toArray() {
344
344
  return Array.from(this.entries());
345
345
  }
346
- /** @inheritdoc */
346
+
347
347
  toRawMap() {
348
348
  return this.#map;
349
349
  }