@typespec/openapi3 0.58.0-dev.0 → 0.58.0-dev.5
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/README.md +1 -1
- package/cmd/tsp-openapi3.js +9 -0
- package/dist/src/cli/actions/convert/args.d.ts +5 -0
- package/dist/src/cli/actions/convert/args.d.ts.map +1 -0
- package/dist/src/cli/actions/convert/args.js +2 -0
- package/dist/src/cli/actions/convert/args.js.map +1 -0
- package/dist/src/cli/actions/convert/convert-file.d.ts +4 -0
- package/dist/src/cli/actions/convert/convert-file.d.ts.map +1 -0
- package/dist/src/cli/actions/convert/convert-file.js +26 -0
- package/dist/src/cli/actions/convert/convert-file.js.map +1 -0
- package/dist/src/cli/actions/convert/convert.d.ts +3 -0
- package/dist/src/cli/actions/convert/convert.d.ts.map +1 -0
- package/dist/src/cli/actions/convert/convert.js +7 -0
- package/dist/src/cli/actions/convert/convert.js.map +1 -0
- package/dist/src/cli/actions/convert/generators/generate-decorators.d.ts +3 -0
- package/dist/src/cli/actions/convert/generators/generate-decorators.d.ts.map +1 -0
- package/dist/src/cli/actions/convert/generators/generate-decorators.js +10 -0
- package/dist/src/cli/actions/convert/generators/generate-decorators.js.map +1 -0
- package/dist/src/cli/actions/convert/generators/generate-main.d.ts +3 -0
- package/dist/src/cli/actions/convert/generators/generate-main.d.ts.map +1 -0
- package/dist/src/cli/actions/convert/generators/generate-main.js +25 -0
- package/dist/src/cli/actions/convert/generators/generate-main.js.map +1 -0
- package/dist/src/cli/actions/convert/generators/generate-model.d.ts +3 -0
- package/dist/src/cli/actions/convert/generators/generate-model.d.ts.map +1 -0
- package/dist/src/cli/actions/convert/generators/generate-model.js +52 -0
- package/dist/src/cli/actions/convert/generators/generate-model.js.map +1 -0
- package/dist/src/cli/actions/convert/generators/generate-operation.d.ts +3 -0
- package/dist/src/cli/actions/convert/generators/generate-operation.d.ts.map +1 -0
- package/dist/src/cli/actions/convert/generators/generate-operation.js +78 -0
- package/dist/src/cli/actions/convert/generators/generate-operation.js.map +1 -0
- package/dist/src/cli/actions/convert/generators/generate-service-info.d.ts +3 -0
- package/dist/src/cli/actions/convert/generators/generate-service-info.d.ts.map +1 -0
- package/dist/src/cli/actions/convert/generators/generate-service-info.js +20 -0
- package/dist/src/cli/actions/convert/generators/generate-service-info.js.map +1 -0
- package/dist/src/cli/actions/convert/generators/generate-types.d.ts +8 -0
- package/dist/src/cli/actions/convert/generators/generate-types.d.ts.map +1 -0
- package/dist/src/cli/actions/convert/generators/generate-types.js +168 -0
- package/dist/src/cli/actions/convert/generators/generate-types.js.map +1 -0
- package/dist/src/cli/actions/convert/interfaces.d.ts +80 -0
- package/dist/src/cli/actions/convert/interfaces.d.ts.map +1 -0
- package/dist/src/cli/actions/convert/interfaces.js +2 -0
- package/dist/src/cli/actions/convert/interfaces.js.map +1 -0
- package/dist/src/cli/actions/convert/transforms/transform-component-parameters.d.ts +12 -0
- package/dist/src/cli/actions/convert/transforms/transform-component-parameters.d.ts.map +1 -0
- package/dist/src/cli/actions/convert/transforms/transform-component-parameters.js +48 -0
- package/dist/src/cli/actions/convert/transforms/transform-component-parameters.js.map +1 -0
- package/dist/src/cli/actions/convert/transforms/transform-component-schemas.d.ts +11 -0
- package/dist/src/cli/actions/convert/transforms/transform-component-schemas.d.ts.map +1 -0
- package/dist/src/cli/actions/convert/transforms/transform-component-schemas.js +76 -0
- package/dist/src/cli/actions/convert/transforms/transform-component-schemas.js.map +1 -0
- package/dist/src/cli/actions/convert/transforms/transform-operation-responses.d.ts +11 -0
- package/dist/src/cli/actions/convert/transforms/transform-operation-responses.d.ts.map +1 -0
- package/dist/src/cli/actions/convert/transforms/transform-operation-responses.js +190 -0
- package/dist/src/cli/actions/convert/transforms/transform-operation-responses.js.map +1 -0
- package/dist/src/cli/actions/convert/transforms/transform-paths.d.ts +9 -0
- package/dist/src/cli/actions/convert/transforms/transform-paths.d.ts.map +1 -0
- package/dist/src/cli/actions/convert/transforms/transform-paths.js +65 -0
- package/dist/src/cli/actions/convert/transforms/transform-paths.js.map +1 -0
- package/dist/src/cli/actions/convert/transforms/transform-service-info.d.ts +4 -0
- package/dist/src/cli/actions/convert/transforms/transform-service-info.d.ts.map +1 -0
- package/dist/src/cli/actions/convert/transforms/transform-service-info.js +12 -0
- package/dist/src/cli/actions/convert/transforms/transform-service-info.js.map +1 -0
- package/dist/src/cli/actions/convert/transforms/transforms.d.ts +4 -0
- package/dist/src/cli/actions/convert/transforms/transforms.d.ts.map +1 -0
- package/dist/src/cli/actions/convert/transforms/transforms.js +26 -0
- package/dist/src/cli/actions/convert/transforms/transforms.js.map +1 -0
- package/dist/src/cli/actions/convert/utils/convert-header-name.d.ts +2 -0
- package/dist/src/cli/actions/convert/utils/convert-header-name.d.ts.map +1 -0
- package/dist/src/cli/actions/convert/utils/convert-header-name.js +7 -0
- package/dist/src/cli/actions/convert/utils/convert-header-name.js.map +1 -0
- package/dist/src/cli/actions/convert/utils/decorators.d.ts +6 -0
- package/dist/src/cli/actions/convert/utils/decorators.d.ts.map +1 -0
- package/dist/src/cli/actions/convert/utils/decorators.js +162 -0
- package/dist/src/cli/actions/convert/utils/decorators.js.map +1 -0
- package/dist/src/cli/actions/convert/utils/docs.d.ts +3 -0
- package/dist/src/cli/actions/convert/utils/docs.d.ts.map +1 -0
- package/dist/src/cli/actions/convert/utils/docs.js +58 -0
- package/dist/src/cli/actions/convert/utils/docs.js.map +1 -0
- package/dist/src/cli/actions/convert/utils/supported-http-methods.d.ts +3 -0
- package/dist/src/cli/actions/convert/utils/supported-http-methods.d.ts.map +1 -0
- package/dist/src/cli/actions/convert/utils/supported-http-methods.js +9 -0
- package/dist/src/cli/actions/convert/utils/supported-http-methods.js.map +1 -0
- package/dist/src/cli/cli.d.ts +2 -0
- package/dist/src/cli/cli.d.ts.map +1 -0
- package/dist/src/cli/cli.js +66 -0
- package/dist/src/cli/cli.js.map +1 -0
- package/dist/src/cli/types.d.ts +45 -0
- package/dist/src/cli/types.d.ts.map +1 -0
- package/dist/src/cli/types.js +2 -0
- package/dist/src/cli/types.js.map +1 -0
- package/dist/src/cli/utils.d.ts +16 -0
- package/dist/src/cli/utils.d.ts.map +1 -0
- package/dist/src/cli/utils.js +43 -0
- package/dist/src/cli/utils.js.map +1 -0
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/lib.d.ts.map +1 -1
- package/dist/src/openapi.js +9 -2
- package/dist/src/openapi.js.map +1 -1
- package/dist/src/types.d.ts +6 -1
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/version.d.ts +2 -0
- package/dist/src/version.d.ts.map +1 -0
- package/dist/src/version.js +12 -0
- package/dist/src/version.js.map +1 -0
- package/dist/version.js +1 -0
- package/package.json +15 -7
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
const validLocations = ["header", "query", "path"];
|
|
2
|
+
const extensionDecoratorName = "extension";
|
|
3
|
+
export function getExtensions(element) {
|
|
4
|
+
const decorators = [];
|
|
5
|
+
for (const key of Object.keys(element)) {
|
|
6
|
+
if (isExtensionKey(key)) {
|
|
7
|
+
decorators.push({
|
|
8
|
+
name: extensionDecoratorName,
|
|
9
|
+
args: [key, element[key]],
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
return decorators;
|
|
14
|
+
}
|
|
15
|
+
function isExtensionKey(key) {
|
|
16
|
+
return key.startsWith("x-");
|
|
17
|
+
}
|
|
18
|
+
export function getParameterDecorators(parameter) {
|
|
19
|
+
const decorators = [];
|
|
20
|
+
decorators.push(...getExtensions(parameter));
|
|
21
|
+
decorators.push(...getDecoratorsForSchema(parameter.schema));
|
|
22
|
+
const locationDecorator = getLocationDecorator(parameter);
|
|
23
|
+
if (locationDecorator)
|
|
24
|
+
decorators.push(locationDecorator);
|
|
25
|
+
return decorators;
|
|
26
|
+
}
|
|
27
|
+
function getLocationDecorator(parameter) {
|
|
28
|
+
if (!validLocations.includes(parameter.in))
|
|
29
|
+
return;
|
|
30
|
+
const decorator = {
|
|
31
|
+
name: parameter.in,
|
|
32
|
+
args: [],
|
|
33
|
+
};
|
|
34
|
+
let format;
|
|
35
|
+
switch (parameter.in) {
|
|
36
|
+
case "header":
|
|
37
|
+
format = getHeaderFormat(parameter.style);
|
|
38
|
+
break;
|
|
39
|
+
case "query":
|
|
40
|
+
format = getQueryFormat(parameter.explode, parameter.style);
|
|
41
|
+
break;
|
|
42
|
+
}
|
|
43
|
+
if (format) {
|
|
44
|
+
decorator.args.push({ format });
|
|
45
|
+
}
|
|
46
|
+
return decorator;
|
|
47
|
+
}
|
|
48
|
+
function getQueryFormat(explode, style) {
|
|
49
|
+
if (explode) {
|
|
50
|
+
return "form";
|
|
51
|
+
}
|
|
52
|
+
else if (style === "form") {
|
|
53
|
+
return "simple";
|
|
54
|
+
}
|
|
55
|
+
else if (style === "spaceDelimited") {
|
|
56
|
+
return "ssv";
|
|
57
|
+
}
|
|
58
|
+
else if (style === "pipeDelimited") {
|
|
59
|
+
return "pipes";
|
|
60
|
+
}
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
function getHeaderFormat(style) {
|
|
64
|
+
return style === "simple" ? "simple" : undefined;
|
|
65
|
+
}
|
|
66
|
+
export function getDecoratorsForSchema(schema) {
|
|
67
|
+
const decorators = [];
|
|
68
|
+
if ("$ref" in schema) {
|
|
69
|
+
return decorators;
|
|
70
|
+
}
|
|
71
|
+
decorators.push(...getExtensions(schema));
|
|
72
|
+
switch (schema.type) {
|
|
73
|
+
case "array":
|
|
74
|
+
decorators.push(...getArraySchemaDecorators(schema));
|
|
75
|
+
break;
|
|
76
|
+
case "object":
|
|
77
|
+
decorators.push(...getObjectSchemaDecorators(schema));
|
|
78
|
+
break;
|
|
79
|
+
case "integer":
|
|
80
|
+
case "number":
|
|
81
|
+
decorators.push(...getNumberSchemaDecorators(schema));
|
|
82
|
+
break;
|
|
83
|
+
case "string":
|
|
84
|
+
decorators.push(...getStringSchemaDecorators(schema));
|
|
85
|
+
break;
|
|
86
|
+
default:
|
|
87
|
+
break;
|
|
88
|
+
}
|
|
89
|
+
if (schema.oneOf) {
|
|
90
|
+
decorators.push(...getOneOfSchemaDecorators(schema));
|
|
91
|
+
}
|
|
92
|
+
return decorators;
|
|
93
|
+
}
|
|
94
|
+
function getOneOfSchemaDecorators(schema) {
|
|
95
|
+
return [{ name: "oneOf", args: [] }];
|
|
96
|
+
}
|
|
97
|
+
function getArraySchemaDecorators(schema) {
|
|
98
|
+
const decorators = [];
|
|
99
|
+
if (typeof schema.minItems === "number") {
|
|
100
|
+
decorators.push({ name: "minItems", args: [schema.minItems] });
|
|
101
|
+
}
|
|
102
|
+
if (typeof schema.maxItems === "number") {
|
|
103
|
+
decorators.push({ name: "maxItems", args: [schema.maxItems] });
|
|
104
|
+
}
|
|
105
|
+
return decorators;
|
|
106
|
+
}
|
|
107
|
+
function getObjectSchemaDecorators(schema) {
|
|
108
|
+
const decorators = [];
|
|
109
|
+
if (schema.discriminator) {
|
|
110
|
+
decorators.push({ name: "discriminator", args: [schema.discriminator.propertyName] });
|
|
111
|
+
}
|
|
112
|
+
return decorators;
|
|
113
|
+
}
|
|
114
|
+
function getNumberSchemaDecorators(schema) {
|
|
115
|
+
const decorators = [];
|
|
116
|
+
if (typeof schema.minimum === "number") {
|
|
117
|
+
if (schema.exclusiveMinimum) {
|
|
118
|
+
decorators.push({ name: "minValueExclusive", args: [schema.minimum] });
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
decorators.push({ name: "minValue", args: [schema.minimum] });
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
if (typeof schema.maximum === "number") {
|
|
125
|
+
if (schema.exclusiveMaximum) {
|
|
126
|
+
decorators.push({ name: "maxValueExclusive", args: [schema.maximum] });
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
decorators.push({ name: "maxValue", args: [schema.maximum] });
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
return decorators;
|
|
133
|
+
}
|
|
134
|
+
const knownStringFormats = new Set([
|
|
135
|
+
"binary",
|
|
136
|
+
"byte",
|
|
137
|
+
"date",
|
|
138
|
+
"date-time",
|
|
139
|
+
"time",
|
|
140
|
+
"duration",
|
|
141
|
+
"uri",
|
|
142
|
+
]);
|
|
143
|
+
function getStringSchemaDecorators(schema) {
|
|
144
|
+
const decorators = [];
|
|
145
|
+
if (typeof schema.minLength === "number") {
|
|
146
|
+
decorators.push({ name: "minLength", args: [schema.minLength] });
|
|
147
|
+
}
|
|
148
|
+
if (typeof schema.maxLength === "number") {
|
|
149
|
+
decorators.push({ name: "maxLength", args: [schema.maxLength] });
|
|
150
|
+
}
|
|
151
|
+
if (typeof schema.pattern === "string") {
|
|
152
|
+
decorators.push({ name: "pattern", args: [escapeRegex(schema.pattern)] });
|
|
153
|
+
}
|
|
154
|
+
if (typeof schema.format === "string" && !knownStringFormats.has(schema.format)) {
|
|
155
|
+
decorators.push({ name: "format", args: [schema.format] });
|
|
156
|
+
}
|
|
157
|
+
return decorators;
|
|
158
|
+
}
|
|
159
|
+
function escapeRegex(str) {
|
|
160
|
+
return str.replace(/\\/g, "\\\\");
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=decorators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../../../../../src/cli/actions/convert/utils/decorators.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../../../../../src/cli/actions/convert/utils/docs.ts"],"names":[],"mappings":"AAAA,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,CAiB3D;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,CAOlE"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
export function generateDocs(doc) {
|
|
2
|
+
if (isEmptyDoc(doc)) {
|
|
3
|
+
return ``;
|
|
4
|
+
}
|
|
5
|
+
const wrapped = lineWrap(doc);
|
|
6
|
+
for (let i = 0; i < wrapped.length; i++) {
|
|
7
|
+
if (wrapped[i].includes("@") || wrapped[i].includes("*/")) {
|
|
8
|
+
if (wrapped.length === 1) {
|
|
9
|
+
return `@doc("${wrapped[0].replace(/\\/g, "\\\\").replace(/"/g, '\\"')}")`;
|
|
10
|
+
}
|
|
11
|
+
return `@doc("""\n${wrapped.join("\n").replace(/\\/g, "\\\\").replace(/"/g, '\\"')}\n""")`;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
return `/**\n* ${wrapped.join("\n* ")}\n*/`;
|
|
15
|
+
}
|
|
16
|
+
export function generateDocsContent(doc) {
|
|
17
|
+
if (isEmptyDoc(doc)) {
|
|
18
|
+
return ``;
|
|
19
|
+
}
|
|
20
|
+
const wrapped = lineWrap(doc);
|
|
21
|
+
return wrapped.length === 1 ? `${wrapped[0]}` : `""\n${wrapped.join("\n")}\n""`;
|
|
22
|
+
}
|
|
23
|
+
function lineWrap(doc) {
|
|
24
|
+
const maxLength = 80;
|
|
25
|
+
let docString = Array.isArray(doc) ? doc.join("\n") : doc;
|
|
26
|
+
docString = docString.replace(/\r\n/g, "\n");
|
|
27
|
+
docString = docString.replace(/\r/g, "\n");
|
|
28
|
+
if (docString.length <= maxLength && !docString.includes("\n")) {
|
|
29
|
+
return [docString];
|
|
30
|
+
}
|
|
31
|
+
const oriLines = docString.split("\n");
|
|
32
|
+
const lines = [];
|
|
33
|
+
for (const oriLine of oriLines) {
|
|
34
|
+
const words = oriLine.split(" ");
|
|
35
|
+
let line = ``;
|
|
36
|
+
for (const word of words) {
|
|
37
|
+
if (word.length + 1 > maxLength - line.length) {
|
|
38
|
+
lines.push(line.substring(0, line.length - 1));
|
|
39
|
+
line = `${word} `;
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
line = `${line}${word} `;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
lines.push(`${line.substring(0, line.length - 1)}`);
|
|
46
|
+
}
|
|
47
|
+
return lines;
|
|
48
|
+
}
|
|
49
|
+
function isEmptyDoc(doc) {
|
|
50
|
+
if (!doc) {
|
|
51
|
+
return true;
|
|
52
|
+
}
|
|
53
|
+
if (Array.isArray(doc) && !doc.length) {
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=docs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs.js","sourceRoot":"","sources":["../../../../../../src/cli/actions/convert/utils/docs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"supported-http-methods.d.ts","sourceRoot":"","sources":["../../../../../../src/cli/actions/convert/utils/supported-http-methods.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,eAAO,MAAM,oBAAoB,eAO/B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"supported-http-methods.js","sourceRoot":"","sources":["../../../../../../src/cli/actions/convert/utils/supported-http-methods.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAW;IACpD,QAAQ;IACR,KAAK;IACL,MAAM;IACN,OAAO;IACP,MAAM;IACN,KAAK;CACN,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../../src/cli/cli.ts"],"names":[],"mappings":"AAKA,wBAAsB,IAAI,kBAKzB"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { parseArgs } from "util";
|
|
2
|
+
import { convertAction } from "./actions/convert/convert-file.js";
|
|
3
|
+
import { createCliHost } from "./utils.js";
|
|
4
|
+
export async function main() {
|
|
5
|
+
const cliArgs = parseCliArgs();
|
|
6
|
+
const host = createCliHost();
|
|
7
|
+
return convertAction(host, cliArgs);
|
|
8
|
+
}
|
|
9
|
+
const cliUsage = `tsp-openapi3 <path/to/openapi3/file> --output-dir <path/to/output/directory>`;
|
|
10
|
+
function parseCliArgs() {
|
|
11
|
+
const options = parseArgs({
|
|
12
|
+
args: process.argv.slice(2),
|
|
13
|
+
options: {
|
|
14
|
+
help: {
|
|
15
|
+
type: "boolean",
|
|
16
|
+
},
|
|
17
|
+
"output-dir": {
|
|
18
|
+
type: "string",
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
allowPositionals: true,
|
|
22
|
+
});
|
|
23
|
+
// Show help first
|
|
24
|
+
if (options.values.help) {
|
|
25
|
+
displayHelp();
|
|
26
|
+
process.exit(0);
|
|
27
|
+
}
|
|
28
|
+
const diagnostics = [];
|
|
29
|
+
if (!options.values["output-dir"]) {
|
|
30
|
+
diagnostics.push("Missing required argument: --output-dir");
|
|
31
|
+
}
|
|
32
|
+
if (!options.positionals.length) {
|
|
33
|
+
diagnostics.push("Missing required positional argument: <path>");
|
|
34
|
+
}
|
|
35
|
+
else if (options.positionals.length !== 1) {
|
|
36
|
+
diagnostics.push(`Incorrect number of positional arguments provided for path: got ${options.positionals.length}, need 1`);
|
|
37
|
+
}
|
|
38
|
+
if (diagnostics.length > 0) {
|
|
39
|
+
// eslint-disable-next-line no-console
|
|
40
|
+
console.log(cliUsage);
|
|
41
|
+
// eslint-disable-next-line no-console
|
|
42
|
+
console.log(`\n${diagnostics.join("\n")}`);
|
|
43
|
+
process.exit(1);
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
"output-dir": options.values["output-dir"],
|
|
47
|
+
path: options.positionals[0],
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
function displayHelp() {
|
|
51
|
+
// eslint-disable-next-line no-console
|
|
52
|
+
const log = console.log;
|
|
53
|
+
log(cliUsage);
|
|
54
|
+
log(`\nConvert OpenAPI3 to TypeSpec`);
|
|
55
|
+
log(`\nPositionals:`);
|
|
56
|
+
log(padArgumentUsage("path", "The path to the OpenAPI3 file in JSON or YAML format.", "[string] [required]"));
|
|
57
|
+
log(`\nOptions:`);
|
|
58
|
+
log(padArgumentUsage("--help", "Show help.", "[boolean]"));
|
|
59
|
+
log(padArgumentUsage("--output-dir", "The output directory for generated TypeSpec files. Will be created if it does not exist.", "[string] [required]"));
|
|
60
|
+
}
|
|
61
|
+
function padArgumentUsage(name, description, type) {
|
|
62
|
+
// Assume 80 col width
|
|
63
|
+
// 14 for name, 20 for type, leaves 40 (with spacing) for description
|
|
64
|
+
return ` ${name.padEnd(14)} ${description.padEnd(40)} ${type.padStart(20)}`;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../src/cli/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { SourceFile } from "@typespec/compiler";
|
|
2
|
+
export interface CliHost {
|
|
3
|
+
logger: Logger;
|
|
4
|
+
/** read a file at the given url. */
|
|
5
|
+
readUrl(url: string): Promise<SourceFile>;
|
|
6
|
+
/**
|
|
7
|
+
* Write the file.
|
|
8
|
+
* @param path Path to the file.
|
|
9
|
+
* @param content Content of the file.
|
|
10
|
+
*/
|
|
11
|
+
writeFile(path: string, content: string): Promise<void>;
|
|
12
|
+
/**
|
|
13
|
+
* Read directory.
|
|
14
|
+
* @param path Path to the directory.
|
|
15
|
+
* @returns list of file/directory in the given directory. Returns the name not the full path.
|
|
16
|
+
*/
|
|
17
|
+
readDir(path: string): Promise<string[]>;
|
|
18
|
+
/**
|
|
19
|
+
* Deletes a directory or file.
|
|
20
|
+
* @param path Path to the directory or file.
|
|
21
|
+
*/
|
|
22
|
+
rm(path: string, options?: RmOptions): Promise<void>;
|
|
23
|
+
/**
|
|
24
|
+
* create directory recursively.
|
|
25
|
+
* @param path Path to the directory.
|
|
26
|
+
*/
|
|
27
|
+
mkdirp(path: string): Promise<string | undefined>;
|
|
28
|
+
}
|
|
29
|
+
export interface RmOptions {
|
|
30
|
+
/**
|
|
31
|
+
* If `true`, perform a recursive directory removal. In
|
|
32
|
+
* recursive mode, errors are not reported if `path` does not exist, and
|
|
33
|
+
* operations are retried on failure.
|
|
34
|
+
* @default false
|
|
35
|
+
*/
|
|
36
|
+
recursive?: boolean;
|
|
37
|
+
}
|
|
38
|
+
export interface Logger {
|
|
39
|
+
trace(message: string): void;
|
|
40
|
+
warn(message: string): void;
|
|
41
|
+
error(message: string): void;
|
|
42
|
+
}
|
|
43
|
+
export interface CliHostArgs {
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/cli/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,CAAC;IAEf,oCAAoC;IACpC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAC1C;;;;OAIG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExD;;;;OAIG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAEzC;;;OAGG;IACH,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD;;;OAGG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;CACnD;AAED,MAAM,WAAW,SAAS;IACxB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,WAAW;CAAG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/cli/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { CliHost, CliHostArgs, Logger } from "./types.js";
|
|
2
|
+
export declare function withCliHost<T extends CliHostArgs>(fn: (host: CliHost, args: T) => void | Promise<void>): (args: T) => void | Promise<void>;
|
|
3
|
+
export declare function createCliHost(): CliHost;
|
|
4
|
+
export declare function createConsoleLogger(): Logger;
|
|
5
|
+
/**
|
|
6
|
+
* Handle an internal compiler error.
|
|
7
|
+
*
|
|
8
|
+
* NOTE: An expected error, like one thrown for bad input, shouldn't reach
|
|
9
|
+
* here, but be handled somewhere else. If we reach here, it should be
|
|
10
|
+
* considered a bug and therefore we should not suppress the stack trace as
|
|
11
|
+
* that risks losing it in the case of a bug that does not repro easily.
|
|
12
|
+
*
|
|
13
|
+
* @param error error thrown
|
|
14
|
+
*/
|
|
15
|
+
export declare function handleInternalCompilerError(error: unknown): never;
|
|
16
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/cli/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAE1D,wBAAgB,WAAW,CAAC,CAAC,SAAS,WAAW,EAC/C,EAAE,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GACnD,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAKnC;AAED,wBAAgB,aAAa,IAAI,OAAO,CAMvC;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CAQ5C;AAED;;;;;;;;;GASG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,CASjE"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { NodeHost } from "@typespec/compiler";
|
|
2
|
+
export function withCliHost(fn) {
|
|
3
|
+
return (args) => {
|
|
4
|
+
const host = createCliHost();
|
|
5
|
+
return fn(host, args);
|
|
6
|
+
};
|
|
7
|
+
}
|
|
8
|
+
export function createCliHost() {
|
|
9
|
+
const logger = createConsoleLogger();
|
|
10
|
+
return {
|
|
11
|
+
...NodeHost,
|
|
12
|
+
logger,
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
export function createConsoleLogger() {
|
|
16
|
+
// eslint-disable-next-line no-console
|
|
17
|
+
const log = console.log;
|
|
18
|
+
return {
|
|
19
|
+
trace: (message) => log({ level: "trace", message }),
|
|
20
|
+
warn: (message) => log({ level: "warning", message }),
|
|
21
|
+
error: (message) => log({ level: "error", message }),
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Handle an internal compiler error.
|
|
26
|
+
*
|
|
27
|
+
* NOTE: An expected error, like one thrown for bad input, shouldn't reach
|
|
28
|
+
* here, but be handled somewhere else. If we reach here, it should be
|
|
29
|
+
* considered a bug and therefore we should not suppress the stack trace as
|
|
30
|
+
* that risks losing it in the case of a bug that does not repro easily.
|
|
31
|
+
*
|
|
32
|
+
* @param error error thrown
|
|
33
|
+
*/
|
|
34
|
+
export function handleInternalCompilerError(error) {
|
|
35
|
+
/* eslint-disable no-console */
|
|
36
|
+
console.error("Internal compiler error!");
|
|
37
|
+
console.error("File issue at https://github.com/microsoft/typespec");
|
|
38
|
+
console.error();
|
|
39
|
+
console.error(error);
|
|
40
|
+
/* eslint-enable no-console */
|
|
41
|
+
process.exit(1);
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/cli/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAG9C,MAAM,UAAU,WAAW,CACzB,EAAoD;IAEpD,OAAO,CAAC,IAAO,EAAE,EAAE;QACjB,MAAM,IAAI,GAAG,aAAa,EAAE,CAAC;QAC7B,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACxB,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,MAAM,MAAM,GAAG,mBAAmB,EAAE,CAAC;IACrC,OAAO;QACL,GAAG,QAAQ;QACX,MAAM;KACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,sCAAsC;IACtC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IACxB,OAAO;QACL,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;QACpD,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;QACrD,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;KACrD,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,2BAA2B,CAAC,KAAc;IACxD,+BAA+B;IAC/B,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC1C,OAAO,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACrE,OAAO,CAAC,KAAK,EAAE,CAAC;IAChB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrB,8BAA8B;IAE9B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
|
package/dist/src/index.d.ts
CHANGED
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,qBAAqB,CAAC;AAE5C,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAChC,cAAc,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,qBAAqB,CAAC;AAE5C,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAChC,cAAc,cAAc,CAAC"}
|
package/dist/src/index.js
CHANGED
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,SAAS,GAAG,kBAAkB,CAAC;AAE5C,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAChC,cAAc,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,SAAS,GAAG,kBAAkB,CAAC;AAE5C,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAChC,cAAc,cAAc,CAAC"}
|
package/dist/src/lib.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../../src/lib.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,cAAc,EAAgB,MAAM,oBAAoB,CAAC;AAEzF,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;AACvC,MAAM,WAAW,sBAAsB;IACrC;;;OAGG;IAEH,WAAW,CAAC,EAAE,QAAQ,CAAC;IAEvB;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3B;;;OAGG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;IAEnC;;;;OAIG;IACH,yBAAyB,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC;IAEpD;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC;CAC7C;AAgFD,eAAO,MAAM,MAAM
|
|
1
|
+
{"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../../src/lib.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,cAAc,EAAgB,MAAM,oBAAoB,CAAC;AAEzF,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;AACvC,MAAM,WAAW,sBAAsB;IACrC;;;OAGG;IAEH,WAAW,CAAC,EAAE,QAAQ,CAAC;IAEvB;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3B;;;OAGG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;IAEnC;;;;OAIG;IACH,yBAAyB,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC;IAEpD;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC;CAC7C;AAgFD,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BAqHkB,cAAc,CAAC,sBAAsB,CAAC;;CAEjE,CAAC;AAEX,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCAAgC,CAAC;AAClD,eAAO,MAAQ,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sDAAE,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAAE,iBAAiB,0BAAS,CAAC;AAE9E,MAAM,MAAM,cAAc,GAAG,OAAO,IAAI,CAAC"}
|
package/dist/src/openapi.js
CHANGED
|
@@ -142,11 +142,11 @@ function createOAPIEmitter(context, options) {
|
|
|
142
142
|
canShareProperty: (p) => isReadonlyProperty(program, p),
|
|
143
143
|
});
|
|
144
144
|
visibilityUsage = resolveVisibilityUsage(program, metadataInfo, service.type, options.omitUnreachableTypes);
|
|
145
|
-
schemaEmitter =
|
|
145
|
+
schemaEmitter = createAssetEmitter(program, class extends OpenAPI3SchemaEmitter {
|
|
146
146
|
constructor(emitter) {
|
|
147
147
|
super(emitter, metadataInfo, visibilityUsage, options);
|
|
148
148
|
}
|
|
149
|
-
});
|
|
149
|
+
}, context);
|
|
150
150
|
const securitySchemes = getOpenAPISecuritySchemes(allHttpAuthentications);
|
|
151
151
|
const security = getOpenAPISecurity(defaultAuth);
|
|
152
152
|
const info = resolveInfo(program, service.type);
|
|
@@ -1362,6 +1362,13 @@ function createOAPIEmitter(context, options) {
|
|
|
1362
1362
|
}
|
|
1363
1363
|
}
|
|
1364
1364
|
function getOpenAPI3Scheme(auth) {
|
|
1365
|
+
const scheme = getOpenAPI3SchemeInternal(auth);
|
|
1366
|
+
if (scheme) {
|
|
1367
|
+
attachExtensions(program, auth.model, scheme);
|
|
1368
|
+
}
|
|
1369
|
+
return scheme;
|
|
1370
|
+
}
|
|
1371
|
+
function getOpenAPI3SchemeInternal(auth) {
|
|
1365
1372
|
switch (auth.type) {
|
|
1366
1373
|
case "http":
|
|
1367
1374
|
return { type: "http", scheme: auth.scheme, description: auth.description };
|