type-plus 8.0.0-beta.2 → 8.0.0-beta.3

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 (395) hide show
  1. package/esm/any/is_any.d.ts.map +1 -1
  2. package/esm/any/is_not_any.d.ts.map +1 -1
  3. package/esm/array/array.at.d.ts.map +1 -1
  4. package/esm/array/array.entries.d.ts +1 -1
  5. package/esm/array/array.entries.d.ts.map +1 -1
  6. package/esm/array/array.find_last.d.ts +1 -1
  7. package/esm/array/array.find_last.d.ts.map +1 -1
  8. package/esm/array/array.reverse.d.ts.map +1 -1
  9. package/esm/array/array.some.d.ts +2 -2
  10. package/esm/array/array.some.d.ts.map +1 -1
  11. package/esm/array/array_plus.common_prop_keys.d.ts.map +1 -1
  12. package/esm/array/array_plus.drop_match.d.ts +1 -1
  13. package/esm/array/array_plus.drop_match.d.ts.map +1 -1
  14. package/esm/array/array_plus.element_match.d.ts +4 -2
  15. package/esm/array/array_plus.element_match.d.ts.map +1 -1
  16. package/esm/array/array_plus.filter.d.ts +4 -4
  17. package/esm/array/array_plus.filter.d.ts.map +1 -1
  18. package/esm/array/array_plus.find.d.ts +1 -1
  19. package/esm/array/array_plus.find.d.ts.map +1 -1
  20. package/esm/array/array_plus.index_at.d.ts.map +1 -1
  21. package/esm/array/array_plus.index_at.js.map +1 -1
  22. package/esm/array/array_plus.is_index_out_of_bound.d.ts.map +1 -1
  23. package/esm/array/array_plus.is_readonly.d.ts.map +1 -1
  24. package/esm/array/array_plus.pad_start.d.ts.map +1 -1
  25. package/esm/array/array_plus.split_at.d.ts +4 -4
  26. package/esm/array/array_plus.split_at.d.ts.map +1 -1
  27. package/esm/array/find_first.d.ts.map +1 -1
  28. package/esm/array/head.d.ts.map +1 -1
  29. package/esm/array/intersect_of_props.d.ts.map +1 -1
  30. package/esm/array/is_array.d.ts +2 -2
  31. package/esm/array/is_array.d.ts.map +1 -1
  32. package/esm/array/is_not_array.d.ts +2 -2
  33. package/esm/array/is_not_array.d.ts.map +1 -1
  34. package/esm/array/last.d.ts.map +1 -1
  35. package/esm/array/loose_array_type.d.ts.map +1 -1
  36. package/esm/array/pad_start.d.ts.map +1 -1
  37. package/esm/array/reverse.d.ts.map +1 -1
  38. package/esm/array/union_of_props.d.ts.map +1 -1
  39. package/esm/assertion/assert_type.js +6 -5
  40. package/esm/assertion/assert_type.js.map +1 -1
  41. package/esm/bigint/cast.d.ts.map +1 -1
  42. package/esm/bigint/is_bigint.d.ts +2 -4
  43. package/esm/bigint/is_bigint.d.ts.map +1 -1
  44. package/esm/bigint/is_bigint_literal.d.ts +2 -4
  45. package/esm/bigint/is_bigint_literal.d.ts.map +1 -1
  46. package/esm/bigint/is_not_bigint.d.ts +2 -4
  47. package/esm/bigint/is_not_bigint.d.ts.map +1 -1
  48. package/esm/bigint/is_not_bigint_literal.d.ts +2 -4
  49. package/esm/bigint/is_not_bigint_literal.d.ts.map +1 -1
  50. package/esm/boolean/is_boolean.d.ts +2 -8
  51. package/esm/boolean/is_boolean.d.ts.map +1 -1
  52. package/esm/boolean/is_false.d.ts.map +1 -1
  53. package/esm/boolean/is_not_boolean.d.ts +2 -8
  54. package/esm/boolean/is_not_boolean.d.ts.map +1 -1
  55. package/esm/boolean/is_not_false.d.ts.map +1 -1
  56. package/esm/boolean/is_not_true.d.ts.map +1 -1
  57. package/esm/boolean/is_true.d.ts.map +1 -1
  58. package/esm/class/isConstructor.js +1 -0
  59. package/esm/class/isConstructor.js.map +1 -1
  60. package/esm/equal/equal.d.ts.map +1 -1
  61. package/esm/equal/identity_equal.d.ts +1 -1
  62. package/esm/equal/identity_equal.d.ts.map +1 -1
  63. package/esm/function/extract_function.d.ts.map +1 -1
  64. package/esm/function/extract_function.js.map +1 -1
  65. package/esm/function/is_not_strict_function.d.ts +1 -1
  66. package/esm/function/is_not_strict_function.d.ts.map +1 -1
  67. package/esm/function/is_strict_function.d.ts.map +1 -1
  68. package/esm/functional/Maybe.d.ts.map +1 -1
  69. package/esm/functional/Maybe.js.map +1 -1
  70. package/esm/functional/compose.d.ts.map +1 -1
  71. package/esm/functional/compose.js.map +1 -1
  72. package/esm/functional/context.d.ts.map +1 -1
  73. package/esm/math/abs.d.ts.map +1 -1
  74. package/esm/math/math_plus.to_negative.d.ts.map +1 -1
  75. package/esm/math/max.d.ts.map +1 -1
  76. package/esm/math/numeric_struct.d.ts.map +1 -1
  77. package/esm/mix_types/box.d.ts.map +1 -1
  78. package/esm/mix_types/is_any_or_never.d.ts.map +1 -1
  79. package/esm/mix_types/merge.d.ts +9 -9
  80. package/esm/mix_types/merge.d.ts.map +1 -1
  81. package/esm/mix_types/merge.js +9 -9
  82. package/esm/mix_types/merge.js.map +1 -1
  83. package/esm/never/is_never.d.ts.map +1 -1
  84. package/esm/never/is_not_never.d.ts.map +1 -1
  85. package/esm/nodejs/isNodeError.d.ts.map +1 -1
  86. package/esm/nominal/brand.d.ts.map +1 -1
  87. package/esm/nominal/brand.js +1 -1
  88. package/esm/nominal/brand.js.map +1 -1
  89. package/esm/nominal/flavor.d.ts.map +1 -1
  90. package/esm/nominal/flavor.js +1 -1
  91. package/esm/nominal/flavor.js.map +1 -1
  92. package/esm/nominal/nominal_match.d.ts.map +1 -1
  93. package/esm/nominal/nominal_match.js.map +1 -1
  94. package/esm/null/is_not_null.d.ts.map +1 -1
  95. package/esm/null/is_null.d.ts.map +1 -1
  96. package/esm/number/cast.d.ts.map +1 -1
  97. package/esm/number/is_not_number.d.ts +2 -4
  98. package/esm/number/is_not_number.d.ts.map +1 -1
  99. package/esm/number/is_not_number_literal.d.ts +2 -4
  100. package/esm/number/is_not_number_literal.d.ts.map +1 -1
  101. package/esm/number/is_number.d.ts +2 -4
  102. package/esm/number/is_number.d.ts.map +1 -1
  103. package/esm/number/is_number_literal.d.ts +2 -4
  104. package/esm/number/is_number_literal.d.ts.map +1 -1
  105. package/esm/numeric/is_integer.d.ts +2 -2
  106. package/esm/numeric/is_integer.d.ts.map +1 -1
  107. package/esm/numeric/is_negative.d.ts +5 -5
  108. package/esm/numeric/is_negative.d.ts.map +1 -1
  109. package/esm/numeric/is_not_integer.d.ts +2 -2
  110. package/esm/numeric/is_not_integer.d.ts.map +1 -1
  111. package/esm/numeric/is_not_negative.d.ts +3 -3
  112. package/esm/numeric/is_not_negative.d.ts.map +1 -1
  113. package/esm/numeric/is_not_positive.d.ts +3 -3
  114. package/esm/numeric/is_not_positive.d.ts.map +1 -1
  115. package/esm/numeric/is_positive.d.ts +3 -3
  116. package/esm/numeric/is_positive.d.ts.map +1 -1
  117. package/esm/numeric/numeric_type.d.ts.map +1 -1
  118. package/esm/object/ANotB.d.ts.map +1 -1
  119. package/esm/object/IsDisjoint.d.ts.map +1 -1
  120. package/esm/object/KeysWithDiffType.d.ts.map +1 -1
  121. package/esm/object/KnownKeys.d.ts.map +1 -1
  122. package/esm/object/RecursiveIntersect.d.ts +1 -1
  123. package/esm/object/RecursiveIntersect.d.ts.map +1 -1
  124. package/esm/object/RecursiveRequired.d.ts.map +1 -1
  125. package/esm/object/SpreadRecord.d.ts.map +1 -1
  126. package/esm/object/facade.d.ts.map +1 -1
  127. package/esm/object/facade.js.map +1 -1
  128. package/esm/object/getField.d.ts.map +1 -1
  129. package/esm/object/getField.js.map +1 -1
  130. package/esm/object/hasKey.js +1 -1
  131. package/esm/object/hasKey.js.map +1 -1
  132. package/esm/object/is_not_object.d.ts +1 -3
  133. package/esm/object/is_not_object.d.ts.map +1 -1
  134. package/esm/object/is_object.d.ts.map +1 -1
  135. package/esm/object/left_join.d.ts.map +1 -1
  136. package/esm/object/merge.d.ts +6 -5
  137. package/esm/object/merge.d.ts.map +1 -1
  138. package/esm/object/omit.d.ts +7 -0
  139. package/esm/object/omit.d.ts.map +1 -1
  140. package/esm/object/omit.js.map +1 -1
  141. package/esm/object/optional_key.d.ts.map +1 -1
  142. package/esm/object/pick.d.ts.map +1 -1
  143. package/esm/object/pick.js.map +1 -1
  144. package/esm/object/recursive_partial.d.ts.map +1 -1
  145. package/esm/object/split.d.ts +1 -7
  146. package/esm/object/split.d.ts.map +1 -1
  147. package/esm/object/split.js +1 -1
  148. package/esm/object/split.js.map +1 -1
  149. package/esm/object/typeOverrideIncompatible.js.map +1 -1
  150. package/esm/predicates/CanAssign.d.ts.map +1 -1
  151. package/esm/predicates/CanAssign.js.map +1 -1
  152. package/esm/predicates/assignable.d.ts.map +1 -1
  153. package/esm/predicates/literal.d.ts.map +1 -1
  154. package/esm/predicates/logical.d.ts.map +1 -1
  155. package/esm/predicates/not_assignable.d.ts.map +1 -1
  156. package/esm/primitive.d.ts.map +1 -1
  157. package/esm/promise/index.d.ts.map +1 -1
  158. package/esm/promise/mapSeries.js +1 -1
  159. package/esm/promise/mapSeries.js.map +1 -1
  160. package/esm/string/$extract_manipulated_string.d.ts +5 -5
  161. package/esm/string/$extract_manipulated_string.d.ts.map +1 -1
  162. package/esm/string/_string_type.d.ts.map +1 -1
  163. package/esm/string/is_not_string.d.ts +2 -4
  164. package/esm/string/is_not_string.d.ts.map +1 -1
  165. package/esm/string/is_not_string_literal.d.ts +4 -8
  166. package/esm/string/is_not_string_literal.d.ts.map +1 -1
  167. package/esm/string/is_not_template_literal.d.ts.map +1 -1
  168. package/esm/string/is_string.d.ts +2 -4
  169. package/esm/string/is_string.d.ts.map +1 -1
  170. package/esm/string/is_string_literal.d.ts +4 -8
  171. package/esm/string/is_string_literal.d.ts.map +1 -1
  172. package/esm/string/is_template_literal.d.ts.map +1 -1
  173. package/esm/string/string.d.ts.map +1 -1
  174. package/esm/string/string_plus.d.ts.map +1 -1
  175. package/esm/symbol/is_not_symbol.d.ts.map +1 -1
  176. package/esm/symbol/is_symbol.d.ts.map +1 -1
  177. package/esm/testing/test_type.d.ts.map +1 -1
  178. package/esm/tuple/common_prop_keys.d.ts.map +1 -1
  179. package/esm/tuple/create_tuple.d.ts.map +1 -1
  180. package/esm/tuple/drop.d.ts.map +1 -1
  181. package/esm/tuple/drop.js +1 -1
  182. package/esm/tuple/drop.js.map +1 -1
  183. package/esm/tuple/is_not_tuple.d.ts +2 -2
  184. package/esm/tuple/is_not_tuple.d.ts.map +1 -1
  185. package/esm/tuple/is_tuple.d.ts +2 -2
  186. package/esm/tuple/is_tuple.d.ts.map +1 -1
  187. package/esm/tuple/tail.d.ts +1 -1
  188. package/esm/tuple/tail.d.ts.map +1 -1
  189. package/esm/tuple/tuple_plus.common_prop_keys.d.ts +1 -1
  190. package/esm/tuple/tuple_plus.common_prop_keys.d.ts.map +1 -1
  191. package/esm/tuple/tuple_plus.drop_match.d.ts.map +1 -1
  192. package/esm/tuple/tuple_plus.filter.d.ts +1 -1
  193. package/esm/tuple/tuple_plus.filter.d.ts.map +1 -1
  194. package/esm/tuple/tuple_plus.find.d.ts +2 -2
  195. package/esm/tuple/tuple_plus.find.d.ts.map +1 -1
  196. package/esm/tuple/tuple_plus.pad_start.d.ts +1 -4
  197. package/esm/tuple/tuple_plus.pad_start.d.ts.map +1 -1
  198. package/esm/type_plus/$equality.d.ts.map +1 -1
  199. package/esm/type_plus/$infer_error.d.ts.map +1 -1
  200. package/esm/type_plus/$merge_options.d.ts.map +1 -1
  201. package/esm/type_plus/$resolve_options.d.ts +1 -1
  202. package/esm/type_plus/$resolve_options.d.ts.map +1 -1
  203. package/esm/type_plus/$special_type.d.ts +1 -7
  204. package/esm/type_plus/$special_type.d.ts.map +1 -1
  205. package/esm/type_plus/$type.d.ts.map +1 -1
  206. package/esm/type_plus/branch/$branch.d.ts.map +1 -1
  207. package/esm/type_plus/branch/$exact.d.ts +4 -1
  208. package/esm/type_plus/branch/$exact.d.ts.map +1 -1
  209. package/esm/type_plus/branch/$input_options.d.ts.map +1 -1
  210. package/esm/type_plus/branch/$is_distributive.d.ts.map +1 -1
  211. package/esm/type_plus/branch/$resolve_branch.d.ts +8 -9
  212. package/esm/type_plus/branch/$resolve_branch.d.ts.map +1 -1
  213. package/esm/type_plus/branch/$select.d.ts +1 -3
  214. package/esm/type_plus/branch/$select.d.ts.map +1 -1
  215. package/esm/type_plus/branch/$select_invert.d.ts +1 -3
  216. package/esm/type_plus/branch/$select_invert.d.ts.map +1 -1
  217. package/esm/type_plus/branch/$select_invert_strict.d.ts +1 -4
  218. package/esm/type_plus/branch/$select_invert_strict.d.ts.map +1 -1
  219. package/esm/type_plus/branch/$select_strict.d.ts +1 -4
  220. package/esm/type_plus/branch/$select_strict.d.ts.map +1 -1
  221. package/esm/type_plus/branch/$selection.d.ts.map +1 -1
  222. package/esm/type_plus/branch/$selection_options.d.ts.map +1 -1
  223. package/esm/undefined/has_undefined.d.ts +3 -1
  224. package/esm/undefined/has_undefined.d.ts.map +1 -1
  225. package/esm/undefined/is_not_undefined.d.ts.map +1 -1
  226. package/esm/undefined/is_undefined.d.ts.map +1 -1
  227. package/esm/union/union.d.ts.map +1 -1
  228. package/esm/union/union_to_intersection.d.ts.map +1 -1
  229. package/esm/union/union_to_intersection.js.map +1 -1
  230. package/esm/unknown/is_not_unknown.d.ts.map +1 -1
  231. package/esm/unknown/is_unknown.d.ts.map +1 -1
  232. package/esm/unknown/not_unknown_or.d.ts.map +1 -1
  233. package/esm/unknown/unknown.d.ts.map +1 -1
  234. package/esm/utils/index.d.ts.map +1 -1
  235. package/esm/void/is_not_void.d.ts.map +1 -1
  236. package/esm/void/is_void.d.ts.map +1 -1
  237. package/package.json +3 -4
  238. package/src/any/is_any.ts +8 -8
  239. package/src/any/is_not_any.ts +8 -8
  240. package/src/array/array.at.ts +22 -19
  241. package/src/array/array.entries.ts +3 -3
  242. package/src/array/array.find_last.ts +6 -6
  243. package/src/array/array.reverse.ts +3 -2
  244. package/src/array/array.some.ts +4 -4
  245. package/src/array/array_plus.common_prop_keys.ts +5 -6
  246. package/src/array/array_plus.drop_match.ts +7 -7
  247. package/src/array/array_plus.element_match.ts +25 -22
  248. package/src/array/array_plus.filter.ts +11 -12
  249. package/src/array/array_plus.find.ts +9 -11
  250. package/src/array/array_plus.index_at.ts +29 -35
  251. package/src/array/array_plus.is_index_out_of_bound.ts +1 -1
  252. package/src/array/array_plus.is_readonly.ts +17 -21
  253. package/src/array/array_plus.pad_start.ts +3 -7
  254. package/src/array/array_plus.split_at.ts +17 -19
  255. package/src/array/find_first.ts +6 -5
  256. package/src/array/head.ts +9 -8
  257. package/src/array/intersect_of_props.ts +5 -5
  258. package/src/array/is_array.ts +31 -32
  259. package/src/array/is_not_array.ts +32 -32
  260. package/src/array/last.ts +14 -9
  261. package/src/array/loose_array_type.ts +2 -2
  262. package/src/array/pad_start.ts +1 -3
  263. package/src/array/reverse.ts +8 -8
  264. package/src/array/union_of_props.ts +2 -2
  265. package/src/assertion/assert_type.ts +5 -3
  266. package/src/bigint/cast.ts +2 -2
  267. package/src/bigint/is_bigint.ts +17 -20
  268. package/src/bigint/is_bigint_literal.ts +12 -14
  269. package/src/bigint/is_not_bigint.ts +14 -16
  270. package/src/bigint/is_not_bigint_literal.ts +17 -16
  271. package/src/boolean/is_boolean.ts +48 -36
  272. package/src/boolean/is_false.ts +5 -3
  273. package/src/boolean/is_not_boolean.ts +23 -25
  274. package/src/boolean/is_not_false.ts +5 -3
  275. package/src/boolean/is_not_true.ts +5 -3
  276. package/src/boolean/is_true.ts +5 -3
  277. package/src/class/isConstructor.ts +1 -1
  278. package/src/equal/equal.ts +22 -27
  279. package/src/equal/identity_equal.ts +5 -3
  280. package/src/function/extract_function.ts +1 -3
  281. package/src/function/is_not_strict_function.ts +12 -12
  282. package/src/function/is_strict_function.ts +12 -14
  283. package/src/functional/Maybe.ts +1 -3
  284. package/src/functional/compose.ts +2 -4
  285. package/src/functional/context.ts +1 -1
  286. package/src/index.ts +0 -1
  287. package/src/math/abs.ts +18 -8
  288. package/src/math/math_plus.to_negative.ts +6 -6
  289. package/src/math/max.ts +2 -2
  290. package/src/math/numeric_struct.ts +225 -231
  291. package/src/mix_types/box.ts +34 -37
  292. package/src/mix_types/is_any_or_never.ts +6 -6
  293. package/src/mix_types/merge.ts +24 -28
  294. package/src/never/is_never.ts +13 -10
  295. package/src/never/is_not_never.ts +13 -10
  296. package/src/nodejs/isNodeError.ts +13 -13
  297. package/src/nominal/brand.ts +3 -4
  298. package/src/nominal/flavor.ts +3 -4
  299. package/src/nominal/nominal_match.ts +3 -10
  300. package/src/null/is_not_null.ts +5 -4
  301. package/src/null/is_null.ts +9 -8
  302. package/src/number/cast.ts +6 -6
  303. package/src/number/is_not_number.ts +15 -17
  304. package/src/number/is_not_number_literal.ts +17 -16
  305. package/src/number/is_number.ts +15 -17
  306. package/src/number/is_number_literal.ts +12 -14
  307. package/src/numeric/is_integer.ts +33 -27
  308. package/src/numeric/is_negative.ts +23 -23
  309. package/src/numeric/is_not_integer.ts +31 -26
  310. package/src/numeric/is_not_negative.ts +19 -19
  311. package/src/numeric/is_not_positive.ts +19 -19
  312. package/src/numeric/is_positive.ts +21 -21
  313. package/src/numeric/numeric_plus.ts +0 -1
  314. package/src/numeric/numeric_type.ts +0 -1
  315. package/src/object/ANotB.ts +2 -2
  316. package/src/object/IsDisjoint.ts +1 -4
  317. package/src/object/KeysWithDiffType.ts +2 -2
  318. package/src/object/KnownKeys.ts +7 -7
  319. package/src/object/RecursiveIntersect.ts +8 -8
  320. package/src/object/RecursiveRequired.ts +2 -2
  321. package/src/object/SpreadRecord.ts +1 -4
  322. package/src/object/facade.ts +1 -9
  323. package/src/object/getField.ts +1 -4
  324. package/src/object/hasKey.ts +1 -1
  325. package/src/object/is_not_object.ts +23 -16
  326. package/src/object/is_object.ts +23 -15
  327. package/src/object/left_join.ts +2 -2
  328. package/src/object/merge.ts +53 -72
  329. package/src/object/omit.ts +16 -25
  330. package/src/object/optional_key.ts +1 -4
  331. package/src/object/pick.ts +8 -19
  332. package/src/object/recursive_partial.ts +6 -6
  333. package/src/object/split.ts +3 -14
  334. package/src/object/typeOverrideIncompatible.ts +3 -3
  335. package/src/predicates/CanAssign.ts +9 -5
  336. package/src/predicates/assignable.ts +23 -24
  337. package/src/predicates/literal.ts +8 -8
  338. package/src/predicates/logical.ts +4 -4
  339. package/src/predicates/not_assignable.ts +23 -22
  340. package/src/primitive.ts +1 -10
  341. package/src/promise/index.ts +1 -1
  342. package/src/promise/mapSeries.ts +1 -1
  343. package/src/string/$extract_manipulated_string.ts +25 -20
  344. package/src/string/_string_type.ts +6 -6
  345. package/src/string/is_not_string.ts +13 -15
  346. package/src/string/is_not_string_literal.ts +29 -34
  347. package/src/string/is_not_template_literal.ts +18 -21
  348. package/src/string/is_string.ts +17 -20
  349. package/src/string/is_string_literal.ts +29 -34
  350. package/src/string/is_template_literal.ts +18 -20
  351. package/src/string/string.ts +2 -2
  352. package/src/string/string_plus.ts +6 -7
  353. package/src/symbol/is_not_symbol.ts +5 -3
  354. package/src/symbol/is_symbol.ts +5 -3
  355. package/src/testing/test_type.ts +89 -89
  356. package/src/tuple/common_prop_keys.ts +2 -5
  357. package/src/tuple/create_tuple.ts +18 -18
  358. package/src/tuple/drop.ts +20 -22
  359. package/src/tuple/is_not_tuple.ts +19 -21
  360. package/src/tuple/is_tuple.ts +23 -26
  361. package/src/tuple/tail.ts +5 -3
  362. package/src/tuple/tuple_plus.common_prop_keys.ts +6 -12
  363. package/src/tuple/tuple_plus.drop_match.ts +11 -11
  364. package/src/tuple/tuple_plus.filter.ts +5 -12
  365. package/src/tuple/tuple_plus.find.ts +14 -24
  366. package/src/tuple/tuple_plus.pad_start.ts +12 -27
  367. package/src/type_plus/$equality.ts +1 -3
  368. package/src/type_plus/$infer_error.ts +3 -1
  369. package/src/type_plus/$merge_options.ts +3 -4
  370. package/src/type_plus/$resolve_options.ts +6 -5
  371. package/src/type_plus/$special_type.ts +7 -5
  372. package/src/type_plus/$type.ts +3 -3
  373. package/src/type_plus/branch/$branch.ts +1 -2
  374. package/src/type_plus/branch/$exact.ts +9 -5
  375. package/src/type_plus/branch/$input_options.ts +1 -2
  376. package/src/type_plus/branch/$is_distributive.ts +7 -4
  377. package/src/type_plus/branch/$resolve_branch.ts +29 -39
  378. package/src/type_plus/branch/$select.ts +15 -16
  379. package/src/type_plus/branch/$select_invert.ts +11 -16
  380. package/src/type_plus/branch/$select_invert_strict.ts +14 -19
  381. package/src/type_plus/branch/$select_strict.ts +11 -13
  382. package/src/type_plus/branch/$selection.ts +8 -9
  383. package/src/type_plus/branch/$selection_options.ts +3 -3
  384. package/src/undefined/has_undefined.ts +4 -3
  385. package/src/undefined/is_not_undefined.ts +9 -9
  386. package/src/undefined/is_undefined.ts +9 -8
  387. package/src/union/union.ts +1 -4
  388. package/src/union/union_to_intersection.ts +1 -3
  389. package/src/unknown/is_not_unknown.ts +8 -8
  390. package/src/unknown/is_unknown.ts +8 -8
  391. package/src/unknown/not_unknown_or.ts +7 -3
  392. package/src/unknown/unknown.ts +0 -1
  393. package/src/utils/index.ts +17 -17
  394. package/src/void/is_not_void.ts +14 -14
  395. package/src/void/is_void.ts +14 -14
