/** * Converts camelCase or snake_case keys of an object to snake_case recursively. */ export function camelOrSnakeToSnakeCase< T extends Record | undefined, >(providerData: T | undefined): Record | undefined { if ( !providerData || typeof providerData !== 'object' || Array.isArray(providerData) ) { return providerData; } const result: Record = {}; for (const [key, value] of Object.entries(providerData)) { const snakeKey = key.replace(/([A-Z])/g, '_$1').toLowerCase(); result[snakeKey] = camelOrSnakeToSnakeCase(value); } return result; }