UNPKG

bananas-commerce

Version:

A client for bananas-commerce with support for TypeScript

21 lines (20 loc) 768 B
import { casedString } from "./casedString.js"; /** Converts the keys (or deeply nested keys) of an {@link object} to the specified {@link casing}. */ export const casedObjectKeys = (object, casing) => { if (typeof object !== "object" || object === null) { return object; } else if (Array.isArray(object)) { return object.map((element) => casedObjectKeys(element, casing)); } const cased = {}; Object.keys(object).forEach((key) => { cased[casedString(key, casing)] = casedObjectKeys(object[key], casing); }); return cased; }; const objectCasers = { snake: (object) => casedObjectKeys(object, "snake"), camel: (object) => casedObjectKeys(object, "camel"), }; Object.assign(casedObjectKeys, objectCasers);