@typespec/openapi3 1.4.0-dev.8 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/cli/actions/convert/args.d.ts +1 -0
- package/dist/src/cli/actions/convert/args.d.ts.map +1 -1
- package/dist/src/cli/actions/convert/convert-file.js +1 -1
- package/dist/src/cli/actions/convert/convert-file.js.map +1 -1
- package/dist/src/cli/actions/convert/convert.d.ts +5 -1
- package/dist/src/cli/actions/convert/convert.d.ts.map +1 -1
- package/dist/src/cli/actions/convert/convert.js +2 -2
- package/dist/src/cli/actions/convert/convert.js.map +1 -1
- package/dist/src/cli/actions/convert/generators/generate-decorators.d.ts +1 -1
- package/dist/src/cli/actions/convert/generators/generate-decorators.d.ts.map +1 -1
- package/dist/src/cli/actions/convert/generators/generate-decorators.js +2 -2
- package/dist/src/cli/actions/convert/generators/generate-decorators.js.map +1 -1
- package/dist/src/cli/actions/convert/generators/generate-main.js +1 -1
- package/dist/src/cli/actions/convert/generators/generate-main.js.map +1 -1
- package/dist/src/cli/actions/convert/generators/generate-model.d.ts +2 -1
- package/dist/src/cli/actions/convert/generators/generate-model.d.ts.map +1 -1
- package/dist/src/cli/actions/convert/generators/generate-model.js +14 -10
- package/dist/src/cli/actions/convert/generators/generate-model.js.map +1 -1
- package/dist/src/cli/actions/convert/generators/generate-operation.d.ts.map +1 -1
- package/dist/src/cli/actions/convert/generators/generate-operation.js +11 -2
- package/dist/src/cli/actions/convert/generators/generate-operation.js.map +1 -1
- package/dist/src/cli/actions/convert/generators/generate-service-info.d.ts +1 -1
- package/dist/src/cli/actions/convert/generators/generate-service-info.d.ts.map +1 -1
- package/dist/src/cli/actions/convert/generators/generate-service-info.js +4 -2
- package/dist/src/cli/actions/convert/generators/generate-service-info.js.map +1 -1
- package/dist/src/cli/actions/convert/generators/generate-types.d.ts +12 -2
- package/dist/src/cli/actions/convert/generators/generate-types.d.ts.map +1 -1
- package/dist/src/cli/actions/convert/generators/generate-types.js +114 -9
- package/dist/src/cli/actions/convert/generators/generate-types.js.map +1 -1
- package/dist/src/cli/actions/convert/interfaces.d.ts +9 -0
- package/dist/src/cli/actions/convert/interfaces.d.ts.map +1 -1
- package/dist/src/cli/actions/convert/transforms/transform-component-schemas.d.ts.map +1 -1
- package/dist/src/cli/actions/convert/transforms/transform-component-schemas.js +11 -4
- package/dist/src/cli/actions/convert/transforms/transform-component-schemas.js.map +1 -1
- package/dist/src/cli/actions/convert/transforms/transform-paths.d.ts.map +1 -1
- package/dist/src/cli/actions/convert/transforms/transform-paths.js +17 -2
- package/dist/src/cli/actions/convert/transforms/transform-paths.js.map +1 -1
- package/dist/src/cli/actions/convert/transforms/transforms.d.ts.map +1 -1
- package/dist/src/cli/actions/convert/transforms/transforms.js +42 -0
- package/dist/src/cli/actions/convert/transforms/transforms.js.map +1 -1
- package/dist/src/cli/actions/convert/utils/context.d.ts +23 -3
- package/dist/src/cli/actions/convert/utils/context.d.ts.map +1 -1
- package/dist/src/cli/actions/convert/utils/context.js +28 -4
- package/dist/src/cli/actions/convert/utils/context.js.map +1 -1
- package/dist/src/cli/actions/convert/utils/generate-operation-id.d.ts +9 -0
- package/dist/src/cli/actions/convert/utils/generate-operation-id.d.ts.map +1 -0
- package/dist/src/cli/actions/convert/utils/generate-operation-id.js +29 -0
- package/dist/src/cli/actions/convert/utils/generate-operation-id.js.map +1 -0
- package/dist/src/cli/cli.js +6 -1
- package/dist/src/cli/cli.js.map +1 -1
- package/dist/src/openapi.js +24 -2
- package/dist/src/openapi.js.map +1 -1
- package/dist/src/schema-emitter.d.ts.map +1 -1
- package/dist/src/schema-emitter.js +10 -1
- package/dist/src/schema-emitter.js.map +1 -1
- package/dist/src/types.d.ts +7 -0
- package/dist/src/types.d.ts.map +1 -1
- package/dist/version.js +1 -1
- package/package.json +22 -22
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../../../../src/cli/actions/convert/args.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../../../../src/cli/actions/convert/args.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
|
|
@@ -9,7 +9,7 @@ export async function convertAction(host, args) {
|
|
|
9
9
|
const fullPath = resolvePath(process.cwd(), args.path);
|
|
10
10
|
const parser = new OpenAPIParser();
|
|
11
11
|
const model = await parser.bundle(fullPath);
|
|
12
|
-
const context = createContext(parser, model);
|
|
12
|
+
const context = createContext(parser, model, console, args.namespace);
|
|
13
13
|
const program = transform(context);
|
|
14
14
|
let mainTsp;
|
|
15
15
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convert-file.js","sourceRoot":"","sources":["../../../../../src/cli/actions/convert/convert-file.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjE,OAAO,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAE7D,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAa,EAAE,IAAoB;IACrE,2BAA2B;IAC3B,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACvD,MAAM,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,EAAE,KAAyB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"convert-file.js","sourceRoot":"","sources":["../../../../../src/cli/actions/convert/convert-file.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjE,OAAO,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAE7D,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAa,EAAE,IAAoB;IACrE,2BAA2B;IAC3B,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACvD,MAAM,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,EAAE,KAAyB,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAC1F,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IACnC,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC;QACH,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,2BAA2B,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,WAAW,CAAC;IAChB,2DAA2D;IAC3D,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,cAAc,CAAC,OAAO,EAAE;YACtC,UAAU,EAAE,GAAG;YACf,QAAQ,EAAE,CAAC;SACZ,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,WAAW,GAAG,GAAG,CAAC;IACpB,CAAC;IAED,IAAI,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;QACtC,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;IAC7E,CAAC;IAED,IAAI,WAAW,EAAE,CAAC;QAChB,2BAA2B,CAAC,WAAW,CAAC,CAAC;IAC3C,CAAC;AACH,CAAC"}
|
|
@@ -4,6 +4,10 @@ export interface ConvertOpenAPI3DocumentOptions {
|
|
|
4
4
|
* Whether external $ref pointers will be resolved and included in the output.
|
|
5
5
|
*/
|
|
6
6
|
disableExternalRefs?: boolean;
|
|
7
|
+
/**
|
|
8
|
+
* The namespace name to use instead of generating from the OpenAPI title.
|
|
9
|
+
*/
|
|
10
|
+
namespace?: string;
|
|
7
11
|
}
|
|
8
|
-
export declare function convertOpenAPI3Document(document: OpenAPI3Document, { disableExternalRefs }?: ConvertOpenAPI3DocumentOptions): Promise<string>;
|
|
12
|
+
export declare function convertOpenAPI3Document(document: OpenAPI3Document, { disableExternalRefs, namespace }?: ConvertOpenAPI3DocumentOptions): Promise<string>;
|
|
9
13
|
//# sourceMappingURL=convert.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../../../../src/cli/actions/convert/convert.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAKrD,MAAM,WAAW,8BAA8B;IAC7C;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../../../../src/cli/actions/convert/convert.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAKrD,MAAM,WAAW,8BAA8B;IAC7C;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,gBAAgB,EAC1B,EAAE,mBAAmB,EAAE,SAAS,EAAE,GAAE,8BAAmC,mBAoBxE"}
|
|
@@ -3,7 +3,7 @@ import { formatTypeSpec } from "@typespec/compiler";
|
|
|
3
3
|
import { generateMain } from "./generators/generate-main.js";
|
|
4
4
|
import { transform } from "./transforms/transforms.js";
|
|
5
5
|
import { createContext } from "./utils/context.js";
|
|
6
|
-
export async function convertOpenAPI3Document(document, { disableExternalRefs } = {}) {
|
|
6
|
+
export async function convertOpenAPI3Document(document, { disableExternalRefs, namespace } = {}) {
|
|
7
7
|
const parser = new OpenAPIParser();
|
|
8
8
|
const bundleOptions = disableExternalRefs
|
|
9
9
|
? {
|
|
@@ -11,7 +11,7 @@ export async function convertOpenAPI3Document(document, { disableExternalRefs }
|
|
|
11
11
|
}
|
|
12
12
|
: {};
|
|
13
13
|
await parser.bundle(document, bundleOptions);
|
|
14
|
-
const context = createContext(parser, document);
|
|
14
|
+
const context = createContext(parser, document, console, namespace);
|
|
15
15
|
const program = transform(context);
|
|
16
16
|
const content = generateMain(program, context);
|
|
17
17
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convert.js","sourceRoot":"","sources":["../../../../../src/cli/actions/convert/convert.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"convert.js","sourceRoot":"","sources":["../../../../../src/cli/actions/convert/convert.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAanD,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,QAA0B,EAC1B,EAAE,mBAAmB,EAAE,SAAS,KAAqC,EAAE;IAEvE,MAAM,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;IACnC,MAAM,aAAa,GAAG,mBAAmB;QACvC,CAAC,CAAC;YACE,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE;SACvD;QACH,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,MAAM,CAAC,MAAM,CAAC,QAAe,EAAE,aAAa,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IACpE,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/C,IAAI,CAAC;QACH,OAAO,MAAM,cAAc,CAAC,OAAO,EAAE;YACnC,UAAU,EAAE,GAAG;YACf,QAAQ,EAAE,CAAC;SACZ,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { TypeSpecDecorator } from "../interfaces.js";
|
|
2
|
-
export declare function generateDecorators(decorators: TypeSpecDecorator[]): string[];
|
|
2
|
+
export declare function generateDecorators(decorators: TypeSpecDecorator[], namesToExclude?: string[]): string[];
|
|
3
3
|
//# sourceMappingURL=generate-decorators.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-decorators.d.ts","sourceRoot":"","sources":["../../../../../../src/cli/actions/convert/generators/generate-decorators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAW9D,wBAAgB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"generate-decorators.d.ts","sourceRoot":"","sources":["../../../../../../src/cli/actions/convert/generators/generate-decorators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAW9D,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,iBAAiB,EAAE,EAC/B,cAAc,GAAE,MAAM,EAAO,GAC5B,MAAM,EAAE,CAKV"}
|
|
@@ -5,8 +5,8 @@ function generateDecorator({ name, args }) {
|
|
|
5
5
|
: "";
|
|
6
6
|
return `@${name}${stringifiedArguments}`;
|
|
7
7
|
}
|
|
8
|
-
export function generateDecorators(decorators) {
|
|
9
|
-
const uniqueDecorators = new Set(decorators.map(generateDecorator));
|
|
8
|
+
export function generateDecorators(decorators, namesToExclude = []) {
|
|
9
|
+
const uniqueDecorators = new Set(decorators.filter((d) => !namesToExclude.includes(d.name)).map(generateDecorator));
|
|
10
10
|
return Array.from(uniqueDecorators);
|
|
11
11
|
}
|
|
12
12
|
function isTSValue(value) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-decorators.js","sourceRoot":"","sources":["../../../../../../src/cli/actions/convert/generators/generate-decorators.ts"],"names":[],"mappings":"AAEA,SAAS,iBAAiB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAqB;IAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;IAC5B,MAAM,oBAAoB,GAAG,OAAO;QAClC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;QACjF,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO,IAAI,IAAI,GAAG,oBAAoB,EAAE,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,kBAAkB,
|
|
1
|
+
{"version":3,"file":"generate-decorators.js","sourceRoot":"","sources":["../../../../../../src/cli/actions/convert/generators/generate-decorators.ts"],"names":[],"mappings":"AAEA,SAAS,iBAAiB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAqB;IAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;IAC5B,MAAM,oBAAoB,GAAG,OAAO;QAClC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;QACjF,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO,IAAI,IAAI,GAAG,oBAAoB,EAAE,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,UAA+B,EAC/B,iBAA2B,EAAE;IAE7B,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAC9B,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAClF,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,SAAS,CAAC,KAAc;IAC/B,OAAO,OAAO,CACZ,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,QAAQ,IAAI,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,OAAO,CACvF,CAAC;AACJ,CAAC"}
|
|
@@ -12,7 +12,7 @@ export function generateMain(program, context) {
|
|
|
12
12
|
using Http;
|
|
13
13
|
using OpenAPI;
|
|
14
14
|
|
|
15
|
-
${generateServiceInformation(program.serviceInfo, program.servers, program.tags)}
|
|
15
|
+
${generateServiceInformation(program.serviceInfo, program.servers, program.tags, context.rootNamespace)}
|
|
16
16
|
|
|
17
17
|
${program.types.map((t) => generateDataType(t, context)).join("\n\n")}
|
|
18
18
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-main.js","sourceRoot":"","sources":["../../../../../../src/cli/actions/convert/generators/generate-main.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAExE,MAAM,UAAU,YAAY,CAAC,OAAwB,EAAE,OAAgB;IACrE,OAAO;;;;;;;;IAQL,0BAA0B,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC;;
|
|
1
|
+
{"version":3,"file":"generate-main.js","sourceRoot":"","sources":["../../../../../../src/cli/actions/convert/generators/generate-main.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAExE,MAAM,UAAU,YAAY,CAAC,OAAwB,EAAE,OAAgB;IACrE,OAAO;;;;;;;;IAQL,0BAA0B,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,aAAa,CAAC;;IAErG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;;IAEnE,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;;IAEzE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC;SACjC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;SACvE,IAAI,CAAC,MAAM,CAAC;IACb,eAAe,CAAC,OAAO,CAAC;GACzB,CAAC;AACJ,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import { OpenAPI3Encoding } from "../../../../types.js";
|
|
1
2
|
import { TypeSpecDataTypes, TypeSpecModelProperty } from "../interfaces.js";
|
|
2
3
|
import { Context } from "../utils/context.js";
|
|
3
4
|
export declare function generateDataType(type: TypeSpecDataTypes, context: Context): string;
|
|
4
|
-
export declare function generateModelProperty(prop: TypeSpecModelProperty, containerScope: string[], context: Context): string;
|
|
5
|
+
export declare function generateModelProperty(prop: TypeSpecModelProperty, containerScope: string[], context: Context, isModelReferencedAsMultipartRequestBody?: boolean, encoding?: Record<string, OpenAPI3Encoding>): string;
|
|
5
6
|
export declare function generateModelExpression(props: TypeSpecModelProperty[], containerScope: string[], context: Context): string;
|
|
6
7
|
//# sourceMappingURL=generate-model.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-model.d.ts","sourceRoot":"","sources":["../../../../../../src/cli/actions/convert/generators/generate-model.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"generate-model.d.ts","sourceRoot":"","sources":["../../../../../../src/cli/actions/convert/generators/generate-model.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAA2B,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAEL,iBAAiB,EAGjB,qBAAqB,EAGtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAW9C,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAalF;AA4JD,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,qBAAqB,EAC3B,cAAc,EAAE,MAAM,EAAE,EACxB,OAAO,EAAE,OAAO,EAChB,uCAAuC,CAAC,EAAE,OAAO,EACjD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,GAC1C,MAAM,CAkBR;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,qBAAqB,EAAE,EAC9B,cAAc,EAAE,MAAM,EAAE,EACxB,OAAO,EAAE,OAAO,GACf,MAAM,CAER"}
|
|
@@ -2,7 +2,7 @@ import { printIdentifier } from "@typespec/compiler";
|
|
|
2
2
|
import { getDecoratorsForSchema } from "../utils/decorators.js";
|
|
3
3
|
import { generateDocs } from "../utils/docs.js";
|
|
4
4
|
import { generateDecorators } from "./generate-decorators.js";
|
|
5
|
-
import { getTypeSpecPrimitiveFromSchema } from "./generate-types.js";
|
|
5
|
+
import { getTypeSpecPrimitiveFromSchema, isReferencedEnumType, isReferencedUnionType, SchemaToExpressionGenerator, } from "./generate-types.js";
|
|
6
6
|
export function generateDataType(type, context) {
|
|
7
7
|
switch (type.kind) {
|
|
8
8
|
case "alias":
|
|
@@ -66,8 +66,10 @@ function generateUnion(union, context) {
|
|
|
66
66
|
return "";
|
|
67
67
|
}
|
|
68
68
|
const memberSchema = "$ref" in member ? context.getSchemaByRef(member.$ref) : member;
|
|
69
|
-
const value =
|
|
70
|
-
?.
|
|
69
|
+
const value = (union.schema.discriminator?.mapping && "$ref" in member
|
|
70
|
+
? Object.entries(union.schema.discriminator.mapping).find((x) => x[1] === member.$ref)?.[0]
|
|
71
|
+
: undefined) ??
|
|
72
|
+
memberSchema.properties?.[union.schema.discriminator.propertyName]?.enum?.[0];
|
|
71
73
|
// checking whether the value is using an invalid character as an identifier
|
|
72
74
|
const valueIdentifier = value ? printIdentifier(value, "disallow-reserved") : "";
|
|
73
75
|
return value ? `${value === valueIdentifier ? value : valueIdentifier}: ` : "";
|
|
@@ -112,7 +114,7 @@ function generateModel(model, context) {
|
|
|
112
114
|
if (model.spread?.length) {
|
|
113
115
|
definitions.push(...model.spread.map((spread) => `...${spread};`));
|
|
114
116
|
}
|
|
115
|
-
definitions.push(...model.properties.map((prop) => generateModelProperty(prop, model.scope, context)));
|
|
117
|
+
definitions.push(...model.properties.map((prop) => generateModelProperty(prop, model.scope, context, model.isModelReferencedAsMultipartRequestBody, model.encoding)));
|
|
116
118
|
if (model.additionalProperties) {
|
|
117
119
|
definitions.push(`...Record<${context.generateTypeFromRefableSchema(model.additionalProperties, model.scope)}>;`);
|
|
118
120
|
}
|
|
@@ -120,15 +122,17 @@ function generateModel(model, context) {
|
|
|
120
122
|
definitions.push(modelDeclaration.close);
|
|
121
123
|
return definitions.join("\n");
|
|
122
124
|
}
|
|
123
|
-
export function generateModelProperty(prop, containerScope, context) {
|
|
125
|
+
export function generateModelProperty(prop, containerScope, context, isModelReferencedAsMultipartRequestBody, encoding) {
|
|
126
|
+
const propertyType = context.generateTypeFromRefableSchema(prop.schema, containerScope);
|
|
124
127
|
// Decorators will be a combination of top-level (parameters) and
|
|
125
128
|
// schema-level decorators.
|
|
126
|
-
const decorators = generateDecorators([
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
129
|
+
const decorators = generateDecorators([...prop.decorators, ...getDecoratorsForSchema(prop.schema)], isModelReferencedAsMultipartRequestBody
|
|
130
|
+
? SchemaToExpressionGenerator.decoratorNamesToExcludeForParts
|
|
131
|
+
: []).join(" ");
|
|
132
|
+
const isEnumType = isReferencedEnumType(prop.schema, context);
|
|
133
|
+
const isUnionType = isReferencedUnionType(prop.schema, context);
|
|
130
134
|
const doc = prop.doc ? generateDocs(prop.doc) : "";
|
|
131
|
-
return `${doc}${decorators} ${prop.name}${prop.isOptional ? "?" : ""}: ${context.
|
|
135
|
+
return `${doc}${decorators} ${prop.name}${prop.isOptional ? "?" : ""}: ${context.getPartType(propertyType, prop.name, isModelReferencedAsMultipartRequestBody ?? false, encoding, isEnumType, isUnionType)};`;
|
|
132
136
|
}
|
|
133
137
|
export function generateModelExpression(props, containerScope, context) {
|
|
134
138
|
return `{ ${props.map((prop) => generateModelProperty(prop, containerScope, context)).join(" ")} }`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-model.js","sourceRoot":"","sources":["../../../../../../src/cli/actions/convert/generators/generate-model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAYrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,
|
|
1
|
+
{"version":3,"file":"generate-model.js","sourceRoot":"","sources":["../../../../../../src/cli/actions/convert/generators/generate-model.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-operation.d.ts","sourceRoot":"","sources":["../../../../../../src/cli/actions/convert/generators/generate-operation.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iBAAiB,EAGlB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAK9C,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,iBAAiB,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"generate-operation.d.ts","sourceRoot":"","sources":["../../../../../../src/cli/actions/convert/generators/generate-operation.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iBAAiB,EAGlB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAK9C,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,iBAAiB,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CA0BxF"}
|
|
@@ -14,6 +14,9 @@ export function generateOperation(operation, context) {
|
|
|
14
14
|
...generateRequestBodyParameters(operation.requestBodies, context),
|
|
15
15
|
];
|
|
16
16
|
const responses = generateOperationReturnType(operation, context);
|
|
17
|
+
if (operation.fixmes?.length) {
|
|
18
|
+
definitions.push("\n", ...operation.fixmes.map((f) => `// FIXME: ${f}\n`));
|
|
19
|
+
}
|
|
17
20
|
definitions.push(`op ${operation.name}(${parameters.join(", ")}): ${responses};`);
|
|
18
21
|
return definitions.join(" ");
|
|
19
22
|
}
|
|
@@ -39,16 +42,22 @@ function generateRequestBodyParameters(requestBodies, context) {
|
|
|
39
42
|
if (!supportsOnlyJson(contentTypes)) {
|
|
40
43
|
definitions.push(`@header contentType: ${contentTypes.map((c) => `"${c}"`).join(" | ")}`);
|
|
41
44
|
}
|
|
45
|
+
const isMultipart = contentTypes.includes("multipart/form-data");
|
|
42
46
|
// Get the set of referenced types
|
|
43
47
|
const body = Array.from(new Set(requestBodies
|
|
44
48
|
.filter((r) => !!r.schema)
|
|
45
|
-
.map((r) => context.generateTypeFromRefableSchema(r.schema, [])))).join(" | ");
|
|
49
|
+
.map((r) => context.generateTypeFromRefableSchema(r.schema, [], isMultipart, r.encoding)))).join(" | ");
|
|
46
50
|
if (body) {
|
|
47
51
|
let doc = "";
|
|
48
52
|
if (requestBodies[0].doc) {
|
|
49
53
|
doc = generateDocs(requestBodies[0].doc);
|
|
50
54
|
}
|
|
51
|
-
|
|
55
|
+
if (isMultipart) {
|
|
56
|
+
definitions.push(`${doc}@multipartBody body: ${body}`);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
definitions.push(`${doc}@body body: ${body}`);
|
|
60
|
+
}
|
|
52
61
|
}
|
|
53
62
|
return definitions;
|
|
54
63
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-operation.js","sourceRoot":"","sources":["../../../../../../src/cli/actions/convert/generators/generate-operation.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"generate-operation.js","sourceRoot":"","sources":["../../../../../../src/cli/actions/convert/generators/generate-operation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { TypeSpecServer, TypeSpecServiceInfo, TypeSpecTagMetadata } from "../interfaces.js";
|
|
2
|
-
export declare function generateServiceInformation(serviceInfo: TypeSpecServiceInfo, servers?: TypeSpecServer[], tags?: TypeSpecTagMetadata[]): string;
|
|
2
|
+
export declare function generateServiceInformation(serviceInfo: TypeSpecServiceInfo, servers?: TypeSpecServer[], tags?: TypeSpecTagMetadata[], namespaceName?: string): string;
|
|
3
3
|
//# sourceMappingURL=generate-service-info.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-service-info.d.ts","sourceRoot":"","sources":["../../../../../../src/cli/actions/convert/generators/generate-service-info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAO5F,wBAAgB,0BAA0B,CACxC,WAAW,EAAE,mBAAmB,EAChC,OAAO,GAAE,cAAc,EAAO,EAC9B,IAAI,GAAE,mBAAmB,EAAO,
|
|
1
|
+
{"version":3,"file":"generate-service-info.d.ts","sourceRoot":"","sources":["../../../../../../src/cli/actions/convert/generators/generate-service-info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAO5F,wBAAgB,0BAA0B,CACxC,WAAW,EAAE,mBAAmB,EAChC,OAAO,GAAE,cAAc,EAAO,EAC9B,IAAI,GAAE,mBAAmB,EAAO,EAChC,aAAa,CAAC,EAAE,MAAM,GACrB,MAAM,CA6BR"}
|
|
@@ -3,7 +3,7 @@ import { generateNamespaceName } from "../utils/generate-namespace-name.js";
|
|
|
3
3
|
import { toTspValues } from "../utils/tsp-values.js";
|
|
4
4
|
import { generateServers } from "./generate-servers.js";
|
|
5
5
|
import { generateTags } from "./generate-tags.js";
|
|
6
|
-
export function generateServiceInformation(serviceInfo, servers = [], tags = []) {
|
|
6
|
+
export function generateServiceInformation(serviceInfo, servers = [], tags = [], namespaceName) {
|
|
7
7
|
const definitions = [];
|
|
8
8
|
const { name, doc, ...info } = serviceInfo;
|
|
9
9
|
definitions.push(`
|
|
@@ -21,7 +21,9 @@ export function generateServiceInformation(serviceInfo, servers = [], tags = [])
|
|
|
21
21
|
if (tags.length > 0) {
|
|
22
22
|
definitions.push(generateTags(tags));
|
|
23
23
|
}
|
|
24
|
-
|
|
24
|
+
// Use provided namespace name, or fall back to generating from service name
|
|
25
|
+
const namespace = (namespaceName && generateNamespaceName(namespaceName)) || generateNamespaceName(name);
|
|
26
|
+
definitions.push(`namespace ${namespace};`);
|
|
25
27
|
return definitions.join("\n");
|
|
26
28
|
}
|
|
27
29
|
//# sourceMappingURL=generate-service-info.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-service-info.js","sourceRoot":"","sources":["../../../../../../src/cli/actions/convert/generators/generate-service-info.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,UAAU,0BAA0B,CACxC,WAAgC,EAChC,UAA4B,EAAE,EAC9B,OAA8B,EAAE;
|
|
1
|
+
{"version":3,"file":"generate-service-info.js","sourceRoot":"","sources":["../../../../../../src/cli/actions/convert/generators/generate-service-info.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,UAAU,0BAA0B,CACxC,WAAgC,EAChC,UAA4B,EAAE,EAC9B,OAA8B,EAAE,EAChC,aAAsB;IAEtB,MAAM,WAAW,GAAa,EAAE,CAAC;IAEjC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,WAAW,CAAC;IAE3C,WAAW,CAAC,IAAI,CAAC;;gBAEH,IAAI;;YAER,WAAW,CAAC,IAAI,CAAC;KACxB,CAAC,CAAC;IAEL,IAAI,GAAG,EAAE,CAAC;QACR,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,4EAA4E;IAC5E,MAAM,SAAS,GACb,CAAC,aAAa,IAAI,qBAAqB,CAAC,aAAa,CAAC,CAAC,IAAI,qBAAqB,CAAC,IAAI,CAAC,CAAC;IACzF,WAAW,CAAC,IAAI,CAAC,aAAa,SAAS,GAAG,CAAC,CAAC;IAE5C,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { OpenAPI3Schema, Refable } from "../../../../types.js";
|
|
1
|
+
import { OpenAPI3Encoding, OpenAPI3Schema, OpenAPI3SchemaProperty, Refable } from "../../../../types.js";
|
|
2
|
+
import { Context } from "../utils/context.js";
|
|
2
3
|
export declare class SchemaToExpressionGenerator {
|
|
3
4
|
rootNamespace: string;
|
|
4
5
|
constructor(rootNamespace: string);
|
|
5
|
-
generateTypeFromRefableSchema(schema: Refable<OpenAPI3Schema>, callingScope: string[]): string;
|
|
6
|
+
generateTypeFromRefableSchema(schema: Refable<OpenAPI3Schema>, callingScope: string[], isHttpPart?: boolean, encoding?: Record<string, OpenAPI3Encoding>, context?: Context): string;
|
|
6
7
|
generateArrayType(schema: OpenAPI3Schema, callingScope: string[]): string;
|
|
7
8
|
getRefName(ref: string, callingScope: string[]): string;
|
|
8
9
|
private getRefScopeAndName;
|
|
@@ -10,7 +11,16 @@ export declare class SchemaToExpressionGenerator {
|
|
|
10
11
|
private getAllOfType;
|
|
11
12
|
private getAnyOfType;
|
|
12
13
|
private getOneOfType;
|
|
14
|
+
getPartType(propType: string, name: string, isHttpPart: boolean, encoding: Record<string, OpenAPI3Encoding> | undefined, isEnumType: boolean, isUnionType: boolean): string;
|
|
15
|
+
private isInlineUnionType;
|
|
16
|
+
private isScalarType;
|
|
17
|
+
private isDefaultPartType;
|
|
18
|
+
private shouldUpgradeToFileDefinition;
|
|
19
|
+
private readonly numericTypes;
|
|
20
|
+
static readonly decoratorNamesToExcludeForParts: string[];
|
|
13
21
|
private getObjectType;
|
|
14
22
|
}
|
|
23
|
+
export declare function isReferencedEnumType(propSchema: OpenAPI3SchemaProperty, context: Context): boolean;
|
|
24
|
+
export declare function isReferencedUnionType(propSchema: OpenAPI3SchemaProperty, context: Context): boolean;
|
|
15
25
|
export declare function getTypeSpecPrimitiveFromSchema(schema: OpenAPI3Schema): string | undefined;
|
|
16
26
|
//# sourceMappingURL=generate-types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-types.d.ts","sourceRoot":"","sources":["../../../../../../src/cli/actions/convert/generators/generate-types.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"generate-types.d.ts","sourceRoot":"","sources":["../../../../../../src/cli/actions/convert/generators/generate-types.ts"],"names":[],"mappings":"AACA,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,sBAAsB,EACtB,OAAO,EACR,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAQ9C,qBAAa,2BAA2B;IACnB,aAAa,EAAE,MAAM;gBAArB,aAAa,EAAE,MAAM;IAEjC,6BAA6B,CAClC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,EAC/B,YAAY,EAAE,MAAM,EAAE,EACtB,UAAU,UAAQ,EAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAC3C,OAAO,CAAC,EAAE,OAAO,GAChB,MAAM;IAOF,iBAAiB,CAAC,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,MAAM;IAczE,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,MAAM;IAK9D,OAAO,CAAC,kBAAkB;IAoC1B,OAAO,CAAC,iBAAiB;IA2DzB,OAAO,CAAC,YAAY;IAqCpB,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,YAAY;IAUb,WAAW,CAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,OAAO,EACnB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,GAAG,SAAS,EACtD,UAAU,EAAE,OAAO,EACnB,WAAW,EAAE,OAAO,GACnB,MAAM;IAyBT,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,6BAA6B;IAGrC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAkB3B;IAEF,gBAAuB,+BAA+B,EAAE,MAAM,EAAE,CAA4B;IAE5F,OAAO,CAAC,aAAa;CAsDtB;AAED,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,sBAAsB,EAClC,OAAO,EAAE,OAAO,GACf,OAAO,CAeT;AAED,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,sBAAsB,EAClC,OAAO,EAAE,OAAO,GACf,OAAO,CAmBT;AAED,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS,CAazF"}
|
|
@@ -7,11 +7,11 @@ export class SchemaToExpressionGenerator {
|
|
|
7
7
|
constructor(rootNamespace) {
|
|
8
8
|
this.rootNamespace = rootNamespace;
|
|
9
9
|
}
|
|
10
|
-
generateTypeFromRefableSchema(schema, callingScope) {
|
|
10
|
+
generateTypeFromRefableSchema(schema, callingScope, isHttpPart = false, encoding, context) {
|
|
11
11
|
const hasRef = "$ref" in schema;
|
|
12
12
|
return hasRef
|
|
13
13
|
? this.getRefName(schema.$ref, callingScope)
|
|
14
|
-
: this.getTypeFromSchema(schema, callingScope);
|
|
14
|
+
: this.getTypeFromSchema(schema, callingScope, isHttpPart, encoding, context);
|
|
15
15
|
}
|
|
16
16
|
generateArrayType(schema, callingScope) {
|
|
17
17
|
const items = schema.items;
|
|
@@ -58,9 +58,12 @@ export class SchemaToExpressionGenerator {
|
|
|
58
58
|
}
|
|
59
59
|
return scopeAndName;
|
|
60
60
|
}
|
|
61
|
-
getTypeFromSchema(schema, callingScope) {
|
|
61
|
+
getTypeFromSchema(schema, callingScope, isHttpPart = false, encoding, context) {
|
|
62
62
|
let type = "unknown";
|
|
63
|
-
if (schema.
|
|
63
|
+
if (schema.const !== undefined) {
|
|
64
|
+
type = JSON.stringify(schema.const);
|
|
65
|
+
}
|
|
66
|
+
else if (schema.enum) {
|
|
64
67
|
type = getEnum(schema.enum);
|
|
65
68
|
}
|
|
66
69
|
else if (schema.anyOf?.length) {
|
|
@@ -77,6 +80,9 @@ export class SchemaToExpressionGenerator {
|
|
|
77
80
|
else if (schema.type === "boolean") {
|
|
78
81
|
type = "boolean";
|
|
79
82
|
}
|
|
83
|
+
else if (schema.type === "null") {
|
|
84
|
+
type = "null";
|
|
85
|
+
}
|
|
80
86
|
else if (schema.type === "integer") {
|
|
81
87
|
type = getIntegerType(schema);
|
|
82
88
|
}
|
|
@@ -87,7 +93,7 @@ export class SchemaToExpressionGenerator {
|
|
|
87
93
|
schema?.additionalProperties) {
|
|
88
94
|
// we should never test on type object as it's not required
|
|
89
95
|
// but rather on the presence of properties which indicates an object type
|
|
90
|
-
type = this.getObjectType(schema, callingScope);
|
|
96
|
+
type = this.getObjectType(schema, callingScope, isHttpPart, encoding, context);
|
|
91
97
|
}
|
|
92
98
|
else if (schema.oneOf?.length) {
|
|
93
99
|
type = this.getOneOfType(schema, callingScope);
|
|
@@ -97,7 +103,7 @@ export class SchemaToExpressionGenerator {
|
|
|
97
103
|
}
|
|
98
104
|
else if (schema.type === "object") {
|
|
99
105
|
// this is a fallback to maintain compatibility and it needs to be in the last cases
|
|
100
|
-
type = this.getObjectType(schema, callingScope);
|
|
106
|
+
type = this.getObjectType(schema, callingScope, isHttpPart, encoding, context);
|
|
101
107
|
}
|
|
102
108
|
else if (schema.type === "array") {
|
|
103
109
|
// this is a fallback to maintain compatibility and it needs to be in the last cases
|
|
@@ -159,7 +165,65 @@ export class SchemaToExpressionGenerator {
|
|
|
159
165
|
}
|
|
160
166
|
return definitions.join(" | ");
|
|
161
167
|
}
|
|
162
|
-
|
|
168
|
+
getPartType(propType, name, isHttpPart, encoding, isEnumType, isUnionType) {
|
|
169
|
+
if (!isHttpPart) {
|
|
170
|
+
return propType;
|
|
171
|
+
}
|
|
172
|
+
const propTypeWithoutDefault = propType.replace(/ = .*/, "");
|
|
173
|
+
const propTypeWithoutNull = propTypeWithoutDefault.replace(/ \| null/g, "");
|
|
174
|
+
const encodingForProperty = encoding?.[name];
|
|
175
|
+
const filePartType = encodingForProperty?.contentType &&
|
|
176
|
+
this.shouldUpgradeToFileDefinition(propTypeWithoutDefault, encodingForProperty.contentType)
|
|
177
|
+
? `File<"${encodingForProperty.contentType}">`
|
|
178
|
+
: undefined;
|
|
179
|
+
const contentTypeHeader = encodingForProperty?.contentType &&
|
|
180
|
+
!filePartType &&
|
|
181
|
+
!this.isDefaultPartType(propTypeWithoutNull, encodingForProperty.contentType) &&
|
|
182
|
+
!this.isInlineUnionType(propTypeWithoutNull) &&
|
|
183
|
+
!isUnionType &&
|
|
184
|
+
!this.isScalarType(propTypeWithoutNull) &&
|
|
185
|
+
!isEnumType
|
|
186
|
+
? ` & { @header contentType: "${encodingForProperty.contentType}" }`
|
|
187
|
+
: "";
|
|
188
|
+
return `HttpPart<${filePartType ?? propTypeWithoutDefault}${contentTypeHeader}>`;
|
|
189
|
+
}
|
|
190
|
+
isInlineUnionType(partType) {
|
|
191
|
+
return partType.includes("|");
|
|
192
|
+
}
|
|
193
|
+
isScalarType(partType) {
|
|
194
|
+
return (partType === "string" ||
|
|
195
|
+
partType === "boolean" ||
|
|
196
|
+
partType === "null" ||
|
|
197
|
+
this.numericTypes[partType]);
|
|
198
|
+
}
|
|
199
|
+
isDefaultPartType(partType, partMediaType) {
|
|
200
|
+
return (((partType === "string" || this.numericTypes[partType]) && partMediaType === "text/plain") ||
|
|
201
|
+
(partType === "bytes" && partMediaType === "application/octet-stream"));
|
|
202
|
+
}
|
|
203
|
+
shouldUpgradeToFileDefinition(partType, partMediaType) {
|
|
204
|
+
return partType === "bytes" && !this.isDefaultPartType(partType, partMediaType);
|
|
205
|
+
}
|
|
206
|
+
numericTypes = {
|
|
207
|
+
// https://typespec.io/docs/language-basics/built-in-types/
|
|
208
|
+
numeric: true,
|
|
209
|
+
integer: true,
|
|
210
|
+
float: true,
|
|
211
|
+
float32: true,
|
|
212
|
+
float64: true,
|
|
213
|
+
int8: true,
|
|
214
|
+
int16: true,
|
|
215
|
+
int32: true,
|
|
216
|
+
int64: true,
|
|
217
|
+
safeint: true,
|
|
218
|
+
uint8: true,
|
|
219
|
+
uint16: true,
|
|
220
|
+
uint32: true,
|
|
221
|
+
uint64: true,
|
|
222
|
+
decimal: true,
|
|
223
|
+
decimal128: true,
|
|
224
|
+
};
|
|
225
|
+
static decoratorNamesToExcludeForParts = ["minValue", "maxValue"];
|
|
226
|
+
getObjectType(schema, callingScope, isHttpPart = false, encoding, context) {
|
|
163
227
|
// If we have `additionalProperties`, treat that as an 'indexer' and convert to a record.
|
|
164
228
|
const recordType = typeof schema.additionalProperties === "object"
|
|
165
229
|
? `Record<${this.generateTypeFromRefableSchema(schema.additionalProperties, callingScope)}>`
|
|
@@ -169,12 +233,14 @@ export class SchemaToExpressionGenerator {
|
|
|
169
233
|
if (schema.properties) {
|
|
170
234
|
for (const name of Object.keys(schema.properties)) {
|
|
171
235
|
const originalPropSchema = schema.properties[name];
|
|
236
|
+
const isEnumType = !!context && isReferencedEnumType(originalPropSchema, context);
|
|
237
|
+
const isUnionType = !!context && isReferencedUnionType(originalPropSchema, context);
|
|
172
238
|
const propType = this.generateTypeFromRefableSchema(originalPropSchema, callingScope);
|
|
173
|
-
const decorators = generateDecorators(getDecoratorsForSchema(originalPropSchema))
|
|
239
|
+
const decorators = generateDecorators(getDecoratorsForSchema(originalPropSchema), isHttpPart ? SchemaToExpressionGenerator.decoratorNamesToExcludeForParts : [])
|
|
174
240
|
.map((d) => `${d}\n`)
|
|
175
241
|
.join("");
|
|
176
242
|
const isOptional = !requiredProps.includes(name) ? "?" : "";
|
|
177
|
-
props.push(`${decorators}${printIdentifier(name)}${isOptional}: ${propType}`);
|
|
243
|
+
props.push(`${decorators}${printIdentifier(name)}${isOptional}: ${this.getPartType(propType, name, isHttpPart, encoding, isEnumType, isUnionType)}`);
|
|
178
244
|
}
|
|
179
245
|
}
|
|
180
246
|
let objectBody = "unknown";
|
|
@@ -197,10 +263,49 @@ export class SchemaToExpressionGenerator {
|
|
|
197
263
|
return objectBody;
|
|
198
264
|
}
|
|
199
265
|
}
|
|
266
|
+
export function isReferencedEnumType(propSchema, context) {
|
|
267
|
+
let isEnumType = false;
|
|
268
|
+
try {
|
|
269
|
+
isEnumType =
|
|
270
|
+
("$ref" in propSchema && context.getSchemaByRef(propSchema.$ref)?.enum) ||
|
|
271
|
+
("items" in propSchema &&
|
|
272
|
+
propSchema.items &&
|
|
273
|
+
"$ref" in propSchema.items &&
|
|
274
|
+
context.getSchemaByRef(propSchema.items.$ref)?.enum)
|
|
275
|
+
? true
|
|
276
|
+
: false;
|
|
277
|
+
}
|
|
278
|
+
catch {
|
|
279
|
+
// ignore errors - we couldn't resolve the reference - so we assume it's not an enum
|
|
280
|
+
}
|
|
281
|
+
return isEnumType;
|
|
282
|
+
}
|
|
283
|
+
export function isReferencedUnionType(propSchema, context) {
|
|
284
|
+
let isUnionType = false;
|
|
285
|
+
try {
|
|
286
|
+
const resolvedSchema = "$ref" in propSchema ? context.getSchemaByRef(propSchema.$ref) : undefined;
|
|
287
|
+
const resolvedItemsSchema = "items" in propSchema && propSchema.items && "$ref" in propSchema.items
|
|
288
|
+
? context.getSchemaByRef(propSchema.items.$ref)
|
|
289
|
+
: undefined;
|
|
290
|
+
isUnionType =
|
|
291
|
+
(resolvedSchema && (resolvedSchema.oneOf?.length || resolvedSchema.anyOf?.length)) ||
|
|
292
|
+
(resolvedItemsSchema &&
|
|
293
|
+
(resolvedItemsSchema.oneOf?.length || resolvedItemsSchema.anyOf?.length))
|
|
294
|
+
? true
|
|
295
|
+
: false;
|
|
296
|
+
}
|
|
297
|
+
catch {
|
|
298
|
+
// ignore errors - we couldn't resolve the reference - so we assume it's not a union
|
|
299
|
+
}
|
|
300
|
+
return isUnionType;
|
|
301
|
+
}
|
|
200
302
|
export function getTypeSpecPrimitiveFromSchema(schema) {
|
|
201
303
|
if (schema.type === "boolean") {
|
|
202
304
|
return "boolean";
|
|
203
305
|
}
|
|
306
|
+
else if (schema.type === "null") {
|
|
307
|
+
return "null";
|
|
308
|
+
}
|
|
204
309
|
else if (schema.type === "integer") {
|
|
205
310
|
return getIntegerType(schema);
|
|
206
311
|
}
|