type-plus 7.4.0 → 7.6.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 (202) hide show
  1. package/README.md +81 -92
  2. package/cjs/array/array.entries.d.ts +4 -3
  3. package/cjs/array/array.entries.d.ts.map +1 -1
  4. package/cjs/array/array_index.d.ts +4 -1
  5. package/cjs/array/array_index.d.ts.map +1 -1
  6. package/cjs/array/array_plus.common_prop_keys.d.ts +27 -0
  7. package/cjs/array/array_plus.common_prop_keys.d.ts.map +1 -0
  8. package/cjs/array/array_plus.common_prop_keys.js +3 -0
  9. package/cjs/array/array_plus.common_prop_keys.js.map +1 -0
  10. package/cjs/array/array_plus.d.ts +6 -3
  11. package/cjs/array/array_plus.d.ts.map +1 -1
  12. package/cjs/array/array_plus.drop_match.d.ts +4 -0
  13. package/cjs/array/array_plus.drop_match.d.ts.map +1 -0
  14. package/cjs/array/array_plus.drop_match.js +3 -0
  15. package/cjs/array/array_plus.drop_match.js.map +1 -0
  16. package/cjs/array/array_plus.element_match.d.ts +44 -0
  17. package/cjs/array/array_plus.element_match.d.ts.map +1 -0
  18. package/cjs/array/array_plus.element_match.js +3 -0
  19. package/cjs/array/array_plus.element_match.js.map +1 -0
  20. package/cjs/array/array_plus.find.d.ts +57 -0
  21. package/cjs/array/array_plus.find.d.ts.map +1 -0
  22. package/cjs/array/array_plus.find.js +3 -0
  23. package/cjs/array/array_plus.find.js.map +1 -0
  24. package/cjs/array/array_plus.split_at.d.ts +20 -15
  25. package/cjs/array/array_plus.split_at.d.ts.map +1 -1
  26. package/cjs/array/find_first.d.ts +62 -0
  27. package/cjs/array/find_first.d.ts.map +1 -0
  28. package/cjs/array/{array.find.js → find_first.js} +1 -1
  29. package/cjs/array/find_first.js.map +1 -0
  30. package/cjs/array/head.d.ts +18 -6
  31. package/cjs/array/head.d.ts.map +1 -1
  32. package/cjs/array/last.d.ts +17 -6
  33. package/cjs/array/last.d.ts.map +1 -1
  34. package/cjs/assertion/assert_type.d.ts +4 -1
  35. package/cjs/assertion/assert_type.d.ts.map +1 -1
  36. package/cjs/assertion/assert_type.js.map +1 -1
  37. package/cjs/index.d.ts +5 -2
  38. package/cjs/index.d.ts.map +1 -1
  39. package/cjs/index.js.map +1 -1
  40. package/cjs/never/never_type.d.ts +11 -0
  41. package/cjs/never/never_type.d.ts.map +1 -1
  42. package/cjs/object/index.d.ts +0 -1
  43. package/cjs/object/index.d.ts.map +1 -1
  44. package/cjs/object/index.js.map +1 -1
  45. package/cjs/testing/test_type.d.ts +277 -276
  46. package/cjs/testing/test_type.d.ts.map +1 -1
  47. package/cjs/testing/test_type.js.map +1 -1
  48. package/cjs/tuple/common_prop_keys.d.ts +15 -10
  49. package/cjs/tuple/common_prop_keys.d.ts.map +1 -1
  50. package/cjs/tuple/drop.d.ts +45 -26
  51. package/cjs/tuple/drop.d.ts.map +1 -1
  52. package/cjs/tuple/drop.js.map +1 -1
  53. package/cjs/tuple/tuple_plus.common_prop_keys.d.ts +28 -0
  54. package/cjs/tuple/tuple_plus.common_prop_keys.d.ts.map +1 -0
  55. package/cjs/tuple/tuple_plus.common_prop_keys.js +3 -0
  56. package/cjs/tuple/tuple_plus.common_prop_keys.js.map +1 -0
  57. package/cjs/tuple/tuple_plus.d.ts +3 -0
  58. package/cjs/tuple/tuple_plus.d.ts.map +1 -1
  59. package/cjs/tuple/tuple_plus.drop_match.d.ts +6 -0
  60. package/cjs/tuple/tuple_plus.drop_match.d.ts.map +1 -0
  61. package/cjs/tuple/tuple_plus.drop_match.js +3 -0
  62. package/cjs/tuple/tuple_plus.drop_match.js.map +1 -0
  63. package/cjs/tuple/tuple_plus.filter.d.ts +2 -2
  64. package/cjs/tuple/tuple_plus.find.d.ts +64 -0
  65. package/cjs/tuple/tuple_plus.find.d.ts.map +1 -0
  66. package/cjs/tuple/tuple_plus.find.js +3 -0
  67. package/cjs/tuple/tuple_plus.find.js.map +1 -0
  68. package/cjs/tuple/tuple_plus.pad_start.d.ts +7 -6
  69. package/cjs/tuple/tuple_plus.pad_start.d.ts.map +1 -1
  70. package/cjs/tuple/tuple_type.d.ts +41 -23
  71. package/cjs/tuple/tuple_type.d.ts.map +1 -1
  72. package/cjs/union/union.d.ts +33 -0
  73. package/cjs/union/union.d.ts.map +1 -0
  74. package/cjs/union/union.js +3 -0
  75. package/cjs/union/union.js.map +1 -0
  76. package/cjs/unknown/unknown_type.d.ts +12 -0
  77. package/cjs/unknown/unknown_type.d.ts.map +1 -1
  78. package/cjs/utils/options.d.ts +10 -0
  79. package/cjs/utils/options.d.ts.map +1 -0
  80. package/cjs/utils/options.js +3 -0
  81. package/cjs/utils/options.js.map +1 -0
  82. package/esm/array/array.entries.d.ts +4 -3
  83. package/esm/array/array.entries.d.ts.map +1 -1
  84. package/esm/array/array_index.d.ts +4 -1
  85. package/esm/array/array_index.d.ts.map +1 -1
  86. package/esm/array/array_plus.common_prop_keys.d.ts +27 -0
  87. package/esm/array/array_plus.common_prop_keys.d.ts.map +1 -0
  88. package/esm/array/array_plus.common_prop_keys.js +2 -0
  89. package/esm/array/array_plus.common_prop_keys.js.map +1 -0
  90. package/esm/array/array_plus.d.ts +6 -3
  91. package/esm/array/array_plus.d.ts.map +1 -1
  92. package/esm/array/array_plus.drop_match.d.ts +4 -0
  93. package/esm/array/array_plus.drop_match.d.ts.map +1 -0
  94. package/esm/array/array_plus.drop_match.js +2 -0
  95. package/esm/array/array_plus.drop_match.js.map +1 -0
  96. package/esm/array/array_plus.element_match.d.ts +44 -0
  97. package/esm/array/array_plus.element_match.d.ts.map +1 -0
  98. package/esm/array/array_plus.element_match.js +2 -0
  99. package/esm/array/array_plus.element_match.js.map +1 -0
  100. package/esm/array/array_plus.find.d.ts +57 -0
  101. package/esm/array/array_plus.find.d.ts.map +1 -0
  102. package/esm/array/array_plus.find.js +2 -0
  103. package/esm/array/array_plus.find.js.map +1 -0
  104. package/esm/array/array_plus.split_at.d.ts +20 -15
  105. package/esm/array/array_plus.split_at.d.ts.map +1 -1
  106. package/esm/array/find_first.d.ts +62 -0
  107. package/esm/array/find_first.d.ts.map +1 -0
  108. package/esm/array/find_first.js +2 -0
  109. package/esm/array/find_first.js.map +1 -0
  110. package/esm/array/head.d.ts +18 -6
  111. package/esm/array/head.d.ts.map +1 -1
  112. package/esm/array/last.d.ts +17 -6
  113. package/esm/array/last.d.ts.map +1 -1
  114. package/esm/assertion/assert_type.d.ts +4 -1
  115. package/esm/assertion/assert_type.d.ts.map +1 -1
  116. package/esm/assertion/assert_type.js.map +1 -1
  117. package/esm/index.d.ts +5 -2
  118. package/esm/index.d.ts.map +1 -1
  119. package/esm/index.js.map +1 -1
  120. package/esm/never/never_type.d.ts +11 -0
  121. package/esm/never/never_type.d.ts.map +1 -1
  122. package/esm/object/index.d.ts +0 -1
  123. package/esm/object/index.d.ts.map +1 -1
  124. package/esm/object/index.js.map +1 -1
  125. package/esm/testing/test_type.d.ts +277 -276
  126. package/esm/testing/test_type.d.ts.map +1 -1
  127. package/esm/testing/test_type.js.map +1 -1
  128. package/esm/tuple/common_prop_keys.d.ts +15 -10
  129. package/esm/tuple/common_prop_keys.d.ts.map +1 -1
  130. package/esm/tuple/drop.d.ts +45 -26
  131. package/esm/tuple/drop.d.ts.map +1 -1
  132. package/esm/tuple/drop.js.map +1 -1
  133. package/esm/tuple/tuple_plus.common_prop_keys.d.ts +28 -0
  134. package/esm/tuple/tuple_plus.common_prop_keys.d.ts.map +1 -0
  135. package/esm/tuple/tuple_plus.common_prop_keys.js +2 -0
  136. package/esm/tuple/tuple_plus.common_prop_keys.js.map +1 -0
  137. package/esm/tuple/tuple_plus.d.ts +3 -0
  138. package/esm/tuple/tuple_plus.d.ts.map +1 -1
  139. package/esm/tuple/tuple_plus.drop_match.d.ts +6 -0
  140. package/esm/tuple/tuple_plus.drop_match.d.ts.map +1 -0
  141. package/esm/tuple/tuple_plus.drop_match.js +2 -0
  142. package/esm/tuple/tuple_plus.drop_match.js.map +1 -0
  143. package/esm/tuple/tuple_plus.filter.d.ts +2 -2
  144. package/esm/tuple/tuple_plus.find.d.ts +64 -0
  145. package/esm/tuple/tuple_plus.find.d.ts.map +1 -0
  146. package/esm/tuple/tuple_plus.find.js +2 -0
  147. package/esm/tuple/tuple_plus.find.js.map +1 -0
  148. package/esm/tuple/tuple_plus.pad_start.d.ts +7 -6
  149. package/esm/tuple/tuple_plus.pad_start.d.ts.map +1 -1
  150. package/esm/tuple/tuple_type.d.ts +41 -23
  151. package/esm/tuple/tuple_type.d.ts.map +1 -1
  152. package/esm/union/union.d.ts +33 -0
  153. package/esm/union/union.d.ts.map +1 -0
  154. package/esm/union/union.js +2 -0
  155. package/esm/union/union.js.map +1 -0
  156. package/esm/unknown/unknown_type.d.ts +12 -0
  157. package/esm/unknown/unknown_type.d.ts.map +1 -1
  158. package/esm/utils/options.d.ts +10 -0
  159. package/esm/utils/options.d.ts.map +1 -0
  160. package/esm/utils/options.js +2 -0
  161. package/esm/utils/options.js.map +1 -0
  162. package/package.json +12 -1
  163. package/ts/array/array.entries.ts +4 -2
  164. package/ts/array/array_index.ts +33 -23
  165. package/ts/array/array_plus.common_prop_keys.ts +35 -0
  166. package/ts/array/array_plus.drop_match.ts +16 -0
  167. package/ts/array/array_plus.element_match.ts +61 -0
  168. package/ts/array/array_plus.find.ts +71 -0
  169. package/ts/array/array_plus.split_at.ts +52 -23
  170. package/ts/array/array_plus.ts +6 -3
  171. package/ts/array/find_first.ts +71 -0
  172. package/ts/array/head.ts +28 -6
  173. package/ts/array/last.ts +26 -6
  174. package/ts/array/readme.md +152 -32
  175. package/ts/assertion/assert_type.ts +4 -1
  176. package/ts/assertion/readme.md +3 -2
  177. package/ts/index.ts +5 -5
  178. package/ts/never/never_type.ts +13 -0
  179. package/ts/object/index.ts +0 -1
  180. package/ts/testing/test_type.ts +279 -277
  181. package/ts/tuple/common_prop_keys.ts +18 -32
  182. package/ts/tuple/drop.ts +61 -60
  183. package/ts/tuple/readme.md +178 -39
  184. package/ts/tuple/tuple_plus.common_prop_keys.ts +47 -0
  185. package/ts/tuple/tuple_plus.drop_match.ts +20 -0
  186. package/ts/tuple/tuple_plus.filter.ts +2 -2
  187. package/ts/tuple/tuple_plus.find.ts +88 -0
  188. package/ts/tuple/tuple_plus.pad_start.ts +28 -25
  189. package/ts/tuple/tuple_plus.ts +3 -0
  190. package/ts/tuple/tuple_type.ts +67 -25
  191. package/ts/union/readme.md +81 -0
  192. package/ts/union/union.ts +37 -0
  193. package/ts/unknown/unknown_type.ts +13 -0
  194. package/ts/utils/options.ts +10 -0
  195. package/cjs/array/array.find.d.ts +0 -23
  196. package/cjs/array/array.find.d.ts.map +0 -1
  197. package/cjs/array/array.find.js.map +0 -1
  198. package/esm/array/array.find.d.ts +0 -23
  199. package/esm/array/array.find.d.ts.map +0 -1
  200. package/esm/array/array.find.js +0 -2
  201. package/esm/array/array.find.js.map +0 -1
  202. package/ts/array/array.find.ts +0 -34
