@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.
Files changed (85) hide show
  1. package/.turbo/turbo-clean.log +1 -1
  2. package/.turbo/turbo-compile-typescript.log +1 -1
  3. package/.turbo/turbo-lint.log +1 -1
  4. package/.turbo/turbo-test.log +161 -102
  5. package/.turbo/turbo-transpile-typescript.log +4 -4
  6. package/CHANGELOG.md +19 -0
  7. package/build/js/index.js +429 -241
  8. package/build/js/index.js.map +1 -1
  9. package/build/tsconfig.tsbuildinfo +1 -1
  10. package/build/types/__tests__/utils.d.ts +0 -1
  11. package/build/types/__tests__/utils.d.ts.map +1 -1
  12. package/build/types/bannedDependencies.d.ts.map +1 -1
  13. package/build/types/fileContents.d.ts.map +1 -1
  14. package/build/types/forceError.d.ts +4 -0
  15. package/build/types/forceError.d.ts.map +1 -0
  16. package/build/types/index.d.ts +5 -3
  17. package/build/types/index.d.ts.map +1 -1
  18. package/build/types/mustSatisfyPeerDependencies.d.ts.map +1 -1
  19. package/build/types/nestedWorkspaces.d.ts.map +1 -1
  20. package/build/types/oncePerPackage.d.ts +11 -0
  21. package/build/types/oncePerPackage.d.ts.map +1 -0
  22. package/build/types/packageEntry.d.ts.map +1 -1
  23. package/build/types/packageOrder.d.ts.map +1 -1
  24. package/build/types/packageScript.d.ts.map +1 -1
  25. package/build/types/requireDependency.d.ts +12 -12
  26. package/build/types/requireDependency.d.ts.map +1 -1
  27. package/build/types/util/checkAlpha.d.ts.map +1 -1
  28. package/build/types/util/createRuleFactory.d.ts.map +1 -1
  29. package/build/types/util/packageDependencyGraphService.d.ts.map +1 -1
  30. package/coverage/clover.xml +1201 -813
  31. package/coverage/coverage-final.json +20 -18
  32. package/coverage/index.html +20 -20
  33. package/coverage/src/alphabeticalDependencies.ts.html +11 -11
  34. package/coverage/src/alphabeticalScripts.ts.html +5 -5
  35. package/coverage/src/bannedDependencies.ts.html +76 -28
  36. package/coverage/src/consistentDependencies.ts.html +51 -18
  37. package/coverage/src/consistentVersions.ts.html +144 -48
  38. package/coverage/src/fileContents.ts.html +47 -23
  39. package/coverage/src/forceError.ts.html +184 -0
  40. package/coverage/src/index.html +96 -66
  41. package/coverage/src/index.ts.html +39 -33
  42. package/coverage/src/mustSatisfyPeerDependencies.ts.html +323 -80
  43. package/coverage/src/nestedWorkspaces.ts.html +47 -20
  44. package/coverage/src/oncePerPackage.ts.html +181 -0
  45. package/coverage/src/packageEntry.ts.html +40 -19
  46. package/coverage/src/packageOrder.ts.html +30 -12
  47. package/coverage/src/packageScript.ts.html +81 -27
  48. package/coverage/src/requireDependency.ts.html +77 -32
  49. package/coverage/src/standardTsconfig.ts.html +84 -21
  50. package/coverage/src/util/checkAlpha.ts.html +18 -9
  51. package/coverage/src/util/createRuleFactory.ts.html +16 -4
  52. package/coverage/src/util/index.html +17 -17
  53. package/coverage/src/util/makeDirectory.ts.html +5 -5
  54. package/coverage/src/util/packageDependencyGraphService.ts.html +94 -19
  55. package/package.json +4 -5
  56. package/src/__tests__/alphabeticalScripts.spec.ts +12 -4
  57. package/src/__tests__/bannedDependencies.spec.ts +45 -16
  58. package/src/__tests__/consistentDependencies.spec.ts +11 -5
  59. package/src/__tests__/consistentVersions.spec.ts +72 -18
  60. package/src/__tests__/fileContents.spec.ts +5 -5
  61. package/src/__tests__/mustSatisfyPeerDependencies.spec.ts +191 -76
  62. package/src/__tests__/nestedWorkspaces.spec.ts +10 -7
  63. package/src/__tests__/packageEntry.spec.ts +48 -47
  64. package/src/__tests__/packageOrder.spec.ts +72 -71
  65. package/src/__tests__/packageScript.spec.ts +19 -10
  66. package/src/__tests__/requireDependency.spec.ts +12 -6
  67. package/src/__tests__/utils.ts +16 -7
  68. package/src/bannedDependencies.ts +32 -16
  69. package/src/consistentDependencies.ts +19 -8
  70. package/src/consistentVersions.ts +70 -38
  71. package/src/fileContents.ts +19 -11
  72. package/src/forceError.ts +33 -0
  73. package/src/index.ts +5 -3
  74. package/src/mustSatisfyPeerDependencies.ts +141 -60
  75. package/src/nestedWorkspaces.ts +19 -10
  76. package/src/oncePerPackage.ts +32 -0
  77. package/src/packageEntry.ts +18 -11
  78. package/src/packageOrder.ts +9 -3
  79. package/src/packageScript.ts +37 -19
  80. package/src/requireDependency.ts +26 -11
  81. package/src/standardTsconfig.ts +31 -10
  82. package/src/util/checkAlpha.ts +5 -2
  83. package/src/util/createRuleFactory.ts +6 -2
  84. package/src/util/packageDependencyGraphService.ts +38 -13
  85. package/vitest.config.mjs +6 -7
