@contractkit/plugin-typescript 0.26.0 → 0.27.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.
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">41.04% </span>
26
+ <span class="strong">68.65% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>55/134</span>
28
+ <span class='fraction'>92/134</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">31.32% </span>
33
+ <span class="strong">46.98% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>26/83</span>
35
+ <span class='fraction'>39/83</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">78.57% </span>
40
+ <span class="strong">100% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>11/14</span>
42
+ <span class='fraction'>14/14</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">42.47% </span>
47
+ <span class="strong">72.56% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>48/113</span>
49
+ <span class='fraction'>82/113</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 low'></div>
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>
@@ -290,28 +290,28 @@
290
290
  <span class="cline-any cline-yes">1x</span>
291
291
  <span class="cline-any cline-neutral">&nbsp;</span>
292
292
  <span class="cline-any cline-neutral">&nbsp;</span>
293
- <span class="cline-any cline-yes">22x</span>
293
+ <span class="cline-any cline-yes">28x</span>
294
294
  <span class="cline-any cline-neutral">&nbsp;</span>
295
295
  <span class="cline-any cline-neutral">&nbsp;</span>
296
296
  <span class="cline-any cline-neutral">&nbsp;</span>
297
- <span class="cline-any cline-yes">15x</span>
298
- <span class="cline-any cline-yes">15x</span>
297
+ <span class="cline-any cline-yes">21x</span>
298
+ <span class="cline-any cline-yes">21x</span>
299
299
  <span class="cline-any cline-neutral">&nbsp;</span>
300
300
  <span class="cline-any cline-neutral">&nbsp;</span>
301
301
  <span class="cline-any cline-neutral">&nbsp;</span>
302
- <span class="cline-any cline-yes">18x</span>
303
302
  <span class="cline-any cline-yes">21x</span>
304
- <span class="cline-any cline-yes">18x</span>
305
- <span class="cline-any cline-yes">18x</span>
306
- <span class="cline-any cline-yes">18x</span>
303
+ <span class="cline-any cline-yes">27x</span>
304
+ <span class="cline-any cline-yes">21x</span>
307
305
  <span class="cline-any cline-yes">21x</span>
308
- <span class="cline-any cline-yes">63x</span>
306
+ <span class="cline-any cline-yes">21x</span>
307
+ <span class="cline-any cline-yes">27x</span>
308
+ <span class="cline-any cline-yes">81x</span>
309
309
  <span class="cline-any cline-no">&nbsp;</span>
310
310
  <span class="cline-any cline-no">&nbsp;</span>
311
311
  <span class="cline-any cline-neutral">&nbsp;</span>
312
312
  <span class="cline-any cline-neutral">&nbsp;</span>
313
313
  <span class="cline-any cline-neutral">&nbsp;</span>
314
- <span class="cline-any cline-yes">18x</span>
314
+ <span class="cline-any cline-yes">21x</span>
315
315
  <span class="cline-any cline-neutral">&nbsp;</span>
316
316
  <span class="cline-any cline-neutral">&nbsp;</span>
317
317
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -362,16 +362,16 @@
362
362
  <span class="cline-any cline-neutral">&nbsp;</span>
363
363
  <span class="cline-any cline-neutral">&nbsp;</span>
364
364
  <span class="cline-any cline-neutral">&nbsp;</span>
365
- <span class="cline-any cline-yes">5x</span>
366
- <span class="cline-any cline-yes">5x</span>
367
- <span class="cline-any cline-yes">5x</span>
368
- <span class="cline-any cline-yes">5x</span>
369
- <span class="cline-any cline-yes">5x</span>
370
- <span class="cline-any cline-yes">5x</span>
365
+ <span class="cline-any cline-yes">8x</span>
366
+ <span class="cline-any cline-yes">8x</span>
367
+ <span class="cline-any cline-yes">8x</span>
368
+ <span class="cline-any cline-yes">8x</span>
369
+ <span class="cline-any cline-yes">8x</span>
370
+ <span class="cline-any cline-yes">8x</span>
371
371
  <span class="cline-any cline-neutral">&nbsp;</span>
372
- <span class="cline-any cline-yes">5x</span>
373
- <span class="cline-any cline-yes">5x</span>
374
- <span class="cline-any cline-yes">5x</span>
372
+ <span class="cline-any cline-yes">8x</span>
373
+ <span class="cline-any cline-yes">8x</span>
374
+ <span class="cline-any cline-yes">8x</span>
375
375
  <span class="cline-any cline-no">&nbsp;</span>
376
376
  <span class="cline-any cline-neutral">&nbsp;</span>
377
377
  <span class="cline-any cline-no">&nbsp;</span>