@@ -1 +1 @@
1
- {"version":3,"file":"common_prop_keys.d.ts","sourceRoot":"","sources":["../../ts/tuple/common_prop_keys.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AACrD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAErC;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,cAAc,CACzB,CAAC,SAAS,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,EACrC,KAAK,SAAS;IACb,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,cAAc,CAAC,EAAE,OAAO,CAAA;CACxB,GAAG;IACH,KAAK,EAAE,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,SAAS,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,KAAK,CAAC;IACpF,cAAc,EAAE,KAAK,CAAA;CACrB,IACE,MAAM,SAAS,CAAC,CAAC,QAAQ,CAAC,GAC3B,KAAK,CAAC,OAAO,CAAC,GACd,CACD,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,GACnB,KAAK,CAAC,gBAAgB,CAAC,GACvB,CACD,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,GACnB,MAAM,CAAC,CAAC,CAAC,CAAC,GACV,CACD,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,GACnB,CACD,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,GACrC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC,GAC3C,KAAK,CACP,GACC,CACD,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,GACrE,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC,GAC3C,KAAK,CACP,CACD,CACD,CACD,CAAA;AAEF;;;;GAIG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,IAAI,cAAc,CAAC,CAAC,CAAC,CAAA"}
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"}
@@ -1,12 +1,13 @@
1
- import type { IsEqual } from '../equal/equal.js';
2
- import type { NonNull, NonUndefined } from '../utils/index.js';
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
3
  /**
4
+ * ⚗️ *transform*
5
+ * 🔢 *customizable*
6
+ *
4
7
  * Drops the first entry in the tuple `T`.
5
8
  *
6
9
  * If the type is an array, the same array will be returned.
7
10
  *
8
- * ⚗️ *transform*
9
- *
10
11
  * @example
11
12
  * ```ts
12
13
  * type R = DropFirst<[1, 2, 3]> // [2, 3]
@@ -14,21 +15,32 @@ import type { NonNull, NonUndefined } from '../utils/index.js';
14
15
  * type R = DropFirst<[]> // []
15
16
  * type R = DropFirst<string[]> // string[]
16
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 `[]`.
17
24
  */
18
- export type DropFirst<T extends unknown[], Cases extends {
19
- 'array'?: unknown;
20
- 'empty_tuple'?: unknown;
21
- } = {
22
- 'array': T;
23
- 'empty_tuple': [];
24
- }> = number extends T['length'] ? Cases['array'] : T['length'] extends 0 ? Cases['empty_tuple'] : T['length'] extends 1 ? [] : T extends [any, ...infer Tail] ? Tail : never;
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
+ }
25
36
  /**
37
+ * ⚗️ *transform*
38
+ * 🔢 *customizable*
39
+ *
26
40
  * Drops the last entry in the tuple `T`.
27
41
  *
28
42
  * If the type is an array, the same array will be returned.
29
43
  *
30
- * ⚗️ *transform*
31
- *
32
44
  * @example
33
45
  * ```ts
34
46
  * type R = DropLast<[1, 2, 3]> // [2, 3]
@@ -36,20 +48,29 @@ export type DropFirst<T extends unknown[], Cases extends {
36
48
  * type R = DropLast<[]> // []
37
49
  * type R = DropLast<string[]> // string[]
38
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 `[]`.
39
57
  */
