From ffe0344419b8b7f170b6388a8088c4882ac6a143 Mon Sep 17 00:00:00 2001 From: rcatoio Date: Tue, 25 Nov 2025 10:20:50 +0100 Subject: [PATCH] feat: add a parameter to disable type matching by content for unnamed types --- src/configuration.ts | 1 + src/schema-routes/schema-routes.ts | 23 +++++++++++++++++++---- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/configuration.ts b/src/configuration.ts index ea3f48b3..f2c50dc4 100644 --- a/src/configuration.ts +++ b/src/configuration.ts @@ -79,6 +79,7 @@ export class CodeGenConfig { extractResponseError = false; extractResponses = false; extractEnums = false; + doNotMatchUnnamedTypesByContent = false; fileNames = { dataContracts: "data-contracts", routeTypes: "route-types", diff --git a/src/schema-routes/schema-routes.ts b/src/schema-routes/schema-routes.ts index 0d64813f..62a72b68 100644 --- a/src/schema-routes/schema-routes.ts +++ b/src/schema-routes/schema-routes.ts @@ -348,6 +348,7 @@ export class SchemaRoutes { operationId, defaultType, typeName, + doNotMatchUnnamedTypesByContent, }) => { // TODO: make more flexible pick schema without content type const schema = this.getSchemaFromRequestType(requestInfo); @@ -364,9 +365,11 @@ export class SchemaRoutes { (parsedSchema) => this.typeNameFormatter.format(parsedSchema.name) === content, ); - const foundSchemaByContent = parsedSchemas.find((parsedSchema) => - lodash.isEqual(parsedSchema.content, content), - ); + const foundSchemaByContent = doNotMatchUnnamedTypesByContent + ? null + : parsedSchemas.find((parsedSchema) => + lodash.isEqual(parsedSchema.content, content), + ); const foundSchema = foundedSchemaByName || foundSchemaByContent; @@ -412,6 +415,7 @@ export class SchemaRoutes { parsedSchemas, operationId, defaultType, + doNotMatchUnnamedTypesByContent, }) => lodash.reduce( requestInfos, @@ -432,6 +436,7 @@ export class SchemaRoutes { parsedSchemas, operationId, defaultType, + doNotMatchUnnamedTypesByContent, }), ), description: @@ -460,6 +465,8 @@ export class SchemaRoutes { parsedSchemas, operationId, defaultType: this.config.defaultResponseType, + doNotMatchUnnamedTypesByContent: + this.config.doNotMatchUnnamedTypesByContent, }); const successResponse = responseInfos.find( @@ -538,7 +545,13 @@ export class SchemaRoutes { ); }; - getRequestBodyInfo = (routeInfo, routeParams, parsedSchemas, routeName) => { + getRequestBodyInfo = ( + routeInfo, + routeParams, + parsedSchemas, + routeName, + doNotMatchUnnamedTypesByContent, + ) => { const { requestBody, consumes, requestBodyName, operationId } = routeInfo; let schema = null; let content = null; @@ -583,6 +596,7 @@ export class SchemaRoutes { parsedSchemas, operationId, typeName, + doNotMatchUnnamedTypesByContent, }), ); @@ -943,6 +957,7 @@ export class SchemaRoutes { routeParams, parsedSchemas, routeName, + this.config.doNotMatchUnnamedTypesByContent, ); const requestParamsSchema = this.createRequestParamsSchema({