File Explorer

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

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 /.

resolveConfig.js3.4 KB · 106 lines
import platform from '../platform/index.js';import utils from '../utils.js';import AxiosError from '../core/AxiosError.js';import isURLSameOrigin from './isURLSameOrigin.js';import cookies from './cookies.js';import buildFullPath from '../core/buildFullPath.js';import mergeConfig from '../core/mergeConfig.js';import AxiosHeaders from '../core/AxiosHeaders.js';import setFormDataHeaders from '../core/setFormDataHeaders.js';import buildURL from './buildURL.js'; /** * Encode a UTF-8 string to a Latin-1 byte string for use with btoa(). * This is a modern replacement for the deprecated unescape(encodeURIComponent(str)) pattern. * * @param {string} str The string to encode * * @returns {string} UTF-8 bytes as a Latin-1 string */const encodeUTF8 = (str) =>  encodeURIComponent(str).replace(/%([0-9A-F]{2})/gi, (_, hex) =>    String.fromCharCode(parseInt(hex, 16))  ); function resolveConfig(config) {  const newConfig = mergeConfig({}, config);   // Read only own properties to prevent prototype pollution gadgets  // (e.g. Object.prototype.baseURL = 'https://evil.com').  const own = (key) => (utils.hasOwnProp(newConfig, key) ? newConfig[key] : undefined);   const data = own('data');  let withXSRFToken = own('withXSRFToken');  const xsrfHeaderName = own('xsrfHeaderName');  const xsrfCookieName = own('xsrfCookieName');  let headers = own('headers');  const auth = own('auth');  const baseURL = own('baseURL');  const allowAbsoluteUrls = own('allowAbsoluteUrls');  const url = own('url');   newConfig.headers = headers = AxiosHeaders.from(headers);   newConfig.url = buildURL(    buildFullPath(baseURL, url, allowAbsoluteUrls, newConfig),    own('params'),    own('paramsSerializer')  );   // HTTP basic authentication  if (auth) {    const username = utils.getSafeProp(auth, 'username') || '';    const password = utils.getSafeProp(auth, 'password') || '';     try {      headers.set(        'Authorization',        'Basic ' + btoa(username + ':' + (password ? encodeUTF8(password) : ''))      );    } catch (e) {      throw AxiosError.from(e, AxiosError.ERR_BAD_OPTION_VALUE, config);    }  }   if (utils.isFormData(data)) {    if (      platform.hasStandardBrowserEnv ||      platform.hasStandardBrowserWebWorkerEnv ||      utils.isReactNative(data)    ) {      headers.setContentType(undefined); // browser/web worker/RN handles it    } else if (utils.isFunction(data.getHeaders)) {      // Node.js FormData (like form-data package)      setFormDataHeaders(headers, data.getHeaders(), own('formDataHeaderPolicy'));    }  }   // Add xsrf header  // This is only done if running in a standard browser environment.  // Specifically not if we're in a web worker, or react-native.   if (platform.hasStandardBrowserEnv) {    if (utils.isFunction(withXSRFToken)) {      withXSRFToken = withXSRFToken(newConfig);    }     // Strict boolean check — prevents proto-pollution gadgets (e.g. Object.prototype.withXSRFToken = 1)    // and misconfigurations (e.g. "false") from short-circuiting the same-origin check and leaking    // the XSRF token cross-origin.    const shouldSendXSRF =      withXSRFToken === true || (withXSRFToken == null && isURLSameOrigin(newConfig.url));     if (shouldSendXSRF) {      const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);       if (xsrfValue) {        headers.set(xsrfHeaderName, xsrfValue);      }    }  }   return newConfig;} export default resolveConfig;