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])]