free-types-core 0.4.6 → 0.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.
- package/dist/free-types.d.ts +14 -0
- package/dist/unwrap.d.ts +9 -0
- package/dist/utils.d.ts +3 -1
- package/package.json +1 -1
package/dist/free-types.d.ts
CHANGED
|
@@ -47,3 +47,17 @@ interface $UnaryFunction extends Type<2> {
|
|
|
47
47
|
interface $Promise extends Type<1> {
|
|
48
48
|
type: Promise<this[0]>;
|
|
49
49
|
}
|
|
50
|
+
declare global {
|
|
51
|
+
interface Set<T> {
|
|
52
|
+
}
|
|
53
|
+
interface ReadonlySet<T> {
|
|
54
|
+
}
|
|
55
|
+
interface WeakSet<T> {
|
|
56
|
+
}
|
|
57
|
+
interface Map<K, V> {
|
|
58
|
+
}
|
|
59
|
+
interface ReadonlyMap<K, V> {
|
|
60
|
+
}
|
|
61
|
+
interface WeakMap<K, V> {
|
|
62
|
+
}
|
|
63
|
+
}
|
package/dist/unwrap.d.ts
CHANGED
|
@@ -11,6 +11,15 @@ declare type Interface = {
|
|
|
11
11
|
} & {
|
|
12
12
|
[Symbol.toStringTag]?: never;
|
|
13
13
|
};
|
|
14
|
+
declare global {
|
|
15
|
+
interface SymbolConstructor {
|
|
16
|
+
readonly toStringTag: unique symbol;
|
|
17
|
+
}
|
|
18
|
+
interface Symbol {
|
|
19
|
+
readonly [Symbol.toStringTag]: string;
|
|
20
|
+
}
|
|
21
|
+
var Symbol: SymbolConstructor;
|
|
22
|
+
}
|
|
14
23
|
export { unwrap, Unwrapped, Search };
|
|
15
24
|
/** Decompose a type into its constituents */
|
|
16
25
|
declare type unwrap<T, From extends Search = TypesMap> = T extends readonly unknown[] ? unwrapLists<T> : _unwrap<T, From extends Type ? [From] : From>;
|
package/dist/utils.d.ts
CHANGED
|
@@ -9,7 +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[] = []> =
|
|
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]]>;
|
|
13
15
|
declare type IsOptional<T extends unknown[], I extends number> = [
|
|
14
16
|
{
|
|
15
17
|
[K in T['length'] as K]: K extends I ? never : unknown;
|
package/package.json
CHANGED