moltres-utils
Version:
Utils for Moltres apps
86 lines (62 loc) • 1.81 kB
JavaScript
require("core-js/modules/es6.object.define-property");
require("core-js/modules/es6.array.for-each");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
require("core-js/modules/es6.weak-map");
require("core-js/modules/web.dom.iterable");
require("core-js/modules/es6.array.iterator");
require("core-js/modules/es6.string.iterator");
require("core-js/modules/es6.map");
var _ramda = require("ramda");
var makeCacheChain = function makeCacheChain() {
return {
strongMap: new Map(),
weakMap: new WeakMap()
};
};
var makeCacheLink = function makeCacheLink() {
return {
ref: {},
cacheChain: makeCacheChain()
};
};
var isWeakKey = (0, _ramda.is)(Object);
var setCacheKey = function setCacheKey(cacheChain, key, value) {
if (isWeakKey(key)) {
return cacheChain.weakMap.set(key, value);
}
return cacheChain.strongMap.set(key, value);
};
var getCacheKey = function getCacheKey(cacheChain, key) {
if (isWeakKey(key)) {
return cacheChain.weakMap.get(key);
}
return cacheChain.strongMap.get(key);
};
var linkCacheKey = function linkCacheKey(cacheChain, key) {
var link = getCacheKey(cacheChain, key);
if (!link) {
link = makeCacheLink();
setCacheKey(cacheChain, key, link);
}
return link;
};
var cache = makeCacheChain();
var cacheChain = function cacheChain() {
var chain = cache;
var link = linkCacheKey(chain);
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
(0, _ramda.forEach)(function (arg) {
link = linkCacheKey(chain, arg);
chain = link.cacheChain;
}, args);
return link.ref;
};
var _default = cacheChain;
exports.default = _default;
//# sourceMappingURL=cacheChain.js.map
;