Sha256: 359fdd28c1a35f8dae1c71483c5ba4c7af1f92c847057b6a5f0926140a88e694

Contents?: true

Size: 1.27 KB

Versions: 45

Compression:

Stored size: 1.27 KB

Contents

/**
 * @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 })
        }
    }
}

Version data entries

45 entries across 44 versions & 2 rubygems

Version Path
decidim-0.26.8 packages/eslint-config/node_modules/eslint-plugin-n/lib/util/cache.js
decidim-0.26.8 packages/eslint-config/node_modules/eslint-plugin-node/lib/util/cache.js
govuk_publishing_components-18.0.0 node_modules/eslint-plugin-node/lib/util/cache.js
govuk_publishing_components-17.21.0 node_modules/eslint-plugin-node/lib/util/cache.js
govuk_publishing_components-17.20.0 node_modules/eslint-plugin-node/lib/util/cache.js
govuk_publishing_components-17.19.1 node_modules/eslint-plugin-node/lib/util/cache.js
govuk_publishing_components-17.19.0 node_modules/eslint-plugin-node/lib/util/cache.js
govuk_publishing_components-17.18.0 node_modules/eslint-plugin-node/lib/util/cache.js
govuk_publishing_components-17.17.0 node_modules/eslint-plugin-node/lib/util/cache.js
govuk_publishing_components-17.16.0 node_modules/eslint-plugin-node/lib/util/cache.js
govuk_publishing_components-17.15.0 node_modules/eslint-plugin-node/lib/util/cache.js
govuk_publishing_components-17.14.0 node_modules/eslint-plugin-node/lib/util/cache.js
govuk_publishing_components-17.13.0 node_modules/eslint-plugin-node/lib/util/cache.js
govuk_publishing_components-17.12.2 node_modules/eslint-plugin-node/lib/util/cache.js
govuk_publishing_components-17.12.1 node_modules/eslint-plugin-node/lib/util/cache.js
govuk_publishing_components-17.12.0 node_modules/eslint-plugin-node/lib/util/cache.js
govuk_publishing_components-17.11.0 node_modules/eslint-plugin-node/lib/util/cache.js
govuk_publishing_components-17.10.0 node_modules/eslint-plugin-node/lib/util/cache.js
govuk_publishing_components-17.9.0 node_modules/eslint-plugin-node/lib/util/cache.js
govuk_publishing_components-17.8.0 node_modules/eslint-plugin-node/lib/util/cache.js