ts-data-forge 14.6.4 → 14.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (573) hide show
  1. package/README.md +2 -1
  2. package/dist/array/impl/array-utils-length-bounded-array-cast.d.mts +36 -6
  3. package/dist/array/impl/array-utils-length-bounded-array-cast.d.mts.map +1 -1
  4. package/dist/array/impl/array-utils-length-bounded-array-cast.mjs +4 -0
  5. package/dist/array/impl/array-utils-length-bounded-array-cast.mjs.map +1 -1
  6. package/dist/array/impl/array-utils-length-bounded-tuple-cast.d.mts +26 -6
  7. package/dist/array/impl/array-utils-length-bounded-tuple-cast.d.mts.map +1 -1
  8. package/dist/array/impl/array-utils-length-bounded-tuple-cast.mjs +4 -0
  9. package/dist/array/impl/array-utils-length-bounded-tuple-cast.mjs.map +1 -1
  10. package/dist/expect-type.d.mts +2 -70
  11. package/dist/expect-type.d.mts.map +1 -1
  12. package/dist/expect-type.mjs +1 -68
  13. package/dist/expect-type.mjs.map +1 -1
  14. package/dist/functional/index.d.mts +11 -6
  15. package/dist/functional/index.d.mts.map +1 -1
  16. package/dist/functional/index.mjs +10 -6
  17. package/dist/functional/index.mjs.map +1 -1
  18. package/dist/guard/has-key.d.mts +2 -51
  19. package/dist/guard/has-key.d.mts.map +1 -1
  20. package/dist/guard/has-key.mjs +1 -41
  21. package/dist/guard/has-key.mjs.map +1 -1
  22. package/dist/guard/is-non-null-object.d.mts +2 -34
  23. package/dist/guard/is-non-null-object.d.mts.map +1 -1
  24. package/dist/guard/is-non-null-object.mjs +1 -34
  25. package/dist/guard/is-non-null-object.mjs.map +1 -1
  26. package/dist/guard/is-record.d.mts +2 -89
  27. package/dist/guard/is-record.d.mts.map +1 -1
  28. package/dist/guard/is-record.mjs +1 -88
  29. package/dist/guard/is-record.mjs.map +1 -1
  30. package/dist/guard/key-is-in.d.mts +2 -42
  31. package/dist/guard/key-is-in.d.mts.map +1 -1
  32. package/dist/guard/key-is-in.mjs +1 -40
  33. package/dist/guard/key-is-in.mjs.map +1 -1
  34. package/dist/index.d.mts +2 -0
  35. package/dist/index.d.mts.map +1 -1
  36. package/dist/index.mjs +2 -0
  37. package/dist/index.mjs.map +1 -1
  38. package/dist/number/num.d.mts +9 -1
  39. package/dist/number/num.d.mts.map +1 -1
  40. package/dist/number/num.mjs +24 -16
  41. package/dist/number/num.mjs.map +1 -1
  42. package/dist/others/index.d.mts +1 -0
  43. package/dist/others/index.d.mts.map +1 -1
  44. package/dist/others/index.mjs +1 -0
  45. package/dist/others/index.mjs.map +1 -1
  46. package/dist/others/panic-error.d.mts +9 -0
  47. package/dist/others/panic-error.d.mts.map +1 -0
  48. package/dist/others/panic-error.mjs +9 -0
  49. package/dist/others/panic-error.mjs.map +1 -0
  50. package/dist/others/unknown-to-string.d.mts +2 -37
  51. package/dist/others/unknown-to-string.d.mts.map +1 -1
  52. package/dist/others/unknown-to-string.mjs +1 -92
  53. package/dist/others/unknown-to-string.mjs.map +1 -1
  54. package/dist/types.d.mts +1 -41
  55. package/dist/types.d.mts.map +1 -1
  56. package/dist/types.mjs +0 -1
  57. package/dist/types.mjs.map +1 -1
  58. package/package.json +9 -9
  59. package/src/array/impl/array-utils-length-bounded-array-cast.mts +36 -6
  60. package/src/array/impl/array-utils-length-bounded-tuple-cast.mts +26 -6
  61. package/src/expect-type.mts +2 -78
  62. package/src/functional/index.mts +31 -6
  63. package/src/guard/has-key.mts +2 -72
  64. package/src/guard/is-non-null-object.mts +2 -36
  65. package/src/guard/is-record.mts +2 -95
  66. package/src/guard/key-is-in.mts +2 -49
  67. package/src/index.mts +2 -0
  68. package/src/number/num.mts +36 -28
  69. package/src/others/index.mts +1 -0
  70. package/src/others/panic-error.mts +8 -0
  71. package/src/others/unknown-to-string.mts +2 -111
  72. package/src/types.mts +4 -54
  73. package/dist/functional/async-result/async-result.d.mts +0 -16
  74. package/dist/functional/async-result/async-result.d.mts.map +0 -1
  75. package/dist/functional/async-result/async-result.mjs +0 -2
  76. package/dist/functional/async-result/async-result.mjs.map +0 -1
  77. package/dist/functional/async-result/impl/async-result-flat-map.d.mts +0 -39
  78. package/dist/functional/async-result/impl/async-result-flat-map.d.mts.map +0 -1
  79. package/dist/functional/async-result/impl/async-result-flat-map.mjs +0 -23
  80. package/dist/functional/async-result/impl/async-result-flat-map.mjs.map +0 -1
  81. package/dist/functional/async-result/impl/async-result-from-promise.d.mts +0 -47
  82. package/dist/functional/async-result/impl/async-result-from-promise.d.mts.map +0 -1
  83. package/dist/functional/async-result/impl/async-result-from-promise.mjs +0 -10
  84. package/dist/functional/async-result/impl/async-result-from-promise.mjs.map +0 -1
  85. package/dist/functional/async-result/impl/async-result-from-throwable.d.mts +0 -53
  86. package/dist/functional/async-result/impl/async-result-from-throwable.d.mts.map +0 -1
  87. package/dist/functional/async-result/impl/async-result-from-throwable.mjs +0 -15
  88. package/dist/functional/async-result/impl/async-result-from-throwable.mjs.map +0 -1
  89. package/dist/functional/async-result/impl/async-result-map-err.d.mts +0 -35
  90. package/dist/functional/async-result/impl/async-result-map-err.d.mts.map +0 -1
  91. package/dist/functional/async-result/impl/async-result-map-err.mjs +0 -20
  92. package/dist/functional/async-result/impl/async-result-map-err.mjs.map +0 -1
  93. package/dist/functional/async-result/impl/async-result-map.d.mts +0 -45
  94. package/dist/functional/async-result/impl/async-result-map.d.mts.map +0 -1
  95. package/dist/functional/async-result/impl/async-result-map.mjs +0 -20
  96. package/dist/functional/async-result/impl/async-result-map.mjs.map +0 -1
  97. package/dist/functional/async-result/impl/async-result-unwrap-or.d.mts +0 -34
  98. package/dist/functional/async-result/impl/async-result-unwrap-or.d.mts.map +0 -1
  99. package/dist/functional/async-result/impl/async-result-unwrap-or.mjs +0 -37
  100. package/dist/functional/async-result/impl/async-result-unwrap-or.mjs.map +0 -1
  101. package/dist/functional/async-result/impl/index.d.mts +0 -8
  102. package/dist/functional/async-result/impl/index.d.mts.map +0 -1
  103. package/dist/functional/async-result/impl/index.mjs +0 -8
  104. package/dist/functional/async-result/impl/index.mjs.map +0 -1
  105. package/dist/functional/async-result/impl/types.d.mts +0 -45
  106. package/dist/functional/async-result/impl/types.d.mts.map +0 -1
  107. package/dist/functional/async-result/impl/types.mjs +0 -2
  108. package/dist/functional/async-result/impl/types.mjs.map +0 -1
  109. package/dist/functional/async-result/index.d.mts +0 -2
  110. package/dist/functional/async-result/index.d.mts.map +0 -1
  111. package/dist/functional/async-result/index.mjs +0 -2
  112. package/dist/functional/async-result/index.mjs.map +0 -1
  113. package/dist/functional/match.d.mts +0 -80
  114. package/dist/functional/match.d.mts.map +0 -1
  115. package/dist/functional/match.mjs +0 -31
  116. package/dist/functional/match.mjs.map +0 -1
  117. package/dist/functional/optional/impl/index.d.mts +0 -19
  118. package/dist/functional/optional/impl/index.d.mts.map +0 -1
  119. package/dist/functional/optional/impl/index.mjs +0 -19
  120. package/dist/functional/optional/impl/index.mjs.map +0 -1
  121. package/dist/functional/optional/impl/optional-expect-to-be.d.mts +0 -37
  122. package/dist/functional/optional/impl/optional-expect-to-be.d.mts.map +0 -1
  123. package/dist/functional/optional/impl/optional-expect-to-be.mjs +0 -22
  124. package/dist/functional/optional/impl/optional-expect-to-be.mjs.map +0 -1
  125. package/dist/functional/optional/impl/optional-filter.d.mts +0 -33
  126. package/dist/functional/optional/impl/optional-filter.d.mts.map +0 -1
  127. package/dist/functional/optional/impl/optional-filter.mjs +0 -25
  128. package/dist/functional/optional/impl/optional-filter.mjs.map +0 -1
  129. package/dist/functional/optional/impl/optional-flat-map.d.mts +0 -39
  130. package/dist/functional/optional/impl/optional-flat-map.d.mts.map +0 -1
  131. package/dist/functional/optional/impl/optional-flat-map.mjs +0 -18
  132. package/dist/functional/optional/impl/optional-flat-map.mjs.map +0 -1
  133. package/dist/functional/optional/impl/optional-from-nullable.d.mts +0 -27
  134. package/dist/functional/optional/impl/optional-from-nullable.d.mts.map +0 -1
  135. package/dist/functional/optional/impl/optional-from-nullable.mjs +0 -28
  136. package/dist/functional/optional/impl/optional-from-nullable.mjs.map +0 -1
  137. package/dist/functional/optional/impl/optional-is-none.d.mts +0 -23
  138. package/dist/functional/optional/impl/optional-is-none.d.mts.map +0 -1
  139. package/dist/functional/optional/impl/optional-is-none.mjs +0 -22
  140. package/dist/functional/optional/impl/optional-is-none.mjs.map +0 -1
  141. package/dist/functional/optional/impl/optional-is-optional.d.mts +0 -21
  142. package/dist/functional/optional/impl/optional-is-optional.d.mts.map +0 -1
  143. package/dist/functional/optional/impl/optional-is-optional.mjs +0 -26
  144. package/dist/functional/optional/impl/optional-is-optional.mjs.map +0 -1
  145. package/dist/functional/optional/impl/optional-is-some.d.mts +0 -24
  146. package/dist/functional/optional/impl/optional-is-some.d.mts.map +0 -1
  147. package/dist/functional/optional/impl/optional-is-some.mjs +0 -23
  148. package/dist/functional/optional/impl/optional-is-some.mjs.map +0 -1
  149. package/dist/functional/optional/impl/optional-map.d.mts +0 -34
  150. package/dist/functional/optional/impl/optional-map.d.mts.map +0 -1
  151. package/dist/functional/optional/impl/optional-map.mjs +0 -22
  152. package/dist/functional/optional/impl/optional-map.mjs.map +0 -1
  153. package/dist/functional/optional/impl/optional-match.d.mts +0 -48
  154. package/dist/functional/optional/impl/optional-match.d.mts.map +0 -1
  155. package/dist/functional/optional/impl/optional-match.mjs +0 -20
  156. package/dist/functional/optional/impl/optional-match.mjs.map +0 -1
  157. package/dist/functional/optional/impl/optional-none.d.mts +0 -19
  158. package/dist/functional/optional/impl/optional-none.d.mts.map +0 -1
  159. package/dist/functional/optional/impl/optional-none.mjs +0 -19
  160. package/dist/functional/optional/impl/optional-none.mjs.map +0 -1
  161. package/dist/functional/optional/impl/optional-or-else.d.mts +0 -43
  162. package/dist/functional/optional/impl/optional-or-else.d.mts.map +0 -1
  163. package/dist/functional/optional/impl/optional-or-else.mjs +0 -16
  164. package/dist/functional/optional/impl/optional-or-else.mjs.map +0 -1
  165. package/dist/functional/optional/impl/optional-some.d.mts +0 -22
  166. package/dist/functional/optional/impl/optional-some.d.mts.map +0 -1
  167. package/dist/functional/optional/impl/optional-some.mjs +0 -25
  168. package/dist/functional/optional/impl/optional-some.mjs.map +0 -1
  169. package/dist/functional/optional/impl/optional-to-nullable.d.mts +0 -30
  170. package/dist/functional/optional/impl/optional-to-nullable.d.mts.map +0 -1
  171. package/dist/functional/optional/impl/optional-to-nullable.mjs +0 -30
  172. package/dist/functional/optional/impl/optional-to-nullable.mjs.map +0 -1
  173. package/dist/functional/optional/impl/optional-unwrap-or.d.mts +0 -37
  174. package/dist/functional/optional/impl/optional-unwrap-or.d.mts.map +0 -1
  175. package/dist/functional/optional/impl/optional-unwrap-or.mjs +0 -16
  176. package/dist/functional/optional/impl/optional-unwrap-or.mjs.map +0 -1
  177. package/dist/functional/optional/impl/optional-unwrap-throw.d.mts +0 -31
  178. package/dist/functional/optional/impl/optional-unwrap-throw.d.mts.map +0 -1
  179. package/dist/functional/optional/impl/optional-unwrap-throw.mjs +0 -36
  180. package/dist/functional/optional/impl/optional-unwrap-throw.mjs.map +0 -1
  181. package/dist/functional/optional/impl/optional-unwrap.d.mts +0 -32
  182. package/dist/functional/optional/impl/optional-unwrap.d.mts.map +0 -1
  183. package/dist/functional/optional/impl/optional-unwrap.mjs +0 -8
  184. package/dist/functional/optional/impl/optional-unwrap.mjs.map +0 -1
  185. package/dist/functional/optional/impl/optional-zip.d.mts +0 -35
  186. package/dist/functional/optional/impl/optional-zip.d.mts.map +0 -1
  187. package/dist/functional/optional/impl/optional-zip.mjs +0 -39
  188. package/dist/functional/optional/impl/optional-zip.mjs.map +0 -1
  189. package/dist/functional/optional/impl/tag.d.mts +0 -6
  190. package/dist/functional/optional/impl/tag.d.mts.map +0 -1
  191. package/dist/functional/optional/impl/tag.mjs +0 -4
  192. package/dist/functional/optional/impl/tag.mjs.map +0 -1
  193. package/dist/functional/optional/impl/types.d.mts +0 -24
  194. package/dist/functional/optional/impl/types.d.mts.map +0 -1
  195. package/dist/functional/optional/impl/types.mjs +0 -2
  196. package/dist/functional/optional/impl/types.mjs.map +0 -1
  197. package/dist/functional/optional/index.d.mts +0 -2
  198. package/dist/functional/optional/index.d.mts.map +0 -1
  199. package/dist/functional/optional/index.mjs +0 -2
  200. package/dist/functional/optional/index.mjs.map +0 -1
  201. package/dist/functional/optional/optional.d.mts +0 -16
  202. package/dist/functional/optional/optional.d.mts.map +0 -1
  203. package/dist/functional/optional/optional.mjs +0 -2
  204. package/dist/functional/optional/optional.mjs.map +0 -1
  205. package/dist/functional/pipe.d.mts +0 -102
  206. package/dist/functional/pipe.d.mts.map +0 -1
  207. package/dist/functional/pipe.mjs +0 -45
  208. package/dist/functional/pipe.mjs.map +0 -1
  209. package/dist/functional/result/impl/index.d.mts +0 -28
  210. package/dist/functional/result/impl/index.d.mts.map +0 -1
  211. package/dist/functional/result/impl/index.mjs +0 -28
  212. package/dist/functional/result/impl/index.mjs.map +0 -1
  213. package/dist/functional/result/impl/result-err.d.mts +0 -28
  214. package/dist/functional/result/impl/result-err.d.mts.map +0 -1
  215. package/dist/functional/result/impl/result-err.mjs +0 -31
  216. package/dist/functional/result/impl/result-err.mjs.map +0 -1
  217. package/dist/functional/result/impl/result-expect-to-be.d.mts +0 -33
  218. package/dist/functional/result/impl/result-expect-to-be.d.mts.map +0 -1
  219. package/dist/functional/result/impl/result-expect-to-be.mjs +0 -23
  220. package/dist/functional/result/impl/result-expect-to-be.mjs.map +0 -1
  221. package/dist/functional/result/impl/result-flat-map.d.mts +0 -45
  222. package/dist/functional/result/impl/result-flat-map.d.mts.map +0 -1
  223. package/dist/functional/result/impl/result-flat-map.mjs +0 -21
  224. package/dist/functional/result/impl/result-flat-map.mjs.map +0 -1
  225. package/dist/functional/result/impl/result-fold.d.mts +0 -50
  226. package/dist/functional/result/impl/result-fold.d.mts.map +0 -1
  227. package/dist/functional/result/impl/result-fold.mjs +0 -23
  228. package/dist/functional/result/impl/result-fold.mjs.map +0 -1
  229. package/dist/functional/result/impl/result-from-optional.d.mts +0 -41
  230. package/dist/functional/result/impl/result-from-optional.d.mts.map +0 -1
  231. package/dist/functional/result/impl/result-from-optional.mjs +0 -21
  232. package/dist/functional/result/impl/result-from-optional.mjs.map +0 -1
  233. package/dist/functional/result/impl/result-from-promise.d.mts +0 -43
  234. package/dist/functional/result/impl/result-from-promise.d.mts.map +0 -1
  235. package/dist/functional/result/impl/result-from-promise.mjs +0 -39
  236. package/dist/functional/result/impl/result-from-promise.mjs.map +0 -1
  237. package/dist/functional/result/impl/result-from-throwable.d.mts +0 -32
  238. package/dist/functional/result/impl/result-from-throwable.d.mts.map +0 -1
  239. package/dist/functional/result/impl/result-from-throwable.mjs +0 -46
  240. package/dist/functional/result/impl/result-from-throwable.mjs.map +0 -1
  241. package/dist/functional/result/impl/result-is-err.d.mts +0 -23
  242. package/dist/functional/result/impl/result-is-err.d.mts.map +0 -1
  243. package/dist/functional/result/impl/result-is-err.mjs +0 -22
  244. package/dist/functional/result/impl/result-is-err.mjs.map +0 -1
  245. package/dist/functional/result/impl/result-is-ok.d.mts +0 -23
  246. package/dist/functional/result/impl/result-is-ok.d.mts.map +0 -1
  247. package/dist/functional/result/impl/result-is-ok.mjs +0 -22
  248. package/dist/functional/result/impl/result-is-ok.mjs.map +0 -1
  249. package/dist/functional/result/impl/result-is-result.d.mts +0 -22
  250. package/dist/functional/result/impl/result-is-result.d.mts.map +0 -1
  251. package/dist/functional/result/impl/result-is-result.mjs +0 -26
  252. package/dist/functional/result/impl/result-is-result.mjs.map +0 -1
  253. package/dist/functional/result/impl/result-map-err.d.mts +0 -39
  254. package/dist/functional/result/impl/result-map-err.d.mts.map +0 -1
  255. package/dist/functional/result/impl/result-map-err.mjs +0 -22
  256. package/dist/functional/result/impl/result-map-err.mjs.map +0 -1
  257. package/dist/functional/result/impl/result-map.d.mts +0 -39
  258. package/dist/functional/result/impl/result-map.d.mts.map +0 -1
  259. package/dist/functional/result/impl/result-map.mjs +0 -22
  260. package/dist/functional/result/impl/result-map.mjs.map +0 -1
  261. package/dist/functional/result/impl/result-match.d.mts +0 -47
  262. package/dist/functional/result/impl/result-match.d.mts.map +0 -1
  263. package/dist/functional/result/impl/result-match.mjs +0 -20
  264. package/dist/functional/result/impl/result-match.mjs.map +0 -1
  265. package/dist/functional/result/impl/result-ok.d.mts +0 -28
  266. package/dist/functional/result/impl/result-ok.d.mts.map +0 -1
  267. package/dist/functional/result/impl/result-ok.mjs +0 -31
  268. package/dist/functional/result/impl/result-ok.mjs.map +0 -1
  269. package/dist/functional/result/impl/result-or-else.d.mts +0 -40
  270. package/dist/functional/result/impl/result-or-else.d.mts.map +0 -1
  271. package/dist/functional/result/impl/result-or-else.mjs +0 -17
  272. package/dist/functional/result/impl/result-or-else.mjs.map +0 -1
  273. package/dist/functional/result/impl/result-safe-try.d.mts +0 -51
  274. package/dist/functional/result/impl/result-safe-try.d.mts.map +0 -1
  275. package/dist/functional/result/impl/result-safe-try.mjs +0 -35
  276. package/dist/functional/result/impl/result-safe-try.mjs.map +0 -1
  277. package/dist/functional/result/impl/result-safe-unwrap.d.mts +0 -36
  278. package/dist/functional/result/impl/result-safe-unwrap.d.mts.map +0 -1
  279. package/dist/functional/result/impl/result-safe-unwrap.mjs +0 -42
  280. package/dist/functional/result/impl/result-safe-unwrap.mjs.map +0 -1
  281. package/dist/functional/result/impl/result-swap.d.mts +0 -23
  282. package/dist/functional/result/impl/result-swap.d.mts.map +0 -1
  283. package/dist/functional/result/impl/result-swap.mjs +0 -27
  284. package/dist/functional/result/impl/result-swap.mjs.map +0 -1
  285. package/dist/functional/result/impl/result-to-optional.d.mts +0 -32
  286. package/dist/functional/result/impl/result-to-optional.d.mts.map +0 -1
  287. package/dist/functional/result/impl/result-to-optional.mjs +0 -32
  288. package/dist/functional/result/impl/result-to-optional.mjs.map +0 -1
  289. package/dist/functional/result/impl/result-unwrap-err-or.d.mts +0 -33
  290. package/dist/functional/result/impl/result-unwrap-err-or.d.mts.map +0 -1
  291. package/dist/functional/result/impl/result-unwrap-err-or.mjs +0 -17
  292. package/dist/functional/result/impl/result-unwrap-err-or.mjs.map +0 -1
  293. package/dist/functional/result/impl/result-unwrap-err-throw.d.mts +0 -33
  294. package/dist/functional/result/impl/result-unwrap-err-throw.d.mts.map +0 -1
  295. package/dist/functional/result/impl/result-unwrap-err-throw.mjs +0 -46
  296. package/dist/functional/result/impl/result-unwrap-err-throw.mjs.map +0 -1
  297. package/dist/functional/result/impl/result-unwrap-err.d.mts +0 -33
  298. package/dist/functional/result/impl/result-unwrap-err.d.mts.map +0 -1
  299. package/dist/functional/result/impl/result-unwrap-err.mjs +0 -34
  300. package/dist/functional/result/impl/result-unwrap-err.mjs.map +0 -1
  301. package/dist/functional/result/impl/result-unwrap-ok-or.d.mts +0 -33
  302. package/dist/functional/result/impl/result-unwrap-ok-or.d.mts.map +0 -1
  303. package/dist/functional/result/impl/result-unwrap-ok-or.mjs +0 -17
  304. package/dist/functional/result/impl/result-unwrap-ok-or.mjs.map +0 -1
  305. package/dist/functional/result/impl/result-unwrap-ok.d.mts +0 -26
  306. package/dist/functional/result/impl/result-unwrap-ok.d.mts.map +0 -1
  307. package/dist/functional/result/impl/result-unwrap-ok.mjs +0 -8
  308. package/dist/functional/result/impl/result-unwrap-ok.mjs.map +0 -1
  309. package/dist/functional/result/impl/result-unwrap-throw.d.mts +0 -33
  310. package/dist/functional/result/impl/result-unwrap-throw.d.mts.map +0 -1
  311. package/dist/functional/result/impl/result-unwrap-throw.mjs +0 -40
  312. package/dist/functional/result/impl/result-unwrap-throw.mjs.map +0 -1
  313. package/dist/functional/result/impl/result-zip.d.mts +0 -32
  314. package/dist/functional/result/impl/result-zip.d.mts.map +0 -1
  315. package/dist/functional/result/impl/result-zip.mjs +0 -37
  316. package/dist/functional/result/impl/result-zip.mjs.map +0 -1
  317. package/dist/functional/result/impl/tag.d.mts +0 -6
  318. package/dist/functional/result/impl/tag.d.mts.map +0 -1
  319. package/dist/functional/result/impl/tag.mjs +0 -4
  320. package/dist/functional/result/impl/tag.mjs.map +0 -1
  321. package/dist/functional/result/impl/types.d.mts +0 -31
  322. package/dist/functional/result/impl/types.d.mts.map +0 -1
  323. package/dist/functional/result/impl/types.mjs +0 -2
  324. package/dist/functional/result/impl/types.mjs.map +0 -1
  325. package/dist/functional/result/index.d.mts +0 -2
  326. package/dist/functional/result/index.d.mts.map +0 -1
  327. package/dist/functional/result/index.mjs +0 -2
  328. package/dist/functional/result/index.mjs.map +0 -1
  329. package/dist/functional/result/result.d.mts +0 -16
  330. package/dist/functional/result/result.d.mts.map +0 -1
  331. package/dist/functional/result/result.mjs +0 -2
  332. package/dist/functional/result/result.mjs.map +0 -1
  333. package/dist/functional/ternary-result/impl/index.d.mts +0 -29
  334. package/dist/functional/ternary-result/impl/index.d.mts.map +0 -1
  335. package/dist/functional/ternary-result/impl/index.mjs +0 -29
  336. package/dist/functional/ternary-result/impl/index.mjs.map +0 -1
  337. package/dist/functional/ternary-result/impl/tag.d.mts +0 -8
  338. package/dist/functional/ternary-result/impl/tag.d.mts.map +0 -1
  339. package/dist/functional/ternary-result/impl/tag.mjs +0 -6
  340. package/dist/functional/ternary-result/impl/tag.mjs.map +0 -1
  341. package/dist/functional/ternary-result/impl/ternary-result-err.d.mts +0 -16
  342. package/dist/functional/ternary-result/impl/ternary-result-err.d.mts.map +0 -1
  343. package/dist/functional/ternary-result/impl/ternary-result-err.mjs +0 -19
  344. package/dist/functional/ternary-result/impl/ternary-result-err.mjs.map +0 -1
  345. package/dist/functional/ternary-result/impl/ternary-result-expect-to-be.d.mts +0 -24
  346. package/dist/functional/ternary-result/impl/ternary-result-expect-to-be.d.mts.map +0 -1
  347. package/dist/functional/ternary-result/impl/ternary-result-expect-to-be.mjs +0 -21
  348. package/dist/functional/ternary-result/impl/ternary-result-expect-to-be.mjs.map +0 -1
  349. package/dist/functional/ternary-result/impl/ternary-result-flat-map.d.mts +0 -39
  350. package/dist/functional/ternary-result/impl/ternary-result-flat-map.d.mts.map +0 -1
  351. package/dist/functional/ternary-result/impl/ternary-result-flat-map.mjs +0 -38
  352. package/dist/functional/ternary-result/impl/ternary-result-flat-map.mjs.map +0 -1
  353. package/dist/functional/ternary-result/impl/ternary-result-fold.d.mts +0 -30
  354. package/dist/functional/ternary-result/impl/ternary-result-fold.d.mts.map +0 -1
  355. package/dist/functional/ternary-result/impl/ternary-result-fold.mjs +0 -33
  356. package/dist/functional/ternary-result/impl/ternary-result-fold.mjs.map +0 -1
  357. package/dist/functional/ternary-result/impl/ternary-result-from-promise.d.mts +0 -23
  358. package/dist/functional/ternary-result/impl/ternary-result-from-promise.d.mts.map +0 -1
  359. package/dist/functional/ternary-result/impl/ternary-result-from-promise.mjs +0 -23
  360. package/dist/functional/ternary-result/impl/ternary-result-from-promise.mjs.map +0 -1
  361. package/dist/functional/ternary-result/impl/ternary-result-from-throwable.d.mts +0 -20
  362. package/dist/functional/ternary-result/impl/ternary-result-from-throwable.d.mts.map +0 -1
  363. package/dist/functional/ternary-result/impl/ternary-result-from-throwable.mjs +0 -33
  364. package/dist/functional/ternary-result/impl/ternary-result-from-throwable.mjs.map +0 -1
  365. package/dist/functional/ternary-result/impl/ternary-result-is-err.d.mts +0 -21
  366. package/dist/functional/ternary-result/impl/ternary-result-is-err.d.mts.map +0 -1
  367. package/dist/functional/ternary-result/impl/ternary-result-is-err.mjs +0 -20
  368. package/dist/functional/ternary-result/impl/ternary-result-is-err.mjs.map +0 -1
  369. package/dist/functional/ternary-result/impl/ternary-result-is-ok.d.mts +0 -23
  370. package/dist/functional/ternary-result/impl/ternary-result-is-ok.d.mts.map +0 -1
  371. package/dist/functional/ternary-result/impl/ternary-result-is-ok.mjs +0 -22
  372. package/dist/functional/ternary-result/impl/ternary-result-is-ok.mjs.map +0 -1
  373. package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.d.mts +0 -22
  374. package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.d.mts.map +0 -1
  375. package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.mjs +0 -28
  376. package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.mjs.map +0 -1
  377. package/dist/functional/ternary-result/impl/ternary-result-is-warn.d.mts +0 -22
  378. package/dist/functional/ternary-result/impl/ternary-result-is-warn.d.mts.map +0 -1
  379. package/dist/functional/ternary-result/impl/ternary-result-is-warn.mjs +0 -21
  380. package/dist/functional/ternary-result/impl/ternary-result-is-warn.mjs.map +0 -1
  381. package/dist/functional/ternary-result/impl/ternary-result-map-err.d.mts +0 -27
  382. package/dist/functional/ternary-result/impl/ternary-result-map-err.d.mts.map +0 -1
  383. package/dist/functional/ternary-result/impl/ternary-result-map-err.mjs +0 -23
  384. package/dist/functional/ternary-result/impl/ternary-result-map-err.mjs.map +0 -1
  385. package/dist/functional/ternary-result/impl/ternary-result-map-warn.d.mts +0 -28
  386. package/dist/functional/ternary-result/impl/ternary-result-map-warn.d.mts.map +0 -1
  387. package/dist/functional/ternary-result/impl/ternary-result-map-warn.mjs +0 -26
  388. package/dist/functional/ternary-result/impl/ternary-result-map-warn.mjs.map +0 -1
  389. package/dist/functional/ternary-result/impl/ternary-result-map.d.mts +0 -36
  390. package/dist/functional/ternary-result/impl/ternary-result-map.d.mts.map +0 -1
  391. package/dist/functional/ternary-result/impl/ternary-result-map.mjs +0 -32
  392. package/dist/functional/ternary-result/impl/ternary-result-map.mjs.map +0 -1
  393. package/dist/functional/ternary-result/impl/ternary-result-ok.d.mts +0 -17
  394. package/dist/functional/ternary-result/impl/ternary-result-ok.d.mts.map +0 -1
  395. package/dist/functional/ternary-result/impl/ternary-result-ok.mjs +0 -20
  396. package/dist/functional/ternary-result/impl/ternary-result-ok.mjs.map +0 -1
  397. package/dist/functional/ternary-result/impl/ternary-result-or-else.d.mts +0 -29
  398. package/dist/functional/ternary-result/impl/ternary-result-or-else.d.mts.map +0 -1
  399. package/dist/functional/ternary-result/impl/ternary-result-or-else.mjs +0 -16
  400. package/dist/functional/ternary-result/impl/ternary-result-or-else.mjs.map +0 -1
  401. package/dist/functional/ternary-result/impl/ternary-result-to-optional.d.mts +0 -23
  402. package/dist/functional/ternary-result/impl/ternary-result-to-optional.d.mts.map +0 -1
  403. package/dist/functional/ternary-result/impl/ternary-result-to-optional.mjs +0 -26
  404. package/dist/functional/ternary-result/impl/ternary-result-to-optional.mjs.map +0 -1
  405. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-or.d.mts +0 -28
  406. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-or.d.mts.map +0 -1
  407. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-or.mjs +0 -14
  408. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-or.mjs.map +0 -1
  409. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-throw.d.mts +0 -20
  410. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-throw.d.mts.map +0 -1
  411. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-throw.mjs +0 -34
  412. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-throw.mjs.map +0 -1
  413. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err.d.mts +0 -20
  414. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err.d.mts.map +0 -1
  415. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err.mjs +0 -21
  416. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err.mjs.map +0 -1
  417. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok-or.d.mts +0 -25
  418. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok-or.d.mts.map +0 -1
  419. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok-or.mjs +0 -14
  420. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok-or.mjs.map +0 -1
  421. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok.d.mts +0 -20
  422. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok.d.mts.map +0 -1
  423. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok.mjs +0 -10
  424. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok.mjs.map +0 -1
  425. package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.d.mts +0 -21
  426. package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.d.mts.map +0 -1
  427. package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.mjs +0 -35
  428. package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.mjs.map +0 -1
  429. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-or.d.mts +0 -22
  430. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-or.d.mts.map +0 -1
  431. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-or.mjs +0 -14
  432. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-or.mjs.map +0 -1
  433. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.d.mts +0 -20
  434. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.d.mts.map +0 -1
  435. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.mjs +0 -30
  436. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.mjs.map +0 -1
  437. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn.d.mts +0 -20
  438. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn.d.mts.map +0 -1
  439. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn.mjs +0 -21
  440. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn.mjs.map +0 -1
  441. package/dist/functional/ternary-result/impl/ternary-result-warn.d.mts +0 -19
  442. package/dist/functional/ternary-result/impl/ternary-result-warn.d.mts.map +0 -1
  443. package/dist/functional/ternary-result/impl/ternary-result-warn.mjs +0 -23
  444. package/dist/functional/ternary-result/impl/ternary-result-warn.mjs.map +0 -1
  445. package/dist/functional/ternary-result/impl/ternary-result-zip.d.mts +0 -34
  446. package/dist/functional/ternary-result/impl/ternary-result-zip.d.mts.map +0 -1
  447. package/dist/functional/ternary-result/impl/ternary-result-zip.mjs +0 -52
  448. package/dist/functional/ternary-result/impl/ternary-result-zip.mjs.map +0 -1
  449. package/dist/functional/ternary-result/impl/types.d.mts +0 -26
  450. package/dist/functional/ternary-result/impl/types.d.mts.map +0 -1
  451. package/dist/functional/ternary-result/impl/types.mjs +0 -2
  452. package/dist/functional/ternary-result/impl/types.mjs.map +0 -1
  453. package/dist/functional/ternary-result/impl/variant-name.d.mts +0 -4
  454. package/dist/functional/ternary-result/impl/variant-name.d.mts.map +0 -1
  455. package/dist/functional/ternary-result/impl/variant-name.mjs +0 -13
  456. package/dist/functional/ternary-result/impl/variant-name.mjs.map +0 -1
  457. package/dist/functional/ternary-result/index.d.mts +0 -2
  458. package/dist/functional/ternary-result/index.d.mts.map +0 -1
  459. package/dist/functional/ternary-result/index.mjs +0 -2
  460. package/dist/functional/ternary-result/index.mjs.map +0 -1
  461. package/dist/functional/ternary-result/ternary-result.d.mts +0 -40
  462. package/dist/functional/ternary-result/ternary-result.d.mts.map +0 -1
  463. package/dist/functional/ternary-result/ternary-result.mjs +0 -2
  464. package/dist/functional/ternary-result/ternary-result.mjs.map +0 -1
  465. package/src/functional/async-result/async-result.mts +0 -17
  466. package/src/functional/async-result/impl/async-result-flat-map.mts +0 -99
  467. package/src/functional/async-result/impl/async-result-from-promise.mts +0 -69
  468. package/src/functional/async-result/impl/async-result-from-throwable.mts +0 -78
  469. package/src/functional/async-result/impl/async-result-map-err.mts +0 -84
  470. package/src/functional/async-result/impl/async-result-map.mts +0 -94
  471. package/src/functional/async-result/impl/async-result-unwrap-or.mts +0 -42
  472. package/src/functional/async-result/impl/index.mts +0 -7
  473. package/src/functional/async-result/impl/types.mts +0 -51
  474. package/src/functional/async-result/index.mts +0 -1
  475. package/src/functional/async-result.test.mts +0 -291
  476. package/src/functional/match.mts +0 -193
  477. package/src/functional/match.test.mts +0 -180
  478. package/src/functional/optional/impl/index.mts +0 -18
  479. package/src/functional/optional/impl/optional-expect-to-be.mts +0 -75
  480. package/src/functional/optional/impl/optional-filter.mts +0 -78
  481. package/src/functional/optional/impl/optional-flat-map.mts +0 -75
  482. package/src/functional/optional/impl/optional-from-nullable.mts +0 -31
  483. package/src/functional/optional/impl/optional-is-none.mts +0 -26
  484. package/src/functional/optional/impl/optional-is-optional.mts +0 -30
  485. package/src/functional/optional/impl/optional-is-some.mts +0 -27
  486. package/src/functional/optional/impl/optional-map.mts +0 -90
  487. package/src/functional/optional/impl/optional-match.mts +0 -108
  488. package/src/functional/optional/impl/optional-none.mts +0 -20
  489. package/src/functional/optional/impl/optional-or-else.mts +0 -83
  490. package/src/functional/optional/impl/optional-some.mts +0 -27
  491. package/src/functional/optional/impl/optional-to-nullable.mts +0 -34
  492. package/src/functional/optional/impl/optional-unwrap-or.mts +0 -70
  493. package/src/functional/optional/impl/optional-unwrap-throw.mts +0 -41
  494. package/src/functional/optional/impl/optional-unwrap.mts +0 -45
  495. package/src/functional/optional/impl/optional-zip.mts +0 -44
  496. package/src/functional/optional/impl/tag.mts +0 -8
  497. package/src/functional/optional/impl/types.mts +0 -31
  498. package/src/functional/optional/index.mts +0 -1
  499. package/src/functional/optional/optional.mts +0 -19
  500. package/src/functional/optional.test.mts +0 -883
  501. package/src/functional/pipe.mts +0 -180
  502. package/src/functional/pipe.test.mts +0 -155
  503. package/src/functional/result/impl/index.mts +0 -27
  504. package/src/functional/result/impl/result-err.mts +0 -33
  505. package/src/functional/result/impl/result-expect-to-be.mts +0 -73
  506. package/src/functional/result/impl/result-flat-map.mts +0 -88
  507. package/src/functional/result/impl/result-fold.mts +0 -102
  508. package/src/functional/result/impl/result-from-optional.mts +0 -80
  509. package/src/functional/result/impl/result-from-promise.mts +0 -51
  510. package/src/functional/result/impl/result-from-throwable.mts +0 -48
  511. package/src/functional/result/impl/result-is-err.mts +0 -26
  512. package/src/functional/result/impl/result-is-ok.mts +0 -26
  513. package/src/functional/result/impl/result-is-result.mts +0 -28
  514. package/src/functional/result/impl/result-map-err.mts +0 -96
  515. package/src/functional/result/impl/result-map.mts +0 -96
  516. package/src/functional/result/impl/result-match.mts +0 -108
  517. package/src/functional/result/impl/result-ok.mts +0 -33
  518. package/src/functional/result/impl/result-or-else.mts +0 -73
  519. package/src/functional/result/impl/result-safe-try.mts +0 -110
  520. package/src/functional/result/impl/result-safe-unwrap.mts +0 -50
  521. package/src/functional/result/impl/result-swap.mts +0 -31
  522. package/src/functional/result/impl/result-to-optional.mts +0 -37
  523. package/src/functional/result/impl/result-unwrap-err-or.mts +0 -66
  524. package/src/functional/result/impl/result-unwrap-err-throw.mts +0 -56
  525. package/src/functional/result/impl/result-unwrap-err.mts +0 -38
  526. package/src/functional/result/impl/result-unwrap-ok-or.mts +0 -66
  527. package/src/functional/result/impl/result-unwrap-ok.mts +0 -39
  528. package/src/functional/result/impl/result-unwrap-throw.mts +0 -46
  529. package/src/functional/result/impl/result-zip.mts +0 -42
  530. package/src/functional/result/impl/tag.mts +0 -8
  531. package/src/functional/result/impl/types.mts +0 -38
  532. package/src/functional/result/index.mts +0 -1
  533. package/src/functional/result/result.mts +0 -19
  534. package/src/functional/result.test.mts +0 -1349
  535. package/src/functional/ternary-result/impl/index.mts +0 -28
  536. package/src/functional/ternary-result/impl/tag.mts +0 -17
  537. package/src/functional/ternary-result/impl/ternary-result-err.mts +0 -21
  538. package/src/functional/ternary-result/impl/ternary-result-expect-to-be.mts +0 -65
  539. package/src/functional/ternary-result/impl/ternary-result-flat-map.mts +0 -112
  540. package/src/functional/ternary-result/impl/ternary-result-fold.mts +0 -102
  541. package/src/functional/ternary-result/impl/ternary-result-from-promise.mts +0 -30
  542. package/src/functional/ternary-result/impl/ternary-result-from-throwable.mts +0 -36
  543. package/src/functional/ternary-result/impl/ternary-result-is-err.mts +0 -24
  544. package/src/functional/ternary-result/impl/ternary-result-is-ok.mts +0 -26
  545. package/src/functional/ternary-result/impl/ternary-result-is-ternary-result.mts +0 -32
  546. package/src/functional/ternary-result/impl/ternary-result-is-warn.mts +0 -25
  547. package/src/functional/ternary-result/impl/ternary-result-map-err.mts +0 -74
  548. package/src/functional/ternary-result/impl/ternary-result-map-warn.mts +0 -79
  549. package/src/functional/ternary-result/impl/ternary-result-map.mts +0 -95
  550. package/src/functional/ternary-result/impl/ternary-result-ok.mts +0 -22
  551. package/src/functional/ternary-result/impl/ternary-result-or-else.mts +0 -72
  552. package/src/functional/ternary-result/impl/ternary-result-to-optional.mts +0 -31
  553. package/src/functional/ternary-result/impl/ternary-result-unwrap-err-or.mts +0 -54
  554. package/src/functional/ternary-result/impl/ternary-result-unwrap-err-throw.mts +0 -42
  555. package/src/functional/ternary-result/impl/ternary-result-unwrap-err.mts +0 -25
  556. package/src/functional/ternary-result/impl/ternary-result-unwrap-ok-or.mts +0 -51
  557. package/src/functional/ternary-result/impl/ternary-result-unwrap-ok.mts +0 -39
  558. package/src/functional/ternary-result/impl/ternary-result-unwrap-throw.mts +0 -48
  559. package/src/functional/ternary-result/impl/ternary-result-unwrap-warn-or.mts +0 -48
  560. package/src/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.mts +0 -40
  561. package/src/functional/ternary-result/impl/ternary-result-unwrap-warn.mts +0 -25
  562. package/src/functional/ternary-result/impl/ternary-result-warn.mts +0 -28
  563. package/src/functional/ternary-result/impl/ternary-result-zip.mts +0 -61
  564. package/src/functional/ternary-result/impl/types.mts +0 -46
  565. package/src/functional/ternary-result/impl/variant-name.mts +0 -18
  566. package/src/functional/ternary-result/index.mts +0 -1
  567. package/src/functional/ternary-result/ternary-result.mts +0 -50
  568. package/src/functional/ternary-result.test.mts +0 -310
  569. package/src/guard/has-key.test.mts +0 -111
  570. package/src/guard/is-non-null-object.test.mts +0 -109
  571. package/src/guard/is-record.test.mts +0 -195
  572. package/src/guard/key-is-in.test.mts +0 -21
  573. package/src/others/unknown-to-string.test.mts +0 -295
