1 | 'use strict';
|
2 |
|
3 | var utils = require('./utils');
|
4 | var normalizeHeaderName = require('./helpers/normalizeHeaderName');
|
5 | var enhanceError = require('./core/enhanceError');
|
6 |
|
7 | var DEFAULT_CONTENT_TYPE = {
|
8 | 'Content-Type': 'application/x-www-form-urlencoded'
|
9 | };
|
10 |
|
11 | function setContentTypeIfUnset(headers, value) {
|
12 | if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {
|
13 | headers['Content-Type'] = value;
|
14 | }
|
15 | }
|
16 |
|
17 | function getDefaultAdapter() {
|
18 | var adapter;
|
19 | if (typeof XMLHttpRequest !== 'undefined') {
|
20 |
|
21 | adapter = require('./adapters/xhr');
|
22 | } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {
|
23 |
|
24 | adapter = require('./adapters/http');
|
25 | }
|
26 | return adapter;
|
27 | }
|
28 |
|
29 | function stringifySafely(rawValue, parser, encoder) {
|
30 | if (utils.isString(rawValue)) {
|
31 | try {
|
32 | (parser || JSON.parse)(rawValue);
|
33 | return utils.trim(rawValue);
|
34 | } catch (e) {
|
35 | if (e.name !== 'SyntaxError') {
|
36 | throw e;
|
37 | }
|
38 | }
|
39 | }
|
40 |
|
41 | return (encoder || JSON.stringify)(rawValue);
|
42 | }
|
43 |
|
44 | var defaults = {
|
45 |
|
46 | transitional: {
|
47 | silentJSONParsing: true,
|
48 | forcedJSONParsing: true,
|
49 | clarifyTimeoutError: false
|
50 | },
|
51 |
|
52 | adapter: getDefaultAdapter(),
|
53 |
|
54 | transformRequest: [function transformRequest(data, headers) {
|
55 | normalizeHeaderName(headers, 'Accept');
|
56 | normalizeHeaderName(headers, 'Content-Type');
|
57 |
|
58 | if (utils.isFormData(data) ||
|
59 | utils.isArrayBuffer(data) ||
|
60 | utils.isBuffer(data) ||
|
61 | utils.isStream(data) ||
|
62 | utils.isFile(data) ||
|
63 | utils.isBlob(data)
|
64 | ) {
|
65 | return data;
|
66 | }
|
67 | if (utils.isArrayBufferView(data)) {
|
68 | return data.buffer;
|
69 | }
|
70 | if (utils.isURLSearchParams(data)) {
|
71 | setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');
|
72 | return data.toString();
|
73 | }
|
74 | if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) {
|
75 | setContentTypeIfUnset(headers, 'application/json');
|
76 | return stringifySafely(data);
|
77 | }
|
78 | return data;
|
79 | }],
|
80 |
|
81 | transformResponse: [function transformResponse(data) {
|
82 | var transitional = this.transitional;
|
83 | var silentJSONParsing = transitional && transitional.silentJSONParsing;
|
84 | var forcedJSONParsing = transitional && transitional.forcedJSONParsing;
|
85 | var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';
|
86 |
|
87 | if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {
|
88 | try {
|
89 | return JSON.parse(data);
|
90 | } catch (e) {
|
91 | if (strictJSONParsing) {
|
92 | if (e.name === 'SyntaxError') {
|
93 | throw enhanceError(e, this, 'E_JSON_PARSE');
|
94 | }
|
95 | throw e;
|
96 | }
|
97 | }
|
98 | }
|
99 |
|
100 | return data;
|
101 | }],
|
102 |
|
103 | |
104 |
|
105 |
|
106 |
|
107 | timeout: 0,
|
108 |
|
109 | xsrfCookieName: 'XSRF-TOKEN',
|
110 | xsrfHeaderName: 'X-XSRF-TOKEN',
|
111 |
|
112 | maxContentLength: -1,
|
113 | maxBodyLength: -1,
|
114 |
|
115 | validateStatus: function validateStatus(status) {
|
116 | return status >= 200 && status < 300;
|
117 | }
|
118 | };
|
119 |
|
120 | defaults.headers = {
|
121 | common: {
|
122 | 'Accept': 'application/json, text/plain, */*'
|
123 | }
|
124 | };
|
125 |
|
126 | utils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {
|
127 | defaults.headers[method] = {};
|
128 | });
|
129 |
|
130 | utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {
|
131 | defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);
|
132 | });
|
133 |
|
134 | module.exports = defaults;
|