@monorepolint/rules 0.6.0-alpha.5 → 0.6.0-alpha.6

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 (107) 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 +446 -94
  5. package/.turbo/turbo-transpile-typescript.log +5 -5
  6. package/CHANGELOG.md +102 -0
  7. package/build/js/index.js +413 -368
  8. package/build/js/index.js.map +1 -1
  9. package/build/tsconfig.tsbuildinfo +1 -1
  10. package/build/types/REMOVE.d.ts +2 -0
  11. package/build/types/REMOVE.d.ts.map +1 -0
  12. package/build/types/__tests__/alphabeticalDependencies.spec.d.ts +8 -0
  13. package/build/types/__tests__/alphabeticalDependencies.spec.d.ts.map +1 -0
  14. package/build/types/__tests__/forceError.spec.d.ts +8 -0
  15. package/build/types/__tests__/forceError.spec.d.ts.map +1 -0
  16. package/build/types/__tests__/oncePerPackage.spec.d.ts +8 -0
  17. package/build/types/__tests__/oncePerPackage.spec.d.ts.map +1 -0
  18. package/build/types/__tests__/standardTsconfig.spec.d.ts +8 -0
  19. package/build/types/__tests__/standardTsconfig.spec.d.ts.map +1 -0
  20. package/build/types/bannedDependencies.d.ts +9 -33
  21. package/build/types/bannedDependencies.d.ts.map +1 -1
  22. package/build/types/consistentDependencies.d.ts +6 -6
  23. package/build/types/consistentDependencies.d.ts.map +1 -1
  24. package/build/types/consistentVersions.d.ts +6 -10
  25. package/build/types/consistentVersions.d.ts.map +1 -1
  26. package/build/types/fileContents.d.ts +3 -2
  27. package/build/types/fileContents.d.ts.map +1 -1
  28. package/build/types/index.d.ts +1 -0
  29. package/build/types/index.d.ts.map +1 -1
  30. package/build/types/mustSatisfyPeerDependencies.d.ts +12 -190
  31. package/build/types/mustSatisfyPeerDependencies.d.ts.map +1 -1
  32. package/build/types/nestedWorkspaces.d.ts +2 -2
  33. package/build/types/nestedWorkspaces.d.ts.map +1 -1
  34. package/build/types/oncePerPackage.d.ts +6 -6
  35. package/build/types/oncePerPackage.d.ts.map +1 -1
  36. package/build/types/packageEntry.d.ts +11 -33
  37. package/build/types/packageEntry.d.ts.map +1 -1
  38. package/build/types/packageOrder.d.ts +2 -1
  39. package/build/types/packageOrder.d.ts.map +1 -1
  40. package/build/types/packageScript.d.ts +13 -22
  41. package/build/types/packageScript.d.ts.map +1 -1
  42. package/build/types/requireDependency.d.ts +5 -20
  43. package/build/types/requireDependency.d.ts.map +1 -1
  44. package/build/types/standardTsconfig.d.ts +12 -19
  45. package/build/types/standardTsconfig.d.ts.map +1 -1
  46. package/build/types/util/zodSchemas.d.ts +14 -0
  47. package/build/types/util/zodSchemas.d.ts.map +1 -0
  48. package/coverage/block-navigation.js +1 -1
  49. package/coverage/clover.xml +1454 -1442
  50. package/coverage/coverage-final.json +21 -19
  51. package/coverage/index.html +27 -27
  52. package/coverage/sorter.js +21 -7
  53. package/coverage/src/REMOVE.ts.html +88 -0
  54. package/coverage/src/alphabeticalDependencies.ts.html +34 -34
  55. package/coverage/src/alphabeticalScripts.ts.html +5 -5
  56. package/coverage/src/bannedDependencies.ts.html +20 -53
  57. package/coverage/src/consistentDependencies.ts.html +20 -14
  58. package/coverage/src/consistentVersions.ts.html +330 -183
  59. package/coverage/src/fileContents.ts.html +223 -88
  60. package/coverage/src/forceError.ts.html +60 -60
  61. package/coverage/src/index.html +127 -112
  62. package/coverage/src/index.ts.html +11 -5
  63. package/coverage/src/mustSatisfyPeerDependencies.ts.html +15 -501
  64. package/coverage/src/nestedWorkspaces.ts.html +5 -5
  65. package/coverage/src/oncePerPackage.ts.html +59 -59
  66. package/coverage/src/packageEntry.ts.html +121 -91
  67. package/coverage/src/packageOrder.ts.html +44 -14
  68. package/coverage/src/packageScript.ts.html +235 -88
  69. package/coverage/src/requireDependency.ts.html +241 -82
  70. package/coverage/src/standardTsconfig.ts.html +193 -193
  71. package/coverage/src/util/checkAlpha.ts.html +40 -40
  72. package/coverage/src/util/createRuleFactory.ts.html +19 -19
  73. package/coverage/src/util/index.html +30 -15
  74. package/coverage/src/util/makeDirectory.ts.html +11 -11
  75. package/coverage/src/util/packageDependencyGraphService.ts.html +1 -1
  76. package/coverage/src/util/zodSchemas.ts.html +130 -0
  77. package/package.json +14 -14
  78. package/src/REMOVE.ts +1 -0
  79. package/src/__tests__/alphabeticalDependencies.spec.ts +102 -0
  80. package/src/__tests__/alphabeticalScripts.spec.ts +18 -0
  81. package/src/__tests__/bannedDependencies.spec.ts +49 -0
  82. package/src/__tests__/consistentDependencies.spec.ts +23 -0
  83. package/src/__tests__/consistentVersions.spec.ts +142 -0
  84. package/src/__tests__/fileContents.spec.ts +348 -0
  85. package/src/__tests__/forceError.spec.ts +70 -0
  86. package/src/__tests__/mustSatisfyPeerDependencies.spec.ts +44 -0
  87. package/src/__tests__/nestedWorkspaces.spec.ts +14 -0
  88. package/src/__tests__/oncePerPackage.spec.ts +75 -0
  89. package/src/__tests__/packageEntry.spec.ts +177 -0
  90. package/src/__tests__/packageOrder.spec.ts +22 -0
  91. package/src/__tests__/packageScript.spec.ts +549 -0
  92. package/src/__tests__/requireDependency.spec.ts +259 -2
  93. package/src/__tests__/standardTsconfig.spec.ts +91 -0
  94. package/src/bannedDependencies.ts +14 -25
  95. package/src/consistentDependencies.ts +10 -8
  96. package/src/consistentVersions.ts +132 -83
  97. package/src/fileContents.ts +80 -35
  98. package/src/index.ts +2 -0
  99. package/src/mustSatisfyPeerDependencies.ts +10 -172
  100. package/src/nestedWorkspaces.ts +4 -4
  101. package/src/oncePerPackage.ts +6 -6
  102. package/src/packageEntry.ts +60 -50
  103. package/src/packageOrder.ts +19 -9
  104. package/src/packageScript.ts +67 -18
  105. package/src/requireDependency.ts +84 -31
  106. package/src/standardTsconfig.ts +26 -26
  107. package/src/util/zodSchemas.ts +15 -0
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">0% </span>
26
+ <span class="strong">69.46% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>0/131</span>
28
+ <span class='fraction'>91/131</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">0% </span>
33
+ <span class="strong">66.66% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>0/1</span>
35
+ <span class='fraction'>12/18</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">0% </span>
40
+ <span class="strong">100% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>0/1</span>
42
+ <span class='fraction'>6/6</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">0% </span>
47
+ <span class="strong">69.46% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>0/131</span>
49
+ <span class='fraction'>91/131</span>
50
50
  </div>
