UNPKG

@mr-hope/vuepress-shared

Version:
59 lines 2.61 kB
"use strict"; 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