ts-data-forge 14.6.3 → 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 (560) hide show
  1. package/README.md +2 -1
  2. package/dist/array/impl/array-utils-modification.mjs +1 -1
  3. package/dist/array/impl/array-utils-transformation.mjs +2 -2
  4. package/dist/expect-type.d.mts +2 -70
  5. package/dist/expect-type.d.mts.map +1 -1
  6. package/dist/expect-type.mjs +1 -68
  7. package/dist/expect-type.mjs.map +1 -1
  8. package/dist/functional/index.d.mts +11 -6
  9. package/dist/functional/index.d.mts.map +1 -1
  10. package/dist/functional/index.mjs +10 -6
  11. package/dist/functional/index.mjs.map +1 -1
  12. package/dist/guard/has-key.d.mts +2 -51
  13. package/dist/guard/has-key.d.mts.map +1 -1
  14. package/dist/guard/has-key.mjs +1 -41
  15. package/dist/guard/has-key.mjs.map +1 -1
  16. package/dist/guard/is-non-null-object.d.mts +2 -34
  17. package/dist/guard/is-non-null-object.d.mts.map +1 -1
  18. package/dist/guard/is-non-null-object.mjs +1 -34
  19. package/dist/guard/is-non-null-object.mjs.map +1 -1
  20. package/dist/guard/is-record.d.mts +2 -89
  21. package/dist/guard/is-record.d.mts.map +1 -1
  22. package/dist/guard/is-record.mjs +1 -88
  23. package/dist/guard/is-record.mjs.map +1 -1
  24. package/dist/guard/key-is-in.d.mts +2 -42
  25. package/dist/guard/key-is-in.d.mts.map +1 -1
  26. package/dist/guard/key-is-in.mjs +1 -40
  27. package/dist/guard/key-is-in.mjs.map +1 -1
  28. package/dist/number/num.d.mts +9 -1
  29. package/dist/number/num.d.mts.map +1 -1
  30. package/dist/number/num.mjs +24 -16
  31. package/dist/number/num.mjs.map +1 -1
  32. package/dist/others/index.d.mts +1 -0
  33. package/dist/others/index.d.mts.map +1 -1
  34. package/dist/others/index.mjs +1 -0
  35. package/dist/others/index.mjs.map +1 -1
  36. package/dist/others/panic-error.d.mts +9 -0
  37. package/dist/others/panic-error.d.mts.map +1 -0
  38. package/dist/others/panic-error.mjs +9 -0
  39. package/dist/others/panic-error.mjs.map +1 -0
  40. package/dist/others/unknown-to-string.d.mts +2 -37
  41. package/dist/others/unknown-to-string.d.mts.map +1 -1
  42. package/dist/others/unknown-to-string.mjs +1 -92
  43. package/dist/others/unknown-to-string.mjs.map +1 -1
  44. package/dist/types.d.mts +1 -41
  45. package/dist/types.d.mts.map +1 -1
  46. package/dist/types.mjs +0 -1
  47. package/dist/types.mjs.map +1 -1
  48. package/package.json +6 -6
  49. package/src/expect-type.mts +2 -78
  50. package/src/functional/index.mts +31 -6
  51. package/src/guard/has-key.mts +2 -72
  52. package/src/guard/is-non-null-object.mts +2 -36
  53. package/src/guard/is-record.mts +2 -95
  54. package/src/guard/key-is-in.mts +2 -49
  55. package/src/number/num.mts +36 -28
  56. package/src/others/index.mts +1 -0
  57. package/src/others/panic-error.mts +8 -0
  58. package/src/others/unknown-to-string.mts +2 -111
  59. package/src/types.mts +4 -54
  60. package/dist/functional/async-result/async-result.d.mts +0 -16
  61. package/dist/functional/async-result/async-result.d.mts.map +0 -1
  62. package/dist/functional/async-result/async-result.mjs +0 -2
  63. package/dist/functional/async-result/async-result.mjs.map +0 -1
  64. package/dist/functional/async-result/impl/async-result-flat-map.d.mts +0 -39
  65. package/dist/functional/async-result/impl/async-result-flat-map.d.mts.map +0 -1
  66. package/dist/functional/async-result/impl/async-result-flat-map.mjs +0 -23
  67. package/dist/functional/async-result/impl/async-result-flat-map.mjs.map +0 -1
  68. package/dist/functional/async-result/impl/async-result-from-promise.d.mts +0 -47
  69. package/dist/functional/async-result/impl/async-result-from-promise.d.mts.map +0 -1
  70. package/dist/functional/async-result/impl/async-result-from-promise.mjs +0 -10
  71. package/dist/functional/async-result/impl/async-result-from-promise.mjs.map +0 -1
  72. package/dist/functional/async-result/impl/async-result-from-throwable.d.mts +0 -53
  73. package/dist/functional/async-result/impl/async-result-from-throwable.d.mts.map +0 -1
  74. package/dist/functional/async-result/impl/async-result-from-throwable.mjs +0 -15
  75. package/dist/functional/async-result/impl/async-result-from-throwable.mjs.map +0 -1
  76. package/dist/functional/async-result/impl/async-result-map-err.d.mts +0 -35
  77. package/dist/functional/async-result/impl/async-result-map-err.d.mts.map +0 -1
  78. package/dist/functional/async-result/impl/async-result-map-err.mjs +0 -20
  79. package/dist/functional/async-result/impl/async-result-map-err.mjs.map +0 -1
  80. package/dist/functional/async-result/impl/async-result-map.d.mts +0 -45
  81. package/dist/functional/async-result/impl/async-result-map.d.mts.map +0 -1
  82. package/dist/functional/async-result/impl/async-result-map.mjs +0 -20
  83. package/dist/functional/async-result/impl/async-result-map.mjs.map +0 -1
  84. package/dist/functional/async-result/impl/async-result-unwrap-or.d.mts +0 -34
  85. package/dist/functional/async-result/impl/async-result-unwrap-or.d.mts.map +0 -1
  86. package/dist/functional/async-result/impl/async-result-unwrap-or.mjs +0 -37
  87. package/dist/functional/async-result/impl/async-result-unwrap-or.mjs.map +0 -1
  88. package/dist/functional/async-result/impl/index.d.mts +0 -8
  89. package/dist/functional/async-result/impl/index.d.mts.map +0 -1
  90. package/dist/functional/async-result/impl/index.mjs +0 -8
  91. package/dist/functional/async-result/impl/index.mjs.map +0 -1
  92. package/dist/functional/async-result/impl/types.d.mts +0 -45
  93. package/dist/functional/async-result/impl/types.d.mts.map +0 -1
  94. package/dist/functional/async-result/impl/types.mjs +0 -2
  95. package/dist/functional/async-result/impl/types.mjs.map +0 -1
  96. package/dist/functional/async-result/index.d.mts +0 -2
  97. package/dist/functional/async-result/index.d.mts.map +0 -1
  98. package/dist/functional/async-result/index.mjs +0 -2
  99. package/dist/functional/async-result/index.mjs.map +0 -1
  100. package/dist/functional/match.d.mts +0 -80
  101. package/dist/functional/match.d.mts.map +0 -1
  102. package/dist/functional/match.mjs +0 -31
  103. package/dist/functional/match.mjs.map +0 -1
  104. package/dist/functional/optional/impl/index.d.mts +0 -19
  105. package/dist/functional/optional/impl/index.d.mts.map +0 -1
  106. package/dist/functional/optional/impl/index.mjs +0 -19
  107. package/dist/functional/optional/impl/index.mjs.map +0 -1
  108. package/dist/functional/optional/impl/optional-expect-to-be.d.mts +0 -37
  109. package/dist/functional/optional/impl/optional-expect-to-be.d.mts.map +0 -1
  110. package/dist/functional/optional/impl/optional-expect-to-be.mjs +0 -22
  111. package/dist/functional/optional/impl/optional-expect-to-be.mjs.map +0 -1
  112. package/dist/functional/optional/impl/optional-filter.d.mts +0 -33
  113. package/dist/functional/optional/impl/optional-filter.d.mts.map +0 -1
  114. package/dist/functional/optional/impl/optional-filter.mjs +0 -25
  115. package/dist/functional/optional/impl/optional-filter.mjs.map +0 -1
  116. package/dist/functional/optional/impl/optional-flat-map.d.mts +0 -39
  117. package/dist/functional/optional/impl/optional-flat-map.d.mts.map +0 -1
  118. package/dist/functional/optional/impl/optional-flat-map.mjs +0 -18
  119. package/dist/functional/optional/impl/optional-flat-map.mjs.map +0 -1
  120. package/dist/functional/optional/impl/optional-from-nullable.d.mts +0 -27
  121. package/dist/functional/optional/impl/optional-from-nullable.d.mts.map +0 -1
  122. package/dist/functional/optional/impl/optional-from-nullable.mjs +0 -28
  123. package/dist/functional/optional/impl/optional-from-nullable.mjs.map +0 -1
  124. package/dist/functional/optional/impl/optional-is-none.d.mts +0 -23
  125. package/dist/functional/optional/impl/optional-is-none.d.mts.map +0 -1
  126. package/dist/functional/optional/impl/optional-is-none.mjs +0 -22
  127. package/dist/functional/optional/impl/optional-is-none.mjs.map +0 -1
  128. package/dist/functional/optional/impl/optional-is-optional.d.mts +0 -21
  129. package/dist/functional/optional/impl/optional-is-optional.d.mts.map +0 -1
  130. package/dist/functional/optional/impl/optional-is-optional.mjs +0 -26
  131. package/dist/functional/optional/impl/optional-is-optional.mjs.map +0 -1
  132. package/dist/functional/optional/impl/optional-is-some.d.mts +0 -24
  133. package/dist/functional/optional/impl/optional-is-some.d.mts.map +0 -1
  134. package/dist/functional/optional/impl/optional-is-some.mjs +0 -23
  135. package/dist/functional/optional/impl/optional-is-some.mjs.map +0 -1
  136. package/dist/functional/optional/impl/optional-map.d.mts +0 -34
  137. package/dist/functional/optional/impl/optional-map.d.mts.map +0 -1
  138. package/dist/functional/optional/impl/optional-map.mjs +0 -22
  139. package/dist/functional/optional/impl/optional-map.mjs.map +0 -1
  140. package/dist/functional/optional/impl/optional-match.d.mts +0 -48
  141. package/dist/functional/optional/impl/optional-match.d.mts.map +0 -1
  142. package/dist/functional/optional/impl/optional-match.mjs +0 -20
  143. package/dist/functional/optional/impl/optional-match.mjs.map +0 -1
  144. package/dist/functional/optional/impl/optional-none.d.mts +0 -19
  145. package/dist/functional/optional/impl/optional-none.d.mts.map +0 -1
  146. package/dist/functional/optional/impl/optional-none.mjs +0 -19
  147. package/dist/functional/optional/impl/optional-none.mjs.map +0 -1
  148. package/dist/functional/optional/impl/optional-or-else.d.mts +0 -43
  149. package/dist/functional/optional/impl/optional-or-else.d.mts.map +0 -1
  150. package/dist/functional/optional/impl/optional-or-else.mjs +0 -16
  151. package/dist/functional/optional/impl/optional-or-else.mjs.map +0 -1
  152. package/dist/functional/optional/impl/optional-some.d.mts +0 -22
  153. package/dist/functional/optional/impl/optional-some.d.mts.map +0 -1
  154. package/dist/functional/optional/impl/optional-some.mjs +0 -25
  155. package/dist/functional/optional/impl/optional-some.mjs.map +0 -1
  156. package/dist/functional/optional/impl/optional-to-nullable.d.mts +0 -30
  157. package/dist/functional/optional/impl/optional-to-nullable.d.mts.map +0 -1
  158. package/dist/functional/optional/impl/optional-to-nullable.mjs +0 -30
  159. package/dist/functional/optional/impl/optional-to-nullable.mjs.map +0 -1
  160. package/dist/functional/optional/impl/optional-unwrap-or.d.mts +0 -37
  161. package/dist/functional/optional/impl/optional-unwrap-or.d.mts.map +0 -1
  162. package/dist/functional/optional/impl/optional-unwrap-or.mjs +0 -16
  163. package/dist/functional/optional/impl/optional-unwrap-or.mjs.map +0 -1
  164. package/dist/functional/optional/impl/optional-unwrap-throw.d.mts +0 -31
  165. package/dist/functional/optional/impl/optional-unwrap-throw.d.mts.map +0 -1
  166. package/dist/functional/optional/impl/optional-unwrap-throw.mjs +0 -36
  167. package/dist/functional/optional/impl/optional-unwrap-throw.mjs.map +0 -1
  168. package/dist/functional/optional/impl/optional-unwrap.d.mts +0 -32
  169. package/dist/functional/optional/impl/optional-unwrap.d.mts.map +0 -1
  170. package/dist/functional/optional/impl/optional-unwrap.mjs +0 -8
  171. package/dist/functional/optional/impl/optional-unwrap.mjs.map +0 -1
  172. package/dist/functional/optional/impl/optional-zip.d.mts +0 -35
  173. package/dist/functional/optional/impl/optional-zip.d.mts.map +0 -1
  174. package/dist/functional/optional/impl/optional-zip.mjs +0 -39
  175. package/dist/functional/optional/impl/optional-zip.mjs.map +0 -1
  176. package/dist/functional/optional/impl/tag.d.mts +0 -6
  177. package/dist/functional/optional/impl/tag.d.mts.map +0 -1
  178. package/dist/functional/optional/impl/tag.mjs +0 -4
  179. package/dist/functional/optional/impl/tag.mjs.map +0 -1
  180. package/dist/functional/optional/impl/types.d.mts +0 -24
  181. package/dist/functional/optional/impl/types.d.mts.map +0 -1
  182. package/dist/functional/optional/impl/types.mjs +0 -2
  183. package/dist/functional/optional/impl/types.mjs.map +0 -1
  184. package/dist/functional/optional/index.d.mts +0 -2
  185. package/dist/functional/optional/index.d.mts.map +0 -1
  186. package/dist/functional/optional/index.mjs +0 -2
  187. package/dist/functional/optional/index.mjs.map +0 -1
  188. package/dist/functional/optional/optional.d.mts +0 -16
  189. package/dist/functional/optional/optional.d.mts.map +0 -1
  190. package/dist/functional/optional/optional.mjs +0 -2
  191. package/dist/functional/optional/optional.mjs.map +0 -1
  192. package/dist/functional/pipe.d.mts +0 -102
  193. package/dist/functional/pipe.d.mts.map +0 -1
  194. package/dist/functional/pipe.mjs +0 -45
  195. package/dist/functional/pipe.mjs.map +0 -1
  196. package/dist/functional/result/impl/index.d.mts +0 -28
  197. package/dist/functional/result/impl/index.d.mts.map +0 -1
  198. package/dist/functional/result/impl/index.mjs +0 -28
  199. package/dist/functional/result/impl/index.mjs.map +0 -1
  200. package/dist/functional/result/impl/result-err.d.mts +0 -28
  201. package/dist/functional/result/impl/result-err.d.mts.map +0 -1
  202. package/dist/functional/result/impl/result-err.mjs +0 -31
  203. package/dist/functional/result/impl/result-err.mjs.map +0 -1
  204. package/dist/functional/result/impl/result-expect-to-be.d.mts +0 -33
  205. package/dist/functional/result/impl/result-expect-to-be.d.mts.map +0 -1
  206. package/dist/functional/result/impl/result-expect-to-be.mjs +0 -23
  207. package/dist/functional/result/impl/result-expect-to-be.mjs.map +0 -1
  208. package/dist/functional/result/impl/result-flat-map.d.mts +0 -45
  209. package/dist/functional/result/impl/result-flat-map.d.mts.map +0 -1
  210. package/dist/functional/result/impl/result-flat-map.mjs +0 -21
  211. package/dist/functional/result/impl/result-flat-map.mjs.map +0 -1
  212. package/dist/functional/result/impl/result-fold.d.mts +0 -50
  213. package/dist/functional/result/impl/result-fold.d.mts.map +0 -1
  214. package/dist/functional/result/impl/result-fold.mjs +0 -23
  215. package/dist/functional/result/impl/result-fold.mjs.map +0 -1
  216. package/dist/functional/result/impl/result-from-optional.d.mts +0 -41
  217. package/dist/functional/result/impl/result-from-optional.d.mts.map +0 -1
  218. package/dist/functional/result/impl/result-from-optional.mjs +0 -21
  219. package/dist/functional/result/impl/result-from-optional.mjs.map +0 -1
  220. package/dist/functional/result/impl/result-from-promise.d.mts +0 -43
  221. package/dist/functional/result/impl/result-from-promise.d.mts.map +0 -1
  222. package/dist/functional/result/impl/result-from-promise.mjs +0 -39
  223. package/dist/functional/result/impl/result-from-promise.mjs.map +0 -1
  224. package/dist/functional/result/impl/result-from-throwable.d.mts +0 -32
  225. package/dist/functional/result/impl/result-from-throwable.d.mts.map +0 -1
  226. package/dist/functional/result/impl/result-from-throwable.mjs +0 -46
  227. package/dist/functional/result/impl/result-from-throwable.mjs.map +0 -1
  228. package/dist/functional/result/impl/result-is-err.d.mts +0 -23
  229. package/dist/functional/result/impl/result-is-err.d.mts.map +0 -1
  230. package/dist/functional/result/impl/result-is-err.mjs +0 -22
  231. package/dist/functional/result/impl/result-is-err.mjs.map +0 -1
  232. package/dist/functional/result/impl/result-is-ok.d.mts +0 -23
  233. package/dist/functional/result/impl/result-is-ok.d.mts.map +0 -1
  234. package/dist/functional/result/impl/result-is-ok.mjs +0 -22
  235. package/dist/functional/result/impl/result-is-ok.mjs.map +0 -1
  236. package/dist/functional/result/impl/result-is-result.d.mts +0 -22
  237. package/dist/functional/result/impl/result-is-result.d.mts.map +0 -1
  238. package/dist/functional/result/impl/result-is-result.mjs +0 -26
  239. package/dist/functional/result/impl/result-is-result.mjs.map +0 -1
  240. package/dist/functional/result/impl/result-map-err.d.mts +0 -39
  241. package/dist/functional/result/impl/result-map-err.d.mts.map +0 -1
  242. package/dist/functional/result/impl/result-map-err.mjs +0 -22
  243. package/dist/functional/result/impl/result-map-err.mjs.map +0 -1
  244. package/dist/functional/result/impl/result-map.d.mts +0 -39
  245. package/dist/functional/result/impl/result-map.d.mts.map +0 -1
  246. package/dist/functional/result/impl/result-map.mjs +0 -22
  247. package/dist/functional/result/impl/result-map.mjs.map +0 -1
  248. package/dist/functional/result/impl/result-match.d.mts +0 -47
  249. package/dist/functional/result/impl/result-match.d.mts.map +0 -1
  250. package/dist/functional/result/impl/result-match.mjs +0 -20
  251. package/dist/functional/result/impl/result-match.mjs.map +0 -1
  252. package/dist/functional/result/impl/result-ok.d.mts +0 -28
  253. package/dist/functional/result/impl/result-ok.d.mts.map +0 -1
  254. package/dist/functional/result/impl/result-ok.mjs +0 -31
  255. package/dist/functional/result/impl/result-ok.mjs.map +0 -1
  256. package/dist/functional/result/impl/result-or-else.d.mts +0 -40
  257. package/dist/functional/result/impl/result-or-else.d.mts.map +0 -1
  258. package/dist/functional/result/impl/result-or-else.mjs +0 -17
  259. package/dist/functional/result/impl/result-or-else.mjs.map +0 -1
  260. package/dist/functional/result/impl/result-safe-try.d.mts +0 -51
  261. package/dist/functional/result/impl/result-safe-try.d.mts.map +0 -1
  262. package/dist/functional/result/impl/result-safe-try.mjs +0 -35
  263. package/dist/functional/result/impl/result-safe-try.mjs.map +0 -1
  264. package/dist/functional/result/impl/result-safe-unwrap.d.mts +0 -36
  265. package/dist/functional/result/impl/result-safe-unwrap.d.mts.map +0 -1
  266. package/dist/functional/result/impl/result-safe-unwrap.mjs +0 -42
  267. package/dist/functional/result/impl/result-safe-unwrap.mjs.map +0 -1
  268. package/dist/functional/result/impl/result-swap.d.mts +0 -23
  269. package/dist/functional/result/impl/result-swap.d.mts.map +0 -1
  270. package/dist/functional/result/impl/result-swap.mjs +0 -27
  271. package/dist/functional/result/impl/result-swap.mjs.map +0 -1
  272. package/dist/functional/result/impl/result-to-optional.d.mts +0 -32
  273. package/dist/functional/result/impl/result-to-optional.d.mts.map +0 -1
  274. package/dist/functional/result/impl/result-to-optional.mjs +0 -32
  275. package/dist/functional/result/impl/result-to-optional.mjs.map +0 -1
  276. package/dist/functional/result/impl/result-unwrap-err-or.d.mts +0 -33
  277. package/dist/functional/result/impl/result-unwrap-err-or.d.mts.map +0 -1
  278. package/dist/functional/result/impl/result-unwrap-err-or.mjs +0 -17
  279. package/dist/functional/result/impl/result-unwrap-err-or.mjs.map +0 -1
  280. package/dist/functional/result/impl/result-unwrap-err-throw.d.mts +0 -33
  281. package/dist/functional/result/impl/result-unwrap-err-throw.d.mts.map +0 -1
  282. package/dist/functional/result/impl/result-unwrap-err-throw.mjs +0 -46
  283. package/dist/functional/result/impl/result-unwrap-err-throw.mjs.map +0 -1
  284. package/dist/functional/result/impl/result-unwrap-err.d.mts +0 -33
  285. package/dist/functional/result/impl/result-unwrap-err.d.mts.map +0 -1
  286. package/dist/functional/result/impl/result-unwrap-err.mjs +0 -34
  287. package/dist/functional/result/impl/result-unwrap-err.mjs.map +0 -1
  288. package/dist/functional/result/impl/result-unwrap-ok-or.d.mts +0 -33
  289. package/dist/functional/result/impl/result-unwrap-ok-or.d.mts.map +0 -1
  290. package/dist/functional/result/impl/result-unwrap-ok-or.mjs +0 -17
  291. package/dist/functional/result/impl/result-unwrap-ok-or.mjs.map +0 -1
  292. package/dist/functional/result/impl/result-unwrap-ok.d.mts +0 -26
  293. package/dist/functional/result/impl/result-unwrap-ok.d.mts.map +0 -1
  294. package/dist/functional/result/impl/result-unwrap-ok.mjs +0 -8
  295. package/dist/functional/result/impl/result-unwrap-ok.mjs.map +0 -1
  296. package/dist/functional/result/impl/result-unwrap-throw.d.mts +0 -33
  297. package/dist/functional/result/impl/result-unwrap-throw.d.mts.map +0 -1
  298. package/dist/functional/result/impl/result-unwrap-throw.mjs +0 -40
  299. package/dist/functional/result/impl/result-unwrap-throw.mjs.map +0 -1
  300. package/dist/functional/result/impl/result-zip.d.mts +0 -32
  301. package/dist/functional/result/impl/result-zip.d.mts.map +0 -1
  302. package/dist/functional/result/impl/result-zip.mjs +0 -37
  303. package/dist/functional/result/impl/result-zip.mjs.map +0 -1
  304. package/dist/functional/result/impl/tag.d.mts +0 -6
  305. package/dist/functional/result/impl/tag.d.mts.map +0 -1
  306. package/dist/functional/result/impl/tag.mjs +0 -4
  307. package/dist/functional/result/impl/tag.mjs.map +0 -1
  308. package/dist/functional/result/impl/types.d.mts +0 -31
  309. package/dist/functional/result/impl/types.d.mts.map +0 -1
  310. package/dist/functional/result/impl/types.mjs +0 -2
  311. package/dist/functional/result/impl/types.mjs.map +0 -1
  312. package/dist/functional/result/index.d.mts +0 -2
  313. package/dist/functional/result/index.d.mts.map +0 -1
  314. package/dist/functional/result/index.mjs +0 -2
  315. package/dist/functional/result/index.mjs.map +0 -1
  316. package/dist/functional/result/result.d.mts +0 -16
  317. package/dist/functional/result/result.d.mts.map +0 -1
  318. package/dist/functional/result/result.mjs +0 -2
  319. package/dist/functional/result/result.mjs.map +0 -1
  320. package/dist/functional/ternary-result/impl/index.d.mts +0 -29
  321. package/dist/functional/ternary-result/impl/index.d.mts.map +0 -1
  322. package/dist/functional/ternary-result/impl/index.mjs +0 -29
  323. package/dist/functional/ternary-result/impl/index.mjs.map +0 -1
  324. package/dist/functional/ternary-result/impl/tag.d.mts +0 -8
  325. package/dist/functional/ternary-result/impl/tag.d.mts.map +0 -1
  326. package/dist/functional/ternary-result/impl/tag.mjs +0 -6
  327. package/dist/functional/ternary-result/impl/tag.mjs.map +0 -1
  328. package/dist/functional/ternary-result/impl/ternary-result-err.d.mts +0 -16
  329. package/dist/functional/ternary-result/impl/ternary-result-err.d.mts.map +0 -1
  330. package/dist/functional/ternary-result/impl/ternary-result-err.mjs +0 -19
  331. package/dist/functional/ternary-result/impl/ternary-result-err.mjs.map +0 -1
  332. package/dist/functional/ternary-result/impl/ternary-result-expect-to-be.d.mts +0 -24
  333. package/dist/functional/ternary-result/impl/ternary-result-expect-to-be.d.mts.map +0 -1
  334. package/dist/functional/ternary-result/impl/ternary-result-expect-to-be.mjs +0 -21
  335. package/dist/functional/ternary-result/impl/ternary-result-expect-to-be.mjs.map +0 -1
  336. package/dist/functional/ternary-result/impl/ternary-result-flat-map.d.mts +0 -39
  337. package/dist/functional/ternary-result/impl/ternary-result-flat-map.d.mts.map +0 -1
  338. package/dist/functional/ternary-result/impl/ternary-result-flat-map.mjs +0 -38
  339. package/dist/functional/ternary-result/impl/ternary-result-flat-map.mjs.map +0 -1
  340. package/dist/functional/ternary-result/impl/ternary-result-fold.d.mts +0 -30
  341. package/dist/functional/ternary-result/impl/ternary-result-fold.d.mts.map +0 -1
  342. package/dist/functional/ternary-result/impl/ternary-result-fold.mjs +0 -33
  343. package/dist/functional/ternary-result/impl/ternary-result-fold.mjs.map +0 -1
  344. package/dist/functional/ternary-result/impl/ternary-result-from-promise.d.mts +0 -23
  345. package/dist/functional/ternary-result/impl/ternary-result-from-promise.d.mts.map +0 -1
  346. package/dist/functional/ternary-result/impl/ternary-result-from-promise.mjs +0 -23
  347. package/dist/functional/ternary-result/impl/ternary-result-from-promise.mjs.map +0 -1
  348. package/dist/functional/ternary-result/impl/ternary-result-from-throwable.d.mts +0 -20
  349. package/dist/functional/ternary-result/impl/ternary-result-from-throwable.d.mts.map +0 -1
  350. package/dist/functional/ternary-result/impl/ternary-result-from-throwable.mjs +0 -33
  351. package/dist/functional/ternary-result/impl/ternary-result-from-throwable.mjs.map +0 -1
  352. package/dist/functional/ternary-result/impl/ternary-result-is-err.d.mts +0 -21
  353. package/dist/functional/ternary-result/impl/ternary-result-is-err.d.mts.map +0 -1
  354. package/dist/functional/ternary-result/impl/ternary-result-is-err.mjs +0 -20
  355. package/dist/functional/ternary-result/impl/ternary-result-is-err.mjs.map +0 -1
  356. package/dist/functional/ternary-result/impl/ternary-result-is-ok.d.mts +0 -23
  357. package/dist/functional/ternary-result/impl/ternary-result-is-ok.d.mts.map +0 -1
  358. package/dist/functional/ternary-result/impl/ternary-result-is-ok.mjs +0 -22
  359. package/dist/functional/ternary-result/impl/ternary-result-is-ok.mjs.map +0 -1
  360. package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.d.mts +0 -22
  361. package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.d.mts.map +0 -1
  362. package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.mjs +0 -28
  363. package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.mjs.map +0 -1
  364. package/dist/functional/ternary-result/impl/ternary-result-is-warn.d.mts +0 -22
  365. package/dist/functional/ternary-result/impl/ternary-result-is-warn.d.mts.map +0 -1
  366. package/dist/functional/ternary-result/impl/ternary-result-is-warn.mjs +0 -21
  367. package/dist/functional/ternary-result/impl/ternary-result-is-warn.mjs.map +0 -1
  368. package/dist/functional/ternary-result/impl/ternary-result-map-err.d.mts +0 -27
  369. package/dist/functional/ternary-result/impl/ternary-result-map-err.d.mts.map +0 -1
  370. package/dist/functional/ternary-result/impl/ternary-result-map-err.mjs +0 -23
  371. package/dist/functional/ternary-result/impl/ternary-result-map-err.mjs.map +0 -1
  372. package/dist/functional/ternary-result/impl/ternary-result-map-warn.d.mts +0 -28
  373. package/dist/functional/ternary-result/impl/ternary-result-map-warn.d.mts.map +0 -1
  374. package/dist/functional/ternary-result/impl/ternary-result-map-warn.mjs +0 -26
  375. package/dist/functional/ternary-result/impl/ternary-result-map-warn.mjs.map +0 -1
  376. package/dist/functional/ternary-result/impl/ternary-result-map.d.mts +0 -36
  377. package/dist/functional/ternary-result/impl/ternary-result-map.d.mts.map +0 -1
  378. package/dist/functional/ternary-result/impl/ternary-result-map.mjs +0 -32
  379. package/dist/functional/ternary-result/impl/ternary-result-map.mjs.map +0 -1
  380. package/dist/functional/ternary-result/impl/ternary-result-ok.d.mts +0 -17
  381. package/dist/functional/ternary-result/impl/ternary-result-ok.d.mts.map +0 -1
  382. package/dist/functional/ternary-result/impl/ternary-result-ok.mjs +0 -20
  383. package/dist/functional/ternary-result/impl/ternary-result-ok.mjs.map +0 -1
  384. package/dist/functional/ternary-result/impl/ternary-result-or-else.d.mts +0 -29
  385. package/dist/functional/ternary-result/impl/ternary-result-or-else.d.mts.map +0 -1
  386. package/dist/functional/ternary-result/impl/ternary-result-or-else.mjs +0 -16
  387. package/dist/functional/ternary-result/impl/ternary-result-or-else.mjs.map +0 -1
  388. package/dist/functional/ternary-result/impl/ternary-result-to-optional.d.mts +0 -23
  389. package/dist/functional/ternary-result/impl/ternary-result-to-optional.d.mts.map +0 -1
  390. package/dist/functional/ternary-result/impl/ternary-result-to-optional.mjs +0 -26
  391. package/dist/functional/ternary-result/impl/ternary-result-to-optional.mjs.map +0 -1
  392. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-or.d.mts +0 -28
  393. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-or.d.mts.map +0 -1
  394. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-or.mjs +0 -14
  395. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-or.mjs.map +0 -1
  396. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-throw.d.mts +0 -20
  397. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-throw.d.mts.map +0 -1
  398. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-throw.mjs +0 -34
  399. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-throw.mjs.map +0 -1
  400. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err.d.mts +0 -20
  401. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err.d.mts.map +0 -1
  402. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err.mjs +0 -21
  403. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err.mjs.map +0 -1
  404. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok-or.d.mts +0 -25
  405. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok-or.d.mts.map +0 -1
  406. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok-or.mjs +0 -14
  407. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok-or.mjs.map +0 -1
  408. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok.d.mts +0 -20
  409. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok.d.mts.map +0 -1
  410. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok.mjs +0 -10
  411. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok.mjs.map +0 -1
  412. package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.d.mts +0 -21
  413. package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.d.mts.map +0 -1
  414. package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.mjs +0 -35
  415. package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.mjs.map +0 -1
  416. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-or.d.mts +0 -22
  417. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-or.d.mts.map +0 -1
  418. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-or.mjs +0 -14
  419. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-or.mjs.map +0 -1
  420. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.d.mts +0 -20
  421. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.d.mts.map +0 -1
  422. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.mjs +0 -30
  423. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.mjs.map +0 -1
  424. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn.d.mts +0 -20
  425. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn.d.mts.map +0 -1
  426. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn.mjs +0 -21
  427. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn.mjs.map +0 -1
  428. package/dist/functional/ternary-result/impl/ternary-result-warn.d.mts +0 -19
  429. package/dist/functional/ternary-result/impl/ternary-result-warn.d.mts.map +0 -1
  430. package/dist/functional/ternary-result/impl/ternary-result-warn.mjs +0 -23
  431. package/dist/functional/ternary-result/impl/ternary-result-warn.mjs.map +0 -1
  432. package/dist/functional/ternary-result/impl/ternary-result-zip.d.mts +0 -34
  433. package/dist/functional/ternary-result/impl/ternary-result-zip.d.mts.map +0 -1
  434. package/dist/functional/ternary-result/impl/ternary-result-zip.mjs +0 -52
  435. package/dist/functional/ternary-result/impl/ternary-result-zip.mjs.map +0 -1
  436. package/dist/functional/ternary-result/impl/types.d.mts +0 -26
  437. package/dist/functional/ternary-result/impl/types.d.mts.map +0 -1
  438. package/dist/functional/ternary-result/impl/types.mjs +0 -2
  439. package/dist/functional/ternary-result/impl/types.mjs.map +0 -1
  440. package/dist/functional/ternary-result/impl/variant-name.d.mts +0 -4
  441. package/dist/functional/ternary-result/impl/variant-name.d.mts.map +0 -1
  442. package/dist/functional/ternary-result/impl/variant-name.mjs +0 -13
  443. package/dist/functional/ternary-result/impl/variant-name.mjs.map +0 -1
  444. package/dist/functional/ternary-result/index.d.mts +0 -2
  445. package/dist/functional/ternary-result/index.d.mts.map +0 -1
  446. package/dist/functional/ternary-result/index.mjs +0 -2
  447. package/dist/functional/ternary-result/index.mjs.map +0 -1
  448. package/dist/functional/ternary-result/ternary-result.d.mts +0 -40
  449. package/dist/functional/ternary-result/ternary-result.d.mts.map +0 -1
  450. package/dist/functional/ternary-result/ternary-result.mjs +0 -2
  451. package/dist/functional/ternary-result/ternary-result.mjs.map +0 -1
  452. package/src/functional/async-result/async-result.mts +0 -17
  453. package/src/functional/async-result/impl/async-result-flat-map.mts +0 -99
  454. package/src/functional/async-result/impl/async-result-from-promise.mts +0 -69
  455. package/src/functional/async-result/impl/async-result-from-throwable.mts +0 -78
  456. package/src/functional/async-result/impl/async-result-map-err.mts +0 -84
  457. package/src/functional/async-result/impl/async-result-map.mts +0 -94
  458. package/src/functional/async-result/impl/async-result-unwrap-or.mts +0 -42
  459. package/src/functional/async-result/impl/index.mts +0 -7
  460. package/src/functional/async-result/impl/types.mts +0 -51
  461. package/src/functional/async-result/index.mts +0 -1
  462. package/src/functional/async-result.test.mts +0 -291
  463. package/src/functional/match.mts +0 -193
  464. package/src/functional/match.test.mts +0 -180
  465. package/src/functional/optional/impl/index.mts +0 -18
  466. package/src/functional/optional/impl/optional-expect-to-be.mts +0 -75
  467. package/src/functional/optional/impl/optional-filter.mts +0 -78
  468. package/src/functional/optional/impl/optional-flat-map.mts +0 -75
  469. package/src/functional/optional/impl/optional-from-nullable.mts +0 -31
  470. package/src/functional/optional/impl/optional-is-none.mts +0 -26
  471. package/src/functional/optional/impl/optional-is-optional.mts +0 -30
  472. package/src/functional/optional/impl/optional-is-some.mts +0 -27
  473. package/src/functional/optional/impl/optional-map.mts +0 -90
  474. package/src/functional/optional/impl/optional-match.mts +0 -108
  475. package/src/functional/optional/impl/optional-none.mts +0 -20
  476. package/src/functional/optional/impl/optional-or-else.mts +0 -83
  477. package/src/functional/optional/impl/optional-some.mts +0 -27
  478. package/src/functional/optional/impl/optional-to-nullable.mts +0 -34
  479. package/src/functional/optional/impl/optional-unwrap-or.mts +0 -70
  480. package/src/functional/optional/impl/optional-unwrap-throw.mts +0 -41
  481. package/src/functional/optional/impl/optional-unwrap.mts +0 -45
  482. package/src/functional/optional/impl/optional-zip.mts +0 -44
  483. package/src/functional/optional/impl/tag.mts +0 -8
  484. package/src/functional/optional/impl/types.mts +0 -31
  485. package/src/functional/optional/index.mts +0 -1
  486. package/src/functional/optional/optional.mts +0 -19
  487. package/src/functional/optional.test.mts +0 -883
  488. package/src/functional/pipe.mts +0 -180
  489. package/src/functional/pipe.test.mts +0 -155
  490. package/src/functional/result/impl/index.mts +0 -27
  491. package/src/functional/result/impl/result-err.mts +0 -33
  492. package/src/functional/result/impl/result-expect-to-be.mts +0 -73
  493. package/src/functional/result/impl/result-flat-map.mts +0 -88
  494. package/src/functional/result/impl/result-fold.mts +0 -102
  495. package/src/functional/result/impl/result-from-optional.mts +0 -80
  496. package/src/functional/result/impl/result-from-promise.mts +0 -51
  497. package/src/functional/result/impl/result-from-throwable.mts +0 -48
  498. package/src/functional/result/impl/result-is-err.mts +0 -26
  499. package/src/functional/result/impl/result-is-ok.mts +0 -26
  500. package/src/functional/result/impl/result-is-result.mts +0 -28
  501. package/src/functional/result/impl/result-map-err.mts +0 -96
  502. package/src/functional/result/impl/result-map.mts +0 -96
  503. package/src/functional/result/impl/result-match.mts +0 -108
  504. package/src/functional/result/impl/result-ok.mts +0 -33
  505. package/src/functional/result/impl/result-or-else.mts +0 -73
  506. package/src/functional/result/impl/result-safe-try.mts +0 -110
  507. package/src/functional/result/impl/result-safe-unwrap.mts +0 -50
  508. package/src/functional/result/impl/result-swap.mts +0 -31
  509. package/src/functional/result/impl/result-to-optional.mts +0 -37
  510. package/src/functional/result/impl/result-unwrap-err-or.mts +0 -66
  511. package/src/functional/result/impl/result-unwrap-err-throw.mts +0 -56
  512. package/src/functional/result/impl/result-unwrap-err.mts +0 -38
  513. package/src/functional/result/impl/result-unwrap-ok-or.mts +0 -66
  514. package/src/functional/result/impl/result-unwrap-ok.mts +0 -39
  515. package/src/functional/result/impl/result-unwrap-throw.mts +0 -46
  516. package/src/functional/result/impl/result-zip.mts +0 -42
  517. package/src/functional/result/impl/tag.mts +0 -8
  518. package/src/functional/result/impl/types.mts +0 -38
  519. package/src/functional/result/index.mts +0 -1
  520. package/src/functional/result/result.mts +0 -19
  521. package/src/functional/result.test.mts +0 -1349
  522. package/src/functional/ternary-result/impl/index.mts +0 -28
  523. package/src/functional/ternary-result/impl/tag.mts +0 -17
  524. package/src/functional/ternary-result/impl/ternary-result-err.mts +0 -21
  525. package/src/functional/ternary-result/impl/ternary-result-expect-to-be.mts +0 -65
  526. package/src/functional/ternary-result/impl/ternary-result-flat-map.mts +0 -112
  527. package/src/functional/ternary-result/impl/ternary-result-fold.mts +0 -102
  528. package/src/functional/ternary-result/impl/ternary-result-from-promise.mts +0 -30
  529. package/src/functional/ternary-result/impl/ternary-result-from-throwable.mts +0 -36
  530. package/src/functional/ternary-result/impl/ternary-result-is-err.mts +0 -24
  531. package/src/functional/ternary-result/impl/ternary-result-is-ok.mts +0 -26
  532. package/src/functional/ternary-result/impl/ternary-result-is-ternary-result.mts +0 -32
  533. package/src/functional/ternary-result/impl/ternary-result-is-warn.mts +0 -25
  534. package/src/functional/ternary-result/impl/ternary-result-map-err.mts +0 -74
  535. package/src/functional/ternary-result/impl/ternary-result-map-warn.mts +0 -79
  536. package/src/functional/ternary-result/impl/ternary-result-map.mts +0 -95
  537. package/src/functional/ternary-result/impl/ternary-result-ok.mts +0 -22
  538. package/src/functional/ternary-result/impl/ternary-result-or-else.mts +0 -72
  539. package/src/functional/ternary-result/impl/ternary-result-to-optional.mts +0 -31
  540. package/src/functional/ternary-result/impl/ternary-result-unwrap-err-or.mts +0 -54
  541. package/src/functional/ternary-result/impl/ternary-result-unwrap-err-throw.mts +0 -42
  542. package/src/functional/ternary-result/impl/ternary-result-unwrap-err.mts +0 -25
  543. package/src/functional/ternary-result/impl/ternary-result-unwrap-ok-or.mts +0 -51
  544. package/src/functional/ternary-result/impl/ternary-result-unwrap-ok.mts +0 -39
  545. package/src/functional/ternary-result/impl/ternary-result-unwrap-throw.mts +0 -48
  546. package/src/functional/ternary-result/impl/ternary-result-unwrap-warn-or.mts +0 -48
  547. package/src/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.mts +0 -40
  548. package/src/functional/ternary-result/impl/ternary-result-unwrap-warn.mts +0 -25
  549. package/src/functional/ternary-result/impl/ternary-result-warn.mts +0 -28
  550. package/src/functional/ternary-result/impl/ternary-result-zip.mts +0 -61
  551. package/src/functional/ternary-result/impl/types.mts +0 -46
  552. package/src/functional/ternary-result/impl/variant-name.mts +0 -18
  553. package/src/functional/ternary-result/index.mts +0 -1
  554. package/src/functional/ternary-result/ternary-result.mts +0 -50
  555. package/src/functional/ternary-result.test.mts +0 -310
  556. package/src/guard/has-key.test.mts +0 -111
  557. package/src/guard/is-non-null-object.test.mts +0 -109
  558. package/src/guard/is-record.test.mts +0 -195
  559. package/src/guard/key-is-in.test.mts +0 -21
  560. package/src/others/unknown-to-string.test.mts +0 -295