51
51
 
52
52
 
@@ -61,7 +61,7 @@
61
61
  </div>
62
62
  </template>
63
63
  </div>
64
- <div class='status-line low'></div>
64
+ <div class='status-line medium'></div>
65
65
  <pre><table class="coverage">
66
66
  <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
67
  <a name='L2'></a><a href='#L2'>2</a>
@@ -219,7 +219,7 @@
219
219
  <a name='L154'></a><a href='#L154'>154</a>
220
220
  <a name='L155'></a><a href='#L155'>155</a>
221
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-no">&nbsp;</span>
222
+ <a name='L157'></a><a href='#L157'>157</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
223
223
  <span class="cline-any cline-neutral">&nbsp;</span>
224
224
  <span class="cline-any cline-neutral">&nbsp;</span>
225
225
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -227,55 +227,55 @@
227
227
  <span class="cline-any cline-neutral">&nbsp;</span>
228
228
  <span class="cline-any cline-neutral">&nbsp;</span>
229
229
  <span class="cline-any cline-neutral">&nbsp;</span>
230
- <span class="cline-any cline-no">&nbsp;</span>
231
- <span class="cline-any cline-no">&nbsp;</span>
232
- <span class="cline-any cline-no">&nbsp;</span>
233
- <span class="cline-any cline-no">&nbsp;</span>
234
- <span class="cline-any cline-no">&nbsp;</span>
230
+ <span class="cline-any cline-yes">1x</span>
231
+ <span class="cline-any cline-yes">1x</span>
232
+ <span class="cline-any cline-yes">1x</span>
233
+ <span class="cline-any cline-yes">1x</span>
234
+ <span class="cline-any cline-yes">1x</span>
235
235
  <span class="cline-any cline-neutral">&nbsp;</span>
236
- <span class="cline-any cline-no">&nbsp;</span>
236
+ <span class="cline-any cline-yes">1x</span>
237
237
  <span class="cline-any cline-neutral">&nbsp;</span>
