Просмотр исходного кода

Merge pull request #1161 from weseek/master

release v3.5.9
Yuki Takei 6 лет назад
Родитель
Сommit
f8267f1b2b

+ 13 - 3
CHANGES.md

@@ -1,10 +1,18 @@
 # CHANGES
 
-## 3.5.8-RC
+## 3.5.9-RC
 
-* 
+* Fix: Editing table with Spreadsheet like GUI (Handsontable) is failed
+* Fix: Plugins are not initialized when first launching
+    * Introduced by 3.5.0
+* Support: Upgrade libs
+    * entities
+    * growi-commons
+    * openid-client
+    * rimraf
+    * style-loader
 
-## 3.5.7
+## 3.5.8
 
 * Improvement: Controls when HackMD/CodiMD has unsaved draft
 * Improvement: Show hints if HackMD/CodiMD integration is not working
@@ -12,6 +20,8 @@
 * Improvement: Comment Thread Layout
 * Improvement: Show commented date with date distance format
 
+## 3.5.7 (Missing number)
+
 ## 3.5.6
 
 * Fix: Saving new page is failed when empty string tag is set

+ 15 - 11
package.json

@@ -1,6 +1,6 @@
 {
   "name": "growi",
-  "version": "3.5.8-RC",
+  "version": "3.5.9-RC",
   "description": "Team collaboration software using markdown",
   "tags": [
     "wiki",
@@ -63,7 +63,8 @@
     "//": [
       "check-node-version: see https://github.com/parshap/check-node-version/issues/35",
       "entities: markdown-it@9.0.1 depends on entities@~1.1.1",
-      "mongoose: somehow GlobalNotificationSetting CRUD does not work with mongoose v5.6.0"
+      "mongoose: somehow GlobalNotificationSetting CRUD does not work with mongoose v5.6.0",
+      "openid-client: Node.js 12 or higher is required for openid-client@3 and above."
     ],
     "async": "^3.0.1",
     "aws-sdk": "^2.88.0",
@@ -81,7 +82,7 @@
     "date-fns": "^1.29.0",
     "diff": "^4.0.1",
     "elasticsearch": "^16.0.0",
-    "entities": "^1.1.1",
+    "entities": "=1.1.2",
     "env-cmd": "^9.0.1",
     "esa-nodejs": "^0.0.7",
     "escape-string-regexp": "^2.0.0",
@@ -93,7 +94,7 @@
     "express-validator": "^6.1.1",
     "express-webpack-assets": "^0.1.0",
     "graceful-fs": "^4.1.11",
-    "growi-commons": "^4.0.3",
+    "growi-commons": "^4.0.7",
     "helmet": "^3.13.0",
     "i18next": "^17.0.3",
     "i18next-express-middleware": "^1.4.1",
@@ -113,7 +114,7 @@
     "nodemailer": "^6.0.0",
     "nodemailer-ses-transport": "~1.5.0",
     "npm-run-all": "^4.1.2",
-    "openid-client": "^2.5.0",
+    "openid-client": "=2.5.0",
     "passport": "^0.4.0",
     "passport-github": "^1.1.0",
     "passport-google-auth": "^1.0.2",
@@ -122,7 +123,7 @@
     "passport-local": "^1.0.0",
     "passport-saml": "^1.0.0",
     "passport-twitter": "^1.0.4",
-    "rimraf": "^2.6.1",
+    "rimraf": "^3.0.0",
     "slack-node": "^0.1.8",
     "socket.io": "^2.0.3",
     "stream-to-promise": "^2.2.0",
@@ -133,12 +134,16 @@
     "xss": "^1.0.6"
   },
   "devDependencies": {
+    "//": [
+      "@handsontable/react: v3 requires handsontable >= 7.0.0.",
+      "handsontable: v7.0.0 or above is no loger MIT lisence."
+    ],
     "@alienfast/i18next-loader": "^1.0.16",
     "@babel/core": "^7.4.5",
     "@babel/polyfill": "^7.4.4",
     "@babel/preset-env": "^7.4.5",
     "@babel/preset-react": "^7.0.0",
-    "@handsontable/react": "^2.0.0",
+    "@handsontable/react": "=2.1.0",
     "autoprefixer": "^9.0.0",
     "babel-eslint": "^10.0.1",
     "babel-loader": "^8.0.6",
@@ -151,7 +156,6 @@
     "cli": "~1.0.1",
     "codemirror": "^5.42.0",
     "colors": "^1.2.5",
-    "commander": "^2.11.0",
     "connect-browser-sync": "^2.1.0",
     "core-js": "=2.6.9",
     "css-loader": "^3.0.0",
@@ -164,7 +168,7 @@
     "eslint-plugin-jest": "^22.7.1",
     "eslint-plugin-react": "^7.14.2",
     "file-loader": "^4.0.0",
-    "handsontable": "^6.0.1",
+    "handsontable": "=6.2.2",
     "i18next-browser-languagedetector": "^3.0.1",
     "imports-loader": "^0.8.0",
     "jest": "^24.8.0",
@@ -188,7 +192,7 @@
     "mini-css-extract-plugin": "^0.8.0",
     "morgan": "^1.9.0",
     "node-dev": "^4.0.0",
-    "node-sass": "^4.11.0",
+    "node-sass": "^4.12.0",
     "normalize-path": "^3.0.0",
     "null-loader": "^3.0.0",
     "on-headers": "^1.0.1",
@@ -213,7 +217,7 @@
     "sass-loader": "^7.1.0",
     "simple-load-script": "^1.0.2",
     "socket.io-client": "^2.0.3",
-    "style-loader": "^0.23.0",
+    "style-loader": "^1.0.0",
     "stylelint-config-recess-order": "^2.0.1",
     "swagger-jsdoc": "^3.2.9",
     "terser-webpack-plugin": "^1.2.2",

+ 1 - 1
resource/cdn-manifests.js

@@ -2,7 +2,7 @@ module.exports = {
   js: [
     {
       name: 'basis',
-      url: 'https://cdn.jsdelivr.net/combine/npm/emojione@3.1.2,npm/jquery@3.3.1,npm/bootstrap@3.4.1/dist/js/bootstrap.min.js',
+      url: 'https://cdn.jsdelivr.net/combine/npm/emojione@3.1.2,npm/jquery@3.4.0,npm/bootstrap@3.4.1/dist/js/bootstrap.min.js',
       groups: ['basis'],
       args: {
         integrity: '',

+ 2 - 2
src/client/js/components/InstallerForm.jsx

@@ -62,7 +62,7 @@ class InstallerForm extends React.Component {
               value="en-US"
               checked={checkedBtn === 'en-US'}
               inline
-              onClick={() => { return this.changeLanguage('en-US') }}
+              onChange={(e) => { if (e.target.checked) { this.changeLanguage('en-US') } }}
             >
               English
             </Radio>
@@ -71,7 +71,7 @@ class InstallerForm extends React.Component {
               value="ja"
               checked={checkedBtn === 'ja'}
               inline
-              onClick={() => { return this.changeLanguage('ja') }}
+              onChange={(e) => { if (e.target.checked) { this.changeLanguage('ja') } }}
             >
               日本語
             </Radio>

+ 2 - 1
src/client/js/components/Page.jsx

@@ -47,6 +47,7 @@ class Page extends React.Component {
 
   async saveHandlerForHandsontableModal(markdownTable) {
     const { pageContainer, editorContainer } = this.props;
+    const optionsToSave = editorContainer.getCurrentOptionsToSave();
 
     const newMarkdown = mtu.replaceMarkdownTableInMarkdown(
       markdownTable,
@@ -60,7 +61,7 @@ class Page extends React.Component {
       editorContainer.disableUnsavedWarning();
 
       // eslint-disable-next-line no-unused-vars
-      const { page, tags } = await pageContainer.save(newMarkdown);
+      const { page, tags } = await pageContainer.save(newMarkdown, optionsToSave);
       logger.debug('success to save');
 
       pageContainer.showSuccessToastr();

+ 1 - 0
src/client/js/components/StaffCredit/Contributor.js

@@ -70,6 +70,7 @@ const contributors = [
           { name: 'kmyk' },
           { name: 'aximov' },
           { name: 'tats-u' },
+          { name: 'yamatomo717' },
         ],
       },
     ],

+ 0 - 15
src/server/crowi/dev.js

@@ -123,21 +123,6 @@ class CrowiDev {
     app.use(require('connect-browser-sync')(bs));
   }
 
-  loadPlugins(app) {
-    if (process.env.PLUGIN_NAMES_TOBE_LOADED !== undefined
-        && process.env.PLUGIN_NAMES_TOBE_LOADED.length > 0) {
-      const pluginNames = process.env.PLUGIN_NAMES_TOBE_LOADED.split(',');
-      logger.debug('[development] loading Plugins', pluginNames);
-
-      // merge and remove duplicates
-      if (pluginNames.length > 0) {
-        const PluginService = require('../plugins/plugin.service');
-        const pluginService = new PluginService(this.crowi, app);
-        pluginService.loadPlugins(pluginNames);
-      }
-    }
-  }
-
 }
 
 module.exports = CrowiDev;

+ 6 - 13
src/server/crowi/index.js

@@ -15,6 +15,8 @@ const mongoose = require('mongoose');
 
 const models = require('../models');
 
+const PluginService = require('../plugins/plugin.service');
+
 function Crowi(rootdir) {
   const self = this;
 
@@ -363,6 +365,10 @@ Crowi.prototype.start = async function() {
   await this.init();
   const express = await this.buildServer();
 
+  // setup plugins
+  this.pluginService = new PluginService(this, express);
+  this.pluginService.autoDetectAndLoadPlugins();
+
   const server = (this.node_env === 'development') ? this.crowiDev.setupServer(express) : express;
 
   // listen
@@ -391,19 +397,6 @@ Crowi.prototype.buildServer = function() {
 
   require('./express-init')(this, express);
 
-  // import plugins
-  const isEnabledPlugins = this.configManager.getConfig('crowi', 'plugin:isEnabledPlugins');
-  if (isEnabledPlugins) {
-    debug('Plugins are enabled');
-    const PluginService = require('../plugins/plugin.service');
-    const pluginService = new PluginService(this, express);
-    pluginService.autoDetectAndLoadPlugins();
-
-    if (env === 'development') {
-      this.crowiDev.loadPlugins(express);
-    }
-  }
-
   // use bunyan
   if (env === 'production') {
     const expressBunyanLogger = require('express-bunyan-logger');

+ 27 - 1
src/server/plugins/plugin.service.js

@@ -10,7 +10,33 @@ class PluginService {
   }
 
   autoDetectAndLoadPlugins() {
-    this.loadPlugins(this.pluginUtils.listPluginNames(this.crowi.rootDir));
+    const isEnabledPlugins = this.crowi.configManager.getConfig('crowi', 'plugin:isEnabledPlugins');
+
+    // import plugins
+    if (isEnabledPlugins) {
+      logger.debug('Plugins are enabled');
+      this.loadPlugins(this.pluginUtils.listPluginNames(this.crowi.rootDir));
+
+      // when dev
+      if (this.crowi.node_env === 'development') {
+        this.autoDetectAndLoadPluginsForDev();
+      }
+    }
+
+  }
+
+  autoDetectAndLoadPluginsForDev() {
+    if (process.env.PLUGIN_NAMES_TOBE_LOADED !== undefined
+      && process.env.PLUGIN_NAMES_TOBE_LOADED.length > 0) {
+
+      const pluginNames = process.env.PLUGIN_NAMES_TOBE_LOADED.split(',');
+      logger.debug('[development] loading Plugins', pluginNames);
+
+      // merge and remove duplicates
+      if (pluginNames.length > 0) {
+        this.crowi.pluginService.loadPlugins(pluginNames);
+      }
+    }
   }
 
   /**

+ 12 - 6
src/server/routes/index.js

@@ -29,12 +29,22 @@ module.exports = function(crowi, app) {
     csrfVerify: csrf,
   } = middlewares;
 
+  const isInstalled = crowi.configManager.getConfig('crowi', 'app:installed');
+
   /* eslint-disable max-len, comma-spacing, no-multi-spaces */
 
   app.get('/'                        , middlewares.applicationInstalled, loginRequired(false) , page.showTopPage);
 
-  app.get('/installer'               , middlewares.applicationNotInstalled , installer.index);
-  app.post('/installer'              , middlewares.applicationNotInstalled , form.register , csrf, installer.install);
+  // API v3
+  app.use('/api-docs', require('./apiv3/docs')(crowi));
+  app.use('/_api/v3', require('./apiv3')(crowi));
+
+  // installer
+  if (!isInstalled) {
+    app.get('/installer'               , middlewares.applicationNotInstalled , installer.index);
+    app.post('/installer'              , middlewares.applicationNotInstalled , form.register , csrf, installer.install);
+    return;
+  }
 
   app.get('/login/error/:reason'     , login.error);
   app.get('/login'                   , middlewares.applicationInstalled    , login.login);
@@ -229,10 +239,6 @@ module.exports = function(crowi, app) {
   app.post('/_api/hackmd.discard'        , accessTokenParser , loginRequired() , csrf, hackmd.validateForApi, hackmd.discard);
   app.post('/_api/hackmd.saveOnHackmd'   , accessTokenParser , loginRequired() , csrf, hackmd.validateForApi, hackmd.saveOnHackmd);
 
-  // API v3
-  app.use('/api-docs', require('./apiv3/docs')(crowi));
-  app.use('/_api/v3', require('./apiv3')(crowi));
-
   app.get('/*/$'                   , loginRequired(false) , page.showPageWithEndOfSlash, page.notFound);
   app.get('/*'                     , loginRequired(false) , page.showPage, page.notFound);
 };

+ 4 - 0
src/server/routes/installer.js

@@ -81,6 +81,10 @@ module.exports = function(crowi, app) {
     }
     // create initial pages
     await createInitialPages(adminUser, language);
+    // init plugins
+    crowi.pluginService.autoDetectAndLoadPlugins();
+    // setup routes
+    crowi.setupRoutesAtLast(app);
 
     // login with passport
     req.logIn(adminUser, (err) => {

+ 61 - 55
yarn.lock

@@ -775,9 +775,10 @@
     exec-sh "^0.3.2"
     minimist "^1.2.0"
 
-"@handsontable/react@^2.0.0":
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/@handsontable/react/-/react-2.0.0.tgz#30d9c2bd05421588a6ed1b3050b1f7dc476b35d3"
+"@handsontable/react@=2.1.0":
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/@handsontable/react/-/react-2.1.0.tgz#3b87ebfc0d5d47e1b0d07856bd473017a0a7179f"
+  integrity sha512-Du73MFU2y1Bfe9m7mvxY70lB2R/VigFSpOwWZjDnUt/HwNPbNr+UQcY40w6u7acllQeee45H7jRdEExzsrvDKw==
 
 "@jest/console@^24.7.1":
   version "24.7.1"
@@ -1870,9 +1871,10 @@ big.js@^5.2.2:
   resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328"
   integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==
 
-bignumber.js@^4.0.4:
-  version "4.1.0"
-  resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-4.1.0.tgz#db6f14067c140bd46624815a7916c92d9b6c24b1"
+bignumber.js@^8.0.1:
+  version "8.1.1"
+  resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-8.1.1.tgz#4b072ae5aea9c20f6730e4e5d529df1271c4d885"
+  integrity sha512-QD46ppGintwPGuL1KqmwhR0O+N2cZUg8JG/VzwI2e28sM9TqHjQB10lI4QAaMHVbLzwVLLAwEglpKPViWX+5NQ==
 
 binary-extensions@^1.0.0:
   version "1.11.0"
@@ -2726,10 +2728,6 @@ commander@2.20.0, commander@^2.20.0, commander@^2.7.1, commander@~2.20.0:
   resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422"
   integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==
 
-commander@^2.11.0, commander@^2.9.0:
-  version "2.12.2"
-  resolved "https://registry.yarnpkg.com/commander/-/commander-2.12.2.tgz#0f5946c427ed9ec0d91a46bb9def53e54650e555"
-
 commander@^2.18.0:
   version "2.18.0"
   resolved "https://registry.yarnpkg.com/commander/-/commander-2.18.0.tgz#2bf063ddee7c7891176981a2cc798e5754bc6970"
@@ -2738,6 +2736,10 @@ commander@^2.2.0:
   version "2.15.1"
   resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f"
 
+commander@^2.9.0:
+  version "2.12.2"
+  resolved "https://registry.yarnpkg.com/commander/-/commander-2.12.2.tgz#0f5946c427ed9ec0d91a46bb9def53e54650e555"
+
 commondir@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
@@ -3869,6 +3871,11 @@ enhanced-resolve@^4.1.0:
     memory-fs "^0.4.0"
     tapable "^1.0.0"
 
+entities@=1.1.2:
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56"
+  integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==
+
 entities@^1.1.1, entities@~1.1.1:
   version "1.1.1"
   resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0"
@@ -5134,10 +5141,10 @@ graceful-fs@^4.1.15:
   version "4.1.15"
   resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00"
 
-growi-commons@^4.0.3:
-  version "4.0.3"
-  resolved "https://registry.yarnpkg.com/growi-commons/-/growi-commons-4.0.3.tgz#aa8cec9a45854ff5a66d28bdf3b232adc64e0270"
-  integrity sha512-ktf6wdAOykVkrGCMWBArP+jHjZTg8iDFrnPGNNVoCxm1fnWfRVXBNu7a8mFIvB2wQScSvnoHs2RFBKN/GcJJoA==
+growi-commons@^4.0.7:
+  version "4.0.7"
+  resolved "https://registry.yarnpkg.com/growi-commons/-/growi-commons-4.0.7.tgz#f9ff9c2f6afe3a9982b689d368e8e7a000d137e8"
+  integrity sha512-Ipku+WlfXsSqS+2fuDRfOeCP5Q8dBo/8XYlcjsPFdCvKa9lBr2OsSN2ac9dAXaL9bH4wc+Kz7UR/OLjAMlx0Iw==
 
 growly@^1.3.0:
   version "1.3.0"
@@ -5175,9 +5182,10 @@ handlebars@^4.1.2:
   optionalDependencies:
     uglify-js "^3.1.4"
 
-handsontable@^6.0.1:
-  version "6.1.1"
-  resolved "https://registry.yarnpkg.com/handsontable/-/handsontable-6.1.1.tgz#4be8fbe25efd3f0b85b494967475a687007e288d"
+handsontable@=6.2.2:
+  version "6.2.2"
+  resolved "https://registry.yarnpkg.com/handsontable/-/handsontable-6.2.2.tgz#f1250f3f374abdf7d4a0080950482d3edeea8f07"
+  integrity sha512-Z/sQa51OMHH4RoeBJeANYJMJYmx5SR+/xP8JCh5mzKJnAMKoQWF1zONPNgNCFZ/LdKFmI0f34XKtU0GHW0MG/Q==
   dependencies:
     moment "2.20.1"
     numbro "^2.0.6"
@@ -7023,14 +7031,6 @@ lodash-webpack-plugin@^0.11.5:
   dependencies:
     lodash "^4.17.4"
 
-lodash.assign@^4.2.0:
-  version "4.2.0"
-  resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7"
-
-lodash.clonedeep@^4.3.2:
-  version "4.5.0"
-  resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef"
-
 lodash.debounce@^4.0.8:
   version "4.0.8"
   resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
@@ -7060,10 +7060,6 @@ lodash.memoize@^4.1.2:
   version "4.1.2"
   resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
 
-lodash.mergewith@^4.6.0:
-  version "4.6.1"
-  resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz#639057e726c3afbdb3e7d42741caa8d6e4335927"
-
 lodash.noop@^3.0.1:
   version "3.0.1"
   resolved "https://registry.yarnpkg.com/lodash.noop/-/lodash.noop-3.0.1.tgz#38188f4d650a3a474258439b96ec45b32617133c"
@@ -7838,9 +7834,10 @@ mv@~2:
     ncp "~2.0.0"
     rimraf "~2.4.0"
 
-nan@^2.10.0:
-  version "2.13.2"
-  resolved "https://registry.yarnpkg.com/nan/-/nan-2.13.2.tgz#f51dc7ae66ba7d5d55e1e6d4d8092e802c9aefe7"
+nan@^2.13.2:
+  version "2.14.0"
+  resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c"
+  integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==
 
 nan@^2.3.3:
   version "2.8.0"
@@ -8042,9 +8039,10 @@ node-releases@^1.1.23:
   dependencies:
     semver "^5.3.0"
 
-node-sass@^4.11.0:
-  version "4.11.0"
-  resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.11.0.tgz#183faec398e9cbe93ba43362e2768ca988a6369a"
+node-sass@^4.12.0:
+  version "4.12.0"
+  resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.12.0.tgz#0914f531932380114a30cc5fa4fa63233a25f017"
+  integrity sha512-A1Iv4oN+Iel6EPv77/HddXErL2a+gZ4uBeZUy+a8O35CFYTXhgA8MgLCWBtwpGZdCvTvQ9d+bQxX/QC36GDPpQ==
   dependencies:
     async-foreach "^0.1.3"
     chalk "^1.1.1"
@@ -8053,12 +8051,10 @@ node-sass@^4.11.0:
     get-stdin "^4.0.1"
     glob "^7.0.3"
     in-publish "^2.0.0"
-    lodash.assign "^4.2.0"
-    lodash.clonedeep "^4.3.2"
-    lodash.mergewith "^4.6.0"
+    lodash "^4.17.11"
     meow "^3.7.0"
     mkdirp "^0.5.1"
-    nan "^2.10.0"
+    nan "^2.13.2"
     node-gyp "^3.8.0"
     npmlog "^4.0.0"
     request "^2.88.0"
@@ -8208,10 +8204,11 @@ number-is-nan@^1.0.0:
   resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
 
 numbro@^2.0.6:
-  version "2.1.1"
-  resolved "https://registry.yarnpkg.com/numbro/-/numbro-2.1.1.tgz#b977fc6a769163f90e2e2d7623ff9db4d66bc661"
+  version "2.1.2"
+  resolved "https://registry.yarnpkg.com/numbro/-/numbro-2.1.2.tgz#2d51104f09b5d69aef7e15bb565d7795e47ecfd6"
+  integrity sha512-7w833BxZmKGLE9HI0aREtNVRVH6WTYUUlWf4qgA5gKNhPQ4F/MRZ14sc0v8eoLORprk9ZTVwYaLwj8N3Zgxwiw==
   dependencies:
-    bignumber.js "^4.0.4"
+    bignumber.js "^8.0.1"
 
 nwsapi@^2.0.7:
   version "2.1.4"
@@ -8405,7 +8402,7 @@ opener@^1.5.1:
   version "1.5.1"
   resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.1.tgz#6d2f0e77f1a0af0032aca716c2c1fbb8e7e8abed"
 
-openid-client@^2.5.0:
+openid-client@=2.5.0:
   version "2.5.0"
   resolved "https://registry.yarnpkg.com/openid-client/-/openid-client-2.5.0.tgz#7d4cf552b30dbad26917d7e2722422eda057ea93"
   integrity sha512-t3hFD7xEoW1U25RyBcRFaL19fGGs6hNVTysq9pgmiltH0IVUPzH/bQV9w24pM5Q7MunnGv2/5XjIru6BQcWdxg==
@@ -10444,6 +10441,13 @@ rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2:
   dependencies:
     glob "^7.0.5"
 
+rimraf@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.0.tgz#614176d4b3010b75e5c390eb0ee96f6dc0cebb9b"
+  integrity sha512-NDGVxTsjqfunkds7CqsOiEnxln4Bo7Nddl3XhS4pXg5OzwkLqJ971ZVAAnB+DDLnF76N+VnDEiBHaVV8I06SUg==
+  dependencies:
+    glob "^7.1.3"
+
 rimraf@~2.4.0:
   version "2.4.5"
   resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.4.5.tgz#ee710ce5d93a8fdb856fb5ea8ff0e2d75934b2da"
@@ -10580,13 +10584,6 @@ scheduler@^0.13.3:
     loose-envify "^1.1.0"
     object-assign "^4.1.1"
 
-schema-utils@^0.4.5:
-  version "0.4.5"
-  resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.5.tgz#21836f0608aac17b78f9e3e24daff14a5ca13a3e"
-  dependencies:
-    ajv "^6.1.0"
-    ajv-keywords "^3.1.0"
-
 schema-utils@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770"
@@ -10595,6 +10592,14 @@ schema-utils@^1.0.0:
     ajv-errors "^1.0.0"
     ajv-keywords "^3.1.0"
 
+schema-utils@^2.0.1:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.1.0.tgz#940363b6b1ec407800a22951bdcc23363c039393"
+  integrity sha512-g6SViEZAfGNrToD82ZPUjq52KUPDYc+fN5+g6Euo5mLokl/9Yx14z0Cu4RR1m55HtBXejO0sBt+qw79axN+Fiw==
+  dependencies:
+    ajv "^6.1.0"
+    ajv-keywords "^3.1.0"
+
 scss-tokenizer@^0.2.3:
   version "0.2.3"
   resolved "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz#8eb06db9a9723333824d3f5530641149847ce5d1"
@@ -11367,12 +11372,13 @@ striptags@>=3.1.1:
   resolved "https://registry.yarnpkg.com/striptags/-/striptags-3.1.1.tgz#c8c3e7fdd6fb4bb3a32a3b752e5b5e3e38093ebd"
   integrity sha1-yMPn/db7S7OjKjt1LltePjgJPr0=
 
-style-loader@^0.23.0:
-  version "0.23.0"
-  resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.23.0.tgz#8377fefab68416a2e05f1cabd8c3a3acfcce74f1"
+style-loader@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.0.0.tgz#1d5296f9165e8e2c85d24eee0b7caf9ec8ca1f82"
+  integrity sha512-B0dOCFwv7/eY31a5PCieNwMgMhVGFe9w+rh7s/Bx8kfFkrth9zfTZquoYvdw8URgiqxObQKcpW51Ugz1HjfdZw==
   dependencies:
-    loader-utils "^1.1.0"
-    schema-utils "^0.4.5"
+    loader-utils "^1.2.3"
+    schema-utils "^2.0.1"
 
 style-search@^0.1.0:
   version "0.1.0"