@contractkit/prettier-plugin 0.9.2 → 0.9.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.
@@ -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-04T13:24:25.753Z
76
+ at 2026-05-07T11:09:14.185Z
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.3% </span>
26
+ <span class="strong">68.47% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>242/365</span>
28
+ <span class='fraction'>291/425</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">58.04% </span>
33
+ <span class="strong">58.91% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>231/398</span>
35
+ <span class='fraction'>261/443</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">70.37% </span>
40
+ <span class="strong">74.19% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>19/27</span>
42
+ <span class='fraction'>23/31</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">72.06% </span>
47
+ <span class="strong">74.69% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>209/290</span>
49
+ <span class='fraction'>248/332</span>
50
50
  </div>
51
51
 
52
52
 
@@ -125,17 +125,17 @@
125
125
 
126
126
  <tr>
127
127
  <td class="file medium" data-value="print-operation.ts"><a href="print-operation.ts.html">print-operation.ts</a></td>
128
- <td data-value="70.62" class="pic medium">
129
- <div class="chart"><div class="cover-fill" style="width: 70%"></div><div class="cover-empty" style="width: 30%"></div></div>
128
+ <td data-value="73.41" class="pic medium">
129
+ <div class="chart"><div class="cover-fill" style="width: 73%"></div><div class="cover-empty" style="width: 27%"></div></div>
130
130
  </td>
131
- <td data-value="70.62" class="pct medium">70.62%</td>
132
- <td data-value="177" class="abs medium">125/177</td>
133
- <td data-value="63.74" class="pct medium">63.74%</td>
134
- <td data-value="171" class="abs medium">109/171</td>
135
- <td data-value="90" class="pct high">90%</td>
136
- <td data-value="10" class="abs high">9/10</td>
137
- <td data-value="80.43" class="pct high">80.43%</td>
138
- <td data-value="138" class="abs high">111/138</td>
131
+ <td data-value="73.41" class="pct medium">73.41%</td>
132
+ <td data-value="237" class="abs medium">174/237</td>
133
+ <td data-value="64.35" class="pct medium">64.35%</td>
134
+ <td data-value="216" class="abs medium">139/216</td>
135
+ <td data-value="92.85" class="pct high">92.85%</td>
136
+ <td data-value="14" class="abs high">13/14</td>
137
+ <td data-value="83.33" class="pct high">83.33%</td>
138
+ <td data-value="180" class="abs high">150/180</td>
139
139
  </tr>
140
140
 
141
141
  <tr>
@@ -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-04T13:24:25.753Z
164
+ at 2026-05-07T11:09:14.185Z
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">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>
202
+ <span class="cline-any cline-yes">60x</span>
203
+ <span class="cline-any cline-yes">60x</span>
204
+ <span class="cline-any cline-yes">60x</span>
205
+ <span class="cline-any cline-yes">60x</span>
206
+ <span class="cline-any cline-yes">60x</span>
207
207
  <span class="cline-any cline-neutral">&nbsp;</span>
208
- <span class="cline-any cline-yes">57x</span>
208
+ <span class="cline-any cline-yes">60x</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">57x</span>
269
- <span class="cline-any cline-yes">57x</span>
268
+ <span class="cline-any cline-yes">60x</span>
269
+ <span class="cline-any cline-yes">60x</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">57x</span>
273
- <span class="cline-any cline-yes">57x</span>
272
+ <span class="cline-any cline-yes">60x</span>
273
+ <span class="cline-any cline-yes">60x</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">57x</span>
276
+ <span class="cline-any cline-yes">60x</span>
277
277
  <span class="cline-any cline-yes">5x</span>
278
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">57x</span>
283
- <span class="cline-any cline-yes">57x</span>
284
- <span class="cline-any cline-yes">57x</span>
285
- <span class="cline-any cline-yes">47x</span>
286
- <span class="cline-any cline-yes">47x</span>
287
- <span class="cline-any cline-yes">47x</span>
282
+ <span class="cline-any cline-yes">60x</span>
283
+ <span class="cline-any cline-yes">60x</span>
284
+ <span class="cline-any cline-yes">60x</span>
285
+ <span class="cline-any cline-yes">50x</span>
286
+ <span class="cline-any cline-yes">50x</span>
287
+ <span class="cline-any cline-yes">50x</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">57x</span>
290
+ <span class="cline-any cline-yes">60x</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-04T13:24:25.753Z
412
+ at 2026-05-07T11:09:14.185Z
413
413
  </div>