@@ -59,10 +59,12 @@ import type { $Else, $Then } from '../type_plus/branch/$selection.js'
59
59
  * type R = IsBoolean<string, $SelectionBranch> // $Else
60
60
  * ```
61
61
  */
62
- export type IsBoolean<T, $O extends IsBoolean.$Options = {}> = $SpecialType<T,
63
- $MergeOptions<$O,
62
+ export type IsBoolean<T, $O extends IsBoolean.$Options = {}> = $SpecialType<
63
+ T,
64
+ $MergeOptions<
65
+ $O,
64
66
  {
65
- $then: $ResolveBranch<T, $O, [$Else]>,
67
+ $then: $ResolveBranch<T, $O, [$Else]>
66
68
  $else: IsBoolean.$<T, $O>
67
69
  }
68
70
  >
@@ -79,48 +81,58 @@ export namespace IsBoolean {
79
81
  * This is a type util for building custom types.
80
82
  * It does not check against special types.
81
83
  */
82
- export type $<T, $O extends $UtilOptions> =
83
- $ResolveOptions<[$O['exact'], $Exact.$Default]> extends true
84
- ? $IsDistributive<$O, { $then: _SD<T, $O>, $else: _N<T, $O> }>
84
+ export type $<T, $O extends $UtilOptions> = $ResolveOptions<[$O['exact'], $Exact.$Default]> extends true
85
+ ? $IsDistributive<$O, { $then: _SD<T, $O>; $else: _N<T, $O> }>
85
86
  : Assignable.$<T, boolean, $O>
86
87
  export type $UtilOptions = Assignable.$UtilOptions & $Exact.$Options
87
88
 
88
- export type _SD<T, $O extends $Options> =
89
- IsBoolean._DistributeMap<T> extends infer R
90
- ? ['aBcD' | 'AbCd' | 'abcd'] extends [R] ? $ResolveBranch<boolean, $O, [$Then]> | $ResolveBranch<Exclude<T, boolean>, $O, [$Else]>
91
- : ['aBcD' | 'AbCd'] extends [R] ? $ResolveBranch<T, $O, [$Then]>
92
- : ['aBcd' | 'Abcd'] extends [R] ? $ResolveBranch<T, $O, [$Then]> : $ResolveBranch<T, $O, [$Else]>
89
+ export type _SD<T, $O extends $Options> = IsBoolean._DistributeMap<T> extends infer R
90
+ ? ['aBcD' | 'AbCd' | 'abcd'] extends [R]
91
+ ? $ResolveBranch<boolean, $O, [$Then]> | $ResolveBranch<Exclude<T, boolean>, $O, [$Else]>
92
+ : ['aBcD' | 'AbCd'] extends [R]
93
+ ? $ResolveBranch<T, $O, [$Then]>
94
+ : ['aBcd' | 'Abcd'] extends [R]
95
+ ? $ResolveBranch<T, $O, [$Then]>
96
+ : $ResolveBranch<T, $O, [$Else]>
93
97
  : never
94
98
 
95
- export type _N<T, $O extends $Options> =
96
- [T] extends [boolean]
97
- ? (
98
- [T] extends [true]
99
+ export type _N<T, $O extends $Options> = [T] extends [boolean]
100
+ ? [T] extends [true]
99
101
  ? $ResolveBranch<T, $O, [$Else]>
100
- : (
101
- [T] extends [false]
102
+ : [T] extends [false]
102
103
  ? $ResolveBranch<T, $O, [$Else]>
103
104
  : $ResolveBranch<T, $O, [$Then]>
104
- )
105
- )
106
105
  : $ResolveBranch<T, $O, [$Else]>
107
106
 
108
107
  export type _DistributeMap<T> = T extends true
109
- ? (T extends false
110
- ? (true extends T
111
- ? (false extends T ? 'ABCD' : 'ABCd')
112
- : (false extends T ? 'ABcD' : 'ABcd'))
113
- : (true extends T
114
- ? (false extends T ? 'AbCD' : 'AbCd')
115
- : (false extends T ? 'AbcD' : 'Abcd'))
116
- )
117
- : (T extends false
118
- ? (true extends T
119
- ? (false extends T ? 'aBCD' : 'aBCd')
120
- : (false extends T ? 'aBcD' : 'aBcd'))
121
- : (true extends T
122
- ? (false extends T ? 'abCD' : 'abCd')
123
- : (false extends T ? 'abcD' : 'abcd'))
124
- )
125
-
108
+ ? T extends false
109
+ ? true extends T
110
+ ? false extends T
111
+ ? 'ABCD'
112
+ : 'ABCd'
113
+ : false extends T
114
+ ? 'ABcD'
115
+ : 'ABcd'
116
+ : true extends T
117
+ ? false extends T
118
+ ? 'AbCD'
119
+ : 'AbCd'
120
+ : false extends T
121
+ ? 'AbcD'
122
+ : 'Abcd'
123
+ : T extends false
124
+ ? true extends T
125
+ ? false extends T
126
+ ? 'aBCD'
127
+ : 'aBCd'
128
+ : false extends T
129
+ ? 'aBcD'
130
+ : 'aBcd'
131
+ : true extends T
132
+ ? false extends T
133
+ ? 'abCD'
134
+ : 'abCd'
135
+ : false extends T
136
+ ? 'abcD'
137
+ : 'abcd'
126
138
  }
@@ -58,10 +58,12 @@ import type { $Else } from '../type_plus/branch/$selection.js'
58
58
  * type R = IsFalse<string, $SelectionBranch> // $Else
59
59
  * ```
