UNPKG

@cute-dw/core

Version:

This TypeScript library is the main part of a more powerfull package designed for the fast WEB software development. The cornerstone of the library is the **DataStore** class, which might be useful when you need a full control of the data, but do not need

190 lines 14.2 kB
var _a; import { AbstractSet } from "./AbstractSet"; import { TreeMap } from "./TreeMap"; /** * A `NavigableSet` implementation based on a `TreeMap`. The elements are ordered using their natural ordering, or * by a `Comparator` provided at set creation time, depending on which constructor is used. */ export class TreeSet extends AbstractSet { constructor(comparator) { super(); /** * @override */ this[_a] = "TreeSet"; this.tMap = new TreeMap(comparator); } /** * @override */ get size() { return this.tMap.size; } /** * Gets a key comparator */ get comparator() { return this.tMap.comparator; } /** * @override */ append(key) { return (this.tMap.put(key, null) !== undefined); } /** * @override */ appendAll(collection) { let nCount = 0; if (collection) { for (let el of collection) { if (el != null && this.append(el)) { nCount++; } } } return nCount > 0; } /** * @override */ clone() { const ts = new TreeSet(this.tMap.comparator); ts.appendAll(this); return ts; } /** * @override */ clear() { this.tMap.clear(); } /** * @override */ contains(key) { return this.tMap.has(key); } /** * Deletes the key/value pair from the collection. This method is the member of the JavaScript's `Set` interface. * @param key The key value to remove mapping * @returns _true_ if the mapping for the `key` was deleted, _false_ otherwise * @see {@link remove} */ delete(key) { return this.tMap.delete(key); } /** * @override */ *entries() { for (let key of this) { yield [key, key]; } } /** * @override */ forEach(callbackfn, thisArg) { for (let key of this) { callbackfn(key, key, this); } } /** * @override */ has(key) { return this.tMap.has(key); } /** * @override */ *keys() { yield* this.tMap.keys(); } /** * @override */ *values() { yield* this.tMap.keys(); } /** * @override * @see {@link delete} */ remove(key) { return this.tMap.remove(key) !== undefined; } /** * @override */ *[(_a = Symbol.toStringTag, Symbol.iterator)]() { for (let key of this.tMap.keys()) { yield key; } } /** * @override */ first() { return this.tMap.firstKey(); } /** * @override */ last() { return this.tMap.lastKey(); } /** * @override */ ceiling(key) { return this.tMap.ceilingKey(key); } /** * @override */ floor(key) { return this.tMap.floorKey(key); } /** * @override */ higher(key) { return this.tMap.higherKey(key); } /** * @override */ lower(key) { return this.tMap.lowerKey(key); } /** * @override */ pollFirst() { const key = this.first(); if (key !== undefined) { this.delete(key); } return key; } /** * @override */ pollLast() { const key = this.last(); if (key !== undefined) { this.delete(key); } return key; } /** * @override */ toArray() { return [...this.keys()]; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHJlZVNldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2N1dGUtY29yZS9zcmMvbGliL2NvbGxlY3Rpb25zL1RyZWVTZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUVBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHNUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVwQzs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sT0FBVyxTQUFRLFdBQWM7SUFHNUMsWUFBWSxVQUEwQjtRQUNwQyxLQUFLLEVBQUUsQ0FBQztRQXlHVjs7V0FFRztRQUNILFFBQW9CLEdBQVcsU0FBUyxDQUFDO1FBM0d2QyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksT0FBTyxDQUFVLFVBQVUsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFDRDs7T0FFRztJQUNILElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDeEIsQ0FBQztJQUNEOztPQUVHO0lBQ0gsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUM5QixDQUFDO0lBQ0Q7O09BRUc7SUFDSCxNQUFNLENBQUMsR0FBTTtRQUNYLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUNEOztPQUVHO0lBQ0gsU0FBUyxDQUFjLFVBQXlCO1FBQzlDLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztRQUNmLElBQUksVUFBVSxFQUFFO1lBQ2QsS0FBSyxJQUFJLEVBQUUsSUFBSSxVQUFVLEVBQUU7Z0JBQ3pCLElBQUksRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFO29CQUNqQyxNQUFNLEVB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QUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBQ0Q7O09BRUc7SUFDSCxTQUFTO1FBQ1AsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3pCLElBQUksR0FBRyxLQUFLLFNBQVMsRUFBRTtZQUNyQixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ2xCO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBQ0Q7O09BRUc7SUFDSCxRQUFRO1FBQ04sTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3hCLElBQUksR0FBRyxLQUFLLFNBQVMsRUFBRTtZQUNyQixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ2xCO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBQ0Q7O09BRUc7SUFDSCxPQUFPO1FBQ0wsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDMUIsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcGFyYXRvciB9IGZyb20gXCIuLi91dGlsL0NvbXBhcmF0b3JcIjtcclxuaW1wb3J0IHsgQ2xvbmVhYmxlIH0gZnJvbSBcIi4uL3V0aWwvaW50ZXJmYWNlL0Nsb25lYWJsZVwiO1xyXG5pbXBvcnQgeyBBYnN0cmFjdFNldCB9IGZyb20gXCIuL0Fic3RyYWN0U2V0XCI7XHJcbmltcG9ydCB7IENvbGxlY3Rpb24gfSBmcm9tIFwiLi9Db2xsZWN0aW9uXCI7XHJcbmltcG9ydCB7IE5hdmlnYWJsZVNldCB9IGZyb20gXCIuL05hdmlnYWJsZVNldFwiO1xyXG5pbXBvcnQgeyBUcmVlTWFwIH0gZnJvbSBcIi4vVHJlZU1hcFwiO1xyXG5cclxuLyoqXHJcbiAqIEEgYE5hdmlnYWJsZVNldGAgaW1wbGVtZW50YXRpb24gYmFzZWQgb24gYSBgVHJlZU1hcGAuIFRoZSBlbGVtZW50cyBhcmUgb3JkZXJlZCB1c2luZyB0aGVpciBuYXR1cmFsIG9yZGVyaW5nLCBvclxyXG4gKiBieSBhIGBDb21wYXJhdG9yYCBwcm92aWRlZCBhdCBzZXQgY3JlYXRpb24gdGltZSwgZGVwZW5kaW5nIG9uIHdoaWNoIGNvbnN0cnVjdG9yIGlzIHVzZWQuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgVHJlZVNldDxLPiBleHRlbmRzIEFic3RyYWN0U2V0PEs+IGltcGxlbWVudHMgTmF2aWdhYmxlU2V0PEs+LCBDbG9uZWFibGUge1xyXG4gIHByaXZhdGUgdE1hcDogVHJlZU1hcDxLLCBudWxsPjtcclxuXHJcbiAgY29uc3RydWN0b3IoY29tcGFyYXRvcj86IENvbXBhcmF0b3I8Sz4pIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICB0aGlzLnRNYXAgPSBuZXcgVHJlZU1hcDxLLCBudWxsPihjb21wYXJhdG9yKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogQG92ZXJyaWRlXHJcbiAgICovXHJcbiAgZ2V0IHNpemUoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLnRNYXAuc2l6ZTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogR2V0cyBhIGtleSBjb21wYXJhdG9yXHJcbiAgICovXHJcbiAgZ2V0IGNvbXBhcmF0b3IoKTogQ29tcGFyYXRvcjxLPiB7XHJcbiAgICByZXR1cm4gdGhpcy50TWFwLmNvbXBhcmF0b3I7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEBvdmVycmlkZVxyXG4gICAqL1xyXG4gIGFwcGVuZChrZXk6IEspOiBib29sZWFuIHtcclxuICAgIHJldHVybiAodGhpcy50TWFwLnB1dChrZXksIG51bGwpICE9PSB1bmRlZmluZWQpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBAb3ZlcnJpZGVcclxuICAgKi9cclxuICBhcHBlbmRBbGw8RSBleHRlbmRzIEs+KGNvbGxlY3Rpb246IENvbGxlY3Rpb248RT4pOiBib29sZWFuIHtcclxuICAgIGxldCBuQ291bnQgPSAwO1xyXG4gICAgaWYgKGNvbGxlY3Rpb24pIHtcclxuICAgICAgZm9yIChsZXQgZWwgb2YgY29sbGVjdGlvbikge1xyXG4gICAgICAgIGlmIChlbCAhPSBudWxsICYmIHRoaXMuYXBwZW5kKGVsKSkge1xyXG4gICAgICAgICAgbkNvdW50Kys7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbkNvdW50ID4gMDtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogQG92ZXJyaWRlXHJcbiAgICovXHJcbiAgY2xvbmUoKTogVHJlZVNldDxLPiB7XHJcbiAgICBjb25zdCB0cyA9IG5ldyBUcmVlU2V0PEs+KHRoaXMudE1hcC5jb21wYXJhdG9yKTtcclxuICAgIHRzLmFwcGVuZEFsbCh0aGlzKTtcclxuICAgIHJldHVybiB0cztcclxuICB9XHJcbiAgLyoqXHJcbiAgICogQG92ZXJyaWRlXHJcbiAgICovXHJcbiAgY2xlYXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRNYXAuY2xlYXIoKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogQG92ZXJyaWRlXHJcbiAgICovXHJcbiAgY29udGFpbnMoa2V5OiBLKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy50TWFwLmhhcyhrZXkpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBEZWxldGVzIHRoZSBrZXkvdmFsdWUgcGFpciBmcm9tIHRoZSBjb2xsZWN0aW9uLiBUaGlzIG1ldGhvZCBpcyB0aGUgbWVtYmVyIG9mIHRoZSBKYXZhU2NyaXB0J3MgYFNldGAgaW50ZXJmYWNlLlxyXG4gICAqIEBwYXJhbSBrZXkgVGhlIGtleSB2YWx1ZSB0byByZW1vdmUgbWFwcGluZ1xyXG4gICAqIEByZXR1cm5zIF90cnVlXyBpZiB0aGUgbWFwcGluZyBmb3IgdGhlICBga2V5YCB3YXMgZGVsZXRlZCwgX2ZhbHNlXyBvdGhlcndpc2VcclxuICAgKiBAc2VlIHtAbGluayByZW1vdmV9XHJcbiAgICovXHJcbiAgZGVsZXRlKGtleTogSyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMudE1hcC5kZWxldGUoa2V5KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogQG92ZXJyaWRlXHJcbiAgICovXHJcbiAgKmVudHJpZXMoKTogSXRlcmFibGVJdGVyYXRvcjxbSywgS10+IHtcclxuICAgIGZvciAobGV0IGtleSBvZiB0aGlzKSB7XHJcbiAgICAgIHlpZWxkIFtrZXksIGtleV07XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEBvdmVycmlkZVxyXG4gICAqL1xyXG4gIGZvckVhY2goY2FsbGJhY2tmbjogKHZhbHVlOiBLLCB2YWx1ZTI6IEssIHNldDogU2V0PEs+KSA9PiB2b2lkLCB0aGlzQXJnPzogYW55KTogdm9pZCB7XHJcbiAgICBmb3IgKGxldCBrZXkgb2YgdGhpcykge1xyXG4gICAgICBjYWxsYmFja2ZuKGtleSwga2V5LCB0aGlzKTtcclxuICAgIH1cclxuICB9XHJcbiAgLyoqXHJcbiAgICogQG92ZXJyaWRlXHJcbiAgICovXHJcbiAgaGFzKGtleTogSyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMudE1hcC5oYXMoa2V5KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogQG92ZXJyaWRlXHJcbiAgICovXHJcbiAgKmtleXMoKTogSXRlcmFibGVJdGVyYXRvcjxLPiB7XHJcbiAgICB5aWVsZCogdGhpcy50TWFwLmtleXMoKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogQG92ZXJyaWRlXHJcbiAgICovXHJcbiAgKnZhbHVlcygpOiBJdGVyYWJsZUl0ZXJhdG9yPEs+IHtcclxuICAgIHlpZWxkKiB0aGlzLnRNYXAua2V5cygpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBAb3ZlcnJpZGVcclxuICAgKiBAc2VlIHtAbGluayBkZWxldGV9XHJcbiAgICovXHJcbiAgcmVtb3ZlKGtleTogSyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMudE1hcC5yZW1vdmUoa2V5KSAhPT0gdW5kZWZpbmVkO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBAb3ZlcnJpZGVcclxuICAgKi9cclxuICBbU3ltYm9sLnRvU3RyaW5nVGFnXTogc3RyaW5nID0gXCJUcmVlU2V0XCI7XHJcbiAgLyoqXHJcbiAgICogQG92ZXJyaWRlXHJcbiAgICovXHJcbiAgKltTeW1ib2wuaXRlcmF0b3JdKCk6IEl0ZXJhYmxlSXRlcmF0b3I8Sz4ge1xyXG4gICAgZm9yIChsZXQga2V5IG9mIHRoaXMudE1hcC5rZXlzKCkpIHtcclxuICAgICAgeWllbGQga2V5O1xyXG4gICAgfVxyXG4gIH1cclxuICAvKipcclxuICAgKiBAb3ZlcnJpZGVcclxuICAgKi9cclxuICBmaXJzdCgpOiBLIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLnRNYXAuZmlyc3RLZXkoKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogQG92ZXJyaWRlXHJcbiAgICovXHJcbiAgbGFzdCgpOiBLIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLnRNYXAubGFzdEtleSgpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBAb3ZlcnJpZGVcclxuICAgKi9cclxuICBjZWlsaW5nKGtleTogSyk6IEsgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMudE1hcC5jZWlsaW5nS2V5KGtleSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEBvdmVycmlkZVxyXG4gICAqL1xyXG4gIGZsb29yKGtleTogSyk6IEsgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMudE1hcC5mbG9vcktleShrZXkpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBAb3ZlcnJpZGVcclxuICAgKi9cclxuICBoaWdoZXIoa2V5OiBLKTogSyB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy50TWFwLmhpZ2hlcktleShrZXkpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBAb3ZlcnJpZGVcclxuICAgKi9cclxuICBsb3dlcihrZXk6IEspOiBLIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLnRNYXAubG93ZXJLZXkoa2V5KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogQG92ZXJyaWRlXHJcbiAgICovXHJcbiAgcG9sbEZpcnN0KCk6IEsgfCB1bmRlZmluZWQge1xyXG4gICAgY29uc3Qga2V5ID0gdGhpcy5maXJzdCgpO1xyXG4gICAgaWYgKGtleSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuZGVsZXRlKGtleSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ga2V5O1xyXG4gIH1cclxuICAvKipcclxuICAgKiBAb3ZlcnJpZGVcclxuICAgKi9cclxuICBwb2xsTGFzdCgpOiBLIHwgdW5kZWZpbmVkIHtcclxuICAgIGNvbnN0IGtleSA9IHRoaXMubGFzdCgpO1xyXG4gICAgaWYgKGtleSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuZGVsZXRlKGtleSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ga2V5O1xyXG4gIH1cclxuICAvKipcclxuICAgKiBAb3ZlcnJpZGVcclxuICAgKi9cclxuICB0b0FycmF5KCk6IEtbXSB7XHJcbiAgICByZXR1cm4gWy4uLnRoaXMua2V5cygpXTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==