]> source.dussan.org Git - sonarqube.git/commitdiff
create a separate js bundle for legacy browsers (#1073)
authorStas Vilchik <stas.vilchik@sonarsource.com>
Tue, 18 Dec 2018 14:51:21 +0000 (15:51 +0100)
committersonartech <sonartech@sonarsource.com>
Thu, 20 Dec 2018 10:41:49 +0000 (11:41 +0100)
13 files changed:
server/sonar-web/.babelrc [deleted file]
server/sonar-web/babel.config.js [new file with mode: 0644]
server/sonar-web/babel.config.legacy.js [new file with mode: 0644]
server/sonar-web/config/webpack.config.js
server/sonar-web/package.json
server/sonar-web/public/index.html
server/sonar-web/scripts/analyze.js
server/sonar-web/scripts/build.js
server/sonar-web/scripts/start.js
server/sonar-web/tsconfig.json
server/sonar-web/tsconfig.legacy.json [new file with mode: 0644]
server/sonar-web/yarn.lock
sonar-application/build.gradle

diff --git a/server/sonar-web/.babelrc b/server/sonar-web/.babelrc
deleted file mode 100644 (file)
index f5a9cb0..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-{
-  "presets": [
-    [
-      "@babel/preset-env",
-      {
-        "modules": false,
-        "targets": {
-          "browsers": [
-            "last 3 Chrome versions",
-            "last 3 Firefox versions",
-            "last 3 Safari versions",
-            "last 3 Edge versions",
-            "IE 11"
-          ]
-        },
-        "useBuiltIns": "entry",
-        "exclude": [
-          "es6.math.acosh",
-          "es6.math.asinh",
-          "es6.math.atanh",
-          "es6.math.cbrt",
-          "es6.math.clz32",
-          "es6.math.cosh",
-          "es6.math.expm1",
-          "es6.math.fround",
-          "es6.math.hypot",
-          "es6.math.imul",
-          "es6.math.log1p",
-          "es6.math.log10",
-          "es6.math.log2",
-          "es6.math.sign",
-          "es6.math.sinh",
-          "es6.math.tanh",
-          "es6.math.trunc",
-
-          "es6.reflect.apply",
-          "es6.reflect.construct",
-          "es6.reflect.define-property",
-          "es6.reflect.delete-property",
-          "es6.reflect.get",
-          "es6.reflect.get-own-property-descriptor",
-          "es6.reflect.get-prototype-of",
-          "es6.reflect.has",
-          "es6.reflect.is-extensible",
-          "es6.reflect.own-keys",
-          "es6.reflect.prevent-extensions",
-          "es6.reflect.set",
-          "es6.reflect.set-prototype-of",
-
-          "es6.set",
-          "es6.symbol",
-
-          "es6.typed.array-buffer",
-          "es6.typed.data-view",
-          "es6.typed.int8-array",
-          "es6.typed.uint8-array",
-          "es6.typed.uint8-clamped-array",
-          "es6.typed.int16-array",
-          "es6.typed.uint16-array",
-          "es6.typed.int32-array",
-          "es6.typed.uint32-array",
-          "es6.typed.float32-array",
-          "es6.typed.float64-array",
-
-          "es6.weak-map",
-          "es6.weak-set",
-
-          "transform-regenerator"
-        ]
-      }
-    ],
-    "@babel/preset-react"
-  ],
-  "plugins": [
-    "@babel/plugin-proposal-class-properties",
-    ["@babel/plugin-proposal-object-rest-spread", { "useBuiltIns": true }],
-    "lodash"
-  ],
-  "env": {
-    "production": {
-      "plugins": [
-        "@babel/plugin-syntax-dynamic-import",
-        "@babel/plugin-transform-react-constant-elements"
-      ]
-    },
-    "development": {
-      "plugins": [
-        "@babel/plugin-syntax-dynamic-import",
-        "@babel/plugin-transform-react-jsx-source",
-        "@babel/plugin-transform-react-jsx-self"
-      ]
-    },
-    "test": {
-      "plugins": [
-        "@babel/plugin-transform-modules-commonjs",
-        "dynamic-import-node",
-        "@babel/plugin-transform-react-jsx-source",
-        "@babel/plugin-transform-react-jsx-self"
-      ]
-    }
-  }
-}
diff --git a/server/sonar-web/babel.config.js b/server/sonar-web/babel.config.js
new file mode 100644 (file)
index 0000000..3359ae2
--- /dev/null
@@ -0,0 +1,48 @@
+module.exports = {
+  presets: [
+    [
+      '@babel/preset-env',
+      {
+        modules: false,
+        targets: {
+          browsers: [
+            'last 2 Chrome versions',
+            'last 2 Firefox versions',
+            'last 2 Safari versions',
+            'last 2 Edge versions'
+          ]
+        },
+        useBuiltIns: 'entry'
+      }
+    ],
+    '@babel/preset-react'
+  ],
+  plugins: [
+    '@babel/plugin-proposal-class-properties',
+    ['@babel/plugin-proposal-object-rest-spread', { useBuiltIns: true }],
+    'lodash'
+  ],
+  env: {
+    production: {
+      plugins: [
+        '@babel/plugin-syntax-dynamic-import',
+        '@babel/plugin-transform-react-constant-elements'
+      ]
+    },
+    development: {
+      plugins: [
+        '@babel/plugin-syntax-dynamic-import',
+        '@babel/plugin-transform-react-jsx-source',
+        '@babel/plugin-transform-react-jsx-self'
+      ]
+    },
+    test: {
+      plugins: [
+        '@babel/plugin-transform-modules-commonjs',
+        'dynamic-import-node',
+        '@babel/plugin-transform-react-jsx-source',
+        '@babel/plugin-transform-react-jsx-self'
+      ]
+    }
+  }
+};
diff --git a/server/sonar-web/babel.config.legacy.js b/server/sonar-web/babel.config.legacy.js
new file mode 100644 (file)
index 0000000..2c525ff
--- /dev/null
@@ -0,0 +1,49 @@
+module.exports = {
+  presets: [
+    [
+      '@babel/preset-env',
+      {
+        modules: false,
+        targets: {
+          browsers: [
+            'last 3 Chrome versions',
+            'last 3 Firefox versions',
+            'last 3 Safari versions',
+            'last 3 Edge versions',
+            'IE 11'
+          ]
+        },
+        useBuiltIns: 'entry'
+      }
+    ],
+    '@babel/preset-react'
+  ],
+  plugins: [
+    '@babel/plugin-proposal-class-properties',
+    ['@babel/plugin-proposal-object-rest-spread', { useBuiltIns: true }],
+    'lodash'
+  ],
+  env: {
+    production: {
+      plugins: [
+        '@babel/plugin-syntax-dynamic-import',
+        '@babel/plugin-transform-react-constant-elements'
+      ]
+    },
+    development: {
+      plugins: [
+        '@babel/plugin-syntax-dynamic-import',
+        '@babel/plugin-transform-react-jsx-source',
+        '@babel/plugin-transform-react-jsx-self'
+      ]
+    },
+    test: {
+      plugins: [
+        '@babel/plugin-transform-modules-commonjs',
+        'dynamic-import-node',
+        '@babel/plugin-transform-react-jsx-source',
+        '@babel/plugin-transform-react-jsx-self'
+      ]
+    }
+  }
+};
index 1e067f1ac18da53efc4e07650e8300a64745721c..79151ac26055c2916977b6af94d76054613a463f 100644 (file)
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
  */
-/* eslint-disable import/no-extraneous-dependencies */
+/* eslint-disable import/no-extraneous-dependencies, complexity */
 const path = require('path');
 const CleanWebpackPlugin = require('clean-webpack-plugin');
 const CopyWebpackPlugin = require('copy-webpack-plugin');
@@ -29,92 +29,79 @@ const InterpolateHtmlPlugin = require('./InterpolateHtmlPlugin');
 const paths = require('./paths');
 const utils = require('./utils');
 
-module.exports = ({ production = true }) => ({
-  mode: production ? 'production' : 'development',
-  devtool: production ? 'source-map' : 'cheap-module-source-map',
-  resolve: {
-    // Add '.ts' and '.tsx' as resolvable extensions.
-    extensions: ['.ts', '.tsx', '.js', '.json'],
-    // import from 'Docs/foo.md' is rewritten to import from 'sonar-docs/src/foo.md'
-    alias: {
-      Docs: path.resolve(__dirname, '../../sonar-docs/src')
-    }
-  },
-  entry: [
-    !production && require.resolve('react-dev-utils/webpackHotDevClient'),
-    require.resolve('./polyfills'),
-    !production && require.resolve('react-error-overlay'),
-    './src/main/js/app/utils/setPublicPath.js',
-    './src/main/js/app/index.ts'
-  ].filter(Boolean),
-  output: {
-    path: paths.appBuild,
-    pathinfo: !production,
-    filename: production ? 'js/[name].[chunkhash:8].js' : 'js/[name].js',
-    chunkFilename: production ? 'js/[name].[chunkhash:8].chunk.js' : 'js/[name].chunk.js'
-  },
-  module: {
-    rules: [
-      {
-        test: /(\.js$|\.ts(x?)$)/,
-        exclude: /(node_modules|libs)/,
-        use: [
-          { loader: 'babel-loader' },
-          {
-            loader: 'ts-loader',
-            options: { transpileOnly: true }
-          }
-        ]
-      },
-      {
-        // extract styles from 'app/' into separate file
-        test: /\.css$/,
-        include: path.resolve(__dirname, '../src/main/js/app/styles'),
-        use: [
-          production ? MiniCssExtractPlugin.loader : 'style-loader',
-          utils.cssLoader({ production }),
-          utils.postcssLoader()
-        ]
-      },
-      {
-        // inline all other styles
-        test: /\.css$/,
-        exclude: path.resolve(__dirname, '../src/main/js/app/styles'),
-        use: ['style-loader', utils.cssLoader({ production }), utils.postcssLoader()]
-      },
-      {
-        test: /\.md$/,
-        use: 'raw-loader'
-      },
-      { test: require.resolve('react'), loader: 'expose-loader?React' },
-      { test: require.resolve('react-dom'), loader: 'expose-loader?ReactDOM' },
-      {
-        test: /\.directory-loader\.js$/,
-        loader: path.resolve(__dirname, 'documentation-loader/index.js')
-      }
-    ]
-  },
-  plugins: [
-    // `allowExternal: true` to remove files outside of the current dir
-    production && new CleanWebpackPlugin([paths.appBuild], { allowExternal: true, verbose: false }),
+/*
+ This webpack config is actually two: one for modern browsers and one for the legacy ones (e.g. ie11)
 
-    production &&
-      new CopyWebpackPlugin([
-        {
-          from: paths.docImages,
-          to: paths.appBuild + '/images/embed-doc/images'
-        }
-      ]),
+ The modern one transpilies the code to ES2018 (i.e. with classes, async functions, etc.) and
+ does not include any polyfills. It's included in the result index.html using <script type="module">.
+ Legacy browsers ignore this tag.
 
-    production &&
-      new CopyWebpackPlugin([
-        {
-          from: paths.appPublic,
-          to: paths.appBuild,
-          ignore: [paths.appHtml]
-        }
-      ]),
+ The legacy one transpilies the code to ES5 and polyfills ES5+ features (promises, generators, etc.).
+ It's included in the result index.html using <script nomodule>. Modern browsers do not load such scripts.
+ There is a trick to have both scripts in the index.html. We generate this file only once, during the
+ build for modern browsers. We want unique file names for each version to invalidate browser cache. 
+ For modern browsers we generate a file suffix using the content hash (as previously). For legacy ones
+ we can't do the same, because we need to know the file names without the build.
+
+ To work-around the problem, we use a build timestamp which is added to the legacy build file names.
+ This way assuming that the build generates exactly the same entry chunks, we know the name of the 
+ legacy files. Inside index.html template we use a simple regex to replace the file hash of a modern 
+ file name to the timestamp. To simplify the regex we use ".m." suffix for modern files.
+
+ This whole thing might be simplified when (if) the following issue is resolved:
+ https://github.com/jantimon/html-webpack-plugin/issues/1051
+*/
+
+module.exports = ({ production = true }) => {
+  const timestamp = Date.now();
+
+  const commonConfig = {
+    mode: production ? 'production' : 'development',
+    devtool: production ? 'source-map' : 'cheap-module-source-map',
+    resolve: {
+      // Add '.ts' and '.tsx' as resolvable extensions.
+      extensions: ['.ts', '.tsx', '.js', '.json'],
+      // import from 'Docs/foo.md' is rewritten to import from 'sonar-docs/src/foo.md'
+      alias: {
+        Docs: path.resolve(__dirname, '../../sonar-docs/src')
+      }
+    },
+    optimization: {
+      splitChunks: { chunks: 'all' }
+    }
+  };
+
+  const commonRules = [
+    {
+      // extract styles from 'app/' into separate file
+      test: /\.css$/,
+      include: path.resolve(__dirname, '../src/main/js/app/styles'),
+      use: [
+        production ? MiniCssExtractPlugin.loader : 'style-loader',
+        utils.cssLoader({ production }),
+        utils.postcssLoader()
+      ]
+    },
+    {
+      // inline all other styles
+      test: /\.css$/,
+      exclude: path.resolve(__dirname, '../src/main/js/app/styles'),
+      use: ['style-loader', utils.cssLoader({ production }), utils.postcssLoader()]
+    },
+    {
+      test: /\.md$/,
+      use: 'raw-loader'
+    },
+    { test: require.resolve('react'), loader: 'expose-loader?React' },
+    { test: require.resolve('react-dom'), loader: 'expose-loader?ReactDOM' },
+    {
+      test: /\.directory-loader\.js$/,
+      loader: path.resolve(__dirname, 'documentation-loader/index.js')
+    }
+  ];
 
+  const commonPlugins = [
     production &&
       new MiniCssExtractPlugin({
         filename: 'css/[name].[chunkhash:8].css',
@@ -129,34 +116,132 @@ module.exports = ({ production = true }) => ({
       exotics: true, // used to compare "exotic" values, like dates
       memoizing: true,
       flattening: true
-    }),
+    })
+  ];
 
-    new HtmlWebpackPlugin({
-      inject: false,
-      template: paths.appHtml,
-      minify: utils.minifyParams({ production })
-    }),
+  return [
+    Object.assign({ name: 'modern' }, commonConfig, {
+      entry: [
+        !production && require.resolve('react-dev-utils/webpackHotDevClient'),
+        !production && require.resolve('react-error-overlay'),
+        './src/main/js/app/utils/setPublicPath.js',
+        './src/main/js/app/index.ts'
+      ].filter(Boolean),
+      output: {
+        path: paths.appBuild,
+        pathinfo: !production,
+        filename: production ? 'js/[name].m.[chunkhash:8].js' : 'js/[name].js',
+        chunkFilename: production ? 'js/[name].m.[chunkhash:8].chunk.js' : 'js/[name].chunk.js'
+      },
+      module: {
+        rules: [
+          {
+            test: /(\.js$|\.ts(x?)$)/,
+            exclude: /(node_modules|libs)/,
+            use: [
+              { loader: 'babel-loader' },
+              {
+                loader: 'ts-loader',
+                options: { transpileOnly: true }
+              }
+            ]
+          },
+          ...commonRules
+        ]
+      },
+      plugins: [
+        // `allowExternal: true` to remove files outside of the current dir
+        production &&
+          new CleanWebpackPlugin([paths.appBuild], { allowExternal: true, verbose: false }),
 
-    // keep `InterpolateHtmlPlugin` after `HtmlWebpackPlugin`
-    !production &&
-      new InterpolateHtmlPlugin({
-        WEB_CONTEXT: process.env.WEB_CONTEXT || '',
-        SERVER_STATUS: process.env.SERVER_STATUS || 'UP',
-        INSTANCE: process.env.INSTANCE || 'SonarQube',
-        OFFICIAL: process.env.OFFICIAL || 'true'
-      }),
+        production &&
+          new CopyWebpackPlugin([
+            {
+              from: paths.docImages,
+              to: paths.appBuild + '/images/embed-doc/images'
+            }
+          ]),
 
-    !production && new webpack.HotModuleReplacementPlugin()
-  ].filter(Boolean),
-  optimization: {
-    splitChunks: { chunks: 'all' }
-  },
-  performance: production
-    ? {
-        // ignore source maps and documentation chunk
-        assetFilter: assetFilename =>
-          !assetFilename.endsWith('.map') && !assetFilename.startsWith('js/docs.'),
-        hints: 'error'
-      }
-    : undefined
-});
+        production &&
+          new CopyWebpackPlugin([
+            {
+              from: paths.appPublic,
+              to: paths.appBuild,
+              ignore: [paths.appHtml]
+            }
+          ]),
+
+        ...commonPlugins,
+
+        new HtmlWebpackPlugin({
+          inject: false,
+          template: paths.appHtml,
+          minify: utils.minifyParams({ production }),
+          timestamp
+        }),
+
+        // keep `InterpolateHtmlPlugin` after `HtmlWebpackPlugin`
+        !production &&
+          new InterpolateHtmlPlugin({
+            WEB_CONTEXT: process.env.WEB_CONTEXT || '',
+            SERVER_STATUS: process.env.SERVER_STATUS || 'UP',
+            INSTANCE: process.env.INSTANCE || 'SonarQube',
+            OFFICIAL: process.env.OFFICIAL || 'true'
+          }),
+
+        !production && new webpack.HotModuleReplacementPlugin()
+      ].filter(Boolean),
+      performance: production
+        ? {
+            // ignore source maps and documentation chunk
+            assetFilter: assetFilename =>
+              !assetFilename.endsWith('.map') && !assetFilename.startsWith('js/docs.'),
+            hints: 'error'
+          }
+        : undefined
+    }),
+
+    Object.assign({ name: 'legacy' }, commonConfig, {
+      entry: [
+        !production && require.resolve('react-dev-utils/webpackHotDevClient'),
+        require.resolve('./polyfills'),
+        !production && require.resolve('react-error-overlay'),
+        './src/main/js/app/utils/setPublicPath.js',
+        './src/main/js/app/index.ts'
+      ].filter(Boolean),
+      output: {
+        path: paths.appBuild,
+        pathinfo: !production,
+        filename: production ? `js/[name].${timestamp}.js` : 'js/[name].js',
+        chunkFilename: production ? `js/[name].${timestamp}.chunk.js` : 'js/[name].chunk.js'
+      },
+      module: {
+        rules: [
+          {
+            test: /(\.js$|\.ts(x?)$)/,
+            exclude: /(node_modules|libs)/,
+            use: [
+              {
+                loader: 'babel-loader',
+                options: {
+                  configFile: path.join(__dirname, '../babel.config.legacy.js')
+                }
+              },
+              {
+                loader: 'ts-loader',
+                options: {
+                  configFile: 'tsconfig.legacy.json',
+                  transpileOnly: true
+                }
+              }
+            ]
+          },
+          ...commonRules
+        ]
+      },
+      plugins: [...commonPlugins, !production && new webpack.HotModuleReplacementPlugin()].filter(
+        Boolean
+      )
+    })
+  ];
+};
index 026fa8023fe8416c5ec2d8d601ad5f7a91bae509..a5b00c85c9654f2f6614ae472beb89495bc2e2d3 100644 (file)
     "ts-loader": "5.2.2",
     "typescript": "3.1.3",
     "typescript-eslint-parser": "20.0.0",
-    "webpack": "4.22.0",
+    "webpack": "4.27.1",
     "webpack-bundle-analyzer": "3.0.3",
     "webpack-dev-server": "3.1.10"
   },
