1 | 'use strict';
|
2 |
|
3 | module.exports = function defFunc(ajv) {
|
4 | defFunc.definition = {
|
5 | type: 'array',
|
6 | compile: function(keys, parentSchema, it) {
|
7 | var equal = it.util.equal;
|
8 | return function(data) {
|
9 | if (data.length > 1) {
|
10 | for (var k=0; k < keys.length; k++) {
|
11 | var key = keys[k];
|
12 | for (var i = data.length; i--;) {
|
13 | if (typeof data[i] != 'object') continue;
|
14 | for (var j = i; j--;) {
|
15 | if (typeof data[j] == 'object' && equal(data[i][key], data[j][key]))
|
16 | return false;
|
17 | }
|
18 | }
|
19 | }
|
20 | }
|
21 | return true;
|
22 | };
|
23 | },
|
24 | metaSchema: {
|
25 | type: 'array',
|
26 | items: {type: 'string'}
|
27 | }
|
28 | };
|
29 |
|
30 | ajv.addKeyword('uniqueItemProperties', defFunc.definition);
|
31 | return ajv;
|
32 | };
|