type-plus 8.0.0-beta.0 → 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 (1257) hide show
  1. package/esm/any/any.d.ts +49 -0
  2. package/esm/any/any.d.ts.map +1 -0
  3. package/esm/any/any.js +2 -0
  4. package/esm/any/any.js.map +1 -0
  5. package/esm/any/is_any.d.ts +55 -0
  6. package/esm/any/is_any.d.ts.map +1 -0
  7. package/esm/any/is_any.js +2 -0
  8. package/esm/any/is_any.js.map +1 -0
  9. package/esm/any/is_not_any.d.ts +55 -0
  10. package/esm/any/is_not_any.d.ts.map +1 -0
  11. package/esm/any/is_not_any.js +2 -0
  12. package/esm/any/is_not_any.js.map +1 -0
  13. package/esm/array/array.at.d.ts +10 -3
  14. package/esm/array/array.at.d.ts.map +1 -1
  15. package/esm/array/array.at.js.map +1 -1
  16. package/esm/array/array.entries.d.ts +6 -3
  17. package/esm/array/array.entries.d.ts.map +1 -1
  18. package/esm/array/array.entries.js.map +1 -1
  19. package/esm/array/array.find_last.d.ts +5 -2
  20. package/esm/array/array.find_last.d.ts.map +1 -1
  21. package/esm/array/array.find_last.js.map +1 -1
  22. package/esm/array/array.reverse.d.ts.map +1 -1
  23. package/esm/array/array.reverse.js.map +1 -1
  24. package/esm/array/array.some.d.ts +2 -2
  25. package/esm/array/array.some.d.ts.map +1 -1
  26. package/esm/array/array.some.js.map +1 -1
  27. package/esm/array/array_plus.common_prop_keys.d.ts +8 -4
  28. package/esm/array/array_plus.common_prop_keys.d.ts.map +1 -1
  29. package/esm/array/array_plus.common_prop_keys.js.map +1 -1
  30. package/esm/array/array_plus.concat.d.ts.map +1 -1
  31. package/esm/array/array_plus.concat.js.map +1 -1
  32. package/esm/array/array_plus.d.ts.map +1 -1
  33. package/esm/array/array_plus.drop_match.d.ts +1 -3
  34. package/esm/array/array_plus.drop_match.d.ts.map +1 -1
  35. package/esm/array/array_plus.drop_match.js.map +1 -1
  36. package/esm/array/array_plus.element_match.d.ts +7 -2
  37. package/esm/array/array_plus.element_match.d.ts.map +1 -1
  38. package/esm/array/array_plus.element_match.js.map +1 -1
  39. package/esm/array/array_plus.filter.d.ts +8 -4
  40. package/esm/array/array_plus.filter.d.ts.map +1 -1
  41. package/esm/array/array_plus.filter.js.map +1 -1
  42. package/esm/array/array_plus.find.d.ts +9 -6
  43. package/esm/array/array_plus.find.d.ts.map +1 -1
  44. package/esm/array/array_plus.find.js.map +1 -1
  45. package/esm/array/array_plus.index_at.d.ts +21 -7
  46. package/esm/array/array_plus.index_at.d.ts.map +1 -1
  47. package/esm/array/array_plus.index_at.js +82 -0
  48. package/esm/array/array_plus.index_at.js.map +1 -1
  49. package/esm/array/array_plus.is_index_out_of_bound.d.ts +6 -3
  50. package/esm/array/array_plus.is_index_out_of_bound.d.ts.map +1 -1
  51. package/esm/array/array_plus.is_index_out_of_bound.js.map +1 -1
  52. package/esm/array/array_plus.is_readonly.d.ts +9 -4
  53. package/esm/array/array_plus.is_readonly.d.ts.map +1 -1
  54. package/esm/array/array_plus.is_readonly.js.map +1 -1
  55. package/esm/array/array_plus.js.map +1 -1
  56. package/esm/array/array_plus.pad_start.d.ts.map +1 -1
  57. package/esm/array/array_plus.pad_start.js.map +1 -1
  58. package/esm/array/array_plus.split_at.d.ts +22 -12
  59. package/esm/array/array_plus.split_at.d.ts.map +1 -1
  60. package/esm/array/array_plus.split_at.js.map +1 -1
  61. package/esm/array/filter.d.ts.map +1 -1
  62. package/esm/array/filter.js.map +1 -1
  63. package/esm/array/find_first.d.ts +5 -2
  64. package/esm/array/find_first.d.ts.map +1 -1
  65. package/esm/array/find_first.js.map +1 -1
  66. package/esm/array/head.d.ts +6 -4
  67. package/esm/array/head.d.ts.map +1 -1
  68. package/esm/array/head.js.map +1 -1
  69. package/esm/array/intersect_of_props.d.ts.map +1 -1
  70. package/esm/array/intersect_of_props.js.map +1 -1
  71. package/esm/array/is_array.d.ts +89 -0
  72. package/esm/array/is_array.d.ts.map +1 -0
  73. package/esm/array/is_array.js +2 -0
  74. package/esm/array/is_array.js.map +1 -0
  75. package/esm/array/is_not_array.d.ts +89 -0
  76. package/esm/array/is_not_array.d.ts.map +1 -0
  77. package/esm/array/is_not_array.js +2 -0
  78. package/esm/array/is_not_array.js.map +1 -0
  79. package/esm/array/last.d.ts +6 -4
  80. package/esm/array/last.d.ts.map +1 -1
  81. package/esm/array/last.js.map +1 -1
  82. package/esm/array/literal_array.d.ts.map +1 -1
  83. package/esm/array/literal_array.js.map +1 -1
  84. package/esm/array/loose_array_type.d.ts +7 -4
  85. package/esm/array/loose_array_type.d.ts.map +1 -1
  86. package/esm/array/loose_array_type.js.map +1 -1
  87. package/esm/array/pad_start.d.ts.map +1 -1
  88. package/esm/array/pad_start.js.map +1 -1
  89. package/esm/array/reduce_while.d.ts.map +1 -1
  90. package/esm/array/reduce_while.js.map +1 -1
  91. package/esm/array/reverse.d.ts.map +1 -1
  92. package/esm/array/reverse.js.map +1 -1
  93. package/esm/array/union_of_props.d.ts.map +1 -1
  94. package/esm/array/union_of_props.js.map +1 -1
  95. package/esm/array/union_of_values.d.ts.map +1 -1
  96. package/esm/array/union_of_values.js.map +1 -1
  97. package/esm/assertion/assert_type.d.ts +2 -2
  98. package/esm/assertion/assert_type.d.ts.map +1 -1
  99. package/esm/assertion/assert_type.js +42 -44
  100. package/esm/assertion/assert_type.js.map +1 -1
  101. package/esm/bigint/cast.d.ts.map +1 -1
  102. package/esm/bigint/cast.js.map +1 -1
  103. package/esm/bigint/is_bigint.d.ts +95 -0
  104. package/esm/bigint/is_bigint.d.ts.map +1 -0
  105. package/esm/bigint/is_bigint.js +2 -0
  106. package/esm/bigint/is_bigint.js.map +1 -0
  107. package/esm/bigint/is_bigint_literal.d.ts +83 -0
  108. package/esm/bigint/is_bigint_literal.d.ts.map +1 -0
  109. package/esm/bigint/is_bigint_literal.js +2 -0
  110. package/esm/bigint/is_bigint_literal.js.map +1 -0
  111. package/esm/bigint/is_not_bigint.d.ts +92 -0
  112. package/esm/bigint/is_not_bigint.d.ts.map +1 -0
  113. package/esm/bigint/is_not_bigint.js +2 -0
  114. package/esm/bigint/is_not_bigint.js.map +1 -0
  115. package/esm/bigint/is_not_bigint_literal.d.ts +81 -0
  116. package/esm/bigint/is_not_bigint_literal.d.ts.map +1 -0
  117. package/esm/bigint/is_not_bigint_literal.js +2 -0
  118. package/esm/bigint/is_not_bigint_literal.js.map +1 -0
  119. package/esm/binary/Bit.d.ts.map +1 -1
  120. package/esm/binary/Bit.js.map +1 -1
  121. package/esm/binary/_binary.d.ts.map +1 -1
  122. package/esm/binary/_binary.js.map +1 -1
  123. package/esm/binary/index.d.ts.map +1 -1
  124. package/esm/binary/index.js.map +1 -1
  125. package/esm/boolean/is_boolean.d.ts +85 -0
  126. package/esm/boolean/is_boolean.d.ts.map +1 -0
  127. package/esm/boolean/is_boolean.js +2 -0
  128. package/esm/boolean/is_boolean.js.map +1 -0
  129. package/esm/boolean/is_false.d.ts +78 -0
  130. package/esm/boolean/is_false.d.ts.map +1 -0
  131. package/esm/boolean/is_false.js +2 -0
  132. package/esm/boolean/is_false.js.map +1 -0
  133. package/esm/boolean/is_not_boolean.d.ts +85 -0
  134. package/esm/boolean/is_not_boolean.d.ts.map +1 -0
  135. package/esm/boolean/is_not_boolean.js +2 -0
  136. package/esm/boolean/is_not_boolean.js.map +1 -0
  137. package/esm/boolean/is_not_false.d.ts +79 -0
  138. package/esm/boolean/is_not_false.d.ts.map +1 -0
  139. package/esm/boolean/is_not_false.js +2 -0
  140. package/esm/boolean/is_not_false.js.map +1 -0
  141. package/esm/boolean/is_not_true.d.ts +80 -0
  142. package/esm/boolean/is_not_true.d.ts.map +1 -0
  143. package/esm/boolean/is_not_true.js +2 -0
  144. package/esm/boolean/is_not_true.js.map +1 -0
  145. package/esm/boolean/is_true.d.ts +78 -0
  146. package/esm/boolean/is_true.d.ts.map +1 -0
  147. package/esm/boolean/is_true.js +2 -0
  148. package/esm/boolean/is_true.js.map +1 -0
  149. package/esm/class/AnyConstructor.d.ts +1 -1
  150. package/esm/class/AnyConstructor.d.ts.map +1 -1
  151. package/esm/class/AnyConstructor.js.map +1 -1
  152. package/esm/class/index.d.ts.map +1 -1
  153. package/esm/class/index.js.map +1 -1
  154. package/esm/class/isConstructor.d.ts +1 -1
  155. package/esm/class/isConstructor.d.ts.map +1 -1
  156. package/esm/class/isConstructor.js +3 -2
  157. package/esm/class/isConstructor.js.map +1 -1
  158. package/esm/composable_types.d.ts.map +1 -1
  159. package/esm/composable_types.js.map +1 -1
  160. package/esm/equal/equal.d.ts +9 -5
  161. package/esm/equal/equal.d.ts.map +1 -1
  162. package/esm/equal/equal.js.map +1 -1
  163. package/esm/equal/identity_equal.d.ts +1 -1
  164. package/esm/equal/identity_equal.d.ts.map +1 -1
  165. package/esm/equal/identity_equal.js.map +1 -1
  166. package/esm/function/any_function.d.ts.map +1 -1
  167. package/esm/function/any_function.js.map +1 -1
  168. package/esm/function/extract_function.d.ts.map +1 -1
  169. package/esm/function/extract_function.js.map +1 -1
  170. package/esm/function/is_function.d.ts +61 -0
  171. package/esm/function/is_function.d.ts.map +1 -0
  172. package/esm/function/is_function.js +2 -0
  173. package/esm/function/is_function.js.map +1 -0
  174. package/esm/function/is_not_function.d.ts +73 -0
  175. package/esm/function/is_not_function.d.ts.map +1 -0
  176. package/esm/function/is_not_function.js +2 -0
  177. package/esm/function/is_not_function.js.map +1 -0
  178. package/esm/function/is_not_strict_function.d.ts +31 -0
  179. package/esm/function/is_not_strict_function.d.ts.map +1 -0
  180. package/esm/function/is_not_strict_function.js +2 -0
  181. package/esm/function/is_not_strict_function.js.map +1 -0
  182. package/esm/function/is_strict_function.d.ts +31 -0
  183. package/esm/function/is_strict_function.d.ts.map +1 -0
  184. package/esm/function/is_strict_function.js +2 -0
  185. package/esm/function/is_strict_function.js.map +1 -0
  186. package/esm/functional/ChainFn.d.ts.map +1 -1
  187. package/esm/functional/ChainFn.js.map +1 -1
  188. package/esm/functional/Maybe.d.ts +1 -1
  189. package/esm/functional/Maybe.d.ts.map +1 -1
  190. package/esm/functional/Maybe.js.map +1 -1
  191. package/esm/functional/compose.d.ts.map +1 -1
  192. package/esm/functional/compose.js +1 -0
  193. package/esm/functional/compose.js.map +1 -1
  194. package/esm/functional/context.d.ts.map +1 -1
  195. package/esm/functional/context.js +1 -1
  196. package/esm/functional/context.js.map +1 -1
  197. package/esm/functional/index.d.ts.map +1 -1
  198. package/esm/functional/index.js.map +1 -1
  199. package/esm/index.d.ts +79 -30
  200. package/esm/index.d.ts.map +1 -1
  201. package/esm/index.js.map +1 -1
  202. package/esm/json.d.ts.map +1 -1
  203. package/esm/json.js.map +1 -1
  204. package/esm/math/abs.d.ts +4 -5
  205. package/esm/math/abs.d.ts.map +1 -1
  206. package/esm/math/abs.js.map +1 -1
  207. package/esm/math/add.d.ts.map +1 -1
  208. package/esm/math/add.js.map +1 -1
  209. package/esm/math/greater_than.d.ts +1 -1
  210. package/esm/math/greater_than.d.ts.map +1 -1
  211. package/esm/math/greater_than.js.map +1 -1
  212. package/esm/math/index.d.ts +1 -1
  213. package/esm/math/index.d.ts.map +1 -1
  214. package/esm/math/index.js.map +1 -1
  215. package/esm/math/math_plus.d.ts.map +1 -1
  216. package/esm/math/math_plus.js.map +1 -1
  217. package/esm/math/math_plus.to_negative.d.ts.map +1 -1
  218. package/esm/math/math_plus.to_negative.js.map +1 -1
  219. package/esm/math/max.d.ts +1 -1
  220. package/esm/math/max.d.ts.map +1 -1
  221. package/esm/math/max.js.map +1 -1
  222. package/esm/math/multiply.d.ts.map +1 -1
  223. package/esm/math/multiply.js.map +1 -1
  224. package/esm/math/numeric_struct.d.ts +1 -1
  225. package/esm/math/numeric_struct.d.ts.map +1 -1
  226. package/esm/math/numeric_struct.js.map +1 -1
  227. package/esm/math/subtract.d.ts.map +1 -1
  228. package/esm/math/subtract.js.map +1 -1
  229. package/esm/mix_types/box.d.ts +20 -8
  230. package/esm/mix_types/box.d.ts.map +1 -1
  231. package/esm/mix_types/box.js.map +1 -1
  232. package/esm/mix_types/exclude.d.ts +19 -0
  233. package/esm/mix_types/exclude.d.ts.map +1 -0
  234. package/esm/mix_types/exclude.js +2 -0
  235. package/esm/mix_types/exclude.js.map +1 -0
  236. package/esm/mix_types/is_any_or_never.d.ts +28 -0
  237. package/esm/mix_types/is_any_or_never.d.ts.map +1 -0
  238. package/esm/mix_types/is_any_or_never.js +2 -0
  239. package/esm/mix_types/is_any_or_never.js.map +1 -0
  240. package/esm/mix_types/merge.d.ts +15 -15
  241. package/esm/mix_types/merge.d.ts.map +1 -1
  242. package/esm/mix_types/merge.js +9 -9
  243. package/esm/mix_types/merge.js.map +1 -1
  244. package/esm/never/is_never.d.ts +59 -0
  245. package/esm/never/is_never.d.ts.map +1 -0
  246. package/esm/never/is_never.js +2 -0
  247. package/esm/never/is_never.js.map +1 -0
  248. package/esm/never/is_not_never.d.ts +59 -0
  249. package/esm/never/is_not_never.d.ts.map +1 -0
  250. package/esm/never/is_not_never.js +2 -0
  251. package/esm/never/is_not_never.js.map +1 -0
  252. package/esm/never/never.d.ts +75 -0
  253. package/esm/never/never.d.ts.map +1 -0
  254. package/esm/never/never.js +2 -0
  255. package/esm/never/never.js.map +1 -0
  256. package/esm/nodejs/index.d.ts.map +1 -1
  257. package/esm/nodejs/index.js.map +1 -1
  258. package/esm/nodejs/isNodeError.d.ts.map +1 -1
  259. package/esm/nodejs/isNodeError.js.map +1 -1
  260. package/esm/nominal/brand.d.ts.map +1 -1
  261. package/esm/nominal/brand.js +2 -4
  262. package/esm/nominal/brand.js.map +1 -1
  263. package/esm/nominal/constants.d.ts.map +1 -1
  264. package/esm/nominal/constants.js.map +1 -1
  265. package/esm/nominal/flavor.d.ts.map +1 -1
  266. package/esm/nominal/flavor.js +2 -4
  267. package/esm/nominal/flavor.js.map +1 -1
  268. package/esm/nominal/index.d.ts.map +1 -1
  269. package/esm/nominal/index.js.map +1 -1
  270. package/esm/nominal/nominal_match.d.ts.map +1 -1
  271. package/esm/nominal/nominal_match.js +1 -3
  272. package/esm/nominal/nominal_match.js.map +1 -1
  273. package/esm/null/is_not_null.d.ts +71 -0
  274. package/esm/null/is_not_null.d.ts.map +1 -0
  275. package/esm/null/is_not_null.js +2 -0
  276. package/esm/null/is_not_null.js.map +1 -0
  277. package/esm/null/is_null.d.ts +75 -0
  278. package/esm/null/is_null.d.ts.map +1 -0
  279. package/esm/null/is_null.js +2 -0
  280. package/esm/null/is_null.js.map +1 -0
  281. package/esm/number/cast.d.ts.map +1 -1
  282. package/esm/number/cast.js.map +1 -1
  283. package/esm/number/is_not_number.d.ts +82 -0
  284. package/esm/number/is_not_number.d.ts.map +1 -0
  285. package/esm/number/is_not_number.js +2 -0
  286. package/esm/number/is_not_number.js.map +1 -0
  287. package/esm/number/is_not_number_literal.d.ts +81 -0
  288. package/esm/number/is_not_number_literal.d.ts.map +1 -0
  289. package/esm/number/is_not_number_literal.js +2 -0
  290. package/esm/number/is_not_number_literal.js.map +1 -0
  291. package/esm/number/is_number.d.ts +85 -0
  292. package/esm/number/is_number.d.ts.map +1 -0
  293. package/esm/number/is_number.js +2 -0
  294. package/esm/number/is_number.js.map +1 -0
  295. package/esm/number/is_number_literal.d.ts +83 -0
  296. package/esm/number/is_number_literal.d.ts.map +1 -0
  297. package/esm/number/is_number_literal.js +2 -0
  298. package/esm/number/is_number_literal.js.map +1 -0
  299. package/esm/number/number_array.d.ts.map +1 -1
  300. package/esm/number/number_array.js.map +1 -1
  301. package/esm/number/number_plus.d.ts +11 -6
  302. package/esm/number/number_plus.d.ts.map +1 -1
  303. package/esm/number/number_plus.js +1 -0
  304. package/esm/number/number_plus.js.map +1 -1
  305. package/esm/numeric/cast.d.ts.map +1 -1
  306. package/esm/numeric/cast.js.map +1 -1
  307. package/esm/numeric/is_integer.d.ts +30 -0
  308. package/esm/numeric/is_integer.d.ts.map +1 -0
  309. package/esm/numeric/is_integer.js +2 -0
  310. package/esm/numeric/is_integer.js.map +1 -0
  311. package/esm/numeric/is_negative.d.ts +35 -0
  312. package/esm/numeric/is_negative.d.ts.map +1 -0
  313. package/esm/numeric/is_negative.js +2 -0
  314. package/esm/numeric/is_negative.js.map +1 -0
  315. package/esm/numeric/is_not_integer.d.ts +32 -0
  316. package/esm/numeric/is_not_integer.d.ts.map +1 -0
  317. package/esm/numeric/is_not_integer.js +2 -0
  318. package/esm/numeric/is_not_integer.js.map +1 -0
  319. package/esm/numeric/is_not_negative.d.ts +35 -0
  320. package/esm/numeric/is_not_negative.d.ts.map +1 -0
  321. package/esm/numeric/is_not_negative.js +2 -0
  322. package/esm/numeric/is_not_negative.js.map +1 -0
  323. package/esm/numeric/is_not_numeric.d.ts +19 -0
  324. package/esm/numeric/is_not_numeric.d.ts.map +1 -0
  325. package/esm/numeric/is_not_numeric.js +2 -0
  326. package/esm/numeric/is_not_numeric.js.map +1 -0
  327. package/esm/numeric/is_not_positive.d.ts +36 -0
  328. package/esm/numeric/is_not_positive.d.ts.map +1 -0
  329. package/esm/numeric/is_not_positive.js +2 -0
  330. package/esm/numeric/is_not_positive.js.map +1 -0
  331. package/esm/numeric/is_numeric.d.ts +19 -0
  332. package/esm/numeric/is_numeric.d.ts.map +1 -0
  333. package/esm/numeric/is_numeric.js +2 -0
  334. package/esm/numeric/is_numeric.js.map +1 -0
  335. package/esm/numeric/is_positive.d.ts +35 -0
  336. package/esm/numeric/is_positive.d.ts.map +1 -0
  337. package/esm/numeric/is_positive.js +2 -0
  338. package/esm/numeric/is_positive.js.map +1 -0
  339. package/esm/numeric/numeric_plus.d.ts +9 -4
  340. package/esm/numeric/numeric_plus.d.ts.map +1 -1
  341. package/esm/numeric/numeric_plus.js.map +1 -1
  342. package/esm/numeric/numeric_type.d.ts +0 -50
  343. package/esm/numeric/numeric_type.d.ts.map +1 -1
  344. package/esm/numeric/numeric_type.js.map +1 -1
  345. package/esm/object/ANotB.d.ts.map +1 -1
  346. package/esm/object/ANotB.js.map +1 -1
  347. package/esm/object/ExcludePropType.d.ts.map +1 -1
  348. package/esm/object/ExcludePropType.js.map +1 -1
  349. package/esm/object/IsDisjoint.d.ts.map +1 -1
  350. package/esm/object/IsDisjoint.js.map +1 -1
  351. package/esm/object/IsRecord.d.ts.map +1 -1
  352. package/esm/object/IsRecord.js.map +1 -1
  353. package/esm/object/KeyTypes.d.ts.map +1 -1
  354. package/esm/object/KeyTypes.js.map +1 -1
  355. package/esm/object/KeyofOptional.d.ts.map +1 -1
  356. package/esm/object/KeyofOptional.js.map +1 -1
  357. package/esm/object/KeysWithDiffType.d.ts +2 -2
  358. package/esm/object/KeysWithDiffType.d.ts.map +1 -1
  359. package/esm/object/KeysWithDiffType.js.map +1 -1
  360. package/esm/object/KnownKeys.d.ts.map +1 -1
  361. package/esm/object/KnownKeys.js.map +1 -1
  362. package/esm/object/Partial.d.ts.map +1 -1
  363. package/esm/object/Partial.js.map +1 -1
  364. package/esm/object/RecursiveIntersect.d.ts +1 -1
  365. package/esm/object/RecursiveIntersect.d.ts.map +1 -1
  366. package/esm/object/RecursiveIntersect.js.map +1 -1
  367. package/esm/object/RecursiveRequired.d.ts.map +1 -1
  368. package/esm/object/RecursiveRequired.js.map +1 -1
  369. package/esm/object/Required.d.ts +1 -2
  370. package/esm/object/Required.d.ts.map +1 -1
  371. package/esm/object/Required.js.map +1 -1
  372. package/esm/object/RequiredKeys.d.ts +2 -2
  373. package/esm/object/RequiredKeys.d.ts.map +1 -1
  374. package/esm/object/RequiredKeys.js.map +1 -1
  375. package/esm/object/SpreadRecord.d.ts.map +1 -1
  376. package/esm/object/SpreadRecord.js.map +1 -1
  377. package/esm/object/ValueOf.d.ts.map +1 -1
  378. package/esm/object/ValueOf.js.map +1 -1
  379. package/esm/object/any_record.d.ts.map +1 -1
  380. package/esm/object/any_record.js.map +1 -1
  381. package/esm/object/everyKey.d.ts.map +1 -1
  382. package/esm/object/everyKey.js.map +1 -1
  383. package/esm/object/facade.d.ts.map +1 -1
  384. package/esm/object/facade.js.map +1 -1
  385. package/esm/object/filterKey.d.ts.map +1 -1
  386. package/esm/object/filterKey.js.map +1 -1
  387. package/esm/object/findKey.d.ts.map +1 -1
  388. package/esm/object/findKey.js.map +1 -1
  389. package/esm/object/forEachKey.d.ts.map +1 -1
  390. package/esm/object/forEachKey.js +1 -1
  391. package/esm/object/forEachKey.js.map +1 -1
  392. package/esm/object/getField.d.ts.map +1 -1
  393. package/esm/object/getField.js.map +1 -1
  394. package/esm/object/hasKey.d.ts.map +1 -1
  395. package/esm/object/hasKey.js +1 -1
  396. package/esm/object/hasKey.js.map +1 -1
  397. package/esm/object/hasProperty.d.ts.map +1 -1
  398. package/esm/object/hasProperty.js.map +1 -1
  399. package/esm/object/index.d.ts +14 -15
  400. package/esm/object/index.d.ts.map +1 -1
  401. package/esm/object/index.js.map +1 -1
  402. package/esm/object/is_not_object.d.ts +117 -0
  403. package/esm/object/is_not_object.d.ts.map +1 -0
  404. package/esm/object/is_not_object.js +2 -0
  405. package/esm/object/is_not_object.js.map +1 -0
  406. package/esm/object/is_object.d.ts +104 -0
  407. package/esm/object/is_object.d.ts.map +1 -0
  408. package/esm/object/is_object.js +2 -0
  409. package/esm/object/is_object.js.map +1 -0
  410. package/esm/object/left_join.d.ts +0 -5
  411. package/esm/object/left_join.d.ts.map +1 -1
  412. package/esm/object/left_join.js.map +1 -1
  413. package/esm/object/mapKey.d.ts.map +1 -1
  414. package/esm/object/mapKey.js.map +1 -1
  415. package/esm/object/mapProperties.d.ts.map +1 -1
  416. package/esm/object/mapProperties.js.map +1 -1
  417. package/esm/object/merge.d.ts +49 -27
  418. package/esm/object/merge.d.ts.map +1 -1
  419. package/esm/object/merge.js.map +1 -1
  420. package/esm/object/object_plus.d.ts.map +1 -1
  421. package/esm/object/object_plus.js.map +1 -1
  422. package/esm/object/omit.d.ts +8 -1
  423. package/esm/object/omit.d.ts.map +1 -1
  424. package/esm/object/omit.js.map +1 -1
  425. package/esm/object/optional_key.d.ts +1 -1
  426. package/esm/object/optional_key.d.ts.map +1 -1
  427. package/esm/object/optional_key.js.map +1 -1
  428. package/esm/object/pick.d.ts.map +1 -1
  429. package/esm/object/pick.js.map +1 -1
  430. package/esm/object/properties.d.ts.map +1 -1
  431. package/esm/object/properties.js.map +1 -1
  432. package/esm/object/record.d.ts.map +1 -1
  433. package/esm/object/record.js.map +1 -1
  434. package/esm/object/recursive_partial.d.ts.map +1 -1
  435. package/esm/object/recursive_partial.js.map +1 -1
  436. package/esm/object/reduceKey.d.ts.map +1 -1
  437. package/esm/object/reduceKey.js.map +1 -1
  438. package/esm/object/replaceProperty.d.ts.map +1 -1
  439. package/esm/object/replaceProperty.js.map +1 -1
  440. package/esm/object/someKey.d.ts.map +1 -1
  441. package/esm/object/someKey.js.map +1 -1
  442. package/esm/object/split.d.ts +2 -9
  443. package/esm/object/split.d.ts.map +1 -1
  444. package/esm/object/split.js +1 -1
  445. package/esm/object/split.js.map +1 -1
  446. package/esm/object/typeOverrideIncompatible.d.ts.map +1 -1
  447. package/esm/object/typeOverrideIncompatible.js +4 -6
  448. package/esm/object/typeOverrideIncompatible.js.map +1 -1
  449. package/esm/predicates/CanAssign.d.ts +12 -4
  450. package/esm/predicates/CanAssign.d.ts.map +1 -1
  451. package/esm/predicates/CanAssign.js.map +1 -1
  452. package/esm/predicates/Extends.d.ts +3 -0
  453. package/esm/predicates/Extends.d.ts.map +1 -1
  454. package/esm/predicates/Extends.js.map +1 -1
  455. package/esm/predicates/If.d.ts.map +1 -1
  456. package/esm/predicates/If.js.map +1 -1
  457. package/esm/predicates/IsEmptyObject.d.ts.map +1 -1
  458. package/esm/predicates/IsEmptyObject.js.map +1 -1
  459. package/esm/predicates/assignable.d.ts +89 -0
  460. package/esm/predicates/assignable.d.ts.map +1 -0
  461. package/esm/predicates/assignable.js +2 -0
  462. package/esm/predicates/assignable.js.map +1 -0
  463. package/esm/predicates/index.d.ts.map +1 -1
  464. package/esm/predicates/index.js.map +1 -1
  465. package/esm/predicates/literal.d.ts +1 -1
  466. package/esm/predicates/literal.d.ts.map +1 -1
  467. package/esm/predicates/literal.js.map +1 -1
  468. package/esm/predicates/logical.d.ts.map +1 -1
  469. package/esm/predicates/logical.js.map +1 -1
  470. package/esm/predicates/not_assignable.d.ts +89 -0
  471. package/esm/predicates/not_assignable.d.ts.map +1 -0
  472. package/esm/predicates/not_assignable.js +2 -0
  473. package/esm/predicates/not_assignable.js.map +1 -0
  474. package/esm/primitive.d.ts.map +1 -1
  475. package/esm/primitive.js.map +1 -1
  476. package/esm/promise/MaybePromise.d.ts.map +1 -1
  477. package/esm/promise/MaybePromise.js.map +1 -1
  478. package/esm/promise/PromiseValue.d.ts.map +1 -1
  479. package/esm/promise/PromiseValue.js.map +1 -1
  480. package/esm/promise/PromiseValueMerge.d.ts.map +1 -1
  481. package/esm/promise/PromiseValueMerge.js.map +1 -1
  482. package/esm/promise/index.d.ts +1 -1
  483. package/esm/promise/index.d.ts.map +1 -1
  484. package/esm/promise/index.js.map +1 -1
  485. package/esm/promise/isPromise.d.ts.map +1 -1
  486. package/esm/promise/isPromise.js.map +1 -1
  487. package/esm/promise/mapSeries.d.ts.map +1 -1
  488. package/esm/promise/mapSeries.js +1 -1
  489. package/esm/promise/mapSeries.js.map +1 -1
  490. package/esm/string/$extract_manipulated_string.d.ts +18 -0
  491. package/esm/string/$extract_manipulated_string.d.ts.map +1 -0
  492. package/esm/string/$extract_manipulated_string.js +2 -0
  493. package/esm/string/$extract_manipulated_string.js.map +1 -0
  494. package/esm/string/_string_type.d.ts +5 -0
  495. package/esm/string/_string_type.d.ts.map +1 -0
  496. package/esm/string/_string_type.js +2 -0
  497. package/esm/string/_string_type.js.map +1 -0
  498. package/esm/string/is_not_string.d.ts +82 -0
  499. package/esm/string/is_not_string.d.ts.map +1 -0
  500. package/esm/string/is_not_string.js +2 -0
  501. package/esm/string/is_not_string.js.map +1 -0
  502. package/esm/string/is_not_string_literal.d.ts +100 -0
  503. package/esm/string/is_not_string_literal.d.ts.map +1 -0
  504. package/esm/string/is_not_string_literal.js +2 -0
  505. package/esm/string/is_not_string_literal.js.map +1 -0
  506. package/esm/string/is_not_template_literal.d.ts +73 -0
  507. package/esm/string/is_not_template_literal.d.ts.map +1 -0
  508. package/esm/string/is_not_template_literal.js +2 -0
  509. package/esm/string/is_not_template_literal.js.map +1 -0
  510. package/esm/string/is_string.d.ts +81 -0
  511. package/esm/string/is_string.d.ts.map +1 -0
  512. package/esm/string/is_string.js +2 -0
  513. package/esm/string/is_string.js.map +1 -0
  514. package/esm/string/is_string_literal.d.ts +100 -0
  515. package/esm/string/is_string_literal.d.ts.map +1 -0
  516. package/esm/string/is_string_literal.js +2 -0
  517. package/esm/string/is_string_literal.js.map +1 -0
  518. package/esm/string/is_template_literal.d.ts +75 -0
  519. package/esm/string/is_template_literal.d.ts.map +1 -0
  520. package/esm/string/is_template_literal.js +2 -0
  521. package/esm/string/is_template_literal.js.map +1 -0
  522. package/esm/string/string.d.ts +1 -1
  523. package/esm/string/string.d.ts.map +1 -1
  524. package/esm/string/string.js.map +1 -1
  525. package/esm/string/string_plus.d.ts.map +1 -1
  526. package/esm/string/string_plus.js.map +1 -1
  527. package/esm/symbol/is_not_symbol.d.ts +71 -0
  528. package/esm/symbol/is_not_symbol.d.ts.map +1 -0
  529. package/esm/symbol/is_not_symbol.js +2 -0
  530. package/esm/symbol/is_not_symbol.js.map +1 -0
  531. package/esm/symbol/is_symbol.d.ts +73 -0
  532. package/esm/symbol/is_symbol.d.ts.map +1 -0
  533. package/esm/symbol/is_symbol.js +2 -0
  534. package/esm/symbol/is_symbol.js.map +1 -0
  535. package/esm/testing/stub.d.ts.map +1 -1
  536. package/esm/testing/stub.js.map +1 -1
  537. package/esm/testing/test_type.d.ts +84 -44
  538. package/esm/testing/test_type.d.ts.map +1 -1
  539. package/esm/testing/test_type.js.map +1 -1
  540. package/esm/tuple/common_prop_keys.d.ts.map +1 -1
  541. package/esm/tuple/common_prop_keys.js.map +1 -1
  542. package/esm/tuple/create_tuple.d.ts +2 -2
  543. package/esm/tuple/create_tuple.d.ts.map +1 -1
  544. package/esm/tuple/create_tuple.js.map +1 -1
  545. package/esm/tuple/drop.d.ts.map +1 -1
  546. package/esm/tuple/drop.js +1 -1
  547. package/esm/tuple/drop.js.map +1 -1
  548. package/esm/tuple/is_not_tuple.d.ts +78 -0
  549. package/esm/tuple/is_not_tuple.d.ts.map +1 -0
  550. package/esm/tuple/is_not_tuple.js +2 -0
  551. package/esm/tuple/is_not_tuple.js.map +1 -0
  552. package/esm/tuple/is_tuple.d.ts +76 -0
  553. package/esm/tuple/is_tuple.d.ts.map +1 -0
  554. package/esm/tuple/is_tuple.js +2 -0
  555. package/esm/tuple/is_tuple.js.map +1 -0
  556. package/esm/tuple/tail.d.ts +1 -1
  557. package/esm/tuple/tail.d.ts.map +1 -1
  558. package/esm/tuple/tail.js.map +1 -1
  559. package/esm/tuple/tuple_plus.common_prop_keys.d.ts +8 -4
  560. package/esm/tuple/tuple_plus.common_prop_keys.d.ts.map +1 -1
  561. package/esm/tuple/tuple_plus.common_prop_keys.js.map +1 -1
  562. package/esm/tuple/tuple_plus.d.ts.map +1 -1
  563. package/esm/tuple/tuple_plus.drop_match.d.ts.map +1 -1
  564. package/esm/tuple/tuple_plus.drop_match.js.map +1 -1
  565. package/esm/tuple/tuple_plus.filter.d.ts +1 -1
  566. package/esm/tuple/tuple_plus.filter.d.ts.map +1 -1
  567. package/esm/tuple/tuple_plus.filter.js.map +1 -1
  568. package/esm/tuple/tuple_plus.find.d.ts +10 -7
  569. package/esm/tuple/tuple_plus.find.d.ts.map +1 -1
  570. package/esm/tuple/tuple_plus.find.js.map +1 -1
  571. package/esm/tuple/tuple_plus.js.map +1 -1
  572. package/esm/tuple/tuple_plus.pad_start.d.ts +1 -4
  573. package/esm/tuple/tuple_plus.pad_start.d.ts.map +1 -1
  574. package/esm/tuple/tuple_plus.pad_start.js.map +1 -1
  575. package/esm/type/failed.d.ts.map +1 -1
  576. package/esm/type/failed.js.map +1 -1
  577. package/esm/type/no_infer.d.ts +4 -3
  578. package/esm/type/no_infer.d.ts.map +1 -1
  579. package/esm/type/no_infer.js.map +1 -1
  580. package/esm/type-guard/is_type.d.ts +1 -1
  581. package/esm/type-guard/is_type.d.ts.map +1 -1
  582. package/esm/type-guard/is_type.js +3 -7
  583. package/esm/type-guard/is_type.js.map +1 -1
  584. package/esm/type_plus/$equality.d.ts +12 -0
  585. package/esm/type_plus/$equality.d.ts.map +1 -0
  586. package/esm/type_plus/$equality.js +2 -0
  587. package/esm/type_plus/$equality.js.map +1 -0
  588. package/esm/type_plus/$error.d.ts +8 -0
  589. package/esm/type_plus/$error.d.ts.map +1 -0
  590. package/esm/type_plus/$error.js +2 -0
  591. package/esm/type_plus/$error.js.map +1 -0
  592. package/esm/type_plus/$infer_error.d.ts +21 -0
  593. package/esm/type_plus/$infer_error.d.ts.map +1 -0
  594. package/esm/type_plus/$infer_error.js +2 -0
  595. package/esm/type_plus/$infer_error.js.map +1 -0
  596. package/esm/type_plus/$merge_options.d.ts +11 -0
  597. package/esm/type_plus/$merge_options.d.ts.map +1 -0
  598. package/esm/type_plus/$merge_options.js +2 -0
  599. package/esm/type_plus/$merge_options.js.map +1 -0
  600. package/esm/type_plus/$resolve_options.d.ts +11 -0
  601. package/esm/type_plus/$resolve_options.d.ts.map +1 -0
  602. package/esm/type_plus/$resolve_options.js +2 -0
  603. package/esm/type_plus/$resolve_options.js.map +1 -0
  604. package/esm/type_plus/$special_type.d.ts +19 -0
  605. package/esm/type_plus/$special_type.d.ts.map +1 -0
  606. package/esm/type_plus/$special_type.js +2 -0
  607. package/esm/type_plus/$special_type.js.map +1 -0
  608. package/esm/type_plus/$type.d.ts +11 -0
  609. package/esm/type_plus/$type.d.ts.map +1 -0
  610. package/esm/type_plus/$type.js +2 -0
  611. package/esm/type_plus/$type.js.map +1 -0
  612. package/esm/type_plus/branch/$branch.d.ts +29 -0
  613. package/esm/type_plus/branch/$branch.d.ts.map +1 -0
  614. package/esm/type_plus/branch/$branch.js +2 -0
  615. package/esm/type_plus/branch/$branch.js.map +1 -0
  616. package/esm/type_plus/branch/$distributive.d.ts +19 -0
  617. package/esm/type_plus/branch/$distributive.d.ts.map +1 -0
  618. package/esm/type_plus/branch/$distributive.js +2 -0
  619. package/esm/type_plus/branch/$distributive.js.map +1 -0
  620. package/esm/type_plus/branch/$exact.d.ts +30 -0
  621. package/esm/type_plus/branch/$exact.d.ts.map +1 -0
  622. package/esm/type_plus/branch/$exact.js +2 -0
  623. package/esm/type_plus/branch/$exact.js.map +1 -0
  624. package/esm/type_plus/branch/$input_options.d.ts +10 -0
  625. package/esm/type_plus/branch/$input_options.d.ts.map +1 -0
  626. package/esm/type_plus/branch/$input_options.js +2 -0
  627. package/esm/type_plus/branch/$input_options.js.map +1 -0
  628. package/esm/type_plus/branch/$is_distributive.d.ts +6 -0
  629. package/esm/type_plus/branch/$is_distributive.d.ts.map +1 -0
  630. package/esm/type_plus/branch/$is_distributive.js +2 -0
  631. package/esm/type_plus/branch/$is_distributive.js.map +1 -0
  632. package/esm/type_plus/branch/$override.d.ts +21 -0
  633. package/esm/type_plus/branch/$override.d.ts.map +1 -0
  634. package/esm/type_plus/branch/$override.js +2 -0
  635. package/esm/type_plus/branch/$override.js.map +1 -0
  636. package/esm/type_plus/branch/$resolve_branch.d.ts +29 -0
  637. package/esm/type_plus/branch/$resolve_branch.d.ts.map +1 -0
  638. package/esm/type_plus/branch/$resolve_branch.js +2 -0
  639. package/esm/type_plus/branch/$resolve_branch.js.map +1 -0
  640. package/esm/type_plus/branch/$select.d.ts +77 -0
  641. package/esm/type_plus/branch/$select.d.ts.map +1 -0
  642. package/esm/type_plus/branch/$select.js +2 -0
  643. package/esm/type_plus/branch/$select.js.map +1 -0
  644. package/esm/type_plus/branch/$select_invert.d.ts +75 -0
  645. package/esm/type_plus/branch/$select_invert.d.ts.map +1 -0
  646. package/esm/type_plus/branch/$select_invert.js +2 -0
  647. package/esm/type_plus/branch/$select_invert.js.map +1 -0
  648. package/esm/type_plus/branch/$select_invert_strict.d.ts +75 -0
  649. package/esm/type_plus/branch/$select_invert_strict.d.ts.map +1 -0
  650. package/esm/type_plus/branch/$select_invert_strict.js +2 -0
  651. package/esm/type_plus/branch/$select_invert_strict.js.map +1 -0
  652. package/esm/type_plus/branch/$select_strict.d.ts +76 -0
  653. package/esm/type_plus/branch/$select_strict.d.ts.map +1 -0
  654. package/esm/type_plus/branch/$select_strict.js +2 -0
  655. package/esm/type_plus/branch/$select_strict.js.map +1 -0
  656. package/esm/type_plus/branch/$selection.d.ts +127 -0
  657. package/esm/type_plus/branch/$selection.d.ts.map +1 -0
  658. package/esm/type_plus/branch/$selection.js +2 -0
  659. package/esm/type_plus/branch/$selection.js.map +1 -0
  660. package/esm/type_plus/branch/$selection_options.d.ts +37 -0
  661. package/esm/type_plus/branch/$selection_options.d.ts.map +1 -0
  662. package/esm/type_plus/branch/$selection_options.js +2 -0
  663. package/esm/type_plus/branch/$selection_options.js.map +1 -0
  664. package/esm/undefined/has_undefined.d.ts +43 -0
  665. package/esm/undefined/has_undefined.d.ts.map +1 -0
  666. package/esm/undefined/has_undefined.js +2 -0
  667. package/esm/undefined/has_undefined.js.map +1 -0
  668. package/esm/undefined/is_not_undefined.d.ts +72 -0
  669. package/esm/undefined/is_not_undefined.d.ts.map +1 -0
  670. package/esm/undefined/is_not_undefined.js +2 -0
  671. package/esm/undefined/is_not_undefined.js.map +1 -0
  672. package/esm/undefined/is_undefined.d.ts +75 -0
  673. package/esm/undefined/is_undefined.d.ts.map +1 -0
  674. package/esm/undefined/is_undefined.js +2 -0
  675. package/esm/undefined/is_undefined.js.map +1 -0
  676. package/esm/union/union.d.ts +1 -1
  677. package/esm/union/union.d.ts.map +1 -1
  678. package/esm/union/union.js.map +1 -1
  679. package/esm/union/union_to_intersection.d.ts.map +1 -1
  680. package/esm/union/union_to_intersection.js.map +1 -1
  681. package/esm/union_keys.d.ts.map +1 -1
  682. package/esm/union_keys.js.map +1 -1
  683. package/esm/unknown/is_not_unknown.d.ts +53 -0
  684. package/esm/unknown/is_not_unknown.d.ts.map +1 -0
  685. package/esm/unknown/is_not_unknown.js +2 -0
  686. package/esm/unknown/is_not_unknown.js.map +1 -0
  687. package/esm/unknown/is_unknown.d.ts +53 -0
  688. package/esm/unknown/is_unknown.d.ts.map +1 -0
  689. package/esm/unknown/is_unknown.js +2 -0
  690. package/esm/unknown/is_unknown.js.map +1 -0
  691. package/esm/unknown/not_unknown_or.d.ts +30 -0
  692. package/esm/unknown/not_unknown_or.d.ts.map +1 -0
  693. package/esm/unknown/not_unknown_or.js +2 -0
  694. package/esm/unknown/not_unknown_or.js.map +1 -0
  695. package/esm/unknown/unknown.d.ts +55 -0
  696. package/esm/unknown/unknown.d.ts.map +1 -0
  697. package/esm/unknown/unknown.js +2 -0
  698. package/esm/unknown/unknown.js.map +1 -0
  699. package/esm/unpartial.d.ts.map +1 -1
  700. package/esm/unpartial.js.map +1 -1
  701. package/esm/utils/Widen.d.ts.map +1 -1
  702. package/esm/utils/Widen.js.map +1 -1
  703. package/esm/utils/as.d.ts.map +1 -1
  704. package/esm/utils/as.js.map +1 -1
  705. package/esm/utils/index.d.ts +0 -2
  706. package/esm/utils/index.d.ts.map +1 -1
  707. package/esm/utils/index.js.map +1 -1
  708. package/esm/utils/inspect.d.ts.map +1 -1
  709. package/esm/utils/inspect.js.map +1 -1
  710. package/esm/utils/options.d.ts +0 -13
  711. package/esm/utils/options.d.ts.map +1 -1
  712. package/esm/utils/options.js.map +1 -1
  713. package/esm/void/is_not_void.d.ts +78 -0
  714. package/esm/void/is_not_void.d.ts.map +1 -0
  715. package/esm/void/is_not_void.js +2 -0
  716. package/esm/void/is_not_void.js.map +1 -0
  717. package/esm/void/is_void.d.ts +79 -0
  718. package/esm/void/is_void.d.ts.map +1 -0
  719. package/esm/void/is_void.js +2 -0
  720. package/esm/void/is_void.js.map +1 -0
  721. package/package.json +28 -21
  722. package/readme.md +161 -160
  723. package/src/any/any.ts +46 -0
  724. package/src/any/is_any.ts +59 -0
  725. package/src/any/is_not_any.ts +59 -0
  726. package/src/any/readme.md +104 -0
  727. package/src/array/array.at.ts +43 -0
  728. package/src/array/array.entries.ts +28 -0
  729. package/src/array/array.find_last.ts +31 -0
  730. package/src/array/array.reverse.ts +26 -0
  731. package/src/array/array.some.ts +67 -0
  732. package/src/array/array_plus.common_prop_keys.ts +37 -0
  733. package/src/array/array_plus.drop_match.ts +16 -0
  734. package/src/array/array_plus.element_match.ts +64 -0
  735. package/src/array/array_plus.filter.ts +51 -0
  736. package/src/array/array_plus.find.ts +69 -0
  737. package/src/array/array_plus.index_at.ts +163 -0
  738. package/src/array/array_plus.is_index_out_of_bound.ts +24 -0
  739. package/src/array/array_plus.is_readonly.ts +46 -0
  740. package/src/array/array_plus.pad_start.ts +9 -0
  741. package/src/array/array_plus.split_at.ts +77 -0
  742. package/src/array/find_first.ts +74 -0
  743. package/src/array/head.ts +46 -0
  744. package/src/array/intersect_of_props.ts +21 -0
  745. package/src/array/is_array.ts +115 -0
  746. package/src/array/is_not_array.ts +114 -0
  747. package/src/array/last.ts +47 -0
  748. package/src/array/loose_array_type.ts +71 -0
  749. package/src/array/pad_start.ts +37 -0
  750. package/src/array/readme.md +567 -0
  751. package/src/array/reverse.ts +16 -0
  752. package/src/array/union_of_props.ts +17 -0
  753. package/src/assertion/assert_type.ts +119 -0
  754. package/src/bigint/cast.ts +13 -0
  755. package/src/bigint/is_bigint.ts +111 -0
  756. package/src/bigint/is_bigint_literal.ts +98 -0
  757. package/src/bigint/is_not_bigint.ts +108 -0
  758. package/src/bigint/is_not_bigint_literal.ts +102 -0
  759. package/src/bigint/readme.md +109 -0
  760. package/src/boolean/is_boolean.ts +138 -0
  761. package/src/boolean/is_false.ts +87 -0
  762. package/src/boolean/is_not_boolean.ts +107 -0
  763. package/src/boolean/is_not_false.ts +88 -0
  764. package/src/boolean/is_not_true.ts +88 -0
  765. package/src/boolean/is_true.ts +87 -0
  766. package/src/boolean/readme.md +430 -0
  767. package/src/class/AnyConstructor.ts +1 -0
  768. package/src/class/isConstructor.ts +34 -0
  769. package/src/equal/equal.ts +130 -0
  770. package/src/equal/identity_equal.ts +11 -0
  771. package/src/function/extract_function.ts +27 -0
  772. package/src/function/is_function.ts +62 -0
  773. package/src/function/is_not_function.ts +75 -0
  774. package/src/function/is_not_strict_function.ts +40 -0
  775. package/src/function/is_strict_function.ts +41 -0
  776. package/src/functional/Maybe.ts +20 -0
  777. package/src/functional/compose.ts +16 -0
  778. package/src/functional/context.ts +66 -0
  779. package/src/index.ts +138 -0
  780. package/src/math/abs.ts +33 -0
  781. package/src/math/greater_than.ts +12 -0
  782. package/src/math/index.ts +7 -0
  783. package/src/math/math_plus.to_negative.ts +22 -0
  784. package/src/math/max.ts +13 -0
  785. package/src/math/numeric_struct.ts +650 -0
  786. package/src/mix_types/box.ts +71 -0
  787. package/src/mix_types/exclude.ts +18 -0
  788. package/src/mix_types/is_any_or_never.ts +31 -0
  789. package/src/mix_types/merge.ts +57 -0
  790. package/src/mix_types/readme.md +87 -0
  791. package/src/never/is_never.ts +65 -0
  792. package/src/never/is_not_never.ts +65 -0
  793. package/src/never/never.ts +78 -0
  794. package/src/never/readme.md +148 -0
  795. package/src/nodejs/isNodeError.ts +27 -0
  796. package/src/nominal/brand.ts +40 -0
  797. package/src/nominal/flavor.ts +50 -0
  798. package/src/nominal/nominal_match.ts +14 -0
  799. package/src/null/is_not_null.ts +80 -0
  800. package/src/null/is_null.ts +84 -0
  801. package/src/null/readme.md +107 -0
  802. package/src/number/cast.ts +17 -0
  803. package/src/number/is_not_number.ts +97 -0
  804. package/src/number/is_not_number_literal.ts +102 -0
  805. package/src/number/is_number.ts +101 -0
  806. package/src/number/is_number_literal.ts +98 -0
  807. package/src/number/number_plus.ts +13 -0
  808. package/src/number/readme.md +225 -0
  809. package/src/numeric/is_integer.ts +54 -0
  810. package/src/numeric/is_negative.ts +51 -0
  811. package/src/numeric/is_not_integer.ts +54 -0
  812. package/src/numeric/is_not_negative.ts +49 -0
  813. package/src/numeric/is_not_numeric.ts +21 -0
  814. package/src/numeric/is_not_positive.ts +50 -0
  815. package/src/numeric/is_numeric.ts +20 -0
  816. package/src/numeric/is_positive.ts +51 -0
  817. package/src/numeric/numeric_plus.ts +9 -0
  818. package/src/numeric/numeric_type.ts +9 -0
  819. package/src/object/ANotB.ts +12 -0
  820. package/src/object/IsDisjoint.ts +9 -0
  821. package/src/object/KeysWithDiffType.ts +9 -0
  822. package/src/object/KnownKeys.ts +17 -0
  823. package/src/object/RecursiveIntersect.ts +25 -0
  824. package/src/object/RecursiveRequired.ts +9 -0
  825. package/src/object/Required.ts +7 -0
  826. package/src/object/RequiredKeys.ts +8 -0
  827. package/src/object/SpreadRecord.ts +4 -0
  828. package/src/object/facade.ts +206 -0
  829. package/src/object/forEachKey.ts +9 -0
  830. package/src/object/getField.ts +17 -0
  831. package/src/object/hasKey.ts +7 -0
  832. package/src/object/index.ts +38 -0
  833. package/src/object/is_not_object.ts +139 -0
  834. package/src/object/is_object.ts +127 -0
  835. package/src/object/left_join.ts +10 -0
  836. package/src/object/merge.ts +98 -0
  837. package/src/object/omit.ts +211 -0
  838. package/src/object/optional_key.ts +35 -0
  839. package/src/object/pick.ts +209 -0
  840. package/src/object/recursive_partial.ts +39 -0
  841. package/src/object/split.ts +191 -0
  842. package/src/object/typeOverrideIncompatible.ts +8 -0
  843. package/src/predicates/CanAssign.ts +65 -0
  844. package/src/predicates/Extends.ts +7 -0
  845. package/src/predicates/assignable.ts +101 -0
  846. package/src/predicates/index.ts +6 -0
  847. package/src/predicates/literal.ts +35 -0
  848. package/src/predicates/logical.ts +19 -0
  849. package/src/predicates/not_assignable.ts +101 -0
  850. package/src/primitive.ts +4 -0
  851. package/src/promise/index.ts +5 -0
  852. package/src/promise/mapSeries.ts +3 -0
  853. package/src/string/$extract_manipulated_string.ts +50 -0
  854. package/src/string/_string_type.ts +11 -0
  855. package/src/string/is_not_string.ts +98 -0
  856. package/src/string/is_not_string_literal.ts +127 -0
  857. package/src/string/is_not_template_literal.ts +87 -0
  858. package/src/string/is_string.ts +98 -0
  859. package/src/string/is_string_literal.ts +127 -0
  860. package/src/string/is_template_literal.ts +89 -0
  861. package/src/string/string.ts +36 -0
  862. package/src/string/string_plus.ts +33 -0
  863. package/src/symbol/is_not_symbol.ts +80 -0
  864. package/src/symbol/is_symbol.ts +82 -0
  865. package/src/testing/stub.ts +81 -0
  866. package/src/testing/test_type.ts +313 -0
  867. package/src/tuple/common_prop_keys.ts +38 -0
  868. package/src/tuple/create_tuple.ts +42 -0
  869. package/src/tuple/drop.ts +123 -0
  870. package/src/tuple/is_not_tuple.ts +99 -0
  871. package/src/tuple/is_tuple.ts +96 -0
  872. package/src/tuple/readme.md +282 -0
  873. package/src/tuple/tail.ts +12 -0
  874. package/src/tuple/tuple_plus.common_prop_keys.ts +44 -0
  875. package/src/tuple/tuple_plus.drop_match.ts +20 -0
  876. package/src/tuple/tuple_plus.filter.ts +22 -0
  877. package/src/tuple/tuple_plus.find.ts +79 -0
  878. package/src/tuple/tuple_plus.pad_start.ts +46 -0
  879. package/src/type/no_infer.ts +28 -0
  880. package/src/type-guard/is_type.ts +48 -0
  881. package/src/type_plus/$equality.ts +12 -0
  882. package/src/type_plus/$error.ts +8 -0
  883. package/src/type_plus/$infer_error.ts +23 -0
  884. package/src/type_plus/$merge_options.ts +8 -0
  885. package/src/type_plus/$resolve_options.ts +17 -0
  886. package/src/type_plus/$special_type.ts +26 -0
  887. package/src/type_plus/$type.ts +10 -0
  888. package/src/type_plus/branch/$branch.ts +26 -0
  889. package/src/type_plus/branch/$distributive.ts +19 -0
  890. package/src/type_plus/branch/$exact.ts +38 -0
  891. package/src/type_plus/branch/$input_options.ts +8 -0
  892. package/src/type_plus/branch/$is_distributive.ts +15 -0
  893. package/src/type_plus/branch/$override.ts +22 -0
  894. package/src/type_plus/branch/$resolve_branch.ts +71 -0
  895. package/src/type_plus/branch/$select.ts +89 -0
  896. package/src/type_plus/branch/$select_invert.ts +83 -0
  897. package/src/type_plus/branch/$select_invert_strict.ts +83 -0
  898. package/src/type_plus/branch/$select_strict.ts +88 -0
  899. package/src/type_plus/branch/$selection.ts +134 -0
  900. package/src/type_plus/branch/$selection_options.ts +36 -0
  901. package/src/type_plus/readme.md +25 -0
  902. package/src/undefined/has_undefined.ts +45 -0
  903. package/src/undefined/is_not_undefined.ts +80 -0
  904. package/src/undefined/is_undefined.ts +83 -0
  905. package/src/undefined/readme.md +140 -0
  906. package/src/union/readme.md +81 -0
  907. package/src/union/union.ts +34 -0
  908. package/src/union/union_to_intersection.ts +7 -0
  909. package/src/unknown/is_not_unknown.ts +57 -0
  910. package/src/unknown/is_unknown.ts +57 -0
  911. package/src/unknown/not_unknown_or.ts +33 -0
  912. package/src/unknown/readme.md +108 -0
  913. package/src/unknown/unknown.ts +57 -0
  914. package/src/utils/index.ts +61 -0
  915. package/src/utils/options.ts +15 -0
  916. package/src/void/is_not_void.ts +90 -0
  917. package/src/void/is_void.ts +91 -0
  918. package/src/void/readme.md +108 -0
  919. package/esm/any/any_type.d.ts +0 -63
  920. package/esm/any/any_type.d.ts.map +0 -1
  921. package/esm/any/any_type.js +0 -2
  922. package/esm/any/any_type.js.map +0 -1
  923. package/esm/array/array_type.d.ts +0 -66
  924. package/esm/array/array_type.d.ts.map +0 -1
  925. package/esm/array/array_type.js +0 -2
  926. package/esm/array/array_type.js.map +0 -1
  927. package/esm/array/strict_array_type.d.ts +0 -66
  928. package/esm/array/strict_array_type.d.ts.map +0 -1
  929. package/esm/array/strict_array_type.js +0 -2
  930. package/esm/array/strict_array_type.js.map +0 -1
  931. package/esm/bigint/bigint_type.d.ts +0 -54
  932. package/esm/bigint/bigint_type.d.ts.map +0 -1
  933. package/esm/bigint/bigint_type.js +0 -2
  934. package/esm/bigint/bigint_type.js.map +0 -1
  935. package/esm/bigint/strict_bigint_type.d.ts +0 -56
  936. package/esm/bigint/strict_bigint_type.d.ts.map +0 -1
  937. package/esm/bigint/strict_bigint_type.js +0 -2
  938. package/esm/bigint/strict_bigint_type.js.map +0 -1
  939. package/esm/boolean/boolean_type.d.ts +0 -56
  940. package/esm/boolean/boolean_type.d.ts.map +0 -1
  941. package/esm/boolean/boolean_type.js +0 -2
  942. package/esm/boolean/boolean_type.js.map +0 -1
  943. package/esm/boolean/false_type.d.ts +0 -49
  944. package/esm/boolean/false_type.d.ts.map +0 -1
  945. package/esm/boolean/false_type.js +0 -2
  946. package/esm/boolean/false_type.js.map +0 -1
  947. package/esm/boolean/strict_boolean_type.d.ts +0 -53
  948. package/esm/boolean/strict_boolean_type.d.ts.map +0 -1
  949. package/esm/boolean/strict_boolean_type.js +0 -2
  950. package/esm/boolean/strict_boolean_type.js.map +0 -1
  951. package/esm/boolean/true_type.d.ts +0 -49
  952. package/esm/boolean/true_type.d.ts.map +0 -1
  953. package/esm/boolean/true_type.js +0 -2
  954. package/esm/boolean/true_type.js.map +0 -1
  955. package/esm/function/function_type.d.ts +0 -59
  956. package/esm/function/function_type.d.ts.map +0 -1
  957. package/esm/function/function_type.js +0 -2
  958. package/esm/function/function_type.js.map +0 -1
  959. package/esm/function/strict_function_type.d.ts +0 -49
  960. package/esm/function/strict_function_type.d.ts.map +0 -1
  961. package/esm/function/strict_function_type.js +0 -2
  962. package/esm/function/strict_function_type.js.map +0 -1
  963. package/esm/mix_types/any_or_never_type.d.ts +0 -37
  964. package/esm/mix_types/any_or_never_type.d.ts.map +0 -1
  965. package/esm/mix_types/any_or_never_type.js +0 -2
  966. package/esm/mix_types/any_or_never_type.js.map +0 -1
  967. package/esm/never/never_type.d.ts +0 -62
  968. package/esm/never/never_type.d.ts.map +0 -1
  969. package/esm/never/never_type.js +0 -2
  970. package/esm/never/never_type.js.map +0 -1
  971. package/esm/null/null_type.d.ts +0 -50
  972. package/esm/null/null_type.d.ts.map +0 -1
  973. package/esm/null/null_type.js +0 -2
  974. package/esm/null/null_type.js.map +0 -1
  975. package/esm/number/number_type.d.ts +0 -50
  976. package/esm/number/number_type.d.ts.map +0 -1
  977. package/esm/number/number_type.js +0 -2
  978. package/esm/number/number_type.js.map +0 -1
  979. package/esm/number/strict_number_type.d.ts +0 -65
  980. package/esm/number/strict_number_type.d.ts.map +0 -1
  981. package/esm/number/strict_number_type.js +0 -2
  982. package/esm/number/strict_number_type.js.map +0 -1
  983. package/esm/numeric/integer.d.ts +0 -69
  984. package/esm/numeric/integer.d.ts.map +0 -1
  985. package/esm/numeric/integer.js +0 -2
  986. package/esm/numeric/integer.js.map +0 -1
  987. package/esm/numeric/negative.d.ts +0 -70
  988. package/esm/numeric/negative.d.ts.map +0 -1
  989. package/esm/numeric/negative.js +0 -2
  990. package/esm/numeric/negative.js.map +0 -1
  991. package/esm/numeric/positive.d.ts +0 -53
  992. package/esm/numeric/positive.d.ts.map +0 -1
  993. package/esm/numeric/positive.js +0 -2
  994. package/esm/numeric/positive.js.map +0 -1
  995. package/esm/object/OptionalKeys.d.ts +0 -8
  996. package/esm/object/OptionalKeys.d.ts.map +0 -1
  997. package/esm/object/OptionalKeys.js +0 -2
  998. package/esm/object/OptionalKeys.js.map +0 -1
  999. package/esm/object/is_strict_object.d.ts +0 -10
  1000. package/esm/object/is_strict_object.d.ts.map +0 -1
  1001. package/esm/object/is_strict_object.js +0 -2
  1002. package/esm/object/is_strict_object.js.map +0 -1
  1003. package/esm/object/object_type.d.ts +0 -54
  1004. package/esm/object/object_type.d.ts.map +0 -1
  1005. package/esm/object/object_type.js +0 -2
  1006. package/esm/object/object_type.js.map +0 -1
  1007. package/esm/string/strict_string_type.d.ts +0 -61
  1008. package/esm/string/strict_string_type.d.ts.map +0 -1
  1009. package/esm/string/strict_string_type.js +0 -2
  1010. package/esm/string/strict_string_type.js.map +0 -1
  1011. package/esm/string/string_type.d.ts +0 -58
  1012. package/esm/string/string_type.d.ts.map +0 -1
  1013. package/esm/string/string_type.js +0 -2
  1014. package/esm/string/string_type.js.map +0 -1
  1015. package/esm/symbol/symbol_type.d.ts +0 -50
  1016. package/esm/symbol/symbol_type.d.ts.map +0 -1
  1017. package/esm/symbol/symbol_type.js +0 -2
  1018. package/esm/symbol/symbol_type.js.map +0 -1
  1019. package/esm/tuple/tuple_type.d.ts +0 -77
  1020. package/esm/tuple/tuple_type.d.ts.map +0 -1
  1021. package/esm/tuple/tuple_type.js +0 -2
  1022. package/esm/tuple/tuple_type.js.map +0 -1
  1023. package/esm/type_plus/cases.d.ts +0 -13
  1024. package/esm/type_plus/cases.d.ts.map +0 -1
  1025. package/esm/type_plus/cases.js +0 -6
  1026. package/esm/type_plus/cases.js.map +0 -1
  1027. package/esm/undefined/undefined_type.d.ts +0 -53
  1028. package/esm/undefined/undefined_type.d.ts.map +0 -1
  1029. package/esm/undefined/undefined_type.js +0 -2
  1030. package/esm/undefined/undefined_type.js.map +0 -1
  1031. package/esm/unknown/unknown_type.d.ts +0 -63
  1032. package/esm/unknown/unknown_type.d.ts.map +0 -1
  1033. package/esm/unknown/unknown_type.js +0 -2
  1034. package/esm/unknown/unknown_type.js.map +0 -1
  1035. package/esm/utils/NonNull.d.ts +0 -2
  1036. package/esm/utils/NonNull.d.ts.map +0 -1
  1037. package/esm/utils/NonNull.js +0 -2
  1038. package/esm/utils/NonNull.js.map +0 -1
  1039. package/esm/utils/NonUndefined.d.ts +0 -2
  1040. package/esm/utils/NonUndefined.d.ts.map +0 -1
  1041. package/esm/utils/NonUndefined.js +0 -2
  1042. package/esm/utils/NonUndefined.js.map +0 -1
  1043. package/esm/void/void_type.d.ts +0 -43
  1044. package/esm/void/void_type.d.ts.map +0 -1
  1045. package/esm/void/void_type.js +0 -2
  1046. package/esm/void/void_type.js.map +0 -1
  1047. package/ts/any/any_type.ts +0 -65
  1048. package/ts/any/readme.md +0 -110
  1049. package/ts/array/array.at.ts +0 -30
  1050. package/ts/array/array.entries.ts +0 -26
  1051. package/ts/array/array.find_last.ts +0 -29
  1052. package/ts/array/array.reverse.ts +0 -25
  1053. package/ts/array/array.some.ts +0 -67
  1054. package/ts/array/array_plus.common_prop_keys.ts +0 -35
  1055. package/ts/array/array_plus.drop_match.ts +0 -19
  1056. package/ts/array/array_plus.element_match.ts +0 -61
  1057. package/ts/array/array_plus.filter.ts +0 -49
  1058. package/ts/array/array_plus.find.ts +0 -71
  1059. package/ts/array/array_plus.index_at.ts +0 -69
  1060. package/ts/array/array_plus.is_index_out_of_bound.ts +0 -22
  1061. package/ts/array/array_plus.is_readonly.ts +0 -46
  1062. package/ts/array/array_plus.pad_start.ts +0 -13
  1063. package/ts/array/array_plus.split_at.ts +0 -74
  1064. package/ts/array/array_type.ts +0 -75
  1065. package/ts/array/find_first.ts +0 -71
  1066. package/ts/array/head.ts +0 -40
  1067. package/ts/array/intersect_of_props.ts +0 -21
  1068. package/ts/array/last.ts +0 -40
  1069. package/ts/array/loose_array_type.ts +0 -69
  1070. package/ts/array/pad_start.ts +0 -39
  1071. package/ts/array/readme.md +0 -567
  1072. package/ts/array/reverse.ts +0 -16
  1073. package/ts/array/strict_array_type.ts +0 -75
  1074. package/ts/array/union_of_props.ts +0 -17
  1075. package/ts/assertion/assert_type.ts +0 -119
  1076. package/ts/bigint/bigint_type.ts +0 -57
  1077. package/ts/bigint/cast.ts +0 -13
  1078. package/ts/bigint/readme.md +0 -51
  1079. package/ts/bigint/strict_bigint_type.ts +0 -61
  1080. package/ts/boolean/boolean_type.ts +0 -61
  1081. package/ts/boolean/false_type.ts +0 -53
  1082. package/ts/boolean/readme.md +0 -85
  1083. package/ts/boolean/strict_boolean_type.ts +0 -57
  1084. package/ts/boolean/true_type.ts +0 -53
  1085. package/ts/class/AnyConstructor.ts +0 -1
  1086. package/ts/class/isConstructor.ts +0 -34
  1087. package/ts/equal/equal.ts +0 -135
  1088. package/ts/equal/identity_equal.ts +0 -9
  1089. package/ts/function/extract_function.ts +0 -29
  1090. package/ts/function/function_type.ts +0 -64
  1091. package/ts/function/strict_function_type.ts +0 -53
  1092. package/ts/functional/Maybe.ts +0 -22
  1093. package/ts/functional/compose.ts +0 -17
  1094. package/ts/functional/context.ts +0 -66
  1095. package/ts/index.ts +0 -127
  1096. package/ts/math/abs.ts +0 -18
  1097. package/ts/math/greater_than.ts +0 -12
  1098. package/ts/math/index.ts +0 -7
  1099. package/ts/math/math_plus.to_negative.ts +0 -22
  1100. package/ts/math/max.ts +0 -13
  1101. package/ts/math/numeric_struct.ts +0 -656
  1102. package/ts/mix_types/any_or_never_type.ts +0 -38
  1103. package/ts/mix_types/box.ts +0 -62
  1104. package/ts/mix_types/merge.ts +0 -61
  1105. package/ts/mix_types/readme.md +0 -74
  1106. package/ts/never/never_type.ts +0 -70
  1107. package/ts/never/readme.md +0 -37
  1108. package/ts/nodejs/isNodeError.ts +0 -27
  1109. package/ts/nominal/brand.ts +0 -43
  1110. package/ts/nominal/flavor.ts +0 -53
  1111. package/ts/nominal/nominal_match.ts +0 -22
  1112. package/ts/null/null_type.ts +0 -53
  1113. package/ts/null/readme.md +0 -24
  1114. package/ts/number/cast.ts +0 -17
  1115. package/ts/number/number_plus.ts +0 -20
  1116. package/ts/number/number_type.ts +0 -53
  1117. package/ts/number/readme.md +0 -47
  1118. package/ts/number/strict_number_type.ts +0 -69
  1119. package/ts/numeric/integer.ts +0 -75
  1120. package/ts/numeric/negative.ts +0 -101
  1121. package/ts/numeric/numeric_plus.ts +0 -12
  1122. package/ts/numeric/numeric_type.ts +0 -64
  1123. package/ts/numeric/positive.ts +0 -60
  1124. package/ts/object/ANotB.ts +0 -12
  1125. package/ts/object/IsDisjoint.ts +0 -12
  1126. package/ts/object/KeysWithDiffType.ts +0 -9
  1127. package/ts/object/KnownKeys.ts +0 -17
  1128. package/ts/object/OptionalKeys.ts +0 -9
  1129. package/ts/object/RecursiveIntersect.ts +0 -25
  1130. package/ts/object/RecursiveRequired.ts +0 -9
  1131. package/ts/object/Required.ts +0 -9
  1132. package/ts/object/RequiredKeys.ts +0 -8
  1133. package/ts/object/SpreadRecord.ts +0 -7
  1134. package/ts/object/facade.ts +0 -214
  1135. package/ts/object/forEachKey.ts +0 -9
  1136. package/ts/object/getField.ts +0 -20
  1137. package/ts/object/hasKey.ts +0 -7
  1138. package/ts/object/index.ts +0 -38
  1139. package/ts/object/is_strict_object.ts +0 -14
  1140. package/ts/object/left_join.ts +0 -19
  1141. package/ts/object/merge.ts +0 -122
  1142. package/ts/object/object_type.ts +0 -57
  1143. package/ts/object/omit.ts +0 -222
  1144. package/ts/object/optional_key.ts +0 -38
  1145. package/ts/object/pick.ts +0 -220
  1146. package/ts/object/recursive_partial.ts +0 -39
  1147. package/ts/object/split.ts +0 -203
  1148. package/ts/object/typeOverrideIncompatible.ts +0 -10
  1149. package/ts/predicates/CanAssign.ts +0 -71
  1150. package/ts/predicates/Extends.ts +0 -4
  1151. package/ts/predicates/index.ts +0 -7
  1152. package/ts/predicates/literal.ts +0 -35
  1153. package/ts/predicates/logical.ts +0 -19
  1154. package/ts/primitive.ts +0 -13
  1155. package/ts/promise/index.ts +0 -5
  1156. package/ts/promise/mapSeries.ts +0 -3
  1157. package/ts/string/strict_string_type.ts +0 -65
  1158. package/ts/string/string.ts +0 -36
  1159. package/ts/string/string_plus.ts +0 -33
  1160. package/ts/string/string_type.ts +0 -61
  1161. package/ts/symbol/symbol_type.ts +0 -53
  1162. package/ts/testing/stub.ts +0 -80
  1163. package/ts/testing/test_type.ts +0 -317
  1164. package/ts/tuple/common_prop_keys.ts +0 -41
  1165. package/ts/tuple/create_tuple.ts +0 -42
  1166. package/ts/tuple/drop.ts +0 -125
  1167. package/ts/tuple/readme.md +0 -282
  1168. package/ts/tuple/tail.ts +0 -10
  1169. package/ts/tuple/tuple_plus.common_prop_keys.ts +0 -47
  1170. package/ts/tuple/tuple_plus.drop_match.ts +0 -20
  1171. package/ts/tuple/tuple_plus.filter.ts +0 -29
  1172. package/ts/tuple/tuple_plus.find.ts +0 -88
  1173. package/ts/tuple/tuple_plus.pad_start.ts +0 -61
  1174. package/ts/tuple/tuple_type.ts +0 -106
  1175. package/ts/type/no_infer.ts +0 -27
  1176. package/ts/type-guard/is_type.ts +0 -52
  1177. package/ts/type_plus/cases.ts +0 -14
  1178. package/ts/undefined/readme.md +0 -18
  1179. package/ts/undefined/undefined_type.ts +0 -57
  1180. package/ts/union/readme.md +0 -81
  1181. package/ts/union/union.ts +0 -37
  1182. package/ts/union/union_to_intersection.ts +0 -9
  1183. package/ts/unknown/readme.md +0 -27
  1184. package/ts/unknown/unknown_type.ts +0 -68
  1185. package/ts/utils/NonNull.ts +0 -1
  1186. package/ts/utils/NonUndefined.ts +0 -1
  1187. package/ts/utils/index.ts +0 -63
  1188. package/ts/utils/options.ts +0 -29
  1189. package/ts/void/readme.md +0 -26
  1190. package/ts/void/void_type.ts +0 -50
  1191. /package/{ts → src}/array/array_plus.concat.ts +0 -0
  1192. /package/{ts → src}/array/array_plus.ts +0 -0
  1193. /package/{ts → src}/array/filter.ts +0 -0
  1194. /package/{ts → src}/array/literal_array.ts +0 -0
  1195. /package/{ts → src}/array/reduce_while.ts +0 -0
  1196. /package/{ts → src}/array/union_of_values.ts +0 -0
  1197. /package/{ts → src}/assertion/readme.md +0 -0
  1198. /package/{ts → src}/binary/Bit.ts +0 -0
  1199. /package/{ts → src}/binary/_binary.ts +0 -0
  1200. /package/{ts → src}/binary/index.ts +0 -0
  1201. /package/{ts → src}/class/index.ts +0 -0
  1202. /package/{ts → src}/composable_types.ts +0 -0
  1203. /package/{ts → src}/equal/readme.md +0 -0
  1204. /package/{ts → src}/function/any_function.ts +0 -0
  1205. /package/{ts → src}/function/readme.md +0 -0
  1206. /package/{ts → src}/functional/ChainFn.ts +0 -0
  1207. /package/{ts → src}/functional/index.ts +0 -0
  1208. /package/{ts → src}/json.ts +0 -0
  1209. /package/{ts → src}/math/README.md +0 -0
  1210. /package/{ts → src}/math/add.ts +0 -0
  1211. /package/{ts → src}/math/math_plus.ts +0 -0
  1212. /package/{ts → src}/math/multiply.ts +0 -0
  1213. /package/{ts → src}/math/subtract.ts +0 -0
  1214. /package/{ts → src}/nodejs/index.ts +0 -0
  1215. /package/{ts → src}/nominal/constants.ts +0 -0
  1216. /package/{ts → src}/nominal/index.ts +0 -0
  1217. /package/{ts → src}/number/number_array.ts +0 -0
  1218. /package/{ts → src}/numeric/cast.ts +0 -0
  1219. /package/{ts → src}/numeric/readme.md +0 -0
  1220. /package/{ts → src}/object/ExcludePropType.ts +0 -0
  1221. /package/{ts → src}/object/IsRecord.ts +0 -0
  1222. /package/{ts → src}/object/KeyTypes.ts +0 -0
  1223. /package/{ts → src}/object/KeyofOptional.ts +0 -0
  1224. /package/{ts → src}/object/Partial.ts +0 -0
  1225. /package/{ts → src}/object/ValueOf.ts +0 -0
  1226. /package/{ts → src}/object/any_record.ts +0 -0
  1227. /package/{ts → src}/object/everyKey.ts +0 -0
  1228. /package/{ts → src}/object/filterKey.ts +0 -0
  1229. /package/{ts → src}/object/findKey.ts +0 -0
  1230. /package/{ts → src}/object/hasProperty.ts +0 -0
  1231. /package/{ts → src}/object/mapKey.ts +0 -0
  1232. /package/{ts → src}/object/mapProperties.ts +0 -0
  1233. /package/{ts → src}/object/object_plus.ts +0 -0
  1234. /package/{ts → src}/object/properties.ts +0 -0
  1235. /package/{ts → src}/object/readme.md +0 -0
  1236. /package/{ts → src}/object/record.ts +0 -0
  1237. /package/{ts → src}/object/reduceKey.ts +0 -0
  1238. /package/{ts → src}/object/replaceProperty.ts +0 -0
  1239. /package/{ts → src}/object/someKey.ts +0 -0
  1240. /package/{ts → src}/predicates/If.ts +0 -0
  1241. /package/{ts → src}/predicates/IsEmptyObject.ts +0 -0
  1242. /package/{ts → src}/promise/MaybePromise.ts +0 -0
  1243. /package/{ts → src}/promise/PromiseValue.ts +0 -0
  1244. /package/{ts → src}/promise/PromiseValueMerge.ts +0 -0
  1245. /package/{ts → src}/promise/isPromise.ts +0 -0
  1246. /package/{ts → src}/string/readme.md +0 -0
  1247. /package/{ts → src}/symbol/readme.md +0 -0
  1248. /package/{ts → src}/testing/readme.md +0 -0
  1249. /package/{ts → src}/tuple/tuple_plus.ts +0 -0
  1250. /package/{ts → src}/type/failed.ts +0 -0
  1251. /package/{ts → src}/type/readme.md +0 -0
  1252. /package/{ts → src}/type-guard/readme.md +0 -0
  1253. /package/{ts → src}/union_keys.ts +0 -0
  1254. /package/{ts → src}/unpartial.ts +0 -0
  1255. /package/{ts → src}/utils/Widen.ts +0 -0
  1256. /package/{ts → src}/utils/as.ts +0 -0
  1257. /package/{ts → src}/utils/inspect.ts +0 -0
