@contractkit/prettier-plugin 0.9.0 → 0.9.2

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.
@@ -73,7 +73,7 @@
73
73
  <div class='footer quiet pad2 space-top1 center small'>
74
74
  Code coverage generated by
75
75
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
76
- at 2026-05-01T17:30:35.740Z
76
+ at 2026-05-04T13:24:25.753Z
77
77
  </div>
78
78
  <script src="prettify.js"></script>
79
79
  <script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">61.7% </span>
26
+ <span class="strong">66.3% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>224/363</span>
28
+ <span class='fraction'>242/365</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">53.98% </span>
33
+ <span class="strong">58.04% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>217/402</span>
35
+ <span class='fraction'>231/398</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">68% </span>
40
+ <span class="strong">70.37% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>17/25</span>
42
+ <span class='fraction'>19/27</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">68.51% </span>
47
+ <span class="strong">72.06% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>198/289</span>
49
+ <span class='fraction'>209/290</span>
50
50
  </div>
51
51
 
52
52
 
@@ -94,18 +94,18 @@
94
94
  </tr>
95
95
 
96
96
  <tr>
97
- <td class="file medium" data-value="print-ck.ts"><a href="print-ck.ts.html">print-ck.ts</a></td>
98
- <td data-value="67.14" class="pic medium">
99
- <div class="chart"><div class="cover-fill" style="width: 67%"></div><div class="cover-empty" style="width: 33%"></div></div>
97
+ <td class="file high" data-value="print-ck.ts"><a href="print-ck.ts.html">print-ck.ts</a></td>
98
+ <td data-value="89.85" class="pic high">
99
+ <div class="chart"><div class="cover-fill" style="width: 89%"></div><div class="cover-empty" style="width: 11%"></div></div>
100
100
  </td>
101
- <td data-value="67.14" class="pct medium">67.14%</td>
102
- <td data-value="70" class="abs medium">47/70</td>
103
- <td data-value="64.19" class="pct medium">64.19%</td>
104
- <td data-value="81" class="abs medium">52/81</td>
101
+ <td data-value="89.85" class="pct high">89.85%</td>
102
+ <td data-value="69" class="abs high">62/69</td>
103
+ <td data-value="80" class="pct high">80%</td>
104
+ <td data-value="75" class="abs high">60/75</td>
105
105
  <td data-value="100" class="pct high">100%</td>
106
- <td data-value="3" class="abs high">3/3</td>
107
- <td data-value="78.84" class="pct medium">78.84%</td>
108
- <td data-value="52" class="abs medium">41/52</td>
106
+ <td data-value="4" class="abs high">4/4</td>
107
+ <td data-value="98.03" class="pct high">98.03%</td>
108
+ <td data-value="51" class="abs high">50/51</td>
109
109
  </tr>
110
110
 
111
111
  <tr>
@@ -115,8 +115,8 @@
115
115
  </td>
116
116
  <td data-value="41.93" class="pct low">41.93%</td>
117
117
  <td data-value="31" class="abs low">13/31</td>
118
- <td data-value="28.57" class="pct low">28.57%</td>
119
- <td data-value="56" class="abs low">16/56</td>
118
+ <td data-value="30.35" class="pct low">30.35%</td>
119
+ <td data-value="56" class="abs low">17/56</td>
120
120
  <td data-value="50" class="pct medium">50%</td>
121
121
  <td data-value="2" class="abs medium">1/2</td>
122
122
  <td data-value="42.85" class="pct low">42.85%</td>
@@ -140,17 +140,17 @@
140
140
 
141
141
  <tr>
142
142
  <td class="file low" data-value="print-type.ts"><a href="print-type.ts.html">print-type.ts</a></td>
143
- <td data-value="45.23" class="pic low">
144
- <div class="chart"><div class="cover-fill" style="width: 45%"></div><div class="cover-empty" style="width: 55%"></div></div>
143
+ <td data-value="47.12" class="pic low">
144
+ <div class="chart"><div class="cover-fill" style="width: 47%"></div><div class="cover-empty" style="width: 53%"></div></div>
145
145
  </td>