@@ -420,16 +420,16 @@
420
420
  <span class="cline-any cline-neutral">&nbsp;</span>
421
421
  <span class="cline-any cline-neutral">&nbsp;</span>
422
422
  <span class="cline-any cline-neutral">&nbsp;</span>
423
- <span class="cline-any cline-no">&nbsp;</span>
424
- <span class="cline-any cline-no">&nbsp;</span>
425
- <span class="cline-any cline-no">&nbsp;</span>
426
- <span class="cline-any cline-no">&nbsp;</span>
427
- <span class="cline-any cline-no">&nbsp;</span>
428
- <span class="cline-any cline-no">&nbsp;</span>
423
+ <span class="cline-any cline-yes">3x</span>
424
+ <span class="cline-any cline-yes">3x</span>
425
+ <span class="cline-any cline-yes">3x</span>
426
+ <span class="cline-any cline-yes">3x</span>
427
+ <span class="cline-any cline-yes">3x</span>
428
+ <span class="cline-any cline-yes">3x</span>
429
429
  <span class="cline-any cline-neutral">&nbsp;</span>
430
- <span class="cline-any cline-no">&nbsp;</span>
431
- <span class="cline-any cline-no">&nbsp;</span>
432
- <span class="cline-any cline-no">&nbsp;</span>
430
+ <span class="cline-any cline-yes">3x</span>
431
+ <span class="cline-any cline-yes">3x</span>
432
+ <span class="cline-any cline-yes">3x</span>
433
433
  <span class="cline-any cline-no">&nbsp;</span>
434
434
  <span class="cline-any cline-neutral">&nbsp;</span>
435
435
  <span class="cline-any cline-no">&nbsp;</span>
@@ -437,22 +437,22 @@
437
437
  <span class="cline-any cline-neutral">&nbsp;</span>
438
438
  <span class="cline-any cline-neutral">&nbsp;</span>
439
439
  <span class="cline-any cline-neutral">&nbsp;</span>
440
- <span class="cline-any cline-yes">4x</span>
441
- <span class="cline-any cline-yes">4x</span>
442
- <span class="cline-any cline-no">&nbsp;</span>
443
- <span class="cline-any cline-no">&nbsp;</span>
444
- <span class="cline-any cline-no">&nbsp;</span>
445
- <span class="cline-any cline-no">&nbsp;</span>
440
+ <span class="cline-any cline-yes">7x</span>
441
+ <span class="cline-any cline-yes">7x</span>
442
+ <span class="cline-any cline-yes">3x</span>
443
+ <span class="cline-any cline-yes">3x</span>
444
+ <span class="cline-any cline-yes">3x</span>
445
+ <span class="cline-any cline-yes">3x</span>
446
446
  <span class="cline-any cline-neutral">&nbsp;</span>
447
- <span class="cline-any cline-yes">4x</span>
448
- <span class="cline-any cline-yes">4x</span>
449
- <span class="cline-any cline-no">&nbsp;</span>
450
- <span class="cline-any cline-no">&nbsp;</span>
447
+ <span class="cline-any cline-yes">7x</span>
448
+ <span class="cline-any cline-yes">7x</span>
449
+ <span class="cline-any cline-yes">3x</span>
450
+ <span class="cline-any cline-yes">3x</span>
451
451
  <span class="cline-any cline-neutral">&nbsp;</span>
452
452
  <span class="cline-any cline-neutral">&nbsp;</span>
453
- <span class="cline-any cline-no">&nbsp;</span>
453
+ <span class="cline-any cline-yes">3x</span>
454
454
  <span class="cline-any cline-neutral">&nbsp;</span>
455
- <span class="cline-any cline-yes">4x</span>
455
+ <span class="cline-any cline-yes">7x</span>
456
456
  <span class="cline-any cline-neutral">&nbsp;</span>
457
457
  <span class="cline-any cline-neutral">&nbsp;</span>
458
458
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -461,26 +461,26 @@
461
461
  <span class="cline-any cline-neutral">&nbsp;</span>
462
462
  <span class="cline-any cline-neutral">&nbsp;</span>
463
463
  <span class="cline-any cline-neutral">&nbsp;</span>
464
- <span class="cline-any cline-no">&nbsp;</span>
465
- <span class="cline-any cline-no">&nbsp;</span>
466
- <span class="cline-any cline-no">&nbsp;</span>
467
- <span class="cline-any cline-no">&nbsp;</span>
464
+ <span class="cline-any cline-yes">3x</span>
465
+ <span class="cline-any cline-yes">3x</span>
466
+ <span class="cline-any cline-yes">3x</span>
467
+ <span class="cline-any cline-yes">3x</span>
468
468
  <span class="cline-any cline-neutral">&nbsp;</span>
