openapi-codegen-typescript
Version:
OpenApi codegen for generating types an mocks from swagger json file
70 lines (69 loc) • 3.17 kB
JavaScript
;
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,
});
};