diff --git a/lib/resolver.js b/lib/resolver.js index 31796ef..0a00b4f 100644 --- a/lib/resolver.js +++ b/lib/resolver.js @@ -149,6 +149,9 @@ class SchemaResolver { Hoek.assert(joischema, 'Could not resolve type: ' + schema.type + '.'); + if(schema.description) + joischema = joischema.label(schema.description); + return joischema.strict(this.strictMode); } @@ -269,10 +272,21 @@ class SchemaResolver { Util.isNumber(schema.minItems) && (joischema = joischema.min(schema.minItems)); Util.isNumber(schema.maxItems) && (joischema = joischema.max(schema.maxItems)); - + if (schema.uniqueItems) { joischema = joischema.unique(); } + else if (schema.uniques) { + const uniques = schema.uniques; + joischema = joischema.unique((a, b) => { + let same = 0; + for (let i = 0; i < schema.uniques.length; i++) { + if(a[uniques[i]] === b[uniques[i]]) + same++; + } + return same === uniques.length; + }); + } return joischema; } @@ -289,6 +303,8 @@ class SchemaResolver { Util.isNumber(schema.exclusiveMinimum) && (joischema = joischema.greater(schema.exclusiveMinimum)); Util.isNumber(schema.exclusiveMaximum) && (joischema = joischema.less(schema.exclusiveMaximum)); Util.isNumber(schema.multipleOf) && schema.multipleOf !== 0 && (joischema = joischema.multiple(schema.multipleOf)); + schema.less && (joischema = joischema.less(Joi.ref(schema.less))); + schema.greater && (joischema = joischema.greater(Joi.ref(schema.greater))); return joischema; }