UNPKG

bridgets

Version:

<p align="center"> <a href="https://bridgets.co"> <img src="http://bridgets.co/assets/logo-short.svg" height="48" /> <h1 align="center">BridgeTS</h1> </a> </p>

43 lines 2.01 kB
import { BridgeHandler } from '../Handler'; export declare type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never; export declare type KeysWithValNotNever<T> = keyof { [P in keyof T as T[P] extends never ? never : P]: P; }; export declare type ExcludeNeverKeys<T> = { [key in KeysWithValNotNever<T> & keyof T]: T[key]; }; declare type Values<T> = T[keyof T]; declare type Unfoo<T> = T extends { foo: any; } ? T['foo'] : never; declare type RemoveError<T> = T extends { error: any; } ? never : T; declare type NFooWithoutError<T extends Readonly<BridgeHandler[]>> = { [K in keyof T]: T[K] extends BridgeHandler<(arg: any) => infer Output, any> ? { foo: RemoveError<Output>; } : never; }; declare type NFooWithoutErrorParams<T extends Readonly<BridgeHandler[]>> = { [K in keyof T]: T[K] extends BridgeHandler<(arg: infer Input) => any, any> ? { foo: RemoveError<Input>; } : never; }; export declare type MidsReturnsIntersection<T extends Readonly<any[]>> = Unfoo<UnionToIntersection<Values<NFooWithoutError<T>>>>; export declare type MidsParams<T extends Readonly<any[]>> = Unfoo<UnionToIntersection<Values<NFooWithoutErrorParams<T>>>>; declare type UnionToOvlds<U> = UnionToIntersection<U extends any ? (f: U) => void : never>; declare type PopUnion<U> = UnionToOvlds<U> extends (a: infer A) => void ? A : never; declare type IsUnion<T> = [T] extends [UnionToIntersection<T>] ? false : true; export declare type UnionToArray<T, A extends unknown[] = []> = IsUnion<T> extends true ? UnionToArray<Exclude<T, PopUnion<T>>, [PopUnion<T>, ...A]> : [T, ...A]; declare type Indexify<T> = T & { [str: string]: undefined; }; declare type UndefinedVals<T> = { [K in keyof T]: undefined; }; declare type AllUnionKeys<T> = keyof UnionToIntersection<UndefinedVals<T>>; export declare type AllFields<T> = { [K in AllUnionKeys<T> & string]: Indexify<T>[K]; }; export {}; //# sourceMappingURL=types.d.ts.map