@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
JavaScript
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==