@monorepolint/rules 0.6.0-alpha.4 → 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 +443 -92
  5. package/.turbo/turbo-transpile-typescript.log +5 -5
  6. package/CHANGELOG.md +112 -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 +1420 -1452
  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 +15 -15
  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 +31 -31
  61. package/coverage/src/index.html +104 -89
  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 +31 -31
  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 +212 -212
  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 +15 -15
  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">94.62% </span>
26
+ <span class="strong">92.98% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>1762/1862</span>
28
+ <span class='fraction'>1696/1824</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">87.95% </span>
33
+ <span class="strong">90.63% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>292/332</span>
35
+ <span class='fraction'>397/438</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">93.22% </span>
40
+ <span class="strong">97.4% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>55/59</span>
42
+ <span class='fraction'>75/77</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">94.62% </span>
47
+ <span class="strong">92.98% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>1762/1862</span>
49
+ <span class='fraction'>1696/1824</span>
50
50
  </div>
51
51
 
52
52
 
@@ -80,32 +80,32 @@
80
80
  </thead>
81
81
  <tbody><tr>
82
82
  <td class="file high" data-value="src"><a href="src/index.html">src</a></td>
83
- <td data-value="94.84" class="pic high">
84
- <div class="chart"><div class="cover-fill" style="width: 94%"></div><div class="cover-empty" style="width: 6%"></div></div>
83
+ <td data-value="92.91" class="pic high">
84
+ <div class="chart"><div class="cover-fill" style="width: 92%"></div><div class="cover-empty" style="width: 8%"></div></div>
85
85
  </td>
86
- <td data-value="94.84" class="pct high">94.84%</td>
87
- <td data-value="1707" class="abs high">1619/1707</td>
88
- <td data-value="88.74" class="pct high">88.74%</td>
89
- <td data-value="302" class="abs high">268/302</td>
90
- <td data-value="91.66" class="pct high">91.66%</td>
91
- <td data-value="48" class="abs high">44/48</td>
92
- <td data-value="94.84" class="pct high">94.84%</td>
93
- <td data-value="1707" class="abs high">1619/1707</td>
86
+ <td data-value="92.91" class="pct high">92.91%</td>
87
+ <td data-value="1665" class="abs high">1547/1665</td>
88
+ <td data-value="91.15" class="pct high">91.15%</td>
89
+ <td data-value="407" class="abs high">371/407</td>
90
+ <td data-value="96.96" class="pct high">96.96%</td>
91
+ <td data-value="66" class="abs high">64/66</td>
92
+ <td data-value="92.91" class="pct high">92.91%</td>
93
+ <td data-value="1665" class="abs high">1547/1665</td>
94
94
  </tr>
95
95
 
96
96
  <tr>
97
97
  <td class="file high" data-value="src/util"><a href="src/util/index.html">src/util</a></td>
98
- <td data-value="92.25" class="pic high">
99
- <div class="chart"><div class="cover-fill" style="width: 92%"></div><div class="cover-empty" style="width: 8%"></div></div>
98
+ <td data-value="93.71" class="pic high">
99
+ <div class="chart"><div class="cover-fill" style="width: 93%"></div><div class="cover-empty" style="width: 7%"></div></div>
100
100
  </td>
101
- <td data-value="92.25" class="pct high">92.25%</td>
102
- <td data-value="155" class="abs high">143/155</td>
103
- <td data-value="80" class="pct high">80%</td>
104
- <td data-value="30" class="abs high">24/30</td>
101
+ <td data-value="93.71" class="pct high">93.71%</td>
102
+ <td data-value="159" class="abs high">149/159</td>
103
+ <td data-value="83.87" class="pct high">83.87%</td>
104
+ <td data-value="31" class="abs high">26/31</td>
105
105
  <td data-value="100" class="pct high">100%</td>
106
106
  <td data-value="11" class="abs high">11/11</td>
107
- <td data-value="92.25" class="pct high">92.25%</td>
108
- <td data-value="155" class="abs high">143/155</td>
107
+ <td data-value="93.71" class="pct high">93.71%</td>
108
+ <td data-value="159" class="abs high">149/159</td>
109
109
  </tr>
110
110
 
111
111
  </tbody>
