@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.
Files changed (77) 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 +160 -100
  5. package/.turbo/turbo-transpile-typescript.log +4 -4
  6. package/CHANGELOG.md +9 -0
  7. package/build/js/index.js +399 -246
  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/index.d.ts +3 -3
  15. package/build/types/index.d.ts.map +1 -1
  16. package/build/types/mustSatisfyPeerDependencies.d.ts.map +1 -1
  17. package/build/types/nestedWorkspaces.d.ts.map +1 -1
  18. package/build/types/packageEntry.d.ts.map +1 -1
  19. package/build/types/packageOrder.d.ts.map +1 -1
  20. package/build/types/packageScript.d.ts.map +1 -1
  21. package/build/types/requireDependency.d.ts +12 -12
  22. package/build/types/requireDependency.d.ts.map +1 -1
  23. package/build/types/util/checkAlpha.d.ts.map +1 -1
  24. package/build/types/util/createRuleFactory.d.ts.map +1 -1
  25. package/build/types/util/packageDependencyGraphService.d.ts.map +1 -1
  26. package/coverage/clover.xml +1159 -818
  27. package/coverage/coverage-final.json +18 -18
  28. package/coverage/index.html +20 -20
  29. package/coverage/src/alphabeticalDependencies.ts.html +8 -8
  30. package/coverage/src/alphabeticalScripts.ts.html +5 -5
  31. package/coverage/src/bannedDependencies.ts.html +77 -26
  32. package/coverage/src/consistentDependencies.ts.html +58 -19
  33. package/coverage/src/consistentVersions.ts.html +169 -58
  34. package/coverage/src/fileContents.ts.html +47 -23
  35. package/coverage/src/index.html +67 -67
  36. package/coverage/src/index.ts.html +32 -32
  37. package/coverage/src/mustSatisfyPeerDependencies.ts.html +373 -85
  38. package/coverage/src/nestedWorkspaces.ts.html +59 -20
  39. package/coverage/src/packageEntry.ts.html +40 -19
  40. package/coverage/src/packageOrder.ts.html +30 -12
  41. package/coverage/src/packageScript.ts.html +81 -27
  42. package/coverage/src/requireDependency.ts.html +83 -32
  43. package/coverage/src/standardTsconfig.ts.html +81 -18
  44. package/coverage/src/util/checkAlpha.ts.html +18 -9
  45. package/coverage/src/util/createRuleFactory.ts.html +16 -4
  46. package/coverage/src/util/index.html +17 -17
  47. package/coverage/src/util/makeDirectory.ts.html +5 -5
  48. package/coverage/src/util/packageDependencyGraphService.ts.html +101 -20
  49. package/package.json +4 -5
  50. package/src/__tests__/alphabeticalScripts.spec.ts +12 -4
  51. package/src/__tests__/bannedDependencies.spec.ts +45 -16
  52. package/src/__tests__/consistentDependencies.spec.ts +11 -5
  53. package/src/__tests__/consistentVersions.spec.ts +72 -18
  54. package/src/__tests__/fileContents.spec.ts +9 -5
  55. package/src/__tests__/mustSatisfyPeerDependencies.spec.ts +191 -76
  56. package/src/__tests__/nestedWorkspaces.spec.ts +10 -6
  57. package/src/__tests__/packageEntry.spec.ts +54 -48
  58. package/src/__tests__/packageOrder.spec.ts +77 -71
  59. package/src/__tests__/packageScript.spec.ts +25 -11
  60. package/src/__tests__/requireDependency.spec.ts +12 -6
  61. package/src/__tests__/utils.ts +16 -7
  62. package/src/bannedDependencies.ts +32 -15
  63. package/src/consistentDependencies.ts +22 -9
  64. package/src/consistentVersions.ts +84 -47
  65. package/src/fileContents.ts +19 -11
  66. package/src/index.ts +3 -3
  67. package/src/mustSatisfyPeerDependencies.ts +162 -66
  68. package/src/nestedWorkspaces.ts +23 -10
  69. package/src/packageEntry.ts +18 -11
  70. package/src/packageOrder.ts +9 -3
  71. package/src/packageScript.ts +37 -19
  72. package/src/requireDependency.ts +28 -11
  73. package/src/standardTsconfig.ts +31 -10
  74. package/src/util/checkAlpha.ts +5 -2
  75. package/src/util/createRuleFactory.ts +6 -2
  76. package/src/util/packageDependencyGraphService.ts +41 -14
  77. 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">93.22% </span>
