@contractkit/plugin-typescript 0.17.4 → 0.18.0
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 +7 -7
- package/.turbo/turbo-test$colon$ci.log +15 -15
- package/CHANGELOG.md +17 -0
- package/README.md +10 -1
- package/coverage/clover.xml +695 -566
- package/coverage/coverage-final.json +6 -6
- package/coverage/index.html +21 -21
- package/coverage/src/codegen-contract.ts.html +3 -3
- package/coverage/src/codegen-operation.ts.html +1 -1
- package/coverage/src/codegen-plain-types.ts.html +1 -1
- package/coverage/src/codegen-sdk.ts.html +989 -236
- package/coverage/src/index.html +40 -40
- package/coverage/src/index.ts.html +415 -112
- package/coverage/src/path-utils.ts.html +51 -51
- package/coverage/src/ts-render.ts.html +4 -4
- package/coverage/tests/helpers.ts.html +15 -15
- package/coverage/tests/index.html +1 -1
- package/dist/codegen-sdk.d.ts +96 -2
- package/dist/codegen-sdk.d.ts.map +1 -1
- package/dist/index.d.ts +7 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +270 -19
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/codegen-sdk.ts +258 -7
- package/src/index.ts +118 -17
- package/tests/codegen-sdk.test.ts +188 -16
- package/tests/codegen-server.test.ts +98 -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">57.28% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>114/199</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.93% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>46/98</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">59.25% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>16/27</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">61.27% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>106/173</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
</div>
|
|
62
62
|
</template>
|
|
63
63
|
</div>
|
|
64
|
-
<div class='status-line
|
|
64
|
+
<div class='status-line medium'></div>
|
|
65
65
|
<pre><table class="coverage">
|
|
66
66
|
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
67
67
|
<a name='L2'></a><a href='#L2'>2</a>
|
|
@@ -488,7 +488,113 @@
|
|
|
488
488
|
<a name='L423'></a><a href='#L423'>423</a>
|
|
489
489
|
<a name='L424'></a><a href='#L424'>424</a>
|
|
490
490
|
<a name='L425'></a><a href='#L425'>425</a>
|
|
491
|
-
<a name='L426'></a><a href='#L426'>426</a
|
|
491
|
+
<a name='L426'></a><a href='#L426'>426</a>
|
|
492
|
+
<a name='L427'></a><a href='#L427'>427</a>
|
|
493
|
+
<a name='L428'></a><a href='#L428'>428</a>
|
|
494
|
+
<a name='L429'></a><a href='#L429'>429</a>
|
|
495
|
+
<a name='L430'></a><a href='#L430'>430</a>
|
|
496
|
+
<a name='L431'></a><a href='#L431'>431</a>
|
|
497
|
+
<a name='L432'></a><a href='#L432'>432</a>
|
|
498
|
+
<a name='L433'></a><a href='#L433'>433</a>
|
|
499
|
+
<a name='L434'></a><a href='#L434'>434</a>
|
|
500
|
+
<a name='L435'></a><a href='#L435'>435</a>
|
|
501
|
+
<a name='L436'></a><a href='#L436'>436</a>
|
|
502
|
+
<a name='L437'></a><a href='#L437'>437</a>
|
|
503
|
+
<a name='L438'></a><a href='#L438'>438</a>
|
|
504
|
+
<a name='L439'></a><a href='#L439'>439</a>
|
|
505
|
+
<a name='L440'></a><a href='#L440'>440</a>
|
|
506
|
+
<a name='L441'></a><a href='#L441'>441</a>
|
|
507
|
+
<a name='L442'></a><a href='#L442'>442</a>
|
|
508
|
+
<a name='L443'></a><a href='#L443'>443</a>
|
|
509
|
+
<a name='L444'></a><a href='#L444'>444</a>
|
|
510
|
+
<a name='L445'></a><a href='#L445'>445</a>
|
|
511
|
+
<a name='L446'></a><a href='#L446'>446</a>
|
|
512
|
+
<a name='L447'></a><a href='#L447'>447</a>
|
|
513
|
+
<a name='L448'></a><a href='#L448'>448</a>
|
|
514
|
+
<a name='L449'></a><a href='#L449'>449</a>
|
|
515
|
+
<a name='L450'></a><a href='#L450'>450</a>
|
|
516
|
+
<a name='L451'></a><a href='#L451'>451</a>
|
|
517
|
+
<a name='L452'></a><a href='#L452'>452</a>
|
|
518
|
+
<a name='L453'></a><a href='#L453'>453</a>
|
|
519
|
+
<a name='L454'></a><a href='#L454'>454</a>
|
|
520
|
+
<a name='L455'></a><a href='#L455'>455</a>
|
|
521
|
+
<a name='L456'></a><a href='#L456'>456</a>
|
|
522
|
+
<a name='L457'></a><a href='#L457'>457</a>
|
|
523
|
+
<a name='L458'></a><a href='#L458'>458</a>
|
|
524
|
+
<a name='L459'></a><a href='#L459'>459</a>
|
|
525
|
+
<a name='L460'></a><a href='#L460'>460</a>
|
|
526
|
+
<a name='L461'></a><a href='#L461'>461</a>
|
|
527
|
+
<a name='L462'></a><a href='#L462'>462</a>
|
|
528
|
+
<a name='L463'></a><a href='#L463'>463</a>
|
|
529
|
+
<a name='L464'></a><a href='#L464'>464</a>
|
|
530
|
+
<a name='L465'></a><a href='#L465'>465</a>
|
|
531
|
+
<a name='L466'></a><a href='#L466'>466</a>
|
|
532
|
+
<a name='L467'></a><a href='#L467'>467</a>
|
|
533
|
+
<a name='L468'></a><a href='#L468'>468</a>
|
|
534
|
+
<a name='L469'></a><a href='#L469'>469</a>
|
|
535
|
+
<a name='L470'></a><a href='#L470'>470</a>
|
|
536
|
+
<a name='L471'></a><a href='#L471'>471</a>
|
|
537
|
+
<a name='L472'></a><a href='#L472'>472</a>
|
|
538
|
+
<a name='L473'></a><a href='#L473'>473</a>
|
|
539
|
+
<a name='L474'></a><a href='#L474'>474</a>
|
|
540
|
+
<a name='L475'></a><a href='#L475'>475</a>
|
|
541
|
+
<a name='L476'></a><a href='#L476'>476</a>
|
|
542
|
+
<a name='L477'></a><a href='#L477'>477</a>
|
|
543
|
+
<a name='L478'></a><a href='#L478'>478</a>
|
|
544
|
+
<a name='L479'></a><a href='#L479'>479</a>
|
|
545
|
+
<a name='L480'></a><a href='#L480'>480</a>
|
|
546
|
+
<a name='L481'></a><a href='#L481'>481</a>
|
|
547
|
+
<a name='L482'></a><a href='#L482'>482</a>
|
|
548
|
+
<a name='L483'></a><a href='#L483'>483</a>
|
|
549
|
+
<a name='L484'></a><a href='#L484'>484</a>
|
|
550
|
+
<a name='L485'></a><a href='#L485'>485</a>
|
|
551
|
+
<a name='L486'></a><a href='#L486'>486</a>
|
|
552
|
+
<a name='L487'></a><a href='#L487'>487</a>
|
|
553
|
+
<a name='L488'></a><a href='#L488'>488</a>
|
|
554
|
+
<a name='L489'></a><a href='#L489'>489</a>
|
|
555
|
+
<a name='L490'></a><a href='#L490'>490</a>
|
|
556
|
+
<a name='L491'></a><a href='#L491'>491</a>
|
|
557
|
+
<a name='L492'></a><a href='#L492'>492</a>
|
|
558
|
+
<a name='L493'></a><a href='#L493'>493</a>
|
|
559
|
+
<a name='L494'></a><a href='#L494'>494</a>
|
|
560
|
+
<a name='L495'></a><a href='#L495'>495</a>
|
|
561
|
+
<a name='L496'></a><a href='#L496'>496</a>
|
|
562
|
+
<a name='L497'></a><a href='#L497'>497</a>
|
|
563
|
+
<a name='L498'></a><a href='#L498'>498</a>
|
|
564
|
+
<a name='L499'></a><a href='#L499'>499</a>
|
|
565
|
+
<a name='L500'></a><a href='#L500'>500</a>
|
|
566
|
+
<a name='L501'></a><a href='#L501'>501</a>
|
|
567
|
+
<a name='L502'></a><a href='#L502'>502</a>
|
|
568
|
+
<a name='L503'></a><a href='#L503'>503</a>
|
|
569
|
+
<a name='L504'></a><a href='#L504'>504</a>
|
|
570
|
+
<a name='L505'></a><a href='#L505'>505</a>
|
|
571
|
+
<a name='L506'></a><a href='#L506'>506</a>
|
|
572
|
+
<a name='L507'></a><a href='#L507'>507</a>
|
|
573
|
+
<a name='L508'></a><a href='#L508'>508</a>
|
|
574
|
+
<a name='L509'></a><a href='#L509'>509</a>
|
|
575
|
+
<a name='L510'></a><a href='#L510'>510</a>
|
|
576
|
+
<a name='L511'></a><a href='#L511'>511</a>
|
|
577
|
+
<a name='L512'></a><a href='#L512'>512</a>
|
|
578
|
+
<a name='L513'></a><a href='#L513'>513</a>
|
|
579
|
+
<a name='L514'></a><a href='#L514'>514</a>
|
|
580
|
+
<a name='L515'></a><a href='#L515'>515</a>
|
|
581
|
+
<a name='L516'></a><a href='#L516'>516</a>
|
|
582
|
+
<a name='L517'></a><a href='#L517'>517</a>
|
|
583
|
+
<a name='L518'></a><a href='#L518'>518</a>
|
|
584
|
+
<a name='L519'></a><a href='#L519'>519</a>
|
|
585
|
+
<a name='L520'></a><a href='#L520'>520</a>
|
|
586
|
+
<a name='L521'></a><a href='#L521'>521</a>
|
|
587
|
+
<a name='L522'></a><a href='#L522'>522</a>
|
|
588
|
+
<a name='L523'></a><a href='#L523'>523</a>
|
|
589
|
+
<a name='L524'></a><a href='#L524'>524</a>
|
|
590
|
+
<a name='L525'></a><a href='#L525'>525</a>
|
|
591
|
+
<a name='L526'></a><a href='#L526'>526</a>
|
|
592
|
+
<a name='L527'></a><a href='#L527'>527</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
593
|
+
<span class="cline-any cline-neutral"> </span>
|
|
594
|
+
<span class="cline-any cline-neutral"> </span>
|
|
595
|
+
<span class="cline-any cline-neutral"> </span>
|
|
596
|
+
<span class="cline-any cline-neutral"> </span>
|
|
597
|
+
<span class="cline-any cline-neutral"> </span>
|
|
492
598
|
<span class="cline-any cline-neutral"> </span>
|
|
493
599
|
<span class="cline-any cline-neutral"> </span>
|
|
494
600
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -662,25 +768,25 @@
|
|
|
662
768
|
<span class="cline-any cline-neutral"> </span>
|
|
663
769
|
<span class="cline-any cline-neutral"> </span>
|
|
664
770
|
<span class="cline-any cline-neutral"> </span>
|
|
665
|
-
<span class="cline-any cline-
|
|
666
|
-
<span class="cline-any cline-
|
|
667
|
-
<span class="cline-any cline-
|
|
668
|
-
<span class="cline-any cline-
|
|
771
|
+
<span class="cline-any cline-yes">4x</span>
|
|
772
|
+
<span class="cline-any cline-yes">4x</span>
|
|
773
|
+
<span class="cline-any cline-yes">4x</span>
|
|
774
|
+
<span class="cline-any cline-yes">4x</span>
|
|
669
775
|
<span class="cline-any cline-neutral"> </span>
|
|
670
776
|
<span class="cline-any cline-neutral"> </span>
|
|
671
|
-
<span class="cline-any cline-
|
|
777
|
+
<span class="cline-any cline-yes">4x</span>
|
|
672
778
|
<span class="cline-any cline-neutral"> </span>
|
|
673
|
-
<span class="cline-any cline-
|
|
674
|
-
<span class="cline-any cline-
|
|
675
|
-
<span class="cline-any cline-
|
|
676
|
-
<span class="cline-any cline-
|
|
779
|
+
<span class="cline-any cline-yes">4x</span>
|
|
780
|
+
<span class="cline-any cline-yes">4x</span>
|
|
781
|
+
<span class="cline-any cline-yes">5x</span>
|
|
782
|
+
<span class="cline-any cline-yes">4x</span>
|
|
677
783
|
<span class="cline-any cline-neutral"> </span>
|
|
678
|
-
<span class="cline-any cline-
|
|
679
|
-
<span class="cline-any cline-
|
|
680
|
-
<span class="cline-any cline-
|
|
784
|
+
<span class="cline-any cline-yes">4x</span>
|
|
785
|
+
<span class="cline-any cline-yes">4x</span>
|
|
786
|
+
<span class="cline-any cline-yes">4x</span>
|
|
681
787
|
<span class="cline-any cline-neutral"> </span>
|
|
682
788
|
<span class="cline-any cline-neutral"> </span>
|
|
683
|
-
<span class="cline-any cline-
|
|
789
|
+
<span class="cline-any cline-yes">4x</span>
|
|
684
790
|
<span class="cline-any cline-no"> </span>
|
|
685
791
|
<span class="cline-any cline-no"> </span>
|
|
686
792
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -723,71 +829,162 @@
|
|
|
723
829
|
<span class="cline-any cline-neutral"> </span>
|
|
724
830
|
<span class="cline-any cline-neutral"> </span>
|
|
725
831
|
<span class="cline-any cline-neutral"> </span>
|
|
726
|
-
<span class="cline-any cline-no"> </span>
|
|
727
|
-
<span class="cline-any cline-no"> </span>
|
|
728
|
-
<span class="cline-any cline-no"> </span>
|
|
729
|
-
<span class="cline-any cline-no"> </span>
|
|
730
|
-
<span class="cline-any cline-no"> </span>
|
|
731
832
|
<span class="cline-any cline-neutral"> </span>
|
|
732
833
|
<span class="cline-any cline-neutral"> </span>
|
|
733
834
|
<span class="cline-any cline-neutral"> </span>
|
|
734
835
|
<span class="cline-any cline-neutral"> </span>
|
|
735
|
-
<span class="cline-any cline-no"> </span>
|
|
736
836
|
<span class="cline-any cline-neutral"> </span>
|
|
737
837
|
<span class="cline-any cline-neutral"> </span>
|
|
738
838
|
<span class="cline-any cline-neutral"> </span>
|
|
739
839
|
<span class="cline-any cline-neutral"> </span>
|
|
840
|
+
<span class="cline-any cline-yes">4x</span>
|
|
841
|
+
<span class="cline-any cline-yes">4x</span>
|
|
740
842
|
<span class="cline-any cline-neutral"> </span>
|
|
843
|
+
<span class="cline-any cline-yes">4x</span>
|
|
844
|
+
<span class="cline-any cline-yes">4x</span>
|
|
845
|
+
<span class="cline-any cline-yes">5x</span>
|
|
846
|
+
<span class="cline-any cline-yes">5x</span>
|
|
741
847
|
<span class="cline-any cline-neutral"> </span>
|
|
848
|
+
<span class="cline-any cline-yes">5x</span>
|
|
849
|
+
<span class="cline-any cline-yes">5x</span>
|
|
850
|
+
<span class="cline-any cline-yes">2x</span>
|
|
851
|
+
<span class="cline-any cline-yes">2x</span>
|
|
852
|
+
<span class="cline-any cline-yes">2x</span>
|
|
853
|
+
<span class="cline-any cline-yes">3x</span>
|
|
854
|
+
<span class="cline-any cline-yes">2x</span>
|
|
855
|
+
<span class="cline-any cline-yes">2x</span>
|
|
856
|
+
<span class="cline-any cline-yes">2x</span>
|
|
742
857
|
<span class="cline-any cline-neutral"> </span>
|
|
858
|
+
<span class="cline-any cline-yes">1x</span>
|
|
743
859
|
<span class="cline-any cline-neutral"> </span>
|
|
744
860
|
<span class="cline-any cline-neutral"> </span>
|
|
745
861
|
<span class="cline-any cline-neutral"> </span>
|
|
746
862
|
<span class="cline-any cline-neutral"> </span>
|
|
863
|
+
<span class="cline-any cline-yes">4x</span>
|
|
864
|
+
<span class="cline-any cline-yes">2x</span>
|
|
865
|
+
<span class="cline-any cline-yes">2x</span>
|
|
866
|
+
<span class="cline-any cline-yes">2x</span>
|
|
747
867
|
<span class="cline-any cline-neutral"> </span>
|
|
748
868
|
<span class="cline-any cline-neutral"> </span>
|
|
749
869
|
<span class="cline-any cline-neutral"> </span>
|
|
750
870
|
<span class="cline-any cline-neutral"> </span>
|
|
751
|
-
<span class="cline-any cline-no"> </span>
|
|
752
871
|
<span class="cline-any cline-neutral"> </span>
|
|
753
872
|
<span class="cline-any cline-neutral"> </span>
|
|
754
|
-
<span class="cline-any cline-no"> </span>
|
|
755
|
-
<span class="cline-any cline-no"> </span>
|
|
756
|
-
<span class="cline-any cline-no"> </span>
|
|
757
|
-
<span class="cline-any cline-no"> </span>
|
|
758
|
-
<span class="cline-any cline-no"> </span>
|
|
759
|
-
<span class="cline-any cline-no"> </span>
|
|
760
873
|
<span class="cline-any cline-neutral"> </span>
|
|
761
|
-
<span class="cline-any cline-no"> </span>
|
|
762
|
-
<span class="cline-any cline-no"> </span>
|
|
763
874
|
<span class="cline-any cline-neutral"> </span>
|
|
764
875
|
<span class="cline-any cline-neutral"> </span>
|
|
765
|
-
<span class="cline-any cline-no"> </span>
|
|
766
876
|
<span class="cline-any cline-neutral"> </span>
|
|
767
877
|
<span class="cline-any cline-neutral"> </span>
|
|
768
|
-
<span class="cline-any cline-no"> </span>
|
|
769
878
|
<span class="cline-any cline-neutral"> </span>
|
|
770
879
|
<span class="cline-any cline-neutral"> </span>
|
|
880
|
+
<span class="cline-any cline-yes">4x</span>
|
|
881
|
+
<span class="cline-any cline-yes">1x</span>
|
|
882
|
+
<span class="cline-any cline-yes">1x</span>
|
|
883
|
+
<span class="cline-any cline-yes">1x</span>
|
|
771
884
|
<span class="cline-any cline-neutral"> </span>
|
|
772
|
-
<span class="cline-any cline-no"> </span>
|
|
773
|
-
<span class="cline-any cline-no"> </span>
|
|
774
|
-
<span class="cline-any cline-no"> </span>
|
|
775
885
|
<span class="cline-any cline-neutral"> </span>
|
|
776
|
-
<span class="cline-any cline-
|
|
777
|
-
<span class="cline-any cline-
|
|
778
|
-
<span class="cline-any cline-
|
|
886
|
+
<span class="cline-any cline-neutral"> </span>
|
|
887
|
+
<span class="cline-any cline-neutral"> </span>
|
|
888
|
+
<span class="cline-any cline-neutral"> </span>
|
|
889
|
+
<span class="cline-any cline-neutral"> </span>
|
|
890
|
+
<span class="cline-any cline-neutral"> </span>
|
|
891
|
+
<span class="cline-any cline-neutral"> </span>
|
|
892
|
+
<span class="cline-any cline-neutral"> </span>
|
|
893
|
+
<span class="cline-any cline-neutral"> </span>
|
|
894
|
+
<span class="cline-any cline-neutral"> </span>
|
|
895
|
+
<span class="cline-any cline-neutral"> </span>
|
|
896
|
+
<span class="cline-any cline-neutral"> </span>
|
|
897
|
+
<span class="cline-any cline-neutral"> </span>
|
|
898
|
+
<span class="cline-any cline-neutral"> </span>
|
|
899
|
+
<span class="cline-any cline-yes">4x</span>
|
|
900
|
+
<span class="cline-any cline-neutral"> </span>
|
|
901
|
+
<span class="cline-any cline-neutral"> </span>
|
|
902
|
+
<span class="cline-any cline-yes">4x</span>
|
|
903
|
+
<span class="cline-any cline-yes">4x</span>
|
|
904
|
+
<span class="cline-any cline-yes">4x</span>
|
|
905
|
+
<span class="cline-any cline-yes">4x</span>
|
|
906
|
+
<span class="cline-any cline-yes">4x</span>
|
|
907
|
+
<span class="cline-any cline-yes">4x</span>
|
|
908
|
+
<span class="cline-any cline-neutral"> </span>
|
|
779
909
|
<span class="cline-any cline-neutral"> </span>
|
|
780
910
|
<span class="cline-any cline-no"> </span>
|
|
911
|
+
<span class="cline-any cline-neutral"> </span>
|
|
912
|
+
<span class="cline-any cline-neutral"> </span>
|
|
913
|
+
<span class="cline-any cline-neutral"> </span>
|
|
914
|
+
<span class="cline-any cline-yes">4x</span>
|
|
915
|
+
<span class="cline-any cline-yes">2x</span>
|
|
916
|
+
<span class="cline-any cline-yes">2x</span>
|
|
917
|
+
<span class="cline-any cline-yes">2x</span>
|
|
918
|
+
<span class="cline-any cline-neutral"> </span>
|
|
919
|
+
<span class="cline-any cline-neutral"> </span>
|
|
920
|
+
<span class="cline-any cline-yes">4x</span>
|
|
921
|
+
<span class="cline-any cline-neutral"> </span>
|
|
922
|
+
<span class="cline-any cline-neutral"> </span>
|
|
923
|
+
<span class="cline-any cline-neutral"> </span>
|
|
924
|
+
<span class="cline-any cline-yes">1x</span>
|
|
925
|
+
<span class="cline-any cline-yes">1x</span>
|
|
926
|
+
<span class="cline-any cline-neutral"> </span>
|
|
927
|
+
<span class="cline-any cline-neutral"> </span>
|
|
928
|
+
<span class="cline-any cline-neutral"> </span>
|
|
929
|
+
<span class="cline-any cline-yes">4x</span>
|
|
781
930
|
<span class="cline-any cline-no"> </span>
|
|
782
|
-
<span class="cline-any cline-
|
|
783
|
-
<span class="cline-any cline-
|
|
931
|
+
<span class="cline-any cline-yes">3x</span>
|
|
932
|
+
<span class="cline-any cline-neutral"> </span>
|
|
933
|
+
<span class="cline-any cline-yes">2x</span>
|
|
934
|
+
<span class="cline-any cline-neutral"> </span>
|
|
935
|
+
<span class="cline-any cline-neutral"> </span>
|
|
936
|
+
<span class="cline-any cline-neutral"> </span>
|
|
937
|
+
<span class="cline-any cline-neutral"> </span>
|
|
938
|
+
<span class="cline-any cline-neutral"> </span>
|
|
939
|
+
<span class="cline-any cline-neutral"> </span>
|
|
940
|
+
<span class="cline-any cline-neutral"> </span>
|
|
941
|
+
<span class="cline-any cline-neutral"> </span>
|
|
942
|
+
<span class="cline-any cline-neutral"> </span>
|
|
943
|
+
<span class="cline-any cline-neutral"> </span>
|
|
944
|
+
<span class="cline-any cline-neutral"> </span>
|
|
784
945
|
<span class="cline-any cline-neutral"> </span>
|
|
785
946
|
<span class="cline-any cline-no"> </span>
|
|
947
|
+
<span class="cline-any cline-yes">2x</span>
|
|
948
|
+
<span class="cline-any cline-neutral"> </span>
|
|
949
|
+
<span class="cline-any cline-neutral"> </span>
|
|
950
|
+
<span class="cline-any cline-neutral"> </span>
|
|
951
|
+
<span class="cline-any cline-neutral"> </span>
|
|
952
|
+
<span class="cline-any cline-neutral"> </span>
|
|
953
|
+
<span class="cline-any cline-neutral"> </span>
|
|
954
|
+
<span class="cline-any cline-neutral"> </span>
|
|
955
|
+
<span class="cline-any cline-neutral"> </span>
|
|
956
|
+
<span class="cline-any cline-neutral"> </span>
|
|
957
|
+
<span class="cline-any cline-yes">4x</span>
|
|
958
|
+
<span class="cline-any cline-neutral"> </span>
|
|
959
|
+
<span class="cline-any cline-neutral"> </span>
|
|
960
|
+
<span class="cline-any cline-neutral"> </span>
|
|
961
|
+
<span class="cline-any cline-neutral"> </span>
|
|
962
|
+
<span class="cline-any cline-neutral"> </span>
|
|
963
|
+
<span class="cline-any cline-neutral"> </span>
|
|
964
|
+
<span class="cline-any cline-neutral"> </span>
|
|
965
|
+
<span class="cline-any cline-neutral"> </span>
|
|
966
|
+
<span class="cline-any cline-neutral"> </span>
|
|
967
|
+
<span class="cline-any cline-neutral"> </span>
|
|
968
|
+
<span class="cline-any cline-neutral"> </span>
|
|
969
|
+
<span class="cline-any cline-yes">4x</span>
|
|
970
|
+
<span class="cline-any cline-yes">4x</span>
|
|
971
|
+
<span class="cline-any cline-yes">4x</span>
|
|
972
|
+
<span class="cline-any cline-neutral"> </span>
|
|
973
|
+
<span class="cline-any cline-yes">4x</span>
|
|
974
|
+
<span class="cline-any cline-yes">4x</span>
|
|
975
|
+
<span class="cline-any cline-yes">4x</span>
|
|
976
|
+
<span class="cline-any cline-neutral"> </span>
|
|
977
|
+
<span class="cline-any cline-yes">4x</span>
|
|
978
|
+
<span class="cline-any cline-yes">3x</span>
|
|
979
|
+
<span class="cline-any cline-yes">3x</span>
|
|
980
|
+
<span class="cline-any cline-yes">3x</span>
|
|
981
|
+
<span class="cline-any cline-neutral"> </span>
|
|
982
|
+
<span class="cline-any cline-yes">4x</span>
|
|
786
983
|
<span class="cline-any cline-no"> </span>
|
|
787
984
|
<span class="cline-any cline-no"> </span>
|
|
788
985
|
<span class="cline-any cline-no"> </span>
|
|
789
986
|
<span class="cline-any cline-neutral"> </span>
|
|
790
|
-
<span class="cline-any cline-
|
|
987
|
+
<span class="cline-any cline-yes">4x</span>
|
|
791
988
|
<span class="cline-any cline-neutral"> </span>
|
|
792
989
|
<span class="cline-any cline-neutral"> </span>
|
|
793
990
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -894,20 +1091,25 @@
|
|
|
894
1091
|
<span class="cline-any cline-neutral"> </span>
|
|
895
1092
|
<span class="cline-any cline-neutral"> </span>
|
|
896
1093
|
<span class="cline-any cline-neutral"> </span>
|
|
897
|
-
<span class="cline-any cline-yes">13x</span>
|
|
898
1094
|
<span class="cline-any cline-neutral"> </span>
|
|
899
1095
|
<span class="cline-any cline-neutral"> </span>
|
|
900
1096
|
<span class="cline-any cline-neutral"> </span>
|
|
901
|
-
<span class="cline-any cline-yes">13x</span>
|
|
902
|
-
<span class="cline-any cline-yes">13x</span>
|
|
903
1097
|
<span class="cline-any cline-neutral"> </span>
|
|
904
|
-
<span class="cline-any cline-yes">13x</span>
|
|
905
|
-
<span class="cline-any cline-no"> </span>
|
|
906
1098
|
<span class="cline-any cline-neutral"> </span>
|
|
1099
|
+
<span class="cline-any cline-yes">17x</span>
|
|
1100
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1101
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1102
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1103
|
+
<span class="cline-any cline-yes">17x</span>
|
|
907
1104
|
<span class="cline-any cline-yes">13x</span>
|
|
1105
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1106
|
+
<span class="cline-any cline-yes">17x</span>
|
|
1107
|
+
<span class="cline-any cline-yes">4x</span>
|
|
1108
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1109
|
+
<span class="cline-any cline-yes">17x</span>
|
|
908
1110
|
<span class="cline-any cline-no"> </span>
|
|
909
1111
|
<span class="cline-any cline-neutral"> </span>
|
|
910
|
-
<span class="cline-any cline-yes">
|
|
1112
|
+
<span class="cline-any cline-yes">17x</span>
|
|
911
1113
|
<span class="cline-any cline-no"> </span>
|
|
912
1114
|
<span class="cline-any cline-neutral"> </span>
|
|
913
1115
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -923,7 +1125,12 @@ import {
|
|
|
923
1125
|
generateSdkAggregator,
|
|
924
1126
|
deriveClientClassName,
|
|
925
1127
|
deriveClientPropertyName,
|
|
1128
|
+
deriveSubareaClientClassName,
|
|
1129
|
+
deriveSubareaPropertyName,
|
|
1130
|
+
getAreaSubarea,
|
|
926
1131
|
hasPublicOperations,
|
|
1132
|
+
type SdkClientInfo,
|
|
1133
|
+
type SdkAreaInfo,
|
|
927
1134
|
} from './codegen-sdk.js';
|
|
928
1135
|
import { generatePlainTypes } from './codegen-plain-types.js';
|
|
929
1136
|
import {
|
|
@@ -979,9 +1186,9 @@ export interface SdkConfig {
|
|
|
979
1186
|
output?: {
|
|
980
1187
|
/** Path template for the SDK aggregator file. Supports {name}. Default: `sdk.ts`. */
|
|
981
1188
|
sdk?: string;
|
|
982
|
-
/** Path template for SDK type files. Supports {filename}, {dir}, {area}. */
|
|
1189
|
+
/** Path template for SDK type files. Supports {filename}, {dir}, {area}, {subarea}. */
|
|
983
1190
|
types?: string;
|
|
984
|
-
/** Path template for client class files. Supports {filename}, {dir}, {area}. */
|
|
1191
|
+
/** Path template for client class files. Supports {filename}, {dir}, {area}, {subarea}. */
|
|
985
1192
|
clients?: string;
|
|
986
1193
|
};
|
|
987
1194
|
/**
|
|
@@ -1081,31 +1288,31 @@ function runServerGeneration(
|
|
|
1081
1288
|
|
|
1082
1289
|
// ─── SDK generation ────────────────────────────────────────────────────────
|
|
1083
1290
|
|
|
1084
|
-
function
|
|
1291
|
+
function runSdkGeneration(
|
|
1085
1292
|
config: SdkConfig,
|
|
1086
1293
|
rootDir: string,
|
|
1087
1294
|
inputs: Parameters<NonNullable<ContractKitPlugin['generateTargets']>>[0],
|
|
1088
1295
|
emitFile: (outPath: string, content: string) => void,
|
|
1089
1296
|
): void {
|
|
1090
|
-
const sdkBase = <span class="
|
|
1091
|
-
const sdkName =
|
|
1092
|
-
const sdkOutput =
|
|
1093
|
-
const sdkEntryPath =
|
|
1094
|
-
? join(sdkBase, TEMPLATE_VAR_RE.test(sdkOutput) ? resolveTemplate(sdkOutput, { name: sdkName ?? 'sdk' }) :
|
|
1297
|
+
const sdkBase = config.baseDir<span class="branch-0 cbranch-no" title="branch not covered" > ? resolve(rootDir, config.baseDir) : r</span>ootDir;
|
|
1298
|
+
const sdkName = config.name;
|
|
1299
|
+
const sdkOutput = config.output?.sdk;
|
|
1300
|
+
const sdkEntryPath = sdkOutput
|
|
1301
|
+
? join(sdkBase, TEMPLATE_VAR_RE.test(<span class="branch-0 cbranch-no" title="branch not covered" >sdkOutput) ? resolveTemplate(sdkOutput, { name: sdkName ?? 'sdk' }) : <span class="branch-1 cbranch-no" title="branch not covered" >s</span>dkOutput)</span>
|
|
1095
1302
|
: join(sdkBase, 'sdk.ts');
|
|
1096
|
-
const
|
|
1303
|
+
const sdkOptionsPath = join(dirname(sdkEntryPath), 'sdk-options.ts');
|
|
1097
1304
|
|
|
1098
|
-
const modelsWithInput =
|
|
1099
|
-
const modelsWithOutput =
|
|
1100
|
-
const allFiles =
|
|
1101
|
-
const
|
|
1305
|
+
const modelsWithInput = inputs.modelsWithInput as Set<string>;
|
|
1306
|
+
const modelsWithOutput = inputs.modelsWithOutput as Set<string>;
|
|
1307
|
+
const allFiles = [...inputs.contractRoots.map(<span class="fstat-no" title="function not covered" >r => <span class="cstat-no" title="statement not covered" >r</span>.file)</span>, ...inputs.opRoots.map(r => r.file)];
|
|
1308
|
+
const ckCommonRoot = commonDir(allFiles, rootDir);
|
|
1102
1309
|
|
|
1103
|
-
let sdkModelOutPaths =
|
|
1104
|
-
const sdkTypePaths: string[] =
|
|
1105
|
-
const sdkClientInfos: { outPath: string; className: string; propertyName: string }[] =
|
|
1310
|
+
let sdkModelOutPaths = new Map<string, string>();
|
|
1311
|
+
const sdkTypePaths: string[] = [];
|
|
1312
|
+
const sdkClientInfos: { outPath: string; className: string; propertyName: string }[] = [];
|
|
1106
1313
|
|
|
1107
1314
|
// ── SDK types ──
|
|
1108
|
-
<span class="
|
|
1315
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (config.output?.types) {
|
|
1109
1316
|
<span class="cstat-no" title="statement not covered" > sdkModelOutPaths = new Map<string, string>();</span>
|
|
1110
1317
|
const <span class="cstat-no" title="statement not covered" >publicTypes = computePubliclyReachableTypes(inputs.opRoots, inputs.contractRoots, modelsWithInput, modelsWithOutput);</span>
|
|
1111
1318
|
|
|
@@ -1148,20 +1355,62 @@ function <span class="fstat-no" title="function not covered" >runSdkGeneration(<
|
|
|
1148
1355
|
}
|
|
1149
1356
|
|
|
1150
1357
|
// ── SDK clients ──
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1358
|
+
// Group opRoots by (area, subarea):
|
|
1359
|
+
// - area + subarea → leaf client emitted as <Area><Subarea>Client in its own file
|
|
1360
|
+
// - area only → no standalone file; methods inlined into <Area>Client in sdk.ts
|
|
1361
|
+
// - neither → flat top-level client (legacy behavior)
|
|
1362
|
+
interface AreaBucket {
|
|
1363
|
+
leaves: { ast: typeof inputs.opRoots[number]; outPath: string; subarea: string }[];
|
|
1364
|
+
inlineRoots: typeof inputs.opRoots[number][];
|
|
1365
|
+
}
|
|
1366
|
+
const areaBuckets = new Map<string, AreaBucket>();
|
|
1367
|
+
const topLevelEntries: { ast: typeof inputs.opRoots[number]; outPath: string }[] = [];
|
|
1368
|
+
|
|
1369
|
+
<span class="missing-if-branch" title="else path not taken" >E</span>if (config.output?.clients) {
|
|
1370
|
+
for (const ast of inputs.opRoots) {
|
|
1371
|
+
const sdkOutPath = computeSdkOutPath(ast.file, sdkBase, config.output.clients, ckCommonRoot, ast.meta);
|
|
1372
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (!sdkOutPath || !hasPublicOperations(ast, config.includeInternal)) <span class="cstat-no" title="statement not covered" >continue;</span>
|
|
1373
|
+
|
|
1374
|
+
const { area, subarea } = getAreaSubarea(ast);
|
|
1375
|
+
if (area && subarea) {
|
|
1376
|
+
const bucket = areaBuckets.get(area) ?? { leaves: [], inlineRoots: [] };
|
|
1377
|
+
bucket.leaves.push({ ast, outPath: sdkOutPath, subarea });
|
|
1378
|
+
areaBuckets.set(area, bucket);
|
|
1379
|
+
} else if (area) {
|
|
1380
|
+
const bucket = areaBuckets.get(area) ?? { leaves: [], inlineRoots: [] };
|
|
1381
|
+
bucket.inlineRoots.push(ast);
|
|
1382
|
+
areaBuckets.set(area, bucket);
|
|
1383
|
+
} else {
|
|
1384
|
+
topLevelEntries.push({ ast, outPath: sdkOutPath });
|
|
1385
|
+
}
|
|
1386
|
+
}
|
|
1387
|
+
|
|
1388
|
+
// Emit per-file clients for leaves (subarea) and top-level (no area). Area-only files are inlined later.
|
|
1389
|
+
for (const { ast, outPath, subarea } of [...areaBuckets.entries()].flatMap(([area, b]) => b.leaves.map(l => ({ ...l, area })))) {
|
|
1390
|
+
const className = deriveSubareaClientClassName((ast.meta?.area as string) ?? <span class="branch-1 cbranch-no" title="branch not covered" >'', s</span>ubarea);
|
|
1391
|
+
sdkClientInfos.push({ outPath, className, propertyName: deriveSubareaPropertyName(subarea) });
|
|
1392
|
+
emitFile(
|
|
1393
|
+
outPath,
|
|
1162
1394
|
generateSdk(ast, {
|
|
1163
1395
|
typeImportPathTemplate: undefined,
|
|
1164
|
-
outPath
|
|
1396
|
+
outPath,
|
|
1397
|
+
modelOutPaths: sdkModelOutPaths,
|
|
1398
|
+
sdkOptionsPath,
|
|
1399
|
+
modelsWithInput,
|
|
1400
|
+
modelsWithOutput,
|
|
1401
|
+
includeInternal: config.includeInternal,
|
|
1402
|
+
clientClassName: className,
|
|
1403
|
+
}),
|
|
1404
|
+
);
|
|
1405
|
+
}
|
|
1406
|
+
for (const { ast, outPath } of topLevelEntries) {
|
|
1407
|
+
const className = deriveClientClassName(ast.file);
|
|
1408
|
+
sdkClientInfos.push({ outPath, className, propertyName: deriveClientPropertyName(ast.file) });
|
|
1409
|
+
emitFile(
|
|
1410
|
+
outPath,
|
|
1411
|
+
generateSdk(ast, {
|
|
1412
|
+
typeImportPathTemplate: undefined,
|
|
1413
|
+
outPath,
|
|
1165
1414
|
modelOutPaths: sdkModelOutPaths,
|
|
1166
1415
|
sdkOptionsPath,
|
|
1167
1416
|
modelsWithInput,
|
|
@@ -1173,46 +1422,95 @@ function <span class="fstat-no" title="function not covered" >runSdkGeneration(<
|
|
|
1173
1422
|
}
|
|
1174
1423
|
|
|
1175
1424
|
// ── sdk-options.ts ──
|
|
1176
|
-
|
|
1425
|
+
emitFile(sdkOptionsPath, generateSdkOptions());
|
|
1177
1426
|
|
|
1178
1427
|
// ── sdk.ts aggregator ──
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
const
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
const <span class="cstat-no" title="statement not covered" >sdkOptionsRel = relative(sdkEntryDir, sdkOptionsPath).replace(/\.ts$/, '.js');</span>
|
|
1187
|
-
const sdkClassName = <span class="cstat-no" title="statement not covered" >sdkName</span>
|
|
1188
|
-
? sdkName
|
|
1428
|
+
const hasAnything = sdkClientInfos.length > 0 || areaBuckets.size > 0;
|
|
1429
|
+
<span class="missing-if-branch" title="else path not taken" >E</span>if (hasAnything) {
|
|
1430
|
+
const sdkEntryDir = dirname(sdkEntryPath);
|
|
1431
|
+
const sdkOptionsRel = relative(sdkEntryDir, sdkOptionsPath).replace(/\.ts$/, '.js');
|
|
1432
|
+
const sdkOptionsImportPath = sdkOptionsRel.startsWith('.') ? <span class="branch-0 cbranch-no" title="branch not covered" >sdkOptionsRel : '</span>./' + sdkOptionsRel;
|
|
1433
|
+
const sdkClassName = sdkName
|
|
1434
|
+
? <span class="branch-0 cbranch-no" title="branch not covered" >sdkName</span>
|
|
1189
1435
|
.split(/[-._\s]+/)
|
|
1190
1436
|
.map(<span class="fstat-no" title="function not covered" >s => <span class="cstat-no" title="statement not covered" >s</span>.charAt(0).toUpperCase() + s.slice(1))</span>
|
|
1191
1437
|
.join('') + 'Sdk'
|
|
1192
1438
|
: 'Sdk';
|
|
1193
|
-
|
|
1439
|
+
|
|
1440
|
+
const toClientImport = (info: { outPath: string; className: string; propertyName: string }): SdkClientInfo => {
|
|
1441
|
+
let rel = relative(sdkEntryDir, info.outPath).replace(/\.ts$/, '.js');
|
|
1442
|
+
<span class="missing-if-branch" title="else path not taken" >E</span>if (!rel.startsWith('.')) rel = './' + rel;
|
|
1443
|
+
return { className: info.className, propertyName: info.propertyName, importPath: rel };
|
|
1444
|
+
};
|
|
1445
|
+
|
|
1446
|
+
const topLevelClients: SdkClientInfo[] = topLevelEntries.map(e => ({
|
|
1447
|
+
className: deriveClientClassName(e.ast.file),
|
|
1448
|
+
propertyName: deriveClientPropertyName(e.ast.file),
|
|
1449
|
+
importPath: (() => {
|
|
1450
|
+
const rel = relative(sdkEntryDir, e.outPath).replace(/\.ts$/, '.js');
|
|
1451
|
+
return rel.startsWith('.') ? <span class="branch-0 cbranch-no" title="branch not covered" >rel : '</span>./' + rel;
|
|
1452
|
+
})(),
|
|
1453
|
+
}));
|
|
1454
|
+
|
|
1455
|
+
const areas: SdkAreaInfo[] = [...areaBuckets.entries()]
|
|
1456
|
+
.sort(<span class="fstat-no" title="function not covered" >([</span>a], [b]) => <span class="cstat-no" title="statement not covered" >a.localeCompare(b))</span>
|
|
1457
|
+
.map(([area, bucket]) => ({
|
|
1458
|
+
area,
|
|
1459
|
+
inlineFiles: bucket.inlineRoots.map(root => ({
|
|
1460
|
+
root,
|
|
1461
|
+
codegenOptions: {
|
|
1462
|
+
typeImportPathTemplate: undefined,
|
|
1463
|
+
outPath: sdkEntryPath,
|
|
1464
|
+
modelOutPaths: sdkModelOutPaths,
|
|
1465
|
+
sdkOptionsPath,
|
|
1466
|
+
modelsWithInput,
|
|
1467
|
+
modelsWithOutput,
|
|
1468
|
+
includeInternal: config.includeInternal,
|
|
1469
|
+
},
|
|
1470
|
+
})),
|
|
1471
|
+
subareaClients: bucket.leaves
|
|
1472
|
+
.sort(<span class="fstat-no" title="function not covered" >(a</span>, b) => <span class="cstat-no" title="statement not covered" >a.subarea.localeCompare(b.subarea))</span>
|
|
1473
|
+
.map(l => ({
|
|
1474
|
+
propertyName: deriveSubareaPropertyName(l.subarea),
|
|
1475
|
+
client: toClientImport({
|
|
1476
|
+
outPath: l.outPath,
|
|
1477
|
+
className: deriveSubareaClientClassName(area, l.subarea),
|
|
1478
|
+
propertyName: deriveSubareaPropertyName(l.subarea),
|
|
1479
|
+
}),
|
|
1480
|
+
})),
|
|
1481
|
+
}));
|
|
1482
|
+
|
|
1483
|
+
emitFile(
|
|
1484
|
+
sdkEntryPath,
|
|
1485
|
+
generateSdkAggregator({
|
|
1486
|
+
topLevelClients,
|
|
1487
|
+
areas,
|
|
1488
|
+
sdkOptionsImportPath,
|
|
1489
|
+
sdkClassName,
|
|
1490
|
+
}),
|
|
1491
|
+
);
|
|
1194
1492
|
}
|
|
1195
1493
|
|
|
1196
1494
|
// ── Barrel files ──
|
|
1197
|
-
const
|
|
1198
|
-
const
|
|
1199
|
-
|
|
1495
|
+
const sdkSrcDir = dirname(sdkEntryPath);
|
|
1496
|
+
const sdkTypeBarrels = generateBarrelFiles(sdkTypePaths);
|
|
1497
|
+
for (const barrel of sdkTypeBarrels) <span class="cstat-no" title="statement not covered" >emitFile(barrel.outPath, barrel.content);</span>
|
|
1200
1498
|
|
|
1201
|
-
const rootExports: string[] =
|
|
1202
|
-
<span class="
|
|
1203
|
-
|
|
1499
|
+
const rootExports: string[] = [`export * from './${basename(sdkOptionsPath).replace(/\.ts$/, '.js')}';`];
|
|
1500
|
+
<span class="missing-if-branch" title="else path not taken" >E</span>if (hasAnything) {
|
|
1501
|
+
rootExports.push(`export * from './${basename(sdkEntryPath).replace(/\.ts$/, '.js')}';`);
|
|
1204
1502
|
}
|
|
1205
|
-
|
|
1206
|
-
let
|
|
1207
|
-
<span class="
|
|
1208
|
-
|
|
1503
|
+
for (const c of sdkClientInfos) {
|
|
1504
|
+
let rel = relative(sdkSrcDir, c.outPath).replace(/\.ts$/, '.js');
|
|
1505
|
+
<span class="missing-if-branch" title="else path not taken" >E</span>if (!rel.startsWith('.')) rel = './' + rel;
|
|
1506
|
+
rootExports.push(`export * from '${rel}';`);
|
|
1209
1507
|
}
|
|
1210
|
-
|
|
1508
|
+
for (const barrel of sdkTypeBarrels) {
|
|
1211
1509
|
let <span class="cstat-no" title="statement not covered" >rel = relative(sdkSrcDir, barrel.outPath).replace(/\.ts$/, '.js');</span>
|
|
1212
1510
|
<span class="cstat-no" title="statement not covered" > if (!rel.startsWith('.')) <span class="cstat-no" title="statement not covered" >rel = './' + rel;</span></span>
|
|
1213
1511
|
<span class="cstat-no" title="statement not covered" > rootExports.push(`export * from '${rel}';`);</span>
|
|
1214
1512
|
}
|
|
1215
|
-
|
|
1513
|
+
emitFile(join(sdkSrcDir, 'index.ts'), `// Auto-generated barrel file\n${rootExports.sort().join('\n')}\n`);
|
|
1216
1514
|
}
|
|
1217
1515
|
|
|
1218
1516
|
// ─── Zod generation ────────────────────────────────────────────────────────
|
|
@@ -1318,16 +1616,21 @@ export default plugin;
|
|
|
1318
1616
|
|
|
1319
1617
|
// ─── Factory: for programmatic use with explicit config ────────────────────
|
|
1320
1618
|
|
|
1619
|
+
/**
|
|
1620
|
+
* Build a `@contractkit/plugin-typescript` instance with explicit configuration, for
|
|
1621
|
+
* programmatic use (tests, custom build scripts). Prefer the default export when loading
|
|
1622
|
+
* via `contractkit.config.json`.
|
|
1623
|
+
*/
|
|
1321
1624
|
export function createTypescriptPlugin(config: TypescriptPluginConfig, rootDir: string): ContractKitPlugin {
|
|
1322
1625
|
return {
|
|
1323
1626
|
name: 'typescript',
|
|
1324
1627
|
cacheKey: `typescript:${JSON.stringify(config)}`,
|
|
1325
1628
|
async generateTargets(inputs, ctx) {
|
|
1326
|
-
|
|
1629
|
+
if (config.server) {
|
|
1327
1630
|
runServerGeneration(config.server, rootDir, inputs, ctx.emitFile.bind(ctx));
|
|
1328
1631
|
}
|
|
1329
|
-
|
|
1330
|
-
|
|
1632
|
+
if (config.sdk) {
|
|
1633
|
+
runSdkGeneration(config.sdk, rootDir, inputs, ctx.emitFile.bind(ctx));
|
|
1331
1634
|
}
|
|
1332
1635
|
<span class="missing-if-branch" title="if path not taken" >I</span>if (config.zod) {
|
|
1333
1636
|
<span class="cstat-no" title="statement not covered" > runZodGeneration(config.zod, rootDir, inputs, ctx.emitFile.bind(ctx));</span>
|
|
@@ -1345,7 +1648,7 @@ export function createTypescriptPlugin(config: TypescriptPluginConfig, rootDir:
|
|
|
1345
1648
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
1346
1649
|
Code coverage generated by
|
|
1347
1650
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
1348
|
-
at 2026-05-
|
|
1651
|
+
at 2026-05-06T16:22:17.029Z
|
|
1349
1652
|
</div>
|
|
1350
1653
|
<script src="../prettify.js"></script>
|
|
1351
1654
|
<script>
|