mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2024-12-17 19:12:33 -05:00
132 lines
3.4 KiB
CoffeeScript
132 lines
3.4 KiB
CoffeeScript
# The JSON Schema Core/Validation Meta-Schema, but with titles and descriptions added to make it easier to edit in Treema, and in CoffeeScript
|
|
|
|
module.exports =
|
|
id: 'metaschema'
|
|
displayProperty: 'title'
|
|
$schema: 'http://json-schema.org/draft-04/schema#'
|
|
title: 'Schema'
|
|
description: 'Core schema meta-schema'
|
|
definitions:
|
|
schemaArray:
|
|
type: 'array'
|
|
minItems: 1
|
|
items: {$ref: '#'}
|
|
title: 'Array of Schemas'
|
|
'default': [{}]
|
|
positiveInteger:
|
|
type: 'integer'
|
|
minimum: 0
|
|
title: 'Positive Integer'
|
|
positiveIntegerDefault0:
|
|
allOf: [{$ref: '#/definitions/positiveInteger'}, {'default': 0}]
|
|
simpleTypes:
|
|
title: 'Single Type'
|
|
'enum': ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string']
|
|
stringArray:
|
|
type: 'array'
|
|
items: {type: 'string'}
|
|
minItems: 1
|
|
uniqueItems: true
|
|
title: 'String Array'
|
|
'default': ['']
|
|
type: 'object'
|
|
properties:
|
|
id:
|
|
type: 'string'
|
|
format: 'uri'
|
|
$schema:
|
|
type: 'string'
|
|
format: 'uri'
|
|
'default': 'http://json-schema.org/draft-04/schema#'
|
|
title:
|
|
type: 'string'
|
|
description:
|
|
type: 'string'
|
|
'default': {}
|
|
multipleOf:
|
|
type: 'number'
|
|
minimum: 0
|
|
exclusiveMinimum: true
|
|
maximum:
|
|
type: 'number'
|
|
exclusiveMaximum:
|
|
type: 'boolean'
|
|
'default': false
|
|
minimum:
|
|
type: 'number'
|
|
exclusiveMinimum:
|
|
type: 'boolean'
|
|
'default': false
|
|
maxLength: {$ref: '#/definitions/positiveInteger'}
|
|
minLength: {$ref: '#/definitions/positiveIntegerDefault0'}
|
|
pattern:
|
|
type: 'string'
|
|
format: 'regex'
|
|
additionalItems:
|
|
anyOf: [
|
|
{type: 'boolean', 'default': false}
|
|
{$ref: '#'}
|
|
]
|
|
items:
|
|
anyOf: [
|
|
{$ref: '#'}
|
|
{$ref: '#/definitions/schemaArray'}
|
|
]
|
|
'default': {}
|
|
maxItems: {$ref: '#/definitions/positiveInteger'}
|
|
minItems: {$ref: '#/definitions/positiveIntegerDefault0'}
|
|
uniqueItems:
|
|
type: 'boolean'
|
|
'default': false
|
|
maxProperties: {$ref: '#/definitions/positiveInteger'}
|
|
minProperties: {$ref: '#/definitions/positiveIntegerDefault0'}
|
|
required: {$ref: '#/definitions/stringArray'}
|
|
additionalProperties:
|
|
anyOf: [
|
|
{type: 'boolean', 'default': true}
|
|
{$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: true
|
|
'default': ['']
|
|
type:
|
|
anyOf: [
|
|
{$ref: '#/definitions/simpleTypes'}
|
|
{
|
|
type: 'array'
|
|
items: {$ref: '#/definitions/simpleTypes'}
|
|
minItems: 1
|
|
uniqueItems: true
|
|
title: 'Array of Types'
|
|
'default': ['string']
|
|
}]
|
|
allOf: {$ref: '#/definitions/schemaArray'}
|
|
anyOf: {$ref: '#/definitions/schemaArray'}
|
|
oneOf: {$ref: '#/definitions/schemaArray'}
|
|
not: {$ref: '#'}
|
|
dependencies:
|
|
exclusiveMaximum: ['maximum']
|
|
exclusiveMinimum: ['minimum']
|
|
'default': {}
|