UNPKG

@hyperjump/json-schema

Version:

A JSON Schema validator with support for custom keywords, vocabularies, and dialects

122 lines (108 loc) 6.1 kB
import { defineVocabulary, loadDialect } from "../lib/keywords.js"; import { registerSchema } from "../lib/index.js"; import metaSchema from "./validation.js"; import coreMetaSchema from "./meta/core.js"; import applicatorMetaSchema from "./meta/applicator.js"; import validationMetaSchema from "./meta/validation.js"; import metaDataMetaSchema from "./meta/meta-data.js"; import formatAnnotationMetaSchema from "./meta/format-annotation.js"; import formatAssertionMetaSchema from "./meta/format-assertion.js"; import contentMetaSchema from "./meta/content.js"; import unevaluatedMetaSchema from "./meta/unevaluated.js"; defineVocabulary("https://json-schema.org/vocab/core", { "$anchor": "https://json-schema.org/keyword/anchor", "$comment": "https://json-schema.org/keyword/comment", "$defs": "https://json-schema.org/keyword/definitions", "$dynamicAnchor": "https://json-schema.org/keyword/dynamicAnchor", "$dynamicRef": "https://json-schema.org/keyword/dynamicRef", "$id": "https://json-schema.org/keyword/id", "$ref": "https://json-schema.org/keyword/ref", "$vocabulary": "https://json-schema.org/keyword/vocabulary" }); defineVocabulary("https://json-schema.org/vocab/applicator", { "additionalProperties": "https://json-schema.org/keyword/additionalProperties", "allOf": "https://json-schema.org/keyword/allOf", "anyOf": "https://json-schema.org/keyword/anyOf", "contains": "https://json-schema.org/keyword/contains", "minContains": "https://json-schema.org/keyword/minContains", "maxContains": "https://json-schema.org/keyword/maxContains", "dependentSchemas": "https://json-schema.org/keyword/dependentSchemas", "if": "https://json-schema.org/keyword/if", "then": "https://json-schema.org/keyword/then", "else": "https://json-schema.org/keyword/else", "conditional": "https://json-schema.org/keyword/conditional", "items": "https://json-schema.org/keyword/items", "itemPattern": "https://json-schema.org/keyword/itemPattern", "not": "https://json-schema.org/keyword/not", "oneOf": "https://json-schema.org/keyword/oneOf", "patternProperties": "https://json-schema.org/keyword/patternProperties", "prefixItems": "https://json-schema.org/keyword/prefixItems", "properties": "https://json-schema.org/keyword/properties", "propertyDependencies": "https://json-schema.org/keyword/propertyDependencies", "propertyNames": "https://json-schema.org/keyword/propertyNames" }); defineVocabulary("https://json-schema.org/vocab/validation", { "const": "https://json-schema.org/keyword/const", "dependentRequired": "https://json-schema.org/keyword/dependentRequired", "enum": "https://json-schema.org/keyword/enum", "exclusiveMaximum": "https://json-schema.org/keyword/exclusiveMaximum", "exclusiveMinimum": "https://json-schema.org/keyword/exclusiveMinimum", "maxItems": "https://json-schema.org/keyword/maxItems", "maxLength": "https://json-schema.org/keyword/maxLength", "maxProperties": "https://json-schema.org/keyword/maxProperties", "maximum": "https://json-schema.org/keyword/maximum", "minItems": "https://json-schema.org/keyword/minItems", "minLength": "https://json-schema.org/keyword/minLength", "minProperties": "https://json-schema.org/keyword/minProperties", "minimum": "https://json-schema.org/keyword/minimum", "multipleOf": "https://json-schema.org/keyword/multipleOf", "requireAllExcept": "https://json-schema.org/keyword/requireAllExcept", "pattern": "https://json-schema.org/keyword/pattern", "required": "https://json-schema.org/keyword/required", "type": "https://json-schema.org/keyword/type", "uniqueItems": "https://json-schema.org/keyword/uniqueItems" }); defineVocabulary("https://json-schema.org/vocab/meta-data", { "default": "https://json-schema.org/keyword/default", "deprecated": "https://json-schema.org/keyword/deprecated", "description": "https://json-schema.org/keyword/description", "examples": "https://json-schema.org/keyword/examples", "readOnly": "https://json-schema.org/keyword/readOnly", "title": "https://json-schema.org/keyword/title", "writeOnly": "https://json-schema.org/keyword/writeOnly" }); defineVocabulary("https://json-schema.org/vocab/format-annotation", { "format": "https://json-schema.org/keyword/format" }); defineVocabulary("https://json-schema.org/vocab/format-assertion", { "format": "https://json-schema.org/keyword/format-assertion" }); defineVocabulary("https://json-schema.org/vocab/content", { "contentEncoding": "https://json-schema.org/keyword/contentEncoding", "contentMediaType": "https://json-schema.org/keyword/contentMediaType", "contentSchema": "https://json-schema.org/keyword/contentSchema" }); defineVocabulary("https://json-schema.org/vocab/unevaluated", { "unevaluatedItems": "https://json-schema.org/keyword/unevaluatedItems", "unevaluatedProperties": "https://json-schema.org/keyword/unevaluatedProperties" }); const dialectId = "https://json-schema.org/validation"; loadDialect(dialectId, { "https://json-schema.org/vocab/core": true, "https://json-schema.org/vocab/applicator": true, "https://json-schema.org/vocab/validation": true, "https://json-schema.org/vocab/meta-data": true, "https://json-schema.org/vocab/format-annotation": true, "https://json-schema.org/vocab/content": true, "https://json-schema.org/vocab/unevaluated": true }); registerSchema(metaSchema, dialectId); registerSchema(coreMetaSchema, "https://json-schema.org/meta/core"); registerSchema(applicatorMetaSchema, "https://json-schema.org/meta/applicator"); registerSchema(validationMetaSchema, "https://json-schema.org/meta/validation"); registerSchema(metaDataMetaSchema, "https://json-schema.org/meta/meta-data"); registerSchema(formatAnnotationMetaSchema, "https://json-schema.org/meta/format-annotation"); registerSchema(formatAssertionMetaSchema, "https://json-schema.org/meta/format-assertion"); registerSchema(contentMetaSchema, "https://json-schema.org/meta/content"); registerSchema(unevaluatedMetaSchema, "https://json-schema.org/meta/unevaluated"); export * from "../lib/index.js";