@contractkit/plugin-typescript 0.17.2 → 0.17.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.
- package/.turbo/turbo-build$colon$ci.log +6 -6
- package/.turbo/turbo-test$colon$ci.log +14 -14
- package/CHANGELOG.md +12 -0
- package/coverage/clover.xml +689 -659
- package/coverage/coverage-final.json +4 -4
- package/coverage/index.html +18 -18
- package/coverage/src/codegen-contract.ts.html +356 -224
- package/coverage/src/codegen-operation.ts.html +1 -1
- package/coverage/src/codegen-plain-types.ts.html +197 -101
- package/coverage/src/codegen-sdk.ts.html +1 -1
- package/coverage/src/index.html +28 -28
- package/coverage/src/index.ts.html +1 -1
- package/coverage/src/path-utils.ts.html +1 -1
- package/coverage/src/ts-render.ts.html +11 -11
- package/coverage/tests/helpers.ts.html +7 -7
- package/coverage/tests/index.html +1 -1
- package/dist/codegen-contract.d.ts +5 -0
- package/dist/codegen-contract.d.ts.map +1 -1
- package/dist/codegen-plain-types.d.ts.map +1 -1
- package/dist/index.js +61 -10
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
- package/src/codegen-contract.ts +47 -3
- package/src/codegen-plain-types.ts +44 -12
- package/tests/codegen-contract.test.ts +26 -0
- package/tests/codegen-plain-types.test.ts +38 -0
|
@@ -2515,7 +2515,7 @@ function deriveTypeImportPath(file: string, template?: string): string {
|
|
|
2515
2515
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
2516
2516
|
Code coverage generated by
|
|
2517
2517
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
2518
|
-
at 2026-05-
|
|
2518
|
+
at 2026-05-05T15:55:20.433Z
|
|
2519
2519
|
</div>
|
|
2520
2520
|
<script src="../prettify.js"></script>
|
|
2521
2521
|
<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">89.08% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>155/174</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">78.37% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>87/111</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">96.66% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>29/30</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">92.3% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>132/143</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -335,7 +335,39 @@
|
|
|
335
335
|
<a name='L270'></a><a href='#L270'>270</a>
|
|
336
336
|
<a name='L271'></a><a href='#L271'>271</a>
|
|
337
337
|
<a name='L272'></a><a href='#L272'>272</a>
|
|
338
|
-
<a name='L273'></a><a href='#L273'>273</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></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
339
371
|
<span class="cline-any cline-neutral"> </span>
|
|
340
372
|
<span class="cline-any cline-neutral"> </span>
|
|
341
373
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -358,32 +390,32 @@
|
|
|
358
390
|
<span class="cline-any cline-neutral"> </span>
|
|
359
391
|
<span class="cline-any cline-neutral"> </span>
|
|
360
392
|
<span class="cline-any cline-neutral"> </span>
|
|
361
|
-
<span class="cline-any cline-yes">
|
|
362
|
-
<span class="cline-any cline-yes">
|
|
393
|
+
<span class="cline-any cline-yes">63x</span>
|
|
394
|
+
<span class="cline-any cline-yes">63x</span>
|
|
363
395
|
<span class="cline-any cline-neutral"> </span>
|
|
364
396
|
<span class="cline-any cline-neutral"> </span>
|
|
365
|
-
<span class="cline-any cline-yes">
|
|
366
|
-
<span class="cline-any cline-yes">
|
|
367
|
-
<span class="cline-any cline-yes">
|
|
397
|
+
<span class="cline-any cline-yes">63x</span>
|
|
398
|
+
<span class="cline-any cline-yes">63x</span>
|
|
399
|
+
<span class="cline-any cline-yes">63x</span>
|
|
368
400
|
<span class="cline-any cline-neutral"> </span>
|
|
369
401
|
<span class="cline-any cline-neutral"> </span>
|
|
370
|
-
<span class="cline-any cline-yes">
|
|
371
|
-
<span class="cline-any cline-yes">
|
|
372
|
-
<span class="cline-any cline-yes">
|
|
402
|
+
<span class="cline-any cline-yes">63x</span>
|
|
403
|
+
<span class="cline-any cline-yes">63x</span>
|
|
404
|
+
<span class="cline-any cline-yes">63x</span>
|
|
373
405
|
<span class="cline-any cline-neutral"> </span>
|
|
374
406
|
<span class="cline-any cline-neutral"> </span>
|
|
375
|
-
<span class="cline-any cline-yes">
|
|
376
|
-
<span class="cline-any cline-yes">
|
|
377
|
-
<span class="cline-any cline-yes">
|
|
407
|
+
<span class="cline-any cline-yes">63x</span>
|
|
408
|
+
<span class="cline-any cline-yes">63x</span>
|
|
409
|
+
<span class="cline-any cline-yes">63x</span>
|
|
378
410
|
<span class="cline-any cline-neutral"> </span>
|
|
379
411
|
<span class="cline-any cline-neutral"> </span>
|
|
380
|
-
<span class="cline-any cline-yes">
|
|
412
|
+
<span class="cline-any cline-yes">63x</span>
|
|
381
413
|
<span class="cline-any cline-yes">19x</span>
|
|
382
414
|
<span class="cline-any cline-yes">19x</span>
|
|
383
415
|
<span class="cline-any cline-neutral"> </span>
|
|
384
|
-
<span class="cline-any cline-yes">
|
|
416
|
+
<span class="cline-any cline-yes">63x</span>
|
|
385
417
|
<span class="cline-any cline-neutral"> </span>
|
|
386
|
-
<span class="cline-any cline-yes">
|
|
418
|
+
<span class="cline-any cline-yes">63x</span>
|
|
387
419
|
<span class="cline-any cline-no"> </span>
|
|
388
420
|
<span class="cline-any cline-no"> </span>
|
|
389
421
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -392,49 +424,81 @@
|
|
|
392
424
|
<span class="cline-any cline-no"> </span>
|
|
393
425
|
<span class="cline-any cline-neutral"> </span>
|
|
394
426
|
<span class="cline-any cline-neutral"> </span>
|
|
395
|
-
<span class="cline-any cline-yes">
|
|
396
|
-
<span class="cline-any cline-yes">71x</span>
|
|
397
|
-
<span class="cline-any cline-yes">71x</span>
|
|
427
|
+
<span class="cline-any cline-yes">78x</span>
|
|
398
428
|
<span class="cline-any cline-neutral"> </span>
|
|
429
|
+
<span class="cline-any cline-yes">63x</span>
|
|
430
|
+
<span class="cline-any cline-yes">78x</span>
|
|
431
|
+
<span class="cline-any cline-yes">78x</span>
|
|
399
432
|
<span class="cline-any cline-neutral"> </span>
|
|
400
|
-
<span class="cline-any cline-yes">60x</span>
|
|
401
433
|
<span class="cline-any cline-neutral"> </span>
|
|
434
|
+
<span class="cline-any cline-yes">63x</span>
|
|
402
435
|
<span class="cline-any cline-neutral"> </span>
|
|
403
436
|
<span class="cline-any cline-neutral"> </span>
|
|
404
437
|
<span class="cline-any cline-neutral"> </span>
|
|
405
438
|
<span class="cline-any cline-neutral"> </span>
|
|
406
439
|
<span class="cline-any cline-neutral"> </span>
|
|
407
|
-
<span class="cline-any cline-
|
|
440
|
+
<span class="cline-any cline-neutral"> </span>
|
|
441
|
+
<span class="cline-any cline-neutral"> </span>
|
|
442
|
+
<span class="cline-any cline-neutral"> </span>
|
|
443
|
+
<span class="cline-any cline-neutral"> </span>
|
|
444
|
+
<span class="cline-any cline-neutral"> </span>
|
|
445
|
+
<span class="cline-any cline-neutral"> </span>
|
|
446
|
+
<span class="cline-any cline-neutral"> </span>
|
|
447
|
+
<span class="cline-any cline-yes">78x</span>
|
|
408
448
|
<span class="cline-any cline-yes">5x</span>
|
|
409
449
|
<span class="cline-any cline-neutral"> </span>
|
|
410
450
|
<span class="cline-any cline-neutral"> </span>
|
|
411
451
|
<span class="cline-any cline-neutral"> </span>
|
|
412
452
|
<span class="cline-any cline-neutral"> </span>
|
|
413
|
-
<span class="cline-any cline-yes">
|
|
453
|
+
<span class="cline-any cline-yes">97x</span>
|
|
414
454
|
<span class="cline-any cline-neutral"> </span>
|
|
415
|
-
<span class="cline-any cline-yes">
|
|
455
|
+
<span class="cline-any cline-yes">78x</span>
|
|
416
456
|
<span class="cline-any cline-neutral"> </span>
|
|
417
|
-
<span class="cline-any cline-yes">
|
|
457
|
+
<span class="cline-any cline-yes">78x</span>
|
|
418
458
|
<span class="cline-any cline-yes">3x</span>
|
|
419
459
|
<span class="cline-any cline-yes">3x</span>
|
|
420
460
|
<span class="cline-any cline-neutral"> </span>
|
|
421
|
-
<span class="cline-any cline-yes">
|
|
461
|
+
<span class="cline-any cline-yes">73x</span>
|
|
462
|
+
<span class="cline-any cline-neutral"> </span>
|
|
463
|
+
<span class="cline-any cline-neutral"> </span>
|
|
464
|
+
<span class="cline-any cline-neutral"> </span>
|
|
465
|
+
<span class="cline-any cline-neutral"> </span>
|
|
466
|
+
<span class="cline-any cline-neutral"> </span>
|
|
467
|
+
<span class="cline-any cline-neutral"> </span>
|
|
468
|
+
<span class="cline-any cline-neutral"> </span>
|
|
469
|
+
<span class="cline-any cline-yes">73x</span>
|
|
470
|
+
<span class="cline-any cline-yes">73x</span>
|
|
471
|
+
<span class="cline-any cline-yes">17x</span>
|
|
472
|
+
<span class="cline-any cline-yes">17x</span>
|
|
473
|
+
<span class="cline-any cline-yes">8x</span>
|
|
474
|
+
<span class="cline-any cline-yes">6x</span>
|
|
475
|
+
<span class="cline-any cline-neutral"> </span>
|
|
476
|
+
<span class="cline-any cline-yes">73x</span>
|
|
477
|
+
<span class="cline-any cline-yes">73x</span>
|
|
478
|
+
<span class="cline-any cline-neutral"> </span>
|
|
422
479
|
<span class="cline-any cline-neutral"> </span>
|
|
423
480
|
<span class="cline-any cline-neutral"> </span>
|
|
424
481
|
<span class="cline-any cline-neutral"> </span>
|
|
425
|
-
<span class="cline-any cline-
|
|
426
|
-
<span class="cline-any cline-
|
|
427
|
-
<span class="cline-any cline-yes">
|
|
482
|
+
<span class="cline-any cline-neutral"> </span>
|
|
483
|
+
<span class="cline-any cline-neutral"> </span>
|
|
484
|
+
<span class="cline-any cline-yes">73x</span>
|
|
485
|
+
<span class="cline-any cline-yes">109x</span>
|
|
486
|
+
<span class="cline-any cline-neutral"> </span>
|
|
487
|
+
<span class="cline-any cline-neutral"> </span>
|
|
488
|
+
<span class="cline-any cline-neutral"> </span>
|
|
489
|
+
<span class="cline-any cline-yes">78x</span>
|
|
490
|
+
<span class="cline-any cline-yes">78x</span>
|
|
491
|
+
<span class="cline-any cline-yes">78x</span>
|
|
428
492
|
<span class="cline-any cline-no"> </span>
|
|
429
493
|
<span class="cline-any cline-neutral"> </span>
|
|
430
|
-
<span class="cline-any cline-yes">
|
|
494
|
+
<span class="cline-any cline-yes">78x</span>
|
|
431
495
|
<span class="cline-any cline-yes">1x</span>
|
|
432
496
|
<span class="cline-any cline-neutral"> </span>
|
|
433
497
|
<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">
|
|
498
|
+
<span class="cline-any cline-yes">78x</span>
|
|
499
|
+
<span class="cline-any cline-yes">78x</span>
|
|
500
|
+
<span class="cline-any cline-yes">78x</span>
|
|
501
|
+
<span class="cline-any cline-yes">78x</span>
|
|
438
502
|
<span class="cline-any cline-neutral"> </span>
|
|
439
503
|
<span class="cline-any cline-neutral"> </span>
|
|
440
504
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -456,86 +520,86 @@
|
|
|
456
520
|
<span class="cline-any cline-neutral"> </span>
|
|
457
521
|
<span class="cline-any cline-neutral"> </span>
|
|
458
522
|
<span class="cline-any cline-neutral"> </span>
|
|
459
|
-
<span class="cline-any cline-yes">
|
|
460
|
-
<span class="cline-any cline-yes">
|
|
461
|
-
<span class="cline-any cline-yes">
|
|
462
|
-
<span class="cline-any cline-yes">
|
|
463
|
-
<span class="cline-any cline-yes">
|
|
523
|
+
<span class="cline-any cline-yes">91x</span>
|
|
524
|
+
<span class="cline-any cline-yes">16x</span>
|
|
525
|
+
<span class="cline-any cline-yes">7x</span>
|
|
526
|
+
<span class="cline-any cline-yes">7x</span>
|
|
527
|
+
<span class="cline-any cline-yes">6x</span>
|
|
464
528
|
<span class="cline-any cline-neutral"> </span>
|
|
465
529
|
<span class="cline-any cline-neutral"> </span>
|
|
466
530
|
<span class="cline-any cline-neutral"> </span>
|
|
467
|
-
<span class="cline-any cline-yes">
|
|
468
|
-
<span class="cline-any cline-yes">
|
|
531
|
+
<span class="cline-any cline-yes">55x</span>
|
|
532
|
+
<span class="cline-any cline-yes">55x</span>
|
|
469
533
|
<span class="cline-any cline-neutral"> </span>
|
|
470
|
-
<span class="cline-any cline-yes">
|
|
471
|
-
<span class="cline-any cline-yes">
|
|
472
|
-
<span class="cline-any cline-yes">
|
|
534
|
+
<span class="cline-any cline-yes">55x</span>
|
|
535
|
+
<span class="cline-any cline-yes">55x</span>
|
|
536
|
+
<span class="cline-any cline-yes">55x</span>
|
|
473
537
|
<span class="cline-any cline-neutral"> </span>
|
|
474
|
-
<span class="cline-any cline-yes">
|
|
475
|
-
<span class="cline-any cline-yes">
|
|
538
|
+
<span class="cline-any cline-yes">55x</span>
|
|
539
|
+
<span class="cline-any cline-yes">77x</span>
|
|
476
540
|
<span class="cline-any cline-neutral"> </span>
|
|
477
541
|
<span class="cline-any cline-neutral"> </span>
|
|
478
|
-
<span class="cline-any cline-yes">
|
|
479
|
-
<span class="cline-any cline-yes">
|
|
542
|
+
<span class="cline-any cline-yes">55x</span>
|
|
543
|
+
<span class="cline-any cline-yes">55x</span>
|
|
480
544
|
<span class="cline-any cline-neutral"> </span>
|
|
481
545
|
<span class="cline-any cline-neutral"> </span>
|
|
482
546
|
<span class="cline-any cline-neutral"> </span>
|
|
483
|
-
<span class="cline-any cline-yes">
|
|
484
|
-
<span class="cline-any cline-yes">
|
|
547
|
+
<span class="cline-any cline-yes">18x</span>
|
|
548
|
+
<span class="cline-any cline-yes">18x</span>
|
|
485
549
|
<span class="cline-any cline-neutral"> </span>
|
|
486
|
-
<span class="cline-any cline-yes">
|
|
487
|
-
<span class="cline-any cline-yes">
|
|
550
|
+
<span class="cline-any cline-yes">18x</span>
|
|
551
|
+
<span class="cline-any cline-yes">18x</span>
|
|
488
552
|
<span class="cline-any cline-neutral"> </span>
|
|
489
553
|
<span class="cline-any cline-neutral"> </span>
|
|
490
|
-
<span class="cline-any cline-yes">
|
|
491
|
-
<span class="cline-any cline-yes">
|
|
492
|
-
<span class="cline-any cline-yes">
|
|
493
|
-
<span class="cline-any cline-yes">
|
|
554
|
+
<span class="cline-any cline-yes">32x</span>
|
|
555
|
+
<span class="cline-any cline-yes">18x</span>
|
|
556
|
+
<span class="cline-any cline-yes">18x</span>
|
|
557
|
+
<span class="cline-any cline-yes">29x</span>
|
|
494
558
|
<span class="cline-any cline-neutral"> </span>
|
|
495
|
-
<span class="cline-any cline-yes">
|
|
496
|
-
<span class="cline-any cline-yes">
|
|
559
|
+
<span class="cline-any cline-yes">18x</span>
|
|
560
|
+
<span class="cline-any cline-yes">18x</span>
|
|
497
561
|
<span class="cline-any cline-neutral"> </span>
|
|
498
562
|
<span class="cline-any cline-neutral"> </span>
|
|
499
563
|
<span class="cline-any cline-neutral"> </span>
|
|
500
|
-
<span class="cline-any cline-yes">
|
|
501
|
-
<span class="cline-any cline-yes">
|
|
502
|
-
<span class="cline-any cline-yes">16x</span>
|
|
503
|
-
<span class="cline-any cline-yes">16x</span>
|
|
564
|
+
<span class="cline-any cline-yes">32x</span>
|
|
565
|
+
<span class="cline-any cline-yes">18x</span>
|
|
504
566
|
<span class="cline-any cline-yes">18x</span>
|
|
567
|
+
<span class="cline-any cline-yes">18x</span>
|
|
568
|
+
<span class="cline-any cline-yes">21x</span>
|
|
505
569
|
<span class="cline-any cline-neutral"> </span>
|
|
506
|
-
<span class="cline-any cline-yes">
|
|
570
|
+
<span class="cline-any cline-yes">18x</span>
|
|
507
571
|
<span class="cline-any cline-neutral"> </span>
|
|
508
|
-
<span class="cline-any cline-yes">
|
|
572
|
+
<span class="cline-any cline-yes">18x</span>
|
|
509
573
|
<span class="cline-any cline-neutral"> </span>
|
|
510
574
|
<span class="cline-any cline-neutral"> </span>
|
|
511
575
|
<span class="cline-any cline-neutral"> </span>
|
|
512
576
|
<span class="cline-any cline-neutral"> </span>
|
|
513
577
|
<span class="cline-any cline-neutral"> </span>
|
|
514
|
-
<span class="cline-any cline-yes">
|
|
515
|
-
<span class="cline-any cline-yes">
|
|
516
|
-
<span class="cline-any cline-yes">
|
|
517
|
-
<span class="cline-any cline-yes">
|
|
518
|
-
<span class="cline-any cline-yes">
|
|
519
|
-
<span class="cline-any cline-yes">
|
|
520
|
-
<span class="cline-any cline-yes">
|
|
521
|
-
<span class="cline-any cline-yes">
|
|
578
|
+
<span class="cline-any cline-yes">106x</span>
|
|
579
|
+
<span class="cline-any cline-yes">106x</span>
|
|
580
|
+
<span class="cline-any cline-yes">106x</span>
|
|
581
|
+
<span class="cline-any cline-yes">106x</span>
|
|
582
|
+
<span class="cline-any cline-yes">106x</span>
|
|
583
|
+
<span class="cline-any cline-yes">106x</span>
|
|
584
|
+
<span class="cline-any cline-yes">106x</span>
|
|
585
|
+
<span class="cline-any cline-yes">106x</span>
|
|
522
586
|
<span class="cline-any cline-no"> </span>
|
|
523
587
|
<span class="cline-any cline-neutral"> </span>
|
|
524
|
-
<span class="cline-any cline-yes">
|
|
588
|
+
<span class="cline-any cline-yes">106x</span>
|
|
525
589
|
<span class="cline-any cline-neutral"> </span>
|
|
526
590
|
<span class="cline-any cline-neutral"> </span>
|
|
527
591
|
<span class="cline-any cline-neutral"> </span>
|
|
528
|
-
<span class="cline-any cline-yes">
|
|
529
|
-
<span class="cline-any cline-yes">
|
|
530
|
-
<span class="cline-any cline-yes">
|
|
531
|
-
<span class="cline-any cline-yes">
|
|
532
|
-
<span class="cline-any cline-yes">
|
|
533
|
-
<span class="cline-any cline-yes">
|
|
534
|
-
<span class="cline-any cline-yes">
|
|
535
|
-
<span class="cline-any cline-yes">
|
|
592
|
+
<span class="cline-any cline-yes">21x</span>
|
|
593
|
+
<span class="cline-any cline-yes">21x</span>
|
|
594
|
+
<span class="cline-any cline-yes">21x</span>
|
|
595
|
+
<span class="cline-any cline-yes">21x</span>
|
|
596
|
+
<span class="cline-any cline-yes">21x</span>
|
|
597
|
+
<span class="cline-any cline-yes">21x</span>
|
|
598
|
+
<span class="cline-any cline-yes">21x</span>
|
|
599
|
+
<span class="cline-any cline-yes">21x</span>
|
|
536
600
|
<span class="cline-any cline-no"> </span>
|
|
537
601
|
<span class="cline-any cline-neutral"> </span>
|
|
538
|
-
<span class="cline-any cline-yes">
|
|
602
|
+
<span class="cline-any cline-yes">21x</span>
|
|
539
603
|
<span class="cline-any cline-neutral"> </span>
|
|
540
604
|
<span class="cline-any cline-neutral"> </span>
|
|
541
605
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -663,9 +727,11 @@ export function generatePlainTypes(root: ContractRootNode, context?: ContractCod
|
|
|
663
727
|
}
|
|
664
728
|
<span class="cstat-no" title="statement not covered" > lines.push('');</span>
|
|
665
729
|
}
|
|
730
|
+
|
|
731
|
+
const modelMap = new Map(root.models.map(m => [m.name, m]));
|
|
666
732
|
|
|
667
733
|
for (const model of topoSortModels(root.models)) {
|
|
668
|
-
lines.push(...generateModel(model, context?.currentOutPath, allModelsWithInput, allModelsWithOutput));
|
|
734
|
+
lines.push(...generateModel(model, context?.currentOutPath, allModelsWithInput, allModelsWithOutput, modelMap));
|
|
669
735
|
lines.push('');
|
|
670
736
|
}
|
|
671
737
|
|
|
@@ -674,7 +740,13 @@ export function generatePlainTypes(root: ContractRootNode, context?: ContractCod
|
|
|
674
740
|
|
|
675
741
|
// ─── Model ─────────────────────────────────────────────────────────────────
|
|
676
742
|
|
|
677
|
-
function generateModel(
|
|
743
|
+
function generateModel(
|
|
744
|
+
model: ModelNode,
|
|
745
|
+
outPath?: string,
|
|
746
|
+
modelsWithInput?: Set<string>,
|
|
747
|
+
modelsWithOutput?: Set<string>,
|
|
748
|
+
modelMap?: Map<string, ModelNode>,
|
|
749
|
+
): string[] {
|
|
678
750
|
// Type alias: Name : typeExpression
|
|
679
751
|
if (model.type) {
|
|
680
752
|
return generateTypeAlias(model, outPath, modelsWithInput, modelsWithOutput);
|
|
@@ -684,7 +756,7 @@ function generateModel(model: ModelNode, outPath?: string, modelsWithInput?: Set
|
|
|
684
756
|
// transitively references models that have Input variants (captured in modelsWithInput).
|
|
685
757
|
const needsInputSplit = model.fields.some(f => f.visibility !== 'normal') || (modelsWithInput?.has(model.name) ?? <span class="branch-2 cbranch-no" title="branch not covered" >false</span>);
|
|
686
758
|
|
|
687
|
-
const lines = needsInputSplit ? generateVisibilityModel(model, outPath, modelsWithInput) : generateSimpleModel(model, outPath);
|
|
759
|
+
const lines = needsInputSplit ? generateVisibilityModel(model, outPath, modelsWithInput, modelMap) : generateSimpleModel(model, outPath, modelMap);
|
|
688
760
|
|
|
689
761
|
if (modelsWithOutput?.has(model.name)) {
|
|
690
762
|
lines.push('');
|
|
@@ -693,6 +765,30 @@ function generateModel(model: ModelNode, outPath?: string, modelsWithInput?: Set
|
|
|
693
765
|
return lines;
|
|
694
766
|
}
|
|
695
767
|
|
|
768
|
+
/** Recursively collect every field name defined on `bases` and their ancestors. Used to detect
|
|
769
|
+
* fields that the child re-declares without an explicit `override` keyword — those still need an
|
|
770
|
+
* `Omit<Base, …>` wrap, otherwise the child's narrower/incompatible declaration collides with the
|
|
771
|
+
* inherited one. */
|
|
772
|
+
function collectInheritedFieldNames(bases: string[], modelMap: Map<string, ModelNode>): Set<string> {
|
|
773
|
+
const result = new Set<string>();
|
|
774
|
+
const visit = (name: string): void => {
|
|
775
|
+
const m = modelMap.get(name);
|
|
776
|
+
if (!m || m.type) return;
|
|
777
|
+
for (const f of m.fields) result.add(f.name);
|
|
778
|
+
for (const b of m.bases ?? []) visit(b);
|
|
779
|
+
};
|
|
780
|
+
for (const b of bases) visit(b);
|
|
781
|
+
return result;
|
|
782
|
+
}
|
|
783
|
+
|
|
784
|
+
/** Names of fields the child declaration overrides — explicit `override` plus any field whose
|
|
785
|
+
* name shadows an inherited one. The latter catches single-base redeclarations that omit the
|
|
786
|
+
* `override` keyword (e.g. narrowing `kind: BusinessRoleKind` → `kind: 'employee'`). */
|
|
787
|
+
function computeOverrideNames(model: ModelNode, modelMap?: Map<string, ModelNode>): string[] {
|
|
788
|
+
const inherited = modelMap ? collectInheritedFieldNames(model.bases ?? [], modelMap) : <span class="branch-1 cbranch-no" title="branch not covered" >new Set<string>();</span>
|
|
789
|
+
return model.fields.filter(f => f.override || inherited.has(f.name)).map(f => f.name);
|
|
790
|
+
}
|
|
791
|
+
|
|
696
792
|
function generateComments(model: ModelNode, outPath?: string): string[] {
|
|
697
793
|
const lines: string[] = [];
|
|
698
794
|
lines.push('/**');
|
|
@@ -722,11 +818,11 @@ function generateTypeAlias(model: ModelNode, outPath?: string, modelsWithInput?:
|
|
|
722
818
|
return lines;
|
|
723
819
|
}
|
|
724
820
|
|
|
725
|
-
/** Build the `extends` clause for a
|
|
726
|
-
*
|
|
727
|
-
* subclass can legally redeclare
|
|
728
|
-
* tolerates omit keys that don't appear on the base,
|
|
729
|
-
*
|
|
821
|
+
/** Build the `extends` clause for a model.
|
|
822
|
+
* Each entry in `overrideNames` is wrapped in `Omit<Base, 'name1' | 'name2'>` per base so the
|
|
823
|
+
* subclass can legally redeclare those fields with new (possibly incompatible) types.
|
|
824
|
+
* TypeScript's `Omit<T, K extends keyof any>` tolerates omit keys that don't appear on the base,
|
|
825
|
+
* so we apply the same omit list to every base without per-base field-set lookup. */
|
|
730
826
|
function buildExtendsClause(bases: string[], overrideNames: string[], baseNameResolver: (b: string) => string): string {
|
|
731
827
|
if (bases.length === 0) return '';
|
|
732
828
|
if (overrideNames.length === 0) return ` extends ${bases.map(baseNameResolver).join(', ')}`;
|
|
@@ -735,12 +831,12 @@ function buildExtendsClause(bases: string[], overrideNames: string[], baseNameRe
|
|
|
735
831
|
return ` extends ${wrapped.join(', ')}`;
|
|
736
832
|
}
|
|
737
833
|
|
|
738
|
-
function generateSimpleModel(model: ModelNode, outPath?: string): string[] {
|
|
834
|
+
function generateSimpleModel(model: ModelNode, outPath?: string, modelMap?: Map<string, ModelNode>): string[] {
|
|
739
835
|
const lines: string[] = [];
|
|
740
836
|
lines.push(...generateComments(model, outPath));
|
|
741
837
|
|
|
742
838
|
const bases = model.bases ?? [];
|
|
743
|
-
const overrideNames = model
|
|
839
|
+
const overrideNames = computeOverrideNames(model, modelMap);
|
|
744
840
|
lines.push(`export interface ${model.name}${buildExtendsClause(bases, overrideNames, b => b)} {`);
|
|
745
841
|
|
|
746
842
|
for (const field of model.fields) {
|
|
@@ -751,12 +847,12 @@ function generateSimpleModel(model: ModelNode, outPath?: string): string[] {
|
|
|
751
847
|
return lines;
|
|
752
848
|
}
|
|
753
849
|
|
|
754
|
-
function generateVisibilityModel(model: ModelNode, outPath?: string, modelsWithInput?: Set<string>): string[] {
|
|
850
|
+
function generateVisibilityModel(model: ModelNode, outPath?: string, modelsWithInput?: Set<string>, modelMap?: Map<string, ModelNode>): string[] {
|
|
755
851
|
const lines: string[] = [];
|
|
756
852
|
lines.push(...generateComments(model, outPath));
|
|
757
853
|
|
|
758
854
|
const bases = model.bases ?? [];
|
|
759
|
-
const overrideNames = model
|
|
855
|
+
const overrideNames = computeOverrideNames(model, modelMap);
|
|
760
856
|
|
|
761
857
|
// Read type — omit writeonly fields
|
|
762
858
|
const readFields = model.fields.filter(f => f.visibility !== 'writeonly');
|
|
@@ -886,7 +982,7 @@ function renderOutputField(field: FieldNode, outputCase: 'camel' | 'snake' | 'pa
|
|
|
886
982
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
887
983
|
Code coverage generated by
|
|
888
984
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
889
|
-
at 2026-05-
|
|
985
|
+
at 2026-05-05T15:55:20.433Z
|
|
890
986
|
</div>
|
|
891
987
|
<script src="../prettify.js"></script>
|
|
892
988
|
<script>
|
|
@@ -2782,7 +2782,7 @@ export function generateSdkAggregator(clients: SdkClientInfo[], sdkOptionsImport
|
|
|
2782
2782
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
2783
2783
|
Code coverage generated by
|
|
2784
2784
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
2785
|
-
at 2026-05-
|
|
2785
|
+
at 2026-05-05T15:55:20.433Z
|
|
2786
2786
|
</div>
|
|
2787
2787
|
<script src="../prettify.js"></script>
|
|
2788
2788
|
<script>
|
package/coverage/src/index.html
CHANGED
|
@@ -23,30 +23,30 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">77.
|
|
26
|
+
<span class="strong">77.54% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>1685/2173</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">74.08% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>1089/1470</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">81.
|
|
40
|
+
<span class="strong">81.92% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>272/332</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">79.
|
|
47
|
+
<span class="strong">79.4% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>1465/1845</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -80,17 +80,17 @@
|
|
|
80
80
|
</thead>
|
|
81
81
|
<tbody><tr>
|
|
82
82
|
<td class="file high" data-value="codegen-contract.ts"><a href="codegen-contract.ts.html">codegen-contract.ts</a></td>
|
|
83
|
-
<td data-value="87.
|
|
83
|
+
<td data-value="87.83" class="pic high">
|
|
84
84
|
<div class="chart"><div class="cover-fill" style="width: 87%"></div><div class="cover-empty" style="width: 13%"></div></div>
|
|
85
85
|
</td>
|
|
86
|
-
<td data-value="87.
|
|
87
|
-
<td data-value="
|
|
88
|
-
<td data-value="
|
|
89
|
-
<td data-value="
|
|
90
|
-
<td data-value="
|
|
91
|
-
<td data-value="
|
|
92
|
-
<td data-value="88.
|
|
93
|
-
<td data-value="
|
|
86
|
+
<td data-value="87.83" class="pct high">87.83%</td>
|
|
87
|
+
<td data-value="674" class="abs high">592/674</td>
|
|
88
|
+
<td data-value="82.12" class="pct high">82.12%</td>
|
|
89
|
+
<td data-value="470" class="abs high">386/470</td>
|
|
90
|
+
<td data-value="90.08" class="pct high">90.08%</td>
|
|
91
|
+
<td data-value="121" class="abs high">109/121</td>
|
|
92
|
+
<td data-value="88.96" class="pct high">88.96%</td>
|
|
93
|
+
<td data-value="553" class="abs high">492/553</td>
|
|
94
94
|
</tr>
|
|
95
95
|
|
|
96
96
|
<tr>
|
|
@@ -110,17 +110,17 @@
|
|
|
110
110
|
|
|
111
111
|
<tr>
|
|
112
112
|
<td class="file high" data-value="codegen-plain-types.ts"><a href="codegen-plain-types.ts.html">codegen-plain-types.ts</a></td>
|
|
113
|
-
<td data-value="
|
|
114
|
-
<div class="chart"><div class="cover-fill" style="width:
|
|
113
|
+
<td data-value="89.08" class="pic high">
|
|
114
|
+
<div class="chart"><div class="cover-fill" style="width: 89%"></div><div class="cover-empty" style="width: 11%"></div></div>
|
|
115
115
|
</td>
|
|
116
|
-
<td data-value="
|
|
117
|
-
<td data-value="
|
|
118
|
-
<td data-value="
|
|
119
|
-
<td data-value="
|
|
120
|
-
<td data-value="
|
|
121
|
-
<td data-value="
|
|
122
|
-
<td data-value="
|
|
123
|
-
<td data-value="
|
|
116
|
+
<td data-value="89.08" class="pct high">89.08%</td>
|
|
117
|
+
<td data-value="174" class="abs high">155/174</td>
|
|
118
|
+
<td data-value="78.37" class="pct medium">78.37%</td>
|
|
119
|
+
<td data-value="111" class="abs medium">87/111</td>
|
|
120
|
+
<td data-value="96.66" class="pct high">96.66%</td>
|
|
121
|
+
<td data-value="30" class="abs high">29/30</td>
|
|
122
|
+
<td data-value="92.3" class="pct high">92.3%</td>
|
|
123
|
+
<td data-value="143" class="abs high">132/143</td>
|
|
124
124
|
</tr>
|
|
125
125
|
|
|
126
126
|
<tr>
|
|
@@ -191,7 +191,7 @@
|
|
|
191
191
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
192
192
|
Code coverage generated by
|
|
193
193
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
194
|
-
at 2026-05-
|
|
194
|
+
at 2026-05-05T15:55:20.433Z
|
|
195
195
|
</div>
|
|
196
196
|
<script src="../prettify.js"></script>
|
|
197
197
|
<script>
|
|
@@ -1345,7 +1345,7 @@ export function createTypescriptPlugin(config: TypescriptPluginConfig, rootDir:
|
|
|
1345
1345
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
1346
1346
|
Code coverage generated by
|
|
1347
1347
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
1348
|
-
at 2026-05-
|
|
1348
|
+
at 2026-05-05T15:55:20.433Z
|
|
1349
1349
|
</div>
|
|
1350
1350
|
<script src="../prettify.js"></script>
|
|
1351
1351
|
<script>
|