@typespec-dev/emitter-typebox 0.2.0 → 0.3.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 +4 -3
- package/dist/src/components/TypeBoxSchema.js.map +1 -1
- package/dist/src/components/TypeBoxSchema.jsx +4 -3
- package/dist/src/components/TypeBoxSchema.jsx.map +1 -1
- package/dist/src/typeboxBaseSchema.d.ts +2 -2
- package/dist/src/typeboxBaseSchema.d.ts.map +1 -1
- package/dist/src/typeboxBaseSchema.js +68 -33
- package/dist/src/typeboxBaseSchema.js.map +1 -1
- package/dist/src/typeboxBaseSchema.jsx +36 -28
- 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 +1 -1
- package/dist/test/dictionaries.test.js.map +1 -1
- package/dist/test/dictionaries.test.jsx +1 -1
- package/dist/test/dictionaries.test.jsx.map +1 -1
- package/dist/test/models.test.js +2 -2
- package/dist/test/models.test.js.map +1 -1
- package/dist/test/models.test.jsx +2 -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/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/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 +1 -1
|
@@ -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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["For","ObjectExpression","ObjectProperty","getFormat","getPattern","ValueExpression","isBuiltIn","shouldReference","buildTypeboxOpts","$","type","config","member","properties","hasFormat","scalar","is","extendsString","collectStringConstraints","extendsNumeric","collectNumericConstraints","format","push","_$createComponent","name","children","kind","array","collectArrayConstraints","collectDescription","collectDefault","length","undefined","each","comma","hardline","prop","getDecoratorSources","sources","current","baseScalar","program","maxNumeric","a","b","Math","max","minNumeric","min","minLength","maxLength","pattern","source","reverse","srcMinLength","srcMaxLength","srcPattern","srcFormat","replace","intrinsicNumericConstraints","knownType","getStdBase","extendsInt8","extendsInt16","extendsInt32","Number","extendsUint8","extendsUint16","extendsUint32","extendsSafeint","MIN_SAFE_INTEGER","MAX_SAFE_INTEGER","extendsFloat32","assignNumericConstraints","target","minExclusive","maxExclusive","intrinsic","decorator","srcConstraints","minValue","maxValue","minValueExclusive","maxValueExclusive","final","minItems","maxItems","description","getDoc","escaped","defaultValue","value"],"sources":["../../src/typeboxConstraints.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
import { For } from '@alloy-js/core';
|
|
2
|
+
import { ObjectExpression, ObjectProperty } from '@alloy-js/typescript';
|
|
3
|
+
import { getFormat, getPattern } from '@typespec/compiler';
|
|
4
|
+
import { ValueExpression } from '@typespec/emitter-framework/typescript';
|
|
5
|
+
import { isBuiltIn, shouldReference } from './utils.jsx';
|
|
6
|
+
export function buildTypeboxOpts($, type, config) {
|
|
7
|
+
const member = config?.member;
|
|
8
|
+
const properties = [];
|
|
9
|
+
let hasFormat = false;
|
|
10
|
+
if ($.scalar.is(type)) {
|
|
11
|
+
if ($.scalar.extendsString(type)) {
|
|
12
|
+
hasFormat = collectStringConstraints($, type, member, properties);
|
|
13
|
+
}
|
|
14
|
+
else if ($.scalar.extendsNumeric(type)) {
|
|
15
|
+
collectNumericConstraints($, type, member, properties);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
if (!hasFormat && config?.format) {
|
|
19
|
+
properties.push(<ObjectProperty name="format">{`"${config.format}"`}</ObjectProperty>);
|
|
20
|
+
}
|
|
21
|
+
if (type.kind === 'Model' && $.array.is(type)) {
|
|
22
|
+
collectArrayConstraints($, type, member, properties);
|
|
23
|
+
}
|
|
24
|
+
collectDescription($, type, member, properties);
|
|
25
|
+
collectDefault(member, properties);
|
|
26
|
+
if (properties.length === 0) {
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
29
|
+
return (<ObjectExpression>
|
|
30
|
+
<For each={properties} comma hardline>
|
|
31
|
+
{function (prop) {
|
|
32
|
+
return prop;
|
|
33
|
+
}}
|
|
34
|
+
</For>
|
|
35
|
+
</ObjectExpression>);
|
|
36
|
+
}
|
|
37
|
+
function getDecoratorSources($, type, member) {
|
|
38
|
+
if (!$.scalar.is(type)) {
|
|
39
|
+
return [...(member ? [member] : []), type];
|
|
40
|
+
}
|
|
41
|
+
const sources = [...(member ? [member] : []), type];
|
|
42
|
+
let current = type.baseScalar;
|
|
43
|
+
while (current && !shouldReference($.program, current)) {
|
|
44
|
+
sources.push(current);
|
|
45
|
+
current = current.baseScalar;
|
|
46
|
+
}
|
|
47
|
+
return sources;
|
|
48
|
+
}
|
|
49
|
+
function maxNumeric(a, b) {
|
|
50
|
+
if (a === undefined)
|
|
51
|
+
return b;
|
|
52
|
+
if (b === undefined)
|
|
53
|
+
return a;
|
|
54
|
+
return Math.max(a, b);
|
|
55
|
+
}
|
|
56
|
+
function minNumeric(a, b) {
|
|
57
|
+
if (a === undefined)
|
|
58
|
+
return b;
|
|
59
|
+
if (b === undefined)
|
|
60
|
+
return a;
|
|
61
|
+
return Math.min(a, b);
|
|
62
|
+
}
|
|
63
|
+
function collectStringConstraints($, type, member, properties) {
|
|
64
|
+
const sources = getDecoratorSources($, type, member);
|
|
65
|
+
let minLength;
|
|
66
|
+
let maxLength;
|
|
67
|
+
let pattern;
|
|
68
|
+
let format;
|
|
69
|
+
for (const source of sources.reverse()) {
|
|
70
|
+
const srcMinLength = $.type.minLength(source);
|
|
71
|
+
const srcMaxLength = $.type.maxLength(source);
|
|
72
|
+
const srcPattern = getPattern($.program, source);
|
|
73
|
+
const srcFormat = getFormat($.program, source);
|
|
74
|
+
minLength = maxNumeric(minLength, srcMinLength);
|
|
75
|
+
maxLength = minNumeric(maxLength, srcMaxLength);
|
|
76
|
+
pattern = pattern ?? srcPattern;
|
|
77
|
+
format = format ?? srcFormat;
|
|
78
|
+
}
|
|
79
|
+
if (minLength !== undefined) {
|
|
80
|
+
properties.push(<ObjectProperty name="minLength">{`${minLength}`}</ObjectProperty>);
|
|
81
|
+
}
|
|
82
|
+
if (maxLength !== undefined) {
|
|
83
|
+
properties.push(<ObjectProperty name="maxLength">{`${maxLength}`}</ObjectProperty>);
|
|
84
|
+
}
|
|
85
|
+
if (pattern !== undefined) {
|
|
86
|
+
properties.push(<ObjectProperty name="pattern">{`"${pattern.replace(/\\/g, '\\\\').replace(/"/g, '\\"')}"`}</ObjectProperty>);
|
|
87
|
+
}
|
|
88
|
+
if (format !== undefined) {
|
|
89
|
+
properties.push(<ObjectProperty name="format">{`"${format}"`}</ObjectProperty>);
|
|
90
|
+
}
|
|
91
|
+
return format !== undefined;
|
|
92
|
+
}
|
|
93
|
+
function intrinsicNumericConstraints($, type) {
|
|
94
|
+
if (!$.scalar.is(type))
|
|
95
|
+
return {};
|
|
96
|
+
const knownType = $.scalar.getStdBase(type);
|
|
97
|
+
if (!knownType || !$.scalar.extendsNumeric(knownType))
|
|
98
|
+
return {};
|
|
99
|
+
if ($.scalar.extendsInt8(knownType)) {
|
|
100
|
+
return { min: -(1 << 7), max: (1 << 7) - 1 };
|
|
101
|
+
}
|
|
102
|
+
else if ($.scalar.extendsInt16(knownType)) {
|
|
103
|
+
return { min: -(1 << 15), max: (1 << 15) - 1 };
|
|
104
|
+
}
|
|
105
|
+
else if ($.scalar.extendsInt32(knownType)) {
|
|
106
|
+
return { min: Number(-(1n << 31n)), max: Number((1n << 31n) - 1n) };
|
|
107
|
+
}
|
|
108
|
+
else if ($.scalar.extendsUint8(knownType)) {
|
|
109
|
+
return { min: 0, max: (1 << 8) - 1 };
|
|
110
|
+
}
|
|
111
|
+
else if ($.scalar.extendsUint16(knownType)) {
|
|
112
|
+
return { min: 0, max: (1 << 16) - 1 };
|
|
113
|
+
}
|
|
114
|
+
else if ($.scalar.extendsUint32(knownType)) {
|
|
115
|
+
return { min: 0, max: Number((1n << 32n) - 1n) };
|
|
116
|
+
}
|
|
117
|
+
else if ($.scalar.extendsSafeint(knownType)) {
|
|
118
|
+
return { min: Number.MIN_SAFE_INTEGER, max: Number.MAX_SAFE_INTEGER };
|
|
119
|
+
}
|
|
120
|
+
else if ($.scalar.extendsFloat32(knownType)) {
|
|
121
|
+
return { min: -3.4028235e38, max: 3.4028235e38 };
|
|
122
|
+
}
|
|
123
|
+
return {};
|
|
124
|
+
}
|
|
125
|
+
function assignNumericConstraints(target, source) {
|
|
126
|
+
target.min = maxNumeric(target.min, source.min);
|
|
127
|
+
target.max = minNumeric(target.max, source.max);
|
|
128
|
+
target.minExclusive = maxNumeric(target.minExclusive, source.minExclusive);
|
|
129
|
+
target.maxExclusive = minNumeric(target.maxExclusive, source.maxExclusive);
|
|
130
|
+
}
|
|
131
|
+
function collectNumericConstraints($, type, member, properties) {
|
|
132
|
+
const sources = getDecoratorSources($, type, member);
|
|
133
|
+
const intrinsic = intrinsicNumericConstraints($, type);
|
|
134
|
+
const decorator = {};
|
|
135
|
+
for (const source of sources) {
|
|
136
|
+
const srcConstraints = {
|
|
137
|
+
min: $.type.minValue(source),
|
|
138
|
+
max: $.type.maxValue(source),
|
|
139
|
+
minExclusive: $.type.minValueExclusive(source),
|
|
140
|
+
maxExclusive: $.type.maxValueExclusive(source),
|
|
141
|
+
};
|
|
142
|
+
assignNumericConstraints(decorator, srcConstraints);
|
|
143
|
+
}
|
|
144
|
+
if (decorator.min !== undefined && decorator.minExclusive !== undefined) {
|
|
145
|
+
if (decorator.minExclusive > decorator.min) {
|
|
146
|
+
delete decorator.min;
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
delete decorator.minExclusive;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
if (decorator.max !== undefined && decorator.maxExclusive !== undefined) {
|
|
153
|
+
if (decorator.maxExclusive < decorator.max) {
|
|
154
|
+
delete decorator.max;
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
delete decorator.maxExclusive;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
const final = {};
|
|
161
|
+
if (intrinsic.min !== undefined) {
|
|
162
|
+
if (decorator.min !== undefined) {
|
|
163
|
+
if (intrinsic.min > decorator.min) {
|
|
164
|
+
delete decorator.min;
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
delete intrinsic.min;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
else if (decorator.minExclusive !== undefined) {
|
|
171
|
+
if (intrinsic.min > decorator.minExclusive) {
|
|
172
|
+
delete decorator.minExclusive;
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
delete intrinsic.min;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
if (intrinsic.max !== undefined) {
|
|
180
|
+
if (decorator.max !== undefined) {
|
|
181
|
+
if (intrinsic.max < decorator.max) {
|
|
182
|
+
delete decorator.max;
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
delete intrinsic.max;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
else if (decorator.maxExclusive !== undefined) {
|
|
189
|
+
if (intrinsic.max < decorator.maxExclusive) {
|
|
190
|
+
delete decorator.maxExclusive;
|
|
191
|
+
}
|
|
192
|
+
else {
|
|
193
|
+
delete intrinsic.max;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
assignNumericConstraints(final, intrinsic);
|
|
198
|
+
assignNumericConstraints(final, decorator);
|
|
199
|
+
if (final.min !== undefined) {
|
|
200
|
+
properties.push(<ObjectProperty name="minimum">{`${final.min}`}</ObjectProperty>);
|
|
201
|
+
}
|
|
202
|
+
if (final.max !== undefined) {
|
|
203
|
+
properties.push(<ObjectProperty name="maximum">{`${final.max}`}</ObjectProperty>);
|
|
204
|
+
}
|
|
205
|
+
if (final.minExclusive !== undefined) {
|
|
206
|
+
properties.push(<ObjectProperty name="exclusiveMinimum">{`${final.minExclusive}`}</ObjectProperty>);
|
|
207
|
+
}
|
|
208
|
+
if (final.maxExclusive !== undefined) {
|
|
209
|
+
properties.push(<ObjectProperty name="exclusiveMaximum">{`${final.maxExclusive}`}</ObjectProperty>);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
function collectArrayConstraints($, type, member, properties) {
|
|
213
|
+
let minItems = $.type.minItems(type);
|
|
214
|
+
let maxItems = $.type.maxItems(type);
|
|
215
|
+
if (member) {
|
|
216
|
+
minItems = maxNumeric(minItems, $.type.minItems(member));
|
|
217
|
+
maxItems = minNumeric(maxItems, $.type.maxItems(member));
|
|
218
|
+
}
|
|
219
|
+
if (minItems !== undefined && minItems > 0) {
|
|
220
|
+
properties.push(<ObjectProperty name="minItems">{`${minItems}`}</ObjectProperty>);
|
|
221
|
+
}
|
|
222
|
+
if (maxItems !== undefined && maxItems > 0) {
|
|
223
|
+
properties.push(<ObjectProperty name="maxItems">{`${maxItems}`}</ObjectProperty>);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
function collectDescription($, type, member, properties) {
|
|
227
|
+
let description;
|
|
228
|
+
if (member) {
|
|
229
|
+
description = $.type.getDoc(member);
|
|
230
|
+
}
|
|
231
|
+
if (!description && !isBuiltIn($.program, type)) {
|
|
232
|
+
description = $.type.getDoc(type);
|
|
233
|
+
}
|
|
234
|
+
if (description) {
|
|
235
|
+
const escaped = description.replace(/\\/g, '\\\\').replace(/"/g, '\\"');
|
|
236
|
+
properties.push(<ObjectProperty name="description">{`"${escaped}"`}</ObjectProperty>);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
function collectDefault(member, properties) {
|
|
240
|
+
if (!member || !member.defaultValue)
|
|
241
|
+
return;
|
|
242
|
+
properties.push(<ObjectProperty name="default">
|
|
243
|
+
<ValueExpression value={member.defaultValue}/>
|
|
244
|
+
</ObjectProperty>);
|
|
245
|
+
}
|
|
246
|
+
//# sourceMappingURL=typeboxConstraints.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typeboxConstraints.jsx","sourceRoot":"","sources":["../../src/typeboxConstraints.tsx"],"names":[],"mappings":"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"}
|
package/dist/test/arrays.test.js
CHANGED
|
@@ -31,7 +31,7 @@ describe('arrays', () => {
|
|
|
31
31
|
get type() {
|
|
32
32
|
return numsProp.type;
|
|
33
33
|
}
|
|
34
|
-
}), 'Type.Array(Type.Integer())');
|
|
34
|
+
}), 'Type.Array(Type.Integer({\n minimum: -2147483648,\n maximum: 2147483647\n}))');
|
|
35
35
|
});
|
|
36
36
|
it('works with array property in model', async () => {
|
|
37
37
|
const runner = await createTestRunner();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["describe","it","TypeBoxSchema","createTestRunner","expectRender","runner","stringsProp","compile","program","_$createComponent","type","numsProp","ListModel","flagsProp"],"sources":["../../test/arrays.test.tsx"],"sourcesContent":[null],"mappings":";AACA,SAASA,QAAQ,EAAEC,EAAE,QAAQ,QAAQ;AACrC,SAASC,aAAa;AACtB,SAASC,gBAAgB,EAAEC,YAAY;AAEvCJ,QAAQ,CAAC,QAAQ,EAAE,MAAM;EACvBC,EAAE,CAAC,6BAA6B,EAAE,YAAY;IAC5C,MAAMI,MAAM,GAAG,MAAMF,gBAAgB,CAAC,CAAC;IACvC,MAAM;MAAEG;IAAY,CAAC,GAAI,MAAMD,MAAM,CAACE,OAAO,CAAC;AAClD;AACA;AACA;AACA,KAAK,CAAmC;IAEpCH,YAAY,CACVC,MAAM,CAACG,OAAO,EAAAC,iBAAA,CACbP,aAAa;MAAA,IAACQ,IAAIA,CAAA;QAAA,OAAEJ,WAAW,CAACI,IAAI;MAAA;IAAA,IACrC,2BACF,CAAC;EACH,CAAC,CAAC;EAEFT,EAAE,CAAC,8BAA8B,EAAE,YAAY;IAC7C,MAAMI,MAAM,GAAG,MAAMF,gBAAgB,CAAC,CAAC;IACvC,MAAM;MAAEQ;IAAS,CAAC,GAAI,MAAMN,MAAM,CAACE,OAAO,CAAC;AAC/C;AACA;AACA;AACA,KAAK,CAAmC;IAEpCH,YAAY,CACVC,MAAM,CAACG,OAAO,EAAAC,iBAAA,CACbP,aAAa;MAAA,IAACQ,IAAIA,CAAA;QAAA,OAAEC,QAAQ,CAACD,IAAI;MAAA;IAAA,IAClC,
|
|
1
|
+
{"version":3,"names":["describe","it","TypeBoxSchema","createTestRunner","expectRender","runner","stringsProp","compile","program","_$createComponent","type","numsProp","ListModel","flagsProp"],"sources":["../../test/arrays.test.tsx"],"sourcesContent":[null],"mappings":";AACA,SAASA,QAAQ,EAAEC,EAAE,QAAQ,QAAQ;AACrC,SAASC,aAAa;AACtB,SAASC,gBAAgB,EAAEC,YAAY;AAEvCJ,QAAQ,CAAC,QAAQ,EAAE,MAAM;EACvBC,EAAE,CAAC,6BAA6B,EAAE,YAAY;IAC5C,MAAMI,MAAM,GAAG,MAAMF,gBAAgB,CAAC,CAAC;IACvC,MAAM;MAAEG;IAAY,CAAC,GAAI,MAAMD,MAAM,CAACE,OAAO,CAAC;AAClD;AACA;AACA;AACA,KAAK,CAAmC;IAEpCH,YAAY,CACVC,MAAM,CAACG,OAAO,EAAAC,iBAAA,CACbP,aAAa;MAAA,IAACQ,IAAIA,CAAA;QAAA,OAAEJ,WAAW,CAACI,IAAI;MAAA;IAAA,IACrC,2BACF,CAAC;EACH,CAAC,CAAC;EAEFT,EAAE,CAAC,8BAA8B,EAAE,YAAY;IAC7C,MAAMI,MAAM,GAAG,MAAMF,gBAAgB,CAAC,CAAC;IACvC,MAAM;MAAEQ;IAAS,CAAC,GAAI,MAAMN,MAAM,CAACE,OAAO,CAAC;AAC/C;AACA;AACA;AACA,KAAK,CAAmC;IAEpCH,YAAY,CACVC,MAAM,CAACG,OAAO,EAAAC,iBAAA,CACbP,aAAa;MAAA,IAACQ,IAAIA,CAAA;QAAA,OAAEC,QAAQ,CAACD,IAAI;MAAA;IAAA,IAClC,gFACF,CAAC;EACH,CAAC,CAAC;EAEFT,EAAE,CAAC,oCAAoC,EAAE,YAAY;IACnD,MAAMI,MAAM,GAAG,MAAMF,gBAAgB,CAAC,CAAC;IACvC,MAAM;MAAES;IAAU,CAAC,GAAI,MAAMP,MAAM,CAACE,OAAO,CAAC;AAChD;AACA;AACA;AACA,KAAK,CAA2B;IAE5BH,YAAY,CACVC,MAAM,CAACG,OAAO,EAAAC,iBAAA,CACbP,aAAa;MAACQ,IAAI,EAAEE;IAAS,IAC9B,wDACF,CAAC;EACH,CAAC,CAAC;EAEFX,EAAE,CAAC,8BAA8B,EAAE,YAAY;IAC7C,MAAMI,MAAM,GAAG,MAAMF,gBAAgB,CAAC,CAAC;IACvC,MAAM;MAAEU;IAAU,CAAC,GAAI,MAAMR,MAAM,CAACE,OAAO,CAAC;AAChD;AACA;AACA;AACA,KAAK,CAAmC;IAEpCH,YAAY,CACVC,MAAM,CAACG,OAAO,EAAAC,iBAAA,CACbP,aAAa;MAAA,IAACQ,IAAIA,CAAA;QAAA,OAAEG,SAAS,CAACH,IAAI;MAAA;IAAA,IACnC,4BACF,CAAC;EACH,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
@@ -18,7 +18,7 @@ describe('arrays', () => {
|
|
|
18
18
|
@test numsProp: int32[];
|
|
19
19
|
}
|
|
20
20
|
`));
|
|
21
|
-
expectRender(runner.program, <TypeBoxSchema type={numsProp.type}/>, 'Type.Array(Type.Integer())');
|
|
21
|
+
expectRender(runner.program, <TypeBoxSchema type={numsProp.type}/>, 'Type.Array(Type.Integer({\n minimum: -2147483648,\n maximum: 2147483647\n}))');
|
|
22
22
|
});
|
|
23
23
|
it('works with array property in model', async () => {
|
|
24
24
|
const runner = await createTestRunner();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"arrays.test.jsx","sourceRoot":"","sources":["../../test/arrays.test.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE7D,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;IACtB,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;QAC3C,MAAM,MAAM,GAAG,MAAM,gBAAgB,EAAE,CAAC;QACxC,MAAM,EAAE,WAAW,EAAE,GAAG,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC;;;;KAI7C,CAAC,CAAkC,CAAC;QAErC,YAAY,CACV,MAAM,CAAC,OAAO,EACd,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,EAAG,EACzC,2BAA2B,CAC5B,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;QAC5C,MAAM,MAAM,GAAG,MAAM,gBAAgB,EAAE,CAAC;QACxC,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC;;;;KAI1C,CAAC,CAAkC,CAAC;QAErC,YAAY,CACV,MAAM,CAAC,OAAO,EACd,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAG,EACtC,
|
|
1
|
+
{"version":3,"file":"arrays.test.jsx","sourceRoot":"","sources":["../../test/arrays.test.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE7D,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;IACtB,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;QAC3C,MAAM,MAAM,GAAG,MAAM,gBAAgB,EAAE,CAAC;QACxC,MAAM,EAAE,WAAW,EAAE,GAAG,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC;;;;KAI7C,CAAC,CAAkC,CAAC;QAErC,YAAY,CACV,MAAM,CAAC,OAAO,EACd,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,EAAG,EACzC,2BAA2B,CAC5B,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;QAC5C,MAAM,MAAM,GAAG,MAAM,gBAAgB,EAAE,CAAC;QACxC,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC;;;;KAI1C,CAAC,CAAkC,CAAC;QAErC,YAAY,CACV,MAAM,CAAC,OAAO,EACd,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAG,EACtC,gFAAgF,CACjF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,MAAM,GAAG,MAAM,gBAAgB,EAAE,CAAC;QACxC,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC;;;;KAI3C,CAAC,CAA0B,CAAC;QAE7B,YAAY,CACV,MAAM,CAAC,OAAO,EACd,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,EAAG,EAClC,wDAAwD,CACzD,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;QAC5C,MAAM,MAAM,GAAG,MAAM,gBAAgB,EAAE,CAAC;QACxC,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC;;;;KAI3C,CAAC,CAAkC,CAAC;QAErC,YAAY,CACV,MAAM,CAAC,OAAO,EACd,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,EAAG,EACvC,4BAA4B,CAC7B,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constraints.test.d.ts","sourceRoot":"","sources":["../../test/constraints.test.tsx"],"names":[],"mappings":""}
|