@@ -23,9 +23,9 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">93.22% </span>
26
+ <span class="strong">94.8% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>110/118</span>
28
+ <span class='fraction'>146/154</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">93.22% </span>
47
+ <span class="strong">94.8% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>110/118</span>
49
+ <span class='fraction'>146/154</span>
50
50
  </div>
51
51
 
52
52
 
@@ -204,11 +204,39 @@
204
204
  <a name='L139'></a><a href='#L139'>139</a>
205
205
  <a name='L140'></a><a href='#L140'>140</a>
206
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>
208
- <span class="cline-any cline-neutral">&nbsp;</span>
209
- <span class="cline-any cline-neutral">&nbsp;</span>
210
- <span class="cline-any cline-neutral">&nbsp;</span>
211
- <span class="cline-any cline-neutral">&nbsp;</span>
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>
223
+ <a name='L158'></a><a href='#L158'>158</a>
224
+ <a name='L159'></a><a href='#L159'>159</a>
225
+ <a name='L160'></a><a href='#L160'>160</a>
226
+ <a name='L161'></a><a href='#L161'>161</a>
227
+ <a name='L162'></a><a href='#L162'>162</a>
228
+ <a name='L163'></a><a href='#L163'>163</a>
229
+ <a name='L164'></a><a href='#L164'>164</a>
230
+ <a name='L165'></a><a href='#L165'>165</a>
231
+ <a name='L166'></a><a href='#L166'>166</a>
232
+ <a name='L167'></a><a href='#L167'>167</a>
233
+ <a name='L168'></a><a href='#L168'>168</a>
234
+ <a name='L169'></a><a href='#L169'>169</a>
235
+ <a name='L170'></a><a href='#L170'>170</a>
236
+ <a name='L171'></a><a href='#L171'>171</a>
237
+ <a name='L172'></a><a href='#L172'>172</a>
238
+ <a name='L173'></a><a href='#L173'>173</a>
239
+ <a name='L174'></a><a href='#L174'>174</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
212
240
  <span class="cline-any cline-neutral">&nbsp;</span>
213
241
  <span class="cline-any cline-neutral">&nbsp;</span>
214
242
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -219,6 +247,10 @@
219
247
  <span class="cline-any cline-yes">1x</span>
220
248
  <span class="cline-any cline-yes">1x</span>
221
249
  <span class="cline-any cline-yes">1x</span>
250
+ <span class="cline-any cline-yes">1x</span>
251
+ <span class="cline-any cline-yes">1x</span>
252
+ <span class="cline-any cline-yes">1x</span>
253
+ <span class="cline-any cline-yes">1x</span>
222
254
  <span class="cline-any cline-neutral">&nbsp;</span>
223
255
  <span class="cline-any cline-neutral">&nbsp;</span>
224
256
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -232,11 +264,22 @@
232
264
  <span class="cline-any cline-yes">13x</span>
233
265
  <span class="cline-any cline-yes">13x</span>
234
266
  <span class="cline-any cline-yes">13x</span>
267
+ <span class="cline-any cline-yes">13x</span>
268
+ <span class="cline-any cline-yes">13x</span>
269
+ <span class="cline-any cline-yes">13x</span>
235
270
  <span class="cline-any cline-yes">15x</span>
236
271
  <span class="cline-any cline-yes">6x</span>
