ts-data-forge 14.6.1 → 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 (393) 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 -292
  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.mjs +448 -265
  44. package/dist/collections/iset-mapped.mjs.map +1 -1
  45. package/dist/collections/iset.mjs +328 -201
  46. package/dist/collections/iset.mjs.map +1 -1
  47. package/dist/collections/queue.mjs +183 -151
  48. package/dist/collections/queue.mjs.map +1 -1
  49. package/dist/collections/stack.mjs +169 -140
  50. package/dist/collections/stack.mjs.map +1 -1
  51. package/dist/entry-point.mjs +4 -77
  52. package/dist/entry-point.mjs.map +1 -1
  53. package/dist/expect-type.mjs +70 -4
  54. package/dist/expect-type.mjs.map +1 -1
  55. package/dist/functional/async-result/async-result.mjs +2 -3
  56. package/dist/functional/async-result/async-result.mjs.map +1 -1
  57. package/dist/functional/async-result/impl/async-result-flat-map.mjs +19 -21
  58. package/dist/functional/async-result/impl/async-result-flat-map.mjs.map +1 -1
  59. package/dist/functional/async-result/impl/async-result-from-promise.mjs +9 -10
  60. package/dist/functional/async-result/impl/async-result-from-promise.mjs.map +1 -1
  61. package/dist/functional/async-result/impl/async-result-from-throwable.mjs +12 -14
  62. package/dist/functional/async-result/impl/async-result-from-throwable.mjs.map +1 -1
  63. package/dist/functional/async-result/impl/async-result-map-err.mjs +16 -19
  64. package/dist/functional/async-result/impl/async-result-map-err.mjs.map +1 -1
  65. package/dist/functional/async-result/impl/async-result-map.mjs +16 -19
  66. package/dist/functional/async-result/impl/async-result-map.mjs.map +1 -1
  67. package/dist/functional/async-result/impl/async-result-unwrap-or.mjs +36 -9
  68. package/dist/functional/async-result/impl/async-result-unwrap-or.mjs.map +1 -1
  69. package/dist/functional/async-result/impl/index.mjs +8 -7
  70. package/dist/functional/async-result/impl/index.mjs.map +1 -1
  71. package/dist/functional/async-result/impl/types.mjs +2 -2
  72. package/dist/functional/async-result/impl/types.mjs.map +1 -1
  73. package/dist/functional/async-result/index.mjs +2 -3
  74. package/dist/functional/async-result/index.mjs.map +1 -1
  75. package/dist/functional/index.mjs +7 -11
  76. package/dist/functional/index.mjs.map +1 -1
  77. package/dist/functional/match.mjs +27 -13
  78. package/dist/functional/match.mjs.map +1 -1
  79. package/dist/functional/optional/impl/index.mjs +19 -18
  80. package/dist/functional/optional/impl/index.mjs.map +1 -1
  81. package/dist/functional/optional/impl/optional-expect-to-be.mjs +16 -18
  82. package/dist/functional/optional/impl/optional-expect-to-be.mjs.map +1 -1
  83. package/dist/functional/optional/impl/optional-filter.mjs +17 -19
  84. package/dist/functional/optional/impl/optional-filter.mjs.map +1 -1
  85. package/dist/functional/optional/impl/optional-flat-map.mjs +13 -15
  86. package/dist/functional/optional/impl/optional-flat-map.mjs.map +1 -1
  87. package/dist/functional/optional/impl/optional-from-nullable.mjs +26 -5
  88. package/dist/functional/optional/impl/optional-from-nullable.mjs.map +1 -1
  89. package/dist/functional/optional/impl/optional-is-none.mjs +21 -5
  90. package/dist/functional/optional/impl/optional-is-none.mjs.map +1 -1
  91. package/dist/functional/optional/impl/optional-is-optional.mjs +26 -8
  92. package/dist/functional/optional/impl/optional-is-optional.mjs.map +1 -1
  93. package/dist/functional/optional/impl/optional-is-some.mjs +22 -5
  94. package/dist/functional/optional/impl/optional-is-some.mjs.map +1 -1
  95. package/dist/functional/optional/impl/optional-map.mjs +16 -18
  96. package/dist/functional/optional/impl/optional-map.mjs.map +1 -1
  97. package/dist/functional/optional/impl/optional-match.mjs +16 -18
  98. package/dist/functional/optional/impl/optional-match.mjs.map +1 -1
  99. package/dist/functional/optional/impl/optional-none.mjs +18 -5
  100. package/dist/functional/optional/impl/optional-none.mjs.map +1 -1
  101. package/dist/functional/optional/impl/optional-or-else.mjs +13 -15
  102. package/dist/functional/optional/impl/optional-or-else.mjs.map +1 -1
  103. package/dist/functional/optional/impl/optional-some.mjs +23 -7
  104. package/dist/functional/optional/impl/optional-some.mjs.map +1 -1
  105. package/dist/functional/optional/impl/optional-to-nullable.mjs +28 -5
  106. package/dist/functional/optional/impl/optional-to-nullable.mjs.map +1 -1
  107. package/dist/functional/optional/impl/optional-unwrap-or.mjs +12 -14
  108. package/dist/functional/optional/impl/optional-unwrap-or.mjs.map +1 -1
  109. package/dist/functional/optional/impl/optional-unwrap-throw.mjs +34 -9
  110. package/dist/functional/optional/impl/optional-unwrap-throw.mjs.map +1 -1
  111. package/dist/functional/optional/impl/optional-unwrap.mjs +6 -9
  112. package/dist/functional/optional/impl/optional-unwrap.mjs.map +1 -1
  113. package/dist/functional/optional/impl/optional-zip.mjs +36 -5
  114. package/dist/functional/optional/impl/optional-zip.mjs.map +1 -1
  115. package/dist/functional/optional/impl/tag.mjs +4 -5
  116. package/dist/functional/optional/impl/tag.mjs.map +1 -1
  117. package/dist/functional/optional/impl/types.mjs +2 -2
  118. package/dist/functional/optional/impl/types.mjs.map +1 -1
  119. package/dist/functional/optional/index.mjs +2 -3
  120. package/dist/functional/optional/index.mjs.map +1 -1
  121. package/dist/functional/optional/optional.mjs +2 -3
  122. package/dist/functional/optional/optional.mjs.map +1 -1
  123. package/dist/functional/pipe.mjs +42 -14
  124. package/dist/functional/pipe.mjs.map +1 -1
  125. package/dist/functional/result/impl/index.mjs +28 -27
  126. package/dist/functional/result/impl/index.mjs.map +1 -1
  127. package/dist/functional/result/impl/result-err.mjs +29 -7
  128. package/dist/functional/result/impl/result-err.mjs.map +1 -1
  129. package/dist/functional/result/impl/result-expect-to-be.mjs +17 -18
  130. package/dist/functional/result/impl/result-expect-to-be.mjs.map +1 -1
  131. package/dist/functional/result/impl/result-flat-map.mjs +18 -21
  132. package/dist/functional/result/impl/result-flat-map.mjs.map +1 -1
  133. package/dist/functional/result/impl/result-fold.mjs +18 -21
  134. package/dist/functional/result/impl/result-fold.mjs.map +1 -1
  135. package/dist/functional/result/impl/result-from-optional.mjs +17 -20
  136. package/dist/functional/result/impl/result-from-optional.mjs.map +1 -1
  137. package/dist/functional/result/impl/result-from-promise.mjs +37 -8
  138. package/dist/functional/result/impl/result-from-promise.mjs.map +1 -1
  139. package/dist/functional/result/impl/result-from-throwable.mjs +41 -14
  140. package/dist/functional/result/impl/result-from-throwable.mjs.map +1 -1
  141. package/dist/functional/result/impl/result-is-err.mjs +21 -5
  142. package/dist/functional/result/impl/result-is-err.mjs.map +1 -1
  143. package/dist/functional/result/impl/result-is-ok.mjs +21 -5
  144. package/dist/functional/result/impl/result-is-ok.mjs.map +1 -1
  145. package/dist/functional/result/impl/result-is-result.mjs +25 -7
  146. package/dist/functional/result/impl/result-is-result.mjs.map +1 -1
  147. package/dist/functional/result/impl/result-map-err.mjs +18 -21
  148. package/dist/functional/result/impl/result-map-err.mjs.map +1 -1
  149. package/dist/functional/result/impl/result-map.mjs +18 -21
  150. package/dist/functional/result/impl/result-map.mjs.map +1 -1
  151. package/dist/functional/result/impl/result-match.mjs +17 -21
  152. package/dist/functional/result/impl/result-match.mjs.map +1 -1
  153. package/dist/functional/result/impl/result-ok.mjs +29 -7
  154. package/dist/functional/result/impl/result-ok.mjs.map +1 -1
  155. package/dist/functional/result/impl/result-or-else.mjs +14 -15
  156. package/dist/functional/result/impl/result-or-else.mjs.map +1 -1
  157. package/dist/functional/result/impl/result-safe-try.mjs +32 -21
  158. package/dist/functional/result/impl/result-safe-try.mjs.map +1 -1
  159. package/dist/functional/result/impl/result-safe-unwrap.mjs +40 -12
  160. package/dist/functional/result/impl/result-safe-unwrap.mjs.map +1 -1
  161. package/dist/functional/result/impl/result-swap.mjs +23 -8
  162. package/dist/functional/result/impl/result-swap.mjs.map +1 -1
  163. package/dist/functional/result/impl/result-to-optional.mjs +30 -7
  164. package/dist/functional/result/impl/result-to-optional.mjs.map +1 -1
  165. package/dist/functional/result/impl/result-unwrap-err-or.mjs +13 -14
  166. package/dist/functional/result/impl/result-unwrap-err-or.mjs.map +1 -1
  167. package/dist/functional/result/impl/result-unwrap-err-throw.mjs +43 -20
  168. package/dist/functional/result/impl/result-unwrap-err-throw.mjs.map +1 -1
  169. package/dist/functional/result/impl/result-unwrap-err.mjs +33 -8
  170. package/dist/functional/result/impl/result-unwrap-err.mjs.map +1 -1
  171. package/dist/functional/result/impl/result-unwrap-ok-or.mjs +13 -14
  172. package/dist/functional/result/impl/result-unwrap-ok-or.mjs.map +1 -1
  173. package/dist/functional/result/impl/result-unwrap-ok.mjs +6 -9
  174. package/dist/functional/result/impl/result-unwrap-ok.mjs.map +1 -1
  175. package/dist/functional/result/impl/result-unwrap-throw.mjs +38 -11
  176. package/dist/functional/result/impl/result-unwrap-throw.mjs.map +1 -1
  177. package/dist/functional/result/impl/result-zip.mjs +35 -5
  178. package/dist/functional/result/impl/result-zip.mjs.map +1 -1
  179. package/dist/functional/result/impl/tag.mjs +4 -5
  180. package/dist/functional/result/impl/tag.mjs.map +1 -1
  181. package/dist/functional/result/impl/types.mjs +2 -2
  182. package/dist/functional/result/impl/types.mjs.map +1 -1
  183. package/dist/functional/result/index.mjs +2 -3
  184. package/dist/functional/result/index.mjs.map +1 -1
  185. package/dist/functional/result/result.mjs +2 -3
  186. package/dist/functional/result/result.mjs.map +1 -1
  187. package/dist/functional/ternary-result/impl/index.mjs +29 -28
  188. package/dist/functional/ternary-result/impl/index.mjs.map +1 -1
  189. package/dist/functional/ternary-result/impl/tag.mjs +6 -6
  190. package/dist/functional/ternary-result/impl/tag.mjs.map +1 -1
  191. package/dist/functional/ternary-result/impl/ternary-result-err.mjs +17 -7
  192. package/dist/functional/ternary-result/impl/ternary-result-err.mjs.map +1 -1
  193. package/dist/functional/ternary-result/impl/ternary-result-expect-to-be.mjs +15 -18
  194. package/dist/functional/ternary-result/impl/ternary-result-expect-to-be.mjs.map +1 -1
  195. package/dist/functional/ternary-result/impl/ternary-result-flat-map.mjs +28 -32
  196. package/dist/functional/ternary-result/impl/ternary-result-flat-map.mjs.map +1 -1
  197. package/dist/functional/ternary-result/impl/ternary-result-fold.mjs +24 -26
  198. package/dist/functional/ternary-result/impl/ternary-result-fold.mjs.map +1 -1
  199. package/dist/functional/ternary-result/impl/ternary-result-from-promise.mjs +21 -8
  200. package/dist/functional/ternary-result/impl/ternary-result-from-promise.mjs.map +1 -1
  201. package/dist/functional/ternary-result/impl/ternary-result-from-throwable.mjs +28 -13
  202. package/dist/functional/ternary-result/impl/ternary-result-from-throwable.mjs.map +1 -1
  203. package/dist/functional/ternary-result/impl/ternary-result-is-err.mjs +19 -5
  204. package/dist/functional/ternary-result/impl/ternary-result-is-err.mjs.map +1 -1
  205. package/dist/functional/ternary-result/impl/ternary-result-is-ok.mjs +21 -5
  206. package/dist/functional/ternary-result/impl/ternary-result-is-ok.mjs.map +1 -1
  207. package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.mjs +28 -8
  208. package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.mjs.map +1 -1
  209. package/dist/functional/ternary-result/impl/ternary-result-is-warn.mjs +20 -5
  210. package/dist/functional/ternary-result/impl/ternary-result-is-warn.mjs.map +1 -1
  211. package/dist/functional/ternary-result/impl/ternary-result-map-err.mjs +17 -18
  212. package/dist/functional/ternary-result/impl/ternary-result-map-err.mjs.map +1 -1
  213. package/dist/functional/ternary-result/impl/ternary-result-map-warn.mjs +20 -23
  214. package/dist/functional/ternary-result/impl/ternary-result-map-warn.mjs.map +1 -1
  215. package/dist/functional/ternary-result/impl/ternary-result-map.mjs +24 -26
  216. package/dist/functional/ternary-result/impl/ternary-result-map.mjs.map +1 -1
  217. package/dist/functional/ternary-result/impl/ternary-result-ok.mjs +18 -7
  218. package/dist/functional/ternary-result/impl/ternary-result-ok.mjs.map +1 -1
  219. package/dist/functional/ternary-result/impl/ternary-result-or-else.mjs +11 -14
  220. package/dist/functional/ternary-result/impl/ternary-result-or-else.mjs.map +1 -1
  221. package/dist/functional/ternary-result/impl/ternary-result-to-optional.mjs +24 -10
  222. package/dist/functional/ternary-result/impl/ternary-result-to-optional.mjs.map +1 -1
  223. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-or.mjs +11 -14
  224. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-or.mjs.map +1 -1
  225. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-throw.mjs +30 -19
  226. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-throw.mjs.map +1 -1
  227. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err.mjs +20 -8
  228. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err.mjs.map +1 -1
  229. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok-or.mjs +11 -14
  230. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok-or.mjs.map +1 -1
  231. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok.mjs +7 -9
  232. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok.mjs.map +1 -1
  233. package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.mjs +30 -22
  234. package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.mjs.map +1 -1
  235. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-or.mjs +11 -14
  236. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-or.mjs.map +1 -1
  237. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.mjs +27 -17
  238. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.mjs.map +1 -1
  239. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn.mjs +20 -8
  240. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn.mjs.map +1 -1
  241. package/dist/functional/ternary-result/impl/ternary-result-warn.mjs +21 -8
  242. package/dist/functional/ternary-result/impl/ternary-result-warn.mjs.map +1 -1
  243. package/dist/functional/ternary-result/impl/ternary-result-zip.mjs +47 -19
  244. package/dist/functional/ternary-result/impl/ternary-result-zip.mjs.map +1 -1
  245. package/dist/functional/ternary-result/impl/types.mjs +2 -2
  246. package/dist/functional/ternary-result/impl/types.mjs.map +1 -1
  247. package/dist/functional/ternary-result/impl/variant-name.mjs +12 -14
  248. package/dist/functional/ternary-result/impl/variant-name.mjs.map +1 -1
  249. package/dist/functional/ternary-result/index.mjs +2 -3
  250. package/dist/functional/ternary-result/index.mjs.map +1 -1
  251. package/dist/functional/ternary-result/ternary-result.mjs +2 -3
  252. package/dist/functional/ternary-result/ternary-result.mjs.map +1 -1
  253. package/dist/guard/has-key.mjs +43 -4
  254. package/dist/guard/has-key.mjs.map +1 -1
  255. package/dist/guard/index.mjs +8 -8
  256. package/dist/guard/index.mjs.map +1 -1
  257. package/dist/guard/is-non-empty-string.mjs +39 -4
  258. package/dist/guard/is-non-empty-string.mjs.map +1 -1
  259. package/dist/guard/is-non-null-object.mjs +36 -4
  260. package/dist/guard/is-non-null-object.mjs.map +1 -1
  261. package/dist/guard/is-primitive.mjs +46 -15
  262. package/dist/guard/is-primitive.mjs.map +1 -1
  263. package/dist/guard/is-record.mjs +89 -6
  264. package/dist/guard/is-record.mjs.map +1 -1
  265. package/dist/guard/is-type.mjs +404 -19
  266. package/dist/guard/is-type.mjs.map +1 -1
  267. package/dist/guard/key-is-in.mjs +42 -4
  268. package/dist/guard/key-is-in.mjs.map +1 -1
  269. package/dist/index.mjs +12 -65
  270. package/dist/index.mjs.map +1 -1
  271. package/dist/iterator/index.mjs +2 -2
  272. package/dist/iterator/index.mjs.map +1 -1
  273. package/dist/iterator/range.mjs +19 -57
  274. package/dist/iterator/range.mjs.map +1 -1
  275. package/dist/json/index.mjs +2 -2
  276. package/dist/json/index.mjs.map +1 -1
  277. package/dist/json/json.mjs +346 -105
  278. package/dist/json/json.mjs.map +1 -1
  279. package/dist/number/branded-types/finite-number.mjs +148 -137
  280. package/dist/number/branded-types/finite-number.mjs.map +1 -1
  281. package/dist/number/branded-types/index.mjs +33 -33
  282. package/dist/number/branded-types/index.mjs.map +1 -1
  283. package/dist/number/branded-types/int.mjs +245 -209
  284. package/dist/number/branded-types/int.mjs.map +1 -1
  285. package/dist/number/branded-types/int16.mjs +141 -131
  286. package/dist/number/branded-types/int16.mjs.map +1 -1
  287. package/dist/number/branded-types/int32.mjs +141 -131
  288. package/dist/number/branded-types/int32.mjs.map +1 -1
  289. package/dist/number/branded-types/negative-finite-number.mjs +155 -149
  290. package/dist/number/branded-types/negative-finite-number.mjs.map +1 -1
  291. package/dist/number/branded-types/negative-int.mjs +125 -110
  292. package/dist/number/branded-types/negative-int.mjs.map +1 -1
  293. package/dist/number/branded-types/negative-safe-int.mjs +126 -115
  294. package/dist/number/branded-types/negative-safe-int.mjs.map +1 -1
  295. package/dist/number/branded-types/non-negative-finite-number.mjs +164 -154
  296. package/dist/number/branded-types/non-negative-finite-number.mjs.map +1 -1
  297. package/dist/number/branded-types/non-negative-int16.mjs +137 -125
  298. package/dist/number/branded-types/non-negative-int16.mjs.map +1 -1
  299. package/dist/number/branded-types/non-negative-int32.mjs +137 -125
  300. package/dist/number/branded-types/non-negative-int32.mjs.map +1 -1
  301. package/dist/number/branded-types/non-positive-finite-number.mjs +143 -139
  302. package/dist/number/branded-types/non-positive-finite-number.mjs.map +1 -1
  303. package/dist/number/branded-types/non-positive-int.mjs +116 -99
  304. package/dist/number/branded-types/non-positive-int.mjs.map +1 -1
  305. package/dist/number/branded-types/non-positive-safe-int.mjs +118 -107
  306. package/dist/number/branded-types/non-positive-safe-int.mjs.map +1 -1
  307. package/dist/number/branded-types/non-zero-finite-number.mjs +144 -129
  308. package/dist/number/branded-types/non-zero-finite-number.mjs.map +1 -1
  309. package/dist/number/branded-types/non-zero-int.mjs +102 -82
  310. package/dist/number/branded-types/non-zero-int.mjs.map +1 -1
  311. package/dist/number/branded-types/non-zero-int16.mjs +118 -105
  312. package/dist/number/branded-types/non-zero-int16.mjs.map +1 -1
  313. package/dist/number/branded-types/non-zero-int32.mjs +118 -105
  314. package/dist/number/branded-types/non-zero-int32.mjs.map +1 -1
  315. package/dist/number/branded-types/non-zero-safe-int.mjs +122 -108
  316. package/dist/number/branded-types/non-zero-safe-int.mjs.map +1 -1
  317. package/dist/number/branded-types/non-zero-uint16.mjs +118 -104
  318. package/dist/number/branded-types/non-zero-uint16.mjs.map +1 -1
  319. package/dist/number/branded-types/non-zero-uint32.mjs +118 -104
  320. package/dist/number/branded-types/non-zero-uint32.mjs.map +1 -1
  321. package/dist/number/branded-types/positive-finite-number.mjs +167 -160
  322. package/dist/number/branded-types/positive-finite-number.mjs.map +1 -1
  323. package/dist/number/branded-types/positive-int.mjs +260 -224
  324. package/dist/number/branded-types/positive-int.mjs.map +1 -1
  325. package/dist/number/branded-types/positive-int16.mjs +134 -122
  326. package/dist/number/branded-types/positive-int16.mjs.map +1 -1
  327. package/dist/number/branded-types/positive-int32.mjs +134 -122
  328. package/dist/number/branded-types/positive-int32.mjs.map +1 -1
  329. package/dist/number/branded-types/positive-safe-int.mjs +292 -258
  330. package/dist/number/branded-types/positive-safe-int.mjs.map +1 -1
  331. package/dist/number/branded-types/positive-uint16.mjs +134 -122
  332. package/dist/number/branded-types/positive-uint16.mjs.map +1 -1
  333. package/dist/number/branded-types/positive-uint32.mjs +134 -122
  334. package/dist/number/branded-types/positive-uint32.mjs.map +1 -1
  335. package/dist/number/branded-types/safe-int.mjs +284 -255
  336. package/dist/number/branded-types/safe-int.mjs.map +1 -1
  337. package/dist/number/branded-types/safe-uint.mjs +135 -124
  338. package/dist/number/branded-types/safe-uint.mjs.map +1 -1
  339. package/dist/number/branded-types/uint.mjs +248 -211
  340. package/dist/number/branded-types/uint.mjs.map +1 -1
  341. package/dist/number/branded-types/uint16.mjs +132 -121
  342. package/dist/number/branded-types/uint16.mjs.map +1 -1
  343. package/dist/number/branded-types/uint32.mjs +132 -121
  344. package/dist/number/branded-types/uint32.mjs.map +1 -1
  345. package/dist/number/enum/index.mjs +3 -3
  346. package/dist/number/enum/index.mjs.map +1 -1
  347. package/dist/number/enum/int8.mjs +146 -131
  348. package/dist/number/enum/int8.mjs.map +1 -1
  349. package/dist/number/enum/uint8.mjs +133 -119
  350. package/dist/number/enum/uint8.mjs.map +1 -1
  351. package/dist/number/index.mjs +6 -37
  352. package/dist/number/index.mjs.map +1 -1
  353. package/dist/number/num-arithmetic-types.mjs +42 -1
  354. package/dist/number/num-arithmetic-types.mjs.map +1 -1
  355. package/dist/number/num.mjs +541 -83
  356. package/dist/number/num.mjs.map +1 -1
  357. package/dist/number/refined-number-utils.mjs +294 -133
  358. package/dist/number/refined-number-utils.mjs.map +1 -1
  359. package/dist/object/index.mjs +2 -2
  360. package/dist/object/index.mjs.map +1 -1
  361. package/dist/object/object.mjs +355 -202
  362. package/dist/object/object.mjs.map +1 -1
  363. package/dist/others/cast-mutable.mjs +38 -11
  364. package/dist/others/cast-mutable.mjs.map +1 -1
  365. package/dist/others/cast-readonly.mjs +37 -11
  366. package/dist/others/cast-readonly.mjs.map +1 -1
  367. package/dist/others/debounce-function.mjs +22 -11
  368. package/dist/others/debounce-function.mjs.map +1 -1
  369. package/dist/others/fast-deep-equal.mjs +70 -51
  370. package/dist/others/fast-deep-equal.mjs.map +1 -1
  371. package/dist/others/if-then.mjs +32 -5
  372. package/dist/others/if-then.mjs.map +1 -1
  373. package/dist/others/index.mjs +10 -10
  374. package/dist/others/index.mjs.map +1 -1
  375. package/dist/others/map-nullable.mjs +11 -13
  376. package/dist/others/map-nullable.mjs.map +1 -1
  377. package/dist/others/memoize-function.mjs +14 -16
  378. package/dist/others/memoize-function.mjs.map +1 -1
  379. package/dist/others/tuple.mjs +52 -4
  380. package/dist/others/tuple.mjs.map +1 -1
  381. package/dist/others/unknown-to-string.mjs +91 -47
  382. package/dist/others/unknown-to-string.mjs.map +1 -1
  383. package/dist/promise/index.mjs +2 -2
  384. package/dist/promise/index.mjs.map +1 -1
  385. package/dist/promise/promise.mjs +51 -10
  386. package/dist/promise/promise.mjs.map +1 -1
  387. package/dist/string/index.mjs +2 -2
  388. package/dist/string/index.mjs.map +1 -1
  389. package/dist/string/str.mjs +250 -83
  390. package/dist/string/str.mjs.map +1 -1
  391. package/dist/types.mjs +3 -2
  392. package/dist/types.mjs.map +1 -1
  393. package/package.json +5 -6
