"use strict";var RingBuffer=function(i){this._bufferSize=i,this.clear()};RingBuffer.prototype.clear=function(){this._buffer=new Array(this._bufferSize),this._ringOffset=0,this._ringSize=this._bufferSize,this._head=0,this._tail=0,this.length=0},RingBuffer.prototype.push=function(i){var t=!1,e=!1;this._ringSize<this._bufferSize?t=0===this._tail:this._ringOffset===this._ringSize&&(t=!0,e=0===this._tail),t&&(this._tail=this._bufferSize,this._buffer=this._buffer.concat(new Array(this._bufferSize)),this._bufferSize=this._buffer.length,e&&(this._ringSize=this._bufferSize)),this._buffer[this._tail]=i,this.length+=1,this._tail<this._ringSize&&(this._ringOffset+=1),this._tail=(this._tail+1)%this._bufferSize},RingBuffer.prototype.peek=function(){if(0!==this.length)return this._buffer[this._head]},RingBuffer.prototype.shift=function(){if(0!==this.length){var i=this._buffer[this._head];return this._buffer[this._head]=void 0,this.length-=1,this._ringOffset-=1,0===this._ringOffset&&this.length>0?(this._head=this._ringSize,this._ringOffset=this.length,this._ringSize=this._bufferSize):this._head=(this._head+1)%this._ringSize,i}},module.exports=RingBuffer;