UNPKG

astx

Version:

super powerful structural search and replace for JavaScript and TypeScript to automate your refactoring

42 lines (34 loc) 3.66 kB
export default class RingBuffer { buffer _size = 0 offset = 0 constructor(capacity) { this.buffer = new Array(capacity) } push(...values) { for (const value of values) { if (this.isFull) { throw new Error(`buffer is full`) } const i = this.offset + this._size++ this.buffer[i < this.buffer.length ? i : i - this.buffer.length] = value } } pull() { if (!this._size) return undefined const result = this.buffer[this.offset] this.offset++ if (this.offset === this.buffer.length) this.offset = 0 this._size-- return result } get size() { return this._size } get isFull() { return this._size === this.buffer.length } get capacity() { return this.buffer.length } } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSaW5nQnVmZmVyIiwiYnVmZmVyIiwiX3NpemUiLCJvZmZzZXQiLCJjb25zdHJ1Y3RvciIsImNhcGFjaXR5IiwiQXJyYXkiLCJwdXNoIiwidmFsdWVzIiwidmFsdWUiLCJpc0Z1bGwiLCJFcnJvciIsImkiLCJsZW5ndGgiLCJwdWxsIiwidW5kZWZpbmVkIiwicmVzdWx0Iiwic2l6ZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL1JpbmdCdWZmZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmluZ0J1ZmZlcjxUPiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYnVmZmVyOiBUW11cbiAgcHJpdmF0ZSBfc2l6ZSA9IDBcbiAgcHJpdmF0ZSBvZmZzZXQgPSAwXG5cbiAgY29uc3RydWN0b3IoY2FwYWNpdHk6IG51bWJlcikge1xuICAgIHRoaXMuYnVmZmVyID0gbmV3IEFycmF5KGNhcGFjaXR5KVxuICB9XG5cbiAgcHVzaCguLi52YWx1ZXM6IFRbXSk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgdmFsdWUgb2YgdmFsdWVzKSB7XG4gICAgICBpZiAodGhpcy5pc0Z1bGwpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBidWZmZXIgaXMgZnVsbGApXG4gICAgICB9XG4gICAgICBjb25zdCBpID0gdGhpcy5vZmZzZXQgKyB0aGlzLl9zaXplKytcbiAgICAgIHRoaXMuYnVmZmVyW2kgPCB0aGlzLmJ1ZmZlci5sZW5ndGggPyBpIDogaSAtIHRoaXMuYnVmZmVyLmxlbmd0aF0gPSB2YWx1ZVxuICAgIH1cbiAgfVxuXG4gIHB1bGwoKTogVCB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCF0aGlzLl9zaXplKSByZXR1cm4gdW5kZWZpbmVkXG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5idWZmZXJbdGhpcy5vZmZzZXRdXG4gICAgdGhpcy5vZmZzZXQrK1xuICAgIGlmICh0aGlzLm9mZnNldCA9PT0gdGhpcy5idWZmZXIubGVuZ3RoKSB0aGlzLm9mZnNldCA9IDBcbiAgICB0aGlzLl9zaXplLS1cbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICBnZXQgc2l6ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9zaXplXG4gIH1cblxuICBnZXQgaXNGdWxsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9zaXplID09PSB0aGlzLmJ1ZmZlci5sZW5ndGhcbiAgfVxuXG4gIGdldCBjYXBhY2l0eSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmJ1ZmZlci5sZW5ndGhcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxlQUFlLE1BQU1BLFVBQU4sQ0FBb0I7RUFDaEJDLE1BQU07RUFDZkMsS0FBSyxHQUFHLENBQUg7RUFDTEMsTUFBTSxHQUFHLENBQUg7O0VBRWRDLFdBQVcsQ0FBQ0MsUUFBRCxFQUFtQjtJQUM1QixLQUFLSixNQUFMLEdBQWMsSUFBSUssS0FBSixDQUFVRCxRQUFWLENBQWQ7RUFDRDs7RUFFREUsSUFBSSxDQUFDLEdBQUdDLE1BQUosRUFBdUI7SUFDekIsS0FBSyxNQUFNQyxLQUFYLElBQW9CRCxNQUFwQixFQUE0QjtNQUMxQixJQUFJLEtBQUtFLE1BQVQsRUFBaUI7UUFDZixNQUFNLElBQUlDLEtBQUosQ0FBVyxnQkFBWCxDQUFOO01BQ0Q7TUFDRCxNQUFNQyxDQUFDLEdBQUcsS0FBS1QsTUFBTCxHQUFjLEtBQUtELEtBQUwsRUFBeEI7TUFDQSxLQUFLRCxNQUFMLENBQVlXLENBQUMsR0FBRyxLQUFLWCxNQUFMLENBQVlZLE1BQWhCLEdBQXlCRCxDQUF6QixHQUE2QkEsQ0FBQyxHQUFHLEtBQUtYLE1BQUwsQ0FBWVksTUFBekQsSUFBbUVKLEtBQW5FO0lBQ0Q7RUFDRjs7RUFFREssSUFBSSxHQUFrQjtJQUNwQixJQUFJLENBQUMsS0FBS1osS0FBVixFQUFpQixPQUFPYSxTQUFQO0lBQ2pCLE1BQU1DLE1BQU0sR0FBRyxLQUFLZixNQUFMLENBQVksS0FBS0UsTUFBakIsQ0FBZjtJQUNBLEtBQUtBLE1BQUw7SUFDQSxJQUFJLEtBQUtBLE1BQUwsS0FBZ0IsS0FBS0YsTUFBTCxDQUFZWSxNQUFoQyxFQUF3QyxLQUFLVixNQUFMLEdBQWMsQ0FBZDtJQUN4QyxLQUFLRCxLQUFMO0lBQ0EsT0FBT2MsTUFBUDtFQUNEOztFQUVPLElBQUpDLElBQUksR0FBVztJQUNqQixPQUFPLEtBQUtmLEtBQVo7RUFDRDs7RUFFUyxJQUFOUSxNQUFNLEdBQVk7SUFDcEIsT0FBTyxLQUFLUixLQUFMLEtBQWUsS0FBS0QsTUFBTCxDQUFZWSxNQUFsQztFQUNEOztFQUVXLElBQVJSLFFBQVEsR0FBVztJQUNyQixPQUFPLEtBQUtKLE1BQUwsQ0FBWVksTUFBbkI7RUFDRCxDQXRDZ0MifQ==