tw-merge
Version:
Merge CSS utility classes without style conflicts - small and zero config
41 lines (39 loc) • 1.08 kB
JavaScript
// LRU cache inspired from hashlru (https://github.com/dominictarr/hashlru/blob/v1.0.4/index.js) but object replaced with Map to improve performance
function createLruCache(maxCacheSize) {
if (maxCacheSize < 1) return {
get: function get() {
return undefined;
},
set: function set(_, value) {
return value;
}
};
var cacheSize = 0;
var cache = new Map();
var previousCache = new Map();
function update(key, value) {
cache.set(key, value);
cacheSize++;
if (cacheSize > maxCacheSize) {
cacheSize = 0;
previousCache = cache;
cache = new Map();
}
}
return {
get: function get(key) {
var value = cache.get(key);
if (value !== undefined) return value;
if ((value = previousCache.get(key)) !== undefined) {
update(key, value);
return value;
}
},
set: function set(key, value) {
if (cache.has(key)) cache.set(key, value);else update(key, value);
return value;
}
};
}
export { createLruCache };
//# sourceMappingURL=create-lru-cache.mjs.map