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 +1 @@
1
- {"version":3,"file":"optional-zip.mjs","sources":["../../../../src/functional/optional/impl/optional-zip.mts"],"sourcesContent":["import { type Optional } from '../optional.mjs';\nimport { isSome } from './optional-is-some.mjs';\nimport { none } from './optional-none.mjs';\nimport { some } from './optional-some.mjs';\n\n/**\n * Combines two `Optional` values into a single `Optional` containing a tuple.\n * If either `Optional` is `None`, returns `None`.\n *\n * @example\n *\n * ```ts\n * const zipped = Optional.zip(Optional.some('left'), Optional.some(1));\n *\n * assert.isTrue(Optional.isSome(zipped));\n *\n * if (Optional.isSome(zipped)) {\n * const expected: readonly [string, number] = ['left', 1] as const;\n *\n * assert.deepStrictEqual(zipped.value, expected);\n * }\n *\n * const missing = Optional.zip(\n * Optional.some('value'),\n * // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n * Optional.none as Optional<number>,\n * );\n *\n * assert.deepStrictEqual(missing, Optional.none);\n * ```\n *\n * @template A The value type of the first `Optional`.\n * @template B The value type of the second `Optional`.\n * @param optionalA The first `Optional`.\n * @param optionalB The second `Optional`.\n * @returns An `Optional` containing a tuple of both values, or `None`.\n */\nexport const zip = <A, const B>(\n optionalA: Optional<A>,\n optionalB: Optional<B>,\n): Optional<readonly [A, B]> =>\n isSome(optionalA) && isSome(optionalB)\n ? some([optionalA.value, optionalB.value] as const)\n : none;\n"],"names":[],"mappings":";;;;AAqCO,MAAM,MAAM,CACjB,SAAA,EACA,SAAA,KAEA,MAAA,CAAO,SAAS,CAAA,IAAK,MAAA,CAAO,SAAS,CAAA,GACjC,KAAK,CAAC,SAAA,CAAU,OAAO,SAAA,CAAU,KAAK,CAAU,CAAA,GAChD;;;;"}
1
+ {"version":3,"file":"optional-zip.mjs","sourceRoot":"","sources":["../../../../src/functional/optional/impl/optional-zip.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAE3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,CACjB,SAAsB,EACtB,SAAsB,EACK,EAAE,CAC7B,MAAM,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC;IACpC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAU,CAAC;IACnD,CAAC,CAAC,IAAI,CAAC"}
@@ -1,5 +1,4 @@
1
- const SomeTypeTagName = "ts-data-forge::Optional.some";
2
- const NoneTypeTagName = "ts-data-forge::Optional.none";
3
-
4
- export { NoneTypeTagName, SomeTypeTagName };
5
- //# sourceMappingURL=tag.mjs.map
1
+ export const SomeTypeTagName = 'ts-data-forge::Optional.some';
2
+ /** @internal String literal tag to identify the 'None' variant of Optional. */
3
+ export const NoneTypeTagName = 'ts-data-forge::Optional.none';
4
+ //# sourceMappingURL=tag.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"tag.mjs","sources":["../../../../src/functional/optional/impl/tag.mts"],"sourcesContent":["/** @internal String literal tag to identify the 'Some' variant of Optional. */\nimport { type None, type Some } from '../../../types.mjs';\n\nexport const SomeTypeTagName: Some<unknown>['$$tag'] =\n 'ts-data-forge::Optional.some';\n\n/** @internal String literal tag to identify the 'None' variant of Optional. */\nexport const NoneTypeTagName: None['$$tag'] = 'ts-data-forge::Optional.none';\n"],"names":[],"mappings":"AAGO,MAAM,eAAA,GACX;AAGK,MAAM,eAAA,GAAiC;;;;"}
1
+ {"version":3,"file":"tag.mjs","sourceRoot":"","sources":["../../../../src/functional/optional/impl/tag.mts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,eAAe,GAC1B,8BAA8B,CAAC;AAEjC,+EAA+E;AAC/E,MAAM,CAAC,MAAM,eAAe,GAAkB,8BAA8B,CAAC"}
@@ -1,2 +1,2 @@
1
-
2
- //# sourceMappingURL=types.mjs.map
1
+ export {};
2
+ //# sourceMappingURL=types.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
1
+ {"version":3,"file":"types.mjs","sourceRoot":"","sources":["../../../../src/functional/optional/impl/types.mts"],"names":[],"mappings":""}
@@ -1,3 +1,2 @@
1
- import * as index from './impl/index.mjs';
2
- export { index as Optional };
3
- //# sourceMappingURL=index.mjs.map
1
+ export * from './optional.mjs';
2
+ //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
1
+ {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../../src/functional/optional/index.mts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
@@ -1,3 +1,2 @@
1
- import * as index from './impl/index.mjs';
2
- export { index as Optional };
3
- //# sourceMappingURL=optional.mjs.map
1
+ export * as Optional from './impl/index.mjs';
2
+ //# sourceMappingURL=optional.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"optional.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
1
+ {"version":3,"file":"optional.mjs","sourceRoot":"","sources":["../../../src/functional/optional/optional.mts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,QAAQ,MAAM,kBAAkB,CAAC"}
@@ -1,17 +1,45 @@
1
- import { isOptional } from './optional/impl/optional-is-optional.mjs';
2
- import { map } from './optional/impl/optional-map.mjs';
3
1
 
4
- const pipe = (a) => (
5
- // eslint-disable-next-line total-functions/no-unsafe-type-assertion
6
- {
2
+ import { Optional } from './optional/index.mjs';
3
+ /**
4
+ * Creates a new pipe object that allows for chaining operations on a value.
5
+ *
6
+ * This function provides a fluent interface for applying transformations to
7
+ * values, with intelligent method selection based on the input type:
8
+ *
9
+ * - For `Optional` values: Provides `mapOptional` for safe Optional
10
+ * transformations
11
+ * - For other values: Provides `mapNullable` for null-safe transformations
12
+ * - All types get the basic `map` method for general transformations
13
+ *
14
+ * The pipe maintains type safety throughout the chain, automatically selecting
15
+ * the appropriate overload based on the current value type.
16
+ *
17
+ * @template A The type of the initial value to wrap in a pipe.
18
+ * @param a The initial value to wrap in a pipe.
19
+ * @returns A pipe object with chaining methods appropriate for the value type.
20
+ */
21
+ export const pipe = (a) =>
22
+ // eslint-disable-next-line total-functions/no-unsafe-type-assertion
23
+ ({
7
24
  value: a,
8
25
  map: (fn) => pipe(fn(a)),
9
- mapNullable: (fn) => pipe(a == null ? void 0 : fn(a)),
10
- ...isOptional(a) ? {
11
- mapOptional: (fn) => pipe(map(a, fn))
12
- } : {}
13
- }
14
- );
15
-
16
- export { pipe };
17
- //# sourceMappingURL=pipe.mjs.map
26
+ mapNullable: (fn) => pipe(a == null ? undefined : fn(a)),
27
+ ...(Optional.isOptional(a)
28
+ ? {
29
+ mapOptional: (fn) => pipe(Optional.map(a, fn)),
30
+ }
31
+ : {}),
32
+ });
33
+
34
+
35
+
36
+
37
+
38
+
39
+
40
+
41
+
42
+
43
+
44
+
45
+ //# sourceMappingURL=pipe.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"pipe.mjs","sources":["../../src/functional/pipe.mts"],"sourcesContent":["import { expectType } from '../expect-type.mjs';\nimport { Optional, type UnknownOptional } from './optional/index.mjs';\n\n/**\n * Creates a new pipe object that allows for chaining operations on a value.\n *\n * This function provides a fluent interface for applying transformations to\n * values, with intelligent method selection based on the input type:\n *\n * - For `Optional` values: Provides `mapOptional` for safe Optional\n * transformations\n * - For other values: Provides `mapNullable` for null-safe transformations\n * - All types get the basic `map` method for general transformations\n *\n * The pipe maintains type safety throughout the chain, automatically selecting\n * the appropriate overload based on the current value type.\n *\n * @template A The type of the initial value to wrap in a pipe.\n * @param a The initial value to wrap in a pipe.\n * @returns A pipe object with chaining methods appropriate for the value type.\n */\nexport const pipe = <const A,>(a: A): Pipe<A> =>\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n ({\n value: a,\n map: (fn) => pipe(fn(a)),\n mapNullable: (fn) => pipe(a == null ? undefined : fn(a)),\n\n ...(Optional.isOptional(a)\n ? {\n mapOptional: (fn) => pipe(Optional.map(a, fn)),\n }\n : {}),\n }) satisfies PipeImpl<A> as unknown as Pipe<A>;\n\n// `PipeBase<A>` is always present; the conditional only *adds* `mapOptional`\n// for Optional values. Two subtleties motivate this shape:\n//\n// 1. The check is `[A] extends [UnknownOptional]` (a 1-tuple), not the bare\n// `A extends UnknownOptional`. A bare check distributes over unions, so a\n// piped union value such as `Result<D, E> | undefined` would expand into\n// `Pipe<Ok<D>> | Pipe<Err<E>> | Pipe<undefined>`. Calling a chained method\n// on that union of pipe objects forces TypeScript to synthesize a merged\n// call signature, during which a branded member like `Ok<D>` is widened to\n// its constraint (`Ok<number>`) — losing the brand `D`.\n//\n// 2. `value: A` lives on `PipeBase<A>`, *outside* the conditional. If `value`\n// flowed through the conditional, then for a not-yet-resolved generic `A`\n// the deferred true branch narrows `A` to `A & UnknownOptional`, so\n// `.value` would surface as the noisy `(A & UnknownOptional) | A`. Keeping\n// it on the unconditional base yields a clean `A`.\nexport type Pipe<A> = PipeBase<A> &\n PipeMapNullable<A> &\n ([A] extends [UnknownOptional] ? PipeMapOptional<A> : unknown);\n\n// NOTE: 以下では 'typing when used with generics' test で型エラーが出る。\n// 詳細は documents/reports/pipe-typing.md の 「mapNullable を条件付きで含めるのがうまくいかない理由」を参照。\n// export type Pipe<A> = PipeBase<A> &\n// ([A] extends [UnknownOptional] ? PipeMapOptional<A> : unknown) &\n// ([undefined] extends [A] ? PipeMapNullable<A> : unknown) &\n// ([null] extends [A] ? PipeMapNullable<A> : unknown);\n\nexpectType<Optional<number>, UnknownOptional>('<=');\n\nexpectType<number | undefined, undefined>('>=');\n\nexpectType<keyof Pipe<number | undefined>, 'value' | 'map' | 'mapNullable'>(\n '=',\n);\n\nexpectType<\n keyof Pipe<Optional<number>>,\n 'value' | 'map' | 'mapNullable' | 'mapOptional'\n>('=');\n\nexpectType<\n keyof Pipe<Optional<number | undefined>>,\n 'value' | 'map' | 'mapNullable' | 'mapOptional'\n>('=');\n\nexpectType<\n keyof Pipe<Optional<number> | undefined>,\n 'value' | 'map' | 'mapNullable'\n>('=');\n\ntype PipeBase<A> = Readonly<{\n /** The current value being piped. */\n value: A;\n\n /**\n * Maps the current value to a new value using the provided function.\n *\n * @example\n *\n * ```ts\n * const result = pipe(2)\n * .map((value) => value * 3)\n * .map((value) => `value: ${value}`);\n *\n * assert.deepStrictEqual(result.value, 'value: 6');\n * ```\n *\n * @template B The type of the new value.\n * @param fn Function to transform the current value.\n * @returns A new pipe containing the transformed value.\n */\n map: <B>(fn: (a: A) => B) => Pipe<B>;\n}>;\n\ntype PipeMapNullable<A> = Readonly<{\n /**\n * Maps the current value only if it's not null or undefined. If the current\n * value is null/undefined, the transformation is skipped and undefined is\n * propagated through the pipe.\n *\n * @example\n *\n * ```ts\n * const result = pipe<string | undefined>('hello')\n * .mapNullable((value) => value.toUpperCase())\n * .mapNullable((value) => value.slice(0, 2));\n *\n * assert.deepStrictEqual(result.value, 'HE');\n *\n * const empty = pipe<string | undefined>(undefined).mapNullable((value) =>\n * value.toUpperCase(),\n * );\n *\n * assert.isTrue(empty.value === undefined);\n * ```\n *\n * @template B The type of the transformed value.\n * @param fn Function to transform the non-null value.\n * @returns A new pipe containing the transformed value or undefined.\n */\n mapNullable: <B>(fn: (a: NonNullable<A>) => B) => Pipe<B | undefined>;\n}>;\n\ntype PipeMapOptional<A extends UnknownOptional> = Readonly<{\n /**\n * Maps the value inside an Optional using Optional.map semantics. If the\n * Optional is None, the transformation is skipped and None is propagated.\n * If the Optional is Some, the transformation is applied to the inner\n * value.\n *\n * @example\n *\n * ```ts\n * const result = pipe(Optional.some(10))\n * .mapOptional((value) => value * 2)\n * .mapOptional((value) => value + 5);\n *\n * assert.deepStrictEqual(result.value, Optional.some(25));\n *\n * const empty = pipe(Optional.none as Optional<number>).mapOptional(\n * (value) => value * 2,\n * );\n *\n * assert.isTrue(Optional.isNone(empty.value));\n * ```\n *\n * @template B The type of the transformed inner value.\n * @param fn Function to transform the inner value of the Optional.\n * @returns A new pipe containing an Optional with the transformed value.\n */\n mapOptional: <B>(fn: (a: Optional.Unwrap<A>) => B) => Pipe<Optional<B>>;\n}>;\n\n/** @internal */\ntype Cast<T, U> = T & U;\n\n/** @internal */\ntype PipeImpl<A> = Readonly<{\n value: A;\n map: <B>(fn: (a: A) => B) => PipeImpl<B>;\n mapNullable?: <B>(fn: (a: NonNullable<A>) => B) => PipeImpl<B | undefined>;\n mapOptional?: <B>(\n fn: (a: Optional.Unwrap<Cast<A, UnknownOptional>>) => B,\n ) => PipeImpl<Optional<B>>;\n}>;\n"],"names":["Optional.isOptional","Optional.map"],"mappings":";;;AAqBO,MAAM,OAAO,CAAW,CAAA;AAAA;AAAA,EAE5B;AAAA,IACC,KAAA,EAAO,CAAA;AAAA,IACP,KAAK,CAAC,EAAA,KAAO,IAAA,CAAK,EAAA,CAAG,CAAC,CAAC,CAAA;AAAA,IACvB,WAAA,EAAa,CAAC,EAAA,KAAO,IAAA,CAAK,KAAK,IAAA,GAAO,MAAA,GAAY,EAAA,CAAG,CAAC,CAAC,CAAA;AAAA,IAEvD,GAAIA,UAAS,CAAW,CAAC,CAAA,GACrB;AAAA,MACE,WAAA,EAAa,CAAC,EAAA,KAAO,IAAA,CAAKC,GAAS,CAAI,CAAA,EAAG,EAAE,CAAC;AAAA,QAE/C;AAAC;AACP;;;;"}
1
+ {"version":3,"file":"pipe.mjs","sourceRoot":"","sources":["../../src/functional/pipe.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAwB,MAAM,sBAAsB,CAAC;AAEtE;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAAW,CAAI,EAAW,EAAE;AAC9C,oEAAoE;AACpE,CAAC;IACC,KAAK,EAAE,CAAC;IACR,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACxB,WAAW,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAExD,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;QACxB,CAAC,CAAC;YACE,WAAW,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;SAC/C;QACH,CAAC,CAAC,EAAE,CAAC;CACR,CAA6C,CAAC;AAsBjD,6DAA6D;AAC7D,gFAAgF;AAChF,sCAAsC;AACtC,qEAAqE;AACrE,+DAA+D;AAC/D,yDAAyD;AAEzD,UAAU,CAAoC,IAAI,CAAC,CAAC;AAEpD,UAAU,CAAgC,IAAI,CAAC,CAAC;AAEhD,UAAU,CACR,GAAG,CACJ,CAAC;AAEF,UAAU,CAGR,GAAG,CAAC,CAAC;AAEP,UAAU,CAGR,GAAG,CAAC,CAAC;AAEP,UAAU,CAGR,GAAG,CAAC,CAAC"}
@@ -1,27 +1,28 @@
1
- export { err } from './result-err.mjs';
2
- export { expectToBe } from './result-expect-to-be.mjs';
3
- export { flatMap } from './result-flat-map.mjs';
4
- export { fold } from './result-fold.mjs';
5
- export { fromOptional } from './result-from-optional.mjs';
6
- export { fromPromise } from './result-from-promise.mjs';
7
- export { fromThrowable } from './result-from-throwable.mjs';
8
- export { isErr } from './result-is-err.mjs';
9
- export { isOk } from './result-is-ok.mjs';
10
- export { isResult } from './result-is-result.mjs';
11
- export { mapErr } from './result-map-err.mjs';
12
- export { map } from './result-map.mjs';
13
- export { match } from './result-match.mjs';
14
- export { ok } from './result-ok.mjs';
15
- export { orElse } from './result-or-else.mjs';
16
- export { safeTry } from './result-safe-try.mjs';
17
- export { safeUnwrap } from './result-safe-unwrap.mjs';
18
- export { swap } from './result-swap.mjs';
19
- export { toOptional } from './result-to-optional.mjs';
20
- export { unwrapErrOr } from './result-unwrap-err-or.mjs';
21
- export { unwrapErrThrow } from './result-unwrap-err-throw.mjs';
22
- export { unwrapErr } from './result-unwrap-err.mjs';
23
- export { unwrapOkOr } from './result-unwrap-ok-or.mjs';
24
- export { unwrapOk } from './result-unwrap-ok.mjs';
25
- export { unwrapThrow } from './result-unwrap-throw.mjs';
26
- export { zip } from './result-zip.mjs';
27
- //# sourceMappingURL=index.mjs.map
1
+ export * from './result-err.mjs';
2
+ export * from './result-expect-to-be.mjs';
3
+ export * from './result-flat-map.mjs';
4
+ export * from './result-fold.mjs';
5
+ export * from './result-from-optional.mjs';
6
+ export * from './result-from-promise.mjs';
7
+ export * from './result-from-throwable.mjs';
8
+ export * from './result-is-err.mjs';
9
+ export * from './result-is-ok.mjs';
10
+ export * from './result-is-result.mjs';
11
+ export * from './result-map-err.mjs';
12
+ export * from './result-map.mjs';
13
+ export * from './result-match.mjs';
14
+ export * from './result-ok.mjs';
15
+ export * from './result-or-else.mjs';
16
+ export * from './result-safe-try.mjs';
17
+ export * from './result-safe-unwrap.mjs';
18
+ export * from './result-swap.mjs';
19
+ export * from './result-to-optional.mjs';
20
+ export * from './result-unwrap-err-or.mjs';
21
+ export * from './result-unwrap-err-throw.mjs';
22
+ export * from './result-unwrap-err.mjs';
23
+ export * from './result-unwrap-ok-or.mjs';
24
+ export * from './result-unwrap-ok.mjs';
25
+ export * from './result-unwrap-throw.mjs';
26
+ export * from './result-zip.mjs';
27
+ export * from './types.mjs';
28
+ //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../../../src/functional/result/impl/index.mts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC"}
@@ -1,9 +1,31 @@
1
1
  import { ErrTypeTagName } from './tag.mjs';
2
-
3
- const err = (value) => ({
4
- $$tag: ErrTypeTagName,
5
- value
2
+ /**
3
+ * Creates a `Result.Err` containing the given error value.
4
+ *
5
+ * Use this constructor when an operation fails and you want to wrap the error
6
+ * information in a Result type for consistent error handling.
7
+ *
8
+ * @example
9
+ *
10
+ * ```ts
11
+ * const success = Result.ok({ id: 1 });
12
+ *
13
+ * const failure = Result.err(new Error('missing data'));
14
+ *
15
+ * assert.deepStrictEqual(success, {
16
+ * $$tag: 'ts-data-forge::Result.ok',
17
+ * value: { id: 1 },
18
+ * });
19
+ *
20
+ * assert.isTrue(Result.isErr(failure));
21
+ * ```
22
+ *
23
+ * @template E The type of the error value.
24
+ * @param value The error value.
25
+ * @returns A `Result.Err<E>` containing the value.
26
+ */
27
+ export const err = (value) => ({
28
+ $$tag: ErrTypeTagName,
29
+ value,
6
30
  });
7
-
8
- export { err };
9
- //# sourceMappingURL=result-err.mjs.map
31
+ //# sourceMappingURL=result-err.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"result-err.mjs","sources":["../../../../src/functional/result/impl/result-err.mts"],"sourcesContent":["import { type Err } from '../../../types.mjs';\nimport { ErrTypeTagName } from './tag.mjs';\n\n/**\n * Creates a `Result.Err` containing the given error value.\n *\n * Use this constructor when an operation fails and you want to wrap the error\n * information in a Result type for consistent error handling.\n *\n * @example\n *\n * ```ts\n * const success = Result.ok({ id: 1 });\n *\n * const failure = Result.err(new Error('missing data'));\n *\n * assert.deepStrictEqual(success, {\n * $$tag: 'ts-data-forge::Result.ok',\n * value: { id: 1 },\n * });\n *\n * assert.isTrue(Result.isErr(failure));\n * ```\n *\n * @template E The type of the error value.\n * @param value The error value.\n * @returns A `Result.Err<E>` containing the value.\n */\nexport const err = <const E,>(value: E): Err<E> =>\n ({\n $$tag: ErrTypeTagName,\n value,\n }) as const;\n"],"names":[],"mappings":";;AA4BO,MAAM,GAAA,GAAM,CAAW,KAAA,MAC3B;AAAA,EACC,KAAA,EAAO,cAAA;AAAA,EACP;AACF,CAAA;;;;"}
1
+ {"version":3,"file":"result-err.mjs","sourceRoot":"","sources":["../../../../src/functional/result/impl/result-err.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAE3C;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,CAAW,KAAQ,EAAU,EAAE,CAChD,CAAC;IACC,KAAK,EAAE,cAAc;IACrB,KAAK;CACN,CAAU,CAAC"}
@@ -1,24 +1,23 @@
1
1
  import { isOk } from './result-is-ok.mjs';
2
2
  import { unwrapOk } from './result-unwrap-ok.mjs';
3
-
4
- function expectToBe(...args) {
5
- switch (args.length) {
6
- case 2: {
7
- const [result, message] = args;
8
- return expectToBeImpl(result, message);
3
+ export function expectToBe(...args) {
4
+ switch (args.length) {
5
+ case 2: {
6
+ // Direct version: first argument is result
7
+ const [result, message] = args;
8
+ return expectToBeImpl(result, message);
9
+ }
10
+ case 1: {
11
+ // Curried version: first argument is message
12
+ const [message] = args;
13
+ return (result) => expectToBeImpl(result, message);
14
+ }
9
15
  }
10
- case 1: {
11
- const [message] = args;
12
- return (result) => expectToBeImpl(result, message);
13
- }
14
- }
15
16
  }
16
17
  const expectToBeImpl = (result, message) => {
17
- if (isOk(result)) {
18
- return unwrapOk(result);
19
- }
20
- throw new Error(message);
18
+ if (isOk(result)) {
19
+ return unwrapOk(result);
20
+ }
21
+ throw new Error(message);
21
22
  };
22
-
23
- export { expectToBe };
24
- //# sourceMappingURL=result-expect-to-be.mjs.map
23
+ //# sourceMappingURL=result-expect-to-be.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"result-expect-to-be.mjs","sources":["../../../../src/functional/result/impl/result-expect-to-be.mts"],"sourcesContent":["import { type UnknownResult } from '../result.mjs';\nimport { isOk } from './result-is-ok.mjs';\nimport { unwrapOk } from './result-unwrap-ok.mjs';\nimport { type UnwrapOk } from './types.mjs';\n\n/**\n * Unwraps a `Result`, returning the success value or throwing an error with\n * the provided message.\n *\n * @example\n *\n * ```ts\n * const okValue = Result.ok('data');\n *\n * assert.isTrue(Result.expectToBe(okValue, 'should have value') === 'data');\n *\n * const expectResult = Result.expectToBe('missing result');\n *\n * const throwTest = (): void => {\n * expectResult(Result.err('boom'));\n * };\n *\n * assert.throws(throwTest, /missing result/u);\n *\n * assert.isTrue(expectResult(Result.ok('value')) === 'value');\n * ```\n *\n * @template R The `UnknownResult` type to unwrap.\n * @param result The `Result` to unwrap.\n * @param message The error message to throw if the `Result` is `Result.Err`.\n * @returns The success value if `Result.Ok`.\n * @throws Error with the provided message if the `Result` is `Result.Err`.\n */\nexport function expectToBe<R extends UnknownResult>(\n result: R,\n message: string,\n): UnwrapOk<R>;\n\n// Curried version\nexport function expectToBe(\n message: string,\n): <R extends UnknownResult>(result: R) => UnwrapOk<R>;\n\nexport function expectToBe<R extends UnknownResult>(\n ...args: readonly [result: R, message: string] | readonly [message: string]\n): UnwrapOk<R> | ((result: R) => UnwrapOk<R>) {\n switch (args.length) {\n case 2: {\n // Direct version: first argument is result\n const [result, message] = args;\n\n return expectToBeImpl(result, message);\n }\n\n case 1: {\n // Curried version: first argument is message\n const [message] = args;\n\n return (result: R): UnwrapOk<R> => expectToBeImpl(result, message);\n }\n }\n}\n\nconst expectToBeImpl = <R extends UnknownResult>(\n result: R,\n message: string,\n): UnwrapOk<R> => {\n if (isOk(result)) {\n return unwrapOk(result);\n }\n\n throw new Error(message);\n};\n"],"names":[],"mappings":";;;AA2CO,SAAS,cACX,IAAA,EACyC;AAC5C,EAAA,QAAQ,KAAK,MAAA;AAAQ,IACnB,KAAK,CAAA,EAAG;AAEN,MAAA,MAAM,CAAC,MAAA,EAAQ,OAAO,CAAA,GAAI,IAAA;AAE1B,MAAA,OAAO,cAAA,CAAe,QAAQ,OAAO,CAAA;AAAA,IACvC;AAAA,IAEA,KAAK,CAAA,EAAG;AAEN,MAAA,MAAM,CAAC,OAAO,CAAA,GAAI,IAAA;AAElB,MAAA,OAAO,CAAC,MAAA,KAA2B,cAAA,CAAe,MAAA,EAAQ,OAAO,CAAA;AAAA,IACnE;AAAA;AAEJ;AAEA,MAAM,cAAA,GAAiB,CACrB,MAAA,EACA,OAAA,KACgB;AAChB,EAAA,IAAI,IAAA,CAAK,MAAM,CAAA,EAAG;AAChB,IAAA,OAAO,SAAS,MAAM,CAAA;AAAA,EACxB;AAEA,EAAA,MAAM,IAAI,MAAM,OAAO,CAAA;AACzB,CAAA;;;;"}
1
+ {"version":3,"file":"result-expect-to-be.mjs","sourceRoot":"","sources":["../../../../src/functional/result/impl/result-expect-to-be.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAyClD,MAAM,UAAU,UAAU,CACxB,GAAG,IAAwE;IAE3E,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;QACpB,KAAK,CAAC,EAAE,CAAC;YACP,2CAA2C;YAC3C,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;YAE/B,OAAO,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACzC,CAAC;QAED,KAAK,CAAC,EAAE,CAAC;YACP,6CAA6C;YAC7C,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;YAEvB,OAAO,CAAC,MAAS,EAAe,EAAE,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,cAAc,GAAG,CACrB,MAAS,EACT,OAAe,EACF,EAAE;IACf,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACjB,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;AAC3B,CAAC,CAAC"}
@@ -1,24 +1,21 @@
1
1
  import { isErr } from './result-is-err.mjs';
2
-
3
- function flatMap(...args) {
4
- switch (args.length) {
5
- case 2: {
6
- const [result, flatMapFn] = args;
7
- return flatMapImpl(result, flatMapFn);
2
+ export function flatMap(...args) {
3
+ switch (args.length) {
4
+ case 2: {
5
+ // Direct version: first argument is result
6
+ const [result, flatMapFn] = args;
7
+ return flatMapImpl(result, flatMapFn);
8
+ }
9
+ case 1: {
10
+ // Curried version
11
+ const [flatMapFn] = args;
12
+ return (result) => flatMapImpl(result, flatMapFn);
13
+ }
8
14
  }
9
- case 1: {
10
- const [flatMapFn] = args;
11
- return (result) => flatMapImpl(result, flatMapFn);
12
- }
13
- }
14
15
  }
15
- const flatMapImpl = (result, flatMapFn) => isErr(result) ? (
16
- // eslint-disable-next-line total-functions/no-unsafe-type-assertion
17
- result
18
- ) : (
19
- // eslint-disable-next-line total-functions/no-unsafe-type-assertion
20
- flatMapFn(result.value)
21
- );
22
-
23
- export { flatMap };
24
- //# sourceMappingURL=result-flat-map.mjs.map
16
+ const flatMapImpl = (result, flatMapFn) => isErr(result)
17
+ ? // eslint-disable-next-line total-functions/no-unsafe-type-assertion
18
+ result
19
+ : // eslint-disable-next-line total-functions/no-unsafe-type-assertion
20
+ flatMapFn(result.value);
21
+ //# sourceMappingURL=result-flat-map.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"result-flat-map.mjs","sources":["../../../../src/functional/result/impl/result-flat-map.mts"],"sourcesContent":["import { type Err } from '../../../types.mjs';\nimport { type Result, type UnknownResult } from '../result.mjs';\nimport { isErr } from './result-is-err.mjs';\nimport { type UnwrapErr, type UnwrapOk } from './types.mjs';\n\n/**\n * Applies a function that returns a `Result` to the success value of a\n * `Result`. If the input is `Err`, returns the original `Err`. This is the\n * monadic bind operation for `Result`.\n *\n * @example\n *\n * ```ts\n * const parseNumber = (input: string): Result<number, string> => {\n * const num = Num.safeParseInt(input);\n *\n * return Result.mapErr(num, () => 'not a number');\n * };\n *\n * const parsed = Result.flatMap(Result.ok('42'), parseNumber);\n *\n * const failure = Result.flatMap(Result.ok('abc'), parseNumber);\n *\n * const passthrough = Result.flatMap(Result.err('fail'), parseNumber);\n *\n * assert.deepStrictEqual(parsed, Result.ok(42));\n *\n * assert.deepStrictEqual(failure, Result.err('not a number'));\n *\n * assert.deepStrictEqual(passthrough, Result.err('fail'));\n *\n * const parseThenDouble = Result.flatMap((input: string) =>\n * Result.map(parseNumber(input), (value) => value * 2),\n * );\n *\n * assert.deepStrictEqual(parseThenDouble(Result.ok('10')), Result.ok(20));\n * ```\n *\n * @template R The input `UnknownResult` type.\n * @template S2 The success type of the `Result` returned by the function.\n * @template E2 The error type of the `Result` returned by the function.\n * @param result The `Result` to flat map.\n * @param flatMapFn The function to apply that returns a `Result`.\n * @returns The result of applying the function, or the original `Err`.\n */\nexport function flatMap<R extends UnknownResult, S2, E2>(\n result: R,\n flatMapFn: (value: UnwrapOk<R>) => Result<S2, E2>,\n): Result<S2, E2 | UnwrapErr<R>>;\n\n// Curried version\nexport function flatMap<S, S2, E2>(\n flatMapFn: (value: S) => Result<S2, E2>,\n): <E>(result: Result<S, E>) => Result<S2, E | E2>;\n\nexport function flatMap<R extends UnknownResult, S2, E2>(\n ...args:\n | readonly [result: R, flatMapFn: (value: UnwrapOk<R>) => Result<S2, E2>]\n | readonly [flatMapFn: (value: UnwrapOk<R>) => Result<S2, E2>]\n):\n | Result<S2, E2 | UnwrapErr<R>>\n | ((result: R) => Result<S2, UnwrapErr<R> | E2>) {\n switch (args.length) {\n case 2: {\n // Direct version: first argument is result\n const [result, flatMapFn] = args;\n\n return flatMapImpl(result, flatMapFn);\n }\n\n case 1: {\n // Curried version\n const [flatMapFn] = args;\n\n return (result: R) => flatMapImpl(result, flatMapFn);\n }\n }\n}\n\nconst flatMapImpl = <R extends UnknownResult, S2, E2>(\n result: R,\n flatMapFn: (value: UnwrapOk<R>) => Result<S2, E2>,\n): Result<S2, E2 | UnwrapErr<R>> =>\n isErr(result)\n ? // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n (result as Err<UnwrapErr<R>>)\n : // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n flatMapFn(result.value as UnwrapOk<R>);\n"],"names":[],"mappings":";;AAuDO,SAAS,WACX,IAAA,EAK8C;AACjD,EAAA,QAAQ,KAAK,MAAA;AAAQ,IACnB,KAAK,CAAA,EAAG;AAEN,MAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAI,IAAA;AAE5B,MAAA,OAAO,WAAA,CAAY,QAAQ,SAAS,CAAA;AAAA,IACtC;AAAA,IAEA,KAAK,CAAA,EAAG;AAEN,MAAA,MAAM,CAAC,SAAS,CAAA,GAAI,IAAA;AAEpB,MAAA,OAAO,CAAC,MAAA,KAAc,WAAA,CAAY,MAAA,EAAQ,SAAS,CAAA;AAAA,IACrD;AAAA;AAEJ;AAEA,MAAM,WAAA,GAAc,CAClB,MAAA,EACA,SAAA,KAEA,MAAM,MAAM,CAAA;AAAA;AAAA,EAEP;AAAA;AAAA;AAAA,EAED,SAAA,CAAU,OAAO,KAAoB;AAAA,CAAA;;;;"}
1
+ {"version":3,"file":"result-flat-map.mjs","sourceRoot":"","sources":["../../../../src/functional/result/impl/result-flat-map.mts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAqD5C,MAAM,UAAU,OAAO,CACrB,GAAG,IAE6D;IAIhE,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;QACpB,KAAK,CAAC,EAAE,CAAC;YACP,2CAA2C;YAC3C,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC;YAEjC,OAAO,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACxC,CAAC;QAED,KAAK,CAAC,EAAE,CAAC;YACP,kBAAkB;YAClB,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;YAEzB,OAAO,CAAC,MAAS,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,WAAW,GAAG,CAClB,MAAS,EACT,SAAiD,EAClB,EAAE,CACjC,KAAK,CAAC,MAAM,CAAC;IACX,CAAC,CAAC,oEAAoE;QACnE,MAA4B;IAC/B,CAAC,CAAC,oEAAoE;QACpE,SAAS,CAAC,MAAM,CAAC,KAAoB,CAAC,CAAC"}
@@ -1,26 +1,23 @@
1
1
  import { err } from './result-err.mjs';
2
2
  import { isOk } from './result-is-ok.mjs';
3
3
  import { ok } from './result-ok.mjs';
4
-
5
- function fold(...args) {
6
- switch (args.length) {
7
- case 3: {
8
- const [result, mapFn, mapErrFn] = args;
9
- return foldImpl(result, mapFn, mapErrFn);
4
+ export function fold(...args) {
5
+ switch (args.length) {
6
+ case 3: {
7
+ // Direct version: first argument is result
8
+ const [result, mapFn, mapErrFn] = args;
9
+ return foldImpl(result, mapFn, mapErrFn);
10
+ }
11
+ case 2: {
12
+ // Curried version
13
+ const [mapFn, mapErrFn] = args;
14
+ return (result) => foldImpl(result, mapFn, mapErrFn);
15
+ }
10
16
  }
11
- case 2: {
12
- const [mapFn, mapErrFn] = args;
13
- return (result) => foldImpl(result, mapFn, mapErrFn);
14
- }
15
- }
16
17
  }
17
- const foldImpl = (result, mapFn, mapErrFn) => isOk(result) ? (
18
- // eslint-disable-next-line total-functions/no-unsafe-type-assertion
19
- ok(mapFn(result.value))
20
- ) : (
21
- // eslint-disable-next-line total-functions/no-unsafe-type-assertion
22
- err(mapErrFn(result.value))
23
- );
24
-
25
- export { fold };
26
- //# sourceMappingURL=result-fold.mjs.map
18
+ const foldImpl = (result, mapFn, mapErrFn) => isOk(result)
19
+ ? // eslint-disable-next-line total-functions/no-unsafe-type-assertion
20
+ ok(mapFn(result.value))
21
+ : // eslint-disable-next-line total-functions/no-unsafe-type-assertion
22
+ err(mapErrFn(result.value));
23
+ //# sourceMappingURL=result-fold.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"result-fold.mjs","sources":["../../../../src/functional/result/impl/result-fold.mts"],"sourcesContent":["import { type Result, type UnknownResult } from '../result.mjs';\nimport { err } from './result-err.mjs';\nimport { isOk } from './result-is-ok.mjs';\nimport { ok } from './result-ok.mjs';\nimport { type UnwrapErr, type UnwrapOk } from './types.mjs';\n\n/**\n * Applies one of two functions depending on whether the `Result` is `Ok` or\n * `Err`.\n *\n * @example\n *\n * ```ts\n * const okValue = Result.ok(2);\n *\n * const errValue = Result.err('bad');\n *\n * const foldedOk = Result.fold(\n * okValue,\n * (value) => value * 2,\n * (error) => error,\n * );\n *\n * const foldedErr = Result.fold(\n * errValue,\n * (value: number) => value * 2,\n * (error) => error.toUpperCase(),\n * );\n *\n * assert.deepStrictEqual(foldedOk, Result.ok(4));\n *\n * assert.deepStrictEqual(foldedErr, Result.err('BAD'));\n *\n * const foldNumbers = Result.fold(\n * (value: number) => value * 3,\n * (error: string) => error.length,\n * );\n *\n * assert.deepStrictEqual(foldNumbers(Result.ok(3)), Result.ok(9));\n *\n * assert.deepStrictEqual(foldNumbers(Result.err('oops')), Result.err(4));\n * ```\n *\n * @template R The input `UnknownResult` type.\n * @template S2 The type of the success value returned by `mapFn`.\n * @template E2 The type of the error value returned by `mapErrFn`.\n * @param result The `Result` to fold.\n * @param mapFn The function to apply if `result` is `Ok`.\n * @param mapErrFn The function to apply if `result` is `Err`.\n * @returns A new `Result<S2, E2>` based on the applied function.\n */\nexport function fold<R extends UnknownResult, S2, E2>(\n result: R,\n mapFn: (value: UnwrapOk<R>) => S2,\n mapErrFn: (error: UnwrapErr<R>) => E2,\n): Result<S2, E2>;\n\n// Curried version\nexport function fold<S, E, S2, E2>(\n mapFn: (value: S) => S2,\n mapErrFn: (error: E) => E2,\n): (result: Result<S, E>) => Result<S2, E2>;\n\nexport function fold<R extends UnknownResult, S2, E2>(\n ...args:\n | readonly [\n result: R,\n mapFn: (value: UnwrapOk<R>) => S2,\n mapErrFn: (error: UnwrapErr<R>) => E2,\n ]\n | readonly [\n mapFn: (value: UnwrapOk<R>) => S2,\n mapErrFn: (error: UnwrapErr<R>) => E2,\n ]\n): Result<S2, E2> | ((result: R) => Result<S2, E2>) {\n switch (args.length) {\n case 3: {\n // Direct version: first argument is result\n const [result, mapFn, mapErrFn] = args;\n\n return foldImpl(result, mapFn, mapErrFn);\n }\n\n case 2: {\n // Curried version\n const [mapFn, mapErrFn] = args;\n\n return (result: R) => foldImpl(result, mapFn, mapErrFn);\n }\n }\n}\n\nconst foldImpl = <R extends UnknownResult, S2, E2>(\n result: R,\n mapFn: (value: UnwrapOk<R>) => S2,\n mapErrFn: (error: UnwrapErr<R>) => E2,\n): Result<S2, E2> =>\n isOk(result)\n ? // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n ok(mapFn(result.value as UnwrapOk<R>))\n : // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n err(mapErrFn(result.value as UnwrapErr<R>));\n"],"names":[],"mappings":";;;;AA+DO,SAAS,QACX,IAAA,EAU+C;AAClD,EAAA,QAAQ,KAAK,MAAA;AAAQ,IACnB,KAAK,CAAA,EAAG;AAEN,MAAA,MAAM,CAAC,MAAA,EAAQ,KAAA,EAAO,QAAQ,CAAA,GAAI,IAAA;AAElC,MAAA,OAAO,QAAA,CAAS,MAAA,EAAQ,KAAA,EAAO,QAAQ,CAAA;AAAA,IACzC;AAAA,IAEA,KAAK,CAAA,EAAG;AAEN,MAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,IAAA;AAE1B,MAAA,OAAO,CAAC,MAAA,KAAc,QAAA,CAAS,MAAA,EAAQ,OAAO,QAAQ,CAAA;AAAA,IACxD;AAAA;AAEJ;AAEA,MAAM,WAAW,CACf,MAAA,EACA,KAAA,EACA,QAAA,KAEA,KAAK,MAAM,CAAA;AAAA;AAAA,EAEP,EAAA,CAAG,KAAA,CAAM,MAAA,CAAO,KAAoB,CAAC;AAAA;AAAA;AAAA,EAErC,GAAA,CAAI,QAAA,CAAS,MAAA,CAAO,KAAqB,CAAC;AAAA,CAAA;;;;"}
1
+ {"version":3,"file":"result-fold.mjs","sourceRoot":"","sources":["../../../../src/functional/result/impl/result-fold.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AA4DrC,MAAM,UAAU,IAAI,CAClB,GAAG,IASE;IAEL,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;QACpB,KAAK,CAAC,EAAE,CAAC;YACP,2CAA2C;YAC3C,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAC;YAEvC,OAAO,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC3C,CAAC;QAED,KAAK,CAAC,EAAE,CAAC;YACP,kBAAkB;YAClB,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAC;YAE/B,OAAO,CAAC,MAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,QAAQ,GAAG,CACf,MAAS,EACT,KAAiC,EACjC,QAAqC,EACrB,EAAE,CAClB,IAAI,CAAC,MAAM,CAAC;IACV,CAAC,CAAC,oEAAoE;QACpE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,KAAoB,CAAC,CAAC;IACxC,CAAC,CAAC,oEAAoE;QACpE,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAqB,CAAC,CAAC,CAAC"}
@@ -1,24 +1,21 @@
1
- import { isSome } from '../../optional/impl/optional-is-some.mjs';
2
- import { unwrap } from '../../optional/impl/optional-unwrap.mjs';
1
+ import { Optional } from '../../optional/index.mjs';
3
2
  import { err } from './result-err.mjs';
4
3
  import { ok } from './result-ok.mjs';
5
-
6
- function fromOptional(...args) {
7
- switch (args.length) {
8
- case 2: {
9
- const [optional, error] = args;
10
- return fromOptionalImpl(optional, error);
4
+ export function fromOptional(...args) {
5
+ switch (args.length) {
6
+ case 2: {
7
+ const [optional, error] = args;
8
+ return fromOptionalImpl(optional, error);
9
+ }
10
+ case 1: {
11
+ // Curried version: the only argument is the error value
12
+ const [error] = args;
13
+ return (optional) => fromOptionalImpl(optional, error);
14
+ }
11
15
  }
12
- case 1: {
13
- const [error] = args;
14
- return (optional) => fromOptionalImpl(optional, error);
15
- }
16
- }
17
16
  }
18
- const fromOptionalImpl = (optional, error) => isSome(optional) ? (
19
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
20
- ok(unwrap(optional))
21
- ) : err(error);
22
-
23
- export { fromOptional };
24
- //# sourceMappingURL=result-from-optional.mjs.map
17
+ const fromOptionalImpl = (optional, error) => Optional.isSome(optional)
18
+ ? // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
19
+ ok(Optional.unwrap(optional))
20
+ : err(error);
21
+ //# sourceMappingURL=result-from-optional.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"result-from-optional.mjs","sources":["../../../../src/functional/result/impl/result-from-optional.mts"],"sourcesContent":["import { Optional, type UnknownOptional } from '../../optional/index.mjs';\nimport { type Result } from '../result.mjs';\nimport { err } from './result-err.mjs';\nimport { ok } from './result-ok.mjs';\n\n/**\n * Converts an {@link Optional} to a `Result` (the inverse of\n * {@link Result.toOptional}, and the equivalent of Rust's `Option::ok_or`).\n *\n * If the {@link Optional} is `Some`, returns `Ok` with the contained value.\n * If it is `None`, returns `Err` with the provided error value.\n *\n * @example\n *\n * ```ts\n * assert.deepStrictEqual(\n * Result.fromOptional(Optional.some(42), 'missing'),\n * Result.ok(42),\n * );\n *\n * assert.deepStrictEqual(\n * Result.fromOptional(Optional.none, 'missing'),\n * Result.err('missing'),\n * );\n *\n * const withMissingError = Result.fromOptional('missing');\n *\n * assert.deepStrictEqual(withMissingError(Optional.some(1)), Result.ok(1));\n *\n * assert.deepStrictEqual(\n * withMissingError(Optional.none),\n * Result.err('missing'),\n * );\n * ```\n *\n * @template O The input `UnknownOptional` type.\n * @template E The type of the error value used for the `None` case.\n * @param optional The `Optional` to convert.\n * @param error The error value to use if the `Optional` is `None`.\n * @returns `Ok` with the contained value, or `Err` with `error`.\n */\nexport function fromOptional<O extends UnknownOptional, const E>(\n optional: O,\n error: E,\n): Result<Optional.Unwrap<O>, E>;\n\n// Curried version\nexport function fromOptional<const E>(\n error: E,\n): <O extends UnknownOptional>(optional: O) => Result<Optional.Unwrap<O>, E>;\n\nexport function fromOptional<O extends UnknownOptional, const E>(\n ...args: readonly [optional: O, error: E] | readonly [error: E]\n):\n | Result<Optional.Unwrap<O>, E>\n | ((optional: O) => Result<Optional.Unwrap<O>, E>) {\n switch (args.length) {\n case 2: {\n const [optional, error] = args;\n\n return fromOptionalImpl(optional, error);\n }\n\n case 1: {\n // Curried version: the only argument is the error value\n const [error] = args;\n\n return (optional: O) => fromOptionalImpl(optional, error);\n }\n }\n}\n\nconst fromOptionalImpl = <O extends UnknownOptional, E>(\n optional: O,\n error: E,\n): Result<Optional.Unwrap<O>, E> =>\n Optional.isSome(optional)\n ? // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n ok(Optional.unwrap(optional)!)\n : err(error);\n"],"names":["Optional.isSome","Optional.unwrap"],"mappings":";;;;;AAmDO,SAAS,gBACX,IAAA,EAGgD;AACnD,EAAA,QAAQ,KAAK,MAAA;AAAQ,IACnB,KAAK,CAAA,EAAG;AACN,MAAA,MAAM,CAAC,QAAA,EAAU,KAAK,CAAA,GAAI,IAAA;AAE1B,MAAA,OAAO,gBAAA,CAAiB,UAAU,KAAK,CAAA;AAAA,IACzC;AAAA,IAEA,KAAK,CAAA,EAAG;AAEN,MAAA,MAAM,CAAC,KAAK,CAAA,GAAI,IAAA;AAEhB,MAAA,OAAO,CAAC,QAAA,KAAgB,gBAAA,CAAiB,QAAA,EAAU,KAAK,CAAA;AAAA,IAC1D;AAAA;AAEJ;AAEA,MAAM,mBAAmB,CACvB,QAAA,EACA,KAAA,KAEAA,OAAgB,QAAQ,CAAA;AAAA;AAAA,EAEpB,EAAA,CAAGC,MAAS,CAAO,QAAQ,CAAE;AAAA,IAC7B,IAAI,KAAK,CAAA;;;;"}
1
+ {"version":3,"file":"result-from-optional.mjs","sourceRoot":"","sources":["../../../../src/functional/result/impl/result-from-optional.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAwB,MAAM,0BAA0B,CAAC;AAE1E,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAgDrC,MAAM,UAAU,YAAY,CAC1B,GAAG,IAA4D;IAI/D,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;QACpB,KAAK,CAAC,EAAE,CAAC;YACP,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC;YAE/B,OAAO,gBAAgB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC3C,CAAC;QAED,KAAK,CAAC,EAAE,CAAC;YACP,wDAAwD;YACxD,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;YAErB,OAAO,CAAC,QAAW,EAAE,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,gBAAgB,GAAG,CACvB,QAAW,EACX,KAAQ,EACuB,EAAE,CACjC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC;IACvB,CAAC,CAAC,oEAAoE;QACpE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAE,CAAC;IAChC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC"}
@@ -1,10 +1,39 @@
1
1
  import { err } from './result-err.mjs';
2
2
  import { ok } from './result-ok.mjs';
3
-
4
- const fromPromise = (promise) => (
5
- // eslint-disable-next-line total-functions/no-unsafe-type-assertion
6
- promise.then((v) => ok(v)).catch(err)
7
- );
8
-
9
- export { fromPromise };
10
- //# sourceMappingURL=result-from-promise.mjs.map
3
+ /**
4
+ * Converts a Promise into a Promise that resolves to a `Result`. If the input
5
+ * Promise resolves, the `Result` will be `Ok` with the resolved value. If the
6
+ * input Promise rejects, the `Result` will be `Err` with the rejection
7
+ * reason.
8
+ *
9
+ * The error channel is `unknown`, since the rejection reason is carried
10
+ * through untouched. For a concrete error type, use `AsyncResult.fromPromise`
11
+ * with a `mapError` function; called without one it behaves exactly as this
12
+ * function does.
13
+ *
14
+ * @example
15
+ *
16
+ * ```ts
17
+ * const successPromise = Result.fromPromise(Promise.resolve('ok'));
18
+ *
19
+ * const failurePromise = Result.fromPromise(
20
+ * Promise.reject(new Error('fail')),
21
+ * );
22
+ *
23
+ * const resolved = await successPromise;
24
+ *
25
+ * const rejected = await failurePromise;
26
+ *
27
+ * assert.deepStrictEqual(resolved, Result.ok('ok'));
28
+ *
29
+ * assert.isTrue(Result.isErr(rejected));
30
+ * ```
31
+ *
32
+ * @template P The type of the input Promise.
33
+ * @param promise The Promise to convert.
34
+ * @returns A Promise that resolves to `Result<UnwrapPromise<P>, unknown>`.
35
+ */
36
+ export const fromPromise = (promise) =>
37
+ // eslint-disable-next-line total-functions/no-unsafe-type-assertion
38
+ promise.then((v) => ok(v)).catch(err);
39
+ //# sourceMappingURL=result-from-promise.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"result-from-promise.mjs","sources":["../../../../src/functional/result/impl/result-from-promise.mts"],"sourcesContent":["import { type Ok } from '../../../types.mjs';\nimport { type Result } from '../result.mjs';\nimport { err } from './result-err.mjs';\nimport { ok } from './result-ok.mjs';\n\n/**\n * @template P The Promise type.\n * @internal\n * Utility type to extract the resolved value type from a Promise.\n */\ntype UnwrapPromise<P extends Promise<unknown>> =\n P extends Promise<infer V> ? V : never;\n\n/**\n * Converts a Promise into a Promise that resolves to a `Result`. If the input\n * Promise resolves, the `Result` will be `Ok` with the resolved value. If the\n * input Promise rejects, the `Result` will be `Err` with the rejection\n * reason.\n *\n * The error channel is `unknown`, since the rejection reason is carried\n * through untouched. For a concrete error type, use `AsyncResult.fromPromise`\n * with a `mapError` function; called without one it behaves exactly as this\n * function does.\n *\n * @example\n *\n * ```ts\n * const successPromise = Result.fromPromise(Promise.resolve('ok'));\n *\n * const failurePromise = Result.fromPromise(\n * Promise.reject(new Error('fail')),\n * );\n *\n * const resolved = await successPromise;\n *\n * const rejected = await failurePromise;\n *\n * assert.deepStrictEqual(resolved, Result.ok('ok'));\n *\n * assert.isTrue(Result.isErr(rejected));\n * ```\n *\n * @template P The type of the input Promise.\n * @param promise The Promise to convert.\n * @returns A Promise that resolves to `Result<UnwrapPromise<P>, unknown>`.\n */\nexport const fromPromise = <P extends Promise<unknown>>(\n promise: P,\n): Promise<Result<UnwrapPromise<P>, unknown>> =>\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n promise.then((v) => ok(v) as Ok<UnwrapPromise<P>>).catch(err);\n"],"names":[],"mappings":";;;AA8CO,MAAM,cAAc,CACzB,OAAA;AAAA;AAAA,EAGA,OAAA,CAAQ,KAAK,CAAC,CAAA,KAAM,GAAG,CAAC,CAAyB,CAAA,CAAE,KAAA,CAAM,GAAG;AAAA;;;;"}
1
+ {"version":3,"file":"result-from-promise.mjs","sourceRoot":"","sources":["../../../../src/functional/result/impl/result-from-promise.mts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAUrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,OAAU,EACkC,EAAE;AAC9C,oEAAoE;AACpE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAyB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC"}