autumn-js
Version:
Autumn JS Library
28 lines (24 loc) • 728 B
JavaScript
"use client";
// src/libraries/react/utils/toSnakeCase.ts
function stringToSnakeCase(str) {
return str.replace(/([a-z])([A-Z])/g, "$1_$2").replace(/[-\s]+/g, "_").toLowerCase();
}
var toSnakeCase = (obj, excludeKeys) => {
if (Array.isArray(obj)) {
return obj.map((item) => toSnakeCase(item, excludeKeys));
} else if (obj !== null && typeof obj === "object") {
return Object.fromEntries(
Object.entries(obj).map(([key, value]) => {
const snakeKey = stringToSnakeCase(key);
if (excludeKeys && excludeKeys.includes(key)) {
return [snakeKey, value];
}
return [snakeKey, toSnakeCase(value, excludeKeys)];
})
);
}
return obj;
};
export {
toSnakeCase
};