type-plus 7.3.1 → 7.5.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 (376) hide show
  1. package/README.md +146 -183
  2. package/cjs/any/any_type.d.ts +8 -8
  3. package/cjs/any/any_type.d.ts.map +1 -1
  4. package/cjs/array/array.at.d.ts +3 -1
  5. package/cjs/array/array.at.d.ts.map +1 -1
  6. package/cjs/array/array.entries.d.ts +4 -3
  7. package/cjs/array/array.entries.d.ts.map +1 -1
  8. package/cjs/array/array.find_last.d.ts +3 -1
  9. package/cjs/array/array.find_last.d.ts.map +1 -1
  10. package/cjs/array/array.some.d.ts +1 -1
  11. package/cjs/array/array.some.d.ts.map +1 -1
  12. package/cjs/array/array_plus.common_prop_keys.d.ts +27 -0
  13. package/cjs/array/array_plus.common_prop_keys.d.ts.map +1 -0
  14. package/cjs/array/array_plus.common_prop_keys.js +3 -0
  15. package/cjs/array/array_plus.common_prop_keys.js.map +1 -0
  16. package/cjs/array/{array.concat.d.ts → array_plus.concat.d.ts} +4 -1
  17. package/cjs/array/array_plus.concat.d.ts.map +1 -0
  18. package/cjs/array/array_plus.concat.js +3 -0
  19. package/cjs/array/array_plus.concat.js.map +1 -0
  20. package/cjs/array/array_plus.d.ts +7 -3
  21. package/cjs/array/array_plus.d.ts.map +1 -1
  22. package/cjs/array/array_plus.drop_match.d.ts +4 -0
  23. package/cjs/array/array_plus.drop_match.d.ts.map +1 -0
  24. package/cjs/array/array_plus.drop_match.js +3 -0
  25. package/cjs/array/array_plus.drop_match.js.map +1 -0
  26. package/cjs/array/array_plus.element_match.d.ts +44 -0
  27. package/cjs/array/array_plus.element_match.d.ts.map +1 -0
  28. package/cjs/array/array_plus.element_match.js +3 -0
  29. package/cjs/array/array_plus.element_match.js.map +1 -0
  30. package/cjs/array/array_plus.filter.d.ts +2 -0
  31. package/cjs/array/array_plus.filter.d.ts.map +1 -0
  32. package/cjs/array/array_plus.filter.js +3 -0
  33. package/cjs/array/array_plus.filter.js.map +1 -0
  34. package/cjs/array/array_plus.find.d.ts +57 -0
  35. package/cjs/array/array_plus.find.d.ts.map +1 -0
  36. package/cjs/array/array_plus.find.js +3 -0
  37. package/cjs/array/array_plus.find.js.map +1 -0
  38. package/cjs/array/array_plus.pad_start.d.ts +5 -0
  39. package/cjs/array/array_plus.pad_start.d.ts.map +1 -0
  40. package/cjs/array/array_plus.pad_start.js +3 -0
  41. package/cjs/array/array_plus.pad_start.js.map +1 -0
  42. package/cjs/array/array_type.d.ts +30 -12
  43. package/cjs/array/array_type.d.ts.map +1 -1
  44. package/cjs/array/filter.d.ts +24 -4
  45. package/cjs/array/filter.d.ts.map +1 -1
  46. package/cjs/array/find_first.d.ts +62 -0
  47. package/cjs/array/find_first.d.ts.map +1 -0
  48. package/cjs/array/{array.find.js → find_first.js} +1 -1
  49. package/cjs/array/find_first.js.map +1 -0
  50. package/cjs/array/head.d.ts +30 -1
  51. package/cjs/array/head.d.ts.map +1 -1
  52. package/cjs/array/intersect_of_props.d.ts +5 -3
  53. package/cjs/array/intersect_of_props.d.ts.map +1 -1
  54. package/cjs/array/last.d.ts +27 -2
  55. package/cjs/array/last.d.ts.map +1 -1
  56. package/cjs/array/literal_array.d.ts +5 -0
  57. package/cjs/array/literal_array.d.ts.map +1 -1
  58. package/cjs/array/literal_array.js +5 -0
  59. package/cjs/array/literal_array.js.map +1 -1
  60. package/cjs/array/pad_start.d.ts +5 -5
  61. package/cjs/array/pad_start.d.ts.map +1 -1
  62. package/cjs/array/reduce_while.d.ts +6 -0
  63. package/cjs/array/reduce_while.d.ts.map +1 -1
  64. package/cjs/array/reduce_while.js +6 -0
  65. package/cjs/array/reduce_while.js.map +1 -1
  66. package/cjs/array/reverse.d.ts +5 -0
  67. package/cjs/array/reverse.d.ts.map +1 -1
  68. package/cjs/array/union_of_props.d.ts +1 -1
  69. package/cjs/array/union_of_props.d.ts.map +1 -1
  70. package/cjs/assertion/assert_type.d.ts +4 -1
  71. package/cjs/assertion/assert_type.d.ts.map +1 -1
  72. package/cjs/assertion/assert_type.js.map +1 -1
  73. package/cjs/functional/compose.d.ts +2 -1
  74. package/cjs/functional/compose.d.ts.map +1 -1
  75. package/cjs/functional/compose.js.map +1 -1
  76. package/cjs/functional/context.d.ts.map +1 -1
  77. package/cjs/index.d.ts +22 -3
  78. package/cjs/index.d.ts.map +1 -1
  79. package/cjs/index.js +9 -3
  80. package/cjs/index.js.map +1 -1
  81. package/cjs/math/numeric_struct.d.ts +1 -1
  82. package/cjs/math/numeric_struct.d.ts.map +1 -1
  83. package/cjs/mix_types/any_or_never_type.d.ts +1 -1
  84. package/cjs/never/never_type.d.ts +11 -0
  85. package/cjs/never/never_type.d.ts.map +1 -1
  86. package/cjs/nodejs/isNodeError.d.ts.map +1 -1
  87. package/cjs/nominal/brand.d.ts.map +1 -1
  88. package/cjs/nominal/flavor.d.ts.map +1 -1
  89. package/cjs/object/index.d.ts +0 -1
  90. package/cjs/object/index.d.ts.map +1 -1
  91. package/cjs/object/index.js.map +1 -1
  92. package/cjs/testing/test_type.d.ts +277 -233
  93. package/cjs/testing/test_type.d.ts.map +1 -1
  94. package/cjs/testing/test_type.js.map +1 -1
  95. package/cjs/tuple/common_prop_keys.d.ts +34 -0
  96. package/cjs/tuple/common_prop_keys.d.ts.map +1 -0
  97. package/cjs/tuple/common_prop_keys.js.map +1 -0
  98. package/cjs/tuple/create_tuple.d.ts.map +1 -1
  99. package/cjs/tuple/drop.d.ts +91 -0
  100. package/cjs/tuple/drop.d.ts.map +1 -0
  101. package/cjs/{array → tuple}/drop.js +3 -1
  102. package/cjs/tuple/drop.js.map +1 -0
  103. package/{esm/array → cjs/tuple}/tail.d.ts +1 -1
  104. package/cjs/{array → tuple}/tail.d.ts.map +1 -1
  105. package/cjs/{array → tuple}/tail.js.map +1 -1
  106. package/cjs/tuple/tuple_plus.common_prop_keys.d.ts +28 -0
  107. package/cjs/tuple/tuple_plus.common_prop_keys.d.ts.map +1 -0
  108. package/cjs/tuple/tuple_plus.common_prop_keys.js +3 -0
  109. package/cjs/tuple/tuple_plus.common_prop_keys.js.map +1 -0
  110. package/cjs/tuple/tuple_plus.d.ts +5 -1
  111. package/cjs/tuple/tuple_plus.d.ts.map +1 -1
  112. package/cjs/tuple/tuple_plus.drop_match.d.ts +6 -0
  113. package/cjs/tuple/tuple_plus.drop_match.d.ts.map +1 -0
  114. package/cjs/tuple/tuple_plus.drop_match.js +3 -0
  115. package/cjs/tuple/tuple_plus.drop_match.js.map +1 -0
  116. package/cjs/tuple/tuple_plus.filter.d.ts +13 -0
  117. package/cjs/tuple/tuple_plus.filter.d.ts.map +1 -0
  118. package/cjs/tuple/tuple_plus.filter.js +3 -0
  119. package/cjs/tuple/tuple_plus.filter.js.map +1 -0
  120. package/cjs/tuple/tuple_plus.find.d.ts +64 -0
  121. package/cjs/tuple/tuple_plus.find.d.ts.map +1 -0
  122. package/cjs/tuple/tuple_plus.find.js +3 -0
  123. package/cjs/tuple/tuple_plus.find.js.map +1 -0
  124. package/cjs/tuple/tuple_plus.js +0 -15
  125. package/cjs/tuple/tuple_plus.js.map +1 -1
  126. package/cjs/tuple/tuple_plus.pad_start.d.ts +11 -5
  127. package/cjs/tuple/tuple_plus.pad_start.d.ts.map +1 -1
  128. package/cjs/tuple/tuple_type.d.ts +41 -23
  129. package/cjs/tuple/tuple_type.d.ts.map +1 -1
  130. package/cjs/union/union.d.ts +33 -0
  131. package/cjs/union/union.d.ts.map +1 -0
  132. package/cjs/{array/array.concat.js → union/union.js} +1 -1
  133. package/cjs/union/union.js.map +1 -0
  134. package/cjs/unknown/unknown_type.d.ts +12 -0
  135. package/cjs/unknown/unknown_type.d.ts.map +1 -1
  136. package/cjs/utils/options.d.ts +10 -0
  137. package/cjs/utils/options.d.ts.map +1 -0
  138. package/cjs/utils/options.js +3 -0
  139. package/cjs/utils/options.js.map +1 -0
  140. package/esm/any/any_type.d.ts +8 -8
  141. package/esm/any/any_type.d.ts.map +1 -1
  142. package/esm/array/array.at.d.ts +3 -1
  143. package/esm/array/array.at.d.ts.map +1 -1
  144. package/esm/array/array.entries.d.ts +4 -3
  145. package/esm/array/array.entries.d.ts.map +1 -1
  146. package/esm/array/array.find_last.d.ts +3 -1
  147. package/esm/array/array.find_last.d.ts.map +1 -1
  148. package/esm/array/array.some.d.ts +1 -1
  149. package/esm/array/array.some.d.ts.map +1 -1
  150. package/esm/array/array_plus.common_prop_keys.d.ts +27 -0
  151. package/esm/array/array_plus.common_prop_keys.d.ts.map +1 -0
  152. package/esm/array/array_plus.common_prop_keys.js +2 -0
  153. package/esm/array/array_plus.common_prop_keys.js.map +1 -0
  154. package/esm/array/{array.concat.d.ts → array_plus.concat.d.ts} +4 -1
  155. package/esm/array/array_plus.concat.d.ts.map +1 -0
  156. package/esm/array/array_plus.concat.js +2 -0
  157. package/esm/array/array_plus.concat.js.map +1 -0
  158. package/esm/array/array_plus.d.ts +7 -3
  159. package/esm/array/array_plus.d.ts.map +1 -1
  160. package/esm/array/array_plus.drop_match.d.ts +4 -0
  161. package/esm/array/array_plus.drop_match.d.ts.map +1 -0
  162. package/esm/array/array_plus.drop_match.js +2 -0
  163. package/esm/array/array_plus.drop_match.js.map +1 -0
  164. package/esm/array/array_plus.element_match.d.ts +44 -0
  165. package/esm/array/array_plus.element_match.d.ts.map +1 -0
  166. package/esm/array/array_plus.element_match.js +2 -0
  167. package/esm/array/array_plus.element_match.js.map +1 -0
  168. package/esm/array/array_plus.filter.d.ts +2 -0
  169. package/esm/array/array_plus.filter.d.ts.map +1 -0
  170. package/esm/array/array_plus.filter.js +2 -0
  171. package/esm/array/array_plus.filter.js.map +1 -0
  172. package/esm/array/array_plus.find.d.ts +57 -0
  173. package/esm/array/array_plus.find.d.ts.map +1 -0
  174. package/esm/array/array_plus.find.js +2 -0
  175. package/esm/array/array_plus.find.js.map +1 -0
  176. package/esm/array/array_plus.pad_start.d.ts +5 -0
  177. package/esm/array/array_plus.pad_start.d.ts.map +1 -0
  178. package/esm/array/array_plus.pad_start.js +2 -0
  179. package/esm/array/array_plus.pad_start.js.map +1 -0
  180. package/esm/array/array_type.d.ts +30 -12
  181. package/esm/array/array_type.d.ts.map +1 -1
  182. package/esm/array/filter.d.ts +24 -4
  183. package/esm/array/filter.d.ts.map +1 -1
  184. package/esm/array/find_first.d.ts +62 -0
  185. package/esm/array/find_first.d.ts.map +1 -0
  186. package/esm/array/find_first.js +2 -0
  187. package/esm/array/find_first.js.map +1 -0
  188. package/esm/array/head.d.ts +30 -1
  189. package/esm/array/head.d.ts.map +1 -1
  190. package/esm/array/intersect_of_props.d.ts +5 -3
  191. package/esm/array/intersect_of_props.d.ts.map +1 -1
  192. package/esm/array/last.d.ts +27 -2
  193. package/esm/array/last.d.ts.map +1 -1
  194. package/esm/array/literal_array.d.ts +5 -0
  195. package/esm/array/literal_array.d.ts.map +1 -1
  196. package/esm/array/literal_array.js +5 -0
  197. package/esm/array/literal_array.js.map +1 -1
  198. package/esm/array/pad_start.d.ts +5 -5
  199. package/esm/array/pad_start.d.ts.map +1 -1
  200. package/esm/array/reduce_while.d.ts +6 -0
  201. package/esm/array/reduce_while.d.ts.map +1 -1
  202. package/esm/array/reduce_while.js +6 -0
  203. package/esm/array/reduce_while.js.map +1 -1
  204. package/esm/array/reverse.d.ts +5 -0
  205. package/esm/array/reverse.d.ts.map +1 -1
  206. package/esm/array/union_of_props.d.ts +1 -1
  207. package/esm/array/union_of_props.d.ts.map +1 -1
  208. package/esm/assertion/assert_type.d.ts +4 -1
  209. package/esm/assertion/assert_type.d.ts.map +1 -1
  210. package/esm/assertion/assert_type.js.map +1 -1
  211. package/esm/functional/compose.d.ts +2 -1
  212. package/esm/functional/compose.d.ts.map +1 -1
  213. package/esm/functional/compose.js.map +1 -1
  214. package/esm/functional/context.d.ts.map +1 -1
  215. package/esm/index.d.ts +22 -3
  216. package/esm/index.d.ts.map +1 -1
  217. package/esm/index.js +4 -2
  218. package/esm/index.js.map +1 -1
  219. package/esm/math/numeric_struct.d.ts +1 -1
  220. package/esm/math/numeric_struct.d.ts.map +1 -1
  221. package/esm/mix_types/any_or_never_type.d.ts +1 -1
  222. package/esm/never/never_type.d.ts +11 -0
  223. package/esm/never/never_type.d.ts.map +1 -1
  224. package/esm/nodejs/isNodeError.d.ts.map +1 -1
  225. package/esm/nominal/brand.d.ts.map +1 -1
  226. package/esm/nominal/flavor.d.ts.map +1 -1
  227. package/esm/object/index.d.ts +0 -1
  228. package/esm/object/index.d.ts.map +1 -1
  229. package/esm/object/index.js.map +1 -1
  230. package/esm/testing/test_type.d.ts +277 -233
  231. package/esm/testing/test_type.d.ts.map +1 -1
  232. package/esm/testing/test_type.js.map +1 -1
  233. package/esm/tuple/common_prop_keys.d.ts +34 -0
  234. package/esm/tuple/common_prop_keys.d.ts.map +1 -0
  235. package/esm/tuple/common_prop_keys.js.map +1 -0
  236. package/esm/tuple/create_tuple.d.ts.map +1 -1
  237. package/esm/tuple/drop.d.ts +91 -0
  238. package/esm/tuple/drop.d.ts.map +1 -0
  239. package/esm/tuple/drop.js +9 -0
  240. package/esm/tuple/drop.js.map +1 -0
  241. package/{cjs/array → esm/tuple}/tail.d.ts +1 -1
  242. package/esm/{array → tuple}/tail.d.ts.map +1 -1
  243. package/esm/{array → tuple}/tail.js.map +1 -1
  244. package/esm/tuple/tuple_plus.common_prop_keys.d.ts +28 -0
  245. package/esm/tuple/tuple_plus.common_prop_keys.d.ts.map +1 -0
  246. package/esm/tuple/tuple_plus.common_prop_keys.js +2 -0
  247. package/esm/tuple/tuple_plus.common_prop_keys.js.map +1 -0
  248. package/esm/tuple/tuple_plus.d.ts +5 -1
  249. package/esm/tuple/tuple_plus.d.ts.map +1 -1
  250. package/esm/tuple/tuple_plus.drop_match.d.ts +6 -0
  251. package/esm/tuple/tuple_plus.drop_match.d.ts.map +1 -0
  252. package/esm/tuple/tuple_plus.drop_match.js +2 -0
  253. package/esm/tuple/tuple_plus.drop_match.js.map +1 -0
  254. package/esm/tuple/tuple_plus.filter.d.ts +13 -0
  255. package/esm/tuple/tuple_plus.filter.d.ts.map +1 -0
  256. package/esm/tuple/tuple_plus.filter.js +2 -0
  257. package/esm/tuple/tuple_plus.filter.js.map +1 -0
  258. package/esm/tuple/tuple_plus.find.d.ts +64 -0
  259. package/esm/tuple/tuple_plus.find.d.ts.map +1 -0
  260. package/esm/tuple/tuple_plus.find.js +2 -0
  261. package/esm/tuple/tuple_plus.find.js.map +1 -0
  262. package/esm/tuple/tuple_plus.js +1 -1
  263. package/esm/tuple/tuple_plus.js.map +1 -1
  264. package/esm/tuple/tuple_plus.pad_start.d.ts +11 -5
  265. package/esm/tuple/tuple_plus.pad_start.d.ts.map +1 -1
  266. package/esm/tuple/tuple_type.d.ts +41 -23
  267. package/esm/tuple/tuple_type.d.ts.map +1 -1
  268. package/esm/union/union.d.ts +33 -0
  269. package/esm/union/union.d.ts.map +1 -0
  270. package/esm/union/union.js +2 -0
  271. package/esm/union/union.js.map +1 -0
  272. package/esm/unknown/unknown_type.d.ts +12 -0
  273. package/esm/unknown/unknown_type.d.ts.map +1 -1
  274. package/esm/utils/options.d.ts +10 -0
  275. package/esm/utils/options.d.ts.map +1 -0
  276. package/esm/utils/options.js +2 -0
  277. package/esm/utils/options.js.map +1 -0
  278. package/package.json +12 -9
  279. package/ts/any/any_type.ts +8 -9
  280. package/ts/any/readme.md +71 -4
  281. package/ts/array/array.at.ts +3 -1
  282. package/ts/array/array.entries.ts +4 -2
  283. package/ts/array/array.find_last.ts +3 -1
  284. package/ts/array/array.some.ts +1 -1
  285. package/ts/array/array_plus.common_prop_keys.ts +35 -0
  286. package/ts/array/{array.concat.ts → array_plus.concat.ts} +3 -0
  287. package/ts/array/array_plus.drop_match.ts +16 -0
  288. package/ts/array/array_plus.element_match.ts +61 -0
  289. package/ts/array/array_plus.filter.ts +5 -0
  290. package/ts/array/array_plus.find.ts +71 -0
  291. package/ts/array/array_plus.pad_start.ts +13 -0
  292. package/ts/array/array_plus.ts +7 -3
  293. package/ts/array/array_type.ts +30 -12
  294. package/ts/array/filter.ts +27 -22
  295. package/ts/array/find_first.ts +71 -0
  296. package/ts/array/head.ts +40 -1
  297. package/ts/array/intersect_of_props.ts +7 -3
  298. package/ts/array/last.ts +36 -2
  299. package/ts/array/literal_array.ts +5 -0
  300. package/ts/array/pad_start.ts +6 -10
  301. package/ts/array/readme.md +297 -32
  302. package/ts/array/reduce_while.ts +6 -0
  303. package/ts/array/reverse.ts +5 -0
  304. package/ts/array/union_of_props.ts +1 -1
  305. package/ts/assertion/assert_type.ts +4 -1
  306. package/ts/assertion/readme.md +4 -3
  307. package/ts/functional/compose.ts +2 -1
  308. package/ts/functional/context.ts +1 -1
  309. package/ts/index.ts +22 -3
  310. package/ts/math/numeric_struct.ts +9 -9
  311. package/ts/mix_types/any_or_never_type.ts +1 -1
  312. package/ts/mix_types/readme.md +7 -1
  313. package/ts/never/never_type.ts +13 -0
  314. package/ts/nodejs/isNodeError.ts +13 -13
  315. package/ts/nominal/brand.ts +1 -1
  316. package/ts/nominal/flavor.ts +1 -1
  317. package/ts/object/index.ts +0 -1
  318. package/ts/testing/readme.md +30 -0
  319. package/ts/testing/test_type.ts +279 -234
  320. package/ts/tuple/common_prop_keys.ts +41 -0
  321. package/ts/tuple/create_tuple.ts +9 -9
  322. package/ts/tuple/drop.ts +125 -0
  323. package/ts/tuple/readme.md +263 -9
  324. package/ts/{array → tuple}/tail.ts +1 -1
  325. package/ts/tuple/tuple_plus.common_prop_keys.ts +47 -0
  326. package/ts/tuple/tuple_plus.drop_match.ts +20 -0
  327. package/ts/tuple/tuple_plus.filter.ts +29 -0
  328. package/ts/tuple/tuple_plus.find.ts +88 -0
  329. package/ts/tuple/tuple_plus.pad_start.ts +37 -21
  330. package/ts/tuple/tuple_plus.ts +5 -1
  331. package/ts/tuple/tuple_type.ts +67 -25
  332. package/ts/union/readme.md +81 -0
  333. package/ts/union/union.ts +37 -0
  334. package/ts/unknown/unknown_type.ts +13 -0
  335. package/ts/utils/options.ts +10 -0
  336. package/cjs/array/array.concat.d.ts.map +0 -1
  337. package/cjs/array/array.concat.js.map +0 -1
  338. package/cjs/array/array.find.d.ts +0 -21
  339. package/cjs/array/array.find.d.ts.map +0 -1
  340. package/cjs/array/array.find.js.map +0 -1
  341. package/cjs/array/common_prop_keys.d.ts +0 -11
  342. package/cjs/array/common_prop_keys.d.ts.map +0 -1
  343. package/cjs/array/common_prop_keys.js.map +0 -1
  344. package/cjs/array/drop.d.ts +0 -19
  345. package/cjs/array/drop.d.ts.map +0 -1
  346. package/cjs/array/drop.js.map +0 -1
  347. package/cjs/array/index.d.ts +0 -17
  348. package/cjs/array/index.d.ts.map +0 -1
  349. package/cjs/array/index.js +0 -33
  350. package/cjs/array/index.js.map +0 -1
  351. package/esm/array/array.concat.d.ts.map +0 -1
  352. package/esm/array/array.concat.js +0 -2
  353. package/esm/array/array.concat.js.map +0 -1
  354. package/esm/array/array.find.d.ts +0 -21
  355. package/esm/array/array.find.d.ts.map +0 -1
  356. package/esm/array/array.find.js +0 -2
  357. package/esm/array/array.find.js.map +0 -1
  358. package/esm/array/common_prop_keys.d.ts +0 -11
  359. package/esm/array/common_prop_keys.d.ts.map +0 -1
  360. package/esm/array/common_prop_keys.js.map +0 -1
  361. package/esm/array/drop.d.ts +0 -19
  362. package/esm/array/drop.d.ts.map +0 -1
  363. package/esm/array/drop.js +0 -7
  364. package/esm/array/drop.js.map +0 -1
  365. package/esm/array/index.d.ts +0 -17
  366. package/esm/array/index.d.ts.map +0 -1
  367. package/esm/array/index.js +0 -17
  368. package/esm/array/index.js.map +0 -1
  369. package/ts/array/array.find.ts +0 -32
  370. package/ts/array/common_prop_keys.ts +0 -18
  371. package/ts/array/drop.ts +0 -71
  372. package/ts/array/index.ts +0 -16
  373. /package/cjs/{array → tuple}/common_prop_keys.js +0 -0
  374. /package/cjs/{array → tuple}/tail.js +0 -0
  375. /package/esm/{array → tuple}/common_prop_keys.js +0 -0
  376. /package/esm/{array → tuple}/tail.js +0 -0