@@ -1,308 +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 { 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 IMapMapped;
47
- ((IMapMapped2) => {
48
- IMapMapped2.create = (iterable, toKey, fromKey) => new IMapMappedClass(iterable, toKey, fromKey);
49
- IMapMapped2.equal = (a, b) => a.size === b.size && a.every(
50
- (v, k) => pipe(b.get(k)).map((bv) => isSome(bv) && bv.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 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);
52
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
+ */
53
139
  class IMapMappedClass {
54
- #map;
55
- #toKey;
56
- #fromKey;
57
- #showNotFoundMessage;
58
- /**
59
- * Constructs an IMapMappedClass instance with custom key transformation.
60
- *
61
- * @param iterable An iterable of key-value pairs using the custom key type K.
62
- * @param toKey A function that converts a custom key K to a primitive key KM.
63
- * Must be deterministic and produce unique values for unique keys.
64
- * @param fromKey A function that converts a primitive key KM back to the
65
- * custom key K. Should be the inverse of the toKey function.
66
- * @param showNotFoundMessage Whether to log warning messages when operations
67
- * are performed on non-existent keys. Useful for debugging. Defaults to
68
- * false for production use.
69
- * @internal Use IMapMapped.create() instead of calling this constructor directly.
70
- */
71
- constructor(iterable, toKey, fromKey, showNotFoundMessage = false) {
72
- this.#map = new Map(Array.from(iterable, ([k, v]) => [toKey(k), v]));
73
- this.#toKey = toKey;
74
- this.#fromKey = fromKey;
75
- this.#showNotFoundMessage = showNotFoundMessage;
76
- }
77
- /** @inheritdoc */
78
- get size() {
79
- return asUint32(this.#map.size);
80
- }
81
- /** @inheritdoc */
82
- has(key) {
83
- return this.#map.has(this.#toKey(key));
84
- }
85
- /** @inheritdoc */
86
- get(key) {
87
- if (!this.has(key)) return none;
88
- return some(this.#map.get(this.#toKey(key)));
89
- }
90
- /** @inheritdoc */
91
- every(predicate) {
92
- for (const [k, v] of this.entries()) {
93
- 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;
94
162
  }
95
- return true;
96
- }
97
- /** @inheritdoc */
98
- some(predicate) {
99
- for (const [k, v] of this.entries()) {
100
- if (predicate(v, k)) return true;
163
+ /** @inheritdoc */
164
+ get size() {
165
+ return asUint32(this.#map.size);
101
166
  }
102
- return false;
103
- }
104
- /** @inheritdoc */
105
- delete(key) {
106
- if (!this.has(key)) {
107
- if (this.#showNotFoundMessage) {
108
- console.warn(
109
- `IMapMapped.delete: key not found: ${unknownToString(this.#toKey(key))}`
110
- );
111
- }
112
- 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));
113
171
  }
114
- const keyMapped = this.#toKey(key);
115
- return IMapMapped.create(
116
- Array.from(this.#map).filter(([km]) => !Object.is(km, keyMapped)).map(([km, v]) => tp(this.#fromKey(km), v)),
117
- this.#toKey,
118
- this.#fromKey
119
- );
120
- }
121
- /** @inheritdoc */
122
- set(key, value) {
123
- const curr = this.get(key);
124
- if (isSome(curr) && value === curr.value) return this;
125
- const keyMapped = this.#toKey(key);
126
- if (!this.has(key)) {
127
- return IMapMapped.create(
128
- [...this.#map, tp(keyMapped, value)].map(
129
- ([km, v]) => tp(this.#fromKey(km), v)
130
- ),
131
- this.#toKey,
132
- this.#fromKey
133
- );
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)));
134
178
  }
135
- return IMapMapped.create(
136
- Array.from(
137
- this.#map,
138
- ([km, v]) => tp(this.#fromKey(km), Object.is(km, keyMapped) ? value : v)
139
- ),
140
- this.#toKey,
141
- this.#fromKey
142
- );
143
- }
144
- /** @inheritdoc */
145
- update(key, updater) {
146
- const curr = this.get(key);
147
- if (isNone(curr)) {
148
- if (this.#showNotFoundMessage) {
149
- console.warn(
150
- `IMapMapped.update: key not found: ${unknownToString(this.#toKey(key))}`
151
- );
152
- }
153
- 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;
154
194
  }
155
- const keyMapped = this.#toKey(key);
156
- return IMapMapped.create(
157
- Array.from(
158
- this.#map,
159
- ([km, v]) => tp(
160
- this.#fromKey(km),
161
- Object.is(km, keyMapped) ? updater(curr.value) : v
162
- )
163
- ),
164
- this.#toKey,
165
- this.#fromKey
166
- );
167
- }
168
- /** @inheritdoc */
169
- withMutations(actions) {
170
- const mut_result = new Map(this.#map);
171
- const updateFn = (action) => {
172
- const key = this.#toKey(action.key);
173
- switch (action.type) {
174
- case "delete":
175
- mut_result.delete(key);
176
- break;
177
- case "set":
178
- mut_result.set(key, action.value);
179
- break;
180
- case "update": {
181
- const curr = mut_result.get(key);
182
- if (curr === void 0 || !mut_result.has(key)) {
195
+ /** @inheritdoc */
196
+ delete(key) {
197
+ if (!this.has(key)) {
183
198
  if (this.#showNotFoundMessage) {
184
- console.warn(
185
- `IMapMapped.withMutations::update: key not found: ${unknownToString(key)}`
186
- );
199
+ console.warn(`IMapMapped.delete: key not found: ${unknownToString(this.#toKey(key))}`);
187
200
  }
188
- break;
189
- }
190
- mut_result.set(key, action.updater(curr));
191
- break;
201
+ return this;
192
202
  }
193
- }
194
- };
195
- for (const action of actions) {
196
- 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());
197
333
  }
198
- return IMapMapped.create(
199
- Array.from(mut_result, ([k, v]) => [this.#fromKey(k), v]),
200
- this.#toKey,
201
- this.#fromKey
202
- );
203
- }
204
- /** @inheritdoc */
205
- map(mapFn) {
206
- return IMapMapped.create(
207
- this.toArray().map(([k, v]) => tp(k, mapFn(v, k))),
208
- this.#toKey,
209
- this.#fromKey
210
- );
211
- }
212
- /** @inheritdoc */
213
- mapKeys(mapFn) {
214
- return IMapMapped.create(
215
- this.toArray().map(([k, v]) => tp(mapFn(k), v)),
216
- this.#toKey,
217
- this.#fromKey
218
- );
219
- }
220
- /** @inheritdoc */
221
- mapEntries(mapFn) {
222
- return IMapMapped.create(
223
- this.toArray().map(mapFn),
224
- this.#toKey,
225
- this.#fromKey
226
- );
227
- }
228
- /** @inheritdoc */
229
- forEach(callbackfn) {
230
- for (const [km, value] of this.#map) {
231
- callbackfn(value, this.#fromKey(km));
334
+ /** @inheritdoc */
335
+ toValuesArray() {
336
+ return Array.from(this.values());
232
337
  }
233
- }
234
- /**
235
- * @example
236
- *
237
- * ```ts
238
- * type Point = Readonly<{ x: number; y: number }>;
239
- *
240
- * const toKey = (p: Point) => JSON.stringify(p);
241
- *
242
- * // eslint-disable-next-line total-functions/no-unsafe-type-assertion
243
- * const fromKey = (key: string) => JSON.parse(key) as Point;
244
- *
245
- * const map = IMapMapped.create<Point, string, string>(
246
- * [
247
- * [{ x: 0, y: 0 }, 'origin'],
248
- * [{ x: 1, y: 0 }, 'right'],
249
- * ],
250
- * toKey,
251
- * fromKey,
252
- * );
253
- *
254
- * const collected = Array.from(map);
255
- *
256
- * assert.deepStrictEqual(collected, [
257
- * [{ x: 0, y: 0 }, 'origin'],
258
- * [{ x: 1, y: 0 }, 'right'],
259
- * ]);
260
- * ```
261
- *
262
- * @inheritdoc
263
- */
264
- *[Symbol.iterator]() {
265
- for (const e of this.entries()) {
266
- yield e;
338
+ /** @inheritdoc */
339
+ toEntriesArray() {
340
+ return Array.from(this.entries());
267
341
  }
268
- }
269
- /** @inheritdoc */
270
- *keys() {
271
- for (const km of this.#map.keys()) {
272
- yield this.#fromKey(km);
342
+ /** @inheritdoc */
343
+ toArray() {
344
+ return Array.from(this.entries());
273
345
  }
274
- }
275
- /** @inheritdoc */
276
- values() {
277
- return this.#map.values();
278
- }
279
- /** @inheritdoc */
280
- *entries() {
281
- for (const [km, v] of this.#map) {
282
- yield [this.#fromKey(km), v];
346
+ /** @inheritdoc */
347
+ toRawMap() {
348
+ return this.#map;
283
349
  }
284
- }
285
- /** @inheritdoc */
286
- toKeysArray() {
287
- return Array.from(this.keys());
288
- }
289
- /** @inheritdoc */
290
- toValuesArray() {
291
- return Array.from(this.values());
292
- }
293
- /** @inheritdoc */
294
- toEntriesArray() {
295
- return Array.from(this.entries());
296
- }
297
- /** @inheritdoc */
298
- toArray() {
299
- return Array.from(this.entries());
300
- }
301
- /** @inheritdoc */
302
- toRawMap() {
303
- return this.#map;
304
- }
305
350
  }
306
-
307
- export { IMapMapped };
308
- //# sourceMappingURL=imap-mapped.mjs.map
351
+ //# sourceMappingURL=imap-mapped.mjs.map