From 5fad5511e9dc9ad3e2ffcfcbe12ea998d7b42691 Mon Sep 17 00:00:00 2001 From: Jack Westbrook Date: Thu, 11 Nov 2021 14:32:34 +0100 Subject: [PATCH] Build: Enable persistent cache for faster Webpack builds (#41430) * build(webpack): enable caching for development and production builds * build(webpack): introduce unminified production build script * build(typescript): introduce incremental flag to cache typechecking * chore(git): ignore typescript cache file * chore(webpack): bump dependencies to latest --- .gitignore | 1 + package.json | 33 ++-- scripts/webpack/webpack.dev.js | 9 + scripts/webpack/webpack.prod.js | 130 +++++++------- tsconfig.json | 3 +- yarn.lock | 293 +++++++++++++++++++++----------- 6 files changed, 298 insertions(+), 171 deletions(-) diff --git a/.gitignore b/.gitignore index b0f2c0dc90a..fa11d94d1b7 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,7 @@ awsconfig /.awcache /dist /public/build +public/dist/tsconfig.tsbuildinfo /public/views/index.html /public/views/error.html /emails/dist diff --git a/package.json b/package.json index 585269870ad..e167dd0411b 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ "scripts": { "api-tests": "jest --notify --watch --config=devenv/e2e-api-tests/jest.js", "build": "webpack --config scripts/webpack/webpack.prod.js", + "build:nominify": "webpack --config scripts/webpack/webpack.prod.js --env noMinify=1", "dev": "webpack --progress --color --config scripts/webpack/webpack.dev.js", "e2e": "./e2e/start-and-run-suite", "e2e:debug": "./e2e/start-and-run-suite debug", @@ -81,7 +82,7 @@ "@grafana/tsconfig": "^1.0.0-rc1", "@kusto/monaco-kusto": "4.0.6", "@microsoft/api-extractor": "7.18.16", - "@pmmmwh/react-refresh-webpack-plugin": "^0.5.0-rc.6", + "@pmmmwh/react-refresh-webpack-plugin": "^0.5.1", "@rtsao/plugin-proposal-class-properties": "7.0.1-patch.1", "@swc/core": "1.2.103", "@swc/helpers": "0.2.13", @@ -150,8 +151,8 @@ "babel-loader": "8.2.2", "babel-plugin-angularjs-annotate": "0.10.0", "copy-webpack-plugin": "9.0.1", - "css-loader": "6.4.0", - "css-minimizer-webpack-plugin": "^3.1.1", + "css-loader": "6.5.1", + "css-minimizer-webpack-plugin": "^3.1.3", "cypress": "8.4.1", "enzyme": "3.11.0", "enzyme-to-json": "3.4.4", @@ -166,9 +167,9 @@ "eslint-plugin-prettier": "4.0.0", "eslint-plugin-react": "7.22.0", "eslint-plugin-react-hooks": "4.2.0", - "eslint-webpack-plugin": "3.0.1", + "eslint-webpack-plugin": "3.1.0", "expect.js": "0.3.1", - "expose-loader": "3.0.0", + "expose-loader": "3.1.0", "file-loader": "6.2.0", "fork-ts-checker-webpack-plugin": "6.4.0", "fs-extra": "10.0.0", @@ -176,7 +177,7 @@ "glob": "7.1.6", "html-loader": "3.0.1", "html-webpack-harddisk-plugin": "2.0.0", - "html-webpack-plugin": "5.3.2", + "html-webpack-plugin": "5.5.0", "http-server": "14.0.0", "husky": "^7.0.0", "iconscout-unicons-tarball": "https://github.com/grafana/icons/tarball/63056cd833ba7ee4e94904492b3a8c0cabc38d28", @@ -187,13 +188,13 @@ "jest-matcher-utils": "26.0.0", "lerna": "^4.0.0", "lint-staged": "11.2.6", - "mini-css-extract-plugin": "2.4.2", + "mini-css-extract-plugin": "2.4.4", "module-alias": "2.2.2", "mutationobserver-shim": "0.3.3", "ngtemplate-loader": "2.1.0", "nodemon": "2.0.2", "postcss": "8.3.6", - "postcss-loader": "6.1.1", + "postcss-loader": "6.2.0", "postcss-reporter": "7.0.2", "prettier": "2.2.1", "raw-loader": "4.0.2", @@ -205,25 +206,25 @@ "rimraf": "3.0.1", "rxjs-spy": "8.0.0", "sass": "1.32.13", - "sass-loader": "12.1.0", + "sass-loader": "12.3.0", "sinon": "8.1.1", - "style-loader": "3.3.0", + "style-loader": "3.3.1", "stylelint": "13.13.1", "stylelint-config-prettier": "9.0.3", "stylelint-config-sass-guidelines": "8.0.0", - "terser-webpack-plugin": "5.2.4", + "terser-webpack-plugin": "5.2.5", "testing-library-selector": "^0.1.3", "ts-jest": "26.4.4", - "ts-loader": "8.3.0", + "ts-loader": "9.2.6", "ts-node": "10.4.0", "tslib": "2.3.1", "typescript": "4.4.3", "wait-on": "6.0.0", - "webpack": "5.58.1", - "webpack-bundle-analyzer": "4.4.2", + "webpack": "5.63.0", + "webpack-bundle-analyzer": "4.5.0", "webpack-cleanup-plugin": "0.5.1", - "webpack-cli": "4.9.0", - "webpack-dev-server": "4.3.1", + "webpack-cli": "4.9.1", + "webpack-dev-server": "4.4.0", "webpack-merge": "5.8.0" }, "dependencies": { diff --git a/scripts/webpack/webpack.dev.js b/scripts/webpack/webpack.dev.js index 1c37a02a448..fefab131135 100644 --- a/scripts/webpack/webpack.dev.js +++ b/scripts/webpack/webpack.dev.js @@ -59,6 +59,15 @@ module.exports = (env = {}) => splitChunks: false, }, + // enable persistent cache for faster cold starts + cache: { + type: 'filesystem', + name: 'grafana-default-development', + buildDependencies: { + config: [__filename], + }, + }, + plugins: [ parseInt(env.noTsCheck, 10) ? new DefinePlugin({}) // bogus plugin to satisfy webpack API diff --git a/scripts/webpack/webpack.prod.js b/scripts/webpack/webpack.prod.js index 22965676c88..7cd3037ce42 100644 --- a/scripts/webpack/webpack.prod.js +++ b/scripts/webpack/webpack.prod.js @@ -9,68 +9,80 @@ const MiniCssExtractPlugin = require('mini-css-extract-plugin'); const CssMinimizerPlugin = require('css-minimizer-webpack-plugin'); const getBabelConfig = require('./babel.config'); -module.exports = merge(common, { - mode: 'production', - devtool: 'source-map', +module.exports = (env = {}) => + merge(common, { + mode: 'production', + devtool: 'source-map', - entry: { - dark: './public/sass/grafana.dark.scss', - light: './public/sass/grafana.light.scss', - }, + entry: { + dark: './public/sass/grafana.dark.scss', + light: './public/sass/grafana.light.scss', + }, - module: { - // Note: order is bottom-to-top and/or right-to-left - rules: [ - { - test: /\.tsx?$/, - exclude: /node_modules/, - use: [ - { - loader: 'babel-loader', - options: getBabelConfig(), - }, - ], + module: { + // Note: order is bottom-to-top and/or right-to-left + rules: [ + { + test: /\.tsx?$/, + exclude: /node_modules/, + use: [ + { + loader: 'babel-loader', + options: getBabelConfig(), + }, + ], + }, + require('./sass.rule.js')({ + sourceMap: false, + preserveUrl: false, + }), + ], + }, + optimization: { + nodeEnv: 'production', + minimize: parseInt(env.noMinify, 10) !== 1, + minimizer: [ + new TerserPlugin({ + parallel: false, + }), + new CssMinimizerPlugin(), + ], + }, + + // enable persistent cache for faster builds + cache: { + type: 'filesystem', + name: 'grafana-default-production', + buildDependencies: { + config: [__filename], }, - require('./sass.rule.js')({ - sourceMap: false, - preserveUrl: false, + }, + + plugins: [ + new MiniCssExtractPlugin({ + filename: 'grafana.[name].[fullhash].css', }), - ], - }, - optimization: { - nodeEnv: 'production', - minimizer: [ - new TerserPlugin({ - parallel: false, + new HtmlWebpackPlugin({ + filename: path.resolve(__dirname, '../../public/views/error.html'), + template: path.resolve(__dirname, '../../public/views/error-template.html'), + inject: false, + excludeChunks: ['dark', 'light'], + chunksSortMode: 'none', + }), + new HtmlWebpackPlugin({ + filename: path.resolve(__dirname, '../../public/views/index.html'), + template: path.resolve(__dirname, '../../public/views/index-template.html'), + inject: false, + excludeChunks: ['manifest', 'dark', 'light'], + chunksSortMode: 'none', }), - new CssMinimizerPlugin(), + function () { + this.hooks.done.tap('Done', function (stats) { + if (stats.compilation.errors && stats.compilation.errors.length) { + console.log(stats.compilation.errors); + process.exit(1); + } + }); + }, ], - }, - plugins: [ - new MiniCssExtractPlugin({ - filename: 'grafana.[name].[fullhash].css', - }), - new HtmlWebpackPlugin({ - filename: path.resolve(__dirname, '../../public/views/error.html'), - template: path.resolve(__dirname, '../../public/views/error-template.html'), - inject: false, - excludeChunks: ['dark', 'light'], - chunksSortMode: 'none', - }), - new HtmlWebpackPlugin({ - filename: path.resolve(__dirname, '../../public/views/index.html'), - template: path.resolve(__dirname, '../../public/views/index-template.html'), - inject: false, - excludeChunks: ['manifest', 'dark', 'light'], - chunksSortMode: 'none', - }), - function () { - this.hooks.done.tap('Done', function (stats) { - if (stats.compilation.errors && stats.compilation.errors.length) { - console.log(stats.compilation.errors); - process.exit(1); - } - }); - }, - ], -}); + }); diff --git a/tsconfig.json b/tsconfig.json index 801c757570e..46296e5a4a2 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -7,7 +7,8 @@ "allowJs": true, "strict": true, "resolveJsonModule": true, - "useUnknownInCatchVariables": false + "useUnknownInCatchVariables": false, + "incremental": true }, "extends": "@grafana/tsconfig/base.json", "include": [ diff --git a/yarn.lock b/yarn.lock index a9037ee3caf..6933c865ada 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4716,7 +4716,7 @@ __metadata: languageName: node linkType: hard -"@pmmmwh/react-refresh-webpack-plugin@npm:^0.5.0-rc.6": +"@pmmmwh/react-refresh-webpack-plugin@npm:^0.5.1": version: 0.5.1 resolution: "@pmmmwh/react-refresh-webpack-plugin@npm:0.5.1" dependencies: @@ -7708,7 +7708,7 @@ __metadata: languageName: node linkType: hard -"@types/eslint@npm:*, @types/eslint@npm:^7.2.14": +"@types/eslint@npm:*, @types/eslint@npm:^7.28.2": version: 7.28.2 resolution: "@types/eslint@npm:7.28.2" dependencies: @@ -12086,7 +12086,7 @@ __metadata: languageName: node linkType: hard -"chokidar@npm:>=2.0.0 <4.0.0, chokidar@npm:>=3.0.0 <4.0.0, chokidar@npm:^3.2.2, chokidar@npm:^3.4.1, chokidar@npm:^3.4.2, chokidar@npm:^3.5.1": +"chokidar@npm:>=2.0.0 <4.0.0, chokidar@npm:>=3.0.0 <4.0.0, chokidar@npm:^3.2.2, chokidar@npm:^3.4.1, chokidar@npm:^3.4.2, chokidar@npm:^3.5.2": version: 3.5.2 resolution: "chokidar@npm:3.5.2" dependencies: @@ -12587,7 +12587,7 @@ __metadata: languageName: node linkType: hard -"commander@npm:^6.2.0, commander@npm:^6.2.1": +"commander@npm:^6.2.1": version: 6.2.1 resolution: "commander@npm:6.2.1" checksum: d7090410c0de6bc5c67d3ca41c41760d6d268f3c799e530aafb73b7437d1826bbf0d2a3edac33f8b57cc9887b4a986dce307fa5557e109be40eadb7c43b21742 @@ -13402,6 +13402,24 @@ __metadata: languageName: node linkType: hard +"css-loader@npm:6.5.1": + version: 6.5.1 + resolution: "css-loader@npm:6.5.1" + dependencies: + icss-utils: ^5.1.0 + postcss: ^8.2.15 + postcss-modules-extract-imports: ^3.0.0 + postcss-modules-local-by-default: ^4.0.0 + postcss-modules-scope: ^3.0.0 + postcss-modules-values: ^4.0.0 + postcss-value-parser: ^4.1.0 + semver: ^7.3.5 + peerDependencies: + webpack: ^5.0.0 + checksum: 5a3bedecb468038f09673d25c32d8db5b0baa6c38820253c54ce4c56c27a2250d5d5b4bace77dd5e20ba0a569604eb759362bab4e3128e7db2229e40857d4aca + languageName: node + linkType: hard + "css-loader@npm:^3.6.0": version: 3.6.0 resolution: "css-loader@npm:3.6.0" @@ -13445,13 +13463,12 @@ __metadata: languageName: node linkType: hard -"css-minimizer-webpack-plugin@npm:^3.1.1": - version: 3.1.1 - resolution: "css-minimizer-webpack-plugin@npm:3.1.1" +"css-minimizer-webpack-plugin@npm:^3.1.1, css-minimizer-webpack-plugin@npm:^3.1.3": + version: 3.1.3 + resolution: "css-minimizer-webpack-plugin@npm:3.1.3" dependencies: cssnano: ^5.0.6 jest-worker: ^27.0.2 - p-limit: ^3.0.2 postcss: ^8.3.5 schema-utils: ^3.1.0 serialize-javascript: ^6.0.0 @@ -13465,7 +13482,7 @@ __metadata: optional: true esbuild: optional: true - checksum: 9f0c7ec9367c13dc1fa22847949d33237bcf50f55941727608871af0ccae8ed5e281c2e99622d4dc4fedb696def40af03cb8be9be2d44bf15eb521dee938ef92 + checksum: 7169f4c5bc269c8683bccc0e06a64783de2d3c7163357f7b195d60b66f9ba7a381542194125a3fc554ee72bcc9dfa4ebf9d0e5fa77094833e30a59fa917f8c3e languageName: node linkType: hard @@ -15309,7 +15326,7 @@ __metadata: languageName: node linkType: hard -"enhanced-resolve@npm:^5.8.0, enhanced-resolve@npm:^5.8.3": +"enhanced-resolve@npm:^5.0.0, enhanced-resolve@npm:^5.8.0, enhanced-resolve@npm:^5.8.3": version: 5.8.3 resolution: "enhanced-resolve@npm:5.8.3" dependencies: @@ -15854,19 +15871,19 @@ __metadata: languageName: node linkType: hard -"eslint-webpack-plugin@npm:3.0.1": - version: 3.0.1 - resolution: "eslint-webpack-plugin@npm:3.0.1" +"eslint-webpack-plugin@npm:3.1.0": + version: 3.1.0 + resolution: "eslint-webpack-plugin@npm:3.1.0" dependencies: - "@types/eslint": ^7.2.14 - jest-worker: ^27.0.6 + "@types/eslint": ^7.28.2 + jest-worker: ^27.3.1 micromatch: ^4.0.4 normalize-path: ^3.0.0 - schema-utils: ^3.1.0 + schema-utils: ^3.1.1 peerDependencies: - eslint: ^7.0.0 + eslint: ^7.0.0 || ^8.0.0 webpack: ^5.0.0 - checksum: ef9241907d7b99eb7edad48e005c49aa73124875f9c910bfde1645dfe853f2cbbfce363c80b2c2157d00a23545caefa74c138a61c1deb7f8666ee3569a025549 + checksum: c6858e5f28d0ca5c5982a7a00cad99a25a8e117f90a662c5f550722f31ef8057ef1cf0cf1b89da249032437a61d917ab7623cb1ff4677cb4886aa2b010ecfdb0 languageName: node linkType: hard @@ -16280,6 +16297,15 @@ __metadata: languageName: node linkType: hard +"expose-loader@npm:3.1.0": + version: 3.1.0 + resolution: "expose-loader@npm:3.1.0" + peerDependencies: + webpack: ^5.0.0 + checksum: c9bc3c220f9f5e46f7897a8a884fbe3b494b7e2a7fca454dc4642ad73664367c2501dfdf8476477a1ee3fd6c32d18aae1187e428c03f310de2f465eb4157d33c + languageName: node + linkType: hard + "express@npm:^4.17.1": version: 4.17.1 resolution: "express@npm:4.17.1" @@ -17892,7 +17918,7 @@ __metadata: "@opentelemetry/api": 1.0.2 "@opentelemetry/exporter-collector": 0.23.0 "@opentelemetry/semantic-conventions": 1.0.0 - "@pmmmwh/react-refresh-webpack-plugin": ^0.5.0-rc.6 + "@pmmmwh/react-refresh-webpack-plugin": ^0.5.1 "@popperjs/core": 2.5.4 "@react-aria/focus": 3.5.0 "@react-aria/overlays": 3.7.2 @@ -17991,8 +18017,8 @@ __metadata: common-tags: ^1.8.0 copy-webpack-plugin: 9.0.1 core-js: 3.10.0 - css-loader: 6.4.0 - css-minimizer-webpack-plugin: ^3.1.1 + css-loader: 6.5.1 + css-minimizer-webpack-plugin: ^3.1.3 cypress: 8.4.1 d3: 5.15.0 d3-force: ^2.1.1 @@ -18014,10 +18040,10 @@ __metadata: eslint-plugin-prettier: 4.0.0 eslint-plugin-react: 7.22.0 eslint-plugin-react-hooks: 4.2.0 - eslint-webpack-plugin: 3.0.1 + eslint-webpack-plugin: 3.1.0 eventemitter3: 4.0.0 expect.js: 0.3.1 - expose-loader: 3.0.0 + expose-loader: 3.1.0 fast-deep-equal: ^3.1.3 fast-json-patch: 3.1.0 fast-text-encoding: ^1.0.0 @@ -18031,7 +18057,7 @@ __metadata: hoist-non-react-statics: 3.3.2 html-loader: 3.0.1 html-webpack-harddisk-plugin: 2.0.0 - html-webpack-plugin: 5.3.2 + html-webpack-plugin: 5.5.0 http-server: 14.0.0 husky: ^7.0.0 iconscout-unicons-tarball: "https://github.com/grafana/icons/tarball/63056cd833ba7ee4e94904492b3a8c0cabc38d28" @@ -18054,7 +18080,7 @@ __metadata: logfmt: ^1.3.2 lru-cache: 6.0.0 memoize-one: 6.0.0 - mini-css-extract-plugin: 2.4.2 + mini-css-extract-plugin: 2.4.4 module-alias: 2.2.2 moment: 2.29.1 moment-timezone: 0.5.33 @@ -18070,7 +18096,7 @@ __metadata: papaparse: 5.3.0 pluralize: ^8.0.0 postcss: 8.3.6 - postcss-loader: 6.1.1 + postcss-loader: 6.2.0 postcss-reporter: 7.0.2 prettier: 2.2.1 prismjs: 1.25.0 @@ -18117,26 +18143,26 @@ __metadata: rxjs: 7.3.0 rxjs-spy: 8.0.0 sass: 1.32.13 - sass-loader: 12.1.0 + sass-loader: 12.3.0 search-query-parser: 1.5.4 selecto: 1.13.0 semver: ^7.1.3 sinon: 8.1.1 slate: 0.47.8 slate-plain-serializer: 0.7.10 - style-loader: 3.3.0 + style-loader: 3.3.1 stylelint: 13.13.1 stylelint-config-prettier: 9.0.3 stylelint-config-sass-guidelines: 8.0.0 symbol-observable: 1.2.0 - terser-webpack-plugin: 5.2.4 + terser-webpack-plugin: 5.2.5 test: "link:./public/test" testing-library-selector: ^0.1.3 tether: 1.4.7 tether-drop: "https://github.com/torkelo/drop" tinycolor2: 1.4.1 ts-jest: 26.4.4 - ts-loader: 8.3.0 + ts-loader: 9.2.6 ts-node: 10.4.0 tslib: 2.3.1 typescript: 4.4.3 @@ -18145,11 +18171,11 @@ __metadata: vendor: "link:./public/vendor" visjs-network: 4.25.0 wait-on: 6.0.0 - webpack: 5.58.1 - webpack-bundle-analyzer: 4.4.2 + webpack: 5.63.0 + webpack-bundle-analyzer: 4.5.0 webpack-cleanup-plugin: 0.5.1 - webpack-cli: 4.9.0 - webpack-dev-server: 4.3.1 + webpack-cli: 4.9.1 + webpack-dev-server: 4.4.0 webpack-merge: 5.8.0 whatwg-fetch: 3.1.0 languageName: unknown @@ -18703,18 +18729,18 @@ __metadata: languageName: node linkType: hard -"html-webpack-plugin@npm:5.3.2": - version: 5.3.2 - resolution: "html-webpack-plugin@npm:5.3.2" +"html-webpack-plugin@npm:5.5.0, html-webpack-plugin@npm:^5.0.0": + version: 5.5.0 + resolution: "html-webpack-plugin@npm:5.5.0" dependencies: - "@types/html-minifier-terser": ^5.0.0 - html-minifier-terser: ^5.0.1 + "@types/html-minifier-terser": ^6.0.0 + html-minifier-terser: ^6.0.2 lodash: ^4.17.21 - pretty-error: ^3.0.4 + pretty-error: ^4.0.0 tapable: ^2.0.0 peerDependencies: webpack: ^5.20.0 - checksum: 9dd91c59fc795abfb484c0e311a72260899121662747ba2131259813e4c7b25066b2daf9fd609228c2cd02f2fa5bfe7eeabb99a756729533aa70bdb07b77ebba + checksum: f3d84d0df71fe2f5bac533cc74dce41ab058558cdcc6ff767d166a2abf1cf6fb8491d54d60ddbb34e95c00394e379ba52e0468e0284d1d0cc6a42987056e8219 languageName: node linkType: hard @@ -18754,21 +18780,6 @@ __metadata: languageName: node linkType: hard -"html-webpack-plugin@npm:^5.0.0": - version: 5.5.0 - resolution: "html-webpack-plugin@npm:5.5.0" - dependencies: - "@types/html-minifier-terser": ^6.0.0 - html-minifier-terser: ^6.0.2 - lodash: ^4.17.21 - pretty-error: ^4.0.0 - tapable: ^2.0.0 - peerDependencies: - webpack: ^5.20.0 - checksum: f3d84d0df71fe2f5bac533cc74dce41ab058558cdcc6ff767d166a2abf1cf6fb8491d54d60ddbb34e95c00394e379ba52e0468e0284d1d0cc6a42987056e8219 - languageName: node - linkType: hard - "htmlparser2@npm:^3.10.0": version: 3.10.1 resolution: "htmlparser2@npm:3.10.1" @@ -21024,7 +21035,7 @@ __metadata: languageName: node linkType: hard -"jest-worker@npm:^27.0.2, jest-worker@npm:^27.0.6": +"jest-worker@npm:^27.0.2, jest-worker@npm:^27.0.6, jest-worker@npm:^27.3.1": version: 27.3.1 resolution: "jest-worker@npm:27.3.1" dependencies: @@ -22834,14 +22845,14 @@ __metadata: languageName: node linkType: hard -"mini-css-extract-plugin@npm:2.4.2": - version: 2.4.2 - resolution: "mini-css-extract-plugin@npm:2.4.2" +"mini-css-extract-plugin@npm:2.4.4": + version: 2.4.4 + resolution: "mini-css-extract-plugin@npm:2.4.4" dependencies: schema-utils: ^3.1.0 peerDependencies: webpack: ^5.0.0 - checksum: c413b4fd0ba0ff398b58ddecc0e805c254c2253e6536627469408b29ea1eb9f5b38c610a3be505c6ca9096a1bb5ed4faf8c6ff8c387b2b4891c8e38fdc8f719b + checksum: afc3c2d364096b3ec79c910f0b0e0f62b6861b84e0bcdf8c05b267e529b8f4e450984b0fc7afcd1e87616cbefcd688eeef1c41ce3c892a9c313f4dc9132189fb languageName: node linkType: hard @@ -25482,6 +25493,20 @@ __metadata: languageName: node linkType: hard +"postcss-loader@npm:6.2.0": + version: 6.2.0 + resolution: "postcss-loader@npm:6.2.0" + dependencies: + cosmiconfig: ^7.0.0 + klona: ^2.0.4 + semver: ^7.3.5 + peerDependencies: + postcss: ^7.0.0 || ^8.0.1 + webpack: ^5.0.0 + checksum: 240a807b696ceab4fac88ca713a9264a322af49d021f5056da8d6ce00307d80d8ad429595221498b6c4d44edaf825b54e8d84b4eb7e517fec41e2909d4a5f75d + languageName: node + linkType: hard + "postcss-loader@npm:^4.2.0": version: 4.3.0 resolution: "postcss-loader@npm:4.3.0" @@ -26354,16 +26379,6 @@ __metadata: languageName: node linkType: hard -"pretty-error@npm:^3.0.4": - version: 3.0.4 - resolution: "pretty-error@npm:3.0.4" - dependencies: - lodash: ^4.17.20 - renderkid: ^2.0.6 - checksum: c985666a1f471fd8d5a7b6f1f2154f947aff0a2c60c5d5a4513ff152a91d3296e5849d2fa3914be1a22b57db7580a968c25ab720b0afd1cc8d64de670153dc61 - languageName: node - linkType: hard - "pretty-error@npm:^4.0.0": version: 4.0.0 resolution: "pretty-error@npm:4.0.0" @@ -28619,7 +28634,7 @@ __metadata: languageName: node linkType: hard -"renderkid@npm:^2.0.4, renderkid@npm:^2.0.6": +"renderkid@npm:^2.0.4": version: 2.0.7 resolution: "renderkid@npm:2.0.7" dependencies: @@ -29298,6 +29313,28 @@ __metadata: languageName: node linkType: hard +"sass-loader@npm:12.3.0": + version: 12.3.0 + resolution: "sass-loader@npm:12.3.0" + dependencies: + klona: ^2.0.4 + neo-async: ^2.6.2 + peerDependencies: + fibers: ">= 3.1.0" + node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 + sass: ^1.3.0 + webpack: ^5.0.0 + peerDependenciesMeta: + fibers: + optional: true + node-sass: + optional: true + sass: + optional: true + checksum: b755e6d5ceddb70d54334b53f70546b4afc9af5f9704cc0e2666894d0568bdaeccb2b07056bd35465c22c51c55e1d790023b32b9aa0977080403036ef6c47b29 + languageName: node + linkType: hard + "sass-loader@npm:8.0.2": version: 8.0.2 resolution: "sass-loader@npm:8.0.2" @@ -30909,6 +30946,15 @@ __metadata: languageName: node linkType: hard +"style-loader@npm:3.3.1": + version: 3.3.1 + resolution: "style-loader@npm:3.3.1" + peerDependencies: + webpack: ^5.0.0 + checksum: 470feef680f59e2fce4d6601b5c55b88c01ad8d1dd693c528ffd591ff5fd7c01a4eff3bdbe62f26f847d6bd2430c9ab594be23307cfe7a3446ab236683f0d066 + languageName: node + linkType: hard + "style-loader@npm:^1.3.0": version: 1.3.0 resolution: "style-loader@npm:1.3.0" @@ -31384,6 +31430,28 @@ __metadata: languageName: node linkType: hard +"terser-webpack-plugin@npm:5.2.5": + version: 5.2.5 + resolution: "terser-webpack-plugin@npm:5.2.5" + dependencies: + jest-worker: ^27.0.6 + schema-utils: ^3.1.1 + serialize-javascript: ^6.0.0 + source-map: ^0.6.1 + terser: ^5.7.2 + peerDependencies: + webpack: ^5.1.0 + peerDependenciesMeta: + "@swc/core": + optional: true + esbuild: + optional: true + uglify-js: + optional: true + checksum: 2a9616466becf2e968bfc0f585678581b5c83a9dd96723c49329b11a8ccc1aaa41701877fbad2b0ce570364fde58c558fb6e7e053171512624e644b99b2f83af + languageName: node + linkType: hard + "terser-webpack-plugin@npm:^1.4.3": version: 1.4.5 resolution: "terser-webpack-plugin@npm:1.4.5" @@ -31973,19 +32041,18 @@ __metadata: languageName: node linkType: hard -"ts-loader@npm:8.3.0": - version: 8.3.0 - resolution: "ts-loader@npm:8.3.0" +"ts-loader@npm:9.2.6": + version: 9.2.6 + resolution: "ts-loader@npm:9.2.6" dependencies: chalk: ^4.1.0 - enhanced-resolve: ^4.0.0 - loader-utils: ^2.0.0 + enhanced-resolve: ^5.0.0 micromatch: ^4.0.0 semver: ^7.3.4 peerDependencies: typescript: "*" - webpack: "*" - checksum: 93dd15b553a2621f969c4c834e7eb085b9b079adb702cba68a7ee516bcd2c67620e62cc5a8c57345e90c644ff6b689ee5a09f0702e440284fdfe872e9aaeefd8 + webpack: ^5.0.0 + checksum: 309d8fb6348c0c3a7166d42c1238c585ede00f816155b24217dbca489406a72409395d7954bc5801ddb9ca71c71e7e0b2375dbc342337e0ab1a461944598a7fe languageName: node linkType: hard @@ -32962,7 +33029,7 @@ __metadata: languageName: node linkType: hard -"v8-compile-cache@npm:^2.0.3, v8-compile-cache@npm:^2.2.0, v8-compile-cache@npm:^2.3.0": +"v8-compile-cache@npm:^2.0.3, v8-compile-cache@npm:^2.3.0": version: 2.3.0 resolution: "v8-compile-cache@npm:2.3.0" checksum: adb0a271eaa2297f2f4c536acbfee872d0dd26ec2d76f66921aa7fc437319132773483344207bdbeee169225f4739016d8d2dbf0553913a52bb34da6d0334f8e @@ -33263,14 +33330,14 @@ __metadata: languageName: node linkType: hard -"webpack-bundle-analyzer@npm:4.4.2": - version: 4.4.2 - resolution: "webpack-bundle-analyzer@npm:4.4.2" +"webpack-bundle-analyzer@npm:4.5.0": + version: 4.5.0 + resolution: "webpack-bundle-analyzer@npm:4.5.0" dependencies: acorn: ^8.0.4 acorn-walk: ^8.0.0 chalk: ^4.1.0 - commander: ^6.2.0 + commander: ^7.2.0 gzip-size: ^6.0.0 lodash: ^4.17.20 opener: ^1.5.2 @@ -33278,7 +33345,7 @@ __metadata: ws: ^7.3.1 bin: webpack-bundle-analyzer: lib/bin/analyzer.js - checksum: 6d7957a87ee16f6b87e65f85e8b9a40998aefcddf3e15215fd4bc1ddf8c332ab4706f2f4deb0b3a0483eb27d0dae381db1b82b2ec34136e2ad0e651714b260fb + checksum: 158e96810ec213d5665ca1c0b257097db44e1f11c4befefab8352b9e5b10890fcb3e3fc1f7bb400dd58762a8edce5621c92afeca86eb4687d2eb64e93186bfcb languageName: node linkType: hard @@ -33293,9 +33360,9 @@ __metadata: languageName: node linkType: hard -"webpack-cli@npm:4.9.0": - version: 4.9.0 - resolution: "webpack-cli@npm:4.9.0" +"webpack-cli@npm:4.9.1": + version: 4.9.1 + resolution: "webpack-cli@npm:4.9.1" dependencies: "@discoveryjs/json-ext": ^0.5.0 "@webpack-cli/configtest": ^1.1.0 @@ -33308,7 +33375,6 @@ __metadata: import-local: ^3.0.2 interpret: ^2.2.0 rechoir: ^0.7.0 - v8-compile-cache: ^2.2.0 webpack-merge: ^5.7.3 peerDependencies: webpack: 4.x.x || 5.x.x @@ -33323,7 +33389,7 @@ __metadata: optional: true bin: webpack-cli: bin/cli.js - checksum: bc378a23773510c9a6a58669fe782f7849b50cbb78a948723583e7b059eae2f49888eb6dba398361af916b3d56195d99cdb494a595a2ecc95a5638e99b59c923 + checksum: 2aff0349c15e54d616e1fd6dc1f59be16ec1a630f652f948c0b4b108776d1889446e3498e83d9d514bf1b28c5125a8b87c4aeb5dceb41b593ba90765af673c4f languageName: node linkType: hard @@ -33373,13 +33439,13 @@ __metadata: languageName: node linkType: hard -"webpack-dev-server@npm:4.3.1": - version: 4.3.1 - resolution: "webpack-dev-server@npm:4.3.1" +"webpack-dev-server@npm:4.4.0": + version: 4.4.0 + resolution: "webpack-dev-server@npm:4.4.0" dependencies: ansi-html-community: ^0.0.8 bonjour: ^3.5.0 - chokidar: ^3.5.1 + chokidar: ^3.5.2 colorette: ^2.0.10 compression: ^1.7.4 connect-history-api-fallback: ^1.6.0 @@ -33409,7 +33475,7 @@ __metadata: optional: true bin: webpack-dev-server: bin/webpack-dev-server.js - checksum: ce9d054c3de335df4cca4759aaff3a5291487c906b15bd3bb6e41de86e3784b307ae1e2cdd6403424567b0645a0dc6a9dd21b4839ba86176d5097664474d2b68 + checksum: c317b5029b6f8caad47a257edb68b2dad5cd7087f4481ebda3359701c981037ce387486bdf992fb6e23213685d8e25e306b25a62541a42d0154562b1999563a5 languageName: node linkType: hard @@ -33644,6 +33710,43 @@ __metadata: languageName: node linkType: hard +"webpack@npm:5.63.0": + version: 5.63.0 + resolution: "webpack@npm:5.63.0" + dependencies: + "@types/eslint-scope": ^3.7.0 + "@types/estree": ^0.0.50 + "@webassemblyjs/ast": 1.11.1 + "@webassemblyjs/wasm-edit": 1.11.1 + "@webassemblyjs/wasm-parser": 1.11.1 + acorn: ^8.4.1 + acorn-import-assertions: ^1.7.6 + browserslist: ^4.14.5 + chrome-trace-event: ^1.0.2 + enhanced-resolve: ^5.8.3 + es-module-lexer: ^0.9.0 + eslint-scope: 5.1.1 + events: ^3.2.0 + glob-to-regexp: ^0.4.1 + graceful-fs: ^4.2.4 + json-parse-better-errors: ^1.0.2 + loader-runner: ^4.2.0 + mime-types: ^2.1.27 + neo-async: ^2.6.2 + schema-utils: ^3.1.0 + tapable: ^2.1.1 + terser-webpack-plugin: ^5.1.3 + watchpack: ^2.2.0 + webpack-sources: ^3.2.0 + peerDependenciesMeta: + webpack-cli: + optional: true + bin: + webpack: bin/webpack.js + checksum: 8127be3d900d8e57f106f61dc66f8334162d5425d770f46b2110c89057c1607e9be1a20fa37ee53bd6915e3041dc074c5e2aa99665abb18112463b91606946f7 + languageName: node + linkType: hard + "webpack@npm:^5, webpack@npm:^5.9.0": version: 5.60.0 resolution: "webpack@npm:5.60.0"