UNPKG

ts-generic-collections-linq

Version:

TypeScript library provides strongly-typed, queryable collections.

127 lines 6.91 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { objCompare } from './common'; import { List } from './list'; /** * @record * @template T */ export function IStack() { } if (false) { /** * @return {?} */ IStack.prototype.clear = function () { }; /** * @param {?} item * @return {?} */ IStack.prototype.contains = function (item) { }; /** * @return {?} */ IStack.prototype.pop = function () { }; /** * @param {?} item * @return {?} */ IStack.prototype.push = function (item) { }; /** * @return {?} */ IStack.prototype.peek = function () { }; /** * @param {?} predicate * @return {?} */ IStack.prototype.forEach = function (predicate) { }; /** * @return {?} */ IStack.prototype.toArray = function () { }; } /** * @template T */ export class Stack { /** * @param {?=} array */ constructor(array = null) { this.list = new List(); if (array) this.list = new List(array); } /** * @return {?} */ clear() { this.list.clear(); } /** * @param {?} item * @return {?} */ contains(item) { return this.list.any((/** * @param {?} x * @return {?} */ x => objCompare(x, item))); } /** * @return {?} */ pop() { if (this.list.length > 0) { /** @type {?} */ var element = this.list.elementAt(this.list.length - 1); this.list.removeAt(this.list.length - 1); return element; } return null; } /** * @param {?} item * @return {?} */ push(item) { this.list.add(item); } /** * @return {?} */ peek() { if (this.list.length > 0) { /** @type {?} */ var element = this.list.elementAt(this.list.length - 1); return element; } return null; } /** * @param {?} predicate * @return {?} */ forEach(predicate) { this.list.reverse().forEach(predicate); } /** * @return {?} */ toArray() { /** @type {?} */ var tmp = new List(this.list.toArray()); return tmp.reverse().toArray(); } } if (false) { /** * @type {?} * @private */ Stack.prototype.list; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2suanMiLCJzb3VyY2VSb290Ijoibmc6Ly90cy1nZW5lcmljLWNvbGxlY3Rpb25zLWxpbnEvIiwic291cmNlcyI6WyJsaWIvc3RhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDdEMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFFBQVEsQ0FBQzs7Ozs7QUFFOUIsNEJBUUM7Ozs7O0lBUEcseUNBQWU7Ozs7O0lBQ2YsZ0RBQTRCOzs7O0lBQzVCLHVDQUFVOzs7OztJQUNWLDRDQUFxQjs7OztJQUNyQix3Q0FBVTs7Ozs7SUFDVixvREFBNEM7Ozs7SUFDNUMsMkNBQW9COzs7OztBQUd4QixNQUFNLE9BQU8sS0FBSzs7OztJQUdkLFlBQVksUUFBa0IsSUFBSTtRQUYxQixTQUFJLEdBQVksSUFBSSxJQUFJLEVBQUssQ0FBQztRQUdsQyxJQUFJLEtBQUs7WUFDTCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksSUFBSSxDQUFJLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7Ozs7SUFFRCxLQUFLO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN0QixDQUFDOzs7OztJQUNELFFBQVEsQ0FBQyxJQUFPO1FBQ1osT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUc7Ozs7UUFBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUMsQ0FBQztJQUNuRCxDQUFDOzs7O0lBQ0QsR0FBRztRQUNDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFOztnQkFFbEIsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUV2RCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztZQUV6QyxPQUFPLE9BQU8sQ0FBQztTQUNsQjtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7Ozs7O0lBQ0QsSUFBSSxDQUFDLElBQU87UUFDUixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QixDQUFDOzs7O0lBQ0QsSUFBSTtRQUNBLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFOztnQkFDbEIsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUV2RCxPQUFPLE9BQU8sQ0FBQztTQUNsQjtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7Ozs7O0lBQ0QsT0FBTyxDQUFDLFNBQTRCO1FBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzNDLENBQUM7Ozs7SUFDRCxPQUFPOztZQUNDLEdBQUcsR0FBRyxJQUFJLElBQUksQ0FBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzFDLE9BQU8sR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ25DLENBQUM7Q0FFSjs7Ozs7O0lBN0NHLHFCQUFzQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG9iakNvbXBhcmUgfSBmcm9tICcuL2NvbW1vbic7XHJcbmltcG9ydCB7IExpc3QgfSBmcm9tICcuL2xpc3QnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJU3RhY2s8VD4ge1xyXG4gICAgY2xlYXIoKSA6IHZvaWQ7XHJcbiAgICBjb250YWlucyhpdGVtOiBUKSA6IGJvb2xlYW47XHJcbiAgICBwb3AoKSA6IFQ7XHJcbiAgICBwdXNoKGl0ZW06IFQpIDogdm9pZDsgICAgXHJcbiAgICBwZWVrKCk6IFQ7XHJcbiAgICBmb3JFYWNoKHByZWRpY2F0ZTogKGl0ZW06IFQpPT4gdm9pZCkgOiB2b2lkO1xyXG4gICAgdG9BcnJheSgpOiBBcnJheTxUPjsgICAgXHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBTdGFjazxUPiBpbXBsZW1lbnRzIElTdGFjazxUPiB7XHJcbiAgICBwcml2YXRlIGxpc3Q6IExpc3Q8VD4gPSBuZXcgTGlzdDxUPigpOyAgICBcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihhcnJheTogQXJyYXk8VD4gPSBudWxsKSB7XHJcbiAgICAgICAgaWYgKGFycmF5KVxyXG4gICAgICAgICAgICB0aGlzLmxpc3QgPSBuZXcgTGlzdDxUPihhcnJheSk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGNsZWFyKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMubGlzdC5jbGVhcigpO1xyXG4gICAgfVxyXG4gICAgY29udGFpbnMoaXRlbTogVCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmxpc3QuYW55KHggPT4gb2JqQ29tcGFyZSh4LCBpdGVtKSk7XHJcbiAgICB9XHJcbiAgICBwb3AoKTogVCB7XHJcbiAgICAgICAgaWYgKHRoaXMubGlzdC5sZW5ndGggPiAwKSB7XHJcblxyXG4gICAgICAgICAgICB2YXIgZWxlbWVudCA9IHRoaXMubGlzdC5lbGVtZW50QXQodGhpcy5saXN0Lmxlbmd0aCAtIDEpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5saXN0LnJlbW92ZUF0KHRoaXMubGlzdC5sZW5ndGggLSAxKTtcclxuXHJcbiAgICAgICAgICAgIHJldHVybiBlbGVtZW50O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBwdXNoKGl0ZW06IFQpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmxpc3QuYWRkKGl0ZW0pO1xyXG4gICAgfVxyXG4gICAgcGVlaygpOiBUIHtcclxuICAgICAgICBpZiAodGhpcy5saXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSB0aGlzLmxpc3QuZWxlbWVudEF0KHRoaXMubGlzdC5sZW5ndGggLSAxKTsgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgIHJldHVybiBlbGVtZW50O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBmb3JFYWNoKHByZWRpY2F0ZTogKGl0ZW06IFQpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmxpc3QucmV2ZXJzZSgpLmZvckVhY2gocHJlZGljYXRlKTtcclxuICAgIH1cclxuICAgIHRvQXJyYXkoKTogVFtdIHtcclxuICAgICAgICB2YXIgdG1wID0gbmV3IExpc3Q8VD4odGhpcy5saXN0LnRvQXJyYXkoKSk7XHJcbiAgICAgICAgcmV0dXJuIHRtcC5yZXZlcnNlKCkudG9BcnJheSgpO1xyXG4gICAgfVxyXG4gICAgXHJcbn0iXX0=