238
- <span class="cline-any cline-no">&nbsp;</span>
239
- <span class="cline-any cline-no">&nbsp;</span>
240
- <span class="cline-any cline-no">&nbsp;</span>
241
- <span class="cline-any cline-no">&nbsp;</span>
242
- <span class="cline-any cline-no">&nbsp;</span>
243
- <span class="cline-any cline-no">&nbsp;</span>
244
- <span class="cline-any cline-no">&nbsp;</span>
245
- <span class="cline-any cline-no">&nbsp;</span>
246
- <span class="cline-any cline-no">&nbsp;</span>
247
- <span class="cline-any cline-no">&nbsp;</span>
248
- <span class="cline-any cline-no">&nbsp;</span>
249
- <span class="cline-any cline-no">&nbsp;</span>
250
- <span class="cline-any cline-no">&nbsp;</span>
251
- <span class="cline-any cline-no">&nbsp;</span>
252
- <span class="cline-any cline-no">&nbsp;</span>
253
- <span class="cline-any cline-no">&nbsp;</span>
254
- <span class="cline-any cline-no">&nbsp;</span>
255
- <span class="cline-any cline-no">&nbsp;</span>
256
- <span class="cline-any cline-no">&nbsp;</span>
257
- <span class="cline-any cline-no">&nbsp;</span>
258
- <span class="cline-any cline-no">&nbsp;</span>
238
+ <span class="cline-any cline-yes">1x</span>
239
+ <span class="cline-any cline-yes">1x</span>
240
+ <span class="cline-any cline-yes">1x</span>
241
+ <span class="cline-any cline-yes">1x</span>
242
+ <span class="cline-any cline-yes">1x</span>
243
+ <span class="cline-any cline-yes">1x</span>
244
+ <span class="cline-any cline-yes">1x</span>
245
+ <span class="cline-any cline-yes">1x</span>
246
+ <span class="cline-any cline-yes">1x</span>
247
+ <span class="cline-any cline-yes">12x</span>
248
+ <span class="cline-any cline-yes">12x</span>
249
+ <span class="cline-any cline-yes">4x</span>
250
+ <span class="cline-any cline-yes">4x</span>
251
+ <span class="cline-any cline-yes">12x</span>
252
+ <span class="cline-any cline-yes">6x</span>
253
+ <span class="cline-any cline-yes">6x</span>
254
+ <span class="cline-any cline-yes">12x</span>
255
+ <span class="cline-any cline-yes">4x</span>
256
+ <span class="cline-any cline-yes">4x</span>
259
257
  <span class="cline-any cline-neutral">&nbsp;</span>
260
- <span class="cline-any cline-no">&nbsp;</span>
261
- <span class="cline-any cline-no">&nbsp;</span>
258
+ <span class="cline-any cline-yes">12x</span>
259
+ <span class="cline-any cline-yes">1x</span>
260
+ <span class="cline-any cline-yes">1x</span>
261
+ <span class="cline-any cline-yes">1x</span>
262
262
  <span class="cline-any cline-neutral">&nbsp;</span>
263
263
  <span class="cline-any cline-neutral">&nbsp;</span>
264
264
  <span class="cline-any cline-neutral">&nbsp;</span>
265
265
  <span class="cline-any cline-neutral">&nbsp;</span>
266
- <span class="cline-any cline-no">&nbsp;</span>
267
- <span class="cline-any cline-no">&nbsp;</span>
268
- <span class="cline-any cline-no">&nbsp;</span>
269
- <span class="cline-any cline-no">&nbsp;</span>
270
- <span class="cline-any cline-no">&nbsp;</span>
271
- <span class="cline-any cline-no">&nbsp;</span>
272
- <span class="cline-any cline-no">&nbsp;</span>
266
+ <span class="cline-any cline-yes">1x</span>
267
+ <span class="cline-any cline-yes">1x</span>
268
+ <span class="cline-any cline-yes">1x</span>
269
+ <span class="cline-any cline-yes">4x</span>
270
+ <span class="cline-any cline-yes">4x</span>
271
+ <span class="cline-any cline-yes">4x</span>
272
+ <span class="cline-any cline-yes">4x</span>
273
273
  <span class="cline-any cline-neutral">&nbsp;</span>
274
- <span class="cline-any cline-no">&nbsp;</span>
275
- <span class="cline-any cline-no">&nbsp;</span>
276
- <span class="cline-any cline-no">&nbsp;</span>
274
+ <span class="cline-any cline-yes">4x</span>
275
+ <span class="cline-any cline-yes">2x</span>
276
+ <span class="cline-any cline-yes">2x</span>
277
277
  <span class="cline-any cline-neutral">&nbsp;</span>
278
- <span class="cline-any cline-no">&nbsp;</span>
278
+ <span class="cline-any cline-yes">4x</span>
279
279
  <span class="cline-any cline-no">&nbsp;</span>
280
280
  <span class="cline-any cline-no">&nbsp;</span>
281
281
  <span class="cline-any cline-no">&nbsp;</span>
@@ -283,26 +283,26 @@
283
283
  <span class="cline-any cline-no">&nbsp;</span>
284
284
  <span class="cline-any cline-no">&nbsp;</span>
285
285
  <span class="cline-any cline-neutral">&nbsp;</span>
