Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Revert "Update Webpack + deps, remove now unnecessary polyfills" #2479

Merged
merged 3 commits into from Oct 25, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 1 addition & 0 deletions bower.json
Expand Up @@ -21,6 +21,7 @@
"license": "MIT",
"ignore": [
"**/.*",
"*.iml",
"examples",
"lib",
"node_modules",
Expand Down
2 changes: 1 addition & 1 deletion lib/core/enhanceError.js
Expand Up @@ -20,7 +20,7 @@ module.exports = function enhanceError(error, config, code, request, response) {
error.response = response;
error.isAxiosError = true;

error.toJSON = function toJSON() {
error.toJSON = function() {
return {
// Standard
message: this.message,
Expand Down
2 changes: 1 addition & 1 deletion lib/helpers/buildURL.js
Expand Up @@ -39,7 +39,7 @@ module.exports = function buildURL(url, params, paramsSerializer) {
return;
}

if (Array.isArray(val)) {
if (utils.isArray(val)) {
key = key + '[]';
} else {
val = [val];
Expand Down
4 changes: 2 additions & 2 deletions lib/helpers/parseHeaders.js
Expand Up @@ -34,8 +34,8 @@ module.exports = function parseHeaders(headers) {

utils.forEach(headers.split('\n'), function parser(line) {
i = line.indexOf(':');
key = line.substr(0, i).trim().toLowerCase();
val = line.substr(i + 1).trim();
key = utils.trim(line.substr(0, i)).toLowerCase();
val = utils.trim(line.substr(i + 1));

if (key) {
if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {
Expand Down
40 changes: 32 additions & 8 deletions lib/utils.js
Expand Up @@ -3,9 +3,21 @@
var bind = require('./helpers/bind');
var isBuffer = require('is-buffer');

/*global toString:true*/

// utils is a library of generic helper functions non-specific to axios

var _toString = Object.prototype.toString;
var toString = Object.prototype.toString;

/**
* Determine if a value is an Array
*
* @param {Object} val The value to test
* @returns {boolean} True if value is an Array, otherwise false
*/
function isArray(val) {
return toString.call(val) === '[object Array]';
}

/**
* Determine if a value is an ArrayBuffer
Expand All @@ -14,7 +26,7 @@ var _toString = Object.prototype.toString;
* @returns {boolean} True if value is an ArrayBuffer, otherwise false
*/
function isArrayBuffer(val) {
return _toString.call(val) === '[object ArrayBuffer]';
return toString.call(val) === '[object ArrayBuffer]';
}

/**
Expand Down Expand Up @@ -90,7 +102,7 @@ function isObject(val) {
* @returns {boolean} True if value is a Date, otherwise false
*/
function isDate(val) {
return _toString.call(val) === '[object Date]';
return toString.call(val) === '[object Date]';
}

/**
Expand All @@ -100,7 +112,7 @@ function isDate(val) {
* @returns {boolean} True if value is a File, otherwise false
*/
function isFile(val) {
return _toString.call(val) === '[object File]';
return toString.call(val) === '[object File]';
}

/**
Expand All @@ -110,7 +122,7 @@ function isFile(val) {
* @returns {boolean} True if value is a Blob, otherwise false
*/
function isBlob(val) {
return _toString.call(val) === '[object Blob]';
return toString.call(val) === '[object Blob]';
}

/**
Expand All @@ -120,7 +132,7 @@ function isBlob(val) {
* @returns {boolean} True if value is a Function, otherwise false
*/
function isFunction(val) {
return _toString.call(val) === '[object Function]';
return toString.call(val) === '[object Function]';
}

/**
Expand All @@ -143,6 +155,16 @@ function isURLSearchParams(val) {
return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;
}

/**
* Trim excess whitespace off the beginning and end of a string
*
* @param {String} str The String to trim
* @returns {String} The String freed of excess whitespace
*/
function trim(str) {
return str.replace(/^\s*/, '').replace(/\s*$/, '');
}

/**
* Determine if we're running in a standard browser environment
*
Expand Down Expand Up @@ -194,7 +216,7 @@ function forEach(obj, fn) {
obj = [obj];
}

if (Array.isArray(obj)) {
if (isArray(obj)) {
// Iterate over array values
for (var i = 0, l = obj.length; i < l; i++) {
fn.call(null, obj[i], i, obj);
Expand Down Expand Up @@ -288,6 +310,7 @@ function extend(a, b, thisArg) {
}

module.exports = {
isArray: isArray,
isArrayBuffer: isArrayBuffer,
isBuffer: isBuffer,
isFormData: isFormData,
Expand All @@ -306,5 +329,6 @@ module.exports = {
forEach: forEach,
merge: merge,
deepMerge: deepMerge,
extend: extend
extend: extend,
trim: trim
};
32 changes: 17 additions & 15 deletions package.json
Expand Up @@ -34,37 +34,39 @@
"devDependencies": {
"bundlesize": "^0.17.0",
"coveralls": "^3.0.0",
"es6-promise": "^4.2.4",
"grunt": "^1.0.2",
"grunt-banner": "^0.6.0",
"grunt-cli": "^1.2.0",
"grunt-contrib-clean": "^2.0.0",
"grunt-contrib-clean": "^1.1.0",
"grunt-contrib-watch": "^1.0.0",
"grunt-eslint": "^22.0.0",
"grunt-karma": "^3.0.2",
"grunt-eslint": "^20.1.0",
"grunt-karma": "^2.0.0",
"grunt-mocha-test": "^0.13.3",
"grunt-ts": "^6.0.0-beta.19",
"grunt-webpack": "^3.1.3",
"istanbul-instrumenter-loader": "^3.0.1",
"grunt-webpack": "^1.0.18",
"istanbul-instrumenter-loader": "^1.0.0",
"jasmine-core": "^2.4.1",
"karma": "^4.3.0",
"karma-chrome-launcher": "^3.1.0",
"karma-coverage": "^2.0.1",
"karma": "^1.3.0",
"karma-chrome-launcher": "^2.2.0",
"karma-coverage": "^1.1.1",
"karma-firefox-launcher": "^1.1.0",
"karma-jasmine": "^2.0.1",
"karma-jasmine": "^1.1.1",
"karma-jasmine-ajax": "^0.1.13",
"karma-opera-launcher": "^1.0.0",
"karma-safari-launcher": "^1.0.0",
"karma-sauce-launcher": "^2.0.2",
"karma-sauce-launcher": "^1.2.0",
"karma-sinon": "^1.0.5",
"karma-sourcemap-loader": "^0.3.7",
"karma-webpack": "^4.0.2",
"load-grunt-tasks": "^5.1.0",
"karma-webpack": "^1.7.0",
"load-grunt-tasks": "^3.5.2",
"minimist": "^1.2.0",
"mocha": "^6.2.0",
"sinon": "^7.4.2",
"mocha": "^5.2.0",
"sinon": "^4.5.0",
"typescript": "^2.8.1",
"url-search-params": "^0.10.0",
"webpack": "^4.40.2"
"webpack": "^1.13.1",
"webpack-dev-server": "^1.14.1"
},
"browser": {
"./lib/adapters/http.js": "./lib/adapters/xhr.js"
Expand Down
3 changes: 2 additions & 1 deletion test/manual/basic.html
Expand Up @@ -7,6 +7,7 @@

An alert should be shown with the <code>{"name":"axios"}</code>

<script src="promise.js"></script>
<script src="../../dist/axios.js"></script>
<script>
axios.get('./fixture.json').then(function(response) {
Expand All @@ -17,4 +18,4 @@
</script>

</body>
</html>
</html>
3 changes: 2 additions & 1 deletion test/manual/cors.html
Expand Up @@ -7,6 +7,7 @@

An alert should be shown with <code>{"status":"ok"}</code>

<script src="promise.js"></script>
<script src="../../dist/axios.js"></script>
<script>
axios.get('http://cors-test.appspot.com/test').then(function(response) {
Expand All @@ -16,4 +17,4 @@
</script>

</body>
</html>
</html>
9 changes: 9 additions & 0 deletions test/manual/promise.js

Large diffs are not rendered by default.

3 changes: 3 additions & 0 deletions test/specs/__helpers.js
@@ -1,3 +1,6 @@
// Polyfill ES6 Promise
require('es6-promise').polyfill();

// Polyfill URLSearchParams
URLSearchParams = require('url-search-params');

Expand Down
5 changes: 5 additions & 0 deletions test/specs/utils/isX.spec.js
Expand Up @@ -2,6 +2,11 @@ var utils = require('../../../lib/utils');
var Stream = require('stream');

describe('utils::isX', function () {
it('should validate Array', function () {
expect(utils.isArray([])).toEqual(true);
expect(utils.isArray({length: 5})).toEqual(false);
});

it('should validate ArrayBuffer', function () {
expect(utils.isArrayBuffer(new ArrayBuffer(2))).toEqual(true);
expect(utils.isArrayBuffer({})).toEqual(false);
Expand Down
12 changes: 12 additions & 0 deletions test/specs/utils/trim.spec.js
@@ -0,0 +1,12 @@
var trim = require('../../../lib/utils').trim;

describe('utils::trim', function () {
it('should trim spaces', function () {
expect(trim(' foo ')).toEqual('foo');
});

it('should trim tabs', function () {
expect(trim('\tfoo\t')).toEqual('foo');
});
});

44 changes: 26 additions & 18 deletions webpack.config.js
@@ -1,13 +1,12 @@
const webpack = require('webpack');
const TerserPlugin = require('terser-webpack-plugin');
const config = {};
var webpack = require('webpack');
var config = {};

function generateConfig(name) {
return {
mode: 'production',
var uglify = name.indexOf('min') > -1;
var config = {
entry: './index.js',
output: {
path: `${__dirname}/dist`,
path: 'dist/',
filename: name + '.js',
sourceMapFilename: name + '.map',
library: 'axios',
Expand All @@ -16,21 +15,30 @@ function generateConfig(name) {
node: {
process: false
},
devtool: 'source-map',
optimization: {
minimize: name.includes('min'),
minimizer: [
// config options documented at https://github.com/webpack-contrib/terser-webpack-plugin#terseroptions
new TerserPlugin({
sourceMap: true,
}),
],
},
devtool: 'source-map'
};

config.plugins = [
new webpack.DefinePlugin({
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV)
})
];

if (uglify) {
config.plugins.push(
new webpack.optimize.UglifyJsPlugin({
compressor: {
warnings: false
}
})
);
}

return config;
}

['axios', 'axios.min'].forEach(outputScript => {
config[outputScript] = generateConfig(outputScript);
['axios', 'axios.min'].forEach(function (key) {
config[key] = generateConfig(key);
});

module.exports = config;