Comparing version 11.2.0 to 11.3.0
@@ -97,36 +97,87 @@ 'use strict'; | ||
if (rename.options.ignoreUndefined && target[rename.from] === undefined) { | ||
continue; | ||
} | ||
if (rename.isRegExp) { | ||
const targetKeys = Object.keys(target); | ||
const matchedTargetKeys = []; | ||
if (!rename.options.multiple && | ||
renamed[rename.to]) { | ||
for (let j = 0; j < targetKeys.length; ++j) { | ||
if (rename.from.test(targetKeys[j])) { | ||
matchedTargetKeys.push(targetKeys[j]); | ||
} | ||
} | ||
errors.push(this.createError('object.rename.multiple', { from: rename.from, to: rename.to }, state, options)); | ||
if (options.abortEarly) { | ||
return finish(); | ||
const allUndefined = matchedTargetKeys.every((key) => target[key] === undefined); | ||
if (rename.options.ignoreUndefined && allUndefined) { | ||
continue; | ||
} | ||
} | ||
if (Object.prototype.hasOwnProperty.call(target, rename.to) && | ||
!rename.options.override && | ||
!renamed[rename.to]) { | ||
if (!rename.options.multiple && | ||
renamed[rename.to]) { | ||
errors.push(this.createError('object.rename.override', { from: rename.from, to: rename.to }, state, options)); | ||
if (options.abortEarly) { | ||
return finish(); | ||
errors.push(this.createError('object.rename.multiple', { from: matchedTargetKeys, to: rename.to }, state, options)); | ||
if (options.abortEarly) { | ||
return finish(); | ||
} | ||
} | ||
} | ||
if (target[rename.from] === undefined) { | ||
delete target[rename.to]; | ||
if (Object.prototype.hasOwnProperty.call(target, rename.to) && | ||
!rename.options.override && | ||
!renamed[rename.to]) { | ||
errors.push(this.createError('object.rename.override', { from: rename.from, to: rename.to }, state, options)); | ||
if (options.abortEarly) { | ||
return finish(); | ||
} | ||
} | ||
if (allUndefined) { | ||
delete target[rename.to]; | ||
} | ||
else { | ||
target[rename.to] = target[matchedTargetKeys[matchedTargetKeys.length - 1]]; | ||
} | ||
renamed[rename.to] = true; | ||
if (!rename.options.alias) { | ||
for (let j = 0; j < matchedTargetKeys.length; ++j) { | ||
delete target[matchedTargetKeys[j]]; | ||
} | ||
} | ||
} | ||
else { | ||
target[rename.to] = target[rename.from]; | ||
} | ||
if (rename.options.ignoreUndefined && target[rename.from] === undefined) { | ||
continue; | ||
} | ||
renamed[rename.to] = true; | ||
if (!rename.options.multiple && | ||
renamed[rename.to]) { | ||
if (!rename.options.alias) { | ||
delete target[rename.from]; | ||
errors.push(this.createError('object.rename.multiple', { from: rename.from, to: rename.to }, state, options)); | ||
if (options.abortEarly) { | ||
return finish(); | ||
} | ||
} | ||
if (Object.prototype.hasOwnProperty.call(target, rename.to) && | ||
!rename.options.override && | ||
!renamed[rename.to]) { | ||
errors.push(this.createError('object.rename.override', { from: rename.from, to: rename.to }, state, options)); | ||
if (options.abortEarly) { | ||
return finish(); | ||
} | ||
} | ||
if (target[rename.from] === undefined) { | ||
delete target[rename.to]; | ||
} | ||
else { | ||
target[rename.to] = target[rename.from]; | ||
} | ||
renamed[rename.to] = true; | ||
if (!rename.options.alias) { | ||
delete target[rename.from]; | ||
} | ||
} | ||
@@ -466,3 +517,3 @@ } | ||
Hoek.assert(typeof from === 'string', 'Rename missing the from argument'); | ||
Hoek.assert(typeof from === 'string' || from instanceof RegExp, 'Rename missing the from argument'); | ||
Hoek.assert(typeof to === 'string', 'Rename missing the to argument'); | ||
@@ -480,3 +531,4 @@ Hoek.assert(to !== from, 'Cannot rename key to same name:', from); | ||
to, | ||
options: Hoek.applyToDefaults(internals.renameDefaults, options || {}) | ||
options: Hoek.applyToDefaults(internals.renameDefaults, options || {}), | ||
isRegExp: from instanceof RegExp | ||
}); | ||
@@ -483,0 +535,0 @@ |
{ | ||
"name": "joi", | ||
"description": "Object schema validation", | ||
"version": "11.2.0", | ||
"version": "11.3.0", | ||
"homepage": "https://github.com/hapijs/joi", | ||
@@ -6,0 +6,0 @@ "repository": "git://github.com/hapijs/joi", |
@@ -29,3 +29,3 @@ ![joi Logo](https://raw.github.com/hapijs/joi/master/images/joi.png) | ||
# API | ||
See the detailed [API Reference](https://github.com/hapijs/joi/blob/v11.2.0/API.md). | ||
See the detailed [API Reference](https://github.com/hapijs/joi/blob/v11.3.0/API.md). | ||
@@ -32,0 +32,0 @@ # Example |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
172331
4056