@aws-amplify/cache
Version:
Cache category of aws-amplify
132 lines (131 loc) • 4.29 kB
TypeScript
import { StorageCache } from './StorageCache';
import { ICache, CacheConfig, CacheItemOptions } from './types';
/**
* Customized in-memory cache with LRU implemented
* @member cacheObj - object which store items
* @member cacheList - list of keys in the cache with LRU
* @member curSizeInBytes - current size of the cache
* @member maxPriority - max of the priority
* @member cacheSizeLimit - the limit of cache size
*/
export declare class InMemoryCacheClass extends StorageCache implements ICache {
private cacheList;
private curSizeInBytes;
private maxPriority;
private cacheSizeLimit;
/**
* initialize the cache
*
* @param config - the configuration of the cache
*/
constructor(config?: CacheConfig);
/**
* decrease current size of the cache
*
* @param amount - the amount of the cache size which needs to be decreased
*/
private _decreaseCurSizeInBytes;
/**
* increase current size of the cache
*
* @param amount - the amount of the cache szie which need to be increased
*/
private _increaseCurSizeInBytes;
/**
* check whether item is expired
*
* @param key - the key of the item
*
* @return true if the item is expired.
*/
private _isExpired;
/**
* delete item from cache
*
* @param prefixedKey - the key of the item
* @param listIdx - indicates which cache list the key belongs to
*/
private _removeItem;
/**
* put item into cache
*
* @param prefixedKey - the key of the item
* @param itemData - the value of the item
* @param itemSizeInBytes - the byte size of the item
* @param listIdx - indicates which cache list the key belongs to
*/
private _setItem;
/**
* see whether cache is full
*
* @param itemSize
*
* @return true if cache is full
*/
private _isCacheFull;
/**
* check whether the cache contains the key
*
* @param key
*/
private containsKey;
/**
* * Set item into cache. You can put number, string, boolean or object.
* The cache will first check whether has the same key.
* If it has, it will delete the old item and then put the new item in
* The cache will pop out items if it is full
* You can specify the cache item options. The cache will abort and output a warning:
* If the key is invalid
* If the size of the item exceeds itemMaxSize.
* If the value is undefined
* If incorrect cache item configuration
* If error happened with browser storage
*
* @param key - the key of the item
* @param value - the value of the item
* @param options - optional, the specified meta-data
*
* @throws if the item is too big which exceeds the limit of single item size
* @throws if the key is invalid
*/
setItem(key: string, value: object | string | number | boolean, options?: CacheItemOptions): void;
/**
* Get item from cache. It will return null if item doesn’t exist or it has been expired.
* If you specified callback function in the options,
* then the function will be executed if no such item in the cache
* and finally put the return value into cache.
* Please make sure the callback function will return the value you want to put into the cache.
* The cache will abort output a warning:
* If the key is invalid
*
* @param key - the key of the item
* @param options - the options of callback function
*/
getItem(key: string, options?: CacheItemOptions): any;
/**
* remove item from the cache
*
* @param key - the key of the item
*/
removeItem(key: string): void;
/**
* clear the entire cache
*/
clear(): void;
/**
* Return all the keys in the cache.
*/
getAllKeys(): string[];
/**
* return the current size of the cache
*
* @return the current size of the cache
*/
getCacheCurSize(): number;
/**
* Return a new instance of cache with customized configuration.
* @param config - the customized configuration
*/
createInstance(config: CacheConfig): ICache;
}
export declare const InMemoryCache: ICache;