From 7921c11d4676db12d62bc68788b03ca0f00102c0 Mon Sep 17 00:00:00 2001
From: Alvaro Cabrera <pateketrueke@gmail.com>
Date: Fri, 25 Nov 2016 02:21:41 -0600
Subject: [PATCH] Apply defaultMinItems option; fixes #170

---
 lib/class/OptionRegistry.js | Bin 977 -> 1020 bytes
 lib/types/array.js          | Bin 2757 -> 2982 bytes
 ts/class/OptionRegistry.ts  |   1 +
 ts/types/array.ts           |   7 +++++++
 4 files changed, 8 insertions(+)

diff --git a/lib/class/OptionRegistry.js b/lib/class/OptionRegistry.js
index bf56c1ff7b7d18b722a7f2b990b33c4729d0e3d0..5736c386c65fbfe2794bad7d5815cc0b3fc2291d 100644
GIT binary patch
delta 30
lcmcb}{)c^oDl?yNW}atBYHqQ5tb(nA!DK}yvB`4Gn*p7r2}}S0

delta 11
Scmeyvevy5HD)Zz3<~0BuVFX41

diff --git a/lib/types/array.js b/lib/types/array.js
index 497432959b875cc64b3e7283ec3de10e0b16eac7..24a8e05ba9eff2c66542be2d63edf4db55dbd0eb 100644
GIT binary patch
delta 222
zcmX>qx=eh-9k%+E)U?FXoD$#6JkOHU++uZ21vNE=TqsY$*49>`G%qDJEi*4QMN^@g
zO92Y>^%c@GD-@FQOY>3^i!xJ-;W7xl3W~Xj6<|~0k|5po3i$;knfZAd>M5ydfvA?F
jD6~@WO)SaK%gxNwK+=J#K}P{*ho&`HbM5BSY`>TR+c`tr

delta 12
UcmZ1`epGbB9k$JT*<UgP03}5QjQ{`u

diff --git a/ts/class/OptionRegistry.ts b/ts/class/OptionRegistry.ts
index 4120800c..3af4e746 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 0699f29f..a8871aa2 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')) {
-- 
GitLab