diff --git a/packages/normalized-styled-components/test/__snapshots__/index.js.snap b/packages/normalized-styled-components/test/__snapshots__/index.js.snap index 9ed3f0f6..4b08ff09 100644 --- a/packages/normalized-styled-components/test/__snapshots__/index.js.snap +++ b/packages/normalized-styled-components/test/__snapshots__/index.js.snap @@ -109,7 +109,7 @@ exports[`renders correctly 1`] = ` exports[`renders correctly 1`] = ` .NmzmU { - font-family: monospace, monospace; + font-family: monospace,monospace; font-size: 1rem; } @@ -245,7 +245,7 @@ exports[`renders correctly 1`] = ` exports[`renders correctly 1`] = ` .cNQErp { - font-family: monospace, monospace; + font-family: monospace,monospace; font-size: 1rem; } @@ -325,7 +325,7 @@ exports[`renders correctly 1`] = ` exports[`renders
 correctly 1`] = `
 .ePyiae {
-  font-family: monospace, monospace;
+  font-family: monospace,monospace;
   font-size: 1rem;
 }
 
@@ -347,7 +347,7 @@ exports[`renders  correctly 1`] = `
 
 exports[`renders  correctly 1`] = `
 .brPjlW {
-  font-family: monospace, monospace;
+  font-family: monospace,monospace;
   font-size: 1rem;
 }
 
diff --git a/packages/portal-api/lib/data/index.js b/packages/portal-api/lib/data/index.js
index b77e3094..0beed6a6 100644
--- a/packages/portal-api/lib/data/index.js
+++ b/packages/portal-api/lib/data/index.js
@@ -10,6 +10,7 @@ const Util = require('util');
 const DockerClient = require('docker-compose-client');
 const Dockerode = require('dockerode');
 const Hoek = require('hoek');
+const Boom = require('boom');
 const Triton = require('triton');
 const ParamCase = require('param-case');
 const Penseur = require('penseur');
@@ -63,6 +64,16 @@ const internals = {
 
       resolve(...args);
     };
+  },
+  fromKeyValueToDict: (kv) => {
+    return kv.reduce((acc, { name, value }) => {
+      return Object.assign(acc, {
+        [name]: value
+      });
+    }, {});
+  },
+  isNotFound: (err) => {
+    return err && (err['typeof'] === Boom.notFound);
   }
 };
 
@@ -113,15 +124,6 @@ class Data extends EventEmitter {
     });
   }
 
