@typespec-dev/emitter-typebox 0.1.0 → 0.2.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/dist/src/components/TypeBoxSchemaDeclaration.d.ts.map +1 -1
- package/dist/src/components/TypeBoxSchemaDeclaration.js +20 -4
- package/dist/src/components/TypeBoxSchemaDeclaration.js.map +1 -1
- package/dist/src/components/TypeBoxSchemaDeclaration.jsx +22 -6
- package/dist/src/components/TypeBoxSchemaDeclaration.jsx.map +1 -1
- package/dist/src/emitter.d.ts.map +1 -1
- package/dist/src/emitter.js +1 -2
- package/dist/src/emitter.js.map +1 -1
- package/dist/src/emitter.jsx +1 -2
- package/dist/src/emitter.jsx.map +1 -1
- package/dist/src/external-packages/typebox.d.ts +1 -0
- package/dist/src/external-packages/typebox.d.ts.map +1 -1
- package/dist/src/external-packages/typebox.js +1 -1
- package/dist/src/external-packages/typebox.js.map +1 -1
- package/dist/src/typeboxBaseSchema.d.ts.map +1 -1
- package/dist/src/typeboxBaseSchema.js +154 -4
- package/dist/src/typeboxBaseSchema.js.map +1 -1
- package/dist/src/typeboxBaseSchema.jsx +88 -3
- package/dist/src/typeboxBaseSchema.jsx.map +1 -1
- package/dist/test/arrays.test.d.ts +2 -0
- package/dist/test/arrays.test.d.ts.map +1 -0
- package/dist/test/arrays.test.js +65 -0
- package/dist/test/arrays.test.js.map +1 -0
- package/dist/test/arrays.test.jsx +42 -0
- package/dist/test/arrays.test.jsx.map +1 -0
- package/dist/test/dictionaries.test.d.ts +2 -0
- package/dist/test/dictionaries.test.d.ts.map +1 -0
- package/dist/test/dictionaries.test.js +50 -0
- package/dist/test/dictionaries.test.js.map +1 -0
- package/dist/test/dictionaries.test.jsx +33 -0
- package/dist/test/dictionaries.test.jsx.map +1 -0
- package/dist/test/emitter/enums.test.d.ts +2 -0
- package/dist/test/emitter/enums.test.d.ts.map +1 -0
- package/dist/test/emitter/enums.test.js +48 -0
- package/dist/test/emitter/enums.test.js.map +1 -0
- package/dist/test/emitter/enums.test.jsx +42 -0
- package/dist/test/emitter/enums.test.jsx.map +1 -0
- package/dist/test/emitter/models.test.d.ts +2 -0
- package/dist/test/emitter/models.test.d.ts.map +1 -0
- package/dist/test/emitter/models.test.js +36 -0
- package/dist/test/emitter/models.test.js.map +1 -0
- package/dist/test/emitter/models.test.jsx +32 -0
- package/dist/test/emitter/models.test.jsx.map +1 -0
- package/dist/test/emitter/records.test.d.ts +2 -0
- package/dist/test/emitter/records.test.d.ts.map +1 -0
- package/dist/test/emitter/records.test.js +18 -0
- package/dist/test/emitter/records.test.js.map +1 -0
- package/dist/test/emitter/records.test.jsx +16 -0
- package/dist/test/emitter/records.test.jsx.map +1 -0
- package/dist/test/emitter/unions.test.d.ts +2 -0
- package/dist/test/emitter/unions.test.d.ts.map +1 -0
- package/dist/test/emitter/unions.test.js +37 -0
- package/dist/test/emitter/unions.test.js.map +1 -0
- package/dist/test/emitter/unions.test.jsx +33 -0
- package/dist/test/emitter/unions.test.jsx.map +1 -0
- package/dist/test/enums.test.d.ts +2 -0
- package/dist/test/enums.test.d.ts.map +1 -0
- package/dist/test/enums.test.js +53 -0
- package/dist/test/enums.test.js.map +1 -0
- package/dist/test/enums.test.jsx +40 -0
- package/dist/test/enums.test.jsx.map +1 -0
- package/dist/test/models.test.d.ts +2 -0
- package/dist/test/models.test.d.ts.map +1 -0
- package/dist/test/models.test.js +109 -0
- package/dist/test/models.test.js.map +1 -0
- package/dist/test/models.test.jsx +71 -0
- package/dist/test/models.test.jsx.map +1 -0
- package/dist/test/nullable.test.d.ts +2 -0
- package/dist/test/nullable.test.d.ts.map +1 -0
- package/dist/test/nullable.test.js +46 -0
- package/dist/test/nullable.test.js.map +1 -0
- package/dist/test/nullable.test.jsx +33 -0
- package/dist/test/nullable.test.jsx.map +1 -0
- package/dist/test/optionality.test.d.ts +2 -0
- package/dist/test/optionality.test.d.ts.map +1 -0
- package/dist/test/optionality.test.js +61 -0
- package/dist/test/optionality.test.js.map +1 -0
- package/dist/test/optionality.test.jsx +44 -0
- package/dist/test/optionality.test.jsx.map +1 -0
- package/dist/test/unions.test.d.ts +2 -0
- package/dist/test/unions.test.d.ts.map +1 -0
- package/dist/test/unions.test.js +51 -0
- package/dist/test/unions.test.js.map +1 -0
- package/dist/test/unions.test.jsx +38 -0
- package/dist/test/unions.test.jsx.map +1 -0
- package/dist/test/utils.js +4 -1
- package/dist/test/utils.js.map +1 -1
- package/dist/test/utils.jsx +2 -2
- package/dist/test/utils.jsx.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +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,4BACF,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":[]}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { describe, it } from 'vitest';
|
|
2
|
+
import { TypeBoxSchema } from '../src/components/TypeBoxSchema.jsx';
|
|
3
|
+
import { createTestRunner, expectRender } from './utils.jsx';
|
|
4
|
+
describe('arrays', () => {
|
|
5
|
+
it('works with array of strings', async () => {
|
|
6
|
+
const runner = await createTestRunner();
|
|
7
|
+
const { stringsProp } = (await runner.compile(`
|
|
8
|
+
model Test {
|
|
9
|
+
@test stringsProp: string[];
|
|
10
|
+
}
|
|
11
|
+
`));
|
|
12
|
+
expectRender(runner.program, <TypeBoxSchema type={stringsProp.type}/>, 'Type.Array(Type.String())');
|
|
13
|
+
});
|
|
14
|
+
it('works with array of integers', async () => {
|
|
15
|
+
const runner = await createTestRunner();
|
|
16
|
+
const { numsProp } = (await runner.compile(`
|
|
17
|
+
model Test {
|
|
18
|
+
@test numsProp: int32[];
|
|
19
|
+
}
|
|
20
|
+
`));
|
|
21
|
+
expectRender(runner.program, <TypeBoxSchema type={numsProp.type}/>, 'Type.Array(Type.Integer())');
|
|
22
|
+
});
|
|
23
|
+
it('works with array property in model', async () => {
|
|
24
|
+
const runner = await createTestRunner();
|
|
25
|
+
const { ListModel } = (await runner.compile(`
|
|
26
|
+
@test model ListModel {
|
|
27
|
+
items: string[];
|
|
28
|
+
}
|
|
29
|
+
`));
|
|
30
|
+
expectRender(runner.program, <TypeBoxSchema type={ListModel}/>, 'Type.Object({\n items: Type.Array(Type.String()),\n})');
|
|
31
|
+
});
|
|
32
|
+
it('works with array of booleans', async () => {
|
|
33
|
+
const runner = await createTestRunner();
|
|
34
|
+
const { flagsProp } = (await runner.compile(`
|
|
35
|
+
model Test {
|
|
36
|
+
@test flagsProp: boolean[];
|
|
37
|
+
}
|
|
38
|
+
`));
|
|
39
|
+
expectRender(runner.program, <TypeBoxSchema type={flagsProp.type}/>, 'Type.Array(Type.Boolean())');
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
//# sourceMappingURL=arrays.test.jsx.map
|
|
@@ -0,0 +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,4BAA4B,CAC7B,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":"dictionaries.test.d.ts","sourceRoot":"","sources":["../../test/dictionaries.test.tsx"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,50 @@
|
|
|
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
|
+
describe('dictionaries', () => {
|
|
6
|
+
it('works with Record of string values', async () => {
|
|
7
|
+
const runner = await createTestRunner();
|
|
8
|
+
const {
|
|
9
|
+
dictProp
|
|
10
|
+
} = await runner.compile(`
|
|
11
|
+
model Test {
|
|
12
|
+
@test dictProp: Record<string>;
|
|
13
|
+
}
|
|
14
|
+
`);
|
|
15
|
+
expectRender(runner.program, _$createComponent(TypeBoxSchema, {
|
|
16
|
+
get type() {
|
|
17
|
+
return dictProp.type;
|
|
18
|
+
}
|
|
19
|
+
}), 'Type.Record(Type.String(), Type.String())');
|
|
20
|
+
});
|
|
21
|
+
it('works with Record of integer values', async () => {
|
|
22
|
+
const runner = await createTestRunner();
|
|
23
|
+
const {
|
|
24
|
+
intDict
|
|
25
|
+
} = await runner.compile(`
|
|
26
|
+
model Test {
|
|
27
|
+
@test intDict: Record<int32>;
|
|
28
|
+
}
|
|
29
|
+
`);
|
|
30
|
+
expectRender(runner.program, _$createComponent(TypeBoxSchema, {
|
|
31
|
+
get type() {
|
|
32
|
+
return intDict.type;
|
|
33
|
+
}
|
|
34
|
+
}), 'Type.Record(Type.String(), Type.Integer())');
|
|
35
|
+
});
|
|
36
|
+
it('works with record property in model', async () => {
|
|
37
|
+
const runner = await createTestRunner();
|
|
38
|
+
const {
|
|
39
|
+
DictModel
|
|
40
|
+
} = await runner.compile(`
|
|
41
|
+
@test model DictModel {
|
|
42
|
+
tags: Record<string>;
|
|
43
|
+
}
|
|
44
|
+
`);
|
|
45
|
+
expectRender(runner.program, _$createComponent(TypeBoxSchema, {
|
|
46
|
+
type: DictModel
|
|
47
|
+
}), 'Type.Object({\n tags: Type.Record(Type.String(), Type.String()),\n})');
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
//# sourceMappingURL=dictionaries.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["describe","it","TypeBoxSchema","createTestRunner","expectRender","runner","dictProp","compile","program","_$createComponent","type","intDict","DictModel"],"sources":["../../test/dictionaries.test.tsx"],"sourcesContent":[null],"mappings":";AACA,SAASA,QAAQ,EAAEC,EAAE,QAAQ,QAAQ;AACrC,SAASC,aAAa;AACtB,SAASC,gBAAgB,EAAEC,YAAY;AAEvCJ,QAAQ,CAAC,cAAc,EAAE,MAAM;EAC7BC,EAAE,CAAC,oCAAoC,EAAE,YAAY;IACnD,MAAMI,MAAM,GAAG,MAAMF,gBAAgB,CAAC,CAAC;IACvC,MAAM;MAAEG;IAAS,CAAC,GAAI,MAAMD,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,OAAEJ,QAAQ,CAACI,IAAI;MAAA;IAAA,IAClC,2CACF,CAAC;EACH,CAAC,CAAC;EAEFT,EAAE,CAAC,qCAAqC,EAAE,YAAY;IACpD,MAAMI,MAAM,GAAG,MAAMF,gBAAgB,CAAC,CAAC;IACvC,MAAM;MAAEQ;IAAQ,CAAC,GAAI,MAAMN,MAAM,CAACE,OAAO,CAAC;AAC9C;AACA;AACA;AACA,KAAK,CAAmC;IAEpCH,YAAY,CACVC,MAAM,CAACG,OAAO,EAAAC,iBAAA,CACbP,aAAa;MAAA,IAACQ,IAAIA,CAAA;QAAA,OAAEC,OAAO,CAACD,IAAI;MAAA;IAAA,IACjC,4CACF,CAAC;EACH,CAAC,CAAC;EAEFT,EAAE,CAAC,qCAAqC,EAAE,YAAY;IACpD,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,uEACF,CAAC;EACH,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { describe, it } from 'vitest';
|
|
2
|
+
import { TypeBoxSchema } from '../src/components/TypeBoxSchema.jsx';
|
|
3
|
+
import { createTestRunner, expectRender } from './utils.jsx';
|
|
4
|
+
describe('dictionaries', () => {
|
|
5
|
+
it('works with Record of string values', async () => {
|
|
6
|
+
const runner = await createTestRunner();
|
|
7
|
+
const { dictProp } = (await runner.compile(`
|
|
8
|
+
model Test {
|
|
9
|
+
@test dictProp: Record<string>;
|
|
10
|
+
}
|
|
11
|
+
`));
|
|
12
|
+
expectRender(runner.program, <TypeBoxSchema type={dictProp.type}/>, 'Type.Record(Type.String(), Type.String())');
|
|
13
|
+
});
|
|
14
|
+
it('works with Record of integer values', async () => {
|
|
15
|
+
const runner = await createTestRunner();
|
|
16
|
+
const { intDict } = (await runner.compile(`
|
|
17
|
+
model Test {
|
|
18
|
+
@test intDict: Record<int32>;
|
|
19
|
+
}
|
|
20
|
+
`));
|
|
21
|
+
expectRender(runner.program, <TypeBoxSchema type={intDict.type}/>, 'Type.Record(Type.String(), Type.Integer())');
|
|
22
|
+
});
|
|
23
|
+
it('works with record property in model', async () => {
|
|
24
|
+
const runner = await createTestRunner();
|
|
25
|
+
const { DictModel } = (await runner.compile(`
|
|
26
|
+
@test model DictModel {
|
|
27
|
+
tags: Record<string>;
|
|
28
|
+
}
|
|
29
|
+
`));
|
|
30
|
+
expectRender(runner.program, <TypeBoxSchema type={DictModel}/>, 'Type.Object({\n tags: Type.Record(Type.String(), Type.String()),\n})');
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
//# sourceMappingURL=dictionaries.test.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dictionaries.test.jsx","sourceRoot":"","sources":["../../test/dictionaries.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,cAAc,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QAClD,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,2CAA2C,CAC5C,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACnD,MAAM,MAAM,GAAG,MAAM,gBAAgB,EAAE,CAAC;QACxC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC;;;;KAIzC,CAAC,CAAkC,CAAC;QAErC,YAAY,CACV,MAAM,CAAC,OAAO,EACd,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAG,EACrC,4CAA4C,CAC7C,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACnD,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,uEAAuE,CACxE,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enums.test.d.ts","sourceRoot":"","sources":["../../../test/emitter/enums.test.tsx"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { createEmitterTestRunner } from "../utils.js";
|
|
3
|
+
describe('enum emitter output', () => {
|
|
4
|
+
it('emits string enum', async () => {
|
|
5
|
+
const runner = await createEmitterTestRunner();
|
|
6
|
+
await runner.compile(`
|
|
7
|
+
enum Direction {
|
|
8
|
+
Up,
|
|
9
|
+
Down,
|
|
10
|
+
Left,
|
|
11
|
+
Right,
|
|
12
|
+
}
|
|
13
|
+
`);
|
|
14
|
+
const {
|
|
15
|
+
text
|
|
16
|
+
} = await runner.program.host.readFile('@typespec-dev/emitter-typebox/models.ts');
|
|
17
|
+
expect(text.trim()).toMatchSnapshot();
|
|
18
|
+
});
|
|
19
|
+
it('emits numeric enum', async () => {
|
|
20
|
+
const runner = await createEmitterTestRunner();
|
|
21
|
+
await runner.compile(`
|
|
22
|
+
enum Priority {
|
|
23
|
+
Low: 0,
|
|
24
|
+
Medium: 1,
|
|
25
|
+
High: 2,
|
|
26
|
+
}
|
|
27
|
+
`);
|
|
28
|
+
const {
|
|
29
|
+
text
|
|
30
|
+
} = await runner.program.host.readFile('@typespec-dev/emitter-typebox/models.ts');
|
|
31
|
+
expect(text.trim()).toMatchSnapshot();
|
|
32
|
+
});
|
|
33
|
+
it('emits string enum with custom values', async () => {
|
|
34
|
+
const runner = await createEmitterTestRunner();
|
|
35
|
+
await runner.compile(`
|
|
36
|
+
enum Color {
|
|
37
|
+
Red: "red",
|
|
38
|
+
Green: "green",
|
|
39
|
+
Blue: "blue",
|
|
40
|
+
}
|
|
41
|
+
`);
|
|
42
|
+
const {
|
|
43
|
+
text
|
|
44
|
+
} = await runner.program.host.readFile('@typespec-dev/emitter-typebox/models.ts');
|
|
45
|
+
expect(text.trim()).toMatchSnapshot();
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
//# sourceMappingURL=enums.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["describe","expect","it","createEmitterTestRunner","runner","compile","text","program","host","readFile","trim","toMatchSnapshot"],"sources":["../../../test/emitter/enums.test.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,QAAQ;AAC7C,SAASC,uBAAuB;AAEhCH,QAAQ,CAAC,qBAAqB,EAAE,MAAM;EACpCE,EAAE,CAAC,mBAAmB,EAAE,YAAY;IAClC,MAAME,MAAM,GAAG,MAAMD,uBAAuB,CAAC,CAAC;IAC9C,MAAMC,MAAM,CAACC,OAAO,CAAC;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC;IAEF,MAAM;MAAEC;IAAK,CAAC,GAAG,MAAMF,MAAM,CAACG,OAAO,CAACC,IAAI,CAACC,QAAQ,CAAC,yCAAyC,CAAC;IAC9FR,MAAM,CAACK,IAAI,CAACI,IAAI,CAAC,CAAC,CAAC,CAACC,eAAe,CAAC,CAAC;EACvC,CAAC,CAAC;EAEFT,EAAE,CAAC,oBAAoB,EAAE,YAAY;IACnC,MAAME,MAAM,GAAG,MAAMD,uBAAuB,CAAC,CAAC;IAC9C,MAAMC,MAAM,CAACC,OAAO,CAAC;AACzB;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC;IAEF,MAAM;MAAEC;IAAK,CAAC,GAAG,MAAMF,MAAM,CAACG,OAAO,CAACC,IAAI,CAACC,QAAQ,CAAC,yCAAyC,CAAC;IAC9FR,MAAM,CAACK,IAAI,CAACI,IAAI,CAAC,CAAC,CAAC,CAACC,eAAe,CAAC,CAAC;EACvC,CAAC,CAAC;EAEFT,EAAE,CAAC,sCAAsC,EAAE,YAAY;IACrD,MAAME,MAAM,GAAG,MAAMD,uBAAuB,CAAC,CAAC;IAC9C,MAAMC,MAAM,CAACC,OAAO,CAAC;AACzB;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC;IAEF,MAAM;MAAEC;IAAK,CAAC,GAAG,MAAMF,MAAM,CAACG,OAAO,CAACC,IAAI,CAACC,QAAQ,CAAC,yCAAyC,CAAC;IAC9FR,MAAM,CAACK,IAAI,CAACI,IAAI,CAAC,CAAC,CAAC,CAACC,eAAe,CAAC,CAAC;EACvC,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { createEmitterTestRunner } from '../utils.jsx';
|
|
3
|
+
describe('enum emitter output', () => {
|
|
4
|
+
it('emits string enum', async () => {
|
|
5
|
+
const runner = await createEmitterTestRunner();
|
|
6
|
+
await runner.compile(`
|
|
7
|
+
enum Direction {
|
|
8
|
+
Up,
|
|
9
|
+
Down,
|
|
10
|
+
Left,
|
|
11
|
+
Right,
|
|
12
|
+
}
|
|
13
|
+
`);
|
|
14
|
+
const { text } = await runner.program.host.readFile('@typespec-dev/emitter-typebox/models.ts');
|
|
15
|
+
expect(text.trim()).toMatchSnapshot();
|
|
16
|
+
});
|
|
17
|
+
it('emits numeric enum', async () => {
|
|
18
|
+
const runner = await createEmitterTestRunner();
|
|
19
|
+
await runner.compile(`
|
|
20
|
+
enum Priority {
|
|
21
|
+
Low: 0,
|
|
22
|
+
Medium: 1,
|
|
23
|
+
High: 2,
|
|
24
|
+
}
|
|
25
|
+
`);
|
|
26
|
+
const { text } = await runner.program.host.readFile('@typespec-dev/emitter-typebox/models.ts');
|
|
27
|
+
expect(text.trim()).toMatchSnapshot();
|
|
28
|
+
});
|
|
29
|
+
it('emits string enum with custom values', async () => {
|
|
30
|
+
const runner = await createEmitterTestRunner();
|
|
31
|
+
await runner.compile(`
|
|
32
|
+
enum Color {
|
|
33
|
+
Red: "red",
|
|
34
|
+
Green: "green",
|
|
35
|
+
Blue: "blue",
|
|
36
|
+
}
|
|
37
|
+
`);
|
|
38
|
+
const { text } = await runner.program.host.readFile('@typespec-dev/emitter-typebox/models.ts');
|
|
39
|
+
expect(text.trim()).toMatchSnapshot();
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
//# sourceMappingURL=enums.test.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enums.test.jsx","sourceRoot":"","sources":["../../../test/emitter/enums.test.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAEvD,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;QACjC,MAAM,MAAM,GAAG,MAAM,uBAAuB,EAAE,CAAC;QAC/C,MAAM,MAAM,CAAC,OAAO,CAAC;;;;;;;KAOpB,CAAC,CAAC;QAEH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,yCAAyC,CAAC,CAAC;QAC/F,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;QAClC,MAAM,MAAM,GAAG,MAAM,uBAAuB,EAAE,CAAC;QAC/C,MAAM,MAAM,CAAC,OAAO,CAAC;;;;;;KAMpB,CAAC,CAAC;QAEH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,yCAAyC,CAAC,CAAC;QAC/F,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;QACpD,MAAM,MAAM,GAAG,MAAM,uBAAuB,EAAE,CAAC;QAC/C,MAAM,MAAM,CAAC,OAAO,CAAC;;;;;;KAMpB,CAAC,CAAC;QAEH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,yCAAyC,CAAC,CAAC;QAC/F,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models.test.d.ts","sourceRoot":"","sources":["../../../test/emitter/models.test.tsx"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { createEmitterTestRunner } from "../utils.js";
|
|
3
|
+
describe('model emitter output', () => {
|
|
4
|
+
it('emits models with arrays, optional props, and nested references', async () => {
|
|
5
|
+
const runner = await createEmitterTestRunner();
|
|
6
|
+
await runner.compile(`
|
|
7
|
+
model Address {
|
|
8
|
+
street: string;
|
|
9
|
+
city: string;
|
|
10
|
+
zip?: string;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
model User {
|
|
14
|
+
name: string;
|
|
15
|
+
age?: int32;
|
|
16
|
+
tags: string[];
|
|
17
|
+
address: Address;
|
|
18
|
+
}
|
|
19
|
+
`);
|
|
20
|
+
const {
|
|
21
|
+
text
|
|
22
|
+
} = await runner.program.host.readFile('@typespec-dev/emitter-typebox/models.ts');
|
|
23
|
+
expect(text.trim()).toMatchSnapshot();
|
|
24
|
+
});
|
|
25
|
+
it('emits empty model', async () => {
|
|
26
|
+
const runner = await createEmitterTestRunner();
|
|
27
|
+
await runner.compile(`
|
|
28
|
+
model Empty {}
|
|
29
|
+
`);
|
|
30
|
+
const {
|
|
31
|
+
text
|
|
32
|
+
} = await runner.program.host.readFile('@typespec-dev/emitter-typebox/models.ts');
|
|
33
|
+
expect(text.trim()).toMatchSnapshot();
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
//# sourceMappingURL=models.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["describe","expect","it","createEmitterTestRunner","runner","compile","text","program","host","readFile","trim","toMatchSnapshot"],"sources":["../../../test/emitter/models.test.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,QAAQ;AAC7C,SAASC,uBAAuB;AAEhCH,QAAQ,CAAC,sBAAsB,EAAE,MAAM;EACrCE,EAAE,CAAC,iEAAiE,EAAE,YAAY;IAChF,MAAME,MAAM,GAAG,MAAMD,uBAAuB,CAAC,CAAC;IAC9C,MAAMC,MAAM,CAACC,OAAO,CAAC;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC;IAEF,MAAM;MAAEC;IAAK,CAAC,GAAG,MAAMF,MAAM,CAACG,OAAO,CAACC,IAAI,CAACC,QAAQ,CAAC,yCAAyC,CAAC;IAC9FR,MAAM,CAACK,IAAI,CAACI,IAAI,CAAC,CAAC,CAAC,CAACC,eAAe,CAAC,CAAC;EACvC,CAAC,CAAC;EAEFT,EAAE,CAAC,mBAAmB,EAAE,YAAY;IAClC,MAAME,MAAM,GAAG,MAAMD,uBAAuB,CAAC,CAAC;IAC9C,MAAMC,MAAM,CAACC,OAAO,CAAC;AACzB;AACA,KAAK,CAAC;IAEF,MAAM;MAAEC;IAAK,CAAC,GAAG,MAAMF,MAAM,CAACG,OAAO,CAACC,IAAI,CAACC,QAAQ,CAAC,yCAAyC,CAAC;IAC9FR,MAAM,CAACK,IAAI,CAACI,IAAI,CAAC,CAAC,CAAC,CAACC,eAAe,CAAC,CAAC;EACvC,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { createEmitterTestRunner } from '../utils.jsx';
|
|
3
|
+
describe('model emitter output', () => {
|
|
4
|
+
it('emits models with arrays, optional props, and nested references', async () => {
|
|
5
|
+
const runner = await createEmitterTestRunner();
|
|
6
|
+
await runner.compile(`
|
|
7
|
+
model Address {
|
|
8
|
+
street: string;
|
|
9
|
+
city: string;
|
|
10
|
+
zip?: string;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
model User {
|
|
14
|
+
name: string;
|
|
15
|
+
age?: int32;
|
|
16
|
+
tags: string[];
|
|
17
|
+
address: Address;
|
|
18
|
+
}
|
|
19
|
+
`);
|
|
20
|
+
const { text } = await runner.program.host.readFile('@typespec-dev/emitter-typebox/models.ts');
|
|
21
|
+
expect(text.trim()).toMatchSnapshot();
|
|
22
|
+
});
|
|
23
|
+
it('emits empty model', async () => {
|
|
24
|
+
const runner = await createEmitterTestRunner();
|
|
25
|
+
await runner.compile(`
|
|
26
|
+
model Empty {}
|
|
27
|
+
`);
|
|
28
|
+
const { text } = await runner.program.host.readFile('@typespec-dev/emitter-typebox/models.ts');
|
|
29
|
+
expect(text.trim()).toMatchSnapshot();
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
//# sourceMappingURL=models.test.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models.test.jsx","sourceRoot":"","sources":["../../../test/emitter/models.test.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAEvD,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;QAC/E,MAAM,MAAM,GAAG,MAAM,uBAAuB,EAAE,CAAC;QAC/C,MAAM,MAAM,CAAC,OAAO,CAAC;;;;;;;;;;;;;KAapB,CAAC,CAAC;QAEH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,yCAAyC,CAAC,CAAC;QAC/F,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;QACjC,MAAM,MAAM,GAAG,MAAM,uBAAuB,EAAE,CAAC;QAC/C,MAAM,MAAM,CAAC,OAAO,CAAC;;KAEpB,CAAC,CAAC;QAEH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,yCAAyC,CAAC,CAAC;QAC/F,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"records.test.d.ts","sourceRoot":"","sources":["../../../test/emitter/records.test.tsx"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { createEmitterTestRunner } from "../utils.js";
|
|
3
|
+
describe('record/dictionary emitter output', () => {
|
|
4
|
+
it('emits models with record properties', async () => {
|
|
5
|
+
const runner = await createEmitterTestRunner();
|
|
6
|
+
await runner.compile(`
|
|
7
|
+
model Config {
|
|
8
|
+
settings: Record<string>;
|
|
9
|
+
counts: Record<int32>;
|
|
10
|
+
}
|
|
11
|
+
`);
|
|
12
|
+
const {
|
|
13
|
+
text
|
|
14
|
+
} = await runner.program.host.readFile('@typespec-dev/emitter-typebox/models.ts');
|
|
15
|
+
expect(text.trim()).toMatchSnapshot();
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
//# sourceMappingURL=records.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["describe","expect","it","createEmitterTestRunner","runner","compile","text","program","host","readFile","trim","toMatchSnapshot"],"sources":["../../../test/emitter/records.test.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,QAAQ;AAC7C,SAASC,uBAAuB;AAEhCH,QAAQ,CAAC,kCAAkC,EAAE,MAAM;EACjDE,EAAE,CAAC,qCAAqC,EAAE,YAAY;IACpD,MAAME,MAAM,GAAG,MAAMD,uBAAuB,CAAC,CAAC;IAC9C,MAAMC,MAAM,CAACC,OAAO,CAAC;AACzB;AACA;AACA;AACA;AACA,KAAK,CAAC;IAEF,MAAM;MAAEC;IAAK,CAAC,GAAG,MAAMF,MAAM,CAACG,OAAO,CAACC,IAAI,CAACC,QAAQ,CAAC,yCAAyC,CAAC;IAC9FR,MAAM,CAACK,IAAI,CAACI,IAAI,CAAC,CAAC,CAAC,CAACC,eAAe,CAAC,CAAC;EACvC,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { createEmitterTestRunner } from '../utils.jsx';
|
|
3
|
+
describe('record/dictionary emitter output', () => {
|
|
4
|
+
it('emits models with record properties', async () => {
|
|
5
|
+
const runner = await createEmitterTestRunner();
|
|
6
|
+
await runner.compile(`
|
|
7
|
+
model Config {
|
|
8
|
+
settings: Record<string>;
|
|
9
|
+
counts: Record<int32>;
|
|
10
|
+
}
|
|
11
|
+
`);
|
|
12
|
+
const { text } = await runner.program.host.readFile('@typespec-dev/emitter-typebox/models.ts');
|
|
13
|
+
expect(text.trim()).toMatchSnapshot();
|
|
14
|
+
});
|
|
15
|
+
});
|
|
16
|
+
//# sourceMappingURL=records.test.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"records.test.jsx","sourceRoot":"","sources":["../../../test/emitter/records.test.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAEvD,QAAQ,CAAC,kCAAkC,EAAE,GAAG,EAAE;IAChD,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACnD,MAAM,MAAM,GAAG,MAAM,uBAAuB,EAAE,CAAC;QAC/C,MAAM,MAAM,CAAC,OAAO,CAAC;;;;;KAKpB,CAAC,CAAC;QAEH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,yCAAyC,CAAC,CAAC;QAC/F,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unions.test.d.ts","sourceRoot":"","sources":["../../../test/emitter/unions.test.tsx"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { createEmitterTestRunner } from "../utils.js";
|
|
3
|
+
describe('union and nullable emitter output', () => {
|
|
4
|
+
it('emits named union types', async () => {
|
|
5
|
+
const runner = await createEmitterTestRunner();
|
|
6
|
+
await runner.compile(`
|
|
7
|
+
union Status {
|
|
8
|
+
active: "active",
|
|
9
|
+
inactive: "inactive",
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
union Result {
|
|
13
|
+
success: string,
|
|
14
|
+
error: int32,
|
|
15
|
+
}
|
|
16
|
+
`);
|
|
17
|
+
const {
|
|
18
|
+
text
|
|
19
|
+
} = await runner.program.host.readFile('@typespec-dev/emitter-typebox/models.ts');
|
|
20
|
+
expect(text.trim()).toMatchSnapshot();
|
|
21
|
+
});
|
|
22
|
+
it('emits model with nullable properties', async () => {
|
|
23
|
+
const runner = await createEmitterTestRunner();
|
|
24
|
+
await runner.compile(`
|
|
25
|
+
model Profile {
|
|
26
|
+
name: string;
|
|
27
|
+
bio: string | null;
|
|
28
|
+
age?: int32 | null;
|
|
29
|
+
}
|
|
30
|
+
`);
|
|
31
|
+
const {
|
|
32
|
+
text
|
|
33
|
+
} = await runner.program.host.readFile('@typespec-dev/emitter-typebox/models.ts');
|
|
34
|
+
expect(text.trim()).toMatchSnapshot();
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
//# sourceMappingURL=unions.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["describe","expect","it","createEmitterTestRunner","runner","compile","text","program","host","readFile","trim","toMatchSnapshot"],"sources":["../../../test/emitter/unions.test.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,QAAQ;AAC7C,SAASC,uBAAuB;AAEhCH,QAAQ,CAAC,mCAAmC,EAAE,MAAM;EAClDE,EAAE,CAAC,yBAAyB,EAAE,YAAY;IACxC,MAAME,MAAM,GAAG,MAAMD,uBAAuB,CAAC,CAAC;IAC9C,MAAMC,MAAM,CAACC,OAAO,CAAC;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC;IAEF,MAAM;MAAEC;IAAK,CAAC,GAAG,MAAMF,MAAM,CAACG,OAAO,CAACC,IAAI,CAACC,QAAQ,CAAC,yCAAyC,CAAC;IAC9FR,MAAM,CAACK,IAAI,CAACI,IAAI,CAAC,CAAC,CAAC,CAACC,eAAe,CAAC,CAAC;EACvC,CAAC,CAAC;EAEFT,EAAE,CAAC,sCAAsC,EAAE,YAAY;IACrD,MAAME,MAAM,GAAG,MAAMD,uBAAuB,CAAC,CAAC;IAC9C,MAAMC,MAAM,CAACC,OAAO,CAAC;AACzB;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC;IAEF,MAAM;MAAEC;IAAK,CAAC,GAAG,MAAMF,MAAM,CAACG,OAAO,CAACC,IAAI,CAACC,QAAQ,CAAC,yCAAyC,CAAC;IAC9FR,MAAM,CAACK,IAAI,CAACI,IAAI,CAAC,CAAC,CAAC,CAACC,eAAe,CAAC,CAAC;EACvC,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { createEmitterTestRunner } from '../utils.jsx';
|
|
3
|
+
describe('union and nullable emitter output', () => {
|
|
4
|
+
it('emits named union types', async () => {
|
|
5
|
+
const runner = await createEmitterTestRunner();
|
|
6
|
+
await runner.compile(`
|
|
7
|
+
union Status {
|
|
8
|
+
active: "active",
|
|
9
|
+
inactive: "inactive",
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
union Result {
|
|
13
|
+
success: string,
|
|
14
|
+
error: int32,
|
|
15
|
+
}
|
|
16
|
+
`);
|
|
17
|
+
const { text } = await runner.program.host.readFile('@typespec-dev/emitter-typebox/models.ts');
|
|
18
|
+
expect(text.trim()).toMatchSnapshot();
|
|
19
|
+
});
|
|
20
|
+
it('emits model with nullable properties', async () => {
|
|
21
|
+
const runner = await createEmitterTestRunner();
|
|
22
|
+
await runner.compile(`
|
|
23
|
+
model Profile {
|
|
24
|
+
name: string;
|
|
25
|
+
bio: string | null;
|
|
26
|
+
age?: int32 | null;
|
|
27
|
+
}
|
|
28
|
+
`);
|
|
29
|
+
const { text } = await runner.program.host.readFile('@typespec-dev/emitter-typebox/models.ts');
|
|
30
|
+
expect(text.trim()).toMatchSnapshot();
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
//# sourceMappingURL=unions.test.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unions.test.jsx","sourceRoot":"","sources":["../../../test/emitter/unions.test.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAEvD,QAAQ,CAAC,mCAAmC,EAAE,GAAG,EAAE;IACjD,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;QACvC,MAAM,MAAM,GAAG,MAAM,uBAAuB,EAAE,CAAC;QAC/C,MAAM,MAAM,CAAC,OAAO,CAAC;;;;;;;;;;KAUpB,CAAC,CAAC;QAEH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,yCAAyC,CAAC,CAAC;QAC/F,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;QACpD,MAAM,MAAM,GAAG,MAAM,uBAAuB,EAAE,CAAC;QAC/C,MAAM,MAAM,CAAC,OAAO,CAAC;;;;;;KAMpB,CAAC,CAAC;QAEH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,yCAAyC,CAAC,CAAC;QAC/F,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enums.test.d.ts","sourceRoot":"","sources":["../../test/enums.test.tsx"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,53 @@
|
|
|
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
|
+
describe('enums', () => {
|
|
6
|
+
it('works with string enum', async () => {
|
|
7
|
+
const runner = await createTestRunner();
|
|
8
|
+
const {
|
|
9
|
+
Direction
|
|
10
|
+
} = await runner.compile(`
|
|
11
|
+
@test enum Direction {
|
|
12
|
+
Up,
|
|
13
|
+
Down,
|
|
14
|
+
Left,
|
|
15
|
+
Right,
|
|
16
|
+
}
|
|
17
|
+
`);
|
|
18
|
+
expectRender(runner.program, _$createComponent(TypeBoxSchema, {
|
|
19
|
+
type: Direction
|
|
20
|
+
}), 'Type.Union([\n Type.Literal("Up"),\n Type.Literal("Down"),\n Type.Literal("Left"),\n Type.Literal("Right")\n])');
|
|
21
|
+
});
|
|
22
|
+
it('works with string enum with values', async () => {
|
|
23
|
+
const runner = await createTestRunner();
|
|
24
|
+
const {
|
|
25
|
+
Color
|
|
26
|
+
} = await runner.compile(`
|
|
27
|
+
@test enum Color {
|
|
28
|
+
Red: "red",
|
|
29
|
+
Green: "green",
|
|
30
|
+
Blue: "blue",
|
|
31
|
+
}
|
|
32
|
+
`);
|
|
33
|
+
expectRender(runner.program, _$createComponent(TypeBoxSchema, {
|
|
34
|
+
type: Color
|
|
35
|
+
}), 'Type.Union([Type.Literal("red"), Type.Literal("green"), Type.Literal("blue")])');
|
|
36
|
+
});
|
|
37
|
+
it('works with numeric enum', async () => {
|
|
38
|
+
const runner = await createTestRunner();
|
|
39
|
+
const {
|
|
40
|
+
Priority
|
|
41
|
+
} = await runner.compile(`
|
|
42
|
+
@test enum Priority {
|
|
43
|
+
Low: 0,
|
|
44
|
+
Medium: 1,
|
|
45
|
+
High: 2,
|
|
46
|
+
}
|
|
47
|
+
`);
|
|
48
|
+
expectRender(runner.program, _$createComponent(TypeBoxSchema, {
|
|
49
|
+
type: Priority
|
|
50
|
+
}), 'Type.Union([Type.Literal(0), Type.Literal(1), Type.Literal(2)])');
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
//# sourceMappingURL=enums.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["describe","it","TypeBoxSchema","createTestRunner","expectRender","runner","Direction","compile","program","_$createComponent","type","Color","Priority"],"sources":["../../test/enums.test.tsx"],"sourcesContent":[null],"mappings":";AACA,SAASA,QAAQ,EAAEC,EAAE,QAAQ,QAAQ;AACrC,SAASC,aAAa;AACtB,SAASC,gBAAgB,EAAEC,YAAY;AAEvCJ,QAAQ,CAAC,OAAO,EAAE,MAAM;EACtBC,EAAE,CAAC,wBAAwB,EAAE,YAAY;IACvC,MAAMI,MAAM,GAAG,MAAMF,gBAAgB,CAAC,CAAC;IACvC,MAAM;MAAEG;IAAU,CAAC,GAAI,MAAMD,MAAM,CAACE,OAAO,CAAC;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,CAA0B;IAE3BH,YAAY,CACVC,MAAM,CAACG,OAAO,EAAAC,iBAAA,CACbP,aAAa;MAACQ,IAAI,EAAEJ;IAAS,IAC9B,oHACF,CAAC;EACH,CAAC,CAAC;EAEFL,EAAE,CAAC,oCAAoC,EAAE,YAAY;IACnD,MAAMI,MAAM,GAAG,MAAMF,gBAAgB,CAAC,CAAC;IACvC,MAAM;MAAEQ;IAAM,CAAC,GAAI,MAAMN,MAAM,CAACE,OAAO,CAAC;AAC5C;AACA;AACA;AACA;AACA;AACA,KAAK,CAA0B;IAE3BH,YAAY,CACVC,MAAM,CAACG,OAAO,EAAAC,iBAAA,CACbP,aAAa;MAACQ,IAAI,EAAEC;IAAK,IAC1B,gFACF,CAAC;EACH,CAAC,CAAC;EAEFV,EAAE,CAAC,yBAAyB,EAAE,YAAY;IACxC,MAAMI,MAAM,GAAG,MAAMF,gBAAgB,CAAC,CAAC;IACvC,MAAM;MAAES;IAAS,CAAC,GAAI,MAAMP,MAAM,CAACE,OAAO,CAAC;AAC/C;AACA;AACA;AACA;AACA;AACA,KAAK,CAA0B;IAE3BH,YAAY,CACVC,MAAM,CAACG,OAAO,EAAAC,iBAAA,CACbP,aAAa;MAACQ,IAAI,EAAEE;IAAQ,IAC7B,iEACF,CAAC;EACH,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { describe, it } from 'vitest';
|
|
2
|
+
import { TypeBoxSchema } from '../src/components/TypeBoxSchema.jsx';
|
|
3
|
+
import { createTestRunner, expectRender } from './utils.jsx';
|
|
4
|
+
describe('enums', () => {
|
|
5
|
+
it('works with string enum', async () => {
|
|
6
|
+
const runner = await createTestRunner();
|
|
7
|
+
const { Direction } = (await runner.compile(`
|
|
8
|
+
@test enum Direction {
|
|
9
|
+
Up,
|
|
10
|
+
Down,
|
|
11
|
+
Left,
|
|
12
|
+
Right,
|
|
13
|
+
}
|
|
14
|
+
`));
|
|
15
|
+
expectRender(runner.program, <TypeBoxSchema type={Direction}/>, 'Type.Union([\n Type.Literal("Up"),\n Type.Literal("Down"),\n Type.Literal("Left"),\n Type.Literal("Right")\n])');
|
|
16
|
+
});
|
|
17
|
+
it('works with string enum with values', async () => {
|
|
18
|
+
const runner = await createTestRunner();
|
|
19
|
+
const { Color } = (await runner.compile(`
|
|
20
|
+
@test enum Color {
|
|
21
|
+
Red: "red",
|
|
22
|
+
Green: "green",
|
|
23
|
+
Blue: "blue",
|
|
24
|
+
}
|
|
25
|
+
`));
|
|
26
|
+
expectRender(runner.program, <TypeBoxSchema type={Color}/>, 'Type.Union([Type.Literal("red"), Type.Literal("green"), Type.Literal("blue")])');
|
|
27
|
+
});
|
|
28
|
+
it('works with numeric enum', async () => {
|
|
29
|
+
const runner = await createTestRunner();
|
|
30
|
+
const { Priority } = (await runner.compile(`
|
|
31
|
+
@test enum Priority {
|
|
32
|
+
Low: 0,
|
|
33
|
+
Medium: 1,
|
|
34
|
+
High: 2,
|
|
35
|
+
}
|
|
36
|
+
`));
|
|
37
|
+
expectRender(runner.program, <TypeBoxSchema type={Priority}/>, 'Type.Union([Type.Literal(0), Type.Literal(1), Type.Literal(2)])');
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
//# sourceMappingURL=enums.test.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enums.test.jsx","sourceRoot":"","sources":["../../test/enums.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,OAAO,EAAE,GAAG,EAAE;IACrB,EAAE,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;QACtC,MAAM,MAAM,GAAG,MAAM,gBAAgB,EAAE,CAAC;QACxC,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC;;;;;;;KAO3C,CAAC,CAAyB,CAAC;QAE5B,YAAY,CACV,MAAM,CAAC,OAAO,EACd,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,EAAG,EAClC,oHAAoH,CACrH,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,MAAM,GAAG,MAAM,gBAAgB,EAAE,CAAC;QACxC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC;;;;;;KAMvC,CAAC,CAAyB,CAAC;QAE5B,YAAY,CACV,MAAM,CAAC,OAAO,EACd,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAG,EAC9B,gFAAgF,CACjF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;QACvC,MAAM,MAAM,GAAG,MAAM,gBAAgB,EAAE,CAAC;QACxC,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC;;;;;;KAM1C,CAAC,CAAyB,CAAC;QAE5B,YAAY,CACV,MAAM,CAAC,OAAO,EACd,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAG,EACjC,iEAAiE,CAClE,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models.test.d.ts","sourceRoot":"","sources":["../../test/models.test.tsx"],"names":[],"mappings":""}
|