@typespec/openapi3 0.58.0-dev.1 → 0.58.0-dev.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/README.md +1 -1
  2. package/cmd/tsp-openapi3.js +9 -0
  3. package/dist/src/cli/actions/convert/args.d.ts +5 -0
  4. package/dist/src/cli/actions/convert/args.d.ts.map +1 -0
  5. package/dist/src/cli/actions/convert/args.js +2 -0
  6. package/dist/src/cli/actions/convert/args.js.map +1 -0
  7. package/dist/src/cli/actions/convert/convert-file.d.ts +4 -0
  8. package/dist/src/cli/actions/convert/convert-file.d.ts.map +1 -0
  9. package/dist/src/cli/actions/convert/convert-file.js +40 -0
  10. package/dist/src/cli/actions/convert/convert-file.js.map +1 -0
  11. package/dist/src/cli/actions/convert/convert.d.ts +3 -0
  12. package/dist/src/cli/actions/convert/convert.d.ts.map +1 -0
  13. package/dist/src/cli/actions/convert/convert.js +17 -0
  14. package/dist/src/cli/actions/convert/convert.js.map +1 -0
  15. package/dist/src/cli/actions/convert/generators/generate-decorators.d.ts +3 -0
  16. package/dist/src/cli/actions/convert/generators/generate-decorators.d.ts.map +1 -0
  17. package/dist/src/cli/actions/convert/generators/generate-decorators.js +10 -0
  18. package/dist/src/cli/actions/convert/generators/generate-decorators.js.map +1 -0
  19. package/dist/src/cli/actions/convert/generators/generate-main.d.ts +3 -0
  20. package/dist/src/cli/actions/convert/generators/generate-main.d.ts.map +1 -0
  21. package/dist/src/cli/actions/convert/generators/generate-main.js +20 -0
  22. package/dist/src/cli/actions/convert/generators/generate-main.js.map +1 -0
  23. package/dist/src/cli/actions/convert/generators/generate-model.d.ts +3 -0
  24. package/dist/src/cli/actions/convert/generators/generate-model.d.ts.map +1 -0
  25. package/dist/src/cli/actions/convert/generators/generate-model.js +52 -0
  26. package/dist/src/cli/actions/convert/generators/generate-model.js.map +1 -0
  27. package/dist/src/cli/actions/convert/generators/generate-operation.d.ts +3 -0
  28. package/dist/src/cli/actions/convert/generators/generate-operation.d.ts.map +1 -0
  29. package/dist/src/cli/actions/convert/generators/generate-operation.js +78 -0
  30. package/dist/src/cli/actions/convert/generators/generate-operation.js.map +1 -0
  31. package/dist/src/cli/actions/convert/generators/generate-service-info.d.ts +3 -0
  32. package/dist/src/cli/actions/convert/generators/generate-service-info.d.ts.map +1 -0
  33. package/dist/src/cli/actions/convert/generators/generate-service-info.js +20 -0
  34. package/dist/src/cli/actions/convert/generators/generate-service-info.js.map +1 -0
  35. package/dist/src/cli/actions/convert/generators/generate-types.d.ts +8 -0
  36. package/dist/src/cli/actions/convert/generators/generate-types.d.ts.map +1 -0
  37. package/dist/src/cli/actions/convert/generators/generate-types.js +168 -0
  38. package/dist/src/cli/actions/convert/generators/generate-types.js.map +1 -0
  39. package/dist/src/cli/actions/convert/interfaces.d.ts +80 -0
  40. package/dist/src/cli/actions/convert/interfaces.d.ts.map +1 -0
  41. package/dist/src/cli/actions/convert/interfaces.js +2 -0
  42. package/dist/src/cli/actions/convert/interfaces.js.map +1 -0
  43. package/dist/src/cli/actions/convert/transforms/transform-component-parameters.d.ts +12 -0
  44. package/dist/src/cli/actions/convert/transforms/transform-component-parameters.d.ts.map +1 -0
  45. package/dist/src/cli/actions/convert/transforms/transform-component-parameters.js +48 -0
  46. package/dist/src/cli/actions/convert/transforms/transform-component-parameters.js.map +1 -0
  47. package/dist/src/cli/actions/convert/transforms/transform-component-schemas.d.ts +11 -0
  48. package/dist/src/cli/actions/convert/transforms/transform-component-schemas.d.ts.map +1 -0
  49. package/dist/src/cli/actions/convert/transforms/transform-component-schemas.js +76 -0
  50. package/dist/src/cli/actions/convert/transforms/transform-component-schemas.js.map +1 -0
  51. package/dist/src/cli/actions/convert/transforms/transform-operation-responses.d.ts +11 -0
  52. package/dist/src/cli/actions/convert/transforms/transform-operation-responses.d.ts.map +1 -0
  53. package/dist/src/cli/actions/convert/transforms/transform-operation-responses.js +190 -0
  54. package/dist/src/cli/actions/convert/transforms/transform-operation-responses.js.map +1 -0
  55. package/dist/src/cli/actions/convert/transforms/transform-paths.d.ts +9 -0
  56. package/dist/src/cli/actions/convert/transforms/transform-paths.d.ts.map +1 -0
  57. package/dist/src/cli/actions/convert/transforms/transform-paths.js +65 -0
  58. package/dist/src/cli/actions/convert/transforms/transform-paths.js.map +1 -0
  59. package/dist/src/cli/actions/convert/transforms/transform-service-info.d.ts +4 -0
  60. package/dist/src/cli/actions/convert/transforms/transform-service-info.d.ts.map +1 -0
  61. package/dist/src/cli/actions/convert/transforms/transform-service-info.js +12 -0
  62. package/dist/src/cli/actions/convert/transforms/transform-service-info.js.map +1 -0
  63. package/dist/src/cli/actions/convert/transforms/transforms.d.ts +4 -0
  64. package/dist/src/cli/actions/convert/transforms/transforms.d.ts.map +1 -0
  65. package/dist/src/cli/actions/convert/transforms/transforms.js +26 -0
  66. package/dist/src/cli/actions/convert/transforms/transforms.js.map +1 -0
  67. package/dist/src/cli/actions/convert/utils/convert-header-name.d.ts +2 -0
  68. package/dist/src/cli/actions/convert/utils/convert-header-name.d.ts.map +1 -0
  69. package/dist/src/cli/actions/convert/utils/convert-header-name.js +7 -0
  70. package/dist/src/cli/actions/convert/utils/convert-header-name.js.map +1 -0
  71. package/dist/src/cli/actions/convert/utils/decorators.d.ts +6 -0
  72. package/dist/src/cli/actions/convert/utils/decorators.d.ts.map +1 -0
  73. package/dist/src/cli/actions/convert/utils/decorators.js +162 -0
  74. package/dist/src/cli/actions/convert/utils/decorators.js.map +1 -0
  75. package/dist/src/cli/actions/convert/utils/docs.d.ts +3 -0
  76. package/dist/src/cli/actions/convert/utils/docs.d.ts.map +1 -0
  77. package/dist/src/cli/actions/convert/utils/docs.js +58 -0
  78. package/dist/src/cli/actions/convert/utils/docs.js.map +1 -0
  79. package/dist/src/cli/actions/convert/utils/supported-http-methods.d.ts +3 -0
  80. package/dist/src/cli/actions/convert/utils/supported-http-methods.d.ts.map +1 -0
  81. package/dist/src/cli/actions/convert/utils/supported-http-methods.js +9 -0
  82. package/dist/src/cli/actions/convert/utils/supported-http-methods.js.map +1 -0
  83. package/dist/src/cli/cli.d.ts +2 -0
  84. package/dist/src/cli/cli.d.ts.map +1 -0
  85. package/dist/src/cli/cli.js +66 -0
  86. package/dist/src/cli/cli.js.map +1 -0
  87. package/dist/src/cli/types.d.ts +45 -0
  88. package/dist/src/cli/types.d.ts.map +1 -0
  89. package/dist/src/cli/types.js +2 -0
  90. package/dist/src/cli/types.js.map +1 -0
  91. package/dist/src/cli/utils.d.ts +16 -0
  92. package/dist/src/cli/utils.d.ts.map +1 -0
  93. package/dist/src/cli/utils.js +43 -0
  94. package/dist/src/cli/utils.js.map +1 -0
  95. package/dist/src/index.d.ts +1 -0
  96. package/dist/src/index.d.ts.map +1 -1
  97. package/dist/src/index.js +1 -0
  98. package/dist/src/index.js.map +1 -1
  99. package/dist/src/lib.d.ts.map +1 -1
  100. package/dist/src/openapi.js +7 -0
  101. package/dist/src/openapi.js.map +1 -1
  102. package/dist/src/types.d.ts +6 -1
  103. package/dist/src/types.d.ts.map +1 -1
  104. package/dist/src/version.d.ts +2 -0
  105. package/dist/src/version.d.ts.map +1 -0
  106. package/dist/src/version.js +12 -0
  107. package/dist/src/version.js.map +1 -0
  108. package/dist/version.js +1 -0
  109. package/package.json +15 -7
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convert-header-name.d.ts","sourceRoot":"","sources":["../../../../../../src/cli/actions/convert/utils/convert-header-name.ts"],"names":[],"mappings":"AAAA,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAKnD"}
@@ -0,0 +1,7 @@
1
+ export function convertHeaderName(s) {
2
+ return s
3
+ .split("-")
4
+ .map((s, idx) => (idx === 0 ? s : s.substring(0, 1).toUpperCase() + s.substring(1)))
5
+ .join("");
6
+ }
7
+ //# sourceMappingURL=convert-header-name.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convert-header-name.js","sourceRoot":"","sources":["../../../../../../src/cli/actions/convert/utils/convert-header-name.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,iBAAiB,CAAC,CAAS;IACzC,OAAO,CAAC;SACL,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;SACnF,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { Extensions, OpenAPI3Parameter, OpenAPI3Schema, Refable } from "../../../../types.js";
2
+ import { TypeSpecDecorator } from "../interfaces.js";
3
+ export declare function getExtensions(element: Extensions): TypeSpecDecorator[];
4
+ export declare function getParameterDecorators(parameter: OpenAPI3Parameter): TypeSpecDecorator[];
5
+ export declare function getDecoratorsForSchema(schema: Refable<OpenAPI3Schema>): TypeSpecDecorator[];
6
+ //# sourceMappingURL=decorators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../../../../../src/cli/actions/convert/utils/decorators.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC9F,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAKrD,wBAAgB,aAAa,CAAC,OAAO,EAAE,UAAU,GAAG,iBAAiB,EAAE,CAatE;AAMD,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,iBAAiB,uBAUlE;AA4CD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,iBAAiB,EAAE,CAgC3F"}
@@ -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,3 @@
1
+ export declare function generateDocs(doc: string | string[]): string;
2
+ export declare function generateDocsContent(doc: string | string[]): string;
3
+ //# sourceMappingURL=docs.d.ts.map
@@ -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,3 @@
1
+ import { HttpVerb } from "@typespec/http";
2
+ export declare const supportedHttpMethods: Set<HttpVerb>;
3
+ //# sourceMappingURL=supported-http-methods.d.ts.map
@@ -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,9 @@
1
+ export const supportedHttpMethods = new Set([
2
+ "delete",
3
+ "get",
4
+ "head",
5
+ "patch",
6
+ "post",
7
+ "put",
8
+ ]);
9
+ //# sourceMappingURL=supported-http-methods.js.map
@@ -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,2 @@
1
+ export declare function main(): Promise<void>;
2
+ //# sourceMappingURL=cli.d.ts.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -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"}
@@ -1,4 +1,5 @@
1
1
  export declare const namespace = "TypeSpec.OpenAPI";
2
+ export { convertOpenAPI3Document } from "./cli/actions/convert/convert.js";
2
3
  export * from "./decorators.js";
3
4
  export { $lib } from "./lib.js";
4
5
  export * from "./openapi.js";
@@ -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
@@ -1,4 +1,5 @@
1
1
  export const namespace = "TypeSpec.OpenAPI";
2
+ export { convertOpenAPI3Document } from "./cli/actions/convert/convert.js";
2
3
  export * from "./decorators.js";
3
4
  export { $lib } from "./lib.js";
4
5
  export * from "./openapi.js";
@@ -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"}
@@ -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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuHT,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"}
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"}
@@ -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 };