From 2b77bd85a664bcb987b18b1f414b7f9b03cc4248 Mon Sep 17 00:00:00 2001 From: Shahed Nasser Date: Wed, 16 Oct 2024 12:17:28 +0300 Subject: [PATCH] docs-util: fixes for OAS docs generator + framework typedoc config (#9603) * fix order replaced in OAS response + framework tsdoc config * fix for some types --- .../src/classes/helpers/oas-schema.ts | 2 +- .../src/classes/helpers/schema-factory.ts | 52 +++++-------------- .../docs-generator/src/classes/kinds/oas.ts | 45 +++++++++++++++- .../packages/typedoc-config/framework.json | 8 +-- 4 files changed, 60 insertions(+), 47 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 c19d3b5af3..142c8d1722 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 ( diff --git a/www/utils/packages/typedoc-config/framework.json b/www/utils/packages/typedoc-config/framework.json index 63f3de15fe..269d62c131 100644 --- a/www/utils/packages/typedoc-config/framework.json +++ b/www/utils/packages/typedoc-config/framework.json @@ -1,11 +1,11 @@ { "$schema": "http://json.schemastore.org/tsconfig", "extends": [ - "../../../../packages/framework/framework/tsconfig.json" + "../../../../packages/core/framework/tsconfig.json" ], - "include": ["../../../../packages/framework/framework/src"], + "include": ["../../../../packages/core/framework/src"], "exclude": [ - "../../../../packages/framework/framework/dist", - "../../../../packages/framework/framework/node_modules" + "../../../../packages/core/framework/dist", + "../../../../packages/core/framework/node_modules" ] } \ No newline at end of file