@@ -0,0 +1,34 @@
1
+ import type { CommonPropKeys as ArrayCommonPropKeys } from '../array/array_plus.common_prop_keys.js';
2
+ import type { KeyTypes } from '../object/KeyTypes.js';
3
+ import type { CommonPropKeys as TupleCommonPropKeys } from './tuple_plus.common_prop_keys.js';
4
+ /**
5
+ * ⚗️ *transform*
6
+ * 🔢 *customization*
7
+ *
8
+ * Gets the common property keys of the elements in tuple or array `T`.
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * import { CommonPropKeys } from 'type-plus'
13
+ *
14
+ * type R = CommonPropKeys<[{ a: number }, { b: number }]> // never
15
+ * type R = CommonPropKeys<[{ a: number, c: 1 }, { b: number, c: 2 }]> // 'c'
16
+ * ```
17
+ *
18
+ * @typeParam Options['caseNever'] Return type when `T` is `never`.
19
+ * Default to `never`.
20
+ */
21
+ export type CommonPropKeys<T extends Record<KeyTypes, unknown>[], Options extends CommonPropKeys.Options = CommonPropKeys.DefaultOptions> = number extends T['length'] ? ArrayCommonPropKeys<T> : TupleCommonPropKeys<T, Options>;
22
+ export declare namespace CommonPropKeys {
23
+ interface Options extends TupleCommonPropKeys.Options {
24
+ }
25
+ interface DefaultOptions extends TupleCommonPropKeys.DefaultOptions {
26
+ }
27
+ }
28
+ /**
29
+ * Gets the common property keys of the elements in `A`.
30
+ *
31
+ * @deprecated Please use `CommonPropKeys` instead.
32
+ */
33
+ export type CommonKeys<A extends Record<KeyTypes, any>[]> = CommonPropKeys<A>;
34
+ //# sourceMappingURL=common_prop_keys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common_prop_keys.d.ts","sourceRoot":"","sources":["../../ts/tuple/common_prop_keys.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,IAAI,mBAAmB,EAAE,MAAM,yCAAyC,CAAA;AACpG,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AACrD,OAAO,KAAK,EAAE,cAAc,IAAI,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AAE7F;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,cAAc,CACzB,CAAC,SAAS,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,EACrC,OAAO,SAAS,cAAc,CAAC,OAAO,GAAG,cAAc,CAAC,cAAc,IACnE,MAAM,SAAS,CAAC,CAAC,QAAQ,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;AAGzF,yBAAiB,cAAc,CAAC;IAC/B,UAAiB,OAAQ,SAAQ,mBAAmB,CAAC,OAAO;KAC3D;IAED,UAAiB,cAAe,SAAQ,mBAAmB,CAAC,cAAc;KACzE;CACD;AAED;;;;GAIG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,IAAI,cAAc,CAAC,CAAC,CAAC,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common_prop_keys.js","sourceRoot":"","sources":["../../ts/tuple/common_prop_keys.ts"],"names":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"create_tuple.d.ts","sourceRoot":"","sources":["../../ts/tuple/create_tuple.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAExD;;;;;GAKG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,GAAG,OAAO,EAAE,IAAI,GAAG,KAAK,IAAI,MAAM,SAAS,CAAC,GACpF,CAAC,EAAE,GACH,UAAU,CAAC,CAAC,CAAC,SAAS,IAAI,GAC1B,SAAS,CAAC,CAAC,CAAC,SAAS,IAAI,GACxB,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAC7C,IAAI,GACL,IAAI,CAAA;AACP,MAAM,MAAM,OAAO,CAAC,CAAC,SAAS,GAAG,EAAE,EAAE,CAAC,SAAS,MAAM,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,GACtF,CAAC,GACD,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,GACrB,CAAC,GAAG,CAAC,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAChC,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC,GAC3B,CAAC,SAAS,GAAG,EAAE,GACd,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GACrD,KAAK,GACN,KAAK,CAAA;AAER,KAAK,YAAY,CAAC,CAAC,GAAG,CAAC,IAAI;KACzB,CAAC,IAAI,MAAM,GAAG,GAAG,EAAE;CACpB,GAAG;IACH,CAAC,EAAE,EAAE,CAAA;IACL,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IACN,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACT,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IACZ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IACf,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAClB,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IACrB,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IACxB,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAC3B,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;CAC9B,CAAA;AACD,KAAK,OAAO,CAAC,CAAC,SAAS,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"create_tuple.d.ts","sourceRoot":"","sources":["../../ts/tuple/create_tuple.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAExD;;;;;GAKG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,GAAG,OAAO,EAAE,IAAI,GAAG,KAAK,IAAI,MAAM,SAAS,CAAC,GACpF,CAAC,EAAE,GACH,UAAU,CAAC,CAAC,CAAC,SAAS,IAAI,GAC1B,SAAS,CAAC,CAAC,CAAC,SAAS,IAAI,GACxB,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAC7C,IAAI,GACL,IAAI,CAAA;AACP,MAAM,MAAM,OAAO,CAAC,CAAC,SAAS,GAAG,EAAE,EAAE,CAAC,SAAS,MAAM,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,GACtF,CAAC,GACD,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,GACrB,CAAC,GAAG,CAAC,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAChC,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC,GAC3B,CAAC,SAAS,GAAG,EAAE,GACd,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GACrD,KAAK,GACN,KAAK,CAAA;AAER,KAAK,YAAY,CAAC,CAAC,GAAG,CAAC,IAAI;KACzB,CAAC,IAAI,MAAM,GAAG,GAAG,EAAE;CACpB,GAAG;IACH,CAAC,EAAE,EAAE,CAAC;IACN,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACP,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACV,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACb,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAChB,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACnB,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACtB,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACzB,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5B,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;CAC9B,CAAA;AACD,KAAK,OAAO,CAAC,CAAC,SAAS,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA"}
@@ -0,0 +1,91 @@
1
+ import type { DropMatch as ArrayDropMatch } from '../array/array_plus.drop_match.js';
2
+ import type { DropMatch as TupleDropMatch } from './tuple_plus.drop_match.js';
3
+ /**
4
+ * ⚗️ *transform*
5
+ * 🔢 *customizable*
6
+ *
7
+ * Drops the first entry in the tuple `T`.
8
+ *
9
+ * If the type is an array, the same array will be returned.
10
+ *
11
+ * @example
12
+ * ```ts
13
+ * type R = DropFirst<[1, 2, 3]> // [2, 3]
14
+ * type R = DropFirst<[string]> // []
15
+ * type R = DropFirst<[]> // []
16
+ * type R = DropFirst<string[]> // string[]
17
+ * ```
18
+ *
19
+ * @typeParam Options['caseArray'] Return type when `T` is `Array`.
20
+ * Default to `T`.
21
+ *
22
+ * @typeParam Options['caseEmptyTuple'] Return type when `T` is an empty tuple.
23
+ * Default to `[]`.
24
+ */
25
+ export type DropFirst<T extends unknown[], Options extends DropFirst.Options = DropFirst.DefaultOptions<T>> = number extends T['length'] ? Options['caseArray'] : T['length'] extends 0 ? Options['caseEmptyTuple'] : T['length'] extends 1 ? [] : T extends [any, ...infer Tail] ? Tail : never;
26
+ export declare namespace DropFirst {
27
+ interface Options {
28
+ caseArray?: unknown;
29
+ caseEmptyTuple?: unknown;
30
+ }
31
+ interface DefaultOptions<T> {
32
+ caseArray: T;
33
+ caseEmptyTuple: [];
34
+ }
35
+ }
36
+ /**
37
+ * ⚗️ *transform*
38
+ * 🔢 *customizable*
39
+ *
40
+ * Drops the last entry in the tuple `T`.
41
+ *
42
+ * If the type is an array, the same array will be returned.
43
+ *
44
+ * @example
45
+ * ```ts
46
+ * type R = DropLast<[1, 2, 3]> // [2, 3]
47
+ * type R = DropLast<[string]> // []
48
+ * type R = DropLast<[]> // []
49
+ * type R = DropLast<string[]> // string[]
50
+ * ```
51
+ *
52
+ * @typeParam Options['caseArray'] Return type when `T` is `Array`.
53
+ * Default to `T`.
54
+ *
55
+ * @typeParam Options['caseEmptyTuple'] Return type when `T` is an empty tuple.
56
+ * Default to `[]`.
57
+ */
58
+ export type DropLast<T extends unknown[], Cases extends DropLast.Options = DropLast.DefaultOptions<T>> = number extends T['length'] ? Cases['caseArray'] : T['length'] extends 0 ? Cases['caseEmptyTuple'] : T['length'] extends 1 ? [] : T extends [...infer Heads, any] ? Heads : never;
59
+ export declare namespace DropLast {
60
+ interface Options {
61
+ caseArray?: unknown;
62
+ caseEmptyTuple?: unknown;
63
+ }
64
+ interface DefaultOptions<T> {
65
+ caseArray: T;
66
+ caseEmptyTuple: [];
67
+ }
68
+ }
69
+ /**
70
+ * ⚗️ *transform*
71
+ *
72
+ * Drops entries matching `Criteria` in array or tuple `A`.
73
+ *
74
+ * @example
75
+ * ```ts
76
+ * type R = DropMatch<Array<string | undefined>, undefined> // string[]
77
+ * type R = DropMatch<Array<string>, string> // never[]
78
+ * type R = DropMatch<Array<1 | 2>, number> // never[]
79
+ * ```
80
+ */
81
+ export type DropMatch<A extends Readonly<Array<unknown>>, Criteria> = number extends A['length'] ? ArrayDropMatch<A, Criteria> : TupleDropMatch<A, Criteria>;
82
+ export type DropNull<A extends Array<any>> = DropMatch<A, null>;
83
+ export type DropNullable<A extends Array<any>> = DropMatch<A, null | undefined>;
84
+ export type DropUndefined<A extends Array<any>> = DropMatch<A, undefined>;
85
+ /**
86
+ * drop a particular value from an array.
87
+ *
88
+ * 💀 *deprecated* the type does not sufficiently cover the use cases.
89
+ */
90
+ export declare function drop<A extends Readonly<unknown[]>, const C>(array: A, value: C): DropMatch<A, C>;
91
+ //# sourceMappingURL=drop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drop.d.ts","sourceRoot":"","sources":["../../ts/tuple/drop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,IAAI,cAAc,EAAE,MAAM,mCAAmC,CAAA;AACpF,OAAO,KAAK,EAAE,SAAS,IAAI,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAE7E;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,MAAM,SAAS,CACpB,CAAC,SAAS,OAAO,EAAE,EACnB,OAAO,SAAS,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,IAC5D,MAAM,SAAS,CAAC,CAAC,QAAQ,CAAC,GAC3B,OAAO,CAAC,WAAW,CAAC,GACpB,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,GACrB,OAAO,CAAC,gBAAgB,CAAC,GACzB,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,GACrB,EAAE,GACF,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,GAC9B,IAAI,GACJ,KAAK,CAAA;AAER,yBAAiB,SAAS,CAAC;IAC1B,UAAiB,OAAO;QACvB,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,cAAc,CAAC,EAAE,OAAO,CAAC;KACzB;IACD,UAAiB,cAAc,CAAC,CAAC;QAChC,SAAS,EAAE,CAAC,CAAC;QACb,cAAc,EAAE,EAAE,CAAA;KAClB;CACD;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,MAAM,QAAQ,CACnB,CAAC,SAAS,OAAO,EAAE,EACnB,KAAK,SAAS,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,IACxD,MAAM,SAAS,CAAC,CAAC,QAAQ,CAAC,GAC3B,KAAK,CAAC,WAAW,CAAC,GAClB,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,GACrB,KAAK,CAAC,gBAAgB,CAAC,GACvB,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,GACrB,EAAE,GACF,CAAC,SAAS,CAAC,GAAG,MAAM,KAAK,EAAE,GAAG,CAAC,GAC/B,KAAK,GACL,KAAK,CAAA;AAGR,yBAAiB,QAAQ,CAAC;IACzB,UAAiB,OAAO;QACvB,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,cAAc,CAAC,EAAE,OAAO,CAAC;KACzB;IACD,UAAiB,cAAc,CAAC,CAAC;QAChC,SAAS,EAAE,CAAC,CAAC;QACb,cAAc,EAAE,EAAE,CAAA;KAClB;CACD;AAGD;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,IAAI,MAAM,SAAS,CAAC,CAAC,QAAQ,CAAC,GAC7F,cAAc,CAAC,CAAC,EAAE,QAAQ,CAAC,GAC3B,cAAc,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAA;AAE9B,MAAM,MAAM,QAAQ,CAAC,CAAC,SAAS,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;AAC/D,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC,CAAA;AAC/E,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAA;AAEzE;;;;GAIG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAEhG"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * drop a particular value from an array.
3
+ *
4
+ * 💀 *deprecated* the type does not sufficiently cover the use cases.
5
+ */
6
+ export function drop(array, value) {
7
+ return array.filter(v => v !== value);
8
+ }
9
+ //# sourceMappingURL=drop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drop.js","sourceRoot":"","sources":["../../ts/tuple/drop.ts"],"names":[],"mappings":"AAqHA;;;;GAIG;AACH,MAAM,UAAU,IAAI,CAAyC,KAAQ,EAAE,KAAQ;IAC9E,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,KAAK,CAAoB,CAAA;AACzD,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { UnionOfValues } from './union_of_values.js';
1
+ import type { UnionOfValues } from '../array/union_of_values.js';
2
2
  /**
3
3
  * Gets the types of a tuple except the first entry.
4
4
  */
