@contractkit/plugin-typescript 0.25.2 → 0.25.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 +4 -4
- package/.turbo/turbo-test$colon$ci.log +11 -11
- package/CHANGELOG.md +12 -0
- package/coverage/clover.xml +306 -304
- package/coverage/coverage-final.json +1 -1
- package/coverage/index.html +18 -18
- package/coverage/src/codegen-contract.ts.html +1 -1
- package/coverage/src/codegen-operation.ts.html +38 -14
- package/coverage/src/codegen-plain-types.ts.html +1 -1
- package/coverage/src/codegen-sdk.ts.html +1 -1
- package/coverage/src/index.html +18 -18
- package/coverage/src/index.ts.html +1 -1
- package/coverage/src/path-utils.ts.html +1 -1
- package/coverage/src/ts-render.ts.html +1 -1
- package/coverage/tests/helpers.ts.html +1 -1
- package/coverage/tests/index.html +1 -1
- package/dist/codegen-operation.d.ts.map +1 -1
- package/dist/index.js +7 -2
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/codegen-operation.ts +10 -2
- package/tests/codegen-operation.test.ts +2 -0
package/coverage/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">80.
|
|
26
|
+
<span class="strong">80.04% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>2038/2546</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">75.
|
|
33
|
+
<span class="strong">75.34% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>1238/1643</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">83.
|
|
40
|
+
<span class="strong">83.66% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>338/404</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">82.
|
|
47
|
+
<span class="strong">82.63% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>1785/2160</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -80,17 +80,17 @@
|
|
|
80
80
|
</thead>
|
|
81
81
|
<tbody><tr>
|
|
82
82
|
<td class="file medium" data-value="src"><a href="src/index.html">src</a></td>
|
|
83
|
-
<td data-value="79.
|
|
83
|
+
<td data-value="79.83" class="pic medium">
|
|
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
|
-
<td data-value="79.
|
|
87
|
-
<td data-value="
|
|
88
|
-
<td data-value="
|
|
89
|
-
<td data-value="
|
|
90
|
-
<td data-value="83.
|
|
91
|
-
<td data-value="
|
|
92
|
-
<td data-value="82.
|
|
93
|
-
<td data-value="
|
|
86
|
+
<td data-value="79.83" class="pct medium">79.83%</td>
|
|
87
|
+
<td data-value="2494" class="abs medium">1991/2494</td>
|
|
88
|
+
<td data-value="75.03" class="pct medium">75.03%</td>
|
|
89
|
+
<td data-value="1610" class="abs medium">1208/1610</td>
|
|
90
|
+
<td data-value="83.24" class="pct high">83.24%</td>
|
|
91
|
+
<td data-value="376" class="abs high">313/376</td>
|
|
92
|
+
<td data-value="82.4" class="pct high">82.4%</td>
|
|
93
|
+
<td data-value="2114" class="abs high">1742/2114</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-
|
|
119
|
+
at 2026-06-03T13:07:33.231Z
|
|
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-
|
|
3649
|
+
at 2026-06-03T13:07:33.231Z
|
|
3650
3650
|
</div>
|
|
3651
3651
|
<script src="../prettify.js"></script>
|
|
3652
3652
|
<script>
|
|
@@ -23,30 +23,30 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">78.
|
|
26
|
+
<span class="strong">78.37% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>366/467</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">74.
|
|
33
|
+
<span class="strong">74.56% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>255/342</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">78.94% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>60/76</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.85% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>321/402</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -885,7 +885,15 @@
|
|
|
885
885
|
<a name='L820'></a><a href='#L820'>820</a>
|
|
886
886
|
<a name='L821'></a><a href='#L821'>821</a>
|
|
887
887
|
<a name='L822'></a><a href='#L822'>822</a>
|
|
888
|
-
<a name='L823'></a><a href='#L823'>823</a
|
|
888
|
+
<a name='L823'></a><a href='#L823'>823</a>
|
|
889
|
+
<a name='L824'></a><a href='#L824'>824</a>
|
|
890
|
+
<a name='L825'></a><a href='#L825'>825</a>
|
|
891
|
+
<a name='L826'></a><a href='#L826'>826</a>
|
|
892
|
+
<a name='L827'></a><a href='#L827'>827</a>
|
|
893
|
+
<a name='L828'></a><a href='#L828'>828</a>
|
|
894
|
+
<a name='L829'></a><a href='#L829'>829</a>
|
|
895
|
+
<a name='L830'></a><a href='#L830'>830</a>
|
|
896
|
+
<a name='L831'></a><a href='#L831'>831</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
889
897
|
<span class="cline-any cline-neutral"> </span>
|
|
890
898
|
<span class="cline-any cline-neutral"> </span>
|
|
891
899
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -1048,6 +1056,10 @@
|
|
|
1048
1056
|
<span class="cline-any cline-neutral"> </span>
|
|
1049
1057
|
<span class="cline-any cline-neutral"> </span>
|
|
1050
1058
|
<span class="cline-any cline-yes">110x</span>
|
|
1059
|
+
<span class="cline-any cline-yes">2x</span>
|
|
1060
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1061
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1062
|
+
<span class="cline-any cline-yes">110x</span>
|
|
1051
1063
|
<span class="cline-any cline-yes">110x</span>
|
|
1052
1064
|
<span class="cline-any cline-no"> </span>
|
|
1053
1065
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -1242,8 +1254,6 @@
|
|
|
1242
1254
|
<span class="cline-any cline-neutral"> </span>
|
|
1243
1255
|
<span class="cline-any cline-neutral"> </span>
|
|
1244
1256
|
<span class="cline-any cline-yes">111x</span>
|
|
1245
|
-
<span class="cline-any cline-yes">111x</span>
|
|
1246
|
-
<span class="cline-any cline-yes">111x</span>
|
|
1247
1257
|
<span class="cline-any cline-neutral"> </span>
|
|
1248
1258
|
<span class="cline-any cline-yes">111x</span>
|
|
1249
1259
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -1663,6 +1673,12 @@
|
|
|
1663
1673
|
<span class="cline-any cline-neutral"> </span>
|
|
1664
1674
|
<span class="cline-any cline-neutral"> </span>
|
|
1665
1675
|
<span class="cline-any cline-neutral"> </span>
|
|
1676
|
+
<span class="cline-any cline-yes">110x</span>
|
|
1677
|
+
<span class="cline-any cline-yes">112x</span>
|
|
1678
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1679
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1680
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1681
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1666
1682
|
<span class="cline-any cline-yes">28x</span>
|
|
1667
1683
|
<span class="cline-any cline-neutral"> </span>
|
|
1668
1684
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -1868,6 +1884,10 @@ export function generateOp(root: OpRootNode, options: OpCodegenOptions = {}): st
|
|
|
1868
1884
|
if (needsParseAndValidate) {
|
|
1869
1885
|
body.push(`import { parseAndValidate } from '@maroonedsoftware/zod';`);
|
|
1870
1886
|
}
|
|
1887
|
+
|
|
1888
|
+
if (fileUsesMultipart(root)) {
|
|
1889
|
+
body.push(`import { MultipartBody } from '@maroonedsoftware/multipart';`);
|
|
1890
|
+
}
|
|
1871
1891
|
|
|
1872
1892
|
const helpers: string[] = [];
|
|
1873
1893
|
<span class="missing-if-branch" title="if path not taken" >I</span>if (opNeedsScalar(root, 'binary')) {
|
|
@@ -2063,8 +2083,6 @@ function generateHandler(route: OpRouteNode, op: OpOperationNode, root: OpRootNo
|
|
|
2063
2083
|
lines.push(` ctx.body = ${hasRespHeaders ? 'result.body' : 'result'};`);
|
|
2064
2084
|
}
|
|
2065
2085
|
|
|
2066
|
-
lines.push('');
|
|
2067
|
-
lines.push(` await next();`);
|
|
2068
2086
|
lines.push(`});`);
|
|
2069
2087
|
|
|
2070
2088
|
return lines;
|
|
@@ -2484,6 +2502,12 @@ function fileNeedsSignature(root: OpRootNode): boolean {
|
|
|
2484
2502
|
return root.routes.some(route => route.operations.some(op => !!op.signature));
|
|
2485
2503
|
}
|
|
2486
2504
|
|
|
2505
|
+
function fileUsesMultipart(root: OpRootNode): boolean {
|
|
2506
|
+
return root.routes.some(route =>
|
|
2507
|
+
route.operations.some(op => (op.request?.bodies ?? []).some(b => b.contentType === 'multipart/form-data')),
|
|
2508
|
+
);
|
|
2509
|
+
}
|
|
2510
|
+
|
|
2487
2511
|
function isValidIdentifier(name: string): boolean {
|
|
2488
2512
|
return /^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(name);
|
|
2489
2513
|
}
|
|
@@ -2536,7 +2560,7 @@ function deriveTypeImportPath(file: string, template?: string): string {
|
|
|
2536
2560
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
2537
2561
|
Code coverage generated by
|
|
2538
2562
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
2539
|
-
at 2026-
|
|
2563
|
+
at 2026-06-03T13:07:33.231Z
|
|
2540
2564
|
</div>
|
|
2541
2565
|
<script src="../prettify.js"></script>
|
|
2542
2566
|
<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-
|
|
985
|
+
at 2026-06-03T13:07:33.231Z
|
|
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-
|
|
3655
|
+
at 2026-06-03T13:07:33.231Z
|
|
3656
3656
|
</div>
|
|
3657
3657
|
<script src="../prettify.js"></script>
|
|
3658
3658
|
<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">79.
|
|
26
|
+
<span class="strong">79.83% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>1991/2494</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">75.03% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>1208/1610</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">83.
|
|
40
|
+
<span class="strong">83.24% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>313/376</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">82.
|
|
47
|
+
<span class="strong">82.4% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>1742/2114</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.
|
|
98
|
+
<td data-value="78.37" 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.
|
|
102
|
-
<td data-value="
|
|
103
|
-
<td data-value="74.
|
|
104
|
-
<td data-value="
|
|
105
|
-
<td data-value="
|
|
106
|
-
<td data-value="
|
|
107
|
-
<td data-value="79.
|
|
108
|
-
<td data-value="
|
|
101
|
+
<td data-value="78.37" class="pct medium">78.37%</td>
|
|
102
|
+
<td data-value="467" class="abs medium">366/467</td>
|
|
103
|
+
<td data-value="74.56" class="pct medium">74.56%</td>
|
|
104
|
+
<td data-value="342" class="abs medium">255/342</td>
|
|
105
|
+
<td data-value="78.94" class="pct medium">78.94%</td>
|
|
106
|
+
<td data-value="76" class="abs medium">60/76</td>
|
|
107
|
+
<td data-value="79.85" class="pct medium">79.85%</td>
|
|
108
|
+
<td data-value="402" class="abs medium">321/402</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-
|
|
194
|
+
at 2026-06-03T13:07:33.231Z
|
|
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-
|
|
2638
|
+
at 2026-06-03T13:07:33.231Z
|
|
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-
|
|
733
|
+
at 2026-06-03T13:07:33.231Z
|
|
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-
|
|
580
|
+
at 2026-06-03T13:07:33.231Z
|
|
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-
|
|
814
|
+
at 2026-06-03T13:07:33.231Z
|
|
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-
|
|
104
|
+
at 2026-06-03T13:07:33.231Z
|
|
105
105
|
</div>
|
|
106
106
|
<script src="../prettify.js"></script>
|
|
107
107
|
<script>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codegen-operation.d.ts","sourceRoot":"","sources":["../src/codegen-operation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAgC,gBAAgB,EAA2B,MAAM,mBAAmB,CAAC;AAmC7H;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAkE5F;AAID,MAAM,WAAW,gBAAgB;IAC7B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sFAAsF;IACtF,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,qFAAqF;IACrF,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9B,oFAAoF;IACpF,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/B;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,yHAAyH;AACzH,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,GAAE,gBAAqB,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"codegen-operation.d.ts","sourceRoot":"","sources":["../src/codegen-operation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAgC,gBAAgB,EAA2B,MAAM,mBAAmB,CAAC;AAmC7H;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAkE5F;AAID,MAAM,WAAW,gBAAgB;IAC7B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sFAAsF;IACtF,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,qFAAqF;IACrF,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9B,oFAAoF;IACpF,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/B;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,yHAAyH;AACzH,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,GAAE,gBAAqB,GAAG,MAAM,CA4EnF"}
|
package/dist/index.js
CHANGED
|
@@ -1193,6 +1193,9 @@ function generateOp(root, options = {}) {
|
|
|
1193
1193
|
if (needsParseAndValidate) {
|
|
1194
1194
|
body.push(`import { parseAndValidate } from '@maroonedsoftware/zod';`);
|
|
1195
1195
|
}
|
|
1196
|
+
if (fileUsesMultipart(root)) {
|
|
1197
|
+
body.push(`import { MultipartBody } from '@maroonedsoftware/multipart';`);
|
|
1198
|
+
}
|
|
1196
1199
|
const helpers = [];
|
|
1197
1200
|
if (opNeedsScalar(root, "binary")) {
|
|
1198
1201
|
helpers.push(`const _ZodBinary = z.custom<Buffer>((val) => Buffer.isBuffer(val), { error: 'Must be binary data' });`);
|
|
@@ -1344,8 +1347,6 @@ function generateHandler(route, op, root, options) {
|
|
|
1344
1347
|
lines.push(` ctx.type = '${primaryResponse.contentType}';`);
|
|
1345
1348
|
lines.push(` ctx.body = ${hasRespHeaders ? "result.body" : "result"};`);
|
|
1346
1349
|
}
|
|
1347
|
-
lines.push("");
|
|
1348
|
-
lines.push(` await next();`);
|
|
1349
1350
|
lines.push(`});`);
|
|
1350
1351
|
return lines;
|
|
1351
1352
|
}
|
|
@@ -1713,6 +1714,10 @@ function fileNeedsSignature(root) {
|
|
|
1713
1714
|
return root.routes.some((route) => route.operations.some((op) => !!op.signature));
|
|
1714
1715
|
}
|
|
1715
1716
|
__name(fileNeedsSignature, "fileNeedsSignature");
|
|
1717
|
+
function fileUsesMultipart(root) {
|
|
1718
|
+
return root.routes.some((route) => route.operations.some((op) => (op.request?.bodies ?? []).some((b) => b.contentType === "multipart/form-data")));
|
|
1719
|
+
}
|
|
1720
|
+
__name(fileUsesMultipart, "fileUsesMultipart");
|
|
1716
1721
|
function isValidIdentifier2(name) {
|
|
1717
1722
|
return /^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(name);
|
|
1718
1723
|
}
|