/** * Convert snake_case string to camelCase * @param {string} str - String in snake_case * @returns {string} String in camelCase */ function snakeToCamel(str) { return str.replace(/_([a-z])/g, (_, letter) => letter.toUpperCase()); } /** * Convert all keys in an object from snake_case to camelCase * @param {Object} obj - Object with snake_case keys * @returns {Object} Object with camelCase keys */ function convertKeysToCamelCase(obj) { if (obj === null || typeof obj !== 'object') { return obj; } if (Array.isArray(obj)) { return obj.map(item => convertKeysToCamelCase(item)); } const converted = {}; for (const key in obj) { if (obj.hasOwnProperty(key)) { const camelKey = snakeToCamel(key); converted[camelKey] = convertKeysToCamelCase(obj[key]); } } return converted; } module.exports = { snakeToCamel, convertKeysToCamelCase };