@selfage/counter
Version:
A dead simple in-memory Counter class.
31 lines • 2.73 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Counter = void 0;
class Counter {
constructor() {
this.actualMap = new Map();
}
get(key) {
let value = this.actualMap.get(key);
if (value === undefined) {
value = 0;
}
return value;
}
increment(key, step = 1) {
let value = this.get(key) + step;
this.actualMap.set(key, value);
return value;
}
get size() {
return this.actualMap.size;
}
entries() {
return this.actualMap.entries();
}
[Symbol.iterator]() {
return this.entries();
}
}
exports.Counter = Counter;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNvdW50ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsTUFBYSxPQUFPO0lBQXBCO1FBQ1MsY0FBUyxHQUFHLElBQUksR0FBRyxFQUFhLENBQUM7SUEyQjFDLENBQUM7SUF6QlEsR0FBRyxDQUFDLEdBQU07UUFDZixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNwQyxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN4QixLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ1osQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVNLFNBQVMsQ0FBQyxHQUFNLEVBQUUsT0FBZSxDQUFDO1FBQ3ZDLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMvQixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO0lBQzdCLENBQUM7SUFFTSxPQUFPO1FBQ1osT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7UUFDdEIsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDeEIsQ0FBQztDQUNGO0FBNUJELDBCQTRCQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBDb3VudGVyPEs+IHtcclxuICBwdWJsaWMgYWN0dWFsTWFwID0gbmV3IE1hcDxLLCBudW1iZXI+KCk7XHJcblxyXG4gIHB1YmxpYyBnZXQoa2V5OiBLKTogbnVtYmVyIHtcclxuICAgIGxldCB2YWx1ZSA9IHRoaXMuYWN0dWFsTWFwLmdldChrZXkpO1xyXG4gICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgdmFsdWUgPSAwO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGluY3JlbWVudChrZXk6IEssIHN0ZXA6IG51bWJlciA9IDEpOiBudW1iZXIge1xyXG4gICAgbGV0IHZhbHVlID0gdGhpcy5nZXQoa2V5KSArIHN0ZXA7XHJcbiAgICB0aGlzLmFjdHVhbE1hcC5zZXQoa2V5LCB2YWx1ZSk7XHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBnZXQgc2l6ZSgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuYWN0dWFsTWFwLnNpemU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZW50cmllcygpOiBJdGVyYXRvcjxbSywgbnVtYmVyXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYWN0dWFsTWFwLmVudHJpZXMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBbU3ltYm9sLml0ZXJhdG9yXSgpOiBJdGVyYXRvcjxbSywgbnVtYmVyXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZW50cmllcygpO1xyXG4gIH1cclxufVxyXG4iXX0=