UNPKG

axios-camel-converter

Version:
43 lines 1.88 kB
"use strict"; 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