openapi-typescript
Version:
Generate TypeScript types from Swagger OpenAPI specs
107 lines • 4.46 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.transformAll = void 0;
const utils_1 = require("../utils");
const headers_1 = require("./headers");
const operation_1 = require("./operation");
const paths_1 = require("./paths");
const request_1 = require("./request");
const responses_1 = require("./responses");
const schema_1 = require("./schema");
function transformAll(schema, ctx) {
const readonly = utils_1.tsReadonly(ctx.immutableTypes);
let output = {};
let operations = {};
if (ctx.rawSchema) {
const required = new Set(Object.keys(schema));
switch (ctx.version) {
case 2: {
output.definitions = schema_1.transformSchemaObjMap(schema, { ...ctx, required });
return output;
}
case 3: {
output.schemas = schema_1.transformSchemaObjMap(schema, { ...ctx, required });
return output;
}
}
}
output.paths = "";
if (schema.paths) {
output.paths += paths_1.transformPathsObj(schema.paths, {
...ctx,
globalParameters: (schema.components && schema.components.parameters) || schema.parameters,
operations,
});
}
switch (ctx.version) {
case 2: {
if (schema.definitions) {
output.definitions = schema_1.transformSchemaObjMap(schema.definitions, {
...ctx,
required: new Set(Object.keys(schema.definitions)),
});
}
if (schema.parameters) {
output.parameters = schema_1.transformSchemaObjMap(schema.parameters, {
...ctx,
required: new Set(Object.keys(schema.parameters)),
});
}
if (schema.responses) {
output.responses = responses_1.transformResponsesObj(schema.responses, ctx);
}
break;
}
case 3: {
output.components = "";
if (schema.components) {
if (schema.components.schemas) {
output.components += ` ${readonly}schemas: {\n ${schema_1.transformSchemaObjMap(schema.components.schemas, {
...ctx,
required: new Set(Object.keys(schema.components.schemas)),
})}\n }\n`;
}
if (schema.components.responses) {
output.components += ` ${readonly}responses: {\n ${responses_1.transformResponsesObj(schema.components.responses, ctx)}\n }\n`;
}
if (schema.components.parameters) {
output.components += ` ${readonly}parameters: {\n ${schema_1.transformSchemaObjMap(schema.components.parameters, {
...ctx,
required: new Set(Object.keys(schema.components.parameters)),
})}\n }\n`;
}
if (schema.components.requestBodies) {
output.components += ` ${readonly}requestBodies: {\n ${request_1.transformRequestBodies(schema.components.requestBodies, ctx)}\n }\n`;
}
if (schema.components.headers) {
output.components += ` ${readonly}headers: {\n ${headers_1.transformHeaderObjMap(schema.components.headers, {
...ctx,
required: new Set(),
})}\n }\n`;
}
}
break;
}
}
output.operations = "";
if (Object.keys(operations).length) {
for (const id of Object.keys(operations)) {
const { operation, pathItem } = operations[id];
if (operation.description)
output.operations += utils_1.comment(operation.description);
output.operations += ` ${readonly}"${id}": {\n ${operation_1.transformOperationObj(operation, {
...ctx,
pathItem,
globalParameters: (schema.components && schema.components.parameters) || schema.parameters,
})}\n }\n`;
}
}
for (const k of Object.keys(output)) {
if (typeof output[k] === "string") {
output[k] = output[k].trim();
}
}
return output;
}
exports.transformAll = transformAll;
//# sourceMappingURL=index.js.map