414
414
  <script src="prettify.js"></script>
415
415
  <script>
@@ -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-04T13:24:25.753Z
280
+ at 2026-05-07T11:09:14.185Z
281
281
  </div>
282
282
  <script src="prettify.js"></script>
283
283
  <script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">70.62% </span>
26
+ <span class="strong">73.41% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>125/177</span>
28
+ <span class='fraction'>174/237</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">63.74% </span>
33
+ <span class="strong">64.35% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>109/171</span>
35
+ <span class='fraction'>139/216</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">90% </span>
40
+ <span class="strong">92.85% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>9/10</span>
42
+ <span class='fraction'>13/14</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">80.43% </span>
47
+ <span class="strong">83.33% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>111/138</span>
49
+ <span class='fraction'>150/180</span>
50
50
  </div>
51
51
 
52
52
 
@@ -312,7 +312,77 @@
312
312
  <a name='L247'></a><a href='#L247'>247</a>
313
313
  <a name='L248'></a><a href='#L248'>248</a>
314
314
  <a name='L249'></a><a href='#L249'>249</a>
315
- <a name='L250'></a><a href='#L250'>250</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
315
+ <a name='L250'></a><a href='#L250'>250</a>
316
+ <a name='L251'></a><a href='#L251'>251</a>
317
+ <a name='L252'></a><a href='#L252'>252</a>
318
+ <a name='L253'></a><a href='#L253'>253</a>
319
+ <a name='L254'></a><a href='#L254'>254</a>
320
+ <a name='L255'></a><a href='#L255'>255</a>
321
+ <a name='L256'></a><a href='#L256'>256</a>
322
+ <a name='L257'></a><a href='#L257'>257</a>
323
+ <a name='L258'></a><a href='#L258'>258</a>
324
+ <a name='L259'></a><a href='#L259'>259</a>
325
+ <a name='L260'></a><a href='#L260'>260</a>
326
+ <a name='L261'></a><a href='#L261'>261</a>
327
+ <a name='L262'></a><a href='#L262'>262</a>
328
+ <a name='L263'></a><a href='#L263'>263</a>
329
+ <a name='L264'></a><a href='#L264'>264</a>
330
+ <a name='L265'></a><a href='#L265'>265</a>
331
+ <a name='L266'></a><a href='#L266'>266</a>
332
+ <a name='L267'></a><a href='#L267'>267</a>
333
+ <a name='L268'></a><a href='#L268'>268</a>
334
+ <a name='L269'></a><a href='#L269'>269</a>
335
+ <a name='L270'></a><a href='#L270'>270</a>
336
+ <a name='L271'></a><a href='#L271'>271</a>
337
+ <a name='L272'></a><a href='#L272'>272</a>
338
+ <a name='L273'></a><a href='#L273'>273</a>
339
+ <a name='L274'></a><a href='#L274'>274</a>
340
+ <a name='L275'></a><a href='#L275'>275</a>
341
+ <a name='L276'></a><a href='#L276'>276</a>
342
+ <a name='L277'></a><a href='#L277'>277</a>
343
+ <a name='L278'></a><a href='#L278'>278</a>
344
+ <a name='L279'></a><a href='#L279'>279</a>
345
+ <a name='L280'></a><a href='#L280'>280</a>
346
+ <a name='L281'></a><a href='#L281'>281</a>
347
+ <a name='L282'></a><a href='#L282'>282</a>
348
+ <a name='L283'></a><a href='#L283'>283</a>
349
+ <a name='L284'></a><a href='#L284'>284</a>
350
+ <a name='L285'></a><a href='#L285'>285</a>
351
+ <a name='L286'></a><a href='#L286'>286</a>
352
+ <a name='L287'></a><a href='#L287'>287</a>
353
+ <a name='L288'></a><a href='#L288'>288</a>
354
+ <a name='L289'></a><a href='#L289'>289</a>
355
+ <a name='L290'></a><a href='#L290'>290</a>
356
+ <a name='L291'></a><a href='#L291'>291</a>
357
+ <a name='L292'></a><a href='#L292'>292</a>
358
+ <a name='L293'></a><a href='#L293'>293</a>
359
+ <a name='L294'></a><a href='#L294'>294</a>
360
+ <a name='L295'></a><a href='#L295'>295</a>
361
+ <a name='L296'></a><a href='#L296'>296</a>
362
+ <a name='L297'></a><a href='#L297'>297</a>
363
+ <a name='L298'></a><a href='#L298'>298</a>
364
+ <a name='L299'></a><a href='#L299'>299</a>
365
+ <a name='L300'></a><a href='#L300'>300</a>
366
+ <a name='L301'></a><a href='#L301'>301</a>
367
+ <a name='L302'></a><a href='#L302'>302</a>
368
+ <a name='L303'></a><a href='#L303'>303</a>
369
+ <a name='L304'></a><a href='#L304'>304</a>
370
+ <a name='L305'></a><a href='#L305'>305</a>
371
+ <a name='L306'></a><a href='#L306'>306</a>
372
+ <a name='L307'></a><a href='#L307'>307</a>
373
+ <a name='L308'></a><a href='#L308'>308</a>
374
+ <a name='L309'></a><a href='#L309'>309</a>
375
+ <a name='L310'></a><a href='#L310'>310</a>
376
+ <a name='L311'></a><a href='#L311'>311</a>
377
+ <a name='L312'></a><a href='#L312'>312</a>
378
+ <a name='L313'></a><a href='#L313'>313</a>
379
+ <a name='L314'></a><a href='#L314'>314</a>
380
+ <a name='L315'></a><a href='#L315'>315</a>
381
+ <a name='L316'></a><a href='#L316'>316</a>
382
+ <a name='L317'></a><a href='#L317'>317</a>
383
+ <a name='L318'></a><a href='#L318'>318</a>
384
+ <a name='L319'></a><a href='#L319'>319</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
385
+ <span class="cline-any cline-neutral">&nbsp;</span>
316
386
  <span class="cline-any cline-neutral">&nbsp;</span>
