decamelizeTree.ts

 1import { snakeCase } from "case-anything";
 2
 3export default function decamelizeTree(object: { [key: string]: any }) {
 4  const snakeObject: { [key: string]: any } = {};
 5  for (const key in object) {
 6    snakeObject[snakeCase(key)] = decamelizeValue(object[key]);
 7  }
 8  return snakeObject;
 9}
10
11function decamelizeValue(value: any): any {
12  if (typeof value === "object") {
13    if (Array.isArray(value)) {
14      return value.map(decamelizeValue);
15    } else {
16      return decamelizeTree(value);
17    }
18  } else {
19    return value;
20  }
21}