ramda-extension
Version:
Helpful functions built on top of the mighty Ramda
69 lines (59 loc) • 1.95 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _ramda = require("ramda");
var _mapKeysAndValues = _interopRequireDefault(require("./mapKeysAndValues"));
var _toCamelCase = _interopRequireDefault(require("./toCamelCase"));
var _isNotNilObject = _interopRequireDefault(require("./isNotNilObject"));
var _isArray = _interopRequireDefault(require("./isArray"));
var _isFunction = _interopRequireDefault(require("./isFunction"));
// Must be written as arrow `x => camelizeKeys(x)` due to recursion
// prettier-ignore
var camelizeObj = (0, _mapKeysAndValues.default)((0, _ramda.juxt)([(0, _ramda.o)(_toCamelCase.default, _ramda.head), (0, _ramda.o)(function (x) {
return camelizeKeys(x);
}, _ramda.last)]));
var camelizeArray = (0, _ramda.map)(function (x) {
return camelizeKeys(x);
});
/**
* Recursively camelize all keys within an object or array
*
* @func
* @category Object
*
* @param {any} x Object to transform
* @return {any}
* @example
*
* camelizeKeys({
* 'co-obj': { co_string: 'foo' },
* 'co-array': [0, null, { 'f-f': 'ff' }],
* 'co-number': 1,
* 'co-string': '1',
* 'co-fn': head,
* });
*
* // {
* // coArray: [
* // 0,
* // null,
* // {
* // fF: 'ff'
* // }
* // ],
* // coFn: [Function],
* // coNumber: 1,
* // coObj: {
* // coString: 'foo'
* // },
* // coString: '1'
* // }
*
*/
// prettier-ignore
var camelizeKeys = (0, _ramda.cond)([[_isArray.default, camelizeArray], [_isFunction.default, _ramda.identity], [_isNotNilObject.default, camelizeObj], [_ramda.T, _ramda.identity]]);
var _default = camelizeKeys;
exports.default = _default;