type-plus 6.2.0 → 6.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1032) hide show
  1. package/README.md +40 -9
  2. package/cjs/any/any_or_never.d.ts +17 -0
  3. package/cjs/any/any_or_never.d.ts.map +1 -0
  4. package/cjs/any/any_or_never.js +3 -0
  5. package/cjs/any/any_or_never.js.map +1 -0
  6. package/cjs/any/any_type.d.ts +57 -0
  7. package/cjs/any/any_type.d.ts.map +1 -0
  8. package/cjs/any/any_type.js +3 -0
  9. package/cjs/any/any_type.js.map +1 -0
  10. package/cjs/array/array.d.ts +32 -0
  11. package/cjs/array/array.d.ts.map +1 -0
  12. package/cjs/array/array.js.map +1 -0
  13. package/cjs/array/array_index.d.ts +37 -0
  14. package/cjs/array/array_index.d.ts.map +1 -0
  15. package/cjs/array/array_index.js +3 -0
  16. package/cjs/array/array_index.js.map +1 -0
  17. package/cjs/array/array_plus.d.ts +3 -0
  18. package/cjs/array/array_plus.d.ts.map +1 -0
  19. package/cjs/array/array_plus.js.map +1 -0
  20. package/cjs/array/array_type.d.ts +56 -0
  21. package/cjs/array/array_type.d.ts.map +1 -0
  22. package/cjs/array/array_type.js +3 -0
  23. package/cjs/array/array_type.js.map +1 -0
  24. package/cjs/array/common_prop_keys.d.ts.map +1 -0
  25. package/cjs/array/common_prop_keys.js.map +1 -0
  26. package/cjs/array/create_tuple.d.ts +11 -0
  27. package/cjs/array/create_tuple.d.ts.map +1 -0
  28. package/cjs/array/create_tuple.js.map +1 -0
  29. package/cjs/array/drop.d.ts +19 -0
  30. package/cjs/array/drop.d.ts.map +1 -0
  31. package/cjs/array/drop.js.map +1 -0
  32. package/cjs/array/filter.d.ts +9 -0
  33. package/cjs/array/filter.d.ts.map +1 -0
  34. package/cjs/array/filter.js.map +1 -0
  35. package/cjs/array/find_first.d.ts.map +1 -0
  36. package/cjs/array/find_first.js.map +1 -0
  37. package/cjs/array/find_last.d.ts.map +1 -0
  38. package/cjs/array/find_last.js.map +1 -0
  39. package/cjs/array/head.d.ts.map +1 -0
  40. package/cjs/array/head.js.map +1 -0
  41. package/cjs/array/index.d.ts +18 -0
  42. package/cjs/array/index.d.ts.map +1 -0
  43. package/cjs/array/index.js +34 -0
  44. package/cjs/array/index.js.map +1 -0
  45. package/cjs/array/intersect_of_props.d.ts.map +1 -0
  46. package/cjs/array/intersect_of_props.js.map +1 -0
  47. package/cjs/array/last.d.ts.map +1 -0
  48. package/cjs/array/last.js.map +1 -0
  49. package/cjs/array/literal_array.d.ts.map +1 -0
  50. package/cjs/array/literal_array.js.map +1 -0
  51. package/cjs/array/pad_left.d.ts +6 -0
  52. package/cjs/array/pad_left.d.ts.map +1 -0
  53. package/cjs/array/pad_left.js.map +1 -0
  54. package/cjs/array/reduce_while.d.ts.map +1 -0
  55. package/cjs/array/reduce_while.js.map +1 -0
  56. package/cjs/array/reverse.d.ts.map +1 -0
  57. package/cjs/array/reverse.js.map +1 -0
  58. package/cjs/array/some.d.ts +8 -0
  59. package/cjs/array/some.d.ts.map +1 -0
  60. package/cjs/array/some.js.map +1 -0
  61. package/cjs/array/tail.d.ts.map +1 -0
  62. package/cjs/array/tail.js.map +1 -0
  63. package/cjs/array/union_of_props.d.ts.map +1 -0
  64. package/cjs/array/union_of_props.js.map +1 -0
  65. package/cjs/array/union_of_values.d.ts.map +1 -0
  66. package/cjs/array/union_of_values.js.map +1 -0
  67. package/cjs/assertion/assert_type.d.ts +34 -0
  68. package/cjs/assertion/assert_type.d.ts.map +1 -0
  69. package/cjs/assertion/assert_type.js +107 -0
  70. package/cjs/assertion/assert_type.js.map +1 -0
  71. package/cjs/bigint/bigint_type.d.ts +62 -0
  72. package/cjs/bigint/bigint_type.d.ts.map +1 -0
  73. package/cjs/bigint/bigint_type.js +3 -0
  74. package/cjs/bigint/bigint_type.js.map +1 -0
  75. package/cjs/bigint/strict_bigint_type.d.ts +64 -0
  76. package/cjs/bigint/strict_bigint_type.d.ts.map +1 -0
  77. package/cjs/bigint/strict_bigint_type.js +3 -0
  78. package/cjs/bigint/strict_bigint_type.js.map +1 -0
  79. package/cjs/boolean/boolean_type.d.ts +64 -0
  80. package/cjs/boolean/boolean_type.d.ts.map +1 -0
  81. package/cjs/boolean/boolean_type.js +3 -0
  82. package/cjs/boolean/boolean_type.js.map +1 -0
  83. package/cjs/boolean/false_type.d.ts +57 -0
  84. package/cjs/boolean/false_type.d.ts.map +1 -0
  85. package/cjs/boolean/false_type.js +3 -0
  86. package/cjs/boolean/false_type.js.map +1 -0
  87. package/cjs/boolean/strict_boolean_type.d.ts +61 -0
  88. package/cjs/boolean/strict_boolean_type.d.ts.map +1 -0
  89. package/cjs/boolean/strict_boolean_type.js +3 -0
  90. package/cjs/boolean/strict_boolean_type.js.map +1 -0
  91. package/cjs/boolean/true_type.d.ts +57 -0
  92. package/cjs/boolean/true_type.d.ts.map +1 -0
  93. package/cjs/boolean/true_type.js +3 -0
  94. package/cjs/boolean/true_type.js.map +1 -0
  95. package/cjs/composable_types.d.ts +9 -0
  96. package/cjs/composable_types.d.ts.map +1 -0
  97. package/cjs/composable_types.js +3 -0
  98. package/cjs/composable_types.js.map +1 -0
  99. package/cjs/equal/equal.d.ts +52 -0
  100. package/cjs/equal/equal.d.ts.map +1 -0
  101. package/cjs/equal/equal.js +3 -0
  102. package/cjs/equal/equal.js.map +1 -0
  103. package/cjs/function/any_function.d.ts +2 -0
  104. package/cjs/function/any_function.d.ts.map +1 -0
  105. package/cjs/function/any_function.js +3 -0
  106. package/cjs/function/any_function.js.map +1 -0
  107. package/cjs/function/extract_function.d.ts +24 -0
  108. package/cjs/function/extract_function.d.ts.map +1 -0
  109. package/cjs/function/extract_function.js +13 -0
  110. package/cjs/function/extract_function.js.map +1 -0
  111. package/cjs/function/function_type.d.ts +67 -0
  112. package/cjs/function/function_type.d.ts.map +1 -0
  113. package/cjs/function/function_type.js +3 -0
  114. package/cjs/function/function_type.js.map +1 -0
  115. package/cjs/function/strict_function_type.d.ts +57 -0
  116. package/cjs/function/strict_function_type.d.ts.map +1 -0
  117. package/cjs/function/strict_function_type.js +3 -0
  118. package/cjs/function/strict_function_type.js.map +1 -0
  119. package/cjs/functional/Maybe.d.ts +2 -2
  120. package/cjs/functional/Maybe.d.ts.map +1 -1
  121. package/cjs/functional/compose.d.ts +2 -2
  122. package/cjs/functional/compose.d.ts.map +1 -1
  123. package/cjs/index.d.ts +43 -14
  124. package/cjs/index.d.ts.map +1 -1
  125. package/cjs/index.js +11 -14
  126. package/cjs/index.js.map +1 -1
  127. package/cjs/json.d.ts +12 -0
  128. package/cjs/json.d.ts.map +1 -0
  129. package/cjs/json.js +14 -0
  130. package/cjs/json.js.map +1 -0
  131. package/cjs/math/Add.d.ts +4 -3
  132. package/cjs/math/Add.d.ts.map +1 -1
  133. package/cjs/math/Digit.d.ts +4 -3
  134. package/cjs/math/Digit.d.ts.map +1 -1
  135. package/cjs/math/GreaterThan.d.ts +6 -4
  136. package/cjs/math/GreaterThan.d.ts.map +1 -1
  137. package/cjs/math/Max.d.ts +1 -1
  138. package/cjs/math/Max.d.ts.map +1 -1
  139. package/cjs/math/Subtract.d.ts +4 -3
  140. package/cjs/math/Subtract.d.ts.map +1 -1
  141. package/cjs/never/never_type.d.ts +59 -0
  142. package/cjs/never/never_type.d.ts.map +1 -0
  143. package/cjs/never/never_type.js +3 -0
  144. package/cjs/never/never_type.js.map +1 -0
  145. package/cjs/nominal/brand.d.ts +21 -0
  146. package/cjs/nominal/brand.d.ts.map +1 -0
  147. package/cjs/nominal/brand.js +20 -0
  148. package/cjs/nominal/brand.js.map +1 -0
  149. package/cjs/nominal/flavor.d.ts +20 -0
  150. package/cjs/nominal/flavor.d.ts.map +1 -0
  151. package/cjs/nominal/flavor.js +20 -0
  152. package/cjs/nominal/flavor.js.map +1 -0
  153. package/cjs/nominal/index.d.ts +4 -0
  154. package/cjs/nominal/index.d.ts.map +1 -0
  155. package/cjs/nominal/index.js +20 -0
  156. package/cjs/nominal/index.js.map +1 -0
  157. package/cjs/nominal/nominal_match.d.ts +5 -0
  158. package/cjs/nominal/nominal_match.d.ts.map +1 -0
  159. package/cjs/nominal/nominal_match.js +13 -0
  160. package/cjs/nominal/nominal_match.js.map +1 -0
  161. package/cjs/nominal/types.d.ts.map +1 -0
  162. package/cjs/nominal/types.js.map +1 -0
  163. package/cjs/null/null_type.d.ts +58 -0
  164. package/cjs/null/null_type.d.ts.map +1 -0
  165. package/cjs/null/null_type.js +3 -0
  166. package/cjs/null/null_type.js.map +1 -0
  167. package/cjs/number/integer.d.ts +75 -0
  168. package/cjs/number/integer.d.ts.map +1 -0
  169. package/cjs/number/integer.js +3 -0
  170. package/cjs/number/integer.js.map +1 -0
  171. package/cjs/number/negative.d.ts +78 -0
  172. package/cjs/number/negative.d.ts.map +1 -0
  173. package/cjs/number/negative.js +3 -0
  174. package/cjs/number/negative.js.map +1 -0
  175. package/cjs/number/number_array.d.ts +3 -0
  176. package/cjs/number/number_array.d.ts.map +1 -0
  177. package/cjs/number/number_array.js +3 -0
  178. package/cjs/number/number_array.js.map +1 -0
  179. package/cjs/number/number_plus.d.ts +8 -0
  180. package/cjs/number/number_plus.d.ts.map +1 -0
  181. package/cjs/number/number_plus.js.map +1 -0
  182. package/cjs/number/number_type.d.ts +58 -0
  183. package/cjs/number/number_type.d.ts.map +1 -0
  184. package/cjs/number/number_type.js +3 -0
  185. package/cjs/number/number_type.js.map +1 -0
  186. package/cjs/number/numeric_type.d.ts +67 -0
  187. package/cjs/number/numeric_type.d.ts.map +1 -0
  188. package/cjs/number/numeric_type.js +3 -0
  189. package/cjs/number/numeric_type.js.map +1 -0
  190. package/cjs/number/positive.d.ts +61 -0
  191. package/cjs/number/positive.d.ts.map +1 -0
  192. package/cjs/number/positive.js +3 -0
  193. package/cjs/number/positive.js.map +1 -0
  194. package/cjs/number/strict_number_type.d.ts +61 -0
  195. package/cjs/number/strict_number_type.d.ts.map +1 -0
  196. package/cjs/number/strict_number_type.js +3 -0
  197. package/cjs/number/strict_number_type.js.map +1 -0
  198. package/cjs/object/ANotB.d.ts +1 -1
  199. package/cjs/object/ANotB.d.ts.map +1 -1
  200. package/cjs/object/KnownKeys.d.ts +1 -1
  201. package/cjs/object/KnownKeys.d.ts.map +1 -1
  202. package/cjs/object/Partial.d.ts +1 -1
  203. package/cjs/object/Partial.d.ts.map +1 -1
  204. package/cjs/object/getField.d.ts +1 -1
  205. package/cjs/object/getField.d.ts.map +1 -1
  206. package/cjs/object/hasProperty.d.ts +1 -1
  207. package/cjs/object/hasProperty.d.ts.map +1 -1
  208. package/cjs/object/index.d.ts +17 -16
  209. package/cjs/object/index.d.ts.map +1 -1
  210. package/cjs/object/index.js.map +1 -1
  211. package/cjs/object/object_type.d.ts +62 -0
  212. package/cjs/object/object_type.d.ts.map +1 -0
  213. package/cjs/object/object_type.js +3 -0
  214. package/cjs/object/object_type.js.map +1 -0
  215. package/cjs/object/omit.d.ts +1 -1
  216. package/cjs/object/omit.d.ts.map +1 -1
  217. package/cjs/object/pick.d.ts +1 -1
  218. package/cjs/object/pick.d.ts.map +1 -1
  219. package/cjs/object/properties.d.ts +7 -0
  220. package/cjs/object/properties.d.ts.map +1 -0
  221. package/cjs/object/properties.js +3 -0
  222. package/cjs/object/properties.js.map +1 -0
  223. package/cjs/predicates/index.d.ts +0 -2
  224. package/cjs/predicates/index.d.ts.map +1 -1
  225. package/cjs/predicates/index.js.map +1 -1
  226. package/cjs/predicates/isType.d.ts +1 -1
  227. package/cjs/predicates/isType.d.ts.map +1 -1
  228. package/cjs/predicates/isType.js +2 -1
  229. package/cjs/predicates/isType.js.map +1 -1
  230. package/cjs/primitive.d.ts +2 -0
  231. package/cjs/primitive.d.ts.map +1 -0
  232. package/cjs/primitive.js +3 -0
  233. package/cjs/primitive.js.map +1 -0
  234. package/cjs/string/strict_string_type.d.ts +66 -0
  235. package/cjs/string/strict_string_type.d.ts.map +1 -0
  236. package/cjs/string/strict_string_type.js +3 -0
  237. package/cjs/string/strict_string_type.js.map +1 -0
  238. package/cjs/string/string_type.d.ts +66 -0
  239. package/cjs/string/string_type.d.ts.map +1 -0
  240. package/cjs/string/string_type.js +3 -0
  241. package/cjs/string/string_type.js.map +1 -0
  242. package/cjs/symbol/symbol_type.d.ts +60 -0
  243. package/cjs/symbol/symbol_type.d.ts.map +1 -0
  244. package/cjs/symbol/symbol_type.js +3 -0
  245. package/cjs/symbol/symbol_type.js.map +1 -0
  246. package/cjs/testing/stub.d.ts +2 -2
  247. package/cjs/testing/stub.d.ts.map +1 -1
  248. package/cjs/testing/test_type.d.ts +102 -0
  249. package/cjs/testing/test_type.d.ts.map +1 -0
  250. package/cjs/testing/test_type.js +105 -0
  251. package/cjs/testing/test_type.js.map +1 -0
  252. package/cjs/tuple/tuple_type.d.ts +67 -0
  253. package/cjs/tuple/tuple_type.d.ts.map +1 -0
  254. package/cjs/tuple/tuple_type.js +3 -0
  255. package/cjs/tuple/tuple_type.js.map +1 -0
  256. package/cjs/undefined/undefined_type.d.ts +61 -0
  257. package/cjs/undefined/undefined_type.d.ts.map +1 -0
  258. package/cjs/undefined/undefined_type.js +3 -0
  259. package/cjs/undefined/undefined_type.js.map +1 -0
  260. package/cjs/union_keys.d.ts +6 -0
  261. package/cjs/union_keys.d.ts.map +1 -0
  262. package/cjs/union_keys.js +3 -0
  263. package/cjs/union_keys.js.map +1 -0
  264. package/cjs/union_to_intersection.d.ts +3 -0
  265. package/cjs/union_to_intersection.d.ts.map +1 -0
  266. package/cjs/union_to_intersection.js +8 -0
  267. package/cjs/union_to_intersection.js.map +1 -0
  268. package/cjs/unknown/unknown_type.d.ts +59 -0
  269. package/cjs/unknown/unknown_type.d.ts.map +1 -0
  270. package/cjs/unknown/unknown_type.js +3 -0
  271. package/cjs/unknown/unknown_type.js.map +1 -0
  272. package/cjs/void/void_type.d.ts +51 -0
  273. package/cjs/void/void_type.d.ts.map +1 -0
  274. package/cjs/void/void_type.js +3 -0
  275. package/cjs/void/void_type.js.map +1 -0
  276. package/esm/any/any_or_never.d.ts +17 -0
  277. package/esm/any/any_or_never.d.ts.map +1 -0
  278. package/esm/any/any_or_never.js +2 -0
  279. package/esm/any/any_or_never.js.map +1 -0
  280. package/esm/any/any_type.d.ts +57 -0
  281. package/esm/any/any_type.d.ts.map +1 -0
  282. package/esm/any/any_type.js +2 -0
  283. package/esm/any/any_type.js.map +1 -0
  284. package/esm/array/array.d.ts +32 -0
  285. package/esm/array/array.d.ts.map +1 -0
  286. package/esm/array/array.js.map +1 -0
  287. package/esm/array/array_index.d.ts +37 -0
  288. package/esm/array/array_index.d.ts.map +1 -0
  289. package/esm/array/array_index.js +2 -0
  290. package/esm/array/array_index.js.map +1 -0
  291. package/esm/array/array_plus.d.ts +3 -0
  292. package/esm/array/array_plus.d.ts.map +1 -0
  293. package/esm/array/array_plus.js.map +1 -0
  294. package/esm/array/array_type.d.ts +56 -0
  295. package/esm/array/array_type.d.ts.map +1 -0
  296. package/esm/array/array_type.js +2 -0
  297. package/esm/array/array_type.js.map +1 -0
  298. package/esm/array/common_prop_keys.d.ts.map +1 -0
  299. package/esm/array/common_prop_keys.js.map +1 -0
  300. package/esm/array/create_tuple.d.ts +11 -0
  301. package/esm/array/create_tuple.d.ts.map +1 -0
  302. package/esm/array/create_tuple.js.map +1 -0
  303. package/esm/array/drop.d.ts +19 -0
  304. package/esm/array/drop.d.ts.map +1 -0
  305. package/esm/array/drop.js.map +1 -0
  306. package/esm/array/filter.d.ts +9 -0
  307. package/esm/array/filter.d.ts.map +1 -0
  308. package/esm/array/filter.js.map +1 -0
  309. package/esm/array/find_first.d.ts.map +1 -0
  310. package/esm/array/find_first.js.map +1 -0
  311. package/esm/array/find_last.d.ts.map +1 -0
  312. package/esm/array/find_last.js.map +1 -0
  313. package/esm/array/head.d.ts.map +1 -0
  314. package/esm/array/head.js.map +1 -0
  315. package/esm/array/index.d.ts +18 -0
  316. package/esm/array/index.d.ts.map +1 -0
  317. package/esm/array/index.js +18 -0
  318. package/esm/array/index.js.map +1 -0
  319. package/esm/array/intersect_of_props.d.ts.map +1 -0
  320. package/esm/array/intersect_of_props.js.map +1 -0
  321. package/esm/array/last.d.ts.map +1 -0
  322. package/esm/array/last.js.map +1 -0
  323. package/esm/array/literal_array.d.ts.map +1 -0
  324. package/esm/array/literal_array.js.map +1 -0
  325. package/esm/array/pad_left.d.ts +6 -0
  326. package/esm/array/pad_left.d.ts.map +1 -0
  327. package/esm/array/pad_left.js.map +1 -0
  328. package/esm/array/reduce_while.d.ts.map +1 -0
  329. package/esm/array/reduce_while.js.map +1 -0
  330. package/esm/array/reverse.d.ts.map +1 -0
  331. package/esm/array/reverse.js.map +1 -0
  332. package/esm/array/some.d.ts +8 -0
  333. package/esm/array/some.d.ts.map +1 -0
  334. package/esm/array/some.js.map +1 -0
  335. package/esm/array/tail.d.ts.map +1 -0
  336. package/esm/array/tail.js.map +1 -0
  337. package/esm/array/union_of_props.d.ts.map +1 -0
  338. package/esm/array/union_of_props.js.map +1 -0
  339. package/esm/array/union_of_values.d.ts.map +1 -0
  340. package/esm/array/union_of_values.js.map +1 -0
  341. package/esm/assertion/assert_type.d.ts +34 -0
  342. package/esm/assertion/assert_type.d.ts.map +1 -0
  343. package/esm/assertion/assert_type.js +103 -0
  344. package/esm/assertion/assert_type.js.map +1 -0
  345. package/esm/bigint/bigint_type.d.ts +62 -0
  346. package/esm/bigint/bigint_type.d.ts.map +1 -0
  347. package/esm/bigint/bigint_type.js +2 -0
  348. package/esm/bigint/bigint_type.js.map +1 -0
  349. package/esm/bigint/strict_bigint_type.d.ts +64 -0
  350. package/esm/bigint/strict_bigint_type.d.ts.map +1 -0
  351. package/esm/bigint/strict_bigint_type.js +2 -0
  352. package/esm/bigint/strict_bigint_type.js.map +1 -0
  353. package/esm/boolean/boolean_type.d.ts +64 -0
  354. package/esm/boolean/boolean_type.d.ts.map +1 -0
  355. package/esm/boolean/boolean_type.js +2 -0
  356. package/esm/boolean/boolean_type.js.map +1 -0
  357. package/esm/boolean/false_type.d.ts +57 -0
  358. package/esm/boolean/false_type.d.ts.map +1 -0
  359. package/esm/boolean/false_type.js +2 -0
  360. package/esm/boolean/false_type.js.map +1 -0
  361. package/esm/boolean/strict_boolean_type.d.ts +61 -0
  362. package/esm/boolean/strict_boolean_type.d.ts.map +1 -0
  363. package/esm/boolean/strict_boolean_type.js +2 -0
  364. package/esm/boolean/strict_boolean_type.js.map +1 -0
  365. package/esm/boolean/true_type.d.ts +57 -0
  366. package/esm/boolean/true_type.d.ts.map +1 -0
  367. package/esm/boolean/true_type.js +2 -0
  368. package/esm/boolean/true_type.js.map +1 -0
  369. package/esm/composable_types.d.ts +9 -0
  370. package/esm/composable_types.d.ts.map +1 -0
  371. package/esm/composable_types.js +2 -0
  372. package/esm/composable_types.js.map +1 -0
  373. package/esm/equal/equal.d.ts +52 -0
  374. package/esm/equal/equal.d.ts.map +1 -0
  375. package/esm/equal/equal.js +2 -0
  376. package/esm/equal/equal.js.map +1 -0
  377. package/esm/function/any_function.d.ts +2 -0
  378. package/esm/function/any_function.d.ts.map +1 -0
  379. package/esm/function/any_function.js +2 -0
  380. package/esm/function/any_function.js.map +1 -0
  381. package/esm/function/extract_function.d.ts +24 -0
  382. package/esm/function/extract_function.d.ts.map +1 -0
  383. package/esm/function/extract_function.js +9 -0
  384. package/esm/function/extract_function.js.map +1 -0
  385. package/esm/function/function_type.d.ts +67 -0
  386. package/esm/function/function_type.d.ts.map +1 -0
  387. package/esm/function/function_type.js +2 -0
  388. package/esm/function/function_type.js.map +1 -0
  389. package/esm/function/strict_function_type.d.ts +57 -0
  390. package/esm/function/strict_function_type.d.ts.map +1 -0
  391. package/esm/function/strict_function_type.js +2 -0
  392. package/esm/function/strict_function_type.js.map +1 -0
  393. package/esm/functional/Maybe.d.ts +2 -2
  394. package/esm/functional/Maybe.d.ts.map +1 -1
  395. package/esm/functional/compose.d.ts +2 -2
  396. package/esm/functional/compose.d.ts.map +1 -1
  397. package/esm/index.d.ts +43 -14
  398. package/esm/index.d.ts.map +1 -1
  399. package/esm/index.js +8 -11
  400. package/esm/index.js.map +1 -1
  401. package/esm/json.d.ts +12 -0
  402. package/esm/json.d.ts.map +1 -0
  403. package/esm/json.js +11 -0
  404. package/esm/json.js.map +1 -0
  405. package/esm/math/Add.d.ts +4 -3
  406. package/esm/math/Add.d.ts.map +1 -1
  407. package/esm/math/Digit.d.ts +4 -3
  408. package/esm/math/Digit.d.ts.map +1 -1
  409. package/esm/math/GreaterThan.d.ts +6 -4
  410. package/esm/math/GreaterThan.d.ts.map +1 -1
  411. package/esm/math/Max.d.ts +1 -1
  412. package/esm/math/Max.d.ts.map +1 -1
  413. package/esm/math/Subtract.d.ts +4 -3
  414. package/esm/math/Subtract.d.ts.map +1 -1
  415. package/esm/never/never_type.d.ts +59 -0
  416. package/esm/never/never_type.d.ts.map +1 -0
  417. package/esm/never/never_type.js +2 -0
  418. package/esm/never/never_type.js.map +1 -0
  419. package/esm/nominal/brand.d.ts +21 -0
  420. package/esm/nominal/brand.d.ts.map +1 -0
  421. package/esm/nominal/brand.js +16 -0
  422. package/esm/nominal/brand.js.map +1 -0
  423. package/esm/nominal/flavor.d.ts +20 -0
  424. package/esm/nominal/flavor.d.ts.map +1 -0
  425. package/esm/nominal/flavor.js +16 -0
  426. package/esm/nominal/flavor.js.map +1 -0
  427. package/esm/nominal/index.d.ts +4 -0
  428. package/esm/nominal/index.d.ts.map +1 -0
  429. package/esm/nominal/index.js +4 -0
  430. package/esm/nominal/index.js.map +1 -0
  431. package/esm/nominal/nominal_match.d.ts +5 -0
  432. package/esm/nominal/nominal_match.d.ts.map +1 -0
  433. package/esm/nominal/nominal_match.js +9 -0
  434. package/esm/nominal/nominal_match.js.map +1 -0
  435. package/esm/nominal/types.d.ts.map +1 -0
  436. package/esm/nominal/types.js.map +1 -0
  437. package/esm/null/null_type.d.ts +58 -0
  438. package/esm/null/null_type.d.ts.map +1 -0
  439. package/esm/null/null_type.js +2 -0
  440. package/esm/null/null_type.js.map +1 -0
  441. package/esm/number/integer.d.ts +75 -0
  442. package/esm/number/integer.d.ts.map +1 -0
  443. package/esm/number/integer.js +2 -0
  444. package/esm/number/integer.js.map +1 -0
  445. package/esm/number/negative.d.ts +78 -0
  446. package/esm/number/negative.d.ts.map +1 -0
  447. package/esm/number/negative.js +2 -0
  448. package/esm/number/negative.js.map +1 -0
  449. package/esm/number/number_array.d.ts +3 -0
  450. package/esm/number/number_array.d.ts.map +1 -0
  451. package/esm/number/number_array.js +2 -0
  452. package/esm/number/number_array.js.map +1 -0
  453. package/esm/number/number_plus.d.ts +8 -0
  454. package/esm/number/number_plus.d.ts.map +1 -0
  455. package/esm/number/number_plus.js.map +1 -0
  456. package/esm/number/number_type.d.ts +58 -0
  457. package/esm/number/number_type.d.ts.map +1 -0
  458. package/esm/number/number_type.js +2 -0
  459. package/esm/number/number_type.js.map +1 -0
  460. package/esm/number/numeric_type.d.ts +67 -0
  461. package/esm/number/numeric_type.d.ts.map +1 -0
  462. package/esm/number/numeric_type.js +2 -0
  463. package/esm/number/numeric_type.js.map +1 -0
  464. package/esm/number/positive.d.ts +61 -0
  465. package/esm/number/positive.d.ts.map +1 -0
  466. package/esm/number/positive.js +2 -0
  467. package/esm/number/positive.js.map +1 -0
  468. package/esm/number/strict_number_type.d.ts +61 -0
  469. package/esm/number/strict_number_type.d.ts.map +1 -0
  470. package/esm/number/strict_number_type.js +2 -0
  471. package/esm/number/strict_number_type.js.map +1 -0
  472. package/esm/object/ANotB.d.ts +1 -1
  473. package/esm/object/ANotB.d.ts.map +1 -1
  474. package/esm/object/KnownKeys.d.ts +1 -1
  475. package/esm/object/KnownKeys.d.ts.map +1 -1
  476. package/esm/object/Partial.d.ts +1 -1
  477. package/esm/object/Partial.d.ts.map +1 -1
  478. package/esm/object/getField.d.ts +1 -1
  479. package/esm/object/getField.d.ts.map +1 -1
  480. package/esm/object/hasProperty.d.ts +1 -1
  481. package/esm/object/hasProperty.d.ts.map +1 -1
  482. package/esm/object/index.d.ts +17 -16
  483. package/esm/object/index.d.ts.map +1 -1
  484. package/esm/object/index.js.map +1 -1
  485. package/esm/object/object_type.d.ts +62 -0
  486. package/esm/object/object_type.d.ts.map +1 -0
  487. package/esm/object/object_type.js +2 -0
  488. package/esm/object/object_type.js.map +1 -0
  489. package/esm/object/omit.d.ts +1 -1
  490. package/esm/object/omit.d.ts.map +1 -1
  491. package/esm/object/pick.d.ts +1 -1
  492. package/esm/object/pick.d.ts.map +1 -1
  493. package/esm/object/properties.d.ts +7 -0
  494. package/esm/object/properties.d.ts.map +1 -0
  495. package/esm/object/properties.js +2 -0
  496. package/esm/object/properties.js.map +1 -0
  497. package/esm/predicates/index.d.ts +0 -2
  498. package/esm/predicates/index.d.ts.map +1 -1
  499. package/esm/predicates/index.js.map +1 -1
  500. package/esm/predicates/isType.d.ts +1 -1
  501. package/esm/predicates/isType.d.ts.map +1 -1
  502. package/esm/predicates/isType.js +2 -1
  503. package/esm/predicates/isType.js.map +1 -1
  504. package/esm/primitive.d.ts +2 -0
  505. package/esm/primitive.d.ts.map +1 -0
  506. package/esm/primitive.js +2 -0
  507. package/esm/primitive.js.map +1 -0
  508. package/esm/string/strict_string_type.d.ts +66 -0
  509. package/esm/string/strict_string_type.d.ts.map +1 -0
  510. package/esm/string/strict_string_type.js +2 -0
  511. package/esm/string/strict_string_type.js.map +1 -0
  512. package/esm/string/string_type.d.ts +66 -0
  513. package/esm/string/string_type.d.ts.map +1 -0
  514. package/esm/string/string_type.js +2 -0
  515. package/esm/string/string_type.js.map +1 -0
  516. package/esm/symbol/symbol_type.d.ts +60 -0
  517. package/esm/symbol/symbol_type.d.ts.map +1 -0
  518. package/esm/symbol/symbol_type.js +2 -0
  519. package/esm/symbol/symbol_type.js.map +1 -0
  520. package/esm/testing/stub.d.ts +2 -2
  521. package/esm/testing/stub.d.ts.map +1 -1
  522. package/esm/testing/test_type.d.ts +102 -0
  523. package/esm/testing/test_type.d.ts.map +1 -0
  524. package/esm/testing/test_type.js +102 -0
  525. package/esm/testing/test_type.js.map +1 -0
  526. package/esm/tuple/tuple_type.d.ts +67 -0
  527. package/esm/tuple/tuple_type.d.ts.map +1 -0
  528. package/esm/tuple/tuple_type.js +2 -0
  529. package/esm/tuple/tuple_type.js.map +1 -0
  530. package/esm/undefined/undefined_type.d.ts +61 -0
  531. package/esm/undefined/undefined_type.d.ts.map +1 -0
  532. package/esm/undefined/undefined_type.js +2 -0
  533. package/esm/undefined/undefined_type.js.map +1 -0
  534. package/esm/union_keys.d.ts +6 -0
  535. package/esm/union_keys.d.ts.map +1 -0
  536. package/esm/union_keys.js +2 -0
  537. package/esm/union_keys.js.map +1 -0
  538. package/esm/union_to_intersection.d.ts +3 -0
  539. package/esm/union_to_intersection.d.ts.map +1 -0
  540. package/esm/union_to_intersection.js +4 -0
  541. package/esm/union_to_intersection.js.map +1 -0
  542. package/esm/unknown/unknown_type.d.ts +59 -0
  543. package/esm/unknown/unknown_type.d.ts.map +1 -0
  544. package/esm/unknown/unknown_type.js +2 -0
  545. package/esm/unknown/unknown_type.js.map +1 -0
  546. package/esm/void/void_type.d.ts +51 -0
  547. package/esm/void/void_type.d.ts.map +1 -0
  548. package/esm/void/void_type.js +2 -0
  549. package/esm/void/void_type.js.map +1 -0
  550. package/package.json +7 -25
  551. package/ts/any/any_or_never.ts +17 -0
  552. package/ts/any/any_type.ts +60 -0
  553. package/ts/any/readme.md +26 -0
  554. package/ts/array/array.ts +37 -0
  555. package/ts/array/array_index.ts +70 -0
  556. package/ts/array/array_plus.ts +2 -0
  557. package/ts/array/array_type.ts +61 -0
  558. package/ts/array/create_tuple.ts +17 -0
  559. package/ts/array/drop.ts +71 -0
  560. package/ts/array/filter.ts +27 -0
  561. package/ts/array/index.ts +17 -0
  562. package/ts/array/pad_left.ts +16 -0
  563. package/ts/array/readme.md +32 -0
  564. package/ts/array/some.ts +33 -0
  565. package/ts/assertion/assert_type.ts +107 -0
  566. package/ts/assertion/readme.md +15 -0
  567. package/ts/bigint/bigint_type.ts +65 -0
  568. package/ts/bigint/readme.md +51 -0
  569. package/ts/bigint/strict_bigint_type.ts +69 -0
  570. package/ts/boolean/boolean_type.ts +69 -0
  571. package/ts/boolean/false_type.ts +61 -0
  572. package/ts/boolean/readme.md +85 -0
  573. package/ts/boolean/strict_boolean_type.ts +65 -0
  574. package/ts/boolean/true_type.ts +61 -0
  575. package/ts/composable_types.ts +9 -0
  576. package/ts/equal/equal.ts +88 -0
  577. package/ts/equal/readme.md +31 -0
  578. package/ts/function/extract_function.ts +29 -0
  579. package/ts/function/function_type.ts +72 -0
  580. package/ts/function/readme.md +84 -0
  581. package/ts/function/strict_function_type.ts +61 -0
  582. package/ts/functional/Maybe.ts +2 -2
  583. package/ts/functional/compose.ts +2 -2
  584. package/ts/index.ts +90 -18
  585. package/ts/math/Add.ts +5 -4
  586. package/ts/math/Digit.ts +4 -3
  587. package/ts/math/GreaterThan.ts +7 -5
  588. package/ts/math/Max.ts +1 -1
  589. package/ts/math/Subtract.ts +5 -5
  590. package/ts/never/never_type.ts +65 -0
  591. package/ts/never/readme.md +37 -0
  592. package/ts/nominal/brand.ts +35 -0
  593. package/ts/nominal/flavor.ts +38 -0
  594. package/ts/nominal/index.ts +3 -0
  595. package/ts/nominal/nominal_match.ts +22 -0
  596. package/ts/null/null_type.ts +61 -0
  597. package/ts/null/readme.md +24 -0
  598. package/ts/number/integer.ts +81 -0
  599. package/ts/number/negative.ts +109 -0
  600. package/ts/number/number_array.ts +15 -0
  601. package/ts/number/number_plus.ts +20 -0
  602. package/ts/number/number_type.ts +61 -0
  603. package/ts/number/numeric_type.ts +72 -0
  604. package/ts/number/positive.ts +68 -0
  605. package/ts/number/readme.md +155 -0
  606. package/ts/number/strict_number_type.ts +65 -0
  607. package/ts/object/ANotB.ts +1 -1
  608. package/ts/object/KnownKeys.ts +1 -1
  609. package/ts/object/Partial.ts +1 -1
  610. package/ts/object/getField.ts +1 -1
  611. package/ts/object/hasProperty.ts +1 -1
  612. package/ts/object/index.ts +17 -16
  613. package/ts/object/object_type.ts +65 -0
  614. package/ts/object/omit.ts +1 -1
  615. package/ts/object/pick.ts +1 -1
  616. package/ts/object/properties.ts +4 -0
  617. package/ts/object/readme.md +28 -0
  618. package/ts/predicates/index.ts +0 -3
  619. package/ts/predicates/isType.ts +4 -2
  620. package/ts/primitive.ts +10 -0
  621. package/ts/string/readme.md +43 -0
  622. package/ts/string/strict_string_type.ts +69 -0
  623. package/ts/string/string_type.ts +69 -0
  624. package/ts/symbol/readme.md +34 -0
  625. package/ts/symbol/symbol_type.ts +65 -0
  626. package/ts/testing/readme.md +19 -0
  627. package/ts/testing/stub.ts +2 -2
  628. package/ts/testing/test_type.ts +127 -0
  629. package/ts/tuple/readme.md +27 -0
  630. package/ts/tuple/tuple_type.ts +72 -0
  631. package/ts/undefined/readme.md +18 -0
  632. package/ts/undefined/undefined_type.ts +65 -0
  633. package/ts/unknown/readme.md +27 -0
  634. package/ts/unknown/unknown_type.ts +63 -0
  635. package/ts/void/readme.md +26 -0
  636. package/ts/void/void_type.ts +58 -0
  637. package/cjs/ComposableTypes.d.ts +0 -9
  638. package/cjs/ComposableTypes.d.ts.map +0 -1
  639. package/cjs/ComposableTypes.js +0 -3
  640. package/cjs/ComposableTypes.js.map +0 -1
  641. package/cjs/JSONTypes.d.ts +0 -12
  642. package/cjs/JSONTypes.d.ts.map +0 -1
  643. package/cjs/JSONTypes.js +0 -14
  644. package/cjs/JSONTypes.js.map +0 -1
  645. package/cjs/PrimitiveTypes.d.ts +0 -3
  646. package/cjs/PrimitiveTypes.d.ts.map +0 -1
  647. package/cjs/PrimitiveTypes.js +0 -4
  648. package/cjs/PrimitiveTypes.js.map +0 -1
  649. package/cjs/UnionKeys.d.ts +0 -6
  650. package/cjs/UnionKeys.d.ts.map +0 -1
  651. package/cjs/UnionKeys.js +0 -3
  652. package/cjs/UnionKeys.js.map +0 -1
  653. package/cjs/UnionToIntersection.d.ts +0 -3
  654. package/cjs/UnionToIntersection.d.ts.map +0 -1
  655. package/cjs/UnionToIntersection.js +0 -8
  656. package/cjs/UnionToIntersection.js.map +0 -1
  657. package/cjs/any_plus/any.d.ts +0 -29
  658. package/cjs/any_plus/any.d.ts.map +0 -1
  659. package/cjs/any_plus/any.js +0 -3
  660. package/cjs/any_plus/any.js.map +0 -1
  661. package/cjs/any_plus/index.d.ts +0 -2
  662. package/cjs/any_plus/index.d.ts.map +0 -1
  663. package/cjs/any_plus/index.js +0 -3
  664. package/cjs/any_plus/index.js.map +0 -1
  665. package/cjs/array_plus/array.d.ts +0 -42
  666. package/cjs/array_plus/array.d.ts.map +0 -1
  667. package/cjs/array_plus/array.js.map +0 -1
  668. package/cjs/array_plus/array_number.d.ts +0 -4
  669. package/cjs/array_plus/array_number.d.ts.map +0 -1
  670. package/cjs/array_plus/array_number.js +0 -3
  671. package/cjs/array_plus/array_number.js.map +0 -1
  672. package/cjs/array_plus/array_plus.d.ts +0 -35
  673. package/cjs/array_plus/array_plus.d.ts.map +0 -1
  674. package/cjs/array_plus/array_plus.js.map +0 -1
  675. package/cjs/array_plus/common_prop_keys.d.ts.map +0 -1
  676. package/cjs/array_plus/common_prop_keys.js.map +0 -1
  677. package/cjs/array_plus/create_tuple.d.ts +0 -10
  678. package/cjs/array_plus/create_tuple.d.ts.map +0 -1
  679. package/cjs/array_plus/create_tuple.js.map +0 -1
  680. package/cjs/array_plus/drop.d.ts +0 -19
  681. package/cjs/array_plus/drop.d.ts.map +0 -1
  682. package/cjs/array_plus/drop.js.map +0 -1
  683. package/cjs/array_plus/filter.d.ts +0 -10
  684. package/cjs/array_plus/filter.d.ts.map +0 -1
  685. package/cjs/array_plus/filter.js.map +0 -1
  686. package/cjs/array_plus/find_first.d.ts.map +0 -1
  687. package/cjs/array_plus/find_first.js.map +0 -1
  688. package/cjs/array_plus/find_last.d.ts.map +0 -1
  689. package/cjs/array_plus/find_last.js.map +0 -1
  690. package/cjs/array_plus/head.d.ts.map +0 -1
  691. package/cjs/array_plus/head.js.map +0 -1
  692. package/cjs/array_plus/index.d.ts +0 -20
  693. package/cjs/array_plus/index.d.ts.map +0 -1
  694. package/cjs/array_plus/index.js +0 -20
  695. package/cjs/array_plus/index.js.map +0 -1
  696. package/cjs/array_plus/intersect_of_props.d.ts.map +0 -1
  697. package/cjs/array_plus/intersect_of_props.js.map +0 -1
  698. package/cjs/array_plus/is_array.d.ts +0 -2
  699. package/cjs/array_plus/is_array.d.ts.map +0 -1
  700. package/cjs/array_plus/is_array.js +0 -3
  701. package/cjs/array_plus/is_array.js.map +0 -1
  702. package/cjs/array_plus/last.d.ts.map +0 -1
  703. package/cjs/array_plus/last.js.map +0 -1
  704. package/cjs/array_plus/literal_array.d.ts.map +0 -1
  705. package/cjs/array_plus/literal_array.js.map +0 -1
  706. package/cjs/array_plus/pad_left.d.ts +0 -6
  707. package/cjs/array_plus/pad_left.d.ts.map +0 -1
  708. package/cjs/array_plus/pad_left.js.map +0 -1
  709. package/cjs/array_plus/reduce_while.d.ts.map +0 -1
  710. package/cjs/array_plus/reduce_while.js.map +0 -1
  711. package/cjs/array_plus/reverse.d.ts.map +0 -1
  712. package/cjs/array_plus/reverse.js.map +0 -1
  713. package/cjs/array_plus/some.d.ts +0 -8
  714. package/cjs/array_plus/some.d.ts.map +0 -1
  715. package/cjs/array_plus/some.js.map +0 -1
  716. package/cjs/array_plus/tail.d.ts.map +0 -1
  717. package/cjs/array_plus/tail.js.map +0 -1
  718. package/cjs/array_plus/union_of_props.d.ts.map +0 -1
  719. package/cjs/array_plus/union_of_props.js.map +0 -1
  720. package/cjs/array_plus/union_of_values.d.ts.map +0 -1
  721. package/cjs/array_plus/union_of_values.js.map +0 -1
  722. package/cjs/assertion/assertType.d.ts +0 -34
  723. package/cjs/assertion/assertType.d.ts.map +0 -1
  724. package/cjs/assertion/assertType.js +0 -107
  725. package/cjs/assertion/assertType.js.map +0 -1
  726. package/cjs/assertion/index.d.ts +0 -2
  727. package/cjs/assertion/index.d.ts.map +0 -1
  728. package/cjs/assertion/index.js +0 -18
  729. package/cjs/assertion/index.js.map +0 -1
  730. package/cjs/function/AnyFunction.d.ts +0 -2
  731. package/cjs/function/AnyFunction.d.ts.map +0 -1
  732. package/cjs/function/AnyFunction.js +0 -3
  733. package/cjs/function/AnyFunction.js.map +0 -1
  734. package/cjs/function/ExtractFunction.d.ts +0 -15
  735. package/cjs/function/ExtractFunction.d.ts.map +0 -1
  736. package/cjs/function/ExtractFunction.js +0 -13
  737. package/cjs/function/ExtractFunction.js.map +0 -1
  738. package/cjs/function/index.d.ts +0 -3
  739. package/cjs/function/index.d.ts.map +0 -1
  740. package/cjs/function/index.js +0 -18
  741. package/cjs/function/index.js.map +0 -1
  742. package/cjs/nominal-types/Brand.d.ts +0 -21
  743. package/cjs/nominal-types/Brand.d.ts.map +0 -1
  744. package/cjs/nominal-types/Brand.js +0 -20
  745. package/cjs/nominal-types/Brand.js.map +0 -1
  746. package/cjs/nominal-types/Flavor.d.ts +0 -20
  747. package/cjs/nominal-types/Flavor.d.ts.map +0 -1
  748. package/cjs/nominal-types/Flavor.js +0 -20
  749. package/cjs/nominal-types/Flavor.js.map +0 -1
  750. package/cjs/nominal-types/index.d.ts +0 -4
  751. package/cjs/nominal-types/index.d.ts.map +0 -1
  752. package/cjs/nominal-types/index.js +0 -20
  753. package/cjs/nominal-types/index.js.map +0 -1
  754. package/cjs/nominal-types/nominalMatch.d.ts +0 -5
  755. package/cjs/nominal-types/nominalMatch.d.ts.map +0 -1
  756. package/cjs/nominal-types/nominalMatch.js +0 -13
  757. package/cjs/nominal-types/nominalMatch.js.map +0 -1
  758. package/cjs/nominal-types/types.d.ts.map +0 -1
  759. package/cjs/nominal-types/types.js.map +0 -1
  760. package/cjs/number_plus/index.d.ts +0 -2
  761. package/cjs/number_plus/index.d.ts.map +0 -1
  762. package/cjs/number_plus/index.js +0 -3
  763. package/cjs/number_plus/index.js.map +0 -1
  764. package/cjs/number_plus/number.d.ts +0 -128
  765. package/cjs/number_plus/number.d.ts.map +0 -1
  766. package/cjs/number_plus/number.js +0 -3
  767. package/cjs/number_plus/number.js.map +0 -1
  768. package/cjs/number_plus/number_plus.d.ts +0 -2
  769. package/cjs/number_plus/number_plus.d.ts.map +0 -1
  770. package/cjs/number_plus/number_plus.js.map +0 -1
  771. package/cjs/predicates/Equal.d.ts +0 -19
  772. package/cjs/predicates/Equal.d.ts.map +0 -1
  773. package/cjs/predicates/Equal.js +0 -3
  774. package/cjs/predicates/Equal.js.map +0 -1
  775. package/cjs/testing/index.d.ts +0 -2
  776. package/cjs/testing/index.d.ts.map +0 -1
  777. package/cjs/testing/index.js +0 -18
  778. package/cjs/testing/index.js.map +0 -1
  779. package/esm/ComposableTypes.d.ts +0 -9
  780. package/esm/ComposableTypes.d.ts.map +0 -1
  781. package/esm/ComposableTypes.js +0 -2
  782. package/esm/ComposableTypes.js.map +0 -1
  783. package/esm/JSONTypes.d.ts +0 -12
  784. package/esm/JSONTypes.d.ts.map +0 -1
  785. package/esm/JSONTypes.js +0 -11
  786. package/esm/JSONTypes.js.map +0 -1
  787. package/esm/PrimitiveTypes.d.ts +0 -3
  788. package/esm/PrimitiveTypes.d.ts.map +0 -1
  789. package/esm/PrimitiveTypes.js +0 -3
  790. package/esm/PrimitiveTypes.js.map +0 -1
  791. package/esm/UnionKeys.d.ts +0 -6
  792. package/esm/UnionKeys.d.ts.map +0 -1
  793. package/esm/UnionKeys.js +0 -2
  794. package/esm/UnionKeys.js.map +0 -1
  795. package/esm/UnionToIntersection.d.ts +0 -3
  796. package/esm/UnionToIntersection.d.ts.map +0 -1
  797. package/esm/UnionToIntersection.js +0 -4
  798. package/esm/UnionToIntersection.js.map +0 -1
  799. package/esm/any_plus/any.d.ts +0 -29
  800. package/esm/any_plus/any.d.ts.map +0 -1
  801. package/esm/any_plus/any.js +0 -2
  802. package/esm/any_plus/any.js.map +0 -1
  803. package/esm/any_plus/index.d.ts +0 -2
  804. package/esm/any_plus/index.d.ts.map +0 -1
  805. package/esm/any_plus/index.js +0 -2
  806. package/esm/any_plus/index.js.map +0 -1
  807. package/esm/array_plus/array.d.ts +0 -42
  808. package/esm/array_plus/array.d.ts.map +0 -1
  809. package/esm/array_plus/array.js.map +0 -1
  810. package/esm/array_plus/array_number.d.ts +0 -4
  811. package/esm/array_plus/array_number.d.ts.map +0 -1
  812. package/esm/array_plus/array_number.js +0 -2
  813. package/esm/array_plus/array_number.js.map +0 -1
  814. package/esm/array_plus/array_plus.d.ts +0 -35
  815. package/esm/array_plus/array_plus.d.ts.map +0 -1
  816. package/esm/array_plus/array_plus.js.map +0 -1
  817. package/esm/array_plus/common_prop_keys.d.ts.map +0 -1
  818. package/esm/array_plus/common_prop_keys.js.map +0 -1
  819. package/esm/array_plus/create_tuple.d.ts +0 -10
  820. package/esm/array_plus/create_tuple.d.ts.map +0 -1
  821. package/esm/array_plus/create_tuple.js.map +0 -1
  822. package/esm/array_plus/drop.d.ts +0 -19
  823. package/esm/array_plus/drop.d.ts.map +0 -1
  824. package/esm/array_plus/drop.js.map +0 -1
  825. package/esm/array_plus/filter.d.ts +0 -10
  826. package/esm/array_plus/filter.d.ts.map +0 -1
  827. package/esm/array_plus/filter.js.map +0 -1
  828. package/esm/array_plus/find_first.d.ts.map +0 -1
  829. package/esm/array_plus/find_first.js.map +0 -1
  830. package/esm/array_plus/find_last.d.ts.map +0 -1
  831. package/esm/array_plus/find_last.js.map +0 -1
  832. package/esm/array_plus/head.d.ts.map +0 -1
  833. package/esm/array_plus/head.js.map +0 -1
  834. package/esm/array_plus/index.d.ts +0 -20
  835. package/esm/array_plus/index.d.ts.map +0 -1
  836. package/esm/array_plus/index.js +0 -4
  837. package/esm/array_plus/index.js.map +0 -1
  838. package/esm/array_plus/intersect_of_props.d.ts.map +0 -1
  839. package/esm/array_plus/intersect_of_props.js.map +0 -1
  840. package/esm/array_plus/is_array.d.ts +0 -2
  841. package/esm/array_plus/is_array.d.ts.map +0 -1
  842. package/esm/array_plus/is_array.js +0 -2
  843. package/esm/array_plus/is_array.js.map +0 -1
  844. package/esm/array_plus/last.d.ts.map +0 -1
  845. package/esm/array_plus/last.js.map +0 -1
  846. package/esm/array_plus/literal_array.d.ts.map +0 -1
  847. package/esm/array_plus/literal_array.js.map +0 -1
  848. package/esm/array_plus/pad_left.d.ts +0 -6
  849. package/esm/array_plus/pad_left.d.ts.map +0 -1
  850. package/esm/array_plus/pad_left.js.map +0 -1
  851. package/esm/array_plus/reduce_while.d.ts.map +0 -1
  852. package/esm/array_plus/reduce_while.js.map +0 -1
  853. package/esm/array_plus/reverse.d.ts.map +0 -1
  854. package/esm/array_plus/reverse.js.map +0 -1
  855. package/esm/array_plus/some.d.ts +0 -8
  856. package/esm/array_plus/some.d.ts.map +0 -1
  857. package/esm/array_plus/some.js.map +0 -1
  858. package/esm/array_plus/tail.d.ts.map +0 -1
  859. package/esm/array_plus/tail.js.map +0 -1
  860. package/esm/array_plus/union_of_props.d.ts.map +0 -1
  861. package/esm/array_plus/union_of_props.js.map +0 -1
  862. package/esm/array_plus/union_of_values.d.ts.map +0 -1
  863. package/esm/array_plus/union_of_values.js.map +0 -1
  864. package/esm/assertion/assertType.d.ts +0 -34
  865. package/esm/assertion/assertType.d.ts.map +0 -1
  866. package/esm/assertion/assertType.js +0 -103
  867. package/esm/assertion/assertType.js.map +0 -1
  868. package/esm/assertion/index.d.ts +0 -2
  869. package/esm/assertion/index.d.ts.map +0 -1
  870. package/esm/assertion/index.js +0 -2
  871. package/esm/assertion/index.js.map +0 -1
  872. package/esm/function/AnyFunction.d.ts +0 -2
  873. package/esm/function/AnyFunction.d.ts.map +0 -1
  874. package/esm/function/AnyFunction.js +0 -2
  875. package/esm/function/AnyFunction.js.map +0 -1
  876. package/esm/function/ExtractFunction.d.ts +0 -15
  877. package/esm/function/ExtractFunction.d.ts.map +0 -1
  878. package/esm/function/ExtractFunction.js +0 -9
  879. package/esm/function/ExtractFunction.js.map +0 -1
  880. package/esm/function/index.d.ts +0 -3
  881. package/esm/function/index.d.ts.map +0 -1
  882. package/esm/function/index.js +0 -2
  883. package/esm/function/index.js.map +0 -1
  884. package/esm/nominal-types/Brand.d.ts +0 -21
  885. package/esm/nominal-types/Brand.d.ts.map +0 -1
  886. package/esm/nominal-types/Brand.js +0 -16
  887. package/esm/nominal-types/Brand.js.map +0 -1
  888. package/esm/nominal-types/Flavor.d.ts +0 -20
  889. package/esm/nominal-types/Flavor.d.ts.map +0 -1
  890. package/esm/nominal-types/Flavor.js +0 -16
  891. package/esm/nominal-types/Flavor.js.map +0 -1
  892. package/esm/nominal-types/index.d.ts +0 -4
  893. package/esm/nominal-types/index.d.ts.map +0 -1
  894. package/esm/nominal-types/index.js +0 -4
  895. package/esm/nominal-types/index.js.map +0 -1
  896. package/esm/nominal-types/nominalMatch.d.ts +0 -5
  897. package/esm/nominal-types/nominalMatch.d.ts.map +0 -1
  898. package/esm/nominal-types/nominalMatch.js +0 -9
  899. package/esm/nominal-types/nominalMatch.js.map +0 -1
  900. package/esm/nominal-types/types.d.ts.map +0 -1
  901. package/esm/nominal-types/types.js.map +0 -1
  902. package/esm/number_plus/index.d.ts +0 -2
  903. package/esm/number_plus/index.d.ts.map +0 -1
  904. package/esm/number_plus/index.js +0 -2
  905. package/esm/number_plus/index.js.map +0 -1
  906. package/esm/number_plus/number.d.ts +0 -128
  907. package/esm/number_plus/number.d.ts.map +0 -1
  908. package/esm/number_plus/number.js +0 -2
  909. package/esm/number_plus/number.js.map +0 -1
  910. package/esm/number_plus/number_plus.d.ts +0 -2
  911. package/esm/number_plus/number_plus.d.ts.map +0 -1
  912. package/esm/number_plus/number_plus.js.map +0 -1
  913. package/esm/predicates/Equal.d.ts +0 -19
  914. package/esm/predicates/Equal.d.ts.map +0 -1
  915. package/esm/predicates/Equal.js +0 -2
  916. package/esm/predicates/Equal.js.map +0 -1
  917. package/esm/testing/index.d.ts +0 -2
  918. package/esm/testing/index.d.ts.map +0 -1
  919. package/esm/testing/index.js +0 -2
  920. package/esm/testing/index.js.map +0 -1
  921. package/ts/ComposableTypes.ts +0 -10
  922. package/ts/PrimitiveTypes.ts +0 -15
  923. package/ts/any_plus/any.ts +0 -29
  924. package/ts/any_plus/index.ts +0 -1
  925. package/ts/array_plus/array.ts +0 -48
  926. package/ts/array_plus/array_number.ts +0 -12
  927. package/ts/array_plus/array_plus.ts +0 -66
  928. package/ts/array_plus/create_tuple.ts +0 -16
  929. package/ts/array_plus/drop.ts +0 -71
  930. package/ts/array_plus/filter.ts +0 -28
  931. package/ts/array_plus/index.ts +0 -19
  932. package/ts/array_plus/is_array.ts +0 -1
  933. package/ts/array_plus/pad_left.ts +0 -16
  934. package/ts/array_plus/some.ts +0 -33
  935. package/ts/assertion/assertType.ts +0 -107
  936. package/ts/assertion/index.ts +0 -1
  937. package/ts/function/ExtractFunction.ts +0 -20
  938. package/ts/function/index.ts +0 -2
  939. package/ts/nominal-types/Brand.ts +0 -34
  940. package/ts/nominal-types/Flavor.ts +0 -35
  941. package/ts/nominal-types/index.ts +0 -3
  942. package/ts/nominal-types/nominalMatch.ts +0 -22
  943. package/ts/number_plus/index.ts +0 -1
  944. package/ts/number_plus/number.ts +0 -149
  945. package/ts/number_plus/number_plus.ts +0 -1
  946. package/ts/predicates/Equal.ts +0 -24
  947. package/ts/testing/index.ts +0 -1
  948. /package/cjs/{array_plus → array}/array.js +0 -0
  949. /package/cjs/{array_plus → array}/array_plus.js +0 -0
  950. /package/cjs/{array_plus → array}/common_prop_keys.d.ts +0 -0
  951. /package/cjs/{array_plus → array}/common_prop_keys.js +0 -0
  952. /package/cjs/{array_plus → array}/create_tuple.js +0 -0
  953. /package/cjs/{array_plus → array}/drop.js +0 -0
  954. /package/cjs/{array_plus → array}/filter.js +0 -0
  955. /package/cjs/{array_plus → array}/find_first.d.ts +0 -0
  956. /package/cjs/{array_plus → array}/find_first.js +0 -0
  957. /package/cjs/{array_plus → array}/find_last.d.ts +0 -0
  958. /package/cjs/{array_plus → array}/find_last.js +0 -0
  959. /package/cjs/{array_plus → array}/head.d.ts +0 -0
  960. /package/cjs/{array_plus → array}/head.js +0 -0
  961. /package/cjs/{array_plus → array}/intersect_of_props.d.ts +0 -0
  962. /package/cjs/{array_plus → array}/intersect_of_props.js +0 -0
  963. /package/cjs/{array_plus → array}/last.d.ts +0 -0
  964. /package/cjs/{array_plus → array}/last.js +0 -0
  965. /package/cjs/{array_plus → array}/literal_array.d.ts +0 -0
  966. /package/cjs/{array_plus → array}/literal_array.js +0 -0
  967. /package/cjs/{array_plus → array}/pad_left.js +0 -0
  968. /package/cjs/{array_plus → array}/reduce_while.d.ts +0 -0
  969. /package/cjs/{array_plus → array}/reduce_while.js +0 -0
  970. /package/cjs/{array_plus → array}/reverse.d.ts +0 -0
  971. /package/cjs/{array_plus → array}/reverse.js +0 -0
  972. /package/cjs/{array_plus → array}/some.js +0 -0
  973. /package/cjs/{array_plus → array}/tail.d.ts +0 -0
  974. /package/cjs/{array_plus → array}/tail.js +0 -0
  975. /package/cjs/{array_plus → array}/union_of_props.d.ts +0 -0
  976. /package/cjs/{array_plus → array}/union_of_props.js +0 -0
  977. /package/cjs/{array_plus → array}/union_of_values.d.ts +0 -0
  978. /package/cjs/{array_plus → array}/union_of_values.js +0 -0
  979. /package/cjs/{nominal-types → nominal}/types.d.ts +0 -0
  980. /package/cjs/{nominal-types → nominal}/types.js +0 -0
  981. /package/cjs/{number_plus → number}/number_plus.js +0 -0
  982. /package/esm/{array_plus → array}/array.js +0 -0
  983. /package/esm/{array_plus → array}/array_plus.js +0 -0
  984. /package/esm/{array_plus → array}/common_prop_keys.d.ts +0 -0
  985. /package/esm/{array_plus → array}/common_prop_keys.js +0 -0
  986. /package/esm/{array_plus → array}/create_tuple.js +0 -0
  987. /package/esm/{array_plus → array}/drop.js +0 -0
  988. /package/esm/{array_plus → array}/filter.js +0 -0
  989. /package/esm/{array_plus → array}/find_first.d.ts +0 -0
  990. /package/esm/{array_plus → array}/find_first.js +0 -0
  991. /package/esm/{array_plus → array}/find_last.d.ts +0 -0
  992. /package/esm/{array_plus → array}/find_last.js +0 -0
  993. /package/esm/{array_plus → array}/head.d.ts +0 -0
  994. /package/esm/{array_plus → array}/head.js +0 -0
  995. /package/esm/{array_plus → array}/intersect_of_props.d.ts +0 -0
  996. /package/esm/{array_plus → array}/intersect_of_props.js +0 -0
  997. /package/esm/{array_plus → array}/last.d.ts +0 -0
  998. /package/esm/{array_plus → array}/last.js +0 -0
  999. /package/esm/{array_plus → array}/literal_array.d.ts +0 -0
  1000. /package/esm/{array_plus → array}/literal_array.js +0 -0
  1001. /package/esm/{array_plus → array}/pad_left.js +0 -0
  1002. /package/esm/{array_plus → array}/reduce_while.d.ts +0 -0
  1003. /package/esm/{array_plus → array}/reduce_while.js +0 -0
  1004. /package/esm/{array_plus → array}/reverse.d.ts +0 -0
  1005. /package/esm/{array_plus → array}/reverse.js +0 -0
  1006. /package/esm/{array_plus → array}/some.js +0 -0
  1007. /package/esm/{array_plus → array}/tail.d.ts +0 -0
  1008. /package/esm/{array_plus → array}/tail.js +0 -0
  1009. /package/esm/{array_plus → array}/union_of_props.d.ts +0 -0
  1010. /package/esm/{array_plus → array}/union_of_props.js +0 -0
  1011. /package/esm/{array_plus → array}/union_of_values.d.ts +0 -0
  1012. /package/esm/{array_plus → array}/union_of_values.js +0 -0
  1013. /package/esm/{nominal-types → nominal}/types.d.ts +0 -0
  1014. /package/esm/{nominal-types → nominal}/types.js +0 -0
  1015. /package/esm/{number_plus → number}/number_plus.js +0 -0
  1016. /package/ts/{array_plus → array}/common_prop_keys.ts +0 -0
  1017. /package/ts/{array_plus → array}/find_first.ts +0 -0
  1018. /package/ts/{array_plus → array}/find_last.ts +0 -0
  1019. /package/ts/{array_plus → array}/head.ts +0 -0
  1020. /package/ts/{array_plus → array}/intersect_of_props.ts +0 -0
  1021. /package/ts/{array_plus → array}/last.ts +0 -0
  1022. /package/ts/{array_plus → array}/literal_array.ts +0 -0
  1023. /package/ts/{array_plus → array}/reduce_while.ts +0 -0
  1024. /package/ts/{array_plus → array}/reverse.ts +0 -0
  1025. /package/ts/{array_plus → array}/tail.ts +0 -0
  1026. /package/ts/{array_plus → array}/union_of_props.ts +0 -0
  1027. /package/ts/{array_plus → array}/union_of_values.ts +0 -0
  1028. /package/ts/function/{AnyFunction.ts → any_function.ts} +0 -0
  1029. /package/ts/{JSONTypes.ts → json.ts} +0 -0
  1030. /package/ts/{nominal-types → nominal}/types.ts +0 -0
  1031. /package/ts/{UnionKeys.ts → union_keys.ts} +0 -0
  1032. /package/ts/{UnionToIntersection.ts → union_to_intersection.ts} +0 -0
