renovate
Version:
Automated dependency updates. Flexible so you don't need to be.
24 lines (23 loc) • 602 B
JavaScript
import { quickStringify } from "./stringify.js";
import { logger } from "../logger/index.js";
import { klona } from "klona/json";
//#region lib/util/clone.ts
/**
* Creates a deep clone of an object.
* @param input The object to clone.
*/
function clone(input) {
try {
return klona(input);
} catch (err) {
logger.warn({ err }, "error cloning object");
const str = quickStringify(input);
// v8 ignore else -- not easily testable
if (str) return JSON.parse(str);
// istanbul ignore next: not easily testable
throw err;
}
}
//#endregion
export { clone };
//# sourceMappingURL=clone.js.map