mirror of
https://github.com/morhetz/gruvbox.git
synced 2025-11-16 07:13:46 -05:00
chore(package): re-init package with commitizen and standard-release
This commit is contained in:
55
node_modules/mem/index.js
generated
vendored
Normal file
55
node_modules/mem/index.js
generated
vendored
Normal file
@@ -0,0 +1,55 @@
|
||||
'use strict';
|
||||
const mimicFn = require('mimic-fn');
|
||||
|
||||
const cacheStore = new WeakMap();
|
||||
|
||||
const defaultCacheKey = function (x) {
|
||||
if (arguments.length === 1 && (x === null || x === undefined || (typeof x !== 'function' && typeof x !== 'object'))) {
|
||||
return x;
|
||||
}
|
||||
|
||||
return JSON.stringify(arguments);
|
||||
};
|
||||
|
||||
module.exports = (fn, opts) => {
|
||||
opts = Object.assign({
|
||||
cacheKey: defaultCacheKey,
|
||||
cache: new Map()
|
||||
}, opts);
|
||||
|
||||
const memoized = function () {
|
||||
const cache = cacheStore.get(memoized);
|
||||
const key = opts.cacheKey.apply(null, arguments);
|
||||
|
||||
if (cache.has(key)) {
|
||||
const c = cache.get(key);
|
||||
|
||||
if (typeof opts.maxAge !== 'number' || Date.now() < c.maxAge) {
|
||||
return c.data;
|
||||
}
|
||||
}
|
||||
|
||||
const ret = fn.apply(null, arguments);
|
||||
|
||||
cache.set(key, {
|
||||
data: ret,
|
||||
maxAge: Date.now() + (opts.maxAge || 0)
|
||||
});
|
||||
|
||||
return ret;
|
||||
};
|
||||
|
||||
mimicFn(memoized, fn);
|
||||
|
||||
cacheStore.set(memoized, opts.cache);
|
||||
|
||||
return memoized;
|
||||
};
|
||||
|
||||
module.exports.clear = fn => {
|
||||
const cache = cacheStore.get(fn);
|
||||
|
||||
if (cache && typeof cache.clear === 'function') {
|
||||
cache.clear();
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user