@contractkit/prettier-plugin 0.9.1 → 0.9.2
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 +8 -8
- package/CHANGELOG.md +6 -0
- package/coverage/clover.xml +99 -97
- package/coverage/coverage-final.json +3 -3
- package/coverage/indent.ts.html +1 -1
- package/coverage/index.html +21 -21
- package/coverage/print-ck.ts.html +18 -18
- package/coverage/print-contract.ts.html +16 -16
- package/coverage/print-operation.ts.html +1 -1
- package/coverage/print-type.ts.html +56 -35
- package/dist/index.js +7 -2
- package/dist/index.js.map +1 -1
- package/dist/print-type.d.ts +3 -0
- package/dist/print-type.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/print-type.ts +9 -2
- package/tests/print-ck.test.ts +27 -0
package/coverage/indent.ts.html
CHANGED
|
@@ -73,7 +73,7 @@
|
|
|
73
73
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
74
74
|
Code coverage generated by
|
|
75
75
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
76
|
-
at 2026-05-
|
|
76
|
+
at 2026-05-04T13:24:25.753Z
|
|
77
77
|
</div>
|
|
78
78
|
<script src="prettify.js"></script>
|
|
79
79
|
<script>
|
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">66.
|
|
26
|
+
<span class="strong">66.3% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>242/365</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">58.04% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>231/398</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">70.37% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>19/27</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">72.06% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>209/290</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -115,8 +115,8 @@
|
|
|
115
115
|
</td>
|
|
116
116
|
<td data-value="41.93" class="pct low">41.93%</td>
|
|
117
117
|
<td data-value="31" class="abs low">13/31</td>
|
|
118
|
-
<td data-value="
|
|
119
|
-
<td data-value="56" class="abs low">
|
|
118
|
+
<td data-value="30.35" class="pct low">30.35%</td>
|
|
119
|
+
<td data-value="56" class="abs low">17/56</td>
|
|
120
120
|
<td data-value="50" class="pct medium">50%</td>
|
|
121
121
|
<td data-value="2" class="abs medium">1/2</td>
|
|
122
122
|
<td data-value="42.85" class="pct low">42.85%</td>
|
|
@@ -140,17 +140,17 @@
|
|
|
140
140
|
|
|
141
141
|
<tr>
|
|
142
142
|
<td class="file low" data-value="print-type.ts"><a href="print-type.ts.html">print-type.ts</a></td>
|
|
143
|
-
<td data-value="
|
|
144
|
-
<div class="chart"><div class="cover-fill" style="width:
|
|
143
|
+
<td data-value="47.12" class="pic low">
|
|
144
|
+
<div class="chart"><div class="cover-fill" style="width: 47%"></div><div class="cover-empty" style="width: 53%"></div></div>
|
|
145
145
|
</td>
|
|
146
|
-
<td data-value="
|
|
147
|
-
<td data-value="
|
|
148
|
-
<td data-value="
|
|
149
|
-
<td data-value="
|
|
150
|
-
<td data-value="
|
|
151
|
-
<td data-value="
|
|
152
|
-
<td data-value="
|
|
153
|
-
<td data-value="
|
|
146
|
+
<td data-value="47.12" class="pct low">47.12%</td>
|
|
147
|
+
<td data-value="87" class="abs low">41/87</td>
|
|
148
|
+
<td data-value="46.87" class="pct low">46.87%</td>
|
|
149
|
+
<td data-value="96" class="abs low">45/96</td>
|
|
150
|
+
<td data-value="45.45" class="pct low">45.45%</td>
|
|
151
|
+
<td data-value="11" class="abs low">5/11</td>
|
|
152
|
+
<td data-value="48.61" class="pct low">48.61%</td>
|
|
153
|
+
<td data-value="72" class="abs low">35/72</td>
|
|
154
154
|
</tr>
|
|
155
155
|
|
|
156
156
|
</tbody>
|
|
@@ -161,7 +161,7 @@
|
|
|
161
161
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
162
162
|
Code coverage generated by
|
|
163
163
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
164
|
-
at 2026-05-
|
|
164
|
+
at 2026-05-04T13:24:25.753Z
|
|
165
165
|
</div>
|
|
166
166
|
<script src="prettify.js"></script>
|
|
167
167
|
<script>
|
|
@@ -199,13 +199,13 @@
|
|
|
199
199
|
<span class="cline-any cline-neutral"> </span>
|
|
200
200
|
<span class="cline-any cline-neutral"> </span>
|
|
201
201
|
<span class="cline-any cline-neutral"> </span>
|
|
202
|
-
<span class="cline-any cline-yes">
|
|
203
|
-
<span class="cline-any cline-yes">
|
|
204
|
-
<span class="cline-any cline-yes">
|
|
205
|
-
<span class="cline-any cline-yes">
|
|
206
|
-
<span class="cline-any cline-yes">
|
|
202
|
+
<span class="cline-any cline-yes">57x</span>
|
|
203
|
+
<span class="cline-any cline-yes">57x</span>
|
|
204
|
+
<span class="cline-any cline-yes">57x</span>
|
|
205
|
+
<span class="cline-any cline-yes">57x</span>
|
|
206
|
+
<span class="cline-any cline-yes">57x</span>
|
|
207
207
|
<span class="cline-any cline-neutral"> </span>
|
|
208
|
-
<span class="cline-any cline-yes">
|
|
208
|
+
<span class="cline-any cline-yes">57x</span>
|
|
209
209
|
<span class="cline-any cline-neutral"> </span>
|
|
210
210
|
<span class="cline-any cline-yes">7x</span>
|
|
211
211
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -265,29 +265,29 @@
|
|
|
265
265
|
<span class="cline-any cline-neutral"> </span>
|
|
266
266
|
<span class="cline-any cline-neutral"> </span>
|
|
267
267
|
<span class="cline-any cline-neutral"> </span>
|
|
268
|
-
<span class="cline-any cline-yes">
|
|
269
|
-
<span class="cline-any cline-yes">
|
|
268
|
+
<span class="cline-any cline-yes">57x</span>
|
|
269
|
+
<span class="cline-any cline-yes">57x</span>
|
|
270
270
|
<span class="cline-any cline-neutral"> </span>
|
|
271
271
|
<span class="cline-any cline-neutral"> </span>
|
|
272
|
-
<span class="cline-any cline-yes">
|
|
273
|
-
<span class="cline-any cline-yes">
|
|
272
|
+
<span class="cline-any cline-yes">57x</span>
|
|
273
|
+
<span class="cline-any cline-yes">57x</span>
|
|
274
274
|
<span class="cline-any cline-neutral"> </span>
|
|
275
275
|
<span class="cline-any cline-neutral"> </span>
|
|
276
|
-
<span class="cline-any cline-yes">
|
|
277
|
-
<span class="cline-any cline-yes">
|
|
278
|
-
<span class="cline-any cline-yes">
|
|
276
|
+
<span class="cline-any cline-yes">57x</span>
|
|
277
|
+
<span class="cline-any cline-yes">5x</span>
|
|
278
|
+
<span class="cline-any cline-yes">5x</span>
|
|
279
279
|
<span class="cline-any cline-neutral"> </span>
|
|
280
280
|
<span class="cline-any cline-neutral"> </span>
|
|
281
281
|
<span class="cline-any cline-neutral"> </span>
|
|
282
|
-
<span class="cline-any cline-yes">
|
|
283
|
-
<span class="cline-any cline-yes">
|
|
284
|
-
<span class="cline-any cline-yes">
|
|
282
|
+
<span class="cline-any cline-yes">57x</span>
|
|
283
|
+
<span class="cline-any cline-yes">57x</span>
|
|
284
|
+
<span class="cline-any cline-yes">57x</span>
|
|
285
285
|
<span class="cline-any cline-yes">47x</span>
|
|
286
286
|
<span class="cline-any cline-yes">47x</span>
|
|
287
287
|
<span class="cline-any cline-yes">47x</span>
|
|
288
288
|
<span class="cline-any cline-neutral"> </span>
|
|
289
289
|
<span class="cline-any cline-neutral"> </span>
|
|
290
|
-
<span class="cline-any cline-yes">
|
|
290
|
+
<span class="cline-any cline-yes">57x</span>
|
|
291
291
|
<span class="cline-any cline-neutral"> </span>
|
|
292
292
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import type { CkRootNode, OpResponseHeaderNode } from '@contractkit/core';
|
|
293
293
|
import { printModelDecl } from './print-contract.js';
|
|
@@ -409,7 +409,7 @@ export function printCk(ast: CkRootNode, <span class="branch-1 cbranch-no" title
|
|
|
409
409
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
410
410
|
Code coverage generated by
|
|
411
411
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
412
|
-
at 2026-05-
|
|
412
|
+
at 2026-05-04T13:24:25.753Z
|
|
413
413
|
</div>
|
|
414
414
|
<script src="prettify.js"></script>
|
|
415
415
|
<script>
|
|
@@ -30,9 +30,9 @@
|
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">30.35% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>17/56</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
@@ -138,15 +138,15 @@
|
|
|
138
138
|
<span class="cline-any cline-neutral"> </span>
|
|
139
139
|
<span class="cline-any cline-neutral"> </span>
|
|
140
140
|
<span class="cline-any cline-neutral"> </span>
|
|
141
|
-
<span class="cline-any cline-yes">
|
|
141
|
+
<span class="cline-any cline-yes">5x</span>
|
|
142
142
|
<span class="cline-any cline-neutral"> </span>
|
|
143
|
-
<span class="cline-any cline-yes">
|
|
143
|
+
<span class="cline-any cline-yes">5x</span>
|
|
144
144
|
<span class="cline-any cline-no"> </span>
|
|
145
145
|
<span class="cline-any cline-neutral"> </span>
|
|
146
146
|
<span class="cline-any cline-neutral"> </span>
|
|
147
147
|
<span class="cline-any cline-neutral"> </span>
|
|
148
|
-
<span class="cline-any cline-yes">
|
|
149
|
-
<span class="cline-any cline-yes">
|
|
148
|
+
<span class="cline-any cline-yes">5x</span>
|
|
149
|
+
<span class="cline-any cline-yes">5x</span>
|
|
150
150
|
<span class="cline-any cline-neutral"> </span>
|
|
151
151
|
<span class="cline-any cline-neutral"> </span>
|
|
152
152
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -155,16 +155,16 @@
|
|
|
155
155
|
<span class="cline-any cline-neutral"> </span>
|
|
156
156
|
<span class="cline-any cline-neutral"> </span>
|
|
157
157
|
<span class="cline-any cline-neutral"> </span>
|
|
158
|
-
<span class="cline-any cline-yes">
|
|
159
|
-
<span class="cline-any cline-yes">
|
|
160
|
-
<span class="cline-any cline-yes">
|
|
158
|
+
<span class="cline-any cline-yes">5x</span>
|
|
159
|
+
<span class="cline-any cline-yes">5x</span>
|
|
160
|
+
<span class="cline-any cline-yes">5x</span>
|
|
161
161
|
<span class="cline-any cline-neutral"> </span>
|
|
162
|
-
<span class="cline-any cline-yes">
|
|
163
|
-
<span class="cline-any cline-yes">
|
|
164
|
-
<span class="cline-any cline-yes">
|
|
162
|
+
<span class="cline-any cline-yes">5x</span>
|
|
163
|
+
<span class="cline-any cline-yes">5x</span>
|
|
164
|
+
<span class="cline-any cline-yes">6x</span>
|
|
165
165
|
<span class="cline-any cline-neutral"> </span>
|
|
166
|
-
<span class="cline-any cline-yes">
|
|
167
|
-
<span class="cline-any cline-yes">
|
|
166
|
+
<span class="cline-any cline-yes">5x</span>
|
|
167
|
+
<span class="cline-any cline-yes">5x</span>
|
|
168
168
|
<span class="cline-any cline-neutral"> </span>
|
|
169
169
|
<span class="cline-any cline-neutral"> </span>
|
|
170
170
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -225,7 +225,7 @@ export function printModelDecl(model: ModelNode, printWidth: number = <span clas
|
|
|
225
225
|
.filter(Boolean)
|
|
226
226
|
.join(' ');
|
|
227
227
|
const modePrefix = modifiers ? <span class="branch-0 cbranch-no" title="branch not covered" >`${modifiers} ` : '</span>';
|
|
228
|
-
const baseChain = model.bases && model.bases.length > 0 ? `${model.bases.join(' & ')} & ` :
|
|
228
|
+
const baseChain = model.bases && model.bases.length > 0 ? `${model.bases.join(' & ')} & ` : '';
|
|
229
229
|
const header = `${modePrefix}${model.name}: ${baseChain}{${commentSuffix}`;
|
|
230
230
|
|
|
231
231
|
const lines: string[] = [header];
|
|
@@ -277,7 +277,7 @@ function <span class="fstat-no" title="function not covered" >printTypeAlias(m</
|
|
|
277
277
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
278
278
|
Code coverage generated by
|
|
279
279
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
280
|
-
at 2026-05-
|
|
280
|
+
at 2026-05-04T13:24:25.753Z
|
|
281
281
|
</div>
|
|
282
282
|
<script src="prettify.js"></script>
|
|
283
283
|
<script>
|
|
@@ -817,7 +817,7 @@ function printResponseBlock(responses: OpResponseNode[]): string[] {
|
|
|
817
817
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
818
818
|
Code coverage generated by
|
|
819
819
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
820
|
-
at 2026-05-
|
|
820
|
+
at 2026-05-04T13:24:25.753Z
|
|
821
821
|
</div>
|
|
822
822
|
<script src="prettify.js"></script>
|
|
823
823
|
<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">47.12% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>41/87</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">46.87% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>45/96</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">45.45% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>5/11</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">48.61% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>35/72</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -205,13 +205,21 @@
|
|
|
205
205
|
<a name='L140'></a><a href='#L140'>140</a>
|
|
206
206
|
<a name='L141'></a><a href='#L141'>141</a>
|
|
207
207
|
<a name='L142'></a><a href='#L142'>142</a>
|
|
208
|
-
<a name='L143'></a><a href='#L143'>143</a
|
|
208
|
+
<a name='L143'></a><a href='#L143'>143</a>
|
|
209
|
+
<a name='L144'></a><a href='#L144'>144</a>
|
|
210
|
+
<a name='L145'></a><a href='#L145'>145</a>
|
|
211
|
+
<a name='L146'></a><a href='#L146'>146</a>
|
|
212
|
+
<a name='L147'></a><a href='#L147'>147</a>
|
|
213
|
+
<a name='L148'></a><a href='#L148'>148</a>
|
|
214
|
+
<a name='L149'></a><a href='#L149'>149</a>
|
|
215
|
+
<a name='L150'></a><a href='#L150'>150</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
209
216
|
<span class="cline-any cline-neutral"> </span>
|
|
210
217
|
<span class="cline-any cline-neutral"> </span>
|
|
211
218
|
<span class="cline-any cline-neutral"> </span>
|
|
212
219
|
<span class="cline-any cline-neutral"> </span>
|
|
213
220
|
<span class="cline-any cline-neutral"> </span>
|
|
214
|
-
<span class="cline-any cline-
|
|
221
|
+
<span class="cline-any cline-neutral"> </span>
|
|
222
|
+
<span class="cline-any cline-yes">36x</span>
|
|
215
223
|
<span class="cline-any cline-neutral"> </span>
|
|
216
224
|
<span class="cline-any cline-yes">23x</span>
|
|
217
225
|
<span class="cline-any cline-yes">23x</span>
|
|
@@ -236,7 +244,7 @@
|
|
|
236
244
|
<span class="cline-any cline-neutral"> </span>
|
|
237
245
|
<span class="cline-any cline-no"> </span>
|
|
238
246
|
<span class="cline-any cline-neutral"> </span>
|
|
239
|
-
<span class="cline-any cline-yes">
|
|
247
|
+
<span class="cline-any cline-yes">3x</span>
|
|
240
248
|
<span class="cline-any cline-neutral"> </span>
|
|
241
249
|
<span class="cline-any cline-no"> </span>
|
|
242
250
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -277,21 +285,21 @@
|
|
|
277
285
|
<span class="cline-any cline-neutral"> </span>
|
|
278
286
|
<span class="cline-any cline-neutral"> </span>
|
|
279
287
|
<span class="cline-any cline-neutral"> </span>
|
|
280
|
-
<span class="cline-any cline-yes">
|
|
281
|
-
<span class="cline-any cline-yes">
|
|
282
|
-
<span class="cline-any cline-yes">
|
|
283
|
-
<span class="cline-any cline-yes">
|
|
284
|
-
<span class="cline-any cline-yes">
|
|
285
|
-
<span class="cline-any cline-yes">
|
|
286
|
-
<span class="cline-any cline-yes">
|
|
287
|
-
<span class="cline-any cline-yes">
|
|
288
|
-
<span class="cline-any cline-yes">
|
|
288
|
+
<span class="cline-any cline-yes">6x</span>
|
|
289
|
+
<span class="cline-any cline-yes">6x</span>
|
|
290
|
+
<span class="cline-any cline-yes">6x</span>
|
|
291
|
+
<span class="cline-any cline-yes">6x</span>
|
|
292
|
+
<span class="cline-any cline-yes">6x</span>
|
|
293
|
+
<span class="cline-any cline-yes">6x</span>
|
|
294
|
+
<span class="cline-any cline-yes">6x</span>
|
|
295
|
+
<span class="cline-any cline-yes">6x</span>
|
|
296
|
+
<span class="cline-any cline-yes">6x</span>
|
|
289
297
|
<span class="cline-any cline-neutral"> </span>
|
|
290
298
|
<span class="cline-any cline-neutral"> </span>
|
|
291
299
|
<span class="cline-any cline-neutral"> </span>
|
|
292
|
-
<span class="cline-any cline-yes">
|
|
293
|
-
<span class="cline-any cline-yes">
|
|
294
|
-
<span class="cline-any cline-yes">
|
|
300
|
+
<span class="cline-any cline-yes">6x</span>
|
|
301
|
+
<span class="cline-any cline-yes">6x</span>
|
|
302
|
+
<span class="cline-any cline-yes">6x</span>
|
|
295
303
|
<span class="cline-any cline-no"> </span>
|
|
296
304
|
<span class="cline-any cline-no"> </span>
|
|
297
305
|
<span class="cline-any cline-no"> </span>
|
|
@@ -301,14 +309,14 @@
|
|
|
301
309
|
<span class="cline-any cline-neutral"> </span>
|
|
302
310
|
<span class="cline-any cline-neutral"> </span>
|
|
303
311
|
<span class="cline-any cline-neutral"> </span>
|
|
304
|
-
<span class="cline-any cline-yes">
|
|
305
|
-
<span class="cline-any cline-yes">
|
|
306
|
-
<span class="cline-any cline-yes">
|
|
307
|
-
<span class="cline-any cline-yes">
|
|
312
|
+
<span class="cline-any cline-yes">6x</span>
|
|
313
|
+
<span class="cline-any cline-yes">6x</span>
|
|
314
|
+
<span class="cline-any cline-yes">6x</span>
|
|
315
|
+
<span class="cline-any cline-yes">6x</span>
|
|
308
316
|
<span class="cline-any cline-no"> </span>
|
|
309
317
|
<span class="cline-any cline-no"> </span>
|
|
310
318
|
<span class="cline-any cline-neutral"> </span>
|
|
311
|
-
<span class="cline-any cline-yes">
|
|
319
|
+
<span class="cline-any cline-yes">6x</span>
|
|
312
320
|
<span class="cline-any cline-neutral"> </span>
|
|
313
321
|
<span class="cline-any cline-neutral"> </span>
|
|
314
322
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -320,6 +328,12 @@
|
|
|
320
328
|
<span class="cline-any cline-neutral"> </span>
|
|
321
329
|
<span class="cline-any cline-neutral"> </span>
|
|
322
330
|
<span class="cline-any cline-neutral"> </span>
|
|
331
|
+
<span class="cline-any cline-yes">9x</span>
|
|
332
|
+
<span class="cline-any cline-yes">2x</span>
|
|
333
|
+
<span class="cline-any cline-neutral"> </span>
|
|
334
|
+
<span class="cline-any cline-neutral"> </span>
|
|
335
|
+
<span class="cline-any cline-neutral"> </span>
|
|
336
|
+
<span class="cline-any cline-neutral"> </span>
|
|
323
337
|
<span class="cline-any cline-yes">5x</span>
|
|
324
338
|
<span class="cline-any cline-neutral"> </span>
|
|
325
339
|
<span class="cline-any cline-yes">2x</span>
|
|
@@ -335,23 +349,24 @@
|
|
|
335
349
|
<span class="cline-any cline-neutral"> </span>
|
|
336
350
|
<span class="cline-any cline-neutral"> </span>
|
|
337
351
|
<span class="cline-any cline-neutral"> </span>
|
|
338
|
-
<span class="cline-any cline-yes">
|
|
352
|
+
<span class="cline-any cline-yes">6x</span>
|
|
339
353
|
<span class="cline-any cline-no"> </span>
|
|
340
354
|
<span class="cline-any cline-neutral"> </span>
|
|
341
|
-
<span class="cline-any cline-yes">
|
|
355
|
+
<span class="cline-any cline-yes">6x</span>
|
|
342
356
|
<span class="cline-any cline-no"> </span>
|
|
343
357
|
<span class="cline-any cline-no"> </span>
|
|
344
358
|
<span class="cline-any cline-no"> </span>
|
|
345
359
|
<span class="cline-any cline-no"> </span>
|
|
346
360
|
<span class="cline-any cline-neutral"> </span>
|
|
347
361
|
<span class="cline-any cline-neutral"> </span>
|
|
348
|
-
<span class="cline-any cline-yes">
|
|
362
|
+
<span class="cline-any cline-yes">6x</span>
|
|
349
363
|
<span class="cline-any cline-neutral"> </span>
|
|
350
364
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import type { ContractTypeNode, FieldNode, InlineObjectTypeNode } from '@contractkit/core';
|
|
351
365
|
import { INDENT } from './indent.js';
|
|
352
366
|
|
|
353
367
|
// ─── Type expression printer ────────────────────────────────────────────────
|
|
354
368
|
|
|
369
|
+
/** Render a `ContractTypeNode` back to its `.ck` source string. */
|
|
355
370
|
export function printType(type: ContractTypeNode): string {
|
|
356
371
|
switch (type.kind) {
|
|
357
372
|
case 'scalar': {
|
|
@@ -378,7 +393,7 @@ export function printType(type: ContractTypeNode): string {
|
|
|
378
393
|
<span class="branch-3 cbranch-no" title="branch not covered" > case 'record':</span>
|
|
379
394
|
<span class="cstat-no" title="statement not covered" > return `record(${printType(type.key)}, ${printType(type.value)})`;</span>
|
|
380
395
|
case 'enum':
|
|
381
|
-
return `enum(${type.values.join(', ')})`;
|
|
396
|
+
return `enum(${type.values.map(formatEnumValue).join(', ')})`;
|
|
382
397
|
<span class="branch-5 cbranch-no" title="branch not covered" > case 'literal':</span>
|
|
383
398
|
<span class="cstat-no" title="statement not covered" > return typeof type.value === 'string' ? `literal("${type.value}")` : `literal(${type.value})`;</span>
|
|
384
399
|
<span class="branch-6 cbranch-no" title="branch not covered" > case 'union':</span>
|
|
@@ -412,7 +427,7 @@ function <span class="fstat-no" title="function not covered" >printInlineObjectC
|
|
|
412
427
|
/** Multi-line enum form — one value per line, used when single-line would exceed print width. */
|
|
413
428
|
export function <span class="fstat-no" title="function not covered" >printEnumExpanded(v</span>alues: string[], indent: string): string {
|
|
414
429
|
const innerIndent = <span class="cstat-no" title="statement not covered" >indent + INDENT;</span>
|
|
415
|
-
<span class="cstat-no" title="statement not covered" > return `enum(\n${values.map(<span class="fstat-no" title="function not covered" >v => <span class="cstat-no" title="statement not covered" >`</span>${innerIndent}${v}`</span>).join(',\n')}\n${indent})`;</span>
|
|
430
|
+
<span class="cstat-no" title="statement not covered" > return `enum(\n${values.map(<span class="fstat-no" title="function not covered" >v => <span class="cstat-no" title="statement not covered" >`</span>${innerIndent}${formatEnumValue(v)}`</span>).join(',\n')}\n${indent})`;</span>
|
|
416
431
|
}
|
|
417
432
|
|
|
418
433
|
// ─── Field printer ──────────────────────────────────────────────────────────
|
|
@@ -446,7 +461,7 @@ export function printField(field: FieldNode, indent: string, printWidth: number
|
|
|
446
461
|
let typeStr = printType(field.type);
|
|
447
462
|
<span class="missing-if-branch" title="if path not taken" >I</span>if (field.nullable) <span class="cstat-no" title="statement not covered" >typeStr += ' | null';</span>
|
|
448
463
|
const fullLine = `${indent}${field.name}${opt}: ${mods}${typeStr}${def}${comment}`;
|
|
449
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (field.type.kind === 'enum' &&
|
|
464
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (field.type.kind === 'enum' && !field.nullable && field.default === undefined && fullLine.length > printWidth) {
|
|
450
465
|
const enumStr = <span class="cstat-no" title="statement not covered" >printEnumExpanded(field.type.values, indent);</span>
|
|
451
466
|
<span class="cstat-no" title="statement not covered" > return `${indent}${field.name}${opt}: ${mods}${enumStr}${comment}`</span>;
|
|
452
467
|
}
|
|
@@ -460,6 +475,12 @@ export function <span class="fstat-no" title="function not covered" >printInline
|
|
|
460
475
|
|
|
461
476
|
// ─── Helpers ────────────────────────────────────────────────────────────────
|
|
462
477
|
|
|
478
|
+
/** Format a single enum value: bare identifier stays bare; anything else gets double-quoted. */
|
|
479
|
+
export function formatEnumValue(v: string): string {
|
|
480
|
+
if (/^[a-zA-Z_$][a-zA-Z0-9_$\-.]*$/.test(v)) return v;
|
|
481
|
+
return `"${v}"`;
|
|
482
|
+
}
|
|
483
|
+
|
|
463
484
|
/** Format a default value: quote strings that aren't valid bare identifiers. */
|
|
464
485
|
export function formatDefault(val: string | number | boolean): string {
|
|
465
486
|
if (typeof val === 'number' || typeof val === 'boolean') return String(val);
|
|
@@ -496,7 +517,7 @@ export function extractTrailingInlineObject(type: ContractTypeNode): {
|
|
|
496
517
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
497
518
|
Code coverage generated by
|
|
498
519
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
499
|
-
at 2026-05-
|
|
520
|
+
at 2026-05-04T13:24:25.753Z
|
|
500
521
|
</div>
|
|
501
522
|
<script src="prettify.js"></script>
|
|
502
523
|
<script>
|
package/dist/index.js
CHANGED
|
@@ -36,7 +36,7 @@ function printType(type) {
|
|
|
36
36
|
case "record":
|
|
37
37
|
return `record(${printType(type.key)}, ${printType(type.value)})`;
|
|
38
38
|
case "enum":
|
|
39
|
-
return `enum(${type.values.join(", ")})`;
|
|
39
|
+
return `enum(${type.values.map(formatEnumValue).join(", ")})`;
|
|
40
40
|
case "literal":
|
|
41
41
|
return typeof type.value === "string" ? `literal("${type.value}")` : `literal(${type.value})`;
|
|
42
42
|
case "union":
|
|
@@ -69,7 +69,7 @@ __name(printInlineObjectCompact, "printInlineObjectCompact");
|
|
|
69
69
|
function printEnumExpanded(values, indent) {
|
|
70
70
|
const innerIndent = indent + INDENT;
|
|
71
71
|
return `enum(
|
|
72
|
-
${values.map((v) => `${innerIndent}${v}`).join(",\n")}
|
|
72
|
+
${values.map((v) => `${innerIndent}${formatEnumValue(v)}`).join(",\n")}
|
|
73
73
|
${indent})`;
|
|
74
74
|
}
|
|
75
75
|
__name(printEnumExpanded, "printEnumExpanded");
|
|
@@ -109,6 +109,11 @@ function printInlineObjectExpanded(obj, indent, printWidth = 80) {
|
|
|
109
109
|
return obj.fields.map((f) => printField(f, indent, printWidth));
|
|
110
110
|
}
|
|
111
111
|
__name(printInlineObjectExpanded, "printInlineObjectExpanded");
|
|
112
|
+
function formatEnumValue(v) {
|
|
113
|
+
if (/^[a-zA-Z_$][a-zA-Z0-9_$\-.]*$/.test(v)) return v;
|
|
114
|
+
return `"${v}"`;
|
|
115
|
+
}
|
|
116
|
+
__name(formatEnumValue, "formatEnumValue");
|
|
112
117
|
function formatDefault(val) {
|
|
113
118
|
if (typeof val === "number" || typeof val === "boolean") return String(val);
|
|
114
119
|
if (/^[a-zA-Z_$][a-zA-Z0-9_$\-.]*$/.test(val)) return val;
|