317
387
  <span class="cline-any cline-neutral">&nbsp;</span>
318
388
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -356,8 +426,8 @@
356
426
  <span class="cline-any cline-neutral">&nbsp;</span>
357
427
  <span class="cline-any cline-neutral">&nbsp;</span>
358
428
  <span class="cline-any cline-neutral">&nbsp;</span>
359
- <span class="cline-any cline-yes">97x</span>
360
- <span class="cline-any cline-yes">97x</span>
429
+ <span class="cline-any cline-yes">103x</span>
430
+ <span class="cline-any cline-yes">103x</span>
361
431
  <span class="cline-any cline-no">&nbsp;</span>
362
432
  <span class="cline-any cline-no">&nbsp;</span>
363
433
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -366,29 +436,29 @@
366
436
  <span class="cline-any cline-neutral">&nbsp;</span>
367
437
  <span class="cline-any cline-neutral">&nbsp;</span>
368
438
  <span class="cline-any cline-neutral">&nbsp;</span>
369
- <span class="cline-any cline-yes">47x</span>
370
- <span class="cline-any cline-yes">47x</span>
371
- <span class="cline-any cline-yes">47x</span>
439
+ <span class="cline-any cline-yes">50x</span>
440
+ <span class="cline-any cline-yes">50x</span>
441
+ <span class="cline-any cline-yes">50x</span>
372
442
  <span class="cline-any cline-neutral">&nbsp;</span>
373
- <span class="cline-any cline-yes">47x</span>
443
+ <span class="cline-any cline-yes">50x</span>
374
444
  <span class="cline-any cline-yes">3x</span>
375
445
  <span class="cline-any cline-neutral">&nbsp;</span>
376
446
  <span class="cline-any cline-neutral">&nbsp;</span>
