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

73 lines (72 loc) 4.68 kB
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]>)[];