40
- export type DropLast<T extends unknown[], Cases extends {
41
- 'array'?: unknown;
42
- 'empty_tuple'?: unknown;
43
- } = {
44
- 'array': T;
45
- 'empty_tuple': [];
46
- }> = number extends T['length'] ? Cases['array'] : T['length'] extends 0 ? Cases['empty_tuple'] : T['length'] extends 1 ? [] : T extends [...infer Heads, any] ? Heads : never;
47
- type ExcludeUnionOfEmptyTuple<A> = IsEqual<A, []> extends true ? A : Exclude<A, []>;
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
+ }
48
69
  /**
49
- * drops entries matching `Criteria` in array or tuple `A`.
50
- *
51
70
  * ⚗️ *transform*
52
71
  *
72
+ * Drops entries matching `Criteria` in array or tuple `A`.
73
+ *
53
74
  * @example
54
75
  * ```ts
55
76
  * type R = DropMatch<Array<string | undefined>, undefined> // string[]
@@ -57,8 +78,7 @@ type ExcludeUnionOfEmptyTuple<A> = IsEqual<A, []> extends true ? A : Exclude<A,
57
78
  * type R = DropMatch<Array<1 | 2>, number> // never[]
58
79
  * ```
59
80
  */
60
- export type DropMatch<A extends Readonly<Array<unknown>>, Criteria> = number extends A['length'] ? A[0] extends Criteria ? never[] : undefined extends Criteria ? null extends Criteria ? Array<NonNullable<A[0]>> : Array<NonUndefined<A[0]>> : null extends Criteria ? Array<NonNull<A[0]>> : Criteria extends A[0] ? Array<Exclude<A[0], Criteria>> : A[0] extends Criteria ? A : Array<Exclude<A[0], Criteria>> : DropMatchTuple<A, Criteria>;
61
- type DropMatchTuple<A extends Readonly<Array<any>>, Criteria> = A['length'] extends 0 ? A : A extends readonly [infer Head, ...infer Tail] ? Tail['length'] extends 0 ? undefined extends Criteria ? ExcludeUnionOfEmptyTuple<Head extends Criteria ? [] : [Head]> : ExcludeUnionOfEmptyTuple<Head extends Criteria ? [] : [Head]> : Exclude<Head, Criteria> extends never ? DropMatch<Tail, Criteria> : [Exclude<Head, Criteria>, ...DropMatch<Tail, Criteria>] : never[];
81
+ export type DropMatch<A extends Readonly<Array<unknown>>, Criteria> = number extends A['length'] ? ArrayDropMatch<A, Criteria> : TupleDropMatch<A, Criteria>;
62
82
  export type DropNull<A extends Array<any>> = DropMatch<A, null>;
