UNPKG

validated-changeset

Version:
51 lines 1.26 kB
import { getChangeValue, isChange } from '../-private/change'; import isObject from './is-object'; /** * traverse through target and unset `value` from leaf key so can access normally * { * name: Change { * value: 'Charles' * } * } * * to * * { * name: 'Charles' * } * * Shallow copy here is fine because we are swapping out the leaf nested object * rather than mutating a property in something with reference * * @method normalizeObject * @param {Object} target * @return {Object} */ export default function normalizeObject(target, isObj = isObject) { if (!target || !isObj(target)) { return target; } if (isChange(target)) { return getChangeValue(target); } let obj = Object.assign({}, target); for (let key in obj) { const next = obj[key]; if (next && isObj(next)) { if (isChange(next)) { obj[key] = getChangeValue(next); } else { try { JSON.stringify(next); } catch (e) { break; } obj[key] = normalizeObject(next); } } } return obj; } //# sourceMappingURL=normalize-object.js.map