@mr-hope/vuepress-shared
Version:
Shared for vuepress-theme-hope
59 lines • 2.61 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.deepAssignReverse = exports.deepAssign = void 0;
/** Deep merge objects to the first one */
const deepAssign = (originObject, ...assignObjects) => {
if (assignObjects.length === 0)
return originObject;
/** Object being merged */
const assignObject = assignObjects.shift();
Object.keys(assignObject).forEach((property) => {
if (typeof originObject[property] === "object" &&
!Array.isArray(originObject[property]) &&
typeof assignObject[property] === "object" &&
!Array.isArray(assignObject[property]))
(0, exports.deepAssign)(originObject[property], assignObject[property]);
else if (typeof assignObject[property] === "object")
if (Array.isArray(assignObject[property]))
originObject[property] = [
...assignObject[property],
];
else
originObject[property] = {
...assignObject[property],
};
else
originObject[property] = assignObject[property];
});
return (0, exports.deepAssign)(originObject, ...assignObjects);
};
exports.deepAssign = deepAssign;
/** Deep merge objects to the last one */
const deepAssignReverse = (...assignObjects) => {
if (assignObjects.length === 0)
throw new Error("No param is given");
if (assignObjects.length === 1)
return assignObjects[0];
const assignObject = assignObjects.pop();
const originObject = assignObjects.pop();
Object.keys(originObject).forEach((property) => {
if (assignObject[property] === undefined)
if (typeof originObject[property] === "object")
if (Array.isArray(originObject[property]))
assignObject[property] = [...originObject[property]];
else
assignObject[property] = {
...originObject[property],
};
else
assignObject[property] = originObject[property];
else if (typeof assignObject[property] === "object" &&
!Array.isArray(assignObject) &&
typeof originObject[property] === "object" &&
!Array.isArray(originObject[property]))
(0, exports.deepAssignReverse)(originObject[property], assignObject[property]);
});
return (0, exports.deepAssignReverse)(...assignObjects, assignObject);
};
exports.deepAssignReverse = deepAssignReverse;
//# sourceMappingURL=assign.js.map