monorepo-next 9.2.1 → 9.2.2
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.
- package/package.json +1 -1
- package/src/cycle.js +22 -66
package/package.json
CHANGED
package/src/cycle.js
CHANGED
@@ -2,94 +2,51 @@
|
|
2
2
|
|
3
3
|
const dependencyTypes = require('./dependency-types');
|
4
4
|
|
5
|
-
function createPackageNode({
|
6
|
-
packageName,
|
7
|
-
dependencyType,
|
8
|
-
dependencyRange,
|
9
|
-
parent,
|
10
|
-
branch,
|
11
|
-
}) {
|
12
|
-
let group = {
|
13
|
-
parent,
|
14
|
-
dependencyType,
|
15
|
-
dependencyRange,
|
16
|
-
isCycle: false,
|
17
|
-
packageName,
|
18
|
-
};
|
19
|
-
|
20
|
-
let newBranch = [...branch, group].filter(Boolean);
|
21
|
-
|
22
|
-
return {
|
23
|
-
newGroup: group,
|
24
|
-
newBranch,
|
25
|
-
};
|
26
|
-
}
|
27
|
-
|
28
|
-
function findGroupInBranchByPackageName(branch, packageName) {
|
29
|
-
let _i = -1;
|
30
|
-
|
31
|
-
for (let i = 0; i < branch.length; i++) {
|
32
|
-
if (branch[i].packageName === packageName) {
|
33
|
-
_i = i;
|
34
|
-
|
35
|
-
break;
|
36
|
-
}
|
37
|
-
}
|
38
|
-
|
39
|
-
return _i;
|
40
|
-
}
|
41
|
-
|
42
5
|
function _getCycles({
|
43
6
|
packages,
|
44
7
|
_package,
|
45
8
|
dependencyType,
|
46
9
|
dependencyRange,
|
47
|
-
parent,
|
48
10
|
branch,
|
49
11
|
visitedNodes,
|
50
12
|
cycles,
|
51
13
|
shouldDetectDevDependencies,
|
52
14
|
}) {
|
53
|
-
let
|
54
|
-
|
55
|
-
if (visitedNode) {
|
56
|
-
let i = findGroupInBranchByPackageName(branch, _package.packageName);
|
15
|
+
let { packageName } = _package;
|
57
16
|
|
58
|
-
|
17
|
+
let hasVisitedNode = visitedNodes.has(packageName);
|
59
18
|
|
60
|
-
|
61
|
-
|
62
|
-
dependencyType,
|
63
|
-
dependencyRange,
|
64
|
-
isCycle,
|
65
|
-
packageName: visitedNode,
|
66
|
-
};
|
19
|
+
if (hasVisitedNode) {
|
20
|
+
let isCycle = branch.has(packageName);
|
67
21
|
|
68
22
|
if (isCycle) {
|
69
|
-
let
|
23
|
+
let existingGroup = {
|
24
|
+
dependencyType,
|
25
|
+
dependencyRange,
|
26
|
+
packageName,
|
27
|
+
};
|
28
|
+
|
29
|
+
let newBranch = [...[...branch.values()].slice([...branch.keys()].indexOf(packageName)), existingGroup];
|
70
30
|
|
71
31
|
let cycle = newBranch.map(({ dependencyType, packageName }) => {
|
72
32
|
return [dependencyType, packageName];
|
73
33
|
});
|
74
34
|
|
75
|
-
cycles
|
35
|
+
cycles.add(cycle.flat().slice(1).join(' < '));
|
76
36
|
}
|
77
37
|
|
78
38
|
return;
|
79
39
|
}
|
80
40
|
|
81
|
-
let {
|
82
|
-
newGroup,
|
83
|
-
newBranch,
|
84
|
-
} = createPackageNode({
|
85
|
-
packageName: _package.packageName,
|
41
|
+
let newGroup = {
|
86
42
|
dependencyType,
|
87
43
|
dependencyRange,
|
88
|
-
|
89
|
-
|
90
|
-
|
44
|
+
packageName,
|
45
|
+
};
|
46
|
+
|
47
|
+
let newBranch = new Map([...branch, [packageName, newGroup]]);
|
91
48
|
|
92
|
-
visitedNodes
|
49
|
+
visitedNodes.add(packageName);
|
93
50
|
|
94
51
|
for (let dependencyType of dependencyTypes) {
|
95
52
|
if (!shouldDetectDevDependencies && dependencyType === 'devDependencies') {
|
@@ -107,7 +64,6 @@ function _getCycles({
|
|
107
64
|
_package,
|
108
65
|
dependencyType,
|
109
66
|
dependencyRange,
|
110
|
-
parent: newGroup,
|
111
67
|
branch: newBranch,
|
112
68
|
visitedNodes,
|
113
69
|
cycles,
|
@@ -120,8 +76,8 @@ function _getCycles({
|
|
120
76
|
function getCycles(workspaceMeta, {
|
121
77
|
shouldDetectDevDependencies,
|
122
78
|
} = {}) {
|
123
|
-
let cycles =
|
124
|
-
let visitedNodes =
|
79
|
+
let cycles = new Set();
|
80
|
+
let visitedNodes = new Set();
|
125
81
|
let { packages } = workspaceMeta;
|
126
82
|
|
127
83
|
for (let packageName of Object.keys(packages).sort()) {
|
@@ -130,14 +86,14 @@ function getCycles(workspaceMeta, {
|
|
130
86
|
_getCycles({
|
131
87
|
packages,
|
132
88
|
_package,
|
133
|
-
branch:
|
89
|
+
branch: new Map(),
|
134
90
|
visitedNodes,
|
135
91
|
cycles,
|
136
92
|
shouldDetectDevDependencies,
|
137
93
|
});
|
138
94
|
}
|
139
95
|
|
140
|
-
return
|
96
|
+
return [...cycles].sort();
|
141
97
|
}
|
142
98
|
|
143
99
|
Object.assign(module.exports, {
|