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
govuk_publishing_components-17.7.0 node_modules/eslint-plugin-node/lib/util/cache.js
govuk_publishing_components-17.6.1 node_modules/eslint-plugin-node/lib/util/cache.js
govuk_publishing_components-17.6.0 node_modules/eslint-plugin-node/lib/util/cache.js
govuk_publishing_components-17.5.0 node_modules/eslint-plugin-node/lib/util/cache.js
govuk_publishing_components-17.4.0 node_modules/eslint-plugin-node/lib/util/cache.js
govuk_publishing_components-17.3.0 node_modules/eslint-plugin-node/lib/util/cache.js
govuk_publishing_components-17.2.0 node_modules/eslint-plugin-node/lib/util/cache.js
govuk_publishing_components-17.1.1 node_modules/eslint-plugin-node/lib/util/cache.js
govuk_publishing_components-17.1.0 node_modules/eslint-plugin-node/lib/util/cache.js
govuk_publishing_components-17.0.0 node_modules/eslint-plugin-node/lib/util/cache.js
govuk_publishing_components-16.29.0 node_modules/eslint-plugin-node/lib/util/cache.js
govuk_publishing_components-16.28.0 node_modules/eslint-plugin-node/lib/util/cache.js
govuk_publishing_components-16.27.1 node_modules/eslint-plugin-node/lib/util/cache.js
govuk_publishing_components-16.27.0 node_modules/eslint-plugin-node/lib/util/cache.js
govuk_publishing_components-16.26.0 node_modules/eslint-plugin-node/lib/util/cache.js
govuk_publishing_components-16.25.0 node_modules/eslint-plugin-node/lib/util/cache.js
govuk_publishing_components-16.24.0 node_modules/eslint-plugin-node/lib/util/cache.js
govuk_publishing_components-16.23.0 node_modules/eslint-plugin-node/lib/util/cache.js
govuk_publishing_components-16.22.0 node_modules/eslint-plugin-node/lib/util/cache.js
govuk_publishing_components-16.21.0 node_modules/eslint-plugin-node/lib/util/cache.js