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,206 +1,206 @@
1
1
  import { asUint32 } from '../number/index.mjs';
2
2
  import { unknownToString } from '../others/index.mjs';
3
- /** Provides utility functions for ISet. */
3
+
4
4
  export var ISet;
5
5
  (function (ISet) {
6
- /**
7
- * Creates a new ISet instance from an iterable of elements.
8
- *
9
- * This factory function accepts any iterable of elements, including arrays,
10
- * JavaScript Sets, other ISets, or custom iterables. Duplicate elements in
11
- * the input iterable will be automatically deduplicated in the resulting
12
- * set.
13
- *
14
- * **Performance:** O(n) where n is the number of elements in the iterable.
15
- *
16
- * @example
17
- *
18
- * ```ts
19
- * const set = ISet.create(['a', 'a', 'b']);
20
- *
21
- * assert.deepStrictEqual(Array.from(set), ['a', 'b']);
22
- * ```
23
- *
24
- * @template K The type of the elements. Must extend MapSetKeyType.
25
- * @param iterable An iterable of elements (e.g., Array, Set, ISet, etc.)
26
- * @returns A new ISet instance containing all unique elements from the
27
- * iterable.
28
- */
6
+
7
+
8
+
9
+
10
+
11
+
12
+
13
+
14
+
15
+
16
+
17
+
18
+
19
+
20
+
21
+
22
+
23
+
24
+
25
+
26
+
27
+
28
+
29
29
  ISet.create = (iterable) => new ISetClass(iterable);
30
- /**
31
- * Checks if two ISet instances are structurally equal.
32
- *
33
- * Two ISets are considered equal if they have the same size and contain
34
- * exactly the same elements. The order of elements does not matter for
35
- * equality comparison since sets are unordered collections. Elements are
36
- * compared using JavaScript's `===` operator.
37
- *
38
- * **Performance:** O(n) where n is the size of the smaller set.
39
- *
40
- * @example
41
- *
42
- * ```ts
43
- * const first = ISet.create<number>([1, 2]);
44
- *
45
- * const second = ISet.create<number>([2, 1]);
46
- *
47
- * const third = ISet.create<number>([1, 3]);
48
- *
49
- * assert.isTrue(ISet.equal(first, second));
50
- *
51
- * assert.isFalse(ISet.equal(first, third));
52
- * ```
53
- *
54
- * @template K The type of the elements.
55
- * @param a The first ISet instance to compare.
56
- * @param b The second ISet instance to compare.
57
- * @returns `true` if the sets contain exactly the same elements, `false`
58
- * otherwise.
59
- */
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
+
55
+
56
+
57
+
58
+
59
+
60
60
  ISet.equal = (a, b) => a.size === b.size && a.every((e) => b.has(e));
61
- /**
62
- * Computes the difference between two ISet instances, identifying added and
63
- * deleted elements.
64
- *
65
- * This function performs a set difference operation to determine what
66
- * elements were added and what elements were deleted when transitioning from
67
- * the old set to the new set. This is useful for change detection, state
68
- * management, and synchronization scenarios.
69
- *
70
- * **Performance:** O(n + m) where n and m are the sizes of the old and new
71
- * sets respectively.
72
- *
73
- * @example
74
- *
75
- * ```ts
76
- * const previous = ISet.create<string>(['draft', 'review']);
77
- *
78
- * const current = ISet.create<string>(['review', 'published']);
79
- *
80
- * const { added, deleted } = ISet.diff(previous, current);
81
- *
82
- * assert.deepStrictEqual(Array.from(added), ['published']);
83
- *
84
- * assert.deepStrictEqual(Array.from(deleted), ['draft']);
85
- * ```
86
- *
87
- * @template K The type of the elements.
88
- * @param oldSet The original set representing the previous state.
89
- * @param newSet The new set representing the current state.
90
- * @returns An object with `added` and `deleted` properties, each containing
91
- * an ISet of elements that were added or removed respectively.
92
- */
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
93
  ISet.diff = (oldSet, newSet) => ({
94
94
  deleted: oldSet.subtract(newSet),
95
95
  added: newSet.subtract(oldSet),
96
96
  });
97
- /**
98
- * Computes the intersection of two ISet instances.
99
- *
100
- * Returns a new set containing only the elements that are present in both
101
- * input sets. This operation is commutative: `intersection(a, b) ===
102
- * intersection(b, a)`.
103
- *
104
- * **Performance:** O(min(n, m)) where n and m are the sizes of the input
105
- * sets.
106
- *
107
- * @example
108
- *
109
- * ```ts
110
- * const left = ISet.create<number>([1, 2, 3]);
111
- *
112
- * const right = ISet.create<number>([2, 4]);
113
- *
114
- * const overlap = ISet.intersection(left, right);
115
- *
116
- * assert.deepStrictEqual(Array.from(overlap), [2]);
117
- * ```
118
- *
119
- * @template K The type of the elements.
120
- * @param a The first set.
121
- * @param b The second set.
122
- * @returns A new ISet instance containing elements common to both sets.
123
- */
97
+
98
+
99
+
100
+
101
+
102
+
103
+
104
+
105
+
106
+
107
+
108
+
109
+
110
+
111
+
112
+
113
+
114
+
115
+
116
+
117
+
118
+
119
+
120
+
121
+
122
+
123
+
124
124
  ISet.intersection = (a, b) => a.intersect(b);
125
- /**
126
- * Computes the union of two ISet instances.
127
- *
128
- * Returns a new set containing all elements that are present in either input
129
- * set. Duplicate elements are automatically handled since sets only contain
130
- * unique values. This operation is commutative: `union(a, b) === union(b,
131
- * a)`.
132
- *
133
- * **Performance:** O(n + m) where n and m are the sizes of the input sets.
134
- *
135
- * @example
136
- *
137
- * ```ts
138
- * const numbers = ISet.create([1, 2]);
139
- *
140
- * const words = ISet.create(['one', 'two']);
141
- *
142
- * const union = ISet.union(numbers, words);
143
- *
144
- * assert.deepStrictEqual(Array.from(union), [1, 2, 'one', 'two']);
145
- * ```
146
- *
147
- * @template K1 The type of elements in the first set.
148
- * @template K2 The type of elements in the second set.
149
- * @param a The first set.
150
- * @param b The second set.
151
- * @returns A new ISet instance containing all elements from both sets.
152
- */
125
+
126
+
127
+
128
+
129
+
130
+
131
+
132
+
133
+
134
+
135
+
136
+
137
+
138
+
139
+
140
+
141
+
142
+
143
+
144
+
145
+
146
+
147
+
148
+
149
+
150
+
151
+
152
+
153
153
  ISet.union = (a, b) => a.union(b);
154
154
  })(ISet || (ISet = {}));
