From 9dfcc6eb81fbf1fb62c4a31bfe491af71ae2c04a Mon Sep 17 00:00:00 2001 From: benweizhu Date: Fri, 3 Feb 2017 18:54:43 +0800 Subject: [PATCH 01/16] activity card - add time utils --- package.json | 4 +- src/components/ActivityCard/ActivityCard.scss | 13 +++++++ .../__tests__/ActivityCard.spec.jsx | 11 ++++++ src/components/ActivityCard/index.jsx | 24 ++++++++++++ src/index.jsx | 9 ++++- src/utils/moment.js | 13 +++++++ yarn.lock | 39 +++++++++++++++++-- 7 files changed, 107 insertions(+), 6 deletions(-) create mode 100644 src/components/ActivityCard/ActivityCard.scss create mode 100644 src/components/ActivityCard/__tests__/ActivityCard.spec.jsx create mode 100644 src/components/ActivityCard/index.jsx create mode 100644 src/utils/moment.js diff --git a/package.json b/package.json index 7d722f1..5d51d46 100644 --- a/package.json +++ b/package.json @@ -40,8 +40,10 @@ }, "dependencies": { "classnames": "^2.2.5", + "moment": "^2.17.1", "react": "^15.4.2", - "react-dom": "^15.4.2" + "react-dom": "^15.4.2", + "react-router": "^3.0.2" }, "scripts": { "start": "gulp bundle && gulp browser-sync", diff --git a/src/components/ActivityCard/ActivityCard.scss b/src/components/ActivityCard/ActivityCard.scss new file mode 100644 index 0000000..36319dc --- /dev/null +++ b/src/components/ActivityCard/ActivityCard.scss @@ -0,0 +1,13 @@ +$red: #f00; + +.transition { + background: $red; + height: 100px; + transition: width 2s; + width: 100px; + + &:hover { + width: 200px; + } + +} diff --git a/src/components/ActivityCard/__tests__/ActivityCard.spec.jsx b/src/components/ActivityCard/__tests__/ActivityCard.spec.jsx new file mode 100644 index 0000000..b5e9999 --- /dev/null +++ b/src/components/ActivityCard/__tests__/ActivityCard.spec.jsx @@ -0,0 +1,11 @@ +import React from 'react'; +import { shallow } from 'enzyme'; +import DemoComponent from '../index'; + +jest.dontMock('../index'); + +describe('A suite', () => { + it('contains spec with an expectation', () => { + expect(shallow().contains(

Hi

)).toBe(true); + }); +}); diff --git a/src/components/ActivityCard/index.jsx b/src/components/ActivityCard/index.jsx new file mode 100644 index 0000000..f150ef7 --- /dev/null +++ b/src/components/ActivityCard/index.jsx @@ -0,0 +1,24 @@ +import React from 'react'; +import classNames from 'classnames'; +import { Link } from 'react-router'; +import { localMoment, smartMoment } from '../../utils/moment'; +import { container, image, information, date } from './ActivityCard.scss'; + +const ActivityCard = activity => ( +
  • + +
    + {`${activity.title}`}/ +
    +
    +

    { activity.title }

    +
    + {localMoment('20170202', 'YYYYMMDD').fromNow()} + {smartMoment('20170202', 'YYYYMMDD')} +
    +
    + +
  • +); + +export default ActivityCard; diff --git a/src/index.jsx b/src/index.jsx index bebde5f..5829dee 100644 --- a/src/index.jsx +++ b/src/index.jsx @@ -1,7 +1,12 @@ import React from 'react'; import { render } from 'react-dom'; -import DemoComponent from './components/DemoComponent'; +import ActivityCard from './components/ActivityCard'; -const App = () => ; +const activity = { + id: 1, + title: 'activity', +}; + +const App = () => ; render(, document.getElementById('app')); diff --git a/src/utils/moment.js b/src/utils/moment.js new file mode 100644 index 0000000..e0db249 --- /dev/null +++ b/src/utils/moment.js @@ -0,0 +1,13 @@ +import moment from 'moment'; + +export function localMoment(...args) { + moment.locale('zh-cn'); + return moment.apply(this, args); +} + +export function smartMoment(...args) { + if (localMoment(args).isBefore(new Date)) { + return localMoment(args).fromNow(); + } + return moment(...args).format('YYYY年 M月D号 dddd h:mm:ss a'); +} diff --git a/yarn.lock b/yarn.lock index ae0dd32..8b5b6c8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2803,10 +2803,23 @@ he@1.1.x: version "1.1.0" resolved "https://registry.yarnpkg.com/he/-/he-1.1.0.tgz#29319d49beec13a9b1f3c4f9b2a6dde4859bb2a7" +history@^3.0.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/history/-/history-3.2.1.tgz#71c7497f4e6090363d19a6713bb52a1bfcdd99aa" + dependencies: + invariant "^2.2.1" + loose-envify "^1.2.0" + query-string "^4.2.2" + warning "^3.0.0" + hoek@2.x.x: version "2.16.3" resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" +hoist-non-react-statics@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-1.2.0.tgz#aa448cf0986d55cc40773b17174b7dd066cb7cfb" + home-or-tmp@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" @@ -3006,7 +3019,7 @@ interpret@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.1.tgz#d579fb7f693b858004947af39fa0db49f795602c" -invariant@^2.2.0: +invariant@^2.2.0, invariant@^2.2.1: version "2.2.2" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360" dependencies: @@ -3945,7 +3958,7 @@ longest@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" -loose-envify@^1.0.0, loose-envify@^1.1.0: +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0: version "1.3.1" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" dependencies: @@ -4140,6 +4153,10 @@ mkdirp@0.3.0: dependencies: minimist "0.0.8" +moment@^2.17.1: + version "2.17.1" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.17.1.tgz#fed9506063f36b10f066c8b59a144d7faebe1d82" + ms@0.7.1: version "0.7.1" resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" @@ -5190,7 +5207,7 @@ qs@6.2.1, qs@~6.2.0: version "6.3.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.0.tgz#f403b264f23bc01228c74131b407f18d5ea5d442" -query-string@^4.1.0: +query-string@^4.1.0, query-string@^4.2.2: version "4.3.1" resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.1.tgz#54baada6713eafc92be75c47a731f2ebd09cd11d" dependencies: @@ -5240,6 +5257,16 @@ react-dom@^15.4.2: loose-envify "^1.1.0" object-assign "^4.1.0" +react-router@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-3.0.2.tgz#5a19156678810e01d81901f9c0fef63284b8a514" + dependencies: + history "^3.0.0" + hoist-non-react-statics "^1.2.0" + invariant "^2.2.1" + loose-envify "^1.2.0" + warning "^3.0.0" + react@^15.4.2: version "15.4.2" resolved "https://registry.yarnpkg.com/react/-/react-15.4.2.tgz#41f7991b26185392ba9bae96c8889e7e018397ef" @@ -6397,6 +6424,12 @@ walker@~1.0.5: dependencies: makeerror "1.0.x" +warning@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/warning/-/warning-3.0.0.tgz#32e5377cb572de4ab04753bdf8821c01ed605b7c" + dependencies: + loose-envify "^1.0.0" + watch@~0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/watch/-/watch-0.10.0.tgz#77798b2da0f9910d595f1ace5b0c2258521f21dc" From 736109cae7619a1454274db42414cb16de455e7f Mon Sep 17 00:00:00 2001 From: benweizhu Date: Sun, 22 Jan 2017 21:11:08 +0800 Subject: [PATCH 02/16] webpack-server replace browser-sync, webpack replace gulp --- .codeclimate.yml | 1 - gulpfile.js | 5 - package.json | 9 +- task/bundle.js | 8 - task/server.js | 10 - webpack.config.js | 2 +- yarn.lock | 1221 +++++++++++---------------------------------- 7 files changed, 289 insertions(+), 967 deletions(-) delete mode 100644 gulpfile.js delete mode 100644 task/bundle.js delete mode 100644 task/server.js diff --git a/.codeclimate.yml b/.codeclimate.yml index ab67324..afe2f9f 100644 --- a/.codeclimate.yml +++ b/.codeclimate.yml @@ -7,5 +7,4 @@ ratings: paths: - src/** exclude_paths: -- task/** - node_modules/** diff --git a/gulpfile.js b/gulpfile.js deleted file mode 100644 index 8453d32..0000000 --- a/gulpfile.js +++ /dev/null @@ -1,5 +0,0 @@ -const normalizedPath = require('path').join(__dirname, 'task'); - -require('fs').readdirSync(normalizedPath).forEach((file) => { - require(`./task/${file}`); -}); diff --git a/package.json b/package.json index 5d51d46..a8c72ee 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,6 @@ "babel-loader": "^6.2.10", "babel-preset-es2015": "^6.18.0", "babel-preset-react": "^6.16.0", - "browser-sync": "^2.18.6", "clean-webpack-plugin": "^0.1.15", "coveralls": "^2.11.15", "css-loader": "^0.26.1", @@ -23,7 +22,6 @@ "eslint-plugin-jsx-a11y": "^3.0.2", "eslint-plugin-react": "^6.9.0", "extract-text-webpack-plugin": "^1.0.1", - "gulp": "^3.9.1", "html-webpack-plugin": "^2.26.0", "identity-obj-proxy": "^3.0.0", "jest": "^18.1.0", @@ -36,6 +34,7 @@ "sass-loader": "^4.1.1", "style-loader": "^0.13.1", "webpack": "^1.14.0", + "webpack-dev-server": "^1.16.2", "webpack-stream": "^3.2.0" }, "dependencies": { @@ -46,9 +45,9 @@ "react-router": "^3.0.2" }, "scripts": { - "start": "gulp bundle && gulp browser-sync", - "bundle": "gulp bundle", - "server": "gulp browser-sync", + "start": "webpack && webpack-dev-server", + "bundle": "webpack", + "server": "webpack-dev-server", "test": "jest --coverage", "ci-test": "jest --coverage && nyc report --temp-directory=coverage --reporter=text-lcov | coveralls", "eslint": "eslint src/**/*.jsx", diff --git a/task/bundle.js b/task/bundle.js deleted file mode 100644 index bc7fcb2..0000000 --- a/task/bundle.js +++ /dev/null @@ -1,8 +0,0 @@ -const gulp = require('gulp'); -const webpack = require('webpack-stream'); -const webpackConfig = require('../webpack.config.js'); - -gulp.task('bundle', () => - gulp.src('../src/index.jsx') - .pipe(webpack(webpackConfig)) - .pipe(gulp.dest('./public/'))); diff --git a/task/server.js b/task/server.js deleted file mode 100644 index 5aa707e..0000000 --- a/task/server.js +++ /dev/null @@ -1,10 +0,0 @@ -const gulp = require('gulp'); -const browserSync = require('browser-sync').create(); - -gulp.task('browser-sync', () => { - browserSync.init({ - server: { - baseDir: './public', - }, - }); -}); diff --git a/webpack.config.js b/webpack.config.js index e76b784..200c839 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -6,7 +6,7 @@ const CleanWebpackPlugin = require('clean-webpack-plugin'); const BUILD_DIR = path.resolve(__dirname, 'public'); const APP_DIR = path.resolve(__dirname, 'src'); -const extractCSS = new ExtractTextPlugin(`${BUILD_DIR}/styles.css`); +const extractCSS = new ExtractTextPlugin('styles.css'); const config = { entry: `${APP_DIR}/index.jsx`, diff --git a/yarn.lock b/yarn.lock index 8b5b6c8..f5e1a45 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10,7 +10,7 @@ abbrev@1: version "1.0.9" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" -accepts@1.3.3, accepts@~1.3.3: +accepts@~1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.3.tgz#c3ca7434938648c3e0d9c1e328dd68b622c284ca" dependencies: @@ -29,17 +29,11 @@ acorn-jsx@^3.0.0, acorn-jsx@^3.0.1: dependencies: acorn "^3.0.4" -acorn-object-spread@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/acorn-object-spread/-/acorn-object-spread-1.0.0.tgz#48ead0f4a8eb16995a17a0db9ffc6acaada4ba68" - dependencies: - acorn "^3.1.0" - acorn@^2.1.0, acorn@^2.4.0: version "2.7.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-2.7.0.tgz#ab6e7d9d886aaca8b085bc3312b79a198433f0e7" -acorn@^3.0.0, acorn@^3.0.4, acorn@^3.1.0: +acorn@^3.0.0, acorn@^3.0.4: version "3.3.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" @@ -47,10 +41,6 @@ acorn@^4.0.1: version "4.0.4" resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.4.tgz#17a8d6a7a6c4ef538b814ec9abac2779293bf30a" -after@0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/after/-/after-0.8.1.tgz#ab5d4fb883f596816d3515f8f791c0af486dd627" - ajv-keywords@^1.0.0: version "1.5.0" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.0.tgz#c11e6859eafff83e0dafc416929472eca946aa2c" @@ -154,6 +144,10 @@ array-find-index@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + array-union@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" @@ -175,10 +169,6 @@ array.prototype.find@^2.0.1: define-properties "^1.1.2" es-abstract "^1.5.0" -arraybuffer.slice@0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz#f33b2159f0532a3f3107a272c0ccfbd1ad2979ca" - arrify@^1.0.0, arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" @@ -205,10 +195,6 @@ assert@^1.1.1: dependencies: util "0.10.3" -async-each-series@0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/async-each-series/-/async-each-series-0.1.1.tgz#7617c1917401fd8ca4a28aadce3dbae98afeb432" - async-each@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" @@ -217,14 +203,14 @@ async-foreach@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542" -async@1.5.2, async@^1.3.0, async@^1.4.0, async@^1.4.2, async@^1.5.0: - version "1.5.2" - resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" - async@^0.9.0: version "0.9.2" resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d" +async@^1.3.0, async@^1.4.0, async@^1.4.2, async@^1.5.0: + version "1.5.2" + resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + async@^2.0.1, async@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/async/-/async-2.1.4.tgz#2d2160c7788032e4dd6cbe2502f1f9a2c8f6cde4" @@ -756,10 +742,6 @@ babylon@^6.11.0, babylon@^6.13.0: version "6.15.0" resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.15.0.tgz#ba65cfa1a80e1759b0e89fb562e27dccae70348e" -backo2@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" - balanced-match@0.1.0, balanced-match@~0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.1.0.tgz#b504bd05869b39259dd0c5efc35d843176dccc4a" @@ -772,18 +754,10 @@ balanced-match@^0.4.1, balanced-match@^0.4.2: version "0.4.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" -base64-arraybuffer@0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" - base64-js@^1.0.2: version "1.2.0" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.0.tgz#a39992d723584811982be5e290bb6a53d86700f1" -base64id@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/base64id/-/base64id-0.1.0.tgz#02ce0fdeee0cef4f40080e1e73e834f0b1bfce3f" - batch@0.5.3: version "0.5.3" resolved "https://registry.yarnpkg.com/batch/-/batch-0.5.3.tgz#3f3414f380321743bfc1042f9a83ff1d5824d464" @@ -798,12 +772,6 @@ beeper@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/beeper/-/beeper-1.1.1.tgz#e6d5ea8c5dad001304a70b22638447f69cb2f809" -better-assert@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" - dependencies: - callsite "1.0.0" - big.js@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.1.3.tgz#4cada2193652eb3ca9ec8e55c9015669c9806978" @@ -818,10 +786,6 @@ bl@~1.1.2: dependencies: readable-stream "~2.0.5" -blob@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921" - block-stream@*: version "0.0.9" resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" @@ -863,55 +827,6 @@ browser-resolve@^1.11.2: dependencies: resolve "1.1.7" -browser-sync-client@2.4.4: - version "2.4.4" - resolved "https://registry.yarnpkg.com/browser-sync-client/-/browser-sync-client-2.4.4.tgz#e2a6c27f770e0ad0ffed76964dfb6a971fcf55eb" - dependencies: - etag "^1.7.0" - fresh "^0.3.0" - -browser-sync-ui@0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/browser-sync-ui/-/browser-sync-ui-0.6.2.tgz#9e7994004d463e55a024bdd149583b11ad8f87f3" - dependencies: - async-each-series "0.1.1" - connect-history-api-fallback "^1.1.0" - immutable "^3.7.6" - server-destroy "1.0.1" - stream-throttle "^0.1.3" - weinre "^2.0.0-pre-I0Z7U9OV" - -browser-sync@^2.18.6: - version "2.18.6" - resolved "https://registry.yarnpkg.com/browser-sync/-/browser-sync-2.18.6.tgz#7b303ea8905eaa20629e6c5d3e820c32ad96bb24" - dependencies: - browser-sync-client "2.4.4" - browser-sync-ui "0.6.2" - bs-recipes "1.3.4" - chokidar "1.6.1" - connect "3.5.0" - dev-ip "^1.0.1" - easy-extender "2.3.2" - eazy-logger "3.0.2" - emitter-steward "^1.0.0" - fs-extra "1.0.0" - http-proxy "1.15.2" - immutable "3.8.1" - localtunnel "1.8.2" - micromatch "2.3.11" - opn "4.0.2" - portscanner "2.1.1" - qs "6.2.1" - resp-modifier "6.0.2" - rx "4.1.0" - serve-index "1.8.0" - serve-static "1.11.1" - server-destroy "1.0.1" - socket.io "1.6.0" - socket.io-client "1.6.0" - ua-parser-js "0.7.12" - yargs "6.4.0" - browserify-aes@0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-0.4.0.tgz#067149b668df31c4b58533e02d01e806d8608e2c" @@ -930,35 +845,12 @@ browserslist@^1.0.1, browserslist@^1.5.2, browserslist@~1.5.1: dependencies: caniuse-db "^1.0.30000604" -bs-recipes@1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/bs-recipes/-/bs-recipes-1.3.4.tgz#0d2d4d48a718c8c044769fdc4f89592dc8b69585" - bser@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/bser/-/bser-1.0.2.tgz#381116970b2a6deea5646dd15dd7278444b56169" dependencies: node-int64 "^0.4.0" -buble@^0.12.0: - version "0.12.5" - resolved "https://registry.yarnpkg.com/buble/-/buble-0.12.5.tgz#c66ffe92f9f4a3c65d3256079b711e2bd0bc5013" - dependencies: - acorn "^3.1.0" - acorn-jsx "^3.0.1" - acorn-object-spread "^1.0.0" - chalk "^1.1.3" - magic-string "^0.14.0" - minimist "^1.2.0" - os-homedir "^1.0.1" - -bubleify@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/bubleify/-/bubleify-0.5.1.tgz#f65c47cee31b80cad8b9e747bbe187d7fe51e927" - dependencies: - buble "^0.12.0" - object-assign "^4.0.1" - buffer-shims@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" @@ -979,6 +871,10 @@ builtin-status-codes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" +bytes@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.3.0.tgz#d5b680a165b6201739acb611542aabc2d8ceb070" + caching-transform@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/caching-transform/-/caching-transform-1.0.1.tgz#6dbdb2f20f8d8fbce79f3e94e9d1742dcdf5c0a1" @@ -993,10 +889,6 @@ caller-path@^0.1.0: dependencies: callsites "^0.2.0" -callsite@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" - callsites@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" @@ -1019,7 +911,7 @@ camelcase-keys@^2.0.0: camelcase "^2.0.0" map-obj "^1.0.0" -camelcase@^1.0.2, camelcase@^1.2.1: +camelcase@^1.0.2: version "1.2.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" @@ -1094,7 +986,7 @@ cheerio@^0.22.0: lodash.reject "^4.4.0" lodash.some "^4.4.0" -chokidar@1.6.1, chokidar@^1.0.0: +chokidar@^1.0.0: version "1.6.1" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2" dependencies: @@ -1171,7 +1063,7 @@ cliui@^2.1.0: right-align "^0.1.1" wordwrap "0.0.2" -cliui@^3.0.3, cliui@^3.2.0: +cliui@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" dependencies: @@ -1183,10 +1075,6 @@ clone-stats@^0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz#b88f94a82cf38b8791d58046ea4029ad88ca99d1" -clone@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/clone/-/clone-0.2.0.tgz#c6126a90ad4f72dbf5acdb243cc37724fe93fc1f" - clone@^1.0.0, clone@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149" @@ -1257,7 +1145,7 @@ commander@2.8.x: dependencies: graceful-readlink ">= 1.0.0" -commander@2.9.x, commander@^2.2.0, commander@^2.8.1, commander@^2.9.0: +commander@2.9.x, commander@^2.8.1, commander@^2.9.0: version "2.9.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" dependencies: @@ -1267,21 +1155,22 @@ commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" -component-bind@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" - -component-emitter@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.1.2.tgz#296594f2753daa63996d2af08d15a95116c9aec3" - -component-emitter@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" +compressible@~2.0.8: + version "2.0.9" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.9.tgz#6daab4e2b599c2770dd9e21e7a891b1c5a755425" + dependencies: + mime-db ">= 1.24.0 < 2" -component-inherit@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" +compression@^1.5.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.6.2.tgz#cceb121ecc9d09c52d7ad0c3350ea93ddd402bc3" + dependencies: + accepts "~1.3.3" + bytes "2.3.0" + compressible "~2.0.8" + debug "~2.2.0" + on-headers "~1.0.1" + vary "~1.1.0" concat-map@0.0.1: version "0.0.1" @@ -1295,27 +1184,10 @@ concat-stream@^1.4.6: readable-stream "^2.2.2" typedarray "^0.0.6" -connect-history-api-fallback@^1.1.0: +connect-history-api-fallback@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.3.0.tgz#e51d17f8f0ef0db90a64fdb47de3051556e9f169" -connect@1.x: - version "1.9.2" - resolved "https://registry.yarnpkg.com/connect/-/connect-1.9.2.tgz#42880a22e9438ae59a8add74e437f58ae8e52807" - dependencies: - formidable "1.0.x" - mime ">= 0.0.1" - qs ">= 0.4.0" - -connect@3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/connect/-/connect-3.5.0.tgz#b357525a0b4c1f50599cd983e1d9efeea9677198" - dependencies: - debug "~2.2.0" - finalhandler "0.5.0" - parseurl "~1.3.1" - utils-merge "1.0.0" - console-browserify@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" @@ -1334,14 +1206,26 @@ contains-path@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" +content-disposition@0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.1.tgz#87476c6a67c8daa87e32e87616df883ba7fb071b" + content-type-parser@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/content-type-parser/-/content-type-parser-1.0.1.tgz#c3e56988c53c65127fb46d4032a3a900246fdc94" +content-type@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.2.tgz#b7d113aee7a8dd27bd21133c4dc2529df1721eed" + convert-source-map@^1.1.0, convert-source-map@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.3.0.tgz#e9f3e9c6e2728efc2676696a70eb382f73106a67" +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + cookie@0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" @@ -1565,12 +1449,6 @@ debug@2.2.0, debug@^2.1.1, debug@^2.2.0, debug@~2.2.0: dependencies: ms "0.7.1" -debug@2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.3.3.tgz#40c453e67e6e13c901ddec317af8986cda9eff8c" - dependencies: - ms "0.7.2" - debug@~0.7.4: version "0.7.4" resolved "https://registry.yarnpkg.com/debug/-/debug-0.7.4.tgz#06e1ea8082c2cb14e39806e22e2f6f757f92af39" @@ -1593,12 +1471,6 @@ default-require-extensions@^1.0.0: dependencies: strip-bom "^2.0.0" -defaults@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" - dependencies: - clone "^1.0.2" - define-properties@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" @@ -1634,30 +1506,16 @@ depd@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.0.tgz#e1bd82c6aab6ced965b97b88b17ed3e528ca18c3" -deprecated@^0.0.1: - version "0.0.1" - resolved "http://registry.npmjs.org/deprecated/-/deprecated-0.0.1.tgz#f9c9af5464afa1e7a971458a8bdef2aa94d5bb19" - destroy@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" -detect-file@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-0.1.0.tgz#4935dedfd9488648e006b0129566e9386711ea63" - dependencies: - fs-exists-sync "^0.1.0" - detect-indent@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" dependencies: repeating "^2.0.0" -dev-ip@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/dev-ip/-/dev-ip-1.0.1.tgz#a76a3ed1855be7a012bb8ac16cb80f3c00dc28f0" - diff@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9" @@ -1725,18 +1583,6 @@ duplexer2@0.0.2: dependencies: readable-stream "~1.1.9" -easy-extender@2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/easy-extender/-/easy-extender-2.3.2.tgz#3d3248febe2b159607316d8f9cf491c16648221d" - dependencies: - lodash "^3.10.1" - -eazy-logger@3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/eazy-logger/-/eazy-logger-3.0.2.tgz#a325aa5e53d13a2225889b2ac4113b2b9636f4fc" - dependencies: - tfunk "^3.0.1" - ecc-jsbn@~0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" @@ -1747,10 +1593,6 @@ ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" -emitter-steward@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/emitter-steward/-/emitter-steward-1.0.0.tgz#f3411ade9758a7565df848b2da0cbbd1b46cbd64" - emojis-list@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" @@ -1765,51 +1607,6 @@ encoding@^0.1.11: dependencies: iconv-lite "~0.4.13" -end-of-stream@~0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-0.1.5.tgz#8e177206c3c80837d85632e8b9359dfe8b2f6eaf" - dependencies: - once "~1.3.0" - -engine.io-client@1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-1.8.0.tgz#7b730e4127414087596d9be3c88d2bc5fdb6cf5c" - dependencies: - component-emitter "1.2.1" - component-inherit "0.0.3" - debug "2.3.3" - engine.io-parser "1.3.1" - has-cors "1.1.0" - indexof "0.0.1" - parsejson "0.0.3" - parseqs "0.0.5" - parseuri "0.0.5" - ws "1.1.1" - xmlhttprequest-ssl "1.5.3" - yeast "0.1.2" - -engine.io-parser@1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-1.3.1.tgz#9554f1ae33107d6fbd170ca5466d2f833f6a07cf" - dependencies: - after "0.8.1" - arraybuffer.slice "0.0.6" - base64-arraybuffer "0.1.5" - blob "0.0.4" - has-binary "0.1.6" - wtf-8 "1.0.0" - -engine.io@1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-1.8.0.tgz#3eeb5f264cb75dbbec1baaea26d61f5a4eace2aa" - dependencies: - accepts "1.3.3" - base64id "0.1.0" - cookie "0.3.1" - debug "2.3.3" - engine.io-parser "1.3.1" - ws "1.1.1" - enhanced-resolve@~0.9.0: version "0.9.1" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz#4d6e689b3725f86090927ccc86cd9f1635b89e2e" @@ -2116,7 +1913,7 @@ esutils@^2.0.0, esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" -etag@^1.7.0, etag@~1.7.0: +etag@~1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/etag/-/etag-1.7.0.tgz#03d30b5f67dd6e632d2945d30d6652731a34d5d8" @@ -2135,6 +1932,12 @@ events@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" +eventsource@~0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232" + dependencies: + original ">=0.0.5" + exec-sh@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.2.0.tgz#14f75de3f20d286ef933099b2ce50a90359cef10" @@ -2157,22 +1960,38 @@ expand-range@^1.8.1: dependencies: fill-range "^2.1.0" -expand-tilde@^1.2.1, expand-tilde@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-1.2.2.tgz#0b81eba897e5a3d31d1c3d102f8f01441e559449" +express@^4.13.3: + version "4.14.0" + resolved "https://registry.yarnpkg.com/express/-/express-4.14.0.tgz#c1ee3f42cdc891fb3dc650a8922d51ec847d0d66" dependencies: - os-homedir "^1.0.1" - -express@2.5.x: - version "2.5.11" - resolved "https://registry.yarnpkg.com/express/-/express-2.5.11.tgz#4ce8ea1f3635e69e49f0ebb497b6a4b0a51ce6f0" - dependencies: - connect "1.x" - mime "1.2.4" - mkdirp "0.3.0" - qs "0.4.x" + accepts "~1.3.3" + array-flatten "1.1.1" + content-disposition "0.5.1" + content-type "~1.0.2" + cookie "0.3.1" + cookie-signature "1.0.6" + debug "~2.2.0" + depd "~1.1.0" + encodeurl "~1.0.1" + escape-html "~1.0.3" + etag "~1.7.0" + finalhandler "0.5.0" + fresh "0.3.0" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "~2.3.0" + parseurl "~1.3.1" + path-to-regexp "0.1.7" + proxy-addr "~1.1.2" + qs "6.2.0" + range-parser "~1.2.0" + send "0.14.1" + serve-static "~1.11.1" + type-is "~1.6.13" + utils-merge "1.0.0" + vary "~1.1.0" -extend@^3.0.0, extend@~3.0.0: +extend@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4" @@ -2209,6 +2028,18 @@ fastparse@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.1.tgz#d1e2643b38a94d7583b479060e6c4affc94071f8" +faye-websocket@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" + dependencies: + websocket-driver ">=0.5.1" + +faye-websocket@~0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.0.tgz#d9ccf0e789e7db725d74bc4877d23aa42972ac50" + dependencies: + websocket-driver ">=0.5.1" + fb-watchman@^1.8.0, fb-watchman@^1.9.0: version "1.9.0" resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-1.9.0.tgz#6f268f1f347a6b3c875d1e89da7e1ed79adfc0ec" @@ -2287,10 +2118,6 @@ find-cache-dir@^0.1.1: mkdirp "^0.5.1" pkg-dir "^1.0.0" -find-index@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/find-index/-/find-index-0.1.1.tgz#675d358b2ca3892d795a1ab47232f8b6e2e0dde4" - find-up@^1.0.0, find-up@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" @@ -2298,35 +2125,6 @@ find-up@^1.0.0, find-up@^1.1.2: path-exists "^2.0.0" pinkie-promise "^2.0.0" -findup-sync@^0.4.2: - version "0.4.3" - resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-0.4.3.tgz#40043929e7bc60adf0b7f4827c4c6e75a0deca12" - dependencies: - detect-file "^0.1.0" - is-glob "^2.0.1" - micromatch "^2.3.7" - resolve-dir "^0.1.0" - -fined@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/fined/-/fined-1.0.2.tgz#5b28424b760d7598960b7ef8480dff8ad3660e97" - dependencies: - expand-tilde "^1.2.1" - lodash.assignwith "^4.0.7" - lodash.isempty "^4.2.1" - lodash.isplainobject "^4.0.4" - lodash.isstring "^4.0.1" - lodash.pick "^4.2.1" - parse-filepath "^1.0.1" - -first-chunk-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz#59bfb50cd905f60d7c394cd3d9acaab4e6ad934e" - -flagged-respawn@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-0.3.2.tgz#ff191eddcd7088a675b2610fffc976be9b8074b5" - flat-cache@^1.2.1: version "1.2.2" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.2.2.tgz#fa86714e72c21db88601761ecf2f555d1abc6b96" @@ -2381,11 +2179,11 @@ form-data@~2.1.1: combined-stream "^1.0.5" mime-types "^2.1.12" -formidable@1.0.x: - version "1.0.17" - resolved "https://registry.yarnpkg.com/formidable/-/formidable-1.0.17.tgz#ef5491490f9433b705faa77249c99029ae348559" +forwarded@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.0.tgz#19ef9874c4ae1c297bcf078fde63a09b66a84363" -fresh@0.3.0, fresh@^0.3.0: +fresh@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.3.0.tgz#651f838e22424e7566de161d8358caa199f83d4f" @@ -2395,18 +2193,6 @@ front-matter@2.1.0: dependencies: js-yaml "^3.4.6" -fs-exists-sync@^0.1.0: - version "0.1.0" - resolved "http://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add" - -fs-extra@1.0.0, fs-extra@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-1.0.0.tgz#cd3ce5f7e7cb6145883fcae3191e9877f8587950" - dependencies: - graceful-fs "^4.1.2" - jsonfile "^2.1.0" - klaw "^1.0.0" - fs-extra@^0.24.0: version "0.24.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.24.0.tgz#d4e4342a96675cb7846633a6099249332b539952" @@ -2416,6 +2202,14 @@ fs-extra@^0.24.0: path-is-absolute "^1.0.0" rimraf "^2.2.8" +fs-extra@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-1.0.0.tgz#cd3ce5f7e7cb6145883fcae3191e9877f8587950" + dependencies: + graceful-fs "^4.1.2" + jsonfile "^2.1.0" + klaw "^1.0.0" + fs-promise@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/fs-promise/-/fs-promise-0.3.1.tgz#bf34050368f24d6dc9dfc6688ab5cead8f86842a" @@ -2476,12 +2270,6 @@ gauge@~2.7.1: supports-color "^0.2.0" wide-align "^1.1.0" -gaze@^0.5.1: - version "0.5.2" - resolved "https://registry.yarnpkg.com/gaze/-/gaze-0.5.2.tgz#40b709537d24d1d45767db5a908689dfe69ac44f" - dependencies: - globule "~0.1.0" - gaze@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.2.tgz#847224677adb8870d679257ed3388fdb61e40105" @@ -2525,38 +2313,6 @@ glob-parent@^2.0.0: dependencies: is-glob "^2.0.0" -glob-stream@^3.1.5: - version "3.1.18" - resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-3.1.18.tgz#9170a5f12b790306fdfe598f313f8f7954fd143b" - dependencies: - glob "^4.3.1" - glob2base "^0.0.12" - minimatch "^2.0.1" - ordered-read-streams "^0.1.0" - through2 "^0.6.1" - unique-stream "^1.0.0" - -glob-watcher@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/glob-watcher/-/glob-watcher-0.0.6.tgz#b95b4a8df74b39c83298b0c05c978b4d9a3b710b" - dependencies: - gaze "^0.5.1" - -glob2base@^0.0.12: - version "0.0.12" - resolved "http://registry.npmjs.org/glob2base/-/glob2base-0.0.12.tgz#9d419b3e28f12e83a362164a277055922c9c0d56" - dependencies: - find-index "^0.1.1" - -glob@^4.3.1: - version "4.5.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-4.5.3.tgz#c6cb73d3226c1efef04de3c56d012f03377ee15f" - dependencies: - inflight "^1.0.4" - inherits "2" - minimatch "^2.0.1" - once "^1.3.0" - glob@^5.0.3: version "5.0.15" resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" @@ -2578,30 +2334,6 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@~7.1.1: once "^1.3.0" path-is-absolute "^1.0.0" -glob@~3.1.21: - version "3.1.21" - resolved "https://registry.yarnpkg.com/glob/-/glob-3.1.21.tgz#d29e0a055dea5138f4d07ed40e8982e83c2066cd" - dependencies: - graceful-fs "~1.2.0" - inherits "1" - minimatch "~0.2.11" - -global-modules@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-0.2.3.tgz#ea5a3bed42c6d6ce995a4f8a1269b5dae223828d" - dependencies: - global-prefix "^0.1.4" - is-windows "^0.2.0" - -global-prefix@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-0.1.5.tgz#8d3bc6b8da3ca8112a160d8d496ff0462bfef78f" - dependencies: - homedir-polyfill "^1.0.0" - ini "^1.3.4" - is-windows "^0.2.0" - which "^1.2.12" - globals@^9.0.0, globals@^9.14.0, globals@^9.2.0: version "9.14.0" resolved "https://registry.yarnpkg.com/globals/-/globals-9.14.0.tgz#8859936af0038741263053b39d0e76ca241e4034" @@ -2636,14 +2368,6 @@ globule@^1.0.0: lodash "~4.16.4" minimatch "~3.0.2" -globule@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/globule/-/globule-0.1.0.tgz#d9c8edde1da79d125a151b79533b978676346ae5" - dependencies: - glob "~3.1.21" - lodash "~1.0.1" - minimatch "~0.2.11" - glogg@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.0.tgz#7fe0f199f57ac906cf512feead8f90ee4a284fc5" @@ -2656,20 +2380,10 @@ gonzales-pe@3.4.7: dependencies: minimist "1.1.x" -graceful-fs@^3.0.0: - version "3.0.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-3.0.11.tgz#7613c778a1afea62f25c630a086d7f3acbbdd818" - dependencies: - natives "^1.1.0" - graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" -graceful-fs@~1.2.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-1.2.3.tgz#15a4806a57547cb2d2dbf27f42e89a8c3451b364" - "graceful-readlink@>= 1.0.0": version "1.0.1" resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" @@ -2678,7 +2392,7 @@ growly@^1.2.0: version "1.3.0" resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" -gulp-util@^3.0.0, gulp-util@^3.0.7: +gulp-util@^3.0.7: version "3.0.8" resolved "https://registry.yarnpkg.com/gulp-util/-/gulp-util-3.0.8.tgz#0054e1e744502e27c04c187c3ecc505dd54bbb4f" dependencies: @@ -2701,24 +2415,6 @@ gulp-util@^3.0.0, gulp-util@^3.0.7: through2 "^2.0.0" vinyl "^0.5.0" -gulp@^3.9.1: - version "3.9.1" - resolved "https://registry.yarnpkg.com/gulp/-/gulp-3.9.1.tgz#571ce45928dd40af6514fc4011866016c13845b4" - dependencies: - archy "^1.0.0" - chalk "^1.0.0" - deprecated "^0.0.1" - gulp-util "^3.0.0" - interpret "^1.0.0" - liftoff "^2.1.0" - minimist "^1.1.0" - orchestrator "^0.3.0" - pretty-hrtime "^1.0.0" - semver "^4.1.0" - tildify "^1.0.0" - v8flags "^2.0.2" - vinyl-fs "^0.3.0" - gulplog@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/gulplog/-/gulplog-1.0.0.tgz#e28c4d45d05ecbbed818363ce8f9c5926229ffe5" @@ -2754,22 +2450,6 @@ has-ansi@^2.0.0: dependencies: ansi-regex "^2.0.0" -has-binary@0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/has-binary/-/has-binary-0.1.6.tgz#25326f39cfa4f616ad8787894e3af2cfbc7b6e10" - dependencies: - isarray "0.0.1" - -has-binary@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/has-binary/-/has-binary-0.1.7.tgz#68e61eb16210c9545a0a5cce06a873912fe1e68c" - dependencies: - isarray "0.0.1" - -has-cors@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39" - has-flag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" @@ -2827,12 +2507,6 @@ home-or-tmp@^2.0.0: os-homedir "^1.0.0" os-tmpdir "^1.0.1" -homedir-polyfill@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc" - dependencies: - parse-passwd "^1.0.0" - hosted-git-info@^2.1.4: version "2.1.5" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.1.5.tgz#0ba81d90da2e25ab34a332e6ec77936e1598118b" @@ -2899,9 +2573,18 @@ http-errors@~1.5.0: setprototypeof "1.0.2" statuses ">= 1.3.1 < 2" -http-proxy@1.15.2: - version "1.15.2" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.15.2.tgz#642fdcaffe52d3448d2bda3b0079e9409064da31" +http-proxy-middleware@~0.17.1: + version "0.17.3" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.17.3.tgz#940382147149b856084f5534752d5b5a8168cd1d" + dependencies: + http-proxy "^1.16.2" + is-glob "^3.1.0" + lodash "^4.17.2" + micromatch "^2.3.11" + +http-proxy@^1.16.2: + version "1.16.2" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.16.2.tgz#06dff292952bf64dbe8471fa9df73066d4f37742" dependencies: eventemitter3 "1.x.x" requires-port "1.x.x" @@ -2944,10 +2627,6 @@ ignore@^3.1.2, ignore@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.2.0.tgz#8d88f03c3002a0ac52114db25d2c673b0bf1e435" -immutable@3.8.1, immutable@^3.7.6: - version "3.8.1" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.1.tgz#200807f11ab0f72710ea485542de088075f68cd2" - imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" @@ -2977,10 +2656,6 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-1.0.2.tgz#ca4309dadee6b54cc0b8d247e8d7c7a0975bdc9b" - inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" @@ -2989,7 +2664,7 @@ inherits@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" -ini@^1.3.4, ini@~1.3.0: +ini@~1.3.0: version "1.3.4" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" @@ -3029,17 +2704,14 @@ invert-kv@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" +ipaddr.js@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.2.0.tgz#8aba49c9192799585bdd643e0ccb50e8ae777ba4" + is-absolute-url@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" -is-absolute@^0.2.3: - version "0.2.6" - resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-0.2.6.tgz#20de69f3db942ef2d87b9c2da36f172235b1b5eb" - dependencies: - is-relative "^0.2.1" - is-windows "^0.2.0" - is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" @@ -3092,6 +2764,10 @@ is-extglob@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" +is-extglob@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + is-finite@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" @@ -3114,6 +2790,12 @@ is-glob@^2.0.0, is-glob@^2.0.1: dependencies: is-extglob "^1.0.0" +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + dependencies: + is-extglob "^2.1.0" + is-my-json-valid@^2.10.0, is-my-json-valid@^2.12.4: version "2.15.0" resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz#936edda3ca3c211fd98f3b2d3e08da43f7b2915b" @@ -3123,13 +2805,6 @@ is-my-json-valid@^2.10.0, is-my-json-valid@^2.12.4: jsonpointer "^4.0.0" xtend "^4.0.0" -is-number-like@^1.0.3: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-number-like/-/is-number-like-1.0.7.tgz#a38d6b0fd2cd4282449128859eed86c03fd23552" - dependencies: - bubleify "^0.5.1" - lodash.isfinite "^3.3.2" - is-number@^2.0.2, is-number@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" @@ -3172,12 +2847,6 @@ is-regex@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.3.tgz#0d55182bddf9f2fde278220aec3a75642c908637" -is-relative@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-0.2.1.tgz#d27f4c7d516d175fb610db84bbeef23c3bc97aa5" - dependencies: - is-unc-path "^0.1.1" - is-resolvable@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.0.tgz#8df57c61ea2e3c501408d100fb013cf8d6e0cc62" @@ -3206,20 +2875,10 @@ is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" -is-unc-path@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-0.1.2.tgz#6ab053a72573c10250ff416a3814c35178af39b9" - dependencies: - unc-path-regex "^0.1.0" - is-utf8@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" -is-windows@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-0.2.0.tgz#de1aa6d63ea29dd248737b69f1ff8b8002d2108c" - isarray@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" @@ -3578,7 +3237,7 @@ json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" -json3@3.3.2: +json3@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" @@ -3648,24 +3307,6 @@ levn@^0.3.0, levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" -liftoff@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/liftoff/-/liftoff-2.3.0.tgz#a98f2ff67183d8ba7cfaca10548bd7ff0550b385" - dependencies: - extend "^3.0.0" - findup-sync "^0.4.2" - fined "^1.0.1" - flagged-respawn "^0.3.2" - lodash.isplainobject "^4.0.4" - lodash.isstring "^4.0.1" - lodash.mapvalues "^4.4.0" - rechoir "^0.6.2" - resolve "^1.1.7" - -limiter@^1.0.5: - version "1.1.0" - resolved "https://registry.yarnpkg.com/limiter/-/limiter-1.1.0.tgz#6e2bd12ca3fcdaa11f224e2e53c896df3f08d913" - load-json-file@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" @@ -3685,15 +3326,6 @@ loader-utils@^0.2.11, loader-utils@^0.2.15, loader-utils@^0.2.16, loader-utils@^ json5 "^0.5.0" object-assign "^4.0.1" -localtunnel@1.8.2: - version "1.8.2" - resolved "https://registry.yarnpkg.com/localtunnel/-/localtunnel-1.8.2.tgz#913051e8328b51f75ad8a22ad1f5c5b8c599a359" - dependencies: - debug "2.2.0" - openurl "1.1.0" - request "2.78.0" - yargs "3.29.0" - lodash._arraycopy@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lodash._arraycopy/-/lodash._arraycopy-3.0.0.tgz#76e7b7c1f1fb92547374878a562ed06a3e50f6e1" @@ -3772,10 +3404,6 @@ lodash.assignin@^4.0.9: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.assignin/-/lodash.assignin-4.2.0.tgz#ba8df5fb841eb0a3e8044232b0e263a8dc6a28a2" -lodash.assignwith@^4.0.7: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.assignwith/-/lodash.assignwith-4.2.0.tgz#127a97f02adc41751a954d24b0de17e100e038eb" - lodash.bind@^4.1.4: version "4.2.1" resolved "https://registry.yarnpkg.com/lodash.bind/-/lodash.bind-4.2.1.tgz#7ae3017e939622ac31b7d7d7dcb1b34db1690d35" @@ -3841,22 +3469,6 @@ lodash.isarray@^3.0.0: version "3.0.4" resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" -lodash.isempty@^4.2.1: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.isempty/-/lodash.isempty-4.4.0.tgz#6f86cbedd8be4ec987be9aaf33c9684db1b31e7e" - -lodash.isfinite@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz#fb89b65a9a80281833f0b7478b3a5104f898ebb3" - -lodash.isplainobject@^4.0.4: - version "4.0.6" - resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" - -lodash.isstring@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" - lodash.kebabcase@^4.0.0: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" @@ -3873,10 +3485,6 @@ lodash.map@^4.4.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.map/-/lodash.map-4.6.0.tgz#771ec7839e3473d9c4cde28b19394c3562f4f6d3" -lodash.mapvalues@^4.4.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz#1bafa5005de9dd6f4f26668c30ca37230cc9689c" - lodash.memoize@^4.1.0: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" @@ -3934,18 +3542,10 @@ lodash.uniq@^4.3.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" -lodash@^3.10.1: - version "3.10.1" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" - lodash@^4.0.0, lodash@^4.14.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.2.0, lodash@^4.3.0: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" -lodash@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-1.0.2.tgz#8f57560c83b59fc270bd3d561b690043430e2551" - lodash@~4.16.4: version "4.16.6" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.16.6.tgz#d22c9ac660288f3843e16ba7d2b5d06cca27d777" @@ -3975,10 +3575,6 @@ lower-case@^1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.3.tgz#c92393d976793eee5ba4edb583cf8eae35bd9bfb" -lru-cache@2: - version "2.7.3" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.7.3.tgz#6d4524e8b955f95d4f5b58851ce21dd72fb4e952" - lru-cache@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e" @@ -3990,22 +3586,12 @@ macaddress@^0.2.8: version "0.2.8" resolved "https://registry.yarnpkg.com/macaddress/-/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12" -magic-string@^0.14.0: - version "0.14.0" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.14.0.tgz#57224aef1701caeed273b17a39a956e72b172462" - dependencies: - vlq "^0.2.1" - makeerror@1.0.x: version "1.0.11" resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" dependencies: tmpl "1.0.x" -map-cache@^0.2.0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - map-obj@^1.0.0, map-obj@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" @@ -4040,6 +3626,10 @@ md5-o-matic@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/md5-o-matic/-/md5-o-matic-0.1.1.tgz#822bccd65e117c514fab176b25945d54100a03c3" +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + memory-fs@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.2.0.tgz#f2bb25368bc121e391c2520de92969caee0a0290" @@ -4051,6 +3641,13 @@ memory-fs@^0.3.0, memory-fs@~0.3.0: errno "^0.1.3" readable-stream "^2.0.1" +memory-fs@~0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + meow@^3.7.0: version "3.7.0" resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" @@ -4066,6 +3663,10 @@ meow@^3.7.0: redent "^1.0.0" trim-newlines "^1.0.0" +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + merge-source-map@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.0.3.tgz#da1415f2722a5119db07b14c4f973410863a2abf" @@ -4076,7 +3677,11 @@ merge@^1.1.3, merge@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da" -micromatch@2.3.11, micromatch@^2.1.5, micromatch@^2.3.11, micromatch@^2.3.7: +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + +micromatch@^2.1.5, micromatch@^2.3.11: version "2.3.11" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" dependencies: @@ -4094,21 +3699,17 @@ micromatch@2.3.11, micromatch@^2.1.5, micromatch@^2.3.11, micromatch@^2.3.7: parse-glob "^3.0.4" regex-cache "^0.4.2" -mime-db@~1.26.0: +"mime-db@>= 1.24.0 < 2", mime-db@~1.26.0: version "1.26.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.26.0.tgz#eaffcd0e4fc6935cf8134da246e2e6c35305adff" -mime-types@^2.1.11, mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.7: +mime-types@^2.1.11, mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.13, mime-types@~2.1.7: version "2.1.14" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.14.tgz#f7ef7d97583fcaf3b7d282b6f8b5679dab1e94ee" dependencies: mime-db "~1.26.0" -mime@1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.2.4.tgz#11b5fdaf29c2509255176b80ad520294f5de92b7" - -mime@1.3.4, "mime@>= 0.0.1": +mime@1.3.4, mime@^1.3.4: version "1.3.4" resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53" @@ -4118,19 +3719,6 @@ mime@1.3.4, "mime@>= 0.0.1": dependencies: brace-expansion "^1.0.0" -minimatch@^2.0.1: - version "2.0.10" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-2.0.10.tgz#8d087c39c6b38c001b97fca7ce6d0e1e80afbac7" - dependencies: - brace-expansion "^1.0.0" - -minimatch@~0.2.11: - version "0.2.14" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.2.14.tgz#c74e780574f63c6f9a090e90efbe6ef53a6a756a" - dependencies: - lru-cache "2" - sigmund "~1.0.0" - minimist@0.0.8, minimist@~0.0.1: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" @@ -4143,10 +3731,6 @@ minimist@1.2.0, minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2 version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" -mkdirp@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.3.0.tgz#1bbf5ab1ba827af23575143490426455f481fe1e" - "mkdirp@>=0.5 0", 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" @@ -4161,10 +3745,6 @@ ms@0.7.1: version "0.7.1" resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" -ms@0.7.2: - version "0.7.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" - multipipe@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/multipipe/-/multipipe-0.1.2.tgz#2a8f2ddf70eed564dff2d57f1e1a137d9f05078b" @@ -4179,10 +3759,6 @@ nan@^2.3.0, nan@^2.3.2: version "2.5.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.5.0.tgz#aa8f1e34531d807e9e27755b234b4a6ec0c152a8" -natives@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/natives/-/natives-1.1.0.tgz#e9ff841418a6b2ec7a495e939984f78f163e6e31" - natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" @@ -4319,7 +3895,7 @@ node-uuid@~1.4.7: version "1.4.7" resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.7.tgz#6da5a17668c4b3dd59623bda11cf7fa4c1f60a6f" -"nopt@2 || 3", nopt@3.0.x, nopt@~3.0.6: +"nopt@2 || 3", nopt@~3.0.6: version "3.0.6" resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" dependencies: @@ -4414,10 +3990,6 @@ oauth-sign@~0.8.1: version "0.8.2" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" -object-assign@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0" - object-assign@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2" @@ -4426,10 +3998,6 @@ object-assign@^4.0.1, object-assign@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" -object-component@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291" - object-is@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.1.tgz#0aa60ec9989a0b3ed795cf4d06f62cf1ad6539b6" @@ -4438,10 +4006,6 @@ object-keys@^1.0.10, object-keys@^1.0.8: version "1.0.11" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" -object-path@^0.9.0: - version "0.9.2" - resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.9.2.tgz#0fd9a74fc5fad1ae3968b586bda5c632bd6c05a5" - object.assign@^4.0.4: version "4.0.4" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.0.4.tgz#b1c9cc044ef1b9fe63606fc141abbb32e14730cc" @@ -4481,7 +4045,11 @@ on-finished@~2.3.0: dependencies: ee-first "1.1.1" -once@^1.3.0, once@~1.3.0, once@~1.3.3: +on-headers@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7" + +once@^1.3.0, once@~1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20" dependencies: @@ -4497,18 +4065,11 @@ onetime@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" -openurl@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/openurl/-/openurl-1.1.0.tgz#e2f2189d999c04823201f083f0f1a7cd8903187a" - -opn@4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/opn/-/opn-4.0.2.tgz#7abc22e644dff63b0a96d5ab7f2790c0f01abc95" - dependencies: - object-assign "^4.0.1" - pinkie-promise "^2.0.0" +open@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/open/-/open-0.0.5.tgz#42c3e18ec95466b6bf0dc42f3a2945c3f0cad8fc" -optimist@^0.6.1, optimist@~0.6.0: +optimist@^0.6.1, optimist@~0.6.0, optimist@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" dependencies: @@ -4526,21 +4087,11 @@ optionator@^0.8.1, optionator@^0.8.2: type-check "~0.3.2" wordwrap "~1.0.0" -options@>=0.0.5: - version "0.0.6" - resolved "https://registry.yarnpkg.com/options/-/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f" - -orchestrator@^0.3.0: - version "0.3.8" - resolved "https://registry.yarnpkg.com/orchestrator/-/orchestrator-0.3.8.tgz#14e7e9e2764f7315fbac184e506c7aa6df94ad7e" +original@>=0.0.5: + version "1.0.0" + resolved "https://registry.yarnpkg.com/original/-/original-1.0.0.tgz#9147f93fa1696d04be61e01bd50baeaca656bd3b" dependencies: - end-of-stream "~0.1.5" - sequencify "~0.0.7" - stream-consume "~0.1.0" - -ordered-read-streams@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz#fd565a9af8eb4473ba69b6ed8a34352cb552f126" + url-parse "1.0.x" os-browserify@^0.2.0: version "0.2.1" @@ -4577,14 +4128,6 @@ param-case@2.1.x: dependencies: no-case "^2.2.0" -parse-filepath@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.1.tgz#159d6155d43904d16c10ef698911da1e91969b73" - dependencies: - is-absolute "^0.2.3" - map-cache "^0.2.0" - path-root "^0.1.1" - parse-glob@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" @@ -4600,32 +4143,10 @@ parse-json@^2.2.0: dependencies: error-ex "^1.2.0" -parse-passwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" - parse5@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/parse5/-/parse5-1.5.1.tgz#9b7f3b0de32be78dc2401b17573ccaf0f6f59d94" -parsejson@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/parsejson/-/parsejson-0.0.3.tgz#ab7e3759f209ece99437973f7d0f1f64ae0e64ab" - dependencies: - better-assert "~1.0.0" - -parseqs@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" - dependencies: - better-assert "~1.0.0" - -parseuri@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a" - dependencies: - better-assert "~1.0.0" - parseurl@~1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.1.tgz#c8ab8c9223ba34888aa64a297b28853bec18da56" @@ -4652,15 +4173,9 @@ path-parse@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" -path-root-regex@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/path-root-regex/-/path-root-regex-0.1.2.tgz#bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d" - -path-root@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/path-root/-/path-root-0.1.1.tgz#9a4a6814cac1c0cd73360a95f32083c8ea4745b7" - dependencies: - path-root-regex "^0.1.0" +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" path-type@^1.0.0: version "1.1.0" @@ -4714,13 +4229,6 @@ pluralize@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45" -portscanner@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/portscanner/-/portscanner-2.1.1.tgz#eabb409e4de24950f5a2a516d35ae769343fbb96" - dependencies: - async "1.5.2" - is-number-like "^1.0.3" - postcss-advanced-variables@1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/postcss-advanced-variables/-/postcss-advanced-variables-1.2.2.tgz#90a6213262e66a050a368b4a9c5d4778d72dbd74" @@ -5149,10 +4657,6 @@ pretty-format@^18.1.0: dependencies: ansi-styles "^2.2.1" -pretty-hrtime@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" - private@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/private/-/private-0.1.6.tgz#55c6a976d0f9bafb9924851350fe47b9b5fbb7c1" @@ -5175,6 +4679,13 @@ promise@^7.1.1: dependencies: asap "~2.0.3" +proxy-addr@~1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-1.1.3.tgz#dc97502f5722e888467b3fa2297a7b1ff47df074" + dependencies: + forwarded "~0.1.0" + ipaddr.js "1.2.0" + prr@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a" @@ -5195,15 +4706,15 @@ q@^1.1.2: version "1.4.1" resolved "https://registry.yarnpkg.com/q/-/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e" -qs@0.4.x: - version "0.4.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-0.4.2.tgz#3cac4c861e371a8c9c4770ac23cda8de639b8e5f" +qs@6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.0.tgz#3b7848c03c2dece69a9522b0fae8c4126d745f3b" -qs@6.2.1, qs@~6.2.0: +qs@~6.2.0: version "6.2.1" resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.1.tgz#ce03c5ff0935bc1d9d69a9f14cbd18e568d67625" -"qs@>= 0.4.0", qs@~6.3.0: +qs@~6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.0.tgz#f403b264f23bc01228c74131b407f18d5ea5d442" @@ -5222,6 +4733,10 @@ querystring@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" +querystringify@0.0.x: + version "0.0.4" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-0.0.4.tgz#0cf7f84f9463ff0ae51c4c4b142d95be37724d9c" + randomatic@^1.1.3: version "1.1.6" resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb" @@ -5229,7 +4744,7 @@ randomatic@^1.1.3: is-number "^2.0.2" kind-of "^3.0.2" -range-parser@~1.2.0: +range-parser@^1.0.3, range-parser@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" @@ -5290,7 +4805,7 @@ read-pkg@^1.0.0: normalize-package-data "^2.3.2" path-type "^1.0.0" -readable-stream@1.0, "readable-stream@>=1.0.33-1 <1.1.0-0": +readable-stream@1.0: version "1.0.34" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" dependencies: @@ -5474,32 +4989,7 @@ replace-ext@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz#29bbd92078a739f0bcce2b4ee41e837953522924" -request@2, request@2.78.0: - version "2.78.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.78.0.tgz#e1c8dec346e1c81923b24acdb337f11decabe9cc" - dependencies: - aws-sign2 "~0.6.0" - aws4 "^1.2.1" - caseless "~0.11.0" - combined-stream "~1.0.5" - extend "~3.0.0" - forever-agent "~0.6.1" - form-data "~2.1.1" - har-validator "~2.0.6" - hawk "~3.1.3" - http-signature "~1.1.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.7" - node-uuid "~1.4.7" - oauth-sign "~0.8.1" - qs "~6.3.0" - stringstream "~0.0.4" - tough-cookie "~2.3.0" - tunnel-agent "~0.4.1" - -request@2.75.0, request@^2.61.0: +request@2, request@2.75.0, request@^2.55.0, request@^2.61.0: version "2.75.0" resolved "https://registry.yarnpkg.com/request/-/request-2.75.0.tgz#d2b8268a286da13eaa5d01adf5d18cc90f657d93" dependencies: @@ -5525,7 +5015,7 @@ request@2.75.0, request@^2.61.0: tough-cookie "~2.3.0" tunnel-agent "~0.4.1" -request@^2.55.0, request@^2.79.0: +request@^2.79.0: version "2.79.0" resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de" dependencies: @@ -5569,17 +5059,10 @@ require-uncached@^1.0.2: caller-path "^0.1.0" resolve-from "^1.0.0" -requires-port@1.x.x: +requires-port@1.0.x, requires-port@1.x.x: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" -resolve-dir@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-0.1.1.tgz#b219259a5602fac5c5c496ad894a6e8cc430261e" - dependencies: - expand-tilde "^1.2.2" - global-modules "^0.2.3" - resolve-from@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" @@ -5592,17 +5075,10 @@ resolve@1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" -resolve@^1.1.6, resolve@^1.1.7, resolve@^1.2.0: +resolve@^1.1.6, resolve@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.2.0.tgz#9589c3f2f6149d1417a40becc1663db6ec6bc26c" -resp-modifier@6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/resp-modifier/-/resp-modifier-6.0.2.tgz#b124de5c4fbafcba541f48ffa73970f4aa456b4f" - dependencies: - debug "^2.2.0" - minimatch "^3.0.2" - restore-cursor@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" @@ -5640,10 +5116,6 @@ rx-lite@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102" -rx@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782" - sane@~1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/sane/-/sane-1.4.1.tgz#88f763d74040f5f0c256b6163db399bf110ac715" @@ -5697,7 +5169,7 @@ sax@^1.1.4, sax@~1.2.1: version "5.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" -"semver@2.x || 3.x || 4 || 5", semver@^4.1.0: +"semver@2.x || 3.x || 4 || 5": version "4.3.6" resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da" @@ -5719,11 +5191,7 @@ send@0.14.1: range-parser "~1.2.0" statuses "~1.3.0" -sequencify@~0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/sequencify/-/sequencify-0.0.7.tgz#90cff19d02e07027fd767f5ead3e7b95d1e7380c" - -serve-index@1.8.0: +serve-index@^1.7.2: version "1.8.0" resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.8.0.tgz#7c5d96c13fb131101f93c1c5774f8516a1e78d3b" dependencies: @@ -5735,7 +5203,7 @@ serve-index@1.8.0: mime-types "~2.1.11" parseurl "~1.3.1" -serve-static@1.11.1: +serve-static@~1.11.1: version "1.11.1" resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.11.1.tgz#d6cce7693505f733c759de57befc1af76c0f0805" dependencies: @@ -5744,10 +5212,6 @@ serve-static@1.11.1: parseurl "~1.3.1" send "0.14.1" -server-destroy@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/server-destroy/-/server-destroy-1.0.1.tgz#f13bf928e42b9c3e79383e61cc3998b5d14e6cdd" - set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" @@ -5784,10 +5248,6 @@ shellwords@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.0.tgz#66afd47b6a12932d9071cbfd98a52e785cd0ba14" -sigmund@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" - signal-exit@^2.0.0: version "2.1.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-2.1.2.tgz#375879b1f92ebc3b334480d038dc546a6d558564" @@ -5814,49 +5274,23 @@ sntp@1.x.x: dependencies: hoek "2.x.x" -socket.io-adapter@0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz#cb6d4bb8bec81e1078b99677f9ced0046066bb8b" - dependencies: - debug "2.3.3" - socket.io-parser "2.3.1" - -socket.io-client@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-1.6.0.tgz#5b668f4f771304dfeed179064708386fa6717853" - dependencies: - backo2 "1.0.2" - component-bind "1.0.0" - component-emitter "1.2.1" - debug "2.3.3" - engine.io-client "1.8.0" - has-binary "0.1.7" - indexof "0.0.1" - object-component "0.0.3" - parseuri "0.0.5" - socket.io-parser "2.3.1" - to-array "0.1.4" - -socket.io-parser@2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-2.3.1.tgz#dd532025103ce429697326befd64005fcfe5b4a0" +sockjs-client@^1.0.3: + version "1.1.1" + resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.1.tgz#284843e9a9784d7c474b1571b3240fca9dda4bb0" dependencies: - component-emitter "1.1.2" - debug "2.2.0" - isarray "0.0.1" - json3 "3.3.2" + debug "^2.2.0" + eventsource "~0.1.6" + faye-websocket "~0.11.0" + inherits "^2.0.1" + json3 "^3.3.2" + url-parse "^1.1.1" -socket.io@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-1.6.0.tgz#3e40d932637e6bd923981b25caf7c53e83b6e2e1" +sockjs@^0.3.15: + version "0.3.18" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.18.tgz#d9b289316ca7df77595ef299e075f0f937eb4207" dependencies: - debug "2.3.3" - engine.io "1.8.0" - has-binary "0.1.7" - object-assign "4.1.0" - socket.io-adapter "0.5.0" - socket.io-client "1.6.0" - socket.io-parser "2.3.1" + faye-websocket "^0.10.0" + uuid "^2.0.2" sort-keys@^1.0.0: version "1.1.2" @@ -5955,9 +5389,9 @@ stream-browserify@^2.0.1: inherits "~2.0.1" readable-stream "^2.0.2" -stream-consume@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/stream-consume/-/stream-consume-0.1.0.tgz#a41ead1a6d6081ceb79f65b061901b6d8f3d1d0f" +stream-cache@~0.0.1: + version "0.0.2" + resolved "https://registry.yarnpkg.com/stream-cache/-/stream-cache-0.0.2.tgz#1ac5ad6832428ca55667dbdee395dad4e6db118f" stream-http@^2.3.1: version "2.6.2" @@ -5969,13 +5403,6 @@ stream-http@^2.3.1: to-arraybuffer "^1.0.0" xtend "^4.0.0" -stream-throttle@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/stream-throttle/-/stream-throttle-0.1.3.tgz#add57c8d7cc73a81630d31cd55d3961cfafba9c3" - dependencies: - commander "^2.2.0" - limiter "^1.0.5" - strict-uri-encode@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" @@ -6017,13 +5444,6 @@ strip-ansi@^3.0.0, strip-ansi@^3.0.1: dependencies: ansi-regex "^2.0.0" -strip-bom@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-1.0.0.tgz#85b8862f3844b5a6d5ec8467a93598173a36f794" - dependencies: - first-chunk-stream "^1.0.0" - is-utf8 "^0.2.0" - strip-bom@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" @@ -6062,7 +5482,7 @@ supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" -supports-color@^3.1.0, supports-color@^3.1.2: +supports-color@^3.1.0, supports-color@^3.1.1, supports-color@^3.1.2: version "3.2.3" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" dependencies: @@ -6138,24 +5558,10 @@ text-table@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" -tfunk@^3.0.1: - version "3.1.0" - resolved "https://registry.yarnpkg.com/tfunk/-/tfunk-3.1.0.tgz#38e4414fc64977d87afdaa72facb6d29f82f7b5b" - dependencies: - chalk "^1.1.1" - object-path "^0.9.0" - throat@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/throat/-/throat-3.0.0.tgz#e7c64c867cbb3845f10877642f7b60055b8ec0d6" -through2@^0.6.1: - version "0.6.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-0.6.5.tgz#41ab9c67b29d57209071410e1d7a7a968cd3ad48" - dependencies: - readable-stream ">=1.0.33-1 <1.1.0-0" - xtend ">=4.0.0 <4.1.0-0" - through2@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" @@ -6167,12 +5573,6 @@ through@^2.3.6, through@^2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" -tildify@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/tildify/-/tildify-1.2.0.tgz#dcec03f55dca9b7aa3e5b04f21817eb56e63588a" - dependencies: - os-homedir "^1.0.0" - time-stamp@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.0.1.tgz#9f4bd23559c9365966f3302dbba2b07c6b99b151" @@ -6187,10 +5587,6 @@ tmpl@1.0.x: version "1.0.4" resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" -to-array@0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" - to-arraybuffer@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" @@ -6239,11 +5635,18 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" +type-is@~1.6.13: + version "1.6.14" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.14.tgz#e219639c17ded1ca0789092dd54a03826b817cb2" + dependencies: + media-typer "0.3.0" + mime-types "~2.1.13" + typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" -ua-parser-js@0.7.12, ua-parser-js@^0.7.9: +ua-parser-js@^0.7.9: version "0.7.12" resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.12.tgz#04c81a99bdd5dc52263ea29d24c6bf8d4818a4bb" @@ -6264,18 +5667,6 @@ uid-number@~0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" -ultron@1.0.x: - version "1.0.2" - resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa" - -unc-path-regex@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" - -underscore@1.7.x: - version "1.7.0" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.7.0.tgz#6bbaf0877500d36be34ecaa584e0db9fef035209" - uniq@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" @@ -6290,10 +5681,6 @@ uniqs@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" -unique-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-1.0.0.tgz#d59a4a75427447d9aa6c91e70263f8d26a4b104b" - unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" @@ -6302,6 +5689,20 @@ upper-case@^1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" +url-parse@1.0.x: + version "1.0.5" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.0.5.tgz#0854860422afdcfefeb6c965c662d4800169927b" + dependencies: + querystringify "0.0.x" + requires-port "1.0.x" + +url-parse@^1.1.1: + version "1.1.7" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.1.7.tgz#025cff999653a459ab34232147d89514cc87d74a" + dependencies: + querystringify "0.0.x" + requires-port "1.0.x" + url@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" @@ -6309,10 +5710,6 @@ url@^0.11.0: punycode "1.3.2" querystring "0.2.0" -user-home@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" - user-home@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/user-home/-/user-home-2.0.0.tgz#9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f" @@ -6341,7 +5738,7 @@ utils-merge@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8" -uuid@^2.0.3: +uuid@^2.0.2, uuid@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" @@ -6349,12 +5746,6 @@ uuid@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1" -v8flags@^2.0.2: - version "2.0.11" - resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.0.11.tgz#bca8f30f0d6d60612cc2c00641e6962d42ae6881" - dependencies: - user-home "^1.1.1" - validate-npm-package-license@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" @@ -6362,6 +5753,10 @@ validate-npm-package-license@^3.0.1: spdx-correct "~1.0.0" spdx-expression-parse "~1.0.0" +vary@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.0.tgz#e1e5affbbd16ae768dd2674394b9ad3022653140" + vendors@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.1.tgz#37ad73c8ee417fb3d580e785312307d274847f22" @@ -6372,26 +5767,6 @@ verror@1.3.6: dependencies: extsprintf "1.0.2" -vinyl-fs@^0.3.0: - version "0.3.14" - resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-0.3.14.tgz#9a6851ce1cac1c1cea5fe86c0931d620c2cfa9e6" - dependencies: - defaults "^1.0.0" - glob-stream "^3.1.5" - glob-watcher "^0.0.6" - graceful-fs "^3.0.0" - mkdirp "^0.5.0" - strip-bom "^1.0.0" - through2 "^0.6.1" - vinyl "^0.4.0" - -vinyl@^0.4.0: - version "0.4.6" - resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.4.6.tgz#2f356c87a550a255461f36bbeb2a5ba8bf784847" - dependencies: - clone "^0.2.0" - clone-stats "^0.0.1" - vinyl@^0.5.0: version "0.5.3" resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.5.3.tgz#b0455b38fc5e0cf30d4325132e461970c2091cde" @@ -6408,10 +5783,6 @@ vinyl@^1.1.0: clone-stats "^0.0.1" replace-ext "0.0.1" -vlq@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.1.tgz#14439d711891e682535467f8587c5630e4222a6c" - vm-browserify@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" @@ -6453,6 +5824,33 @@ webpack-core@~0.6.9: source-list-map "~0.1.7" source-map "~0.4.1" +webpack-dev-middleware@^1.4.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.9.0.tgz#a1c67a3dfd8a5c5d62740aa0babe61758b4c84aa" + dependencies: + memory-fs "~0.4.1" + mime "^1.3.4" + path-is-absolute "^1.0.0" + range-parser "^1.0.3" + +webpack-dev-server@^1.16.2: + version "1.16.2" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-1.16.2.tgz#8bebc2c4ce1c45a15c72dd769d9ba08db306a793" + dependencies: + compression "^1.5.2" + connect-history-api-fallback "^1.3.0" + express "^4.13.3" + http-proxy-middleware "~0.17.1" + open "0.0.5" + optimist "~0.6.1" + serve-index "^1.7.2" + sockjs "^0.3.15" + sockjs-client "^1.0.3" + stream-cache "~0.0.1" + strip-ansi "^3.0.0" + supports-color "^3.1.1" + webpack-dev-middleware "^1.4.0" + webpack-sources@^0.1.0: version "0.1.4" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-0.1.4.tgz#ccc2c817e08e5fa393239412690bb481821393cd" @@ -6492,13 +5890,15 @@ webpack@^1.12.9, webpack@^1.14.0: watchpack "^0.2.1" webpack-core "~0.6.9" -weinre@^2.0.0-pre-I0Z7U9OV: - version "2.0.0-pre-I0Z7U9OV" - resolved "https://registry.yarnpkg.com/weinre/-/weinre-2.0.0-pre-I0Z7U9OV.tgz#fef8aa223921f7b40bbbbd4c3ed4302f6fd0a813" +websocket-driver@>=0.5.1: + version "0.6.5" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.6.5.tgz#5cb2556ceb85f4373c6d8238aa691c8454e13a36" dependencies: - express "2.5.x" - nopt "3.0.x" - underscore "1.7.x" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.1.tgz#76899499c184b6ef754377c2dbb0cd6cb55d29e7" whatwg-encoding@^1.0.1: version "1.0.1" @@ -6525,7 +5925,7 @@ which-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" -which@1, which@^1.0.5, which@^1.1.1, which@^1.2.12, which@^1.2.4, which@^1.2.9: +which@1, which@^1.0.5, which@^1.1.1, which@^1.2.4, which@^1.2.9: version "1.2.12" resolved "https://registry.yarnpkg.com/which/-/which-1.2.12.tgz#de67b5e450269f194909ef23ece4ebe416fa1192" dependencies: @@ -6541,10 +5941,6 @@ window-size@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" -window-size@^0.1.2: - version "0.1.4" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876" - window-size@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075" @@ -6593,17 +5989,6 @@ write@^0.2.1: dependencies: mkdirp "^0.5.1" -ws@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.1.tgz#082ddb6c641e85d4bb451f03d52f06eabdb1f018" - dependencies: - options ">=0.0.5" - ultron "1.0.x" - -wtf-8@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wtf-8/-/wtf-8-1.0.0.tgz#392d8ba2d0f1c34d1ee2d630f15d0efb68e1048a" - xml-char-classes@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/xml-char-classes/-/xml-char-classes-1.0.0.tgz#64657848a20ffc5df583a42ad8a277b4512bbc4d" @@ -6612,15 +5997,11 @@ xml-char-classes@^1.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-2.0.1.tgz#4d8b8f1eccd3419aa362061becef515e1e559635" -xmlhttprequest-ssl@1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz#185a888c04eca46c3e4070d99f7b49de3528992d" - "xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" -y18n@^3.2.0, y18n@^3.2.1: +y18n@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" @@ -6635,42 +6016,12 @@ yargs-parser@^2.4.1: camelcase "^3.0.0" lodash.assign "^4.0.6" -yargs-parser@^4.0.2, yargs-parser@^4.1.0, yargs-parser@^4.2.0: +yargs-parser@^4.0.2, yargs-parser@^4.2.0: version "4.2.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c" dependencies: camelcase "^3.0.0" -yargs@3.29.0: - version "3.29.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.29.0.tgz#1aab9660eae79d8b8f675bcaeeab6ee34c2cf69c" - dependencies: - camelcase "^1.2.1" - cliui "^3.0.3" - decamelize "^1.0.0" - os-locale "^1.4.0" - window-size "^0.1.2" - y18n "^3.2.0" - -yargs@6.4.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.4.0.tgz#816e1a866d5598ccf34e5596ddce22d92da490d4" - dependencies: - camelcase "^3.0.0" - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - 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" - window-size "^0.2.0" - y18n "^3.2.1" - yargs-parser "^4.1.0" - yargs@^4.7.1: version "4.8.1" resolved "https://registry.yarnpkg.com/yargs/-/yargs-4.8.1.tgz#c0c42924ca4aaa6b0e6da1739dfb216439f9ddc0" @@ -6716,7 +6067,3 @@ yargs@~3.10.0: cliui "^2.1.0" decamelize "^1.0.0" window-size "0.1.0" - -yeast@0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" From ba2f5c1e436bf2d70a9580ae873f051d3ec7da9d Mon Sep 17 00:00:00 2001 From: benweizhu Date: Sat, 4 Feb 2017 00:06:53 +0800 Subject: [PATCH 03/16] activity card - add basic layout and props --- package.json | 5 ++-- src/components/ActivityCard/index.jsx | 38 ++++++++++++++++++++------- src/index.jsx | 9 +++++-- src/utils/moment.js | 11 ++++---- yarn.lock | 11 ++++++++ 5 files changed, 55 insertions(+), 19 deletions(-) diff --git a/package.json b/package.json index a8c72ee..1a5d67c 100644 --- a/package.json +++ b/package.json @@ -30,6 +30,7 @@ "postcss-loader": "^1.2.2", "precss": "^1.4.0", "react-addons-test-utils": "^15.4.2", + "react-hot-loader": "^1.3.1", "sass-lint": "^1.10.2", "sass-loader": "^4.1.1", "style-loader": "^0.13.1", @@ -45,9 +46,9 @@ "react-router": "^3.0.2" }, "scripts": { - "start": "webpack && webpack-dev-server", + "start": "webpack && webpack-dev-server --inline --hot", "bundle": "webpack", - "server": "webpack-dev-server", + "server": "webpack-dev-server --inline --hot", "test": "jest --coverage", "ci-test": "jest --coverage && nyc report --temp-directory=coverage --reporter=text-lcov | coveralls", "eslint": "eslint src/**/*.jsx", diff --git a/src/components/ActivityCard/index.jsx b/src/components/ActivityCard/index.jsx index f150ef7..1f4b976 100644 --- a/src/components/ActivityCard/index.jsx +++ b/src/components/ActivityCard/index.jsx @@ -1,24 +1,42 @@ -import React from 'react'; +import React, { PropTypes } from 'react'; import classNames from 'classnames'; import { Link } from 'react-router'; -import { localMoment, smartMoment } from '../../utils/moment'; -import { container, image, information, date } from './ActivityCard.scss'; +import { smartMoment } from '../../utils/moment'; +import styles, { container, image, information, enrollment } from './ActivityCard.scss'; -const ActivityCard = activity => ( +const ActivityCard = ({ id, title, imageUrl, location, date, sponsor, customers }) => (
  • - +
    - {`${activity.title}`}/ + {`${title}`}
    -

    { activity.title }

    -
    - {localMoment('20170202', 'YYYYMMDD').fromNow()} - {smartMoment('20170202', 'YYYYMMDD')} +

    { title }

    +
    + {smartMoment(date, 'YYYY-MM-DD HH:mm:ss')} +
    +
    + {location} +
    +
    + {sponsor} +
    +
    + {customers.length}
  • ); +ActivityCard.propTypes = { + id: PropTypes.number.isRequired, + title: PropTypes.string.isRequired, + imageUrl: PropTypes.string.isRequired, + location: PropTypes.string.isRequired, + sponsor: PropTypes.string.isRequired, + date: PropTypes.string.isRequired, + customers: PropTypes.arrayOf(React.PropTypes.number).isRequired, +}; + export default ActivityCard; diff --git a/src/index.jsx b/src/index.jsx index 5829dee..18838f3 100644 --- a/src/index.jsx +++ b/src/index.jsx @@ -4,9 +4,14 @@ import ActivityCard from './components/ActivityCard'; const activity = { id: 1, - title: 'activity', + title: '看电影', + imageUrl: 'https://img3.doubanio.com/view/event_poster/plarge/public/a75d83b5dd5eb65.jpg', + location: '武汉办公室', + date: '2017-12-31 13:59:59', + sponsor: 'ThoughtWorks', + customers: [1, 2], }; -const App = () => ; +const App = () => ; render(, document.getElementById('app')); diff --git a/src/utils/moment.js b/src/utils/moment.js index e0db249..ecbfe62 100644 --- a/src/utils/moment.js +++ b/src/utils/moment.js @@ -1,13 +1,14 @@ import moment from 'moment'; -export function localMoment(...args) { +export function localeMoment(...args) { moment.locale('zh-cn'); - return moment.apply(this, args); + return moment(...args); } export function smartMoment(...args) { - if (localMoment(args).isBefore(new Date)) { - return localMoment(args).fromNow(); + localeMoment(...args); + if (moment(...args).isBefore(moment())) { + return moment.apply(this, args).fromNow(); } - return moment(...args).format('YYYY年 M月D号 dddd h:mm:ss a'); + return moment(...args).format('YYYY-MM-DD(dddd) a h:mm:ss'); } diff --git a/yarn.lock b/yarn.lock index f5e1a45..7107a05 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4772,6 +4772,17 @@ react-dom@^15.4.2: loose-envify "^1.1.0" object-assign "^4.1.0" +react-hot-api@^0.4.5: + version "0.4.7" + resolved "https://registry.yarnpkg.com/react-hot-api/-/react-hot-api-0.4.7.tgz#a7e22a56d252e11abd9366b61264cf4492c58171" + +react-hot-loader@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/react-hot-loader/-/react-hot-loader-1.3.1.tgz#c95647ae78b73dfceff6ec71ffcb04182ff6daf9" + dependencies: + react-hot-api "^0.4.5" + source-map "^0.4.4" + react-router@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/react-router/-/react-router-3.0.2.tgz#5a19156678810e01d81901f9c0fef63284b8a514" From 5a856f522e5b24ad4c7ed0b799ac96ea924548e7 Mon Sep 17 00:00:00 2001 From: benweizhu Date: Sat, 4 Feb 2017 00:25:16 +0800 Subject: [PATCH 04/16] activity card - simplify the structure and add key to loop li element --- src/components/ActivityCard/index.jsx | 25 ++++++++----------------- 1 file changed, 8 insertions(+), 17 deletions(-) diff --git a/src/components/ActivityCard/index.jsx b/src/components/ActivityCard/index.jsx index 1f4b976..2461f1c 100644 --- a/src/components/ActivityCard/index.jsx +++ b/src/components/ActivityCard/index.jsx @@ -1,29 +1,20 @@ import React, { PropTypes } from 'react'; -import classNames from 'classnames'; import { Link } from 'react-router'; import { smartMoment } from '../../utils/moment'; -import styles, { container, image, information, enrollment } from './ActivityCard.scss'; +import styles, { container, image, description, enrollment } from './ActivityCard.scss'; const ActivityCard = ({ id, title, imageUrl, location, date, sponsor, customers }) => ( -
  • +
  • -
    +
    {`${title}`}
    -
    +

    { title }

    -
    - {smartMoment(date, 'YYYY-MM-DD HH:mm:ss')} -
    -
    - {location} -
    -
    - {sponsor} -
    -
    - {customers.length} -
    +
    {`时间: ${smartMoment(date, 'YYYY-MM-DD HH:mm:ss')}`}
    +
    {`地点: ${location}`}
    +
    {`发起: ${sponsor}`}
    +
    {`参加人数: ${customers.length}`}
  • From 8137f61752e411b29e8c897253ce76fda7f8f41b Mon Sep 17 00:00:00 2001 From: benweizhu Date: Sun, 5 Feb 2017 00:10:05 +0800 Subject: [PATCH 05/16] activity card - import bulma --- package.json | 5 ++++- src/components/ActivityCard/ActivityCard.scss | 13 ------------- .../ActivityCard/__tests__/ActivityCard.spec.jsx | 14 ++++++++++++-- src/components/ActivityCard/index.jsx | 2 +- src/index.html | 7 ++++--- src/vendor/index.jsx | 1 + src/vendor/index.scss | 6 ++++++ webpack.config.js | 9 ++++++--- yarn.lock | 4 ++++ 9 files changed, 38 insertions(+), 23 deletions(-) create mode 100644 src/vendor/index.jsx create mode 100644 src/vendor/index.scss diff --git a/package.json b/package.json index 46824f7..ade9d56 100644 --- a/package.json +++ b/package.json @@ -37,9 +37,12 @@ "webpack-stream": "^3.2.0" }, "dependencies": { + "bulma": "^0.3.1", "classnames": "^2.2.5", + "moment": "^2.17.1", "react": "^15.4.2", - "react-dom": "^15.4.2" + "react-dom": "^15.4.2", + "react-router": "^3.0.2" }, "scripts": { "start": "yarn clean-dist && webpack && webpack-dev-server --inline --hot", diff --git a/src/components/ActivityCard/ActivityCard.scss b/src/components/ActivityCard/ActivityCard.scss index 36319dc..e69de29 100644 --- a/src/components/ActivityCard/ActivityCard.scss +++ b/src/components/ActivityCard/ActivityCard.scss @@ -1,13 +0,0 @@ -$red: #f00; - -.transition { - background: $red; - height: 100px; - transition: width 2s; - width: 100px; - - &:hover { - width: 200px; - } - -} diff --git a/src/components/ActivityCard/__tests__/ActivityCard.spec.jsx b/src/components/ActivityCard/__tests__/ActivityCard.spec.jsx index b5e9999..267e903 100644 --- a/src/components/ActivityCard/__tests__/ActivityCard.spec.jsx +++ b/src/components/ActivityCard/__tests__/ActivityCard.spec.jsx @@ -1,11 +1,21 @@ import React from 'react'; import { shallow } from 'enzyme'; -import DemoComponent from '../index'; +import ActivityCard from '../index'; jest.dontMock('../index'); describe('A suite', () => { it('contains spec with an expectation', () => { - expect(shallow().contains(

    Hi

    )).toBe(true); + const activity = { + id: 1, + title: '看电影', + imageUrl: 'https://img3.doubanio.com/view/event_poster/plarge/public/a75d83b5dd5eb65.jpg', + location: '武汉办公室', + date: '2017-12-31 13:59:59', + sponsor: 'ThoughtWorks', + customers: [1, 2], + }; + + expect(shallow().contains(

    Hi

    )).toBe(true); }); }); diff --git a/src/components/ActivityCard/index.jsx b/src/components/ActivityCard/index.jsx index 2461f1c..5fa5d59 100644 --- a/src/components/ActivityCard/index.jsx +++ b/src/components/ActivityCard/index.jsx @@ -4,7 +4,7 @@ import { smartMoment } from '../../utils/moment'; import styles, { container, image, description, enrollment } from './ActivityCard.scss'; const ActivityCard = ({ id, title, imageUrl, location, date, sponsor, customers }) => ( -
  • +
  • {`${title}`} diff --git a/src/index.html b/src/index.html index 47e44da..acb331b 100644 --- a/src/index.html +++ b/src/index.html @@ -7,7 +7,8 @@ - + + 17High @@ -15,6 +16,6 @@ - + - \ No newline at end of file + diff --git a/src/vendor/index.jsx b/src/vendor/index.jsx new file mode 100644 index 0000000..f22fcd7 --- /dev/null +++ b/src/vendor/index.jsx @@ -0,0 +1 @@ +import styles from './index.scss'; diff --git a/src/vendor/index.scss b/src/vendor/index.scss new file mode 100644 index 0000000..caaf742 --- /dev/null +++ b/src/vendor/index.scss @@ -0,0 +1,6 @@ +@import "~bulma/sass/utilities/all"; +@import "~bulma/sass/base/all"; +@import "~bulma/sass/elements/all"; +@import "~bulma/sass/components/all"; +@import "~bulma/sass/layout/all"; +@import "~bulma/sass/grid/all"; diff --git a/webpack.config.js b/webpack.config.js index 2b6217d..765daca 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -5,13 +5,16 @@ const ExtractTextPlugin = require('extract-text-webpack-plugin'); const BUILD_DIR = path.resolve(__dirname, 'public'); const APP_DIR = path.resolve(__dirname, 'src'); -const extractCSS = new ExtractTextPlugin('styles.css'); +const extractCSS = new ExtractTextPlugin('[name].min.css'); const config = { - entry: `${APP_DIR}/index.jsx`, + entry: { + high: `${APP_DIR}/index.jsx`, + vendor: `${APP_DIR}/vendor/index.jsx`, + }, output: { path: BUILD_DIR, - filename: 'bundle.js', + filename: '[name].bundle.js', }, module: { loaders: [ diff --git a/yarn.lock b/yarn.lock index e7f3f8b..46a84f9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -871,6 +871,10 @@ builtin-status-codes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" +bulma@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/bulma/-/bulma-0.3.1.tgz#0166be77e7a5f62ede01b0be3f1e77e954978bd2" + bytes@2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.3.0.tgz#d5b680a165b6201739acb611542aabc2d8ceb070" From 050764f47ce2e50deecf33258a388950d5b52caa Mon Sep 17 00:00:00 2001 From: benweizhu Date: Sun, 5 Feb 2017 10:30:57 +0800 Subject: [PATCH 06/16] vendor css - vendor scss doesn't need css modules --- webpack.config.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/webpack.config.js b/webpack.config.js index 765daca..e3d3e08 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -25,8 +25,14 @@ const config = { }, { test: /\.scss$/, + include: `${APP_DIR}/components`, loader: extractCSS.extract(['css?minimize&modules&importLoaders=2&localIdentName=[name]__[local]', 'postcss', 'sass']), }, + { + test: /\.scss$/, + include: `${APP_DIR}/vendor`, + loader: extractCSS.extract(['css?minimize', 'sass']), + }, ], }, resolve: { From 80560f0228a59593b91bf77f5499c27413802964 Mon Sep 17 00:00:00 2001 From: benweizhu Date: Sun, 5 Feb 2017 11:10:15 +0800 Subject: [PATCH 07/16] activity card - use columns --- src/components/ActivityCard/index.jsx | 7 ++++--- src/index.jsx | 8 +++++++- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/components/ActivityCard/index.jsx b/src/components/ActivityCard/index.jsx index 5fa5d59..35f9286 100644 --- a/src/components/ActivityCard/index.jsx +++ b/src/components/ActivityCard/index.jsx @@ -1,10 +1,11 @@ import React, { PropTypes } from 'react'; import { Link } from 'react-router'; +import classNames from 'classnames'; import { smartMoment } from '../../utils/moment'; import styles, { container, image, description, enrollment } from './ActivityCard.scss'; -const ActivityCard = ({ id, title, imageUrl, location, date, sponsor, customers }) => ( -
  • +const ActivityCard = ({id, title, imageUrl, location, date, sponsor, customers}) => ( +
    {`${title}`} @@ -17,7 +18,7 @@ const ActivityCard = ({ id, title, imageUrl, location, date, sponsor, customers
    {`参加人数: ${customers.length}`}
    -
  • + ); ActivityCard.propTypes = { diff --git a/src/index.jsx b/src/index.jsx index 18838f3..5566ab4 100644 --- a/src/index.jsx +++ b/src/index.jsx @@ -12,6 +12,12 @@ const activity = { customers: [1, 2], }; -const App = () => ; +const App = () => ( +
    +
    + +
    +
    +); render(, document.getElementById('app')); From 0859cc42388d198565714d78aa136eb115b1f50e Mon Sep 17 00:00:00 2001 From: benweizhu Date: Sun, 5 Feb 2017 14:14:00 +0800 Subject: [PATCH 08/16] activity card - add image placeholder --- src/components/ActivityCard/index.jsx | 21 ++++++++++++++------- src/index.jsx | 1 - src/vendor/index.jsx | 3 ++- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/components/ActivityCard/index.jsx b/src/components/ActivityCard/index.jsx index 35f9286..6799908 100644 --- a/src/components/ActivityCard/index.jsx +++ b/src/components/ActivityCard/index.jsx @@ -4,21 +4,28 @@ import classNames from 'classnames'; import { smartMoment } from '../../utils/moment'; import styles, { container, image, description, enrollment } from './ActivityCard.scss'; -const ActivityCard = ({id, title, imageUrl, location, date, sponsor, customers}) => ( -
    - -
    +const imagePlaceHolder = 'http://placehold.it/150x200'; + +const ActivityCard = ({ + id, title, imageUrl = imagePlaceHolder, location, date, sponsor, customers, +}) => ( +
    +
    +
    {`${title}`}
    -
    +

    { title }

    {`时间: ${smartMoment(date, 'YYYY-MM-DD HH:mm:ss')}`}
    {`地点: ${location}`}
    {`发起: ${sponsor}`}
    {`参加人数: ${customers.length}`}
    +
    + 详情 +
    - -
    +
    + ); ActivityCard.propTypes = { diff --git a/src/index.jsx b/src/index.jsx index 5566ab4..2840a60 100644 --- a/src/index.jsx +++ b/src/index.jsx @@ -5,7 +5,6 @@ import ActivityCard from './components/ActivityCard'; const activity = { id: 1, title: '看电影', - imageUrl: 'https://img3.doubanio.com/view/event_poster/plarge/public/a75d83b5dd5eb65.jpg', location: '武汉办公室', date: '2017-12-31 13:59:59', sponsor: 'ThoughtWorks', diff --git a/src/vendor/index.jsx b/src/vendor/index.jsx index f22fcd7..69eba23 100644 --- a/src/vendor/index.jsx +++ b/src/vendor/index.jsx @@ -1 +1,2 @@ -import styles from './index.scss'; +require('./index.scss'); + From 4d2bc1a6642af99ba836701bd86d861a77c9865f Mon Sep 17 00:00:00 2001 From: benweizhu Date: Sun, 5 Feb 2017 15:14:58 +0800 Subject: [PATCH 09/16] activity card - finish basic layout and call back binding --- src/components/ActivityCard/ActivityCard.scss | 15 +++++++++++ src/components/ActivityCard/index.jsx | 26 +++++++++++-------- src/index.jsx | 4 ++- 3 files changed, 33 insertions(+), 12 deletions(-) diff --git a/src/components/ActivityCard/ActivityCard.scss b/src/components/ActivityCard/ActivityCard.scss index e69de29..9d05933 100644 --- a/src/components/ActivityCard/ActivityCard.scss +++ b/src/components/ActivityCard/ActivityCard.scss @@ -0,0 +1,15 @@ +.title { + font-size: 18px; +} + +.date { + margin-top: 10px; +} + +.enrollment { + margin-top: 30px; +} + +.join { + margin-top: 10px; +} diff --git a/src/components/ActivityCard/index.jsx b/src/components/ActivityCard/index.jsx index 6799908..76eef7f 100644 --- a/src/components/ActivityCard/index.jsx +++ b/src/components/ActivityCard/index.jsx @@ -2,26 +2,24 @@ import React, { PropTypes } from 'react'; import { Link } from 'react-router'; import classNames from 'classnames'; import { smartMoment } from '../../utils/moment'; -import styles, { container, image, description, enrollment } from './ActivityCard.scss'; +import styles, { container, image, description, enrollment, join } from './ActivityCard.scss'; -const imagePlaceHolder = 'http://placehold.it/150x200'; -const ActivityCard = ({ - id, title, imageUrl = imagePlaceHolder, location, date, sponsor, customers, -}) => ( +const ActivityCard = ({ id, title, imageUrl, location, startDate, endDate, sponsor, customers, onClickJoin }) => (
    {`${title}`}
    -

    { title }

    -
    {`时间: ${smartMoment(date, 'YYYY-MM-DD HH:mm:ss')}`}
    +

    { title }

    +
    {`时间: ${smartMoment(startDate, 'YYYY-MM-DD HH:mm:ss')} ~ ${smartMoment(endDate, 'YYYY-MM-DD HH:mm:ss')}`}
    {`地点: ${location}`}
    {`发起: ${sponsor}`}
    -
    {`参加人数: ${customers.length}`}
    -
    +
    {`${customers.length}人参与`}
    +
    详情 +
    @@ -31,11 +29,17 @@ const ActivityCard = ({ ActivityCard.propTypes = { id: PropTypes.number.isRequired, title: PropTypes.string.isRequired, - imageUrl: PropTypes.string.isRequired, + imageUrl: PropTypes.string, location: PropTypes.string.isRequired, sponsor: PropTypes.string.isRequired, - date: PropTypes.string.isRequired, + startDate: PropTypes.string.isRequired, + endDate: PropTypes.string.isRequired, customers: PropTypes.arrayOf(React.PropTypes.number).isRequired, + onClickJoin: PropTypes.func.isRequired, +}; + +ActivityCard.defaultProps = { + imageUrl: 'http://placehold.it/150x200', }; export default ActivityCard; diff --git a/src/index.jsx b/src/index.jsx index 2840a60..3e5e1a1 100644 --- a/src/index.jsx +++ b/src/index.jsx @@ -6,9 +6,11 @@ const activity = { id: 1, title: '看电影', location: '武汉办公室', - date: '2017-12-31 13:59:59', + startDate: '2017-12-31 13:59:59', + endDate: '2017-12-31 13:59:59', sponsor: 'ThoughtWorks', customers: [1, 2], + onClickJoin: (id) => { console.log(id); }, }; const App = () => ( From 24b2b39a305e83250ea490f2533d16a88bf344ca Mon Sep 17 00:00:00 2001 From: benweizhu Date: Sun, 5 Feb 2017 16:10:12 +0800 Subject: [PATCH 10/16] activity card - fixing jshint and unit test coverage --- package.json | 2 +- .../__tests__/ActivityCard.spec.jsx | 36 ++++++++++++------- src/components/ActivityCard/index.jsx | 6 ++-- src/utils/__test__/moment.spec.js | 13 +++++++ 4 files changed, 42 insertions(+), 15 deletions(-) create mode 100644 src/utils/__test__/moment.spec.js diff --git a/package.json b/package.json index ade9d56..1deea3e 100644 --- a/package.json +++ b/package.json @@ -58,7 +58,7 @@ "jest": { "verbose": true, "testPathDirs": [ - "src/components" + "src/components","src/utils" ], "unmockedModulePathPatterns": [ "node_modules/react/", diff --git a/src/components/ActivityCard/__tests__/ActivityCard.spec.jsx b/src/components/ActivityCard/__tests__/ActivityCard.spec.jsx index 267e903..10cb378 100644 --- a/src/components/ActivityCard/__tests__/ActivityCard.spec.jsx +++ b/src/components/ActivityCard/__tests__/ActivityCard.spec.jsx @@ -4,18 +4,30 @@ import ActivityCard from '../index'; jest.dontMock('../index'); -describe('A suite', () => { - it('contains spec with an expectation', () => { - const activity = { - id: 1, - title: '看电影', - imageUrl: 'https://img3.doubanio.com/view/event_poster/plarge/public/a75d83b5dd5eb65.jpg', - location: '武汉办公室', - date: '2017-12-31 13:59:59', - sponsor: 'ThoughtWorks', - customers: [1, 2], - }; +describe('Activity Card', () => { + const activity = { + id: 1, + title: '看电影', + location: '武汉办公室', + startDate: '2017-12-31 13:59:59', + endDate: '2017-12-31 13:59:59', + sponsor: 'ThoughtWorks', + customers: [1, 2], + onClickJoin: jest.fn(), + }; - expect(shallow().contains(

    Hi

    )).toBe(true); + let activityCard; + + beforeEach(function () { + activityCard = shallow(); + }); + + it('should render properly', () => { + expect(activityCard.contains(
    看电影
    )).toBe(true); + }); + + it('should call onClickJoin', () => { + activityCard.find('.button.is-danger').simulate('click'); + expect(activity.onClickJoin.mock.calls.length).toBe(1); }); }); diff --git a/src/components/ActivityCard/index.jsx b/src/components/ActivityCard/index.jsx index 76eef7f..8152419 100644 --- a/src/components/ActivityCard/index.jsx +++ b/src/components/ActivityCard/index.jsx @@ -18,8 +18,10 @@ const ActivityCard = ({ id, title, imageUrl, location, startDate, endDate, spons
    {`发起: ${sponsor}`}
    {`${customers.length}人参与`}
    - 详情 - + 详情 +
    diff --git a/src/utils/__test__/moment.spec.js b/src/utils/__test__/moment.spec.js new file mode 100644 index 0000000..ed592f5 --- /dev/null +++ b/src/utils/__test__/moment.spec.js @@ -0,0 +1,13 @@ +import { localeMoment, smartMoment } from '../moment'; + +describe('moment', () => { + it('localeMoment', () => { + expect(localeMoment('2017-12-31').format('YYYY-MM-DD')).toEqual('2017-12-31'); + }); + + // This is a test based on Time, so, maybe failed after a period of time + it('smartMoment', () => { + expect(smartMoment('2017-12-31', 'YYYY-MM-DD')).toEqual('2017-12-31(星期日) 凌晨 12:00:00'); + expect(smartMoment('2015-12-31', 'YYYY-MM-DD')).toEqual('1 年前'); + }); +}); From 82353073240e64ff7d39192cb27e78aab68a7b7c Mon Sep 17 00:00:00 2001 From: benweizhu Date: Sun, 5 Feb 2017 16:53:37 +0800 Subject: [PATCH 11/16] activity card - fixing smart date feature to show relative date --- src/components/ActivityCard/ActivityCard.scss | 4 ++++ .../ActivityCard/__tests__/ActivityCard.spec.jsx | 13 +++++++++++-- src/components/ActivityCard/index.jsx | 14 +++++++++++--- 3 files changed, 26 insertions(+), 5 deletions(-) diff --git a/src/components/ActivityCard/ActivityCard.scss b/src/components/ActivityCard/ActivityCard.scss index 9d05933..ce12575 100644 --- a/src/components/ActivityCard/ActivityCard.scss +++ b/src/components/ActivityCard/ActivityCard.scss @@ -1,3 +1,7 @@ +.container { + width: 100%; +} + .title { font-size: 18px; } diff --git a/src/components/ActivityCard/__tests__/ActivityCard.spec.jsx b/src/components/ActivityCard/__tests__/ActivityCard.spec.jsx index 10cb378..1c7a4ec 100644 --- a/src/components/ActivityCard/__tests__/ActivityCard.spec.jsx +++ b/src/components/ActivityCard/__tests__/ActivityCard.spec.jsx @@ -22,8 +22,17 @@ describe('Activity Card', () => { activityCard = shallow(); }); - it('should render properly', () => { - expect(activityCard.contains(
    看电影
    )).toBe(true); + it('should render date range', () => { + expect(activityCard.contains(
    时间: 2017-12-31(星期日) 下午 1:59:59 ~ 2017-12-31(星期日) 下午 1:59:59
    )).toBe(true); + }); + + it('should render relative date', () => { + const oldDateActivity = Object.assign(activity, { + startDate: '2015-12-31 13:59:59', + endDate: '2015-12-31 13:59:59', + }); + activityCard = shallow(); + expect(activityCard.contains(
    时间: 1 年前
    )).toBe(true); }); it('should call onClickJoin', () => { diff --git a/src/components/ActivityCard/index.jsx b/src/components/ActivityCard/index.jsx index 8152419..4eb399b 100644 --- a/src/components/ActivityCard/index.jsx +++ b/src/components/ActivityCard/index.jsx @@ -1,19 +1,27 @@ import React, { PropTypes } from 'react'; import { Link } from 'react-router'; import classNames from 'classnames'; +import moment from 'moment'; import { smartMoment } from '../../utils/moment'; import styles, { container, image, description, enrollment, join } from './ActivityCard.scss'; +const renderDate = (startDate, endDate) => { + if (moment(endDate, 'YYYY-MM-DD HH:mm:ss').isBefore(moment())) { + return smartMoment(startDate, 'YYYY-MM-DD HH:mm:ss'); + } + return `${smartMoment(startDate, 'YYYY-MM-DD HH:mm:ss')} ~ ${smartMoment(endDate, 'YYYY-MM-DD HH:mm:ss')}`; +}; + const ActivityCard = ({ id, title, imageUrl, location, startDate, endDate, sponsor, customers, onClickJoin }) => ( -
    -
    +
    +
    {`${title}`}

    { title }

    -
    {`时间: ${smartMoment(startDate, 'YYYY-MM-DD HH:mm:ss')} ~ ${smartMoment(endDate, 'YYYY-MM-DD HH:mm:ss')}`}
    +
    {`时间: ${renderDate(startDate, endDate)}`}
    {`地点: ${location}`}
    {`发起: ${sponsor}`}
    {`${customers.length}人参与`}
    From 80a8cb0a1432966f318147d783bfa4724ab925a2 Mon Sep 17 00:00:00 2001 From: benweizhu Date: Sun, 5 Feb 2017 19:56:15 +0800 Subject: [PATCH 12/16] activity card - fixing the box content --- src/components/ActivityCard/ActivityCard.scss | 10 +++------- src/components/ActivityCard/index.jsx | 4 ++-- src/index.jsx | 7 ++++++- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/components/ActivityCard/ActivityCard.scss b/src/components/ActivityCard/ActivityCard.scss index ce12575..e791fec 100644 --- a/src/components/ActivityCard/ActivityCard.scss +++ b/src/components/ActivityCard/ActivityCard.scss @@ -1,19 +1,15 @@ -.container { - width: 100%; -} - .title { font-size: 18px; } .date { - margin-top: 10px; + margin-top: 5px; } .enrollment { - margin-top: 30px; + margin-top: 8px; } .join { - margin-top: 10px; + margin-top: 5px; } diff --git a/src/components/ActivityCard/index.jsx b/src/components/ActivityCard/index.jsx index 4eb399b..702c204 100644 --- a/src/components/ActivityCard/index.jsx +++ b/src/components/ActivityCard/index.jsx @@ -19,7 +19,7 @@ const ActivityCard = ({ id, title, imageUrl, location, startDate, endDate, spons
    {`${title}`}
    -
    +

    { title }

    {`时间: ${renderDate(startDate, endDate)}`}
    {`地点: ${location}`}
    @@ -49,7 +49,7 @@ ActivityCard.propTypes = { }; ActivityCard.defaultProps = { - imageUrl: 'http://placehold.it/150x200', + imageUrl: 'http://placehold.it/140x180', }; export default ActivityCard; diff --git a/src/index.jsx b/src/index.jsx index 3e5e1a1..0ecfb92 100644 --- a/src/index.jsx +++ b/src/index.jsx @@ -16,7 +16,12 @@ const activity = { const App = () => (
    - +
    + + + + +
    ); From 92c32081c94d24b59cbf38b5829733fd4ed59b4f Mon Sep 17 00:00:00 2001 From: benweizhu Date: Thu, 16 Feb 2017 17:06:49 +0800 Subject: [PATCH 13/16] activity card - remove unnecessary style variable --- src/components/ActivityCard/index.jsx | 12 ++++++------ src/index.jsx | 5 +---- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/src/components/ActivityCard/index.jsx b/src/components/ActivityCard/index.jsx index 702c204..6d91bb7 100644 --- a/src/components/ActivityCard/index.jsx +++ b/src/components/ActivityCard/index.jsx @@ -3,7 +3,7 @@ import { Link } from 'react-router'; import classNames from 'classnames'; import moment from 'moment'; import { smartMoment } from '../../utils/moment'; -import styles, { container, image, description, enrollment, join } from './ActivityCard.scss'; +import styles, { date, container, enrollment, join } from './ActivityCard.scss'; const renderDate = (startDate, endDate) => { @@ -16,14 +16,14 @@ const renderDate = (startDate, endDate) => { const ActivityCard = ({ id, title, imageUrl, location, startDate, endDate, sponsor, customers, onClickJoin }) => (
    -
    +
    {`${title}`}
    -
    +

    { title }

    -
    {`时间: ${renderDate(startDate, endDate)}`}
    -
    {`地点: ${location}`}
    -
    {`发起: ${sponsor}`}
    +
    {`时间: ${renderDate(startDate, endDate)}`}
    +
    {`地点: ${location}`}
    +
    {`发起: ${sponsor}`}
    {`${customers.length}人参与`}
    详情 diff --git a/src/index.jsx b/src/index.jsx index 0ecfb92..2249d6a 100644 --- a/src/index.jsx +++ b/src/index.jsx @@ -16,10 +16,7 @@ const activity = { const App = () => (
    -
    - - - +
    From fe51325e7f8929b3b176ad6f7512011796f7382d Mon Sep 17 00:00:00 2001 From: benweizhu Date: Thu, 16 Feb 2017 17:10:21 +0800 Subject: [PATCH 14/16] activity card - extract const --- src/components/ActivityCard/index.jsx | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/components/ActivityCard/index.jsx b/src/components/ActivityCard/index.jsx index 6d91bb7..d197291 100644 --- a/src/components/ActivityCard/index.jsx +++ b/src/components/ActivityCard/index.jsx @@ -7,10 +7,12 @@ import styles, { date, container, enrollment, join } from './ActivityCard.scss'; const renderDate = (startDate, endDate) => { - if (moment(endDate, 'YYYY-MM-DD HH:mm:ss').isBefore(moment())) { - return smartMoment(startDate, 'YYYY-MM-DD HH:mm:ss'); + const DATE_FORMAT = 'YYYY-MM-DD HH:mm:ss'; + + if (moment(endDate, DATE_FORMAT).isBefore(moment())) { + return smartMoment(startDate, DATE_FORMAT); } - return `${smartMoment(startDate, 'YYYY-MM-DD HH:mm:ss')} ~ ${smartMoment(endDate, 'YYYY-MM-DD HH:mm:ss')}`; + return `${smartMoment(startDate, DATE_FORMAT)} ~ ${smartMoment(endDate, DATE_FORMAT)}`; }; const ActivityCard = ({ id, title, imageUrl, location, startDate, endDate, sponsor, customers, onClickJoin }) => ( From cc9d23e2bf397de67e9dfea607b1226da4221590 Mon Sep 17 00:00:00 2001 From: benweizhu Date: Fri, 17 Feb 2017 11:07:09 +0800 Subject: [PATCH 15/16] activity list - add basic activity list component --- src/components/ActivityList/ActivityList.scss | 3 +++ .../__tests__/ActivityList.spec.jsx | 10 ++++++++ src/components/ActivityList/index.jsx | 25 +++++++++++++++++++ src/index.jsx | 17 ++++++++++--- 4 files changed, 51 insertions(+), 4 deletions(-) create mode 100644 src/components/ActivityList/ActivityList.scss create mode 100644 src/components/ActivityList/__tests__/ActivityList.spec.jsx create mode 100644 src/components/ActivityList/index.jsx diff --git a/src/components/ActivityList/ActivityList.scss b/src/components/ActivityList/ActivityList.scss new file mode 100644 index 0000000..d47dab8 --- /dev/null +++ b/src/components/ActivityList/ActivityList.scss @@ -0,0 +1,3 @@ +.item { + margin-bottom: 10px; +} diff --git a/src/components/ActivityList/__tests__/ActivityList.spec.jsx b/src/components/ActivityList/__tests__/ActivityList.spec.jsx new file mode 100644 index 0000000..010e4a3 --- /dev/null +++ b/src/components/ActivityList/__tests__/ActivityList.spec.jsx @@ -0,0 +1,10 @@ +jest.dontMock('../index'); + +describe('Activity List', () => { + beforeEach(() => { + }); + + it('should render date range', () => { + expect(true).toBe(true); + }); +}); diff --git a/src/components/ActivityList/index.jsx b/src/components/ActivityList/index.jsx new file mode 100644 index 0000000..22d2439 --- /dev/null +++ b/src/components/ActivityList/index.jsx @@ -0,0 +1,25 @@ +import React, { PropTypes } from 'react'; +import ActivityCard from '../ActivityCard'; +import { item } from './ActivityList.scss'; + +const ActivityList = ({ activities, onClickJoinActivity }) => ( +
      + {activities.map(activity => +
    • + onClickJoinActivity(activity.id)} + /> +
    • , + )} +
    +); + +ActivityList.propTypes = { + activities: PropTypes.arrayOf(PropTypes.shape({ + id: PropTypes.number.isRequired, + }).isRequired).isRequired, + onClickJoinActivity: PropTypes.func.isRequired, +}; + +export default ActivityList; diff --git a/src/index.jsx b/src/index.jsx index 2249d6a..a1e0910 100644 --- a/src/index.jsx +++ b/src/index.jsx @@ -1,8 +1,8 @@ import React from 'react'; import { render } from 'react-dom'; -import ActivityCard from './components/ActivityCard'; +import ActivityList from './components/ActivityList'; -const activity = { +const activities = [{ id: 1, title: '看电影', location: '武汉办公室', @@ -11,13 +11,22 @@ const activity = { sponsor: 'ThoughtWorks', customers: [1, 2], onClickJoin: (id) => { console.log(id); }, -}; +}, { + id: 2, + title: '看电影', + location: '武汉办公室', + startDate: '2017-12-31 13:59:59', + endDate: '2017-12-31 13:59:59', + sponsor: 'ThoughtWorks', + customers: [1, 2], + onClickJoin: (id) => { console.log(id); }, +}]; const App = () => (
    - + { console.log(id); }} />
    From 388494e89402f80a5c3946a6ebe92a7ff5c5a028 Mon Sep 17 00:00:00 2001 From: benweizhu Date: Sun, 19 Feb 2017 17:03:24 +0800 Subject: [PATCH 16/16] activity list - add chai lib and fixing the unit test for activity list. --- package.json | 4 +- .../__tests__/ActivityList.spec.jsx | 44 ++++++++++++++++++- yarn.lock | 37 +++++++++++----- 3 files changed, 71 insertions(+), 14 deletions(-) diff --git a/package.json b/package.json index 1deea3e..2e2ee47 100644 --- a/package.json +++ b/package.json @@ -38,6 +38,7 @@ }, "dependencies": { "bulma": "^0.3.1", + "chai": "^3.5.0", "classnames": "^2.2.5", "moment": "^2.17.1", "react": "^15.4.2", @@ -58,7 +59,8 @@ "jest": { "verbose": true, "testPathDirs": [ - "src/components","src/utils" + "src/components", + "src/utils" ], "unmockedModulePathPatterns": [ "node_modules/react/", diff --git a/src/components/ActivityList/__tests__/ActivityList.spec.jsx b/src/components/ActivityList/__tests__/ActivityList.spec.jsx index 010e4a3..473b3de 100644 --- a/src/components/ActivityList/__tests__/ActivityList.spec.jsx +++ b/src/components/ActivityList/__tests__/ActivityList.spec.jsx @@ -1,10 +1,50 @@ +import React from 'react'; +import { mount } from 'enzyme'; +import { expect } from 'chai'; +import ActivityList from '../index'; +import ActivityCard from '../../ActivityCard/index'; + jest.dontMock('../index'); describe('Activity List', () => { + const activities = [{ + id: 1, + title: '看电影', + location: '武汉办公室', + startDate: '2017-12-31 13:59:59', + endDate: '2017-12-31 13:59:59', + sponsor: 'ThoughtWorks', + customers: [1, 2], + onClickJoin: (id) => { + console.log(id); + }, + }, { + id: 2, + title: '看电影', + location: '武汉办公室', + startDate: '2017-12-31 13:59:59', + endDate: '2017-12-31 13:59:59', + sponsor: 'ThoughtWorks', + customers: [1, 2], + onClickJoin: (id) => { + console.log(id); + }, + }]; + + let onClickJoinActivity; + let activityList; + beforeEach(() => { + onClickJoinActivity = jest.fn(); + activityList = mount(); + }); + + it('should render two activity card ', () => { + expect(activityList.find(ActivityCard)).to.have.length(2); }); - it('should render date range', () => { - expect(true).toBe(true); + it('should trigger onClickJoinActivity when click on join button ', () => { + activityList.find(ActivityCard).at(0).find('.button.is-danger').simulate('click'); + expect(onClickJoinActivity.mock.calls.length).to.equal(1); }); }); diff --git a/yarn.lock b/yarn.lock index 46a84f9..ab88eb2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -195,6 +195,10 @@ assert@^1.1.1: dependencies: util "0.10.3" +assertion-error@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.0.2.tgz#13ca515d86206da0bac66e834dd397d87581094c" + async-each@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" @@ -959,6 +963,14 @@ center-align@^0.1.1: align-text "^0.1.3" lazy-cache "^1.0.3" +chai@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/chai/-/chai-3.5.0.tgz#4d02637b067fe958bdbfdd3a40ec56fef7373247" + dependencies: + assertion-error "^1.0.1" + deep-eql "^0.1.3" + type-detect "^1.0.0" + chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" @@ -1455,6 +1467,12 @@ decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" +deep-eql@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-0.1.3.tgz#ef558acab8de25206cd713906d74e56930eb69f2" + dependencies: + type-detect "0.1.1" + deep-extend@~0.4.0: version "0.4.1" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253" @@ -4770,17 +4788,6 @@ react-dom@^15.4.2: loose-envify "^1.1.0" object-assign "^4.1.0" -react-hot-api@^0.4.5: - version "0.4.7" - resolved "https://registry.yarnpkg.com/react-hot-api/-/react-hot-api-0.4.7.tgz#a7e22a56d252e11abd9366b61264cf4492c58171" - -react-hot-loader@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/react-hot-loader/-/react-hot-loader-1.3.1.tgz#c95647ae78b73dfceff6ec71ffcb04182ff6daf9" - dependencies: - react-hot-api "^0.4.5" - source-map "^0.4.4" - react-router@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/react-router/-/react-router-3.0.2.tgz#5a19156678810e01d81901f9c0fef63284b8a514" @@ -5644,6 +5651,14 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" +type-detect@0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-0.1.1.tgz#0ba5ec2a885640e470ea4e8505971900dac58822" + +type-detect@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-1.0.0.tgz#762217cc06db258ec48908a1298e8b95121e8ea2" + type-is@~1.6.13: version "1.6.14" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.14.tgz#e219639c17ded1ca0789092dd54a03826b817cb2"