@contractkit/plugin-typescript 0.24.0 → 0.25.1

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,9 +23,9 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">80% </span>
26
+ <span class="strong">80.01% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>2033/2541</span>
28
+ <span class='fraction'>2034/2542</span>
29
29
  </div>
30
30
 
31
31
 
@@ -44,9 +44,9 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">82.61% </span>
47
+ <span class="strong">82.62% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>1782/2157</span>
49
+ <span class='fraction'>1783/2158</span>
50
50
  </div>
51
51
 
52
52
 
@@ -84,13 +84,13 @@
84
84
  <div class="chart"><div class="cover-fill" style="width: 79%"></div><div class="cover-empty" style="width: 21%"></div></div>
85
85
  </td>
86
86
  <td data-value="79.79" class="pct medium">79.79%</td>
87
- <td data-value="2489" class="abs medium">1986/2489</td>
87
+ <td data-value="2490" class="abs medium">1987/2490</td>
88
88
  <td data-value="74.96" class="pct medium">74.96%</td>
89
89
  <td data-value="1606" class="abs medium">1204/1606</td>
90
90
  <td data-value="83.06" class="pct high">83.06%</td>
91
91
  <td data-value="372" class="abs high">309/372</td>
92
- <td data-value="82.37" class="pct high">82.37%</td>
93
- <td data-value="2111" class="abs high">1739/2111</td>
92
+ <td data-value="82.38" class="pct high">82.38%</td>
93
+ <td data-value="2112" class="abs high">1740/2112</td>
94
94
  </tr>
95
95
 
96
96
  <tr>
@@ -116,7 +116,7 @@
116
116
  <div class='footer quiet pad2 space-top1 center small'>
117
117
  Code coverage generated by
118
118
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
119
- at 2026-05-12T15:00:24.685Z
119
+ at 2026-05-15T11:53:30.091Z
120
120
  </div>
121
121
  <script src="prettify.js"></script>
122
122
  <script>
