"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.deepCopyWith = exports.deepCopy = void 0; const isBuffer_1 = require("./isBuffer"); exports.deepCopy = obj => { if (obj === null || typeof obj !== 'object') { return obj; } if (isBuffer_1.isBuffer(obj)) { return obj.slice(); } const copy = Array.isArray(obj) ? [] : {}; Object.keys(obj).forEach(key => { copy[key] = exports.deepCopy(obj[key]); }); return copy; }; exports.deepCopyWith = (obj, customizer) => { function deepCopyWithHelper(value, innerKey, innerObject) { const result = customizer(value, innerKey, innerObject); if (result !== undefined) return result; if (value === null || typeof value !== 'object') { return value; } if (isBuffer_1.isBuffer(value)) { return value.slice(); } const copy = Array.isArray(value) ? [] : {}; Object.keys(value).forEach(k => { copy[k] = deepCopyWithHelper(value[k], k, value); }); return copy; } if (customizer) { return deepCopyWithHelper(obj, '', null); } else { return exports.deepCopy(obj); } };