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

25 lines 3.24 kB
import { isArray, isBoolean, isString, } from '@terminus/ngx-tools/type-guards'; /** * Helper function to parse an object with deep keys * * @param object - An object with key as string or string * @param keys - A string or array of strings * @returns String value at the lowest layer or object itself * * @example * objectDeepParse(myObject, ['foo', 'bar']) // Returns: myObject.foo.bar if found * objectDeepParse(myObject, 'foo.bar') // Returns: myObject.foo.bar if found */ // eslint-disable-next-line @typescript-eslint/no-explicit-any export function objectDeepParse(object, keys) { if (isString(object) || isBoolean(object) || !object) { return object; } keys = isArray(keys) ? keys : keys.split('.'); object = object[keys[0]]; if (object && keys.length > 1) { return objectDeepParse(object, keys.slice(1)); } return object; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWRlZXAtcGFyc2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdGVybWludXMvbmd4LXRvb2xzL3V0aWxpdGllcy8iLCJzb3VyY2VzIjpbIm9iamVjdC1kZWVwLXBhcnNlL29iamVjdC1kZWVwLXBhcnNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxPQUFPLEVBQ1AsU0FBUyxFQUNULFFBQVEsR0FDVCxNQUFNLGlDQUFpQyxDQUFDO0FBR3pDOzs7Ozs7Ozs7O0dBVUc7QUFDSCw4REFBOEQ7QUFDOUQsTUFBTSxVQUFVLGVBQWUsQ0FBQyxNQUFvQyxFQUFFLElBQXVCO0lBQzNGLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtRQUNwRCxPQUFPLE1BQU0sQ0FBQztLQUNmO0lBRUQsSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzlDLE1BQU0sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFekIsSUFBSSxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7UUFDN0IsT0FBTyxlQUFlLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUMvQztJQUVELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBpc0FycmF5LFxuICBpc0Jvb2xlYW4sXG4gIGlzU3RyaW5nLFxufSBmcm9tICdAdGVybWludXMvbmd4LXRvb2xzL3R5cGUtZ3VhcmRzJztcblxuXG4vKipcbiAqIEhlbHBlciBmdW5jdGlvbiB0byBwYXJzZSBhbiBvYmplY3Qgd2l0aCBkZWVwIGtleXNcbiAqXG4gKiBAcGFyYW0gb2JqZWN0IC0gQW4gb2JqZWN0IHdpdGgga2V5IGFzIHN0cmluZyBvciBzdHJpbmdcbiAqIEBwYXJhbSBrZXlzIC0gQSBzdHJpbmcgb3IgYXJyYXkgb2Ygc3RyaW5nc1xuICogQHJldHVybnMgU3RyaW5nIHZhbHVlIGF0IHRoZSBsb3dlc3QgbGF5ZXIgb3Igb2JqZWN0IGl0c2VsZlxuICpcbiAqIEBleGFtcGxlXG4gKiBvYmplY3REZWVwUGFyc2UobXlPYmplY3QsIFsnZm9vJywgJ2JhciddKSAvLyBSZXR1cm5zOiBteU9iamVjdC5mb28uYmFyIGlmIGZvdW5kXG4gKiBvYmplY3REZWVwUGFyc2UobXlPYmplY3QsICdmb28uYmFyJykgICAgICAvLyBSZXR1cm5zOiBteU9iamVjdC5mb28uYmFyIGlmIGZvdW5kXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgZnVuY3Rpb24gb2JqZWN0RGVlcFBhcnNlKG9iamVjdDogUmVjb3JkPHN0cmluZywgYW55PiB8IHN0cmluZywga2V5czogc3RyaW5nIHwgc3RyaW5nW10pOiBhbnkge1xuICBpZiAoaXNTdHJpbmcob2JqZWN0KSB8fCBpc0Jvb2xlYW4ob2JqZWN0KSB8fCAhb2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdDtcbiAgfVxuXG4gIGtleXMgPSBpc0FycmF5KGtleXMpID8ga2V5cyA6IGtleXMuc3BsaXQoJy4nKTtcbiAgb2JqZWN0ID0gb2JqZWN0W2tleXNbMF1dO1xuXG4gIGlmIChvYmplY3QgJiYga2V5cy5sZW5ndGggPiAxKSB7XG4gICAgcmV0dXJuIG9iamVjdERlZXBQYXJzZShvYmplY3QsIGtleXMuc2xpY2UoMSkpO1xuICB9XG5cbiAgcmV0dXJuIG9iamVjdDtcbn1cbiJdfQ==