UNPKG

@cookbook/dot-notation

Version:

Object readings and complex transformations using dot notation syntax.

47 lines (37 loc) 1.22 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _is = _interopRequireDefault(require("./is")); var _shallowCopy = _interopRequireDefault(require("./shallow-copy")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * Merge property from two objects * @param x * @param y */ var merge = function merge(x, y) { if (!(_is.default.object(x) || _is.default.object(y))) { return y; } var lhs = (0, _shallowCopy.default)(x); var rhs = (0, _shallowCopy.default)(y); var keys = Object.keys(lhs); var content = (0, _shallowCopy.default)(y); for (var i = 0; i < keys.length; i += 1) { var key = keys[i]; var lhsValue = (0, _shallowCopy.default)(lhs[key]); var rhsValue = (0, _shallowCopy.default)(rhs[key]); if (_is.default.array(lhsValue) && _is.default.array(rhsValue)) { content[key] = rhsValue; } else if (_is.default.object(lhsValue) && _is.default.object(rhsValue)) { content[key] = merge(lhsValue, rhsValue); } else { content[key] = rhsValue || lhsValue; } } return content; }; var _default = merge; exports.default = _default;