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
@@ -83,25 +83,24 @@ export namespace NumericStruct {
83
83
  */
84
84
  export type FromNumeric<N extends number | bigint, Fail = never> = N extends number
85
85
  ? number extends N
86
- ? Fail
87
- : ['number', DigitsStruct.FromNumber<N>]
86
+ ? Fail
87
+ : ['number', DigitsStruct.FromNumber<N>]
88
88
  : N extends bigint
89
- ? bigint extends N
90
- ? Fail
91
- : ['bigint', DigitsStruct.FromBigint<N>]
92
- : never
89
+ ? bigint extends N
90
+ ? Fail
91
+ : ['bigint', DigitsStruct.FromBigint<N>]
92
+ : never
93
93
 
94
94
  /**
95
95
  * Converts a `NumericStruct` to a number or bigint.
96
96
  *
97
97
  * It includes the normalization of the `NumericStruct`.
98
98
  */
99
- export type ToNumeric<M extends NumericStruct> = DigitsStruct.ToString<
100
- M[DIGITS_STRUCT]
101
- > extends infer S extends string
99
+ export type ToNumeric<M extends NumericStruct> = DigitsStruct.ToString<M[DIGITS_STRUCT]> extends infer S extends
100
+ string
102
101
  ? M[TYPE] extends 'bigint'
103
- ? StringToBigint<S, StringToNumber<S, `The value '${S}' cannot be represented as bigint or number`>>
104
- : StringToNumber<S, StringToBigint<S, `The value '${S}' cannot be represented as bigint or number`>>
102
+ ? StringToBigint<S, StringToNumber<S, `The value '${S}' cannot be represented as bigint or number`>>
103
+ : StringToNumber<S, StringToBigint<S, `The value '${S}' cannot be represented as bigint or number`>>
105
104
  : never
106
105
 
107
106
  export type Add<A extends NumericStruct, B extends NumericStruct> = [
@@ -126,8 +125,8 @@ type StringToBigint<S extends string, Fail> = S extends `${infer N extends bigin
126
125
  // TODO: move into `NumericHelpers`
127
126
  export type StringToNumber<S extends string, Fail> = S extends `${infer N extends number}`
128
127
  ? number extends N
129
- ? Fail
130
- : N
128
+ ? Fail
129
+ : N
131
130
  : Fail
132
131
 
133
132
  export type DigitsStruct = [Sign: '+' | '-', Digits: number[], Exponent: number]
@@ -144,21 +143,21 @@ export namespace DigitsStruct {
144
143
  */
145
144
  export type FromNumber<N extends number> = `${N}` extends `-${infer R}`
146
145
  ? R extends `${infer W}.${infer F}`
147
- ? [DigitArray.FromString<W>, DigitArray.FromString<F>] extends [
148
- infer WA extends number[],
149
- infer FA extends number[]
150
- ]
151
- ? ['-', DigitArray.TrimLeadingZeros<[...WA, ...FA]>, FA['length']]
152
- : never
153
- : ['-', DigitArray.FromString<R>, 0]
146
+ ? [DigitArray.FromString<W>, DigitArray.FromString<F>] extends [
147
+ infer WA extends number[],
148
+ infer FA extends number[]
149
+ ]
150
+ ? ['-', DigitArray.TrimLeadingZeros<[...WA, ...FA]>, FA['length']]
151
+ : never
152
+ : ['-', DigitArray.FromString<R>, 0]
154
153
  : `${N}` extends `${infer W}.${infer F}`
155
- ? [DigitArray.FromString<W>, DigitArray.FromString<F>] extends [
156
- infer WA extends number[],
157
- infer FA extends number[]
158
- ]
159
- ? ['+', DigitArray.TrimLeadingZeros<[...WA, ...FA]>, FA['length']]
160
- : never
161
- : ['+', DigitArray.FromString<`${N}`>, 0]
154
+ ? [DigitArray.FromString<W>, DigitArray.FromString<F>] extends [
155
+ infer WA extends number[],
156
+ infer FA extends number[]
157
+ ]
158
+ ? ['+', DigitArray.TrimLeadingZeros<[...WA, ...FA]>, FA['length']]
159
+ : never
160
+ : ['+', DigitArray.FromString<`${N}`>, 0]
162
161
 
163
162
  /**
164
163
  * Creates a `DigitsStruct` from bigint `N`.
@@ -176,22 +175,22 @@ export namespace DigitsStruct {
176
175
  */
177
176
  export type ToString<D extends DigitsStruct> = (
178
177
  PadStart<D[DIGITS], D[EXPONENT], 0> extends infer Padded extends number[]
179
- ? Padded['length'] extends D[EXPONENT]
180
- ? DigitArray.ToString<[0, '.', ...DigitArray.TrimTrailingZeros<Padded>]>
181
- : SplitFloat<Padded, D[EXPONENT]> extends [infer W extends number[], infer F extends number[]]
182
- ? F extends []
183
- ? DigitArray.ToString<W>
184
- : DigitArray.ToString<[...W, '.', ...DigitArray.TrimTrailingZeros<F>]>
185
- : never
186
- : never
178
+ ? Padded['length'] extends D[EXPONENT]
179
+ ? DigitArray.ToString<[0, '.', ...DigitArray.TrimTrailingZeros<Padded>]>
180
+ : SplitFloat<Padded, D[EXPONENT]> extends [infer W extends number[], infer F extends number[]]
181
+ ? F extends []
182
+ ? DigitArray.ToString<W>
183
+ : DigitArray.ToString<[...W, '.', ...DigitArray.TrimTrailingZeros<F>]>
184
+ : never
185
+ : never
187
186
  ) extends infer R
188
187
  ? R extends '0'
189
- ? R
190
- : R extends string
191
- ? D[SIGN] extends '-'
192
- ? `-${R}`
193
- : R
194
- : never
188
+ ? R
189
+ : R extends string
190
+ ? D[SIGN] extends '-'
191
+ ? `-${R}`
192
+ : R
193
+ : never
195
194
  : never
196
195
 
197
196
  /**
@@ -202,10 +201,10 @@ export namespace DigitsStruct {
202
201
  type SplitFloat<A extends number[], I extends number, F extends number[] = []> = I extends 0
203
202
  ? [A, []]
204
203
  : F['length'] extends I
205
- ? [A, F]
206
- : A extends [...infer H extends number[], infer T extends number]
207
- ? SplitFloat<H, I, [T, ...F]>
208
- : never
204
+ ? [A, F]
205
+ : A extends [...infer H extends number[], infer T extends number]
206
+ ? SplitFloat<H, I, [T, ...F]>
207
+ : never
209
208
 
210
209
  /**
211
210
  * Normalizes a `DigitsStruct`.
@@ -222,17 +221,13 @@ export namespace DigitsStruct {
222
221
  ? Normalize<FlipSign<N>, R>
223
222
  : [N[SIGN], DigitArray.CarryDigits<N[DIGITS]>, N[EXPONENT]]
224
223
 
225
- type FlipSign<
226
- D extends DigitsStruct,
227
- I extends number[] = D[DIGITS],
228
- R extends number[] = []
229
- > = I extends []
224
+ type FlipSign<D extends DigitsStruct, I extends number[] = D[DIGITS], R extends number[] = []> = I extends []
230
225
  ? D[SIGN] extends '-'
231
- ? ['+', R, D[EXPONENT]]
232
- : ['-', R, D[EXPONENT]]
226
+ ? ['+', R, D[EXPONENT]]
227
+ : ['-', R, D[EXPONENT]]
233
228
  : I extends [infer H extends number, ...infer T extends number[]]
234
- ? FlipSign<D, T, [...R, Digit.FlipSign<H>]>
235
- : never
229
+ ? FlipSign<D, T, [...R, Digit.FlipSign<H>]>
230
+ : never
236
231
 
237
232
  /**
238
233
  * Add `A` and `B`.
@@ -245,14 +240,14 @@ export namespace DigitsStruct {
245
240
  infer BB extends DigitsStruct
246
241
  ]
247
242
  ? [BA[SIGN], BB[SIGN]] extends ['+', '+']
248
- ? Normalize<['+', DigitArray.Add<BA[DIGITS], BB[DIGITS]>, BA[EXPONENT]]>
249
- : [BA[SIGN], BB[SIGN]] extends ['+', '-']
250
- ? Normalize<['+', DigitArray.Subtract<BA[DIGITS], BB[DIGITS]>, BA[EXPONENT]]>
251
- : [BA[SIGN], BB[SIGN]] extends ['-', '+']
252
- ? Normalize<['+', DigitArray.Subtract<BB[DIGITS], BA[DIGITS]>, BB[EXPONENT]]>
253
- : [BA[SIGN], BB[SIGN]] extends ['-', '-']
254
- ? Normalize<['-', DigitArray.Add<BA[DIGITS], BB[DIGITS]>, BA[EXPONENT]]>
255
- : never
243
+ ? Normalize<['+', DigitArray.Add<BA[DIGITS], BB[DIGITS]>, BA[EXPONENT]]>
244
+ : [BA[SIGN], BB[SIGN]] extends ['+', '-']
245
+ ? Normalize<['+', DigitArray.Subtract<BA[DIGITS], BB[DIGITS]>, BA[EXPONENT]]>
246
+ : [BA[SIGN], BB[SIGN]] extends ['-', '+']
247
+ ? Normalize<['+', DigitArray.Subtract<BB[DIGITS], BA[DIGITS]>, BB[EXPONENT]]>
248
+ : [BA[SIGN], BB[SIGN]] extends ['-', '-']
249
+ ? Normalize<['-', DigitArray.Add<BA[DIGITS], BB[DIGITS]>, BA[EXPONENT]]>
250
+ : never
256
251
  : never
257
252
 
258
253
  export type Subtract<A extends DigitsStruct, B extends DigitsStruct> = Balance<A, B> extends [
@@ -260,14 +255,14 @@ export namespace DigitsStruct {
260
255
  infer BB extends DigitsStruct
261
256
  ]
262
257
  ? [BA[SIGN], BB[SIGN]] extends ['+', '+']
263
- ? Normalize<['+', DigitArray.Subtract<BA[DIGITS], BB[DIGITS]>, BA[EXPONENT]]>
264
- : [BA[SIGN], BB[SIGN]] extends ['+', '-']
265
- ? Normalize<['+', DigitArray.Add<BA[DIGITS], BB[DIGITS]>, BA[EXPONENT]]>
266
- : [BA[SIGN], BB[SIGN]] extends ['-', '+']
267
- ? Normalize<['-', DigitArray.Add<BB[DIGITS], BA[DIGITS]>, BA[EXPONENT]]>
268
- : [BA[SIGN], BB[SIGN]] extends ['-', '-']
269
- ? Normalize<['-', DigitArray.Subtract<BA[DIGITS], BB[DIGITS]>, BA[EXPONENT]]>
270
- : never
258
+ ? Normalize<['+', DigitArray.Subtract<BA[DIGITS], BB[DIGITS]>, BA[EXPONENT]]>
259
+ : [BA[SIGN], BB[SIGN]] extends ['+', '-']
260
+ ? Normalize<['+', DigitArray.Add<BA[DIGITS], BB[DIGITS]>, BA[EXPONENT]]>
261
+ : [BA[SIGN], BB[SIGN]] extends ['-', '+']
262
+ ? Normalize<['-', DigitArray.Add<BB[DIGITS], BA[DIGITS]>, BA[EXPONENT]]>
263
+ : [BA[SIGN], BB[SIGN]] extends ['-', '-']
264
+ ? Normalize<['-', DigitArray.Subtract<BA[DIGITS], BB[DIGITS]>, BA[EXPONENT]]>
265
+ : never
271
266
  : never
272
267
 
273
268
  export type Multiply<A extends DigitsStruct, B extends DigitsStruct> = NumericAdd<
@@ -275,14 +270,14 @@ export namespace DigitsStruct {
275
270
  B[EXPONENT]
276
271
  > extends infer Exp extends number
277
272
  ? [A[SIGN], B[SIGN]] extends ['+', '+']
278
- ? Normalize<['+', DigitArray.Multiply<A[DIGITS], B[DIGITS]>, Exp]>
279
- : [A[SIGN], B[SIGN]] extends ['+', '-']
280
- ? Normalize<['-', DigitArray.Multiply<A[DIGITS], B[DIGITS]>, Exp]>
281
- : [A[SIGN], B[SIGN]] extends ['-', '+']
282
- ? Normalize<['-', DigitArray.Multiply<B[DIGITS], A[DIGITS]>, Exp]>
283
- : [A[SIGN], B[SIGN]] extends ['-', '-']
284
- ? Normalize<['+', DigitArray.Multiply<A[DIGITS], B[DIGITS]>, Exp]>
285
- : never
273
+ ? Normalize<['+', DigitArray.Multiply<A[DIGITS], B[DIGITS]>, Exp]>
274
+ : [A[SIGN], B[SIGN]] extends ['+', '-']
275
+ ? Normalize<['-', DigitArray.Multiply<A[DIGITS], B[DIGITS]>, Exp]>
276
+ : [A[SIGN], B[SIGN]] extends ['-', '+']
277
+ ? Normalize<['-', DigitArray.Multiply<B[DIGITS], A[DIGITS]>, Exp]>
278
+ : [A[SIGN], B[SIGN]] extends ['-', '-']
279
+ ? Normalize<['+', DigitArray.Multiply<A[DIGITS], B[DIGITS]>, Exp]>
280
+ : never
286
281
  : never
287
282
 
288
283
  /**
@@ -293,8 +288,8 @@ export namespace DigitsStruct {
293
288
  B[EXPONENT]
294
289
  > extends [infer Pads extends number[], infer Longer]
295
290
  ? Longer extends 'A'
296
- ? [A, [B[SIGN], DigitArray.TrimLeadingZeros<[...B[DIGITS], ...Pads]>, A[EXPONENT]]]
297
- : [[A[SIGN], DigitArray.TrimLeadingZeros<[...A[DIGITS], ...Pads]>, B[EXPONENT]], B]
291
+ ? [A, [B[SIGN], DigitArray.TrimLeadingZeros<[...B[DIGITS], ...Pads]>, A[EXPONENT]]]
292
+ : [[A[SIGN], DigitArray.TrimLeadingZeros<[...A[DIGITS], ...Pads]>, B[EXPONENT]], B]
298
293
  : never
299
294
 
300
295
  type GetBalancePadding<
@@ -305,76 +300,76 @@ export namespace DigitsStruct {
305
300
  > = A extends B
306
301
  ? [[], 'A']
307
302
  : R extends []
308
- ? // have not reach min yet
309
- C['length'] extends A
310
- ? GetBalancePadding<A, B, [0, ...C], [0]>
311
- : C['length'] extends B
312
- ? GetBalancePadding<A, B, [0, ...C], [0, ...R]>
313
- : GetBalancePadding<A, B, [0, ...C], []>
314
- : C['length'] extends A
315
- ? [R, 'A']
316
- : C['length'] extends B
317
- ? [R, 'B']
318
- : GetBalancePadding<A, B, [0, ...C], [0, ...R]>
303
+ ? // have not reach min yet
304
+ C['length'] extends A
305
+ ? GetBalancePadding<A, B, [0, ...C], [0]>
306
+ : C['length'] extends B
307
+ ? GetBalancePadding<A, B, [0, ...C], [0, ...R]>
308
+ : GetBalancePadding<A, B, [0, ...C], []>
309
+ : C['length'] extends A
310
+ ? [R, 'A']
311
+ : C['length'] extends B
312
+ ? [R, 'B']
313
+ : GetBalancePadding<A, B, [0, ...C], [0, ...R]>
319
314
 
320
315
  /**
321
316
  * This is used to align the `NumberStruct` during `Add/Subtract`.
322
317
  */
323
- export type GetMinPadEnd<
324
- A extends number,
325
- B extends number,
326
- R extends number[] = []
327
- > = R['length'] extends A ? [R, 'B'] : R['length'] extends B ? [R, 'A'] : GetMinPadEnd<A, B, [0, ...R]>
318
+ export type GetMinPadEnd<A extends number, B extends number, R extends number[] = []> = R['length'] extends A
319
+ ? [R, 'B']
320
+ : R['length'] extends B
321
+ ? [R, 'A']
322
+ : GetMinPadEnd<A, B, [0, ...R]>
328
323
  }
329
324
 
330
325
  export namespace DigitArray {
331
326
  export type FromString<S extends string> = S extends `1${infer L}`
332
327
  ? [1, ...FromString<L>]
333
328
  : S extends `2${infer L}`
334
- ? [2, ...FromString<L>]
335
- : S extends `3${infer L}`
336
- ? [3, ...FromString<L>]
337
- : S extends `4${infer L}`
338
- ? [4, ...FromString<L>]
339
- : S extends `5${infer L}`
340
- ? [5, ...FromString<L>]
341
- : S extends `6${infer L}`
342
- ? [6, ...FromString<L>]
343
- : S extends `7${infer L}`
344
- ? [7, ...FromString<L>]
345
- : S extends `8${infer L}`
346
- ? [8, ...FromString<L>]
347
- : S extends `9${infer L}`
348
- ? [9, ...FromString<L>]
349
- : S extends `0${infer L}`
350
- ? [0, ...FromString<L>]
351
- : S extends `-1${infer L}`
352
- ? [-1, ...FromString<L>]
353
- : S extends `-2${infer L}`
354
- ? [-2, ...FromString<L>]
355
- : S extends `-3${infer L}`
356
- ? [-3, ...FromString<L>]
357
- : S extends `-4${infer L}`
358
- ? [-4, ...FromString<L>]
359
- : S extends `-5${infer L}`
360
- ? [-5, ...FromString<L>]
361
- : S extends `-6${infer L}`
362
- ? [-6, ...FromString<L>]
363
- : S extends `-7${infer L}`
364
- ? [-7, ...FromString<L>]
365
- : S extends `-8${infer L}`
366
- ? [-8, ...FromString<L>]
367
- : S extends `-9${infer L}`
368
- ? [-9, ...FromString<L>]
369
- : S extends `-0${infer L}`
370
- ? [-0, ...FromString<L>]
371
- : []
329
+ ? [2, ...FromString<L>]
330
+ : S extends `3${infer L}`
331
+ ? [3, ...FromString<L>]
332
+ : S extends `4${infer L}`
333
+ ? [4, ...FromString<L>]
334
+ : S extends `5${infer L}`
335
+ ? [5, ...FromString<L>]
336
+ : S extends `6${infer L}`
337
+ ? [6, ...FromString<L>]
338
+ : S extends `7${infer L}`
339
+ ? [7, ...FromString<L>]
340
+ : S extends `8${infer L}`
341
+ ? [8, ...FromString<L>]
342
+ : S extends `9${infer L}`
343
+ ? [9, ...FromString<L>]
344
+ : S extends `0${infer L}`
345
+ ? [0, ...FromString<L>]
346
+ : S extends `-1${infer L}`
347
+ ? [-1, ...FromString<L>]
348
+ : S extends `-2${infer L}`
349
+ ? [-2, ...FromString<L>]
350
+ : S extends `-3${infer L}`
351
+ ? [-3, ...FromString<L>]
352
+ : S extends `-4${infer L}`
353
+ ? [-4, ...FromString<L>]
354
+ : S extends `-5${infer L}`
355
+ ? [-5, ...FromString<L>]
356
+ : S extends `-6${infer L}`
357
+ ? [-6, ...FromString<L>]
358
+ : S extends `-7${infer L}`
359
+ ? [-7, ...FromString<L>]
360
+ : S extends `-8${infer L}`
361
+ ? [-8, ...FromString<L>]
362
+ : S extends `-9${infer L}`
363
+ ? [-9, ...FromString<L>]
364
+ : S extends `-0${infer L}`
365
+ ? [-0, ...FromString<L>]
366
+ : []
372
367
 
373
368
  export type ToString<A extends Array<number | string>> = number extends A['length']
374
369
  ? ''
375
370
  : A['length'] extends 0
376
- ? ''
377
- : `${A[0]}${ToString<Tail<A>>}`
371
+ ? ''
372
+ : `${A[0]}${ToString<Tail<A>>}`
378
373
 
379
374
  /**
380
375
  * [0, 0, -1] => [-1]
@@ -385,70 +380,69 @@ export namespace DigitArray {
385
380
  export type TrimLeadingZeros<T extends number[]> = T extends [0]
386
381
  ? T
387
382
  : T extends [0, ...infer Tail extends number[]]
388
- ? TrimLeadingZeros<Tail>
389
- : T
383
+ ? TrimLeadingZeros<Tail>
384
+ : T
390
385
  export type TrimTrailingZeros<T extends number[]> = T extends [0]
391
386
  ? T
392
387
  : T extends [...infer Tail extends number[], 0]
393
- ? TrimTrailingZeros<Tail>
394
- : T
388
+ ? TrimTrailingZeros<Tail>
389
+ : T
395
390
 
396
391
  export type Add<A extends number[], B extends number[], R extends number[] = []> = A extends []
397
392
  ? B extends []
398
- ? R
399
- : B extends [...infer BH extends number[], infer BL extends number]
400
- ? Add<[], BH, [BL, ...R]>
401
- : never
393
+ ? R
394
+ : B extends [...infer BH extends number[], infer BL extends number]
395
+ ? Add<[], BH, [BL, ...R]>
396
+ : never
402
397
  : B extends []
403
- ? A extends [...infer AH extends number[], infer AL extends number]
404
- ? Add<AH, [], [AL, ...R]>
405
- : never
406
- : [A, B] extends [
407
- [...infer AH extends number[], infer AL extends number],
408
- [...infer BH extends number[], infer BL extends number]
409
- ]
410
- ? Add<AH, BH, [Digit.Add<AL, BL>, ...R]>
411
- : never
398
+ ? A extends [...infer AH extends number[], infer AL extends number]
399
+ ? Add<AH, [], [AL, ...R]>
400
+ : never
401
+ : [A, B] extends [
402
+ [...infer AH extends number[], infer AL extends number],
403
+ [...infer BH extends number[], infer BL extends number]
404
+ ]
405
+ ? Add<AH, BH, [Digit.Add<AL, BL>, ...R]>
406
+ : never
412
407
 
413
408
  export type Subtract<A extends number[], B extends number[], R extends number[] = []> = A extends []
414
409
  ? B extends []
415
- ? TrimLeadingZeros<R>
416
- : B extends [...infer BH extends number[], infer BL extends number]
417
- ? Subtract<[], BH, [ToNegative<BL>, ...R]>
418
- : never
410
+ ? TrimLeadingZeros<R>
411
+ : B extends [...infer BH extends number[], infer BL extends number]
412
+ ? Subtract<[], BH, [ToNegative<BL>, ...R]>
413
+ : never
419
414
  : B extends []
420
- ? A extends [...infer AH extends number[], infer AL extends number]
421
- ? Subtract<AH, [], [AL, ...R]>
422
- : never
423
- : [A, B] extends [
424
- [...infer AH extends number[], infer AL extends number],
425
- [...infer BH extends number[], infer BL extends number]
426
- ]
427
- ? Subtract<AH, BH, [Digit.Subtract<AL, BL>, ...R]>
428
- : never
415
+ ? A extends [...infer AH extends number[], infer AL extends number]
416
+ ? Subtract<AH, [], [AL, ...R]>
417
+ : never
418
+ : [A, B] extends [
419
+ [...infer AH extends number[], infer AL extends number],
420
+ [...infer BH extends number[], infer BL extends number]
421
+ ]
422
+ ? Subtract<AH, BH, [Digit.Subtract<AL, BL>, ...R]>
423
+ : never
429
424
 
430
425
  export type Multiply<A extends number[], B extends number[], R extends number[][] = []> = B extends []
431
426
  ? RecursiveAdd<R>
432
427
  : B extends [infer Head extends number, ...infer Tail extends number[]]
433
- ? Multiply<A, Tail, [...R, CarryDigits<MultiplyArray<A, Head, Zeros<Tail['length']>>>]>
434
- : never
428
+ ? Multiply<A, Tail, [...R, CarryDigits<MultiplyArray<A, Head, Zeros<Tail['length']>>>]>
429
+ : never
435
430
 
436
- type Zeros<N extends number, R extends number[] = []> = N extends unknown ? R['length'] extends N ? R : Zeros<N, [0, ...R]> : never
431
+ type Zeros<N extends number, R extends number[] = []> = N extends unknown
432
+ ? R['length'] extends N
433
+ ? R
434
+ : Zeros<N, [0, ...R]>
435
+ : never
437
436
 
438
- type MultiplyArray<
439
- A extends number[],
440
- B extends number,
441
- Pad extends number[],
442
- R extends number[] = []
443
- > = B extends 0
437
+ type MultiplyArray<A extends number[], B extends number, Pad extends number[], R extends number[] = []> = B extends 0
444
438
  ? [0]
445
439
  : B extends 1
446
- ? [...A, ...Pad]
447
- : A extends []
448
- ? [...R, ...Pad]
449
- : A extends [infer H extends number, ...infer T extends number[]]
450
- ? MultiplyArray<T, B, Pad, [...R, Digit.Multiply<H, B>]>
451
- : never
440
+ ? [...A, ...Pad]
441
+ : A extends []
442
+ ? [...R, ...Pad]
443
+ : A extends [infer H extends number, ...infer T extends number[]]
444
+ ? MultiplyArray<T, B, Pad, [...R, Digit.Multiply<H, B>]>
445
+ : never
452
446
 
453
447
  /**
454
448
  * Recursively add digit arrays.
@@ -458,40 +452,40 @@ export namespace DigitArray {
458
452
  type RecursiveAdd<E extends number[][], R extends number[] = []> = E extends []
459
453
  ? R
460
454
  : E extends [infer H extends number[], ...infer T extends number[][]]
461
- ? RecursiveAdd<T, CarryDigits<Add<R, H>>>
462
- : never
455
+ ? RecursiveAdd<T, CarryDigits<Add<R, H>>>
456
+ : never
463
457
 
464
458
  export type CarryDigits<N extends number[], R extends number[] = []> = N extends []
465
459
  ? TrimLeadingZeros<R>
466
460
  : N extends [infer Tail extends number]
467
- ? `${Tail}` extends `${infer T1 extends number}${infer T2 extends number}`
468
- ? CarryDigits<[], [T1, T2, ...R]>
469
- : `${Tail}` extends `-${infer T1 extends number}${infer T2 extends number}`
470
- ? `-${T1}` extends `${infer NT extends number}`
471
- ? CarryDigits<[], [NT, T2, ...R]>
472
- : never
473
- : CarryDigits<[], [Tail, ...R]>
474
- : N extends [infer Head extends number, infer Tail extends number]
475
- ? `${Tail}` extends `${infer T1 extends number}${infer T2 extends number}`
476
- ? CarryDigits<[Digit.Add<Head, T1>], [T2, ...R]>
477
- : `${Tail}` extends `-${infer T1 extends number}${infer T2 extends number}`
478
- ? `-${T1}` extends `${infer NT extends number}`
479
- ? CarryDigits<[Digit.Add<Head, NT>], [T2, ...R]>
480
- : never
481
- : `${Tail}` extends `-${number}`
482
- ? CarryDigits<[Digit.Add<Head, -1>], [Digit.Plus10[Tail], ...R]>
483
- : CarryDigits<[Head], [Tail, ...R]>
484
- : N extends [...infer Heads extends number[], infer Head extends number, infer Tail extends number]
485
- ? `${Tail}` extends `${infer T1 extends number}${infer T2 extends number}`
486
- ? CarryDigits<[...Heads, Digit.Add<Head, T1>], [T2, ...R]>
487
- : `${Tail}` extends `-${infer T1 extends number}${infer T2 extends number}`
488
- ? `-${T1}` extends `${infer NT extends number}`
489
- ? CarryDigits<[...Heads, Digit.Add<Head, NT>], [T2, ...R]>
490
- : never
491
- : `${Tail}` extends `-${number}`
492
- ? CarryDigits<[...Heads, Digit.Add<Head, -1>], [Digit.Plus10[Tail], ...R]>
493
- : CarryDigits<[...Heads, Head], [Tail, ...R]>
494
- : never
461
+ ? `${Tail}` extends `${infer T1 extends number}${infer T2 extends number}`
462
+ ? CarryDigits<[], [T1, T2, ...R]>
463
+ : `${Tail}` extends `-${infer T1 extends number}${infer T2 extends number}`
464
+ ? `-${T1}` extends `${infer NT extends number}`
465
+ ? CarryDigits<[], [NT, T2, ...R]>
466
+ : never
467
+ : CarryDigits<[], [Tail, ...R]>
468
+ : N extends [infer Head extends number, infer Tail extends number]
469
+ ? `${Tail}` extends `${infer T1 extends number}${infer T2 extends number}`
470
+ ? CarryDigits<[Digit.Add<Head, T1>], [T2, ...R]>
471
+ : `${Tail}` extends `-${infer T1 extends number}${infer T2 extends number}`
472
+ ? `-${T1}` extends `${infer NT extends number}`
473
+ ? CarryDigits<[Digit.Add<Head, NT>], [T2, ...R]>
474
+ : never
475
+ : `${Tail}` extends `-${number}`
476
+ ? CarryDigits<[Digit.Add<Head, -1>], [Digit.Plus10[Tail], ...R]>
477
+ : CarryDigits<[Head], [Tail, ...R]>
478
+ : N extends [...infer Heads extends number[], infer Head extends number, infer Tail extends number]
479
+ ? `${Tail}` extends `${infer T1 extends number}${infer T2 extends number}`
480
+ ? CarryDigits<[...Heads, Digit.Add<Head, T1>], [T2, ...R]>
481
+ : `${Tail}` extends `-${infer T1 extends number}${infer T2 extends number}`
482
+ ? `-${T1}` extends `${infer NT extends number}`
483
+ ? CarryDigits<[...Heads, Digit.Add<Head, NT>], [T2, ...R]>
484
+ : never
485
+ : `${Tail}` extends `-${number}`
486
+ ? CarryDigits<[...Heads, Digit.Add<Head, -1>], [Digit.Plus10[Tail], ...R]>
487
+ : CarryDigits<[...Heads, Head], [Tail, ...R]>
488
+ : never
495
489
  }
496
490
 
497
491
  export namespace Digit {
@@ -503,19 +497,19 @@ export namespace Digit {
503
497
  */
504
498
  export type Add<A extends number, B extends number> = `${A}` extends `-${infer AD extends number}`
505
499
  ? `${B}` extends `-${infer BD extends number}`
506
- ? ToNegative<PositiveEntryAdd<AD, BD>>
507
- : Subtract<B, AD>
500
+ ? ToNegative<PositiveEntryAdd<AD, BD>>
501
+ : Subtract<B, AD>
508
502
  : `${B}` extends `-${infer BD extends number}`
509
- ? Subtract<A, BD>
510
- : PositiveEntryAdd<A, B>
503
+ ? Subtract<A, BD>
504
+ : PositiveEntryAdd<A, B>
511
505
 
512
506
  export type FlipSign<T extends number> = T extends 0
513
507
  ? 0
514
508
  : `${T}` extends `-${infer R extends number}`
515
- ? R
516
- : `-${T}` extends `${infer R extends number}`
517
- ? R
518
- : never
509
+ ? R
510
+ : `-${T}` extends `${infer R extends number}`
511
+ ? R
512
+ : never
519
513
 
520
514
  type PositiveEntryAdd<A extends number, B extends number> = [
521
515
  [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
@@ -612,10 +606,10 @@ export namespace Digit {
612
606
  ]
613
607
  ? Subtract<A2, B2>
614
608
  : `${A}` extends `${number}${infer A2 extends number}`
615
- ? Subtract<A2, B>
616
- : `${B}` extends `${number}${infer B2 extends number}`
617
- ? Subtract<A, B2>
618
- : SingleDigitSubtract<A, B>
609
+ ? Subtract<A2, B>
610
+ : `${B}` extends `${number}${infer B2 extends number}`
611
+ ? Subtract<A, B2>
612
+ : SingleDigitSubtract<A, B>
619
613
 
620
614
  export type SingleDigitSubtract<A extends number, B extends number> = [
621
615
  [0, -1, -2, -3, -4, -5, -6, -7, -8, -9],
@@ -631,14 +625,14 @@ export namespace Digit {
631
625
  ][A][B]
632
626
 
633
627
  export type Plus10 = { [k in number]: number } & {
634
- '-1': 9,
635
- '-2': 8,
636
- '-3': 7,
637
- '-4': 6,
638
- '-5': 5,
639
- '-6': 4,
640
- '-7': 3,
641
- '-8': 2,
628
+ '-1': 9
629
+ '-2': 8
630
+ '-3': 7
631
+ '-4': 6
632
+ '-5': 5
633
+ '-6': 4
634
+ '-7': 3
635
+ '-8': 2
642
636
  '-9': 1
643
637
  }
644
638
  export type Multiply<A extends number, B extends number> = [