// Type definitions for Fuse.js v7.3.0 // TypeScript v6.0.2 type RangeTuple = [number, number]; interface SearchResult { isMatch: boolean; score: number; indices?: ReadonlyArray; hasInverse?: boolean; } interface Searcher { searchIn(text: string): SearchResult; } interface FuseOptionKeyObject { name: string | string[]; weight?: number; getFn?: (obj: T) => ReadonlyArray | string | null | undefined; } type FuseOptionKey = FuseOptionKeyObject | string | string[]; interface KeyObject { path: string[]; id: string; weight: number; src: string | string[]; getFn?: ((obj: any) => ReadonlyArray | string | null | undefined) | null; } type FuseGetFunction = (obj: T, path: string | string[]) => ReadonlyArray | string; type GetFunction = (obj: any, path: string | string[]) => any; interface NormInterface { get(value: string): number; clear(): void; } interface RecordEntryObject { /** The text value */ v: string; /** The field-length norm */ n: number; } type RecordEntryArrayItem = ReadonlyArray; type RecordEntry = { [key: string]: RecordEntryObject | RecordEntryArrayItem; }; interface FuseIndexObjectRecord { /** The index of the record in the source list */ i: number; $: RecordEntry; } interface FuseIndexStringRecord { /** The index of the record in the source list */ i: number; /** The text value */ v: string; /** The field-length norm */ n: number; } type FuseIndexRecords = ReadonlyArray | ReadonlyArray; interface IndexRecord { i: number; v?: string; n?: number; $?: Record; } interface SubRecord { v: string; i?: number; n: number; } type FuseSortFunctionItem = { [key: string]: { $: string; } | { $: string; idx: number; }[]; }; type FuseSortFunctionMatch = { score: number; key: KeyObject; value: string; indices: ReadonlyArray[]; }; type FuseSortFunctionMatchList = FuseSortFunctionMatch & { idx: number; }; type FuseSortFunctionArg = { idx: number; item: FuseSortFunctionItem; score: number; matches?: (FuseSortFunctionMatch | FuseSortFunctionMatchList)[]; }; type FuseSortFunction = (a: FuseSortFunctionArg, b: FuseSortFunctionArg) => number; interface MatchScore { score: number; key?: KeyObject | null; value: string; idx?: number; hasInverse?: boolean; norm: number; indices?: ReadonlyArray; } interface InternalResult { idx: number; item: any; score?: number; matches: MatchScore[]; } interface IFuseOptions { /** Indicates whether comparisons should be case sensitive. */ isCaseSensitive?: boolean; /** Indicates whether comparisons should ignore diacritics (accents). */ ignoreDiacritics?: boolean; /** Determines how close the match must be to the fuzzy location. */ distance?: number; /** When true, the matching function will continue to the end of a search pattern even if a perfect match has already been located in the string. */ findAllMatches?: boolean; /** The function to use to retrieve an object's value at the provided path. */ getFn?: FuseGetFunction; /** When `true`, search will ignore `location` and `distance`. */ ignoreLocation?: boolean; /** When `true`, the calculation for the relevance score will ignore the field-length norm. */ ignoreFieldNorm?: boolean; /** Determines how much the field-length norm affects scoring. */ fieldNormWeight?: number; /** Whether the matches should be included in the result set. */ includeMatches?: boolean; /** Whether the score should be included in the result set. */ includeScore?: boolean; /** List of keys that will be searched. */ keys?: Array>; /** Determines approximately where in the text is the pattern expected to be found. */ location?: number; /** Only the matches whose length exceeds this value will be returned. */ minMatchCharLength?: number; /** Whether to sort the result list, by score. */ shouldSort?: boolean; /** The function to use to sort all the results. */ sortFn?: FuseSortFunction; /** At what point does the match algorithm give up. */ threshold?: number; /** When `true`, it enables the use of unix-like search commands. */ useExtendedSearch?: boolean; /** When `true`, enables token search with TF-IDF scoring. */ useTokenSearch?: boolean; } interface FuseIndexOptions { getFn?: FuseGetFunction; fieldNormWeight?: number; } interface FuseSearchOptions { limit?: number; } interface FuseResultMatch { indices: ReadonlyArray; key?: string; refIndex?: number; value?: string; } interface FuseResult { item: T; refIndex: number; score?: number; matches?: ReadonlyArray; } type Expression = string | { [key: string]: string; } | { $path: ReadonlyArray; $val: string; } | { $and?: Expression[]; } | { $or?: Expression[]; }; declare class FuseIndex { norm: NormInterface; getFn: GetFunction; isCreated: boolean; docs: ReadonlyArray; records: IndexRecord[]; keys: KeyObject[]; _keysMap: Record; constructor({ getFn, fieldNormWeight }?: FuseIndexOptions); setSources(docs?: ReadonlyArray): void; setIndexRecords(records?: IndexRecord[]): void; setKeys(keys?: KeyObject[]): void; create(): void; add(doc: T): void; removeAt(idx: number): void; removeAll(indices: number[]): void; getValueForItemAtKeyId(item: any, keyId: string): any; size(): number; _addString(doc: string, docIndex: number): void; _addObject(doc: any, docIndex: number): void; toJSON(): { keys: ReadonlyArray>; records: IndexRecord[]; }; } declare function createIndex(keys: FuseOptionKey[], docs: ReadonlyArray, { getFn, fieldNormWeight }?: FuseIndexOptions): FuseIndex; declare function parseIndex(data: { keys: ReadonlyArray; records: IndexRecord[]; }, { getFn, fieldNormWeight }?: FuseIndexOptions): FuseIndex; declare class KeyStore { _keys: KeyObject[]; _keyMap: Record; constructor(keys: FuseOptionKey[]); get(keyId: string): KeyObject; keys(): KeyObject[]; toJSON(): string; } interface ParsedLeaf { keyId: string | null; pattern: string; searcher?: Searcher; } interface ParsedOperator { children: ParsedNode[]; operator: string; } type ParsedNode = ParsedLeaf | ParsedOperator; declare function parse(query: Expression, options: any, { auto }?: { auto?: boolean | undefined; }): ParsedNode; declare const Config: Required>; declare class MaxHeap { limit: number; heap: InternalResult[]; constructor(limit: number); get size(): number; shouldInsert(score: number): boolean; insert(item: InternalResult): void; extractSorted(sortFn: (a: InternalResult, b: InternalResult) => number): InternalResult[]; _bubbleUp(i: number): void; _sinkDown(i: number): void; } interface Posting { docIdx: number; keyIdx: number; subIdx: number; tf: number; } interface InvertedIndexData { terms: Map; fieldCount: number; df: Map; } interface HeapSearchOptions { heap?: MaxHeap; ignoreFieldNorm?: boolean; } declare class Fuse { options: Required>; _keyStore: KeyStore; _docs: T[]; _myIndex: FuseIndex; _invertedIndex: InvertedIndexData | null; _lastQuery: string | null; _lastSearcher: Searcher | null; static version: string; static createIndex: typeof createIndex; static parseIndex: typeof parseIndex; static config: typeof Config; static parseQuery: typeof parse; static use: (...plugins: any[]) => void; static match: (pattern: string, text: string, options?: IFuseOptions) => SearchResult; constructor(docs: ReadonlyArray, options?: IFuseOptions, index?: FuseIndex); _getSearcher(query: string): Searcher; setCollection(docs: ReadonlyArray, index?: FuseIndex): void; add(doc: T): void; remove(predicate?: (doc: T, idx: number) => boolean): T[]; removeAt(idx: number): T; getIndex(): FuseIndex; search(query: string | Expression, options?: FuseSearchOptions): FuseResult[]; _searchStringList(query: string, { heap, ignoreFieldNorm }?: HeapSearchOptions): InternalResult[] | null; _searchLogical(query: Expression): InternalResult[]; _searchObjectList(query: string, { heap, ignoreFieldNorm }?: HeapSearchOptions): InternalResult[] | null; _findMatches({ key, value, searcher }: { key: KeyObject | null; value: SubRecord | SubRecord[] | undefined; searcher: Searcher; }): MatchScore[]; } export { FuseIndex, Fuse as default }; export type { Expression, FuseGetFunction, FuseIndexObjectRecord, FuseIndexOptions, FuseIndexRecords, FuseIndexStringRecord, FuseOptionKey, FuseOptionKeyObject, FuseResult, FuseResultMatch, FuseSearchOptions, FuseSortFunction, FuseSortFunctionArg, FuseSortFunctionItem, FuseSortFunctionMatch, FuseSortFunctionMatchList, IFuseOptions, RangeTuple, RecordEntry, RecordEntryArrayItem, RecordEntryObject, SearchResult };