@monorepolint/rules 0.6.0-alpha.2 → 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 +161 -102
- package/.turbo/turbo-transpile-typescript.log +4 -4
- package/CHANGELOG.md +19 -0
- package/build/js/index.js +429 -241
- 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/forceError.d.ts +4 -0
- package/build/types/forceError.d.ts.map +1 -0
- package/build/types/index.d.ts +5 -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/oncePerPackage.d.ts +11 -0
- package/build/types/oncePerPackage.d.ts.map +1 -0
- 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 +1201 -813
- package/coverage/coverage-final.json +20 -18
- package/coverage/index.html +20 -20
- package/coverage/src/alphabeticalDependencies.ts.html +11 -11
- package/coverage/src/alphabeticalScripts.ts.html +5 -5
- package/coverage/src/bannedDependencies.ts.html +76 -28
- package/coverage/src/consistentDependencies.ts.html +51 -18
- package/coverage/src/consistentVersions.ts.html +144 -48
- package/coverage/src/fileContents.ts.html +47 -23
- package/coverage/src/forceError.ts.html +184 -0
- package/coverage/src/index.html +96 -66
- package/coverage/src/index.ts.html +39 -33
- package/coverage/src/mustSatisfyPeerDependencies.ts.html +323 -80
- package/coverage/src/nestedWorkspaces.ts.html +47 -20
- package/coverage/src/oncePerPackage.ts.html +181 -0
- 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 +77 -32
- package/coverage/src/standardTsconfig.ts.html +84 -21
- 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 +94 -19
- 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 +5 -5
- package/src/__tests__/mustSatisfyPeerDependencies.spec.ts +191 -76
- package/src/__tests__/nestedWorkspaces.spec.ts +10 -7
- package/src/__tests__/packageEntry.spec.ts +48 -47
- package/src/__tests__/packageOrder.spec.ts +72 -71
- package/src/__tests__/packageScript.spec.ts +19 -10
- package/src/__tests__/requireDependency.spec.ts +12 -6
- package/src/__tests__/utils.ts +16 -7
- package/src/bannedDependencies.ts +32 -16
- package/src/consistentDependencies.ts +19 -8
- package/src/consistentVersions.ts +70 -38
- package/src/fileContents.ts +19 -11
- package/src/forceError.ts +33 -0
- package/src/index.ts +5 -3
- package/src/mustSatisfyPeerDependencies.ts +141 -60
- package/src/nestedWorkspaces.ts +19 -10
- package/src/oncePerPackage.ts +32 -0
- package/src/packageEntry.ts +18 -11
- package/src/packageOrder.ts +9 -3
- package/src/packageScript.ts +37 -19
- package/src/requireDependency.ts +26 -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 +38 -13
- package/vitest.config.mjs +6 -7
|
@@ -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-31T21:00:08.068Z
|
|
371
425
|
</div>
|
|
372
426
|
<script src="../prettify.js"></script>
|
|
373
427
|
<script>
|
|
@@ -23,16 +23,16 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">90.
|
|
26
|
+
<span class="strong">90.27% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>65/72</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
33
|
<span class="strong">100% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>13/13</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">90.
|
|
47
|
+
<span class="strong">90.27% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>65/72</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -134,11 +134,22 @@
|
|
|
134
134
|
<a name='L69'></a><a href='#L69'>69</a>
|
|
135
135
|
<a name='L70'></a><a href='#L70'>70</a>
|
|
136
136
|
<a name='L71'></a><a href='#L71'>71</a>
|
|
137
|
-
<a name='L72'></a><a href='#L72'>72</a
|
|
138
|
-
<
|
|
139
|
-
<
|
|
140
|
-
<
|
|
141
|
-
<
|
|
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>
|
|
140
|
+
<a name='L75'></a><a href='#L75'>75</a>
|
|
141
|
+
<a name='L76'></a><a href='#L76'>76</a>
|
|
142
|
+
<a name='L77'></a><a href='#L77'>77</a>
|
|
143
|
+
<a name='L78'></a><a href='#L78'>78</a>
|
|
144
|
+
<a name='L79'></a><a href='#L79'>79</a>
|
|
145
|
+
<a name='L80'></a><a href='#L80'>80</a>
|
|
146
|
+
<a name='L81'></a><a href='#L81'>81</a>
|
|
147
|
+
<a name='L82'></a><a href='#L82'>82</a>
|
|
148
|
+
<a name='L83'></a><a href='#L83'>83</a>
|
|
149
|
+
<a name='L84'></a><a href='#L84'>84</a>
|
|
150
|
+
<a name='L85'></a><a href='#L85'>85</a>
|
|
151
|
+
<a name='L86'></a><a href='#L86'>86</a>
|
|
152
|
+
<a name='L87'></a><a href='#L87'>87</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
142
153
|
<span class="cline-any cline-neutral"> </span>
|
|
143
154
|
<span class="cline-any cline-neutral"> </span>
|
|
144
155
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -146,6 +157,10 @@
|
|
|
146
157
|
<span class="cline-any cline-neutral"> </span>
|
|
147
158
|
<span class="cline-any cline-neutral"> </span>
|
|
148
159
|
<span class="cline-any cline-neutral"> </span>
|
|
160
|
+
<span class="cline-any cline-yes">1x</span>
|
|
161
|
+
<span class="cline-any cline-yes">1x</span>
|
|
162
|
+
<span class="cline-any cline-yes">1x</span>
|
|
163
|
+
<span class="cline-any cline-yes">1x</span>
|
|
149
164
|
<span class="cline-any cline-neutral"> </span>
|
|
150
165
|
<span class="cline-any cline-yes">1x</span>
|
|
151
166
|
<span class="cline-any cline-yes">1x</span>
|
|
@@ -169,6 +184,7 @@
|
|
|
169
184
|
<span class="cline-any cline-yes">7x</span>
|
|
170
185
|
<span class="cline-any cline-yes">7x</span>
|
|
171
186
|
<span class="cline-any cline-yes">28x</span>
|
|
187
|
+
<span class="cline-any cline-yes">28x</span>
|
|
172
188
|
<span class="cline-any cline-yes">14x</span>
|
|
173
189
|
<span class="cline-any cline-yes">14x</span>
|
|
174
190
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -182,25 +198,39 @@
|
|
|
182
198
|
<span class="cline-any cline-no"> </span>
|
|
183
199
|
<span class="cline-any cline-no"> </span>
|
|
184
200
|
<span class="cline-any cline-no"> </span>
|
|
201
|
+
<span class="cline-any cline-no"> </span>
|
|
202
|
+
<span class="cline-any cline-no"> </span>
|
|
185
203
|
<span class="cline-any cline-yes">3x</span>
|
|
186
204
|
<span class="cline-any cline-yes">3x</span>
|
|
187
205
|
<span class="cline-any cline-yes">3x</span>
|
|
188
206
|
<span class="cline-any cline-neutral"> </span>
|
|
207
|
+
<span class="cline-any cline-yes">28x</span>
|
|
208
|
+
<span class="cline-any cline-yes">16x</span>
|
|
189
209
|
<span class="cline-any cline-yes">11x</span>
|
|
190
210
|
<span class="cline-any cline-yes">11x</span>
|
|
191
|
-
<span class="cline-any cline-yes">
|
|
192
|
-
<span class="cline-any cline-yes">
|
|
193
|
-
<span class="cline-any cline-yes">
|
|
194
|
-
<span class="cline-any cline-yes">
|
|
195
|
-
<span class="cline-any cline-yes">
|
|
196
|
-
<span class="cline-any cline-yes">
|
|
197
|
-
<span class="cline-any cline-yes">
|
|
198
|
-
<span class="cline-any cline-yes">
|
|
211
|
+
<span class="cline-any cline-yes">11x</span>
|
|
212
|
+
<span class="cline-any cline-yes">11x</span>
|
|
213
|
+
<span class="cline-any cline-yes">11x</span>
|
|
214
|
+
<span class="cline-any cline-yes">11x</span>
|
|
215
|
+
<span class="cline-any cline-yes">11x</span>
|
|
216
|
+
<span class="cline-any cline-yes">11x</span>
|
|
217
|
+
<span class="cline-any cline-yes">5x</span>
|
|
218
|
+
<span class="cline-any cline-yes">5x</span>
|
|
219
|
+
<span class="cline-any cline-yes">5x</span>
|
|
220
|
+
<span class="cline-any cline-yes">5x</span>
|
|
221
|
+
<span class="cline-any cline-yes">5x</span>
|
|
222
|
+
<span class="cline-any cline-yes">1x</span>
|
|
223
|
+
<span class="cline-any cline-yes">1x</span>
|
|
224
|
+
<span class="cline-any cline-yes">5x</span>
|
|
199
225
|
<span class="cline-any cline-yes">4x</span>
|
|
200
226
|
<span class="cline-any cline-yes">4x</span>
|
|
201
|
-
<span class="cline-any cline-yes">
|
|
202
|
-
<span class="cline-any cline-yes">
|
|
227
|
+
<span class="cline-any cline-yes">5x</span>
|
|
228
|
+
<span class="cline-any cline-yes">5x</span>
|
|
229
|
+
<span class="cline-any cline-yes">5x</span>
|
|
230
|
+
<span class="cline-any cline-yes">5x</span>
|
|
231
|
+
<span class="cline-any cline-yes">11x</span>
|
|
203
232
|
<span class="cline-any cline-yes">11x</span>
|
|
233
|
+
<span class="cline-any cline-yes">16x</span>
|
|
204
234
|
<span class="cline-any cline-yes">7x</span>
|
|
205
235
|
<span class="cline-any cline-yes">7x</span>
|
|
206
236
|
<span class="cline-any cline-yes">1x</span>
|
|
@@ -219,10 +249,10 @@ import * as r from "runtypes";
|
|
|
219
249
|
import { createRuleFactory } from "./util/createRuleFactory.js";
|
|
220
250
|
|
|
221
251
|
const Options = r.Partial({
|
|
222
|
-
dependencies: r.Dictionary(r.String),
|
|
223
|
-
devDependencies: r.Dictionary(r.String),
|
|
224
|
-
peerDependencies: r.Dictionary(r.String),
|
|
225
|
-
optionalDependencies: r.Dictionary(r.String),
|
|
252
|
+
dependencies: r.Dictionary(r.String.optional()),
|
|
253
|
+
devDependencies: r.Dictionary(r.String.optional()),
|
|
254
|
+
peerDependencies: r.Dictionary(r.String.optional()),
|
|
255
|
+
optionalDependencies: r.Dictionary(r.String.optional()),
|
|
226
256
|
});
|
|
227
257
|
|
|
228
258
|
type Options = r.Static<typeof Options>;
|
|
@@ -239,7 +269,8 @@ export const requireDependency = createRuleFactory({
|
|
|
239
269
|
"peerDependencies" as const,
|
|
240
270
|
"optionalDependencies" as const,
|
|
241
271
|
].forEach((type) => {
|
|
242
|
-
|
|
272
|
+
const expectedEntries = options[type];
|
|
273
|
+
if (!expectedEntries) {
|
|
243
274
|
return;
|
|
244
275
|
}
|
|
245
276
|
|
|
@@ -249,7 +280,9 @@ export const requireDependency = createRuleFactory({
|
|
|
249
280
|
message: `No ${type} block, cannot add required ${type}.`,
|
|
250
281
|
fixer: <span class="fstat-no" title="function not covered" >() => {</span>
|
|
251
282
|
<span class="cstat-no" title="statement not covered" > mutateJson<PackageJson>(packageJsonPath, context.host, (input) => {</span>
|
|
252
|
-
<span class="cstat-no" title="statement not covered" > input[type] =
|
|
283
|
+
<span class="cstat-no" title="statement not covered" > input[type] = Object.fromEntries(</span>
|
|
284
|
+
<span class="cstat-no" title="statement not covered" > Object.entries(expectedEntries).filter(([, v]) => v !== undefined),</span>
|
|
285
|
+
<span class="cstat-no" title="statement not covered" > ) as Record<string, string>;</span>
|
|
253
286
|
<span class="cstat-no" title="statement not covered" > return input;</span>
|
|
254
287
|
<span class="cstat-no" title="statement not covered" > });</span>
|
|
255
288
|
<span class="cstat-no" title="statement not covered" > },</span>
|
|
@@ -262,12 +295,24 @@ export const requireDependency = createRuleFactory({
|
|
|
262
295
|
context.addError({
|
|
263
296
|
file: packageJsonPath,
|
|
264
297
|
message: `Expected dependency ${dep}@${version}`,
|
|
265
|
-
longMessage: diff(
|
|
298
|
+
longMessage: diff(
|
|
299
|
+
`${dep}@${version}\n`,
|
|
300
|
+
`${dep}@${packageJson[type]![dep] || "missing"}\n`,
|
|
301
|
+
)!,
|
|
266
302
|
fixer: () => {
|
|
267
|
-
mutateJson<PackageJson>(
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
303
|
+
mutateJson<PackageJson>(
|
|
304
|
+
packageJsonPath,
|
|
305
|
+
context.host,
|
|
306
|
+
(input) => {
|
|
307
|
+
if (version === undefined) {
|
|
308
|
+
input[type] = { ...input[type] };
|
|
309
|
+
delete input[type][dep];
|
|
310
|
+
} else {
|
|
311
|
+
input[type] = { ...input[type], [dep]: version };
|
|
312
|
+
}
|
|
313
|
+
return input;
|
|
314
|
+
},
|
|
315
|
+
);
|
|
271
316
|
},
|
|
272
317
|
});
|
|
273
318
|
}
|
|
@@ -283,7 +328,7 @@ export const requireDependency = createRuleFactory({
|
|
|
283
328
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
284
329
|
Code coverage generated by
|
|
285
330
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
286
|
-
at 2025-01-
|
|
331
|
+
at 2025-01-31T21:00:08.068Z
|
|
287
332
|
</div>
|
|
288
333
|
<script src="../prettify.js"></script>
|
|
289
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
|
|
|
@@ -198,15 +198,28 @@
|
|
|
198
198
|
<a name='L133'></a><a href='#L133'>133</a>
|
|
199
199
|
<a name='L134'></a><a href='#L134'>134</a>
|
|
200
200
|
<a name='L135'></a><a href='#L135'>135</a>
|
|
201
|
-
<a name='L136'></a><a href='#L136'>136</a
|
|
202
|
-
<
|
|
203
|
-
<
|
|
204
|
-
<
|
|
205
|
-
<
|
|
206
|
-
<
|
|
207
|
-
<
|
|
208
|
-
<
|
|
209
|
-
<
|
|
201
|
+
<a name='L136'></a><a href='#L136'>136</a>
|
|
202
|
+
<a name='L137'></a><a href='#L137'>137</a>
|
|
203
|
+
<a name='L138'></a><a href='#L138'>138</a>
|
|
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>
|
|
208
|
+
<a name='L143'></a><a href='#L143'>143</a>
|
|
209
|
+
<a name='L144'></a><a href='#L144'>144</a>
|
|
210
|
+
<a name='L145'></a><a href='#L145'>145</a>
|
|
211
|
+
<a name='L146'></a><a href='#L146'>146</a>
|
|
212
|
+
<a name='L147'></a><a href='#L147'>147</a>
|
|
213
|
+
<a name='L148'></a><a href='#L148'>148</a>
|
|
214
|
+
<a name='L149'></a><a href='#L149'>149</a>
|
|
215
|
+
<a name='L150'></a><a href='#L150'>150</a>
|
|
216
|
+
<a name='L151'></a><a href='#L151'>151</a>
|
|
217
|
+
<a name='L152'></a><a href='#L152'>152</a>
|
|
218
|
+
<a name='L153'></a><a href='#L153'>153</a>
|
|
219
|
+
<a name='L154'></a><a href='#L154'>154</a>
|
|
220
|
+
<a name='L155'></a><a href='#L155'>155</a>
|
|
221
|
+
<a name='L156'></a><a href='#L156'>156</a>
|
|
222
|
+
<a name='L157'></a><a href='#L157'>157</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
210
223
|
<span class="cline-any cline-neutral"> </span>
|
|
211
224
|
<span class="cline-any cline-yes">1x</span>
|
|
212
225
|
<span class="cline-any cline-yes">1x</span>
|
|
@@ -333,6 +346,35 @@
|
|
|
333
346
|
<span class="cline-any cline-yes">1x</span>
|
|
334
347
|
<span class="cline-any cline-yes">1x</span>
|
|
335
348
|
<span class="cline-any cline-yes">1x</span>
|
|
349
|
+
<span class="cline-any cline-yes">1x</span>
|
|
350
|
+
<span class="cline-any cline-yes">1x</span>
|
|
351
|
+
<span class="cline-any cline-yes">1x</span>
|
|
352
|
+
<span class="cline-any cline-yes">1x</span>
|
|
353
|
+
<span class="cline-any cline-yes">1x</span>
|
|
354
|
+
<span class="cline-any cline-yes">1x</span>
|
|
355
|
+
<span class="cline-any cline-yes">1x</span>
|
|
356
|
+
<span class="cline-any cline-yes">1x</span>
|
|
357
|
+
<span class="cline-any cline-yes">1x</span>
|
|
358
|
+
<span class="cline-any cline-yes">1x</span>
|
|
359
|
+
<span class="cline-any cline-yes">1x</span>
|
|
360
|
+
<span class="cline-any cline-yes">1x</span>
|
|
361
|
+
<span class="cline-any cline-yes">1x</span>
|
|
362
|
+
<span class="cline-any cline-yes">1x</span>
|
|
363
|
+
<span class="cline-any cline-yes">1x</span>
|
|
364
|
+
<span class="cline-any cline-yes">1x</span>
|
|
365
|
+
<span class="cline-any cline-yes">1x</span>
|
|
366
|
+
<span class="cline-any cline-yes">1x</span>
|
|
367
|
+
<span class="cline-any cline-yes">1x</span>
|
|
368
|
+
<span class="cline-any cline-yes">1x</span>
|
|
369
|
+
<span class="cline-any cline-yes">1x</span>
|
|
370
|
+
<span class="cline-any cline-yes">1x</span>
|
|
371
|
+
<span class="cline-any cline-yes">1x</span>
|
|
372
|
+
<span class="cline-any cline-yes">1x</span>
|
|
373
|
+
<span class="cline-any cline-yes">1x</span>
|
|
374
|
+
<span class="cline-any cline-yes">1x</span>
|
|
375
|
+
<span class="cline-any cline-yes">1x</span>
|
|
376
|
+
<span class="cline-any cline-yes">1x</span>
|
|
377
|
+
<span class="cline-any cline-yes">1x</span>
|
|
336
378
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">/*!
|
|
337
379
|
* Copyright 2019 Palantir Technologies, Inc.
|
|
338
380
|
*
|
|
@@ -419,11 +461,23 @@ function getGenerator(context: Context, opts: Options) {
|
|
|
419
461
|
} else if (opts.templateFile) {
|
|
420
462
|
const { packageDir: workspacePackageDir } = context.getWorkspaceContext();
|
|
421
463
|
const fullPath = path.resolve(workspacePackageDir, opts.templateFile);
|
|
422
|
-
const template = JSON.parse(
|
|
464
|
+
const template = JSON.parse(
|
|
465
|
+
context.host.readFile(fullPath, { encoding: "utf-8" }),
|
|
466
|
+
);
|
|
423
467
|
|
|
424
|
-
return makeGenerator(
|
|
468
|
+
return makeGenerator(
|
|
469
|
+
template,
|
|
470
|
+
opts.excludedReferences,
|
|
471
|
+
opts.additionalReferences,
|
|
472
|
+
opts.tsconfigReferenceFile,
|
|
473
|
+
);
|
|
425
474
|
} else if (opts.template) {
|
|
426
|
-
return makeGenerator(
|
|
475
|
+
return makeGenerator(
|
|
476
|
+
opts.template,
|
|
477
|
+
opts.excludedReferences,
|
|
478
|
+
opts.additionalReferences,
|
|
479
|
+
opts.tsconfigReferenceFile,
|
|
480
|
+
);
|
|
427
481
|
} else {
|
|
428
482
|
throw new Error("Unable to make generator");
|
|
429
483
|
}
|
|
@@ -434,7 +488,7 @@ function makeGenerator(
|
|
|
434
488
|
template: any,
|
|
435
489
|
excludedReferences: ReadonlyArray<string> | undefined,
|
|
436
490
|
additionalReferences: ReadonlyArray<string> | undefined,
|
|
437
|
-
tsconfigReferenceFile?: string
|
|
491
|
+
tsconfigReferenceFile?: string,
|
|
438
492
|
) {
|
|
439
493
|
return async function generator(context: Context) {
|
|
440
494
|
template = {
|
|
@@ -442,15 +496,24 @@ function makeGenerator(
|
|
|
442
496
|
references: [],
|
|
443
497
|
}; // make a copy and ensure we have a references array
|
|
444
498
|
|
|
445
|
-
const nameToDirectory = await context.getWorkspaceContext()
|
|
499
|
+
const nameToDirectory = await context.getWorkspaceContext()
|
|
500
|
+
.getPackageNameToDir();
|
|
446
501
|
|
|
447
502
|
const packageJson = context.getPackageJson();
|
|
448
|
-
const deps = [
|
|
503
|
+
const deps = [
|
|
504
|
+
...Object.keys(packageJson.dependencies || {}),
|
|
505
|
+
...Object.keys(packageJson.devDependencies || {}),
|
|
506
|
+
];
|
|
449
507
|
for (const dep of deps) {
|
|
450
508
|
const packageDir = nameToDirectory.get(dep);
|
|
451
|
-
if (
|
|
452
|
-
|
|
453
|
-
|
|
509
|
+
if (
|
|
510
|
+
packageDir !== undefined
|
|
511
|
+
&& (excludedReferences === undefined
|
|
512
|
+
|| !matchesAnyGlob(dep, excludedReferences))
|
|
513
|
+
) {
|
|
514
|
+
const absoluteReferencePath = tsconfigReferenceFile !== undefined
|
|
515
|
+
? path.join(packageDir, tsconfigReferenceFile)
|
|
516
|
+
: packageDir;
|
|
454
517
|
template.references.push({
|
|
455
518
|
path: path.relative(context.packageDir, absoluteReferencePath),
|
|
456
519
|
});
|
|
@@ -475,7 +538,7 @@ function makeGenerator(
|
|
|
475
538
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
476
539
|
Code coverage generated by
|
|
477
540
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
478
|
-
at 2025-01-
|
|
541
|
+
at 2025-01-31T21:00:08.068Z
|
|
479
542
|
</div>
|
|
480
543
|
<script src="../prettify.js"></script>
|
|
481
544
|
<script>
|