diff --git a/lib/requestHandler.js b/lib/requestHandler.js
index 9757fd6..57f2881 100644
--- a/lib/requestHandler.js
+++ b/lib/requestHandler.js
@@ -44,7 +44,7 @@ const getErrorResponse = (error, fullUrl) => {
header: {
'Content-Type': 'text/html; charset=utf-8',
'Proxy-Error': true,
- 'Proxy-Error-Message': error || 'null'
+ 'Proxy-Error-Message': error ? JSON.stringify(error) : 'null'
},
body: requestErrorHandler.getErrorContent(error, fullUrl)
};
@@ -116,7 +116,7 @@ function fetchRemoteResponse(protocol, options, reqData, config) {
// set origin content length into header
resHeader['x-anyproxy-origin-content-length'] = originContentLen;
-
+
// only do unzip when there is res data
if (ifServerGzipped && originContentLen) {
refactContentEncoding();
diff --git a/package.json b/package.json
index 22a7745..9268f5c 100644
--- a/package.json
+++ b/package.json
@@ -37,6 +37,7 @@
"qrcode-npm": "0.0.3",
"request": "^2.74.0",
"stream-throttle": "^0.1.3",
+ "svg-inline-react": "^1.0.2",
"whatwg-fetch": "^1.0.0",
"ws": "^2.2.0"
},
@@ -60,7 +61,7 @@
"eslint-plugin-import": "^2.7.0",
"eslint-plugin-jsx-a11y": "^5.1.1",
"eslint-plugin-react": "^7.4.0",
- "extract-text-webpack-plugin": "^1.0.1",
+ "extract-text-webpack-plugin": "^3.0.2",
"file-loader": "^0.9.0",
"https-proxy-agent": "^1.0.0",
"jasmine": "^2.5.3",
@@ -88,9 +89,8 @@
"stream-equal": "0.1.8",
"style-loader": "^0.13.1",
"svg-inline-loader": "^0.7.1",
- "svg-inline-react": "^1.0.2",
"url-loader": "^0.5.7",
- "webpack": "^1.12.9",
+ "webpack": "^3.10.0",
"worker-loader": "^0.7.1"
},
"scripts": {
@@ -99,8 +99,8 @@
"lint": "eslint .",
"testserver": "node test/server/startServer.js",
"testOutWeb": "jasmine test/spec_outweb/test_realweb_spec.js",
- "buildweb": "NODE_ENV=production webpack --config web/webpack.config.js --process --colors",
- "webserver": "NODE_ENV=test webpack --config web/webpack.config.js --process --colors --watch",
+ "buildweb": "NODE_ENV=production webpack --config web/webpack.config.js --colors",
+ "webserver": "NODE_ENV=test webpack --config web/webpack.config.js --colors --watch",
"doc:serve": "node build_scripts/prebuild-doc.js && gitbook serve ./docs-src ./docs --log debug",
"doc:build": "./build_scripts/build-doc-site.sh"
},
diff --git a/web/postcss.config.js b/web/postcss.config.js
new file mode 100644
index 0000000..afeb286
--- /dev/null
+++ b/web/postcss.config.js
@@ -0,0 +1,5 @@
+module.exports = {
+ plugins: [
+ require('autoprefixer')
+ ]
+}
\ No newline at end of file
diff --git a/web/src/component/header-menu.jsx b/web/src/component/header-menu.jsx
index 32e5541..ad41b59 100644
--- a/web/src/component/header-menu.jsx
+++ b/web/src/component/header-menu.jsx
@@ -208,7 +208,7 @@ class HeaderMenu extends React.Component {
onClick={this.stopRecording}
>
-
+
Stop
@@ -221,7 +221,7 @@ class HeaderMenu extends React.Component {
onClick={this.resumeRecording}
>
-
+
Resume
@@ -234,7 +234,7 @@ class HeaderMenu extends React.Component {
onClick={this.showFilter}
>
-
+
Filter
@@ -250,7 +250,7 @@ class HeaderMenu extends React.Component {
onClick={this.clearAllRecord}
title="Ctrl + X"
>
-
+
Clear
{inAppMode ? filterMenu : null}
@@ -269,7 +269,7 @@ class HeaderMenu extends React.Component {
href="javascript:void(0)"
>
-
+
Proxy Info
diff --git a/web/src/component/left-menu.jsx b/web/src/component/left-menu.jsx
index 88faf0b..14edc6d 100644
--- a/web/src/component/left-menu.jsx
+++ b/web/src/component/left-menu.jsx
@@ -93,7 +93,7 @@ class LeftMenu extends React.Component {
title="Only show the filtered result"
>
-
+
Filter
@@ -105,7 +105,7 @@ class LeftMenu extends React.Component {
title="Download the root CA to the computer and your phone"
>
-
+
RootCA
diff --git a/web/webpack.config.js b/web/webpack.config.js
index 3b301f2..57fc0f2 100644
--- a/web/webpack.config.js
+++ b/web/webpack.config.js
@@ -3,6 +3,8 @@ const path = require('path');
const autoprefixer = require('autoprefixer');
const ExtractTextPlugin = require('extract-text-webpack-plugin');
+const UglifyJsPlugin = webpack.optimize.UglifyJsPlugin;
+
const extractCss = new ExtractTextPlugin('[name].css', {
disable: false,
allChunks: true
@@ -22,73 +24,91 @@ module.exports = {
filename: 'main.js'
},
resolve: {
- root: path.join(__dirname, 'src'),
- extensions: ['', '.js', '.jsx']
+ modules: [
+ 'node_modules',
+ path.join(__dirname, 'src')
+ ],
+ extensions: ['.', '.js', '.jsx']
},
module: {
- loaders: [{
+ rules: [{
test: /\.js$/,
exclude: /node_modules/,
- loader: 'babel',
- query: {
+ loader: 'babel-loader',
+ options: {
presets: ['es2015', 'stage-0']
}
},
{
test: /\.jsx$/,
exclude: /node_modules/,
- loader: 'babel',
- query: {
- presets: ['es2015', 'stage-0', 'react'],
- plugins: ['transform-runtime', ['import', { libraryName: 'antd', style: true }]]
+ use: {
+ loader: 'babel-loader',
+ options: {
+ presets: ['es2015', 'stage-0', 'react'],
+ plugins: [['import', { libraryName: 'antd', style: true }]]
+ }
}
},
{
test: function (filePath) {
return (/antd\/.*\.less$/.test(filePath) || /\.global\.less$/.test(filePath));
},
- loader: ExtractTextPlugin.extract('css!postcss!less')
+ use: ExtractTextPlugin.extract({use: 'css-loader!postcss-loader!less-loader'})
},
{
test: function (filePath) {
return (/\.less$/.test(filePath) && !/\.global\.less$/.test(filePath) && !/antd\/.*\.less$/.test(filePath));
},
- loader: ExtractTextPlugin.extract('css?modules&localIdentName=[local]___[hash:base64:5]!postcss!less')
+ use: ExtractTextPlugin.extract({use: 'css-loader?modules&localIdentName=[local]___[hash:base64:5]!postcss-loader!less-loader'})
},
{
test: /\.css$/,
- loader: ExtractTextPlugin.extract('css')
+ use: ExtractTextPlugin.extract({use:'css-loader'})
},
{
test: /\.png(\?v=\d+\.\d+\.\d+)?$/,
- loader: 'url?limit=10000&mimetype=image/png'
+ use: {
+ loader: 'url-loader?limit=10000&mimetype=image/png'
+ }
},
{
test: /\.woff(\?v=\d+\.\d+\.\d+)?$/,
- loader: 'url?limit=10000&mimetype=application/font-woff'
+ use: {
+ loader: 'url-loader?limit=10000&mimetype=application/font-woff'
+ }
},
{
test: /\.woff2(\?v=\d+\.\d+\.\d+)?$/,
- loader: 'url?limit=10000&mimetype=application/font-woff'
+ use: {
+ loader: 'url-loader?limit=10000&mimetype=application/font-woff'
+ }
},
{
test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/,
- loader: 'url?limit=10000&mimetype=application/octet-stream'
+ use: {
+ loader: 'url-loader?limit=10000&mimetype=application/octet-stream'
+ }
},
{
test: /\.eot(\?v=\d+\.\d+\.\d+)?$/,
- loader: 'url?limit=10000&mimetype=application/octet-stream'
+ use: {
+ loader: 'url-loader?limit=10000&mimetype=application/octet-stream'
+ }
},
{
test: /font\.svg(\?v=\d+\.\d+\.\d+)?$/,
- loader: 'url?limit=10000&mimetype=image/svg+xml'
+ use: {
+ loader: 'url-loader?limit=10000&mimetype=image/svg+xml'
+ }
}]
},
- postcss: function () {
- return [autoprefixer];
- },
plugins: [
extractCss,
- defineProperty
- ]
+ defineProperty,
+ new UglifyJsPlugin()
+ ],
+ stats: {
+ children: false
+ }
};