@nekolab/hanime
Version:
Fast and efficient hanime.tv API wrapper written in TypeScript.
78 lines (77 loc) • 2.23 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.convertToCamelCase = convertToCamelCase;
exports.convertToSnakeCase = convertToSnakeCase;
exports.omit = omit;
/**
* Convert string to camel case
* @param str String to convert
* @returns Converted string
*/
function toCamelCase(str) {
return str.replace(/^_/, '').replace(/_([a-z])/g, (g) => g[1].toUpperCase());
}
/**
* Convert object keys to camel case
* @param obj Object to convert
* @returns Converted object
*/
function convertToCamelCase(obj) {
if (Array.isArray(obj)) {
return obj.map(convertToCamelCase);
}
else if (obj !== null && obj.constructor === Object) {
return Object.keys(obj).reduce((result, key) => {
return { ...result, [toCamelCase(key)]: convertToCamelCase(obj[key]) };
}, {});
}
return obj;
}
/**
* Convert string to snake case
* @param str String to convert
* @returns Converted string
*/
function toSnakeCase(str) {
return str.replace(/([A-Z])/g, (g) => `_${g.toLowerCase()}`);
}
/**
* Convert object keys to snake case
* @param obj Object to convert
* @returns Converted object
*/
function convertToSnakeCase(obj) {
if (Array.isArray(obj)) {
return obj.map(convertToSnakeCase);
}
else if (obj && obj.constructor === Object) {
return Object.keys(obj).reduce((result, key) => {
return { ...result, [toSnakeCase(key)]: convertToSnakeCase(obj[key]) };
}, {});
}
return obj;
}
/**
* Omit properties from an object
* @param obj Object to omit properties from
* @param keys Properties to omit
* @returns Object with omitted properties
*/
function omit(obj, keys) {
if (Array.isArray(obj)) {
return obj.map((item) => omit(item, keys));
}
if (typeof obj === 'object' && obj !== null) {
const result = { ...obj };
Object.keys(result).forEach((key) => {
if (keys.includes(key)) {
delete result[key];
}
else if (typeof result[key] === 'object' && result[key] !== null) {
result[key] = omit(result[key], keys);
}
});
return result;
}
return obj;
}