63
83
  export type DropNullable<A extends Array<any>> = DropMatch<A, null | undefined>;
64
84
  export type DropUndefined<A extends Array<any>> = DropMatch<A, undefined>;
@@ -68,5 +88,4 @@ export type DropUndefined<A extends Array<any>> = DropMatch<A, undefined>;
68
88
  * 💀 *deprecated* the type does not sufficiently cover the use cases.
69
89
  */
70
90
  export declare function drop<A extends Readonly<unknown[]>, const C>(array: A, value: C): DropMatch<A, C>;
71
- export {};
72
91
  //# sourceMappingURL=drop.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"drop.d.ts","sourceRoot":"","sources":["../../ts/tuple/drop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAE9D;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,KAAK,SAAS;IACxD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;CACxB,GAAG;IACH,OAAO,EAAE,CAAC,CAAC;IACX,aAAa,EAAE,EAAE,CAAC;CAClB,IAAI,MAAM,SAAS,CAAC,CAAC,QAAQ,CAAC,GAC5B,KAAK,CAAC,OAAO,CAAC,GACd,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,GACrB,KAAK,CAAC,aAAa,CAAC,GACpB,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,GACrB,EAAE,GACF,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,GAC9B,IAAI,GACJ,KAAK,CAAA;AAER;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,KAAK,SAAS;IACvD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;CACxB,GAAG;IACH,OAAO,EAAE,CAAC,CAAC;IACX,aAAa,EAAE,EAAE,CAAC;CAClB,IAAI,MAAM,SAAS,CAAC,CAAC,QAAQ,CAAC,GAC5B,KAAK,CAAC,OAAO,CAAC,GACd,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,GACrB,KAAK,CAAC,aAAa,CAAC,GACpB,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,GACrB,EAAE,GACF,CAAC,SAAS,CAAC,GAAG,MAAM,KAAK,EAAE,GAAG,CAAC,GAC/B,KAAK,GACL,KAAK,CAAA;AAER,KAAK,wBAAwB,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,IAAI,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;AAEnF;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,IAAI,MAAM,SAAS,CAAC,CAAC,QAAQ,CAAC,GAE/F,CAAC,CAAC,CAAC,CAAC,SAAS,QAAQ,GAErB,KAAK,EAAE,GACL,SAAS,SAAS,QAAQ,GAC1B,IAAI,SAAS,QAAQ,GACrB,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACxB,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACzB,IAAI,SAAS,QAAQ,GACrB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACpB,QAAQ,SAAS,CAAC,CAAC,CAAC,CAAC,GACrB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,GAC9B,CAAC,CAAC,CAAC,CAAC,SAAS,QAAQ,GACrB,CAAC,GACD,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,GAC9B,cAAc,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAA;AAE9B,KAAK,cAAc,CAAC,CAAC,SAAS,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,GAEpF,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,wBAAwB,CAAC,IAAI,SAAS,QAAQ,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,GAC7D,wBAAwB,CAAC,IAAI,SAAS,QAAQ,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,GAE/D,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,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,EAAG,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,SAAS,CAAG,CAAC,EAAE,CAAC,CAAE,CAEpG"}
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"}
@@ -1 +1 @@
1
- {"version":3,"file":"drop.js","sourceRoot":"","sources":["../../ts/tuple/drop.ts"],"names":[],"mappings":";;;AAoHA;;;;GAIG;AACH,SAAgB,IAAI,CAA0C,KAAQ,EAAE,KAAQ;IAC/E,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,KAAK,CAAoB,CAAA;AACzD,CAAC;AAFD,oBAEC"}
1
+ {"version":3,"file":"drop.js","sourceRoot":"","sources":["../../ts/tuple/drop.ts"],"names":[],"mappings":";;;AAqHA;;;;GAIG;AACH,SAAgB,IAAI,CAAyC,KAAQ,EAAE,KAAQ;IAC9E,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,KAAK,CAAoB,CAAA;AACzD,CAAC;AAFD,oBAEC"}
@@ -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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# 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,3 +1,6 @@
1
+ export type { CommonPropKeys } from './tuple_plus.common_prop_keys.js';
2
+ export type { DropMatch } from './tuple_plus.drop_match.js';
1
3
  export type { Filter } from './tuple_plus.filter.js';