469
- <span class="cline-any cline-no">&nbsp;</span>
470
- <span class="cline-any cline-no">&nbsp;</span>
471
- <span class="cline-any cline-no">&nbsp;</span>
472
- <span class="cline-any cline-no">&nbsp;</span>
473
- <span class="cline-any cline-no">&nbsp;</span>
474
- <span class="cline-any cline-no">&nbsp;</span>
475
- <span class="cline-any cline-no">&nbsp;</span>
476
- <span class="cline-any cline-no">&nbsp;</span>
469
+ <span class="cline-any cline-yes">3x</span>
470
+ <span class="cline-any cline-yes">3x</span>
471
+ <span class="cline-any cline-yes">3x</span>
472
+ <span class="cline-any cline-yes">3x</span>
473
+ <span class="cline-any cline-yes">3x</span>
474
+ <span class="cline-any cline-yes">3x</span>
475
+ <span class="cline-any cline-yes">5x</span>
476
+ <span class="cline-any cline-yes">3x</span>
477
477
  <span class="cline-any cline-neutral">&nbsp;</span>
478
478
  <span class="cline-any cline-neutral">&nbsp;</span>
479
- <span class="cline-any cline-no">&nbsp;</span>
480
- <span class="cline-any cline-no">&nbsp;</span>
481
- <span class="cline-any cline-no">&nbsp;</span>
482
- <span class="cline-any cline-no">&nbsp;</span>
483
- <span class="cline-any cline-no">&nbsp;</span>
479
+ <span class="cline-any cline-yes">3x</span>
480
+ <span class="cline-any cline-yes">3x</span>
481
+ <span class="cline-any cline-yes">3x</span>
482
+ <span class="cline-any cline-yes">3x</span>
483
+ <span class="cline-any cline-yes">3x</span>
484
484
  <span class="cline-any cline-no">&nbsp;</span>
485
485
  <span class="cline-any cline-no">&nbsp;</span>
486
486
  <span class="cline-any cline-no">&nbsp;</span>
@@ -501,7 +501,7 @@
501
501
  <span class="cline-any cline-neutral">&nbsp;</span>
502
502
  <span class="cline-any cline-neutral">&nbsp;</span>
503
503
  <span class="cline-any cline-neutral">&nbsp;</span>
504
- <span class="cline-any cline-no">&nbsp;</span>
504
+ <span class="cline-any cline-yes">3x</span>
505
505
  <span class="cline-any cline-neutral">&nbsp;</span>
506
506
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { resolve, join, relative, dirname } from 'node:path';
507
507
  import type { ContractRootNode, OpRootNode } from '@contractkit/core';
@@ -633,23 +633,23 @@ export function computeSdkAreaClientOutPath(area: string, rootDir: string, clien
633
633
  <span class="cstat-no" title="statement not covered" > return join(baseOutDir, `${filename}.client.ts`);</span>
634
634
  }
635
635
  &nbsp;
