From 6e367cbaf6e78dcda2a277fc9b31198e428b6532 Mon Sep 17 00:00:00 2001 From: OlegPinchuk Date: Wed, 7 Feb 2018 15:03:43 +0200 Subject: [PATCH 1/4] webpack changes --- config/webpack.dev.config.babel.js | 113 ------------------------ config/webpack.prod.config.babel.js | 72 --------------- package.json | 21 ++--- src/componets/index.js | 4 - src/containers/ActionMenu/ActionMenu.js | 1 - src/{template.ejs => index.html} | 2 +- src/index.js | 12 +-- src/pages/NinjaApp/NinjaApp.js | 8 +- src/vendors.js | 9 ++ src/webPackServerApp.js | 17 ++++ src/webpack-compiler.js | 100 +++++++++++++++++++++ src/webpack.production.config.js | 102 +++++++++++++++++++++ 12 files changed, 249 insertions(+), 212 deletions(-) delete mode 100644 config/webpack.dev.config.babel.js delete mode 100644 config/webpack.prod.config.babel.js rename src/{template.ejs => index.html} (56%) mode change 100755 => 100644 create mode 100644 src/vendors.js create mode 100644 src/webPackServerApp.js create mode 100644 src/webpack-compiler.js create mode 100644 src/webpack.production.config.js diff --git a/config/webpack.dev.config.babel.js b/config/webpack.dev.config.babel.js deleted file mode 100644 index decc88664..000000000 --- a/config/webpack.dev.config.babel.js +++ /dev/null @@ -1,113 +0,0 @@ -import webpack from 'webpack'; -import HtmlWebpackPlugin from 'html-webpack-plugin'; -import ConcatPlugin from 'webpack-concat-plugin'; -import HtmlHardiskPlugin from 'html-webpack-harddisk-plugin'; -import autoprefixer from 'autoprefixer'; -import path from 'path'; - -const bypass = (req) => '/' + `${generatedEntry}`; -const outputFolderName = 'bundle'; -const generatedEntry = 'index.html'; -const localPort = 8080; -const backendOptions = { port: 8000, url: 'http://127.0.0.1' }; - -export default { - resolve: { - extensions: ['*', '.js', '.jsx', '.json'], - modules: ['node_modules', 'src'], - alias: { - Core: path.resolve(__dirname, 'src/core/'), - Pages: path.resolve(__dirname, 'src/pages/'), - Home: path.resolve(__dirname, 'src/pages/home/index'), - Dashboard: path.resolve(__dirname, 'src/pages/dashboard/index') - } - }, - devtool: 'inline-source-map', //eval-source-map - entry: [ - 'babel-polyfill', - 'react-hot-loader/patch', - "webpack/hot/only-dev-server", - 'webpack-dev-server/client?http://localhost:' + `${localPort}`, - path.resolve(__dirname, 'src/index.js') - ], - target: 'web', - output: { - path: path.resolve(__dirname, outputFolderName), - publicPath: '/', - filename: `[hash].[name].${outputFolderName}.js`, - chunkFilename: `[name].[id].${outputFolderName}.js` - }, - plugins: [ - new webpack.HotModuleReplacementPlugin(), - - new webpack.DefinePlugin({ - 'process.env': { - 'NODE_ENV': JSON.stringify(process.env.NODE_ENV) - } - }), - new webpack.NoEmitOnErrorsPlugin(), - new webpack.optimize.CommonsChunkPlugin({ - filename: '[name].js', - names: ['vendor'], - minChunks: Infinity - }), - new HtmlWebpackPlugin({ - template: 'src/template.ejs', - filename: generatedEntry, - inject: true, - alwaysWriteToDisk: true - }), - new HtmlHardiskPlugin(), - new webpack.LoaderOptionsPlugin({ - minimize: false, - debug: true, - noInfo: false, // set to false to see a list of every file being bundled. - options: { - sassLoader: { - includePaths: [path.resolve(__dirname, 'src', 'scss')] - }, - context: '/', - postcss: () => [autoprefixer] - } - }) - //new ConcatPlugin({ - // uglify: false, - // useHash: false, - // name: 'utils', - // fileName: '[name].bundle.js', - // filesToConcat: [ - // 'src/app/root/index/assets/vendor/n2o/utf8.js', - // 'src/app/root/index/assets/vendor/n2o/bert.js', - // 'src/app/root/index/assets/vendor/n2o/bullet.js', - // 'src/app/root/index/assets/vendor/n2o/n2o.js', - // 'src/app/root/index/assets/vendor/n2o/ftp.js', - // 'src/app/root/index/assets/vendor/n2o/nitrogen.js', - // 'src/app/root/index/assets/vendor/utils/spa_mq.js', - // 'src/app/root/index/assets/vendor/utils/global.js', - // 'src/app/root/index/assets/vendor/utils/handlers.js', - // 'src/app/root/index/assets/vendor/utils/json-bert.js' - // ] - //}) - ], - devServer: { - proxy: [{ - path: '/', - target: `${backendOptions.url}` + ':' + `${backendOptions.port}`, - bypass - }], - contentBase: path.resolve(__dirname, outputFolderName), - historyApiFallback: true - }, - module: { - rules: [ - {test: /\.jsx?$/, exclude: /node_modules/, loaders: ['babel-loader']}, - {test: /\.eot(\?v=\d+.\d+.\d+)?$/, loader: 'file-loader'}, - {test: /\.woff(2)?(\?v=[0-9]\.[0-9]\.[0-9])?$/, loader: 'url-loader?limit=10000&mimetype=application/font-woff'}, - {test: /\.[ot]tf(\?v=\d+.\d+.\d+)?$/, loader: 'url-loader?limit=10000&mimetype=application/octet-stream'}, - {test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, loader: 'url-loader?limit=10000&mimetype=image/svg+xml'}, - {test: /\.(jpe?g|png|gif)$/i, loader: 'file-loader?name=[name].[ext]'}, - {test: /\.ico$/, loader: 'file-loader?name=[name].[ext]'}, - {test: /(\.css|\.scss|\.sass)$/, loaders: ['style-loader', 'css-loader?sourceMap', 'postcss-loader']} - ] - } -}; diff --git a/config/webpack.prod.config.babel.js b/config/webpack.prod.config.babel.js deleted file mode 100644 index ed0896419..000000000 --- a/config/webpack.prod.config.babel.js +++ /dev/null @@ -1,72 +0,0 @@ -import webpack from 'webpack'; -import HtmlWebpackPlugin from 'html-webpack-plugin'; -import ConcatPlugin from 'webpack-concat-plugin'; -import HtmlHardiskPlugin from 'html-webpack-harddisk-plugin'; -import autoprefixer from 'autoprefixer'; -import path from 'path'; - -const generatedEntry = 'index.html'; - -export default { - resolve: { - extensions: ['*', '.js', '.jsx', '.json'], - alias: { - Core: path.resolve(__dirname, 'src/core/'), - Pages: path.resolve(__dirname, 'src/pages/'), - Root: path.resolve(__dirname, 'src/pages/root/'), - Home: path.resolve(__dirname, 'src/pages/home/'), - Dashboard: path.resolve(__dirname, 'src/pages/dashboard') - } - }, - entry: [ - path.resolve(__dirname, 'src/index.js') - ], - target: 'web', - output: { - path: path.resolve(__dirname, 'build'), - publicPath: '/', - filename: '[hash].build.js' - }, - plugins: [ - new webpack.HotModuleReplacementPlugin(), - - new webpack.DefinePlugin({ - 'process.env': { - 'NODE_ENV': JSON.stringify(process.env.NODE_ENV) - } - }), - - new webpack.NoEmitOnErrorsPlugin(), - new HtmlWebpackPlugin({ - template: 'src/template.ejs', - filename: generatedEntry, - inject: true, - alwaysWriteToDisk: true - }), - new HtmlHardiskPlugin(), - new webpack.LoaderOptionsPlugin({ - minimize: false, - debug: true, - noInfo: false, // set to false to see a list of every file being bundled. - options: { - sassLoader: { - includePaths: [path.resolve(__dirname, 'src', 'scss')] - }, - context: '/', - postcss: () => [autoprefixer] - } - }) - ], - module: { - rules: [ - {test: /\.jsx?$/, exclude: /node_modules/, loaders: ['babel-loader']}, - {test: /\.eot(\?v=\d+.\d+.\d+)?$/, loader: 'file-loader'}, - {test: /\.woff(2)?(\?v=[0-9]\.[0-9]\.[0-9])?$/, loader: 'url-loader?limit=10000&mimetype=application/font-woff'}, - {test: /\.[ot]tf(\?v=\d+.\d+.\d+)?$/, loader: 'url-loader?limit=10000&mimetype=application/octet-stream'}, - {test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, loader: 'url-loader?limit=10000&mimetype=image/svg+xml'}, - {test: /\.(jpe?g|png|gif)$/i, loader: 'file-loader?name=[name].[ext]'}, - {test: /\.ico$/, loader: 'file-loader?name=[name].[ext]'}, - {test: /(\.css|\.scss|\.sass)$/, loaders: ['style-loader', 'css-loader', 'postcss-loader']} - ] - } -}; diff --git a/package.json b/package.json index cef0af14a..5756de54d 100644 --- a/package.json +++ b/package.json @@ -6,15 +6,10 @@ "npm": ">=5" }, "scripts": { - "analyze-bundle": "babel-node ./tools/analyzeBundle.js", - "build": "NODE_ENV=production webpack --config ./webpack.prod.config.babel.js -p --progress", - "clean:prod": "npm run remove:prod && mkdir build", - "clean:dev": "npm run remove && mkdir bundle", - "prebuild:prod": "npm run clean:prod", - "prebuild:dev": "npm run clean:dev", - "remove:prod": "rimraf ./build", - "remove:dev": "rimraf ./bundle", - "start": "NODE_ENV=development webpack-dev-server --config ./webpack.dev.config.babel.js --inline", + "build": "webpack --config src/webpack.production.config.js", + "clean": "rimraf src/build/*", + "client": "babel-node src/webPackServerApp.js", + "dev": "NODE_ENV=development npm run client && concurrently --kill-others " }, "author": "", "license": "MIT", @@ -26,6 +21,7 @@ "mqtt": "^2.15.1", "mqtt-localforage-store": "^1.0.5", "object-assign": "4.1.0", + "path": "^0.12.7", "raven-js": "^3.22.1", "react": "15.5.4", "react-custom-scrollbars": "^4.2.1", @@ -47,17 +43,18 @@ "devDependencies": { "autoprefixer": "7.1.2", "babel-cli": "6.24.1", - "babel-core": "6.25.0", + "babel-core": "^6.25.0", "babel-eslint": "7.2.3", "babel-jest": "20.0.3", - "babel-loader": "7.1.1", + "babel-loader": "^7.1.1", "babel-plugin-transform-class-properties": "^6.24.1", "babel-plugin-transform-react-constant-elements": "6.23.0", "babel-plugin-transform-react-remove-prop-types": "0.4.6", - "babel-polyfill": "6.23.0", + "babel-polyfill": "^6.23.0", "babel-preset-env": "1.6.0", "babel-preset-react": "6.24.1", "babel-preset-react-hmre": "^1.1.1", + "babel-preset-stage-0": "^6.24.1", "babel-preset-stage-1": "6.24.1", "babel-register": "^6.26.0", "browser-sync": "2.18.12", diff --git a/src/componets/index.js b/src/componets/index.js index cb6dad6a1..7599cbfe9 100644 --- a/src/componets/index.js +++ b/src/componets/index.js @@ -1,9 +1,5 @@ -import MenuAppBar from '../containers/MenuAppBar/MenuAppBar'; import LogoIcon from './SvgIcons/LogoIcon/LogoIcon'; -import LeftMenu from '../containers/ActionMenu/ActionMenu'; export { - MenuAppBar, LogoIcon, - LeftMenu }; \ No newline at end of file diff --git a/src/containers/ActionMenu/ActionMenu.js b/src/containers/ActionMenu/ActionMenu.js index fd0535ed9..f885507c3 100644 --- a/src/containers/ActionMenu/ActionMenu.js +++ b/src/containers/ActionMenu/ActionMenu.js @@ -44,7 +44,6 @@ class LeftMenu extends React.Component {
- diff --git a/src/template.ejs b/src/index.html old mode 100755 new mode 100644 similarity index 56% rename from src/template.ejs rename to src/index.html index 38b18b1a4..1630bfc65 --- a/src/template.ejs +++ b/src/index.html @@ -3,5 +3,5 @@
- + diff --git a/src/index.js b/src/index.js index 2e2a80f5b..d066a0443 100644 --- a/src/index.js +++ b/src/index.js @@ -1,19 +1,19 @@ +import "regenerator-runtime/runtime"; import Raven from './core/loggers/SentryError.logger'; import React from 'react'; import { render } from 'react-dom'; -import { AppContainer } from 'react-hot-loader'; -import Reboot from 'material-ui/Reboot'; + import Root from './root'; -import { devStore as configureStore } from './core/store'; + +import { devStore as configureStore } from './core/store' +import Reboot from 'material-ui/Reboot'; require('./favicon.ico'); render(
- - - +
, document.getElementById('app') diff --git a/src/pages/NinjaApp/NinjaApp.js b/src/pages/NinjaApp/NinjaApp.js index a28eb4ce2..8492da191 100644 --- a/src/pages/NinjaApp/NinjaApp.js +++ b/src/pages/NinjaApp/NinjaApp.js @@ -28,10 +28,12 @@ export default class Dashboard extends Component {
+ +
+ { this.renderChildren(this.props.children, {}) } +
+
-
- { this.renderChildren(this.props.children, {}) } -
) diff --git a/src/vendors.js b/src/vendors.js new file mode 100644 index 000000000..938e7f84a --- /dev/null +++ b/src/vendors.js @@ -0,0 +1,9 @@ +module.exports = [ + 'immutable', + 'react', + 'react-dom', + 'react-redux', + 'react-router', + 'react-select', + 'redux', +]; \ No newline at end of file diff --git a/src/webPackServerApp.js b/src/webPackServerApp.js new file mode 100644 index 000000000..70a62bda5 --- /dev/null +++ b/src/webPackServerApp.js @@ -0,0 +1,17 @@ +// TODO: KL: Create webpack server on port 8083 and connect to GraphQL on port 8081 +import WebpackDevServer from "webpack-dev-server"; +import WebpackCompiler from "./webpack-compiler"; + +let client = new WebpackDevServer(WebpackCompiler, { + contentBase: "build/", + historyApiFallback: true, + hot: true, + inline: true, + stats: { + colors: true + } +}) + +client.listen(3080, () => console.log( + "App listen on 3080" +)); \ No newline at end of file diff --git a/src/webpack-compiler.js b/src/webpack-compiler.js new file mode 100644 index 000000000..9b6a51d8a --- /dev/null +++ b/src/webpack-compiler.js @@ -0,0 +1,100 @@ +const HtmlWebpackPlugin = require('html-webpack-plugin'); +const webpack = require('webpack'); +const path = require('path'); +const vendors = require('./vendors'); + +var ROOT_PATH = path.resolve(__dirname); +var APP_PATH = path.resolve(ROOT_PATH); +var BUILD_PATH = path.resolve(ROOT_PATH, 'build'); + +export default webpack({ + entry: { + vendor: [...vendors], + app: `${APP_PATH}` + }, + output: { + path: BUILD_PATH, + publicPath: '/', + filename: 'bundle.[name].[chunkhash].js' + }, + module: { + rules: [ + { test: /\.js$/, + exclude: /(node_modules)/, + use: [{ + loader: 'babel-loader' + }, + ], + }, + { test: /\.scss$/, + use: [ 'style-loader', 'css-loader', 'sass-loader?outputStyle=expanded&sourceMap' ], + }, + { test: /\.css$/, + use: [{ + loader: 'style-loader' + }, { + loader: 'css-loader' + }, + ], + }, + { test: /\.woff(\?v=\d+\.\d+\.\d+)?$/, + use: [{ + loader: 'url-loader?limit=10000&mimetype=application/font-woff' + }, + ] + }, + { test: /\.woff2(\?v=\d+\.\d+\.\d+)?$/, + use: [{ + loader: 'url-loader?limit=10000&mimetype=application/font-woff' + }, + ], + }, + { test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, + use: [{ + loader: 'url-loader?limit=10000&mimetype=application/octet-stream' + }, + ], + }, + { test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, + use: [{ + loader: 'file-loader' + }, + ], + }, + { test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, + use: [{ + loader: 'url-loader?limit=10000&mimetype=image/svg+xml' + }, + ], + }, + { test: /\.(jpe?g|png|gif|svg|ico)$/, + use: [{ + loader: 'file-loader?name=static/image/[name].[ext]' + }, + ], + } + ] + }, + plugins: [ + new HtmlWebpackPlugin({ + template: `${ROOT_PATH}/index.html` + }), + new webpack.optimize.CommonsChunkPlugin({ + names: ['vendor', 'manifest'], + minChunks: Infinity, + }), + new webpack.NamedModulesPlugin(), + new webpack.DefinePlugin({ + __CLIENT__: true, + __DEVELOPMENT__: true, + __DEVTOOLS__: true // <-------- DISABLE redux-devtools here (btw, it causes initial double render!) + }), + ], + resolve: { + extensions: ['.js', '.json'], + modules: [ + path.resolve('node_modules'), + ] + }, + devtool: 'eval-source-map' +}); \ No newline at end of file diff --git a/src/webpack.production.config.js b/src/webpack.production.config.js new file mode 100644 index 000000000..93791f532 --- /dev/null +++ b/src/webpack.production.config.js @@ -0,0 +1,102 @@ +const HtmlWebpackPlugin = require('html-webpack-plugin'); +const webpack = require('webpack'); +const path = require('path'); +const vendors = require('./vendors'); + +var ROOT_PATH = path.resolve(__dirname); +var APP_PATH = path.resolve(ROOT_PATH); +var BUILD_PATH = path.resolve(ROOT_PATH, 'build'); + +module.exports = { + entry: { + vendor: [...vendors], + + app: `${APP_PATH}` + }, + output: { + path: BUILD_PATH, + publicPath: './', + filename: 'bundle.[name].[chunkhash].js' + }, + module: { + rules: [ + { test: /\.js$/, + exclude: /(node_modules)/, + use: [{ + loader: 'babel-loader', + }, + ], + }, + { test: /\.scss$/, + use: [ 'style-loader', 'css-loader', 'sass-loader?outputStyle=expanded&sourceMap' ], + }, + { test: /\.css$/, + use: [{ + loader: 'style-loader' + }, { + loader: 'css-loader' + }, + ], + }, + { test: /\.woff(\?v=\d+\.\d+\.\d+)?$/, + use: [{ + loader: 'url-loader?limit=10000&mimetype=application/font-woff' + }, + ] + }, + { test: /\.woff2(\?v=\d+\.\d+\.\d+)?$/, + use: [{ + loader: 'url-loader?limit=10000&mimetype=application/font-woff' + }, + ], + }, + { test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, + use: [{ + loader: 'url-loader?limit=10000&mimetype=application/octet-stream' + }, + ], + }, + { test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, + use: [{ + loader: 'file-loader' + }, + ], + }, + { test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, + use: [{ + loader: 'url-loader?limit=10000&mimetype=image/svg+xml' + }, + ], + }, + { test: /\.(jpe?g|png|gif|svg)$/, + use: [{ + loader: 'file-loader?name=static/image/[name].[ext]' + }, + ], + } + ] + }, + plugins: [ + new HtmlWebpackPlugin({ + template: `${ROOT_PATH}/index.html` + }), + new webpack.optimize.CommonsChunkPlugin({ + names: ['vendor', 'manifest'], + minChunks: Infinity, + }), + new webpack.NamedModulesPlugin(), + new webpack.DefinePlugin({ + __CLIENT__: true, + __SERVER__: false, + __DEVELOPMENT__: false, + __DEVTOOLS__: false // <-------- DISABLE redux-devtools here (btw, it causes initial double render!) + }), + ], + resolve: { + extensions: ['.js', '.json'], + modules: [ + path.resolve('node_modules'), + ] + }, + devtool: 'nosources-source-map' +}; -- GitLab From afe7bdeb7598c24392b2302faaedbab497c6df65 Mon Sep 17 00:00:00 2001 From: OlegPinchuk Date: Fri, 9 Feb 2018 16:22:02 +0200 Subject: [PATCH 2/4] prod config web pack ignore Sun work merge to dev --- .gitignore | 21 +- package-lock.json | 2071 ++++++++++++----- package.json | 8 +- src/componets/ChatListItem/ChatListItem.js | 39 + src/componets/PaperWithDrop/PaperWithDrop.js | 53 + src/componets/index.js | 2 + src/containers/ActionMenu/ActionMenu.js | 126 +- src/containers/ActivityList/ActivityList.js | 32 +- src/containers/ChatModal/ChatModal.js | 0 src/containers/MenuAppBar/MenuAppBar.js | 38 +- src/containers/index.js | 5 +- src/index.html | 6 +- src/modules/Chats/Chats.js | 7 +- src/modules/Dashboard/Dashboard.js | 19 +- src/pages/App/App.js | 5 +- src/pages/NinjaApp/NinjaApp.js | 43 +- src/root.js | 2 +- {src => webpackConfigs}/webPackServerApp.js | 4 +- {src => webpackConfigs}/webpack-compiler.js | 10 +- .../webpack.production.config.js | 15 +- 20 files changed, 1825 insertions(+), 681 deletions(-) create mode 100644 src/componets/ChatListItem/ChatListItem.js create mode 100644 src/componets/PaperWithDrop/PaperWithDrop.js create mode 100644 src/containers/ChatModal/ChatModal.js rename {src => webpackConfigs}/webPackServerApp.js (91%) rename {src => webpackConfigs}/webpack-compiler.js (91%) rename {src => webpackConfigs}/webpack.production.config.js (88%) diff --git a/.gitignore b/.gitignore index 99a7d21e0..be2bec6a5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,24 +1,27 @@ -# IDEA/Webstorm project files -.idea -*.iml - ebin/ -tmp/ -node_modules/ -/config/ -bundle/ -build/ + +*/tmp */npm-debug.log */webpack-assets.json +*/build/ +*/public/bundle */.editorconfig */.gitignore */stats.json +!*/webpack.config.sample.js # Logs logs *.log* +# IDEA/Webstorm project files +.idea +*.iml + # Mac files .DS_Store .editorconfig +Будет удалено public/ +/node_modules/ +/webpackConfigs/ diff --git a/package-lock.json b/package-lock.json index 062df826a..ed3e4547a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -846,6 +846,12 @@ "integrity": "sha1-MSVjtNvePMgGzuPkFszurd0RrAs=", "dev": true }, + "babel-plugin-syntax-do-expressions": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-do-expressions/-/babel-plugin-syntax-do-expressions-6.13.0.tgz", + "integrity": "sha1-V0d1YTmqJtOQ0JQQsDdEugfkeW0=", + "dev": true + }, "babel-plugin-syntax-dynamic-import": { "version": "6.18.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz", @@ -870,6 +876,12 @@ "integrity": "sha1-TDqyCiryaqIM0lmVw5jE63AxDI0=", "dev": true }, + "babel-plugin-syntax-function-bind": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-function-bind/-/babel-plugin-syntax-function-bind-6.13.0.tgz", + "integrity": "sha1-SMSV8Xe98xqYHnMvVa3AvdJgH0Y=", + "dev": true + }, "babel-plugin-syntax-jsx": { "version": "6.18.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", @@ -946,6 +958,16 @@ "babel-types": "6.26.0" } }, + "babel-plugin-transform-do-expressions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-do-expressions/-/babel-plugin-transform-do-expressions-6.22.0.tgz", + "integrity": "sha1-KMyvkoEtlJws0SgfaQyP3EaK6bs=", + "dev": true, + "requires": { + "babel-plugin-syntax-do-expressions": "6.13.0", + "babel-runtime": "6.26.0" + } + }, "babel-plugin-transform-es2015-arrow-functions": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", @@ -1211,6 +1233,16 @@ "babel-runtime": "6.26.0" } }, + "babel-plugin-transform-function-bind": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-function-bind/-/babel-plugin-transform-function-bind-6.22.0.tgz", + "integrity": "sha1-xvuOlqwpajELjPjqQBRiQH3fapc=", + "dev": true, + "requires": { + "babel-plugin-syntax-function-bind": "6.13.0", + "babel-runtime": "6.26.0" + } + }, "babel-plugin-transform-object-rest-spread": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", @@ -1361,6 +1393,38 @@ "semver": "5.4.1" } }, + "babel-preset-es2015": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", + "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=", + "dev": true, + "requires": { + "babel-plugin-check-es2015-constants": "6.22.0", + "babel-plugin-transform-es2015-arrow-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoping": "6.26.0", + "babel-plugin-transform-es2015-classes": "6.24.1", + "babel-plugin-transform-es2015-computed-properties": "6.24.1", + "babel-plugin-transform-es2015-destructuring": "6.23.0", + "babel-plugin-transform-es2015-duplicate-keys": "6.24.1", + "babel-plugin-transform-es2015-for-of": "6.23.0", + "babel-plugin-transform-es2015-function-name": "6.24.1", + "babel-plugin-transform-es2015-literals": "6.22.0", + "babel-plugin-transform-es2015-modules-amd": "6.24.1", + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-plugin-transform-es2015-modules-systemjs": "6.24.1", + "babel-plugin-transform-es2015-modules-umd": "6.24.1", + "babel-plugin-transform-es2015-object-super": "6.24.1", + "babel-plugin-transform-es2015-parameters": "6.24.1", + "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", + "babel-plugin-transform-es2015-spread": "6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "6.24.1", + "babel-plugin-transform-es2015-template-literals": "6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", + "babel-plugin-transform-es2015-unicode-regex": "6.24.1", + "babel-plugin-transform-regenerator": "6.26.0" + } + }, "babel-preset-flow": { "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz", @@ -1405,6 +1469,17 @@ "redbox-react": "1.5.0" } }, + "babel-preset-stage-0": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-stage-0/-/babel-preset-stage-0-6.24.1.tgz", + "integrity": "sha1-VkLRUEL5E4TX5a+LyIsduVsDnmo=", + "dev": true, + "requires": { + "babel-plugin-transform-do-expressions": "6.22.0", + "babel-plugin-transform-function-bind": "6.22.0", + "babel-preset-stage-1": "6.24.1" + } + }, "babel-preset-stage-1": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-preset-stage-1/-/babel-preset-stage-1-6.24.1.tgz", @@ -1720,28 +1795,6 @@ } } }, - "bonjour": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", - "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", - "dev": true, - "requires": { - "array-flatten": "2.1.1", - "deep-equal": "1.0.1", - "dns-equal": "1.0.0", - "dns-txt": "2.0.2", - "multicast-dns": "6.2.1", - "multicast-dns-service-types": "1.1.0" - }, - "dependencies": { - "array-flatten": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.1.tgz", - "integrity": "sha1-Qmu52oQJDBg42BLIFQryCoMx4pY=", - "dev": true - } - } - }, "boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", @@ -1977,12 +2030,6 @@ } } }, - "buffer-indexof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", - "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", - "dev": true - }, "buffer-xor": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", @@ -2182,6 +2229,7 @@ "requires": { "anymatch": "1.3.2", "async-each": "1.0.1", + "fsevents": "1.1.3", "glob-parent": "2.0.0", "inherits": "2.0.3", "is-binary-path": "1.0.1", @@ -3093,6 +3141,15 @@ "integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI=", "dev": true }, + "d": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", + "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", + "dev": true, + "requires": { + "es5-ext": "0.10.38" + } + }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", @@ -3265,31 +3322,6 @@ "randombytes": "2.0.5" } }, - "dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", - "dev": true - }, - "dns-packet": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.2.2.tgz", - "integrity": "sha512-kN+DjfGF7dJGUL7nWRktL9Z18t1rWP3aQlyZdY8XlpvU3Nc6GeFTQApftcjtWKxAZfiggZSGrCEoszNgvnpwDg==", - "dev": true, - "requires": { - "ip": "1.1.5", - "safe-buffer": "5.1.1" - } - }, - "dns-txt": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", - "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", - "dev": true, - "requires": { - "buffer-indexof": "1.1.1" - } - }, "doctrine": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.0.tgz", @@ -3716,11 +3748,81 @@ "is-symbol": "1.0.1" } }, + "es5-ext": { + "version": "0.10.38", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.38.tgz", + "integrity": "sha512-jCMyePo7AXbUESwbl8Qi01VSH2piY9s/a3rSU/5w/MlTIx8HPL1xn2InGN8ejt/xulcJgnTO7vqNtOAxzYd2Kg==", + "dev": true, + "requires": { + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1" + } + }, "es6-error": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==" }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.38", + "es6-symbol": "3.1.1" + } + }, + "es6-map": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", + "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.38", + "es6-iterator": "2.0.3", + "es6-set": "0.1.5", + "es6-symbol": "3.1.1", + "event-emitter": "0.3.5" + } + }, + "es6-set": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", + "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.38", + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1", + "event-emitter": "0.3.5" + } + }, + "es6-symbol": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.38" + } + }, + "es6-weak-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", + "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.38", + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1" + } + }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -3733,6 +3835,18 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, + "escope": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", + "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", + "dev": true, + "requires": { + "es6-map": "0.1.5", + "es6-weak-map": "2.0.2", + "esrecurse": "4.2.0", + "estraverse": "4.2.0" + } + }, "eslint": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.2.0.tgz", @@ -4101,12 +4215,28 @@ } } }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, "etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", "dev": true }, + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.38" + } + }, "event-stream": { "version": "3.3.4", "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", @@ -4162,6 +4292,34 @@ "merge": "1.2.0" } }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "4.1.1", + "shebang-command": "1.2.0", + "which": "1.3.0" + } + } + } + }, "exenv": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/exenv/-/exenv-1.2.2.tgz", @@ -4572,103 +4730,1013 @@ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, - "fstream": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", - "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.6.1" - } - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "function.prototype.name": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.0.3.tgz", - "integrity": "sha512-5EblxZUdioXi2JiMZ9FUbwYj40eQ9MFHyzFLBSPdlRl3SO8l7SLWuAnQ/at/1Wi4hjJwME/C5WpF2ZfAc8nGNw==", - "dev": true, - "requires": { - "define-properties": "1.1.2", - "function-bind": "1.1.1", - "is-callable": "1.1.3" - } - }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "dev": true, - "requires": { - "aproba": "1.2.0", - "console-control-strings": "1.1.0", - "has-unicode": "2.0.1", - "object-assign": "4.1.0", - "signal-exit": "3.0.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wide-align": "1.1.2" - } - }, - "gaze": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.2.tgz", - "integrity": "sha1-hHIkZ3rbiHDWeSV+0ziP22HkAQU=", - "dev": true, - "requires": { - "globule": "1.2.0" - } - }, - "generate-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", - "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", - "dev": true - }, - "generate-object-property": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", - "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", - "dev": true, - "requires": { - "is-property": "1.0.2" - } - }, - "get-caller-file": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", - "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", - "dev": true - }, - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", - "dev": true - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "fsevents": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz", + "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==", "dev": true, + "optional": true, "requires": { - "assert-plus": "1.0.0" + "nan": "2.7.0", + "node-pre-gyp": "0.6.39" }, "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "abbrev": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "ajv": { + "version": "4.11.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, "dev": true - } - } + }, + "aproba": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.2.9" + } + }, + "asn1": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "assert-plus": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws-sign2": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws4": { + "version": "1.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "balanced-match": { + "version": "0.4.2", + "bundled": true, + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "block-stream": { + "version": "0.0.9", + "bundled": true, + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "boom": { + "version": "2.10.1", + "bundled": true, + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "brace-expansion": { + "version": "1.1.7", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "0.4.2", + "concat-map": "0.0.1" + } + }, + "buffer-shims": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "caseless": { + "version": "0.12.0", + "bundled": true, + "dev": true, + "optional": true + }, + "co": { + "version": "4.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "combined-stream": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "cryptiles": { + "version": "2.0.5", + "bundled": true, + "dev": true, + "requires": { + "boom": "2.10.1" + } + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "debug": { + "version": "2.6.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.4.2", + "bundled": true, + "dev": true, + "optional": true + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "extend": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "extsprintf": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true, + "dev": true, + "optional": true + }, + "form-data": { + "version": "2.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.15" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "fstream": { + "version": "1.0.11", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.1" + } + }, + "fstream-ignore": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fstream": "1.0.11", + "inherits": "2.0.3", + "minimatch": "3.0.4" + } + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "1.1.1", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + } + }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true, + "dev": true + }, + "har-schema": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "har-validator": { + "version": "4.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "hawk": { + "version": "3.1.3", + "bundled": true, + "dev": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hoek": { + "version": "2.16.3", + "bundled": true, + "dev": true + }, + "http-signature": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.0", + "sshpk": "1.13.0" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.4", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "jodid25519": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "jsonify": { + "version": "0.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "jsprim": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.0.2", + "json-schema": "0.2.3", + "verror": "1.3.6" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "mime-db": { + "version": "1.27.0", + "bundled": true, + "dev": true + }, + "mime-types": { + "version": "2.1.15", + "bundled": true, + "dev": true, + "requires": { + "mime-db": "1.27.0" + } + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "node-pre-gyp": { + "version": "0.6.39", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "1.0.2", + "hawk": "3.1.3", + "mkdirp": "0.5.1", + "nopt": "4.0.1", + "npmlog": "4.1.0", + "rc": "1.2.1", + "request": "2.81.0", + "rimraf": "2.6.1", + "semver": "5.3.0", + "tar": "2.2.1", + "tar-pack": "3.4.0" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1.1.0", + "osenv": "0.1.4" + } + }, + "npmlog": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "performance-now": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "1.0.7", + "bundled": true, + "dev": true + }, + "punycode": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true + }, + "qs": { + "version": "6.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.2.9", + "bundled": true, + "dev": true, + "requires": { + "buffer-shims": "1.0.0", + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "1.0.1", + "util-deprecate": "1.0.2" + } + }, + "request": { + "version": "2.81.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.15", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.0.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.2", + "tunnel-agent": "0.6.0", + "uuid": "3.0.1" + } + }, + "rimraf": { + "version": "2.6.1", + "bundled": true, + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "safe-buffer": { + "version": "5.0.1", + "bundled": true, + "dev": true + }, + "semver": { + "version": "5.3.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sntp": { + "version": "1.0.9", + "bundled": true, + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "sshpk": { + "version": "1.13.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jodid25519": "1.0.2", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "stringstream": { + "version": "0.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "2.2.1", + "bundled": true, + "dev": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } + }, + "tar-pack": { + "version": "3.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "2.6.8", + "fstream": "1.0.11", + "fstream-ignore": "1.0.5", + "once": "1.4.0", + "readable-stream": "2.2.9", + "rimraf": "2.6.1", + "tar": "2.2.1", + "uid-number": "0.0.6" + } + }, + "tough-cookie": { + "version": "2.3.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "dev": true, + "optional": true + }, + "uid-number": { + "version": "0.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "uuid": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "verror": { + "version": "1.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "extsprintf": "1.0.2" + } + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + } + } + }, + "fstream": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", + "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.1" + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "function.prototype.name": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.0.3.tgz", + "integrity": "sha512-5EblxZUdioXi2JiMZ9FUbwYj40eQ9MFHyzFLBSPdlRl3SO8l7SLWuAnQ/at/1Wi4hjJwME/C5WpF2ZfAc8nGNw==", + "dev": true, + "requires": { + "define-properties": "1.1.2", + "function-bind": "1.1.1", + "is-callable": "1.1.3" + } + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "requires": { + "aproba": "1.2.0", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.0", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + } + }, + "gaze": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.2.tgz", + "integrity": "sha1-hHIkZ3rbiHDWeSV+0ziP22HkAQU=", + "dev": true, + "requires": { + "globule": "1.2.0" + } + }, + "generate-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", + "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", + "dev": true + }, + "generate-object-property": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", + "dev": true, + "requires": { + "is-property": "1.0.2" + } + }, + "get-caller-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "dev": true + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } }, "glob": { "version": "7.1.2", @@ -5037,19 +6105,6 @@ "xtend": "4.0.1" } }, - "history": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/history/-/history-4.7.2.tgz", - "integrity": "sha512-1zkBRWW6XweO0NBcjiphtVJVsIQ+SXF29z9DVkceeaSLVMFXHool+fdCZD4spDCfZJCILPILc3bm7Bc+HRi0nA==", - "dev": true, - "requires": { - "invariant": "2.2.2", - "loose-envify": "1.3.1", - "resolve-pathname": "2.2.0", - "value-equal": "0.4.0", - "warning": "3.0.0" - } - }, "hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", @@ -5335,16 +6390,6 @@ "integrity": "sha1-IAgH8Rqw9ycQ6khVQt4IgHX2jNI=", "dev": true }, - "import-local": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-0.1.1.tgz", - "integrity": "sha1-sReVcqrNwRxqkQCftDDbyrX2aKg=", - "dev": true, - "requires": { - "pkg-dir": "2.0.0", - "resolve-cwd": "2.0.0" - } - }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -5447,15 +6492,6 @@ } } }, - "internal-ip": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-1.2.0.tgz", - "integrity": "sha1-rp+/k7mEh4eF1QqN4bNWlWBYz1w=", - "dev": true, - "requires": { - "meow": "3.7.0" - } - }, "interpret": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.4.tgz", @@ -5476,12 +6512,6 @@ "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", "dev": true }, - "ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", - "dev": true - }, "ipaddr.js": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.5.2.tgz", @@ -5804,12 +6834,6 @@ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.1.tgz", "integrity": "sha1-MQ23D3QtJZoWo2kgK1GvhCMzENk=" }, - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", - "dev": true - }, "isarray": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", @@ -7105,12 +8129,6 @@ "integrity": "sha1-HoBFQlABjbrUw/6USX1uZ7YmnHc=", "dev": true }, - "killable": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.0.tgz", - "integrity": "sha1-2ouEvUfeU5WHj5XWTQLyRJ/gXms=", - "dev": true - }, "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", @@ -7431,12 +8449,6 @@ "integrity": "sha1-euTsJXMC/XkNVXyxDJcQDYV7AFY=", "dev": true }, - "loglevel": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.0.tgz", - "integrity": "sha1-rgyqVhERSYxboTcj1vtjHSQAOTQ=", - "dev": true - }, "longest": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", @@ -7564,6 +8576,14 @@ } } }, + "material-ui-icons": { + "version": "1.0.0-beta.17", + "resolved": "https://registry.npmjs.org/material-ui-icons/-/material-ui-icons-1.0.0-beta.17.tgz", + "integrity": "sha1-XxmvVKLZnu7zR6VUFKaFPhyFDcM=", + "requires": { + "recompose": "0.26.0" + } + }, "math-expression-evaluator": { "version": "1.2.17", "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz", @@ -7609,6 +8629,15 @@ "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", "dev": true }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "dev": true, + "requires": { + "mimic-fn": "1.1.0" + } + }, "memory-fs": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", @@ -7832,22 +8861,6 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, - "multicast-dns": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.1.tgz", - "integrity": "sha512-uV3/ckdsffHx9IrGQrx613mturMdMqQ06WTq+C09NsStJ9iNG6RcUWgPKs1Rfjy+idZT6tfQoXEusGNnEZhT3w==", - "dev": true, - "requires": { - "dns-packet": "1.2.2", - "thunky": "0.1.0" - } - }, - "multicast-dns-service-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", - "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", - "dev": true - }, "mute-stream": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", @@ -7905,12 +8918,6 @@ "is-stream": "1.1.0" } }, - "node-forge": { - "version": "0.6.33", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.6.33.tgz", - "integrity": "sha1-RjgRh59XPUUVWtap9D3ClujoXrw=", - "dev": true - }, "node-gyp": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.6.2.tgz", @@ -8375,6 +9382,15 @@ } } }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "2.0.1" + } + }, "npmlog": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", @@ -8696,6 +9712,12 @@ "object-assign": "4.1.0" } }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, "p-limit": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", @@ -8811,6 +9833,22 @@ "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", "dev": true }, + "path": { + "version": "0.12.7", + "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", + "integrity": "sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=", + "requires": { + "process": "0.11.10", + "util": "0.10.3" + }, + "dependencies": { + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" + } + } + }, "path-browserify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", @@ -8839,12 +9877,24 @@ "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", "dev": true }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, "path-parse": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", "dev": true }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, "path-type": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", @@ -11442,36 +12492,6 @@ } } }, - "react-hot-loader": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/react-hot-loader/-/react-hot-loader-3.1.3.tgz", - "integrity": "sha512-d7nZf78irxoGN5PY4zd6CSgZiroOhvIWzRast3qwTn4sSnBwlt08kV8WMQ9mitmxEdlCTwZt+5ClrRSjxWguMQ==", - "dev": true, - "requires": { - "global": "4.3.2", - "react-deep-force-update": "2.1.1", - "react-proxy": "3.0.0-alpha.1", - "redbox-react": "1.5.0", - "source-map": "0.6.1" - }, - "dependencies": { - "react-deep-force-update": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/react-deep-force-update/-/react-deep-force-update-2.1.1.tgz", - "integrity": "sha1-jqQmPNZFWgULN0RbPwj9g52G6Qk=", - "dev": true - }, - "react-proxy": { - "version": "3.0.0-alpha.1", - "resolved": "https://registry.npmjs.org/react-proxy/-/react-proxy-3.0.0-alpha.1.tgz", - "integrity": "sha1-RABCa8+oDKpnJMd1VpUxUgn6Swc=", - "dev": true, - "requires": { - "lodash": "4.17.4" - } - } - } - }, "react-input-autosize": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/react-input-autosize/-/react-input-autosize-2.0.1.tgz", @@ -12257,35 +13277,12 @@ "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", "dev": true }, - "resolve-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", - "dev": true, - "requires": { - "resolve-from": "3.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true - } - } - }, "resolve-from": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", "dev": true }, - "resolve-pathname": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-2.2.0.tgz", - "integrity": "sha512-bAFz9ld18RzJfddgrO2e/0S2O81710++chRMUxHjXOYKF6jTAMrUNZrEZ1PvV0zlhfjidm08iRPdTLPno1FuRg==", - "dev": true - }, "resp-modifier": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/resp-modifier/-/resp-modifier-6.0.2.tgz", @@ -12540,15 +13537,6 @@ "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", "dev": true }, - "selfsigned": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.1.tgz", - "integrity": "sha1-v4y3uDJWxFUeMTR8YxF3jbme7FI=", - "dev": true, - "requires": { - "node-forge": "0.6.33" - } - }, "semver": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", @@ -12973,31 +13961,6 @@ } } }, - "sockjs-client": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.4.tgz", - "integrity": "sha1-W6vjhrd15M8U51IJEUUmVAFsixI=", - "dev": true, - "requires": { - "debug": "2.6.9", - "eventsource": "0.1.6", - "faye-websocket": "0.11.1", - "inherits": "2.0.3", - "json3": "3.3.2", - "url-parse": "1.2.0" - }, - "dependencies": { - "faye-websocket": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", - "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", - "dev": true, - "requires": { - "websocket-driver": "0.7.0" - } - } - } - }, "sort-keys": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", @@ -13014,9 +13977,9 @@ "dev": true }, "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, "source-map-support": { @@ -13292,6 +14255,12 @@ "is-utf8": "0.2.1" } }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, "strip-indent": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", @@ -13574,12 +14543,6 @@ "xtend": "4.0.1" } }, - "thunky": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-0.1.0.tgz", - "integrity": "sha1-vzAUaCTituZ7Dy16Ssi+smkIaE4=", - "dev": true - }, "timers-browserify": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.4.tgz", @@ -13770,6 +14733,65 @@ "dev": true, "optional": true }, + "uglifyjs-webpack-plugin": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz", + "integrity": "sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=", + "dev": true, + "requires": { + "source-map": "0.5.7", + "uglify-js": "2.8.29", + "webpack-sources": "1.0.1" + }, + "dependencies": { + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + } + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "dev": true, + "requires": { + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + } + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "dev": true + }, + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true + }, + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } + } + } + }, "ultron": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", @@ -13905,7 +14927,6 @@ "version": "0.10.3", "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, "requires": { "inherits": "2.0.1" }, @@ -13913,8 +14934,7 @@ "inherits": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" } } }, @@ -13987,12 +15007,6 @@ "spdx-expression-parse": "1.0.4" } }, - "value-equal": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-0.4.0.tgz", - "integrity": "sha512-x+cYdNnaA3CxvMaTX0INdTCN8m8aF2uY9BvEqmxuYp8bL09cs/kWVQPVGcA35fMktdOsP69IgU7wFj/61dJHEw==", - "dev": true - }, "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -14094,155 +15108,175 @@ "dev": true }, "webpack": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-2.6.1.tgz", - "integrity": "sha1-LgRX8KuxrF3zqxBsacZy8jZ4Xwc=", + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.10.0.tgz", + "integrity": "sha512-fxxKXoicjdXNUMY7LIdY89tkJJJ0m1Oo8PQutZ5rLgWbV5QVKI15Cn7+/IHnRTd3vfKfiwBx6SBqlorAuNA8LA==", "dev": true, "requires": { "acorn": "5.1.2", "acorn-dynamic-import": "2.0.2", - "ajv": "4.11.8", - "ajv-keywords": "1.5.1", - "async": "2.5.0", + "ajv": "5.2.3", + "ajv-keywords": "2.1.0", + "async": "2.6.0", "enhanced-resolve": "3.4.1", + "escope": "3.6.0", "interpret": "1.0.4", "json-loader": "0.5.4", "json5": "0.5.1", "loader-runner": "2.3.0", - "loader-utils": "0.2.17", + "loader-utils": "1.1.0", "memory-fs": "0.4.1", "mkdirp": "0.5.1", "node-libs-browser": "2.0.0", "source-map": "0.5.7", - "supports-color": "3.2.3", + "supports-color": "4.4.0", "tapable": "0.2.8", - "uglify-js": "2.8.29", + "uglifyjs-webpack-plugin": "0.4.6", "watchpack": "1.4.0", - "webpack-sources": "0.2.3", - "yargs": "6.4.0" + "webpack-sources": "1.0.1", + "yargs": "8.0.2" }, - "dependencies": { - "ajv": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", "dev": true, "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" + "lodash": "4.17.4" } }, - "ajv-keywords": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", - "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", "dev": true }, - "async": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", - "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==", + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", "dev": true, "requires": { - "lodash": "4.17.4" + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" } }, - "cliui": { + "os-locale": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", "dev": true, "requires": { - "center-align": "0.1.3", - "right-align": "0.1.3", - "wordwrap": "0.0.2" + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" } }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "loader-utils": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", - "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", "dev": true, "requires": { - "big.js": "3.2.0", - "emojis-list": "2.1.0", - "json5": "0.5.1", - "object-assign": "4.1.0" + "pify": "2.3.0" } }, - "source-list-map": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-1.1.2.tgz", - "integrity": "sha1-mIkBnRAkzOVc3AaUmDN+9hhqEaE=", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "2.0.0", + "normalize-package-data": "2.4.0", + "path-type": "2.0.0" + } }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", "dev": true, "requires": { - "has-flag": "1.0.0" + "find-up": "2.1.0", + "read-pkg": "2.0.0" } }, - "uglify-js": { - "version": "2.8.29", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { - "source-map": "0.5.7", - "uglify-to-browserify": "1.0.2", - "yargs": "3.10.0" - }, - "dependencies": { - "yargs": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", - "dev": true, - "requires": { - "camelcase": "1.2.1", - "cliui": "2.1.0", - "decamelize": "1.2.0", - "window-size": "0.1.0" - } - } + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" } }, - "webpack-sources": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-0.2.3.tgz", - "integrity": "sha1-F8Yr+vE8cH+dAsR54Nzd6DgGl/s=", + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "source-list-map": "1.1.2", - "source-map": "0.5.7" + "ansi-regex": "3.0.0" } }, - "window-size": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", "dev": true }, - "wordwrap": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true + }, + "yargs": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", + "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", + "dev": true, + "requires": { + "camelcase": "4.1.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "read-pkg-up": "2.0.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "7.0.0" + } + }, + "yargs-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", + "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", + "dev": true, + "requires": { + "camelcase": "4.1.0" + } } } }, @@ -14552,69 +15586,30 @@ } }, "webpack-dev-server": { - "version": "2.9.4", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-2.9.4.tgz", - "integrity": "sha512-thrqC0EQEoSjXeYgP6pUXcUCZ+LNrKsDPn+mItLnn5VyyNZOJKd06hUP5vqkYwL8nWWXsii0loSF9NHNccT6ow==", + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-2.4.5.tgz", + "integrity": "sha1-MThM6BE2vhCAtLTN4OubkOVO5s8=", "dev": true, "requires": { "ansi-html": "0.0.7", - "array-includes": "3.0.3", - "bonjour": "3.5.0", "chokidar": "1.7.0", "compression": "1.7.1", "connect-history-api-fallback": "1.3.0", - "debug": "3.1.0", - "del": "3.0.0", "express": "4.16.2", "html-entities": "1.2.1", "http-proxy-middleware": "0.17.4", - "import-local": "0.1.1", - "internal-ip": "1.2.0", - "ip": "1.1.5", - "killable": "1.0.0", - "loglevel": "1.6.0", - "opn": "5.1.0", + "opn": "4.0.2", "portfinder": "1.0.13", - "selfsigned": "1.10.1", "serve-index": "1.8.0", "sockjs": "0.3.18", - "sockjs-client": "1.1.4", + "sockjs-client": "1.1.2", "spdy": "3.4.7", "strip-ansi": "3.0.1", - "supports-color": "4.4.0", + "supports-color": "3.2.3", "webpack-dev-middleware": "1.11.0", - "yargs": "6.6.0" + "yargs": "6.4.0" }, "dependencies": { - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true - }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "del": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", - "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", - "dev": true, - "requires": { - "globby": "6.1.0", - "is-path-cwd": "1.0.0", - "is-path-in-cwd": "1.0.0", - "p-map": "1.2.0", - "pify": "3.0.0", - "rimraf": "2.6.1" - } - }, "express": { "version": "4.16.2", "resolved": "https://registry.npmjs.org/express/-/express-4.16.2.tgz", @@ -14651,17 +15646,15 @@ "type-is": "1.6.15", "utils-merge": "1.0.1", "vary": "1.1.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } + } + }, + "faye-websocket": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", + "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", + "dev": true, + "requires": { + "websocket-driver": "0.7.0" } }, "finalhandler": { @@ -14677,17 +15670,6 @@ "parseurl": "1.3.2", "statuses": "1.3.1", "unpipe": "1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } } }, "fresh": { @@ -14696,26 +15678,11 @@ "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", "dev": true }, - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "dev": true, - "requires": { - "array-union": "1.0.2", - "glob": "7.1.2", - "object-assign": "4.1.0", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true }, "http-errors": { "version": "1.6.2", @@ -14743,27 +15710,6 @@ "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", "dev": true }, - "opn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.1.0.tgz", - "integrity": "sha512-iPNl7SyM8L30Rm1sjGdLLheyHVw5YXVfi3SKWJzBI7efxRwHojfRFjwE/OLM6qp9xJYMgab8WicTU1cPoY+Hpg==", - "dev": true, - "requires": { - "is-wsl": "1.1.0" - } - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", - "dev": true - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, "qs": { "version": "6.5.1", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", @@ -14789,17 +15735,6 @@ "on-finished": "2.3.0", "range-parser": "1.2.0", "statuses": "1.3.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } } }, "serve-static": { @@ -14820,32 +15755,34 @@ "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", "dev": true }, + "sockjs-client": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.2.tgz", + "integrity": "sha1-8CEqhVDkyUaMjM6u79LjSTwDOtU=", + "dev": true, + "requires": { + "debug": "2.6.9", + "eventsource": "0.1.6", + "faye-websocket": "0.11.1", + "inherits": "2.0.3", + "json3": "3.3.2", + "url-parse": "1.2.0" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + }, "utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", "dev": true - }, - "yargs": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", - "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", - "dev": true, - "requires": { - "camelcase": "3.0.0", - "cliui": "3.2.0", - "decamelize": "1.2.0", - "get-caller-file": "1.0.2", - "os-locale": "1.4.0", - "read-pkg-up": "1.0.1", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "1.0.2", - "which-module": "1.0.0", - "y18n": "3.2.1", - "yargs-parser": "4.2.1" - } } } }, diff --git a/package.json b/package.json index 5756de54d..517060be2 100644 --- a/package.json +++ b/package.json @@ -6,14 +6,15 @@ "npm": ">=5" }, "scripts": { - "build": "webpack --config src/webpack.production.config.js", + "build": "npm run clean && webpack --config webpackConfigs/webpack.production.config.js", "clean": "rimraf src/build/*", - "client": "babel-node src/webPackServerApp.js", - "dev": "NODE_ENV=development npm run client && concurrently --kill-others " + "client": "babel-node webpackConfigs/webPackServerApp.js", + "dev": "NODE_ENV=development npm run client && concurrently --kill-others" }, "author": "", "license": "MIT", "dependencies": { + "history": "^4.6.0", "localforage": "^1.5.6", "lodash": "^4.17.4", "material-ui": "^1.0.0-beta.29", @@ -69,7 +70,6 @@ "eslint-watch": "3.1.2", "extract-text-webpack-plugin": "3.0.0-rc.2", "file-loader": "0.11.2", - "history": "^4.6.0", "html-webpack-harddisk-plugin": "^0.1.0", "html-webpack-plugin": "2.29.0", "http-proxy-middleware": "^0.17.4", diff --git a/src/componets/ChatListItem/ChatListItem.js b/src/componets/ChatListItem/ChatListItem.js new file mode 100644 index 000000000..85fe0027d --- /dev/null +++ b/src/componets/ChatListItem/ChatListItem.js @@ -0,0 +1,39 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { withStyles } from 'material-ui/styles'; +import List, { ListItem, ListItemText } from 'material-ui/List'; +import Avatar from 'material-ui/Avatar'; +import ImageIcon from 'material-ui-icons/Image'; +import WorkIcon from 'material-ui-icons/Work'; +import BeachAccessIcon from 'material-ui-icons/BeachAccess'; + +const styles = theme => ({ + root: { + width: '100%', + maxWidth: 360, + backgroundColor: theme.palette.background.paper, + }, +}); + +function ChatListItem(props) { + const { classes, data } = props; + return ( +
+ + + + + + + + +
+ ); +} + +ChatListItem.propTypes = { + classes: PropTypes.object.isRequired, + data: PropTypes.object.isRequired +}; + +export default withStyles(styles)(ChatListItem); \ No newline at end of file diff --git a/src/componets/PaperWithDrop/PaperWithDrop.js b/src/componets/PaperWithDrop/PaperWithDrop.js new file mode 100644 index 000000000..63c61e60d --- /dev/null +++ b/src/componets/PaperWithDrop/PaperWithDrop.js @@ -0,0 +1,53 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { withStyles } from 'material-ui/styles'; +import { Paper } from 'material-ui'; +import Button from 'material-ui/Button'; +import ExpandMore from 'material-ui-icons/ExpandMore'; + +const styles = { + item: { + borderRadius: '8px' + }, + button: { + padding: 0, + minHeight: 25, + borderRadius: '0 0 8px 8px', + background: '#34373c' + }, + itemLabel: { + margin: '0 0 5px', + fontSize: 14, + lineHeight: 1.2, + color: '#777777' + } +}; + +class PaperWithDrop extends React.Component { + state = {}; + + render() { + const { classes, data } = this.props; + + return ( +
+

Lorem ipsum...

+ + { + data + } + + +
+ ); + } +} + +PaperWithDrop.propTypes = { + classes: PropTypes.object.isRequired, + data: PropTypes.array.isRequired +}; + +export default withStyles(styles)(PaperWithDrop); \ No newline at end of file diff --git a/src/componets/index.js b/src/componets/index.js index 7599cbfe9..cad57d167 100644 --- a/src/componets/index.js +++ b/src/componets/index.js @@ -1,5 +1,7 @@ import LogoIcon from './SvgIcons/LogoIcon/LogoIcon'; +import ChatListItem from './ChatListItem/ChatListItem'; export { LogoIcon, + ChatListItem }; \ No newline at end of file diff --git a/src/containers/ActionMenu/ActionMenu.js b/src/containers/ActionMenu/ActionMenu.js index f885507c3..e357762d1 100644 --- a/src/containers/ActionMenu/ActionMenu.js +++ b/src/containers/ActionMenu/ActionMenu.js @@ -10,22 +10,52 @@ import FolderIcon from 'material-ui-icons/Folder'; import Divider from 'material-ui/Divider'; import {Link} from 'react-router'; import Grid from 'material-ui/Grid'; -import {CallsIcon, ChatIcon, GroupsIcon, ContactsIcon, OptionsIcon} from '../../componets/SvgIcons/index' +import {CallsIcon, ChatIcon, GroupsIcon, ContactsIcon, OptionsIcon} from '../../componets/SvgIcons/index'; +import { LogoIcon } from '../../componets/index'; const styles = theme => ({ root: { - flexGrow: 1, - maxWidth: 120, + position: 'fixed', + top: 0, + left: 0, + zIndex: 11, + width: 80, + margin: 0, + height: '100vh', + background: '#27292e', + boxShadow: '0 0 16px 0 #000' + }, + logo: { + height: 64, + background: 'linear-gradient(to top, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.55) 100%)' + }, + logoDevider: { + backgroundColor: '#be0211' }, demo: { - backgroundColor: theme.palette.background.paper, + // backgroundColor: theme.palette.background.paper }, menu: { - height:'100%', + height: '100%', }, title: { margin: `${theme.spacing.unit * 4}px 0 ${theme.spacing.unit * 2}px`, }, + item: { + flexWrap: 'wrap' + }, + itemLink: { + display: 'block', + marginRight: 0, + width: '100%', + height: 'auto', + textAlign: 'center' + }, + name: { + padding: 0, + fontSize: 12, + textAlign: 'center' + } }); @@ -41,56 +71,50 @@ class LeftMenu extends React.Component { return (
-
- - - - - - - - - - - - - - - - - - - - - +
+ + + +
+ +
+ + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + + + + + + + - -
+ + + + + + +
+
); } diff --git a/src/containers/ActivityList/ActivityList.js b/src/containers/ActivityList/ActivityList.js index aa84fbb01..3cee1cee7 100644 --- a/src/containers/ActivityList/ActivityList.js +++ b/src/containers/ActivityList/ActivityList.js @@ -4,21 +4,25 @@ import { withStyles } from 'material-ui/styles'; import Drawer from 'material-ui/Drawer'; import Button from 'material-ui/Button'; import List from 'material-ui/List'; - +import { ChatListItem } from '../../componets'; const styles = { list: { - width: 250, + width: '100%', }, listFull: { width: 'auto', }, + paper:{ + top:'auto', + position:'unset' + } }; class ActivityList extends React.Component { state = { top: false, - left: false, + left: true, bottom: false, right: false, }; @@ -32,20 +36,34 @@ class ActivityList extends React.Component { render() { const { classes } = this.props; + const mockUsers = [{name:'John Smith'},{name:'John Smith2'},{name:'John Smith3'},{name:'John Smith4'},{name:'John Smith5'}]; + const sideList = (
- Contacts + + {mockUsers.map((item,index)=>( + + ))} +
); return (
- - +
{ + console.log('Clicked'); + }} onKeyDown={this.toggleDrawer('left', false)} > {sideList} diff --git a/src/containers/ChatModal/ChatModal.js b/src/containers/ChatModal/ChatModal.js new file mode 100644 index 000000000..e69de29bb diff --git a/src/containers/MenuAppBar/MenuAppBar.js b/src/containers/MenuAppBar/MenuAppBar.js index 08e4460cf..aff4b5b6a 100644 --- a/src/containers/MenuAppBar/MenuAppBar.js +++ b/src/containers/MenuAppBar/MenuAppBar.js @@ -8,15 +8,29 @@ import { Grid,Avatar, Input,InputAdornment } from 'material-ui'; import { withStyles } from 'material-ui/styles'; import avatar from '../../../assets/img/Richard_Smith.png'; import Icon from 'material-ui/Icon'; -import { LogoIcon } from '../../componets/index'; +import { Link } from 'react-router'; const styles = { root: { - width: '100%', + position: 'fixed', + top: 0, + left: 0, + zIndex: 10, + paddingLeft: 80, + width: '100%' + }, + appBar: { + background: '#24262b', + boxShadow: 'box-shadow: 0 2px 13px 0 #000' }, - title:{ textAlign:'center' + }, + toolBar: { + justifyContent: 'space-between' + }, + settings: { + display: 'flex' } }; @@ -29,16 +43,16 @@ class MenuAppBar extends React.Component { render() { const { classes } = this.props; - return ( + console.log('console',this.props.classes); + return (
- - - -
- DashBoard -
- - + + +
DashBoard
+
+ + +
diff --git a/src/containers/index.js b/src/containers/index.js index c51634bac..b96933967 100644 --- a/src/containers/index.js +++ b/src/containers/index.js @@ -1,9 +1,10 @@ import ActionMenu from './ActionMenu/ActionMenu'; import MenuAppBar from './MenuAppBar/MenuAppBar'; import ActivityList from './ActivityList/ActivityList'; - +import PaperWithDrop from './PaperWithDrop/PaperWithDrop' export { ActionMenu, MenuAppBar, - ActivityList + ActivityList, + PaperWithDrop } \ No newline at end of file diff --git a/src/index.html b/src/index.html index 1630bfc65..0f152d13d 100644 --- a/src/index.html +++ b/src/index.html @@ -1,7 +1,9 @@ - + + +
- + diff --git a/src/modules/Chats/Chats.js b/src/modules/Chats/Chats.js index 1adc3fdb5..7c0176e91 100644 --- a/src/modules/Chats/Chats.js +++ b/src/modules/Chats/Chats.js @@ -1,9 +1,12 @@ import React, { PureComponent } from 'react'; - +import { ActivityList } from './../../containers'; export default class Chats extends PureComponent { render() { return ( -
+
+ + hdfghdfghd +
); } } diff --git a/src/modules/Dashboard/Dashboard.js b/src/modules/Dashboard/Dashboard.js index 260c29421..e0ab65b5f 100644 --- a/src/modules/Dashboard/Dashboard.js +++ b/src/modules/Dashboard/Dashboard.js @@ -1,9 +1,26 @@ import React, { PureComponent } from 'react'; +import { PaperWithDrop } from '../../containers'; +import {ChatListItem} from '../../componets'; +import { List } from 'material-ui' ; export default class Dashboard extends PureComponent { render() { + const mockUsers = [{name:'John Smith'},{name:'John Smith2'},{name:'John Smith3'},{name:'John Smith4'},{name:'John Smith5'}] + let sideList = []; + + mockUsers.map((item,index)=>( + sideList.push( + + + + + )) + ); + return ( -
+
+ +
); } } diff --git a/src/pages/App/App.js b/src/pages/App/App.js index 67200d885..daaa8dd07 100644 --- a/src/pages/App/App.js +++ b/src/pages/App/App.js @@ -19,7 +19,10 @@ export default class App extends Component { render() { const theme = createMuiTheme({ palette: { - type:'dark' + type:'dark', + primary: { + main: '#1b1c20' + } }, }); console.log(theme); diff --git a/src/pages/NinjaApp/NinjaApp.js b/src/pages/NinjaApp/NinjaApp.js index 8492da191..93b9a8b3a 100644 --- a/src/pages/NinjaApp/NinjaApp.js +++ b/src/pages/NinjaApp/NinjaApp.js @@ -3,14 +3,28 @@ import React, { Component, PropTypes } from 'react'; import { connect, dispatch } from 'react-redux'; import { MenuAppBar,ActionMenu } from '../../containers'; import {Grid} from 'material-ui'; +import {withStyles} from 'material-ui/styles'; -export default class Dashboard extends Component { +const styles = theme => ({ + wrapper: { + padding: '73px 0 0 107px', + minHeight: '100vh', + background: theme.palette.primary.main + }, + item: { + marginRight: 8, + width: 'calc(33.33% - 16px)' + } +}) + +export class Dashboard extends Component { constructor(props) { super(props); } static propTypes = { + classes: PropTypes.object.isRequired }; componentWillMount(){ @@ -23,15 +37,30 @@ export default class Dashboard extends Component { render() { console.log(this.props) + const { classes } = this.props; return ( -
- +
+ + -
- { this.renderChildren(this.props.children, {}) } -
+ +
+ { this.renderChildren(this.props.children, {}) } + { this.renderChildren(this.props.children, {}) } +
+
+ +
+ { this.renderChildren(this.props.children, {}) } +
+
+ +
+ { this.renderChildren(this.props.children, {}) } +
+
@@ -40,4 +69,4 @@ export default class Dashboard extends Component { } } - +export default withStyles(styles)(Dashboard) diff --git a/src/root.js b/src/root.js index 0118dee1a..856620694 100644 --- a/src/root.js +++ b/src/root.js @@ -9,7 +9,7 @@ import { connecting } from './core/resource/Init.resource' class Root extends Component { componentDidMount() { let t = new Date(); - this.props.store.dispatch(connecting(t)) + // this.props.store.dispatch(connecting(t)) } render() { const { store } = this.props; diff --git a/src/webPackServerApp.js b/webpackConfigs/webPackServerApp.js similarity index 91% rename from src/webPackServerApp.js rename to webpackConfigs/webPackServerApp.js index 70a62bda5..3da2d9661 100644 --- a/src/webPackServerApp.js +++ b/webpackConfigs/webPackServerApp.js @@ -5,9 +5,9 @@ import WebpackCompiler from "./webpack-compiler"; let client = new WebpackDevServer(WebpackCompiler, { contentBase: "build/", historyApiFallback: true, - hot: true, + hotOnly: true, inline: true, - stats: { + stats: { colors: true } }) diff --git a/src/webpack-compiler.js b/webpackConfigs/webpack-compiler.js similarity index 91% rename from src/webpack-compiler.js rename to webpackConfigs/webpack-compiler.js index 9b6a51d8a..6c6970966 100644 --- a/src/webpack-compiler.js +++ b/webpackConfigs/webpack-compiler.js @@ -1,16 +1,16 @@ const HtmlWebpackPlugin = require('html-webpack-plugin'); const webpack = require('webpack'); const path = require('path'); -const vendors = require('./vendors'); +const vendors = require('../src/vendors'); var ROOT_PATH = path.resolve(__dirname); -var APP_PATH = path.resolve(ROOT_PATH); -var BUILD_PATH = path.resolve(ROOT_PATH, 'build'); +var APP_PATH = path.resolve(ROOT_PATH,'../src'); +var BUILD_PATH = path.resolve(ROOT_PATH, '../build'); export default webpack({ entry: { vendor: [...vendors], - app: `${APP_PATH}` + app: `${APP_PATH}/index.js` }, output: { path: BUILD_PATH, @@ -77,7 +77,7 @@ export default webpack({ }, plugins: [ new HtmlWebpackPlugin({ - template: `${ROOT_PATH}/index.html` + template: `${APP_PATH}/index.html` }), new webpack.optimize.CommonsChunkPlugin({ names: ['vendor', 'manifest'], diff --git a/src/webpack.production.config.js b/webpackConfigs/webpack.production.config.js similarity index 88% rename from src/webpack.production.config.js rename to webpackConfigs/webpack.production.config.js index 93791f532..653d27789 100644 --- a/src/webpack.production.config.js +++ b/webpackConfigs/webpack.production.config.js @@ -1,17 +1,16 @@ const HtmlWebpackPlugin = require('html-webpack-plugin'); const webpack = require('webpack'); const path = require('path'); -const vendors = require('./vendors'); +const vendors = require('../src/vendors'); var ROOT_PATH = path.resolve(__dirname); -var APP_PATH = path.resolve(ROOT_PATH); -var BUILD_PATH = path.resolve(ROOT_PATH, 'build'); - +var APP_PATH = path.resolve(ROOT_PATH,'../src'); +var BUILD_PATH = path.resolve(ROOT_PATH, '../src/build'); +console.log(APP_PATH); module.exports = { entry: { vendor: [...vendors], - - app: `${APP_PATH}` + app: `${APP_PATH}/index.js` }, output: { path: BUILD_PATH, @@ -68,7 +67,7 @@ module.exports = { }, ], }, - { test: /\.(jpe?g|png|gif|svg)$/, + { test: /\.(jpe?g|png|gif|svg|ico)$/, use: [{ loader: 'file-loader?name=static/image/[name].[ext]' }, @@ -78,7 +77,7 @@ module.exports = { }, plugins: [ new HtmlWebpackPlugin({ - template: `${ROOT_PATH}/index.html` + template: `${APP_PATH}/index.html` }), new webpack.optimize.CommonsChunkPlugin({ names: ['vendor', 'manifest'], -- GitLab From e2dd3d11ae7648ee09cc108b88db22a2d99612b2 Mon Sep 17 00:00:00 2001 From: OlegPinchuk Date: Wed, 14 Feb 2018 13:48:11 +0200 Subject: [PATCH 3/4] merge to dev --- package.json | 1 + src/componets/ChatListItem/ChatListItem.js | 68 ++++++++++++++++---- src/componets/PaperWithDrop/PaperWithDrop.js | 2 +- src/componets/index.js | 4 +- src/containers/ChatModal/ChatModal.js | 22 +++++++ src/containers/index.js | 4 +- src/modules/Dashboard/Dashboard.js | 44 ++++++++++--- src/pages/App/App.js | 3 + src/pages/NinjaApp/NinjaApp.js | 29 ++------- 9 files changed, 128 insertions(+), 49 deletions(-) diff --git a/package.json b/package.json index 517060be2..43edf6cb5 100644 --- a/package.json +++ b/package.json @@ -31,6 +31,7 @@ "react-materialize": "^0.18.4", "react-redux": "^5.0.5", "react-redux-loading-bar": "^3.0.0", + "react-responsive-modal": "^2.0.0", "react-router": "^3.2.0", "react-router-navigation-prompt": "^1.5.5", "react-sanfona": "^0.4.0", diff --git a/src/componets/ChatListItem/ChatListItem.js b/src/componets/ChatListItem/ChatListItem.js index 85fe0027d..dabbea0f7 100644 --- a/src/componets/ChatListItem/ChatListItem.js +++ b/src/componets/ChatListItem/ChatListItem.js @@ -1,4 +1,4 @@ -import React from 'react'; +import React,{ Component} from 'react'; import PropTypes from 'prop-types'; import { withStyles } from 'material-ui/styles'; import List, { ListItem, ListItemText } from 'material-ui/List'; @@ -6,34 +6,76 @@ import Avatar from 'material-ui/Avatar'; import ImageIcon from 'material-ui-icons/Image'; import WorkIcon from 'material-ui-icons/Work'; import BeachAccessIcon from 'material-ui-icons/BeachAccess'; +import {ExpansionPanel, ExpansionPanelDetails, ExpansionPanelSummary, Typography} from "material-ui"; +import ListItemSecondaryAction from "material-ui/es/List/ListItemSecondaryAction"; +import Button from "material-ui/es/Button/Button"; const styles = theme => ({ root: { width: '100%', - maxWidth: 360, backgroundColor: theme.palette.background.paper, }, + panelContent:{ + margin: 0, + display: 'flow-root' + }, + panelRoot:{ + padding: 0 + }, + panelDetails:{ + background: '#1b1c20', + + }, + button: { + padding: 0, + marginRight:5, + minHeight: 25, + borderRadius: '4px', + fontSize: 10, + background: '#d8d8d8' + }, }); -function ChatListItem(props) { - const { classes, data } = props; +//TODO: Move Button as component +class ChatListItem extends Component { + constructor(props) { + super(props); + } + state = { + open: false, + }; + + render(){ + const { classes, data } = this.props; + const { open, handleOpenChat } = this.props; return (
- - - - - - - - + {this.setState({open: !this.state.open})}}> + + + + + + + + + + + + + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Culpa, earum! + +
); + } + } ChatListItem.propTypes = { classes: PropTypes.object.isRequired, - data: PropTypes.object.isRequired + data: PropTypes.object.isRequired, + handleOpenChat: PropTypes.func }; export default withStyles(styles)(ChatListItem); \ No newline at end of file diff --git a/src/componets/PaperWithDrop/PaperWithDrop.js b/src/componets/PaperWithDrop/PaperWithDrop.js index 63c61e60d..dc409f2ff 100644 --- a/src/componets/PaperWithDrop/PaperWithDrop.js +++ b/src/componets/PaperWithDrop/PaperWithDrop.js @@ -7,7 +7,7 @@ import ExpandMore from 'material-ui-icons/ExpandMore'; const styles = { item: { - borderRadius: '8px' + borderRadius: '8px', }, button: { padding: 0, diff --git a/src/componets/index.js b/src/componets/index.js index cad57d167..61066a021 100644 --- a/src/componets/index.js +++ b/src/componets/index.js @@ -1,7 +1,9 @@ import LogoIcon from './SvgIcons/LogoIcon/LogoIcon'; import ChatListItem from './ChatListItem/ChatListItem'; +import PaperWithDrop from './PaperWithDrop/PaperWithDrop'; export { LogoIcon, - ChatListItem + ChatListItem, + PaperWithDrop }; \ No newline at end of file diff --git a/src/containers/ChatModal/ChatModal.js b/src/containers/ChatModal/ChatModal.js index e69de29bb..8fa651e46 100644 --- a/src/containers/ChatModal/ChatModal.js +++ b/src/containers/ChatModal/ChatModal.js @@ -0,0 +1,22 @@ +import React from 'react'; +import Modal from 'react-responsive-modal'; +import { withStyles } from 'material-ui/styles' + + +export class ChatModal extends React.Component { + state = { + open: false, + }; + + + render() { + const { open, onCloseChat } = this.props; + return ( +
+ {onCloseChat()}} little> +

Simple centered modal

+
+
+ ); + } +} \ No newline at end of file diff --git a/src/containers/index.js b/src/containers/index.js index b96933967..35e157772 100644 --- a/src/containers/index.js +++ b/src/containers/index.js @@ -1,10 +1,10 @@ import ActionMenu from './ActionMenu/ActionMenu'; import MenuAppBar from './MenuAppBar/MenuAppBar'; import ActivityList from './ActivityList/ActivityList'; -import PaperWithDrop from './PaperWithDrop/PaperWithDrop' +import ChatModal from './ChatModal/ChatModal' export { ActionMenu, MenuAppBar, ActivityList, - PaperWithDrop + ChatModal } \ No newline at end of file diff --git a/src/modules/Dashboard/Dashboard.js b/src/modules/Dashboard/Dashboard.js index e0ab65b5f..d12220628 100644 --- a/src/modules/Dashboard/Dashboard.js +++ b/src/modules/Dashboard/Dashboard.js @@ -1,9 +1,30 @@ -import React, { PureComponent } from 'react'; -import { PaperWithDrop } from '../../containers'; +import React, { Component } from 'react'; +import PropTypes from 'prop-types'; +import { PaperWithDrop } from '../../componets'; import {ChatListItem} from '../../componets'; -import { List } from 'material-ui' ; +import { withStyles } from 'material-ui/styles' +import { List, Grid } from 'material-ui' ; +import {ChatModal} from "../../containers/ChatModal/ChatModal"; + +const styles = { + item: { + marginRight: 8, + width: 'calc(33.33% - 16px)' + } +} +export class Dashboard extends Component { + constructor(props) { + super(props); + + this.state ={ + openChat: false + } + } + + static propTypes = { + classes: PropTypes.object.isRequired + }; -export default class Dashboard extends PureComponent { render() { const mockUsers = [{name:'John Smith'},{name:'John Smith2'},{name:'John Smith3'},{name:'John Smith4'},{name:'John Smith5'}] let sideList = []; @@ -11,17 +32,24 @@ export default class Dashboard extends PureComponent { mockUsers.map((item,index)=>( sideList.push( - + {this.setState({openChat: !this.state.openChat})}}/> )) ); + const { classes } = this.props; + const { openChat } = this.state; return ( -
- -
+ + + + + this.setState({openChat: false})} /> + + ); } } +export default withStyles(styles)(Dashboard); \ No newline at end of file diff --git a/src/pages/App/App.js b/src/pages/App/App.js index daaa8dd07..7bd594e7c 100644 --- a/src/pages/App/App.js +++ b/src/pages/App/App.js @@ -22,6 +22,9 @@ export default class App extends Component { type:'dark', primary: { main: '#1b1c20' + }, + background:{ + paper: '#24262b' } }, }); diff --git a/src/pages/NinjaApp/NinjaApp.js b/src/pages/NinjaApp/NinjaApp.js index 93b9a8b3a..7a3fafa25 100644 --- a/src/pages/NinjaApp/NinjaApp.js +++ b/src/pages/NinjaApp/NinjaApp.js @@ -1,5 +1,5 @@ -import React, { Component, PropTypes } from 'react'; - +import React, { Component } from 'react'; +import PropTypes from 'prop-types'; import { connect, dispatch } from 'react-redux'; import { MenuAppBar,ActionMenu } from '../../containers'; import {Grid} from 'material-ui'; @@ -11,10 +11,7 @@ const styles = theme => ({ minHeight: '100vh', background: theme.palette.primary.main }, - item: { - marginRight: 8, - width: 'calc(33.33% - 16px)' - } + }) export class Dashboard extends Component { @@ -44,24 +41,8 @@ export class Dashboard extends Component { - - -
- { this.renderChildren(this.props.children, {}) } - { this.renderChildren(this.props.children, {}) } -
-
- -
- { this.renderChildren(this.props.children, {}) } -
-
- -
- { this.renderChildren(this.props.children, {}) } -
-
-
+ + { this.renderChildren(this.props.children, {}) }
-- GitLab From 14dc0737f745948fae1e6807e6e5242986aedacf Mon Sep 17 00:00:00 2001 From: OlegPinchuk Date: Wed, 14 Feb 2018 15:27:45 +0200 Subject: [PATCH 4/4] conflicts --- .gitignore | 2 +- package.json | 9 +++---- src/core/loggers/SentryError.logger | 10 +++++++ src/core/store/Configure.prod.store.js | 36 -------------------------- src/core/store/index.js | 4 ++- src/index.js | 2 +- src/modules/Home/Home.js | 2 +- webpackConfigs/webpack-compiler.js | 10 +++---- 8 files changed, 25 insertions(+), 50 deletions(-) create mode 100644 src/core/loggers/SentryError.logger delete mode 100644 src/core/store/Configure.prod.store.js diff --git a/.gitignore b/.gitignore index be2bec6a5..2360dc18f 100644 --- a/.gitignore +++ b/.gitignore @@ -12,7 +12,7 @@ ebin/ # Logs logs -*.log* +*.log # IDEA/Webstorm project files .idea diff --git a/package.json b/package.json index 43edf6cb5..2b811dbad 100644 --- a/package.json +++ b/package.json @@ -8,13 +8,13 @@ "scripts": { "build": "npm run clean && webpack --config webpackConfigs/webpack.production.config.js", "clean": "rimraf src/build/*", - "client": "babel-node webpackConfigs/webPackServerApp.js", - "dev": "NODE_ENV=development npm run client && concurrently --kill-others" + "client": "NODE_ENV=development babel-node webpackConfigs/webPackServerApp.js", + "dev": "npm run client && concurrently --kill-others" }, "author": "", "license": "MIT", "dependencies": { - "history": "^4.6.0", + "history": "^3.2.1", "localforage": "^1.5.6", "lodash": "^4.17.4", "material-ui": "^1.0.0-beta.29", @@ -127,8 +127,7 @@ "env": { "development": { "presets": [ - "env", - "react-hmre" + "env" ], "plugins": [ "transform-class-properties" diff --git a/src/core/loggers/SentryError.logger b/src/core/loggers/SentryError.logger new file mode 100644 index 000000000..6e39bd9de --- /dev/null +++ b/src/core/loggers/SentryError.logger @@ -0,0 +1,10 @@ +import Raven from 'raven-js'; + +export default ( + Raven + .config( + 'https://1febbedf16804e8eb4586fa445f8567c@sentry.io/253546', + { autoBreadcrumbs: false } + ) + .install() +); \ No newline at end of file diff --git a/src/core/store/Configure.prod.store.js b/src/core/store/Configure.prod.store.js deleted file mode 100644 index 2ce2fed13..000000000 --- a/src/core/store/Configure.prod.store.js +++ /dev/null @@ -1,36 +0,0 @@ -import { applyMiddleware, createStore, compose } from 'redux'; -import { createEpicMiddleware } from 'redux-observable'; -import trottle from 'lodash/throttle' -import * as StateManager from '../state/initital-state.manager'; - -function configureStore(rootReducer) { - let delayTime = 1000; - const epicMiddleware = createEpicMiddleware(epic); - - const initialState = Object.assign( - {}, - {options: StateManager.loadShim()}, - StateManager.loadState() - ); - - const middlewares = [ - reduxImmutableStateInvariant(), - epicMiddleware, - logger - ]; - - - const store = createStore(rootReducer, {}, compose( - applyMiddleware(...middlewares) - ) - ); - - store.subscribe(trottle(() => { - console.log(store.getState()); - StateManager.saveState(store.getState()); - }, delayTime)); - - return store; -} - -module.exports = configureStore; diff --git a/src/core/store/index.js b/src/core/store/index.js index 78bc3083f..99700df55 100644 --- a/src/core/store/index.js +++ b/src/core/store/index.js @@ -2,9 +2,11 @@ import { setupClientEntry, setupDevEntry } from './Browser.store'; import { incomeDB, outcomeDB } from './ConfigureBrowser.store'; import MqttLocaforageStore from './MqttLocaforage.store'; +console.log(process.env.NODE_ENV); + const configureStore = process.env.NODE_ENV === "development" ? require('./Configure.dev.store') - : require('./Configure.prod.store'); + : ''; const browserStorage = localStorage !== 'undefined' ? localStorage : outcomeDB; diff --git a/src/index.js b/src/index.js index d066a0443..0c537a1c0 100644 --- a/src/index.js +++ b/src/index.js @@ -5,7 +5,7 @@ import { render } from 'react-dom'; import Root from './root'; -import { devStore as configureStore } from './core/store' +import { configureStore } from './core/store' import Reboot from 'material-ui/Reboot'; require('./favicon.ico'); diff --git a/src/modules/Home/Home.js b/src/modules/Home/Home.js index a4e6ae36d..5b5c98d10 100644 --- a/src/modules/Home/Home.js +++ b/src/modules/Home/Home.js @@ -3,7 +3,7 @@ import React, { PureComponent } from 'react'; export default class Home extends PureComponent { render() { return ( -
+
HomePage
); } } diff --git a/webpackConfigs/webpack-compiler.js b/webpackConfigs/webpack-compiler.js index 6c6970966..1011b688a 100644 --- a/webpackConfigs/webpack-compiler.js +++ b/webpackConfigs/webpack-compiler.js @@ -84,11 +84,11 @@ export default webpack({ minChunks: Infinity, }), new webpack.NamedModulesPlugin(), - new webpack.DefinePlugin({ - __CLIENT__: true, - __DEVELOPMENT__: true, - __DEVTOOLS__: true // <-------- DISABLE redux-devtools here (btw, it causes initial double render!) - }), + new webpack.DefinePlugin({ + 'process.env': { + 'NODE_ENV': JSON.stringify(process.env.NODE_ENV) + } + }), ], resolve: { extensions: ['.js', '.json'], -- GitLab