From dc696e0b4500dba5ceb4c772110b123bd2f71b40 Mon Sep 17 00:00:00 2001 From: Lubos Date: Thu, 3 Oct 2024 16:05:03 +0800 Subject: [PATCH] fix: do not handle nested properties in oneOf and anyOf compositions --- .changeset/gorgeous-mayflies-joke.md | 5 +++++ .../openapi-ts/src/openApi/v2/parser/getModelComposition.ts | 2 +- .../openapi-ts/src/openApi/v3/parser/getModelComposition.ts | 3 ++- .../v3/parser/getRequiredPropertiesFromComposition.ts | 5 +++++ 4 files changed, 13 insertions(+), 2 deletions(-) create mode 100644 .changeset/gorgeous-mayflies-joke.md diff --git a/.changeset/gorgeous-mayflies-joke.md b/.changeset/gorgeous-mayflies-joke.md new file mode 100644 index 0000000000..07d153ed6c --- /dev/null +++ b/.changeset/gorgeous-mayflies-joke.md @@ -0,0 +1,5 @@ +--- +'@hey-api/openapi-ts': patch +--- + +fix: skip nested properties in oneOf and anyOf compositions diff --git a/packages/openapi-ts/src/openApi/v2/parser/getModelComposition.ts b/packages/openapi-ts/src/openApi/v2/parser/getModelComposition.ts index a1b246a260..c130c87668 100644 --- a/packages/openapi-ts/src/openApi/v2/parser/getModelComposition.ts +++ b/packages/openapi-ts/src/openApi/v2/parser/getModelComposition.ts @@ -46,7 +46,7 @@ export const getModelComposition = ({ composition.properties.push(model); }); - if (definition.required) { + if (definition.required && type === 'all-of') { const requiredProperties = getRequiredPropertiesFromComposition({ definitions, getModel, diff --git a/packages/openapi-ts/src/openApi/v3/parser/getModelComposition.ts b/packages/openapi-ts/src/openApi/v3/parser/getModelComposition.ts index efc0bafac3..583eca71e6 100644 --- a/packages/openapi-ts/src/openApi/v3/parser/getModelComposition.ts +++ b/packages/openapi-ts/src/openApi/v3/parser/getModelComposition.ts @@ -81,8 +81,9 @@ export const getModelComposition = ({ composition.properties = [...composition.properties, model]; }); - if (definition.required) { + if (definition.required && type === 'all-of') { const requiredProperties = getRequiredPropertiesFromComposition({ + debug, definitions, getModel, openApi, diff --git a/packages/openapi-ts/src/openApi/v3/parser/getRequiredPropertiesFromComposition.ts b/packages/openapi-ts/src/openApi/v3/parser/getRequiredPropertiesFromComposition.ts index 8fdfa308b3..187e0f92ad 100644 --- a/packages/openapi-ts/src/openApi/v3/parser/getRequiredPropertiesFromComposition.ts +++ b/packages/openapi-ts/src/openApi/v3/parser/getRequiredPropertiesFromComposition.ts @@ -7,12 +7,14 @@ import type { OpenApi } from '../interfaces/OpenApi'; import type { OpenApiSchema } from '../interfaces/OpenApiSchema'; export const getRequiredPropertiesFromComposition = ({ + debug, definitions, getModel, openApi, required, types, }: { + debug?: boolean; definitions: OpenApiSchema[]; getModel: GetModelFn; openApi: OpenApi; @@ -38,6 +40,7 @@ export const getRequiredPropertiesFromComposition = ({ return [ ...properties, ...getModel({ + debug, definition: schema, meta, openApi, @@ -49,6 +52,7 @@ export const getRequiredPropertiesFromComposition = ({ return [ ...properties, ...getModel({ + debug, definition, openApi, parentDefinition: definition, @@ -63,5 +67,6 @@ export const getRequiredPropertiesFromComposition = ({ ...property, isRequired: true, })); + return requiredProperties; };