@contractkit/prettier-plugin 0.9.1 → 0.9.3
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.
- package/.turbo/turbo-build$colon$ci.log +6 -6
- package/.turbo/turbo-test$colon$ci.log +9 -9
- package/CHANGELOG.md +19 -0
- package/coverage/clover.xml +274 -230
- package/coverage/coverage-final.json +4 -4
- package/coverage/indent.ts.html +1 -1
- package/coverage/index.html +31 -31
- package/coverage/print-ck.ts.html +21 -21
- package/coverage/print-contract.ts.html +16 -16
- package/coverage/print-operation.ts.html +252 -45
- package/coverage/print-type.ts.html +56 -35
- package/dist/index.js +74 -3
- package/dist/index.js.map +1 -1
- package/dist/print-operation.d.ts.map +1 -1
- package/dist/print-type.d.ts +3 -0
- package/dist/print-type.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/print-operation.ts +70 -1
- package/src/print-type.ts +9 -2
- package/tests/print-ck.test.ts +77 -0
|
@@ -23,30 +23,30 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">73.41% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
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">
|
|
33
|
+
<span class="strong">64.35% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
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">
|
|
40
|
+
<span class="strong">92.85% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
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">
|
|
47
|
+
<span class="strong">83.33% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
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
|
|
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"> </span>
|
|
385
|
+
<span class="cline-any cline-neutral"> </span>
|
|
316
386
|
<span class="cline-any cline-neutral"> </span>
|
|
317
387
|
<span class="cline-any cline-neutral"> </span>
|
|
318
388
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -356,8 +426,8 @@
|
|
|
356
426
|
<span class="cline-any cline-neutral"> </span>
|
|
357
427
|
<span class="cline-any cline-neutral"> </span>
|
|
358
428
|
<span class="cline-any cline-neutral"> </span>
|
|
359
|
-
<span class="cline-any cline-yes">
|
|
360
|
-
<span class="cline-any cline-yes">
|
|
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"> </span>
|
|
362
432
|
<span class="cline-any cline-no"> </span>
|
|
363
433
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -366,29 +436,29 @@
|
|
|
366
436
|
<span class="cline-any cline-neutral"> </span>
|
|
367
437
|
<span class="cline-any cline-neutral"> </span>
|
|
368
438
|
<span class="cline-any cline-neutral"> </span>
|
|
369
|
-
<span class="cline-any cline-yes">
|
|
370
|
-
<span class="cline-any cline-yes">
|
|
371
|
-
<span class="cline-any cline-yes">
|
|
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"> </span>
|
|
373
|
-
<span class="cline-any cline-yes">
|
|
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"> </span>
|
|
376
446
|
<span class="cline-any cline-neutral"> </span>
|
|
377
|
-
<span class="cline-any cline-yes">
|
|
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"> </span>
|
|
380
450
|
<span class="cline-any cline-neutral"> </span>
|
|
381
|
-
<span class="cline-any cline-yes">47x</span>
|
|
382
|
-
<span class="cline-any cline-neutral"> </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"> </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"> </span>
|
|
387
456
|
<span class="cline-any cline-neutral"> </span>
|
|
388
|
-
<span class="cline-any cline-yes">47x</span>
|
|
389
457
|
<span class="cline-any cline-neutral"> </span>
|
|
390
|
-
<span class="cline-any cline-yes">
|
|
391
|
-
<span class="cline-any cline-
|
|
458
|
+
<span class="cline-any cline-yes">50x</span>
|
|
459
|
+
<span class="cline-any cline-neutral"> </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"> </span>
|
|
393
463
|
<span class="cline-any cline-neutral"> </span>
|
|
394
464
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -419,45 +489,113 @@
|
|
|
419
489
|
<span class="cline-any cline-neutral"> </span>
|
|
420
490
|
<span class="cline-any cline-neutral"> </span>
|
|
421
491
|
<span class="cline-any cline-neutral"> </span>
|
|
422
|
-
<span class="cline-any cline-yes">
|
|
423
|
-
<span class="cline-any cline-yes">
|
|
424
|
-
<span class="cline-any cline-yes">
|
|
425
|
-
<span class="cline-any cline-yes">
|
|
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"> </span>
|
|
427
|
-
<span class="cline-any cline-yes">
|
|
428
|
-
<span class="cline-any cline-yes">
|
|
429
|
-
<span class="cline-any cline-yes">
|
|
430
|
-
<span class="cline-any cline-yes">
|
|
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"> </span>
|
|
434
|
-
<span class="cline-any cline-yes">
|
|
435
|
-
<span class="cline-any cline-yes">
|
|
436
|
-
<span class="cline-any cline-yes">
|
|
437
|
-
<span class="cline-any cline-yes">
|
|
438
|
-
<span class="cline-any cline-yes">
|
|
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"> </span>
|
|
440
|
-
<span class="cline-any cline-yes">
|
|
510
|
+
<span class="cline-any cline-yes">6x</span>
|
|
441
511
|
<span class="cline-any cline-neutral"> </span>
|
|
442
|
-
<span class="cline-any cline-yes">
|
|
443
|
-
<span class="cline-any cline-yes">
|
|
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">
|
|
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"> </span>
|
|
448
|
-
<span class="cline-any cline-yes">
|
|
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"> </span>
|
|
453
523
|
<span class="cline-any cline-yes">3x</span>
|
|
454
524
|
<span class="cline-any cline-neutral"> </span>
|
|
455
|
-
<span class="cline-any cline-yes">
|
|
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"> </span>
|
|
458
528
|
<span class="cline-any cline-neutral"> </span>
|
|
459
|
-
<span class="cline-any cline-yes">
|
|
460
|
-
<span class="cline-any cline-yes">
|
|
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"> </span>
|
|
532
|
+
<span class="cline-any cline-neutral"> </span>
|
|
533
|
+
<span class="cline-any cline-neutral"> </span>
|
|
534
|
+
<span class="cline-any cline-neutral"> </span>
|
|
535
|
+
<span class="cline-any cline-yes">1x</span>
|
|
536
|
+
<span class="cline-any cline-neutral"> </span>
|
|
537
|
+
<span class="cline-any cline-neutral"> </span>
|
|
538
|
+
<span class="cline-any cline-yes">8x</span>
|
|
539
|
+
<span class="cline-any cline-neutral"> </span>
|
|
540
|
+
<span class="cline-any cline-neutral"> </span>
|
|
541
|
+
<span class="cline-any cline-neutral"> </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"> </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"> </span>
|
|
552
|
+
<span class="cline-any cline-yes">10x</span>
|
|
553
|
+
<span class="cline-any cline-neutral"> </span>
|
|
554
|
+
<span class="cline-any cline-neutral"> </span>
|
|
555
|
+
<span class="cline-any cline-neutral"> </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"> </span>
|
|
563
|
+
<span class="cline-any cline-neutral"> </span>
|
|
564
|
+
<span class="cline-any cline-neutral"> </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"> </span>
|
|
574
|
+
<span class="cline-any cline-no"> </span>
|
|
575
|
+
<span class="cline-any cline-no"> </span>
|
|
576
|
+
<span class="cline-any cline-neutral"> </span>
|
|
577
|
+
<span class="cline-any cline-neutral"> </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"> </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"> </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"> </span>
|
|
593
|
+
<span class="cline-any cline-neutral"> </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"> </span>
|
|
597
|
+
<span class="cline-any cline-neutral"> </span>
|
|
598
|
+
<span class="cline-any cline-no"> </span>
|
|
461
599
|
<span class="cline-any cline-neutral"> </span>
|
|
462
600
|
<span class="cline-any cline-neutral"> </span>
|
|
463
601
|
<span class="cline-any cline-neutral"> </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 && Object.keys(op.plugins).length > 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(
|
|
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
|
|
|
851
|
+
// ─── Plugins block ───────────────────────────────────────────────────────────
|
|
852
|
+
|
|
853
|
+
const IDENT_RE = /^[a-zA-Z_$][a-zA-Z0-9_$]*$/;
|
|
854
|
+
|
|
855
|
+
function escapeString(s: string): string {
|
|
856
|
+
return s.replace(/\\/g, '\\\\').replace(/"/g, '\\"');
|
|
857
|
+
}
|
|
858
|
+
|
|
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 < block.length; i++) lines.push(block[i]!);
|
|
869
|
+
}
|
|
870
|
+
return lines;
|
|
871
|
+
}
|
|
872
|
+
|
|
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) && 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) && typeof value === 'object' && Object.keys(value).length === 0) <span class="cstat-no" title="statement not covered" >return '{}';</span>
|
|
879
|
+
return null;
|
|
880
|
+
}
|
|
881
|
+
|
|
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' && 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 < 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
|
+
|
|
712
919
|
// ─── Security ────────────────────────────────────────────────────────────────
|
|
713
920
|
|
|
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-
|
|
1027
|
+
at 2026-05-06T12:37:13.164Z
|
|
821
1028
|
</div>
|
|
822
1029
|
<script src="prettify.js"></script>
|
|
823
1030
|
<script>
|
|
@@ -23,30 +23,30 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">47.12% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
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">
|
|
33
|
+
<span class="strong">46.87% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
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 class="strong">45.45% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
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
|
+
<span class="strong">48.61% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
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
|
|
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"> </span>
|
|
209
216
|
<span class="cline-any cline-neutral"> </span>
|
|
210
217
|
<span class="cline-any cline-neutral"> </span>
|
|
211
218
|
<span class="cline-any cline-neutral"> </span>
|
|
212
219
|
<span class="cline-any cline-neutral"> </span>
|
|
213
220
|
<span class="cline-any cline-neutral"> </span>
|
|
214
|
-
<span class="cline-any cline-
|
|
221
|
+
<span class="cline-any cline-neutral"> </span>
|
|
222
|
+
<span class="cline-any cline-yes">36x</span>
|
|
215
223
|
<span class="cline-any cline-neutral"> </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"> </span>
|
|
237
245
|
<span class="cline-any cline-no"> </span>
|
|
238
246
|
<span class="cline-any cline-neutral"> </span>
|
|
239
|
-
<span class="cline-any cline-yes">
|
|
247
|
+
<span class="cline-any cline-yes">3x</span>
|
|
240
248
|
<span class="cline-any cline-neutral"> </span>
|
|
241
249
|
<span class="cline-any cline-no"> </span>
|
|
242
250
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -277,21 +285,21 @@
|
|
|
277
285
|
<span class="cline-any cline-neutral"> </span>
|
|
278
286
|
<span class="cline-any cline-neutral"> </span>
|
|
279
287
|
<span class="cline-any cline-neutral"> </span>
|
|
280
|
-
<span class="cline-any cline-yes">
|
|
281
|
-
<span class="cline-any cline-yes">
|
|
282
|
-
<span class="cline-any cline-yes">
|
|
283
|
-
<span class="cline-any cline-yes">
|
|
284
|
-
<span class="cline-any cline-yes">
|
|
285
|
-
<span class="cline-any cline-yes">
|
|
286
|
-
<span class="cline-any cline-yes">
|
|
287
|
-
<span class="cline-any cline-yes">
|
|
288
|
-
<span class="cline-any cline-yes">
|
|
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"> </span>
|
|
290
298
|
<span class="cline-any cline-neutral"> </span>
|
|
291
299
|
<span class="cline-any cline-neutral"> </span>
|
|
292
|
-
<span class="cline-any cline-yes">
|
|
293
|
-
<span class="cline-any cline-yes">
|
|
294
|
-
<span class="cline-any cline-yes">
|
|
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"> </span>
|
|
296
304
|
<span class="cline-any cline-no"> </span>
|
|
297
305
|
<span class="cline-any cline-no"> </span>
|
|
@@ -301,14 +309,14 @@
|
|
|
301
309
|
<span class="cline-any cline-neutral"> </span>
|
|
302
310
|
<span class="cline-any cline-neutral"> </span>
|
|
303
311
|
<span class="cline-any cline-neutral"> </span>
|
|
304
|
-
<span class="cline-any cline-yes">
|
|
305
|
-
<span class="cline-any cline-yes">
|
|
306
|
-
<span class="cline-any cline-yes">
|
|
307
|
-
<span class="cline-any cline-yes">
|
|
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"> </span>
|
|
309
317
|
<span class="cline-any cline-no"> </span>
|
|
310
318
|
<span class="cline-any cline-neutral"> </span>
|
|
311
|
-
<span class="cline-any cline-yes">
|
|
319
|
+
<span class="cline-any cline-yes">6x</span>
|
|
312
320
|
<span class="cline-any cline-neutral"> </span>
|
|
313
321
|
<span class="cline-any cline-neutral"> </span>
|
|
314
322
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -320,6 +328,12 @@
|
|
|
320
328
|
<span class="cline-any cline-neutral"> </span>
|
|
321
329
|
<span class="cline-any cline-neutral"> </span>
|
|
322
330
|
<span class="cline-any cline-neutral"> </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"> </span>
|
|
334
|
+
<span class="cline-any cline-neutral"> </span>
|
|
335
|
+
<span class="cline-any cline-neutral"> </span>
|
|
336
|
+
<span class="cline-any cline-neutral"> </span>
|
|
323
337
|
<span class="cline-any cline-yes">5x</span>
|
|
324
338
|
<span class="cline-any cline-neutral"> </span>
|
|
325
339
|
<span class="cline-any cline-yes">2x</span>
|
|
@@ -335,23 +349,24 @@
|
|
|
335
349
|
<span class="cline-any cline-neutral"> </span>
|
|
336
350
|
<span class="cline-any cline-neutral"> </span>
|
|
337
351
|
<span class="cline-any cline-neutral"> </span>
|
|
338
|
-
<span class="cline-any cline-yes">
|
|
352
|
+
<span class="cline-any cline-yes">6x</span>
|
|
339
353
|
<span class="cline-any cline-no"> </span>
|
|
340
354
|
<span class="cline-any cline-neutral"> </span>
|
|
341
|
-
<span class="cline-any cline-yes">
|
|
355
|
+
<span class="cline-any cline-yes">6x</span>
|
|
342
356
|
<span class="cline-any cline-no"> </span>
|
|
343
357
|
<span class="cline-any cline-no"> </span>
|
|
344
358
|
<span class="cline-any cline-no"> </span>
|
|
345
359
|
<span class="cline-any cline-no"> </span>
|
|
346
360
|
<span class="cline-any cline-neutral"> </span>
|
|
347
361
|
<span class="cline-any cline-neutral"> </span>
|
|
348
|
-
<span class="cline-any cline-yes">
|
|
362
|
+
<span class="cline-any cline-yes">6x</span>
|
|
349
363
|
<span class="cline-any cline-neutral"> </span>
|
|
350
364
|
<span class="cline-any cline-neutral"> </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
|
|
|
353
367
|
// ─── Type expression printer ────────────────────────────────────────────────
|
|
354
368
|
|
|
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 => <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 => <span class="cstat-no" title="statement not covered" >`</span>${innerIndent}${formatEnumValue(v)}`</span>).join(',\n')}\n${indent})`;</span>
|
|
416
431
|
}
|
|
417
432
|
|
|
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' &&
|
|
464
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (field.type.kind === 'enum' && !field.nullable && field.default === undefined && fullLine.length > 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
|
|
|
461
476
|
// ─── Helpers ────────────────────────────────────────────────────────────────
|
|
462
477
|
|
|
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
|
+
|
|
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-
|
|
520
|
+
at 2026-05-06T12:37:13.164Z
|
|
500
521
|
</div>
|
|
501
522
|
<script src="prettify.js"></script>
|
|
502
523
|
<script>
|