@imranbarbhuiya/mongoose-fuzzy-searching
Version:
Mongoose fuzzy searching plugin
67 lines (66 loc) • 2.4 kB
TypeScript
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 {};