@typespec-dev/emitter-typebox 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/dist/src/components/TypeBoxSchema.d.ts +8 -0
- package/dist/src/components/TypeBoxSchema.d.ts.map +1 -0
- package/dist/src/components/TypeBoxSchema.js +28 -0
- package/dist/src/components/TypeBoxSchema.js.map +1 -0
- package/dist/src/components/TypeBoxSchema.jsx +19 -0
- package/dist/src/components/TypeBoxSchema.jsx.map +1 -0
- package/dist/src/components/TypeBoxSchemaDeclaration.d.ts +9 -0
- package/dist/src/components/TypeBoxSchemaDeclaration.d.ts.map +1 -0
- package/dist/src/components/TypeBoxSchemaDeclaration.js +21 -0
- package/dist/src/components/TypeBoxSchemaDeclaration.js.map +1 -0
- package/dist/src/components/TypeBoxSchemaDeclaration.jsx +20 -0
- package/dist/src/components/TypeBoxSchemaDeclaration.jsx.map +1 -0
- package/dist/src/components/index.d.ts +3 -0
- package/dist/src/components/index.d.ts.map +1 -0
- package/dist/src/components/index.js +3 -0
- package/dist/src/components/index.js.map +1 -0
- package/dist/src/emitter.d.ts +3 -0
- package/dist/src/emitter.d.ts.map +1 -0
- package/dist/src/emitter.js +57 -0
- package/dist/src/emitter.js.map +1 -0
- package/dist/src/emitter.jsx +40 -0
- package/dist/src/emitter.jsx.map +1 -0
- package/dist/src/external-packages/typebox.d.ts +4 -0
- package/dist/src/external-packages/typebox.d.ts.map +1 -0
- package/dist/src/external-packages/typebox.js +11 -0
- package/dist/src/external-packages/typebox.js.map +1 -0
- package/dist/src/index.d.ts +6 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +6 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/lib.d.ts +13 -0
- package/dist/src/lib.d.ts.map +1 -0
- package/dist/src/lib.js +10 -0
- package/dist/src/lib.js.map +1 -0
- package/dist/src/testing/index.d.ts +3 -0
- package/dist/src/testing/index.d.ts.map +1 -0
- package/dist/src/testing/index.js +6 -0
- package/dist/src/testing/index.js.map +1 -0
- package/dist/src/typeboxBaseSchema.d.ts +4 -0
- package/dist/src/typeboxBaseSchema.d.ts.map +1 -0
- package/dist/src/typeboxBaseSchema.js +129 -0
- package/dist/src/typeboxBaseSchema.js.map +1 -0
- package/dist/src/typeboxBaseSchema.jsx +136 -0
- package/dist/src/typeboxBaseSchema.jsx.map +1 -0
- package/dist/src/utils.d.ts +18 -0
- package/dist/src/utils.d.ts.map +1 -0
- package/dist/src/utils.js +118 -0
- package/dist/src/utils.js.map +1 -0
- package/dist/src/utils.jsx +114 -0
- package/dist/src/utils.jsx.map +1 -0
- package/dist/test/emitter/default.test.d.ts +2 -0
- package/dist/test/emitter/default.test.d.ts.map +1 -0
- package/dist/test/emitter/default.test.js +13 -0
- package/dist/test/emitter/default.test.js.map +1 -0
- package/dist/test/emitter/default.test.jsx +11 -0
- package/dist/test/emitter/default.test.jsx.map +1 -0
- package/dist/test/intrinsics.test.d.ts +2 -0
- package/dist/test/intrinsics.test.d.ts.map +1 -0
- package/dist/test/intrinsics.test.js +48 -0
- package/dist/test/intrinsics.test.js.map +1 -0
- package/dist/test/intrinsics.test.jsx +26 -0
- package/dist/test/intrinsics.test.jsx.map +1 -0
- package/dist/test/literals.test.d.ts +2 -0
- package/dist/test/literals.test.d.ts.map +1 -0
- package/dist/test/literals.test.js +39 -0
- package/dist/test/literals.test.js.map +1 -0
- package/dist/test/literals.test.jsx +22 -0
- package/dist/test/literals.test.jsx.map +1 -0
- package/dist/test/scalars.test.d.ts +2 -0
- package/dist/test/scalars.test.d.ts.map +1 -0
- package/dist/test/scalars.test.js +326 -0
- package/dist/test/scalars.test.js.map +1 -0
- package/dist/test/scalars.test.jsx +171 -0
- package/dist/test/scalars.test.jsx.map +1 -0
- package/dist/test/utils.d.ts +8 -0
- package/dist/test/utils.d.ts.map +1 -0
- package/dist/test/utils.js +63 -0
- package/dist/test/utils.js.map +1 -0
- package/dist/test/utils.jsx +45 -0
- package/dist/test/utils.jsx.map +1 -0
- package/package.json +67 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Jordan Hood
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Children } from '@alloy-js/core';
|
|
2
|
+
import { Type } from '@typespec/compiler';
|
|
3
|
+
export interface TypeBoxSchemaProps {
|
|
4
|
+
readonly type: Type;
|
|
5
|
+
readonly nested?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare function TypeBoxSchema(props: TypeBoxSchemaProps): Children;
|
|
8
|
+
//# sourceMappingURL=TypeBoxSchema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TypeBoxSchema.d.ts","sourceRoot":"","sources":["../../../src/components/TypeBoxSchema.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAU,MAAM,gBAAgB,CAAC;AAElD,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAK1C,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,QAAQ,CAkBjE"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { createComponent as _$createComponent } from "@alloy-js/core/jsx-runtime";
|
|
2
|
+
import { refkey } from '@alloy-js/core';
|
|
3
|
+
import { MemberExpression } from '@alloy-js/typescript';
|
|
4
|
+
import { useTsp } from '@typespec/emitter-framework';
|
|
5
|
+
import { typeboxBaseSchemaParts } from "../typeboxBaseSchema.js";
|
|
6
|
+
import { refkeySym, shouldReference } from "../utils.js";
|
|
7
|
+
export function TypeBoxSchema(props) {
|
|
8
|
+
const {
|
|
9
|
+
$
|
|
10
|
+
} = useTsp();
|
|
11
|
+
if (!props.nested) {
|
|
12
|
+
return typeboxBaseSchemaParts(props.type);
|
|
13
|
+
}
|
|
14
|
+
const type = $.modelProperty.is(props.type) ? props.type.type : props.type;
|
|
15
|
+
if (shouldReference($.program, type)) {
|
|
16
|
+
return _$createComponent(MemberExpression, {
|
|
17
|
+
get children() {
|
|
18
|
+
return _$createComponent(MemberExpression.Part, {
|
|
19
|
+
get refkey() {
|
|
20
|
+
return refkey(type, refkeySym);
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
return typeboxBaseSchemaParts(type);
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=TypeBoxSchema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["refkey","MemberExpression","useTsp","typeboxBaseSchemaParts","refkeySym","shouldReference","TypeBoxSchema","props","$","nested","type","modelProperty","is","program","_$createComponent","children","Part"],"sources":["../../../src/components/TypeBoxSchema.tsx"],"sourcesContent":[null],"mappings":";AAAA,SAAmBA,MAAM,QAAQ,gBAAgB;AACjD,SAASC,gBAAgB,QAAQ,sBAAsB;AAEvD,SAASC,MAAM,QAAQ,6BAA6B;AACpD,SAASC,sBAAsB;AAC/B,SAASC,SAAS,EAAEC,eAAe;AAOnC,OAAO,SAASC,aAAaA,CAACC,KAAyB,EAAY;EACjE,MAAM;IAAEC;EAAE,CAAC,GAAGN,MAAM,CAAC,CAAC;EAEtB,IAAI,CAACK,KAAK,CAACE,MAAM,EAAE;IACjB,OAAON,sBAAsB,CAACI,KAAK,CAACG,IAAI,CAAC;EAC3C;EAEA,MAAMA,IAAI,GAAGF,CAAC,CAACG,aAAa,CAACC,EAAE,CAACL,KAAK,CAACG,IAAI,CAAC,GAAGH,KAAK,CAACG,IAAI,CAACA,IAAI,GAAGH,KAAK,CAACG,IAAI;EAE1E,IAAIL,eAAe,CAACG,CAAC,CAACK,OAAO,EAAEH,IAAI,CAAC,EAAE;IACpC,OAAAI,iBAAA,CACGb,gBAAgB;MAAA,IAAAc,SAAA;QAAA,OAAAD,iBAAA,CACdb,gBAAgB,CAACe,IAAI;UAAA,IAAChB,MAAMA,CAAA;YAAA,OAAEA,MAAM,CAACU,IAAI,EAAEN,SAAS,CAAC;UAAA;QAAA;MAAA;IAAA;EAG5D;EAEA,OAAOD,sBAAsB,CAACO,IAAI,CAAC;AACrC","ignoreList":[]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { refkey } from '@alloy-js/core';
|
|
2
|
+
import { MemberExpression } from '@alloy-js/typescript';
|
|
3
|
+
import { useTsp } from '@typespec/emitter-framework';
|
|
4
|
+
import { typeboxBaseSchemaParts } from '../typeboxBaseSchema.jsx';
|
|
5
|
+
import { refkeySym, shouldReference } from '../utils.jsx';
|
|
6
|
+
export function TypeBoxSchema(props) {
|
|
7
|
+
const { $ } = useTsp();
|
|
8
|
+
if (!props.nested) {
|
|
9
|
+
return typeboxBaseSchemaParts(props.type);
|
|
10
|
+
}
|
|
11
|
+
const type = $.modelProperty.is(props.type) ? props.type.type : props.type;
|
|
12
|
+
if (shouldReference($.program, type)) {
|
|
13
|
+
return (<MemberExpression>
|
|
14
|
+
<MemberExpression.Part refkey={refkey(type, refkeySym)}/>
|
|
15
|
+
</MemberExpression>);
|
|
16
|
+
}
|
|
17
|
+
return typeboxBaseSchemaParts(type);
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=TypeBoxSchema.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TypeBoxSchema.jsx","sourceRoot":"","sources":["../../../src/components/TypeBoxSchema.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAO1D,MAAM,UAAU,aAAa,CAAC,KAAyB;IACrD,MAAM,EAAE,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC;IAEvB,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAClB,OAAO,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;IAE3E,IAAI,eAAe,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;QACrC,OAAO,CACL,CAAC,gBAAgB,CACf;QAAA,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,EACzD;MAAA,EAAE,gBAAgB,CAAC,CACpB,CAAC;IACJ,CAAC;IAED,OAAO,sBAAsB,CAAC,IAAI,CAAC,CAAC;AACtC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as ay from '@alloy-js/core';
|
|
2
|
+
import * as ts from '@alloy-js/typescript';
|
|
3
|
+
import { TypeBoxSchemaProps } from './TypeBoxSchema.jsx';
|
|
4
|
+
interface TypeBoxSchemaDeclarationProps extends Omit<ts.VarDeclarationProps, 'type' | 'name' | 'value' | 'kind'>, TypeBoxSchemaProps {
|
|
5
|
+
readonly name?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function TypeBoxSchemaDeclaration(props: TypeBoxSchemaDeclarationProps): ay.Children;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=TypeBoxSchemaDeclaration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TypeBoxSchemaDeclaration.d.ts","sourceRoot":"","sources":["../../../src/components/TypeBoxSchemaDeclaration.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAE3C,OAAO,EAAiB,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAExE,UAAU,6BACR,SAAQ,IAAI,CAAC,EAAE,CAAC,mBAAmB,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC,EAAE,kBAAkB;IAC5F,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,6BAA6B,eAsB5E"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { createComponent as _$createComponent, mergeProps as _$mergeProps } from "@alloy-js/core/jsx-runtime";
|
|
2
|
+
import * as ay from '@alloy-js/core';
|
|
3
|
+
import * as ts from '@alloy-js/typescript';
|
|
4
|
+
import { refkeySym } from "../utils.js";
|
|
5
|
+
import { TypeBoxSchema } from "./TypeBoxSchema.js";
|
|
6
|
+
export function TypeBoxSchemaDeclaration(props) {
|
|
7
|
+
const internalRk = ay.refkey(props.type, refkeySym);
|
|
8
|
+
const [schemaProps, varDeclProps] = ay.splitProps(props, ['type', 'nested']);
|
|
9
|
+
const refkeys = [props.refkey ?? []].flat();
|
|
10
|
+
refkeys.push(internalRk);
|
|
11
|
+
const newProps = ay.mergeProps(varDeclProps, {
|
|
12
|
+
refkey: refkeys,
|
|
13
|
+
name: props.name || 'name' in props.type && typeof props.type.name === 'string' && props.type.name || props.type.kind
|
|
14
|
+
});
|
|
15
|
+
return _$createComponent(ts.VarDeclaration, _$mergeProps(newProps, {
|
|
16
|
+
get children() {
|
|
17
|
+
return _$createComponent(TypeBoxSchema, schemaProps);
|
|
18
|
+
}
|
|
19
|
+
}));
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=TypeBoxSchemaDeclaration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["ay","ts","refkeySym","TypeBoxSchema","TypeBoxSchemaDeclaration","props","internalRk","refkey","type","schemaProps","varDeclProps","splitProps","refkeys","flat","push","newProps","mergeProps","name","kind","_$createComponent","VarDeclaration","_$mergeProps","children"],"sources":["../../../src/components/TypeBoxSchemaDeclaration.tsx"],"sourcesContent":[null],"mappings":";AAAA,OAAO,KAAKA,EAAE,MAAM,gBAAgB;AACpC,OAAO,KAAKC,EAAE,MAAM,sBAAsB;AAC1C,SAASC,SAAS;AAClB,SAASC,aAAa;AAOtB,OAAO,SAASC,wBAAwBA,CAACC,KAAoC,EAAE;EAC7E,MAAMC,UAAU,GAAGN,EAAE,CAACO,MAAM,CAACF,KAAK,CAACG,IAAI,EAAEN,SAAS,CAAC;EACnD,MAAM,CAACO,WAAW,EAAEC,YAAY,CAAC,GAAGV,EAAE,CAACW,UAAU,CAACN,KAAK,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAG1E;EAED,MAAMO,OAAO,GAAG,CAACP,KAAK,CAACE,MAAM,IAAI,EAAE,CAAC,CAACM,IAAI,CAAC,CAAC;EAC3CD,OAAO,CAACE,IAAI,CAACR,UAAU,CAAC;EACxB,MAAMS,QAAQ,GAAGf,EAAE,CAACgB,UAAU,CAACN,YAAY,EAAE;IAC3CH,MAAM,EAAEK,OAAO;IACfK,IAAI,EACFZ,KAAK,CAACY,IAAI,IACT,MAAM,IAAIZ,KAAK,CAACG,IAAI,IAAI,OAAOH,KAAK,CAACG,IAAI,CAACS,IAAI,KAAK,QAAQ,IAAIZ,KAAK,CAACG,IAAI,CAACS,IAAK,IAChFZ,KAAK,CAACG,IAAI,CAACU;EACf,CAAC,CAAC;EAEF,OAAAC,iBAAA,CACGlB,EAAE,CAACmB,cAAc,EAAAC,YAAA,CAAKN,QAAQ;IAAA,IAAAO,SAAA;MAAA,OAAAH,iBAAA,CAC5BhB,aAAa,EAAKM,WAAW;IAAA;EAAA;AAGpC","ignoreList":[]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import * as ay from '@alloy-js/core';
|
|
2
|
+
import * as ts from '@alloy-js/typescript';
|
|
3
|
+
import { refkeySym } from '../utils.jsx';
|
|
4
|
+
import { TypeBoxSchema } from './TypeBoxSchema.jsx';
|
|
5
|
+
export function TypeBoxSchemaDeclaration(props) {
|
|
6
|
+
const internalRk = ay.refkey(props.type, refkeySym);
|
|
7
|
+
const [schemaProps, varDeclProps] = ay.splitProps(props, ['type', 'nested']);
|
|
8
|
+
const refkeys = [props.refkey ?? []].flat();
|
|
9
|
+
refkeys.push(internalRk);
|
|
10
|
+
const newProps = ay.mergeProps(varDeclProps, {
|
|
11
|
+
refkey: refkeys,
|
|
12
|
+
name: props.name ||
|
|
13
|
+
('name' in props.type && typeof props.type.name === 'string' && props.type.name) ||
|
|
14
|
+
props.type.kind,
|
|
15
|
+
});
|
|
16
|
+
return (<ts.VarDeclaration {...newProps}>
|
|
17
|
+
<TypeBoxSchema {...schemaProps}/>
|
|
18
|
+
</ts.VarDeclaration>);
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=TypeBoxSchemaDeclaration.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TypeBoxSchemaDeclaration.jsx","sourceRoot":"","sources":["../../../src/components/TypeBoxSchemaDeclaration.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,aAAa,EAAsB,MAAM,qBAAqB,CAAC;AAOxE,MAAM,UAAU,wBAAwB,CAAC,KAAoC;IAC3E,MAAM,UAAU,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACpD,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAG1E,CAAC;IAEF,MAAM,OAAO,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5C,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACzB,MAAM,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAC,YAAY,EAAE;QAC3C,MAAM,EAAE,OAAO;QACf,IAAI,EACF,KAAK,CAAC,IAAI;YACV,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,IAAI,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YAChF,KAAK,CAAC,IAAI,CAAC,IAAI;KAClB,CAAC,CAAC;IAEH,OAAO,CACL,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,QAAQ,CAAC,CAC9B;MAAA,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,EACjC;IAAA,EAAE,EAAE,CAAC,cAAc,CAAC,CACrB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,gCAAgC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":["../../../src/components/index.ts"],"sourcesContent":[null],"mappings":"AAAA;AACA","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emitter.d.ts","sourceRoot":"","sources":["../../src/emitter.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAA0C,MAAM,oBAAoB,CAAC;AAOzF,wBAAsB,OAAO,CAAC,OAAO,EAAE,WAAW,iBAyBjD"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { createComponent as _$createComponent, createIntrinsic as _$createIntrinsic } from "@alloy-js/core/jsx-runtime";
|
|
2
|
+
import * as ay from '@alloy-js/core';
|
|
3
|
+
import * as ts from '@alloy-js/typescript';
|
|
4
|
+
import { ListenerFlow, navigateProgram } from '@typespec/compiler';
|
|
5
|
+
import { $ } from '@typespec/compiler/typekit';
|
|
6
|
+
import { Output, writeOutput } from '@typespec/emitter-framework';
|
|
7
|
+
import { TypeBoxSchemaDeclaration } from "./components/TypeBoxSchemaDeclaration.js";
|
|
8
|
+
import { typebox } from './external-packages/typebox.js';
|
|
9
|
+
import { newTopologicalTypeCollector } from "./utils.js";
|
|
10
|
+
export async function $onEmit(context) {
|
|
11
|
+
const types = getAllDataTypes(context.program);
|
|
12
|
+
const tsNamePolicy = ts.createTSNamePolicy();
|
|
13
|
+
writeOutput(context.program, _$createComponent(Output, {
|
|
14
|
+
get program() {
|
|
15
|
+
return context.program;
|
|
16
|
+
},
|
|
17
|
+
namePolicy: tsNamePolicy,
|
|
18
|
+
externals: [typebox],
|
|
19
|
+
get children() {
|
|
20
|
+
return _$createComponent(ts.SourceFile, {
|
|
21
|
+
path: "models.ts",
|
|
22
|
+
get children() {
|
|
23
|
+
return _$createComponent(ay.For, {
|
|
24
|
+
each: types,
|
|
25
|
+
ender: ";",
|
|
26
|
+
get joiner() {
|
|
27
|
+
return [";", _$createIntrinsic("hbr", {}), _$createIntrinsic("hbr", {})];
|
|
28
|
+
},
|
|
29
|
+
children: type => _$createComponent(TypeBoxSchemaDeclaration, {
|
|
30
|
+
type: type,
|
|
31
|
+
"export": true
|
|
32
|
+
})
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
}), context.emitterOutputDir);
|
|
38
|
+
}
|
|
39
|
+
function getAllDataTypes(program) {
|
|
40
|
+
const collector = newTopologicalTypeCollector(program);
|
|
41
|
+
const globalNs = program.getGlobalNamespaceType();
|
|
42
|
+
navigateProgram(program, {
|
|
43
|
+
namespace(n) {
|
|
44
|
+
if (n !== globalNs && !$(program).type.isUserDefined(n)) {
|
|
45
|
+
return ListenerFlow.NoRecursion;
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
model: collector.collectType,
|
|
49
|
+
enum: collector.collectType,
|
|
50
|
+
union: collector.collectType,
|
|
51
|
+
scalar: collector.collectType
|
|
52
|
+
}, {
|
|
53
|
+
includeTemplateDeclaration: false
|
|
54
|
+
});
|
|
55
|
+
return collector.types;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=emitter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["ay","ts","ListenerFlow","navigateProgram","$","Output","writeOutput","TypeBoxSchemaDeclaration","typebox","newTopologicalTypeCollector","$onEmit","context","types","getAllDataTypes","program","tsNamePolicy","createTSNamePolicy","_$createComponent","namePolicy","externals","children","SourceFile","path","For","each","ender","joiner","_$createIntrinsic","type","emitterOutputDir","collector","globalNs","getGlobalNamespaceType","namespace","n","isUserDefined","NoRecursion","model","collectType","enum","union","scalar","includeTemplateDeclaration"],"sources":["../../src/emitter.tsx"],"sourcesContent":[null],"mappings":";AAAA,OAAO,KAAKA,EAAE,MAAM,gBAAgB;AACpC,OAAO,KAAKC,EAAE,MAAM,sBAAsB;AAC1C,SAAsBC,YAAY,EAAEC,eAAe,QAAiB,oBAAoB;AACxF,SAASC,CAAC,QAAQ,4BAA4B;AAC9C,SAASC,MAAM,EAAEC,WAAW,QAAQ,6BAA6B;AACjE,SAASC,wBAAwB;AACjC,SAASC,OAAO,QAAQ,gCAAgC;AACxD,SAASC,2BAA2B;AAEpC,OAAO,eAAeC,OAAOA,CAACC,OAAoB,EAAE;EAClD,MAAMC,KAAK,GAAGC,eAAe,CAACF,OAAO,CAACG,OAAO,CAAC;EAC9C,MAAMC,YAAY,GAAGd,EAAE,CAACe,kBAAkB,CAAC,CAAC;EAE5CV,WAAW,CACTK,OAAO,CAACG,OAAO,EAAAG,iBAAA,CACdZ,MAAM;IAAA,IAACS,OAAOA,CAAA;MAAA,OAAEH,OAAO,CAACG,OAAO;IAAA;IAAEI,UAAU,EAAEH,YAAY;IAAEI,SAAS,EAAE,CAACX,OAAO,CAAC;IAAA,IAAAY,SAAA;MAAA,OAAAH,iBAAA,CAC7EhB,EAAE,CAACoB,UAAU;QAACC,IAAI;QAAA,IAAAF,SAAA;UAAA,OAAAH,iBAAA,CAChBjB,EAAE,CAACuB,GAAG;YACLC,IAAI,EAAEZ,KAAK;YACXa,KAAK;YAAA,IACLC,MAAMA,CAAA;cAAA,aAAAC,iBAAA,aAAAA,iBAAA;YAAA;YAAAP,QAAA,EAQJQ,IAAI,IAAAX,iBAAA,CAAMV,wBAAwB;cAACqB,IAAI,EAAEA,IAAI;cAAA;YAAA;UAAW;QAAA;MAAA;IAAA;EAAA,IAIhEjB,OAAO,CAACkB,gBACV,CAAC;AACH;AAEA,SAAShB,eAAeA,CAACC,OAAgB,EAAE;EACzC,MAAMgB,SAAS,GAAGrB,2BAA2B,CAACK,OAAO,CAAC;EACtD,MAAMiB,QAAQ,GAAGjB,OAAO,CAACkB,sBAAsB,CAAC,CAAC;EAEjD7B,eAAe,CACbW,OAAO,EACP;IACEmB,SAASA,CAACC,CAAC,EAAE;MACX,IAAIA,CAAC,KAAKH,QAAQ,IAAI,CAAC3B,CAAC,CAACU,OAAO,CAAC,CAACc,IAAI,CAACO,aAAa,CAACD,CAAC,CAAC,EAAE;QACvD,OAAOhC,YAAY,CAACkC,WAAW;MACjC;IACF,CAAC;IACDC,KAAK,EAAEP,SAAS,CAACQ,WAAW;IAC5BC,IAAI,EAAET,SAAS,CAACQ,WAAW;IAC3BE,KAAK,EAAEV,SAAS,CAACQ,WAAW;IAC5BG,MAAM,EAAEX,SAAS,CAACQ;EACpB,CAAC,EACD;IAAEI,0BAA0B,EAAE;EAAM,CACtC,CAAC;EAED,OAAOZ,SAAS,CAAClB,KAAK;AACxB","ignoreList":[]}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import * as ay from '@alloy-js/core';
|
|
2
|
+
import * as ts from '@alloy-js/typescript';
|
|
3
|
+
import { ListenerFlow, navigateProgram } from '@typespec/compiler';
|
|
4
|
+
import { $ } from '@typespec/compiler/typekit';
|
|
5
|
+
import { Output, writeOutput } from '@typespec/emitter-framework';
|
|
6
|
+
import { TypeBoxSchemaDeclaration } from './components/TypeBoxSchemaDeclaration.jsx';
|
|
7
|
+
import { typebox } from './external-packages/typebox.js';
|
|
8
|
+
import { newTopologicalTypeCollector } from './utils.jsx';
|
|
9
|
+
export async function $onEmit(context) {
|
|
10
|
+
const types = getAllDataTypes(context.program);
|
|
11
|
+
const tsNamePolicy = ts.createTSNamePolicy();
|
|
12
|
+
writeOutput(context.program, <Output program={context.program} namePolicy={tsNamePolicy} externals={[typebox]}>
|
|
13
|
+
<ts.SourceFile path="models.ts">
|
|
14
|
+
<ay.For each={types} ender=";" joiner={<>
|
|
15
|
+
;
|
|
16
|
+
<hbr />
|
|
17
|
+
<hbr />
|
|
18
|
+
</>}>
|
|
19
|
+
{(type) => <TypeBoxSchemaDeclaration type={type} export/>}
|
|
20
|
+
</ay.For>
|
|
21
|
+
</ts.SourceFile>
|
|
22
|
+
</Output>, context.emitterOutputDir);
|
|
23
|
+
}
|
|
24
|
+
function getAllDataTypes(program) {
|
|
25
|
+
const collector = newTopologicalTypeCollector(program);
|
|
26
|
+
const globalNs = program.getGlobalNamespaceType();
|
|
27
|
+
navigateProgram(program, {
|
|
28
|
+
namespace(n) {
|
|
29
|
+
if (n !== globalNs && !$(program).type.isUserDefined(n)) {
|
|
30
|
+
return ListenerFlow.NoRecursion;
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
model: collector.collectType,
|
|
34
|
+
enum: collector.collectType,
|
|
35
|
+
union: collector.collectType,
|
|
36
|
+
scalar: collector.collectType,
|
|
37
|
+
}, { includeTemplateDeclaration: false });
|
|
38
|
+
return collector.types;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=emitter.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emitter.jsx","sourceRoot":"","sources":["../../src/emitter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC3C,OAAO,EAAe,YAAY,EAAE,eAAe,EAAW,MAAM,oBAAoB,CAAC;AACzF,OAAO,EAAE,CAAC,EAAE,MAAM,4BAA4B,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,2CAA2C,CAAC;AACrF,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAE1D,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,OAAoB;IAChD,MAAM,KAAK,GAAG,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/C,MAAM,YAAY,GAAG,EAAE,CAAC,kBAAkB,EAAE,CAAC;IAE7C,WAAW,CACT,OAAO,CAAC,OAAO,EACf,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAC/E;MAAA,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAC7B;QAAA,CAAC,EAAE,CAAC,GAAG,CACL,IAAI,CAAC,CAAC,KAAK,CAAC,CACZ,KAAK,CAAC,GAAG,CACT,MAAM,CAAC,CACL,EACE;;cACA,CAAC,GAAG,CAAC,AAAD,EACJ;cAAA,CAAC,GAAG,CAAC,AAAD,EACN;YAAA,GACF,CAAC,CAED;UAAA,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAG,CAC5D;QAAA,EAAE,EAAE,CAAC,GAAG,CACV;MAAA,EAAE,EAAE,CAAC,UAAU,CACjB;IAAA,EAAE,MAAM,CAAC,EACT,OAAO,CAAC,gBAAgB,CACzB,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,OAAgB;IACvC,MAAM,SAAS,GAAG,2BAA2B,CAAC,OAAO,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,OAAO,CAAC,sBAAsB,EAAE,CAAC;IAElD,eAAe,CACb,OAAO,EACP;QACE,SAAS,CAAC,CAAC;YACT,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxD,OAAO,YAAY,CAAC,WAAW,CAAC;YAClC,CAAC;QACH,CAAC;QACD,KAAK,EAAE,SAAS,CAAC,WAAW;QAC5B,IAAI,EAAE,SAAS,CAAC,WAAW;QAC3B,KAAK,EAAE,SAAS,CAAC,WAAW;QAC5B,MAAM,EAAE,SAAS,CAAC,WAAW;KAC9B,EACD,EAAE,0BAA0B,EAAE,KAAK,EAAE,CACtC,CAAC;IAEF,OAAO,SAAS,CAAC,KAAK,CAAC;AACzB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typebox.d.ts","sourceRoot":"","sources":["../../../src/external-packages/typebox.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO;;qGAQlB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createPackage","typebox","name","version","descriptor","named"],"sources":["../../../src/external-packages/typebox.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,aAAa,QAAQ,sBAAsB;AAEpD,OAAO,MAAMC,OAAO,GAAGD,aAAa,CAAC;EACnCE,IAAI,EAAE,SAAS;EACfC,OAAO,EAAE,QAAQ;EACjBC,UAAU,EAAE;IACV,GAAG,EAAE;MACHC,KAAK,EAAE,CAAC,MAAM;IAChB;EACF;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,cAAc,gCAAgC,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAChC,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["$onEmit","$lib"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc,uBAAuB;AACrC,SAASA,OAAO;AAChB,cAAc,gCAAgC;AAC9C,SAASC,IAAI,QAAQ,UAAU;AAC/B,cAAc,YAAY","ignoreList":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare const $lib: import("@typespec/compiler").TypeSpecLibrary<{
|
|
2
|
+
[code: string]: import("@typespec/compiler").DiagnosticMessages;
|
|
3
|
+
}, Record<string, any>, never>;
|
|
4
|
+
export declare const reportDiagnostic: <C extends string | number, M extends keyof {
|
|
5
|
+
[code: string]: import("@typespec/compiler").DiagnosticMessages;
|
|
6
|
+
}[C]>(program: import("@typespec/compiler").Program, diag: import("@typespec/compiler").DiagnosticReport<{
|
|
7
|
+
[code: string]: import("@typespec/compiler").DiagnosticMessages;
|
|
8
|
+
}, C, M>) => void, createDiagnostic: <C extends string | number, M extends keyof {
|
|
9
|
+
[code: string]: import("@typespec/compiler").DiagnosticMessages;
|
|
10
|
+
}[C]>(diag: import("@typespec/compiler").DiagnosticReport<{
|
|
11
|
+
[code: string]: import("@typespec/compiler").DiagnosticMessages;
|
|
12
|
+
}, C, M>) => import("@typespec/compiler").Diagnostic;
|
|
13
|
+
//# sourceMappingURL=lib.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../../src/lib.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,IAAI;;8BAGf,CAAC;AAEH,eAAO,MAAQ,gBAAgB;;;;mBAAE,gBAAgB;;;;oDAAS,CAAC"}
|
package/dist/src/lib.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { createTypeSpecLibrary } from '@typespec/compiler';
|
|
2
|
+
export const $lib = createTypeSpecLibrary({
|
|
3
|
+
name: '@typespec-dev/emitter-typebox',
|
|
4
|
+
diagnostics: {}
|
|
5
|
+
});
|
|
6
|
+
export const {
|
|
7
|
+
reportDiagnostic,
|
|
8
|
+
createDiagnostic
|
|
9
|
+
} = $lib;
|
|
10
|
+
//# sourceMappingURL=lib.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createTypeSpecLibrary","$lib","name","diagnostics","reportDiagnostic","createDiagnostic"],"sources":["../../src/lib.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,qBAAqB,QAAQ,oBAAoB;AAE1D,OAAO,MAAMC,IAAI,GAAGD,qBAAqB,CAAC;EACxCE,IAAI,EAAE,+BAA+B;EACrCC,WAAW,EAAE,CAAC;AAChB,CAAC,CAAC;AAEF,OAAO,MAAM;EAAEC,gBAAgB;EAAEC;AAAiB,CAAC,GAAGJ,IAAI","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/testing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,4BAA4B,CAAC;AAEpC,eAAO,MAAM,0BAA0B,EAAE,mBAGvC,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { createTestLibrary, findTestPackageRoot } from '@typespec/compiler/testing';
|
|
2
|
+
export const TypeSpecTypeBoxTestLibrary = createTestLibrary({
|
|
3
|
+
name: '@typespec-dev/emitter-typebox',
|
|
4
|
+
packageRoot: await findTestPackageRoot(import.meta.url)
|
|
5
|
+
});
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createTestLibrary","findTestPackageRoot","TypeSpecTypeBoxTestLibrary","name","packageRoot","import","meta","url"],"sources":["../../../src/testing/index.ts"],"sourcesContent":[null],"mappings":"AAAA,SACEA,iBAAiB,EACjBC,mBAAmB,QAEd,4BAA4B;AAEnC,OAAO,MAAMC,0BAA+C,GAAGF,iBAAiB,CAAC;EAC/EG,IAAI,EAAE,+BAA+B;EACrCC,WAAW,EAAE,MAAMH,mBAAmB,CAACI,MAAM,CAACC,IAAI,CAACC,GAAG;AACxD,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typeboxBaseSchema.d.ts","sourceRoot":"","sources":["../../src/typeboxBaseSchema.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAEtD,OAAO,EAAuB,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAK/D,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,IAAI,GAAG,QAAQ,CAqB3D"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { createComponent as _$createComponent } from "@alloy-js/core/jsx-runtime";
|
|
2
|
+
import { refkey } from '@alloy-js/core';
|
|
3
|
+
import { MemberExpression, ObjectExpression, ObjectProperty } from '@alloy-js/typescript';
|
|
4
|
+
import { useTsp } from '@typespec/emitter-framework';
|
|
5
|
+
import { refkeySym, shouldReference, typeboxCall } from "./utils.js";
|
|
6
|
+
export function typeboxBaseSchemaParts(type) {
|
|
7
|
+
const {
|
|
8
|
+
$
|
|
9
|
+
} = useTsp();
|
|
10
|
+
switch (type.kind) {
|
|
11
|
+
case 'Intrinsic':
|
|
12
|
+
return intrinsicBaseType(type);
|
|
13
|
+
case 'String':
|
|
14
|
+
case 'Number':
|
|
15
|
+
case 'Boolean':
|
|
16
|
+
return literalBaseType($, type);
|
|
17
|
+
case 'Scalar':
|
|
18
|
+
return scalarBaseType($, type);
|
|
19
|
+
case 'ModelProperty':
|
|
20
|
+
return typeboxBaseSchemaParts(type.type);
|
|
21
|
+
case 'EnumMember':
|
|
22
|
+
return type.value ? literalBaseType($, $.literal.create(type.value)) : literalBaseType($, $.literal.create(type.name));
|
|
23
|
+
default:
|
|
24
|
+
return typeboxCall('Any');
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
function literalBaseType($, type) {
|
|
28
|
+
switch (type.kind) {
|
|
29
|
+
case 'String':
|
|
30
|
+
return typeboxCall('Literal', `"${type.value}"`);
|
|
31
|
+
case 'Number':
|
|
32
|
+
case 'Boolean':
|
|
33
|
+
return typeboxCall('Literal', `${type.value}`);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
function formatOpts(format) {
|
|
37
|
+
return _$createComponent(ObjectExpression, {
|
|
38
|
+
get children() {
|
|
39
|
+
return _$createComponent(ObjectProperty, {
|
|
40
|
+
name: "format",
|
|
41
|
+
children: `"${format}"`
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
function scalarBaseType($, type) {
|
|
47
|
+
if (type.baseScalar && shouldReference($.program, type.baseScalar)) {
|
|
48
|
+
return _$createComponent(MemberExpression, {
|
|
49
|
+
get children() {
|
|
50
|
+
return _$createComponent(MemberExpression.Part, {
|
|
51
|
+
get refkey() {
|
|
52
|
+
return refkey(type.baseScalar, refkeySym);
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
if ($.scalar.extendsBoolean(type)) {
|
|
59
|
+
return typeboxCall('Boolean');
|
|
60
|
+
} else if ($.scalar.extendsNumeric(type)) {
|
|
61
|
+
if ($.scalar.extendsInteger(type)) {
|
|
62
|
+
if ($.scalar.extendsInt32(type) || $.scalar.extendsUint32(type) || $.scalar.extendsSafeint(type)) {
|
|
63
|
+
return typeboxCall('Integer');
|
|
64
|
+
} else {
|
|
65
|
+
return typeboxCall('BigInt');
|
|
66
|
+
}
|
|
67
|
+
} else {
|
|
68
|
+
return typeboxCall('Number');
|
|
69
|
+
}
|
|
70
|
+
} else if ($.scalar.extendsString(type)) {
|
|
71
|
+
if ($.scalar.extendsUrl(type)) {
|
|
72
|
+
return typeboxCall('String', formatOpts('uri'));
|
|
73
|
+
}
|
|
74
|
+
return typeboxCall('String');
|
|
75
|
+
} else if ($.scalar.extendsBytes(type)) {
|
|
76
|
+
return typeboxCall('Any');
|
|
77
|
+
} else if ($.scalar.extendsPlainDate(type)) {
|
|
78
|
+
return typeboxCall('Date');
|
|
79
|
+
} else if ($.scalar.extendsPlainTime(type)) {
|
|
80
|
+
return typeboxCall('String', formatOpts('time'));
|
|
81
|
+
} else if ($.scalar.extendsUtcDateTime(type)) {
|
|
82
|
+
const encoding = $.scalar.getEncoding(type);
|
|
83
|
+
if (encoding === undefined) {
|
|
84
|
+
return typeboxCall('Date');
|
|
85
|
+
} else if (encoding.encoding === 'unixTimestamp') {
|
|
86
|
+
return scalarBaseType($, encoding.type);
|
|
87
|
+
} else if (encoding.encoding === 'rfc3339') {
|
|
88
|
+
return typeboxCall('String', formatOpts('date-time'));
|
|
89
|
+
} else {
|
|
90
|
+
return scalarBaseType($, encoding.type);
|
|
91
|
+
}
|
|
92
|
+
} else if ($.scalar.extendsOffsetDateTime(type)) {
|
|
93
|
+
const encoding = $.scalar.getEncoding(type);
|
|
94
|
+
if (encoding === undefined) {
|
|
95
|
+
return typeboxCall('Date');
|
|
96
|
+
} else if (encoding.encoding === 'rfc3339') {
|
|
97
|
+
return typeboxCall('String', formatOpts('date-time'));
|
|
98
|
+
} else {
|
|
99
|
+
return scalarBaseType($, encoding.type);
|
|
100
|
+
}
|
|
101
|
+
} else if ($.scalar.extendsDuration(type)) {
|
|
102
|
+
const encoding = $.scalar.getEncoding(type);
|
|
103
|
+
if (encoding === undefined || encoding.encoding === 'ISO8601') {
|
|
104
|
+
return typeboxCall('String', formatOpts('duration'));
|
|
105
|
+
} else {
|
|
106
|
+
return scalarBaseType($, encoding.type);
|
|
107
|
+
}
|
|
108
|
+
} else {
|
|
109
|
+
return typeboxCall('Any');
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
function intrinsicBaseType(type) {
|
|
113
|
+
if (type.kind === 'Intrinsic') {
|
|
114
|
+
switch (type.name) {
|
|
115
|
+
case 'null':
|
|
116
|
+
return typeboxCall('Null');
|
|
117
|
+
case 'never':
|
|
118
|
+
return typeboxCall('Never');
|
|
119
|
+
case 'unknown':
|
|
120
|
+
return typeboxCall('Unknown');
|
|
121
|
+
case 'void':
|
|
122
|
+
return typeboxCall('Void');
|
|
123
|
+
default:
|
|
124
|
+
return typeboxCall('Any');
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
return typeboxCall('Any');
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=typeboxBaseSchema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["refkey","MemberExpression","ObjectExpression","ObjectProperty","useTsp","refkeySym","shouldReference","typeboxCall","typeboxBaseSchemaParts","type","$","kind","intrinsicBaseType","literalBaseType","scalarBaseType","value","literal","create","name","formatOpts","format","_$createComponent","children","baseScalar","program","Part","scalar","extendsBoolean","extendsNumeric","extendsInteger","extendsInt32","extendsUint32","extendsSafeint","extendsString","extendsUrl","extendsBytes","extendsPlainDate","extendsPlainTime","extendsUtcDateTime","encoding","getEncoding","undefined","extendsOffsetDateTime","extendsDuration"],"sources":["../../src/typeboxBaseSchema.tsx"],"sourcesContent":[null],"mappings":";AAAA,SAASA,MAAM,QAAQ,gBAAgB;AAEvC,SAASC,gBAAgB,EAAEC,gBAAgB,EAAEC,cAAc,QAAQ,sBAAsB;AAGzF,SAASC,MAAM,QAAQ,6BAA6B;AACpD,SAASC,SAAS,EAAEC,eAAe,EAAEC,WAAW;AAEhD,OAAO,SAASC,sBAAsBA,CAACC,IAAU,EAAY;EAC3D,MAAM;IAAEC;EAAE,CAAC,GAAGN,MAAM,CAAC,CAAC;EAEtB,QAAQK,IAAI,CAACE,IAAI;IACf,KAAK,WAAW;MACd,OAAOC,iBAAiB,CAACH,IAAI,CAAC;IAChC,KAAK,QAAQ;IACb,KAAK,QAAQ;IACb,KAAK,SAAS;MACZ,OAAOI,eAAe,CAACH,CAAC,EAAED,IAAI,CAAC;IACjC,KAAK,QAAQ;MACX,OAAOK,cAAc,CAACJ,CAAC,EAAED,IAAI,CAAC;IAChC,KAAK,eAAe;MAClB,OAAOD,sBAAsB,CAACC,IAAI,CAACA,IAAI,CAAC;IAC1C,KAAK,YAAY;MACf,OAAOA,IAAI,CAACM,KAAK,GACbF,eAAe,CAACH,CAAC,EAAEA,CAAC,CAACM,OAAO,CAACC,MAAM,CAACR,IAAI,CAACM,KAAK,CAAC,CAAC,GAChDF,eAAe,CAACH,CAAC,EAAEA,CAAC,CAACM,OAAO,CAACC,MAAM,CAACR,IAAI,CAACS,IAAI,CAAC,CAAC;IACrD;MACE,OAAOX,WAAW,CAAC,KAAK,CAAC;EAC7B;AACF;AAEA,SAASM,eAAeA,CAACH,CAAU,EAAED,IAAiB,EAAY;EAChE,QAAQA,IAAI,CAACE,IAAI;IACf,KAAK,QAAQ;MACX,OAAOJ,WAAW,CAAC,SAAS,EAAE,IAAIE,IAAI,CAACM,KAAK,GAAG,CAAC;IAClD,KAAK,QAAQ;IACb,KAAK,SAAS;MACZ,OAAOR,WAAW,CAAC,SAAS,EAAE,GAAGE,IAAI,CAACM,KAAK,EAAE,CAAC;EAClD;AACF;AAEA,SAASI,UAAUA,CAACC,MAAc,EAAY;EAC5C,OAAAC,iBAAA,CACGnB,gBAAgB;IAAA,IAAAoB,SAAA;MAAA,OAAAD,iBAAA,CACdlB,cAAc;QAACe,IAAI;QAAAI,QAAA,EAAW,IAAIF,MAAM;MAAG;IAAA;EAAA;AAGlD;AAEA,SAASN,cAAcA,CAACJ,CAAU,EAAED,IAAY,EAAY;EAC1D,IAAIA,IAAI,CAACc,UAAU,IAAIjB,eAAe,CAACI,CAAC,CAACc,OAAO,EAAEf,IAAI,CAACc,UAAU,CAAC,EAAE;IAClE,OAAAF,iBAAA,CACGpB,gBAAgB;MAAA,IAAAqB,SAAA;QAAA,OAAAD,iBAAA,CACdpB,gBAAgB,CAACwB,IAAI;UAAA,IAACzB,MAAMA,CAAA;YAAA,OAAEA,MAAM,CAACS,IAAI,CAACc,UAAU,EAAElB,SAAS,CAAC;UAAA;QAAA;MAAA;IAAA;EAGvE;EAEA,IAAIK,CAAC,CAACgB,MAAM,CAACC,cAAc,CAAClB,IAAI,CAAC,EAAE;IACjC,OAAOF,WAAW,CAAC,SAAS,CAAC;EAC/B,CAAC,MAAM,IAAIG,CAAC,CAACgB,MAAM,CAACE,cAAc,CAACnB,IAAI,CAAC,EAAE;IACxC,IAAIC,CAAC,CAACgB,MAAM,CAACG,cAAc,CAACpB,IAAI,CAAC,EAAE;MACjC,IACEC,CAAC,CAACgB,MAAM,CAACI,YAAY,CAACrB,IAAI,CAAC,IAC3BC,CAAC,CAACgB,MAAM,CAACK,aAAa,CAACtB,IAAI,CAAC,IAC5BC,CAAC,CAACgB,MAAM,CAACM,cAAc,CAACvB,IAAI,CAAC,EAC7B;QACA,OAAOF,WAAW,CAAC,SAAS,CAAC;MAC/B,CAAC,MAAM;QACL,OAAOA,WAAW,CAAC,QAAQ,CAAC;MAC9B;IACF,CAAC,MAAM;MACL,OAAOA,WAAW,CAAC,QAAQ,CAAC;IAC9B;EACF,CAAC,MAAM,IAAIG,CAAC,CAACgB,MAAM,CAACO,aAAa,CAACxB,IAAI,CAAC,EAAE;IACvC,IAAIC,CAAC,CAACgB,MAAM,CAACQ,UAAU,CAACzB,IAAI,CAAC,EAAE;MAC7B,OAAOF,WAAW,CAAC,QAAQ,EAAEY,UAAU,CAAC,KAAK,CAAC,CAAC;IACjD;IACA,OAAOZ,WAAW,CAAC,QAAQ,CAAC;EAC9B,CAAC,MAAM,IAAIG,CAAC,CAACgB,MAAM,CAACS,YAAY,CAAC1B,IAAI,CAAC,EAAE;IACtC,OAAOF,WAAW,CAAC,KAAK,CAAC;EAC3B,CAAC,MAAM,IAAIG,CAAC,CAACgB,MAAM,CAACU,gBAAgB,CAAC3B,IAAI,CAAC,EAAE;IAC1C,OAAOF,WAAW,CAAC,MAAM,CAAC;EAC5B,CAAC,MAAM,IAAIG,CAAC,CAACgB,MAAM,CAACW,gBAAgB,CAAC5B,IAAI,CAAC,EAAE;IAC1C,OAAOF,WAAW,CAAC,QAAQ,EAAEY,UAAU,CAAC,MAAM,CAAC,CAAC;EAClD,CAAC,MAAM,IAAIT,CAAC,CAACgB,MAAM,CAACY,kBAAkB,CAAC7B,IAAI,CAAC,EAAE;IAC5C,MAAM8B,QAAQ,GAAG7B,CAAC,CAACgB,MAAM,CAACc,WAAW,CAAC/B,IAAI,CAAC;IAC3C,IAAI8B,QAAQ,KAAKE,SAAS,EAAE;MAC1B,OAAOlC,WAAW,CAAC,MAAM,CAAC;IAC5B,CAAC,MAAM,IAAIgC,QAAQ,CAACA,QAAQ,KAAK,eAAe,EAAE;MAChD,OAAOzB,cAAc,CAACJ,CAAC,EAAE6B,QAAQ,CAAC9B,IAAI,CAAC;IACzC,CAAC,MAAM,IAAI8B,QAAQ,CAACA,QAAQ,KAAK,SAAS,EAAE;MAC1C,OAAOhC,WAAW,CAAC,QAAQ,EAAEY,UAAU,CAAC,WAAW,CAAC,CAAC;IACvD,CAAC,MAAM;MACL,OAAOL,cAAc,CAACJ,CAAC,EAAE6B,QAAQ,CAAC9B,IAAI,CAAC;IACzC;EACF,CAAC,MAAM,IAAIC,CAAC,CAACgB,MAAM,CAACgB,qBAAqB,CAACjC,IAAI,CAAC,EAAE;IAC/C,MAAM8B,QAAQ,GAAG7B,CAAC,CAACgB,MAAM,CAACc,WAAW,CAAC/B,IAAI,CAAC;IAC3C,IAAI8B,QAAQ,KAAKE,SAAS,EAAE;MAC1B,OAAOlC,WAAW,CAAC,MAAM,CAAC;IAC5B,CAAC,MAAM,IAAIgC,QAAQ,CAACA,QAAQ,KAAK,SAAS,EAAE;MAC1C,OAAOhC,WAAW,CAAC,QAAQ,EAAEY,UAAU,CAAC,WAAW,CAAC,CAAC;IACvD,CAAC,MAAM;MACL,OAAOL,cAAc,CAACJ,CAAC,EAAE6B,QAAQ,CAAC9B,IAAI,CAAC;IACzC;EACF,CAAC,MAAM,IAAIC,CAAC,CAACgB,MAAM,CAACiB,eAAe,CAAClC,IAAI,CAAC,EAAE;IACzC,MAAM8B,QAAQ,GAAG7B,CAAC,CAACgB,MAAM,CAACc,WAAW,CAAC/B,IAAI,CAAC;IAC3C,IAAI8B,QAAQ,KAAKE,SAAS,IAAIF,QAAQ,CAACA,QAAQ,KAAK,SAAS,EAAE;MAC7D,OAAOhC,WAAW,CAAC,QAAQ,EAAEY,UAAU,CAAC,UAAU,CAAC,CAAC;IACtD,CAAC,MAAM;MACL,OAAOL,cAAc,CAACJ,CAAC,EAAE6B,QAAQ,CAAC9B,IAAI,CAAC;IACzC;EACF,CAAC,MAAM;IACL,OAAOF,WAAW,CAAC,KAAK,CAAC;EAC3B;AACF;AAEA,SAASK,iBAAiBA,CAACH,IAAU,EAAY;EAC/C,IAAIA,IAAI,CAACE,IAAI,KAAK,WAAW,EAAE;IAC7B,QAAQF,IAAI,CAACS,IAAI;MACf,KAAK,MAAM;QACT,OAAOX,WAAW,CAAC,MAAM,CAAC;MAC5B,KAAK,OAAO;QACV,OAAOA,WAAW,CAAC,OAAO,CAAC;MAC7B,KAAK,SAAS;QACZ,OAAOA,WAAW,CAAC,SAAS,CAAC;MAC/B,KAAK,MAAM;QACT,OAAOA,WAAW,CAAC,MAAM,CAAC;MAC5B;QACE,OAAOA,WAAW,CAAC,KAAK,CAAC;IAC7B;EACF;EACA,OAAOA,WAAW,CAAC,KAAK,CAAC;AAC3B","ignoreList":[]}
|