diff --git a/.gitignore b/.gitignore index ad572e632bc8c..f091559223869 100644 --- a/.gitignore +++ b/.gitignore @@ -34,6 +34,7 @@ local.properties node_modules/ npm-debug.log yarn-error.log +dist/ # BUCK buck-out/ diff --git a/package-lock.json b/package-lock.json index 0c9ec2cf8be9b..1ccdc93d07bc4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3829,6 +3829,17 @@ "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -9430,6 +9441,13 @@ "@babel/plugin-transform-unicode-regex": "^7.0.0", "@babel/template": "^7.0.0", "react-refresh": "^0.4.0" + }, + "dependencies": { + "react-refresh": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz", + "integrity": "sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA==" + } } }, "metro-source-map": { @@ -10200,6 +10218,14 @@ "@babel/plugin-transform-unicode-regex": "^7.0.0", "@babel/template": "^7.0.0", "react-refresh": "^0.4.0" + }, + "dependencies": { + "react-refresh": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz", + "integrity": "sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA==", + "dev": true + } } }, "metro-react-native-babel-transformer": { @@ -10266,6 +10292,13 @@ "@babel/plugin-transform-unicode-regex": "^7.0.0", "@babel/template": "^7.0.0", "react-refresh": "^0.4.0" + }, + "dependencies": { + "react-refresh": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz", + "integrity": "sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA==" + } } } } @@ -12051,6 +12084,11 @@ } } }, + "react-refresh": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz", + "integrity": "sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA==" + }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -12075,11 +12113,6 @@ "react-timer-mixin": "^0.13.4" } }, - "react-refresh": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz", - "integrity": "sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA==" - }, "react-router": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.2.0.tgz", @@ -12907,6 +12940,15 @@ "safe-buffer": "^5.0.1" } }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, "shallowequal": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", @@ -15355,6 +15397,16 @@ } } }, + "webpack-merge": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.1.1.tgz", + "integrity": "sha512-UhIkHAVqeG9EqFfYo7dRELrVfH6HYaOTYM7ssKCwfIIHYnWepGVOFp1E166GwgPGFqV6M68UgRiKOERjVOKIXA==", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + } + }, "webpack-sources": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", @@ -15440,6 +15492,12 @@ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" }, + "wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, "word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", diff --git a/package.json b/package.json index 7a0fbd270444e..f3337de3a474a 100644 --- a/package.json +++ b/package.json @@ -6,8 +6,8 @@ "android": "react-native run-android", "ios": "react-native run-ios", "start": "react-native start", - "web": "webpack-dev-server --open --config webpack.config.js", - "build": "webpack --config webpack.config.js", + "web": "webpack-dev-server --open --config webpack.dev.js", + "build": "webpack --config webpack.prod.js", "test": "jest", "lint": "eslint ." }, @@ -54,7 +54,8 @@ "react-test-renderer": "16.13.1", "webpack": "^4.44.1", "webpack-cli": "^3.3.12", - "webpack-dev-server": "^3.11.0" + "webpack-dev-server": "^3.11.0", + "webpack-merge": "^5.1.1" }, "jest": { "preset": "react-native" diff --git a/src/lib/Network.js b/src/lib/Network.js index 47be13226a865..7ac7e4914fec2 100644 --- a/src/lib/Network.js +++ b/src/lib/Network.js @@ -30,6 +30,7 @@ function request(command, data, type = 'post') { if (responseData.jsonCode === 200) { return responseData; } + // eslint-disable-next-line no-console console.info('[API] Error', responseData); }) // eslint-disable-next-line no-unused-vars diff --git a/src/lib/Pusher/pusher.js b/src/lib/Pusher/pusher.js index ac9c994853977..d257fdf0b4e90 100644 --- a/src/lib/Pusher/pusher.js +++ b/src/lib/Pusher/pusher.js @@ -209,6 +209,7 @@ function unsubscribe(channelName, eventName = '') { channel.unbind(eventName); } else { if (!channel.subscribed) { + // eslint-disable-next-line no-console console.warn('[Pusher] Attempted to unsubscribe from channel, but we are not subscribed to begin with', 0, {channelName}); return; } diff --git a/src/store/actions/PersonalDetailsActions.js b/src/store/actions/PersonalDetailsActions.js index 482be1f42b0e2..31c88fc6d9593 100644 --- a/src/store/actions/PersonalDetailsActions.js +++ b/src/store/actions/PersonalDetailsActions.js @@ -71,6 +71,7 @@ function fetch() { }) .catch((error) => { if (error.message === 'No login') { + // eslint-disable-next-line no-console console.info('No email in store, not fetching personal details.'); return; } diff --git a/src/store/actions/ReportActions.js b/src/store/actions/ReportActions.js index 7de76b682e3a4..b0714398b841a 100644 --- a/src/store/actions/ReportActions.js +++ b/src/store/actions/ReportActions.js @@ -131,6 +131,7 @@ function fetchAll() { return data; }) .then(data => Store.set(STOREKEYS.REPORTS, _.values(data.reports))) + // eslint-disable-next-line no-console .catch((error) => { console.log('Error fetching report actions', error); }); } @@ -146,6 +147,7 @@ function fetchAll() { return data; }) .then(data => Store.set(STOREKEYS.REPORTS, _.values(data.reportListBeta))) + // eslint-disable-next-line no-console .catch((error) => { console.log('Error fetching report actions', error); }); } diff --git a/webpack.config.js b/webpack.common.js similarity index 88% rename from webpack.config.js rename to webpack.common.js index b8b938c9a8763..df1f64d4c9e6e 100644 --- a/webpack.config.js +++ b/webpack.common.js @@ -3,7 +3,6 @@ const {CleanWebpackPlugin} = require('clean-webpack-plugin'); const HtmlWebpackPlugin = require('html-webpack-plugin'); module.exports = { - mode: 'development', entry: { app: './web/index.js', }, @@ -11,11 +10,6 @@ module.exports = { filename: '[name]-[hash].bundle.js', path: path.resolve(__dirname, 'dist'), }, - devtool: 'inline-source-map', - devServer: { - contentBase: path.join(__dirname, 'dist'), - hot: true, - }, plugins: [ new CleanWebpackPlugin(), new HtmlWebpackPlugin({ diff --git a/webpack.dev.js b/webpack.dev.js new file mode 100644 index 0000000000000..cdfcec9084382 --- /dev/null +++ b/webpack.dev.js @@ -0,0 +1,12 @@ +const path = require('path'); +const {merge} = require('webpack-merge'); +const common = require('./webpack.common.js'); + +module.exports = merge(common, { + mode: 'development', + devtool: 'inline-source-map', + devServer: { + contentBase: path.join(__dirname, 'dist'), + hot: true, + }, +}); diff --git a/webpack.prod.js b/webpack.prod.js new file mode 100644 index 0000000000000..d6aad68a2fe58 --- /dev/null +++ b/webpack.prod.js @@ -0,0 +1,7 @@ +const {merge} = require('webpack-merge'); +const common = require('./webpack.common.js'); + +module.exports = merge(common, { + mode: 'production', + devtool: 'source-map', +});