File Explorer

/proc/2/root/var/runtime/node_modules/@aws-sdk/node_modules/axios/lib/core

This explorer reads the filesystem of the server it runs on, so /workspace/user isn't present here. Browsing and the terminal still work against this server's own disk from /.

mergeConfig.js5.6 KB · 175 lines
'use strict'; import utils from '../utils.js';import AxiosHeaders from './AxiosHeaders.js'; const headersToObject = (thing) => (thing instanceof AxiosHeaders ? { ...thing } : thing); const ownEnumerableKeys = (thing) => {  if (Object.getOwnPropertySymbols && Object.getOwnPropertyDescriptor) {    return Object.keys(thing).concat(      Object.getOwnPropertySymbols(thing).filter(        (symbol) => Object.getOwnPropertyDescriptor(thing, symbol).enumerable      )    );  }  return Object.keys(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  config1 = config1 || {};  config2 = config2 || {};   // Use a null-prototype object so that downstream reads such as `config.auth`  // or `config.baseURL` cannot inherit polluted values from Object.prototype.  // `hasOwnProperty` is restored as a non-enumerable own slot to preserve  // ergonomics for user code that relies on it.  const config = Object.create(null);  Object.defineProperty(config, 'hasOwnProperty', {    // Null-proto descriptor so a polluted Object.prototype.get cannot turn    // this data descriptor into an accessor descriptor on the way in.    __proto__: null,    value: Object.prototype.hasOwnProperty,    enumerable: false,    writable: true,    configurable: true,  });   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;  }   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);    }  }   function getMergedTransitionalOption(prop) {    const transitional2 = utils.hasOwnProp(config2, 'transitional')      ? config2.transitional      : undefined;     if (!utils.isUndefined(transitional2)) {      if (utils.isPlainObject(transitional2)) {        if (utils.hasOwnProp(transitional2, prop)) {          return transitional2[prop];        }      } else {        return undefined;      }    }     const transitional1 = utils.hasOwnProp(config1, 'transitional')      ? config1.transitional      : undefined;     if (utils.isPlainObject(transitional1) && utils.hasOwnProp(transitional1, prop)) {      return transitional1[prop];    }     return undefined;  }   // eslint-disable-next-line consistent-return  function mergeDirectKeys(a, b, prop) {    if (utils.hasOwnProp(config2, prop)) {      return getMergedValue(a, b);    } else if (utils.hasOwnProp(config1, prop)) {      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,    allowedSocketPaths: defaultToConfig2,    responseEncoding: defaultToConfig2,    validateStatus: mergeDirectKeys,    headers: (a, b, prop) =>      mergeDeepProperties(headersToObject(a), headersToObject(b), prop, true),  };   utils.forEach(ownEnumerableKeys({ ...config1, ...config2 }), function computeConfigValue(prop) {    if (prop === '__proto__' || prop === 'constructor' || prop === 'prototype') return;    const merge = utils.hasOwnProp(mergeMap, prop) ? mergeMap[prop] : mergeDeepProperties;    const a = utils.hasOwnProp(config1, prop) ? config1[prop] : undefined;    const b = utils.hasOwnProp(config2, prop) ? config2[prop] : undefined;    const configValue = merge(a, b, prop);    (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);  });   if (    utils.hasOwnProp(config2, 'validateStatus') &&    utils.isUndefined(config2.validateStatus) &&    getMergedTransitionalOption('validateStatusUndefinedResolves') === false  ) {    if (utils.hasOwnProp(config1, 'validateStatus')) {      config.validateStatus = getMergedValue(undefined, config1.validateStatus);    } else {      delete config.validateStatus;    }  }   return config;}