@modern-js/monorepo-tools 2.14.0 → 2.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/dist/cjs/cli/build.js +10 -31
  3. package/dist/cjs/cli/buildWatch.js +11 -31
  4. package/dist/cjs/cli/clear.js +11 -31
  5. package/dist/cjs/cli/deploy.js +14 -36
  6. package/dist/cjs/cli/index.js +23 -22
  7. package/dist/cjs/cli/install.js +11 -31
  8. package/dist/cjs/cli/new.js +17 -37
  9. package/dist/cjs/commands/build.js +21 -46
  10. package/dist/cjs/commands/buildWatch.js +19 -36
  11. package/dist/cjs/commands/clear.js +17 -34
  12. package/dist/cjs/commands/deploy.js +25 -41
  13. package/dist/cjs/commands/index.js +22 -21
  14. package/dist/cjs/commands/install.js +19 -36
  15. package/dist/cjs/constants.js +13 -26
  16. package/dist/cjs/dag/create.js +16 -28
  17. package/dist/cjs/dag/edgeManager.js +24 -28
  18. package/dist/cjs/dag/index.js +11 -29
  19. package/dist/cjs/dag/operator.js +106 -123
  20. package/dist/cjs/dag/task.js +52 -63
  21. package/dist/cjs/dag/utils.js +52 -49
  22. package/dist/cjs/features/build/index.js +52 -68
  23. package/dist/cjs/features/clear/index.js +66 -47
  24. package/dist/cjs/features/deploy/index.js +126 -96
  25. package/dist/cjs/features/dev/cmds.js +10 -25
  26. package/dist/cjs/features/dev/createTask.js +93 -56
  27. package/dist/cjs/features/dev/index.js +43 -71
  28. package/dist/cjs/features/dev/watchProjectsState.js +89 -64
  29. package/dist/cjs/features/install/index.js +74 -63
  30. package/dist/cjs/hooks/index.js +9 -27
  31. package/dist/cjs/index.js +36 -53
  32. package/dist/cjs/locale/en.js +7 -25
  33. package/dist/cjs/locale/index.js +18 -28
  34. package/dist/cjs/locale/zh.js +7 -25
  35. package/dist/cjs/log/error.js +7 -25
  36. package/dist/cjs/log/multiTasksLog.js +42 -43
  37. package/dist/cjs/log/time.js +19 -29
  38. package/dist/cjs/log/utils.js +7 -25
  39. package/dist/cjs/package/index.js +28 -30
  40. package/dist/cjs/parse-config/index.js +61 -49
  41. package/dist/cjs/parse-config/monorepo.js +81 -67
  42. package/dist/cjs/projects/checkProjectChange.js +95 -73
  43. package/dist/cjs/projects/clearMemoryFiles.js +52 -44
  44. package/dist/cjs/projects/getProjects.js +38 -65
  45. package/dist/cjs/projects/getProjectsByPackagesConfig.js +93 -71
  46. package/dist/cjs/projects/getProjectsByWorkspaceFile.js +89 -85
  47. package/dist/cjs/type.js +4 -15
  48. package/dist/cjs/utils/install.js +69 -44
  49. package/dist/cjs/utils/types.js +4 -15
  50. package/dist/esm/cli/build.js +2 -8
  51. package/dist/esm/cli/buildWatch.js +4 -9
  52. package/dist/esm/cli/clear.js +4 -9
  53. package/dist/esm/cli/deploy.js +7 -14
  54. package/dist/esm/cli/install.js +4 -9
  55. package/dist/esm/cli/new.js +9 -14
  56. package/dist/esm/commands/build.js +7 -17
  57. package/dist/esm/commands/buildWatch.js +6 -8
  58. package/dist/esm/commands/clear.js +6 -8
  59. package/dist/esm/commands/deploy.js +10 -11
  60. package/dist/esm/commands/install.js +6 -8
  61. package/dist/esm/constants.js +2 -6
  62. package/dist/esm/dag/create.js +10 -7
  63. package/dist/esm/dag/edgeManager.js +17 -6
  64. package/dist/esm/dag/index.js +1 -4
  65. package/dist/esm/dag/operator.js +77 -74
  66. package/dist/esm/dag/task.js +39 -30
  67. package/dist/esm/dag/utils.js +39 -27
  68. package/dist/esm/features/build/index.js +22 -27
  69. package/dist/esm/features/clear/index.js +4 -6
  70. package/dist/esm/features/deploy/index.js +55 -50
  71. package/dist/esm/features/dev/cmds.js +4 -4
  72. package/dist/esm/features/dev/createTask.js +31 -15
  73. package/dist/esm/features/dev/index.js +19 -27
  74. package/dist/esm/features/dev/watchProjectsState.js +41 -31
  75. package/dist/esm/features/install/index.js +11 -15
  76. package/dist/esm/hooks/index.js +1 -4
  77. package/dist/esm/index.js +12 -11
  78. package/dist/esm/locale/en.js +1 -4
  79. package/dist/esm/locale/index.js +5 -5
  80. package/dist/esm/locale/zh.js +1 -4
  81. package/dist/esm/log/error.js +1 -4
  82. package/dist/esm/log/multiTasksLog.js +32 -18
  83. package/dist/esm/log/time.js +7 -8
  84. package/dist/esm/log/utils.js +1 -4
  85. package/dist/esm/package/index.js +21 -8
  86. package/dist/esm/parse-config/index.js +11 -14
  87. package/dist/esm/parse-config/monorepo.js +20 -27
  88. package/dist/esm/projects/checkProjectChange.js +19 -23
  89. package/dist/esm/projects/clearMemoryFiles.js +3 -13
  90. package/dist/esm/projects/getProjects.js +21 -45
  91. package/dist/esm/projects/getProjectsByPackagesConfig.js +29 -33
  92. package/dist/esm/projects/getProjectsByWorkspaceFile.js +21 -41
  93. package/dist/esm/type.js +1 -0
  94. package/dist/esm/utils/install.js +12 -8
  95. package/dist/esm/utils/types.js +1 -0
  96. package/package.json +16 -12