377
- <span class="cline-any cline-yes">47x</span>
447
+ <span class="cline-any cline-yes">50x</span>
378
448
  <span class="cline-any cline-yes">2x</span>
379
449
  <span class="cline-any cline-neutral">&nbsp;</span>
380
450
  <span class="cline-any cline-neutral">&nbsp;</span>
381
- <span class="cline-any cline-yes">47x</span>
382
- <span class="cline-any cline-neutral">&nbsp;</span>
383
- <span class="cline-any cline-yes">50x</span>
384
451
  <span class="cline-any cline-yes">50x</span>
385
452
  <span class="cline-any cline-neutral">&nbsp;</span>
453
+ <span class="cline-any cline-yes">53x</span>
454
+ <span class="cline-any cline-yes">53x</span>
386
455
  <span class="cline-any cline-neutral">&nbsp;</span>
387
456
  <span class="cline-any cline-neutral">&nbsp;</span>
388
- <span class="cline-any cline-yes">47x</span>
389
457
  <span class="cline-any cline-neutral">&nbsp;</span>
390
- <span class="cline-any cline-yes">47x</span>
391
- <span class="cline-any cline-yes">47x</span>
458
+ <span class="cline-any cline-yes">50x</span>
459
+ <span class="cline-any cline-neutral">&nbsp;</span>
460
+ <span class="cline-any cline-yes">50x</span>
461
+ <span class="cline-any cline-yes">50x</span>
392
462
  <span class="cline-any cline-neutral">&nbsp;</span>
393
463
  <span class="cline-any cline-neutral">&nbsp;</span>
394
464
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -419,45 +489,113 @@
419
489
  <span class="cline-any cline-neutral">&nbsp;</span>
420
490
  <span class="cline-any cline-neutral">&nbsp;</span>
421
491
  <span class="cline-any cline-neutral">&nbsp;</span>
422
- <span class="cline-any cline-yes">50x</span>
423
- <span class="cline-any cline-yes">50x</span>
424
- <span class="cline-any cline-yes">50x</span>
425
- <span class="cline-any cline-yes">50x</span>
492
+ <span class="cline-any cline-yes">53x</span>
493
+ <span class="cline-any cline-yes">53x</span>
494
+ <span class="cline-any cline-yes">53x</span>
495
+ <span class="cline-any cline-yes">53x</span>
426
496
  <span class="cline-any cline-neutral">&nbsp;</span>
427
- <span class="cline-any cline-yes">50x</span>
428
- <span class="cline-any cline-yes">50x</span>
429
- <span class="cline-any cline-yes">50x</span>
430
- <span class="cline-any cline-yes">50x</span>
497
+ <span class="cline-any cline-yes">53x</span>
498
+ <span class="cline-any cline-yes">53x</span>
499
+ <span class="cline-any cline-yes">53x</span>
500
+ <span class="cline-any cline-yes">53x</span>
431
501
  <span class="cline-any cline-yes">2x</span>
432
502
  <span class="cline-any cline-yes">2x</span>
433
503
  <span class="cline-any cline-neutral">&nbsp;</span>
434
- <span class="cline-any cline-yes">50x</span>
435
- <span class="cline-any cline-yes">50x</span>
436
- <span class="cline-any cline-yes">3x</span>
437
- <span class="cline-any cline-yes">4x</span>
438
- <span class="cline-any cline-yes">4x</span>
504
+ <span class="cline-any cline-yes">53x</span>
505
+ <span class="cline-any cline-yes">53x</span>
506
+ <span class="cline-any cline-yes">6x</span>
507
+ <span class="cline-any cline-yes">10x</span>
508
+ <span class="cline-any cline-yes">10x</span>
439
509
  <span class="cline-any cline-neutral">&nbsp;</span>
440
- <span class="cline-any cline-yes">3x</span>
510
+ <span class="cline-any cline-yes">6x</span>
441
511
  <span class="cline-any cline-neutral">&nbsp;</span>
