@contractkit/prettier-plugin 0.9.1 → 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-01T18:49:13.599Z
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">66.02% </span>
26
+ <span class="strong">66.3% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>239/362</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">56.81% </span>
33
+ <span class="strong">58.04% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>225/396</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">69.23% </span>
40
+ <span class="strong">70.37% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>18/26</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">71.87% </span>
47
+ <span class="strong">72.06% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>207/288</span>
49
+ <span class='fraction'>209/290</span>
50
50
  </div>
51
51
 
52
52
 
@@ -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-01T18:49:13.599Z
164
+ at 2026-05-04T13:24:25.753Z
165
165
  </div>
166
166
  <script src="prettify.js"></script>
167
167
  <script>
@@ -199,13 +199,13 @@
199
199
  <span class="cline-any cline-neutral">&nbsp;</span>
200
200
  <span class="cline-any cline-neutral">&nbsp;</span>
201
201
  <span class="cline-any cline-neutral">&nbsp;</span>
202
- <span class="cline-any cline-yes">55x</span>
203
- <span class="cline-any cline-yes">55x</span>
204
- <span class="cline-any cline-yes">55x</span>
205
- <span class="cline-any cline-yes">55x</span>
206
- <span class="cline-any cline-yes">55x</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
207
  <span class="cline-any cline-neutral">&nbsp;</span>
208
- <span class="cline-any cline-yes">55x</span>
208
+ <span class="cline-any cline-yes">57x</span>
209
209
  <span class="cline-any cline-neutral">&nbsp;</span>
210
210
  <span class="cline-any cline-yes">7x</span>
211
211
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -265,29 +265,29 @@
265
265
  <span class="cline-any cline-neutral">&nbsp;</span>
266
266
  <span class="cline-any cline-neutral">&nbsp;</span>
267
267
  <span class="cline-any cline-neutral">&nbsp;</span>
268
- <span class="cline-any cline-yes">55x</span>
269
- <span class="cline-any cline-yes">55x</span>
268
+ <span class="cline-any cline-yes">57x</span>
269
+ <span class="cline-any cline-yes">57x</span>
270
270
  <span class="cline-any cline-neutral">&nbsp;</span>
271
271
  <span class="cline-any cline-neutral">&nbsp;</span>
272
- <span class="cline-any cline-yes">55x</span>
273
- <span class="cline-any cline-yes">55x</span>
272
+ <span class="cline-any cline-yes">57x</span>
273
+ <span class="cline-any cline-yes">57x</span>
274
274
  <span class="cline-any cline-neutral">&nbsp;</span>
275
275
  <span class="cline-any cline-neutral">&nbsp;</span>
276
- <span class="cline-any cline-yes">55x</span>
277
- <span class="cline-any cline-yes">3x</span>
278
- <span class="cline-any cline-yes">3x</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
279
  <span class="cline-any cline-neutral">&nbsp;</span>
280
280
  <span class="cline-any cline-neutral">&nbsp;</span>
281
281
  <span class="cline-any cline-neutral">&nbsp;</span>
282
- <span class="cline-any cline-yes">55x</span>
283
- <span class="cline-any cline-yes">55x</span>
284
- <span class="cline-any cline-yes">55x</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>
285
285
  <span class="cline-any cline-yes">47x</span>
286
286
  <span class="cline-any cline-yes">47x</span>
287
287
  <span class="cline-any cline-yes">47x</span>
288
288
  <span class="cline-any cline-neutral">&nbsp;</span>
289
289
  <span class="cline-any cline-neutral">&nbsp;</span>
290
- <span class="cline-any cline-yes">55x</span>
290
+ <span class="cline-any cline-yes">57x</span>
291
291
  <span class="cline-any cline-neutral">&nbsp;</span>
292
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';
293
293
  import { printModelDecl } from './print-contract.js';
