@modern-js/monorepo-tools 2.4.1-beta.0 → 2.5.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 (118) hide show
  1. package/CHANGELOG.md +19 -8
  2. package/cli.js +1 -1
  3. package/dist/{js/node → cjs}/cli/build-watch.js +3 -23
  4. package/dist/{js/node → cjs}/cli/build.js +3 -23
  5. package/dist/{js/node → cjs}/cli/clear.js +3 -23
  6. package/dist/{js/node → cjs}/cli/deploy.js +3 -23
  7. package/dist/{js/node → cjs}/cli/index.js +0 -0
  8. package/dist/cjs/cli/install.js +34 -0
  9. package/dist/{js/node → cjs}/cli/new.js +3 -40
  10. package/dist/{js/node → cjs}/commands/build-watch.js +4 -24
  11. package/dist/{js/node → cjs}/commands/build.js +8 -41
  12. package/dist/{js/node → cjs}/commands/clear.js +3 -23
  13. package/dist/{js/node → cjs}/commands/deploy.js +4 -24
  14. package/dist/{js/node → cjs}/commands/index.js +0 -0
  15. package/dist/{js/node → cjs}/commands/install.js +4 -24
  16. package/dist/{js/node → cjs}/constants.js +0 -0
  17. package/dist/{js/node → cjs}/dag/create.js +5 -15
  18. package/dist/{js/node → cjs}/dag/edge-manager.js +0 -0
  19. package/dist/{js/node → cjs}/dag/index.js +0 -0
  20. package/dist/cjs/dag/operator.js +232 -0
  21. package/dist/{js/node → cjs}/dag/task.js +29 -53
  22. package/dist/{js/node → cjs}/dag/utils.js +0 -0
  23. package/dist/{js/node → cjs}/features/build/index.js +13 -33
  24. package/dist/{js/node → cjs}/features/clear/index.js +0 -0
  25. package/dist/{js/node → cjs}/features/deploy/index.js +10 -30
  26. package/dist/{js/node → cjs}/features/dev/cmds.js +0 -0
  27. package/dist/{js/node → cjs}/features/dev/create-task.js +6 -26
  28. package/dist/{js/node → cjs}/features/dev/index.js +14 -34
  29. package/dist/{js/node → cjs}/features/dev/watch-projects-state.js +3 -19
  30. package/dist/{js/node → cjs}/features/install/index.js +3 -23
  31. package/dist/{js/node → cjs}/hooks/index.js +0 -0
  32. package/dist/{js/node → cjs}/index.js +0 -0
  33. package/dist/{js/node → cjs}/locale/en.js +0 -0
  34. package/dist/{js/node → cjs}/locale/index.js +0 -0
  35. package/dist/{js/node → cjs}/locale/zh.js +0 -0
  36. package/dist/{js/node → cjs}/log/error.js +0 -0
  37. package/dist/{js/node → cjs}/log/multi-tasks-log.js +0 -0
  38. package/dist/{js/node → cjs}/log/time.js +1 -15
  39. package/dist/{js/node → cjs}/log/utils.js +0 -0
  40. package/dist/{js/node → cjs}/package/index.js +0 -0
  41. package/dist/{js/node → cjs}/parse-config/index.js +4 -38
  42. package/dist/{js/node → cjs}/parse-config/monorepo.js +0 -0
  43. package/dist/{js/node → cjs}/projects/check-project-change.js +12 -32
  44. package/dist/{js/node → cjs}/projects/clear-memory-files.js +0 -0
  45. package/dist/{js/node → cjs}/projects/get-projects-by-packages-config.js +11 -45
  46. package/dist/{js/node → cjs}/projects/get-projects-by-workspace-file.js +4 -24
  47. package/dist/{js/node → cjs}/projects/get-projects.js +15 -47
  48. package/dist/{js/node → cjs}/type.js +0 -0
  49. package/dist/{js/node → cjs}/utils/install.js +4 -24
  50. package/dist/{js/node → cjs}/utils/language.js +0 -0
  51. package/dist/{js/node → cjs}/utils/types.js +0 -0
  52. package/dist/esm/cli/build-watch.js +11 -0
  53. package/dist/esm/cli/build.js +12 -0
  54. package/dist/esm/cli/clear.js +11 -0
  55. package/dist/esm/cli/deploy.js +16 -0
  56. package/dist/{js/modern → esm}/cli/index.js +0 -0
  57. package/dist/esm/cli/install.js +11 -0
  58. package/dist/esm/cli/new.js +18 -0
  59. package/dist/esm/commands/build-watch.js +24 -0
  60. package/dist/esm/commands/build.js +55 -0
  61. package/dist/esm/commands/clear.js +19 -0
  62. package/dist/{js/modern → esm}/commands/deploy.js +4 -24
  63. package/dist/{js/modern → esm}/commands/index.js +0 -0
  64. package/dist/esm/commands/install.js +23 -0
  65. package/dist/{js/modern → esm}/constants.js +0 -0
  66. package/dist/{js/modern → esm}/dag/create.js +5 -17
  67. package/dist/{js/modern → esm}/dag/edge-manager.js +0 -0
  68. package/dist/{js/modern → esm}/dag/index.js +0 -0
  69. package/dist/esm/dag/operator.js +203 -0
  70. package/dist/esm/dag/task.js +55 -0
  71. package/dist/{js/modern → esm}/dag/utils.js +0 -0
  72. package/dist/{js/modern → esm}/features/build/index.js +13 -33
  73. package/dist/{js/modern → esm}/features/clear/index.js +0 -0
  74. package/dist/{js/modern → esm}/features/deploy/index.js +10 -30
  75. package/dist/{js/modern → esm}/features/dev/cmds.js +0 -0
  76. package/dist/{js/modern → esm}/features/dev/create-task.js +6 -26
  77. package/dist/{js/modern → esm}/features/dev/index.js +14 -34
  78. package/dist/{js/modern → esm}/features/dev/watch-projects-state.js +3 -21
  79. package/dist/{js/modern → esm}/features/install/index.js +3 -23
  80. package/dist/{js/modern → esm}/hooks/index.js +0 -0
  81. package/dist/{js/modern → esm}/index.js +0 -0
  82. package/dist/{js/modern → esm}/locale/en.js +0 -0
  83. package/dist/{js/modern → esm}/locale/index.js +0 -0
  84. package/dist/{js/modern → esm}/locale/zh.js +0 -0
  85. package/dist/{js/modern → esm}/log/error.js +0 -0
  86. package/dist/{js/modern → esm}/log/multi-tasks-log.js +0 -0
  87. package/dist/esm/log/time.js +13 -0
  88. package/dist/{js/modern → esm}/log/utils.js +0 -0
  89. package/dist/{js/modern → esm}/package/index.js +0 -0
  90. package/dist/esm/parse-config/index.js +15 -0
  91. package/dist/{js/modern → esm}/parse-config/monorepo.js +0 -0
  92. package/dist/{js/modern → esm}/projects/check-project-change.js +12 -32
  93. package/dist/{js/modern → esm}/projects/clear-memory-files.js +0 -0
  94. package/dist/{js/modern → esm}/projects/get-projects-by-packages-config.js +11 -47
  95. package/dist/{js/modern → esm}/projects/get-projects-by-workspace-file.js +4 -24
  96. package/dist/{js/modern → esm}/projects/get-projects.js +15 -49
  97. package/dist/{js/modern → esm}/type.js +0 -0
  98. package/dist/esm/utils/install.js +27 -0
  99. package/dist/{js/modern → esm}/utils/language.js +0 -0
  100. package/dist/{js/modern → esm}/utils/types.js +0 -0
  101. package/package.json +16 -16
  102. package/dist/js/modern/cli/build-watch.js +0 -31
  103. package/dist/js/modern/cli/build.js +0 -32
  104. package/dist/js/modern/cli/clear.js +0 -31
  105. package/dist/js/modern/cli/deploy.js +0 -36
  106. package/dist/js/modern/cli/install.js +0 -31
  107. package/dist/js/modern/cli/new.js +0 -57
  108. package/dist/js/modern/commands/build-watch.js +0 -44
  109. package/dist/js/modern/commands/build.js +0 -90
  110. package/dist/js/modern/commands/clear.js +0 -39
  111. package/dist/js/modern/commands/install.js +0 -43
  112. package/dist/js/modern/dag/operator.js +0 -251
  113. package/dist/js/modern/dag/task.js +0 -79
  114. package/dist/js/modern/log/time.js +0 -29
  115. package/dist/js/modern/parse-config/index.js +0 -51
  116. package/dist/js/modern/utils/install.js +0 -47
  117. package/dist/js/node/cli/install.js +0 -54
  118. package/dist/js/node/dag/operator.js +0 -278
