UNPKG

@imranbarbhuiya/mongoose-fuzzy-searching

Version:
67 lines (66 loc) 2.4 kB
import * as mongoose from "mongoose"; declare type NonEmptyArray<T> = T[] & { 0: T; }; export declare type MongooseCriteria = mongoose.FilterQuery<any> | mongoose.Query<any, any>; export declare type MongooseModel = mongoose.Model<any, any>; export declare type MongooseCallback = (err: any, res: any[]) => void; export declare type Attributes = Record<string, any> | Record<string, any>[]; export declare type FieldObject = { name: string; minSize?: number; weight?: number; prefixOnly?: boolean; escapeSpecialCharacters?: boolean; keys?: NonEmptyArray<string>; }; export declare type KeyFieldObject = FieldObject & { keys: NonEmptyArray<string>; }; export declare type FieldIndexes = { indexes: Record<string, string>; weights: Record<string, number>; }; export declare type NgramOptions = { text: string; escapeSpecialCharacters: boolean; minSize: number; prefixOnly: boolean; }; export declare type Fields = Array<string | FieldObject>; export declare type PluginSchemaOptions = { fields: Fields; options?: { toJSON?: mongoose.SchemaOptions["toJSON"]; toObject?: mongoose.SchemaOptions["toObject"]; }; }; export declare type QueryObject = { query: string; minSize?: number; prefixOnly?: boolean; exact?: boolean; }; export declare type Query = string | QueryObject; export declare type FullySearch = { query: Query; criteria?: MongooseCriteria; }; export declare type SearchableModel = Pick<MongooseModel, "find">; export declare type StaticFuzzyParameters = [Query] | [Query, MongooseCriteria] | [Query, MongooseCallback] | [Query, MongooseCriteria, MongooseCallback]; export declare type QueryFuzzyParameters = [Query] | [Query, MongooseCriteria]; export declare type QueryFuzzyReturn = { query: Query; options: MongooseCriteria; }; export declare type StaticFuzzyReturn = QueryFuzzyReturn & { callback?: MongooseCallback; }; export declare type FuzzyParameters = StaticFuzzyParameters | QueryFuzzyParameters; export interface MongooseQueryHelpers<T extends mongoose.Document> { fuzzySearch(...args: StaticFuzzyParameters): mongoose.Query<T, any>; } export interface MongoosePluginModel<T extends mongoose.Document> extends mongoose.Model<T, MongooseQueryHelpers<T>> { fuzzySearch(...args: StaticFuzzyParameters): mongoose.QueryWithHelpers<Array<T>, any>; } export {};