4
+ export type { Find } from './tuple_plus.find.js';
2
5
  export type { PadStart } from './tuple_plus.pad_start.js';
3
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,YAAY,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AACpD,YAAY,EAAE,QAAQ,EAAE,MAAM,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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# 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":""}
@@ -1,8 +1,8 @@
1
1
  /**
2
- * Filter entries matching `Criteria` in tuple `T`.
3
- *
4
2
  * ⚗️ *transform*
5
3
  *
4
+ * Filter entries matching `Criteria` in tuple `T`.
5
+ *
6
6
  * @example
7
7
  * ```ts
8
8
  * type R = Filter<[1, 2, '3'], number> // [1, 2]
@@ -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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# 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":""}
@@ -17,11 +17,12 @@
17
17
  * PadStart<[1, 2, 3], 5> // [unknown, unknown, 1, 2, 3]
18
18
  * ```
19
19
  */
20
- 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, [
21
21
  ]>;
22
- 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] ? ([
23
- Tail,
24
- ...Result
25
- ] 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));
26
- 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
+ }
27
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;;;;;;;;;;;;;;;;;;GAkBG;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,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;IAAC,IAAI;IAAE,GAAG,MAAM;CAAC,SAAS,MAAM,CAAC,SAAS,OAAO,EAAE,GACjD,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,GAC7C,KAAK,CACP,GACC,KAAK,CACP,CACD,GACC,CACD,MAAM,SAAS,EAAE,GACf,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,CAAC,GAChE,CACD,MAAM,SAAS,CAAC,GAAG,MAAM,IAAI,EAAE,MAAM,IAAI,CAAC,GACxC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC,GAC3D,MAAM,CACR,CACD,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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# 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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../ts/utils/options.ts"],"names":[],"mappings":""}
@@ -11,7 +11,8 @@ import type { IsTuple } from '../tuple/tuple_type.js';
11
11
  * ArrayPlus.Entries<[1, 2, 3]> // [[0, 1], [1, 2], [2, 3]]