index b46ea7ab73dc6156d83349e16613998a2807aa8a..11e69bd1c7189bc7831533014f880742cbe81ec0 100644 (file)
@@ -44,7 +44,8 @@
     window.official = %OFFICIAL%;
   </script>
   <% for (let chunk in htmlWebpackPlugin.files.chunks) { %>
-    <script src="%WEB_CONTEXT%/<%= htmlWebpackPlugin.files.chunks[chunk].entry %>"></script>
+    <script type="module" src="%WEB_CONTEXT%/<%= htmlWebpackPlugin.files.chunks[chunk].entry %>"></script>
+    <script nomodule src="%WEB_CONTEXT%/<%= htmlWebpackPlugin.files.chunks[chunk].entry.replace(/m\.[\w\d]+/, htmlWebpackPlugin.options.timestamp) %>"></script>
   <% } %>
 </body>
 
index cca5227cbadfca1ef4a7b093bfbf86f649e64531..10bc5623973148161f586dec58d55dba855c546e 100644 (file)
@@ -22,9 +22,10 @@ process.env.NODE_ENV = 'production';
 
 const webpack = require('webpack');
 const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer');
-const getConfig = require('../config/webpack.config');
+const getConfigs = require('../config/webpack.config');
 
-const config = getConfig({ production: true });
+const configs = getConfigs({ production: true });
+const config = configs.find(config => config.name === 'modern');
 
 config.plugins.push(new BundleAnalyzerPlugin());
 
