export const isNil = (value: unknown): value is null | undefined => value === null || value === undefined; export const isObject = (value: unknown): value is object => typeof value === 'object' && value !== null; export const cloneDeep = (obj: T): T => { if (!isObject(obj)) return obj; if (Array.isArray(obj)) { return obj.map(cloneDeep) as unknown as T; } return Object.entries(obj).reduce((acc, [key, value]) => ({ ...acc, [key]: cloneDeep(value) }), {}) as T; };