UNPKG

json-schema-describes-subset

Version:

Tools for static JSON schema analysis, including functions to determine if one schema describes a subset of another or if a schema describes the empty set or to convert a schema to its disjunctive normal form (DNF).

41 lines 1.33 kB
import { AnyOfSchema, AtomicSchemaObject, NotSchema, } from '../atomic-schema/index.js'; export class ConstAtomicSchema extends AtomicSchemaObject { const; constructor(constValue) { super(); this.const = constValue; } negate() { return new NotSchema(this); } toJSONSchema() { return { const: this.const }; } } export const constExtraction = { extract: ({ schema: { const: constValue, enum: enumValues } }) => { if (constValue !== undefined) { if (!enumValues || (Array.isArray(enumValues) && enumValues.includes(constValue))) { return new ConstAtomicSchema(constValue); } return false; } if (Array.isArray(enumValues)) { return new AnyOfSchema(enumValues.map((value) => new ConstAtomicSchema(value))); } return true; }, }; export const constSimplification = { appliesToJSONSchemaType: undefined, mergeableKeywords: [], simplify({ atomicSchemasByConstructor, validateConst, }) { const [constSchema] = atomicSchemasByConstructor.get(ConstAtomicSchema); if (constSchema !== undefined) { return validateConst(constSchema.const); } return true; }, }; //# sourceMappingURL=const.js.map