@monorepolint/rules 0.6.0-alpha.2 → 0.6.0-alpha.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/.turbo/turbo-clean.log +1 -1
  2. package/.turbo/turbo-compile-typescript.log +1 -1
  3. package/.turbo/turbo-lint.log +1 -1
  4. package/.turbo/turbo-test.log +161 -102
  5. package/.turbo/turbo-transpile-typescript.log +4 -4
  6. package/CHANGELOG.md +19 -0
  7. package/build/js/index.js +429 -241
  8. package/build/js/index.js.map +1 -1
  9. package/build/tsconfig.tsbuildinfo +1 -1
  10. package/build/types/__tests__/utils.d.ts +0 -1
  11. package/build/types/__tests__/utils.d.ts.map +1 -1
  12. package/build/types/bannedDependencies.d.ts.map +1 -1
  13. package/build/types/fileContents.d.ts.map +1 -1
  14. package/build/types/forceError.d.ts +4 -0
  15. package/build/types/forceError.d.ts.map +1 -0
  16. package/build/types/index.d.ts +5 -3
  17. package/build/types/index.d.ts.map +1 -1
  18. package/build/types/mustSatisfyPeerDependencies.d.ts.map +1 -1
  19. package/build/types/nestedWorkspaces.d.ts.map +1 -1
  20. package/build/types/oncePerPackage.d.ts +11 -0
  21. package/build/types/oncePerPackage.d.ts.map +1 -0
  22. package/build/types/packageEntry.d.ts.map +1 -1
  23. package/build/types/packageOrder.d.ts.map +1 -1
  24. package/build/types/packageScript.d.ts.map +1 -1
  25. package/build/types/requireDependency.d.ts +12 -12
  26. package/build/types/requireDependency.d.ts.map +1 -1
  27. package/build/types/util/checkAlpha.d.ts.map +1 -1
  28. package/build/types/util/createRuleFactory.d.ts.map +1 -1
  29. package/build/types/util/packageDependencyGraphService.d.ts.map +1 -1
  30. package/coverage/clover.xml +1201 -813
  31. package/coverage/coverage-final.json +20 -18
  32. package/coverage/index.html +20 -20
  33. package/coverage/src/alphabeticalDependencies.ts.html +11 -11
  34. package/coverage/src/alphabeticalScripts.ts.html +5 -5
  35. package/coverage/src/bannedDependencies.ts.html +76 -28
  36. package/coverage/src/consistentDependencies.ts.html +51 -18
  37. package/coverage/src/consistentVersions.ts.html +144 -48
  38. package/coverage/src/fileContents.ts.html +47 -23
  39. package/coverage/src/forceError.ts.html +184 -0
  40. package/coverage/src/index.html +96 -66
  41. package/coverage/src/index.ts.html +39 -33
  42. package/coverage/src/mustSatisfyPeerDependencies.ts.html +323 -80
  43. package/coverage/src/nestedWorkspaces.ts.html +47 -20
  44. package/coverage/src/oncePerPackage.ts.html +181 -0
  45. package/coverage/src/packageEntry.ts.html +40 -19
  46. package/coverage/src/packageOrder.ts.html +30 -12
  47. package/coverage/src/packageScript.ts.html +81 -27
  48. package/coverage/src/requireDependency.ts.html +77 -32
  49. package/coverage/src/standardTsconfig.ts.html +84 -21
  50. package/coverage/src/util/checkAlpha.ts.html +18 -9
  51. package/coverage/src/util/createRuleFactory.ts.html +16 -4
  52. package/coverage/src/util/index.html +17 -17
  53. package/coverage/src/util/makeDirectory.ts.html +5 -5
  54. package/coverage/src/util/packageDependencyGraphService.ts.html +94 -19
  55. package/package.json +4 -5
  56. package/src/__tests__/alphabeticalScripts.spec.ts +12 -4
  57. package/src/__tests__/bannedDependencies.spec.ts +45 -16
  58. package/src/__tests__/consistentDependencies.spec.ts +11 -5
  59. package/src/__tests__/consistentVersions.spec.ts +72 -18
  60. package/src/__tests__/fileContents.spec.ts +5 -5
  61. package/src/__tests__/mustSatisfyPeerDependencies.spec.ts +191 -76
  62. package/src/__tests__/nestedWorkspaces.spec.ts +10 -7
  63. package/src/__tests__/packageEntry.spec.ts +48 -47
  64. package/src/__tests__/packageOrder.spec.ts +72 -71
  65. package/src/__tests__/packageScript.spec.ts +19 -10
  66. package/src/__tests__/requireDependency.spec.ts +12 -6
  67. package/src/__tests__/utils.ts +16 -7
  68. package/src/bannedDependencies.ts +32 -16
  69. package/src/consistentDependencies.ts +19 -8
  70. package/src/consistentVersions.ts +70 -38
  71. package/src/fileContents.ts +19 -11
  72. package/src/forceError.ts +33 -0
  73. package/src/index.ts +5 -3
  74. package/src/mustSatisfyPeerDependencies.ts +141 -60
  75. package/src/nestedWorkspaces.ts +19 -10
  76. package/src/oncePerPackage.ts +32 -0
  77. package/src/packageEntry.ts +18 -11
  78. package/src/packageOrder.ts +9 -3
  79. package/src/packageScript.ts +37 -19
  80. package/src/requireDependency.ts +26 -11
  81. package/src/standardTsconfig.ts +31 -10
  82. package/src/util/checkAlpha.ts +5 -2
  83. package/src/util/createRuleFactory.ts +6 -2
  84. package/src/util/packageDependencyGraphService.ts +38 -13
  85. package/vitest.config.mjs +6 -7
