diff --git a/.gitignore b/.gitignore index a3c258e..60585f2 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ node_modules lib/ .nyc_output/ coverage/ +tags diff --git a/src/index.d.ts b/src/index.d.ts new file mode 100644 index 0000000..9df0b88 --- /dev/null +++ b/src/index.d.ts @@ -0,0 +1,60 @@ +declare module 'searchjs' { + interface Defaults { + negator?: boolean; + join?: string; + text?: boolean; + word?: boolean; + separator?: string; + propertySearch?: boolean; + propertySearchDepth?: number; + start?: boolean; + end?: boolean; + } + + type SingleField = null | undefined | boolean | number | Date | string; + type Field = SingleField | SingleField[]; + + interface SearchPrimitiveRange { + from?: number | string; + gte?: number | string; + gt?: number | string; + to?: number | string; + lte?: number | string; + lt?: number | string; + } + type SearchPrimitiveValues = null | undefined | string | number | Date | boolean | SearchPrimitiveRange; + + export type JoinValue = "OR" | "AND"; + + type SearchPrimitive = { + [key: string]: SearchPrimitiveValues | SearchPrimitiveValues[] | SearchPrimitive | SearchPrimitive[] + terms?: SearchPrimitive[]; + _propertySearch?: boolean; + _propertySearchDepth?: number; + _not?: boolean | null; + _join?: JoinValue; + _text?: boolean; + _word?: boolean; + _start?: boolean; + _end?: boolean; + _separator?: string; + } + + interface SearchObject { + [key: string]: Field | SearchObject + } + + type SearchArray = SearchObject[] | undefined[]; + type SearchData = SearchObject; + + export function setDefaults(defaults: Defaults): void; + export function resetDefaults(): void; + export function singleMatch(field: Field, + s: SearchPrimitive, + text: Defaults["text"], + word: Defaults["word"], + start: Defaults["start"], + end: Defaults["end"]): boolean; + export function matchArray(ary: T[], search: SearchPrimitive): T[]; + export function matchObject(object: T, search: SearchPrimitive): T; +}