| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 | (function (global, factory) {typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :typeof define === 'function' && define.amd ? define(factory) :(global = global || self, global.TinyQueue = factory());}(this, function () { 'use strict';var TinyQueue = function TinyQueue(data, compare) {    if ( data === void 0 ) data = [];    if ( compare === void 0 ) compare = defaultCompare;    this.data = data;    this.length = this.data.length;    this.compare = compare;    if (this.length > 0) {        for (var i = (this.length >> 1) - 1; i >= 0; i--) { this._down(i); }    }};TinyQueue.prototype.push = function push (item) {    this.data.push(item);    this.length++;    this._up(this.length - 1);};TinyQueue.prototype.pop = function pop () {    if (this.length === 0) { return undefined; }    var top = this.data[0];    var bottom = this.data.pop();    this.length--;    if (this.length > 0) {        this.data[0] = bottom;        this._down(0);    }    return top;};TinyQueue.prototype.peek = function peek () {    return this.data[0];};TinyQueue.prototype._up = function _up (pos) {    var ref = this;        var data = ref.data;        var compare = ref.compare;    var item = data[pos];    while (pos > 0) {        var parent = (pos - 1) >> 1;        var current = data[parent];        if (compare(item, current) >= 0) { break; }        data[pos] = current;        pos = parent;    }    data[pos] = item;};TinyQueue.prototype._down = function _down (pos) {    var ref = this;        var data = ref.data;        var compare = ref.compare;    var halfLength = this.length >> 1;    var item = data[pos];    while (pos < halfLength) {        var left = (pos << 1) + 1;        var best = data[left];        var right = left + 1;        if (right < this.length && compare(data[right], best) < 0) {            left = right;            best = data[right];        }        if (compare(best, item) >= 0) { break; }        data[pos] = best;        pos = left;    }    data[pos] = item;};function defaultCompare(a, b) {    return a < b ? -1 : a > b ? 1 : 0;}return TinyQueue;}));
 |