286
- <span class="cline-any cline-no">&nbsp;</span>
287
- <span class="cline-any cline-no">&nbsp;</span>
288
- <span class="cline-any cline-no">&nbsp;</span>
289
- <span class="cline-any cline-no">&nbsp;</span>
290
- <span class="cline-any cline-no">&nbsp;</span>
291
- <span class="cline-any cline-no">&nbsp;</span>
292
- <span class="cline-any cline-no">&nbsp;</span>
293
- <span class="cline-any cline-no">&nbsp;</span>
294
- <span class="cline-any cline-no">&nbsp;</span>
295
- <span class="cline-any cline-no">&nbsp;</span>
296
- <span class="cline-any cline-no">&nbsp;</span>
297
- <span class="cline-any cline-no">&nbsp;</span>
298
- <span class="cline-any cline-no">&nbsp;</span>
299
- <span class="cline-any cline-no">&nbsp;</span>
300
- <span class="cline-any cline-no">&nbsp;</span>
286
+ <span class="cline-any cline-yes">4x</span>
287
+ <span class="cline-any cline-yes">2x</span>
288
+ <span class="cline-any cline-yes">2x</span>
289
+ <span class="cline-any cline-yes">2x</span>
290
+ <span class="cline-any cline-yes">2x</span>
291
+ <span class="cline-any cline-yes">2x</span>
292
+ <span class="cline-any cline-yes">2x</span>
293
+ <span class="cline-any cline-yes">2x</span>
294
+ <span class="cline-any cline-yes">2x</span>
295
+ <span class="cline-any cline-yes">2x</span>
296
+ <span class="cline-any cline-yes">2x</span>
297
+ <span class="cline-any cline-yes">2x</span>
298
+ <span class="cline-any cline-yes">4x</span>
299
+ <span class="cline-any cline-yes">1x</span>
300
+ <span class="cline-any cline-yes">1x</span>
301
301
  <span class="cline-any cline-neutral">&nbsp;</span>
302
+ <span class="cline-any cline-yes">4x</span>
303
+ <span class="cline-any cline-yes">4x</span>
302
304
  <span class="cline-any cline-no">&nbsp;</span>
303
- <span class="cline-any cline-no">&nbsp;</span>
304
- <span class="cline-any cline-no">&nbsp;</span>
305
- <span class="cline-any cline-no">&nbsp;</span>
305
+ <span class="cline-any cline-yes">4x</span>
306
306
  <span class="cline-any cline-no">&nbsp;</span>
307
307
  <span class="cline-any cline-no">&nbsp;</span>
308
308
  <span class="cline-any cline-no">&nbsp;</span>
@@ -315,40 +315,40 @@
315
315
  <span class="cline-any cline-no">&nbsp;</span>
316
316
  <span class="cline-any cline-no">&nbsp;</span>
317
317
  <span class="cline-any cline-no">&nbsp;</span>
318
+ <span class="cline-any cline-yes">4x</span>
319
+ <span class="cline-any cline-yes">4x</span>
320
+ <span class="cline-any cline-yes">4x</span>
321
+ <span class="cline-any cline-yes">4x</span>
322
+ <span class="cline-any cline-yes">4x</span>
323
+ <span class="cline-any cline-yes">4x</span>
324
+ <span class="cline-any cline-yes">4x</span>
325
+ <span class="cline-any cline-yes">4x</span>
318
326
  <span class="cline-any cline-no">&nbsp;</span>
319
327
  <span class="cline-any cline-no">&nbsp;</span>
320
- <span class="cline-any cline-no">&nbsp;</span>
321
- <span class="cline-any cline-no">&nbsp;</span>
322
- <span class="cline-any cline-no">&nbsp;</span>
323
- <span class="cline-any cline-no">&nbsp;</span>
324
- <span class="cline-any cline-no">&nbsp;</span>
325
- <span class="cline-any cline-no">&nbsp;</span>
326
- <span class="cline-any cline-no">&nbsp;</span>
327
- <span class="cline-any cline-no">&nbsp;</span>
328
- <span class="cline-any cline-no">&nbsp;</span>
328
+ <span class="cline-any cline-yes">4x</span>
329
329
  <span class="cline-any cline-neutral">&nbsp;</span>
330
- <span class="cline-any cline-no">&nbsp;</span>
330
+ <span class="cline-any cline-yes">4x</span>
331
331
  <span class="cline-any cline-neutral">&nbsp;</span>
