UNPKG

@elsikora/cladi

Version:

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

34 lines (32 loc) 1.01 kB
/** * 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; } export { safeDeepClone }; //# sourceMappingURL=safe-deep-clone.utility.js.map