@@ -1 +1 @@
1
- {"version":3,"file":"tail.d.ts","sourceRoot":"","sources":["../../ts/array/tail.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEzD;;GAEG;AACH,MAAM,MAAM,IAAI,CAAC,CAAC,SAAS,GAAG,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,GACtD,KAAK,GACL,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,GAC9B,IAAI,SAAS,aAAa,CAAC,CAAC,CAAC,EAAE,GAC9B,IAAI,GACJ,KAAK,GACN,CAAC,CAAA"}
1
+ {"version":3,"file":"tail.d.ts","sourceRoot":"","sources":["../../ts/tuple/tail.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAEhE;;GAEG;AACH,MAAM,MAAM,IAAI,CAAC,CAAC,SAAS,GAAG,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,GACtD,KAAK,GACL,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,GAC9B,IAAI,SAAS,aAAa,CAAC,CAAC,CAAC,EAAE,GAC9B,IAAI,GACJ,KAAK,GACN,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"tail.js","sourceRoot":"","sources":["../../ts/array/tail.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"tail.js","sourceRoot":"","sources":["../../ts/tuple/tail.ts"],"names":[],"mappings":""}
@@ -0,0 +1,28 @@
1
+ import type { NeverType } from '../never/never_type.js';
2
+ import type { KeyTypes } from '../object/KeyTypes.js';
3
+ import type { Tail } from './tail.js';
4
+ /**
5
+ * ⚗️ *transform*
6
+ * 🔢 *customization*
7
+ *
8
+ * Gets the common property keys of the elements in tuple `T`.
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * import { type TuplePlus } from 'type-plus'
13
+ *
14
+ * type R = TuplePlus.CommonPropKeys<[{ a: number }, { b: number }]> // never
15
+ * type R = TuplePlus.CommonPropKeys<[{ a: number, c: 1 }, { b: number, c: 2 }]> // 'c'
16
+ * ```
17
+ *
18
+ * @typeParam Options['caseNever'] Return type when `T` is `never`.
19
+ * Default to `never`.
20
+ */
21
+ export type CommonPropKeys<T extends Record<KeyTypes, unknown>[], Options extends CommonPropKeys.Options = CommonPropKeys.DefaultOptions> = NeverType<T, Options['caseNever'], (T['length'] extends 0 ? never : (T['length'] extends 1 ? keyof T[0] : (T['length'] extends 2 ? keyof T[0] & keyof T[1] : keyof T[0] & keyof T[1] & CommonPropKeys<Tail<Tail<T>>>)))>;
22
+ export declare namespace CommonPropKeys {
23
+ interface Options extends NeverType.Options {
24
+ }
25
+ interface DefaultOptions extends NeverType.DefaultOptions {
26
+ }
27
+ }
28
+ //# sourceMappingURL=tuple_plus.common_prop_keys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tuple_plus.common_prop_keys.d.ts","sourceRoot":"","sources":["../../ts/tuple/tuple_plus.common_prop_keys.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AACrD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAErC;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,cAAc,CACzB,CAAC,SAAS,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,EACrC,OAAO,SAAS,cAAc,CAAC,OAAO,GAAG,cAAc,CAAC,cAAc,IACnE,SAAS,CACZ,CAAC,EACD,OAAO,CAAC,WAAW,CAAC,EACpB,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,GACnB,KAAK,GACL,CACD,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,GACnB,MAAM,CAAC,CAAC,CAAC,CAAC,GACV,CACD,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,GACnB,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GACvB,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CACzD,CACD,CAAC,CACH,CAAA;AAED,yBAAiB,cAAc,CAAC;IAC/B,UAAiB,OAAQ,SAAQ,SAAS,CAAC,OAAO;KACjD;IAED,UAAiB,cAAe,SAAQ,SAAS,CAAC,cAAc;KAC/D;CACD"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=tuple_plus.common_prop_keys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tuple_plus.common_prop_keys.js","sourceRoot":"","sources":["../../ts/tuple/tuple_plus.common_prop_keys.ts"],"names":[],"mappings":""}
@@ -1,2 +1,6 @@
1
- export * from './tuple_plus.pad_start.js';
1
+ export type { CommonPropKeys } from './tuple_plus.common_prop_keys.js';
2
+ export type { DropMatch } from './tuple_plus.drop_match.js';
3
+ export type { Filter } from './tuple_plus.filter.js';
4
+ export type { Find } from './tuple_plus.find.js';
5
+ export type { PadStart } from './tuple_plus.pad_start.js';
2
6
  //# sourceMappingURL=tuple_plus.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tuple_plus.d.ts","sourceRoot":"","sources":["../../ts/tuple/tuple_plus.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAA"}
1
+ {"version":3,"file":"tuple_plus.d.ts","sourceRoot":"","sources":["../../ts/tuple/tuple_plus.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AACtE,YAAY,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AAC3D,YAAY,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AACpD,YAAY,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAChD,YAAY,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAA"}
@@ -0,0 +1,6 @@
1
+ import type { IsEqual } from '../equal/equal.js';
2
+ export type DropMatch<A extends Readonly<Array<unknown>>, Criteria> = A['length'] extends 0 ? A : A extends readonly [infer Head, ...infer Tail] ? Tail['length'] extends 0 ? undefined extends Criteria ? DropMatch.ExcludeUnionOfEmptyTuple<Head extends Criteria ? [] : [Head]> : DropMatch.ExcludeUnionOfEmptyTuple<Head extends Criteria ? [] : [Head]> : Exclude<Head, Criteria> extends never ? DropMatch<Tail, Criteria> : [Exclude<Head, Criteria>, ...DropMatch<Tail, Criteria>] : never[];
3
+ export declare namespace DropMatch {
4
+ type ExcludeUnionOfEmptyTuple<A> = IsEqual<A, []> extends true ? A : Exclude<A, []>;
5
+ }
6
+ //# sourceMappingURL=tuple_plus.drop_match.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tuple_plus.drop_match.d.ts","sourceRoot":"","sources":["../../ts/tuple/tuple_plus.drop_match.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAEhD,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,GAE1F,CAAC,GACC,CAAC,SAAS,SAAS,CAAC,MAAM,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,GAC9C,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAE1B,SAAS,SAAS,QAAQ,GACxB,SAAS,CAAC,wBAAwB,CAAC,IAAI,SAAS,QAAQ,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,GACvE,SAAS,CAAC,wBAAwB,CAAC,IAAI,SAAS,QAAQ,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,GAEzE,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,SAAS,KAAK,GACnC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,GACzB,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,GAAG,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,GACvD,KAAK,EAAE,CAAA;AAEV,yBAAiB,SAAS,CAAC;IAC1B,KAAY,wBAAwB,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,IAAI,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;CAC1F"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=tuple_plus.drop_match.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tuple_plus.drop_match.js","sourceRoot":"","sources":["../../ts/tuple/tuple_plus.drop_match.ts"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * ⚗️ *transform*
3
+ *
4
+ * Filter entries matching `Criteria` in tuple `T`.
5
+ *
6
+ * @example
7
+ * ```ts
8
+ * type R = Filter<[1, 2, '3'], number> // [1, 2]
9
+ * type R = Filter<[1, 2, '3'], true> // []
10
+ * ```
11
+ */
12
+ export type Filter<T extends unknown[], Criteria> = T['length'] extends 0 ? [] : (T extends [infer Head, ...infer Tail] ? (Tail['length'] extends 0 ? (Head extends Criteria ? [Head] : []) : (Head extends Criteria ? [Head, ...Filter<Tail, Criteria>] : Filter<Tail, Criteria>)) : never);
13
+ //# sourceMappingURL=tuple_plus.filter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tuple_plus.filter.d.ts","sourceRoot":"","sources":["../../ts/tuple/tuple_plus.filter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,MAAM,MAAM,MAAM,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,GACtE,EAAE,GACF,CACD,CAAC,SAAS,CAAC,MAAM,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,GACnC,CACD,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GACtB,CACD,IAAI,SAAS,QAAQ,GACnB,CAAC,IAAI,CAAC,GACN,EAAE,CAAC,GACJ,CACD,IAAI,SAAS,QAAQ,GACnB,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,GACjC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CACxB,CACD,GACC,KAAK,CACP,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=tuple_plus.filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tuple_plus.filter.js","sourceRoot":"","sources":["../../ts/tuple/tuple_plus.filter.ts"],"names":[],"mappings":""}
@@ -0,0 +1,64 @@
1
+ import type { ElementMatch } from '../array/array_plus.element_match.js';
2
+ import type { NeverType } from '../never/never_type.js';
3
+ import type { MergeOptions } from '../utils/options.js';
4
+ import type { TupleType } from './tuple_type.js';
5
+ /**
6
+ * 🦴 *utilities*
7
+ * 🔢 *customizable*
8
+ *
9
+ * Find the first type in tuple `A` that matches `Criteria`.
10
+ *
11
+ * @example
12
+ * ```ts
13
+ * type R = TuplePlus.Find<[true, 1, 'x', 3], string> // 'x'
14
+ * type R = TuplePlus.Find<[true, 1, 'x', 3], number> // 1
15
+ * type R = TuplePlus.Find<[string, number, 1], 1> // widen: 1 | undefined
16
+ * type R = TuplePlus.Find<[true, number | string], string> // unionMiss: string | undefined
17
+ *
18
+ * type R = TuplePlus.Find<[true, 1, 'x'], 2> // never
19
+ * ```
20
+ *
21
+ * @typeParam Options['widen'] performs widen match.
22
+ * Default to `true`.
23
+ * With widen match, a narrowed type will match its widen type.
24
+ * e.g. matching `1` against `number` yields `1 | undefined`
25
+ *
26
+ * The widen behavior can be customized by `Options['caseWiden']`
27
+ *
28
+ * @typeParam Options['caseArray'] return type when `A` is an array. Default to `not supported` message.
29
+ *
30
+ * @typeParam Options['caseEmptyTuple'] return type when `A` is an empty tuple.
31
+ * Default to `never`.
32
+ *
33
+ * @typeParam Options['caseNever'] return type when `A` is `never`. Default to `never`.
34
+ *
35
+ * @typeParam Options['caseNotMatch'] Return value when `T` does not match `Criteria`.
36
+ * Default to `never`.
37
+ *
38
+ * @typeParam Options['caseWiden'] return type when `T` in `A` is a widen type of `Criteria`.
39
+ * Default to `Criteria | undefined`.
40
+ * Set it to `never` for a more type-centric behavior
41
+ *
42
+ * @typeParam Options['caseUnionNotMatch'] Return value when a branch of the union `T` does not match `Criteria`.
43
+ * Default to `never`.
44
+ *
45
+ * If you want the type to behave more like JavaScript,
46
+ * you can override it to return `undefined`.
47
+ *
48
+ * Since it is a union, the result will be joined to the matched branch as union.
49
+ */
50
+ export type Find<A extends unknown[], Criteria, Options extends Find.Options = Find.DefaultOptions<Criteria>> = MergeOptions<Options, Find.DefaultOptions<Criteria>> extends infer O extends Find.Options ? TupleType<A, A['length'] extends 0 ? O['caseEmptyTuple'] : Find.Device<A, Criteria, O>, O['caseArray'], O> : never;
51
+ export declare namespace Find {
52
+ type Device<A extends unknown[], Criteria, Options extends Find.Options> = A['length'] extends 0 ? Options['caseNotMatch'] : (A extends [infer Head, ...infer Tail] ? ElementMatch<Head, Criteria, MergeOptions<{
53
+ caseNotMatch: Device<Tail, Criteria, Options>;
54
+ }, Options>> : never);
55
+ interface Options extends ElementMatch.Options, NeverType.Options {
56
+ caseArray?: unknown;
57
+ caseEmptyTuple?: unknown;
58
+ }
59
+ interface DefaultOptions<Criteria> extends ElementMatch.DefaultOptions<Criteria>, NeverType.DefaultOptions {
60
+ caseArray: 'does not support array. Please use `FindFirst` or `ArrayPlus.Find` instead.';
61
+ caseEmptyTuple: never;
62
+ }
63
+ }
64
+ //# sourceMappingURL=tuple_plus.find.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tuple_plus.find.d.ts","sourceRoot":"","sources":["../../ts/tuple/tuple_plus.find.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAA;AACxE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAEhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,MAAM,MAAM,IAAI,CACf,CAAC,SAAS,OAAO,EAAE,EACnB,QAAQ,EACR,OAAO,SAAS,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IACzD,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,SAAS,MAAM,CAAC,SAAS,IAAI,CAAC,OAAO,GAC1F,SAAS,CACV,CAAC,EACD,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,GACnB,CAAC,CAAC,gBAAgB,CAAC,GACnB,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,EAC7B,CAAC,CAAC,WAAW,CAAC,EACd,CAAC,CACD,GACC,KAAK,CAAA;AACR,yBAAiB,IAAI,CAAC;IACrB,KAAY,MAAM,CACjB,CAAC,SAAS,OAAO,EAAE,EACnB,QAAQ,EACR,OAAO,SAAS,IAAI,CAAC,OAAO,IACzB,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,GACtB,OAAO,CAAC,cAAc,CAAC,GACvB,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,GACrC,YAAY,CACb,IAAI,EACJ,QAAQ,EACR,YAAY,CAAC;QAAE,YAAY,EAAE,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAA;KAAE,EAAE,OAAO,CAAC,CACxE,GACC,KAAK,CAAC,CAAA;IACV,UAAiB,OAAQ,SAAQ,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO;QACvE,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,cAAc,CAAC,EAAE,OAAO,CAAC;KACzB;IAED,UAAiB,cAAc,CAAC,QAAQ,CAAE,SAAQ,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,cAAc;QAChH,SAAS,EAAE,6EAA6E,CAAC;QACzF,cAAc,EAAE,KAAK,CAAC;KACtB;CACD"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=tuple_plus.find.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tuple_plus.find.js","sourceRoot":"","sources":["../../ts/tuple/tuple_plus.find.ts"],"names":[],"mappings":""}
@@ -1,2 +1,2 @@
1
- export * from './tuple_plus.pad_start.js';
1
+ export {};
2
2
  //# sourceMappingURL=tuple_plus.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tuple_plus.js","sourceRoot":"","sources":["../../ts/tuple/tuple_plus.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAA"}
1
+ {"version":3,"file":"tuple_plus.js","sourceRoot":"","sources":["../../ts/tuple/tuple_plus.ts"],"names":[],"mappings":""}
@@ -1,22 +1,28 @@
1
1
  /**
2
- * Pads the start of a tuple with `PadWith`.
2
+ * Pad `T` with `PadWith` at the start of the tuple.
3
3
  *
4
4
  * If the `MaxLength` is less than the length of the tuple,
5
5
  * the `Tuple` will be returned unchanged.
6
6
  *
7
+ * ⚗️ *transform*
8
+ *
7
9
  * @example
8
10
  * ```ts
9
11
  * PadStart<[1, 2, 3], 5, 0> // [0, 0, 1, 2, 3]
10
12
  *
11
13
  * // Ignore if MaxLength is less than the length of the tuple
12
- * PadStart<[1, 2, 3], 5, 0> // [0, 0, 1, 2, 3]
14
+ * PadStart<[1, 2, 3], 2> // [1, 2, 3]
13
15
  *
14
16
  * // Default to unknown
15
17
  * PadStart<[1, 2, 3], 5> // [unknown, unknown, 1, 2, 3]
16
18
  * ```
17
19
  */
18
- export type PadStart<Tuple extends unknown[], MaxLength extends number, PadWith = unknown> = PadStartDevice<Tuple, MaxLength, PadWith, [
20
+ export type PadStart<Tuple extends unknown[], MaxLength extends number, PadWith = unknown> = PadStart.Device<Tuple, MaxLength, PadWith, [
19
21
  ]>;
20
- type PadStartDevice<Source extends unknown[], MaxLength extends number, PadWith, Result extends unknown[]> = Result['length'] extends MaxLength ? Source extends [] ? Result : Source extends [...infer Head, infer Tail] ? [Tail, ...Result] extends infer R extends unknown[] ? PadStartDevice<Head, R['length'], PadWith, R> : never : never : Source extends [] ? PadStartDevice<Source, MaxLength, PadWith, [PadWith, ...Result]> : Source extends [...infer Head, infer Tail] ? PadStartDevice<Head, MaxLength, PadWith, [Tail, ...Result]> : Source;
21
- export {};
22
+ export declare namespace PadStart {
23
+ type Device<Source extends unknown[], MaxLength extends number, PadWith, Result extends unknown[]> = Result['length'] extends MaxLength ? (Source extends [] ? Result : (Source extends [...infer Head, infer Tail] ? ([
24
+ Tail,
25
+ ...Result
26
+ ] extends infer R extends unknown[] ? Device<Head, R['length'], PadWith, R> : never) : never)) : (Source extends [] ? Device<Source, MaxLength, PadWith, [PadWith, ...Result]> : (Source extends [...infer Head, infer Tail] ? Device<Head, MaxLength, PadWith, [Tail, ...Result]> : Source));
27
+ }
22
28
  //# sourceMappingURL=tuple_plus.pad_start.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tuple_plus.pad_start.d.ts","sourceRoot":"","sources":["../../ts/tuple/tuple_plus.pad_start.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,QAAQ,CAAC,KAAK,SAAS,OAAO,EAAE,EAAE,SAAS,SAAS,MAAM,EAAE,OAAO,GAAG,OAAO,IAAI,cAAc,CAC1G,KAAK,EACL,SAAS,EACT,OAAO,EACP;CAAE,CACF,CAAA;AAED,KAAK,cAAc,CAClB,MAAM,SAAS,OAAO,EAAE,EACxB,SAAS,SAAS,MAAM,EACxB,OAAO,EACP,MAAM,SAAS,OAAO,EAAE,IACrB,MAAM,CAAC,QAAQ,CAAC,SAAS,SAAS,GACnC,MAAM,SAAS,EAAE,GAChB,MAAM,GACN,MAAM,SAAS,CAAC,GAAG,MAAM,IAAI,EAAE,MAAM,IAAI,CAAC,GAC1C,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,SAAS,MAAM,CAAC,SAAS,OAAO,EAAE,GAClD,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,GAC7C,KAAK,GACN,KAAK,GACN,MAAM,SAAS,EAAE,GACjB,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,CAAC,GAChE,MAAM,SAAS,CAAC,GAAG,MAAM,IAAI,EAAE,MAAM,IAAI,CAAC,GAC1C,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC,GAC3D,MAAM,CAAA"}
1
+ {"version":3,"file":"tuple_plus.pad_start.d.ts","sourceRoot":"","sources":["../../ts/tuple/tuple_plus.pad_start.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,MAAM,QAAQ,CAAC,KAAK,SAAS,OAAO,EAAE,EAAE,SAAS,SAAS,MAAM,EAAE,OAAO,GAAG,OAAO,IAAI,QAAQ,CAAC,MAAM,CAC3G,KAAK,EACL,SAAS,EACT,OAAO,EACP;CAAE,CACF,CAAA;AAED,yBAAiB,QAAQ,CAAC;IACzB,KAAY,MAAM,CACjB,MAAM,SAAS,OAAO,EAAE,EACxB,SAAS,SAAS,MAAM,EACxB,OAAO,EACP,MAAM,SAAS,OAAO,EAAE,IAExB,MAAM,CAAC,QAAQ,CAAC,SAAS,SAAS,GAChC,CACD,MAAM,SAAS,EAAE,GACf,MAAM,GACN,CACD,MAAM,SAAS,CAAC,GAAG,MAAM,IAAI,EAAE,MAAM,IAAI,CAAC,GACxC,CACD;QAAC,IAAI;QAAE,GAAG,MAAM;KAAC,SAAS,MAAM,CAAC,SAAS,OAAO,EAAE,GACjD,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,GACrC,KAAK,CACP,GACC,KAAK,CACP,CACD,GACC,CACD,MAAM,SAAS,EAAE,GACf,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,CAAC,GACxD,CACD,MAAM,SAAS,CAAC,GAAG,MAAM,IAAI,EAAE,MAAM,IAAI,CAAC,GACxC,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC,GACnD,MAAM,CACR,CACD,CAAA;CAEF"}
@@ -1,7 +1,12 @@
1
- import type { IsNever } from '../never/never_type.js';
1
+ import type { IsNever, NeverType } from '../never/never_type.js';
2
2
  /**
3
- * Check if `T` is a tuple and not an array.
3
+ * 🌪️ *filter*
4
4
  *
5
+ * Filter `T` to ensure it is a tuple, excluding array.
6
+ *
7
+ * @typeParam Cases['never'] Return type when `T` is `never`. Default to `Else`.
8
+ *
9
+ * @example
5
10
  * ```ts
6
11
  * type R = TupleType<[]> // []
7
12
  * type R = TupleType<[1]> // [1]
@@ -12,11 +17,35 @@ import type { IsNever } from '../never/never_type.js';
12
17
  * type R = TupleType<unknown> // never
13
18
  * ```
14
19
  */
15
- export type TupleType<T, Then = T, Else = never> = IsNever<T, Else, [
20
+ export type TupleType<T, Then = T, Else = never, Options extends TupleType.Options = TupleType.DefaultOptions<Else>> = IsNever<T, Options['caseNever'], [
16
21
  T
17
22
  ] extends [any[]] ? (number extends T['length'] ? Else : Then) : Else>;
23
+ export declare namespace TupleType {
24
+ interface Options extends NeverType.Options {
25
+ }
26
+ interface DefaultOptions<Else> {
27
+ caseNever: Else;
28
+ }
29
+ }
18
30
  /**
19
- * Check if `T` is not a tuple.
31
+ * 🎭 *validate*
32
+ *
33
+ * Validate that `T` is a tuple, excluding array.
34
+ *
35
+ * ```ts
36
+ * type R = IsTuple<[]> // true
37
+ *
38
+ * type R = IsTuple<number[]> // false
39
+ * type R = IsTuple<string> // false
40
+ * type R = IsTuple<never> // false
41
+ * type R = IsTuple<unknown> // false
42
+ * ```
43
+ */
44
+ export type IsTuple<T, Then = true, Else = false, Options extends TupleType.Options = TupleType.DefaultOptions<Else>> = TupleType<T, Then, Else, Options>;
45
+ /**
46
+ * 🌪️ *filter*
47
+ *
48
+ * Filter `T` to ensure it is not an tuple, excluding array.
20
49
  *
21
50
  * ```ts
22
51
  * type R = NotTupleType<[]> // never
@@ -28,32 +57,21 @@ export type TupleType<T, Then = T, Else = never> = IsNever<T, Else, [
28
57
  * type R = NotTupleType<unknown> // unknown
29
58
  * ```
30
59
  */
31
- export type NotTupleType<T, Then = T, Else = never> = TupleType<T, Else, Then>;
60
+ export type NotTupleType<T, Then = T, Else = never, Options extends TupleType.Options = TupleType.DefaultOptions<Then>> = TupleType<T, Else, Then, Options>;
32
61
  /**
33
- * Is `T` a tuple and not an array.
34
- *
35
- * ```ts
36
- * type R = IsTuple<[]> // true
62
+ * 🎭 *validate*
37
63
  *
38
- * type R = IsTuple<number[]> // false
39
- * type R = IsTuple<string> // false
40
- * type R = IsTuple<never> // false
41
- * type R = IsTuple<unknown> // false
42
- * ```
43
- */
44
- export type IsTuple<T, Then = true, Else = false> = TupleType<T, Then, Else>;
45
- /**
46
- * Is `T` not a tuple.
64
+ * Validate that `T` is not a tuple, excluding array.
47
65
  *
48
66
  * ```ts
49
67
  * type R = IsNotTuple<[]> // false
50
68
  * type R = IsNotTuple<[1]> // false
51
69
  *
52
- * type R = IsNotTuple<number[]> // false
53
- * type R = IsNotTuple<string> // false
54
- * type R = IsNotTuple<never> // false
55
- * type R = IsNotTuple<unknown> // false
70
+ * type R = IsNotTuple<number[]> // true
71
+ * type R = IsNotTuple<string> // true
72
+ * type R = IsNotTuple<never> // true
73
+ * type R = IsNotTuple<unknown> // true
56
74
  * ```
57
75
  */
58
- export type IsNotTuple<T, Then = true, Else = false> = TupleType<T, Else, Then>;
76
+ export type IsNotTuple<T, Then = true, Else = false, Options extends TupleType.Options = TupleType.DefaultOptions<Then>> = TupleType<T, Else, Then, Options>;
59
77
  //# sourceMappingURL=tuple_type.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tuple_type.d.ts","sourceRoot":"","sources":["../../ts/tuple/tuple_type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAErD;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,IAAI,OAAO,CACzD,CAAC,EACD,IAAI,EACJ;IAAC,CAAC;CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,SAAS,CAAC,CAAC,QAAQ,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,IAAI,CACvE,CAAA;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,IAAI,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AAE9E;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,OAAO,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,KAAK,IAAI,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AAE5E;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,KAAK,IAAI,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA"}
1
+ {"version":3,"file":"tuple_type.d.ts","sourceRoot":"","sources":["../../ts/tuple/tuple_type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAEhE;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,SAAS,CACpB,CAAC,EACD,IAAI,GAAG,CAAC,EACR,IAAI,GAAG,KAAK,EACZ,OAAO,SAAS,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAC/D,OAAO,CACV,CAAC,EACD,OAAO,CAAC,WAAW,CAAC,EACpB;IAAC,CAAC;CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,SAAS,CAAC,CAAC,QAAQ,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,IAAI,CACvE,CAAA;AAED,yBAAiB,SAAS,CAAC;IAC1B,UAAiB,OAAQ,SAAQ,SAAS,CAAC,OAAO;KACjD;IAED,UAAiB,cAAc,CAAC,IAAI;QACnC,SAAS,EAAE,IAAI,CAAA;KACf;CACD;AAGD;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,OAAO,CAClB,CAAC,EACD,IAAI,GAAG,IAAI,EACX,IAAI,GAAG,KAAK,EACZ,OAAO,SAAS,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAC/D,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;AAGrC;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,YAAY,CACvB,CAAC,EACD,IAAI,GAAG,CAAC,EACR,IAAI,GAAG,KAAK,EACZ,OAAO,SAAS,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAC/D,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;AAErC;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,UAAU,CACrB,CAAC,EACD,IAAI,GAAG,IAAI,EACX,IAAI,GAAG,KAAK,EACZ,OAAO,SAAS,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAC/D,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * 🌪️ *filter*
3
+ *
4
+ * Filter the type `T` to ensure it is a union.
5
+ *
6
+ * @example
7
+ * ```ts
8
+ * type R = IsUnion<'a' | 'b'> // 'a' | 'b'
9
+ * type R = IsUnion<boolean> // boolean
10
+ * type R = IsUnion<number> // never
11
+ * ```
12
+ */
13
+ export type UnionType<T, Then = T, Else = never> = UnionType.Device<T, Then, Else>;
14
+ /**
15
+ * 🎭 *validate*
16
+ *
17
+ * Validate the type `T` is a union.
18
+ *
19
+ * @author Nurbol Alpysbayev
20
+ * @see https://stackoverflow.com/questions/53953814/typescript-check-if-a-type-is-a-union
21
+ *
22
+ * @example
23
+ * ```ts
24
+ * type R = IsUnion<'a' | 'b'> // true
25
+ * type R = IsUnion<boolean> // true
26
+ * type R = IsUnion<number> // false
27
+ * ```
28
+ */
29
+ export type IsUnion<T, Then = true, Else = false> = UnionType.Device<T, Then, Else>;
30
+ export declare namespace UnionType {
31
+ type Device<T, Then, Else, U = T> = (T extends unknown ? (U extends T ? 1 : 2) : never) extends 1 ? Else : Then;
32
+ }
33
+ //# sourceMappingURL=union.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"union.d.ts","sourceRoot":"","sources":["../../ts/union/union.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AAElF;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,OAAO,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,KAAK,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AAEnF,yBAAiB,SAAS,CAAC;IAC1B,KAAY,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,IACtC,CAAC,CAAC,SAAS,OAAO,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,GAC3D,IAAI,GACJ,IAAI,CAAA;CACP"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=union.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"union.js","sourceRoot":"","sources":["../../ts/union/union.ts"],"names":[],"mappings":""}
@@ -48,4 +48,16 @@ export type NotUnknownType<T, Then = T, Else = never> = UnknownType<T, Else, The
48
48
  * ```
49
49
  */
50
50
  export type IsNotUnknown<T, Then = true, Else = false> = UnknownType<T, Else, Then>;
51
+ /**
52
+ * 🌪️ *filter*
53
+ *
54
+ * Returns `T` if `T` is not `unknown`, otherwise `Else`.
55
+ *
56
+ * @example
57
+ * ```ts
58
+ * type R = NotUnknownOr<number, string> // number
59
+ * type R = NotUnknownOr<unknown, number> // number
60
+ * ```
61
+ */
62
+ export type NotUnknownOr<T, Else> = UnknownType<T, Else, T>;
51
63
  //# sourceMappingURL=unknown_type.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"unknown_type.d.ts","sourceRoot":"","sources":["../../ts/unknown/unknown_type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAE/C;;;;;;;;;GASG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,IAAI,KAAK,CACzD,CAAC,EACD,IAAI,EACJ;IAAC,CAAC;IAAE,OAAO;CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAC/C,CAAA;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,KAAK,IAAI,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AAEhF;;;;;;;;;;GAUG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,IAAI,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AAElF;;;;;;;;;;GAUG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,KAAK,IAAI,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA"}
1
+ {"version":3,"file":"unknown_type.d.ts","sourceRoot":"","sources":["../../ts/unknown/unknown_type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAE/C;;;;;;;;;GASG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,IAAI,KAAK,CACzD,CAAC,EACD,IAAI,EACJ;IAAC,CAAC;IAAE,OAAO;CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAC/C,CAAA;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,KAAK,IAAI,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AAEhF;;;;;;;;;;GAUG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,IAAI,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AAElF;;;;;;;;;;GAUG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,KAAK,IAAI,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AAEnF;;;;;;;;;;GAUG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,EAAE,IAAI,IAAI,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * 🦴 *utilities*
3
+ * ㊙️ *internal*
4
+ *
5
+ * Merge the input Options `I` with the default Options `D`.
6
+ */
7
+ export type MergeOptions<I, D> = {
8
+ [k in keyof D]: k extends keyof I ? I[k] : D[k];
9
+ };
10
+ //# sourceMappingURL=options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../ts/utils/options.ts"],"names":[],"mappings":"AACA;;;;;GAKG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,EAAE,CAAC,IAAI;KAC/B,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAC/C,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../ts/utils/options.ts"],"names":[],"mappings":""}