@nestia/migrate 10.0.1 → 11.0.0-dev.20260305

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 (162) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +93 -93
  3. package/package.json +32 -46
  4. package/src/NestiaMigrateApplication.ts +161 -159
  5. package/src/analyzers/NestiaMigrateControllerAnalyzer.ts +51 -51
  6. package/src/archivers/NestiaMigrateFileArchiver.ts +28 -28
  7. package/src/bundles/NEST_TEMPLATE.ts +48 -48
  8. package/src/bundles/SDK_TEMPLATE.ts +21 -21
  9. package/src/executable/NestiaMigrateCommander.ts +98 -98
  10. package/src/executable/NestiaMigrateInquirer.ts +106 -106
  11. package/src/executable/bundle.js +125 -125
  12. package/src/executable/migrate.ts +7 -7
  13. package/src/factories/TypeLiteralFactory.ts +57 -57
  14. package/src/index.ts +4 -4
  15. package/src/module.ts +6 -2
  16. package/src/programmers/NestiaMigrateApiFileProgrammer.ts +55 -55
  17. package/src/programmers/NestiaMigrateApiFunctionProgrammer.ts +347 -344
  18. package/src/programmers/NestiaMigrateApiNamespaceProgrammer.ts +517 -514
  19. package/src/programmers/NestiaMigrateApiProgrammer.ts +107 -107
  20. package/src/programmers/NestiaMigrateApiSimulationProgrammer.ts +308 -309
  21. package/src/programmers/NestiaMigrateApiStartProgrammer.ts +197 -198
  22. package/src/programmers/NestiaMigrateDtoProgrammer.ts +98 -98
  23. package/src/programmers/NestiaMigrateE2eFileProgrammer.ts +153 -153
  24. package/src/programmers/NestiaMigrateE2eProgrammer.ts +48 -48
  25. package/src/programmers/NestiaMigrateImportProgrammer.ts +118 -118
  26. package/src/programmers/NestiaMigrateNestControllerProgrammer.ts +69 -69
  27. package/src/programmers/NestiaMigrateNestMethodProgrammer.ts +409 -406
  28. package/src/programmers/NestiaMigrateNestModuleProgrammer.ts +65 -65
  29. package/src/programmers/NestiaMigrateNestProgrammer.ts +88 -88
  30. package/src/programmers/NestiaMigrateSchemaProgrammer.ts +465 -522
  31. package/src/structures/INestiaMigrateConfig.ts +19 -19
  32. package/src/structures/INestiaMigrateContext.ts +9 -9
  33. package/src/structures/INestiaMigrateController.ts +8 -8
  34. package/src/structures/INestiaMigrateDto.ts +8 -8
  35. package/src/structures/INestiaMigrateFile.ts +5 -5
  36. package/src/structures/INestiaMigrateProgram.ts +11 -11
  37. package/src/structures/INestiaMigrateSchema.ts +4 -4
  38. package/src/utils/FilePrinter.ts +49 -49
  39. package/src/utils/MapUtil.ts +13 -13
  40. package/src/utils/SetupWizard.ts +12 -12
  41. package/src/utils/StringUtil.ts +114 -113
  42. package/src/utils/openapi-down-convert/RefVisitor.ts +134 -134
  43. package/src/utils/openapi-down-convert/converter.ts +536 -536
  44. package/lib/NestiaMigrateApplication.d.ts +0 -24
  45. package/lib/NestiaMigrateApplication.js +0 -18757
  46. package/lib/NestiaMigrateApplication.js.map +0 -1
  47. package/lib/analyzers/NestiaMigrateControllerAnalyzer.d.ts +0 -5
  48. package/lib/analyzers/NestiaMigrateControllerAnalyzer.js +0 -46
  49. package/lib/analyzers/NestiaMigrateControllerAnalyzer.js.map +0 -1
  50. package/lib/archivers/NestiaMigrateFileArchiver.d.ts +0 -8
  51. package/lib/archivers/NestiaMigrateFileArchiver.js +0 -36
  52. package/lib/archivers/NestiaMigrateFileArchiver.js.map +0 -1
  53. package/lib/bundles/NEST_TEMPLATE.d.ts +0 -1
  54. package/lib/bundles/NEST_TEMPLATE.js +0 -55
  55. package/lib/bundles/NEST_TEMPLATE.js.map +0 -1
  56. package/lib/bundles/SDK_TEMPLATE.d.ts +0 -1
  57. package/lib/bundles/SDK_TEMPLATE.js +0 -27
  58. package/lib/bundles/SDK_TEMPLATE.js.map +0 -1
  59. package/lib/executable/NestiaMigrateCommander.d.ts +0 -4
  60. package/lib/executable/NestiaMigrateCommander.js +0 -125
  61. package/lib/executable/NestiaMigrateCommander.js.map +0 -1
  62. package/lib/executable/NestiaMigrateInquirer.d.ts +0 -12
  63. package/lib/executable/NestiaMigrateInquirer.js +0 -94
  64. package/lib/executable/NestiaMigrateInquirer.js.map +0 -1
  65. package/lib/executable/migrate.d.ts +0 -2
  66. package/lib/executable/migrate.js +0 -9
  67. package/lib/executable/migrate.js.map +0 -1
  68. package/lib/factories/TypeLiteralFactory.d.ts +0 -4
  69. package/lib/factories/TypeLiteralFactory.js +0 -35
  70. package/lib/factories/TypeLiteralFactory.js.map +0 -1
  71. package/lib/index.d.ts +0 -3
  72. package/lib/index.js +0 -42
  73. package/lib/index.js.map +0 -1
  74. package/lib/index.mjs +0 -19399
  75. package/lib/index.mjs.map +0 -1
  76. package/lib/module.d.ts +0 -2
  77. package/lib/module.js +0 -19
  78. package/lib/module.js.map +0 -1
  79. package/lib/programmers/NestiaMigrateApiFileProgrammer.d.ts +0 -13
  80. package/lib/programmers/NestiaMigrateApiFileProgrammer.js +0 -40
  81. package/lib/programmers/NestiaMigrateApiFileProgrammer.js.map +0 -1
  82. package/lib/programmers/NestiaMigrateApiFunctionProgrammer.d.ts +0 -14
  83. package/lib/programmers/NestiaMigrateApiFunctionProgrammer.js +0 -179
  84. package/lib/programmers/NestiaMigrateApiFunctionProgrammer.js.map +0 -1
  85. package/lib/programmers/NestiaMigrateApiNamespaceProgrammer.d.ts +0 -14
  86. package/lib/programmers/NestiaMigrateApiNamespaceProgrammer.js +0 -226
  87. package/lib/programmers/NestiaMigrateApiNamespaceProgrammer.js.map +0 -1
  88. package/lib/programmers/NestiaMigrateApiProgrammer.d.ts +0 -4
  89. package/lib/programmers/NestiaMigrateApiProgrammer.js +0 -82
  90. package/lib/programmers/NestiaMigrateApiProgrammer.js.map +0 -1
  91. package/lib/programmers/NestiaMigrateApiSimulationProgrammer.d.ts +0 -14
  92. package/lib/programmers/NestiaMigrateApiSimulationProgrammer.js +0 -142
  93. package/lib/programmers/NestiaMigrateApiSimulationProgrammer.js.map +0 -1
  94. package/lib/programmers/NestiaMigrateApiStartProgrammer.d.ts +0 -4
  95. package/lib/programmers/NestiaMigrateApiStartProgrammer.js +0 -80
  96. package/lib/programmers/NestiaMigrateApiStartProgrammer.js.map +0 -1
  97. package/lib/programmers/NestiaMigrateDtoProgrammer.d.ts +0 -15
  98. package/lib/programmers/NestiaMigrateDtoProgrammer.js +0 -65
  99. package/lib/programmers/NestiaMigrateDtoProgrammer.js.map +0 -1
  100. package/lib/programmers/NestiaMigrateE2eFileProgrammer.d.ts +0 -14
  101. package/lib/programmers/NestiaMigrateE2eFileProgrammer.js +0 -81
  102. package/lib/programmers/NestiaMigrateE2eFileProgrammer.js.map +0 -1
  103. package/lib/programmers/NestiaMigrateE2eProgrammer.d.ts +0 -4
  104. package/lib/programmers/NestiaMigrateE2eProgrammer.js +0 -32
  105. package/lib/programmers/NestiaMigrateE2eProgrammer.js.map +0 -1
  106. package/lib/programmers/NestiaMigrateImportProgrammer.d.ts +0 -18
  107. package/lib/programmers/NestiaMigrateImportProgrammer.js +0 -65
  108. package/lib/programmers/NestiaMigrateImportProgrammer.js.map +0 -1
  109. package/lib/programmers/NestiaMigrateNestControllerProgrammer.d.ts +0 -12
  110. package/lib/programmers/NestiaMigrateNestControllerProgrammer.js +0 -46
  111. package/lib/programmers/NestiaMigrateNestControllerProgrammer.js.map +0 -1
  112. package/lib/programmers/NestiaMigrateNestMethodProgrammer.d.ts +0 -15
  113. package/lib/programmers/NestiaMigrateNestMethodProgrammer.js +0 -224
  114. package/lib/programmers/NestiaMigrateNestMethodProgrammer.js.map +0 -1
  115. package/lib/programmers/NestiaMigrateNestModuleProgrammer.d.ts +0 -5
  116. package/lib/programmers/NestiaMigrateNestModuleProgrammer.js +0 -29
  117. package/lib/programmers/NestiaMigrateNestModuleProgrammer.js.map +0 -1
  118. package/lib/programmers/NestiaMigrateNestProgrammer.d.ts +0 -4
  119. package/lib/programmers/NestiaMigrateNestProgrammer.js +0 -65
  120. package/lib/programmers/NestiaMigrateNestProgrammer.js.map +0 -1
  121. package/lib/programmers/NestiaMigrateSchemaProgrammer.d.ts +0 -10
  122. package/lib/programmers/NestiaMigrateSchemaProgrammer.js +0 -469
  123. package/lib/programmers/NestiaMigrateSchemaProgrammer.js.map +0 -1
  124. package/lib/structures/INestiaMigrateConfig.d.ts +0 -15
  125. package/lib/structures/INestiaMigrateConfig.js +0 -3
  126. package/lib/structures/INestiaMigrateConfig.js.map +0 -1
  127. package/lib/structures/INestiaMigrateContext.d.ts +0 -7
  128. package/lib/structures/INestiaMigrateContext.js +0 -3
  129. package/lib/structures/INestiaMigrateContext.js.map +0 -1
  130. package/lib/structures/INestiaMigrateController.d.ts +0 -7
  131. package/lib/structures/INestiaMigrateController.js +0 -3
  132. package/lib/structures/INestiaMigrateController.js.map +0 -1
  133. package/lib/structures/INestiaMigrateDto.d.ts +0 -7
  134. package/lib/structures/INestiaMigrateDto.js +0 -3
  135. package/lib/structures/INestiaMigrateDto.js.map +0 -1
  136. package/lib/structures/INestiaMigrateFile.d.ts +0 -5
  137. package/lib/structures/INestiaMigrateFile.js +0 -3
  138. package/lib/structures/INestiaMigrateFile.js.map +0 -1
  139. package/lib/structures/INestiaMigrateProgram.d.ts +0 -9
  140. package/lib/structures/INestiaMigrateProgram.js +0 -3
  141. package/lib/structures/INestiaMigrateProgram.js.map +0 -1
  142. package/lib/structures/INestiaMigrateSchema.d.ts +0 -4
  143. package/lib/structures/INestiaMigrateSchema.js +0 -3
  144. package/lib/structures/INestiaMigrateSchema.js.map +0 -1
  145. package/lib/utils/FilePrinter.d.ts +0 -9
  146. package/lib/utils/FilePrinter.js +0 -35
  147. package/lib/utils/FilePrinter.js.map +0 -1
  148. package/lib/utils/MapUtil.d.ts +0 -3
  149. package/lib/utils/MapUtil.js +0 -15
  150. package/lib/utils/MapUtil.js.map +0 -1
  151. package/lib/utils/SetupWizard.d.ts +0 -3
  152. package/lib/utils/SetupWizard.js +0 -18
  153. package/lib/utils/SetupWizard.js.map +0 -1
  154. package/lib/utils/StringUtil.d.ts +0 -6
  155. package/lib/utils/StringUtil.js +0 -108
  156. package/lib/utils/StringUtil.js.map +0 -1
  157. package/lib/utils/openapi-down-convert/RefVisitor.d.ts +0 -52
  158. package/lib/utils/openapi-down-convert/RefVisitor.js +0 -102
  159. package/lib/utils/openapi-down-convert/RefVisitor.js.map +0 -1
  160. package/lib/utils/openapi-down-convert/converter.d.ts +0 -146
  161. package/lib/utils/openapi-down-convert/converter.js +0 -441
  162. package/lib/utils/openapi-down-convert/converter.js.map +0 -1
