From 6f00f81547e3508e0b4aec3b94f56d844bcfecb6 Mon Sep 17 00:00:00 2001
From: Vinay Puppal <me@vinaypuppal.com>
Date: Wed, 18 Oct 2017 19:50:25 +0530
Subject: [PATCH 01/22] integrate now-travis

---
 .travis.yml  |  17 +-
 package.json |   1 +
 yarn.lock    | 935 +++++++++++++++++++++++++++++++++++++++++++++++++--
 3 files changed, 926 insertions(+), 27 deletions(-)

diff --git a/.travis.yml b/.travis.yml
index 6b32a58f1..7b6d6eb2f 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -2,8 +2,19 @@ sudo: required
 dist: trusty
 language: node_js
 node_js:
-  - "7.7"
+  - '7.7'
 before_install:
-  - curl -o- -L https://yarnpkg.com/install.sh | bash -s -- --version 0.27.5
-  - export PATH="$HOME/.yarn/bin:$PATH"
+  - 'curl -o- -L https://yarnpkg.com/install.sh | bash -s -- --version 0.27.5'
+  - 'export PATH="$HOME/.yarn/bin:$PATH"'
 cache: yarn
+after_script:
+  - NOW_ALIAS=coderplex.org node_modules/.bin/now-travis
+branches:
+  only:
+    - master
+env:
+  global:
+    - secure: >-
+        n+2Hmo9EXQf8+fxOeVzF13eRG6LyQz0A0y+GEtwySLzHkJkOdLX1UkD9BqVKwt2DgkQXzis5LF4OOAUOO2EnOjkq7bJB/vHQGWywNlQ3vuvm5m7F+EIWwBtNJHJMjEGiwUF9C6FiX2dPYiGgfkWWXEZ74P+oEOEFuQst1dj4197IU+SOcgME7iQLX+N/PWOty0o3el6I8fKkgMNnnpTkmPwuYPBixicnH6lNBURAixMZsEhfZbdl6L9/uAoEz3pPQDbOOlorgDESzwseLADcHnrUtRz9Pl2C4YzRXSkf5iiJWWbcGGzTymROnwH1T8baTtzEdeUslOHIvpA8oYjq8Vtmq0tTllIM5Pc05h1Zdbd/dqvVE6bXzjzC1ddKJawP3avG/ZnS9WrVhg+nXLH4Ic9ULVjbdxYa61SGjAWevaA5vWj2FwEjF1FscbYSNP9SCpp4P2ehYw1JDWEygfOqWzn1MH+fD2ffFrHi/+q7CF99o85dQrDXIeGQ6Oii8JU08FtIUfGyQmDXb2xDF1SoIFlKrUL8R/oJZ9GmvKhOFmDtPvqtL93/WA+K72PHTL1PcMpo8NgZjPc+2EzhQbpCLSSUgvoG+1Y0c9DCF5NEjlxUa9h1PqiHw18NVOctZ7q0zPDL2dpqqKedbOqWb/Q9cg7oebEDWowlHlFRrlnfpsk=
+    - secure: >-
+        RnukVdPtXialGJRvYoJVelRPmyU9ZOE7+be9ec1fndOrWQCiymurQob1jFMSEQ8mqN7YAEXnfzXJcDmXAGcvoWJBHsmM0tXAndsPCVASOs7ZdREZ/HX5Z/g6V+RcRn6ldgGoon6YVwKJ/lSwT/X2dKuSa/QljdAzEpMA7uwKKniDNMv6Yl1I7sMb37ulC2em5e28PMCbVoyNTrPik7dJxA0aJh5zeQcTOZdiBR6sSkUZ33RvAg4M9reRWvtNfwM/SPlmirFCzSy6LL0mwsBhmoBe01bz2hs0wvoF1QzK7I2Q5MWa2A/0iY9tn0dNiaalmxJTQDkEv2IDlznXr+B+FznOQMs2KNoUtkJ4shWw+57dhrfw8eN7LJZzOYAdcx+75KRO3Z0dOkip6ykxr/sNmFKW5pASOfdeXDPtS3B7bCGMnO24kOrUSQUmIMA5kzwb+3PeHzDoGVnJbBjHgDz0VVMxjql3clw1Ci3DuqsQ9e/eWW4JpaciTsjIUk4uVLVMoDrWcBLcqkQE4b9VyoGx9m4Rj+z3mWscHQF4i/COhYOhYukeCgzeXZuJeQoKmYspBNq0R5jcJWnmtZ5Lc19+QCP86DGyZGcDCBpp2CRn8nslUDh8jXfwXC55rlmb7p3oN9sgXrDjPaFTfdZDHdPwjXx5PDJQJkHANjpAQuO2fr4=
diff --git a/package.json b/package.json
index bf2e234a3..4c85319d6 100644
--- a/package.json
+++ b/package.json
@@ -79,6 +79,7 @@
     "husky": "^0.14.3",
     "lint-staged": "^4.0.2",
     "nodemon": "^1.11.0",
+    "now-travis": "1.0.1",
     "prettier": "^1.7.0",
     "webpack-bundle-analyzer": "^2.8.3",
     "xo": "^0.18.2"
diff --git a/yarn.lock b/yarn.lock
index 7ace0c0d0..fdf19396a 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -117,6 +117,10 @@ acorn@^5.0.0, acorn@^5.1.1:
   version "5.1.2"
   resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.1.2.tgz#911cb53e036807cf0fa778dc5d370fbd864246d7"
 
+after@0.8.2:
+  version "0.8.2"
+  resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f"
+
 agent-base@2:
   version "2.1.1"
   resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-2.1.1.tgz#d6de10d5af6132d5bd692427d46fc538539094c7"
@@ -160,13 +164,19 @@ amdefine@>=0.0.4:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
 
+ansi-align@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-1.1.0.tgz#2f0c1658829739add5ebb15e6b0c6e3423f016ba"
+  dependencies:
+    string-width "^1.0.1"
+
 ansi-align@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f"
   dependencies:
     string-width "^2.0.0"
 
-ansi-escapes@^1.0.0, ansi-escapes@^1.1.0:
+ansi-escapes@1.4.0, ansi-escapes@^1.0.0, ansi-escapes@^1.1.0, ansi-escapes@^1.4.0:
   version "1.4.0"
   resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e"
 
@@ -267,6 +277,10 @@ array-union@^1.0.1:
   dependencies:
     array-uniq "^1.0.1"
 
+array-uniq@1.0.2:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.2.tgz#5fcc373920775723cfd64d65c64bef53bf9eba6d"
+
 array-uniq@^1.0.1:
   version "1.0.3"
   resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6"
@@ -275,6 +289,14 @@ array-unique@^0.2.1:
   version "0.2.1"
   resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
 
+array-unique@^0.3.2:
+  version "0.3.2"
+  resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
+
+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"
@@ -313,6 +335,20 @@ async-each@^1.0.0:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d"
 
+async-retry@^0.2.1:
+  version "0.2.1"
+  resolved "https://registry.yarnpkg.com/async-retry/-/async-retry-0.2.1.tgz#a8ca3a101bc146dd75de5e6464263f26c1fcd44f"
+  dependencies:
+    babel-runtime "6.5.0"
+    retry "0.9.0"
+
+async-to-gen@^1.3.0:
+  version "1.3.3"
+  resolved "https://registry.yarnpkg.com/async-to-gen/-/async-to-gen-1.3.3.tgz#d52c9fb4801f0df44abc4d2de1870b48b60e20bb"
+  dependencies:
+    babylon "^6.14.0"
+    magic-string "^0.19.0"
+
 async@^1.4.0, async@~1.5.2:
   version "1.5.2"
   resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
@@ -911,6 +947,12 @@ babel-runtime@6.26.0, babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtim
     core-js "^2.4.0"
     regenerator-runtime "^0.11.0"
 
+babel-runtime@6.5.0:
+  version "6.5.0"
+  resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.5.0.tgz#fb7c1889069bd9f8200238a9bc6ad5b5e8ab5bfb"
+  dependencies:
+    core-js "^1.2.0"
+
 babel-template@6.26.0, babel-template@^6.24.1, babel-template@^6.26.0:
   version "6.26.0"
   resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02"
@@ -953,14 +995,26 @@ babel-types@^6.19.0, babel-types@^6.23.0, babel-types@^6.24.1, babel-types@^6.26
     lodash "^4.17.4"
     to-fast-properties "^1.0.3"
 
-babylon@^6.17.0, babylon@^6.18.0:
+babylon@^6.14.0, babylon@^6.17.0, babylon@^6.18.0:
   version "6.18.0"
   resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3"
 
+backo2@1.0.2:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947"
+
 balanced-match@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
 
+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@0.0.8:
+  version "0.0.8"
+  resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-0.0.8.tgz#1101e9544f4a76b1bc3b26d452ca96d7a35e7978"
+
 base64-js@^1.0.2:
   version "1.2.1"
   resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.1.tgz#a91947da1f4a516ea38e5b4ec0ec3773675e0886"
@@ -971,6 +1025,12 @@ bcrypt-pbkdf@^1.0.0:
   dependencies:
     tweetnacl "^0.14.3"
 
+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.2.0"
   resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e"
@@ -979,18 +1039,32 @@ binary-extensions@^1.0.0:
   version "1.10.0"
   resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.10.0.tgz#9aeb9a6c5e88638aad171e167f5900abe24835d0"
 
+bl@^1.0.0:
+  version "1.2.1"
+  resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.1.tgz#cac328f7bee45730d404b692203fcb590e172d5e"
+  dependencies:
+    readable-stream "^2.0.5"
+
 bl@~1.1.2:
   version "1.1.2"
   resolved "https://registry.yarnpkg.com/bl/-/bl-1.1.2.tgz#fdca871a99713aa00d19e3bbba41c44787a65398"
   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"
   dependencies:
     inherits "~2.0.0"
 
+bluebird@^3.3.1:
+  version "3.5.1"
+  resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9"
+
 bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:
   version "4.11.8"
   resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f"
@@ -1028,6 +1102,20 @@ boom@5.x.x:
   dependencies:
     hoek "4.x.x"
 
+boxen@^0.6.0:
+  version "0.6.0"
+  resolved "https://registry.yarnpkg.com/boxen/-/boxen-0.6.0.tgz#8364d4248ac34ff0ef1b2f2bf49a6c60ce0d81b6"
+  dependencies:
+    ansi-align "^1.1.0"
+    camelcase "^2.1.0"
+    chalk "^1.1.1"
+    cli-boxes "^1.0.0"
+    filled-array "^1.0.0"
+    object-assign "^4.0.1"
+    repeating "^2.0.0"
+    string-width "^1.0.1"
+    widest-line "^1.0.0"
+
 boxen@^1.2.1:
   version "1.2.1"
   resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.2.1.tgz#0f11e7fe344edb9397977fc13ede7f64d956481d"
@@ -1133,6 +1221,10 @@ buffer-alloc@^1.1.0:
     buffer-alloc-unsafe "^0.1.0"
     buffer-fill "^0.1.0"
 
+buffer-crc32@~0.2.3:
+  version "0.2.13"
+  resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
+
 buffer-fill@^0.1.0:
   version "0.1.0"
   resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-0.1.0.tgz#ca9470e8d4d1b977fd7543f4e2ab6a7dc95101a8"
@@ -1141,6 +1233,14 @@ buffer-xor@^1.0.3:
   version "1.0.3"
   resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
 
+buffer@^3.0.1:
+  version "3.6.0"
+  resolved "https://registry.yarnpkg.com/buffer/-/buffer-3.6.0.tgz#a72c936f77b96bf52f5f7e7b467180628551defb"
+  dependencies:
+    base64-js "0.0.8"
+    ieee754 "^1.1.4"
+    isarray "^1.0.0"
+
 buffer@^4.3.0:
   version "4.9.1"
   resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298"
@@ -1165,12 +1265,20 @@ bytes@3.0.0:
   version "3.0.0"
   resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
 
+bytes@^2.4.0:
+  version "2.5.0"
+  resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.5.0.tgz#4c9423ea2d252c270c41b2bdefeff9bb6b62c06a"
+
 caller-path@^0.1.0:
   version "0.1.0"
   resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f"
   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"
@@ -1186,7 +1294,7 @@ camelcase@^1.0.2:
   version "1.2.1"
   resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39"
 
-camelcase@^2.0.0:
+camelcase@^2.0.0, camelcase@^2.1.0:
   version "2.1.1"
   resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f"
 
@@ -1214,6 +1322,15 @@ caseless@~0.12.0:
   version "0.12.0"
   resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
 
+caw@^2.0.0:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/caw/-/caw-2.0.1.tgz#6c3ca071fc194720883c2dc5da9b074bfc7e9e95"
+  dependencies:
+    get-proxy "^2.0.0"
+    isurl "^1.0.0-alpha5"
+    tunnel-agent "^0.6.0"
+    url-to-options "^1.0.1"
+
 center-align@^0.1.1:
   version "0.1.3"
   resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad"
@@ -1221,7 +1338,7 @@ center-align@^0.1.1:
     align-text "^0.1.3"
     lazy-cache "^1.0.3"
 
-chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3:
+chalk@1.1.3, chalk@^1.0.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"
   dependencies:
@@ -1283,10 +1400,20 @@ cli-cursor@^1.0.1, cli-cursor@^1.0.2:
   dependencies:
     restore-cursor "^1.0.1"
 
+cli-cursor@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5"
+  dependencies:
+    restore-cursor "^2.0.0"
+
 cli-spinners@^0.1.2:
   version "0.1.2"
   resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-0.1.2.tgz#bb764d88e185fb9e1e6a2a1f19772318f605e31c"
 
+cli-spinners@^1.0.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-1.1.0.tgz#f1847b168844d917a671eb9d147e3df497c90d06"
+
 cli-truncate@^0.2.1:
   version "0.2.1"
   resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574"
@@ -1357,6 +1484,12 @@ commander@^2.9.0:
   version "2.11.0"
   resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563"
 
+commander@~2.8.1:
+  version "2.8.1"
+  resolved "https://registry.yarnpkg.com/commander/-/commander-2.8.1.tgz#06be367febfda0c330aa1e2a072d3dc9762425d4"
+  dependencies:
+    graceful-readlink ">= 1.0.0"
+
 commondir@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
@@ -1368,6 +1501,22 @@ compare-func@^1.3.1:
     array-ify "^1.0.0"
     dot-prop "^3.0.0"
 
+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"
+
+component-inherit@0.0.3:
+  version "0.0.3"
+  resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143"
+
 concat-map@0.0.1:
   version "0.0.1"
   resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
@@ -1380,13 +1529,27 @@ concat-stream@^1.5.2:
     readable-stream "^2.2.2"
     typedarray "^0.0.6"
 
-config-chain@~1.1.8:
+config-chain@^1.1.11, config-chain@~1.1.8:
   version "1.1.11"
   resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.11.tgz#aba09747dfbe4c3e70e766a6e41586e1859fc6f2"
   dependencies:
     ini "^1.3.4"
     proto-list "~1.2.1"
 
+configstore@^2.0.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/configstore/-/configstore-2.1.0.tgz#737a3a7036e9886102aa6099e47bb33ab1aba1a1"
+  dependencies:
+    dot-prop "^3.0.0"
+    graceful-fs "^4.1.2"
+    mkdirp "^0.5.0"
+    object-assign "^4.0.1"
+    os-tmpdir "^1.0.0"
+    osenv "^0.1.0"
+    uuid "^2.0.1"
+    write-file-atomic "^1.1.2"
+    xdg-basedir "^2.0.0"
+
 configstore@^3.0.0:
   version "3.1.1"
   resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.1.tgz#094ee662ab83fad9917678de114faaea8fcdca90"
@@ -1506,6 +1669,14 @@ cookie@0.3.1:
   version "0.3.1"
   resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb"
 
+copy-paste@^1.3.0:
+  version "1.3.0"
+  resolved "https://registry.yarnpkg.com/copy-paste/-/copy-paste-1.3.0.tgz#a7e6c4a1c28fdedf2b081e72b97df2ef95f471ed"
+  dependencies:
+    iconv-lite "^0.4.8"
+  optionalDependencies:
+    sync-exec "~0.6.x"
+
 core-assert@^0.2.0:
   version "0.2.1"
   resolved "https://registry.yarnpkg.com/core-assert/-/core-assert-0.2.1.tgz#f85e2cf9bfed28f773cc8b3fa5c5b69bdc02fe3f"
@@ -1513,7 +1684,7 @@ core-assert@^0.2.0:
     buf-compare "^1.0.0"
     is-error "^2.2.0"
 
-core-js@^1.0.0:
+core-js@^1.0.0, core-js@^1.2.0:
   version "1.2.7"
   resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636"
 
@@ -1545,7 +1716,7 @@ create-ecdh@^4.0.0:
     bn.js "^4.1.0"
     elliptic "^6.0.0"
 
-create-error-class@^3.0.0:
+create-error-class@^3.0.0, create-error-class@^3.0.1:
   version "3.0.2"
   resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6"
   dependencies:
@@ -1669,6 +1840,18 @@ debug@2, debug@2.6.9, debug@^2.1.1, debug@^2.2.0, debug@^2.6.8, debug@^2.6.9:
   dependencies:
     ms "2.0.0"
 
+debug@2.2.0:
+  version "2.2.0"
+  resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da"
+  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@^3.0.0, debug@^3.1.0:
   version "3.1.0"
   resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
@@ -1679,13 +1862,61 @@ 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"
 
+decompress-tar@^4.0.0, decompress-tar@^4.1.0, decompress-tar@^4.1.1:
+  version "4.1.1"
+  resolved "https://registry.yarnpkg.com/decompress-tar/-/decompress-tar-4.1.1.tgz#718cbd3fcb16209716e70a26b84e7ba4592e5af1"
+  dependencies:
+    file-type "^5.2.0"
+    is-stream "^1.1.0"
+    tar-stream "^1.5.2"
+
+decompress-tarbz2@^4.0.0:
+  version "4.1.1"
+  resolved "https://registry.yarnpkg.com/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz#3082a5b880ea4043816349f378b56c516be1a39b"
+  dependencies:
+    decompress-tar "^4.1.0"
+    file-type "^6.1.0"
+    is-stream "^1.1.0"
+    seek-bzip "^1.0.5"
+    unbzip2-stream "^1.0.9"
+
+decompress-targz@^4.0.0:
+  version "4.1.1"
+  resolved "https://registry.yarnpkg.com/decompress-targz/-/decompress-targz-4.1.1.tgz#c09bc35c4d11f3de09f2d2da53e9de23e7ce1eee"
+  dependencies:
+    decompress-tar "^4.1.1"
+    file-type "^5.2.0"
+    is-stream "^1.1.0"
+
+decompress-unzip@^4.0.1:
+  version "4.0.1"
+  resolved "https://registry.yarnpkg.com/decompress-unzip/-/decompress-unzip-4.0.1.tgz#deaaccdfd14aeaf85578f733ae8210f9b4848f69"
+  dependencies:
+    file-type "^3.8.0"
+    get-stream "^2.2.0"
+    pify "^2.3.0"
+    yauzl "^2.4.2"
+
+decompress@^4.0.0:
+  version "4.2.0"
+  resolved "https://registry.yarnpkg.com/decompress/-/decompress-4.2.0.tgz#7aedd85427e5a92dacfe55674a7c505e96d01f9d"
+  dependencies:
+    decompress-tar "^4.0.0"
+    decompress-tarbz2 "^4.0.0"
+    decompress-targz "^4.0.0"
+    decompress-unzip "^4.0.1"
+    graceful-fs "^4.1.10"
+    make-dir "^1.0.0"
+    pify "^2.3.0"
+    strip-dirs "^2.0.0"
+
 deep-assign@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/deep-assign/-/deep-assign-1.0.0.tgz#b092743be8427dc621ea0067cdec7e70dd19f37b"
   dependencies:
     is-obj "^1.0.0"
 
-deep-extend@~0.4.0:
+deep-extend@^0.4.1, deep-extend@~0.4.0:
   version "0.4.2"
   resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f"
 
@@ -1762,6 +1993,10 @@ detect-indent@^5.0.0:
   version "5.0.0"
   resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d"
 
+detect-node@^2.0.3:
+  version "2.0.3"
+  resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.3.tgz#a2033c09cc8e158d37748fbde7507832bd6ce127"
+
 diffie-hellman@^5.0.0:
   version "5.0.2"
   resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e"
@@ -1770,6 +2005,10 @@ diffie-hellman@^5.0.0:
     miller-rabin "^4.0.0"
     randombytes "^2.0.0"
 
+docker-file-parser@^0.1.0:
+  version "0.1.0"
+  resolved "https://registry.yarnpkg.com/docker-file-parser/-/docker-file-parser-0.1.0.tgz#8aff4967aa36df61e50f36091571f95e4457ae8b"
+
 doctrine@1.5.0:
   version "1.5.0"
   resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa"
@@ -1804,6 +2043,24 @@ dot-prop@^4.1.0:
   dependencies:
     is-obj "^1.0.0"
 
+download@^5.0.2:
+  version "5.0.3"
+  resolved "https://registry.yarnpkg.com/download/-/download-5.0.3.tgz#63537f977f99266a30eb8a2a2fbd1f20b8000f7a"
+  dependencies:
+    caw "^2.0.0"
+    decompress "^4.0.0"
+    filenamify "^2.0.0"
+    get-stream "^3.0.0"
+    got "^6.3.0"
+    mkdirp "^0.5.1"
+    pify "^2.3.0"
+
+duplexer2@^0.1.4:
+  version "0.1.4"
+  resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1"
+  dependencies:
+    readable-stream "^2.0.2"
+
 duplexer3@^0.1.4:
   version "0.1.4"
   resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2"
@@ -1846,6 +2103,17 @@ elliptic@^6.0.0:
     minimalistic-assert "^1.0.0"
     minimalistic-crypto-utils "^1.0.0"
 
+email-prompt@^0.2.0:
+  version "0.2.0"
+  resolved "https://registry.yarnpkg.com/email-prompt/-/email-prompt-0.2.0.tgz#b16d1970b7b2537b01920fe01f5062641a1f41f3"
+  dependencies:
+    ansi-escapes "1.4.0"
+    chalk "1.1.3"
+
+email-validator@^1.0.7:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/email-validator/-/email-validator-1.1.1.tgz#b07f3be7bac1dc099bc43e75f6ae399f552d5a80"
+
 emitter-mixin@0.0.3:
   version "0.0.3"
   resolved "https://registry.yarnpkg.com/emitter-mixin/-/emitter-mixin-0.0.3.tgz#5948cb286f2e48edc3b251a7cfc1f7883396d65c"
@@ -1864,6 +2132,40 @@ encoding@^0.1.11:
   dependencies:
     iconv-lite "~0.4.13"
 
+end-of-stream@^1.0.0:
+  version "1.4.0"
+  resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.0.tgz#7a90d833efda6cfa6eac0f4949dbb0fad3a63206"
+  dependencies:
+    once "^1.4.0"
+
+engine.io-client@~1.8.4:
+  version "1.8.4"
+  resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-1.8.4.tgz#9fe85dee25853ca6babe25bd2ad68710863e91c2"
+  dependencies:
+    component-emitter "1.2.1"
+    component-inherit "0.0.3"
+    debug "2.3.3"
+    engine.io-parser "1.3.2"
+    has-cors "1.1.0"
+    indexof "0.0.1"
+    parsejson "0.0.3"
+    parseqs "0.0.5"
+    parseuri "0.0.5"
+    ws "1.1.2"
+    xmlhttprequest-ssl "1.5.3"
+    yeast "0.1.2"
+
+engine.io-parser@1.3.2:
+  version "1.3.2"
+  resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-1.3.2.tgz#937b079f0007d0893ec56d46cb220b8cb435220a"
+  dependencies:
+    after "0.8.2"
+    arraybuffer.slice "0.0.6"
+    base64-arraybuffer "0.1.5"
+    blob "0.0.4"
+    has-binary "0.1.7"
+    wtf-8 "1.0.0"
+
 enhance-visitors@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/enhance-visitors/-/enhance-visitors-1.0.0.tgz#aa945d05da465672a1ebd38fee2ed3da8518e95a"
@@ -2321,6 +2623,12 @@ fbjs@^0.8.16:
     setimmediate "^1.0.5"
     ua-parser-js "^0.7.9"
 
+fd-slicer@~1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65"
+  dependencies:
+    pend "~1.2.0"
+
 feathers-authentication-client@^0.3.3:
   version "0.3.3"
   resolved "https://registry.yarnpkg.com/feathers-authentication-client/-/feathers-authentication-client-0.3.3.tgz#d2183e4b08287dfd3ecb4a96eb081cf0b4e7c263"
@@ -2382,10 +2690,34 @@ file-entry-cache@^2.0.0:
     flat-cache "^1.2.1"
     object-assign "^4.0.1"
 
+file-type@^3.8.0:
+  version "3.9.0"
+  resolved "https://registry.yarnpkg.com/file-type/-/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9"
+
+file-type@^5.2.0:
+  version "5.2.0"
+  resolved "https://registry.yarnpkg.com/file-type/-/file-type-5.2.0.tgz#2ddbea7c73ffe36368dfae49dc338c058c2b8ad6"
+
+file-type@^6.1.0:
+  version "6.2.0"
+  resolved "https://registry.yarnpkg.com/file-type/-/file-type-6.2.0.tgz#e50cd75d356ffed4e306dc4f5bcf52a79903a919"
+
 filename-regex@^2.0.0:
   version "2.0.1"
   resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26"
 
+filename-reserved-regex@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz#abf73dfab735d045440abfea2d91f389ebbfa229"
+
+filenamify@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/filenamify/-/filenamify-2.0.0.tgz#bd162262c0b6e94bfbcdcf19a3bbb3764f785695"
+  dependencies:
+    filename-reserved-regex "^2.0.0"
+    strip-outer "^1.0.0"
+    trim-repeated "^1.0.0"
+
 filesize@^3.2.1, filesize@^3.5.9:
   version "3.5.10"
   resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.5.10.tgz#fc8fa23ddb4ef9e5e0ab6e1e64f679a24a56761f"
@@ -2400,6 +2732,10 @@ fill-range@^2.1.0:
     repeat-element "^1.1.2"
     repeat-string "^1.5.2"
 
+filled-array@^1.0.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/filled-array/-/filled-array-1.1.0.tgz#c3c4f6c663b923459a9aa29912d2d031f1507f84"
+
 finalhandler@1.1.0:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.0.tgz#ce0b6855b45853e791b2fcc680046d88253dd7f5"
@@ -2528,6 +2864,14 @@ from@~0:
   version "0.1.7"
   resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe"
 
+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@^4.0.2:
   version "4.0.2"
   resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.2.tgz#f91704c53d1b461f893452b0c307d9997647ab6b"
@@ -2536,6 +2880,15 @@ fs-extra@^4.0.2:
     jsonfile "^4.0.0"
     universalify "^0.1.0"
 
+fs-promise@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/fs-promise/-/fs-promise-1.0.0.tgz#4246a4cd45497d2ed57e6e4b22167d3864b23679"
+  dependencies:
+    any-promise "^1.0.0"
+    fs-extra "^1.0.0"
+    mz "^2.3.1"
+    thenify-all "^1.6.0"
+
 fs.realpath@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
@@ -2609,6 +2962,12 @@ get-pkg-repo@^1.0.0:
     parse-github-repo-url "^1.3.0"
     through2 "^2.0.0"
 
+get-proxy@^2.0.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/get-proxy/-/get-proxy-2.1.0.tgz#349f2b4d91d44c4d4d4e9cba2ad90143fac5ef93"
+  dependencies:
+    npm-conf "^1.1.0"
+
 get-set-props@^0.1.0:
   version "0.1.0"
   resolved "https://registry.yarnpkg.com/get-set-props/-/get-set-props-0.1.0.tgz#998475c178445686d0b32246da5df8dbcfbe8ea3"
@@ -2774,7 +3133,27 @@ globby@^6.0.0, globby@^6.1.0:
     pify "^2.0.0"
     pinkie-promise "^2.0.0"
 
-got@^6.7.1:
+got@^5.0.0:
+  version "5.7.1"
+  resolved "https://registry.yarnpkg.com/got/-/got-5.7.1.tgz#5f81635a61e4a6589f180569ea4e381680a51f35"
+  dependencies:
+    create-error-class "^3.0.1"
+    duplexer2 "^0.1.4"
+    is-redirect "^1.0.0"
+    is-retry-allowed "^1.0.0"
+    is-stream "^1.0.0"
+    lowercase-keys "^1.0.0"
+    node-status-codes "^1.0.0"
+    object-assign "^4.0.1"
+    parse-json "^2.1.0"
+    pinkie-promise "^2.0.0"
+    read-all-stream "^3.0.0"
+    readable-stream "^2.0.5"
+    timed-out "^3.0.0"
+    unzip-response "^1.0.2"
+    url-parse-lax "^1.0.0"
+
+got@^6.3.0, got@^6.7.1:
   version "6.7.1"
   resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0"
   dependencies:
@@ -2790,7 +3169,7 @@ got@^6.7.1:
     unzip-response "^2.0.1"
     url-parse-lax "^1.0.0"
 
-graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.4, graceful-fs@^4.1.6:
+graceful-fs@^4.1.10, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.4, 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"
 
@@ -2804,6 +3183,10 @@ gzip-size@^3.0.0:
   dependencies:
     duplexer "^0.1.1"
 
+handle-thing@^1.2.5:
+  version "1.2.5"
+  resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4"
+
 handlebars@^4.0.2:
   version "4.0.10"
   resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.10.tgz#3d30c718b09a3d96f23ea4cc1f403c4d3ba9ff4f"
@@ -2851,10 +3234,30 @@ has-ansi@^2.0.0:
   dependencies:
     ansi-regex "^2.0.0"
 
+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@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51"
 
+has-symbol-support-x@^1.4.1:
+  version "1.4.1"
+  resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.1.tgz#66ec2e377e0c7d7ccedb07a3a84d77510ff1bc4c"
+
+has-to-string-tag-x@^1.2.0:
+  version "1.4.1"
+  resolved "https://registry.yarnpkg.com/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz#a045ab383d7b4b2012a00148ab0aa5f290044d4d"
+  dependencies:
+    has-symbol-support-x "^1.4.1"
+
 has-unicode@^2.0.0:
   version "2.0.1"
   resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
@@ -2934,6 +3337,15 @@ hosted-git-info@^2.1.4, hosted-git-info@^2.4.2:
   version "2.5.0"
   resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c"
 
+hpack.js@^2.1.6:
+  version "2.1.6"
+  resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2"
+  dependencies:
+    inherits "^2.0.1"
+    obuf "^1.0.0"
+    readable-stream "^2.0.1"
+    wbuf "^1.1.0"
+
 html-entities@^1.2.0:
   version "1.2.1"
   resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f"
@@ -2942,6 +3354,10 @@ htmlescape@1.1.1:
   version "1.1.1"
   resolved "https://registry.yarnpkg.com/htmlescape/-/htmlescape-1.1.1.tgz#3a03edc2214bca3b66424a3e7959349509cb0351"
 
+http-deceiver@^1.2.7:
+  version "1.2.7"
+  resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87"
+
 http-errors@1.6.2, http-errors@~1.6.2:
   version "1.6.2"
   resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736"
