diff --git a/.eslintrc.js b/.eslintrc.js index d904ec84d..f8975eb04 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -15,10 +15,10 @@ module.exports = { { files: ['**/*.ts', '**/*.tsx', '**/*.js'], parser: '@typescript-eslint/parser', - plugins: ['@typescript-eslint', 'react-refresh'], + plugins: ['@typescript-eslint'], extends: ['plugin:@typescript-eslint/recommended'], rules: { - 'react-refresh/only-export-components': 'warn', + 'react/react-in-jsx-scope': 'off', 'react/prop-types': 'off', '@typescript-eslint/no-unused-vars': ['error', { ignoreRestSiblings: true, args: 'after-used' }], '@typescript-eslint/no-explicit-any': 'warn', diff --git a/config/rspack.config.js b/config/rspack.config.js index f90306a61..4a25017e0 100644 --- a/config/rspack.config.js +++ b/config/rspack.config.js @@ -1,6 +1,7 @@ /* eslint-disable @typescript-eslint/no-var-requires */ const path = require('path'); const rspack = require('@rspack/core'); +const { defineConfig } = require('@rspack/cli'); const plugins = require('./rspack.plugins.js'); const { createJoinFunction, createJoinImplementation, asGenerator, defaultJoinGenerator } = require('resolve-url-loader'); const searchIgnoredStyles = require('@redhat-cloud-services/frontend-components-config-utilities/search-ignored-styles'); @@ -12,9 +13,6 @@ const PFGenerator = asGenerator((item, ...rest) => { const defaultTuples = [...defaultJoinGenerator(item, ...rest)]; if (item.uri.includes('./assets')) { return defaultTuples.map(([base]) => { - if (base.includes('pf-4-styles')) { - return [base, path.relative(base, path.resolve(__dirname, '../node_modules/pf-4-styles', item.uri))]; - } if (base.includes('@patternfly/patternfly')) { return [base, path.relative(base, path.resolve(__dirname, '../node_modules/@patternfly/patternfly', item.uri))]; } @@ -65,47 +63,33 @@ const commonConfig = ({ dev }) => { }), }, }); - // console.log(pc.onBeforeSetupMiddleware); - pc.setupMiddlewares = (middlewares, { app, compiler, options }) => { - app.enable('strict routing'); - - return middlewares; - }; // not in v1 release delete pc.onBeforeSetupMiddleware; /** @type { import("rspack").Configuration } */ - return { - entry: dev - ? // HMR request react, react-dom and react-refresh/runtime to be in the same chunk - { - main: path.resolve(__dirname, '../src/index.ts'), - // vendors: ['react', 'react-dom', 'react-refresh/runtime'], - } - : path.resolve(__dirname, '../src/index.ts'), + return defineConfig({ + entry: { + main: path.resolve(__dirname, '../src/index.ts'), + }, output: { + uniqueName: 'chrome-root', path: path.resolve(__dirname, '../build/js'), - // the HMR needs dynamic entry filename to remove name conflicts - filename: dev ? '[name].js' : 'chrome-root.[contenthash].js', - hashFunction: 'xxhash64', + ...(!dev + ? { + filename: 'chrome-root.[contenthash].js', + hashFunction: 'xxhash64', + chunkFilename: '[name].[contenthash].js', + } + : {}), publicPath, - chunkFilename: dev ? '[name].js' : '[name].[contenthash].js', }, - ...(dev - ? { - cache: true, - } - : {}), - devtool: false, + // cache: true, + // devtool: false, experiments: { css: true, - // lazyCompilation: true, - // rspackFuture: { - // disableTransformByDefault: true, - // }, }, resolve: { - extensions: ['.js', '.ts', '.tsx'], + extensions: ['...', '.js', '.ts', '.tsx'], alias: { ...searchIgnoredStyles(path.resolve(__dirname, '../')), ...imageNullLoader(), @@ -124,23 +108,16 @@ const commonConfig = ({ dev }) => { 'react-dom': path.resolve(__dirname, '../node_modules/react-dom'), }, fallback: { - path: require.resolve('path-browserify'), stream: require.resolve('stream-browserify'), zlib: require.resolve('browserify-zlib'), - assert: require.resolve('assert/'), - buffer: require.resolve('buffer/'), - url: require.resolve('url/'), - process: require.resolve('process'), }, }, optimization: { concatenateModules: false, - ...(dev - ? { - // for HMR all runtime chunks must be in a single file - // runtimeChunk: 'single', - } - : {}), + minimizer: [new rspack.SwcJsMinimizerRspackPlugin(), new rspack.LightningCssMinimizerRspackPlugin()], + ...(dev && { + runtimeChunk: 'single', + }), }, module: { rules: [ @@ -150,18 +127,17 @@ const commonConfig = ({ dev }) => { use: { loader: 'builtin:swc-loader', options: { - transform: { - react: { - runtime: 'automatic', - development: dev, - refresh: dev, - }, - }, jsc: { parser: { syntax: 'typescript', tsx: true, }, + transform: { + react: { + runtime: 'automatic', + development: !!dev, + }, + }, }, }, }, @@ -188,12 +164,17 @@ const commonConfig = ({ dev }) => { }, { test: /\.(jpe?g|svg|png|gif|ico|eot|ttf|woff2?)(\?v=\d+\.\d+\.\d+)?$/i, - type: 'asset/resource', + type: 'asset', }, ], }, plugins: plugins(dev, process.env.BETA === 'true', process.env.NODE_ENV === 'restricted'), devServer: { + // HMR flag + ...pc, + client: { + overlay: false, + }, allowedHosts: 'all', headers: { 'Access-Control-Allow-Origin': '*', @@ -202,74 +183,16 @@ const commonConfig = ({ dev }) => { historyApiFallback: { index: `${publicPath}index.html`, }, - server: 'https', + server: 'spdy', port: 1337, - // HMR flag - ...pc, - hot: true, + liveReload: true, }, - }; -}; - -// PF node module asset compilation config, no need to compile PF assets more than once during a run -/** @type { import("rspack").Configuration } */ -const pfConfig = { - entry: { - 'pf4-v4': path.resolve(__dirname, '../src/sass/pf-4-assets.scss'), - 'pf4-v5': path.resolve(__dirname, '../src/sass/pf-5-assets.scss'), - }, - output: { - path: path.resolve(__dirname, '../build/js/pf'), - // the HMR needs dynamic entry filename to remove name conflicts - filename: '[name].js', - publicPath: `auto`, - }, - plugins: [new rspack.CssExtractRspackPlugin()], - stats: { - errorDetails: true, - }, - cache: true, - experiments: { - css: true, - }, - module: { - rules: [ - { - test: /\.s?[ac]ss$/, - use: [ - // rspack.CssExtractRspackPlugin.loader, - // 'css-loader', - { - loader: 'resolve-url-loader', - options: { - join: createJoinFunction('myJoinFn', createJoinImplementation(PFGenerator)), - }, - }, - { - loader: 'sass-loader', - options: { - sassOptions: { - outputStyle: 'compressed', - }, - sourceMap: true, - api: 'modern-compiler', - implementation: require.resolve('sass-embedded'), - }, - }, - ], - type: 'css/auto', - }, - { - test: /\.(jpe?g|svg|png|gif|ico|eot|ttf|woff2?)(\?v=\d+\.\d+\.\d+)?$/i, - type: 'asset/resource', - }, - ], - }, + }); }; module.exports = function (env) { const dev = process.env.DEV_SERVER; const config = commonConfig({ dev, publicPath: env.publicPath }); - return [pfConfig, config]; + return config; }; diff --git a/config/rspack.plugins.js b/config/rspack.plugins.js index 6cef1a437..820d071f6 100644 --- a/config/rspack.plugins.js +++ b/config/rspack.plugins.js @@ -1,17 +1,8 @@ /* eslint-disable @typescript-eslint/no-var-requires */ -// const webpack = require('webpack'); const rspack = require('@rspack/core'); const resolve = require('path').resolve; -// const HtmlWebpackPlugin = require('html-webpack-plugin'); const path = require('path'); -// const { ProvidePlugin } = require('webpack'); -// const MiniCssExtractPlugin = require('mini-css-extract-plugin'); -const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin'); const getDynamicModules = require('./get-dynamic-modules'); -const ReactRefreshPlugin = require('@rspack/plugin-react-refresh'); -const { pluginReact } = require('@rsbuild/plugin-react'); - -// const MFP = require('@module-federation/enhanced').ModuleFederationPlugin; const deps = require('../package.json').dependencies; @@ -21,16 +12,6 @@ const plugins = (dev = false, beta = false, restricted = false) => { _unstableHotReload: dev, }); return [ - // pluginReact({ - // swcReactOptions: { - // refresh: dev, - // development: dev, - // } - // }), - new rspack.CssExtractRspackPlugin({ - filename: dev ? '[name].css' : '[name].[contenthash].css', - ignoreOrder: true, - }), new rspack.container.ModuleFederationPlugin({ library: { type: 'global', @@ -67,7 +48,7 @@ const plugins = (dev = false, beta = false, restricted = false) => { filename: dev ? 'index.html' : '../index.html', base: '/', templateParameters: { - pf4styles: `/${beta ? 'beta/' : ''}apps/chrome/js/pf/pf4-v4.css`, + dev, pf5styles: `/${beta ? 'beta/' : ''}apps/chrome/js/pf/pf4-v5.css`, }, }), @@ -78,11 +59,6 @@ const plugins = (dev = false, beta = false, restricted = false) => { minify: false, template: path.resolve(__dirname, '../src/silent-check-sso.html'), }), - // new ProvidePlugin({ - // process: 'process/browser.js', - // Buffer: ['buffer', 'Buffer'], - // }), - new ForkTsCheckerWebpackPlugin(), /** * Removes error for a missing logger function * https://github.com/getsentry/sentry-javascript/issues/6596 @@ -91,7 +67,6 @@ const plugins = (dev = false, beta = false, restricted = false) => { new rspack.DefinePlugin({ __SENTRY_DEBUG__: false, }), - ...(dev ? [new ReactRefreshPlugin()] : []), ]; }; diff --git a/package-lock.json b/package-lock.json index d4043cd46..d386a4c96 100644 --- a/package-lock.json +++ b/package-lock.json @@ -73,12 +73,10 @@ "@cypress/code-coverage": "^3.12.39", "@module-federation/enhanced": "^0.3.5", "@redhat-cloud-services/eslint-config-redhat-cloud-services": "^1.3.0", - "@redhat-cloud-services/frontend-components-config-utilities": "^3.0.7", + "@redhat-cloud-services/frontend-components-config-utilities": "^3.2.3", "@redhat-cloud-services/types": "^1.0.12", - "@rsbuild/plugin-react": "^1.0.1-rc.0", - "@rspack/cli": "^1.0.0", - "@rspack/core": "^1.0.0", - "@rspack/plugin-react-refresh": "^1.0.0", + "@rspack/cli": "^1.0.8", + "@rspack/core": "^1.0.8", "@simonsmith/cypress-image-snapshot": "^8.1.2", "@swc/jest": "^0.2.36", "@testing-library/jest-dom": "^5.17.0", @@ -102,11 +100,7 @@ "cypress": "^13.12.0", "cypress-localstorage-commands": "^2.2.6", "eslint": "^8.57.0", - "eslint-plugin-react-refresh": "^0.4.11", - "fork-ts-checker-webpack-plugin": "^7.3.0", - "git-revision-webpack-plugin": "^5.0.0", "glob": "^7.2.3", - "html-webpack-plugin": "^5.6.0", "identity-obj-proxy": "^3.0.0", "jest": "^29.7.0", "jest-environment-jsdom": "^29.7.0", @@ -121,7 +115,6 @@ "npm-run-all": "^4.1.5", "path-browserify": "^1.0.1", "process": "^0.11.10", - "react-refresh": "^0.14.2", "redux-logger": "^3.0.6", "redux-mock-store": "^1.5.4", "resolve-url-loader": "^5.0.0", @@ -2852,9 +2845,9 @@ } }, "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "dev": true, "license": "MIT", "engines": { @@ -4705,10 +4698,11 @@ } }, "node_modules/@redhat-cloud-services/frontend-components-config-utilities": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@redhat-cloud-services/frontend-components-config-utilities/-/frontend-components-config-utilities-3.0.7.tgz", - "integrity": "sha512-StufcZhPSYCjkrrt8YbkyZ3VlKzq8Vz2+2ro5BofFengs8E6MTSaIX4yeLAZl7q05/l4rXERA5BBWMkVtrEEnw==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/@redhat-cloud-services/frontend-components-config-utilities/-/frontend-components-config-utilities-3.2.3.tgz", + "integrity": "sha512-U6yVfhTH4ZC8rq9jMVWS9eWFPUrIJttfr17a5FDVsTBoz977sCMkHsz9v+es4uokdI1ixP/B/v8pTlExOkuJZQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@openshift/dynamic-plugin-sdk-webpack": "^4.0.1", "chalk": "^4.1.2", @@ -5484,6 +5478,34 @@ "stylelint": "^16.9.0" } }, + "node_modules/@rollup/pluginutils": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.2.tgz", + "integrity": "sha512-/FIdS3PyZ39bjZlwqFnWqCOVnW7o963LtKMwQOD0NhQqw22gSr2YY1afu3FxRip4ZCZNsD5jq6Aaz6QV3D/Njw==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils/node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "license": "MIT" + }, "node_modules/@rollup/rollup-darwin-x64": { "version": "4.14.2", "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.14.2.tgz", @@ -5497,66 +5519,28 @@ "darwin" ] }, - "node_modules/@rsbuild/core": { - "version": "1.0.1-rc.0", - "resolved": "https://registry.npmjs.org/@rsbuild/core/-/core-1.0.1-rc.0.tgz", - "integrity": "sha512-tSszHL2sp/iNZkYMOOorgBonh4XAIfJODlt6JBTg5PMAywm+XXdFoEglaKeAM6WiQ/0rQYOataKrHbMkfxmh/A==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@rspack/core": "1.0.0", - "@rspack/lite-tapable": "1.0.0", - "@swc/helpers": "^0.5.12", - "caniuse-lite": "^1.0.30001653", - "core-js": "~3.38.1" - }, - "bin": { - "rsbuild": "bin/rsbuild.js" - }, - "engines": { - "node": ">=16.7.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - } - }, - "node_modules/@rsbuild/plugin-react": { - "version": "1.0.1-rc.0", - "resolved": "https://registry.npmjs.org/@rsbuild/plugin-react/-/plugin-react-1.0.1-rc.0.tgz", - "integrity": "sha512-bjKRNdihb3LoWW74Ri2lBQqrTaksIpGx9/mp/RiRpVUGzX+9/SDlXWvrnWdndKPm7UYfY3VBCZNT2zJRi0CCKg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@rspack/plugin-react-refresh": "1.0.0", - "react-refresh": "^0.14.2" - }, - "peerDependencies": { - "@rsbuild/core": "^1.0.1-rc.0" - } - }, "node_modules/@rspack/binding": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-1.0.0.tgz", - "integrity": "sha512-eLyqSEM1h/exJYn98k+9MRktP8AYDB13x5oVn8hoxVucuhk0TubFqQSX8h9SQcZp1O3j/Z8eWWwOaNPe3JU40Q==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-1.0.8.tgz", + "integrity": "sha512-abRirbrjobcllLAamyeiWxT6Rb0wELUnITynQdqRbSweWm2lvnhm9YBv4BcOjvJBzhJtvRJo5JBtbKXjDTarug==", "dev": true, "license": "MIT", "optionalDependencies": { - "@rspack/binding-darwin-arm64": "1.0.0", - "@rspack/binding-darwin-x64": "1.0.0", - "@rspack/binding-linux-arm64-gnu": "1.0.0", - "@rspack/binding-linux-arm64-musl": "1.0.0", - "@rspack/binding-linux-x64-gnu": "1.0.0", - "@rspack/binding-linux-x64-musl": "1.0.0", - "@rspack/binding-win32-arm64-msvc": "1.0.0", - "@rspack/binding-win32-ia32-msvc": "1.0.0", - "@rspack/binding-win32-x64-msvc": "1.0.0" + "@rspack/binding-darwin-arm64": "1.0.8", + "@rspack/binding-darwin-x64": "1.0.8", + "@rspack/binding-linux-arm64-gnu": "1.0.8", + "@rspack/binding-linux-arm64-musl": "1.0.8", + "@rspack/binding-linux-x64-gnu": "1.0.8", + "@rspack/binding-linux-x64-musl": "1.0.8", + "@rspack/binding-win32-arm64-msvc": "1.0.8", + "@rspack/binding-win32-ia32-msvc": "1.0.8", + "@rspack/binding-win32-x64-msvc": "1.0.8" } }, "node_modules/@rspack/binding-darwin-arm64": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0.tgz", - "integrity": "sha512-ZHQk9YK+swlTG48kJTgzFUW9T26KjhLXRok5la7t2AMoiuHyhGHHgC5iQfPJLZ62XzcJ/rfqs2rwakl97151jQ==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.0.8.tgz", + "integrity": "sha512-1l8/eg3HNz53DHQO3fy5O5QKdYh8hSMZaWGtm3NR5IfdrTm2TaLL9tuR8oL2iHHtd87LEvVKHXdjlcuLV5IPNQ==", "cpu": [ "arm64" ], @@ -5568,9 +5552,9 @@ ] }, "node_modules/@rspack/binding-darwin-x64": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-1.0.0.tgz", - "integrity": "sha512-qhTXm9wUhv2lBjsqqfCu59RchH1/2jursdPAmTqGc7zMReZdZvtJs2Ri6Ma1M48BLLu+7fS4fbL8Rw1g78TOOQ==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-1.0.8.tgz", + "integrity": "sha512-7BbG8gXVWjtqJegDpsObzM/B90Eig1piEtcahvPdvlC92uZz3/IwtKPpMaywGBrf5RSI3U0nQMSekwz0cO1SOw==", "cpu": [ "x64" ], @@ -5582,9 +5566,9 @@ ] }, "node_modules/@rspack/binding-linux-arm64-gnu": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0.tgz", - "integrity": "sha512-yKnlsWgvydJRxDBGGKC+cyDeoSzIvOzuVqCloy5oAFAGOMXMY6bznxrkE6/olGZncdeLEpnJzZmXSuF1dYc8ow==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.8.tgz", + "integrity": "sha512-QnqCL0wmwYqT/IFx5q0aw7DsIOr8oYUa4+7JI8iiqRf3RuuRJExesVW9VuWr0jS2UvChKgmb8PvRtDy/0tshFw==", "cpu": [ "arm64" ], @@ -5596,9 +5580,9 @@ ] }, "node_modules/@rspack/binding-linux-arm64-musl": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0.tgz", - "integrity": "sha512-dKFmlqlF4FELT/AX02hSwX8aRawjH5zAliQzYnvgrqcEyCKE60vKacGJQ3ZeRyru6dh5MlbUNW4H1+TDT+cDVA==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.8.tgz", + "integrity": "sha512-Ns9TsE7zdUjimW5HURRW08BaMyAh16MDh97PPsGEMeRPx9plnRO9aXvuUG6t+0gy4KwlQdeq3BvUsbBpIo5Tow==", "cpu": [ "arm64" ], @@ -5610,9 +5594,9 @@ ] }, "node_modules/@rspack/binding-linux-x64-gnu": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0.tgz", - "integrity": "sha512-fRk9i8aE4FiwW7+LkNyw+5vfFzJ8BZ2seAL9V5U2iwYwYibzFJsukg3h3Uh+IsGm30/7+ZRENtGwybQiMruL4g==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.8.tgz", + "integrity": "sha512-lfqUuKCoyRN/gGeokhX/oNYqB6OpbtgQb57b0QuD8IaiH2a1ee0TtEVvRbyQNEDwht6lW4RTNg0RfMYu52LgXg==", "cpu": [ "x64" ], @@ -5624,9 +5608,9 @@ ] }, "node_modules/@rspack/binding-linux-x64-musl": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0.tgz", - "integrity": "sha512-qcTJC8o3KvLwsnrJJcuBjfzSrjEbACMiCB4RtbFNecXDtI+Nputx1CO1SlUrINC25/44ILketf0/hsdBQHk60g==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.8.tgz", + "integrity": "sha512-MgbHJWV5utVa1/U9skrXClydZ/eZw001++v4B6nb8myU6Ck1D02aMl9ESefb/sSA8TatLLxEXQ2VENG9stnPwQ==", "cpu": [ "x64" ], @@ -5638,9 +5622,9 @@ ] }, "node_modules/@rspack/binding-win32-arm64-msvc": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0.tgz", - "integrity": "sha512-gqtakP0Yl2aj+Q/Giwgt31hz8eOZpo2s+sJlkMJGVdIF4dejB31a8vbj/VNGeSN1tDRiLI4cyqa5eQU//t26aQ==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.8.tgz", + "integrity": "sha512-3NN5VisnSOzhgqX77O/7NvcjPUueg1oIdMKoc5vElJCEu5FEXPqDhwZmr1PpBovaXshAcgExF3j54+20pwdg5g==", "cpu": [ "arm64" ], @@ -5652,9 +5636,9 @@ ] }, "node_modules/@rspack/binding-win32-ia32-msvc": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.0.0.tgz", - "integrity": "sha512-nLfGu5DjdzwawzZ7zK69vZX5aL1Gt9+Ovfz4RlngDq/D5ZzqCnNWw93cqKADgFRWS4qK9vOD9RXNNnkyWB2SEw==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.0.8.tgz", + "integrity": "sha512-17VQNC7PSygzsipSVoukDM/SOcVueVNsk9bZiB0Swl20BaqrlBts2Dvlmo+L+ZGsxOYI97WvA/zomMDv860usg==", "cpu": [ "ia32" ], @@ -5666,9 +5650,9 @@ ] }, "node_modules/@rspack/binding-win32-x64-msvc": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0.tgz", - "integrity": "sha512-H9PqjgtZMw5aP+eXdFo7bgSP/Ycwn3oW81uI9qFqOOQ90W+o3T9ItghHBf2/ksc5GHibd208EwOBNxbKwjZDSQ==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.8.tgz", + "integrity": "sha512-Vtjt74Soh09XUsV5Nw0YjZVSk/qtsjtPnzbSZluncSAVUs8l+X1ALcM6n1Jrt3TLTfcqf7a+VIsWOXAMqkCGUg==", "cpu": [ "x64" ], @@ -5680,14 +5664,14 @@ ] }, "node_modules/@rspack/cli": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@rspack/cli/-/cli-1.0.0.tgz", - "integrity": "sha512-J6S/7xPR3n042mFurxa527w8DQMaTd3eWrIFmltCRXzGi4K/1VgUUyE1X0K1pKhvtgUUkFW/m+EC8bjpzNrPeg==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@rspack/cli/-/cli-1.0.8.tgz", + "integrity": "sha512-aDekCzwhn8OWFeibCZ62lXs7ocjIc1ebDD2eiufA3hDXa03Ewm4IRx5LAKAPoF077R7Hble1pjat6tu+SWXNfQ==", "dev": true, "license": "MIT", "dependencies": { "@discoveryjs/json-ext": "^0.5.7", - "@rspack/dev-server": "1.0.0", + "@rspack/dev-server": "1.0.5", "colorette": "2.0.19", "exit-hook": "^3.2.0", "interpret": "^3.1.1", @@ -5910,15 +5894,15 @@ } }, "node_modules/@rspack/core": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@rspack/core/-/core-1.0.0.tgz", - "integrity": "sha512-F4RA9uOLLvD1oTKa96Gcly+Sro1qaqPNENadFyiPwepa7DrwexQa/ym6CQKbvKMOYGKlVSFDPUmgFAirz35ETg==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@rspack/core/-/core-1.0.8.tgz", + "integrity": "sha512-pbXwXYb4WQwb0l35P5v3l/NpDJXy1WiVE4IcQ/6LxZYU5NyZuqtsK0trR88xIVRZb9qU0JUeCdQq7Xa6Q+c3Xw==", "dev": true, "license": "MIT", "dependencies": { "@module-federation/runtime-tools": "0.5.1", - "@rspack/binding": "1.0.0", - "@rspack/lite-tapable": "1.0.0", + "@rspack/binding": "1.0.8", + "@rspack/lite-tapable": "1.0.1", "caniuse-lite": "^1.0.30001616" }, "engines": { @@ -5972,10 +5956,20 @@ "@module-federation/sdk": "0.5.1" } }, + "node_modules/@rspack/core/node_modules/@rspack/lite-tapable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rspack/lite-tapable/-/lite-tapable-1.0.1.tgz", + "integrity": "sha512-VynGOEsVw2s8TAlLf/uESfrgfrq2+rcXB1muPJYBWbsm1Oa6r5qVQhjA5ggM6z/coYPrsVMgovl3Ff7Q7OCp1w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16.0.0" + } + }, "node_modules/@rspack/dev-server": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@rspack/dev-server/-/dev-server-1.0.0.tgz", - "integrity": "sha512-ORrF+p31/jLS7tmXp7VLAX654NVpO0jNc9VM9ueG5LAyvf4d+Bo6zhFQTWsoW30uh/Xd1EZjfu+9zu4jn8Zv4Q==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@rspack/dev-server/-/dev-server-1.0.5.tgz", + "integrity": "sha512-S1o1j9adjqNCiSWrIv1vmVHQPXFvcBa9JvPWIGxGjei72ejz0zvO6Fd948UkRlDgCPIoY4Cy+g1GLmBkJT5MKA==", "dev": true, "license": "MIT", "dependencies": { @@ -5984,43 +5978,15 @@ "express": "^4.19.2", "http-proxy-middleware": "^2.0.6", "mime-types": "^2.1.35", + "p-retry": "4.6.2", "webpack-dev-middleware": "^7.4.2", - "webpack-dev-server": "^5.0.4", + "webpack-dev-server": "5.0.4", "ws": "^8.16.0" }, "peerDependencies": { "@rspack/core": "*" } }, - "node_modules/@rspack/lite-tapable": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@rspack/lite-tapable/-/lite-tapable-1.0.0.tgz", - "integrity": "sha512-7MZf4lburSUZoEenwazwUDKHhqyfnLCGnQ/tKcUtztfmVzfjZfRn/EaiT0AKkYGnL2U8AGsw89oUeVyvaOLVCw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@rspack/plugin-react-refresh": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@rspack/plugin-react-refresh/-/plugin-react-refresh-1.0.0.tgz", - "integrity": "sha512-WvXkLewW5G0Mlo5H1b251yDh5FFiH4NDAbYlFpvFjcuXX2AchZRf9zdw57BDE/ADyWsJgA8kixN/zZWBTN3iYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "error-stack-parser": "^2.0.6", - "html-entities": "^2.1.0" - }, - "peerDependencies": { - "react-refresh": ">=0.10.0 <1.0.0" - }, - "peerDependenciesMeta": { - "react-refresh": { - "optional": true - } - } - }, "node_modules/@scalprum/core": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/@scalprum/core/-/core-0.8.1.tgz", @@ -6879,6 +6845,7 @@ "integrity": "sha512-KMZNXiGibsW9kvZAO1Pam2JPTDBm+KSHMMHWdsyI/1DbIZjT2A6Gy3hblVXUMEDvUAKq+e0vL0X0o54owWji7g==", "dev": true, "license": "Apache-2.0", + "optional": true, "peer": true, "dependencies": { "tslib": "^2.4.0" @@ -7321,9 +7288,22 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "4.19.5", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz", - "integrity": "sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.0.0.tgz", + "integrity": "sha512-AbXMTZGt40T+KON9/Fdxx0B2WK5hsgxcfXJLr5bFpZ7b4JCex2WyQPTEKdXqfHiY5nKKBScZ7yCoO6Pvgxfvnw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/express/node_modules/@types/express-serve-static-core": { + "version": "4.19.6", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz", + "integrity": "sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==", "dev": true, "license": "MIT", "dependencies": { @@ -7367,12 +7347,6 @@ "hoist-non-react-statics": "^3.3.0" } }, - "node_modules/@types/html-minifier-terser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", - "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", - "dev": true - }, "node_modules/@types/http-errors": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", @@ -7546,12 +7520,6 @@ "@types/node": "*" } }, - "node_modules/@types/parse-json": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", - "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", - "dev": true - }, "node_modules/@types/pixelmatch": { "version": "5.2.6", "resolved": "https://registry.npmjs.org/@types/pixelmatch/-/pixelmatch-5.2.6.tgz", @@ -7567,9 +7535,9 @@ "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==" }, "node_modules/@types/qs": { - "version": "6.9.15", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", - "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", + "version": "6.9.16", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.16.tgz", + "integrity": "sha512-7i+zxXdPD0T4cKDuxCUXJ4wHcsJLwENa6Z3dCu8cfCK743OGy5Nu1RmAGqDPsoTDINVEcdXKRvR/zre+P2Ku1A==", "dev": true, "license": "MIT" }, @@ -7617,9 +7585,9 @@ } }, "node_modules/@types/retry": { - "version": "0.12.2", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", - "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", "dev": true, "license": "MIT" }, @@ -9868,9 +9836,9 @@ "dev": true }, "node_modules/body-parser": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", - "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", "dev": true, "license": "MIT", "dependencies": { @@ -9882,7 +9850,7 @@ "http-errors": "2.0.0", "iconv-lite": "0.4.24", "on-finished": "2.4.1", - "qs": "6.11.0", + "qs": "6.13.0", "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" @@ -9923,13 +9891,13 @@ "license": "MIT" }, "node_modules/body-parser/node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "dev": true, "license": "BSD-3-Clause", "dependencies": { - "side-channel": "^1.0.4" + "side-channel": "^1.0.6" }, "engines": { "node": ">=0.6" @@ -10272,16 +10240,6 @@ "node": ">=6" } }, - "node_modules/camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "dev": true, - "dependencies": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } - }, "node_modules/camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", @@ -10543,27 +10501,6 @@ "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==" }, - "node_modules/clean-css": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", - "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", - "dev": true, - "dependencies": { - "source-map": "~0.6.0" - }, - "engines": { - "node": ">= 10.0" - } - }, - "node_modules/clean-css/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/clean-stack": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", @@ -10904,19 +10841,6 @@ "node": ">= 0.8" } }, - "node_modules/core-js": { - "version": "3.38.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.38.1.tgz", - "integrity": "sha512-OP35aUorbU3Zvlx7pjsFdu1rGNnD4pgw/CWoYzRY3t2EzoVT7shKHY1dlAy3f41cGIO7ZDPQimhGFTlEYkG/Hw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "peer": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, "node_modules/core-js-compat": { "version": "3.35.0", "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.35.0.tgz", @@ -10937,22 +10861,6 @@ "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", "dev": true }, - "node_modules/cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", - "dev": true, - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/create-jest": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", @@ -11253,74 +11161,6 @@ "node": ">=0.10.0" } }, - "node_modules/css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/css-select/node_modules/dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dev": true, - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/css-select/node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/css-select/node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/css-select/node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, "node_modules/css-selector-extract": { "version": "3.3.6", "resolved": "https://registry.npmjs.org/css-selector-extract/-/css-selector-extract-3.3.6.tgz", @@ -12628,15 +12468,6 @@ "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", "dev": true }, - "node_modules/dom-converter": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", - "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", - "dev": true, - "dependencies": { - "utila": "~0.4" - } - }, "node_modules/dom-serializer": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", @@ -12886,16 +12717,6 @@ "dev": true, "license": "MIT" }, - "node_modules/error-stack-parser": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", - "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "stackframe": "^1.3.4" - } - }, "node_modules/es-abstract": { "version": "1.22.3", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", @@ -13237,16 +13058,6 @@ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" } }, - "node_modules/eslint-plugin-react-refresh": { - "version": "0.4.11", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.11.tgz", - "integrity": "sha512-wrAKxMbVr8qhXTtIKfXqAn5SAtRZt0aXxe5P23Fh4pUAdC6XEsybGLB8P0PI4j1yYqOgUEUlzKAGDfo7rJOjcw==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "eslint": ">=7" - } - }, "node_modules/eslint-plugin-react/node_modules/doctrine": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", @@ -13677,38 +13488,38 @@ } }, "node_modules/express": { - "version": "4.19.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", - "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.0.tgz", + "integrity": "sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==", "dev": true, "license": "MIT", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.2", + "body-parser": "1.20.3", "content-disposition": "0.5.4", "content-type": "~1.0.4", "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.2.0", + "finalhandler": "1.3.1", "fresh": "0.5.2", "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", + "merge-descriptors": "1.0.3", "methods": "~1.1.2", "on-finished": "2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", + "path-to-regexp": "0.1.10", "proxy-addr": "~2.0.7", - "qs": "6.11.0", + "qs": "6.13.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", + "send": "0.19.0", + "serve-static": "1.16.2", "setprototypeof": "1.2.0", "statuses": "2.0.1", "type-is": "~1.6.18", @@ -13729,6 +13540,16 @@ "ms": "2.0.0" } }, + "node_modules/express/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/express/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -13737,13 +13558,13 @@ "license": "MIT" }, "node_modules/express/node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "dev": true, "license": "BSD-3-Clause", "dependencies": { - "side-channel": "^1.0.4" + "side-channel": "^1.0.6" }, "engines": { "node": ">=0.6" @@ -13841,9 +13662,9 @@ "dev": true }, "node_modules/fast-uri": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.1.tgz", - "integrity": "sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.2.tgz", + "integrity": "sha512-GR6f0hD7XXyNJa25Tb9BuIdN0tdr+0BMi6/CJPH3wJO1JjNG3n/VsSw38AwRdKZABm8lGbPfakLRkYzx2V9row==", "dev": true, "license": "MIT" }, @@ -14022,14 +13843,14 @@ } }, "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", "dev": true, "license": "MIT", "dependencies": { "debug": "2.6.9", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "on-finished": "2.4.1", "parseurl": "~1.3.3", @@ -14050,6 +13871,16 @@ "ms": "2.0.0" } }, + "node_modules/finalhandler/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/finalhandler/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -14231,143 +14062,6 @@ "node": "*" } }, - "node_modules/fork-ts-checker-webpack-plugin": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-7.3.0.tgz", - "integrity": "sha512-IN+XTzusCjR5VgntYFgxbxVx3WraPRnKehBFrf00cMSrtUuW9MsG9dhL6MWpY6MkjC3wVwoujfCDgZZCQwbswA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.16.7", - "chalk": "^4.1.2", - "chokidar": "^3.5.3", - "cosmiconfig": "^7.0.1", - "deepmerge": "^4.2.2", - "fs-extra": "^10.0.0", - "memfs": "^3.4.1", - "minimatch": "^3.0.4", - "node-abort-controller": "^3.0.1", - "schema-utils": "^3.1.1", - "semver": "^7.3.5", - "tapable": "^2.2.1" - }, - "engines": { - "node": ">=12.13.0", - "yarn": ">=1.0.0" - }, - "peerDependencies": { - "typescript": ">3.6.0", - "vue-template-compiler": "*", - "webpack": "^5.11.0" - }, - "peerDependenciesMeta": { - "vue-template-compiler": { - "optional": true - } - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/form-data": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", @@ -14434,12 +14128,6 @@ "node": ">=12" } }, - "node_modules/fs-monkey": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.5.tgz", - "integrity": "sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==", - "dev": true - }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -14618,18 +14306,6 @@ "assert-plus": "^1.0.0" } }, - "node_modules/git-revision-webpack-plugin": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/git-revision-webpack-plugin/-/git-revision-webpack-plugin-5.0.0.tgz", - "integrity": "sha512-RptQN/4UKcEPkCBmRy8kLPo5i8MnF8+XfAgFYN9gbwmKLTLx4YHsQw726H+C5+sIGDixDkmGL3IxPA2gKo+u4w==", - "dev": true, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "webpack": "^5.0.0" - } - }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -14995,15 +14671,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "bin": { - "he": "bin/he" - } - }, "node_modules/header-case": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/header-case/-/header-case-1.0.1.tgz", @@ -15136,44 +14803,14 @@ "type": "patreon", "url": "https://patreon.com/mdevils" } - ], - "license": "MIT" - }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "node_modules/html-minifier-terser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", - "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", - "dev": true, - "dependencies": { - "camel-case": "^4.1.2", - "clean-css": "^5.2.2", - "commander": "^8.3.0", - "he": "^1.2.0", - "param-case": "^3.0.4", - "relateurl": "^0.2.7", - "terser": "^5.10.0" - }, - "bin": { - "html-minifier-terser": "cli.js" - }, - "engines": { - "node": ">=12" - } + ], + "license": "MIT" }, - "node_modules/html-minifier-terser/node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true, - "engines": { - "node": ">= 12" - } + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true }, "node_modules/html-tags": { "version": "3.3.1", @@ -15196,38 +14833,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/html-webpack-plugin": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz", - "integrity": "sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw==", - "dev": true, - "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" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/html-webpack-plugin" - }, - "peerDependencies": { - "@rspack/core": "0.x || 1.x", - "webpack": "^5.20.0" - }, - "peerDependenciesMeta": { - "@rspack/core": { - "optional": true - }, - "webpack": { - "optional": true - } - } - }, "node_modules/htmlparser2": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", @@ -19272,6 +18877,15 @@ "json-buffer": "3.0.1" } }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/kleur": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", @@ -19409,9 +19023,9 @@ } }, "node_modules/launch-editor": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.8.1.tgz", - "integrity": "sha512-elBx2l/tp9z99X5H/qev8uyDywVh0VXAwEbjk8kJhnc5grOFkGh7aW6q55me9xnYbss261XtnUrysZ+XvGbhQA==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.9.1.tgz", + "integrity": "sha512-Gcnl4Bd+hRO9P9icCP/RVVT2o8SFlPXofuCxvA2SaZuH45whSvf5p8x5oih5ftLiVhEI4sp5xDY+R+b3zJBh5w==", "dev": true, "license": "MIT", "dependencies": { @@ -20470,15 +20084,23 @@ } }, "node_modules/memfs": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", - "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.12.0.tgz", + "integrity": "sha512-74wDsex5tQDSClVkeK1vtxqYCAgCoXxx+K4NSHzgU/muYVYByFqa+0RnrPO9NM6naWm1+G9JmZ0p6QHhXmeYfA==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "fs-monkey": "^1.0.4" + "@jsonjoy.com/json-pack": "^1.0.3", + "@jsonjoy.com/util": "^1.3.0", + "tree-dump": "^1.0.1", + "tslib": "^2.0.0" }, "engines": { "node": ">= 4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" } }, "node_modules/memorystream": { @@ -20490,12 +20112,27 @@ "node": ">= 0.10.0" } }, + "node_modules/meow": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", + "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/merge-stream": { "version": "2.0.0", @@ -21405,12 +21042,6 @@ "lower-case": "^1.1.1" } }, - "node_modules/node-abort-controller": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", - "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==", - "dev": true - }, "node_modules/node-fetch": { "version": "2.6.7", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", @@ -22427,21 +22058,17 @@ } }, "node_modules/p-retry": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.0.tgz", - "integrity": "sha512-JA6nkq6hKyWLLasXQXUrO4z8BUZGUt/LjlJxx8Gb2+2ntodU/SS63YZ8b0LUTbQ8ZB9iwOfhEPhg4ykKnn2KsA==", + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", "dev": true, "license": "MIT", "dependencies": { - "@types/retry": "0.12.2", - "is-network-error": "^1.0.0", + "@types/retry": "0.12.0", "retry": "^0.13.1" }, "engines": { - "node": ">=16.17" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/p-timeout": { @@ -22480,9 +22107,9 @@ } }, "node_modules/package-json-from-dist": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", - "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", "dev": true, "license": "BlueOak-1.0.0" }, @@ -22492,45 +22119,6 @@ "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", "dev": true }, - "node_modules/param-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", - "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", - "dev": true, - "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/param-case/node_modules/dot-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "dev": true, - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/param-case/node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "dev": true, - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/param-case/node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "dev": true, - "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -22627,35 +22215,6 @@ "node": ">= 0.8" } }, - "node_modules/pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "dev": true, - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/pascal-case/node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "dev": true, - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/pascal-case/node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "dev": true, - "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, "node_modules/path-browserify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", @@ -22738,9 +22297,9 @@ } }, "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", + "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==", "dev": true, "license": "MIT" }, @@ -23877,16 +23436,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pretty-error": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", - "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", - "dev": true, - "dependencies": { - "lodash": "^4.17.20", - "renderkid": "^3.0.0" - } - }, "node_modules/pretty-format": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", @@ -24470,16 +24019,6 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" }, - "node_modules/react-refresh": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", - "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/react-router": { "version": "6.24.0", "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.24.0.tgz", @@ -24748,15 +24287,6 @@ "jsesc": "bin/jsesc" } }, - "node_modules/relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/release-zalgo": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", @@ -24831,90 +24361,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/renderkid": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", - "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", - "dev": true, - "dependencies": { - "css-select": "^4.1.3", - "dom-converter": "^0.2.0", - "htmlparser2": "^6.1.0", - "lodash": "^4.17.21", - "strip-ansi": "^6.0.1" - } - }, - "node_modules/renderkid/node_modules/dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dev": true, - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/renderkid/node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/renderkid/node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/renderkid/node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/renderkid/node_modules/htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", - "dev": true, - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" - } - }, "node_modules/request-progress": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", @@ -25874,9 +25320,9 @@ } }, "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", "dev": true, "license": "MIT", "dependencies": { @@ -26028,21 +25474,31 @@ } }, "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", "dev": true, "license": "MIT", "dependencies": { - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.18.0" + "send": "0.19.0" }, "engines": { "node": ">= 0.8.0" } }, + "node_modules/serve-static/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", @@ -26485,13 +25941,6 @@ "node": ">=8" } }, - "node_modules/stackframe": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", - "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", - "dev": true, - "license": "MIT" - }, "node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -28331,12 +27780,6 @@ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, - "node_modules/utila": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", - "dev": true - }, "node_modules/utility-types": { "version": "3.11.0", "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.11.0.tgz", @@ -29898,26 +29341,6 @@ "dev": true, "license": "MIT" }, - "node_modules/webpack-dev-middleware/node_modules/memfs": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.11.1.tgz", - "integrity": "sha512-LZcMTBAgqUUKNXZagcZxvXXfgF1bHX7Y7nQ0QyEiNbRJgE29GhgPd8Yna1VQcLlPiHt/5RFJMWYN9Uv/VPNvjQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@jsonjoy.com/json-pack": "^1.0.3", - "@jsonjoy.com/util": "^1.3.0", - "tree-dump": "^1.0.1", - "tslib": "^2.0.0" - }, - "engines": { - "node": ">= 4.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - } - }, "node_modules/webpack-dev-middleware/node_modules/schema-utils": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", @@ -29998,6 +29421,13 @@ } } }, + "node_modules/webpack-dev-server/node_modules/@types/retry": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", + "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", + "dev": true, + "license": "MIT" + }, "node_modules/webpack-dev-server/node_modules/ajv": { "version": "8.17.1", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", @@ -30119,6 +29549,24 @@ "node": ">=16 || 14 >=14.17" } }, + "node_modules/webpack-dev-server/node_modules/p-retry": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.0.tgz", + "integrity": "sha512-JA6nkq6hKyWLLasXQXUrO4z8BUZGUt/LjlJxx8Gb2+2ntodU/SS63YZ8b0LUTbQ8ZB9iwOfhEPhg4ykKnn2KsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/retry": "0.12.2", + "is-network-error": "^1.0.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/webpack-dev-server/node_modules/rimraf": { "version": "5.0.10", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz", @@ -30522,15 +29970,6 @@ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, "node_modules/yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", diff --git a/package.json b/package.json index e21ccf1b2..073a917a0 100644 --- a/package.json +++ b/package.json @@ -55,12 +55,10 @@ "@cypress/code-coverage": "^3.12.39", "@module-federation/enhanced": "^0.3.5", "@redhat-cloud-services/eslint-config-redhat-cloud-services": "^1.3.0", - "@redhat-cloud-services/frontend-components-config-utilities": "^3.0.7", + "@redhat-cloud-services/frontend-components-config-utilities": "^3.2.3", "@redhat-cloud-services/types": "^1.0.12", - "@rsbuild/plugin-react": "^1.0.1-rc.0", - "@rspack/cli": "^1.0.0", - "@rspack/core": "^1.0.0", - "@rspack/plugin-react-refresh": "^1.0.0", + "@rspack/cli": "^1.0.8", + "@rspack/core": "^1.0.8", "@simonsmith/cypress-image-snapshot": "^8.1.2", "@swc/jest": "^0.2.36", "@testing-library/jest-dom": "^5.17.0", @@ -84,11 +82,7 @@ "cypress": "^13.12.0", "cypress-localstorage-commands": "^2.2.6", "eslint": "^8.57.0", - "eslint-plugin-react-refresh": "^0.4.11", - "fork-ts-checker-webpack-plugin": "^7.3.0", - "git-revision-webpack-plugin": "^5.0.0", "glob": "^7.2.3", - "html-webpack-plugin": "^5.6.0", "identity-obj-proxy": "^3.0.0", "jest": "^29.7.0", "jest-environment-jsdom": "^29.7.0", @@ -103,7 +97,6 @@ "npm-run-all": "^4.1.5", "path-browserify": "^1.0.1", "process": "^0.11.10", - "react-refresh": "^0.14.2", "redux-logger": "^3.0.6", "redux-mock-store": "^1.5.4", "resolve-url-loader": "^5.0.0", diff --git a/src/@types/types.d.ts b/src/@types/types.d.ts index 795d6ca4f..eb6e71c54 100644 --- a/src/@types/types.d.ts +++ b/src/@types/types.d.ts @@ -240,3 +240,36 @@ export enum ReleaseEnv { STABLE = 'STABLE', PREVIEW = 'PREVIEW', } + +export enum FavorableIcons { + AITechnologyIcon = 'AITechnologyIcon', + ACSIcon = 'ACSIcon', + AnsibleIcon = 'AnsibleIcon', + AppServicesIcon = 'AppServicesIcon', + BrainIcon = 'BrainIcon', + DataScienceIcon = 'DataScienceIcon', + EdgeIcon = 'EdgeIcon', + InsightsIcon = 'InsightsIcon', + OpenShiftIcon = 'OpenShiftIcon', + QuayIoIcon = 'QuayIoIcon', + RHIcon = 'RHIcon', + ServicesIcon = 'ServicesIcon', + SubscriptionsIcon = 'SubscriptionsIcon', + TrustedContentIcon = 'TrustedContentIcon', + PlaceholderIcon = 'PlaceholderIcon', + CloudUploadAltIcon = 'CloudUploadAltIcon', + AutomationIcon = 'AutomationIcon', + LightBulbIcon = 'LightBulbIcon', + RocketIcon = 'RocketIcon', + UsersIcon = 'UsersIcon', + InfrastructureIcon = 'InfrastructureIcon', + BellIcon = 'BellIcon', + ChartLineIcon = 'ChartLineIcon', + CloudSecurityIcon = 'CloudSecurityIcon', + CreditCardIcon = 'CreditCardIcon', + CogIcon = 'CogIcon', + ShoppingCartIcon = 'ShoppingCartIcon', + CubeIcon = 'CubeIcon', + BoxesIcon = 'BoxesIcon', + MonitoringIcon = 'MonitoringIcon', +} diff --git a/src/AppProvider.tsx b/src/AppProvider.tsx deleted file mode 100644 index aa8a5cfb5..000000000 --- a/src/AppProvider.tsx +++ /dev/null @@ -1,56 +0,0 @@ -import { useSetAtom } from 'jotai'; -import React, { Suspense, useContext, useEffect, useState } from 'react'; -import RootApp from './components/RootApp'; -import { ChromeUserConfig, initChromeUserConfig } from './utils/initUserConfig'; -import useSuspenseLoader from '@redhat-cloud-services/frontend-components-utilities/useSuspenseLoader/useSuspenseLoader'; -import AppPlaceholder from './components/AppPlaceholder'; -import ChromeAuthContext from './auth/ChromeAuthContext'; -import registerAnalyticsObserver from './analytics/analyticsObserver'; -import { ITLess, trustarcScriptSetup } from './utils/common'; -import { isPreviewAtom } from './state/atoms/releaseAtom'; - -const isITLessEnv = ITLess(); - -const useInitializeAnalytics = () => { - useEffect(() => { - // setup trust arc - trustarcScriptSetup(); - // setup adobe analytics - if (!isITLessEnv && typeof window._satellite !== 'undefined' && typeof window._satellite.pageBottom === 'function') { - window._satellite.pageBottom(); - registerAnalyticsObserver(); - } - }, []); -}; - -const App = ({ initApp }: { initApp: (...args: Parameters) => ChromeUserConfig | undefined }) => { - const { getUser, token } = useContext(ChromeAuthContext); - // triggers suspense based async call to block rendering until the async call is resolved - // TODO: Most of async init should be moved to this method - initApp({ - getUser, - token, - }); - const [cookieElement, setCookieElement] = useState(null); - - useInitializeAnalytics(); - - return ; -}; - -export const ConfigLoader = () => { - const initPreview = useSetAtom(isPreviewAtom); - function initSuccess(userConfig: ChromeUserConfig) { - initPreview(userConfig.data.uiPreview); - } - function initFail() { - initPreview(false); - } - const { loader } = useSuspenseLoader(initChromeUserConfig, initSuccess, initFail); - const [cookieElement, setCookieElement] = useState(null); - return ( - }> - - - ); -}; diff --git a/src/bootstrap.tsx b/src/bootstrap.tsx index 8427fce66..446c145f7 100644 --- a/src/bootstrap.tsx +++ b/src/bootstrap.tsx @@ -1,4 +1,4 @@ -import React, { useEffect } from 'react'; +import React from 'react'; import { createRoot } from 'react-dom/client'; import { Provider } from 'react-redux'; import { IntlProvider, ReactIntlErrorCode } from 'react-intl'; @@ -11,38 +11,13 @@ import messages from './locales/data.json'; import ErrorBoundary from './components/ErrorComponents/ErrorBoundary'; import chromeStore from './state/chromeStore'; import { GenerateId } from '@patternfly/react-core/dist/dynamic/helpers/GenerateId/GenerateId'; -import AppPlaceholder from './components/AppPlaceholder'; -import useSessionConfig from './hooks/useSessionConfig'; +import App from './components/App'; const language: keyof typeof messages = 'en'; GenerateId.defaultProps.prefix = 'hc-console-'; GenerateId.defaultProps.isRandom = true; -const useInitializeAnalytics = () => { - useEffect(() => { - // setup trust arc - trustarcScriptSetup(); - // setup adobe analytics - if (!isITLessEnv && typeof window._satellite !== 'undefined' && typeof window._satellite.pageBottom === 'function') { - window._satellite.pageBottom(); - registerAnalyticsObserver(); - } - }, []); -}; - -const App = () => { - const loaded = useSessionConfig(); - - useInitializeAnalytics(); - - if (!loaded) { - return ; - } - - return ; -}; - const entry = document.getElementById('chrome-entry'); if (entry) { const reactRoot = createRoot(entry); @@ -63,9 +38,9 @@ if (entry) { }} > - + - + diff --git a/src/components/AllServices/allServicesLinks.ts b/src/components/AllServices/allServicesLinks.ts index 91b30f665..79f0daf71 100644 --- a/src/components/AllServices/allServicesLinks.ts +++ b/src/components/AllServices/allServicesLinks.ts @@ -1,4 +1,4 @@ -import { FavorableIcons } from '../FavoriteServices/ServiceIcon'; +import { FavorableIcons } from '../../@types/types'; export type AllServicesLink = { href: string; diff --git a/src/components/App.tsx b/src/components/App.tsx new file mode 100644 index 000000000..f943770d7 --- /dev/null +++ b/src/components/App.tsx @@ -0,0 +1,34 @@ +import { useEffect } from 'react'; +import useSessionConfig from '../hooks/useSessionConfig'; +import { ITLess, trustarcScriptSetup } from '../utils/common'; +import AppPlaceholder from './AppPlaceholder'; +import RootApp from './RootApp'; +import registerAnalyticsObserver from '../analytics/analyticsObserver'; + +const isITLessEnv = ITLess(); + +const useInitializeAnalytics = () => { + useEffect(() => { + // setup trust arc + trustarcScriptSetup(); + // setup adobe analytics + if (!isITLessEnv && typeof window._satellite !== 'undefined' && typeof window._satellite.pageBottom === 'function') { + window._satellite.pageBottom(); + registerAnalyticsObserver(); + } + }, []); +}; + +const App = () => { + const loaded = useSessionConfig(); + + useInitializeAnalytics(); + + if (!loaded) { + return ; + } + + return ; +}; + +export default App; diff --git a/src/components/ChromeRoute/ChromeRoute.tsx b/src/components/ChromeRoute/ChromeRoute.tsx index 10b252cf5..78d3c65ed 100644 --- a/src/components/ChromeRoute/ChromeRoute.tsx +++ b/src/components/ChromeRoute/ChromeRoute.tsx @@ -76,7 +76,6 @@ const ChromeRoute = memo( }; }, [scope]); - console.log('rendering ChromeRoute!!!', scope, module, path); if (gatewayError) { return ; } @@ -92,13 +91,11 @@ const ChromeRoute = memo( return (
-

AAA

} fallback={LoadingFallback} - // LoadingFallback={() => LoadingFallback} scope={scope} module={module} appId={scope} diff --git a/src/components/ErrorComponents/AccountOnHoldError.tsx b/src/components/ErrorComponents/AccountOnHoldError.tsx index fdb9ae239..e86460fef 100644 --- a/src/components/ErrorComponents/AccountOnHoldError.tsx +++ b/src/components/ErrorComponents/AccountOnHoldError.tsx @@ -1,13 +1,6 @@ -import React from 'react'; import { AxiosError } from 'axios'; import NotAuthorized from '@redhat-cloud-services/frontend-components/NotAuthorized'; -const ON_HOLD_MARK = 'Insights authorization failed - ERROR_EXPORT_CONTROL:'; - -export const checkAccountOnHold = (error: any) => { - return error?.response?.data?.errors?.[0]?.detail.includes(ON_HOLD_MARK); -}; - const AccountOnHoldError = ({ error }: { error: AxiosError<{ errors: { detail: string }[] }> }) => { const data = error.response?.data.errors[0].detail; const description =
; diff --git a/src/components/ErrorComponents/ErrorBoundary.tsx b/src/components/ErrorComponents/ErrorBoundary.tsx index 6f658b53a..12044232e 100644 --- a/src/components/ErrorComponents/ErrorBoundary.tsx +++ b/src/components/ErrorComponents/ErrorBoundary.tsx @@ -1,7 +1,8 @@ import React from 'react'; import ErrorComponent from './DefaultErrorComponent'; -import AccountOnHoldError, { checkAccountOnHold } from './AccountOnHoldError'; +import AccountOnHoldError from './AccountOnHoldError'; +import { checkAccountOnHold } from '../../utils/common'; type ErrorBoundaryState = { hasError: boolean; diff --git a/src/components/FavoriteServices/ServiceIcon.tsx b/src/components/FavoriteServices/ServiceIcon.tsx index f2bb2f9e5..4c786be3b 100644 --- a/src/components/FavoriteServices/ServiceIcon.tsx +++ b/src/components/FavoriteServices/ServiceIcon.tsx @@ -29,39 +29,7 @@ import MonitoringIcon from '@patternfly/react-icons/dist/dynamic/icons/monitorin import AutomationIcon from '@patternfly/react-icons/dist/dynamic/icons/automation-icon'; import BellIcon from '@patternfly/react-icons/dist/dynamic/icons/bell-icon'; import BrainIcon from '@patternfly/react-icons/dist/dynamic/icons/brain-icon'; - -export enum FavorableIcons { - AITechnologyIcon = 'AITechnologyIcon', - ACSIcon = 'ACSIcon', - AnsibleIcon = 'AnsibleIcon', - AppServicesIcon = 'AppServicesIcon', - BrainIcon = 'BrainIcon', - DataScienceIcon = 'DataScienceIcon', - EdgeIcon = 'EdgeIcon', - InsightsIcon = 'InsightsIcon', - OpenShiftIcon = 'OpenShiftIcon', - QuayIoIcon = 'QuayIoIcon', - RHIcon = 'RHIcon', - ServicesIcon = 'ServicesIcon', - SubscriptionsIcon = 'SubscriptionsIcon', - TrustedContentIcon = 'TrustedContentIcon', - PlaceholderIcon = 'PlaceholderIcon', - CloudUploadAltIcon = 'CloudUploadAltIcon', - AutomationIcon = 'AutomationIcon', - LightBulbIcon = 'LightBulbIcon', - RocketIcon = 'RocketIcon', - UsersIcon = 'UsersIcon', - InfrastructureIcon = 'InfrastructureIcon', - BellIcon = 'BellIcon', - ChartLineIcon = 'ChartLineIcon', - CloudSecurityIcon = 'CloudSecurityIcon', - CreditCardIcon = 'CreditCardIcon', - CogIcon = 'CogIcon', - ShoppingCartIcon = 'ShoppingCartIcon', - CubeIcon = 'CubeIcon', - BoxesIcon = 'BoxesIcon', - MonitoringIcon = 'MonitoringIcon', -} +import { FavorableIcons } from '../../@types/types'; const iconEnum: { [key in FavorableIcons]: React.ComponentType } = { AITechnologyIcon, diff --git a/src/components/FavoriteServices/ServiceTile.tsx b/src/components/FavoriteServices/ServiceTile.tsx index 848ac604f..ebb32da26 100644 --- a/src/components/FavoriteServices/ServiceTile.tsx +++ b/src/components/FavoriteServices/ServiceTile.tsx @@ -11,7 +11,7 @@ import { bundleMapping } from '../../hooks/useBundle'; import './ServiceTile.scss'; import useFavoritePagesWrapper from '../../hooks/useFavoritePagesWrapper'; -import { FavorableIcons } from './ServiceIcon'; +import { FavorableIcons } from '../../@types/types'; export type ServiceTileProps = { name: React.ReactNode; diff --git a/src/components/GlobalFilter/TagsModal.tsx b/src/components/GlobalFilter/TagsModal.tsx index eb987ea37..15ba6b790 100644 --- a/src/components/GlobalFilter/TagsModal.tsx +++ b/src/components/GlobalFilter/TagsModal.tsx @@ -25,7 +25,7 @@ export type IDMapper = (tag: CommonTag) => string; export type CellsMapper = (tag: CommonTag) => (string | number | boolean | undefined)[]; export type DebounceCallback = (filters?: TagFilterOptions, pagination?: TagPagination) => Action; -export const useMetaSelector = (key: 'tags' | 'workloads' | 'sid') => +const useMetaSelector = (key: 'tags' | 'workloads' | 'sid') => useSelector(({ globalFilter }) => { const selected = globalFilter[key]; return [selected?.isLoaded, selected?.total || 0, selected?.page || 1, selected?.perPage || 10]; diff --git a/src/components/Navigation/ChromeNavGroup.tsx b/src/components/Navigation/ChromeNavGroup.tsx index 5ead39da8..b8c0f726d 100644 --- a/src/components/Navigation/ChromeNavGroup.tsx +++ b/src/components/Navigation/ChromeNavGroup.tsx @@ -2,9 +2,25 @@ import React from 'react'; import { Icon } from '@patternfly/react-core/dist/dynamic/components/Icon'; import { NavGroup } from '@patternfly/react-core/dist/dynamic/components/Nav'; -import ChromeNavItemFactory, { sectionTitleMapper } from './ChromeNavItemFactory'; +import ChromeNavItemFactory from './ChromeNavItemFactory'; import { ChromeNavGroupProps } from '../../@types/types'; +import WrenchIcon from '@patternfly/react-icons/dist/dynamic/icons/wrench-icon'; +import SecurityIcon from '@patternfly/react-icons/dist/dynamic/icons/security-icon'; +import TrendUpIcon from '@patternfly/react-icons/dist/dynamic/icons/trend-up-icon'; +import CodeIcon from '@patternfly/react-icons/dist/dynamic/icons/code-icon'; +import DatabaseIcon from '@patternfly/react-icons/dist/dynamic/icons/database-icon'; +import CloudIcon from '@patternfly/react-icons/dist/dynamic/icons/cloud-upload-alt-icon'; + +const sectionTitleMapper = { + wrench: , + shield: , + database: , + cloud: , + code: , + 'trend-up': , +}; + const ChromeNavGroup = ({ navItems, isHidden, icon, title }: ChromeNavGroupProps) => { const filteredFedrampNavItems = navItems; diff --git a/src/components/Navigation/ChromeNavItemFactory.tsx b/src/components/Navigation/ChromeNavItemFactory.tsx index 59095972e..c80ced7fd 100644 --- a/src/components/Navigation/ChromeNavItemFactory.tsx +++ b/src/components/Navigation/ChromeNavItemFactory.tsx @@ -2,22 +2,6 @@ import React, { useContext } from 'react'; import { ChromeNavExpandableProps, ChromeNavGroupProps, ChromeNavItemProps, DynamicNavProps } from '../../@types/types'; import NavContext from './navContext'; -import WrenchIcon from '@patternfly/react-icons/dist/dynamic/icons/wrench-icon'; -import SecurityIcon from '@patternfly/react-icons/dist/dynamic/icons/security-icon'; -import TrendUpIcon from '@patternfly/react-icons/dist/dynamic/icons/trend-up-icon'; -import CodeIcon from '@patternfly/react-icons/dist/dynamic/icons/code-icon'; -import DatabaseIcon from '@patternfly/react-icons/dist/dynamic/icons/database-icon'; -import CloudIcon from '@patternfly/react-icons/dist/dynamic/icons/cloud-upload-alt-icon'; - -export const sectionTitleMapper = { - wrench: , - shield: , - database: , - cloud: , - code: , - 'trend-up': , -}; - export type ChromeNavItemFactoryProps = { groupId?: string; expandable?: boolean; diff --git a/src/components/Search/SearchFeedback.test.tsx b/src/components/Search/SearchFeedback.test.tsx index 2072841bd..da765a797 100644 --- a/src/components/Search/SearchFeedback.test.tsx +++ b/src/components/Search/SearchFeedback.test.tsx @@ -1,8 +1,9 @@ import React from 'react'; import { fireEvent, render, screen, waitFor } from '@testing-library/react'; -import SearchFeedback, { SEARCH_FEEDBACK_NEGATIVE, SEARCH_FEEDBACK_POSITIVE } from './SearchFeedback'; +import SearchFeedback from './SearchFeedback'; import { SearchItem } from './SearchTypes'; import { useSegment } from '../../analytics/useSegment'; +import { SEARCH_FEEDBACK_NEGATIVE, SEARCH_FEEDBACK_POSITIVE } from '../../utils/common'; jest.mock('../../analytics/useSegment'); diff --git a/src/components/Search/SearchFeedback.tsx b/src/components/Search/SearchFeedback.tsx index 2368e3aee..229e215e8 100644 --- a/src/components/Search/SearchFeedback.tsx +++ b/src/components/Search/SearchFeedback.tsx @@ -7,9 +7,7 @@ import OutlinedThumbsDownIcon from '@patternfly/react-icons/dist/dynamic/icons/o import { MenuGroup, MenuItem } from '@patternfly/react-core/dist/dynamic/components/Menu'; import { useSegment } from '../../analytics/useSegment'; import type { SearchItem } from './SearchTypes'; - -export const SEARCH_FEEDBACK_POSITIVE = 'chrome.search-query-feedback-positive'; -export const SEARCH_FEEDBACK_NEGATIVE = 'chrome.search-query-feedback-negative'; +import { SEARCH_FEEDBACK_NEGATIVE, SEARCH_FEEDBACK_POSITIVE } from '../../utils/common'; export type SearchFeedbackType = typeof SEARCH_FEEDBACK_POSITIVE | typeof SEARCH_FEEDBACK_NEGATIVE | undefined; diff --git a/src/index.ejs b/src/index.ejs index 28149e768..d0d7f34f7 100644 --- a/src/index.ejs +++ b/src/index.ejs @@ -12,8 +12,6 @@ - -