@debugg-ai/cli
Version:
CLI tool for running DebuggAI tests in CI/CD environments
74 lines • 2.52 kB
JavaScript
// util/objectNaming.ts - Object case transformation utilities for API compatibility
Object.defineProperty(exports, "__esModule", { value: true });
exports.objToSnakeCase = objToSnakeCase;
exports.objToCamelCase = objToCamelCase;
/**
* Convert an object's keys from camelCase to snake_case recursively
*/
function objToSnakeCase(obj) {
if (obj === null || obj === undefined || typeof obj !== 'object') {
return obj;
}
if (Array.isArray(obj)) {
return obj.map(objToSnakeCase);
}
const snakeCaseObj = {};
for (const key in obj) {
if (Object.prototype.hasOwnProperty.call(obj, key)) {
const snakeKey = camelToSnakeCase(key);
const value = obj[key];
if (value && typeof value === 'object' && !Array.isArray(value) && !(value instanceof Date) && !(value instanceof Buffer)) {
snakeCaseObj[snakeKey] = objToSnakeCase(value);
}
else if (Array.isArray(value)) {
snakeCaseObj[snakeKey] = value.map(objToSnakeCase);
}
else {
snakeCaseObj[snakeKey] = value;
}
}
}
return snakeCaseObj;
}
/**
* Convert an object's keys from snake_case to camelCase recursively
*/
function objToCamelCase(obj) {
if (obj === null || obj === undefined || typeof obj !== 'object') {
return obj;
}
if (Array.isArray(obj)) {
return obj.map(objToCamelCase);
}
const camelCaseObj = {};
for (const key in obj) {
if (Object.prototype.hasOwnProperty.call(obj, key)) {
const camelKey = snakeToCamelCase(key);
const value = obj[key];
if (value && typeof value === 'object' && !Array.isArray(value) && !(value instanceof Date) && !(value instanceof Buffer)) {
camelCaseObj[camelKey] = objToCamelCase(value);
}
else if (Array.isArray(value)) {
camelCaseObj[camelKey] = value.map(objToCamelCase);
}
else {
camelCaseObj[camelKey] = value;
}
}
}
return camelCaseObj;
}
/**
* Convert a single camelCase string to snake_case
*/
function camelToSnakeCase(str) {
return str.replace(/([A-Z])/g, '_$1').toLowerCase();
}
/**
* Convert a single snake_case string to camelCase
*/
function snakeToCamelCase(str) {
return str.replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());
}
//# sourceMappingURL=objectNaming.js.map
;