@@ -1,6 +1,31 @@
1
- export * from './async-result/index.mjs';
2
- export * from './match.mjs';
3
- export * from './optional/index.mjs';
4
- export * from './pipe.mjs';
5
- export * from './result/index.mjs';
6
- export * from './ternary-result/index.mjs';
1
+ /**
2
+ * The algebraic data type core. The implementation lives in ts-std-forge
3
+ * since Sumi D-49 reversed the dependency between the two packages; what
4
+ * remains here is the re-export that keeps `import { Result } from
5
+ * 'ts-data-forge'` working. Both names denote the same declarations, so a
6
+ * value built through either package is the same type to both.
7
+ *
8
+ * New code should import these from `ts-std-forge` directly.
9
+ */
10
+ export {
11
+ AsyncResult,
12
+ Optional,
13
+ Result,
14
+ TernaryResult,
15
+ match,
16
+ pipe,
17
+ } from 'ts-std-forge';
18
+
19
+ export type {
20
+ Err,
21
+ None,
22
+ Ok,
23
+ Pipe,
24
+ Some,
25
+ TernaryErr,
26
+ TernaryOk,
27
+ TernaryWarn,
28
+ UnknownOptional,
29
+ UnknownResult,
30
+ UnknownTernaryResult,
31
+ } from 'ts-std-forge';
@@ -1,72 +1,2 @@
1
- import { type ReadonlyRecord, type UnknownRecord } from 'ts-type-forge';
2
-
3
- /**
4
- * Type guard function that checks if an object has a specific key as its own
5
- * property.
6
- *
7
- * This function uses `Object.hasOwn()` to check if the given object has the
8
- * specified key as its own property (not inherited). It acts as a type guard
9
- * that narrows the type of the object to guarantee the key exists, enabling
10
- * type-safe property access.
11
- *
12
- * **Type Narrowing Behavior:**
13
- *
14
- * - When the guard returns `true`, TypeScript narrows the object type to include
15
- * the checked key
16
- * - For union types, only union members that contain the key are preserved
17
- * - The key's value type is preserved from the original object type when possible
18
- *
19
- * @example
20
- *
21
- * ```ts
22
- * const maybeUser: Readonly<{ id?: number; name?: string }> = {
23
- * id: 42,
24
- * } as const;
25
- *
26
- * if (hasKey(maybeUser, 'id')) {
27
- * // `maybeUser` is now known to have an `id` property.
28
- * assert.isTrue(maybeUser.id === 42);
29
- * } else {
30
- * assert.fail();
31
- * }
32
- * ```
33
- *
34
- * @template R - The type of the input object, must extend UnknownRecord
35
- * @template K - The type of the key to check for, must extend PropertyKey
36
- * (string | number | symbol)
37
- * @param obj - The object to check for the presence of the key
38
- * @param key - The key to check for in the object
39
- * @returns `true` if the object has the specified key as its own property,
40
- * `false` otherwise. When `true`, TypeScript narrows the object type to
41
- * guarantee the key exists.
42
- * @see {@link keyIsIn} - Similar function that narrows the key type instead of the object type
43
- */
44
- export const hasKey = <
45
- const R extends UnknownRecord,
46
- const K extends PropertyKey,
47
- >(
48
- obj: R,
49
- key: K,
50
- ): obj is HasKeyReturnType<R, K> => Object.hasOwn(obj, key);
51
-
52
- /**
53
- * @internal
54
- * When R is a union type (including the case with only one element), if any element in the union
55
- * contains K as a key, returns a type that narrows the union to only those elements that contain K as a key.
56
- * If none of the elements in the union contain K as a key, returns `ReadonlyRecord<K, unknown>`.
57
- * The result is made readonly.
58
- */
59
- export type HasKeyReturnType<
60
- R extends UnknownRecord,
61
- K extends PropertyKey,
62
- > = R extends R // union distribution
63
- ? K extends keyof R
64
- ? string extends keyof R
65
- ? ReadonlyRecord<K, R[keyof R]> & R
66
- : number extends keyof R
67
- ? ReadonlyRecord<K, R[keyof R]> & R
68
- : symbol extends keyof R
69
- ? ReadonlyRecord<K, R[keyof R]> & R
70
- : R
71
- : never // omit union member that does not have key K
72
- : never; // dummy case for union distribution
1
+ /** Implemented in ts-std-forge since Sumi D-49; re-exported here. */
2
+ export { hasKey, type HasKeyReturnType } from 'ts-std-forge';
@@ -1,36 +1,2 @@
1
- /**
2
- * Type guard that checks if a value is a non-null object.
3
- *
4
- * This function checks if a value has type `"object"` according to the `typeof`
5
- * operator and is not `null`. This includes all object types such as plain
6
- * objects, arrays, dates, regular expressions, and other object instances, but
7
- * excludes functions.
8
- *
9
- * **Type Narrowing Behavior:**
10
- *
11
- * - Narrows `unknown` to `object`
12
- * - Excludes `null`, `undefined`, and all primitive types
13
- * - Excludes functions (they have `typeof` === `"function"`, not `"object"`)
14
- * - Includes arrays, dates, regex, and other object instances
15
- *
16
- * **Note:** This function returns `true` for arrays. If you need
17
- * record-oriented narrowing that excludes arrays, use `isRecord()` instead.
18
- *
19
- * @example
20
- *
21
- * ```ts
22
- * const mixed: readonly unknown[] = [{ id: 1 }, null, 'Ada'] as const;
23
- *
24
- * const objects = mixed.filter(isNonNullObject);
25
- *
26
- * assert.deepStrictEqual(objects, [{ id: 1 }]);
27
- * ```
28
- *
29
- * @param u - The value to check
30
- * @returns `true` if `u` is an object and not `null`, `false` otherwise. When
31
- * `true`, TypeScript narrows the type to `object`.
32
- * @see {@link isRecord} - For record-oriented type narrowing (excludes arrays)
33
- */
34
- // eslint-disable-next-line @typescript-eslint/no-restricted-types
35
- export const isNonNullObject = (u: unknown): u is object =>
36
- typeof u === 'object' && u !== null;
1
+ /** Implemented in ts-std-forge since Sumi D-49; re-exported here. */
2
+ export { isNonNullObject } from 'ts-std-forge';
@@ -1,95 +1,2 @@
1
- import { type MutableRecord, type UnknownRecord } from 'ts-type-forge';
2
- import { isNonNullObject } from './is-non-null-object.mjs';
3
-
4
- /**
5
- * Type guard that checks if a value is a record — a non-null, non-array
6
- * object — and narrows it to `UnknownRecord` (= `ReadonlyRecord<string,
7
- * unknown>`).
8
- *
9
- * This function is designed to be combined with {@link hasKey} to probe
10
- * values of type `unknown` (e.g. parsed JSON, caught errors, external data)
11
- * in a type-safe way: `if (isRecord(u) && hasKey(u, 'some-key')) { ... }`.
12
- *
13
- * **Type Narrowing Behavior:**
14
- *
15
- * - Narrows `unknown` to `UnknownRecord` (= `ReadonlyRecord<string, unknown>`)
16
- * - Excludes `null`, `undefined`, primitives, and functions
17
- * - Excludes arrays: arrays have no string index signature, so they are not
18
- * assignable to `UnknownRecord`; admitting them at runtime would be
19
- * inconsistent with the narrowed type
20
- * - Returns `true` for every other non-null object, including dictionary
21
- * objects created with `Object.create(null)` and instances such as `Date`,
22
- * `RegExp`, `Map`, `Set`, `Error`, and user-defined classes
23
- *
24
- * **Why non-plain objects are included:** since every property of
25
- * `UnknownRecord` is typed `unknown`, reading properties from any object
26
- * through this narrowing is type-safe, and `hasKey` (backed by
27
- * `Object.hasOwn`) answers own-property questions correctly on any object
28
- * (e.g. `Map` entries are not own properties, so `hasKey` correctly returns
29
- * `false` for them). Restricting the guard to plain objects would require
30
- * prototype checks that misjudge cross-realm objects and would prevent
31
- * probing useful instances such as `Error` subclasses.
32
- *
33
- * **Implementation:** `isNonNullObject(u) && !Array.isArray(u)`.
34
- *
35
- * @example
36
- *
37
- * ```ts
38
- * const entries: readonly unknown[] = [
39
- * { id: 1 },
40
- * [1, 2],
41
- * 'str',
42
- * 0,
43
- * null,
44
- * ] as const;
45
- *
46
- * const records = entries.filter(isRecord);
47
- *
48
- * assert.deepStrictEqual(records, [{ id: 1 }]);
49
- * ```
50
- *
51
- * @param u - The value to check
52
- * @returns `true` if `u` is a non-null, non-array object, `false` otherwise.
53
- * When `true`, TypeScript narrows the type to `UnknownRecord`.
54
- * @see {@link isNonNullObject} - For checking any non-null object (includes arrays)
55
- * @see {@link hasKey} - For checking if a record has specific keys
56
- */
57
- export const isRecord = (u: unknown): u is UnknownRecord =>
58
- isNonNullObject(u) && !Array.isArray(u);
59
-
60
- /**
61
- * Type guard that checks if a value is a mutable record.
62
- *
63
- * This function has the same runtime behavior as {@link isRecord} (non-null,
64
- * non-array object check), but narrows the type to `MutableRecord<string,
65
- * unknown>`, which is useful when you need to add or overwrite properties on
66
- * the narrowed object.
67
- *
68
- * **Type Narrowing Behavior:**
69
- *
70
- * - Narrows `unknown` to `MutableRecord<string, unknown>`
71
- * - Excludes `null`, `undefined`, primitives, functions, and arrays
72
- * - Returns `true` for every other non-null object (see {@link isRecord} for
73
- * details on non-plain objects such as `Date`, `Map`, and `Set`)
74
- *
75
- * **Implementation:** This is a type alias for {@link isRecord}.
76
- *
77
- * @example
78
- *
79
- * ```ts
80
- * const obj: unknown = { foo: 1 } as const;
81
- *
82
- * if (isMutableRecord(obj)) {
83
- * obj['bar'] = 2; // Safe: obj is now known to be a mutable record
84
- * }
85
- * ```
86
- *
87
- * @param u - The value to check
88
- * @returns `true` if `u` is a non-null, non-array object, `false` otherwise.
89
- * When `true`, TypeScript narrows the type to `MutableRecord<string,
90
- * unknown>`.
91
- * @see {@link isRecord} - For the underlying implementation and more details
92
- */
93
- export const isMutableRecord: (
94
- u: unknown,
95
- ) => u is MutableRecord<string, unknown> = isRecord;
1
+ /** Implemented in ts-std-forge since Sumi D-49; re-exported here. */
2
+ export { isMutableRecord, isRecord } from 'ts-std-forge';
@@ -1,49 +1,2 @@
1
- import { type UnknownRecord } from 'ts-type-forge';
2
-
3
- /**
4
- * Type guard that checks if a key exists as an own property in an object.
5
- *
6
- * This function is similar to `hasKey()` but with reversed parameter order and
7
- * different type narrowing behavior. While `hasKey()` narrows the object type,
8
- * `keyIsIn()` narrows the key type to be a valid key of the given object.
9
- *
10
- * **Type Narrowing Behavior:**
11
- *
12
- * - Narrows the key type to be a key that exists in the object (`K & keyof R`)
13
- * - Useful when you have a dynamic key and want to ensure it's valid for a
14
- * specific object
15
- * - The object type remains unchanged
16
- *
17
- * **Implementation:** Uses `Object.hasOwn()` to check for own properties (not
18
- * inherited).
19
- *
20
- * @example
21
- *
22
- * ```ts
23
- * const user = { id: 1, name: 'Ada' } as const;
24
- *
25
- * const maybeKey: string = 'name';
26
- *
27
- * if (keyIsIn(maybeKey, user)) {
28
- * assert.isTrue(user[maybeKey] === 'Ada');
29
- * } else {
30
- * assert.fail();
31
- * }
32
- * ```
33
- *
34
- * @template K - The type of the key to check, must extend PropertyKey (string |
35
- * number | symbol)
36
- * @template R - The type of the record (object), must extend UnknownRecord
37
- * @param key - The key to check for
38
- * @param obj - The object to check within
39
- * @returns `true` if `key` is an own property of `obj`, `false` otherwise. When
40
- * `true`, TypeScript narrows the key type to be a valid key of the object.
41
- * @see {@link hasKey} - Similar function that narrows the object type instead of the key type
42
- */
43
- export const keyIsIn = <
44
- const K extends PropertyKey,
45
- const R extends UnknownRecord,
46
- >(
47
- key: K,
48
- obj: R,
49
- ): key is K & keyof typeof obj => Object.hasOwn(obj, key);
1
+ /** Implemented in ts-std-forge since Sumi D-49; re-exported here. */
2
+ export { keyIsIn } from 'ts-std-forge';
@@ -1,3 +1,4 @@
1
+ import { SafeNumber } from 'ts-std-forge';
1
2
  import {
2
3
  type Decrement,
3
4
  type FiniteNumber,
@@ -118,25 +119,34 @@ export namespace Num {
118
119
  * assert.isTrue(Result.isErr(Num.safeParseInt('')));
119
120
  *
120
121
  * assert.strictEqual(Result.unwrapOk(Num.safeParseInt(' ')), undefined);
122
+ *
123
+ * // A value that overflows to Infinity is not an integer either, even
124
+ * // though native `parseInt` reads a 1 out of it.
125
+ *
126
+ * assert.strictEqual(Number.parseInt('1e400', 10), 1);
127
+ *
128
+ * assert.isTrue(Result.isErr(Num.safeParseInt('1e400')));
121
129
  * ```
122
130
  *
123
131
  * @param s The string to parse.
124
132
  * @returns `Result.ok(parsedInt)` for valid input, otherwise `Result.err`
125
- * wrapping an `Error` describing the invalid input.
133
+ * wrapping an `Error` describing the invalid input. A value that
134
+ * overflows to `Infinity` is rejected, so the `Int` brand never lies.
126
135
  */
127
- export const safeParseInt = (s: string): Result<Int, Error> => {
128
- const viaNumber = Number(s);
129
-
130
- // `Number('')` / `Number(' ')` は 0 を返すが、`parseInt` は NaN を返す。
131
- // 末尾不正文字 ('12abc' 等) は `Number` 側が NaN にするので、両者が共に
132
- // 有効な場合のみ採用することで空文字・空白のみ・末尾不正をまとめて弾く。
133
- return Number.isNaN(viaNumber) || Number.isNaN(Number.parseInt(s, 10))
134
- ? Result.err(
136
+ export const safeParseInt = (s: string): Result<Int, Error> =>
137
+ // The parsing itself is `SafeNumber.parseInteger` (Sumi D-49 (c)): one
138
+ // implementation, in the package that owns the standard-library
139
+ // boundary. What stays here is this function's own contract — the `Int`
140
+ // brand on the success side, and an `Error` rather than a tagged record
141
+ // on the failure side.
142
+ Result.match(SafeNumber.parseInteger(s), {
143
+ // eslint-disable-next-line total-functions/no-unsafe-type-assertion
144
+ ok: (n) => Result.ok(n as Int),
145
+ err: () =>
146
+ Result.err(
135
147
  new Error(`safeParseInt: "${s}" is not a valid base-10 integer`),
136
- )
137
- : // eslint-disable-next-line total-functions/no-unsafe-type-assertion
138
- Result.ok(Math.trunc(viaNumber) as Int);
139
- };
148
+ ),
149
+ });
140
150
 
141
151
  /**
142
152
  * Safely parses a finite floating-point number from a string, returning a
@@ -201,22 +211,20 @@ export namespace Num {
201
211
  * @returns `Result.ok(parsedFloat)` for valid finite input, otherwise
202
212
  * `Result.err` wrapping an `Error` describing the invalid input.
203
213
  */
204
- export const safeParseFloat = (s: string): Result<FiniteNumber, Error> => {
205
- const viaNumber = Number(s);
206
-
207
- // `Number('')` / `Number(' ')` は 0 を返すが、`parseFloat` は NaN を返す。
208
- // 末尾不正文字 ('12abc' 等) は `Number` 側が NaN にするので、両者が共に
209
- // 非 NaN かつ有限の場合のみ採用することで空文字・空白のみ・末尾不正・
210
- // Infinity をまとめて弾く。
211
- return Number.isNaN(viaNumber) ||
212
- !Number.isFinite(viaNumber) ||
213
- Number.isNaN(Number.parseFloat(s))
214
- ? Result.err(
214
+ export const safeParseFloat = (s: string): Result<FiniteNumber, Error> =>
215
+ // The parsing itself is `SafeNumber.parse` (Sumi D-49 (c)): one
216
+ // implementation, in the package that owns the standard-library
217
+ // boundary. What stays here is this function's own contract — the
218
+ // `FiniteNumber` brand on the success side, and an `Error` rather than a
219
+ // tagged record on the failure side.
220
+ Result.match(SafeNumber.parse(s), {
221
+ // eslint-disable-next-line total-functions/no-unsafe-type-assertion
222
+ ok: (n) => Result.ok(n as FiniteNumber),
223
+ err: () =>
224
+ Result.err(
215
225
  new Error(`safeParseFloat: "${s}" is not a valid finite number`),
216
- )
217
- : // eslint-disable-next-line total-functions/no-unsafe-type-assertion
218
- Result.ok(viaNumber as FiniteNumber);
219
- };
226
+ ),
227
+ });
220
228
 
221
229
  /**
222
230
  * Type guard that checks if a number is non-zero.
@@ -5,5 +5,6 @@ export * from './fast-deep-equal.mjs';
5
5
  export * from './if-then.mjs';
6
6
  export * from './map-nullable.mjs';
7
7
  export * from './memoize-function.mjs';
8
+ export * from './panic-error.mjs';
8
9
  export * from './tuple.mjs';
9
10
  export * from './unknown-to-string.mjs';
@@ -0,0 +1,8 @@
1
+ /**
2
+ * The panic error. Implemented in ts-std-forge since Sumi D-49 / D-53; this
3
+ * re-export keeps the names importable from here. The boundary functions of
4
+ * this package recognize a panic through `isPanicError`, which matches on a
5
+ * mark rather than on a constructor, so a panic raised by either package is a
6
+ * panic to both.
7
+ */
8
+ export { createPanicError, isPanicError, type PanicError } from 'ts-std-forge';
@@ -1,111 +1,2 @@
1
- import { isDate, isError, isMap, isRegExp, isSet } from '@sindresorhus/is';
2
-
3
- /**
4
- * Converts an unknown value to its string representation in a type-safe manner.
5
- *
6
- * This function handles all JavaScript types and provides consistent string
7
- * conversion with proper error handling for edge cases like circular
8
- * references. Unlike naive toString() calls, this function never throws and
9
- * handles all value types gracefully.
10
- *
11
- * **Type conversion rules:**
12
- *
13
- * - Strings: returned as-is
14
- * - Numbers, booleans, bigints: converted via toString()
15
- * - Symbols: converted to their description string
16
- * - Functions: converted to their string representation
17
- * - null: returns "null" (not "null" from JSON)
18
- * - undefined: returns "undefined"
19
- * - Date: converted to ISO string
20
- * - RegExp: converted to regex literal string
21
- * - Map: converted to Map representation with entries
22
- * - Set: converted to Set representation with values
23
- * - Error: returns error message
24
- * - Objects: JSON stringified (with optional pretty printing)
25
- *
26
- * @param value - The unknown value to convert to string
27
- * @param options - Optional configuration for the conversion
28
- * @param options.prettyPrintObject - If true, objects are formatted with
29
- * 2-space indentation
30
- * @returns The string representation of the value. For circular references or
31
- * non-serializable objects, returns an error message string
32
- *
33
- * **Error Handling:** Circular references and non-serializable objects return
34
- * descriptive error messages instead of throwing
35
- * @see JSON.stringify - Underlying serialization for objects
36
- */
37
- export const unknownToString = (
38
- value: unknown,
39
- options?: Partial<Readonly<{ prettyPrintObject: boolean }>>,
40
- ): string => {
41
- switch (typeof value) {
42
- case 'string':
43
- return value;
44
-
45
- case 'bigint':
46
- return `${value.toString()}n`;
47
-
48
- case 'number':
49
- case 'boolean':
50
- case 'symbol':
51
- case 'function':
52
- return value.toString();
53
-
54
- case 'undefined':
55
- return 'undefined';
56
-
57
- case 'object': {
58
- if (value === null) {
59
- return 'null';
60
- }
61
-
62
- try {
63
- // Special handling for Date
64
- if (isDate(value)) {
65
- return value.toISOString();
66
- }
67
-
68
- // Special handling for RegExp
69
- if (isRegExp(value)) {
70
- return value.toString();
71
- }
72
-
73
- if (isError(value)) {
74
- return value.message;
75
- }
76
-
77
- const prettyPrintObject = options?.prettyPrintObject === true;
78
-
79
- // Special handling for Map
80
- if (isMap(value)) {
81
- const entries = Array.from(value);
82
-
83
- const entriesStr = prettyPrintObject
84
- ? JSON.stringify(entries, undefined, 2)
85
- : JSON.stringify(entries);
86
-
87
- return `Map(${entriesStr})`;
88
- }
89
-
90
- // Special handling for Set
91
- if (isSet(value)) {
92
- const values = Array.from(value);
93
-
94
- const valuesStr = prettyPrintObject
95
- ? JSON.stringify(values, undefined, 2)
96
- : JSON.stringify(values);
97
-
98
- return `Set(${valuesStr})`;
99
- }
100
-
101
- return prettyPrintObject
102
- ? JSON.stringify(value, undefined, 2)
103
- : JSON.stringify(value);
104
- } catch (error) {
105
- return isError(error)
106
- ? error.message
107
- : '[Circular or Non-serializable]';
108
- }
109
- }
110
- }
111
- };
1
+ /** Implemented in ts-std-forge since Sumi D-49; re-exported here. */
2
+ export { unknownToString } from 'ts-std-forge';
package/src/types.mts CHANGED
@@ -75,57 +75,7 @@ export namespace SizeType {
75
75
  >;
76
76
  }
77
77
 
78
- // #region Optional
79
- /**
80
- * Represents the 'Some' variant of an Optional, containing a value.
81
- *
82
- * @template S The type of the contained value.
83
- */
84
- export type Some<S> = Readonly<{
85
- /** @internal Discriminant property for the 'Some' type. */
86
- $$tag: 'ts-data-forge::Optional.some';
87
-
88
- /** The contained value. */
89
- value: S;
90
- }>;
91
-
92
- /**
93
- * Represents the 'None' variant of an Optional, indicating the absence
94
- * of a value.
95
- */
96
- export type None = Readonly<{
97
- /** @internal Discriminant property for the 'None' type. */
98
- $$tag: 'ts-data-forge::Optional.none';
99
- }>;
100
-
101
- // #endregion Optional
102
-
103
- // #region Result
104
-
105
- /**
106
- * Represents a `Result` that is a success, containing a value.
107
- *
108
- * @template S The type of the success value.
109
- */
110
- export type Ok<S> = Readonly<{
111
- /** @internal Discriminant property for the 'Ok' type. */
112
- $$tag: 'ts-data-forge::Result.ok';
113
-
114
- /** The success value. */
115
- value: S;
116
- }>;
117
-
118
- /**
119
- * Represents a `Result` that is an error, containing an error value.
120
- *
121
- * @template E The type of the error value.
122
- */
123
- export type Err<E> = Readonly<{
124
- /** @internal Discriminant property for the 'Err' type. */
125
- $$tag: 'ts-data-forge::Result.err';
126
-
127
- /** The error value. */
128
- value: E;
129
- }>;
130
-
131
- // #endregion Result
78
+ // The four variant shapes of `Optional` and `Result` are implemented in
79
+ // ts-std-forge since Sumi D-49; re-exported here so that `Ok` / `Err` /
80
+ // `Some` / `None` keep denoting the same declarations in both packages.
81
+ export type { Err, None, Ok, Some } from 'ts-std-forge';
@@ -1,16 +0,0 @@
1
- import { type Result } from '../result/index.mjs';
2
- /**
3
- * Represents an asynchronous computation that can either succeed (`Ok`) or
4
- * fail (`Err`) — a `Promise` that resolves to a `Result<S, E>`.
5
- *
6
- * Unlike a raw `Promise`, an `AsyncResult` never rejects for expected
7
- * failures: errors are carried in the `Err` channel with a concrete type `E`,
8
- * so they can be handled with the same combinators as a synchronous
9
- * `Result`.
10
- *
11
- * @template S The type of the success value.
12
- * @template E The type of the error value.
13
- */
14
- export type AsyncResult<S, E> = Promise<Result<S, E>>;
15
- export * as AsyncResult from './impl/index.mjs';
16
- //# sourceMappingURL=async-result.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"async-result.d.mts","sourceRoot":"","sources":["../../../src/functional/async-result/async-result.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAEtD,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAC"}
@@ -1,2 +0,0 @@
1
- export * as AsyncResult from './impl/index.mjs';
2
- //# sourceMappingURL=async-result.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"async-result.mjs","sourceRoot":"","sources":["../../../src/functional/async-result/async-result.mts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAC"}
@@ -1,39 +0,0 @@
1
- import { type UnknownResult } from '../../result/index.mjs';
2
- import { type AsyncResult } from '../async-result.mjs';
3
- import { type UnknownAsyncResult, type UnwrapErr, type UnwrapOk } from './types.mjs';
4
- /**
5
- * Applies a function that returns an `AsyncResult` or a `Result` to the
6
- * success value of an `AsyncResult`. If the input resolves to `Err`, the
7
- * original `Err` is passed through and the function is not called. This is
8
- * the monadic bind operation for `AsyncResult`.
9
- *
10
- * @example
11
- *
12
- * ```ts
13
- * const parseNumber = (input: string): Result<number, string> => {
14
- * const num = Number.parseInt(input, 10);
15
- *
16
- * return Number.isNaN(num) ? Result.err('not a number') : Result.ok(num);
17
- * };
18
- *
19
- * const input = AsyncResult.fromPromise(
20
- * Promise.resolve('42'),
21
- * () => 'failed',
22
- * );
23
- *
24
- * const parsed = await AsyncResult.flatMap(input, parseNumber);
25
- *
26
- * assert.deepStrictEqual(parsed, Result.ok(42));
27
- * ```
28
- *
29
- * @template S The type of the success value of the input.
30
- * @template E The type of the error value of the input.
31
- * @template R2 The `AsyncResult` or `Result` type returned by the function.
32
- * @param asyncResult The `AsyncResult` to flat map.
33
- * @param flatMapFn The function to apply that returns an `AsyncResult` or a
34
- * `Result`.
35
- * @returns The result of applying the function, or the original `Err`.
36
- */
37
- export declare function flatMap<S, E, R2 extends UnknownAsyncResult | UnknownResult>(asyncResult: AsyncResult<S, E>, flatMapFn: (value: S) => R2): AsyncResult<UnwrapOk<R2>, E | UnwrapErr<R2>>;
38
- export declare function flatMap<S, R2 extends UnknownAsyncResult | UnknownResult>(flatMapFn: (value: S) => R2): <E>(asyncResult: AsyncResult<S, E>) => AsyncResult<UnwrapOk<R2>, E | UnwrapErr<R2>>;
39
- //# sourceMappingURL=async-result-flat-map.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"async-result-flat-map.d.mts","sourceRoot":"","sources":["../../../../src/functional/async-result/impl/async-result-flat-map.mts"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,SAAS,EACd,KAAK,QAAQ,EACd,MAAM,aAAa,CAAC;AAErB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,SAAS,kBAAkB,GAAG,aAAa,EACzE,WAAW,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,GAC1B,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;AAWhD,wBAAgB,OAAO,CAAC,CAAC,EAAE,EAAE,SAAS,kBAAkB,GAAG,aAAa,EACtE,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,GAC1B,CAAC,CAAC,EACH,WAAW,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,KAC3B,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC"}