function snakeToCamel(str: string): string { return str.replace(/_([a-z])/g, (_, char) => char.toUpperCase()); } /** Рекурсивно преобразует все ключи объекта из snake_case в camelCase. */ export function convertSnakeKeysToCamel(input: any): T { if (Array.isArray(input)) { return input.map(item => convertSnakeKeysToCamel(item)) as T; } if (input !== null && typeof input === 'object') { const result: any = {}; Object.keys(input).forEach(key => { const camelKey = snakeToCamel(key); result[camelKey] = convertSnakeKeysToCamel(input[key]); }); return result as T; } return input as T; }