axios 0.21.4 → 0.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -15,17 +15,6 @@ module.exports = function mergeConfig(config1, config2) {
15
15
  config2 = config2 || {};
16
16
  var config = {};
17
17
 
18
- var valueFromConfig2Keys = ['url', 'method', 'data'];
19
- var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];
20
- var defaultToConfig2Keys = [
21
- 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',
22
- 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',
23
- 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress',
24
- 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent',
25
- 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'
26
- ];
27
- var directMergeKeys = ['validateStatus'];
28
-
29
18
  function getMergedValue(target, source) {
30
19
  if (utils.isPlainObject(target) && utils.isPlainObject(source)) {
31
20
  return utils.merge(target, source);
@@ -37,51 +26,74 @@ module.exports = function mergeConfig(config1, config2) {
37
26
  return source;
38
27
  }
39
28
 
29
+ // eslint-disable-next-line consistent-return
40
30
  function mergeDeepProperties(prop) {
41
31
  if (!utils.isUndefined(config2[prop])) {
42
- config[prop] = getMergedValue(config1[prop], config2[prop]);
32
+ return getMergedValue(config1[prop], config2[prop]);
43
33
  } else if (!utils.isUndefined(config1[prop])) {
44
- config[prop] = getMergedValue(undefined, config1[prop]);
34
+ return getMergedValue(undefined, config1[prop]);
45
35
  }
46
36
  }
47
37
 
48
- utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {
38
+ // eslint-disable-next-line consistent-return
39
+ function valueFromConfig2(prop) {
49
40
  if (!utils.isUndefined(config2[prop])) {
50
- config[prop] = getMergedValue(undefined, config2[prop]);
41
+ return getMergedValue(undefined, config2[prop]);
51
42
  }
52
- });
53
-
54
- utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);
43
+ }
55
44
 
56
- utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {
45
+ // eslint-disable-next-line consistent-return
46
+ function defaultToConfig2(prop) {
57
47
  if (!utils.isUndefined(config2[prop])) {
58
- config[prop] = getMergedValue(undefined, config2[prop]);
48
+ return getMergedValue(undefined, config2[prop]);
59
49
  } else if (!utils.isUndefined(config1[prop])) {
60
- config[prop] = getMergedValue(undefined, config1[prop]);
50
+ return getMergedValue(undefined, config1[prop]);
61
51
  }
62
- });
52
+ }
63
53
 
64
- utils.forEach(directMergeKeys, function merge(prop) {
54
+ // eslint-disable-next-line consistent-return
55
+ function mergeDirectKeys(prop) {
65
56
  if (prop in config2) {
66
- config[prop] = getMergedValue(config1[prop], config2[prop]);
57
+ return getMergedValue(config1[prop], config2[prop]);
67
58
  } else if (prop in config1) {
68
- config[prop] = getMergedValue(undefined, config1[prop]);
59
+ return getMergedValue(undefined, config1[prop]);
69
60
  }
70
- });
71
-
72
- var axiosKeys = valueFromConfig2Keys
73
- .concat(mergeDeepPropertiesKeys)
74
- .concat(defaultToConfig2Keys)
75
- .concat(directMergeKeys);
61
+ }
76
62
 
