@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,136 @@
1
+ import { refkey } from '@alloy-js/core';
2
+ import { MemberExpression, ObjectExpression, ObjectProperty } from '@alloy-js/typescript';
3
+ import { useTsp } from '@typespec/emitter-framework';
4
+ import { refkeySym, shouldReference, typeboxCall } from './utils.jsx';
5
+ export function typeboxBaseSchemaParts(type) {
6
+ const { $ } = useTsp();
7
+ switch (type.kind) {
8
+ case 'Intrinsic':
9
+ return intrinsicBaseType(type);
10
+ case 'String':
11
+ case 'Number':
12
+ case 'Boolean':
13
+ return literalBaseType($, type);
14
+ case 'Scalar':
15
+ return scalarBaseType($, type);
16
+ case 'ModelProperty':
17
+ return typeboxBaseSchemaParts(type.type);
18
+ case 'EnumMember':
19
+ return type.value
20
+ ? literalBaseType($, $.literal.create(type.value))
21
+ : literalBaseType($, $.literal.create(type.name));
22
+ default:
23
+ return typeboxCall('Any');
24
+ }
25
+ }
26
+ function literalBaseType($, type) {
27
+ switch (type.kind) {
28
+ case 'String':
29
+ return typeboxCall('Literal', `"${type.value}"`);
30
+ case 'Number':
31
+ case 'Boolean':
32
+ return typeboxCall('Literal', `${type.value}`);
33
+ }
34
+ }
35
+ function formatOpts(format) {
36
+ return (<ObjectExpression>
37
+ <ObjectProperty name="format">{`"${format}"`}</ObjectProperty>
38
+ </ObjectExpression>);
39
+ }
40
+ function scalarBaseType($, type) {
41
+ if (type.baseScalar && shouldReference($.program, type.baseScalar)) {
42
+ return (<MemberExpression>
43
+ <MemberExpression.Part refkey={refkey(type.baseScalar, refkeySym)}/>
44
+ </MemberExpression>);
45
+ }
46
+ if ($.scalar.extendsBoolean(type)) {
47
+ return typeboxCall('Boolean');
48
+ }
49
+ else if ($.scalar.extendsNumeric(type)) {
50
+ if ($.scalar.extendsInteger(type)) {
51
+ if ($.scalar.extendsInt32(type) ||
52
+ $.scalar.extendsUint32(type) ||
53
+ $.scalar.extendsSafeint(type)) {
54
+ return typeboxCall('Integer');
55
+ }
56
+ else {
57
+ return typeboxCall('BigInt');
58
+ }
59
+ }
60
+ else {
61
+ return typeboxCall('Number');
62
+ }
63
+ }
64
+ else if ($.scalar.extendsString(type)) {
65
+ if ($.scalar.extendsUrl(type)) {
66
+ return typeboxCall('String', formatOpts('uri'));
67
+ }
68
+ return typeboxCall('String');
69
+ }
70
+ else if ($.scalar.extendsBytes(type)) {
71
+ return typeboxCall('Any');
72
+ }
73
+ else if ($.scalar.extendsPlainDate(type)) {
74
+ return typeboxCall('Date');
75
+ }
76
+ else if ($.scalar.extendsPlainTime(type)) {
77
+ return typeboxCall('String', formatOpts('time'));
78
+ }
79
+ else if ($.scalar.extendsUtcDateTime(type)) {
80
+ const encoding = $.scalar.getEncoding(type);
81
+ if (encoding === undefined) {
82
+ return typeboxCall('Date');
83
+ }
84
+ else if (encoding.encoding === 'unixTimestamp') {
85
+ return scalarBaseType($, encoding.type);
86
+ }
87
+ else if (encoding.encoding === 'rfc3339') {
88
+ return typeboxCall('String', formatOpts('date-time'));
89
+ }
90
+ else {
91
+ return scalarBaseType($, encoding.type);
92
+ }
93
+ }
94
+ else if ($.scalar.extendsOffsetDateTime(type)) {
95
+ const encoding = $.scalar.getEncoding(type);
96
+ if (encoding === undefined) {
97
+ return typeboxCall('Date');
98
+ }
99
+ else if (encoding.encoding === 'rfc3339') {
100
+ return typeboxCall('String', formatOpts('date-time'));
101
+ }
102
+ else {
103
+ return scalarBaseType($, encoding.type);
104
+ }
105
+ }
106
+ else if ($.scalar.extendsDuration(type)) {
107
+ const encoding = $.scalar.getEncoding(type);
108
+ if (encoding === undefined || encoding.encoding === 'ISO8601') {
109
+ return typeboxCall('String', formatOpts('duration'));
110
+ }
111
+ else {
112
+ return scalarBaseType($, encoding.type);
113
+ }
114
+ }
115
+ else {
116
+ return typeboxCall('Any');
117
+ }
118
+ }
119
+ function intrinsicBaseType(type) {
120
+ if (type.kind === 'Intrinsic') {
121
+ switch (type.name) {
122
+ case 'null':
123
+ return typeboxCall('Null');
124
+ case 'never':
125
+ return typeboxCall('Never');
126
+ case 'unknown':
127
+ return typeboxCall('Unknown');
128
+ case 'void':
129
+ return typeboxCall('Void');
130
+ default:
131
+ return typeboxCall('Any');
132
+ }
133
+ }
134
+ return typeboxCall('Any');
135
+ }
136
+ //# sourceMappingURL=typeboxBaseSchema.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typeboxBaseSchema.jsx","sourceRoot":"","sources":["../../src/typeboxBaseSchema.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { Refkey } from '@alloy-js/core';
2
+ import { Children } from '@alloy-js/core/jsx-runtime';
3
+ import { Program, Type } from '@typespec/compiler';
4
+ export declare const refkeySym: unique symbol;
5
+ export declare function isDeclaration(program: Program, type: Type): boolean;
6
+ export declare function isRecord(program: Program, type: Type): boolean;
7
+ export declare function shouldReference(program: Program, type: Type): boolean;
8
+ export declare function isBuiltIn(program: Program, type: Type): boolean;
9
+ interface TypeCollector {
10
+ collectType: (type: Type) => void;
11
+ get types(): Type[];
12
+ }
13
+ export declare function newTopologicalTypeCollector(program: Program): TypeCollector;
14
+ export declare function typeboxCall(method: string, ...args: Children[]): Children;
15
+ export declare function idPart(id: string): Children;
16
+ export declare function refkeyPart(refkey: Refkey): Children;
17
+ export {};
18
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAEtD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAKnD,eAAO,MAAM,SAAS,eAAwC,CAAC;AAE/D,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAyBnE;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAE9D;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,WAE3D;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,WAoBrD;AAED,UAAU,aAAa;IACrB,WAAW,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IAClC,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;CACrB;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,CAkD3E;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,YAQ9D;AAED,wBAAgB,MAAM,CAAC,EAAE,EAAE,MAAM,YAEhC;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,YAExC"}
@@ -0,0 +1,118 @@
1
+ import { createComponent as _$createComponent } from "@alloy-js/core/jsx-runtime";
2
+ import { FunctionCallExpression, MemberExpression } from '@alloy-js/typescript';
3
+ import { $ } from '@typespec/compiler/typekit';
4
+ import { SCCSet } from '@typespec/emitter-framework';
5
+ import { typebox } from './external-packages/typebox.js';
6
+ export const refkeySym = Symbol.for('typespec-typebox.refkey');
7
+ export function isDeclaration(program, type) {
8
+ switch (type.kind) {
9
+ case 'Namespace':
10
+ case 'Interface':
11
+ case 'Operation':
12
+ case 'EnumMember':
13
+ return false;
14
+ case 'UnionVariant':
15
+ return false;
16
+ case 'Model':
17
+ if (($(program).array.is(type) || $(program).record.is(type)) && isBuiltIn(program, type)) {
18
+ return false;
19
+ }
20
+ return Boolean(type.name);
21
+ case 'Union':
22
+ return Boolean(type.name);
23
+ case 'Enum':
24
+ return true;
25
+ case 'Scalar':
26
+ return true;
27
+ default:
28
+ return false;
29
+ }
30
+ }
31
+ export function isRecord(program, type) {
32
+ return type.kind === 'Model' && !!type.indexer && type.indexer.key === $(program).builtin.string;
33
+ }
34
+ export function shouldReference(program, type) {
35
+ return isDeclaration(program, type) && !isBuiltIn(program, type);
36
+ }
37
+ export function isBuiltIn(program, type) {
38
+ if (type.kind === 'ModelProperty' && type.model) {
39
+ type = type.model;
40
+ }
41
+ if (!('namespace' in type) || type.namespace === undefined) {
42
+ return false;
43
+ }
44
+ const globalNs = program.getGlobalNamespaceType();
45
+ let tln = type.namespace;
46
+ if (tln === globalNs) {
47
+ return false;
48
+ }
49
+ while (tln.namespace !== globalNs) {
50
+ tln = tln.namespace;
51
+ }
52
+ return tln === globalNs.namespaces.get('TypeSpec');
53
+ }
54
+ export function newTopologicalTypeCollector(program) {
55
+ const types = new SCCSet(referencedTypes);
56
+ function referencedTypes(type) {
57
+ switch (type.kind) {
58
+ case 'Model':
59
+ return [...(type.baseModel ? [type.baseModel] : []), ...(type.indexer ? [type.indexer.key, type.indexer.value] : []), ...[...type.properties.values()].map(p => p.type)];
60
+ case 'Union':
61
+ return [...type.variants.values()].map(v => v.kind === 'UnionVariant' ? v.type : v);
62
+ case 'UnionVariant':
63
+ return [type.type];
64
+ case 'Interface':
65
+ return [...type.operations.values()];
66
+ case 'Operation':
67
+ return [type.parameters, type.returnType];
68
+ case 'Enum':
69
+ return [];
70
+ case 'Scalar':
71
+ return type.baseScalar ? [type.baseScalar] : [];
72
+ case 'Tuple':
73
+ return type.values;
74
+ case 'Namespace':
75
+ return [...type.operations.values(), ...type.scalars.values(), ...type.models.values(), ...type.enums.values(), ...type.interfaces.values(), ...type.namespaces.values()];
76
+ default:
77
+ return [];
78
+ }
79
+ }
80
+ return {
81
+ collectType(type) {
82
+ if (shouldReference(program, type)) {
83
+ types.add(type);
84
+ }
85
+ },
86
+ get types() {
87
+ return types.items;
88
+ }
89
+ };
90
+ }
91
+ export function typeboxCall(method, ...args) {
92
+ const target = _$createComponent(MemberExpression, {
93
+ get children() {
94
+ return [_$createComponent(MemberExpression.Part, {
95
+ get refkey() {
96
+ return typebox.Type;
97
+ }
98
+ }), _$createComponent(MemberExpression.Part, {
99
+ id: method
100
+ })];
101
+ }
102
+ });
103
+ return _$createComponent(FunctionCallExpression, {
104
+ target: target,
105
+ args: args
106
+ });
107
+ }
108
+ export function idPart(id) {
109
+ return _$createComponent(MemberExpression.Part, {
110
+ id: id
111
+ });
112
+ }
113
+ export function refkeyPart(refkey) {
114
+ return _$createComponent(MemberExpression.Part, {
115
+ refkey: refkey
116
+ });
117
+ }
118
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["FunctionCallExpression","MemberExpression","$","SCCSet","typebox","refkeySym","Symbol","for","isDeclaration","program","type","kind","array","is","record","isBuiltIn","Boolean","name","isRecord","indexer","key","builtin","string","shouldReference","model","namespace","undefined","globalNs","getGlobalNamespaceType","tln","namespaces","get","newTopologicalTypeCollector","types","referencedTypes","baseModel","value","properties","values","map","p","variants","v","operations","parameters","returnType","baseScalar","scalars","models","enums","interfaces","collectType","add","items","typeboxCall","method","args","target","_$createComponent","children","Part","refkey","Type","id","idPart","refkeyPart"],"sources":["../../src/utils.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,114 @@
1
+ import { FunctionCallExpression, MemberExpression } from '@alloy-js/typescript';
2
+ import { $ } from '@typespec/compiler/typekit';
3
+ import { SCCSet } from '@typespec/emitter-framework';
4
+ import { typebox } from './external-packages/typebox.js';
5
+ export const refkeySym = Symbol.for('typespec-typebox.refkey');
6
+ export function isDeclaration(program, type) {
7
+ switch (type.kind) {
8
+ case 'Namespace':
9
+ case 'Interface':
10
+ case 'Operation':
11
+ case 'EnumMember':
12
+ return false;
13
+ case 'UnionVariant':
14
+ return false;
15
+ case 'Model':
16
+ if (($(program).array.is(type) || $(program).record.is(type)) && isBuiltIn(program, type)) {
17
+ return false;
18
+ }
19
+ return Boolean(type.name);
20
+ case 'Union':
21
+ return Boolean(type.name);
22
+ case 'Enum':
23
+ return true;
24
+ case 'Scalar':
25
+ return true;
26
+ default:
27
+ return false;
28
+ }
29
+ }
30
+ export function isRecord(program, type) {
31
+ return type.kind === 'Model' && !!type.indexer && type.indexer.key === $(program).builtin.string;
32
+ }
33
+ export function shouldReference(program, type) {
34
+ return isDeclaration(program, type) && !isBuiltIn(program, type);
35
+ }
36
+ export function isBuiltIn(program, type) {
37
+ if (type.kind === 'ModelProperty' && type.model) {
38
+ type = type.model;
39
+ }
40
+ if (!('namespace' in type) || type.namespace === undefined) {
41
+ return false;
42
+ }
43
+ const globalNs = program.getGlobalNamespaceType();
44
+ let tln = type.namespace;
45
+ if (tln === globalNs) {
46
+ return false;
47
+ }
48
+ while (tln.namespace !== globalNs) {
49
+ tln = tln.namespace;
50
+ }
51
+ return tln === globalNs.namespaces.get('TypeSpec');
52
+ }
53
+ export function newTopologicalTypeCollector(program) {
54
+ const types = new SCCSet(referencedTypes);
55
+ function referencedTypes(type) {
56
+ switch (type.kind) {
57
+ case 'Model':
58
+ return [
59
+ ...(type.baseModel ? [type.baseModel] : []),
60
+ ...(type.indexer ? [type.indexer.key, type.indexer.value] : []),
61
+ ...[...type.properties.values()].map((p) => p.type),
62
+ ];
63
+ case 'Union':
64
+ return [...type.variants.values()].map((v) => (v.kind === 'UnionVariant' ? v.type : v));
65
+ case 'UnionVariant':
66
+ return [type.type];
67
+ case 'Interface':
68
+ return [...type.operations.values()];
69
+ case 'Operation':
70
+ return [type.parameters, type.returnType];
71
+ case 'Enum':
72
+ return [];
73
+ case 'Scalar':
74
+ return type.baseScalar ? [type.baseScalar] : [];
75
+ case 'Tuple':
76
+ return type.values;
77
+ case 'Namespace':
78
+ return [
79
+ ...type.operations.values(),
80
+ ...type.scalars.values(),
81
+ ...type.models.values(),
82
+ ...type.enums.values(),
83
+ ...type.interfaces.values(),
84
+ ...type.namespaces.values(),
85
+ ];
86
+ default:
87
+ return [];
88
+ }
89
+ }
90
+ return {
91
+ collectType(type) {
92
+ if (shouldReference(program, type)) {
93
+ types.add(type);
94
+ }
95
+ },
96
+ get types() {
97
+ return types.items;
98
+ },
99
+ };
100
+ }
101
+ export function typeboxCall(method, ...args) {
102
+ const target = (<MemberExpression>
103
+ <MemberExpression.Part refkey={typebox.Type}/>
104
+ <MemberExpression.Part id={method}/>
105
+ </MemberExpression>);
106
+ return <FunctionCallExpression target={target} args={args}/>;
107
+ }
108
+ export function idPart(id) {
109
+ return <MemberExpression.Part id={id}/>;
110
+ }
111
+ export function refkeyPart(refkey) {
112
+ return <MemberExpression.Part refkey={refkey}/>;
113
+ }
114
+ //# sourceMappingURL=utils.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.jsx","sourceRoot":"","sources":["../../src/utils.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=default.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default.test.d.ts","sourceRoot":"","sources":["../../../test/emitter/default.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ import { expect, it } from 'vitest';
2
+ import { createEmitterTestRunner } from "../utils.js";
3
+ it('emits scalar declarations', async () => {
4
+ const runner = await createEmitterTestRunner();
5
+ await runner.compile(`
6
+ scalar MyScalar extends string;
7
+ `);
8
+ const {
9
+ text
10
+ } = await runner.program.host.readFile('@typespec-dev/emitter-typebox/models.ts');
11
+ expect(text.trim()).toMatchSnapshot();
12
+ });
13
+ //# sourceMappingURL=default.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["expect","it","createEmitterTestRunner","runner","compile","text","program","host","readFile","trim","toMatchSnapshot"],"sources":["../../../test/emitter/default.test.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,MAAM,EAAEC,EAAE,QAAQ,QAAQ;AACnC,SAASC,uBAAuB;AAEhCD,EAAE,CAAC,2BAA2B,EAAE,YAAY;EAC1C,MAAME,MAAM,GAAG,MAAMD,uBAAuB,CAAC,CAAC;EAC9C,MAAMC,MAAM,CAACC,OAAO,CAAC;AACvB;AACA,GAAG,CAAC;EAEF,MAAM;IAAEC;EAAK,CAAC,GAAG,MAAMF,MAAM,CAACG,OAAO,CAACC,IAAI,CAACC,QAAQ,CAAC,yCAAyC,CAAC;EAE9FR,MAAM,CAACK,IAAI,CAACI,IAAI,CAAC,CAAC,CAAC,CAACC,eAAe,CAAC,CAAC;AACvC,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,11 @@
1
+ import { expect, it } from 'vitest';
2
+ import { createEmitterTestRunner } from '../utils.jsx';
3
+ it('emits scalar declarations', async () => {
4
+ const runner = await createEmitterTestRunner();
5
+ await runner.compile(`
6
+ scalar MyScalar extends string;
7
+ `);
8
+ const { text } = await runner.program.host.readFile('@typespec-dev/emitter-typebox/models.ts');
9
+ expect(text.trim()).toMatchSnapshot();
10
+ });
11
+ //# sourceMappingURL=default.test.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default.test.jsx","sourceRoot":"","sources":["../../../test/emitter/default.test.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAEvD,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;IACzC,MAAM,MAAM,GAAG,MAAM,uBAAuB,EAAE,CAAC;IAC/C,MAAM,MAAM,CAAC,OAAO,CAAC;;GAEpB,CAAC,CAAC;IAEH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,yCAAyC,CAAC,CAAC;IAE/F,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC;AACxC,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=intrinsics.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intrinsics.test.d.ts","sourceRoot":"","sources":["../../test/intrinsics.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,48 @@
1
+ import { createComponent as _$createComponent } from "@alloy-js/core/jsx-runtime";
2
+ import { it } from 'vitest';
3
+ import { TypeBoxSchema } from "../src/components/TypeBoxSchema.js";
4
+ import { createTestRunner, expectRender } from "./utils.js";
5
+ it('works with intrinsics', async () => {
6
+ const runner = await createTestRunner();
7
+ const {
8
+ nullProp,
9
+ neverProp,
10
+ unknownProp,
11
+ voidProp
12
+ } = await runner.compile(`
13
+ model Test {
14
+ @test
15
+ nullProp: null,
16
+
17
+ @test
18
+ neverProp: never,
19
+
20
+ @test
21
+ unknownProp: unknown,
22
+
23
+ @test
24
+ voidProp: void,
25
+ }
26
+ `);
27
+ expectRender(runner.program, _$createComponent(TypeBoxSchema, {
28
+ get type() {
29
+ return nullProp.type;
30
+ }
31
+ }), 'Type.Null()');
32
+ expectRender(runner.program, _$createComponent(TypeBoxSchema, {
33
+ get type() {
34
+ return neverProp.type;
35
+ }
36
+ }), 'Type.Never()');
37
+ expectRender(runner.program, _$createComponent(TypeBoxSchema, {
38
+ get type() {
39
+ return unknownProp.type;
40
+ }
41
+ }), 'Type.Unknown()');
42
+ expectRender(runner.program, _$createComponent(TypeBoxSchema, {
43
+ get type() {
44
+ return voidProp.type;
45
+ }
46
+ }), 'Type.Void()');
47
+ });
48
+ //# sourceMappingURL=intrinsics.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["it","TypeBoxSchema","createTestRunner","expectRender","runner","nullProp","neverProp","unknownProp","voidProp","compile","program","_$createComponent","type"],"sources":["../../test/intrinsics.test.tsx"],"sourcesContent":[null],"mappings":";AACA,SAASA,EAAE,QAAQ,QAAQ;AAC3B,SAASC,aAAa;AACtB,SAASC,gBAAgB,EAAEC,YAAY;AAEvCH,EAAE,CAAC,uBAAuB,EAAE,YAAY;EACtC,MAAMI,MAAM,GAAG,MAAMF,gBAAgB,CAAC,CAAC;EACvC,MAAM;IAAEG,QAAQ;IAAEC,SAAS;IAAEC,WAAW;IAAEC;EAAS,CAAC,GAAI,MAAMJ,MAAM,CAACK,OAAO,CAAC;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,CAAmC;EAEpCN,YAAY,CAACC,MAAM,CAACM,OAAO,EAAAC,iBAAA,CAAGV,aAAa;IAAA,IAACW,IAAIA,CAAA;MAAA,OAAEP,QAAQ,CAACO,IAAI;IAAA;EAAA,IAAM,aAAa,CAAC;EACnFT,YAAY,CAACC,MAAM,CAACM,OAAO,EAAAC,iBAAA,CAAGV,aAAa;IAAA,IAACW,IAAIA,CAAA;MAAA,OAAEN,SAAS,CAACM,IAAI;IAAA;EAAA,IAAM,cAAc,CAAC;EACrFT,YAAY,CAACC,MAAM,CAACM,OAAO,EAAAC,iBAAA,CAAGV,aAAa;IAAA,IAACW,IAAIA,CAAA;MAAA,OAAEL,WAAW,CAACK,IAAI;IAAA;EAAA,IAAM,gBAAgB,CAAC;EACzFT,YAAY,CAACC,MAAM,CAACM,OAAO,EAAAC,iBAAA,CAAGV,aAAa;IAAA,IAACW,IAAIA,CAAA;MAAA,OAAEJ,QAAQ,CAACI,IAAI;IAAA;EAAA,IAAM,aAAa,CAAC;AACrF,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,26 @@
1
+ import { it } from 'vitest';
2
+ import { TypeBoxSchema } from '../src/components/TypeBoxSchema.jsx';
3
+ import { createTestRunner, expectRender } from './utils.jsx';
4
+ it('works with intrinsics', async () => {
5
+ const runner = await createTestRunner();
6
+ const { nullProp, neverProp, unknownProp, voidProp } = (await runner.compile(`
7
+ model Test {
8
+ @test
9
+ nullProp: null,
10
+
11
+ @test
12
+ neverProp: never,
13
+
14
+ @test
15
+ unknownProp: unknown,
16
+
17
+ @test
18
+ voidProp: void,
19
+ }
20
+ `));
21
+ expectRender(runner.program, <TypeBoxSchema type={nullProp.type}/>, 'Type.Null()');
22
+ expectRender(runner.program, <TypeBoxSchema type={neverProp.type}/>, 'Type.Never()');
23
+ expectRender(runner.program, <TypeBoxSchema type={unknownProp.type}/>, 'Type.Unknown()');
24
+ expectRender(runner.program, <TypeBoxSchema type={voidProp.type}/>, 'Type.Void()');
25
+ });
26
+ //# sourceMappingURL=intrinsics.test.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intrinsics.test.jsx","sourceRoot":"","sources":["../../test/intrinsics.test.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE7D,EAAE,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;IACrC,MAAM,MAAM,GAAG,MAAM,gBAAgB,EAAE,CAAC;IACxC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC;;;;;;;;;;;;;;GAc5E,CAAC,CAAkC,CAAC;IAErC,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAG,EAAE,aAAa,CAAC,CAAC;IACpF,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,EAAG,EAAE,cAAc,CAAC,CAAC;IACtF,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,EAAG,EAAE,gBAAgB,CAAC,CAAC;IAC1F,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAG,EAAE,aAAa,CAAC,CAAC;AACtF,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=literals.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"literals.test.d.ts","sourceRoot":"","sources":["../../test/literals.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,39 @@
1
+ import { createComponent as _$createComponent } from "@alloy-js/core/jsx-runtime";
2
+ import { it } from 'vitest';
3
+ import { TypeBoxSchema } from "../src/components/TypeBoxSchema.js";
4
+ import { createTestRunner, expectRender } from "./utils.js";
5
+ it('works with literals', async () => {
6
+ const runner = await createTestRunner();
7
+ const {
8
+ stringProp,
9
+ numberProp,
10
+ booleanProp
11
+ } = await runner.compile(`
12
+ model Test {
13
+ @test
14
+ stringProp: "hello",
15
+
16
+ @test
17
+ numberProp: 123,
18
+
19
+ @test
20
+ booleanProp: true,
21
+ }
22
+ `);
23
+ expectRender(runner.program, _$createComponent(TypeBoxSchema, {
24
+ get type() {
25
+ return stringProp.type;
26
+ }
27
+ }), 'Type.Literal("hello")');
28
+ expectRender(runner.program, _$createComponent(TypeBoxSchema, {
29
+ get type() {
30
+ return numberProp.type;
31
+ }
32
+ }), 'Type.Literal(123)');
33
+ expectRender(runner.program, _$createComponent(TypeBoxSchema, {
34
+ get type() {
35
+ return booleanProp.type;
36
+ }
37
+ }), 'Type.Literal(true)');
38
+ });
39
+ //# sourceMappingURL=literals.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["it","TypeBoxSchema","createTestRunner","expectRender","runner","stringProp","numberProp","booleanProp","compile","program","_$createComponent","type"],"sources":["../../test/literals.test.tsx"],"sourcesContent":[null],"mappings":";AACA,SAASA,EAAE,QAAQ,QAAQ;AAC3B,SAASC,aAAa;AACtB,SAASC,gBAAgB,EAAEC,YAAY;AAEvCH,EAAE,CAAC,qBAAqB,EAAE,YAAY;EACpC,MAAMI,MAAM,GAAG,MAAMF,gBAAgB,CAAC,CAAC;EACvC,MAAM;IAAEG,UAAU;IAAEC,UAAU;IAAEC;EAAY,CAAC,GAAI,MAAMH,MAAM,CAACI,OAAO,CAAC;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,CAAmC;EAEpCL,YAAY,CAACC,MAAM,CAACK,OAAO,EAAAC,iBAAA,CAAGT,aAAa;IAAA,IAACU,IAAIA,CAAA;MAAA,OAAEN,UAAU,CAACM,IAAI;IAAA;EAAA,IAAM,uBAAuB,CAAC;EAC/FR,YAAY,CAACC,MAAM,CAACK,OAAO,EAAAC,iBAAA,CAAGT,aAAa;IAAA,IAACU,IAAIA,CAAA;MAAA,OAAEL,UAAU,CAACK,IAAI;IAAA;EAAA,IAAM,mBAAmB,CAAC;EAC3FR,YAAY,CAACC,MAAM,CAACK,OAAO,EAAAC,iBAAA,CAAGT,aAAa;IAAA,IAACU,IAAIA,CAAA;MAAA,OAAEJ,WAAW,CAACI,IAAI;IAAA;EAAA,IAAM,oBAAoB,CAAC;AAC/F,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,22 @@
1
+ import { it } from 'vitest';
2
+ import { TypeBoxSchema } from '../src/components/TypeBoxSchema.jsx';
3
+ import { createTestRunner, expectRender } from './utils.jsx';
4
+ it('works with literals', async () => {
5
+ const runner = await createTestRunner();
6
+ const { stringProp, numberProp, booleanProp } = (await runner.compile(`
7
+ model Test {
8
+ @test
9
+ stringProp: "hello",
10
+
11
+ @test
12
+ numberProp: 123,
13
+
14
+ @test
15
+ booleanProp: true,
16
+ }
17
+ `));
18
+ expectRender(runner.program, <TypeBoxSchema type={stringProp.type}/>, 'Type.Literal("hello")');
19
+ expectRender(runner.program, <TypeBoxSchema type={numberProp.type}/>, 'Type.Literal(123)');
20
+ expectRender(runner.program, <TypeBoxSchema type={booleanProp.type}/>, 'Type.Literal(true)');
21
+ });
22
+ //# sourceMappingURL=literals.test.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"literals.test.jsx","sourceRoot":"","sources":["../../test/literals.test.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE7D,EAAE,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;IACnC,MAAM,MAAM,GAAG,MAAM,gBAAgB,EAAE,CAAC;IACxC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC;;;;;;;;;;;GAWrE,CAAC,CAAkC,CAAC;IAErC,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAG,EAAE,uBAAuB,CAAC,CAAC;IAChG,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAG,EAAE,mBAAmB,CAAC,CAAC;IAC5F,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,EAAG,EAAE,oBAAoB,CAAC,CAAC;AAChG,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=scalars.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scalars.test.d.ts","sourceRoot":"","sources":["../../test/scalars.test.tsx"],"names":[],"mappings":""}