UNPKG

more-maps

Version:

A collection of additional map-like data structures. Including a bidirectional map, a multi map, and a bidirectional multi map.

50 lines (49 loc) 1.65 kB
export declare class BidirectionalMap<K = any, V = any> extends Map<K, V> { reverse: BidirectionalMap<V, K>; constructor(entries?: readonly (readonly [K, V])[] | Iterable<readonly [K, V]>); set(k: K, v: V): this; delete(k: K): boolean; } export declare class MultiMap<K = any, V = any> { private index; constructor(entries?: readonly (readonly [K, V[]])[] | Iterable<readonly [K, V[]]>); add(key: K, val: V): void; getAll(key: K): V[]; get(key: K, atIndex?: number): V; delete(key: K, val?: V): boolean; keys(): IterableIterator<K>; values(): import("iterare/lib/iterate").IteratorWithOperators<V>; clear(): void; get size(): number; get accSize(): number; has(key: K): boolean; forEach(cb: (key: K, vals: V[]) => void): void; [Symbol.iterator](): IterableIterator<[key: K, vals: V[]]>; entries(): IterableIterator<[K, V[]]>; } export declare class BidirectionalMultiMap<K = any, V = any> extends MultiMap<K, V> { reverse: BidirectionalMultiMap<V, K>; constructor(entries?: readonly (readonly [K, V[]])[] | Iterable<readonly [K, V[]]>); add(key: K, val: V): void; delete(key: K, val?: V): boolean; } export declare class Borrow<T> { private makeElem; private freeElems; private takenElems; get length(): number; constructor(makeElem: () => T); borrow(): { elem: T; done: () => void; }; } export declare class BorrowMap<T> { private makeElem?; private map; constructor(makeElem?: (key: string) => T); borrow(key: string, makeElem?: () => T): { elem: T; done: () => void; }; }