@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,16 +23,16 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">95.55% </span>
26
+ <span class="strong">100% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>43/45</span>
28
+ <span class='fraction'>45/45</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">90% </span>
33
+ <span class="strong">100% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>9/10</span>
35
+ <span class='fraction'>10/10</span>
36
36
  </div>
37
37
 
38
38
 
@@ -44,9 +44,9 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">95.55% </span>
47
+ <span class="strong">100% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>43/45</span>
49
+ <span class='fraction'>45/45</span>
50
50
  </div>
51
51
 
52
52
 
@@ -136,57 +136,57 @@
136
136
  <span class="cline-any cline-yes">1x</span>
137
137
  <span class="cline-any cline-neutral">&nbsp;</span>
138
138
  <span class="cline-any cline-yes">1x</span>
139
+ <span class="cline-any cline-yes">16x</span>
140
+ <span class="cline-any cline-yes">16x</span>
141
+ <span class="cline-any cline-yes">16x</span>
142
+ <span class="cline-any cline-yes">16x</span>
143
+ <span class="cline-any cline-yes">16x</span>
144
+ <span class="cline-any cline-neutral">&nbsp;</span>
145
+ <span class="cline-any cline-yes">16x</span>
146
+ <span class="cline-any cline-neutral">&nbsp;</span>
147
+ <span class="cline-any cline-yes">16x</span>
148
+ <span class="cline-any cline-yes">8x</span>
149
+ <span class="cline-any cline-yes">8x</span>
150
+ <span class="cline-any cline-neutral">&nbsp;</span>
151
+ <span class="cline-any cline-yes">8x</span>
152
+ <span class="cline-any cline-yes">8x</span>
153
+ <span class="cline-any cline-neutral">&nbsp;</span>
154
+ <span class="cline-any cline-yes">16x</span>
139
155
  <span class="cline-any cline-yes">4x</span>
140
156
  <span class="cline-any cline-yes">4x</span>
141
157
  <span class="cline-any cline-yes">4x</span>
142
158
  <span class="cline-any cline-yes">4x</span>
143
159
  <span class="cline-any cline-yes">4x</span>
144
- <span class="cline-any cline-neutral">&nbsp;</span>
145
160
  <span class="cline-any cline-yes">4x</span>
146
161
  <span class="cline-any cline-neutral">&nbsp;</span>
147
162
  <span class="cline-any cline-yes">4x</span>
148
- <span class="cline-any cline-no">&nbsp;</span>
149
- <span class="cline-any cline-no">&nbsp;</span>
163
+ <span class="cline-any cline-yes">12x</span>
164
+ <span class="cline-any cline-yes">4x</span>
150
165
  <span class="cline-any cline-neutral">&nbsp;</span>
151
166
  <span class="cline-any cline-yes">4x</span>
152
167
  <span class="cline-any cline-yes">4x</span>
153
- <span class="cline-any cline-neutral">&nbsp;</span>
154
168
  <span class="cline-any cline-yes">4x</span>
155
- <span class="cline-any cline-yes">2x</span>
156
- <span class="cline-any cline-yes">2x</span>
157
- <span class="cline-any cline-yes">2x</span>
158
- <span class="cline-any cline-yes">2x</span>
159
- <span class="cline-any cline-yes">2x</span>
160
- <span class="cline-any cline-yes">2x</span>
161
- <span class="cline-any cline-neutral">&nbsp;</span>
162
- <span class="cline-any cline-yes">2x</span>
163
- <span class="cline-any cline-yes">6x</span>
164
- <span class="cline-any cline-yes">2x</span>
165
- <span class="cline-any cline-neutral">&nbsp;</span>
166
- <span class="cline-any cline-yes">2x</span>
167
- <span class="cline-any cline-yes">2x</span>
168
- <span class="cline-any cline-yes">2x</span>
169
- <span class="cline-any cline-yes">2x</span>
170
- <span class="cline-any cline-yes">2x</span>
171
- <span class="cline-any cline-yes">2x</span>
172
169
  <span class="cline-any cline-yes">4x</span>