@@ -116,7 +116,7 @@
116
116
  <div class='footer quiet pad2 space-top1 center small'>
117
117
  Code coverage generated by
118
118
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
119
- at 2025-01-31T21:00:08.068Z
119
+ at 2025-11-07T18:00:58.549Z
120
120
  </div>
121
121
  <script src="prettify.js"></script>
122
122
  <script>
@@ -27,17 +27,31 @@ var addSorting = (function() {
27
27
  function onFilterInput() {
28
28
  const searchValue = document.getElementById('fileSearch').value;
29
29
  const rows = document.getElementsByTagName('tbody')[0].children;
30
+
31
+ // Try to create a RegExp from the searchValue. If it fails (invalid regex),
32
+ // it will be treated as a plain text search
33
+ let searchRegex;
34
+ try {
35
+ searchRegex = new RegExp(searchValue, 'i'); // 'i' for case-insensitive
36
+ } catch (error) {
37
+ searchRegex = null;
38
+ }
39
+
30
40
  for (let i = 0; i < rows.length; i++) {
31
41
  const row = rows[i];
32
- if (
33
- row.textContent
34
- .toLowerCase()
35
- .includes(searchValue.toLowerCase())
36
- ) {
37
- row.style.display = '';
42
+ let isMatch = false;
43
+
44
+ if (searchRegex) {
45
+ // If a valid regex was created, use it for matching
46
+ isMatch = searchRegex.test(row.textContent);
38
47
  } else {
39
- row.style.display = 'none';
48
+ // Otherwise, fall back to the original plain text search
49
+ isMatch = row.textContent
50
+ .toLowerCase()
51
+ .includes(searchValue.toLowerCase());
40
52
  }
53
+
54
+ row.style.display = isMatch ? '' : 'none';
41
55
  }
42
56
  }
43
57
 
@@ -0,0 +1,88 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for src/REMOVE.ts</title>
7
+ <meta charset="utf-8" />
8
+ <link rel="stylesheet" href="../prettify.css" />
9
+ <link rel="stylesheet" href="../base.css" />
10
+ <link rel="shortcut icon" type="image/x-icon" href="../favicon.png" />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
12
+ <style type='text/css'>
13
+ .coverage-summary .sorter {
14
+ background-image: url(../sort-arrow-sprite.png);
15
+ }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <div class='wrapper'>
21
+ <div class='pad1'>
22
+ <h1><a href="../index.html">All files</a> / <a href="index.html">src</a> REMOVE.ts</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">100% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>1/1</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">100% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>0/0</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">100% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>0/0</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">100% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>1/1</span>
50
+ </div>
51
+
52
+
53
+ </div>
54
+ <p class="quiet">
55
+ Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
+ </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input type="search" id="fileSearch">
61
+ </div>
62
+ </template>
63
+ </div>
64
+ <div class='status-line high'></div>
65
+ <pre><table class="coverage">
66
+ <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
+ <a name='L2'></a><a href='#L2'>2</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
68
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">export const REMOVE = Symbol.for("monorepolint/REMOVE");
69
+ &nbsp;</pre></td></tr></table></pre>
70
+
71
+ <div class='push'></div><!-- for sticky footer -->
72
+ </div><!-- /wrapper -->
73
+ <div class='footer quiet pad2 space-top1 center small'>
74
+ Code coverage generated by
75
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
76
+ at 2025-11-07T18:00:58.549Z
77
+ </div>
78
+ <script src="../prettify.js"></script>
79
+ <script>
80
+ window.onload = function () {
81
+ prettyPrint();
82
+ };
83
+ </script>
84
+ <script src="../sorter.js"></script>
85
+ <script src="../block-navigation.js"></script>
86
+ </body>
87
+ </html>
88
+
@@ -25,28 +25,28 @@
25
25
  <div class='fl pad1y space-right2'>
26
26
  <span class="strong">100% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>18/18</span>
28
+ <span class='fraction'>12/12</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
33
  <span class="strong">100% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>0/0</span>
35
+ <span class='fraction'>2/2</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
40
  <span class="strong">100% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>0/0</span>
42
+ <span class='fraction'>2/2</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
47
  <span class="strong">100% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>18/18</span>
49
+ <span class='fraction'>12/12</span>
50
50
  </div>
51
51
 
52
52
 
@@ -84,21 +84,21 @@
84
84
  <a name='L19'></a><a href='#L19'>19</a>
85
85
  <a name='L20'></a><a href='#L20'>20</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
86
86
  <span class="cline-any cline-neutral">&nbsp;</span>
87
+ <span class="cline-any cline-neutral">&nbsp;</span>
88
+ <span class="cline-any cline-neutral">&nbsp;</span>
89
+ <span class="cline-any cline-neutral">&nbsp;</span>
90
+ <span class="cline-any cline-neutral">&nbsp;</span>
91
+ <span class="cline-any cline-neutral">&nbsp;</span>
87
92
  <span class="cline-any cline-yes">1x</span>
88
93
  <span class="cline-any cline-yes">1x</span>
94
+ <span class="cline-any cline-neutral">&nbsp;</span>
89
95
  <span class="cline-any cline-yes">1x</span>
90
96
  <span class="cline-any cline-yes">1x</span>
91
97
  <span class="cline-any cline-yes">1x</span>
92
- <span class="cline-any cline-yes">1x</span>
93
- <span class="cline-any cline-yes">1x</span>
94
- <span class="cline-any cline-yes">1x</span>
95
- <span class="cline-any cline-yes">1x</span>
96
- <span class="cline-any cline-yes">1x</span>
97
- <span class="cline-any cline-yes">1x</span>
98
- <span class="cline-any cline-yes">1x</span>
99
- <span class="cline-any cline-yes">1x</span>
100
- <span class="cline-any cline-yes">1x</span>
101
- <span class="cline-any cline-yes">1x</span>
98
+ <span class="cline-any cline-yes">4x</span>
99
+ <span class="cline-any cline-yes">4x</span>
100
+ <span class="cline-any cline-yes">4x</span>
101
+ <span class="cline-any cline-yes">4x</span>
102
102
  <span class="cline-any cline-yes">1x</span>
103
103
  <span class="cline-any cline-yes">1x</span>
104
104
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">/*!
@@ -127,7 +127,7 @@ export const alphabeticalDependencies = createRuleFactory&lt;undefined&gt;({
127
127
  <div class='footer quiet pad2 space-top1 center small'>
128
128
  Code coverage generated by
129
129
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
130
- at 2025-01-31T21:00:08.068Z
130
+ at 2025-11-07T18:00:58.549Z
131
131
  </div>
132
132
  <script src="../prettify.js"></script>
133
133
  <script>
@@ -32,14 +32,14 @@
32
32
  <div class='fl pad1y space-right2'>
33
33
  <span class="strong">100% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>1/1</span>
35
+ <span class='fraction'>2/2</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">50% </span>
40
+ <span class="strong">100% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>1/2</span>
42
+ <span class='fraction'>2/2</span>
43
43
  </div>
44
44
 
45
45
 
@@ -112,7 +112,7 @@ export const alphabeticalScripts = createRuleFactory&lt;undefined&gt;({
112
112
  check: (context) =&gt; {
113
113
  checkAlpha(context, "scripts");
114
114
  },
115
- validateOptions: <span class="fstat-no" title="function not covered" >() =&gt; {},</span>
115
+ validateOptions: () =&gt; {},
116
116
  });
117
117
  &nbsp;</pre></td></tr></table></pre>
118
118
 
@@ -121,7 +121,7 @@ export const alphabeticalScripts = createRuleFactory&lt;undefined&gt;({
121
121
  <div class='footer quiet pad2 space-top1 center small'>
122
122
  Code coverage generated by
123
123
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
124
- at 2025-01-31T21:00:08.068Z
124
+ at 2025-11-07T18:00:58.549Z
125
125
  </div>
126
126
  <script src="../prettify.js"></script>
127
127
  <script>
@@ -23,9 +23,9 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">97.03% </span>
26
+ <span class="strong">96.77% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>131/135</span>
28
+ <span class='fraction'>120/124</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">97.03% </span>
47
+ <span class="strong">96.77% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>131/135</span>
49
+ <span class='fraction'>120/124</span>
50
50
  </div>
51
51
 
52
52
 
@@ -226,18 +226,7 @@
226
226
  <a name='L161'></a><a href='#L161'>161</a>
227
227
  <a name='L162'></a><a href='#L162'>162</a>
228
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></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
229
+ <a name='L164'></a><a href='#L164'>164</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
241
230
  <span class="cline-any cline-neutral">&nbsp;</span>
242
231
  <span class="cline-any cline-neutral">&nbsp;</span>
243
232
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -250,7 +239,6 @@
250
239
  <span class="cline-any cline-yes">1x</span>
251
240
  <span class="cline-any cline-yes">1x</span>
252
241
  <span class="cline-any cline-yes">1x</span>
253
- <span class="cline-any cline-yes">1x</span>
254
242
  <span class="cline-any cline-neutral">&nbsp;</span>
255
243
  <span class="cline-any cline-neutral">&nbsp;</span>
256
244
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -268,16 +256,6 @@
268
256
  <span class="cline-any cline-yes">1x</span>
269
257
  <span class="cline-any cline-yes">1x</span>
270
258
  <span class="cline-any cline-yes">1x</span>
271
- <span class="cline-any cline-yes">1x</span>
272
- <span class="cline-any cline-yes">1x</span>
273
- <span class="cline-any cline-yes">1x</span>
274
- <span class="cline-any cline-yes">1x</span>
275
- <span class="cline-any cline-yes">1x</span>
276
- <span class="cline-any cline-yes">1x</span>
277
- <span class="cline-any cline-yes">1x</span>
278
- <span class="cline-any cline-yes">1x</span>
279
- <span class="cline-any cline-yes">1x</span>
280
- <span class="cline-any cline-yes">1x</span>
281
259
  <span class="cline-any cline-neutral">&nbsp;</span>
282
260
  <span class="cline-any cline-neutral">&nbsp;</span>
283
261
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -419,10 +397,9 @@
419
397
  */
420
398
  &nbsp;
421
399
  import { Context } from "@monorepolint/config";
422
- import { matchesAnyGlob } from "@monorepolint/utils";
423
- import { AggregateTiming } from "@monorepolint/utils";
400
+ import { AggregateTiming, matchesAnyGlob } from "@monorepolint/utils";
424
401
  import * as path from "node:path";
425
- import * as r from "runtypes";
402
+ import { z } from "zod";
426
403
  import { createRuleFactory } from "./util/createRuleFactory.js";
427
404
  import {
428
405
  IPackageDependencyGraphNode,
@@ -430,30 +407,20 @@ import {
430
407
  } from "./util/packageDependencyGraphService.js";
431
408
  // FIXME: This rule is messed. bannedTransitiveDependencies doesnt glob
432
409
  &nbsp;
433
- const bannedDepGlobsField = r.Union(
434
- r.Array(r.String),
435
- r.Record({
436
- glob: r.Array(r.String).optional(),
437
- exact: r.Array(r.String).optional(),
410
+ const bannedDepGlobsField = z.union([
411
+ z.array(z.string()),
412
+ z.object({
413
+ glob: z.array(z.string()).optional(),
414
+ exact: z.array(z.string()).optional(),
438
415
  }),
439
- );
416
+ ]);
440
417
  &nbsp;
441
- const Options = r.Union(
442
- r.Record({
443
- bannedDependencies: bannedDepGlobsField,
444
- bannedTransitiveDependencies: r.Undefined.optional(),
445
- }),
446
- r.Record({
447
- bannedDependencies: bannedDepGlobsField.optional(),
448
- bannedTransitiveDependencies: r.Array(r.String),
449
- }),
450
- r.Record({
451
- bannedDependencies: bannedDepGlobsField.optional(),
452
- bannedTransitiveDependencies: r.Array(r.String).optional(),
453
- }),
454
- );
418
+ const Options = z.object({
419
+ bannedDependencies: bannedDepGlobsField.optional(),
420
+ bannedTransitiveDependencies: z.array(z.string()).optional(),
421
+ });
455
422
  &nbsp;
456
- export type Options = r.Static&lt;typeof Options&gt;;
423
+ export type Options = z.infer&lt;typeof Options&gt;;
457
424
  &nbsp;
458
425
  /**
459
426
  * We use this locally to avoid making a billion sets. Because check is called once per package
@@ -526,7 +493,7 @@ export const bannedDependencies = createRuleFactory&lt;Options&gt;({
526
493
  &nbsp;
527
494
  aggregateTiming.stop();
528
495
  },
529
- validateOptions: Options.check,
496
+ validateOptions: Options.parse,
530
497
  printStats: <span class="fstat-no" title="function not covered" >() =&gt; {</span>
531
498
  <span class="cstat-no" title="statement not covered" > aggregateTiming.printResults();</span>
532
499
  <span class="cstat-no" title="statement not covered" > },</span>
@@ -592,7 +559,7 @@ function nameOrPackageJsonPath(node: IPackageDependencyGraphNode): string {
592
559
  <div class='footer quiet pad2 space-top1 center small'>
593
560
  Code coverage generated by
594
561
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
595
- at 2025-01-31T21:00:08.068Z
562
+ at 2025-11-07T18:00:58.549Z
596
563
  </div>
597
564
  <script src="../prettify.js"></script>
598
565
  <script>
@@ -23,9 +23,9 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">97.4% </span>
26
+ <span class="strong">97.43% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>75/77</span>
28
+ <span class='fraction'>76/78</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">97.4% </span>
47
+ <span class="strong">97.43% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>75/77</span>
49
+ <span class='fraction'>76/78</span>
50
50
  </div>
51
51
 
52
52
 
@@ -164,7 +164,9 @@
164
164
  <a name='L99'></a><a href='#L99'>99</a>
165
165
  <a name='L100'></a><a href='#L100'>100</a>
166
166
  <a name='L101'></a><a href='#L101'>101</a>
167
- <a name='L102'></a><a href='#L102'>102</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
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></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
168
170
  <span class="cline-any cline-neutral">&nbsp;</span>
169
171
  <span class="cline-any cline-neutral">&nbsp;</span>
170
172
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -175,6 +177,8 @@
175
177
  <span class="cline-any cline-yes">1x</span>
176
178
  <span class="cline-any cline-yes">1x</span>
177
179
  <span class="cline-any cline-yes">1x</span>
180
+ <span class="cline-any cline-neutral">&nbsp;</span>
181
+ <span class="cline-any cline-yes">1x</span>
178
182
  <span class="cline-any cline-yes">1x</span>
179
183
  <span class="cline-any cline-yes">1x</span>
180
184
  <span class="cline-any cline-yes">1x</span>
@@ -274,14 +278,16 @@
274
278
  &nbsp;
275
279
  import { Context } from "@monorepolint/config";
276
280
  import { diff } from "jest-diff";
277
- import * as r from "runtypes";
281
+ import { z } from "zod";
278
282
  import { createRuleFactory } from "./util/createRuleFactory.js";
279
- const Options = r
280
- .Record({
281
- ignoredDependencies: r.Array(r.String).Or(r.Undefined),
282
- })
283
- .Or(r.Undefined);
284
- export type Options = r.Static&lt;typeof Options&gt;;
283
+ &nbsp;
284
+ const Options = z.union([
285
+ z.undefined(),
286
+ z.object({
287
+ ignoredDependencies: z.array(z.string()),
288
+ }),
289
+ ]);
290
+ export type Options = z.infer&lt;typeof Options&gt;;
285
291
  &nbsp;
286
292
  const skippedVersions = ["*", "latest"];
287
293
  &nbsp;
@@ -292,7 +298,7 @@ export const consistentDependencies = createRuleFactory&lt;Options&gt;({
292
298
  checkDeps(context, args, "devDependencies");
293
299
  // we don't check peer deps since they can be more lenient
294
300
  },
295
- validateOptions: Options.check,
301
+ validateOptions: Options.parse,
296
302
  });
297
303
  &nbsp;
298
304
  function checkDeps(
@@ -373,7 +379,7 @@ function omit&lt;T&gt;(
373
379
  <div class='footer quiet pad2 space-top1 center small'>
374
380
  Code coverage generated by
375
381
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
376
- at 2025-01-31T21:00:08.068Z
382
+ at 2025-11-07T18:00:58.549Z
377
383
  </div>
378
384
  <script src="../prettify.js"></script>
379
385
  <script>