import {Sifter} from './sifter.ts'; export type Field = { field: string, weight: number, } export type Sort = { field: string, direction?: string, } export type SortFn = (this:Sifter, a:ResultItem, b:ResultItem)=>number; export type UserOptions = { fields: string[]|Field[], conjunction: string, sort: string|SortFn|Sort[], nesting?: boolean, score?: ScoreFn, filter?: boolean, sort_empty?: SortFn|Sort[], respect_word_boundaries?: boolean, limit?: number, } export type Options = { fields: Field[], conjunction: string, sort: SortFn|Sort[], nesting?: boolean, score?: ScoreFn, filter?: boolean, sort_empty?: SortFn|Sort[], respect_word_boundaries?: boolean, limit?: number, } export type Token = { string:string, regex:RegExp|null, field:string|null, } export type Weights = {[key:string]:number} export type PrepareObj = { options: Options, query: string, tokens: Token[], total: number, items: ResultItem[], weights: Weights, getAttrFn: (data:any,field:string)=>any, } export type Settings = { diacritics:boolean } export type ResultItem = { score: number, id: number|string, } export type ScoreFn = (item:ResultItem) => number;