| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 | /** * @author Toru Nagashima * See LICENSE file in root directory for full license. */"use strict"const SKIP_TIME = 5000/** * The class of cache. * The cache will dispose of each value if the value has not been accessed * during 5 seconds. */module.exports = class Cache {    /**     * Initialize this cache instance.     */    constructor() {        this.map = new Map()    }    /**     * Get the cached value of the given key.     * @param {any} key The key to get.     * @returns {any} The cached value or null.     */    get(key) {        const entry = this.map.get(key)        const now = Date.now()        if (entry) {            if (entry.expire > now) {                entry.expire = now + SKIP_TIME                return entry.value            }            this.map.delete(key)        }        return null    }    /**     * Set the value of the given key.     * @param {any} key The key to set.     * @param {any} value The value to set.     * @returns {void}     */    set(key, value) {        const entry = this.map.get(key)        const expire = Date.now() + SKIP_TIME        if (entry) {            entry.value = value            entry.expire = expire        } else {            this.map.set(key, { value, expire })        }    }}
 |