332
- <span class="cline-any cline-no">&nbsp;</span>
333
- <span class="cline-any cline-no">&nbsp;</span>
334
- <span class="cline-any cline-no">&nbsp;</span>
335
- <span class="cline-any cline-no">&nbsp;</span>
336
- <span class="cline-any cline-no">&nbsp;</span>
337
- <span class="cline-any cline-no">&nbsp;</span>
338
- <span class="cline-any cline-no">&nbsp;</span>
339
- <span class="cline-any cline-no">&nbsp;</span>
340
- <span class="cline-any cline-no">&nbsp;</span>
341
- <span class="cline-any cline-no">&nbsp;</span>
332
+ <span class="cline-any cline-yes">4x</span>
333
+ <span class="cline-any cline-yes">4x</span>
334
+ <span class="cline-any cline-yes">4x</span>
335
+ <span class="cline-any cline-yes">4x</span>
336
+ <span class="cline-any cline-yes">4x</span>
337
+ <span class="cline-any cline-yes">4x</span>
338
+ <span class="cline-any cline-yes">4x</span>
339
+ <span class="cline-any cline-yes">4x</span>
340
+ <span class="cline-any cline-yes">4x</span>
341
+ <span class="cline-any cline-yes">4x</span>
342
342
  <span class="cline-any cline-neutral">&nbsp;</span>
343
- <span class="cline-any cline-no">&nbsp;</span>
344
- <span class="cline-any cline-no">&nbsp;</span>
343
+ <span class="cline-any cline-yes">4x</span>
344
+ <span class="cline-any cline-yes">4x</span>
345
345
  <span class="cline-any cline-neutral">&nbsp;</span>
346
- <span class="cline-any cline-no">&nbsp;</span>
347
- <span class="cline-any cline-no">&nbsp;</span>
348
- <span class="cline-any cline-no">&nbsp;</span>
349
- <span class="cline-any cline-no">&nbsp;</span>
350
- <span class="cline-any cline-no">&nbsp;</span>
351
- <span class="cline-any cline-no">&nbsp;</span>
346
+ <span class="cline-any cline-yes">4x</span>
347
+ <span class="cline-any cline-yes">4x</span>
348
+ <span class="cline-any cline-yes">4x</span>
349
+ <span class="cline-any cline-yes">4x</span>
350
+ <span class="cline-any cline-yes">4x</span>
351
+ <span class="cline-any cline-yes">4x</span>
352
352
  <span class="cline-any cline-no">&nbsp;</span>
353
353
  <span class="cline-any cline-no">&nbsp;</span>
354
354
  <span class="cline-any cline-no">&nbsp;</span>
@@ -364,7 +364,7 @@
364
364
  <span class="cline-any cline-no">&nbsp;</span>
365
365
  <span class="cline-any cline-no">&nbsp;</span>
366
366
  <span class="cline-any cline-neutral">&nbsp;</span>
367
- <span class="cline-any cline-no">&nbsp;</span>
367
+ <span class="cline-any cline-yes">4x</span>
368
368
  <span class="cline-any cline-no">&nbsp;</span>
369
369
  <span class="cline-any cline-no">&nbsp;</span>
370
370
  <span class="cline-any cline-no">&nbsp;</span>
@@ -372,10 +372,10 @@
372
372
  <span class="cline-any cline-no">&nbsp;</span>
373
373
  <span class="cline-any cline-no">&nbsp;</span>
374
374
  <span class="cline-any cline-neutral">&nbsp;</span>
375
- <span class="cline-any cline-no">&nbsp;</span>
376
- <span class="cline-any cline-no">&nbsp;</span>
377
- <span class="cline-any cline-no">&nbsp;</span>
378
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js"><span class="cstat-no" title="statement not covered" >/*!<span class="fstat-no" title="function not covered" ><span class="branch-0 cbranch-no" title="branch not covered" ></span></span></span>
375
+ <span class="cline-any cline-yes">4x</span>
376
+ <span class="cline-any cline-yes">4x</span>
377
+ <span class="cline-any cline-yes">4x</span>
378
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">/*!
379
379
  * Copyright 2019 Palantir Technologies, Inc.
380
380
  *
381
381
  * Licensed under the MIT license. See LICENSE file in the project root for details.
@@ -383,55 +383,55 @@
383
383
  */
384
384
  &nbsp;
385
385
  import { Context } from "@monorepolint/config";
386
- <span class="cstat-no" title="statement not covered" >import { matchesAnyGlob } from "@monorepolint/utils";</span>
387
- <span class="cstat-no" title="statement not covered" >import { diff } from "jest-diff";</span>
388
- <span class="cstat-no" title="statement not covered" >import * as path from "path";</span>
389
- <span class="cstat-no" title="statement not covered" >import * as r from "runtypes";</span>
390
- <span class="cstat-no" title="statement not covered" >import { createRuleFactory } from "./util/createRuleFactory.js";</span>
386
+ import { matchesAnyGlob } from "@monorepolint/utils";
387
+ import { diff } from "jest-diff";
388
+ import * as path from "path";
389
+ import { z } from "zod";
390
+ import { createRuleFactory } from "./util/createRuleFactory.js";
391
391
  &nbsp;
392
- <span class="cstat-no" title="statement not covered" >const DEFAULT_TSCONFIG_FILENAME = "tsconfig.json";</span>
392
+ const DEFAULT_TSCONFIG_FILENAME = "tsconfig.json";
393
393
  &nbsp;
