1 | (function (factory) {
|
---|
2 | if (typeof module === "object" && typeof module.exports === "object") {
|
---|
3 | var v = factory(require, exports);
|
---|
4 | if (v !== undefined) module.exports = v;
|
---|
5 | }
|
---|
6 | else if (typeof define === "function" && define.amd) {
|
---|
7 | define("@angular/compiler-cli/ngcc/src/execution/tasks/queues/parallel_task_queue", ["require", "exports", "tslib", "@angular/compiler-cli/ngcc/src/execution/tasks/utils", "@angular/compiler-cli/ngcc/src/execution/tasks/queues/base_task_queue"], factory);
|
---|
8 | }
|
---|
9 | })(function (require, exports) {
|
---|
10 | "use strict";
|
---|
11 | Object.defineProperty(exports, "__esModule", { value: true });
|
---|
12 | exports.ParallelTaskQueue = void 0;
|
---|
13 | var tslib_1 = require("tslib");
|
---|
14 | var utils_1 = require("@angular/compiler-cli/ngcc/src/execution/tasks/utils");
|
---|
15 | var base_task_queue_1 = require("@angular/compiler-cli/ngcc/src/execution/tasks/queues/base_task_queue");
|
---|
16 | /**
|
---|
17 | * A `TaskQueue` implementation that assumes tasks are processed in parallel, thus has to ensure a
|
---|
18 | * task's dependencies have been processed before processing the task.
|
---|
19 | */
|
---|
20 | var ParallelTaskQueue = /** @class */ (function (_super) {
|
---|
21 | tslib_1.__extends(ParallelTaskQueue, _super);
|
---|
22 | function ParallelTaskQueue(logger, tasks, dependencies) {
|
---|
23 | var _this = _super.call(this, logger, utils_1.sortTasksByPriority(tasks, dependencies), dependencies) || this;
|
---|
24 | _this.blockedTasks = utils_1.getBlockedTasks(dependencies);
|
---|
25 | return _this;
|
---|
26 | }
|
---|
27 | ParallelTaskQueue.prototype.computeNextTask = function () {
|
---|
28 | var _this = this;
|
---|
29 | // Look for the first available (i.e. not blocked) task.
|
---|
30 | // (NOTE: Since tasks are sorted by priority, the first available one is the best choice.)
|
---|
31 | var nextTaskIdx = this.tasks.findIndex(function (task) { return !_this.blockedTasks.has(task); });
|
---|
32 | if (nextTaskIdx === -1)
|
---|
33 | return null;
|
---|
34 | // Remove the task from the list of available tasks and add it to the list of in-progress tasks.
|
---|
35 | var nextTask = this.tasks[nextTaskIdx];
|
---|
36 | this.tasks.splice(nextTaskIdx, 1);
|
---|
37 | this.inProgressTasks.add(nextTask);
|
---|
38 | return nextTask;
|
---|
39 | };
|
---|
40 | ParallelTaskQueue.prototype.markAsCompleted = function (task) {
|
---|
41 | var e_1, _a;
|
---|
42 | _super.prototype.markAsCompleted.call(this, task);
|
---|
43 | if (!this.dependencies.has(task)) {
|
---|
44 | return;
|
---|
45 | }
|
---|
46 | try {
|
---|
47 | // Unblock the tasks that are dependent upon `task`
|
---|
48 | for (var _b = tslib_1.__values(this.dependencies.get(task)), _c = _b.next(); !_c.done; _c = _b.next()) {
|
---|
49 | var dependentTask = _c.value;
|
---|
50 | if (this.blockedTasks.has(dependentTask)) {
|
---|
51 | var blockingTasks = this.blockedTasks.get(dependentTask);
|
---|
52 | // Remove the completed task from the lists of tasks blocking other tasks.
|
---|
53 | blockingTasks.delete(task);
|
---|
54 | if (blockingTasks.size === 0) {
|
---|
55 | // If the dependent task is not blocked any more, mark it for unblocking.
|
---|
56 | this.blockedTasks.delete(dependentTask);
|
---|
57 | }
|
---|
58 | }
|
---|
59 | }
|
---|
60 | }
|
---|
61 | catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
---|
62 | finally {
|
---|
63 | try {
|
---|
64 | if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
---|
65 | }
|
---|
66 | finally { if (e_1) throw e_1.error; }
|
---|
67 | }
|
---|
68 | };
|
---|
69 | ParallelTaskQueue.prototype.toString = function () {
|
---|
70 | return _super.prototype.toString.call(this) + "\n" +
|
---|
71 | (" Blocked tasks (" + this.blockedTasks.size + "): " + this.stringifyBlockedTasks(' '));
|
---|
72 | };
|
---|
73 | ParallelTaskQueue.prototype.stringifyBlockedTasks = function (indentation) {
|
---|
74 | var _this = this;
|
---|
75 | return Array.from(this.blockedTasks)
|
---|
76 | .map(function (_a) {
|
---|
77 | var _b = tslib_1.__read(_a, 2), task = _b[0], blockingTasks = _b[1];
|
---|
78 | return "\n" + indentation + "- " + utils_1.stringifyTask(task) + " (" + blockingTasks.size + "): " +
|
---|
79 | _this.stringifyTasks(Array.from(blockingTasks), indentation + " ");
|
---|
80 | })
|
---|
81 | .join('');
|
---|
82 | };
|
---|
83 | return ParallelTaskQueue;
|
---|
84 | }(base_task_queue_1.BaseTaskQueue));
|
---|
85 | exports.ParallelTaskQueue = ParallelTaskQueue;
|
---|
86 | });
|
---|
87 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYWxsZWxfdGFza19xdWV1ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9uZ2NjL3NyYy9leGVjdXRpb24vdGFza3MvcXVldWVzL3BhcmFsbGVsX3Rhc2tfcXVldWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztJQVNBLDhFQUE2RTtJQUM3RSx5R0FBZ0Q7SUFFaEQ7OztPQUdHO0lBQ0g7UUFBdUMsNkNBQWE7UUFRbEQsMkJBQVksTUFBYyxFQUFFLEtBQTRCLEVBQUUsWUFBOEI7WUFBeEYsWUFDRSxrQkFBTSxNQUFNLEVBQUUsMkJBQW1CLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxFQUFFLFlBQVksQ0FBQyxTQUV0RTtZQURDLEtBQUksQ0FBQyxZQUFZLEdBQUcsdUJBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQzs7UUFDcEQsQ0FBQztRQUVRLDJDQUFlLEdBQXhCO1lBQUEsaUJBWUM7WUFYQyx3REFBd0Q7WUFDeEQsMEZBQTBGO1lBQzFGLElBQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLFVBQUEsSUFBSSxJQUFJLE9BQUEsQ0FBQyxLQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBNUIsQ0FBNEIsQ0FBQyxDQUFDO1lBQy9FLElBQUksV0FBVyxLQUFLLENBQUMsQ0FBQztnQkFBRSxPQUFPLElBQUksQ0FBQztZQUVwQyxnR0FBZ0c7WUFDaEcsSUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN6QyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDbEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFbkMsT0FBTyxRQUFRLENBQUM7UUFDbEIsQ0FBQztRQUVRLDJDQUFlLEdBQXhCLFVBQXlCLElBQVU7O1lBQ2pDLGlCQUFNLGVBQWUsWUFBQyxJQUFJLENBQUMsQ0FBQztZQUU1QixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ2hDLE9BQU87YUFDUjs7Z0JBRUQsbURBQW1EO2dCQUNuRCxLQUE0QixJQUFBLEtBQUEsaUJBQUEsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFFLENBQUEsZ0JBQUEsNEJBQUU7b0JBQXJELElBQU0sYUFBYSxXQUFBO29CQUN0QixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxFQUFFO3dCQUN4QyxJQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUUsQ0FBQzt3QkFDNUQsMEVBQTBFO3dCQUMxRSxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUMzQixJQUFJLGFBQWEsQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFOzRCQUM1Qix5RUFBeUU7NEJBQ3pFLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO3lCQUN6QztxQkFDRjtpQkFDRjs7Ozs7Ozs7O1FBQ0gsQ0FBQztRQUVRLG9DQUFRLEdBQWpCO1lBQ0UsT0FBVSxpQkFBTSxRQUFRLFdBQUUsT0FBSTtpQkFDMUIsc0JBQW9CLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxXQUFNLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUcsQ0FBQSxDQUFDO1FBQzNGLENBQUM7UUFFTyxpREFBcUIsR0FBN0IsVUFBOEIsV0FBbUI7WUFBakQsaUJBT0M7WUFOQyxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztpQkFDL0IsR0FBRyxDQUNBLFVBQUMsRUFBcUI7b0JBQXJCLEtBQUEscUJBQXFCLEVBQXBCLElBQUksUUFBQSxFQUFFLGFBQWEsUUFBQTtnQkFDakIsT0FBQSxPQUFLLFdBQVcsVUFBSyxxQkFBYSxDQUFDLElBQUksQ0FBQyxVQUFLLGFBQWEsQ0FBQyxJQUFJLFFBQUs7b0JBQ3BFLEtBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBSyxXQUFXLFNBQU0sQ0FBQztZQURwRSxDQUNvRSxDQUFDO2lCQUM1RSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDaEIsQ0FBQztRQUNILHdCQUFDO0lBQUQsQ0FBQyxBQTdERCxDQUF1QywrQkFBYSxHQTZEbkQ7SUE3RFksOENBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5pbXBvcnQge0xvZ2dlcn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc3JjL25ndHNjL2xvZ2dpbmcnO1xuaW1wb3J0IHtQYXJ0aWFsbHlPcmRlcmVkVGFza3MsIFRhc2ssIFRhc2tEZXBlbmRlbmNpZXN9IGZyb20gJy4uL2FwaSc7XG5pbXBvcnQge2dldEJsb2NrZWRUYXNrcywgc29ydFRhc2tzQnlQcmlvcml0eSwgc3RyaW5naWZ5VGFza30gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHtCYXNlVGFza1F1ZXVlfSBmcm9tICcuL2Jhc2VfdGFza19xdWV1ZSc7XG5cbi8qKlxuICogQSBgVGFza1F1ZXVlYCBpbXBsZW1lbnRhdGlvbiB0aGF0IGFzc3VtZXMgdGFza3MgYXJlIHByb2Nlc3NlZCBpbiBwYXJhbGxlbCwgdGh1cyBoYXMgdG8gZW5zdXJlIGFcbiAqIHRhc2sncyBkZXBlbmRlbmNpZXMgaGF2ZSBiZWVuIHByb2Nlc3NlZCBiZWZvcmUgcHJvY2Vzc2luZyB0aGUgdGFzay5cbiAqL1xuZXhwb3J0IGNsYXNzIFBhcmFsbGVsVGFza1F1ZXVlIGV4dGVuZHMgQmFzZVRhc2tRdWV1ZSB7XG4gIC8qKlxuICAgKiBBIG1hcCBmcm9tIFRhc2tzIHRvIHRoZSBUYXNrcyB0aGF0IGl0IGRlcGVuZHMgdXBvbi5cbiAgICpcbiAgICogVGhpcyBpcyB0aGUgcmV2ZXJzZSBtYXBwaW5nIG9mIGBUYXNrRGVwZW5kZW5jaWVzYC5cbiAgICovXG4gIHByaXZhdGUgYmxvY2tlZFRhc2tzOiBNYXA8VGFzaywgU2V0PFRhc2s+PjtcblxuICBjb25zdHJ1Y3Rvcihsb2dnZXI6IExvZ2dlciwgdGFza3M6IFBhcnRpYWxseU9yZGVyZWRUYXNrcywgZGVwZW5kZW5jaWVzOiBUYXNrRGVwZW5kZW5jaWVzKSB7XG4gICAgc3VwZXIobG9nZ2VyLCBzb3J0VGFza3NCeVByaW9yaXR5KHRhc2tzLCBkZXBlbmRlbmNpZXMpLCBkZXBlbmRlbmNpZXMpO1xuICAgIHRoaXMuYmxvY2tlZFRhc2tzID0gZ2V0QmxvY2tlZFRhc2tzKGRlcGVuZGVuY2llcyk7XG4gIH1cblxuICBvdmVycmlkZSBjb21wdXRlTmV4dFRhc2soKTogVGFza3xudWxsIHtcbiAgICAvLyBMb29rIGZvciB0aGUgZmlyc3QgYXZhaWxhYmxlIChpLmUuIG5vdCBibG9ja2VkKSB0YXNrLlxuICAgIC8vIChOT1RFOiBTaW5jZSB0YXNrcyBhcmUgc29ydGVkIGJ5IHByaW9yaXR5LCB0aGUgZmlyc3QgYXZhaWxhYmxlIG9uZSBpcyB0aGUgYmVzdCBjaG9pY2UuKVxuICAgIGNvbnN0IG5leHRUYXNrSWR4ID0gdGhpcy50YXNrcy5maW5kSW5kZXgodGFzayA9PiAhdGhpcy5ibG9ja2VkVGFza3MuaGFzKHRhc2spKTtcbiAgICBpZiAobmV4dFRhc2tJZHggPT09IC0xKSByZXR1cm4gbnVsbDtcblxuICAgIC8vIFJlbW92ZSB0aGUgdGFzayBmcm9tIHRoZSBsaXN0IG9mIGF2YWlsYWJsZSB0YXNrcyBhbmQgYWRkIGl0IHRvIHRoZSBsaXN0IG9mIGluLXByb2dyZXNzIHRhc2tzLlxuICAgIGNvbnN0IG5leHRUYXNrID0gdGhpcy50YXNrc1tuZXh0VGFza0lkeF07XG4gICAgdGhpcy50YXNrcy5zcGxpY2UobmV4dFRhc2tJZHgsIDEpO1xuICAgIHRoaXMuaW5Qcm9ncmVzc1Rhc2tzLmFkZChuZXh0VGFzayk7XG5cbiAgICByZXR1cm4gbmV4dFRhc2s7XG4gIH1cblxuICBvdmVycmlkZSBtYXJrQXNDb21wbGV0ZWQodGFzazogVGFzayk6IHZvaWQge1xuICAgIHN1cGVyLm1hcmtBc0NvbXBsZXRlZCh0YXNrKTtcblxuICAgIGlmICghdGhpcy5kZXBlbmRlbmNpZXMuaGFzKHRhc2spKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gVW5ibG9jayB0aGUgdGFza3MgdGhhdCBhcmUgZGVwZW5kZW50IHVwb24gYHRhc2tgXG4gICAgZm9yIChjb25zdCBkZXBlbmRlbnRUYXNrIG9mIHRoaXMuZGVwZW5kZW5jaWVzLmdldCh0YXNrKSEpIHtcbiAgICAgIGlmICh0aGlzLmJsb2NrZWRUYXNrcy5oYXMoZGVwZW5kZW50VGFzaykpIHtcbiAgICAgICAgY29uc3QgYmxvY2tpbmdUYXNrcyA9IHRoaXMuYmxvY2tlZFRhc2tzLmdldChkZXBlbmRlbnRUYXNrKSE7XG4gICAgICAgIC8vIFJlbW92ZSB0aGUgY29tcGxldGVkIHRhc2sgZnJvbSB0aGUgbGlzdHMgb2YgdGFza3MgYmxvY2tpbmcgb3RoZXIgdGFza3MuXG4gICAgICAgIGJsb2NraW5nVGFza3MuZGVsZXRlKHRhc2spO1xuICAgICAgICBpZiAoYmxvY2tpbmdUYXNrcy5zaXplID09PSAwKSB7XG4gICAgICAgICAgLy8gSWYgdGhlIGRlcGVuZGVudCB0YXNrIGlzIG5vdCBibG9ja2VkIGFueSBtb3JlLCBtYXJrIGl0IGZvciB1bmJsb2NraW5nLlxuICAgICAgICAgIHRoaXMuYmxvY2tlZFRhc2tzLmRlbGV0ZShkZXBlbmRlbnRUYXNrKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG92ZXJyaWRlIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3N1cGVyLnRvU3RyaW5nKCl9XFxuYCArXG4gICAgICAgIGAgIEJsb2NrZWQgdGFza3MgKCR7dGhpcy5ibG9ja2VkVGFza3Muc2l6ZX0pOiAke3RoaXMuc3RyaW5naWZ5QmxvY2tlZFRhc2tzKCcgICAgJyl9YDtcbiAgfVxuXG4gIHByaXZhdGUgc3RyaW5naWZ5QmxvY2tlZFRhc2tzKGluZGVudGF0aW9uOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuYmxvY2tlZFRhc2tzKVxuICAgICAgICAubWFwKFxuICAgICAgICAgICAgKFt0YXNrLCBibG9ja2luZ1Rhc2tzXSkgPT5cbiAgICAgICAgICAgICAgICBgXFxuJHtpbmRlbnRhdGlvbn0tICR7c3RyaW5naWZ5VGFzayh0YXNrKX0gKCR7YmxvY2tpbmdUYXNrcy5zaXplfSk6IGAgK1xuICAgICAgICAgICAgICAgIHRoaXMuc3RyaW5naWZ5VGFza3MoQXJyYXkuZnJvbShibG9ja2luZ1Rhc2tzKSwgYCR7aW5kZW50YXRpb259ICAgIGApKVxuICAgICAgICAuam9pbignJyk7XG4gIH1cbn1cbiJdfQ== |
---|