UNPKG

@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
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