UNPKG

openapi-typescript

Version:

Generate TypeScript types from Swagger OpenAPI specs

107 lines 4.46 kB
"use strict"; 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