UNPKG

autumn-js

Version:
40 lines (39 loc) 943 B
// src/utils/toSnakeCase.ts function stringToSnakeCase(str) { return str.replace(/([a-z])([A-Z])/g, "$1_$2").replace(/[-\s]+/g, "_").toLowerCase(); } var toSnakeCase = ({ obj, excludeKeys, excludeChildrenOf }) => { if (Array.isArray(obj)) { return obj.map( (item) => toSnakeCase({ obj: item, excludeKeys, excludeChildrenOf }) ); } else if (obj !== null && typeof obj === "object") { return Object.fromEntries( Object.entries(obj).map(([key, value]) => { const snakeKey = stringToSnakeCase(key); if (excludeKeys?.includes(key)) { return [key, value]; } if (excludeChildrenOf?.includes(key)) { return [snakeKey, value]; } return [ snakeKey, toSnakeCase({ obj: value, excludeKeys, excludeChildrenOf }) ]; }) ); } return obj; }; export { toSnakeCase };