@@ -409,7 +409,7 @@ export function printCk(ast: CkRootNode, <span class="branch-1 cbranch-no" title
409
409
  <div class='footer quiet pad2 space-top1 center small'>
410
410
  Code coverage generated by
411
411
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
412
- at 2026-05-01T18:49:13.599Z
412
+ at 2026-05-04T13:24:25.753Z
413
413
  </div>
414
414
  <script src="prettify.js"></script>
415
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-01T18:49:13.599Z
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-01T18:49:13.599Z
820
+ at 2026-05-04T13:24:25.753Z
821
821
  </div>
822
822
  <script src="prettify.js"></script>
823
823
  <script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">45.23% </span>
26
+ <span class="strong">47.12% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>38/84</span>
28
+ <span class='fraction'>41/87</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">42.55% </span>
33
+ <span class="strong">46.87% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>40/94</span>
35
+ <span class='fraction'>45/96</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">40% </span>
40
+ <span class="strong">45.45% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>4/10</span>
42
+ <span class='fraction'>5/11</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">47.14% </span>
47
+ <span class="strong">48.61% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>33/70</span>
49
+ <span class='fraction'>35/72</span>
50
50
  </div>
51
51
 
52
52
 
@@ -205,13 +205,21 @@
205
205
  <a name='L140'></a><a href='#L140'>140</a>
206
206
  <a name='L141'></a><a href='#L141'>141</a>
207
207
  <a name='L142'></a><a href='#L142'>142</a>
208
- <a name='L143'></a><a href='#L143'>143</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
208
+ <a name='L143'></a><a href='#L143'>143</a>
209
+ <a name='L144'></a><a href='#L144'>144</a>
210
+ <a name='L145'></a><a href='#L145'>145</a>
211
+ <a name='L146'></a><a href='#L146'>146</a>
212
+ <a name='L147'></a><a href='#L147'>147</a>
213
+ <a name='L148'></a><a href='#L148'>148</a>
214
+ <a name='L149'></a><a href='#L149'>149</a>
215
+ <a name='L150'></a><a href='#L150'>150</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
209
216
  <span class="cline-any cline-neutral">&nbsp;</span>
210
217
  <span class="cline-any cline-neutral">&nbsp;</span>
211
218
  <span class="cline-any cline-neutral">&nbsp;</span>
212
219
  <span class="cline-any cline-neutral">&nbsp;</span>
213
220
  <span class="cline-any cline-neutral">&nbsp;</span>
214
- <span class="cline-any cline-yes">34x</span>
221
+ <span class="cline-any cline-neutral">&nbsp;</span>
222
+ <span class="cline-any cline-yes">36x</span>
215
223
  <span class="cline-any cline-neutral">&nbsp;</span>
216
224
  <span class="cline-any cline-yes">23x</span>
217
225
  <span class="cline-any cline-yes">23x</span>
@@ -236,7 +244,7 @@
236
244
  <span class="cline-any cline-neutral">&nbsp;</span>
237
245
  <span class="cline-any cline-no">&nbsp;</span>
238
246
  <span class="cline-any cline-neutral">&nbsp;</span>
239
- <span class="cline-any cline-yes">1x</span>
247
+ <span class="cline-any cline-yes">3x</span>
240
248
  <span class="cline-any cline-neutral">&nbsp;</span>
241
249
  <span class="cline-any cline-no">&nbsp;</span>
242
250
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -277,21 +285,21 @@
277
285
  <span class="cline-any cline-neutral">&nbsp;</span>
278
286
  <span class="cline-any cline-neutral">&nbsp;</span>
279
287
  <span class="cline-any cline-neutral">&nbsp;</span>
280
- <span class="cline-any cline-yes">4x</span>
281
- <span class="cline-any cline-yes">4x</span>
282
- <span class="cline-any cline-yes">4x</span>
283
- <span class="cline-any cline-yes">4x</span>
284
- <span class="cline-any cline-yes">4x</span>
285
- <span class="cline-any cline-yes">4x</span>
286
- <span class="cline-any cline-yes">4x</span>
287
- <span class="cline-any cline-yes">4x</span>
288
- <span class="cline-any cline-yes">4x</span>
288
+ <span class="cline-any cline-yes">6x</span>
289
+ <span class="cline-any cline-yes">6x</span>
290
+ <span class="cline-any cline-yes">6x</span>
291
+ <span class="cline-any cline-yes">6x</span>
292
+ <span class="cline-any cline-yes">6x</span>
293
+ <span class="cline-any cline-yes">6x</span>
294
+ <span class="cline-any cline-yes">6x</span>
295
+ <span class="cline-any cline-yes">6x</span>
296
+ <span class="cline-any cline-yes">6x</span>
289
297
  <span class="cline-any cline-neutral">&nbsp;</span>
290
298
  <span class="cline-any cline-neutral">&nbsp;</span>
291
299
  <span class="cline-any cline-neutral">&nbsp;</span>
292
- <span class="cline-any cline-yes">4x</span>
293
- <span class="cline-any cline-yes">4x</span>
294
- <span class="cline-any cline-yes">4x</span>
300
+ <span class="cline-any cline-yes">6x</span>
301
+ <span class="cline-any cline-yes">6x</span>
302
+ <span class="cline-any cline-yes">6x</span>
295
303
  <span class="cline-any cline-no">&nbsp;</span>
296
304
  <span class="cline-any cline-no">&nbsp;</span>
297
305
  <span class="cline-any cline-no">&nbsp;</span>
@@ -301,14 +309,14 @@
301
309
  <span class="cline-any cline-neutral">&nbsp;</span>
302
310
  <span class="cline-any cline-neutral">&nbsp;</span>
303
311
  <span class="cline-any cline-neutral">&nbsp;</span>
304
- <span class="cline-any cline-yes">4x</span>
305
- <span class="cline-any cline-yes">4x</span>
306
- <span class="cline-any cline-yes">4x</span>
307
- <span class="cline-any cline-yes">4x</span>
312
+ <span class="cline-any cline-yes">6x</span>
313
+ <span class="cline-any cline-yes">6x</span>
314
+ <span class="cline-any cline-yes">6x</span>
315
+ <span class="cline-any cline-yes">6x</span>
308
316
  <span class="cline-any cline-no">&nbsp;</span>
309
317
  <span class="cline-any cline-no">&nbsp;</span>
310
318
  <span class="cline-any cline-neutral">&nbsp;</span>
311
- <span class="cline-any cline-yes">4x</span>
319
+ <span class="cline-any cline-yes">6x</span>
312
320
  <span class="cline-any cline-neutral">&nbsp;</span>
313
321
  <span class="cline-any cline-neutral">&nbsp;</span>
314
322
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -320,6 +328,12 @@
320
328
  <span class="cline-any cline-neutral">&nbsp;</span>
321
329
  <span class="cline-any cline-neutral">&nbsp;</span>
322
330
  <span class="cline-any cline-neutral">&nbsp;</span>
331
+ <span class="cline-any cline-yes">9x</span>
332
+ <span class="cline-any cline-yes">2x</span>
333
+ <span class="cline-any cline-neutral">&nbsp;</span>
334
+ <span class="cline-any cline-neutral">&nbsp;</span>
335
+ <span class="cline-any cline-neutral">&nbsp;</span>
336
+ <span class="cline-any cline-neutral">&nbsp;</span>
323
337
  <span class="cline-any cline-yes">5x</span>
324
338
  <span class="cline-any cline-neutral">&nbsp;</span>
325
339
  <span class="cline-any cline-yes">2x</span>
@@ -335,23 +349,24 @@
335
349
  <span class="cline-any cline-neutral">&nbsp;</span>
336
350
  <span class="cline-any cline-neutral">&nbsp;</span>
337
351
  <span class="cline-any cline-neutral">&nbsp;</span>
338
- <span class="cline-any cline-yes">4x</span>
352
+ <span class="cline-any cline-yes">6x</span>
339
353
  <span class="cline-any cline-no">&nbsp;</span>
340
354
  <span class="cline-any cline-neutral">&nbsp;</span>
341
- <span class="cline-any cline-yes">4x</span>
355
+ <span class="cline-any cline-yes">6x</span>
342
356
  <span class="cline-any cline-no">&nbsp;</span>
343
357
  <span class="cline-any cline-no">&nbsp;</span>
344
358
  <span class="cline-any cline-no">&nbsp;</span>
345
359
  <span class="cline-any cline-no">&nbsp;</span>
346
360
  <span class="cline-any cline-neutral">&nbsp;</span>
347
361
  <span class="cline-any cline-neutral">&nbsp;</span>
348
- <span class="cline-any cline-yes">4x</span>
362
+ <span class="cline-any cline-yes">6x</span>
349
363
  <span class="cline-any cline-neutral">&nbsp;</span>
350
364
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import type { ContractTypeNode, FieldNode, InlineObjectTypeNode } from '@contractkit/core';
351
365
  import { INDENT } from './indent.js';
352
366
  &nbsp;
353
367
  // ─── Type expression printer ────────────────────────────────────────────────
354
368
  &nbsp;
369
+ /** Render a `ContractTypeNode` back to its `.ck` source string. */
355
370
  export function printType(type: ContractTypeNode): string {
356
371
  switch (type.kind) {
357
372
  case 'scalar': {
@@ -378,7 +393,7 @@ export function printType(type: ContractTypeNode): string {
378
393
  <span class="branch-3 cbranch-no" title="branch not covered" > case 'record':</span>
379
394
  <span class="cstat-no" title="statement not covered" > return `record(${printType(type.key)}, ${printType(type.value)})`;</span>
380
395
  case 'enum':
381
- return `enum(${type.values.join(', ')})`;
396
+ return `enum(${type.values.map(formatEnumValue).join(', ')})`;
382
397
  <span class="branch-5 cbranch-no" title="branch not covered" > case 'literal':</span>
383
398
  <span class="cstat-no" title="statement not covered" > return typeof type.value === 'string' ? `literal("${type.value}")` : `literal(${type.value})`;</span>
384
399
  <span class="branch-6 cbranch-no" title="branch not covered" > case 'union':</span>
@@ -412,7 +427,7 @@ function <span class="fstat-no" title="function not covered" >printInlineObjectC
412
427
  /** Multi-line enum form — one value per line, used when single-line would exceed print width. */
413
428
  export function <span class="fstat-no" title="function not covered" >printEnumExpanded(v</span>alues: string[], indent: string): string {
414
429
  const innerIndent = <span class="cstat-no" title="statement not covered" >indent + INDENT;</span>
415
- <span class="cstat-no" title="statement not covered" > return `enum(\n${values.map(<span class="fstat-no" title="function not covered" >v =&gt; <span class="cstat-no" title="statement not covered" >`</span>${innerIndent}${v}`</span>).join(',\n')}\n${indent})`;</span>
430
+ <span class="cstat-no" title="statement not covered" > return `enum(\n${values.map(<span class="fstat-no" title="function not covered" >v =&gt; <span class="cstat-no" title="statement not covered" >`</span>${innerIndent}${formatEnumValue(v)}`</span>).join(',\n')}\n${indent})`;</span>
416
431
  }
417
432
  &nbsp;
418
433
  // ─── Field printer ──────────────────────────────────────────────────────────
@@ -446,7 +461,7 @@ export function printField(field: FieldNode, indent: string, printWidth: number
446
461
  let typeStr = printType(field.type);
447
462
  <span class="missing-if-branch" title="if path not taken" >I</span>if (field.nullable) <span class="cstat-no" title="statement not covered" >typeStr += ' | null';</span>
448
463
  const fullLine = `${indent}${field.name}${opt}: ${mods}${typeStr}${def}${comment}`;
449
- <span class="missing-if-branch" title="if path not taken" >I</span>if (field.type.kind === 'enum' &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >!field.nullable </span>&amp;&amp; <span class="branch-2 cbranch-no" title="branch not covered" >field.default === undefined &amp;&amp; <span class="branch-3 cbranch-no" title="branch not covered" >f</span>ullLine.length &gt; printWidth) {</span>
464
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (field.type.kind === 'enum' &amp;&amp; !field.nullable &amp;&amp; field.default === undefined &amp;&amp; fullLine.length &gt; printWidth) {
450
465
  const enumStr = <span class="cstat-no" title="statement not covered" >printEnumExpanded(field.type.values, indent);</span>
451
466
  <span class="cstat-no" title="statement not covered" > return `${indent}${field.name}${opt}: ${mods}${enumStr}${comment}`</span>;
452
467
  }
@@ -460,6 +475,12 @@ export function <span class="fstat-no" title="function not covered" >printInline
460
475
  &nbsp;
461
476
  // ─── Helpers ────────────────────────────────────────────────────────────────
462
477
  &nbsp;
478
+ /** Format a single enum value: bare identifier stays bare; anything else gets double-quoted. */
479
+ export function formatEnumValue(v: string): string {
480
+ if (/^[a-zA-Z_$][a-zA-Z0-9_$\-.]*$/.test(v)) return v;
481
+ return `"${v}"`;
482
+ }
483
+ &nbsp;
463
484
  /** Format a default value: quote strings that aren't valid bare identifiers. */
464
485
  export function formatDefault(val: string | number | boolean): string {
465
486
  if (typeof val === 'number' || typeof val === 'boolean') return String(val);
@@ -496,7 +517,7 @@ export function extractTrailingInlineObject(type: ContractTypeNode): {
496
517
  <div class='footer quiet pad2 space-top1 center small'>
497
518
  Code coverage generated by
498
519
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
499
- at 2026-05-01T18:49:13.599Z
520
+ at 2026-05-04T13:24:25.753Z
500
521
  </div>
501
522
  <script src="prettify.js"></script>
502
523
  <script>
package/dist/index.js CHANGED
@@ -36,7 +36,7 @@ function printType(type) {
36
36
  case "record":
37
37
  return `record(${printType(type.key)}, ${printType(type.value)})`;
38
38
  case "enum":
39
- return `enum(${type.values.join(", ")})`;
39
+ return `enum(${type.values.map(formatEnumValue).join(", ")})`;
40
40
  case "literal":
41
41
  return typeof type.value === "string" ? `literal("${type.value}")` : `literal(${type.value})`;
42
42
  case "union":
@@ -69,7 +69,7 @@ __name(printInlineObjectCompact, "printInlineObjectCompact");
69
69
  function printEnumExpanded(values, indent) {
70
70
  const innerIndent = indent + INDENT;
71
71
  return `enum(
72
- ${values.map((v) => `${innerIndent}${v}`).join(",\n")}
72
+ ${values.map((v) => `${innerIndent}${formatEnumValue(v)}`).join(",\n")}
73
73
  ${indent})`;
74
74
  }
75
75
  __name(printEnumExpanded, "printEnumExpanded");
@@ -109,6 +109,11 @@ function printInlineObjectExpanded(obj, indent, printWidth = 80) {
109
109
  return obj.fields.map((f) => printField(f, indent, printWidth));
110
110
  }
111
111
  __name(printInlineObjectExpanded, "printInlineObjectExpanded");
112
+ function formatEnumValue(v) {
113
+ if (/^[a-zA-Z_$][a-zA-Z0-9_$\-.]*$/.test(v)) return v;
114
+ return `"${v}"`;
115
+ }
116
+ __name(formatEnumValue, "formatEnumValue");
112
117
  function formatDefault(val) {
113
118
  if (typeof val === "number" || typeof val === "boolean") return String(val);
114
119
  if (/^[a-zA-Z_$][a-zA-Z0-9_$\-.]*$/.test(val)) return val;