UNPKG

@storm-stack/utilities

Version:

This package includes various base utility class and various functions to assist in the development process.

78 lines (77 loc) 2.52 kB
/** * Forked from match-sorter by Kent C. Dodds */ type KeyAttributes = { threshold?: Ranking; maxRanking: Ranking; minRanking: Ranking; }; interface RankingInfo { rankedValue: string; rank: Ranking; keyIndex: number; keyThreshold: Ranking | undefined; } interface ValueGetterKey<ItemType> { (item: ItemType): string | Array<string>; } interface IndexedItem<ItemType> { item: ItemType; index: number; } interface RankedItem<ItemType> extends RankingInfo, IndexedItem<ItemType> { } interface BaseSorter<ItemType> { (a: RankedItem<ItemType>, b: RankedItem<ItemType>): number; } interface Sorter<ItemType> { (matchItems: Array<RankedItem<ItemType>>): Array<RankedItem<ItemType>>; } interface KeyAttributesOptions<ItemType> { key?: string | ValueGetterKey<ItemType>; threshold?: Ranking; maxRanking?: Ranking; minRanking?: Ranking; } type KeyOption<ItemType> = KeyAttributesOptions<ItemType> | ValueGetterKey<ItemType> | string; interface MatchSorterOptions<ItemType = unknown> { keys?: ReadonlyArray<KeyOption<ItemType>>; threshold?: Ranking; baseSort?: BaseSorter<ItemType>; keepDiacritics?: boolean; sorter?: Sorter<ItemType>; } declare const rankings: { readonly CASE_SENSITIVE_EQUAL: 7; readonly EQUAL: 6; readonly STARTS_WITH: 5; readonly WORD_STARTS_WITH: 4; readonly CONTAINS: 3; readonly ACRONYM: 2; readonly MATCHES: 1; readonly NO_MATCH: 0; }; type Ranking = (typeof rankings)[keyof typeof rankings]; declare const defaultBaseSortFn: BaseSorter<unknown>; /** * Takes an array of items and a value and returns a new array with the items that match the given value * @param {Array} items - the items to sort * @param value - the value to use for ranking * @param options - Some options to configure the sorter * @return {Array} - the new sorted array */ declare function matchSorter<ItemType = string>(items: ReadonlyArray<ItemType>, value: string, options?: MatchSorterOptions<ItemType>): Array<ItemType>; declare namespace matchSorter { var rankings: { readonly CASE_SENSITIVE_EQUAL: 7; readonly EQUAL: 6; readonly STARTS_WITH: 5; readonly WORD_STARTS_WITH: 4; readonly CONTAINS: 3; readonly ACRONYM: 2; readonly MATCHES: 1; readonly NO_MATCH: 0; }; } export { defaultBaseSortFn, matchSorter, rankings }; export type { KeyAttributes, KeyAttributesOptions, KeyOption, MatchSorterOptions, RankingInfo, ValueGetterKey };