12
12
  * ```
13
13
  */
14
- export type Entries<A extends unknown[]> = IsTuple<A, Device<A, []>, A extends Array<infer T> ? Array<[number, T]> : never>;
15
- type Device<A extends unknown[], R extends unknown[]> = A['length'] extends 0 ? R : A extends [...infer F, infer N] ? Device<F, [[F['length'], N], ...R]> : never;
16
- export {};
14
+ export type Entries<A extends unknown[]> = IsTuple<A, Entries.Device<A, []>, A extends Array<infer T> ? Array<[number, T]> : never>;
15
+ export declare namespace Entries {
16
+ type Device<A extends unknown[], R extends unknown[]> = A['length'] extends 0 ? R : A extends [...infer F, infer N] ? Device<F, [[F['length'], N], ...R]> : never;
17
+ }
17
18
  //# sourceMappingURL=array.entries.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"array.entries.d.ts","sourceRoot":"","sources":["../../ts/array/array.entries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AACrD;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,OAAO,CAAC,CAAC,SAAS,OAAO,EAAE,IAAI,OAAO,CACjD,CAAC,EACD,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EACb,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CACrD,CAAA;AAED,KAAK,MAAM,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,CAAC,SAAS,OAAO,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,GAC1E,CAAC,GACD,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,GAC/B,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GACnC,KAAK,CAAA"}
1
+ {"version":3,"file":"array.entries.d.ts","sourceRoot":"","sources":["../../ts/array/array.entries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AACrD;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,OAAO,CAAC,CAAC,SAAS,OAAO,EAAE,IAAI,OAAO,CACjD,CAAC,EACD,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EACrB,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CACrD,CAAA;AAED,yBAAiB,OAAO,CAAC;IACxB,KAAY,MAAM,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,CAAC,SAAS,OAAO,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,GAClF,CAAC,GACD,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,GAC/B,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GACnC,KAAK,CAAA;CACP"}
@@ -18,7 +18,10 @@ import type { Negative } from '../numeric/negative.js';
18
18
  * type R = IndexAt<['a', 'b', 'c'], -4> // never
19
19
  * ```