442
- <span class="cline-any cline-yes">50x</span>
443
- <span class="cline-any cline-yes">50x</span>
512
+ <span class="cline-any cline-yes">53x</span>
513
+ <span class="cline-any cline-yes">53x</span>
444
514
  <span class="cline-any cline-yes">1x</span>
445
- <span class="cline-any cline-yes">49x</span>
515
+ <span class="cline-any cline-yes">52x</span>
446
516
  <span class="cline-any cline-yes">2x</span>
447
517
  <span class="cline-any cline-neutral">&nbsp;</span>
448
- <span class="cline-any cline-yes">50x</span>
518
+ <span class="cline-any cline-yes">53x</span>
449
519
  <span class="cline-any cline-yes">3x</span>
450
520
  <span class="cline-any cline-yes">3x</span>
451
521
  <span class="cline-any cline-yes">4x</span>
452
522
  <span class="cline-any cline-neutral">&nbsp;</span>
453
523
  <span class="cline-any cline-yes">3x</span>
454
524
  <span class="cline-any cline-neutral">&nbsp;</span>
455
- <span class="cline-any cline-yes">50x</span>
525
+ <span class="cline-any cline-yes">53x</span>
456
526
  <span class="cline-any cline-yes">7x</span>
457
527
  <span class="cline-any cline-neutral">&nbsp;</span>
458
528
  <span class="cline-any cline-neutral">&nbsp;</span>
459
- <span class="cline-any cline-yes">50x</span>
460
- <span class="cline-any cline-yes">50x</span>
529
+ <span class="cline-any cline-yes">53x</span>
530
+ <span class="cline-any cline-yes">53x</span>
531
+ <span class="cline-any cline-neutral">&nbsp;</span>
532
+ <span class="cline-any cline-neutral">&nbsp;</span>
533
+ <span class="cline-any cline-neutral">&nbsp;</span>
534
+ <span class="cline-any cline-neutral">&nbsp;</span>
535
+ <span class="cline-any cline-yes">1x</span>
536
+ <span class="cline-any cline-neutral">&nbsp;</span>
537
+ <span class="cline-any cline-neutral">&nbsp;</span>
538
+ <span class="cline-any cline-yes">8x</span>
539
+ <span class="cline-any cline-neutral">&nbsp;</span>
540
+ <span class="cline-any cline-neutral">&nbsp;</span>
541
+ <span class="cline-any cline-neutral">&nbsp;</span>
542
+ <span class="cline-any cline-yes">10x</span>
543
+ <span class="cline-any cline-yes">10x</span>
544
+ <span class="cline-any cline-yes">10x</span>
545
+ <span class="cline-any cline-yes">6x</span>
546
+ <span class="cline-any cline-neutral">&nbsp;</span>
547
+ <span class="cline-any cline-yes">4x</span>
548
+ <span class="cline-any cline-yes">4x</span>
549
+ <span class="cline-any cline-yes">4x</span>
550
+ <span class="cline-any cline-yes">11x</span>
551
+ <span class="cline-any cline-neutral">&nbsp;</span>
552
+ <span class="cline-any cline-yes">10x</span>
553
+ <span class="cline-any cline-neutral">&nbsp;</span>
554
+ <span class="cline-any cline-neutral">&nbsp;</span>
555
+ <span class="cline-any cline-neutral">&nbsp;</span>
556
+ <span class="cline-any cline-yes">16x</span>
557
+ <span class="cline-any cline-yes">8x</span>
558
+ <span class="cline-any cline-yes">5x</span>
559
+ <span class="cline-any cline-yes">5x</span>
560
+ <span class="cline-any cline-yes">5x</span>
561
+ <span class="cline-any cline-yes">5x</span>
562
+ <span class="cline-any cline-neutral">&nbsp;</span>
563
+ <span class="cline-any cline-neutral">&nbsp;</span>
564
+ <span class="cline-any cline-neutral">&nbsp;</span>
565
+ <span class="cline-any cline-yes">5x</span>
566
+ <span class="cline-any cline-yes">5x</span>
567
+ <span class="cline-any cline-yes">5x</span>
568
+ <span class="cline-any cline-yes">1x</span>
569
+ <span class="cline-any cline-yes">1x</span>
570
+ <span class="cline-any cline-yes">2x</span>
571
+ <span class="cline-any cline-yes">2x</span>
572
+ <span class="cline-any cline-yes">2x</span>
573
+ <span class="cline-any cline-neutral">&nbsp;</span>
574
+ <span class="cline-any cline-no">&nbsp;</span>
575
+ <span class="cline-any cline-no">&nbsp;</span>
576
+ <span class="cline-any cline-neutral">&nbsp;</span>
577
+ <span class="cline-any cline-neutral">&nbsp;</span>
578
+ <span class="cline-any cline-yes">1x</span>
579
+ <span class="cline-any cline-yes">1x</span>
580
+ <span class="cline-any cline-neutral">&nbsp;</span>
581
+ <span class="cline-any cline-yes">4x</span>
582
+ <span class="cline-any cline-yes">4x</span>
583
+ <span class="cline-any cline-yes">4x</span>
584
+ <span class="cline-any cline-yes">4x</span>
585
+ <span class="cline-any cline-yes">4x</span>
586
+ <span class="cline-any cline-yes">4x</span>
587
+ <span class="cline-any cline-yes">3x</span>
588
+ <span class="cline-any cline-neutral">&nbsp;</span>
589
+ <span class="cline-any cline-yes">1x</span>
590
+ <span class="cline-any cline-yes">1x</span>
591
+ <span class="cline-any cline-yes">2x</span>
592
+ <span class="cline-any cline-neutral">&nbsp;</span>
593
+ <span class="cline-any cline-neutral">&nbsp;</span>
594
+ <span class="cline-any cline-yes">4x</span>
595
+ <span class="cline-any cline-yes">4x</span>
596
+ <span class="cline-any cline-neutral">&nbsp;</span>
597
+ <span class="cline-any cline-neutral">&nbsp;</span>
598
+ <span class="cline-any cline-no">&nbsp;</span>
461
599
  <span class="cline-any cline-neutral">&nbsp;</span>