@@ -23,9 +23,9 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">96.96% </span>
26
+ <span class="strong">97.82% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>32/33</span>
28
+ <span class='fraction'>45/46</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">96.96% </span>
47
+ <span class="strong">97.82% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>32/33</span>
49
+ <span class='fraction'>45/46</span>
50
50
  </div>
51
51
 
52
52
 
@@ -123,17 +123,26 @@
123
123
  <a name='L58'></a><a href='#L58'>58</a>
124
124
  <a name='L59'></a><a href='#L59'>59</a>
125
125
  <a name='L60'></a><a href='#L60'>60</a>
126
- <a name='L61'></a><a href='#L61'>61</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
127
- <span class="cline-any cline-neutral">&nbsp;</span>
128
- <span class="cline-any cline-neutral">&nbsp;</span>
129
- <span class="cline-any cline-neutral">&nbsp;</span>
130
- <span class="cline-any cline-neutral">&nbsp;</span>
126
+ <a name='L61'></a><a href='#L61'>61</a>
127
+ <a name='L62'></a><a href='#L62'>62</a>
128
+ <a name='L63'></a><a href='#L63'>63</a>
129
+ <a name='L64'></a><a href='#L64'>64</a>
130
+ <a name='L65'></a><a href='#L65'>65</a>
131
+ <a name='L66'></a><a href='#L66'>66</a>
132
+ <a name='L67'></a><a href='#L67'>67</a>
133
+ <a name='L68'></a><a href='#L68'>68</a>
134
+ <a name='L69'></a><a href='#L69'>69</a>
135
+ <a name='L70'></a><a href='#L70'>70</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
131
136
  <span class="cline-any cline-neutral">&nbsp;</span>
132
137
  <span class="cline-any cline-neutral">&nbsp;</span>
133
138
  <span class="cline-any cline-neutral">&nbsp;</span>
134
139
  <span class="cline-any cline-neutral">&nbsp;</span>
135
140
  <span class="cline-any cline-neutral">&nbsp;</span>
136
141
  <span class="cline-any cline-neutral">&nbsp;</span>
