@monorepolint/rules 0.6.0-alpha.3 → 0.6.0-alpha.4
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 +73 -74
- package/.turbo/turbo-transpile-typescript.log +4 -4
- package/CHANGELOG.md +10 -0
- package/build/js/index.js +104 -69
- package/build/js/index.js.map +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/build/types/bannedDependencies.d.ts.map +1 -1
- package/build/types/forceError.d.ts +4 -0
- package/build/types/forceError.d.ts.map +1 -0
- package/build/types/index.d.ts +2 -0
- 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/oncePerPackage.d.ts +11 -0
- package/build/types/oncePerPackage.d.ts.map +1 -0
- package/build/types/requireDependency.d.ts.map +1 -1
- package/build/types/util/packageDependencyGraphService.d.ts.map +1 -1
- package/coverage/clover.xml +516 -469
- package/coverage/coverage-final.json +12 -10
- package/coverage/index.html +15 -15
- package/coverage/src/alphabeticalDependencies.ts.html +6 -6
- package/coverage/src/alphabeticalScripts.ts.html +1 -1
- package/coverage/src/bannedDependencies.ts.html +7 -10
- package/coverage/src/consistentDependencies.ts.html +7 -13
- package/coverage/src/consistentVersions.ts.html +31 -46
- package/coverage/src/fileContents.ts.html +1 -1
- package/coverage/src/forceError.ts.html +184 -0
- package/coverage/src/index.html +73 -43
- package/coverage/src/index.ts.html +10 -4
- package/coverage/src/mustSatisfyPeerDependencies.ts.html +16 -61
- package/coverage/src/nestedWorkspaces.ts.html +10 -22
- package/coverage/src/oncePerPackage.ts.html +181 -0
- package/coverage/src/packageEntry.ts.html +1 -1
- package/coverage/src/packageOrder.ts.html +1 -1
- package/coverage/src/packageScript.ts.html +1 -1
- package/coverage/src/requireDependency.ts.html +7 -13
- package/coverage/src/standardTsconfig.ts.html +6 -6
- package/coverage/src/util/checkAlpha.ts.html +1 -1
- package/coverage/src/util/createRuleFactory.ts.html +1 -1
- package/coverage/src/util/index.html +10 -10
- package/coverage/src/util/makeDirectory.ts.html +1 -1
- package/coverage/src/util/packageDependencyGraphService.ts.html +7 -13
- package/package.json +4 -4
- package/src/__tests__/fileContents.spec.ts +1 -5
- package/src/__tests__/nestedWorkspaces.spec.ts +1 -2
- package/src/__tests__/packageEntry.spec.ts +1 -6
- package/src/__tests__/packageOrder.spec.ts +1 -6
- package/src/__tests__/packageScript.spec.ts +1 -6
- package/src/bannedDependencies.ts +1 -2
- package/src/consistentDependencies.ts +1 -3
- package/src/consistentVersions.ts +24 -29
- package/src/forceError.ts +33 -0
- package/src/index.ts +2 -0
- package/src/mustSatisfyPeerDependencies.ts +10 -25
- package/src/nestedWorkspaces.ts +4 -8
- package/src/oncePerPackage.ts +32 -0
- package/src/requireDependency.ts +1 -3
- package/src/util/packageDependencyGraphService.ts +1 -3
- package/vitest.config.mjs +1 -5
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
|
|
2
|
+
<!doctype html>
|
|
3
|
+
<html lang="en">
|
|
4
|
+
|
|
5
|
+
<head>
|
|
6
|
+
<title>Code coverage report for src/oncePerPackage.ts</title>
|
|
7
|
+
<meta charset="utf-8" />
|
|
8
|
+
<link rel="stylesheet" href="../prettify.css" />
|
|
9
|
+
<link rel="stylesheet" href="../base.css" />
|
|
10
|
+
<link rel="shortcut icon" type="image/x-icon" href="../favicon.png" />
|
|
11
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
12
|
+
<style type='text/css'>
|
|
13
|
+
.coverage-summary .sorter {
|
|
14
|
+
background-image: url(../sort-arrow-sprite.png);
|
|
15
|
+
}
|
|
16
|
+
</style>
|
|
17
|
+
</head>
|
|
18
|
+
|
|
19
|
+
<body>
|
|
20
|
+
<div class='wrapper'>
|
|
21
|
+
<div class='pad1'>
|
|
22
|
+
<h1><a href="../index.html">All files</a> / <a href="index.html">src</a> oncePerPackage.ts</h1>
|
|
23
|
+
<div class='clearfix'>
|
|
24
|
+
|
|
25
|
+
<div class='fl pad1y space-right2'>
|
|
26
|
+
<span class="strong">100% </span>
|
|
27
|
+
<span class="quiet">Statements</span>
|
|
28
|
+
<span class='fraction'>31/31</span>
|
|
29
|
+
</div>
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
<div class='fl pad1y space-right2'>
|
|
33
|
+
<span class="strong">100% </span>
|
|
34
|
+
<span class="quiet">Branches</span>
|
|
35
|
+
<span class='fraction'>0/0</span>
|
|
36
|
+
</div>
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
<div class='fl pad1y space-right2'>
|
|
40
|
+
<span class="strong">100% </span>
|
|
41
|
+
<span class="quiet">Functions</span>
|
|
42
|
+
<span class='fraction'>0/0</span>
|
|
43
|
+
</div>
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
<div class='fl pad1y space-right2'>
|
|
47
|
+
<span class="strong">100% </span>
|
|
48
|
+
<span class="quiet">Lines</span>
|
|
49
|
+
<span class='fraction'>31/31</span>
|
|
50
|
+
</div>
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
</div>
|
|
54
|
+
<p class="quiet">
|
|
55
|
+
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
|
|
56
|
+
</p>
|
|
57
|
+
<template id="filterTemplate">
|
|
58
|
+
<div class="quiet">
|
|
59
|
+
Filter:
|
|
60
|
+
<input type="search" id="fileSearch">
|
|
61
|
+
</div>
|
|
62
|
+
</template>
|
|
63
|
+
</div>
|
|
64
|
+
<div class='status-line high'></div>
|
|
65
|
+
<pre><table class="coverage">
|
|
66
|
+
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
67
|
+
<a name='L2'></a><a href='#L2'>2</a>
|
|
68
|
+
<a name='L3'></a><a href='#L3'>3</a>
|
|
69
|
+
<a name='L4'></a><a href='#L4'>4</a>
|
|
70
|
+
<a name='L5'></a><a href='#L5'>5</a>
|
|
71
|
+
<a name='L6'></a><a href='#L6'>6</a>
|
|
72
|
+
<a name='L7'></a><a href='#L7'>7</a>
|
|
73
|
+
<a name='L8'></a><a href='#L8'>8</a>
|
|
74
|
+
<a name='L9'></a><a href='#L9'>9</a>
|
|
75
|
+
<a name='L10'></a><a href='#L10'>10</a>
|
|
76
|
+
<a name='L11'></a><a href='#L11'>11</a>
|
|
77
|
+
<a name='L12'></a><a href='#L12'>12</a>
|
|
78
|
+
<a name='L13'></a><a href='#L13'>13</a>
|
|
79
|
+
<a name='L14'></a><a href='#L14'>14</a>
|
|
80
|
+
<a name='L15'></a><a href='#L15'>15</a>
|
|
81
|
+
<a name='L16'></a><a href='#L16'>16</a>
|
|
82
|
+
<a name='L17'></a><a href='#L17'>17</a>
|
|
83
|
+
<a name='L18'></a><a href='#L18'>18</a>
|
|
84
|
+
<a name='L19'></a><a href='#L19'>19</a>
|
|
85
|
+
<a name='L20'></a><a href='#L20'>20</a>
|
|
86
|
+
<a name='L21'></a><a href='#L21'>21</a>
|
|
87
|
+
<a name='L22'></a><a href='#L22'>22</a>
|
|
88
|
+
<a name='L23'></a><a href='#L23'>23</a>
|
|
89
|
+
<a name='L24'></a><a href='#L24'>24</a>
|
|
90
|
+
<a name='L25'></a><a href='#L25'>25</a>
|
|
91
|
+
<a name='L26'></a><a href='#L26'>26</a>
|
|
92
|
+
<a name='L27'></a><a href='#L27'>27</a>
|
|
93
|
+
<a name='L28'></a><a href='#L28'>28</a>
|
|
94
|
+
<a name='L29'></a><a href='#L29'>29</a>
|
|
95
|
+
<a name='L30'></a><a href='#L30'>30</a>
|
|
96
|
+
<a name='L31'></a><a href='#L31'>31</a>
|
|
97
|
+
<a name='L32'></a><a href='#L32'>32</a>
|
|
98
|
+
<a name='L33'></a><a href='#L33'>33</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
99
|
+
<span class="cline-any cline-neutral"> </span>
|
|
100
|
+
<span class="cline-any cline-yes">1x</span>
|
|
101
|
+
<span class="cline-any cline-yes">1x</span>
|
|
102
|
+
<span class="cline-any cline-yes">1x</span>
|
|
103
|
+
<span class="cline-any cline-yes">1x</span>
|
|
104
|
+
<span class="cline-any cline-yes">1x</span>
|
|
105
|
+
<span class="cline-any cline-yes">1x</span>
|
|
106
|
+
<span class="cline-any cline-yes">1x</span>
|
|
107
|
+
<span class="cline-any cline-yes">1x</span>
|
|
108
|
+
<span class="cline-any cline-yes">1x</span>
|
|
109
|
+
<span class="cline-any cline-yes">1x</span>
|
|
110
|
+
<span class="cline-any cline-yes">1x</span>
|
|
111
|
+
<span class="cline-any cline-yes">1x</span>
|
|
112
|
+
<span class="cline-any cline-yes">1x</span>
|
|
113
|
+
<span class="cline-any cline-yes">1x</span>
|
|
114
|
+
<span class="cline-any cline-yes">1x</span>
|
|
115
|
+
<span class="cline-any cline-yes">1x</span>
|
|
116
|
+
<span class="cline-any cline-yes">1x</span>
|
|
117
|
+
<span class="cline-any cline-yes">1x</span>
|
|
118
|
+
<span class="cline-any cline-yes">1x</span>
|
|
119
|
+
<span class="cline-any cline-yes">1x</span>
|
|
120
|
+
<span class="cline-any cline-yes">1x</span>
|
|
121
|
+
<span class="cline-any cline-yes">1x</span>
|
|
122
|
+
<span class="cline-any cline-yes">1x</span>
|
|
123
|
+
<span class="cline-any cline-yes">1x</span>
|
|
124
|
+
<span class="cline-any cline-yes">1x</span>
|
|
125
|
+
<span class="cline-any cline-yes">1x</span>
|
|
126
|
+
<span class="cline-any cline-yes">1x</span>
|
|
127
|
+
<span class="cline-any cline-yes">1x</span>
|
|
128
|
+
<span class="cline-any cline-yes">1x</span>
|
|
129
|
+
<span class="cline-any cline-yes">1x</span>
|
|
130
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import * as r from "runtypes";
|
|
131
|
+
import { createRuleFactory } from "./util/createRuleFactory.js";
|
|
132
|
+
|
|
133
|
+
export const Options = r.Record({
|
|
134
|
+
singletonKey: r.String.Or(r.Symbol),
|
|
135
|
+
customMessage: r.String.optional(),
|
|
136
|
+
});
|
|
137
|
+
|
|
138
|
+
export type Options = r.Static<typeof Options>;
|
|
139
|
+
|
|
140
|
+
const visitedMap = new Map<string | symbol, Set<string>>();
|
|
141
|
+
|
|
142
|
+
export const oncePerPackage = createRuleFactory<Options>({
|
|
143
|
+
name: "oncePerPackage",
|
|
144
|
+
|
|
145
|
+
check: async (context, options) => {
|
|
146
|
+
const visited = visitedMap.get(options.singletonKey) ?? new Set<string>();
|
|
147
|
+
visitedMap.set(options.singletonKey, visited);
|
|
148
|
+
|
|
149
|
+
if (visited.has(context.getName())) {
|
|
150
|
+
context.addError({
|
|
151
|
+
message: "This package has already been visited for this key: "
|
|
152
|
+
+ options.singletonKey.toString(),
|
|
153
|
+
file: context.getPackageJsonPath(),
|
|
154
|
+
});
|
|
155
|
+
} else {
|
|
156
|
+
visited.add(context.getName());
|
|
157
|
+
}
|
|
158
|
+
},
|
|
159
|
+
|
|
160
|
+
validateOptions: Options.assert,
|
|
161
|
+
});
|
|
162
|
+
</pre></td></tr></table></pre>
|
|
163
|
+
|
|
164
|
+
<div class='push'></div><!-- for sticky footer -->
|
|
165
|
+
</div><!-- /wrapper -->
|
|
166
|
+
<div class='footer quiet pad2 space-top1 center small'>
|
|
167
|
+
Code coverage generated by
|
|
168
|
+
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
169
|
+
at 2025-01-31T21:00:08.068Z
|
|
170
|
+
</div>
|
|
171
|
+
<script src="../prettify.js"></script>
|
|
172
|
+
<script>
|
|
173
|
+
window.onload = function () {
|
|
174
|
+
prettyPrint();
|
|
175
|
+
};
|
|
176
|
+
</script>
|
|
177
|
+
<script src="../sorter.js"></script>
|
|
178
|
+
<script src="../block-navigation.js"></script>
|
|
179
|
+
</body>
|
|
180
|
+
</html>
|
|
181
|
+
|
|
@@ -361,7 +361,7 @@ export function createExpectedEntryErrorMessage(key: string) {
|
|
|
361
361
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
362
362
|
Code coverage generated by
|
|
363
363
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
364
|
-
at 2025-01-
|
|
364
|
+
at 2025-01-31T21:00:08.068Z
|
|
365
365
|
</div>
|
|
366
366
|
<script src="../prettify.js"></script>
|
|
367
367
|
<script>
|
|
@@ -457,7 +457,7 @@ function isOrderFunction(
|
|
|
457
457
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
458
458
|
Code coverage generated by
|
|
459
459
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
460
|
-
at 2025-01-
|
|
460
|
+
at 2025-01-31T21:00:08.068Z
|
|
461
461
|
</div>
|
|
462
462
|
<script src="../prettify.js"></script>
|
|
463
463
|
<script>
|
|
@@ -421,7 +421,7 @@ export const packageScript = createRuleFactory<Options>({
|
|
|
421
421
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
422
422
|
Code coverage generated by
|
|
423
423
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
424
|
-
at 2025-01-
|
|
424
|
+
at 2025-01-31T21:00:08.068Z
|
|
425
425
|
</div>
|
|
426
426
|
<script src="../prettify.js"></script>
|
|
427
427
|
<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">90.27% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>65/
|
|
28
|
+
<span class='fraction'>65/72</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">90.27% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>65/
|
|
49
|
+
<span class='fraction'>65/72</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -149,9 +149,7 @@
|
|
|
149
149
|
<a name='L84'></a><a href='#L84'>84</a>
|
|
150
150
|
<a name='L85'></a><a href='#L85'>85</a>
|
|
151
151
|
<a name='L86'></a><a href='#L86'>86</a>
|
|
152
|
-
<a name='L87'></a><a href='#L87'>87</a>
|
|
153
|
-
<a name='L88'></a><a href='#L88'>88</a>
|
|
154
|
-
<a name='L89'></a><a href='#L89'>89</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
152
|
+
<a name='L87'></a><a href='#L87'>87</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
155
153
|
<span class="cline-any cline-neutral"> </span>
|
|
156
154
|
<span class="cline-any cline-neutral"> </span>
|
|
157
155
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -202,8 +200,6 @@
|
|
|
202
200
|
<span class="cline-any cline-no"> </span>
|
|
203
201
|
<span class="cline-any cline-no"> </span>
|
|
204
202
|
<span class="cline-any cline-no"> </span>
|
|
205
|
-
<span class="cline-any cline-no"> </span>
|
|
206
|
-
<span class="cline-any cline-no"> </span>
|
|
207
203
|
<span class="cline-any cline-yes">3x</span>
|
|
208
204
|
<span class="cline-any cline-yes">3x</span>
|
|
209
205
|
<span class="cline-any cline-yes">3x</span>
|
|
@@ -285,9 +281,7 @@ export const requireDependency = createRuleFactory({
|
|
|
285
281
|
fixer: <span class="fstat-no" title="function not covered" >() => {</span>
|
|
286
282
|
<span class="cstat-no" title="statement not covered" > mutateJson<PackageJson>(packageJsonPath, context.host, (input) => {</span>
|
|
287
283
|
<span class="cstat-no" title="statement not covered" > input[type] = Object.fromEntries(</span>
|
|
288
|
-
<span class="cstat-no" title="statement not covered" > Object.entries(expectedEntries).filter(([, v]) =>
|
|
289
|
-
<span class="cstat-no" title="statement not covered" > v !== undefined</span>
|
|
290
|
-
<span class="cstat-no" title="statement not covered" > ),</span>
|
|
284
|
+
<span class="cstat-no" title="statement not covered" > Object.entries(expectedEntries).filter(([, v]) => v !== undefined),</span>
|
|
291
285
|
<span class="cstat-no" title="statement not covered" > ) as Record<string, string>;</span>
|
|
292
286
|
<span class="cstat-no" title="statement not covered" > return input;</span>
|
|
293
287
|
<span class="cstat-no" title="statement not covered" > });</span>
|
|
@@ -334,7 +328,7 @@ export const requireDependency = createRuleFactory({
|
|
|
334
328
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
335
329
|
Code coverage generated by
|
|
336
330
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
337
|
-
at 2025-01-
|
|
331
|
+
at 2025-01-31T21:00:08.068Z
|
|
338
332
|
</div>
|
|
339
333
|
<script src="../prettify.js"></script>
|
|
340
334
|
<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'>155/155</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'>155/155</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -221,9 +221,9 @@
|
|
|
221
221
|
<a name='L156'></a><a href='#L156'>156</a>
|
|
222
222
|
<a name='L157'></a><a href='#L157'>157</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
223
223
|
<span class="cline-any cline-neutral"> </span>
|
|
224
|
-
<span class="cline-any cline-
|
|
225
|
-
<span class="cline-any cline-
|
|
226
|
-
<span class="cline-any cline-
|
|
224
|
+
<span class="cline-any cline-yes">1x</span>
|
|
225
|
+
<span class="cline-any cline-yes">1x</span>
|
|
226
|
+
<span class="cline-any cline-yes">1x</span>
|
|
227
227
|
<span class="cline-any cline-yes">1x</span>
|
|
228
228
|
<span class="cline-any cline-yes">1x</span>
|
|
229
229
|
<span class="cline-any cline-yes">1x</span>
|
|
@@ -538,7 +538,7 @@ function makeGenerator(
|
|
|
538
538
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
539
539
|
Code coverage generated by
|
|
540
540
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
541
|
-
at 2025-01-
|
|
541
|
+
at 2025-01-31T21:00:08.068Z
|
|
542
542
|
</div>
|
|
543
543
|
<script src="../prettify.js"></script>
|
|
544
544
|
<script>
|
|
@@ -256,7 +256,7 @@ export function createIncorrectOrderErrorMessage(
|
|
|
256
256
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
257
257
|
Code coverage generated by
|
|
258
258
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
259
|
-
at 2025-01-
|
|
259
|
+
at 2025-01-31T21:00:08.068Z
|
|
260
260
|
</div>
|
|
261
261
|
<script src="../../prettify.js"></script>
|
|
262
262
|
<script>
|
|
@@ -181,7 +181,7 @@ export function createRuleFactory<X>({
|
|
|
181
181
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
182
182
|
Code coverage generated by
|
|
183
183
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
184
|
-
at 2025-01-
|
|
184
|
+
at 2025-01-31T21:00:08.068Z
|
|
185
185
|
</div>
|
|
186
186
|
<script src="../../prettify.js"></script>
|
|
187
187
|
<script>
|
|
@@ -23,9 +23,9 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">92.
|
|
26
|
+
<span class="strong">92.25% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>143/155</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">92.
|
|
47
|
+
<span class="strong">92.25% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>143/155</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -125,17 +125,17 @@
|
|
|
125
125
|
|
|
126
126
|
<tr>
|
|
127
127
|
<td class="file high" data-value="packageDependencyGraphService.ts"><a href="packageDependencyGraphService.ts.html">packageDependencyGraphService.ts</a></td>
|
|
128
|
-
<td data-value="87.
|
|
128
|
+
<td data-value="87.01" class="pic high">
|
|
129
129
|
<div class="chart"><div class="cover-fill" style="width: 87%"></div><div class="cover-empty" style="width: 13%"></div></div>
|
|
130
130
|
</td>
|
|
131
|
-
<td data-value="87.
|
|
132
|
-
<td data-value="
|
|
131
|
+
<td data-value="87.01" class="pct high">87.01%</td>
|
|
132
|
+
<td data-value="77" class="abs high">67/77</td>
|
|
133
133
|
<td data-value="61.53" class="pct medium">61.53%</td>
|
|
134
134
|
<td data-value="13" class="abs medium">8/13</td>
|
|
135
135
|
<td data-value="100" class="pct high">100%</td>
|
|
136
136
|
<td data-value="4" class="abs high">4/4</td>
|
|
137
|
-
<td data-value="87.
|
|
138
|
-
<td data-value="
|
|
137
|
+
<td data-value="87.01" class="pct high">87.01%</td>
|
|
138
|
+
<td data-value="77" class="abs high">67/77</td>
|
|
139
139
|
</tr>
|
|
140
140
|
|
|
141
141
|
</tbody>
|
|
@@ -146,7 +146,7 @@
|
|
|
146
146
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
147
147
|
Code coverage generated by
|
|
148
148
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
149
|
-
at 2025-01-
|
|
149
|
+
at 2025-01-31T21:00:08.068Z
|
|
150
150
|
</div>
|
|
151
151
|
<script src="../../prettify.js"></script>
|
|
152
152
|
<script>
|
|
@@ -142,7 +142,7 @@ export function makeDirectoryRecursively(directoryPath: string) {
|
|
|
142
142
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
143
143
|
Code coverage generated by
|
|
144
144
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
145
|
-
at 2025-01-
|
|
145
|
+
at 2025-01-31T21:00:08.068Z
|
|
146
146
|
</div>
|
|
147
147
|
<script src="../../prettify.js"></script>
|
|
148
148
|
<script>
|
|
@@ -23,9 +23,9 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">87.
|
|
26
|
+
<span class="strong">87.01% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>67/77</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">87.
|
|
47
|
+
<span class="strong">87.01% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>67/77</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -202,9 +202,7 @@
|
|
|
202
202
|
<a name='L137'></a><a href='#L137'>137</a>
|
|
203
203
|
<a name='L138'></a><a href='#L138'>138</a>
|
|
204
204
|
<a name='L139'></a><a href='#L139'>139</a>
|
|
205
|
-
<a name='L140'></a><a href='#L140'>140</a>
|
|
206
|
-
<a name='L141'></a><a href='#L141'>141</a>
|
|
207
|
-
<a name='L142'></a><a href='#L142'>142</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
205
|
+
<a name='L140'></a><a href='#L140'>140</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
208
206
|
<span class="cline-any cline-neutral"> </span>
|
|
209
207
|
<span class="cline-any cline-neutral"> </span>
|
|
210
208
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -247,8 +245,6 @@
|
|
|
247
245
|
<span class="cline-any cline-yes">1x</span>
|
|
248
246
|
<span class="cline-any cline-neutral"> </span>
|
|
249
247
|
<span class="cline-any cline-yes">1x</span>
|
|
250
|
-
<span class="cline-any cline-neutral"> </span>
|
|
251
|
-
<span class="cline-any cline-yes">1x</span>
|
|
252
248
|
<span class="cline-any cline-yes">1x</span>
|
|
253
249
|
<span class="cline-any cline-yes">1x</span>
|
|
254
250
|
<span class="cline-any cline-yes">1x</span>
|
|
@@ -385,9 +381,7 @@ export interface IPackageDependencyGraphService {
|
|
|
385
381
|
}
|
|
386
382
|
|
|
387
383
|
/** Default implementation of the package dependency graph service. */
|
|
388
|
-
export class PackageDependencyGraphService
|
|
389
|
-
implements IPackageDependencyGraphService
|
|
390
|
-
{
|
|
384
|
+
export class PackageDependencyGraphService implements IPackageDependencyGraphService {
|
|
391
385
|
/** Construct a graph of package dependencies and return the root node. */
|
|
392
386
|
public buildDependencyGraph(
|
|
393
387
|
startPackageJsonPath: string,
|
|
@@ -493,7 +487,7 @@ export class PackageDependencyGraphService
|
|
|
493
487
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
494
488
|
Code coverage generated by
|
|
495
489
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
496
|
-
at 2025-01-
|
|
490
|
+
at 2025-01-31T21:00:08.068Z
|
|
497
491
|
</div>
|
|
498
492
|
<script src="../../prettify.js"></script>
|
|
499
493
|
<script>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@monorepolint/rules",
|
|
3
|
-
"version": "0.6.0-alpha.
|
|
3
|
+
"version": "0.6.0-alpha.4",
|
|
4
4
|
"author": "Eric L Anderson (https://github.com/ericanderson)",
|
|
5
5
|
"contributors": [
|
|
6
6
|
"Mac Lockard (https://github.com/maclockard)"
|
|
@@ -28,9 +28,9 @@
|
|
|
28
28
|
"runtypes": "^6.7.0",
|
|
29
29
|
"semver": "^7.6.3",
|
|
30
30
|
"tslib": "^2.8.1",
|
|
31
|
-
"@monorepolint/
|
|
32
|
-
"@monorepolint/
|
|
33
|
-
"@monorepolint/
|
|
31
|
+
"@monorepolint/config": "^0.6.0-alpha.4",
|
|
32
|
+
"@monorepolint/core": "^0.6.0-alpha.4",
|
|
33
|
+
"@monorepolint/utils": "^0.6.0-alpha.4"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
36
|
"@types/semver": "^7.5.8",
|
|
@@ -9,11 +9,7 @@
|
|
|
9
9
|
import { AddErrorOptions, Failure } from "@monorepolint/config";
|
|
10
10
|
import { beforeEach, describe, expect, it, MockInstance, vi } from "vitest";
|
|
11
11
|
import { fileContents } from "../fileContents.js";
|
|
12
|
-
import {
|
|
13
|
-
createTestingWorkspace,
|
|
14
|
-
HOST_FACTORIES,
|
|
15
|
-
TestingWorkspace,
|
|
16
|
-
} from "./utils.js";
|
|
12
|
+
import { createTestingWorkspace, HOST_FACTORIES, TestingWorkspace } from "./utils.js";
|
|
17
13
|
|
|
18
14
|
const EXPECTED_FOO_FILE = "hello world";
|
|
19
15
|
|
|
@@ -139,8 +139,7 @@ describe("nestedWorkspaces", () => {
|
|
|
139
139
|
expect(spy).toHaveBeenCalledTimes(1);
|
|
140
140
|
expect(spy).toHaveBeenCalledWith({
|
|
141
141
|
file: packageJsonPath,
|
|
142
|
-
message:
|
|
143
|
-
"The \"workspace\" field is missing one or more values: packages/deep/star. "
|
|
142
|
+
message: "The \"workspace\" field is missing one or more values: packages/deep/star. "
|
|
144
143
|
+ "You may be able to use a glob to avoid listing each workspace individually, e.g. \"packages/nested-workspace/*\".",
|
|
145
144
|
});
|
|
146
145
|
});
|
|
@@ -14,12 +14,7 @@ import {
|
|
|
14
14
|
createStandardizedEntryErrorMessage,
|
|
15
15
|
packageEntry,
|
|
16
16
|
} from "../packageEntry.js";
|
|
17
|
-
import {
|
|
18
|
-
AddErrorSpy,
|
|
19
|
-
createTestingWorkspace,
|
|
20
|
-
HOST_FACTORIES,
|
|
21
|
-
TestingWorkspace,
|
|
22
|
-
} from "./utils.js";
|
|
17
|
+
import { AddErrorSpy, createTestingWorkspace, HOST_FACTORIES, TestingWorkspace } from "./utils.js";
|
|
23
18
|
|
|
24
19
|
const PACKAGE_MISSING_ENTRY = JSON.stringify(
|
|
25
20
|
{
|
|
@@ -9,12 +9,7 @@
|
|
|
9
9
|
import { Context, Failure } from "@monorepolint/config";
|
|
10
10
|
import { beforeEach, describe, expect, it, vi } from "vitest";
|
|
11
11
|
import { packageOrder } from "../packageOrder.js";
|
|
12
|
-
import {
|
|
13
|
-
AddErrorSpy,
|
|
14
|
-
createTestingWorkspace,
|
|
15
|
-
HOST_FACTORIES,
|
|
16
|
-
TestingWorkspace,
|
|
17
|
-
} from "./utils.js";
|
|
12
|
+
import { AddErrorSpy, createTestingWorkspace, HOST_FACTORIES, TestingWorkspace } from "./utils.js";
|
|
18
13
|
|
|
19
14
|
const PACKAGE_UNORDERED = JSON.stringify(
|
|
20
15
|
{
|
|
@@ -9,12 +9,7 @@
|
|
|
9
9
|
import { Context, Failure } from "@monorepolint/config";
|
|
10
10
|
import { beforeEach, describe, expect, it, vi } from "vitest";
|
|
11
11
|
import { packageScript } from "../packageScript.js";
|
|
12
|
-
import {
|
|
13
|
-
AddErrorSpy,
|
|
14
|
-
createTestingWorkspace,
|
|
15
|
-
HOST_FACTORIES,
|
|
16
|
-
TestingWorkspace,
|
|
17
|
-
} from "./utils.js";
|
|
12
|
+
import { AddErrorSpy, createTestingWorkspace, HOST_FACTORIES, TestingWorkspace } from "./utils.js";
|
|
18
13
|
|
|
19
14
|
const json = (a: unknown) => JSON.stringify(a, undefined, 2) + "\n";
|
|
20
15
|
|
|
@@ -95,8 +95,7 @@ export const bannedDependencies = createRuleFactory<Options>({
|
|
|
95
95
|
if (violations.size > 0) {
|
|
96
96
|
context.addError({
|
|
97
97
|
file: packagePath,
|
|
98
|
-
message:
|
|
99
|
-
`Found ${violations.size} banned dependencies of package.json:\n\t`
|
|
98
|
+
message: `Found ${violations.size} banned dependencies of package.json:\n\t`
|
|
100
99
|
+ Array.from(violations)
|
|
101
100
|
.map((v) => `'${v}'`)
|
|
102
101
|
.join(", "),
|
|
@@ -92,9 +92,7 @@ function omit<T>(
|
|
|
92
92
|
): Record<string, T> {
|
|
93
93
|
const newObj: Record<string, T> = {};
|
|
94
94
|
|
|
95
|
-
const filtered = Object.entries(obj).filter(([key]) =>
|
|
96
|
-
!keysToOmit.includes(key)
|
|
97
|
-
);
|
|
95
|
+
const filtered = Object.entries(obj).filter(([key]) => !keysToOmit.includes(key));
|
|
98
96
|
for (const [key, value] of filtered) {
|
|
99
97
|
newObj[key] = value;
|
|
100
98
|
}
|