394
- <span class="cstat-no" title="statement not covered" >const Options = r</span>
395
- <span class="cstat-no" title="statement not covered" > .Partial({</span>
396
- <span class="cstat-no" title="statement not covered" > file: r.String,</span>
397
- <span class="cstat-no" title="statement not covered" > generator: r.Function,</span>
398
- <span class="cstat-no" title="statement not covered" > tsconfigReferenceFile: r.String,</span>
399
- <span class="cstat-no" title="statement not covered" > template: r.Record({}).Or(r.String),</span>
400
- <span class="cstat-no" title="statement not covered" > templateFile: r.String,</span>
401
- <span class="cstat-no" title="statement not covered" > excludedReferences: r.Array(r.String).Or(r.Undefined),</span>
402
- <span class="cstat-no" title="statement not covered" > additionalReferences: r.Array(r.String).Or(r.Undefined),</span>
403
- <span class="cstat-no" title="statement not covered" > })</span>
404
- <span class="cstat-no" title="statement not covered" > .withConstraint(({ generator, template, templateFile }) =&gt; {</span>
405
- <span class="cstat-no" title="statement not covered" > let count = 0;</span>
406
- <span class="cstat-no" title="statement not covered" > if (generator) {</span>
407
- <span class="cstat-no" title="statement not covered" > count++;</span>
408
- <span class="cstat-no" title="statement not covered" > }</span>
409
- <span class="cstat-no" title="statement not covered" > if (template) {</span>
410
- <span class="cstat-no" title="statement not covered" > count++;</span>
411
- <span class="cstat-no" title="statement not covered" > }</span>
412
- <span class="cstat-no" title="statement not covered" > if (templateFile) {</span>
413
- <span class="cstat-no" title="statement not covered" > count++;</span>
414
- <span class="cstat-no" title="statement not covered" > }</span>
394
+ const Options = z.object({
395
+ file: z.string().optional(),
396
+ generator: z.custom&lt;(context: Context) =&gt; Promise&lt;string&gt; | string&gt;().optional(),
397
+ tsconfigReferenceFile: z.string().optional(),
398
+ template: z.record(z.string(), z.unknown()).optional(),
399
+ templateFile: z.string().optional(),
400
+ excludedReferences: z.array(z.string()).optional(),
401
+ additionalReferences: z.array(z.string()).optional(),
402
+ }).partial().refine(({ generator, template, templateFile }) =&gt; {
403
+ let count = 0;
404
+ if (generator) {
405
+ count++;
406
+ }
407
+ if (template) {
408
+ count++;
409
+ }
410
+ if (templateFile) {
411
+ count++;
412
+ }
415
413
  &nbsp;
416
- <span class="cstat-no" title="statement not covered" > return count === 1 || "Expect one of { generator, template, templateFile }";</span>
417
- <span class="cstat-no" title="statement not covered" > });</span>
414
+ return count === 1;
415
+ }, {
416
+ message: "Expect one of { generator, template, templateFile }",
417
+ });
418
418
  &nbsp;
419
419
  // eslint-disable-next-line @typescript-eslint/no-empty-object-type
420
- export interface Options extends r.Static&lt;typeof Options&gt; {}
420
+ export interface Options extends z.infer&lt;typeof Options&gt; {}
421
421
  &nbsp;
