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