77
- var otherKeys = Object
78
- .keys(config1)
79
- .concat(Object.keys(config2))
80
- .filter(function filterAxiosKeys(key) {
81
- return axiosKeys.indexOf(key) === -1;
82
- });
63
+ var mergeMap = {
64
+ 'url': valueFromConfig2,
65
+ 'method': valueFromConfig2,
66
+ 'data': valueFromConfig2,
67
+ 'baseURL': defaultToConfig2,
68
+ 'transformRequest': defaultToConfig2,
69
+ 'transformResponse': defaultToConfig2,
70
+ 'paramsSerializer': defaultToConfig2,
71
+ 'timeout': defaultToConfig2,
72
+ 'timeoutMessage': defaultToConfig2,
73
+ 'withCredentials': defaultToConfig2,
74
+ 'adapter': defaultToConfig2,
75
+ 'responseType': defaultToConfig2,
76
+ 'xsrfCookieName': defaultToConfig2,
77
+ 'xsrfHeaderName': defaultToConfig2,
78
+ 'onUploadProgress': defaultToConfig2,
79
+ 'onDownloadProgress': defaultToConfig2,
80
+ 'decompress': defaultToConfig2,
81
+ 'maxContentLength': defaultToConfig2,
82
+ 'maxBodyLength': defaultToConfig2,
83
+ 'transport': defaultToConfig2,
84
+ 'httpAgent': defaultToConfig2,
85
+ 'httpsAgent': defaultToConfig2,
86
+ 'cancelToken': defaultToConfig2,
87
+ 'socketPath': defaultToConfig2,
88
+ 'responseEncoding': defaultToConfig2,
89
+ 'validateStatus': mergeDirectKeys
90
+ };
83
91
 
84
- utils.forEach(otherKeys, mergeDeepProperties);
92
+ utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {
93
+ var merge = mergeMap[prop] || mergeDeepProperties;
94
+ var configValue = merge(prop);
95
+ (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);
96
+ });
85
97
 
86
98
  return config;
87
99
  };
package/lib/defaults.js CHANGED
@@ -79,7 +79,7 @@ var defaults = {
79
79
  }],
80
80
 
81
81
  transformResponse: [function transformResponse(data) {
82
- var transitional = this.transitional;
82
+ var transitional = this.transitional || defaults.transitional;
83
83
  var silentJSONParsing = transitional && transitional.silentJSONParsing;
84
84
  var forcedJSONParsing = transitional && transitional.forcedJSONParsing;
85
85
  var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';
@@ -114,12 +114,12 @@ var defaults = {
114
114
 
115
115
  validateStatus: function validateStatus(status) {
116
116
  return status >= 200 && status < 300;
117
- }
118
- };
117
+ },
119
118
 
120
- defaults.headers = {
121
- common: {
122
- 'Accept': 'application/json, text/plain, */*'
119
+ headers: {
120
+ common: {
121
+ 'Accept': 'application/json, text/plain, */*'
122
+ }
123
123
  }
124
124
  };
125
125
 
@@ -0,0 +1,3 @@
1
+ # axios // env
2
+
3
+ The `data.js` file is updated automatically when the package version is upgrading. Please do not edit it manually.
@@ -0,0 +1,3 @@
1
+ module.exports = {
2
+ "version": "0.25.0"
3
+ };
@@ -10,5 +10,5 @@ module.exports = function isAbsoluteURL(url) {
10
10
  // A URL is considered absolute if it begins with "<scheme>://" or "//" (protocol-relative URL).
11
11
  // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed
12
12
  // by any combination of letters, digits, plus, period, or hyphen.
13
- return /^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(url);
13
+ return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url);
14
14
  };
@@ -1,5 +1,7 @@
1
1
  'use strict';
2
2
 
3
+ var utils = require('./../utils');
4
+
3
5
  /**
4
6
  * Determines whether the payload is an error thrown by Axios
5
7
  *
@@ -7,5 +9,5 @@
7
9
  * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false
8
10
  */
9
11
  module.exports = function isAxiosError(payload) {
10
- return (typeof payload === 'object') && (payload.isAxiosError === true);
12
+ return utils.isObject(payload) && (payload.isAxiosError === true);
11
13
  };
@@ -0,0 +1,55 @@
1
+ 'use strict';
2
+
3
+ function combinedKey(parentKey, elKey) {
4
+ return parentKey + '.' + elKey;
5
+ }
6
+
7
+ function buildFormData(formData, data, parentKey) {
8
+ if (Array.isArray(data)) {
9
+ data.forEach(function buildArray(el, i) {
10
+ buildFormData(formData, el, combinedKey(parentKey, i));
11
+ });
12
+ } else if (
13
+ typeof data === 'object' &&
14
+ !(data instanceof File || data === null)
15
+ ) {
16
+ Object.keys(data).forEach(function buildObject(key) {
17
+ buildFormData(
18
+ formData,
19
+ data[key],
20
+ parentKey ? combinedKey(parentKey, key) : key
21
+ );
22
+ });
23
+ } else {
24
+ if (data === undefined) {
25
+ return;
26
+ }
27
+
28
+ var value =
29
+ typeof data === 'boolean' || typeof data === 'number'
30
+ ? data.toString()
31
+ : data;
32
+ formData.append(parentKey, value);
33
+ }
34
+ }
35
+
36
+ /**
37
+ * convert a data object to FormData
38
+ *
39
+ * type FormDataPrimitive = string | Blob | number | boolean
40
+ * interface FormDataNest {
41
+ * [x: string]: FormVal
42
+ * }
43
+ *
44
+ * type FormVal = FormDataNest | FormDataPrimitive
45
+ *
46
+ * @param {FormVal} data
47
+ */
48
+
49
+ module.exports = function getFormData(data) {
50
+ var formData = new FormData();
51
+
52
+ buildFormData(formData, data);
53
+
54
+ return formData;
55
+ };
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var pkg = require('./../../package.json');
3
+ var VERSION = require('../env/data').version;
4
4
 
5
5
  var validators = {};
6
6
 
@@ -12,48 +12,26 @@ var validators = {};
12
12
  });
