@typespec-dev/emitter-typebox 0.2.0 → 0.4.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.
- package/README.md +70 -0
- package/dist/src/components/TypeBoxSchema.d.ts.map +1 -1
- package/dist/src/components/TypeBoxSchema.js +10 -5
- package/dist/src/components/TypeBoxSchema.js.map +1 -1
- package/dist/src/components/TypeBoxSchema.jsx +10 -5
- package/dist/src/components/TypeBoxSchema.jsx.map +1 -1
- package/dist/src/typeboxBaseSchema.d.ts +3 -2
- package/dist/src/typeboxBaseSchema.d.ts.map +1 -1
- package/dist/src/typeboxBaseSchema.js +207 -74
- package/dist/src/typeboxBaseSchema.js.map +1 -1
- package/dist/src/typeboxBaseSchema.jsx +148 -52
- package/dist/src/typeboxBaseSchema.jsx.map +1 -1
- package/dist/src/typeboxConstraints.d.ts +10 -0
- package/dist/src/typeboxConstraints.d.ts.map +1 -0
- package/dist/src/typeboxConstraints.js +308 -0
- package/dist/src/typeboxConstraints.js.map +1 -0
- package/dist/src/typeboxConstraints.jsx +246 -0
- package/dist/src/typeboxConstraints.jsx.map +1 -0
- package/dist/test/arrays.test.js +1 -1
- package/dist/test/arrays.test.js.map +1 -1
- package/dist/test/arrays.test.jsx +1 -1
- package/dist/test/arrays.test.jsx.map +1 -1
- package/dist/test/constraints.test.d.ts +2 -0
- package/dist/test/constraints.test.d.ts.map +1 -0
- package/dist/test/constraints.test.js +414 -0
- package/dist/test/constraints.test.js.map +1 -0
- package/dist/test/constraints.test.jsx +279 -0
- package/dist/test/constraints.test.jsx.map +1 -0
- package/dist/test/dictionaries.test.js +15 -1
- package/dist/test/dictionaries.test.js.map +1 -1
- package/dist/test/dictionaries.test.jsx +11 -1
- package/dist/test/dictionaries.test.jsx.map +1 -1
- package/dist/test/discriminated-unions.test.d.ts +2 -0
- package/dist/test/discriminated-unions.test.d.ts.map +1 -0
- package/dist/test/discriminated-unions.test.js +156 -0
- package/dist/test/discriminated-unions.test.js.map +1 -0
- package/dist/test/discriminated-unions.test.jsx +105 -0
- package/dist/test/discriminated-unions.test.jsx.map +1 -0
- package/dist/test/emitter/custom-scalars.test.d.ts +2 -0
- package/dist/test/emitter/custom-scalars.test.d.ts.map +1 -0
- package/dist/test/emitter/custom-scalars.test.js +42 -0
- package/dist/test/emitter/custom-scalars.test.js.map +1 -0
- package/dist/test/emitter/custom-scalars.test.jsx +38 -0
- package/dist/test/emitter/custom-scalars.test.jsx.map +1 -0
- package/dist/test/emitter/discriminated-unions.test.d.ts +2 -0
- package/dist/test/emitter/discriminated-unions.test.d.ts.map +1 -0
- package/dist/test/emitter/discriminated-unions.test.js +52 -0
- package/dist/test/emitter/discriminated-unions.test.js.map +1 -0
- package/dist/test/emitter/discriminated-unions.test.jsx +48 -0
- package/dist/test/emitter/discriminated-unions.test.jsx.map +1 -0
- package/dist/test/emitter/inheritance.test.d.ts +2 -0
- package/dist/test/emitter/inheritance.test.d.ts.map +1 -0
- package/dist/test/emitter/inheritance.test.js +56 -0
- package/dist/test/emitter/inheritance.test.js.map +1 -0
- package/dist/test/emitter/inheritance.test.jsx +50 -0
- package/dist/test/emitter/inheritance.test.jsx.map +1 -0
- package/dist/test/emitter/recursive.test.d.ts +2 -0
- package/dist/test/emitter/recursive.test.d.ts.map +1 -0
- package/dist/test/emitter/recursive.test.js +36 -0
- package/dist/test/emitter/recursive.test.js.map +1 -0
- package/dist/test/emitter/recursive.test.jsx +32 -0
- package/dist/test/emitter/recursive.test.jsx.map +1 -0
- package/dist/test/emitter/tuples.test.d.ts +2 -0
- package/dist/test/emitter/tuples.test.d.ts.map +1 -0
- package/dist/test/emitter/tuples.test.js +22 -0
- package/dist/test/emitter/tuples.test.js.map +1 -0
- package/dist/test/emitter/tuples.test.jsx +20 -0
- package/dist/test/emitter/tuples.test.jsx.map +1 -0
- package/dist/test/inheritance.test.d.ts +2 -0
- package/dist/test/inheritance.test.d.ts.map +1 -0
- package/dist/test/inheritance.test.js +162 -0
- package/dist/test/inheritance.test.js.map +1 -0
- package/dist/test/inheritance.test.jsx +92 -0
- package/dist/test/inheritance.test.jsx.map +1 -0
- package/dist/test/models.test.js +37 -2
- package/dist/test/models.test.js.map +1 -1
- package/dist/test/models.test.jsx +29 -2
- package/dist/test/models.test.jsx.map +1 -1
- package/dist/test/nullable.test.js +1 -1
- package/dist/test/nullable.test.js.map +1 -1
- package/dist/test/nullable.test.jsx +1 -1
- package/dist/test/nullable.test.jsx.map +1 -1
- package/dist/test/optionality.test.js +2 -2
- package/dist/test/optionality.test.js.map +1 -1
- package/dist/test/optionality.test.jsx +2 -2
- package/dist/test/optionality.test.jsx.map +1 -1
- package/dist/test/recursive.test.d.ts +2 -0
- package/dist/test/recursive.test.d.ts.map +1 -0
- package/dist/test/recursive.test.js +137 -0
- package/dist/test/recursive.test.js.map +1 -0
- package/dist/test/recursive.test.jsx +75 -0
- package/dist/test/recursive.test.jsx.map +1 -0
- package/dist/test/scalars.test.js +13 -13
- package/dist/test/scalars.test.js.map +1 -1
- package/dist/test/scalars.test.jsx +13 -13
- package/dist/test/scalars.test.jsx.map +1 -1
- package/dist/test/tuples.test.d.ts +2 -0
- package/dist/test/tuples.test.d.ts.map +1 -0
- package/dist/test/tuples.test.js +67 -0
- package/dist/test/tuples.test.js.map +1 -0
- package/dist/test/tuples.test.jsx +42 -0
- package/dist/test/tuples.test.jsx.map +1 -0
- package/dist/test/unions.test.js +1 -1
- package/dist/test/unions.test.js.map +1 -1
- package/dist/test/unions.test.jsx +1 -1
- package/dist/test/unions.test.jsx.map +1 -1
- package/package.json +7 -7
|
@@ -1,9 +1,43 @@
|
|
|
1
|
-
import { For, refkey } from '@alloy-js/core';
|
|
1
|
+
import { createContext, For, refkey } from '@alloy-js/core';
|
|
2
2
|
import { ArrayExpression, MemberExpression, ObjectExpression, ObjectProperty, } from '@alloy-js/typescript';
|
|
3
|
+
import { getDiscriminator, getDiscriminatedUnionFromInheritance, } from '@typespec/compiler';
|
|
3
4
|
import { useTsp } from '@typespec/emitter-framework';
|
|
4
5
|
import { TypeBoxSchema } from './components/TypeBoxSchema.jsx';
|
|
6
|
+
import { buildTypeboxOpts } from './typeboxConstraints.jsx';
|
|
5
7
|
import { isRecord, refkeySym, shouldReference, typeboxCall } from './utils.jsx';
|
|
6
|
-
export
|
|
8
|
+
export const RecursiveModelContext = createContext();
|
|
9
|
+
function isSelfReferencing($, model) {
|
|
10
|
+
const visited = new Set();
|
|
11
|
+
function check(type) {
|
|
12
|
+
if (visited.has(type))
|
|
13
|
+
return false;
|
|
14
|
+
visited.add(type);
|
|
15
|
+
if (type === model)
|
|
16
|
+
return true;
|
|
17
|
+
if (type.kind === 'Model') {
|
|
18
|
+
if ($.array.is(type)) {
|
|
19
|
+
return check(type.indexer.value);
|
|
20
|
+
}
|
|
21
|
+
if (isRecord($.program, type)) {
|
|
22
|
+
return check(type.indexer.value);
|
|
23
|
+
}
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
if (type.kind === 'Union') {
|
|
27
|
+
for (const variant of type.variants.values()) {
|
|
28
|
+
if (check(variant.type))
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
for (const prop of model.properties.values()) {
|
|
35
|
+
if (check(prop.type))
|
|
36
|
+
return true;
|
|
37
|
+
}
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
export function typeboxBaseSchemaParts(type, member) {
|
|
7
41
|
const { $ } = useTsp();
|
|
8
42
|
switch (type.kind) {
|
|
9
43
|
case 'Intrinsic':
|
|
@@ -13,9 +47,9 @@ export function typeboxBaseSchemaParts(type) {
|
|
|
13
47
|
case 'Boolean':
|
|
14
48
|
return literalBaseType($, type);
|
|
15
49
|
case 'Scalar':
|
|
16
|
-
return scalarBaseType($, type);
|
|
50
|
+
return scalarBaseType($, type, member);
|
|
17
51
|
case 'Model':
|
|
18
|
-
return modelBaseType($, type);
|
|
52
|
+
return modelBaseType($, type, member);
|
|
19
53
|
case 'Union':
|
|
20
54
|
return unionBaseType(type);
|
|
21
55
|
case 'Enum':
|
|
@@ -23,7 +57,7 @@ export function typeboxBaseSchemaParts(type) {
|
|
|
23
57
|
case 'Tuple':
|
|
24
58
|
return tupleBaseType(type);
|
|
25
59
|
case 'ModelProperty':
|
|
26
|
-
return typeboxBaseSchemaParts(type.type);
|
|
60
|
+
return typeboxBaseSchemaParts(type.type, type);
|
|
27
61
|
case 'EnumMember':
|
|
28
62
|
return type.value
|
|
29
63
|
? literalBaseType($, $.literal.create(type.value))
|
|
@@ -41,94 +75,157 @@ function literalBaseType($, type) {
|
|
|
41
75
|
return typeboxCall('Literal', `${type.value}`);
|
|
42
76
|
}
|
|
43
77
|
}
|
|
44
|
-
function
|
|
45
|
-
return (<ObjectExpression>
|
|
46
|
-
<ObjectProperty name="format">{`"${format}"`}</ObjectProperty>
|
|
47
|
-
</ObjectExpression>);
|
|
48
|
-
}
|
|
49
|
-
function scalarBaseType($, type) {
|
|
78
|
+
function scalarBaseType($, type, member) {
|
|
50
79
|
if (type.baseScalar && shouldReference($.program, type.baseScalar)) {
|
|
51
80
|
return (<MemberExpression>
|
|
52
81
|
<MemberExpression.Part refkey={refkey(type.baseScalar, refkeySym)}/>
|
|
53
82
|
</MemberExpression>);
|
|
54
83
|
}
|
|
55
84
|
if ($.scalar.extendsBoolean(type)) {
|
|
56
|
-
|
|
85
|
+
const opts = buildTypeboxOpts($, type, { member });
|
|
86
|
+
return typeboxCall('Boolean', ...(opts ? [opts] : []));
|
|
57
87
|
}
|
|
58
88
|
else if ($.scalar.extendsNumeric(type)) {
|
|
89
|
+
const opts = buildTypeboxOpts($, type, { member });
|
|
59
90
|
if ($.scalar.extendsInteger(type)) {
|
|
60
91
|
if ($.scalar.extendsInt32(type) ||
|
|
61
92
|
$.scalar.extendsUint32(type) ||
|
|
62
93
|
$.scalar.extendsSafeint(type)) {
|
|
63
|
-
return typeboxCall('Integer');
|
|
94
|
+
return typeboxCall('Integer', ...(opts ? [opts] : []));
|
|
64
95
|
}
|
|
65
96
|
else {
|
|
66
97
|
return typeboxCall('BigInt');
|
|
67
98
|
}
|
|
68
99
|
}
|
|
69
100
|
else {
|
|
70
|
-
return typeboxCall('Number');
|
|
101
|
+
return typeboxCall('Number', ...(opts ? [opts] : []));
|
|
71
102
|
}
|
|
72
103
|
}
|
|
73
104
|
else if ($.scalar.extendsString(type)) {
|
|
74
105
|
if ($.scalar.extendsUrl(type)) {
|
|
75
|
-
|
|
106
|
+
const opts = buildTypeboxOpts($, type, { member, format: 'uri' });
|
|
107
|
+
return typeboxCall('String', ...(opts ? [opts] : []));
|
|
76
108
|
}
|
|
77
|
-
|
|
109
|
+
const opts = buildTypeboxOpts($, type, { member });
|
|
110
|
+
return typeboxCall('String', ...(opts ? [opts] : []));
|
|
78
111
|
}
|
|
79
112
|
else if ($.scalar.extendsBytes(type)) {
|
|
80
113
|
return typeboxCall('Any');
|
|
81
114
|
}
|
|
82
115
|
else if ($.scalar.extendsPlainDate(type)) {
|
|
83
|
-
|
|
116
|
+
const opts = buildTypeboxOpts($, type, { member, format: 'date' });
|
|
117
|
+
return typeboxCall('String', ...(opts ? [opts] : []));
|
|
84
118
|
}
|
|
85
119
|
else if ($.scalar.extendsPlainTime(type)) {
|
|
86
|
-
|
|
120
|
+
const opts = buildTypeboxOpts($, type, { member, format: 'time' });
|
|
121
|
+
return typeboxCall('String', ...(opts ? [opts] : []));
|
|
87
122
|
}
|
|
88
123
|
else if ($.scalar.extendsUtcDateTime(type)) {
|
|
89
124
|
const encoding = $.scalar.getEncoding(type);
|
|
90
125
|
if (encoding === undefined) {
|
|
91
|
-
|
|
126
|
+
const opts = buildTypeboxOpts($, type, { member, format: 'date-time' });
|
|
127
|
+
return typeboxCall('String', ...(opts ? [opts] : []));
|
|
92
128
|
}
|
|
93
129
|
else if (encoding.encoding === 'unixTimestamp') {
|
|
94
|
-
return scalarBaseType($, encoding.type);
|
|
130
|
+
return scalarBaseType($, encoding.type, member);
|
|
95
131
|
}
|
|
96
132
|
else if (encoding.encoding === 'rfc3339') {
|
|
97
|
-
|
|
133
|
+
const opts = buildTypeboxOpts($, type, { member, format: 'date-time' });
|
|
134
|
+
return typeboxCall('String', ...(opts ? [opts] : []));
|
|
98
135
|
}
|
|
99
136
|
else {
|
|
100
|
-
return scalarBaseType($, encoding.type);
|
|
137
|
+
return scalarBaseType($, encoding.type, member);
|
|
101
138
|
}
|
|
102
139
|
}
|
|
103
140
|
else if ($.scalar.extendsOffsetDateTime(type)) {
|
|
104
141
|
const encoding = $.scalar.getEncoding(type);
|
|
105
142
|
if (encoding === undefined) {
|
|
106
|
-
|
|
143
|
+
const opts = buildTypeboxOpts($, type, { member, format: 'date-time' });
|
|
144
|
+
return typeboxCall('String', ...(opts ? [opts] : []));
|
|
107
145
|
}
|
|
108
146
|
else if (encoding.encoding === 'rfc3339') {
|
|
109
|
-
|
|
147
|
+
const opts = buildTypeboxOpts($, type, { member, format: 'date-time' });
|
|
148
|
+
return typeboxCall('String', ...(opts ? [opts] : []));
|
|
110
149
|
}
|
|
111
150
|
else {
|
|
112
|
-
return scalarBaseType($, encoding.type);
|
|
151
|
+
return scalarBaseType($, encoding.type, member);
|
|
113
152
|
}
|
|
114
153
|
}
|
|
115
154
|
else if ($.scalar.extendsDuration(type)) {
|
|
116
155
|
const encoding = $.scalar.getEncoding(type);
|
|
117
156
|
if (encoding === undefined || encoding.encoding === 'ISO8601') {
|
|
118
|
-
|
|
157
|
+
const opts = buildTypeboxOpts($, type, { member, format: 'duration' });
|
|
158
|
+
return typeboxCall('String', ...(opts ? [opts] : []));
|
|
119
159
|
}
|
|
120
160
|
else {
|
|
121
|
-
return scalarBaseType($, encoding.type);
|
|
161
|
+
return scalarBaseType($, encoding.type, member);
|
|
122
162
|
}
|
|
123
163
|
}
|
|
124
164
|
else {
|
|
125
165
|
return typeboxCall('Any');
|
|
126
166
|
}
|
|
127
167
|
}
|
|
128
|
-
function
|
|
168
|
+
function hasDiscriminatedAncestor($, type) {
|
|
169
|
+
let current = type.baseModel;
|
|
170
|
+
while (current) {
|
|
171
|
+
if (getDiscriminator($.program, current))
|
|
172
|
+
return true;
|
|
173
|
+
current = current.baseModel;
|
|
174
|
+
}
|
|
175
|
+
return false;
|
|
176
|
+
}
|
|
177
|
+
function buildObjectFromProperties(properties) {
|
|
178
|
+
const members = (<ObjectExpression>
|
|
179
|
+
<For each={properties} comma hardline enderPunctuation>
|
|
180
|
+
{function (prop) {
|
|
181
|
+
const schema = <TypeBoxSchema type={prop} nested/>;
|
|
182
|
+
return (<ObjectProperty name={prop.name}>
|
|
183
|
+
{prop.optional ? typeboxCall('Optional', schema) : schema}
|
|
184
|
+
</ObjectProperty>);
|
|
185
|
+
}}
|
|
186
|
+
</For>
|
|
187
|
+
</ObjectExpression>);
|
|
188
|
+
return typeboxCall('Object', members);
|
|
189
|
+
}
|
|
190
|
+
function modelBaseType($, type, member) {
|
|
129
191
|
if ($.array.is(type)) {
|
|
130
|
-
|
|
192
|
+
const opts = buildTypeboxOpts($, type, { member });
|
|
193
|
+
return typeboxCall('Array', <TypeBoxSchema type={type.indexer.value} nested/>, ...(opts ? [opts] : []));
|
|
194
|
+
}
|
|
195
|
+
const discriminator = getDiscriminator($.program, type);
|
|
196
|
+
if (discriminator) {
|
|
197
|
+
const [discUnion] = getDiscriminatedUnionFromInheritance(type, discriminator);
|
|
198
|
+
if (discUnion && discUnion.variants.size > 0) {
|
|
199
|
+
const variants = [...discUnion.variants.values()];
|
|
200
|
+
return typeboxCall('Union', <ArrayExpression>
|
|
201
|
+
<For each={variants} comma line>
|
|
202
|
+
{function (variant) {
|
|
203
|
+
return <TypeBoxSchema type={variant} nested/>;
|
|
204
|
+
}}
|
|
205
|
+
</For>
|
|
206
|
+
</ArrayExpression>);
|
|
207
|
+
}
|
|
131
208
|
}
|
|
209
|
+
if (hasDiscriminatedAncestor($, type)) {
|
|
210
|
+
const allProperties = $.model.getProperties(type, { includeExtended: true });
|
|
211
|
+
if (allProperties.size > 0) {
|
|
212
|
+
return buildObjectFromProperties([...allProperties.values()]);
|
|
213
|
+
}
|
|
214
|
+
return typeboxCall('Object', <ObjectExpression />);
|
|
215
|
+
}
|
|
216
|
+
const recursive = isSelfReferencing($, type);
|
|
217
|
+
const schema = recursive ? (<RecursiveModelContext.Provider value={type}>
|
|
218
|
+
{modelSchemaBody($, type)}
|
|
219
|
+
</RecursiveModelContext.Provider>) : (modelSchemaBody($, type));
|
|
220
|
+
if (recursive) {
|
|
221
|
+
return typeboxCall('Recursive', <>
|
|
222
|
+
{'This => '}
|
|
223
|
+
{schema}
|
|
224
|
+
</>);
|
|
225
|
+
}
|
|
226
|
+
return schema;
|
|
227
|
+
}
|
|
228
|
+
function modelSchemaBody($, type) {
|
|
132
229
|
let recordPart;
|
|
133
230
|
if (isRecord($.program, type) ||
|
|
134
231
|
(!!type.baseModel &&
|
|
@@ -138,37 +235,36 @@ function modelBaseType($, type) {
|
|
|
138
235
|
}
|
|
139
236
|
let objectPart;
|
|
140
237
|
if (type.properties.size > 0) {
|
|
141
|
-
|
|
142
|
-
<For each={type.properties.values()} comma hardline enderPunctuation>
|
|
143
|
-
{function (prop) {
|
|
144
|
-
const schema = <TypeBoxSchema type={prop} nested/>;
|
|
145
|
-
return (<ObjectProperty name={prop.name}>
|
|
146
|
-
{prop.optional ? typeboxCall('Optional', schema) : schema}
|
|
147
|
-
</ObjectProperty>);
|
|
148
|
-
}}
|
|
149
|
-
</For>
|
|
150
|
-
</ObjectExpression>);
|
|
151
|
-
objectPart = typeboxCall('Object', members);
|
|
152
|
-
}
|
|
153
|
-
if (!objectPart && !recordPart) {
|
|
154
|
-
return typeboxCall('Object', <ObjectExpression />);
|
|
238
|
+
objectPart = buildObjectFromProperties([...type.properties.values()]);
|
|
155
239
|
}
|
|
240
|
+
let ownSchema;
|
|
156
241
|
if (objectPart && recordPart) {
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
{
|
|
242
|
+
const parts = [objectPart, recordPart];
|
|
243
|
+
ownSchema = typeboxCall('Intersect', <ArrayExpression>
|
|
244
|
+
<For each={parts} comma line>
|
|
245
|
+
{function (part) {
|
|
246
|
+
return part;
|
|
247
|
+
}}
|
|
248
|
+
</For>
|
|
160
249
|
</ArrayExpression>);
|
|
161
250
|
}
|
|
162
|
-
|
|
251
|
+
else {
|
|
252
|
+
ownSchema = objectPart ?? recordPart ?? typeboxCall('Object', <ObjectExpression />);
|
|
253
|
+
}
|
|
163
254
|
if (type.baseModel && shouldReference($.program, type.baseModel)) {
|
|
255
|
+
const baseRef = (<MemberExpression>
|
|
256
|
+
<MemberExpression.Part refkey={refkey(type.baseModel, refkeySym)}/>
|
|
257
|
+
</MemberExpression>);
|
|
258
|
+
const intersectParts = [baseRef, ownSchema];
|
|
164
259
|
return typeboxCall('Intersect', <ArrayExpression>
|
|
165
|
-
<
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
260
|
+
<For each={intersectParts} comma line>
|
|
261
|
+
{function (part) {
|
|
262
|
+
return part;
|
|
263
|
+
}}
|
|
264
|
+
</For>
|
|
169
265
|
</ArrayExpression>);
|
|
170
266
|
}
|
|
171
|
-
return
|
|
267
|
+
return ownSchema;
|
|
172
268
|
}
|
|
173
269
|
function unionBaseType(type) {
|
|
174
270
|
return typeboxCall('Union', <ArrayExpression>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typeboxBaseSchema.jsx","sourceRoot":"","sources":["../../src/typeboxBaseSchema.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"typeboxBaseSchema.jsx","sourceRoot":"","sources":["../../src/typeboxBaseSchema.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Children } from '@alloy-js/core/jsx-runtime';
|
|
2
|
+
import { ModelProperty, Type } from '@typespec/compiler';
|
|
3
|
+
import { Typekit } from '@typespec/compiler/typekit';
|
|
4
|
+
interface BuildTypeboxOptsConfig {
|
|
5
|
+
member?: ModelProperty;
|
|
6
|
+
format?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function buildTypeboxOpts($: Typekit, type: Type, config?: BuildTypeboxOptsConfig): Children | undefined;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=typeboxConstraints.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typeboxConstraints.d.ts","sourceRoot":"","sources":["../../src/typeboxConstraints.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAEtD,OAAO,EAAyB,aAAa,EAAU,IAAI,EAAE,MAAM,oBAAoB,CAAC;AACxF,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAIrD,UAAU,sBAAsB;IAC9B,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,gBAAgB,CAC9B,CAAC,EAAE,OAAO,EACV,IAAI,EAAE,IAAI,EACV,MAAM,CAAC,EAAE,sBAAsB,GAC9B,QAAQ,GAAG,SAAS,CAqCtB"}
|
|
@@ -0,0 +1,308 @@
|
|
|
1
|
+
import { createComponent as _$createComponent } from "@alloy-js/core/jsx-runtime";
|
|
2
|
+
import { For } from '@alloy-js/core';
|
|
3
|
+
import { ObjectExpression, ObjectProperty } from '@alloy-js/typescript';
|
|
4
|
+
import { getFormat, getPattern } from '@typespec/compiler';
|
|
5
|
+
import { ValueExpression } from '@typespec/emitter-framework/typescript';
|
|
6
|
+
import { isBuiltIn, shouldReference } from "./utils.js";
|
|
7
|
+
export function buildTypeboxOpts($, type, config) {
|
|
8
|
+
const member = config?.member;
|
|
9
|
+
const properties = [];
|
|
10
|
+
let hasFormat = false;
|
|
11
|
+
if ($.scalar.is(type)) {
|
|
12
|
+
if ($.scalar.extendsString(type)) {
|
|
13
|
+
hasFormat = collectStringConstraints($, type, member, properties);
|
|
14
|
+
} else if ($.scalar.extendsNumeric(type)) {
|
|
15
|
+
collectNumericConstraints($, type, member, properties);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
if (!hasFormat && config?.format) {
|
|
19
|
+
properties.push(_$createComponent(ObjectProperty, {
|
|
20
|
+
name: "format",
|
|
21
|
+
get children() {
|
|
22
|
+
return `"${config.format}"`;
|
|
23
|
+
}
|
|
24
|
+
}));
|
|
25
|
+
}
|
|
26
|
+
if (type.kind === 'Model' && $.array.is(type)) {
|
|
27
|
+
collectArrayConstraints($, type, member, properties);
|
|
28
|
+
}
|
|
29
|
+
collectDescription($, type, member, properties);
|
|
30
|
+
collectDefault(member, properties);
|
|
31
|
+
if (properties.length === 0) {
|
|
32
|
+
return undefined;
|
|
33
|
+
}
|
|
34
|
+
return _$createComponent(ObjectExpression, {
|
|
35
|
+
get children() {
|
|
36
|
+
return _$createComponent(For, {
|
|
37
|
+
each: properties,
|
|
38
|
+
comma: true,
|
|
39
|
+
hardline: true,
|
|
40
|
+
children: function (prop) {
|
|
41
|
+
return prop;
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
function getDecoratorSources($, type, member) {
|
|
48
|
+
if (!$.scalar.is(type)) {
|
|
49
|
+
return [...(member ? [member] : []), type];
|
|
50
|
+
}
|
|
51
|
+
const sources = [...(member ? [member] : []), type];
|
|
52
|
+
let current = type.baseScalar;
|
|
53
|
+
while (current && !shouldReference($.program, current)) {
|
|
54
|
+
sources.push(current);
|
|
55
|
+
current = current.baseScalar;
|
|
56
|
+
}
|
|
57
|
+
return sources;
|
|
58
|
+
}
|
|
59
|
+
function maxNumeric(a, b) {
|
|
60
|
+
if (a === undefined) return b;
|
|
61
|
+
if (b === undefined) return a;
|
|
62
|
+
return Math.max(a, b);
|
|
63
|
+
}
|
|
64
|
+
function minNumeric(a, b) {
|
|
65
|
+
if (a === undefined) return b;
|
|
66
|
+
if (b === undefined) return a;
|
|
67
|
+
return Math.min(a, b);
|
|
68
|
+
}
|
|
69
|
+
function collectStringConstraints($, type, member, properties) {
|
|
70
|
+
const sources = getDecoratorSources($, type, member);
|
|
71
|
+
let minLength;
|
|
72
|
+
let maxLength;
|
|
73
|
+
let pattern;
|
|
74
|
+
let format;
|
|
75
|
+
for (const source of sources.reverse()) {
|
|
76
|
+
const srcMinLength = $.type.minLength(source);
|
|
77
|
+
const srcMaxLength = $.type.maxLength(source);
|
|
78
|
+
const srcPattern = getPattern($.program, source);
|
|
79
|
+
const srcFormat = getFormat($.program, source);
|
|
80
|
+
minLength = maxNumeric(minLength, srcMinLength);
|
|
81
|
+
maxLength = minNumeric(maxLength, srcMaxLength);
|
|
82
|
+
pattern = pattern ?? srcPattern;
|
|
83
|
+
format = format ?? srcFormat;
|
|
84
|
+
}
|
|
85
|
+
if (minLength !== undefined) {
|
|
86
|
+
properties.push(_$createComponent(ObjectProperty, {
|
|
87
|
+
name: "minLength",
|
|
88
|
+
children: `${minLength}`
|
|
89
|
+
}));
|
|
90
|
+
}
|
|
91
|
+
if (maxLength !== undefined) {
|
|
92
|
+
properties.push(_$createComponent(ObjectProperty, {
|
|
93
|
+
name: "maxLength",
|
|
94
|
+
children: `${maxLength}`
|
|
95
|
+
}));
|
|
96
|
+
}
|
|
97
|
+
if (pattern !== undefined) {
|
|
98
|
+
properties.push(_$createComponent(ObjectProperty, {
|
|
99
|
+
name: "pattern",
|
|
100
|
+
get children() {
|
|
101
|
+
return `"${pattern.replace(/\\/g, '\\\\').replace(/"/g, '\\"')}"`;
|
|
102
|
+
}
|
|
103
|
+
}));
|
|
104
|
+
}
|
|
105
|
+
if (format !== undefined) {
|
|
106
|
+
properties.push(_$createComponent(ObjectProperty, {
|
|
107
|
+
name: "format",
|
|
108
|
+
children: `"${format}"`
|
|
109
|
+
}));
|
|
110
|
+
}
|
|
111
|
+
return format !== undefined;
|
|
112
|
+
}
|
|
113
|
+
function intrinsicNumericConstraints($, type) {
|
|
114
|
+
if (!$.scalar.is(type)) return {};
|
|
115
|
+
const knownType = $.scalar.getStdBase(type);
|
|
116
|
+
if (!knownType || !$.scalar.extendsNumeric(knownType)) return {};
|
|
117
|
+
if ($.scalar.extendsInt8(knownType)) {
|
|
118
|
+
return {
|
|
119
|
+
min: -(1 << 7),
|
|
120
|
+
max: (1 << 7) - 1
|
|
121
|
+
};
|
|
122
|
+
} else if ($.scalar.extendsInt16(knownType)) {
|
|
123
|
+
return {
|
|
124
|
+
min: -(1 << 15),
|
|
125
|
+
max: (1 << 15) - 1
|
|
126
|
+
};
|
|
127
|
+
} else if ($.scalar.extendsInt32(knownType)) {
|
|
128
|
+
return {
|
|
129
|
+
min: Number(-(1n << 31n)),
|
|
130
|
+
max: Number((1n << 31n) - 1n)
|
|
131
|
+
};
|
|
132
|
+
} else if ($.scalar.extendsUint8(knownType)) {
|
|
133
|
+
return {
|
|
134
|
+
min: 0,
|
|
135
|
+
max: (1 << 8) - 1
|
|
136
|
+
};
|
|
137
|
+
} else if ($.scalar.extendsUint16(knownType)) {
|
|
138
|
+
return {
|
|
139
|
+
min: 0,
|
|
140
|
+
max: (1 << 16) - 1
|
|
141
|
+
};
|
|
142
|
+
} else if ($.scalar.extendsUint32(knownType)) {
|
|
143
|
+
return {
|
|
144
|
+
min: 0,
|
|
145
|
+
max: Number((1n << 32n) - 1n)
|
|
146
|
+
};
|
|
147
|
+
} else if ($.scalar.extendsSafeint(knownType)) {
|
|
148
|
+
return {
|
|
149
|
+
min: Number.MIN_SAFE_INTEGER,
|
|
150
|
+
max: Number.MAX_SAFE_INTEGER
|
|
151
|
+
};
|
|
152
|
+
} else if ($.scalar.extendsFloat32(knownType)) {
|
|
153
|
+
return {
|
|
154
|
+
min: -3.4028235e38,
|
|
155
|
+
max: 3.4028235e38
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
return {};
|
|
159
|
+
}
|
|
160
|
+
function assignNumericConstraints(target, source) {
|
|
161
|
+
target.min = maxNumeric(target.min, source.min);
|
|
162
|
+
target.max = minNumeric(target.max, source.max);
|
|
163
|
+
target.minExclusive = maxNumeric(target.minExclusive, source.minExclusive);
|
|
164
|
+
target.maxExclusive = minNumeric(target.maxExclusive, source.maxExclusive);
|
|
165
|
+
}
|
|
166
|
+
function collectNumericConstraints($, type, member, properties) {
|
|
167
|
+
const sources = getDecoratorSources($, type, member);
|
|
168
|
+
const intrinsic = intrinsicNumericConstraints($, type);
|
|
169
|
+
const decorator = {};
|
|
170
|
+
for (const source of sources) {
|
|
171
|
+
const srcConstraints = {
|
|
172
|
+
min: $.type.minValue(source),
|
|
173
|
+
max: $.type.maxValue(source),
|
|
174
|
+
minExclusive: $.type.minValueExclusive(source),
|
|
175
|
+
maxExclusive: $.type.maxValueExclusive(source)
|
|
176
|
+
};
|
|
177
|
+
assignNumericConstraints(decorator, srcConstraints);
|
|
178
|
+
}
|
|
179
|
+
if (decorator.min !== undefined && decorator.minExclusive !== undefined) {
|
|
180
|
+
if (decorator.minExclusive > decorator.min) {
|
|
181
|
+
delete decorator.min;
|
|
182
|
+
} else {
|
|
183
|
+
delete decorator.minExclusive;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
if (decorator.max !== undefined && decorator.maxExclusive !== undefined) {
|
|
187
|
+
if (decorator.maxExclusive < decorator.max) {
|
|
188
|
+
delete decorator.max;
|
|
189
|
+
} else {
|
|
190
|
+
delete decorator.maxExclusive;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
const final = {};
|
|
194
|
+
if (intrinsic.min !== undefined) {
|
|
195
|
+
if (decorator.min !== undefined) {
|
|
196
|
+
if (intrinsic.min > decorator.min) {
|
|
197
|
+
delete decorator.min;
|
|
198
|
+
} else {
|
|
199
|
+
delete intrinsic.min;
|
|
200
|
+
}
|
|
201
|
+
} else if (decorator.minExclusive !== undefined) {
|
|
202
|
+
if (intrinsic.min > decorator.minExclusive) {
|
|
203
|
+
delete decorator.minExclusive;
|
|
204
|
+
} else {
|
|
205
|
+
delete intrinsic.min;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
if (intrinsic.max !== undefined) {
|
|
210
|
+
if (decorator.max !== undefined) {
|
|
211
|
+
if (intrinsic.max < decorator.max) {
|
|
212
|
+
delete decorator.max;
|
|
213
|
+
} else {
|
|
214
|
+
delete intrinsic.max;
|
|
215
|
+
}
|
|
216
|
+
} else if (decorator.maxExclusive !== undefined) {
|
|
217
|
+
if (intrinsic.max < decorator.maxExclusive) {
|
|
218
|
+
delete decorator.maxExclusive;
|
|
219
|
+
} else {
|
|
220
|
+
delete intrinsic.max;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
assignNumericConstraints(final, intrinsic);
|
|
225
|
+
assignNumericConstraints(final, decorator);
|
|
226
|
+
if (final.min !== undefined) {
|
|
227
|
+
properties.push(_$createComponent(ObjectProperty, {
|
|
228
|
+
name: "minimum",
|
|
229
|
+
get children() {
|
|
230
|
+
return `${final.min}`;
|
|
231
|
+
}
|
|
232
|
+
}));
|
|
233
|
+
}
|
|
234
|
+
if (final.max !== undefined) {
|
|
235
|
+
properties.push(_$createComponent(ObjectProperty, {
|
|
236
|
+
name: "maximum",
|
|
237
|
+
get children() {
|
|
238
|
+
return `${final.max}`;
|
|
239
|
+
}
|
|
240
|
+
}));
|
|
241
|
+
}
|
|
242
|
+
if (final.minExclusive !== undefined) {
|
|
243
|
+
properties.push(_$createComponent(ObjectProperty, {
|
|
244
|
+
name: "exclusiveMinimum",
|
|
245
|
+
get children() {
|
|
246
|
+
return `${final.minExclusive}`;
|
|
247
|
+
}
|
|
248
|
+
}));
|
|
249
|
+
}
|
|
250
|
+
if (final.maxExclusive !== undefined) {
|
|
251
|
+
properties.push(_$createComponent(ObjectProperty, {
|
|
252
|
+
name: "exclusiveMaximum",
|
|
253
|
+
get children() {
|
|
254
|
+
return `${final.maxExclusive}`;
|
|
255
|
+
}
|
|
256
|
+
}));
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
function collectArrayConstraints($, type, member, properties) {
|
|
260
|
+
let minItems = $.type.minItems(type);
|
|
261
|
+
let maxItems = $.type.maxItems(type);
|
|
262
|
+
if (member) {
|
|
263
|
+
minItems = maxNumeric(minItems, $.type.minItems(member));
|
|
264
|
+
maxItems = minNumeric(maxItems, $.type.maxItems(member));
|
|
265
|
+
}
|
|
266
|
+
if (minItems !== undefined && minItems > 0) {
|
|
267
|
+
properties.push(_$createComponent(ObjectProperty, {
|
|
268
|
+
name: "minItems",
|
|
269
|
+
children: `${minItems}`
|
|
270
|
+
}));
|
|
271
|
+
}
|
|
272
|
+
if (maxItems !== undefined && maxItems > 0) {
|
|
273
|
+
properties.push(_$createComponent(ObjectProperty, {
|
|
274
|
+
name: "maxItems",
|
|
275
|
+
children: `${maxItems}`
|
|
276
|
+
}));
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
function collectDescription($, type, member, properties) {
|
|
280
|
+
let description;
|
|
281
|
+
if (member) {
|
|
282
|
+
description = $.type.getDoc(member);
|
|
283
|
+
}
|
|
284
|
+
if (!description && !isBuiltIn($.program, type)) {
|
|
285
|
+
description = $.type.getDoc(type);
|
|
286
|
+
}
|
|
287
|
+
if (description) {
|
|
288
|
+
const escaped = description.replace(/\\/g, '\\\\').replace(/"/g, '\\"');
|
|
289
|
+
properties.push(_$createComponent(ObjectProperty, {
|
|
290
|
+
name: "description",
|
|
291
|
+
children: `"${escaped}"`
|
|
292
|
+
}));
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
function collectDefault(member, properties) {
|
|
296
|
+
if (!member || !member.defaultValue) return;
|
|
297
|
+
properties.push(_$createComponent(ObjectProperty, {
|
|
298
|
+
name: "default",
|
|
299
|
+
get children() {
|
|
300
|
+
return _$createComponent(ValueExpression, {
|
|
301
|
+
get value() {
|
|
302
|
+
return member.defaultValue;
|
|
303
|
+
}
|
|
304
|
+
});
|
|
305
|
+
}
|
|
306
|
+
}));
|
|
307
|
+
}
|
|
308
|
+
//# sourceMappingURL=typeboxConstraints.js.map
|