From 097948698a057235140cc275504c12d5d20281b8 Mon Sep 17 00:00:00 2001 From: Felipe Martins Date: Fri, 25 Oct 2019 11:34:47 -0300 Subject: [PATCH] Revert "Update Webpack + deps, remove now unnecessary polyfills" (#2479) * Revert "Update Webpack + deps, remove now unnecessary polyfills (#2410)" This reverts commit 189b34c45ababa279243d419c60a06ef3c1ab258. * Fix build (#2496) * Change syntax to see if build passes * Test commit * Test with node 10 * Test adding all browsers in travis * remove other browsers when running on travis --- bower.json | 1 + lib/core/enhanceError.js | 2 +- lib/helpers/buildURL.js | 2 +- lib/helpers/parseHeaders.js | 4 ++-- lib/utils.js | 40 ++++++++++++++++++++++++------- package.json | 32 +++++++++++++------------ test/manual/basic.html | 3 ++- test/manual/cors.html | 3 ++- test/manual/promise.js | 9 +++++++ test/specs/__helpers.js | 3 +++ test/specs/utils/isX.spec.js | 5 ++++ test/specs/utils/trim.spec.js | 12 ++++++++++ webpack.config.js | 44 +++++++++++++++++++++-------------- 13 files changed, 113 insertions(+), 47 deletions(-) create mode 100644 test/manual/promise.js create mode 100644 test/specs/utils/trim.spec.js diff --git a/bower.json b/bower.json index 9a5b8cb4c2..2496c03ef2 100644 --- a/bower.json +++ b/bower.json @@ -21,6 +21,7 @@ "license": "MIT", "ignore": [ "**/.*", + "*.iml", "examples", "lib", "node_modules", diff --git a/lib/core/enhanceError.js b/lib/core/enhanceError.js index b6bc4444e1..02fbbd6a99 100644 --- a/lib/core/enhanceError.js +++ b/lib/core/enhanceError.js @@ -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, diff --git a/lib/helpers/buildURL.js b/lib/helpers/buildURL.js index 7a7d7a6199..8c40e4096a 100644 --- a/lib/helpers/buildURL.js +++ b/lib/helpers/buildURL.js @@ -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]; diff --git a/lib/helpers/parseHeaders.js b/lib/helpers/parseHeaders.js index 5747a1bd7a..8af2cc7f1b 100644 --- a/lib/helpers/parseHeaders.js +++ b/lib/helpers/parseHeaders.js @@ -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) { diff --git a/lib/utils.js b/lib/utils.js index 2726490f14..8946055dac 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -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 @@ -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]'; } /** @@ -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]'; } /** @@ -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]'; } /** @@ -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]'; } /** @@ -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]'; } /** @@ -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 * @@ -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); @@ -288,6 +310,7 @@ function extend(a, b, thisArg) { } module.exports = { + isArray: isArray, isArrayBuffer: isArrayBuffer, isBuffer: isBuffer, isFormData: isFormData, @@ -306,5 +329,6 @@ module.exports = { forEach: forEach, merge: merge, deepMerge: deepMerge, - extend: extend + extend: extend, + trim: trim }; diff --git a/package.json b/package.json index 42b60b53d3..4905921b89 100644 --- a/package.json +++ b/package.json @@ -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" diff --git a/test/manual/basic.html b/test/manual/basic.html index bf4845b0e9..35fa6490d8 100644 --- a/test/manual/basic.html +++ b/test/manual/basic.html @@ -7,6 +7,7 @@ An alert should be shown with the {"name":"axios"} + - + \ No newline at end of file diff --git a/test/manual/cors.html b/test/manual/cors.html index 5d94486645..da6e946fee 100644 --- a/test/manual/cors.html +++ b/test/manual/cors.html @@ -7,6 +7,7 @@ An alert should be shown with {"status":"ok"} + - + \ No newline at end of file diff --git a/test/manual/promise.js b/test/manual/promise.js new file mode 100644 index 0000000000..2d48351584 --- /dev/null +++ b/test/manual/promise.js @@ -0,0 +1,9 @@ +/*! + * @overview es6-promise - a tiny implementation of Promises/A+. + * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald) + * @license Licensed under MIT license + * See https://raw.githubusercontent.com/jakearchibald/es6-promise/master/LICENSE + * @version 3.0.2 + */ + +(function(){"use strict";function lib$es6$promise$utils$$objectOrFunction(x){return typeof x==="function"||typeof x==="object"&&x!==null}function lib$es6$promise$utils$$isFunction(x){return typeof x==="function"}function lib$es6$promise$utils$$isMaybeThenable(x){return typeof x==="object"&&x!==null}var lib$es6$promise$utils$$_isArray;if(!Array.isArray){lib$es6$promise$utils$$_isArray=function(x){return Object.prototype.toString.call(x)==="[object Array]"}}else{lib$es6$promise$utils$$_isArray=Array.isArray}var lib$es6$promise$utils$$isArray=lib$es6$promise$utils$$_isArray;var lib$es6$promise$asap$$len=0;var lib$es6$promise$asap$$toString={}.toString;var lib$es6$promise$asap$$vertxNext;var lib$es6$promise$asap$$customSchedulerFn;var lib$es6$promise$asap$$asap=function asap(callback,arg){lib$es6$promise$asap$$queue[lib$es6$promise$asap$$len]=callback;lib$es6$promise$asap$$queue[lib$es6$promise$asap$$len+1]=arg;lib$es6$promise$asap$$len+=2;if(lib$es6$promise$asap$$len===2){if(lib$es6$promise$asap$$customSchedulerFn){lib$es6$promise$asap$$customSchedulerFn(lib$es6$promise$asap$$flush)}else{lib$es6$promise$asap$$scheduleFlush()}}};function lib$es6$promise$asap$$setScheduler(scheduleFn){lib$es6$promise$asap$$customSchedulerFn=scheduleFn}function lib$es6$promise$asap$$setAsap(asapFn){lib$es6$promise$asap$$asap=asapFn}var lib$es6$promise$asap$$browserWindow=typeof window!=="undefined"?window:undefined;var lib$es6$promise$asap$$browserGlobal=lib$es6$promise$asap$$browserWindow||{};var lib$es6$promise$asap$$BrowserMutationObserver=lib$es6$promise$asap$$browserGlobal.MutationObserver||lib$es6$promise$asap$$browserGlobal.WebKitMutationObserver;var lib$es6$promise$asap$$isNode=typeof process!=="undefined"&&{}.toString.call(process)==="[object process]";var lib$es6$promise$asap$$isWorker=typeof Uint8ClampedArray!=="undefined"&&typeof importScripts!=="undefined"&&typeof MessageChannel!=="undefined";function lib$es6$promise$asap$$useNextTick(){return function(){process.nextTick(lib$es6$promise$asap$$flush)}}function lib$es6$promise$asap$$useVertxTimer(){return function(){lib$es6$promise$asap$$vertxNext(lib$es6$promise$asap$$flush)}}function lib$es6$promise$asap$$useMutationObserver(){var iterations=0;var observer=new lib$es6$promise$asap$$BrowserMutationObserver(lib$es6$promise$asap$$flush);var node=document.createTextNode("");observer.observe(node,{characterData:true});return function(){node.data=iterations=++iterations%2}}function lib$es6$promise$asap$$useMessageChannel(){var channel=new MessageChannel;channel.port1.onmessage=lib$es6$promise$asap$$flush;return function(){channel.port2.postMessage(0)}}function lib$es6$promise$asap$$useSetTimeout(){return function(){setTimeout(lib$es6$promise$asap$$flush,1)}}var lib$es6$promise$asap$$queue=new Array(1e3);function lib$es6$promise$asap$$flush(){for(var i=0;i -1; + var config = { entry: './index.js', output: { - path: `${__dirname}/dist`, + path: 'dist/', filename: name + '.js', sourceMapFilename: name + '.map', library: 'axios', @@ -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;