@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.
Files changed (82) hide show
  1. package/LICENSE +21 -0
  2. package/dist/src/components/TypeBoxSchema.d.ts +8 -0
  3. package/dist/src/components/TypeBoxSchema.d.ts.map +1 -0
  4. package/dist/src/components/TypeBoxSchema.js +28 -0
  5. package/dist/src/components/TypeBoxSchema.js.map +1 -0
  6. package/dist/src/components/TypeBoxSchema.jsx +19 -0
  7. package/dist/src/components/TypeBoxSchema.jsx.map +1 -0
  8. package/dist/src/components/TypeBoxSchemaDeclaration.d.ts +9 -0
  9. package/dist/src/components/TypeBoxSchemaDeclaration.d.ts.map +1 -0
  10. package/dist/src/components/TypeBoxSchemaDeclaration.js +21 -0
  11. package/dist/src/components/TypeBoxSchemaDeclaration.js.map +1 -0
  12. package/dist/src/components/TypeBoxSchemaDeclaration.jsx +20 -0
  13. package/dist/src/components/TypeBoxSchemaDeclaration.jsx.map +1 -0
  14. package/dist/src/components/index.d.ts +3 -0
  15. package/dist/src/components/index.d.ts.map +1 -0
  16. package/dist/src/components/index.js +3 -0
  17. package/dist/src/components/index.js.map +1 -0
  18. package/dist/src/emitter.d.ts +3 -0
  19. package/dist/src/emitter.d.ts.map +1 -0
  20. package/dist/src/emitter.js +57 -0
  21. package/dist/src/emitter.js.map +1 -0
  22. package/dist/src/emitter.jsx +40 -0
  23. package/dist/src/emitter.jsx.map +1 -0
  24. package/dist/src/external-packages/typebox.d.ts +4 -0
  25. package/dist/src/external-packages/typebox.d.ts.map +1 -0
  26. package/dist/src/external-packages/typebox.js +11 -0
  27. package/dist/src/external-packages/typebox.js.map +1 -0
  28. package/dist/src/index.d.ts +6 -0
  29. package/dist/src/index.d.ts.map +1 -0
  30. package/dist/src/index.js +6 -0
  31. package/dist/src/index.js.map +1 -0
  32. package/dist/src/lib.d.ts +13 -0
  33. package/dist/src/lib.d.ts.map +1 -0
  34. package/dist/src/lib.js +10 -0
  35. package/dist/src/lib.js.map +1 -0
  36. package/dist/src/testing/index.d.ts +3 -0
  37. package/dist/src/testing/index.d.ts.map +1 -0
  38. package/dist/src/testing/index.js +6 -0
  39. package/dist/src/testing/index.js.map +1 -0
  40. package/dist/src/typeboxBaseSchema.d.ts +4 -0
  41. package/dist/src/typeboxBaseSchema.d.ts.map +1 -0
  42. package/dist/src/typeboxBaseSchema.js +129 -0
  43. package/dist/src/typeboxBaseSchema.js.map +1 -0
  44. package/dist/src/typeboxBaseSchema.jsx +136 -0
  45. package/dist/src/typeboxBaseSchema.jsx.map +1 -0
  46. package/dist/src/utils.d.ts +18 -0
  47. package/dist/src/utils.d.ts.map +1 -0
  48. package/dist/src/utils.js +118 -0
  49. package/dist/src/utils.js.map +1 -0
  50. package/dist/src/utils.jsx +114 -0
  51. package/dist/src/utils.jsx.map +1 -0
  52. package/dist/test/emitter/default.test.d.ts +2 -0
  53. package/dist/test/emitter/default.test.d.ts.map +1 -0
  54. package/dist/test/emitter/default.test.js +13 -0
  55. package/dist/test/emitter/default.test.js.map +1 -0
  56. package/dist/test/emitter/default.test.jsx +11 -0
  57. package/dist/test/emitter/default.test.jsx.map +1 -0
  58. package/dist/test/intrinsics.test.d.ts +2 -0
  59. package/dist/test/intrinsics.test.d.ts.map +1 -0
  60. package/dist/test/intrinsics.test.js +48 -0
  61. package/dist/test/intrinsics.test.js.map +1 -0
  62. package/dist/test/intrinsics.test.jsx +26 -0
  63. package/dist/test/intrinsics.test.jsx.map +1 -0
  64. package/dist/test/literals.test.d.ts +2 -0
  65. package/dist/test/literals.test.d.ts.map +1 -0
  66. package/dist/test/literals.test.js +39 -0
  67. package/dist/test/literals.test.js.map +1 -0
  68. package/dist/test/literals.test.jsx +22 -0
  69. package/dist/test/literals.test.jsx.map +1 -0
  70. package/dist/test/scalars.test.d.ts +2 -0
  71. package/dist/test/scalars.test.d.ts.map +1 -0
  72. package/dist/test/scalars.test.js +326 -0
  73. package/dist/test/scalars.test.js.map +1 -0
  74. package/dist/test/scalars.test.jsx +171 -0
  75. package/dist/test/scalars.test.jsx.map +1 -0
  76. package/dist/test/utils.d.ts +8 -0
  77. package/dist/test/utils.d.ts.map +1 -0
  78. package/dist/test/utils.js +63 -0
  79. package/dist/test/utils.js.map +1 -0
  80. package/dist/test/utils.jsx +45 -0
  81. package/dist/test/utils.jsx.map +1 -0
  82. 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"}