@arnaudnyc/mout
Version:
Modular Utilities
23 lines (18 loc) • 598 B
JavaScript
var namespace = require('./namespace');
/**
* set "nested" object property
*/
function set(obj, prop, val){
// prototype pollution mitigation
if(Object.prototype.toString.call(prop) === '[object String]' &&
(prop.includes('__proto__') || prop.includes('prototype') || prop.includes('constructor'))) {
return false;
}
var parts = (/^(.+)\.(.+)$/).exec(prop);
if (parts){
namespace(obj, parts[1])[parts[2]] = val;
} else {
obj[prop] = val;
}
}
module.exports = set;