UNPKG

@thi.ng/trie

Version:

Trie-based map data structure with prefix search/query support

39 lines 1.74 kB
import type { Fn0, IObjectOf, Maybe, Nullable, Pair } from "@thi.ng/api"; export interface MultiTrieOpts<V> { /** * Custom value set factory (e.g. for using `Set` implementations from the * [thi.ng/associative](https://thi.ng/associative) package). Uses native * ES6 Set by default. */ vals: Fn0<Set<V>>; } export declare class MultiTrie<K extends ArrayLike<any>, V> { protected opts?: Partial<MultiTrieOpts<V>> | undefined; protected next: IObjectOf<MultiTrie<K, V>>; protected vals?: Set<V>; protected n: number; constructor(pairs?: Nullable<Iterable<Pair<K, V>>>, opts?: Partial<MultiTrieOpts<V>> | undefined); [Symbol.iterator](): Generator<(string | V)[], void, unknown>; keys(sep?: string, prefix?: string): Generator<string, void, unknown>; values(): Generator<V, void, unknown>; suffixes(prefix: K, withPrefix?: boolean, sep?: string): Generator<string, void, unknown>; clear(): void; has(key: K): boolean; hasPrefix(prefix: K): boolean; get(key: K): Maybe<Set<V>>; find(key: K): MultiTrie<K, V> | undefined; /** * Returns longest known prefix for `key` as array. If array is * empty, the given key has no partial matches. * * @param key - */ knownPrefix(key: K): K[]; hasKnownPrefix(key: K): boolean; add(key: K, val: V): void; into(pairs: Iterable<[K, V]>): void; delete(prefix: K, val?: V): boolean; protected queueChildren(queue: [string, MultiTrie<any, any>][], prefix: string, sep?: string): void; } export declare const defMultiTrie: <K extends ArrayLike<any>, V>(pairs?: Iterable<Pair<K, V>>, opts?: Partial<MultiTrieOpts<V>>) => MultiTrie<K, V>; //# sourceMappingURL=multi-trie.d.ts.map