26
+ <span class="strong">94.96% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>110/118</span>
28
+ <span class='fraction'>151/159</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.96% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>110/118</span>
49
+ <span class='fraction'>151/159</span>
50
50
  </div>
51
51
 
52
52
 
@@ -204,11 +204,44 @@
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>
240
+ <a name='L175'></a><a href='#L175'>175</a>
241
+ <a name='L176'></a><a href='#L176'>176</a>
242
+ <a name='L177'></a><a href='#L177'>177</a>
243
+ <a name='L178'></a><a href='#L178'>178</a>
244
+ <a name='L179'></a><a href='#L179'>179</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
212
245
  <span class="cline-any cline-neutral">&nbsp;</span>
213
246
  <span class="cline-any cline-neutral">&nbsp;</span>
214
247
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -219,6 +252,10 @@
219
252
  <span class="cline-any cline-yes">1x</span>
220
253
  <span class="cline-any cline-yes">1x</span>
221
254
  <span class="cline-any cline-yes">1x</span>
255
+ <span class="cline-any cline-yes">1x</span>
256
+ <span class="cline-any cline-yes">1x</span>
257
+ <span class="cline-any cline-yes">1x</span>
258
+ <span class="cline-any cline-yes">1x</span>
222
259
  <span class="cline-any cline-neutral">&nbsp;</span>
223
260
  <span class="cline-any cline-neutral">&nbsp;</span>
224
261
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -232,11 +269,22 @@
232
269
  <span class="cline-any cline-yes">13x</span>
233
270
  <span class="cline-any cline-yes">13x</span>
234
271
  <span class="cline-any cline-yes">13x</span>
272
+ <span class="cline-any cline-yes">13x</span>
273
+ <span class="cline-any cline-yes">13x</span>
274
+ <span class="cline-any cline-yes">13x</span>
235
275
  <span class="cline-any cline-yes">15x</span>
236
276
  <span class="cline-any cline-yes">6x</span>
277
+ <span class="cline-any cline-yes">6x</span>
278
+ <span class="cline-any cline-yes">6x</span>
279
+ <span class="cline-any cline-yes">6x</span>
280
+ <span class="cline-any cline-yes">6x</span>
237
281
  <span class="cline-any cline-yes">15x</span>
238
282
  <span class="cline-any cline-yes">9x</span>
239
283
  <span class="cline-any cline-yes">9x</span>
284
+ <span class="cline-any cline-yes">9x</span>
285
+ <span class="cline-any cline-yes">9x</span>
286
+ <span class="cline-any cline-yes">9x</span>
287
+ <span class="cline-any cline-yes">9x</span>
240
288
  <span class="cline-any cline-yes">15x</span>
241
289
  <span class="cline-any cline-yes">13x</span>
242
290
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -250,6 +298,8 @@
250
298
  <span class="cline-any cline-neutral">&nbsp;</span>
251
299
  <span class="cline-any cline-yes">9x</span>
252
300
  <span class="cline-any cline-yes">9x</span>
301
+ <span class="cline-any cline-yes">9x</span>
302
+ <span class="cline-any cline-yes">9x</span>
253
303
  <span class="cline-any cline-no">&nbsp;</span>
254
304
  <span class="cline-any cline-no">&nbsp;</span>
255
305
  <span class="cline-any cline-no">&nbsp;</span>
@@ -259,6 +309,8 @@
259
309
  <span class="cline-any cline-yes">9x</span>
260
310
  <span class="cline-any cline-yes">9x</span>
261
311
  <span class="cline-any cline-yes">9x</span>
312
+ <span class="cline-any cline-yes">9x</span>
313
+ <span class="cline-any cline-yes">8x</span>
262
314
  <span class="cline-any cline-yes">8x</span>
263
315
  <span class="cline-any cline-yes">9x</span>
264
316
  <span class="cline-any cline-yes">2x</span>