20
20
  */
21
- export type IndexAt<A extends Array<unknown>, N extends number, Fail = never, Upper = A['length'], Lower = 0> = IsEqual<A['length'], 0, Fail, Integer<N, StrictNumberType<A['length'], N, Negative<N, GreaterThan<Abs<N>, A['length']> extends true ? Lower : Subtract<A['length'], Abs<N>>, GreaterThan<A['length'], N> extends true ? N : Upper>>, IsAny<N, number, StrictNumberType<N, N>>>>;
21
+ export type IndexAt<A extends Array<unknown>, N extends number, Fail = never, Upper = A['length'], Lower = 0> = IsNever<A, Fail, IndexAt._<A, N, Fail, Upper, Lower>>;
22
+ export declare namespace IndexAt {
23
+ type _<A extends Array<unknown>, N extends number, Fail = never, Upper = A['length'], Lower = 0> = IsEqual<A['length'], 0, Fail, Integer<N, StrictNumberType<A['length'], N, Negative<N, GreaterThan<Abs<N>, A['length']> extends true ? Lower : Subtract<A['length'], Abs<N>>, GreaterThan<A['length'], N> extends true ? N : Upper>>, IsAny<N, number, StrictNumberType<N, N>>>>;
24
+ }
22
25
  /**
23
26
  * Is N an out of bound index of A.
24
27
  *
@@ -1 +1 @@
1
- {"version":3,"file":"array_index.d.ts","sourceRoot":"","sources":["../../ts/array/array_index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAEtD;;;;;;;;;;GAUG;AACH,MAAM,MAAM,OAAO,CAClB,CAAC,SAAS,KAAK,CAAC,OAAO,CAAC,EACxB,CAAC,SAAS,MAAM,EAChB,IAAI,GAAG,KAAK,EACZ,KAAK,GAAG,CAAC,CAAC,QAAQ,CAAC,EACnB,KAAK,GAAG,CAAC,IACN,OAAO,CACV,CAAC,CAAC,QAAQ,CAAC,EACX,CAAC,EACD,IAAI,EACJ,OAAO,CACN,CAAC,EACD,gBAAgB,CACf,CAAC,CAAC,QAAQ,CAAC,EAEX,CAAC,EAED,QAAQ,CACP,CAAC,EACD,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,IAAI,GAAG,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EACrF,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,IAAI,GAAG,CAAC,GAAG,KAAK,CACpD,CACD,EAED,KAAK,CACJ,CAAC,EACD,MAAM,EACN,gBAAgB,CACf,CAAC,EAED,CAAC,CACD,CACD,CACD,CACD,CAAA;AAED;;;;;;;;;;GAUG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,CAAC,SAAS,MAAM,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,KAAK,IAAI,OAAO,CACxG,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAClC,IAAI,EACJ,IAAI,CACJ,CAAA"}
1
+ {"version":3,"file":"array_index.d.ts","sourceRoot":"","sources":["../../ts/array/array_index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAEtD;;;;;;;;;;GAUG;AACH,MAAM,MAAM,OAAO,CAClB,CAAC,SAAS,KAAK,CAAC,OAAO,CAAC,EACxB,CAAC,SAAS,MAAM,EAChB,IAAI,GAAG,KAAK,EACZ,KAAK,GAAG,CAAC,CAAC,QAAQ,CAAC,EACnB,KAAK,GAAG,CAAC,IACN,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAA;AAEzD,yBAAiB,OAAO,CAAC;IACxB,KAAY,CAAC,CACZ,CAAC,SAAS,KAAK,CAAC,OAAO,CAAC,EACxB,CAAC,SAAS,MAAM,EAChB,IAAI,GAAG,KAAK,EACZ,KAAK,GAAG,CAAC,CAAC,QAAQ,CAAC,EACnB,KAAK,GAAG,CAAC,IACN,OAAO,CACV,CAAC,CAAC,QAAQ,CAAC,EACX,CAAC,EACD,IAAI,EACJ,OAAO,CACN,CAAC,EACD,gBAAgB,CACf,CAAC,CAAC,QAAQ,CAAC,EAEX,CAAC,EAED,QAAQ,CACP,CAAC,EACD,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,IAAI,GAAG,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EACrF,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,IAAI,GAAG,CAAC,GAAG,KAAK,CACpD,CACD,EAED,KAAK,CACJ,CAAC,EACD,MAAM,EACN,gBAAgB,CACf,CAAC,EAED,CAAC,CACD,CACD,CACD,CACD,CAAA;CACD;AAED;;;;;;;;;;GAUG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,CAAC,SAAS,MAAM,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,KAAK,IAAI,OAAO,CACxG,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAClC,IAAI,EACJ,IAAI,CACJ,CAAA"}