diff options
Diffstat (limited to 'tools/node_modules/eslint/node_modules/ajv-keywords/keywords/uniqueItemProperties.js')
-rw-r--r-- | tools/node_modules/eslint/node_modules/ajv-keywords/keywords/uniqueItemProperties.js | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/tools/node_modules/eslint/node_modules/ajv-keywords/keywords/uniqueItemProperties.js b/tools/node_modules/eslint/node_modules/ajv-keywords/keywords/uniqueItemProperties.js new file mode 100644 index 0000000000..2a8e7e841d --- /dev/null +++ b/tools/node_modules/eslint/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; +}; |