var Ajv = require('ajv');
var ajv = new Ajv({allErrors: true, jsonPointers: true});
var schema = {
"type": ["object", "integer"],
"properties": {
"abcde": {
"type": "object",
"patternProperties": {
"^[a-zA-Z0-9_]+quot;: {
"oneOf": [
{"const": "a"},
{"const": "b"},
{"$ref": "#/cde"}
]}}},
"not1": false,
"not2": {"not":{}},
"not3": {"not": true}
},
"cde": {"$ref": "#/cdeDef"},
"cdeDef": {"anyOf": [
{"const": "c"},
{"const": "d"},
{"const": "e"}
]},
"anyOf": [
{"properties": {"foo": {"enum": ["a"]}, "bar": {"multipleOf": 3}}},
{"properties": {"foo": {"enum": ["b"]}, "bar": {"multipleOf": 5}}}
],
"oneOf": [
{"type": "object"},
{"minimum": 15},
{"maximum": 5}
],
"if": {"minimum": 15},
"then": {"multipleOf": 5},
"else": {"multipleOf": 3}
};
var validate = ajv.compile(schema);
test("abc");
test(1);
test(3);
test({"abcde": {"zoo":"f"}})
test({"foo":"a", "bar": 10})
test({"not1": 1})
test({"not2": 1})
test({"not3": 1})
function test(data) {
var valid = validate(data);
console.log(data, validate.errors);
}