@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.
Files changed (90) hide show
  1. package/dist/src/components/TypeBoxSchemaDeclaration.d.ts.map +1 -1
  2. package/dist/src/components/TypeBoxSchemaDeclaration.js +20 -4
  3. package/dist/src/components/TypeBoxSchemaDeclaration.js.map +1 -1
  4. package/dist/src/components/TypeBoxSchemaDeclaration.jsx +22 -6
  5. package/dist/src/components/TypeBoxSchemaDeclaration.jsx.map +1 -1
  6. package/dist/src/emitter.d.ts.map +1 -1
  7. package/dist/src/emitter.js +1 -2
  8. package/dist/src/emitter.js.map +1 -1
  9. package/dist/src/emitter.jsx +1 -2
  10. package/dist/src/emitter.jsx.map +1 -1
  11. package/dist/src/external-packages/typebox.d.ts +1 -0
  12. package/dist/src/external-packages/typebox.d.ts.map +1 -1
  13. package/dist/src/external-packages/typebox.js +1 -1
  14. package/dist/src/external-packages/typebox.js.map +1 -1
  15. package/dist/src/typeboxBaseSchema.d.ts.map +1 -1
  16. package/dist/src/typeboxBaseSchema.js +154 -4
  17. package/dist/src/typeboxBaseSchema.js.map +1 -1
  18. package/dist/src/typeboxBaseSchema.jsx +88 -3
  19. package/dist/src/typeboxBaseSchema.jsx.map +1 -1
  20. package/dist/test/arrays.test.d.ts +2 -0
  21. package/dist/test/arrays.test.d.ts.map +1 -0
  22. package/dist/test/arrays.test.js +65 -0
  23. package/dist/test/arrays.test.js.map +1 -0
  24. package/dist/test/arrays.test.jsx +42 -0
  25. package/dist/test/arrays.test.jsx.map +1 -0
  26. package/dist/test/dictionaries.test.d.ts +2 -0
  27. package/dist/test/dictionaries.test.d.ts.map +1 -0
  28. package/dist/test/dictionaries.test.js +50 -0
  29. package/dist/test/dictionaries.test.js.map +1 -0
  30. package/dist/test/dictionaries.test.jsx +33 -0
  31. package/dist/test/dictionaries.test.jsx.map +1 -0
  32. package/dist/test/emitter/enums.test.d.ts +2 -0
  33. package/dist/test/emitter/enums.test.d.ts.map +1 -0
  34. package/dist/test/emitter/enums.test.js +48 -0
  35. package/dist/test/emitter/enums.test.js.map +1 -0
  36. package/dist/test/emitter/enums.test.jsx +42 -0
  37. package/dist/test/emitter/enums.test.jsx.map +1 -0
  38. package/dist/test/emitter/models.test.d.ts +2 -0
  39. package/dist/test/emitter/models.test.d.ts.map +1 -0
  40. package/dist/test/emitter/models.test.js +36 -0
  41. package/dist/test/emitter/models.test.js.map +1 -0
  42. package/dist/test/emitter/models.test.jsx +32 -0
  43. package/dist/test/emitter/models.test.jsx.map +1 -0
  44. package/dist/test/emitter/records.test.d.ts +2 -0
  45. package/dist/test/emitter/records.test.d.ts.map +1 -0
  46. package/dist/test/emitter/records.test.js +18 -0
  47. package/dist/test/emitter/records.test.js.map +1 -0
  48. package/dist/test/emitter/records.test.jsx +16 -0
  49. package/dist/test/emitter/records.test.jsx.map +1 -0
  50. package/dist/test/emitter/unions.test.d.ts +2 -0
  51. package/dist/test/emitter/unions.test.d.ts.map +1 -0
  52. package/dist/test/emitter/unions.test.js +37 -0
  53. package/dist/test/emitter/unions.test.js.map +1 -0
  54. package/dist/test/emitter/unions.test.jsx +33 -0
  55. package/dist/test/emitter/unions.test.jsx.map +1 -0
  56. package/dist/test/enums.test.d.ts +2 -0
  57. package/dist/test/enums.test.d.ts.map +1 -0
  58. package/dist/test/enums.test.js +53 -0
  59. package/dist/test/enums.test.js.map +1 -0
  60. package/dist/test/enums.test.jsx +40 -0
  61. package/dist/test/enums.test.jsx.map +1 -0
  62. package/dist/test/models.test.d.ts +2 -0
  63. package/dist/test/models.test.d.ts.map +1 -0
  64. package/dist/test/models.test.js +109 -0
  65. package/dist/test/models.test.js.map +1 -0
  66. package/dist/test/models.test.jsx +71 -0
  67. package/dist/test/models.test.jsx.map +1 -0
  68. package/dist/test/nullable.test.d.ts +2 -0
  69. package/dist/test/nullable.test.d.ts.map +1 -0
  70. package/dist/test/nullable.test.js +46 -0
  71. package/dist/test/nullable.test.js.map +1 -0
  72. package/dist/test/nullable.test.jsx +33 -0
  73. package/dist/test/nullable.test.jsx.map +1 -0
  74. package/dist/test/optionality.test.d.ts +2 -0
  75. package/dist/test/optionality.test.d.ts.map +1 -0
  76. package/dist/test/optionality.test.js +61 -0
  77. package/dist/test/optionality.test.js.map +1 -0
  78. package/dist/test/optionality.test.jsx +44 -0
  79. package/dist/test/optionality.test.jsx.map +1 -0
  80. package/dist/test/unions.test.d.ts +2 -0
  81. package/dist/test/unions.test.d.ts.map +1 -0
  82. package/dist/test/unions.test.js +51 -0
  83. package/dist/test/unions.test.js.map +1 -0
  84. package/dist/test/unions.test.jsx +38 -0
  85. package/dist/test/unions.test.jsx.map +1 -0
  86. package/dist/test/utils.js +4 -1
  87. package/dist/test/utils.js.map +1 -1
  88. package/dist/test/utils.jsx +2 -2
  89. package/dist/test/utils.jsx.map +1 -1
  90. 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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=dictionaries.test.d.ts.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=enums.test.d.ts.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=models.test.d.ts.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=records.test.d.ts.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=unions.test.d.ts.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=enums.test.d.ts.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=models.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.test.d.ts","sourceRoot":"","sources":["../../test/models.test.tsx"],"names":[],"mappings":""}