ts-data-forge 14.6.4 → 14.7.0

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 (558) hide show
  1. package/README.md +2 -1
  2. package/dist/expect-type.d.mts +2 -70
  3. package/dist/expect-type.d.mts.map +1 -1
  4. package/dist/expect-type.mjs +1 -68
  5. package/dist/expect-type.mjs.map +1 -1
  6. package/dist/functional/index.d.mts +11 -6
  7. package/dist/functional/index.d.mts.map +1 -1
  8. package/dist/functional/index.mjs +10 -6
  9. package/dist/functional/index.mjs.map +1 -1
  10. package/dist/guard/has-key.d.mts +2 -51
  11. package/dist/guard/has-key.d.mts.map +1 -1
  12. package/dist/guard/has-key.mjs +1 -41
  13. package/dist/guard/has-key.mjs.map +1 -1
  14. package/dist/guard/is-non-null-object.d.mts +2 -34
  15. package/dist/guard/is-non-null-object.d.mts.map +1 -1
  16. package/dist/guard/is-non-null-object.mjs +1 -34
  17. package/dist/guard/is-non-null-object.mjs.map +1 -1
  18. package/dist/guard/is-record.d.mts +2 -89
  19. package/dist/guard/is-record.d.mts.map +1 -1
  20. package/dist/guard/is-record.mjs +1 -88
  21. package/dist/guard/is-record.mjs.map +1 -1
  22. package/dist/guard/key-is-in.d.mts +2 -42
  23. package/dist/guard/key-is-in.d.mts.map +1 -1
  24. package/dist/guard/key-is-in.mjs +1 -40
  25. package/dist/guard/key-is-in.mjs.map +1 -1
  26. package/dist/number/num.d.mts +9 -1
  27. package/dist/number/num.d.mts.map +1 -1
  28. package/dist/number/num.mjs +24 -16
  29. package/dist/number/num.mjs.map +1 -1
  30. package/dist/others/index.d.mts +1 -0
  31. package/dist/others/index.d.mts.map +1 -1
  32. package/dist/others/index.mjs +1 -0
  33. package/dist/others/index.mjs.map +1 -1
  34. package/dist/others/panic-error.d.mts +9 -0
  35. package/dist/others/panic-error.d.mts.map +1 -0
  36. package/dist/others/panic-error.mjs +9 -0
  37. package/dist/others/panic-error.mjs.map +1 -0
  38. package/dist/others/unknown-to-string.d.mts +2 -37
  39. package/dist/others/unknown-to-string.d.mts.map +1 -1
  40. package/dist/others/unknown-to-string.mjs +1 -92
  41. package/dist/others/unknown-to-string.mjs.map +1 -1
  42. package/dist/types.d.mts +1 -41
  43. package/dist/types.d.mts.map +1 -1
  44. package/dist/types.mjs +0 -1
  45. package/dist/types.mjs.map +1 -1
  46. package/package.json +5 -5
  47. package/src/expect-type.mts +2 -78
  48. package/src/functional/index.mts +31 -6
  49. package/src/guard/has-key.mts +2 -72
  50. package/src/guard/is-non-null-object.mts +2 -36
  51. package/src/guard/is-record.mts +2 -95
  52. package/src/guard/key-is-in.mts +2 -49
  53. package/src/number/num.mts +36 -28
  54. package/src/others/index.mts +1 -0
  55. package/src/others/panic-error.mts +8 -0
  56. package/src/others/unknown-to-string.mts +2 -111
  57. package/src/types.mts +4 -54
  58. package/dist/functional/async-result/async-result.d.mts +0 -16
  59. package/dist/functional/async-result/async-result.d.mts.map +0 -1
  60. package/dist/functional/async-result/async-result.mjs +0 -2
  61. package/dist/functional/async-result/async-result.mjs.map +0 -1
  62. package/dist/functional/async-result/impl/async-result-flat-map.d.mts +0 -39
  63. package/dist/functional/async-result/impl/async-result-flat-map.d.mts.map +0 -1
  64. package/dist/functional/async-result/impl/async-result-flat-map.mjs +0 -23
  65. package/dist/functional/async-result/impl/async-result-flat-map.mjs.map +0 -1
  66. package/dist/functional/async-result/impl/async-result-from-promise.d.mts +0 -47
  67. package/dist/functional/async-result/impl/async-result-from-promise.d.mts.map +0 -1
  68. package/dist/functional/async-result/impl/async-result-from-promise.mjs +0 -10
  69. package/dist/functional/async-result/impl/async-result-from-promise.mjs.map +0 -1
  70. package/dist/functional/async-result/impl/async-result-from-throwable.d.mts +0 -53
  71. package/dist/functional/async-result/impl/async-result-from-throwable.d.mts.map +0 -1
  72. package/dist/functional/async-result/impl/async-result-from-throwable.mjs +0 -15
  73. package/dist/functional/async-result/impl/async-result-from-throwable.mjs.map +0 -1
  74. package/dist/functional/async-result/impl/async-result-map-err.d.mts +0 -35
  75. package/dist/functional/async-result/impl/async-result-map-err.d.mts.map +0 -1
  76. package/dist/functional/async-result/impl/async-result-map-err.mjs +0 -20
  77. package/dist/functional/async-result/impl/async-result-map-err.mjs.map +0 -1
  78. package/dist/functional/async-result/impl/async-result-map.d.mts +0 -45
  79. package/dist/functional/async-result/impl/async-result-map.d.mts.map +0 -1
  80. package/dist/functional/async-result/impl/async-result-map.mjs +0 -20
  81. package/dist/functional/async-result/impl/async-result-map.mjs.map +0 -1
  82. package/dist/functional/async-result/impl/async-result-unwrap-or.d.mts +0 -34
  83. package/dist/functional/async-result/impl/async-result-unwrap-or.d.mts.map +0 -1
  84. package/dist/functional/async-result/impl/async-result-unwrap-or.mjs +0 -37
  85. package/dist/functional/async-result/impl/async-result-unwrap-or.mjs.map +0 -1
  86. package/dist/functional/async-result/impl/index.d.mts +0 -8
  87. package/dist/functional/async-result/impl/index.d.mts.map +0 -1
  88. package/dist/functional/async-result/impl/index.mjs +0 -8
  89. package/dist/functional/async-result/impl/index.mjs.map +0 -1
  90. package/dist/functional/async-result/impl/types.d.mts +0 -45
  91. package/dist/functional/async-result/impl/types.d.mts.map +0 -1
  92. package/dist/functional/async-result/impl/types.mjs +0 -2
  93. package/dist/functional/async-result/impl/types.mjs.map +0 -1
  94. package/dist/functional/async-result/index.d.mts +0 -2
  95. package/dist/functional/async-result/index.d.mts.map +0 -1
  96. package/dist/functional/async-result/index.mjs +0 -2
  97. package/dist/functional/async-result/index.mjs.map +0 -1
  98. package/dist/functional/match.d.mts +0 -80
  99. package/dist/functional/match.d.mts.map +0 -1
  100. package/dist/functional/match.mjs +0 -31
  101. package/dist/functional/match.mjs.map +0 -1
  102. package/dist/functional/optional/impl/index.d.mts +0 -19
  103. package/dist/functional/optional/impl/index.d.mts.map +0 -1
  104. package/dist/functional/optional/impl/index.mjs +0 -19
  105. package/dist/functional/optional/impl/index.mjs.map +0 -1
  106. package/dist/functional/optional/impl/optional-expect-to-be.d.mts +0 -37
  107. package/dist/functional/optional/impl/optional-expect-to-be.d.mts.map +0 -1
  108. package/dist/functional/optional/impl/optional-expect-to-be.mjs +0 -22
  109. package/dist/functional/optional/impl/optional-expect-to-be.mjs.map +0 -1
  110. package/dist/functional/optional/impl/optional-filter.d.mts +0 -33
  111. package/dist/functional/optional/impl/optional-filter.d.mts.map +0 -1
  112. package/dist/functional/optional/impl/optional-filter.mjs +0 -25
  113. package/dist/functional/optional/impl/optional-filter.mjs.map +0 -1
  114. package/dist/functional/optional/impl/optional-flat-map.d.mts +0 -39
  115. package/dist/functional/optional/impl/optional-flat-map.d.mts.map +0 -1
  116. package/dist/functional/optional/impl/optional-flat-map.mjs +0 -18
  117. package/dist/functional/optional/impl/optional-flat-map.mjs.map +0 -1
  118. package/dist/functional/optional/impl/optional-from-nullable.d.mts +0 -27
  119. package/dist/functional/optional/impl/optional-from-nullable.d.mts.map +0 -1
  120. package/dist/functional/optional/impl/optional-from-nullable.mjs +0 -28
  121. package/dist/functional/optional/impl/optional-from-nullable.mjs.map +0 -1
  122. package/dist/functional/optional/impl/optional-is-none.d.mts +0 -23
  123. package/dist/functional/optional/impl/optional-is-none.d.mts.map +0 -1
  124. package/dist/functional/optional/impl/optional-is-none.mjs +0 -22
  125. package/dist/functional/optional/impl/optional-is-none.mjs.map +0 -1
  126. package/dist/functional/optional/impl/optional-is-optional.d.mts +0 -21
  127. package/dist/functional/optional/impl/optional-is-optional.d.mts.map +0 -1
  128. package/dist/functional/optional/impl/optional-is-optional.mjs +0 -26
  129. package/dist/functional/optional/impl/optional-is-optional.mjs.map +0 -1
  130. package/dist/functional/optional/impl/optional-is-some.d.mts +0 -24
  131. package/dist/functional/optional/impl/optional-is-some.d.mts.map +0 -1
  132. package/dist/functional/optional/impl/optional-is-some.mjs +0 -23
  133. package/dist/functional/optional/impl/optional-is-some.mjs.map +0 -1
  134. package/dist/functional/optional/impl/optional-map.d.mts +0 -34
  135. package/dist/functional/optional/impl/optional-map.d.mts.map +0 -1
  136. package/dist/functional/optional/impl/optional-map.mjs +0 -22
  137. package/dist/functional/optional/impl/optional-map.mjs.map +0 -1
  138. package/dist/functional/optional/impl/optional-match.d.mts +0 -48
  139. package/dist/functional/optional/impl/optional-match.d.mts.map +0 -1
  140. package/dist/functional/optional/impl/optional-match.mjs +0 -20
  141. package/dist/functional/optional/impl/optional-match.mjs.map +0 -1
  142. package/dist/functional/optional/impl/optional-none.d.mts +0 -19
  143. package/dist/functional/optional/impl/optional-none.d.mts.map +0 -1
  144. package/dist/functional/optional/impl/optional-none.mjs +0 -19
  145. package/dist/functional/optional/impl/optional-none.mjs.map +0 -1
  146. package/dist/functional/optional/impl/optional-or-else.d.mts +0 -43
  147. package/dist/functional/optional/impl/optional-or-else.d.mts.map +0 -1
  148. package/dist/functional/optional/impl/optional-or-else.mjs +0 -16
  149. package/dist/functional/optional/impl/optional-or-else.mjs.map +0 -1
  150. package/dist/functional/optional/impl/optional-some.d.mts +0 -22
  151. package/dist/functional/optional/impl/optional-some.d.mts.map +0 -1
  152. package/dist/functional/optional/impl/optional-some.mjs +0 -25
  153. package/dist/functional/optional/impl/optional-some.mjs.map +0 -1
  154. package/dist/functional/optional/impl/optional-to-nullable.d.mts +0 -30
  155. package/dist/functional/optional/impl/optional-to-nullable.d.mts.map +0 -1
  156. package/dist/functional/optional/impl/optional-to-nullable.mjs +0 -30
  157. package/dist/functional/optional/impl/optional-to-nullable.mjs.map +0 -1
  158. package/dist/functional/optional/impl/optional-unwrap-or.d.mts +0 -37
  159. package/dist/functional/optional/impl/optional-unwrap-or.d.mts.map +0 -1
  160. package/dist/functional/optional/impl/optional-unwrap-or.mjs +0 -16
  161. package/dist/functional/optional/impl/optional-unwrap-or.mjs.map +0 -1
  162. package/dist/functional/optional/impl/optional-unwrap-throw.d.mts +0 -31
  163. package/dist/functional/optional/impl/optional-unwrap-throw.d.mts.map +0 -1
  164. package/dist/functional/optional/impl/optional-unwrap-throw.mjs +0 -36
  165. package/dist/functional/optional/impl/optional-unwrap-throw.mjs.map +0 -1
  166. package/dist/functional/optional/impl/optional-unwrap.d.mts +0 -32
  167. package/dist/functional/optional/impl/optional-unwrap.d.mts.map +0 -1
  168. package/dist/functional/optional/impl/optional-unwrap.mjs +0 -8
  169. package/dist/functional/optional/impl/optional-unwrap.mjs.map +0 -1
  170. package/dist/functional/optional/impl/optional-zip.d.mts +0 -35
  171. package/dist/functional/optional/impl/optional-zip.d.mts.map +0 -1
  172. package/dist/functional/optional/impl/optional-zip.mjs +0 -39
  173. package/dist/functional/optional/impl/optional-zip.mjs.map +0 -1
  174. package/dist/functional/optional/impl/tag.d.mts +0 -6
  175. package/dist/functional/optional/impl/tag.d.mts.map +0 -1
  176. package/dist/functional/optional/impl/tag.mjs +0 -4
  177. package/dist/functional/optional/impl/tag.mjs.map +0 -1
  178. package/dist/functional/optional/impl/types.d.mts +0 -24
  179. package/dist/functional/optional/impl/types.d.mts.map +0 -1
  180. package/dist/functional/optional/impl/types.mjs +0 -2
  181. package/dist/functional/optional/impl/types.mjs.map +0 -1
  182. package/dist/functional/optional/index.d.mts +0 -2
  183. package/dist/functional/optional/index.d.mts.map +0 -1
  184. package/dist/functional/optional/index.mjs +0 -2
  185. package/dist/functional/optional/index.mjs.map +0 -1
  186. package/dist/functional/optional/optional.d.mts +0 -16
  187. package/dist/functional/optional/optional.d.mts.map +0 -1
  188. package/dist/functional/optional/optional.mjs +0 -2
  189. package/dist/functional/optional/optional.mjs.map +0 -1
  190. package/dist/functional/pipe.d.mts +0 -102
  191. package/dist/functional/pipe.d.mts.map +0 -1
  192. package/dist/functional/pipe.mjs +0 -45
  193. package/dist/functional/pipe.mjs.map +0 -1
  194. package/dist/functional/result/impl/index.d.mts +0 -28
  195. package/dist/functional/result/impl/index.d.mts.map +0 -1
  196. package/dist/functional/result/impl/index.mjs +0 -28
  197. package/dist/functional/result/impl/index.mjs.map +0 -1
  198. package/dist/functional/result/impl/result-err.d.mts +0 -28
  199. package/dist/functional/result/impl/result-err.d.mts.map +0 -1
  200. package/dist/functional/result/impl/result-err.mjs +0 -31
  201. package/dist/functional/result/impl/result-err.mjs.map +0 -1
  202. package/dist/functional/result/impl/result-expect-to-be.d.mts +0 -33
  203. package/dist/functional/result/impl/result-expect-to-be.d.mts.map +0 -1
  204. package/dist/functional/result/impl/result-expect-to-be.mjs +0 -23
  205. package/dist/functional/result/impl/result-expect-to-be.mjs.map +0 -1
  206. package/dist/functional/result/impl/result-flat-map.d.mts +0 -45
  207. package/dist/functional/result/impl/result-flat-map.d.mts.map +0 -1
  208. package/dist/functional/result/impl/result-flat-map.mjs +0 -21
  209. package/dist/functional/result/impl/result-flat-map.mjs.map +0 -1
  210. package/dist/functional/result/impl/result-fold.d.mts +0 -50
  211. package/dist/functional/result/impl/result-fold.d.mts.map +0 -1
  212. package/dist/functional/result/impl/result-fold.mjs +0 -23
  213. package/dist/functional/result/impl/result-fold.mjs.map +0 -1
  214. package/dist/functional/result/impl/result-from-optional.d.mts +0 -41
  215. package/dist/functional/result/impl/result-from-optional.d.mts.map +0 -1
  216. package/dist/functional/result/impl/result-from-optional.mjs +0 -21
  217. package/dist/functional/result/impl/result-from-optional.mjs.map +0 -1
  218. package/dist/functional/result/impl/result-from-promise.d.mts +0 -43
  219. package/dist/functional/result/impl/result-from-promise.d.mts.map +0 -1
  220. package/dist/functional/result/impl/result-from-promise.mjs +0 -39
  221. package/dist/functional/result/impl/result-from-promise.mjs.map +0 -1
  222. package/dist/functional/result/impl/result-from-throwable.d.mts +0 -32
  223. package/dist/functional/result/impl/result-from-throwable.d.mts.map +0 -1
  224. package/dist/functional/result/impl/result-from-throwable.mjs +0 -46
  225. package/dist/functional/result/impl/result-from-throwable.mjs.map +0 -1
  226. package/dist/functional/result/impl/result-is-err.d.mts +0 -23
  227. package/dist/functional/result/impl/result-is-err.d.mts.map +0 -1
  228. package/dist/functional/result/impl/result-is-err.mjs +0 -22
  229. package/dist/functional/result/impl/result-is-err.mjs.map +0 -1
  230. package/dist/functional/result/impl/result-is-ok.d.mts +0 -23
  231. package/dist/functional/result/impl/result-is-ok.d.mts.map +0 -1
  232. package/dist/functional/result/impl/result-is-ok.mjs +0 -22
  233. package/dist/functional/result/impl/result-is-ok.mjs.map +0 -1
  234. package/dist/functional/result/impl/result-is-result.d.mts +0 -22
  235. package/dist/functional/result/impl/result-is-result.d.mts.map +0 -1
  236. package/dist/functional/result/impl/result-is-result.mjs +0 -26
  237. package/dist/functional/result/impl/result-is-result.mjs.map +0 -1
  238. package/dist/functional/result/impl/result-map-err.d.mts +0 -39
  239. package/dist/functional/result/impl/result-map-err.d.mts.map +0 -1
  240. package/dist/functional/result/impl/result-map-err.mjs +0 -22
  241. package/dist/functional/result/impl/result-map-err.mjs.map +0 -1
  242. package/dist/functional/result/impl/result-map.d.mts +0 -39
  243. package/dist/functional/result/impl/result-map.d.mts.map +0 -1
  244. package/dist/functional/result/impl/result-map.mjs +0 -22
  245. package/dist/functional/result/impl/result-map.mjs.map +0 -1
  246. package/dist/functional/result/impl/result-match.d.mts +0 -47
  247. package/dist/functional/result/impl/result-match.d.mts.map +0 -1
  248. package/dist/functional/result/impl/result-match.mjs +0 -20
  249. package/dist/functional/result/impl/result-match.mjs.map +0 -1
  250. package/dist/functional/result/impl/result-ok.d.mts +0 -28
  251. package/dist/functional/result/impl/result-ok.d.mts.map +0 -1
  252. package/dist/functional/result/impl/result-ok.mjs +0 -31
  253. package/dist/functional/result/impl/result-ok.mjs.map +0 -1
  254. package/dist/functional/result/impl/result-or-else.d.mts +0 -40
  255. package/dist/functional/result/impl/result-or-else.d.mts.map +0 -1
  256. package/dist/functional/result/impl/result-or-else.mjs +0 -17
  257. package/dist/functional/result/impl/result-or-else.mjs.map +0 -1
  258. package/dist/functional/result/impl/result-safe-try.d.mts +0 -51
  259. package/dist/functional/result/impl/result-safe-try.d.mts.map +0 -1
  260. package/dist/functional/result/impl/result-safe-try.mjs +0 -35
  261. package/dist/functional/result/impl/result-safe-try.mjs.map +0 -1
  262. package/dist/functional/result/impl/result-safe-unwrap.d.mts +0 -36
  263. package/dist/functional/result/impl/result-safe-unwrap.d.mts.map +0 -1
  264. package/dist/functional/result/impl/result-safe-unwrap.mjs +0 -42
  265. package/dist/functional/result/impl/result-safe-unwrap.mjs.map +0 -1
  266. package/dist/functional/result/impl/result-swap.d.mts +0 -23
  267. package/dist/functional/result/impl/result-swap.d.mts.map +0 -1
  268. package/dist/functional/result/impl/result-swap.mjs +0 -27
  269. package/dist/functional/result/impl/result-swap.mjs.map +0 -1
  270. package/dist/functional/result/impl/result-to-optional.d.mts +0 -32
  271. package/dist/functional/result/impl/result-to-optional.d.mts.map +0 -1
  272. package/dist/functional/result/impl/result-to-optional.mjs +0 -32
  273. package/dist/functional/result/impl/result-to-optional.mjs.map +0 -1
  274. package/dist/functional/result/impl/result-unwrap-err-or.d.mts +0 -33
  275. package/dist/functional/result/impl/result-unwrap-err-or.d.mts.map +0 -1
  276. package/dist/functional/result/impl/result-unwrap-err-or.mjs +0 -17
  277. package/dist/functional/result/impl/result-unwrap-err-or.mjs.map +0 -1
  278. package/dist/functional/result/impl/result-unwrap-err-throw.d.mts +0 -33
  279. package/dist/functional/result/impl/result-unwrap-err-throw.d.mts.map +0 -1
  280. package/dist/functional/result/impl/result-unwrap-err-throw.mjs +0 -46
  281. package/dist/functional/result/impl/result-unwrap-err-throw.mjs.map +0 -1
  282. package/dist/functional/result/impl/result-unwrap-err.d.mts +0 -33
  283. package/dist/functional/result/impl/result-unwrap-err.d.mts.map +0 -1
  284. package/dist/functional/result/impl/result-unwrap-err.mjs +0 -34
  285. package/dist/functional/result/impl/result-unwrap-err.mjs.map +0 -1
  286. package/dist/functional/result/impl/result-unwrap-ok-or.d.mts +0 -33
  287. package/dist/functional/result/impl/result-unwrap-ok-or.d.mts.map +0 -1
  288. package/dist/functional/result/impl/result-unwrap-ok-or.mjs +0 -17
  289. package/dist/functional/result/impl/result-unwrap-ok-or.mjs.map +0 -1
  290. package/dist/functional/result/impl/result-unwrap-ok.d.mts +0 -26
  291. package/dist/functional/result/impl/result-unwrap-ok.d.mts.map +0 -1
  292. package/dist/functional/result/impl/result-unwrap-ok.mjs +0 -8
  293. package/dist/functional/result/impl/result-unwrap-ok.mjs.map +0 -1
  294. package/dist/functional/result/impl/result-unwrap-throw.d.mts +0 -33
  295. package/dist/functional/result/impl/result-unwrap-throw.d.mts.map +0 -1
  296. package/dist/functional/result/impl/result-unwrap-throw.mjs +0 -40
  297. package/dist/functional/result/impl/result-unwrap-throw.mjs.map +0 -1
  298. package/dist/functional/result/impl/result-zip.d.mts +0 -32
  299. package/dist/functional/result/impl/result-zip.d.mts.map +0 -1
  300. package/dist/functional/result/impl/result-zip.mjs +0 -37
  301. package/dist/functional/result/impl/result-zip.mjs.map +0 -1
  302. package/dist/functional/result/impl/tag.d.mts +0 -6
  303. package/dist/functional/result/impl/tag.d.mts.map +0 -1
  304. package/dist/functional/result/impl/tag.mjs +0 -4
  305. package/dist/functional/result/impl/tag.mjs.map +0 -1
  306. package/dist/functional/result/impl/types.d.mts +0 -31
  307. package/dist/functional/result/impl/types.d.mts.map +0 -1
  308. package/dist/functional/result/impl/types.mjs +0 -2
  309. package/dist/functional/result/impl/types.mjs.map +0 -1
  310. package/dist/functional/result/index.d.mts +0 -2
  311. package/dist/functional/result/index.d.mts.map +0 -1
  312. package/dist/functional/result/index.mjs +0 -2
  313. package/dist/functional/result/index.mjs.map +0 -1
  314. package/dist/functional/result/result.d.mts +0 -16
  315. package/dist/functional/result/result.d.mts.map +0 -1
  316. package/dist/functional/result/result.mjs +0 -2
  317. package/dist/functional/result/result.mjs.map +0 -1
  318. package/dist/functional/ternary-result/impl/index.d.mts +0 -29
  319. package/dist/functional/ternary-result/impl/index.d.mts.map +0 -1
  320. package/dist/functional/ternary-result/impl/index.mjs +0 -29
  321. package/dist/functional/ternary-result/impl/index.mjs.map +0 -1
  322. package/dist/functional/ternary-result/impl/tag.d.mts +0 -8
  323. package/dist/functional/ternary-result/impl/tag.d.mts.map +0 -1
  324. package/dist/functional/ternary-result/impl/tag.mjs +0 -6
  325. package/dist/functional/ternary-result/impl/tag.mjs.map +0 -1
  326. package/dist/functional/ternary-result/impl/ternary-result-err.d.mts +0 -16
  327. package/dist/functional/ternary-result/impl/ternary-result-err.d.mts.map +0 -1
  328. package/dist/functional/ternary-result/impl/ternary-result-err.mjs +0 -19
  329. package/dist/functional/ternary-result/impl/ternary-result-err.mjs.map +0 -1
  330. package/dist/functional/ternary-result/impl/ternary-result-expect-to-be.d.mts +0 -24
  331. package/dist/functional/ternary-result/impl/ternary-result-expect-to-be.d.mts.map +0 -1
  332. package/dist/functional/ternary-result/impl/ternary-result-expect-to-be.mjs +0 -21
  333. package/dist/functional/ternary-result/impl/ternary-result-expect-to-be.mjs.map +0 -1
  334. package/dist/functional/ternary-result/impl/ternary-result-flat-map.d.mts +0 -39
  335. package/dist/functional/ternary-result/impl/ternary-result-flat-map.d.mts.map +0 -1
  336. package/dist/functional/ternary-result/impl/ternary-result-flat-map.mjs +0 -38
  337. package/dist/functional/ternary-result/impl/ternary-result-flat-map.mjs.map +0 -1
  338. package/dist/functional/ternary-result/impl/ternary-result-fold.d.mts +0 -30
  339. package/dist/functional/ternary-result/impl/ternary-result-fold.d.mts.map +0 -1
  340. package/dist/functional/ternary-result/impl/ternary-result-fold.mjs +0 -33
  341. package/dist/functional/ternary-result/impl/ternary-result-fold.mjs.map +0 -1
  342. package/dist/functional/ternary-result/impl/ternary-result-from-promise.d.mts +0 -23
  343. package/dist/functional/ternary-result/impl/ternary-result-from-promise.d.mts.map +0 -1
  344. package/dist/functional/ternary-result/impl/ternary-result-from-promise.mjs +0 -23
  345. package/dist/functional/ternary-result/impl/ternary-result-from-promise.mjs.map +0 -1
  346. package/dist/functional/ternary-result/impl/ternary-result-from-throwable.d.mts +0 -20
  347. package/dist/functional/ternary-result/impl/ternary-result-from-throwable.d.mts.map +0 -1
  348. package/dist/functional/ternary-result/impl/ternary-result-from-throwable.mjs +0 -33
  349. package/dist/functional/ternary-result/impl/ternary-result-from-throwable.mjs.map +0 -1
  350. package/dist/functional/ternary-result/impl/ternary-result-is-err.d.mts +0 -21
  351. package/dist/functional/ternary-result/impl/ternary-result-is-err.d.mts.map +0 -1
  352. package/dist/functional/ternary-result/impl/ternary-result-is-err.mjs +0 -20
  353. package/dist/functional/ternary-result/impl/ternary-result-is-err.mjs.map +0 -1
  354. package/dist/functional/ternary-result/impl/ternary-result-is-ok.d.mts +0 -23
  355. package/dist/functional/ternary-result/impl/ternary-result-is-ok.d.mts.map +0 -1
  356. package/dist/functional/ternary-result/impl/ternary-result-is-ok.mjs +0 -22
  357. package/dist/functional/ternary-result/impl/ternary-result-is-ok.mjs.map +0 -1
  358. package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.d.mts +0 -22
  359. package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.d.mts.map +0 -1
  360. package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.mjs +0 -28
  361. package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.mjs.map +0 -1
  362. package/dist/functional/ternary-result/impl/ternary-result-is-warn.d.mts +0 -22
  363. package/dist/functional/ternary-result/impl/ternary-result-is-warn.d.mts.map +0 -1
  364. package/dist/functional/ternary-result/impl/ternary-result-is-warn.mjs +0 -21
  365. package/dist/functional/ternary-result/impl/ternary-result-is-warn.mjs.map +0 -1
  366. package/dist/functional/ternary-result/impl/ternary-result-map-err.d.mts +0 -27
  367. package/dist/functional/ternary-result/impl/ternary-result-map-err.d.mts.map +0 -1
  368. package/dist/functional/ternary-result/impl/ternary-result-map-err.mjs +0 -23
  369. package/dist/functional/ternary-result/impl/ternary-result-map-err.mjs.map +0 -1
  370. package/dist/functional/ternary-result/impl/ternary-result-map-warn.d.mts +0 -28
  371. package/dist/functional/ternary-result/impl/ternary-result-map-warn.d.mts.map +0 -1
  372. package/dist/functional/ternary-result/impl/ternary-result-map-warn.mjs +0 -26
  373. package/dist/functional/ternary-result/impl/ternary-result-map-warn.mjs.map +0 -1
  374. package/dist/functional/ternary-result/impl/ternary-result-map.d.mts +0 -36
  375. package/dist/functional/ternary-result/impl/ternary-result-map.d.mts.map +0 -1
  376. package/dist/functional/ternary-result/impl/ternary-result-map.mjs +0 -32
  377. package/dist/functional/ternary-result/impl/ternary-result-map.mjs.map +0 -1
  378. package/dist/functional/ternary-result/impl/ternary-result-ok.d.mts +0 -17
  379. package/dist/functional/ternary-result/impl/ternary-result-ok.d.mts.map +0 -1
  380. package/dist/functional/ternary-result/impl/ternary-result-ok.mjs +0 -20
  381. package/dist/functional/ternary-result/impl/ternary-result-ok.mjs.map +0 -1
  382. package/dist/functional/ternary-result/impl/ternary-result-or-else.d.mts +0 -29
  383. package/dist/functional/ternary-result/impl/ternary-result-or-else.d.mts.map +0 -1
  384. package/dist/functional/ternary-result/impl/ternary-result-or-else.mjs +0 -16
  385. package/dist/functional/ternary-result/impl/ternary-result-or-else.mjs.map +0 -1
  386. package/dist/functional/ternary-result/impl/ternary-result-to-optional.d.mts +0 -23
  387. package/dist/functional/ternary-result/impl/ternary-result-to-optional.d.mts.map +0 -1
  388. package/dist/functional/ternary-result/impl/ternary-result-to-optional.mjs +0 -26
  389. package/dist/functional/ternary-result/impl/ternary-result-to-optional.mjs.map +0 -1
  390. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-or.d.mts +0 -28
  391. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-or.d.mts.map +0 -1
  392. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-or.mjs +0 -14
  393. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-or.mjs.map +0 -1
  394. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-throw.d.mts +0 -20
  395. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-throw.d.mts.map +0 -1
  396. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-throw.mjs +0 -34
  397. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-throw.mjs.map +0 -1
  398. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err.d.mts +0 -20
  399. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err.d.mts.map +0 -1
  400. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err.mjs +0 -21
  401. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err.mjs.map +0 -1
  402. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok-or.d.mts +0 -25
  403. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok-or.d.mts.map +0 -1
  404. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok-or.mjs +0 -14
  405. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok-or.mjs.map +0 -1
  406. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok.d.mts +0 -20
  407. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok.d.mts.map +0 -1
  408. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok.mjs +0 -10
  409. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok.mjs.map +0 -1
  410. package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.d.mts +0 -21
  411. package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.d.mts.map +0 -1
  412. package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.mjs +0 -35
  413. package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.mjs.map +0 -1
  414. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-or.d.mts +0 -22
  415. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-or.d.mts.map +0 -1
  416. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-or.mjs +0 -14
  417. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-or.mjs.map +0 -1
  418. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.d.mts +0 -20
  419. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.d.mts.map +0 -1
  420. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.mjs +0 -30
  421. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.mjs.map +0 -1
  422. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn.d.mts +0 -20
  423. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn.d.mts.map +0 -1
  424. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn.mjs +0 -21
  425. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn.mjs.map +0 -1
  426. package/dist/functional/ternary-result/impl/ternary-result-warn.d.mts +0 -19
  427. package/dist/functional/ternary-result/impl/ternary-result-warn.d.mts.map +0 -1
  428. package/dist/functional/ternary-result/impl/ternary-result-warn.mjs +0 -23
  429. package/dist/functional/ternary-result/impl/ternary-result-warn.mjs.map +0 -1
  430. package/dist/functional/ternary-result/impl/ternary-result-zip.d.mts +0 -34
  431. package/dist/functional/ternary-result/impl/ternary-result-zip.d.mts.map +0 -1
  432. package/dist/functional/ternary-result/impl/ternary-result-zip.mjs +0 -52
  433. package/dist/functional/ternary-result/impl/ternary-result-zip.mjs.map +0 -1
  434. package/dist/functional/ternary-result/impl/types.d.mts +0 -26
  435. package/dist/functional/ternary-result/impl/types.d.mts.map +0 -1
  436. package/dist/functional/ternary-result/impl/types.mjs +0 -2
  437. package/dist/functional/ternary-result/impl/types.mjs.map +0 -1
  438. package/dist/functional/ternary-result/impl/variant-name.d.mts +0 -4
  439. package/dist/functional/ternary-result/impl/variant-name.d.mts.map +0 -1
  440. package/dist/functional/ternary-result/impl/variant-name.mjs +0 -13
  441. package/dist/functional/ternary-result/impl/variant-name.mjs.map +0 -1
  442. package/dist/functional/ternary-result/index.d.mts +0 -2
  443. package/dist/functional/ternary-result/index.d.mts.map +0 -1
  444. package/dist/functional/ternary-result/index.mjs +0 -2
  445. package/dist/functional/ternary-result/index.mjs.map +0 -1
  446. package/dist/functional/ternary-result/ternary-result.d.mts +0 -40
  447. package/dist/functional/ternary-result/ternary-result.d.mts.map +0 -1
  448. package/dist/functional/ternary-result/ternary-result.mjs +0 -2
  449. package/dist/functional/ternary-result/ternary-result.mjs.map +0 -1
  450. package/src/functional/async-result/async-result.mts +0 -17
  451. package/src/functional/async-result/impl/async-result-flat-map.mts +0 -99
  452. package/src/functional/async-result/impl/async-result-from-promise.mts +0 -69
  453. package/src/functional/async-result/impl/async-result-from-throwable.mts +0 -78
  454. package/src/functional/async-result/impl/async-result-map-err.mts +0 -84
  455. package/src/functional/async-result/impl/async-result-map.mts +0 -94
  456. package/src/functional/async-result/impl/async-result-unwrap-or.mts +0 -42
  457. package/src/functional/async-result/impl/index.mts +0 -7
  458. package/src/functional/async-result/impl/types.mts +0 -51
  459. package/src/functional/async-result/index.mts +0 -1
  460. package/src/functional/async-result.test.mts +0 -291
  461. package/src/functional/match.mts +0 -193
  462. package/src/functional/match.test.mts +0 -180
  463. package/src/functional/optional/impl/index.mts +0 -18
  464. package/src/functional/optional/impl/optional-expect-to-be.mts +0 -75
  465. package/src/functional/optional/impl/optional-filter.mts +0 -78
  466. package/src/functional/optional/impl/optional-flat-map.mts +0 -75
  467. package/src/functional/optional/impl/optional-from-nullable.mts +0 -31
  468. package/src/functional/optional/impl/optional-is-none.mts +0 -26
  469. package/src/functional/optional/impl/optional-is-optional.mts +0 -30
  470. package/src/functional/optional/impl/optional-is-some.mts +0 -27
  471. package/src/functional/optional/impl/optional-map.mts +0 -90
  472. package/src/functional/optional/impl/optional-match.mts +0 -108
  473. package/src/functional/optional/impl/optional-none.mts +0 -20
  474. package/src/functional/optional/impl/optional-or-else.mts +0 -83
  475. package/src/functional/optional/impl/optional-some.mts +0 -27
  476. package/src/functional/optional/impl/optional-to-nullable.mts +0 -34
  477. package/src/functional/optional/impl/optional-unwrap-or.mts +0 -70
  478. package/src/functional/optional/impl/optional-unwrap-throw.mts +0 -41
  479. package/src/functional/optional/impl/optional-unwrap.mts +0 -45
  480. package/src/functional/optional/impl/optional-zip.mts +0 -44
  481. package/src/functional/optional/impl/tag.mts +0 -8
  482. package/src/functional/optional/impl/types.mts +0 -31
  483. package/src/functional/optional/index.mts +0 -1
  484. package/src/functional/optional/optional.mts +0 -19
  485. package/src/functional/optional.test.mts +0 -883
  486. package/src/functional/pipe.mts +0 -180
  487. package/src/functional/pipe.test.mts +0 -155
  488. package/src/functional/result/impl/index.mts +0 -27
  489. package/src/functional/result/impl/result-err.mts +0 -33
  490. package/src/functional/result/impl/result-expect-to-be.mts +0 -73
  491. package/src/functional/result/impl/result-flat-map.mts +0 -88
  492. package/src/functional/result/impl/result-fold.mts +0 -102
  493. package/src/functional/result/impl/result-from-optional.mts +0 -80
  494. package/src/functional/result/impl/result-from-promise.mts +0 -51
  495. package/src/functional/result/impl/result-from-throwable.mts +0 -48
  496. package/src/functional/result/impl/result-is-err.mts +0 -26
  497. package/src/functional/result/impl/result-is-ok.mts +0 -26
  498. package/src/functional/result/impl/result-is-result.mts +0 -28
  499. package/src/functional/result/impl/result-map-err.mts +0 -96
  500. package/src/functional/result/impl/result-map.mts +0 -96
  501. package/src/functional/result/impl/result-match.mts +0 -108
  502. package/src/functional/result/impl/result-ok.mts +0 -33
  503. package/src/functional/result/impl/result-or-else.mts +0 -73
  504. package/src/functional/result/impl/result-safe-try.mts +0 -110
  505. package/src/functional/result/impl/result-safe-unwrap.mts +0 -50
  506. package/src/functional/result/impl/result-swap.mts +0 -31
  507. package/src/functional/result/impl/result-to-optional.mts +0 -37
  508. package/src/functional/result/impl/result-unwrap-err-or.mts +0 -66
  509. package/src/functional/result/impl/result-unwrap-err-throw.mts +0 -56
  510. package/src/functional/result/impl/result-unwrap-err.mts +0 -38
  511. package/src/functional/result/impl/result-unwrap-ok-or.mts +0 -66
  512. package/src/functional/result/impl/result-unwrap-ok.mts +0 -39
  513. package/src/functional/result/impl/result-unwrap-throw.mts +0 -46
  514. package/src/functional/result/impl/result-zip.mts +0 -42
  515. package/src/functional/result/impl/tag.mts +0 -8
  516. package/src/functional/result/impl/types.mts +0 -38
  517. package/src/functional/result/index.mts +0 -1
  518. package/src/functional/result/result.mts +0 -19
  519. package/src/functional/result.test.mts +0 -1349
  520. package/src/functional/ternary-result/impl/index.mts +0 -28
  521. package/src/functional/ternary-result/impl/tag.mts +0 -17
  522. package/src/functional/ternary-result/impl/ternary-result-err.mts +0 -21
  523. package/src/functional/ternary-result/impl/ternary-result-expect-to-be.mts +0 -65
  524. package/src/functional/ternary-result/impl/ternary-result-flat-map.mts +0 -112
  525. package/src/functional/ternary-result/impl/ternary-result-fold.mts +0 -102
  526. package/src/functional/ternary-result/impl/ternary-result-from-promise.mts +0 -30
  527. package/src/functional/ternary-result/impl/ternary-result-from-throwable.mts +0 -36
  528. package/src/functional/ternary-result/impl/ternary-result-is-err.mts +0 -24
  529. package/src/functional/ternary-result/impl/ternary-result-is-ok.mts +0 -26
  530. package/src/functional/ternary-result/impl/ternary-result-is-ternary-result.mts +0 -32
  531. package/src/functional/ternary-result/impl/ternary-result-is-warn.mts +0 -25
  532. package/src/functional/ternary-result/impl/ternary-result-map-err.mts +0 -74
  533. package/src/functional/ternary-result/impl/ternary-result-map-warn.mts +0 -79
  534. package/src/functional/ternary-result/impl/ternary-result-map.mts +0 -95
  535. package/src/functional/ternary-result/impl/ternary-result-ok.mts +0 -22
  536. package/src/functional/ternary-result/impl/ternary-result-or-else.mts +0 -72
  537. package/src/functional/ternary-result/impl/ternary-result-to-optional.mts +0 -31
  538. package/src/functional/ternary-result/impl/ternary-result-unwrap-err-or.mts +0 -54
  539. package/src/functional/ternary-result/impl/ternary-result-unwrap-err-throw.mts +0 -42
  540. package/src/functional/ternary-result/impl/ternary-result-unwrap-err.mts +0 -25
  541. package/src/functional/ternary-result/impl/ternary-result-unwrap-ok-or.mts +0 -51
  542. package/src/functional/ternary-result/impl/ternary-result-unwrap-ok.mts +0 -39
  543. package/src/functional/ternary-result/impl/ternary-result-unwrap-throw.mts +0 -48
  544. package/src/functional/ternary-result/impl/ternary-result-unwrap-warn-or.mts +0 -48
  545. package/src/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.mts +0 -40
  546. package/src/functional/ternary-result/impl/ternary-result-unwrap-warn.mts +0 -25
  547. package/src/functional/ternary-result/impl/ternary-result-warn.mts +0 -28
  548. package/src/functional/ternary-result/impl/ternary-result-zip.mts +0 -61
  549. package/src/functional/ternary-result/impl/types.mts +0 -46
  550. package/src/functional/ternary-result/impl/variant-name.mts +0 -18
  551. package/src/functional/ternary-result/index.mts +0 -1
  552. package/src/functional/ternary-result/ternary-result.mts +0 -50
  553. package/src/functional/ternary-result.test.mts +0 -310
  554. package/src/guard/has-key.test.mts +0 -111
  555. package/src/guard/is-non-null-object.test.mts +0 -109
  556. package/src/guard/is-record.test.mts +0 -195
  557. package/src/guard/key-is-in.test.mts +0 -21
  558. package/src/others/unknown-to-string.test.mts +0 -295
