ts-data-forge 1.0.0 → 1.0.1

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 (292) hide show
  1. package/README.md +1 -1
  2. package/dist/array/array-utils.d.mts +2617 -0
  3. package/dist/array/array-utils.d.mts.map +1 -0
  4. package/dist/array/array-utils.mjs +2915 -0
  5. package/dist/array/array-utils.mjs.map +1 -0
  6. package/dist/array/index.d.mts +3 -0
  7. package/dist/array/index.d.mts.map +1 -0
  8. package/dist/array/index.mjs +3 -0
  9. package/dist/array/index.mjs.map +1 -0
  10. package/dist/array/tuple-utils.d.mts +421 -0
  11. package/dist/array/tuple-utils.d.mts.map +1 -0
  12. package/dist/array/tuple-utils.mjs +391 -0
  13. package/dist/array/tuple-utils.mjs.map +1 -0
  14. package/dist/collections/imap-mapped.d.mts +445 -0
  15. package/dist/collections/imap-mapped.d.mts.map +1 -0
  16. package/dist/collections/imap-mapped.mjs +424 -0
  17. package/dist/collections/imap-mapped.mjs.map +1 -0
  18. package/dist/collections/imap.d.mts +359 -0
  19. package/dist/collections/imap.d.mts.map +1 -0
  20. package/dist/collections/imap.mjs +338 -0
  21. package/dist/collections/imap.mjs.map +1 -0
  22. package/dist/collections/index.d.mts +7 -0
  23. package/dist/collections/index.d.mts.map +1 -0
  24. package/dist/collections/index.mjs +7 -0
  25. package/dist/collections/index.mjs.map +1 -0
  26. package/dist/collections/iset-mapped.d.mts +576 -0
  27. package/dist/collections/iset-mapped.d.mts.map +1 -0
  28. package/dist/collections/iset-mapped.mjs +522 -0
  29. package/dist/collections/iset-mapped.mjs.map +1 -0
  30. package/dist/collections/iset.d.mts +426 -0
  31. package/dist/collections/iset.d.mts.map +1 -0
  32. package/dist/collections/iset.mjs +437 -0
  33. package/dist/collections/iset.mjs.map +1 -0
  34. package/dist/collections/queue.d.mts +190 -0
  35. package/dist/collections/queue.d.mts.map +1 -0
  36. package/dist/collections/queue.mjs +317 -0
  37. package/dist/collections/queue.mjs.map +1 -0
  38. package/dist/collections/stack.d.mts +210 -0
  39. package/dist/collections/stack.d.mts.map +1 -0
  40. package/dist/collections/stack.mjs +353 -0
  41. package/dist/collections/stack.mjs.map +1 -0
  42. package/dist/expect-type.d.mts +199 -0
  43. package/dist/expect-type.d.mts.map +1 -0
  44. package/dist/expect-type.mjs +201 -0
  45. package/dist/expect-type.mjs.map +1 -0
  46. package/dist/functional/index.d.mts +5 -0
  47. package/dist/functional/index.d.mts.map +1 -0
  48. package/dist/functional/index.mjs +5 -0
  49. package/dist/functional/index.mjs.map +1 -0
  50. package/dist/functional/match.d.mts +215 -0
  51. package/dist/functional/match.d.mts.map +1 -0
  52. package/dist/functional/match.mjs +139 -0
  53. package/dist/functional/match.mjs.map +1 -0
  54. package/dist/functional/optional.d.mts +517 -0
  55. package/dist/functional/optional.d.mts.map +1 -0
  56. package/dist/functional/optional.mjs +532 -0
  57. package/dist/functional/optional.mjs.map +1 -0
  58. package/dist/functional/pipe.d.mts +185 -0
  59. package/dist/functional/pipe.d.mts.map +1 -0
  60. package/dist/functional/pipe.mjs +129 -0
  61. package/dist/functional/pipe.mjs.map +1 -0
  62. package/dist/functional/result.d.mts +796 -0
  63. package/dist/functional/result.d.mts.map +1 -0
  64. package/dist/functional/result.mjs +844 -0
  65. package/dist/functional/result.mjs.map +1 -0
  66. package/dist/globals.d.mts +38 -0
  67. package/dist/guard/has-key.d.mts +100 -0
  68. package/dist/guard/has-key.d.mts.map +1 -0
  69. package/dist/guard/has-key.mjs +94 -0
  70. package/dist/guard/has-key.mjs.map +1 -0
  71. package/dist/guard/index.d.mts +8 -0
  72. package/dist/guard/index.d.mts.map +1 -0
  73. package/dist/guard/index.mjs +8 -0
  74. package/dist/guard/index.mjs.map +1 -0
  75. package/dist/guard/is-non-empty-string.d.mts +106 -0
  76. package/dist/guard/is-non-empty-string.d.mts.map +1 -0
  77. package/dist/guard/is-non-empty-string.mjs +108 -0
  78. package/dist/guard/is-non-empty-string.mjs.map +1 -0
  79. package/dist/guard/is-non-null-object.d.mts +105 -0
  80. package/dist/guard/is-non-null-object.d.mts.map +1 -0
  81. package/dist/guard/is-non-null-object.mjs +108 -0
  82. package/dist/guard/is-non-null-object.mjs.map +1 -0
  83. package/dist/guard/is-primitive.d.mts +146 -0
  84. package/dist/guard/is-primitive.d.mts.map +1 -0
  85. package/dist/guard/is-primitive.mjs +161 -0
  86. package/dist/guard/is-primitive.mjs.map +1 -0
  87. package/dist/guard/is-record.d.mts +151 -0
  88. package/dist/guard/is-record.d.mts.map +1 -0
  89. package/dist/guard/is-record.mjs +155 -0
  90. package/dist/guard/is-record.mjs.map +1 -0
  91. package/dist/guard/is-type.d.mts +430 -0
  92. package/dist/guard/is-type.d.mts.map +1 -0
  93. package/dist/guard/is-type.mjs +432 -0
  94. package/dist/guard/is-type.mjs.map +1 -0
  95. package/dist/guard/key-is-in.d.mts +158 -0
  96. package/dist/guard/key-is-in.d.mts.map +1 -0
  97. package/dist/guard/key-is-in.mjs +160 -0
  98. package/dist/guard/key-is-in.mjs.map +1 -0
  99. package/dist/index.d.mts +11 -0
  100. package/dist/index.d.mts.map +1 -0
  101. package/dist/index.mjs +61 -0
  102. package/dist/index.mjs.map +1 -0
  103. package/dist/iterator/index.d.mts +2 -0
  104. package/dist/iterator/index.d.mts.map +1 -0
  105. package/dist/iterator/index.mjs +2 -0
  106. package/dist/iterator/index.mjs.map +1 -0
  107. package/dist/iterator/range.d.mts +97 -0
  108. package/dist/iterator/range.d.mts.map +1 -0
  109. package/dist/iterator/range.mjs +130 -0
  110. package/dist/iterator/range.mjs.map +1 -0
  111. package/dist/json/index.d.mts +2 -0
  112. package/dist/json/index.d.mts.map +1 -0
  113. package/dist/json/index.mjs +2 -0
  114. package/dist/json/index.mjs.map +1 -0
  115. package/dist/json/json.d.mts +597 -0
  116. package/dist/json/json.d.mts.map +1 -0
  117. package/dist/json/json.mjs +687 -0
  118. package/dist/json/json.mjs.map +1 -0
  119. package/dist/number/branded-types/finite-number.d.mts +291 -0
  120. package/dist/number/branded-types/finite-number.d.mts.map +1 -0
  121. package/dist/number/branded-types/finite-number.mjs +296 -0
  122. package/dist/number/branded-types/finite-number.mjs.map +1 -0
  123. package/dist/number/branded-types/index.d.mts +27 -0
  124. package/dist/number/branded-types/index.d.mts.map +1 -0
  125. package/dist/number/branded-types/index.mjs +27 -0
  126. package/dist/number/branded-types/index.mjs.map +1 -0
  127. package/dist/number/branded-types/int.d.mts +242 -0
  128. package/dist/number/branded-types/int.d.mts.map +1 -0
  129. package/dist/number/branded-types/int.mjs +239 -0
  130. package/dist/number/branded-types/int.mjs.map +1 -0
  131. package/dist/number/branded-types/int16.d.mts +162 -0
  132. package/dist/number/branded-types/int16.d.mts.map +1 -0
  133. package/dist/number/branded-types/int16.mjs +141 -0
  134. package/dist/number/branded-types/int16.mjs.map +1 -0
  135. package/dist/number/branded-types/int32.d.mts +155 -0
  136. package/dist/number/branded-types/int32.d.mts.map +1 -0
  137. package/dist/number/branded-types/int32.mjs +142 -0
  138. package/dist/number/branded-types/int32.mjs.map +1 -0
  139. package/dist/number/branded-types/non-negative-finite-number.d.mts +165 -0
  140. package/dist/number/branded-types/non-negative-finite-number.d.mts.map +1 -0
  141. package/dist/number/branded-types/non-negative-finite-number.mjs +160 -0
  142. package/dist/number/branded-types/non-negative-finite-number.mjs.map +1 -0
  143. package/dist/number/branded-types/non-negative-int16.d.mts +160 -0
  144. package/dist/number/branded-types/non-negative-int16.d.mts.map +1 -0
  145. package/dist/number/branded-types/non-negative-int16.mjs +138 -0
  146. package/dist/number/branded-types/non-negative-int16.mjs.map +1 -0
  147. package/dist/number/branded-types/non-negative-int32.d.mts +156 -0
  148. package/dist/number/branded-types/non-negative-int32.d.mts.map +1 -0
  149. package/dist/number/branded-types/non-negative-int32.mjs +138 -0
  150. package/dist/number/branded-types/non-negative-int32.mjs.map +1 -0
  151. package/dist/number/branded-types/non-zero-finite-number.d.mts +154 -0
  152. package/dist/number/branded-types/non-zero-finite-number.d.mts.map +1 -0
  153. package/dist/number/branded-types/non-zero-finite-number.mjs +160 -0
  154. package/dist/number/branded-types/non-zero-finite-number.mjs.map +1 -0
  155. package/dist/number/branded-types/non-zero-int.d.mts +131 -0
  156. package/dist/number/branded-types/non-zero-int.d.mts.map +1 -0
  157. package/dist/number/branded-types/non-zero-int.mjs +128 -0
  158. package/dist/number/branded-types/non-zero-int.mjs.map +1 -0
  159. package/dist/number/branded-types/non-zero-int16.d.mts +166 -0
  160. package/dist/number/branded-types/non-zero-int16.d.mts.map +1 -0
  161. package/dist/number/branded-types/non-zero-int16.mjs +145 -0
  162. package/dist/number/branded-types/non-zero-int16.mjs.map +1 -0
  163. package/dist/number/branded-types/non-zero-int32.d.mts +158 -0
  164. package/dist/number/branded-types/non-zero-int32.d.mts.map +1 -0
  165. package/dist/number/branded-types/non-zero-int32.mjs +145 -0
  166. package/dist/number/branded-types/non-zero-int32.mjs.map +1 -0
  167. package/dist/number/branded-types/non-zero-safe-int.d.mts +148 -0
  168. package/dist/number/branded-types/non-zero-safe-int.d.mts.map +1 -0
  169. package/dist/number/branded-types/non-zero-safe-int.mjs +145 -0
  170. package/dist/number/branded-types/non-zero-safe-int.mjs.map +1 -0
  171. package/dist/number/branded-types/non-zero-uint16.d.mts +160 -0
  172. package/dist/number/branded-types/non-zero-uint16.d.mts.map +1 -0
  173. package/dist/number/branded-types/non-zero-uint16.mjs +140 -0
  174. package/dist/number/branded-types/non-zero-uint16.mjs.map +1 -0
  175. package/dist/number/branded-types/non-zero-uint32.d.mts +156 -0
  176. package/dist/number/branded-types/non-zero-uint32.d.mts.map +1 -0
  177. package/dist/number/branded-types/non-zero-uint32.mjs +140 -0
  178. package/dist/number/branded-types/non-zero-uint32.mjs.map +1 -0
  179. package/dist/number/branded-types/positive-finite-number.d.mts +171 -0
  180. package/dist/number/branded-types/positive-finite-number.d.mts.map +1 -0
  181. package/dist/number/branded-types/positive-finite-number.mjs +165 -0
  182. package/dist/number/branded-types/positive-finite-number.mjs.map +1 -0
  183. package/dist/number/branded-types/positive-int.d.mts +270 -0
  184. package/dist/number/branded-types/positive-int.d.mts.map +1 -0
  185. package/dist/number/branded-types/positive-int.mjs +257 -0
  186. package/dist/number/branded-types/positive-int.mjs.map +1 -0
  187. package/dist/number/branded-types/positive-int16.d.mts +162 -0
  188. package/dist/number/branded-types/positive-int16.d.mts.map +1 -0
  189. package/dist/number/branded-types/positive-int16.mjs +139 -0
  190. package/dist/number/branded-types/positive-int16.mjs.map +1 -0
  191. package/dist/number/branded-types/positive-int32.d.mts +158 -0
  192. package/dist/number/branded-types/positive-int32.d.mts.map +1 -0
  193. package/dist/number/branded-types/positive-int32.mjs +139 -0
  194. package/dist/number/branded-types/positive-int32.mjs.map +1 -0
  195. package/dist/number/branded-types/positive-safe-int.d.mts +152 -0
  196. package/dist/number/branded-types/positive-safe-int.d.mts.map +1 -0
  197. package/dist/number/branded-types/positive-safe-int.mjs +138 -0
  198. package/dist/number/branded-types/positive-safe-int.mjs.map +1 -0
  199. package/dist/number/branded-types/positive-uint16.d.mts +160 -0
  200. package/dist/number/branded-types/positive-uint16.d.mts.map +1 -0
  201. package/dist/number/branded-types/positive-uint16.mjs +139 -0
  202. package/dist/number/branded-types/positive-uint16.mjs.map +1 -0
  203. package/dist/number/branded-types/positive-uint32.d.mts +156 -0
  204. package/dist/number/branded-types/positive-uint32.d.mts.map +1 -0
  205. package/dist/number/branded-types/positive-uint32.mjs +139 -0
  206. package/dist/number/branded-types/positive-uint32.mjs.map +1 -0
  207. package/dist/number/branded-types/safe-int.d.mts +243 -0
  208. package/dist/number/branded-types/safe-int.d.mts.map +1 -0
  209. package/dist/number/branded-types/safe-int.mjs +240 -0
  210. package/dist/number/branded-types/safe-int.mjs.map +1 -0
  211. package/dist/number/branded-types/safe-uint.d.mts +151 -0
  212. package/dist/number/branded-types/safe-uint.d.mts.map +1 -0
  213. package/dist/number/branded-types/safe-uint.mjs +138 -0
  214. package/dist/number/branded-types/safe-uint.mjs.map +1 -0
  215. package/dist/number/branded-types/uint.d.mts +144 -0
  216. package/dist/number/branded-types/uint.d.mts.map +1 -0
  217. package/dist/number/branded-types/uint.mjs +132 -0
  218. package/dist/number/branded-types/uint.mjs.map +1 -0
  219. package/dist/number/branded-types/uint16.d.mts +157 -0
  220. package/dist/number/branded-types/uint16.d.mts.map +1 -0
  221. package/dist/number/branded-types/uint16.mjs +137 -0
  222. package/dist/number/branded-types/uint16.mjs.map +1 -0
  223. package/dist/number/branded-types/uint32.d.mts +185 -0
  224. package/dist/number/branded-types/uint32.d.mts.map +1 -0
  225. package/dist/number/branded-types/uint32.mjs +169 -0
  226. package/dist/number/branded-types/uint32.mjs.map +1 -0
  227. package/dist/number/enum/index.d.mts +3 -0
  228. package/dist/number/enum/index.d.mts.map +1 -0
  229. package/dist/number/enum/index.mjs +3 -0
  230. package/dist/number/enum/index.mjs.map +1 -0
  231. package/dist/number/enum/int8.d.mts +202 -0
  232. package/dist/number/enum/int8.d.mts.map +1 -0
  233. package/dist/number/enum/int8.mjs +296 -0
  234. package/dist/number/enum/int8.mjs.map +1 -0
  235. package/dist/number/enum/uint8.d.mts +128 -0
  236. package/dist/number/enum/uint8.d.mts.map +1 -0
  237. package/dist/number/enum/uint8.mjs +251 -0
  238. package/dist/number/enum/uint8.mjs.map +1 -0
  239. package/dist/number/index.d.mts +5 -0
  240. package/dist/number/index.d.mts.map +1 -0
  241. package/dist/number/index.mjs +31 -0
  242. package/dist/number/index.mjs.map +1 -0
  243. package/dist/number/num.d.mts +515 -0
  244. package/dist/number/num.d.mts.map +1 -0
  245. package/dist/number/num.mjs +513 -0
  246. package/dist/number/num.mjs.map +1 -0
  247. package/dist/number/refined-number-utils.d.mts +191 -0
  248. package/dist/number/refined-number-utils.d.mts.map +1 -0
  249. package/dist/number/refined-number-utils.mjs +179 -0
  250. package/dist/number/refined-number-utils.mjs.map +1 -0
  251. package/dist/object/index.d.mts +2 -0
  252. package/dist/object/index.d.mts.map +1 -0
  253. package/dist/object/index.mjs +2 -0
  254. package/dist/object/index.mjs.map +1 -0
  255. package/dist/object/object.d.mts +296 -0
  256. package/dist/object/object.d.mts.map +1 -0
  257. package/dist/object/object.mjs +295 -0
  258. package/dist/object/object.mjs.map +1 -0
  259. package/dist/others/cast-mutable.d.mts +110 -0
  260. package/dist/others/cast-mutable.d.mts.map +1 -0
  261. package/dist/others/cast-mutable.mjs +114 -0
  262. package/dist/others/cast-mutable.mjs.map +1 -0
  263. package/dist/others/cast-readonly.d.mts +189 -0
  264. package/dist/others/cast-readonly.d.mts.map +1 -0
  265. package/dist/others/cast-readonly.mjs +193 -0
  266. package/dist/others/cast-readonly.mjs.map +1 -0
  267. package/dist/others/if-then.d.mts +98 -0
  268. package/dist/others/if-then.d.mts.map +1 -0
  269. package/dist/others/if-then.mjs +100 -0
  270. package/dist/others/if-then.mjs.map +1 -0
  271. package/dist/others/index.d.mts +8 -0
  272. package/dist/others/index.d.mts.map +1 -0
  273. package/dist/others/index.mjs +8 -0
  274. package/dist/others/index.mjs.map +1 -0
  275. package/dist/others/map-nullable.d.mts +151 -0
  276. package/dist/others/map-nullable.d.mts.map +1 -0
  277. package/dist/others/map-nullable.mjs +159 -0
  278. package/dist/others/map-nullable.mjs.map +1 -0
  279. package/dist/others/memoize-function.d.mts +173 -0
  280. package/dist/others/memoize-function.d.mts.map +1 -0
  281. package/dist/others/memoize-function.mjs +189 -0
  282. package/dist/others/memoize-function.mjs.map +1 -0
  283. package/dist/others/tuple.d.mts +159 -0
  284. package/dist/others/tuple.d.mts.map +1 -0
  285. package/dist/others/tuple.mjs +161 -0
  286. package/dist/others/tuple.mjs.map +1 -0
  287. package/dist/others/unknown-to-string.d.mts +180 -0
  288. package/dist/others/unknown-to-string.d.mts.map +1 -0
  289. package/dist/others/unknown-to-string.mjs +211 -0
  290. package/dist/others/unknown-to-string.mjs.map +1 -0
  291. package/dist/tsconfig.json +1 -0
  292. package/package.json +16 -14
