@modern-js/monorepo-tools 2.4.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 +24 -0
  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,36 +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 { deploy } from "../commands";
22
- const deployCli = (program, api) => {
23
- program.command("deploy [project...]").usage("[options]").option(
24
- "-p, --path [path]",
25
- "Specify the path of the product output",
26
- "output"
27
- ).description("deploy project").action(
28
- (deployProjectNames, option) => __async(void 0, null, function* () {
29
- const ignoreMatchs = ["**/output/**"];
30
- yield deploy(api, deployProjectNames, option, ignoreMatchs);
31
- })
32
- );
33
- };
34
- export {
35
- deployCli
36
- };
@@ -1,31 +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 { install } from "../commands";
22
- const installCli = (program, api) => {
23
- program.command("install [project...]").usage("[options]").description("install deps for some projects").action(
24
- (installProjectNames, option) => __async(void 0, null, function* () {
25
- yield install(installProjectNames, option, api);
26
- })
27
- );
28
- };
29
- export {
30
- installCli
31
- };
@@ -1,57 +0,0 @@
1
- var __defProp = Object.defineProperty;
2
- var __defProps = Object.defineProperties;
3
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
- var __spreadValues = (a, b) => {
9
- for (var prop in b || (b = {}))
10
- if (__hasOwnProp.call(b, prop))
11
- __defNormalProp(a, prop, b[prop]);
12
- if (__getOwnPropSymbols)
13
- for (var prop of __getOwnPropSymbols(b)) {
14
- if (__propIsEnum.call(b, prop))
15
- __defNormalProp(a, prop, b[prop]);
16
- }
17
- return a;
18
- };
19
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
- var __async = (__this, __arguments, generator) => {
21
- return new Promise((resolve, reject) => {
22
- var fulfilled = (value) => {
23
- try {
24
- step(generator.next(value));
25
- } catch (e) {
26
- reject(e);
27
- }
28
- };
29
- var rejected = (value) => {
30
- try {
31
- step(generator.throw(value));
32
- } catch (e) {
33
- reject(e);
34
- }
35
- };
36
- var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
37
- step((generator = generator.apply(__this, __arguments)).next());
38
- });
39
- };
40
- import { MonorepoNewAction } from "@modern-js/new-action";
41
- import { i18n, localeKeys } from "../locale";
42
- const newCli = (program, locale) => {
43
- program.command("new").usage("[options]").description(i18n.t(localeKeys.command.new.describe)).option("-d, --debug", i18n.t(localeKeys.command.new.debug), false).option("-c, --config <config>", i18n.t(localeKeys.command.new.config)).option(
44
- "-p, --plugin <plugin>",
45
- i18n.t(localeKeys.command.new.plugin),
46
- (val, memo) => {
47
- memo.push(val);
48
- return memo;
49
- },
50
- []
51
- ).option("--lang <lang>", i18n.t(localeKeys.command.new.lang)).option("--dist-tag <tag>", i18n.t(localeKeys.command.new.distTag)).option("--registry", i18n.t(localeKeys.command.new.registry)).action((options) => __async(void 0, null, function* () {
52
- yield MonorepoNewAction(__spreadProps(__spreadValues({}, options), { locale: options.lang || locale }));
53
- }));
54
- };
55
- export {
56
- newCli
57
- };
@@ -1,44 +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 { getMonorepoBaseData } from "../parse-config/monorepo";
22
- import { runBuildWatchTask } from "../features/dev";
23
- import { getProjects } from "../projects/get-projects";
24
- import { initDAG } from "../dag";
25
- const buildWatch = (targetProjectName, option, api) => __async(void 0, null, function* () {
26
- const { appDirectory } = api.useAppContext();
27
- const { onlySelf = false, init = false } = option;
28
- const projects = yield getProjects(
29
- { packagesMatchs: { enableAutoFinder: true } },
30
- appDirectory
31
- );
32
- const operator = initDAG(projects);
33
- operator.checkCircle();
34
- const { rootPath, packageManager } = getMonorepoBaseData(process.cwd());
35
- yield runBuildWatchTask(targetProjectName, operator, {
36
- rootPath,
37
- packageManager,
38
- onlySelf,
39
- needInit: init
40
- });
41
- });
42
- export {
43
- buildWatch
44
- };
@@ -1,90 +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 { getMonorepoBaseData } from "../parse-config/monorepo";
38
- import { runBuildTask, runAllBuildTask } from "../features/build";
39
- import { getProjects } from "../projects/get-projects";
40
- import { initDAG } from "../dag";
41
- const build = (targetProjectName, option, api) => __async(void 0, null, function* () {
42
- const { appDirectory } = api.useAppContext();
43
- const {
44
- self = true,
45
- dept = false,
46
- deps = true,
47
- onlySelf = false,
48
- all = false,
49
- contentHash = false,
50
- gitHash = false
51
- } = option;
52
- const projects = yield getProjects(
53
- { packagesMatchs: { enableAutoFinder: true } },
54
- appDirectory
55
- );
56
- const operator = initDAG(projects);
57
- operator.checkCircle();
58
- const { rootPath, packageManager } = getMonorepoBaseData(appDirectory);
59
- const overrideConfig = {};
60
- if (all) {
61
- overrideConfig.disableWithDeps = false;
62
- overrideConfig.withSelf = true;
63
- overrideConfig.withDept = true;
64
- }
65
- if (targetProjectName) {
66
- runBuildTask(targetProjectName, operator, __spreadValues({
67
- rootPath,
68
- packageManager,
69
- withSelf: self,
70
- withDept: dept,
71
- onlySelf,
72
- disableWithDeps: !deps,
73
- disableContentHash: !contentHash,
74
- enableGitHash: gitHash
75
- }, overrideConfig));
76
- } else {
77
- const currentDir = process.cwd();
78
- if (currentDir === appDirectory) {
79
- yield runAllBuildTask(operator, {
80
- rootPath: currentDir,
81
- packageManager,
82
- disableContentHash: !contentHash,
83
- enableGitHash: gitHash
84
- });
85
- }
86
- }
87
- });
88
- export {
89
- build
90
- };
@@ -1,39 +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 { getProjects } from "../projects/get-projects";
22
- import { getMonorepoBaseData } from "../parse-config/monorepo";
23
- import { runClearTask } from "../features/clear";
24
- const clear = (projectNames, option, api) => __async(void 0, null, function* () {
25
- const { removeDirs } = option;
26
- const { appDirectory } = api.useAppContext();
27
- const projects = yield getProjects(
28
- { packagesMatchs: { enableAutoFinder: true } },
29
- appDirectory
30
- );
31
- const { rootPath } = getMonorepoBaseData(appDirectory);
32
- runClearTask(projectNames, projects, {
33
- rootPath,
34
- removeDirs
35
- });
36
- });
37
- export {
38
- clear
39
- };
@@ -1,43 +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 { runInstallTask } from "../features/install";
22
- import { getMonorepoBaseData } from "../parse-config/monorepo";
23
- import { getProjects } from "../projects/get-projects";
24
- import { initDAG } from "../dag";
25
- const install = (..._0) => __async(void 0, [..._0], function* (projectNames = [], option, api) {
26
- const { appDirectory } = api.useAppContext();
27
- const { auto } = option;
28
- const projects = yield getProjects(
29
- { packagesMatchs: { enableAutoFinder: true } },
30
- appDirectory
31
- );
32
- const operator = initDAG(projects);
33
- operator.checkCircle();
34
- const { rootPath, packageManager } = getMonorepoBaseData(appDirectory);
35
- yield runInstallTask(projectNames, operator, {
36
- packageManager,
37
- rootPath,
38
- auto
39
- });
40
- });
41
- export {
42
- install
43
- };
@@ -1,251 +0,0 @@
1
- var __defProp = Object.defineProperty;
2
- var __defProps = Object.defineProperties;
3
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
- var __spreadValues = (a, b) => {
9
- for (var prop in b || (b = {}))
10
- if (__hasOwnProp.call(b, prop))
11
- __defNormalProp(a, prop, b[prop]);
12
- if (__getOwnPropSymbols)
13
- for (var prop of __getOwnPropSymbols(b)) {
14
- if (__propIsEnum.call(b, prop))
15
- __defNormalProp(a, prop, b[prop]);
16
- }
17
- return a;
18
- };
19
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
- var __async = (__this, __arguments, generator) => {
21
- return new Promise((resolve, reject) => {
22
- var fulfilled = (value) => {
23
- try {
24
- step(generator.next(value));
25
- } catch (e) {
26
- reject(e);
27
- }
28
- };
29
- var rejected = (value) => {
30
- try {
31
- step(generator.throw(value));
32
- } catch (e) {
33
- reject(e);
34
- }
35
- };
36
- var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
37
- step((generator = generator.apply(__this, __arguments)).next());
38
- });
39
- };
40
- import pMap from "p-map";
41
- import { errorLog } from "../log/error";
42
- import { TaskRunner } from "./task";
43
- import { EdgeManager } from "./edge-manager";
44
- import { recursiveGetDependency, sortProjects } from "./utils";
45
- class DagOperator {
46
- constructor(projects, projectsMap) {
47
- this._createTask = (project, task) => (stopTask = () => void 0) => __async(this, null, function* () {
48
- yield task(project, project.dependency || [], () => stopTask());
49
- return project.name;
50
- });
51
- this._projects = projects;
52
- this._projectsMap = projectsMap;
53
- this._sortedProjects = [];
54
- }
55
- checkNodeDataExist(name) {
56
- return this._projectsMap.has(name);
57
- }
58
- getNodeData(name, option = { checkExist: false }) {
59
- if (option.checkExist) {
60
- if (this._projectsMap.has(name)) {
61
- return this._projectsMap.get(name);
62
- } else {
63
- errorLog(`No '${name}' project exist`);
64
- }
65
- }
66
- return this._projectsMap.get(name);
67
- }
68
- getNodeDependencyData(name) {
69
- var _a;
70
- return ((_a = this._projectsMap.get(name)) == null ? void 0 : _a.dependency) || [];
71
- }
72
- getNodeDependentData(name) {
73
- var _a;
74
- return ((_a = this._projectsMap.get(name)) == null ? void 0 : _a.dependent) || [];
75
- }
76
- getNodeAllDependencyData(name, option = { skipCircleCheck: false }) {
77
- const { skipCircleCheck } = option;
78
- if (!skipCircleCheck) {
79
- this.checkCircle();
80
- }
81
- if (!this._projectsMap.has(name)) {
82
- errorLog(`No '${name}' project exist`);
83
- }
84
- const currentNode = this._projectsMap.get(name);
85
- return recursiveGetDependency(currentNode, skipCircleCheck);
86
- }
87
- setNodeData(name, task) {
88
- if (this._projectsMap.has(name)) {
89
- task(this._projectsMap.get(name));
90
- } else {
91
- errorLog(`No '${name}' project exist`);
92
- }
93
- }
94
- traverseAllNodes(task) {
95
- return __async(this, null, function* () {
96
- const sortedNodes = this._sortedProjects.length > 0 ? this._sortedProjects : sortProjects(this._projects);
97
- const finishTaskHash = {};
98
- let preNodes = [];
99
- let earlyFinish = false;
100
- for (const projects of sortedNodes) {
101
- if (earlyFinish) {
102
- break;
103
- }
104
- yield pMap(
105
- projects,
106
- (project) => __async(this, null, function* () {
107
- if (!finishTaskHash[project.name]) {
108
- finishTaskHash[project.name] = true;
109
- yield task(
110
- project,
111
- this._getProjectPreviousNode(project.dependent || [], preNodes),
112
- () => earlyFinish = true
113
- );
114
- }
115
- }),
116
- { concurrency: projects.length }
117
- );
118
- preNodes = [...projects];
119
- }
120
- });
121
- }
122
- checkCircle() {
123
- this._checkForCyclicDependencies(this._projects, [], /* @__PURE__ */ new Set());
124
- }
125
- traverseDependenciesToProjectToDependent(_0, _1) {
126
- return __async(this, arguments, function* (name, task, config = {}) {
127
- yield this.traverseDependenciesToProject(name, task, config);
128
- yield this.traverseProjectToDependent(name, task, __spreadProps(__spreadValues({}, config), {
129
- withSelf: false
130
- }));
131
- });
132
- }
133
- traverseProjectToDependent(_0, _1) {
134
- return __async(this, arguments, function* (name, task, { withSelf = false, runTaskConcurrency } = {}) {
135
- if (!this._projectsMap.has(name)) {
136
- errorLog(`No '${name}' project exist`);
137
- }
138
- const traverseTargetNode = this._projectsMap.get(name);
139
- const leafNodeTasks = [
140
- withSelf ? this._createTask(traverseTargetNode, task) : () => __async(this, null, function* () {
141
- return Promise.resolve(traverseTargetNode.name);
142
- })
143
- ];
144
- const taskRunner = new TaskRunner(leafNodeTasks, {
145
- concurrency: runTaskConcurrency
146
- });
147
- const edgeManager = new EdgeManager();
148
- taskRunner.on(TaskRunner.TASK_FINISH, (projectName) => {
149
- const projectNode = this.getNodeData(projectName);
150
- const dependent = projectNode.dependent || [];
151
- for (const dependentProject of dependent) {
152
- const dependency = dependentProject.dependency || [];
153
- const removeNodes = dependency.filter(
154
- (dependencyProject) => ![projectName, ...dependent.map((p) => p.name)].includes(
155
- dependencyProject.name
156
- )
157
- );
158
- edgeManager.reduceEdges(dependentProject, removeNodes.length + 1);
159
- if (edgeManager.getEdge(dependentProject) === 0) {
160
- taskRunner.addTask(this._createTask(dependentProject, task));
161
- }
162
- }
163
- });
164
- yield taskRunner.run();
165
- });
166
- }
167
- traverseDependenciesToProject(_0, _1) {
168
- return __async(this, arguments, function* (name, task, { withSelf = false, runTaskConcurrency } = {}) {
169
- if (!this._projectsMap.has(name)) {
170
- errorLog(`No '${name}' project exist`);
171
- }
172
- const traverseTargetNode = this._projectsMap.get(name);
173
- const leafNodes = this._getDependencyLeafNodes(traverseTargetNode);
174
- if ((leafNodes == null ? void 0 : leafNodes.length) === 0) {
175
- yield this._createTask(traverseTargetNode, task)();
176
- return;
177
- }
178
- const leafNodeTasks = leafNodes.map(
179
- (project) => this._createTask(project, task)
180
- );
181
- const taskRunner = new TaskRunner(leafNodeTasks, {
182
- concurrency: runTaskConcurrency
183
- });
184
- const edgeManager = new EdgeManager();
185
- taskRunner.on(TaskRunner.TASK_FINISH, (projectName) => {
186
- const projectNode = this.getNodeData(projectName);
187
- const dependent = projectNode.dependent || [];
188
- for (const dependentProject of dependent) {
189
- if (![traverseTargetNode, ...leafNodes].some(
190
- (n) => n.name === dependentProject.name
191
- )) {
192
- continue;
193
- }
194
- edgeManager.reduceOneEdge(dependentProject);
195
- if (dependentProject.name === traverseTargetNode.name && !withSelf) {
196
- continue;
197
- }
198
- if (edgeManager.getEdge(dependentProject) === 0) {
199
- taskRunner.addTask(this._createTask(dependentProject, task));
200
- }
201
- }
202
- });
203
- yield taskRunner.run();
204
- });
205
- }
206
- _checkForCyclicDependencies(projects, dependencyChain, alreadyCheckedProjects) {
207
- for (const project of projects) {
208
- if (dependencyChain.includes(project.name)) {
209
- throw new Error(
210
- `${"A cyclic dependency was encountered:\n"} ${[
211
- ...dependencyChain,
212
- project.name
213
- ].reverse().join("\n -> ")}
214
- `
215
- );
216
- }
217
- if (!alreadyCheckedProjects.has(project.name)) {
218
- alreadyCheckedProjects.add(project.name);
219
- dependencyChain.push(project.name);
220
- this._checkForCyclicDependencies(
221
- project.dependent,
222
- dependencyChain,
223
- alreadyCheckedProjects
224
- );
225
- dependencyChain.pop();
226
- }
227
- }
228
- }
229
- _getDependencyLeafNodes(node) {
230
- const dependency = node.dependency;
231
- if (dependency.length === 0) {
232
- return [];
233
- }
234
- let leafNodes = [...dependency];
235
- for (const dependencyNode of dependency) {
236
- leafNodes = [
237
- ...leafNodes,
238
- ...this._getDependencyLeafNodes(dependencyNode)
239
- ];
240
- }
241
- return leafNodes;
242
- }
243
- _getProjectPreviousNode(searchProjects, preNodes) {
244
- return searchProjects.filter(
245
- (p) => preNodes.map((preP) => preP.name).includes(p.name)
246
- );
247
- }
248
- }
249
- export {
250
- DagOperator
251
- };
@@ -1,79 +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 { EventEmitter } from "events";
22
- import pMap from "p-map";
23
- const _TaskRunner = class extends EventEmitter {
24
- constructor(tasks, { concurrency }) {
25
- super();
26
- this._tasks = tasks;
27
- this._concurrency = concurrency || _TaskRunner.DefaultConcurrency;
28
- this._usableConcurrency = this._concurrency;
29
- this._stopFlag = false;
30
- }
31
- run() {
32
- return __async(this, null, function* () {
33
- const tasks = this._tasks.splice(0, this._concurrency);
34
- this._usableConcurrency = this._concurrency - tasks.length;
35
- yield pMap(
36
- tasks,
37
- (task) => __async(this, null, function* () {
38
- yield this._runTask(task);
39
- }),
40
- { concurrency: tasks.length }
41
- );
42
- });
43
- }
44
- addTask(task) {
45
- this._tasks.push(task);
46
- }
47
- _runTask(task) {
48
- return __async(this, null, function* () {
49
- if (this._stopFlag) {
50
- return;
51
- }
52
- const emitValue = yield task(this._stopTask.bind(this));
53
- this._usableConcurrency--;
54
- this.emit(_TaskRunner.TASK_FINISH, emitValue);
55
- if (this._tasks.length > 0) {
56
- const nextTasks = this._tasks.splice(0, this._usableConcurrency);
57
- this._usableConcurrency -= nextTasks.length;
58
- if (nextTasks.length > 0) {
59
- yield pMap(
60
- nextTasks,
61
- (_task) => __async(this, null, function* () {
62
- yield this._runTask(_task);
63
- }),
64
- { concurrency: nextTasks.length }
65
- );
66
- }
67
- }
68
- });
69
- }
70
- _stopTask() {
71
- this._stopFlag = true;
72
- }
73
- };
74
- let TaskRunner = _TaskRunner;
75
- TaskRunner.DefaultConcurrency = 10;
76
- TaskRunner.TASK_FINISH = "task-finish";
77
- export {
78
- TaskRunner
79
- };