fuzzball
Version:
Fuzzy string matching algorithms and utilities, port of the TheFuzz Python library.
191 lines (171 loc) • 7.71 kB
TypeScript
export interface FuzzballBaseOptions {
/**
* Apply basic cleanup, non-alphanumeric to whitespace etc. if true. default true
*/
full_process?: boolean;
/**
* Strip non-ascii in full_process if true (non-ascii will not become whtespace), only applied if full_process is true as well, default true
*/
force_ascii?: boolean;
/**
* Collapse consecutive white space during full_process, default true
*/
collapseWhitespace?: boolean;
/**
* Substitution cost, default 1 for distance, 2 for all ratios, prob don't want to change it
*/
wildcards?: string;
/**
* Normalize unicode representations, default true when astral is true
*/
normalize?: boolean;
}
export interface FuzzballTokenSetOptions extends FuzzballBaseOptions {
/**
* Include ratio as part of token set test suite
*/
trySimple?: boolean;
}
interface FuzzballExtractBaseOptions extends FuzzballBaseOptions {
/**
* Include ratio as part of token set test suite
*/
trySimple?: boolean;
/**
* Scoring function, default: ratio
*/
scorer?: (str1: any, str2: any, opts?: FuzzballExtractOptions) => number;
/**
* Function that will be run on each choice (but not the query) before scoring
*/
processor?: (str: any) => any;
/**
* Max number of results to return
*/
limit?: number;
/**
* Lowest score to return, default 0
*/
cutoff?: number;
}
interface AbortController {
/**
* If extract has been aborted;
*/
signal: { aborted: boolean }
}
interface CancellationToken {
/**
* If extract has been canceled;
*/
canceled?: boolean;
}
export interface FuzzballExtractOptions extends FuzzballExtractBaseOptions {
/**
* Return array of objects instead of tuples
*/
returnObjects?: false;
}
export interface FuzzballExtractObjectOptions extends FuzzballExtractBaseOptions {
/**
* Return array of objects instead of tuples
*/
returnObjects: true;
}
export interface FuzzballAsyncExtractOptions extends FuzzballExtractOptions {
/**
* Track if extract has been aborted
*/
abortController?: AbortController;
/**
* Track if extract has been canceled
*/
cancelToken?: CancellationToken;
/**
* Number of loop iterations between each async iteration
*/
asyncLoopOffset?: number;
}
export interface FuzzballAsyncExtractObjectOptions extends FuzzballExtractObjectOptions {
/**
* Track if extract has been aborted
*/
abortController?: AbortController;
/**
* Track if extract has been canceled;
*/
cancelToken?: CancellationToken;
/**
* Number of loop iterations between each async iteration
*/
asyncLoopOffset?: number;
}
export interface FuzzballDedupeOptions extends FuzzballExtractOptions {
/**
* Keep the items and scores mapped to this value, default false
*/
keepmap?: false;
/**
* Function that will be run on each item before scoring
*/
processor?: (str: any) => string;
}
export interface FuzzballDedupeOptionsWithMap extends FuzzballExtractOptions {
/**
* Keep the items and scores mapped to this value, default false
*/
keepmap: true;
/**
* Function that will be run on each item before scoring
*/
processor?: (str: any) => string;
}
export interface FuzzballDedupeObjOptions extends FuzzballExtractObjectOptions {
/**
* Keep the items and scores mapped to this value, default false
*/
keepmap?: false;
/**
* Function that will be run on each item before scoring
*/
processor?: (str: any) => string;
}
export interface FuzzballDedupeObjOptionsWithMap extends FuzzballExtractObjectOptions {
/**
* Keep the items and scores mapped to this value, default false
*/
keepmap: true;
/**
* Function that will be run on each item before scoring
*/
processor?: (str: any) => string;
}
export function distance(str1: string, str2: string, opts?: FuzzballBaseOptions): number;
export function ratio(str1: string, str2: string, opts?: FuzzballBaseOptions): number;
export function token_set_ratio(str1: string, str2: string, opts?: FuzzballTokenSetOptions): number;
export function token_sort_ratio(str1: string, str2: string, opts?: FuzzballBaseOptions): number;
export function token_similarity_sort_ratio(str1: string, str2: string, opts?: FuzzballTokenSetOptions): number;
export function full_process(str: string, options?: FuzzballExtractOptions | boolean): string;
export function process_and_sort(str: string): string;
export function unique_tokens(str: string, opts?: FuzzballExtractOptions): string[];
export function extract(query: any, choices: any[], opts?: FuzzballExtractOptions): Array<[any, number, number]>;
export function extract(query: any, choices: Object, opts?: FuzzballExtractOptions): Array<[any, number, string]>;
export function extract(query: any, choices: any[], opts?: FuzzballExtractObjectOptions): Array<{choice: any, score: number, key: number}>;
export function extract(query: any, choices: Object, opts?: FuzzballExtractObjectOptions): Array<{ choice: any, score: number, key: string}>;
export function extractAsync(query: any, choices: any[], opts: FuzzballAsyncExtractOptions, callback: (err: any, results?: Array<[any, number, number]>) => void): void;
export function extractAsync(query: any, choices: Object, opts: FuzzballAsyncExtractOptions, callback: (err: any, results?: Array<[any, number, string]>) => void): void;
export function extractAsync(query: any, choices: any[], opts: FuzzballAsyncExtractObjectOptions, callback: (err: any, results?: Array<{ choice: any, score: number, key: number }>) => void): void;
export function extractAsync(query: any, choices: Object, opts: FuzzballAsyncExtractObjectOptions, callback: (err: any, results?: Array<{ choice: any, score: number, key: string }>) => void): void;
export function extractAsPromised(query: any, choices: any[], opts: FuzzballAsyncExtractOptions): Promise<Array<[any, number, number]>>;
export function extractAsPromised(query: any, choices: Object, opts: FuzzballAsyncExtractOptions): Promise<Array<[any, number, string]>>;
export function extractAsPromised(query: any, choices: any[], opts: FuzzballAsyncExtractObjectOptions): Promise<Array<{ choice: any, score: number, key: number }>>;
export function extractAsPromised(query: any, choices: Object, opts: FuzzballAsyncExtractObjectOptions): Promise<Array<{ choice: any, score: number, key: string }>>;
export function dedupe(contains_dupes: any[], opts?: FuzzballDedupeOptions): Array<[any, number]>;
export function dedupe(contains_dupes: Object, opts?: FuzzballDedupeOptions): Array<[any, string]>;
export function dedupe(contains_dupes: any[], opts?: FuzzballDedupeOptionsWithMap): Array<[any, number, Array<[any, number, number]>]>;
export function dedupe(contains_dupes: Object, opts?: FuzzballDedupeOptionsWithMap): Array<[any, string, Array<[any, number, string]>]>;
export function dedupe(contains_dupes: any[], opts?: FuzzballDedupeObjOptions): Array<{item: any, key: number}>;
export function dedupe(contains_dupes: Object, opts?: FuzzballDedupeObjOptions): Array<{ item: any, key: string }>;
export function dedupe(contains_dupes: any[], opts?: FuzzballDedupeObjOptionsWithMap): Array<{item: any, key: number, matches: Array<{ choice: any, score: number, key: number }>}>;
export function dedupe(contains_dupes: Object, opts?: FuzzballDedupeObjOptionsWithMap): Array<{item: any, key: string, matches: Array<{ choice: any, score: number, key: string }>}>;
export as namespace fuzzball;