blob: a06616de9b6671ec74eeb69567b97e4e64024dfa [file] [log] [blame]
Tim van der Lippe2c891972021-07-29 16:22:50 +01001'use strict';
2exports.__esModule = true;
Tim van der Lippefdbd42e2020-04-07 15:14:36 +01003
Tim van der Lippe2c891972021-07-29 16:22:50 +01004const log = require('debug')('eslint-module-utils:ModuleCache');
Tim van der Lippefdbd42e2020-04-07 15:14:36 +01005
6class ModuleCache {
7 constructor(map) {
Tim van der Lippe2c891972021-07-29 16:22:50 +01008 this.map = map || new Map();
Tim van der Lippefdbd42e2020-04-07 15:14:36 +01009 }
10
11 /**
12 * returns value for returning inline
13 * @param {[type]} cacheKey [description]
14 * @param {[type]} result [description]
15 */
16 set(cacheKey, result) {
Tim van der Lippe2c891972021-07-29 16:22:50 +010017 this.map.set(cacheKey, { result, lastSeen: process.hrtime() });
18 log('setting entry for', cacheKey);
19 return result;
Tim van der Lippefdbd42e2020-04-07 15:14:36 +010020 }
21
22 get(cacheKey, settings) {
23 if (this.map.has(cacheKey)) {
Tim van der Lippe2c891972021-07-29 16:22:50 +010024 const f = this.map.get(cacheKey);
Tim van der Lippefdbd42e2020-04-07 15:14:36 +010025 // check freshness
Tim van der Lippe2c891972021-07-29 16:22:50 +010026 if (process.hrtime(f.lastSeen)[0] < settings.lifetime) return f.result;
27 } else log('cache miss for', cacheKey);
Tim van der Lippefdbd42e2020-04-07 15:14:36 +010028 // cache miss
Tim van der Lippe2c891972021-07-29 16:22:50 +010029 return undefined;
Tim van der Lippefdbd42e2020-04-07 15:14:36 +010030 }
31
32}
33
34ModuleCache.getSettings = function (settings) {
35 const cacheSettings = Object.assign({
36 lifetime: 30, // seconds
Tim van der Lippe2c891972021-07-29 16:22:50 +010037 }, settings['import/cache']);
Tim van der Lippefdbd42e2020-04-07 15:14:36 +010038
39 // parse infinity
40 if (cacheSettings.lifetime === '∞' || cacheSettings.lifetime === 'Infinity') {
Tim van der Lippe2c891972021-07-29 16:22:50 +010041 cacheSettings.lifetime = Infinity;
Tim van der Lippefdbd42e2020-04-07 15:14:36 +010042 }
43
Tim van der Lippe2c891972021-07-29 16:22:50 +010044 return cacheSettings;
45};
Tim van der Lippefdbd42e2020-04-07 15:14:36 +010046
Tim van der Lippe2c891972021-07-29 16:22:50 +010047exports.default = ModuleCache;