aboutsummaryrefslogtreecommitdiff
path: root/node_modules/ajv-keywords/keywords
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/ajv-keywords/keywords')
-rw-r--r--node_modules/ajv-keywords/keywords/_formatLimit.js6
-rw-r--r--node_modules/ajv-keywords/keywords/_util.js15
-rw-r--r--node_modules/ajv-keywords/keywords/deepProperties.js13
-rw-r--r--node_modules/ajv-keywords/keywords/dot/_formatLimit.jst4
-rw-r--r--node_modules/ajv-keywords/keywords/dot/patternRequired.jst9
-rw-r--r--node_modules/ajv-keywords/keywords/dot/switch.jst6
-rw-r--r--node_modules/ajv-keywords/keywords/dotjs/_formatLimit.js6
-rw-r--r--node_modules/ajv-keywords/keywords/dotjs/patternRequired.js16
-rw-r--r--node_modules/ajv-keywords/keywords/dotjs/switch.js15
-rw-r--r--node_modules/ajv-keywords/keywords/if.js2
-rw-r--r--node_modules/ajv-keywords/keywords/index.js13
-rw-r--r--node_modules/ajv-keywords/keywords/patternRequired.js3
-rw-r--r--node_modules/ajv-keywords/keywords/propertyNames.js51
-rw-r--r--node_modules/ajv-keywords/keywords/range.js9
-rw-r--r--node_modules/ajv-keywords/keywords/select.js79
-rw-r--r--node_modules/ajv-keywords/keywords/switch.js13
-rw-r--r--node_modules/ajv-keywords/keywords/uniqueItemProperties.js32
17 files changed, 184 insertions, 108 deletions
diff --git a/node_modules/ajv-keywords/keywords/_formatLimit.js b/node_modules/ajv-keywords/keywords/_formatLimit.js
index 96541dd64..2ae8e007c 100644
--- a/node_modules/ajv-keywords/keywords/_formatLimit.js
+++ b/node_modules/ajv-keywords/keywords/_formatLimit.js
@@ -12,9 +12,6 @@ var COMPARE_FORMATS = {
module.exports = function (minMax) {
var keyword = 'format' + minMax;
return function defFunc(ajv) {
- if (ajv.RULES.keywords[keyword])
- return console.warn('Keyword', keyword, 'is already defined');
-
defFunc.definition = {
type: 'string',
inline: require('./dotjs/_formatLimit'),
@@ -53,7 +50,8 @@ function extendFormats(ajv) {
var formats = ajv._formats;
for (var name in COMPARE_FORMATS) {
var format = formats[name];
- if (typeof format != 'object')
+ // the last condition is needed if it's RegExp from another window
+ if (typeof format != 'object' || format instanceof RegExp || !format.validate)
format = formats[name] = { validate: format };
if (!format.compare)
format.compare = COMPARE_FORMATS[name];
diff --git a/node_modules/ajv-keywords/keywords/_util.js b/node_modules/ajv-keywords/keywords/_util.js
new file mode 100644
index 000000000..eebd07aad
--- /dev/null
+++ b/node_modules/ajv-keywords/keywords/_util.js
@@ -0,0 +1,15 @@
+'use strict';
+
+module.exports = {
+ metaSchemaRef: metaSchemaRef
+};
+
+var META_SCHEMA_ID = 'http://json-schema.org/draft-06/schema';
+
+function metaSchemaRef(ajv) {
+ var defaultMeta = ajv._opts.defaultMeta;
+ if (typeof defaultMeta == 'string') return { $ref: defaultMeta };
+ if (ajv.getSchema(META_SCHEMA_ID)) return { $ref: META_SCHEMA_ID };
+ console.warn('meta schema not defined');
+ return {};
+}
diff --git a/node_modules/ajv-keywords/keywords/deepProperties.js b/node_modules/ajv-keywords/keywords/deepProperties.js
index daa87426a..3dac5fb55 100644
--- a/node_modules/ajv-keywords/keywords/deepProperties.js
+++ b/node_modules/ajv-keywords/keywords/deepProperties.js
@@ -1,5 +1,7 @@
'use strict';
+var util = require('./_util');
+
module.exports = function defFunc(ajv) {
defFunc.definition = {
type: 'object',
@@ -11,14 +13,11 @@ module.exports = function defFunc(ajv) {
},
metaSchema: {
type: 'object',
- patternProperties: {
- '^(\\/([^~\\/]|~0|~1)*)*(\\/)?$': {
- $ref: ajv._opts.v5
- ? 'https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/json-schema-v5.json#'
- : 'http://json-schema.org/draft-04/schema#'
- }
+ propertyNames: {
+ type: 'string',
+ format: 'json-pointer'
},
- additionalProperties: false
+ additionalProperties: util.metaSchemaRef(ajv)
}
};
diff --git a/node_modules/ajv-keywords/keywords/dot/_formatLimit.jst b/node_modules/ajv-keywords/keywords/dot/_formatLimit.jst
index af16b88d8..f74096551 100644
--- a/node_modules/ajv-keywords/keywords/dot/_formatLimit.jst
+++ b/node_modules/ajv-keywords/keywords/dot/_formatLimit.jst
@@ -33,7 +33,7 @@ var {{=$valid}} = undefined;
{{
var $schemaFormat = it.schema.format
- , $isDataFormat = it.opts.v5 && $schemaFormat.$data
+ , $isDataFormat = it.opts.$data && $schemaFormat.$data
, $closingBraces = '';
}}
@@ -58,7 +58,7 @@ var {{=$valid}} = undefined;
var $isMax = $keyword == 'formatMaximum'
, $exclusiveKeyword = 'formatExclusive' + ($isMax ? 'Maximum' : 'Minimum')
, $schemaExcl = it.schema[$exclusiveKeyword]
- , $isDataExcl = it.opts.v5 && $schemaExcl && $schemaExcl.$data
+ , $isDataExcl = it.opts.$data && $schemaExcl && $schemaExcl.$data
, $op = $isMax ? '<' : '>'
, $result = 'result' + $lvl;
}}
diff --git a/node_modules/ajv-keywords/keywords/dot/patternRequired.jst b/node_modules/ajv-keywords/keywords/dot/patternRequired.jst
index 9af2cdc9d..6f82f6265 100644
--- a/node_modules/ajv-keywords/keywords/dot/patternRequired.jst
+++ b/node_modules/ajv-keywords/keywords/dot/patternRequired.jst
@@ -4,16 +4,21 @@
{{
var $key = 'key' + $lvl
+ , $idx = 'idx' + $lvl
, $matched = 'patternMatched' + $lvl
+ , $dataProperties = 'dataProperties' + $lvl
, $closingBraces = ''
, $ownProperties = it.opts.ownProperties;
}}
var {{=$valid}} = true;
+{{? $ownProperties }}
+ var {{=$dataProperties}} = undefined;
+{{?}}
+
{{~ $schema:$pProperty }}
var {{=$matched}} = false;
- for (var {{=$key}} in {{=$data}}) {
- {{# def.checkOwnProperty }}
+ {{# def.iterateProperties }}
{{=$matched}} = {{= it.usePattern($pProperty) }}.test({{=$key}});
if ({{=$matched}}) break;
}
diff --git a/node_modules/ajv-keywords/keywords/dot/switch.jst b/node_modules/ajv-keywords/keywords/dot/switch.jst
index 7b2906a60..389678e34 100644
--- a/node_modules/ajv-keywords/keywords/dot/switch.jst
+++ b/node_modules/ajv-keywords/keywords/dot/switch.jst
@@ -10,7 +10,7 @@
{{# def._validateSwitchRule:if }}
{{ $it.createErrors = true; }}
{{# def.resetCompositeRule }}
- {{=$ifPassed}} = valid{{=$it.level}};
+ {{=$ifPassed}} = {{=$nextValid}};
#}}
{{## def.validateThen:
@@ -18,7 +18,7 @@
{{? $sch.then === false }}
{{# def.error:'switch' }}
{{?}}
- var valid{{=$it.level}} = {{= $sch.then }};
+ var {{=$nextValid}} = {{= $sch.then }};
{{??}}
{{# def._validateSwitchRule:then }}
{{?}}
@@ -68,6 +68,6 @@ var {{=$ifPassed}};
{{= $closingBraces }}
-var {{=$valid}} = valid{{=$it.level}};
+var {{=$valid}} = {{=$nextValid}};
{{# def.cleanUp }}
diff --git a/node_modules/ajv-keywords/keywords/dotjs/_formatLimit.js b/node_modules/ajv-keywords/keywords/dotjs/_formatLimit.js
index b2c5093df..fc56e2064 100644
--- a/node_modules/ajv-keywords/keywords/dotjs/_formatLimit.js
+++ b/node_modules/ajv-keywords/keywords/dotjs/_formatLimit.js
@@ -1,5 +1,5 @@
'use strict';
-module.exports = function generate__formatLimit(it, $keyword) {
+module.exports = function generate__formatLimit(it, $keyword, $ruleType) {
var out = ' ';
var $lvl = it.level;
var $dataLvl = it.dataLevel;
@@ -16,7 +16,7 @@ module.exports = function generate__formatLimit(it, $keyword) {
return out;
}
var $schemaFormat = it.schema.format,
- $isDataFormat = it.opts.v5 && $schemaFormat.$data,
+ $isDataFormat = it.opts.$data && $schemaFormat.$data,
$closingBraces = '';
if ($isDataFormat) {
var $schemaValueFormat = it.util.getData($schemaFormat.$data, $dataLvl, it.dataPathArr),
@@ -34,7 +34,7 @@ module.exports = function generate__formatLimit(it, $keyword) {
var $isMax = $keyword == 'formatMaximum',
$exclusiveKeyword = 'formatExclusive' + ($isMax ? 'Maximum' : 'Minimum'),
$schemaExcl = it.schema[$exclusiveKeyword],
- $isDataExcl = it.opts.v5 && $schemaExcl && $schemaExcl.$data,
+ $isDataExcl = it.opts.$data && $schemaExcl && $schemaExcl.$data,
$op = $isMax ? '<' : '>',
$result = 'result' + $lvl;
var $isData = it.opts.$data && $schema && $schema.$data,
diff --git a/node_modules/ajv-keywords/keywords/dotjs/patternRequired.js b/node_modules/ajv-keywords/keywords/dotjs/patternRequired.js
index e20df98ca..31bd0b683 100644
--- a/node_modules/ajv-keywords/keywords/dotjs/patternRequired.js
+++ b/node_modules/ajv-keywords/keywords/dotjs/patternRequired.js
@@ -1,5 +1,5 @@
'use strict';
-module.exports = function generate_patternRequired(it, $keyword) {
+module.exports = function generate_patternRequired(it, $keyword, $ruleType) {
var out = ' ';
var $lvl = it.level;
var $dataLvl = it.dataLevel;
@@ -7,29 +7,35 @@ module.exports = function generate_patternRequired(it, $keyword) {
var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
var $breakOnError = !it.opts.allErrors;
- var $errorKeyword;
var $data = 'data' + ($dataLvl || '');
var $valid = 'valid' + $lvl;
var $key = 'key' + $lvl,
+ $idx = 'idx' + $lvl,
$matched = 'patternMatched' + $lvl,
+ $dataProperties = 'dataProperties' + $lvl,
$closingBraces = '',
$ownProperties = it.opts.ownProperties;
out += 'var ' + ($valid) + ' = true;';
+ if ($ownProperties) {
+ out += ' var ' + ($dataProperties) + ' = undefined;';
+ }
var arr1 = $schema;
if (arr1) {
var $pProperty, i1 = -1,
l1 = arr1.length - 1;
while (i1 < l1) {
$pProperty = arr1[i1 += 1];
- out += ' var ' + ($matched) + ' = false; for (var ' + ($key) + ' in ' + ($data) + ') { ';
+ out += ' var ' + ($matched) + ' = false; ';
if ($ownProperties) {
- out += ' if (!Object.prototype.hasOwnProperty.call(' + ($data) + ', ' + ($key) + ')) continue; ';
+ out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; ';
+ } else {
+ out += ' for (var ' + ($key) + ' in ' + ($data) + ') { ';
}
out += ' ' + ($matched) + ' = ' + (it.usePattern($pProperty)) + '.test(' + ($key) + '); if (' + ($matched) + ') break; } ';
var $missingPattern = it.util.escapeQuotes($pProperty);
out += ' if (!' + ($matched) + ') { ' + ($valid) + ' = false; var err = '; /* istanbul ignore else */
if (it.createErrors !== false) {
- out += ' { keyword: \'' + ($errorKeyword || 'patternRequired') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingPattern: \'' + ($missingPattern) + '\' } ';
+ out += ' { keyword: \'' + ('patternRequired') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingPattern: \'' + ($missingPattern) + '\' } ';
if (it.opts.messages !== false) {
out += ' , message: \'should have property matching pattern \\\'' + ($missingPattern) + '\\\'\' ';
}
diff --git a/node_modules/ajv-keywords/keywords/dotjs/switch.js b/node_modules/ajv-keywords/keywords/dotjs/switch.js
index f0e843fe0..d6de28bf9 100644
--- a/node_modules/ajv-keywords/keywords/dotjs/switch.js
+++ b/node_modules/ajv-keywords/keywords/dotjs/switch.js
@@ -1,5 +1,5 @@
'use strict';
-module.exports = function generate_switch(it, $keyword) {
+module.exports = function generate_switch(it, $keyword, $ruleType) {
var out = ' ';
var $lvl = it.level;
var $dataLvl = it.dataLevel;
@@ -7,7 +7,6 @@ module.exports = function generate_switch(it, $keyword) {
var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
var $breakOnError = !it.opts.allErrors;
- var $errorKeyword;
var $data = 'data' + ($dataLvl || '');
var $valid = 'valid' + $lvl;
var $errs = 'errs__' + $lvl;
@@ -41,14 +40,14 @@ module.exports = function generate_switch(it, $keyword) {
$it.baseId = $currentBaseId;
$it.createErrors = true;
it.compositeRule = $it.compositeRule = $wasComposite;
- out += ' ' + ($ifPassed) + ' = valid' + ($it.level) + '; if (' + ($ifPassed) + ') { ';
+ out += ' ' + ($ifPassed) + ' = ' + ($nextValid) + '; if (' + ($ifPassed) + ') { ';
if (typeof $sch.then == 'boolean') {
if ($sch.then === false) {
var $$outStack = $$outStack || [];
$$outStack.push(out);
out = ''; /* istanbul ignore else */
if (it.createErrors !== false) {
- out += ' { keyword: \'' + ($errorKeyword || 'switch') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { caseIndex: ' + ($caseIndex) + ' } ';
+ out += ' { keyword: \'' + ('switch') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { caseIndex: ' + ($caseIndex) + ' } ';
if (it.opts.messages !== false) {
out += ' , message: \'should pass "switch" keyword validation\' ';
}
@@ -71,7 +70,7 @@ module.exports = function generate_switch(it, $keyword) {
out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
}
}
- out += ' var valid' + ($it.level) + ' = ' + ($sch.then) + '; ';
+ out += ' var ' + ($nextValid) + ' = ' + ($sch.then) + '; ';
} else {
$it.schema = $sch.then;
$it.schemaPath = $schemaPath + '[' + $caseIndex + '].then';
@@ -88,7 +87,7 @@ module.exports = function generate_switch(it, $keyword) {
$$outStack.push(out);
out = ''; /* istanbul ignore else */
if (it.createErrors !== false) {
- out += ' { keyword: \'' + ($errorKeyword || 'switch') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { caseIndex: ' + ($caseIndex) + ' } ';
+ out += ' { keyword: \'' + ('switch') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { caseIndex: ' + ($caseIndex) + ' } ';
if (it.opts.messages !== false) {
out += ' , message: \'should pass "switch" keyword validation\' ';
}
@@ -111,7 +110,7 @@ module.exports = function generate_switch(it, $keyword) {
out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
}
}
- out += ' var valid' + ($it.level) + ' = ' + ($sch.then) + '; ';
+ out += ' var ' + ($nextValid) + ' = ' + ($sch.then) + '; ';
} else {
$it.schema = $sch.then;
$it.schemaPath = $schemaPath + '[' + $caseIndex + '].then';
@@ -123,7 +122,7 @@ module.exports = function generate_switch(it, $keyword) {
$shouldContinue = $sch.continue
}
}
- out += '' + ($closingBraces) + 'var ' + ($valid) + ' = valid' + ($it.level) + '; ';
+ out += '' + ($closingBraces) + 'var ' + ($valid) + ' = ' + ($nextValid) + '; ';
out = it.util.cleanUpCode(out);
return out;
}
diff --git a/node_modules/ajv-keywords/keywords/if.js b/node_modules/ajv-keywords/keywords/if.js
index 014b0dc0b..8a8fc95ee 100644
--- a/node_modules/ajv-keywords/keywords/if.js
+++ b/node_modules/ajv-keywords/keywords/if.js
@@ -1,7 +1,7 @@
'use strict';
module.exports = function defFunc(ajv) {
- if (!ajv._opts.v5) console.warn('keywords if/then/else require v5 option');
+ if (!ajv.RULES.keywords.switch) require('./switch')(ajv);
defFunc.definition = {
macro: function (schema, parentSchema) {
diff --git a/node_modules/ajv-keywords/keywords/index.js b/node_modules/ajv-keywords/keywords/index.js
index 931aa6ad3..06b68b776 100644
--- a/node_modules/ajv-keywords/keywords/index.js
+++ b/node_modules/ajv-keywords/keywords/index.js
@@ -2,17 +2,18 @@
module.exports = {
'instanceof': require('./instanceof'),
- propertyNames: require('./propertyNames'),
range: require('./range'),
regexp: require('./regexp'),
'typeof': require('./typeof'),
dynamicDefaults: require('./dynamicDefaults'),
'if': require('./if'),
prohibited: require('./prohibited'),
+ uniqueItemProperties: require('./uniqueItemProperties'),
deepProperties: require('./deepProperties'),
- deepRequired: require('./deepRequired')
- // formatMinimum: require('./formatMinimum'),
- // formatMaximum: require('./formatMaximum'),
- // patternRequired: require('./patternRequired'),
- // 'switch': require('./switch')
+ deepRequired: require('./deepRequired'),
+ formatMinimum: require('./formatMinimum'),
+ formatMaximum: require('./formatMaximum'),
+ patternRequired: require('./patternRequired'),
+ 'switch': require('./switch'),
+ select: require('./select')
};
diff --git a/node_modules/ajv-keywords/keywords/patternRequired.js b/node_modules/ajv-keywords/keywords/patternRequired.js
index f3f4ee903..046f313fd 100644
--- a/node_modules/ajv-keywords/keywords/patternRequired.js
+++ b/node_modules/ajv-keywords/keywords/patternRequired.js
@@ -1,9 +1,6 @@
'use strict';
module.exports = function defFunc(ajv) {
- if (ajv.RULES.keywords.patternRequired)
- return console.warn('Keyword patternRequired is already defined');
-
defFunc.definition = {
type: 'object',
inline: require('./dotjs/patternRequired'),
diff --git a/node_modules/ajv-keywords/keywords/propertyNames.js b/node_modules/ajv-keywords/keywords/propertyNames.js
deleted file mode 100644
index 987f236c0..000000000
--- a/node_modules/ajv-keywords/keywords/propertyNames.js
+++ /dev/null
@@ -1,51 +0,0 @@
-'use strict';
-
-module.exports = function defFunc(ajv) {
- defFunc.definition = {
- type: 'object',
- compile: function(schema) {
- var validate = ajv.compile(schema);
- return ajv._opts.allErrors ? vAllErrors : vBreakOnError;
-
- function vBreakOnError(data) {
- for (var prop in data) {
- if (!validate(prop)) {
- vBreakOnError.errors = validate.errors;
- addPropertyNameError(vBreakOnError.errors, prop);
- return false;
- }
- }
- return true;
- }
-
- function vAllErrors(data) {
- var errors = [];
- for (var prop in data) {
- if (!validate(prop)) {
- errors = errors.concat(validate.errors);
- addPropertyNameError(errors, prop);
- }
- }
- if (errors.length) vAllErrors.errors = errors;
- return errors.length == 0;
- }
-
- function addPropertyNameError(errors, propName) {
- errors.push({
- keyword: 'propertyNames',
- params: { propertyName: propName },
- message: 'should have valid property name of "' + propName + '"'
- });
- }
- },
- metaSchema: {
- $ref: ajv._opts.v5
- ? 'https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/json-schema-v5.json#'
- : 'http://json-schema.org/draft-04/schema#'
- },
- errors: true
- };
-
- ajv.addKeyword('propertyNames', defFunc.definition);
- return ajv;
-};
diff --git a/node_modules/ajv-keywords/keywords/range.js b/node_modules/ajv-keywords/keywords/range.js
index 3f25ac24f..9c1fd3ffd 100644
--- a/node_modules/ajv-keywords/keywords/range.js
+++ b/node_modules/ajv-keywords/keywords/range.js
@@ -10,12 +10,9 @@ module.exports = function defFunc(ajv) {
validateRangeSchema(min, max, exclusive);
- return {
- minimum: min,
- exclusiveMinimum: exclusive,
- maximum: max,
- exclusiveMaximum: exclusive
- };
+ return exclusive === true
+ ? {exclusiveMinimum: min, exclusiveMaximum: max}
+ : {minimum: min, maximum: max};
},
metaSchema: {
type: 'array',
diff --git a/node_modules/ajv-keywords/keywords/select.js b/node_modules/ajv-keywords/keywords/select.js
new file mode 100644
index 000000000..f79c6c7a0
--- /dev/null
+++ b/node_modules/ajv-keywords/keywords/select.js
@@ -0,0 +1,79 @@
+'use strict';
+
+var util = require('./_util');
+
+module.exports = function defFunc(ajv) {
+ if (!ajv._opts.$data) {
+ console.warn('keyword select requires $data option');
+ return ajv;
+ }
+ var metaSchemaRef = util.metaSchemaRef(ajv);
+ var compiledCaseSchemas = [];
+
+ defFunc.definition = {
+ validate: function v(schema, data, parentSchema) {
+ if (parentSchema.selectCases === undefined)
+ throw new Error('keyword "selectCases" is absent');
+ var compiled = getCompiledSchemas(parentSchema, false);
+ var validate = compiled.cases[schema];
+ if (validate === undefined) validate = compiled.default;
+ if (typeof validate == 'boolean') return validate;
+ var valid = validate(data);
+ if (!valid) v.errors = validate.errors;
+ return valid;
+ },
+ $data: true,
+ metaSchema: { type: ['string', 'number', 'boolean', 'null'] }
+ };
+
+ ajv.addKeyword('select', defFunc.definition);
+ ajv.addKeyword('selectCases', {
+ compile: function (schemas, parentSchema) {
+ var compiled = getCompiledSchemas(parentSchema);
+ for (var value in schemas)
+ compiled.cases[value] = compileOrBoolean(schemas[value]);
+ return function() { return true; };
+ },
+ valid: true,
+ metaSchema: {
+ type: 'object',
+ additionalProperties: metaSchemaRef
+ }
+ });
+ ajv.addKeyword('selectDefault', {
+ compile: function (schema, parentSchema) {
+ var compiled = getCompiledSchemas(parentSchema);
+ compiled.default = compileOrBoolean(schema);
+ return function() { return true; };
+ },
+ valid: true,
+ metaSchema: metaSchemaRef
+ });
+ return ajv;
+
+
+ function getCompiledSchemas(parentSchema, create) {
+ var compiled;
+ compiledCaseSchemas.some(function (c) {
+ if (c.parentSchema === parentSchema) {
+ compiled = c;
+ return true;
+ }
+ });
+ if (!compiled && create !== false) {
+ compiled = {
+ parentSchema: parentSchema,
+ cases: {},
+ default: true
+ };
+ compiledCaseSchemas.push(compiled);
+ }
+ return compiled;
+ }
+
+ function compileOrBoolean(schema) {
+ return typeof schema == 'boolean'
+ ? schema
+ : ajv.compile(schema);
+ }
+};
diff --git a/node_modules/ajv-keywords/keywords/switch.js b/node_modules/ajv-keywords/keywords/switch.js
index 8c22bf8b9..5b0f3f830 100644
--- a/node_modules/ajv-keywords/keywords/switch.js
+++ b/node_modules/ajv-keywords/keywords/switch.js
@@ -1,12 +1,11 @@
'use strict';
+var util = require('./_util');
+
module.exports = function defFunc(ajv) {
- if (ajv.RULES.keywords.switch)
- return console.warn('Keyword switch is already defined');
+ if (ajv.RULES.keywords.switch && ajv.RULES.keywords.if) return;
- var metaSchemaUri = ajv._opts.v5
- ? 'https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/json-schema-v5.json#'
- : 'http://json-schema.org/draft-04/schema#';
+ var metaSchemaRef = util.metaSchemaRef(ajv);
defFunc.definition = {
inline: require('./dotjs/switch'),
@@ -17,11 +16,11 @@ module.exports = function defFunc(ajv) {
items: {
required: [ 'then' ],
properties: {
- 'if': { $ref: metaSchemaUri },
+ 'if': metaSchemaRef,
'then': {
anyOf: [
{ type: 'boolean' },
- { $ref: metaSchemaUri }
+ metaSchemaRef
]
},
'continue': { type: 'boolean' }
diff --git a/node_modules/ajv-keywords/keywords/uniqueItemProperties.js b/node_modules/ajv-keywords/keywords/uniqueItemProperties.js
new file mode 100644
index 000000000..2a8e7e841
--- /dev/null
+++ b/node_modules/ajv-keywords/keywords/uniqueItemProperties.js
@@ -0,0 +1,32 @@
+'use strict';
+
+module.exports = function defFunc(ajv) {
+ defFunc.definition = {
+ type: 'array',
+ compile: function(keys, parentSchema, it) {
+ var equal = it.util.equal;
+ return function(data) {
+ if (data.length > 1) {
+ for (var k=0; k < keys.length; k++) {
+ var key = keys[k];
+ for (var i = data.length; i--;) {
+ if (typeof data[i] != 'object') continue;
+ for (var j = i; j--;) {
+ if (typeof data[j] == 'object' && equal(data[i][key], data[j][key]))
+ return false;
+ }
+ }
+ }
+ }
+ return true;
+ };
+ },
+ metaSchema: {
+ type: 'array',
+ items: {type: 'string'}
+ }
+ };
+
+ ajv.addKeyword('uniqueItemProperties', defFunc.definition);
+ return ajv;
+};