155
- /**
156
- * Internal class implementation for ISet providing immutable set operations.
157
- *
158
- * This class implements the ISet interface using JavaScript's native Set as the
159
- * underlying storage mechanism for optimal performance. All mutation operations
160
- * create new instances rather than modifying the existing set, ensuring
161
- * immutability.
162
- *
163
- * **Implementation Details:**
164
- *
165
- * - Uses ReadonlySet<K> internally for type safety and performance
166
- * - Implements copy-on-write semantics for efficiency
167
- * - Provides optional debug messaging for development
168
- *
169
- * @template K The type of the elements. Must extend MapSetKeyType.
170
- * @implements ISet
171
- * @implements Iterable
172
- * @internal This class should not be used directly. Use ISet.create() instead.
173
- */
155
+
156
+
157
+
158
+
159
+
160
+
161
+
162
+
163
+
164
+
165
+
166
+
167
+
168
+
169
+
170
+
171
+
172
+
173
+
174
174
  class ISetClass {
175
175
  #set;
176
176
  #showNotFoundMessage;
177
- /**
178
- * Constructs an ISetClass instance with the given elements.
179
- *
180
- * @param iterable An iterable of elements to populate the set.
181
- * @param showNotFoundMessage Whether to log warning messages when operations
182
- * are performed on non-existent elements. Useful for debugging. Defaults to
183
- * false for production use.
184
- * @internal Use ISet.create() instead of calling this constructor directly.
185
- */
177
+
178
+
179
+
180
+
181
+
182
+
183
+
184
+
185
+
186
186
  constructor(iterable, showNotFoundMessage = false) {
187
187
  this.#set = new Set(iterable);
188
188
  this.#showNotFoundMessage = showNotFoundMessage;
189
189
  }
190
- /** @inheritdoc */
190
+
191
191
  get size() {
192
192
  return asUint32(this.#set.size);
193
193
  }
194
- /** @inheritdoc */
194
+
195
195
  get isEmpty() {
196
196
  return this.size === 0;
197
197
  }
198
- /** @inheritdoc */
198
+
199
199
  has(key) {
200
- // eslint-disable-next-line total-functions/no-unsafe-type-assertion, @typescript-eslint/no-unnecessary-type-assertion -- unnecessary only under the strict standard library; the stock one types `has` as taking exactly `K`
200
+
201
201
  return this.#set.has(key);
202
202
  }
203
- /** @inheritdoc */
203
+
204
204
  every(predicate) {
205
205
  for (const key of this.values()) {
206
206
  if (!predicate(key))
@@ -208,7 +208,7 @@ class ISetClass {
208
208
  }
209
209
  return true;
210
210
  }
211
- /** @inheritdoc */
211
+
212
212
  some(predicate) {
213
213
  for (const key of this.values()) {
214
214
  if (predicate(key))
@@ -216,13 +216,13 @@ class ISetClass {
216
216
  }
217
217
  return false;
218
218
  }
219
- /** @inheritdoc */
219
+
220
220
  add(key) {
221
221
  if (this.has(key))
222
222
  return this;
223
223
  return ISet.create([...this.#set, key]);
224
224
  }
225
- /** @inheritdoc */
225
+
226
226
  delete(key) {
227
227
  if (!this.has(key)) {
228
228
  if (this.#showNotFoundMessage) {
@@ -233,7 +233,7 @@ class ISetClass {
233
233
  }
234
234
  return ISet.create(Array.from(this.#set).filter((k) => !Object.is(k, key)));
235
235
  }
236
- /** @inheritdoc */
236
+
237
237
  withMutations(actions) {
238
238
  const mut_result = new Set(this.#set);
239
239
  const updateFn = (action) => {
@@ -251,79 +251,79 @@ class ISetClass {
251
251
  }
252
252
  return ISet.create(mut_result);
253
253
  }
254
- /** @inheritdoc */
254
+
255
255
  map(mapFn) {
256
256
  return ISet.create(this.toArray().map(mapFn));
257
257
  }
258
- /** @inheritdoc */
258
+
259
259
  filter(predicate) {
260
260
  return ISet.create(this.toArray().filter(predicate));
261
261
  }
262
- /** @inheritdoc */
262
+
263
263
  filterNot(predicate) {
264
264
  return ISet.create(this.toArray().filter((e) => !predicate(e)));
265
265
  }
266
- /** @inheritdoc */
266
+
267
267
  forEach(callbackfn) {
268
268
  for (const v of this.#set) {
269
269
  callbackfn(v);
270
270
  }
271
271
  }
272
- /** @inheritdoc */
272
+
273
273
  isSubsetOf(set) {
274
- // eslint-disable-next-line total-functions/no-unsafe-type-assertion
274
+
275
275
  return this.every((k) => set.has(k));
276
276
  }
277
- /** @inheritdoc */
277
+
278
278
  isSupersetOf(set) {
279
- // eslint-disable-next-line total-functions/no-unsafe-type-assertion
279
+
280
280
  return set.every((k) => this.has(k));
281
281
  }
282
- /** @inheritdoc */
282
+
283
283
  subtract(set) {
284
284
  return ISet.create(this.toArray().filter((k) => !set.has(k)));
285
285
  }
286
- /** @inheritdoc */
286
+
287
287
  intersect(set) {
288
288
  return ISet.create(this.toArray().filter((k) => set.has(k)));
289
289
  }
290
- /** @inheritdoc */
290
+
291
291
  union(set) {
292
292
  return ISet.create([...this, ...set]);
293
293
  }
294
- /**
295
- * @example
296
- *
297
- * ```ts
298
- * const set = ISet.create(['first', 'second']);
299
- *
300
- * const collected = Array.from(set);
301
- *
302
- * assert.deepStrictEqual(collected, ['first', 'second']);
303
- * ```
304
- *
305
- * @inheritdoc
306
- */
294
+
295
+
296
+
297
+
298
+
299
+
300
+
301
+
302
+
303
+
304
+
305
+
306
+
307
307
  [Symbol.iterator]() {
308
308
  return this.#set[Symbol.iterator]();
309
309
  }
310
- /** @inheritdoc */
310
+
311
311
  keys() {
312
312
  return this.#set.keys();
313
313
  }
314
- /** @inheritdoc */
314
+
315
315
  values() {
316
316
  return this.#set.values();
317
317
  }
318
- /** @inheritdoc */
318
+
319
319
  entries() {
320
320
  return this.#set.entries();
321
321
  }
322
- /** @inheritdoc */
322
+
323
323
  toArray() {
324
324
  return Array.from(this.values());
325
325
  }
326
- /** @inheritdoc */
326
+
327
327
  toRawSet() {
328
328
  return this.#set;
329
329
  }