2
0
mirror of https://github.com/tenrok/axios.git synced 2026-06-20 20:00:40 +03:00

Releasing 0.9.0

This commit is contained in:
Matt Zabriskie
2016-01-18 11:18:39 -07:00
parent 6f13a7591b
commit 7ec97dd26b
7 changed files with 99 additions and 80 deletions
+8
View File
@@ -1,5 +1,13 @@
# Changelog # Changelog
### 0.9.0 (Jan 18, 2016)
- Adding support for custom adapters
- Fixing Content-Type header being removed when data is false ([#195](https://github.com/mzabriskie/axios/pull/195))
- Improving XDomainRequest implementation ([#185](https://github.com/mzabriskie/axios/pull/185))
- Improving config merging and order of precedence ([#183](https://github.com/mzabriskie/axios/pull/183))
- Fixing XDomainRequest support for only <= IE9 ([#182](https://github.com/mzabriskie/axios/pull/182))
### 0.8.1 (Dec 14, 2015) ### 0.8.1 (Dec 14, 2015)
- Adding support for passing XSRF token for cross domain requests when using `withCredentials` ([#168](https://github.com/mzabriskie/axios/pull/168)) - Adding support for passing XSRF token for cross domain requests when using `withCredentials` ([#168](https://github.com/mzabriskie/axios/pull/168))
+1 -1
View File
@@ -1,7 +1,7 @@
{ {
"name": "axios", "name": "axios",
"main": "./dist/axios.js", "main": "./dist/axios.js",
"version": "0.8.1", "version": "0.9.0",
"homepage": "https://github.com/mzabriskie/axios", "homepage": "https://github.com/mzabriskie/axios",
"authors": [ "authors": [
"Matt Zabriskie" "Matt Zabriskie"
+85 -74
View File
@@ -1,4 +1,4 @@
/* axios v0.8.0 | (c) 2015 by Matt Zabriskie */ /* axios v0.9.0 | (c) 2016 by Matt Zabriskie */
(function webpackUniversalModuleDefinition(root, factory) { (function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object') if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory(); module.exports = factory();
@@ -70,15 +70,10 @@ return /******/ (function(modules) { // webpackBootstrap
var isAbsoluteURL = __webpack_require__(13); var isAbsoluteURL = __webpack_require__(13);
var combineURLs = __webpack_require__(14); var combineURLs = __webpack_require__(14);
var bind = __webpack_require__(15); var bind = __webpack_require__(15);
var transformData = __webpack_require__(8);
function Axios(defaultConfig) { function Axios(defaultConfig) {
this.defaultConfig = utils.merge({ this.defaults = utils.merge({}, defaultConfig);
headers: {},
timeout: defaults.timeout,
transformRequest: defaults.transformRequest,
transformResponse: defaults.transformResponse
}, defaultConfig);
this.interceptors = { this.interceptors = {
request: new InterceptorManager(), request: new InterceptorManager(),
response: new InterceptorManager() response: new InterceptorManager()
@@ -94,14 +89,36 @@ return /******/ (function(modules) { // webpackBootstrap
}, arguments[1]); }, arguments[1]);
} }
config = utils.merge(this.defaultConfig, { method: 'get' }, config); config = utils.merge(defaults, this.defaults, { method: 'get' }, config);
// Support baseURL config
if (config.baseURL && !isAbsoluteURL(config.url)) { if (config.baseURL && !isAbsoluteURL(config.url)) {
config.url = combineURLs(config.baseURL, config.url); config.url = combineURLs(config.baseURL, config.url);
} }
// Don't allow overriding defaults.withCredentials // Don't allow overriding defaults.withCredentials
config.withCredentials = config.withCredentials || defaults.withCredentials; config.withCredentials = config.withCredentials || this.defaults.withCredentials;
// Transform request data
config.data = transformData(
config.data,
config.headers,
config.transformRequest
);
// Flatten headers
config.headers = utils.merge(
config.headers.common || {},
config.headers[config.method] || {},
config.headers || {}
);
utils.forEach(
['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],
function cleanHeaderConfig(method) {
delete config.headers[method];
}
);
// Hook up interceptors middleware // Hook up interceptors middleware
var chain = [dispatchRequest, undefined]; var chain = [dispatchRequest, undefined];
@@ -122,8 +139,7 @@ return /******/ (function(modules) { // webpackBootstrap
return promise; return promise;
}; };
var defaultInstance = new Axios(); var defaultInstance = new Axios(defaults);
var axios = module.exports = bind(Axios.prototype.request, defaultInstance); var axios = module.exports = bind(Axios.prototype.request, defaultInstance);
axios.create = function create(defaultConfig) { axios.create = function create(defaultConfig) {
@@ -131,7 +147,7 @@ return /******/ (function(modules) { // webpackBootstrap
}; };
// Expose defaults // Expose defaults
axios.defaults = defaults; axios.defaults = defaultInstance.defaults;
// Expose all/spread // Expose all/spread
axios.all = function all(promises) { axios.all = function all(promises) {
@@ -454,7 +470,11 @@ return /******/ (function(modules) { // webpackBootstrap
function merge(/* obj1, obj2, obj3, ... */) { function merge(/* obj1, obj2, obj3, ... */) {
var result = {}; var result = {};
function assignValue(val, key) { function assignValue(val, key) {
result[key] = val; if (typeof result[key] === 'object' && typeof val === 'object') {
result[key] = merge(result[key], val);
} else {
result[key] = val;
}
} }
for (var i = 0, l = arguments.length; i < l; i++) { for (var i = 0, l = arguments.length; i < l; i++) {
@@ -498,12 +518,21 @@ return /******/ (function(modules) { // webpackBootstrap
module.exports = function dispatchRequest(config) { module.exports = function dispatchRequest(config) {
return new Promise(function executor(resolve, reject) { return new Promise(function executor(resolve, reject) {
try { try {
if ((typeof XMLHttpRequest !== 'undefined') || (typeof ActiveXObject !== 'undefined')) { var adapter;
if (typeof config.adapter === 'function') {
// For custom adapter support
adapter = config.adapter;
} else if (typeof XMLHttpRequest !== 'undefined') {
// For browsers use XHR adapter // For browsers use XHR adapter
__webpack_require__(5)(resolve, reject, config); adapter = __webpack_require__(5);
} else if (typeof process !== 'undefined') { } else if (typeof process !== 'undefined') {
// For node use HTTP adapter // For node use HTTP adapter
__webpack_require__(5)(resolve, reject, config); adapter = __webpack_require__(5);
}
if (typeof adapter === 'function') {
adapter(resolve, reject, config);
} }
} catch (e) { } catch (e) {
reject(e); reject(e);
@@ -519,9 +548,6 @@ return /******/ (function(modules) { // webpackBootstrap
'use strict'; 'use strict';
/*global ActiveXObject:true*/
var defaults = __webpack_require__(2);
var utils = __webpack_require__(3); var utils = __webpack_require__(3);
var buildURL = __webpack_require__(6); var buildURL = __webpack_require__(6);
var parseHeaders = __webpack_require__(7); var parseHeaders = __webpack_require__(7);
@@ -530,33 +556,19 @@ return /******/ (function(modules) { // webpackBootstrap
var btoa = window.btoa || __webpack_require__(10); var btoa = window.btoa || __webpack_require__(10);
module.exports = function xhrAdapter(resolve, reject, config) { module.exports = function xhrAdapter(resolve, reject, config) {
// Transform request data var requestData = config.data;
var data = transformData( var requestHeaders = config.headers;
config.data,
config.headers,
config.transformRequest
);
// Merge headers if (utils.isFormData(requestData)) {
var requestHeaders = utils.merge(
defaults.headers.common,
defaults.headers[config.method] || {},
config.headers || {}
);
if (utils.isFormData(data)) {
delete requestHeaders['Content-Type']; // Let the browser set it delete requestHeaders['Content-Type']; // Let the browser set it
} }
var Adapter = (XMLHttpRequest || ActiveXObject); var request = new XMLHttpRequest();
var loadEvent = 'onreadystatechange';
var xDomain = false;
// For IE 8/9 CORS support // For IE 8/9 CORS support
if (!isURLSameOrigin(config.url) && window.XDomainRequest) { // Only supports POST and GET calls and doesn't returns the response headers.
Adapter = window.XDomainRequest; if (window.XDomainRequest && !('withCredentials' in request) && !isURLSameOrigin(config.url)) {
loadEvent = 'onload'; request = new window.XDomainRequest();
xDomain = true;
} }
// HTTP basic authentication // HTTP basic authentication
@@ -566,38 +578,37 @@ return /******/ (function(modules) { // webpackBootstrap
requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password); requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);
} }
// Create the request
var request = new Adapter('Microsoft.XMLHTTP');
request.open(config.method.toUpperCase(), buildURL(config.url, config.params, config.paramsSerializer), true); request.open(config.method.toUpperCase(), buildURL(config.url, config.params, config.paramsSerializer), true);
// Set the request timeout in MS // Set the request timeout in MS
request.timeout = config.timeout; request.timeout = config.timeout;
// Listen for ready state // Listen for ready state
request[loadEvent] = function handleReadyState() { request.onload = function handleLoad() {
if (request && (request.readyState === 4 || xDomain)) { if (!request) {
// Prepare the response return;
var responseHeaders = xDomain ? null : parseHeaders(request.getAllResponseHeaders());
var responseData = ['text', ''].indexOf(config.responseType || '') !== -1 ? request.responseText : request.response;
var response = {
data: transformData(
responseData,
responseHeaders,
config.transformResponse
),
status: request.status,
statusText: request.statusText,
headers: responseHeaders,
config: config
};
// Resolve or reject the Promise based on the status
((request.status >= 200 && request.status < 300) || (xDomain && request.responseText) ?
resolve :
reject)(response);
// Clean up request
request = null;
} }
// Prepare the response
var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;
var responseData = ['text', ''].indexOf(config.responseType || '') !== -1 ? request.responseText : request.response;
var response = {
data: transformData(
responseData,
responseHeaders,
config.transformResponse
),
status: request.status,
statusText: request.statusText,
headers: responseHeaders,
config: config
};
// Resolve or reject the Promise based on the status
((request.status >= 200 && request.status < 300) || (!('status' in request) && request.responseText) ?
resolve :
reject)(response);
// Clean up request
request = null;
}; };
// Add xsrf header // Add xsrf header
@@ -607,19 +618,19 @@ return /******/ (function(modules) { // webpackBootstrap
var cookies = __webpack_require__(11); var cookies = __webpack_require__(11);
// Add xsrf header // Add xsrf header
var xsrfValue = config.withCredentials || isURLSameOrigin(config.url) ? var xsrfValue = config.withCredentials || isURLSameOrigin(config.url) ?
cookies.read(config.xsrfCookieName || defaults.xsrfCookieName) : cookies.read(config.xsrfCookieName) :
undefined; undefined;
if (xsrfValue) { if (xsrfValue) {
requestHeaders[config.xsrfHeaderName || defaults.xsrfHeaderName] = xsrfValue; requestHeaders[config.xsrfHeaderName] = xsrfValue;
} }
} }
// Add headers to the request // Add headers to the request
if (!xDomain) { if ('setRequestHeader' in request) {
utils.forEach(requestHeaders, function setRequestHeader(val, key) { utils.forEach(requestHeaders, function setRequestHeader(val, key) {
if (!data && key.toLowerCase() === 'content-type') { if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {
// Remove Content-Type if data is undefined // Remove Content-Type if data is undefined
delete requestHeaders[key]; delete requestHeaders[key];
} else { } else {
@@ -645,12 +656,12 @@ return /******/ (function(modules) { // webpackBootstrap
} }
} }
if (utils.isArrayBuffer(data)) { if (utils.isArrayBuffer(requestData)) {
data = new DataView(data); requestData = new DataView(requestData);
} }
// Send the request // Send the request
request.send(data); request.send(requestData);
}; };
+1 -1
View File
File diff suppressed because one or more lines are too long
+2 -2
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "axios", "name": "axios",
"version": "0.8.1", "version": "0.9.0",
"description": "Promise based HTTP client for the browser and node.js", "description": "Promise based HTTP client for the browser and node.js",
"main": "index.js", "main": "index.js",
"scripts": { "scripts": {