UNPKG

e2ed

Version:

E2E testing framework over Playwright

30 lines (29 loc) 1.22 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.deepMerge = void 0; const asserts_1 = require("../asserts"); const isObjectAndNotAnArray_1 = require("./isObjectAndNotAnArray"); /** * Deep merge two objects (arrays does not merge). * `y` overwrites `x`; `x` and `y` are immutable. */ const deepMerge = (x, y) => { const result = {}; for (const key of Object.keys(x)) { const descriptor = Object.getOwnPropertyDescriptor(x, key); (0, asserts_1.assertValueIsDefined)(descriptor, 'descriptor is defined', { key, x }); Object.defineProperty(result, key, descriptor); } for (const [key, value] of Object.entries(y)) { if ((0, isObjectAndNotAnArray_1.isObjectAndNotAnArray)(x[key]) && (0, isObjectAndNotAnArray_1.isObjectAndNotAnArray)(value)) { result[key] = (0, exports.deepMerge)(x[key], value); } else { const descriptor = Object.getOwnPropertyDescriptor(y, key); (0, asserts_1.assertValueIsDefined)(descriptor, 'descriptor is defined', { key, y }); Object.defineProperty(result, key, descriptor); } } return result; }; exports.deepMerge = deepMerge;