UNPKG

1.12 kBJavaScriptView Raw
1"use strict"
2exports.__esModule = true
3
4const log = require('debug')('eslint-module-utils:ModuleCache')
5
6class ModuleCache {
7 constructor(map) {
8 this.map = map || new Map()
9 }
10
11 /**
12 * returns value for returning inline
13 * @param {[type]} cacheKey [description]
14 * @param {[type]} result [description]
15 */
16 set(cacheKey, result) {
17 this.map.set(cacheKey, { result, lastSeen: Date.now() })
18 log('setting entry for', cacheKey)
19 return result
20 }
21
22 get(cacheKey, settings) {
23 if (this.map.has(cacheKey)) {
24 const f = this.map.get(cacheKey)
25 // check fresness
26 if (Date.now() - f.lastSeen < (settings.lifetime * 1000)) return f.result
27 } else log('cache miss for', cacheKey)
28 // cache miss
29 return undefined
30 }
31
32}
33
34ModuleCache.getSettings = function (settings) {
35 const cacheSettings = Object.assign({
36 lifetime: 30, // seconds
37 }, settings['import/cache'])
38
39 // parse infinity
40 if (cacheSettings.lifetime === '∞' || cacheSettings.lifetime === 'Infinity') {
41 cacheSettings.lifetime = Infinity
42 }
43
44 return cacheSettings
45}
46
47exports.default = ModuleCache