intercom-client
Version:
[](https://buildwithfern.com?utm_source=github&utm_medium=github&utm_campaign=readme&utm_source=https%3A%2F%2Fgithub.com%2Fintercom%2Fintercom-node) [ • 1.31 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.setObjectProperty = void 0;
/**
* Sets the value at path of object. If a portion of path doesn’t exist it’s created. This is
* inspired by Lodash's set function, but is simplified to accommodate our use case.
* For more details, see https://lodash.com/docs/4.17.15#set.
*
* @param object The object to modify.
* @param path The path of the property to set.
* @param value The value to set.
* @return Returns object.
*/
function setObjectProperty(object, path, value) {
if (object == null) {
return object;
}
const keys = path.split(".");
if (keys.length === 0) {
// Invalid path; do nothing.
return object;
}
let current = object;
for (let i = 0; i < keys.length - 1; i++) {
const key = keys[i];
if (key == null) {
// Unreachable.
continue;
}
if (!current[key] || typeof current[key] !== "object") {
current[key] = {};
}
current = current[key];
}
const lastKey = keys[keys.length - 1];
if (lastKey == null) {
// Unreachable.
return object;
}
current[lastKey] = value;
return object;
}
exports.setObjectProperty = setObjectProperty;