462
600
  <span class="cline-any cline-neutral">&nbsp;</span>
463
601
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -570,6 +708,7 @@
570
708
  SecurityFields,
571
709
  ContractTypeNode,
572
710
  ObjectMode,
711
+ PluginValue,
573
712
  } from '@contractkit/core';
574
713
  import { SECURITY_NONE } from '@contractkit/core';
575
714
  import { printType, formatDefault } from './print-type.js';
@@ -684,7 +823,7 @@ function printOperation(op: OpOperationNode): string[] {
684
823
  if (op.plugins &amp;&amp; Object.keys(op.plugins).length &gt; 0) {
685
824
  lines.push(`${I2}plugins: {`);
686
825
  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, val] of Object.entries(op.plugins)) {
687
- lines.push(`${I3}${key}: "${val.replace(/\\/g, '\\\\').replace(/"/g, '\\"')}"`);
826
+ lines.push(...printPluginEntry(key, val, I3));
688
827
  }
689
828
  lines.push(`${I2}}`);
690
829
  }
@@ -709,6 +848,74 @@ function printOperation(op: OpOperationNode): string[] {
709
848
  return lines;
710
849
  }
711
850
  &nbsp;
851
+ // ─── Plugins block ───────────────────────────────────────────────────────────
852
+ &nbsp;
853
+ const IDENT_RE = /^[a-zA-Z_$][a-zA-Z0-9_$]*$/;
854
+ &nbsp;
855
+ function escapeString(s: string): string {
856
+ return s.replace(/\\/g, '\\\\').replace(/"/g, '\\"');
857
+ }
858
+ &nbsp;
859
+ function printPluginEntry(key: string, value: PluginValue, indent: string): string[] {
860
+ const lines: string[] = [];
861
+ const inline = printPluginInline(value);
862
+ if (inline !== null) {
863
+ lines.push(`${indent}${key}: ${inline}`);
864
+ } else {
865
+ const head = `${indent}${key}: `;
866
+ const block = printPluginBlock(value, indent);
867
+ lines.push(`${head}${block[0]!.trimStart()}`);
868
+ for (let i = 1; i &lt; block.length; i++) lines.push(block[i]!);
869
+ }
870
+ return lines;
871
+ }
872
+ &nbsp;
873
+ function printPluginInline(value: PluginValue): string | null {
874
+ if (typeof value === 'string') return `"${escapeString(value)}"`;
875
+ if (typeof value === 'number' || typeof value === 'boolean') return String(value);
876
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (value === null) <span class="cstat-no" title="statement not covered" >return 'null';</span>
877
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (Array.isArray(value) &amp;&amp; value.length === 0) <span class="cstat-no" title="statement not covered" >return '[]';</span>
878
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (!Array.isArray(value) &amp;&amp; typeof value === 'object' &amp;&amp; Object.keys(value).length === 0) <span class="cstat-no" title="statement not covered" >return '{}';</span>
879
+ return null;
880
+ }
881
+ &nbsp;
882
+ function printPluginBlock(value: PluginValue, indent: string): string[] {
883
+ const inner = indent + INDENT;
884
+ const lines: string[] = [];
885
+ if (Array.isArray(value)) {
886
+ lines.push(`${indent}[`);
887
+ 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 i</span></span>tem of value) {
888
+ const inline = printPluginInline(item);
889
+ if (inline !== null) {
890
+ lines.push(`${inner}${inline}`);
891
+ } else <span class="missing-if-branch" title="else path not taken" >E</span>{
892
+ const block = <span class="cstat-no" title="statement not covered" >printPluginBlock(item, inner);</span>
893
+ <span class="cstat-no" title="statement not covered" > for (<span class="cstat-no" title="statement not covered" >const l</span> of <span class="cstat-no" title="statement not covered" >block) <span class="cstat-no" title="statement not covered" >l</span>ines.push(l);</span></span>
894
+ }
895
+ }
896
+ lines.push(`${indent}]`);
897
+ return lines;
898
+ }
899
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (typeof <span class="branch-0 cbranch-no" title="branch not covered" >value</span> === 'object' &amp;&amp; value !== null) {
900
+ lines.push(`${indent}{`);
901
+ 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>, v] of Object.entries(value)) {
902
+ const fieldKey = IDENT_RE.test(k) ? k : <span class="branch-1 cbranch-no" title="branch not covered" >`"${escapeString(k)}"`;</span>
903
+ const inline = printPluginInline(v);
904
+ if (inline !== null) {
905
+ lines.push(`${inner}${fieldKey}: ${inline}`);
906
+ } else {
907
+ const block = printPluginBlock(v, inner);
908
+ lines.push(`${inner}${fieldKey}: ${block[0]!.trimStart()}`);
909
+ for (let i = 1; i &lt; block.length; i++) lines.push(block[i]!);
910
+ }
911
+ }
912
+ lines.push(`${indent}}`);
913
+ return lines;
914
+ }
915
+ // Scalars are always inline; printPluginInline already handles them.
916
+ <span class="cstat-no" title="statement not covered" > return [`${indent}${printPluginInline(value)}`];</span>
917
+ }
918
+ &nbsp;
712
919
  // ─── Security ────────────────────────────────────────────────────────────────
713
920
  &nbsp;
714
921
  /** Print a signature key: unquoted when it's a plain identifier, quoted otherwise. */
@@ -817,7 +1024,7 @@ function printResponseBlock(responses: OpResponseNode[]): string[] {
817
1024
  <div class='footer quiet pad2 space-top1 center small'>
818
1025
  Code coverage generated by
819
1026
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
820
- at 2026-05-04T13:24:25.753Z
1027
+ at 2026-05-07T11:09:14.185Z
821
1028
  </div>
822
1029
  <script src="prettify.js"></script>
823
1030
  <script>
@@ -517,7 +517,7 @@ export function extractTrailingInlineObject(type: ContractTypeNode): {
517
517
  <div class='footer quiet pad2 space-top1 center small'>
518
518
  Code coverage generated by
519
519
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
520
- at 2026-05-04T13:24:25.753Z
520
+ at 2026-05-07T11:09:14.185Z
521
521
  </div>
522
522
  <script src="prettify.js"></script>
523
523
  <script>