source: node_modules/axios/lib/adapters/adapters.js

main
Last change on this file was d24f17c, checked in by Aleksandar Panovski <apano77@…>, 15 months ago

Initial commit

  • Property mode set to 100644
File size: 1.9 KB
Line 
1import utils from '../utils.js';
2import httpAdapter from './http.js';
3import xhrAdapter from './xhr.js';
4import AxiosError from "../core/AxiosError.js";
5
6const knownAdapters = {
7 http: httpAdapter,
8 xhr: xhrAdapter
9}
10
11utils.forEach(knownAdapters, (fn, value) => {
12 if (fn) {
13 try {
14 Object.defineProperty(fn, 'name', {value});
15 } catch (e) {
16 // eslint-disable-next-line no-empty
17 }
18 Object.defineProperty(fn, 'adapterName', {value});
19 }
20});
21
22const renderReason = (reason) => `- ${reason}`;
23
24const isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;
25
26export default {
27 getAdapter: (adapters) => {
28 adapters = utils.isArray(adapters) ? adapters : [adapters];
29
30 const {length} = adapters;
31 let nameOrAdapter;
32 let adapter;
33
34 const rejectedReasons = {};
35
36 for (let i = 0; i < length; i++) {
37 nameOrAdapter = adapters[i];
38 let id;
39
40 adapter = nameOrAdapter;
41
42 if (!isResolvedHandle(nameOrAdapter)) {
43 adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];
44
45 if (adapter === undefined) {
46 throw new AxiosError(`Unknown adapter '${id}'`);
47 }
48 }
49
50 if (adapter) {
51 break;
52 }
53
54 rejectedReasons[id || '#' + i] = adapter;
55 }
56
57 if (!adapter) {
58
59 const reasons = Object.entries(rejectedReasons)
60 .map(([id, state]) => `adapter ${id} ` +
61 (state === false ? 'is not supported by the environment' : 'is not available in the build')
62 );
63
64 let s = length ?
65 (reasons.length > 1 ? 'since :\n' + reasons.map(renderReason).join('\n') : ' ' + renderReason(reasons[0])) :
66 'as no adapter specified';
67
68 throw new AxiosError(
69 `There is no suitable adapter to dispatch the request ` + s,
70 'ERR_NOT_SUPPORT'
71 );
72 }
73
74 return adapter;
75 },
76 adapters: knownAdapters
77}
Note: See TracBrowser for help on using the repository browser.