codecombat/server/commons/metaschema.coffee
Sébastien Moratinos 729cd300b7 server reorganize files and folder by features
- move and rename files
- use associative arrays which store handlers for 'dynamically'
  load module from de db route
- store models_path in test/server/common,
  a global model variable has the same name that the filename of the model
2014-01-23 01:01:40 +01:00

132 lines
3.5 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": {}