From 2f1c43fcd27b0fc1078a7f82fdbf03860baa57c6 Mon Sep 17 00:00:00 2001 From: Shahed Nasser Date: Wed, 16 Oct 2024 10:55:06 +0300 Subject: [PATCH] fix for some types --- .../src/classes/helpers/oas-schema.ts | 2 +- .../docs-generator/src/classes/kinds/oas.ts | 45 ++++++++++++++++++- 2 files changed, 44 insertions(+), 3 deletions(-) diff --git a/www/utils/packages/docs-generator/src/classes/helpers/oas-schema.ts b/www/utils/packages/docs-generator/src/classes/helpers/oas-schema.ts index c19d3b5af362e..142c8d172227e 100644 --- a/www/utils/packages/docs-generator/src/classes/helpers/oas-schema.ts +++ b/www/utils/packages/docs-generator/src/classes/helpers/oas-schema.ts @@ -357,7 +357,7 @@ class OasSchemaHelper { .replace("DTO", "") .replace(this.schemaRefPrefix, "") .replace( - /(? { - oldSchemaObj!.properties![newPropertyKey] = - newSchemaObj!.properties![newPropertyKey] + const tryToUpdateSchema = ( + schema: OpenAPIV3.SchemaObject | OpenAPIV3.ReferenceObject + ) => { + let updatedSchema = schema + const newPropertySchemaName = this.oasSchemaHelper.isRefObject( + schema + ) + ? schema.$ref + : "x-schemaName" in schema + ? (schema["x-schemaName"] as string) + : undefined + if (newPropertySchemaName) { + const schemaToUpdate = this.oasSchemaHelper.getSchemaByName( + newPropertySchemaName, + true, + true + ) + + if (schemaToUpdate) { + updatedSchema = + this.updateSchema({ + oldSchema: schemaToUpdate.schema, + newSchema: schema, + level: maybeIncrementLevel(level, "object"), + }) || newProperty + } + } + + return updatedSchema + } + + let newProperty = newSchemaObj!.properties![newPropertyKey] + + if ( + !this.oasSchemaHelper.isRefObject(newProperty) && + newProperty.type === "array" + ) { + newProperty.items = tryToUpdateSchema(newProperty.items) + } else { + newProperty = tryToUpdateSchema(newProperty) + } + + oldSchemaObj!.properties![newPropertyKey] = newProperty }) } } else if (