diff options
Diffstat (limited to 'scripts/openapi.js')
-rw-r--r-- | scripts/openapi.js | 42 |
1 files changed, 33 insertions, 9 deletions
diff --git a/scripts/openapi.js b/scripts/openapi.js index 86297967..889a68cb 100644 --- a/scripts/openapi.js +++ b/scripts/openapi.js @@ -16,6 +16,8 @@ along with this program. If not, see <https://www.gnu.org/licenses/>. */ +/* eslint-env node */ + require("module-alias/register"); const getRouteDescriptions = require("./util/getRouteDescriptions"); const path = require("path"); @@ -27,7 +29,31 @@ require("missing-native-js-functions"); const openapiPath = path.join(__dirname, "..", "assets", "openapi.json"); const SchemaPath = path.join(__dirname, "..", "assets", "schemas.json"); -const schemas = JSON.parse(fs.readFileSync(SchemaPath, { encoding: "utf8" })); +let schemas = JSON.parse(fs.readFileSync(SchemaPath, { encoding: "utf8" })); + +for (var schema in schemas) { + const part = schemas[schema]; + for (var key in part.properties) { + if (part.properties[key].anyOf) { + const nullIndex = part.properties[key].anyOf.findIndex( + (x) => x.type == "null", + ); + if (nullIndex != -1) { + part.properties[key].nullable = true; + part.properties[key].anyOf.splice(nullIndex, 1); + + if (part.properties[key].anyOf.length == 1) { + Object.assign( + part.properties[key], + part.properties[key].anyOf[0], + ); + delete part.properties[key].anyOf; + } + } + } + } +} + const specification = JSON.parse( fs.readFileSync(openapiPath, { encoding: "utf8" }), ); @@ -85,15 +111,13 @@ function apiRoutes() { .map((x) => ({ name: x })); specification.components = specification.components || {}; - specification.components.securitySchemes = [ - { - bearer: { - type: "http", - scheme: "bearer", - description: "Bearer/Bot prefixes are not required.", - }, + specification.components.securitySchemes = { + bearer: { + type: "http", + scheme: "bearer", + description: "Bearer/Bot prefixes are not required.", }, - ]; + }; routes.forEach((route, pathAndMethod) => { const [p, method] = pathAndMethod.split("|"); |