@typespec/openapi3 1.6.0-dev.5 → 1.6.0-dev.7
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/convert-file.d.ts.map +1 -1
- package/dist/src/cli/actions/convert/convert-file.js +11 -4
- package/dist/src/cli/actions/convert/convert-file.js.map +1 -1
- package/dist/src/cli/actions/convert/convert.d.ts.map +1 -1
- package/dist/src/cli/actions/convert/convert.js +13 -6
- package/dist/src/cli/actions/convert/convert.js.map +1 -1
- package/dist/src/cli/actions/convert/generators/common.d.ts.map +1 -1
- package/dist/src/cli/actions/convert/generators/common.js +4 -2
- package/dist/src/cli/actions/convert/generators/common.js.map +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 +15 -1
- package/dist/src/cli/actions/convert/generators/generate-decorators.js.map +1 -1
- package/dist/src/cli/actions/convert/utils/context.d.ts +1 -5
- package/dist/src/cli/actions/convert/utils/context.d.ts.map +1 -1
- package/dist/src/cli/actions/convert/utils/context.js +27 -2
- package/dist/src/cli/actions/convert/utils/context.js.map +1 -1
- package/dist/src/cli/actions/convert/utils/docs.js +1 -1
- package/dist/src/cli/actions/convert/utils/docs.js.map +1 -1
- package/package.json +4 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convert-file.d.ts","sourceRoot":"","sources":["../../../../../src/cli/actions/convert/convert-file.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"convert-file.d.ts","sourceRoot":"","sources":["../../../../../src/cli/actions/convert/convert-file.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAK3C,wBAAsB,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,iBAsCtE"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { bundle } from "@scalar/json-magic/bundle";
|
|
2
|
+
import { fetchUrls, parseJson, parseYaml } from "@scalar/json-magic/bundle/plugins/browser";
|
|
3
|
+
import { readFiles } from "@scalar/json-magic/bundle/plugins/node";
|
|
2
4
|
import { formatTypeSpec, resolvePath } from "@typespec/compiler";
|
|
3
5
|
import { handleInternalCompilerError } from "../../utils.js";
|
|
4
6
|
import { generateMain } from "./generators/generate-main.js";
|
|
@@ -7,9 +9,14 @@ import { createContext } from "./utils/context.js";
|
|
|
7
9
|
export async function convertAction(host, args) {
|
|
8
10
|
// attempt to read the file
|
|
9
11
|
const fullPath = resolvePath(process.cwd(), args.path);
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
|
|
12
|
+
const data = (await bundle(fullPath, {
|
|
13
|
+
plugins: [readFiles(), fetchUrls(), parseYaml(), parseJson()],
|
|
14
|
+
treeShake: false,
|
|
15
|
+
}));
|
|
16
|
+
if (!data) {
|
|
17
|
+
throw new Error("Failed to load OpenAPI document");
|
|
18
|
+
}
|
|
19
|
+
const context = createContext(data, console, args.namespace);
|
|
13
20
|
const program = transform(context);
|
|
14
21
|
let mainTsp;
|
|
15
22
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convert-file.js","sourceRoot":"","sources":["../../../../../src/cli/actions/convert/convert-file.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"convert-file.js","sourceRoot":"","sources":["../../../../../src/cli/actions/convert/convert-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,2CAA2C,CAAC;AAC5F,OAAO,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAEnE,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,IAAI,GAAG,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE;QACnC,OAAO,EAAE,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,CAAC;QAC7D,SAAS,EAAE,KAAK;KACjB,CAAC,CAAqB,CAAC;IACxB,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;IACD,MAAM,OAAO,GAAG,aAAa,CAAC,IAAwB,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACjF,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"}
|
|
@@ -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;IAC9B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,gBAAgB,EAC1B,EAAE,mBAAmB,EAAE,SAAS,EAAE,GAAE,8BAAmC,
|
|
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,mBA2BxE"}
|
|
@@ -1,17 +1,24 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { dereference } from "@scalar/openapi-parser";
|
|
2
2
|
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
6
|
export async function convertOpenAPI3Document(document, { disableExternalRefs, namespace } = {}) {
|
|
7
|
-
const
|
|
8
|
-
const bundleOptions = disableExternalRefs
|
|
7
|
+
const dereferenceOptions = disableExternalRefs
|
|
9
8
|
? {
|
|
10
|
-
|
|
9
|
+
onDereference: (data) => {
|
|
10
|
+
if (data.ref.startsWith("#")) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
throw new Error(`External $ref pointers are disabled, but found $ref: ${data.ref}`);
|
|
14
|
+
},
|
|
11
15
|
}
|
|
12
16
|
: {};
|
|
13
|
-
await
|
|
14
|
-
|
|
17
|
+
const { specification } = await dereference(document, dereferenceOptions);
|
|
18
|
+
if (!specification) {
|
|
19
|
+
throw new Error("Failed to dereference OpenAPI document");
|
|
20
|
+
}
|
|
21
|
+
const context = createContext(document, console, namespace);
|
|
15
22
|
const program = transform(context);
|
|
16
23
|
const content = generateMain(program, context);
|
|
17
24
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convert.js","sourceRoot":"","sources":["../../../../../src/cli/actions/convert/convert.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"convert.js","sourceRoot":"","sources":["../../../../../src/cli/actions/convert/convert.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAChE,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,kBAAkB,GAAG,mBAAmB;QAC5C,CAAC,CAAC;YACE,aAAa,EAAE,CAAC,IAAwC,EAAQ,EAAE;gBAChE,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC7B,OAAO;gBACT,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,wDAAwD,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YACtF,CAAC;SACF;QACH,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,WAAW,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;IAC1E,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC5D,CAAC;IACD,MAAM,OAAO,GAAG,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IAC5D,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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../../../src/cli/actions/convert/generators/common.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../../../src/cli/actions/convert/generators/common.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOnD"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
/** Render a TypeSpec string literal. Automatically render a multiline one if needed */
|
|
2
2
|
export function stringLiteral(value) {
|
|
3
3
|
if (value.includes("\n")) {
|
|
4
|
-
|
|
4
|
+
// Escape ${...} in multi-line strings to prevent interpolation
|
|
5
|
+
return `"""\n${value.replaceAll("${", "\\${")}\n"""`;
|
|
5
6
|
}
|
|
6
|
-
|
|
7
|
+
// Escape both quotes and ${...} in single-line strings to prevent interpolation
|
|
8
|
+
return `"${value.replaceAll('"', '\\"').replaceAll("${", "\\${")}"`;
|
|
7
9
|
}
|
|
8
10
|
//# sourceMappingURL=common.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../../../../src/cli/actions/convert/generators/common.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,OAAO,QAAQ,KAAK,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../../../../src/cli/actions/convert/generators/common.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,+DAA+D;QAC/D,OAAO,QAAQ,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC;IACvD,CAAC;IACD,gFAAgF;IAChF,OAAO,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC;AACtE,CAAC"}
|
|
@@ -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;
|
|
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;AAuB9D,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,iBAAiB,EAAE,EAC/B,cAAc,GAAE,MAAM,EAAO,GAC5B,MAAM,EAAE,CAKV"}
|
|
@@ -1,7 +1,21 @@
|
|
|
1
|
+
import { stringLiteral } from "./common.js";
|
|
1
2
|
function generateDecorator({ name, args }) {
|
|
2
3
|
const hasArgs = args.length;
|
|
3
4
|
const stringifiedArguments = hasArgs
|
|
4
|
-
? `(${args
|
|
5
|
+
? `(${args
|
|
6
|
+
.map((a) => {
|
|
7
|
+
if (isTSValue(a)) {
|
|
8
|
+
return a.value;
|
|
9
|
+
}
|
|
10
|
+
else if (typeof a === "string") {
|
|
11
|
+
// Use stringLiteral to properly escape strings including ${...}
|
|
12
|
+
return stringLiteral(a);
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
return JSON.stringify(a);
|
|
16
|
+
}
|
|
17
|
+
})
|
|
18
|
+
.join(", ")})`
|
|
5
19
|
: "";
|
|
6
20
|
return `@${name}${stringifiedArguments}`;
|
|
7
21
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-decorators.js","sourceRoot":"","sources":["../../../../../../src/cli/actions/convert/generators/generate-decorators.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"generate-decorators.js","sourceRoot":"","sources":["../../../../../../src/cli/actions/convert/generators/generate-decorators.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,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;aACL,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACT,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjB,OAAO,CAAC,CAAC,KAAK,CAAC;YACjB,CAAC;iBAAM,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;gBACjC,gEAAgE;gBAChE,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC;YAC1B,CAAC;iBAAM,CAAC;gBACN,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC,GAAG;QAClB,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"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type OpenAPIParser from "@apidevtools/swagger-parser";
|
|
2
1
|
import { OpenAPI3Document, OpenAPI3Encoding, OpenAPI3Schema, Refable } from "../../../../types.js";
|
|
3
2
|
import { Logger } from "../../../types.js";
|
|
4
3
|
export interface Context {
|
|
@@ -28,8 +27,5 @@ export interface Context {
|
|
|
28
27
|
*/
|
|
29
28
|
getPartType(propType: string, name: string, isHttpPart: boolean, encoding: Record<string, OpenAPI3Encoding> | undefined, isEnumType: boolean, isUnionType: boolean): string;
|
|
30
29
|
}
|
|
31
|
-
export
|
|
32
|
-
$refs: OpenAPIParser["$refs"];
|
|
33
|
-
};
|
|
34
|
-
export declare function createContext(parser: Parser, openApi3Doc: OpenAPI3Document, logger?: Logger, namespace?: string): Context;
|
|
30
|
+
export declare function createContext(openApi3Doc: OpenAPI3Document, logger?: Logger, namespace?: string): Context;
|
|
35
31
|
//# sourceMappingURL=context.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../../../src/cli/actions/convert/utils/context.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../../../src/cli/actions/convert/utils/context.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EAEd,OAAO,EACR,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAI3C,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAC;IACvC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,6BAA6B,CAC3B,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,EAC/B,YAAY,EAAE,MAAM,EAAE,EACtB,UAAU,CAAC,EAAE,OAAO,EACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,GAC1C,MAAM,CAAC;IACV,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IACxD,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAAC;IACxD,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC;IAExC;;;OAGG;IACH,uBAAuB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,GAAG,IAAI,CAAC;IAExF;;OAEG;IACH,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,GAAG,SAAS,CAAC;IACtF;;OAEG;IACH,2CAA2C,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAClE;;;OAGG;IACH,WAAW,CACT,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,CAAC;CACX;AAED,wBAAgB,aAAa,CAC3B,WAAW,EAAE,gBAAgB,EAC7B,MAAM,CAAC,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAoGT"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { SchemaToExpressionGenerator } from "../generators/generate-types.js";
|
|
2
2
|
import { generateNamespaceName } from "./generate-namespace-name.js";
|
|
3
|
-
export function createContext(
|
|
3
|
+
export function createContext(openApi3Doc, logger, namespace) {
|
|
4
4
|
const rootNamespace = namespace
|
|
5
5
|
? generateNamespaceName(namespace)
|
|
6
6
|
: generateNamespaceName(openApi3Doc.info.title);
|
|
@@ -27,7 +27,32 @@ export function createContext(parser, openApi3Doc, logger, namespace) {
|
|
|
27
27
|
return this.getByRef(ref);
|
|
28
28
|
},
|
|
29
29
|
getByRef(ref) {
|
|
30
|
-
|
|
30
|
+
const splitRef = ref.split("/");
|
|
31
|
+
const componentKind = splitRef[2]; // #/components/schemas/Pet -> components
|
|
32
|
+
const componentName = splitRef[3]; // #/components/schemas/Pet -> Pet
|
|
33
|
+
switch (componentKind) {
|
|
34
|
+
case "schemas":
|
|
35
|
+
return openApi3Doc.components?.schemas?.[componentName];
|
|
36
|
+
case "responses":
|
|
37
|
+
return openApi3Doc.components?.responses?.[componentName];
|
|
38
|
+
case "parameters":
|
|
39
|
+
return openApi3Doc.components?.parameters?.[componentName];
|
|
40
|
+
case "examples":
|
|
41
|
+
return openApi3Doc.components?.examples?.[componentName];
|
|
42
|
+
case "requestBodies":
|
|
43
|
+
return openApi3Doc.components?.requestBodies?.[componentName];
|
|
44
|
+
case "headers":
|
|
45
|
+
return openApi3Doc.components?.headers?.[componentName];
|
|
46
|
+
case "securitySchemes":
|
|
47
|
+
return openApi3Doc.components?.securitySchemes?.[componentName];
|
|
48
|
+
case "links":
|
|
49
|
+
return openApi3Doc.components?.links?.[componentName];
|
|
50
|
+
case "callbacks":
|
|
51
|
+
return openApi3Doc.components?.callbacks?.[componentName];
|
|
52
|
+
default:
|
|
53
|
+
this.logger.warn(`Unsupported component kind in $ref: ${ref}`);
|
|
54
|
+
return undefined;
|
|
55
|
+
}
|
|
31
56
|
},
|
|
32
57
|
registerMultipartSchema(ref, encoding) {
|
|
33
58
|
multipartSchemas.set(ref, encoding ?? null);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../../../../src/cli/actions/convert/utils/context.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../../../../src/cli/actions/convert/utils/context.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ export function generateDocs(doc) {
|
|
|
6
6
|
if (doc.includes("*/")) {
|
|
7
7
|
return `@doc(${stringLiteral(doc)})`;
|
|
8
8
|
}
|
|
9
|
-
const split = splitNewlines(doc.replaceAll("@", "\\@"));
|
|
9
|
+
const split = splitNewlines(doc.replaceAll("@", "\\@").replaceAll("${", "\\${"));
|
|
10
10
|
if (split.length === 1) {
|
|
11
11
|
return `/** ${split[0]} */`;
|
|
12
12
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docs.js","sourceRoot":"","sources":["../../../../../../src/cli/actions/convert/utils/docs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACpB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,OAAO,QAAQ,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC;IACvC,CAAC;IACD,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"docs.js","sourceRoot":"","sources":["../../../../../../src/cli/actions/convert/utils/docs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACpB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,OAAO,QAAQ,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC;IACvC,CAAC;IACD,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IACjF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;IAC9B,CAAC;IACD,OAAO,UAAU,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;AAC5C,CAAC;AAED,SAAS,aAAa,CAAC,GAAsB;IAC3C,IAAI,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAC1D,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC7C,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAE3C,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,SAAS,CAAC,CAAC;IACrB,CAAC;IAED,OAAO,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,UAAU,CAAC,GAAuB;IACzC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@typespec/openapi3",
|
|
3
|
-
"version": "1.6.0-dev.
|
|
3
|
+
"version": "1.6.0-dev.7",
|
|
4
4
|
"author": "Microsoft Corporation",
|
|
5
5
|
"description": "TypeSpec library for emitting OpenAPI 3.0 and OpenAPI 3.1 from the TypeSpec REST protocol binding and converting OpenAPI3 to TypeSpec",
|
|
6
6
|
"homepage": "https://typespec.io",
|
|
@@ -45,9 +45,10 @@
|
|
|
45
45
|
"!dist/test/**"
|
|
46
46
|
],
|
|
47
47
|
"dependencies": {
|
|
48
|
-
"@
|
|
48
|
+
"@scalar/json-magic": "^0.6.1",
|
|
49
|
+
"@scalar/openapi-parser": "^0.22.3",
|
|
50
|
+
"@scalar/openapi-types": "^0.5.0",
|
|
49
51
|
"@typespec/asset-emitter": "^0.75.0 || >=0.76.0-dev <0.76.0",
|
|
50
|
-
"openapi-types": "~12.1.3",
|
|
51
52
|
"yaml": "~2.8.0"
|
|
52
53
|
},
|
|
53
54
|
"peerDependencies": {
|