| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 | 'use strict';import utils from '../utils.js';import AxiosHeaders from "./AxiosHeaders.js";const headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;/** * Config-specific merge-function which creates a new config-object * by merging two configuration objects together. * * @param {Object} config1 * @param {Object} config2 * * @returns {Object} New object resulting from merging config2 to config1 */export default function mergeConfig(config1, config2) {  // eslint-disable-next-line no-param-reassign  config2 = config2 || {};  const config = {};  function getMergedValue(target, source, prop, caseless) {    if (utils.isPlainObject(target) && utils.isPlainObject(source)) {      return utils.merge.call({caseless}, target, source);    } else if (utils.isPlainObject(source)) {      return utils.merge({}, source);    } else if (utils.isArray(source)) {      return source.slice();    }    return source;  }  // eslint-disable-next-line consistent-return  function mergeDeepProperties(a, b, prop , caseless) {    if (!utils.isUndefined(b)) {      return getMergedValue(a, b, prop , caseless);    } else if (!utils.isUndefined(a)) {      return getMergedValue(undefined, a, prop , caseless);    }  }  // eslint-disable-next-line consistent-return  function valueFromConfig2(a, b) {    if (!utils.isUndefined(b)) {      return getMergedValue(undefined, b);    }  }  // eslint-disable-next-line consistent-return  function defaultToConfig2(a, b) {    if (!utils.isUndefined(b)) {      return getMergedValue(undefined, b);    } else if (!utils.isUndefined(a)) {      return getMergedValue(undefined, a);    }  }  // eslint-disable-next-line consistent-return  function mergeDirectKeys(a, b, prop) {    if (prop in config2) {      return getMergedValue(a, b);    } else if (prop in config1) {      return getMergedValue(undefined, a);    }  }  const mergeMap = {    url: valueFromConfig2,    method: valueFromConfig2,    data: valueFromConfig2,    baseURL: defaultToConfig2,    transformRequest: defaultToConfig2,    transformResponse: defaultToConfig2,    paramsSerializer: defaultToConfig2,    timeout: defaultToConfig2,    timeoutMessage: defaultToConfig2,    withCredentials: defaultToConfig2,    withXSRFToken: defaultToConfig2,    adapter: defaultToConfig2,    responseType: defaultToConfig2,    xsrfCookieName: defaultToConfig2,    xsrfHeaderName: defaultToConfig2,    onUploadProgress: defaultToConfig2,    onDownloadProgress: defaultToConfig2,    decompress: defaultToConfig2,    maxContentLength: defaultToConfig2,    maxBodyLength: defaultToConfig2,    beforeRedirect: defaultToConfig2,    transport: defaultToConfig2,    httpAgent: defaultToConfig2,    httpsAgent: defaultToConfig2,    cancelToken: defaultToConfig2,    socketPath: defaultToConfig2,    responseEncoding: defaultToConfig2,    validateStatus: mergeDirectKeys,    headers: (a, b , prop) => mergeDeepProperties(headersToObject(a), headersToObject(b),prop, true)  };  utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {    const merge = mergeMap[prop] || mergeDeepProperties;    const configValue = merge(config1[prop], config2[prop], prop);    (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);  });  return config;}
 |