142
+ <span class="cline-any cline-yes">1x</span>
143
+ <span class="cline-any cline-yes">1x</span>
144
+ <span class="cline-any cline-yes">1x</span>
145
+ <span class="cline-any cline-yes">1x</span>
137
146
  <span class="cline-any cline-neutral">&nbsp;</span>
138
147
  <span class="cline-any cline-yes">1x</span>
139
148
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -147,6 +156,9 @@
147
156
  <span class="cline-any cline-neutral">&nbsp;</span>
148
157
  <span class="cline-any cline-neutral">&nbsp;</span>
149
158
  <span class="cline-any cline-yes">6x</span>
159
+ <span class="cline-any cline-yes">6x</span>
160
+ <span class="cline-any cline-yes">6x</span>
161
+ <span class="cline-any cline-yes">6x</span>
150
162
  <span class="cline-any cline-neutral">&nbsp;</span>
151
163
  <span class="cline-any cline-yes">6x</span>
152
164
  <span class="cline-any cline-no">&nbsp;</span>
@@ -161,15 +173,21 @@
161
173
  <span class="cline-any cline-yes">1x</span>
162
174
  <span class="cline-any cline-yes">1x</span>
163
175
  <span class="cline-any cline-yes">1x</span>
176
+ <span class="cline-any cline-yes">1x</span>
164
177
  <span class="cline-any cline-neutral">&nbsp;</span>
165
178
  <span class="cline-any cline-neutral">&nbsp;</span>
166
179
  <span class="cline-any cline-yes">6x</span>
167
180
  <span class="cline-any cline-neutral">&nbsp;</span>
168
181
  <span class="cline-any cline-neutral">&nbsp;</span>
169
182
  <span class="cline-any cline-yes">6x</span>
183
+ <span class="cline-any cline-yes">6x</span>
184
+ <span class="cline-any cline-yes">6x</span>
185
+ <span class="cline-any cline-yes">6x</span>
170
186
  <span class="cline-any cline-neutral">&nbsp;</span>
171
187
  <span class="cline-any cline-neutral">&nbsp;</span>
172
188
  <span class="cline-any cline-yes">6x</span>
189
+ <span class="cline-any cline-yes">8x</span>
190
+ <span class="cline-any cline-yes">6x</span>
173
191
  <span class="cline-any cline-neutral">&nbsp;</span>
174
192
  <span class="cline-any cline-yes">6x</span>
175
193
  <span class="cline-any cline-yes">1x</span>