146
- <td data-value="45.23" class="pct low">45.23%</td>
147
- <td data-value="84" class="abs low">38/84</td>
148
- <td data-value="42.55" class="pct low">42.55%</td>
149
- <td data-value="94" class="abs low">40/94</td>
150
- <td data-value="40" class="pct low">40%</td>
151
- <td data-value="10" class="abs low">4/10</td>
152
- <td data-value="47.14" class="pct low">47.14%</td>
153
- <td data-value="70" class="abs low">33/70</td>
146
+ <td data-value="47.12" class="pct low">47.12%</td>
147
+ <td data-value="87" class="abs low">41/87</td>
148
+ <td data-value="46.87" class="pct low">46.87%</td>
149
+ <td data-value="96" class="abs low">45/96</td>
150
+ <td data-value="45.45" class="pct low">45.45%</td>
151
+ <td data-value="11" class="abs low">5/11</td>
152
+ <td data-value="48.61" class="pct low">48.61%</td>
153
+ <td data-value="72" class="abs low">35/72</td>
154
154
  </tr>
155
155
 
156
156
  </tbody>
@@ -161,7 +161,7 @@
161
161
  <div class='footer quiet pad2 space-top1 center small'>
162
162
  Code coverage generated by
163
163
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
164
- at 2026-05-01T17:30:35.740Z
164
+ at 2026-05-04T13:24:25.753Z
165
165
  </div>
166
166
  <script src="prettify.js"></script>
167
167
  <script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">67.14% </span>
26
+ <span class="strong">89.85% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>47/70</span>
28
+ <span class='fraction'>62/69</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">64.19% </span>
33
+ <span class="strong">80% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>52/81</span>
35
+ <span class='fraction'>60/75</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'>3/3</span>
42
+ <span class='fraction'>4/4</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">78.84% </span>
47
+ <span class="strong">98.03% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>41/52</span>
49
+ <span class='fraction'>50/51</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 medium'></div>
64
+ <div class='status-line high'></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>
@@ -158,7 +158,25 @@
158
158
  <a name='L93'></a><a href='#L93'>93</a>
159
159
  <a name='L94'></a><a href='#L94'>94</a>
160
160
  <a name='L95'></a><a href='#L95'>95</a>
161
- <a name='L96'></a><a href='#L96'>96</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
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>
164
+ <a name='L99'></a><a href='#L99'>99</a>
165
+ <a name='L100'></a><a href='#L100'>100</a>
166
+ <a name='L101'></a><a href='#L101'>101</a>
167
+ <a name='L102'></a><a href='#L102'>102</a>
168
+ <a name='L103'></a><a href='#L103'>103</a>
169
+ <a name='L104'></a><a href='#L104'>104</a>
170
+ <a name='L105'></a><a href='#L105'>105</a>
171
+ <a name='L106'></a><a href='#L106'>106</a>
172
+ <a name='L107'></a><a href='#L107'>107</a>
173
+ <a name='L108'></a><a href='#L108'>108</a>
174
+ <a name='L109'></a><a href='#L109'>109</a>
175
+ <a name='L110'></a><a href='#L110'>110</a>
176
+ <a name='L111'></a><a href='#L111'>111</a>
177
+ <a name='L112'></a><a href='#L112'>112</a>
178
+ <a name='L113'></a><a href='#L113'>113</a>
179
+ <a name='L114'></a><a href='#L114'>114</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
162
180
  <span class="cline-any cline-neutral">&nbsp;</span>
163
181
  <span class="cline-any cline-neutral">&nbsp;</span>
164
182
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -169,48 +187,58 @@
169
187
  <span class="cline-any cline-neutral">&nbsp;</span>
170
188
  <span class="cline-any cline-neutral">&nbsp;</span>
171
189
  <span class="cline-any cline-neutral">&nbsp;</span>
172
- <span class="cline-any cline-yes">50x</span>
173
- <span class="cline-any cline-yes">50x</span>
174
- <span class="cline-any cline-yes">50x</span>
175
- <span class="cline-any cline-yes">50x</span>
176
- <span class="cline-any cline-yes">50x</span>
177
190
  <span class="cline-any cline-neutral">&nbsp;</span>
178
- <span class="cline-any cline-yes">50x</span>
179
191
  <span class="cline-any cline-neutral">&nbsp;</span>
180
- <span class="cline-any cline-yes">2x</span>
181
192
  <span class="cline-any cline-neutral">&nbsp;</span>
182
- <span class="cline-any cline-yes">2x</span>
183
- <span class="cline-any cline-no">&nbsp;</span>
184
- <span class="cline-any cline-no">&nbsp;</span>
185
- <span class="cline-any cline-no">&nbsp;</span>
186
- <span class="cline-any cline-no">&nbsp;</span>
187
193
  <span class="cline-any cline-neutral">&nbsp;</span>
