1 | declare module 'fast-fuzzy' {
|
2 | export enum sortKind {
|
3 | insertOrder = "insertOrder",
|
4 | bestMatch = "bestMatch",
|
5 | };
|
6 |
|
7 | interface FuzzyOptions {
|
8 | ignoreCase?: boolean,
|
9 | ignoreSymbols?: boolean,
|
10 | normalizeWhitespace?: boolean,
|
11 | useDamerau?: boolean,
|
12 | useSellers?: boolean,
|
13 | returnMatchData?: boolean,
|
14 | sortBy?: sortKind,
|
15 | }
|
16 |
|
17 | interface AdditionalOptions<T> {
|
18 | keySelector?: (s: T) => string | string[],
|
19 | threshold?: number,
|
20 | }
|
21 |
|
22 | export type FullOptions<T> = FuzzyOptions & AdditionalOptions<T>;
|
23 |
|
24 | export interface MatchData<T> {
|
25 | item: T,
|
26 | original: string,
|
27 | key: string,
|
28 | score: number,
|
29 | match: {
|
30 | index: number,
|
31 | length: number,
|
32 | },
|
33 | }
|
34 |
|
35 | export function fuzzy<T extends FuzzyOptions>(term: string, candidate: string, options?: T): T["returnMatchData"] extends true ? MatchData<string> : number;
|
36 | export function search<T extends (string | object), U extends FullOptions<T>>(term: string, candidates: T[], options?: U):
|
37 | U["returnMatchData"] extends true ? MatchData<T>[] : T[];
|
38 | export class Searcher<T extends (string | object), U extends FullOptions<T>> {
|
39 | constructor(candidates?: T[], options?: U);
|
40 | add(...candidates: T[]): void;
|
41 | search<V extends FullOptions<T>>(term: string, options?: V):
|
42 | V["returnMatchData"] extends true ? MatchData<T>[]
|
43 | : V["returnMatchData"] extends false ? T[]
|
44 | : U["returnMatchData"] extends true ? MatchData<T>[]
|
45 | : T[];
|
46 | }
|
47 | }
|