@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
111 lines • 9.51 kB
JavaScript
var _a;
import { AbstractQueue } from "./AbstractQueue";
import { MinHeap } from "./heap/MinHeap";
/**
* An unbounded priority `Queue` based on a priority heap. This queue orders elements according to an order specified
* at construction time, which is specified either according to their _natural order_, or according to a
* `Compare` function type, depending on which constructor is used. A priority queue does not permit _null_ and _undefined_ elements.
*/
export class PriorityQueue extends AbstractQueue {
constructor(compare) {
super();
this[_a] = "PriorityQueue";
this._minHeap = new MinHeap(compare);
}
/**
* @override
*/
get length() { return this._minHeap.size(); }
/**
* @override
*/
get size() { return this._minHeap.size(); }
/**
* @override
*/
element() {
return this._minHeap.peek();
}
/**
* Inserts the specified element into this priority queue
* @param value
* @returns
*/
offer(value) {
return this._minHeap.add(value);
}
/**
* @override
*/
peek() {
return this._minHeap.peek();
}
/**
* @override
*/
poll() {
return this._minHeap.poll();
}
/**
* @override
*/
removeFirst() {
return this._minHeap.poll();
}
/*
//++ Iterator implemetation
protected get iteratorFirstItem$(): number { return this._minHeap.size() >= 0 ? 0 : -1 }
protected iteratorValue$(index: number): Element<T> { return index >= 0 && index < this.size ? this._minHeap.get(index) : null; }
protected iteratorIterate$(fromIndex: number): number | null {
if (fromIndex >= 0 && fromIndex < (this._minHeap.size() - 1)) {
return fromIndex + 1;
}
return null;
}
//--
*/
*[Symbol.iterator]() {
const nSize = this.size;
for (let index = 0; index < nSize; index++) {
yield this._minHeap.get(index);
}
}
/**
* @override
*/
append(value) {
return this._minHeap.add(value);
}
/**
* @override
*/
clear() {
this._minHeap.clear();
}
/**
* @override
*/
contains(value) {
return this._minHeap.contains(value);
}
/**
* @override
*/
toArray() {
return this._minHeap.toArray();
}
/**
* @override
*/
remove(value) {
return this._minHeap.remove(value);
}
/**
* @override
*/
removeAt(index) {
return this._minHeap.removeAt(index);
}
}
_a = Symbol.toStringTag;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJpb3JpdHlRdWV1ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2N1dGUtY29yZS9zcmMvbGliL2NvbGxlY3Rpb25zL1ByaW9yaXR5UXVldWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVoRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekM7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxhQUFpQixTQUFRLGFBQWdCO0lBR3BELFlBQVksT0FBb0I7UUFDOUIsS0FBSyxFQUFFLENBQUM7UUFvR1YsUUFBb0IsR0FBRyxlQUFlLENBQUM7UUFuR3JDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxPQUFPLENBQUksT0FBTyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUNEOztPQUVHO0lBQ0gsSUFBSSxNQUFNLEtBQWMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFBLENBQUMsQ0FBQztJQUNyRDs7T0FFRztJQUNILElBQUksSUFBSSxLQUFnQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3REOztPQUVHO0lBQ0gsT0FBTztRQUNMLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBQ0Q7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxLQUFpQjtRQUNyQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFDRDs7T0FFRztJQUNILElBQUk7UUFDRixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUNEOztPQUVHO0lBQ0gsSUFBSTtRQUNGLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBQ0Q7O09BRUc7SUFDSCxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFDRDs7Ozs7Ozs7Ozs7TUFXRTtJQUVGLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1FBQ2hCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDeEIsS0FBSyxJQUFJLEtBQUssR0FBVyxDQUFDLEVBQUUsS0FBSyxHQUFHLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUNsRCxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ2hDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLEtBQWlCO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUNEOztPQUVHO0lBQ0gsS0FBSztRQUNILElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUNEOztPQUVHO0lBQ0gsUUFBUSxDQUFDLEtBQWlCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUNEOztPQUVHO0lBQ0gsT0FBTztRQUNMLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBQ0Q7O09BRUc7SUFDSCxNQUFNLENBQUMsS0FBaUI7UUFDdEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBQ0Q7O09BRUc7SUFDSCxRQUFRLENBQUMsS0FBYTtRQUNwQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7Q0FJRjtLQUZFLE1BQU0sQ0FBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcGFyZSB9IGZyb20gXCIuLi91dGlsL2Z1bmN0aW9uL0NvbXBhcmVcIjtcclxuaW1wb3J0IHsgQWJzdHJhY3RRdWV1ZSB9IGZyb20gXCIuL0Fic3RyYWN0UXVldWVcIjtcclxuaW1wb3J0IHsgRWxlbWVudCB9IGZyb20gXCIuL0NvbGxlY3Rpb25cIjtcclxuaW1wb3J0IHsgTWluSGVhcCB9IGZyb20gXCIuL2hlYXAvTWluSGVhcFwiO1xyXG5cclxuLyoqXHJcbiAqIEFuIHVuYm91bmRlZCBwcmlvcml0eSBgUXVldWVgIGJhc2VkIG9uIGEgcHJpb3JpdHkgaGVhcC4gIFRoaXMgcXVldWUgb3JkZXJzIGVsZW1lbnRzIGFjY29yZGluZyB0byBhbiBvcmRlciBzcGVjaWZpZWRcclxuICogYXQgY29uc3RydWN0aW9uIHRpbWUsIHdoaWNoIGlzIHNwZWNpZmllZCBlaXRoZXIgYWNjb3JkaW5nIHRvIHRoZWlyIF9uYXR1cmFsIG9yZGVyXywgb3IgYWNjb3JkaW5nIHRvIGFcclxuICogYENvbXBhcmVgIGZ1bmN0aW9uIHR5cGUsIGRlcGVuZGluZyBvbiB3aGljaCBjb25zdHJ1Y3RvciBpcyB1c2VkLiBBIHByaW9yaXR5IHF1ZXVlIGRvZXMgbm90IHBlcm1pdCBfbnVsbF8gYW5kIF91bmRlZmluZWRfIGVsZW1lbnRzLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFByaW9yaXR5UXVldWU8VD4gZXh0ZW5kcyBBYnN0cmFjdFF1ZXVlPFQ+IHtcclxuICBwcml2YXRlIF9taW5IZWFwOiBNaW5IZWFwPFQ+O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihjb21wYXJlPzogQ29tcGFyZTxUPikge1xyXG4gICAgc3VwZXIoKTtcclxuICAgIHRoaXMuX21pbkhlYXAgPSBuZXcgTWluSGVhcDxUPihjb21wYXJlKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogQG92ZXJyaWRlXHJcbiAgICovXHJcbiAgZ2V0IGxlbmd0aCgpOiBudW1iZXIgIHsgcmV0dXJuIHRoaXMuX21pbkhlYXAuc2l6ZSgpIH1cclxuICAvKipcclxuICAgKiBAb3ZlcnJpZGVcclxuICAgKi9cclxuICBnZXQgc2l6ZSgpOiBudW1iZXIgICAgeyByZXR1cm4gdGhpcy5fbWluSGVhcC5zaXplKCk7IH1cclxuICAvKipcclxuICAgKiBAb3ZlcnJpZGVcclxuICAgKi9cclxuICBlbGVtZW50KCk6IEVsZW1lbnQ8VD4gfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuX21pbkhlYXAucGVlaygpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBJbnNlcnRzIHRoZSBzcGVjaWZpZWQgZWxlbWVudCBpbnRvIHRoaXMgcHJpb3JpdHkgcXVldWVcclxuICAgKiBAcGFyYW0gdmFsdWVcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqL1xyXG4gIG9mZmVyKHZhbHVlOiBFbGVtZW50PFQ+KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fbWluSGVhcC5hZGQodmFsdWUpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBAb3ZlcnJpZGVcclxuICAgKi9cclxuICBwZWVrKCk6IEVsZW1lbnQ8VD4gfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuX21pbkhlYXAucGVlaygpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBAb3ZlcnJpZGVcclxuICAgKi9cclxuICBwb2xsKCk6IEVsZW1lbnQ8VD4gfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuX21pbkhlYXAucG9sbCgpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBAb3ZlcnJpZGVcclxuICAgKi9cclxuICByZW1vdmVGaXJzdCgpOiBFbGVtZW50PFQ+IHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLl9taW5IZWFwLnBvbGwoKTtcclxuICB9XHJcbiAgLypcclxuICAvLysrIEl0ZXJhdG9yIGltcGxlbWV0YXRpb25cclxuICBwcm90ZWN0ZWQgZ2V0IGl0ZXJhdG9yRmlyc3RJdGVtJCgpOiBudW1iZXIgeyByZXR1cm4gdGhpcy5fbWluSGVhcC5zaXplKCkgPj0gMCA/IDAgOiAtMSB9XHJcbiAgcHJvdGVjdGVkIGl0ZXJhdG9yVmFsdWUkKGluZGV4OiBudW1iZXIpOiBFbGVtZW50PFQ+IHsgcmV0dXJuIGluZGV4ID49IDAgJiYgaW5kZXggPCB0aGlzLnNpemUgPyB0aGlzLl9taW5IZWFwLmdldChpbmRleCkgOiBudWxsOyB9XHJcbiAgcHJvdGVjdGVkIGl0ZXJhdG9ySXRlcmF0ZSQoZnJvbUluZGV4OiBudW1iZXIpOiBudW1iZXIgfCBudWxsIHtcclxuICAgICAgaWYgKGZyb21JbmRleCA+PSAwICYmIGZyb21JbmRleCA8ICh0aGlzLl9taW5IZWFwLnNpemUoKSAtIDEpKSB7XHJcbiAgICAgICAgICByZXR1cm4gZnJvbUluZGV4ICsgMTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcbiAgLy8tLVxyXG4gICovXHJcblxyXG4gICpbU3ltYm9sLml0ZXJhdG9yXSgpOiBJdGVyYWJsZUl0ZXJhdG9yPEVsZW1lbnQ8VD4+IHtcclxuICAgIGNvbnN0IG5TaXplID0gdGhpcy5zaXplO1xyXG4gICAgZm9yIChsZXQgaW5kZXg6IG51bWJlciA9IDA7IGluZGV4IDwgblNpemU7IGluZGV4KyspIHtcclxuICAgICAgeWllbGQgdGhpcy5fbWluSGVhcC5nZXQoaW5kZXgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQG92ZXJyaWRlXHJcbiAgICovXHJcbiAgYXBwZW5kKHZhbHVlOiBFbGVtZW50PFQ+KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fbWluSGVhcC5hZGQodmFsdWUpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBAb3ZlcnJpZGVcclxuICAgKi9cclxuICBjbGVhcigpOiB2b2lkIHtcclxuICAgIHRoaXMuX21pbkhlYXAuY2xlYXIoKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogQG92ZXJyaWRlXHJcbiAgICovXHJcbiAgY29udGFpbnModmFsdWU6IEVsZW1lbnQ8VD4pOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9taW5IZWFwLmNvbnRhaW5zKHZhbHVlKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogQG92ZXJyaWRlXHJcbiAgICovXHJcbiAgdG9BcnJheSgpOiBFbGVtZW50PFQ+W10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX21pbkhlYXAudG9BcnJheSgpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBAb3ZlcnJpZGVcclxuICAgKi9cclxuICByZW1vdmUodmFsdWU6IEVsZW1lbnQ8VD4pOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9taW5IZWFwLnJlbW92ZSh2YWx1ZSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEBvdmVycmlkZVxyXG4gICAqL1xyXG4gIHJlbW92ZUF0KGluZGV4OiBudW1iZXIpOiBFbGVtZW50PFQ+IHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLl9taW5IZWFwLnJlbW92ZUF0KGluZGV4KTtcclxuICB9XHJcblxyXG4gIFtTeW1ib2wudG9TdHJpbmdUYWddID0gXCJQcmlvcml0eVF1ZXVlXCI7XHJcblxyXG59XHJcbiJdfQ==