ts-generic-collections-linq
Version:
TypeScript library provides strongly-typed, queryable collections.
135 lines • 8.11 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { objCompare } from './common';
import { List } from './list';
/**
* @template T
*/
var /**
* @template T
*/
RandomizedQueue = /** @class */ (function () {
function RandomizedQueue(array) {
if (array === void 0) { array = null; }
this.list = new List();
this.peekIndex = -1;
if (array)
this.list = new List(array);
}
/**
* @return {?}
*/
RandomizedQueue.prototype.clear = /**
* @return {?}
*/
function () {
this.list.clear();
};
/**
* @param {?} item
* @return {?}
*/
RandomizedQueue.prototype.contains = /**
* @param {?} item
* @return {?}
*/
function (item) {
return this.list.any((/**
* @param {?} x
* @return {?}
*/
function (x) { return objCompare(x, item); }));
};
/**
* @return {?}
*/
RandomizedQueue.prototype.dequeue = /**
* @return {?}
*/
function () {
if (this.list.length > 0) {
/** @type {?} */
var min = 0;
/** @type {?} */
var max = this.list.length;
/** @type {?} */
var index = this.peekIndex >= 0 ? this.peekIndex : Math.floor(Math.random() * (max - min)) + min;
/** @type {?} */
var element = this.list.elementAt(index);
this.list.removeAt(index);
this.peekIndex = -1;
return element;
}
return null;
};
/**
* @param {?} item
* @return {?}
*/
RandomizedQueue.prototype.enqueue = /**
* @param {?} item
* @return {?}
*/
function (item) {
this.list.add(item);
};
/**
* @return {?}
*/
RandomizedQueue.prototype.peek = /**
* @return {?}
*/
function () {
if (this.list.length > 0) {
/** @type {?} */
var min = 0;
/** @type {?} */
var max = this.list.length;
this.peekIndex = Math.floor(Math.random() * (max - min)) + min;
/** @type {?} */
var element = this.list.elementAt(this.peekIndex);
return element;
}
return null;
};
/**
* @param {?} predicate
* @return {?}
*/
RandomizedQueue.prototype.forEach = /**
* @param {?} predicate
* @return {?}
*/
function (predicate) {
this.list.forEach(predicate);
};
/**
* @return {?}
*/
RandomizedQueue.prototype.toArray = /**
* @return {?}
*/
function () {
return this.list.toArray();
};
return RandomizedQueue;
}());
/**
* @template T
*/
export { RandomizedQueue };
if (false) {
/**
* @type {?}
* @private
*/
RandomizedQueue.prototype.list;
/**
* @type {?}
* @private
*/
RandomizedQueue.prototype.peekIndex;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZG9taXplZC5xdWV1ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL3RzLWdlbmVyaWMtY29sbGVjdGlvbnMtbGlucS8iLCJzb3VyY2VzIjpbImxpYi9yYW5kb21pemVkLnF1ZXVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxRQUFRLENBQUM7Ozs7QUFFOUI7Ozs7SUFJSSx5QkFBWSxLQUFzQjtRQUF0QixzQkFBQSxFQUFBLFlBQXNCO1FBSDFCLFNBQUksR0FBWSxJQUFJLElBQUksRUFBSyxDQUFDO1FBQzlCLGNBQVMsR0FBVyxDQUFDLENBQUMsQ0FBQztRQUczQixJQUFJLEtBQUs7WUFDTCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksSUFBSSxDQUFJLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7Ozs7SUFFRCwrQkFBSzs7O0lBQUw7UUFDSSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3RCLENBQUM7Ozs7O0lBQ0Qsa0NBQVE7Ozs7SUFBUixVQUFTLElBQU87UUFDWixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRzs7OztRQUFDLFVBQUEsQ0FBQyxJQUFJLE9BQUEsVUFBVSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBbkIsQ0FBbUIsRUFBQyxDQUFDO0lBQ25ELENBQUM7Ozs7SUFDRCxpQ0FBTzs7O0lBQVA7UUFDSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFDeEI7O2dCQUNRLEdBQUcsR0FBRyxDQUFDOztnQkFDUCxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNOztnQkFFdEIsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUc7O2dCQUU1RixPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO1lBRXhDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRTFCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFFcEIsT0FBTyxPQUFPLENBQUM7U0FDbEI7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDOzs7OztJQUNELGlDQUFPOzs7O0lBQVAsVUFBUSxJQUFPO1FBQ1gsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEIsQ0FBQzs7OztJQUNELDhCQUFJOzs7SUFBSjtRQUNJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUN4Qjs7Z0JBQ1EsR0FBRyxHQUFHLENBQUM7O2dCQUNQLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU07WUFFMUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQzs7Z0JBRTNELE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBRWpELE9BQU8sT0FBTyxDQUFDO1NBQ2xCO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQzs7Ozs7SUFDRCxpQ0FBTzs7OztJQUFQLFVBQVEsU0FBMkI7UUFDL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDakMsQ0FBQzs7OztJQUNELGlDQUFPOzs7SUFBUDtRQUNJLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBQ0wsc0JBQUM7QUFBRCxDQUFDLEFBMURELElBMERDOzs7Ozs7Ozs7O0lBekRHLCtCQUFzQzs7Ozs7SUFDdEMsb0NBQStCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSVF1ZXVlIH0gZnJvbSAnLi9xdWV1ZSc7XHJcbmltcG9ydCB7IG9iakNvbXBhcmUgfSBmcm9tICcuL2NvbW1vbic7XHJcbmltcG9ydCB7IExpc3QgfSBmcm9tICcuL2xpc3QnO1xyXG5cclxuZXhwb3J0IGNsYXNzIFJhbmRvbWl6ZWRRdWV1ZTxUPiBpbXBsZW1lbnRzIElRdWV1ZTxUPiB7XHJcbiAgICBwcml2YXRlIGxpc3Q6IExpc3Q8VD4gPSBuZXcgTGlzdDxUPigpOyAgXHJcbiAgICBwcml2YXRlIHBlZWtJbmRleDogbnVtYmVyID0gLTE7ICBcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihhcnJheTogQXJyYXk8VD4gPSBudWxsKSB7XHJcbiAgICAgICAgaWYgKGFycmF5KVxyXG4gICAgICAgICAgICB0aGlzLmxpc3QgPSBuZXcgTGlzdDxUPihhcnJheSk7XHJcbiAgICB9XHJcblxyXG4gICAgY2xlYXIoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5saXN0LmNsZWFyKCk7XHJcbiAgICB9XHJcbiAgICBjb250YWlucyhpdGVtOiBUKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubGlzdC5hbnkoeCA9PiBvYmpDb21wYXJlKHgsIGl0ZW0pKTtcclxuICAgIH1cclxuICAgIGRlcXVldWUoKSA6IFQge1xyXG4gICAgICAgIGlmICh0aGlzLmxpc3QubGVuZ3RoID4gMClcclxuICAgICAgICB7ICAgICAgICAgIFxyXG4gICAgICAgICAgICB2YXIgbWluID0gMDtcclxuICAgICAgICAgICAgdmFyIG1heCA9IHRoaXMubGlzdC5sZW5ndGg7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB2YXIgaW5kZXggPSB0aGlzLnBlZWtJbmRleCA+PSAwID8gdGhpcy5wZWVrSW5kZXggOiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluKSkgKyBtaW47XHJcblxyXG4gICAgICAgICAgICB2YXIgZWxlbWVudCA9IHRoaXMubGlzdC5lbGVtZW50QXQoaW5kZXgpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5saXN0LnJlbW92ZUF0KGluZGV4KTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMucGVla0luZGV4ID0gLTE7XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gZWxlbWVudDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgZW5xdWV1ZShpdGVtOiBUKSA6IHZvaWQge1xyXG4gICAgICAgIHRoaXMubGlzdC5hZGQoaXRlbSk7XHJcbiAgICB9XHJcbiAgICBwZWVrKCkgOiBUIHtcclxuICAgICAgICBpZiAodGhpcy5saXN0Lmxlbmd0aCA+IDApXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB2YXIgbWluID0gMDtcclxuICAgICAgICAgICAgdmFyIG1heCA9IHRoaXMubGlzdC5sZW5ndGg7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnBlZWtJbmRleCA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIChtYXggLSBtaW4pKSArIG1pbjtcclxuXHJcbiAgICAgICAgICAgIHZhciBlbGVtZW50ID0gdGhpcy5saXN0LmVsZW1lbnRBdCh0aGlzLnBlZWtJbmRleCk7ICAgICAgICBcclxuXHJcbiAgICAgICAgICAgIHJldHVybiBlbGVtZW50O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBmb3JFYWNoKHByZWRpY2F0ZTogKGl0ZW06IFQpPT4gdm9pZCkgOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmxpc3QuZm9yRWFjaChwcmVkaWNhdGUpO1xyXG4gICAgfVxyXG4gICAgdG9BcnJheSgpIDogQXJyYXk8VD4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmxpc3QudG9BcnJheSgpO1xyXG4gICAgfVxyXG59Il19