UNPKG

@elsikora/cladi

Version:

ClaDI is a library for creating and managing classes in TypeScript.

36 lines (33 loc) 1.04 kB
'use strict'; /** * Utility method to safely deep clone objects that may contain functions. * Unlike structuredClone, this can handle functions by preserving their reference * but cloning everything else. * @param {T} source Object to clone * @returns {T} A deep clone of the object * @template T Type of object to clone */ function safeDeepClone(source) { // Return primitive values and functions directly if (source == null || typeof source !== "object") { return source; } // Handle Date if (source instanceof Date) { return new Date(source); } // Handle Array if (Array.isArray(source)) { return source.map((item) => safeDeepClone(item)); } // Handle Object const result = {}; for (const key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { result[key] = safeDeepClone(source[key]); } } return result; } exports.safeDeepClone = safeDeepClone; //# sourceMappingURL=safe-deep-clone.utility.js.map