axios-camel-converter
Version:
from simple-axios-case-converter
43 lines • 1.88 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const camelcase_keys_1 = __importDefault(require("camelcase-keys"));
const snakecase_keys_1 = __importDefault(require("snakecase-keys"));
const axiosCaseConverter = (axios, options) => {
const requestInterceptorId = axios.interceptors.request.use((request) => {
const { data, params } = request;
const snakecaseKeysOptions = { deep: true };
if (options && options.requestExcludeKeys)
snakecaseKeysOptions.exclude = options.requestExcludeKeys;
if (params)
return {
...request,
params: (0, snakecase_keys_1.default)(params, snakecaseKeysOptions)
};
if (!data)
return request;
return {
...request,
// config.data could be a string
// https://github.com/axios/axios/blob/v1.5.1/lib/defaults/index.js#L57
data: typeof data === 'string' ? data : (0, snakecase_keys_1.default)(data, snakecaseKeysOptions)
};
}, (e) => Promise.reject(e));
const responseInterceptorId = axios.interceptors.response.use((response) => {
const { data } = response;
if (!data)
return response;
const camelcaseKeysOptions = { deep: true };
if (options && options.responseExcludeKeys)
camelcaseKeysOptions.exclude = options.responseExcludeKeys;
return {
...response,
data: (0, camelcase_keys_1.default)(data, camelcaseKeysOptions)
};
}, (e) => Promise.reject(e));
return { requestInterceptorId, responseInterceptorId };
};
exports.default = axiosCaseConverter;
//# sourceMappingURL=index.js.map
;