@@ -1,441 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Converter = void 0;
4
- /** OpenAPI Down Converted - convert an OAS document from OAS 3.1 to OAS 3.0 */
5
- const RefVisitor_1 = require("./RefVisitor");
6
- class Converter {
7
- /**
8
- * Construct a new Converter
9
- *
10
- * @throws Error if the scopeDescriptionFile (if specified) cannot be read or
11
- * parsed as YAML/JSON
12
- */
13
- constructor(openapiDocument, options) {
14
- this.verbose = false;
15
- this.deleteExampleWithId = false;
16
- this.allOfTransform = false;
17
- this.scopeDescriptions = undefined;
18
- this.convertSchemaComments = false;
19
- this.returnCode = 0;
20
- this.openapi30 = Converter.deepClone(openapiDocument);
21
- this.verbose = Boolean(options === null || options === void 0 ? void 0 : options.verbose);
22
- this.deleteExampleWithId = Boolean(options === null || options === void 0 ? void 0 : options.deleteExampleWithId);
23
- this.allOfTransform = Boolean(options === null || options === void 0 ? void 0 : options.allOfTransform);
24
- this.authorizationUrl =
25
- (options === null || options === void 0 ? void 0 : options.authorizationUrl) || "https://www.example.com/oauth2/authorize";
26
- this.tokenUrl = (options === null || options === void 0 ? void 0 : options.tokenUrl) || "https://www.example.com/oauth2/token";
27
- this.loadScopeDescriptions(options === null || options === void 0 ? void 0 : options.scopeDescriptionFile);
28
- this.convertSchemaComments = !!(options === null || options === void 0 ? void 0 : options.convertSchemaComments);
29
- }
30
- /**
31
- * Load the scopes.yaml file and save in this.scopeDescriptions
32
- *
33
- * @throws Error if the file cannot be read or parsed as YAML/JSON
34
- */
35
- loadScopeDescriptions(scopeDescriptionFile) {
36
- if (!scopeDescriptionFile) {
37
- return;
38
- }
39
- }
40
- /**
41
- * Log a message to console.warn stream if verbose is true
42
- *
43
- * @param message Parameters for console.warn
44
- */
45
- log(...message) {
46
- if (this.verbose) {
47
- this.warn(...message);
48
- }
49
- }
50
- /**
51
- * Log a message to console.warn stream. Prefix the message string with
52
- * `Warning: ` if it does not already have that text.
53
- *
54
- * @param message Parameters for console.warn
55
- */
56
- warn(...message) {
57
- if (!message[0].startsWith("Warning")) {
58
- message[0] = `Warning: ${message[0]}`;
59
- }
60
- console.warn(...message);
61
- }
62
- /**
63
- * Log an error message to `console.error` stream. Prefix the message string
64
- * with `Error: ` if it does not already start with `'Error'`. Increments the
65
- * `returnCode`, causing the CLI to throw an Error when done.
66
- *
67
- * @param message Parameters for `console.error`
68
- */
69
- error(...message) {
70
- if (!message[0].startsWith("Error")) {
71
- message[0] = `Error: ${message[0]}`;
72
- }
73
- this.returnCode++;
74
- console.error(...message);
75
- }
76
- /**
77
- * Convert the OpenAPI document to 3.0
78
- *
79
- * @returns The converted document. The input is not modified.
80
- */
81
- convert() {
82
- this.log("Converting from OpenAPI 3.1 to 3.0");
83
- this.openapi30.openapi = "3.0.3";
84
- this.removeLicenseIdentifier();
85
- this.convertSchemaRef();
86
- this.simplifyNonSchemaRef();
87
- if (this.scopeDescriptions) {
88
- this.convertSecuritySchemes();
89
- }
90
- this.convertJsonSchemaExamples();
91
- this.convertJsonSchemaContentEncoding();
92
- this.convertJsonSchemaContentMediaType();
93
- this.convertConstToEnum();
94
- this.convertNullableTypeArray();
95
- this.removeWebhooksObject();
96
- this.removeUnsupportedSchemaKeywords();
97
- if (this.convertSchemaComments) {
98
- this.renameSchema$comment();
99
- }
100
- else {
101
- this.deleteSchema$comment();
102
- }
103
- if (this.returnCode > 0) {
104
- throw new Error("Cannot down convert this OpenAPI definition.");
105
- }
106
- return this.openapi30;
107
- }
108
- /**
109
- * OpenAPI 3.1 uses JSON Schema 2020-12 which allows schema `examples`;
110
- * OpenAPI 3.0 uses JSON Scheme Draft 7 which only allows `example`. Replace
111
- * all `examples` with `example`, using `examples[0]`
112
- */
113
- convertJsonSchemaExamples() {
114
- const schemaVisitor = (schema) => {
115
- for (const key in schema) {
116
- const subSchema = schema[key];
117
- if (subSchema !== null && typeof subSchema === "object") {
118
- if (key === "examples") {
119
- const examples = schema["examples"];
120
- if (Array.isArray(examples) && examples.length > 0) {
121
- delete schema["examples"];
122
- const first = examples[0];
123
- if (this.deleteExampleWithId &&
124
- first != null &&
125
- typeof first === "object" &&
126
- first.hasOwnProperty("id")) {
127
- this.log(`Deleted schema example with \`id\` property:\n${this.json(examples)}`);
128
- }
129
- else {
130
- schema["example"] = first;
131
- this.log(`Replaces examples with examples[0]. Old examples:\n${this.json(examples)}`);
132
- }
133
- // TODO: Add an else here to check example for `id` and delete the example if this.deleteExampleWithId
134
- // We've put most of those in `examples` so this is probably not needed, but it would be more robust.
135
- }
136
- }
137
- else {
138
- schema[key] = (0, RefVisitor_1.walkObject)(subSchema, schemaVisitor);
139
- }
140
- }
141
- }
142
- return schema;
143
- };
144
- (0, RefVisitor_1.visitSchemaObjects)(this.openapi30, schemaVisitor);
145
- }
146
- walkNestedSchemaObjects(schema, schemaVisitor) {
147
- for (const key in schema) {
148
- const subSchema = schema[key];
149
- if (subSchema !== null && typeof subSchema === "object") {
150
- schema[key] = (0, RefVisitor_1.walkObject)(subSchema, schemaVisitor);
151
- }
152
- }
153
- return schema;
154
- }
155
- /**
156
- * OpenAPI 3.1 uses JSON Schema 2020-12 which allows `const` OpenAPI 3.0 uses
157
- * JSON Scheme Draft 7 which only allows `enum`. Replace all `const: value`
158
- * with `enum: [ value ]`
159
- */
160
- convertConstToEnum() {
161
- const schemaVisitor = (schema) => {
162
- if (schema["const"]) {
163
- const constant = schema["const"];
164
- delete schema["const"];
165
- schema["enum"] = [constant];
166
- this.log(`Converted const: ${constant} to enum`);
167
- }
168
- return this.walkNestedSchemaObjects(schema, schemaVisitor);
169
- };
170
- (0, RefVisitor_1.visitSchemaObjects)(this.openapi30, schemaVisitor);
171
- }
172
- /**
173
- * Convert 2-element type arrays containing 'null' to string type and
174
- * `nullable: true`
175
- */
176
- convertNullableTypeArray() {
177
- const schemaVisitor = (schema) => {
178
- if (schema.hasOwnProperty("type")) {
179
- const schemaType = schema["type"];
180
- if (Array.isArray(schemaType) &&
181
- schemaType.length === 2 &&
182
- schemaType.includes("null")) {
183
- const nonNull = schemaType.filter((_) => _ !== "null")[0];
184
- schema["type"] = nonNull;
185
- schema["nullable"] = true;
186
- this.log(`Converted schema type array to nullable`);
187
- }
188
- }
189
- return this.walkNestedSchemaObjects(schema, schemaVisitor);
190
- };
191
- (0, RefVisitor_1.visitSchemaObjects)(this.openapi30, schemaVisitor);
192
- }
193
- removeWebhooksObject() {
194
- if (Object.hasOwnProperty.call(this.openapi30, "webhooks")) {
195
- this.log(`Deleted webhooks object`);
196
- delete this.openapi30["webhooks"];
197
- }
198
- }
199
- removeUnsupportedSchemaKeywords() {
200
- const keywordsToRemove = [
201
- "$id",
202
- "$schema",
203
- "unevaluatedProperties",
204
- "contentMediaType",
205
- "patternProperties",
206
- ];
207
- const schemaVisitor = (schema) => {
208
- keywordsToRemove.forEach((key) => {
209
- if (schema.hasOwnProperty(key)) {
210
- delete schema[key];
211
- this.log(`Removed unsupported schema keyword ${key}`);
212
- }
213
- });
214
- return this.walkNestedSchemaObjects(schema, schemaVisitor);
215
- };
216
- (0, RefVisitor_1.visitSchemaObjects)(this.openapi30, schemaVisitor);
217
- }
218
- renameSchema$comment() {
219
- const schemaVisitor = (schema) => {
220
- if (schema.hasOwnProperty("$comment")) {
221
- schema["x-comment"] = schema["$comment"];
222
- delete schema["$comment"];
223
- this.log(`schema $comment renamed to x-comment`);
224
- }
225
- return this.walkNestedSchemaObjects(schema, schemaVisitor);
226
- };
227
- (0, RefVisitor_1.visitSchemaObjects)(this.openapi30, schemaVisitor);
228
- }
229
- deleteSchema$comment() {
230
- const schemaVisitor = (schema) => {
231
- if (schema.hasOwnProperty("$comment")) {
232
- const comment = schema["$comment"];
233
- delete schema["$comment"];
234
- this.log(`schema $comment deleted: ${comment}`);
235
- }
236
- return this.walkNestedSchemaObjects(schema, schemaVisitor);
237
- };
238
- (0, RefVisitor_1.visitSchemaObjects)(this.openapi30, schemaVisitor);
239
- }
240
- /**
241
- * Convert
242
- *
243
- * contentMediaType: "application/octet-stream";
244
- *
245
- * To
246
- *
247
- * format: binary;
248
- *
249
- * In `type: string` schemas. Warn if schema has a `format` already and it is
250
- * not `binary`.
251
- */
252
- convertJsonSchemaContentMediaType() {
253
- const schemaVisitor = (schema) => {
254
- if (schema.hasOwnProperty("type") &&
255
- schema["type"] === "string" &&
256
- schema.hasOwnProperty("contentMediaType") &&
257
- schema["contentMediaType"] === "application/octet-stream") {
258
- if (schema.hasOwnProperty("format")) {
259
- if (schema["format"] === "binary") {
260
- this.log(`Deleted schema contentMediaType: application/octet-stream (leaving format: binary)`);
261
- delete schema["contentMediaType"];
262
- }
263
- else {
264
- this.error(`Unable to down-convert schema with contentMediaType: application/octet-stream to format: binary because the schema already has a format (${schema["format"]})`);
265
- }
266
- }
267
- else {
268
- delete schema["contentMediaType"];
269
- schema["format"] = "binary";
270
- this.log(`Converted schema contentMediaType: application/octet-stream to format: binary`);
271
- }
272
- }
273
- return this.walkNestedSchemaObjects(schema, schemaVisitor);
274
- };
275
- (0, RefVisitor_1.visitSchemaObjects)(this.openapi30, schemaVisitor);
276
- }
277
- /**
278
- * Convert
279
- *
280
- * contentEncoding: base64;
281
- *
282
- * To
283
- *
284
- * format: byte;
285
- *
286
- * In `type: string` schemas. It is an error if the schema has a `format`
287
- * already and it is not `byte`.
288
- */
289
- convertJsonSchemaContentEncoding() {
290
- const schemaVisitor = (schema) => {
291
- if (schema.hasOwnProperty("type") &&
292
- schema["type"] === "string" &&
293
- schema.hasOwnProperty("contentEncoding")) {
294
- if (schema["contentEncoding"] === "base64") {
295
- if (schema.hasOwnProperty("format")) {
296
- if (schema["format"] === "byte") {
297
- this.log(`Deleted schema contentEncoding: base64 (leaving format: byte)`);
298
- delete schema["contentEncoding"];
299
- }
300
- else {
301
- this.error(`Unable to down-convert schema contentEncoding: base64 to format: byte because the schema already has a format (${schema["format"]})`);
302
- }
303
- }
304
- else {
305
- delete schema["contentEncoding"];
306
- schema["format"] = "byte";
307
- this.log(`Converted schema: 'contentEncoding: base64' to 'format: byte'`);
308
- }
309
- }
310
- else {
311
- this.error(`Unable to down-convert contentEncoding: ${schema["contentEncoding"]}`);
312
- }
313
- }
314
- return this.walkNestedSchemaObjects(schema, schemaVisitor);
315
- };
316
- (0, RefVisitor_1.visitSchemaObjects)(this.openapi30, schemaVisitor);
317
- }
318
- json(x) {
319
- return JSON.stringify(x, null, 2);
320
- }
321
- /**
322
- * OpenAPI 3.1 defines a new `openIdConnect` security scheme. Down-convert the
323
- * scheme to `oauth2` / authorization code flow. Collect all the scopes used
324
- * in any security requirements within operations and add them to the scheme.
325
- * Also define the URLs to the `authorizationUrl` and `tokenUrl` of `oauth2`.
326
- */
327
- convertSecuritySchemes() {
328
- var _a, _b, _c;
329
- const oauth2Scopes = (schemeName) => {
330
- var _a, _b;
331
- const scopes = {};
332
- const paths = (_b = (_a = this.openapi30) === null || _a === void 0 ? void 0 : _a.paths) !== null && _b !== void 0 ? _b : {};
333
- for (const path in paths) {
334
- for (const op in paths[path]) {
335
- if (op === "parameters") {
336
- continue;
337
- }
338
- const operation = paths[path][op];
339
- const sec = operation === null || operation === void 0 ? void 0 : operation.security;
340
- sec.forEach((s) => {
341
- const requirement = s === null || s === void 0 ? void 0 : s[schemeName];
342
- if (requirement) {
343
- requirement.forEach((scope) => {
344
- var _a, _b;
345
- scopes[scope] =
346
- (_b = (_a = this.scopeDescriptions) === null || _a === void 0 ? void 0 : _a[scope]) !== null && _b !== void 0 ? _b : `TODO: describe the '${scope}' scope`;
347
- });
348
- }
349
- });
350
- }
351
- }
352
- return scopes;
353
- };
354
- const schemes = (_c = (_b = (_a = this.openapi30) === null || _a === void 0 ? void 0 : _a.components) === null || _b === void 0 ? void 0 : _b["securitySchemes"]) !== null && _c !== void 0 ? _c : {};
355
- for (const schemeName in schemes) {
356
- const scheme = schemes[schemeName];
357
- const type = scheme.type;
358
- if (type === "openIdConnect") {
359
- this.log(`Converting openIdConnect security scheme to oauth2/authorizationCode`);
360
- scheme.type = "oauth2";
361
- const openIdConnectUrl = scheme.openIdConnectUrl;
362
- scheme.description = `OAuth2 Authorization Code Flow. The client may
363
- GET the OpenID Connect configuration JSON from \`${openIdConnectUrl}\`
364
- to get the correct \`authorizationUrl\` and \`tokenUrl\`.`;
365
- delete scheme.openIdConnectUrl;
366
- const scopes = oauth2Scopes(schemeName);
367
- scheme.flows = {
368
- authorizationCode: {
369
- // TODO: add options for these URLs
370
- authorizationUrl: this.authorizationUrl,
371
- tokenUrl: this.tokenUrl,
372
- scopes: scopes,
373
- },
374
- };
375
- }
376
- }
377
- }
378
- /**
379
- * Find remaining OpenAPI 3.0 [Reference
380
- * Objects](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#referenceObject)
381
- * and down convert them to [JSON
382
- * Reference](https://tools.ietf.org/html/draft-pbryan-zyp-json-ref-03)
383
- * objects with _only_ a `$ref` property.
384
- */
385
- simplifyNonSchemaRef() {
386
- (0, RefVisitor_1.visitRefObjects)(this.openapi30, (node) => {
387
- if (Object.keys(node).length === 1) {
388
- return node;
389
- }
390
- else {
391
- this.log(`Down convert reference object to JSON Reference:\n${JSON.stringify(node, null, 3)}`);
392
- Object.keys(node)
393
- .filter((key) => key !== "$ref")
394
- .forEach((key) => delete node[key]);
395
- return node;
396
- }
397
- });
398
- }
399
- removeLicenseIdentifier() {
400
- var _a, _b, _c;
401
- if ((_c = (_b = (_a = this.openapi30) === null || _a === void 0 ? void 0 : _a["info"]) === null || _b === void 0 ? void 0 : _b["license"]) === null || _c === void 0 ? void 0 : _c["identifier"]) {
402
- this.log(`Removed info.license.identifier: ${this.openapi30["info"]["license"]["identifier"]}`);
403
- delete this.openapi30["info"]["license"]["identifier"];
404
- }
405
- }
406
- // This transformation ends up breaking openapi-generator
407
- // SDK gen (typescript-axios, typescript-angular)
408
- // so it is disabled unless the `allOfTransform` option is `true`.
409
- convertSchemaRef() {
410
- /**
411
- * In a JSON Schema, replace `{ blah blah, $ref: "uri"}` with `{ blah blah,
412
- * allOf: [ $ref: "uri" ]}`
413
- *
414
- * @param object An object that may contain JSON schemas (directly or in
415
- * sub-objects)
416
- */
417
- const simplifyRefObjectsInSchemas = (object) => {
418
- return (0, RefVisitor_1.visitRefObjects)(object, (node) => {
419
- if (Object.keys(node).length === 1) {
420
- return node;
421
- }
422
- else {
423
- this.log(`Converting JSON Schema $ref ${this.json(node)} to allOf: [ $ref ]`);
424
- node["allOf"] = [{ $ref: node.$ref }];
425
- delete node.$ref;
426
- return node;
427
- }
428
- });
429
- };
430
- if (this.allOfTransform) {
431
- (0, RefVisitor_1.visitSchemaObjects)(this.openapi30, (schema) => {
432
- return simplifyRefObjectsInSchemas(schema);
433
- });
434
- }
435
- }
436
- static deepClone(obj) {
437
- return JSON.parse(JSON.stringify(obj)); // kinda simple way to clone, but it works...
438
- }
439
- }
440
- exports.Converter = Converter;
441
- //# sourceMappingURL=converter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"converter.js","sourceRoot":"","sources":["../../../src/utils/openapi-down-convert/converter.ts"],"names":[],"mappings":"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"}