60
60
  */
61
- export type IsFalse<T, $O extends IsFalse.$Options = {}> = $SpecialType<T,
62
- $MergeOptions<$O,
61
+ export type IsFalse<T, $O extends IsFalse.$Options = {}> = $SpecialType<
62
+ T,
63
+ $MergeOptions<
64
+ $O,
63
65
  {
64
- $then: $ResolveBranch<T, $O, [$Else]>,
66
+ $then: $ResolveBranch<T, $O, [$Else]>
65
67
  $else: IsFalse.$<T, $O>
66
68
  }
67
69
  >
@@ -23,7 +23,7 @@ import type { IsBoolean } from './is_boolean.js'
23
23
  * type R = IsNotBoolean<number> // true
24
24
  * type R = IsNotBoolean<unknown> // true
25
25
  * type R = IsNotBoolean<string | boolean> // boolean
26
- * ```
26
+ * ```
27
27
  *
28
28
  * 🔢 *customize*
29
29
  *
@@ -60,15 +60,16 @@ import type { IsBoolean } from './is_boolean.js'
60
60
  * type R = IsNotBoolean<string, $SelectionBranch> // $Then
61
61
  * ```
62
62
  */
63
- export type IsNotBoolean<T, $O extends IsNotBoolean.$Options = {}> =
64
- $SpecialType<T,
65
- $MergeOptions<$O,
66
- {
67
- $then: $ResolveBranch<T, $O, [$Then]>,
68
- $else: IsNotBoolean.$<T, $O>
69
- }
70
- >
63
+ export type IsNotBoolean<T, $O extends IsNotBoolean.$Options = {}> = $SpecialType<
64
+ T,
65
+ $MergeOptions<
66
+ $O,
67
+ {
68
+ $then: $ResolveBranch<T, $O, [$Then]>
69
+ $else: IsNotBoolean.$<T, $O>
70
+ }
71
71
  >
72
+ >
72
73
 
73
74
  export namespace IsNotBoolean {
74
75
  export type $Options = $Equality.$Options & $Exact.$Options
@@ -82,28 +83,25 @@ export namespace IsNotBoolean {
82
83
  * This is a type util for building custom types.
83
84
  * It does not check against special types.
84
85
  */
85
- export type $<T, $O extends $UtilOptions> =
86
- $ResolveOptions<[$O['exact'], false]> extends true
87
- ? $IsDistributive<$O, { $then: _D<T, $O>, $else: _N<T, $O> }>
86
+ export type $<T, $O extends $UtilOptions> = $ResolveOptions<[$O['exact'], false]> extends true
87
+ ? $IsDistributive<$O, { $then: _D<T, $O>; $else: _N<T, $O> }>
88
88
  : NotAssignable.$<T, boolean, $O>
89
89
  export type $UtilOptions = NotAssignable.$UtilOptions & $Exact.$Options
90
90
 
91
- export type _D<T, $O extends $Options> =
92
- IsBoolean._DistributeMap<T> extends infer R
93
- ? ['aBcD' | 'AbCd' | 'abcd'] extends [R] ? $ResolveBranch<Exclude<T, boolean>, $O, [$Then | $Else]>
94
- : ['aBcD' | 'AbCd'] extends [R] ? $ResolveBranch<T, $O, [$Else]>
95
- : ['aBcd' | 'Abcd'] extends [R] ? $ResolveBranch<T, $O, [$Else]> : $ResolveBranch<T, $O, [$Then]>
91
+ export type _D<T, $O extends $Options> = IsBoolean._DistributeMap<T> extends infer R
92
+ ? ['aBcD' | 'AbCd' | 'abcd'] extends [R]
93
+ ? $ResolveBranch<Exclude<T, boolean>, $O, [$Then | $Else]>
94
+ : ['aBcD' | 'AbCd'] extends [R]
95
+ ? $ResolveBranch<T, $O, [$Else]>
96
+ : ['aBcd' | 'Abcd'] extends [R]
97
+ ? $ResolveBranch<T, $O, [$Else]>
98
+ : $ResolveBranch<T, $O, [$Then]>
96
99
  : never
97
- export type _N<T, $O extends $Options> =
98
- [T] extends [boolean]
99
- ? (
100
- [T] extends [true]
100
+ export type _N<T, $O extends $Options> = [T] extends [boolean]
101
+ ? [T] extends [true]
101
102
  ? $ResolveBranch<T, $O, [$Then]>
102
- : (
103
- [T] extends [false]
103
+ : [T] extends [false]
104
104
  ? $ResolveBranch<T, $O, [$Then]>
105
105
  : $ResolveBranch<T, $O, [$Else]>
106
- )
107
- )
108
106
  : $ResolveBranch<T, $O, [$Then]>
109
107
  }
@@ -59,10 +59,12 @@ import type { $Then } from '../type_plus/branch/$selection.js'
59
59
  * type R = IsNotFalse<string, $SelectionBranch> // $Then
60
60
  * ```
