together-ai-sdk
Version:
A typescript SDK for the Together AI API
90 lines (89 loc) • 2.96 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.titleCase = exports.convertCamelCase = exports.camelCase2snakeCase = exports.convertSnakeCase = exports.snakeCase2camelCase = void 0;
/**
* Recursively convert all keys of an object from snake_case to camelCase
* @param obj - the object to convert
* @returns the object with new keys
*/
const snakeCase2camelCase = (obj) => {
if (Array.isArray(obj))
return obj.map(exports.snakeCase2camelCase);
if (typeof obj !== 'object' || !obj)
return obj;
const keys = Object.keys(obj);
const newObj = {};
keys.forEach(key => {
newObj[(0, exports.convertSnakeCase)(key)] = (0, exports.snakeCase2camelCase)(obj[key]);
});
return newObj;
};
exports.snakeCase2camelCase = snakeCase2camelCase;
/**
* Takes a snake case string and converts it into camel case
* @param snakeCase - the string in snake case
* @returns camel case string
*/
const convertSnakeCase = (snakeCase) => {
if (!snakeCase.includes('_'))
return snakeCase;
const result = snakeCase.split('_').map(exports.titleCase).join('');
return result[0].toLowerCase() + result.slice(1);
};
exports.convertSnakeCase = convertSnakeCase;
/**
* Recursively convert all keys of an object from camelCase to snake_case
* @param obj - the object to convert
* @returns the object with new keys
*/
const camelCase2snakeCase = (obj) => {
if (Array.isArray(obj))
return obj.map(exports.camelCase2snakeCase);
if (typeof obj !== 'object' || !obj)
return obj;
const keys = Object.keys(obj);
const newObj = {};
keys.forEach(key => {
newObj[(0, exports.convertCamelCase)(key)] = (0, exports.camelCase2snakeCase)(obj[key]);
});
return newObj;
};
exports.camelCase2snakeCase = camelCase2snakeCase;
/**
* Takes a camel case string and converts it into snake case
* @param camelCase - the string in camel case
* @returns snake case string
*/
const convertCamelCase = (camelCase) => {
let snakeCase = '';
let currentStr = '';
for (let i = 0; i < camelCase.length; i++) {
if (camelCase[i].toUpperCase() === camelCase[i] && /^[a-zA-Z()]+$/.test(camelCase[i])) {
snakeCase += currentStr + '_';
currentStr = camelCase[i].toLowerCase();
}
else {
currentStr += camelCase[i];
}
}
let str = snakeCase + currentStr;
while (str.startsWith('_')) {
str = str.slice(1);
}
while (str.endsWith('_')) {
str = str.slice(0, -1);
}
return str;
};
exports.convertCamelCase = convertCamelCase;
/**
* Uppercases the first letter and lowercases all other letters
* @param str - the string to title case
* @returns the title cased string
*/
const titleCase = (str) => {
if (str.length < 1)
return str;
return str[0].toUpperCase() + str.slice(1).toLowerCase();
};
exports.titleCase = titleCase;