173
- <span class="cline-any cline-neutral">&nbsp;</span>
174
170
  <span class="cline-any cline-yes">4x</span>
175
171
  <span class="cline-any cline-yes">4x</span>
172
+ <span class="cline-any cline-yes">16x</span>
173
+ <span class="cline-any cline-neutral">&nbsp;</span>
176
174
  <span class="cline-any cline-yes">8x</span>
177
- <span class="cline-any cline-yes">2x</span>
178
- <span class="cline-any cline-yes">2x</span>
179
175
  <span class="cline-any cline-yes">8x</span>
180
- <span class="cline-any cline-neutral">&nbsp;</span>
181
- <span class="cline-any cline-yes">2x</span>
182
- <span class="cline-any cline-yes">2x</span>
183
- <span class="cline-any cline-neutral">&nbsp;</span>
184
- <span class="cline-any cline-yes">1x</span>
185
- <span class="cline-any cline-yes">4x</span>
176
+ <span class="cline-any cline-yes">16x</span>
186
177
  <span class="cline-any cline-yes">4x</span>
187
178
  <span class="cline-any cline-yes">4x</span>
179
+ <span class="cline-any cline-yes">16x</span>
180
+ <span class="cline-any cline-neutral">&nbsp;</span>
188
181
  <span class="cline-any cline-yes">4x</span>
189
182
  <span class="cline-any cline-yes">4x</span>
183
+ <span class="cline-any cline-neutral">&nbsp;</span>
184
+ <span class="cline-any cline-yes">1x</span>
185
+ <span class="cline-any cline-yes">8x</span>
186
+ <span class="cline-any cline-yes">8x</span>
187
+ <span class="cline-any cline-yes">8x</span>
188
+ <span class="cline-any cline-yes">8x</span>
189
+ <span class="cline-any cline-yes">8x</span>
190
190
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">/*!
191
191
  * Copyright 2019 Palantir Technologies, Inc.
192
192
  *
@@ -206,9 +206,9 @@ export function checkAlpha(
206
206
  &nbsp;
207
207
  const blockToSort = packageJson[block];
208
208
  &nbsp;
209
- if (blockToSort === undefined) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
210
- <span class="cstat-no" title="statement not covered" > return;</span>
211
- <span class="cstat-no" title="statement not covered" > }</span>
209
+ if (blockToSort === undefined) {
210
+ return;
211
+ }
212
212
  &nbsp;
213
213
  const actualOrder = Object.keys(blockToSort);
214
214
  const expectedOrder = actualOrder.slice().sort(); // sort mutates, so we need to copy the previous result
