File Explorer

/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.js4.1 KB · 122 lines
'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 || {};   // Use a null-prototype object so that downstream reads such as `config.auth`  // or `config.baseURL` cannot inherit polluted values from Object.prototype  // (see GHSA-q8qp-cvcw-x6jj). `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', {    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);    }  }   // 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(Object.keys({ ...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);  });   return config;}