Spaces:
Build error
Build error
const toOpenApi = require('@openapi-contrib/json-schema-to-openapi-schema'); | |
const fs = require('fs'); | |
let rawdata = fs.readFileSync('schema.json'); | |
let schema = JSON.parse(rawdata); | |
// Generated result contains usage of "allOf" directive with a single class. | |
// It breaks client generator serves no function. | |
// This function should replace "allOf" directives with simple class usages | |
function replaceAllOf(schema) { | |
if (Array.isArray(schema)) { | |
var newSchema = []; | |
for (var k in schema) { | |
newSchema[k] = replaceAllOf(schema[k]); | |
} | |
return newSchema; | |
} | |
if (typeof schema === 'object' && schema !== null) { | |
var newSchema = {}; | |
for (var k in schema) { | |
if (k === 'allOf' && schema[k].length === 1) { | |
newSchema = {...schema[k][0]}; | |
break | |
} else { | |
newSchema[k] = replaceAllOf(schema[k]); | |
} | |
} | |
return newSchema; | |
} | |
return schema; | |
} | |
(async () => { | |
var convertedSchema = await toOpenApi(schema); | |
convertedSchema = replaceAllOf(convertedSchema); | |
for (var modelName in convertedSchema['definitions']) { | |
convertedSchema['definitions'][modelName]["$schema"] = schema["$schema"]; | |
convertedSchema['definitions'][modelName] = await toOpenApi(convertedSchema['definitions'][modelName]); | |
} | |
console.log(JSON.stringify({components: {schemas: convertedSchema['definitions']}}, null, 4)); | |
})(); | |