UNPKG

ts-generic-collections-linq

Version:

TypeScript library provides strongly-typed, queryable collections.

135 lines 8.11 kB
/** * @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