UNPKG

@lotto24-angular/imports-orchestrator

Version:

Orchestrate dynamically imported components in Angular applications

38 lines 4.21 kB
export class Queue { constructor() { this.data = []; } insert(priority, payload) { this.data = [...this.data, { priority, payload }].sort(comparePriority); } take(payload = null) { if (!payload) { return this.data.shift()?.payload || null; } return this.takeSpecific(payload); } peek() { return this.data[0]?.payload; } get length() { return this.data.length; } get empty() { return this.length < 1; } takeSpecific(payload) { const index = this.data.findIndex((s) => s.payload === payload); if (index < 0) { return null; } payload = this.data[index].payload; const updated = this.data.slice(); updated.splice(index, 1); this.data = updated; return payload; } } function comparePriority(a, b) { return a.priority - b.priority; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ltcG9ydHMtb3JjaGVzdHJhdG9yL3NyYy9saWIvcXVldWUvcXVldWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsTUFBTSxPQUFPLEtBQUs7SUFBbEI7UUFDWSxTQUFJLEdBQWMsRUFBRSxDQUFDO0lBc0NqQyxDQUFDO0lBcENRLE1BQU0sQ0FBQyxRQUFnQixFQUFFLE9BQVU7UUFDeEMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRU0sSUFBSSxDQUFDLFVBQW9CLElBQUk7UUFDbEMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLE9BQU8sSUFBSSxJQUFJLENBQUM7UUFDNUMsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRU0sSUFBSTtRQUNULE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQVcsTUFBTTtRQUNmLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQVcsS0FBSztRQUNkLE9BQU8sSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVPLFlBQVksQ0FBQyxPQUFVO1FBQzdCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLE9BQU8sQ0FBQyxDQUFDO1FBQ2hFLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2QsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDO1FBQ25DLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbEMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUM7UUFDcEIsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztDQUNGO0FBRUQsU0FBUyxlQUFlLENBQUksQ0FBVSxFQUFFLENBQVU7SUFDaEQsT0FBTyxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUM7QUFDakMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImludGVyZmFjZSBJdGVtPFQ+IHtcbiAgcHJpb3JpdHk6IG51bWJlcjtcbiAgcGF5bG9hZDogVDtcbn1cblxuZXhwb3J0IGNsYXNzIFF1ZXVlPFQ+IHtcbiAgcHJvdGVjdGVkIGRhdGE6IEl0ZW08VD5bXSA9IFtdO1xuXG4gIHB1YmxpYyBpbnNlcnQocHJpb3JpdHk6IG51bWJlciwgcGF5bG9hZDogVCk6IHZvaWQge1xuICAgIHRoaXMuZGF0YSA9IFsuLi50aGlzLmRhdGEsIHsgcHJpb3JpdHksIHBheWxvYWQgfV0uc29ydChjb21wYXJlUHJpb3JpdHkpO1xuICB9XG5cbiAgcHVibGljIHRha2UocGF5bG9hZDogVCB8IG51bGwgPSBudWxsKTogVCB8IG51bGwge1xuICAgIGlmICghcGF5bG9hZCkge1xuICAgICAgcmV0dXJuIHRoaXMuZGF0YS5zaGlmdCgpPy5wYXlsb2FkIHx8IG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudGFrZVNwZWNpZmljKHBheWxvYWQpO1xuICB9XG5cbiAgcHVibGljIHBlZWsoKTogVCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YVswXT8ucGF5bG9hZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbGVuZ3RoKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS5sZW5ndGg7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGVtcHR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxlbmd0aCA8IDE7XG4gIH1cblxuICBwcml2YXRlIHRha2VTcGVjaWZpYyhwYXlsb2FkOiBUKTogVCB8IG51bGwge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5kYXRhLmZpbmRJbmRleCgocykgPT4gcy5wYXlsb2FkID09PSBwYXlsb2FkKTtcbiAgICBpZiAoaW5kZXggPCAwKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBwYXlsb2FkID0gdGhpcy5kYXRhW2luZGV4XS5wYXlsb2FkO1xuICAgIGNvbnN0IHVwZGF0ZWQgPSB0aGlzLmRhdGEuc2xpY2UoKTtcbiAgICB1cGRhdGVkLnNwbGljZShpbmRleCwgMSk7XG4gICAgdGhpcy5kYXRhID0gdXBkYXRlZDtcbiAgICByZXR1cm4gcGF5bG9hZDtcbiAgfVxufVxuXG5mdW5jdGlvbiBjb21wYXJlUHJpb3JpdHk8VD4oYTogSXRlbTxUPiwgYjogSXRlbTxUPikge1xuICByZXR1cm4gYS5wcmlvcml0eSAtIGIucHJpb3JpdHk7XG59XG4iXX0=