| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 | import utils from '../utils.js';import httpAdapter from './http.js';import xhrAdapter from './xhr.js';import fetchAdapter from './fetch.js';import AxiosError from "../core/AxiosError.js";const knownAdapters = {  http: httpAdapter,  xhr: xhrAdapter,  fetch: fetchAdapter}utils.forEach(knownAdapters, (fn, value) => {  if (fn) {    try {      Object.defineProperty(fn, 'name', {value});    } catch (e) {      // eslint-disable-next-line no-empty    }    Object.defineProperty(fn, 'adapterName', {value});  }});const renderReason = (reason) => `- ${reason}`;const isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;export default {  getAdapter: (adapters) => {    adapters = utils.isArray(adapters) ? adapters : [adapters];    const {length} = adapters;    let nameOrAdapter;    let adapter;    const rejectedReasons = {};    for (let i = 0; i < length; i++) {      nameOrAdapter = adapters[i];      let id;      adapter = nameOrAdapter;      if (!isResolvedHandle(nameOrAdapter)) {        adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];        if (adapter === undefined) {          throw new AxiosError(`Unknown adapter '${id}'`);        }      }      if (adapter) {        break;      }      rejectedReasons[id || '#' + i] = adapter;    }    if (!adapter) {      const reasons = Object.entries(rejectedReasons)        .map(([id, state]) => `adapter ${id} ` +          (state === false ? 'is not supported by the environment' : 'is not available in the build')        );      let s = length ?        (reasons.length > 1 ? 'since :\n' + reasons.map(renderReason).join('\n') : ' ' + renderReason(reasons[0])) :        'as no adapter specified';      throw new AxiosError(        `There is no suitable adapter to dispatch the request ` + s,        'ERR_NOT_SUPPORT'      );    }    return adapter;  },  adapters: knownAdapters}
 |