@@ -1,29 +0,0 @@
1
- var __defProp = Object.defineProperty;
2
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
3
- var __hasOwnProp = Object.prototype.hasOwnProperty;
4
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
5
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
- var __spreadValues = (a, b) => {
7
- for (var prop in b || (b = {}))
8
- if (__hasOwnProp.call(b, prop))
9
- __defNormalProp(a, prop, b[prop]);
10
- if (__getOwnPropSymbols)
11
- for (var prop of __getOwnPropSymbols(b)) {
12
- if (__propIsEnum.call(b, prop))
13
- __defNormalProp(a, prop, b[prop]);
14
- }
15
- return a;
16
- };
17
- import { Signale } from "@modern-js/utils";
18
- const initTimeLog = (option = {}) => new Signale(__spreadValues({ interactive: true, scope: "time-log" }, option));
19
- const startTime = (signaleInstance, prefix = "") => {
20
- signaleInstance.time(prefix);
21
- };
22
- const endTime = (signaleInstance, prefix = "") => {
23
- signaleInstance.timeEnd(prefix);
24
- };
25
- export {
26
- endTime,
27
- initTimeLog,
28
- startTime
29
- };
@@ -1,51 +0,0 @@
1
- var __defProp = Object.defineProperty;
2
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
3
- var __hasOwnProp = Object.prototype.hasOwnProperty;
4
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
5
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
- var __spreadValues = (a, b) => {
7
- for (var prop in b || (b = {}))
8
- if (__hasOwnProp.call(b, prop))
9
- __defNormalProp(a, prop, b[prop]);
10
- if (__getOwnPropSymbols)
11
- for (var prop of __getOwnPropSymbols(b)) {
12
- if (__propIsEnum.call(b, prop))
13
- __defNormalProp(a, prop, b[prop]);
14
- }
15
- return a;
16
- };
17
- var __async = (__this, __arguments, generator) => {
18
- return new Promise((resolve, reject) => {
19
- var fulfilled = (value) => {
20
- try {
21
- step(generator.next(value));
22
- } catch (e) {
23
- reject(e);
24
- }
25
- };
26
- var rejected = (value) => {
27
- try {
28
- step(generator.throw(value));
29
- } catch (e) {
30
- reject(e);
31
- }
32
- };
33
- var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
34
- step((generator = generator.apply(__this, __arguments)).next());
35
- });
36
- };
37
- import * as path from "path";
38
- import { JsonFile } from "@rushstack/node-core-library";
39
- import { getMonorepoBaseData } from "./monorepo";
40
- const defaultConfig = {};
41
- const getFinalConfig = (..._0) => __async(void 0, [..._0], function* (currentPath = process.cwd()) {
42
- const monorepo = getMonorepoBaseData(currentPath);
43
- const userConfig = yield JsonFile.loadAsync(
44
- path.resolve(monorepo.rootPath, "mono-config.json")
45
- );
46
- const config = __spreadValues(__spreadValues({}, defaultConfig), userConfig);
47
- return { monorepo, config };
48
- });
49
- export {
50
- getFinalConfig
51
- };
@@ -1,47 +0,0 @@
1
- var __async = (__this, __arguments, generator) => {
2
- return new Promise((resolve, reject) => {
3
- var fulfilled = (value) => {
4
- try {
5
- step(generator.next(value));
6
- } catch (e) {
7
- reject(e);
8
- }
9
- };
10
- var rejected = (value) => {
11
- try {
12
- step(generator.throw(value));
13
- } catch (e) {
14
- reject(e);
15
- }
16
- };
17
- var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
18
- step((generator = generator.apply(__this, __arguments)).next());
19
- });
20
- };
21
- import * as path from "path";
22
- import { fs, execa } from "@modern-js/utils";
23
- import { LOCK_FILE } from "../constants";
24
- const removeLockFile = (rootPath, packageManager) => {
25
- if (packageManager === "pnpm") {
26
- fs.removeSync(path.join(rootPath, LOCK_FILE.PNPM));
27
- } else if (packageManager === "yarn") {
28
- fs.removeSync(path.join(rootPath, LOCK_FILE.YARN));
29
- } else if (packageManager === "npm") {
30
- fs.removeSync(path.join(rootPath, LOCK_FILE.NPM));
31
- }
32
- };
33
- const installByPackageManager = (_0, _1) => __async(void 0, [_0, _1], function* (packageManager, { rootPath, removeLock }) {
34
- if (removeLock) {
35
- removeLockFile(rootPath, packageManager);
36
- }
37
- if (packageManager === "pnpm") {
38
- yield execa("pnpm", ["install"], { stdio: "inherit" });
39
- }
40
- if (packageManager === "yarn") {
41
- yield execa("yarn", ["install"], { stdio: "inherit" });
42
- }
43
- });
44
- export {
45
- installByPackageManager,
46
- removeLockFile
47
- };
@@ -1,54 +0,0 @@
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) => {
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 __async = (__this, __arguments, generator) => {
19
- return new Promise((resolve, reject) => {
20
- var fulfilled = (value) => {
21
- try {
22
- step(generator.next(value));
23
- } catch (e) {
24
- reject(e);
25
- }
26
- };
27
- var rejected = (value) => {
28
- try {
29
- step(generator.throw(value));
30
- } catch (e) {
31
- reject(e);
32
- }
33
- };
34
- var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
35
- step((generator = generator.apply(__this, __arguments)).next());
36
- });
37
- };
38
- var install_exports = {};
39
- __export(install_exports, {
40
- installCli: () => installCli
41
- });
42
- module.exports = __toCommonJS(install_exports);
43
- var import_commands = require("../commands");
44
- const installCli = (program, api) => {
45
- program.command("install [project...]").usage("[options]").description("install deps for some projects").action(
46
- (installProjectNames, option) => __async(void 0, null, function* () {
47
- yield (0, import_commands.install)(installProjectNames, option, api);
48
- })
49
- );
50
- };
51
- // Annotate the CommonJS export names for ESM import in node:
52
- 0 && (module.exports = {
53
- installCli
54
- });
@@ -1,278 +0,0 @@
1
- var __create = Object.create;
2
- var __defProp = Object.defineProperty;
3
- var __defProps = Object.defineProperties;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
6
- var __getOwnPropNames = Object.getOwnPropertyNames;
7
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
8
- var __getProtoOf = Object.getPrototypeOf;
9
- var __hasOwnProp = Object.prototype.hasOwnProperty;
10
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
11
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
12
- var __spreadValues = (a, b) => {
13
- for (var prop in b || (b = {}))
14
- if (__hasOwnProp.call(b, prop))
15
- __defNormalProp(a, prop, b[prop]);
16
- if (__getOwnPropSymbols)
17
- for (var prop of __getOwnPropSymbols(b)) {
18
- if (__propIsEnum.call(b, prop))
19
- __defNormalProp(a, prop, b[prop]);
20
- }
21
- return a;
22
- };
23
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
24
- var __export = (target, all) => {
25
- for (var name in all)
26
- __defProp(target, name, { get: all[name], enumerable: true });
27
- };
28
- var __copyProps = (to, from, except, desc) => {
29
- if (from && typeof from === "object" || typeof from === "function") {
30
- for (let key of __getOwnPropNames(from))
31
- if (!__hasOwnProp.call(to, key) && key !== except)
32
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
33
- }
34
- return to;
35
- };
36
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
37
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
38
- mod
39
- ));
40
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
41
- var __async = (__this, __arguments, generator) => {
42
- return new Promise((resolve, reject) => {
43
- var fulfilled = (value) => {
44
- try {
45
- step(generator.next(value));
46
- } catch (e) {
47
- reject(e);
48
- }
49
- };
50
- var rejected = (value) => {
51
- try {
52
- step(generator.throw(value));
53
- } catch (e) {
54
- reject(e);
55
- }
56
- };
57
- var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
58
- step((generator = generator.apply(__this, __arguments)).next());
59
- });
60
- };
61
- var operator_exports = {};
62
- __export(operator_exports, {
63
- DagOperator: () => DagOperator
64
- });
65
- module.exports = __toCommonJS(operator_exports);
66
- var import_p_map = __toESM(require("p-map"));
67
- var import_error = require("../log/error");
68
- var import_task = require("./task");
69
- var import_edge_manager = require("./edge-manager");
70
- var import_utils = require("./utils");
71
- class DagOperator {
72
- constructor(projects, projectsMap) {
73
- this._createTask = (project, task) => (stopTask = () => void 0) => __async(this, null, function* () {
74
- yield task(project, project.dependency || [], () => stopTask());
75
- return project.name;
76
- });
77
- this._projects = projects;
78
- this._projectsMap = projectsMap;
79
- this._sortedProjects = [];
80
- }
81
- checkNodeDataExist(name) {
82
- return this._projectsMap.has(name);
83
- }
84
- getNodeData(name, option = { checkExist: false }) {
85
- if (option.checkExist) {
86
- if (this._projectsMap.has(name)) {
87
- return this._projectsMap.get(name);
88
- } else {
89
- (0, import_error.errorLog)(`No '${name}' project exist`);
90
- }
91
- }
92
- return this._projectsMap.get(name);
93
- }
94
- getNodeDependencyData(name) {
95
- var _a;
96
- return ((_a = this._projectsMap.get(name)) == null ? void 0 : _a.dependency) || [];
97
- }
98
- getNodeDependentData(name) {
99
- var _a;
100
- return ((_a = this._projectsMap.get(name)) == null ? void 0 : _a.dependent) || [];
101
- }
102
- getNodeAllDependencyData(name, option = { skipCircleCheck: false }) {
103
- const { skipCircleCheck } = option;
104
- if (!skipCircleCheck) {
105
- this.checkCircle();
106
- }
107
- if (!this._projectsMap.has(name)) {
108
- (0, import_error.errorLog)(`No '${name}' project exist`);
109
- }
110
- const currentNode = this._projectsMap.get(name);
111
- return (0, import_utils.recursiveGetDependency)(currentNode, skipCircleCheck);
112
- }
113
- setNodeData(name, task) {
114
- if (this._projectsMap.has(name)) {
115
- task(this._projectsMap.get(name));
116
- } else {
117
- (0, import_error.errorLog)(`No '${name}' project exist`);
118
- }
119
- }
120
- traverseAllNodes(task) {
121
- return __async(this, null, function* () {
122
- const sortedNodes = this._sortedProjects.length > 0 ? this._sortedProjects : (0, import_utils.sortProjects)(this._projects);
123
- const finishTaskHash = {};
124
- let preNodes = [];
125
- let earlyFinish = false;
126
- for (const projects of sortedNodes) {
127
- if (earlyFinish) {
128
- break;
129
- }
130
- yield (0, import_p_map.default)(
131
- projects,
132
- (project) => __async(this, null, function* () {
133
- if (!finishTaskHash[project.name]) {
134
- finishTaskHash[project.name] = true;
135
- yield task(
136
- project,
137
- this._getProjectPreviousNode(project.dependent || [], preNodes),
138
- () => earlyFinish = true
139
- );
140
- }
141
- }),
142
- { concurrency: projects.length }
143
- );
144
- preNodes = [...projects];
145
- }
146
- });
147
- }
148
- checkCircle() {
149
- this._checkForCyclicDependencies(this._projects, [], /* @__PURE__ */ new Set());
150
- }
151
- traverseDependenciesToProjectToDependent(_0, _1) {
152
- return __async(this, arguments, function* (name, task, config = {}) {
153
- yield this.traverseDependenciesToProject(name, task, config);
154
- yield this.traverseProjectToDependent(name, task, __spreadProps(__spreadValues({}, config), {
155
- withSelf: false
156
- }));
157
- });
158
- }
159
- traverseProjectToDependent(_0, _1) {
160
- return __async(this, arguments, function* (name, task, { withSelf = false, runTaskConcurrency } = {}) {
161
- if (!this._projectsMap.has(name)) {
162
- (0, import_error.errorLog)(`No '${name}' project exist`);
163
- }
164
- const traverseTargetNode = this._projectsMap.get(name);
165
- const leafNodeTasks = [
166
- withSelf ? this._createTask(traverseTargetNode, task) : () => __async(this, null, function* () {
167
- return Promise.resolve(traverseTargetNode.name);
168
- })
169
- ];
170
- const taskRunner = new import_task.TaskRunner(leafNodeTasks, {
171
- concurrency: runTaskConcurrency
172
- });
173
- const edgeManager = new import_edge_manager.EdgeManager();
174
- taskRunner.on(import_task.TaskRunner.TASK_FINISH, (projectName) => {
175
- const projectNode = this.getNodeData(projectName);
176
- const dependent = projectNode.dependent || [];
177
- for (const dependentProject of dependent) {
178
- const dependency = dependentProject.dependency || [];
179
- const removeNodes = dependency.filter(
180
- (dependencyProject) => ![projectName, ...dependent.map((p) => p.name)].includes(
181
- dependencyProject.name
182
- )
183
- );
184
- edgeManager.reduceEdges(dependentProject, removeNodes.length + 1);
185
- if (edgeManager.getEdge(dependentProject) === 0) {
186
- taskRunner.addTask(this._createTask(dependentProject, task));
187
- }
188
- }
189
- });
190
- yield taskRunner.run();
191
- });
192
- }
193
- traverseDependenciesToProject(_0, _1) {
194
- return __async(this, arguments, function* (name, task, { withSelf = false, runTaskConcurrency } = {}) {
195
- if (!this._projectsMap.has(name)) {
196
- (0, import_error.errorLog)(`No '${name}' project exist`);
197
- }
198
- const traverseTargetNode = this._projectsMap.get(name);
199
- const leafNodes = this._getDependencyLeafNodes(traverseTargetNode);
200
- if ((leafNodes == null ? void 0 : leafNodes.length) === 0) {
201
- yield this._createTask(traverseTargetNode, task)();
202
- return;
203
- }
204
- const leafNodeTasks = leafNodes.map(
205
- (project) => this._createTask(project, task)
206
- );
207
- const taskRunner = new import_task.TaskRunner(leafNodeTasks, {
208
- concurrency: runTaskConcurrency
209
- });
210
- const edgeManager = new import_edge_manager.EdgeManager();
211
- taskRunner.on(import_task.TaskRunner.TASK_FINISH, (projectName) => {
212
- const projectNode = this.getNodeData(projectName);
213
- const dependent = projectNode.dependent || [];
214
- for (const dependentProject of dependent) {
215
- if (![traverseTargetNode, ...leafNodes].some(
216
- (n) => n.name === dependentProject.name
217
- )) {
218
- continue;
219
- }
220
- edgeManager.reduceOneEdge(dependentProject);
221
- if (dependentProject.name === traverseTargetNode.name && !withSelf) {
222
- continue;
223
- }
224
- if (edgeManager.getEdge(dependentProject) === 0) {
225
- taskRunner.addTask(this._createTask(dependentProject, task));
226
- }
227
- }
228
- });
229
- yield taskRunner.run();
230
- });
231
- }
232
- _checkForCyclicDependencies(projects, dependencyChain, alreadyCheckedProjects) {
233
- for (const project of projects) {
234
- if (dependencyChain.includes(project.name)) {
235
- throw new Error(
236
- `${"A cyclic dependency was encountered:\n"} ${[
237
- ...dependencyChain,
238
- project.name
239
- ].reverse().join("\n -> ")}
240
- `
241
- );
242
- }
243
- if (!alreadyCheckedProjects.has(project.name)) {
244
- alreadyCheckedProjects.add(project.name);
245
- dependencyChain.push(project.name);
246
- this._checkForCyclicDependencies(
247
- project.dependent,
248
- dependencyChain,
249
- alreadyCheckedProjects
250
- );
251
- dependencyChain.pop();
252
- }
253
- }
254
- }
255
- _getDependencyLeafNodes(node) {
256
- const dependency = node.dependency;
257
- if (dependency.length === 0) {
258
- return [];
259
- }
260
- let leafNodes = [...dependency];
261
- for (const dependencyNode of dependency) {
262
- leafNodes = [
263
- ...leafNodes,
264
- ...this._getDependencyLeafNodes(dependencyNode)
265
- ];
266
- }
267
- return leafNodes;
268
- }
269
- _getProjectPreviousNode(searchProjects, preNodes) {
270
- return searchProjects.filter(
271
- (p) => preNodes.map((preP) => preP.name).includes(p.name)
272
- );
273
- }
274
- }
275
- // Annotate the CommonJS export names for ESM import in node:
276
- 0 && (module.exports = {
277
- DagOperator
278
- });