13
13
 
14
14
  var deprecatedWarnings = {};
15
- var currentVerArr = pkg.version.split('.');
16
-
17
- /**
18
- * Compare package versions
19
- * @param {string} version
20
- * @param {string?} thanVersion
21
- * @returns {boolean}
22
- */
23
- function isOlderVersion(version, thanVersion) {
24
- var pkgVersionArr = thanVersion ? thanVersion.split('.') : currentVerArr;
25
- var destVer = version.split('.');
26
- for (var i = 0; i < 3; i++) {
27
- if (pkgVersionArr[i] > destVer[i]) {
28
- return true;
29
- } else if (pkgVersionArr[i] < destVer[i]) {
30
- return false;
31
- }
32
- }
33
- return false;
34
- }
35
15
 
36
16
  /**
37
17
  * Transitional option validator
38
- * @param {function|boolean?} validator
39
- * @param {string?} version
40
- * @param {string} message
18
+ * @param {function|boolean?} validator - set to false if the transitional option has been removed
19
+ * @param {string?} version - deprecated version / removed since version
20
+ * @param {string?} message - some message with additional info
41
21
  * @returns {function}
42
22
  */
43
23
  validators.transitional = function transitional(validator, version, message) {
44
- var isDeprecated = version && isOlderVersion(version);
45
-
46
24
  function formatMessage(opt, desc) {
47
- return '[Axios v' + pkg.version + '] Transitional option \'' + opt + '\'' + desc + (message ? '. ' + message : '');
25
+ return '[Axios v' + VERSION + '] Transitional option \'' + opt + '\'' + desc + (message ? '. ' + message : '');
48
26
  }
49
27
 
50
28
  // eslint-disable-next-line func-names
51
29
  return function(value, opt, opts) {
52
30
  if (validator === false) {
53
- throw new Error(formatMessage(opt, ' has been removed in ' + version));
31
+ throw new Error(formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')));
54
32
  }
55
33
 
56
- if (isDeprecated && !deprecatedWarnings[opt]) {
34
+ if (version && !deprecatedWarnings[opt]) {
57
35
  deprecatedWarnings[opt] = true;
58
36
  // eslint-disable-next-line no-console
59
37
  console.warn(
@@ -99,7 +77,6 @@ function assertOptions(options, schema, allowUnknown) {
99
77
  }
100
78
 
101
79
  module.exports = {
102
- isOlderVersion: isOlderVersion,
103
80
  assertOptions: assertOptions,
104
81
  validators: validators
105
82
  };
package/lib/utils.js CHANGED
@@ -13,7 +13,7 @@ var toString = Object.prototype.toString;
13
13
  * @returns {boolean} True if value is an Array, otherwise false
14
14
  */
15
15
  function isArray(val) {
16
- return toString.call(val) === '[object Array]';
16
+ return Array.isArray(val);
17
17
  }
18
18
 
19
19
  /**
@@ -54,7 +54,7 @@ function isArrayBuffer(val) {
54
54
  * @returns {boolean} True if value is an FormData, otherwise false
55
55
  */
56
56
  function isFormData(val) {
57
- return (typeof FormData !== 'undefined') && (val instanceof FormData);
57
+ return toString.call(val) === '[object FormData]';
58
58
  }
59
59
 
60
60
  /**
@@ -68,7 +68,7 @@ function isArrayBufferView(val) {
68
68
  if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {
69
69
  result = ArrayBuffer.isView(val);
70
70
  } else {
71
- result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);
71
+ result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));
72
72
  }
73
73
  return result;
74
74
  }
@@ -175,7 +175,7 @@ function isStream(val) {
175
175
  * @returns {boolean} True if value is a URLSearchParams object, otherwise false
176
176
  */
177
177
  function isURLSearchParams(val) {
178
- return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;
178
+ return toString.call(val) === '[object URLSearchParams]';
179
179
  }
180
180
 
181
181
  /**
package/package.json CHANGED
@@ -1,14 +1,15 @@
1
1
  {
2
2
  "name": "axios",
3
- "version": "0.21.4",
3
+ "version": "0.25.0",
4
4
  "description": "Promise based HTTP client for the browser and node.js",
5
5
  "main": "index.js",
6
+ "types": "index.d.ts",
6
7
  "scripts": {
7
- "test": "grunt test",
8
+ "test": "grunt test && dtslint",
8
9
  "start": "node ./sandbox/server.js",
9
10
  "build": "NODE_ENV=production grunt build",
10
- "preversion": "npm test",
11
- "version": "npm run build && grunt version && git add -A dist && git add CHANGELOG.md bower.json package.json",
11
+ "preversion": "grunt version && npm test",
12
+ "version": "npm run build && git add -A dist && git add CHANGELOG.md bower.json package.json",
12
13
  "postversion": "git push && git push --tags",
13
14
  "examples": "node ./examples/server.js",
14
15
  "coveralls": "cat coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js",
@@ -32,7 +33,9 @@
32
33
  },
33
34
  "homepage": "https://axios-http.com",
34
35
  "devDependencies": {
36
+ "abortcontroller-polyfill": "^1.5.0",
35
37
  "coveralls": "^3.0.0",
38
+ "dtslint": "^4.1.6",
36
39
  "es6-promise": "^4.2.4",
37
40
  "grunt": "^1.3.0",
38
41
  "grunt-banner": "^0.6.0",
@@ -42,7 +45,6 @@
42
45
  "grunt-eslint": "^23.0.0",
43
46
  "grunt-karma": "^4.0.0",
44
47
  "grunt-mocha-test": "^0.13.3",
45
- "grunt-ts": "^6.0.0-beta.19",
46
48
  "grunt-webpack": "^4.0.2",
47
49
  "istanbul-instrumenter-loader": "^1.0.0",
48
50
  "jasmine-core": "^2.4.1",
@@ -73,7 +75,7 @@
73
75
  "unpkg": "dist/axios.min.js",
74
76
  "typings": "./index.d.ts",
75
77
  "dependencies": {
76
- "follow-redirects": "^1.14.0"
78
+ "follow-redirects": "^1.14.7"
77
79
  },
78
80
  "bundlesize": [
79
81
  {
package/tsconfig.json ADDED
@@ -0,0 +1,14 @@
1
+ {
2
+ "compilerOptions": {
3
+ "module": "es2015",
4
+ "lib": ["dom", "es2015"],
5
+ "types": [],
6
+ "moduleResolution": "node",
7
+ "strict": true,
8
+ "noEmit": true,
9
+ "baseUrl": ".",
10
+ "paths": {
11
+ "axios": ["."]
12
+ }
13
+ }
14
+ }
package/tslint.json ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "extends": "dtslint/dtslint.json",
3
+ "rules": {
4
+ "no-unnecessary-generics": false
5
+ }
6
+ }