@monorepolint/rules 0.6.0-alpha.2 → 0.6.0-alpha.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/.turbo/turbo-clean.log +1 -1
- package/.turbo/turbo-compile-typescript.log +1 -1
- package/.turbo/turbo-lint.log +1 -1
- package/.turbo/turbo-test.log +160 -100
- package/.turbo/turbo-transpile-typescript.log +4 -4
- package/CHANGELOG.md +9 -0
- package/build/js/index.js +399 -246
- package/build/js/index.js.map +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/build/types/__tests__/utils.d.ts +0 -1
- package/build/types/__tests__/utils.d.ts.map +1 -1
- package/build/types/bannedDependencies.d.ts.map +1 -1
- package/build/types/fileContents.d.ts.map +1 -1
- package/build/types/index.d.ts +3 -3
- package/build/types/index.d.ts.map +1 -1
- package/build/types/mustSatisfyPeerDependencies.d.ts.map +1 -1
- package/build/types/nestedWorkspaces.d.ts.map +1 -1
- package/build/types/packageEntry.d.ts.map +1 -1
- package/build/types/packageOrder.d.ts.map +1 -1
- package/build/types/packageScript.d.ts.map +1 -1
- package/build/types/requireDependency.d.ts +12 -12
- package/build/types/requireDependency.d.ts.map +1 -1
- package/build/types/util/checkAlpha.d.ts.map +1 -1
- package/build/types/util/createRuleFactory.d.ts.map +1 -1
- package/build/types/util/packageDependencyGraphService.d.ts.map +1 -1
- package/coverage/clover.xml +1159 -818
- package/coverage/coverage-final.json +18 -18
- package/coverage/index.html +20 -20
- package/coverage/src/alphabeticalDependencies.ts.html +8 -8
- package/coverage/src/alphabeticalScripts.ts.html +5 -5
- package/coverage/src/bannedDependencies.ts.html +77 -26
- package/coverage/src/consistentDependencies.ts.html +58 -19
- package/coverage/src/consistentVersions.ts.html +169 -58
- package/coverage/src/fileContents.ts.html +47 -23
- package/coverage/src/index.html +67 -67
- package/coverage/src/index.ts.html +32 -32
- package/coverage/src/mustSatisfyPeerDependencies.ts.html +373 -85
- package/coverage/src/nestedWorkspaces.ts.html +59 -20
- package/coverage/src/packageEntry.ts.html +40 -19
- package/coverage/src/packageOrder.ts.html +30 -12
- package/coverage/src/packageScript.ts.html +81 -27
- package/coverage/src/requireDependency.ts.html +83 -32
- package/coverage/src/standardTsconfig.ts.html +81 -18
- package/coverage/src/util/checkAlpha.ts.html +18 -9
- package/coverage/src/util/createRuleFactory.ts.html +16 -4
- package/coverage/src/util/index.html +17 -17
- package/coverage/src/util/makeDirectory.ts.html +5 -5
- package/coverage/src/util/packageDependencyGraphService.ts.html +101 -20
- package/package.json +4 -5
- package/src/__tests__/alphabeticalScripts.spec.ts +12 -4
- package/src/__tests__/bannedDependencies.spec.ts +45 -16
- package/src/__tests__/consistentDependencies.spec.ts +11 -5
- package/src/__tests__/consistentVersions.spec.ts +72 -18
- package/src/__tests__/fileContents.spec.ts +9 -5
- package/src/__tests__/mustSatisfyPeerDependencies.spec.ts +191 -76
- package/src/__tests__/nestedWorkspaces.spec.ts +10 -6
- package/src/__tests__/packageEntry.spec.ts +54 -48
- package/src/__tests__/packageOrder.spec.ts +77 -71
- package/src/__tests__/packageScript.spec.ts +25 -11
- package/src/__tests__/requireDependency.spec.ts +12 -6
- package/src/__tests__/utils.ts +16 -7
- package/src/bannedDependencies.ts +32 -15
- package/src/consistentDependencies.ts +22 -9
- package/src/consistentVersions.ts +84 -47
- package/src/fileContents.ts +19 -11
- package/src/index.ts +3 -3
- package/src/mustSatisfyPeerDependencies.ts +162 -66
- package/src/nestedWorkspaces.ts +23 -10
- package/src/packageEntry.ts +18 -11
- package/src/packageOrder.ts +9 -3
- package/src/packageScript.ts +37 -19
- package/src/requireDependency.ts +28 -11
- package/src/standardTsconfig.ts +31 -10
- package/src/util/checkAlpha.ts +5 -2
- package/src/util/createRuleFactory.ts +6 -2
- package/src/util/packageDependencyGraphService.ts +41 -14
- package/vitest.config.mjs +10 -7
package/coverage/index.html
CHANGED
|
@@ -23,16 +23,16 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">94.5% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>1721/1821</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">87.
|
|
33
|
+
<span class="strong">87.95% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>292/332</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
@@ -44,9 +44,9 @@
|
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">94.5% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>1721/1821</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -80,32 +80,32 @@
|
|
|
80
80
|
</thead>
|
|
81
81
|
<tbody><tr>
|
|
82
82
|
<td class="file high" data-value="src"><a href="src/index.html">src</a></td>
|
|
83
|
-
<td data-value="
|
|
84
|
-
<div class="chart"><div class="cover-fill" style="width:
|
|
83
|
+
<td data-value="94.71" class="pic high">
|
|
84
|
+
<div class="chart"><div class="cover-fill" style="width: 94%"></div><div class="cover-empty" style="width: 6%"></div></div>
|
|
85
85
|
</td>
|
|
86
|
-
<td data-value="
|
|
87
|
-
<td data-value="
|
|
88
|
-
<td data-value="88.
|
|
89
|
-
<td data-value="
|
|
86
|
+
<td data-value="94.71" class="pct high">94.71%</td>
|
|
87
|
+
<td data-value="1665" class="abs high">1577/1665</td>
|
|
88
|
+
<td data-value="88.74" class="pct high">88.74%</td>
|
|
89
|
+
<td data-value="302" class="abs high">268/302</td>
|
|
90
90
|
<td data-value="91.66" class="pct high">91.66%</td>
|
|
91
91
|
<td data-value="48" class="abs high">44/48</td>
|
|
92
|
-
<td data-value="
|
|
93
|
-
<td data-value="
|
|
92
|
+
<td data-value="94.71" class="pct high">94.71%</td>
|
|
93
|
+
<td data-value="1665" class="abs high">1577/1665</td>
|
|
94
94
|
</tr>
|
|
95
95
|
|
|
96
96
|
<tr>
|
|
97
97
|
<td class="file high" data-value="src/util"><a href="src/util/index.html">src/util</a></td>
|
|
98
|
-
<td data-value="92.
|
|
98
|
+
<td data-value="92.3" class="pic high">
|
|
99
99
|
<div class="chart"><div class="cover-fill" style="width: 92%"></div><div class="cover-empty" style="width: 8%"></div></div>
|
|
100
100
|
</td>
|
|
101
|
-
<td data-value="92.
|
|
102
|
-
<td data-value="
|
|
101
|
+
<td data-value="92.3" class="pct high">92.3%</td>
|
|
102
|
+
<td data-value="156" class="abs high">144/156</td>
|
|
103
103
|
<td data-value="80" class="pct high">80%</td>
|
|
104
104
|
<td data-value="30" class="abs high">24/30</td>
|
|
105
105
|
<td data-value="100" class="pct high">100%</td>
|
|
106
106
|
<td data-value="11" class="abs high">11/11</td>
|
|
107
|
-
<td data-value="92.
|
|
108
|
-
<td data-value="
|
|
107
|
+
<td data-value="92.3" class="pct high">92.3%</td>
|
|
108
|
+
<td data-value="156" class="abs high">144/156</td>
|
|
109
109
|
</tr>
|
|
110
110
|
|
|
111
111
|
</tbody>
|
|
@@ -116,7 +116,7 @@
|
|
|
116
116
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
117
117
|
Code coverage generated by
|
|
118
118
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
119
|
-
at 2025-01-
|
|
119
|
+
at 2025-01-22T17:39:11.886Z
|
|
120
120
|
</div>
|
|
121
121
|
<script src="prettify.js"></script>
|
|
122
122
|
<script>
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
26
|
<span class="strong">100% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>15/15</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
47
|
<span class="strong">100% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>15/15</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -87,11 +87,11 @@
|
|
|
87
87
|
<span class="cline-any cline-neutral"> </span>
|
|
88
88
|
<span class="cline-any cline-neutral"> </span>
|
|
89
89
|
<span class="cline-any cline-neutral"> </span>
|
|
90
|
-
<span class="cline-any cline-
|
|
91
|
-
<span class="cline-any cline-
|
|
92
|
-
<span class="cline-any cline-
|
|
93
|
-
<span class="cline-any cline-
|
|
94
|
-
<span class="cline-any cline-
|
|
90
|
+
<span class="cline-any cline-yes">1x</span>
|
|
91
|
+
<span class="cline-any cline-yes">1x</span>
|
|
92
|
+
<span class="cline-any cline-yes">1x</span>
|
|
93
|
+
<span class="cline-any cline-yes">1x</span>
|
|
94
|
+
<span class="cline-any cline-yes">1x</span>
|
|
95
95
|
<span class="cline-any cline-yes">1x</span>
|
|
96
96
|
<span class="cline-any cline-yes">1x</span>
|
|
97
97
|
<span class="cline-any cline-yes">1x</span>
|
|
@@ -127,7 +127,7 @@ export const alphabeticalDependencies = createRuleFactory<undefined>({
|
|
|
127
127
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
128
128
|
Code coverage generated by
|
|
129
129
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
130
|
-
at 2025-01-
|
|
130
|
+
at 2025-01-22T17:39:11.886Z
|
|
131
131
|
</div>
|
|
132
132
|
<script src="../prettify.js"></script>
|
|
133
133
|
<script>
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
26
|
<span class="strong">100% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>10/10</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
47
|
<span class="strong">100% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>10/10</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -87,8 +87,8 @@
|
|
|
87
87
|
<span class="cline-any cline-neutral"> </span>
|
|
88
88
|
<span class="cline-any cline-neutral"> </span>
|
|
89
89
|
<span class="cline-any cline-neutral"> </span>
|
|
90
|
-
<span class="cline-any cline-
|
|
91
|
-
<span class="cline-any cline-
|
|
90
|
+
<span class="cline-any cline-yes">1x</span>
|
|
91
|
+
<span class="cline-any cline-yes">1x</span>
|
|
92
92
|
<span class="cline-any cline-neutral"> </span>
|
|
93
93
|
<span class="cline-any cline-yes">1x</span>
|
|
94
94
|
<span class="cline-any cline-yes">1x</span>
|
|
@@ -121,7 +121,7 @@ export const alphabeticalScripts = createRuleFactory<undefined>({
|
|
|
121
121
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
122
122
|
Code coverage generated by
|
|
123
123
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
124
|
-
at 2025-01-
|
|
124
|
+
at 2025-01-22T17:39:11.886Z
|
|
125
125
|
</div>
|
|
126
126
|
<script src="../prettify.js"></script>
|
|
127
127
|
<script>
|
|
@@ -23,9 +23,9 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">97.05% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>132/136</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
@@ -44,9 +44,9 @@
|
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">97.05% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>132/136</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -221,10 +221,24 @@
|
|
|
221
221
|
<a name='L156'></a><a href='#L156'>156</a>
|
|
222
222
|
<a name='L157'></a><a href='#L157'>157</a>
|
|
223
223
|
<a name='L158'></a><a href='#L158'>158</a>
|
|
224
|
-
<a name='L159'></a><a href='#L159'>159</a
|
|
225
|
-
<
|
|
226
|
-
<
|
|
227
|
-
<
|
|
224
|
+
<a name='L159'></a><a href='#L159'>159</a>
|
|
225
|
+
<a name='L160'></a><a href='#L160'>160</a>
|
|
226
|
+
<a name='L161'></a><a href='#L161'>161</a>
|
|
227
|
+
<a name='L162'></a><a href='#L162'>162</a>
|
|
228
|
+
<a name='L163'></a><a href='#L163'>163</a>
|
|
229
|
+
<a name='L164'></a><a href='#L164'>164</a>
|
|
230
|
+
<a name='L165'></a><a href='#L165'>165</a>
|
|
231
|
+
<a name='L166'></a><a href='#L166'>166</a>
|
|
232
|
+
<a name='L167'></a><a href='#L167'>167</a>
|
|
233
|
+
<a name='L168'></a><a href='#L168'>168</a>
|
|
234
|
+
<a name='L169'></a><a href='#L169'>169</a>
|
|
235
|
+
<a name='L170'></a><a href='#L170'>170</a>
|
|
236
|
+
<a name='L171'></a><a href='#L171'>171</a>
|
|
237
|
+
<a name='L172'></a><a href='#L172'>172</a>
|
|
238
|
+
<a name='L173'></a><a href='#L173'>173</a>
|
|
239
|
+
<a name='L174'></a><a href='#L174'>174</a>
|
|
240
|
+
<a name='L175'></a><a href='#L175'>175</a>
|
|
241
|
+
<a name='L176'></a><a href='#L176'>176</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
228
242
|
<span class="cline-any cline-neutral"> </span>
|
|
229
243
|
<span class="cline-any cline-neutral"> </span>
|
|
230
244
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -232,6 +246,12 @@
|
|
|
232
246
|
<span class="cline-any cline-neutral"> </span>
|
|
233
247
|
<span class="cline-any cline-neutral"> </span>
|
|
234
248
|
<span class="cline-any cline-neutral"> </span>
|
|
249
|
+
<span class="cline-any cline-yes">1x</span>
|
|
250
|
+
<span class="cline-any cline-yes">1x</span>
|
|
251
|
+
<span class="cline-any cline-yes">1x</span>
|
|
252
|
+
<span class="cline-any cline-yes">1x</span>
|
|
253
|
+
<span class="cline-any cline-yes">1x</span>
|
|
254
|
+
<span class="cline-any cline-yes">1x</span>
|
|
235
255
|
<span class="cline-any cline-neutral"> </span>
|
|
236
256
|
<span class="cline-any cline-neutral"> </span>
|
|
237
257
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -250,12 +270,10 @@
|
|
|
250
270
|
<span class="cline-any cline-yes">1x</span>
|
|
251
271
|
<span class="cline-any cline-yes">1x</span>
|
|
252
272
|
<span class="cline-any cline-yes">1x</span>
|
|
253
|
-
<span class="cline-any cline-neutral"> </span>
|
|
254
273
|
<span class="cline-any cline-yes">1x</span>
|
|
255
274
|
<span class="cline-any cline-yes">1x</span>
|
|
256
275
|
<span class="cline-any cline-yes">1x</span>
|
|
257
276
|
<span class="cline-any cline-yes">1x</span>
|
|
258
|
-
<span class="cline-any cline-neutral"> </span>
|
|
259
277
|
<span class="cline-any cline-yes">1x</span>
|
|
260
278
|
<span class="cline-any cline-yes">1x</span>
|
|
261
279
|
<span class="cline-any cline-yes">1x</span>
|
|
@@ -283,8 +301,14 @@
|
|
|
283
301
|
<span class="cline-any cline-yes">13x</span>
|
|
284
302
|
<span class="cline-any cline-yes">13x</span>
|
|
285
303
|
<span class="cline-any cline-yes">13x</span>
|
|
304
|
+
<span class="cline-any cline-no"> </span>
|
|
305
|
+
<span class="cline-any cline-yes">13x</span>
|
|
306
|
+
<span class="cline-any cline-no"> </span>
|
|
286
307
|
<span class="cline-any cline-neutral"> </span>
|
|
287
308
|
<span class="cline-any cline-yes">13x</span>
|
|
309
|
+
<span class="cline-any cline-yes">13x</span>
|
|
310
|
+
<span class="cline-any cline-yes">13x</span>
|
|
311
|
+
<span class="cline-any cline-yes">13x</span>
|
|
288
312
|
<span class="cline-any cline-neutral"> </span>
|
|
289
313
|
<span class="cline-any cline-yes">13x</span>
|
|
290
314
|
<span class="cline-any cline-yes">13x</span>
|
|
@@ -338,6 +362,10 @@
|
|
|
338
362
|
<span class="cline-any cline-neutral"> </span>
|
|
339
363
|
<span class="cline-any cline-yes">3x</span>
|
|
340
364
|
<span class="cline-any cline-yes">3x</span>
|
|
365
|
+
<span class="cline-any cline-yes">3x</span>
|
|
366
|
+
<span class="cline-any cline-yes">3x</span>
|
|
367
|
+
<span class="cline-any cline-yes">3x</span>
|
|
368
|
+
<span class="cline-any cline-yes">3x</span>
|
|
341
369
|
<span class="cline-any cline-yes">6x</span>
|
|
342
370
|
<span class="cline-any cline-yes">2x</span>
|
|
343
371
|
<span class="cline-any cline-yes">2x</span>
|
|
@@ -361,11 +389,17 @@
|
|
|
361
389
|
<span class="cline-any cline-yes">1x</span>
|
|
362
390
|
<span class="cline-any cline-yes">1x</span>
|
|
363
391
|
<span class="cline-any cline-yes">1x</span>
|
|
392
|
+
<span class="cline-any cline-yes">1x</span>
|
|
393
|
+
<span class="cline-any cline-yes">1x</span>
|
|
394
|
+
<span class="cline-any cline-yes">1x</span>
|
|
364
395
|
<span class="cline-any cline-yes">5x</span>
|
|
365
396
|
<span class="cline-any cline-yes">4x</span>
|
|
366
397
|
<span class="cline-any cline-neutral"> </span>
|
|
367
398
|
<span class="cline-any cline-yes">2x</span>
|
|
368
399
|
<span class="cline-any cline-yes">2x</span>
|
|
400
|
+
<span class="cline-any cline-yes">2x</span>
|
|
401
|
+
<span class="cline-any cline-yes">2x</span>
|
|
402
|
+
<span class="cline-any cline-yes">2x</span>
|
|
369
403
|
<span class="cline-any cline-neutral"> </span>
|
|
370
404
|
<span class="cline-any cline-yes">2x</span>
|
|
371
405
|
<span class="cline-any cline-yes">2x</span>
|
|
@@ -392,7 +426,10 @@ import { AggregateTiming } from "@monorepolint/utils";
|
|
|
392
426
|
import * as path from "node:path";
|
|
393
427
|
import * as r from "runtypes";
|
|
394
428
|
import { createRuleFactory } from "./util/createRuleFactory.js";
|
|
395
|
-
import {
|
|
429
|
+
import {
|
|
430
|
+
IPackageDependencyGraphNode,
|
|
431
|
+
PackageDependencyGraphService,
|
|
432
|
+
} from "./util/packageDependencyGraphService.js";
|
|
396
433
|
// FIXME: This rule is messed. bannedTransitiveDependencies doesnt glob
|
|
397
434
|
|
|
398
435
|
const bannedDepGlobsField = r.Union(
|
|
@@ -400,7 +437,7 @@ const bannedDepGlobsField = r.Union(
|
|
|
400
437
|
r.Record({
|
|
401
438
|
glob: r.Array(r.String).optional(),
|
|
402
439
|
exact: r.Array(r.String).optional(),
|
|
403
|
-
})
|
|
440
|
+
}),
|
|
404
441
|
);
|
|
405
442
|
|
|
406
443
|
const Options = r.Union(
|
|
@@ -408,16 +445,14 @@ const Options = r.Union(
|
|
|
408
445
|
bannedDependencies: bannedDepGlobsField,
|
|
409
446
|
bannedTransitiveDependencies: r.Undefined.optional(),
|
|
410
447
|
}),
|
|
411
|
-
|
|
412
448
|
r.Record({
|
|
413
449
|
bannedDependencies: bannedDepGlobsField.optional(),
|
|
414
450
|
bannedTransitiveDependencies: r.Array(r.String),
|
|
415
451
|
}),
|
|
416
|
-
|
|
417
452
|
r.Record({
|
|
418
453
|
bannedDependencies: bannedDepGlobsField.optional(),
|
|
419
454
|
bannedTransitiveDependencies: r.Array(r.String).optional(),
|
|
420
|
-
})
|
|
455
|
+
}),
|
|
421
456
|
);
|
|
422
457
|
|
|
423
458
|
export type Options = r.Static<typeof Options>;
|
|
@@ -438,11 +473,17 @@ export const bannedDependencies = createRuleFactory<Options>({
|
|
|
438
473
|
const packageJson = context.getPackageJson();
|
|
439
474
|
const packagePath = context.getPackageJsonPath();
|
|
440
475
|
|
|
441
|
-
const curDeps = packageJson.dependencies
|
|
442
|
-
|
|
443
|
-
const
|
|
476
|
+
const curDeps = packageJson.dependencies
|
|
477
|
+
&& Object.keys(packageJson.dependencies);
|
|
478
|
+
const curDevDeps = packageJson.<span class="branch-0 cbranch-no" title="branch not covered" >devDependencies</span>
|
|
479
|
+
<span class="cstat-no" title="statement not covered" > && Object.keys(packageJson.devDependencies);</span>
|
|
480
|
+
const curPeerDeps = packageJson.<span class="branch-0 cbranch-no" title="branch not covered" >peerDependencies</span>
|
|
481
|
+
<span class="cstat-no" title="statement not covered" > && Object.keys(packageJson.peerDependencies);</span>
|
|
444
482
|
|
|
445
|
-
const {
|
|
483
|
+
const {
|
|
484
|
+
bannedDependencies: banned,
|
|
485
|
+
bannedTransitiveDependencies: transitives,
|
|
486
|
+
} = opts;
|
|
446
487
|
|
|
447
488
|
const globs = banned && (Array.isArray(banned) ? banned : banned.glob);
|
|
448
489
|
const exacts = banned && (Array.isArray(banned) ? undefined : banned.exact);
|
|
@@ -470,8 +511,8 @@ export const bannedDependencies = createRuleFactory<Options>({
|
|
|
470
511
|
context.addError({
|
|
471
512
|
file: packagePath,
|
|
472
513
|
message:
|
|
473
|
-
`Found ${violations.size} banned dependencies of package.json:\n\t`
|
|
474
|
-
Array.from(violations)
|
|
514
|
+
`Found ${violations.size} banned dependencies of package.json:\n\t`
|
|
515
|
+
+ Array.from(violations)
|
|
475
516
|
.map((v) => `'${v}'`)
|
|
476
517
|
.join(", "),
|
|
477
518
|
});
|
|
@@ -494,7 +535,11 @@ export const bannedDependencies = createRuleFactory<Options>({
|
|
|
494
535
|
<span class="cstat-no" title="statement not covered" > },</span>
|
|
495
536
|
});
|
|
496
537
|
|
|
497
|
-
function populateProblemsExact(
|
|
538
|
+
function populateProblemsExact(
|
|
539
|
+
banned: Set<string>,
|
|
540
|
+
dependencies: ReadonlyArray<string>,
|
|
541
|
+
violations: Set<string>,
|
|
542
|
+
) {
|
|
498
543
|
for (const dependency of dependencies) {
|
|
499
544
|
if (banned.has(dependency)) {
|
|
500
545
|
violations.add(dependency);
|
|
@@ -505,7 +550,7 @@ function populateProblemsExact(banned: Set<string>, dependencies: Readonly
|
|
|
505
550
|
function populateProblemsGlobs(
|
|
506
551
|
bannedDependencyGlobs: ReadonlyArray<string>,
|
|
507
552
|
dependencies: ReadonlyArray<string>,
|
|
508
|
-
violations: Set<string>
|
|
553
|
+
violations: Set<string>,
|
|
509
554
|
) {
|
|
510
555
|
for (const dependency of dependencies) {
|
|
511
556
|
if (matchesAnyGlob(dependency, bannedDependencyGlobs)) {
|
|
@@ -517,13 +562,19 @@ function populateProblemsGlobs(
|
|
|
517
562
|
// This function is slow. God help you if you use this on a big repo
|
|
518
563
|
function checkTransitives(context: Context, banned: Set<string>) {
|
|
519
564
|
const graphService = new PackageDependencyGraphService();
|
|
520
|
-
const root = graphService.buildDependencyGraph(
|
|
565
|
+
const root = graphService.buildDependencyGraph(
|
|
566
|
+
path.resolve(context.getPackageJsonPath()),
|
|
567
|
+
context.host,
|
|
568
|
+
);
|
|
521
569
|
for (const { dependencies, importPath } of graphService.traverse(root)) {
|
|
522
570
|
for (const [dependency] of dependencies) {
|
|
523
571
|
if (banned.has(dependency)) {
|
|
524
572
|
// Remove the starting package since it's obvious in CLI output.
|
|
525
573
|
const [, ...importPathWithoutRoot] = importPath;
|
|
526
|
-
const pathing = [
|
|
574
|
+
const pathing = [
|
|
575
|
+
...importPathWithoutRoot.map(nameOrPackageJsonPath),
|
|
576
|
+
dependency,
|
|
577
|
+
].join(" -> ");
|
|
527
578
|
|
|
528
579
|
context.addError({
|
|
529
580
|
file: root.paths.packageJsonPath,
|
|
@@ -544,7 +595,7 @@ function nameOrPackageJsonPath(node: IPackageDependencyGraphNode): string {
|
|
|
544
595
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
545
596
|
Code coverage generated by
|
|
546
597
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
547
|
-
at 2025-01-
|
|
598
|
+
at 2025-01-22T17:39:11.886Z
|
|
548
599
|
</div>
|
|
549
600
|
<script src="../prettify.js"></script>
|
|
550
601
|
<script>
|
|
@@ -23,9 +23,9 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">97.46% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>77/79</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
@@ -44,9 +44,9 @@
|
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">97.46% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>77/79</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -153,10 +153,20 @@
|
|
|
153
153
|
<a name='L88'></a><a href='#L88'>88</a>
|
|
154
154
|
<a name='L89'></a><a href='#L89'>89</a>
|
|
155
155
|
<a name='L90'></a><a href='#L90'>90</a>
|
|
156
|
-
<a name='L91'></a><a href='#L91'>91</a
|
|
157
|
-
<
|
|
158
|
-
<
|
|
159
|
-
<
|
|
156
|
+
<a name='L91'></a><a href='#L91'>91</a>
|
|
157
|
+
<a name='L92'></a><a href='#L92'>92</a>
|
|
158
|
+
<a name='L93'></a><a href='#L93'>93</a>
|
|
159
|
+
<a name='L94'></a><a href='#L94'>94</a>
|
|
160
|
+
<a name='L95'></a><a href='#L95'>95</a>
|
|
161
|
+
<a name='L96'></a><a href='#L96'>96</a>
|
|
162
|
+
<a name='L97'></a><a href='#L97'>97</a>
|
|
163
|
+
<a name='L98'></a><a href='#L98'>98</a>
|
|
164
|
+
<a name='L99'></a><a href='#L99'>99</a>
|
|
165
|
+
<a name='L100'></a><a href='#L100'>100</a>
|
|
166
|
+
<a name='L101'></a><a href='#L101'>101</a>
|
|
167
|
+
<a name='L102'></a><a href='#L102'>102</a>
|
|
168
|
+
<a name='L103'></a><a href='#L103'>103</a>
|
|
169
|
+
<a name='L104'></a><a href='#L104'>104</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
160
170
|
<span class="cline-any cline-neutral"> </span>
|
|
161
171
|
<span class="cline-any cline-neutral"> </span>
|
|
162
172
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -169,6 +179,9 @@
|
|
|
169
179
|
<span class="cline-any cline-yes">1x</span>
|
|
170
180
|
<span class="cline-any cline-yes">1x</span>
|
|
171
181
|
<span class="cline-any cline-yes">1x</span>
|
|
182
|
+
<span class="cline-any cline-yes">1x</span>
|
|
183
|
+
<span class="cline-any cline-yes">1x</span>
|
|
184
|
+
<span class="cline-any cline-yes">1x</span>
|
|
172
185
|
<span class="cline-any cline-neutral"> </span>
|
|
173
186
|
<span class="cline-any cline-neutral"> </span>
|
|
174
187
|
<span class="cline-any cline-yes">1x</span>
|
|
@@ -187,12 +200,15 @@
|
|
|
187
200
|
<span class="cline-any cline-yes">14x</span>
|
|
188
201
|
<span class="cline-any cline-yes">14x</span>
|
|
189
202
|
<span class="cline-any cline-yes">14x</span>
|
|
190
|
-
<span class="cline-any cline-
|
|
203
|
+
<span class="cline-any cline-yes">14x</span>
|
|
204
|
+
<span class="cline-any cline-yes">14x</span>
|
|
191
205
|
<span class="cline-any cline-yes">14x</span>
|
|
192
206
|
<span class="cline-any cline-yes">14x</span>
|
|
193
207
|
<span class="cline-any cline-neutral"> </span>
|
|
194
208
|
<span class="cline-any cline-yes">14x</span>
|
|
195
209
|
<span class="cline-any cline-yes">14x</span>
|
|
210
|
+
<span class="cline-any cline-neutral"> </span>
|
|
211
|
+
<span class="cline-any cline-yes">14x</span>
|
|
196
212
|
<span class="cline-any cline-yes">14x</span>
|
|
197
213
|
<span class="cline-any cline-yes">13x</span>
|
|
198
214
|
<span class="cline-any cline-yes">1x</span>
|
|
@@ -221,11 +237,16 @@
|
|
|
221
237
|
<span class="cline-any cline-yes">14x</span>
|
|
222
238
|
<span class="cline-any cline-neutral"> </span>
|
|
223
239
|
<span class="cline-any cline-yes">7x</span>
|
|
240
|
+
<span class="cline-any cline-yes">7x</span>
|
|
241
|
+
<span class="cline-any cline-yes">7x</span>
|
|
242
|
+
<span class="cline-any cline-yes">7x</span>
|
|
224
243
|
<span class="cline-any cline-neutral"> </span>
|
|
225
244
|
<span class="cline-any cline-yes">7x</span>
|
|
226
245
|
<span class="cline-any cline-neutral"> </span>
|
|
227
246
|
<span class="cline-any cline-yes">7x</span>
|
|
228
247
|
<span class="cline-any cline-yes">7x</span>
|
|
248
|
+
<span class="cline-any cline-yes">7x</span>
|
|
249
|
+
<span class="cline-any cline-yes">7x</span>
|
|
229
250
|
<span class="cline-any cline-yes">4x</span>
|
|
230
251
|
<span class="cline-any cline-yes">4x</span>
|
|
231
252
|
<span class="cline-any cline-yes">7x</span>
|
|
@@ -235,9 +256,14 @@
|
|
|
235
256
|
<span class="cline-any cline-neutral"> </span>
|
|
236
257
|
<span class="cline-any cline-yes">1x</span>
|
|
237
258
|
<span class="cline-any cline-yes">1x</span>
|
|
259
|
+
<span class="cline-any cline-yes">1x</span>
|
|
260
|
+
<span class="cline-any cline-yes">1x</span>
|
|
261
|
+
<span class="cline-any cline-yes">1x</span>
|
|
238
262
|
<span class="cline-any cline-neutral"> </span>
|
|
239
263
|
<span class="cline-any cline-yes">1x</span>
|
|
240
264
|
<span class="cline-any cline-yes">1x</span>
|
|
265
|
+
<span class="cline-any cline-yes">1x</span>
|
|
266
|
+
<span class="cline-any cline-yes">1x</span>
|
|
241
267
|
<span class="cline-any cline-no"> </span>
|
|
242
268
|
<span class="cline-any cline-no"> </span>
|
|
243
269
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -273,7 +299,11 @@ export const consistentDependencies = createRuleFactory<Options>({
|
|
|
273
299
|
validateOptions: Options.check,
|
|
274
300
|
});
|
|
275
301
|
|
|
276
|
-
function checkDeps(
|
|
302
|
+
function checkDeps(
|
|
303
|
+
context: Context,
|
|
304
|
+
args: Options,
|
|
305
|
+
block: "dependencies" | "devDependencies" | "peerDependencies",
|
|
306
|
+
) {
|
|
277
307
|
const packageJson = context.getPackageJson();
|
|
278
308
|
const packagePath = context.getPackageJsonPath();
|
|
279
309
|
const dependencies = packageJson[block];
|
|
@@ -282,10 +312,9 @@ function checkDeps(context: Context, args: Options, block: "dependencies" | "dev
|
|
|
282
312
|
const workspaceDependencies = workspacePackageJson[block];
|
|
283
313
|
|
|
284
314
|
const ignoredDeps = args?.ignoredDependencies ?? [];
|
|
285
|
-
const depsToCheck =
|
|
286
|
-
workspaceDependencies
|
|
287
|
-
|
|
288
|
-
: omit(workspaceDependencies, ignoredDeps);
|
|
315
|
+
const depsToCheck = workspaceDependencies == null || ignoredDeps.length === 0
|
|
316
|
+
? workspaceDependencies
|
|
317
|
+
: omit(workspaceDependencies, ignoredDeps);
|
|
289
318
|
|
|
290
319
|
if (dependencies === undefined || depsToCheck === undefined) {
|
|
291
320
|
return;
|
|
@@ -310,12 +339,17 @@ function checkDeps(context: Context, args: Options, block: "dependencies" | "dev
|
|
|
310
339
|
}
|
|
311
340
|
}
|
|
312
341
|
|
|
313
|
-
function filterKeys(
|
|
342
|
+
function filterKeys(
|
|
343
|
+
ob: Record<string, string>,
|
|
344
|
+
filterOb: Record<string, string>,
|
|
345
|
+
) {
|
|
314
346
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
315
347
|
const newOb: Record<string, any> = {};
|
|
316
348
|
|
|
317
349
|
for (const key of Object.keys(filterOb)) {
|
|
318
|
-
if (
|
|
350
|
+
if (
|
|
351
|
+
ob[key] !== undefined && skippedVersions.indexOf(filterOb[key]) === -1
|
|
352
|
+
) {
|
|
319
353
|
newOb[key] = ob[key];
|
|
320
354
|
}
|
|
321
355
|
}
|
|
@@ -323,10 +357,15 @@ function filterKeys(ob: Record<string, string>, filterOb: Record<string
|
|
|
323
357
|
return newOb;
|
|
324
358
|
}
|
|
325
359
|
|
|
326
|
-
function omit<T>(
|
|
360
|
+
function omit<T>(
|
|
361
|
+
obj: Record<string, T>,
|
|
362
|
+
keysToOmit: readonly string[],
|
|
363
|
+
): Record<string, T> {
|
|
327
364
|
const newObj: Record<string, T> = {};
|
|
328
365
|
|
|
329
|
-
const filtered = Object.entries(obj).filter(([key]) =>
|
|
366
|
+
const filtered = Object.entries(obj).filter(([key]) =>
|
|
367
|
+
!keysToOmit.includes(key)
|
|
368
|
+
);
|
|
330
369
|
for (const [key, value] of filtered) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
331
370
|
<span class="cstat-no" title="statement not covered" > newObj[key] = value;</span>
|
|
332
371
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
@@ -340,7 +379,7 @@ function omit<T>(obj: Record<string, T>, keysToOmit: readonly string
|
|
|
340
379
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
341
380
|
Code coverage generated by
|
|
342
381
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
343
|
-
at 2025-01-
|
|
382
|
+
at 2025-01-22T17:39:11.886Z
|
|
344
383
|
</div>
|
|
345
384
|
<script src="../prettify.js"></script>
|
|
346
385
|
<script>
|