@@ -1,42 +0,0 @@
1
- import { Result } from '../../result/index.mjs';
2
- import { type AsyncResult } from '../async-result.mjs';
3
-
4
- /**
5
- * Unwraps an `AsyncResult`, resolving to the success value or a default value
6
- * if it resolves to `Err`.
7
- *
8
- * @example
9
- *
10
- * ```ts
11
- * const okValue = AsyncResult.fromPromise(
12
- * Promise.resolve(10),
13
- * () => 'failed',
14
- * );
15
- *
16
- * const errValue = AsyncResult.fromPromise(
17
- * Promise.reject(new Error('boom')),
18
- * () => 'failed',
19
- * );
20
- *
21
- * assert.isTrue((await AsyncResult.unwrapOr(okValue, 0)) === 10);
22
- *
23
- * assert.isTrue((await AsyncResult.unwrapOr(errValue, 0)) === 0);
24
- * ```
25
- *
26
- * @template S The type of the success value.
27
- * @template E The type of the error value.
28
- * @template D The type of the default value.
29
- * @param asyncResult The `AsyncResult` to unwrap.
30
- * @param defaultValue The value to resolve to if `asyncResult` resolves to
31
- * `Err`.
32
- * @returns A Promise of the success value if `Ok`, otherwise of
33
- * `defaultValue`.
34
- */
35
- export const unwrapOr = async <S, E, D>(
36
- asyncResult: AsyncResult<S, E>,
37
- defaultValue: D,
38
- ): Promise<D | S> => {
39
- const result = await asyncResult;
40
-
41
- return Result.isOk(result) ? result.value : defaultValue;
42
- };
@@ -1,7 +0,0 @@
1
- export * from './async-result-flat-map.mjs';
2
- export * from './async-result-from-promise.mjs';
3
- export * from './async-result-from-throwable.mjs';
4
- export * from './async-result-map-err.mjs';
5
- export * from './async-result-map.mjs';
6
- export * from './async-result-unwrap-or.mjs';
7
- export * from './types.mjs';
@@ -1,51 +0,0 @@
1
- import { type Err, type Ok } from '../../../types.mjs';
2
- import { type UnknownResult } from '../../result/index.mjs';
3
- import { type AsyncResult } from '../async-result.mjs';
4
-
5
- /**
6
- * Base type for any `AsyncResult`, used for generic constraints. Represents
7
- * an `AsyncResult` with unknown success and error types.
8
- */
9
- export type UnknownAsyncResult = AsyncResult<unknown, unknown>;
10
-
11
- /**
12
- * Extracts the success value type `S` from a `Result.Ok<S>`, or from an
13
- * `AsyncResult` resolving to one. Distributes over unions, so an
14
- * `Ok<S> | Err<E>` union resolves to `S`.
15
- *
16
- * @template R The `Result` or `AsyncResult` type to unwrap.
17
- */
18
- export type UnwrapOk<R extends UnknownAsyncResult | UnknownResult> =
19
- UnwrapOkImpl<SyncResultOf<R>>;
20
-
21
- /**
22
- * Extracts the error value type `E` from a `Result.Err<E>`, or from an
23
- * `AsyncResult` resolving to one. Distributes over unions, so an
24
- * `Ok<S> | Err<E>` union resolves to `E`.
25
- *
26
- * @template R The `Result` or `AsyncResult` type to unwrap.
27
- */
28
- export type UnwrapErr<R extends UnknownAsyncResult | UnknownResult> =
29
- UnwrapErrImpl<SyncResultOf<R>>;
30
-
31
- /**
32
- * @template R The `Result` or `AsyncResult` type.
33
- * @internal
34
- * Resolves an `AsyncResult` to its `Result`, leaving a plain `Result`
35
- * unchanged. Distributive.
36
- */
37
- type SyncResultOf<R> = R extends Promise<infer P> ? P : R;
38
-
39
- /**
40
- * @template R The `Result` type to unwrap.
41
- * @internal
42
- * Distributive extraction of the `Ok` value type.
43
- */
44
- type UnwrapOkImpl<R> = R extends Ok<infer S> ? S : never;
45
-
46
- /**
47
- * @template R The `Result` type to unwrap.
48
- * @internal
49
- * Distributive extraction of the `Err` value type.
50
- */
51
- type UnwrapErrImpl<R> = R extends Err<infer E> ? E : never;
@@ -1 +0,0 @@
1
- export * from './async-result.mjs';
@@ -1,291 +0,0 @@
1
- import { isError } from '@sindresorhus/is';
2
- import { AsyncResult as AsyncResultFromEntryPoint } from '../entry-point.mjs';
3
- import { expectType } from '../expect-type.mjs';
4
- import { unknownToString } from '../others/index.mjs';
5
- import { AsyncResult } from './async-result/index.mjs';
6
- import { Result } from './result/index.mjs';
7
-
8
- // Fixtures are created through functions so that the success/error types stay
9
- // unions instead of being narrowed to literal types by const inference.
10
- const okFixture = (value: number): AsyncResult<number, string> =>
11
- Promise.resolve(Result.ok(value));
12
-
13
- const errFixture = (message: string): AsyncResult<number, string> =>
14
- Promise.resolve(Result.err(message));
15
-
16
- describe('AsyncResult test', () => {
17
- describe('fromPromise', () => {
18
- test('resolved promise becomes Ok', async () => {
19
- const result = await AsyncResult.fromPromise(
20
- Promise.resolve(42),
21
- (error) => `mapped: ${unknownToString(error)}`,
22
- );
23
-
24
- assert.isTrue(Result.isOk(result));
25
-
26
- assert.deepStrictEqual(result, Result.ok(42));
27
- });
28
-
29
- test('rejected promise becomes Err with mapError applied', async () => {
30
- const result = await AsyncResult.fromPromise(
31
- Promise.reject(new Error('boom')),
32
- (error) => (isError(error) ? error.message : 'unknown'),
33
- );
34
-
35
- assert.isTrue(Result.isErr(result));
36
-
37
- assert.deepStrictEqual(result, Result.err('boom'));
38
- });
39
-
40
- test('resolved promise becomes Ok when mapError is omitted', async () => {
41
- const result = await AsyncResult.fromPromise(Promise.resolve(42));
42
-
43
- assert.deepStrictEqual(result, Result.ok(42));
44
-
45
- expectType<typeof result, Result<number, unknown>>('=');
46
- });
47
-
48
- test('rejection reason is carried as-is when mapError is omitted', async () => {
49
- const error = new Error('boom');
50
-
51
- const result = await AsyncResult.fromPromise(
52
- Promise.reject(error).then(() => 42),
53
- );
54
-
55
- assert.isTrue(Result.isErr(result));
56
-
57
- assert.deepStrictEqual(result, Result.err(error));
58
- });
59
- });
60
-
61
- describe('fromThrowable', () => {
62
- test('resolved async function becomes Ok', async () => {
63
- const result = await AsyncResult.fromThrowable(
64
- () => Promise.resolve('data'),
65
- (error) => `mapped: ${unknownToString(error)}`,
66
- );
67
-
68
- assert.isTrue(Result.isOk(result));
69
-
70
- assert.deepStrictEqual(result, Result.ok('data'));
71
- });
72
-
73
- test('synchronous throw becomes Err with mapError applied', async () => {
74
- const result = await AsyncResult.fromThrowable(
75
- (): Promise<number> => {
76
- throw new Error('sync failure');
77
- },
78
- (error) => (isError(error) ? error.message : 'unknown'),
79
- );
80
-
81
- assert.isTrue(Result.isErr(result));
82
-
83
- assert.deepStrictEqual(result, Result.err('sync failure'));
84
- });
85
-
86
- test('async rejection becomes Err with mapError applied', async () => {
87
- const result = await AsyncResult.fromThrowable(
88
- () => Promise.reject(new Error('async failure')),
89
- (error) => (isError(error) ? error.message : 'unknown'),
90
- );
91
-
92
- assert.isTrue(Result.isErr(result));
93
-
94
- assert.deepStrictEqual(result, Result.err('async failure'));
95
- });
96
-
97
- test('synchronous throw is carried as-is when mapError is omitted', async () => {
98
- const error = new Error('sync failure');
99
-
100
- const result = await AsyncResult.fromThrowable((): Promise<number> => {
101
- throw error;
102
- });
103
-
104
- assert.deepStrictEqual(result, Result.err(error));
105
-
106
- expectType<typeof result, Result<number, unknown>>('=');
107
- });
108
-
109
- test('async rejection is carried as-is when mapError is omitted', async () => {
110
- const error = new Error('async failure');
111
-
112
- const result = await AsyncResult.fromThrowable(() =>
113
- Promise.reject(error).then(() => 42),
114
- );
115
-
116
- assert.deepStrictEqual(result, Result.err(error));
117
- });
118
- });
119
-
120
- describe('map', () => {
121
- test('maps Ok value with a synchronous function', async () => {
122
- const result = await AsyncResult.map(okFixture(5), (value) => value * 2);
123
-
124
- assert.deepStrictEqual(result, Result.ok(10));
125
- });
126
-
127
- test('maps Ok value with an asynchronous function', async () => {
128
- const result = await AsyncResult.map(okFixture(5), (value) =>
129
- Promise.resolve(value * 3),
130
- );
131
-
132
- assert.deepStrictEqual(result, Result.ok(15));
133
- });
134
-
135
- test('passes Err through unchanged', async () => {
136
- let mut_called = false;
137
-
138
- const result = await AsyncResult.map(errFixture('failure'), (value) => {
139
- mut_called = true;
140
-
141
- return value * 2;
142
- });
143
-
144
- assert.deepStrictEqual(result, Result.err('failure'));
145
-
146
- assert.isFalse(mut_called);
147
- });
148
-
149
- test('curried version maps Ok value', async () => {
150
- const double = AsyncResult.map((value: number) => value * 2);
151
-
152
- const result = await double(okFixture(21));
153
-
154
- assert.deepStrictEqual(result, Result.ok(42));
155
- });
156
-
157
- test('curried version passes Err through unchanged', async () => {
158
- const double = AsyncResult.map((value: number) => value * 2);
159
-
160
- const result = await double(errFixture('failure'));
161
-
162
- assert.deepStrictEqual(result, Result.err('failure'));
163
- });
164
- });
165
-
166
- describe('mapErr', () => {
167
- test('maps Err value with a synchronous function', async () => {
168
- const result = await AsyncResult.mapErr(errFixture('failure'), (error) =>
169
- error.toUpperCase(),
170
- );
171
-
172
- assert.deepStrictEqual(result, Result.err('FAILURE'));
173
- });
174
-
175
- test('maps Err value with an asynchronous function', async () => {
176
- const result = await AsyncResult.mapErr(
177
- errFixture('failure'),
178
- (message) => Promise.resolve(message.length),
179
- );
180
-
181
- assert.deepStrictEqual(result, Result.err(7));
182
- });
183
-
184
- test('passes Ok through unchanged', async () => {
185
- let mut_called = false;
186
-
187
- const result = await AsyncResult.mapErr(okFixture(1), (error) => {
188
- mut_called = true;
189
-
190
- return error.toUpperCase();
191
- });
192
-
193
- assert.deepStrictEqual(result, Result.ok(1));
194
-
195
- assert.isFalse(mut_called);
196
- });
197
-
198
- test('curried version maps Err value', async () => {
199
- const upper = AsyncResult.mapErr((error: string) => error.toUpperCase());
200
-
201
- const result = await upper(errFixture('failure'));
202
-
203
- assert.deepStrictEqual(result, Result.err('FAILURE'));
204
- });
205
- });
206
-
207
- describe('flatMap', () => {
208
- test('chains with a function returning a Result', async () => {
209
- const result = await AsyncResult.flatMap(okFixture(4), (value) =>
210
- value > 0 ? Result.ok(value * 10) : Result.err('non-positive'),
211
- );
212
-
213
- assert.deepStrictEqual(result, Result.ok(40));
214
- });
215
-
216
- test('chains with a function returning an AsyncResult', async () => {
217
- const result = await AsyncResult.flatMap(okFixture(4), (value) =>
218
- AsyncResult.fromPromise(Promise.resolve(value + 1), () => 'failed'),
219
- );
220
-
221
- assert.deepStrictEqual(result, Result.ok(5));
222
- });
223
-
224
- test('chains into Err returned by the function', async () => {
225
- const result = await AsyncResult.flatMap(
226
- okFixture(-1),
227
- (value): Result<number, string> =>
228
- value > 0 ? Result.ok(value * 10) : Result.err('non-positive'),
229
- );
230
-
231
- assert.deepStrictEqual(result, Result.err('non-positive'));
232
- });
233
-
234
- test('short-circuits on Err without calling the function', async () => {
235
- let mut_called = false;
236
-
237
- const result = await AsyncResult.flatMap(
238
- errFixture('failure'),
239
- (value) => {
240
- mut_called = true;
241
-
242
- return Result.ok(value * 2);
243
- },
244
- );
245
-
246
- assert.deepStrictEqual(result, Result.err('failure'));
247
-
248
- assert.isFalse(mut_called);
249
- });
250
-
251
- test('curried version chains with a function returning a Result', async () => {
252
- const validate = AsyncResult.flatMap(
253
- (value: number): Result<number, string> =>
254
- value > 0 ? Result.ok(value) : Result.err('non-positive'),
255
- );
256
-
257
- const passed = await validate(okFixture(7));
258
-
259
- const failed = await validate(okFixture(-7));
260
-
261
- assert.deepStrictEqual(passed, Result.ok(7));
262
-
263
- assert.deepStrictEqual(failed, Result.err('non-positive'));
264
- });
265
- });
266
-
267
- describe('unwrapOr', () => {
268
- test('returns the success value for Ok', async () => {
269
- const value = await AsyncResult.unwrapOr(okFixture(10), 0);
270
-
271
- expect(value).toBe(10);
272
- });
273
-
274
- test('returns the default value for Err', async () => {
275
- const value = await AsyncResult.unwrapOr(errFixture('failure'), 0);
276
-
277
- expect(value).toBe(0);
278
- });
279
- });
280
-
281
- describe('entry point', () => {
282
- test('AsyncResult is exported from the package entry point', async () => {
283
- const result = await AsyncResultFromEntryPoint.fromPromise(
284
- Promise.resolve(1),
285
- () => 'failed',
286
- );
287
-
288
- assert.deepStrictEqual(result, Result.ok(1));
289
- });
290
- });
291
- });
@@ -1,193 +0,0 @@
1
- import {
2
- type ReadonlyRecord,
3
- type RelaxedExclude,
4
- type TypeEq,
5
- type UnknownRecord,
6
- type ValueOf,
7
- } from 'ts-type-forge';
8
- import { expectType } from '../expect-type.mjs';
9
- import { keyIsIn } from '../guard/index.mjs';
10
-
11
- /**
12
- * Type-safe pattern matching function for string-based discriminated unions.
13
- *
14
- * Provides compile-time guarantees for exhaustive case handling when working
15
- * with literal string unions. Automatically enforces completeness checking when
16
- * all cases are covered, and requires a default value when cases are
17
- * incomplete.
18
- *
19
- * ## Key Features:
20
- *
21
- * - **Exhaustive Matching**: When all cases of a literal union are handled, no
22
- * default value is needed
23
- * - **Partial Matching**: When cases are incomplete or working with general
24
- * string types, a default value is required
25
- * - **Type Safety**: Prevents extra cases and ensures only valid keys are used
26
- * - **Strict Property Checking**: Rejects objects with unexpected properties
27
- *
28
- * @example
29
- *
30
- * ```ts
31
- * type Status = 'draft' | 'review' | 'published';
32
- *
33
- * const status: Status = 'draft';
34
- *
35
- * const message = match<
36
- * Status,
37
- * Readonly<{ draft: string; review: string; published: string }>
38
- * >(status, {
39
- * draft: 'Work in progress',
40
- * review: 'Awaiting feedback',
41
- * published: 'Complete',
42
- * });
43
- *
44
- * assert.isTrue(message === 'Work in progress');
45
- * ```
46
- *
47
- * @param target - The value to match against
48
- * @param cases - Object mapping possible values to their corresponding results
49
- * @param defaultValue - Fallback value (required when not all cases are
50
- * covered)
51
- * @returns The matched result or default value
52
- */
53
- export function match<
54
- const Case extends string,
55
- const R extends ReadonlyRecord<Case, unknown>,
56
- >(target: Case, cases: StrictPropertyCheck<R, Case>): R[Case];
57
-
58
- export function match<
59
- const Case extends string,
60
- const R extends UnknownRecord,
61
- const D,
62
- >(
63
- target: Case,
64
- cases: StrictPropertyCheck<R, Case>,
65
- defaultValue: IsLiteralUnionFullyCovered<Case, R> extends true ? never : D,
66
- ): ValueOf<R> | D;
67
-
68
- export function match<
69
- const Case extends string,
70
- const R extends UnknownRecord,
71
- const D,
72
- >(
73
- ...args:
74
- | readonly [target: Case, cases: R]
75
- | readonly [target: Case, cases: R, defaultValue: D]
76
- ): ValueOf<R> | D {
77
- switch (args.length) {
78
- case 2: {
79
- const [target, cases] = args;
80
-
81
- return cases[target];
82
- }
83
-
84
- case 3: {
85
- const [target, cases, defaultValue] = args;
86
-
87
- return keyIsIn(target, cases) ? cases[target] : defaultValue;
88
- }
89
- }
90
- }
91
-
92
- /**
93
- * @template T The object type to check.
94
- * @template ExpectedKeys The union of string literal types representing the
95
- * allowed keys.
96
- * @internal
97
- * Helper type to ensure that an object `T` only contains keys specified in `ExpectedKeys`.
98
- * If `T` has any keys not in `ExpectedKeys`, this type resolves to `never`.
99
- */
100
- type StrictPropertyCheck<T, ExpectedKeys extends PropertyKey> =
101
- RelaxedExclude<keyof T, ExpectedKeys> extends never ? T : never;
102
-
103
- /**
104
- * @template Case A union of string literal types representing the possible
105
- * cases.
106
- * @template R A record type.
107
- * @internal
108
- * Helper type to check if all cases in `Case` union are fully covered by keys in `R`.
109
- * This checks bidirectional coverage: all Case members are in R, and no extra keys.
110
- */
111
- type AllCasesCovered<Case extends PropertyKey, R> =
112
- TypeEq<Case, keyof R> extends true ? true : false;
113
-
114
- expectType<AllCasesCovered<'a' | 'b', Readonly<{ a: 1; b: 2 }>>, true>('=');
115
-
116
- expectType<AllCasesCovered<'a' | 'b' | 'c', Readonly<{ a: 1; b: 2 }>>, false>(
117
- '=',
118
- );
119
-
120
- expectType<AllCasesCovered<'a' | 'b', Readonly<{ a: 1; b: 2; c: 3 }>>, false>(
121
- '=',
122
- );
123
-
124
- expectType<AllCasesCovered<string, ReadonlyRecord<string, string>>, true>('=');
125
-
126
- /**
127
- * @template Case A union of string literal types.
128
- * @template R A record type.
129
- * @internal
130
- * Helper type to check if Case is a literal union type and all cases are covered.
131
- */
132
- type IsLiteralUnionFullyCovered<
133
- Case extends PropertyKey,
134
- R extends UnknownRecord,
135
- > =
136
- TypeEq<IsLiteralType<Case>, true> extends true
137
- ? AllCasesCovered<Case, R>
138
- : false;
139
-
140
- expectType<
141
- IsLiteralUnionFullyCovered<'a' | 'b', Readonly<{ a: 1; b: 2 }>>,
142
- true
143
- >('=');
144
-
145
- expectType<
146
- IsLiteralUnionFullyCovered<'a' | 'b' | 'c', Readonly<{ a: 1; b: 2 }>>,
147
- false
148
- >('=');
149
-
150
- expectType<
151
- IsLiteralUnionFullyCovered<'a' | 'b', Readonly<{ a: 1; b: 2; c: 3 }>>,
152
- false
153
- >('=');
154
-
155
- expectType<
156
- IsLiteralUnionFullyCovered<string, ReadonlyRecord<string, string>>,
157
- false
158
- >('=');
159
-
160
- expectType<
161
- // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents
162
- IsLiteralUnionFullyCovered<'a' | 'b' | string, Readonly<{ a: 1; b: 2 }>>,
163
- false
164
- >('=');
165
-
166
- /**
167
- * @template T The PropertyKey type to check.
168
- * @returns `true` if `T` is a literal type, `false` otherwise.
169
- * @internal
170
- * Helper type to determine if a given PropertyKey `T` is a literal type (e.g., 'a', 1)
171
- * or a general type (e.g., string, number).
172
- */
173
- type IsLiteralType<T extends PropertyKey> = string extends T
174
- ? false
175
- : number extends T
176
- ? false
177
- : symbol extends T
178
- ? false
179
- : true;
180
-
181
- expectType<IsLiteralType<'a' | 'b'>, true>('=');
182
-
183
- expectType<IsLiteralType<'a'>, true>('=');
184
-
185
- expectType<IsLiteralType<string>, false>('=');
186
-
187
- expectType<IsLiteralType<number>, false>('=');
188
-
189
- expectType<IsLiteralType<1>, true>('=');
190
-
191
- expectType<IsLiteralType<number | 'aa'>, false>('=');
192
-
193
- expectType<IsLiteralType<'aa' | 32>, true>('=');