@@ -271,12 +323,17 @@
271
323
  <span class="cline-any cline-yes">2x</span>
272
324
  <span class="cline-any cline-yes">2x</span>
273
325
  <span class="cline-any cline-yes">2x</span>
326
+ <span class="cline-any cline-yes">2x</span>
327
+ <span class="cline-any cline-yes">2x</span>
274
328
  <span class="cline-any cline-neutral">&nbsp;</span>
275
329
  <span class="cline-any cline-yes">9x</span>
276
330
  <span class="cline-any cline-yes">9x</span>
277
331
  <span class="cline-any cline-yes">9x</span>
278
332
  <span class="cline-any cline-yes">9x</span>
279
333
  <span class="cline-any cline-yes">9x</span>
334
+ <span class="cline-any cline-yes">9x</span>
335
+ <span class="cline-any cline-yes">9x</span>
336
+ <span class="cline-any cline-yes">6x</span>
280
337
  <span class="cline-any cline-yes">6x</span>
281
338
  <span class="cline-any cline-yes">9x</span>
282
339
  <span class="cline-any cline-yes">2x</span>
@@ -289,6 +346,8 @@
289
346
  <span class="cline-any cline-yes">2x</span>
290
347
  <span class="cline-any cline-yes">2x</span>
291
348
  <span class="cline-any cline-yes">2x</span>
349
+ <span class="cline-any cline-yes">2x</span>
350
+ <span class="cline-any cline-yes">2x</span>
292
351
  <span class="cline-any cline-yes">9x</span>
293
352
  <span class="cline-any cline-neutral">&nbsp;</span>
294
353
  <span class="cline-any cline-yes">1x</span>
@@ -301,6 +360,9 @@
301
360
  <span class="cline-any cline-neutral">&nbsp;</span>
302
361
  <span class="cline-any cline-yes">6x</span>
303
362
  <span class="cline-any cline-yes">6x</span>
363
+ <span class="cline-any cline-yes">6x</span>
364
+ <span class="cline-any cline-yes">16x</span>
365
+ <span class="cline-any cline-yes">16x</span>
304
366
  <span class="cline-any cline-yes">16x</span>
305
367
  <span class="cline-any cline-yes">16x</span>
306
368
  <span class="cline-any cline-no">&nbsp;</span>
@@ -318,6 +380,9 @@
318
380
  <span class="cline-any cline-yes">6x</span>
319
381
  <span class="cline-any cline-yes">6x</span>
320
382
  <span class="cline-any cline-yes">6x</span>
383
+ <span class="cline-any cline-yes">12x</span>
384
+ <span class="cline-any cline-yes">12x</span>
385
+ <span class="cline-any cline-yes">6x</span>
321
386
  <span class="cline-any cline-yes">6x</span>
322
387
  <span class="cline-any cline-yes">2x</span>
323
388
  <span class="cline-any cline-yes">2x</span>
@@ -326,15 +391,21 @@
326
391
  <span class="cline-any cline-yes">2x</span>
327
392
  <span class="cline-any cline-yes">2x</span>
328
393
  <span class="cline-any cline-yes">2x</span>
394
+ <span class="cline-any cline-yes">2x</span>
395
+ <span class="cline-any cline-yes">2x</span>
396
+ <span class="cline-any cline-yes">2x</span>
329
397
  <span class="cline-any cline-neutral">&nbsp;</span>
330
398
  <span class="cline-any cline-yes">6x</span>
331
399
  <span class="cline-any cline-yes">6x</span>
332
400
  <span class="cline-any cline-yes">6x</span>
333
401
  <span class="cline-any cline-yes">6x</span>
334
402
  <span class="cline-any cline-yes">6x</span>
403
+ <span class="cline-any cline-yes">6x</span>
404
+ <span class="cline-any cline-yes">6x</span>
335
405
  <span class="cline-any cline-yes">1x</span>
336
406
  <span class="cline-any cline-yes">1x</span>
337
407
  <span class="cline-any cline-yes">2x</span>
408
+ <span class="cline-any cline-yes">2x</span>
338
409
  <span class="cline-any cline-yes">1x</span>
