type-plus 6.5.0 → 6.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 (198) hide show
  1. package/README.md +27 -15
  2. package/cjs/any/any_or_never.d.ts +0 -2
  3. package/cjs/any/any_or_never.d.ts.map +1 -1
  4. package/cjs/any/any_type.d.ts +2 -6
  5. package/cjs/any/any_type.d.ts.map +1 -1
  6. package/cjs/array/array.d.ts +0 -4
  7. package/cjs/array/array.d.ts.map +1 -1
  8. package/cjs/array/array_index.d.ts +7 -10
  9. package/cjs/array/array_index.d.ts.map +1 -1
  10. package/cjs/array/array_type.d.ts +0 -8
  11. package/cjs/array/array_type.d.ts.map +1 -1
  12. package/cjs/bigint/bigint_type.d.ts +4 -12
  13. package/cjs/bigint/bigint_type.d.ts.map +1 -1
  14. package/cjs/bigint/strict_bigint_type.d.ts +4 -12
  15. package/cjs/bigint/strict_bigint_type.d.ts.map +1 -1
  16. package/cjs/boolean/boolean_type.d.ts +0 -8
  17. package/cjs/boolean/boolean_type.d.ts.map +1 -1
  18. package/cjs/boolean/false_type.d.ts +0 -8
  19. package/cjs/boolean/false_type.d.ts.map +1 -1
  20. package/cjs/boolean/strict_boolean_type.d.ts +0 -8
  21. package/cjs/boolean/strict_boolean_type.d.ts.map +1 -1
  22. package/cjs/boolean/true_type.d.ts +0 -8
  23. package/cjs/boolean/true_type.d.ts.map +1 -1
  24. package/cjs/equal/equal.d.ts +4 -5
  25. package/cjs/equal/equal.d.ts.map +1 -1
  26. package/cjs/function/function_type.d.ts +0 -8
  27. package/cjs/function/function_type.d.ts.map +1 -1
  28. package/cjs/function/strict_function_type.d.ts +0 -8
  29. package/cjs/function/strict_function_type.d.ts.map +1 -1
  30. package/cjs/index.d.ts +2 -0
  31. package/cjs/index.d.ts.map +1 -1
  32. package/cjs/index.js.map +1 -1
  33. package/cjs/never/never_type.d.ts +2 -10
  34. package/cjs/never/never_type.d.ts.map +1 -1
  35. package/cjs/null/null_type.d.ts +4 -12
  36. package/cjs/null/null_type.d.ts.map +1 -1
  37. package/cjs/number/integer.d.ts +1 -9
  38. package/cjs/number/integer.d.ts.map +1 -1
  39. package/cjs/number/negative.d.ts +0 -8
  40. package/cjs/number/negative.d.ts.map +1 -1
  41. package/cjs/number/number_type.d.ts +0 -8
  42. package/cjs/number/number_type.d.ts.map +1 -1
  43. package/cjs/number/numeric_type.d.ts +0 -8
  44. package/cjs/number/numeric_type.d.ts.map +1 -1
  45. package/cjs/number/positive.d.ts +1 -9
  46. package/cjs/number/positive.d.ts.map +1 -1
  47. package/cjs/number/strict_number_type.d.ts +4 -12
  48. package/cjs/number/strict_number_type.d.ts.map +1 -1
  49. package/cjs/object/object_type.d.ts +1 -9
  50. package/cjs/object/object_type.d.ts.map +1 -1
  51. package/cjs/string/strict_string_type.d.ts +14 -19
  52. package/cjs/string/strict_string_type.d.ts.map +1 -1
  53. package/cjs/string/string.d.ts +24 -0
  54. package/cjs/string/string.d.ts.map +1 -0
  55. package/cjs/string/string.js +3 -0
  56. package/cjs/string/string.js.map +1 -0
  57. package/cjs/string/string_plus.d.ts +27 -0
  58. package/cjs/string/string_plus.d.ts.map +1 -0
  59. package/cjs/string/string_plus.js +3 -0
  60. package/cjs/string/string_plus.js.map +1 -0
  61. package/cjs/string/string_type.d.ts +4 -12
  62. package/cjs/string/string_type.d.ts.map +1 -1
  63. package/cjs/symbol/symbol_type.d.ts +5 -15
  64. package/cjs/symbol/symbol_type.d.ts.map +1 -1
  65. package/cjs/tuple/tuple_type.d.ts +0 -8
  66. package/cjs/tuple/tuple_type.d.ts.map +1 -1
  67. package/cjs/type/failed.d.ts +2 -3
  68. package/cjs/type/failed.d.ts.map +1 -1
  69. package/cjs/type/failed.js +0 -1
  70. package/cjs/type/failed.js.map +1 -1
  71. package/cjs/undefined/undefined_type.d.ts +4 -12
  72. package/cjs/undefined/undefined_type.d.ts.map +1 -1
  73. package/cjs/unknown/unknown_type.d.ts +4 -12
  74. package/cjs/unknown/unknown_type.d.ts.map +1 -1
  75. package/cjs/void/void_type.d.ts +0 -8
  76. package/cjs/void/void_type.d.ts.map +1 -1
  77. package/esm/any/any_or_never.d.ts +0 -2
  78. package/esm/any/any_or_never.d.ts.map +1 -1
  79. package/esm/any/any_type.d.ts +2 -6
  80. package/esm/any/any_type.d.ts.map +1 -1
  81. package/esm/array/array.d.ts +0 -4
  82. package/esm/array/array.d.ts.map +1 -1
  83. package/esm/array/array_index.d.ts +7 -10
  84. package/esm/array/array_index.d.ts.map +1 -1
  85. package/esm/array/array_type.d.ts +0 -8
  86. package/esm/array/array_type.d.ts.map +1 -1
  87. package/esm/bigint/bigint_type.d.ts +4 -12
  88. package/esm/bigint/bigint_type.d.ts.map +1 -1
  89. package/esm/bigint/strict_bigint_type.d.ts +4 -12
  90. package/esm/bigint/strict_bigint_type.d.ts.map +1 -1
  91. package/esm/boolean/boolean_type.d.ts +0 -8
  92. package/esm/boolean/boolean_type.d.ts.map +1 -1
  93. package/esm/boolean/false_type.d.ts +0 -8
  94. package/esm/boolean/false_type.d.ts.map +1 -1
  95. package/esm/boolean/strict_boolean_type.d.ts +0 -8
  96. package/esm/boolean/strict_boolean_type.d.ts.map +1 -1
  97. package/esm/boolean/true_type.d.ts +0 -8
  98. package/esm/boolean/true_type.d.ts.map +1 -1
  99. package/esm/equal/equal.d.ts +4 -5
  100. package/esm/equal/equal.d.ts.map +1 -1
  101. package/esm/function/function_type.d.ts +0 -8
  102. package/esm/function/function_type.d.ts.map +1 -1
  103. package/esm/function/strict_function_type.d.ts +0 -8
  104. package/esm/function/strict_function_type.d.ts.map +1 -1
  105. package/esm/index.d.ts +2 -0
  106. package/esm/index.d.ts.map +1 -1
  107. package/esm/index.js.map +1 -1
  108. package/esm/never/never_type.d.ts +2 -10
  109. package/esm/never/never_type.d.ts.map +1 -1
  110. package/esm/null/null_type.d.ts +4 -12
  111. package/esm/null/null_type.d.ts.map +1 -1
  112. package/esm/number/integer.d.ts +1 -9
  113. package/esm/number/integer.d.ts.map +1 -1
  114. package/esm/number/negative.d.ts +0 -8
  115. package/esm/number/negative.d.ts.map +1 -1
  116. package/esm/number/number_type.d.ts +0 -8
  117. package/esm/number/number_type.d.ts.map +1 -1
  118. package/esm/number/numeric_type.d.ts +0 -8
  119. package/esm/number/numeric_type.d.ts.map +1 -1
  120. package/esm/number/positive.d.ts +1 -9
  121. package/esm/number/positive.d.ts.map +1 -1
  122. package/esm/number/strict_number_type.d.ts +4 -12
  123. package/esm/number/strict_number_type.d.ts.map +1 -1
  124. package/esm/object/object_type.d.ts +1 -9
  125. package/esm/object/object_type.d.ts.map +1 -1
  126. package/esm/string/strict_string_type.d.ts +14 -19
  127. package/esm/string/strict_string_type.d.ts.map +1 -1
  128. package/esm/string/string.d.ts +24 -0
  129. package/esm/string/string.d.ts.map +1 -0
  130. package/esm/string/string.js +2 -0
  131. package/esm/string/string.js.map +1 -0
  132. package/esm/string/string_plus.d.ts +27 -0
  133. package/esm/string/string_plus.d.ts.map +1 -0
  134. package/esm/string/string_plus.js +2 -0
  135. package/esm/string/string_plus.js.map +1 -0
  136. package/esm/string/string_type.d.ts +4 -12
  137. package/esm/string/string_type.d.ts.map +1 -1
  138. package/esm/symbol/symbol_type.d.ts +5 -15
  139. package/esm/symbol/symbol_type.d.ts.map +1 -1
  140. package/esm/tuple/tuple_type.d.ts +0 -8
  141. package/esm/tuple/tuple_type.d.ts.map +1 -1
  142. package/esm/type/failed.d.ts +2 -3
  143. package/esm/type/failed.d.ts.map +1 -1
  144. package/esm/type/failed.js +1 -1
  145. package/esm/type/failed.js.map +1 -1
  146. package/esm/undefined/undefined_type.d.ts +4 -12
  147. package/esm/undefined/undefined_type.d.ts.map +1 -1
  148. package/esm/unknown/unknown_type.d.ts +4 -12
  149. package/esm/unknown/unknown_type.d.ts.map +1 -1
  150. package/esm/void/void_type.d.ts +0 -8
  151. package/esm/void/void_type.d.ts.map +1 -1
  152. package/package.json +2 -2
  153. package/ts/any/any_or_never.ts +0 -2
  154. package/ts/any/any_type.ts +2 -6
  155. package/ts/array/array.ts +0 -4
  156. package/ts/array/array_index.ts +7 -10
  157. package/ts/array/array_type.ts +0 -8
  158. package/ts/bigint/bigint_type.ts +4 -12
  159. package/ts/bigint/strict_bigint_type.ts +4 -12
  160. package/ts/boolean/boolean_type.ts +0 -8
  161. package/ts/boolean/false_type.ts +0 -8
  162. package/ts/boolean/strict_boolean_type.ts +0 -8
  163. package/ts/boolean/true_type.ts +0 -8
  164. package/ts/equal/equal.ts +9 -5
  165. package/ts/equal/readme.md +3 -0
  166. package/ts/function/function_type.ts +0 -8
  167. package/ts/function/strict_function_type.ts +0 -8
  168. package/ts/index.ts +2 -0
  169. package/ts/never/never_type.ts +2 -10
  170. package/ts/null/null_type.ts +4 -12
  171. package/ts/number/integer.ts +1 -9
  172. package/ts/number/negative.ts +0 -8
  173. package/ts/number/number_type.ts +0 -8
  174. package/ts/number/numeric_type.ts +0 -8
  175. package/ts/number/positive.ts +1 -9
  176. package/ts/number/strict_number_type.ts +4 -12
  177. package/ts/object/object_type.ts +1 -9
  178. package/ts/string/readme.md +5 -0
  179. package/ts/string/strict_string_type.ts +15 -19
  180. package/ts/string/string.ts +36 -0
  181. package/ts/string/string_plus.ts +33 -0
  182. package/ts/string/string_type.ts +4 -12
  183. package/ts/symbol/symbol_type.ts +5 -17
  184. package/ts/tuple/tuple_type.ts +0 -8
  185. package/ts/type/failed.ts +1 -3
  186. package/ts/type/readme.md +22 -0
  187. package/ts/undefined/undefined_type.ts +4 -12
  188. package/ts/unknown/unknown_type.ts +4 -12
  189. package/ts/void/void_type.ts +0 -8
  190. package/cjs/type/constants.d.ts +0 -5
  191. package/cjs/type/constants.d.ts.map +0 -1
  192. package/cjs/type/constants.js +0 -8
  193. package/cjs/type/constants.js.map +0 -1
  194. package/esm/type/constants.d.ts +0 -5
  195. package/esm/type/constants.d.ts.map +0 -1
  196. package/esm/type/constants.js +0 -5
  197. package/esm/type/constants.js.map +0 -1
  198. package/ts/type/constants.ts +0 -4
@@ -11,14 +11,12 @@ import type { StrictNumberType } from '../number/strict_number_type.js'
11
11
  /**
12
12
  * Gets the normalized index to access the element of an array or tuple.
13
13
  *
14
- * ```
15
- * import type { ArrayPlus } from 'type-plus'
16
- *
17
- * type R = ArrayPlus.IndexAt<['a', 'b', 'c'], 2> // 2
18
- * type R = ArrayPlus.IndexAt<['a', 'b', 'c'], -2> // 1
14
+ * ```ts
15
+ * type R = IndexAt<['a', 'b', 'c'], 2> // 2
16
+ * type R = IndexAt<['a', 'b', 'c'], -2> // 1
19
17
  *
20
- * type R = ArrayPlus.IndexAt<['a', 'b', 'c'], 3> // never
21
- * type R = ArrayPlus.IndexAt<['a', 'b', 'c'], -4> // never
18
+ * type R = IndexAt<['a', 'b', 'c'], 3> // never
19
+ * type R = IndexAt<['a', 'b', 'c'], -4> // never
22
20
  * ```
23
21
  */
24
22
  export type IndexAt<A extends Array<unknown>, N extends number, Fail = never> = Equal<
@@ -54,14 +52,13 @@ export type IndexAt<A extends Array<unknown>, N extends number, Fail = never> =
54
52
  /**
55
53
  * Is N an out of bound index of A.
56
54
  *
57
- * ```
58
- * import { IsIndexOutOfBound } from 'type-plus'
59
- *
55
+ * ```ts
60
56
  * type R = IsIndexOutOfBound<[1], 0> // false
61
57
  * type R = IsIndexOutOfBound<[1], -1> // false
62
58
 
63
59
  * type R = IsIndexOutOfBound<[1], 1> // true
64
60
  * type R = IsIndexOutOfBound<[1], -2> // true
61
+ * ```
65
62
  */
66
63
  export type IsIndexOutOfBound<A extends unknown[], N extends number, Then = true, Else = false> = IsNever<
67
64
  IndexAt<A, N>,
@@ -5,8 +5,6 @@ import type { StrictNumberType } from '../number/strict_number_type.js'
5
5
  * Check if the type `T` is an array and not a tuple.
6
6
  *
7
7
  * ```ts
8
- * import type { ArrayType } from 'type-plus'
9
- *
10
8
  * type R = ArrayType<number[]> // number[]
11
9
  *
12
10
  * type R = ArrayType<[1]> // never
@@ -22,8 +20,6 @@ export type ArrayType<T, Then = T, Else = never> = IsNever<
22
20
  * Check if the type `T` is not an array.
23
21
  *
24
22
  * ```ts
25
- * import type { NotArrayType } from 'type-plus'
26
- *
27
23
  * type R = NotArrayType<number[]> // never
28
24
  *
29
25
  * type R = NotArrayType<number> // number
@@ -36,8 +32,6 @@ export type NotArrayType<T, Then = T, Else = never> = ArrayType<T, Else, Then>
36
32
  * Is `T` an array?
37
33
  *
38
34
  * ```ts
39
- * import type { IsArray } from 'type-plus'
40
- *
41
35
  * type R = IsArray<number[]> // true
42
36
  *
43
37
  * type R = IsArray<number> // false
@@ -50,8 +44,6 @@ export type IsArray<T, Then = true, Else = false> = ArrayType<T, Then, Else>
50
44
  * Is `T` not an array?
51
45
  *
52
46
  * ```ts
53
- * import type { IsNotArray } from 'type-plus'
54
- *
55
47
  * type R = IsNotArray<number[]> // false
56
48
  *
57
49
  * type R = IsNotArray<number> // true
@@ -3,9 +3,7 @@ import type { IsAnyOrNever } from '../any/any_or_never.js'
3
3
  /**
4
4
  * Check if the type `T` is exactly `bigint`.
5
5
  *
6
- * ```
7
- * import type { BigintType } from 'type-plus'
8
- *
6
+ * ```ts
9
7
  * type R = BigintType<bigint> // bigint
10
8
  *
11
9
  * type R = BigintType<1n> // never
@@ -19,9 +17,7 @@ export type BigintType<T, Then = T, Else = never> = IsAnyOrNever<T, Else, [T] ex
19
17
  /**
20
18
  * Is the type `T` exactly `bigint`.
21
19
  *
22
- * ```
23
- * import type { IsBigint } from 'type-plus'
24
- *
20
+ * ```ts
25
21
  * type R = IsBigint<bigint> // true
26
22
  *
27
23
  * type R = IsBigint<1n> // false
@@ -35,9 +31,7 @@ export type IsBigint<T, Then = true, Else = false> = BigintType<T, Then, Else>
35
31
  /**
36
32
  * Check if the type `T` is not exactly `null`.
37
33
  *
38
- * ```
39
- * import type { NotBigintType } from 'type-plus'
40
- *
34
+ * ```ts
41
35
  * type R = NotBigintType<bigint> // never
42
36
  *
43
37
  * type R = NotBigintType<1n> // 1n
@@ -51,9 +45,7 @@ export type NotBigintType<T, Then = T, Else = never> = BigintType<T, Else, Then>
51
45
  /**
52
46
  * Is the type `T` not exactly `null`.
53
47
  *
54
- * ```
55
- * import type { IsNotBigint } from 'type-plus'
56
- *
48
+ * ```ts
57
49
  * type R = IsNotBigint<bigint> // false
58
50
  *
59
51
  * type R = IsNotBigint<1n> // true
@@ -3,9 +3,7 @@ import type { IsAnyOrNever } from '../any/any_or_never.js'
3
3
  /**
4
4
  * Check if the type `T` is exactly `bigint`.
5
5
  *
6
- * ```
7
- * import type { StrictBigintType } from 'type-plus'
8
- *
6
+ * ```ts
9
7
  * type R = StrictBigintType<bigint> // bigint
10
8
  *
11
9
  * type R = StrictBigintType<1n> // never
@@ -23,9 +21,7 @@ export type StrictBigintType<T, Then = T, Else = never> = IsAnyOrNever<
23
21
  /**
24
22
  * Is the type `T` exactly `bigint`.
25
23
  *
26
- * ```
27
- * import type { IsStrictBigint } from 'type-plus'
28
- *
24
+ * ```ts
29
25
  * type R = IsStrictBigint<bigint> // true
30
26
  *
31
27
  * type R = IsStrictBigint<1n> // false
@@ -39,9 +35,7 @@ export type IsStrictBigint<T, Then = true, Else = false> = StrictBigintType<T, T
39
35
  /**
40
36
  * Check if the type `T` is not exactly `bigint`.
41
37
  *
42
- * ```
43
- * import type { NotStrictBigintType } from 'type-plus'
44
- *
38
+ * ```ts
45
39
  * type R = NotStrictBigintType<bigint> // never
46
40
  *
47
41
  * type R = NotStrictBigintType<1n> // 1n
@@ -55,9 +49,7 @@ export type NotStrictBigintType<T, Then = T, Else = never> = StrictBigintType<T,
55
49
  /**
56
50
  * Is the type `T` not exactly `bigint`.
57
51
  *
58
- * ```
59
- * import type { IsNotStrictBigint } from 'type-plus'
60
- *
52
+ * ```ts
61
53
  * type R = IsNotStrictBigint<bigint> // false
62
54
  *
63
55
  * type R = IsNotStrictBigint<1n> // true
@@ -4,8 +4,6 @@ import type { IsAnyOrNever } from '../any/any_or_never.js'
4
4
  * Check if the type `T` is `boolean`, including `true` and `false`.
5
5
  *
6
6
  * ```ts
7
- * import type { BooleanType } from 'type-plus'
8
- *
9
7
  * type R = BooleanType<boolean> // boolean
10
8
  * type R = BooleanType<true> // true
11
9
  * type R = BooleanType<false> // false
@@ -24,8 +22,6 @@ export type BooleanType<T, Then = T, Else = never> = IsAnyOrNever<
24
22
  * Check if the type `T` is not `boolean`, including `true` and `false`.
25
23
  *
26
24
  * ```ts
27
- * import type { NotBooleanType } from 'type-plus'
28
- *
29
25
  * type R = NotBooleanType<boolean> // never
30
26
  * type R = NotBooleanType<true> // never
31
27
  * type R = NotBooleanType<false> // never
@@ -40,8 +36,6 @@ export type NotBooleanType<T, Then = T, Else = never> = BooleanType<T, Else, The
40
36
  * Is the type `T` `boolean`, including `true` and `false`.
41
37
  *
42
38
  * ```ts
43
- * import type { IsBoolean } from 'type-plus'
44
- *
45
39
  * type R = IsBoolean<boolean> // true
46
40
  * type R = IsBoolean<true> // true
47
41
  * type R = IsBoolean<false> // true
@@ -56,8 +50,6 @@ export type IsBoolean<T, Then = true, Else = false> = BooleanType<T, Then, Else>
56
50
  * Is the type `T` not `boolean`, including `true` and `false`.
57
51
  *
58
52
  * ```ts
59
- * import type { IsNotBoolean } from 'type-plus'
60
- *
61
53
  * type R = IsNotBoolean<boolean> // false
62
54
  * type R = IsNotBoolean<true> // false
63
55
  * type R = IsNotBoolean<false> // false
@@ -4,8 +4,6 @@ import type { IsAnyOrNever } from '../any/any_or_never.js'
4
4
  * Check if the type `T` is exactly `false`.
5
5
  *
6
6
  * ```ts
7
- * import type { FalseType } from 'type-plus'
8
- *
9
7
  * type R = FalseType<false> // false
10
8
  *
11
9
  * type R = FalseType<true> // never
@@ -22,8 +20,6 @@ export type FalseType<T, Then = T, Else = never> = IsAnyOrNever<
22
20
  * Check if the type `T` is not exactly `false`.
23
21
  *
24
22
  * ```ts
25
- * import type { NotFalseType } from 'type-plus'
26
- *
27
23
  * type R = NotFalseType<false> // never
28
24
  *
29
25
  * type R = NotFalseType<true> // true
@@ -36,8 +32,6 @@ export type NotFalseType<T, Then = T, Else = never> = FalseType<T, Else, Then>
36
32
  * Is the type `T` exactly `false`.
37
33
  *
38
34
  * ```ts
39
- * import type { IsFalse } from 'type-plus'
40
- *
41
35
  * type R = IsFalse<false> // true
42
36
  *
43
37
  * type R = IsFalse<true> // false
@@ -50,8 +44,6 @@ export type IsFalse<T, Then = true, Else = false> = FalseType<T, Then, Else>
50
44
  * Is the type `T` not exactly `false`.
51
45
  *
52
46
  * ```ts
53
- * import type { IsNotFalse } from 'type-plus'
54
- *
55
47
  * type R = IsNotFalse<false> // false
56
48
  *
57
49
  * type R = IsNotFalse<true> // true
@@ -4,8 +4,6 @@ import type { IsAnyOrNever } from '../any/any_or_never.js'
4
4
  * Check if the type `T` is exactly `boolean`.
5
5
  *
6
6
  * ```ts
7
- * import type { StrictBooleanType } from 'type-plus'
8
- *
9
7
  * type R = StrictBooleanType<boolean> // true
10
8
  *
11
9
  * type R = StrictBooleanType<true> // never
@@ -23,8 +21,6 @@ export type StrictBooleanType<T, Then = T, Else = never> = IsAnyOrNever<
23
21
  * Check if the type `T` is not exactly `boolean`.
24
22
  *
25
23
  * ```ts
26
- * import type { NotStrictBooleanType } from 'type-plus'
27
- *
28
24
  * type R = NotStrictBooleanType<boolean> // never
29
25
  *
30
26
  * type R = NotStrictBooleanType<true> // true
@@ -38,8 +34,6 @@ export type NotStrictBooleanType<T, Then = T, Else = never> = StrictBooleanType<
38
34
  * Is the type `T` exactly `boolean`.
39
35
  *
40
36
  * ```ts
41
- * import type { IsStrictBoolean } from 'type-plus'
42
- *
43
37
  * type R = IsStrictBoolean<boolean> // true
44
38
  *
45
39
  * type R = IsStrictBoolean<true> // false
@@ -53,8 +47,6 @@ export type IsStrictBoolean<T, Then = true, Else = false> = StrictBooleanType<T,
53
47
  * Is the type `T` not exactly `false`.
54
48
  *
55
49
  * ```ts
56
- * import type { IsNotStrictBoolean } from 'type-plus'
57
- *
58
50
  * type R = IsNotStrictBoolean<boolean> // false
59
51
  *
60
52
  * type R = IsNotStrictBoolean<true> // true
@@ -4,8 +4,6 @@ import type { IsAnyOrNever } from '../any/any_or_never.js'
4
4
  * Check if the type `T` is exactly `true`.
5
5
  *
6
6
  * ```ts
7
- * import type { TrueType } from 'type-plus'
8
- *
9
7
  * type R = TrueType<true> // true
10
8
  *
11
9
  * type R = TrueType<false> // never
@@ -22,8 +20,6 @@ export type TrueType<T, Then = T, Else = never> = IsAnyOrNever<
22
20
  * Check if the type `T` is not exactly `true`.
23
21
  *
24
22
  * ```ts
25
- * import type { NotTrueType } from 'type-plus'
26
- *
27
23
  * type R = NotTrueType<true> // never
28
24
  *
29
25
  * type R = NotTrueType<false> // false
@@ -36,8 +32,6 @@ export type NotTrueType<T, Then = T, Else = never> = TrueType<T, Else, Then>
36
32
  * Is the type `T` exactly `true`.
37
33
  *
38
34
  * ```ts
39
- * import type { IsTrue } from 'type-plus'
40
- *
41
35
  * type R = IsTrue<true> // true
42
36
  *
43
37
  * type R = IsTrue<false> // false
@@ -50,8 +44,6 @@ export type IsTrue<T, Then = true, Else = false> = TrueType<T, Then, Else>
50
44
  * Is the type `T` not exactly `true`.
51
45
  *
52
46
  * ```ts
53
- * import type { IsNotTrue } from 'type-plus'
54
- *
55
47
  * type R = IsNotTrue<true> // false
56
48
  *
57
49
  * type R = IsNotTrue<false> // true
package/ts/equal/equal.ts CHANGED
@@ -26,8 +26,6 @@ type IdentityEqual<A, B, Then, Else> = (<_>() => _ extends (A & _) | _ ? 1 : 2)
26
26
  * Checks `A` and `B` are equal.
27
27
  *
28
28
  * ```ts
29
- * import { type Equal } from 'type-plus'
30
- *
31
29
  * type R = Equal<1, 1> // true
32
30
  * type R = Equal<any, any> // true
33
31
  * type R = Equal<boolean, boolean> // true
@@ -58,8 +56,16 @@ export type Equal<A, B, Then = true, Else = false> = [A, B] extends [B, A]
58
56
  And<
59
57
  IsObject<A>,
60
58
  IsObject<B>,
61
- IdentityEqual<Properties<A>, Properties<B>, Then, Else>,
59
+ IdentityEqual<
60
+ Properties<A>,
61
+ Properties<B>,
62
+ [A, B] extends [(...args: infer P1) => any, (...args: infer P2) => any]
63
+ ? Equal<P1, P2, Then, Else>
64
+ : Then,
65
+ Else
66
+ >,
62
67
  // `A` and `B` are narrowed, need to check again.
68
+ // This is fixed in TS 5.0.2, but keeping it to support older versions.
63
69
  [A, B] extends [B, A] ? Then : Else
64
70
  >
65
71
  >
@@ -71,8 +77,6 @@ export type Equal<A, B, Then = true, Else = false> = [A, B] extends [B, A]
71
77
  * Checks `A` and `B` are not equal.
72
78
  *
73
79
  * ```ts
74
- * import { type NotEqual } from 'type-plus'
75
- *
76
80
  * type R = NotEqual<1, 1> // false
77
81
  * type R = NotEqual<any, any> // false
78
82
  * type R = NotEqual<boolean, boolean> // false
@@ -26,6 +26,9 @@ type R = Equal<{ a: 1 }, { a: 1; b: 2 }> // false
26
26
  ---
27
27
 
28
28
  [![Just Code: Equality is hard][equality-is-hard]][equality-is-hard-url]
29
+ [![Just Code: Equality is hard part 2][equality-is-hard-2]][equality-is-hard-2-url]
29
30
 
30
31
  [equality-is-hard]: https://img.youtube.com/vi/VEqrFzCzo28/0.jpg
31
32
  [equality-is-hard-url]: https://www.youtube.com/watch?v=VEqrFzCzo28
33
+ [equality-is-hard-2]: https://img.youtube.com/vi/l6G6Rz1n9Sw/0.jpg
34
+ [equality-is-hard-2-url]: https://www.youtube.com/watch?v=l6G6Rz1n9Sw
@@ -4,8 +4,6 @@ import type { IsAnyOrNever } from '../any/any_or_never.js'
4
4
  * Check if `T` is a `Function`.
5
5
  *
6
6
  * ```ts
7
- * import type { FunctionType } from 'type-plus'
8
- *
9
7
  * type R = FunctionType<Function> // Function
10
8
  * type R = FunctionType<() => void> // () => void
11
9
  * type R = FunctionType<(() => void) | { a: 1 }> // (() => void) | { a: 1 }
@@ -25,8 +23,6 @@ export type FunctionType<T, Then = T, Else = never> = IsAnyOrNever<
25
23
  * Is `T` a `Function`.
26
24
  *
27
25
  * ```ts
28
- * import type { IsFunction } from 'type-plus'
29
- *
30
26
  * type R = IsFunction<Function> // Function
31
27
  * type R = IsFunction<() => void> // () => void
32
28
  * type R = IsFunction<(() => void) | { a: 1 }> // (() => void) | { a: 1 }
@@ -42,8 +38,6 @@ export type IsFunction<T, Then = true, Else = false> = FunctionType<T, Then, Els
42
38
  * Check if `T` is not a `Function`.
43
39
  *
44
40
  * ```ts
45
- * import type { NotFunctionType } from 'type-plus'
46
- *
47
41
  * type R = NotFunctionType<Function> // never
48
42
  * type R = NotFunctionType<() => void> // never
49
43
  * type R = NotFunctionType<(() => void) | { a: 1 }> // never
@@ -59,8 +53,6 @@ export type NotFunctionType<T, Then = T, Else = never> = FunctionType<T, Else, T
59
53
  * Is `T` not a `Function`.
60
54
  *
61
55
  * ```ts
62
- * import type { IsNotFunction } from 'type-plus'
63
- *
64
56
  * type R = IsNotFunction<Function> // false
65
57
  * type R = IsNotFunction<() => void> // false
66
58
  * type R = IsNotFunction<(() => void) | { a: 1 }> // false
@@ -4,8 +4,6 @@ import type { IsAnyOrNever } from '../any/any_or_never.js'
4
4
  * Check if `T` is exactly `Function`.
5
5
  *
6
6
  * ```ts
7
- * import type { StrictFunctionType } from 'type-plus'
8
- *
9
7
  * type R = StrictFunctionType<Function> // Function
10
8
  *
11
9
  * type R = StrictFunctionType<() => void> // never
@@ -22,8 +20,6 @@ export type StrictFunctionType<T, Then = T, Else = never> = IsAnyOrNever<
22
20
  * Check if `T` is not exactly `Function`.
23
21
  *
24
22
  * ```ts
25
- * import type { NotStrictFunctionType } from 'type-plus'
26
- *
27
23
  * type R = NotStrictFunctionType<Function> // never
28
24
  * type R = NotStrictFunctionType<() => void> // () => void
29
25
  *
@@ -36,8 +32,6 @@ export type NotStrictFunctionType<T, Then = T, Else = never> = StrictFunctionTyp
36
32
  * Is `T` exactly `Function`.
37
33
  *
38
34
  * ```ts
39
- * import type { IsStrictFunction } from 'type-plus'
40
- *
41
35
  * type R = IsStrictFunction<Function> // true
42
36
  *
43
37
  * type R = IsStrictFunction<() => void> // false
@@ -50,8 +44,6 @@ export type IsStrictFunction<T, Then = true, Else = false> = StrictFunctionType<
50
44
  * Is `T` not exactly `Function`.
51
45
  *
52
46
  * ```ts
53
- * import type { IsNotStrictFunction } from 'type-plus'
54
- *
55
47
  * type R = IsNotStrictFunction<Function> // false
56
48
  *
57
49
  * type R = IsNotStrictFunction<() => void> // true
package/ts/index.ts CHANGED
@@ -81,6 +81,8 @@ export type {
81
81
  NotStrictStringType,
82
82
  StrictStringType
83
83
  } from './string/strict_string_type.js'
84
+ export type { StringIncludes, StringSplit } from './string/string.js'
85
+ export type { StringPlus } from './string/string_plus.js'
84
86
  export type { IsNotString, IsString, NotStringType, StringType } from './string/string_type.js'
85
87
  export type { IsNotSymbol, IsSymbol, NotSymbolType, SymbolType } from './symbol/symbol_type.js'
86
88
  export * from './testing/stub.js'
@@ -16,8 +16,6 @@ export type Is_Never = Brand<'is_never', symbol>
16
16
  * If it is not, returns `Not_Never`.
17
17
  *
18
18
  * ```ts
19
- * import type { NeverType } from 'type-plus'
20
- *
21
19
  * type R = NeverType<never> // never
22
20
  *
23
21
  * type R = NeverType<1> // 'not never'
@@ -30,8 +28,6 @@ export type NeverType<T, Then = T, Else = Not_Never> = [T, never] extends [never
30
28
  * If it is not, returns `Is_Never`.
31
29
  *
32
30
  * ```ts
33
- * import type { NotNeverType } from 'type-plus'
34
- *
35
31
  * type R = NotNeverType<1> // 1
36
32
  *
37
33
  * type R = NotNeverType<never> // 'is_never'
@@ -42,9 +38,7 @@ export type NotNeverType<T, Then = T, Else = Is_Never> = NeverType<T, Else, Then
42
38
  /**
43
39
  * Is `T` `never`.
44
40
  *
45
- * ```
46
- * import type { IsNever } from 'type-plus'
47
- *
41
+ * ```ts
48
42
  * type R = IsNever<never> // true
49
43
  *
50
44
  * type R = IsNever<1> // false
@@ -55,9 +49,7 @@ export type IsNever<T, Then = true, Else = false> = NeverType<T, Then, Else>
55
49
  /**
56
50
  * Is `T` not `never`.
57
51
  *
58
- * ```
59
- * import type { IsNotNever } from 'type-plus'
60
- *
52
+ * ```ts
61
53
  * type R = IsNotNever<1> // true
62
54
  *
63
55
  * type R = IsNotNever<never> // false
@@ -3,9 +3,7 @@ import type { IsAny } from '../any/any_type.js'
3
3
  /**
4
4
  * Check if the type `T` is exactly `null`.
5
5
  *
6
- * ```
7
- * import type { NullType } from 'type-plus'
8
- *
6
+ * ```ts
9
7
  * type R = NullType<null> // null
10
8
  *
11
9
  * type R = NullType<never> // never
@@ -18,9 +16,7 @@ export type NullType<T, Then = T, Else = never> = IsAny<T, Else, [T, null] exten
18
16
  /**
19
17
  * Is the type `T` exactly `null`.
20
18
  *
21
- * ```
22
- * import type { IsNull } from 'type-plus'
23
- *
19
+ * ```ts
24
20
  * type R = IsNull<null> // true
25
21
  *
26
22
  * type R = IsNull<never> // false
@@ -33,9 +29,7 @@ export type IsNull<T, Then = true, Else = false> = NullType<T, Then, Else>
33
29
  /**
34
30
  * Check if the type `T` is not exactly `null`.
35
31
  *
36
- * ```
37
- * import type { NotNullType } from 'type-plus'
38
- *
32
+ * ```ts
39
33
  * type R = NotNullType<null> // never
40
34
  *
41
35
  * type R = NotNullType<never> // never
@@ -48,9 +42,7 @@ export type NotNullType<T, Then = T, Else = never> = NullType<T, Else, Then>
48
42
  /**
49
43
  * Is the type `T` not exactly `null`.
50
44
  *
51
- * ```
52
- * import type { IsNotNull } from 'type-plus'
53
- *
45
+ * ```ts
54
46
  * type R = IsNotNull<null> // false
55
47
  *
56
48
  * type R = IsNotNull<never> // true
@@ -5,8 +5,6 @@ import type { Numeric } from './numeric_type.js'
5
5
  * Check if T is an integer, including bigint.
6
6
  *
7
7
  * ```ts
8
- * import type { Integer } from 'type-plus'
9
- *
10
8
  * type R = Integer<0> // 0
11
9
  * type R = Integer<1n> // 1n
12
10
  *
@@ -24,8 +22,6 @@ export type Integer<T, Then = T, Else = never> = IsAnyOrNever<
24
22
  * Is T an integer, including bigint.
25
23
  *
26
24
  * ```ts
27
- * import type { IsInteger } from 'type-plus'
28
- *
29
25
  * type R = IsInteger<0> // true
30
26
  * type R = IsInteger<1n> // true
31
27
  *
@@ -39,8 +35,6 @@ export type IsInteger<T, Then = true, Else = false> = Integer<T, Then, Else>
39
35
  * Check if T is not an integer, including bigint.
40
36
  *
41
37
  * ```ts
42
- * import type { NotInteger } from 'type-plus'
43
- *
44
38
  * type R = NotInteger<1.1> // 1.1
45
39
  * type R = NotInteger<number> // number as it contains non-integer
46
40
  *
@@ -68,9 +62,7 @@ export type IsNotInteger<T, Then = true, Else = false> = NotInteger<T, Else, The
68
62
  /**
69
63
  * Check if T is an integer, including bigint.
70
64
  *
71
- * ```
72
- * import type { IsWhole } from 'type-plus'
73
- *
65
+ * ```ts
74
66
  * type R = IsWhole<0> // 0
75
67
  * type R = IsWhole<1n> // 1n
76
68
  *
@@ -6,8 +6,6 @@ import type { Zero } from './numeric_type.js'
6
6
  * Check if 'T' is a negative numeric type.
7
7
  *
8
8
  * ```ts
9
- * import type { Negative } from 'type-plus'
10
- *
11
9
  * type R = Negative<-1> // -1
12
10
  * type R = Negative<-1n> // -1n
13
11
  *
@@ -42,8 +40,6 @@ export type Negative<T, Then = T, Else = never> = IsAny<
42
40
  * Is 'T' a negative numeric type.
43
41
  *
44
42
  * ```ts
45
- * import type { IsNegative } from 'type-plus'
46
- *
47
43
  * type R = IsNegative<-1> // true
48
44
  * type R = IsNegative<-1n> // true
49
45
  *
@@ -60,8 +56,6 @@ export type IsNegative<T, Then = true, Else = false> = Negative<T, Then, Else>
60
56
  * Check if 'T' is not a negative numeric type.
61
57
  *
62
58
  * ```ts
63
- * import type { NotNegative } from 'type-plus'
64
- *
65
59
  * type R = NotNegative<-1> // never
66
60
  * type R = NotNegative<-1n> // never
67
61
  *
@@ -94,8 +88,6 @@ export type NotNegative<T, Then = T, Else = never> = IsAny<
94
88
  * Is 'T' not a negative numeric type.
95
89
  *
96
90
  * ```ts
97
- * import type { IsNotNegative } from 'type-plus'
98
- *
99
91
  * type R = IsNotNegative<-1> // false
100
92
  * type R = IsNotNegative<-1n> // false
101
93
  *
@@ -4,8 +4,6 @@ import type { IsAnyOrNever } from '../any/any_or_never.js'
4
4
  * Check if the type `T` is `number`.
5
5
  *
6
6
  * ```ts
7
- * import type { NumberType } from 'type-plus'
8
- *
9
7
  * type R = NumberType<number> // true
10
8
  * type R = NumberType<1> // true
11
9
  *
@@ -19,8 +17,6 @@ export type NumberType<T, Then = T, Else = never> = IsAnyOrNever<T, Else, [T] ex
19
17
  * Is the type `T` is `number`.
20
18
  *
21
19
  * ```ts
22
- * import type { IsNumber } from 'type-plus'
23
- *
24
20
  * type R = IsNumber<number> // true
25
21
  * type R = IsNumber<1> // true
26
22
  *
@@ -34,8 +30,6 @@ export type IsNumber<T, Then = true, Else = false> = NumberType<T, Then, Else>
34
30
  * Check if the type `T` is not `number`.
35
31
  *
36
32
  * ```ts
37
- * import type { NotNumberType } from 'type-plus'
38
- *
39
33
  * type R = NotNumberType<number> // false
40
34
  * type R = NotNumberType<1> // false
41
35
  *
@@ -49,8 +43,6 @@ export type NotNumberType<T, Then = T, Else = never> = NumberType<T, Else, Then>
49
43
  * Is the type `T` not `number`.
50
44
  *
51
45
  * ```ts
52
- * import type { IsNotNumber } from 'type-plus'
53
- *
54
46
  * type R = IsNotNumber<number> // false
55
47
  * type R = IsNotNumber<1> // false
56
48
  *
@@ -15,8 +15,6 @@ export type Zero = 0 | 0n
15
15
  * Meaning it is either a `number` or a `bigint`.
16
16
  *
17
17
  * ```ts
18
- * import type { NumericType } from 'type-plus'
19
- *
20
18
  * type R = NumericType<1> // 1
21
19
  * type R = NumericType<1.1> // 1.1
22
20
  *
@@ -30,8 +28,6 @@ export type NumericType<T, Then = T, Else = never> = IsAnyOrNever<T, Else, [T] e
30
28
  * Is `T` numeric.
31
29
  *
32
30
  * ```ts
33
- * import type { IsNumeric } from 'type-plus'
34
- *
35
31
  * type R = IsNumeric<1> // true
36
32
  * type R = IsNumeric<1.1> // true
37
33
  *
@@ -45,8 +41,6 @@ export type IsNumeric<T, Then = true, Else = false> = NumericType<T, Then, Else>
45
41
  * Check if `T` is not numeric.
46
42
  *
47
43
  * ```ts
48
- * import type { NotNumericType } from 'type-plus'
49
- *
50
44
  * type R = NotNumericType<1> // never
51
45
  * type R = NotNumericType<1.1> // never
52
46
  *
@@ -60,8 +54,6 @@ export type NotNumericType<T, Then = T, Else = never> = NumericType<T, Else, The
60
54
  * Is `T` not numeric.
61
55
  *
62
56
  * ```ts
63
- * import type { IsNotNumeric } from 'type-plus'
64
- *
65
57
  * type R = IsNotNumeric<1> // false
66
58
  * type R = IsNotNumeric<1.1> // false
67
59
  *