@knowark/validarkjs
Version:
Simple Data Validation Library
99 lines (97 loc) • 2.22 kB
JavaScript
export default {
$schema: 'https://json-schema.org/draft/2020-12/schema',
$id: 'https://json-schema.org/draft/2020-12/meta/validation',
$vocabulary: {
'https://json-schema.org/draft/2020-12/vocab/validation': true
},
$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: true
}
]
},
const: true,
enum: {
type: 'array',
items: true
},
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: false
},
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: true,
default: []
}
}
}