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
TypeScript
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 {};