json-schema-library 11.3.0 → 11.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +21 -2
- package/README.md +44 -35
- package/bowtie/bowtie.test.ts +80 -0
- package/bowtie/package.json +1 -1
- package/dist/chunk-350yNsax.cjs +1 -0
- package/dist/formats.cjs +2 -0
- package/dist/formats.cjs.map +1 -0
- package/dist/formats.d.cts +8 -0
- package/dist/formats.d.mts +8 -0
- package/dist/formats.mjs +2 -0
- package/dist/formats.mjs.map +1 -0
- package/dist/index.cjs +2 -1
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +4 -4
- package/dist/index.d.mts +4 -4
- package/dist/index.mjs +2 -1
- package/dist/index.mjs.map +1 -0
- package/dist/jlib.js +2 -2
- package/dist/jlibFormats.iife.js +1 -0
- package/dist/jlibRemote.iife.js +1 -0
- package/dist/{remotes/index.cjs → remotes.cjs} +2 -1
- package/dist/remotes.cjs.map +1 -0
- package/dist/remotes.d.cts +8 -0
- package/dist/remotes.d.mts +8 -0
- package/dist/{remotes/index.mjs → remotes.mjs} +2 -1
- package/dist/remotes.mjs.map +1 -0
- package/dist/{types-B2wwNWyo.d.cts → types-BDjKcTVR.d.cts} +6 -3
- package/dist/{types-BhTU1l2h.d.mts → types-CqkCJmt8.d.mts} +6 -3
- package/package.json +21 -15
- package/src/SchemaNode.ts +15 -19
- package/src/compileSchema.ts +1 -3
- package/src/errors/errors.ts +3 -2
- package/src/formats/additionalFormats.ts +118 -0
- package/src/formats/formats.ts +3 -111
- package/src/keywords/$defs.ts +3 -0
- package/src/keywords/additionalProperties.ts +1 -0
- package/src/keywords/allOf.ts +2 -5
- package/src/keywords/anyOf.ts +2 -4
- package/src/keywords/dependencies.ts +2 -0
- package/src/keywords/dependentSchemas.ts +2 -3
- package/src/keywords/format.ts +8 -0
- package/src/keywords/ifthenelse.ts +4 -9
- package/src/keywords/oneOf.ts +2 -5
- package/src/keywords/patternProperties.ts +5 -1
- package/src/keywords/prefixItems.ts +14 -9
- package/src/keywords/properties.ts +2 -3
- package/src/keywords/propertyDependencies.ts +2 -3
- package/src/keywords/propertyNames.ts +1 -1
- package/src/utils/collectValidationErrors.ts +9 -0
- package/src/validateSchema.test.ts +29 -30
- package/tsconfig.json +1 -0
- package/tsconfig.test.json +1 -0
- package/tsdown.config.ts +5 -2
- package/tsdown.iife.config.ts +29 -8
- package/dist/remotes/index.d.cts +0 -7
- package/dist/remotes/index.d.mts +0 -7
|
@@ -1 +1,2 @@
|
|
|
1
|
-
const e=[{id:`http://json-schema.org/draft-04/schema#`,$schema:`http://json-schema.org/draft-04/schema#`,description:`Core schema meta-schema`,definitions:{schemaArray:{type:`array`,minItems:1,items:{$ref:`#`}},positiveInteger:{type:`integer`,minimum:0},positiveIntegerDefault0:{allOf:[{$ref:`#/definitions/positiveInteger`},{default:0}]},simpleTypes:{enum:[`array`,`boolean`,`integer`,`null`,`number`,`object`,`string`]},stringArray:{type:`array`,items:{type:`string`},minItems:1,uniqueItems:!0}},type:`object`,properties:{id:{type:`string`,format:`uri`},$schema:{type:`string`,format:`uri`},title:{type:`string`},description:{type:`string`},default:{},multipleOf:{type:`number`,minimum:0,exclusiveMinimum:!0},maximum:{type:`number`},exclusiveMaximum:{type:`boolean`,default:!1},minimum:{type:`number`},exclusiveMinimum:{type:`boolean`,default:!1},maxLength:{$ref:`#/definitions/positiveInteger`},minLength:{$ref:`#/definitions/positiveIntegerDefault0`},pattern:{type:`string`,format:`regex`},additionalItems:{anyOf:[{type:`boolean`},{$ref:`#`}],default:{}},items:{anyOf:[{$ref:`#`},{$ref:`#/definitions/schemaArray`}],default:{}},maxItems:{$ref:`#/definitions/positiveInteger`},minItems:{$ref:`#/definitions/positiveIntegerDefault0`},uniqueItems:{type:`boolean`,default:!1},maxProperties:{$ref:`#/definitions/positiveInteger`},minProperties:{$ref:`#/definitions/positiveIntegerDefault0`},required:{$ref:`#/definitions/stringArray`},additionalProperties:{anyOf:[{type:`boolean`},{$ref:`#`}],default:{}},definitions:{type:`object`,additionalProperties:{$ref:`#`},default:{}},properties:{type:`object`,additionalProperties:{$ref:`#`},default:{}},patternProperties:{type:`object`,additionalProperties:{$ref:`#`},default:{}},dependencies:{type:`object`,additionalProperties:{anyOf:[{$ref:`#`},{$ref:`#/definitions/stringArray`}]}},enum:{type:`array`,minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:`#/definitions/simpleTypes`},{type:`array`,items:{$ref:`#/definitions/simpleTypes`},minItems:1,uniqueItems:!0}]},allOf:{$ref:`#/definitions/schemaArray`},anyOf:{$ref:`#/definitions/schemaArray`},oneOf:{$ref:`#/definitions/schemaArray`},not:{$ref:`#`}},dependencies:{exclusiveMaximum:[`maximum`],exclusiveMinimum:[`minimum`]},default:{}},{$schema:`http://json-schema.org/draft-06/schema#`,$id:`http://json-schema.org/draft-06/schema#`,title:`Core schema meta-schema`,definitions:{schemaArray:{type:`array`,minItems:1,items:{$ref:`#`}},nonNegativeInteger:{type:`integer`,minimum:0},nonNegativeIntegerDefault0:{allOf:[{$ref:`#/definitions/nonNegativeInteger`},{default:0}]},simpleTypes:{enum:[`array`,`boolean`,`integer`,`null`,`number`,`object`,`string`]},stringArray:{type:`array`,items:{type:`string`},uniqueItems:!0,default:[]}},type:[`object`,`boolean`],properties:{$id:{type:`string`,format:`uri-reference`},$schema:{type:`string`,format:`uri`},$ref:{type:`string`,format:`uri-reference`},title:{type:`string`},description:{type:`string`},default:{},examples:{type:`array`,items:{}},multipleOf:{type:`number`,exclusiveMinimum:0},maximum:{type:`number`},exclusiveMaximum:{type:`number`},minimum:{type:`number`},exclusiveMinimum:{type:`number`},maxLength:{$ref:`#/definitions/nonNegativeInteger`},minLength:{$ref:`#/definitions/nonNegativeIntegerDefault0`},pattern:{type:`string`,format:`regex`},additionalItems:{$ref:`#`},items:{anyOf:[{$ref:`#`},{$ref:`#/definitions/schemaArray`}],default:{}},maxItems:{$ref:`#/definitions/nonNegativeInteger`},minItems:{$ref:`#/definitions/nonNegativeIntegerDefault0`},uniqueItems:{type:`boolean`,default:!1},contains:{$ref:`#`},maxProperties:{$ref:`#/definitions/nonNegativeInteger`},minProperties:{$ref:`#/definitions/nonNegativeIntegerDefault0`},required:{$ref:`#/definitions/stringArray`},additionalProperties:{$ref:`#`},definitions:{type:`object`,additionalProperties:{$ref:`#`},default:{}},properties:{type:`object`,additionalProperties:{$ref:`#`},default:{}},patternProperties:{type:`object`,additionalProperties:{$ref:`#`},propertyNames:{format:`regex`},default:{}},dependencies:{type:`object`,additionalProperties:{anyOf:[{$ref:`#`},{$ref:`#/definitions/stringArray`}]}},propertyNames:{$ref:`#`},const:{},enum:{type:`array`,minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:`#/definitions/simpleTypes`},{type:`array`,items:{$ref:`#/definitions/simpleTypes`},minItems:1,uniqueItems:!0}]},format:{type:`string`},allOf:{$ref:`#/definitions/schemaArray`},anyOf:{$ref:`#/definitions/schemaArray`},oneOf:{$ref:`#/definitions/schemaArray`},not:{$ref:`#`}},default:{}},{$schema:`http://json-schema.org/draft-07/schema#`,$id:`http://json-schema.org/draft-07/schema#`,title:`Core schema meta-schema`,definitions:{schemaArray:{type:`array`,minItems:1,items:{$ref:`#`}},nonNegativeInteger:{type:`integer`,minimum:0},nonNegativeIntegerDefault0:{allOf:[{$ref:`#/definitions/nonNegativeInteger`},{default:0}]},simpleTypes:{enum:[`array`,`boolean`,`integer`,`null`,`number`,`object`,`string`]},stringArray:{type:`array`,items:{type:`string`},uniqueItems:!0,default:[]}},type:[`object`,`boolean`],properties:{$id:{type:`string`,format:`uri-reference`},$schema:{type:`string`,format:`uri`},$ref:{type:`string`,format:`uri-reference`},$comment:{type:`string`},title:{type:`string`},description:{type:`string`},default:!0,readOnly:{type:`boolean`,default:!1},writeOnly:{type:`boolean`,default:!1},examples:{type:`array`,items:!0},multipleOf:{type:`number`,exclusiveMinimum:0},maximum:{type:`number`},exclusiveMaximum:{type:`number`},minimum:{type:`number`},exclusiveMinimum:{type:`number`},maxLength:{$ref:`#/definitions/nonNegativeInteger`},minLength:{$ref:`#/definitions/nonNegativeIntegerDefault0`},pattern:{type:`string`,format:`regex`},additionalItems:{$ref:`#`},items:{anyOf:[{$ref:`#`},{$ref:`#/definitions/schemaArray`}],default:!0},maxItems:{$ref:`#/definitions/nonNegativeInteger`},minItems:{$ref:`#/definitions/nonNegativeIntegerDefault0`},uniqueItems:{type:`boolean`,default:!1},contains:{$ref:`#`},maxProperties:{$ref:`#/definitions/nonNegativeInteger`},minProperties:{$ref:`#/definitions/nonNegativeIntegerDefault0`},required:{$ref:`#/definitions/stringArray`},additionalProperties:{$ref:`#`},definitions:{type:`object`,additionalProperties:{$ref:`#`},default:{}},properties:{type:`object`,additionalProperties:{$ref:`#`},default:{}},patternProperties:{type:`object`,additionalProperties:{$ref:`#`},propertyNames:{format:`regex`},default:{}},dependencies:{type:`object`,additionalProperties:{anyOf:[{$ref:`#`},{$ref:`#/definitions/stringArray`}]}},propertyNames:{$ref:`#`},const:!0,enum:{type:`array`,items:!0,minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:`#/definitions/simpleTypes`},{type:`array`,items:{$ref:`#/definitions/simpleTypes`},minItems:1,uniqueItems:!0}]},format:{type:`string`},contentMediaType:{type:`string`},contentEncoding:{type:`string`},if:{$ref:`#`},then:{$ref:`#`},else:{$ref:`#`},allOf:{$ref:`#/definitions/schemaArray`},anyOf:{$ref:`#/definitions/schemaArray`},oneOf:{$ref:`#/definitions/schemaArray`},not:{$ref:`#`}},default:!0},{$schema:`https://json-schema.org/draft/2019-09/schema`,$id:`https://json-schema.org/draft/2019-09/schema`,$vocabulary:{"https://json-schema.org/draft/2019-09/vocab/core":!0,"https://json-schema.org/draft/2019-09/vocab/applicator":!0,"https://json-schema.org/draft/2019-09/vocab/validation":!0,"https://json-schema.org/draft/2019-09/vocab/meta-data":!0,"https://json-schema.org/draft/2019-09/vocab/format":!1,"https://json-schema.org/draft/2019-09/vocab/content":!0},$recursiveAnchor:!0,title:`Core and Validation specifications meta-schema`,allOf:[{$ref:`meta/core`},{$ref:`meta/applicator`},{$ref:`meta/validation`},{$ref:`meta/meta-data`},{$ref:`meta/format`},{$ref:`meta/content`}],type:[`object`,`boolean`],properties:{definitions:{$comment:`While no longer an official keyword as it is replaced by $defs, this keyword is retained in the meta-schema to prevent incompatible extensions as it remains in common use.`,type:`object`,additionalProperties:{$recursiveRef:`#`},default:{}},dependencies:{$comment:`"dependencies" is no longer a keyword, but schema authors should avoid redefining it to facilitate a smooth transition to "dependentSchemas" and "dependentRequired"`,type:`object`,additionalProperties:{anyOf:[{$recursiveRef:`#`},{$ref:`meta/validation#/$defs/stringArray`}]}}}},{$schema:`https://json-schema.org/draft/2019-09/schema`,$id:`https://json-schema.org/draft/2019-09/meta/applicator`,$recursiveAnchor:!0,title:`Applicator vocabulary meta-schema`,type:[`object`,`boolean`],properties:{additionalItems:{$recursiveRef:`#`},unevaluatedItems:{$recursiveRef:`#`},items:{anyOf:[{$recursiveRef:`#`},{$ref:`#/$defs/schemaArray`}]},contains:{$recursiveRef:`#`},additionalProperties:{$recursiveRef:`#`},unevaluatedProperties:{$recursiveRef:`#`},properties:{type:`object`,additionalProperties:{$recursiveRef:`#`},default:{}},patternProperties:{type:`object`,additionalProperties:{$recursiveRef:`#`},propertyNames:{format:`regex`},default:{}},dependentSchemas:{type:`object`,additionalProperties:{$recursiveRef:`#`}},propertyNames:{$recursiveRef:`#`},if:{$recursiveRef:`#`},then:{$recursiveRef:`#`},else:{$recursiveRef:`#`},allOf:{$ref:`#/$defs/schemaArray`},anyOf:{$ref:`#/$defs/schemaArray`},oneOf:{$ref:`#/$defs/schemaArray`},not:{$recursiveRef:`#`}},$defs:{schemaArray:{type:`array`,minItems:1,items:{$recursiveRef:`#`}}}},{$schema:`https://json-schema.org/draft/2019-09/schema`,$id:`https://json-schema.org/draft/2019-09/meta/content`,$recursiveAnchor:!0,title:`Content vocabulary meta-schema`,type:[`object`,`boolean`],properties:{contentMediaType:{type:`string`},contentEncoding:{type:`string`},contentSchema:{$recursiveRef:`#`}}},{$schema:`https://json-schema.org/draft/2019-09/schema`,$id:`https://json-schema.org/draft/2019-09/meta/core`,$recursiveAnchor:!0,title:`Core vocabulary meta-schema`,type:[`object`,`boolean`],properties:{$id:{type:`string`,format:`uri-reference`,$comment:`Non-empty fragments not allowed.`,pattern:`^[^#]*#?$`},$schema:{type:`string`,format:`uri`},$anchor:{type:`string`,pattern:`^[A-Za-z][-A-Za-z0-9.:_]*$`},$ref:{type:`string`,format:`uri-reference`},$recursiveRef:{type:`string`,format:`uri-reference`},$recursiveAnchor:{type:`boolean`,default:!1},$vocabulary:{type:`object`,propertyNames:{type:`string`,format:`uri`},additionalProperties:{type:`boolean`}},$comment:{type:`string`},$defs:{type:`object`,additionalProperties:{$recursiveRef:`#`},default:{}}}},{$schema:`https://json-schema.org/draft/2019-09/schema`,$id:`https://json-schema.org/draft/2019-09/meta/format`,$recursiveAnchor:!0,title:`Format vocabulary meta-schema`,type:[`object`,`boolean`],properties:{format:{type:`string`}}},{$schema:`https://json-schema.org/draft/2019-09/schema`,$id:`https://json-schema.org/draft/2019-09/meta/meta-data`,$recursiveAnchor:!0,title:`Meta-data vocabulary meta-schema`,type:[`object`,`boolean`],properties:{title:{type:`string`},description:{type:`string`},default:!0,deprecated:{type:`boolean`,default:!1},readOnly:{type:`boolean`,default:!1},writeOnly:{type:`boolean`,default:!1},examples:{type:`array`,items:!0}}},{$schema:`https://json-schema.org/draft/2019-09/schema`,$id:`https://json-schema.org/draft/2019-09/meta/validation`,$recursiveAnchor:!0,title:`Validation vocabulary meta-schema`,type:[`object`,`boolean`],properties:{multipleOf:{type:`number`,exclusiveMinimum:0},maximum:{type:`number`},exclusiveMaximum:{type:`number`},minimum:{type:`number`},exclusiveMinimum:{type:`number`},maxLength:{$ref:`#/$defs/nonNegativeInteger`},minLength:{$ref:`#/$defs/nonNegativeIntegerDefault0`},pattern:{type:`string`,format:`regex`},maxItems:{$ref:`#/$defs/nonNegativeInteger`},minItems:{$ref:`#/$defs/nonNegativeIntegerDefault0`},uniqueItems:{type:`boolean`,default:!1},maxContains:{$ref:`#/$defs/nonNegativeInteger`},minContains:{$ref:`#/$defs/nonNegativeInteger`,default:1},maxProperties:{$ref:`#/$defs/nonNegativeInteger`},minProperties:{$ref:`#/$defs/nonNegativeIntegerDefault0`},required:{$ref:`#/$defs/stringArray`},dependentRequired:{type:`object`,additionalProperties:{$ref:`#/$defs/stringArray`}},const:!0,enum:{type:`array`,items:!0},type:{anyOf:[{$ref:`#/$defs/simpleTypes`},{type:`array`,items:{$ref:`#/$defs/simpleTypes`},minItems:1,uniqueItems:!0}]}},$defs:{nonNegativeInteger:{type:`integer`,minimum:0},nonNegativeIntegerDefault0:{$ref:`#/$defs/nonNegativeInteger`,default:0},simpleTypes:{enum:[`array`,`boolean`,`integer`,`null`,`number`,`object`,`string`]},stringArray:{type:`array`,items:{type:`string`},uniqueItems:!0,default:[]}}},{$schema:`https://json-schema.org/draft/2020-12/schema`,$id:`https://json-schema.org/draft/2020-12/schema`,$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/core":!0,"https://json-schema.org/draft/2020-12/vocab/applicator":!0,"https://json-schema.org/draft/2020-12/vocab/unevaluated":!0,"https://json-schema.org/draft/2020-12/vocab/validation":!0,"https://json-schema.org/draft/2020-12/vocab/meta-data":!0,"https://json-schema.org/draft/2020-12/vocab/format-annotation":!0,"https://json-schema.org/draft/2020-12/vocab/content":!0},$dynamicAnchor:`meta`,title:`Core and Validation specifications meta-schema`,allOf:[{$ref:`meta/core`},{$ref:`meta/applicator`},{$ref:`meta/unevaluated`},{$ref:`meta/validation`},{$ref:`meta/meta-data`},{$ref:`meta/format-annotation`},{$ref:`meta/content`}],type:[`object`,`boolean`],$comment:`This meta-schema also defines keywords that have appeared in previous drafts in order to prevent incompatible extensions as they remain in common use.`,properties:{definitions:{$comment:`"definitions" has been replaced by "$defs".`,type:`object`,additionalProperties:{$dynamicRef:`#meta`},deprecated:!0,default:{}},dependencies:{$comment:`"dependencies" has been split and replaced by "dependentSchemas" and "dependentRequired" in order to serve their differing semantics.`,type:`object`,additionalProperties:{anyOf:[{$dynamicRef:`#meta`},{$ref:`meta/validation#/$defs/stringArray`}]},deprecated:!0,default:{}},$recursiveAnchor:{$comment:`"$recursiveAnchor" has been replaced by "$dynamicAnchor".`,$ref:`meta/core#/$defs/anchorString`,deprecated:!0},$recursiveRef:{$comment:`"$recursiveRef" has been replaced by "$dynamicRef".`,$ref:`meta/core#/$defs/uriReferenceString`,deprecated:!0}}},{$schema:`https://json-schema.org/draft/2020-12/schema`,$id:`https://json-schema.org/draft/2020-12/meta/applicator`,$dynamicAnchor:`meta`,title:`Applicator vocabulary meta-schema`,type:[`object`,`boolean`],properties:{prefixItems:{$ref:`#/$defs/schemaArray`},items:{$dynamicRef:`#meta`},contains:{$dynamicRef:`#meta`},additionalProperties:{$dynamicRef:`#meta`},properties:{type:`object`,additionalProperties:{$dynamicRef:`#meta`},default:{}},patternProperties:{type:`object`,additionalProperties:{$dynamicRef:`#meta`},propertyNames:{format:`regex`},default:{}},dependentSchemas:{type:`object`,additionalProperties:{$dynamicRef:`#meta`},default:{}},propertyNames:{$dynamicRef:`#meta`},if:{$dynamicRef:`#meta`},then:{$dynamicRef:`#meta`},else:{$dynamicRef:`#meta`},allOf:{$ref:`#/$defs/schemaArray`},anyOf:{$ref:`#/$defs/schemaArray`},oneOf:{$ref:`#/$defs/schemaArray`},not:{$dynamicRef:`#meta`}},$defs:{schemaArray:{type:`array`,minItems:1,items:{$dynamicRef:`#meta`}}}},{$schema:`https://json-schema.org/draft/2020-12/schema`,$id:`https://json-schema.org/draft/2020-12/meta/content`,$dynamicAnchor:`meta`,title:`Content vocabulary meta-schema`,type:[`object`,`boolean`],properties:{contentEncoding:{type:`string`},contentMediaType:{type:`string`},contentSchema:{$dynamicRef:`#meta`}}},{$schema:`https://json-schema.org/draft/2020-12/schema`,$id:`https://json-schema.org/draft/2020-12/meta/core`,$dynamicAnchor:`meta`,title:`Core vocabulary meta-schema`,type:[`object`,`boolean`],properties:{$id:{$ref:`#/$defs/uriReferenceString`,$comment:`Non-empty fragments not allowed.`,pattern:`^[^#]*#?$`},$schema:{$ref:`#/$defs/uriString`},$ref:{$ref:`#/$defs/uriReferenceString`},$anchor:{$ref:`#/$defs/anchorString`},$dynamicRef:{$ref:`#/$defs/uriReferenceString`},$dynamicAnchor:{$ref:`#/$defs/anchorString`},$vocabulary:{type:`object`,propertyNames:{$ref:`#/$defs/uriString`},additionalProperties:{type:`boolean`}},$comment:{type:`string`},$defs:{type:`object`,additionalProperties:{$dynamicRef:`#meta`}}},$defs:{anchorString:{type:`string`,pattern:`^[A-Za-z_][-A-Za-z0-9._]*$`},uriString:{type:`string`,format:`uri`},uriReferenceString:{type:`string`,format:`uri-reference`}}},{$schema:`https://json-schema.org/draft/2020-12/schema`,$id:`https://json-schema.org/draft/2020-12/meta/format-annotation`,$dynamicAnchor:`meta`,title:`Format vocabulary meta-schema for annotation results`,type:[`object`,`boolean`],properties:{format:{type:`string`}}},{$schema:`https://json-schema.org/draft/2020-12/schema`,$id:`https://json-schema.org/draft/2020-12/meta/format-assertion`,$dynamicAnchor:`meta`,title:`Format vocabulary meta-schema for assertion results`,type:[`object`,`boolean`],properties:{format:{type:`string`}}},{$schema:`https://json-schema.org/draft/2020-12/schema`,$id:`https://json-schema.org/draft/2020-12/meta/meta-data`,$dynamicAnchor:`meta`,title:`Meta-data vocabulary meta-schema`,type:[`object`,`boolean`],properties:{title:{type:`string`},description:{type:`string`},default:!0,deprecated:{type:`boolean`,default:!1},readOnly:{type:`boolean`,default:!1},writeOnly:{type:`boolean`,default:!1},examples:{type:`array`,items:!0}}},{$schema:`https://json-schema.org/draft/2020-12/schema`,$id:`https://json-schema.org/draft/2020-12/meta/unevaluated`,$dynamicAnchor:`meta`,title:`Unevaluated applicator vocabulary meta-schema`,type:[`object`,`boolean`],properties:{unevaluatedItems:{$dynamicRef:`#meta`},unevaluatedProperties:{$dynamicRef:`#meta`}}},{$schema:`https://json-schema.org/draft/2020-12/schema`,$id:`https://json-schema.org/draft/2020-12/meta/validation`,$dynamicAnchor:`meta`,title:`Validation vocabulary meta-schema`,type:[`object`,`boolean`],properties:{type:{anyOf:[{$ref:`#/$defs/simpleTypes`},{type:`array`,items:{$ref:`#/$defs/simpleTypes`},minItems:1,uniqueItems:!0}]},const:!0,enum:{type:`array`,items:!0},multipleOf:{type:`number`,exclusiveMinimum:0},maximum:{type:`number`},exclusiveMaximum:{type:`number`},minimum:{type:`number`},exclusiveMinimum:{type:`number`},maxLength:{$ref:`#/$defs/nonNegativeInteger`},minLength:{$ref:`#/$defs/nonNegativeIntegerDefault0`},pattern:{type:`string`,format:`regex`},maxItems:{$ref:`#/$defs/nonNegativeInteger`},minItems:{$ref:`#/$defs/nonNegativeIntegerDefault0`},uniqueItems:{type:`boolean`,default:!1},maxContains:{$ref:`#/$defs/nonNegativeInteger`},minContains:{$ref:`#/$defs/nonNegativeInteger`,default:1},maxProperties:{$ref:`#/$defs/nonNegativeInteger`},minProperties:{$ref:`#/$defs/nonNegativeIntegerDefault0`},required:{$ref:`#/$defs/stringArray`},dependentRequired:{type:`object`,additionalProperties:{$ref:`#/$defs/stringArray`}}},$defs:{nonNegativeInteger:{type:`integer`,minimum:0},nonNegativeIntegerDefault0:{$ref:`#/$defs/nonNegativeInteger`,default:0},simpleTypes:{enum:[`array`,`boolean`,`integer`,`null`,`number`,`object`,`string`]},stringArray:{type:`array`,items:{type:`string`},uniqueItems:!0,default:[]}}}];export{e as remotes};
|
|
1
|
+
const e=[{id:`http://json-schema.org/draft-04/schema#`,$schema:`http://json-schema.org/draft-04/schema#`,description:`Core schema meta-schema`,definitions:{schemaArray:{type:`array`,minItems:1,items:{$ref:`#`}},positiveInteger:{type:`integer`,minimum:0},positiveIntegerDefault0:{allOf:[{$ref:`#/definitions/positiveInteger`},{default:0}]},simpleTypes:{enum:[`array`,`boolean`,`integer`,`null`,`number`,`object`,`string`]},stringArray:{type:`array`,items:{type:`string`},minItems:1,uniqueItems:!0}},type:`object`,properties:{id:{type:`string`,format:`uri`},$schema:{type:`string`,format:`uri`},title:{type:`string`},description:{type:`string`},default:{},multipleOf:{type:`number`,minimum:0,exclusiveMinimum:!0},maximum:{type:`number`},exclusiveMaximum:{type:`boolean`,default:!1},minimum:{type:`number`},exclusiveMinimum:{type:`boolean`,default:!1},maxLength:{$ref:`#/definitions/positiveInteger`},minLength:{$ref:`#/definitions/positiveIntegerDefault0`},pattern:{type:`string`,format:`regex`},additionalItems:{anyOf:[{type:`boolean`},{$ref:`#`}],default:{}},items:{anyOf:[{$ref:`#`},{$ref:`#/definitions/schemaArray`}],default:{}},maxItems:{$ref:`#/definitions/positiveInteger`},minItems:{$ref:`#/definitions/positiveIntegerDefault0`},uniqueItems:{type:`boolean`,default:!1},maxProperties:{$ref:`#/definitions/positiveInteger`},minProperties:{$ref:`#/definitions/positiveIntegerDefault0`},required:{$ref:`#/definitions/stringArray`},additionalProperties:{anyOf:[{type:`boolean`},{$ref:`#`}],default:{}},definitions:{type:`object`,additionalProperties:{$ref:`#`},default:{}},properties:{type:`object`,additionalProperties:{$ref:`#`},default:{}},patternProperties:{type:`object`,additionalProperties:{$ref:`#`},default:{}},dependencies:{type:`object`,additionalProperties:{anyOf:[{$ref:`#`},{$ref:`#/definitions/stringArray`}]}},enum:{type:`array`,minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:`#/definitions/simpleTypes`},{type:`array`,items:{$ref:`#/definitions/simpleTypes`},minItems:1,uniqueItems:!0}]},allOf:{$ref:`#/definitions/schemaArray`},anyOf:{$ref:`#/definitions/schemaArray`},oneOf:{$ref:`#/definitions/schemaArray`},not:{$ref:`#`}},dependencies:{exclusiveMaximum:[`maximum`],exclusiveMinimum:[`minimum`]},default:{}},{$schema:`http://json-schema.org/draft-06/schema#`,$id:`http://json-schema.org/draft-06/schema#`,title:`Core schema meta-schema`,definitions:{schemaArray:{type:`array`,minItems:1,items:{$ref:`#`}},nonNegativeInteger:{type:`integer`,minimum:0},nonNegativeIntegerDefault0:{allOf:[{$ref:`#/definitions/nonNegativeInteger`},{default:0}]},simpleTypes:{enum:[`array`,`boolean`,`integer`,`null`,`number`,`object`,`string`]},stringArray:{type:`array`,items:{type:`string`},uniqueItems:!0,default:[]}},type:[`object`,`boolean`],properties:{$id:{type:`string`,format:`uri-reference`},$schema:{type:`string`,format:`uri`},$ref:{type:`string`,format:`uri-reference`},title:{type:`string`},description:{type:`string`},default:{},examples:{type:`array`,items:{}},multipleOf:{type:`number`,exclusiveMinimum:0},maximum:{type:`number`},exclusiveMaximum:{type:`number`},minimum:{type:`number`},exclusiveMinimum:{type:`number`},maxLength:{$ref:`#/definitions/nonNegativeInteger`},minLength:{$ref:`#/definitions/nonNegativeIntegerDefault0`},pattern:{type:`string`,format:`regex`},additionalItems:{$ref:`#`},items:{anyOf:[{$ref:`#`},{$ref:`#/definitions/schemaArray`}],default:{}},maxItems:{$ref:`#/definitions/nonNegativeInteger`},minItems:{$ref:`#/definitions/nonNegativeIntegerDefault0`},uniqueItems:{type:`boolean`,default:!1},contains:{$ref:`#`},maxProperties:{$ref:`#/definitions/nonNegativeInteger`},minProperties:{$ref:`#/definitions/nonNegativeIntegerDefault0`},required:{$ref:`#/definitions/stringArray`},additionalProperties:{$ref:`#`},definitions:{type:`object`,additionalProperties:{$ref:`#`},default:{}},properties:{type:`object`,additionalProperties:{$ref:`#`},default:{}},patternProperties:{type:`object`,additionalProperties:{$ref:`#`},propertyNames:{format:`regex`},default:{}},dependencies:{type:`object`,additionalProperties:{anyOf:[{$ref:`#`},{$ref:`#/definitions/stringArray`}]}},propertyNames:{$ref:`#`},const:{},enum:{type:`array`,minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:`#/definitions/simpleTypes`},{type:`array`,items:{$ref:`#/definitions/simpleTypes`},minItems:1,uniqueItems:!0}]},format:{type:`string`},allOf:{$ref:`#/definitions/schemaArray`},anyOf:{$ref:`#/definitions/schemaArray`},oneOf:{$ref:`#/definitions/schemaArray`},not:{$ref:`#`}},default:{}},{$schema:`http://json-schema.org/draft-07/schema#`,$id:`http://json-schema.org/draft-07/schema#`,title:`Core schema meta-schema`,definitions:{schemaArray:{type:`array`,minItems:1,items:{$ref:`#`}},nonNegativeInteger:{type:`integer`,minimum:0},nonNegativeIntegerDefault0:{allOf:[{$ref:`#/definitions/nonNegativeInteger`},{default:0}]},simpleTypes:{enum:[`array`,`boolean`,`integer`,`null`,`number`,`object`,`string`]},stringArray:{type:`array`,items:{type:`string`},uniqueItems:!0,default:[]}},type:[`object`,`boolean`],properties:{$id:{type:`string`,format:`uri-reference`},$schema:{type:`string`,format:`uri`},$ref:{type:`string`,format:`uri-reference`},$comment:{type:`string`},title:{type:`string`},description:{type:`string`},default:!0,readOnly:{type:`boolean`,default:!1},writeOnly:{type:`boolean`,default:!1},examples:{type:`array`,items:!0},multipleOf:{type:`number`,exclusiveMinimum:0},maximum:{type:`number`},exclusiveMaximum:{type:`number`},minimum:{type:`number`},exclusiveMinimum:{type:`number`},maxLength:{$ref:`#/definitions/nonNegativeInteger`},minLength:{$ref:`#/definitions/nonNegativeIntegerDefault0`},pattern:{type:`string`,format:`regex`},additionalItems:{$ref:`#`},items:{anyOf:[{$ref:`#`},{$ref:`#/definitions/schemaArray`}],default:!0},maxItems:{$ref:`#/definitions/nonNegativeInteger`},minItems:{$ref:`#/definitions/nonNegativeIntegerDefault0`},uniqueItems:{type:`boolean`,default:!1},contains:{$ref:`#`},maxProperties:{$ref:`#/definitions/nonNegativeInteger`},minProperties:{$ref:`#/definitions/nonNegativeIntegerDefault0`},required:{$ref:`#/definitions/stringArray`},additionalProperties:{$ref:`#`},definitions:{type:`object`,additionalProperties:{$ref:`#`},default:{}},properties:{type:`object`,additionalProperties:{$ref:`#`},default:{}},patternProperties:{type:`object`,additionalProperties:{$ref:`#`},propertyNames:{format:`regex`},default:{}},dependencies:{type:`object`,additionalProperties:{anyOf:[{$ref:`#`},{$ref:`#/definitions/stringArray`}]}},propertyNames:{$ref:`#`},const:!0,enum:{type:`array`,items:!0,minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:`#/definitions/simpleTypes`},{type:`array`,items:{$ref:`#/definitions/simpleTypes`},minItems:1,uniqueItems:!0}]},format:{type:`string`},contentMediaType:{type:`string`},contentEncoding:{type:`string`},if:{$ref:`#`},then:{$ref:`#`},else:{$ref:`#`},allOf:{$ref:`#/definitions/schemaArray`},anyOf:{$ref:`#/definitions/schemaArray`},oneOf:{$ref:`#/definitions/schemaArray`},not:{$ref:`#`}},default:!0},{$schema:`https://json-schema.org/draft/2019-09/schema`,$id:`https://json-schema.org/draft/2019-09/schema`,$vocabulary:{"https://json-schema.org/draft/2019-09/vocab/core":!0,"https://json-schema.org/draft/2019-09/vocab/applicator":!0,"https://json-schema.org/draft/2019-09/vocab/validation":!0,"https://json-schema.org/draft/2019-09/vocab/meta-data":!0,"https://json-schema.org/draft/2019-09/vocab/format":!1,"https://json-schema.org/draft/2019-09/vocab/content":!0},$recursiveAnchor:!0,title:`Core and Validation specifications meta-schema`,allOf:[{$ref:`meta/core`},{$ref:`meta/applicator`},{$ref:`meta/validation`},{$ref:`meta/meta-data`},{$ref:`meta/format`},{$ref:`meta/content`}],type:[`object`,`boolean`],properties:{definitions:{$comment:`While no longer an official keyword as it is replaced by $defs, this keyword is retained in the meta-schema to prevent incompatible extensions as it remains in common use.`,type:`object`,additionalProperties:{$recursiveRef:`#`},default:{}},dependencies:{$comment:`"dependencies" is no longer a keyword, but schema authors should avoid redefining it to facilitate a smooth transition to "dependentSchemas" and "dependentRequired"`,type:`object`,additionalProperties:{anyOf:[{$recursiveRef:`#`},{$ref:`meta/validation#/$defs/stringArray`}]}}}},{$schema:`https://json-schema.org/draft/2019-09/schema`,$id:`https://json-schema.org/draft/2019-09/meta/applicator`,$recursiveAnchor:!0,title:`Applicator vocabulary meta-schema`,type:[`object`,`boolean`],properties:{additionalItems:{$recursiveRef:`#`},unevaluatedItems:{$recursiveRef:`#`},items:{anyOf:[{$recursiveRef:`#`},{$ref:`#/$defs/schemaArray`}]},contains:{$recursiveRef:`#`},additionalProperties:{$recursiveRef:`#`},unevaluatedProperties:{$recursiveRef:`#`},properties:{type:`object`,additionalProperties:{$recursiveRef:`#`},default:{}},patternProperties:{type:`object`,additionalProperties:{$recursiveRef:`#`},propertyNames:{format:`regex`},default:{}},dependentSchemas:{type:`object`,additionalProperties:{$recursiveRef:`#`}},propertyNames:{$recursiveRef:`#`},if:{$recursiveRef:`#`},then:{$recursiveRef:`#`},else:{$recursiveRef:`#`},allOf:{$ref:`#/$defs/schemaArray`},anyOf:{$ref:`#/$defs/schemaArray`},oneOf:{$ref:`#/$defs/schemaArray`},not:{$recursiveRef:`#`}},$defs:{schemaArray:{type:`array`,minItems:1,items:{$recursiveRef:`#`}}}},{$schema:`https://json-schema.org/draft/2019-09/schema`,$id:`https://json-schema.org/draft/2019-09/meta/content`,$recursiveAnchor:!0,title:`Content vocabulary meta-schema`,type:[`object`,`boolean`],properties:{contentMediaType:{type:`string`},contentEncoding:{type:`string`},contentSchema:{$recursiveRef:`#`}}},{$schema:`https://json-schema.org/draft/2019-09/schema`,$id:`https://json-schema.org/draft/2019-09/meta/core`,$recursiveAnchor:!0,title:`Core vocabulary meta-schema`,type:[`object`,`boolean`],properties:{$id:{type:`string`,format:`uri-reference`,$comment:`Non-empty fragments not allowed.`,pattern:`^[^#]*#?$`},$schema:{type:`string`,format:`uri`},$anchor:{type:`string`,pattern:`^[A-Za-z][-A-Za-z0-9.:_]*$`},$ref:{type:`string`,format:`uri-reference`},$recursiveRef:{type:`string`,format:`uri-reference`},$recursiveAnchor:{type:`boolean`,default:!1},$vocabulary:{type:`object`,propertyNames:{type:`string`,format:`uri`},additionalProperties:{type:`boolean`}},$comment:{type:`string`},$defs:{type:`object`,additionalProperties:{$recursiveRef:`#`},default:{}}}},{$schema:`https://json-schema.org/draft/2019-09/schema`,$id:`https://json-schema.org/draft/2019-09/meta/format`,$recursiveAnchor:!0,title:`Format vocabulary meta-schema`,type:[`object`,`boolean`],properties:{format:{type:`string`}}},{$schema:`https://json-schema.org/draft/2019-09/schema`,$id:`https://json-schema.org/draft/2019-09/meta/meta-data`,$recursiveAnchor:!0,title:`Meta-data vocabulary meta-schema`,type:[`object`,`boolean`],properties:{title:{type:`string`},description:{type:`string`},default:!0,deprecated:{type:`boolean`,default:!1},readOnly:{type:`boolean`,default:!1},writeOnly:{type:`boolean`,default:!1},examples:{type:`array`,items:!0}}},{$schema:`https://json-schema.org/draft/2019-09/schema`,$id:`https://json-schema.org/draft/2019-09/meta/validation`,$recursiveAnchor:!0,title:`Validation vocabulary meta-schema`,type:[`object`,`boolean`],properties:{multipleOf:{type:`number`,exclusiveMinimum:0},maximum:{type:`number`},exclusiveMaximum:{type:`number`},minimum:{type:`number`},exclusiveMinimum:{type:`number`},maxLength:{$ref:`#/$defs/nonNegativeInteger`},minLength:{$ref:`#/$defs/nonNegativeIntegerDefault0`},pattern:{type:`string`,format:`regex`},maxItems:{$ref:`#/$defs/nonNegativeInteger`},minItems:{$ref:`#/$defs/nonNegativeIntegerDefault0`},uniqueItems:{type:`boolean`,default:!1},maxContains:{$ref:`#/$defs/nonNegativeInteger`},minContains:{$ref:`#/$defs/nonNegativeInteger`,default:1},maxProperties:{$ref:`#/$defs/nonNegativeInteger`},minProperties:{$ref:`#/$defs/nonNegativeIntegerDefault0`},required:{$ref:`#/$defs/stringArray`},dependentRequired:{type:`object`,additionalProperties:{$ref:`#/$defs/stringArray`}},const:!0,enum:{type:`array`,items:!0},type:{anyOf:[{$ref:`#/$defs/simpleTypes`},{type:`array`,items:{$ref:`#/$defs/simpleTypes`},minItems:1,uniqueItems:!0}]}},$defs:{nonNegativeInteger:{type:`integer`,minimum:0},nonNegativeIntegerDefault0:{$ref:`#/$defs/nonNegativeInteger`,default:0},simpleTypes:{enum:[`array`,`boolean`,`integer`,`null`,`number`,`object`,`string`]},stringArray:{type:`array`,items:{type:`string`},uniqueItems:!0,default:[]}}},{$schema:`https://json-schema.org/draft/2020-12/schema`,$id:`https://json-schema.org/draft/2020-12/schema`,$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/core":!0,"https://json-schema.org/draft/2020-12/vocab/applicator":!0,"https://json-schema.org/draft/2020-12/vocab/unevaluated":!0,"https://json-schema.org/draft/2020-12/vocab/validation":!0,"https://json-schema.org/draft/2020-12/vocab/meta-data":!0,"https://json-schema.org/draft/2020-12/vocab/format-annotation":!0,"https://json-schema.org/draft/2020-12/vocab/content":!0},$dynamicAnchor:`meta`,title:`Core and Validation specifications meta-schema`,allOf:[{$ref:`meta/core`},{$ref:`meta/applicator`},{$ref:`meta/unevaluated`},{$ref:`meta/validation`},{$ref:`meta/meta-data`},{$ref:`meta/format-annotation`},{$ref:`meta/content`}],type:[`object`,`boolean`],$comment:`This meta-schema also defines keywords that have appeared in previous drafts in order to prevent incompatible extensions as they remain in common use.`,properties:{definitions:{$comment:`"definitions" has been replaced by "$defs".`,type:`object`,additionalProperties:{$dynamicRef:`#meta`},deprecated:!0,default:{}},dependencies:{$comment:`"dependencies" has been split and replaced by "dependentSchemas" and "dependentRequired" in order to serve their differing semantics.`,type:`object`,additionalProperties:{anyOf:[{$dynamicRef:`#meta`},{$ref:`meta/validation#/$defs/stringArray`}]},deprecated:!0,default:{}},$recursiveAnchor:{$comment:`"$recursiveAnchor" has been replaced by "$dynamicAnchor".`,$ref:`meta/core#/$defs/anchorString`,deprecated:!0},$recursiveRef:{$comment:`"$recursiveRef" has been replaced by "$dynamicRef".`,$ref:`meta/core#/$defs/uriReferenceString`,deprecated:!0}}},{$schema:`https://json-schema.org/draft/2020-12/schema`,$id:`https://json-schema.org/draft/2020-12/meta/applicator`,$dynamicAnchor:`meta`,title:`Applicator vocabulary meta-schema`,type:[`object`,`boolean`],properties:{prefixItems:{$ref:`#/$defs/schemaArray`},items:{$dynamicRef:`#meta`},contains:{$dynamicRef:`#meta`},additionalProperties:{$dynamicRef:`#meta`},properties:{type:`object`,additionalProperties:{$dynamicRef:`#meta`},default:{}},patternProperties:{type:`object`,additionalProperties:{$dynamicRef:`#meta`},propertyNames:{format:`regex`},default:{}},dependentSchemas:{type:`object`,additionalProperties:{$dynamicRef:`#meta`},default:{}},propertyNames:{$dynamicRef:`#meta`},if:{$dynamicRef:`#meta`},then:{$dynamicRef:`#meta`},else:{$dynamicRef:`#meta`},allOf:{$ref:`#/$defs/schemaArray`},anyOf:{$ref:`#/$defs/schemaArray`},oneOf:{$ref:`#/$defs/schemaArray`},not:{$dynamicRef:`#meta`}},$defs:{schemaArray:{type:`array`,minItems:1,items:{$dynamicRef:`#meta`}}}},{$schema:`https://json-schema.org/draft/2020-12/schema`,$id:`https://json-schema.org/draft/2020-12/meta/content`,$dynamicAnchor:`meta`,title:`Content vocabulary meta-schema`,type:[`object`,`boolean`],properties:{contentEncoding:{type:`string`},contentMediaType:{type:`string`},contentSchema:{$dynamicRef:`#meta`}}},{$schema:`https://json-schema.org/draft/2020-12/schema`,$id:`https://json-schema.org/draft/2020-12/meta/core`,$dynamicAnchor:`meta`,title:`Core vocabulary meta-schema`,type:[`object`,`boolean`],properties:{$id:{$ref:`#/$defs/uriReferenceString`,$comment:`Non-empty fragments not allowed.`,pattern:`^[^#]*#?$`},$schema:{$ref:`#/$defs/uriString`},$ref:{$ref:`#/$defs/uriReferenceString`},$anchor:{$ref:`#/$defs/anchorString`},$dynamicRef:{$ref:`#/$defs/uriReferenceString`},$dynamicAnchor:{$ref:`#/$defs/anchorString`},$vocabulary:{type:`object`,propertyNames:{$ref:`#/$defs/uriString`},additionalProperties:{type:`boolean`}},$comment:{type:`string`},$defs:{type:`object`,additionalProperties:{$dynamicRef:`#meta`}}},$defs:{anchorString:{type:`string`,pattern:`^[A-Za-z_][-A-Za-z0-9._]*$`},uriString:{type:`string`,format:`uri`},uriReferenceString:{type:`string`,format:`uri-reference`}}},{$schema:`https://json-schema.org/draft/2020-12/schema`,$id:`https://json-schema.org/draft/2020-12/meta/format-annotation`,$dynamicAnchor:`meta`,title:`Format vocabulary meta-schema for annotation results`,type:[`object`,`boolean`],properties:{format:{type:`string`}}},{$schema:`https://json-schema.org/draft/2020-12/schema`,$id:`https://json-schema.org/draft/2020-12/meta/format-assertion`,$dynamicAnchor:`meta`,title:`Format vocabulary meta-schema for assertion results`,type:[`object`,`boolean`],properties:{format:{type:`string`}}},{$schema:`https://json-schema.org/draft/2020-12/schema`,$id:`https://json-schema.org/draft/2020-12/meta/meta-data`,$dynamicAnchor:`meta`,title:`Meta-data vocabulary meta-schema`,type:[`object`,`boolean`],properties:{title:{type:`string`},description:{type:`string`},default:!0,deprecated:{type:`boolean`,default:!1},readOnly:{type:`boolean`,default:!1},writeOnly:{type:`boolean`,default:!1},examples:{type:`array`,items:!0}}},{$schema:`https://json-schema.org/draft/2020-12/schema`,$id:`https://json-schema.org/draft/2020-12/meta/unevaluated`,$dynamicAnchor:`meta`,title:`Unevaluated applicator vocabulary meta-schema`,type:[`object`,`boolean`],properties:{unevaluatedItems:{$dynamicRef:`#meta`},unevaluatedProperties:{$dynamicRef:`#meta`}}},{$schema:`https://json-schema.org/draft/2020-12/schema`,$id:`https://json-schema.org/draft/2020-12/meta/validation`,$dynamicAnchor:`meta`,title:`Validation vocabulary meta-schema`,type:[`object`,`boolean`],properties:{type:{anyOf:[{$ref:`#/$defs/simpleTypes`},{type:`array`,items:{$ref:`#/$defs/simpleTypes`},minItems:1,uniqueItems:!0}]},const:!0,enum:{type:`array`,items:!0},multipleOf:{type:`number`,exclusiveMinimum:0},maximum:{type:`number`},exclusiveMaximum:{type:`number`},minimum:{type:`number`},exclusiveMinimum:{type:`number`},maxLength:{$ref:`#/$defs/nonNegativeInteger`},minLength:{$ref:`#/$defs/nonNegativeIntegerDefault0`},pattern:{type:`string`,format:`regex`},maxItems:{$ref:`#/$defs/nonNegativeInteger`},minItems:{$ref:`#/$defs/nonNegativeIntegerDefault0`},uniqueItems:{type:`boolean`,default:!1},maxContains:{$ref:`#/$defs/nonNegativeInteger`},minContains:{$ref:`#/$defs/nonNegativeInteger`,default:1},maxProperties:{$ref:`#/$defs/nonNegativeInteger`},minProperties:{$ref:`#/$defs/nonNegativeIntegerDefault0`},required:{$ref:`#/$defs/stringArray`},dependentRequired:{type:`object`,additionalProperties:{$ref:`#/$defs/stringArray`}}},$defs:{nonNegativeInteger:{type:`integer`,minimum:0},nonNegativeIntegerDefault0:{$ref:`#/$defs/nonNegativeInteger`,default:0},simpleTypes:{enum:[`array`,`boolean`,`integer`,`null`,`number`,`object`,`string`]},stringArray:{type:`array`,items:{type:`string`},uniqueItems:!0,default:[]}}}];export{e as remotes};
|
|
2
|
+
//# sourceMappingURL=remotes.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remotes.mjs","names":["draft04Meta","draft06Meta","draft07Meta","draft2019Meta","draft2019MetaApplicator","draft2019MetaContent","draft2019MetaCore","draft2019MetaFormat","draft2019MetaMetaData","draft2019MetaValidation","draft2020Meta","draft2020MetaApplicator","draft2020MetaContent","draft2020MetaCore","draft2020MetaFormatAnnotation","draft2020MetaFormatAssertion","draft2020MetaMetaData","draft2020MetaUnevaluated","draft2020MetaValidation"],"sources":["../remotes/draft04.json","../remotes/draft06.json","../remotes/draft07.json","../remotes/draft2019-09.json","../remotes/draft2019-09_meta_applicator.json","../remotes/draft2019-09_meta_content.json","../remotes/draft2019-09_meta_core.json","../remotes/draft2019-09_meta_format.json","../remotes/draft2019-09_meta_meta-data.json","../remotes/draft2019-09_meta_validation.json","../remotes/draft2020-12.json","../remotes/draft2020-12_meta_applicator.json","../remotes/draft2020-12_meta_content.json","../remotes/draft2020-12_meta_core.json","../remotes/draft2020-12_meta_format_annotation.json","../remotes/draft2020-12_meta_format_assertion.json","../remotes/draft2020-12_meta_meta_data.json","../remotes/draft2020-12_meta_unevaluated.json","../remotes/draft2020-12_meta_validation.json","../remotes/index.ts"],"sourcesContent":["","","","","","","","","","","","","","","","","","","","import { JsonSchema } from \"../src/types\";\nimport draft04Meta from \"./draft04.json\";\nimport draft06Meta from \"./draft06.json\";\nimport draft07Meta from \"./draft07.json\";\nimport draft2019Meta from \"./draft2019-09.json\";\nimport draft2019MetaApplicator from \"./draft2019-09_meta_applicator.json\";\nimport draft2019MetaContent from \"./draft2019-09_meta_content.json\";\nimport draft2019MetaCore from \"./draft2019-09_meta_core.json\";\nimport draft2019MetaFormat from \"./draft2019-09_meta_format.json\";\nimport draft2019MetaMetaData from \"./draft2019-09_meta_meta-data.json\";\nimport draft2019MetaValidation from \"./draft2019-09_meta_validation.json\";\nimport draft2020Meta from \"./draft2020-12.json\";\nimport draft2020MetaApplicator from \"./draft2020-12_meta_applicator.json\";\nimport draft2020MetaContent from \"./draft2020-12_meta_content.json\";\nimport draft2020MetaCore from \"./draft2020-12_meta_core.json\";\nimport draft2020MetaFormatAnnotation from \"./draft2020-12_meta_format_annotation.json\";\nimport draft2020MetaFormatAssertion from \"./draft2020-12_meta_format_assertion.json\";\nimport draft2020MetaMetaData from \"./draft2020-12_meta_meta_data.json\";\nimport draft2020MetaUnevaluated from \"./draft2020-12_meta_unevaluated.json\";\nimport draft2020MetaValidation from \"./draft2020-12_meta_validation.json\";\n\n/** JSON Schema meta-schemata */\nconst remotes: JsonSchema[] = [\n draft04Meta,\n draft06Meta,\n draft07Meta,\n draft2019Meta,\n draft2019MetaApplicator,\n draft2019MetaContent,\n draft2019MetaCore,\n draft2019MetaFormat,\n draft2019MetaMetaData,\n draft2019MetaValidation,\n draft2020Meta,\n draft2020MetaApplicator,\n draft2020MetaContent,\n draft2020MetaCore,\n draft2020MetaFormatAnnotation,\n draft2020MetaFormatAssertion,\n draft2020MetaMetaData,\n draft2020MetaUnevaluated,\n draft2020MetaValidation\n] as JsonSchema[];\n\nexport { remotes };\n"],"mappings":"AmBsBA,MAAM,EAAwB,yolBAoB7B"}
|
|
@@ -214,7 +214,7 @@ declare const errors: {
|
|
|
214
214
|
"pattern-error": string;
|
|
215
215
|
"pattern-properties-error": string;
|
|
216
216
|
"ref-error": string;
|
|
217
|
-
"required-property-error": string; /** return schema-warning with createSchemaWarning:true when a valid, but undefined
|
|
217
|
+
"required-property-error": string; /** return schema-warning with createSchemaWarning:true when a valid, but undefined property was found */
|
|
218
218
|
"schema-warning": string;
|
|
219
219
|
"type-error": string;
|
|
220
220
|
"undefined-value-error": string;
|
|
@@ -226,13 +226,15 @@ declare const errors: {
|
|
|
226
226
|
"deprecated-warning": string;
|
|
227
227
|
"schema-error": string;
|
|
228
228
|
"unknown-keyword-warning": string;
|
|
229
|
+
"unknown-format-warning": string;
|
|
229
230
|
};
|
|
230
231
|
//#endregion
|
|
231
232
|
//#region src/SchemaNode.d.ts
|
|
232
233
|
declare function isSchemaNode(value: unknown): value is SchemaNode;
|
|
233
234
|
declare function isReduceable(node: SchemaNode): boolean;
|
|
234
235
|
type Context = {
|
|
235
|
-
/** root node of this JSON Schema */rootNode: SchemaNode; /**
|
|
236
|
+
/** root node of this JSON Schema */rootNode: SchemaNode; /** Fallback _draft_ version in case no _draft_ is specified by `schema.$schema` */
|
|
237
|
+
draft?: string; /** available draft configurations */
|
|
236
238
|
drafts: Draft[]; /** [SHARED ACROSS REMOTES] root nodes of registered remote JSON Schema, stored by id/url */
|
|
237
239
|
remotes: Record<string, SchemaNode>; /** references stored by fully resolved schema-$id + local-pointer */
|
|
238
240
|
refs: Record<string, SchemaNode>; /** anchors stored by fully resolved schema-$id + $anchor */
|
|
@@ -510,4 +512,5 @@ declare function isJsonAnnotation(error: unknown): error is JsonAnnotation;
|
|
|
510
512
|
*/
|
|
511
513
|
declare function isJsonError(error: unknown): error is JsonError;
|
|
512
514
|
//#endregion
|
|
513
|
-
export { JsonSchemaResolver as A, DraftVersion as C, DataNode as D, TemplateOptions as E, Maybe as F, ValidationAnnotation as I, ValidationPath as L, JsonSchemaValidator as M, JsonSchemaValidatorParams as N, JsonSchemaReducer as O, Keyword as P, ValidationReturnType as R, Draft as S, extendDraft as T, GetNodeOptions as _, JsonAnnotation as a, isReduceable as b, JsonSchema as c, isAnnotation as d, isBooleanSchema as f, Context as g, isJsonSchema as h, ErrorConfig as i, JsonSchemaResolverParams as j, JsonSchemaReducerParams as k, NodeOrError as l, isJsonError as m, AnnotationData as n, JsonError as o, isJsonAnnotation as p, BooleanSchema as r, JsonPointer as s, Annotation as t, OptionalNodeOrError as u, SchemaNode as v, addKeywords as w, isSchemaNode as x, ValidateReturnType as y };
|
|
515
|
+
export { JsonSchemaResolver as A, DraftVersion as C, DataNode as D, TemplateOptions as E, Maybe as F, ValidationAnnotation as I, ValidationPath as L, JsonSchemaValidator as M, JsonSchemaValidatorParams as N, JsonSchemaReducer as O, Keyword as P, ValidationReturnType as R, Draft as S, extendDraft as T, GetNodeOptions as _, JsonAnnotation as a, isReduceable as b, JsonSchema as c, isAnnotation as d, isBooleanSchema as f, Context as g, isJsonSchema as h, ErrorConfig as i, JsonSchemaResolverParams as j, JsonSchemaReducerParams as k, NodeOrError as l, isJsonError as m, AnnotationData as n, JsonError as o, isJsonAnnotation as p, BooleanSchema as r, JsonPointer as s, Annotation as t, OptionalNodeOrError as u, SchemaNode as v, addKeywords as w, isSchemaNode as x, ValidateReturnType as y };
|
|
516
|
+
//# sourceMappingURL=types-BDjKcTVR.d.cts.map
|
|
@@ -214,7 +214,7 @@ declare const errors: {
|
|
|
214
214
|
"pattern-error": string;
|
|
215
215
|
"pattern-properties-error": string;
|
|
216
216
|
"ref-error": string;
|
|
217
|
-
"required-property-error": string; /** return schema-warning with createSchemaWarning:true when a valid, but undefined
|
|
217
|
+
"required-property-error": string; /** return schema-warning with createSchemaWarning:true when a valid, but undefined property was found */
|
|
218
218
|
"schema-warning": string;
|
|
219
219
|
"type-error": string;
|
|
220
220
|
"undefined-value-error": string;
|
|
@@ -226,13 +226,15 @@ declare const errors: {
|
|
|
226
226
|
"deprecated-warning": string;
|
|
227
227
|
"schema-error": string;
|
|
228
228
|
"unknown-keyword-warning": string;
|
|
229
|
+
"unknown-format-warning": string;
|
|
229
230
|
};
|
|
230
231
|
//#endregion
|
|
231
232
|
//#region src/SchemaNode.d.ts
|
|
232
233
|
declare function isSchemaNode(value: unknown): value is SchemaNode;
|
|
233
234
|
declare function isReduceable(node: SchemaNode): boolean;
|
|
234
235
|
type Context = {
|
|
235
|
-
/** root node of this JSON Schema */rootNode: SchemaNode; /**
|
|
236
|
+
/** root node of this JSON Schema */rootNode: SchemaNode; /** Fallback _draft_ version in case no _draft_ is specified by `schema.$schema` */
|
|
237
|
+
draft?: string; /** available draft configurations */
|
|
236
238
|
drafts: Draft[]; /** [SHARED ACROSS REMOTES] root nodes of registered remote JSON Schema, stored by id/url */
|
|
237
239
|
remotes: Record<string, SchemaNode>; /** references stored by fully resolved schema-$id + local-pointer */
|
|
238
240
|
refs: Record<string, SchemaNode>; /** anchors stored by fully resolved schema-$id + $anchor */
|
|
@@ -510,4 +512,5 @@ declare function isJsonAnnotation(error: unknown): error is JsonAnnotation;
|
|
|
510
512
|
*/
|
|
511
513
|
declare function isJsonError(error: unknown): error is JsonError;
|
|
512
514
|
//#endregion
|
|
513
|
-
export { JsonSchemaResolver as A, DraftVersion as C, DataNode as D, TemplateOptions as E, Maybe as F, ValidationAnnotation as I, ValidationPath as L, JsonSchemaValidator as M, JsonSchemaValidatorParams as N, JsonSchemaReducer as O, Keyword as P, ValidationReturnType as R, Draft as S, extendDraft as T, GetNodeOptions as _, JsonAnnotation as a, isReduceable as b, JsonSchema as c, isAnnotation as d, isBooleanSchema as f, Context as g, isJsonSchema as h, ErrorConfig as i, JsonSchemaResolverParams as j, JsonSchemaReducerParams as k, NodeOrError as l, isJsonError as m, AnnotationData as n, JsonError as o, isJsonAnnotation as p, BooleanSchema as r, JsonPointer as s, Annotation as t, OptionalNodeOrError as u, SchemaNode as v, addKeywords as w, isSchemaNode as x, ValidateReturnType as y };
|
|
515
|
+
export { JsonSchemaResolver as A, DraftVersion as C, DataNode as D, TemplateOptions as E, Maybe as F, ValidationAnnotation as I, ValidationPath as L, JsonSchemaValidator as M, JsonSchemaValidatorParams as N, JsonSchemaReducer as O, Keyword as P, ValidationReturnType as R, Draft as S, extendDraft as T, GetNodeOptions as _, JsonAnnotation as a, isReduceable as b, JsonSchema as c, isAnnotation as d, isBooleanSchema as f, Context as g, isJsonSchema as h, ErrorConfig as i, JsonSchemaResolverParams as j, JsonSchemaReducerParams as k, NodeOrError as l, isJsonError as m, AnnotationData as n, JsonError as o, isJsonAnnotation as p, BooleanSchema as r, JsonPointer as s, Annotation as t, OptionalNodeOrError as u, SchemaNode as v, addKeywords as w, isSchemaNode as x, ValidateReturnType as y };
|
|
516
|
+
//# sourceMappingURL=types-CqkCJmt8.d.mts.map
|
package/package.json
CHANGED
|
@@ -1,30 +1,32 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "json-schema-library",
|
|
3
|
-
"version": "11.
|
|
3
|
+
"version": "11.4.0",
|
|
4
4
|
"description": "Customizable and hackable json-validator and json-schema utilities for traversal, data generation and validation",
|
|
5
|
-
"main": "./dist/index.cjs",
|
|
6
|
-
"module": "./dist/index.mjs",
|
|
7
5
|
"types": "./dist/index.d.cts",
|
|
8
6
|
"exports": {
|
|
9
7
|
".": {
|
|
10
8
|
"import": "./dist/index.mjs",
|
|
11
9
|
"require": "./dist/index.cjs"
|
|
12
10
|
},
|
|
11
|
+
"./formats": {
|
|
12
|
+
"import": "./dist/formats.mjs",
|
|
13
|
+
"require": "./dist/formats.cjs"
|
|
14
|
+
},
|
|
13
15
|
"./remotes": {
|
|
14
|
-
"import": "./dist/remotes
|
|
15
|
-
"require": "./dist/remotes
|
|
16
|
+
"import": "./dist/remotes.mjs",
|
|
17
|
+
"require": "./dist/remotes.cjs"
|
|
16
18
|
},
|
|
17
19
|
"./package.json": "./package.json"
|
|
18
20
|
},
|
|
19
21
|
"scripts": {
|
|
20
22
|
"coverage": "nyc npm run test --reporter=lcov",
|
|
21
|
-
"dist": "tsdown -f esm -f cjs --minify;
|
|
22
|
-
"dist:iife": "tsdown --config tsdown.iife.config.ts --no-clean --minify; mv dist/
|
|
23
|
-
"lint": "
|
|
23
|
+
"dist": "tsdown -f esm -f cjs --minify --report --attw --unused; pnpm run dist:iife;",
|
|
24
|
+
"dist:iife": "tsdown --config tsdown.iife.config.ts --no-clean --minify --report; mv ./dist/jlib.iife.js ./dist/jlib.js",
|
|
25
|
+
"lint": "pnpm run lint:src && pnpm run lint:types",
|
|
24
26
|
"lint:src": "eslint src",
|
|
25
27
|
"lint:types": "tsc --noEmit",
|
|
26
28
|
"lint:tests": "tsc --noEmit --project tsconfig.test.json",
|
|
27
|
-
"prepublishOnly": "
|
|
29
|
+
"prepublishOnly": "pnpm run dist",
|
|
28
30
|
"tdd": "watch \"npm run test:unit\" src/",
|
|
29
31
|
"test": "mocha 'src/**/*.{test,spec}.ts'",
|
|
30
32
|
"test:2019": "mocha 'src/tests/spec/draft2019-09.spec.ts'",
|
|
@@ -68,6 +70,7 @@
|
|
|
68
70
|
},
|
|
69
71
|
"homepage": "https://github.com/sagold/json-schema-library",
|
|
70
72
|
"devDependencies": {
|
|
73
|
+
"@arethetypeswrong/cli": "^0.18.2",
|
|
71
74
|
"@eslint/js": "^10.0.1",
|
|
72
75
|
"@types/glob": "^ 8.1.0",
|
|
73
76
|
"@types/mocha": "^10.0.6",
|
|
@@ -82,19 +85,14 @@
|
|
|
82
85
|
"tsx": "^4.21.0",
|
|
83
86
|
"typescript": "^5.9.3",
|
|
84
87
|
"typescript-eslint": "^8.57.0",
|
|
88
|
+
"unplugin-unused": "^0.5.7",
|
|
85
89
|
"watch": "^1.0.1"
|
|
86
90
|
},
|
|
87
91
|
"dependencies": {
|
|
88
92
|
"@hyperjump/json-schema-formats": "^1.0.1",
|
|
89
93
|
"@sagold/json-pointer": "^7.2.1",
|
|
90
|
-
"deepmerge": "^4.3.1",
|
|
91
|
-
"diff": ">=8.0.3",
|
|
92
94
|
"fast-copy": "^4.0.2",
|
|
93
95
|
"fast-deep-equal": "^3.1.3",
|
|
94
|
-
"lodash": ">=4",
|
|
95
|
-
"minimatch": ">=9.0.7",
|
|
96
|
-
"serialize-javascript": ">=7.0.3",
|
|
97
|
-
"string-width": ">=4.2.3",
|
|
98
96
|
"uri-js": "^4.4.1",
|
|
99
97
|
"valid-url": "^1.0.9"
|
|
100
98
|
},
|
|
@@ -113,5 +111,13 @@
|
|
|
113
111
|
},
|
|
114
112
|
"publishConfig": {
|
|
115
113
|
"registry": "https://registry.npmjs.org"
|
|
114
|
+
},
|
|
115
|
+
"main": "./dist/index.cjs",
|
|
116
|
+
"module": "./dist/index.mjs",
|
|
117
|
+
"inlinedDependencies": {
|
|
118
|
+
"@hyperjump/json-schema-formats": "1.0.1",
|
|
119
|
+
"@hyperjump/uri": "1.3.3",
|
|
120
|
+
"idn-hostname": "15.1.8",
|
|
121
|
+
"punycode": "2.3.1"
|
|
116
122
|
}
|
|
117
123
|
}
|
package/src/SchemaNode.ts
CHANGED
|
@@ -70,6 +70,8 @@ function getDraft(drafts: Draft[], $schema: string) {
|
|
|
70
70
|
export type Context = {
|
|
71
71
|
/** root node of this JSON Schema */
|
|
72
72
|
rootNode: SchemaNode;
|
|
73
|
+
/** Fallback _draft_ version in case no _draft_ is specified by `schema.$schema` */
|
|
74
|
+
draft?: string;
|
|
73
75
|
/** available draft configurations */
|
|
74
76
|
drafts: Draft[];
|
|
75
77
|
/** [SHARED ACROSS REMOTES] root nodes of registered remote JSON Schema, stored by id/url */
|
|
@@ -551,7 +553,7 @@ export const SchemaNodeMethods = {
|
|
|
551
553
|
|
|
552
554
|
const node = this as SchemaNode;
|
|
553
555
|
const { context } = node;
|
|
554
|
-
const schemaId = isJsonSchema(schema) ? schema.$schema : undefined;
|
|
556
|
+
const schemaId = isJsonSchema(schema) ? (node.context.draft ?? schema.$schema) : undefined;
|
|
555
557
|
const draft = getDraft(context.drafts, schemaId ?? context.rootNode.schema?.$schema);
|
|
556
558
|
|
|
557
559
|
const remoteNode: SchemaNode = {
|
|
@@ -621,24 +623,18 @@ export function addKeywords(node: SchemaNode) {
|
|
|
621
623
|
.filter(({ keyword }) => whitelist.includes(keyword) || keys.includes(keyword))
|
|
622
624
|
.map((keyword) => execKeyword(keyword, node));
|
|
623
625
|
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
value: keyword,
|
|
637
|
-
draft: node.getDraftVersion()
|
|
638
|
-
})
|
|
639
|
-
);
|
|
640
|
-
});
|
|
641
|
-
}
|
|
626
|
+
keys.filter(
|
|
627
|
+
(key) => !key.startsWith("x-") && node.context.keywords.find((keyword) => keyword.keyword === key) == null
|
|
628
|
+
).forEach((keyword) => {
|
|
629
|
+
errors.push(
|
|
630
|
+
node.createAnnotation("unknown-keyword-warning", {
|
|
631
|
+
pointer: `${node.schemaLocation}/${keyword}`,
|
|
632
|
+
schema: node.schema,
|
|
633
|
+
value: keyword,
|
|
634
|
+
draft: node.getDraftVersion()
|
|
635
|
+
})
|
|
636
|
+
);
|
|
637
|
+
});
|
|
642
638
|
|
|
643
639
|
return errors;
|
|
644
640
|
}
|
package/src/compileSchema.ts
CHANGED
|
@@ -78,8 +78,6 @@ export type CompileOptions = {
|
|
|
78
78
|
getDataDefaultOptions?: TemplateOptions;
|
|
79
79
|
/** Set to true to throw an Error on errors in input schema. Defaults to false */
|
|
80
80
|
throwOnInvalidSchema?: boolean;
|
|
81
|
-
/** Set to true to collect unknown keywords of input schema in `node.schemaAnnotations`. Defaults to false */
|
|
82
|
-
withSchemaAnnotations?: boolean;
|
|
83
81
|
/** Set to true to throw an Error when encountering an unresolvable ref */
|
|
84
82
|
throwOnInvalidRef?: boolean;
|
|
85
83
|
};
|
|
@@ -116,8 +114,8 @@ export function compileSchema(schema: JsonSchema | BooleanSchema, options: Compi
|
|
|
116
114
|
anchors: {},
|
|
117
115
|
refs: {},
|
|
118
116
|
...copy(pick(draft, "methods", "keywords", "version", "formats", "errors")),
|
|
117
|
+
draft: options.draft,
|
|
119
118
|
getDataDefaultOptions: options.getDataDefaultOptions,
|
|
120
|
-
withSchemaAnnotations: options.withSchemaAnnotations ?? false,
|
|
121
119
|
throwOnInvalidRef: options.throwOnInvalidRef ?? false,
|
|
122
120
|
drafts
|
|
123
121
|
},
|
package/src/errors/errors.ts
CHANGED
|
@@ -67,7 +67,7 @@ export const errors = {
|
|
|
67
67
|
"Property `{{key}}` does not match any patterns in `{{pointer}}`. Valid patterns are: {{patterns}}",
|
|
68
68
|
"ref-error": "Could not resolve $ref '{{ref}}' from '{{pointer}}'",
|
|
69
69
|
"required-property-error": "The required property `{{key}}` is missing at `{{pointer}}`",
|
|
70
|
-
/** return schema-warning with createSchemaWarning:true when a valid, but undefined
|
|
70
|
+
/** return schema-warning with createSchemaWarning:true when a valid, but undefined property was found */
|
|
71
71
|
"schema-warning": "Failed retrieving a schema from '{{pointer}}' to key '{{key}}'",
|
|
72
72
|
"type-error": "Expected `{{value}}` ({{received}}) in `{{pointer}}` to be of type `{{expected}}`",
|
|
73
73
|
"undefined-value-error": "Value must not be undefined in `{{pointer}}`",
|
|
@@ -81,5 +81,6 @@ export const errors = {
|
|
|
81
81
|
"deprecated-warning": "Value at `{{pointer}}` is deprecated",
|
|
82
82
|
// schema validation
|
|
83
83
|
"schema-error": "Invalid schema found at {{pointer}}: {{message}}",
|
|
84
|
-
"unknown-keyword-warning": "Keyword '{{value}}' is not a valid keyword to draft '{{draft}}'"
|
|
84
|
+
"unknown-keyword-warning": "Keyword '{{value}}' is not a valid keyword to draft '{{draft}}'",
|
|
85
|
+
"unknown-format-warning": "Format {{value}} is not a valid format"
|
|
85
86
|
};
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/* eslint-disable no-control-regex */
|
|
2
|
+
import { isAsciiIdn, isUri, isIdnEmail, isIri, isIriReference, isIdn } from "@hyperjump/json-schema-formats";
|
|
3
|
+
import { type Draft } from "src/Draft";
|
|
4
|
+
import { JsonSchemaValidatorParams, ValidationReturnType } from "src/Keyword";
|
|
5
|
+
|
|
6
|
+
const isValidIPV4 = /^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/;
|
|
7
|
+
const isValidIPV6 =
|
|
8
|
+
/^((([0-9a-f]{1,4}:){7}([0-9a-f]{1,4}|:))|(([0-9a-f]{1,4}:){6}(:[0-9a-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){5}(((:[0-9a-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){4}(((:[0-9a-f]{1,4}){1,3})|((:[0-9a-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){3}(((:[0-9a-f]{1,4}){1,4})|((:[0-9a-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){2}(((:[0-9a-f]{1,4}){1,5})|((:[0-9a-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){1}(((:[0-9a-f]{1,4}){1,6})|((:[0-9a-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9a-f]{1,4}){1,7})|((:[0-9a-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))$/i;
|
|
9
|
+
const isValidURIRef =
|
|
10
|
+
/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i;
|
|
11
|
+
// uri-template: https://tools.ietf.org/html/rfc6570
|
|
12
|
+
const isValidURITemplate =
|
|
13
|
+
/^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i;
|
|
14
|
+
|
|
15
|
+
export function addFormats(drafts: Draft[]) {
|
|
16
|
+
drafts.forEach((draft) => (draft.formats = { ...formats, ...draft.formats }));
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export const formats: Record<string, (options: JsonSchemaValidatorParams) => ValidationReturnType> = {
|
|
20
|
+
hostname: ({ node, pointer, data }) => {
|
|
21
|
+
const { schema } = node;
|
|
22
|
+
if (typeof data !== "string" || isAsciiIdn(data)) {
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
25
|
+
return node.createError("format-hostname-error", { value: data, pointer, schema });
|
|
26
|
+
},
|
|
27
|
+
|
|
28
|
+
"idn-hostname": ({ node, pointer, data }) => {
|
|
29
|
+
if (typeof data !== "string" || isIdn(data)) {
|
|
30
|
+
return undefined;
|
|
31
|
+
}
|
|
32
|
+
return node.createError("format-idn-hostname-error", { value: data, pointer, schema: node.schema });
|
|
33
|
+
},
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* @draft 7
|
|
37
|
+
* [RFC6531] https://json-schema.org/draft-07/json-schema-validation.html#RFC6531
|
|
38
|
+
*/
|
|
39
|
+
"idn-email": ({ node, pointer, data }) => {
|
|
40
|
+
if (typeof data !== "string" || data === "" || isIdnEmail(data)) {
|
|
41
|
+
return undefined;
|
|
42
|
+
}
|
|
43
|
+
return node.createError("format-email-error", { value: data, pointer, schema: node.schema });
|
|
44
|
+
},
|
|
45
|
+
|
|
46
|
+
ipv4: ({ node, pointer, data }) => {
|
|
47
|
+
const { schema } = node;
|
|
48
|
+
if (typeof data !== "string" || data === "") {
|
|
49
|
+
return undefined;
|
|
50
|
+
}
|
|
51
|
+
if (data && data[0] === "0") {
|
|
52
|
+
// leading zeroes should be rejected, as they are treated as octals
|
|
53
|
+
return node.createError("format-ipv4-leading-zero-error", { value: data, pointer, schema });
|
|
54
|
+
}
|
|
55
|
+
if (data.length <= 15 && isValidIPV4.test(data)) {
|
|
56
|
+
return undefined;
|
|
57
|
+
}
|
|
58
|
+
return node.createError("format-ipv4-error", { value: data, pointer, schema });
|
|
59
|
+
},
|
|
60
|
+
|
|
61
|
+
ipv6: ({ node, pointer, data }) => {
|
|
62
|
+
const { schema } = node;
|
|
63
|
+
if (typeof data !== "string" || data === "") {
|
|
64
|
+
return undefined;
|
|
65
|
+
}
|
|
66
|
+
if (data && data[0] === "0") {
|
|
67
|
+
// leading zeroes should be rejected, as they are treated as octals
|
|
68
|
+
return node.createError("format-ipv6-leading-zero-error", { value: data, pointer, schema });
|
|
69
|
+
}
|
|
70
|
+
if (data.length <= 45 && isValidIPV6.test(data)) {
|
|
71
|
+
return undefined;
|
|
72
|
+
}
|
|
73
|
+
return node.createError("format-ipv6-error", { value: data, pointer, schema });
|
|
74
|
+
},
|
|
75
|
+
|
|
76
|
+
iri: ({ node, pointer, data }) => {
|
|
77
|
+
const { schema } = node;
|
|
78
|
+
if (typeof data !== "string" || data === "" || isIri(data)) {
|
|
79
|
+
return undefined;
|
|
80
|
+
}
|
|
81
|
+
return node.createError("format-iri-error", { value: data, pointer, schema });
|
|
82
|
+
},
|
|
83
|
+
|
|
84
|
+
"iri-reference": ({ node, pointer, data }) => {
|
|
85
|
+
const { schema } = node;
|
|
86
|
+
if (typeof data !== "string" || data === "" || isIriReference(data)) {
|
|
87
|
+
return undefined;
|
|
88
|
+
}
|
|
89
|
+
return node.createError("format-iri-reference-error", { value: data, pointer, schema });
|
|
90
|
+
},
|
|
91
|
+
uri: ({ node, pointer, data }) => {
|
|
92
|
+
if (typeof data !== "string" || data === "" || isUri(data)) {
|
|
93
|
+
return undefined;
|
|
94
|
+
}
|
|
95
|
+
return node.createError("format-uri-error", { value: data, pointer, schema: node.schema });
|
|
96
|
+
},
|
|
97
|
+
"uri-reference": ({ node, pointer, data }) => {
|
|
98
|
+
const { schema } = node;
|
|
99
|
+
if (typeof data !== "string" || data === "") {
|
|
100
|
+
return undefined;
|
|
101
|
+
}
|
|
102
|
+
if (isValidURIRef.test(data)) {
|
|
103
|
+
return undefined;
|
|
104
|
+
}
|
|
105
|
+
return node.createError("format-uri-reference-error", { value: data, pointer, schema });
|
|
106
|
+
},
|
|
107
|
+
|
|
108
|
+
"uri-template": ({ node, pointer, data }) => {
|
|
109
|
+
const { schema } = node;
|
|
110
|
+
if (typeof data !== "string" || data === "") {
|
|
111
|
+
return undefined;
|
|
112
|
+
}
|
|
113
|
+
if (isValidURITemplate.test(data)) {
|
|
114
|
+
return undefined;
|
|
115
|
+
}
|
|
116
|
+
return node.createError("format-uri-template-error", { value: data, pointer, schema });
|
|
117
|
+
}
|
|
118
|
+
};
|