272
+ <span class="cline-any cline-yes">6x</span>
273
+ <span class="cline-any cline-yes">6x</span>
274
+ <span class="cline-any cline-yes">6x</span>
275
+ <span class="cline-any cline-yes">6x</span>
237
276
  <span class="cline-any cline-yes">15x</span>
238
277
  <span class="cline-any cline-yes">9x</span>
239
278
  <span class="cline-any cline-yes">9x</span>
279
+ <span class="cline-any cline-yes">9x</span>
280
+ <span class="cline-any cline-yes">9x</span>
281
+ <span class="cline-any cline-yes">9x</span>
282
+ <span class="cline-any cline-yes">9x</span>
240
283
  <span class="cline-any cline-yes">15x</span>
241
284
  <span class="cline-any cline-yes">13x</span>
242
285
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -250,6 +293,8 @@
250
293
  <span class="cline-any cline-neutral">&nbsp;</span>
251
294
  <span class="cline-any cline-yes">9x</span>
252
295
  <span class="cline-any cline-yes">9x</span>
296
+ <span class="cline-any cline-yes">9x</span>
297
+ <span class="cline-any cline-yes">9x</span>
253
298
  <span class="cline-any cline-no">&nbsp;</span>
254
299
  <span class="cline-any cline-no">&nbsp;</span>
255
300
  <span class="cline-any cline-no">&nbsp;</span>
@@ -259,6 +304,8 @@
259
304
  <span class="cline-any cline-yes">9x</span>
260
305
  <span class="cline-any cline-yes">9x</span>
261
306
  <span class="cline-any cline-yes">9x</span>
307
+ <span class="cline-any cline-yes">9x</span>
308
+ <span class="cline-any cline-yes">8x</span>
262
309
  <span class="cline-any cline-yes">8x</span>
263
310
  <span class="cline-any cline-yes">9x</span>
264
311
  <span class="cline-any cline-yes">2x</span>
@@ -271,12 +318,16 @@
271
318
  <span class="cline-any cline-yes">2x</span>
272
319
  <span class="cline-any cline-yes">2x</span>
273
320
  <span class="cline-any cline-yes">2x</span>
321
+ <span class="cline-any cline-yes">2x</span>
274
322
  <span class="cline-any cline-neutral">&nbsp;</span>
275
323
  <span class="cline-any cline-yes">9x</span>
276
324
  <span class="cline-any cline-yes">9x</span>
277
325
  <span class="cline-any cline-yes">9x</span>
278
326
  <span class="cline-any cline-yes">9x</span>
279
327
  <span class="cline-any cline-yes">9x</span>
328
+ <span class="cline-any cline-yes">9x</span>
329
+ <span class="cline-any cline-yes">9x</span>
330
+ <span class="cline-any cline-yes">6x</span>
280
331
  <span class="cline-any cline-yes">6x</span>
281
332
  <span class="cline-any cline-yes">9x</span>
282
333
  <span class="cline-any cline-yes">2x</span>
@@ -289,6 +340,7 @@
289
340
  <span class="cline-any cline-yes">2x</span>
290
341
  <span class="cline-any cline-yes">2x</span>
291
342
  <span class="cline-any cline-yes">2x</span>
343
+ <span class="cline-any cline-yes">2x</span>
292
344
  <span class="cline-any cline-yes">9x</span>
293
345
  <span class="cline-any cline-neutral">&nbsp;</span>
294
346
  <span class="cline-any cline-yes">1x</span>
@@ -303,6 +355,8 @@
303
355
  <span class="cline-any cline-yes">6x</span>
304
356
  <span class="cline-any cline-yes">16x</span>
305
357
  <span class="cline-any cline-yes">16x</span>
358
+ <span class="cline-any cline-yes">16x</span>
359
+ <span class="cline-any cline-yes">16x</span>
306
360
  <span class="cline-any cline-no">&nbsp;</span>
307
361
  <span class="cline-any cline-no">&nbsp;</span>
308
362
  <span class="cline-any cline-no">&nbsp;</span>
@@ -318,6 +372,9 @@
318
372
  <span class="cline-any cline-yes">6x</span>
319
373
  <span class="cline-any cline-yes">6x</span>
320
374
  <span class="cline-any cline-yes">6x</span>
375
+ <span class="cline-any cline-yes">12x</span>
376
+ <span class="cline-any cline-yes">12x</span>
377
+ <span class="cline-any cline-yes">6x</span>
321
378
  <span class="cline-any cline-yes">6x</span>
322
379
  <span class="cline-any cline-yes">2x</span>
323
380
  <span class="cline-any cline-yes">2x</span>
@@ -326,15 +383,20 @@
326
383
  <span class="cline-any cline-yes">2x</span>
