ts-data-forge 14.6.0 → 14.6.2

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 (409) hide show
  1. package/dist/array/impl/array-utils-creation.mjs +126 -26
  2. package/dist/array/impl/array-utils-creation.mjs.map +1 -1
  3. package/dist/array/impl/array-utils-element-access.mjs +63 -30
  4. package/dist/array/impl/array-utils-element-access.mjs.map +1 -1
  5. package/dist/array/impl/array-utils-iterators.mjs +69 -53
  6. package/dist/array/impl/array-utils-iterators.mjs.map +1 -1
  7. package/dist/array/impl/array-utils-length-bounded-array-cast.mjs +109 -73
  8. package/dist/array/impl/array-utils-length-bounded-array-cast.mjs.map +1 -1
  9. package/dist/array/impl/array-utils-length-bounded-array-guard.mjs +71 -33
  10. package/dist/array/impl/array-utils-length-bounded-array-guard.mjs.map +1 -1
  11. package/dist/array/impl/array-utils-length-bounded-tuple-cast.mjs +102 -73
  12. package/dist/array/impl/array-utils-length-bounded-tuple-cast.mjs.map +1 -1
  13. package/dist/array/impl/array-utils-length-bounded-tuple-guard.mjs +77 -33
  14. package/dist/array/impl/array-utils-length-bounded-tuple-guard.mjs.map +1 -1
  15. package/dist/array/impl/array-utils-modification.mjs +75 -122
  16. package/dist/array/impl/array-utils-modification.mjs.map +1 -1
  17. package/dist/array/impl/array-utils-reducing-value.mjs +100 -150
  18. package/dist/array/impl/array-utils-reducing-value.mjs.map +1 -1
  19. package/dist/array/impl/array-utils-search.mjs +110 -134
  20. package/dist/array/impl/array-utils-search.mjs.map +1 -1
  21. package/dist/array/impl/array-utils-set-op.mjs +146 -38
  22. package/dist/array/impl/array-utils-set-op.mjs.map +1 -1
  23. package/dist/array/impl/array-utils-size.mjs +10 -8
  24. package/dist/array/impl/array-utils-size.mjs.map +1 -1
  25. package/dist/array/impl/array-utils-slice-clamped.mjs +13 -50
  26. package/dist/array/impl/array-utils-slice-clamped.mjs.map +1 -1
  27. package/dist/array/impl/array-utils-slicing.mjs +94 -78
  28. package/dist/array/impl/array-utils-slicing.mjs.map +1 -1
  29. package/dist/array/impl/array-utils-transformation.mjs +291 -199
  30. package/dist/array/impl/array-utils-transformation.mjs.map +1 -1
  31. package/dist/array/impl/array-utils-validation.mjs +54 -56
  32. package/dist/array/impl/array-utils-validation.mjs.map +1 -1
  33. package/dist/array/impl/index.mjs +17 -17
  34. package/dist/array/impl/index.mjs.map +1 -1
  35. package/dist/array/index.mjs +2 -3
  36. package/dist/array/index.mjs.map +1 -1
  37. package/dist/collections/imap-mapped.mjs +335 -291
  38. package/dist/collections/imap-mapped.mjs.map +1 -1
  39. package/dist/collections/imap.mjs +280 -239
  40. package/dist/collections/imap.mjs.map +1 -1
  41. package/dist/collections/index.mjs +7 -7
  42. package/dist/collections/index.mjs.map +1 -1
  43. package/dist/collections/iset-mapped.d.mts.map +1 -1
  44. package/dist/collections/iset-mapped.mjs +448 -263
  45. package/dist/collections/iset-mapped.mjs.map +1 -1
  46. package/dist/collections/iset.mjs +328 -201
  47. package/dist/collections/iset.mjs.map +1 -1
  48. package/dist/collections/queue.mjs +183 -151
  49. package/dist/collections/queue.mjs.map +1 -1
  50. package/dist/collections/stack.mjs +169 -140
  51. package/dist/collections/stack.mjs.map +1 -1
  52. package/dist/entry-point.mjs +4 -77
  53. package/dist/entry-point.mjs.map +1 -1
  54. package/dist/expect-type.mjs +70 -4
  55. package/dist/expect-type.mjs.map +1 -1
  56. package/dist/functional/async-result/async-result.mjs +2 -3
  57. package/dist/functional/async-result/async-result.mjs.map +1 -1
  58. package/dist/functional/async-result/impl/async-result-flat-map.mjs +19 -21
  59. package/dist/functional/async-result/impl/async-result-flat-map.mjs.map +1 -1
  60. package/dist/functional/async-result/impl/async-result-from-promise.mjs +9 -10
  61. package/dist/functional/async-result/impl/async-result-from-promise.mjs.map +1 -1
  62. package/dist/functional/async-result/impl/async-result-from-throwable.mjs +12 -14
  63. package/dist/functional/async-result/impl/async-result-from-throwable.mjs.map +1 -1
  64. package/dist/functional/async-result/impl/async-result-map-err.mjs +16 -19
  65. package/dist/functional/async-result/impl/async-result-map-err.mjs.map +1 -1
  66. package/dist/functional/async-result/impl/async-result-map.mjs +16 -19
  67. package/dist/functional/async-result/impl/async-result-map.mjs.map +1 -1
  68. package/dist/functional/async-result/impl/async-result-unwrap-or.mjs +36 -9
  69. package/dist/functional/async-result/impl/async-result-unwrap-or.mjs.map +1 -1
  70. package/dist/functional/async-result/impl/index.mjs +8 -7
  71. package/dist/functional/async-result/impl/index.mjs.map +1 -1
  72. package/dist/functional/async-result/impl/types.mjs +2 -2
  73. package/dist/functional/async-result/impl/types.mjs.map +1 -1
  74. package/dist/functional/async-result/index.mjs +2 -3
  75. package/dist/functional/async-result/index.mjs.map +1 -1
  76. package/dist/functional/index.mjs +7 -11
  77. package/dist/functional/index.mjs.map +1 -1
  78. package/dist/functional/match.mjs +27 -13
  79. package/dist/functional/match.mjs.map +1 -1
  80. package/dist/functional/optional/impl/index.mjs +19 -18
  81. package/dist/functional/optional/impl/index.mjs.map +1 -1
  82. package/dist/functional/optional/impl/optional-expect-to-be.mjs +16 -18
  83. package/dist/functional/optional/impl/optional-expect-to-be.mjs.map +1 -1
  84. package/dist/functional/optional/impl/optional-filter.mjs +17 -19
  85. package/dist/functional/optional/impl/optional-filter.mjs.map +1 -1
  86. package/dist/functional/optional/impl/optional-flat-map.mjs +13 -15
  87. package/dist/functional/optional/impl/optional-flat-map.mjs.map +1 -1
  88. package/dist/functional/optional/impl/optional-from-nullable.mjs +26 -5
  89. package/dist/functional/optional/impl/optional-from-nullable.mjs.map +1 -1
  90. package/dist/functional/optional/impl/optional-is-none.mjs +21 -5
  91. package/dist/functional/optional/impl/optional-is-none.mjs.map +1 -1
  92. package/dist/functional/optional/impl/optional-is-optional.mjs +26 -8
  93. package/dist/functional/optional/impl/optional-is-optional.mjs.map +1 -1
  94. package/dist/functional/optional/impl/optional-is-some.mjs +22 -5
  95. package/dist/functional/optional/impl/optional-is-some.mjs.map +1 -1
  96. package/dist/functional/optional/impl/optional-map.mjs +16 -18
  97. package/dist/functional/optional/impl/optional-map.mjs.map +1 -1
  98. package/dist/functional/optional/impl/optional-match.mjs +16 -18
  99. package/dist/functional/optional/impl/optional-match.mjs.map +1 -1
  100. package/dist/functional/optional/impl/optional-none.mjs +18 -5
  101. package/dist/functional/optional/impl/optional-none.mjs.map +1 -1
  102. package/dist/functional/optional/impl/optional-or-else.mjs +13 -15
  103. package/dist/functional/optional/impl/optional-or-else.mjs.map +1 -1
  104. package/dist/functional/optional/impl/optional-some.mjs +23 -7
  105. package/dist/functional/optional/impl/optional-some.mjs.map +1 -1
  106. package/dist/functional/optional/impl/optional-to-nullable.mjs +28 -5
  107. package/dist/functional/optional/impl/optional-to-nullable.mjs.map +1 -1
  108. package/dist/functional/optional/impl/optional-unwrap-or.mjs +12 -14
  109. package/dist/functional/optional/impl/optional-unwrap-or.mjs.map +1 -1
  110. package/dist/functional/optional/impl/optional-unwrap-throw.mjs +34 -9
  111. package/dist/functional/optional/impl/optional-unwrap-throw.mjs.map +1 -1
  112. package/dist/functional/optional/impl/optional-unwrap.mjs +6 -9
  113. package/dist/functional/optional/impl/optional-unwrap.mjs.map +1 -1
  114. package/dist/functional/optional/impl/optional-zip.mjs +36 -5
  115. package/dist/functional/optional/impl/optional-zip.mjs.map +1 -1
  116. package/dist/functional/optional/impl/tag.mjs +4 -5
  117. package/dist/functional/optional/impl/tag.mjs.map +1 -1
  118. package/dist/functional/optional/impl/types.mjs +2 -2
  119. package/dist/functional/optional/impl/types.mjs.map +1 -1
  120. package/dist/functional/optional/index.mjs +2 -3
  121. package/dist/functional/optional/index.mjs.map +1 -1
  122. package/dist/functional/optional/optional.mjs +2 -3
  123. package/dist/functional/optional/optional.mjs.map +1 -1
  124. package/dist/functional/pipe.mjs +42 -14
  125. package/dist/functional/pipe.mjs.map +1 -1
  126. package/dist/functional/result/impl/index.mjs +28 -27
  127. package/dist/functional/result/impl/index.mjs.map +1 -1
  128. package/dist/functional/result/impl/result-err.mjs +29 -7
  129. package/dist/functional/result/impl/result-err.mjs.map +1 -1
  130. package/dist/functional/result/impl/result-expect-to-be.mjs +17 -18
  131. package/dist/functional/result/impl/result-expect-to-be.mjs.map +1 -1
  132. package/dist/functional/result/impl/result-flat-map.mjs +18 -21
  133. package/dist/functional/result/impl/result-flat-map.mjs.map +1 -1
  134. package/dist/functional/result/impl/result-fold.mjs +18 -21
  135. package/dist/functional/result/impl/result-fold.mjs.map +1 -1
  136. package/dist/functional/result/impl/result-from-optional.mjs +17 -20
  137. package/dist/functional/result/impl/result-from-optional.mjs.map +1 -1
  138. package/dist/functional/result/impl/result-from-promise.mjs +37 -8
  139. package/dist/functional/result/impl/result-from-promise.mjs.map +1 -1
  140. package/dist/functional/result/impl/result-from-throwable.mjs +41 -14
  141. package/dist/functional/result/impl/result-from-throwable.mjs.map +1 -1
  142. package/dist/functional/result/impl/result-is-err.mjs +21 -5
  143. package/dist/functional/result/impl/result-is-err.mjs.map +1 -1
  144. package/dist/functional/result/impl/result-is-ok.mjs +21 -5
  145. package/dist/functional/result/impl/result-is-ok.mjs.map +1 -1
  146. package/dist/functional/result/impl/result-is-result.mjs +25 -7
  147. package/dist/functional/result/impl/result-is-result.mjs.map +1 -1
  148. package/dist/functional/result/impl/result-map-err.mjs +18 -21
  149. package/dist/functional/result/impl/result-map-err.mjs.map +1 -1
  150. package/dist/functional/result/impl/result-map.mjs +18 -21
  151. package/dist/functional/result/impl/result-map.mjs.map +1 -1
  152. package/dist/functional/result/impl/result-match.mjs +17 -21
  153. package/dist/functional/result/impl/result-match.mjs.map +1 -1
  154. package/dist/functional/result/impl/result-ok.mjs +29 -7
  155. package/dist/functional/result/impl/result-ok.mjs.map +1 -1
  156. package/dist/functional/result/impl/result-or-else.mjs +14 -15
  157. package/dist/functional/result/impl/result-or-else.mjs.map +1 -1
  158. package/dist/functional/result/impl/result-safe-try.mjs +32 -21
  159. package/dist/functional/result/impl/result-safe-try.mjs.map +1 -1
  160. package/dist/functional/result/impl/result-safe-unwrap.mjs +40 -12
  161. package/dist/functional/result/impl/result-safe-unwrap.mjs.map +1 -1
  162. package/dist/functional/result/impl/result-swap.mjs +23 -8
  163. package/dist/functional/result/impl/result-swap.mjs.map +1 -1
  164. package/dist/functional/result/impl/result-to-optional.mjs +30 -7
  165. package/dist/functional/result/impl/result-to-optional.mjs.map +1 -1
  166. package/dist/functional/result/impl/result-unwrap-err-or.mjs +13 -14
  167. package/dist/functional/result/impl/result-unwrap-err-or.mjs.map +1 -1
  168. package/dist/functional/result/impl/result-unwrap-err-throw.mjs +43 -20
  169. package/dist/functional/result/impl/result-unwrap-err-throw.mjs.map +1 -1
  170. package/dist/functional/result/impl/result-unwrap-err.mjs +33 -8
  171. package/dist/functional/result/impl/result-unwrap-err.mjs.map +1 -1
  172. package/dist/functional/result/impl/result-unwrap-ok-or.mjs +13 -14
  173. package/dist/functional/result/impl/result-unwrap-ok-or.mjs.map +1 -1
  174. package/dist/functional/result/impl/result-unwrap-ok.mjs +6 -9
  175. package/dist/functional/result/impl/result-unwrap-ok.mjs.map +1 -1
  176. package/dist/functional/result/impl/result-unwrap-throw.mjs +38 -11
  177. package/dist/functional/result/impl/result-unwrap-throw.mjs.map +1 -1
  178. package/dist/functional/result/impl/result-zip.mjs +35 -5
  179. package/dist/functional/result/impl/result-zip.mjs.map +1 -1
  180. package/dist/functional/result/impl/tag.mjs +4 -5
  181. package/dist/functional/result/impl/tag.mjs.map +1 -1
  182. package/dist/functional/result/impl/types.mjs +2 -2
  183. package/dist/functional/result/impl/types.mjs.map +1 -1
  184. package/dist/functional/result/index.mjs +2 -3
  185. package/dist/functional/result/index.mjs.map +1 -1
  186. package/dist/functional/result/result.mjs +2 -3
  187. package/dist/functional/result/result.mjs.map +1 -1
  188. package/dist/functional/ternary-result/impl/index.mjs +29 -28
  189. package/dist/functional/ternary-result/impl/index.mjs.map +1 -1
  190. package/dist/functional/ternary-result/impl/tag.mjs +6 -6
  191. package/dist/functional/ternary-result/impl/tag.mjs.map +1 -1
  192. package/dist/functional/ternary-result/impl/ternary-result-err.mjs +17 -7
  193. package/dist/functional/ternary-result/impl/ternary-result-err.mjs.map +1 -1
  194. package/dist/functional/ternary-result/impl/ternary-result-expect-to-be.mjs +15 -18
  195. package/dist/functional/ternary-result/impl/ternary-result-expect-to-be.mjs.map +1 -1
  196. package/dist/functional/ternary-result/impl/ternary-result-flat-map.mjs +28 -32
  197. package/dist/functional/ternary-result/impl/ternary-result-flat-map.mjs.map +1 -1
  198. package/dist/functional/ternary-result/impl/ternary-result-fold.mjs +24 -26
  199. package/dist/functional/ternary-result/impl/ternary-result-fold.mjs.map +1 -1
  200. package/dist/functional/ternary-result/impl/ternary-result-from-promise.mjs +21 -8
  201. package/dist/functional/ternary-result/impl/ternary-result-from-promise.mjs.map +1 -1
  202. package/dist/functional/ternary-result/impl/ternary-result-from-throwable.mjs +28 -13
  203. package/dist/functional/ternary-result/impl/ternary-result-from-throwable.mjs.map +1 -1
  204. package/dist/functional/ternary-result/impl/ternary-result-is-err.mjs +19 -5
  205. package/dist/functional/ternary-result/impl/ternary-result-is-err.mjs.map +1 -1
  206. package/dist/functional/ternary-result/impl/ternary-result-is-ok.mjs +21 -5
  207. package/dist/functional/ternary-result/impl/ternary-result-is-ok.mjs.map +1 -1
  208. package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.mjs +28 -8
  209. package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.mjs.map +1 -1
  210. package/dist/functional/ternary-result/impl/ternary-result-is-warn.mjs +20 -5
  211. package/dist/functional/ternary-result/impl/ternary-result-is-warn.mjs.map +1 -1
  212. package/dist/functional/ternary-result/impl/ternary-result-map-err.mjs +17 -18
  213. package/dist/functional/ternary-result/impl/ternary-result-map-err.mjs.map +1 -1
  214. package/dist/functional/ternary-result/impl/ternary-result-map-warn.mjs +20 -23
  215. package/dist/functional/ternary-result/impl/ternary-result-map-warn.mjs.map +1 -1
  216. package/dist/functional/ternary-result/impl/ternary-result-map.mjs +24 -26
  217. package/dist/functional/ternary-result/impl/ternary-result-map.mjs.map +1 -1
  218. package/dist/functional/ternary-result/impl/ternary-result-ok.mjs +18 -7
  219. package/dist/functional/ternary-result/impl/ternary-result-ok.mjs.map +1 -1
  220. package/dist/functional/ternary-result/impl/ternary-result-or-else.mjs +11 -14
  221. package/dist/functional/ternary-result/impl/ternary-result-or-else.mjs.map +1 -1
  222. package/dist/functional/ternary-result/impl/ternary-result-to-optional.mjs +24 -10
  223. package/dist/functional/ternary-result/impl/ternary-result-to-optional.mjs.map +1 -1
  224. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-or.mjs +11 -14
  225. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-or.mjs.map +1 -1
  226. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-throw.mjs +30 -19
  227. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-throw.mjs.map +1 -1
  228. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err.mjs +20 -8
  229. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err.mjs.map +1 -1
  230. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok-or.mjs +11 -14
  231. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok-or.mjs.map +1 -1
  232. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok.mjs +7 -9
  233. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok.mjs.map +1 -1
  234. package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.mjs +30 -22
  235. package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.mjs.map +1 -1
  236. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-or.mjs +11 -14
  237. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-or.mjs.map +1 -1
  238. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.mjs +27 -17
  239. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.mjs.map +1 -1
  240. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn.mjs +20 -8
  241. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn.mjs.map +1 -1
  242. package/dist/functional/ternary-result/impl/ternary-result-warn.mjs +21 -8
  243. package/dist/functional/ternary-result/impl/ternary-result-warn.mjs.map +1 -1
  244. package/dist/functional/ternary-result/impl/ternary-result-zip.mjs +47 -19
  245. package/dist/functional/ternary-result/impl/ternary-result-zip.mjs.map +1 -1
  246. package/dist/functional/ternary-result/impl/types.mjs +2 -2
  247. package/dist/functional/ternary-result/impl/types.mjs.map +1 -1
  248. package/dist/functional/ternary-result/impl/variant-name.mjs +12 -14
  249. package/dist/functional/ternary-result/impl/variant-name.mjs.map +1 -1
  250. package/dist/functional/ternary-result/index.mjs +2 -3
  251. package/dist/functional/ternary-result/index.mjs.map +1 -1
  252. package/dist/functional/ternary-result/ternary-result.mjs +2 -3
  253. package/dist/functional/ternary-result/ternary-result.mjs.map +1 -1
  254. package/dist/guard/has-key.mjs +43 -4
  255. package/dist/guard/has-key.mjs.map +1 -1
  256. package/dist/guard/index.mjs +8 -8
  257. package/dist/guard/index.mjs.map +1 -1
  258. package/dist/guard/is-non-empty-string.mjs +39 -4
  259. package/dist/guard/is-non-empty-string.mjs.map +1 -1
  260. package/dist/guard/is-non-null-object.mjs +36 -4
  261. package/dist/guard/is-non-null-object.mjs.map +1 -1
  262. package/dist/guard/is-primitive.mjs +46 -15
  263. package/dist/guard/is-primitive.mjs.map +1 -1
  264. package/dist/guard/is-record.mjs +89 -6
  265. package/dist/guard/is-record.mjs.map +1 -1
  266. package/dist/guard/is-type.mjs +404 -19
  267. package/dist/guard/is-type.mjs.map +1 -1
  268. package/dist/guard/key-is-in.mjs +42 -4
  269. package/dist/guard/key-is-in.mjs.map +1 -1
  270. package/dist/index.mjs +12 -65
  271. package/dist/index.mjs.map +1 -1
  272. package/dist/iterator/index.mjs +2 -2
  273. package/dist/iterator/index.mjs.map +1 -1
  274. package/dist/iterator/range.mjs +19 -57
  275. package/dist/iterator/range.mjs.map +1 -1
  276. package/dist/json/index.mjs +2 -2
  277. package/dist/json/index.mjs.map +1 -1
  278. package/dist/json/json.mjs +346 -105
  279. package/dist/json/json.mjs.map +1 -1
  280. package/dist/number/branded-types/finite-number.mjs +148 -137
  281. package/dist/number/branded-types/finite-number.mjs.map +1 -1
  282. package/dist/number/branded-types/index.mjs +33 -33
  283. package/dist/number/branded-types/index.mjs.map +1 -1
  284. package/dist/number/branded-types/int.mjs +245 -209
  285. package/dist/number/branded-types/int.mjs.map +1 -1
  286. package/dist/number/branded-types/int16.mjs +141 -131
  287. package/dist/number/branded-types/int16.mjs.map +1 -1
  288. package/dist/number/branded-types/int32.mjs +141 -131
  289. package/dist/number/branded-types/int32.mjs.map +1 -1
  290. package/dist/number/branded-types/negative-finite-number.mjs +155 -149
  291. package/dist/number/branded-types/negative-finite-number.mjs.map +1 -1
  292. package/dist/number/branded-types/negative-int.mjs +125 -110
  293. package/dist/number/branded-types/negative-int.mjs.map +1 -1
  294. package/dist/number/branded-types/negative-safe-int.mjs +126 -115
  295. package/dist/number/branded-types/negative-safe-int.mjs.map +1 -1
  296. package/dist/number/branded-types/non-negative-finite-number.mjs +164 -154
  297. package/dist/number/branded-types/non-negative-finite-number.mjs.map +1 -1
  298. package/dist/number/branded-types/non-negative-int16.mjs +137 -125
  299. package/dist/number/branded-types/non-negative-int16.mjs.map +1 -1
  300. package/dist/number/branded-types/non-negative-int32.mjs +137 -125
  301. package/dist/number/branded-types/non-negative-int32.mjs.map +1 -1
  302. package/dist/number/branded-types/non-positive-finite-number.mjs +143 -139
  303. package/dist/number/branded-types/non-positive-finite-number.mjs.map +1 -1
  304. package/dist/number/branded-types/non-positive-int.mjs +116 -99
  305. package/dist/number/branded-types/non-positive-int.mjs.map +1 -1
  306. package/dist/number/branded-types/non-positive-safe-int.mjs +118 -107
  307. package/dist/number/branded-types/non-positive-safe-int.mjs.map +1 -1
  308. package/dist/number/branded-types/non-zero-finite-number.mjs +144 -129
  309. package/dist/number/branded-types/non-zero-finite-number.mjs.map +1 -1
  310. package/dist/number/branded-types/non-zero-int.mjs +102 -82
  311. package/dist/number/branded-types/non-zero-int.mjs.map +1 -1
  312. package/dist/number/branded-types/non-zero-int16.mjs +118 -105
  313. package/dist/number/branded-types/non-zero-int16.mjs.map +1 -1
  314. package/dist/number/branded-types/non-zero-int32.mjs +118 -105
  315. package/dist/number/branded-types/non-zero-int32.mjs.map +1 -1
  316. package/dist/number/branded-types/non-zero-safe-int.mjs +122 -108
  317. package/dist/number/branded-types/non-zero-safe-int.mjs.map +1 -1
  318. package/dist/number/branded-types/non-zero-uint16.mjs +118 -104
  319. package/dist/number/branded-types/non-zero-uint16.mjs.map +1 -1
  320. package/dist/number/branded-types/non-zero-uint32.mjs +118 -104
  321. package/dist/number/branded-types/non-zero-uint32.mjs.map +1 -1
  322. package/dist/number/branded-types/positive-finite-number.mjs +167 -160
  323. package/dist/number/branded-types/positive-finite-number.mjs.map +1 -1
  324. package/dist/number/branded-types/positive-int.mjs +260 -224
  325. package/dist/number/branded-types/positive-int.mjs.map +1 -1
  326. package/dist/number/branded-types/positive-int16.mjs +134 -122
  327. package/dist/number/branded-types/positive-int16.mjs.map +1 -1
  328. package/dist/number/branded-types/positive-int32.mjs +134 -122
  329. package/dist/number/branded-types/positive-int32.mjs.map +1 -1
  330. package/dist/number/branded-types/positive-safe-int.mjs +292 -258
  331. package/dist/number/branded-types/positive-safe-int.mjs.map +1 -1
  332. package/dist/number/branded-types/positive-uint16.mjs +134 -122
  333. package/dist/number/branded-types/positive-uint16.mjs.map +1 -1
  334. package/dist/number/branded-types/positive-uint32.mjs +134 -122
  335. package/dist/number/branded-types/positive-uint32.mjs.map +1 -1
  336. package/dist/number/branded-types/safe-int.mjs +284 -255
  337. package/dist/number/branded-types/safe-int.mjs.map +1 -1
  338. package/dist/number/branded-types/safe-uint.mjs +135 -124
  339. package/dist/number/branded-types/safe-uint.mjs.map +1 -1
  340. package/dist/number/branded-types/uint.mjs +248 -211
  341. package/dist/number/branded-types/uint.mjs.map +1 -1
  342. package/dist/number/branded-types/uint16.mjs +132 -121
  343. package/dist/number/branded-types/uint16.mjs.map +1 -1
  344. package/dist/number/branded-types/uint32.mjs +132 -121
  345. package/dist/number/branded-types/uint32.mjs.map +1 -1
  346. package/dist/number/enum/index.mjs +3 -3
  347. package/dist/number/enum/index.mjs.map +1 -1
  348. package/dist/number/enum/int8.mjs +146 -131
  349. package/dist/number/enum/int8.mjs.map +1 -1
  350. package/dist/number/enum/uint8.mjs +133 -119
  351. package/dist/number/enum/uint8.mjs.map +1 -1
  352. package/dist/number/index.mjs +6 -37
  353. package/dist/number/index.mjs.map +1 -1
  354. package/dist/number/num-arithmetic-types.mjs +42 -1
  355. package/dist/number/num-arithmetic-types.mjs.map +1 -1
  356. package/dist/number/num.mjs +541 -83
  357. package/dist/number/num.mjs.map +1 -1
  358. package/dist/number/refined-number-utils.mjs +294 -133
  359. package/dist/number/refined-number-utils.mjs.map +1 -1
  360. package/dist/object/index.mjs +2 -2
  361. package/dist/object/index.mjs.map +1 -1
  362. package/dist/object/object.mjs +355 -202
  363. package/dist/object/object.mjs.map +1 -1
  364. package/dist/others/cast-mutable.mjs +38 -11
  365. package/dist/others/cast-mutable.mjs.map +1 -1
  366. package/dist/others/cast-readonly.mjs +37 -11
  367. package/dist/others/cast-readonly.mjs.map +1 -1
  368. package/dist/others/debounce-function.mjs +22 -11
  369. package/dist/others/debounce-function.mjs.map +1 -1
  370. package/dist/others/fast-deep-equal.mjs +70 -51
  371. package/dist/others/fast-deep-equal.mjs.map +1 -1
  372. package/dist/others/if-then.mjs +32 -5
  373. package/dist/others/if-then.mjs.map +1 -1
  374. package/dist/others/index.mjs +10 -10
  375. package/dist/others/index.mjs.map +1 -1
  376. package/dist/others/map-nullable.mjs +11 -13
  377. package/dist/others/map-nullable.mjs.map +1 -1
  378. package/dist/others/memoize-function.mjs +14 -16
  379. package/dist/others/memoize-function.mjs.map +1 -1
  380. package/dist/others/tuple.mjs +52 -4
  381. package/dist/others/tuple.mjs.map +1 -1
  382. package/dist/others/unknown-to-string.mjs +91 -47
  383. package/dist/others/unknown-to-string.mjs.map +1 -1
  384. package/dist/promise/index.mjs +2 -2
  385. package/dist/promise/index.mjs.map +1 -1
  386. package/dist/promise/promise.mjs +51 -10
  387. package/dist/promise/promise.mjs.map +1 -1
  388. package/dist/string/index.mjs +2 -2
  389. package/dist/string/index.mjs.map +1 -1
  390. package/dist/string/str.mjs +250 -83
  391. package/dist/string/str.mjs.map +1 -1
  392. package/dist/types.mjs +3 -2
  393. package/dist/types.mjs.map +1 -1
  394. package/package.json +5 -6
  395. package/src/array/impl/array-utils-length-constraint-preservation.test.mts +2 -2
  396. package/src/collections/imap-mapped.mts +4 -4
  397. package/src/collections/imap.mts +1 -1
  398. package/src/collections/imap.test.mts +1 -1
  399. package/src/collections/iset-mapped.mts +2 -1
  400. package/src/collections/iset.mts +1 -1
  401. package/src/functional/async-result.test.mts +3 -2
  402. package/src/functional/optional.test.mts +2 -1
  403. package/src/functional/result.test.mts +0 -2
  404. package/src/guard/is-non-empty-string.test.mts +2 -2
  405. package/src/guard/is-non-null-object.test.mts +3 -3
  406. package/src/guard/is-primitive.test.mts +3 -3
  407. package/src/guard/is-type.test.mts +3 -3
  408. package/src/json/json.test.mts +1 -1
  409. package/src/number/enum/int8.mts +1 -1
