From b593c50c7c33e3727520b2b9eb6b4b94dd46b477 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Gorej?= Date: Mon, 12 Jun 2023 14:35:06 +0200 Subject: [PATCH] feat(samples): add support for merging type keyword (#8916) This change is specific to JSON Schema 2020-12 and OpenAPI 3.1.0. Refs #8577 --- .../samples-extensions/fn/core/merge.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/core/merge.js b/src/core/plugins/json-schema-2020-12/samples-extensions/fn/core/merge.js index b0367a98..bf129b0b 100644 --- a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/core/merge.js +++ b/src/core/plugins/json-schema-2020-12/samples-extensions/fn/core/merge.js @@ -1,6 +1,7 @@ /** * @prettier */ +import { normalizeArray as ensureArray } from "core/utils" import { isBooleanJSONSchema, isJSONSchema } from "./predicates" const merge = (target, source, config = {}) => { @@ -18,6 +19,14 @@ const merge = (target, source, config = {}) => { */ const merged = { ...source, ...target } + // merging the type keyword + if (source.type && target.type) { + if (Array.isArray(source.type) && typeof source.type === "string") { + const mergedType = ensureArray(source.type).concat(target.type) + merged.type = Array.from(new Set(mergedType)) + } + } + // merging required keyword if (Array.isArray(source.required) && Array.isArray(target.required)) { merged.required = [...new Set([...target.required, ...source.required])]