bananas-commerce
Version:
A client for bananas-commerce with support for TypeScript
25 lines (24 loc) • 1 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.casedObjectKeys = void 0;
const casedString_js_1 = require("./casedString.js");
/** Converts the keys (or deeply nested keys) of an {@link object} to the specified {@link casing}. */
const casedObjectKeys = (object, casing) => {
if (typeof object !== "object" || object === null) {
return object;
}
else if (Array.isArray(object)) {
return object.map((element) => (0, exports.casedObjectKeys)(element, casing));
}
const cased = {};
Object.keys(object).forEach((key) => {
cased[(0, casedString_js_1.casedString)(key, casing)] = (0, exports.casedObjectKeys)(object[key], casing);
});
return cased;
};
exports.casedObjectKeys = casedObjectKeys;
const objectCasers = {
snake: (object) => (0, exports.casedObjectKeys)(object, "snake"),
camel: (object) => (0, exports.casedObjectKeys)(object, "camel"),
};
Object.assign(exports.casedObjectKeys, objectCasers);