@@ -1,245 +1,286 @@
1
- import { isSome } from '../functional/optional/impl/optional-is-some.mjs';
2
- import { none } from '../functional/optional/impl/optional-none.mjs';
3
- import { some } from '../functional/optional/impl/optional-some.mjs';
4
- import { isNone } from '../functional/optional/impl/optional-is-none.mjs';
5
- import '@sindresorhus/is';
6
- import { tp } from '../others/tuple.mjs';
7
- import { unknownToString } from '../others/unknown-to-string.mjs';
8
- import { pipe } from '../functional/pipe.mjs';
9
- import '../number/branded-types/finite-number.mjs';
10
- import '../number/branded-types/int.mjs';
11
- import '../number/branded-types/int16.mjs';
12
- import '../number/branded-types/int32.mjs';
13
- import '../number/branded-types/negative-finite-number.mjs';
14
- import '../number/branded-types/negative-int.mjs';
15
- import '../number/branded-types/negative-safe-int.mjs';
16
- import '../number/branded-types/non-negative-finite-number.mjs';
17
- import '../number/branded-types/non-negative-int16.mjs';
18
- import '../number/branded-types/non-negative-int32.mjs';
19
- import '../number/branded-types/non-positive-finite-number.mjs';
20
- import '../number/branded-types/non-positive-int.mjs';
21
- import '../number/branded-types/non-positive-safe-int.mjs';
22
- import '../number/branded-types/non-zero-finite-number.mjs';
23
- import '../number/branded-types/non-zero-int.mjs';
24
- import '../number/branded-types/non-zero-int16.mjs';
25
- import '../number/branded-types/non-zero-int32.mjs';
26
- import '../number/branded-types/non-zero-safe-int.mjs';
27
- import '../number/branded-types/non-zero-uint16.mjs';
28
- import '../number/branded-types/non-zero-uint32.mjs';
29
- import '../number/branded-types/positive-finite-number.mjs';
30
- import '../number/branded-types/positive-int.mjs';
31
- import '../number/branded-types/positive-int16.mjs';
32
- import '../number/branded-types/positive-int32.mjs';
33
- import '../number/branded-types/positive-safe-int.mjs';
34
- import '../number/branded-types/positive-uint16.mjs';
35
- import '../number/branded-types/positive-uint32.mjs';
36
- import '../number/branded-types/safe-int.mjs';
37
- import '../number/branded-types/safe-uint.mjs';
38
- import '../number/branded-types/uint.mjs';
39
- import '../number/branded-types/uint16.mjs';
40
- import { asUint32 } from '../number/branded-types/uint32.mjs';
41
- import '../number/enum/int8.mjs';
42
- import '../number/enum/uint8.mjs';
43
- import '../number/num.mjs';
44
- import '../number/refined-number-utils.mjs';
45
-
46
- var IMap;
47
- ((IMap2) => {
48
- IMap2.create = (iterable) => new IMapClass(iterable);
49
- IMap2.equal = (a, b) => a.size === b.size && a.every(
50
- (v, k) => pipe(b.get(k)).map((v2) => isSome(v2) && v2.value === v).value
51
- );
1
+ import { Optional, pipe } from '../functional/index.mjs';
2
+ import { asUint32 } from '../number/index.mjs';
3
+ import { tp, unknownToString } from '../others/index.mjs';
4
+ /** Provides utility functions for IMap. */
5
+ export var IMap;
6
+ (function (IMap) {
7
+ /**
8
+ * Creates a new IMap instance from an iterable of key-value pairs.
9
+ *
10
+ * This factory function accepts any iterable of [key, value] tuples,
11
+ * including arrays, JavaScript Maps, other IMaps, or custom iterables. The
12
+ * resulting IMap will contain all the entries from the input iterable.
13
+ *
14
+ * **Performance:** O(n) where n is the number of entries in the iterable.
15
+ *
16
+ * @example
17
+ *
18
+ * ```ts
19
+ * const map = IMap.create<string, number | string>([
20
+ * ['id', 1],
21
+ * ['status', 'active'],
22
+ * ]);
23
+ *
24
+ * assert.isTrue(map.size === 2);
25
+ *
26
+ * assert.deepStrictEqual(map.get('status'), Optional.some('active'));
27
+ * ```
28
+ *
29
+ * @template K The type of the keys. Must extend MapSetKeyType.
30
+ * @template V The type of the values.
31
+ * @param iterable An iterable of key-value pairs (e.g., Array, Map, IMap,
32
+ * etc.)
33
+ * @returns A new IMap instance containing all entries from the iterable.
34
+ */
35
+ IMap.create = (iterable) => new IMapClass(iterable);
36
+ /**
37
+ * Checks if two IMap instances are structurally equal.
38
+ *
39
+ * Two IMaps are considered equal if they have the same size and contain
40
+ * exactly the same key-value pairs. The order of entries does not matter for
41
+ * equality comparison. Values are compared using JavaScript's `===`
42
+ * operator.
43
+ *
44
+ * **Performance:** O(n) where n is the size of the smaller map.
45
+ *
46
+ * @example
47
+ *
48
+ * ```ts
49
+ * const first = IMap.create<'a' | 'b', number>([
50
+ * ['a', 1],
51
+ * ['b', 2],
52
+ * ]);
53
+ *
54
+ * const second = IMap.create<'a' | 'b', number>([
55
+ * ['b', 2],
56
+ * ['a', 1],
57
+ * ]);
58
+ *
59
+ * const third = IMap.create<'a' | 'b', number>([
60
+ * ['a', 1],
61
+ * ['b', 3],
62
+ * ]);
63
+ *
64
+ * assert.isTrue(IMap.equal(first, second));
65
+ *
66
+ * assert.isFalse(IMap.equal(first, third));
67
+ * ```
68
+ *
69
+ * @template K The type of the keys.
70
+ * @template V The type of the values.
71
+ * @param a The first IMap instance to compare.
72
+ * @param b The second IMap instance to compare.
73
+ * @returns `true` if the maps contain exactly the same key-value pairs,
74
+ * `false` otherwise.
75
+ */
76
+ IMap.equal = (a, b) => a.size === b.size &&
77
+ a.every((v, k) => pipe(b.get(k)).map((v2) => Optional.isSome(v2) && v2.value === v).value);
52
78
  })(IMap || (IMap = {}));
79
+ /**
80
+ * Internal class implementation for IMap providing immutable map operations.
81
+ *
82
+ * This class implements the IMap interface using JavaScript's native Map as the
83
+ * underlying storage mechanism for optimal performance. All mutation operations
84
+ * create new instances rather than modifying the existing map, ensuring
85
+ * immutability.
86
+ *
87
+ * **Implementation Details:**
88
+ *
89
+ * - Uses Map<K, V> internally for type safety and performance
90
+ * - Implements copy-on-write semantics for efficiency
91
+ * - Provides optional debug messaging for development
92
+ *
93
+ * @template K The type of the keys. Must extend MapSetKeyType.
94
+ * @template V The type of the values.
95
+ * @implements IMap
96
+ * @implements Iterable
97
+ * @internal This class should not be used directly. Use IMap.create() instead.
98
+ */
53
99
  class IMapClass {
54
- #map;
55
- #showNotFoundMessage;
56
- /**
57
- * Constructs an IMapClass instance with the given entries.
58
- *
59
- * @param iterable An iterable of key-value pairs to populate the map.
60
- * @param showNotFoundMessage Whether to log warning messages when operations
61
- * are performed on non-existent keys. Useful for debugging. Defaults to
62
- * false for production use.
63
- * @internal Use IMap.create() instead of calling this constructor directly.
64
- */
65
- constructor(iterable, showNotFoundMessage = false) {
66
- this.#map = new Map(iterable);
67
- this.#showNotFoundMessage = showNotFoundMessage;
68
- }
69
- /** @inheritdoc */
70
- get size() {
71
- return asUint32(this.#map.size);
72
- }
73
- /** @inheritdoc */
74
- has(key) {
75
- return this.#map.has(key);
76
- }
77
- /** @inheritdoc */
78
- get(key) {
79
- if (!this.has(key)) return none;
80
- return some(this.#map.get(key));
81
- }
82
- /** @inheritdoc */
83
- every(predicate) {
84
- for (const [k, v] of this.entries()) {
85
- if (!predicate(v, k)) return false;
86
- }
87
- return true;
88
- }
89
- /** @inheritdoc */
90
- some(predicate) {
91
- for (const [k, v] of this.entries()) {
92
- if (predicate(v, k)) return true;
93
- }
94
- return false;
95
- }
96
- /** @inheritdoc */
97
- delete(key) {
98
- if (!this.has(key)) {
99
- if (this.#showNotFoundMessage) {
100
- const keyStr = unknownToString(key);
101
- console.warn(`IMap.delete: key not found: ${keyStr}`);
102
- }
103
- return this;
104
- }
105
- return IMap.create(
106
- Array.from(this.#map).filter(([k]) => !Object.is(k, key))
107
- );
108
- }
109
- /** @inheritdoc */
110
- set(key, value) {
111
- const curr = this.get(key);
112
- if (isSome(curr) && value === curr.value) return this;
113
- if (!this.has(key)) {
114
- return IMap.create([...this.#map, tp(key, value)]);
115
- }
116
- return IMap.create(
117
- Array.from(this.#map, ([k, v]) => tp(k, Object.is(k, key) ? value : v))
118
- );
119
- }
120
- /** @inheritdoc */
121
- update(key, updater) {
122
- const curr = this.get(key);
123
- if (isNone(curr)) {
124
- if (this.#showNotFoundMessage) {
125
- const keyStr = unknownToString(key);
126
- console.warn(`IMap.update: key not found: ${keyStr}`);
127
- }
128
- return this;
129
- }
130
- return IMap.create(
131
- Array.from(
132
- this.#map,
133
- ([k, v]) => tp(k, Object.is(k, key) ? updater(curr.value) : v)
134
- )
135
- );
136
- }
137
- /** @inheritdoc */
138
- withMutations(actions) {
139
- const mut_result = new Map(this.#map);
140
- const updateFn = (action) => {
141
- switch (action.type) {
142
- case "delete":
143
- mut_result.delete(action.key);
144
- break;
145
- case "set":
146
- mut_result.set(action.key, action.value);
147
- break;
148
- case "update": {
149
- const { key } = action;
150
- const curr = mut_result.get(key);
151
- if (curr === void 0 || !mut_result.has(key)) {
100
+ #map;
101
+ #showNotFoundMessage;
102
+ /**
103
+ * Constructs an IMapClass instance with the given entries.
104
+ *
105
+ * @param iterable An iterable of key-value pairs to populate the map.
106
+ * @param showNotFoundMessage Whether to log warning messages when operations
107
+ * are performed on non-existent keys. Useful for debugging. Defaults to
108
+ * false for production use.
109
+ * @internal Use IMap.create() instead of calling this constructor directly.
110
+ */
111
+ constructor(iterable, showNotFoundMessage = false) {
112
+ this.#map = new Map(iterable);
113
+ this.#showNotFoundMessage = showNotFoundMessage;
114
+ }
115
+ /** @inheritdoc */
116
+ get size() {
117
+ return asUint32(this.#map.size);
118
+ }
119
+ /** @inheritdoc */
120
+ has(key) {
121
+ // 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`
122
+ return this.#map.has(key);
123
+ }
124
+ /** @inheritdoc */
125
+ get(key) {
126
+ if (!this.has(key))
127
+ return Optional.none;
128
+ // eslint-disable-next-line total-functions/no-unsafe-type-assertion, @typescript-eslint/no-non-null-assertion
129
+ return Optional.some(this.#map.get(key));
130
+ }
131
+ /** @inheritdoc */
132
+ every(predicate) {
133
+ for (const [k, v] of this.entries()) {
134
+ if (!predicate(v, k))
135
+ return false;
136
+ }
137
+ return true;
138
+ }
139
+ /** @inheritdoc */
140
+ some(predicate) {
141
+ for (const [k, v] of this.entries()) {
142
+ if (predicate(v, k))
143
+ return true;
144
+ }
145
+ return false;
146
+ }
147
+ /** @inheritdoc */
148
+ delete(key) {
149
+ if (!this.has(key)) {
152
150
  if (this.#showNotFoundMessage) {
153
- const keyStr = unknownToString(key);
154
- console.warn(`IMap.withMutations: key not found: ${keyStr}`);
151
+ const keyStr = unknownToString(key);
152
+ console.warn(`IMap.delete: key not found: ${keyStr}`);
153
+ }
154
+ return this;
155
+ }
156
+ return IMap.create(Array.from(this.#map).filter(([k]) => !Object.is(k, key)));
157
+ }
158
+ /** @inheritdoc */
159
+ set(key, value) {
160
+ const curr = this.get(key);
161
+ if (Optional.isSome(curr) && value === curr.value)
162
+ return this; // has no changes
163
+ if (!this.has(key)) {
164
+ return IMap.create([...this.#map, tp(key, value)]);
165
+ }
166
+ return IMap.create(Array.from(this.#map, ([k, v]) => tp(k, Object.is(k, key) ? value : v)));
167
+ }
168
+ /** @inheritdoc */
169
+ update(key, updater) {
170
+ const curr = this.get(key);
171
+ if (Optional.isNone(curr)) {
172
+ if (this.#showNotFoundMessage) {
173
+ const keyStr = unknownToString(key);
174
+ console.warn(`IMap.update: key not found: ${keyStr}`);
175
+ }
176
+ return this;
177
+ }
178
+ return IMap.create(Array.from(this.#map, ([k, v]) => tp(k, Object.is(k, key) ? updater(curr.value) : v)));
179
+ }
180
+ /** @inheritdoc */
181
+ withMutations(actions) {
182
+ const mut_result = new Map(this.#map);
183
+ const updateFn = (action) => {
184
+ switch (action.type) {
185
+ case 'delete':
186
+ mut_result.delete(action.key);
187
+ break;
188
+ case 'set':
189
+ mut_result.set(action.key, action.value);
190
+ break;
191
+ case 'update': {
192
+ const { key } = action;
193
+ const curr = mut_result.get(key);
194
+ if (curr === undefined || !mut_result.has(key)) {
195
+ if (this.#showNotFoundMessage) {
196
+ const keyStr = unknownToString(key);
197
+ console.warn(`IMap.withMutations: key not found: ${keyStr}`);
198
+ }
199
+ break;
200
+ }
201
+ mut_result.set(key, action.updater(curr));
202
+ break;
203
+ }
155
204
  }
156
- break;
157
- }
158
- mut_result.set(key, action.updater(curr));
159
- break;
205
+ };
206
+ for (const action of actions) {
207
+ updateFn(action);
208
+ }
209
+ return IMap.create(mut_result);
210
+ }
211
+ /** @inheritdoc */
212
+ map(mapFn) {
213
+ return IMap.create(this.toArray().map(([k, v]) => tp(k, mapFn(v, k))));
214
+ }
215
+ /** @inheritdoc */
216
+ mapKeys(mapFn) {
217
+ return IMap.create(this.toArray().map(([k, v]) => tp(mapFn(k), v)));
218
+ }
219
+ /** @inheritdoc */
220
+ mapEntries(mapFn) {
221
+ return IMap.create(this.toArray().map(mapFn));
222
+ }
223
+ /** @inheritdoc */
224
+ forEach(callbackfn) {
225
+ for (const [key, value] of this.#map) {
226
+ callbackfn(value, key);
160
227
  }
161
- }
162
- };
163
- for (const action of actions) {
164
- updateFn(action);
165
- }
166
- return IMap.create(mut_result);
167
- }
168
- /** @inheritdoc */
169
- map(mapFn) {
170
- return IMap.create(this.toArray().map(([k, v]) => tp(k, mapFn(v, k))));
171
- }
172
- /** @inheritdoc */
173
- mapKeys(mapFn) {
174
- return IMap.create(this.toArray().map(([k, v]) => tp(mapFn(k), v)));
175
- }
176
- /** @inheritdoc */
177
- mapEntries(mapFn) {
178
- return IMap.create(this.toArray().map(mapFn));
179
- }
180
- /** @inheritdoc */
181
- forEach(callbackfn) {
182
- for (const [key, value] of this.#map) {
183
- callbackfn(value, key);
184
- }
185
- }
186
- /**
187
- * @example
188
- *
189
- * ```ts
190
- * const entries = [
191
- * ['first', 1],
192
- * ['second', 2],
193
- * ] as const satisfies readonly (readonly [string, number])[];
194
- *
195
- * const map = IMap.create(entries);
196
- *
197
- * const collected = Array.from(map);
198
- *
199
- * assert.deepStrictEqual(collected, [
200
- * ['first', 1],
201
- * ['second', 2],
202
- * ]);
203
- * ```
204
- *
205
- * @inheritdoc
206
- */
207
- [Symbol.iterator]() {
208
- return this.#map[Symbol.iterator]();
209
- }
210
- /** @inheritdoc */
211
- keys() {
212
- return this.#map.keys();
213
- }
214
- /** @inheritdoc */
215
- values() {
216
- return this.#map.values();
217
- }
218
- /** @inheritdoc */
219
- entries() {
220
- return this.#map.entries();
221
- }
222
- /** @inheritdoc */
223
- toKeysArray() {
224
- return Array.from(this.keys());
225
- }
226
- /** @inheritdoc */
227
- toValuesArray() {
228
- return Array.from(this.values());
229
- }
230
- /** @inheritdoc */
231
- toEntriesArray() {
232
- return Array.from(this.entries());
233
- }
234
- /** @inheritdoc */
235
- toArray() {
236
- return Array.from(this.entries());
237
- }
238
- /** @inheritdoc */
239
- toRawMap() {
240
- return this.#map;
241
- }
228
+ }
229
+ /**
230
+ * @example
231
+ *
232
+ * ```ts
233
+ * const entries = [
234
+ * ['first', 1],
235
+ * ['second', 2],
236
+ * ] as const satisfies readonly (readonly [string, number])[];
237
+ *
238
+ * const map = IMap.create(entries);
239
+ *
240
+ * const collected = Array.from(map);
241
+ *
242
+ * assert.deepStrictEqual(collected, [
243
+ * ['first', 1],
244
+ * ['second', 2],
245
+ * ]);
246
+ * ```
247
+ *
248
+ * @inheritdoc
249
+ */
250
+ [Symbol.iterator]() {
251
+ return this.#map[Symbol.iterator]();
252
+ }
253
+ /** @inheritdoc */
254
+ keys() {
255
+ return this.#map.keys();
256
+ }
257
+ /** @inheritdoc */
258
+ values() {
259
+ return this.#map.values();
260
+ }
261
+ /** @inheritdoc */
262
+ entries() {
263
+ return this.#map.entries();
264
+ }
265
+ /** @inheritdoc */
266
+ toKeysArray() {
267
+ return Array.from(this.keys());
268
+ }
269
+ /** @inheritdoc */
270
+ toValuesArray() {
271
+ return Array.from(this.values());
272
+ }
273
+ /** @inheritdoc */
274
+ toEntriesArray() {
275
+ return Array.from(this.entries());
276
+ }
277
+ /** @inheritdoc */
278
+ toArray() {
279
+ return Array.from(this.entries());
280
+ }
281
+ /** @inheritdoc */
282
+ toRawMap() {
283
+ return this.#map;
284
+ }
242
285
  }
243
-
244
- export { IMap };
245
- //# sourceMappingURL=imap.mjs.map
286
+ //# sourceMappingURL=imap.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"imap.mjs","sources":["../../src/collections/imap.mts"],"sourcesContent":["/* eslint-disable unicorn/prefer-iterator-to-array-at-end */\nimport { type WidenLiteral } from 'ts-type-forge';\nimport { Optional, pipe } from '../functional/index.mjs';\nimport { asUint32 } from '../number/index.mjs';\nimport { tp, unknownToString } from '../others/index.mjs';\nimport { type MapSetKeyType, type SizeType } from '../types.mjs';\n\n/**\n * Interface for an immutable map with lookup operations and functional\n * programming patterns.\n *\n * This interface defines all methods and properties available on IMap\n * instances. All operations that modify the map return new IMap instances,\n * preserving immutability. The underlying implementation uses JavaScript's\n * native Map but creates copies on mutations to maintain immutability.\n *\n * **Immutability Guarantees:**\n *\n * - All mutation operations (set, delete, update) return new IMap instances\n * - Original IMap instances are never modified\n * - Safe for concurrent access and functional programming patterns\n *\n * **Performance Characteristics:**\n *\n * - get/has: O(1) average case\n * - set/delete: O(n) due to copying for immutability\n * - map/filter operations: O(n)\n * - iteration: O(n)\n *\n * @template K The type of the keys in the map. Must extend MapSetKeyType\n * (string, number, boolean, etc.)\n * @template V The type of the values in the map.\n */\ntype IMapInterface<K extends MapSetKeyType, V> = Readonly<{\n // Getting information\n\n /**\n * The number of elements in the map.\n *\n * @example\n *\n * ```ts\n * const entries = [\n * ['a', 1],\n * ['b', 2],\n * ] as const satisfies readonly (readonly [string, number])[];\n *\n * const map = IMap.create(entries);\n *\n * assert.isTrue(map.size === 2);\n * ```\n */\n size: SizeType.Arr;\n\n /**\n * Checks if a key exists in the map. Allows for wider literal types for keys\n * during checking.\n *\n * @example\n *\n * ```ts\n * const map = IMap.create<'id' | 'enabled', number | boolean>([\n * ['id', 42],\n * ['enabled', true],\n * ]);\n *\n * assert.isTrue(map.has('id'));\n *\n * assert.isFalse(map.has('missing'));\n * ```\n *\n * @param key The key to check.\n * @returns `true` if the key exists, `false` otherwise.\n */\n has: (key: K | (WidenLiteral<K> & {})) => boolean;\n\n /**\n * Retrieves the value associated with a key.\n *\n * @example\n *\n * ```ts\n * const map = IMap.create([['user', { id: 1 }]]);\n *\n * assert.deepStrictEqual(map.get('user'), Optional.some({ id: 1 }));\n *\n * assert.deepStrictEqual(map.get('missing'), Optional.none);\n * ```\n *\n * @param key The key to retrieve.\n * @returns The value associated with the key wrapped with `Optional.some`, or\n * `Optional.none` if the key does not exist.\n */\n get: (key: K | (WidenLiteral<K> & {})) => Optional<V>;\n\n // Reducing a value\n\n /**\n * Checks if all elements in the map satisfy a predicate. Also supports a\n * type predicate overload that narrows the type of values in the map if the\n * predicate returns true for all elements.\n *\n * @example\n *\n * ```ts\n * const map = IMap.create([\n * ['a', 2],\n * ['b', 4],\n * ]);\n *\n * const allEven = map.every((value) => value % 2 === 0);\n *\n * const isNarrowed = map.every((value): value is 2 | 4 => value % 2 === 0);\n *\n * assert.isTrue(allEven);\n *\n * assert.isTrue(isNarrowed);\n * ```\n *\n * @template W The narrowed type of the values.\n * @param predicate A function to test each key-value pair.\n * @returns `true` if all elements satisfy the predicate, `false` otherwise.\n */\n every: ((predicate: (value: V, key: K) => boolean) => boolean) &\n (<W extends V>(\n predicate: (value: V, key: K) => value is W,\n ) => this is IMap<K, W>);\n\n /**\n * Checks if at least one element in the map satisfies a predicate.\n *\n * @example\n *\n * ```ts\n * const entries = [\n * ['alice', 3],\n * ['bob', 5],\n * ] as const satisfies readonly (readonly [string, number])[];\n *\n * const map = IMap.create(entries);\n *\n * assert.isTrue(map.some((value) => value > 4));\n *\n * assert.isFalse(map.some((value) => value > 10));\n * ```\n *\n * @param predicate A function to test each key-value pair.\n * @returns `true` if at least one element satisfies the predicate, `false`\n * otherwise.\n */\n some: (predicate: (value: V, key: K) => boolean) => boolean;\n\n // Mutation\n\n /**\n * Deletes a key-value pair from the map.\n *\n * @example\n *\n * ```ts\n * const original = IMap.create([\n * ['a', 1],\n * ['b', 2],\n * ]);\n *\n * const withoutB = original.delete('b');\n *\n * assert.deepStrictEqual(original.get('b'), Optional.some(2));\n *\n * assert.deepStrictEqual(withoutB.get('b'), Optional.none);\n *\n * assert.isTrue(original.size === 2);\n *\n * assert.isTrue(withoutB.size === 1);\n * ```\n *\n * @param key The key to delete.\n * @returns A new IMap instance without the specified key.\n */\n delete: (key: K) => IMap<K, V>;\n\n /**\n * Sets a key-value pair in the map.\n *\n * @example\n *\n * ```ts\n * const entries = [['count', 1]] as const satisfies readonly (readonly [\n * 'count' | 'status',\n * number | string,\n * ])[];\n *\n * const base = IMap.create<'count' | 'status', number | string>(entries);\n *\n * const updated = base.set('count', 2);\n *\n * const extended = base.set('status', 'ok');\n *\n * assert.deepStrictEqual(base.get('count'), Optional.some(1));\n *\n * assert.deepStrictEqual(updated.get('count'), Optional.some(2));\n *\n * assert.deepStrictEqual(extended.get('status'), Optional.some('ok'));\n * ```\n *\n * @param key The key to set.\n * @param value The value to associate with the key.\n * @returns A new IMap instance with the specified key-value pair.\n */\n set: (key: K, value: V) => IMap<K, V>;\n\n /**\n * Updates the value associated with a key using an updater function.\n *\n * @example\n *\n * ```ts\n * const entries = [\n * ['alice', 10],\n * ['bob', 8],\n * ] as const satisfies readonly (readonly [\n * 'alice' | 'bob' | 'charlie',\n * number,\n * ])[];\n *\n * const scores = IMap.create<'alice' | 'bob' | 'charlie', number>(entries);\n *\n * const boosted = scores.update('alice', (value) => value + 5);\n *\n * const unchanged = scores.update('charlie', (value) => value + 1);\n *\n * assert.deepStrictEqual(boosted.get('alice'), Optional.some(15));\n *\n * assert.deepStrictEqual(scores.get('alice'), Optional.some(10));\n *\n * assert.isTrue(unchanged === scores);\n * ```\n *\n * @param key The key whose value to update.\n * @param updater A function that takes the current value and returns the new\n * value.\n * @returns A new IMap instance with the updated value.\n */\n update: (key: K, updater: (value: V) => V) => IMap<K, V>;\n\n /**\n * Applies a series of mutations to the map.\n *\n * @example\n *\n * ```ts\n * const entries = [\n * ['a', 1],\n * ['b', 2],\n * ] as const satisfies readonly (readonly ['a' | 'b' | 'c', number])[];\n *\n * const base = IMap.create<'a' | 'b' | 'c', number>(entries);\n *\n * const actions: readonly Readonly<\n * | { type: 'set'; key: 'c'; value: number }\n * | { type: 'update'; key: 'b'; updater: (value: number) => number }\n * | { type: 'delete'; key: 'a' }\n * >[] = [\n * { type: 'set', key: 'c', value: 3 },\n * { type: 'update', key: 'b', updater: (value) => value * 10 },\n * { type: 'delete', key: 'a' },\n * ] as const;\n *\n * const mutated = base.withMutations(actions);\n *\n * assert.deepStrictEqual(mutated.get('c'), Optional.some(3));\n *\n * assert.deepStrictEqual(mutated.get('b'), Optional.some(20));\n *\n * assert.deepStrictEqual(mutated.get('a'), Optional.none);\n *\n * assert.deepStrictEqual(base.get('b'), Optional.some(2));\n * ```\n *\n * @param actions An array of mutation actions (delete, set, or update).\n * @returns A new IMap instance with all mutations applied.\n */\n withMutations: (\n actions: readonly Readonly<\n | { type: 'delete'; key: K }\n | { type: 'set'; key: K; value: V }\n | { type: 'update'; key: K; updater: (value: V) => V }\n >[],\n ) => IMap<K, V>;\n\n // Sequence algorithms\n\n /**\n * Maps the values of the map to new values.\n *\n * @example\n *\n * ```ts\n * const entries = [\n * ['a', 1],\n * ['b', 2],\n * ] as const satisfies readonly (readonly [string, number])[];\n *\n * const map = IMap.create(entries);\n *\n * const doubled = map.map((value) => value * 2);\n *\n * assert.deepStrictEqual(Array.from(doubled), [\n * ['a', 2],\n * ['b', 4],\n * ]);\n * ```\n *\n * @template V2 The type of the new values.\n * @param mapFn A function that maps a value and key to a new value.\n * @returns A new IMap instance with mapped values.\n */\n map: <V2>(mapFn: (value: V, key: K) => V2) => IMap<K, V2>;\n\n /**\n * Maps the keys of the map to new keys.\n *\n * @example\n *\n * ```ts\n * const entries = [\n * ['first', 1],\n * ['second', 2],\n * ] as const satisfies readonly (readonly [string, number])[];\n *\n * const map = IMap.create(entries);\n *\n * const upperKeys = map.mapKeys((key) => key.toUpperCase());\n *\n * assert.deepStrictEqual(Array.from(upperKeys), [\n * ['FIRST', 1],\n * ['SECOND', 2],\n * ]);\n * ```\n *\n * @template K2 The type of the new keys.\n * @param mapFn A function that maps a key to a new key.\n * @returns A new IMap instance with mapped keys and original values.\n */\n mapKeys: <K2 extends MapSetKeyType>(mapFn: (key: K) => K2) => IMap<K2, V>;\n\n /**\n * Maps the entries (key-value pairs) of the map to new entries.\n *\n * @example\n *\n * ```ts\n * const entries = [\n * ['a', 1],\n * ['b', 2],\n * ] as const satisfies readonly (readonly [string, number])[];\n *\n * const map = IMap.create(entries);\n *\n * const swapped = map.mapEntries(\n * ([key, value]) => [value, key] satisfies readonly [number, string],\n * );\n *\n * assert.deepStrictEqual(Array.from(swapped), [\n * [1, 'a'],\n * [2, 'b'],\n * ]);\n * ```\n *\n * @template K2 The type of the new keys in the entries.\n * @template V2 The type of the new values in the entries.\n * @param mapFn A function that maps an entry to a new entry.\n * @returns A new IMap instance with mapped entries.\n */\n mapEntries: <K2 extends MapSetKeyType, V2>(\n mapFn: (entry: readonly [K, V]) => readonly [K2, V2],\n ) => IMap<K2, V2>;\n\n // Side effects\n\n /**\n * Executes a callback function for each key-value pair in the map.\n *\n * @example\n *\n * ```ts\n * const map = IMap.create([\n * ['a', 1],\n * ['b', 2],\n * ]);\n *\n * const mut_entries: (readonly [string, number])[] = [];\n *\n * map.forEach((value, key) => {\n * mut_entries.push([key, value]);\n * });\n *\n * assert.deepStrictEqual(mut_entries, [\n * ['a', 1],\n * ['b', 2],\n * ]);\n * ```\n *\n * @param callbackfn A function to execute for each element.\n */\n forEach: (callbackfn: (value: V, key: K) => void) => void;\n\n // Iterators\n\n /**\n * Returns an iterator for the keys in the map.\n *\n * @example\n *\n * ```ts\n * const entries = [\n * ['a', 1],\n * ['b', 2],\n * ] as const satisfies readonly (readonly [string, number])[];\n *\n * const map = IMap.create(entries);\n *\n * const keys = Array.from(map.keys());\n *\n * assert.deepStrictEqual(keys, ['a', 'b']);\n * ```\n *\n * @returns An iterable iterator of keys.\n */\n keys: () => IterableIterator<K>;\n\n /**\n * Returns an iterator for the values in the map.\n *\n * @example\n *\n * ```ts\n * const entries = [\n * ['a', 1],\n * ['b', 2],\n * ] as const satisfies readonly (readonly [string, number])[];\n *\n * const map = IMap.create(entries);\n *\n * const values = Array.from(map.values());\n *\n * assert.deepStrictEqual(values, [1, 2]);\n * ```\n *\n * @returns An iterable iterator of values.\n */\n values: () => IterableIterator<V>;\n\n /**\n * Returns an iterator for the entries (key-value pairs) in the map.\n *\n * @example\n *\n * ```ts\n * const map = IMap.create([\n * ['a', 1],\n * ['b', 2],\n * ]);\n *\n * const entries = Array.from(map.entries());\n *\n * assert.deepStrictEqual(entries, [\n * ['a', 1],\n * ['b', 2],\n * ]);\n * ```\n *\n * @returns An iterable iterator of entries.\n */\n entries: () => IterableIterator<readonly [K, V]>;\n\n // Conversion\n\n /**\n * Converts the keys of the map to an array.\n *\n * @example\n *\n * ```ts\n * const entries = [\n * ['x', 10],\n * ['y', 20],\n * ] as const satisfies readonly (readonly [string, number])[];\n *\n * const map = IMap.create(entries);\n *\n * assert.deepStrictEqual(map.toKeysArray(), ['x', 'y']);\n * ```\n *\n * @returns A readonly array of keys.\n */\n toKeysArray: () => readonly K[];\n\n /**\n * Converts the values of the map to an array.\n *\n * @example\n *\n * ```ts\n * const entries = [\n * ['x', 10],\n * ['y', 20],\n * ] as const satisfies readonly (readonly [string, number])[];\n *\n * const map = IMap.create(entries);\n *\n * assert.deepStrictEqual(map.toValuesArray(), [10, 20]);\n * ```\n *\n * @returns A readonly array of values.\n */\n toValuesArray: () => readonly V[];\n\n /**\n * Converts the entries (key-value pairs) of the map to an array.\n *\n * @example\n *\n * ```ts\n * const entries = [\n * ['a', 1],\n * ['b', 2],\n * ] as const satisfies readonly (readonly [string, number])[];\n *\n * const map = IMap.create(entries);\n *\n * assert.deepStrictEqual(map.toEntriesArray(), [\n * ['a', 1],\n * ['b', 2],\n * ]);\n * ```\n *\n * @returns A readonly array of entries.\n */\n toEntriesArray: () => readonly (readonly [K, V])[];\n\n /**\n * Converts the map to an array of entries (key-value pairs). Alias for\n * `toEntriesArray`.\n *\n * @example\n *\n * ```ts\n * const entries = [\n * ['k1', 'v1'],\n * ['k2', 'v2'],\n * ] as const satisfies readonly FixedLengthTuple<2, string>[];\n *\n * const map = IMap.create(entries);\n *\n * assert.deepStrictEqual(map.toArray(), [\n * ['k1', 'v1'],\n * ['k2', 'v2'],\n * ]);\n * ```\n *\n * @returns A readonly array of entries.\n */\n toArray: () => readonly (readonly [K, V])[];\n\n /**\n * Returns the underlying readonly JavaScript Map.\n *\n * @example\n *\n * ```ts\n * const entries = [['key', 1]] as const satisfies readonly (readonly [\n * string,\n * number,\n * ])[];\n *\n * const map = IMap.create(entries);\n *\n * const raw = map.toRawMap();\n *\n * assert.isTrue(isMap(raw));\n *\n * assert.isTrue(raw.get('key') === 1);\n * ```\n *\n * @returns The raw ReadonlyMap instance.\n */\n toRawMap: () => ReadonlyMap<K, V>;\n}>;\n\n/**\n * Represents an immutable map with high-performance operations and functional\n * programming support.\n *\n * IMap is a persistent data structure that provides all the functionality of\n * JavaScript's Map while maintaining immutability. All operations that would\n * normally mutate the map instead return new IMap instances, making it safe for\n * functional programming and concurrent access.\n *\n * **Key Features:**\n *\n * - **Immutable**: All mutation operations return new instances\n * - **Type Safe**: Full TypeScript support with generic key/value types\n * - **Iterable**: Implements standard JavaScript iteration protocols\n * - **Functional**: Rich API for map, filter, reduce-style operations\n *\n * **When to Use:**\n *\n * - State management in functional applications\n * - Caching with immutable guarantees\n * - Data structures that need to be shared across components\n * - When you need Map functionality but want immutability\n *\n * @template K The type of the keys in the map. Must extend MapSetKeyType.\n * @template V The type of the values in the map.\n */\nexport type IMap<K extends MapSetKeyType, V> = Iterable<readonly [K, V]> &\n IMapInterface<K, V>;\n\n/** Provides utility functions for IMap. */\nexport namespace IMap {\n /**\n * Creates a new IMap instance from an iterable of key-value pairs.\n *\n * This factory function accepts any iterable of [key, value] tuples,\n * including arrays, JavaScript Maps, other IMaps, or custom iterables. The\n * resulting IMap will contain all the entries from the input iterable.\n *\n * **Performance:** O(n) where n is the number of entries in the iterable.\n *\n * @example\n *\n * ```ts\n * const map = IMap.create<string, number | string>([\n * ['id', 1],\n * ['status', 'active'],\n * ]);\n *\n * assert.isTrue(map.size === 2);\n *\n * assert.deepStrictEqual(map.get('status'), Optional.some('active'));\n * ```\n *\n * @template K The type of the keys. Must extend MapSetKeyType.\n * @template V The type of the values.\n * @param iterable An iterable of key-value pairs (e.g., Array, Map, IMap,\n * etc.)\n * @returns A new IMap instance containing all entries from the iterable.\n */\n export const create = <K extends MapSetKeyType, V>(\n iterable: Iterable<readonly [K, V]>,\n ): IMap<K, V> => new IMapClass<K, V>(iterable);\n\n /**\n * Checks if two IMap instances are structurally equal.\n *\n * Two IMaps are considered equal if they have the same size and contain\n * exactly the same key-value pairs. The order of entries does not matter for\n * equality comparison. Values are compared using JavaScript's `===`\n * operator.\n *\n * **Performance:** O(n) where n is the size of the smaller map.\n *\n * @example\n *\n * ```ts\n * const first = IMap.create<'a' | 'b', number>([\n * ['a', 1],\n * ['b', 2],\n * ]);\n *\n * const second = IMap.create<'a' | 'b', number>([\n * ['b', 2],\n * ['a', 1],\n * ]);\n *\n * const third = IMap.create<'a' | 'b', number>([\n * ['a', 1],\n * ['b', 3],\n * ]);\n *\n * assert.isTrue(IMap.equal(first, second));\n *\n * assert.isFalse(IMap.equal(first, third));\n * ```\n *\n * @template K The type of the keys.\n * @template V The type of the values.\n * @param a The first IMap instance to compare.\n * @param b The second IMap instance to compare.\n * @returns `true` if the maps contain exactly the same key-value pairs,\n * `false` otherwise.\n */\n export const equal = <K extends MapSetKeyType, V>(\n a: IMap<K, V>,\n b: IMap<K, V>,\n ): boolean =>\n a.size === b.size &&\n a.every(\n (v, k) =>\n pipe(b.get(k)).map((v2) => Optional.isSome(v2) && v2.value === v).value,\n );\n}\n\n/**\n * Internal class implementation for IMap providing immutable map operations.\n *\n * This class implements the IMap interface using JavaScript's native Map as the\n * underlying storage mechanism for optimal performance. All mutation operations\n * create new instances rather than modifying the existing map, ensuring\n * immutability.\n *\n * **Implementation Details:**\n *\n * - Uses Map<K, V> internally for type safety and performance\n * - Implements copy-on-write semantics for efficiency\n * - Provides optional debug messaging for development\n *\n * @template K The type of the keys. Must extend MapSetKeyType.\n * @template V The type of the values.\n * @implements IMap\n * @implements Iterable\n * @internal This class should not be used directly. Use IMap.create() instead.\n */\nclass IMapClass<K extends MapSetKeyType, V>\n implements IMap<K, V>, Iterable<readonly [K, V]>\n{\n readonly #map: ReadonlyMap<K, V>;\n readonly #showNotFoundMessage: boolean;\n\n /**\n * Constructs an IMapClass instance with the given entries.\n *\n * @param iterable An iterable of key-value pairs to populate the map.\n * @param showNotFoundMessage Whether to log warning messages when operations\n * are performed on non-existent keys. Useful for debugging. Defaults to\n * false for production use.\n * @internal Use IMap.create() instead of calling this constructor directly.\n */\n constructor(\n iterable: Iterable<readonly [K, V]>,\n showNotFoundMessage: boolean = false,\n ) {\n this.#map = new Map(iterable);\n\n this.#showNotFoundMessage = showNotFoundMessage;\n }\n\n /** @inheritdoc */\n get size(): SizeType.Arr {\n return asUint32(this.#map.size);\n }\n\n /** @inheritdoc */\n has(key: K | (WidenLiteral<K> & {})): boolean {\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n return this.#map.has(key as K);\n }\n\n /** @inheritdoc */\n get(key: K | (WidenLiteral<K> & {})): Optional<V> {\n if (!this.has(key)) return Optional.none;\n\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion, @typescript-eslint/no-non-null-assertion\n return Optional.some(this.#map.get(key as K)!);\n }\n\n /** @inheritdoc */\n every<W extends V>(\n predicate: (value: V, key: K) => value is W,\n ): this is IMap<K, W>;\n\n /** @inheritdoc */\n every(predicate: (value: V, key: K) => boolean): boolean;\n\n /** @inheritdoc */\n every(predicate: (value: V, key: K) => boolean): boolean {\n for (const [k, v] of this.entries()) {\n if (!predicate(v, k)) return false;\n }\n\n return true;\n }\n\n /** @inheritdoc */\n some(predicate: (value: V, key: K) => boolean): boolean {\n for (const [k, v] of this.entries()) {\n if (predicate(v, k)) return true;\n }\n\n return false;\n }\n\n /** @inheritdoc */\n delete(key: K): IMap<K, V> {\n if (!this.has(key)) {\n if (this.#showNotFoundMessage) {\n const keyStr = unknownToString(key);\n\n console.warn(`IMap.delete: key not found: ${keyStr}`);\n }\n\n return this;\n }\n\n return IMap.create(\n Array.from(this.#map).filter(([k]) => !Object.is(k, key)),\n );\n }\n\n /** @inheritdoc */\n set(key: K, value: V): IMap<K, V> {\n const curr = this.get(key);\n\n if (Optional.isSome(curr) && value === curr.value) return this; // has no changes\n\n if (!this.has(key)) {\n return IMap.create([...this.#map, tp(key, value)]);\n }\n\n return IMap.create(\n Array.from(this.#map, ([k, v]) => tp(k, Object.is(k, key) ? value : v)),\n );\n }\n\n /** @inheritdoc */\n update(key: K, updater: (value: V) => V): IMap<K, V> {\n const curr = this.get(key);\n\n if (Optional.isNone(curr)) {\n if (this.#showNotFoundMessage) {\n const keyStr = unknownToString(key);\n\n console.warn(`IMap.update: key not found: ${keyStr}`);\n }\n\n return this;\n }\n\n return IMap.create(\n Array.from(this.#map, ([k, v]) =>\n tp(k, Object.is(k, key) ? updater(curr.value) : v),\n ),\n );\n }\n\n /** @inheritdoc */\n withMutations(\n actions: readonly Readonly<\n | { type: 'delete'; key: K }\n | { type: 'set'; key: K; value: V }\n | { type: 'update'; key: K; updater: (value: V) => V }\n >[],\n ): IMap<K, V> {\n const mut_result = new Map<K, V>(this.#map);\n\n const updateFn = (\n action: Readonly<\n | { type: 'delete'; key: K }\n | { type: 'set'; key: K; value: V }\n | { type: 'update'; key: K; updater: (value: V) => V }\n >,\n ): void => {\n switch (action.type) {\n case 'delete':\n mut_result.delete(action.key);\n\n break;\n\n case 'set':\n mut_result.set(action.key, action.value);\n\n break;\n\n case 'update': {\n const { key } = action;\n\n const curr = mut_result.get(key);\n\n if (curr === undefined || !mut_result.has(key)) {\n if (this.#showNotFoundMessage) {\n const keyStr = unknownToString(key);\n\n console.warn(`IMap.withMutations: key not found: ${keyStr}`);\n }\n\n break;\n }\n\n mut_result.set(key, action.updater(curr));\n\n break;\n }\n }\n };\n\n for (const action of actions) {\n updateFn(action);\n }\n\n return IMap.create(mut_result);\n }\n\n /** @inheritdoc */\n map<V2>(mapFn: (value: V, key: K) => V2): IMap<K, V2> {\n return IMap.create(this.toArray().map(([k, v]) => tp(k, mapFn(v, k))));\n }\n\n /** @inheritdoc */\n mapKeys<K2 extends MapSetKeyType>(mapFn: (key: K) => K2): IMap<K2, V> {\n return IMap.create(this.toArray().map(([k, v]) => tp(mapFn(k), v)));\n }\n\n /** @inheritdoc */\n mapEntries<K2 extends MapSetKeyType, V2>(\n mapFn: (entry: readonly [K, V]) => readonly [K2, V2],\n ): IMap<K2, V2> {\n return IMap.create(this.toArray().map(mapFn));\n }\n\n /** @inheritdoc */\n forEach(callbackfn: (value: V, key: K) => void): void {\n for (const [key, value] of this.#map) {\n callbackfn(value, key);\n }\n }\n\n /**\n * @example\n *\n * ```ts\n * const entries = [\n * ['first', 1],\n * ['second', 2],\n * ] as const satisfies readonly (readonly [string, number])[];\n *\n * const map = IMap.create(entries);\n *\n * const collected = Array.from(map);\n *\n * assert.deepStrictEqual(collected, [\n * ['first', 1],\n * ['second', 2],\n * ]);\n * ```\n *\n * @inheritdoc\n */\n [Symbol.iterator](): Iterator<readonly [K, V]> {\n return this.#map[Symbol.iterator]();\n }\n\n /** @inheritdoc */\n keys(): IterableIterator<K> {\n return this.#map.keys();\n }\n\n /** @inheritdoc */\n values(): IterableIterator<V> {\n return this.#map.values();\n }\n\n /** @inheritdoc */\n entries(): IterableIterator<readonly [K, V]> {\n return this.#map.entries();\n }\n\n /** @inheritdoc */\n toKeysArray(): readonly K[] {\n return Array.from(this.keys());\n }\n\n /** @inheritdoc */\n toValuesArray(): readonly V[] {\n return Array.from(this.values());\n }\n\n /** @inheritdoc */\n toEntriesArray(): readonly (readonly [K, V])[] {\n return Array.from(this.entries());\n }\n\n /** @inheritdoc */\n toArray(): readonly (readonly [K, V])[] {\n return Array.from(this.entries());\n }\n\n /** @inheritdoc */\n toRawMap(): ReadonlyMap<K, V> {\n return this.#map;\n }\n}\n"],"names":["IMap","Optional.isSome","Optional.none","Optional.some","Optional.isNone"],"mappings":"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"}
1
+ {"version":3,"file":"imap.mjs","sourceRoot":"","sources":["../../src/collections/imap.mts"],"names":[],"mappings":"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"}
@@ -1,7 +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
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.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
1
+ {"version":3,"file":"index.mjs","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"}