@@ -0,0 +1,650 @@
1
+ import type { Tail } from '../tuple/tail.js'
2
+ import type { PadStart } from '../tuple/tuple_plus.pad_start.js'
3
+ import type { Add as NumericAdd } from './add.js'
4
+ import type { ToNegative } from './math_plus.to_negative.js'
5
+
6
+ /**
7
+ * Internal numeric representation to perform math operations.
8
+ *
9
+ * NumericStruct: `[Type, DigitsStruct]`
10
+ * DigitsStruct: `[Sign, Digits, Exponent]`
11
+ *
12
+ * It is similar to the floating point representation with some minor differences.
13
+ *
14
+ * @template Type Type of the value, either `number` or `bigint`.
15
+ * It captures the original type of the value,
16
+ * so that at the end of the operation,
17
+ * the value can be adjusted accordingly.
18
+ *
19
+ * @template Sign Sign of the value, either `+` or `-`.
20
+ *
21
+ * @template Digits Digits of the value.
22
+ * It is a tuple of digits,
23
+ * where each digits can range from 0 to 9 during input,
24
+ * and range from -10 to 89 during operation.
25
+ * The max 89 comes from multiplication:
26
+ *
27
+ * ```
28
+ * 99 * 9
29
+ * => [[ 9, 9], 0]
30
+ * * [ [9], 0]
31
+ * => [[ 81, 81], 0]
32
+ * => [[ 89, 1], 0]
33
+ * => [[ 8, 9, 1], 0]
34
+ * ```
35
+ *
36
+ * While -10 comes from subtraction:
37
+ *
38
+ * ```
39
+ * 100 - 99 = 1
40
+ * => [[ 1, 0, 0], 0]
41
+ * - [[ 9, 9], 0]
42
+ * => [[ 1, -9, -9], 0]
43
+ * => [[ 1,-10, 1], 0] // here, as in intermediate step
44
+ * => [[ 0, 0, 1], 0]
45
+ * => [[1], 0]
46
+ * => 1
47
+ * ```
48
+ *
49
+ *
50
+ * Unlike floating point numbers, the digits length is not limited.
51
+ *
52
+ * @template Exponent Exponent is the negative exponent of the number.
53
+ *
54
+ * ```
55
+ * 1.23 = 123e^-2 = [[1, 2, 3], 2]
56
+ * 0.0123 = 123e^-4 = [[1, 2, 3], 4]
57
+ * ```
58
+ *
59
+ * There are 2 kinds of `NumericStruct`:
60
+ * - Normalized: The `NumericStruct` is clean and can be converted to/from `number` or `bigint`
61
+ * - Not normalized: The `DigitsStruct` within the `NumericStruct` is normalized,
62
+ * but may need to convert between `number` and `bigint`.\
63
+ * e.g. bigint + float => float (if possible), number + number => bigint (too big)
64
+ *
65
+ * During operations, the `DigitsStruct` can be not normalized,
66
+ * but each operation should always normalize the `DigitsStruct` before returning.
67
+ * Each operations assume the input `DigitsStruct` is normalized.
68
+ *
69
+ * All operations are performed in similar way:
70
+ *
71
+ * value -> NormalizedNumericStruct -> operation(NormalizedDigitsStruct) -> NormalizedNumericStruct -> Value
72
+ *
73
+ * This allows the operations to be composable.
74
+ * */
75
+ export type NumericStruct = ['bigint' | 'number', DigitsStruct]
76
+ // These are used to reference the NumericStruct values
77
+ export type TYPE = 0
78
+ export type DIGITS_STRUCT = 1
79
+
80
+ export namespace NumericStruct {
81
+ /**
82
+ * Creates a `NumericStruct` from number or bigint `N`.
83
+ */
84
+ export type FromNumeric<N extends number | bigint, Fail = never> = N extends number
85
+ ? number extends N
86
+ ? Fail
87
+ : ['number', DigitsStruct.FromNumber<N>]
88
+ : N extends bigint
89
+ ? bigint extends N
90
+ ? Fail
91
+ : ['bigint', DigitsStruct.FromBigint<N>]
92
+ : never
93
+
94
+ /**
95
+ * Converts a `NumericStruct` to a number or bigint.
96
+ *
97
+ * It includes the normalization of the `NumericStruct`.
98
+ */
99
+ export type ToNumeric<M extends NumericStruct> = DigitsStruct.ToString<M[DIGITS_STRUCT]> extends infer S extends
100
+ string
101
+ ? M[TYPE] extends 'bigint'
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`>>
104
+ : never
105
+
106
+ export type Add<A extends NumericStruct, B extends NumericStruct> = [
107
+ A[TYPE],
108
+ DigitsStruct.Add<A[DIGITS_STRUCT], B[DIGITS_STRUCT]>
109
+ ]
110
+
111
+ export type Subtract<A extends NumericStruct, B extends NumericStruct> = [
112
+ A[TYPE],
113
+ DigitsStruct.Subtract<A[DIGITS_STRUCT], B[DIGITS_STRUCT]>
114
+ ]
115
+
116
+ export type Multiply<A extends NumericStruct, B extends NumericStruct> = [
117
+ A[TYPE],
118
+ DigitsStruct.Multiply<A[DIGITS_STRUCT], B[DIGITS_STRUCT]>
119
+ ]
120
+ }
121
+
122
+ // TODO: move into `NumericHelpers`
123
+ type StringToBigint<S extends string, Fail> = S extends `${infer N extends bigint}` ? N : Fail
124
+
125
+ // TODO: move into `NumericHelpers`
126
+ export type StringToNumber<S extends string, Fail> = S extends `${infer N extends number}`
127
+ ? number extends N
128
+ ? Fail
129
+ : N
130
+ : Fail
131
+
132
+ export type DigitsStruct = [Sign: '+' | '-', Digits: number[], Exponent: number]
133
+ // These are used to reference the DigitsStruct values
134
+ export type SIGN = 0
135
+ export type DIGITS = 1
136
+ export type EXPONENT = 2
137
+
138
+ export namespace DigitsStruct {
139
+ /**
140
+ * Creates a `DigitsStruct` from number `N`.
141
+ *
142
+ * @template N Number to create `DigitsStruct` from.
143
+ */
144
+ export type FromNumber<N extends number> = `${N}` extends `-${infer R}`
145
+ ? R extends `${infer W}.${infer F}`
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]
153
+ : `${N}` extends `${infer W}.${infer F}`
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]
161
+
162
+ /**
163
+ * Creates a `DigitsStruct` from bigint `N`.
164
+ *
165
+ * @template N Number to create `DigitsStruct` from.
166
+ */
167
+ export type FromBigint<N extends bigint> = `${N}` extends `-${infer R}`
168
+ ? ['-', DigitArray.FromString<R>, 0]
169
+ : ['+', DigitArray.FromString<`${N}`>, 0]
170
+
171
+ /**
172
+ * Converts a `DigitsStruct` to string.
173
+ *
174
+ * @template D A normalized `DigitsStruct`.
175
+ */
176
+ export type ToString<D extends DigitsStruct> = (
177
+ PadStart<D[DIGITS], D[EXPONENT], 0> extends infer Padded extends number[]
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
186
+ ) extends infer R
187
+ ? R extends '0'
188
+ ? R
189
+ : R extends string
190
+ ? D[SIGN] extends '-'
191
+ ? `-${R}`
192
+ : R
193
+ : never
194
+ : never
195
+
196
+ /**
197
+ * Splits DigitArray into the whole number and the fractional part.
198
+ *
199
+ * @note cannot use `ArrayPlus.SplitAt` as it causes infinite loop.
200
+ */
201
+ type SplitFloat<A extends number[], I extends number, F extends number[] = []> = I extends 0
202
+ ? [A, []]
203
+ : F['length'] extends I
204
+ ? [A, F]
205
+ : A extends [...infer H extends number[], infer T extends number]
206
+ ? SplitFloat<H, I, [T, ...F]>
207
+ : never
208
+
209
+ /**
210
+ * Normalizes a `DigitsStruct`.
211
+ *
212
+ * The normalization two two things:
213
+ *
214
+ * - if the first digit is negative, it will flip the sign.
215
+ * - carry digits if the digit is negative or greater than 9.
216
+ */
217
+ export type Normalize<
218
+ N extends DigitsStruct,
219
+ R extends DigitsStruct = ['+', [], 0]
220
+ > = `${N[DIGITS][0]}` extends `-${number}`
221
+ ? Normalize<FlipSign<N>, R>
222
+ : [N[SIGN], DigitArray.CarryDigits<N[DIGITS]>, N[EXPONENT]]
223
+
224
+ type FlipSign<D extends DigitsStruct, I extends number[] = D[DIGITS], R extends number[] = []> = I extends []
225
+ ? D[SIGN] extends '-'
226
+ ? ['+', R, D[EXPONENT]]
227
+ : ['-', R, D[EXPONENT]]
228
+ : I extends [infer H extends number, ...infer T extends number[]]
229
+ ? FlipSign<D, T, [...R, Digit.FlipSign<H>]>
230
+ : never
231
+
232
+ /**
233
+ * Add `A` and `B`.
234
+ *
235
+ * @template A A normalized `DigitsStruct`.
236
+ * @template B B normalized `DigitsStruct`.
237
+ */
238
+ export type Add<A extends DigitsStruct, B extends DigitsStruct> = Balance<A, B> extends [
239
+ infer BA extends DigitsStruct,
240
+ infer BB extends DigitsStruct
241
+ ]
242
+ ? [BA[SIGN], BB[SIGN]] extends ['+', '+']
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
251
+ : never
252
+
253
+ export type Subtract<A extends DigitsStruct, B extends DigitsStruct> = Balance<A, B> extends [
254
+ infer BA extends DigitsStruct,
255
+ infer BB extends DigitsStruct
256
+ ]
257
+ ? [BA[SIGN], BB[SIGN]] extends ['+', '+']
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
266
+ : never
267
+
268
+ export type Multiply<A extends DigitsStruct, B extends DigitsStruct> = NumericAdd<
269
+ A[EXPONENT],
270
+ B[EXPONENT]
271
+ > extends infer Exp extends number
272
+ ? [A[SIGN], B[SIGN]] extends ['+', '+']
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
281
+ : never
282
+
283
+ /**
284
+ * Balance the two structs for add/subtract.
285
+ */
286
+ export type Balance<A extends DigitsStruct, B extends DigitsStruct> = GetBalancePadding<
287
+ A[EXPONENT],
288
+ B[EXPONENT]
289
+ > extends [infer Pads extends number[], infer Longer]
290
+ ? Longer extends 'A'
291
+ ? [A, [B[SIGN], DigitArray.TrimLeadingZeros<[...B[DIGITS], ...Pads]>, A[EXPONENT]]]
292
+ : [[A[SIGN], DigitArray.TrimLeadingZeros<[...A[DIGITS], ...Pads]>, B[EXPONENT]], B]
293
+ : never
294
+
295
+ type GetBalancePadding<
296
+ A extends number,
297
+ B extends number,
298
+ C extends number[] = [],
299
+ R extends number[] = []
300
+ > = A extends B
301
+ ? [[], 'A']
302
+ : R extends []
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]>
314
+
315
+ /**
316
+ * This is used to align the `NumberStruct` during `Add/Subtract`.
317
+ */
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]>
323
+ }
324
+
325
+ export namespace DigitArray {
326
+ export type FromString<S extends string> = S extends `1${infer L}`
327
+ ? [1, ...FromString<L>]
328
+ : S extends `2${infer L}`
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
+ : []
367
+
368
+ export type ToString<A extends Array<number | string>> = number extends A['length']
369
+ ? ''
370
+ : A['length'] extends 0
371
+ ? ''
372
+ : `${A[0]}${ToString<Tail<A>>}`
373
+
374
+ /**
375
+ * [0, 0, -1] => [-1]
376
+ *
377
+ * This is used in various places so that there will be less computation,
378
+ * and the sign bit can be handled properly.
379
+ */
380
+ export type TrimLeadingZeros<T extends number[]> = T extends [0]
381
+ ? T
382
+ : T extends [0, ...infer Tail extends number[]]
383
+ ? TrimLeadingZeros<Tail>
384
+ : T
385
+ export type TrimTrailingZeros<T extends number[]> = T extends [0]
386
+ ? T
387
+ : T extends [...infer Tail extends number[], 0]
388
+ ? TrimTrailingZeros<Tail>
389
+ : T
390
+
391
+ export type Add<A extends number[], B extends number[], R extends number[] = []> = A extends []
392
+ ? B extends []
393
+ ? R
394
+ : B extends [...infer BH extends number[], infer BL extends number]
395
+ ? Add<[], BH, [BL, ...R]>
396
+ : never
397
+ : B extends []
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
407
+
408
+ export type Subtract<A extends number[], B extends number[], R extends number[] = []> = A extends []
409
+ ? B extends []
410
+ ? TrimLeadingZeros<R>
411
+ : B extends [...infer BH extends number[], infer BL extends number]
412
+ ? Subtract<[], BH, [ToNegative<BL>, ...R]>
413
+ : never
414
+ : B extends []
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
424
+
425
+ export type Multiply<A extends number[], B extends number[], R extends number[][] = []> = B extends []
426
+ ? RecursiveAdd<R>
427
+ : B extends [infer Head extends number, ...infer Tail extends number[]]
428
+ ? Multiply<A, Tail, [...R, CarryDigits<MultiplyArray<A, Head, Zeros<Tail['length']>>>]>
429
+ : never
430
+
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
436
+
437
+ type MultiplyArray<A extends number[], B extends number, Pad extends number[], R extends number[] = []> = B extends 0
438
+ ? [0]
439
+ : B extends 1
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
446
+
447
+ /**
448
+ * Recursively add digit arrays.
449
+ *
450
+ * This is used in multiplication.
451
+ */
452
+ type RecursiveAdd<E extends number[][], R extends number[] = []> = E extends []
453
+ ? R
454
+ : E extends [infer H extends number[], ...infer T extends number[][]]
455
+ ? RecursiveAdd<T, CarryDigits<Add<R, H>>>
456
+ : never
457
+
458
+ export type CarryDigits<N extends number[], R extends number[] = []> = N extends []
459
+ ? TrimLeadingZeros<R>
460
+ : N extends [infer Tail extends number]
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
489
+ }
490
+
491
+ export namespace Digit {
492
+ /**
493
+ * Adds two `Digit`.
494
+ *
495
+ * add: A: 0 - 9, B: 0 - 9
496
+ * normalize: [81, 81] -> [81 + 8, 1]
497
+ */
498
+ export type Add<A extends number, B extends number> = `${A}` extends `-${infer AD extends number}`
499
+ ? `${B}` extends `-${infer BD extends number}`
500
+ ? ToNegative<PositiveEntryAdd<AD, BD>>
501
+ : Subtract<B, AD>
502
+ : `${B}` extends `-${infer BD extends number}`
503
+ ? Subtract<A, BD>
504
+ : PositiveEntryAdd<A, B>
505
+
506
+ export type FlipSign<T extends number> = T extends 0
507
+ ? 0
508
+ : `${T}` extends `-${infer R extends number}`
509
+ ? R
510
+ : `-${T}` extends `${infer R extends number}`
511
+ ? R
512
+ : never
513
+
514
+ type PositiveEntryAdd<A extends number, B extends number> = [
515
+ [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
516
+ [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
517
+ [2, 3, 4, 5, 6, 7, 8, 9, 10, 11],
518
+ [3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
519
+ [4, 5, 6, 7, 8, 9, 10, 11, 12, 13],
520
+ [5, 6, 7, 8, 9, 10, 11, 12, 13, 14],
521
+ [6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
522
+ [7, 8, 9, 10, 11, 12, 13, 14, 15, 16],
523
+ [8, 9, 10, 11, 12, 13, 14, 15, 16, 17],
524
+ [9, 10, 11, 12, 13, 14, 15, 16, 17, 18],
525
+ [10, 11, 12, 13, 14, 15, 16, 17, 18, 19],
526
+ [11, 12, 13, 14, 15, 16, 17, 18, 19, 20],
527
+ [12, 13, 14, 15, 16, 17, 18, 19, 20, 21],
528
+ [13, 14, 15, 16, 17, 18, 19, 20, 21, 22],
529
+ [14, 15, 16, 17, 18, 19, 20, 21, 22, 23],
530
+ [15, 16, 17, 18, 19, 20, 21, 22, 23, 24],
531
+ [16, 17, 18, 19, 20, 21, 22, 23, 24, 25],
532
+ [17, 18, 19, 20, 21, 22, 23, 24, 25, 26],
533
+ [18, 19, 20, 21, 22, 23, 24, 25, 26, 27],
534
+ [19, 20, 21, 22, 23, 24, 25, 26, 27, 28],
535
+ [20, 21, 22, 23, 24, 25, 26, 27, 28, 29],
536
+ [21, 22, 23, 24, 25, 26, 27, 28, 29, 30],
537
+ [22, 23, 24, 25, 26, 27, 28, 29, 30, 31],
538
+ [23, 24, 25, 26, 27, 28, 29, 30, 31, 32],
539
+ [24, 25, 26, 27, 28, 29, 30, 31, 32, 33],
540
+ [25, 26, 27, 28, 29, 30, 31, 32, 33, 34],
541
+ [26, 27, 28, 29, 30, 31, 32, 33, 34, 35],
542
+ [27, 28, 29, 30, 31, 32, 33, 34, 35, 36],
543
+ [28, 29, 30, 31, 32, 33, 34, 35, 36, 37],
544
+ [29, 30, 31, 32, 33, 34, 35, 36, 37, 38],
545
+ [30, 31, 32, 33, 34, 35, 36, 37, 38, 39],
546
+ [31, 32, 33, 34, 35, 36, 37, 38, 39, 40],
547
+ [32, 33, 34, 35, 36, 37, 38, 39, 40, 41],
548
+ [33, 34, 35, 36, 37, 38, 39, 40, 41, 42],
549
+ [34, 35, 36, 37, 38, 39, 40, 41, 42, 43],
550
+ [35, 36, 37, 38, 39, 40, 41, 42, 43, 44],
551
+ [36, 37, 38, 39, 40, 41, 42, 43, 44, 45],
552
+ [37, 38, 39, 40, 41, 42, 43, 44, 45, 46],
553
+ [38, 39, 40, 41, 42, 43, 44, 45, 46, 47],
554
+ [39, 40, 41, 42, 43, 44, 45, 46, 47, 48],
555
+ [40, 41, 42, 43, 44, 45, 46, 47, 48, 49],
556
+ [41, 42, 43, 44, 45, 46, 47, 48, 49, 50],
557
+ [42, 43, 44, 45, 46, 47, 48, 49, 50, 51],
558
+ [43, 44, 45, 46, 47, 48, 49, 50, 51, 52],
559
+ [44, 45, 46, 47, 48, 49, 50, 51, 52, 53],
560
+ [45, 46, 47, 48, 49, 50, 51, 52, 53, 54],
561
+ [46, 47, 48, 49, 50, 51, 52, 53, 54, 55],
562
+ [47, 48, 49, 50, 51, 52, 53, 54, 55, 56],
563
+ [48, 49, 50, 51, 52, 53, 54, 55, 56, 57],
564
+ [49, 50, 51, 52, 53, 54, 55, 56, 57, 58],
565
+ [50, 51, 52, 53, 54, 55, 56, 57, 58, 59],
566
+ [51, 52, 53, 54, 55, 56, 57, 58, 59, 60],
567
+ [52, 53, 54, 55, 56, 57, 58, 59, 60, 61],
568
+ [53, 54, 55, 56, 57, 58, 59, 60, 61, 62],
569
+ [54, 55, 56, 57, 58, 59, 60, 61, 62, 63],
570
+ [55, 56, 57, 58, 59, 60, 61, 62, 63, 64],
571
+ [56, 57, 58, 59, 60, 61, 62, 63, 64, 65],
572
+ [57, 58, 59, 60, 61, 62, 63, 64, 65, 66],
573
+ [58, 59, 60, 61, 62, 63, 64, 65, 66, 67],
574
+ [59, 60, 61, 62, 63, 64, 65, 66, 67, 68],
575
+ [60, 61, 62, 63, 64, 65, 66, 67, 68, 69],
576
+ [61, 62, 63, 64, 65, 66, 67, 68, 69, 70],
577
+ [62, 63, 64, 65, 66, 67, 68, 69, 70, 71],
578
+ [63, 64, 65, 66, 67, 68, 69, 70, 71, 72],
579
+ [64, 65, 66, 67, 68, 69, 70, 71, 72, 73],
580
+ [65, 66, 67, 68, 69, 70, 71, 72, 73, 74],
581
+ [66, 67, 68, 69, 70, 71, 72, 73, 74, 75],
582
+ [67, 68, 69, 70, 71, 72, 73, 74, 75, 76],
583
+ [68, 69, 70, 71, 72, 73, 74, 75, 76, 77],
584
+ [69, 70, 71, 72, 73, 74, 75, 76, 77, 78],
585
+ [70, 71, 72, 73, 74, 75, 76, 77, 78, 79],
586
+ [71, 72, 73, 74, 75, 76, 77, 78, 79, 80],
587
+ [72, 73, 74, 75, 76, 77, 78, 79, 80, 81],
588
+ [73, 74, 75, 76, 77, 78, 79, 80, 81, 82],
589
+ [74, 75, 76, 77, 78, 79, 80, 81, 82, 83],
590
+ [75, 76, 77, 78, 79, 80, 81, 82, 83, 84],
591
+ [76, 77, 78, 79, 80, 81, 82, 83, 84, 85],
592
+ [77, 78, 79, 80, 81, 82, 83, 84, 85, 86],
593
+ [78, 79, 80, 81, 82, 83, 84, 85, 86, 87],
594
+ [79, 80, 81, 82, 83, 84, 85, 86, 87, 88],
595
+ [80, 81, 82, 83, 84, 85, 86, 87, 88, 89],
596
+ [81, 82, 83, 84, 85, 86, 87, 88, 89, 90]
597
+ ][A][B]
598
+
599
+ /**
600
+ * Subtract two positive numbers.
601
+ * The number range from 0 to 81.
602
+ */
603
+ export type Subtract<A extends number, B extends number> = [`${A}`, `${B}`] extends [
604
+ `${number}${infer A2 extends number}`,
605
+ `${number}${infer B2 extends number}`
606
+ ]
607
+ ? Subtract<A2, B2>
608
+ : `${A}` extends `${number}${infer A2 extends number}`
609
+ ? Subtract<A2, B>
610
+ : `${B}` extends `${number}${infer B2 extends number}`
611
+ ? Subtract<A, B2>
612
+ : SingleDigitSubtract<A, B>
613
+
614
+ export type SingleDigitSubtract<A extends number, B extends number> = [
615
+ [0, -1, -2, -3, -4, -5, -6, -7, -8, -9],
616
+ [1, 0, -1, -2, -3, -4, -5, -6, -7, -8],
617
+ [2, 1, 0, -1, -2, -3, -4, -5, -6, -7],
618
+ [3, 2, 1, 0, -1, -2, -3, -4, -5, -6],
619
+ [4, 3, 2, 1, 0, -1, -2, -3, -4, -5],
620
+ [5, 4, 3, 2, 1, 0, -1, -2, -3, -4],
621
+ [6, 5, 4, 3, 2, 1, 0, -1, -2, -3],
622
+ [7, 6, 5, 4, 3, 2, 1, 0, -1, -2],
623
+ [8, 7, 6, 5, 4, 3, 2, 1, 0, -1],
624
+ [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
625
+ ][A][B]
626
+
627
+ export type Plus10 = { [k in number]: number } & {
628
+ '-1': 9
629
+ '-2': 8
630
+ '-3': 7
631
+ '-4': 6
632
+ '-5': 5
633
+ '-6': 4
634
+ '-7': 3
635
+ '-8': 2
636
+ '-9': 1
637
+ }
638
+ export type Multiply<A extends number, B extends number> = [
639
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
640
+ [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
641
+ [0, 2, 4, 6, 8, 10, 12, 14, 16, 18],
642
+ [0, 3, 6, 9, 12, 15, 18, 21, 24, 27],
643
+ [0, 4, 8, 12, 16, 20, 24, 28, 32, 36],
644
+ [0, 5, 10, 15, 20, 25, 30, 35, 40, 45],
645
+ [0, 6, 12, 18, 24, 30, 36, 42, 48, 54],
646
+ [0, 7, 14, 21, 28, 35, 42, 49, 56, 63],
647
+ [0, 8, 16, 24, 32, 40, 48, 56, 64, 72],
648
+ [0, 9, 18, 27, 36, 45, 54, 63, 72, 81]
649
+ ][A][B]
650
+ }