@stdlib/utils-circular-buffer
Version:
Circular buffer.
6 lines (5 loc) • 2.27 kB
JavaScript
"use strict";var b=function(r,t){return function(){return t||r((t={exports:{}}).exports,t),t.exports}};var _=b(function(I,l){
var q=require('@stdlib/assert-is-collection/dist'),m=require('@stdlib/assert-is-positive-integer/dist').isPrimitive,w=require('@stdlib/assert-is-nonnegative-integer/dist').isPrimitive,s=require('@stdlib/utils-define-nonenumerable-read-only-property/dist'),f=require('@stdlib/utils-define-nonenumerable-read-only-accessor/dist'),c=require('@stdlib/symbol-iterator/dist'),A=require('@stdlib/constants-float64-max/dist'),N=require('@stdlib/array-base-arraylike2object/dist'),v=require('@stdlib/error-tools-fmtprodmsg/dist');function o(r){var t,e;if(!(this instanceof o))return new o(r);if(m(r))for(t=[],e=0;e<r;e++)t.push(0);else if(q(r))t=r;else throw new TypeError(v('1S3An',r));return this._buffer=N(t),this._length=t.length,this._count=0,this._i=-1,this}s(o.prototype,"clear",function(){return this._count=0,this._i=-1,this});f(o.prototype,"count",function(){return this._count});f(o.prototype,"full",function(){return this._count===this._length});s(o.prototype,"iterator",function(t){var e,i,u,n,h,a;if(arguments.length){if(!w(t))throw new TypeError(v('1S32K',t));n=t}else n=A;return i=this,a=this._i,h=0,e={},s(e,"next",g),s(e,"return",p),c&&s(e,c,y),e;function g(){return h+=1,u||h>n?{done:!0}:i._count!==i._length?(u=!0,{done:!0}):(a=(a+1)%i._length,{value:i._buffer.accessors[0](i._buffer.data,a),done:!1})}function p(d){return u=!0,arguments.length?{value:d,done:!0}:{done:!0}}function y(){return i.iterator(n)}});f(o.prototype,"length",function(){return this._length});s(o.prototype,"push",function(t){var e,i,u,n;if(u=this._buffer.data,i=this._buffer.accessors[0],e=this._buffer.accessors[1],this._i=(this._i+1)%this._length,this._count<this._length){e(u,this._i,t),this._count+=1;return}return n=i(u,this._i),e(u,this._i,t),n});s(o.prototype,"toArray",function(){var t,e,i,u,n;for(t=this._buffer.data,e=this._buffer.accessors[0],i=[],n=1;n<=this._count;n++)u=(this._i+n)%this._count,i.push(e(t,u));return i});s(o.prototype,"toJSON",function(){var t={};return t.type="circular-buffer",t.length=this._length,t.data=this.toArray(),t});l.exports=o
});var O=_();module.exports=O;
/** @license Apache-2.0 */
//# sourceMappingURL=index.js.map