61
61
  */
62
- export type IsNotFalse<T, $O extends IsNotFalse.$Options = {}> = $SpecialType<T,
63
- $MergeOptions<$O,
62
+ export type IsNotFalse<T, $O extends IsNotFalse.$Options = {}> = $SpecialType<
63
+ T,
64
+ $MergeOptions<
65
+ $O,
64
66
  {
65
- $then: $ResolveBranch<T, $O, [$Then]>,
67
+ $then: $ResolveBranch<T, $O, [$Then]>
66
68
  $else: IsNotFalse.$<T, $O>
67
69
  }
68
70
  >
@@ -60,10 +60,12 @@ import type { $Then } from '../type_plus/branch/$selection.js'
60
60
  * type R = IsNotTrue<string, $SelectionBranch> // $Then
61
61
  * ```
62
62
  */
63
- export type IsNotTrue<T, $O extends IsNotTrue.$Options = {}> = $SpecialType<T,
64
- $MergeOptions<$O,
63
+ export type IsNotTrue<T, $O extends IsNotTrue.$Options = {}> = $SpecialType<
64
+ T,
65
+ $MergeOptions<
66
+ $O,
65
67
  {
66
- $then: $ResolveBranch<T, $O, [$Then]>,
68
+ $then: $ResolveBranch<T, $O, [$Then]>
67
69
  $else: IsNotTrue.$<T, $O>
68
70
  }
69
71
  >
@@ -58,10 +58,12 @@ import type { $Else } from '../type_plus/branch/$selection.js'
58
58
  * type R = IsTrue<string, $SelectionBranch> // $Else
59
59
  * ```
