UNPKG

rsshub

Version:
29 lines (24 loc) 1.12 kB
const isObject = (obj: any) => obj && typeof obj === 'object'; const isPlainObject = (obj: any) => isObject(obj) && Object.prototype.toString.call(obj) === '[object Object]' && Object.getPrototypeOf(obj) === Object.prototype; /** * A simple camelCase function that only handles strings, but not handling symbol, date, or other complex case. * If you need to handle more complex cases, please use camelcase-keys package. */ export const camelcaseKeys = <T = any>(obj: any): T => { if (Array.isArray(obj)) { return obj.map((x) => camelcaseKeys(x)) as any; } if (isPlainObject(obj)) { const result: any = {}; for (const key of Object.keys(obj)) { const nextKey = isMongoId(key) ? key : camelcase(key); result[nextKey] = camelcaseKeys(obj[key]); } return result as any; } return obj; }; export function camelcase(str: string) { return str.replace(/^_+/, '').replaceAll(/([_-][a-z])/gi, ($1) => $1.toUpperCase().replace('-', '').replace('_', '')); } const isMongoId = (id: string) => id.length === 24 && /^[\dA-Fa-f]{24}$/.test(id);