327
384
  <span class="cline-any cline-yes">2x</span>
328
385
  <span class="cline-any cline-yes">2x</span>
386
+ <span class="cline-any cline-yes">2x</span>
387
+ <span class="cline-any cline-yes">2x</span>
329
388
  <span class="cline-any cline-neutral">&nbsp;</span>
330
389
  <span class="cline-any cline-yes">6x</span>
331
390
  <span class="cline-any cline-yes">6x</span>
332
391
  <span class="cline-any cline-yes">6x</span>
333
392
  <span class="cline-any cline-yes">6x</span>
334
393
  <span class="cline-any cline-yes">6x</span>
394
+ <span class="cline-any cline-yes">6x</span>
395
+ <span class="cline-any cline-yes">6x</span>
335
396
  <span class="cline-any cline-yes">1x</span>
336
397
  <span class="cline-any cline-yes">1x</span>
337
398
  <span class="cline-any cline-yes">2x</span>
399
+ <span class="cline-any cline-yes">2x</span>
338
400
  <span class="cline-any cline-yes">1x</span>
339
401
  <span class="cline-any cline-yes">6x</span>
340
402
  <span class="cline-any cline-yes">1x</span>
@@ -344,6 +406,8 @@
344
406
  <span class="cline-any cline-yes">1x</span>
345
407
  <span class="cline-any cline-yes">1x</span>
346
408
  <span class="cline-any cline-yes">1x</span>
409
+ <span class="cline-any cline-yes">1x</span>
410
+ <span class="cline-any cline-yes">1x</span>
347
411
  <span class="cline-any cline-yes">6x</span>
348
412
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">/*!
349
413
  * Copyright 2020 Palantir Technologies, Inc.
@@ -370,13 +434,24 @@ export const consistentVersions = createRuleFactory({
370
434
  });
371
435
  &nbsp;
