@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
|
@@ -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">98% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>49/50</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">98% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>49/50</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -123,17 +123,30 @@
|
|
|
123
123
|
<a name='L58'></a><a href='#L58'>58</a>
|
|
124
124
|
<a name='L59'></a><a href='#L59'>59</a>
|
|
125
125
|
<a name='L60'></a><a href='#L60'>60</a>
|
|
126
|
-
<a name='L61'></a><a href='#L61'>61</a
|
|
127
|
-
<
|
|
128
|
-
<
|
|
129
|
-
<
|
|
130
|
-
<
|
|
126
|
+
<a name='L61'></a><a href='#L61'>61</a>
|
|
127
|
+
<a name='L62'></a><a href='#L62'>62</a>
|
|
128
|
+
<a name='L63'></a><a href='#L63'>63</a>
|
|
129
|
+
<a name='L64'></a><a href='#L64'>64</a>
|
|
130
|
+
<a name='L65'></a><a href='#L65'>65</a>
|
|
131
|
+
<a name='L66'></a><a href='#L66'>66</a>
|
|
132
|
+
<a name='L67'></a><a href='#L67'>67</a>
|
|
133
|
+
<a name='L68'></a><a href='#L68'>68</a>
|
|
134
|
+
<a name='L69'></a><a href='#L69'>69</a>
|
|
135
|
+
<a name='L70'></a><a href='#L70'>70</a>
|
|
136
|
+
<a name='L71'></a><a href='#L71'>71</a>
|
|
137
|
+
<a name='L72'></a><a href='#L72'>72</a>
|
|
138
|
+
<a name='L73'></a><a href='#L73'>73</a>
|
|
139
|
+
<a name='L74'></a><a href='#L74'>74</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
131
140
|
<span class="cline-any cline-neutral"> </span>
|
|
132
141
|
<span class="cline-any cline-neutral"> </span>
|
|
133
142
|
<span class="cline-any cline-neutral"> </span>
|
|
134
143
|
<span class="cline-any cline-neutral"> </span>
|
|
135
144
|
<span class="cline-any cline-neutral"> </span>
|
|
136
145
|
<span class="cline-any cline-neutral"> </span>
|
|
146
|
+
<span class="cline-any cline-yes">1x</span>
|
|
147
|
+
<span class="cline-any cline-yes">1x</span>
|
|
148
|
+
<span class="cline-any cline-yes">1x</span>
|
|
149
|
+
<span class="cline-any cline-yes">1x</span>
|
|
137
150
|
<span class="cline-any cline-neutral"> </span>
|
|
138
151
|
<span class="cline-any cline-yes">1x</span>
|
|
139
152
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -147,6 +160,9 @@
|
|
|
147
160
|
<span class="cline-any cline-neutral"> </span>
|
|
148
161
|
<span class="cline-any cline-neutral"> </span>
|
|
149
162
|
<span class="cline-any cline-yes">6x</span>
|
|
163
|
+
<span class="cline-any cline-yes">6x</span>
|
|
164
|
+
<span class="cline-any cline-yes">6x</span>
|
|
165
|
+
<span class="cline-any cline-yes">6x</span>
|
|
150
166
|
<span class="cline-any cline-neutral"> </span>
|
|
151
167
|
<span class="cline-any cline-yes">6x</span>
|
|
152
168
|
<span class="cline-any cline-no"> </span>
|
|
@@ -161,15 +177,23 @@
|
|
|
161
177
|
<span class="cline-any cline-yes">1x</span>
|
|
162
178
|
<span class="cline-any cline-yes">1x</span>
|
|
163
179
|
<span class="cline-any cline-yes">1x</span>
|
|
180
|
+
<span class="cline-any cline-yes">1x</span>
|
|
164
181
|
<span class="cline-any cline-neutral"> </span>
|
|
165
182
|
<span class="cline-any cline-neutral"> </span>
|
|
166
183
|
<span class="cline-any cline-yes">6x</span>
|
|
184
|
+
<span class="cline-any cline-yes">7x</span>
|
|
185
|
+
<span class="cline-any cline-yes">6x</span>
|
|
167
186
|
<span class="cline-any cline-neutral"> </span>
|
|
168
187
|
<span class="cline-any cline-neutral"> </span>
|
|
169
188
|
<span class="cline-any cline-yes">6x</span>
|
|
189
|
+
<span class="cline-any cline-yes">6x</span>
|
|
190
|
+
<span class="cline-any cline-yes">6x</span>
|
|
191
|
+
<span class="cline-any cline-yes">6x</span>
|
|
170
192
|
<span class="cline-any cline-neutral"> </span>
|
|
171
193
|
<span class="cline-any cline-neutral"> </span>
|
|
172
194
|
<span class="cline-any cline-yes">6x</span>
|
|
195
|
+
<span class="cline-any cline-yes">8x</span>
|
|
196
|
+
<span class="cline-any cline-yes">6x</span>
|
|
173
197
|
<span class="cline-any cline-neutral"> </span>
|
|
174
198
|
<span class="cline-any cline-yes">6x</span>
|
|
175
199
|
<span class="cline-any cline-yes">1x</span>
|
|
@@ -177,6 +201,8 @@
|
|
|
177
201
|
<span class="cline-any cline-yes">1x</span>
|
|
178
202
|
<span class="cline-any cline-yes">1x</span>
|
|
179
203
|
<span class="cline-any cline-yes">1x</span>
|
|
204
|
+
<span class="cline-any cline-yes">1x</span>
|
|
205
|
+
<span class="cline-any cline-yes">1x</span>
|
|
180
206
|
<span class="cline-any cline-neutral"> </span>
|
|
181
207
|
<span class="cline-any cline-yes">1x</span>
|
|
182
208
|
<span class="cline-any cline-yes">1x</span>
|
|
@@ -206,38 +232,51 @@ export const nestedWorkspaces = createRuleFactory({
|
|
|
206
232
|
const rootPackageJson = context.getWorkspaceContext().getPackageJson();
|
|
207
233
|
|
|
208
234
|
// Expand a set of globs covering all package.json files in the entire repo (except the root)
|
|
209
|
-
const packageJsonPaths = globby.globbySync([
|
|
235
|
+
const packageJsonPaths = globby.globbySync([
|
|
236
|
+
"*/**/package.json",
|
|
237
|
+
"!**/node_modules/**",
|
|
238
|
+
]);
|
|
210
239
|
|
|
211
240
|
const workspaces = Array.isArray(rootPackageJson.workspaces<span class="branch-0 cbranch-no" title="branch not covered" >)</span>
|
|
212
241
|
<span class="cstat-no" title="statement not covered" > ? rootPackageJson.workspaces</span>
|
|
213
242
|
: rootPackageJson.workspaces !== undefined
|
|
214
|
-
|
|
215
|
-
|
|
243
|
+
? rootPackageJson.workspaces.packages
|
|
244
|
+
: undefined;
|
|
216
245
|
|
|
217
246
|
if (workspaces === undefined && packageJsonPaths.length > 0) {
|
|
218
247
|
context.addError({
|
|
219
248
|
file: context.getPackageJsonPath(),
|
|
220
|
-
message:
|
|
249
|
+
message:
|
|
250
|
+
"The \"workspace\" field is missing, even though there are workspaces in the repository.",
|
|
221
251
|
});
|
|
222
252
|
return;
|
|
223
253
|
}
|
|
224
254
|
|
|
225
255
|
// Build a set of globs for each package.json that exists in packages specified by a workspace.
|
|
226
|
-
const workspacePackageJsons = (workspaces || []).map((item) =>
|
|
256
|
+
const workspacePackageJsons = (workspaces || []).map((item) =>
|
|
257
|
+
`${item}/package.json`
|
|
258
|
+
);
|
|
227
259
|
|
|
228
260
|
// Expand the globs to get an array of all package.json files that are in packages specified by a workspace.
|
|
229
|
-
const expandedWorkspacesGlobs = globby.globbySync([
|
|
261
|
+
const expandedWorkspacesGlobs = globby.globbySync([
|
|
262
|
+
...workspacePackageJsons,
|
|
263
|
+
"!**/node_modules/**",
|
|
264
|
+
]);
|
|
230
265
|
|
|
231
266
|
// Ensure there are no package.jsons which are not included in the globbed workspaces set
|
|
232
|
-
const difference = packageJsonPaths.filter((packageJsonPath) =>
|
|
267
|
+
const difference = packageJsonPaths.filter((packageJsonPath) =>
|
|
268
|
+
!expandedWorkspacesGlobs.includes(packageJsonPath)
|
|
269
|
+
);
|
|
233
270
|
|
|
234
271
|
if (difference.length !== 0) {
|
|
235
|
-
const differencesList = difference.map((packageJsonPath) =>
|
|
272
|
+
const differencesList = difference.map((packageJsonPath) =>
|
|
273
|
+
path.dirname(packageJsonPath)
|
|
274
|
+
).join(", ");
|
|
236
275
|
context.addError({
|
|
237
276
|
file: context.getPackageJsonPath(),
|
|
238
277
|
message:
|
|
239
|
-
`The "workspace" field is missing one or more values: ${differencesList}. `
|
|
240
|
-
|
|
278
|
+
`The "workspace" field is missing one or more values: ${differencesList}. `
|
|
279
|
+
+ "You may be able to use a glob to avoid listing each workspace individually, e.g. \"packages/nested-workspace/*\".",
|
|
241
280
|
});
|
|
242
281
|
}
|
|
243
282
|
},
|
|
@@ -250,7 +289,7 @@ export const nestedWorkspaces = createRuleFactory({
|
|
|
250
289
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
251
290
|
Code coverage generated by
|
|
252
291
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
253
|
-
at 2025-01-
|
|
292
|
+
at 2025-01-22T17:39:11.886Z
|
|
254
293
|
</div>
|
|
255
294
|
<script src="../prettify.js"></script>
|
|
256
295
|
<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'>82/82</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'>82/82</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -153,17 +153,24 @@
|
|
|
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
|
-
<
|
|
160
|
-
<
|
|
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></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
161
164
|
<span class="cline-any cline-neutral"> </span>
|
|
162
165
|
<span class="cline-any cline-neutral"> </span>
|
|
163
166
|
<span class="cline-any cline-neutral"> </span>
|
|
164
167
|
<span class="cline-any cline-neutral"> </span>
|
|
165
168
|
<span class="cline-any cline-neutral"> </span>
|
|
166
169
|
<span class="cline-any cline-neutral"> </span>
|
|
170
|
+
<span class="cline-any cline-yes">1x</span>
|
|
171
|
+
<span class="cline-any cline-yes">1x</span>
|
|
172
|
+
<span class="cline-any cline-yes">1x</span>
|
|
173
|
+
<span class="cline-any cline-yes">1x</span>
|
|
167
174
|
<span class="cline-any cline-neutral"> </span>
|
|
168
175
|
<span class="cline-any cline-yes">1x</span>
|
|
169
176
|
<span class="cline-any cline-yes">1x</span>
|
|
@@ -204,6 +211,9 @@
|
|
|
204
211
|
<span class="cline-any cline-yes">8x</span>
|
|
205
212
|
<span class="cline-any cline-yes">8x</span>
|
|
206
213
|
<span class="cline-any cline-yes">8x</span>
|
|
214
|
+
<span class="cline-any cline-yes">8x</span>
|
|
215
|
+
<span class="cline-any cline-yes">8x</span>
|
|
216
|
+
<span class="cline-any cline-yes">8x</span>
|
|
207
217
|
<span class="cline-any cline-yes">6x</span>
|
|
208
218
|
<span class="cline-any cline-yes">6x</span>
|
|
209
219
|
<span class="cline-any cline-yes">8x</span>
|
|
@@ -219,6 +229,10 @@
|
|
|
219
229
|
<span class="cline-any cline-yes">6x</span>
|
|
220
230
|
<span class="cline-any cline-yes">6x</span>
|
|
221
231
|
<span class="cline-any cline-yes">6x</span>
|
|
232
|
+
<span class="cline-any cline-yes">6x</span>
|
|
233
|
+
<span class="cline-any cline-yes">6x</span>
|
|
234
|
+
<span class="cline-any cline-yes">6x</span>
|
|
235
|
+
<span class="cline-any cline-yes">6x</span>
|
|
222
236
|
<span class="cline-any cline-yes">8x</span>
|
|
223
237
|
<span class="cline-any cline-yes">8x</span>
|
|
224
238
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -263,7 +277,7 @@ export const Options = r.Union(
|
|
|
263
277
|
.And(
|
|
264
278
|
r.Partial({
|
|
265
279
|
entriesExist: r.Undefined,
|
|
266
|
-
})
|
|
280
|
+
}),
|
|
267
281
|
),
|
|
268
282
|
r
|
|
269
283
|
.Record({
|
|
@@ -272,12 +286,12 @@ export const Options = r.Union(
|
|
|
272
286
|
.And(
|
|
273
287
|
r.Partial({
|
|
274
288
|
entries: r.Undefined,
|
|
275
|
-
})
|
|
289
|
+
}),
|
|
276
290
|
),
|
|
277
291
|
r.Record({
|
|
278
292
|
entries: r.Dictionary(r.Unknown), // string => unknown, enforces existence of keys and their values
|
|
279
293
|
entriesExist: r.Array(r.String),
|
|
280
|
-
})
|
|
294
|
+
}),
|
|
281
295
|
);
|
|
282
296
|
|
|
283
297
|
export type Options = r.Static<typeof Options>;
|
|
@@ -291,21 +305,28 @@ export const packageEntry = createRuleFactory<Options>({
|
|
|
291
305
|
for (const key of Object.keys(options.entries)) {
|
|
292
306
|
const value = options.entries[key];
|
|
293
307
|
|
|
294
|
-
const entryDiff = diff(
|
|
308
|
+
const entryDiff = diff(
|
|
309
|
+
JSON.stringify(value) + "\n",
|
|
310
|
+
(JSON.stringify(packageJson[key]) || "") + "\n",
|
|
311
|
+
);
|
|
295
312
|
if (
|
|
296
|
-
(typeof value !== "object" && value !== packageJson[key])
|
|
297
|
-
entryDiff == null
|
|
298
|
-
!entryDiff.includes("Compared values have no visual difference")
|
|
313
|
+
(typeof value !== "object" && value !== packageJson[key])
|
|
314
|
+
|| entryDiff == null
|
|
315
|
+
|| !entryDiff.includes("Compared values have no visual difference")
|
|
299
316
|
) {
|
|
300
317
|
context.addError({
|
|
301
318
|
file: context.getPackageJsonPath(),
|
|
302
319
|
message: createStandardizedEntryErrorMessage(key),
|
|
303
320
|
longMessage: entryDiff,
|
|
304
321
|
fixer: () => {
|
|
305
|
-
mutateJson<PackageJson>(
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
322
|
+
mutateJson<PackageJson>(
|
|
323
|
+
context.getPackageJsonPath(),
|
|
324
|
+
context.host,
|
|
325
|
+
(input) => {
|
|
326
|
+
input[key] = value;
|
|
327
|
+
return input;
|
|
328
|
+
},
|
|
329
|
+
);
|
|
309
330
|
},
|
|
310
331
|
});
|
|
311
332
|
}
|
|
@@ -340,7 +361,7 @@ export function createExpectedEntryErrorMessage(key: string) {
|
|
|
340
361
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
341
362
|
Code coverage generated by
|
|
342
363
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
343
|
-
at 2025-01-
|
|
364
|
+
at 2025-01-22T17:39:11.886Z
|
|
344
365
|
</div>
|
|
345
366
|
<script src="../prettify.js"></script>
|
|
346
367
|
<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">99% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>99/100</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">99% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>99/100</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -186,10 +186,13 @@
|
|
|
186
186
|
<a name='L121'></a><a href='#L121'>121</a>
|
|
187
187
|
<a name='L122'></a><a href='#L122'>122</a>
|
|
188
188
|
<a name='L123'></a><a href='#L123'>123</a>
|
|
189
|
-
<a name='L124'></a><a href='#L124'>124</a
|
|
190
|
-
<
|
|
191
|
-
<
|
|
192
|
-
<
|
|
189
|
+
<a name='L124'></a><a href='#L124'>124</a>
|
|
190
|
+
<a name='L125'></a><a href='#L125'>125</a>
|
|
191
|
+
<a name='L126'></a><a href='#L126'>126</a>
|
|
192
|
+
<a name='L127'></a><a href='#L127'>127</a>
|
|
193
|
+
<a name='L128'></a><a href='#L128'>128</a>
|
|
194
|
+
<a name='L129'></a><a href='#L129'>129</a>
|
|
195
|
+
<a name='L130'></a><a href='#L130'>130</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
193
196
|
<span class="cline-any cline-neutral"> </span>
|
|
194
197
|
<span class="cline-any cline-neutral"> </span>
|
|
195
198
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -197,6 +200,9 @@
|
|
|
197
200
|
<span class="cline-any cline-neutral"> </span>
|
|
198
201
|
<span class="cline-any cline-neutral"> </span>
|
|
199
202
|
<span class="cline-any cline-neutral"> </span>
|
|
203
|
+
<span class="cline-any cline-yes">1x</span>
|
|
204
|
+
<span class="cline-any cline-yes">1x</span>
|
|
205
|
+
<span class="cline-any cline-yes">1x</span>
|
|
200
206
|
<span class="cline-any cline-neutral"> </span>
|
|
201
207
|
<span class="cline-any cline-neutral"> </span>
|
|
202
208
|
<span class="cline-any cline-yes">1x</span>
|
|
@@ -246,8 +252,12 @@
|
|
|
246
252
|
<span class="cline-any cline-yes">8x</span>
|
|
247
253
|
<span class="cline-any cline-neutral"> </span>
|
|
248
254
|
<span class="cline-any cline-yes">8x</span>
|
|
255
|
+
<span class="cline-any cline-no"> </span>
|
|
256
|
+
<span class="cline-any cline-yes">8x</span>
|
|
249
257
|
<span class="cline-any cline-neutral"> </span>
|
|
250
258
|
<span class="cline-any cline-yes">8x</span>
|
|
259
|
+
<span class="cline-any cline-yes">2x</span>
|
|
260
|
+
<span class="cline-any cline-yes">6x</span>
|
|
251
261
|
<span class="cline-any cline-neutral"> </span>
|
|
252
262
|
<span class="cline-any cline-yes">8x</span>
|
|
253
263
|
<span class="cline-any cline-yes">8x</span>
|
|
@@ -309,6 +319,8 @@
|
|
|
309
319
|
<span class="cline-any cline-yes">8x</span>
|
|
310
320
|
<span class="cline-any cline-yes">8x</span>
|
|
311
321
|
<span class="cline-any cline-yes">8x</span>
|
|
322
|
+
<span class="cline-any cline-yes">8x</span>
|
|
323
|
+
<span class="cline-any cline-yes">8x</span>
|
|
312
324
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">/*!
|
|
313
325
|
* Copyright 2019 Palantir Technologies, Inc.
|
|
314
326
|
*
|
|
@@ -368,9 +380,13 @@ export const packageOrder = createRuleFactory<Options>({
|
|
|
368
380
|
const packageJson = context.getPackageJson();
|
|
369
381
|
const packagePath = context.getPackageJsonPath();
|
|
370
382
|
|
|
371
|
-
const order: string[] | OrderFunction = opts === <span class="branch-0 cbranch-no" title="branch not covered" >undefined
|
|
383
|
+
const order: string[] | OrderFunction = opts === <span class="branch-0 cbranch-no" title="branch not covered" >undefined</span>
|
|
384
|
+
<span class="cstat-no" title="statement not covered" > ? defaultKeyOrder</span>
|
|
385
|
+
: opts.order;
|
|
372
386
|
|
|
373
|
-
const comparator = isOrderFunction(order)
|
|
387
|
+
const comparator = isOrderFunction(order)
|
|
388
|
+
? order(context)
|
|
389
|
+
: createComparator(order);
|
|
374
390
|
|
|
375
391
|
const actualOrder = Object.keys(packageJson);
|
|
376
392
|
const expectedOrder = actualOrder.slice().sort(comparator); // sort mutates, so we need to copy the previous result
|
|
@@ -429,7 +445,9 @@ function createComparator(order: ReadonlyArray<string>) {
|
|
|
429
445
|
};
|
|
430
446
|
}
|
|
431
447
|
|
|
432
|
-
function isOrderFunction(
|
|
448
|
+
function isOrderFunction(
|
|
449
|
+
order: ReadonlyArray<string> | OrderFunction,
|
|
450
|
+
): order is OrderFunction {
|
|
433
451
|
return !Array.isArray(order);
|
|
434
452
|
}
|
|
435
453
|
</pre></td></tr></table></pre>
|
|
@@ -439,7 +457,7 @@ function isOrderFunction(order: ReadonlyArray<string> | OrderFunction): or
|
|
|
439
457
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
440
458
|
Code coverage generated by
|
|
441
459
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
442
|
-
at 2025-01-
|
|
460
|
+
at 2025-01-22T17:39:11.886Z
|
|
443
461
|
</div>
|
|
444
462
|
<script src="../prettify.js"></script>
|
|
445
463
|
<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'>100/100</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'>100/100</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -162,17 +162,35 @@
|
|
|
162
162
|
<a name='L97'></a><a href='#L97'>97</a>
|
|
163
163
|
<a name='L98'></a><a href='#L98'>98</a>
|
|
164
164
|
<a name='L99'></a><a href='#L99'>99</a>
|
|
165
|
-
<a name='L100'></a><a href='#L100'>100</a
|
|
166
|
-
<
|
|
167
|
-
<
|
|
168
|
-
<
|
|
169
|
-
<
|
|
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>
|
|
170
|
+
<a name='L105'></a><a href='#L105'>105</a>
|
|
171
|
+
<a name='L106'></a><a href='#L106'>106</a>
|
|
172
|
+
<a name='L107'></a><a href='#L107'>107</a>
|
|
173
|
+
<a name='L108'></a><a href='#L108'>108</a>
|
|
174
|
+
<a name='L109'></a><a href='#L109'>109</a>
|
|
175
|
+
<a name='L110'></a><a href='#L110'>110</a>
|
|
176
|
+
<a name='L111'></a><a href='#L111'>111</a>
|
|
177
|
+
<a name='L112'></a><a href='#L112'>112</a>
|
|
178
|
+
<a name='L113'></a><a href='#L113'>113</a>
|
|
179
|
+
<a name='L114'></a><a href='#L114'>114</a>
|
|
180
|
+
<a name='L115'></a><a href='#L115'>115</a>
|
|
181
|
+
<a name='L116'></a><a href='#L116'>116</a>
|
|
182
|
+
<a name='L117'></a><a href='#L117'>117</a>
|
|
183
|
+
<a name='L118'></a><a href='#L118'>118</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
170
184
|
<span class="cline-any cline-neutral"> </span>
|
|
171
185
|
<span class="cline-any cline-neutral"> </span>
|
|
172
186
|
<span class="cline-any cline-neutral"> </span>
|
|
173
187
|
<span class="cline-any cline-neutral"> </span>
|
|
174
188
|
<span class="cline-any cline-neutral"> </span>
|
|
175
189
|
<span class="cline-any cline-neutral"> </span>
|
|
190
|
+
<span class="cline-any cline-yes">1x</span>
|
|
191
|
+
<span class="cline-any cline-yes">1x</span>
|
|
192
|
+
<span class="cline-any cline-yes">1x</span>
|
|
193
|
+
<span class="cline-any cline-yes">1x</span>
|
|
176
194
|
<span class="cline-any cline-neutral"> </span>
|
|
177
195
|
<span class="cline-any cline-yes">1x</span>
|
|
178
196
|
<span class="cline-any cline-yes">1x</span>
|
|
@@ -204,6 +222,10 @@
|
|
|
204
222
|
<span class="cline-any cline-yes">2x</span>
|
|
205
223
|
<span class="cline-any cline-yes">2x</span>
|
|
206
224
|
<span class="cline-any cline-yes">2x</span>
|
|
225
|
+
<span class="cline-any cline-yes">2x</span>
|
|
226
|
+
<span class="cline-any cline-yes">2x</span>
|
|
227
|
+
<span class="cline-any cline-yes">2x</span>
|
|
228
|
+
<span class="cline-any cline-yes">2x</span>
|
|
207
229
|
<span class="cline-any cline-yes">4x</span>
|
|
208
230
|
<span class="cline-any cline-yes">4x</span>
|
|
209
231
|
<span class="cline-any cline-yes">4x</span>
|
|
@@ -224,15 +246,24 @@
|
|
|
224
246
|
<span class="cline-any cline-yes">14x</span>
|
|
225
247
|
<span class="cline-any cline-yes">14x</span>
|
|
226
248
|
<span class="cline-any cline-yes">8x</span>
|
|
249
|
+
<span class="cline-any cline-yes">6x</span>
|
|
227
250
|
<span class="cline-any cline-yes">8x</span>
|
|
228
251
|
<span class="cline-any cline-yes">8x</span>
|
|
229
252
|
<span class="cline-any cline-neutral"> </span>
|
|
230
253
|
<span class="cline-any cline-yes">12x</span>
|
|
231
254
|
<span class="cline-any cline-neutral"> </span>
|
|
232
255
|
<span class="cline-any cline-yes">12x</span>
|
|
256
|
+
<span class="cline-any cline-yes">12x</span>
|
|
257
|
+
<span class="cline-any cline-yes">10x</span>
|
|
258
|
+
<span class="cline-any cline-yes">12x</span>
|
|
233
259
|
<span class="cline-any cline-yes">10x</span>
|
|
234
260
|
<span class="cline-any cline-neutral"> </span>
|
|
235
261
|
<span class="cline-any cline-yes">10x</span>
|
|
262
|
+
<span class="cline-any cline-yes">10x</span>
|
|
263
|
+
<span class="cline-any cline-yes">10x</span>
|
|
264
|
+
<span class="cline-any cline-yes">8x</span>
|
|
265
|
+
<span class="cline-any cline-yes">8x</span>
|
|
266
|
+
<span class="cline-any cline-yes">8x</span>
|
|
236
267
|
<span class="cline-any cline-yes">8x</span>
|
|
237
268
|
<span class="cline-any cline-yes">8x</span>
|
|
238
269
|
<span class="cline-any cline-yes">8x</span>
|
|
@@ -245,6 +276,7 @@
|
|
|
245
276
|
<span class="cline-any cline-yes">8x</span>
|
|
246
277
|
<span class="cline-any cline-yes">8x</span>
|
|
247
278
|
<span class="cline-any cline-yes">8x</span>
|
|
279
|
+
<span class="cline-any cline-yes">8x</span>
|
|
248
280
|
<span class="cline-any cline-neutral"> </span>
|
|
249
281
|
<span class="cline-any cline-yes">10x</span>
|
|
250
282
|
<span class="cline-any cline-yes">10x</span>
|
|
@@ -257,6 +289,10 @@
|
|
|
257
289
|
<span class="cline-any cline-yes">10x</span>
|
|
258
290
|
<span class="cline-any cline-yes">10x</span>
|
|
259
291
|
<span class="cline-any cline-yes">10x</span>
|
|
292
|
+
<span class="cline-any cline-yes">10x</span>
|
|
293
|
+
<span class="cline-any cline-yes">10x</span>
|
|
294
|
+
<span class="cline-any cline-yes">10x</span>
|
|
295
|
+
<span class="cline-any cline-yes">10x</span>
|
|
260
296
|
<span class="cline-any cline-yes">12x</span>
|
|
261
297
|
<span class="cline-any cline-yes">16x</span>
|
|
262
298
|
<span class="cline-any cline-yes">1x</span>
|
|
@@ -280,8 +316,8 @@ export const Options = r.Record({
|
|
|
280
316
|
r.Record({
|
|
281
317
|
options: r.Array(r.String.Or(r.Undefined)),
|
|
282
318
|
fixValue: r.Union(r.String, r.Undefined, r.Literal(false)).optional(),
|
|
283
|
-
})
|
|
284
|
-
)
|
|
319
|
+
}),
|
|
320
|
+
),
|
|
285
321
|
), // string => string
|
|
286
322
|
});
|
|
287
323
|
|
|
@@ -298,10 +334,14 @@ export const packageScript = createRuleFactory<Options>({
|
|
|
298
334
|
file: context.getPackageJsonPath(),
|
|
299
335
|
message: MSG_NO_SCRIPTS_BLOCK,
|
|
300
336
|
fixer: () => {
|
|
301
|
-
mutateJson<PackageJson>(
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
337
|
+
mutateJson<PackageJson>(
|
|
338
|
+
context.getPackageJsonPath(),
|
|
339
|
+
context.host,
|
|
340
|
+
(input) => {
|
|
341
|
+
input.scripts = {};
|
|
342
|
+
return input;
|
|
343
|
+
},
|
|
344
|
+
);
|
|
305
345
|
},
|
|
306
346
|
});
|
|
307
347
|
return;
|
|
@@ -322,26 +362,36 @@ export const packageScript = createRuleFactory<Options>({
|
|
|
322
362
|
}
|
|
323
363
|
allowedValues.add(q);
|
|
324
364
|
}
|
|
325
|
-
fixToEmpty = Object.prototype.hasOwnProperty.call(value, "fixValue")
|
|
365
|
+
fixToEmpty = Object.prototype.hasOwnProperty.call(value, "fixValue")
|
|
366
|
+
&& value.fixValue === undefined;
|
|
326
367
|
fixValue = value.fixValue;
|
|
327
368
|
}
|
|
328
369
|
|
|
329
370
|
const actualValue = packageJson.scripts[name];
|
|
330
371
|
|
|
331
|
-
if (
|
|
372
|
+
if (
|
|
373
|
+
!allowedValues.has(actualValue)
|
|
374
|
+
&& !(allowEmpty === true && actualValue === undefined)
|
|
375
|
+
) {
|
|
332
376
|
let fixer;
|
|
333
377
|
|
|
334
|
-
if (
|
|
378
|
+
if (
|
|
379
|
+
fixValue !== false && (fixValue !== undefined || fixToEmpty === true)
|
|
380
|
+
) {
|
|
335
381
|
const q = fixValue;
|
|
336
382
|
fixer = () => {
|
|
337
|
-
mutateJson<PackageJson>(
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
383
|
+
mutateJson<PackageJson>(
|
|
384
|
+
context.getPackageJsonPath(),
|
|
385
|
+
context.host,
|
|
386
|
+
(input) => {
|
|
387
|
+
if (fixToEmpty && q === undefined) {
|
|
388
|
+
delete input.scripts![name];
|
|
389
|
+
} else {
|
|
390
|
+
input.scripts![name] = q!;
|
|
391
|
+
}
|
|
392
|
+
return input;
|
|
393
|
+
},
|
|
394
|
+
);
|
|
345
395
|
};
|
|
346
396
|
}
|
|
347
397
|
|
|
@@ -351,8 +401,12 @@ export const packageScript = createRuleFactory<Options>({
|
|
|
351
401
|
|
|
352
402
|
context.addError({
|
|
353
403
|
file: context.getPackageJsonPath(),
|
|
354
|
-
message:
|
|
355
|
-
|
|
404
|
+
message:
|
|
405
|
+
`Expected standardized script entry for '${name}'. Valid options: ${validOptionsString}`,
|
|
406
|
+
longMessage: diff(
|
|
407
|
+
validOptionsString + "\n",
|
|
408
|
+
(packageJson.scripts[name] || "") + "\n",
|
|
409
|
+
),
|
|
356
410
|
fixer,
|
|
357
411
|
});
|
|
358
412
|
}
|
|
@@ -367,7 +421,7 @@ export const packageScript = createRuleFactory<Options>({
|
|
|
367
421
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
368
422
|
Code coverage generated by
|
|
369
423
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
370
|
-
at 2025-01-
|
|
424
|
+
at 2025-01-22T17:39:11.886Z
|
|
371
425
|
</div>
|
|
372
426
|
<script src="../prettify.js"></script>
|
|
373
427
|
<script>
|