|
- 'use strict'
- exports.__esModule = true
-
- const log = require('debug')('eslint-module-utils:ModuleCache')
-
- class ModuleCache {
- constructor(map) {
- this.map = map || new Map()
- }
-
- /**
- * returns value for returning inline
- * @param {[type]} cacheKey [description]
- * @param {[type]} result [description]
- */
- set(cacheKey, result) {
- this.map.set(cacheKey, { result, lastSeen: process.hrtime() })
- log('setting entry for', cacheKey)
- return result
- }
-
- get(cacheKey, settings) {
- if (this.map.has(cacheKey)) {
- const f = this.map.get(cacheKey)
- // check freshness
- if (process.hrtime(f.lastSeen)[0] < settings.lifetime) return f.result
- } else log('cache miss for', cacheKey)
- // cache miss
- return undefined
- }
-
- }
-
- ModuleCache.getSettings = function (settings) {
- const cacheSettings = Object.assign({
- lifetime: 30, // seconds
- }, settings['import/cache'])
-
- // parse infinity
- if (cacheSettings.lifetime === '∞' || cacheSettings.lifetime === 'Infinity') {
- cacheSettings.lifetime = Infinity
- }
-
- return cacheSettings
- }
-
- exports.default = ModuleCache
|