@@ -256,7 +256,7 @@ export function createIncorrectOrderErrorMessage(
256
256
  <div class='footer quiet pad2 space-top1 center small'>
257
257
  Code coverage generated by
258
258
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
259
- at 2025-01-31T21:00:08.068Z
259
+ at 2025-11-07T18:00:58.549Z
260
260
  </div>
261
261
  <script src="../../prettify.js"></script>
262
262
  <script>
@@ -119,24 +119,24 @@
119
119
  <span class="cline-any cline-neutral">&nbsp;</span>
120
120
  <span class="cline-any cline-yes">1x</span>
121
121
  <span class="cline-any cline-yes">1x</span>
122
- <span class="cline-any cline-yes">11x</span>
123
- <span class="cline-any cline-yes">11x</span>
124
- <span class="cline-any cline-yes">11x</span>
125
- <span class="cline-any cline-yes">11x</span>
126
- <span class="cline-any cline-yes">11x</span>
127
- <span class="cline-any cline-yes">11x</span>
128
- <span class="cline-any cline-yes">104x</span>
129
- <span class="cline-any cline-yes">104x</span>
130
- <span class="cline-any cline-yes">104x</span>
131
- <span class="cline-any cline-neutral">&nbsp;</span>
132
- <span class="cline-any cline-yes">104x</span>
133
- <span class="cline-any cline-yes">104x</span>
134
- <span class="cline-any cline-yes">104x</span>
135
- <span class="cline-any cline-yes">104x</span>
136
- <span class="cline-any cline-yes">104x</span>
137
- <span class="cline-any cline-yes">104x</span>
138
- <span class="cline-any cline-yes">104x</span>
139
- <span class="cline-any cline-yes">11x</span>
122
+ <span class="cline-any cline-yes">15x</span>
123
+ <span class="cline-any cline-yes">15x</span>
124
+ <span class="cline-any cline-yes">15x</span>
125
+ <span class="cline-any cline-yes">15x</span>
126
+ <span class="cline-any cline-yes">15x</span>
127
+ <span class="cline-any cline-yes">15x</span>
128
+ <span class="cline-any cline-yes">254x</span>
129
+ <span class="cline-any cline-yes">254x</span>
130
+ <span class="cline-any cline-yes">254x</span>
131
+ <span class="cline-any cline-neutral">&nbsp;</span>
132
+ <span class="cline-any cline-yes">254x</span>
133
+ <span class="cline-any cline-yes">254x</span>
134
+ <span class="cline-any cline-yes">254x</span>
135
+ <span class="cline-any cline-yes">254x</span>
136
+ <span class="cline-any cline-yes">254x</span>
137
+ <span class="cline-any cline-yes">254x</span>
138
+ <span class="cline-any cline-yes">254x</span>
139
+ <span class="cline-any cline-yes">15x</span>
140
140
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { Context, RuleEntry, RuleModule } from "@monorepolint/config";
141
141
  &nbsp;
142
142
  export type ValidateOptionsFn&lt;X&gt; = (options: unknown) =&gt; asserts options is X;
@@ -181,7 +181,7 @@ export function createRuleFactory&lt;X&gt;({
181
181
  <div class='footer quiet pad2 space-top1 center small'>
182
182
  Code coverage generated by
183
183
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
184
- at 2025-01-31T21:00:08.068Z
184
+ at 2025-11-07T18:00:58.549Z
185
185
  </div>
186
186
  <script src="../../prettify.js"></script>
187
187
  <script>
@@ -23,16 +23,16 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">92.25% </span>
26
+ <span class="strong">93.71% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>143/155</span>
28
+ <span class='fraction'>149/159</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">80% </span>
33
+ <span class="strong">83.87% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>24/30</span>
35
+ <span class='fraction'>26/31</span>
36
36
  </div>
37
37
 
38
38
 
@@ -44,9 +44,9 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">92.25% </span>
47
+ <span class="strong">93.71% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>143/155</span>
49
+ <span class='fraction'>149/159</span>
50
50
  </div>
51
51
 
52
52
 
@@ -80,17 +80,17 @@
80
80
  </thead>
81
81
  <tbody><tr>
82
82
  <td class="file high" data-value="checkAlpha.ts"><a href="checkAlpha.ts.html">checkAlpha.ts</a></td>
83
- <td data-value="95.55" class="pic high">
84
- <div class="chart"><div class="cover-fill" style="width: 95%"></div><div class="cover-empty" style="width: 5%"></div></div>
83
+ <td data-value="100" class="pic high">
84
+ <div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
85
85
  </td>
86
- <td data-value="95.55" class="pct high">95.55%</td>
87
- <td data-value="45" class="abs high">43/45</td>
88
- <td data-value="90" class="pct high">90%</td>
89
- <td data-value="10" class="abs high">9/10</td>
86
+ <td data-value="100" class="pct high">100%</td>
87
+ <td data-value="45" class="abs high">45/45</td>
88
+ <td data-value="100" class="pct high">100%</td>
89
+ <td data-value="10" class="abs high">10/10</td>
90
90
  <td data-value="100" class="pct high">100%</td>
91
91
  <td data-value="4" class="abs high">4/4</td>
92
- <td data-value="95.55" class="pct high">95.55%</td>
93
- <td data-value="45" class="abs high">43/45</td>
92
+ <td data-value="100" class="pct high">100%</td>
93
+ <td data-value="45" class="abs high">45/45</td>
94
94
  </tr>
95
95
 
96
96
  <tr>
@@ -138,6 +138,21 @@
138
138
  <td data-value="77" class="abs high">67/77</td>
139
139
  </tr>
140
140
 
141
+ <tr>
142
+ <td class="file high" data-value="zodSchemas.ts"><a href="zodSchemas.ts.html">zodSchemas.ts</a></td>
143
+ <td data-value="100" class="pic high">
144
+ <div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
145
+ </td>
146
+ <td data-value="100" class="pct high">100%</td>
147
+ <td data-value="4" class="abs high">4/4</td>
148
+ <td data-value="100" class="pct high">100%</td>
149
+ <td data-value="1" class="abs high">1/1</td>
150
+ <td data-value="100" class="pct high">100%</td>
151
+ <td data-value="0" class="abs high">0/0</td>
152
+ <td data-value="100" class="pct high">100%</td>
153
+ <td data-value="4" class="abs high">4/4</td>
154
+ </tr>
155
+
141
156
  </tbody>
142
157
  </table>
143
158
  </div>
@@ -146,7 +161,7 @@
146
161
  <div class='footer quiet pad2 space-top1 center small'>
147
162
  Code coverage generated by
148
163
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
149
- at 2025-01-31T21:00:08.068Z
164
+ at 2025-11-07T18:00:58.549Z
150
165
  </div>
151
166
  <script src="../../prettify.js"></script>
152
167
  <script>
@@ -100,17 +100,17 @@
100
100
  <span class="cline-any cline-yes">1x</span>
101
101
  <span class="cline-any cline-neutral">&nbsp;</span>
102
102
  <span class="cline-any cline-neutral">&nbsp;</span>
103
- <span class="cline-any cline-yes">78x</span>
104
- <span class="cline-any cline-yes">78x</span>
105
- <span class="cline-any cline-yes">341x</span>
103
+ <span class="cline-any cline-yes">95x</span>
104
+ <span class="cline-any cline-yes">95x</span>
105
+ <span class="cline-any cline-yes">404x</span>
106
106
  <span class="cline-any cline-neutral">&nbsp;</span>
107
- <span class="cline-any cline-yes">263x</span>
108
- <span class="cline-any cline-yes">263x</span>
109
- <span class="cline-any cline-yes">72x</span>
110
- <span class="cline-any cline-yes">72x</span>
111
- <span class="cline-any cline-yes">263x</span>
112
- <span class="cline-any cline-yes">341x</span>
113
- <span class="cline-any cline-yes">78x</span>
107
+ <span class="cline-any cline-yes">309x</span>
108
+ <span class="cline-any cline-yes">309x</span>
109
+ <span class="cline-any cline-yes">84x</span>
110
+ <span class="cline-any cline-yes">84x</span>
111
+ <span class="cline-any cline-yes">309x</span>
112
+ <span class="cline-any cline-yes">404x</span>
113
+ <span class="cline-any cline-yes">95x</span>
114
114
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">/*!
115
115
  * Copyright 2019 Palantir Technologies, Inc.
116
116
  *
@@ -142,7 +142,7 @@ export function makeDirectoryRecursively(directoryPath: string) {
142
142
  <div class='footer quiet pad2 space-top1 center small'>
143
143
  Code coverage generated by
144
144
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
145
- at 2025-01-31T21:00:08.068Z
145
+ at 2025-11-07T18:00:58.549Z
146
146
  </div>
147
147
  <script src="../../prettify.js"></script>
148
148
  <script>
@@ -487,7 +487,7 @@ export class PackageDependencyGraphService implements IPackageDependencyGraphSer
487
487
  <div class='footer quiet pad2 space-top1 center small'>
488
488
  Code coverage generated by
489
489
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
490
- at 2025-01-31T21:00:08.068Z
490
+ at 2025-11-07T18:00:58.549Z
491
491
  </div>
492
492
  <script src="../../prettify.js"></script>
493
493
  <script>
@@ -0,0 +1,130 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for src/util/zodSchemas.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/util</a> zodSchemas.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'>4/4</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'>1/1</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'>4/4</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>
68
+ <a name='L3'></a><a href='#L3'>3</a>
69
+ <a name='L4'></a><a href='#L4'>4</a>
70
+ <a name='L5'></a><a href='#L5'>5</a>
71
+ <a name='L6'></a><a href='#L6'>6</a>
72
+ <a name='L7'></a><a href='#L7'>7</a>
73
+ <a name='L8'></a><a href='#L8'>8</a>
74
+ <a name='L9'></a><a href='#L9'>9</a>
75
+ <a name='L10'></a><a href='#L10'>10</a>
76
+ <a name='L11'></a><a href='#L11'>11</a>
77
+ <a name='L12'></a><a href='#L12'>12</a>
78
+ <a name='L13'></a><a href='#L13'>13</a>
79
+ <a name='L14'></a><a href='#L14'>14</a>
80
+ <a name='L15'></a><a href='#L15'>15</a>
81
+ <a name='L16'></a><a href='#L16'>16</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
82
+ <span class="cline-any cline-neutral">&nbsp;</span>
83
+ <span class="cline-any cline-neutral">&nbsp;</span>
84
+ <span class="cline-any cline-neutral">&nbsp;</span>
85
+ <span class="cline-any cline-neutral">&nbsp;</span>
86
+ <span class="cline-any cline-neutral">&nbsp;</span>
87
+ <span class="cline-any cline-neutral">&nbsp;</span>
88
+ <span class="cline-any cline-yes">1x</span>
89
+ <span class="cline-any cline-yes">1x</span>
90
+ <span class="cline-any cline-neutral">&nbsp;</span>
91
+ <span class="cline-any cline-neutral">&nbsp;</span>
92
+ <span class="cline-any cline-neutral">&nbsp;</span>
93
+ <span class="cline-any cline-neutral">&nbsp;</span>
94
+ <span class="cline-any cline-neutral">&nbsp;</span>
95
+ <span class="cline-any cline-yes">1x</span>
96
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">/*!
97
+ * Copyright 2019 Palantir Technologies, Inc.
98
+ *
99
+ * Licensed under the MIT license. See LICENSE file in the project root for details.
100
+ *
101
+ */
102
+ &nbsp;
103
+ import { z } from "zod";
104
+ import { REMOVE } from "../REMOVE.js";
105
+ &nbsp;
106
+ /**
107
+ * Reusable Zod schema for the REMOVE symbol.
108
+ * This schema validates that a value is exactly the REMOVE symbol.
109
+ */
110
+ export const ZodRemove = z.custom&lt;typeof REMOVE&gt;((x) =&gt; x === REMOVE);
111
+ &nbsp;</pre></td></tr></table></pre>
112
+
113
+ <div class='push'></div><!-- for sticky footer -->
114
+ </div><!-- /wrapper -->
115
+ <div class='footer quiet pad2 space-top1 center small'>
116
+ Code coverage generated by
117
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
118
+ at 2025-11-07T18:00:58.549Z
119
+ </div>
120
+ <script src="../../prettify.js"></script>
121
+ <script>
122
+ window.onload = function () {
123
+ prettyPrint();
124
+ };
125
+ </script>
126
+ <script src="../../sorter.js"></script>
127
+ <script src="../../block-navigation.js"></script>
128
+ </body>
129
+ </html>
130
+
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@monorepolint/rules",
3
- "version": "0.6.0-alpha.4",
3
+ "version": "0.6.0-alpha.6",
4
4
  "author": "Eric L Anderson (https://github.com/ericanderson)",
5
5
  "contributors": [
6
6
  "Mac Lockard (https://github.com/maclockard)"
@@ -22,26 +22,26 @@
22
22
  "node": ">=18"
23
23
  },
24
24
  "dependencies": {
25
- "globby": "^14.0.2",
26
- "jest-diff": "^29.7.0",
25
+ "globby": "^14.1.0",
26
+ "jest-diff": "^30.1.2",
27
27
  "resolve-package-path": "^4.0.3",
28
- "runtypes": "^6.7.0",
29
- "semver": "^7.6.3",
28
+ "semver": "^7.7.2",
30
29
  "tslib": "^2.8.1",
31
- "@monorepolint/config": "^0.6.0-alpha.4",
32
- "@monorepolint/core": "^0.6.0-alpha.4",
33
- "@monorepolint/utils": "^0.6.0-alpha.4"
30
+ "zod": "^4.1.5",
31
+ "@monorepolint/config": "^0.6.0-alpha.6",
32
+ "@monorepolint/utils": "^0.6.0-alpha.6",
33
+ "@monorepolint/core": "^0.6.0-alpha.6"
34
34
  },
35
35
  "devDependencies": {
36
- "@types/semver": "^7.5.8",
36
+ "@types/semver": "^7.7.1",
37
37
  "@types/tmp": "^0.2.6",
38
- "@typescript-eslint/eslint-plugin": "^8.20.0",
39
- "@typescript-eslint/parser": "^8.20.0",
40
- "eslint": "^9.18.0",
41
- "tmp": "^0.2.3",
38
+ "@typescript-eslint/eslint-plugin": "^8.43.0",
39
+ "@typescript-eslint/parser": "^8.43.0",
40
+ "eslint": "^9.35.0",
41
+ "tmp": "^0.2.5",
42
42
  "tslib": "^2.8.1",
43
- "tsup": "^8.3.5",
44
- "typescript": "^5.7.3"
43
+ "tsup": "^8.5.0",
44
+ "typescript": "^5.9.2"
45
45
  },
46
46
  "publishConfig": {
47
47
  "access": "public"
package/src/REMOVE.ts ADDED
@@ -0,0 +1 @@
1
+ export const REMOVE = Symbol.for("monorepolint/REMOVE");
@@ -0,0 +1,102 @@
1
+ /*!
2
+ * Copyright 2019 Palantir Technologies, Inc.
3
+ *
4
+ * Licensed under the MIT license. See LICENSE file in the project root for details.
5
+ *
6
+ */
7
+
8
+ // tslint:disable:no-console
9
+ import { Context, Failure } from "@monorepolint/config";
10
+ import { beforeEach, describe, expect, it, vi } from "vitest";
11
+ import { alphabeticalDependencies } from "../alphabeticalDependencies.js";
12
+ import { createIncorrectOrderErrorMessage } from "../util/checkAlpha.js";
13
+ import {
14
+ AddErrorSpy,
15
+ createTestingWorkspace,
16
+ HOST_FACTORIES,
17
+ jsonToString,
18
+ TestingWorkspace,
19
+ } from "./utils.js";
20
+
21
+ const PACKAGE_DEPENDENCIES_SORTED = jsonToString({
22
+ name: "foo-lib",
23
+ dependencies: {
24
+ a: "^1.0.0",
25
+ b: "^2.0.0",
26
+ c: "^3.0.0",
27
+ },
28
+ });
29
+
30
+ const PACKAGE_DEPENDENCIES_UNSORTED = jsonToString({
31
+ name: "foo-lib",
32
+ dependencies: {
33
+ c: "^3.0.0",
34
+ a: "^1.0.0",
35
+ b: "^2.0.0",
36
+ },
37
+ });
38
+
39
+ describe.each(HOST_FACTORIES)("alphabeticalDependencies ($name)", (hostFactory) => {
40
+ describe("fix: true", () => {
41
+ let workspace: TestingWorkspace;
42
+ let spy: AddErrorSpy;
43
+ let context: Context;
44
+
45
+ beforeEach(async () => {
46
+ workspace = await createTestingWorkspace({
47
+ fixFlag: true,
48
+ host: hostFactory.make(),
49
+ });
50
+ context = workspace.context; // minimizing delta
51
+
52
+ spy = vi.spyOn(workspace.context, "addError");
53
+ });
54
+
55
+ it("fixes unsorted dependencies", () => {
56
+ workspace.writeFile("package.json", PACKAGE_DEPENDENCIES_UNSORTED);
57
+
58
+ alphabeticalDependencies({}).check(context);
59
+
60
+ expect(spy).toHaveBeenCalledTimes(1);
61
+
62
+ const failure: Failure = spy.mock.calls[0][0];
63
+ expect(failure).toMatchObject(
64
+ workspace.failureMatcher({
65
+ file: "package.json",
66
+ hasFixer: true,
67
+ message: createIncorrectOrderErrorMessage("dependencies", "foo-lib"),
68
+ }),
69
+ );
70
+
71
+ expect(workspace.readFile("package.json")).toEqual(
72
+ PACKAGE_DEPENDENCIES_SORTED,
73
+ );
74
+ });
75
+
76
+ it("does nothing if already sorted", () => {
77
+ workspace.writeFile("package.json", PACKAGE_DEPENDENCIES_SORTED);
78
+
79
+ alphabeticalDependencies({}).check(context);
80
+
81
+ expect(spy).toHaveBeenCalledTimes(0);
82
+ });
83
+ });
84
+
85
+ describe("Options Validation", () => {
86
+ it("should accept undefined options", () => {
87
+ const ruleModule = alphabeticalDependencies({ options: undefined });
88
+ expect(() => ruleModule.validateOptions(undefined)).not.toThrow();
89
+ });
90
+
91
+ it("has empty validation - accepts any input", () => {
92
+ const ruleModule = alphabeticalDependencies({ options: undefined });
93
+ // Note: This rule has an empty validation function, so it accepts anything
94
+ // @ts-expect-error testing invalid input
95
+ expect(() => ruleModule.validateOptions({})).not.toThrow();
96
+ // @ts-expect-error testing invalid input
97
+ expect(() => ruleModule.validateOptions("string")).not.toThrow();
98
+ // @ts-expect-error testing invalid input
99
+ expect(() => ruleModule.validateOptions([])).not.toThrow();
100
+ });
101
+ });
102
+ });
@@ -81,4 +81,22 @@ describe.each(HOST_FACTORIES)("alphabeticalScripts ($name)", (hostFactory) => {
81
81
  expect(spy).toHaveBeenCalledTimes(0);
82
82
  });
83
83
  });
84
+
85
+ describe("Options Validation", () => {
86
+ it("should accept undefined options", () => {
87
+ const ruleModule = alphabeticalScripts({ options: undefined });
88
+ expect(() => ruleModule.validateOptions(undefined)).not.toThrow();
89
+ });
90
+
91
+ it("has empty validation - accepts any input", () => {
92
+ const ruleModule = alphabeticalScripts({ options: undefined });
93
+ // Note: This rule has an empty validation function, so it accepts anything
94
+ // @ts-expect-error testing invalid input
95
+ expect(() => ruleModule.validateOptions({})).not.toThrow();
96
+ // @ts-expect-error testing invalid input
97
+ expect(() => ruleModule.validateOptions("string")).not.toThrow();
98
+ // @ts-expect-error testing invalid input
99
+ expect(() => ruleModule.validateOptions([])).not.toThrow();
100
+ });
101
+ });
84
102
  });