-  fromKeyValueToDict (kv) {
-    return kv.reduce((acc, { name, value }) => {
-      return Object.assign(acc, {
-        [name]: value
-      });
-    }, {});
-  }
-
-
   // portals
 
   createPortal (clientPortal, cb) {
@@ -352,6 +354,10 @@ class Data extends EventEmitter {
         return cb(err);
       }
 
+      if ((ids || name || slug) && (!deploymentGroups || !deploymentGroups.length)) {
+        return cb(Boom.notFound());
+      }
+
       if (!deploymentGroups || !deploymentGroups.length) {
         return cb(null, []);
       }
@@ -385,7 +391,7 @@ class Data extends EventEmitter {
       }
 
       if (!deploymentGroups || !deploymentGroups.length) {
-        return cb();
+        return cb(Boom.notFound());
       }
 
       cb(null, Transform.fromDeploymentGroup(this._getDeploymentGroupFns(deploymentGroups[0])));
@@ -407,9 +413,17 @@ class Data extends EventEmitter {
       VAsync.parallel({
         funcs: [
           (cb) => {
+            if (!res.dg) {
+              return cb();
+            }
+
             this._db.deployment_groups.remove({ id }, cb);
           },
           (cb) => {
+            if (!res.services) {
+              return cb();
+            }
+
             VAsync.forEachParallel({
               inputs: res.services,
               func: ({ id }, next) => {
@@ -418,6 +432,10 @@ class Data extends EventEmitter {
             });
           },
           (cb) => {
+            if (!res.instances) {
+              return cb();
+            }
+
             VAsync.forEachParallel({
               inputs: res.instances,
               func: ({ id }, next) => {
@@ -451,16 +469,28 @@ class Data extends EventEmitter {
       funcs: [
         (cb) => {
           this.getDeploymentGroup({ id }, (err, dg) => {
+            if (internals.isNotFound(err)) {
+              return cb(null, {});
+            }
+
             cb(err, { dg });
           });
         },
         (cb) => {
           this.getServices({ deploymentGroupId: id }, (err, services) => {
+            if (internals.isNotFound(err)) {
+              return cb(null, {});
+            }
+
             cb(err, { services });
           });
         },
         (cb) => {
           this.getInstances({ deploymentGroupId: id }, (err, instances) => {
+            if (internals.isNotFound(err)) {
+              return cb(null, {});
+            }
+
             cb(err, { instances });
           });
         },
@@ -735,7 +765,7 @@ class Data extends EventEmitter {
         this._dockerCompose.scale({
           projectName: ctx.deploymentGroup.name,
           environment: ctx.manifest.environment,
-          files: this.fromKeyValueToDict(ctx.manifest.files),
+          files: internals.fromKeyValueToDict(ctx.manifest.files),
           manifest: ctx.manifest.raw,
           services: {
             [ctx.service.name]: replicas
@@ -1175,7 +1205,7 @@ class Data extends EventEmitter {
         name: serviceName,
         deploymentGroupId: ctx.currentDeploymentGroup.id
       }, (err, services = []) => {
-        if (err) {
+        if (err && !internals.isNotFound(err)) {
           return next(err);
         }
 
@@ -1247,7 +1277,7 @@ class Data extends EventEmitter {
         this._dockerCompose.provision({
           projectName: ctx.currentDeploymentGroup.name,
           environment: clientManifest.environment,
-          files: this.fromKeyValueToDict(clientManifest.files),
+          files: internals.fromKeyValueToDict(clientManifest.files),
           manifest: ctx.newManifest.raw
         }, handleProvisionResponse);
       });
@@ -1446,7 +1476,7 @@ class Data extends EventEmitter {
 
       if (!services || !services.length) {
         console.log(`-> Service ${Util.inspect(query)} not found`);
-        return cb();
+        return cb(Boom.notFound());
       }
 
       const service = services.shift();
@@ -1474,7 +1504,7 @@ class Data extends EventEmitter {
       }
 
       if (!deploymentGroup) {
-        return cb(null, {});
+        return cb(Boom.notFound());
       }
 
       return this.getServices({ deploymentGroupId: deploymentGroup.id }, cb);
@@ -1512,6 +1542,10 @@ class Data extends EventEmitter {
         return cb(err);
       }
 
+      if (((options.ids && options.ids.length) || query.name || query.slug) && (!services || !services.length)) {
+        return cb(Boom.notFound());
+      }
+
       if (!services || !services.length) {
         return cb();
       }
@@ -1928,7 +1962,11 @@ class Data extends EventEmitter {
         return cb(err);
       }
 
-      cb(null, instance ? Transform.fromInstance(instance) : {});
+      if (!instance) {
+        return cb(Boom.notFound());
+      }
+
+      cb(null, Transform.fromInstance(instance));
     });
   }
 
@@ -1956,6 +1994,10 @@ class Data extends EventEmitter {
         return cb(err);
       }
 
+      if (((ids && ids.length) || name || machineId) && (!instances || !instances.length)) {
+        return cb(Boom.notFound());
+      }
+
       if (!instances || !instances.length) {
         return cb(null, []);
       }
@@ -2100,7 +2142,11 @@ class Data extends EventEmitter {
         return cb(err);
       }
 
-      cb(null, dbPackage ? Transform.fromPackage(dbPackage) : {});
+      if (!dbPackage) {
+        return cb(Boom.notFound());
+      }
+
+      cb(null, Transform.fromPackage(dbPackage));
     });
   }
 
@@ -2129,7 +2175,7 @@ class Data extends EventEmitter {
     this._dockerCompose.config({
       projectName: deploymentGroupName,
       environment,
-      files: this.fromKeyValueToDict(files),
+      files: internals.fromKeyValueToDict(files),
       manifest: raw
     }, (err, config = {}) => {
       if (err) {
diff --git a/packages/portal-api/lib/watch/machines.js b/packages/portal-api/lib/watch/machines.js
index 7b7b2cbd..748d02de 100644
--- a/packages/portal-api/lib/watch/machines.js
+++ b/packages/portal-api/lib/watch/machines.js
@@ -4,6 +4,7 @@
 const TritonWatch = require('triton-watch');
 const Get = require('lodash.get');
 const Find = require('lodash.find');
+const Boom = require('boom');
 const Util = require('util');
 const ForceArray = require('force-array');
 const VAsync = require('vasync');
@@ -52,6 +53,10 @@ const SERVICE_DELETING_STATUSES = [
   'UNKNOWN'
 ];
 
+const isNotFound = (err) => {
+  return err && (err['typeof'] === Boom.notFound);
+};
+
 module.exports = class MachineWatcher {
   constructor (options) {
     options = options || {};
@@ -568,8 +573,8 @@ module.exports = class MachineWatcher {
       service,
       deploymentGroup
     }, cb) => {
-      this.getInstances(service, (err, instances) => {
-        if (err) {
+      this.getInstances(service, (err, instances = []) => {
+        if (err && !isNotFound(err)) {
           return cb(err);
         }
 
@@ -595,15 +600,15 @@ module.exports = class MachineWatcher {
         serviceName,
         deploymentGroupId: deploymentGroup.id
       }, (err, service) => {
-        if (err) {
-          return cb(err);
-        }
-
-        if (!service) {
+        if (isNotFound(err) || !service) {
           console.error(`Service "${serviceName}" form DeploymentGroup "${deploymentGroupName}" for machine ${id} not found`);
           return cb();
         }
 
+        if (err) {
+          return cb(err);
+        }
+
         getInstancesAndVersion({
           service,
           deploymentGroup
@@ -614,13 +619,13 @@ module.exports = class MachineWatcher {
     // assert that project managed by this portal
     // also, lock into `deploymentGroupId` queue
     this.getDeploymentGroup(deploymentGroupName, (err, deploymentGroup) => {
-      if (err) {
-        console.error(err);
+      if (isNotFound(err) || !deploymentGroup) {
+        console.error(`DeploymentGroup "${deploymentGroupName}" for machine ${id} not found`);
         return;
       }
 
-      if (!deploymentGroup) {
-        console.error(`DeploymentGroup "${deploymentGroupName}" for machine ${id} not found`);
+      if (err) {
+        console.error(err);
         return;
       }
 
diff --git a/yarn.lock b/yarn.lock
index 44fc80cc..425ee125 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1378,12 +1378,18 @@ babylon@~5.8.3:
   version "5.8.38"
   resolved "https://registry.yarnpkg.com/babylon/-/babylon-5.8.38.tgz#ec9b120b11bf6ccd4173a18bf217e60b79859ffd"
 
-backoff@2.4.1, backoff@^2.4.1:
+backoff@2.4.1:
   version "2.4.1"
   resolved "https://registry.yarnpkg.com/backoff/-/backoff-2.4.1.tgz#2f68c50e0dd789dbefe24200a62efb04d2456d68"
   dependencies:
     precond "0.2"
 
+backoff@^2.4.1:
+  version "2.5.0"
+  resolved "https://registry.yarnpkg.com/backoff/-/backoff-2.5.0.tgz#f616eda9d3e4b66b8ca7fca79f695722c5f8e26f"
+  dependencies:
+    precond "0.2"
+
 bail@^1.0.0:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.2.tgz#f7d6c1731630a9f9f0d4d35ed1f962e2074a1764"
@@ -1527,7 +1533,11 @@ breeze-async@0.1.0:
   version "0.1.0"
   resolved "https://registry.yarnpkg.com/breeze-async/-/breeze-async-0.1.0.tgz#ba4265949980a3d9d8bb9137a61a42e1f87da73a"
 
-breeze-nexttick@*, breeze-nexttick@0.1.0:
+breeze-nexttick@*:
+  version "0.2.1"
+  resolved "https://registry.yarnpkg.com/breeze-nexttick/-/breeze-nexttick-0.2.1.tgz#1e0b82f45eab600d84f0e91f16aef8d65b2dfbab"
+
+breeze-nexttick@0.1.0:
   version "0.1.0"
   resolved "https://registry.yarnpkg.com/breeze-nexttick/-/breeze-nexttick-0.1.0.tgz#d68a56655045d205cb6e36bfaf3c6b2b2c438b2a"
 
@@ -1753,7 +1763,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.0.1:
   version "2.1.1"
   resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f"
 
@@ -1961,7 +1971,7 @@ cliui@^2.1.0:
     right-align "^0.1.1"
     wordwrap "0.0.2"
 
-cliui@^3.2.0:
+cliui@^3.0.3, cliui@^3.2.0:
   version "3.2.0"
   resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d"
   dependencies:
@@ -2034,8 +2044,8 @@ code@4.1.x, code@^4.1.0:
     hoek "4.x.x"
 
 codemirror@^5.18.2:
-  version "5.27.4"
-  resolved "https://registry.yarnpkg.com/codemirror/-/codemirror-5.27.4.tgz#0e817c839bfea9959dd16cd48ae14acc0e43c3b6"
+  version "5.28.0"
+  resolved "https://registry.yarnpkg.com/codemirror/-/codemirror-5.28.0.tgz#2978d9280d671351a4f5737d06bbd681a0fd6f83"
 
 coleman-liau@^1.0.0:
   version "1.0.1"
@@ -2148,8 +2158,8 @@ configstore@^1.0.0:
     xdg-basedir "^2.0.0"
 
 configstore@^3.0.0:
-  version "3.1.0"
-  resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.0.tgz#45df907073e26dfa1cf4b2d52f5b60545eaa11d1"
+  version "3.1.1"
+  resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.1.tgz#094ee662ab83fad9917678de114faaea8fcdca90"
   dependencies:
     dot-prop "^4.1.0"
     graceful-fs "^4.1.2"
@@ -2433,7 +2443,7 @@ core-js@^2.0.0, core-js@^2.4.0:
   version "2.4.1"
   resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e"
 
-core-util-is@~1.0.0:
+core-util-is@1.0.2, core-util-is@~1.0.0:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
 
@@ -2444,8 +2454,8 @@ cors@2.8.1:
     vary "^1"
 
 cosmiconfig@^2.1.1:
-  version "2.1.3"
-  resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-2.1.3.tgz#952771eb0dddc1cb3fa2f6fbe51a522e93b3ee0a"
+  version "2.2.1"
+  resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-2.2.1.tgz#7fbdc6fb47597d5f88175de1df696b66d36e5944"
   dependencies:
     is-directory "^0.3.1"
     js-yaml "^3.4.3"
@@ -3723,11 +3733,11 @@ extsprintf@1.0.2:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550"
 
-extsprintf@1.2.0, extsprintf@^1.2.0:
+extsprintf@1.2.0:
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.2.0.tgz#5ad946c22f5b32ba7f8cd7426711c6e8a3fc2529"
 
-extsprintf@1.3.0:
+extsprintf@1.3.0, extsprintf@^1.2.0:
   version "1.3.0"
   resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
 
@@ -3748,10 +3758,14 @@ fast-levenshtein@~2.0.4:
   version "2.0.6"
   resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
 
-fast-safe-stringify@1.1.x, fast-safe-stringify@^1.1.3:
+fast-safe-stringify@1.1.x:
   version "1.1.13"
   resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-1.1.13.tgz#a01e9cd9c9e491715c98a75a42d5f0bbd107ff76"
 
+fast-safe-stringify@^1.1.3:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-1.2.0.tgz#ebd42666fd18fe4f2ba4f0d295065f3f85cade96"
+
 fbjs@^0.8.5, fbjs@^0.8.9:
   version "0.8.12"
   resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.12.tgz#10b5d92f76d45575fd63a217d4ea02bea2f8ed04"
@@ -4051,12 +4065,18 @@ get-stream@^3.0.0:
   version "3.0.0"
   resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
 
-getpass@0.1.6, getpass@^0.1.1:
+getpass@0.1.6:
   version "0.1.6"
   resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.6.tgz#283ffd9fc1256840875311c1b60e8c40187110e6"
   dependencies:
     assert-plus "^1.0.0"
 
+getpass@^0.1.1:
+  version "0.1.7"
+  resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
+  dependencies:
+    assert-plus "^1.0.0"
+
 git-raw-commits@1.1.2:
   version "1.1.2"
   resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-1.1.2.tgz#a12d8492aeba2881802d700825ed81c9f39e6f2f"
@@ -4142,6 +4162,16 @@ glob@^5.0.14:
     once "^1.3.0"
     path-is-absolute "^1.0.0"
 
+glob@^6.0.1:
+  version "6.0.4"
+  resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22"
+  dependencies:
+    inflight "^1.0.4"
+    inherits "2"
+    minimatch "2 || 3"
+    once "^1.3.0"
+    path-is-absolute "^1.0.0"
+
 globals@^9.0.0, globals@^9.14.0, globals@^9.17.0:
   version "9.18.0"
   resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a"
@@ -6102,10 +6132,14 @@ mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.15, mime-types@~2.1.7:
   dependencies:
     mime-db "~1.27.0"
 
-mime@1.3.4, mime@^1.3.4:
+mime@1.3.4:
   version "1.3.4"
   resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53"
 
+mime@^1.3.4:
+  version "1.3.6"
+  resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.6.tgz#591d84d3653a6b0b4a3b9df8de5aa8108e72e5e0"
+
 mimic-fn@^1.0.0:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18"
@@ -6525,7 +6559,7 @@ once@1.3.0:
   version "1.3.0"
   resolved "https://registry.yarnpkg.com/once/-/once-1.3.0.tgz#151af86bfc1f08c4b9f07d06ab250ffcbeb56581"
 
-once@1.3.2, once@~1.3.0:
+once@1.3.2:
   version "1.3.2"
   resolved "https://registry.yarnpkg.com/once/-/once-1.3.2.tgz#d8feeca93b039ec1dcdee7741c92bdac5e28081b"
   dependencies:
@@ -6537,6 +6571,12 @@ once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.3.3, once@^1.4.0:
   dependencies:
     wrappy "1"
 
+once@~1.3.0:
+  version "1.3.3"
+  resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20"
+  dependencies:
+    wrappy "1"
+
 onecolor@^3.0.4:
   version "3.0.4"
   resolved "https://registry.yarnpkg.com/onecolor/-/onecolor-3.0.4.tgz#75a46f80da6c7aaa5b4daae17a47198bd9652494"
@@ -7030,10 +7070,14 @@ preserve@^0.2.0:
   version "0.2.0"
   resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
 
-prettier@1.4.4, prettier@^1.3.1:
+prettier@1.4.4:
   version "1.4.4"
   resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.4.4.tgz#a8d1447b14c9bf67e6d420dcadd10fb9a4fad65a"
 
+prettier@^1.3.1:
+  version "1.5.3"
+  resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.5.3.tgz#59dadc683345ec6b88f88b94ed4ae7e1da394bfe"
+
 pretty-format@^18.1.0:
   version "18.1.0"
   resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-18.1.0.tgz#fb65a86f7a7f9194963eee91865c1bcf1039e284"
@@ -7269,7 +7313,7 @@ raw-body@~2.1.7:
     iconv-lite "0.4.13"
     unpipe "1.0.0"
 
-rc@1.1.7, rc@^1.0.1, rc@^1.1.6, rc@^1.1.7:
+rc@1.1.7:
   version "1.1.7"
   resolved "https://registry.yarnpkg.com/rc/-/rc-1.1.7.tgz#c5ea564bb07aff9fd3a5b32e906c1d3a65940fea"
   dependencies:
@@ -7278,9 +7322,18 @@ rc@1.1.7, rc@^1.0.1, rc@^1.1.6, rc@^1.1.7:
     minimist "^1.2.0"
     strip-json-comments "~2.0.1"
 
+rc@^1.0.1, rc@^1.1.6, rc@^1.1.7:
+  version "1.2.1"
+  resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.1.tgz#2e03e8e42ee450b8cb3dce65be1bf8974e1dfd95"
+  dependencies:
+    deep-extend "~0.4.0"
+    ini "~1.3.0"
+    minimist "^1.2.0"
+    strip-json-comments "~2.0.1"
+
 react-apollo@^1.4.2:
-  version "1.4.6"
-  resolved "https://registry.yarnpkg.com/react-apollo/-/react-apollo-1.4.6.tgz#b63002879680d0ebdcfb7623acf9df75a0e43bb7"
+  version "1.4.8"
+  resolved "https://registry.yarnpkg.com/react-apollo/-/react-apollo-1.4.8.tgz#b510f207b08ce4bd1e3adbd46a3ede68e3af27e7"
   dependencies:
     apollo-client "^1.4.0"
     graphql-anywhere "^3.0.0"
@@ -7300,7 +7353,7 @@ react-broadcast@^0.1.2:
   dependencies:
     invariant "^2.2.1"
 
-react-bundle@^1.0.4:
+react-bundle@^1.0.3:
   version "1.0.4"
   resolved "https://registry.yarnpkg.com/react-bundle/-/react-bundle-1.0.4.tgz#ea03cae97be357ff8e290e785f4e30d0e065b920"
   dependencies:
@@ -8051,12 +8104,18 @@ rimraf@2, rimraf@^2.2.8, rimraf@^2.3.3, rimraf@^2.5.1, rimraf@^2.5.4, rimraf@^2.
   dependencies:
     glob "^7.0.5"
 
-rimraf@2.4.4, rimraf@~2.4.0:
+rimraf@2.4.4:
   version "2.4.4"
   resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.4.4.tgz#b528ce2ebe0e6d89fb03b265de11d61da0dbcf82"
   dependencies:
     glob "^5.0.14"
 
+rimraf@~2.4.0:
+  version "2.4.5"
+  resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.4.5.tgz#ee710ce5d93a8fdb856fb5ea8ff0e2d75934b2da"
+  dependencies:
+    glob "^6.0.1"
+
 ripemd160@^2.0.0, ripemd160@^2.0.1:
   version "2.0.1"
   resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.1.tgz#0f4584295c53a3628af7e6d79aca21ce57d1c6e7"
@@ -9538,12 +9597,20 @@ verror@1.3.6:
   dependencies:
     extsprintf "1.0.2"
 
-verror@1.6.0, verror@^1.6.0:
+verror@1.6.0:
   version "1.6.0"
   resolved "https://registry.yarnpkg.com/verror/-/verror-1.6.0.tgz#7d13b27b1facc2e2da90405eb5ea6e5bdd252ea5"
   dependencies:
     extsprintf "1.2.0"
 
+verror@^1.6.0:
+  version "1.10.0"
+  resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400"
+  dependencies:
+    assert-plus "^1.0.0"
+    core-util-is "1.0.2"
+    extsprintf "^1.2.0"
+
 vfile-location@^2.0.0:
   version "2.0.2"
   resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-2.0.2.tgz#d3675c59c877498e492b4756ff65e4af1a752255"
@@ -9700,6 +9767,10 @@ window-size@0.1.0:
   version "0.1.0"
   resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d"
 
+window-size@^0.1.4:
+  version "0.1.4"
+  resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876"
+
 wordwrap@0.0.2:
   version "0.0.2"
   resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f"
@@ -9817,7 +9888,7 @@ xmlhttprequest@1:
   version "4.0.1"
   resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
 
-y18n@^3.2.1:
+y18n@^3.2.0, y18n@^3.2.1:
   version "3.2.1"
   resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41"
 
@@ -9862,14 +9933,17 @@ yargs@^1.2.6:
   version "1.3.3"
   resolved "https://registry.yarnpkg.com/yargs/-/yargs-1.3.3.tgz#054de8b61f22eefdb7207059eaef9d6b83fb931a"
 
-yargs@^3.5.4, yargs@~3.10.0:
-  version "3.10.0"
-  resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1"
+yargs@^3.5.4:
+  version "3.32.0"
+  resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995"
   dependencies:
-    camelcase "^1.0.2"
-    cliui "^2.1.0"
-    decamelize "^1.0.0"
-    window-size "0.1.0"
+    camelcase "^2.0.1"
+    cliui "^3.0.3"
+    decamelize "^1.1.1"
+    os-locale "^1.4.0"
+    string-width "^1.0.1"
+    window-size "^0.1.4"
+    y18n "^3.2.0"
 
 yargs@^6.0.0:
   version "6.6.0"
@@ -9907,6 +9981,15 @@ yargs@^8.0.1, yargs@^8.0.2:
     y18n "^3.2.1"
     yargs-parser "^7.0.0"
 
+yargs@~3.10.0:
+  version "3.10.0"
+  resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1"
+  dependencies:
+    camelcase "^1.0.2"
+    cliui "^2.1.0"
+    decamelize "^1.0.0"
+    window-size "0.1.0"
+
 z-schema@^3.16.1, z-schema@^3.17.0:
   version "3.18.2"
   resolved "https://registry.yarnpkg.com/z-schema/-/z-schema-3.18.2.tgz#e422196b5efe60b46adef3c3f2aef2deaa911161"