From c3812585b9834ebe05a163a28d014021cba16aa1 Mon Sep 17 00:00:00 2001 From: Sven Slootweg Date: Wed, 27 May 2020 01:23:14 +0200 Subject: [PATCH] Make sure to include extraneous properties in the result value, when allowed --- index.js | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/index.js b/index.js index d8e878b..37b03a1 100644 --- a/index.js +++ b/index.js @@ -54,18 +54,23 @@ module.exports = function hasShape(rules) { let errors = []; let newObject = {}; - for (let [ key, rule ] of Object.entries(rules)) { - let value = object[key]; + for (let [ key, value ] of Object.entries(object)) { + let rule = rules[key]; - let { errors: keyErrors, newValue } = applyValidators(value, rule); + if (rule != null) { + let { errors: keyErrors, newValue } = applyValidators(value, rule); - let annotatedErrors = annotateErrors({ - pathSegments: [ key ], - errors: keyErrors - }); + let annotatedErrors = annotateErrors({ + pathSegments: [ key ], + errors: keyErrors + }); - errors.push(... annotatedErrors); - newObject[key] = newValue; + errors.push(... annotatedErrors); + newObject[key] = newValue; + } else { + // Extraneous property + newObject[key] = value; + } } return validationResult({