monorepo-next 9.2.2 → 9.2.3
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 +29 -18
package/package.json
CHANGED
package/src/cycle.js
CHANGED
@@ -13,29 +13,34 @@ function _getCycles({
|
|
13
13
|
shouldDetectDevDependencies,
|
14
14
|
}) {
|
15
15
|
let { packageName } = _package;
|
16
|
+
let cycleTips = new Set();
|
16
17
|
|
17
18
|
let hasVisitedNode = visitedNodes.has(packageName);
|
18
19
|
|
19
20
|
if (hasVisitedNode) {
|
20
|
-
|
21
|
+
return cycleTips;
|
22
|
+
}
|
21
23
|
|
22
|
-
|
23
|
-
let existingGroup = {
|
24
|
-
dependencyType,
|
25
|
-
dependencyRange,
|
26
|
-
packageName,
|
27
|
-
};
|
24
|
+
let isCycle = branch.has(packageName);
|
28
25
|
|
29
|
-
|
26
|
+
if (isCycle) {
|
27
|
+
let existingGroup = {
|
28
|
+
dependencyType,
|
29
|
+
dependencyRange,
|
30
|
+
packageName,
|
31
|
+
};
|
30
32
|
|
31
|
-
|
32
|
-
return [dependencyType, packageName];
|
33
|
-
});
|
33
|
+
let newBranch = [...[...branch.values()].slice([...branch.keys()].indexOf(packageName)), existingGroup];
|
34
34
|
|
35
|
-
|
36
|
-
|
35
|
+
let cycle = newBranch.map(({ dependencyType, packageName }) => {
|
36
|
+
return [dependencyType, packageName];
|
37
|
+
});
|
38
|
+
|
39
|
+
cycles.add(cycle.flat().slice(1).join(' < '));
|
37
40
|
|
38
|
-
|
41
|
+
cycleTips.add(packageName);
|
42
|
+
|
43
|
+
return cycleTips;
|
39
44
|
}
|
40
45
|
|
41
46
|
let newGroup = {
|
@@ -46,8 +51,6 @@ function _getCycles({
|
|
46
51
|
|
47
52
|
let newBranch = new Map([...branch, [packageName, newGroup]]);
|
48
53
|
|
49
|
-
visitedNodes.add(packageName);
|
50
|
-
|
51
54
|
for (let dependencyType of dependencyTypes) {
|
52
55
|
if (!shouldDetectDevDependencies && dependencyType === 'devDependencies') {
|
53
56
|
continue;
|
@@ -59,7 +62,7 @@ function _getCycles({
|
|
59
62
|
let dependencyRange = dependencies[packageName];
|
60
63
|
let _package = packages[packageName];
|
61
64
|
|
62
|
-
_getCycles({
|
65
|
+
cycleTips = new Set([...cycleTips, ..._getCycles({
|
63
66
|
packages,
|
64
67
|
_package,
|
65
68
|
dependencyType,
|
@@ -68,9 +71,17 @@ function _getCycles({
|
|
68
71
|
visitedNodes,
|
69
72
|
cycles,
|
70
73
|
shouldDetectDevDependencies,
|
71
|
-
});
|
74
|
+
})]);
|
72
75
|
}
|
73
76
|
}
|
77
|
+
|
78
|
+
cycleTips.delete(packageName);
|
79
|
+
|
80
|
+
if (!cycleTips.size) {
|
81
|
+
visitedNodes.add(packageName);
|
82
|
+
}
|
83
|
+
|
84
|
+
return cycleTips;
|
74
85
|
}
|
75
86
|
|
76
87
|
function getCycles(workspaceMeta, {
|