monorepo-next 9.2.0 → 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 +4 -4
- package/src/cycle.js +29 -68
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "monorepo-next",
|
3
|
-
"version": "9.2.
|
3
|
+
"version": "9.2.2",
|
4
4
|
"description": "Detach monorepo packages from normal linking",
|
5
5
|
"bin": {
|
6
6
|
"next": "bin/next.js"
|
@@ -80,8 +80,8 @@
|
|
80
80
|
"chai-as-promised": "^7.1.1",
|
81
81
|
"common-tags": "^1.8.2",
|
82
82
|
"eslint": "^8.0.0",
|
83
|
-
"eslint-config-crowdstrike": "
|
84
|
-
"eslint-config-crowdstrike-node": "
|
83
|
+
"eslint-config-crowdstrike": "10.1.0",
|
84
|
+
"eslint-config-crowdstrike-node": "3.0.1",
|
85
85
|
"eslint-plugin-json-files": "^2.0.0",
|
86
86
|
"eslint-plugin-mocha": "^10.0.0",
|
87
87
|
"eslint-plugin-node": "^11.0.0",
|
@@ -95,6 +95,6 @@
|
|
95
95
|
"sinon": "^15.0.0",
|
96
96
|
"sinon-chai": "^3.5.0",
|
97
97
|
"standard-node-template": "3.2.1",
|
98
|
-
"yargs-help-output": "^
|
98
|
+
"yargs-help-output": "^3.0.0"
|
99
99
|
}
|
100
100
|
}
|
package/src/cycle.js
CHANGED
@@ -2,101 +2,61 @@
|
|
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
|
+
};
|
91
46
|
|
92
|
-
|
47
|
+
let newBranch = new Map([...branch, [packageName, newGroup]]);
|
48
|
+
|
49
|
+
visitedNodes.add(packageName);
|
93
50
|
|
94
51
|
for (let dependencyType of dependencyTypes) {
|
95
52
|
if (!shouldDetectDevDependencies && dependencyType === 'devDependencies') {
|
96
53
|
continue;
|
97
54
|
}
|
98
55
|
|
99
|
-
|
56
|
+
let dependencies = _package[dependencyType];
|
57
|
+
|
58
|
+
for (let packageName of Object.keys(dependencies).sort()) {
|
59
|
+
let dependencyRange = dependencies[packageName];
|
100
60
|
let _package = packages[packageName];
|
101
61
|
|
102
62
|
_getCycles({
|
@@ -104,7 +64,6 @@ function _getCycles({
|
|
104
64
|
_package,
|
105
65
|
dependencyType,
|
106
66
|
dependencyRange,
|
107
|
-
parent: newGroup,
|
108
67
|
branch: newBranch,
|
109
68
|
visitedNodes,
|
110
69
|
cycles,
|
@@ -117,22 +76,24 @@ function _getCycles({
|
|
117
76
|
function getCycles(workspaceMeta, {
|
118
77
|
shouldDetectDevDependencies,
|
119
78
|
} = {}) {
|
120
|
-
let cycles =
|
121
|
-
let visitedNodes =
|
79
|
+
let cycles = new Set();
|
80
|
+
let visitedNodes = new Set();
|
122
81
|
let { packages } = workspaceMeta;
|
123
82
|
|
124
|
-
for (let
|
83
|
+
for (let packageName of Object.keys(packages).sort()) {
|
84
|
+
let _package = packages[packageName];
|
85
|
+
|
125
86
|
_getCycles({
|
126
87
|
packages,
|
127
88
|
_package,
|
128
|
-
branch:
|
89
|
+
branch: new Map(),
|
129
90
|
visitedNodes,
|
130
91
|
cycles,
|
131
92
|
shouldDetectDevDependencies,
|
132
93
|
});
|
133
94
|
}
|
134
95
|
|
135
|
-
return
|
96
|
+
return [...cycles].sort();
|
136
97
|
}
|
137
98
|
|
138
99
|
Object.assign(module.exports, {
|