function camelToSnake(str: string): string { return str.replace(/[A-Z]/g, letter => `_${letter.toLowerCase()}`); } function snakeToCamel(str: string): string { return str.replace(/(_[\w])/g, (match) => match[1].toUpperCase() ); } export function convertKeysFromSnakeToCamel(obj: T): T { if (Array.isArray(obj)) { return obj.map(convertKeysFromSnakeToCamel) as unknown as T; } else if (obj !== null && typeof obj === 'object') { return Object.keys(obj).reduce((acc, key) => { const newKey = snakeToCamel(key); acc[newKey] = convertKeysFromSnakeToCamel((obj as any)[key]); return acc; }, {} as any); } return obj; } export function convertKeysFromCamelToSnake(obj: T): T { if (Array.isArray(obj)) { return obj.map(convertKeysFromCamelToSnake) as unknown as T; } else if (obj !== null && typeof obj === 'object') { return Object.keys(obj).reduce((acc, key) => { const newKey = camelToSnake(key); acc[newKey] = convertKeysFromCamelToSnake((obj as any)[key]); return acc; }, {} as any); } return obj; }