@@ -2998,7 +3414,7 @@ husky@^0.14.3:
     normalize-path "^1.0.0"
     strip-indent "^2.0.0"
 
-iconv-lite@0.4.19, iconv-lite@~0.4.13:
+iconv-lite@0.4.19, iconv-lite@^0.4.8, iconv-lite@~0.4.13:
   version "0.4.19"
   resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b"
 
@@ -3103,6 +3519,10 @@ invert-kv@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6"
 
+ip-regex@^1.0.1:
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-1.0.3.tgz#dc589076f659f419c222039a33316f1c7387effd"
+
 ipaddr.js@1.5.2:
   version "1.5.2"
   resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.5.2.tgz#d4b505bde9946987ccf0fc58d9010ff9607e3fa0"
@@ -3228,6 +3648,10 @@ is-my-json-valid@^2.10.0, is-my-json-valid@^2.12.4:
     jsonpointer "^4.0.0"
     xtend "^4.0.0"
 
+is-natural-number@^4.0.1:
+  version "4.0.1"
+  resolved "https://registry.yarnpkg.com/is-natural-number/-/is-natural-number-4.0.1.tgz#ab9d76e1db4ced51e35de0c72ebecf09f734cde8"
+
 is-npm@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4"
@@ -3255,6 +3679,10 @@ is-obj@^1.0.0, is-obj@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
 
+is-object@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470"
+
 is-path-cwd@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d"
@@ -3344,6 +3772,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-url@^1.2.2:
+  version "1.2.2"
+  resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.2.tgz#498905a593bf47cc2d9e7f738372bbf7696c7f26"
+
 is-utf8@^0.2.0:
   version "0.2.1"
   resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
@@ -3388,6 +3820,13 @@ isstream@~0.1.2:
   version "0.1.2"
   resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
 
+isurl@^1.0.0-alpha5:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/isurl/-/isurl-1.0.0.tgz#b27f4f49f3cdaa3ea44a0a5b7f3462e6edc39d67"
+  dependencies:
+    has-to-string-tag-x "^1.2.0"
+    is-object "^1.0.1"
+
 jest-get-type@^21.2.0:
   version "21.2.0"
   resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-21.2.0.tgz#f6376ab9db4b60d81e39f30749c6c466f40d4a23"
@@ -3454,10 +3893,20 @@ json-stringify-safe@^5.0.1, 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:
+  version "3.3.2"
+  resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1"
+
 json5@^0.5.0, json5@^0.5.1:
   version "0.5.1"
   resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
 
+jsonfile@^2.1.0:
+  version "2.4.0"
+  resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8"
+  optionalDependencies:
+    graceful-fs "^4.1.6"
+
 jsonfile@^4.0.0:
   version "4.0.0"
   resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
@@ -3511,6 +3960,18 @@ kind-of@^4.0.0:
   dependencies:
     is-buffer "^1.1.5"
 
+klaw@^1.0.0:
+  version "1.3.1"
+  resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439"
+  optionalDependencies:
+    graceful-fs "^4.1.9"
+
+latest-version@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-2.0.0.tgz#56f8d6139620847b8017f8f1f4d78e211324168b"
+  dependencies:
+    package-json "^2.0.0"
+
 latest-version@^3.0.0:
   version "3.1.0"
   resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15"
@@ -3521,6 +3982,10 @@ lazy-cache@^1.0.3:
   version "1.0.4"
   resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e"
 
+lazy-req@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/lazy-req/-/lazy-req-1.1.0.tgz#bdaebead30f8d824039ce0ce149d4daa07ba1fac"
+
 lcid@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835"
@@ -3808,6 +4273,12 @@ lru-cache@^4.0.1:
     pseudomap "^1.0.2"
     yallist "^2.1.2"
 
+magic-string@^0.19.0:
+  version "0.19.1"
+  resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.19.1.tgz#14d768013caf2ec8fdea16a49af82fc377e75201"
+  dependencies:
+    vlq "^0.2.1"
+
 make-dir@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.0.0.tgz#97a011751e91dd87cfadef58832ebb04936de978"
@@ -3980,10 +4451,22 @@ moment@^2.11.2, moment@^2.19.1:
   version "2.19.1"
   resolved "https://registry.yarnpkg.com/moment/-/moment-2.19.1.tgz#56da1a2d1cbf01d38b7e1afc31c10bcfa1929167"
 
+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"
+
 ms@2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
 
+ms@^0.7.2:
+  version "0.7.3"
+  resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.3.tgz#708155a5e44e33f5fd0fc53e81d0d40a91be1fff"
+
 multimatch@^2.1.0:
   version "2.1.0"
   resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-2.1.0.tgz#9c7906a22fb4c02919e2f5f75161b4cdbd4b2a2b"
@@ -4005,7 +4488,7 @@ mv@2.1.1:
     ncp "~2.0.0"
     rimraf "~2.4.0"
 
-mz@2.7.0:
+mz@2.7.0, mz@^2.3.1:
   version "2.7.0"
   resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32"
   dependencies:
@@ -4097,7 +4580,7 @@ next@^4.1.0:
     write-file-webpack-plugin "4.2.0"
     xss-filters "1.2.7"
 
-node-fetch@^1.0.1, node-fetch@^1.7.1:
+node-fetch@^1.0.1, node-fetch@^1.6.3, node-fetch@^1.7.1:
   version "1.7.3"
   resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef"
   dependencies:
@@ -4147,10 +4630,18 @@ node-pre-gyp@^0.6.36:
     tar "^2.2.1"
     tar-pack "^3.4.0"
 
+node-status-codes@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/node-status-codes/-/node-status-codes-1.0.0.tgz#5ae5541d024645d32a58fcddc9ceecea7ae3ac2f"
+
 node-uuid@~1.4.7:
   version "1.4.8"
   resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.8.tgz#b040eb0923968afabf8d32fb1f17f1167fdab907"
 
+node-version@^1.0.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/node-version/-/node-version-1.1.0.tgz#f437d7ba407e65e2c4eaef8887b1718ba523d4f0"
+
 nodemon@^1.11.0:
   version "1.12.1"
   resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-1.12.1.tgz#996a56dc49d9f16bbf1b78a4de08f13634b3878d"
@@ -4204,6 +4695,72 @@ normalize-path@^2.0.0, normalize-path@^2.0.1:
   dependencies:
     remove-trailing-separator "^1.0.1"
 
+normalize-url@^1.9.0:
+  version "1.9.1"
+  resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c"
+  dependencies:
+    object-assign "^4.0.1"
+    prepend-http "^1.0.0"
+    query-string "^4.1.0"
+    sort-keys "^1.0.0"
+
+now-travis@1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/now-travis/-/now-travis-1.0.1.tgz#72a8ce18fa690af483241fe1d21e2ecec115da85"
+  dependencies:
+    cross-spawn "^5.0.1"
+    normalize-url "^1.9.0"
+    now "^2.0.3"
+    octonode "^0.7.8"
+    travis-after-all "^1.4.4"
+    url-regex "^4.0.0"
+
+now@^2.0.3:
+  version "2.0.5"
+  resolved "https://registry.yarnpkg.com/now/-/now-2.0.5.tgz#b2621d679364a6fb616f8a4648d380880b5886b8"
+  dependencies:
+    ansi-escapes "^1.4.0"
+    arr-flatten "^1.0.1"
+    array-unique "^0.3.2"
+    async-retry "^0.2.1"
+    async-to-gen "^1.3.0"
+    bytes "^2.4.0"
+    chalk "^1.1.3"
+    copy-paste "^1.3.0"
+    cross-spawn "^5.0.1"
+    docker-file-parser "^0.1.0"
+    download "^5.0.2"
+    email-prompt "^0.2.0"
+    email-validator "^1.0.7"
+    fs-promise "^1.0.0"
+    glob "^7.1.1"
+    graceful-fs "^4.1.11"
+    ignore "^3.2.0"
+    ini "^1.3.4"
+    is-url "^1.2.2"
+    minimist "^1.2.0"
+    ms "^0.7.2"
+    node-fetch "^1.6.3"
+    node-version "^1.0.0"
+    ora "^1.0.0"
+    progress "^1.1.8"
+    psl "^1.1.15"
+    resumer "^0.0.0"
+    semver-compare "^1.0.0"
+    socket.io-client "^1.7.2"
+    spdy "^3.4.4"
+    split-array "^1.0.1"
+    text-table "^0.2.0"
+    tmp-promise "^1.0.3"
+    update-notifier "^1.0.3"
+
+npm-conf@^1.1.0:
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/npm-conf/-/npm-conf-1.1.2.tgz#170a2c48a0c6ad0495f03f87aec2da11ef47a525"
+  dependencies:
+    config-chain "^1.1.11"
+    pify "^3.0.0"
+
 "npm-package-arg@^3.0.0 || ^4.0.0 || ^5.0.0":
   version "5.1.2"
   resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-5.1.2.tgz#fb18d17bb61e60900d6312619919bd753755ab37"
@@ -4293,6 +4850,10 @@ object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1:
   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-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"
@@ -4312,13 +4873,25 @@ object.omit@^2.0.0:
     for-own "^0.1.4"
     is-extendable "^0.1.1"
 
+obuf@^1.0.0, obuf@^1.1.1:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.1.tgz#104124b6c602c6796881a042541d36db43a5264e"
+
+octonode@^0.7.8:
+  version "0.7.13"
+  resolved "https://registry.yarnpkg.com/octonode/-/octonode-0.7.13.tgz#d66cb26b9efefc4089e0df8830a6efab73976cad"
+  dependencies:
+    deep-extend "^0.4.1"
+    randomstring "^1.1.5"
+    request "^2.72.0"
+
 on-finished@~2.3.0:
   version "2.3.0"
   resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
   dependencies:
     ee-first "1.1.1"
 
-once@^1.3.0, once@^1.3.3:
+once@^1.3.0, once@^1.3.3, once@^1.4.0:
   version "1.4.0"
   resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
   dependencies:
@@ -4334,6 +4907,12 @@ onetime@^1.0.0:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789"
 
+onetime@^2.0.0:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4"
+  dependencies:
+    mimic-fn "^1.0.0"
+
 opener@^1.4.3:
   version "1.4.3"
   resolved "https://registry.yarnpkg.com/opener/-/opener-1.4.3.tgz#5c6da2c5d7e5831e8ffa3964950f8d6674ac90b8"
@@ -4356,6 +4935,10 @@ 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"
+
 ora@^0.2.3:
   version "0.2.3"
   resolved "https://registry.yarnpkg.com/ora/-/ora-0.2.3.tgz#37527d220adcd53c39b73571d754156d5db657a4"
@@ -4365,6 +4948,15 @@ ora@^0.2.3:
     cli-spinners "^0.1.2"
     object-assign "^4.0.1"
 
+ora@^1.0.0:
+  version "1.3.0"
+  resolved "https://registry.yarnpkg.com/ora/-/ora-1.3.0.tgz#80078dd2b92a934af66a3ad72a5b910694ede51a"
+  dependencies:
+    chalk "^1.1.1"
+    cli-cursor "^2.1.0"
+    cli-spinners "^1.0.0"
+    log-symbols "^1.0.2"
+
 os-browserify@^0.2.0:
   version "0.2.1"
   resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.2.1.tgz#63fc4ccee5d2d7763d26bbf8601078e6c2e0044f"
@@ -4381,7 +4973,7 @@ os-locale@^2.0.0:
     lcid "^1.0.0"
     mem "^1.1.0"
 
-os-tmpdir@^1.0.0, os-tmpdir@^1.0.1:
+os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
 
@@ -4426,6 +5018,15 @@ p-series@^1.0.0:
   dependencies:
     p-reduce "^1.0.0"
 
+package-json@^2.0.0:
+  version "2.4.0"
+  resolved "https://registry.yarnpkg.com/package-json/-/package-json-2.4.0.tgz#0d15bd67d1cbbddbb2ca222ff2edb86bcb31a8bb"
+  dependencies:
+    got "^5.0.0"
+    registry-auth-token "^3.0.1"
+    registry-url "^3.0.3"
+    semver "^5.1.0"
+
 package-json@^4.0.0:
   version "4.0.1"
   resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed"
@@ -4462,12 +5063,30 @@ parse-glob@^3.0.4:
     is-extglob "^1.0.0"
     is-glob "^2.0.0"
 
-parse-json@^2.2.0:
+parse-json@^2.1.0, parse-json@^2.2.0:
   version "2.2.0"
   resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
   dependencies:
     error-ex "^1.2.0"
 
+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.2:
   version "1.3.2"
   resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3"
@@ -4556,6 +5175,10 @@ pbkdf2@^3.0.3:
     safe-buffer "^5.0.1"
     sha.js "^2.4.8"
 
+pend@~1.2.0:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50"
+
 performance-now@^0.2.0:
   version "0.2.0"
   resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5"
@@ -4645,7 +5268,7 @@ prelude-ls@~1.1.2:
   version "1.1.2"
   resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
 
-prepend-http@^1.0.1:
+prepend-http@^1.0.0, prepend-http@^1.0.1:
   version "1.0.4"
   resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc"
 
@@ -4738,6 +5361,10 @@ pseudomap@^1.0.2:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
 
+psl@^1.1.15:
+  version "1.1.20"
+  resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.20.tgz#363382f332388880b155e2506345957084288e9d"
+
 public-encrypt@^4.0.0:
   version "4.0.0"
   resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6"
@@ -4776,6 +5403,13 @@ qs@~6.4.0:
   version "6.4.0"
   resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233"
 
+query-string@^4.1.0:
+  version "4.3.4"
+  resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb"
+  dependencies:
+    object-assign "^4.1.0"
+    strict-uri-encode "^1.0.0"
+
 querystring-es3@^0.2.0:
   version "0.2.1"
   resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
@@ -4803,6 +5437,12 @@ randombytes@^2.0.0, randombytes@^2.0.1:
   dependencies:
     safe-buffer "^5.1.0"
 
+randomstring@^1.1.5:
+  version "1.1.5"
+  resolved "https://registry.yarnpkg.com/randomstring/-/randomstring-1.1.5.tgz#6df0628f75cbd5932930d9fe3ab4e956a18518c3"
+  dependencies:
+    array-uniq "1.0.2"
+
 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"
@@ -4895,6 +5535,13 @@ react@^16.0.0:
     object-assign "^4.1.1"
     prop-types "^15.6.0"
 
+read-all-stream@^3.0.0:
+  version "3.1.0"
+  resolved "https://registry.yarnpkg.com/read-all-stream/-/read-all-stream-3.1.0.tgz#35c3e177f2078ef789ee4bfafa4373074eaef4fa"
+  dependencies:
+    pinkie-promise "^2.0.0"
+    readable-stream "^2.0.0"
+
 read-pkg-up@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02"
@@ -4925,7 +5572,7 @@ read-pkg@^2.0.0:
     normalize-package-data "^2.3.2"
     path-type "^2.0.0"
 
-readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.6:
+readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.6, readable-stream@^2.2.9:
   version "2.3.3"
   resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c"
   dependencies:
@@ -5100,7 +5747,7 @@ request@2.81.0:
     tunnel-agent "^0.6.0"
     uuid "^3.0.0"
 
-request@^2.74.0:
+request@^2.72.0, request@^2.74.0:
   version "2.83.0"
   resolved "https://registry.yarnpkg.com/request/-/request-2.83.0.tgz#ca0b65da02ed62935887808e6f510381034e3356"
   dependencies:
@@ -5232,6 +5879,23 @@ restore-cursor@^1.0.1:
     exit-hook "^1.0.0"
     onetime "^1.0.0"
 
+restore-cursor@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf"
+  dependencies:
+    onetime "^2.0.0"
+    signal-exit "^3.0.2"
+
+resumer@^0.0.0:
+  version "0.0.0"
+  resolved "https://registry.yarnpkg.com/resumer/-/resumer-0.0.0.tgz#f1e8f461e4064ba39e82af3cdc2a8c893d076759"
+  dependencies:
+    through "~2.3.4"
+
+retry@0.9.0:
+  version "0.9.0"
+  resolved "https://registry.yarnpkg.com/retry/-/retry-0.9.0.tgz#6f697e50a0e4ddc8c8f7fb547a9b60dead43678d"
+
 retry@^0.10.0:
   version "0.10.1"
   resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4"
@@ -5289,6 +5953,16 @@ safe-buffer@~5.0.1:
   version "5.0.1"
   resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7"
 
+seek-bzip@^1.0.5:
+  version "1.0.5"
+  resolved "https://registry.yarnpkg.com/seek-bzip/-/seek-bzip-1.0.5.tgz#cfe917cb3d274bcffac792758af53173eb1fabdc"
+  dependencies:
+    commander "~2.8.1"
+
+select-hose@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca"
+
 semantic-release@^8.0.3:
   version "8.2.0"
   resolved "https://registry.yarnpkg.com/semantic-release/-/semantic-release-8.2.0.tgz#972aa3a7246065d8a405991005a210e46995d4b6"
@@ -5323,6 +5997,10 @@ semantic-ui-react@^0.71.3:
     lodash "^4.17.4"
     prop-types "^15.5.10"
 
+semver-compare@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc"
+
 semver-diff@^2.0.0:
   version "2.1.0"
   resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36"
@@ -5431,7 +6109,7 @@ slice-ansi@0.0.4:
   version "0.0.4"
   resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35"
 
-slide@^1.1.3:
+slide@^1.1.3, slide@^1.1.5:
   version "1.1.6"
   resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707"
 
@@ -5447,7 +6125,32 @@ sntp@2.x.x:
   dependencies:
     hoek "4.x.x"
 
-sort-keys@^1.1.2:
+socket.io-client@^1.7.2:
+  version "1.7.4"
+  resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-1.7.4.tgz#ec9f820356ed99ef6d357f0756d648717bdd4281"
+  dependencies:
+    backo2 "1.0.2"
+    component-bind "1.0.0"
+    component-emitter "1.2.1"
+    debug "2.3.3"
+    engine.io-client "~1.8.4"
+    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"
+  dependencies:
+    component-emitter "1.1.2"
+    debug "2.2.0"
+    isarray "0.0.1"
+    json3 "3.3.2"
+
+sort-keys@^1.0.0, sort-keys@^1.1.2:
   version "1.1.2"
   resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad"
   dependencies:
@@ -5507,6 +6210,33 @@ spdx-license-ids@^1.0.2:
   version "1.2.2"
   resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57"
 
+spdy-transport@^2.0.18:
+  version "2.0.20"
+  resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-2.0.20.tgz#735e72054c486b2354fe89e702256004a39ace4d"
+  dependencies:
+    debug "^2.6.8"
+    detect-node "^2.0.3"
+    hpack.js "^2.1.6"
+    obuf "^1.1.1"
+    readable-stream "^2.2.9"
+    safe-buffer "^5.0.1"
+    wbuf "^1.7.2"
+
+spdy@^3.4.4:
+  version "3.4.7"
+  resolved "https://registry.yarnpkg.com/spdy/-/spdy-3.4.7.tgz#42ff41ece5cc0f99a3a6c28aabb73f5c3b03acbc"
+  dependencies:
+    debug "^2.6.8"
+    handle-thing "^1.2.5"
+    http-deceiver "^1.2.7"
+    safe-buffer "^5.0.1"
+    select-hose "^2.0.0"
+    spdy-transport "^2.0.18"
+
+split-array@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/split-array/-/split-array-1.0.1.tgz#7d0c10366705f3aa4620529ab755bf7ed2220da1"
+
 split2@^2.0.0:
   version "2.2.0"
   resolved "https://registry.yarnpkg.com/split2/-/split2-2.2.0.tgz#186b2575bcf83e85b7d18465756238ee4ee42493"
@@ -5600,6 +6330,10 @@ stream-to-observable@^0.1.0:
   version "0.1.0"
   resolved "https://registry.yarnpkg.com/stream-to-observable/-/stream-to-observable-0.1.0.tgz#45bf1d9f2d7dc09bed81f1c307c430e68b84cffe"
 
+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"
+
 string-hash@1.1.1:
   version "1.1.1"
   resolved "https://registry.yarnpkg.com/string-hash/-/string-hash-1.1.1.tgz#8e85bed291e0763b8f6809d9c3368fea048db3dc"
@@ -5669,6 +6403,12 @@ strip-bom@^3.0.0:
   version "3.0.0"
   resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
 
+strip-dirs@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/strip-dirs/-/strip-dirs-2.0.0.tgz#610cdb2928200da0004f41dcb90fc95cd919a0b6"
+  dependencies:
+    is-natural-number "^4.0.1"
+
 strip-eof@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
@@ -5687,6 +6427,12 @@ strip-json-comments@~2.0.1:
   version "2.0.1"
   resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
 
+strip-outer@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/strip-outer/-/strip-outer-1.0.0.tgz#aac0ba60d2e90c5d4f275fd8869fd9a2d310ffb8"
+  dependencies:
+    escape-string-regexp "^1.0.2"
+
 styled-jsx@2.1.1:
   version "2.1.1"
   resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-2.1.1.tgz#e7481c7554df50d605cdc84a4e53c58fec3449b5"
@@ -5721,6 +6467,10 @@ symbol-observable@^1.0.1:
   version "1.0.4"
   resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d"
 
+sync-exec@~0.6.x:
+  version "0.6.2"
+  resolved "https://registry.yarnpkg.com/sync-exec/-/sync-exec-0.6.2.tgz#717d22cc53f0ce1def5594362f3a89a2ebb91105"
+
 table@^3.7.8:
   version "3.8.3"
   resolved "https://registry.yarnpkg.com/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f"
@@ -5749,6 +6499,15 @@ tar-pack@^3.4.0:
     tar "^2.2.1"
     uid-number "^0.0.6"
 
+tar-stream@^1.5.2:
+  version "1.5.4"
+  resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.5.4.tgz#36549cf04ed1aee9b2a30c0143252238daf94016"
+  dependencies:
+    bl "^1.0.0"
+    end-of-stream "^1.0.0"
+    readable-stream "^2.0.0"
+    xtend "^4.0.0"
+
 tar@^2.2.1:
   version "2.2.1"
   resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1"
@@ -5767,7 +6526,7 @@ text-extensions@^1.0.0:
   version "1.7.0"
   resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.7.0.tgz#faaaba2625ed746d568a23e4d0aacd9bf08a8b39"
 
-text-table@~0.2.0:
+text-table@^0.2.0, text-table@~0.2.0:
   version "0.2.0"
   resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
 
@@ -5775,7 +6534,7 @@ the-argv@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/the-argv/-/the-argv-1.0.0.tgz#0084705005730dd84db755253c931ae398db9522"
 
-thenify-all@^1.0.0:
+thenify-all@^1.0.0, thenify-all@^1.6.0:
   version "1.6.0"
   resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726"
   dependencies:
@@ -5794,7 +6553,7 @@ through2@^2.0.0, through2@^2.0.2:
     readable-stream "^2.1.5"
     xtend "~4.0.1"
 
-through@2, "through@>=2.2.7 <3", through@^2.3.6, through@~2.3, through@~2.3.1:
+through@2, "through@>=2.2.7 <3", through@^2.3.6, through@~2.3, through@~2.3.1, through@~2.3.4:
   version "2.3.8"
   resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
 
@@ -5802,6 +6561,10 @@ time-stamp@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-2.0.0.tgz#95c6a44530e15ba8d6f4a3ecb8c3a3fac46da357"
 
+timed-out@^3.0.0:
+  version "3.1.3"
+  resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-3.1.3.tgz#95860bfcc5c76c277f8f8326fd0f5b2e20eba217"
+
 timed-out@^4.0.0:
   version "4.0.1"
   resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f"
@@ -5812,6 +6575,27 @@ timers-browserify@^2.0.2:
   dependencies:
     setimmediate "^1.0.4"
 
+tlds@^1.187.0:
+  version "1.198.0"
+  resolved "https://registry.yarnpkg.com/tlds/-/tlds-1.198.0.tgz#e7413ea5cccb5e1f4de2a1f45230b0c80994a886"
+
+tmp-promise@^1.0.3:
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/tmp-promise/-/tmp-promise-1.0.3.tgz#3b450927ab78c6aedca5e628c677f536cae38bc5"
+  dependencies:
+    bluebird "^3.3.1"
+    tmp "0.0.31"
+
+tmp@0.0.31:
+  version "0.0.31"
+  resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7"
+  dependencies:
+    os-tmpdir "~1.0.1"
+
+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"
@@ -5832,6 +6616,10 @@ tough-cookie@~2.3.0, tough-cookie@~2.3.3:
   dependencies:
     punycode "^1.4.1"
 
+travis-after-all@^1.4.4:
+  version "1.4.5"
+  resolved "https://registry.yarnpkg.com/travis-after-all/-/travis-after-all-1.4.5.tgz#55c0bd9afce2b8dc208ed026aa695fc93f06a65c"
+
 travis-ci@^2.1.1:
   version "2.1.1"
   resolved "https://registry.yarnpkg.com/travis-ci/-/travis-ci-2.1.1.tgz#98696265af827ae3576f31aa06d876e74b4b082e"
@@ -5858,6 +6646,12 @@ trim-off-newlines@^1.0.0:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz#9f9ba9d9efa8764c387698bcbfeb2c848f11adb3"
 
+trim-repeated@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/trim-repeated/-/trim-repeated-1.0.0.tgz#e3646a2ea4e891312bf7eace6cfb05380bc01c21"
+  dependencies:
+    escape-string-regexp "^1.0.2"
+
 trim-right@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003"
@@ -5938,10 +6732,21 @@ 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"
+
 ultron@~1.1.0:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.0.tgz#b07a2e6a541a815fc6a34ccd4533baec307ca864"
 
+unbzip2-stream@^1.0.9:
+  version "1.2.5"
+  resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.2.5.tgz#73a033a567bbbde59654b193c44d48a7e4f43c47"
+  dependencies:
+    buffer "^3.0.1"
+    through "^2.3.6"
+
 undefsafe@0.0.3:
   version "0.0.3"
   resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-0.0.3.tgz#ecca3a03e56b9af17385baac812ac83b994a962f"
@@ -5968,10 +6773,27 @@ unpipe@1.0.0, unpipe@~1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
 
+unzip-response@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-1.0.2.tgz#b984f0877fc0a89c2c773cc1ef7b5b232b5b06fe"
+
 unzip-response@^2.0.1:
   version "2.0.1"
   resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97"
 
+update-notifier@^1.0.3:
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-1.0.3.tgz#8f92c515482bd6831b7c93013e70f87552c7cf5a"
+  dependencies:
+    boxen "^0.6.0"
+    chalk "^1.0.0"
+    configstore "^2.0.0"
+    is-npm "^1.0.0"
+    latest-version "^2.0.0"
+    lazy-req "^1.1.0"
+    semver-diff "^2.0.0"
+    xdg-basedir "^2.0.0"
+
 update-notifier@^2.1.0, update-notifier@^2.2.0:
   version "2.3.0"
   resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.3.0.tgz#4e8827a6bb915140ab093559d7014e3ebb837451"
@@ -5992,6 +6814,17 @@ url-parse-lax@^1.0.0:
   dependencies:
     prepend-http "^1.0.1"
 
+url-regex@^4.0.0:
+  version "4.1.1"
+  resolved "https://registry.yarnpkg.com/url-regex/-/url-regex-4.1.1.tgz#a5617b22e15e26dac57ce74c3f52088bcdfec995"
+  dependencies:
+    ip-regex "^1.0.1"
+    tlds "^1.187.0"
+
+url-to-options@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9"
+
 url@0.11.0, url@^0.11.0:
   version "0.11.0"
   resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
@@ -6023,6 +6856,10 @@ uuid@3.1.0, uuid@^3.0.0, uuid@^3.1.0:
   version "3.1.0"
   resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04"
 
+uuid@^2.0.1:
+  version "2.0.3"
+  resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a"
+
 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"
@@ -6048,6 +6885,10 @@ verror@1.10.0:
     core-util-is "1.0.2"
     extsprintf "^1.2.0"
 
+vlq@^0.2.1:
+  version "0.2.3"
+  resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz#8f3e4328cf63b1540c0d67e1b2778386f8975b26"
+
 vm-browserify@0.0.4:
   version "0.0.4"
   resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73"
@@ -6068,6 +6909,12 @@ watchpack@^1.4.0:
     chokidar "^1.7.0"
     graceful-fs "^4.1.2"
 
+wbuf@^1.1.0, wbuf@^1.7.2:
+  version "1.7.2"
+  resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.2.tgz#d697b99f1f59512df2751be42769c1580b5801fe"
+  dependencies:
+    minimalistic-assert "^1.0.0"
+
 webpack-bundle-analyzer@^2.8.3:
   version "2.9.0"
   resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-2.9.0.tgz#b58bc34cc30b27ffdbaf3d00bf27aba6fa29c6e3"
@@ -6190,6 +7037,14 @@ wrappy@1:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
 
+write-file-atomic@^1.1.2:
+  version "1.3.4"
+  resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.3.4.tgz#f807a4f0b1d9e913ae7a48112e6cc3af1991b45f"
+  dependencies:
+    graceful-fs "^4.1.11"
+    imurmurhash "^0.1.4"
+    slide "^1.1.5"
+
 write-file-atomic@^2.0.0:
   version "2.3.0"
   resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.3.0.tgz#1ff61575c2e2a4e8e510d6fa4e243cce183999ab"
@@ -6233,6 +7088,13 @@ write@^0.2.1:
   dependencies:
     mkdirp "^0.5.1"
 
+ws@1.1.2:
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.2.tgz#8a244fa052401e08c9886cf44a85189e1fd4067f"
+  dependencies:
+    options ">=0.0.5"
+    ultron "1.0.x"
+
 ws@^2.3.1:
   version "2.3.1"
   resolved "https://registry.yarnpkg.com/ws/-/ws-2.3.1.tgz#6b94b3e447cb6a363f785eaf94af6359e8e81c80"
@@ -6240,10 +7102,24 @@ ws@^2.3.1:
     safe-buffer "~5.0.1"
     ultron "~1.1.0"
 
+wtf-8@1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/wtf-8/-/wtf-8-1.0.0.tgz#392d8ba2d0f1c34d1ee2d630f15d0efb68e1048a"
+
+xdg-basedir@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-2.0.0.tgz#edbc903cc385fc04523d966a335504b5504d1bd2"
+  dependencies:
+    os-homedir "^1.0.0"
+
 xdg-basedir@^3.0.0:
   version "3.0.0"
   resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4"
 
+xmlhttprequest-ssl@1.5.3:
+  version "1.5.3"
+  resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz#185a888c04eca46c3e4070d99f7b49de3528992d"
+
 xo-init@^0.5.0:
   version "0.5.0"
   resolved "https://registry.yarnpkg.com/xo-init/-/xo-init-0.5.0.tgz#8e28dec79676cc5e042fde5fd8f710e2646b0e36"
@@ -6334,3 +7210,14 @@ yargs@~3.10.0:
     cliui "^2.1.0"
     decamelize "^1.0.0"
     window-size "0.1.0"
+
+yauzl@^2.4.2:
+  version "2.8.0"
+  resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.8.0.tgz#79450aff22b2a9c5a41ef54e02db907ccfbf9ee2"
+  dependencies:
+    buffer-crc32 "~0.2.3"
+    fd-slicer "~1.0.1"
+
+yeast@0.1.2:
+  version "0.1.2"
+  resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419"