index 1b1a952c43035c36b3ce82af622a8fe49afb19dc..47aaf51827b6f3f5999bc8ab88d8265200377ab7 100644 (file)
@@ -24,44 +24,44 @@ const chalk = require('chalk');
 const webpack = require('webpack');
 const sortBy = require('lodash/sortBy');
 const formatSize = require('./utils/formatSize');
-const getConfig = require('../config/webpack.config');
+const getConfigs = require('../config/webpack.config');
 
-const config = getConfig({ production: true });
+const configs = getConfigs({ production: true });
 
 function build() {
   console.log(chalk.cyan.bold('Creating optimized production build...'));
   console.log();
 
-  webpack(config, (err, stats) => {
+  webpack(configs, (err, stats) => {
     if (err) {
       console.log(chalk.red.bold('Failed to create a production build!'));
       console.log(chalk.red(err.message || err));
       process.exit(1);
     }
 
-    if (stats.compilation.errors && stats.compilation.errors.length) {
-      console.log(chalk.red.bold('Failed to create a production build!'));
-      stats.compilation.errors.forEach(err => console.log(chalk.red(err.message || err)));
-      process.exit(1);
-    }
-
-    const jsonStats = stats.toJson();
-    const onlyJS = jsonStats.assets.filter(asset => asset.name.endsWith('.js'));
-
-    console.log(`Biggest js chunks (${onlyJS.length} total):`);
-    sortBy(onlyJS, asset => -asset.size)
-      .slice(0, 5)
-      .forEach(asset => {
-        let sizeLabel = formatSize(asset.size);
-        const leftPadding = ' '.repeat(Math.max(0, 8 - sizeLabel.length));
-        sizeLabel = leftPadding + sizeLabel;
-        console.log('', chalk.yellow(sizeLabel), asset.name);
-      });
-    console.log();
+    const report = (stats, bundleName, filesLimit = 10) => {
+      if (stats.compilation.errors && stats.compilation.errors.length) {
+        console.log(chalk.red.bold('Failed to create a production build!'));
+        stats.compilation.errors.forEach(err => console.log(chalk.red(err.message || err)));
+        process.exit(1);
+      }
+      const jsonStats = stats.toJson();
+      const onlyJS = jsonStats.assets.filter(asset => asset.name.endsWith('.js'));
+      console.log(`Biggest js chunks (${onlyJS.length} total) [${bundleName}]:`);
+      sortBy(onlyJS, asset => -asset.size)
+        .slice(0, filesLimit)
+        .forEach(asset => {
+          let sizeLabel = formatSize(asset.size);
+          const leftPadding = ' '.repeat(Math.max(0, 8 - sizeLabel.length));
+          sizeLabel = leftPadding + sizeLabel;
+          console.log('', chalk.yellow(sizeLabel), asset.name);
+        });
+      console.log();
+    };
 
-    const seconds = jsonStats.time / 1000;
-    console.log('Duration: ' + seconds.toFixed(2) + 's');
+    report(stats.stats[0], 'modern');
     console.log();
+    report(stats.stats[1], 'legacy');
 
     console.log(chalk.green.bold('Compiled successfully!'));
   });
index a4abf2bc2418894fee691a9976f338490779b6ee..36ca8d12374e10338276e69143963d094797ab2f 100644 (file)
@@ -28,10 +28,11 @@ const clearConsole = require('react-dev-utils/clearConsole');
 const formatWebpackMessages = require('react-dev-utils/formatWebpackMessages');
 const errorOverlayMiddleware = require('react-error-overlay/middleware');
 const getMessages = require('./utils/getMessages');
-const getConfig = require('../config/webpack.config');
+const getConfigs = require('../config/webpack.config');
 const paths = require('../config/paths');
 
-const config = getConfig({ production: false });
+const configs = getConfigs({ production: false });
+const config = configs.find(config => config.name === 'modern');
 
 const port = process.env.PORT || 3000;
 const protocol = process.env.HTTPS === 'true' ? 'https' : 'http';
index de52341049c72cd31c02e58b4cf7d134d0f999da..c71eb6f7a16af00e7bedc4533a8acc85dcbf4a4e 100644 (file)
@@ -7,7 +7,7 @@
     "noImplicitAny": true,
     "strict": true,
     "strictFunctionTypes": false,
-    "target": "es5",
+    "target": "es2018",
     "jsx": "react",
     "lib": ["es2017", "dom"],
     "module": "esnext",
diff --git a/server/sonar-web/tsconfig.legacy.json b/server/sonar-web/tsconfig.legacy.json
new file mode 100644 (file)
index 0000000..90b979b
--- /dev/null
@@ -0,0 +1,6 @@
+{
+  "extends": "./tsconfig.json",
+  "compilerOptions": {
+    "target": "es5"
+  }
+}
index 25fe4a6f33fafdf1fbcc569323e17a9d180ad78e..01bc6f84ee2eb605c990da4576bafa116ef6e37b 100644 (file)
   resolved "http://registry.npmjs.org/@types/valid-url/-/valid-url-1.0.2.tgz#60fa435ce24bfd5ba107b8d2a80796aeaf3a8f45"
   integrity sha1-YPpDXOJL/VuhB7jSqAeWrq86j0U=
 
-"@webassemblyjs/ast@1.7.8":
-  version "1.7.8"
-  resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.7.8.tgz#f31f480debeef957f01b623f27eabc695fa4fe8f"
-  integrity sha512-dOrtdtEyB8sInpl75yLPNksY4sRl0j/+t6aHyB/YA+ab9hV3Fo7FmG12FHzP+2MvWVAJtDb+6eXR5EZbZJ+uVg==
-  dependencies:
-    "@webassemblyjs/helper-module-context" "1.7.8"
-    "@webassemblyjs/helper-wasm-bytecode" "1.7.8"
-    "@webassemblyjs/wast-parser" "1.7.8"
-
-"@webassemblyjs/floating-point-hex-parser@1.7.8":
-  version "1.7.8"
-  resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.7.8.tgz#1b3ed0e27e384032254e9322fc646dd3e70ef1b9"
-  integrity sha512-kn2zNKGsbql5i56VAgRYkpG+VazqHhQQZQycT2uXAazrAEDs23gy+Odkh5VblybjnwX2/BITkDtNmSO76hdIvQ==
-
-"@webassemblyjs/helper-api-error@1.7.8":
-  version "1.7.8"
-  resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.7.8.tgz#a2b49c11f615e736f815ec927f035dcfa690d572"
-  integrity sha512-xUwxDXsd1dUKArJEP5wWM5zxgCSwZApSOJyP1XO7M8rNUChUDblcLQ4FpzTpWG2YeylMwMl1MlP5Ztryiz1x4g==
-
-"@webassemblyjs/helper-buffer@1.7.8":
-  version "1.7.8"
-  resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.7.8.tgz#3fc66bfa09c1c60e824cf3d5887826fac062877d"
-  integrity sha512-WXiIMnuvuwlhWvVOm8xEXU9DnHaa3AgAU0ZPfvY8vO1cSsmYb2WbGbHnMLgs43vXnA7XAob9b56zuZaMkxpCBg==
-
-"@webassemblyjs/helper-code-frame@1.7.8":
-  version "1.7.8"
-  resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.7.8.tgz#cc5a7e9522b70e7580df056dfd34020cf29645b0"
-  integrity sha512-TLQxyD9qGOIdX5LPQOPo0Ernd88U5rHkFb8WAjeMIeA0sPjCHeVPaGqUGGIXjUcblUkjuDAc07bruCcNHUrHDA==
-  dependencies:
-    "@webassemblyjs/wast-printer" "1.7.8"
-
-"@webassemblyjs/helper-fsm@1.7.8":
-  version "1.7.8"
-  resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.7.8.tgz#fe4607430af466912797c21acafd3046080182ea"
-  integrity sha512-TjK0CnD8hAPkV5mbSp5aWl6SO1+H3WFcjWtixWoy8EMA99YnNzYhpc/WSYWhf7yrhpzkq5tZB0tvLK3Svr3IXA==
-
-"@webassemblyjs/helper-module-context@1.7.8":
-  version "1.7.8"
-  resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.7.8.tgz#3c2e7ee93d14ff4768ba66fb1be42fdc9dc7160a"
-  integrity sha512-uCutAKR7Nm0VsFixcvnB4HhAyHouNbj0Dx1p7eRjFjXGGZ+N7ftTaG1ZbWCasAEbtwGj54LP8+lkBZdTCPmLGg==
-
-"@webassemblyjs/helper-wasm-bytecode@1.7.8":
-  version "1.7.8"
-  resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.7.8.tgz#89bdb78cd6dd5209ae2ed2925de78d0f0e00b6f0"
-  integrity sha512-AdCCE3BMW6V34WYaKUmPgVHa88t2Z14P4/0LjLwuGkI0X6pf7nzp0CehzVVk51cKm2ymVXjl9dCG+gR1yhITIQ==
-
-"@webassemblyjs/helper-wasm-section@1.7.8":
-  version "1.7.8"
-  resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.7.8.tgz#c68ef7d26a6fc12421b2e6e56f9bc810dfb33e87"
-  integrity sha512-BkBhYQuzyl4hgTGOKo87Vdw6f9nj8HhI7WYpI0MCC5qFa5ahrAPOGgyETVdnRbv+Rjukl9MxxfDmVcVC435lDg==
-  dependencies:
-    "@webassemblyjs/ast" "1.7.8"
-    "@webassemblyjs/helper-buffer" "1.7.8"
-    "@webassemblyjs/helper-wasm-bytecode" "1.7.8"
-    "@webassemblyjs/wasm-gen" "1.7.8"
-
-"@webassemblyjs/ieee754@1.7.8":
-  version "1.7.8"
-  resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.7.8.tgz#1f37974b13cb486a9237e73ce04cac7a2f1265ed"
-  integrity sha512-tOarWChdG1a3y1yqCX0JMDKzrat5tQe4pV6K/TX19BcXsBLYxFQOL1DEDa5KG9syeyvCrvZ+i1+Mv1ExngvktQ==
+"@webassemblyjs/ast@1.7.11":
+  version "1.7.11"
+  resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.7.11.tgz#b988582cafbb2b095e8b556526f30c90d057cace"
+  integrity sha512-ZEzy4vjvTzScC+SH8RBssQUawpaInUdMTYwYYLh54/s8TuT0gBLuyUnppKsVyZEi876VmmStKsUs28UxPgdvrA==
+  dependencies:
+    "@webassemblyjs/helper-module-context" "1.7.11"
+    "@webassemblyjs/helper-wasm-bytecode" "1.7.11"
+    "@webassemblyjs/wast-parser" "1.7.11"
+
+"@webassemblyjs/floating-point-hex-parser@1.7.11":
+  version "1.7.11"
+  resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.7.11.tgz#a69f0af6502eb9a3c045555b1a6129d3d3f2e313"
+  integrity sha512-zY8dSNyYcgzNRNT666/zOoAyImshm3ycKdoLsyDw/Bwo6+/uktb7p4xyApuef1dwEBo/U/SYQzbGBvV+nru2Xg==
+
+"@webassemblyjs/helper-api-error@1.7.11":
+  version "1.7.11"
+  resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.7.11.tgz#c7b6bb8105f84039511a2b39ce494f193818a32a"
+  integrity sha512-7r1qXLmiglC+wPNkGuXCvkmalyEstKVwcueZRP2GNC2PAvxbLYwLLPr14rcdJaE4UtHxQKfFkuDFuv91ipqvXg==
+
+"@webassemblyjs/helper-buffer@1.7.11":
+  version "1.7.11"
+  resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.7.11.tgz#3122d48dcc6c9456ed982debe16c8f37101df39b"
+  integrity sha512-MynuervdylPPh3ix+mKZloTcL06P8tenNH3sx6s0qE8SLR6DdwnfgA7Hc9NSYeob2jrW5Vql6GVlsQzKQCa13w==
+
+"@webassemblyjs/helper-code-frame@1.7.11":
+  version "1.7.11"
+  resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.7.11.tgz#cf8f106e746662a0da29bdef635fcd3d1248364b"
+  integrity sha512-T8ESC9KMXFTXA5urJcyor5cn6qWeZ4/zLPyWeEXZ03hj/x9weSokGNkVCdnhSabKGYWxElSdgJ+sFa9G/RdHNw==
+  dependencies:
+    "@webassemblyjs/wast-printer" "1.7.11"
+
+"@webassemblyjs/helper-fsm@1.7.11":
+  version "1.7.11"
+  resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.7.11.tgz#df38882a624080d03f7503f93e3f17ac5ac01181"
+  integrity sha512-nsAQWNP1+8Z6tkzdYlXT0kxfa2Z1tRTARd8wYnc/e3Zv3VydVVnaeePgqUzFrpkGUyhUUxOl5ML7f1NuT+gC0A==
+
+"@webassemblyjs/helper-module-context@1.7.11":
+  version "1.7.11"
+  resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.7.11.tgz#d874d722e51e62ac202476935d649c802fa0e209"
+  integrity sha512-JxfD5DX8Ygq4PvXDucq0M+sbUFA7BJAv/GGl9ITovqE+idGX+J3QSzJYz+LwQmL7fC3Rs+utvWoJxDb6pmC0qg==
+
+"@webassemblyjs/helper-wasm-bytecode@1.7.11":
+  version "1.7.11"
+  resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.7.11.tgz#dd9a1e817f1c2eb105b4cf1013093cb9f3c9cb06"
+  integrity sha512-cMXeVS9rhoXsI9LLL4tJxBgVD/KMOKXuFqYb5oCJ/opScWpkCMEz9EJtkonaNcnLv2R3K5jIeS4TRj/drde1JQ==
+
+"@webassemblyjs/helper-wasm-section@1.7.11":
+  version "1.7.11"
+  resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.7.11.tgz#9c9ac41ecf9fbcfffc96f6d2675e2de33811e68a"
+  integrity sha512-8ZRY5iZbZdtNFE5UFunB8mmBEAbSI3guwbrsCl4fWdfRiAcvqQpeqd5KHhSWLL5wuxo53zcaGZDBU64qgn4I4Q==
+  dependencies:
+    "@webassemblyjs/ast" "1.7.11"
+    "@webassemblyjs/helper-buffer" "1.7.11"
+    "@webassemblyjs/helper-wasm-bytecode" "1.7.11"
+    "@webassemblyjs/wasm-gen" "1.7.11"
+
+"@webassemblyjs/ieee754@1.7.11":
+  version "1.7.11"
+  resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.7.11.tgz#c95839eb63757a31880aaec7b6512d4191ac640b"
+  integrity sha512-Mmqx/cS68K1tSrvRLtaV/Lp3NZWzXtOHUW2IvDvl2sihAwJh4ACE0eL6A8FvMyDG9abes3saB6dMimLOs+HMoQ==
   dependencies:
     "@xtuc/ieee754" "^1.2.0"
 
-"@webassemblyjs/leb128@1.7.8":
-  version "1.7.8"
-  resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.7.8.tgz#1bee83426819192db2ea1a234b84c7ebc6d34c1f"
-  integrity sha512-GCYeGPgUFWJiZuP4NICbcyUQNxNLJIf476Ei+K+jVuuebtLpfvwkvYT6iTUE7oZYehhkor4Zz2g7SJ/iZaPudQ==
+"@webassemblyjs/leb128@1.7.11":
+  version "1.7.11"
+  resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.7.11.tgz#d7267a1ee9c4594fd3f7e37298818ec65687db63"
+  integrity sha512-vuGmgZjjp3zjcerQg+JA+tGOncOnJLWVkt8Aze5eWQLwTQGNgVLcyOTqgSCxWTR4J42ijHbBxnuRaL1Rv7XMdw==
   dependencies:
     "@xtuc/long" "4.2.1"
 
-"@webassemblyjs/utf8@1.7.8":
-  version "1.7.8"
-  resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.7.8.tgz#2b489d5cf43e0aebb93d8e2d792aff9879c61f05"
-  integrity sha512-9X+f0VV+xNXW2ujfIRSXBJENGE6Qh7bNVKqu3yDjTFB3ar3nsThsGBBKdTG58aXOm2iUH6v28VIf88ymPXODHA==
-
-"@webassemblyjs/wasm-edit@1.7.8":
-  version "1.7.8"
-  resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.7.8.tgz#f8bdbe7088718eca27b1c349bb7c06b8a457950c"
-  integrity sha512-6D3Hm2gFixrfyx9XjSON4ml1FZTugqpkIz5Awvrou8fnpyprVzcm4X8pyGRtA2Piixjl3DqmX/HB1xdWyE097A==
-  dependencies:
-    "@webassemblyjs/ast" "1.7.8"
-    "@webassemblyjs/helper-buffer" "1.7.8"
-    "@webassemblyjs/helper-wasm-bytecode" "1.7.8"
-    "@webassemblyjs/helper-wasm-section" "1.7.8"
-    "@webassemblyjs/wasm-gen" "1.7.8"
-    "@webassemblyjs/wasm-opt" "1.7.8"
-    "@webassemblyjs/wasm-parser" "1.7.8"
-    "@webassemblyjs/wast-printer" "1.7.8"
-
-"@webassemblyjs/wasm-gen@1.7.8":
-  version "1.7.8"
-  resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.7.8.tgz#7e8abf1545eae74ac6781d545c034af3cfd0c7d5"
-  integrity sha512-a7O/wE6eBeVKKUYgpMK7NOHmMADD85rSXLe3CqrWRDwWff5y3cSVbzpN6Qv3z6C4hdkpq9qyij1Ga1kemOZGvQ==
-  dependencies:
-    "@webassemblyjs/ast" "1.7.8"
-    "@webassemblyjs/helper-wasm-bytecode" "1.7.8"
-    "@webassemblyjs/ieee754" "1.7.8"
-    "@webassemblyjs/leb128" "1.7.8"
-    "@webassemblyjs/utf8" "1.7.8"
-
-"@webassemblyjs/wasm-opt@1.7.8":
-  version "1.7.8"
-  resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.7.8.tgz#7ada6e211914728fce02ff0ff9c344edc6d41f26"
-  integrity sha512-3lbQ0PT81NHCdi1sR/7+SNpZadM4qYcTSr62nFFAA7e5lFwJr14M1Gi+A/Y3PgcDWOHYjsaNGPpPU0H03N6Blg==
-  dependencies:
-    "@webassemblyjs/ast" "1.7.8"
-    "@webassemblyjs/helper-buffer" "1.7.8"
-    "@webassemblyjs/wasm-gen" "1.7.8"
-    "@webassemblyjs/wasm-parser" "1.7.8"
-
-"@webassemblyjs/wasm-parser@1.7.8":
-  version "1.7.8"
-  resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.7.8.tgz#dac47c291fb6a3e63529aecd647592cd34afbf94"
-  integrity sha512-rZ/zlhp9DHR/05zh1MbAjT2t624sjrPP/OkJCjXqzm7ynH+nIdNcn9Ixc+qzPMFXhIrk0rBoQ3to6sEIvHh9jQ==
-  dependencies:
-    "@webassemblyjs/ast" "1.7.8"
-    "@webassemblyjs/helper-api-error" "1.7.8"
-    "@webassemblyjs/helper-wasm-bytecode" "1.7.8"
-    "@webassemblyjs/ieee754" "1.7.8"
-    "@webassemblyjs/leb128" "1.7.8"
-    "@webassemblyjs/utf8" "1.7.8"
-
-"@webassemblyjs/wast-parser@1.7.8":
-  version "1.7.8"
-  resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.7.8.tgz#f8aab9a450c048c1f9537695c89faeb92fabfba5"
-  integrity sha512-Q/zrvtUvzWuSiJMcSp90fi6gp2nraiHXjTV2VgAluVdVapM4gy1MQn7akja2p6eSBDQpKJPJ6P4TxRkghRS5dg==
-  dependencies:
-    "@webassemblyjs/ast" "1.7.8"
-    "@webassemblyjs/floating-point-hex-parser" "1.7.8"
-    "@webassemblyjs/helper-api-error" "1.7.8"
-    "@webassemblyjs/helper-code-frame" "1.7.8"
-    "@webassemblyjs/helper-fsm" "1.7.8"
+"@webassemblyjs/utf8@1.7.11":
+  version "1.7.11"
+  resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.7.11.tgz#06d7218ea9fdc94a6793aa92208160db3d26ee82"
+  integrity sha512-C6GFkc7aErQIAH+BMrIdVSmW+6HSe20wg57HEC1uqJP8E/xpMjXqQUxkQw07MhNDSDcGpxI9G5JSNOQCqJk4sA==
+
+"@webassemblyjs/wasm-edit@1.7.11":
+  version "1.7.11"
+  resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.7.11.tgz#8c74ca474d4f951d01dbae9bd70814ee22a82005"
+  integrity sha512-FUd97guNGsCZQgeTPKdgxJhBXkUbMTY6hFPf2Y4OedXd48H97J+sOY2Ltaq6WGVpIH8o/TGOVNiVz/SbpEMJGg==
+  dependencies:
+    "@webassemblyjs/ast" "1.7.11"
+    "@webassemblyjs/helper-buffer" "1.7.11"
+    "@webassemblyjs/helper-wasm-bytecode" "1.7.11"
+    "@webassemblyjs/helper-wasm-section" "1.7.11"
+    "@webassemblyjs/wasm-gen" "1.7.11"
+    "@webassemblyjs/wasm-opt" "1.7.11"
+    "@webassemblyjs/wasm-parser" "1.7.11"
+    "@webassemblyjs/wast-printer" "1.7.11"
+
+"@webassemblyjs/wasm-gen@1.7.11":
+  version "1.7.11"
+  resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.7.11.tgz#9bbba942f22375686a6fb759afcd7ac9c45da1a8"
+  integrity sha512-U/KDYp7fgAZX5KPfq4NOupK/BmhDc5Kjy2GIqstMhvvdJRcER/kUsMThpWeRP8BMn4LXaKhSTggIJPOeYHwISA==
+  dependencies:
+    "@webassemblyjs/ast" "1.7.11"
+    "@webassemblyjs/helper-wasm-bytecode" "1.7.11"
+    "@webassemblyjs/ieee754" "1.7.11"
+    "@webassemblyjs/leb128" "1.7.11"
+    "@webassemblyjs/utf8" "1.7.11"
+
+"@webassemblyjs/wasm-opt@1.7.11":
+  version "1.7.11"
+  resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.7.11.tgz#b331e8e7cef8f8e2f007d42c3a36a0580a7d6ca7"
+  integrity sha512-XynkOwQyiRidh0GLua7SkeHvAPXQV/RxsUeERILmAInZegApOUAIJfRuPYe2F7RcjOC9tW3Cb9juPvAC/sCqvg==
+  dependencies:
+    "@webassemblyjs/ast" "1.7.11"
+    "@webassemblyjs/helper-buffer" "1.7.11"
+    "@webassemblyjs/wasm-gen" "1.7.11"
+    "@webassemblyjs/wasm-parser" "1.7.11"
+
+"@webassemblyjs/wasm-parser@1.7.11":
+  version "1.7.11"
+  resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.7.11.tgz#6e3d20fa6a3519f6b084ef9391ad58211efb0a1a"
+  integrity sha512-6lmXRTrrZjYD8Ng8xRyvyXQJYUQKYSXhJqXOBLw24rdiXsHAOlvw5PhesjdcaMadU/pyPQOJ5dHreMjBxwnQKg==
+  dependencies:
+    "@webassemblyjs/ast" "1.7.11"
+    "@webassemblyjs/helper-api-error" "1.7.11"
+    "@webassemblyjs/helper-wasm-bytecode" "1.7.11"
+    "@webassemblyjs/ieee754" "1.7.11"
+    "@webassemblyjs/leb128" "1.7.11"
+    "@webassemblyjs/utf8" "1.7.11"
+
+"@webassemblyjs/wast-parser@1.7.11":
+  version "1.7.11"
+  resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.7.11.tgz#25bd117562ca8c002720ff8116ef9072d9ca869c"
+  integrity sha512-lEyVCg2np15tS+dm7+JJTNhNWq9yTZvi3qEhAIIOaofcYlUp0UR5/tVqOwa/gXYr3gjwSZqw+/lS9dscyLelbQ==
+  dependencies:
+    "@webassemblyjs/ast" "1.7.11"
+    "@webassemblyjs/floating-point-hex-parser" "1.7.11"
+    "@webassemblyjs/helper-api-error" "1.7.11"
+    "@webassemblyjs/helper-code-frame" "1.7.11"
+    "@webassemblyjs/helper-fsm" "1.7.11"
     "@xtuc/long" "4.2.1"
 
-"@webassemblyjs/wast-printer@1.7.8":
-  version "1.7.8"
-  resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.7.8.tgz#e7e965782c1912f6a965f14a53ff43d8ad0403a5"
-  integrity sha512-GllIthRtwTxRDAURRNXscu7Napzmdf1jt1gpiZiK/QN4fH0lSGs3OTmvdfsMNP7tqI4B3ZtfaaWRlNIQug6Xyg==
+"@webassemblyjs/wast-printer@1.7.11":
+  version "1.7.11"
+  resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.7.11.tgz#c4245b6de242cb50a2cc950174fdbf65c78d7813"
+  integrity sha512-m5vkAsuJ32QpkdkDOUPGSltrg8Cuk3KBx4YrmAGQwCZPRdUHXxG4phIOuuycLemHFr74sWL9Wthqss4fzdzSwg==
   dependencies:
-    "@webassemblyjs/ast" "1.7.8"
-    "@webassemblyjs/wast-parser" "1.7.8"
+    "@webassemblyjs/ast" "1.7.11"
+    "@webassemblyjs/wast-parser" "1.7.11"
     "@xtuc/long" "4.2.1"
 
 "@xtuc/ieee754@^1.2.0":
@@ -2150,6 +2150,26 @@ cacache@^10.0.4:
     unique-filename "^1.1.0"
     y18n "^4.0.0"
 
+cacache@^11.0.2:
+  version "11.3.1"
+  resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.3.1.tgz#d09d25f6c4aca7a6d305d141ae332613aa1d515f"
+  integrity sha512-2PEw4cRRDu+iQvBTTuttQifacYjLPhET+SYO/gEFMy8uhi+jlJREDAjSF5FWSdV/Aw5h18caHA7vMTw2c+wDzA==
+  dependencies:
+    bluebird "^3.5.1"
+    chownr "^1.0.1"
+    figgy-pudding "^3.1.0"
+    glob "^7.1.2"
+    graceful-fs "^4.1.11"
+    lru-cache "^4.1.3"
+    mississippi "^3.0.0"
+    mkdirp "^0.5.1"
+    move-concurrently "^1.0.1"
+    promise-inflight "^1.0.1"
+    rimraf "^2.6.2"
+    ssri "^6.0.0"
+    unique-filename "^1.1.0"
+    y18n "^4.0.0"
+
 cache-base@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
@@ -2482,10 +2502,10 @@ commander@^2.11.0, commander@^2.14.1, commander@^2.18.0, commander@^2.9.0:
   resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a"
   integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==
 
-commander@~2.13.0:
-  version "2.13.0"
-  resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c"
-  integrity sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==
+commander@~2.17.1:
+  version "2.17.1"
+  resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf"
+  integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==
 
 commondir@^1.0.1:
   version "1.0.1"
@@ -4091,6 +4111,11 @@ fbjs@^0.8.0, fbjs@^0.8.9:
     setimmediate "^1.0.5"
     ua-parser-js "^0.7.18"
 
+figgy-pudding@^3.1.0, figgy-pudding@^3.5.1:
+  version "3.5.1"
+  resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790"
+  integrity sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==
+
 figures@^1.7.0:
   version "1.7.0"
   resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e"
@@ -4185,6 +4210,15 @@ find-cache-dir@^1.0.0:
     make-dir "^1.0.0"
     pkg-dir "^2.0.0"
 
+find-cache-dir@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.0.0.tgz#4c1faed59f45184530fb9d7fa123a4d04a98472d"
+  integrity sha512-LDUY6V1Xs5eFskUVYtIwatojt6+9xC9Chnlk/jYOOvn3FAFfSaWddxahDGyNHh0b2dMXa6YW2m0tk8TdVaXHlA==
+  dependencies:
+    commondir "^1.0.1"
+    make-dir "^1.0.0"
+    pkg-dir "^3.0.0"
+
 find-parent-dir@^0.3.0:
   version "0.3.0"
   resolved "https://registry.yarnpkg.com/find-parent-dir/-/find-parent-dir-0.3.0.tgz#33c44b429ab2b2f0646299c5f9f718f376ff8d54"
@@ -6487,6 +6521,14 @@ lru-cache@^4.0.1, lru-cache@^4.1.1:
     pseudomap "^1.0.2"
     yallist "^2.1.2"
 
+lru-cache@^4.1.3:
+  version "4.1.5"
+  resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd"
+  integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==
+  dependencies:
+    pseudomap "^1.0.2"
+    yallist "^2.1.2"
+
 lunr@2.3.4:
   version "2.3.4"
   resolved "https://registry.yarnpkg.com/lunr/-/lunr-2.3.4.tgz#ecc045a48a6ecd96f1bb812fff70b33731753412"
@@ -6787,6 +6829,22 @@ mississippi@^2.0.0:
     stream-each "^1.1.0"
     through2 "^2.0.0"
 
+mississippi@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022"
+  integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==
+  dependencies:
+    concat-stream "^1.5.0"
+    duplexify "^3.4.2"
+    end-of-stream "^1.1.0"
+    flush-write-stream "^1.0.0"
+    from2 "^2.1.0"
+    parallel-transform "^1.1.0"
+    pump "^3.0.0"
+    pumpify "^1.3.3"
+    stream-each "^1.1.0"
+    through2 "^2.0.0"
+
 mixin-deep@^1.2.0:
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.2.0.tgz#d02b8c6f8b6d4b8f5982d3fd009c4919851c3fe2"
@@ -7849,6 +7907,14 @@ pump@^2.0.0, pump@^2.0.1:
     end-of-stream "^1.1.0"
     once "^1.3.1"
 
+pump@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
+  integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==
+  dependencies:
+    end-of-stream "^1.1.0"
+    once "^1.3.1"
+
 pumpify@^1.3.3:
   version "1.4.0"
   resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.4.0.tgz#80b7c5df7e24153d03f0e7ac8a05a5d068bd07fb"
@@ -8822,7 +8888,7 @@ scheduler@^0.10.0:
     loose-envify "^1.1.0"
     object-assign "^4.1.1"
 
-schema-utils@^0.4.4, schema-utils@^0.4.5:
+schema-utils@^0.4.4:
   version "0.4.5"
   resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.5.tgz#21836f0608aac17b78f9e3e24daff14a5ca13a3e"
   integrity sha512-yYrjb9TX2k/J1Y5UNy3KYdZq10xhYcF8nMpAW6o3hy6Q8WSIEf9lJHG/ePnOBfziPM3fvQwfOwa13U/Fh8qTfA==
@@ -9144,6 +9210,14 @@ source-map-support@^0.5.6:
     buffer-from "^1.0.0"
     source-map "^0.6.0"
 
+source-map-support@~0.5.6:
+  version "0.5.9"
+  resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f"
+  integrity sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==
+  dependencies:
+    buffer-from "^1.0.0"
+    source-map "^0.6.0"
+
 source-map-url@^0.4.0:
   version "0.4.0"
   resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
@@ -9254,6 +9328,13 @@ ssri@^5.2.4:
   dependencies:
     safe-buffer "^5.1.1"
 
+ssri@^6.0.0:
+  version "6.0.1"
+  resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8"
+  integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==
+  dependencies:
+    figgy-pudding "^3.5.1"
+
 stack-utils@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.1.tgz#d4f33ab54e8e38778b0ca5cfd3b3afb12db68620"
@@ -9522,6 +9603,29 @@ tar@^2.2.1:
     fstream "^1.0.2"
     inherits "2"
 
+terser-webpack-plugin@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.1.0.tgz#cf7c25a1eee25bf121f4a587bb9e004e3f80e528"
+  integrity sha512-61lV0DSxMAZ8AyZG7/A4a3UPlrbOBo8NIQ4tJzLPAdGOQ+yoNC7l5ijEow27lBAL2humer01KLS6bGIMYQxKoA==
+  dependencies:
+    cacache "^11.0.2"
+    find-cache-dir "^2.0.0"
+    schema-utils "^1.0.0"
+    serialize-javascript "^1.4.0"
+    source-map "^0.6.1"
+    terser "^3.8.1"
+    webpack-sources "^1.1.0"
+    worker-farm "^1.5.2"
+
+terser@^3.8.1:
+  version "3.11.0"
+  resolved "https://registry.yarnpkg.com/terser/-/terser-3.11.0.tgz#60782893e1f4d6788acc696351f40636d0e37af0"
+  integrity sha512-5iLMdhEPIq3zFWskpmbzmKwMQixKmTYwY3Ox9pjtSklBLnHiuQ0GKJLhL1HSYtyffHM3/lDIFBnb82m9D7ewwQ==
+  dependencies:
+    commander "~2.17.1"
+    source-map "~0.6.1"
+    source-map-support "~0.5.6"
+
 test-exclude@^4.2.1:
   version "4.2.1"
   resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.2.1.tgz#dfa222f03480bca69207ca728b37d74b45f724fa"
@@ -9767,14 +9871,6 @@ ua-parser-js@^0.7.18:
   resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.18.tgz#a7bfd92f56edfb117083b69e31d2aa8882d4b1ed"
   integrity sha512-LtzwHlVHwFGTptfNSgezHp7WUlwiqb0gA9AALRbKaERfxwJoiX0A73QbTToxteIAuIaFshhgIZfqK8s7clqgnA==
 
-uglify-es@^3.3.4:
-  version "3.3.9"
-  resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.9.tgz#0c1c4f0700bed8dbc124cdb304d2592ca203e677"
-  integrity sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==
-  dependencies:
-    commander "~2.13.0"
-    source-map "~0.6.1"
-
 uglify-js@3.1.x:
   version "3.1.6"
   resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.1.6.tgz#918832602036e95d2318e11f27ee8461a8592c5d"
@@ -9798,20 +9894,6 @@ uglify-to-browserify@~1.0.0:
   resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7"
   integrity sha1-bgkk1r2mta/jSeOabWMoUKD4grc=
 
-uglifyjs-webpack-plugin@^1.2.4:
-  version "1.2.5"
-  resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.5.tgz#2ef8387c8f1a903ec5e44fa36f9f3cbdcea67641"
-  integrity sha512-hIQJ1yxAPhEA2yW/i7Fr+SXZVMp+VEI3d42RTHBgQd2yhp/1UdBcR3QEWPV5ahBxlqQDMEMTuTEvDHSFINfwSw==
-  dependencies:
-    cacache "^10.0.4"
-    find-cache-dir "^1.0.0"
-    schema-utils "^0.4.5"
-    serialize-javascript "^1.4.0"
-    source-map "^0.6.1"
-    uglify-es "^3.3.4"
-    webpack-sources "^1.1.0"
-    worker-farm "^1.5.2"
-
 uid-number@^0.0.6:
   version "0.0.6"
   resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81"
@@ -10234,15 +10316,15 @@ webpack-sources@^1.1.0, webpack-sources@^1.3.0:
     source-list-map "^2.0.0"
     source-map "~0.6.1"
 
-webpack@4.22.0:
-  version "4.22.0"
-  resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.22.0.tgz#b168111e2e7b05f5169ac484e79e62093ec39e0d"
-  integrity sha512-2+3EYFqyhPl12buLQ42QPHEEh8BHn3P9ipRvGRHhdfKJ1u9svhZ3QjhIoEdL5SeIhL5gfOZVbBnartYEabkEsg==
+webpack@4.27.1:
+  version "4.27.1"
+  resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.27.1.tgz#5f2e2db446d2266376fa15d7d2277a1a9c2e12bb"
+  integrity sha512-WArHiLvHrlfyRM8i7f+2SFbr/XbQ0bXqTkPF8JpHOzub5482Y3wx7rEO8stuLGOKOgZJcqcisLhD7LrM/+fVMw==
   dependencies:
-    "@webassemblyjs/ast" "1.7.8"
-    "@webassemblyjs/helper-module-context" "1.7.8"
-    "@webassemblyjs/wasm-edit" "1.7.8"
-    "@webassemblyjs/wasm-parser" "1.7.8"
+    "@webassemblyjs/ast" "1.7.11"
+    "@webassemblyjs/helper-module-context" "1.7.11"
+    "@webassemblyjs/wasm-edit" "1.7.11"
+    "@webassemblyjs/wasm-parser" "1.7.11"
     acorn "^5.6.2"
     acorn-dynamic-import "^3.0.0"
     ajv "^6.1.0"
@@ -10260,7 +10342,7 @@ webpack@4.22.0:
     node-libs-browser "^2.0.0"
     schema-utils "^0.4.4"
     tapable "^1.1.0"
-    uglifyjs-webpack-plugin "^1.2.4"
+    terser-webpack-plugin "^1.1.0"
     watchpack "^1.5.0"
     webpack-sources "^1.3.0"
 
index 2610aab0d227f064e99c26f43138bee9f7c1cf8e..6afc7cf95d9e05ada32ce3dc71520b4ce7dff4f8 100644 (file)
@@ -143,8 +143,8 @@ zip.doFirst {
 }
 // Check the size of the archive
 zip.doLast {
-  def minLength = 180000000
-  def maxLength = 185000000
+  def minLength = 185000000
+  def maxLength = 190000000
   def length = new File(distsDir, archiveName).length()
   if (length < minLength)
     throw new GradleException("$archiveName size ($length) too small. Min is $minLength")