From 36f6b8b8dc3178bf3d06f5956039cd552ce39088 Mon Sep 17 00:00:00 2001 From: flyingalex Date: Thu, 10 Jan 2019 20:36:23 +0800 Subject: [PATCH 1/8] change hot-reload to react-hot-loader and css-hot-loader --- .babelrc | 2 +- configs/webpack.config.js | 7 ++-- package.json | 3 ++ src/index.tsx | 5 +++ yarn.lock | 85 +++++++++++++++++++++++++++++++++++++-- 5 files changed, 95 insertions(+), 7 deletions(-) diff --git a/.babelrc b/.babelrc index 24b3f04..642df30 100644 --- a/.babelrc +++ b/.babelrc @@ -11,6 +11,6 @@ ], "plugins": [ ["import", {"libraryName": "antd-mobile", "style": true}], - "dva-hmr" + "react-hot-loader/babel" ] } diff --git a/configs/webpack.config.js b/configs/webpack.config.js index c4cbf44..b46fbfa 100644 --- a/configs/webpack.config.js +++ b/configs/webpack.config.js @@ -39,7 +39,7 @@ module.exports = argv => ({ { test: /\.css$/, use: [ - styleLoader(argv.mode), + MiniCssExtractPlugin.loader, 'css-loader', ], }, @@ -47,7 +47,8 @@ module.exports = argv => ({ { test: /\.module\.less$/, use: [ - styleLoader(argv.mode), + 'css-hot-loader', + MiniCssExtractPlugin.loader, { loader: 'css-loader', options: { @@ -62,7 +63,7 @@ module.exports = argv => ({ { test: /\.less$/, use: [ - styleLoader(argv.mode), + MiniCssExtractPlugin.loader, { loader: 'css-loader' }, { loader: 'less-loader', options: {modifyVars: theme }}, ], diff --git a/package.json b/package.json index cf59b82..44dadf3 100644 --- a/package.json +++ b/package.json @@ -18,10 +18,12 @@ "@babel/preset-env": "^7.2.0", "@babel/preset-react": "^7.0.0", "@types/jest": "^23.3.10", + "@types/webpack-env": "^1.13.6", "awesome-typescript-loader": "^5.2.1", "babel-loader": "^8.0.4", "babel-plugin-dva-hmr": "^0.4.1", "babel-plugin-import": "^1.11.0", + "css-hot-loader": "^1.4.3", "css-loader": "^1.0.1", "html-webpack-inline-source-plugin": "0.0.10", "html-webpack-plugin": "^3.2.0", @@ -32,6 +34,7 @@ "lint-staged": "^8.1.0", "mini-css-extract-plugin": "^0.4.5", "prettier": "^1.15.3", + "react-hot-loader": "^4.6.3", "redbox-react": "1.x", "style-loader": "^0.23.1", "ts-jest": "^23.10.5", diff --git a/src/index.tsx b/src/index.tsx index 1135714..c0cbfd8 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -3,6 +3,11 @@ import createHistory from 'history/createBrowserHistory'; const app = dva({ history: createHistory(), + onHmr: () => { + if (module.hot) { + module.hot.accept(); + } + }, }); import router from './router'; diff --git a/yarn.lock b/yarn.lock index 456ab30..3da8e16 100644 --- a/yarn.lock +++ b/yarn.lock @@ -771,6 +771,11 @@ "@types/prop-types" "*" csstype "^2.2.0" +"@types/webpack-env@^1.13.6": + version "1.13.6" + resolved "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.13.6.tgz#128d1685a7c34d31ed17010fc87d6a12c1de6976" + integrity sha512-5Th3OsZ4gTRdr9Mho83BQ23cex4sRhOR4XTG+m+cJc0FhtUBK9Vn62hBJ+pnQYnSxoPOsKoAPOx6FcphxBC8ng== + "@webassemblyjs/ast@1.7.11": version "1.7.11" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.7.11.tgz#b988582cafbb2b095e8b556526f30c90d057cace" @@ -2210,6 +2215,15 @@ css-animation@1.x, css-animation@^1.3.2: babel-runtime "6.x" component-classes "^1.2.5" +css-hot-loader@^1.4.3: + version "1.4.3" + resolved "https://registry.npmjs.org/css-hot-loader/-/css-hot-loader-1.4.3.tgz#69e8256ef85f2b3b3d89e37f7504c6e3431a70c9" + integrity sha512-akm6gN57sCirABQuT+BZIHWf/UZGX0y4zMnrbZIKOPyTdpg2+teP9kQ3StBi4d+bZbdJWGW78VmsgtXBYw4ukA== + dependencies: + loader-utils "^1.1.0" + lodash "^4.17.5" + normalize-url "^1.9.1" + css-loader@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-1.0.1.tgz#6885bb5233b35ec47b006057da01cc640b6b79fe" @@ -3062,7 +3076,7 @@ fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= -fast-levenshtein@~2.0.4: +fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.4: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= @@ -3431,7 +3445,7 @@ global-modules-path@^2.3.0: resolved "https://registry.yarnpkg.com/global-modules-path/-/global-modules-path-2.3.1.tgz#e541f4c800a1a8514a990477b267ac67525b9931" integrity sha512-y+shkf4InI7mPRHSo2b/k6ix6+NLDtyccYv86whhxrSGX9wjPX1VMITmrDbE1eh7zkzhiWtW2sHklJYoQ62Cxg== -global@^4.3.2: +global@^4.3.0, global@^4.3.2: version "4.3.2" resolved "https://registry.yarnpkg.com/global/-/global-4.3.2.tgz#e76989268a6c74c38908b1305b10fc0e394e9d0f" integrity sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8= @@ -4145,6 +4159,11 @@ is-path-inside@^1.0.0: dependencies: path-is-inside "^1.0.1" +is-plain-obj@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= + is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" @@ -5011,6 +5030,11 @@ lodash.keys@^3.1.2: lodash.isarguments "^3.0.0" lodash.isarray "^3.0.0" +lodash.merge@^4.6.1: + version "4.6.1" + resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz#adc25d9cb99b9391c59624f379fbba60d7111d54" + integrity sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ== + lodash.sortby@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" @@ -5581,6 +5605,16 @@ normalize-path@^2.0.1, normalize-path@^2.1.1: dependencies: remove-trailing-separator "^1.0.1" +normalize-url@^1.9.1: + version "1.9.1" + resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" + integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw= + dependencies: + object-assign "^4.0.1" + prepend-http "^1.0.0" + query-string "^4.1.0" + sort-keys "^1.0.0" + normalize.css@^7.0.0: version "7.0.0" resolved "https://registry.npmjs.org/normalize.css/-/normalize.css-7.0.0.tgz#abfb1dd82470674e0322b53ceb1aaf412938e4bf" @@ -6145,6 +6179,11 @@ prelude-ls@~1.1.2: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= +prepend-http@^1.0.0: + version "1.0.4" + resolved "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= + preserve@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" @@ -6299,6 +6338,14 @@ qs@6.5.2, qs@~6.5.2: resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== +query-string@^4.1.0: + version "4.3.4" + resolved "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" + integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s= + dependencies: + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + querystring-es3@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" @@ -6483,6 +6530,21 @@ react-dom@^16.6.3: prop-types "^15.6.2" scheduler "^0.12.0" +react-hot-loader@^4.6.3: + version "4.6.3" + resolved "https://registry.npmjs.org/react-hot-loader/-/react-hot-loader-4.6.3.tgz#d9c8923c45b35fd51538ba4297081a00be6bccb1" + integrity sha512-FUvRO8dwbeLnc3mgLn8ARuSh8NnLBYJyiRjFn+grY/5GupSyPqv0U7ixgwXro77hwDplhm8z9wU7FlJ8kZqiAQ== + dependencies: + fast-levenshtein "^2.0.6" + global "^4.3.0" + hoist-non-react-statics "^2.5.0" + loader-utils "^1.1.0" + lodash.merge "^4.6.1" + prop-types "^15.6.1" + react-lifecycles-compat "^3.0.4" + shallowequal "^1.0.2" + source-map "^0.7.3" + react-lifecycles-compat@^3.0.4: version "3.0.4" resolved "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" @@ -7282,7 +7344,7 @@ shallowequal@^0.2.2: dependencies: lodash.keys "^3.1.2" -shallowequal@^1.0.1: +shallowequal@^1.0.1, shallowequal@^1.0.2: version "1.1.0" resolved "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== @@ -7386,6 +7448,13 @@ sockjs@0.3.19: faye-websocket "^0.10.0" uuid "^3.0.1" +sort-keys@^1.0.0: + version "1.1.2" + resolved "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" + integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0= + dependencies: + is-plain-obj "^1.0.0" + source-list-map@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" @@ -7437,6 +7506,11 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== +source-map@^0.7.3: + version "0.7.3" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" + integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== + sourcemapped-stacktrace@^1.1.6: version "1.1.9" resolved "https://registry.npmjs.org/sourcemapped-stacktrace/-/sourcemapped-stacktrace-1.1.9.tgz#c744a99936b33b6891409f4d45c3d2b28ecded4a" @@ -7597,6 +7671,11 @@ stream-shift@^1.0.0: resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI= +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= + string-argv@^0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.0.2.tgz#dac30408690c21f3c3630a3ff3a05877bdcbd736" From 2bbac87ead4f48fbb9d17957a06f4697eff4dfcd Mon Sep 17 00:00:00 2001 From: Zoe <33168975+ZoeLeee@users.noreply.github.com> Date: Thu, 10 Jan 2019 22:29:30 +0800 Subject: [PATCH 2/8] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dless=E7=94=A8=E5=8F=98?= =?UTF-8?q?=E9=87=8F=E6=8A=A5=E9=94=99bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- configs/webpack.config.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/configs/webpack.config.js b/configs/webpack.config.js index b46fbfa..9143d8b 100644 --- a/configs/webpack.config.js +++ b/configs/webpack.config.js @@ -65,7 +65,11 @@ module.exports = argv => ({ use: [ MiniCssExtractPlugin.loader, { loader: 'css-loader' }, - { loader: 'less-loader', options: {modifyVars: theme }}, + { loader: 'less-loader', + options: { + modifyVars: theme, + javascriptEnabled: true, + }}, ], exclude: /\.module\.less$/, include: /node_modules/, From fd9ca459b0104bca3418843f569efab772a76e7c Mon Sep 17 00:00:00 2001 From: flyingalex Date: Sun, 13 Jan 2019 15:50:59 +0800 Subject: [PATCH 3/8] add loading page --- configs/webpack.config.js | 41 ++++++----- index.html | 42 ++++++++++- package.json | 2 + src/assets/images/logo.png | Bin 0 -> 28321 bytes src/pages/Welcome/index.module.less | 29 ++++++++ src/pages/Welcome/index.tsx | 0 src/router.tsx | 6 +- yarn.lock | 107 ++++++++++++++++++++++++++-- 8 files changed, 196 insertions(+), 31 deletions(-) create mode 100755 src/assets/images/logo.png create mode 100644 src/pages/Welcome/index.module.less create mode 100644 src/pages/Welcome/index.tsx diff --git a/configs/webpack.config.js b/configs/webpack.config.js index 9143d8b..d249328 100644 --- a/configs/webpack.config.js +++ b/configs/webpack.config.js @@ -6,11 +6,11 @@ const WebpackCleanupPlugin = require('webpack-cleanup-plugin'); const MiniCssExtractPlugin = require('mini-css-extract-plugin'); const InlineSourcePlugin = require('html-webpack-inline-source-plugin'); const { TsConfigPathsPlugin } = require('awesome-typescript-loader'); +const CopyWebpackPlugin = require('copy-webpack-plugin'); const theme = require('../package.json').theme; const PROJECT_ROOT = path.join(__dirname, '../'); const SRC = path.join(PROJECT_ROOT, '/', 'src'); const PUBLIC = path.join(PROJECT_ROOT, '/', 'public'); -const styleLoader = (mode) => mode === 'production' ? MiniCssExtractPlugin.loader : 'style-loader'; module.exports = argv => ({ mode: argv.mode, @@ -30,18 +30,15 @@ module.exports = argv => ({ { loader: 'url-loader', options: { - limit: 8192 - } - } - ] + limit: 8192, + }, + }, + ], }, { test: /\.css$/, - use: [ - MiniCssExtractPlugin.loader, - 'css-loader', - ], + use: [MiniCssExtractPlugin.loader, 'css-loader'], }, { @@ -56,7 +53,7 @@ module.exports = argv => ({ localIdentName: '[local]___[hash:base64:5]', }, }, - 'less-loader' + 'less-loader', ], }, @@ -65,11 +62,13 @@ module.exports = argv => ({ use: [ MiniCssExtractPlugin.loader, { loader: 'css-loader' }, - { loader: 'less-loader', - options: { - modifyVars: theme, - javascriptEnabled: true, - }}, + { + loader: 'less-loader', + options: { + modifyVars: theme, + javascriptEnabled: true, + }, + }, ], exclude: /\.module\.less$/, include: /node_modules/, @@ -91,9 +90,7 @@ module.exports = argv => ({ resolve: { extensions: ['.js', '.jsx', '.tsx', '.ts', '.css', 'json'], - plugins: [ - new TsConfigPathsPlugin(), - ], + plugins: [new TsConfigPathsPlugin()], }, plugins: [ @@ -113,7 +110,13 @@ module.exports = argv => ({ new webpack.DefinePlugin({ 'process.env.ENV': JSON.stringify(argv.mode), }), - new webpack.HotModuleReplacementPlugin() + new webpack.HotModuleReplacementPlugin(), + new CopyWebpackPlugin([ + { + from: path.join(SRC, '/assets/images/logo.png'), + to: path.join(PUBLIC), + }, + ]), ], optimization: { diff --git a/index.html b/index.html index 9fcc15b..5f33cb5 100644 --- a/index.html +++ b/index.html @@ -2,9 +2,47 @@ - Frontend Boilerplate with React and TypeScript + Code river + -
+
+
+
+ +
+ +
+
diff --git a/package.json b/package.json index 44dadf3..9b47da8 100644 --- a/package.json +++ b/package.json @@ -23,8 +23,10 @@ "babel-loader": "^8.0.4", "babel-plugin-dva-hmr": "^0.4.1", "babel-plugin-import": "^1.11.0", + "copy-webpack-plugin": "^4.6.0", "css-hot-loader": "^1.4.3", "css-loader": "^1.0.1", + "file-loader": "^3.0.1", "html-webpack-inline-source-plugin": "0.0.10", "html-webpack-plugin": "^3.2.0", "husky": "^1.2.1", diff --git a/src/assets/images/logo.png b/src/assets/images/logo.png new file mode 100755 index 0000000000000000000000000000000000000000..a399a8517bd7f3347bea72baf59b3c1930f2e8cc GIT binary patch literal 28321 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 { return ( - - + ); diff --git a/yarn.lock b/yarn.lock index 3da8e16..3a2a514 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1507,7 +1507,7 @@ binary-extensions@^1.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.12.0.tgz#c2d780f53d45bba8317a8902d4ceeaf3a6385b14" integrity sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg== -bluebird@^3.5.3: +bluebird@^3.5.1, bluebird@^3.5.3: version "3.5.3" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7" integrity sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw== @@ -1721,6 +1721,25 @@ bytes@3.0.0: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= +cacache@^10.0.4: + version "10.0.4" + resolved "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz#6452367999eff9d4188aefd9a14e9d7c6a263460" + integrity sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA== + dependencies: + bluebird "^3.5.1" + chownr "^1.0.1" + glob "^7.1.2" + graceful-fs "^4.1.11" + lru-cache "^4.1.1" + mississippi "^2.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.2" + ssri "^5.2.4" + unique-filename "^1.1.0" + y18n "^4.0.0" + cacache@^11.0.2: version "11.3.2" resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.3.2.tgz#2d81e308e3d258ca38125b676b98b2ac9ce69bfa" @@ -1850,7 +1869,7 @@ chokidar@^2.0.0, chokidar@^2.0.2: optionalDependencies: fsevents "^1.2.2" -chownr@^1.1.1: +chownr@^1.0.1, chownr@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g== @@ -2096,6 +2115,20 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= +copy-webpack-plugin@^4.6.0: + version "4.6.0" + resolved "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-4.6.0.tgz#e7f40dd8a68477d405dd1b7a854aae324b158bae" + integrity sha512-Y+SQCF+0NoWQryez2zXn5J5knmr9z/9qSQt7fbL78u83rxmigOy8X5+BFn8CFSuX+nKT8gpYwJX68ekqtQt6ZA== + dependencies: + cacache "^10.0.4" + find-cache-dir "^1.0.0" + globby "^7.1.1" + is-glob "^4.0.0" + loader-utils "^1.1.0" + minimatch "^3.0.4" + p-limit "^1.0.0" + serialize-javascript "^1.4.0" + core-js@^1.0.0: version "1.2.7" resolved "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" @@ -2511,6 +2544,13 @@ diffie-hellman@^5.0.0: miller-rabin "^4.0.0" randombytes "^2.0.0" +dir-glob@^2.0.0: + version "2.2.1" + resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.1.tgz#ce8413234ffe8452b76b7741c32f116cf2a7b1a7" + integrity sha512-UN6X6XwRjllabfRhBdkVSo63uurJ8nSvMGrwl94EYVz6g+exhTV+yVSYk5VC/xl3MBFBTtC0J20uFKce4Brrng== + dependencies: + path-type "^3.0.0" + dns-equal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" @@ -3140,6 +3180,14 @@ figures@^2.0.0: dependencies: escape-string-regexp "^1.0.5" +file-loader@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/file-loader/-/file-loader-3.0.1.tgz#f8e0ba0b599918b51adfe45d66d1e771ad560faa" + integrity sha512-4sNIOXgtH/9WZq4NvlfU3Opn5ynUsqBwSLyM+I7UOwdGigTBYfVVQEwe/msZNX/j4pCJTIM14Fsw66Svo1oVrw== + dependencies: + loader-utils "^1.0.2" + schema-utils "^1.0.0" + filename-regex@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" @@ -3474,6 +3522,18 @@ globby@^6.1.0: pify "^2.0.0" pinkie-promise "^2.0.0" +globby@^7.1.1: + version "7.1.1" + resolved "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz#fb2ccff9401f8600945dfada97440cca972b8680" + integrity sha1-+yzP+UAfhgCUXfral0QMypcrhoA= + dependencies: + array-union "^1.0.1" + dir-glob "^2.0.0" + glob "^7.1.2" + ignore "^3.3.5" + pify "^3.0.0" + slash "^1.0.0" + graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2: version "4.1.15" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" @@ -3816,6 +3876,11 @@ ignore-walk@^3.0.1: dependencies: minimatch "^3.0.4" +ignore@^3.3.5: + version "3.3.10" + resolved "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" + integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== + image-size@~0.5.0: version "0.5.5" resolved "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" @@ -5098,7 +5163,7 @@ lower-case@^1.1.1: resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= -lru-cache@^4.0.1: +lru-cache@^4.0.1, lru-cache@^4.1.1: version "4.1.5" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== @@ -5371,6 +5436,22 @@ minizlib@^1.1.1: dependencies: minipass "^2.2.1" +mississippi@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz#3442a508fafc28500486feea99409676e4ee5a6f" + integrity sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw== + dependencies: + concat-stream "^1.5.0" + duplexify "^3.4.2" + end-of-stream "^1.1.0" + flush-write-stream "^1.0.0" + from2 "^2.1.0" + parallel-transform "^1.1.0" + pump "^2.0.1" + pumpify "^1.3.3" + stream-each "^1.1.0" + through2 "^2.0.0" + mississippi@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" @@ -5868,7 +5949,7 @@ p-is-promise@^1.1.0: resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-1.1.0.tgz#9c9456989e9f6588017b0434d56097675c3da05e" integrity sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4= -p-limit@^1.1.0: +p-limit@^1.0.0, p-limit@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== @@ -6051,6 +6132,13 @@ path-type@^1.0.0: pify "^2.0.0" pinkie-promise "^2.0.0" +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== + dependencies: + pify "^3.0.0" + pbkdf2@^3.0.3: version "3.0.17" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" @@ -6293,7 +6381,7 @@ public-encrypt@^4.0.0: randombytes "^2.0.1" safe-buffer "^5.1.2" -pump@^2.0.0: +pump@^2.0.0, pump@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== @@ -7594,6 +7682,13 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" +ssri@^5.2.4: + version "5.3.0" + resolved "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz#ba3872c9c6d33a0704a7d71ff045e5ec48999d06" + integrity sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ== + dependencies: + safe-buffer "^5.1.1" + ssri@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" @@ -8176,7 +8271,7 @@ union-value@^1.0.0: is-extendable "^0.1.1" set-value "^0.4.3" -unique-filename@^1.1.1: +unique-filename@^1.1.0, unique-filename@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== From d9b550f560a1292247fe57c723c896cd3944a13d Mon Sep 17 00:00:00 2001 From: flyingalex Date: Sun, 13 Jan 2019 21:54:15 +0800 Subject: [PATCH 4/8] add welcome page --- src/assets/images/welcome/github.png | Bin 0 -> 5688 bytes src/assets/images/welcome/logo.png | Bin 0 -> 18318 bytes src/assets/images/welcome/wechat.png | Bin 0 -> 3493 bytes src/assets/images/welcome/weibo.png | Bin 0 -> 5194 bytes src/components/Image/index.module.less | 3 + src/components/Image/index.tsx | 16 ++++++ src/pages/Welcome/index.module.less | 75 +++++++++++++++++++------ src/pages/Welcome/index.tsx | 44 +++++++++++++++ 8 files changed, 121 insertions(+), 17 deletions(-) create mode 100755 src/assets/images/welcome/github.png create mode 100755 src/assets/images/welcome/logo.png create mode 100755 src/assets/images/welcome/wechat.png create mode 100755 src/assets/images/welcome/weibo.png create mode 100644 src/components/Image/index.module.less create mode 100644 src/components/Image/index.tsx diff --git a/src/assets/images/welcome/github.png b/src/assets/images/welcome/github.png new file mode 100755 index 0000000000000000000000000000000000000000..6266c00bc8ea000cc7a43d1138b7df9e1a3d2dfc GIT binary patch literal 5688 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 Tu`8T#00000NkvXXu0mjf#_5JG literal 0 HcmV?d00001 diff --git a/src/assets/images/welcome/weibo.png b/src/assets/images/welcome/weibo.png new file mode 100755 index 0000000000000000000000000000000000000000..f66b8c9a48f91943455d0392c6affa90887f64e1 GIT binary patch literal 5194 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 Eg1f@}!2kdN literal 0 HcmV?d00001 diff --git a/src/components/Image/index.module.less b/src/components/Image/index.module.less new file mode 100644 index 0000000..0f67bad --- /dev/null +++ b/src/components/Image/index.module.less @@ -0,0 +1,3 @@ +.image { + width: 100%; +} diff --git a/src/components/Image/index.tsx b/src/components/Image/index.tsx new file mode 100644 index 0000000..b81071d --- /dev/null +++ b/src/components/Image/index.tsx @@ -0,0 +1,16 @@ +import React from 'react'; +import style from './index.module.less'; + +type Props = { + src: string; + className?: string; +}; + +class Image extends React.Component { + render() { + const { src, className } = this.props; + return ; + } +} + +export default Image; diff --git a/src/pages/Welcome/index.module.less b/src/pages/Welcome/index.module.less index 4a7d7f0..8d896b4 100644 --- a/src/pages/Welcome/index.module.less +++ b/src/pages/Welcome/index.module.less @@ -1,29 +1,70 @@ .container { + padding: 20px 50px 0 50px; + color: white; + background-image: linear-gradient(141deg, #9fb8ad 0%, #1fc8db 51%, #2cb5e8 75%); + min-height: 100vh; +} +.top { + text-align: right; + font-size: 32px; +} + +.logo { + margin-top: 122px; + width: 156px; + height: 100px; +} + +.welcomeWord { + margin: 110px 0; + font-size: 60px; +} + +.loginBtn { display: flex; justify-content: center; + font-size: 40px; + height: 100px; align-items: center; - height: 100vh; + padding-right: 60px; + border-radius: 50px; + margin-bottom: 20px; + color: rgba(64, 174, 168, 1); + + .github { + width: 40px; + margin-right: 40px; + } } -.logo { - animation: pulse 3s infinite; +.moreWays { + font-size: 32px; + margin-top: 50px; + margin-bottom: 74px; } -@keyframes pulse { - 0% { - opacity: 0.2; - } - 50% { - opacity: 0.5; - } - 100% { - opacity: 1; +.moreWaysIcon { + display: flex; + font-size: 32px; + padding-bottom: 20px; +} +.weiboContainer { + display: flex; + align-items: center; + margin-right: 64px; + + .weibo { + width: 44px; + margin-right: 18px; } } -.copyright { - position: fixed; - left: 50%; - bottom: 10px; - transform: translateX(-50%); +.wechatContainer { + display: flex; + align-items: center; + + .wechat { + width: 40px; + margin-right: 18px; + } } diff --git a/src/pages/Welcome/index.tsx b/src/pages/Welcome/index.tsx index e69de29..2f86c5a 100644 --- a/src/pages/Welcome/index.tsx +++ b/src/pages/Welcome/index.tsx @@ -0,0 +1,44 @@ +import React from 'react'; +import { Button } from 'antd-mobile'; +import style from './index.module.less'; +import Image from '@components/Image'; +import logo from '@assets/images/welcome/logo.png'; +import github from '@assets/images/welcome/github.png'; +import wechat from '@assets/images/welcome/wechat.png'; +import weibo from '@assets/images/welcome/weibo.png'; + +const Welcome = () => ( +
+
登录
+
+
+ +
+
欢迎来到CodeRiver
+ + +
+
更多登录方式
+
+
+ + 新浪微博 +
+
+ + 微信 +
+
+
+
+
+); + +export default Welcome; From aa99695f05ee2b8a4f8696524a984a8c21bdf30b Mon Sep 17 00:00:00 2001 From: flyingalex Date: Sun, 20 Jan 2019 14:14:31 +0800 Subject: [PATCH 5/8] add login page --- configs/webpack.config.js | 3 +- package.json | 3 + postcss.config.js | 15 ++++ src/assets/images/login/back.svg | 1 + src/assets/images/login/checked.png | Bin 0 -> 2391 bytes src/assets/images/login/next.png | Bin 0 -> 8433 bytes src/assets/less/variables.less | 6 ++ src/pages/Login/index.module.less | 64 +++++++++++++++++ src/pages/Login/index.tsx | 92 ++++++++++++++++++++++++ src/pages/Welcome/index.module.less | 7 +- src/router.tsx | 4 +- src/utils/constant.ts | 4 ++ src/utils/helper.ts | 0 tsconfig.json | 5 +- tslint.json | 3 + yarn.lock | 104 +++++++++++++++++++++++++++- 16 files changed, 302 insertions(+), 9 deletions(-) create mode 100644 postcss.config.js create mode 100644 src/assets/images/login/back.svg create mode 100755 src/assets/images/login/checked.png create mode 100755 src/assets/images/login/next.png create mode 100644 src/assets/less/variables.less create mode 100644 src/pages/Login/index.module.less create mode 100644 src/pages/Login/index.tsx create mode 100644 src/utils/constant.ts create mode 100644 src/utils/helper.ts diff --git a/configs/webpack.config.js b/configs/webpack.config.js index d249328..368e725 100644 --- a/configs/webpack.config.js +++ b/configs/webpack.config.js @@ -25,7 +25,7 @@ module.exports = argv => ({ module: { rules: [ { - test: /\.(png|jpg|gif)$/i, + test: /\.(png|jpg|gif|svg)$/i, use: [ { loader: 'url-loader', @@ -53,6 +53,7 @@ module.exports = argv => ({ localIdentName: '[local]___[hash:base64:5]', }, }, + 'postcss-loader', 'less-loader', ], }, diff --git a/package.json b/package.json index 9b47da8..e84a6d3 100644 --- a/package.json +++ b/package.json @@ -35,6 +35,9 @@ "less-loader": "^4.1.0", "lint-staged": "^8.1.0", "mini-css-extract-plugin": "^0.4.5", + "postcss-less": "^3.1.1", + "postcss-loader": "^3.0.0", + "postcss-px-to-viewport": "^0.0.3", "prettier": "^1.15.3", "react-hot-loader": "^4.6.3", "redbox-react": "1.x", diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..b08c223 --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,15 @@ +module.exports = { + parser: 'postcss-less', + plugins: { + 'postcss-px-to-viewport': { + unitToConvert: 'px', + viewportWidth: 750, + unitPrecision: 5, + viewportUnit: 'vw', + fontViewportUnit: 'vw', // vmin is more suitable. + selectorBlackList: [], + minPixelValue: 1, + mediaQuery: false + }, + } +} diff --git a/src/assets/images/login/back.svg b/src/assets/images/login/back.svg new file mode 100644 index 0000000..19fbc67 --- /dev/null +++ b/src/assets/images/login/back.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/login/checked.png b/src/assets/images/login/checked.png new file mode 100755 index 0000000000000000000000000000000000000000..e09b6d398f7e6c8c20ef01f2c9c038ca13025389 GIT binary patch literal 2391 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 NmYSYwm5O!P{{gj%7byS$ literal 0 HcmV?d00001 diff --git a/src/assets/less/variables.less b/src/assets/less/variables.less new file mode 100644 index 0000000..a45d0df --- /dev/null +++ b/src/assets/less/variables.less @@ -0,0 +1,6 @@ +.login-bg() { + padding: 20px 50px 0 50px; + color: white; + background-image: linear-gradient(141deg, #9fb8ad 0%, #1fc8db 51%, #2cb5e8 75%); + min-height: 100vh; +} diff --git a/src/pages/Login/index.module.less b/src/pages/Login/index.module.less new file mode 100644 index 0000000..758484e --- /dev/null +++ b/src/pages/Login/index.module.less @@ -0,0 +1,64 @@ +@import "~assets/less/variables.less"; + +.container { + .login-bg(); +} + +.backIcon { + width: 20px; + img { + width: 100%; + height: 35px; + } +} + +.login { + font-size:62px; + font-weight:normal; + margin: 90px 0 110px 0; +} + +.formItem { + margin-bottom: 60px; +} + +.label { + display: flex; + justify-content: space-between; + font-size: 30px; +} + +.inputContainer { + border-bottom: 2px solid white; + + .input { + background: transparent; + border: 0; + font-size: 48px; + color: white; + width: 100%; + } +} + +.btn { + border: 2px solid white; + border-radius:37px; + color: white; + background: transparent; + font-size:28px; + padding: 24px 95px; +} + +.nextStep { + width: 100px; + img { + width: 100%; + height: 100px; + } +} + +.cta { + display: flex; + justify-content: space-between; + align-items: center; +} diff --git a/src/pages/Login/index.tsx b/src/pages/Login/index.tsx new file mode 100644 index 0000000..e29c20e --- /dev/null +++ b/src/pages/Login/index.tsx @@ -0,0 +1,92 @@ +import React from 'react'; +import style from './index.module.less'; +import back from '@assets/images/login/back.svg'; +import next from '@assets/images/login/next.png'; +import { LOGIN_TYPE } from '@utils/constant'; + +const initialState = { + loginMethod: LOGIN_TYPE.phone, + showPassword: false, +}; +type State = Readonly; + +class Login extends React.Component { + readonly state: State = initialState; + + private togglePassword = () => { + this.setState((prevState: State) => ({ showPassword: !prevState.showPassword })); + }; + + private toggleLoginMethod = () => { + const { email, phone } = LOGIN_TYPE; + this.setState((prevState: State) => ({ + loginMethod: prevState.loginMethod === email ? phone : email, + })); + }; + + private passText = () => { + const { showPassword } = this.state; + return showPassword ? '隐藏' : '显示'; + }; + + private passInputType = () => { + const { showPassword } = this.state; + return showPassword ? 'text' : 'password'; + }; + + private showLoginMethodText = () => { + const { loginMethod } = this.state; + return loginMethod === LOGIN_TYPE.email ? '使用手机号' : '使用邮箱'; + }; + + render() { + const { loginMethod } = this.state; + return ( +
+
+ +
+

登录

+ {loginMethod === LOGIN_TYPE.email && ( +
+ +
+ +
+
+ )} + {loginMethod === LOGIN_TYPE.phone && ( +
+ +
+ +
+
+ )} +
+ +
+ +
+
+
+ +
+ +
+
+
+ ); + } +} + +export default Login; diff --git a/src/pages/Welcome/index.module.less b/src/pages/Welcome/index.module.less index 8d896b4..4da56c9 100644 --- a/src/pages/Welcome/index.module.less +++ b/src/pages/Welcome/index.module.less @@ -1,8 +1,7 @@ +@import "~assets/less/variables.less"; + .container { - padding: 20px 50px 0 50px; - color: white; - background-image: linear-gradient(141deg, #9fb8ad 0%, #1fc8db 51%, #2cb5e8 75%); - min-height: 100vh; + .login-bg(); } .top { text-align: right; diff --git a/src/router.tsx b/src/router.tsx index d354116..6a49313 100644 --- a/src/router.tsx +++ b/src/router.tsx @@ -1,12 +1,14 @@ import * as React from 'react'; import { Route, Router, Switch } from 'dva/router'; import Welcome from '@pages/Welcome'; +import Login from '@pages/Login'; export default ({ history }: { history: any }) => { return ( - + + ); diff --git a/src/utils/constant.ts b/src/utils/constant.ts new file mode 100644 index 0000000..c1f419b --- /dev/null +++ b/src/utils/constant.ts @@ -0,0 +1,4 @@ +export const LOGIN_TYPE = { + phone: 'PHONE', + email: 'EMAIL', +}; diff --git a/src/utils/helper.ts b/src/utils/helper.ts new file mode 100644 index 0000000..e69de29 diff --git a/tsconfig.json b/tsconfig.json index 02cc560..dce1e46 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -12,8 +12,9 @@ "paths": { "@pages/*": ["pages/*"], "@components/*": ["components/*"], - "@assets/*": ["assets/*"] - }, + "@assets/*": ["assets/*"], + "@utils/*": ["utils/*"] + }, }, "include": [ "./src/**/*" diff --git a/tslint.json b/tslint.json index aac16b8..c8a329b 100644 --- a/tslint.json +++ b/tslint.json @@ -5,6 +5,9 @@ "tslint-config-prettier" ], "rules": { + "prefer-array-literal": [true, { + "allow-type-parameters": true + }], "no-constant-condition": true, "quotemark": [true, "single", "avoid-escape", "jsx-double"], "no-console": false, diff --git a/yarn.lock b/yarn.lock index 3a2a514..9a9cf1f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1849,6 +1849,15 @@ chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.1, chalk@^2.4 escape-string-regexp "^1.0.5" supports-color "^5.3.0" +chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + chokidar@^2.0.0, chokidar@^2.0.2: version "2.0.4" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.4.tgz#356ff4e2b0e8e43e322d18a372460bbcf3accd26" @@ -2153,6 +2162,16 @@ cosmiconfig@5.0.6: js-yaml "^3.9.0" parse-json "^4.0.0" +cosmiconfig@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-4.0.0.tgz#760391549580bbd2df1e562bc177b13c290972dc" + integrity sha512-6e5vDdrXZD+t5v0L8CrurPeybg4Fmf+FCSYxXKYVAqLUtyCSbuyqE059d0kDthTNRzKVjL7QMgNpEUlsoYH3iQ== + dependencies: + is-directory "^0.3.1" + js-yaml "^3.9.0" + parse-json "^4.0.0" + require-from-string "^2.0.1" + cosmiconfig@^5.0.7: version "5.0.7" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.0.7.tgz#39826b292ee0d78eda137dfa3173bd1c21a43b04" @@ -3886,6 +3905,13 @@ image-size@~0.5.0: resolved "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" integrity sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w= +import-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" + integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk= + dependencies: + import-from "^2.1.0" + import-fresh@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" @@ -3894,6 +3920,13 @@ import-fresh@^2.0.0: caller-path "^2.0.0" resolve-from "^3.0.0" +import-from@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" + integrity sha1-M1238qev/VOqpHHUuAId7ja387E= + dependencies: + resolve-from "^3.0.0" + import-local@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/import-local/-/import-local-1.0.0.tgz#5e4ffdc03f4fe6c009c6729beb29631c2f8227bc" @@ -4722,6 +4755,11 @@ jest@^23.6.0: import-local "^1.0.0" jest-cli "^23.6.0" +js-base64@^2.1.9: + version "2.5.0" + resolved "https://registry.npmjs.org/js-base64/-/js-base64-2.5.0.tgz#42255ba183ab67ce59a0dee640afdc00ab5ae93e" + integrity sha512-wlEBIZ5LP8usDylWbDNhKPEFVFdI5hCHpnVoT/Ysvoi/PRhJENm/Rlh9TvjYB38HFfKZN7OzEbRjmjvLkFw11g== + js-levenshtein@^1.1.3: version "1.1.4" resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.4.tgz#3a56e3cbf589ca0081eb22cd9ba0b1290a16d26e" @@ -6217,6 +6255,31 @@ posix-character-classes@^0.1.0: resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= +postcss-less@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/postcss-less/-/postcss-less-3.1.1.tgz#87347038bf9cdec9c47722ecf97648bacd171cc3" + integrity sha512-yVa0hb03p7xj914Z4qDDA/PGwXYvCEfjJizWVYQvnEQr8SgJ098qejCvbCGk1dDYQpQEGKkvYHQCo66DwTocjg== + dependencies: + postcss "^7.0.3" + +postcss-load-config@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.0.0.tgz#f1312ddbf5912cd747177083c5ef7a19d62ee484" + integrity sha512-V5JBLzw406BB8UIfsAWSK2KSwIJ5yoEIVFb4gVkXci0QdKgA24jLmHZ/ghe/GgX0lJ0/D1uUK1ejhzEY94MChQ== + dependencies: + cosmiconfig "^4.0.0" + import-cwd "^2.0.0" + +postcss-loader@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz#6b97943e47c72d845fa9e03f273773d4e8dd6c2d" + integrity sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA== + dependencies: + loader-utils "^1.1.0" + postcss "^7.0.0" + postcss-load-config "^2.0.0" + schema-utils "^1.0.0" + postcss-modules-extract-imports@^1.2.0: version "1.2.1" resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.1.tgz#dc87e34148ec7eab5f791f7cd5849833375b741a" @@ -6248,11 +6311,29 @@ postcss-modules-values@^1.3.0: icss-replace-symbols "^1.1.0" postcss "^6.0.1" +postcss-px-to-viewport@^0.0.3: + version "0.0.3" + resolved "https://registry.npmjs.org/postcss-px-to-viewport/-/postcss-px-to-viewport-0.0.3.tgz#761259af20ad70adb01f503697337276d7831363" + integrity sha1-dhJZryCtcK2wH1A2lzNydteDE2M= + dependencies: + object-assign "^4.0.1" + postcss "^5.0.2" + postcss-value-parser@^3.3.0: version "3.3.1" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== +postcss@^5.0.2: + version "5.2.18" + resolved "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5" + integrity sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg== + dependencies: + chalk "^1.1.3" + js-base64 "^2.1.9" + source-map "^0.5.6" + supports-color "^3.2.3" + postcss@^6.0.1, postcss@^6.0.23: version "6.0.23" resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324" @@ -6262,6 +6343,15 @@ postcss@^6.0.1, postcss@^6.0.23: source-map "^0.6.1" supports-color "^5.4.0" +postcss@^7.0.0, postcss@^7.0.3: + version "7.0.13" + resolved "https://registry.npmjs.org/postcss/-/postcss-7.0.13.tgz#42bf716413e8f1c786ab71dc6e722b3671b16708" + integrity sha512-h8SY6kQTd1wISHWjz+E6cswdhMuyBZRb16pSTv3W4zYZ3/YbyWeJdNUeOXB5IdZqE1U76OUEjjjqsC3z2f3hVg== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" @@ -7002,6 +7092,11 @@ require-directory@^2.1.1: resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= +require-from-string@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + require-main-filename@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" @@ -7878,7 +7973,7 @@ supports-color@^2.0.0: resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= -supports-color@^3.1.2: +supports-color@^3.1.2, supports-color@^3.2.3: version "3.2.3" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY= @@ -7892,6 +7987,13 @@ supports-color@^5.1.0, supports-color@^5.3.0, supports-color@^5.4.0, supports-co dependencies: has-flag "^3.0.0" +supports-color@^6.1.0: + version "6.1.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" + integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== + dependencies: + has-flag "^3.0.0" + symbol-observable@^1.0.3, symbol-observable@^1.1.0, symbol-observable@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" From 8fbaf37dd5d845b572ff02b5692c40132fc15a70 Mon Sep 17 00:00:00 2001 From: flyingalex Date: Sun, 20 Jan 2019 19:35:25 +0800 Subject: [PATCH 6/8] update welcome page --- src/pages/Count/index.module.less | 7 ------ src/pages/Count/index.tsx | 34 ----------------------------- src/pages/Welcome/index.module.less | 7 +++++- src/pages/Welcome/index.tsx | 5 ++++- 4 files changed, 10 insertions(+), 43 deletions(-) delete mode 100644 src/pages/Count/index.module.less delete mode 100644 src/pages/Count/index.tsx diff --git a/src/pages/Count/index.module.less b/src/pages/Count/index.module.less deleted file mode 100644 index 88d1ff9..0000000 --- a/src/pages/Count/index.module.less +++ /dev/null @@ -1,7 +0,0 @@ -.normal { - padding: 50px; -} - -.title { - color: red; -} diff --git a/src/pages/Count/index.tsx b/src/pages/Count/index.tsx deleted file mode 100644 index 18ffd22..0000000 --- a/src/pages/Count/index.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import React, { SFC } from 'react'; -import { connect } from 'dva'; -import style from './index.module.less'; - -type Props = { - count: number; - dispatch: (object: Object) => any; -}; - -const Count: SFC = ({ count, dispatch }) => ( -
-

Dva boilerplate with typescript

-
Count:{count}
-
- - -
-); - -export default connect(({ count }: { count: number }) => ({ - count, -}))(Count); diff --git a/src/pages/Welcome/index.module.less b/src/pages/Welcome/index.module.less index 4da56c9..d231e33 100644 --- a/src/pages/Welcome/index.module.less +++ b/src/pages/Welcome/index.module.less @@ -6,6 +6,9 @@ .top { text-align: right; font-size: 32px; + a { + color: white; + } } .logo { @@ -25,7 +28,7 @@ font-size: 40px; height: 100px; align-items: center; - padding-right: 60px; + padding: 0 60px; border-radius: 50px; margin-bottom: 20px; color: rgba(64, 174, 168, 1); @@ -33,6 +36,8 @@ .github { width: 40px; margin-right: 40px; + display: flex; + align-items: center; } } diff --git a/src/pages/Welcome/index.tsx b/src/pages/Welcome/index.tsx index 2f86c5a..db997c0 100644 --- a/src/pages/Welcome/index.tsx +++ b/src/pages/Welcome/index.tsx @@ -1,4 +1,5 @@ import React from 'react'; +import { Link } from 'dva/router'; import { Button } from 'antd-mobile'; import style from './index.module.less'; import Image from '@components/Image'; @@ -9,7 +10,9 @@ import weibo from '@assets/images/welcome/weibo.png'; const Welcome = () => (
-
登录
+
+ 登录 +
From 5d0f381cad4dd8b84c6ea9260f55e7b5c1519f06 Mon Sep 17 00:00:00 2001 From: flyingalex Date: Sun, 20 Jan 2019 19:38:01 +0800 Subject: [PATCH 7/8] delete useless files --- src/pages/StatefulCount/index.module.less | 9 ---- src/pages/StatefulCount/index.tsx | 58 ----------------------- 2 files changed, 67 deletions(-) delete mode 100644 src/pages/StatefulCount/index.module.less delete mode 100644 src/pages/StatefulCount/index.tsx diff --git a/src/pages/StatefulCount/index.module.less b/src/pages/StatefulCount/index.module.less deleted file mode 100644 index 2cf3ca3..0000000 --- a/src/pages/StatefulCount/index.module.less +++ /dev/null @@ -1,9 +0,0 @@ -.normal { - padding: 50px; - color: green; -} - -.title { - color: red; -} - diff --git a/src/pages/StatefulCount/index.tsx b/src/pages/StatefulCount/index.tsx deleted file mode 100644 index 865fb56..0000000 --- a/src/pages/StatefulCount/index.tsx +++ /dev/null @@ -1,58 +0,0 @@ -import React from 'react'; -import { Link } from 'dva/router'; -import { connect } from 'dva'; -import { Button, WhiteSpace } from 'antd-mobile'; -import icon from '@assets/images/react.png'; -import style from './index.module.less'; - -const initialState = { clicksCount: 0 }; -type State = Readonly; - -type Props = { - count: number; - dispatch: (object: Object) => Object; -}; - -class World extends React.Component { - readonly state: State = initialState; - - render() { - const { clicksCount } = this.state; - const { count, dispatch } = this.props; - return ( -
-

Count:{count}

-
- - - -
- Count -
{`You've clicked me ${clicksCount} times!`}
- -
- ); - } - - private handleIncrement = dispatch => { - this.setState(incrementClicksCount); - dispatch({ type: 'count/add' }); - }; - - private handleDecrement = dispatch => { - this.setState(incrementClicksCount); - dispatch({ type: 'count/minus' }); - }; -} - -const incrementClicksCount = (prevState: State) => ({ - clicksCount: prevState.clicksCount + 1, -}); - -export default connect(({ count }: { count: number }) => ({ - count, -}))(World); From 376bd2c6c1b23a6e9dc136d0fb50e4837d6475f8 Mon Sep 17 00:00:00 2001 From: flyingalex Date: Mon, 21 Jan 2019 07:33:09 +0800 Subject: [PATCH 8/8] add Icon component --- configs/svgo-config.json | 40 +++ configs/webpack.config.js | 19 + package.json | 3 + src/assets/images/{login => icons}/back.svg | 0 src/components/Icon/index.tsx | 18 + src/pages/Login/index.module.less | 6 +- src/pages/Login/index.tsx | 4 +- yarn.lock | 380 ++++++++++++++++++-- 8 files changed, 441 insertions(+), 29 deletions(-) create mode 100644 configs/svgo-config.json rename src/assets/images/{login => icons}/back.svg (100%) create mode 100644 src/components/Icon/index.tsx diff --git a/configs/svgo-config.json b/configs/svgo-config.json new file mode 100644 index 0000000..8b20515 --- /dev/null +++ b/configs/svgo-config.json @@ -0,0 +1,40 @@ +{ + "plugins": [ + { "cleanupAttrs": true }, + { "cleanupEnableBackground": true }, + { "cleanupIDs": true }, + { "cleanupListOfValues": true }, + { "cleanupNumericValues": true }, + { "collapseGroups": true }, + { "convertColors": true }, + { "convertPathData": true }, + { "convertShapeToPath": true }, + { "convertStyleToAttrs": true }, + { "convertTransform": true }, + { "mergePaths": true }, + { "removeComments": true }, + { "removeDesc": true }, + { "removeDimensions": true }, + { "removeDoctype": true }, + { "removeEditorsNSData": true }, + { "removeEmptyAttrs": true }, + { "removeEmptyContainers": true }, + { "removeEmptyText": true }, + { "removeHiddenElems": true }, + { "removeMetadata": true }, + { "removeNonInheritableGroupAttrs": true }, + { "removeRasterImages": true }, + { "removeTitle": true }, + { "removeUnknownsAndDefaults": true }, + { "removeUselessDefs": true }, + { "removeUnusedNS": true }, + { "removeUselessStrokeAndFill": true }, + { + "removeAttrs": { "attrs": "fill"} + }, + { "removeXMLProcInst": true }, + { "removeStyleElement": true }, + { "removeUnknownsAndDefaults": true}, + { "sortAttrs": true } + ] +} diff --git a/configs/webpack.config.js b/configs/webpack.config.js index 368e725..42b98a1 100644 --- a/configs/webpack.config.js +++ b/configs/webpack.config.js @@ -11,6 +11,7 @@ const theme = require('../package.json').theme; const PROJECT_ROOT = path.join(__dirname, '../'); const SRC = path.join(PROJECT_ROOT, '/', 'src'); const PUBLIC = path.join(PROJECT_ROOT, '/', 'public'); +const svgoConfig = require('./svgo-config.json'); module.exports = argv => ({ mode: argv.mode, @@ -26,6 +27,7 @@ module.exports = argv => ({ rules: [ { test: /\.(png|jpg|gif|svg)$/i, + exclude: path.join(SRC, '/assets/images/icons'), use: [ { loader: 'url-loader', @@ -75,6 +77,23 @@ module.exports = argv => ({ include: /node_modules/, }, + { + test: /\.svg$/, + include: path.join(SRC, '/assets/images/icons'), + loader: [ + { + loader: 'svg-sprite-loader', + options: { + symbolId: 'icon-[name]' + } + }, + { + loader: 'svgo-loader', + options: svgoConfig, + } + ] + }, + { exclude: /node_modules/, test: /\.tsx?$/, diff --git a/package.json b/package.json index e84a6d3..d4df96a 100644 --- a/package.json +++ b/package.json @@ -42,6 +42,9 @@ "react-hot-loader": "^4.6.3", "redbox-react": "1.x", "style-loader": "^0.23.1", + "svg-sprite-loader": "^4.1.3", + "svgo": "^1.1.1", + "svgo-loader": "^2.2.0", "ts-jest": "^23.10.5", "tslint": "^5.12.0", "tslint-config-airbnb": "^5.11.1", diff --git a/src/assets/images/login/back.svg b/src/assets/images/icons/back.svg similarity index 100% rename from src/assets/images/login/back.svg rename to src/assets/images/icons/back.svg diff --git a/src/components/Icon/index.tsx b/src/components/Icon/index.tsx new file mode 100644 index 0000000..7161e9d --- /dev/null +++ b/src/components/Icon/index.tsx @@ -0,0 +1,18 @@ +import React, { SFC } from 'react'; + +const requireAll = requireContext => requireContext.keys().map(requireContext); +const req = require.context('@assets/images/icons', false, /\.svg$/); +requireAll(req); + +type Props = { + cla: string; + style?: string; +}; + +const Icon: SFC = ({ cla, style }) => ( + +); + +export default Icon; diff --git a/src/pages/Login/index.module.less b/src/pages/Login/index.module.less index 758484e..45f9181 100644 --- a/src/pages/Login/index.module.less +++ b/src/pages/Login/index.module.less @@ -5,11 +5,9 @@ } .backIcon { + fill: white; width: 20px; - img { - width: 100%; - height: 35px; - } + height: 35px; } .login { diff --git a/src/pages/Login/index.tsx b/src/pages/Login/index.tsx index e29c20e..d67c674 100644 --- a/src/pages/Login/index.tsx +++ b/src/pages/Login/index.tsx @@ -1,6 +1,6 @@ import React from 'react'; import style from './index.module.less'; -import back from '@assets/images/login/back.svg'; +import Icon from '@components/Icon'; import next from '@assets/images/login/next.png'; import { LOGIN_TYPE } from '@utils/constant'; @@ -44,7 +44,7 @@ class Login extends React.Component { return (
- +

登录

{loginMethod === LOGIN_TYPE.email && ( diff --git a/yarn.lock b/yarn.lock index 9a9cf1f..a3d75a6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -729,6 +729,11 @@ resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.5.8.tgz#8ae4e0ea205fe95c3901a5a1df7f66495e3a56ce" integrity sha512-3AQoUxQcQtLHsK25wtTWIoIpgYjH3vSDroZOUr7PpCHw/jLY1RB9z9E8dBT/OSmwStVgkRNvdh+ZHNiomRieaw== +"@types/q@^1.5.1": + version "1.5.1" + resolved "https://registry.npmjs.org/@types/q/-/q-1.5.1.tgz#48fd98c1561fe718b61733daed46ff115b496e18" + integrity sha512-eqz8c/0kwNi/OEHQfvIuJVLTst3in0e7uTKeuY+WL/zfKn0xVujOTp42bS/vUUokhK5P2BppLd9JXMOMHcgbjA== + "@types/react-dom@^16.0.11": version "16.0.11" resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.0.11.tgz#bd10ccb0d9260343f4b9a49d4f7a8330a5c1f081" @@ -1502,12 +1507,17 @@ big.js@^3.1.3: resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" integrity sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q== +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + binary-extensions@^1.0.0: version "1.12.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.12.0.tgz#c2d780f53d45bba8317a8902d4ceeaf3a6385b14" integrity sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg== -bluebird@^3.5.1, bluebird@^3.5.3: +bluebird@^3.5.0, bluebird@^3.5.1, bluebird@^3.5.3: version "3.5.3" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7" integrity sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw== @@ -1545,7 +1555,7 @@ bonjour@^3.5.0: multicast-dns "^6.0.1" multicast-dns-service-types "^1.1.0" -boolbase@~1.0.0: +boolbase@^1.0.0, boolbase@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= @@ -1567,7 +1577,7 @@ braces@^1.8.2: preserve "^0.2.0" repeat-element "^1.1.2" -braces@^2.3.0, braces@^2.3.1: +braces@^2.2.2, braces@^2.3.0, braces@^2.3.1: version "2.3.2" resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== @@ -1959,6 +1969,15 @@ co@^4.6.0: resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= +coa@~2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" + integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== + dependencies: + "@types/q" "^1.5.1" + chalk "^2.4.1" + q "^1.1.2" + code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" @@ -1984,6 +2003,11 @@ color-name@1.1.3: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= +colors@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" + integrity sha1-FopHAXVran9RoSzgyXv6KMCE7WM= + combined-stream@^1.0.6, combined-stream@~1.0.6: version "1.0.7" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828" @@ -2294,6 +2318,11 @@ css-loader@^1.0.1: postcss-value-parser "^3.3.0" source-list-map "^2.0.0" +css-select-base-adapter@~0.1.0: + version "0.1.1" + resolved "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" + integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== + css-select@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" @@ -2304,6 +2333,16 @@ css-select@^1.1.0: domutils "1.5.1" nth-check "~1.0.1" +css-select@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/css-select/-/css-select-2.0.2.tgz#ab4386cec9e1f668855564b17c3733b43b2a5ede" + integrity sha512-dSpYaDVoWaELjvZ3mS6IKZM/y2PMPa/XYoEfYNZePL4U/XgyxZNroHEHReDx/d+VgXh9VbCTtFqLkFbmeqeaRQ== + dependencies: + boolbase "^1.0.0" + css-what "^2.1.2" + domutils "^1.7.0" + nth-check "^1.0.2" + css-selector-tokenizer@^0.7.0: version "0.7.1" resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz#a177271a8bca5019172f4f891fc6eed9cbf68d5d" @@ -2313,7 +2352,28 @@ css-selector-tokenizer@^0.7.0: fastparse "^1.1.1" regexpu-core "^1.0.0" -css-what@2.1: +css-tree@1.0.0-alpha.28: + version "1.0.0-alpha.28" + resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.28.tgz#8e8968190d886c9477bc8d61e96f61af3f7ffa7f" + integrity sha512-joNNW1gCp3qFFzj4St6zk+Wh/NBv0vM5YbEreZk0SD4S23S+1xBKb6cLDg2uj4P4k/GUMlIm6cKIDqIG+vdt0w== + dependencies: + mdn-data "~1.1.0" + source-map "^0.5.3" + +css-tree@1.0.0-alpha.29: + version "1.0.0-alpha.29" + resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.29.tgz#3fa9d4ef3142cbd1c301e7664c1f352bd82f5a39" + integrity sha512-sRNb1XydwkW9IOci6iB2xmy8IGCj6r/fr+JWitvJ2JxQRPzN3T4AGGVWCMlVmVwM1gtgALJRmGIlWv5ppnGGkg== + dependencies: + mdn-data "~1.1.0" + source-map "^0.5.3" + +css-url-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/css-url-regex/-/css-url-regex-1.1.0.tgz#83834230cc9f74c457de59eebd1543feeb83b7ec" + integrity sha1-g4NCMMyfdMRX3lnuvRVD/uuDt+w= + +css-what@2.1, css-what@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.2.tgz#c0876d9d0480927d7d4920dcd72af3595649554d" integrity sha512-wan8dMWQ0GUeF7DGEPVjhHemVW/vy6xUYmFzRY8RYqgA0JtXC9rJmbScBjqSu6dg9q0lwPQy6ZAmJVr3PPTvqQ== @@ -2323,6 +2383,13 @@ cssesc@^0.1.0: resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4" integrity sha1-yBSQPkViM3GgR3tAEJqq++6t27Q= +csso@^3.5.0: + version "3.5.1" + resolved "https://registry.npmjs.org/csso/-/csso-3.5.1.tgz#7b9eb8be61628973c1b261e169d2f024008e758b" + integrity sha512-vrqULLffYU1Q2tLdJvaCYbONStnfkfimRxXNaGjxMldI0C7JPBC4rB1RyjhfdZ4m1frm8pM9uRPKH3d2knZ8gg== + dependencies: + css-tree "1.0.0-alpha.29" + cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0": version "0.3.4" resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.4.tgz#8cd52e8a3acfd68d3aed38ee0a640177d2f9d797" @@ -2443,6 +2510,11 @@ deep-is@~0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= +deepmerge@1.3.2: + version "1.3.2" + resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-1.3.2.tgz#1663691629d4dbfe364fa12a2a4f0aa86aa3a050" + integrity sha1-FmNpFinU2/42T6EqKk8KqGqjoFA= + default-gateway@^2.6.0: version "2.7.2" resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-2.7.2.tgz#b7ef339e5e024b045467af403d50348db4642d0f" @@ -2458,7 +2530,7 @@ default-require-extensions@^1.0.0: dependencies: strip-bom "^2.0.0" -define-properties@^1.1.2: +define-properties@^1.1.2, define-properties@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== @@ -2628,7 +2700,7 @@ domain-browser@^1.1.1: resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== -domelementtype@1: +domelementtype@1, domelementtype@^1.3.0: version "1.3.1" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== @@ -2652,6 +2724,18 @@ domhandler@2.1: dependencies: domelementtype "1" +domhandler@^2.3.0: + version "2.4.2" + resolved "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" + integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== + dependencies: + domelementtype "1" + +domready@1.0.8: + version "1.0.8" + resolved "https://registry.npmjs.org/domready/-/domready-1.0.8.tgz#91f252e597b65af77e745ae24dd0185d5e26d58c" + integrity sha1-kfJS5Ze2Wvd+dFriTdAYXV4m1Yw= + domutils@1.1: version "1.1.6" resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.1.6.tgz#bddc3de099b9a2efacc51c623f28f416ecc57485" @@ -2667,6 +2751,14 @@ domutils@1.5.1: dom-serializer "0" domelementtype "1" +domutils@^1.5.1, domutils@^1.7.0: + version "1.7.0" + resolved "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" + integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== + dependencies: + dom-serializer "0" + domelementtype "1" + duplexify@^3.4.2, duplexify@^3.6.0: version "3.6.1" resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.6.1.tgz#b1a7a29c4abfd639585efaecce80d666b1e34125" @@ -2779,7 +2871,7 @@ enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.0: memory-fs "^0.4.0" tapable "^1.0.0" -entities@~1.1.1: +entities@^1.1.1, entities@~1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== @@ -2805,6 +2897,18 @@ error-stack-parser@^1.3.6: dependencies: stackframe "^0.3.1" +es-abstract@^1.12.0: + version "1.13.0" + resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9" + integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg== + dependencies: + es-to-primitive "^1.2.0" + function-bind "^1.1.1" + has "^1.0.3" + is-callable "^1.1.4" + is-regex "^1.0.4" + object-keys "^1.0.12" + es-abstract@^1.5.1: version "1.12.0" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.12.0.tgz#9dbbdd27c6856f0001421ca18782d786bf8a6165" @@ -2816,7 +2920,7 @@ es-abstract@^1.5.1: is-callable "^1.1.3" is-regex "^1.0.4" -es-to-primitive@^1.1.1: +es-to-primitive@^1.1.1, es-to-primitive@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg== @@ -2856,7 +2960,7 @@ escape-html@~1.0.3: resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= -escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.4, escape-string-regexp@^1.0.5: +escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.4, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= @@ -3101,7 +3205,7 @@ extglob@^0.3.1: dependencies: is-extglob "^1.0.0" -extglob@^2.0.4: +extglob@^2.0.2, extglob@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== @@ -3650,7 +3754,7 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" -has@^1.0.1: +has@^1.0.1, has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== @@ -3673,7 +3777,7 @@ hash.js@^1.0.0, hash.js@^1.0.3: inherits "^2.0.3" minimalistic-assert "^1.0.1" -he@1.2.x: +he@1.2.x, he@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== @@ -3773,6 +3877,18 @@ html-webpack-plugin@^3.2.0: toposort "^1.0.0" util.promisify "1.0.0" +htmlparser2@^3.8.3: + version "3.10.0" + resolved "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.0.tgz#5f5e422dcf6119c0d983ed36260ce9ded0bee464" + integrity sha512-J1nEUGv+MkXS0weHNWVKJJ+UrLfePxRWpN3C9bEi9fLxL2+ggW94DQvgYVXsaT30PGwYRIZKNZXuyMhp3Di4bQ== + dependencies: + domelementtype "^1.3.0" + domhandler "^2.3.0" + domutils "^1.5.1" + entities "^1.1.1" + inherits "^2.0.1" + readable-stream "^3.0.6" + htmlparser2@~3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.3.0.tgz#cc70d05a59f6542e43f0e685c982e14c924a9efe" @@ -3900,7 +4016,7 @@ ignore@^3.3.5: resolved "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== -image-size@~0.5.0: +image-size@^0.5.1, image-size@~0.5.0: version "0.5.5" resolved "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" integrity sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w= @@ -4257,7 +4373,7 @@ is-path-inside@^1.0.0: dependencies: path-is-inside "^1.0.1" -is-plain-obj@^1.0.0: +is-plain-obj@^1.0.0, is-plain-obj@^1.1: version "1.1.0" resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= @@ -4343,7 +4459,7 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= -isobject@^2.0.0: +isobject@^2.0.0, isobject@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= @@ -4775,6 +4891,14 @@ js-tokens@^3.0.2: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= +js-yaml@^3.12.0: + version "3.12.1" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.1.tgz#295c8632a18a23e054cf5c9d3cecafe678167600" + integrity sha512-um46hB9wNOKlwkHgiuyEVAybXBjwFUV0Z/RaHJblRd9DXltue9FTYvzCr9ErQrK9Adz5MU4gHWVaNUfdmrC8qA== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + js-yaml@^3.7.0, js-yaml@^3.9.0: version "3.12.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1" @@ -4872,6 +4996,13 @@ json5@^0.5.0, json5@^0.5.1: resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + jsprim@^1.2.2: version "1.4.1" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" @@ -4901,7 +5032,7 @@ kind-of@^4.0.0: dependencies: is-buffer "^1.1.5" -kind-of@^5.0.0: +kind-of@^5.0.0, kind-of@^5.0.2: version "5.1.0" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== @@ -5083,6 +5214,15 @@ loader-utils@^1.0.2, loader-utils@^1.1.0: emojis-list "^2.0.0" json5 "^0.5.0" +loader-utils@^1.0.3: + version "1.2.3" + resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" + integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== + dependencies: + big.js "^5.2.2" + emojis-list "^2.0.0" + json5 "^1.0.1" + locate-path@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" @@ -5275,6 +5415,11 @@ md5.js@^1.3.4: inherits "^2.0.1" safe-buffer "^5.1.2" +mdn-data@~1.1.0: + version "1.1.4" + resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-1.1.4.tgz#50b5d4ffc4575276573c4eedb8780812a8419f01" + integrity sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA== + media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" @@ -5309,6 +5454,13 @@ merge-descriptors@1.0.1: resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= +merge-options@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/merge-options/-/merge-options-1.0.1.tgz#2a64b24457becd4e4dc608283247e94ce589aa32" + integrity sha512-iuPV41VWKWBIOpBsjoxjDZw8/GbSfZ2mk7N1453bwMrfzdrIk7EzBd+8UVR6rkw67th7xnk9Dytl3J+lHPdxvg== + dependencies: + is-plain-obj "^1.1" + merge-stream@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1" @@ -5326,6 +5478,25 @@ methods@~1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= +micromatch@3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-3.1.0.tgz#5102d4eaf20b6997d6008e3acfe1c44a3fa815e2" + integrity sha512-3StSelAE+hnRvMs8IdVW7Uhk8CVed5tp+kLLGlBP6WiRAXS21GPGu/Nat4WNPXj2Eoc24B02SaeoyozPMfj0/g== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.2.2" + define-property "^1.0.0" + extend-shallow "^2.0.1" + extglob "^2.0.2" + fragment-cache "^0.2.1" + kind-of "^5.0.2" + nanomatch "^1.2.1" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + micromatch@^2.3.11: version "2.3.11" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" @@ -5506,6 +5677,11 @@ mississippi@^3.0.0: stream-each "^1.1.0" through2 "^2.0.0" +mitt@1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/mitt/-/mitt-1.1.2.tgz#380e61480d6a615b660f07abb60d51e0a4e4bed6" + integrity sha1-OA5hSA1qYVtmDwertg1R4KTkvtY= + mixin-deep@^1.2.0: version "1.3.1" resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" @@ -5514,7 +5690,7 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp@0.5.x, mkdirp@0.x, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0: +mkdirp@0.5.x, mkdirp@0.x, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= @@ -5561,7 +5737,7 @@ nan@^2.9.2: resolved "https://registry.yarnpkg.com/nan/-/nan-2.12.1.tgz#7b1aa193e9aa86057e3c7bbd0ac448e770925552" integrity sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw== -nanomatch@^1.2.9: +nanomatch@^1.2.1, nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== @@ -5785,7 +5961,7 @@ npmlog@^4.0.2: gauge "~2.7.3" set-blocking "~2.0.0" -nth-check@~1.0.1: +nth-check@^1.0.2, nth-check@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== @@ -5866,6 +6042,16 @@ object.pick@^1.3.0: dependencies: isobject "^3.0.1" +object.values@^1.0.4: + version "1.1.0" + resolved "https://registry.npmjs.org/object.values/-/object.values-1.1.0.tgz#bf6810ef5da3e5325790eaaa2be213ea84624da9" + integrity sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.12.0" + function-bind "^1.1.1" + has "^1.0.3" + obuf@^1.0.0, obuf@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" @@ -6311,6 +6497,13 @@ postcss-modules-values@^1.3.0: icss-replace-symbols "^1.1.0" postcss "^6.0.1" +postcss-prefix-selector@^1.6.0: + version "1.6.0" + resolved "https://registry.npmjs.org/postcss-prefix-selector/-/postcss-prefix-selector-1.6.0.tgz#b495949d639c63147145648326853216f3c10900" + integrity sha1-tJWUnWOcYxRxRWSDJoUyFvPBCQA= + dependencies: + postcss "^5.0.8" + postcss-px-to-viewport@^0.0.3: version "0.0.3" resolved "https://registry.npmjs.org/postcss-px-to-viewport/-/postcss-px-to-viewport-0.0.3.tgz#761259af20ad70adb01f503697337276d7831363" @@ -6324,7 +6517,7 @@ postcss-value-parser@^3.3.0: resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== -postcss@^5.0.2: +postcss@^5.0.2, postcss@^5.0.8, postcss@^5.2.17: version "5.2.18" resolved "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5" integrity sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg== @@ -6352,6 +6545,44 @@ postcss@^7.0.0, postcss@^7.0.3: source-map "^0.6.1" supports-color "^6.1.0" +posthtml-parser@^0.2.0, posthtml-parser@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.2.1.tgz#35d530de386740c2ba24ff2eb2faf39ccdf271dd" + integrity sha1-NdUw3jhnQMK6JP8usvrznM3ycd0= + dependencies: + htmlparser2 "^3.8.3" + isobject "^2.1.0" + +posthtml-rename-id@^1.0: + version "1.0.11" + resolved "https://registry.npmjs.org/posthtml-rename-id/-/posthtml-rename-id-1.0.11.tgz#02281a1e4482aa3c8c30f798cf9a888e32d9275c" + integrity sha512-8doF8+w+WJT4AZuLVC0feA8Yy7g00IUmZw3YDKn8CKx0uC8FLbCH7JaGMbDOE1ArjyZsJMt1vmyP+IZ8SnNmXw== + dependencies: + escape-string-regexp "1.0.5" + +posthtml-render@^1.0.5, posthtml-render@^1.0.6: + version "1.1.4" + resolved "https://registry.npmjs.org/posthtml-render/-/posthtml-render-1.1.4.tgz#95dac09892f4f183fad5ac823f08f42c0256551e" + integrity sha512-jL6eFIzoN3xUEvbo33OAkSDE2VIKU4JQ1wENOows1DpfnrdapR/K3Q1/fB43Mq7wQlcSgRm23nFrvoioufM7eA== + +posthtml-svg-mode@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/posthtml-svg-mode/-/posthtml-svg-mode-1.0.3.tgz#abd554face81223cab0cb367e18e4efd2a4e74b0" + integrity sha512-hEqw9NHZ9YgJ2/0G7CECOeuLQKZi8HjWLkBaSVtOWjygQ9ZD8P7tqeowYs7WrFdKsWEKG7o+IlsPY8jrr0CJpQ== + dependencies: + merge-options "1.0.1" + posthtml "^0.9.2" + posthtml-parser "^0.2.1" + posthtml-render "^1.0.6" + +posthtml@^0.9.2: + version "0.9.2" + resolved "https://registry.npmjs.org/posthtml/-/posthtml-0.9.2.tgz#f4c06db9f67b61fd17c4e256e7e3d9515bf726fd" + integrity sha1-9MBtufZ7Yf0XxOJW5+PZUVv3Jv0= + dependencies: + posthtml-parser "^0.2.0" + posthtml-render "^1.0.5" + prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" @@ -6511,12 +6742,17 @@ punycode@^2.1.0, punycode@^2.1.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== +q@^1.1.2: + version "1.5.1" + resolved "https://registry.npmjs.org/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= + qs@6.5.2, qs@~6.5.2: version "6.5.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== -query-string@^4.1.0: +query-string@^4.1.0, query-string@^4.3.2: version "4.3.4" resolved "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s= @@ -7378,7 +7614,7 @@ sane@^2.0.0: optionalDependencies: fsevents "^1.2.3" -sax@^1.2.4: +sax@^1.2.4, sax@~1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== @@ -7791,6 +8027,11 @@ ssri@^6.0.1: dependencies: figgy-pudding "^3.5.1" +stable@~0.1.6: + version "0.1.8" + resolved "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + stack-utils@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8" @@ -7994,6 +8235,77 @@ supports-color@^6.1.0: dependencies: has-flag "^3.0.0" +svg-baker-runtime@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/svg-baker-runtime/-/svg-baker-runtime-1.4.0.tgz#eb53a5447856b824095f8344e969663b002b4149" + integrity sha512-wrv8ivS2MlkKKl9CLULEevxOSLXtCkQuwZaF9stFnvSQRp/Xexh2R5MOWpMQr+px0JMOy4I1dAXm50hq75Asrg== + dependencies: + deepmerge "1.3.2" + mitt "1.1.2" + svg-baker "^1.4.0" + +svg-baker@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/svg-baker/-/svg-baker-1.4.0.tgz#ace03ca59aa4fd00aa0ee8b4749de2906fcf7d87" + integrity sha512-VDI530erEOb1E8kbl2fMOCWBMnk9kz7RyjE0JtcvcAyhofSyqd0Oj7mL9MGvECexyZJn+rX6Isk6Hk21ApRcJg== + dependencies: + bluebird "^3.5.0" + clone "^2.1.1" + he "^1.1.1" + image-size "^0.5.1" + loader-utils "^1.1.0" + merge-options "1.0.1" + micromatch "3.1.0" + postcss "^5.2.17" + postcss-prefix-selector "^1.6.0" + posthtml-rename-id "^1.0" + posthtml-svg-mode "^1.0.3" + query-string "^4.3.2" + traverse "^0.6.6" + +svg-sprite-loader@^4.1.3: + version "4.1.3" + resolved "https://registry.npmjs.org/svg-sprite-loader/-/svg-sprite-loader-4.1.3.tgz#d25cfa75a5c4e499f7b5282281db6eb3bda13fe0" + integrity sha512-lOLDSJoyriYnOeGYc7nhxTDYj2vfdBVKpxIS/XK70//kA3VB55H89T1lct2OEClY4w5kQLZJAvDGQ41g3YTogQ== + dependencies: + bluebird "^3.5.0" + deepmerge "1.3.2" + domready "1.0.8" + escape-string-regexp "1.0.5" + html-webpack-plugin "^3.2.0" + loader-utils "^1.1.0" + svg-baker "^1.4.0" + svg-baker-runtime "^1.4.0" + url-slug "2.0.0" + +svgo-loader@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/svgo-loader/-/svgo-loader-2.2.0.tgz#f29eb43efc14c34a15c4023f56ba12775ccdbe5f" + integrity sha512-AtIy4kmUQc1zo+QK3ZFvRrULRZAhUC63cLJxdVo1cONZ9WeYAkySUlaB05uZKKcYpsTb/9tDsBSXMab3/0QWtw== + dependencies: + js-yaml "^3.12.0" + loader-utils "^1.0.3" + +svgo@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/svgo/-/svgo-1.1.1.tgz#12384b03335bcecd85cfa5f4e3375fed671cb985" + integrity sha512-GBkJbnTuFpM4jFbiERHDWhZc/S/kpHToqmZag3aEBjPYK44JAN2QBjvrGIxLOoCyMZjuFQIfTO2eJd8uwLY/9g== + dependencies: + coa "~2.0.1" + colors "~1.1.2" + css-select "^2.0.0" + css-select-base-adapter "~0.1.0" + css-tree "1.0.0-alpha.28" + css-url-regex "^1.1.0" + csso "^3.5.0" + js-yaml "^3.12.0" + mkdirp "~0.5.1" + object.values "^1.0.4" + sax "~1.2.4" + stable "~0.1.6" + unquote "~1.1.1" + util.promisify "~1.0.0" + symbol-observable@^1.0.3, symbol-observable@^1.1.0, symbol-observable@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" @@ -8154,6 +8466,11 @@ tr46@^1.0.1: dependencies: punycode "^2.1.0" +traverse@^0.6.6: + version "0.6.6" + resolved "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz#cbdf560fd7b9af632502fed40f918c157ea97137" + integrity sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc= + trim-right@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" @@ -8363,6 +8680,11 @@ unicode-property-aliases-ecmascript@^1.0.4: resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.4.tgz#5a533f31b4317ea76f17d807fa0d116546111dd0" integrity sha512-2WSLa6OdYd2ng8oqiGIWnJqyFArvhn+5vgx5GTxMbUYjCYKUcuKS62YLFF0R/BDGlB1yzXjQOLtPAfHsgirEpg== +unidecode@0.1.8: + version "0.1.8" + resolved "https://registry.npmjs.org/unidecode/-/unidecode-0.1.8.tgz#efbb301538bc45246a9ac8c559d72f015305053e" + integrity sha1-77swFTi8RSRqmsjFWdcvAVMFBT4= + union-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" @@ -8392,6 +8714,11 @@ unpipe@1.0.0, unpipe@~1.0.0: resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= +unquote@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" + integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= + unset-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" @@ -8439,6 +8766,13 @@ url-parse@^1.4.3: querystringify "^2.0.0" requires-port "^1.0.0" +url-slug@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/url-slug/-/url-slug-2.0.0.tgz#a789d5aed4995c0d95af33377ad1d5c68d4d7027" + integrity sha1-p4nVrtSZXA2VrzM3etHVxo1NcCc= + dependencies: + unidecode "0.1.8" + url@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" @@ -8457,7 +8791,7 @@ util-deprecate@^1.0.1, util-deprecate@~1.0.1: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= -util.promisify@1.0.0, util.promisify@^1.0.0: +util.promisify@1.0.0, util.promisify@^1.0.0, util.promisify@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==