188
- <span class="cline-any cline-no">&nbsp;</span>
189
194
  <span class="cline-any cline-neutral">&nbsp;</span>
190
195
  <span class="cline-any cline-neutral">&nbsp;</span>
191
- <span class="cline-any cline-yes">2x</span>
192
- <span class="cline-any cline-no">&nbsp;</span>
193
- <span class="cline-any cline-no">&nbsp;</span>
194
- <span class="cline-any cline-no">&nbsp;</span>
195
- <span class="cline-any cline-no">&nbsp;</span>
196
196
  <span class="cline-any cline-neutral">&nbsp;</span>
197
- <span class="cline-any cline-no">&nbsp;</span>
198
197
  <span class="cline-any cline-neutral">&nbsp;</span>
198
+ <span class="cline-any cline-yes">5x</span>
199
+ <span class="cline-any cline-neutral">&nbsp;</span>
200
+ <span class="cline-any cline-neutral">&nbsp;</span>
201
+ <span class="cline-any cline-neutral">&nbsp;</span>
202
+ <span class="cline-any cline-yes">57x</span>
203
+ <span class="cline-any cline-yes">57x</span>
204
+ <span class="cline-any cline-yes">57x</span>
205
+ <span class="cline-any cline-yes">57x</span>
206
+ <span class="cline-any cline-yes">57x</span>
207
+ <span class="cline-any cline-neutral">&nbsp;</span>
208
+ <span class="cline-any cline-yes">57x</span>
209
+ <span class="cline-any cline-neutral">&nbsp;</span>
210
+ <span class="cline-any cline-yes">7x</span>
211
+ <span class="cline-any cline-neutral">&nbsp;</span>
212
+ <span class="cline-any cline-yes">7x</span>
213
+ <span class="cline-any cline-yes">3x</span>
214
+ <span class="cline-any cline-yes">3x</span>
215
+ <span class="cline-any cline-yes">3x</span>
216
+ <span class="cline-any cline-neutral">&nbsp;</span>
217
+ <span class="cline-any cline-yes">3x</span>
199
218
  <span class="cline-any cline-neutral">&nbsp;</span>
219
+ <span class="cline-any cline-neutral">&nbsp;</span>
220
+ <span class="cline-any cline-yes">7x</span>
221
+ <span class="cline-any cline-yes">2x</span>
222
+ <span class="cline-any cline-yes">2x</span>
200
223
  <span class="cline-any cline-yes">2x</span>
224
+ <span class="cline-any cline-neutral">&nbsp;</span>
225
+ <span class="cline-any cline-yes">2x</span>
226
+ <span class="cline-any cline-neutral">&nbsp;</span>
227
+ <span class="cline-any cline-neutral">&nbsp;</span>
228
+ <span class="cline-any cline-yes">7x</span>
201
229
  <span class="cline-any cline-yes">1x</span>
202
230
  <span class="cline-any cline-neutral">&nbsp;</span>
203
231
  <span class="cline-any cline-neutral">&nbsp;</span>
204
- <span class="cline-any cline-yes">2x</span>
232
+ <span class="cline-any cline-yes">7x</span>
205
233
  <span class="cline-any cline-yes">1x</span>
206
234
  <span class="cline-any cline-neutral">&nbsp;</span>
207
235
  <span class="cline-any cline-neutral">&nbsp;</span>
208
- <span class="cline-any cline-yes">2x</span>
236
+ <span class="cline-any cline-yes">7x</span>
209
237
  <span class="cline-any cline-no">&nbsp;</span>
210
238
  <span class="cline-any cline-neutral">&nbsp;</span>
211
239
  <span class="cline-any cline-neutral">&nbsp;</span>
212
- <span class="cline-any cline-yes">2x</span>
213
- <span class="cline-any cline-yes">2x</span>
240
+ <span class="cline-any cline-yes">7x</span>
241
+ <span class="cline-any cline-yes">7x</span>
214
242
  <span class="cline-any cline-neutral">&nbsp;</span>
215
243
  <span class="cline-any cline-neutral">&nbsp;</span>
216
244
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -229,29 +257,37 @@
229
257
  <span class="cline-any cline-neutral">&nbsp;</span>
230
258
  <span class="cline-any cline-neutral">&nbsp;</span>
231
259
  <span class="cline-any cline-neutral">&nbsp;</span>
232
- <span class="cline-any cline-yes">50x</span>
233
- <span class="cline-any cline-yes">50x</span>
234
260
  <span class="cline-any cline-neutral">&nbsp;</span>
