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

Update Webpack + deps, remove now unnecessary polyfills #2410

Merged
merged 4 commits into from Oct 21, 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: 0 additions & 1 deletion bower.json
Expand Up @@ -21,7 +21,6 @@
"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() {
error.toJSON = function toJSON() {
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

resolved lint warning about anonymous functions being banned by adding a congruent name

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 (utils.isArray(val)) {
if (Array.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 = utils.trim(line.substr(0, i)).toLowerCase();
val = utils.trim(line.substr(i + 1));
key = line.substr(0, i).trim().toLowerCase();
val = line.substr(i + 1).trim();

if (key) {
if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {
Expand Down
40 changes: 8 additions & 32 deletions lib/utils.js
Expand Up @@ -3,21 +3,9 @@
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;

/**
* 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]';
}
var _toString = Object.prototype.toString;
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changed this to start with _, to avoid having to place an eslint directive.

It also functions as a callout to potentially hacky / legacy code


/**
* Determine if a value is an ArrayBuffer
Expand All @@ -26,7 +14,7 @@ function isArray(val) {
* @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 @@ -102,7 +90,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 @@ -112,7 +100,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 @@ -122,7 +110,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 @@ -132,7 +120,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 @@ -155,16 +143,6 @@ 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 @@ -216,7 +194,7 @@ function forEach(obj, fn) {
obj = [obj];
}

if (isArray(obj)) {
if (Array.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 @@ -310,7 +288,6 @@ function extend(a, b, thisArg) {
}

module.exports = {
isArray: isArray,
isArrayBuffer: isArrayBuffer,
isBuffer: isBuffer,
isFormData: isFormData,
Expand All @@ -329,6 +306,5 @@ module.exports = {
forEach: forEach,
merge: merge,
deepMerge: deepMerge,
extend: extend,
trim: trim
extend: extend
};
32 changes: 15 additions & 17 deletions package.json
Expand Up @@ -34,39 +34,37 @@
"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": "^1.1.0",
"grunt-contrib-clean": "^2.0.0",
"grunt-contrib-watch": "^1.0.0",
"grunt-eslint": "^20.1.0",
"grunt-karma": "^2.0.0",
"grunt-eslint": "^22.0.0",
"grunt-karma": "^3.0.2",
"grunt-mocha-test": "^0.13.3",
"grunt-ts": "^6.0.0-beta.19",
"grunt-webpack": "^1.0.18",
"istanbul-instrumenter-loader": "^1.0.0",
"grunt-webpack": "^3.1.3",
"istanbul-instrumenter-loader": "^3.0.1",
"jasmine-core": "^2.4.1",
"karma": "^1.3.0",
"karma-chrome-launcher": "^2.2.0",
"karma-coverage": "^1.1.1",
"karma": "^4.3.0",
"karma-chrome-launcher": "^3.1.0",
"karma-coverage": "^2.0.1",
"karma-firefox-launcher": "^1.1.0",
"karma-jasmine": "^1.1.1",
"karma-jasmine": "^2.0.1",
"karma-jasmine-ajax": "^0.1.13",
"karma-opera-launcher": "^1.0.0",
"karma-safari-launcher": "^1.0.0",
"karma-sauce-launcher": "^1.2.0",
"karma-sauce-launcher": "^2.0.2",
"karma-sinon": "^1.0.5",
"karma-sourcemap-loader": "^0.3.7",
"karma-webpack": "^1.7.0",
"load-grunt-tasks": "^3.5.2",
"karma-webpack": "^4.0.2",
"load-grunt-tasks": "^5.1.0",
"minimist": "^1.2.0",
"mocha": "^5.2.0",
"sinon": "^4.5.0",
"mocha": "^6.2.0",
"sinon": "^7.4.2",
"typescript": "^2.8.1",
"url-search-params": "^0.10.0",
"webpack": "^1.13.1",
"webpack-dev-server": "^1.14.1"
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Only core webpack is used, so just removing the dev server dep.

"webpack": "^4.40.2"
},
"browser": {
"./lib/adapters/http.js": "./lib/adapters/xhr.js"
Expand Down
3 changes: 1 addition & 2 deletions test/manual/basic.html
Expand Up @@ -7,7 +7,6 @@

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 @@ -18,4 +17,4 @@
</script>

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

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 @@ -17,4 +16,4 @@
</script>

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

This file was deleted.

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

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

Expand Down
5 changes: 0 additions & 5 deletions test/specs/utils/isX.spec.js
Expand Up @@ -2,11 +2,6 @@ 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: 0 additions & 12 deletions test/specs/utils/trim.spec.js

This file was deleted.

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

function generateConfig(name) {
var uglify = name.indexOf('min') > -1;
var config = {
return {
mode: 'production',
entry: './index.js',
output: {
path: 'dist/',
path: `${__dirname}/dist`,
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

absolute path is required for webpack 4 now.

per the docs, __dirname seems appropriate

https://nodejs.org/docs/latest/api/modules.html#modules_dirname

filename: name + '.js',
sourceMapFilename: name + '.map',
library: 'axios',
Expand All @@ -15,30 +16,21 @@ function generateConfig(name) {
node: {
process: false
},
devtool: 'source-map'
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,
}),
],
},
};

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

if (uglify) {
config.plugins.push(
new webpack.optimize.UglifyJsPlugin({
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

mode is now the canonical way to build with weback.

per the migration guide, the plugins can simply be removed: https://webpack.js.org/migrate/4/#deprecatedremoved-plugins

compressor: {
warnings: false
}
})
);
}

return config;
}

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

module.exports = config;