// export type SupportedType = // | string // | { [index: string]: RegExp | any } // | number // | null // | any; // export type KeyOrValue = T; // export type ElemMatch = { [P in keyof T]?: SiftQuery }; // export type Query = { // $eq?: T; // $ne?: T; // $or?: T[]; // $gt?: T; // $gte?: T; // $lt?: T; // $lte?: T; // $mod?: number[]; // $in?: T[]; // $nin?: T[]; // $not?: SiftQuery; // $type?: any; // $all?: T[]; // $size?: number; // $nor?: T[]; // $and?: T[]; // $regex?: RegExp | string; // $elemMatch?: ExternalQuery; // $exists?: boolean; // $where?: string | WhereFn; // }; // export interface InternalQuery extends Query {} // export type ExternalQuery = ElemMatch; // export type WhereFn = ( // this: T, // value: T, // index: number, // array: T // ) => boolean; // export type FilterFn = (value: T, index?: number, array?: T[]) => boolean; // export type SiftQuery = // | ExternalQuery // | InternalQuery; // export type PluginDefinition = { // [index: string]: (a: T, b: T) => boolean | number; // }; // export type PluginFunction = (sift: Sift) => PluginDefinition; // export type Exec = (array: T) => T; // type Options = { // expressions?: { // [identifier: string]: ( // item: T, // query: SiftQuery, // options: Options // ) => boolean; // }; // }; // export interface Sift { // ( // query: SiftQuery, // options?: Options // ): FilterFn; // compare(a: T, b: K): 0 | -1 | 1; // } // declare const Sift: Sift; // export default Sift; import sift from "./lib"; export default sift; export * from "./lib";