Files
Sergei Zharinov 930cf6633c refactor: Rewrite imports with .ts extensions (#40700)
fix: Additional vi.mock path corrections and prettier formatting
2026-01-26 22:48:17 +00:00

24 lines
576 B
TypeScript

import { klona } from 'klona/json';
import { logger } from '../logger/index.ts';
import { quickStringify } from './stringify.ts';
/**
* Creates a deep clone of an object.
* @param input The object to clone.
*/
export function clone<T = unknown>(input: T): T {
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) as T;
}
// istanbul ignore next: not easily testable
throw err;
}
}