UNPKG

moltres-utils

Version:
86 lines (62 loc) 1.81 kB
"use strict"; 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