422
- <span class="cstat-no" title="statement not covered" >export const standardTsconfig = createRuleFactory&lt;Options&gt;({</span>
423
- <span class="cstat-no" title="statement not covered" > name: "standardTsconfig",</span>
424
- <span class="cstat-no" title="statement not covered" > check: async (context, opts) =&gt; {</span>
425
- <span class="cstat-no" title="statement not covered" > const tsconfigFileName = opts.file ?? DEFAULT_TSCONFIG_FILENAME;</span>
426
- <span class="cstat-no" title="statement not covered" > const fullPath = path.resolve(context.packageDir, tsconfigFileName);</span>
427
- <span class="cstat-no" title="statement not covered" > const generator = getGenerator(context, opts);</span>
428
- <span class="cstat-no" title="statement not covered" > const expectedContent = await generator(context);</span>
422
+ export const standardTsconfig = createRuleFactory&lt;Options&gt;({
423
+ name: "standardTsconfig",
424
+ check: async (context, opts) =&gt; {
425
+ const tsconfigFileName = opts.file ?? DEFAULT_TSCONFIG_FILENAME;
426
+ const fullPath = path.resolve(context.packageDir, tsconfigFileName);
427
+ const generator = getGenerator(context, opts);
428
+ const expectedContent = await generator(context);
429
429
  &nbsp;
430
- <span class="cstat-no" title="statement not covered" > const actualContent = context.host.exists(fullPath)</span>
431
- <span class="cstat-no" title="statement not covered" > ? context.host.readFile(fullPath, { encoding: "utf-8" })</span>
432
- <span class="cstat-no" title="statement not covered" > : undefined;</span>
430
+ const actualContent = context.host.exists(fullPath)
431
+ ? context.host.readFile(fullPath, { encoding: "utf-8" })
432
+ : undefined;
433
433
  &nbsp;
434
- <span class="cstat-no" title="statement not covered" > if (expectedContent === undefined) {</span>
434
+ if (expectedContent === undefined) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
435
435
  <span class="cstat-no" title="statement not covered" > context.addWarning({</span>
436
436
  <span class="cstat-no" title="statement not covered" > file: fullPath,</span>
437
437
  <span class="cstat-no" title="statement not covered" > message: "Excluding from expect-standard-tsconfig",</span>
@@ -439,26 +439,26 @@ export interface Options extends r.Static&lt;typeof Options&gt; {}
439
439
  <span class="cstat-no" title="statement not covered" > return;</span>
440
440
  <span class="cstat-no" title="statement not covered" > }</span>
441
441
  &nbsp;
442
- <span class="cstat-no" title="statement not covered" > if (actualContent !== expectedContent) {</span>
443
- <span class="cstat-no" title="statement not covered" > context.addError({</span>
444
- <span class="cstat-no" title="statement not covered" > file: fullPath,</span>
445
- <span class="cstat-no" title="statement not covered" > message: "Expect file contents to match",</span>
446
- <span class="cstat-no" title="statement not covered" > longMessage: diff(expectedContent, actualContent, { expand: true }),</span>
447
- <span class="cstat-no" title="statement not covered" > fixer: () =&gt; {</span>
448
- <span class="cstat-no" title="statement not covered" > context.host.writeFile(fullPath, expectedContent, {</span>
449
- <span class="cstat-no" title="statement not covered" > encoding: "utf-8",</span>
450
- <span class="cstat-no" title="statement not covered" > });</span>
451
- <span class="cstat-no" title="statement not covered" > },</span>
452
- <span class="cstat-no" title="statement not covered" > });</span>
453
- <span class="cstat-no" title="statement not covered" > }</span>
454
- <span class="cstat-no" title="statement not covered" > },</span>
455
- <span class="cstat-no" title="statement not covered" > validateOptions: Options.check,</span>
456
- <span class="cstat-no" title="statement not covered" >});</span>
442
+ if (actualContent !== expectedContent) {
443
+ context.addError({
444
+ file: fullPath,
445
+ message: "Expect file contents to match",
446
+ longMessage: diff(expectedContent, actualContent, { expand: true }),
447
+ fixer: () =&gt; {
448
+ context.host.writeFile(fullPath, expectedContent, {
449
+ encoding: "utf-8",
450
+ });
451
+ },
452
+ });
453
+ }
454
+ },
455
+ validateOptions: Options.parse,
456
+ });
457
457
  &nbsp;
458
- <span class="cstat-no" title="statement not covered" >function getGenerator(context: Context, opts: Options) {</span>
459
- <span class="cstat-no" title="statement not covered" > if (opts.generator) {</span>
458
+ function getGenerator(context: Context, opts: Options) {
459
+ if (opts.generator) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
460
460
  <span class="cstat-no" title="statement not covered" > return opts.generator;</span>
461
- <span class="cstat-no" title="statement not covered" > } else if (opts.templateFile) {</span>
461
+ } else if (opts.templateFile) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
462
462
  <span class="cstat-no" title="statement not covered" > const { packageDir: workspacePackageDir } = context.getWorkspaceContext();</span>
463
463
  <span class="cstat-no" title="statement not covered" > const fullPath = path.resolve(workspacePackageDir, opts.templateFile);</span>
464
464
  <span class="cstat-no" title="statement not covered" > const template = JSON.parse(</span>
@@ -471,40 +471,40 @@ export interface Options extends r.Static&lt;typeof Options&gt; {}
471
471
  <span class="cstat-no" title="statement not covered" > opts.additionalReferences,</span>
472
472
  <span class="cstat-no" title="statement not covered" > opts.tsconfigReferenceFile,</span>
473
473
  <span class="cstat-no" title="statement not covered" > );</span>
474
- <span class="cstat-no" title="statement not covered" > } else if (opts.template) {</span>
475
- <span class="cstat-no" title="statement not covered" > return makeGenerator(</span>
476
- <span class="cstat-no" title="statement not covered" > opts.template,</span>
477
- <span class="cstat-no" title="statement not covered" > opts.excludedReferences,</span>
478
- <span class="cstat-no" title="statement not covered" > opts.additionalReferences,</span>
479
- <span class="cstat-no" title="statement not covered" > opts.tsconfigReferenceFile,</span>
480
- <span class="cstat-no" title="statement not covered" > );</span>
481
- <span class="cstat-no" title="statement not covered" > } else {</span>
474
+ } else if (opts.template) {
475
+ return makeGenerator(
476
+ opts.template,
477
+ opts.excludedReferences,
478
+ opts.additionalReferences,
479
+ opts.tsconfigReferenceFile,
480
+ );
481
+ <span class="branch-0 cbranch-no" title="branch not covered" > } else {</span>
482
482
  <span class="cstat-no" title="statement not covered" > throw new Error("Unable to make generator");</span>
483
483
  <span class="cstat-no" title="statement not covered" > }</span>
484
- <span class="cstat-no" title="statement not covered" >}</span>
484
+ }
485
485
  &nbsp;
486
- <span class="cstat-no" title="statement not covered" >function makeGenerator(</span>
486
+ function makeGenerator(
487
487
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
488
- <span class="cstat-no" title="statement not covered" > template: any,</span>
489
- <span class="cstat-no" title="statement not covered" > excludedReferences: ReadonlyArray&lt;string&gt; | undefined,</span>
490
- <span class="cstat-no" title="statement not covered" > additionalReferences: ReadonlyArray&lt;string&gt; | undefined,</span>
491
- <span class="cstat-no" title="statement not covered" > tsconfigReferenceFile?: string,</span>
492
- <span class="cstat-no" title="statement not covered" >) {</span>
493
- <span class="cstat-no" title="statement not covered" > return async function generator(context: Context) {</span>
494
- <span class="cstat-no" title="statement not covered" > template = {</span>
495
- <span class="cstat-no" title="statement not covered" > ...template,</span>
496
- <span class="cstat-no" title="statement not covered" > references: [],</span>
497
- <span class="cstat-no" title="statement not covered" > }; // make a copy and ensure we have a references array</span>
488
+ template: any,
489
+ excludedReferences: ReadonlyArray&lt;string&gt; | undefined,
490
+ additionalReferences: ReadonlyArray&lt;string&gt; | undefined,
491
+ tsconfigReferenceFile?: string,
492
+ ) {
493
+ return async function generator(context: Context) {
494
+ template = {
495
+ ...template,
496
+ references: [],
497
+ }; // make a copy and ensure we have a references array
498
498
  &nbsp;
499
- <span class="cstat-no" title="statement not covered" > const nameToDirectory = await context.getWorkspaceContext()</span>
500
- <span class="cstat-no" title="statement not covered" > .getPackageNameToDir();</span>
499
+ const nameToDirectory = await context.getWorkspaceContext()
500
+ .getPackageNameToDir();
501
501
  &nbsp;
502
- <span class="cstat-no" title="statement not covered" > const packageJson = context.getPackageJson();</span>
503
- <span class="cstat-no" title="statement not covered" > const deps = [</span>
504
- <span class="cstat-no" title="statement not covered" > ...Object.keys(packageJson.dependencies || {}),</span>
505
- <span class="cstat-no" title="statement not covered" > ...Object.keys(packageJson.devDependencies || {}),</span>
506
- <span class="cstat-no" title="statement not covered" > ];</span>
507
- <span class="cstat-no" title="statement not covered" > for (const dep of deps) {</span>
502
+ const packageJson = context.getPackageJson();
503
+ const deps = [
504
+ ...Object.keys(packageJson.dependencies || {}),
505
+ ...Object.keys(packageJson.devDependencies || {}),
506
+ ];
507
+ for (const dep of deps) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
508
508
  <span class="cstat-no" title="statement not covered" > const packageDir = nameToDirectory.get(dep);</span>
509
509
  <span class="cstat-no" title="statement not covered" > if (</span>
510
510
  <span class="cstat-no" title="statement not covered" > packageDir !== undefined</span>
@@ -520,7 +520,7 @@ export interface Options extends r.Static&lt;typeof Options&gt; {}
520
520
  <span class="cstat-no" title="statement not covered" > }</span>
521
521
  <span class="cstat-no" title="statement not covered" > }</span>
522
522
  &nbsp;
523
- <span class="cstat-no" title="statement not covered" > if (additionalReferences) {</span>
523
+ if (additionalReferences) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
524
524
  <span class="cstat-no" title="statement not covered" > for (const additionalReference of additionalReferences) {</span>
525
525
  <span class="cstat-no" title="statement not covered" > template.references.push({</span>
526
526
  <span class="cstat-no" title="statement not covered" > path: additionalReference,</span>
@@ -528,9 +528,9 @@ export interface Options extends r.Static&lt;typeof Options&gt; {}
528
528
  <span class="cstat-no" title="statement not covered" > }</span>
529
529
  <span class="cstat-no" title="statement not covered" > }</span>
530
530
  &nbsp;
531
- <span class="cstat-no" title="statement not covered" > return JSON.stringify(template, undefined, 2) + "\n";</span>
532
- <span class="cstat-no" title="statement not covered" > };</span>
533
- <span class="cstat-no" title="statement not covered" >}</span>
531
+ return JSON.stringify(template, undefined, 2) + "\n";
532
+ };
533
+ }
534
534
  &nbsp;</pre></td></tr></table></pre>
535
535
 
536
536
  <div class='push'></div><!-- for sticky footer -->
@@ -538,7 +538,7 @@ export interface Options extends r.Static&lt;typeof Options&gt; {}
538
538
  <div class='footer quiet pad2 space-top1 center small'>
539
539
  Code coverage generated by
540
540
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
541
- at 2025-04-02T20:08:01.942Z
541
+ at 2025-11-07T18:00:58.549Z
542
542
  </div>
543
543
  <script src="../prettify.js"></script>
544
544
  <script>