UNPKG

clumsy-graphics

Version:

a tool for rapidly developing animations where frames are described using svg elements à la react 🙃

15 lines (14 loc) 1.39 kB
export interface MessageBase<MessageType extends string, MessagePayload extends object> { messageType: MessageType; messagePayload: MessagePayload; } export declare type FunctionBrand<SomeBrandedFunction extends BrandedFunction, SomeBrandKey extends keyof BrandedFunctionResult<SomeBrandedFunction> = keyof BrandedFunctionResult<SomeBrandedFunction>> = Pick<BrandedFunctionResult<SomeBrandedFunction>, SomeBrandKey>; declare type BrandedFunction = (...args: Array<any>) => Promise<object> | object; declare type BrandedFunctionResult<SomeFunction extends BrandedFunction> = ReturnType<SomeFunction> extends Promise<infer SomeResult> ? SomeResult : ReturnType<SomeFunction>; export declare type FunctionResult<SomeFunction extends (...args: Array<any>) => Promise<any> | any> = ReturnType<SomeFunction> extends Promise<infer SomeResult> ? SomeResult : ReturnType<SomeFunction>; export declare type Optional<SomeObject extends object, SomeKey extends keyof SomeObject> = { [Key in SomeKey]?: SomeObject[Key]; } & Pick<SomeObject, Exclude<keyof SomeObject, SomeKey>>; export declare type PromiseResult<SomePromise extends Promise<any>> = SomePromise extends Promise<infer Result> ? Result : never; export declare type DistributiveOmit<SomeObject extends object, ObjectKey extends keyof SomeObject> = SomeObject extends SomeObject ? Omit<SomeObject, ObjectKey> : never; export {};