UNPKG

@nekolab/hanime

Version:

Fast and efficient hanime.tv API wrapper written in TypeScript.

78 lines (77 loc) 2.23 kB
"use strict"; 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; }