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).
73 lines (72 loc) • 4.68 kB
TypeScript
import type { PartiallyUndefined } from '../utils/type-helpers/index.js';
import type { ExtractionPlugin, SimplificationPlugin } from '../plugin/index.js';
export * from './all-of.js';
export * from './any-of.js';
export * from './not.js';
export * from './const.js';
export * from './type.js';
export * from './number/index.js';
export * from './string.js';
export * from './array.js';
export * from './object/index.js';
export * from './ref.js';
export * from './if-then-else.js';
export * from './one-of.js';
export declare const builtInExtractionPlugins: {
readonly not: ExtractionPlugin;
readonly allOf: ExtractionPlugin;
readonly anyOf: ExtractionPlugin;
readonly type: ExtractionPlugin;
readonly const: ExtractionPlugin;
readonly number: ExtractionPlugin;
readonly string: ExtractionPlugin;
readonly object: ExtractionPlugin;
readonly array: ExtractionPlugin;
readonly ifThenElse: ExtractionPlugin;
readonly oneOf: ExtractionPlugin;
readonly ref: ExtractionPlugin;
};
/** @useDeclaredType */
export type BuiltInExtractionPluginId = keyof typeof builtInExtractionPlugins;
export type BuiltInExtractionPluginOverrides = PartiallyUndefined<Record<BuiltInExtractionPluginId, ExtractionPlugin>>;
export declare function getBuiltInExtractionPlugins(overrides: BuiltInExtractionPluginOverrides): ExtractionPlugin[];
export declare const builtInSimplificationPlugins: {
readonly const: {
readonly appliesToJSONSchemaType: undefined;
readonly mergeableKeywords: [];
readonly simplify: ({ atomicSchemasByConstructor, validateConst, }: import("../plugin/plugin.js").SimplificationPluginArguments) => import("../plugin/plugin.js").ConjunctionSchema<{
allOf?: never[];
}>;
};
readonly number: {
readonly appliesToJSONSchemaType: "number";
readonly mergeableKeywords: ["minimum", "maximum", "multipleOf"];
readonly simplify: ({ atomicSchemasByConstructor, negatedAtomicSchemasByConstructor, validateConst, }: import("../plugin/plugin.js").SimplificationPluginArguments) => import("../plugin/plugin.js").ConjunctionSchema<import("./number/number.js").NumberConjunctionSchema>;
};
readonly string: {
readonly appliesToJSONSchemaType: "string";
readonly mergeableKeywords: ["minLength", "maxLength"];
readonly simplify: ({ schemaDescribesEmptySet, atomicSchemasByConstructor, negatedAtomicSchemasByConstructor, validateConst, }: import("../plugin/plugin.js").SimplificationPluginArguments) => import("../plugin/plugin.js").ConjunctionSchema<import("./string.js").StringConjunctionSchema>;
};
readonly object: {
readonly appliesToJSONSchemaType: "object";
readonly mergeableKeywords: ["properties", "patternProperties", "required", "propertyNames", "minProperties", "maxProperties"];
readonly simplify: ({ atomicSchemasByConstructor, negatedAtomicSchemasByConstructor, schemaDescribesEmptySet, options, splitToRawDNF, validateConst, }: import("../plugin/plugin.js").SimplificationPluginArguments) => import("../plugin/plugin.js").ConjunctionSchema<import("./object/object.js").ObjectConjunctionSchema>;
};
readonly array: {
readonly appliesToJSONSchemaType: "array";
readonly mergeableKeywords: ["items", "prefixItems", "minItems", "maxItems", "uniqueItems"];
readonly simplify: ({ atomicSchemasByConstructor, negatedAtomicSchemasByConstructor, schemaDescribesEmptySet, validateConst, }: import("../plugin/plugin.js").SimplificationPluginArguments) => import("../plugin/plugin.js").ConjunctionSchema<import("./array.js").ArrayConjunctionSchema>;
};
readonly ref: {
readonly appliesToJSONSchemaType: undefined;
readonly mergeableKeywords: [];
readonly simplify: ({ atomicSchemasByConstructor, negatedAtomicSchemasByConstructor, }: import("../plugin/plugin.js").SimplificationPluginArguments) => import("../plugin/plugin.js").ConjunctionSchema<import("./ref.js").RefConjunctionSchema>;
};
};
export type BuiltInSimplificationPlugins = typeof builtInSimplificationPlugins;
/** @useDeclaredType */
export type BuiltInSimplificationPluginId = keyof BuiltInSimplificationPlugins;
export type BuiltInSimplificationPlugin = BuiltInSimplificationPlugins[BuiltInSimplificationPluginId];
export type BuiltInSimplificationPluginOverrides = PartiallyUndefined<Record<BuiltInSimplificationPluginId, SimplificationPlugin>>;
export declare function getBuiltInSimplificationPlugins<Overrides extends BuiltInSimplificationPluginOverrides>(overrides: Overrides): (BuiltInSimplificationPlugin | NonNullable<Overrides[BuiltInSimplificationPluginId]>)[];