axios 0.5.0 → 0.5.4
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.
Potentially problematic release.
This version of axios might be problematic. Click here for more details.
- package/CHANGELOG.md +18 -1
- package/COOKBOOK.md +127 -0
- package/README.md +7 -2
- package/coverage/lcov-report/base.css +182 -0
- package/coverage/lcov-report/dist/axios.js.html +6075 -0
- package/coverage/lcov-report/dist/index.html +85 -0
- package/coverage/lcov-report/index.html +85 -0
- package/coverage/lcov-report/prettify.css +1 -0
- package/coverage/lcov-report/prettify.js +1 -0
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +156 -0
- package/coverage/lcov-report/webpack.tests.js.html +10236 -0
- package/coverage/lcov.info +2366 -0
- package/dist/axios.amd.js +118 -116
- package/dist/axios.amd.map +1 -1
- package/dist/axios.amd.min.js +3 -3
- package/dist/axios.amd.min.map +1 -1
- package/dist/axios.amd.standalone.js +118 -116
- package/dist/axios.amd.standalone.map +1 -1
- package/dist/axios.amd.standalone.min.js +2 -2
- package/dist/axios.amd.standalone.min.map +1 -1
- package/dist/axios.js +118 -116
- package/dist/axios.map +1 -1
- package/dist/axios.min.js +3 -3
- package/dist/axios.min.map +1 -1
- package/dist/axios.standalone.js +118 -116
- package/dist/axios.standalone.map +1 -1
- package/dist/axios.standalone.min.js +2 -2
- package/dist/axios.standalone.min.map +1 -1
- package/examples/README.md +9 -0
- package/examples/all/index.html +44 -0
- package/examples/amd/index.html +37 -0
- package/examples/get/index.html +33 -0
- package/examples/get/people.json +26 -0
- package/examples/post/index.html +45 -0
- package/examples/server.js +98 -0
- package/examples/transform-response/index.html +44 -0
- package/examples/upload/index.html +43 -0
- package/examples/upload/server.js +11 -0
- package/lib/adapters/http.js +10 -7
- package/lib/adapters/xhr.js +23 -17
- package/lib/axios.js +36 -26
- package/lib/core/InterceptorManager.js +2 -3
- package/lib/core/dispatchRequest.js +0 -2
- package/lib/defaults.js +6 -5
- package/lib/helpers/cookies.js +1 -1
- package/lib/helpers/parseHeaders.js +2 -2
- package/lib/helpers/spread.js +3 -1
- package/lib/helpers/transformData.js +1 -1
- package/lib/helpers/urlIsSameOrigin.js +8 -6
- package/lib/utils.js +10 -6
- package/package.json +20 -12
- package/webpack.config.js +5 -10
- package/webpack.tests.js +2 -0
@@ -0,0 +1,98 @@
|
|
1
|
+
var fs = require('fs');
|
2
|
+
var url = require('url');
|
3
|
+
var path = require('path');
|
4
|
+
var http = require('http');
|
5
|
+
var argv = require('minimist')(process.argv.slice(2));
|
6
|
+
var server;
|
7
|
+
var dirs;
|
8
|
+
|
9
|
+
function listDirs(root) {
|
10
|
+
var files = fs.readdirSync(root);
|
11
|
+
var dirs = [];
|
12
|
+
|
13
|
+
for (var i=0, l=files.length; i<l; i++) {
|
14
|
+
var file = files[i];
|
15
|
+
if (file[0] !== '.') {
|
16
|
+
var stat = fs.statSync(path.join(root, file));
|
17
|
+
if (stat.isDirectory()) {
|
18
|
+
dirs.push(file);
|
19
|
+
}
|
20
|
+
}
|
21
|
+
}
|
22
|
+
|
23
|
+
return dirs;
|
24
|
+
}
|
25
|
+
|
26
|
+
|
27
|
+
function sendResponse(statusCode, statusMessage) {
|
28
|
+
res.writeHead(statusCode);
|
29
|
+
res.write('<h1>' + statusMessage + '</h1>');
|
30
|
+
res.end();
|
31
|
+
}
|
32
|
+
|
33
|
+
function send200(res) {
|
34
|
+
sendResponse(200, 'OK');
|
35
|
+
}
|
36
|
+
|
37
|
+
function send404(res) {
|
38
|
+
sendResponse(404, 'Not Found');
|
39
|
+
}
|
40
|
+
|
41
|
+
function pipeFileToResponse(res, file, type) {
|
42
|
+
if (type) {
|
43
|
+
res.writeHead(200, {
|
44
|
+
'Content-Type': type
|
45
|
+
});
|
46
|
+
}
|
47
|
+
fs.createReadStream(path.join(__dirname, file)).pipe(res);
|
48
|
+
}
|
49
|
+
|
50
|
+
|
51
|
+
dirs = listDirs(__dirname);
|
52
|
+
|
53
|
+
server = http.createServer(function (req, res) {
|
54
|
+
var url = req.url;
|
55
|
+
|
56
|
+
if (/axios\.min\.js$/.test(url)) {
|
57
|
+
pipeFileToResponse(res, '../dist/axios.min.js', 'text/javascript');
|
58
|
+
return;
|
59
|
+
}
|
60
|
+
if (/axios\.min\.map$/.test(url)) {
|
61
|
+
pipeFileToResponse(res, '../dist/axios.min.map', 'text/javascript');
|
62
|
+
return;
|
63
|
+
}
|
64
|
+
|
65
|
+
// Format request */ -> */index.html
|
66
|
+
if (/\/$/.test(url)) {
|
67
|
+
url += 'index.html';
|
68
|
+
}
|
69
|
+
|
70
|
+
// Format request /get -> /get/index.html
|
71
|
+
var parts = url.split('/');
|
72
|
+
if (dirs.indexOf(parts[parts.length - 1]) > -1) {
|
73
|
+
url += '/index.html';
|
74
|
+
}
|
75
|
+
|
76
|
+
// Process index.html request
|
77
|
+
if (/index\.html$/.test(url)) {
|
78
|
+
if (fs.existsSync(path.join(__dirname, url))) {
|
79
|
+
pipeFileToResponse(res, url, 'text/html');
|
80
|
+
} else {
|
81
|
+
send404(res);
|
82
|
+
}
|
83
|
+
}
|
84
|
+
|
85
|
+
// Process server request
|
86
|
+
else if (new RegExp('(' + dirs.join('|') + ')\/server').test(url)) {
|
87
|
+
if (fs.existsSync(path.join(__dirname, url + '.js'))) {
|
88
|
+
require(path.join(__dirname, url + '.js'))(req, res);
|
89
|
+
} else {
|
90
|
+
send404(res);
|
91
|
+
}
|
92
|
+
}
|
93
|
+
else {
|
94
|
+
send404(res);
|
95
|
+
}
|
96
|
+
});
|
97
|
+
|
98
|
+
server.listen(argv.p || 3000);
|
@@ -0,0 +1,44 @@
|
|
1
|
+
<!doctype html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>axios - transform response example</title>
|
5
|
+
<link rel="stylesheet" type="text/css" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"/>
|
6
|
+
</head>
|
7
|
+
<body class="container">
|
8
|
+
<h1>transformResponse</h1>
|
9
|
+
|
10
|
+
<div class="row">
|
11
|
+
<img id="useravatar" src="" class="col-md-1"/>
|
12
|
+
<div class="col-md-3">
|
13
|
+
<strong id="username"></strong><br/>
|
14
|
+
Created: <span id="created"></span><br/>
|
15
|
+
Updated: <span id="updated"></span>
|
16
|
+
</div>
|
17
|
+
</div>
|
18
|
+
|
19
|
+
<script src="/dist/axios.min.js"></script>
|
20
|
+
<script>
|
21
|
+
var ISO_8601 = /(\d{4}-\d{2}-\d{2})T(\d{2}:\d{2}:\d{2})Z/;
|
22
|
+
function formatDate(d) {
|
23
|
+
return (d.getMonth() + 1) + '/' + d.getDate() + '/' + d.getFullYear();
|
24
|
+
}
|
25
|
+
|
26
|
+
axios.get('https://api.github.com/users/mzabriskie', {
|
27
|
+
transformResponse: axios.defaults.transformResponse.concat(function (data, headers) {
|
28
|
+
Object.keys(data).forEach(function (k) {
|
29
|
+
if (ISO_8601.test(data[k])) {
|
30
|
+
data[k] = new Date(Date.parse(data[k]));
|
31
|
+
}
|
32
|
+
});
|
33
|
+
return data;
|
34
|
+
})
|
35
|
+
})
|
36
|
+
.then(function (res) {
|
37
|
+
document.getElementById('useravatar').src = res.data.avatar_url;
|
38
|
+
document.getElementById('username').innerHTML = res.data.name;
|
39
|
+
document.getElementById('created').innerHTML = formatDate(res.data.created_at);
|
40
|
+
document.getElementById('updated').innerHTML = formatDate(res.data.updated_at);
|
41
|
+
});
|
42
|
+
</script>
|
43
|
+
</body>
|
44
|
+
</html>
|
@@ -0,0 +1,43 @@
|
|
1
|
+
<!doctype html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>axios - file upload example</title>
|
5
|
+
<link rel="stylesheet" type="text/css" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"/>
|
6
|
+
</head>
|
7
|
+
<body class="container">
|
8
|
+
<h1>file upload</h1>
|
9
|
+
|
10
|
+
<form role="form" class="form" onsubmit="return false;">
|
11
|
+
<div class="form-group">
|
12
|
+
<label for="file">File</label>
|
13
|
+
<input id="file" type="file" class="form-control"/>
|
14
|
+
</div>
|
15
|
+
<button id="upload" type="button" class="btn btn-primary">Upload</button>
|
16
|
+
</form>
|
17
|
+
|
18
|
+
<div id="output" class="container"></div>
|
19
|
+
|
20
|
+
<script src="/axios.min.js"></script>
|
21
|
+
<script>
|
22
|
+
(function () {
|
23
|
+
var output = document.getElementById('output');
|
24
|
+
document.getElementById('upload').onclick = function () {
|
25
|
+
var data = new FormData();
|
26
|
+
data.append('foo', 'bar');
|
27
|
+
data.append('file', document.getElementById('file').files[0]);
|
28
|
+
|
29
|
+
axios.put('/upload/server', data)
|
30
|
+
.then(function (res) {
|
31
|
+
output.className = 'container';
|
32
|
+
output.innerHTML = res.data;
|
33
|
+
})
|
34
|
+
.catch(function (res) {
|
35
|
+
output.className = 'container text-danger';
|
36
|
+
output.innerHTML = res.data;
|
37
|
+
});
|
38
|
+
};
|
39
|
+
})();
|
40
|
+
</script>
|
41
|
+
</body>
|
42
|
+
</html>
|
43
|
+
|
package/lib/adapters/http.js
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
1
3
|
var defaults = require('./../defaults');
|
2
4
|
var utils = require('./../utils');
|
3
5
|
var buildUrl = require('./../helpers/buildUrl');
|
@@ -52,27 +54,28 @@ module.exports = function httpAdapter(resolve, reject, config) {
|
|
52
54
|
// Create the request
|
53
55
|
var transport = parsed.protocol === 'https:' ? https : http;
|
54
56
|
var req = transport.request(options, function (res) {
|
55
|
-
var
|
57
|
+
var responseBuffer = [];
|
56
58
|
res.on('data', function (chunk) {
|
57
|
-
|
59
|
+
responseBuffer.push(chunk);
|
58
60
|
});
|
59
61
|
|
60
62
|
res.on('end', function () {
|
61
63
|
var response = {
|
62
64
|
data: transformData(
|
63
|
-
|
65
|
+
Buffer.concat(responseBuffer).toString('utf8'),
|
64
66
|
res.headers,
|
65
67
|
config.transformResponse
|
66
68
|
),
|
67
69
|
status: res.statusCode,
|
70
|
+
statusText: res.statusMessage,
|
68
71
|
headers: res.headers,
|
69
72
|
config: config
|
70
73
|
};
|
71
74
|
|
72
75
|
// Resolve or reject the Promise based on the status
|
73
|
-
(res.statusCode >= 200 && res.statusCode < 300
|
74
|
-
|
75
|
-
|
76
|
+
(res.statusCode >= 200 && res.statusCode < 300 ?
|
77
|
+
resolve :
|
78
|
+
reject)(response);
|
76
79
|
});
|
77
80
|
});
|
78
81
|
|
@@ -83,4 +86,4 @@ module.exports = function httpAdapter(resolve, reject, config) {
|
|
83
86
|
|
84
87
|
// Send the request
|
85
88
|
req.end(data);
|
86
|
-
};
|
89
|
+
};
|
package/lib/adapters/xhr.js
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
/*global ActiveXObject:true*/
|
4
|
+
|
1
5
|
var defaults = require('./../defaults');
|
2
6
|
var utils = require('./../utils');
|
3
7
|
var buildUrl = require('./../helpers/buildUrl');
|
@@ -15,40 +19,42 @@ module.exports = function xhrAdapter(resolve, reject, config) {
|
|
15
19
|
);
|
16
20
|
|
17
21
|
// Merge headers
|
18
|
-
var
|
22
|
+
var requestHeaders = utils.merge(
|
19
23
|
defaults.headers.common,
|
20
24
|
defaults.headers[config.method] || {},
|
21
25
|
config.headers || {}
|
22
26
|
);
|
23
27
|
|
24
28
|
if (utils.isFormData(data)) {
|
25
|
-
delete
|
29
|
+
delete requestHeaders['Content-Type']; // Let the browser set it
|
26
30
|
}
|
27
31
|
|
28
32
|
// Create the request
|
29
|
-
var request = new(XMLHttpRequest || ActiveXObject)('Microsoft.XMLHTTP');
|
33
|
+
var request = new (XMLHttpRequest || ActiveXObject)('Microsoft.XMLHTTP');
|
30
34
|
request.open(config.method.toUpperCase(), buildUrl(config.url, config.params), true);
|
31
35
|
|
32
36
|
// Listen for ready state
|
33
37
|
request.onreadystatechange = function () {
|
34
38
|
if (request && request.readyState === 4) {
|
35
39
|
// Prepare the response
|
36
|
-
var
|
40
|
+
var responseHeaders = parseHeaders(request.getAllResponseHeaders());
|
41
|
+
var responseData = ['text', ''].indexOf(config.responseType || '') !== -1 ? request.responseText : request.response;
|
37
42
|
var response = {
|
38
43
|
data: transformData(
|
39
|
-
|
40
|
-
|
44
|
+
responseData,
|
45
|
+
responseHeaders,
|
41
46
|
config.transformResponse
|
42
47
|
),
|
43
48
|
status: request.status,
|
44
|
-
|
49
|
+
statusText: request.statusText,
|
50
|
+
headers: responseHeaders,
|
45
51
|
config: config
|
46
52
|
};
|
47
53
|
|
48
54
|
// Resolve or reject the Promise based on the status
|
49
|
-
(request.status >= 200 && request.status < 300
|
50
|
-
|
51
|
-
|
55
|
+
(request.status >= 200 && request.status < 300 ?
|
56
|
+
resolve :
|
57
|
+
reject)(response);
|
52
58
|
|
53
59
|
// Clean up request
|
54
60
|
request = null;
|
@@ -56,18 +62,18 @@ module.exports = function xhrAdapter(resolve, reject, config) {
|
|
56
62
|
};
|
57
63
|
|
58
64
|
// Add xsrf header
|
59
|
-
var xsrfValue = urlIsSameOrigin(config.url)
|
60
|
-
|
61
|
-
|
65
|
+
var xsrfValue = urlIsSameOrigin(config.url) ?
|
66
|
+
cookies.read(config.xsrfCookieName || defaults.xsrfCookieName) :
|
67
|
+
undefined;
|
62
68
|
if (xsrfValue) {
|
63
|
-
|
69
|
+
requestHeaders[config.xsrfHeaderName || defaults.xsrfHeaderName] = xsrfValue;
|
64
70
|
}
|
65
71
|
|
66
72
|
// Add headers to the request
|
67
|
-
utils.forEach(
|
73
|
+
utils.forEach(requestHeaders, function (val, key) {
|
68
74
|
// Remove Content-Type if data is undefined
|
69
75
|
if (!data && key.toLowerCase() === 'content-type') {
|
70
|
-
delete
|
76
|
+
delete requestHeaders[key];
|
71
77
|
}
|
72
78
|
// Otherwise add header to the request
|
73
79
|
else {
|
@@ -97,4 +103,4 @@ module.exports = function xhrAdapter(resolve, reject, config) {
|
|
97
103
|
|
98
104
|
// Send the request
|
99
105
|
request.send(data);
|
100
|
-
};
|
106
|
+
};
|
package/lib/axios.js
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
1
3
|
var defaults = require('./defaults');
|
2
4
|
var utils = require('./utils');
|
3
5
|
var deprecatedMethod = require('./helpers/deprecatedMethod');
|
@@ -5,7 +7,14 @@ var dispatchRequest = require('./core/dispatchRequest');
|
|
5
7
|
var InterceptorManager = require('./core/InterceptorManager');
|
6
8
|
|
7
9
|
// Polyfill ES6 Promise if needed
|
8
|
-
|
10
|
+
(function () {
|
11
|
+
// webpack is being used to set es6-promise to the native Promise
|
12
|
+
// for the standalone build. It's necessary to make sure polyfill exists.
|
13
|
+
var P = require('es6-promise');
|
14
|
+
if (P && typeof P.polyfill === 'function') {
|
15
|
+
P.polyfill();
|
16
|
+
}
|
17
|
+
})();
|
9
18
|
|
10
19
|
var axios = module.exports = function axios(config) {
|
11
20
|
config = utils.merge({
|
@@ -73,29 +82,30 @@ axios.interceptors = {
|
|
73
82
|
};
|
74
83
|
|
75
84
|
// Provide aliases for supported request methods
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
function
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
function
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
});
|
100
|
-
}
|
85
|
+
(function () {
|
86
|
+
function createShortMethods() {
|
87
|
+
utils.forEach(arguments, function (method) {
|
88
|
+
axios[method] = function (url, config) {
|
89
|
+
return axios(utils.merge(config || {}, {
|
90
|
+
method: method,
|
91
|
+
url: url
|
92
|
+
}));
|
93
|
+
};
|
94
|
+
});
|
95
|
+
}
|
96
|
+
|
97
|
+
function createShortMethodsWithData() {
|
98
|
+
utils.forEach(arguments, function (method) {
|
99
|
+
axios[method] = function (url, data, config) {
|
100
|
+
return axios(utils.merge(config || {}, {
|
101
|
+
method: method,
|
102
|
+
url: url,
|
103
|
+
data: data
|
104
|
+
}));
|
105
|
+
};
|
106
|
+
});
|
107
|
+
}
|
101
108
|
|
109
|
+
createShortMethods('delete', 'get', 'head');
|
110
|
+
createShortMethodsWithData('post', 'put', 'patch');
|
111
|
+
})();
|
@@ -4,7 +4,7 @@ var utils = require('./../utils');
|
|
4
4
|
|
5
5
|
function InterceptorManager() {
|
6
6
|
this.handlers = [];
|
7
|
-
}
|
7
|
+
}
|
8
8
|
|
9
9
|
/**
|
10
10
|
* Add a new interceptor to the stack
|
@@ -45,9 +45,8 @@ InterceptorManager.prototype.forEach = function (fn) {
|
|
45
45
|
utils.forEach(this.handlers, function (h) {
|
46
46
|
if (h !== null) {
|
47
47
|
fn(h);
|
48
|
-
}
|
48
|
+
}
|
49
49
|
});
|
50
50
|
};
|
51
51
|
|
52
52
|
module.exports = InterceptorManager;
|
53
|
-
|
package/lib/defaults.js
CHANGED
@@ -2,8 +2,6 @@
|
|
2
2
|
|
3
3
|
var utils = require('./utils');
|
4
4
|
|
5
|
-
var JSON_START = /^\s*(\[|\{[^\{])/;
|
6
|
-
var JSON_END = /[\}\]]\s*$/;
|
7
5
|
var PROTECTION_PREFIX = /^\)\]\}',?\n/;
|
8
6
|
var DEFAULT_CONTENT_TYPE = {
|
9
7
|
'Content-Type': 'application/x-www-form-urlencoded'
|
@@ -11,6 +9,9 @@ var DEFAULT_CONTENT_TYPE = {
|
|
11
9
|
|
12
10
|
module.exports = {
|
13
11
|
transformRequest: [function (data, headers) {
|
12
|
+
if(utils.isFormData(data)) {
|
13
|
+
return data;
|
14
|
+
}
|
14
15
|
if (utils.isArrayBuffer(data)) {
|
15
16
|
return data;
|
16
17
|
}
|
@@ -30,9 +31,9 @@ module.exports = {
|
|
30
31
|
transformResponse: [function (data) {
|
31
32
|
if (typeof data === 'string') {
|
32
33
|
data = data.replace(PROTECTION_PREFIX, '');
|
33
|
-
|
34
|
+
try {
|
34
35
|
data = JSON.parse(data);
|
35
|
-
}
|
36
|
+
} catch (e) {}
|
36
37
|
}
|
37
38
|
return data;
|
38
39
|
}],
|
@@ -48,4 +49,4 @@ module.exports = {
|
|
48
49
|
|
49
50
|
xsrfCookieName: 'XSRF-TOKEN',
|
50
51
|
xsrfHeaderName: 'X-XSRF-TOKEN'
|
51
|
-
};
|
52
|
+
};
|
package/lib/helpers/cookies.js
CHANGED
@@ -18,7 +18,7 @@ var utils = require('./../utils');
|
|
18
18
|
module.exports = function parseHeaders(headers) {
|
19
19
|
var parsed = {}, key, val, i;
|
20
20
|
|
21
|
-
if (!headers) return parsed;
|
21
|
+
if (!headers) { return parsed; }
|
22
22
|
|
23
23
|
utils.forEach(headers.split('\n'), function(line) {
|
24
24
|
i = line.indexOf(':');
|
@@ -31,4 +31,4 @@ module.exports = function parseHeaders(headers) {
|
|
31
31
|
});
|
32
32
|
|
33
33
|
return parsed;
|
34
|
-
};
|
34
|
+
};
|
package/lib/helpers/spread.js
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
'use strict';
|
2
2
|
|
3
|
-
var msie = /(msie|trident)/i.test(navigator.userAgent);
|
4
3
|
var utils = require('./../utils');
|
4
|
+
var msie = /(msie|trident)/i.test(navigator.userAgent);
|
5
5
|
var urlParsingNode = document.createElement('a');
|
6
|
-
var originUrl
|
6
|
+
var originUrl;
|
7
7
|
|
8
8
|
/**
|
9
9
|
* Parse a URL to discover it's components
|
@@ -31,12 +31,14 @@ function urlResolve(url) {
|
|
31
31
|
hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',
|
32
32
|
hostname: urlParsingNode.hostname,
|
33
33
|
port: urlParsingNode.port,
|
34
|
-
pathname: (urlParsingNode.pathname.charAt(0) === '/')
|
35
|
-
|
36
|
-
|
34
|
+
pathname: (urlParsingNode.pathname.charAt(0) === '/') ?
|
35
|
+
urlParsingNode.pathname :
|
36
|
+
'/' + urlParsingNode.pathname
|
37
37
|
};
|
38
38
|
}
|
39
39
|
|
40
|
+
originUrl = urlResolve(window.location.href);
|
41
|
+
|
40
42
|
/**
|
41
43
|
* Determine if a URL shares the same origin as the current location
|
42
44
|
*
|
@@ -47,4 +49,4 @@ module.exports = function urlIsSameOrigin(requestUrl) {
|
|
47
49
|
var parsed = (utils.isString(requestUrl)) ? urlResolve(requestUrl) : requestUrl;
|
48
50
|
return (parsed.protocol === originUrl.protocol &&
|
49
51
|
parsed.host === originUrl.host);
|
50
|
-
};
|
52
|
+
};
|
package/lib/utils.js
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
/*global toString:true*/
|
4
|
+
|
1
5
|
// utils is a library of generic helper functions non-specific to axios
|
2
6
|
|
3
7
|
var toString = Object.prototype.toString;
|
@@ -145,16 +149,16 @@ function forEach(obj, fn) {
|
|
145
149
|
}
|
146
150
|
|
147
151
|
// Check if obj is array-like
|
148
|
-
var
|
152
|
+
var isArrayLike = isArray(obj) || (typeof obj === 'object' && !isNaN(obj.length));
|
149
153
|
|
150
154
|
// Force an array if not already something iterable
|
151
|
-
if (typeof obj !== 'object' && !
|
155
|
+
if (typeof obj !== 'object' && !isArrayLike) {
|
152
156
|
obj = [obj];
|
153
157
|
}
|
154
158
|
|
155
159
|
// Iterate over array values
|
156
|
-
if (
|
157
|
-
for (var i=0, l=obj.length; i<l; i++) {
|
160
|
+
if (isArrayLike) {
|
161
|
+
for (var i = 0, l = obj.length; i < l; i++) {
|
158
162
|
fn.call(null, obj[i], i, obj);
|
159
163
|
}
|
160
164
|
}
|
@@ -185,7 +189,7 @@ function forEach(obj, fn) {
|
|
185
189
|
* @param {Object} obj1 Object to merge
|
186
190
|
* @returns {Object} Result of all merge properties
|
187
191
|
*/
|
188
|
-
function merge(obj1
|
192
|
+
function merge(/*obj1, obj2, obj3, ...*/) {
|
189
193
|
var result = {};
|
190
194
|
forEach(arguments, function (obj) {
|
191
195
|
forEach(obj, function (val, key) {
|
@@ -210,4 +214,4 @@ module.exports = {
|
|
210
214
|
forEach: forEach,
|
211
215
|
merge: merge,
|
212
216
|
trim: trim
|
213
|
-
};
|
217
|
+
};
|
package/package.json
CHANGED
@@ -1,11 +1,12 @@
|
|
1
1
|
{
|
2
2
|
"name": "axios",
|
3
|
-
"version": "0.5.
|
3
|
+
"version": "0.5.4",
|
4
4
|
"description": "Promise based HTTP client for the browser and node.js",
|
5
5
|
"main": "index.js",
|
6
6
|
"scripts": {
|
7
7
|
"test": "grunt test",
|
8
|
-
"start": "node ./sandbox/server.js"
|
8
|
+
"start": "node ./sandbox/server.js",
|
9
|
+
"coveralls": "cat coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js"
|
9
10
|
},
|
10
11
|
"repository": {
|
11
12
|
"type": "git",
|
@@ -28,24 +29,31 @@
|
|
28
29
|
"es6-promise": "^2.0.1"
|
29
30
|
},
|
30
31
|
"devDependencies": {
|
32
|
+
"coveralls": "^2.11.2",
|
31
33
|
"grunt": "^0.4.5",
|
32
|
-
"grunt-banner": "^0.
|
34
|
+
"grunt-banner": "^0.3.1",
|
33
35
|
"grunt-contrib-clean": "^0.6.0",
|
34
36
|
"grunt-contrib-nodeunit": "^0.4.1",
|
35
37
|
"grunt-contrib-watch": "^0.6.1",
|
36
|
-
"grunt-
|
37
|
-
"grunt-
|
38
|
-
"grunt-
|
38
|
+
"grunt-eslint": "^9.0.0",
|
39
|
+
"grunt-karma": "^0.10.1",
|
40
|
+
"grunt-ts": "^3.0.0",
|
41
|
+
"grunt-update-json": "^0.2.1",
|
39
42
|
"grunt-webpack": "^1.0.8",
|
40
|
-
"karma": "^0.12.
|
41
|
-
"karma-
|
42
|
-
"karma-jasmine
|
43
|
+
"karma": "^0.12.31",
|
44
|
+
"karma-coverage": "^0.2.7",
|
45
|
+
"karma-jasmine": "^0.3.5",
|
46
|
+
"karma-jasmine-ajax": "^0.1.12",
|
43
47
|
"karma-phantomjs-launcher": "^0.1.4",
|
44
|
-
"
|
45
|
-
"
|
46
|
-
"webpack
|
48
|
+
"karma-webpack": "^1.5.0",
|
49
|
+
"load-grunt-tasks": "^3.1.0",
|
50
|
+
"webpack": "^1.7.2",
|
51
|
+
"webpack-dev-server": "^1.7.0"
|
47
52
|
},
|
48
53
|
"browser": {
|
49
54
|
"./lib/adapters/http.js": "./lib/adapters/xhr.js"
|
55
|
+
},
|
56
|
+
"typescript": {
|
57
|
+
"definition": "./axios.d.ts"
|
50
58
|
}
|
51
59
|
}
|