From e0f08e98f2803ad3e13ac8817e15461ea26f83a2 Mon Sep 17 00:00:00 2001
From: Alvaro Cabrera <pateketrueke@gmail.com>
Date: Fri, 25 Nov 2016 01:06:56 -0600
Subject: [PATCH] Basic support for alwaysFakeOptionals option; fixes #154

---
 lib/class/OptionRegistry.js | Bin 880 -> 931 bytes
 lib/types/object.js         | Bin 3677 -> 3777 bytes
 ts/class/OptionRegistry.ts  |   1 +
 ts/types/object.ts          |   4 +++-
 4 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/lib/class/OptionRegistry.js b/lib/class/OptionRegistry.js
index fcb9cbc31973eb496376ca33c6bb79e2439e112d..47a41f68d6b4dae3ae957ee2c74b5c8adf17500f 100644
GIT binary patch
delta 45
zcmeyswwQf`5c6bhCLY<uobtrVVz<QXRR4mK%>2B>oMQD@1zUx*#GK;P$sEiX0ALso
AA^-pY

delta 11
ScmZ3?{()_S5c6bL<~RTtyaS&A

diff --git a/lib/types/object.js b/lib/types/object.js
index 57fdacd5ec54f70fa94e5f5fd631e22faf78b474..c64b062589d7f6bf2bcc99cf09ef63bd23074448 100644
GIT binary patch
delta 94
zcmcaBb5M4|Zu$IzlFa-(1zUxp)WXutqErnfJw5%zf=qpg#Kz74S)pn))Dv^c6Dy0|
g60=kN!MYN2iq$n0>?b?233G8NK!MffjcjY!0gopjV*mgE

delta 15
XcmX>odsk+{?v0PWvu+k+U(F5xKx_vz

diff --git a/ts/class/OptionRegistry.ts b/ts/class/OptionRegistry.ts
index 3aeb0681..f663dafd 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['alwaysFakeOptionals'] = false;
   }
 }
 
diff --git a/ts/types/object.ts b/ts/types/object.ts
index 7e334c86..26747d59 100644
--- a/ts/types/object.ts
+++ b/ts/types/object.ts
@@ -2,6 +2,7 @@ import container = require('../class/Container');
 import random = require('../core/random');
 import words = require('../generators/words');
 import utils = require('../core/utils');
+import option = require('../api/option');
 import ParseError = require('../core/error');
 
 var randexp = container.get('randexp');
@@ -44,7 +45,8 @@ var objectType: FTypeGenerator = function objectType(value: IObjectSchema, path,
     });
 
     // properties are read from right-to-left
-    var _props = requiredProperties.slice(0, random.number(min, max));
+    var _props = option('alwaysFakeOptionals') ? requiredProperties
+      : requiredProperties.slice(0, random.number(min, max));
 
     _props.forEach(function(key) {
         // first ones are the required properies
-- 
GitLab