@@ -1,91 +1,80 @@
1
- var __create = Object.create;
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __getProtoOf = Object.getPrototypeOf;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __export = (target, all) => {
8
- for (var name in all)
9
- __defProp(target, name, { get: all[name], enumerable: true });
10
- };
11
- var __copyProps = (to, from, except, desc) => {
12
- if (from && typeof from === "object" || typeof from === "function") {
13
- for (let key of __getOwnPropNames(from))
14
- if (!__hasOwnProp.call(to, key) && key !== except)
15
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
- }
17
- return to;
18
- };
19
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
- // If the importer is in node compatibility mode or this is not an ESM
21
- // file that has been converted to a CommonJS file using a Babel-
22
- // compatible transform (i.e. "__esModule" has not been set), then set
23
- // "default" to the CommonJS "module.exports" for node compatibility.
24
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
- mod
26
- ));
27
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
- var operator_exports = {};
29
- __export(operator_exports, {
30
- DagOperator: () => DagOperator
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
31
4
  });
32
- module.exports = __toCommonJS(operator_exports);
33
- var import_p_map = __toESM(require("p-map"));
34
- var import_error = require("../log/error");
35
- var import_task = require("./task");
36
- var import_edgeManager = require("./edgeManager");
37
- var import_utils = require("./utils");
38
- class DagOperator {
39
- constructor(projects, projectsMap) {
40
- this._createTask = (project, task) => async (stopTask = () => void 0) => {
41
- await task(project, project.dependency || [], () => stopTask());
42
- return project.name;
43
- };
44
- this._projects = projects;
45
- this._projectsMap = projectsMap;
46
- this._sortedProjects = [];
5
+ Object.defineProperty(exports, "DagOperator", {
6
+ enumerable: true,
7
+ get: () => DagOperator
8
+ });
9
+ const _pmap = /* @__PURE__ */ _interop_require_default(require("p-map"));
10
+ const _error = require("../log/error");
11
+ const _task = require("./task");
12
+ const _edgeManager = require("./edgeManager");
13
+ const _utils = require("./utils");
14
+ function _define_property(obj, key, value) {
15
+ if (key in obj) {
16
+ Object.defineProperty(obj, key, {
17
+ value,
18
+ enumerable: true,
19
+ configurable: true,
20
+ writable: true
21
+ });
22
+ } else {
23
+ obj[key] = value;
47
24
  }
25
+ return obj;
26
+ }
27
+ function _interop_require_default(obj) {
28
+ return obj && obj.__esModule ? obj : {
29
+ default: obj
30
+ };
31
+ }
32
+ class DagOperator {
48
33
  checkNodeDataExist(name) {
49
34
  return this._projectsMap.has(name);
50
35
  }
51
- getNodeData(name, option = { checkExist: false }) {
36
+ getNodeData(name, option = {
37
+ checkExist: false
38
+ }) {
52
39
  if (option.checkExist) {
53
40
  if (this._projectsMap.has(name)) {
54
41
  return this._projectsMap.get(name);
55
42
  } else {
56
- (0, import_error.errorLog)(`No '${name}' project exist`);
43
+ (0, _error.errorLog)(`No '${name}' project exist`);
57
44
  }
58
45
  }
59
46
  return this._projectsMap.get(name);
60
47
  }
61
48
  getNodeDependencyData(name) {
62
- var _a;
63
- return ((_a = this._projectsMap.get(name)) == null ? void 0 : _a.dependency) || [];
49
+ var _this__projectsMap_get;
50
+ return ((_this__projectsMap_get = this._projectsMap.get(name)) === null || _this__projectsMap_get === void 0 ? void 0 : _this__projectsMap_get.dependency) || [];
64
51
  }
65
52
  getNodeDependentData(name) {
66
- var _a;
67
- return ((_a = this._projectsMap.get(name)) == null ? void 0 : _a.dependent) || [];
53
+ var _this__projectsMap_get;
54
+ return ((_this__projectsMap_get = this._projectsMap.get(name)) === null || _this__projectsMap_get === void 0 ? void 0 : _this__projectsMap_get.dependent) || [];
68
55
  }
69
- getNodeAllDependencyData(name, option = { skipCircleCheck: false }) {
56
+ getNodeAllDependencyData(name, option = {
57
+ skipCircleCheck: false
58
+ }) {
70
59
  const { skipCircleCheck } = option;
71
60
  if (!skipCircleCheck) {
72
61
  this.checkCircle();
73
62
  }
74
63
  if (!this._projectsMap.has(name)) {
75
- (0, import_error.errorLog)(`No '${name}' project exist`);
64
+ (0, _error.errorLog)(`No '${name}' project exist`);
76
65
  }
77
66
  const currentNode = this._projectsMap.get(name);
78
- return (0, import_utils.recursiveGetDependency)(currentNode, skipCircleCheck);
67
+ return (0, _utils.recursiveGetDependency)(currentNode, skipCircleCheck);
79
68
  }
80
69
  setNodeData(name, task) {
81
70
  if (this._projectsMap.has(name)) {
82
71
  task(this._projectsMap.get(name));
83
72
  } else {
84
- (0, import_error.errorLog)(`No '${name}' project exist`);
73
+ (0, _error.errorLog)(`No '${name}' project exist`);
85
74
  }
86
75
  }
87
76
  async traverseAllNodes(task) {
88
- const sortedNodes = this._sortedProjects.length > 0 ? this._sortedProjects : (0, import_utils.sortProjects)(this._projects);
77
+ const sortedNodes = this._sortedProjects.length > 0 ? this._sortedProjects : (0, _utils.sortProjects)(this._projects);
89
78
  const finishTaskHash = {};
90
79
  let preNodes = [];
91
80
  let earlyFinish = false;
@@ -93,22 +82,22 @@ class DagOperator {
93
82
  if (earlyFinish) {
94
83
  break;
95
84
  }
96
- await (0, import_p_map.default)(
85
+ await (0, _pmap.default)(
97
86
  projects,
98
87
  // eslint-disable-next-line @typescript-eslint/no-loop-func
99
88
  async (project) => {
100
89
  if (!finishTaskHash[project.name]) {
101
90
  finishTaskHash[project.name] = true;
102
- await task(
103
- project,
104
- this._getProjectPreviousNode(project.dependent || [], preNodes),
105
- () => earlyFinish = true
106
- );
91
+ await task(project, this._getProjectPreviousNode(project.dependent || [], preNodes), () => earlyFinish = true);
107
92
  }
108
93
  },
109
- { concurrency: projects.length }
94
+ {
95
+ concurrency: projects.length
96
+ }
110
97
  );
111
- preNodes = [...projects];
98
+ preNodes = [
99
+ ...projects
100
+ ];
112
101
  }
113
102
  }
114
103
  checkCircle() {
@@ -122,35 +111,34 @@ class DagOperator {
122
111
  });
123
112
  }
124
113
  /**
125
- * 1. 把目标节点当做叶子节点集合 A 中的元素
126
- * 2. 当叶子节点集合中某个 a 元素结束任务的时候进行如下操作:
127
- * 2.1 剪(去额外的)枝:获取 a 元素的 dependent集合,将该集合中元素的依赖列表进行过滤,过滤条件为:排除 a 以及 a 元素的 dependent集合以外的元素。
128
- * 2.2 入度减一:对 a 元素的 dependent 集合元素的 dependencyEdge 减一
129
- * 3. 检查是否存在 dependencyEdge === 0 的节点,加入叶子节点集合 A中。
130
- * 4. 根据情况(是否存在空闲的进程)选择是否执行新加入的节点对应的任务。
131
- */
114
+ * 1. 把目标节点当做叶子节点集合 A 中的元素
115
+ * 2. 当叶子节点集合中某个 a 元素结束任务的时候进行如下操作:
116
+ * 2.1 剪(去额外的)枝:获取 a 元素的 dependent集合,将该集合中元素的依赖列表进行过滤,过滤条件为:排除 a 以及 a 元素的 dependent集合以外的元素。
117
+ * 2.2 入度减一:对 a 元素的 dependent 集合元素的 dependencyEdge 减一
118
+ * 3. 检查是否存在 dependencyEdge === 0 的节点,加入叶子节点集合 A中。
119
+ * 4. 根据情况(是否存在空闲的进程)选择是否执行新加入的节点对应的任务。
120
+ */
132
121
  async traverseProjectToDependent(name, task, { withSelf = false, runTaskConcurrency } = {}) {
133
122
  if (!this._projectsMap.has(name)) {
134
- (0, import_error.errorLog)(`No '${name}' project exist`);
123
+ (0, _error.errorLog)(`No '${name}' project exist`);
135
124
  }
136
125
  const traverseTargetNode = this._projectsMap.get(name);
137
126
  const leafNodeTasks = [
138
127
  withSelf ? this._createTask(traverseTargetNode, task) : async () => Promise.resolve(traverseTargetNode.name)
139
128
  ];
140
- const taskRunner = new import_task.TaskRunner(leafNodeTasks, {
129
+ const taskRunner = new _task.TaskRunner(leafNodeTasks, {
141
130
  concurrency: runTaskConcurrency
142
131
  });
143
- const edgeManager = new import_edgeManager.EdgeManager();
144
- taskRunner.on(import_task.TaskRunner.TASK_FINISH, (projectName) => {
132
+ const edgeManager = new _edgeManager.EdgeManager();
133
+ taskRunner.on(_task.TaskRunner.TASK_FINISH, (projectName) => {
145
134
  const projectNode = this.getNodeData(projectName);
146
135
  const dependent = projectNode.dependent || [];
147
136
  for (const dependentProject of dependent) {
148
137
  const dependency = dependentProject.dependency || [];
149
- const removeNodes = dependency.filter(
150
- (dependencyProject) => ![projectName, ...dependent.map((p) => p.name)].includes(
151
- dependencyProject.name
152
- )
153
- );
138
+ const removeNodes = dependency.filter((dependencyProject) => ![
139
+ projectName,
140
+ ...dependent.map((p) => p.name)
141
+ ].includes(dependencyProject.name));
154
142
  edgeManager.reduceEdges(dependentProject, removeNodes.length + 1);
155
143
  if (edgeManager.getEdge(dependentProject) === 0) {
156
144
  taskRunner.addTask(this._createTask(dependentProject, task));
@@ -160,37 +148,36 @@ class DagOperator {
160
148
  await taskRunner.run();
161
149
  }
162
150
  /**
163
- * 1. 找到叶子节点集合 A
164
- * 2. 找到直接连接叶子节点的节点集合 B
165
- * 3. 当有某个叶子节点结束任务,则对该节点的直接连接的节点(或者理解成dependent)的枝数(或者叫入度)减一。
166
- * 4. 检查 B 集合中是否存在入度为0的节点,则此节点为叶子节点,并加入叶子节点集合 A
167
- * 5. 根据情况(是否存在空闲的进程)选择是否执行新加入的节点对应的任务。
168
- */
151
+ * 1. 找到叶子节点集合 A
152
+ * 2. 找到直接连接叶子节点的节点集合 B
153
+ * 3. 当有某个叶子节点结束任务,则对该节点的直接连接的节点(或者理解成dependent)的枝数(或者叫入度)减一。
154
+ * 4. 检查 B 集合中是否存在入度为0的节点,则此节点为叶子节点,并加入叶子节点集合 A
155
+ * 5. 根据情况(是否存在空闲的进程)选择是否执行新加入的节点对应的任务。
156
+ */
169
157
  // TODO: 执行顺序还需要再确定一下
170
158
  async traverseDependenciesToProject(name, task, { withSelf = false, runTaskConcurrency } = {}) {
171
159
  if (!this._projectsMap.has(name)) {
172
- (0, import_error.errorLog)(`No '${name}' project exist`);
160
+ (0, _error.errorLog)(`No '${name}' project exist`);
173
161
  }
174
162
  const traverseTargetNode = this._projectsMap.get(name);
175
163
  const leafNodes = this._getDependencyLeafNodes(traverseTargetNode);
176
- if ((leafNodes == null ? void 0 : leafNodes.length) === 0) {
164
+ if ((leafNodes === null || leafNodes === void 0 ? void 0 : leafNodes.length) === 0) {
177
165
  await this._createTask(traverseTargetNode, task)();
178
166
  return;
179
167
  }
180
- const leafNodeTasks = leafNodes.map(
181
- (project) => this._createTask(project, task)
182
- );
183
- const taskRunner = new import_task.TaskRunner(leafNodeTasks, {
168
+ const leafNodeTasks = leafNodes.map((project) => this._createTask(project, task));
169
+ const taskRunner = new _task.TaskRunner(leafNodeTasks, {
184
170
  concurrency: runTaskConcurrency
185
171
  });
186
- const edgeManager = new import_edgeManager.EdgeManager();
187
- taskRunner.on(import_task.TaskRunner.TASK_FINISH, (projectName) => {
172
+ const edgeManager = new _edgeManager.EdgeManager();
173
+ taskRunner.on(_task.TaskRunner.TASK_FINISH, (projectName) => {
188
174
  const projectNode = this.getNodeData(projectName);
189
175
  const dependent = projectNode.dependent || [];
190
176
  for (const dependentProject of dependent) {
191
- if (![traverseTargetNode, ...leafNodes].some(
192
- (n) => n.name === dependentProject.name
193
- )) {
177
+ if (![
178
+ traverseTargetNode,
179
+ ...leafNodes
180
+ ].some((n) => n.name === dependentProject.name)) {
194
181
  continue;
195
182
  }
196
183
  edgeManager.reduceOneEdge(dependentProject);
@@ -217,22 +204,16 @@ class DagOperator {
217
204
  _checkForCyclicDependencies(projects, dependencyChain, alreadyCheckedProjects) {
218
205
  for (const project of projects) {
219
206
  if (dependencyChain.includes(project.name)) {
220
- throw new Error(
221
- `${"A cyclic dependency was encountered:\n"} ${[
222
- ...dependencyChain,
223
- project.name
224
- ].reverse().join("\n -> ")}
225
- `
226
- );
207
+ throw new Error(`${"A cyclic dependency was encountered:\n"} ${[
208
+ ...dependencyChain,
209
+ project.name
210
+ ].reverse().join("\n -> ")}
211
+ `);
227
212
  }
228
213
  if (!alreadyCheckedProjects.has(project.name)) {
229
214
  alreadyCheckedProjects.add(project.name);
230
215
  dependencyChain.push(project.name);
231
- this._checkForCyclicDependencies(
232
- project.dependent,
233
- dependencyChain,
234
- alreadyCheckedProjects
235
- );
216
+ this._checkForCyclicDependencies(project.dependent, dependencyChain, alreadyCheckedProjects);
236
217
  dependencyChain.pop();
237
218
  }
238
219
  }
@@ -242,7 +223,9 @@ class DagOperator {
242
223
  if (dependency.length === 0) {
243
224
  return [];
244
225
  }
245
- let leafNodes = [...dependency];
226
+ let leafNodes = [
227
+ ...dependency
228
+ ];
246
229
  for (const dependencyNode of dependency) {
247
230
  leafNodes = [
248
231
  ...leafNodes,
@@ -252,18 +235,18 @@ class DagOperator {
252
235
  return leafNodes;
253
236
  }
254
237
  _getProjectPreviousNode(searchProjects, preNodes) {
255
- return searchProjects.filter(
256
- (p) => preNodes.map((preP) => preP.name).includes(p.name)
257
- );
238
+ return searchProjects.filter((p) => preNodes.map((preP) => preP.name).includes(p.name));
239
+ }
240
+ constructor(projects, projectsMap) {
241
+ _define_property(this, "_projects", void 0);
242
+ _define_property(this, "_projectsMap", void 0);
243
+ _define_property(this, "_sortedProjects", void 0);
244
+ _define_property(this, "_createTask", (project, task) => async (stopTask = () => void 0) => {
245
+ await task(project, project.dependency || [], () => stopTask());
246
+ return project.name;
247
+ });
248
+ this._projects = projects;
249
+ this._projectsMap = projectsMap;
250
+ this._sortedProjects = [];
258
251
  }
259
- // public async getOrderTasks() {
260
- // // Precalculate the number of dependent packages
261
- // for (const project of this._projects) {
262
- // calculateCriticalPaths(project);
263
- // }
264
- // }
265
252
  }
266
- // Annotate the CommonJS export names for ESM import in node:
267
- 0 && (module.exports = {
268
- DagOperator
269
- });
@@ -1,55 +1,40 @@
1
- var __create = Object.create;
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __getProtoOf = Object.getPrototypeOf;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __export = (target, all) => {
8
- for (var name in all)
9
- __defProp(target, name, { get: all[name], enumerable: true });
10
- };
11
- var __copyProps = (to, from, except, desc) => {
12
- if (from && typeof from === "object" || typeof from === "function") {
13
- for (let key of __getOwnPropNames(from))
14
- if (!__hasOwnProp.call(to, key) && key !== except)
15
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
- }
17
- return to;
18
- };
19
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
- // If the importer is in node compatibility mode or this is not an ESM
21
- // file that has been converted to a CommonJS file using a Babel-
22
- // compatible transform (i.e. "__esModule" has not been set), then set
23
- // "default" to the CommonJS "module.exports" for node compatibility.
24
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
- mod
26
- ));
27
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
- var task_exports = {};
29
- __export(task_exports, {
30
- TaskRunner: () => TaskRunner
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
31
4
  });
32
- module.exports = __toCommonJS(task_exports);
33
- var import_events = require("events");
34
- var import_p_map = __toESM(require("p-map"));
35
- const _TaskRunner = class extends import_events.EventEmitter {
36
- constructor(tasks, { concurrency }) {
37
- super();
38
- this._tasks = tasks;
39
- this._concurrency = concurrency || _TaskRunner.DefaultConcurrency;
40
- this._usableConcurrency = this._concurrency;
41
- this._stopFlag = false;
5
+ Object.defineProperty(exports, "TaskRunner", {
6
+ enumerable: true,
7
+ get: () => TaskRunner
8
+ });
9
+ const _events = require("events");
10
+ const _pmap = /* @__PURE__ */ _interop_require_default(require("p-map"));
11
+ function _define_property(obj, key, value) {
12
+ if (key in obj) {
13
+ Object.defineProperty(obj, key, {
14
+ value,
15
+ enumerable: true,
16
+ configurable: true,
17
+ writable: true
18
+ });
19
+ } else {
20
+ obj[key] = value;
42
21
  }
22
+ return obj;
23
+ }
24
+ function _interop_require_default(obj) {
25
+ return obj && obj.__esModule ? obj : {
26
+ default: obj
27
+ };
28
+ }
29
+ class TaskRunner extends _events.EventEmitter {
43
30
  async run() {
44
31
  const tasks = this._tasks.splice(0, this._concurrency);
45
32
  this._usableConcurrency = this._concurrency - tasks.length;
46
- await (0, import_p_map.default)(
47
- tasks,
48
- async (task) => {
49
- await this._runTask(task);
50
- },
51
- { concurrency: tasks.length }
52
- );
33
+ await (0, _pmap.default)(tasks, async (task) => {
34
+ await this._runTask(task);
35
+ }, {
36
+ concurrency: tasks.length
37
+ });
53
38
  }
54
39
  addTask(task) {
55
40
  this._tasks.push(task);
@@ -60,29 +45,33 @@ const _TaskRunner = class extends import_events.EventEmitter {
60
45
  }
61
46
  const emitValue = await task(this._stopTask.bind(this));
62
47
  this._usableConcurrency--;
63
- this.emit(_TaskRunner.TASK_FINISH, emitValue);
48
+ this.emit(TaskRunner.TASK_FINISH, emitValue);
64
49
  if (this._tasks.length > 0) {
65
50
  const nextTasks = this._tasks.splice(0, this._usableConcurrency);
66
51
  this._usableConcurrency -= nextTasks.length;
67
52
  if (nextTasks.length > 0) {
68
- await (0, import_p_map.default)(
69
- nextTasks,
70
- async (_task) => {
71
- await this._runTask(_task);
72
- },
73
- { concurrency: nextTasks.length }
74
- );
53
+ await (0, _pmap.default)(nextTasks, async (_task) => {
54
+ await this._runTask(_task);
55
+ }, {
56
+ concurrency: nextTasks.length
57
+ });
75
58
  }
76
59
  }
77
60
  }
78
61
  _stopTask() {
79
62
  this._stopFlag = true;
80
63
  }
81
- };
82
- let TaskRunner = _TaskRunner;
83
- TaskRunner.DefaultConcurrency = 10;
84
- TaskRunner.TASK_FINISH = "task-finish";
85
- // Annotate the CommonJS export names for ESM import in node:
86
- 0 && (module.exports = {
87
- TaskRunner
88
- });
64
+ constructor(tasks, { concurrency }) {
65
+ super();
66
+ _define_property(this, "_tasks", void 0);
67
+ _define_property(this, "_concurrency", void 0);
68
+ _define_property(this, "_usableConcurrency", void 0);
69
+ _define_property(this, "_stopFlag", void 0);
70
+ this._tasks = tasks;
71
+ this._concurrency = concurrency || TaskRunner.DefaultConcurrency;
72
+ this._usableConcurrency = this._concurrency;
73
+ this._stopFlag = false;
74
+ }
75
+ }
76
+ _define_property(TaskRunner, "DefaultConcurrency", 10);
77
+ _define_property(TaskRunner, "TASK_FINISH", "task-finish");
@@ -1,61 +1,60 @@
1
- var __defProp = Object.defineProperty;
2
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
- var __getOwnPropNames = Object.getOwnPropertyNames;
4
- var __hasOwnProp = Object.prototype.hasOwnProperty;
5
- var __export = (target, all) => {
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
6
  for (var name in all)
7
- __defProp(target, name, { get: all[name], enumerable: true });
8
- };
9
- var __copyProps = (to, from, except, desc) => {
10
- if (from && typeof from === "object" || typeof from === "function") {
11
- for (let key of __getOwnPropNames(from))
12
- if (!__hasOwnProp.call(to, key) && key !== except)
13
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
- }
15
- return to;
16
- };
17
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
- var utils_exports = {};
19
- __export(utils_exports, {
7
+ Object.defineProperty(target, name, {
8
+ enumerable: true,
9
+ get: all[name]
10
+ });
11
+ }
12
+ _export(exports, {
20
13
  calculateCriticalPaths: () => calculateCriticalPaths,
21
- findCircle: () => findCircle,
22
14
  recursiveGetDependency: () => recursiveGetDependency,
23
- sortProjects: () => sortProjects
15
+ sortProjects: () => sortProjects,
16
+ findCircle: () => findCircle
24
17
  });
25
- module.exports = __toCommonJS(utils_exports);
26
- var import_error = require("../log/error");
27
- var import_edgeManager = require("./edgeManager");
18
+ const _error = require("../log/error");
19
+ const _edgeManager = require("./edgeManager");
28
20
  const calculateCriticalPaths = (project) => {
29
- var _a, _b;
21
+ var _project_dependent;
30
22
  if (project.criticalPathLength !== void 0) {
31
23
  return project.criticalPathLength;
32
24
  }
33
- if (((_a = project.dependent) == null ? void 0 : _a.length) === 0) {
25
+ if (((_project_dependent = project.dependent) === null || _project_dependent === void 0 ? void 0 : _project_dependent.length) === 0) {
34
26
  project.criticalPathLength = 0;
35
27
  return project.criticalPathLength;
36
28
  } else {
29
+ var _project_dependent1;
37
30
  const depsLengths = [];
38
- (_b = project.dependent) == null ? void 0 : _b.forEach(
39
- (dependentProject) => depsLengths.push(calculateCriticalPaths(dependentProject))
40
- );
31
+ (_project_dependent1 = project.dependent) === null || _project_dependent1 === void 0 ? void 0 : _project_dependent1.forEach((dependentProject) => depsLengths.push(calculateCriticalPaths(dependentProject)));
41
32
  project.criticalPathLength = Math.max(...depsLengths) + 1;
42
33
  return project.criticalPathLength;
43
34
  }
44
35
  };
45
36
  const _recursiveGetDependencySkipCircleDeps = (node) => {
46
37
  let allDeps = [];
47
- const foundDepsNameSet = /* @__PURE__ */ new Set([node.name]);
48
- let queue = [node];
38
+ const foundDepsNameSet = /* @__PURE__ */ new Set([
39
+ node.name
40
+ ]);
41
+ let queue = [
42
+ node
43
+ ];
49
44
  while (queue.length > 0) {
50
45
  const checkNode = queue.pop();
51
46
  const checkNodeDeps = checkNode.dependency || [];
52
47
  if (checkNodeDeps.length > 0) {
53
- const willIntoQueue = checkNodeDeps.filter(
54
- (dep) => !foundDepsNameSet.has(dep.name)
55
- );
56
- allDeps = [...allDeps, ...willIntoQueue];
48
+ const willIntoQueue = checkNodeDeps.filter((dep) => !foundDepsNameSet.has(dep.name));
49
+ allDeps = [
50
+ ...allDeps,
51
+ ...willIntoQueue
52
+ ];
57
53
  willIntoQueue.forEach((dep) => foundDepsNameSet.add(dep.name));
58
- queue = [...queue, ...willIntoQueue];
54
+ queue = [
55
+ ...queue,
56
+ ...willIntoQueue
57
+ ];
59
58
  }
60
59
  }
61
60
  return allDeps;
@@ -65,7 +64,9 @@ const recursiveGetDependency = (project, skipCircleProjects = false) => {
65
64
  return _recursiveGetDependencySkipCircleDeps(project);
66
65
  }
67
66
  const dependency = project.dependency || [];
68
- let allDependency = [...dependency];
67
+ let allDependency = [
68
+ ...dependency
69
+ ];
69
70
  for (const dependencyProject of dependency) {
70
71
  allDependency = [
71
72
  ...allDependency,
@@ -78,14 +79,16 @@ const sortProjects = (projects) => {
78
79
  const sortedQueue = [];
79
80
  let readyIntoSortedQueue = [];
80
81
  let queue = [];
81
- const edgeManager = new import_edgeManager.EdgeManager();
82
+ const edgeManager = new _edgeManager.EdgeManager();
82
83
  for (const project of projects) {
83
84
  edgeManager.setEdge(project);
84
85
  if (edgeManager.getEdge(project) === 0) {
85
86
  queue.push(project);
86
87
  }
87
88
  }
88
- sortedQueue.push([...queue]);
89
+ sortedQueue.push([
90
+ ...queue
91
+ ]);
89
92
  let shiftNodesCount = 0;
90
93
  while (queue.length > 0) {
91
94
  const checkNode = queue.shift();
@@ -97,13 +100,17 @@ const sortProjects = (projects) => {
97
100
  }
98
101
  }
99
102
  if (queue.length === 0 && readyIntoSortedQueue.length > 0) {
100
- queue = [...readyIntoSortedQueue];
101
- sortedQueue.push([...readyIntoSortedQueue]);
103
+ queue = [
104
+ ...readyIntoSortedQueue
105
+ ];
106
+ sortedQueue.push([
107
+ ...readyIntoSortedQueue
108
+ ]);
102
109
  readyIntoSortedQueue = [];
103
110
  }
104
111
  }
105
112
  if (shiftNodesCount < projects.length) {
106
- (0, import_error.errorLog)("Items with a dependency loop");
113
+ (0, _error.errorLog)("Items with a dependency loop");
107
114
  } else {
108
115
  }
109
116
  return sortedQueue;
@@ -111,7 +118,10 @@ const sortProjects = (projects) => {
111
118
  const findCircle = (projects) => {
112
119
  let result = projects.reduce((circleNodes, project) => {
113
120
  if (project.dependencyEdge > 0) {
114
- return [...circleNodes, project];
121
+ return [
122
+ ...circleNodes,
123
+ project
124
+ ];
115
125
  }
116
126
  return circleNodes;
117
127
  }, []);
@@ -121,10 +131,3 @@ const findCircle = (projects) => {
121
131
  checkNode.dependencyEdge--;
122
132
  }
123
133
  };
124
- // Annotate the CommonJS export names for ESM import in node:
125
- 0 && (module.exports = {
126
- calculateCriticalPaths,
127
- findCircle,
128
- recursiveGetDependency,
129
- sortProjects
130
- });