@typespec-dev/emitter-typebox 0.1.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/LICENSE +21 -0
- package/dist/src/components/TypeBoxSchema.d.ts +8 -0
- package/dist/src/components/TypeBoxSchema.d.ts.map +1 -0
- package/dist/src/components/TypeBoxSchema.js +28 -0
- package/dist/src/components/TypeBoxSchema.js.map +1 -0
- package/dist/src/components/TypeBoxSchema.jsx +19 -0
- package/dist/src/components/TypeBoxSchema.jsx.map +1 -0
- package/dist/src/components/TypeBoxSchemaDeclaration.d.ts +9 -0
- package/dist/src/components/TypeBoxSchemaDeclaration.d.ts.map +1 -0
- package/dist/src/components/TypeBoxSchemaDeclaration.js +21 -0
- package/dist/src/components/TypeBoxSchemaDeclaration.js.map +1 -0
- package/dist/src/components/TypeBoxSchemaDeclaration.jsx +20 -0
- package/dist/src/components/TypeBoxSchemaDeclaration.jsx.map +1 -0
- package/dist/src/components/index.d.ts +3 -0
- package/dist/src/components/index.d.ts.map +1 -0
- package/dist/src/components/index.js +3 -0
- package/dist/src/components/index.js.map +1 -0
- package/dist/src/emitter.d.ts +3 -0
- package/dist/src/emitter.d.ts.map +1 -0
- package/dist/src/emitter.js +57 -0
- package/dist/src/emitter.js.map +1 -0
- package/dist/src/emitter.jsx +40 -0
- package/dist/src/emitter.jsx.map +1 -0
- package/dist/src/external-packages/typebox.d.ts +4 -0
- package/dist/src/external-packages/typebox.d.ts.map +1 -0
- package/dist/src/external-packages/typebox.js +11 -0
- package/dist/src/external-packages/typebox.js.map +1 -0
- package/dist/src/index.d.ts +6 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +6 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/lib.d.ts +13 -0
- package/dist/src/lib.d.ts.map +1 -0
- package/dist/src/lib.js +10 -0
- package/dist/src/lib.js.map +1 -0
- package/dist/src/testing/index.d.ts +3 -0
- package/dist/src/testing/index.d.ts.map +1 -0
- package/dist/src/testing/index.js +6 -0
- package/dist/src/testing/index.js.map +1 -0
- package/dist/src/typeboxBaseSchema.d.ts +4 -0
- package/dist/src/typeboxBaseSchema.d.ts.map +1 -0
- package/dist/src/typeboxBaseSchema.js +129 -0
- package/dist/src/typeboxBaseSchema.js.map +1 -0
- package/dist/src/typeboxBaseSchema.jsx +136 -0
- package/dist/src/typeboxBaseSchema.jsx.map +1 -0
- package/dist/src/utils.d.ts +18 -0
- package/dist/src/utils.d.ts.map +1 -0
- package/dist/src/utils.js +118 -0
- package/dist/src/utils.js.map +1 -0
- package/dist/src/utils.jsx +114 -0
- package/dist/src/utils.jsx.map +1 -0
- package/dist/test/emitter/default.test.d.ts +2 -0
- package/dist/test/emitter/default.test.d.ts.map +1 -0
- package/dist/test/emitter/default.test.js +13 -0
- package/dist/test/emitter/default.test.js.map +1 -0
- package/dist/test/emitter/default.test.jsx +11 -0
- package/dist/test/emitter/default.test.jsx.map +1 -0
- package/dist/test/intrinsics.test.d.ts +2 -0
- package/dist/test/intrinsics.test.d.ts.map +1 -0
- package/dist/test/intrinsics.test.js +48 -0
- package/dist/test/intrinsics.test.js.map +1 -0
- package/dist/test/intrinsics.test.jsx +26 -0
- package/dist/test/intrinsics.test.jsx.map +1 -0
- package/dist/test/literals.test.d.ts +2 -0
- package/dist/test/literals.test.d.ts.map +1 -0
- package/dist/test/literals.test.js +39 -0
- package/dist/test/literals.test.js.map +1 -0
- package/dist/test/literals.test.jsx +22 -0
- package/dist/test/literals.test.jsx.map +1 -0
- package/dist/test/scalars.test.d.ts +2 -0
- package/dist/test/scalars.test.d.ts.map +1 -0
- package/dist/test/scalars.test.js +326 -0
- package/dist/test/scalars.test.js.map +1 -0
- package/dist/test/scalars.test.jsx +171 -0
- package/dist/test/scalars.test.jsx.map +1 -0
- package/dist/test/utils.d.ts +8 -0
- package/dist/test/utils.d.ts.map +1 -0
- package/dist/test/utils.js +63 -0
- package/dist/test/utils.js.map +1 -0
- package/dist/test/utils.jsx +45 -0
- package/dist/test/utils.jsx.map +1 -0
- package/package.json +67 -0
|
@@ -0,0 +1,326 @@
|
|
|
1
|
+
import { createComponent as _$createComponent } from "@alloy-js/core/jsx-runtime";
|
|
2
|
+
import { describe, it } from 'vitest';
|
|
3
|
+
import { TypeBoxSchema } from "../src/components/TypeBoxSchema.js";
|
|
4
|
+
import { createTestRunner, expectRender } from "./utils.js";
|
|
5
|
+
it('works with boolean', async () => {
|
|
6
|
+
const runner = await createTestRunner();
|
|
7
|
+
const {
|
|
8
|
+
booleanProp
|
|
9
|
+
} = await runner.compile(`
|
|
10
|
+
model Test {
|
|
11
|
+
@test
|
|
12
|
+
booleanProp: boolean,
|
|
13
|
+
}
|
|
14
|
+
`);
|
|
15
|
+
expectRender(runner.program, _$createComponent(TypeBoxSchema, {
|
|
16
|
+
get type() {
|
|
17
|
+
return booleanProp.type;
|
|
18
|
+
}
|
|
19
|
+
}), 'Type.Boolean()');
|
|
20
|
+
});
|
|
21
|
+
it('works with string', async () => {
|
|
22
|
+
const runner = await createTestRunner();
|
|
23
|
+
const {
|
|
24
|
+
stringProp,
|
|
25
|
+
urlProp
|
|
26
|
+
} = await runner.compile(`
|
|
27
|
+
model Test {
|
|
28
|
+
@test stringProp: string,
|
|
29
|
+
@test urlProp: url
|
|
30
|
+
}
|
|
31
|
+
`);
|
|
32
|
+
expectRender(runner.program, _$createComponent(TypeBoxSchema, {
|
|
33
|
+
get type() {
|
|
34
|
+
return stringProp.type;
|
|
35
|
+
}
|
|
36
|
+
}), 'Type.String()');
|
|
37
|
+
expectRender(runner.program, _$createComponent(TypeBoxSchema, {
|
|
38
|
+
get type() {
|
|
39
|
+
return urlProp.type;
|
|
40
|
+
}
|
|
41
|
+
}), 'Type.String({\n format: "uri"\n})');
|
|
42
|
+
});
|
|
43
|
+
describe('numerics', () => {
|
|
44
|
+
it('works with integers', async () => {
|
|
45
|
+
const runner = await createTestRunner();
|
|
46
|
+
const {
|
|
47
|
+
int8Prop,
|
|
48
|
+
int16Prop,
|
|
49
|
+
int32Prop,
|
|
50
|
+
int64Prop
|
|
51
|
+
} = await runner.compile(`
|
|
52
|
+
model Test {
|
|
53
|
+
@test int8Prop: int8,
|
|
54
|
+
@test int16Prop: int16,
|
|
55
|
+
@test int32Prop: int32,
|
|
56
|
+
@test int64Prop: int64,
|
|
57
|
+
}
|
|
58
|
+
`);
|
|
59
|
+
expectRender(runner.program, _$createComponent(TypeBoxSchema, {
|
|
60
|
+
get type() {
|
|
61
|
+
return int8Prop.type;
|
|
62
|
+
}
|
|
63
|
+
}), 'Type.Integer()');
|
|
64
|
+
expectRender(runner.program, _$createComponent(TypeBoxSchema, {
|
|
65
|
+
get type() {
|
|
66
|
+
return int16Prop.type;
|
|
67
|
+
}
|
|
68
|
+
}), 'Type.Integer()');
|
|
69
|
+
expectRender(runner.program, _$createComponent(TypeBoxSchema, {
|
|
70
|
+
get type() {
|
|
71
|
+
return int32Prop.type;
|
|
72
|
+
}
|
|
73
|
+
}), 'Type.Integer()');
|
|
74
|
+
expectRender(runner.program, _$createComponent(TypeBoxSchema, {
|
|
75
|
+
get type() {
|
|
76
|
+
return int64Prop.type;
|
|
77
|
+
}
|
|
78
|
+
}), 'Type.BigInt()');
|
|
79
|
+
});
|
|
80
|
+
it('works with unsigned integers', async () => {
|
|
81
|
+
const runner = await createTestRunner();
|
|
82
|
+
const {
|
|
83
|
+
uint8Prop,
|
|
84
|
+
uint16Prop,
|
|
85
|
+
uint32Prop,
|
|
86
|
+
uint64Prop,
|
|
87
|
+
safeintProp
|
|
88
|
+
} = await runner.compile(`
|
|
89
|
+
model Test {
|
|
90
|
+
@test uint8Prop: uint8,
|
|
91
|
+
@test uint16Prop: uint16,
|
|
92
|
+
@test uint32Prop: uint32,
|
|
93
|
+
@test uint64Prop: uint64,
|
|
94
|
+
@test safeintProp: safeint,
|
|
95
|
+
}
|
|
96
|
+
`);
|
|
97
|
+
expectRender(runner.program, _$createComponent(TypeBoxSchema, {
|
|
98
|
+
get type() {
|
|
99
|
+
return uint8Prop.type;
|
|
100
|
+
}
|
|
101
|
+
}), 'Type.Integer()');
|
|
102
|
+
expectRender(runner.program, _$createComponent(TypeBoxSchema, {
|
|
103
|
+
get type() {
|
|
104
|
+
return uint16Prop.type;
|
|
105
|
+
}
|
|
106
|
+
}), 'Type.Integer()');
|
|
107
|
+
expectRender(runner.program, _$createComponent(TypeBoxSchema, {
|
|
108
|
+
get type() {
|
|
109
|
+
return uint32Prop.type;
|
|
110
|
+
}
|
|
111
|
+
}), 'Type.Integer()');
|
|
112
|
+
expectRender(runner.program, _$createComponent(TypeBoxSchema, {
|
|
113
|
+
get type() {
|
|
114
|
+
return uint64Prop.type;
|
|
115
|
+
}
|
|
116
|
+
}), 'Type.BigInt()');
|
|
117
|
+
expectRender(runner.program, _$createComponent(TypeBoxSchema, {
|
|
118
|
+
get type() {
|
|
119
|
+
return safeintProp.type;
|
|
120
|
+
}
|
|
121
|
+
}), 'Type.Integer()');
|
|
122
|
+
});
|
|
123
|
+
it('works with floats', async () => {
|
|
124
|
+
const runner = await createTestRunner();
|
|
125
|
+
const {
|
|
126
|
+
float32Prop,
|
|
127
|
+
float64Prop,
|
|
128
|
+
floatProp
|
|
129
|
+
} = await runner.compile(`
|
|
130
|
+
model Test {
|
|
131
|
+
@test float32Prop: float32,
|
|
132
|
+
@test float64Prop: float64,
|
|
133
|
+
@test floatProp: float,
|
|
134
|
+
}
|
|
135
|
+
`);
|
|
136
|
+
expectRender(runner.program, _$createComponent(TypeBoxSchema, {
|
|
137
|
+
get type() {
|
|
138
|
+
return float32Prop.type;
|
|
139
|
+
}
|
|
140
|
+
}), 'Type.Number()');
|
|
141
|
+
expectRender(runner.program, _$createComponent(TypeBoxSchema, {
|
|
142
|
+
get type() {
|
|
143
|
+
return float64Prop.type;
|
|
144
|
+
}
|
|
145
|
+
}), 'Type.Number()');
|
|
146
|
+
expectRender(runner.program, _$createComponent(TypeBoxSchema, {
|
|
147
|
+
get type() {
|
|
148
|
+
return floatProp.type;
|
|
149
|
+
}
|
|
150
|
+
}), 'Type.Number()');
|
|
151
|
+
});
|
|
152
|
+
it('works with decimals', async () => {
|
|
153
|
+
const runner = await createTestRunner();
|
|
154
|
+
const {
|
|
155
|
+
decimalProp,
|
|
156
|
+
decimal128Prop
|
|
157
|
+
} = await runner.compile(`
|
|
158
|
+
model Test {
|
|
159
|
+
@test decimalProp: decimal,
|
|
160
|
+
@test decimal128Prop: decimal128,
|
|
161
|
+
}
|
|
162
|
+
`);
|
|
163
|
+
expectRender(runner.program, _$createComponent(TypeBoxSchema, {
|
|
164
|
+
get type() {
|
|
165
|
+
return decimalProp.type;
|
|
166
|
+
}
|
|
167
|
+
}), 'Type.Number()');
|
|
168
|
+
expectRender(runner.program, _$createComponent(TypeBoxSchema, {
|
|
169
|
+
get type() {
|
|
170
|
+
return decimal128Prop.type;
|
|
171
|
+
}
|
|
172
|
+
}), 'Type.Number()');
|
|
173
|
+
});
|
|
174
|
+
});
|
|
175
|
+
it('works with bytes', async () => {
|
|
176
|
+
const runner = await createTestRunner();
|
|
177
|
+
const {
|
|
178
|
+
bytesProp
|
|
179
|
+
} = await runner.compile(`
|
|
180
|
+
model Test {
|
|
181
|
+
@test bytesProp: bytes,
|
|
182
|
+
}
|
|
183
|
+
`);
|
|
184
|
+
expectRender(runner.program, _$createComponent(TypeBoxSchema, {
|
|
185
|
+
get type() {
|
|
186
|
+
return bytesProp.type;
|
|
187
|
+
}
|
|
188
|
+
}), 'Type.Any()');
|
|
189
|
+
});
|
|
190
|
+
it('works with date things', async () => {
|
|
191
|
+
const runner = await createTestRunner();
|
|
192
|
+
const {
|
|
193
|
+
plainDateProp,
|
|
194
|
+
plainTimeProp,
|
|
195
|
+
utcDateTimeProp,
|
|
196
|
+
offsetDateTimeProp
|
|
197
|
+
} = await runner.compile(`
|
|
198
|
+
model Test {
|
|
199
|
+
@test plainDateProp: plainDate,
|
|
200
|
+
@test plainTimeProp: plainTime,
|
|
201
|
+
@test utcDateTimeProp: utcDateTime,
|
|
202
|
+
@test offsetDateTimeProp: offsetDateTime
|
|
203
|
+
}
|
|
204
|
+
`);
|
|
205
|
+
expectRender(runner.program, _$createComponent(TypeBoxSchema, {
|
|
206
|
+
get type() {
|
|
207
|
+
return plainDateProp.type;
|
|
208
|
+
}
|
|
209
|
+
}), 'Type.Date()');
|
|
210
|
+
expectRender(runner.program, _$createComponent(TypeBoxSchema, {
|
|
211
|
+
get type() {
|
|
212
|
+
return plainTimeProp.type;
|
|
213
|
+
}
|
|
214
|
+
}), 'Type.String({\n format: "time"\n})');
|
|
215
|
+
expectRender(runner.program, _$createComponent(TypeBoxSchema, {
|
|
216
|
+
get type() {
|
|
217
|
+
return utcDateTimeProp.type;
|
|
218
|
+
}
|
|
219
|
+
}), 'Type.Date()');
|
|
220
|
+
expectRender(runner.program, _$createComponent(TypeBoxSchema, {
|
|
221
|
+
get type() {
|
|
222
|
+
return offsetDateTimeProp.type;
|
|
223
|
+
}
|
|
224
|
+
}), 'Type.Date()');
|
|
225
|
+
});
|
|
226
|
+
it('works with dates and encodings', async () => {
|
|
227
|
+
const runner = await createTestRunner();
|
|
228
|
+
const {
|
|
229
|
+
int32Date,
|
|
230
|
+
int64Date,
|
|
231
|
+
rfc3339DateUtc,
|
|
232
|
+
rfc3339DateOffset,
|
|
233
|
+
rfc7231DateUtc,
|
|
234
|
+
rfc7231DateOffset
|
|
235
|
+
} = await runner.compile(`
|
|
236
|
+
@test
|
|
237
|
+
@encode(DateTimeKnownEncoding.unixTimestamp, int32)
|
|
238
|
+
scalar int32Date extends utcDateTime;
|
|
239
|
+
|
|
240
|
+
@test
|
|
241
|
+
@encode(DateTimeKnownEncoding.unixTimestamp, int64)
|
|
242
|
+
scalar int64Date extends utcDateTime;
|
|
243
|
+
|
|
244
|
+
@test
|
|
245
|
+
@encode(DateTimeKnownEncoding.rfc3339)
|
|
246
|
+
scalar rfc3339DateUtc extends utcDateTime;
|
|
247
|
+
|
|
248
|
+
@test
|
|
249
|
+
@encode(DateTimeKnownEncoding.rfc3339)
|
|
250
|
+
scalar rfc3339DateOffset extends offsetDateTime;
|
|
251
|
+
|
|
252
|
+
@test
|
|
253
|
+
@encode(DateTimeKnownEncoding.rfc7231)
|
|
254
|
+
scalar rfc7231DateUtc extends utcDateTime;
|
|
255
|
+
|
|
256
|
+
@test
|
|
257
|
+
@encode(DateTimeKnownEncoding.rfc7231)
|
|
258
|
+
scalar rfc7231DateOffset extends offsetDateTime;
|
|
259
|
+
`);
|
|
260
|
+
expectRender(runner.program, _$createComponent(TypeBoxSchema, {
|
|
261
|
+
type: int32Date
|
|
262
|
+
}), 'Type.Integer()');
|
|
263
|
+
expectRender(runner.program, _$createComponent(TypeBoxSchema, {
|
|
264
|
+
type: int64Date
|
|
265
|
+
}), 'Type.BigInt()');
|
|
266
|
+
expectRender(runner.program, _$createComponent(TypeBoxSchema, {
|
|
267
|
+
type: rfc3339DateUtc
|
|
268
|
+
}), 'Type.String({\n format: "date-time"\n})');
|
|
269
|
+
expectRender(runner.program, _$createComponent(TypeBoxSchema, {
|
|
270
|
+
type: rfc3339DateOffset
|
|
271
|
+
}), 'Type.String({\n format: "date-time"\n})');
|
|
272
|
+
expectRender(runner.program, _$createComponent(TypeBoxSchema, {
|
|
273
|
+
type: rfc7231DateUtc
|
|
274
|
+
}), 'Type.String()');
|
|
275
|
+
expectRender(runner.program, _$createComponent(TypeBoxSchema, {
|
|
276
|
+
type: rfc7231DateOffset
|
|
277
|
+
}), 'Type.String()');
|
|
278
|
+
});
|
|
279
|
+
it('works with durations and encodings', async () => {
|
|
280
|
+
const runner = await createTestRunner();
|
|
281
|
+
const {
|
|
282
|
+
myDuration,
|
|
283
|
+
isoDuration,
|
|
284
|
+
secondsDuration,
|
|
285
|
+
int64SecondsDuration
|
|
286
|
+
} = await runner.compile(`
|
|
287
|
+
@test
|
|
288
|
+
@encode(DurationKnownEncoding.ISO8601)
|
|
289
|
+
scalar isoDuration extends duration;
|
|
290
|
+
|
|
291
|
+
@test
|
|
292
|
+
@encode(DurationKnownEncoding.seconds, int32)
|
|
293
|
+
scalar secondsDuration extends duration;
|
|
294
|
+
|
|
295
|
+
@test
|
|
296
|
+
@encode(DurationKnownEncoding.seconds, int64)
|
|
297
|
+
scalar int64SecondsDuration extends duration;
|
|
298
|
+
|
|
299
|
+
@test
|
|
300
|
+
scalar myDuration extends duration;
|
|
301
|
+
`);
|
|
302
|
+
expectRender(runner.program, _$createComponent(TypeBoxSchema, {
|
|
303
|
+
type: myDuration
|
|
304
|
+
}), 'Type.String({\n format: "duration"\n})');
|
|
305
|
+
expectRender(runner.program, _$createComponent(TypeBoxSchema, {
|
|
306
|
+
type: isoDuration
|
|
307
|
+
}), 'Type.String({\n format: "duration"\n})');
|
|
308
|
+
expectRender(runner.program, _$createComponent(TypeBoxSchema, {
|
|
309
|
+
type: secondsDuration
|
|
310
|
+
}), 'Type.Integer()');
|
|
311
|
+
expectRender(runner.program, _$createComponent(TypeBoxSchema, {
|
|
312
|
+
type: int64SecondsDuration
|
|
313
|
+
}), 'Type.BigInt()');
|
|
314
|
+
});
|
|
315
|
+
it('works with unknown scalars', async () => {
|
|
316
|
+
const runner = await createTestRunner();
|
|
317
|
+
const {
|
|
318
|
+
unknownScalar
|
|
319
|
+
} = await runner.compile(`
|
|
320
|
+
@test scalar unknownScalar;
|
|
321
|
+
`);
|
|
322
|
+
expectRender(runner.program, _$createComponent(TypeBoxSchema, {
|
|
323
|
+
type: unknownScalar
|
|
324
|
+
}), 'Type.Any()');
|
|
325
|
+
});
|
|
326
|
+
//# sourceMappingURL=scalars.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["describe","it","TypeBoxSchema","createTestRunner","expectRender","runner","booleanProp","compile","program","_$createComponent","type","stringProp","urlProp","int8Prop","int16Prop","int32Prop","int64Prop","uint8Prop","uint16Prop","uint32Prop","uint64Prop","safeintProp","float32Prop","float64Prop","floatProp","decimalProp","decimal128Prop","bytesProp","plainDateProp","plainTimeProp","utcDateTimeProp","offsetDateTimeProp","int32Date","int64Date","rfc3339DateUtc","rfc3339DateOffset","rfc7231DateUtc","rfc7231DateOffset","myDuration","isoDuration","secondsDuration","int64SecondsDuration","unknownScalar"],"sources":["../../test/scalars.test.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import { describe, it } from 'vitest';
|
|
2
|
+
import { TypeBoxSchema } from '../src/components/TypeBoxSchema.jsx';
|
|
3
|
+
import { createTestRunner, expectRender } from './utils.jsx';
|
|
4
|
+
it('works with boolean', async () => {
|
|
5
|
+
const runner = await createTestRunner();
|
|
6
|
+
const { booleanProp } = (await runner.compile(`
|
|
7
|
+
model Test {
|
|
8
|
+
@test
|
|
9
|
+
booleanProp: boolean,
|
|
10
|
+
}
|
|
11
|
+
`));
|
|
12
|
+
expectRender(runner.program, <TypeBoxSchema type={booleanProp.type}/>, 'Type.Boolean()');
|
|
13
|
+
});
|
|
14
|
+
it('works with string', async () => {
|
|
15
|
+
const runner = await createTestRunner();
|
|
16
|
+
const { stringProp, urlProp } = (await runner.compile(`
|
|
17
|
+
model Test {
|
|
18
|
+
@test stringProp: string,
|
|
19
|
+
@test urlProp: url
|
|
20
|
+
}
|
|
21
|
+
`));
|
|
22
|
+
expectRender(runner.program, <TypeBoxSchema type={stringProp.type}/>, 'Type.String()');
|
|
23
|
+
expectRender(runner.program, <TypeBoxSchema type={urlProp.type}/>, 'Type.String({\n format: "uri"\n})');
|
|
24
|
+
});
|
|
25
|
+
describe('numerics', () => {
|
|
26
|
+
it('works with integers', async () => {
|
|
27
|
+
const runner = await createTestRunner();
|
|
28
|
+
const { int8Prop, int16Prop, int32Prop, int64Prop } = (await runner.compile(`
|
|
29
|
+
model Test {
|
|
30
|
+
@test int8Prop: int8,
|
|
31
|
+
@test int16Prop: int16,
|
|
32
|
+
@test int32Prop: int32,
|
|
33
|
+
@test int64Prop: int64,
|
|
34
|
+
}
|
|
35
|
+
`));
|
|
36
|
+
expectRender(runner.program, <TypeBoxSchema type={int8Prop.type}/>, 'Type.Integer()');
|
|
37
|
+
expectRender(runner.program, <TypeBoxSchema type={int16Prop.type}/>, 'Type.Integer()');
|
|
38
|
+
expectRender(runner.program, <TypeBoxSchema type={int32Prop.type}/>, 'Type.Integer()');
|
|
39
|
+
expectRender(runner.program, <TypeBoxSchema type={int64Prop.type}/>, 'Type.BigInt()');
|
|
40
|
+
});
|
|
41
|
+
it('works with unsigned integers', async () => {
|
|
42
|
+
const runner = await createTestRunner();
|
|
43
|
+
const { uint8Prop, uint16Prop, uint32Prop, uint64Prop, safeintProp } = (await runner.compile(`
|
|
44
|
+
model Test {
|
|
45
|
+
@test uint8Prop: uint8,
|
|
46
|
+
@test uint16Prop: uint16,
|
|
47
|
+
@test uint32Prop: uint32,
|
|
48
|
+
@test uint64Prop: uint64,
|
|
49
|
+
@test safeintProp: safeint,
|
|
50
|
+
}
|
|
51
|
+
`));
|
|
52
|
+
expectRender(runner.program, <TypeBoxSchema type={uint8Prop.type}/>, 'Type.Integer()');
|
|
53
|
+
expectRender(runner.program, <TypeBoxSchema type={uint16Prop.type}/>, 'Type.Integer()');
|
|
54
|
+
expectRender(runner.program, <TypeBoxSchema type={uint32Prop.type}/>, 'Type.Integer()');
|
|
55
|
+
expectRender(runner.program, <TypeBoxSchema type={uint64Prop.type}/>, 'Type.BigInt()');
|
|
56
|
+
expectRender(runner.program, <TypeBoxSchema type={safeintProp.type}/>, 'Type.Integer()');
|
|
57
|
+
});
|
|
58
|
+
it('works with floats', async () => {
|
|
59
|
+
const runner = await createTestRunner();
|
|
60
|
+
const { float32Prop, float64Prop, floatProp } = (await runner.compile(`
|
|
61
|
+
model Test {
|
|
62
|
+
@test float32Prop: float32,
|
|
63
|
+
@test float64Prop: float64,
|
|
64
|
+
@test floatProp: float,
|
|
65
|
+
}
|
|
66
|
+
`));
|
|
67
|
+
expectRender(runner.program, <TypeBoxSchema type={float32Prop.type}/>, 'Type.Number()');
|
|
68
|
+
expectRender(runner.program, <TypeBoxSchema type={float64Prop.type}/>, 'Type.Number()');
|
|
69
|
+
expectRender(runner.program, <TypeBoxSchema type={floatProp.type}/>, 'Type.Number()');
|
|
70
|
+
});
|
|
71
|
+
it('works with decimals', async () => {
|
|
72
|
+
const runner = await createTestRunner();
|
|
73
|
+
const { decimalProp, decimal128Prop } = (await runner.compile(`
|
|
74
|
+
model Test {
|
|
75
|
+
@test decimalProp: decimal,
|
|
76
|
+
@test decimal128Prop: decimal128,
|
|
77
|
+
}
|
|
78
|
+
`));
|
|
79
|
+
expectRender(runner.program, <TypeBoxSchema type={decimalProp.type}/>, 'Type.Number()');
|
|
80
|
+
expectRender(runner.program, <TypeBoxSchema type={decimal128Prop.type}/>, 'Type.Number()');
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
it('works with bytes', async () => {
|
|
84
|
+
const runner = await createTestRunner();
|
|
85
|
+
const { bytesProp } = (await runner.compile(`
|
|
86
|
+
model Test {
|
|
87
|
+
@test bytesProp: bytes,
|
|
88
|
+
}
|
|
89
|
+
`));
|
|
90
|
+
expectRender(runner.program, <TypeBoxSchema type={bytesProp.type}/>, 'Type.Any()');
|
|
91
|
+
});
|
|
92
|
+
it('works with date things', async () => {
|
|
93
|
+
const runner = await createTestRunner();
|
|
94
|
+
const { plainDateProp, plainTimeProp, utcDateTimeProp, offsetDateTimeProp } = (await runner.compile(`
|
|
95
|
+
model Test {
|
|
96
|
+
@test plainDateProp: plainDate,
|
|
97
|
+
@test plainTimeProp: plainTime,
|
|
98
|
+
@test utcDateTimeProp: utcDateTime,
|
|
99
|
+
@test offsetDateTimeProp: offsetDateTime
|
|
100
|
+
}
|
|
101
|
+
`));
|
|
102
|
+
expectRender(runner.program, <TypeBoxSchema type={plainDateProp.type}/>, 'Type.Date()');
|
|
103
|
+
expectRender(runner.program, <TypeBoxSchema type={plainTimeProp.type}/>, 'Type.String({\n format: "time"\n})');
|
|
104
|
+
expectRender(runner.program, <TypeBoxSchema type={utcDateTimeProp.type}/>, 'Type.Date()');
|
|
105
|
+
expectRender(runner.program, <TypeBoxSchema type={offsetDateTimeProp.type}/>, 'Type.Date()');
|
|
106
|
+
});
|
|
107
|
+
it('works with dates and encodings', async () => {
|
|
108
|
+
const runner = await createTestRunner();
|
|
109
|
+
const { int32Date, int64Date, rfc3339DateUtc, rfc3339DateOffset, rfc7231DateUtc, rfc7231DateOffset, } = await runner.compile(`
|
|
110
|
+
@test
|
|
111
|
+
@encode(DateTimeKnownEncoding.unixTimestamp, int32)
|
|
112
|
+
scalar int32Date extends utcDateTime;
|
|
113
|
+
|
|
114
|
+
@test
|
|
115
|
+
@encode(DateTimeKnownEncoding.unixTimestamp, int64)
|
|
116
|
+
scalar int64Date extends utcDateTime;
|
|
117
|
+
|
|
118
|
+
@test
|
|
119
|
+
@encode(DateTimeKnownEncoding.rfc3339)
|
|
120
|
+
scalar rfc3339DateUtc extends utcDateTime;
|
|
121
|
+
|
|
122
|
+
@test
|
|
123
|
+
@encode(DateTimeKnownEncoding.rfc3339)
|
|
124
|
+
scalar rfc3339DateOffset extends offsetDateTime;
|
|
125
|
+
|
|
126
|
+
@test
|
|
127
|
+
@encode(DateTimeKnownEncoding.rfc7231)
|
|
128
|
+
scalar rfc7231DateUtc extends utcDateTime;
|
|
129
|
+
|
|
130
|
+
@test
|
|
131
|
+
@encode(DateTimeKnownEncoding.rfc7231)
|
|
132
|
+
scalar rfc7231DateOffset extends offsetDateTime;
|
|
133
|
+
`);
|
|
134
|
+
expectRender(runner.program, <TypeBoxSchema type={int32Date}/>, 'Type.Integer()');
|
|
135
|
+
expectRender(runner.program, <TypeBoxSchema type={int64Date}/>, 'Type.BigInt()');
|
|
136
|
+
expectRender(runner.program, <TypeBoxSchema type={rfc3339DateUtc}/>, 'Type.String({\n format: "date-time"\n})');
|
|
137
|
+
expectRender(runner.program, <TypeBoxSchema type={rfc3339DateOffset}/>, 'Type.String({\n format: "date-time"\n})');
|
|
138
|
+
expectRender(runner.program, <TypeBoxSchema type={rfc7231DateUtc}/>, 'Type.String()');
|
|
139
|
+
expectRender(runner.program, <TypeBoxSchema type={rfc7231DateOffset}/>, 'Type.String()');
|
|
140
|
+
});
|
|
141
|
+
it('works with durations and encodings', async () => {
|
|
142
|
+
const runner = await createTestRunner();
|
|
143
|
+
const { myDuration, isoDuration, secondsDuration, int64SecondsDuration } = await runner.compile(`
|
|
144
|
+
@test
|
|
145
|
+
@encode(DurationKnownEncoding.ISO8601)
|
|
146
|
+
scalar isoDuration extends duration;
|
|
147
|
+
|
|
148
|
+
@test
|
|
149
|
+
@encode(DurationKnownEncoding.seconds, int32)
|
|
150
|
+
scalar secondsDuration extends duration;
|
|
151
|
+
|
|
152
|
+
@test
|
|
153
|
+
@encode(DurationKnownEncoding.seconds, int64)
|
|
154
|
+
scalar int64SecondsDuration extends duration;
|
|
155
|
+
|
|
156
|
+
@test
|
|
157
|
+
scalar myDuration extends duration;
|
|
158
|
+
`);
|
|
159
|
+
expectRender(runner.program, <TypeBoxSchema type={myDuration}/>, 'Type.String({\n format: "duration"\n})');
|
|
160
|
+
expectRender(runner.program, <TypeBoxSchema type={isoDuration}/>, 'Type.String({\n format: "duration"\n})');
|
|
161
|
+
expectRender(runner.program, <TypeBoxSchema type={secondsDuration}/>, 'Type.Integer()');
|
|
162
|
+
expectRender(runner.program, <TypeBoxSchema type={int64SecondsDuration}/>, 'Type.BigInt()');
|
|
163
|
+
});
|
|
164
|
+
it('works with unknown scalars', async () => {
|
|
165
|
+
const runner = await createTestRunner();
|
|
166
|
+
const { unknownScalar } = (await runner.compile(`
|
|
167
|
+
@test scalar unknownScalar;
|
|
168
|
+
`));
|
|
169
|
+
expectRender(runner.program, <TypeBoxSchema type={unknownScalar}/>, 'Type.Any()');
|
|
170
|
+
});
|
|
171
|
+
//# sourceMappingURL=scalars.test.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scalars.test.jsx","sourceRoot":"","sources":["../../test/scalars.test.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Children } from '@alloy-js/core/jsx-runtime';
|
|
2
|
+
import { Program } from '@typespec/compiler';
|
|
3
|
+
export declare function expectRender(program: Program, children: Children, expected: string): void;
|
|
4
|
+
export declare function expectRenderPure(children: Children, expected: string): void;
|
|
5
|
+
export declare function createTestHost(): Promise<import("@typespec/compiler/testing").TestHost>;
|
|
6
|
+
export declare function createTestRunner(): Promise<import("@typespec/compiler/testing").BasicTestRunner>;
|
|
7
|
+
export declare function createEmitterTestRunner(): Promise<import("@typespec/compiler/testing").BasicTestRunner>;
|
|
8
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../test/utils.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAEtD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAU7C,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,QAWlF;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,QAWpE;AAED,wBAAsB,cAAc,2DAInC;AAED,wBAAsB,gBAAgB,kEAKrC;AAED,wBAAsB,uBAAuB,kEAY5C"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { createComponent as _$createComponent } from "@alloy-js/core/jsx-runtime";
|
|
2
|
+
import { Output as AlloyOutput, render } from '@alloy-js/core';
|
|
3
|
+
import { SourceFile } from '@alloy-js/typescript';
|
|
4
|
+
import { createTestHost as coreCreateTestHost, createTestWrapper } from '@typespec/compiler/testing';
|
|
5
|
+
import { Output } from '@typespec/emitter-framework';
|
|
6
|
+
import { expect } from 'vitest';
|
|
7
|
+
import { typebox } from '../src/index.js';
|
|
8
|
+
import { TypeSpecTypeBoxTestLibrary } from '../src/testing/index.js';
|
|
9
|
+
export function expectRender(program, children, expected) {
|
|
10
|
+
const template = _$createComponent(Output, {
|
|
11
|
+
program: program,
|
|
12
|
+
externals: [typebox],
|
|
13
|
+
get children() {
|
|
14
|
+
return _$createComponent(SourceFile, {
|
|
15
|
+
path: "test.ts",
|
|
16
|
+
children: children
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
const output = render(template, {
|
|
21
|
+
insertFinalNewLine: false
|
|
22
|
+
});
|
|
23
|
+
expect(output.contents[0].contents.split(/\n/).slice(2).join('\n')).toBe(expected);
|
|
24
|
+
}
|
|
25
|
+
export function expectRenderPure(children, expected) {
|
|
26
|
+
const template = _$createComponent(AlloyOutput, {
|
|
27
|
+
externals: [typebox],
|
|
28
|
+
get children() {
|
|
29
|
+
return _$createComponent(SourceFile, {
|
|
30
|
+
path: "test.ts",
|
|
31
|
+
children: children
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
const output = render(template, {
|
|
36
|
+
insertFinalNewLine: false
|
|
37
|
+
});
|
|
38
|
+
expect(output.contents[0].contents.split(/\n/).slice(2).join('\n')).toBe(expected);
|
|
39
|
+
}
|
|
40
|
+
export async function createTestHost() {
|
|
41
|
+
return coreCreateTestHost({
|
|
42
|
+
libraries: [TypeSpecTypeBoxTestLibrary]
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
export async function createTestRunner() {
|
|
46
|
+
const host = await createTestHost();
|
|
47
|
+
return createTestWrapper(host, {
|
|
48
|
+
wrapper: code => `${code}`
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
export async function createEmitterTestRunner() {
|
|
52
|
+
const host = await createTestHost();
|
|
53
|
+
return createTestWrapper(host, {
|
|
54
|
+
wrapper: code => `${code}`,
|
|
55
|
+
compilerOptions: {
|
|
56
|
+
emit: ['@typespec-dev/emitter-typebox'],
|
|
57
|
+
options: {
|
|
58
|
+
'@typespec-dev/emitter-typebox': {}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Output","AlloyOutput","render","SourceFile","createTestHost","coreCreateTestHost","createTestWrapper","expect","typebox","TypeSpecTypeBoxTestLibrary","expectRender","program","children","expected","template","_$createComponent","externals","path","output","insertFinalNewLine","contents","split","slice","join","toBe","expectRenderPure","libraries","createTestRunner","host","wrapper","code","createEmitterTestRunner","compilerOptions","emit","options"],"sources":["../../test/utils.tsx"],"sourcesContent":[null],"mappings":";AAAA,SAASA,MAAM,IAAIC,WAAW,EAAqBC,MAAM,QAAQ,gBAAgB;AAEjF,SAASC,UAAU,QAAQ,sBAAsB;AAEjD,SACEC,cAAc,IAAIC,kBAAkB,EACpCC,iBAAiB,QACZ,4BAA4B;AACnC,SAASN,MAAM,QAAQ,6BAA6B;AACpD,SAASO,MAAM,QAAQ,QAAQ;AAC/B,SAASC,OAAO,QAAQ,iBAAiB;AACzC,SAASC,0BAA0B,QAAQ,yBAAyB;AAEpE,OAAO,SAASC,YAAYA,CAACC,OAAgB,EAAEC,QAAkB,EAAEC,QAAgB,EAAE;EACnF,MAAMC,QAAQ,GAAAC,iBAAA,CACXf,MAAM;IAACW,OAAO,EAAEA,OAAO;IAAEK,SAAS,EAAE,CAACR,OAAO,CAAC;IAAA,IAAAI,SAAA;MAAA,OAAAG,iBAAA,CAC3CZ,UAAU;QAACc,IAAI;QAAAL,QAAA,EAAYA;MAAQ;IAAA;EAAA,EAEvC;EAED,MAAMM,MAAM,GAAGhB,MAAM,CAACY,QAAQ,EAAE;IAAEK,kBAAkB,EAAE;EAAM,CAAC,CAAC;EAC9DZ,MAAM,CAAEW,MAAM,CAACE,QAAQ,CAAC,CAAC,CAAC,CAAuBA,QAAQ,CAACC,KAAK,CAAC,IAAI,CAAC,CAACC,KAAK,CAAC,CAAC,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC,CAAC,CAACC,IAAI,CAC7FX,QACF,CAAC;AACH;AAEA,OAAO,SAASY,gBAAgBA,CAACb,QAAkB,EAAEC,QAAgB,EAAE;EACrE,MAAMC,QAAQ,GAAAC,iBAAA,CACXd,WAAW;IAACe,SAAS,EAAE,CAACR,OAAO,CAAC;IAAA,IAAAI,SAAA;MAAA,OAAAG,iBAAA,CAC9BZ,UAAU;QAACc,IAAI;QAAAL,QAAA,EAAYA;MAAQ;IAAA;EAAA,EAEvC;EAED,MAAMM,MAAM,GAAGhB,MAAM,CAACY,QAAQ,EAAE;IAAEK,kBAAkB,EAAE;EAAM,CAAC,CAAC;EAC9DZ,MAAM,CAAEW,MAAM,CAACE,QAAQ,CAAC,CAAC,CAAC,CAAuBA,QAAQ,CAACC,KAAK,CAAC,IAAI,CAAC,CAACC,KAAK,CAAC,CAAC,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC,CAAC,CAACC,IAAI,CAC7FX,QACF,CAAC;AACH;AAEA,OAAO,eAAeT,cAAcA,CAAA,EAAG;EACrC,OAAOC,kBAAkB,CAAC;IACxBqB,SAAS,EAAE,CAACjB,0BAA0B;EACxC,CAAC,CAAC;AACJ;AAEA,OAAO,eAAekB,gBAAgBA,CAAA,EAAG;EACvC,MAAMC,IAAI,GAAG,MAAMxB,cAAc,CAAC,CAAC;EACnC,OAAOE,iBAAiB,CAACsB,IAAI,EAAE;IAC7BC,OAAO,EAAGC,IAAI,IAAK,GAAGA,IAAI;EAC5B,CAAC,CAAC;AACJ;AAEA,OAAO,eAAeC,uBAAuBA,CAAA,EAAG;EAC9C,MAAMH,IAAI,GAAG,MAAMxB,cAAc,CAAC,CAAC;EAEnC,OAAOE,iBAAiB,CAACsB,IAAI,EAAE;IAC7BC,OAAO,EAAGC,IAAI,IAAK,GAAGA,IAAI,EAAE;IAC5BE,eAAe,EAAE;MACfC,IAAI,EAAE,CAAC,+BAA+B,CAAC;MACvCC,OAAO,EAAE;QACP,+BAA+B,EAAE,CAAC;MACpC;IACF;EACF,CAAC,CAAC;AACJ","ignoreList":[]}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { Output as AlloyOutput, render } from '@alloy-js/core';
|
|
2
|
+
import { SourceFile } from '@alloy-js/typescript';
|
|
3
|
+
import { createTestHost as coreCreateTestHost, createTestWrapper, } from '@typespec/compiler/testing';
|
|
4
|
+
import { Output } from '@typespec/emitter-framework';
|
|
5
|
+
import { expect } from 'vitest';
|
|
6
|
+
import { typebox } from '../src/index.js';
|
|
7
|
+
import { TypeSpecTypeBoxTestLibrary } from '../src/testing/index.js';
|
|
8
|
+
export function expectRender(program, children, expected) {
|
|
9
|
+
const template = (<Output program={program} externals={[typebox]}>
|
|
10
|
+
<SourceFile path="test.ts">{children}</SourceFile>
|
|
11
|
+
</Output>);
|
|
12
|
+
const output = render(template, { insertFinalNewLine: false });
|
|
13
|
+
expect(output.contents[0].contents.split(/\n/).slice(2).join('\n')).toBe(expected);
|
|
14
|
+
}
|
|
15
|
+
export function expectRenderPure(children, expected) {
|
|
16
|
+
const template = (<AlloyOutput externals={[typebox]}>
|
|
17
|
+
<SourceFile path="test.ts">{children}</SourceFile>
|
|
18
|
+
</AlloyOutput>);
|
|
19
|
+
const output = render(template, { insertFinalNewLine: false });
|
|
20
|
+
expect(output.contents[0].contents.split(/\n/).slice(2).join('\n')).toBe(expected);
|
|
21
|
+
}
|
|
22
|
+
export async function createTestHost() {
|
|
23
|
+
return coreCreateTestHost({
|
|
24
|
+
libraries: [TypeSpecTypeBoxTestLibrary],
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
export async function createTestRunner() {
|
|
28
|
+
const host = await createTestHost();
|
|
29
|
+
return createTestWrapper(host, {
|
|
30
|
+
wrapper: (code) => `${code}`,
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
export async function createEmitterTestRunner() {
|
|
34
|
+
const host = await createTestHost();
|
|
35
|
+
return createTestWrapper(host, {
|
|
36
|
+
wrapper: (code) => `${code}`,
|
|
37
|
+
compilerOptions: {
|
|
38
|
+
emit: ['@typespec-dev/emitter-typebox'],
|
|
39
|
+
options: {
|
|
40
|
+
'@typespec-dev/emitter-typebox': {},
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=utils.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.jsx","sourceRoot":"","sources":["../../test/utils.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,WAAW,EAAqB,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAElF,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EACL,cAAc,IAAI,kBAAkB,EACpC,iBAAiB,GAClB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAErE,MAAM,UAAU,YAAY,CAAC,OAAgB,EAAE,QAAkB,EAAE,QAAgB;IACjF,MAAM,QAAQ,GAAG,CACf,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAC7C;MAAA,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,EAAE,UAAU,CACnD;IAAA,EAAE,MAAM,CAAC,CACV,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/D,MAAM,CAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAuB,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAC7F,QAAQ,CACT,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,QAAkB,EAAE,QAAgB;IACnE,MAAM,QAAQ,GAAG,CACf,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAChC;MAAA,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,EAAE,UAAU,CACnD;IAAA,EAAE,WAAW,CAAC,CACf,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/D,MAAM,CAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAuB,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAC7F,QAAQ,CACT,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,OAAO,kBAAkB,CAAC;QACxB,SAAS,EAAE,CAAC,0BAA0B,CAAC;KACxC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,MAAM,IAAI,GAAG,MAAM,cAAc,EAAE,CAAC;IACpC,OAAO,iBAAiB,CAAC,IAAI,EAAE;QAC7B,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE;KAC7B,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB;IAC3C,MAAM,IAAI,GAAG,MAAM,cAAc,EAAE,CAAC;IAEpC,OAAO,iBAAiB,CAAC,IAAI,EAAE;QAC7B,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE;QAC5B,eAAe,EAAE;YACf,IAAI,EAAE,CAAC,+BAA+B,CAAC;YACvC,OAAO,EAAE;gBACP,+BAA+B,EAAE,EAAE;aACpC;SACF;KACF,CAAC,CAAC;AACL,CAAC"}
|