UNPKG

type-comparator

Version:

Useful comparator functions written on Typescript

43 lines (42 loc) 1.35 kB
export interface Comparator { (a: any, b: any): number; } export declare type Mutation = (c: Comparator) => Comparator; export declare enum MutationType { MAP = "map", REVERSE = "reverse", IF = "if" } export declare type MutationDescriptor = ReverseMutationDescriptor | MapMutationDescriptor | IfMutationDescriptor; export interface MutationDescriptorBase { type: MutationType; } export interface ReverseMutationDescriptor extends MutationDescriptorBase { type: MutationType.REVERSE; } export interface MapMutationDescriptor extends MutationDescriptorBase { type: MutationType.MAP; mapper: Mapper; } export interface IfMutationDescriptor extends MutationDescriptorBase { type: MutationType.IF; condition: Condition; comparator?: Comparator; } export declare type Mapper = (item: any) => any; export declare type Condition = (item: any) => boolean; export interface ThenChainable { then(comparator: Comparator): ElseChainable; } export interface ElseChainable { else(comparator: Comparator): Comparator; elif(condition: Condition): ThenChainable; } export interface Chainable { reverse(): this; map(mapper: Mapper): this; if(condition: Condition): ThenChainable; use(comparatorOrComparators: Comparator | Comparator[]): Comparator; asc(): Comparator; desc(): Comparator; }