diff --git a/lib/class/OptionRegistry.js b/lib/class/OptionRegistry.js index bf56c1ff7b7d18b722a7f2b990b33c4729d0e3d0..5736c386c65fbfe2794bad7d5815cc0b3fc2291d 100644 Binary files a/lib/class/OptionRegistry.js and b/lib/class/OptionRegistry.js differ diff --git a/lib/types/array.js b/lib/types/array.js index 497432959b875cc64b3e7283ec3de10e0b16eac7..24a8e05ba9eff2c66542be2d63edf4db55dbd0eb 100644 Binary files a/lib/types/array.js and b/lib/types/array.js differ diff --git a/ts/class/OptionRegistry.ts b/ts/class/OptionRegistry.ts index 4120800c848f05aa30e88aa24ebd56c32414898c..3af4e746b9c195113034f5a46079725a192771c5 100644 --- a/ts/class/OptionRegistry.ts +++ b/ts/class/OptionRegistry.ts @@ -14,6 +14,7 @@ class OptionRegistry extends Registry<Option> { this.data['useDefaultValue'] = false; this.data['maxItems'] = null; this.data['maxLength'] = null; + this.data['defaultMinItems'] = 0; this.data['defaultRandExpMax'] = 10; this.data['alwaysFakeOptionals'] = false; } diff --git a/ts/types/array.ts b/ts/types/array.ts index 0699f29f46950b19252befb9884cb1a510743aac..a8871aa2f3df484213ea32dd3118872d187833ed 100644 --- a/ts/types/array.ts +++ b/ts/types/array.ts @@ -60,6 +60,13 @@ var arrayType: FTypeGenerator = function arrayType(value: IArraySchema, path: Sc var minItems = value.minItems; var maxItems = value.maxItems; + if (option('defaultMinItems') && minItems === undefined) { + // fix boundaries + minItems = !maxItems + ? option('defaultMinItems') + : Math.min(option('defaultMinItems'), maxItems); + } + if (option('maxItems')) { // Don't allow user to set max items above our maximum if (maxItems && maxItems > option('maxItems')) {