autumn-js
Version:
Autumn JS Library
40 lines (39 loc) • 943 B
JavaScript
// 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
};