From 5b387f799a23e9885a1d003ae537f8ad900f5f0f Mon Sep 17 00:00:00 2001
From: Vinay Puppal <me@vinaypuppal.com>
Date: Wed, 18 Oct 2017 23:52:36 +0530
Subject: [PATCH 02/22] remove login, jobs, projects, profile functionality and
 pages

---
 components/header.js     |  62 +-----
 hocs/public-page.js      |  28 +--
 hocs/secret-page.js      |  54 -----
 package.json             |  38 +---
 pages/jobs/index.js      | 383 ----------------------------------
 pages/jobs/new.js        | 377 ----------------------------------
 pages/login.js           |  79 -------
 pages/profile/edit.js    |  24 ---
 pages/profile/index.js   | 196 ------------------
 pages/profile/new.js     | 434 ---------------------------------------
 server.js                |  90 --------
 utils/authenticate.js    |  55 -----
 utils/feathers-client.js |  19 --
 utils/redirect.js        |  15 --
 yarn.lock                | 226 ++------------------
 15 files changed, 30 insertions(+), 2050 deletions(-)
 delete mode 100644 hocs/secret-page.js
 delete mode 100644 pages/jobs/index.js
 delete mode 100644 pages/jobs/new.js
 delete mode 100644 pages/login.js
 delete mode 100644 pages/profile/edit.js
 delete mode 100644 pages/profile/index.js
 delete mode 100644 pages/profile/new.js
 delete mode 100644 server.js
 delete mode 100644 utils/authenticate.js
 delete mode 100644 utils/feathers-client.js
 delete mode 100644 utils/redirect.js

diff --git a/components/header.js b/components/header.js
index 7c1030e1c..571eb9663 100644
--- a/components/header.js
+++ b/components/header.js
@@ -3,9 +3,7 @@ import Headroom from 'react-headroom';
 import NProgress from 'nprogress';
 import Router from 'next/router';
 import Link from 'next/link';
-import { Dropdown } from 'semantic-ui-react';
 
-import { logout } from '../utils/authenticate';
 import GlobalStyles from './global-styles';
 import Head from './head';
 
