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
TypeScript
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;
};
}