@terminus/ngx-tools
Version:
[![CircleCI][circle-badge]][circle-link] [![codecov][codecov-badge]][codecov-project] [![semantic-release][semantic-release-badge]][semantic-release] [![MIT License][license-image]][license-url] <br> [![NPM version][npm-version-image]][npm-url] [![Github
34 lines • 3.63 kB
JavaScript
import { __assign, __read } from "tslib";
/**
* Helper function to get an object with deep keys
*
* @param obj - The object to modify.
* @param keys - The path of the property to set.
* @param value - The value to set.
* @returns The updated object
*
* @example
* const myObj: MyObjType = {
* foo: {
* bar: {
* baz: true,
* },
* },
* };
* const updatedObject = objectDeepSet(myObj, 'foo.bar.baz', false);
* const updatedObject = objectDeepSet<boolean, MyObjType>(myObj, 'foo.bar.baz', false);
*/
// eslint-disable-next-line @typescript-eslint/no-explicit-any
export function objectDeepSet(obj, keys, value) {
var _a, _b;
var paths = keys.split('.');
if (paths.length === 1) {
var path_1 = paths[0];
return (__assign(__assign({}, obj), (_a = {}, _a[path_1] = value, _a)));
}
var _c = __read(paths), path = _c[0], remainingPaths = _c.slice(1);
var nestedObj = obj[path];
var newNestedObj = objectDeepSet(nestedObj, remainingPaths.join('.'), value);
return (__assign(__assign({}, obj), (_b = {}, _b[path] = newNestedObj, _b)));
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWRlZXAtc2V0LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHRlcm1pbnVzL25neC10b29scy91dGlsaXRpZXMvIiwic291cmNlcyI6WyJvYmplY3QtZGVlcC1zZXQvb2JqZWN0LWRlZXAtc2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JHO0FBQ0gsOERBQThEO0FBQzlELE1BQU0sVUFBVSxhQUFhLENBQXVDLEdBQVEsRUFBRSxJQUFZLEVBQUUsS0FBZ0I7O0lBQzFHLElBQU0sS0FBSyxHQUFhLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFeEMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtRQUN0QixJQUFNLE1BQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFdEIsT0FBTyx1QkFDRixHQUFHLGdCQUNMLE1BQUksSUFBRyxLQUFLLE9BQ0MsQ0FBQztLQUNsQjtJQUNLLElBQUEsa0JBQWlDLEVBQWhDLFlBQUksRUFBRSw0QkFBMEIsQ0FBQztJQUN4QyxJQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUIsSUFBTSxZQUFZLEdBQUcsYUFBYSxDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBRS9FLE9BQU8sdUJBQ0YsR0FBRyxnQkFDTCxJQUFJLElBQUcsWUFBWSxPQUNOLENBQUM7QUFDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogSGVscGVyIGZ1bmN0aW9uIHRvIGdldCBhbiBvYmplY3Qgd2l0aCBkZWVwIGtleXNcbiAqXG4gKiBAcGFyYW0gb2JqIC0gVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gKiBAcGFyYW0ga2V5cyAtIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBzZXQuXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gc2V0LlxuICogQHJldHVybnMgVGhlIHVwZGF0ZWQgb2JqZWN0XG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IG15T2JqOiBNeU9ialR5cGUgPSB7XG4gKiAgIGZvbzoge1xuICogICAgIGJhcjoge1xuICogICAgICAgYmF6OiB0cnVlLFxuICogICAgIH0sXG4gKiAgIH0sXG4gKiB9O1xuICogY29uc3QgdXBkYXRlZE9iamVjdCA9IG9iamVjdERlZXBTZXQobXlPYmosICdmb28uYmFyLmJheicsIGZhbHNlKTtcbiAqIGNvbnN0IHVwZGF0ZWRPYmplY3QgPSBvYmplY3REZWVwU2V0PGJvb2xlYW4sIE15T2JqVHlwZT4obXlPYmosICdmb28uYmFyLmJheicsIGZhbHNlKTtcbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCBmdW5jdGlvbiBvYmplY3REZWVwU2V0PFZhbHVlVHlwZSwgT2JqZWN0VHlwZSBleHRlbmRzIG9iamVjdD4ob2JqOiBhbnksIGtleXM6IHN0cmluZywgdmFsdWU6IFZhbHVlVHlwZSk6IE9iamVjdFR5cGUge1xuICBjb25zdCBwYXRoczogc3RyaW5nW10gPSBrZXlzLnNwbGl0KCcuJyk7XG5cbiAgaWYgKHBhdGhzLmxlbmd0aCA9PT0gMSkge1xuICAgIGNvbnN0IHBhdGggPSBwYXRoc1swXTtcblxuICAgIHJldHVybiAoe1xuICAgICAgLi4ub2JqLFxuICAgICAgW3BhdGhdOiB2YWx1ZSxcbiAgICB9KSBhcyBPYmplY3RUeXBlO1xuICB9XG4gIGNvbnN0IFtwYXRoLCAuLi5yZW1haW5pbmdQYXRoc10gPSBwYXRocztcbiAgY29uc3QgbmVzdGVkT2JqID0gb2JqW3BhdGhdO1xuICBjb25zdCBuZXdOZXN0ZWRPYmogPSBvYmplY3REZWVwU2V0KG5lc3RlZE9iaiwgcmVtYWluaW5nUGF0aHMuam9pbignLicpLCB2YWx1ZSk7XG5cbiAgcmV0dXJuICh7XG4gICAgLi4ub2JqLFxuICAgIFtwYXRoXTogbmV3TmVzdGVkT2JqLFxuICB9KSBhcyBPYmplY3RUeXBlO1xufVxuIl19