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({