372
436
  function checkConsistentVersions(context: Context, options: Options) {
373
- for (const [dependencyPackageName, expectedPackageDependencyValue] of Object.entries(
374
- options.matchDependencyVersions
375
- )) {
437
+ for (
438
+ const [dependencyPackageName, expectedPackageDependencyValue] of Object
439
+ .entries(
440
+ options.matchDependencyVersions,
441
+ )
442
+ ) {
376
443
  if (Array.isArray(expectedPackageDependencyValue)) {
377
- ensurePackageMatchesSomeVersion(context, dependencyPackageName, expectedPackageDependencyValue);
444
+ ensurePackageMatchesSomeVersion(
445
+ context,
446
+ dependencyPackageName,
447
+ expectedPackageDependencyValue,
448
+ );
378
449
  } else {
379
- ensurePackageIsCorrectVersion(context, dependencyPackageName, expectedPackageDependencyValue);
450
+ ensurePackageIsCorrectVersion(
451
+ context,
452
+ dependencyPackageName,
453
+ expectedPackageDependencyValue,
454
+ );
380
455
  }
381
456
  }
382
457
  }
@@ -384,27 +459,32 @@ function checkConsistentVersions(context: Context, options: Options) {
384
459
  const ensurePackageIsCorrectVersion = (
385
460
  context: Context,
386
461
  dependencyPackageName: string,
387
- expectedPackageDependencyValue: string
462
+ expectedPackageDependencyValue: string,
388
463
  ) =&gt; {
389
464
  const packageJson = context.getPackageJson();
390
465
  const packageJsonPath = context.getPackageJsonPath();
391
466
  &nbsp;
392
- const expectedPackageDependencyVersion = coerce(expectedPackageDependencyValue);
467
+ const expectedPackageDependencyVersion = coerce(
468
+ expectedPackageDependencyValue,
469
+ );
393
470
  if (expectedPackageDependencyVersion == null) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
394
471
  <span class="cstat-no" title="statement not covered" > throw new Error(</span>
395
- <span class="cstat-no" title="statement not covered" > `Malformed expected package dependency version defined in monorepolint configuration: ${dependencyPackageName} @ '${expectedPackageDependencyValue}'`</span>
472
+ <span class="cstat-no" title="statement not covered" > `Malformed expected package dependency version defined in monorepolint configuration: ${dependencyPackageName} @ '${expectedPackageDependencyValue}'`,</span>
396
473
  <span class="cstat-no" title="statement not covered" > );</span>
397
474
  <span class="cstat-no" title="statement not covered" > }</span>
398
475
  &nbsp;
399
- const actualPackageDependencyValue = packageJson.dependencies &amp;&amp; packageJson.dependencies[dependencyPackageName];
476
+ const actualPackageDependencyValue = packageJson.dependencies
477
+ &amp;&amp; packageJson.dependencies[dependencyPackageName];
400
478
  const actualPackageDependencyVersion = coerce(actualPackageDependencyValue);
401
479
  if (
402
- actualPackageDependencyVersion != null &amp;&amp;
403
- actualPackageDependencyVersion.raw !== expectedPackageDependencyVersion.raw
480
+ actualPackageDependencyVersion != null
481
+ &amp;&amp; actualPackageDependencyVersion.raw
482
+ !== expectedPackageDependencyVersion.raw
404
483
  ) {
405
484
  context.addError({
406
485
  file: packageJsonPath,
407
- message: `Expected dependency on ${dependencyPackageName} to match version defined in monorepolint configuration '${expectedPackageDependencyValue}', got '${actualPackageDependencyValue}' instead.`,
486
+ message:
487
+ `Expected dependency on ${dependencyPackageName} to match version defined in monorepolint configuration '${expectedPackageDependencyValue}', got '${actualPackageDependencyValue}' instead.`,
408
488
  fixer: () =&gt;
409
489
  mutateJson&lt;PackageJson&gt;(packageJsonPath, context.host, (input) =&gt; {
410
490
  input.dependencies![dependencyPackageName] = expectedPackageDependencyValue;
@@ -413,16 +493,20 @@ const ensurePackageIsCorrectVersion = (
413
493
  });
414
494
  }
415
495
  &nbsp;
416
- const actualPackageDevDependencyValue =
417
- packageJson.devDependencies &amp;&amp; packageJson.devDependencies[dependencyPackageName];
418
- const actualPackageDevDependencyVersion = coerce(actualPackageDevDependencyValue);
496
+ const actualPackageDevDependencyValue = packageJson.devDependencies
497
+ &amp;&amp; packageJson.devDependencies[dependencyPackageName];
498
+ const actualPackageDevDependencyVersion = coerce(
499
+ actualPackageDevDependencyValue,
500
+ );
419
501
  if (
420
- actualPackageDevDependencyVersion != null &amp;&amp;
421
- actualPackageDevDependencyVersion.raw !== expectedPackageDependencyVersion.raw
502
+ actualPackageDevDependencyVersion != null
503
+ &amp;&amp; actualPackageDevDependencyVersion.raw
504
+ !== expectedPackageDependencyVersion.raw
422
505
  ) {
423
506
  context.addError({
424
507
  file: packageJsonPath,
425
- message: `Expected devDependency on ${dependencyPackageName} to match version defined in monorepolint configuration '${expectedPackageDependencyValue}', got '${actualPackageDevDependencyValue}' instead`,
508
+ message:
509
+ `Expected devDependency on ${dependencyPackageName} to match version defined in monorepolint configuration '${expectedPackageDependencyValue}', got '${actualPackageDevDependencyValue}' instead`,
426
510
  fixer: () =&gt;
427
511
  mutateJson&lt;PackageJson&gt;(packageJsonPath, context.host, (input) =&gt; {
428
512
  input.devDependencies![dependencyPackageName] = expectedPackageDependencyValue;
@@ -435,54 +519,66 @@ const ensurePackageIsCorrectVersion = (
435
519
  const ensurePackageMatchesSomeVersion = (
436
520
  context: Context,
437
521
  dependencyPackageName: string,
438
- acceptedPackageDependencyValues: string[]
522
+ acceptedPackageDependencyValues: string[],
439
523
  ) =&gt; {
440
524
  const packageJson = context.getPackageJson();
441
525
  const packageJsonPath = context.getPackageJsonPath();
442
526
  &nbsp;
443
527
  const acceptedPackageDependencyVersions: SemVer[] = acceptedPackageDependencyValues.map(
444
528
  (acceptedPackageDependencyValue) =&gt; {
445
- const acceptedPackageDependencyVersion = coerce(acceptedPackageDependencyValue);
529
+ const acceptedPackageDependencyVersion = coerce(
530
+ acceptedPackageDependencyValue,
531
+ );
446
532
  if (acceptedPackageDependencyVersion == null) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
447
533
  <span class="cstat-no" title="statement not covered" > throw new Error(</span>
448
- <span class="cstat-no" title="statement not covered" > `Malformed accepted package dependency version defined in monorepolint configuration: ${dependencyPackageName} @ '${acceptedPackageDependencyValue}'`</span>
534
+ <span class="cstat-no" title="statement not covered" > `Malformed accepted package dependency version defined in monorepolint configuration: ${dependencyPackageName} @ '${acceptedPackageDependencyValue}'`,</span>
449
535
  <span class="cstat-no" title="statement not covered" > );</span>
450
536
  <span class="cstat-no" title="statement not covered" > }</span>
451
537
  return acceptedPackageDependencyVersion;
452
- }
538
+ },
453
539
  );
454
540
  &nbsp;
455
- const actualPackageDependencyValue = packageJson.dependencies &amp;&amp; packageJson.dependencies[dependencyPackageName];
541
+ const actualPackageDependencyValue = packageJson.dependencies
542
+ &amp;&amp; packageJson.dependencies[dependencyPackageName];
456
543
  const actualPackageDependencyVersion = coerce(actualPackageDependencyValue);
457
544
  if (
458
- actualPackageDependencyVersion != null &amp;&amp;
459
- acceptedPackageDependencyVersions.every(
460
- (acceptedPackageDependencyVersion) =&gt; actualPackageDependencyVersion.raw !== acceptedPackageDependencyVersion.raw
545
+ actualPackageDependencyVersion != null
546
+ &amp;&amp; acceptedPackageDependencyVersions.every(
547
+ (acceptedPackageDependencyVersion) =&gt;
548
+ actualPackageDependencyVersion.raw
549
+ !== acceptedPackageDependencyVersion.raw,
461
550
  )
462
551
  ) {
463
552
  context.addError({
464
553
  file: packageJsonPath,
465
- message: `Expected dependency on ${dependencyPackageName} to match one of '${JSON.stringify(
466
- acceptedPackageDependencyValues
467
- )}', got '${actualPackageDependencyValue}' instead.`,
554
+ message: `Expected dependency on ${dependencyPackageName} to match one of '${
555
+ JSON.stringify(
556
+ acceptedPackageDependencyValues,
557
+ )
558
+ }', got '${actualPackageDependencyValue}' instead.`,
468
559
  });
469
560
  }
470
561
  &nbsp;
471
- const actualPackageDevDependencyValue =
472
- packageJson.devDependencies &amp;&amp; packageJson.devDependencies[dependencyPackageName];
473
- const actualPackageDevDependencyVersion = coerce(actualPackageDevDependencyValue);
562
+ const actualPackageDevDependencyValue = packageJson.devDependencies
563
+ &amp;&amp; packageJson.devDependencies[dependencyPackageName];
564
+ const actualPackageDevDependencyVersion = coerce(
565
+ actualPackageDevDependencyValue,
566
+ );
474
567
  if (
475
- actualPackageDevDependencyVersion != null &amp;&amp;
476
- acceptedPackageDependencyVersions.every(
568
+ actualPackageDevDependencyVersion != null
569
+ &amp;&amp; acceptedPackageDependencyVersions.every(
477
570
  (acceptedPackageDependencyVersion) =&gt;
478
- actualPackageDevDependencyVersion.raw !== acceptedPackageDependencyVersion.raw
571
+ actualPackageDevDependencyVersion.raw
572
+ !== acceptedPackageDependencyVersion.raw,
479
573
  )
480
574
  ) {
481
575
  context.addError({
482
576
  file: packageJsonPath,
483
- message: `Expected devDependency on ${dependencyPackageName} to match one of '${JSON.stringify(
484
- acceptedPackageDependencyValues
485
- )}', got '${actualPackageDevDependencyValue}' instead.`,
577
+ message: `Expected devDependency on ${dependencyPackageName} to match one of '${
578
+ JSON.stringify(
579
+ acceptedPackageDependencyValues,
580
+ )
581
+ }', got '${actualPackageDevDependencyValue}' instead.`,
486
582
  });
487
583
  }
488
584
  };
@@ -493,7 +589,7 @@ const ensurePackageMatchesSomeVersion = (
493
589
  <div class='footer quiet pad2 space-top1 center small'>
494
590
  Code coverage generated by
495
591
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
496
- at 2025-01-17T16:18:41.406Z
592
+ at 2025-01-31T21:00:08.068Z
497
593
  </div>
498
594
  <script src="../prettify.js"></script>
499
595
  <script>
@@ -23,9 +23,9 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">86.48% </span>
26
+ <span class="strong">83.72% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>64/74</span>
28
+ <span class='fraction'>72/86</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">86.48% </span>
47
+ <span class="strong">83.72% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>64/74</span>
49
+ <span class='fraction'>72/86</span>
50
50
  </div>
51
51
 
52
52
 
@@ -163,11 +163,15 @@
163
163
  <a name='L98'></a><a href='#L98'>98</a>
164
164
  <a name='L99'></a><a href='#L99'>99</a>
165
165
  <a name='L100'></a><a href='#L100'>100</a>
166
- <a name='L101'></a><a href='#L101'>101</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
167
- <span class="cline-any cline-neutral">&nbsp;</span>
168
- <span class="cline-any cline-neutral">&nbsp;</span>
169
- <span class="cline-any cline-neutral">&nbsp;</span>
170
- <span class="cline-any cline-neutral">&nbsp;</span>
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></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
171
175
  <span class="cline-any cline-neutral">&nbsp;</span>
172
176
  <span class="cline-any cline-neutral">&nbsp;</span>
173
177
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -182,14 +186,18 @@
182
186
  <span class="cline-any cline-yes">1x</span>
183
187
  <span class="cline-any cline-yes">1x</span>
184
188
  <span class="cline-any cline-yes">1x</span>
185
- <span class="cline-any cline-neutral">&nbsp;</span>
189
+ <span class="cline-any cline-yes">1x</span>
190
+ <span class="cline-any cline-no">&nbsp;</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>
194
+ <span class="cline-any cline-yes">1x</span>
186
195
  <span class="cline-any cline-yes">1x</span>
187
196
  <span class="cline-any cline-yes">1x</span>
188
197
  <span class="cline-any cline-yes">1x</span>
189
198
  <span class="cline-any cline-yes">1x</span>
190
199
  <span class="cline-any cline-yes">1x</span>
191
200
  <span class="cline-any cline-yes">1x</span>
192
- <span class="cline-any cline-neutral">&nbsp;</span>
193
201
  <span class="cline-any cline-yes">1x</span>
194
202
  <span class="cline-any cline-yes">1x</span>
195
203
  <span class="cline-any cline-yes">1x</span>
@@ -208,11 +216,15 @@
208
216
  <span class="cline-any cline-neutral">&nbsp;</span>
209
217
  <span class="cline-any cline-yes">6x</span>
210
218
  <span class="cline-any cline-yes">6x</span>
219
+ <span class="cline-any cline-no">&nbsp;</span>
220
+ <span class="cline-any cline-yes">6x</span>
211
221
  <span class="cline-any cline-yes">6x</span>
212
222
  <span class="cline-any cline-yes">6x</span>
223
+ <span class="cline-any cline-no">&nbsp;</span>
213
224
  <span class="cline-any cline-yes">6x</span>
214
225
  <span class="cline-any cline-neutral">&nbsp;</span>
215
226
  <span class="cline-any cline-yes">6x</span>
227
+ <span class="cline-any cline-no">&nbsp;</span>
216
228
  <span class="cline-any cline-yes">6x</span>
217
229
  <span class="cline-any cline-neutral">&nbsp;</span>
218
230
  <span class="cline-any cline-yes">6x</span>
@@ -230,12 +242,16 @@
230
242
  <span class="cline-any cline-yes">6x</span>
231
243
  <span class="cline-any cline-yes">6x</span>
232
244
  <span class="cline-any cline-yes">6x</span>
245
+ <span class="cline-any cline-yes">6x</span>
246
+ <span class="cline-any cline-yes">6x</span>
233
247
  <span class="cline-any cline-yes">1x</span>
234
248
  <span class="cline-any cline-yes">1x</span>
235
249
  <span class="cline-any cline-neutral">&nbsp;</span>
236
250
  <span class="cline-any cline-yes">1x</span>
237
251
  <span class="cline-any cline-neutral">&nbsp;</span>
238
252
  <span class="cline-any cline-neutral">&nbsp;</span>
253
+ <span class="cline-any cline-neutral">&nbsp;</span>
254
+ <span class="cline-any cline-neutral">&nbsp;</span>
239
255
  <span class="cline-any cline-yes">1x</span>
240
256
  <span class="cline-any cline-neutral">&nbsp;</span>
241
257
  <span class="cline-any cline-yes">6x</span>
@@ -278,24 +294,24 @@ import { createRuleFactory } from "./util/createRuleFactory.js";
278
294
  const Options = r.Union(
279
295
  r.Record({
280
296
  file: r.String,
281
- generator: r.Function.withGuard((x): x is (context: Context) =&gt; string | Promise&lt;string&gt; =&gt; x != undefined),
297
+ generator: r.Function.withGuard((
298
+ <span class="cstat-no" title="statement not covered" > x,</span>
299
+ ): x is (context: Context) =&gt; string | Promise&lt;string&gt; =&gt; x != undefined),
282
300
  template: r.Undefined.optional(),
283
301
  templateFile: r.Undefined.optional(),
284
302
  }),
285
- &nbsp;
286
303
  r.Record({
287
304
  file: r.String,
288
305
  generator: r.Undefined.optional(),
289
306
  template: r.String.Or(r.Undefined),
290
307
  templateFile: r.Undefined.optional(),
291
308
  }),
292
- &nbsp;
293
309
  r.Record({
294
310
  file: r.String,
295
311
  generator: r.Undefined.optional(),
296
312
  template: r.Undefined.optional(),
297
313
  templateFile: r.String,
298
- })
314
+ }),
299
315
  );
300
316
  &nbsp;
301
317
  type Options = r.Static&lt;typeof Options&gt;;
@@ -307,13 +323,17 @@ export const fileContents = createRuleFactory&lt;Options&gt;({
307
323
  const expectedContent = await getExpectedContents(context, opts);
308
324
  &nbsp;
309
325
  const pathExists = context.host.exists(fullPath);
310
- const actualContent = <span class="branch-0 cbranch-no" title="branch not covered" >pathExists ? context.host.readFile(fullPath, { encoding: "utf-8" }) : u</span>ndefined;
326
+ const actualContent = <span class="branch-0 cbranch-no" title="branch not covered" >pathExists</span>
327
+ <span class="cstat-no" title="statement not covered" > ? context.host.readFile(fullPath, { encoding: "utf-8" })</span>
328
+ : undefined;
311
329
  if (actualContent !== expectedContent) {
312
- const longMessage =
313
- <span class="branch-0 cbranch-no" title="branch not covered" > pathExists &amp;&amp; expectedContent == <span class="branch-0 cbranch-no" title="branch not covered" >undefined ? u</span>ndefined : d</span>iff(expectedContent, actualContent, { expand: true });
330
+ const longMessage = <span class="branch-0 cbranch-no" title="branch not covered" >pathExists &amp;&amp; expectedContent == <span class="branch-0 cbranch-no" title="branch not covered" >undefined</span></span>
331
+ <span class="cstat-no" title="statement not covered" > ? undefined</span>
332
+ : diff(expectedContent, actualContent, { expand: true });
314
333
  &nbsp;
315
- const message =
316
- <span class="branch-0 cbranch-no" title="branch not covered" > pathExists &amp;&amp; expectedContent == <span class="branch-0 cbranch-no" title="branch not covered" >undefined ? "</span>File should not exist" : "</span>Expect file contents to match";
334
+ const message = <span class="branch-0 cbranch-no" title="branch not covered" >pathExists &amp;&amp; expectedContent == <span class="branch-0 cbranch-no" title="branch not covered" >undefined</span></span>
335
+ <span class="cstat-no" title="statement not covered" > ? "File should not exist"</span>
336
+ : "Expect file contents to match";
317
337
  &nbsp;
318
338
  context.addError({
319
339
  file: fullPath,
@@ -324,7 +344,9 @@ export const fileContents = createRuleFactory&lt;Options&gt;({
324
344
  <span class="cstat-no" title="statement not covered" > if (pathExists) context.host.deleteFile(fullPath);</span>
325
345
  } else {
326
346
  context.host.mkdir(path.dirname(fullPath), { recursive: true });
327
- context.host.writeFile(fullPath, expectedContent, { encoding: "utf-8" });
347
+ context.host.writeFile(fullPath, expectedContent, {
348
+ encoding: "utf-8",
349
+ });
328
350
  }
329
351
  },
330
352
  });
@@ -335,7 +357,9 @@ export const fileContents = createRuleFactory&lt;Options&gt;({
335
357
  &nbsp;
336
358
  const optionsCache = new Map&lt;
337
359
  Options,
338
- ((context: Context) =&gt; Promise&lt;string&gt; | string | undefined) | string | undefined
360
+ | ((context: Context) =&gt; Promise&lt;string&gt; | string | undefined)
361
+ | string
362
+ | undefined
339
363
  &gt;();
340
364
  &nbsp;
341
365
  async function getExpectedContents(context: Context, opts: Options) {
@@ -370,7 +394,7 @@ async function getExpectedContents(context: Context, opts: Options) {
370
394
  <div class='footer quiet pad2 space-top1 center small'>
371
395
  Code coverage generated by
372
396
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
373
- at 2025-01-17T16:18:41.406Z
397
+ at 2025-01-31T21:00:08.068Z
374
398
  </div>
375
399
  <script src="../prettify.js"></script>
376
400
  <script>