UNPKG

openapi-codegen-typescript

Version:

OpenApi codegen for generating types an mocks from swagger json file

70 lines (69 loc) 3.17 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var types_1 = require("./types"); var shared_1 = require("./shared"); var parseObject_1 = require("./helpers/parseObject"); var parseEnum_1 = require("./helpers/parseEnum"); exports.parseSchemas = function (_a) { var json = _a.json, overrideSchemas = _a.overrideSchemas; var schemas = shared_1.getSchemas({ json: json }); if (schemas) { var schemasKeys = Object.keys(schemas); var result_1 = ''; schemasKeys.map(function (schemaKey) { try { var schema = schemas[schemaKey]; /** * Is schema is a simple object or is it extends from another schema */ if (schema[types_1.SwaggerProps.Type] === types_1.DataTypes.Object || schema[types_1.SwaggerProps.AllOf]) { /** * Sometimes in swagger v2 schema key could be named as SomeDto[AnotherDto] */ if (shared_1.isSwaggerV2(json) && schemaKey.includes('[') && schemaKey.includes(']')) { var strings = schemaKey.split('['); result_1 += parseObject_1.parseObject({ schema: schema, schemaKey: strings[0] }); } else { result_1 += parseObject_1.parseObject({ schema: schema, schemaKey: schemaKey }); } } else if (schema.type === types_1.DataTypes.String) { /** * Check if current schema is override */ if ((overrideSchemas === null || overrideSchemas === void 0 ? void 0 : overrideSchemas.length) && overrideSchemas.find(function (e) { return e[schemaKey]; })) { // for TS happiness var overrideSchema = overrideSchemas.find(function (e) { return e[schemaKey]; }); if (overrideSchema) { result_1 += parseEnum_1.parseEnum({ schema: overrideSchema[schemaKey], schemaKey: schemaKey }); } } else { result_1 += parseEnum_1.parseEnum({ schema: schema, schemaKey: schemaKey }); } } else { result_1 += "// Error: Unsupported schema for " + schemaKey + "\n"; } } catch (error) { result_1 += "// Error: Unhandled error with " + schemaKey + "\n"; } }); result_1 += "\n"; return result_1; } else { return 'ERROR! Check provided swagger version.'; } }; exports.convertToTypes = function (_a) { var json = _a.json, fileName = _a.fileName, folderPath = _a.folderPath, overrideSchemas = _a.overrideSchemas; var resultString = exports.parseSchemas({ json: json, overrideSchemas: overrideSchemas }); shared_1.writeToFile({ folderPath: folderPath, fileName: fileName, resultString: resultString, }); };