@@ -3646,7 +3646,7 @@ export function pascalToDotCase(name: string): string {
3646
3646
  <div class='footer quiet pad2 space-top1 center small'>
3647
3647
  Code coverage generated by
3648
3648
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
3649
- at 2026-05-12T15:00:24.685Z
3649
+ at 2026-05-15T11:53:30.091Z
3650
3650
  </div>
3651
3651
  <script src="../prettify.js"></script>
3652
3652
  <script>
@@ -23,9 +23,9 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">78.13% </span>
26
+ <span class="strong">78.18% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>361/462</span>
28
+ <span class='fraction'>362/463</span>
29
29
  </div>
30
30
 
31
31
 
@@ -44,9 +44,9 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">79.69% </span>
47
+ <span class="strong">79.75% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>318/399</span>
49
+ <span class='fraction'>319/400</span>
50
50
  </div>
51
51
 
52
52
 
@@ -879,7 +879,13 @@
879
879
  <a name='L814'></a><a href='#L814'>814</a>
880
880
  <a name='L815'></a><a href='#L815'>815</a>
881
881
  <a name='L816'></a><a href='#L816'>816</a>
882
- <a name='L817'></a><a href='#L817'>817</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
882
+ <a name='L817'></a><a href='#L817'>817</a>
883
+ <a name='L818'></a><a href='#L818'>818</a>
884
+ <a name='L819'></a><a href='#L819'>819</a>
885
+ <a name='L820'></a><a href='#L820'>820</a>
886
+ <a name='L821'></a><a href='#L821'>821</a>
887
+ <a name='L822'></a><a href='#L822'>822</a>
888
+ <a name='L823'></a><a href='#L823'>823</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
883
889
  <span class="cline-any cline-neutral">&nbsp;</span>
884
890
  <span class="cline-any cline-neutral">&nbsp;</span>
885
891
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1123,6 +1129,12 @@
1123
1129
  <span class="cline-any cline-yes">111x</span>
1124
1130
  <span class="cline-any cline-yes">111x</span>
1125
1131
  <span class="cline-any cline-yes">108x</span>
1132
+ <span class="cline-any cline-neutral">&nbsp;</span>
1133
+ <span class="cline-any cline-yes">108x</span>
1134
+ <span class="cline-any cline-neutral">&nbsp;</span>
1135
+ <span class="cline-any cline-neutral">&nbsp;</span>
1136
+ <span class="cline-any cline-neutral">&nbsp;</span>
1137
+ <span class="cline-any cline-neutral">&nbsp;</span>
1126
1138
  <span class="cline-any cline-yes">108x</span>
1127
1139
  <span class="cline-any cline-neutral">&nbsp;</span>
1128
1140
  <span class="cline-any cline-yes">111x</span>
@@ -1834,9 +1846,9 @@ export function generateOp(root: OpRootNode, options: OpCodegenOptions = {}): st
1834
1846
  // before deciding whether to emit the zod import.
1835
1847
  const body: string[] = [];
1836
1848
  const needsSignature = fileNeedsSignature(root);
1837
- const needsSecurity = fileNeedsSecurity(root);
1849
+ const needsPolicy = fileNeedsPolicy(root);
1838
1850
  const koaImports = ['ServerKitRouter', 'bodyParserMiddleware'];
1839
- if (needsSecurity) koaImports.push('requireSecurity');
1851
+ if (needsPolicy) koaImports.push('requirePolicy');
1840
1852
  if (needsSignature) koaImports.push('requireSignature');
1841
1853
  body.push(`import { ${koaImports.join(', ')} } from '@maroonedsoftware/koa';`);
1842
1854
  &nbsp;
@@ -1938,8 +1950,14 @@ function generateHandler(route: OpRouteNode, op: OpOperationNode, root: OpRootNo
1938
1950
  // Middleware list
1939
1951
  const middlewares: string[] = [];
1940
1952
  if (effectiveSecurity !== SECURITY_NONE) {
1941
- const args = effectiveSecurity &amp;&amp; effectiveSecurity.requireMfa !== undefined ? `{ requireMfa: ${effectiveSecurity.requireMfa} }` : '';
1942
- middlewares.push(`requireSecurity(${args})`);
1953
+ const policy = effectiveSecurity?.policy;
1954
+ const args =
1955
+ policy === undefined
1956
+ ? ''
1957
+ : policy === false
1958
+ ? '{ policy: false }'
1959
+ : `{ policy: '${policy}' }`;
1960
+ middlewares.push(`requirePolicy(${args})`);
1943
1961
  }
1944
1962
  if (hasBody) {
1945
1963
  const parserTokens = Array.from(new Set(bodies.map(b =&gt; bodyParserToken(b.contentType))));
@@ -2458,7 +2476,7 @@ function routeNeedsValidation(root: OpRootNode): boolean {
2458
2476
  );
2459
2477
  }
2460
2478
  &nbsp;
2461
- function fileNeedsSecurity(root: OpRootNode): boolean {
2479
+ function fileNeedsPolicy(root: OpRootNode): boolean {
2462
2480
  return root.routes.some(route =&gt; route.operations.some(op =&gt; resolveSecurity(route, op, root) !== SECURITY_NONE));
2463
2481
  }
2464
2482
  &nbsp;
@@ -2518,7 +2536,7 @@ function deriveTypeImportPath(file: string, template?: string): string {
2518
2536
  <div class='footer quiet pad2 space-top1 center small'>
2519
2537
  Code coverage generated by
2520
2538
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
2521
- at 2026-05-12T15:00:24.685Z
2539
+ at 2026-05-15T11:53:30.091Z
2522
2540
  </div>
2523
2541
  <script src="../prettify.js"></script>
2524
2542
  <script>
@@ -982,7 +982,7 @@ function renderOutputField(field: FieldNode, outputCase: 'camel' | 'snake' | 'pa
982
982
  <div class='footer quiet pad2 space-top1 center small'>
983
983
  Code coverage generated by
984
984
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
985
- at 2026-05-12T15:00:24.685Z
985
+ at 2026-05-15T11:53:30.091Z
986
986
  </div>
987
987
  <script src="../prettify.js"></script>
988
988
  <script>
@@ -3652,7 +3652,7 @@ export function generateSdkAggregator(input: SdkAggregatorInput): string {
3652
3652
  <div class='footer quiet pad2 space-top1 center small'>
3653
3653
  Code coverage generated by
3654
3654
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
3655
- at 2026-05-12T15:00:24.685Z
3655
+ at 2026-05-15T11:53:30.091Z
3656
3656
  </div>
3657
3657
  <script src="../prettify.js"></script>
3658
3658
  <script>
@@ -25,7 +25,7 @@
25
25
  <div class='fl pad1y space-right2'>
26
26
  <span class="strong">79.79% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>1986/2489</span>
28
+ <span class='fraction'>1987/2490</span>
29
29
  </div>
30
30
 
31
31
 
@@ -44,9 +44,9 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">82.37% </span>
47
+ <span class="strong">82.38% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>1739/2111</span>
49
+ <span class='fraction'>1740/2112</span>
50
50
  </div>
51
51
 
52
52
 
@@ -95,17 +95,17 @@
95
95
 
96
96
  <tr>
97
97
  <td class="file medium" data-value="codegen-operation.ts"><a href="codegen-operation.ts.html">codegen-operation.ts</a></td>
98
- <td data-value="78.13" class="pic medium">
98
+ <td data-value="78.18" class="pic medium">
99
99
  <div class="chart"><div class="cover-fill" style="width: 78%"></div><div class="cover-empty" style="width: 22%"></div></div>
100
100
  </td>
101
- <td data-value="78.13" class="pct medium">78.13%</td>
102
- <td data-value="462" class="abs medium">361/462</td>
101
+ <td data-value="78.18" class="pct medium">78.18%</td>
102
+ <td data-value="463" class="abs medium">362/463</td>
103
103
  <td data-value="74.26" class="pct medium">74.26%</td>
104
104
  <td data-value="338" class="abs medium">251/338</td>
105
105
  <td data-value="77.77" class="pct medium">77.77%</td>
106
106
  <td data-value="72" class="abs medium">56/72</td>
107
- <td data-value="79.69" class="pct medium">79.69%</td>
108
- <td data-value="399" class="abs medium">318/399</td>
107
+ <td data-value="79.75" class="pct medium">79.75%</td>
108
+ <td data-value="400" class="abs medium">319/400</td>
109
109
  </tr>
110
110
 
111
111
  <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-12T15:00:24.685Z
194
+ at 2026-05-15T11:53:30.091Z
195
195
  </div>
196
196
  <script src="../prettify.js"></script>
197
197
  <script>
@@ -2635,7 +2635,7 @@ function stableSubConfig(config: unknown): string {
2635
2635
  <div class='footer quiet pad2 space-top1 center small'>
2636
2636
  Code coverage generated by
2637
2637
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
2638
- at 2026-05-12T15:00:24.685Z
2638
+ at 2026-05-15T11:53:30.091Z
2639
2639
  </div>
2640
2640
  <script src="../prettify.js"></script>
2641
2641
  <script>
@@ -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-05-12T15:00:24.685Z
733
+ at 2026-05-15T11:53:30.091Z
734
734
  </div>
735
735
  <script src="../prettify.js"></script>
736
736
  <script>
@@ -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-05-12T15:00:24.685Z
580
+ at 2026-05-15T11:53:30.091Z
581
581
  </div>
582
582
  <script src="../prettify.js"></script>
583
583
  <script>
@@ -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-05-12T15:00:24.685Z
814
+ at 2026-05-15T11:53:30.091Z
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-05-12T15:00:24.685Z
104
+ at 2026-05-15T11:53:30.091Z
105
105
  </div>
106
106
  <script src="../prettify.js"></script>
107
107
  <script>
package/dist/index.js CHANGED
@@ -1172,12 +1172,12 @@ function generateOp(root, options = {}) {
1172
1172
  const needsParseAndValidate = routeNeedsValidation(root);
1173
1173
  const body = [];
1174
1174
  const needsSignature = fileNeedsSignature(root);
1175
- const needsSecurity = fileNeedsSecurity(root);
1175
+ const needsPolicy = fileNeedsPolicy(root);
1176
1176
  const koaImports = [
1177
1177
  "ServerKitRouter",
1178
1178
  "bodyParserMiddleware"
1179
1179
  ];
1180
- if (needsSecurity) koaImports.push("requireSecurity");
1180
+ if (needsPolicy) koaImports.push("requirePolicy");
1181
1181
  if (needsSignature) koaImports.push("requireSignature");
1182
1182
  body.push(`import { ${koaImports.join(", ")} } from '@maroonedsoftware/koa';`);
1183
1183
  for (const svc of services) {
@@ -1260,8 +1260,9 @@ function generateHandler(route, op, root, options) {
1260
1260
  const isSingleMultipart = bodies.length === 1 && bodies[0].contentType === "multipart/form-data";
1261
1261
  const middlewares = [];
1262
1262
  if (effectiveSecurity !== SECURITY_NONE) {
1263
- const args = effectiveSecurity && effectiveSecurity.requireMfa !== void 0 ? `{ requireMfa: ${effectiveSecurity.requireMfa} }` : "";
1264
- middlewares.push(`requireSecurity(${args})`);
1263
+ const policy = effectiveSecurity?.policy;
1264
+ const args = policy === void 0 ? "" : policy === false ? "{ policy: false }" : `{ policy: '${policy}' }`;
1265
+ middlewares.push(`requirePolicy(${args})`);
1265
1266
  }
1266
1267
  if (hasBody) {
1267
1268
  const parserTokens = Array.from(new Set(bodies.map((b) => bodyParserToken(b.contentType))));
@@ -1704,10 +1705,10 @@ function routeNeedsValidation(root) {
1704
1705
  return root.routes.some((r) => hasParamSource(r.params) || r.operations.some((op) => !!op.request || hasParamSource(op.query) || hasParamSource(op.headers)));
1705
1706
  }
1706
1707
  __name(routeNeedsValidation, "routeNeedsValidation");
1707
- function fileNeedsSecurity(root) {
1708
+ function fileNeedsPolicy(root) {
1708
1709
  return root.routes.some((route) => route.operations.some((op) => resolveSecurity(route, op, root) !== SECURITY_NONE));
1709
1710
  }
1710
- __name(fileNeedsSecurity, "fileNeedsSecurity");
1711
+ __name(fileNeedsPolicy, "fileNeedsPolicy");
1711
1712
  function fileNeedsSignature(root) {
1712
1713
  return root.routes.some((route) => route.operations.some((op) => !!op.signature));
1713
1714
  }