/** @packageDocumentation
* @module Collections
*/
import { OrderedComparator } from "./Compare";
/**
* Derived from:
* Licensed under MIT. Copyright (c) 2010 Rasmus Andersson
* See README.md at https://github.com/rsms/js-lru for details.
*/
/** An entry holds the key and value, and pointers to any older and newer entries.
* @public
*/
export declare class Entry {
key: K;
value: V;
newer?: Entry;
older?: Entry;
constructor(key: K, value: V);
}
/** The interface that must be satisfied by the underlying container type used by a LRUCache.
* Compatible with a [[Dictionary]] or a standard Map.
* @public
*/
export interface EntryContainer {
readonly size: number;
clear(): void;
get(key: K): Entry | undefined;
set(key: K, value: Entry): void;
has(key: K): boolean;
delete(key: K): void;
}
/**
* A mapping of a key/value pairs, where the size of the cache can be limited.
*
* When entries are inserted, if the cache is "full", the
* least-recently-used (LRU) value is dropped. When entries are retrieved, they are moved to the front of the LRU list.
*
* Illustration of the design:
*
* ```
*
* entry entry entry entry
* ______ ______ ______ ______
* | head |.newer => | |.newer => | |.newer => | tail |
* | A | | B | | C | | D |
* |______| <= older.|______| <= older.|______| <= older.|______|
*
* removed <-- <-- <-- <-- <-- <-- <-- <-- <-- <-- <-- added
* ```
* @public
*/
export declare class LRUCache {
private _container;
/** Current number of items */
size: number;
/** Maximum number of items this cache can hold */
limit: number;
/** Least recently-used entry. Invalidated when cache is modified. */
oldest?: Entry;
/** Most recently-used entry. Invalidated when cache is modified. */
newest?: Entry;
/**
* Construct a new LRUCache to hold up to `limit` entries.
*/
constructor(limit: number, container: EntryContainer);
private markEntryAsUsed;
/** Replace all values in this cache with key-value pairs (2-element Arrays) from provided iterable. */
assign(entries: Iterable<[K, V]>): void;
/** Get and register recent use of .
* Returns the value associated with or undefined if not in cache.
*/
get(key: K): V | undefined;
/** Put into the cache associated with . Replaces any existing entry with the same key.
* @returns `this`.
*/
set(key: K, value: V): LRUCache;
/** Purge the least recently used (oldest) entry from the cache.
* @returns The removed entry or undefined if the cache was empty.
*/
shift(): [K, V] | undefined;
/** Access value for `key` without registering recent use. Useful if you do not
* want to change the state of the cache, but only "peek" at it.
* @returns The value associated with `key` if found, or undefined if not found.
*/
find(key: K): V | undefined;
/** Check if there's a value for key in the cache without registering recent use. */
has(key: K): boolean;
/** Remove entry `key` from cache and return its value.
* @returns The removed value, or undefined if not found.
*/
delete(key: K): V | undefined;
/** Removes all entries */
clear(): void;
/** Returns an iterator over all keys, starting with the oldest. */
keys(): Iterator | undefined;
/** Returns an iterator over all values, starting with the oldest. */
values(): Iterator | undefined;
/** Returns an iterator over all entries, starting with the oldest. */
entries(): Iterator<[K, V] | undefined> | undefined;
/** Call `fun` for each entry, starting with the oldest entry. */
forEach(fun: (value: V, key: K, m: LRUCache) => void, thisObj?: any): void;
/** Returns a JSON (array) representation */
toJSON(): Array<{
key: K;
value: V;
}>;
/** Returns a String representation */
toString(): string;
}
/** A [[LRUCache]] using a standard Map as its internal storage.
* @public
*/
export declare class LRUMap extends LRUCache {
/**
* Construct a new LRUMap to hold up to `limit` entries.
*/
constructor(limit: number);
}
/** A [[LRUCache]] using a [[Dictionary]] as its internal storage, permitting custom key comparison logic.
* @public
*/
export declare class LRUDictionary extends LRUCache {
/**
* Construct a new LRUDictionary to hold up to `limit` entries.
* @param limit The maximum number of entries permitted in the dictionary.
* @param compareKeys The function used to compare keys within the dictionary.
*/
constructor(limit: number, compareKeys: OrderedComparator);
}
//# sourceMappingURL=LRUMap.d.ts.map