From 3eb981cc57dd6652e4a0ebdbe80145129553c20d Mon Sep 17 00:00:00 2001 From: Ferdi Koomen Date: Sat, 28 Nov 2020 09:46:42 +0100 Subject: [PATCH] - Filter empty composition models resolving "{...} & any" in extends --- src/openApi/v2/parser/getModelComposition.ts | 18 +++++++++++++----- src/openApi/v3/parser/getModelComposition.ts | 18 +++++++++++++----- 2 files changed, 26 insertions(+), 10 deletions(-) diff --git a/src/openApi/v2/parser/getModelComposition.ts b/src/openApi/v2/parser/getModelComposition.ts index 2bcdd633..060b83a1 100644 --- a/src/openApi/v2/parser/getModelComposition.ts +++ b/src/openApi/v2/parser/getModelComposition.ts @@ -15,11 +15,19 @@ export function getModelComposition(openApi: OpenApi, definitions: OpenApiSchema }; const modes = definitions.map(definition => getModel(openApi, definition)); - modes.forEach(model => { - composition.imports.push(...model.imports); - composition.enums.push(...model.enums); - composition.properties.push(model); - }); + modes + .filter(model => { + const hasProperties = model.properties.length; + const hasEnums = model.enums.length; + const isObject = model.type === 'any'; + const isEmpty = isObject && !hasProperties && !hasEnums; + return !isEmpty; + }) + .forEach(model => { + composition.imports.push(...model.imports); + composition.enums.push(...model.enums); + composition.properties.push(model); + }); return composition; } diff --git a/src/openApi/v3/parser/getModelComposition.ts b/src/openApi/v3/parser/getModelComposition.ts index 2bcdd633..060b83a1 100644 --- a/src/openApi/v3/parser/getModelComposition.ts +++ b/src/openApi/v3/parser/getModelComposition.ts @@ -15,11 +15,19 @@ export function getModelComposition(openApi: OpenApi, definitions: OpenApiSchema }; const modes = definitions.map(definition => getModel(openApi, definition)); - modes.forEach(model => { - composition.imports.push(...model.imports); - composition.enums.push(...model.enums); - composition.properties.push(model); - }); + modes + .filter(model => { + const hasProperties = model.properties.length; + const hasEnums = model.enums.length; + const isObject = model.type === 'any'; + const isEmpty = isObject && !hasProperties && !hasEnums; + return !isEmpty; + }) + .forEach(model => { + composition.imports.push(...model.imports); + composition.enums.push(...model.enums); + composition.properties.push(model); + }); return composition; }