636
- export function <span class="fstat-no" title="function not covered" >computeSdkTypeOutPath(</span>
636
+ export function computeSdkTypeOutPath(
637
637
  filePath: string,
638
638
  rootDir: string,
639
639
  typeOutput: string,
640
640
  commonRoot: string,
641
- meta: Record&lt;string, string&gt; = <span class="branch-0 cbranch-no" title="branch not covered" >{},</span>
641
+ meta: Record&lt;string, string&gt; = {},
642
642
  ): string | null {
643
- <span class="cstat-no" title="statement not covered" > if (!filePath.endsWith('.ck')) <span class="cstat-no" title="statement not covered" >return null;</span></span>
644
- const baseName = <span class="cstat-no" title="statement not covered" >filePath.split('/').pop()!;</span>
645
- const defaultOutName = <span class="cstat-no" title="statement not covered" >baseName.replace(/\.ck$/, '.ts');</span>
646
- const <span class="cstat-no" title="statement not covered" >baseOutDir = resolve(rootDir);</span>
647
- const <span class="cstat-no" title="statement not covered" >relDir = relative(commonRoot, dirname(filePath));</span>
648
- const filename = <span class="cstat-no" title="statement not covered" >baseName.replace(/\.ck$/, '');</span>
643
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (!filePath.endsWith('.ck')) <span class="cstat-no" title="statement not covered" >return null;</span>
644
+ const baseName = filePath.split('/').pop()!;
645
+ const defaultOutName = baseName.replace(/\.ck$/, '.ts');
646
+ const baseOutDir = resolve(rootDir);
647
+ const relDir = relative(commonRoot, dirname(filePath));
648
+ const filename = baseName.replace(/\.ck$/, '');
649
649
  &nbsp;
650
- <span class="cstat-no" title="statement not covered" > if (TEMPLATE_VAR_RE.test(typeOutput)) {</span>
651
- const resolved = <span class="cstat-no" title="statement not covered" >resolveTemplate(typeOutput, { filename, dir: relDir, ext: 'ck', ...meta });</span>
652
- <span class="cstat-no" title="statement not covered" > if (includesFilename(resolved)) <span class="cstat-no" title="statement not covered" >return join(baseOutDir, resolved);</span></span>
650
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (TEMPLATE_VAR_RE.test(typeOutput)) {
651
+ const resolved = resolveTemplate(typeOutput, { filename, dir: relDir, ext: 'ck', ...meta });
652
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (includesFilename(resolved)) return join(baseOutDir, resolved);
653
653
  <span class="cstat-no" title="statement not covered" > return join(baseOutDir, resolved, defaultOutName);</span>
654
654
  }
655
655
  <span class="cstat-no" title="statement not covered" > if (includesFilename(typeOutput)) <span class="cstat-no" title="statement not covered" >return join(baseOutDir, typeOutput);</span></span>
@@ -659,48 +659,48 @@ export function <span class="fstat-no" title="function not covered" >computeSdkT
659
659
  export function generateBarrelFiles(contractPaths: string[]): { outPath: string; content: string }[] {
660
660
  const byDir = new Map&lt;string, string[]&gt;();
661
661
  for (const outPath of contractPaths) {
662
- const <span class="cstat-no" title="statement not covered" >dir = dirname(outPath);</span>
663
- const group = <span class="cstat-no" title="statement not covered" >byDir.get(dir) ?? [];</span>
664
- <span class="cstat-no" title="statement not covered" > group.push(outPath);</span>
665
- <span class="cstat-no" title="statement not covered" > byDir.set(dir, group);</span>
662
+ const dir = dirname(outPath);
663
+ const group = byDir.get(dir) ?? [];
664
+ group.push(outPath);
665
+ byDir.set(dir, group);
666
666
  }
667
667
  const results: { outPath: string; content: string }[] = [];
668
668
  for (const [dir, files] of byDir) {
669
- const exports = <span class="cstat-no" title="statement not covered" >files</span>
670
- .map(<span class="fstat-no" title="function not covered" >f =&gt; <span class="cstat-no" title="statement not covered" >`</span>export * from './${f.split('/').pop()!.replace(/\.ts$/, '.js')}';`)</span>
669
+ const exports = files
670
+ .map(f =&gt; `export * from './${f.split('/').pop()!.replace(/\.ts$/, '.js')}';`)
671
671
  .sort()
672
672
  .join('\n');
673
- <span class="cstat-no" title="statement not covered" > results.push({ outPath: join(dir, 'index.ts'), content: `// Auto-generated barrel file\n${exports}\n` });</span>
673
+ results.push({ outPath: join(dir, 'index.ts'), content: `// Auto-generated barrel file\n${exports}\n` });
674
674
  }
675
675
  return results;
676
676
  }
677
677
  &nbsp;
678
- export function <span class="fstat-no" title="function not covered" >computePubliclyReachableTypes(</span>
678
+ export function computePubliclyReachableTypes(
679
679
  opAsts: OpRootNode[],
680
680
  contractAsts: ContractRootNode[],
681
681
  modelsWithInput: Set&lt;string&gt;,
682
- modelsWithOutput: Set&lt;string&gt; = <span class="branch-0 cbranch-no" title="branch not covered" >new Set(),</span>
682
+ modelsWithOutput: Set&lt;string&gt; = new Set(),
683
683
  ): Set&lt;string&gt; | null {
684
- <span class="cstat-no" title="statement not covered" > if (opAsts.length === 0) <span class="cstat-no" title="statement not covered" >return null;</span></span>
685
- const reachable = <span class="cstat-no" title="statement not covered" >new Set&lt;string&gt;();</span>
686
- <span class="cstat-no" title="statement not covered" > for (const opAst of opAsts) {</span>
687
- <span class="cstat-no" title="statement not covered" > for (const name of collectPublicTypeNames(opAst, modelsWithInput, modelsWithOutput)) <span class="cstat-no" title="statement not covered" >reachable.add(name);</span></span>
684
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (opAsts.length === 0) <span class="cstat-no" title="statement not covered" >return null;</span>
685
+ const reachable = new Set&lt;string&gt;();
686
+ for (const opAst of opAsts) {
687
+ for (const name of collectPublicTypeNames(opAst, modelsWithInput, modelsWithOutput)) reachable.add(name);
688
688
  }
689
- const modelDeps = <span class="cstat-no" title="statement not covered" >new Map&lt;string, Set&lt;string&gt;&gt;();</span>
690
- <span class="cstat-no" title="statement not covered" > for (const contractAst of contractAsts) {</span>
691
- <span class="cstat-no" title="statement not covered" > for (const model of contractAst.models) {</span>
692
- const deps = <span class="cstat-no" title="statement not covered" >new Set&lt;string&gt;();</span>
693
- <span class="cstat-no" title="statement not covered" > if (model.bases) <span class="cstat-no" title="statement not covered" >for (const b of model.bases) <span class="cstat-no" title="statement not covered" >deps.add(b);</span></span></span>
694
- <span class="cstat-no" title="statement not covered" > if (model.type<span class="cstat-no" title="statement not covered" >) collectTypeRefs(model.type, deps);</span></span>
695
- <span class="cstat-no" title="statement not covered" > for (const field of model.fields<span class="cstat-no" title="statement not covered" >) collectTypeRefs(field.type, deps);</span></span>
696
- <span class="cstat-no" title="statement not covered" > modelDeps.set(model.name, deps);</span>
689
+ const modelDeps = new Map&lt;string, Set&lt;string&gt;&gt;();
690
+ for (const contractAst of contractAsts) {
691
+ for (const model of contractAst.models) {
692
+ const deps = new Set&lt;string&gt;();
693
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (model.bases) <span class="cstat-no" title="statement not covered" >for (const b of model.bases) <span class="cstat-no" title="statement not covered" >deps.add(b);</span></span>
694
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (model.type<span class="cstat-no" title="statement not covered" >) collectTypeRefs(model.type, deps);</span>
695
+ for (const field of model.fields) collectTypeRefs(field.type, deps);
696
+ modelDeps.set(model.name, deps);
697
697
  }
698
698
  }
699
- const frontier = <span class="cstat-no" title="statement not covered" >[...reachable];</span>
700
- <span class="cstat-no" title="statement not covered" > while (frontier.length &gt; 0) {</span>
701
- const name = <span class="cstat-no" title="statement not covered" >frontier.pop()!;</span>
702
- const baseName = <span class="cstat-no" title="statement not covered" >name.endsWith('Input') ? name.slice(0, -5) : name.endsWith('Output') ? name.slice(0, -6) : name;</span>
703
- <span class="cstat-no" title="statement not covered" > for (const dep of modelDeps.get(baseName) ?? []) {</span>
699
+ const frontier = [...reachable];
700
+ while (frontier.length &gt; 0) {
701
+ const name = frontier.pop()!;
702
+ const baseName = name.endsWith('Input') ? <span class="branch-0 cbranch-no" title="branch not covered" >name.slice(0, -5) : n</span>ame.endsWith('Output') ? <span class="branch-0 cbranch-no" title="branch not covered" >name.slice(0, -6) : n</span>ame;
703
+ for (const dep of modelDeps.get(baseName) ?? <span class="branch-1 cbranch-no" title="branch not covered" >[])</span> {
704
704
  <span class="cstat-no" title="statement not covered" > if (!reachable.has(dep)) {</span>
705
705
  <span class="cstat-no" title="statement not covered" > reachable.add(dep);</span>
706
706
  <span class="cstat-no" title="statement not covered" > frontier.push(dep);</span>
@@ -721,7 +721,7 @@ export function <span class="fstat-no" title="function not covered" >computePubl
721
721
  }
722
722
  }
723
723
  }
724
- <span class="cstat-no" title="statement not covered" > return reachable;</span>
724
+ return reachable;
725
725
  }
726
726
  &nbsp;</pre></td></tr></table></pre>
727
727
 
@@ -730,7 +730,7 @@ export function <span class="fstat-no" title="function not covered" >computePubl
730
730
  <div class='footer quiet pad2 space-top1 center small'>
731
731
  Code coverage generated by
732
732
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
733
- at 2026-06-12T19:14:46.813Z
733
+ at 2026-06-16T15:55:46.002Z
734
734
  </div>
735
735
  <script src="../prettify.js"></script>
736
736
  <script>
@@ -237,7 +237,7 @@
237
237
  <span class="cline-any cline-yes">5x</span>
238
238
  <span class="cline-any cline-neutral">&nbsp;</span>
239
239
  <span class="cline-any cline-neutral">&nbsp;</span>
240
- <span class="cline-any cline-yes">178x</span>
240
+ <span class="cline-any cline-yes">181x</span>
241
241
  <span class="cline-any cline-neutral">&nbsp;</span>
242
242
  <span class="cline-any cline-neutral">&nbsp;</span>
243
243
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -254,9 +254,9 @@
254
254
  <span class="cline-any cline-neutral">&nbsp;</span>
255
255
  <span class="cline-any cline-neutral">&nbsp;</span>
256
256
  <span class="cline-any cline-neutral">&nbsp;</span>
257
- <span class="cline-any cline-yes">347x</span>
257
+ <span class="cline-any cline-yes">353x</span>
258
258
  <span class="cline-any cline-neutral">&nbsp;</span>
259
- <span class="cline-any cline-yes">170x</span>
259
+ <span class="cline-any cline-yes">173x</span>
260
260
  <span class="cline-any cline-neutral">&nbsp;</span>
261
261
  <span class="cline-any cline-yes">20x</span>
262
262
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -281,7 +281,7 @@
281
281
  <span class="cline-any cline-neutral">&nbsp;</span>
282
282
  <span class="cline-any cline-yes">4x</span>
283
283
  <span class="cline-any cline-neutral">&nbsp;</span>
284
- <span class="cline-any cline-yes">119x</span>
284
+ <span class="cline-any cline-yes">122x</span>
285
285
  <span class="cline-any cline-neutral">&nbsp;</span>
286
286
  <span class="cline-any cline-yes">2x</span>
287
287
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -292,12 +292,12 @@
292
292
  <span class="cline-any cline-neutral">&nbsp;</span>
293
293
  <span class="cline-any cline-neutral">&nbsp;</span>
294
294
  <span class="cline-any cline-neutral">&nbsp;</span>
295
- <span class="cline-any cline-yes">170x</span>
295
+ <span class="cline-any cline-yes">173x</span>
296
296
  <span class="cline-any cline-neutral">&nbsp;</span>
297
297
  <span class="cline-any cline-neutral">&nbsp;</span>
298
298
  <span class="cline-any cline-neutral">&nbsp;</span>
299
299
  <span class="cline-any cline-neutral">&nbsp;</span>
300
- <span class="cline-any cline-yes">116x</span>
300
+ <span class="cline-any cline-yes">118x</span>
301
301
  <span class="cline-any cline-neutral">&nbsp;</span>
302
302
  <span class="cline-any cline-neutral">&nbsp;</span>
303
303
  <span class="cline-any cline-yes">23x</span>
@@ -309,7 +309,7 @@
309
309
  <span class="cline-any cline-neutral">&nbsp;</span>
310
310
  <span class="cline-any cline-neutral">&nbsp;</span>
311
311
  <span class="cline-any cline-neutral">&nbsp;</span>
312
- <span class="cline-any cline-yes">4x</span>
312
+ <span class="cline-any cline-yes">5x</span>
313
313
  <span class="cline-any cline-neutral">&nbsp;</span>
314
314
  <span class="cline-any cline-yes">4x</span>
315
315
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -374,7 +374,7 @@
374
374
  <span class="cline-any cline-neutral">&nbsp;</span>
375
375
  <span class="cline-any cline-neutral">&nbsp;</span>
376
376
  <span class="cline-any cline-neutral">&nbsp;</span>
377
- <span class="cline-any cline-yes">95x</span>
377
+ <span class="cline-any cline-yes">98x</span>
378
378
  <span class="cline-any cline-yes">8x</span>
379
379
  <span class="cline-any cline-neutral">&nbsp;</span>
380
380
  <span class="cline-any cline-yes">3x</span>
@@ -577,7 +577,7 @@ export function renderOutputTsType(type: ContractTypeNode, modelsWithOutput?: Se
577
577
  <div class='footer quiet pad2 space-top1 center small'>
578
578
  Code coverage generated by
579
579
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
580
- at 2026-06-12T19:14:46.813Z
580
+ at 2026-06-16T15:55:46.002Z
581
581
  </div>
582
582
  <script src="../prettify.js"></script>
583
583
  <script>
@@ -341,11 +341,11 @@
341
341
  <span class="cline-any cline-neutral">&nbsp;</span>
342
342
  <span class="cline-any cline-neutral">&nbsp;</span>
343
343
  <span class="cline-any cline-neutral">&nbsp;</span>
344
- <span class="cline-any cline-yes">905x</span>
344
+ <span class="cline-any cline-yes">919x</span>
345
345
  <span class="cline-any cline-neutral">&nbsp;</span>
346
346
  <span class="cline-any cline-neutral">&nbsp;</span>
347
347
  <span class="cline-any cline-neutral">&nbsp;</span>
348
- <span class="cline-any cline-yes">325x</span>
348
+ <span class="cline-any cline-yes">330x</span>
349
349
  <span class="cline-any cline-neutral">&nbsp;</span>
350
350
  <span class="cline-any cline-neutral">&nbsp;</span>
351
351
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -377,7 +377,7 @@
377
377
  <span class="cline-any cline-neutral">&nbsp;</span>
378
378
  <span class="cline-any cline-neutral">&nbsp;</span>
379
379
  <span class="cline-any cline-neutral">&nbsp;</span>
380
- <span class="cline-any cline-yes">208x</span>
380
+ <span class="cline-any cline-yes">211x</span>
381
381
  <span class="cline-any cline-neutral">&nbsp;</span>
382
382
  <span class="cline-any cline-neutral">&nbsp;</span>
383
383
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -389,7 +389,7 @@
389
389
  <span class="cline-any cline-neutral">&nbsp;</span>
390
390
  <span class="cline-any cline-neutral">&nbsp;</span>
391
391
  <span class="cline-any cline-neutral">&nbsp;</span>
392
- <span class="cline-any cline-yes">265x</span>
392
+ <span class="cline-any cline-yes">270x</span>
393
393
  <span class="cline-any cline-neutral">&nbsp;</span>
394
394
  <span class="cline-any cline-neutral">&nbsp;</span>
395
395
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -401,7 +401,7 @@
401
401
  <span class="cline-any cline-neutral">&nbsp;</span>
402
402
  <span class="cline-any cline-neutral">&nbsp;</span>
403
403
  <span class="cline-any cline-neutral">&nbsp;</span>
404
- <span class="cline-any cline-yes">181x</span>
404
+ <span class="cline-any cline-yes">184x</span>
405
405
  <span class="cline-any cline-neutral">&nbsp;</span>
406
406
  <span class="cline-any cline-neutral">&nbsp;</span>
407
407
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -411,7 +411,7 @@
411
411
  <span class="cline-any cline-neutral">&nbsp;</span>
412
412
  <span class="cline-any cline-neutral">&nbsp;</span>
413
413
  <span class="cline-any cline-neutral">&nbsp;</span>
414
- <span class="cline-any cline-yes">140x</span>
414
+ <span class="cline-any cline-yes">143x</span>
415
415
  <span class="cline-any cline-neutral">&nbsp;</span>
416
416
  <span class="cline-any cline-neutral">&nbsp;</span>
417
417
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -446,16 +446,16 @@
446
446
  <span class="cline-any cline-neutral">&nbsp;</span>
447
447
  <span class="cline-any cline-neutral">&nbsp;</span>
448
448
  <span class="cline-any cline-neutral">&nbsp;</span>
449
- <span class="cline-any cline-yes">123x</span>
450
- <span class="cline-any cline-yes">123x</span>
449
+ <span class="cline-any cline-yes">126x</span>
450
+ <span class="cline-any cline-yes">126x</span>
451
451
  <span class="cline-any cline-neutral">&nbsp;</span>
452
452
  <span class="cline-any cline-neutral">&nbsp;</span>
453
453
  <span class="cline-any cline-neutral">&nbsp;</span>
454
- <span class="cline-any cline-yes">104x</span>
455
- <span class="cline-any cline-yes">104x</span>
454
+ <span class="cline-any cline-yes">107x</span>
455
+ <span class="cline-any cline-yes">107x</span>
456
456
  <span class="cline-any cline-yes">7x</span>
457
457
  <span class="cline-any cline-neutral">&nbsp;</span>
458
- <span class="cline-any cline-yes">97x</span>
458
+ <span class="cline-any cline-yes">100x</span>
459
459
  <span class="cline-any cline-neutral">&nbsp;</span>
460
460
  <span class="cline-any cline-neutral">&nbsp;</span>
461
461
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -469,10 +469,10 @@
469
469
  <span class="cline-any cline-neutral">&nbsp;</span>
470
470
  <span class="cline-any cline-neutral">&nbsp;</span>
471
471
  <span class="cline-any cline-neutral">&nbsp;</span>
472
- <span class="cline-any cline-yes">213x</span>
473
- <span class="cline-any cline-yes">213x</span>
474
- <span class="cline-any cline-yes">213x</span>
475
- <span class="cline-any cline-yes">213x</span>
472
+ <span class="cline-any cline-yes">216x</span>
473
+ <span class="cline-any cline-yes">216x</span>
474
+ <span class="cline-any cline-yes">216x</span>
475
+ <span class="cline-any cline-yes">216x</span>
476
476
  <span class="cline-any cline-neutral">&nbsp;</span>
477
477
  <span class="cline-any cline-neutral">&nbsp;</span>
478
478
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -486,12 +486,12 @@
486
486
  <span class="cline-any cline-neutral">&nbsp;</span>
487
487
  <span class="cline-any cline-neutral">&nbsp;</span>
488
488
  <span class="cline-any cline-neutral">&nbsp;</span>
489
- <span class="cline-any cline-yes">203x</span>
490
- <span class="cline-any cline-yes">203x</span>
489
+ <span class="cline-any cline-yes">206x</span>
490
+ <span class="cline-any cline-yes">206x</span>
491
491
  <span class="cline-any cline-neutral">&nbsp;</span>
492
492
  <span class="cline-any cline-neutral">&nbsp;</span>
493
493
  <span class="cline-any cline-neutral">&nbsp;</span>
494
- <span class="cline-any cline-yes">199x</span>
494
+ <span class="cline-any cline-yes">202x</span>
495
495
  <span class="cline-any cline-neutral">&nbsp;</span>
496
496
  <span class="cline-any cline-neutral">&nbsp;</span>
497
497
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -811,7 +811,7 @@ operation /users/{id}: {
811
811
  <div class='footer quiet pad2 space-top1 center small'>
812
812
  Code coverage generated by
813
813
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
814
- at 2026-06-12T19:14:46.813Z
814
+ at 2026-06-16T15:55:46.002Z
815
815
  </div>
816
816
  <script src="../prettify.js"></script>
817
817
  <script>
@@ -101,7 +101,7 @@
101
101
  <div class='footer quiet pad2 space-top1 center small'>
102
102
  Code coverage generated by
103
103
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104
- at 2026-06-12T19:14:46.813Z
104
+ at 2026-06-16T15:55:46.002Z
105
105
  </div>
106
106
  <script src="../prettify.js"></script>
107
107
  <script>
@@ -75,6 +75,28 @@ export declare function deriveSubareaClientClassName(area: string, subarea: stri
75
75
  export declare function deriveSubareaPropertyName(subarea: string): string;
76
76
  /** Generate the shared SdkOptions interface file. */
77
77
  export declare function generateSdkOptions(): string;
78
+ /** Which optional runtime deps the generated SDK references, derived from the contracts it covers. */
79
+ export interface SdkScaffoldDeps {
80
+ /** Zod schema files are emitted (`config.zod`) — the SDK imports `zod`. */
81
+ zod: boolean;
82
+ /** Any covered model uses a `date`/`time`/`datetime`/`interval` scalar — the SDK imports `luxon`. */
83
+ luxon: boolean;
84
+ }
85
+ /**
86
+ * Generate a starter `package.json` for a generated SDK package. Emitted with
87
+ * `ifAbsent` semantics — written once, then owned by the user — so the dependency
88
+ * ranges here are only ever a starting point, never re-applied on later builds.
89
+ */
90
+ export declare function generateSdkPackageJson(input: {
91
+ name: string;
92
+ deps: SdkScaffoldDeps;
93
+ }): string;
94
+ /**
95
+ * Generate a standalone `tsconfig.json` for a generated SDK package. Deliberately
96
+ * self-contained (no workspace `extends`) so the scaffold works in a freshly
97
+ * `npm init`'d package outside this monorepo. Emitted with `ifAbsent` semantics.
98
+ */
99
+ export declare function generateSdkTsconfig(): string;
78
100
  /**
79
101
  * Reference to a per-file leaf client emitted to its own `*.client.ts`. Used by the
80
102
  * aggregator to import the class and wire it as either a top-level `sdk.<prop>` or a
@@ -1 +1 @@
1
- {"version":3,"file":"codegen-sdk.d.ts","sourceRoot":"","sources":["../src/codegen-sdk.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codegen-sdk.d.ts","sourceRoot":"","sources":["../src/codegen-sdk.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -25,6 +25,15 @@ export interface SdkConfig {
25
25
  clients?: string;
26
26
  };
27
27
  includeInternal?: boolean;
28
+ /**
29
+ * Emit a starter `package.json` and `tsconfig.json` at the SDK `baseDir` so the
30
+ * generated output is a buildable, publishable package on its own. Opt-in and
31
+ * write-once: the files are created only when absent and are never overwritten or
32
+ * cleaned up on later builds, so any edits you make to them are preserved.
33
+ * Dependency ranges are derived from the contracts (always `zod` when `zod: true`;
34
+ * `luxon` when any covered model uses a date/time/datetime/interval scalar).
35
+ */
36
+ scaffold?: boolean;
28
37
  }
29
38
  export interface ZodConfig {
30
39
  baseDir?: string;