@@ -0,0 +1,338 @@
1
+ import { Optional } from '../functional/optional.mjs';
2
+ import { Result } from '../functional/result.mjs';
3
+ import '../number/branded-types/finite-number.mjs';
4
+ import '../number/branded-types/int.mjs';
5
+ import '../number/branded-types/int16.mjs';
6
+ import '../number/branded-types/int32.mjs';
7
+ import '../number/branded-types/non-negative-finite-number.mjs';
8
+ import '../number/branded-types/non-negative-int16.mjs';
9
+ import '../number/branded-types/non-negative-int32.mjs';
10
+ import '../number/branded-types/non-zero-finite-number.mjs';
11
+ import '../number/branded-types/non-zero-int.mjs';
12
+ import '../number/branded-types/non-zero-int16.mjs';
13
+ import '../number/branded-types/non-zero-int32.mjs';
14
+ import '../number/branded-types/non-zero-safe-int.mjs';
15
+ import '../number/branded-types/non-zero-uint16.mjs';
16
+ import '../number/branded-types/non-zero-uint32.mjs';
17
+ import '../number/branded-types/positive-finite-number.mjs';
18
+ import '../number/branded-types/positive-int.mjs';
19
+ import '../number/branded-types/positive-int16.mjs';
20
+ import '../number/branded-types/positive-int32.mjs';
21
+ import '../number/branded-types/positive-safe-int.mjs';
22
+ import '../number/branded-types/positive-uint16.mjs';
23
+ import '../number/branded-types/positive-uint32.mjs';
24
+ import '../number/branded-types/safe-int.mjs';
25
+ import '../number/branded-types/safe-uint.mjs';
26
+ import '../number/branded-types/uint.mjs';
27
+ import '../number/branded-types/uint16.mjs';
28
+ import { asUint32 } from '../number/branded-types/uint32.mjs';
29
+ import '../number/enum/int8.mjs';
30
+ import '../number/enum/uint8.mjs';
31
+ import '../number/num.mjs';
32
+ import '../number/refined-number-utils.mjs';
33
+ import { tp } from '../others/tuple.mjs';
34
+ import { unknownToString } from '../others/unknown-to-string.mjs';
35
+
36
+ /**
37
+ * Provides utility functions for IMap.
38
+ */
39
+ var IMap;
40
+ (function (IMap) {
41
+ /**
42
+ * Creates a new IMap instance from an iterable of key-value pairs.
43
+ *
44
+ * This factory function accepts any iterable of [key, value] tuples, including arrays,
45
+ * JavaScript Maps, other IMaps, or custom iterables. The resulting IMap will contain
46
+ * all the entries from the input iterable.
47
+ *
48
+ * **Performance:** O(n) where n is the number of entries in the iterable.
49
+ *
50
+ * @template K The type of the keys. Must extend MapSetKeyType.
51
+ * @template V The type of the values.
52
+ * @param iterable An iterable of key-value pairs (e.g., Array, Map, IMap, etc.)
53
+ * @returns A new IMap instance containing all entries from the iterable.
54
+ *
55
+ * @example
56
+ * ```typescript
57
+ * // From array of tuples
58
+ * const userScores = IMap.create<string, number>([
59
+ * ["alice", 95],
60
+ * ["bob", 87],
61
+ * ["charlie", 92]
62
+ * ]);
63
+ * console.log(userScores.get("alice").unwrap()); // Output: 95
64
+ *
65
+ * // From JavaScript Map
66
+ * const jsMap = new Map([["config", { debug: true }], ["env", "production"]]);
67
+ * const config = IMap.create(jsMap);
68
+ * console.log(config.get("env").unwrap()); // Output: "production"
69
+ *
70
+ * // From another IMap (creates a copy)
71
+ * const originalMap = IMap.create<string, boolean>([["enabled", true]]);
72
+ * const copiedMap = IMap.create(originalMap);
73
+ * console.log(copiedMap.get("enabled").unwrap()); // Output: true
74
+ *
75
+ * // Empty map
76
+ * const emptyMap = IMap.create<string, number>([]);
77
+ * console.log(emptyMap.size); // Output: 0
78
+ *
79
+ * // From custom iterable
80
+ * function* generateEntries(): Generator<[string, number]> {
81
+ * for (let i = 0; i < 3; i++) {
82
+ * yield [`item${i}`, i * 10];
83
+ * }
84
+ * }
85
+ * const generatedMap = IMap.create(generateEntries());
86
+ * console.log(generatedMap.size); // Output: 3
87
+ * ```
88
+ */
89
+ IMap.create = (iterable) => new IMapClass(iterable);
90
+ /**
91
+ * Checks if two IMap instances are structurally equal.
92
+ *
93
+ * Two IMaps are considered equal if they have the same size and contain exactly the same
94
+ * key-value pairs. The order of entries does not matter for equality comparison.
95
+ * Values are compared using JavaScript's `===` operator.
96
+ *
97
+ * **Performance:** O(n) where n is the size of the smaller map.
98
+ *
99
+ * @template K The type of the keys.
100
+ * @template V The type of the values.
101
+ * @param a The first IMap instance to compare.
102
+ * @param b The second IMap instance to compare.
103
+ * @returns `true` if the maps contain exactly the same key-value pairs, `false` otherwise.
104
+ *
105
+ * @example
106
+ * ```typescript
107
+ * // Basic equality comparison
108
+ * const preferences1 = IMap.create<string, boolean>([
109
+ * ["darkMode", true],
110
+ * ["notifications", false]
111
+ * ]);
112
+ * const preferences2 = IMap.create<string, boolean>([
113
+ * ["darkMode", true],
114
+ * ["notifications", false]
115
+ * ]);
116
+ * const preferences3 = IMap.create<string, boolean>([
117
+ * ["notifications", false],
118
+ * ["darkMode", true] // Order doesn't matter
119
+ * ]);
120
+ *
121
+ * console.log(IMap.equal(preferences1, preferences2)); // true
122
+ * console.log(IMap.equal(preferences1, preferences3)); // true (order doesn't matter)
123
+ *
124
+ * // Different values
125
+ * const preferences4 = IMap.create<string, boolean>([
126
+ * ["darkMode", false], // Different value
127
+ * ["notifications", false]
128
+ * ]);
129
+ * console.log(IMap.equal(preferences1, preferences4)); // false
130
+ *
131
+ * // Different keys
132
+ * const preferences5 = IMap.create<string, boolean>([
133
+ * ["darkMode", true],
134
+ * ["sounds", false] // Different key
135
+ * ]);
136
+ * console.log(IMap.equal(preferences1, preferences5)); // false
137
+ *
138
+ * // Empty maps
139
+ * const empty1 = IMap.create<string, number>([]);
140
+ * const empty2 = IMap.create<string, number>([]);
141
+ * console.log(IMap.equal(empty1, empty2)); // true
142
+ *
143
+ * // Note: For deep equality of object values, use a custom comparison
144
+ * const users1 = IMap.create<string, User>([["1", { name: "Alice" }]]);
145
+ * const users2 = IMap.create<string, User>([["1", { name: "Alice" }]]);
146
+ * console.log(IMap.equal(users1, users2)); // false (different object references)
147
+ * ```
148
+ */
149
+ IMap.equal = (a, b) => a.size === b.size && a.every((v, k) => b.get(k) === v);
150
+ })(IMap || (IMap = {}));
151
+ /**
152
+ * Internal class implementation for IMap providing immutable map operations.
153
+ *
154
+ * This class implements the IMap interface using JavaScript's native Map as the underlying
155
+ * storage mechanism for optimal performance. All mutation operations create new instances
156
+ * rather than modifying the existing map, ensuring immutability.
157
+ *
158
+ * **Implementation Details:**
159
+ * - Uses ReadonlyMap<K, V> internally for type safety and performance
160
+ * - Implements copy-on-write semantics for efficiency
161
+ * - Provides optional debug messaging for development
162
+ *
163
+ * @template K The type of the keys. Must extend MapSetKeyType.
164
+ * @template V The type of the values.
165
+ * @implements IMap
166
+ * @implements Iterable
167
+ * @internal This class should not be used directly. Use IMap.create() instead.
168
+ */
169
+ class IMapClass {
170
+ #map;
171
+ #showNotFoundMessage;
172
+ /**
173
+ * Constructs an IMapClass instance with the given entries.
174
+ *
175
+ * @param iterable An iterable of key-value pairs to populate the map.
176
+ * @param showNotFoundMessage Whether to log warning messages when operations
177
+ * are performed on non-existent keys. Useful for debugging.
178
+ * Defaults to false for production use.
179
+ * @internal Use IMap.create() instead of calling this constructor directly.
180
+ */
181
+ constructor(iterable, showNotFoundMessage = false) {
182
+ this.#map = new Map(iterable);
183
+ this.#showNotFoundMessage = showNotFoundMessage;
184
+ }
185
+ /** @inheritdoc */
186
+ get size() {
187
+ return asUint32(this.#map.size);
188
+ }
189
+ /** @inheritdoc */
190
+ has(key) {
191
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
192
+ return this.#map.has(key);
193
+ }
194
+ /** @inheritdoc */
195
+ get(key) {
196
+ if (!this.has(key))
197
+ return Optional.none;
198
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion, @typescript-eslint/no-non-null-assertion
199
+ return Optional.some(this.#map.get(key));
200
+ }
201
+ /** @inheritdoc */
202
+ every(predicate) {
203
+ for (const [k, v] of this.entries()) {
204
+ if (!predicate(v, k))
205
+ return false;
206
+ }
207
+ return true;
208
+ }
209
+ /** @inheritdoc */
210
+ some(predicate) {
211
+ for (const [k, v] of this.entries()) {
212
+ if (predicate(v, k))
213
+ return true;
214
+ }
215
+ return false;
216
+ }
217
+ /** @inheritdoc */
218
+ delete(key) {
219
+ if (!this.has(key)) {
220
+ if (this.#showNotFoundMessage) {
221
+ const keyStr = unknownToString(key);
222
+ console.warn(`IMap.delete: key not found: ${Result.isOk(keyStr) ? keyStr.value : '<error converting key to string>'}`);
223
+ }
224
+ return this;
225
+ }
226
+ return IMap.create(Array.from(this.#map).filter(([k]) => !Object.is(k, key)));
227
+ }
228
+ /** @inheritdoc */
229
+ set(key, value) {
230
+ if (value === this.get(key))
231
+ return this; // has no changes
232
+ if (!this.has(key)) {
233
+ return IMap.create([...this.#map, tp(key, value)]);
234
+ }
235
+ else {
236
+ return IMap.create(Array.from(this.#map, ([k, v]) => tp(k, Object.is(k, key) ? value : v)));
237
+ }
238
+ }
239
+ /** @inheritdoc */
240
+ update(key, updater) {
241
+ const curr = this.get(key);
242
+ if (Optional.isNone(curr)) {
243
+ if (this.#showNotFoundMessage) {
244
+ const keyStr = unknownToString(key);
245
+ console.warn(`IMap.update: key not found: ${Result.isOk(keyStr) ? keyStr.value : '<error converting key to string>'}`);
246
+ }
247
+ return this;
248
+ }
249
+ return IMap.create(Array.from(this.#map, ([k, v]) => tp(k, Object.is(k, key) ? updater(curr.value) : v)));
250
+ }
251
+ /** @inheritdoc */
252
+ withMutations(actions) {
253
+ const mut_result = new Map(this.#map);
254
+ for (const action of actions) {
255
+ switch (action.type) {
256
+ case 'delete':
257
+ mut_result.delete(action.key);
258
+ break;
259
+ case 'set':
260
+ mut_result.set(action.key, action.value);
261
+ break;
262
+ case 'update': {
263
+ const { key } = action;
264
+ const curr = mut_result.get(key);
265
+ if (!mut_result.has(key) || curr === undefined) {
266
+ if (this.#showNotFoundMessage) {
267
+ const keyStr = unknownToString(key);
268
+ console.warn(`IMap.withMutations: key not found: ${Result.isOk(keyStr) ? keyStr.value : '<error converting key to string>'}`);
269
+ }
270
+ break;
271
+ }
272
+ mut_result.set(key, action.updater(curr));
273
+ break;
274
+ }
275
+ }
276
+ }
277
+ return IMap.create(mut_result);
278
+ }
279
+ /** @inheritdoc */
280
+ map(mapFn) {
281
+ return IMap.create(this.toArray().map(([k, v]) => tp(k, mapFn(v, k))));
282
+ }
283
+ /** @inheritdoc */
284
+ mapKeys(mapFn) {
285
+ return IMap.create(this.toArray().map(([k, v]) => tp(mapFn(k), v)));
286
+ }
287
+ /** @inheritdoc */
288
+ mapEntries(mapFn) {
289
+ return IMap.create(this.toArray().map(mapFn));
290
+ }
291
+ /** @inheritdoc */
292
+ forEach(callbackfn) {
293
+ for (const [key, value] of this.#map.entries()) {
294
+ callbackfn(value, key);
295
+ }
296
+ }
297
+ /**
298
+ * @inheritdoc
299
+ */
300
+ [Symbol.iterator]() {
301
+ return this.#map[Symbol.iterator]();
302
+ }
303
+ /** @inheritdoc */
304
+ keys() {
305
+ return this.#map.keys();
306
+ }
307
+ /** @inheritdoc */
308
+ values() {
309
+ return this.#map.values();
310
+ }
311
+ /** @inheritdoc */
312
+ entries() {
313
+ return this.#map.entries();
314
+ }
315
+ /** @inheritdoc */
316
+ toKeysArray() {
317
+ return Array.from(this.keys());
318
+ }
319
+ /** @inheritdoc */
320
+ toValuesArray() {
321
+ return Array.from(this.values());
322
+ }
323
+ /** @inheritdoc */
324
+ toEntriesArray() {
325
+ return Array.from(this.entries());
326
+ }
327
+ /** @inheritdoc */
328
+ toArray() {
329
+ return Array.from(this.entries());
330
+ }
331
+ /** @inheritdoc */
332
+ toRawMap() {
333
+ return this.#map;
334
+ }
335
+ }
336
+
337
+ export { IMap };
338
+ //# sourceMappingURL=imap.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"imap.mjs","sources":["../../src/collections/imap.mts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export * from './imap-mapped.mjs';
2
+ export * from './imap.mjs';
3
+ export * from './iset-mapped.mjs';
4
+ export * from './iset.mjs';
5
+ export * from './queue.mjs';
6
+ export * from './stack.mjs';
7
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/collections/index.mts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,7 @@
1
+ export { IMapMapped } from './imap-mapped.mjs';
2
+ export { IMap } from './imap.mjs';
3
+ export { ISetMapped } from './iset-mapped.mjs';
4
+ export { ISet } from './iset.mjs';
5
+ export { createQueue } from './queue.mjs';
6
+ export { createStack } from './stack.mjs';
7
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}