@@ -1,108 +0,0 @@
1
- import { type UnknownOptional } from '../optional.mjs';
2
- import { isSome } from './optional-is-some.mjs';
3
- import { unwrap } from './optional-unwrap.mjs';
4
- import { type Unwrap } from './types.mjs';
5
-
6
- /**
7
- * Folds an {@link Optional} into a plain value by applying one of two case
8
- * handlers: `some` if the {@link Optional} contains a value, `none`
9
- * otherwise. This is the function form of pattern matching on an
10
- * {@link Optional}.
11
- *
12
- * Unlike {@link Optional.map}, the result is not wrapped in an
13
- * {@link Optional} — both branches produce the final value directly.
14
- *
15
- * @example
16
- *
17
- * ```ts
18
- * const doubledOrZero = Optional.match(Optional.some(21), {
19
- * some: (value) => value * 2,
20
- * none: () => 0,
21
- * });
22
- *
23
- * assert.deepStrictEqual(doubledOrZero, 42);
24
- *
25
- * const matcher = Optional.match({
26
- * some: (value: number) => `value: ${value}`,
27
- * none: () => 'none',
28
- * });
29
- *
30
- * assert.deepStrictEqual(matcher(Optional.some(3)), 'value: 3');
31
- *
32
- * assert.deepStrictEqual(matcher(Optional.none), 'none');
33
- * ```
34
- *
35
- * @template O The input `UnknownOptional` type.
36
- * @template S2 The type returned by the `some` case.
37
- * @template N2 The type returned by the `none` case.
38
- * @param optional The `Optional` to match on.
39
- * @param cases An object with a `some` handler receiving the contained value
40
- * and a `none` handler receiving nothing.
41
- * @returns The value produced by whichever case handler was applied.
42
- */
43
- export function match<O extends UnknownOptional, S2, N2>(
44
- optional: O,
45
- cases: Readonly<{
46
- some: (value: Unwrap<O>) => S2;
47
- none: () => N2;
48
- }>,
49
- ): N2 | S2;
50
-
51
- // Curried version
52
- //
53
- // The returned function is generic over the *whole* optional, mirroring the
54
- // direct overload above; see the comment on the curried overload of
55
- // `Optional.map` for why the parameter is a conditional type instead of a
56
- // plain `Optional<S>`.
57
- export function match<S, S2, N2>(
58
- cases: Readonly<{
59
- some: (value: S) => S2;
60
- none: () => N2;
61
- }>,
62
- ): <O extends UnknownOptional>(
63
- optional: Unwrap<O> extends S ? O : never,
64
- ) => N2 | S2;
65
-
66
- export function match<O extends UnknownOptional, S2, N2>(
67
- ...args:
68
- | readonly [
69
- optional: O,
70
- cases: Readonly<{
71
- some: (value: Unwrap<O>) => S2;
72
- none: () => N2;
73
- }>,
74
- ]
75
- | readonly [
76
- cases: Readonly<{
77
- some: (value: Unwrap<O>) => S2;
78
- none: () => N2;
79
- }>,
80
- ]
81
- ): N2 | S2 | ((optional: O) => N2 | S2) {
82
- switch (args.length) {
83
- case 2: {
84
- const [optional, cases] = args;
85
-
86
- return matchImpl(optional, cases);
87
- }
88
-
89
- case 1: {
90
- // Curried version: the only argument is the case handlers
91
- const [cases] = args;
92
-
93
- return (optional: O) => matchImpl(optional, cases);
94
- }
95
- }
96
- }
97
-
98
- const matchImpl = <O extends UnknownOptional, S2, N2>(
99
- optional: O,
100
- cases: Readonly<{
101
- some: (value: Unwrap<O>) => S2;
102
- none: () => N2;
103
- }>,
104
- ): N2 | S2 =>
105
- isSome(optional)
106
- ? // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
107
- cases.some(unwrap(optional)!)
108
- : cases.none();
@@ -1,20 +0,0 @@
1
- import { type None } from '../../../types.mjs';
2
- import { NoneTypeTagName } from './tag.mjs';
3
-
4
- /**
5
- * The singleton instance representing {@link None} (an empty
6
- * Optional).
7
- *
8
- * @example
9
- *
10
- * ```ts
11
- * const someValue = Optional.some({ id: 1 });
12
- *
13
- * const noneValue = Optional.none;
14
- *
15
- * assert.isTrue(Optional.isSome(someValue));
16
- *
17
- * assert.isTrue(Optional.isNone(noneValue));
18
- * ```
19
- */
20
- export const none: None = { $$tag: NoneTypeTagName } as const;
@@ -1,83 +0,0 @@
1
- import { type Optional, type UnknownOptional } from '../optional.mjs';
2
- import { isNone } from './optional-is-none.mjs';
3
- import { type Unwrap } from './types.mjs';
4
-
5
- /**
6
- * Returns the `Optional` if it is `Some`, otherwise returns the alternative.
7
- *
8
- * Provides a way to chain Optional operations with fallback values. This is
9
- * particularly useful for implementing default behavior or cascading lookups.
10
- * Supports both direct usage and curried form for functional composition.
11
- *
12
- * @example
13
- *
14
- * ```ts
15
- * const preferred = Optional.some('primary');
16
- *
17
- * const fallback = Optional.some('secondary');
18
- *
19
- * const noneValue = Optional.none as Optional<string>;
20
- *
21
- * assert.deepStrictEqual(Optional.orElse(preferred, fallback), preferred);
22
- *
23
- * assert.deepStrictEqual(Optional.orElse(noneValue, fallback), fallback);
24
- *
25
- * const orElseFallback = Optional.orElse(Optional.some('default'));
26
- *
27
- * assert.deepStrictEqual(
28
- * orElseFallback(Optional.none),
29
- * Optional.some('default'),
30
- * );
31
- *
32
- * assert.deepStrictEqual(
33
- * orElseFallback(Optional.some('value')),
34
- * Optional.some('value'),
35
- * );
36
- * ```
37
- *
38
- * @template O The input `UnknownOptional` type.
39
- * @param optional The `Optional` to check.
40
- * @param alternative The alternative `Optional` to return if the first is
41
- * `None`.
42
- * @returns The first `Optional` if `Some`, otherwise the alternative.
43
- */
44
- export function orElse<
45
- O extends UnknownOptional,
46
- const O2 extends UnknownOptional,
47
- >(optional: O, alternative: O2): O | O2;
48
-
49
- // Curried version
50
- export function orElse<O2>(
51
- alternative: Optional<O2>,
52
- ): <O>(optional: Optional<O>) => Optional<O> | Optional<O2>;
53
-
54
- export function orElse<
55
- O extends UnknownOptional,
56
- const O2 extends UnknownOptional,
57
- >(
58
- ...args: readonly [optional: O, alternative: O2] | readonly [alternative: O2]
59
- ): (O | O2) | ((optional: Optional<Unwrap<O>>) => Optional<Unwrap<O>> | O2) {
60
- switch (args.length) {
61
- case 2: {
62
- const [optional, alternative] = args;
63
-
64
- return orElseImpl(optional, alternative);
65
- }
66
-
67
- case 1: {
68
- // Curried version
69
- const [alternative] = args;
70
-
71
- return (optional: Optional<Unwrap<O>>) =>
72
- orElseImpl(optional, alternative);
73
- }
74
- }
75
- }
76
-
77
- const orElseImpl = <
78
- O extends UnknownOptional,
79
- const O2 extends UnknownOptional,
80
- >(
81
- optional: O,
82
- alternative: O2,
83
- ): O | O2 => (isNone(optional) ? alternative : optional);
@@ -1,27 +0,0 @@
1
- import { type Some } from '../../../types.mjs';
2
- import { SomeTypeTagName } from './tag.mjs';
3
-
4
- /**
5
- * Creates an {@link Some} containing the given value.
6
- *
7
- * @example
8
- *
9
- * ```ts
10
- * const someValue = Optional.some({ id: 1 });
11
- *
12
- * const noneValue = Optional.none;
13
- *
14
- * assert.isTrue(Optional.isSome(someValue));
15
- *
16
- * assert.isTrue(Optional.isNone(noneValue));
17
- * ```
18
- *
19
- * @template S The type of the value.
20
- * @param value The value to wrap in an {@link Some}.
21
- * @returns An {@link Some}<S> containing the value.
22
- */
23
- export const some = <const S,>(value: S): Some<S> =>
24
- ({
25
- $$tag: SomeTypeTagName,
26
- value,
27
- }) as const;
@@ -1,34 +0,0 @@
1
- import { type UnknownOptional } from '../optional.mjs';
2
- import { isSome } from './optional-is-some.mjs';
3
- import { unwrap } from './optional-unwrap.mjs';
4
- import { type Unwrap } from './types.mjs';
5
-
6
- /**
7
- * Converts an `Optional` to a nullable value.
8
- *
9
- * This function extracts the value from an Optional, returning `undefined`
10
- * for empty Optionals. This is useful when interfacing with APIs or systems
11
- * that expect nullable values rather than Optional types.
12
- *
13
- * Note: This returns `undefined` (not `null`) for consistency with
14
- * JavaScript's undefined semantics and TypeScript's optional properties.
15
- *
16
- * @example
17
- *
18
- * ```ts
19
- * const someNumber = Optional.some(42);
20
- *
21
- * const noneNumber = Optional.none as Optional<number>;
22
- *
23
- * assert.isTrue(Optional.toNullable(someNumber) === 42);
24
- *
25
- * assert.isTrue(Optional.toNullable(noneNumber) === undefined);
26
- * ```
27
- *
28
- * @template O The `UnknownOptional` type to convert.
29
- * @param optional The `Optional` to convert.
30
- * @returns The contained value if `Some`, otherwise `undefined`.
31
- */
32
- export const toNullable = <O extends UnknownOptional>(
33
- optional: O,
34
- ): Unwrap<O> | undefined => (isSome(optional) ? unwrap(optional) : undefined);
@@ -1,70 +0,0 @@
1
- import { type Optional, type UnknownOptional } from '../optional.mjs';
2
- import { unwrap } from './optional-unwrap.mjs';
3
- import { type Unwrap } from './types.mjs';
4
-
5
- /**
6
- * Unwraps an `Optional`, returning the contained value or a default value if
7
- * it's `None`.
8
- *
9
- * Supports both direct usage and curried form for functional composition.
10
- * This is often preferred over `unwrap()` when you have a sensible fallback
11
- * value.
12
- *
13
- * @example
14
- *
15
- * ```ts
16
- * const withValue = Optional.some(5);
17
- *
18
- * const withoutValue = Optional.none as Optional<number>;
19
- *
20
- * assert.isTrue(Optional.unwrapOr(withValue, 0) === 5);
21
- *
22
- * assert.isTrue(Optional.unwrapOr(withoutValue, 0) === 0);
23
- *
24
- * const unwrapWithDefault = Optional.unwrapOr(10);
25
- *
26
- * assert.isTrue(unwrapWithDefault(Optional.some(3)) === 3);
27
- *
28
- * assert.isTrue(unwrapWithDefault(Optional.none) === 10);
29
- * ```
30
- *
31
- * @template O The `UnknownOptional` type to unwrap.
32
- * @template D The type of the default value.
33
- * @param optional The `Optional` to unwrap.
34
- * @param defaultValue The value to return if `optional` is `None`.
35
- * @returns The contained value if `Some`, otherwise `defaultValue`.
36
- */
37
- export function unwrapOr<O extends UnknownOptional, D>(
38
- optional: O,
39
- defaultValue: D,
40
- ): D | Unwrap<O>;
41
-
42
- // Curried version
43
- export function unwrapOr<D>(
44
- defaultValue: D,
45
- ): <O>(optional: Optional<O>) => D | O;
46
-
47
- export function unwrapOr<O extends UnknownOptional, D>(
48
- ...args: readonly [optional: O, defaultValue: D] | readonly [defaultValue: D]
49
- ): (D | Unwrap<O>) | ((optional: Optional<Unwrap<O>>) => D | Unwrap<O>) {
50
- switch (args.length) {
51
- case 2: {
52
- const [optional, defaultValue] = args;
53
-
54
- return unwrapOrImpl(optional, defaultValue);
55
- }
56
-
57
- case 1: {
58
- // Curried version: first argument is default value
59
- const [defaultValue] = args;
60
-
61
- return (optional: Optional<Unwrap<O>>) =>
62
- unwrapOrImpl(optional, defaultValue);
63
- }
64
- }
65
- }
66
-
67
- const unwrapOrImpl = <O extends UnknownOptional, D>(
68
- optional: O,
69
- defaultValue: D,
70
- ): D | Unwrap<O> => unwrap(optional) ?? defaultValue;
@@ -1,41 +0,0 @@
1
- import { type UnknownOptional } from '../optional.mjs';
2
- import { isSome } from './optional-is-some.mjs';
3
- import { type Unwrap } from './types.mjs';
4
-
5
- /**
6
- * Unwraps an `Optional`, returning the contained value. Throws an error if
7
- * the `Optional` is `None`.
8
- *
9
- * This is a safer alternative to direct value access when you know the
10
- * Optional should contain a value. Use this method when an empty Optional
11
- * represents a programming error or unexpected condition.
12
- *
13
- * @example
14
- *
15
- * ```ts
16
- * const present = Optional.some('available');
17
- *
18
- * assert.isTrue(Optional.unwrapThrow(present) === 'available');
19
- *
20
- * assert.throws(
21
- * () => Optional.unwrapThrow(Optional.none),
22
- * /has failed because it is `None`/u,
23
- * );
24
- * ```
25
- *
26
- * @template O The `UnknownOptional` type to unwrap.
27
- * @param optional The `Optional` to unwrap.
28
- * @returns The contained value if `Some`.
29
- * @throws {Error} Error with message "`unwrapThrow()` has failed because it
30
- * is `None`" if the `Optional` is `None`.
31
- */
32
- export const unwrapThrow = <O extends UnknownOptional>(
33
- optional: O,
34
- ): Unwrap<O> => {
35
- if (isSome(optional)) {
36
- // eslint-disable-next-line total-functions/no-unsafe-type-assertion
37
- return optional.value as Unwrap<O>;
38
- }
39
-
40
- throw new Error('`unwrapThrow()` has failed because it is `None`');
41
- };
@@ -1,45 +0,0 @@
1
- import { type Some } from '../../../types.mjs';
2
- import { type UnknownOptional } from '../optional.mjs';
3
- import { isSome } from './optional-is-some.mjs';
4
- import { type Unwrap } from './types.mjs';
5
-
6
- /**
7
- * Unwraps an `Optional`, returning the contained value or `undefined` if
8
- * empty.
9
- *
10
- * This function provides a safe way to extract values from Optionals without
11
- * throwing exceptions. It has overloaded behavior based on the type:
12
- *
13
- * - For `Some<T>`: Always returns `T` (guaranteed by type system)
14
- * - For general `Optional<T>`: Returns `T | undefined`
15
- *
16
- * @example
17
- *
18
- * ```ts
19
- * const someString = Optional.some('text');
20
- *
21
- * const noneString = Optional.none as Optional<string>;
22
- *
23
- * assert.isTrue(Optional.unwrap(someString) === 'text');
24
- *
25
- * assert.isTrue(Optional.unwrap(noneString) === undefined);
26
- * ```
27
- *
28
- * @template O The `UnknownOptional` type to unwrap.
29
- * @param optional The `Optional` to unwrap.
30
- * @returns The contained value if `Some`, otherwise `undefined`.
31
- */
32
- export function unwrap<O extends Some<unknown>>(optional: O): Unwrap<O>;
33
-
34
- export function unwrap<O extends UnknownOptional>(
35
- optional: O,
36
- ): Unwrap<O> | undefined;
37
-
38
- export function unwrap<O extends UnknownOptional>(
39
- optional: O,
40
- ): Unwrap<O> | undefined {
41
- return isSome(optional)
42
- ? // eslint-disable-next-line total-functions/no-unsafe-type-assertion
43
- (optional.value as Unwrap<O>)
44
- : undefined;
45
- }
@@ -1,44 +0,0 @@
1
- import { type Optional } from '../optional.mjs';
2
- import { isSome } from './optional-is-some.mjs';
3
- import { none } from './optional-none.mjs';
4
- import { some } from './optional-some.mjs';
5
-
6
- /**
7
- * Combines two `Optional` values into a single `Optional` containing a tuple.
8
- * If either `Optional` is `None`, returns `None`.
9
- *
10
- * @example
11
- *
12
- * ```ts
13
- * const zipped = Optional.zip(Optional.some('left'), Optional.some(1));
14
- *
15
- * assert.isTrue(Optional.isSome(zipped));
16
- *
17
- * if (Optional.isSome(zipped)) {
18
- * const expected: readonly [string, number] = ['left', 1] as const;
19
- *
20
- * assert.deepStrictEqual(zipped.value, expected);
21
- * }
22
- *
23
- * const missing = Optional.zip(
24
- * Optional.some('value'),
25
- * // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
26
- * Optional.none as Optional<number>,
27
- * );
28
- *
29
- * assert.deepStrictEqual(missing, Optional.none);
30
- * ```
31
- *
32
- * @template A The value type of the first `Optional`.
33
- * @template B The value type of the second `Optional`.
34
- * @param optionalA The first `Optional`.
35
- * @param optionalB The second `Optional`.
36
- * @returns An `Optional` containing a tuple of both values, or `None`.
37
- */
38
- export const zip = <A, const B>(
39
- optionalA: Optional<A>,
40
- optionalB: Optional<B>,
41
- ): Optional<readonly [A, B]> =>
42
- isSome(optionalA) && isSome(optionalB)
43
- ? some([optionalA.value, optionalB.value] as const)
44
- : none;
@@ -1,8 +0,0 @@
1
- /** @internal String literal tag to identify the 'Some' variant of Optional. */
2
- import { type None, type Some } from '../../../types.mjs';
3
-
4
- export const SomeTypeTagName: Some<unknown>['$$tag'] =
5
- 'ts-data-forge::Optional.some';
6
-
7
- /** @internal String literal tag to identify the 'None' variant of Optional. */
8
- export const NoneTypeTagName: None['$$tag'] = 'ts-data-forge::Optional.none';
@@ -1,31 +0,0 @@
1
- import { type None, type Some } from '../../../types.mjs';
2
- import { type UnknownOptional } from '../optional.mjs';
3
-
4
- /**
5
- * Extracts the value type `S` from an {@link Some}<S>. If the
6
- * {@link Optional} is {@link None}, resolves to `never`.
7
- *
8
- * @template O The {@link UnknownOptional} type to unwrap.
9
- */
10
- export type Unwrap<O extends UnknownOptional> =
11
- O extends Some<infer S> ? S : never;
12
-
13
- /**
14
- * Narrows an {@link UnknownOptional} type to {@link Some}<S> if it is a
15
- * {@link Some}. If the {@link Optional} is {@link None}, resolves to `never`.
16
- *
17
- * @template O The {@link UnknownOptional} type to narrow.
18
- */
19
- export type NarrowToSome<O extends UnknownOptional> = O extends None
20
- ? never
21
- : O;
22
-
23
- /**
24
- * Narrows an {@link UnknownOptional} type to {@link None} if it is a
25
- * {@link None}. If the {@link Optional} is {@link Some}<S>, resolves to never.
26
- *
27
- * @template O The {@link UnknownOptional} type to narrow.
28
- */
29
- export type NarrowToNone<O extends UnknownOptional> = O extends None
30
- ? O
31
- : never;
@@ -1 +0,0 @@
1
- export * from './optional.mjs';
@@ -1,19 +0,0 @@
1
- import { type None, type Some } from '../../types.mjs';
2
-
3
- /**
4
- * Represents an optional value that can either be `Some` (containing a value)
5
- * or `None` (empty).
6
- *
7
- * @template S The type of the value that might be present.
8
- */
9
- export type Optional<S> = None | Some<S>;
10
-
11
- /**
12
- * Base type for any {@link Optional}, used for generic constraints. Represents
13
- * an {@link Optional} with an unknown value type.
14
- */
15
- export type UnknownOptional = None | Some<unknown>;
16
-
17
- export type { None, Some } from '../../types.mjs';
18
-
19
- export * as Optional from './impl/index.mjs';