@@ -206,18 +224,22 @@ export const nestedWorkspaces = createRuleFactory({
206
224
  const rootPackageJson = context.getWorkspaceContext().getPackageJson();
207
225
  &nbsp;
208
226
  // Expand a set of globs covering all package.json files in the entire repo (except the root)
209
- const packageJsonPaths = globby.globbySync(["*/**/package.json", "!**/node_modules/**"]);
227
+ const packageJsonPaths = globby.globbySync([
228
+ "*/**/package.json",
229
+ "!**/node_modules/**",
230
+ ]);
210
231
  &nbsp;
211
232
  const workspaces = Array.isArray(rootPackageJson.workspaces<span class="branch-0 cbranch-no" title="branch not covered" >)</span>
212
233
  <span class="cstat-no" title="statement not covered" > ? rootPackageJson.workspaces</span>
213
234
  : rootPackageJson.workspaces !== undefined
214
- ? rootPackageJson.workspaces.packages
215
- : undefined;
235
+ ? rootPackageJson.workspaces.packages
236
+ : undefined;
216
237
  &nbsp;
217
238
  if (workspaces === undefined &amp;&amp; packageJsonPaths.length &gt; 0) {
218
239
  context.addError({
219
240
  file: context.getPackageJsonPath(),
220
- message: 'The "workspace" field is missing, even though there are workspaces in the repository.',
241
+ message:
242
+ "The \"workspace\" field is missing, even though there are workspaces in the repository.",
221
243
  });
222
244
  return;
223
245
  }
@@ -226,18 +248,23 @@ export const nestedWorkspaces = createRuleFactory({
226
248
  const workspacePackageJsons = (workspaces || []).map((item) =&gt; `${item}/package.json`);
227
249
  &nbsp;
228
250
  // Expand the globs to get an array of all package.json files that are in packages specified by a workspace.
229
- const expandedWorkspacesGlobs = globby.globbySync([...workspacePackageJsons, "!**/node_modules/**"]);
251
+ const expandedWorkspacesGlobs = globby.globbySync([
252
+ ...workspacePackageJsons,
253
+ "!**/node_modules/**",
254
+ ]);
230
255
  &nbsp;
231
256
  // Ensure there are no package.jsons which are not included in the globbed workspaces set
232
- const difference = packageJsonPaths.filter((packageJsonPath) =&gt; !expandedWorkspacesGlobs.includes(packageJsonPath));
257
+ const difference = packageJsonPaths.filter((packageJsonPath) =&gt;
258
+ !expandedWorkspacesGlobs.includes(packageJsonPath)
259
+ );
233
260
  &nbsp;
234
261
  if (difference.length !== 0) {
235
- const differencesList = difference.map((packageJsonPath) =&gt; path.dirname(packageJsonPath)).join(", ");
262
+ const differencesList = difference.map((packageJsonPath) =&gt; path.dirname(packageJsonPath))
263
+ .join(", ");
236
264
  context.addError({
237
265
  file: context.getPackageJsonPath(),
238
- message:
239
- `The "workspace" field is missing one or more values: ${differencesList}. ` +
240
- 'You may be able to use a glob to avoid listing each workspace individually, e.g. "packages/nested-workspace/*".',
266
+ message: `The "workspace" field is missing one or more values: ${differencesList}. `
267
+ + "You may be able to use a glob to avoid listing each workspace individually, e.g. \"packages/nested-workspace/*\".",
241
268
  });
242
269
  }
243
270
  },
@@ -250,7 +277,7 @@ export const nestedWorkspaces = createRuleFactory({
250
277
  <div class='footer quiet pad2 space-top1 center small'>
251
278
  Code coverage generated by
252
279
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
253
- at 2025-01-17T16:18:41.406Z
280
+ at 2025-01-31T21:00:08.068Z
254
281
  </div>
255
282
  <script src="../prettify.js"></script>
256
283
  <script>
@@ -0,0 +1,181 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for src/oncePerPackage.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> oncePerPackage.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'>31/31</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'>31/31</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>
82
+ <a name='L17'></a><a href='#L17'>17</a>
83
+ <a name='L18'></a><a href='#L18'>18</a>
84
+ <a name='L19'></a><a href='#L19'>19</a>
85
+ <a name='L20'></a><a href='#L20'>20</a>
86
+ <a name='L21'></a><a href='#L21'>21</a>
87
+ <a name='L22'></a><a href='#L22'>22</a>
88
+ <a name='L23'></a><a href='#L23'>23</a>
89
+ <a name='L24'></a><a href='#L24'>24</a>
90
+ <a name='L25'></a><a href='#L25'>25</a>
91
+ <a name='L26'></a><a href='#L26'>26</a>
92
+ <a name='L27'></a><a href='#L27'>27</a>
93
+ <a name='L28'></a><a href='#L28'>28</a>
94
+ <a name='L29'></a><a href='#L29'>29</a>
95
+ <a name='L30'></a><a href='#L30'>30</a>
96
+ <a name='L31'></a><a href='#L31'>31</a>
97
+ <a name='L32'></a><a href='#L32'>32</a>
98
+ <a name='L33'></a><a href='#L33'>33</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
99
+ <span class="cline-any cline-neutral">&nbsp;</span>
100
+ <span class="cline-any cline-yes">1x</span>
101
+ <span class="cline-any cline-yes">1x</span>
102
+ <span class="cline-any cline-yes">1x</span>
103
+ <span class="cline-any cline-yes">1x</span>
104
+ <span class="cline-any cline-yes">1x</span>
105
+ <span class="cline-any cline-yes">1x</span>
106
+ <span class="cline-any cline-yes">1x</span>
107
+ <span class="cline-any cline-yes">1x</span>
108
+ <span class="cline-any cline-yes">1x</span>
109
+ <span class="cline-any cline-yes">1x</span>
110
+ <span class="cline-any cline-yes">1x</span>
111
+ <span class="cline-any cline-yes">1x</span>
112
+ <span class="cline-any cline-yes">1x</span>
113
+ <span class="cline-any cline-yes">1x</span>
114
+ <span class="cline-any cline-yes">1x</span>
115
+ <span class="cline-any cline-yes">1x</span>
116
+ <span class="cline-any cline-yes">1x</span>
117
+ <span class="cline-any cline-yes">1x</span>
118
+ <span class="cline-any cline-yes">1x</span>
119
+ <span class="cline-any cline-yes">1x</span>
120
+ <span class="cline-any cline-yes">1x</span>
121
+ <span class="cline-any cline-yes">1x</span>
122
+ <span class="cline-any cline-yes">1x</span>
123
+ <span class="cline-any cline-yes">1x</span>
124
+ <span class="cline-any cline-yes">1x</span>
125
+ <span class="cline-any cline-yes">1x</span>
126
+ <span class="cline-any cline-yes">1x</span>
127
+ <span class="cline-any cline-yes">1x</span>
128
+ <span class="cline-any cline-yes">1x</span>
129
+ <span class="cline-any cline-yes">1x</span>
130
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import * as r from "runtypes";
131
+ import { createRuleFactory } from "./util/createRuleFactory.js";
132
+ &nbsp;
133
+ export const Options = r.Record({
134
+ singletonKey: r.String.Or(r.Symbol),
135
+ customMessage: r.String.optional(),
136
+ });
137
+ &nbsp;
138
+ export type Options = r.Static&lt;typeof Options&gt;;
139
+ &nbsp;
140
+ const visitedMap = new Map&lt;string | symbol, Set&lt;string&gt;&gt;();
141
+ &nbsp;
142
+ export const oncePerPackage = createRuleFactory&lt;Options&gt;({
143
+ name: "oncePerPackage",
144
+ &nbsp;
145
+ check: async (context, options) =&gt; {
146
+ const visited = visitedMap.get(options.singletonKey) ?? new Set&lt;string&gt;();
147
+ visitedMap.set(options.singletonKey, visited);
148
+ &nbsp;
149
+ if (visited.has(context.getName())) {
150
+ context.addError({
151
+ message: "This package has already been visited for this key: "
152
+ + options.singletonKey.toString(),
153
+ file: context.getPackageJsonPath(),
154
+ });
155
+ } else {
156
+ visited.add(context.getName());
157
+ }
158
+ },
159
+ &nbsp;
160
+ validateOptions: Options.assert,
161
+ });
162
+ &nbsp;</pre></td></tr></table></pre>
163
+
164
+ <div class='push'></div><!-- for sticky footer -->
165
+ </div><!-- /wrapper -->
166
+ <div class='footer quiet pad2 space-top1 center small'>
167
+ Code coverage generated by
168
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
169
+ at 2025-01-31T21:00:08.068Z
170
+ </div>
171
+ <script src="../prettify.js"></script>
172
+ <script>
173
+ window.onload = function () {
174
+ prettyPrint();
175
+ };
176
+ </script>
177
+ <script src="../sorter.js"></script>
178
+ <script src="../block-navigation.js"></script>
179
+ </body>
180
+ </html>
181
+
@@ -25,7 +25,7 @@
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'>71/71</span>
28
+ <span class='fraction'>82/82</span>
29
29
  </div>
30
30
 
31
31
 
@@ -46,7 +46,7 @@
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'>71/71</span>
49
+ <span class='fraction'>82/82</span>
50
50
  </div>
51
51
 
52
52
 
@@ -153,17 +153,24 @@
153
153
  <a name='L88'></a><a href='#L88'>88</a>
154
154
  <a name='L89'></a><a href='#L89'>89</a>
155
155
  <a name='L90'></a><a href='#L90'>90</a>
156
- <a name='L91'></a><a href='#L91'>91</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
157
- <span class="cline-any cline-neutral">&nbsp;</span>
158
- <span class="cline-any cline-neutral">&nbsp;</span>
159
- <span class="cline-any cline-neutral">&nbsp;</span>
160
- <span class="cline-any cline-neutral">&nbsp;</span>
156
+ <a name='L91'></a><a href='#L91'>91</a>
157
+ <a name='L92'></a><a href='#L92'>92</a>
158
+ <a name='L93'></a><a href='#L93'>93</a>
159
+ <a name='L94'></a><a href='#L94'>94</a>
160
+ <a name='L95'></a><a href='#L95'>95</a>
161
+ <a name='L96'></a><a href='#L96'>96</a>
162
+ <a name='L97'></a><a href='#L97'>97</a>
163
+ <a name='L98'></a><a href='#L98'>98</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
161
164
  <span class="cline-any cline-neutral">&nbsp;</span>
162
165
  <span class="cline-any cline-neutral">&nbsp;</span>
163
166
  <span class="cline-any cline-neutral">&nbsp;</span>
164
167
  <span class="cline-any cline-neutral">&nbsp;</span>
165
168
  <span class="cline-any cline-neutral">&nbsp;</span>
166
169
  <span class="cline-any cline-neutral">&nbsp;</span>
170
+ <span class="cline-any cline-yes">1x</span>
171
+ <span class="cline-any cline-yes">1x</span>
172
+ <span class="cline-any cline-yes">1x</span>
173
+ <span class="cline-any cline-yes">1x</span>
167
174
  <span class="cline-any cline-neutral">&nbsp;</span>
168
175
  <span class="cline-any cline-yes">1x</span>
169
176
  <span class="cline-any cline-yes">1x</span>
@@ -204,6 +211,9 @@
204
211
  <span class="cline-any cline-yes">8x</span>
205
212
  <span class="cline-any cline-yes">8x</span>
206
213
  <span class="cline-any cline-yes">8x</span>
214
+ <span class="cline-any cline-yes">8x</span>
215
+ <span class="cline-any cline-yes">8x</span>
216
+ <span class="cline-any cline-yes">8x</span>
207
217
  <span class="cline-any cline-yes">6x</span>
208
218
  <span class="cline-any cline-yes">6x</span>
209
219
  <span class="cline-any cline-yes">8x</span>
@@ -219,6 +229,10 @@
219
229
  <span class="cline-any cline-yes">6x</span>
220
230
  <span class="cline-any cline-yes">6x</span>
221
231
  <span class="cline-any cline-yes">6x</span>
232
+ <span class="cline-any cline-yes">6x</span>
233
+ <span class="cline-any cline-yes">6x</span>
234
+ <span class="cline-any cline-yes">6x</span>
235
+ <span class="cline-any cline-yes">6x</span>
222
236
  <span class="cline-any cline-yes">8x</span>
223
237
  <span class="cline-any cline-yes">8x</span>
224
238
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -263,7 +277,7 @@ export const Options = r.Union(
263
277
  .And(
264
278
  r.Partial({
265
279
  entriesExist: r.Undefined,
266
- })
280
+ }),
267
281
  ),
268
282
  r
269
283
  .Record({
@@ -272,12 +286,12 @@ export const Options = r.Union(
272
286
  .And(
273
287
  r.Partial({
274
288
  entries: r.Undefined,
275
- })
289
+ }),
276
290
  ),
277
291
  r.Record({
278
292
  entries: r.Dictionary(r.Unknown), // string =&gt; unknown, enforces existence of keys and their values
279
293
  entriesExist: r.Array(r.String),
280
- })
294
+ }),
281
295
  );
282
296
  &nbsp;
283
297
  export type Options = r.Static&lt;typeof Options&gt;;
@@ -291,21 +305,28 @@ export const packageEntry = createRuleFactory&lt;Options&gt;({
291
305
  for (const key of Object.keys(options.entries)) {
292
306
  const value = options.entries[key];
293
307
  &nbsp;
294
- const entryDiff = diff(JSON.stringify(value) + "\n", (JSON.stringify(packageJson[key]) || "") + "\n");
308
+ const entryDiff = diff(
309
+ JSON.stringify(value) + "\n",
310
+ (JSON.stringify(packageJson[key]) || "") + "\n",
311
+ );
295
312
  if (
296
- (typeof value !== "object" &amp;&amp; value !== packageJson[key]) ||
297
- entryDiff == null ||
298
- !entryDiff.includes("Compared values have no visual difference")
313
+ (typeof value !== "object" &amp;&amp; value !== packageJson[key])
314
+ || entryDiff == null
315
+ || !entryDiff.includes("Compared values have no visual difference")
299
316
  ) {
300
317
  context.addError({
301
318
  file: context.getPackageJsonPath(),
302
319
  message: createStandardizedEntryErrorMessage(key),
303
320
  longMessage: entryDiff,
304
321
  fixer: () =&gt; {
305
- mutateJson&lt;PackageJson&gt;(context.getPackageJsonPath(), context.host, (input) =&gt; {
306
- input[key] = value;
307
- return input;
308
- });
322
+ mutateJson&lt;PackageJson&gt;(
323
+ context.getPackageJsonPath(),
324
+ context.host,
325
+ (input) =&gt; {
326
+ input[key] = value;
327
+ return input;
328
+ },
329
+ );
309
330
  },
310
331
  });
311
332
  }
@@ -340,7 +361,7 @@ export function createExpectedEntryErrorMessage(key: string) {
340
361
  <div class='footer quiet pad2 space-top1 center small'>
341
362
  Code coverage generated by
342
363
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
343
- at 2025-01-17T16:18:41.406Z
364
+ at 2025-01-31T21:00:08.068Z
344
365
  </div>
345
366
  <script src="../prettify.js"></script>
346
367
  <script>
@@ -23,9 +23,9 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">100% </span>
26
+ <span class="strong">99% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>91/91</span>
28
+ <span class='fraction'>99/100</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">100% </span>
47
+ <span class="strong">99% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>91/91</span>
49
+ <span class='fraction'>99/100</span>
50
50
  </div>
51
51
 
52
52
 
@@ -186,10 +186,13 @@
186
186
  <a name='L121'></a><a href='#L121'>121</a>
187
187
  <a name='L122'></a><a href='#L122'>122</a>
188
188
  <a name='L123'></a><a href='#L123'>123</a>
189
- <a name='L124'></a><a href='#L124'>124</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
190
- <span class="cline-any cline-neutral">&nbsp;</span>
191
- <span class="cline-any cline-neutral">&nbsp;</span>
192
- <span class="cline-any cline-neutral">&nbsp;</span>
189
+ <a name='L124'></a><a href='#L124'>124</a>
190
+ <a name='L125'></a><a href='#L125'>125</a>
191
+ <a name='L126'></a><a href='#L126'>126</a>
192
+ <a name='L127'></a><a href='#L127'>127</a>
193
+ <a name='L128'></a><a href='#L128'>128</a>
194
+ <a name='L129'></a><a href='#L129'>129</a>
195
+ <a name='L130'></a><a href='#L130'>130</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
193
196
  <span class="cline-any cline-neutral">&nbsp;</span>
194
197
  <span class="cline-any cline-neutral">&nbsp;</span>
195
198
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -197,6 +200,9 @@
197
200
  <span class="cline-any cline-neutral">&nbsp;</span>
198
201
  <span class="cline-any cline-neutral">&nbsp;</span>
199
202
  <span class="cline-any cline-neutral">&nbsp;</span>
203
+ <span class="cline-any cline-yes">1x</span>
204
+ <span class="cline-any cline-yes">1x</span>
205
+ <span class="cline-any cline-yes">1x</span>
200
206
  <span class="cline-any cline-neutral">&nbsp;</span>
201
207
  <span class="cline-any cline-neutral">&nbsp;</span>
202
208
  <span class="cline-any cline-yes">1x</span>
@@ -246,8 +252,12 @@
246
252
  <span class="cline-any cline-yes">8x</span>
247
253
  <span class="cline-any cline-neutral">&nbsp;</span>
248
254
  <span class="cline-any cline-yes">8x</span>
255
+ <span class="cline-any cline-no">&nbsp;</span>
256
+ <span class="cline-any cline-yes">8x</span>
249
257
  <span class="cline-any cline-neutral">&nbsp;</span>
250
258
  <span class="cline-any cline-yes">8x</span>
259
+ <span class="cline-any cline-yes">2x</span>
260
+ <span class="cline-any cline-yes">6x</span>
251
261
  <span class="cline-any cline-neutral">&nbsp;</span>
252
262
  <span class="cline-any cline-yes">8x</span>
253
263
  <span class="cline-any cline-yes">8x</span>
@@ -309,6 +319,8 @@
309
319
  <span class="cline-any cline-yes">8x</span>
310
320
  <span class="cline-any cline-yes">8x</span>
311
321
  <span class="cline-any cline-yes">8x</span>
322
+ <span class="cline-any cline-yes">8x</span>
323
+ <span class="cline-any cline-yes">8x</span>
312
324
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">/*!
313
325
  * Copyright 2019 Palantir Technologies, Inc.
314
326
  *
@@ -368,9 +380,13 @@ export const packageOrder = createRuleFactory&lt;Options&gt;({
368
380
  const packageJson = context.getPackageJson();
369
381
  const packagePath = context.getPackageJsonPath();
370
382
  &nbsp;
371
- const order: string[] | OrderFunction = opts === <span class="branch-0 cbranch-no" title="branch not covered" >undefined ? defaultKeyOrder : o</span>pts.order;
383
+ const order: string[] | OrderFunction = opts === <span class="branch-0 cbranch-no" title="branch not covered" >undefined</span>
384
+ <span class="cstat-no" title="statement not covered" > ? defaultKeyOrder</span>
385
+ : opts.order;
372
386
  &nbsp;
373
- const comparator = isOrderFunction(order) ? order(context) : createComparator(order);
387
+ const comparator = isOrderFunction(order)
388
+ ? order(context)
389
+ : createComparator(order);
374
390
  &nbsp;
375
391
  const actualOrder = Object.keys(packageJson);
376
392
  const expectedOrder = actualOrder.slice().sort(comparator); // sort mutates, so we need to copy the previous result
@@ -429,7 +445,9 @@ function createComparator(order: ReadonlyArray&lt;string&gt;) {
429
445
  };
430
446
  }
431
447
  &nbsp;
432
- function isOrderFunction(order: ReadonlyArray&lt;string&gt; | OrderFunction): order is OrderFunction {
448
+ function isOrderFunction(
449
+ order: ReadonlyArray&lt;string&gt; | OrderFunction,
450
+ ): order is OrderFunction {
433
451
  return !Array.isArray(order);
434
452
  }
435
453
  &nbsp;</pre></td></tr></table></pre>
@@ -439,7 +457,7 @@ function isOrderFunction(order: ReadonlyArray&lt;string&gt; | OrderFunction): or
439
457
  <div class='footer quiet pad2 space-top1 center small'>
440
458
  Code coverage generated by
441
459
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
442
- at 2025-01-17T16:18:41.406Z
460
+ at 2025-01-31T21:00:08.068Z
443
461
  </div>
444
462
  <script src="../prettify.js"></script>
445
463
  <script>