mirror of
https://github.com/morhetz/gruvbox.git
synced 2025-11-16 23:33:38 -05:00
chore(package): re-init package with commitizen and standard-release
This commit is contained in:
114
node_modules/quick-lru/index.js
generated
vendored
Normal file
114
node_modules/quick-lru/index.js
generated
vendored
Normal file
@@ -0,0 +1,114 @@
|
||||
'use strict';
|
||||
|
||||
class QuickLRU {
|
||||
constructor(opts) {
|
||||
opts = Object.assign({}, opts);
|
||||
|
||||
if (!(opts.maxSize && opts.maxSize > 0)) {
|
||||
throw new TypeError('`maxSize` must be a number greater than 0');
|
||||
}
|
||||
|
||||
this.maxSize = opts.maxSize;
|
||||
this.cache = new Map();
|
||||
this.oldCache = new Map();
|
||||
this._size = 0;
|
||||
}
|
||||
|
||||
_set(key, value) {
|
||||
this.cache.set(key, value);
|
||||
this._size++;
|
||||
|
||||
if (this._size >= this.maxSize) {
|
||||
this._size = 0;
|
||||
this.oldCache = this.cache;
|
||||
this.cache = new Map();
|
||||
}
|
||||
}
|
||||
|
||||
get(key) {
|
||||
if (this.cache.has(key)) {
|
||||
return this.cache.get(key);
|
||||
}
|
||||
|
||||
if (this.oldCache.has(key)) {
|
||||
const value = this.oldCache.get(key);
|
||||
this._set(key, value);
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
set(key, value) {
|
||||
if (this.cache.has(key)) {
|
||||
this.cache.set(key, value);
|
||||
} else {
|
||||
this._set(key, value);
|
||||
}
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
has(key) {
|
||||
return this.cache.has(key) || this.oldCache.has(key);
|
||||
}
|
||||
|
||||
peek(key) {
|
||||
if (this.cache.has(key)) {
|
||||
return this.cache.get(key);
|
||||
}
|
||||
|
||||
if (this.oldCache.has(key)) {
|
||||
return this.oldCache.get(key);
|
||||
}
|
||||
}
|
||||
|
||||
delete(key) {
|
||||
if (this.cache.delete(key)) {
|
||||
this._size--;
|
||||
}
|
||||
|
||||
this.oldCache.delete(key);
|
||||
}
|
||||
|
||||
clear() {
|
||||
this.cache.clear();
|
||||
this.oldCache.clear();
|
||||
this._size = 0;
|
||||
}
|
||||
|
||||
* keys() {
|
||||
for (const el of this) {
|
||||
yield el[0];
|
||||
}
|
||||
}
|
||||
|
||||
* values() {
|
||||
for (const el of this) {
|
||||
yield el[1];
|
||||
}
|
||||
}
|
||||
|
||||
* [Symbol.iterator]() {
|
||||
for (const el of this.cache) {
|
||||
yield el;
|
||||
}
|
||||
|
||||
for (const el of this.oldCache) {
|
||||
if (!this.cache.has(el[0])) {
|
||||
yield el;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
get size() {
|
||||
let oldCacheSize = 0;
|
||||
for (const el of this.oldCache) {
|
||||
if (!this.cache.has(el[0])) {
|
||||
oldCacheSize++;
|
||||
}
|
||||
}
|
||||
|
||||
return this._size + oldCacheSize;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = QuickLRU;
|
||||
Reference in New Issue
Block a user