339
410
  <span class="cline-any cline-yes">6x</span>
340
411
  <span class="cline-any cline-yes">1x</span>
@@ -344,6 +415,9 @@
344
415
  <span class="cline-any cline-yes">1x</span>
345
416
  <span class="cline-any cline-yes">1x</span>
346
417
  <span class="cline-any cline-yes">1x</span>
418
+ <span class="cline-any cline-yes">1x</span>
419
+ <span class="cline-any cline-yes">1x</span>
420
+ <span class="cline-any cline-yes">1x</span>
347
421
  <span class="cline-any cline-yes">6x</span>
348
422
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">/*!
349
423
  * Copyright 2020 Palantir Technologies, Inc.
@@ -370,13 +444,24 @@ export const consistentVersions = createRuleFactory({
370
444
  });
371
445
  &nbsp;
372
446
  function checkConsistentVersions(context: Context, options: Options) {
373
- for (const [dependencyPackageName, expectedPackageDependencyValue] of Object.entries(
374
- options.matchDependencyVersions
375
- )) {
447
+ for (
448
+ const [dependencyPackageName, expectedPackageDependencyValue] of Object
449
+ .entries(
450
+ options.matchDependencyVersions,
451
+ )
452
+ ) {
376
453
  if (Array.isArray(expectedPackageDependencyValue)) {
377
- ensurePackageMatchesSomeVersion(context, dependencyPackageName, expectedPackageDependencyValue);
454
+ ensurePackageMatchesSomeVersion(
455
+ context,
456
+ dependencyPackageName,
457
+ expectedPackageDependencyValue,
458
+ );
378
459
  } else {
379
- ensurePackageIsCorrectVersion(context, dependencyPackageName, expectedPackageDependencyValue);
460
+ ensurePackageIsCorrectVersion(
461
+ context,
462
+ dependencyPackageName,
463
+ expectedPackageDependencyValue,
464
+ );
380
465
  }
381
466
  }
382
467
  }
@@ -384,48 +469,59 @@ function checkConsistentVersions(context: Context, options: Options) {
384
469
  const ensurePackageIsCorrectVersion = (
385
470
  context: Context,
386
471
  dependencyPackageName: string,
387
- expectedPackageDependencyValue: string
472
+ expectedPackageDependencyValue: string,
388
473
  ) =&gt; {
389
474
  const packageJson = context.getPackageJson();
390
475
  const packageJsonPath = context.getPackageJsonPath();
391
476
  &nbsp;
392
- const expectedPackageDependencyVersion = coerce(expectedPackageDependencyValue);
477
+ const expectedPackageDependencyVersion = coerce(
478
+ expectedPackageDependencyValue,
479
+ );
393
480
  if (expectedPackageDependencyVersion == null) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
394
481
  <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>
482
+ <span class="cstat-no" title="statement not covered" > `Malformed expected package dependency version defined in monorepolint configuration: ${dependencyPackageName} @ '${expectedPackageDependencyValue}'`,</span>
396
483
  <span class="cstat-no" title="statement not covered" > );</span>
397
484
  <span class="cstat-no" title="statement not covered" > }</span>
398
485
  &nbsp;
399
- const actualPackageDependencyValue = packageJson.dependencies &amp;&amp; packageJson.dependencies[dependencyPackageName];
486
+ const actualPackageDependencyValue = packageJson.dependencies
487
+ &amp;&amp; packageJson.dependencies[dependencyPackageName];
400
488
  const actualPackageDependencyVersion = coerce(actualPackageDependencyValue);
401
489
  if (
402
- actualPackageDependencyVersion != null &amp;&amp;
403
- actualPackageDependencyVersion.raw !== expectedPackageDependencyVersion.raw
490
+ actualPackageDependencyVersion != null
491
+ &amp;&amp; actualPackageDependencyVersion.raw
492
+ !== expectedPackageDependencyVersion.raw
404
493
  ) {
405
494
  context.addError({
406
495
  file: packageJsonPath,
407
- message: `Expected dependency on ${dependencyPackageName} to match version defined in monorepolint configuration '${expectedPackageDependencyValue}', got '${actualPackageDependencyValue}' instead.`,
496
+ message:
497
+ `Expected dependency on ${dependencyPackageName} to match version defined in monorepolint configuration '${expectedPackageDependencyValue}', got '${actualPackageDependencyValue}' instead.`,
408
498
  fixer: () =&gt;
409
499
  mutateJson&lt;PackageJson&gt;(packageJsonPath, context.host, (input) =&gt; {
410
- input.dependencies![dependencyPackageName] = expectedPackageDependencyValue;
500
+ input.dependencies![dependencyPackageName] =
501
+ expectedPackageDependencyValue;
411
502
  return input;
412
503
  }),
413
504
  });
414
505
  }
415
506
  &nbsp;
416
- const actualPackageDevDependencyValue =
417
- packageJson.devDependencies &amp;&amp; packageJson.devDependencies[dependencyPackageName];
418
- const actualPackageDevDependencyVersion = coerce(actualPackageDevDependencyValue);
507
+ const actualPackageDevDependencyValue = packageJson.devDependencies
508
+ &amp;&amp; packageJson.devDependencies[dependencyPackageName];
509
+ const actualPackageDevDependencyVersion = coerce(
510
+ actualPackageDevDependencyValue,
511
+ );
419
512
  if (
420
- actualPackageDevDependencyVersion != null &amp;&amp;
421
- actualPackageDevDependencyVersion.raw !== expectedPackageDependencyVersion.raw
513
+ actualPackageDevDependencyVersion != null
514
+ &amp;&amp; actualPackageDevDependencyVersion.raw
515
+ !== expectedPackageDependencyVersion.raw
422
516
  ) {
423
517
  context.addError({
424
518
  file: packageJsonPath,
425
- message: `Expected devDependency on ${dependencyPackageName} to match version defined in monorepolint configuration '${expectedPackageDependencyValue}', got '${actualPackageDevDependencyValue}' instead`,
519
+ message:
520
+ `Expected devDependency on ${dependencyPackageName} to match version defined in monorepolint configuration '${expectedPackageDependencyValue}', got '${actualPackageDevDependencyValue}' instead`,
426
521
  fixer: () =&gt;
427
522
  mutateJson&lt;PackageJson&gt;(packageJsonPath, context.host, (input) =&gt; {
428
- input.devDependencies![dependencyPackageName] = expectedPackageDependencyValue;
523
+ input.devDependencies![dependencyPackageName] =
524
+ expectedPackageDependencyValue;
429
525
  return input;
430
526
  }),
431
527
  });
@@ -435,54 +531,69 @@ const ensurePackageIsCorrectVersion = (
435
531
  const ensurePackageMatchesSomeVersion = (
436
532
  context: Context,
437
533
  dependencyPackageName: string,
438
- acceptedPackageDependencyValues: string[]
534
+ acceptedPackageDependencyValues: string[],
439
535
  ) =&gt; {
440
536
  const packageJson = context.getPackageJson();
441
537
  const packageJsonPath = context.getPackageJsonPath();
442
538
  &nbsp;
443
- const acceptedPackageDependencyVersions: SemVer[] = acceptedPackageDependencyValues.map(
444
- (acceptedPackageDependencyValue) =&gt; {
445
- const acceptedPackageDependencyVersion = coerce(acceptedPackageDependencyValue);
446
- if (acceptedPackageDependencyVersion == null) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
447
- <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>
449
- <span class="cstat-no" title="statement not covered" > );</span>
450
- <span class="cstat-no" title="statement not covered" > }</span>
451
- return acceptedPackageDependencyVersion;
452
- }
453
- );
539
+ const acceptedPackageDependencyVersions: SemVer[] =
540
+ acceptedPackageDependencyValues.map(
541
+ (acceptedPackageDependencyValue) =&gt; {
542
+ const acceptedPackageDependencyVersion = coerce(
543
+ acceptedPackageDependencyValue,
544
+ );
545
+ if (acceptedPackageDependencyVersion == null) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
546
+ <span class="cstat-no" title="statement not covered" > throw new Error(</span>
547
+ <span class="cstat-no" title="statement not covered" > `Malformed accepted package dependency version defined in monorepolint configuration: ${dependencyPackageName} @ '${acceptedPackageDependencyValue}'`,</span>
548
+ <span class="cstat-no" title="statement not covered" > );</span>
549
+ <span class="cstat-no" title="statement not covered" > }</span>
550
+ return acceptedPackageDependencyVersion;
551
+ },
552
+ );
454
553
  &nbsp;
455
- const actualPackageDependencyValue = packageJson.dependencies &amp;&amp; packageJson.dependencies[dependencyPackageName];
554
+ const actualPackageDependencyValue = packageJson.dependencies
555
+ &amp;&amp; packageJson.dependencies[dependencyPackageName];
456
556
  const actualPackageDependencyVersion = coerce(actualPackageDependencyValue);
457
557
  if (
458
- actualPackageDependencyVersion != null &amp;&amp;
459
- acceptedPackageDependencyVersions.every(
460
- (acceptedPackageDependencyVersion) =&gt; actualPackageDependencyVersion.raw !== acceptedPackageDependencyVersion.raw
558
+ actualPackageDependencyVersion != null
559
+ &amp;&amp; acceptedPackageDependencyVersions.every(
560
+ (acceptedPackageDependencyVersion) =&gt;
561
+ actualPackageDependencyVersion.raw
562
+ !== acceptedPackageDependencyVersion.raw,
461
563
  )
462
564
  ) {
463
565
  context.addError({
464
566
  file: packageJsonPath,
465
- message: `Expected dependency on ${dependencyPackageName} to match one of '${JSON.stringify(
466
- acceptedPackageDependencyValues
467
- )}', got '${actualPackageDependencyValue}' instead.`,
567
+ message:
568
+ `Expected dependency on ${dependencyPackageName} to match one of '${
569
+ JSON.stringify(
570
+ acceptedPackageDependencyValues,
571
+ )
572
+ }', got '${actualPackageDependencyValue}' instead.`,
468
573
  });
469
574
  }
470
575
  &nbsp;
471
- const actualPackageDevDependencyValue =
472
- packageJson.devDependencies &amp;&amp; packageJson.devDependencies[dependencyPackageName];
473
- const actualPackageDevDependencyVersion = coerce(actualPackageDevDependencyValue);
576
+ const actualPackageDevDependencyValue = packageJson.devDependencies
577
+ &amp;&amp; packageJson.devDependencies[dependencyPackageName];
578
+ const actualPackageDevDependencyVersion = coerce(
579
+ actualPackageDevDependencyValue,
580
+ );
474
581
  if (
475
- actualPackageDevDependencyVersion != null &amp;&amp;
476
- acceptedPackageDependencyVersions.every(
582
+ actualPackageDevDependencyVersion != null
583
+ &amp;&amp; acceptedPackageDependencyVersions.every(
477
584
  (acceptedPackageDependencyVersion) =&gt;
478
- actualPackageDevDependencyVersion.raw !== acceptedPackageDependencyVersion.raw
585
+ actualPackageDevDependencyVersion.raw
586
+ !== acceptedPackageDependencyVersion.raw,
479
587
  )
480
588
  ) {
481
589
  context.addError({
482
590
  file: packageJsonPath,
483
- message: `Expected devDependency on ${dependencyPackageName} to match one of '${JSON.stringify(
484
- acceptedPackageDependencyValues
485
- )}', got '${actualPackageDevDependencyValue}' instead.`,
591
+ message:
592
+ `Expected devDependency on ${dependencyPackageName} to match one of '${
593
+ JSON.stringify(
594
+ acceptedPackageDependencyValues,
595
+ )
596
+ }', got '${actualPackageDevDependencyValue}' instead.`,
486
597
  });
487
598
  }
488
599
  };
@@ -493,7 +604,7 @@ const ensurePackageMatchesSomeVersion = (
493
604
  <div class='footer quiet pad2 space-top1 center small'>
494
605
  Code coverage generated by
495
606
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
496
- at 2025-01-17T16:18:41.406Z
607
+ at 2025-01-22T17:39:11.886Z
497
608
  </div>
498
609
  <script src="../prettify.js"></script>
499
610
  <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-22T17:39:11.886Z
374
398
  </div>
375
399
  <script src="../prettify.js"></script>
376
400
  <script>