feat(core): Replace Webpack with Rspack - siteConfig.future.experimental_faster.rspackBundler (#10402)

This commit is contained in:
Sébastien Lorber 2024-10-11 10:50:24 +02:00 committed by GitHub
parent c7fd8d1702
commit 74c09aee35
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
17 changed files with 390 additions and 174 deletions

View file

@ -9,7 +9,8 @@ import webpack from 'webpack';
import WebpackBar from 'webpackbar';
import MiniCssExtractPlugin from 'mini-css-extract-plugin';
import CopyWebpackPlugin from 'copy-webpack-plugin';
import logger from '@docusaurus/logger';
import {importRspack} from './importFaster';
import type {FasterModule} from './importFaster';
import type {CurrentBundler, DocusaurusConfig} from '@docusaurus/types';
// We inject a site config slice because the Rspack flag might change place
@ -32,10 +33,10 @@ export async function getCurrentBundler({
siteConfig: SiteConfigSlice;
}): Promise<CurrentBundler> {
if (isRspack(siteConfig)) {
// TODO add support for Rspack
logger.error(
'Rspack bundler is not supported yet, will use Webpack instead',
);
return {
name: 'rspack',
instance: (await importRspack()) as unknown as typeof webpack,
};
}
return {
name: 'webpack',
@ -43,13 +44,27 @@ export async function getCurrentBundler({
};
}
export function getCurrentBundlerAsRspack({
currentBundler,
}: {
currentBundler: CurrentBundler;
}): FasterModule['rspack'] {
if (currentBundler.name !== 'rspack') {
throw new Error(
`Can't getCurrentBundlerAsRspack() because current bundler is ${currentBundler.name}`,
);
}
return currentBundler.instance as unknown as FasterModule['rspack'];
}
export async function getCSSExtractPlugin({
currentBundler,
}: {
currentBundler: CurrentBundler;
}): Promise<typeof MiniCssExtractPlugin> {
if (currentBundler.name === 'rspack') {
throw new Error('Rspack bundler is not supported yet');
// @ts-expect-error: this exists only in Rspack
return currentBundler.instance.CssExtractRspackPlugin;
}
return MiniCssExtractPlugin;
}
@ -60,9 +75,9 @@ export async function getCopyPlugin({
currentBundler: CurrentBundler;
}): Promise<typeof CopyWebpackPlugin> {
if (currentBundler.name === 'rspack') {
throw new Error('Rspack bundler is not supported yet');
// @ts-expect-error: this exists only in Rspack
return currentBundler.instance.CopyRspackPlugin;
}
// https://github.com/webpack-contrib/copy-webpack-plugin
return CopyWebpackPlugin;
}

View file

@ -12,7 +12,7 @@ import type {
} from 'terser-webpack-plugin';
import type {MinimizerOptions as CssMinimizerOptions} from 'css-minimizer-webpack-plugin';
type FasterModule = Awaited<typeof import('@docusaurus/faster')>;
export type FasterModule = Awaited<typeof import('@docusaurus/faster')>;
async function importFaster(): Promise<FasterModule> {
return import('@docusaurus/faster');
@ -29,6 +29,11 @@ async function ensureFaster(): Promise<FasterModule> {
}
}
export async function importRspack(): Promise<FasterModule['rspack']> {
const faster = await ensureFaster();
return faster.rspack;
}
export async function importSwcJsLoaderFactory(): Promise<
ConfigureWebpackUtils['getJSLoader']
> {
@ -50,6 +55,11 @@ export async function importSwcHtmlMinifier(): Promise<
return faster.getSwcHtmlMinifier();
}
export async function importBrowserslistQueries(): Promise<string[]> {
const faster = await ensureFaster();
return faster.getBrowserslistQueries();
}
export async function importLightningCssMinimizerOptions(): Promise<
CssMinimizerOptions<CustomOptions>
> {

View file

@ -5,14 +5,16 @@
* LICENSE file in the root directory of this source tree.
*/
import {fromPartial} from '@total-typescript/shoehorn';
import {fromPartial, type PartialDeep} from '@total-typescript/shoehorn';
import {createJsLoaderFactory} from '../jsLoader';
import type {RuleSetRule} from 'webpack';
describe('createJsLoaderFactory', () => {
function testJsLoaderFactory(
siteConfig?: Parameters<typeof createJsLoaderFactory>[0]['siteConfig'],
siteConfig?: PartialDeep<
Parameters<typeof createJsLoaderFactory>[0]['siteConfig']
>,
) {
return createJsLoaderFactory({
siteConfig: {
@ -21,7 +23,12 @@ describe('createJsLoaderFactory', () => {
jsLoader: 'babel',
...siteConfig?.webpack,
},
future: fromPartial(siteConfig?.future),
future: fromPartial({
...siteConfig?.future,
experimental_faster: fromPartial({
...siteConfig?.future?.experimental_faster,
}),
}),
},
});
}

View file

@ -7,6 +7,7 @@
import {getBabelOptions} from '@docusaurus/babel';
import {importSwcJsLoaderFactory} from '../importFaster';
import {getCurrentBundler} from '../currentBundler';
import type {ConfigureWebpackUtils, DocusaurusConfig} from '@docusaurus/types';
const BabelJsLoaderFactory: ConfigureWebpackUtils['getJSLoader'] = ({
@ -19,6 +20,25 @@ const BabelJsLoaderFactory: ConfigureWebpackUtils['getJSLoader'] = ({
};
};
const RspackJsLoaderFactory: ConfigureWebpackUtils['getJSLoader'] = () => {
return {
loader: 'builtin:swc-loader',
options: {
jsc: {
parser: {
syntax: 'typescript',
tsx: true,
},
transform: {
react: {
runtime: 'automatic',
},
},
},
},
};
};
// Confusing: function that creates a function that creates actual js loaders
// This is done on purpose because the js loader factory is a public API
// It is injected in configureWebpack plugin lifecycle for plugin authors
@ -27,11 +47,22 @@ export async function createJsLoaderFactory({
}: {
siteConfig: {
webpack?: DocusaurusConfig['webpack'];
future?: {
future: {
experimental_faster: DocusaurusConfig['future']['experimental_faster'];
};
};
}): Promise<ConfigureWebpackUtils['getJSLoader']> {
const currentBundler = await getCurrentBundler({siteConfig});
const isSWCLoader = siteConfig.future.experimental_faster.swcJsLoader;
if (currentBundler.name === 'rspack') {
if (!isSWCLoader) {
throw new Error(
'When using Rspack bundler, it is required to enable swcJsLoader too',
);
}
return RspackJsLoaderFactory;
}
const jsLoader = siteConfig.webpack?.jsLoader ?? 'babel';
if (
jsLoader instanceof Function &&

View file

@ -10,7 +10,9 @@ import CssMinimizerPlugin from 'css-minimizer-webpack-plugin';
import {
importSwcJsMinimizerOptions,
importLightningCssMinimizerOptions,
importBrowserslistQueries,
} from './importFaster';
import {getCurrentBundlerAsRspack} from './currentBundler';
import type {CustomOptions, CssNanoOptions} from 'css-minimizer-webpack-plugin';
import type {WebpackPluginInstance} from 'webpack';
import type {CurrentBundler, FasterConfig} from '@docusaurus/types';
@ -48,6 +50,7 @@ async function getJsMinimizer({
return new TerserPlugin({
parallel: getTerserParallel(),
// See https://terser.org/docs/options/
terserOptions: {
parse: {
// We want uglify-js to parse ecma 8 code. However, we don't want it
@ -137,8 +140,30 @@ async function getWebpackMinimizers(
async function getRspackMinimizers({
currentBundler,
}: MinimizersConfig): Promise<WebpackPluginInstance[]> {
console.log('currentBundler', currentBundler.name);
throw new Error('TODO Rspack minimizers not implemented yet');
const rspack = getCurrentBundlerAsRspack({currentBundler});
const browserslistQueries = await importBrowserslistQueries();
const swcJsMinimizerOptions = await importSwcJsMinimizerOptions();
return [
// See https://rspack.dev/plugins/rspack/swc-js-minimizer-rspack-plugin
// See https://swc.rs/docs/configuration/minification
new rspack.SwcJsMinimizerRspackPlugin({
minimizerOptions: {
minify: true,
...swcJsMinimizerOptions,
},
}),
new rspack.LightningCssMinimizerRspackPlugin({
minimizerOptions: {
...(await importLightningCssMinimizerOptions()),
// Not sure why but Rspack takes browserslist queries directly
// While LightningCSS targets are normally not browserslist queries
// We have to override the option to avoid errors
// See https://rspack.dev/plugins/rspack/lightning-css-minimizer-rspack-plugin#minimizeroptions
// See https://lightningcss.dev/transpilation.html
targets: browserslistQueries,
},
}),
] as unknown as WebpackPluginInstance[];
}
export async function getMinimizers(

View file

@ -18,6 +18,7 @@
},
"license": "MIT",
"dependencies": {
"@rspack/core": "^1.0.9",
"@swc/core": "^1.7.28",
"@swc/html": "^1.7.28",
"browserslist": "^4.24.0",

View file

@ -5,12 +5,15 @@
* LICENSE file in the root directory of this source tree.
*/
import Rspack from '@rspack/core';
import * as lightningcss from 'lightningcss';
import browserslist from 'browserslist';
import {minify as swcHtmlMinifier} from '@swc/html';
import type {RuleSetRule} from 'webpack';
import type {JsMinifyOptions} from '@swc/core';
export const rspack = Rspack;
export function getSwcHtmlMinifier(): typeof swcHtmlMinifier {
return swcHtmlMinifier;
}
@ -63,6 +66,15 @@ export function getSwcJsMinimizerOptions(): JsMinifyOptions {
};
}
// We need this because of Rspack built-in LightningCSS integration
// See https://github.com/orgs/browserslist/discussions/846
export function getBrowserslistQueries(): string[] {
const queries = browserslist.loadConfig({path: process.cwd()}) ?? [
...browserslist.defaults,
];
return queries;
}
// LightningCSS doesn't expose any type for css-minimizer-webpack-plugin setup
// So we derive it ourselves
// see https://lightningcss.dev/docs.html#with-webpack

View file

@ -21,6 +21,7 @@
},
"dependencies": {
"@docusaurus/core": "3.5.2",
"@docusaurus/logger": "3.5.2",
"@docusaurus/mdx-loader": "3.5.2",
"@docusaurus/module-type-aliases": "3.5.2",
"@docusaurus/plugin-content-blog": "3.5.2",

View file

@ -174,32 +174,31 @@ async function buildLocale({
// We can build the 2 configs in parallel
const [{clientConfig, clientManifestPath}, {serverConfig, serverBundlePath}] =
await PerfLogger.async('Creating bundler configs', () =>
Promise.all([
getBuildClientConfig({
props,
cliOptions,
configureWebpackUtils,
}),
getBuildServerConfig({
props,
configureWebpackUtils,
}),
]),
await PerfLogger.async(
`Creating ${props.currentBundler.name} bundler configs`,
() =>
Promise.all([
getBuildClientConfig({
props,
cliOptions,
configureWebpackUtils,
}),
getBuildServerConfig({
props,
configureWebpackUtils,
}),
]),
);
// Run webpack to build JS bundle (client) and static html files (server).
await PerfLogger.async(
`Bundling with ${configureWebpackUtils.currentBundler.name}`,
() => {
return compile({
configs:
// For hash router we don't do SSG and can skip the server bundle
router === 'hash' ? [clientConfig] : [clientConfig, serverConfig],
currentBundler: configureWebpackUtils.currentBundler,
});
},
);
await PerfLogger.async(`Bundling with ${props.currentBundler.name}`, () => {
return compile({
configs:
// For hash router we don't do SSG and can skip the server bundle
router === 'hash' ? [clientConfig] : [clientConfig, serverConfig],
currentBundler: configureWebpackUtils.currentBundler,
});
});
const {collectedData} = await PerfLogger.async('SSG', () =>
executeSSG({

View file

@ -7,7 +7,6 @@
import path from 'path';
import merge from 'webpack-merge';
import webpack from 'webpack';
import {formatStatsErrorMessage, printStatsWarnings} from '@docusaurus/bundler';
import logger from '@docusaurus/logger';
import WebpackDevServer from 'webpack-dev-server';
@ -168,7 +167,7 @@ export async function createWebpackDevServer({
configureWebpackUtils,
});
const compiler = webpack(config);
const compiler = props.currentBundler.instance(config);
registerWebpackE2ETestHook(compiler);
const defaultDevServerConfig = await createDevServerConfig({

View file

@ -98,10 +98,14 @@ export async function createBaseConfig({
currentBundler: props.currentBundler,
});
return {
mode,
name,
cache: {
function getCache(): Configuration['cache'] {
if (props.currentBundler.name === 'rspack') {
// TODO Rspack only supports memory cache (as of Sept 2024)
// TODO re-enable file persistent cache one Rspack supports it
// See also https://rspack.dev/config/cache#cache
return undefined;
}
return {
type: 'filesystem',
// Can we share the same cache across locales?
// Exploring that question at https://github.com/webpack/webpack/issues/13034
@ -127,7 +131,13 @@ export async function createBaseConfig({
siteConfigPath,
],
},
},
};
}
return {
mode,
name,
cache: getCache(),
output: {
pathinfo: false,
path: outDir,
@ -145,7 +155,6 @@ export async function createBaseConfig({
},
devtool: isProd ? undefined : 'eval-cheap-module-source-map',
resolve: {
unsafeCache: false, // Not enabled, does not seem to improve perf much
extensions: ['.wasm', '.mjs', '.js', '.jsx', '.ts', '.tsx', '.json'],
symlinks: true, // See https://github.com/facebook/docusaurus/issues/3272
roots: [

View file

@ -45,7 +45,7 @@ async function createBaseClientConfig({
});
const ProgressBarPlugin = await getProgressBarPlugin({
currentBundler: configureWebpackUtils.currentBundler,
currentBundler: props.currentBundler,
});
return merge(baseConfig, {

View file

@ -68,6 +68,8 @@ export default class ChunkAssetPlugin {
}
// Inspired by https://github.com/webpack/webpack/blob/v5.94.0/lib/runtime/CompatRuntimeModule.js
// See also https://rspack.dev/api/javascript-api/compilation#addruntimemodule
// See also https://rspack.dev/api/plugin-api/compilation-hooks#additionaltreeruntimerequirements
class ChunkAssetRuntimeModule extends webpack.RuntimeModule {
constructor() {
super('ChunkAssetRuntimeModule', webpack.RuntimeModule.STAGE_ATTACH);

View file

@ -24,6 +24,7 @@ import ConfigLocalized from './docusaurus.config.localized.json';
import PrismLight from './src/utils/prismLight';
import PrismDark from './src/utils/prismDark';
import type {Config, DocusaurusConfig} from '@docusaurus/types';
import type * as Preset from '@docusaurus/preset-classic';

View file

@ -84,7 +84,8 @@
"devDependencies": {
"@docusaurus/eslint-plugin": "3.5.2",
"@docusaurus/tsconfig": "3.5.2",
"@rsdoctor/webpack-plugin": "^0.3.11",
"@rsdoctor/webpack-plugin": "^0.4.6",
"@rsdoctor/rspack-plugin": "^0.4.6",
"@types/color": "^3.0.4",
"@types/jest": "^29.5.3",
"cross-env": "^7.0.3",

View file

@ -7,13 +7,17 @@
import type {PluginConfig} from '@docusaurus/types';
async function createRsdoctorBundlerPlugin() {
function createRsdoctorBundlerPlugin({isServer}: {isServer: boolean}) {
// TODO Shitty workaround to bypass lib typechecking
// package does not work will with skipLibCheck false
// // eslint-disable-next-line
// const {RsdoctorWebpackMultiplePlugin} = require('@rsdoctor/webpack-plugin');
// eslint-disable-next-line
const {RsdoctorWebpackMultiplePlugin} = require('@rsdoctor/webpack-plugin');
const {RsdoctorRspackMultiplePlugin} = require('@rsdoctor/rspack-plugin');
return new RsdoctorWebpackMultiplePlugin({
// return new RsdoctorWebpackMultiplePlugin({
return new RsdoctorRspackMultiplePlugin({
name: isServer ? 'server' : 'client',
disableTOSUpload: true,
supports: {
// https://rsdoctor.dev/config/options/options#generatetilegraph
@ -31,11 +35,13 @@ export default (async function RsdoctorPlugin() {
if (!process.env.RSDOCTOR) {
return null;
}
const plugin = await createRsdoctorBundlerPlugin();
const pluginClient = await createRsdoctorBundlerPlugin({isServer: false});
const pluginServer = await createRsdoctorBundlerPlugin({isServer: true});
console.log('Rsdoctor plugin enabled');
return {
name: 'rsdoctor-plugin',
configureWebpack: () => {
configureWebpack: (__config, isServer) => {
const plugin = isServer ? pluginServer : pluginClient;
return {
plugins: [plugin],
};

339
yarn.lock
View file

@ -2222,6 +2222,34 @@
dependencies:
langium "3.0.0"
"@module-federation/runtime-tools@0.5.1":
version "0.5.1"
resolved "https://registry.yarnpkg.com/@module-federation/runtime-tools/-/runtime-tools-0.5.1.tgz#1b1f93837159a6bf0c0ba78730d589a5a8f74aa3"
integrity sha512-nfBedkoZ3/SWyO0hnmaxuz0R0iGPSikHZOAZ0N/dVSQaIzlffUo35B5nlC2wgWIc0JdMZfkwkjZRrnuuDIJbzg==
dependencies:
"@module-federation/runtime" "0.5.1"
"@module-federation/webpack-bundler-runtime" "0.5.1"
"@module-federation/runtime@0.5.1":
version "0.5.1"
resolved "https://registry.yarnpkg.com/@module-federation/runtime/-/runtime-0.5.1.tgz#b548a75e2068952ff66ad717cbf73fc921edd5d7"
integrity sha512-xgiMUWwGLWDrvZc9JibuEbXIbhXg6z2oUkemogSvQ4LKvrl/n0kbqP1Blk669mXzyWbqtSp6PpvNdwaE1aN5xQ==
dependencies:
"@module-federation/sdk" "0.5.1"
"@module-federation/sdk@0.5.1":
version "0.5.1"
resolved "https://registry.yarnpkg.com/@module-federation/sdk/-/sdk-0.5.1.tgz#6c0a4053c23fa84db7aae7e4736496c541de7191"
integrity sha512-exvchtjNURJJkpqjQ3/opdbfeT2wPKvrbnGnyRkrwW5o3FH1LaST1tkiNviT6OXTexGaVc2DahbdniQHVtQ7pA==
"@module-federation/webpack-bundler-runtime@0.5.1":
version "0.5.1"
resolved "https://registry.yarnpkg.com/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.5.1.tgz#ef626af0d57e3568c474d66d7d3797366e09cafd"
integrity sha512-mMhRFH0k2VjwHt3Jol9JkUsmI/4XlrAoBG3E0o7HoyoPYv1UFOWyqAflfANcUPgbYpvqmyLzDcO+3IT36LXnrA==
dependencies:
"@module-federation/runtime" "0.5.1"
"@module-federation/sdk" "0.5.1"
"@netlify/functions@^1.6.0":
version "1.6.0"
resolved "https://registry.yarnpkg.com/@netlify/functions/-/functions-1.6.0.tgz#c373423e6fef0e6f7422ac0345e8bbf2cb692366"
@ -2744,110 +2772,196 @@
estree-walker "^1.0.1"
picomatch "^2.2.2"
"@rsdoctor/client@0.3.11":
version "0.3.11"
resolved "https://registry.yarnpkg.com/@rsdoctor/client/-/client-0.3.11.tgz#010fe58c0872f05e2d327f8c83053ab43fc40c23"
integrity sha512-mqbatlzgBMlz2C40fXCH7+oHFzDLzOD7yCvvLpolQ6AGwDADJK16fXVtvpBPLP3kzRgw+G4mDwy+UiAmAaCGaQ==
"@rsdoctor/client@0.4.6":
version "0.4.6"
resolved "https://registry.yarnpkg.com/@rsdoctor/client/-/client-0.4.6.tgz#06bf2a13b5208bf1222154e1a9bf273ef8ce4517"
integrity sha512-ph10wCq7CRLssc83lMvk09HsInD5FpxboJxl6EF4M5vBp17DE7htbgVoq8ftGjDxF5Mzbk/MsOgjB4Ae52tpsw==
"@rsdoctor/core@0.3.11":
version "0.3.11"
resolved "https://registry.yarnpkg.com/@rsdoctor/core/-/core-0.3.11.tgz#85730315425b9ececea6f64145ae04140c5bfdcd"
integrity sha512-+l9Kpjge+xpBKovc6aP7gtBPM6vGJRi475DOC6We5/AbnpI60Jt3wiJ0arEfgCZ7p8qNvTLsBYSY6CYJm4dDLw==
"@rsdoctor/core@0.4.6":
version "0.4.6"
resolved "https://registry.yarnpkg.com/@rsdoctor/core/-/core-0.4.6.tgz#8563ee06c6a2968ded3c79cbbd41a4620996d52e"
integrity sha512-mYzKo5Mjl3Nhn8mOfJ1hVNP59fDL8zK/JrsHVfATQx9QsAgCFfbjMyRnOo8rTZuBjIS9LmDqLs31h7Dr3Lts6g==
dependencies:
"@rsdoctor/graph" "0.3.11"
"@rsdoctor/sdk" "0.3.11"
"@rsdoctor/types" "0.3.11"
"@rsdoctor/utils" "0.3.11"
axios "^1.7.2"
"@rsdoctor/graph" "0.4.6"
"@rsdoctor/sdk" "0.4.6"
"@rsdoctor/types" "0.4.6"
"@rsdoctor/utils" "0.4.6"
axios "^1.7.7"
enhanced-resolve "5.12.0"
filesize "^10.1.4"
filesize "^10.1.6"
fs-extra "^11.1.1"
loader-utils "^2.0.4"
lodash "^4.17.21"
path-browserify "1.0.1"
semver "^7.6.3"
source-map "^0.7.4"
webpack-bundle-analyzer "^4.10.2"
webpack-sources "^3.2.3"
"@rsdoctor/graph@0.3.11":
version "0.3.11"
resolved "https://registry.yarnpkg.com/@rsdoctor/graph/-/graph-0.3.11.tgz#b8d1a6452545e36b508285fc98b5776d074479f4"
integrity sha512-1WDLgwA0TWUS8NIPsV1eTbXH0UMNbLoYDLGSiaUVrwnl90cQsajaEUkwMcKu9VU3YVC4ayjwG6/RCrPlRqE4bw==
"@rsdoctor/graph@0.4.6":
version "0.4.6"
resolved "https://registry.yarnpkg.com/@rsdoctor/graph/-/graph-0.4.6.tgz#a9cee01b4b0a037816204ed6353c19b05f43e429"
integrity sha512-mn2cMKzyqqkc0WXN7Cr1OGNS7JhMAvlUsCyEV/pwJYiJ6OBqEE/g/xpZzA6QTT4nFqRNI2zneYsxgLNrFA4OvQ==
dependencies:
"@rsdoctor/types" "0.3.11"
"@rsdoctor/utils" "0.3.11"
"@rsdoctor/types" "0.4.6"
"@rsdoctor/utils" "0.4.6"
lodash "^4.17.21"
socket.io "4.7.2"
source-map "^0.7.4"
"@rsdoctor/sdk@0.3.11":
version "0.3.11"
resolved "https://registry.yarnpkg.com/@rsdoctor/sdk/-/sdk-0.3.11.tgz#58bb83b077ed167b5f29b6835ead9e78fbd718c3"
integrity sha512-ys9lTasYm9ecvj0oUbQuSpnULqImYq9QET1LUtoVBa5QIpQBbxOOegWnBmSsDlH7LlFQYhqLl5DR9FdJ7yTmcw==
"@rsdoctor/rspack-plugin@^0.4.6":
version "0.4.6"
resolved "https://registry.yarnpkg.com/@rsdoctor/rspack-plugin/-/rspack-plugin-0.4.6.tgz#a25095f4928b8d6938da87833d083fc50c599200"
integrity sha512-Akq5ca0JoYSbm4aQfiGs3k56vNIeYBsaZu2x6uEql86PHyQT5zd1ygwCNEG8qZTZdiJMgVvWjstKGBKMQFu9cQ==
dependencies:
"@rsdoctor/client" "0.3.11"
"@rsdoctor/graph" "0.3.11"
"@rsdoctor/types" "0.3.11"
"@rsdoctor/utils" "0.3.11"
body-parser "1.20.2"
"@rsdoctor/core" "0.4.6"
"@rsdoctor/graph" "0.4.6"
"@rsdoctor/sdk" "0.4.6"
"@rsdoctor/types" "0.4.6"
"@rsdoctor/utils" "0.4.6"
lodash "^4.17.21"
"@rsdoctor/sdk@0.4.6":
version "0.4.6"
resolved "https://registry.yarnpkg.com/@rsdoctor/sdk/-/sdk-0.4.6.tgz#98a810c61cda7be87dd9eb3d823a0c57399d1468"
integrity sha512-DmpuMCCB+Uuoi6mCHKVop3F/ap6XpTrcrFWt8McuqOOUI3SaFwXc9YYnXjzssgcXvxXgJjQ3kwnLsxGpADUt0A==
dependencies:
"@rsdoctor/client" "0.4.6"
"@rsdoctor/graph" "0.4.6"
"@rsdoctor/types" "0.4.6"
"@rsdoctor/utils" "0.4.6"
"@types/fs-extra" "^11.0.4"
body-parser "1.20.3"
cors "2.8.5"
dayjs "1.11.12"
dayjs "1.11.13"
fs-extra "^11.1.1"
lodash "^4.17.21"
open "^8.4.2"
serve-static "1.15.0"
serve-static "1.16.2"
socket.io "4.7.2"
source-map "^0.7.4"
tapable "2.2.1"
"@rsdoctor/types@0.3.11":
version "0.3.11"
resolved "https://registry.yarnpkg.com/@rsdoctor/types/-/types-0.3.11.tgz#d2a37650476bbf7a9d63d951bc0499c8a9b72ac4"
integrity sha512-BH+P5RekIQy3VqFswsTkSB5yeZBYTbMNIlVq1chHhIQcF0Hpd9fuUjFG59NJgBILZoL2vknUhBfhmiv2WEOYig==
"@rsdoctor/types@0.4.6":
version "0.4.6"
resolved "https://registry.yarnpkg.com/@rsdoctor/types/-/types-0.4.6.tgz#f400b6a6da749eeeed7439945656cddcf66165a3"
integrity sha512-AoqUFliSgaHr73yFIooAggsMljkaUz+SGgVqG+jgHsVYll0BeIK4/MM0dlpWIGrN5/Hgl+OHNgPA8kt+4i5gfg==
dependencies:
"@types/connect" "3.4.38"
"@types/estree" "1.0.5"
"@types/tapable" "2.2.7"
"@types/webpack" "5.28.5"
source-map "^0.7.4"
"@rsdoctor/utils@0.3.11":
version "0.3.11"
resolved "https://registry.yarnpkg.com/@rsdoctor/utils/-/utils-0.3.11.tgz#650b2b8cf2c4d38a0f35d05f13625965c467d185"
integrity sha512-S1h/rG3wPFjHE9AffGjBGxPhP1j8X23KZKiyYnYHiOTCHxnYTyBqRJXUA0OvGewFY9zi7ucz800y+s0G1ujGyg==
"@rsdoctor/utils@0.4.6":
version "0.4.6"
resolved "https://registry.yarnpkg.com/@rsdoctor/utils/-/utils-0.4.6.tgz#852b2cd0643defa46bdec0ddba091d6d3998b301"
integrity sha512-/5Oqdip/HCCX9cAqaEF/F5mXacm1/lgw8bq5IUTkomrUfK4QVShUc4UJCqM4VOuec0vKUhXEfirsg3PgOj1chw==
dependencies:
"@babel/code-frame" "7.24.7"
"@rsdoctor/types" "0.3.11"
"@rsdoctor/types" "0.4.6"
"@types/estree" "1.0.5"
acorn "^8.10.0"
acorn-import-assertions "1.9.0"
acorn-walk "8.3.3"
acorn-walk "8.3.4"
chalk "^4.1.2"
connect "3.7.0"
deep-eql "4.1.4"
envinfo "7.13.0"
filesize "^10.1.4"
envinfo "7.14.0"
filesize "^10.1.6"
fs-extra "^11.1.1"
get-port "5.1.1"
json-stream-stringify "3.0.1"
lines-and-columns "2.0.4"
lodash "^4.17.21"
rslog "^1.2.2"
rslog "^1.2.3"
strip-ansi "^6.0.1"
"@rsdoctor/webpack-plugin@^0.3.11":
version "0.3.11"
resolved "https://registry.yarnpkg.com/@rsdoctor/webpack-plugin/-/webpack-plugin-0.3.11.tgz#b5f43b7c3c8c365e379dbd5a51bfae284aee61b4"
integrity sha512-Gqr5GMOhHkJl9rtsbnCZV5mXuvsfpRtg735cRie9eT1E/dMpHerIGZFRGRIMPNkLAd/lfe0KwrGRZknWX9M/zQ==
"@rsdoctor/webpack-plugin@^0.4.6":
version "0.4.6"
resolved "https://registry.yarnpkg.com/@rsdoctor/webpack-plugin/-/webpack-plugin-0.4.6.tgz#3469d5997d9729ff6af4ad1d8f1a67a311015c3b"
integrity sha512-kSWugOcQVEWKs2CT+YovU5kQdrDYIHBuEP7eyWbrnxV8evIqRvS4Xu4TUiMP7QEcgljeFQwI/beeHLvgeEd49Q==
dependencies:
"@rsdoctor/core" "0.3.11"
"@rsdoctor/graph" "0.3.11"
"@rsdoctor/sdk" "0.3.11"
"@rsdoctor/types" "0.3.11"
"@rsdoctor/utils" "0.3.11"
"@rsdoctor/core" "0.4.6"
"@rsdoctor/graph" "0.4.6"
"@rsdoctor/sdk" "0.4.6"
"@rsdoctor/types" "0.4.6"
"@rsdoctor/utils" "0.4.6"
fs-extra "^11.1.1"
lodash "^4.17.21"
"@rspack/binding-darwin-arm64@1.0.9":
version "1.0.9"
resolved "https://registry.yarnpkg.com/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.0.9.tgz#c4483a5fa7053d46e70e96144bd6a04444d5f6b5"
integrity sha512-9CROBttbjfFcw78KGQHKGO6Im5uBLo0he2M8I+N4IOcTOCIqgtHSy0rjbpKxdpGlugokFafW/T5GBke+LW+J6A==
"@rspack/binding-darwin-x64@1.0.9":
version "1.0.9"
resolved "https://registry.yarnpkg.com/@rspack/binding-darwin-x64/-/binding-darwin-x64-1.0.9.tgz#056dba555623f233505e27779a63dfa84072236c"
integrity sha512-o0WmrkVYxEO8LKeZvflERRv8z/VKBM/JyvhHOGSQF1kV5989Eob9Dqd3JbXiHpgXZb8syh0xq9J/C/KL2djClw==
"@rspack/binding-linux-arm64-gnu@1.0.9":
version "1.0.9"
resolved "https://registry.yarnpkg.com/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.9.tgz#360dc04e71e97edb9a176c696e8604d46ce5273f"
integrity sha512-8lXgxL19HZSSzvlG7EsomACRYjdJKiSVsh5fMGO7nIF/elRsG0edMqtM/Vbm1srMN5o15/houvftb/kpK6giZg==
"@rspack/binding-linux-arm64-musl@1.0.9":
version "1.0.9"
resolved "https://registry.yarnpkg.com/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.9.tgz#c8fc0520d1259cb403668ba9eb91479dad947b7d"
integrity sha512-nZus0toIKvHJcJCPGKPRnQYM1FXpagyVs53tr+AA/uxFA5mnHIrQ+RAP/PrdRT9+B6VOI+2Cs6nqwkrXtKg7qQ==
"@rspack/binding-linux-x64-gnu@1.0.9":
version "1.0.9"
resolved "https://registry.yarnpkg.com/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.9.tgz#59c357fa2214f0df93f10d97e84118adbc52b3dc"
integrity sha512-3B54wWAhH4k3gJHYR4CUU8e82NWwZFIiBiCQzOOk0uh+rDkFtBt2xiOOZERQGLVvZmoz1K5JvNNPBBETVFKORg==
"@rspack/binding-linux-x64-musl@1.0.9":
version "1.0.9"
resolved "https://registry.yarnpkg.com/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.9.tgz#4417eb5c7dfa08a625ff3f480e52da230c4081f7"
integrity sha512-EF8T9VGQmCu+snhd6meexUWB7qQSdyqmGEMZNGTt2Qa+NC0x2W2owg6QzyyyTP1tTlTkIC5fWKKtN/4xP7dttA==
"@rspack/binding-win32-arm64-msvc@1.0.9":
version "1.0.9"
resolved "https://registry.yarnpkg.com/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.9.tgz#4ece956b3adc3ac3a4d22691eff7839ec82534f1"
integrity sha512-TTXsOrpBgxcArTlOywFrThYZ4lNFQaowKaNf59QJhWm02fYb7ZezEbVzbJXhsqr4flLOaZcCuLPVaxhGaqZHYA==
"@rspack/binding-win32-ia32-msvc@1.0.9":
version "1.0.9"
resolved "https://registry.yarnpkg.com/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.0.9.tgz#1ff2a2a9c22b6b6d7a2d30db66b265b28478d404"
integrity sha512-/CJsa3D0+0/BkCTXpK8y7aYQRnrOlu8rboIx24LfCOK5wJB5WxvrvmXHT9XFUiUQt9zLYRQj6l5PdAj66Aoozg==
"@rspack/binding-win32-x64-msvc@1.0.9":
version "1.0.9"
resolved "https://registry.yarnpkg.com/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.9.tgz#3f81a9878395a29b230a0a43f94cd40ae12f3b0e"
integrity sha512-euDrnVN2iFClu/7TpBErx99/4flhZCsvNcLBganbaCrM+NxWuCEa889Tmm6SosLoqvundk6pdsvPb9ubMqOEjg==
"@rspack/binding@1.0.9":
version "1.0.9"
resolved "https://registry.yarnpkg.com/@rspack/binding/-/binding-1.0.9.tgz#8ace66b9534eab02fdded4a9782cb54c681de01d"
integrity sha512-QbhCVrnSMB1HyvRXhzGJK1J4AKZbckAUFlN1fTijH3oRbSYzUOK8bbL9DPt6BtIjkEWnfPv8rKqfl3Yo9OJbTA==
optionalDependencies:
"@rspack/binding-darwin-arm64" "1.0.9"
"@rspack/binding-darwin-x64" "1.0.9"
"@rspack/binding-linux-arm64-gnu" "1.0.9"
"@rspack/binding-linux-arm64-musl" "1.0.9"
"@rspack/binding-linux-x64-gnu" "1.0.9"
"@rspack/binding-linux-x64-musl" "1.0.9"
"@rspack/binding-win32-arm64-msvc" "1.0.9"
"@rspack/binding-win32-ia32-msvc" "1.0.9"
"@rspack/binding-win32-x64-msvc" "1.0.9"
"@rspack/core@^1.0.9":
version "1.0.9"
resolved "https://registry.yarnpkg.com/@rspack/core/-/core-1.0.9.tgz#566ae593d525627b0351f4c7789893b7f2eae41b"
integrity sha512-NqvMrB9sHsKn+xTyhNx+dF10eBmntVIWkzSZq89WaOASnCGYx5QWg8ZvZNGEr24T8mrbATsOkB3q8xPlpvHv4A==
dependencies:
"@module-federation/runtime-tools" "0.5.1"
"@rspack/binding" "1.0.9"
"@rspack/lite-tapable" "1.0.1"
caniuse-lite "^1.0.30001616"
"@rspack/lite-tapable@1.0.1":
version "1.0.1"
resolved "https://registry.yarnpkg.com/@rspack/lite-tapable/-/lite-tapable-1.0.1.tgz#d4540a5d28bd6177164bc0ba0bee4bdec0458591"
integrity sha512-VynGOEsVw2s8TAlLf/uESfrgfrq2+rcXB1muPJYBWbsm1Oa6r5qVQhjA5ggM6z/coYPrsVMgovl3Ff7Q7OCp1w==
"@sideway/address@^4.1.3":
version "4.1.4"
resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.4.tgz#03dccebc6ea47fdc226f7d3d1ad512955d4783f0"
@ -3448,6 +3562,14 @@
dependencies:
"@types/webpack" "^4"
"@types/fs-extra@^11.0.4":
version "11.0.4"
resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-11.0.4.tgz#e16a863bb8843fba8c5004362b5a73e17becca45"
integrity sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==
dependencies:
"@types/jsonfile" "*"
"@types/node" "*"
"@types/fs-extra@^9.0.13":
version "9.0.13"
resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-9.0.13.tgz#7594fbae04fe7f1918ce8b3d213f74ff44ac1f45"
@ -3583,6 +3705,13 @@
resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee"
integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==
"@types/jsonfile@*":
version "6.1.4"
resolved "https://registry.yarnpkg.com/@types/jsonfile/-/jsonfile-6.1.4.tgz#614afec1a1164e7d670b4a7ad64df3e7beb7b702"
integrity sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==
dependencies:
"@types/node" "*"
"@types/katex@^0.16.0":
version "0.16.1"
resolved "https://registry.yarnpkg.com/@types/katex/-/katex-0.16.1.tgz#e1faa29f131c241a7669e65bdf8ce470c9c4e3a9"
@ -3957,15 +4086,6 @@
"@types/source-list-map" "*"
source-map "^0.7.3"
"@types/webpack@5.28.5":
version "5.28.5"
resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-5.28.5.tgz#0e9d9a15efa09bbda2cef41356ca4ac2031ea9a2"
integrity sha512-wR87cgvxj3p6D0Crt1r5avwqffqPXUkNlnQ1mjU93G7gCuFjufZR4I6j8cz5g1F1tTYpfOOFvly+cmIQwL9wvw==
dependencies:
"@types/node" "*"
tapable "^2.2.0"
webpack "^5"
"@types/webpack@^4":
version "4.41.33"
resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.33.tgz#16164845a5be6a306bcbe554a8e67f9cac215ffc"
@ -4322,10 +4442,10 @@ acorn-jsx@^5.0.0, acorn-jsx@^5.0.1, acorn-jsx@^5.3.2:
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
acorn-walk@8.3.3, acorn-walk@^8.0.0, acorn-walk@^8.0.2:
version "8.3.3"
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.3.tgz#9caeac29eefaa0c41e3d4c65137de4d6f34df43e"
integrity sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==
acorn-walk@8.3.4, acorn-walk@^8.0.0, acorn-walk@^8.0.2:
version "8.3.4"
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.4.tgz#794dd169c3977edf4ba4ea47583587c5866236b7"
integrity sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==
dependencies:
acorn "^8.11.0"
@ -4709,10 +4829,10 @@ axe-core@^4.6.2:
resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.7.2.tgz#040a7342b20765cb18bb50b628394c21bccc17a0"
integrity sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g==
axios@^1, axios@^1.0.0, axios@^1.5.0, axios@^1.7.2:
version "1.7.4"
resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.4.tgz#4c8ded1b43683c8dd362973c393f3ede24052aa2"
integrity sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw==
axios@^1, axios@^1.0.0, axios@^1.5.0, axios@^1.7.7:
version "1.7.7"
resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.7.tgz#2f554296f9892a72ac8d8e4c5b79c14a91d0a47f"
integrity sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==
dependencies:
follow-redirects "^1.15.6"
form-data "^4.0.0"
@ -4926,24 +5046,6 @@ bluebird@~3.4.1:
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.4.7.tgz#f72d760be09b7f76d08ed8fae98b289a8d05fab3"
integrity sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==
body-parser@1.20.2:
version "1.20.2"
resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd"
integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==
dependencies:
bytes "3.1.2"
content-type "~1.0.5"
debug "2.6.9"
depd "2.0.0"
destroy "1.2.0"
http-errors "2.0.0"
iconv-lite "0.4.24"
on-finished "2.4.1"
qs "6.11.0"
raw-body "2.5.2"
type-is "~1.6.18"
unpipe "1.0.0"
body-parser@1.20.3:
version "1.20.3"
resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.3.tgz#1953431221c6fb5cd63c4b36d53fab0928e548c6"
@ -5254,7 +5356,7 @@ caniuse-api@^3.0.0:
lodash.memoize "^4.1.2"
lodash.uniq "^4.5.0"
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001646, caniuse-lite@^1.0.30001663:
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001616, caniuse-lite@^1.0.30001646, caniuse-lite@^1.0.30001663:
version "1.0.30001664"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001664.tgz#d588d75c9682d3301956b05a3749652a80677df4"
integrity sha512-AmE7k4dXiNKQipgn7a2xg558IRqPN3jMQY/rOsbxDhrd0tyChwbITBfiwtnqz8bi2M5mIWbxAYBvk7W7QBUS2g==
@ -6753,12 +6855,7 @@ dateformat@^3.0.0:
resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae"
integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==
dayjs@1.11.12:
version "1.11.12"
resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.12.tgz#5245226cc7f40a15bf52e0b99fd2a04669ccac1d"
integrity sha512-Rt2g+nTbLlDWZTwwrIXjy9MeiZmSDI375FvZs72ngxx8PDC6YXOeR3q5LAuPzjZQxhiWdRKac7RKV+YyQYfYIg==
dayjs@^1.11.10:
dayjs@1.11.13, dayjs@^1.11.10:
version "1.11.13"
resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.13.tgz#92430b0139055c3ebb60150aa13e860a4b5a366c"
integrity sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==
@ -7294,10 +7391,10 @@ env-paths@^2.2.0, env-paths@^2.2.1:
resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2"
integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==
envinfo@7.13.0, envinfo@^7.7.4:
version "7.13.0"
resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.13.0.tgz#81fbb81e5da35d74e814941aeab7c325a606fb31"
integrity sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==
envinfo@7.14.0, envinfo@^7.7.4:
version "7.14.0"
resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.14.0.tgz#26dac5db54418f2a4c1159153a0b2ae980838aae"
integrity sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg==
equals@^1.0.5:
version "1.0.5"
@ -8076,10 +8173,10 @@ filelist@^1.0.4:
dependencies:
minimatch "^5.0.1"
filesize@^10.1.4:
version "10.1.4"
resolved "https://registry.yarnpkg.com/filesize/-/filesize-10.1.4.tgz#184f256063a201f08b6e6b3cc47d21b60f5b8d89"
integrity sha512-ryBwPIIeErmxgPnm6cbESAzXjuEFubs+yKYLBZvg3CaiNcmkJChoOGcBSrZ6IwkMwPABwPpVXE6IlNdGJJrvEg==
filesize@^10.1.6:
version "10.1.6"
resolved "https://registry.yarnpkg.com/filesize/-/filesize-10.1.6.tgz#31194da825ac58689c0bce3948f33ce83aabd361"
integrity sha512-sJslQKU2uM33qH5nqewAwVB2QgR6w1aMNsYUp3aN5rMRyXEwJGmZvaWzeJFNTOXWlHQyBFCWrdj3fV/fsTOX8w==
filesize@^8.0.6:
version "8.0.7"
@ -10961,7 +11058,7 @@ loader-runner@^4.2.0:
resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1"
integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==
loader-utils@^2.0.0, loader-utils@^2.0.4:
loader-utils@^2.0.0:
version "2.0.4"
resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c"
integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==
@ -14970,10 +15067,10 @@ roughjs@^4.6.6:
points-on-curve "^0.2.0"
points-on-path "^0.2.1"
rslog@^1.2.2:
version "1.2.2"
resolved "https://registry.yarnpkg.com/rslog/-/rslog-1.2.2.tgz#057791013c1de27d1d8b0728a766688d11c13830"
integrity sha512-tZP8KjrI1nz6qOYCrFxAV7cfmfS2GV94jotU2zOmF/6ByO1zNvGR6/+0inylpjqyBjAdnnutTUW0m4th06bSTw==
rslog@^1.2.3:
version "1.2.3"
resolved "https://registry.yarnpkg.com/rslog/-/rslog-1.2.3.tgz#9114d93056312fbe35c11b3fea3f2774a7debe56"
integrity sha512-antALPJaKBRPBU1X2q9t085K4htWDOOv/K1qhTUk7h0l1ePU/KbDqKJn19eKP0dk7PqMioeA0+fu3gyPXCsXxQ==
rtl-detect@^1.0.4:
version "1.0.4"
@ -15256,16 +15353,6 @@ serve-index@^1.9.1:
mime-types "~2.1.17"
parseurl "~1.3.2"
serve-static@1.15.0:
version "1.15.0"
resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540"
integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==
dependencies:
encodeurl "~1.0.2"
escape-html "~1.0.3"
parseurl "~1.3.3"
send "0.18.0"
serve-static@1.16.0:
version "1.16.0"
resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.16.0.tgz#2bf4ed49f8af311b519c46f272bf6ac3baf38a92"
@ -15276,6 +15363,16 @@ serve-static@1.16.0:
parseurl "~1.3.3"
send "0.18.0"
serve-static@1.16.2:
version "1.16.2"
resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.16.2.tgz#b6a5343da47f6bdd2673848bf45754941e803296"
integrity sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==
dependencies:
encodeurl "~2.0.0"
escape-html "~1.0.3"
parseurl "~1.3.3"
send "0.19.0"
server-only@^0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/server-only/-/server-only-0.0.1.tgz#0f366bb6afb618c37c9255a314535dc412cd1c9e"