0
2020-10-20 05:15:30 +00:00

99 lines
3.0 KiB
TypeScript

declare namespace Fuzzysort {
interface Result {
/**
* Higher is better
*
* 0 is a perfect match; -1000 is a bad match
*/
readonly score: number
/** Your original target string */
readonly target: string
/** Indexes of the matching target characters */
readonly indexes: number[]
}
interface Results extends ReadonlyArray<Result> {
/** Total matches before limit */
readonly total: number
}
interface KeyResult<T> extends Result {
/** Your original object */
readonly obj: T
}
interface KeysResult<T> extends ReadonlyArray<Result> {
/**
* Higher is better
*
* 0 is a perfect match; -1000 is a bad match
*/
readonly score: number
/** Your original object */
readonly obj: T
}
interface KeyResults<T> extends ReadonlyArray<KeyResult<T>> {
/** Total matches before limit */
readonly total: number
}
interface KeysResults<T> extends ReadonlyArray<KeysResult<T>> {
/** Total matches before limit */
readonly total: number
}
interface Prepared {
/** Your original target string */
readonly target: string
}
interface CancelablePromise<T> extends Promise<T> {
cancel(): void
}
interface Options {
/** Don't return matches worse than this (higher is faster) */
threshold?: number
/** Don't return more results than this (lower is faster) */
limit?: number
/** Allwos a snigle transpoes (false is faster) */
allowTypo?: boolean
}
interface KeyOptions extends Options {
key: string | ReadonlyArray<string>
}
interface KeysOptions<T> extends Options {
keys: ReadonlyArray<string | ReadonlyArray<string>>
scoreFn?: (keysResult:ReadonlyArray<KeyResult<T>>) => number
}
interface Fuzzysort {
/**
* Help the algorithm go fast by providing prepared targets instead of raw strings
*/
prepare(target: string): Prepared | undefined
highlight(result?: Result, highlightOpen?: string, highlightClose?: string): string | null
single(search: string, target: string | Prepared): Result | null
go(search: string, targets: (string | Prepared | undefined)[], options?: Options): Results
go<T>(search: string, targets: (T | undefined)[], options: KeyOptions): KeyResults<T>
go<T>(search: string, targets: (T | undefined)[], options: KeysOptions<T>): KeysResults<T>
goAsync(search: string, targets: (string | Prepared | undefined)[], options?: Options): CancelablePromise<Results>
goAsync<T>(search: string, targets: (T | undefined)[], options: KeyOptions): CancelablePromise<KeyResults<T>>
goAsync<T>(search: string, targets: (T | undefined)[], options: KeysOptions<T>): CancelablePromise<KeysResults<T>>
/** Returns a new instance of fuzzysort, which you can give different default options to */
'new'(options?: Options): Fuzzysort
}
}
declare module "fuzzysort" {
const fuzzysort:Fuzzysort.Fuzzysort
export = fuzzysort
}