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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/src/cycle.js +22 -66
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "monorepo-next",
3
- "version": "9.2.1",
3
+ "version": "9.2.2",
4
4
  "description": "Detach monorepo packages from normal linking",
5
5
  "bin": {
6
6
  "next": "bin/next.js"
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 visitedNode = visitedNodes[_package.packageName];
54
-
55
- if (visitedNode) {
56
- let i = findGroupInBranchByPackageName(branch, _package.packageName);
15
+ let { packageName } = _package;
57
16
 
58
- let isCycle = i !== -1;
17
+ let hasVisitedNode = visitedNodes.has(packageName);
59
18
 
60
- let existingGroup = {
61
- parent,
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 newBranch = [...branch.slice(i), existingGroup];
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[cycle.flat().slice(1).join(' < ')] = existingGroup;
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
- parent,
89
- branch,
90
- });
44
+ packageName,
45
+ };
46
+
47
+ let newBranch = new Map([...branch, [packageName, newGroup]]);
91
48
 
92
- visitedNodes[_package.packageName] = newGroup.packageName;
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 Object.keys(cycles).sort();
96
+ return [...cycles].sort();
141
97
  }
142
98
 
143
99
  Object.assign(module.exports, {