@jsonhero/fuzzy-json-search
Version:
VSCode style fuzzy search for JSON documents
35 lines (34 loc) • 1.38 kB
TypeScript
import LRUCache from "lru-cache";
import { IItemAccessor, ItemScore } from "./fuzzyScoring";
import { SearchResult } from "./search";
export declare type JSONHeroSearchFormatter = (value: unknown) => string | undefined;
export declare type JSONHeroSearchOptions = {
cacheSettings?: {
enabled?: boolean;
max?: number;
};
accessor?: IItemAccessor<string>;
formatter?: JSONHeroSearchFormatter;
};
export declare class JSONHeroSearch {
json: unknown;
items: string[];
scoreCache: Map<number, ItemScore>;
searchCache: LRUCache<string, Array<SearchResult<string>>>;
options: Required<Omit<JSONHeroSearchOptions, "formatter">>;
constructor(json: unknown, options?: JSONHeroSearchOptions);
prepareIndex(): void;
search(query: string): Array<SearchResult<string>>;
}
export declare class JSONHeroSearchAccessor implements IItemAccessor<string> {
json: unknown;
formatter: JSONHeroSearchFormatter;
valueCache: Map<string, string>;
constructor(json: unknown, formatter: JSONHeroSearchFormatter);
getIsArrayItem(path: string): boolean;
getItemLabel(path: string): string;
getItemDescription(path: string): string;
getItemPath(path: string): string;
getRawValue(path: string): string | undefined;
getFormattedValue(path: string): string | undefined;
}