UNPKG

axios-case-converter

Version:

Axios transformer/interceptor that converts snake_case/camelCase

95 lines (94 loc) 4.59 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.applyCaseMiddleware = exports.createCamelResponseTransformer = exports.createSnakeRequestTransformer = exports.createSnakeParamsInterceptor = void 0; var tslib_1 = require("tslib"); var transformers_1 = require("./transformers"); var util_1 = require("./util"); var createSnakeParamsInterceptor = function (options) { var snake = (0, transformers_1.createObjectTransformers)(options === null || options === void 0 ? void 0 : options.caseFunctions).snake; return function (config) { if (!(options === null || options === void 0 ? void 0 : options.ignoreParams) && config.params) { config.params = snake(config.params, options); } return config; }; }; exports.createSnakeParamsInterceptor = createSnakeParamsInterceptor; var createSnakeRequestTransformer = function (options) { var _a = (0, transformers_1.createObjectTransformers)(options === null || options === void 0 ? void 0 : options.caseFunctions), snake = _a.snake, header = _a.header; return function (data, headers) { overwriteHeadersOrNoop(headers, header, options, [ 'common', 'delete', 'get', 'head', 'post', 'put', 'patch', ]); return snake(data, options); }; }; exports.createSnakeRequestTransformer = createSnakeRequestTransformer; var createCamelResponseTransformer = function (options) { var camel = (0, transformers_1.createObjectTransformers)(options === null || options === void 0 ? void 0 : options.caseFunctions).camel; return function (data, headers) { overwriteHeadersOrNoop(headers, camel, options); return camel(data, options); }; }; exports.createCamelResponseTransformer = createCamelResponseTransformer; var overwriteHeadersOrNoop = function (headers, fn, options, excludedKeys) { var e_1, _a, _b, _c; if ((options === null || options === void 0 ? void 0 : options.ignoreHeaders) || (!(0, util_1.isPlainObject)(headers) && !(0, util_1.isAxiosHeaders)(headers))) { return; } try { for (var _d = tslib_1.__values(Object.entries(headers)), _e = _d.next(); !_e.done; _e = _d.next()) { var _f = tslib_1.__read(_e.value, 2), key = _f[0], value = _f[1]; fn(value, tslib_1.__assign({ overwrite: true }, options)); if ((excludedKeys || []).includes(key)) { continue; } if ((0, util_1.isAxiosHeaders)(headers)) { headers.delete(key); headers.set(Object.keys(fn((_b = {}, _b[key] = null, _b), options))[0], value, true); } else { delete headers[key]; headers[Object.keys(fn((_c = {}, _c[key] = null, _c), options))[0]] = value; } } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (_e && !_e.done && (_a = _d.return)) _a.call(_d); } finally { if (e_1) throw e_1.error; } } }; var applyCaseMiddleware = function (axios, options) { var _a, _b, _c; axios.defaults.transformRequest = tslib_1.__spreadArray([ ((_a = options === null || options === void 0 ? void 0 : options.caseMiddleware) === null || _a === void 0 ? void 0 : _a.requestTransformer) || (0, exports.createSnakeRequestTransformer)(options) ], tslib_1.__read((Array.isArray(axios.defaults.transformRequest) ? axios.defaults.transformRequest : axios.defaults.transformRequest !== undefined ? [axios.defaults.transformRequest] : [])), false); axios.defaults.transformResponse = tslib_1.__spreadArray(tslib_1.__spreadArray([], tslib_1.__read((Array.isArray(axios.defaults.transformResponse) ? axios.defaults.transformResponse : axios.defaults.transformResponse !== undefined ? [axios.defaults.transformResponse] : [])), false), [ ((_b = options === null || options === void 0 ? void 0 : options.caseMiddleware) === null || _b === void 0 ? void 0 : _b.responseTransformer) || (0, exports.createCamelResponseTransformer)(options), ], false); axios.interceptors.request.use(((_c = options === null || options === void 0 ? void 0 : options.caseMiddleware) === null || _c === void 0 ? void 0 : _c.requestInterceptor) || (0, exports.createSnakeParamsInterceptor)(options)); return axios; }; exports.applyCaseMiddleware = applyCaseMiddleware;