From 823484ba62297a701bc0eb769003c5e492da91c4 Mon Sep 17 00:00:00 2001 From: JounQin Date: Fri, 9 Aug 2024 01:07:39 +0800 Subject: [PATCH] feat: experimentally support using rspack instead close #21682 Signed-off-by: JounQin --- packages/cli/package.json | 15 + .../cli/src/commands/build/buildFrontend.ts | 4 +- packages/cli/src/commands/build/command.ts | 4 + packages/cli/src/lib/bundler/bundle.ts | 16 +- packages/cli/src/lib/bundler/config.ts | 160 ++++--- packages/cli/src/lib/bundler/optimization.ts | 24 +- packages/cli/src/lib/bundler/server.ts | 14 +- packages/cli/src/lib/bundler/transforms.ts | 23 +- packages/cli/src/lib/bundler/types.ts | 3 + yarn.lock | 447 +++++++++++++++--- 10 files changed, 565 insertions(+), 145 deletions(-) diff --git a/packages/cli/package.json b/packages/cli/package.json index de38b0c656..e2726f358a 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -166,6 +166,9 @@ "@backstage/dev-utils": "workspace:^", "@backstage/test-utils": "workspace:^", "@backstage/theme": "workspace:^", + "@rspack/core": "^0.7.5", + "@rspack/dev-server": "^0.7.5", + "@rspack/plugin-react-refresh": "^0.7.5", "@types/cross-spawn": "^6.0.2", "@types/diff": "^5.0.0", "@types/ejs": "^3.1.3", @@ -191,12 +194,24 @@ "vite-plugin-node-polyfills": "^0.22.0" }, "peerDependencies": { + "@rspack/core": "^0.7.5", + "@rspack/dev-server": "^0.7.5", + "@rspack/plugin-react-refresh": "^0.7.5", "@vitejs/plugin-react": "^4.0.4", "vite": "^4.4.9", "vite-plugin-html": "^3.2.0", "vite-plugin-node-polyfills": "^0.22.0" }, "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "@rspack/dev-server": { + "optional": true + }, + "@rspack/plugin-react-refresh": { + "optional": true + }, "@vitejs/plugin-react": { "optional": true }, diff --git a/packages/cli/src/commands/build/buildFrontend.ts b/packages/cli/src/commands/build/buildFrontend.ts index f29e0bdd38..5cb6d3b526 100644 --- a/packages/cli/src/commands/build/buildFrontend.ts +++ b/packages/cli/src/commands/build/buildFrontend.ts @@ -25,10 +25,11 @@ interface BuildAppOptions { writeStats: boolean; configPaths: string[]; isModuleFederationRemote?: true; + useRspack?: boolean; } export async function buildFrontend(options: BuildAppOptions) { - const { targetDir, writeStats, configPaths } = options; + const { targetDir, writeStats, configPaths, useRspack } = options; const { name } = await fs.readJson(resolvePath(targetDir, 'package.json')); await buildBundle({ @@ -44,5 +45,6 @@ export async function buildFrontend(options: BuildAppOptions) { args: configPaths, fromPackage: name, })), + useRspack, }); } diff --git a/packages/cli/src/commands/build/command.ts b/packages/cli/src/commands/build/command.ts index c0ad3c912b..4f99ec6a00 100644 --- a/packages/cli/src/commands/build/command.ts +++ b/packages/cli/src/commands/build/command.ts @@ -25,6 +25,8 @@ import { isValidUrl } from '../../lib/urls'; import chalk from 'chalk'; export async function command(opts: OptionValues): Promise { + const useRspack = !!process.env.EXPERIMENTAL_RSPACK; + const role = await findRoleFromCommand(opts); if (role === 'frontend' || role === 'backend') { @@ -40,6 +42,7 @@ export async function command(opts: OptionValues): Promise { targetDir: paths.targetDir, configPaths, writeStats: Boolean(opts.stats), + useRspack, }); } return buildBackend({ @@ -62,6 +65,7 @@ export async function command(opts: OptionValues): Promise { configPaths: [], writeStats: Boolean(opts.stats), isModuleFederationRemote: true, + useRspack, }); } diff --git a/packages/cli/src/lib/bundler/bundle.ts b/packages/cli/src/lib/bundler/bundle.ts index 0aa91a90a6..0a36f54053 100644 --- a/packages/cli/src/lib/bundler/bundle.ts +++ b/packages/cli/src/lib/bundler/bundle.ts @@ -38,7 +38,7 @@ function applyContextToError(error: string, moduleName: string): string { } export async function buildBundle(options: BuildOptions) { - const { statsJsonEnabled, schema: configSchema } = options; + const { statsJsonEnabled, schema: configSchema, useRspack } = options; const paths = resolveBundlingPaths(options); const publicPaths = await resolveOptionalBundlingPaths({ @@ -54,7 +54,7 @@ export async function buildBundle(options: BuildOptions) { getFrontendAppConfigs: () => options.frontendAppConfigs, }; - const configs = []; + const configs: webpack.Configuration[] = []; if (options.moduleFederation?.mode === 'remote') { // Package detection is disabled for remote bundles @@ -119,7 +119,7 @@ export async function buildBundle(options: BuildOptions) { ); } - const { stats } = await build(configs, isCi); + const { stats } = await build(configs, isCi, useRspack); if (!stats) { throw new Error('No stats returned'); @@ -152,10 +152,16 @@ export async function buildBundle(options: BuildOptions) { } } -async function build(configs: webpack.Configuration[], isCi: boolean) { +async function build( + configs: webpack.Configuration[], + isCi: boolean, + useRspack?: boolean, +) { + const bundler: typeof webpack = useRspack ? require('@rspack/core') : webpack; + const stats = await new Promise( (resolve, reject) => { - webpack(configs, (err, buildStats) => { + bundler(configs, (err, buildStats) => { if (err) { if (err.message) { const { errors } = formatWebpackMessages({ diff --git a/packages/cli/src/lib/bundler/config.ts b/packages/cli/src/lib/bundler/config.ts index da7b378fbd..69c673b833 100644 --- a/packages/cli/src/lib/bundler/config.ts +++ b/packages/cli/src/lib/bundler/config.ts @@ -21,7 +21,7 @@ import { } from './types'; import { posix as posixPath, resolve as resolvePath, dirname } from 'path'; import chalk from 'chalk'; -import webpack, { ProvidePlugin } from 'webpack'; +import webpack from 'webpack'; import { BackstagePackage } from '@backstage/cli-node'; import { BundlingPaths } from './paths'; @@ -132,6 +132,7 @@ export async function createConfig( frontendConfig, moduleFederation, publicSubPath = '', + useRspack, } = options; const { plugins, loaders } = transforms(options); @@ -152,15 +153,20 @@ export async function createConfig( options.moduleFederation, ); - plugins.push( - new ReactRefreshPlugin({ - overlay: { - sockProtocol: 'ws', - sockHost: host, - sockPort: port, - }, - }), - ); + if (useRspack) { + const RspackReactRefreshPlugin = require('@rspack/plugin-react-refresh'); + plugins.push(new RspackReactRefreshPlugin()); + } else { + plugins.push( + new ReactRefreshPlugin({ + overlay: { + sockProtocol: 'ws', + sockHost: host, + sockPort: port, + }, + }), + ); + } } if (checksEnabled) { @@ -175,18 +181,24 @@ export async function createConfig( ); } + const rspack = useRspack + ? (require('@rspack/core') as typeof import('@rspack/core').rspack) + : undefined; + const bundler = useRspack ? (rspack as unknown as typeof webpack) : webpack; + // TODO(blam): process is no longer auto polyfilled by webpack in v5. // we use the provide plugin to provide this polyfill, but lets look // to remove this eventually! plugins.push( - new ProvidePlugin({ - process: require.resolve('process/browser'), + new bundler.ProvidePlugin({ + process: require.resolve('process/browser'),, Buffer: ['buffer', 'Buffer'], }), ); if (options.moduleFederation?.mode !== 'remote') { plugins.push( + // `rspack.HtmlRspackPlugin` does not support object type `templateParameters` value, `frontendConfig` in this case new HtmlWebpackPlugin({ meta: { 'backstage-app-mode': options?.appMode ?? 'public', @@ -203,8 +215,13 @@ export async function createConfig( if (options.moduleFederation) { const isRemote = options.moduleFederation?.mode === 'remote'; + const AdaptedModuleFederationPlugin = useRspack + ? (rspack!.container + .ModuleFederationPlugin as unknown as typeof ModuleFederationPlugin) + : ModuleFederationPlugin; + plugins.push( - new ModuleFederationPlugin({ + new AdaptedModuleFederationPlugin({ ...(isRemote && { filename: 'remoteEntry.js', exposes: { @@ -264,13 +281,17 @@ export async function createConfig( } const buildInfo = await readBuildInfo(); + plugins.push( - new webpack.DefinePlugin({ + new bundler.DefinePlugin({ 'process.env.BUILD_INFO': JSON.stringify(buildInfo), - 'process.env.APP_CONFIG': webpack.DefinePlugin.runtimeValue( - () => JSON.stringify(options.getFrontendAppConfigs()), - true, - ), + 'process.env.APP_CONFIG': useRspack + ? // FIXME: see also https://github.com/web-infra-dev/rspack/issues/5606 + JSON.stringify(options.getFrontendAppConfigs()) + : bundler.DefinePlugin.runtimeValue( + () => JSON.stringify(options.getFrontendAppConfigs()), + true, + ), // This allows for conditional imports of react-dom/client, since there's no way // to check for presence of it in source code without module resolution errors. 'process.env.HAS_REACT_DOM_CLIENT': JSON.stringify(hasReactDomClient()), @@ -280,13 +301,17 @@ export async function createConfig( // These files are required by the transpiled code when using React Refresh. // They need to be excluded to the module scope plugin which ensures that files // that exist in the package are required. - const reactRefreshFiles = [ - require.resolve( - '@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js', - ), - require.resolve('@pmmmwh/react-refresh-webpack-plugin/overlay/index.js'), - require.resolve('react-refresh'), - ]; + const reactRefreshFiles = useRspack + ? [] + : [ + require.resolve( + '@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js', + ), + require.resolve( + '@pmmmwh/react-refresh-webpack-plugin/overlay/index.js', + ), + require.resolve('react-refresh'), + ]; const mode = isDev ? 'development' : 'production'; const optimization = optimizationConfig(options); @@ -315,16 +340,19 @@ export async function createConfig( // Instead, provide a custom definition which always uses "development" if // the module is part of `react` or `react-dom`, and `config.mode` otherwise. plugins.push( - new webpack.DefinePlugin({ - 'process.env.NODE_ENV': webpack.DefinePlugin.runtimeValue( - ({ module }) => { - if (reactPackageDirs.some(val => module.resource.startsWith(val))) { - return '"development"'; - } + new bundler.DefinePlugin({ + 'process.env.NODE_ENV': useRspack + ? // FIXME: see also https://github.com/web-infra-dev/rspack/issues/5606 + JSON.stringify(mode) + : webpack.DefinePlugin.runtimeValue(({ module }) => { + if ( + reactPackageDirs.some(val => module.resource.startsWith(val)) + ) { + return '"development"'; + } - return `"${mode}"`; - }, - ), + return `"${mode}"`; + }), }), ); } @@ -362,13 +390,16 @@ export async function createConfig( http: false, util: require.resolve('util/'), }, - plugins: [ - new LinkedPackageResolvePlugin(paths.rootNodeModules, externalPkgs), - new ModuleScopePlugin( - [paths.targetSrc, paths.targetDev], - [paths.targetPackageJson, ...reactRefreshFiles], - ), - ], + // FIXME: see also https://github.com/web-infra-dev/rspack/issues/3408 + ...(!useRspack && { + plugins: [ + new LinkedPackageResolvePlugin(paths.rootNodeModules, externalPkgs), + new ModuleScopePlugin( + [paths.targetSrc, paths.targetDev], + [paths.targetPackageJson, ...reactRefreshFiles], + ), + ], + }), }, module: { rules: loaders, @@ -396,16 +427,20 @@ export async function createConfig( lazyCompilation: yn(process.env.EXPERIMENTAL_LAZY_COMPILATION), }, plugins, - ...(withCache - ? { - cache: { - type: 'filesystem', - buildDependencies: { - config: [__filename], - }, - }, - } - : {}), + ...(withCache && { + cache: { + type: 'filesystem', + buildDependencies: { + config: [__filename], + }, + }, + }), + ...(useRspack && { + // We're still using `style-loader` for custom `insert` option + experiments: { + css: false, + }, + }), }; } @@ -413,7 +448,7 @@ export async function createBackendConfig( paths: BundlingPaths, options: BackendBundlingOptions, ): Promise { - const { checksEnabled, isDev } = options; + const { checksEnabled, isDev, useRspack } = options; // Find all local monorepo packages and their node_modules, and mark them as external. const { packages } = await getPackages(cliPaths.targetDir); @@ -484,13 +519,16 @@ export async function createBackendConfig( extensions: ['.ts', '.mjs', '.js', '.json'], mainFields: ['main'], modules: [paths.rootNodeModules, ...moduleDirs], - plugins: [ - new LinkedPackageResolvePlugin(paths.rootNodeModules, externalPkgs), - new ModuleScopePlugin( - [paths.targetSrc, paths.targetDev], - [paths.targetPackageJson], - ), - ], + // FIXME: see also https://github.com/web-infra-dev/rspack/issues/3408 + ...(!useRspack && { + plugins: [ + new LinkedPackageResolvePlugin(paths.rootNodeModules, externalPkgs), + new ModuleScopePlugin( + [paths.targetSrc, paths.targetDev], + [paths.targetPackageJson], + ), + ], + }), }, module: { rules: loaders, @@ -517,7 +555,9 @@ export async function createBackendConfig( nodeArgs: runScriptNodeArgs.length > 0 ? runScriptNodeArgs : undefined, args: process.argv.slice(3), // drop `node backstage-cli backend:dev` }), - new webpack.HotModuleReplacementPlugin(), + new (useRspack + ? require('@rspack/core').rspack.HotModuleReplacementPlugin + : webpack.HotModuleReplacementPlugin)(), ...(checksEnabled ? [ new ForkTsCheckerWebpackPlugin({ diff --git a/packages/cli/src/lib/bundler/optimization.ts b/packages/cli/src/lib/bundler/optimization.ts index cf240b4791..1cef6b6205 100644 --- a/packages/cli/src/lib/bundler/optimization.ts +++ b/packages/cli/src/lib/bundler/optimization.ts @@ -22,22 +22,35 @@ const { EsbuildPlugin } = require('esbuild-loader'); export const optimization = ( options: BundlingOptions, ): WebpackOptionsNormalized['optimization'] => { - const { isDev } = options; + const { isDev, useRspack } = options; + + const extralOptions = useRspack + ? {} + : { maxAsyncRequests: Infinity, maxInitialRequests: Infinity }; + + const rspack = useRspack + ? (require('@rspack/core') as typeof import('@rspack/core').rspack) + : undefined; + + const MinifyPlugin = useRspack + ? rspack!.SwcJsMinimizerRspackPlugin + : EsbuildPlugin; return { minimize: !isDev, minimizer: [ - new EsbuildPlugin({ + new MinifyPlugin({ target: 'ES2022', format: 'iife', exclude: 'remoteEntry.js', }), // Avoid iife wrapping of module federation remote entry as it breaks the variable assignment - new EsbuildPlugin({ + new MinifyPlugin({ target: 'ES2022', format: undefined, include: 'remoteEntry.js', }), + useRspack && new rspack!.LightningCssMinimizerRspackPlugin(), ], runtimeChunk: 'single', splitChunks: { @@ -69,9 +82,8 @@ export const optimization = ( priority: 10, minSize: 100000, minChunks: 1, - maxAsyncRequests: Infinity, - maxInitialRequests: Infinity, - } as any, // filename is not included in type, but we need it + ...extralOptions, + }, // filename is not included in type, but we need it // Group together the smallest modules vendor: { chunks: 'initial', diff --git a/packages/cli/src/lib/bundler/server.ts b/packages/cli/src/lib/bundler/server.ts index 259f3263eb..25d3cbe321 100644 --- a/packages/cli/src/lib/bundler/server.ts +++ b/packages/cli/src/lib/bundler/server.ts @@ -106,12 +106,15 @@ DEPRECATION WARNING: React Router Beta is deprecated and support for it will be }, }); + const useRspack = !!process.env.EXPERIMENTAL_RSPACK; + const commonConfigOptions = { ...options, checksEnabled: options.checksEnabled, isDev: true, baseUrl: url, frontendConfig, + useRspack, getFrontendAppConfigs: () => { return latestFrontendAppConfigs; }, @@ -163,6 +166,11 @@ DEPRECATION WARNING: React Router Beta is deprecated and support for it will be root: paths.targetPath, }); } else { + const bundler = useRspack ? require('@rspack/core') : webpack; + const DevServer: typeof WebpackDevServer = useRspack + ? require('@rspack/dev-server').RspackDevServer + : WebpackDevServer; + const publicPaths = await resolveOptionalBundlingPaths({ entry: 'src/index-public-experimental', dist: 'dist/public', @@ -175,10 +183,10 @@ DEPRECATION WARNING: React Router Beta is deprecated and support for it will be ); } const compiler = publicPaths - ? webpack([config, await createConfig(publicPaths, commonConfigOptions)]) - : webpack(config); + ? bundler([config, await createConfig(publicPaths, commonConfigOptions)]) + : bundler(config); - webpackServer = new WebpackDevServer( + webpackServer = new DevServer( { hot: !process.env.CI, devMiddleware: { diff --git a/packages/cli/src/lib/bundler/transforms.ts b/packages/cli/src/lib/bundler/transforms.ts index 302b2fbe68..a6a49895ef 100644 --- a/packages/cli/src/lib/bundler/transforms.ts +++ b/packages/cli/src/lib/bundler/transforms.ts @@ -26,10 +26,15 @@ type Transforms = { type TransformOptions = { isDev: boolean; isBackend?: boolean; + useRspack?: boolean; }; export const transforms = (options: TransformOptions): Transforms => { - const { isDev, isBackend } = options; + const { isDev, isBackend, useRspack } = options; + + const CssExtractRspackPlugin: typeof MiniCssExtractPlugin = useRspack + ? require('@rspack/core').CssExtractRspackPlugin + : MiniCssExtractPlugin; // This ensures that styles inserted from the style-loader and any // async style chunks are always given lower priority than JSS styles. @@ -54,7 +59,9 @@ export const transforms = (options: TransformOptions): Transforms => { exclude: /node_modules/, use: [ { - loader: require.resolve('swc-loader'), + loader: useRspack + ? 'builtin:swc-loader' + : require.resolve('swc-loader'), options: { jsc: { target: 'es2022', @@ -82,7 +89,9 @@ export const transforms = (options: TransformOptions): Transforms => { exclude: /node_modules/, use: [ { - loader: require.resolve('swc-loader'), + loader: useRspack + ? 'builtin:swc-loader' + : require.resolve('swc-loader'), options: { jsc: { target: 'es2022', @@ -115,7 +124,9 @@ export const transforms = (options: TransformOptions): Transforms => { test: [/\.icon\.svg$/], use: [ { - loader: require.resolve('swc-loader'), + loader: useRspack + ? 'builtin:swc-loader' + : require.resolve('swc-loader'), options: { jsc: { target: 'es2022', @@ -179,7 +190,7 @@ export const transforms = (options: TransformOptions): Transforms => { insert: insertBeforeJssStyles, }, } - : MiniCssExtractPlugin.loader, + : CssExtractRspackPlugin.loader, { loader: require.resolve('css-loader'), options: { @@ -194,7 +205,7 @@ export const transforms = (options: TransformOptions): Transforms => { if (!isDev) { plugins.push( - new MiniCssExtractPlugin({ + new CssExtractRspackPlugin({ filename: 'static/[name].[contenthash:8].css', chunkFilename: 'static/[name].[id].[contenthash:8].css', insert: insertBeforeJssStyles, // Only applies to async chunks diff --git a/packages/cli/src/lib/bundler/types.ts b/packages/cli/src/lib/bundler/types.ts index f8e228c5c4..8b48976f9b 100644 --- a/packages/cli/src/lib/bundler/types.ts +++ b/packages/cli/src/lib/bundler/types.ts @@ -37,6 +37,7 @@ export type BundlingOptions = { // Mode that the app is running in, 'protected' or 'public', default is 'public' appMode?: string; moduleFederation?: ModuleFederationOptions; + useRspack?: boolean; }; export type ServeOptions = BundlingPathsOptions & { @@ -57,6 +58,7 @@ export type BuildOptions = BundlingPathsOptions & { frontendAppConfigs: AppConfig[]; fullConfig: Config; moduleFederation?: ModuleFederationOptions; + useRspack?: boolean; }; export type BackendBundlingOptions = { @@ -66,6 +68,7 @@ export type BackendBundlingOptions = { inspectEnabled: boolean; inspectBrkEnabled: boolean; require?: string; + useRspack?: boolean; }; export type BackendServeOptions = BundlingPathsOptions & { diff --git a/yarn.lock b/yarn.lock index 9c292f5903..7222777537 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3958,6 +3958,9 @@ __metadata: "@rollup/plugin-json": ^6.0.0 "@rollup/plugin-node-resolve": ^15.0.0 "@rollup/plugin-yaml": ^4.0.0 + "@rspack/core": ^0.7.5 + "@rspack/dev-server": ^0.7.5 + "@rspack/plugin-react-refresh": ^0.7.5 "@spotify/eslint-config-base": ^15.0.0 "@spotify/eslint-config-react": ^15.0.0 "@spotify/eslint-config-typescript": ^15.0.0 @@ -4073,11 +4076,20 @@ __metadata: yn: ^4.0.0 zod: ^3.22.4 peerDependencies: + "@rspack/core": ^0.7.5 + "@rspack/dev-server": ^0.7.5 + "@rspack/plugin-react-refresh": ^0.7.5 "@vitejs/plugin-react": ^4.0.4 vite: ^4.4.9 vite-plugin-html: ^3.2.0 vite-plugin-node-polyfills: ^0.22.0 peerDependenciesMeta: + "@rspack/core": + optional: true + "@rspack/dev-server": + optional: true + "@rspack/plugin-react-refresh": + optional: true "@vitejs/plugin-react": optional: true vite: @@ -11270,6 +11282,16 @@ __metadata: languageName: node linkType: hard +"@module-federation/runtime-tools@npm:0.1.6": + version: 0.1.6 + resolution: "@module-federation/runtime-tools@npm:0.1.6" + dependencies: + "@module-federation/runtime": 0.1.6 + "@module-federation/webpack-bundler-runtime": 0.1.6 + checksum: a902fe7fd07707be566fec6620c71d597311cee02cc2c2605b9b796f9aad07fcc3c60939efb2e139b01b28ac599d610f5dbc054c555915cd9e5fcc9324598413 + languageName: node + linkType: hard + "@module-federation/runtime-tools@npm:0.3.5": version: 0.3.5 resolution: "@module-federation/runtime-tools@npm:0.3.5" @@ -11280,6 +11302,15 @@ __metadata: languageName: node linkType: hard +"@module-federation/runtime@npm:0.1.6": + version: 0.1.6 + resolution: "@module-federation/runtime@npm:0.1.6" + dependencies: + "@module-federation/sdk": 0.1.6 + checksum: c564636edd5c1abf5ddf54a6d0dde8fcad1a72d2561163a841f08c354fb1a6e2c69e89d0ec3e5412d55556ea19057ad1980962fbd571aca5a0fb7945e60c0822 + languageName: node + linkType: hard + "@module-federation/runtime@npm:0.3.5": version: 0.3.5 resolution: "@module-federation/runtime@npm:0.3.5" @@ -11289,6 +11320,13 @@ __metadata: languageName: node linkType: hard +"@module-federation/sdk@npm:0.1.6": + version: 0.1.6 + resolution: "@module-federation/sdk@npm:0.1.6" + checksum: 99442f2269e916af78f9f77f7fc71a40e83e4dec5408d6ea8b1f053662005e5717340f91c666cce178e0d9ab92b13826f7cba5e00417bce2a3ee67c0face6ac5 + languageName: node + linkType: hard + "@module-federation/sdk@npm:0.3.5": version: 0.3.5 resolution: "@module-federation/sdk@npm:0.3.5" @@ -11307,6 +11345,16 @@ __metadata: languageName: node linkType: hard +"@module-federation/webpack-bundler-runtime@npm:0.1.6": + version: 0.1.6 + resolution: "@module-federation/webpack-bundler-runtime@npm:0.1.6" + dependencies: + "@module-federation/runtime": 0.1.6 + "@module-federation/sdk": 0.1.6 + checksum: 7dd6478cdd34881e974f67c8fe3cf668dbd881722416e214981eb423a67a7a1743564d60e652c6819445b1ab8d13fef823ea309c9c75c189001e75e81bd34fb3 + languageName: node + linkType: hard + "@module-federation/webpack-bundler-runtime@npm:0.3.5": version: 0.3.5 resolution: "@module-federation/webpack-bundler-runtime@npm:0.3.5" @@ -15068,6 +15116,153 @@ __metadata: languageName: node linkType: hard +"@rspack/binding-darwin-arm64@npm:0.7.5": + version: 0.7.5 + resolution: "@rspack/binding-darwin-arm64@npm:0.7.5" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@rspack/binding-darwin-x64@npm:0.7.5": + version: 0.7.5 + resolution: "@rspack/binding-darwin-x64@npm:0.7.5" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@rspack/binding-linux-arm64-gnu@npm:0.7.5": + version: 0.7.5 + resolution: "@rspack/binding-linux-arm64-gnu@npm:0.7.5" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@rspack/binding-linux-arm64-musl@npm:0.7.5": + version: 0.7.5 + resolution: "@rspack/binding-linux-arm64-musl@npm:0.7.5" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@rspack/binding-linux-x64-gnu@npm:0.7.5": + version: 0.7.5 + resolution: "@rspack/binding-linux-x64-gnu@npm:0.7.5" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@rspack/binding-linux-x64-musl@npm:0.7.5": + version: 0.7.5 + resolution: "@rspack/binding-linux-x64-musl@npm:0.7.5" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@rspack/binding-win32-arm64-msvc@npm:0.7.5": + version: 0.7.5 + resolution: "@rspack/binding-win32-arm64-msvc@npm:0.7.5" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@rspack/binding-win32-ia32-msvc@npm:0.7.5": + version: 0.7.5 + resolution: "@rspack/binding-win32-ia32-msvc@npm:0.7.5" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@rspack/binding-win32-x64-msvc@npm:0.7.5": + version: 0.7.5 + resolution: "@rspack/binding-win32-x64-msvc@npm:0.7.5" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@rspack/binding@npm:0.7.5": + version: 0.7.5 + resolution: "@rspack/binding@npm:0.7.5" + dependencies: + "@rspack/binding-darwin-arm64": 0.7.5 + "@rspack/binding-darwin-x64": 0.7.5 + "@rspack/binding-linux-arm64-gnu": 0.7.5 + "@rspack/binding-linux-arm64-musl": 0.7.5 + "@rspack/binding-linux-x64-gnu": 0.7.5 + "@rspack/binding-linux-x64-musl": 0.7.5 + "@rspack/binding-win32-arm64-msvc": 0.7.5 + "@rspack/binding-win32-ia32-msvc": 0.7.5 + "@rspack/binding-win32-x64-msvc": 0.7.5 + dependenciesMeta: + "@rspack/binding-darwin-arm64": + optional: true + "@rspack/binding-darwin-x64": + optional: true + "@rspack/binding-linux-arm64-gnu": + optional: true + "@rspack/binding-linux-arm64-musl": + optional: true + "@rspack/binding-linux-x64-gnu": + optional: true + "@rspack/binding-linux-x64-musl": + optional: true + "@rspack/binding-win32-arm64-msvc": + optional: true + "@rspack/binding-win32-ia32-msvc": + optional: true + "@rspack/binding-win32-x64-msvc": + optional: true + checksum: de25c44cc9c3a240c6f59a657d19d7170c3af1c99097fe2aa5118e2af7b0d606935ad45640102888ce1806bc67fb207189f562cfbcfe4c1628116f5b06f7c6b6 + languageName: node + linkType: hard + +"@rspack/core@npm:^0.7.5": + version: 0.7.5 + resolution: "@rspack/core@npm:0.7.5" + dependencies: + "@module-federation/runtime-tools": 0.1.6 + "@rspack/binding": 0.7.5 + caniuse-lite: ^1.0.30001616 + tapable: 2.2.1 + webpack-sources: 3.2.3 + peerDependencies: + "@swc/helpers": ">=0.5.1" + peerDependenciesMeta: + "@swc/helpers": + optional: true + checksum: 9e41005231d7a58888cb349ee26737752087f13847f6178308f04e99169187996e40cdaf8987e656a81fe1fb91aeb2e8ca2f1fa32fed46b04fe2709325e5a387 + languageName: node + linkType: hard + +"@rspack/dev-server@npm:^0.7.5": + version: 0.7.5 + resolution: "@rspack/dev-server@npm:0.7.5" + dependencies: + chokidar: 3.5.3 + connect-history-api-fallback: 2.0.0 + express: 4.19.2 + http-proxy-middleware: 2.0.6 + mime-types: 2.1.35 + webpack-dev-middleware: 6.1.2 + webpack-dev-server: 4.13.1 + ws: 8.8.1 + peerDependencies: + "@rspack/core": "*" + checksum: d5c767726b1083797cdcc852cb0603fc81ae0225341b5cf52d15e847ced0f1672b83a42bd3237fd047ba63ebe5a9032f5de9ca8c47f318e6ac68425c91ff46d7 + languageName: node + linkType: hard + +"@rspack/plugin-react-refresh@npm:^0.7.5": + version: 0.7.5 + resolution: "@rspack/plugin-react-refresh@npm:0.7.5" + peerDependencies: + react-refresh: ">=0.10.0 <1.0.0" + peerDependenciesMeta: + react-refresh: + optional: true + checksum: ab5f480c44563799bd5d837a608223e57ac41d535adcd22fb8f40625f6bda83e2ece28d40dce4c290249e7c9a8657781b5dfa864b14fae86017e41925d026655 + languageName: node + linkType: hard + "@rushstack/node-core-library@npm:3.59.7": version: 3.59.7 resolution: "@rushstack/node-core-library@npm:3.59.7" @@ -17476,7 +17671,7 @@ __metadata: languageName: node linkType: hard -"@types/bonjour@npm:^3.5.13": +"@types/bonjour@npm:^3.5.13, @types/bonjour@npm:^3.5.9": version: 3.5.13 resolution: "@types/bonjour@npm:3.5.13" dependencies: @@ -17581,7 +17776,7 @@ __metadata: languageName: node linkType: hard -"@types/connect-history-api-fallback@npm:^1.5.4": +"@types/connect-history-api-fallback@npm:^1.3.5, @types/connect-history-api-fallback@npm:^1.5.4": version: 1.5.4 resolution: "@types/connect-history-api-fallback@npm:1.5.4" dependencies: @@ -17870,7 +18065,7 @@ __metadata: languageName: node linkType: hard -"@types/express@npm:*, @types/express@npm:^4.17.14, @types/express@npm:^4.17.21, @types/express@npm:^4.17.6": +"@types/express@npm:*, @types/express@npm:^4.17.13, @types/express@npm:^4.17.14, @types/express@npm:^4.17.21, @types/express@npm:^4.17.6": version: 4.17.21 resolution: "@types/express@npm:4.17.21" dependencies: @@ -18365,13 +18560,6 @@ __metadata: languageName: node linkType: hard -"@types/mime@npm:*": - version: 3.0.4 - resolution: "@types/mime@npm:3.0.4" - checksum: a6139c8e1f705ef2b064d072f6edc01f3c099023ad7c4fce2afc6c2bf0231888202adadbdb48643e8e20da0ce409481a49922e737eca52871b3dc08017455843 - languageName: node - linkType: hard - "@types/mime@npm:^1": version: 1.3.2 resolution: "@types/mime@npm:1.3.2" @@ -18895,6 +19083,13 @@ __metadata: languageName: node linkType: hard +"@types/retry@npm:0.12.0": + version: 0.12.0 + resolution: "@types/retry@npm:0.12.0" + checksum: 61a072c7639f6e8126588bf1eb1ce8835f2cb9c2aba795c4491cf6310e013267b0c8488039857c261c387e9728c1b43205099223f160bb6a76b4374f741b5603 + languageName: node + linkType: hard + "@types/retry@npm:0.12.2": version: 0.12.2 resolution: "@types/retry@npm:0.12.2" @@ -18960,7 +19155,7 @@ __metadata: languageName: node linkType: hard -"@types/serve-index@npm:^1.9.4": +"@types/serve-index@npm:^1.9.1, @types/serve-index@npm:^1.9.4": version: 1.9.4 resolution: "@types/serve-index@npm:1.9.4" dependencies: @@ -18969,14 +19164,14 @@ __metadata: languageName: node linkType: hard -"@types/serve-static@npm:*, @types/serve-static@npm:^1.15.5": - version: 1.15.5 - resolution: "@types/serve-static@npm:1.15.5" +"@types/serve-static@npm:*, @types/serve-static@npm:^1.13.10, @types/serve-static@npm:^1.15.5": + version: 1.15.7 + resolution: "@types/serve-static@npm:1.15.7" dependencies: "@types/http-errors": "*" - "@types/mime": "*" "@types/node": "*" - checksum: 0ff4b3703cf20ba89c9f9e345bc38417860a88e85863c8d6fe274a543220ab7f5f647d307c60a71bb57dc9559f0890a661e8dc771a6ec5ef195d91c8afc4a893 + "@types/send": "*" + checksum: bbbf00dbd84719da2250a462270dc68964006e8d62f41fe3741abd94504ba3688f420a49afb2b7478921a1544d3793183ffa097c5724167da777f4e0c7f1a7d6 languageName: node linkType: hard @@ -19019,7 +19214,7 @@ __metadata: languageName: node linkType: hard -"@types/sockjs@npm:^0.3.36": +"@types/sockjs@npm:^0.3.33, @types/sockjs@npm:^0.3.36": version: 0.3.36 resolution: "@types/sockjs@npm:0.3.36" dependencies: @@ -19253,12 +19448,12 @@ __metadata: languageName: node linkType: hard -"@types/ws@npm:*, @types/ws@npm:^8.0.0, @types/ws@npm:^8.5.10, @types/ws@npm:^8.5.3": - version: 8.5.10 - resolution: "@types/ws@npm:8.5.10" +"@types/ws@npm:*, @types/ws@npm:^8.0.0, @types/ws@npm:^8.5.1, @types/ws@npm:^8.5.10, @types/ws@npm:^8.5.3": + version: 8.5.12 + resolution: "@types/ws@npm:8.5.12" dependencies: "@types/node": "*" - checksum: 3ec416ea2be24042ebd677932a462cf16d2080393d8d7d0b1b3f5d6eaa4a7387aaf0eefb99193c0bfd29444857cf2e0c3ac89899e130550dc6c14ada8a46d25e + checksum: ddefb6ad1671f70ce73b38a5f47f471d4d493864fca7c51f002a86e5993d031294201c5dced6d5018fb8905ad46888d65c7f20dd54fc165910b69f42fba9a6d0 languageName: node linkType: hard @@ -22203,7 +22398,7 @@ __metadata: languageName: node linkType: hard -"bonjour-service@npm:^1.2.1": +"bonjour-service@npm:^1.0.11, bonjour-service@npm:^1.2.1": version: 1.2.1 resolution: "bonjour-service@npm:1.2.1" dependencies: @@ -22773,10 +22968,10 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001629": - version: 1.0.30001632 - resolution: "caniuse-lite@npm:1.0.30001632" - checksum: 95be155501650ac36a8c3bdf60886bc8f7c419e7715cdaf1c04941f8676c0bd75355aeda62563092585fbe6f9d50d2eb6dea6bd063d7f6a58004ec62d8f8fe49 +"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001616, caniuse-lite@npm:^1.0.30001629": + version: 1.0.30001651 + resolution: "caniuse-lite@npm:1.0.30001651" + checksum: c31a5a01288e70cdbbfb5cd94af3df02f295791673173b8ce6d6a16db4394a6999197d44190be5a6ff06b8c2c7d2047e94dfd5e5eb4c103ab000fca2d370afc7 languageName: node linkType: hard @@ -22921,6 +23116,25 @@ __metadata: languageName: node linkType: hard +"chokidar@npm:3.5.3": + version: 3.5.3 + resolution: "chokidar@npm:3.5.3" + dependencies: + anymatch: ~3.1.2 + braces: ~3.0.2 + fsevents: ~2.3.2 + glob-parent: ~5.1.2 + is-binary-path: ~2.1.0 + is-glob: ~4.0.1 + normalize-path: ~3.0.0 + readdirp: ~3.6.0 + dependenciesMeta: + fsevents: + optional: true + checksum: b49fcde40176ba007ff361b198a2d35df60d9bb2a5aab228279eb810feae9294a6b4649ab15981304447afe1e6ffbf4788ad5db77235dc770ab777c6e771980c + languageName: node + linkType: hard + "chokidar@npm:^3.3.1, chokidar@npm:^3.4.2, chokidar@npm:^3.5.2, chokidar@npm:^3.5.3, chokidar@npm:^3.6.0": version: 3.6.0 resolution: "chokidar@npm:3.6.0" @@ -23758,6 +23972,13 @@ __metadata: languageName: node linkType: hard +"connect-history-api-fallback@npm:2.0.0, connect-history-api-fallback@npm:^2.0.0": + version: 2.0.0 + resolution: "connect-history-api-fallback@npm:2.0.0" + checksum: dc5368690f4a5c413889792f8df70d5941ca9da44523cde3f87af0745faee5ee16afb8195434550f0504726642734f2683d6c07f8b460f828a12c45fbd4c9a68 + languageName: node + linkType: hard + "connect-history-api-fallback@npm:^1.6.0": version: 1.6.0 resolution: "connect-history-api-fallback@npm:1.6.0" @@ -23765,13 +23986,6 @@ __metadata: languageName: node linkType: hard -"connect-history-api-fallback@npm:^2.0.0": - version: 2.0.0 - resolution: "connect-history-api-fallback@npm:2.0.0" - checksum: dc5368690f4a5c413889792f8df70d5941ca9da44523cde3f87af0745faee5ee16afb8195434550f0504726642734f2683d6c07f8b460f828a12c45fbd4c9a68 - languageName: node - linkType: hard - "connect-session-knex@npm:^4.0.0": version: 4.0.0 resolution: "connect-session-knex@npm:4.0.0" @@ -27383,7 +27597,7 @@ __metadata: languageName: node linkType: hard -"express@npm:^4.14.0, express@npm:^4.17.1, express@npm:^4.17.3, express@npm:^4.18.1, express@npm:^4.18.2, express@npm:^4.19.2": +"express@npm:4.19.2, express@npm:^4.14.0, express@npm:^4.17.1, express@npm:^4.17.3, express@npm:^4.18.1, express@npm:^4.18.2, express@npm:^4.19.2": version: 4.19.2 resolution: "express@npm:4.19.2" dependencies: @@ -29422,7 +29636,7 @@ __metadata: languageName: node linkType: hard -"html-entities@npm:^2.1.0, html-entities@npm:^2.4.0, html-entities@npm:^2.5.2": +"html-entities@npm:^2.1.0, html-entities@npm:^2.3.2, html-entities@npm:^2.4.0, html-entities@npm:^2.5.2": version: 2.5.2 resolution: "html-entities@npm:2.5.2" checksum: b23f4a07d33d49ade1994069af4e13d31650e3fb62621e92ae10ecdf01d1a98065c78fd20fdc92b4c7881612210b37c275f2c9fba9777650ab0d6f2ceb3b99b6 @@ -29612,7 +29826,7 @@ __metadata: languageName: node linkType: hard -"http-proxy-middleware@npm:^2.0.0, http-proxy-middleware@npm:^2.0.3, http-proxy-middleware@npm:^2.0.6": +"http-proxy-middleware@npm:2.0.6, http-proxy-middleware@npm:^2.0.0, http-proxy-middleware@npm:^2.0.3, http-proxy-middleware@npm:^2.0.6": version: 2.0.6 resolution: "http-proxy-middleware@npm:2.0.6" dependencies: @@ -30189,10 +30403,10 @@ __metadata: languageName: node linkType: hard -"ipaddr.js@npm:^2.1.0": - version: 2.1.0 - resolution: "ipaddr.js@npm:2.1.0" - checksum: 807a054f2bd720c4d97ee479d6c9e865c233bea21f139fb8dabd5a35c4226d2621c42e07b4ad94ff3f82add926a607d8d9d37c625ad0319f0e08f9f2bd1968e2 +"ipaddr.js@npm:^2.0.1, ipaddr.js@npm:^2.1.0": + version: 2.2.0 + resolution: "ipaddr.js@npm:2.2.0" + checksum: 770ba8451fd9bf78015e8edac0d5abd7a708cbf75f9429ca9147a9d2f3a2d60767cd5de2aab2b1e13ca6e4445bdeff42bf12ef6f151c07a5c6cf8a44328e2859 languageName: node linkType: hard @@ -32700,13 +32914,13 @@ __metadata: languageName: node linkType: hard -"launch-editor@npm:^2.6.1": - version: 2.6.1 - resolution: "launch-editor@npm:2.6.1" +"launch-editor@npm:^2.6.0, launch-editor@npm:^2.6.1": + version: 2.8.1 + resolution: "launch-editor@npm:2.8.1" dependencies: picocolors: ^1.0.0 shell-quote: ^1.8.1 - checksum: e06d193075ac09f7f8109f10cabe464a211bf7ed4cbe75f83348d6f67bf4d9f162f06e7a1ab3e1cd7fc250b5342c3b57080618aff2e646dc34248fe499227601 + checksum: 69adfc913c066b0bcd685103907525789db6af3585cdc5f8c1172f0fcebe2c4ea1cff1108f76e9c591c00134329a5fb29e5911e9c0c347618a5300978b6bb767 languageName: node linkType: hard @@ -33947,7 +34161,7 @@ __metadata: languageName: node linkType: hard -"memfs@npm:^3.1.2, memfs@npm:^3.4.1": +"memfs@npm:^3.1.2, memfs@npm:^3.4.1, memfs@npm:^3.4.12, memfs@npm:^3.4.3": version: 3.5.3 resolution: "memfs@npm:3.5.3" dependencies: @@ -36105,14 +36319,14 @@ __metadata: languageName: node linkType: hard -"open@npm:^8.0.0, open@npm:^8.4.0": - version: 8.4.0 - resolution: "open@npm:8.4.0" +"open@npm:^8.0.0, open@npm:^8.0.9, open@npm:^8.4.0": + version: 8.4.2 + resolution: "open@npm:8.4.2" dependencies: define-lazy-prop: ^2.0.0 is-docker: ^2.1.1 is-wsl: ^2.2.0 - checksum: e9545bec64cdbf30a0c35c1bdc310344adf8428a117f7d8df3c0af0a0a24c513b304916a6d9b11db0190ff7225c2d578885080b761ed46a3d5f6f1eebb98b63c + checksum: 6388bfff21b40cb9bd8f913f9130d107f2ed4724ea81a8fd29798ee322b361ca31fa2cdfb491a5c31e43a3996cfe9566741238c7a741ada8d7af1cb78d85cf26 languageName: node linkType: hard @@ -36389,6 +36603,16 @@ __metadata: languageName: node linkType: hard +"p-retry@npm:^4.5.0": + version: 4.6.2 + resolution: "p-retry@npm:4.6.2" + dependencies: + "@types/retry": 0.12.0 + retry: ^0.13.1 + checksum: 45c270bfddaffb4a895cea16cb760dcc72bdecb6cb45fef1971fa6ea2e91ddeafddefe01e444ac73e33b1b3d5d29fb0dd18a7effb294262437221ddc03ce0f2e + languageName: node + linkType: hard + "p-retry@npm:^6.2.0": version: 6.2.0 resolution: "p-retry@npm:6.2.0" @@ -40622,7 +40846,7 @@ __metadata: languageName: node linkType: hard -"selfsigned@npm:^2.0.0, selfsigned@npm:^2.4.1": +"selfsigned@npm:^2.0.0, selfsigned@npm:^2.1.1, selfsigned@npm:^2.4.1": version: 2.4.1 resolution: "selfsigned@npm:2.4.1" dependencies: @@ -42397,6 +42621,13 @@ __metadata: languageName: node linkType: hard +"tapable@npm:2.2.1, tapable@npm:^2.0.0, tapable@npm:^2.1.1, tapable@npm:^2.2.0, tapable@npm:^2.2.1": + version: 2.2.1 + resolution: "tapable@npm:2.2.1" + checksum: 3b7a1b4d86fa940aad46d9e73d1e8739335efd4c48322cb37d073eb6f80f5281889bf0320c6d8ffcfa1a0dd5bfdbd0f9d037e252ef972aca595330538aac4d51 + languageName: node + linkType: hard + "tapable@npm:^1.0.0": version: 1.1.3 resolution: "tapable@npm:1.1.3" @@ -42404,13 +42635,6 @@ __metadata: languageName: node linkType: hard -"tapable@npm:^2.0.0, tapable@npm:^2.1.1, tapable@npm:^2.2.0, tapable@npm:^2.2.1": - version: 2.2.1 - resolution: "tapable@npm:2.2.1" - checksum: 3b7a1b4d86fa940aad46d9e73d1e8739335efd4c48322cb37d073eb6f80f5281889bf0320c6d8ffcfa1a0dd5bfdbd0f9d037e252ef972aca595330538aac4d51 - languageName: node - linkType: hard - "tar-fs@npm:^2.0.0": version: 2.1.1 resolution: "tar-fs@npm:2.1.1" @@ -44642,6 +44866,39 @@ __metadata: languageName: node linkType: hard +"webpack-dev-middleware@npm:6.1.2": + version: 6.1.2 + resolution: "webpack-dev-middleware@npm:6.1.2" + dependencies: + colorette: ^2.0.10 + memfs: ^3.4.12 + mime-types: ^2.1.31 + range-parser: ^1.2.1 + schema-utils: ^4.0.0 + peerDependencies: + webpack: ^5.0.0 + peerDependenciesMeta: + webpack: + optional: true + checksum: 6e962341db5b3ac8526cd678fc6b128adcb92c288aab767948ab7d01591d7837d2d97cf9329d307831b1d51c831fcea4d8f2eb514efe8c8654ae2a4ae9d9f1fb + languageName: node + linkType: hard + +"webpack-dev-middleware@npm:^5.3.1": + version: 5.3.4 + resolution: "webpack-dev-middleware@npm:5.3.4" + dependencies: + colorette: ^2.0.10 + memfs: ^3.4.3 + mime-types: ^2.1.31 + range-parser: ^1.2.1 + schema-utils: ^4.0.0 + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + checksum: 90cf3e27d0714c1a745454a1794f491b7076434939340605b9ee8718ba2b85385b120939754e9fdbd6569811e749dee53eec319e0d600e70e0b0baffd8e3fb13 + languageName: node + linkType: hard + "webpack-dev-middleware@npm:^7.1.0": version: 7.2.1 resolution: "webpack-dev-middleware@npm:7.2.1" @@ -44661,6 +44918,53 @@ __metadata: languageName: node linkType: hard +"webpack-dev-server@npm:4.13.1": + version: 4.13.1 + resolution: "webpack-dev-server@npm:4.13.1" + dependencies: + "@types/bonjour": ^3.5.9 + "@types/connect-history-api-fallback": ^1.3.5 + "@types/express": ^4.17.13 + "@types/serve-index": ^1.9.1 + "@types/serve-static": ^1.13.10 + "@types/sockjs": ^0.3.33 + "@types/ws": ^8.5.1 + ansi-html-community: ^0.0.8 + bonjour-service: ^1.0.11 + chokidar: ^3.5.3 + colorette: ^2.0.10 + compression: ^1.7.4 + connect-history-api-fallback: ^2.0.0 + default-gateway: ^6.0.3 + express: ^4.17.3 + graceful-fs: ^4.2.6 + html-entities: ^2.3.2 + http-proxy-middleware: ^2.0.3 + ipaddr.js: ^2.0.1 + launch-editor: ^2.6.0 + open: ^8.0.9 + p-retry: ^4.5.0 + rimraf: ^3.0.2 + schema-utils: ^4.0.0 + selfsigned: ^2.1.1 + serve-index: ^1.9.1 + sockjs: ^0.3.24 + spdy: ^4.0.2 + webpack-dev-middleware: ^5.3.1 + ws: ^8.13.0 + peerDependencies: + webpack: ^4.37.0 || ^5.0.0 + peerDependenciesMeta: + webpack: + optional: true + webpack-cli: + optional: true + bin: + webpack-dev-server: bin/webpack-dev-server.js + checksum: f70611544b7d964a31eb3d934d7c2b376b97e6927a89e03b2e21cfa5812bb639625cd18fd350de1604ba6c455b324135523a894032f28c69d90d90682e4f3b7d + languageName: node + linkType: hard + "webpack-dev-server@npm:^5.0.0": version: 5.0.4 resolution: "webpack-dev-server@npm:5.0.4" @@ -44715,6 +45019,13 @@ __metadata: languageName: node linkType: hard +"webpack-sources@npm:3.2.3, webpack-sources@npm:^3.2.3": + version: 3.2.3 + resolution: "webpack-sources@npm:3.2.3" + checksum: 989e401b9fe3536529e2a99dac8c1bdc50e3a0a2c8669cbafad31271eadd994bc9405f88a3039cd2e29db5e6d9d0926ceb7a1a4e7409ece021fe79c37d9c4607 + languageName: node + linkType: hard + "webpack-sources@npm:^1.4.3": version: 1.4.3 resolution: "webpack-sources@npm:1.4.3" @@ -44725,13 +45036,6 @@ __metadata: languageName: node linkType: hard -"webpack-sources@npm:^3.2.3": - version: 3.2.3 - resolution: "webpack-sources@npm:3.2.3" - checksum: 989e401b9fe3536529e2a99dac8c1bdc50e3a0a2c8669cbafad31271eadd994bc9405f88a3039cd2e29db5e6d9d0926ceb7a1a4e7409ece021fe79c37d9c4607 - languageName: node - linkType: hard - "webpack@npm:^5, webpack@npm:^5.70.0": version: 5.91.0 resolution: "webpack@npm:5.91.0" @@ -45142,6 +45446,21 @@ __metadata: languageName: node linkType: hard +"ws@npm:8.8.1": + version: 8.8.1 + resolution: "ws@npm:8.8.1" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 2152cf862cae0693f3775bc688a6afb2e989d19d626d215e70f5fcd8eb55b1c3b0d3a6a4052905ec320e2d7734e20aeedbf9744496d62f15a26ad79cf4cf7dae + languageName: node + linkType: hard + "ws@npm:^7, ws@npm:^7.4.6, ws@npm:^7.5.5": version: 7.5.10 resolution: "ws@npm:7.5.10"