235
261
  <span class="cline-any cline-neutral">&nbsp;</span>
236
- <span class="cline-any cline-yes">50x</span>
237
- <span class="cline-any cline-yes">50x</span>
238
262
  <span class="cline-any cline-neutral">&nbsp;</span>
239
263
  <span class="cline-any cline-neutral">&nbsp;</span>
240
- <span class="cline-any cline-yes">50x</span>
241
- <span class="cline-any cline-yes">3x</span>
242
- <span class="cline-any cline-yes">3x</span>
243
264
  <span class="cline-any cline-neutral">&nbsp;</span>
244
265
  <span class="cline-any cline-neutral">&nbsp;</span>
245
266
  <span class="cline-any cline-neutral">&nbsp;</span>
246
- <span class="cline-any cline-yes">50x</span>
247
- <span class="cline-any cline-yes">50x</span>
248
- <span class="cline-any cline-yes">50x</span>
267
+ <span class="cline-any cline-neutral">&nbsp;</span>
268
+ <span class="cline-any cline-yes">57x</span>
269
+ <span class="cline-any cline-yes">57x</span>
270
+ <span class="cline-any cline-neutral">&nbsp;</span>
271
+ <span class="cline-any cline-neutral">&nbsp;</span>
272
+ <span class="cline-any cline-yes">57x</span>
273
+ <span class="cline-any cline-yes">57x</span>
274
+ <span class="cline-any cline-neutral">&nbsp;</span>
275
+ <span class="cline-any cline-neutral">&nbsp;</span>
276
+ <span class="cline-any cline-yes">57x</span>
277
+ <span class="cline-any cline-yes">5x</span>
278
+ <span class="cline-any cline-yes">5x</span>
279
+ <span class="cline-any cline-neutral">&nbsp;</span>
280
+ <span class="cline-any cline-neutral">&nbsp;</span>
281
+ <span class="cline-any cline-neutral">&nbsp;</span>
282
+ <span class="cline-any cline-yes">57x</span>
283
+ <span class="cline-any cline-yes">57x</span>
284
+ <span class="cline-any cline-yes">57x</span>
249
285
  <span class="cline-any cline-yes">47x</span>
250
286
  <span class="cline-any cline-yes">47x</span>
251
287
  <span class="cline-any cline-yes">47x</span>
252
288
  <span class="cline-any cline-neutral">&nbsp;</span>
253
289
  <span class="cline-any cline-neutral">&nbsp;</span>
254
- <span class="cline-any cline-yes">50x</span>
290
+ <span class="cline-any cline-yes">57x</span>
255
291
  <span class="cline-any cline-neutral">&nbsp;</span>
256
292
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import type { CkRootNode, OpResponseHeaderNode } from '@contractkit/core';
257
293
  import { printModelDecl } from './print-contract.js';
@@ -263,6 +299,18 @@ export const DEFAULT_PRINT_WIDTH = 80;
263
299
  &nbsp;
264
300
  // ─── Options block ──────────────────────────────────────────────────────────
265
301
  &nbsp;
