@sinclair/typebox
Version:
Json Schema Type Builder with Static Type Resolution for TypeScript
25 lines (23 loc) • 1.3 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.IntersectCreate = void 0;
const index_1 = require("../symbols/index");
const type_1 = require("../clone/type");
// ------------------------------------------------------------------
// TypeGuard
// ------------------------------------------------------------------
const type_2 = require("../guard/type");
// ------------------------------------------------------------------
// IntersectCreate
// ------------------------------------------------------------------
// prettier-ignore
function IntersectCreate(T, options) {
const allObjects = T.every((schema) => (0, type_2.IsObject)(schema));
const clonedUnevaluatedProperties = (0, type_2.IsSchema)(options.unevaluatedProperties)
? { unevaluatedProperties: (0, type_1.CloneType)(options.unevaluatedProperties) }
: {};
return ((options.unevaluatedProperties === false || (0, type_2.IsSchema)(options.unevaluatedProperties) || allObjects
? { ...options, ...clonedUnevaluatedProperties, [index_1.Kind]: 'Intersect', type: 'object', allOf: (0, type_1.CloneRest)(T) }
: { ...options, ...clonedUnevaluatedProperties, [index_1.Kind]: 'Intersect', allOf: (0, type_1.CloneRest)(T) }));
}
exports.IntersectCreate = IntersectCreate;