@fiizy/fitch
Version:
Fiizy fetch wrapper
61 lines • 2.07 kB
JavaScript
var isObject = function (value) { return typeof value === 'object' && value !== null; };
var isArray = function (value) { return value instanceof Array; };
function toCamel(value) {
return value.replace(/([-_][a-z])/gi, function (newValue) {
return newValue
.toUpperCase()
.replace('-', '')
.replace('_', '');
});
}
function toSnake(value) {
return value.replace(/[A-Z]/g, function (newValue) {
return "_".concat(newValue.toLowerCase().replace(/^_/, ''));
});
}
function arrayContainsOnlyStringsOrNumbers(array) {
return array.every(function (i) { return typeof i === 'string' || typeof i === 'number'; });
}
function formatObject(o, path, replacer, filter) {
if (isArray(o) && !arrayContainsOnlyStringsOrNumbers(o)) {
return o.map(function (i, idx) {
return formatObject(i, path.concat("[".concat(idx, "]")), replacer, filter);
});
}
else if (isObject(o)) {
var n_1 = {};
var obj_1 = o;
Object.keys(obj_1).forEach(function (k) {
if (!filter || !filter(k, path.concat(".".concat(k)))) {
if (isObject(obj_1[k])) {
n_1[replacer(k)] = formatObject(obj_1[k], path.concat(".".concat(k)), replacer, filter);
}
else {
n_1[replacer(k)] = obj_1[k];
}
}
else {
n_1[k] = obj_1[k];
}
});
return n_1;
}
}
function transformToSnake(request, filter) {
if (request.body) {
request.body = formatObject(request.body, 'body', function (s) {
return toSnake(s);
}, filter);
}
return request;
}
function transformToCamel(response, filter) {
if (response.parsedBody) {
response.parsedBody = formatObject(response.parsedBody, 'body', function (s) {
return toCamel(s);
}, filter);
}
return response;
}
export { transformToCamel, transformToSnake };
//# sourceMappingURL=transformers.js.map