302
+ /**
303
+ * Quote an options-block value if it isn't a plain identifier.
304
+ *
305
+ * Plain identifiers (starts with letter/underscore/dollar, rest are
306
+ * alphanumeric/underscore/dollar/hyphen/dot) are left bare. Everything
307
+ * else — paths with slashes, values starting with `#`, values with spaces,
308
+ * etc. — is double-quoted so the round-trip parse is unambiguous.
309
+ */
310
+ function quoteOptionsValue(value: string): string {
311
+ return /^[a-zA-Z_$][a-zA-Z0-9_$\-.]*$/.test(value) ? value : `"${value}"`;
312
+ }
313
+ &nbsp;
266
314
  function printOptionsBlock(ast: CkRootNode): string | null {
267
315
  const hasMeta = Object.keys(ast.meta).length &gt; 0;
268
316
  const hasServices = Object.keys(ast.services).length &gt; 0;
@@ -274,22 +322,20 @@ function printOptionsBlock(ast: CkRootNode): string | null {
274
322
  &nbsp;
275
323
  const lines: string[] = ['options {'];
276
324
  &nbsp;
277
- <span class="missing-if-branch" title="if path not taken" >I</span>if (hasMeta) {
278
- <span class="cstat-no" title="statement not covered" > lines.push(`${INDENT}keys: {`);</span>
279
- <span class="cstat-no" title="statement not covered" > for (<span class="cstat-no" title="statement not covered" >const [<span class="cstat-no" title="statement not covered" >k</span>ey, <span class="cstat-no" title="statement not covered" >v</span>alue] of <span class="cstat-no" title="statement not covered" >O</span>bject.entries(ast.meta)) {</span></span>
280
- const v = <span class="cstat-no" title="statement not covered" >value.startsWith('#') || value.includes(' ') ? `"${value}"` : value;</span>
281
- <span class="cstat-no" title="statement not covered" > lines.push(`${INDENT}${INDENT}${key}: ${v}`</span>);
325
+ if (hasMeta) {
326
+ lines.push(`${INDENT}keys: {`);
327
+ for (<span class="cstat-no" title="statement not covered" ><span class="branch-1 cbranch-no" title="branch not covered" ><span class="missing-if-branch" title="if path not taken" >I</span>const [k</span></span>ey, value] of Object.entries(ast.meta)) {
328
+ lines.push(`${INDENT}${INDENT}${key}: ${quoteOptionsValue(value)}`);
282
329
  }
283
- <span class="cstat-no" title="statement not covered" > lines.push(`${INDENT}}`);</span>
330
+ lines.push(`${INDENT}}`);
284
331
  }
285
332
  &nbsp;
286
- <span class="missing-if-branch" title="if path not taken" >I</span>if (hasServices) {
287
- <span class="cstat-no" title="statement not covered" > lines.push(`${INDENT}services: {`);</span>
288
- <span class="cstat-no" title="statement not covered" > for (<span class="cstat-no" title="statement not covered" >const [<span class="cstat-no" title="statement not covered" >k</span>ey, <span class="cstat-no" title="statement not covered" >v</span>alue] of <span class="cstat-no" title="statement not covered" >O</span>bject.entries(ast.services)) {</span></span>
289
- const v = <span class="cstat-no" title="statement not covered" >value.startsWith('#') || value.includes(' ') ? `"${value}"` : value;</span>
290
- <span class="cstat-no" title="statement not covered" > lines.push(`${INDENT}${INDENT}${key}: ${v}`</span>);
333
+ if (hasServices) {
334
+ lines.push(`${INDENT}services: {`);
335
+ for (<span class="cstat-no" title="statement not covered" ><span class="branch-1 cbranch-no" title="branch not covered" ><span class="missing-if-branch" title="if path not taken" >I</span>const [k</span></span>ey, value] of Object.entries(ast.services)) {
336
+ lines.push(`${INDENT}${INDENT}${key}: ${quoteOptionsValue(value)}`);
291
337
  }
292
- <span class="cstat-no" title="statement not covered" > lines.push(`${INDENT}}`);</span>
338
+ lines.push(`${INDENT}}`);
293
339
  }
294
340
  &nbsp;
295
341
  if (hasRequestHeaders) {
@@ -324,6 +370,14 @@ function printOptionsHeaderScope(keyword: 'request' | 'response', headers: OpRes
324
370
  &nbsp;
325
371
  // ─── CK file printer ───────────────────────────────────────────────────────
326
372
  &nbsp;
373
+ /**
374
+ * Render a parsed `.ck` AST back to source. Output is byte-identical on
375
+ * round-trip when the input is already canonically formatted: options block
376
+ * first, then contracts, then operations, separated by blank lines.
377
+ *
378
+ * `printWidth` is forwarded to per-model printing for line wrapping inside
379
+ * inline-object types.
380
+ */
327
381
  export function printCk(ast: CkRootNode, <span class="branch-1 cbranch-no" title="branch not covered" ><span class="branch-0 cbranch-no" title="branch not covered" >printWidth: number = D</span></span>EFAULT_PRINT_WIDTH): string {
328
382
  const parts: string[] = [];
329
383
  &nbsp;
@@ -355,7 +409,7 @@ export function printCk(ast: CkRootNode, <span class="branch-1 cbranch-no" title
355
409
  <div class='footer quiet pad2 space-top1 center small'>
356
410
  Code coverage generated by
357
411
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
358
- at 2026-05-01T17:30:35.740Z
412
+ at 2026-05-04T13:24:25.753Z
359
413
  </div>
360
414
  <script src="prettify.js"></script>
361
415
  <script>
@@ -30,9 +30,9 @@
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">28.57% </span>
33
+ <span class="strong">30.35% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>16/56</span>
35
+ <span class='fraction'>17/56</span>
36
36
  </div>
37
37
 
38
38
 
@@ -138,15 +138,15 @@
138
138
  <span class="cline-any cline-neutral">&nbsp;</span>
139
139
  <span class="cline-any cline-neutral">&nbsp;</span>
140
140
  <span class="cline-any cline-neutral">&nbsp;</span>
141
- <span class="cline-any cline-yes">3x</span>
141
+ <span class="cline-any cline-yes">5x</span>
142
142
  <span class="cline-any cline-neutral">&nbsp;</span>
143
- <span class="cline-any cline-yes">3x</span>
143
+ <span class="cline-any cline-yes">5x</span>
144
144
  <span class="cline-any cline-no">&nbsp;</span>
145
145
  <span class="cline-any cline-neutral">&nbsp;</span>
146
146
  <span class="cline-any cline-neutral">&nbsp;</span>
147
147
  <span class="cline-any cline-neutral">&nbsp;</span>
148
- <span class="cline-any cline-yes">3x</span>
149
- <span class="cline-any cline-yes">3x</span>
148
+ <span class="cline-any cline-yes">5x</span>
149
+ <span class="cline-any cline-yes">5x</span>
150
150
  <span class="cline-any cline-neutral">&nbsp;</span>
151
151
  <span class="cline-any cline-neutral">&nbsp;</span>
152
152
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -155,16 +155,16 @@
155
155
  <span class="cline-any cline-neutral">&nbsp;</span>
156
156
  <span class="cline-any cline-neutral">&nbsp;</span>
157
157
  <span class="cline-any cline-neutral">&nbsp;</span>
158
- <span class="cline-any cline-yes">3x</span>
159
- <span class="cline-any cline-yes">3x</span>
160
- <span class="cline-any cline-yes">3x</span>
158
+ <span class="cline-any cline-yes">5x</span>
159
+ <span class="cline-any cline-yes">5x</span>
160
+ <span class="cline-any cline-yes">5x</span>
161
161
  <span class="cline-any cline-neutral">&nbsp;</span>
162
- <span class="cline-any cline-yes">3x</span>
163
- <span class="cline-any cline-yes">3x</span>
164
- <span class="cline-any cline-yes">4x</span>
162
+ <span class="cline-any cline-yes">5x</span>
163
+ <span class="cline-any cline-yes">5x</span>
164
+ <span class="cline-any cline-yes">6x</span>
165
165
  <span class="cline-any cline-neutral">&nbsp;</span>
166
- <span class="cline-any cline-yes">3x</span>
167
- <span class="cline-any cline-yes">3x</span>
166
+ <span class="cline-any cline-yes">5x</span>
167
+ <span class="cline-any cline-yes">5x</span>
168
168
  <span class="cline-any cline-neutral">&nbsp;</span>
169
169
  <span class="cline-any cline-neutral">&nbsp;</span>
170
170
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -225,7 +225,7 @@ export function printModelDecl(model: ModelNode, printWidth: number = <span clas
225
225
  .filter(Boolean)
226
226
  .join(' ');
227
227
  const modePrefix = modifiers ? <span class="branch-0 cbranch-no" title="branch not covered" >`${modifiers} ` : '</span>';
228
- const baseChain = model.bases &amp;&amp; model.bases.length &gt; 0 ? `${model.bases.join(' &amp; ')} &amp; ` : <span class="branch-1 cbranch-no" title="branch not covered" >'';</span>
228
+ const baseChain = model.bases &amp;&amp; model.bases.length &gt; 0 ? `${model.bases.join(' &amp; ')} &amp; ` : '';
229
229
  const header = `${modePrefix}${model.name}: ${baseChain}{${commentSuffix}`;
230
230
  &nbsp;
231
231
  const lines: string[] = [header];
@@ -277,7 +277,7 @@ function <span class="fstat-no" title="function not covered" >printTypeAlias(m</
277
277
  <div class='footer quiet pad2 space-top1 center small'>
278
278
  Code coverage generated by
279
279
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
280
- at 2026-05-01T17:30:35.740Z
280
+ at 2026-05-04T13:24:25.753Z
281
281
  </div>
282
282
  <script src="prettify.js"></script>
283
283
  <script>
@@ -817,7 +817,7 @@ function printResponseBlock(responses: OpResponseNode[]): string[] {
817
817
  <div class='footer quiet pad2 space-top1 center small'>
818
818
  Code coverage generated by
819
819
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
820
- at 2026-05-01T17:30:35.740Z
820
+ at 2026-05-04T13:24:25.753Z
821
821
  </div>
822
822
  <script src="prettify.js"></script>
823
823
  <script>