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 })
- }
- }
- }
|