@@ -1,16 +0,0 @@
1
- import type { IsAny } from '../any_plus/any.js'
2
- import type { Equal } from '../predicates/index.js'
3
- import type { CreateTuple } from './create_tuple.js'
4
- import type { UnionOfValues } from './union_of_values.js'
5
-
6
- export type PadLeft<A extends any[], Total extends number, PadWith = any> = number extends A['length']
7
- ? IsAny<UnionOfValues<A>> extends true
8
- ? A
9
- : Equal<UnionOfValues<A>, PadWith> extends true
10
- ? A
11
- : PadLeft<[...CreateTuple<Total, PadWith>, ...A], Total, PadWith>
12
- : CreateTuple<Total, any> extends [...infer U, ...A]
13
- ? number extends U['length']
14
- ? A
15
- : [...CreateTuple<U['length'], PadWith>, ...A]
16
- : A
@@ -1,33 +0,0 @@
1
- import type { Equal } from '../predicates/index.js'
2
- import type { Tail } from './tail.js'
3
- import type { UnionOfValues } from './union_of_values.js'
4
-
5
- export type Some<
6
- A extends any[],
7
- Criteria,
8
- Mode extends 'strict' | 'loose' = 'loose',
9
- Then = true,
10
- Else = false
11
- > = Mode extends 'strict'
12
- ? Some.Strict<A, Criteria, Then, Else>
13
- : number extends A['length']
14
- ? UnionOfValues<A> extends Criteria
15
- ? Then
16
- : Else
17
- : A['length'] extends 0
18
- ? Else
19
- : A[0] extends Criteria
20
- ? Then
21
- : Some<Tail<A>, Criteria, 'loose', Then, Else>
22
-
23
- export namespace Some {
24
- export type Strict<A extends any[], Criteria, Then, Else> = number extends A['length']
25
- ? Equal<UnionOfValues<A>, Criteria> extends true
26
- ? Then
27
- : Else
28
- : A['length'] extends 0
29
- ? Else
30
- : Equal<A[0], Criteria> extends true
31
- ? Then
32
- : Strict<Tail<A>, Criteria, Then, Else>
33
- }
@@ -1,107 +0,0 @@
1
- import { tersify } from 'tersify'
2
- import { isConstructor, type AnyConstructor } from '../class/index.js'
3
- import type { AnyFunction } from '../function/index.js'
4
-
5
- /**
6
- * assert the subject satisfies the specified type T
7
- * @type T the type to check against.
8
- */
9
- export function assertType<T>(subject: T): asserts subject is T
10
- export function assertType<T>(subject: unknown, validator: (s: T) => boolean): asserts subject is T
11
- export function assertType<T extends new (...args: any) => any>(
12
- subject: unknown,
13
- constructor: T
14
- ): asserts subject is InstanceType<T>
15
- export function assertType(subject: unknown, validator?: (s: any) => boolean) {
16
- if (validator) {
17
- if ((isConstructor(validator) && !(subject instanceof validator)) || !validator(subject))
18
- throw new TypeError(`subject fails to satisfy ${tersify(validator)}`)
19
- }
20
- return
21
- }
22
-
23
- assertType.isUndefined = function (subject: undefined): asserts subject is undefined {
24
- if (typeof subject !== 'undefined') throw TypeError(`subject is not undefined`)
25
- }
26
- assertType.noUndefined = function <S>(subject: Exclude<S, undefined>): void {
27
- if (typeof subject === 'undefined') throw TypeError(`subject is undefined`)
28
- }
29
-
30
- assertType.isNull = function (subject: null): asserts subject is null {
31
- if (subject !== null) throw TypeError(`subject is not null`)
32
- }
33
- assertType.noNull = function <S>(subject: Exclude<S, null>): void {
34
- if (subject === null) throw TypeError(`subject is null`)
35
- }
36
-
37
- assertType.isNumber = function (subject: number): asserts subject is number {
38
- if (typeof subject !== 'number') throw TypeError(`subject is not number`)
39
- }
40
- assertType.noNumber = function <S>(subject: Exclude<S, number>): void {
41
- if (typeof subject === 'number') throw TypeError(`subject is number`)
42
- }
43
-
44
- assertType.isBoolean = function (subject: boolean): asserts subject is boolean {
45
- if (typeof subject !== 'boolean') throw TypeError(`subject is not boolean`)
46
- }
47
- assertType.noBoolean = function <S>(subject: Exclude<S, boolean>): void {
48
- if (typeof subject === 'boolean') throw TypeError(`subject is boolean`)
49
- }
50
-
51
- assertType.isTrue = function (subject: true): asserts subject is true {
52
- if (subject !== true) throw TypeError(`subject is not true`)
53
- }
54
- assertType.noTrue = function <S>(subject: Exclude<S, true>): void {
55
- // @ts-ignore
56
- if (subject === true) throw TypeError(`subject is true`)
57
- }
58
-
59
- assertType.isFalse = function (subject: false): asserts subject is false {
60
- if (subject !== false) throw TypeError(`subject is not false`)
61
- }
62
- assertType.noFalse = function <S>(subject: Exclude<S, false>): void {
63
- // @ts-ignore
64
- if (subject === false) throw TypeError(`subject is false`)
65
- }
66
-
67
- assertType.isString = function (subject: string): asserts subject is string {
68
- if (typeof subject !== 'string') throw TypeError(`subject is not string`)
69
- }
70
- assertType.noString = function <S>(subject: Exclude<S, string>): void {
71
- if (typeof subject === 'string') throw TypeError(`subject is string`)
72
- }
73
-
74
- assertType.isFunction = function (subject: AnyFunction): asserts subject is AnyFunction {
75
- if (typeof subject !== 'function') throw TypeError(`subject is not function`)
76
- }
77
- assertType.noFunction = function <S>(subject: Exclude<S, AnyFunction>): void {
78
- if (typeof subject === 'function') throw TypeError(`subject is function`)
79
- }
80
-
81
- assertType.isConstructor = function (subject: AnyConstructor): asserts subject is AnyConstructor {
82
- if (!isConstructor(subject)) throw TypeError(`subject is not a constructor`)
83
- }
84
-
85
- assertType.isError = function (subject: Error): asserts subject is Error {
86
- if (!(subject instanceof Error)) throw TypeError(`subject is not an Error`)
87
- }
88
- assertType.noError = function <S>(subject: Exclude<S, Error>): void {
89
- if (subject instanceof Error) throw TypeError(`subject is an Error`)
90
- }
91
-
92
- assertType.isNever = function (subject: never): asserts subject is never {}
93
-
94
- /**
95
- * creates a custom assertion function with standard TypeError.
96
- * Currently this requires explicity type annotation,
97
- * thus making it hard to use:
98
- * https://github.com/microsoft/TypeScript/issues/41047
99
- */
100
- assertType.custom = function <T>(validator: (s: T) => boolean): (subject: unknown) => asserts subject is T {
101
- return function (subject) {
102
- if (!validator(subject as any)) throw new TypeError(`subject fails to satisfy ${tersify(validator)}`)
103
- return
104
- }
105
- }
106
-
107
- assertType.as = function <T>(subject: unknown): asserts subject is T {}
@@ -1 +0,0 @@
1
- export * from './assertType.js'
@@ -1,20 +0,0 @@
1
- import type { AnyFunction } from './AnyFunction.js'
2
-
3
- /**
4
- * Extract the function signature from a composite type T.
5
- *
6
- * It works with interact of functions, but not on function overloads and union.
7
- * @note does not work with function overloads.
8
- */
9
- export type ExtractFunction<T extends AnyFunction> = T extends AnyFunction<infer P, infer R>
10
- ? (...args: P) => R
11
- : never
12
-
13
- /**
14
- * Extract the function signature from a composite function.
15
- *
16
- * @note does not work with function overloads.
17
- */
18
- export function extractFunction<T extends AnyFunction>(fn: T) {
19
- return fn as any as ExtractFunction<T>
20
- }
@@ -1,2 +0,0 @@
1
- export type { AnyFunction } from './AnyFunction.js'
2
- export * from './ExtractFunction.js'
@@ -1,34 +0,0 @@
1
- // By Drew Colthorp, <https://spin.atomicobject.com/2018/01/15/typescript-flexible-nominal-typing/#comment-604580>
2
- // <https://gist.github.com/dcolthorp/aa21cf87d847ae9942106435bf47565d>
3
-
4
- import { Widen } from '../utils/index.js'
5
- import { typeSym, valueSym } from './types.js'
6
-
7
- /**
8
- * Create a "branded" version of a type.
9
- * TypeScript won't allow implicit conversion to this type
10
- */
11
- export type Brand<B extends string, T> = T extends object
12
- ? T & { [typeSym]: B }
13
- : { [typeSym]: B; [valueSym]: T }
14
-
15
- /**
16
- * Creates a brand creator with the specified type.
17
- */
18
- export function brand<B extends string>(type: B): <T>(subject: T) => Brand<B, Widen<T>>
19
- /**
20
- * Creates a branded value of specified type.
21
- */
22
- export function brand<B extends string, T>(type: B, subject: T): Brand<B, Widen<T>>
23
- export function brand(type: string, subject?: unknown) {
24
- if (subject === undefined)
25
- return function <T>(subject: T) {
26
- return brand(type, subject)
27
- }
28
-
29
- if (typeof subject === 'object' && subject !== null) {
30
- // if subject is not an object, the branding will exist only in type-level.
31
- ;(subject as { [typeSym]: string })[typeSym] = type
32
- }
33
- return subject
34
- }
@@ -1,35 +0,0 @@
1
- // By Drew Colthorp, <https://spin.atomicobject.com/2018/01/15/typescript-flexible-nominal-typing/#comment-604580>
2
- // <https://gist.github.com/dcolthorp/aa21cf87d847ae9942106435bf47565d>
3
-
4
- import type { Widen } from '../utils/index.js'
5
- import { typeSym } from './types.js'
6
-
7
- /**
8
- * Create a "flavored" version of a type.
9
- * TypeScript will disallow mixing flavors,
10
- * but will allow unflavored values of that type to be passed in where a flavored version is expected.
11
- * This is a less restrictive form of branding.
12
- */
13
- export type Flavor<F extends string, T> = T & {
14
- [typeSym]?: F
15
- }
16
-
17
- /**
18
- * Creates a brand creator with the specified type.
19
- */
20
- export function flavor<F extends string>(type: F): <T>(subject: T) => Flavor<F, Widen<T>>
21
- /**
22
- * Creates a branded value of specified type.
23
- */
24
- export function flavor<F extends string, T>(type: F, subject: T): Flavor<F, Widen<T>>
25
- export function flavor(type: string, subject?: unknown) {
26
- if (subject === undefined)
27
- return function <T>(subject: T) {
28
- return flavor(type, subject)
29
- }
30
- if (typeof subject === 'object' && subject !== null) {
31
- // if subject is not an object, the branding will exist only in type-level.
32
- ;(subject as { [typeSym]: string })[typeSym] = type
33
- }
34
- return subject
35
- }
@@ -1,3 +0,0 @@
1
- export * from './Brand.js'
2
- export * from './Flavor.js'
3
- export * from './nominalMatch.js'
@@ -1,22 +0,0 @@
1
- import type { Brand } from './Brand.js'
2
- import type { Flavor } from './Flavor.js'
3
- import { typeSym } from './types.js'
4
-
5
- export function nominalMatch<A extends string, B extends A>(
6
- a: Brand<A, unknown>,
7
- b: Brand<B, unknown>
8
- ): boolean
9
- export function nominalMatch<A extends string, B extends A>(
10
- a: Flavor<A, unknown>,
11
- b: Flavor<B, unknown>
12
- ): boolean
13
- export function nominalMatch<A extends string, B extends A>(
14
- a: Brand<A, unknown> | Flavor<A, unknown>,
15
- b: Brand<B, unknown> | Flavor<B, unknown>
16
- ) {
17
- if (typeof a === 'object' && a !== null && typeof b === 'object' && b !== null)
18
- return a[typeSym] === b[typeSym]
19
- else {
20
- return true
21
- }
22
- }
@@ -1 +0,0 @@
1
- export type * from './number.js'
@@ -1,149 +0,0 @@
1
- import type { IsNever } from '../PrimitiveTypes.js'
2
- import type { IsAny } from '../any_plus/any.js'
3
-
4
- /**
5
- * Either number or bigint.
6
- */
7
- export type Numeric = number | bigint
8
-
9
- /**
10
- * The value 0 in number or bigint.
11
- */
12
- export type Zero = 0 | 0n
13
-
14
- /**
15
- * Check if the value is an integer.
16
- *
17
- * ```
18
- * import type { Integer } from 'type-plus'
19
- *
20
- * type R = Integer<0> // 0
21
- * type R = Integer<1.1> // never
22
- * type R = Integer<number> // never as it contains non-integer
23
- *
24
- * type R = Integer<0, true, false> // true
25
- * type R = Integer<1.1, true, false> // false
26
- * ```
27
- */
28
- export type Integer<N extends Numeric, Then = N, Else = never> = IsNever<
29
- N,
30
- Else,
31
- `${N}` extends `${bigint}` ? Then : Else
32
- >
33
- /**
34
- * Check if the value is an integer.
35
- *
36
- * ```
37
- * import type { IsInteger } from 'type-plus'
38
- *
39
- * type R = IsInteger<0> // 0
40
- * type R = IsInteger<1.1> // never
41
- * type R = IsInteger<number> // never as it contains non-integer
42
- *
43
- * type R = IsInteger<0, true, false> // true
44
- * type R = IsInteger<1.1, true, false> // false
45
- * ```
46
- */
47
- export type IsInteger<N extends Numeric, Then = true, Else = false> = Integer<N, Then, Else>
48
-
49
- /**
50
- * Check if the value is an integer.
51
- *
52
- * ```
53
- * import type { IsWhole } from 'type-plus'
54
- *
55
- * type R = IsWhole<0> // 0
56
- * type R = IsWhole<1.1> // never
57
- * type R = IsWhole<number> // never as it contains non-integer
58
- *
59
- * type R = IsWhole<0, true, false> // true
60
- * type R = IsWhole<1.1, true, false> // false
61
- * ```
62
- */
63
- export type IsWhole<N extends Numeric, Then = true, Else = false> = Integer<N, Then, Else>
64
-
65
- /**
66
- * Check if the value is a negative number.
67
- *
68
- * ```
69
- * import type { Negative } from 'type-plus'
70
- *
71
- * type R = Negative<-1> // -1
72
- * type R = Negative<0> // never
73
- *
74
- * type R = Negative<-1, true, false> // true
75
- * type R = Negative<1, true, false> // false
76
- * ```
77
- */
78
- export type Negative<N extends Numeric, Then = N, Else = never> = IsNever<
79
- N,
80
- Else,
81
- N extends Zero ? Else : `${N}` extends `-${string}` ? Then : Else
82
- >
83
-
84
- /**
85
- * Check if the value it not a negative number.
86
- *
87
- * ```
88
- * import type { NonNegative } from 'type-plus'
89
- *
90
- * type R = NonNegative<-1> // never
91
- * type R = NonNegative<0> // 0
92
- *
93
- * type R = NonNegative<-1, true, false> // false
94
- * type R = NonNegative<1, true, false> // true
95
- * ```
96
- */
97
- export type NonNegative<N extends Numeric, Then = N, Else = never> = Negative<N, Else, Then>
98
-
99
- /**
100
- * Check if the type `T` is exactly the type `number` and not numeric literals.
101
- *
102
- * ```
103
- * import type { NumberType } from 'type-plus'
104
- *
105
- * type R = NumberType<number> // true
106
- * type R = NumberType<1> // false
107
- * ```
108
- */
109
- export type NumberType<T, Then = T, Else = never> = IsAny<
110
- T,
111
- Else,
112
- [number, T] extends [T, number] ? Then : Else
113
- >
114
-
115
- /**
116
- * Check if the value is a positive number.
117
- *
118
- * ```
119
- * import type { Positive } from 'type-plus'
120
- *
121
- * type R = Positive<1> // 1
122
- * type R = Positive<0> // never
123
- * type R = Positive<-1> // never
124
- *
125
- * type R = Positive<1, true, false> // true
126
- * type R = Positive<-1, true, false> // false
127
- * ```
128
- */
129
- export type Positive<N extends Numeric, Then = N, Else = never> = IsNever<
130
- N,
131
- Else,
132
- number extends N ? Else : N extends Zero ? Then : `${N}` extends `-${string}` ? Else : Then
133
- >
134
-
135
- /**
136
- * Is the value `N` a positive number.
137
- *
138
- * ```
139
- * import type { IsPositive } from 'type-plus'
140
- *
141
- * type R = IsPositive<1> // true
142
- * type R = IsPositive<0> // false
143
- * type R = IsPositive<-1> // false
144
- *
145
- * type R = IsPositive<1, 'good', 'bad'> // 'good'
146
- * type R = IsPositive<-1, 'good', 'bad> // 'bad'
147
- * ```
148
- */
149
- export type IsPositive<N extends Numeric, Then = true, Else = false> = Positive<N, Then, Else>
@@ -1 +0,0 @@
1
- export type * from './number.js'
@@ -1,24 +0,0 @@
1
- import type { IsAny } from '../any_plus/any.js'
2
- import type { And, Or } from './logical.js'
3
-
4
- /**
5
- * Checks if the two types are equal.
6
- */
7
- export type Equal<A, B, Then = true, Else = false> = [A, B] extends [B, A]
8
- ? And<IsAny<A>, IsAny<B>, Then, Or<IsAny<A>, IsAny<B>, Else, Then>>
9
- : Else
10
-
11
- /**
12
- * Checks if the two types are equal.
13
- */
14
- export type IsEqual<A, B, Then = true, Else = false> = Equal<A, B, Then, Else>
15
-
16
- /**
17
- * Check if the two types are not equal
18
- */
19
- export type NotEqual<A, B, Then = true, Else = false> = Equal<A, B, Else, Then>
20
-
21
- /**
22
- * Check if the two types are not equal
23
- */
24
- export type IsNotEqual<A, B, Then = true, Else = false> = NotEqual<A, B, Then, Else>
@@ -1 +0,0 @@
1
- export * from './stub.js'
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes