free-types-core 0.8.4 → 0.8.5
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.
- package/dist/utils.d.ts +7 -7
- package/package.json +1 -1
package/dist/utils.d.ts
CHANGED
|
@@ -9,9 +9,9 @@ declare type _Next = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
|
|
|
9
9
|
declare type Subtract<A extends number, B extends number> = number extends A ? number : number extends B ? number : _Subtract<A, B>;
|
|
10
10
|
declare type _Subtract<A extends number, B extends number, _A = Prev<A>, _B = Prev<B>> = B extends 0 ? A : [_A] extends [never] ? never : [_B] extends never ? never : _Subtract<_A & number, _B & number>;
|
|
11
11
|
declare type ArrayKeys = Exclude<keyof [], never>;
|
|
12
|
-
declare type Slice<T extends unknown[], From extends number, To extends number = Required<T>['length'], I extends number = From, R extends unknown[] = []> = number extends To ? SliceOpenEndedTuple<T, From> : SliceTuple<T, From, To, I, R>;
|
|
13
|
-
declare type SliceOpenEndedTuple<T extends unknown[], From extends number> = From extends 0 ? T : T extends [unknown, ...infer R] ? SliceOpenEndedTuple<R, Prev<From>> : never;
|
|
14
|
-
declare type SliceTuple<T extends unknown[], From extends number, To extends number = Required<T>['length'], I extends number = From, R extends unknown[] = []> = I extends To ? R : Slice<T, From, To, Next<I>, IsOptional<T, I> extends true ? [...R, T[I]?] : [...R, T[I]]>;
|
|
12
|
+
declare type Slice<T extends readonly unknown[], From extends number, To extends number = Required<T>['length'], I extends number = From, R extends unknown[] = []> = number extends To ? SliceOpenEndedTuple<T, From> : SliceTuple<T, From, To, I, R>;
|
|
13
|
+
declare type SliceOpenEndedTuple<T extends readonly unknown[], From extends number> = From extends 0 ? T : T extends [unknown, ...infer R] ? SliceOpenEndedTuple<R, Prev<From>> : never;
|
|
14
|
+
declare type SliceTuple<T extends readonly unknown[], From extends number, To extends number = Required<T>['length'], I extends number = From, R extends unknown[] = []> = I extends To ? R : Slice<T, From, To, Next<I>, IsOptional<T, I> extends true ? [...R, T[I]?] : [...R, T[I]]>;
|
|
15
15
|
declare type IsOptional<T extends readonly unknown[], I extends number> = [
|
|
16
16
|
{
|
|
17
17
|
[K in T['length'] as K]: K extends I ? never : unknown;
|
|
@@ -19,10 +19,10 @@ declare type IsOptional<T extends readonly unknown[], I extends number> = [
|
|
|
19
19
|
] extends [never] ? true : false;
|
|
20
20
|
declare type ToTuple<T extends readonly unknown[], I extends number = 0, R extends unknown[] = []> = any[] extends T ? T[0][] : I extends T['length'] ? R : ToTuple<T, Next<I>, [...R, T[I]]>;
|
|
21
21
|
declare type Tuple<L extends number, T = unknown, R extends unknown[] = []> = number extends L ? T[] : L extends R['length'] ? R : Tuple<L, T, [T, ...R]>;
|
|
22
|
-
declare type Head<T extends [unknown, ...unknown[]]> = T[0];
|
|
23
|
-
declare type Tail<T extends [unknown, ...unknown[]]> = T extends [unknown, ...infer R] ? R : never;
|
|
24
|
-
declare type Last<T extends unknown[]> = T[Prev<T['length']>];
|
|
25
|
-
declare type Init<T extends [unknown, ...unknown[]]> = T extends [...infer R, unknown] ? R : never;
|
|
22
|
+
declare type Head<T extends readonly [unknown, ...unknown[]]> = T[0];
|
|
23
|
+
declare type Tail<T extends readonly [unknown, ...unknown[]]> = T extends [unknown, ...infer R] ? R : never;
|
|
24
|
+
declare type Last<T extends readonly unknown[]> = T[Prev<T['length']>];
|
|
25
|
+
declare type Init<T extends readonly [unknown, ...unknown[]]> = T extends [...infer R, unknown] ? R : never;
|
|
26
26
|
declare type IsUnknown<T> = unknown extends T ? IsAny<T> extends false ? true : false : false;
|
|
27
27
|
declare type IsAny<T> = Extends<T | anything, T & anything>;
|
|
28
28
|
declare type Extends<A, B> = [A] extends [B] ? true : false;
|
package/package.json
CHANGED