diff --git a/src/resolver/strategies/openapi-3-1-apidom/resolve.js b/src/resolver/strategies/openapi-3-1-apidom/resolve.js index 81892c9bc..8e6ced3a6 100644 --- a/src/resolver/strategies/openapi-3-1-apidom/resolve.js +++ b/src/resolver/strategies/openapi-3-1-apidom/resolve.js @@ -154,7 +154,9 @@ const resolveOpenAPI31Strategy = async (options) => { : circularReplacer, }, }); - const transcluded = transclude(fragmentElement, dereferenced, openApiElement); + // Re-evaluate element to be transcluded as fragmentElement might be mutated + const search = jsonPointerEvaluate(openApiElement, jsonPointer); + const transcluded = transclude(search, dereferenced, openApiElement); const normalized = skipNormalization ? transcluded : strategy.normalize(transcluded); return { spec: toValue(normalized), errors }; diff --git a/src/resolver/strategies/openapi-3-2-apidom/resolve.js b/src/resolver/strategies/openapi-3-2-apidom/resolve.js index 425207ef0..319fbad48 100644 --- a/src/resolver/strategies/openapi-3-2-apidom/resolve.js +++ b/src/resolver/strategies/openapi-3-2-apidom/resolve.js @@ -154,7 +154,9 @@ const resolveOpenAPI32Strategy = async (options) => { : circularReplacer, }, }); - const transcluded = transclude(fragmentElement, dereferenced, openApiElement); + // Re-evaluate element to be transcluded as fragmentElement might be mutated + const search = jsonPointerEvaluate(openApiElement, jsonPointer); + const transcluded = transclude(search, dereferenced, openApiElement); const normalized = skipNormalization ? transcluded : strategy.normalize(transcluded); return { spec: toValue(normalized), errors };