UNPKG

quetie

Version:

Just the cutest and tiniest queue/deque implementation!

2 lines 4.18 kB
var t=class{constructor(){this.clear()}t(t){return this.i+t&this.h.length-1}at(t){return this.h[this.t((t%this.o+this.o)%this.o)]}u(t,s){if(this.h[t]=s,++this.o<this.h.length)return;const i=this.h.length;this.h.length<<=1,this.h.copyWithin(i,0,this.i),this.h.fill(void 0,0,this.i)}push(t){this.u(this.t(this.o),t)}l(t){this.o--;const s=this.h[t];return this.h[t]=void 0,s}shift(){if(!this.o)return;const t=this.l(this.i);return this.i=this.t(1),t}*[Symbol.iterator](){for(let t=0;t<this.o;t++)yield this.at(t)}clear(){this.h=Array(16),this.i=0,this.o=0}get size(){return this.o}},s=class extends t{unshift(t){this.u(this.i=this.t(-1),t)}pop(){if(this.o)return this.l(this.t(this.o-1))}};export{s as Deque,t as Queue}; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBRdWV1ZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuY2xlYXIoKVxuICB9XG5cbiAgX21hc2soaW5kZXgpIHtcbiAgICByZXR1cm4gKHRoaXMuX3N0YXJ0SW5kZXggKyBpbmRleCkgJiAodGhpcy5fZGF0YS5sZW5ndGggLSAxKVxuICB9XG5cbiAgYXQoaW5kZXgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YVtcbiAgICAgIHRoaXMuX21hc2soKChpbmRleCAlIHRoaXMuX3NpemUpICsgdGhpcy5fc2l6ZSkgJSB0aGlzLl9zaXplKVxuICAgIF1cbiAgfVxuXG4gIF9hZGQoaW5kZXgsIHZhbHVlKSB7XG4gICAgdGhpcy5fZGF0YVtpbmRleF0gPSB2YWx1ZVxuXG4gICAgaWYgKCsrdGhpcy5fc2l6ZSA8IHRoaXMuX2RhdGEubGVuZ3RoKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBwcmV2aW91c0NhcGFjaXR5ID0gdGhpcy5fZGF0YS5sZW5ndGhcbiAgICB0aGlzLl9kYXRhLmxlbmd0aCA8PD0gMVxuICAgIHRoaXMuX2RhdGEuY29weVdpdGhpbihwcmV2aW91c0NhcGFjaXR5LCAwLCB0aGlzLl9zdGFydEluZGV4KVxuICAgIHRoaXMuX2RhdGEuZmlsbCh1bmRlZmluZWQsIDAsIHRoaXMuX3N0YXJ0SW5kZXgpXG4gIH1cblxuICBwdXNoKHZhbHVlKSB7XG4gICAgdGhpcy5fYWRkKHRoaXMuX21hc2sodGhpcy5fc2l6ZSksIHZhbHVlKVxuICB9XG5cbiAgX3JlbW92ZShpbmRleCkge1xuICAgIHRoaXMuX3NpemUtLVxuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5fZGF0YVtpbmRleF1cbiAgICB0aGlzLl9kYXRhW2luZGV4XSA9IHVuZGVmaW5lZFxuICAgIHJldHVybiB2YWx1ZVxuICB9XG5cbiAgc2hpZnQoKSB7XG4gICAgaWYgKCF0aGlzLl9zaXplKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLl9yZW1vdmUodGhpcy5fc3RhcnRJbmRleClcbiAgICB0aGlzLl9zdGFydEluZGV4ID0gdGhpcy5fbWFzaygxKVxuICAgIHJldHVybiB2YWx1ZVxuICB9XG5cbiAgKltTeW1ib2wuaXRlcmF0b3JdKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fc2l6ZTsgaSsrKSB7XG4gICAgICB5aWVsZCB0aGlzLmF0KGkpXG4gICAgfVxuICB9XG5cbiAgY2xlYXIoKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vbmV3LWZvci1idWlsdGluc1xuICAgIHRoaXMuX2RhdGEgPSBBcnJheSgxNilcbiAgICB0aGlzLl9zdGFydEluZGV4ID0gMFxuICAgIHRoaXMuX3NpemUgPSAwXG4gIH1cblxuICBnZXQgc2l6ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fc2l6ZVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEZXF1ZSBleHRlbmRzIFF1ZXVlIHtcbiAgdW5zaGlmdCh2YWx1ZSkge1xuICAgIHRoaXMuX2FkZCgodGhpcy5fc3RhcnRJbmRleCA9IHRoaXMuX21hc2soLTEpKSwgdmFsdWUpXG4gIH1cblxuICBwb3AoKSB7XG4gICAgaWYgKHRoaXMuX3NpemUpIHtcbiAgICAgIHJldHVybiB0aGlzLl9yZW1vdmUodGhpcy5fbWFzayh0aGlzLl9zaXplIC0gMSkpXG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBLElBQWEsRUFBYixNQUNFLFdBQUEsR0FDRSxLQUFLLFFBR1AsQ0FBQSxDQUFNLEdBQ0osT0FBUSxLQUFLLEVBQWMsRUFBVSxLQUFLLEVBQU0sT0FBUyxFQUczRCxFQUFBLENBQUcsR0FDRCxPQUFPLEtBQUssRUFDVixLQUFLLEdBQVEsRUFBUSxLQUFLLEVBQVMsS0FBSyxHQUFTLEtBQUssSUFJMUQsQ0FBQSxDQUFLLEVBQU8sR0FHVixHQUZBLEtBQUssRUFBTSxHQUFTLElBRWQsS0FBSyxFQUFRLEtBQUssRUFBTSxPQUM1QixPQUdGLE1BQU0sRUFBbUIsS0FBSyxFQUFNLE9BQ3BDLEtBQUssRUFBTSxTQUFXLEVBQ3RCLEtBQUssRUFBTSxXQUFXLEVBQWtCLEVBQUcsS0FBSyxHQUNoRCxLQUFLLEVBQU0sVUFBSyxFQUFXLEVBQUcsS0FBSyxHQUdyQyxJQUFBLENBQUssR0FDSCxLQUFLLEVBQUssS0FBSyxFQUFNLEtBQUssR0FBUSxHQUdwQyxDQUFBLENBQVEsR0FDTixLQUFLLElBQ0wsTUFBTSxFQUFRLEtBQUssRUFBTSxHQUV6QixPQURBLEtBQUssRUFBTSxRQUFTLEVBQ2IsRUFHVCxLQUFBLEdBQ0UsSUFBSyxLQUFLLEVBQ1IsT0FHRixNQUFNLEVBQVEsS0FBSyxFQUFRLEtBQUssR0FFaEMsT0FEQSxLQUFLLEVBQWMsS0FBSyxFQUFNLEdBQ3ZCLEVBR1QsRUFBRSxPQUFPLFlBQ1AsSUFBSyxJQUFJLEVBQUksRUFBRyxFQUFJLEtBQUssRUFBTyxVQUN4QixLQUFLLEdBQUcsR0FJbEIsS0FBQSxHQUVFLEtBQUssRUFBUSxNQUFNLElBQ25CLEtBQUssRUFBYyxFQUNuQixLQUFLLEVBQVEsRUFHZixRQUFJLEdBQ0YsT0FBTyxLQUFLLElBSUgsRUFBYixjQUEyQixFQUN6QixPQUFBLENBQVEsR0FDTixLQUFLLEVBQU0sS0FBSyxFQUFjLEtBQUssR0FBTSxHQUFNLEdBR2pELEdBQUEsR0FDRSxHQUFJLEtBQUssRUFDUCxPQUFPLEtBQUssRUFBUSxLQUFLLEVBQU0sS0FBSyxFQUFRIn0=