@@ -30,36 +28,29 @@ export default props => {
     {
       title: 'Home',
       path: '/',
+      external: false,
     },
     {
       title: 'Events',
       path: '/events',
+      external: false,
     },
     {
       title: 'Learn',
       path: '/learn',
+      external: false,
     },
     {
       title: 'Space',
       path: '/space',
-    },
-    {
-      title: 'Jobs',
-      path: '/jobs',
-    },
-    {
-      title: 'Projects',
-      path: '/projects',
+      external: false,
     },
     {
       title: 'Blog',
       path: 'https://medium.com/freecodecamp-hyderabad',
+      external: true,
     },
-    {
-      title: 'Login/Register',
-      path: '/login',
-    },
-  ].filter(item => (props.username ? item.path !== '/login' : true));
+  ];
   return (
     <Headroom>
       <header>
@@ -73,17 +64,13 @@ export default props => {
             <ul className="nav__links">
               {navItems.map(item => {
                 return (
-                  <li
-                    key={item.title}
-                    className={`nav__linkItem ${item.path === '/login'
-                      ? 'login__btn'
-                      : ''}`}
-                  >
+                  <li key={item.title} className="nav__linkItem">
                     <Link href={item.path}>
                       <a
                         className={`nav__link ${props.url.pathname === item.path
                           ? 'nav__link--active'
                           : ''}`}
+                        target={item.external ? '_blank' : '_self'}
                       >
                         {item.title}
                       </a>
@@ -91,26 +78,6 @@ export default props => {
                   </li>
                 );
               })}
-              {props.username && (
-                <li className="nav__linkItem">
-                  <img src={props.avatarUrl} alt="avatar_img" />
-                  <Dropdown
-                    inline
-                    text={`${props.username}`}
-                    pointing
-                    className="dropdown__linkItem"
-                  >
-                    <Dropdown.Menu>
-                      <Link href="/profile">
-                        <Dropdown.Item as="a">Profile</Dropdown.Item>
-                      </Link>
-                      <Dropdown.Item onClick={() => logout()}>
-                        Logout
-                      </Dropdown.Item>
-                    </Dropdown.Menu>
-                  </Dropdown>
-                </li>
-              )}
             </ul>
           </nav>
         </div>
@@ -180,19 +147,6 @@ export default props => {
           border-bottom: 2px solid #314159;
           pointer-events: none;
         }
-        .login__btn .nav__link {
-          font-weight: bold;
-          color: #00df90;
-        }
-        .login__btn .nav__link:hover {
-          font-weight: bold;
-          color: #01bf7c;
-        }
-        .login__btn .nav__link--active {
-          color: #01bf7c;
-          border-bottom: 2px solid #00df90;
-          pointer-events: none;
-        }
         @media (max-width: 700px) {
           nav {
             justify-content: center;
diff --git a/hocs/public-page.js b/hocs/public-page.js
index 59252aa12..f03453572 100644
--- a/hocs/public-page.js
+++ b/hocs/public-page.js
@@ -1,42 +1,16 @@
 import React from 'react';
 
-import redirect from '../utils/redirect';
-import { authenticate } from '../utils/authenticate';
 import Header from '../components/header';
 import Footer from '../components/footer';
 
 export default Page => {
   return class PublicPage extends React.Component {
     static async getInitialProps(ctx) {
-      let authData;
       let initialProps = {};
-      const pathName = ctx.req ? ctx.req.url : ctx.pathname;
-      if (ctx.req && ctx.req.user) {
-        authData = ctx.req.user;
-      } else {
-        try {
-          authData = await authenticate(ctx);
-        } catch (err) {
-          console.error(err);
-          if (Page.getInitialProps) {
-            initialProps = await Page.getInitialProps(ctx);
-          }
-          return { ...initialProps };
-        }
-      }
-
-      if (authData) {
-        if (pathName === '/login') {
-          return redirect(ctx, '/profile');
-        }
-      }
       if (Page.getInitialProps) {
         initialProps = await Page.getInitialProps(ctx);
       }
-      if (!authData) {
-        return { ...initialProps };
-      }
-      return { ...authData, ...initialProps };
+      return { ...initialProps };
     }
     render() {
       return (
diff --git a/hocs/secret-page.js b/hocs/secret-page.js
deleted file mode 100644
index 27feeef6f..000000000
--- a/hocs/secret-page.js
+++ /dev/null
@@ -1,54 +0,0 @@
-import React from 'react';
-
-import redirect from '../utils/redirect';
-import { authenticate } from '../utils/authenticate';
-import Header from '../components/header';
-import Footer from '../components/footer';
-
-export default Page => {
-  return class SecretPage extends React.Component {
-    static async getInitialProps(ctx) {
-      let authData;
-      let initialProps = {};
-      const pathName = ctx.req ? ctx.req.url : ctx.pathname;
-      if (ctx.req && ctx.req.user) {
-        authData = ctx.req.user;
-      } else {
-        try {
-          authData = await authenticate(ctx);
-        } catch (err) {
-          console.log(err);
-          return redirect(ctx);
-        }
-      }
-      if (
-        pathName === '/profile' &&
-        authData.interestedTechnologies.length === 0
-      ) {
-        return redirect(ctx, '/profile/new');
-      }
-      if (!authData) {
-        if (pathName === '/login') {
-          if (Page.getInitialProps) {
-            initialProps = await Page.getInitialProps(...ctx);
-          }
-          return { ...initialProps };
-        }
-        return redirect(ctx);
-      }
-      if (Page.getInitialProps) {
-        initialProps = await Page.getInitialProps({ ...ctx });
-      }
-      return { ...authData, ...initialProps };
-    }
-    render() {
-      return (
-        <div>
-          <Header {...this.props} title={'CoderPlex | Profile-New'} />
-          <Page {...this.props} />
-          <Footer />
-        </div>
-      );
-    }
-  };
-};
diff --git a/package.json b/package.json
index 4c85319d6..6cdb5ee56 100644
--- a/package.json
+++ b/package.json
@@ -5,35 +5,25 @@
   "main": "index.js",
   "scripts": {
     "test": "xo",
-    "lint": "prettier 'utils/**/*.js' 'components/**/*.js' 'pages/**/*.js' 'lib/**/*.js' 'hocs/**/*.js' '*.js' --write --single-quote --print-width='80' --trailing-comma='all' && xo --fix",
+    "lint":
+      "prettier 'utils/**/*.js' 'components/**/*.js' 'pages/**/*.js' 'lib/**/*.js' 'hocs/**/*.js' '*.js' --write --single-quote --print-width='80' --trailing-comma='all' && xo --fix",
     "precommit": "lint-staged",
     "analyze": "cross-env ANALYZE=1 next build",
-    "dev": "cross-env NODE_ENV=development nodemon server.js -w server.js",
-    "dev:with-api": "cross-env WITH_API=1 nodemon server.js -w server.js",
-    "start": "cross-env NODE_ENV=production node server",
-    "build": "next build",
-    "heroku-postbuild": "next build"
+    "dev": "cross-env NODE_ENV=development next",
+    "start": "cross-env NODE_ENV=production next start",
+    "build": "next build"
   },
   "xo": {
     "parser": "babel-eslint",
-    "extends": [
-      "prettier",
-      "prettier/react",
-      "plugin:react/recommended"
-    ],
-    "env": [
-      "browser",
-      "node"
-    ],
+    "extends": ["prettier", "prettier/react", "plugin:react/recommended"],
+    "env": ["browser", "node"],
     "rules": {
       "linebreak-style": 0,
       "react/display-name": 0,
       "react/prop-types": 0
     },
     "space:": 2,
-    "ignores": [
-      "next.config.js"
-    ]
+    "ignores": ["next.config.js"]
   },
   "lint-staged": {
     "*.js": [
@@ -44,22 +34,13 @@
   },
   "keywords": [],
   "author": "Vinay Puppal <me@vinaypuppal.com> (https://www.vinaypuppal.com/)",
-  "license": "MIT",
+  "license": "BSD",
   "dependencies": {
     "axios": "^0.16.2",
-    "cookie-parser": "^1.4.3",
-    "express": "^4.15.3",
-    "feathers": "^2.1.7",
-    "feathers-authentication-client": "^0.3.3",
-    "feathers-hooks": "^2.0.2",
     "feathers-rest": "^1.8.0",
-    "isomorphic-unfetch": "^2.0.0",
-    "js-cookie": "^2.1.4",
     "moment": "^2.19.1",
     "next": "^4.1.0",
     "nprogress": "^0.2.0",
-    "preact": "^8.2.1",
-    "preact-compat": "^3.16.0",
     "prop-types": "^15.5.10",
     "react": "^16.0.0",
     "react-count-down": "^1.1.0",
@@ -78,7 +59,6 @@
     "eslint-plugin-react": "^7.1.0",
     "husky": "^0.14.3",
     "lint-staged": "^4.0.2",
-    "nodemon": "^1.11.0",
     "now-travis": "1.0.1",
     "prettier": "^1.7.0",
     "webpack-bundle-analyzer": "^2.8.3",
diff --git a/pages/jobs/index.js b/pages/jobs/index.js
deleted file mode 100644
index 7ff3d1dcc..000000000
--- a/pages/jobs/index.js
+++ /dev/null
@@ -1,383 +0,0 @@
-import React from 'react';
-import Link from 'next/link';
-import { Input, Dropdown, Button, Header, Icon } from 'semantic-ui-react';
-import FaBuilding from 'react-icons/lib/fa/building';
-import FaLocation from 'react-icons/lib/fa/map-marker';
-// Import FaArrowRight from 'react-icons/lib/fa/angle-right'
-
-import publicPage from '../../hocs/public-page';
-import { client as feathersClient } from '../../utils/feathers-client';
-import truncateString from '../../utils';
-
-const _jobTypes = ['FullTime', 'PartTime', 'Remote', 'Consulting', 'Freelance'];
-
-const jobTypes = _jobTypes.map(type => ({
-  key: type,
-  text: type,
-  value: type,
-}));
-
-const technologies = [
-  { key: 'all', text: 'All', value: 'all' },
-  { key: 'angular', text: 'Angular', value: 'angular' },
-  { key: 'css', text: 'CSS', value: 'css' },
-  { key: 'design', text: 'Graphic Design', value: 'design' },
-  { key: 'ember', text: 'Ember', value: 'ember' },
-  { key: 'html', text: 'HTML', value: 'html' },
-  { key: 'ia', text: 'Information Architecture', value: 'ia' },
-  { key: 'javascript', text: 'Javascript', value: 'javascript' },
-  { key: 'meteor', text: 'Meteor', value: 'meteor' },
-  { key: 'node', text: 'NodeJS', value: 'node' },
-  { key: 'python', text: 'Python', value: 'python' },
-  { key: 'rails', text: 'Rails', value: 'rails' },
-  { key: 'react', text: 'React', value: 'react' },
-  { key: 'ruby', text: 'Ruby', value: 'ruby' },
-  { key: 'ui', text: 'UI Design', value: 'ui' },
-  { key: 'ux', text: 'User Experience', value: 'ux' },
-];
-
-const Jobs = props => (
-  <div>
-    <main>
-      <div className="header">
-        <h1>Find your next job</h1>
-        <h4>Imagine what you could be working on.</h4>
-        <div className="inputs">
-          <Input
-            className="search-input"
-            size="large"
-            icon="search"
-            placeholder="Search For Open Positions"
-          />
-        </div>
-      </div>
-      <section className="jobs">
-        <div className="jobs__filter">
-          <Link href="/jobs/new">
-            <Button className="new__job" as="a" primary>
-              Post New Job
-            </Button>
-          </Link>
-          <Header className="no-m">
-            <Icon name="filter" />
-
-            <Header.Content>
-              Show me jobs by
-              {'  '}
-              <Dropdown
-                scrolling
-                inline
-                options={technologies}
-                defaultValue={technologies[0].value}
-              />{' '}
-              technologie/s and {'  '}
-              <Dropdown
-                inline
-                options={jobTypes}
-                defaultValue={jobTypes[0].value}
-              />{' '}
-              jobs
-            </Header.Content>
-          </Header>
-        </div>
-        <div className="jobs__container">
-          <div className="jobs__content">
-            <div className="jobs__right">
-              {props.jobs.map(job => {
-                return (
-                  <div key={job.id} className="job">
-                    <h3 className="job__title">{job.title}</h3>
-                    <div className="job__meta">
-                      <a target="_blank" href={job.companyDetails.website}>
-                        <FaBuilding size={15} />
-                        {job.companyDetails.name}
-                      </a>{' '}
-                      {' '}
-                      <a
-                        rel="noopener noreferrer"
-                        target="_blank"
-                        href="https://maps.google.com"
-                      >
-                        <FaLocation size={15} />
-                        {job.companyDetails.location}
-                      </a>
-                    </div>
-                    <div className="job__desc">
-                      {truncateString(job.description, 100)}
-                    </div>
-                    <ul className="job__skils">
-                      {job.requiredTechnologies.map(skill => (
-                        <li key={skill}>{skill}</li>
-                      ))}
-                    </ul>
-                    <div className="job__cta">
-                      <div className="job__type">{job.jobType}</div>
-                      <div className="job__salary">
-                        {typeof job.payScale === 'string'
-                          ? `${job.payScale}`
-                          : `$ ${Math.floor(
-                              job.payScale.from,
-                            )}k to ${Math.floor(job.payScale.to)}k`}
-                      </div>
-                      <Link href="/projects">
-                        <a>More Details</a>
-                      </Link>
-                    </div>
-                  </div>
-                );
-              })}
-            </div>
-            {/* <div className="jobs__more">
-              <Link href="/jobs">
-                <a>View More <FaArrowRight size={20} /></a>
-              </Link>
-            </div> */}
-          </div>
-        </div>
-      </section>
-    </main>
-    <style jsx>{`
-      main {
-        min-height: calc(100vh - 70px);
-        background: #fafafa;
-        color: #314159;
-      }
-      .header {
-        height: 250px;
-        width: 100%;
-        padding: 20px;
-        background: #eee;
-        display: flex;
-        justify-contnet: center;
-        align-items: center;
-        flex-direction: column;
-        position: relative;
-      }
-      .header h1 {
-        font-size: 5rem;
-        margin-bottom: 0.5rem;
-        font-family: inherit;
-        font-weight: 500;
-        line-height: 1.1;
-      }
-      .header h4 {
-        font-size: 1.5rem;
-        margin-bottom: 0.5rem;
-        font-family: inherit;
-        font-weight: 500;
-        line-height: 1.1;
-        color: rgba(49, 65, 89, 0.6);
-      }
-      .inputs {
-        margin-top: 20px;
-        display: flex;
-        width: 45%;
-        justify-content: space-between;
-      }
-      .inputs :global(.search-input) {
-        width: 100%;
-      }
-      .jobs__container {
-        max-width: 1280px;
-        margin: 0 auto;
-      }
-      .jobs__filter {
-        display: flex;
-        justify-content: center;
-        align-items: center;
-        padding: 10px;
-        background: #ddd;
-        position: relative;
-      }
-      .jobs__filter :global(.new__job) {
-        position: absolute;
-        top: 5px;
-        right: 100px;
-      }
-      .jobs__filter :global(.no-m) {
-        margin: 0;
-      }
-      .jobs__content {
-        padding: 0 20px;
-      }
-      .jobs__right {
-        display: flex;
-        flex-wrap: wrap;
-        justify-content: center;
-      }
-      .jobs__left p {
-        color: #666;
-        font-size: 20px;
-        line-height: 1.4;
-        text-align: center;
-        max-width: 600px;
-        margin: 0 auto;
-        font-weight: 300;
-      }
-      .job {
-        background: #fff;
-        padding: 20px;
-        width: 400px;
-        box-shadow: 0 2px 2px 0 rgba(63, 81, 181, 0.14);
-        border-radius: 8px;
-        margin: 20px;
-        display: flex;
-        flex-direction: column;
-        justify-content: center;
-        flex-direction: column;
-      }
-      .job {
-        min-width: 460px;
-        color: #314159;
-      }
-      .job__title {
-        margin: 0;
-        padding: 0 0 10px 0;
-        display: flex;
-        flex-direction: column;
-        color: #314159;
-      }
-      .job__title {
-        flex-direction: row;
-        justify-content: center;
-        align-items: center;
-        margin: 0;
-        padding: 0;
-      }
-      .job__meta {
-        margin: 10px 0 5px 0;
-        display: flex;
-        align-items: center;
-        justify-content: center;
-      }
-      .job__meta a {
-        color: #888;
-        text-decoration: none;
-        font-weight: 400;
-        margin: 0 10px;
-      }
-      .job__type,
-      .job__salary {
-        border-radius: 20px;
-        padding: 8px;
-        font-size: 14px;
-        color: #00df90;
-        border: 1px solid #00df90;
-      }
-      .job__desc {
-        padding: 10px 0;
-        color: #888;
-        text-align: center;
-      }
-      .job__cta a,
-      .job__cta {
-        display: flex;
-        justify-content: center;
-      }
-      .job__cta {
-        padding-top: 10px;
-        justify-content: flex-end;
-      }
-      .job__cta {
-        justify-content: space-around;
-        align-items: center;
-      }
-      .job__cta a {
-        text-decoration: none;
-        padding: 10px 20px;
-        color: #fff;
-        font-size: 16px;
-        text-transform: uppercase;
-        background: #00df90;
-        border-radius: 4px;
-        box-shadow: 0 2px 4px rgba(61, 71, 82, 0.1);
-        cursor: pointer;
-      }
-      .job__cta a:hover {
-        background: #01bf7c;
-      }
-      .job__skils {
-        margin: 0;
-        padding: 0;
-        list-style: none;
-        display: flex;
-        flex-wrap: wrap;
-        justify-content: center;
-      }
-      .job__skils li {
-        margin: 10px;
-        border-radius: 20px;
-        padding: 8px 10px;
-        font-size: 12px;
-        color: #888;
-        border: 2px solid #e1e7f5;
-      }
-      .jobs__more {
-        display: flex;
-        justify-content: center;
-        margin: 10px 0;
-      }
-      .jobs__more a {
-        text-decoration: none;
-        color: #00df90;
-        display: flex;
-        align-items: center;
-        padding: 20px 0;
-      }
-      .jobs__more a:hover {
-        color: teal;
-        text-decoration: underline;
-      }
-      @media (max-width: 1000px) {
-        .jobs__left p {
-          font-size: 22px;
-        }
-      }
-      @media (max-width: 580px) {
-        .jobs h2 {
-          font-weight: 400;
-        }
-        .jobs__left p {
-          font-size: 16px;
-        }
-        .job {
-          min-width: 100%;
-          width: 100%;
-          padding: 15px;
-        }
-        .job__title {
-          font-size: 20px;
-          text-align: center;
-        }
-        .job__meta {
-          flex-wrap: wrap;
-        }
-        .job__meta a {
-          margin: 5px;
-        }
-        .job__cta a,
-        .job__type,
-        .job__salary {
-          font-size: 12px;
-          padding: 8px;
-        }
-      }
-    `}</style>
-  </div>
-);
-
-Jobs.getInitialProps = async () => {
-  const jobs = await feathersClient
-    .service('jobs')
-    .find({
-      query: {
-        $sort: {
-          createdAt: -1,
-        },
-      },
-    })
-    .then(res => res.data);
-  return { jobs };
-};
-
-export default publicPage(Jobs);
diff --git a/pages/jobs/new.js b/pages/jobs/new.js
deleted file mode 100644
index 103303b17..000000000
--- a/pages/jobs/new.js
+++ /dev/null
@@ -1,377 +0,0 @@
-import React from 'react';
-import Router from 'next/router';
-import {
-  Container,
-  Message,
-  Form,
-  Grid,
-  Input,
-  TextArea,
-  Select,
-  Dropdown,
-} from 'semantic-ui-react';
-
-import secretPage from '../../hocs/secret-page';
-import { client as feathersClient } from '../../utils/feathers-client';
-
-const _jobTypes = ['FullTime', 'PartTime', 'Remote', 'Consulting', 'Freelance'];
-
-const jobTypes = _jobTypes.map(type => ({
-  key: type,
-  text: type,
-  value: type,
-}));
-
-const technologies = [
-  { key: 'angular', text: 'Angular', value: 'angular' },
-  { key: 'css', text: 'CSS', value: 'css' },
-  { key: 'design', text: 'Graphic Design', value: 'design' },
-  { key: 'ember', text: 'Ember', value: 'ember' },
-  { key: 'html', text: 'HTML', value: 'html' },
-  { key: 'ia', text: 'Information Architecture', value: 'ia' },
-  { key: 'javascript', text: 'Javascript', value: 'javascript' },
-  { key: 'meteor', text: 'Meteor', value: 'meteor' },
-  { key: 'node', text: 'NodeJS', value: 'node' },
-  { key: 'python', text: 'Python', value: 'python' },
-  { key: 'rails', text: 'Rails', value: 'rails' },
-  { key: 'react', text: 'React', value: 'react' },
-  { key: 'ruby', text: 'Ruby', value: 'ruby' },
-  { key: 'ui', text: 'UI Design', value: 'ui' },
-  { key: 'ux', text: 'User Experience', value: 'ux' },
-];
-
-class PostJob extends React.Component {
-  state = {
-    title: '',
-    description: '',
-    payScale: '',
-    jobType: '',
-    technologies,
-    requiredTechnologies: [],
-    companyName: '',
-    companyLocation: '',
-    companyWebsite: '',
-    companyEmail: '',
-    errors: [],
-    errorMessage: '',
-    loading: false,
-  };
-  handelForm = e => {
-    e.preventDefault();
-    const {
-      title,
-      description,
-      payScale,
-      jobType,
-      requiredTechnologies,
-      companyName,
-      companyLocation,
-      companyWebsite,
-      companyEmail,
-    } = this.state;
-    if (!title) {
-      this.setState({
-        errors: ['title'],
-      });
-      return;
-    }
-    if (!description) {
-      this.setState({
-        errors: ['description'],
-      });
-      return;
-    }
-    if (!jobType) {
-      this.setState({
-        errors: ['jobType'],
-      });
-      return;
-    }
-    if (!payScale) {
-      this.setState({
-        errors: ['payScale'],
-      });
-      return;
-    }
-    if (requiredTechnologies.length === 0) {
-      this.setState({
-        errors: ['requiredTechnologies'],
-      });
-      return;
-    }
-    if (!companyName) {
-      this.setState({
-        errors: ['companyName'],
-      });
-      return;
-    }
-    if (!companyWebsite) {
-      this.setState({
-        errors: ['companyWebsite'],
-      });
-      return;
-    }
-    if (!companyEmail) {
-      this.setState({
-        errors: ['companyEmail'],
-      });
-      return;
-    }
-    if (!companyLocation) {
-      this.setState({
-        errors: ['companyLocation'],
-      });
-      return;
-    }
-    this.setState({ loading: true });
-    const companyDetails = {
-      name: companyName,
-      location: companyLocation,
-      website: companyWebsite,
-      email: companyEmail,
-    };
-    feathersClient
-      .service('jobs')
-      .create({
-        title,
-        description,
-        payScale,
-        jobType,
-        requiredTechnologies,
-        companyDetails,
-      })
-      .then(job => {
-        console.log(job);
-        return Router.push('/jobs').then(() => {
-          this.setState({
-            loading: false,
-            title: '',
-            description: '',
-            payScale: '',
-            jobType: '',
-            requiredTechnologies: '',
-            companyName: '',
-            companyLocation: '',
-            companyWebsite: '',
-            companyEmail: '',
-          });
-        });
-      })
-      .catch(err => {
-        console.log(err);
-        this.setState({
-          loading: false,
-          errors: [`${e.message}`],
-          errorMessage: e.message,
-        });
-      });
-    console.log('all don');
-  };
-  render() {
-    return (
-      <div>
-        <main>
-          <Container text>
-            <Message info>
-              <Message.Header>Hi, {this.props.username} :)</Message.Header>
-              <p>Fill the below details to post new job opening</p>
-            </Message>
-            <Form
-              loading={this.state.loading}
-              onSubmit={this.handelForm}
-              error={Boolean(this.state.errors.length)}
-            >
-              <Grid stackable columns={2} divided>
-                <Grid.Row>
-                  <Grid.Column>
-                    <Form.Group widths="equal">
-                      <Form.Field
-                        required
-                        control={Input}
-                        label="Title"
-                        placeholder={`${this.state.errors.includes('title')
-                          ? ''
-                          : 'Job Title'}`}
-                        value={this.state.title}
-                        onChange={e => this.setState({ title: e.target.value })}
-                      />
-                    </Form.Group>
-                    <Form.Field
-                      required
-                      control={TextArea}
-                      style={{ height: '120px !important' }}
-                      label="Description"
-                      placeholder={`${this.state.errors.includes('description')
-                        ? ''
-                        : 'Job description'}`}
-                      value={this.state.description}
-                      onChange={e =>
-                        this.setState({ description: e.target.value })}
-                    />
-                    <Form.Group widths="equal">
-                      <Form.Field
-                        control={Select}
-                        label="JobType"
-                        options={jobTypes}
-                        required
-                        placeholder={`${this.state.errors.includes('jobType')
-                          ? ''
-                          : 'FullTime | PartTime ...'}`}
-                        value={this.state.jobType}
-                        onChange={(e, data) =>
-                          this.setState({ jobType: data.value })}
-                      />
-                    </Form.Group>
-                    <Form.Group widths="equal">
-                      <Form.Field
-                        search
-                        selection
-                        fluid
-                        multiple
-                        allowAdditions
-                        control={Dropdown}
-                        options={this.state.technologies}
-                        required
-                        label="Technologies Required"
-                        placeholder={`${this.state.errors.includes(
-                          'requiredTechnologies',
-                        )
-                          ? ''
-                          : 'Javascript, PHP, Python,...'}`}
-                        value={this.state.requiredTechnologies}
-                        onChange={(e, data) =>
-                          this.setState({ requiredTechnologies: data.value })}
-                        onAddItem={(e, { value }) =>
-                          this.setState({
-                            technologies: [
-                              { text: value, value, key: value },
-                              ...this.state.technologies,
-                            ],
-                          })}
-                      />
-                    </Form.Group>
-                  </Grid.Column>
-                  <Grid.Column>
-                    <Form.Group widths="equal">
-                      <Form.Field
-                        required
-                        control={Input}
-                        label="Pay Scale (per annum in INR)"
-                        placeholder={`${this.state.errors.includes('payScale')
-                          ? ''
-                          : '6.2L per annum'}`}
-                        value={this.state.payScale}
-                        onChange={e =>
-                          this.setState({ payScale: e.target.value })}
-                      />
-                    </Form.Group>
-                    <Form.Group widths="equal">
-                      <Form.Field
-                        required
-                        control={Input}
-                        label="Company Name"
-                        placeholder={`${this.state.errors.includes(
-                          'companyName',
-                        )
-                          ? ''
-                          : 'TCS'}`}
-                        value={this.state.companyName}
-                        onChange={e =>
-                          this.setState({ companyName: e.target.value })}
-                      />
-                    </Form.Group>
-                    <Form.Group widths="equal">
-                      <Form.Field
-                        required
-                        control={Input}
-                        label="Company Location"
-                        placeholder={`${this.state.errors.includes(
-                          'companyLocation',
-                        )
-                          ? ''
-                          : 'Hyderabad, Telangana'}`}
-                        value={this.state.companyLocation}
-                        onChange={e =>
-                          this.setState({ companyLocation: e.target.value })}
-                      />
-                    </Form.Group>
-                    <Form.Group widths="equal">
-                      <Form.Field
-                        required
-                        control={Input}
-                        label="Company Website"
-                        placeholder={`${this.state.errors.includes(
-                          'companyWebsite',
-                        )
-                          ? ''
-                          : 'https://infosys.com'}`}
-                        value={this.state.companyWebsite}
-                        onChange={e =>
-                          this.setState({ companyWebsite: e.target.value })}
-                      />
-                    </Form.Group>
-                    <Form.Group widths="equal">
-                      <Form.Field
-                        required
-                        control={Input}
-                        label="Contact Email"
-                        placeholder={`${this.state.errors.includes(
-                          'companyEmail',
-                        )
-                          ? ''
-                          : 'hr@infosys.com'}`}
-                        value={this.state.companyEmail}
-                        onChange={e =>
-                          this.setState({ companyEmail: e.target.value })}
-                      />
-                    </Form.Group>
-                  </Grid.Column>
-                </Grid.Row>
-              </Grid>
-              {this.state.errors.length ? (
-                <Message error>
-                  <Message.Header>
-                    Error:{' '}
-                    {this.state.errorMessage || 'Fill the required * fields'}
-                  </Message.Header>
-                  {!this.state.errorMessage && (
-                    <p>
-                      <strong>{this.state.errors.join(',')}</strong> is/are
-                      required fields
-                    </p>
-                  )}
-                </Message>
-              ) : (
-                ''
-              )}
-              <Form.Group widths="equal">
-                <Form.Button
-                  loading={this.state.loading}
-                  size="big"
-                  primary
-                  floated="right"
-                >
-                  Post Job
-                </Form.Button>
-              </Form.Group>
-            </Form>
-          </Container>
-        </main>
-        <style jsx>{`
-          main {
-            min-height: calc(100vh - 70px);
-            background: #fff;
-            padding: 30px 0;
-            color: #314159;
-            display: flex;
-            justify-content: center;
-            align-items: center;
-            flex-direction: column;
-          }
-        `}</style>
-      </div>
-    );
-  }
-}
-
-export default secretPage(PostJob);
diff --git a/pages/login.js b/pages/login.js
deleted file mode 100644
index 02db74c6c..000000000
--- a/pages/login.js
+++ /dev/null
@@ -1,79 +0,0 @@
-import React from 'react';
-import { Button, Segment } from 'semantic-ui-react';
-
-import { login } from '../utils/authenticate';
-import publicPage from '../hocs/public-page';
-
-export default publicPage(
-  class Login extends React.Component {
-    state = {
-      githubLoading: false,
-      linkedinLoading: false,
-    };
-    render() {
-      return (
-        <div>
-          <main>
-            <Segment padded="huge" stacked textAlign="center">
-              <h1>Welcome to coderplex</h1>
-              <p>Please login to coderplex or create an account</p>
-              <div className="btn-container">
-                <Button
-                  onClick={() => {
-                    this.setState({ githubLoading: true });
-                    login('github', this.props.url);
-                  }}
-                  loading={this.state.githubLoading}
-                  fluid
-                  size="huge"
-                  content="Github"
-                  icon="github"
-                  labelPosition="left"
-                />
-              </div>
-              <div className="btn-container">
-                <Button
-                  onClick={() => {
-                    this.setState({ linkedinLoading: true });
-                    login('linkedin', this.props.url);
-                  }}
-                  loading={this.state.linkedinLoading}
-                  fluid
-                  size="huge"
-                  color="linkedin"
-                  content="LinkedIn"
-                  icon="linkedin"
-                  labelPosition="left"
-                />
-              </div>
-              <p>Along with 300+ community members.</p>
-            </Segment>
-          </main>
-          <style jsx>{`
-            main {
-              display: flex;
-              flex-direction: column;
-              justify-content: center;
-              align-items: center;
-              color: #314159;
-              min-height: calc(100vh - 100px);
-              font-weight: 400;
-            }
-            h1 {
-              font-weight: 400;
-            }
-            .btn-container {
-              width: 300px;
-              margin: 20px auto;
-            }
-            @media (max-width: 600px) {
-              main {
-                min-height: auto;
-              }
-            }
-          `}</style>
-        </div>
-      );
-    }
-  },
-);
diff --git a/pages/profile/edit.js b/pages/profile/edit.js
deleted file mode 100644
index 024b21c90..000000000
--- a/pages/profile/edit.js
+++ /dev/null
@@ -1,24 +0,0 @@
-import React from 'react';
-
-import Icon from '../../components/icon';
-import publicPage from '../../hocs/public-page';
-
-export default publicPage(() => (
-  <div>
-    <main>
-      <Icon />
-      <h3>Under Construction, Coming Soon!...</h3>
-    </main>
-    <style jsx>{`
-      main {
-        min-height: calc(100vh - 70px);
-        background: #f4f7fb;
-        color: #314159;
-        display: flex;
-        justify-content: center;
-        align-items: center;
-        flex-direction: column;
-      }
-    `}</style>
-  </div>
-));
diff --git a/pages/profile/index.js b/pages/profile/index.js
deleted file mode 100644
index 8070d0730..000000000
--- a/pages/profile/index.js
+++ /dev/null
@@ -1,196 +0,0 @@
-import React from 'react';
-import Link from 'next/link';
-import { Grid, Button, Image, Divider, Tab } from 'semantic-ui-react';
-
-import secretPage from '../../hocs/secret-page';
-import Icon from '../../components/icon';
-
-const TabsContent = [
-  {
-    menuItem: 'Jobs',
-    render: () => (
-      <Tab.Pane attached={false}>
-        <div className="projects">
-          <h3>No Jobs Posted By You</h3>
-          <Icon />
-          <Link href="/jobs/new">
-            <Button as="a" primary>
-              Post New Job
-            </Button>
-          </Link>
-        </div>
-        <style jsx>{`
-          .projects {
-            display: flex;
-            flex-direction: column;
-            width: 100%;
-            height: 400px;
-            justify-content: space-around;
-            align-items: center;
-          }
-        `}</style>
-      </Tab.Pane>
-    ),
-  },
-  {
-    menuItem: 'Projects',
-    render: () => (
-      <Tab.Pane attached={false}>
-        <div className="projects">
-          <h3>No Projects Found</h3>
-          <Icon />
-          <Link href="/projects/new">
-            <Button as="a" primary>
-              Add New Project
-            </Button>
-          </Link>
-        </div>
-        <style jsx>{`
-          .projects {
-            display: flex;
-            flex-direction: column;
-            width: 100%;
-            height: 400px;
-            justify-content: space-around;
-            align-items: center;
-          }
-        `}</style>
-      </Tab.Pane>
-    ),
-  },
-];
-
-const Profile = props => (
-  <div>
-    <main>
-      <Grid container>
-        <Grid.Row>
-          <Grid.Column width={4}>
-            <Image src={props.avatarUrl} size="medium" shape="circular" />
-          </Grid.Column>
-          <Grid.Column width={9}>
-            <h1>{props.displayName}</h1>
-            <p>{props.bio}</p>
-            <p>
-              <strong>{props.profession} : </strong>
-              {props.company || 'Yes'}
-            </p>
-            <p>
-              <strong>From : </strong> {props.location || ''}
-            </p>
-            <p>
-              <strong>Interested Technologies : </strong>{' '}
-              {props.interestedTechnologies.join(', ')}
-            </p>
-            <p>
-              <strong>Familliar Technologies : </strong>{' '}
-              {props.familiarTechnologies.join(', ')}
-            </p>
-          </Grid.Column>
-          <Grid.Column width={3}>
-            <Link href="/profile/edit">
-              <Button as="a" primary>
-                Edit
-              </Button>
-            </Link>
-          </Grid.Column>
-        </Grid.Row>
-        <Divider />
-        <Grid.Row divided>
-          <Grid.Column width={3}>
-            <div className="btnContainer">
-              <Button
-                fluid
-                href={props.socialLinks.github}
-                as="a"
-                color="black"
-                icon="github"
-                content="Github"
-              />
-            </div>
-            <div className="btnContainer">
-              <Button
-                fluid
-                href={props.socialLinks.linkedin}
-                as="a"
-                color="linkedin"
-                icon="linkedin"
-                content="LinkedIn"
-              />
-            </div>
-            <div className="btnContainer">
-              <Button
-                fluid
-                href={props.socialLinks.facebook}
-                as="a"
-                color="facebook"
-                icon="facebook"
-                content="Facebook"
-              />
-            </div>
-            <div className="btnContainer">
-              <Button
-                fluid
-                href={props.socialLinks.twitter}
-                as="a"
-                color="twitter"
-                icon="twitter"
-                content="Twitter"
-              />
-            </div>
-
-            <div className="btnContainer">
-              <Button
-                fluid
-                href={props.socialLinks.codepen}
-                as="a"
-                color="white"
-                icon="codepen"
-                content="Codepen"
-              />
-            </div>
-            <div className="btnContainer">
-              <Button
-                fluid
-                href={props.socialLinks.blog}
-                as="a"
-                color="red"
-                icon="linkify"
-                content="Blog"
-              />
-            </div>
-          </Grid.Column>
-          <Grid.Column width={13}>
-            <Tab menu={{ pointing: true }} panes={TabsContent} />
-          </Grid.Column>
-        </Grid.Row>
-      </Grid>
-    </main>
-    <style jsx>{`
-      main {
-        min-height: calc(100vh - 70px);
-        background: #fff;
-        padding: 30px 0;
-        color: #314159;
-      }
-      p {
-        font-size: 18px;
-        text-transform: capitalize;
-      }
-      .btnContainer {
-        margin: 10px 0;
-        text-align: center;
-      }
-      .projects {
-        display: flex;
-        flex-direction: column;
-        width: 100%;
-        height: 400px;
-        justify-content: space-around;
-        align-items: center;
-      }
-    `}</style>
-  </div>
-);
-
-export default secretPage(Profile);
diff --git a/pages/profile/new.js b/pages/profile/new.js
deleted file mode 100644
index 3dd925af1..000000000
--- a/pages/profile/new.js
+++ /dev/null
@@ -1,434 +0,0 @@
-import React from 'react';
-import Router from 'next/router';
-import {
-  Container,
-  Message,
-  Form,
-  Input,
-  Dropdown,
-  TextArea,
-  Select,
-  Grid,
-} from 'semantic-ui-react';
-
-import { client as feathersClient } from '../../utils/feathers-client';
-import secretPage from '../../hocs/secret-page';
-
-const technologies = [
-  { key: 'angular', text: 'Angular', value: 'angular' },
-  { key: 'css', text: 'CSS', value: 'css' },
-  { key: 'design', text: 'Graphic Design', value: 'design' },
-  { key: 'ember', text: 'Ember', value: 'ember' },
-  { key: 'html', text: 'HTML', value: 'html' },
-  { key: 'ia', text: 'Information Architecture', value: 'ia' },
-  { key: 'javascript', text: 'Javascript', value: 'javascript' },
-  { key: 'meteor', text: 'Meteor', value: 'meteor' },
-  { key: 'node', text: 'NodeJS', value: 'node' },
-  { key: 'python', text: 'Python', value: 'python' },
-  { key: 'rails', text: 'Rails', value: 'rails' },
-  { key: 'react', text: 'React', value: 'react' },
-  { key: 'ruby', text: 'Ruby', value: 'ruby' },
-  { key: 'ui', text: 'UI Design', value: 'ui' },
-  { key: 'ux', text: 'User Experience', value: 'ux' },
-];
-
-const professionOptions = [
-  { key: 's', text: 'Student', value: 'student' },
-  { key: 'w', text: 'Working', value: 'working' },
-  { key: 'h', text: 'Available For Hire', value: 'hirable' },
-];
-
-class Profile extends React.Component {
-  state = {
-    displayName: '',
-    contactNumber: '',
-    bio: '',
-    profession: '',
-    company: '',
-    technologies,
-    interestedTechnologies: [],
-    familiarTechnologies: [],
-    github: '',
-    linkedin: '',
-    facebook: '',
-    codepen: '',
-    twitter: '',
-    blog: '',
-    discord: '',
-    errors: [],
-    loading: false,
-  };
-  componentDidMount() {
-    this.setState({
-      displayName: this.props.displayName || '',
-      contactNumber: this.props.contactNumber || '',
-      bio: this.props.bio || '',
-      profession: this.props.profession || '',
-      company: this.props.company || '',
-      interestedTechnologies: this.props.interestedTechnologies || [],
-      familiarTechnologies: this.props.familiarTechnologies || [],
-      github: this.props.socialLinks.github || '',
-      linkedin: this.props.socialLinks.linkedin || '',
-      facebook: this.props.socialLinks.facebook || '',
-      codepen: this.props.socialLinks.codepen || '',
-      twitter: this.props.socialLinks.twitter || '',
-      blog: this.props.socialLinks.blog || '',
-      discord: this.props.socialLinks.discord || '',
-    });
-  }
-  handelForm = e => {
-    e.preventDefault();
-    const {
-      displayName,
-      contactNumber,
-      bio,
-      profession,
-      company,
-      interestedTechnologies,
-      familiarTechnologies,
-      github,
-      linkedin,
-      facebook,
-      codepen,
-      twitter,
-      blog,
-      discord,
-    } = this.state;
-    console.log(this.state);
-    if (!displayName) {
-      this.setState({
-        errors: ['displayName'],
-      });
-      return;
-    }
-    if (!bio) {
-      this.setState({
-        errors: ['bio'],
-      });
-      return;
-    }
-    if (!profession) {
-      this.setState({
-        errors: ['profession'],
-      });
-      return;
-    }
-    if (profession === 'working' && !company) {
-      this.setState({
-        errors: ['company'],
-      });
-      return;
-    }
-    if (interestedTechnologies.length === 0) {
-      this.setState({
-        errors: ['interestedTechnologies'],
-      });
-      return;
-    }
-    this.setState({ loading: true });
-    feathersClient
-      .service('users')
-      .patch(this.props._id, {
-        displayName,
-        contactNumber,
-        bio,
-        profession,
-        company,
-        interestedTechnologies,
-        familiarTechnologies,
-        socialLinks: {
-          github,
-          linkedin,
-          facebook,
-          codepen,
-          twitter,
-          blog,
-          discord,
-        },
-      })
-      .then(user => {
-        this.setState({ loading: false });
-        console.log(user);
-        Router.push('/profile');
-      })
-      .catch(err => {
-        console.log(err);
-        this.setState({ loading: false });
-      });
-    console.log('all don');
-  };
-  render() {
-    return (
-      <div>
-        <main>
-          <Container text>
-            <Message info>
-              <Message.Header>Welcome {this.props.username} :)</Message.Header>
-              <p>Complete rest of your profile details</p>
-            </Message>
-            <Form
-              loading={this.state.loading}
-              onSubmit={this.handelForm}
-              error={Boolean(this.state.errors.length)}
-            >
-              <Grid stackable columns={2} divided>
-                <Grid.Row>
-                  <Grid.Column>
-                    <Form.Group widths="equal">
-                      <Form.Field
-                        required
-                        error={this.state.errors.includes('displayName')}
-                        control={Input}
-                        label="Display Name"
-                        placeholder={`${this.state.errors.includes(
-                          'displayName',
-                        )
-                          ? ''
-                          : 'A Friendly Name'}`}
-                        value={this.state.displayName}
-                        onChange={e =>
-                          this.setState({ displayName: e.target.value })}
-                      />
-                    </Form.Group>
-                    <Form.Field
-                      required
-                      error={this.state.errors.includes('bio')}
-                      control={TextArea}
-                      label="Bio"
-                      style={{ height: '120px !important' }}
-                      value={this.state.bio}
-                      placeholder={`${this.state.errors.includes('bio')
-                        ? ''
-                        : 'Tell us more about you...'}`}
-                      onChange={e => this.setState({ bio: e.target.value })}
-                    />
-                    <Form.Group widths="equal">
-                      <Form.Field
-                        control={Select}
-                        label="Profession"
-                        options={professionOptions}
-                        placeholder={`${this.state.errors.includes('profession')
-                          ? ''
-                          : 'Student | Working | Available For Hire'}`}
-                        required
-                        error={this.state.errors.includes('profession')}
-                        value={this.state.profession}
-                        onChange={(e, data) =>
-                          this.setState({ profession: data.value })}
-                      />
-                    </Form.Group>
-                    {this.state.profession === 'working' && (
-                      <Form.Group widths="equal">
-                        <Form.Field
-                          required
-                          error={this.state.errors.includes('companyName')}
-                          control={Input}
-                          label="Company Name"
-                          placeholder=""
-                          value={this.state.company}
-                          onChange={e =>
-                            this.setState({ company: e.target.value })}
-                        />
-                      </Form.Group>
-                    )}
-                    <Form.Group widths="equal">
-                      <Form.Field
-                        required
-                        search
-                        selection
-                        fluid
-                        multiple
-                        allowAdditions
-                        error={this.state.errors.includes(
-                          'interestedTechnologies',
-                        )}
-                        control={Dropdown}
-                        label="Technologies You're Interested"
-                        options={this.state.technologies}
-                        placeholder={`${this.state.errors.includes(
-                          'interestedTechnologies',
-                        )
-                          ? ''
-                          : 'Javascript, PHP, Python,...'}`}
-                        value={this.state.interestedTechnologies}
-                        onChange={(e, { value }) =>
-                          this.setState({ interestedTechnologies: value })}
-                        onAddItem={(e, { value }) =>
-                          this.setState({
-                            technologies: [
-                              { text: value, value, key: value },
-                              ...this.state.technologies,
-                            ],
-                          })}
-                      />
-                    </Form.Group>
-                    <Form.Group widths="equal">
-                      <Form.Field
-                        search
-                        selection
-                        fluid
-                        multiple
-                        allowAdditions
-                        control={Dropdown}
-                        label="Technologies You're Familliar"
-                        options={this.state.technologies}
-                        placeholder="Javascript, NodeJs, Mongodb,..."
-                        value={this.state.familiarTechnologies}
-                        onChange={(e, { value }) =>
-                          this.setState({ familiarTechnologies: value })}
-                        onAddItem={(e, { value }) =>
-                          this.setState({
-                            technologies: [
-                              { text: value, value, key: value },
-                              ...this.state.technologies,
-                            ],
-                          })}
-                      />
-                    </Form.Group>
-                  </Grid.Column>
-                  <Grid.Column>
-                    <Form.Field
-                      control={Input}
-                      label="Contact Number (optional)"
-                      placeholder="+919090909090"
-                      value={this.state.contactNumber}
-                      onChange={e =>
-                        this.setState({ contactNumber: e.target.value })}
-                    />
-                    <Form.Group widths="equal">
-                      <Form.Field
-                        fluid
-                        type="url"
-                        control={Input}
-                        label="Social Presence (optional)"
-                        placeholder="github.com/username"
-                        value={this.state.github}
-                        onChange={e =>
-                          this.setState({ github: e.target.value })}
-                        icon="github"
-                        iconPosition="left"
-                      />
-                    </Form.Group>
-                    <Form.Group widths="equal">
-                      <Form.Field
-                        icon="linkedin"
-                        iconPosition="left"
-                        fluid
-                        type="url"
-                        control={Input}
-                        placeholder="linkedin.com/username"
-                        value={this.state.linkedin}
-                        onChange={e =>
-                          this.setState({ linkedin: e.target.value })}
-                      />
-                    </Form.Group>
-                    <Form.Group widths="equal">
-                      <Form.Field
-                        icon="facebook"
-                        iconPosition="left"
-                        fluid
-                        type="url"
-                        control={Input}
-                        placeholder="facebook.com/username"
-                        value={this.state.facebook}
-                        onChange={e =>
-                          this.setState({ facebook: e.target.value })}
-                      />
-                    </Form.Group>
-                    <Form.Group widths="equal">
-                      <Form.Field
-                        icon="twitter"
-                        iconPosition="left"
-                        fluid
-                        type="url"
-                        control={Input}
-                        placeholder="twitter.com/username"
-                        value={this.state.twitter}
-                        onChange={e =>
-                          this.setState({ twitter: e.target.value })}
-                      />
-                    </Form.Group>
-                    <Form.Group widths="equal">
-                      <Form.Field
-                        icon="codepen"
-                        iconPosition="left"
-                        fluid
-                        type="url"
-                        control={Input}
-                        placeholder="codepen.com/username"
-                        value={this.state.codepen}
-                        onChange={e =>
-                          this.setState({ codepen: e.target.value })}
-                      />
-                    </Form.Group>
-                    <Form.Group widths="equal">
-                      <Form.Field
-                        icon="linkify"
-                        iconPosition="left"
-                        fluid
-                        type="url"
-                        control={Input}
-                        placeholder="your website or blog url"
-                        value={this.state.blog}
-                        onChange={e => this.setState({ blog: e.target.value })}
-                      />
-                    </Form.Group>
-                    <Form.Group widths="equal">
-                      <Form.Field
-                        icon="laptop"
-                        iconPosition="left"
-                        fluid
-                        type="text"
-                        control={Input}
-                        placeholder="Discord Username"
-                        value={this.state.discord}
-                        onChange={e =>
-                          this.setState({ discord: e.target.value })}
-                      />
-                    </Form.Group>
-                  </Grid.Column>
-                </Grid.Row>
-              </Grid>
-              {this.state.errors.length ? (
-                <Message error>
-                  <Message.Header>
-                    Error: Fill the required * fields
-                  </Message.Header>
-                  <p>
-                    <strong>{this.state.errors.join(',')}</strong> is/are
-                    required fields
-                  </p>
-                </Message>
-              ) : (
-                ''
-              )}
-              <Form.Group widths="equal">
-                <Form.Button
-                  loading={this.state.loading}
-                  size="big"
-                  primary
-                  floated="right"
-                >
-                  Save
-                </Form.Button>
-              </Form.Group>
-            </Form>
-          </Container>
-        </main>
-        <style jsx>{`
-          main {
-            min-height: calc(100vh - 70px);
-            background: #fff;
-            padding: 30px 0;
-            color: #314159;
-            display: flex;
-            justify-content: center;
-            align-items: center;
-            flex-direction: column;
-          }
-        `}</style>
-      </div>
-    );
-  }
-}
-export default secretPage(Profile);
diff --git a/server.js b/server.js
deleted file mode 100644
index e9f6750eb..000000000
--- a/server.js
+++ /dev/null
@@ -1,90 +0,0 @@
-const express = require('express');
-const next = require('next');
-const cookieParser = require('cookie-parser');
-const fetch = require('isomorphic-unfetch');
-const feathers = require('feathers/client');
-const hooks = require('feathers-hooks');
-const auth = require('feathers-authentication-client');
-const rest = require('feathers-rest/client');
-
-const baseUrl =
-  process.env.NODE_ENV === 'production' || process.env.WITH_API
-    ? `https://coderplex.org/api`
-    : 'http://localhost:4000';
-
-const dev = process.env.NODE_ENV !== 'production';
-const app = next({ dir: '.', dev });
-const handle = app.getRequestHandler();
-const feathersClient = feathers();
-
-feathersClient
-  .configure(rest(baseUrl).fetch(fetch))
-  .configure(hooks())
-  .configure(auth());
-
-app
-  .prepare()
-  .then(() => {
-    const server = express();
-    server.use(cookieParser());
-
-    // Handling login
-    server.use((req, res, next) => {
-      if (!req.query.token) return next();
-      res.cookie('feathers-jwt', req.query.token, {
-        expires: new Date(Date.now() + 1000 * 60 * 60 * 24 * 30),
-        httpOnly: false,
-      });
-      return res.redirect(req.query.next);
-    });
-
-    // Handling logout
-    server.use((req, res, next) => {
-      if (!req.query.logout) return next();
-      console.log('logout', req.query.logout);
-      res.cookie('feathers-jwt', null, {
-        expires: new Date(Date.now() - 1000),
-        httpOnly: false,
-      });
-
-      return res.redirect('/login');
-    });
-
-    // Get loggedIn user
-    server.use(async (req, res, next) => {
-      const token = req.cookies['feathers-jwt'];
-      console.log('****token****');
-      console.log(token);
-      console.log('****token****');
-      if (!token) return next();
-      try {
-        const { userId } = await feathersClient.passport.verifyJWT(token);
-        console.log('****USERID****');
-        console.log(userId);
-        console.log('****USERID****');
-        req.user = await fetch(`${baseUrl}/users/${userId}`, {
-          headers: {
-            Authorization: `${token}`,
-          },
-        }).then(res => res.json());
-        console.log('****ServerUSER****');
-        console.log(req.user);
-        console.log('****ServerUSER****');
-        next();
-      } catch (error) {
-        console.error(error);
-        next();
-      }
-    });
-
-    // Pass all routes to next.js handler
-    server.get('*', (req, res) => handle(req, res));
-
-    server.listen(process.env.PORT || 3000, err => {
-      if (err) throw err;
-      console.log('> App running on port', process.env.PORT || 3000);
-    });
-  })
-  .catch(ex => {
-    console.error(ex.stack);
-  });
diff --git a/utils/authenticate.js b/utils/authenticate.js
deleted file mode 100644
index f79a939fe..000000000
--- a/utils/authenticate.js
+++ /dev/null
@@ -1,55 +0,0 @@
-import Cookie from 'js-cookie';
-
-import { client as feathersClient, baseUrl } from './feathers-client';
-
-export function login(service, url) {
-  let href;
-  if (url.query.next) {
-    href = `${baseUrl}/auth/${service}?next=${url.query.next}`;
-  } else {
-    href = `${baseUrl}/auth/${service}`;
-  }
-  window.location.href = href;
-}
-
-export function logout() {
-  const href = `${window.location.href}?logout=1`;
-  window.localStorage.setItem('logout', Date.now());
-  feathersClient
-    .logout()
-    .then(() => {
-      feathersClient.set('user', null);
-      Cookie.remove('feathers-jwt', { path: '' });
-      window.location.href = href;
-    })
-    .catch(console.log);
-}
-
-export function authenticate() {
-  const token = Cookie.get('feathers-jwt');
-  console.log(token);
-  if (!token) {
-    feathersClient.set('user', null);
-    const e = new Error('not authenticated');
-    e.code = 401;
-    return Promise.reject(e);
-  }
-  return feathersClient
-    .authenticate({
-      strategy: 'jwt',
-      accessToken: token,
-    })
-    .then(response => {
-      return feathersClient.passport.verifyJWT(response.accessToken);
-    })
-    .then(payload => {
-      feathersClient.set('user', null);
-      return feathersClient.service('users').get(payload.userId);
-    })
-    .then(user => {
-      if (process.browser) {
-        feathersClient.set('user', user);
-      }
-      return user;
-    });
-}
diff --git a/utils/feathers-client.js b/utils/feathers-client.js
deleted file mode 100644
index 4363da18f..000000000
--- a/utils/feathers-client.js
+++ /dev/null
@@ -1,19 +0,0 @@
-import fetch from 'isomorphic-unfetch';
-import feathers from 'feathers/client';
-import hooks from 'feathers-hooks';
-import auth from 'feathers-authentication-client';
-import rest from 'feathers-rest/client';
-
-const baseUrl =
-  process.env.NODE_ENV === 'production' || process.env.WITH_API
-    ? `https://coderplex.org/api`
-    : 'http://localhost:4000';
-
-const client = feathers();
-
-client
-  .configure(rest(baseUrl).fetch(fetch))
-  .configure(hooks())
-  .configure(auth());
-
-export { client, baseUrl };
diff --git a/utils/redirect.js b/utils/redirect.js
deleted file mode 100644
index 2187d488f..000000000
--- a/utils/redirect.js
+++ /dev/null
@@ -1,15 +0,0 @@
-import Router from 'next/router';
-
-export default (
-  ctx,
-  to = `/login?next=${encodeURIComponent(
-    ctx.req ? ctx.req.url : ctx.pathname,
-  )}`,
-) => {
-  if (ctx.res) {
-    ctx.res.writeHead(302, { Location: to });
-    ctx.res.end();
-    return {};
-  }
-  return Router.push(to);
-};
diff --git a/yarn.lock b/yarn.lock
index fdf19396a..7663f2592 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -47,34 +47,6 @@
     lodash "^4.17.4"
     pify "^3.0.0"
 
-"@types/express-serve-static-core@*":
-  version "4.0.53"
-  resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.0.53.tgz#1723a35d1447f2c55e13c8721eab3448e42f4d82"
-  dependencies:
-    "@types/node" "*"
-
-"@types/express@~4.0.35":
-  version "4.0.37"
-  resolved "https://registry.yarnpkg.com/@types/express/-/express-4.0.37.tgz#625ac3765169676e01897ca47011c26375784971"
-  dependencies:
-    "@types/express-serve-static-core" "*"
-    "@types/serve-static" "*"
-
-"@types/mime@*":
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/@types/mime/-/mime-2.0.0.tgz#5a7306e367c539b9f6543499de8dd519fac37a8b"
-
-"@types/node@*":
-  version "8.0.43"
-  resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.43.tgz#a596ccba8fe2293a54a9f3537d066b208d3fb1b2"
-
-"@types/serve-static@*":
-  version "1.7.32"
-  resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.7.32.tgz#0f6732e4dab0813771dd8fc8fe14940f34728b4c"
-  dependencies:
-    "@types/express-serve-static-core" "*"
-    "@types/mime" "*"
-
 JSONStream@^1.0.4:
   version "1.3.1"
   resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.1.tgz#707f761e01dae9e16f1bcf93703b78c70966579a"
@@ -1654,13 +1626,6 @@ convert-source-map@^1.5.0:
   version "1.5.0"
   resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5"
 
-cookie-parser@^1.4.3:
-  version "1.4.3"
-  resolved "https://registry.yarnpkg.com/cookie-parser/-/cookie-parser-1.4.3.tgz#0fe31fa19d000b95f4aadf1f53fdc2b8a203baa5"
-  dependencies:
-    cookie "0.3.1"
-    cookie-signature "1.0.6"
-
 cookie-signature@1.0.6:
   version "1.0.6"
   resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
@@ -1852,7 +1817,7 @@ debug@2.3.3:
   dependencies:
     ms "0.7.2"
 
-debug@^3.0.0, debug@^3.1.0:
+debug@^3.0.0:
   version "3.1.0"
   resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
   dependencies:
@@ -2065,7 +2030,7 @@ duplexer3@^0.1.4:
   version "0.1.4"
   resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2"
 
-duplexer@^0.1.1, duplexer@~0.1.1:
+duplexer@^0.1.1:
   version "0.1.1"
   resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1"
 
@@ -2249,10 +2214,6 @@ es6-map@^0.1.3:
     es6-symbol "~3.1.1"
     event-emitter "~0.3.5"
 
-es6-promise@^3.3.1:
-  version "3.3.1"
-  resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613"
-
 es6-set@~0.1.5:
   version "0.1.5"
   resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1"
@@ -2479,19 +2440,7 @@ event-emitter@~0.3.5:
     d "1"
     es5-ext "~0.10.14"
 
-event-stream@~3.3.0:
-  version "3.3.4"
-  resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571"
-  dependencies:
-    duplexer "~0.1.1"
-    from "~0"
-    map-stream "~0.1.0"
-    pause-stream "0.0.11"
-    split "0.3"
-    stream-combiner "~0.0.4"
-    through "~2.3.1"
-
-events@^1.0.0, events@^1.1.1:
+events@^1.0.0:
   version "1.1.1"
   resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924"
 
@@ -2554,7 +2503,7 @@ expand-range@^1.8.1:
   dependencies:
     fill-range "^2.1.0"
 
-express@^4.15.2, express@^4.15.3, express@^4.16.1:
+express@^4.15.2:
   version "4.16.2"
   resolved "https://registry.yarnpkg.com/express/-/express-4.16.2.tgz#e35c6dfe2d64b7dca0a5cd4f21781be3299e076c"
   dependencies:
@@ -2629,31 +2578,16 @@ fd-slicer@~1.0.1:
   dependencies:
     pend "~1.2.0"
 
-feathers-authentication-client@^0.3.3:
-  version "0.3.3"
-  resolved "https://registry.yarnpkg.com/feathers-authentication-client/-/feathers-authentication-client-0.3.3.tgz#d2183e4b08287dfd3ecb4a96eb081cf0b4e7c263"
-  dependencies:
-    debug "^2.2.0"
-    feathers-errors "^2.4.0"
-    jwt-decode "^2.1.0"
-
-feathers-commons@^0.8.0, feathers-commons@^0.8.6, feathers-commons@^0.8.7:
+feathers-commons@^0.8.0:
   version "0.8.7"
   resolved "https://registry.yarnpkg.com/feathers-commons/-/feathers-commons-0.8.7.tgz#11c6f25b537745a983e8d61552d7db8932d53782"
 
-feathers-errors@^2.0.1, feathers-errors@^2.4.0:
+feathers-errors@^2.0.1:
   version "2.9.2"
   resolved "https://registry.yarnpkg.com/feathers-errors/-/feathers-errors-2.9.2.tgz#96ca0e5fe50cc56f0eccc90ce3fa5e1f8840828d"
   dependencies:
     debug "^3.0.0"
 
-feathers-hooks@^2.0.2:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/feathers-hooks/-/feathers-hooks-2.1.0.tgz#3e49c85048231a04daa5e8ce196223ea1a2c64b6"
-  dependencies:
-    feathers-commons "^0.8.6"
-    uberproto "^1.2.0"
-
 feathers-rest@^1.8.0:
   version "1.8.0"
   resolved "https://registry.yarnpkg.com/feathers-rest/-/feathers-rest-1.8.0.tgz#3c03f1ea56adec940a8f9823d87a3aafeb9742a9"
@@ -2663,19 +2597,6 @@ feathers-rest@^1.8.0:
     feathers-errors "^2.0.1"
     qs "^6.4.0"
 
-feathers@^2.1.7:
-  version "2.2.2"
-  resolved "https://registry.yarnpkg.com/feathers/-/feathers-2.2.2.tgz#334590ffbddc93dd4af6590b20560762cda41beb"
-  dependencies:
-    "@types/express" "~4.0.35"
-    babel-runtime "^6.26.0"
-    debug "^3.1.0"
-    events "^1.1.1"
-    express "^4.16.1"
-    feathers-commons "^0.8.7"
-    rubberduck "^1.1.1"
-    uberproto "^1.2.0"
-
 figures@^1.3.5, figures@^1.7.0:
   version "1.7.0"
   resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e"
@@ -2860,10 +2781,6 @@ friendly-errors-webpack-plugin@1.6.1:
     error-stack-parser "^2.0.0"
     string-length "^1.0.1"
 
-from@~0:
-  version "0.1.7"
-  resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe"
-
 fs-extra@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-1.0.0.tgz#cd3ce5f7e7cb6145883fcae3191e9877f8587950"
@@ -3422,20 +3339,10 @@ ieee754@^1.1.4:
   version "1.1.8"
   resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4"
 
-ignore-by-default@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09"
-
 ignore@^3.2.0, ignore@^3.2.6:
   version "3.3.5"
   resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.5.tgz#c4e715455f6073a8d7e5dae72d2fc9d71663dba6"
 
-immutability-helper@^2.1.2:
-  version "2.4.0"
-  resolved "https://registry.yarnpkg.com/immutability-helper/-/immutability-helper-2.4.0.tgz#00d421e2957c17f0f0781475f05ffd837e73458d"
-  dependencies:
-    invariant "^2.2.0"
-
 import-from@^2.1.0:
   version "2.1.0"
   resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1"
@@ -3509,7 +3416,7 @@ interpret@^1.0.0:
   version "1.0.4"
   resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.4.tgz#820cdd588b868ffb191a809506d6c9c8f212b1b0"
 
-invariant@^2.2.0, invariant@^2.2.2:
+invariant@^2.2.2:
   version "2.2.2"
   resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360"
   dependencies:
@@ -3809,13 +3716,6 @@ isomorphic-fetch@^2.1.1:
     node-fetch "^1.0.1"
     whatwg-fetch ">=0.10.0"
 
-isomorphic-unfetch@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/isomorphic-unfetch/-/isomorphic-unfetch-2.0.0.tgz#f50140a4c163d7582b5f37f1591968c4f809a645"
-  dependencies:
-    node-fetch "^1.7.1"
-    unfetch "^3.0.0"
-
 isstream@~0.1.2:
   version "0.1.2"
   resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
@@ -3840,10 +3740,6 @@ jest-validate@^21.1.0:
     leven "^2.1.0"
     pretty-format "^21.2.1"
 
-js-cookie@^2.1.4:
-  version "2.1.4"
-  resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-2.1.4.tgz#da4ec503866f149d164cf25f579ef31015025d8d"
-
 js-tokens@^3.0.0, js-tokens@^3.0.2:
   version "3.0.2"
   resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
@@ -3944,10 +3840,6 @@ junk@^1.0.1:
   version "1.0.3"
   resolved "https://registry.yarnpkg.com/junk/-/junk-1.0.3.tgz#87be63488649cbdca6f53ab39bec9ccd2347f592"
 
-jwt-decode@^2.1.0:
-  version "2.2.0"
-  resolved "https://registry.yarnpkg.com/jwt-decode/-/jwt-decode-2.2.0.tgz#7d86bd56679f58ce6a84704a657dd392bba81a79"
-
 kind-of@^3.0.2:
   version "3.2.2"
   resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
@@ -4162,13 +4054,6 @@ lodash.cond@^4.3.0:
   version "4.5.2"
   resolved "https://registry.yarnpkg.com/lodash.cond/-/lodash.cond-4.5.2.tgz#f471a1da486be60f6ab955d17115523dd1d255d5"
 
-lodash.defaults@^3.1.2:
-  version "3.1.2"
-  resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-3.1.2.tgz#c7308b18dbf8bc9372d701a73493c61192bd2e2c"
-  dependencies:
-    lodash.assign "^3.0.0"
-    lodash.restparam "^3.0.0"
-
 lodash.isarguments@^3.0.0:
   version "3.1.0"
   resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a"
@@ -4289,10 +4174,6 @@ 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"
 
-map-stream@~0.1.0:
-  version "0.1.0"
-  resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194"
-
 maximatch@^0.1.0:
   version "0.1.0"
   resolved "https://registry.yarnpkg.com/maximatch/-/maximatch-0.1.0.tgz#86cd8d6b04c9f307c05a6b9419906d0360fb13a2"
@@ -4580,7 +4461,7 @@ next@^4.1.0:
     write-file-webpack-plugin "4.2.0"
     xss-filters "1.2.7"
 
-node-fetch@^1.0.1, node-fetch@^1.6.3, node-fetch@^1.7.1:
+node-fetch@^1.0.1, node-fetch@^1.6.3:
   version "1.7.3"
   resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef"
   dependencies:
@@ -4642,21 +4523,6 @@ node-version@^1.0.0:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/node-version/-/node-version-1.1.0.tgz#f437d7ba407e65e2c4eaef8887b1718ba523d4f0"
 
-nodemon@^1.11.0:
-  version "1.12.1"
-  resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-1.12.1.tgz#996a56dc49d9f16bbf1b78a4de08f13634b3878d"
-  dependencies:
-    chokidar "^1.7.0"
-    debug "^2.6.8"
-    es6-promise "^3.3.1"
-    ignore-by-default "^1.0.1"
-    lodash.defaults "^3.1.2"
-    minimatch "^3.0.4"
-    ps-tree "^1.1.0"
-    touch "^3.1.0"
-    undefsafe "0.0.3"
-    update-notifier "^2.2.0"
-
 nopt@^4.0.0, nopt@^4.0.1:
   version "4.0.1"
   resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d"
@@ -5159,12 +5025,6 @@ path-type@^2.0.0:
   dependencies:
     pify "^2.0.0"
 
-pause-stream@0.0.11:
-  version "0.0.11"
-  resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445"
-  dependencies:
-    through "~2.3"
-
 pbkdf2@^3.0.3:
   version "3.0.14"
   resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.14.tgz#a35e13c64799b06ce15320f459c230e68e73bade"
@@ -5240,30 +5100,6 @@ pluralize@^1.2.1:
   version "1.2.1"
   resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45"
 
-preact-compat@^3.16.0:
-  version "3.17.0"
-  resolved "https://registry.yarnpkg.com/preact-compat/-/preact-compat-3.17.0.tgz#528cfdfc301190c1a0f47567336be1f4be0266b3"
-  dependencies:
-    immutability-helper "^2.1.2"
-    preact-render-to-string "^3.6.0"
-    preact-transition-group "^1.1.0"
-    prop-types "^15.5.8"
-    standalone-react-addons-pure-render-mixin "^0.1.1"
-
-preact-render-to-string@^3.6.0:
-  version "3.7.0"
-  resolved "https://registry.yarnpkg.com/preact-render-to-string/-/preact-render-to-string-3.7.0.tgz#7db4177454bc01395e0d01d6ac07bc5e838e31ee"
-  dependencies:
-    pretty-format "^3.5.1"
-
-preact-transition-group@^1.1.0:
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/preact-transition-group/-/preact-transition-group-1.1.1.tgz#f0a49327ea515ece34ea2be864c4a7d29e5d6e10"
-
-preact@^8.2.1:
-  version "8.2.5"
-  resolved "https://registry.yarnpkg.com/preact/-/preact-8.2.5.tgz#cbfa3962a8012768159f6d01d46f9c1eb3213c0a"
-
 prelude-ls@~1.1.2:
   version "1.1.2"
   resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
@@ -5287,10 +5123,6 @@ pretty-format@^21.2.1:
     ansi-regex "^3.0.0"
     ansi-styles "^3.2.0"
 
-pretty-format@^3.5.1:
-  version "3.8.0"
-  resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-3.8.0.tgz#bfbed56d5e9a776645f4b1ff7aa1a3ac4fa3c385"
-
 private@^0.1.6, private@^0.1.7:
   version "0.1.8"
   resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff"
@@ -5351,12 +5183,6 @@ prr@~0.0.0:
   version "0.0.0"
   resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a"
 
-ps-tree@^1.1.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/ps-tree/-/ps-tree-1.1.0.tgz#b421b24140d6203f1ed3c76996b4427b08e8c014"
-  dependencies:
-    event-stream "~3.3.0"
-
 pseudomap@^1.0.2:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
@@ -5925,10 +5751,6 @@ ripemd160@^2.0.0, ripemd160@^2.0.1:
     hash-base "^2.0.0"
     inherits "^2.0.1"
 
-rubberduck@^1.1.1:
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/rubberduck/-/rubberduck-1.1.1.tgz#cd2cda4b867178135eafc995a71384f5f743db02"
-
 run-async@^0.1.0:
   version "0.1.0"
   resolved "https://registry.yarnpkg.com/run-async/-/run-async-0.1.0.tgz#c8ad4a5e110661e402a7d21b530e009f25f8e389"
@@ -6243,12 +6065,6 @@ split2@^2.0.0:
   dependencies:
     through2 "^2.0.2"
 
-split@0.3:
-  version "0.3.3"
-  resolved "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f"
-  dependencies:
-    through "2"
-
 split@^1.0.0:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9"
@@ -6291,10 +6107,6 @@ staged-git-files@0.0.4:
   version "0.0.4"
   resolved "https://registry.yarnpkg.com/staged-git-files/-/staged-git-files-0.0.4.tgz#d797e1b551ca7a639dec0237dc6eb4bb9be17d35"
 
-standalone-react-addons-pure-render-mixin@^0.1.1:
-  version "0.1.1"
-  resolved "https://registry.yarnpkg.com/standalone-react-addons-pure-render-mixin/-/standalone-react-addons-pure-render-mixin-0.1.1.tgz#3c7409f4c79c40de9ac72c616cf679a994f37551"
-
 "statuses@>= 1.2.1 < 2", "statuses@>= 1.3.1 < 2", statuses@~1.3.1:
   version "1.3.1"
   resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e"
@@ -6306,12 +6118,6 @@ stream-browserify@^2.0.1:
     inherits "~2.0.1"
     readable-stream "^2.0.2"
 
-stream-combiner@~0.0.4:
-  version "0.0.4"
-  resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.0.4.tgz#4d5e433c185261dde623ca3f44c586bcf5c4ad14"
-  dependencies:
-    duplexer "~0.1.1"
-
 stream-consume@^0.1.0:
   version "0.1.0"
   resolved "https://registry.yarnpkg.com/stream-consume/-/stream-consume-0.1.0.tgz#a41ead1a6d6081ceb79f65b061901b6d8f3d1d0f"
@@ -6553,7 +6359,7 @@ through2@^2.0.0, through2@^2.0.2:
     readable-stream "^2.1.5"
     xtend "~4.0.1"
 
-through@2, "through@>=2.2.7 <3", through@^2.3.6, through@~2.3, through@~2.3.1, through@~2.3.4:
+through@2, "through@>=2.2.7 <3", through@^2.3.6, through@~2.3.4:
   version "2.3.8"
   resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
 
@@ -6604,7 +6410,7 @@ to-fast-properties@^1.0.1, to-fast-properties@^1.0.3:
   version "1.0.3"
   resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47"
 
-touch@3.1.0, touch@^3.1.0:
+touch@3.1.0:
   version "3.1.0"
   resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b"
   dependencies:
@@ -6699,10 +6505,6 @@ ua-parser-js@^0.7.9:
   version "0.7.17"
   resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.17.tgz#e9ec5f9498b9ec910e7ae3ac626a805c4d09ecac"
 
-uberproto@^1.2.0:
-  version "1.2.0"
-  resolved "https://registry.yarnpkg.com/uberproto/-/uberproto-1.2.0.tgz#61d4eab024f909c4e6ea52be867c4894a4beeb76"
-
 uglify-js@^2.6, uglify-js@^2.8.29:
   version "2.8.29"
   resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd"
@@ -6747,15 +6549,11 @@ unbzip2-stream@^1.0.9:
     buffer "^3.0.1"
     through "^2.3.6"
 
-undefsafe@0.0.3:
-  version "0.0.3"
-  resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-0.0.3.tgz#ecca3a03e56b9af17385baac812ac83b994a962f"
-
 underscore.string@~2.2.0rc:
   version "2.2.1"
   resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-2.2.1.tgz#d7c0fa2af5d5a1a67f4253daee98132e733f0f19"
 
-unfetch@3.0.0, unfetch@^3.0.0:
+unfetch@3.0.0:
   version "3.0.0"
   resolved "https://registry.yarnpkg.com/unfetch/-/unfetch-3.0.0.tgz#8d1e0513a4ecd0e5ff2d41a6ba77771aae8b6482"
 
@@ -6794,7 +6592,7 @@ update-notifier@^1.0.3:
     semver-diff "^2.0.0"
     xdg-basedir "^2.0.0"
 
-update-notifier@^2.1.0, update-notifier@^2.2.0:
+update-notifier@^2.1.0:
   version "2.3.0"
   resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.3.0.tgz#4e8827a6bb915140ab093559d7014e3ebb837451"
   dependencies:

From 4212087b7f860a5523599c345fd1224e22eac1d7 Mon Sep 17 00:00:00 2001
From: Vinay Puppal <me@vinaypuppal.com>
Date: Wed, 18 Oct 2017 23:53:31 +0530
Subject: [PATCH 03/22] remove image load flickering

---
 pages/index.js | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/pages/index.js b/pages/index.js
index 3ba396670..4023f81ca 100644
--- a/pages/index.js
+++ b/pages/index.js
@@ -22,7 +22,11 @@ class Home extends React.Component {
           }
           .about__container {
             max-width: 1280px;
+            min-height: calc(100vh - 260px);
             margin: 0 auto;
+            display: flex;
+            justify-content: center;
+            align-items: center;
           }
           .about__content img {
             width: 100%;

From 156112df5945a8bf5d2eca3d8880dfc4a9bdf7ce Mon Sep 17 00:00:00 2001
From: Vinay Puppal <me@vinaypuppal.com>
Date: Thu, 19 Oct 2017 00:10:25 +0530
Subject: [PATCH 04/22] use unfeth instead of axios

---
 package.json    |  20 +++--
 pages/events.js | 196 +++++++++++++++++++++++++-----------------------
 yarn.lock       |  26 +++----
 3 files changed, 126 insertions(+), 116 deletions(-)

diff --git a/package.json b/package.json
index 6cdb5ee56..3009c83b8 100644
--- a/package.json
+++ b/package.json
@@ -5,8 +5,7 @@
   "main": "index.js",
   "scripts": {
     "test": "xo",
-    "lint":
-      "prettier 'utils/**/*.js' 'components/**/*.js' 'pages/**/*.js' 'lib/**/*.js' 'hocs/**/*.js' '*.js' --write --single-quote --print-width='80' --trailing-comma='all' && xo --fix",
+    "lint": "prettier 'utils/**/*.js' 'components/**/*.js' 'pages/**/*.js' 'lib/**/*.js' 'hocs/**/*.js' '*.js' --write --single-quote --print-width='80' --trailing-comma='all' && xo --fix",
     "precommit": "lint-staged",
     "analyze": "cross-env ANALYZE=1 next build",
     "dev": "cross-env NODE_ENV=development next",
@@ -15,15 +14,24 @@
   },
   "xo": {
     "parser": "babel-eslint",
-    "extends": ["prettier", "prettier/react", "plugin:react/recommended"],
-    "env": ["browser", "node"],
+    "extends": [
+      "prettier",
+      "prettier/react",
+      "plugin:react/recommended"
+    ],
+    "env": [
+      "browser",
+      "node"
+    ],
     "rules": {
       "linebreak-style": 0,
       "react/display-name": 0,
       "react/prop-types": 0
     },
     "space:": 2,
-    "ignores": ["next.config.js"]
+    "ignores": [
+      "next.config.js"
+    ]
   },
   "lint-staged": {
     "*.js": [
@@ -36,8 +44,8 @@
   "author": "Vinay Puppal <me@vinaypuppal.com> (https://www.vinaypuppal.com/)",
   "license": "BSD",
   "dependencies": {
-    "axios": "^0.16.2",
     "feathers-rest": "^1.8.0",
+    "isomorphic-unfetch": "2.0.0",
     "moment": "^2.19.1",
     "next": "^4.1.0",
     "nprogress": "^0.2.0",
diff --git a/pages/events.js b/pages/events.js
index 8d197ee53..08ea1e04e 100644
--- a/pages/events.js
+++ b/pages/events.js
@@ -1,5 +1,5 @@
 import React from 'react';
-import axios from 'axios';
+import fetch from 'isomorphic-unfetch';
 import { Card } from 'semantic-ui-react';
 
 import publicPage from '../hocs/public-page';
@@ -10,100 +10,108 @@ import {
 } from '../utils/urls';
 import RowEvent from '../components/row-events';
 
-export default publicPage(
-  class Events extends React.Component {
-    static async getInitialProps() {
-      try {
-        const requestPastEvents = await axios.get(
-          `${reverseProxyCORS}${pastEventsMeetupURL}`,
-        );
-        const requestFutureEvents = await axios.get(
-          `${reverseProxyCORS}${futureEventsMeetupURL}`,
-        );
-        return {
-          pastEvents: requestPastEvents.data,
-          futureEvents: requestFutureEvents.data,
-        };
-      } catch (err) {
-        return {
-          pastEvents: 'err',
-          futureEvents: 'err',
-        };
-      }
+class Events extends React.Component {
+  static async getInitialProps() {
+    try {
+      const pastEvents = await fetch(
+        `${reverseProxyCORS}${pastEventsMeetupURL}`,
+      ).then(res => {
+        if (res.ok) return res.json();
+        throw new Error('Failed to Retrieve Events');
+      });
+      const futureEvents = await fetch(
+        `${reverseProxyCORS}${futureEventsMeetupURL}`,
+      ).then(res => {
+        if (res.ok) return res.json();
+        throw new Error('Failed to Retrieve Events');
+      });
+      return {
+        pastEvents,
+        futureEvents,
+        fetchError: null,
+      };
+    } catch (err) {
+      console.log(err);
+      return {
+        pastEvents: null,
+        futureEvents: null,
+        fetchError: err.message,
+      };
     }
+  }
 
-    render() {
-      return (
-        <div>
-          <div className="top_banner_root">
-            <h1 className="top_banner_headline">Events</h1>
-            <h2>Because you cannot change the world alone</h2>
-          </div>
-          <main>
-            {this.props.pastEvents !== 'err' &&
-            this.props.futureEvents !== 'err' ? (
+  render() {
+    return (
+      <div>
+        <div className="top_banner_root">
+          <h1 className="top_banner_headline">Events</h1>
+          <h2>Because you cannot change the world alone</h2>
+        </div>
+        <main>
+          {this.props.fetchError ? (
+            <div>{this.props.fetchError}</div>
+          ) : (
+            <div>
+              <h4>Upcoming events</h4>
               <div>
-                <h4>Upcoming events</h4>
-                <div>
-                  {this.props.futureEvents.map(event => (
-                    <Card.Group key={event.id}>
-                      <RowEvent
-                        name={event.name}
-                        yesCount={event.yes_rsvp_count}
-                        time={event.time}
-                        venue={event.venue}
-                        link={event.link}
-                      />
-                    </Card.Group>
-                  ))}
-                </div>
-                <h4>Recent events</h4>
-                <div>
-                  {this.props.pastEvents.map(event => (
-                    <Card.Group key={event.id}>
-                      <RowEvent
-                        key={event.id}
-                        name={event.name}
-                        yesCount={event.yes_rsvp_count}
-                        time={event.time}
-                        venue={event.venue}
-                        link={event.link}
-                      />
-                    </Card.Group>
-                  ))}
-                </div>
+                {this.props.futureEvents.map(event => (
+                  <Card.Group key={event.id}>
+                    <RowEvent
+                      name={event.name}
+                      yesCount={event.yes_rsvp_count}
+                      time={event.time}
+                      venue={event.venue}
+                      link={event.link}
+                    />
+                  </Card.Group>
+                ))}
               </div>
-            ) : (
-              <div>Failed to Retrieve Events</div>
-            )}
-          </main>
-          <style jsx>{`
-            main {
-              background-color: #ffffff;
-              padding-top: 30px;
-              padding-bottom: 30px;
-              padding-left: 30px;
-              padding-right: 30px;
-              min-height: calc(100vh - 70px);
-              display: flex;
-              justify-content: center;
-              align-items: center;
-              flex-direction: column;
-            }
-            .top_banner_root {
-              background-color: #f4f7fb;
-              min-height: 200px;
-              text-align: center;
-            }
-            .top_banner_headline {
-              padding-top: 20px;
-              font-size: 4em;
-              color: #df1cb5;
-              font-weight: 900;
-            }
-          `}</style>
-        </div>
-      );
-    }
-  },
-);
+              <h4>Recent events</h4>
+              <div>
+                {this.props.pastEvents.map(event => (
+                  <Card.Group key={event.id}>
+                    <RowEvent
+                      key={event.id}
+                      name={event.name}
+                      yesCount={event.yes_rsvp_count}
+                      time={event.time}
+                      venue={event.venue}
+                      link={event.link}
+                    />
+                  </Card.Group>
+                ))}
+              </div>
+            </div>
+          )}
+        </main>
+        <style jsx>{`
+          main {
+            background-color: #ffffff;
+            padding-top: 30px;
+            padding-bottom: 30px;
+            padding-left: 30px;
+            padding-right: 30px;
+            min-height: calc(100vh - 70px);
+            display: flex;
+            justify-content: center;
+            align-items: center;
+            flex-direction: column;
+          }
+          .top_banner_root {
+            background-color: #f4f7fb;
+            min-height: 200px;
+            text-align: center;
+          }
+          .top_banner_headline {
+            padding-top: 20px;
+            font-size: 4em;
+            color: #df1cb5;
+            font-weight: 900;
+          }
+        `}</style>
+      </div>
+    );
+  }
+}
+
+export default publicPage(Events);
diff --git a/yarn.lock b/yarn.lock
index 7663f2592..283543ff8 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -347,13 +347,6 @@ aws4@^1.2.1, aws4@^1.6.0:
   version "1.6.0"
   resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e"
 
-axios@^0.16.2:
-  version "0.16.2"
-  resolved "https://registry.yarnpkg.com/axios/-/axios-0.16.2.tgz#ba4f92f17167dfbab40983785454b9ac149c3c6d"
-  dependencies:
-    follow-redirects "^1.2.3"
-    is-buffer "^1.1.5"
-
 babel-code-frame@^6.16.0, babel-code-frame@^6.22.0, babel-code-frame@^6.26.0:
   version "6.26.0"
   resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b"
@@ -1799,7 +1792,7 @@ dateformat@^1.0.11, dateformat@^1.0.12:
     get-stdin "^4.0.1"
     meow "^3.3.0"
 
-debug@2, debug@2.6.9, debug@^2.1.1, debug@^2.2.0, debug@^2.6.8, debug@^2.6.9:
+debug@2, debug@2.6.9, debug@^2.1.1, debug@^2.2.0, debug@^2.6.8:
   version "2.6.9"
   resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
   dependencies:
@@ -2713,12 +2706,6 @@ follow-redirects@0.0.7:
     debug "^2.2.0"
     stream-consume "^0.1.0"
 
-follow-redirects@^1.2.3:
-  version "1.2.5"
-  resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.2.5.tgz#ffd3e14cbdd5eaa72f61b6368c1f68516c2a26cc"
-  dependencies:
-    debug "^2.6.9"
-
 for-in@^1.0.1:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
@@ -3716,6 +3703,13 @@ isomorphic-fetch@^2.1.1:
     node-fetch "^1.0.1"
     whatwg-fetch ">=0.10.0"
 
+isomorphic-unfetch@2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/isomorphic-unfetch/-/isomorphic-unfetch-2.0.0.tgz#f50140a4c163d7582b5f37f1591968c4f809a645"
+  dependencies:
+    node-fetch "^1.7.1"
+    unfetch "^3.0.0"
+
 isstream@~0.1.2:
   version "0.1.2"
   resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
@@ -4461,7 +4455,7 @@ next@^4.1.0:
     write-file-webpack-plugin "4.2.0"
     xss-filters "1.2.7"
 
-node-fetch@^1.0.1, node-fetch@^1.6.3:
+node-fetch@^1.0.1, node-fetch@^1.6.3, node-fetch@^1.7.1:
   version "1.7.3"
   resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef"
   dependencies:
@@ -6553,7 +6547,7 @@ underscore.string@~2.2.0rc:
   version "2.2.1"
   resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-2.2.1.tgz#d7c0fa2af5d5a1a67f4253daee98132e733f0f19"
 
-unfetch@3.0.0:
+unfetch@3.0.0, unfetch@^3.0.0:
   version "3.0.0"
   resolved "https://registry.yarnpkg.com/unfetch/-/unfetch-3.0.0.tgz#8d1e0513a4ecd0e5ff2d41a6ba77771aae8b6482"
 

From 7c30a165bb7aa463e4ae9793fc3256549a8a4264 Mon Sep 17 00:00:00 2001
From: Vinay Puppal <me@vinaypuppal.com>
Date: Thu, 19 Oct 2017 00:23:43 +0530
Subject: [PATCH 05/22] remove moment.js and use date-fns

---
 components/row-events.js | 4 ++--
 package.json             | 2 +-
 yarn.lock                | 4 ++--
 3 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/components/row-events.js b/components/row-events.js
index ff99ac922..6a3ae1bca 100644
--- a/components/row-events.js
+++ b/components/row-events.js
@@ -1,6 +1,6 @@
 import React from 'react';
 import { Card, Icon } from 'semantic-ui-react';
-import moment from 'moment';
+import format from 'date-fns/format';
 
 const RowEvent = props => {
   return (
@@ -16,7 +16,7 @@ const RowEvent = props => {
       <Card.Content extra>
         <span className="card_icons">
           <Icon name="clock" />
-          {moment(props.time).format("h:mm A, ddd MMM Do 'YY")}
+          {format(props.time, "h:mm A, ddd MMM Do 'YY")}
         </span>
         <span className="card_icons">
           <Icon name="users" />
diff --git a/package.json b/package.json
index 3009c83b8..4c4610ac7 100644
--- a/package.json
+++ b/package.json
@@ -44,9 +44,9 @@
   "author": "Vinay Puppal <me@vinaypuppal.com> (https://www.vinaypuppal.com/)",
   "license": "BSD",
   "dependencies": {
+    "date-fns": "1.29.0",
     "feathers-rest": "^1.8.0",
     "isomorphic-unfetch": "2.0.0",
-    "moment": "^2.19.1",
     "next": "^4.1.0",
     "nprogress": "^0.2.0",
     "prop-types": "^15.5.10",
diff --git a/yarn.lock b/yarn.lock
index 283543ff8..34f919d11 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1777,7 +1777,7 @@ dashdash@^1.12.0:
   dependencies:
     assert-plus "^1.0.0"
 
-date-fns@^1.27.2:
+date-fns@1.29.0, date-fns@^1.27.2:
   version "1.29.0"
   resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.29.0.tgz#12e609cdcb935127311d04d33334e2960a2a54e6"
 
@@ -4322,7 +4322,7 @@ modify-values@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.0.tgz#e2b6cdeb9ce19f99317a53722f3dbf5df5eaaab2"
 
-moment@^2.11.2, moment@^2.19.1:
+moment@^2.11.2:
   version "2.19.1"
   resolved "https://registry.yarnpkg.com/moment/-/moment-2.19.1.tgz#56da1a2d1cbf01d38b7e1afc31c10bcfa1929167"
 

From 17d4e8987b438b6d78a3b059fcc98c1f7ac967ff Mon Sep 17 00:00:00 2001
From: Vinay Puppal <me@vinaypuppal.com>
Date: Thu, 19 Oct 2017 00:29:13 +0530
Subject: [PATCH 06/22] visually seperate upcoming and past events

---
 pages/events.js | 72 +++++++++++++++++++++++++++----------------------
 1 file changed, 40 insertions(+), 32 deletions(-)

diff --git a/pages/events.js b/pages/events.js
index 20df1cb08..2fb36f14e 100644
--- a/pages/events.js
+++ b/pages/events.js
@@ -1,6 +1,6 @@
 import React from 'react';
 import fetch from 'isomorphic-unfetch';
-import { Card } from 'semantic-ui-react';
+import { Card, Divider } from 'semantic-ui-react';
 
 import publicPage from '../hocs/public-page';
 import {
@@ -52,37 +52,42 @@ class Events extends React.Component {
             <div>{this.props.fetchError}</div>
           ) : (
             <div>
-              <h4>Upcoming events</h4>
-              <div>
-                {this.props.futureEvents.map(event => (
-                  <Card.Group key={event.id}>
-                    <RowEvent
-                      name={event.name}
-                      yesCount={event.yes_rsvp_count}
-                      time={event.time}
-                      venue={event.venue}
-                      link={event.link}
-                      status={event.status}
-                    />
-                  </Card.Group>
-                ))}
-              </div>
-              <h4>Recent events</h4>
-              <div>
-                {this.props.pastEvents.map(event => (
-                  <Card.Group key={event.id}>
-                    <RowEvent
-                      key={event.id}
-                      name={event.name}
-                      yesCount={event.yes_rsvp_count}
-                      time={event.time}
-                      venue={event.venue}
-                      link={event.link}
-                      status={event.status}
-                    />
-                  </Card.Group>
-                ))}
-              </div>
+              <section>
+                <h2>Upcoming events</h2>
+                <div>
+                  {this.props.futureEvents.map(event => (
+                    <Card.Group key={event.id}>
+                      <RowEvent
+                        name={event.name}
+                        yesCount={event.yes_rsvp_count}
+                        time={event.time}
+                        venue={event.venue}
+                        link={event.link}
+                        status={event.status}
+                      />
+                    </Card.Group>
+                  ))}
+                </div>
+              </section>
+              <Divider />
+              <section>
+                <h2>Recent events</h2>
+                <div>
+                  {this.props.pastEvents.map(event => (
+                    <Card.Group key={event.id}>
+                      <RowEvent
+                        key={event.id}
+                        name={event.name}
+                        yesCount={event.yes_rsvp_count}
+                        time={event.time}
+                        venue={event.venue}
+                        link={event.link}
+                        status={event.status}
+                      />
+                    </Card.Group>
+                  ))}
+                </div>
+              </section>
             </div>
           )}
         </main>
@@ -110,6 +115,9 @@ class Events extends React.Component {
             color: #df1cb5;
             font-weight: 900;
           }
+          section {
+            margin: 50px 0;
+          }
         `}</style>
       </div>
     );

From 8920f9b206bbf9bd2b2b0537b128a18561037180 Mon Sep 17 00:00:00 2001
From: Vinay Puppal <me@vinaypuppal.com>
Date: Thu, 19 Oct 2017 00:32:24 +0530
Subject: [PATCH 07/22] remove projects page

---
 pages/projects.js | 24 ------------------------
 1 file changed, 24 deletions(-)
 delete mode 100644 pages/projects.js

diff --git a/pages/projects.js b/pages/projects.js
deleted file mode 100644
index 579be93c6..000000000
--- a/pages/projects.js
+++ /dev/null
@@ -1,24 +0,0 @@
-import React from 'react';
-
-import Icon from '../components/icon';
-import publicPage from '../hocs/public-page';
-
-export default publicPage(() => (
-  <div>
-    <main>
-      <Icon />
-      <h3>Under Construction, Coming Soon!...</h3>
-    </main>
-    <style jsx>{`
-      main {
-        min-height: calc(100vh - 70px);
-        background: #f4f7fb;
-        color: #314159;
-        display: flex;
-        justify-content: center;
-        align-items: center;
-        flex-direction: column;
-      }
-    `}</style>
-  </div>
-));

From 434150585465cbc64af4c0ce7e9cce32ef7d4f68 Mon Sep 17 00:00:00 2001
From: Vinay Puppal <me@vinaypuppal.com>
Date: Thu, 19 Oct 2017 01:41:20 +0530
Subject: [PATCH 08/22] add travis deploy script

---
 .travis.yml    |   2 +-
 scripts/now.js | 116 +++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 117 insertions(+), 1 deletion(-)
 create mode 100644 scripts/now.js

diff --git a/.travis.yml b/.travis.yml
index 7b6d6eb2f..96a276358 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -8,7 +8,7 @@ before_install:
   - 'export PATH="$HOME/.yarn/bin:$PATH"'
 cache: yarn
 after_script:
-  - NOW_ALIAS=coderplex.org node_modules/.bin/now-travis
+  - yarn export && cd out && NOW_ALIAS=coderplex-app.now.sh ../scripts/now -p
 branches:
   only:
     - master
diff --git a/scripts/now.js b/scripts/now.js
new file mode 100644
index 000000000..6e8795317
--- /dev/null
+++ b/scripts/now.js
@@ -0,0 +1,116 @@
+#! /usr/bin/env node
+
+const github = require('octonode');
+const normalizeUrl = require('normalize-url');
+const spawn = require('cross-spawn');
+const travisAfterAll = require('travis-after-all');
+const urlRegex = require('url-regex');
+const argv = require('yargs').argv;
+
+const nowCli = require.resolve('now/download/dist/now');
+
+if (!process.env.CI || !process.env.TRAVIS) {
+  throw new Error('Could not detect Travis CI environment');
+}
+
+const githubToken = process.env.GH_TOKEN;
+const nowToken = process.env.NOW_TOKEN;
+
+if (!githubToken) {
+  throw new Error('Missing required environment variable GH_TOKEN');
+}
+
+if (!nowToken) {
+  throw new Error('Missing required environment variable NOW_TOKEN');
+}
+
+const client = github.client(githubToken);
+const ghRepo = client.repo(process.env.TRAVIS_REPO_SLUG);
+
+function noop() {}
+
+function getUrl(content) {
+  const urls = content.match(urlRegex()) || [];
+
+  return urls.map(url => normalizeUrl(url.trim().replace(/\.+$/, '')))[0];
+}
+
+function deploy(context, sha) {
+  ghRepo.status(
+    sha,
+    {
+      context,
+      state: 'pending',
+      description: `Δ Now ${context} deployment pending`,
+    },
+    noop,
+  );
+
+  const args = ['--token', nowToken, '--no-clipboard'];
+  const alias = context === 'production' && process.env.NOW_ALIAS;
+  let stdout = '';
+
+  if (alias) {
+    args.push(...['--alias', alias]);
+  }
+
+  if (argv.p || argv.public) {
+    args.push(...['-p']);
+  }
+
+  if (argv.folder) {
+    args.push(argv.folder);
+  }
+
+  const child = spawn(nowCli, args);
+
+  if (!alias) {
+    child.stdout.on('data', data => {
+      stdout += data;
+    });
+  }
+
+  child.on('error', err => {
+    console.error(err);
+    ghRepo.status(
+      sha,
+      {
+        context,
+        state: 'error',
+        description: `Δ Now ${context} deployment failed. See Travis logs for details.`,
+      },
+      noop,
+    );
+  });
+
+  child.on('close', () => {
+    const targetUrl = alias || getUrl(stdout);
+
+    ghRepo.status(
+      sha,
+      {
+        context,
+        targetUrl,
+        state: 'success',
+        description: `Δ Now ${context} deployment complete`,
+      },
+      noop,
+    );
+  });
+}
+
+travisAfterAll((code, err) => {
+  // Don't do anything if there was an error of if the build returned a failing code
+  if (err || code) {
+    return;
+  }
+
+  switch (process.env.TRAVIS_EVENT_TYPE) {
+    case 'pull_request':
+      return deploy('staging', process.env.TRAVIS_PULL_REQUEST_SHA);
+    case 'push':
+      return deploy('production', process.env.TRAVIS_COMMIT);
+    default:
+      return '';
+  }
+});

From c97f7f2bf3b4f0b33323cbd704ab933149cd709a Mon Sep 17 00:00:00 2001
From: Vinay Puppal <me@vinaypuppal.com>
Date: Thu, 19 Oct 2017 01:42:55 +0530
Subject: [PATCH 09/22] add export map

---
 .gitignore     |   1 +
 next.config.js |  14 +-
 package.json   |  13 +-
 yarn.lock      | 901 +++----------------------------------------------
 4 files changed, 68 insertions(+), 861 deletions(-)

diff --git a/.gitignore b/.gitignore
index e7649391d..d05f5f2d1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -117,3 +117,4 @@ $RECYCLE.BIN/
 # Others
 data/
 .next/
+out/
diff --git a/next.config.js b/next.config.js
index 33283c586..2976dced7 100644
--- a/next.config.js
+++ b/next.config.js
@@ -4,12 +4,6 @@ module.exports = {
   webpack: (config, { dev }) => {
     /* Enable only in Production */
     if (!dev) {
-      // Preact
-      console.log('> Using Preact instead of React');
-      config.resolve.alias = {
-        react: 'preact-compat/dist/preact-compat',
-        'react-dom': 'preact-compat/dist/preact-compat',
-      };
       if (ANALYZE) {
         const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer');
         config.plugins.push(
@@ -23,4 +17,12 @@ module.exports = {
     }
     return config;
   },
+  exportPathMap() {
+    return {
+      '/': { page: '/' },
+      '/events': { page: '/events' },
+      '/learn': { page: '/learn' },
+      '/space': { page: '/space' },
+    };
+  },
 };
diff --git a/package.json b/package.json
index 4c4610ac7..a61c0f089 100644
--- a/package.json
+++ b/package.json
@@ -10,7 +10,8 @@
     "analyze": "cross-env ANALYZE=1 next build",
     "dev": "cross-env NODE_ENV=development next",
     "start": "cross-env NODE_ENV=production next start",
-    "build": "next build"
+    "build": "next build",
+    "export": "yarn build && next export"
   },
   "xo": {
     "parser": "babel-eslint",
@@ -63,13 +64,19 @@
     "babel-eslint": "^7.2.3",
     "babel-plugin-lodash": "^3.2.11",
     "cross-env": "^5.0.2",
+    "cross-spawn": "5.1.0",
     "eslint-config-prettier": "^2.3.0",
     "eslint-plugin-react": "^7.1.0",
     "husky": "^0.14.3",
     "lint-staged": "^4.0.2",
-    "now-travis": "1.0.1",
+    "normalize-url": "1.9.1",
+    "now": "8.3.10",
+    "octonode": "0.9.1",
     "prettier": "^1.7.0",
+    "travis-after-all": "1.4.5",
+    "url-regex": "4.1.1",
     "webpack-bundle-analyzer": "^2.8.3",
-    "xo": "^0.18.2"
+    "xo": "^0.18.2",
+    "yargs": "9.0.1"
   }
 }
diff --git a/yarn.lock b/yarn.lock
index 34f919d11..5e098efd8 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -89,10 +89,6 @@ acorn@^5.0.0, acorn@^5.1.1:
   version "5.1.2"
   resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.1.2.tgz#911cb53e036807cf0fa778dc5d370fbd864246d7"
 
-after@0.8.2:
-  version "0.8.2"
-  resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f"
-
 agent-base@2:
   version "2.1.1"
   resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-2.1.1.tgz#d6de10d5af6132d5bd692427d46fc538539094c7"
@@ -136,19 +132,13 @@ amdefine@>=0.0.4:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
 
-ansi-align@^1.1.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-1.1.0.tgz#2f0c1658829739add5ebb15e6b0c6e3423f016ba"
-  dependencies:
-    string-width "^1.0.1"
-
 ansi-align@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f"
   dependencies:
     string-width "^2.0.0"
 
-ansi-escapes@1.4.0, ansi-escapes@^1.0.0, ansi-escapes@^1.1.0, ansi-escapes@^1.4.0:
+ansi-escapes@^1.0.0, ansi-escapes@^1.1.0:
   version "1.4.0"
   resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e"
 
@@ -261,14 +251,6 @@ array-unique@^0.2.1:
   version "0.2.1"
   resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
 
-array-unique@^0.3.2:
-  version "0.3.2"
-  resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
-
-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"
@@ -307,20 +289,6 @@ async-each@^1.0.0:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d"
 
-async-retry@^0.2.1:
-  version "0.2.1"
-  resolved "https://registry.yarnpkg.com/async-retry/-/async-retry-0.2.1.tgz#a8ca3a101bc146dd75de5e6464263f26c1fcd44f"
-  dependencies:
-    babel-runtime "6.5.0"
-    retry "0.9.0"
-
-async-to-gen@^1.3.0:
-  version "1.3.3"
-  resolved "https://registry.yarnpkg.com/async-to-gen/-/async-to-gen-1.3.3.tgz#d52c9fb4801f0df44abc4d2de1870b48b60e20bb"
-  dependencies:
-    babylon "^6.14.0"
-    magic-string "^0.19.0"
-
 async@^1.4.0, async@~1.5.2:
   version "1.5.2"
   resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
@@ -912,12 +880,6 @@ babel-runtime@6.26.0, babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtim
     core-js "^2.4.0"
     regenerator-runtime "^0.11.0"
 
-babel-runtime@6.5.0:
-  version "6.5.0"
-  resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.5.0.tgz#fb7c1889069bd9f8200238a9bc6ad5b5e8ab5bfb"
-  dependencies:
-    core-js "^1.2.0"
-
 babel-template@6.26.0, babel-template@^6.24.1, babel-template@^6.26.0:
   version "6.26.0"
   resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02"
@@ -960,26 +922,14 @@ babel-types@^6.19.0, babel-types@^6.23.0, babel-types@^6.24.1, babel-types@^6.26
     lodash "^4.17.4"
     to-fast-properties "^1.0.3"
 
-babylon@^6.14.0, babylon@^6.17.0, babylon@^6.18.0:
+babylon@^6.17.0, babylon@^6.18.0:
   version "6.18.0"
   resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3"
 
-backo2@1.0.2:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947"
-
 balanced-match@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
 
-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@0.0.8:
-  version "0.0.8"
-  resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-0.0.8.tgz#1101e9544f4a76b1bc3b26d452ca96d7a35e7978"
-
 base64-js@^1.0.2:
   version "1.2.1"
   resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.1.tgz#a91947da1f4a516ea38e5b4ec0ec3773675e0886"
@@ -990,12 +940,6 @@ bcrypt-pbkdf@^1.0.0:
   dependencies:
     tweetnacl "^0.14.3"
 
-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.2.0"
   resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e"
@@ -1004,29 +948,19 @@ binary-extensions@^1.0.0:
   version "1.10.0"
   resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.10.0.tgz#9aeb9a6c5e88638aad171e167f5900abe24835d0"
 
-bl@^1.0.0:
-  version "1.2.1"
-  resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.1.tgz#cac328f7bee45730d404b692203fcb590e172d5e"
-  dependencies:
-    readable-stream "^2.0.5"
-
 bl@~1.1.2:
   version "1.1.2"
   resolved "https://registry.yarnpkg.com/bl/-/bl-1.1.2.tgz#fdca871a99713aa00d19e3bbba41c44787a65398"
   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"
   dependencies:
     inherits "~2.0.0"
 
-bluebird@^3.3.1:
+bluebird@^3.5.0:
   version "3.5.1"
   resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9"
 
@@ -1067,20 +1001,6 @@ boom@5.x.x:
   dependencies:
     hoek "4.x.x"
 
-boxen@^0.6.0:
-  version "0.6.0"
-  resolved "https://registry.yarnpkg.com/boxen/-/boxen-0.6.0.tgz#8364d4248ac34ff0ef1b2f2bf49a6c60ce0d81b6"
-  dependencies:
-    ansi-align "^1.1.0"
-    camelcase "^2.1.0"
-    chalk "^1.1.1"
-    cli-boxes "^1.0.0"
-    filled-array "^1.0.0"
-    object-assign "^4.0.1"
-    repeating "^2.0.0"
-    string-width "^1.0.1"
-    widest-line "^1.0.0"
-
 boxen@^1.2.1:
   version "1.2.1"
   resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.2.1.tgz#0f11e7fe344edb9397977fc13ede7f64d956481d"
@@ -1186,10 +1106,6 @@ buffer-alloc@^1.1.0:
     buffer-alloc-unsafe "^0.1.0"
     buffer-fill "^0.1.0"
 
-buffer-crc32@~0.2.3:
-  version "0.2.13"
-  resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
-
 buffer-fill@^0.1.0:
   version "0.1.0"
   resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-0.1.0.tgz#ca9470e8d4d1b977fd7543f4e2ab6a7dc95101a8"
@@ -1198,14 +1114,6 @@ buffer-xor@^1.0.3:
   version "1.0.3"
   resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
 
-buffer@^3.0.1:
-  version "3.6.0"
-  resolved "https://registry.yarnpkg.com/buffer/-/buffer-3.6.0.tgz#a72c936f77b96bf52f5f7e7b467180628551defb"
-  dependencies:
-    base64-js "0.0.8"
-    ieee754 "^1.1.4"
-    isarray "^1.0.0"
-
 buffer@^4.3.0:
   version "4.9.1"
   resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298"
@@ -1230,20 +1138,12 @@ bytes@3.0.0:
   version "3.0.0"
   resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
 
-bytes@^2.4.0:
-  version "2.5.0"
-  resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.5.0.tgz#4c9423ea2d252c270c41b2bdefeff9bb6b62c06a"
-
 caller-path@^0.1.0:
   version "0.1.0"
   resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f"
   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"
@@ -1259,7 +1159,7 @@ camelcase@^1.0.2:
   version "1.2.1"
   resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39"
 
-camelcase@^2.0.0, camelcase@^2.1.0:
+camelcase@^2.0.0:
   version "2.1.1"
   resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f"
 
@@ -1287,15 +1187,6 @@ caseless@~0.12.0:
   version "0.12.0"
   resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
 
-caw@^2.0.0:
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/caw/-/caw-2.0.1.tgz#6c3ca071fc194720883c2dc5da9b074bfc7e9e95"
-  dependencies:
-    get-proxy "^2.0.0"
-    isurl "^1.0.0-alpha5"
-    tunnel-agent "^0.6.0"
-    url-to-options "^1.0.1"
-
 center-align@^0.1.1:
   version "0.1.3"
   resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad"
@@ -1303,7 +1194,7 @@ center-align@^0.1.1:
     align-text "^0.1.3"
     lazy-cache "^1.0.3"
 
-chalk@1.1.3, chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3:
+chalk@^1.0.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"
   dependencies:
@@ -1365,20 +1256,10 @@ cli-cursor@^1.0.1, cli-cursor@^1.0.2:
   dependencies:
     restore-cursor "^1.0.1"
 
-cli-cursor@^2.1.0:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5"
-  dependencies:
-    restore-cursor "^2.0.0"
-
 cli-spinners@^0.1.2:
   version "0.1.2"
   resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-0.1.2.tgz#bb764d88e185fb9e1e6a2a1f19772318f605e31c"
 
-cli-spinners@^1.0.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-1.1.0.tgz#f1847b168844d917a671eb9d147e3df497c90d06"
-
 cli-truncate@^0.2.1:
   version "0.2.1"
   resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574"
@@ -1449,12 +1330,6 @@ commander@^2.9.0:
   version "2.11.0"
   resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563"
 
-commander@~2.8.1:
-  version "2.8.1"
-  resolved "https://registry.yarnpkg.com/commander/-/commander-2.8.1.tgz#06be367febfda0c330aa1e2a072d3dc9762425d4"
-  dependencies:
-    graceful-readlink ">= 1.0.0"
-
 commondir@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
@@ -1466,22 +1341,6 @@ compare-func@^1.3.1:
     array-ify "^1.0.0"
     dot-prop "^3.0.0"
 
-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"
-
-component-inherit@0.0.3:
-  version "0.0.3"
-  resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143"
-
 concat-map@0.0.1:
   version "0.0.1"
   resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
@@ -1494,27 +1353,13 @@ concat-stream@^1.5.2:
     readable-stream "^2.2.2"
     typedarray "^0.0.6"
 
-config-chain@^1.1.11, config-chain@~1.1.8:
+config-chain@~1.1.8:
   version "1.1.11"
   resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.11.tgz#aba09747dfbe4c3e70e766a6e41586e1859fc6f2"
   dependencies:
     ini "^1.3.4"
     proto-list "~1.2.1"
 
-configstore@^2.0.0:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/configstore/-/configstore-2.1.0.tgz#737a3a7036e9886102aa6099e47bb33ab1aba1a1"
-  dependencies:
-    dot-prop "^3.0.0"
-    graceful-fs "^4.1.2"
-    mkdirp "^0.5.0"
-    object-assign "^4.0.1"
-    os-tmpdir "^1.0.0"
-    osenv "^0.1.0"
-    uuid "^2.0.1"
-    write-file-atomic "^1.1.2"
-    xdg-basedir "^2.0.0"
-
 configstore@^3.0.0:
   version "3.1.1"
   resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.1.tgz#094ee662ab83fad9917678de114faaea8fcdca90"
@@ -1627,14 +1472,6 @@ cookie@0.3.1:
   version "0.3.1"
   resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb"
 
-copy-paste@^1.3.0:
-  version "1.3.0"
-  resolved "https://registry.yarnpkg.com/copy-paste/-/copy-paste-1.3.0.tgz#a7e6c4a1c28fdedf2b081e72b97df2ef95f471ed"
-  dependencies:
-    iconv-lite "^0.4.8"
-  optionalDependencies:
-    sync-exec "~0.6.x"
-
 core-assert@^0.2.0:
   version "0.2.1"
   resolved "https://registry.yarnpkg.com/core-assert/-/core-assert-0.2.1.tgz#f85e2cf9bfed28f773cc8b3fa5c5b69bdc02fe3f"
@@ -1642,7 +1479,7 @@ core-assert@^0.2.0:
     buf-compare "^1.0.0"
     is-error "^2.2.0"
 
-core-js@^1.0.0, core-js@^1.2.0:
+core-js@^1.0.0:
   version "1.2.7"
   resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636"
 
@@ -1674,7 +1511,7 @@ create-ecdh@^4.0.0:
     bn.js "^4.1.0"
     elliptic "^6.0.0"
 
-create-error-class@^3.0.0, create-error-class@^3.0.1:
+create-error-class@^3.0.0:
   version "3.0.2"
   resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6"
   dependencies:
@@ -1798,18 +1635,6 @@ debug@2, debug@2.6.9, debug@^2.1.1, debug@^2.2.0, debug@^2.6.8:
   dependencies:
     ms "2.0.0"
 
-debug@2.2.0:
-  version "2.2.0"
-  resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da"
-  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@^3.0.0:
   version "3.1.0"
   resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
@@ -1820,54 +1645,6 @@ 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"
 
-decompress-tar@^4.0.0, decompress-tar@^4.1.0, decompress-tar@^4.1.1:
-  version "4.1.1"
-  resolved "https://registry.yarnpkg.com/decompress-tar/-/decompress-tar-4.1.1.tgz#718cbd3fcb16209716e70a26b84e7ba4592e5af1"
-  dependencies:
-    file-type "^5.2.0"
-    is-stream "^1.1.0"
-    tar-stream "^1.5.2"
-
-decompress-tarbz2@^4.0.0:
-  version "4.1.1"
-  resolved "https://registry.yarnpkg.com/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz#3082a5b880ea4043816349f378b56c516be1a39b"
-  dependencies:
-    decompress-tar "^4.1.0"
-    file-type "^6.1.0"
-    is-stream "^1.1.0"
-    seek-bzip "^1.0.5"
-    unbzip2-stream "^1.0.9"
-
-decompress-targz@^4.0.0:
-  version "4.1.1"
-  resolved "https://registry.yarnpkg.com/decompress-targz/-/decompress-targz-4.1.1.tgz#c09bc35c4d11f3de09f2d2da53e9de23e7ce1eee"
-  dependencies:
-    decompress-tar "^4.1.1"
-    file-type "^5.2.0"
-    is-stream "^1.1.0"
-
-decompress-unzip@^4.0.1:
-  version "4.0.1"
-  resolved "https://registry.yarnpkg.com/decompress-unzip/-/decompress-unzip-4.0.1.tgz#deaaccdfd14aeaf85578f733ae8210f9b4848f69"
-  dependencies:
-    file-type "^3.8.0"
-    get-stream "^2.2.0"
-    pify "^2.3.0"
-    yauzl "^2.4.2"
-
-decompress@^4.0.0:
-  version "4.2.0"
-  resolved "https://registry.yarnpkg.com/decompress/-/decompress-4.2.0.tgz#7aedd85427e5a92dacfe55674a7c505e96d01f9d"
-  dependencies:
-    decompress-tar "^4.0.0"
-    decompress-tarbz2 "^4.0.0"
-    decompress-targz "^4.0.0"
-    decompress-unzip "^4.0.1"
-    graceful-fs "^4.1.10"
-    make-dir "^1.0.0"
-    pify "^2.3.0"
-    strip-dirs "^2.0.0"
-
 deep-assign@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/deep-assign/-/deep-assign-1.0.0.tgz#b092743be8427dc621ea0067cdec7e70dd19f37b"
@@ -1951,10 +1728,6 @@ detect-indent@^5.0.0:
   version "5.0.0"
   resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d"
 
-detect-node@^2.0.3:
-  version "2.0.3"
-  resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.3.tgz#a2033c09cc8e158d37748fbde7507832bd6ce127"
-
 diffie-hellman@^5.0.0:
   version "5.0.2"
   resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e"
@@ -1963,10 +1736,6 @@ diffie-hellman@^5.0.0:
     miller-rabin "^4.0.0"
     randombytes "^2.0.0"
 
-docker-file-parser@^0.1.0:
-  version "0.1.0"
-  resolved "https://registry.yarnpkg.com/docker-file-parser/-/docker-file-parser-0.1.0.tgz#8aff4967aa36df61e50f36091571f95e4457ae8b"
-
 doctrine@1.5.0:
   version "1.5.0"
   resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa"
@@ -2001,24 +1770,6 @@ dot-prop@^4.1.0:
   dependencies:
     is-obj "^1.0.0"
 
-download@^5.0.2:
-  version "5.0.3"
-  resolved "https://registry.yarnpkg.com/download/-/download-5.0.3.tgz#63537f977f99266a30eb8a2a2fbd1f20b8000f7a"
-  dependencies:
-    caw "^2.0.0"
-    decompress "^4.0.0"
-    filenamify "^2.0.0"
-    get-stream "^3.0.0"
-    got "^6.3.0"
-    mkdirp "^0.5.1"
-    pify "^2.3.0"
-
-duplexer2@^0.1.4:
-  version "0.1.4"
-  resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1"
-  dependencies:
-    readable-stream "^2.0.2"
-
 duplexer3@^0.1.4:
   version "0.1.4"
   resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2"
@@ -2061,17 +1812,6 @@ elliptic@^6.0.0:
     minimalistic-assert "^1.0.0"
     minimalistic-crypto-utils "^1.0.0"
 
-email-prompt@^0.2.0:
-  version "0.2.0"
-  resolved "https://registry.yarnpkg.com/email-prompt/-/email-prompt-0.2.0.tgz#b16d1970b7b2537b01920fe01f5062641a1f41f3"
-  dependencies:
-    ansi-escapes "1.4.0"
-    chalk "1.1.3"
-
-email-validator@^1.0.7:
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/email-validator/-/email-validator-1.1.1.tgz#b07f3be7bac1dc099bc43e75f6ae399f552d5a80"
-
 emitter-mixin@0.0.3:
   version "0.0.3"
   resolved "https://registry.yarnpkg.com/emitter-mixin/-/emitter-mixin-0.0.3.tgz#5948cb286f2e48edc3b251a7cfc1f7883396d65c"
@@ -2090,40 +1830,6 @@ encoding@^0.1.11:
   dependencies:
     iconv-lite "~0.4.13"
 
-end-of-stream@^1.0.0:
-  version "1.4.0"
-  resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.0.tgz#7a90d833efda6cfa6eac0f4949dbb0fad3a63206"
-  dependencies:
-    once "^1.4.0"
-
-engine.io-client@~1.8.4:
-  version "1.8.4"
-  resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-1.8.4.tgz#9fe85dee25853ca6babe25bd2ad68710863e91c2"
-  dependencies:
-    component-emitter "1.2.1"
-    component-inherit "0.0.3"
-    debug "2.3.3"
-    engine.io-parser "1.3.2"
-    has-cors "1.1.0"
-    indexof "0.0.1"
-    parsejson "0.0.3"
-    parseqs "0.0.5"
-    parseuri "0.0.5"
-    ws "1.1.2"
-    xmlhttprequest-ssl "1.5.3"
-    yeast "0.1.2"
-
-engine.io-parser@1.3.2:
-  version "1.3.2"
-  resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-1.3.2.tgz#937b079f0007d0893ec56d46cb220b8cb435220a"
-  dependencies:
-    after "0.8.2"
-    arraybuffer.slice "0.0.6"
-    base64-arraybuffer "0.1.5"
-    blob "0.0.4"
-    has-binary "0.1.7"
-    wtf-8 "1.0.0"
-
 enhance-visitors@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/enhance-visitors/-/enhance-visitors-1.0.0.tgz#aa945d05da465672a1ebd38fee2ed3da8518e95a"
@@ -2565,12 +2271,6 @@ fbjs@^0.8.16:
     setimmediate "^1.0.5"
     ua-parser-js "^0.7.9"
 
-fd-slicer@~1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65"
-  dependencies:
-    pend "~1.2.0"
-
 feathers-commons@^0.8.0:
   version "0.8.7"
   resolved "https://registry.yarnpkg.com/feathers-commons/-/feathers-commons-0.8.7.tgz#11c6f25b537745a983e8d61552d7db8932d53782"
@@ -2604,34 +2304,10 @@ file-entry-cache@^2.0.0:
     flat-cache "^1.2.1"
     object-assign "^4.0.1"
 
-file-type@^3.8.0:
-  version "3.9.0"
-  resolved "https://registry.yarnpkg.com/file-type/-/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9"
-
-file-type@^5.2.0:
-  version "5.2.0"
-  resolved "https://registry.yarnpkg.com/file-type/-/file-type-5.2.0.tgz#2ddbea7c73ffe36368dfae49dc338c058c2b8ad6"
-
-file-type@^6.1.0:
-  version "6.2.0"
-  resolved "https://registry.yarnpkg.com/file-type/-/file-type-6.2.0.tgz#e50cd75d356ffed4e306dc4f5bcf52a79903a919"
-
 filename-regex@^2.0.0:
   version "2.0.1"
   resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26"
 
-filename-reserved-regex@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz#abf73dfab735d045440abfea2d91f389ebbfa229"
-
-filenamify@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/filenamify/-/filenamify-2.0.0.tgz#bd162262c0b6e94bfbcdcf19a3bbb3764f785695"
-  dependencies:
-    filename-reserved-regex "^2.0.0"
-    strip-outer "^1.0.0"
-    trim-repeated "^1.0.0"
-
 filesize@^3.2.1, filesize@^3.5.9:
   version "3.5.10"
   resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.5.10.tgz#fc8fa23ddb4ef9e5e0ab6e1e64f679a24a56761f"
@@ -2646,10 +2322,6 @@ fill-range@^2.1.0:
     repeat-element "^1.1.2"
     repeat-string "^1.5.2"
 
-filled-array@^1.0.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/filled-array/-/filled-array-1.1.0.tgz#c3c4f6c663b923459a9aa29912d2d031f1507f84"
-
 finalhandler@1.1.0:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.0.tgz#ce0b6855b45853e791b2fcc680046d88253dd7f5"
@@ -2768,14 +2440,6 @@ friendly-errors-webpack-plugin@1.6.1:
     error-stack-parser "^2.0.0"
     string-length "^1.0.1"
 
-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@^4.0.2:
   version "4.0.2"
   resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.2.tgz#f91704c53d1b461f893452b0c307d9997647ab6b"
@@ -2784,15 +2448,6 @@ fs-extra@^4.0.2:
     jsonfile "^4.0.0"
     universalify "^0.1.0"
 
-fs-promise@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/fs-promise/-/fs-promise-1.0.0.tgz#4246a4cd45497d2ed57e6e4b22167d3864b23679"
-  dependencies:
-    any-promise "^1.0.0"
-    fs-extra "^1.0.0"
-    mz "^2.3.1"
-    thenify-all "^1.6.0"
-
 fs.realpath@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
@@ -2866,12 +2521,6 @@ get-pkg-repo@^1.0.0:
     parse-github-repo-url "^1.3.0"
     through2 "^2.0.0"
 
-get-proxy@^2.0.0:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/get-proxy/-/get-proxy-2.1.0.tgz#349f2b4d91d44c4d4d4e9cba2ad90143fac5ef93"
-  dependencies:
-    npm-conf "^1.1.0"
-
 get-set-props@^0.1.0:
   version "0.1.0"
   resolved "https://registry.yarnpkg.com/get-set-props/-/get-set-props-0.1.0.tgz#998475c178445686d0b32246da5df8dbcfbe8ea3"
@@ -3037,27 +2686,7 @@ globby@^6.0.0, globby@^6.1.0:
     pify "^2.0.0"
     pinkie-promise "^2.0.0"
 
-got@^5.0.0:
-  version "5.7.1"
-  resolved "https://registry.yarnpkg.com/got/-/got-5.7.1.tgz#5f81635a61e4a6589f180569ea4e381680a51f35"
-  dependencies:
-    create-error-class "^3.0.1"
-    duplexer2 "^0.1.4"
-    is-redirect "^1.0.0"
-    is-retry-allowed "^1.0.0"
-    is-stream "^1.0.0"
-    lowercase-keys "^1.0.0"
-    node-status-codes "^1.0.0"
-    object-assign "^4.0.1"
-    parse-json "^2.1.0"
-    pinkie-promise "^2.0.0"
-    read-all-stream "^3.0.0"
-    readable-stream "^2.0.5"
-    timed-out "^3.0.0"
-    unzip-response "^1.0.2"
-    url-parse-lax "^1.0.0"
-
-got@^6.3.0, got@^6.7.1:
+got@^6.7.1:
   version "6.7.1"
   resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0"
   dependencies:
@@ -3073,7 +2702,7 @@ got@^6.3.0, got@^6.7.1:
     unzip-response "^2.0.1"
     url-parse-lax "^1.0.0"
 
-graceful-fs@^4.1.10, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.4, graceful-fs@^4.1.6, graceful-fs@^4.1.9:
+graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.4, graceful-fs@^4.1.6:
   version "4.1.11"
   resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
 
@@ -3087,10 +2716,6 @@ gzip-size@^3.0.0:
   dependencies:
     duplexer "^0.1.1"
 
-handle-thing@^1.2.5:
-  version "1.2.5"
-  resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4"
-
 handlebars@^4.0.2:
   version "4.0.10"
   resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.10.tgz#3d30c718b09a3d96f23ea4cc1f403c4d3ba9ff4f"
@@ -3138,30 +2763,10 @@ has-ansi@^2.0.0:
   dependencies:
     ansi-regex "^2.0.0"
 
-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@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51"
 
-has-symbol-support-x@^1.4.1:
-  version "1.4.1"
-  resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.1.tgz#66ec2e377e0c7d7ccedb07a3a84d77510ff1bc4c"
-
-has-to-string-tag-x@^1.2.0:
-  version "1.4.1"
-  resolved "https://registry.yarnpkg.com/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz#a045ab383d7b4b2012a00148ab0aa5f290044d4d"
-  dependencies:
-    has-symbol-support-x "^1.4.1"
-
 has-unicode@^2.0.0:
   version "2.0.1"
   resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
@@ -3241,15 +2846,6 @@ hosted-git-info@^2.1.4, hosted-git-info@^2.4.2:
   version "2.5.0"
   resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c"
 
-hpack.js@^2.1.6:
-  version "2.1.6"
-  resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2"
-  dependencies:
-    inherits "^2.0.1"
-    obuf "^1.0.0"
-    readable-stream "^2.0.1"
-    wbuf "^1.1.0"
-
 html-entities@^1.2.0:
   version "1.2.1"
   resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f"
@@ -3258,10 +2854,6 @@ htmlescape@1.1.1:
   version "1.1.1"
   resolved "https://registry.yarnpkg.com/htmlescape/-/htmlescape-1.1.1.tgz#3a03edc2214bca3b66424a3e7959349509cb0351"
 
-http-deceiver@^1.2.7:
-  version "1.2.7"
-  resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87"
-
 http-errors@1.6.2, http-errors@~1.6.2:
   version "1.6.2"
   resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736"
@@ -3318,7 +2910,7 @@ husky@^0.14.3:
     normalize-path "^1.0.0"
     strip-indent "^2.0.0"
 
-iconv-lite@0.4.19, iconv-lite@^0.4.8, iconv-lite@~0.4.13:
+iconv-lite@0.4.19, iconv-lite@~0.4.13:
   version "0.4.19"
   resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b"
 
@@ -3542,10 +3134,6 @@ is-my-json-valid@^2.10.0, is-my-json-valid@^2.12.4:
     jsonpointer "^4.0.0"
     xtend "^4.0.0"
 
-is-natural-number@^4.0.1:
-  version "4.0.1"
-  resolved "https://registry.yarnpkg.com/is-natural-number/-/is-natural-number-4.0.1.tgz#ab9d76e1db4ced51e35de0c72ebecf09f734cde8"
-
 is-npm@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4"
@@ -3573,10 +3161,6 @@ is-obj@^1.0.0, is-obj@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
 
-is-object@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470"
-
 is-path-cwd@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d"
@@ -3666,10 +3250,6 @@ is-typedarray@~1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
 
-is-url@^1.2.2:
-  version "1.2.2"
-  resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.2.tgz#498905a593bf47cc2d9e7f738372bbf7696c7f26"
-
 is-utf8@^0.2.0:
   version "0.2.1"
   resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
@@ -3714,13 +3294,6 @@ isstream@~0.1.2:
   version "0.1.2"
   resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
 
-isurl@^1.0.0-alpha5:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/isurl/-/isurl-1.0.0.tgz#b27f4f49f3cdaa3ea44a0a5b7f3462e6edc39d67"
-  dependencies:
-    has-to-string-tag-x "^1.2.0"
-    is-object "^1.0.1"
-
 jest-get-type@^21.2.0:
   version "21.2.0"
   resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-21.2.0.tgz#f6376ab9db4b60d81e39f30749c6c466f40d4a23"
@@ -3783,20 +3356,10 @@ json-stringify-safe@^5.0.1, 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:
-  version "3.3.2"
-  resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1"
-
 json5@^0.5.0, json5@^0.5.1:
   version "0.5.1"
   resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
 
-jsonfile@^2.1.0:
-  version "2.4.0"
-  resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8"
-  optionalDependencies:
-    graceful-fs "^4.1.6"
-
 jsonfile@^4.0.0:
   version "4.0.0"
   resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
@@ -3846,18 +3409,6 @@ kind-of@^4.0.0:
   dependencies:
     is-buffer "^1.1.5"
 
-klaw@^1.0.0:
-  version "1.3.1"
-  resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439"
-  optionalDependencies:
-    graceful-fs "^4.1.9"
-
-latest-version@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-2.0.0.tgz#56f8d6139620847b8017f8f1f4d78e211324168b"
-  dependencies:
-    package-json "^2.0.0"
-
 latest-version@^3.0.0:
   version "3.1.0"
   resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15"
@@ -3868,10 +3419,6 @@ lazy-cache@^1.0.3:
   version "1.0.4"
   resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e"
 
-lazy-req@^1.1.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/lazy-req/-/lazy-req-1.1.0.tgz#bdaebead30f8d824039ce0ce149d4daa07ba1fac"
-
 lcid@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835"
@@ -4152,12 +3699,6 @@ lru-cache@^4.0.1:
     pseudomap "^1.0.2"
     yallist "^2.1.2"
 
-magic-string@^0.19.0:
-  version "0.19.1"
-  resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.19.1.tgz#14d768013caf2ec8fdea16a49af82fc377e75201"
-  dependencies:
-    vlq "^0.2.1"
-
 make-dir@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.0.0.tgz#97a011751e91dd87cfadef58832ebb04936de978"
@@ -4326,22 +3867,10 @@ moment@^2.11.2:
   version "2.19.1"
   resolved "https://registry.yarnpkg.com/moment/-/moment-2.19.1.tgz#56da1a2d1cbf01d38b7e1afc31c10bcfa1929167"
 
-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"
-
 ms@2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
 
-ms@^0.7.2:
-  version "0.7.3"
-  resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.3.tgz#708155a5e44e33f5fd0fc53e81d0d40a91be1fff"
-
 multimatch@^2.1.0:
   version "2.1.0"
   resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-2.1.0.tgz#9c7906a22fb4c02919e2f5f75161b4cdbd4b2a2b"
@@ -4363,7 +3892,7 @@ mv@2.1.1:
     ncp "~2.0.0"
     rimraf "~2.4.0"
 
-mz@2.7.0, mz@^2.3.1:
+mz@2.7.0:
   version "2.7.0"
   resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32"
   dependencies:
@@ -4455,7 +3984,7 @@ next@^4.1.0:
     write-file-webpack-plugin "4.2.0"
     xss-filters "1.2.7"
 
-node-fetch@^1.0.1, node-fetch@^1.6.3, node-fetch@^1.7.1:
+node-fetch@^1.0.1, node-fetch@^1.7.1:
   version "1.7.3"
   resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef"
   dependencies:
@@ -4505,18 +4034,10 @@ node-pre-gyp@^0.6.36:
     tar "^2.2.1"
     tar-pack "^3.4.0"
 
-node-status-codes@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/node-status-codes/-/node-status-codes-1.0.0.tgz#5ae5541d024645d32a58fcddc9ceecea7ae3ac2f"
-
 node-uuid@~1.4.7:
   version "1.4.8"
   resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.8.tgz#b040eb0923968afabf8d32fb1f17f1167fdab907"
 
-node-version@^1.0.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/node-version/-/node-version-1.1.0.tgz#f437d7ba407e65e2c4eaef8887b1718ba523d4f0"
-
 nopt@^4.0.0, nopt@^4.0.1:
   version "4.0.1"
   resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d"
@@ -4555,7 +4076,7 @@ normalize-path@^2.0.0, normalize-path@^2.0.1:
   dependencies:
     remove-trailing-separator "^1.0.1"
 
-normalize-url@^1.9.0:
+normalize-url@1.9.1:
   version "1.9.1"
   resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c"
   dependencies:
@@ -4564,62 +4085,9 @@ normalize-url@^1.9.0:
     query-string "^4.1.0"
     sort-keys "^1.0.0"
 
-now-travis@1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/now-travis/-/now-travis-1.0.1.tgz#72a8ce18fa690af483241fe1d21e2ecec115da85"
-  dependencies:
-    cross-spawn "^5.0.1"
-    normalize-url "^1.9.0"
-    now "^2.0.3"
-    octonode "^0.7.8"
-    travis-after-all "^1.4.4"
-    url-regex "^4.0.0"
-
-now@^2.0.3:
-  version "2.0.5"
-  resolved "https://registry.yarnpkg.com/now/-/now-2.0.5.tgz#b2621d679364a6fb616f8a4648d380880b5886b8"
-  dependencies:
-    ansi-escapes "^1.4.0"
-    arr-flatten "^1.0.1"
-    array-unique "^0.3.2"
-    async-retry "^0.2.1"
-    async-to-gen "^1.3.0"
-    bytes "^2.4.0"
-    chalk "^1.1.3"
-    copy-paste "^1.3.0"
-    cross-spawn "^5.0.1"
-    docker-file-parser "^0.1.0"
-    download "^5.0.2"
-    email-prompt "^0.2.0"
-    email-validator "^1.0.7"
-    fs-promise "^1.0.0"
-    glob "^7.1.1"
-    graceful-fs "^4.1.11"
-    ignore "^3.2.0"
-    ini "^1.3.4"
-    is-url "^1.2.2"
-    minimist "^1.2.0"
-    ms "^0.7.2"
-    node-fetch "^1.6.3"
-    node-version "^1.0.0"
-    ora "^1.0.0"
-    progress "^1.1.8"
-    psl "^1.1.15"
-    resumer "^0.0.0"
-    semver-compare "^1.0.0"
-    socket.io-client "^1.7.2"
-    spdy "^3.4.4"
-    split-array "^1.0.1"
-    text-table "^0.2.0"
-    tmp-promise "^1.0.3"
-    update-notifier "^1.0.3"
-
-npm-conf@^1.1.0:
-  version "1.1.2"
-  resolved "https://registry.yarnpkg.com/npm-conf/-/npm-conf-1.1.2.tgz#170a2c48a0c6ad0495f03f87aec2da11ef47a525"
-  dependencies:
-    config-chain "^1.1.11"
-    pify "^3.0.0"
+now@8.3.10:
+  version "8.3.10"
+  resolved "https://registry.yarnpkg.com/now/-/now-8.3.10.tgz#13b0dc1b8651284d5c345bc969d664d11c7885e8"
 
 "npm-package-arg@^3.0.0 || ^4.0.0 || ^5.0.0":
   version "5.1.2"
@@ -4710,10 +4178,6 @@ object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1:
   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-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"
@@ -4733,14 +4197,11 @@ object.omit@^2.0.0:
     for-own "^0.1.4"
     is-extendable "^0.1.1"
 
-obuf@^1.0.0, obuf@^1.1.1:
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.1.tgz#104124b6c602c6796881a042541d36db43a5264e"
-
-octonode@^0.7.8:
-  version "0.7.13"
-  resolved "https://registry.yarnpkg.com/octonode/-/octonode-0.7.13.tgz#d66cb26b9efefc4089e0df8830a6efab73976cad"
+octonode@0.9.1:
+  version "0.9.1"
+  resolved "https://registry.yarnpkg.com/octonode/-/octonode-0.9.1.tgz#a8ac6e767a5db0256b9f064527134f3f4e92e635"
   dependencies:
+    bluebird "^3.5.0"
     deep-extend "^0.4.1"
     randomstring "^1.1.5"
     request "^2.72.0"
@@ -4751,7 +4212,7 @@ on-finished@~2.3.0:
   dependencies:
     ee-first "1.1.1"
 
-once@^1.3.0, once@^1.3.3, once@^1.4.0:
+once@^1.3.0, once@^1.3.3:
   version "1.4.0"
   resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
   dependencies:
@@ -4767,12 +4228,6 @@ onetime@^1.0.0:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789"
 
-onetime@^2.0.0:
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4"
-  dependencies:
-    mimic-fn "^1.0.0"
-
 opener@^1.4.3:
   version "1.4.3"
   resolved "https://registry.yarnpkg.com/opener/-/opener-1.4.3.tgz#5c6da2c5d7e5831e8ffa3964950f8d6674ac90b8"
@@ -4795,10 +4250,6 @@ 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"
-
 ora@^0.2.3:
   version "0.2.3"
   resolved "https://registry.yarnpkg.com/ora/-/ora-0.2.3.tgz#37527d220adcd53c39b73571d754156d5db657a4"
@@ -4808,15 +4259,6 @@ ora@^0.2.3:
     cli-spinners "^0.1.2"
     object-assign "^4.0.1"
 
-ora@^1.0.0:
-  version "1.3.0"
-  resolved "https://registry.yarnpkg.com/ora/-/ora-1.3.0.tgz#80078dd2b92a934af66a3ad72a5b910694ede51a"
-  dependencies:
-    chalk "^1.1.1"
-    cli-cursor "^2.1.0"
-    cli-spinners "^1.0.0"
-    log-symbols "^1.0.2"
-
 os-browserify@^0.2.0:
   version "0.2.1"
   resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.2.1.tgz#63fc4ccee5d2d7763d26bbf8601078e6c2e0044f"
@@ -4833,7 +4275,7 @@ os-locale@^2.0.0:
     lcid "^1.0.0"
     mem "^1.1.0"
 
-os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1:
+os-tmpdir@^1.0.0, os-tmpdir@^1.0.1:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
 
@@ -4878,15 +4320,6 @@ p-series@^1.0.0:
   dependencies:
     p-reduce "^1.0.0"
 
-package-json@^2.0.0:
-  version "2.4.0"
-  resolved "https://registry.yarnpkg.com/package-json/-/package-json-2.4.0.tgz#0d15bd67d1cbbddbb2ca222ff2edb86bcb31a8bb"
-  dependencies:
-    got "^5.0.0"
-    registry-auth-token "^3.0.1"
-    registry-url "^3.0.3"
-    semver "^5.1.0"
-
 package-json@^4.0.0:
   version "4.0.1"
   resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed"
@@ -4923,30 +4356,12 @@ parse-glob@^3.0.4:
     is-extglob "^1.0.0"
     is-glob "^2.0.0"
 
-parse-json@^2.1.0, parse-json@^2.2.0:
+parse-json@^2.2.0:
   version "2.2.0"
   resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
   dependencies:
     error-ex "^1.2.0"
 
-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.2:
   version "1.3.2"
   resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3"
@@ -5029,10 +4444,6 @@ pbkdf2@^3.0.3:
     safe-buffer "^5.0.1"
     sha.js "^2.4.8"
 
-pend@~1.2.0:
-  version "1.2.0"
-  resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50"
-
 performance-now@^0.2.0:
   version "0.2.0"
   resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5"
@@ -5181,10 +4592,6 @@ pseudomap@^1.0.2:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
 
-psl@^1.1.15:
-  version "1.1.20"
-  resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.20.tgz#363382f332388880b155e2506345957084288e9d"
-
 public-encrypt@^4.0.0:
   version "4.0.0"
   resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6"
@@ -5355,13 +4762,6 @@ react@^16.0.0:
     object-assign "^4.1.1"
     prop-types "^15.6.0"
 
-read-all-stream@^3.0.0:
-  version "3.1.0"
-  resolved "https://registry.yarnpkg.com/read-all-stream/-/read-all-stream-3.1.0.tgz#35c3e177f2078ef789ee4bfafa4373074eaef4fa"
-  dependencies:
-    pinkie-promise "^2.0.0"
-    readable-stream "^2.0.0"
-
 read-pkg-up@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02"
@@ -5392,7 +4792,7 @@ read-pkg@^2.0.0:
     normalize-package-data "^2.3.2"
     path-type "^2.0.0"
 
-readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.6, readable-stream@^2.2.9:
+readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.6:
   version "2.3.3"
   resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c"
   dependencies:
@@ -5699,23 +5099,6 @@ restore-cursor@^1.0.1:
     exit-hook "^1.0.0"
     onetime "^1.0.0"
 
-restore-cursor@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf"
-  dependencies:
-    onetime "^2.0.0"
-    signal-exit "^3.0.2"
-
-resumer@^0.0.0:
-  version "0.0.0"
-  resolved "https://registry.yarnpkg.com/resumer/-/resumer-0.0.0.tgz#f1e8f461e4064ba39e82af3cdc2a8c893d076759"
-  dependencies:
-    through "~2.3.4"
-
-retry@0.9.0:
-  version "0.9.0"
-  resolved "https://registry.yarnpkg.com/retry/-/retry-0.9.0.tgz#6f697e50a0e4ddc8c8f7fb547a9b60dead43678d"
-
 retry@^0.10.0:
   version "0.10.1"
   resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4"
@@ -5769,16 +5152,6 @@ safe-buffer@~5.0.1:
   version "5.0.1"
   resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7"
 
-seek-bzip@^1.0.5:
-  version "1.0.5"
-  resolved "https://registry.yarnpkg.com/seek-bzip/-/seek-bzip-1.0.5.tgz#cfe917cb3d274bcffac792758af53173eb1fabdc"
-  dependencies:
-    commander "~2.8.1"
-
-select-hose@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca"
-
 semantic-release@^8.0.3:
   version "8.2.0"
   resolved "https://registry.yarnpkg.com/semantic-release/-/semantic-release-8.2.0.tgz#972aa3a7246065d8a405991005a210e46995d4b6"
@@ -5813,10 +5186,6 @@ semantic-ui-react@^0.71.3:
     lodash "^4.17.4"
     prop-types "^15.5.10"
 
-semver-compare@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc"
-
 semver-diff@^2.0.0:
   version "2.1.0"
   resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36"
@@ -5925,7 +5294,7 @@ slice-ansi@0.0.4:
   version "0.0.4"
   resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35"
 
-slide@^1.1.3, slide@^1.1.5:
+slide@^1.1.3:
   version "1.1.6"
   resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707"
 
@@ -5941,31 +5310,6 @@ sntp@2.x.x:
   dependencies:
     hoek "4.x.x"
 
-socket.io-client@^1.7.2:
-  version "1.7.4"
-  resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-1.7.4.tgz#ec9f820356ed99ef6d357f0756d648717bdd4281"
-  dependencies:
-    backo2 "1.0.2"
-    component-bind "1.0.0"
-    component-emitter "1.2.1"
-    debug "2.3.3"
-    engine.io-client "~1.8.4"
-    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"
-  dependencies:
-    component-emitter "1.1.2"
-    debug "2.2.0"
-    isarray "0.0.1"
-    json3 "3.3.2"
-
 sort-keys@^1.0.0, sort-keys@^1.1.2:
   version "1.1.2"
   resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad"
@@ -6026,33 +5370,6 @@ spdx-license-ids@^1.0.2:
   version "1.2.2"
   resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57"
 
-spdy-transport@^2.0.18:
-  version "2.0.20"
-  resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-2.0.20.tgz#735e72054c486b2354fe89e702256004a39ace4d"
-  dependencies:
-    debug "^2.6.8"
-    detect-node "^2.0.3"
-    hpack.js "^2.1.6"
-    obuf "^1.1.1"
-    readable-stream "^2.2.9"
-    safe-buffer "^5.0.1"
-    wbuf "^1.7.2"
-
-spdy@^3.4.4:
-  version "3.4.7"
-  resolved "https://registry.yarnpkg.com/spdy/-/spdy-3.4.7.tgz#42ff41ece5cc0f99a3a6c28aabb73f5c3b03acbc"
-  dependencies:
-    debug "^2.6.8"
-    handle-thing "^1.2.5"
-    http-deceiver "^1.2.7"
-    safe-buffer "^5.0.1"
-    select-hose "^2.0.0"
-    spdy-transport "^2.0.18"
-
-split-array@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/split-array/-/split-array-1.0.1.tgz#7d0c10366705f3aa4620529ab755bf7ed2220da1"
-
 split2@^2.0.0:
   version "2.2.0"
   resolved "https://registry.yarnpkg.com/split2/-/split2-2.2.0.tgz#186b2575bcf83e85b7d18465756238ee4ee42493"
@@ -6203,12 +5520,6 @@ strip-bom@^3.0.0:
   version "3.0.0"
   resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
 
-strip-dirs@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/strip-dirs/-/strip-dirs-2.0.0.tgz#610cdb2928200da0004f41dcb90fc95cd919a0b6"
-  dependencies:
-    is-natural-number "^4.0.1"
-
 strip-eof@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
@@ -6227,12 +5538,6 @@ strip-json-comments@~2.0.1:
   version "2.0.1"
   resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
 
-strip-outer@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/strip-outer/-/strip-outer-1.0.0.tgz#aac0ba60d2e90c5d4f275fd8869fd9a2d310ffb8"
-  dependencies:
-    escape-string-regexp "^1.0.2"
-
 styled-jsx@2.1.1:
   version "2.1.1"
   resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-2.1.1.tgz#e7481c7554df50d605cdc84a4e53c58fec3449b5"
@@ -6267,10 +5572,6 @@ symbol-observable@^1.0.1:
   version "1.0.4"
   resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d"
 
-sync-exec@~0.6.x:
-  version "0.6.2"
-  resolved "https://registry.yarnpkg.com/sync-exec/-/sync-exec-0.6.2.tgz#717d22cc53f0ce1def5594362f3a89a2ebb91105"
-
 table@^3.7.8:
   version "3.8.3"
   resolved "https://registry.yarnpkg.com/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f"
@@ -6299,15 +5600,6 @@ tar-pack@^3.4.0:
     tar "^2.2.1"
     uid-number "^0.0.6"
 
-tar-stream@^1.5.2:
-  version "1.5.4"
-  resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.5.4.tgz#36549cf04ed1aee9b2a30c0143252238daf94016"
-  dependencies:
-    bl "^1.0.0"
-    end-of-stream "^1.0.0"
-    readable-stream "^2.0.0"
-    xtend "^4.0.0"
-
 tar@^2.2.1:
   version "2.2.1"
   resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1"
@@ -6326,7 +5618,7 @@ text-extensions@^1.0.0:
   version "1.7.0"
   resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.7.0.tgz#faaaba2625ed746d568a23e4d0aacd9bf08a8b39"
 
-text-table@^0.2.0, text-table@~0.2.0:
+text-table@~0.2.0:
   version "0.2.0"
   resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
 
@@ -6334,7 +5626,7 @@ the-argv@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/the-argv/-/the-argv-1.0.0.tgz#0084705005730dd84db755253c931ae398db9522"
 
-thenify-all@^1.0.0, thenify-all@^1.6.0:
+thenify-all@^1.0.0:
   version "1.6.0"
   resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726"
   dependencies:
@@ -6353,7 +5645,7 @@ through2@^2.0.0, through2@^2.0.2:
     readable-stream "^2.1.5"
     xtend "~4.0.1"
 
-through@2, "through@>=2.2.7 <3", through@^2.3.6, through@~2.3.4:
+through@2, "through@>=2.2.7 <3", through@^2.3.6:
   version "2.3.8"
   resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
 
@@ -6361,10 +5653,6 @@ time-stamp@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-2.0.0.tgz#95c6a44530e15ba8d6f4a3ecb8c3a3fac46da357"
 
-timed-out@^3.0.0:
-  version "3.1.3"
-  resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-3.1.3.tgz#95860bfcc5c76c277f8f8326fd0f5b2e20eba217"
-
 timed-out@^4.0.0:
   version "4.0.1"
   resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f"
@@ -6379,23 +5667,6 @@ tlds@^1.187.0:
   version "1.198.0"
   resolved "https://registry.yarnpkg.com/tlds/-/tlds-1.198.0.tgz#e7413ea5cccb5e1f4de2a1f45230b0c80994a886"
 
-tmp-promise@^1.0.3:
-  version "1.0.3"
-  resolved "https://registry.yarnpkg.com/tmp-promise/-/tmp-promise-1.0.3.tgz#3b450927ab78c6aedca5e628c677f536cae38bc5"
-  dependencies:
-    bluebird "^3.3.1"
-    tmp "0.0.31"
-
-tmp@0.0.31:
-  version "0.0.31"
-  resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7"
-  dependencies:
-    os-tmpdir "~1.0.1"
-
-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"
@@ -6416,7 +5687,7 @@ tough-cookie@~2.3.0, tough-cookie@~2.3.3:
   dependencies:
     punycode "^1.4.1"
 
-travis-after-all@^1.4.4:
+travis-after-all@1.4.5:
   version "1.4.5"
   resolved "https://registry.yarnpkg.com/travis-after-all/-/travis-after-all-1.4.5.tgz#55c0bd9afce2b8dc208ed026aa695fc93f06a65c"
 
@@ -6446,12 +5717,6 @@ trim-off-newlines@^1.0.0:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz#9f9ba9d9efa8764c387698bcbfeb2c848f11adb3"
 
-trim-repeated@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/trim-repeated/-/trim-repeated-1.0.0.tgz#e3646a2ea4e891312bf7eace6cfb05380bc01c21"
-  dependencies:
-    escape-string-regexp "^1.0.2"
-
 trim-right@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003"
@@ -6528,21 +5793,10 @@ 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"
-
 ultron@~1.1.0:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.0.tgz#b07a2e6a541a815fc6a34ccd4533baec307ca864"
 
-unbzip2-stream@^1.0.9:
-  version "1.2.5"
-  resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.2.5.tgz#73a033a567bbbde59654b193c44d48a7e4f43c47"
-  dependencies:
-    buffer "^3.0.1"
-    through "^2.3.6"
-
 underscore.string@~2.2.0rc:
   version "2.2.1"
   resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-2.2.1.tgz#d7c0fa2af5d5a1a67f4253daee98132e733f0f19"
@@ -6565,27 +5819,10 @@ unpipe@1.0.0, unpipe@~1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
 
-unzip-response@^1.0.2:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-1.0.2.tgz#b984f0877fc0a89c2c773cc1ef7b5b232b5b06fe"
-
 unzip-response@^2.0.1:
   version "2.0.1"
   resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97"
 
-update-notifier@^1.0.3:
-  version "1.0.3"
-  resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-1.0.3.tgz#8f92c515482bd6831b7c93013e70f87552c7cf5a"
-  dependencies:
-    boxen "^0.6.0"
-    chalk "^1.0.0"
-    configstore "^2.0.0"
-    is-npm "^1.0.0"
-    latest-version "^2.0.0"
-    lazy-req "^1.1.0"
-    semver-diff "^2.0.0"
-    xdg-basedir "^2.0.0"
-
 update-notifier@^2.1.0:
   version "2.3.0"
   resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.3.0.tgz#4e8827a6bb915140ab093559d7014e3ebb837451"
@@ -6606,17 +5843,13 @@ url-parse-lax@^1.0.0:
   dependencies:
     prepend-http "^1.0.1"
 
-url-regex@^4.0.0:
+url-regex@4.1.1:
   version "4.1.1"
   resolved "https://registry.yarnpkg.com/url-regex/-/url-regex-4.1.1.tgz#a5617b22e15e26dac57ce74c3f52088bcdfec995"
   dependencies:
     ip-regex "^1.0.1"
     tlds "^1.187.0"
 
-url-to-options@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9"
-
 url@0.11.0, url@^0.11.0:
   version "0.11.0"
   resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
@@ -6648,10 +5881,6 @@ uuid@3.1.0, uuid@^3.0.0, uuid@^3.1.0:
   version "3.1.0"
   resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04"
 
-uuid@^2.0.1:
-  version "2.0.3"
-  resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a"
-
 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"
@@ -6677,10 +5906,6 @@ verror@1.10.0:
     core-util-is "1.0.2"
     extsprintf "^1.2.0"
 
-vlq@^0.2.1:
-  version "0.2.3"
-  resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz#8f3e4328cf63b1540c0d67e1b2778386f8975b26"
-
 vm-browserify@0.0.4:
   version "0.0.4"
   resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73"
@@ -6701,12 +5926,6 @@ watchpack@^1.4.0:
     chokidar "^1.7.0"
     graceful-fs "^4.1.2"
 
-wbuf@^1.1.0, wbuf@^1.7.2:
-  version "1.7.2"
-  resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.2.tgz#d697b99f1f59512df2751be42769c1580b5801fe"
-  dependencies:
-    minimalistic-assert "^1.0.0"
-
 webpack-bundle-analyzer@^2.8.3:
   version "2.9.0"
   resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-2.9.0.tgz#b58bc34cc30b27ffdbaf3d00bf27aba6fa29c6e3"
@@ -6829,14 +6048,6 @@ wrappy@1:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
 
-write-file-atomic@^1.1.2:
-  version "1.3.4"
-  resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.3.4.tgz#f807a4f0b1d9e913ae7a48112e6cc3af1991b45f"
-  dependencies:
-    graceful-fs "^4.1.11"
-    imurmurhash "^0.1.4"
-    slide "^1.1.5"
-
 write-file-atomic@^2.0.0:
   version "2.3.0"
   resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.3.0.tgz#1ff61575c2e2a4e8e510d6fa4e243cce183999ab"
@@ -6880,13 +6091,6 @@ write@^0.2.1:
   dependencies:
     mkdirp "^0.5.1"
 
-ws@1.1.2:
-  version "1.1.2"
-  resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.2.tgz#8a244fa052401e08c9886cf44a85189e1fd4067f"
-  dependencies:
-    options ">=0.0.5"
-    ultron "1.0.x"
-
 ws@^2.3.1:
   version "2.3.1"
   resolved "https://registry.yarnpkg.com/ws/-/ws-2.3.1.tgz#6b94b3e447cb6a363f785eaf94af6359e8e81c80"
@@ -6894,24 +6098,10 @@ ws@^2.3.1:
     safe-buffer "~5.0.1"
     ultron "~1.1.0"
 
-wtf-8@1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/wtf-8/-/wtf-8-1.0.0.tgz#392d8ba2d0f1c34d1ee2d630f15d0efb68e1048a"
-
-xdg-basedir@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-2.0.0.tgz#edbc903cc385fc04523d966a335504b5504d1bd2"
-  dependencies:
-    os-homedir "^1.0.0"
-
 xdg-basedir@^3.0.0:
   version "3.0.0"
   resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4"
 
-xmlhttprequest-ssl@1.5.3:
-  version "1.5.3"
-  resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz#185a888c04eca46c3e4070d99f7b49de3528992d"
-
 xo-init@^0.5.0:
   version "0.5.0"
   resolved "https://registry.yarnpkg.com/xo-init/-/xo-init-0.5.0.tgz#8e28dec79676cc5e042fde5fd8f710e2646b0e36"
@@ -6976,6 +6166,24 @@ yargs-parser@^7.0.0:
   dependencies:
     camelcase "^4.1.0"
 
+yargs@9.0.1:
+  version "9.0.1"
+  resolved "https://registry.yarnpkg.com/yargs/-/yargs-9.0.1.tgz#52acc23feecac34042078ee78c0c007f5085db4c"
+  dependencies:
+    camelcase "^4.1.0"
+    cliui "^3.2.0"
+    decamelize "^1.1.1"
+    get-caller-file "^1.0.1"
+    os-locale "^2.0.0"
+    read-pkg-up "^2.0.0"
+    require-directory "^2.1.1"
+    require-main-filename "^1.0.1"
+    set-blocking "^2.0.0"
+    string-width "^2.0.0"
+    which-module "^2.0.0"
+    y18n "^3.2.1"
+    yargs-parser "^7.0.0"
+
 yargs@^8.0.2:
   version "8.0.2"
   resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360"
@@ -7002,14 +6210,3 @@ yargs@~3.10.0:
     cliui "^2.1.0"
     decamelize "^1.0.0"
     window-size "0.1.0"
-
-yauzl@^2.4.2:
-  version "2.8.0"
-  resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.8.0.tgz#79450aff22b2a9c5a41ef54e02db907ccfbf9ee2"
-  dependencies:
-    buffer-crc32 "~0.2.3"
-    fd-slicer "~1.0.1"
-
-yeast@0.1.2:
-  version "0.1.2"
-  resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419"

From cfa1ee820d154d43fb5864e18db725913d24d51a Mon Sep 17 00:00:00 2001
From: Vinay Puppal <me@vinaypuppal.com>
Date: Thu, 19 Oct 2017 01:43:41 +0530
Subject: [PATCH 10/22] move event fetch logic to componentDidMount for static
 export

---
 pages/events.js | 119 ++++++++++++++++++++++++++++--------------------
 1 file changed, 69 insertions(+), 50 deletions(-)

diff --git a/pages/events.js b/pages/events.js
index 2fb36f14e..4643fcf8b 100644
--- a/pages/events.js
+++ b/pages/events.js
@@ -1,6 +1,6 @@
 import React from 'react';
 import fetch from 'isomorphic-unfetch';
-import { Card, Divider } from 'semantic-ui-react';
+import { Card, Divider, Dimmer, Loader } from 'semantic-ui-react';
 
 import publicPage from '../hocs/public-page';
 import {
@@ -11,7 +11,13 @@ import {
 import RowEvent from '../components/row-events';
 
 class Events extends React.Component {
-  static async getInitialProps() {
+  state = {
+    pastEvents: null,
+    futureEvents: null,
+    fetchError: null,
+    loading: true,
+  };
+  async componentDidMount() {
     try {
       const pastEvents = await fetch(
         `${reverseProxyCORS}${pastEventsMeetupURL}`,
@@ -25,21 +31,72 @@ class Events extends React.Component {
         if (res.ok) return res.json();
         throw new Error('Failed to Retrieve Events');
       });
-      return {
+      await this.setState({
         pastEvents,
         futureEvents,
         fetchError: null,
-      };
+        loading: false,
+      });
     } catch (err) {
       console.log(err);
-      return {
+      await this.setState({
         pastEvents: null,
         futureEvents: null,
         fetchError: err.message,
-      };
+        loading: false,
+      });
     }
   }
-
+  renderEvents() {
+    if (this.state.fetchError) {
+      return <div>{this.state.fetchError}</div>;
+    }
+    return (
+      <div>
+        <section>
+          <h2>Upcoming events</h2>
+          <div>
+            {this.state.futureEvents.map(event => (
+              <Card.Group key={event.id}>
+                <RowEvent
+                  name={event.name}
+                  yesCount={event.yes_rsvp_count}
+                  time={event.time}
+                  venue={event.venue}
+                  link={event.link}
+                  status={event.status}
+                />
+              </Card.Group>
+            ))}
+          </div>
+        </section>
+        <Divider />
+        <section>
+          <h2>Recent events</h2>
+          <div>
+            {this.state.pastEvents.map(event => (
+              <Card.Group key={event.id}>
+                <RowEvent
+                  key={event.id}
+                  name={event.name}
+                  yesCount={event.yes_rsvp_count}
+                  time={event.time}
+                  venue={event.venue}
+                  link={event.link}
+                  status={event.status}
+                />
+              </Card.Group>
+            ))}
+          </div>
+        </section>
+        <style jsx>{`
+          section {
+            margin: 50px 0;
+          }
+        `}</style>
+      </div>
+    );
+  }
   render() {
     return (
       <div>
@@ -48,47 +105,12 @@ class Events extends React.Component {
           <h2>Because you cannot change the world alone</h2>
         </div>
         <main>
-          {this.props.fetchError ? (
-            <div>{this.props.fetchError}</div>
+          {this.state.loading ? (
+            <Dimmer active>
+              <Loader indeterminate>Fetching Events</Loader>
+            </Dimmer>
           ) : (
-            <div>
-              <section>
-                <h2>Upcoming events</h2>
-                <div>
-                  {this.props.futureEvents.map(event => (
-                    <Card.Group key={event.id}>
-                      <RowEvent
-                        name={event.name}
-                        yesCount={event.yes_rsvp_count}
-                        time={event.time}
-                        venue={event.venue}
-                        link={event.link}
-                        status={event.status}
-                      />
-                    </Card.Group>
-                  ))}
-                </div>
-              </section>
-              <Divider />
-              <section>
-                <h2>Recent events</h2>
-                <div>
-                  {this.props.pastEvents.map(event => (
-                    <Card.Group key={event.id}>
-                      <RowEvent
-                        key={event.id}
-                        name={event.name}
-                        yesCount={event.yes_rsvp_count}
-                        time={event.time}
-                        venue={event.venue}
-                        link={event.link}
-                        status={event.status}
-                      />
-                    </Card.Group>
-                  ))}
-                </div>
-              </section>
-            </div>
+            this.renderEvents()
           )}
         </main>
         <style jsx>{`
@@ -115,9 +137,6 @@ class Events extends React.Component {
             color: #df1cb5;
             font-weight: 900;
           }
-          section {
-            margin: 50px 0;
-          }
         `}</style>
       </div>
     );

From 3af59eb48861d8088c74a7ca5ad7fb95b3ae3685 Mon Sep 17 00:00:00 2001
From: Vinay Puppal <me@vinaypuppal.com>
Date: Thu, 19 Oct 2017 02:05:28 +0530
Subject: [PATCH 11/22] fix travis error

---
 .travis.yml  |  2 +-
 package.json | 20 ++++++--------------
 2 files changed, 7 insertions(+), 15 deletions(-)

diff --git a/.travis.yml b/.travis.yml
index 96a276358..73c825368 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -2,7 +2,7 @@ sudo: required
 dist: trusty
 language: node_js
 node_js:
-  - '7.7'
+  - '8.6'
 before_install:
   - 'curl -o- -L https://yarnpkg.com/install.sh | bash -s -- --version 0.27.5'
   - 'export PATH="$HOME/.yarn/bin:$PATH"'
diff --git a/package.json b/package.json
index a61c0f089..d171d6542 100644
--- a/package.json
+++ b/package.json
@@ -5,34 +5,26 @@
   "main": "index.js",
   "scripts": {
     "test": "xo",
-    "lint": "prettier 'utils/**/*.js' 'components/**/*.js' 'pages/**/*.js' 'lib/**/*.js' 'hocs/**/*.js' '*.js' --write --single-quote --print-width='80' --trailing-comma='all' && xo --fix",
+    "lint":
+      "prettier 'utils/**/*.js' 'components/**/*.js' 'pages/**/*.js' 'lib/**/*.js' 'hocs/**/*.js' '*.js' --write --single-quote --print-width='80' --trailing-comma='all' && xo --fix",
     "precommit": "lint-staged",
     "analyze": "cross-env ANALYZE=1 next build",
     "dev": "cross-env NODE_ENV=development next",
     "start": "cross-env NODE_ENV=production next start",
     "build": "next build",
-    "export": "yarn build && next export"
+    "export": "cross-env NODE_ENV=production yarn build && next export"
   },
   "xo": {
     "parser": "babel-eslint",
-    "extends": [
-      "prettier",
-      "prettier/react",
-      "plugin:react/recommended"
-    ],
-    "env": [
-      "browser",
-      "node"
-    ],
+    "extends": ["prettier", "prettier/react", "plugin:react/recommended"],
+    "env": ["browser", "node"],
     "rules": {
       "linebreak-style": 0,
       "react/display-name": 0,
       "react/prop-types": 0
     },
     "space:": 2,
-    "ignores": [
-      "next.config.js"
-    ]
+    "ignores": ["next.config.js"]
   },
   "lint-staged": {
     "*.js": [

From 39581c765c554c043c0c34036a7f56610532531f Mon Sep 17 00:00:00 2001
From: Vinay Puppal <me@vinaypuppal.com>
Date: Thu, 19 Oct 2017 02:13:51 +0530
Subject: [PATCH 12/22] fix typo

---
 .travis.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.travis.yml b/.travis.yml
index 73c825368..ea020a6e7 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -8,7 +8,7 @@ before_install:
   - 'export PATH="$HOME/.yarn/bin:$PATH"'
 cache: yarn
 after_script:
-  - yarn export && cd out && NOW_ALIAS=coderplex-app.now.sh ../scripts/now -p
+  - yarn export && cd out && NOW_ALIAS=coderplex-app.now.sh node ../scripts/now.js -p
 branches:
   only:
     - master

From 8bbcfda8510def5f56501caf0813013fad24230e Mon Sep 17 00:00:00 2001
From: Vinay Puppal <me@vinaypuppal.com>
Date: Thu, 19 Oct 2017 03:15:18 +0530
Subject: [PATCH 13/22] allow travis to comment with deployed url after build
 succeded

---
 scripts/now.js | 40 ++++++++++++++++++++++++++++++++++++----
 1 file changed, 36 insertions(+), 4 deletions(-)

diff --git a/scripts/now.js b/scripts/now.js
index 6e8795317..8c9e4f306 100644
--- a/scripts/now.js
+++ b/scripts/now.js
@@ -1,5 +1,5 @@
 #! /usr/bin/env node
-
+/* eslint-disable camelcase */
 const github = require('octonode');
 const normalizeUrl = require('normalize-url');
 const spawn = require('cross-spawn');
@@ -26,6 +26,14 @@ if (!nowToken) {
 
 const client = github.client(githubToken);
 const ghRepo = client.repo(process.env.TRAVIS_REPO_SLUG);
+let ghPR;
+
+if (process.env.TRAVIS_PULL_REQUEST) {
+  ghPR = client.pr(
+    process.env.TRAVIS_REPO_SLUG,
+    process.env.TRAVIS_PULL_REQUEST,
+  );
+}
 
 function noop() {}
 
@@ -46,7 +54,15 @@ function deploy(context, sha) {
     noop,
   );
 
-  const args = ['--token', nowToken, '--no-clipboard'];
+  const args = [
+    '--token',
+    nowToken,
+    '--team',
+    'coderplex',
+    '--no-clipboard',
+    '-n',
+    'coderplex-app',
+  ];
   const alias = context === 'production' && process.env.NOW_ALIAS;
   let stdout = '';
 
@@ -84,18 +100,34 @@ function deploy(context, sha) {
   });
 
   child.on('close', () => {
-    const targetUrl = alias || getUrl(stdout);
+    const target_url = alias || getUrl(stdout);
 
     ghRepo.status(
       sha,
       {
         context,
-        targetUrl,
+        target_url,
         state: 'success',
         description: `Δ Now ${context} deployment complete`,
       },
       noop,
     );
+    if (ghPR) {
+      const comment = `
+      ### Δ Now ${context} deployment complete
+      - ✅ **Build Passed**
+      - 🚀 **Staging URL** : ${target_url}
+      --- 
+      Note: **This is autogenerated through Travis build**
+    `;
+      ghPR.createComment(
+        {
+          body: comment,
+          commit_id: process.env.TRAVIS_COMMIT,
+        },
+        noop,
+      );
+    }
   });
 }
 

From 4fd07c6767f62d0eef41b8993a79823624110efa Mon Sep 17 00:00:00 2001
From: Vinay Puppal <me@vinaypuppal.com>
Date: Thu, 19 Oct 2017 03:25:33 +0530
Subject: [PATCH 14/22] remove commitId to check if it creates comment

---
 scripts/now.js | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/scripts/now.js b/scripts/now.js
index 8c9e4f306..d8d86eeb7 100644
--- a/scripts/now.js
+++ b/scripts/now.js
@@ -123,10 +123,11 @@ function deploy(context, sha) {
       ghPR.createComment(
         {
           body: comment,
-          commit_id: process.env.TRAVIS_COMMIT,
         },
         noop,
       );
+    } else {
+      console.log('No PR found');
     }
   });
 }

From 715048ae93b4827dc3b0b1ffdc532ad584e20e83 Mon Sep 17 00:00:00 2001
From: Vinay Puppal <me@vinaypuppal.com>
Date: Thu, 19 Oct 2017 03:34:49 +0530
Subject: [PATCH 15/22] add some debug info for travis logs

---
 scripts/now.js | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/scripts/now.js b/scripts/now.js
index d8d86eeb7..39639f798 100644
--- a/scripts/now.js
+++ b/scripts/now.js
@@ -24,6 +24,8 @@ if (!nowToken) {
   throw new Error('Missing required environment variable NOW_TOKEN');
 }
 
+console.log(process.env.TRAVIS_PULL_REQUEST);
+
 const client = github.client(githubToken);
 const ghRepo = client.repo(process.env.TRAVIS_REPO_SLUG);
 let ghPR;

From 2c69ae1f78edc45850ff2371df3ce88a05f49b7e Mon Sep 17 00:00:00 2001
From: Vinay Puppal <me@vinaypuppal.com>
Date: Thu, 19 Oct 2017 04:38:58 +0530
Subject: [PATCH 16/22] test again if comment works from travis

---
 scripts/now.js | 34 ++++++++++++++++------------------
 1 file changed, 16 insertions(+), 18 deletions(-)

diff --git a/scripts/now.js b/scripts/now.js
index 39639f798..32c8cd170 100644
--- a/scripts/now.js
+++ b/scripts/now.js
@@ -1,5 +1,6 @@
 #! /usr/bin/env node
 /* eslint-disable camelcase */
+console.log(`PR: ${process.env.TRAVIS_PULL_REQUEST}`);
 const github = require('octonode');
 const normalizeUrl = require('normalize-url');
 const spawn = require('cross-spawn');
@@ -24,7 +25,7 @@ if (!nowToken) {
   throw new Error('Missing required environment variable NOW_TOKEN');
 }
 
-console.log(process.env.TRAVIS_PULL_REQUEST);
+console.log(`PR: ${process.env.TRAVIS_PULL_REQUEST}`);
 
 const client = github.client(githubToken);
 const ghRepo = client.repo(process.env.TRAVIS_REPO_SLUG);
@@ -41,7 +42,7 @@ function noop() {}
 
 function getUrl(content) {
   const urls = content.match(urlRegex()) || [];
-
+  console.log(`PR: ${process.env.TRAVIS_PULL_REQUEST}`);
   return urls.map(url => normalizeUrl(url.trim().replace(/\.+$/, '')))[0];
 }
 
@@ -103,24 +104,11 @@ function deploy(context, sha) {
 
   child.on('close', () => {
     const target_url = alias || getUrl(stdout);
-
-    ghRepo.status(
-      sha,
-      {
-        context,
-        target_url,
-        state: 'success',
-        description: `Δ Now ${context} deployment complete`,
-      },
-      noop,
-    );
     if (ghPR) {
       const comment = `
-      ### Δ Now ${context} deployment complete
-      - ✅ **Build Passed**
-      - 🚀 **Staging URL** : ${target_url}
-      --- 
-      Note: **This is autogenerated through Travis build**
+      Δ Now ${context} deployment complete
+      Staging URL : ${target_url}
+      Note: This is autogenerated through Travis build
     `;
       ghPR.createComment(
         {
@@ -131,6 +119,16 @@ function deploy(context, sha) {
     } else {
       console.log('No PR found');
     }
+    ghRepo.status(
+      sha,
+      {
+        context,
+        target_url,
+        state: 'success',
+        description: `Δ Now ${context} deployment complete`,
+      },
+      noop,
+    );
   });
 }
 

From b94be172b9fc839cd088d76288f5da8f6f95f3b3 Mon Sep 17 00:00:00 2001
From: Vinay Puppal <me@vinaypuppal.com>
Date: Thu, 19 Oct 2017 04:46:09 +0530
Subject: [PATCH 17/22] test again if comment works from travis

---
 scripts/now.js | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/scripts/now.js b/scripts/now.js
index 32c8cd170..ef0327d0d 100644
--- a/scripts/now.js
+++ b/scripts/now.js
@@ -104,17 +104,17 @@ function deploy(context, sha) {
 
   child.on('close', () => {
     const target_url = alias || getUrl(stdout);
+    console.log(`PR: ${process.env.TRAVIS_PULL_REQUEST}`);
     if (ghPR) {
-      const comment = `
-      Δ Now ${context} deployment complete
-      Staging URL : ${target_url}
-      Note: This is autogenerated through Travis build
-    `;
+      const comment = `(Note: This is autogenerated through Travis build) New Staging URL : ${target_url}`;
+      console.log(comment);
       ghPR.createComment(
         {
           body: comment,
         },
-        noop,
+        (err, res) => {
+          console.log(err, res);
+        },
       );
     } else {
       console.log('No PR found');

From 1e4ee116e09f5ed454ba918a60cf07e1cb233c77 Mon Sep 17 00:00:00 2001
From: Vinay Puppal <me@vinaypuppal.com>
Date: Thu, 19 Oct 2017 05:06:47 +0530
Subject: [PATCH 18/22] add missing in_reply_to field for creating comments

---
 scripts/now.js | 1 +
 1 file changed, 1 insertion(+)

diff --git a/scripts/now.js b/scripts/now.js
index ef0327d0d..d6b1f8e9c 100644
--- a/scripts/now.js
+++ b/scripts/now.js
@@ -111,6 +111,7 @@ function deploy(context, sha) {
       ghPR.createComment(
         {
           body: comment,
+          in_reply_to: 1,
         },
         (err, res) => {
           console.log(err, res);

From 9a839e0d7ca69ef23b7ab255bfabbb61921438c7 Mon Sep 17 00:00:00 2001
From: Vinay Puppal <me@vinaypuppal.com>
Date: Thu, 19 Oct 2017 05:19:56 +0530
Subject: [PATCH 19/22] test again if comment works from travis

---
 scripts/now.js | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/scripts/now.js b/scripts/now.js
index d6b1f8e9c..4b5bf8560 100644
--- a/scripts/now.js
+++ b/scripts/now.js
@@ -1,6 +1,5 @@
 #! /usr/bin/env node
 /* eslint-disable camelcase */
-console.log(`PR: ${process.env.TRAVIS_PULL_REQUEST}`);
 const github = require('octonode');
 const normalizeUrl = require('normalize-url');
 const spawn = require('cross-spawn');
@@ -25,7 +24,7 @@ if (!nowToken) {
   throw new Error('Missing required environment variable NOW_TOKEN');
 }
 
-console.log(`PR: ${process.env.TRAVIS_PULL_REQUEST}`);
+console.log(process.env.TRAVIS_PULL_REQUEST);
 
 const client = github.client(githubToken);
 const ghRepo = client.repo(process.env.TRAVIS_REPO_SLUG);
@@ -42,7 +41,7 @@ function noop() {}
 
 function getUrl(content) {
   const urls = content.match(urlRegex()) || [];
-  console.log(`PR: ${process.env.TRAVIS_PULL_REQUEST}`);
+
   return urls.map(url => normalizeUrl(url.trim().replace(/\.+$/, '')))[0];
 }
 
@@ -104,14 +103,18 @@ function deploy(context, sha) {
 
   child.on('close', () => {
     const target_url = alias || getUrl(stdout);
-    console.log(`PR: ${process.env.TRAVIS_PULL_REQUEST}`);
     if (ghPR) {
-      const comment = `(Note: This is autogenerated through Travis build) New Staging URL : ${target_url}`;
-      console.log(comment);
+      const comment = `
+      ### Δ Now ${context} deployment complete
+      - ✅ **Build Passed**
+      - 🚀 **Staging URL** : ${target_url}
+      --- 
+      Note: **This is autogenerated through Travis build**
+    `;
       ghPR.createComment(
         {
           body: comment,
-          in_reply_to: 1,
+          in_reply_to: 147402206,
         },
         (err, res) => {
           console.log(err, res);

From 41caf4e5bf7f6caedf89530313dd90f7d1205fda Mon Sep 17 00:00:00 2001
From: Vinay Puppal <me@vinaypuppal.com>
Date: Thu, 19 Oct 2017 05:24:43 +0530
Subject: [PATCH 20/22] test again if comment works from travis

---
 scripts/now.js | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/scripts/now.js b/scripts/now.js
index 4b5bf8560..7c4ac866c 100644
--- a/scripts/now.js
+++ b/scripts/now.js
@@ -31,7 +31,7 @@ const ghRepo = client.repo(process.env.TRAVIS_REPO_SLUG);
 let ghPR;
 
 if (process.env.TRAVIS_PULL_REQUEST) {
-  ghPR = client.pr(
+  ghPR = client.issue(
     process.env.TRAVIS_REPO_SLUG,
     process.env.TRAVIS_PULL_REQUEST,
   );
@@ -114,7 +114,6 @@ function deploy(context, sha) {
       ghPR.createComment(
         {
           body: comment,
-          in_reply_to: 147402206,
         },
         (err, res) => {
           console.log(err, res);

From 266143748a281af8ef33fb283ee70acb3204408f Mon Sep 17 00:00:00 2001
From: Vinay Puppal <me@vinaypuppal.com>
Date: Thu, 19 Oct 2017 05:50:59 +0530
Subject: [PATCH 21/22] add coderplex-bot and test finally

---
 .travis.yml    | 8 +++++---
 scripts/now.js | 9 ++-------
 2 files changed, 7 insertions(+), 10 deletions(-)

diff --git a/.travis.yml b/.travis.yml
index ea020a6e7..3934f143c 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -8,13 +8,15 @@ before_install:
   - 'export PATH="$HOME/.yarn/bin:$PATH"'
 cache: yarn
 after_script:
-  - yarn export && cd out && NOW_ALIAS=coderplex-app.now.sh node ../scripts/now.js -p
+  - >-
+    yarn export && cd out && NOW_ALIAS=coderplex-app.now.sh node
+    ../scripts/now.js -p
 branches:
   only:
     - master
 env:
   global:
     - secure: >-
-        n+2Hmo9EXQf8+fxOeVzF13eRG6LyQz0A0y+GEtwySLzHkJkOdLX1UkD9BqVKwt2DgkQXzis5LF4OOAUOO2EnOjkq7bJB/vHQGWywNlQ3vuvm5m7F+EIWwBtNJHJMjEGiwUF9C6FiX2dPYiGgfkWWXEZ74P+oEOEFuQst1dj4197IU+SOcgME7iQLX+N/PWOty0o3el6I8fKkgMNnnpTkmPwuYPBixicnH6lNBURAixMZsEhfZbdl6L9/uAoEz3pPQDbOOlorgDESzwseLADcHnrUtRz9Pl2C4YzRXSkf5iiJWWbcGGzTymROnwH1T8baTtzEdeUslOHIvpA8oYjq8Vtmq0tTllIM5Pc05h1Zdbd/dqvVE6bXzjzC1ddKJawP3avG/ZnS9WrVhg+nXLH4Ic9ULVjbdxYa61SGjAWevaA5vWj2FwEjF1FscbYSNP9SCpp4P2ehYw1JDWEygfOqWzn1MH+fD2ffFrHi/+q7CF99o85dQrDXIeGQ6Oii8JU08FtIUfGyQmDXb2xDF1SoIFlKrUL8R/oJZ9GmvKhOFmDtPvqtL93/WA+K72PHTL1PcMpo8NgZjPc+2EzhQbpCLSSUgvoG+1Y0c9DCF5NEjlxUa9h1PqiHw18NVOctZ7q0zPDL2dpqqKedbOqWb/Q9cg7oebEDWowlHlFRrlnfpsk=
+        nDYIe5Cw1FgD1Iqv2FKRG5Q6Jvvml4ovKPjMRD3BBWinPHe6xbZGtPi0P/Jqt6PFmu5o3aiWQO4ffYnFYUW8N8Tu86RMr0sLQ7Sv6MiE0JxL+7Y+VBZ9h1i9MARiTFQRUw9lrToNa13bnuGy5YNfx4nVUo63vluRTCW6AZd0h01tgEjbhTAamWf1z/n26ACMNJSr2iQ7coakLwpsQvdXMcUe5tAduzoQtLb8DiXdbXO+D7Oepl4dQvOfosa14wW5Z6MN6Y/AxxJ246Cngm3hgZF7IpLCD49H7shXHHSaIcYkJtnSRozKSBEdz34+Jqw+278vcWOA4n2advAhWd2oCAUa0drmu8Nu2Obtrx4oAUQhDwBxfQhbmXpen2Ry5DKp86AurTxgXc+n6bPfjwGdjha2u6cd1fCwpTu5pgnOeX101U/Bu68tAz/EIErCDxHDW/WyrBkVKG3rkABjv3pse4ZJuMy3eeKp+8o2P29b77GHxhKdEw4SvZSfdfnVooABcC6p/sqcumuTvJn20AZkBdhuxGDYSEfNecKPAEHRV8nUQUbMVT7bImQAgl4O4QhHcOfrthbNnQJM94DX0Z2xRQ5sdRmzhe4Ob771EUByNdMO7k2O1KsJAWQ78KhTdOJKoiIp2sH9zRGCTjnTIoCDJx4zBTGHpqV0+R4ltth7T4Q=
     - secure: >-
-        RnukVdPtXialGJRvYoJVelRPmyU9ZOE7+be9ec1fndOrWQCiymurQob1jFMSEQ8mqN7YAEXnfzXJcDmXAGcvoWJBHsmM0tXAndsPCVASOs7ZdREZ/HX5Z/g6V+RcRn6ldgGoon6YVwKJ/lSwT/X2dKuSa/QljdAzEpMA7uwKKniDNMv6Yl1I7sMb37ulC2em5e28PMCbVoyNTrPik7dJxA0aJh5zeQcTOZdiBR6sSkUZ33RvAg4M9reRWvtNfwM/SPlmirFCzSy6LL0mwsBhmoBe01bz2hs0wvoF1QzK7I2Q5MWa2A/0iY9tn0dNiaalmxJTQDkEv2IDlznXr+B+FznOQMs2KNoUtkJ4shWw+57dhrfw8eN7LJZzOYAdcx+75KRO3Z0dOkip6ykxr/sNmFKW5pASOfdeXDPtS3B7bCGMnO24kOrUSQUmIMA5kzwb+3PeHzDoGVnJbBjHgDz0VVMxjql3clw1Ci3DuqsQ9e/eWW4JpaciTsjIUk4uVLVMoDrWcBLcqkQE4b9VyoGx9m4Rj+z3mWscHQF4i/COhYOhYukeCgzeXZuJeQoKmYspBNq0R5jcJWnmtZ5Lc19+QCP86DGyZGcDCBpp2CRn8nslUDh8jXfwXC55rlmb7p3oN9sgXrDjPaFTfdZDHdPwjXx5PDJQJkHANjpAQuO2fr4=
+        Gj+PgZbNTBJ4C/5WZPjMicUWYJCt+gVnuDNjJCyahqFOOHvTowl3WKoeRwxSf/it9xqW/su6JrehgQixn0OVhkVWL8FVgs5TCvFtFBdYTHTrPIi+2T0sulp/NscsDG2hh3d6WD+AnC4u5QtRkTuh7IZEpLkRTHBwedRhfjvPOQaaT5wZCVMiPrscRhsNHJ4pTl2lEyU0BaLCxWkuAysWw5i7ZhxwtDNZroDuyIqhtJbJIXD9DkPQOuekJGyk+hqXJ7EdtHudltnh4M3Q44799k6n0NQIhjmkF5IZHnZVCKrZh+L0I/xyLU1WbY1uU4fShneryziFzKSAuDobmMC/z/kq/apSbPWuILeY5IMR/33NCz4dcb1bJG5IwCo35NHrqwfxElCkX9L1IyodCVXnZbC5jmwbbqyFHIPlmIUGhRxQyebZrXVGbJe8gHx4aMLpWeDrKL2PqbPOZkwfdDX/sbxhLjChUF6Pr9xFSQ12K/k17peE7KtpHpeIzDs2W0suQlm+/yH9auqUKXrrPp63U61gEY5TQzvBoUa7eTCOxdhTJqFhQw6DmFNDT2Qv06XiSbRt+L+N/EHQDljOADaw+0Z8LbOWa90l8klLIgsNvy8mzPx+kFieLeSh5ShlTguvNBQBK+bsLigc1/5Q3B62HEqLzY8piw+X4SLaHvdTeK8=
diff --git a/scripts/now.js b/scripts/now.js
index 7c4ac866c..050793bd1 100644
--- a/scripts/now.js
+++ b/scripts/now.js
@@ -104,13 +104,8 @@ function deploy(context, sha) {
   child.on('close', () => {
     const target_url = alias || getUrl(stdout);
     if (ghPR) {
-      const comment = `
-      ### Δ Now ${context} deployment complete
-      - ✅ **Build Passed**
-      - 🚀 **Staging URL** : ${target_url}
-      --- 
-      Note: **This is autogenerated through Travis build**
-    `;
+      const comment = `Δ Now ${context} deployment complete\n- ✅ **Build Passed**\n- 🚀 **Staging URL** : ${target_url}\n---\nNote: **This is autogenerated through Travis build**`;
+      console.log(comment);
       ghPR.createComment(
         {
           body: comment,

From d2a7ebc41ada2dfe8f408100b859fcc01eb94cd7 Mon Sep 17 00:00:00 2001
From: Vinay Puppal <me@vinaypuppal.com>
Date: Thu, 19 Oct 2017 07:12:08 +0530
Subject: [PATCH 22/22] update blog url

---
 components/header.js | 2 +-
 scripts/now.js       | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/components/header.js b/components/header.js
index 8fc311907..5951ba474 100644
--- a/components/header.js
+++ b/components/header.js
@@ -47,7 +47,7 @@ export default props => {
     },
     {
       title: 'Blog',
-      path: 'https://medium.com/freecodecamp-hyderabad',
+      path: 'https://medium.com/coderplex',
       external: true,
     },
   ];
diff --git a/scripts/now.js b/scripts/now.js
index 050793bd1..159dad419 100644
--- a/scripts/now.js
+++ b/scripts/now.js
@@ -104,7 +104,7 @@ function deploy(context, sha) {
   child.on('close', () => {
     const target_url = alias || getUrl(stdout);
     if (ghPR) {
-      const comment = `Δ Now ${context} deployment complete\n- ✅ **Build Passed**\n- 🚀 **Staging URL** : ${target_url}\n---\nNote: **This is autogenerated through Travis build**`;
+      const comment = `### New Δ Now ${context} deployment complete\n- ✅ **Build Passed**\n- 🚀 **Staging URL** : ${target_url}\n---\nNote: **This is autogenerated through Travis build**`;
       console.log(comment);
       ghPR.createComment(
         {