botbook/node_modules/json-schema-library/lib/mergeSchema.ts
Rodrigo Rodriguez 6ae15fe3e5 Updated.
2024-09-04 13:13:15 -03:00

30 lines
845 B
TypeScript

import { JsonSchema } from "./types";
import { mergeArraysUnique } from "./utils/merge";
import getTypeOf from "./getTypeOf";
/**
* merges to two json schema. In case of conflicts, will use overwrite first
* schema or directly return first json schema.
*/
export function mergeSchema(a: JsonSchema, b: JsonSchema) {
const aType = getTypeOf(a);
const bType = getTypeOf(b);
if (aType !== bType) {
return a;
}
const result = mergeArraysUnique(a, b);
if (a.getOneOfOrigin) {
Object.defineProperty(result, "getOneOfOrigin", {
enumerable: false,
value: a.getOneOfOrigin
});
} else if (b.getOneOfOrigin) {
Object.defineProperty(result, "getOneOfOrigin", {
enumerable: false,
value: b.getOneOfOrigin
});
}
return result;
}