@thi.ng/trie
Version:
Trie-based ES6-like Map data structures with prefix search/query support
42 lines • 1.65 kB
TypeScript
import type { Fn2, IObjectOf, Maybe, Pair } from "@thi.ng/api";
export declare class TrieMap<T> {
next: IObjectOf<TrieMap<T>>;
val?: T;
protected n: number;
constructor(pairs?: Iterable<Pair<string, T>>);
get size(): number;
[Symbol.iterator](): Generator<Pair<string, T>, void, unknown>;
keys(prefix?: string, includePrefix?: boolean): Generator<string, void, unknown>;
values(prefix?: string): Generator<NonNullable<T>, void, unknown>;
entries(prefix?: string, includePrefix?: boolean): Generator<Pair<string, T>, void, unknown>;
clear(): void;
has(key: string): boolean;
hasPrefix(prefix: string): boolean;
get(key: string, notFound?: T): Maybe<T>;
find(key: string): TrieMap<T> | undefined;
/**
* Returns longest known prefix for `key`. Returns undefined if given key
* has no partial matches.
*
* @param key -
*/
knownPrefix(key: string): string | undefined;
hasKnownPrefix(key: string): boolean;
set(key: string, val: T): void;
into(pairs: Iterable<Pair<string, T>>): void;
delete(prefix: string): boolean;
protected iterate<V>(fn: Fn2<string, TrieMap<T>, V>, prefix?: string, includePrefix?: boolean): Generator<V, void, unknown>;
}
export declare const defTrieMap: <T>(pairs?: Iterable<Pair<string, T>>) => TrieMap<T>;
export type SerializedTrieMap<T> = {
next: IObjectOf<SerializedTrieMap<T>>;
val?: T;
};
/**
* Reconstruct a {@link MultiTrie} from serialized JSON.
*
* @param src
* @param opts
*/
export declare const defTrieMapFromJSON: <V>(src: SerializedTrieMap<V>) => TrieMap<V>;
//# sourceMappingURL=trie-map.d.ts.map