60
60
  */
61
- export type IsTrue<T, $O extends IsTrue.$Options = {}> = $SpecialType<T,
62
- $MergeOptions<$O,
61
+ export type IsTrue<T, $O extends IsTrue.$Options = {}> = $SpecialType<
62
+ T,
63
+ $MergeOptions<
64
+ $O,
63
65
  {
64
- $then: $ResolveBranch<T, $O, [$Else]>,
66
+ $then: $ResolveBranch<T, $O, [$Else]>
65
67
  $else: IsTrue.$<T, $O>
66
68
  }
67
69
  >
@@ -13,7 +13,7 @@ import type { AnyConstructor } from './AnyConstructor.js'
13
13
  */
14
14
  export function isConstructor(subject: unknown): subject is AnyConstructor {
15
15
  try {
16
- new (subject as AnyConstructor)()
16
+ ;new (subject as AnyConstructor)()
17
17
  } catch (err: any) {
18
18
  const msg = err?.message as string | undefined
19
19
  if (msg && msg.indexOf('is not a constructor') >= 0) {
@@ -6,12 +6,7 @@ import type { And, Or } from '../predicates/logical.js'
6
6
  import type { IsSymbol } from '../symbol/is_symbol.js'
7
7
  import type { IdentityEqual } from './identity_equal.js'
8
8
 
9
- type BothNever<A, B, Both, One, None> = And<
10
- IsNever<A>,
11
- IsNever<B>,
12
- Both,
13
- Or<IsNever<A>, IsNever<B>, One, None>
14
- >
9
+ type BothNever<A, B, Both, One, None> = And<IsNever<A>, IsNever<B>, Both, Or<IsNever<A>, IsNever<B>, One, None>>
15
10
 
16
11
  type BothAny<A, B, Both, One, None> = And<IsAny<A>, IsAny<B>, Both, Or<IsAny<A>, IsAny<B>, One, None>>
17
12
 
@@ -37,37 +32,37 @@ type BothAny<A, B, Both, One, None> = And<IsAny<A>, IsAny<B>, Both, Or<IsAny<A>,
37
32
  */
38
33
  export type IsEqual<A, B, Then = true, Else = false> = [A, B] extends [B, A]
39
34
  ? BothNever<
40
- A,
41
- B,
42
- Then,
43
- Else,
44
- BothAny<
45
35
  A,
46
36
  B,
47
37
  Then,
48
38
  Else,
49
- IdentityEqual<
39
+ BothAny<
50
40
  A,
51
41
  B,
52
42
  Then,
53
- And<
54
- IsObject<A>,
55
- IsObject<B>,
56
- IdentityEqual<
57
- Properties<A>,
58
- Properties<B>,
59
- [A, B] extends [(...args: infer P1) => any, (...args: infer P2) => any]
60
- ? IsEqual<P1, P2, Then, Else>
61
- : Then,
62
- Else
63
- >,
64
- // `A` and `B` are narrowed, need to check again.
65
- // This is fixed in TS 5.0.2, but keeping it to support older versions.
66
- [A, B] extends [B, A] ? Then : Else
43
+ Else,
44
+ IdentityEqual<
45
+ A,
46
+ B,
47
+ Then,
48
+ And<
49
+ IsObject<A>,
50
+ IsObject<B>,
51
+ IdentityEqual<
52
+ Properties<A>,
53
+ Properties<B>,
54
+ [A, B] extends [(...args: infer P1) => any, (...args: infer P2) => any]
55
+ ? IsEqual<P1, P2, Then, Else>
56
+ : Then,
57
+ Else
58
+ >,
59
+ // `A` and `B` are narrowed, need to check again.
60
+ // This is fixed in TS 5.0.2, but keeping it to support older versions.
61
+ [A, B] extends [B, A] ? Then : Else
62
+ >
67
63
  >
68
64
  >
69
65
  >
70
- >
71
66
  : And<IsSymbol<A, { distributive: false }>, IsSymbol<B, { distributive: false }>, Then, Else>
72
67
 
73
68
  /**
@@ -1,9 +1,11 @@
1
-
2
1
  /**
3
2
  * This is a common equal check.
4
3
  * It is good for some basic cases, but not for all.
5
4
  */
6
- export type IdentityEqual<A, B, Then, Else> =
7
- (<_>() => _ extends (A & _) | _ ? 1 : 2) extends (<_>() => _ extends | (B & _) | _ ? 1 : 2)
5
+ export type IdentityEqual<A, B, Then, Else> = (<_>() => _ extends (A & _) | _ ? 1 : 2) extends <_>() => _ extends
6
+ | (B & _)
7
+ | _
8
+ ? 1
9
+ : 2
8
10
  ? Then
9
11
  : Else
@@ -15,9 +15,7 @@ import type { AnyFunction } from './any_function.js'
15
15
  * }> // () => void
16
16
  * ```
17
17
  */
18
- export type ExtractFunction<T extends AnyFunction> = T extends AnyFunction<infer P, infer R>
19
- ? (...args: P) => R
20
- : never
18
+ export type ExtractFunction<T extends AnyFunction> = T extends AnyFunction<infer P, infer R> ? (...args: P) => R : never
21
19
 
22
20
  /**
23
21
  * Extract the function signature from a composite function.
@@ -18,23 +18,23 @@ import type { $Unknown } from '../unknown/unknown.js'
18
18
  * ```
19
19
  */
20
20
 
21
- export type IsNotStrictFunction<T, $O extends IsNotStrictFunction.$Options = {}> = $SpecialType<T, {
22
- $any: $ResolveBranch<T, $O, [$Any, $Then]>,
23
- $unknown: $ResolveBranch<T, $O, [$Unknown, $Then]>,
24
- $never: $ResolveBranch<T, $O, [$Never, $Then]>,
25
- $else: (
26
- $ResolveOptions<[$O['distributive'], $SelectInvertStrict.$Default['distributive']]> extends true
27
- ? IsNotStrictFunction._D<T, $O>
28
- : $SelectInvertStrict._N<T, Function, $O>
29
- )
30
- }>
21
+ export type IsNotStrictFunction<T, $O extends IsNotStrictFunction.$Options = {}> = $SpecialType<
22
+ T,
23
+ {
24
+ $any: $ResolveBranch<T, $O, [$Any, $Then]>
25
+ $unknown: $ResolveBranch<T, $O, [$Unknown, $Then]>
26
+ $never: $ResolveBranch<T, $O, [$Never, $Then]>
27
+ $else: $ResolveOptions<[$O['distributive'], $SelectInvertStrict.$Default['distributive']]> extends true
28
+ ? IsNotStrictFunction._D<T, $O>
29
+ : $SelectInvertStrict._N<T, Function, $O>
30
+ }
31
+ >
31
32
 
32
33
  export namespace IsNotStrictFunction {
33
34
  export type $Options = $SelectInvertStrict.$Options
34
35
  export type $Default = $SelectInvertStrict.$Default
35
36
  export type $Branch = $SelectInvertStrict.$Branch
36
- export type _D<T, $O extends IsNotStrictFunction.$Options> =
37
- T extends Function
37
+ export type _D<T, $O extends IsNotStrictFunction.$Options> = T extends Function
38
38
  ? $ResolveBranch<T, $O, [T extends (...args: any[]) => any ? $Then : $Else]>
39
39
  : $ResolveBranch<T, $O, [$Then]>
40
40
  }
@@ -17,27 +17,25 @@ import type { $Unknown } from '../unknown/unknown.js'
17
17
  * type R = IsStrictFunction<(() => void) & { a: 1 }> // false
18
18
  * ```
19
19
  */
20
- export type IsStrictFunction<T, $O extends IsStrictFunction.$Options = {}> =
21
- $SpecialType<
22
- T,
23
- {
24
- $any: $ResolveBranch<T, $O, [$Any, $Else]>,
25
- $unknown: $ResolveBranch<T, $O, [$Unknown, $Else]>,
26
- $never: $ResolveBranch<T, $O, [$Never, $Else]>,
27
- $else: $ResolveOptions<[$O['distributive'], $SelectStrict.$Default['distributive']]> extends true
20
+ export type IsStrictFunction<T, $O extends IsStrictFunction.$Options = {}> = $SpecialType<
21
+ T,
22
+ {
23
+ $any: $ResolveBranch<T, $O, [$Any, $Else]>
24
+ $unknown: $ResolveBranch<T, $O, [$Unknown, $Else]>
25
+ $never: $ResolveBranch<T, $O, [$Never, $Else]>
26
+ $else: $ResolveOptions<[$O['distributive'], $SelectStrict.$Default['distributive']]> extends true
28
27
  ? IsStrictFunction._D<T, $O>
29
28
  : $SelectStrict._N<T, Function, $O>
30
- }
31
- >
29
+ }
30
+ >
32
31
 
33
32
  export namespace IsStrictFunction {
34
33
  export type $Options = $SelectStrict.$Options
35
34
  export type $Default = $SelectStrict.$Default
36
35
  export type $Branch = $SelectStrict.$Branch
37
- export type _D<T, $O extends $SelectStrict.$Options> =
38
- T extends Function
36
+ export type _D<T, $O extends $SelectStrict.$Options> = T extends Function
39
37
  ? T extends (...args: any[]) => any
40
- ? $ResolveBranch<T, $O, [$Else]>
41
- : $ResolveBranch<T, $O, [$Then]>
38
+ ? $ResolveBranch<T, $O, [$Else]>
39
+ : $ResolveBranch<T, $O, [$Then]>
42
40
  : $ResolveBranch<T, $O, [$Else]>
43
41
  }
@@ -6,9 +6,7 @@ export type Maybe<T> = Just<T> | None<T>
6
6
  export type Just<T> = Brand<'maybe', T> & { unwrap(): T }
7
7
  export type None<T> = Brand<'maybe', void> & { unwrap(): T }
8
8
 
9
- export function just<T>(
10
- value: T
11
- ): IsEqual<T, undefined | null> extends true ? None<T> : Just<Widen<NonNullable<T>>> {
9
+ export function just<T>(value: T): IsEqual<T, undefined | null> extends true ? None<T> : Just<Widen<NonNullable<T>>> {
12
10
  // eslint-disable-next-line @typescript-eslint/no-unsafe-return
13
11
  return {
14
12
  unwrap() {
@@ -9,10 +9,8 @@ import type { AnyFunction } from '../function/any_function.js'
9
9
  * @return The composed function will expect the parameters of the first function,
10
10
  * and return the result of the last function.
11
11
  */
12
- export function compose<FS extends AnyFunction[]>(
13
- ...fns: FS
14
- ): (...args: Parameters<Head<FS>>) => ReturnType<Last<FS>> {
12
+ export function compose<FS extends AnyFunction[]>(...fns: FS): (...args: Parameters<Head<FS>>) => ReturnType<Last<FS>> {
15
13
  // eslint-disable-next-line @typescript-eslint/no-unsafe-return
16
14
  // biome-ignore lint/performance/noAccumulatingSpread: https://github.com/biomejs/biome/issues/2183
17
- return (...args: any[]) => fns.reduce((args, fn) => [fn(...args)], args)[0]
15
+ return (...args: any[]) => fns.reduce((args, fn) => [fn(...args)], args)[0]
18
16
  }
@@ -27,7 +27,7 @@ export type ContextBuilder<Init extends ContextBaseShape, Ctx extends ContextBas
27
27
  */
28
28
  extend<Additional extends ContextBaseShape = ContextBaseShape>(
29
29
  extender: ContextExtender<Ctx, Additional>
30
- ): ContextBuilder<Init, LeftJoin<Ctx, Additional>>,
30
+ ): ContextBuilder<Init, LeftJoin<Ctx, Additional>>
31
31
  /**
32
32
  * Build and return the context.
33
33
  */
package/src/index.ts CHANGED
@@ -136,4 +136,3 @@ export * from './utils/index.js'
136
136
  export type { TypePlusOptions } from './utils/options.js'
137
137
  export type * from './void/is_not_void.js'
138
138
  export type * from './void/is_void.js'
139
-
package/src/math/abs.ts CHANGED
@@ -12,12 +12,22 @@ import type { $Else, $Then } from '../type_plus/branch/$selection.js'
12
12
  * Abs<-1n> // 1n // Where `1n` is a bigint
13
13
  * ```
14
14
  */
15
- export type Abs<N extends number | bigint, Fail = never> = IsNumber<
16
- N, IsNumber.$Branch
17
- > extends infer R
18
- ? R extends $Then ? [number] extends [N] ? Fail : `${N}` extends `-${infer P extends number}` ? P : N
19
- : R extends $Else ? IsBigint<N> extends infer R
20
- ? R extends true ? [bigint] extends [N] ? Fail : `${N}` extends `-${infer P extends bigint}` ? P : N
21
- : Fail
15
+ export type Abs<N extends number | bigint, Fail = never> = IsNumber<N, IsNumber.$Branch> extends infer R
16
+ ? R extends $Then
17
+ ? [number] extends [N]
18
+ ? Fail
19
+ : `${N}` extends `-${infer P extends number}`
20
+ ? P
21
+ : N
22
+ : R extends $Else
23
+ ? IsBigint<N> extends infer R
24
+ ? R extends true
25
+ ? [bigint] extends [N]
26
+ ? Fail
27
+ : `${N}` extends `-${infer P extends bigint}`
28
+ ? P
29
+ : N
30
+ : Fail
31
+ : never
32
+ : never
22
33
  : never
23
- : never : never
@@ -13,10 +13,10 @@ export type ToNegative<N extends number | bigint> = N extends number
13
13
  ? N extends 0
14
14
  ? 0
15
15
  : `-${N}` extends `${infer W extends number}`
16
- ? W
17
- : N
16
+ ? W
17
+ : N
18
18
  : N extends 0n
19
- ? 0n
20
- : `-${N}` extends `${infer W extends bigint}`
21
- ? W
22
- : N
19
+ ? 0n
20
+ : `-${N}` extends `${infer W extends bigint}`
21
+ ? W
22
+ : N
package/src/math/max.ts CHANGED
@@ -8,6 +8,6 @@ export type Max<A extends number | bigint, B extends number | bigint, Fail = nev
8
8
  ? IsNever<Result> extends true
9
9
  ? Fail
10
10
  : Result extends true
11
- ? A
12
- : B
11
+ ? A
12
+ : B
13
13
  : never