diff --git a/.prettierignore b/.prettierignore index b76e36cf9c0d..b59a09a79d1f 100644 --- a/.prettierignore +++ b/.prettierignore @@ -23,3 +23,6 @@ packages/rspack-test-tools/src/helper/legacy/**/* crates/** !crates/**/ !crates/**/*.md + +# Comprehensive demo build outputs +examples/comprehensive-demo-react18/**/public/ diff --git a/.typos.toml b/.typos.toml index fa84e567d59b..7d2d91362d54 100644 --- a/.typos.toml +++ b/.typos.toml @@ -16,6 +16,7 @@ extend-exclude = [ "biome.jsonc", "scripts/test/diff.cjs", "scripts/test/binary-path.cjs", + "examples/comprehensive-demo-react18", ] [default.extend-identifiers] diff --git a/Cargo.lock b/Cargo.lock index 75fc38ec12e1..98d685a26fae 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4599,7 +4599,6 @@ dependencies = [ "rspack_loader_runner", "rspack_plugin_javascript", "rspack_plugin_runtime", - "rspack_sources", "rspack_util", "rustc-hash", "serde", diff --git a/biome.jsonc b/biome.jsonc index 4a5c3dc87028..32df9e834fd0 100644 --- a/biome.jsonc +++ b/biome.jsonc @@ -71,7 +71,9 @@ "!**/packages/rspack-test-tools/template/*", // --- ignore runtime code in browser "!**/packages/rspack/hot", - "!**/packages/rspack/src/runtime/moduleFederationDefaultRuntime.js" + "!**/packages/rspack/src/runtime/moduleFederationDefaultRuntime.js", + // --- ignore comprehensive example (external code for testing) + "!**/examples/comprehensive-demo-react18/**/*" ], "ignoreUnknown": true }, diff --git a/crates/node_binding/napi-binding.d.ts b/crates/node_binding/napi-binding.d.ts index 6c2c106b8d82..e560bba16bd4 100644 --- a/crates/node_binding/napi-binding.d.ts +++ b/crates/node_binding/napi-binding.d.ts @@ -1853,6 +1853,7 @@ export interface RawConsumeOptions { export interface RawConsumeSharedPluginOptions { consumes: Array enhanced: boolean + asyncStartup?: boolean } export interface RawContainerPluginOptions { @@ -2468,8 +2469,13 @@ export interface RawModuleFederationManifestPluginOptions { buildInfo?: RawStatsBuildInfo } +export interface RawModuleFederationRuntimeExperimentsOptions { + asyncStartup?: boolean +} + export interface RawModuleFederationRuntimePluginOptions { entryRuntime?: string | undefined + experiments?: RawModuleFederationRuntimeExperimentsOptions } export interface RawModuleFilenameTemplateFnCtx { diff --git a/crates/rspack_binding_api/src/raw_options/raw_builtins/mod.rs b/crates/rspack_binding_api/src/raw_options/raw_builtins/mod.rs index 8733f3a79aa0..9b69a0a35be2 100644 --- a/crates/rspack_binding_api/src/raw_options/raw_builtins/mod.rs +++ b/crates/rspack_binding_api/src/raw_options/raw_builtins/mod.rs @@ -503,6 +503,9 @@ impl<'a> BuiltinPlugin<'a> { BuiltinPluginName::ModuleFederationRuntimePlugin => { let options = downcast_into::(self.options) .map_err(|report| napi::Error::from_reason(report.to_string()))?; + if std::env::var("RSPACK_DEBUG_MF_ASYNC").is_ok() { + eprintln!("[mf-async] raw runtime plugin opts: {:?}", options); + } plugins.push(ModuleFederationRuntimePlugin::new(options.into()).boxed()) } BuiltinPluginName::ModuleFederationManifestPlugin => { diff --git a/crates/rspack_binding_api/src/raw_options/raw_builtins/raw_mf.rs b/crates/rspack_binding_api/src/raw_options/raw_builtins/raw_mf.rs index 03adc9c05724..da7cefc4f3ad 100644 --- a/crates/rspack_binding_api/src/raw_options/raw_builtins/raw_mf.rs +++ b/crates/rspack_binding_api/src/raw_options/raw_builtins/raw_mf.rs @@ -5,8 +5,9 @@ use napi_derive::napi; use rspack_plugin_mf::{ ConsumeOptions, ConsumeSharedPluginOptions, ConsumeVersion, ContainerPluginOptions, ContainerReferencePluginOptions, ExposeOptions, ManifestExposeOption, ManifestSharedOption, - ModuleFederationManifestPluginOptions, ModuleFederationRuntimePluginOptions, ProvideOptions, - ProvideVersion, RemoteAliasTarget, RemoteOptions, StatsBuildInfo, + ModuleFederationManifestPluginOptions, ModuleFederationRuntimeExperimentsOptions, + ModuleFederationRuntimePluginOptions, ProvideOptions, ProvideVersion, RemoteAliasTarget, + RemoteOptions, StatsBuildInfo, }; use crate::options::{ @@ -138,6 +139,7 @@ impl From for (String, ProvideOptions) { pub struct RawConsumeSharedPluginOptions { pub consumes: Vec, pub enhanced: bool, + pub async_startup: Option, } impl From for ConsumeSharedPluginOptions { @@ -150,6 +152,7 @@ impl From for ConsumeSharedPluginOptions { .map(|(k, v)| (k, Arc::new(v))) .collect(), enhanced: value.enhanced, + async_startup: value.async_startup.unwrap_or(false), } } } @@ -216,12 +219,30 @@ impl From for ConsumeVersion { pub struct RawModuleFederationRuntimePluginOptions { #[napi(ts_type = "string | undefined")] pub entry_runtime: Option, + pub experiments: Option, } impl From for ModuleFederationRuntimePluginOptions { fn from(value: RawModuleFederationRuntimePluginOptions) -> Self { Self { entry_runtime: value.entry_runtime, + experiments: value.experiments.map(Into::into).unwrap_or_default(), + } + } +} + +#[derive(Debug, Default)] +#[napi(object)] +pub struct RawModuleFederationRuntimeExperimentsOptions { + pub async_startup: Option, +} + +impl From + for ModuleFederationRuntimeExperimentsOptions +{ + fn from(value: RawModuleFederationRuntimeExperimentsOptions) -> Self { + Self { + async_startup: value.async_startup.unwrap_or(false), } } } diff --git a/crates/rspack_core/src/runtime_globals.rs b/crates/rspack_core/src/runtime_globals.rs index 8426d689b306..766d053909f5 100644 --- a/crates/rspack_core/src/runtime_globals.rs +++ b/crates/rspack_core/src/runtime_globals.rs @@ -263,6 +263,11 @@ bitflags! { const ASYNC_MODULE_EXPORT_SYMBOL = 1 << 68; const MAKE_DEFERRED_NAMESPACE_OBJECT = 1 << 69; const MAKE_DEFERRED_NAMESPACE_OBJECT_SYMBOL = 1 << 70; + + /** + * indicates that Module Federation async startup wrapper is already emitted + */ + const ASYNC_FEDERATION_STARTUP = 1 << 71; } } @@ -331,6 +336,7 @@ impl RuntimeGlobals { R::MAKE_NAMESPACE_OBJECT => "__webpack_require__.r", R::MAKE_DEFERRED_NAMESPACE_OBJECT => "__webpack_require__.z", R::MAKE_DEFERRED_NAMESPACE_OBJECT_SYMBOL => "__webpack_require__.zS", + R::ASYNC_FEDERATION_STARTUP => "__webpack_require__.mfAsyncStartup", R::EXPORTS => "__webpack_exports__", R::COMPAT_GET_DEFAULT_EXPORT => "__webpack_require__.n", R::CREATE_FAKE_NAMESPACE_OBJECT => "__webpack_require__.t", diff --git a/crates/rspack_plugin_javascript/src/plugin/mod.rs b/crates/rspack_plugin_javascript/src/plugin/mod.rs index 4c2cb8bf671f..8d17c49aad8a 100644 --- a/crates/rspack_plugin_javascript/src/plugin/mod.rs +++ b/crates/rspack_plugin_javascript/src/plugin/mod.rs @@ -243,6 +243,9 @@ impl JsPlugin { let mut header: Vec> = Vec::new(); let mut startup: Vec> = Vec::new(); let mut allow_inline_startup = true; + let mut mf_async_startup = false; + let mf_async_startup_flag = + runtime_requirements.contains(RuntimeGlobals::ASYNC_FEDERATION_STARTUP); let supports_arrow_function = compilation .options .output @@ -329,209 +332,556 @@ impl JsPlugin { if !runtime_requirements.contains(RuntimeGlobals::STARTUP_NO_DEFAULT) { if chunk.has_entry_module(&compilation.chunk_graph) { - let mut buf2: Vec> = Vec::new(); - buf2.push("// Load entry module and return exports".into()); - let entries = compilation - .chunk_graph - .get_chunk_entry_modules_with_chunk_group_iterable(chunk_ukey); - for (i, (module, entry)) in entries.iter().enumerate() { - let chunk_group = compilation.chunk_group_by_ukey.expect_get(entry); - let chunk_ids = chunk_group - .chunks - .iter() - .filter(|c| *c != chunk_ukey) - .map(|chunk_ukey| { - compilation - .chunk_by_ukey - .expect_get(chunk_ukey) - .expect_id(&compilation.chunk_ids_artifact) - .to_string() - }) - .collect::>(); - if allow_inline_startup && !chunk_ids.is_empty() { - buf2.push("// This entry module depends on other loaded chunks and execution need to be delayed".into()); - allow_inline_startup = false; - } - if allow_inline_startup && { - let module_graph = compilation.get_module_graph(); - let module_graph_cache = &compilation.module_graph_cache_artifact; - module_graph - .get_incoming_connections_by_origin_module(module) + let use_federation_async = mf_async_startup_flag; + + if cfg!(debug_assertions) && mf_async_startup_flag { + tracing::debug!( + "render_startup async MF chunk={:?} has_entry_modules={} reqs={:?}", + chunk_ukey, + chunk.has_entry_module(&compilation.chunk_graph), + runtime_requirements + ); + } + + if use_federation_async { + let startup_fn = RuntimeGlobals::STARTUP_ENTRYPOINT; + let _needs_on_chunks_loaded = + runtime_requirements.contains(RuntimeGlobals::ON_CHUNKS_LOADED); + mf_async_startup = true; + let mut buf2: Vec> = Vec::new(); + + buf2.push("// Module Federation async startup".into()); + buf2.push( + format!( + "var __webpack_exec__ = function(moduleId) {{ return {}({} = moduleId); }};", + RuntimeGlobals::REQUIRE, + RuntimeGlobals::ENTRY_MODULE_ID + ) + .into(), + ); + buf2.push("var promises = [];".into()); + buf2.push("// Call federation runtime initialization".into()); + buf2.push("var runtimeInitialization = undefined;".into()); + buf2.push(format!("if (typeof {} === \"function\") {{", startup_fn).into()); + buf2.push(format!(" runtimeInitialization = {};", startup_fn).into()); + buf2.push("} else {".into()); + buf2.push( + format!( + " console.warn(\"[Module Federation] {} is not a function, skipping federation startup\");", + startup_fn + ) + .into(), + ); + buf2.push("}".into()); + + let entries = compilation + .chunk_graph + .get_chunk_entry_modules_with_chunk_group_iterable(chunk_ukey); + + let mut federation_entry_calls: Vec = Vec::new(); + let mut all_chunk_ids: Vec = Vec::new(); + + for (module, entry) in entries.iter() { + let chunk_group = compilation.chunk_group_by_ukey.expect_get(entry); + let chunk_ids = chunk_group + .chunks .iter() - .any(|(origin_module, connections)| { - if let Some(origin_module) = origin_module { - connections.iter().any(|c| { - c.is_target_active(&module_graph, Some(chunk.runtime()), module_graph_cache) - }) && compilation - .chunk_graph - .get_module_runtimes_iter(*origin_module, &compilation.chunk_by_ukey) - .any(|runtime| runtime.intersection(chunk.runtime()).count() > 0) - } else { - false - } + .filter(|c| *c != chunk_ukey) + .map(|chunk_ukey| { + compilation + .chunk_by_ukey + .expect_get(chunk_ukey) + .expect_id(&compilation.chunk_ids_artifact) + .to_string() }) - } { - buf2.push( - "// This entry module is referenced by other modules so it can't be inlined".into(), - ); - allow_inline_startup = false; - } - if allow_inline_startup && { - let codegen = compilation - .code_generation_results - .get(module, Some(chunk.runtime())); - let module_graph = compilation.get_module_graph(); - let top_level_decls = codegen - .data - .get::() - .map(|d| d.inner()) - .or_else(|| { - module_graph - .module_by_identifier(module) - .and_then(|m| m.build_info().top_level_declarations.as_ref()) - }); - top_level_decls.is_none() - } { - buf2.push("// This entry module doesn't tell about it's top-level declarations so it can't be inlined".into()); - allow_inline_startup = false; - } - let hooks = JsPlugin::get_compilation_hooks(compilation.id()); - let bailout = hooks - .try_read() - .expect("should have js plugin drive") - .inline_in_runtime_bailout - .call(compilation) - .await?; - if allow_inline_startup && let Some(bailout) = bailout { - buf2.push(format!("// This entry module can't be inlined because {bailout}").into()); - allow_inline_startup = false; - } - let entry_runtime_requirements = - ChunkGraph::get_module_runtime_requirements(compilation, *module, chunk.runtime()); - if allow_inline_startup - && let Some(entry_runtime_requirements) = entry_runtime_requirements - && entry_runtime_requirements.contains(RuntimeGlobals::MODULE) - { - allow_inline_startup = false; - buf2.push("// This entry module used 'module' so it can't be inlined".into()); - } + .collect::>(); + if allow_inline_startup && !chunk_ids.is_empty() { + buf2.push("// This entry module depends on other loaded chunks and execution need to be delayed".into()); + allow_inline_startup = false; + } + if allow_inline_startup && { + let module_graph = compilation.get_module_graph(); + let module_graph_cache = &compilation.module_graph_cache_artifact; + module_graph + .get_incoming_connections_by_origin_module(module) + .iter() + .any(|(origin_module, connections)| { + if let Some(origin_module) = origin_module { + connections.iter().any(|c| { + c.is_target_active(&module_graph, Some(chunk.runtime()), module_graph_cache) + }) && compilation + .chunk_graph + .get_module_runtimes_iter(*origin_module, &compilation.chunk_by_ukey) + .any(|runtime| runtime.intersection(chunk.runtime()).count() > 0) + } else { + false + } + }) + } { + buf2.push( + "// This entry module is referenced by other modules so it can't be inlined".into(), + ); + allow_inline_startup = false; + } + if allow_inline_startup && { + let codegen = compilation + .code_generation_results + .get(module, Some(chunk.runtime())); + let module_graph = compilation.get_module_graph(); + let top_level_decls = codegen + .data + .get::() + .map(|d| d.inner()) + .or_else(|| { + module_graph + .module_by_identifier(module) + .and_then(|m| m.build_info().top_level_declarations.as_ref()) + }); + top_level_decls.is_none() + } { + buf2.push("// This entry module doesn't tell about it's top-level declarations so it can't be inlined".into()); + allow_inline_startup = false; + } + let hooks = JsPlugin::get_compilation_hooks(compilation.id()); + let bailout = hooks + .try_read() + .expect("should have js plugin drive") + .inline_in_runtime_bailout + .call(compilation) + .await?; + if allow_inline_startup && let Some(bailout) = bailout { + buf2.push(format!("// This entry module can't be inlined because {bailout}").into()); + allow_inline_startup = false; + } + let entry_runtime_requirements = + ChunkGraph::get_module_runtime_requirements(compilation, *module, chunk.runtime()); + if allow_inline_startup + && let Some(entry_runtime_requirements) = entry_runtime_requirements + && entry_runtime_requirements.contains(RuntimeGlobals::MODULE) + { + allow_inline_startup = false; + buf2.push("// This entry module used 'module' so it can't be inlined".into()); + } + + let module_id = ChunkGraph::get_module_id(&compilation.module_ids_artifact, *module) + .expect("should have module id"); + let mut module_id_expr = serde_json::to_string(module_id).expect("invalid module_id"); + if runtime_requirements.contains(RuntimeGlobals::ENTRY_MODULE_ID) { + module_id_expr = format!("{} = {module_id_expr}", RuntimeGlobals::ENTRY_MODULE_ID); + } - let module_id = ChunkGraph::get_module_id(&compilation.module_ids_artifact, *module) - .expect("should have module id"); - let mut module_id_expr = serde_json::to_string(module_id).expect("invalid module_id"); - if runtime_requirements.contains(RuntimeGlobals::ENTRY_MODULE_ID) { - module_id_expr = format!("{} = {module_id_expr}", RuntimeGlobals::ENTRY_MODULE_ID); + federation_entry_calls.push(format!("__webpack_exec__({})", module_id_expr)); + for chunk_id in &chunk_ids { + if !all_chunk_ids.contains(chunk_id) { + all_chunk_ids.push(chunk_id.clone()); + } + } } - if !chunk_ids.is_empty() { - let on_chunks_loaded_callback = if supports_arrow_function { - format!("() => {}({module_id_expr})", RuntimeGlobals::REQUIRE) + if !federation_entry_calls.is_empty() { + let chunk_id = chunk.expect_id(&compilation.chunk_ids_artifact); + let chunk_id_str = serde_json::to_string(chunk_id).expect("invalid chunk_id"); + // Ensure all entry modules execute before returning. Using an IIFE avoids early + // return short-circuit when multiple entry calls exist. + let entry_fn_body = if federation_entry_calls.len() == 1 { + federation_entry_calls[0].clone() } else { - format!( - "function() {{ return {}({module_id_expr}) }}", - RuntimeGlobals::REQUIRE - ) + let (last, rest) = federation_entry_calls + .split_last() + .expect("non-empty entries"); + format!("(function(){{ {}; return {}; }})()", rest.join("; "), last) }; - buf2.push( - format!( - "{}{}(undefined, {}, {});", - if i + 1 == entries.len() { - format!("var {} = ", RuntimeGlobals::EXPORTS) + + if mf_async_startup { + let is_esm_output = compilation.options.output.module; + if is_esm_output { + // ESM output with top-level await + buf2.push( + format!( + "const {}Promise = Promise.resolve().then(() => {{ return typeof runtimeInitialization === \"function\" ? runtimeInitialization() : runtimeInitialization; }}).then(() => {{ return typeof __webpack_require__.I === \"function\" ? __webpack_require__.I(\"default\") : undefined; }}).then(async () => {{", + RuntimeGlobals::EXPORTS + ) + .into(), + ); + buf2.push(" const handlers = [".into()); + buf2.push(" (chunkId, promises) => (__webpack_require__.f.consumes || (() => {}))(chunkId, promises),".into()); + buf2.push(" (chunkId, promises) => (__webpack_require__.f.remotes || (() => {}))(chunkId, promises)".into()); + buf2.push(" ];".into()); + buf2.push( + format!( + " await Promise.all(handlers.reduce((p, handler) => {{ handler({}, p); return p; }}, promises));", + chunk_id_str + ) + .into(), + ); + if !all_chunk_ids.is_empty() { + buf2.push( + format!( + " return {}(0, {}, () => {{ return {}; }});", + RuntimeGlobals::STARTUP_ENTRYPOINT, + stringify_array(&all_chunk_ids), + entry_fn_body + ) + .into(), + ); } else { - "".to_string() - }, - RuntimeGlobals::ON_CHUNKS_LOADED, - stringify_array(&chunk_ids), - on_chunks_loaded_callback - ) - .into(), - ); - } else if use_require { - buf2.push( - format!( - "{}{}({module_id_expr});", - if i + 1 == entries.len() { - format!("var {} = ", RuntimeGlobals::EXPORTS) + buf2.push(format!(" return {};", entry_fn_body).into()); + } + buf2.push("});".into()); + buf2.push(format!("let {};", RuntimeGlobals::EXPORTS).into()); + buf2.push("export default ".into()); + buf2.push( + format!( + "({exports} = await {exports}Promise.then(res => typeof {on_chunks_loaded} === \"function\" ? {on_chunks_loaded}(res) : res), {exports});", + exports = RuntimeGlobals::EXPORTS, + on_chunks_loaded = RuntimeGlobals::ON_CHUNKS_LOADED + ) + .into(), + ); + } else { + // CJS output with Promise chain + buf2.push("// Wrap startup in Promise chain with federation handlers".into()); + buf2.push( + format!( + "var {} = Promise.resolve().then(function() {{ return typeof runtimeInitialization === \"function\" ? runtimeInitialization() : runtimeInitialization; }}).then(function() {{ return typeof __webpack_require__.I === \"function\" ? __webpack_require__.I(\"default\") : undefined; }}).then(function() {{", + RuntimeGlobals::EXPORTS + ) + .into(), + ); + buf2.push(" var handlers = [".into()); + buf2.push(" function(chunkId, promises) {".into()); + buf2.push(" return (__webpack_require__.f.consumes || function(chunkId, promises) {})(chunkId, promises);".into()); + buf2.push(" },".into()); + buf2.push(" function(chunkId, promises) {".into()); + buf2.push(" return (__webpack_require__.f.remotes || function(chunkId, promises) {})(chunkId, promises);".into()); + buf2.push(" }".into()); + buf2.push(" ];".into()); + buf2.push( + format!( + " return Promise.all(handlers.reduce(function(p, handler) {{ return handler({}, p), p; }}, promises));", + chunk_id_str + ) + .into(), + ); + buf2.push("}).then(function() {".into()); + if !all_chunk_ids.is_empty() { + buf2.push( + format!( + " return {}(0, {}, function() {{ return {}; }});", + RuntimeGlobals::STARTUP_ENTRYPOINT, + stringify_array(&all_chunk_ids), + entry_fn_body + ) + .into(), + ); } else { - "".to_string() - }, - RuntimeGlobals::REQUIRE - ) - .into(), - ) - } else { - let should_exec = i + 1 == entries.len(); - if should_exec { - buf2.push(format!("var {} = {{}}", RuntimeGlobals::EXPORTS).into()); + buf2.push(format!(" return {};", entry_fn_body).into()); + } + buf2.push("}).then(function(res) {".into()); + buf2.push( + format!( + " return typeof {} === \"function\" ? {}(res) : res;", + RuntimeGlobals::ON_CHUNKS_LOADED, + RuntimeGlobals::ON_CHUNKS_LOADED + ) + .into(), + ); + buf2.push("});".into()); + } + } else { + buf2.push("// Wrap startup in Promise chain with federation handlers".into()); + buf2.push( + format!( + "var {} = Promise.resolve().then(function() {{ return typeof runtimeInitialization === \"function\" ? runtimeInitialization() : runtimeInitialization; }}).then(function() {{ return typeof __webpack_require__.I === \"function\" ? __webpack_require__.I(\"default\") : undefined; }}).then(function() {{", + RuntimeGlobals::EXPORTS + ) + .into(), + ); + buf2.push(" var handlers = [".into()); + buf2.push(" function(chunkId, promises) {".into()); + buf2.push(" return (__webpack_require__.f.consumes || function(chunkId, promises) {})(chunkId, promises);".into()); + buf2.push(" },".into()); + buf2.push(" function(chunkId, promises) {".into()); + buf2.push(" return (__webpack_require__.f.remotes || function(chunkId, promises) {})(chunkId, promises);".into()); + buf2.push(" }".into()); + buf2.push(" ];".into()); + buf2.push( + format!( + " return Promise.all(handlers.reduce(function(p, handler) {{ return handler({}, p), p; }}, promises));", + chunk_id_str + ) + .into(), + ); + buf2.push("}).then(function() {".into()); + if !all_chunk_ids.is_empty() { + buf2.push( + format!( + " return {}(0, {}, function() {{ return {}; }});", + RuntimeGlobals::STARTUP_ENTRYPOINT, + stringify_array(&all_chunk_ids), + entry_fn_body + ) + .into(), + ); + } else { + buf2.push(format!(" return {};", entry_fn_body).into()); + } + buf2.push("}).then(function(res) {".into()); + buf2.push( + format!( + " return typeof {} === \"function\" ? {}(res) : res;", + RuntimeGlobals::ON_CHUNKS_LOADED, + RuntimeGlobals::ON_CHUNKS_LOADED + ) + .into(), + ); + buf2.push("});".into()); } - if require_scope_used { + + allow_inline_startup = false; + startup.push(buf2.join("\n").into()); + } + } else { + let mut buf2: Vec> = Vec::new(); + buf2.push("// Load entry module and return exports".into()); + + let entries = compilation + .chunk_graph + .get_chunk_entry_modules_with_chunk_group_iterable(chunk_ukey); + + for (i, (module, entry)) in entries.iter().enumerate() { + let chunk_group = compilation.chunk_group_by_ukey.expect_get(entry); + let chunk_ids = chunk_group + .chunks + .iter() + .filter(|c| *c != chunk_ukey) + .map(|chunk_ukey| { + compilation + .chunk_by_ukey + .expect_get(chunk_ukey) + .expect_id(&compilation.chunk_ids_artifact) + .to_string() + }) + .collect::>(); + if allow_inline_startup && !chunk_ids.is_empty() { + buf2.push("// This entry module depends on other loaded chunks and execution need to be delayed".into()); + allow_inline_startup = false; + } + if allow_inline_startup && { + let module_graph = compilation.get_module_graph(); + let module_graph_cache = &compilation.module_graph_cache_artifact; + module_graph + .get_incoming_connections_by_origin_module(module) + .iter() + .any(|(origin_module, connections)| { + if let Some(origin_module) = origin_module { + connections.iter().any(|c| { + c.is_target_active(&module_graph, Some(chunk.runtime()), module_graph_cache) + }) && compilation + .chunk_graph + .get_module_runtimes_iter(*origin_module, &compilation.chunk_by_ukey) + .any(|runtime| runtime.intersection(chunk.runtime()).count() > 0) + } else { + false + } + }) + } { + buf2.push( + "// This entry module is referenced by other modules so it can't be inlined".into(), + ); + allow_inline_startup = false; + } + if allow_inline_startup && { + let codegen = compilation + .code_generation_results + .get(module, Some(chunk.runtime())); + let module_graph = compilation.get_module_graph(); + let top_level_decls = codegen + .data + .get::() + .map(|d| d.inner()) + .or_else(|| { + module_graph + .module_by_identifier(module) + .and_then(|m| m.build_info().top_level_declarations.as_ref()) + }); + top_level_decls.is_none() + } { + buf2.push("// This entry module doesn't tell about it's top-level declarations so it can't be inlined".into()); + allow_inline_startup = false; + } + let hooks = JsPlugin::get_compilation_hooks(compilation.id()); + let bailout = hooks + .try_read() + .expect("should have js plugin drive") + .inline_in_runtime_bailout + .call(compilation) + .await?; + if allow_inline_startup && let Some(bailout) = bailout { + buf2.push(format!("// This entry module can't be inlined because {bailout}").into()); + allow_inline_startup = false; + } + let entry_runtime_requirements = + ChunkGraph::get_module_runtime_requirements(compilation, *module, chunk.runtime()); + if allow_inline_startup + && let Some(entry_runtime_requirements) = entry_runtime_requirements + && entry_runtime_requirements.contains(RuntimeGlobals::MODULE) + { + allow_inline_startup = false; + buf2.push("// This entry module used 'module' so it can't be inlined".into()); + } + + let module_id = ChunkGraph::get_module_id(&compilation.module_ids_artifact, *module) + .expect("should have module id"); + let mut module_id_expr = serde_json::to_string(module_id).expect("invalid module_id"); + if runtime_requirements.contains(RuntimeGlobals::ENTRY_MODULE_ID) { + module_id_expr = format!("{} = {module_id_expr}", RuntimeGlobals::ENTRY_MODULE_ID); + } + + if !chunk_ids.is_empty() { + let on_chunks_loaded_callback = if supports_arrow_function { + format!("() => {}({module_id_expr})", RuntimeGlobals::REQUIRE) + } else { + format!( + "function() {{ return {}({module_id_expr}) }}", + RuntimeGlobals::REQUIRE + ) + }; buf2.push( format!( - "__webpack_modules__[{module_id_expr}](0, {}, {});", - if should_exec { - RuntimeGlobals::EXPORTS.name() + "{}{}(undefined, {}, {});", + if i + 1 == entries.len() { + format!("var {} = ", RuntimeGlobals::EXPORTS) } else { - "{}" + "".to_string() }, - RuntimeGlobals::REQUIRE + RuntimeGlobals::ON_CHUNKS_LOADED, + stringify_array(&chunk_ids), + on_chunks_loaded_callback ) .into(), ); - } else if let Some(entry_runtime_requirements) = entry_runtime_requirements - && entry_runtime_requirements.contains(RuntimeGlobals::EXPORTS) - { + } else if use_require { buf2.push( format!( - "__webpack_modules__[{module_id_expr}](0, {});", - if should_exec { - RuntimeGlobals::EXPORTS.name() + "{}{}({module_id_expr});", + if i + 1 == entries.len() { + format!("var {} = ", RuntimeGlobals::EXPORTS) } else { - "{}" - } + "".to_string() + }, + RuntimeGlobals::REQUIRE ) .into(), - ); + ) } else { - buf2.push(format!("__webpack_modules__[{module_id_expr}]();").into()); + let should_exec = i + 1 == entries.len(); + if should_exec { + buf2.push(format!("var {} = {{}}", RuntimeGlobals::EXPORTS).into()); + } + if require_scope_used { + buf2.push( + format!( + "__webpack_modules__[{module_id_expr}](0, {}, {});", + if should_exec { + RuntimeGlobals::EXPORTS.name() + } else { + "{}" + }, + RuntimeGlobals::REQUIRE + ) + .into(), + ); + } else if let Some(entry_runtime_requirements) = entry_runtime_requirements + && entry_runtime_requirements.contains(RuntimeGlobals::EXPORTS) + { + buf2.push( + format!( + "__webpack_modules__[{module_id_expr}](0, {});", + if should_exec { + RuntimeGlobals::EXPORTS.name() + } else { + "{}" + } + ) + .into(), + ); + } else { + buf2.push(format!("__webpack_modules__[{module_id_expr}]();").into()); + } } } - } - if runtime_requirements.contains(RuntimeGlobals::ON_CHUNKS_LOADED) { - buf2.push( - format!( - "__webpack_exports__ = {}(__webpack_exports__);", - RuntimeGlobals::ON_CHUNKS_LOADED - ) - .into(), - ); - } - if runtime_requirements.contains(RuntimeGlobals::STARTUP) { - allow_inline_startup = false; - header.push( - format!( - "// the startup function\n{} = {};\n", - RuntimeGlobals::STARTUP, - basic_function( - &compilation.options.output.environment, - "", - &format!("{}\nreturn {}", buf2.join("\n"), RuntimeGlobals::EXPORTS) + + if runtime_requirements.contains(RuntimeGlobals::ON_CHUNKS_LOADED) { + buf2.push( + format!( + "__webpack_exports__ = {}(__webpack_exports__);", + RuntimeGlobals::ON_CHUNKS_LOADED ) - ) - .into(), - ); - startup.push("// run startup".into()); - startup.push( - format!( - "var {} = {}();", - RuntimeGlobals::EXPORTS, - RuntimeGlobals::STARTUP - ) - .into(), - ); - } else { - startup.push("// startup".into()); - startup.push(buf2.join("\n").into()); + .into(), + ); + } + if runtime_requirements.contains(RuntimeGlobals::STARTUP) { + allow_inline_startup = false; + header.push( + format!( + "// the startup function\n{} = {};\n", + RuntimeGlobals::STARTUP, + basic_function( + &compilation.options.output.environment, + "", + &format!("{}\nreturn {}", buf2.join("\n"), RuntimeGlobals::EXPORTS) + ) + ) + .into(), + ); + startup.push("// run startup".into()); + startup.push( + format!( + "var {} = {}();", + RuntimeGlobals::EXPORTS, + RuntimeGlobals::STARTUP + ) + .into(), + ); + } else if runtime_requirements.contains(RuntimeGlobals::STARTUP_ENTRYPOINT) { + allow_inline_startup = false; + header.push( + format!( + "// the startup function (async)\n{} = {};\n", + RuntimeGlobals::STARTUP_ENTRYPOINT, + basic_function( + &compilation.options.output.environment, + "", + &format!("{}\nreturn {}", buf2.join("\n"), RuntimeGlobals::EXPORTS) + ) + ) + .into(), + ); + startup.push("// run startup".into()); + startup.push( + format!( + "var {} = {}();", + RuntimeGlobals::EXPORTS, + RuntimeGlobals::STARTUP_ENTRYPOINT + ) + .into(), + ); + } else { + startup.push("// startup".into()); + startup.push(buf2.join("\n").into()); + } } + } else if runtime_requirements.contains(RuntimeGlobals::STARTUP_ENTRYPOINT) { + // Mark that async federation startup is active for this chunk (runtime chunk without entry) + mf_async_startup = true; + header.push( + format!( + "// the startup function (async)\n// It's empty as no entry modules are in this chunk\n{} = function(){{}};", + RuntimeGlobals::STARTUP_ENTRYPOINT + ) + .into(), + ); } else if runtime_requirements.contains(RuntimeGlobals::STARTUP) { header.push( format!( @@ -541,6 +891,15 @@ impl JsPlugin { .into(), ); } + } else if runtime_requirements.contains(RuntimeGlobals::STARTUP_ENTRYPOINT) { + startup.push("// run startup".into()); + startup.push( + format!( + "var __webpack_exports__ = {}();", + RuntimeGlobals::STARTUP_ENTRYPOINT + ) + .into(), + ); } else if runtime_requirements.contains(RuntimeGlobals::STARTUP) { header.push( format!( @@ -557,6 +916,7 @@ impl JsPlugin { header, startup, allow_inline_startup, + mf_async_startup, }) } @@ -584,6 +944,7 @@ impl JsPlugin { header, startup, allow_inline_startup, + mf_async_startup: _mf_async_startup, } = Self::render_bootstrap(chunk_ukey, compilation).await?; let module_graph = &compilation.get_module_graph(); let all_modules = compilation.chunk_graph.get_chunk_modules_by_source_type( @@ -814,9 +1175,123 @@ impl JsPlugin { .keys() .next_back() { - let mut render_source = RenderSource { - source: RawStringSource::from(startup.join("\n") + "\n").boxed(), + // Determine if this chunk already received the async federation bootstrap. + // Rely exclusively on structured runtime requirement set by MF plugin. + let has_async_federation_wrapper = + runtime_requirements.contains(RuntimeGlobals::ASYNC_FEDERATION_STARTUP); + // Only generate fallback wrapper when async startup is requested for this chunk + // and MF plugin didn't mark it as already handled. + let needs_federation = runtime_requirements.contains(RuntimeGlobals::STARTUP_ENTRYPOINT) + && !has_async_federation_wrapper; + let startup_global = RuntimeGlobals::STARTUP_ENTRYPOINT; + let is_esm_output = compilation.options.output.module; + + let startup_str = startup.join("\n"); + + let source = if has_async_federation_wrapper { + RawStringSource::from(startup_str.clone() + "\n").boxed() + } else if needs_federation && is_esm_output { + // ESM async mode with federation - use top-level await + let chunk_id = chunk.expect_id(&compilation.chunk_ids_artifact); + let chunk_id_str = serde_json::to_string(chunk_id).expect("invalid chunk_id"); + + let mut result = ConcatSource::default(); + + // Add federation initialization using top-level await + result.add(RawStringSource::from( + "// Federation async initialization\n", + )); + result.add(RawStringSource::from("await (async () => {\n")); + result.add(RawStringSource::from(format!( + " if (typeof {} === 'function') {{\n", + startup_global + ))); + result.add(RawStringSource::from(format!( + " await {}();\n", + startup_global + ))); + result.add(RawStringSource::from(" }\n")); + result.add(RawStringSource::from(" const promises = [];\n")); + result.add(RawStringSource::from(" const handlers = [\n")); + result.add(RawStringSource::from(" function(chunkId, promises) {\n")); + result.add(RawStringSource::from(" return (__webpack_require__.f.consumes || function(chunkId, promises) {})(chunkId, promises);\n")); + result.add(RawStringSource::from(" },\n")); + result.add(RawStringSource::from(" function(chunkId, promises) {\n")); + result.add(RawStringSource::from(" return (__webpack_require__.f.remotes || function(chunkId, promises) {})(chunkId, promises);\n")); + result.add(RawStringSource::from(" }\n")); + result.add(RawStringSource::from(" ];\n")); + result.add(RawStringSource::from(format!( + " await Promise.all(handlers.reduce(function(p, handler) {{ return handler({}, p), p; }}, promises));\n", + chunk_id_str + ))); + result.add(RawStringSource::from("})();\n\n")); + + // Add the original startup code + result.add(RawStringSource::from(startup_str)); + result.add(RawStringSource::from("\n")); + + result.boxed() + } else if needs_federation && !is_esm_output { + // CJS output with federation - use Promise chain + let chunk_id = chunk.expect_id(&compilation.chunk_ids_artifact); + let chunk_id_str = serde_json::to_string(chunk_id).expect("invalid chunk_id"); + + let mut result = ConcatSource::default(); + + result.add(RawStringSource::from( + "\n// Initialize federation runtime\n", + )); + result.add(RawStringSource::from( + "var runtimeInitialization = undefined;\n", + )); + result.add(RawStringSource::from(format!( + "if (typeof {} === 'function') {{\n", + startup_global + ))); + result.add(RawStringSource::from(format!( + " runtimeInitialization = {};\n", + startup_global + ))); + result.add(RawStringSource::from("}\n")); + result.add(RawStringSource::from("var promises = [];\n")); + result.add(RawStringSource::from(format!( + "var {} = Promise.resolve().then(function() {{ return typeof runtimeInitialization === 'function' ? runtimeInitialization() : runtimeInitialization; }}).then(function() {{ return typeof __webpack_require__.I === 'function' ? __webpack_require__.I('default') : undefined; }}).then(function() {{\n", + RuntimeGlobals::EXPORTS.name() + ))); + result.add(RawStringSource::from( + " if (__webpack_require__.federation && __webpack_require__.federation.bundlerRuntime && typeof __webpack_require__.federation.bundlerRuntime.flushInitialConsumes === 'function') {\n", + )); + result.add(RawStringSource::from( + " __webpack_require__.federation.bundlerRuntime.flushInitialConsumes();\n", + )); + result.add(RawStringSource::from(" }\n")); + result.add(RawStringSource::from(" var handlers = [\n")); + result.add(RawStringSource::from(" function(chunkId, promises) {\n")); + result.add(RawStringSource::from(" return (__webpack_require__.f.consumes || function(chunkId, promises) {})(chunkId, promises);\n")); + result.add(RawStringSource::from(" },\n")); + result.add(RawStringSource::from(" function(chunkId, promises) {\n")); + result.add(RawStringSource::from(" return (__webpack_require__.f.remotes || function(chunkId, promises) {})(chunkId, promises);\n")); + result.add(RawStringSource::from(" }\n")); + result.add(RawStringSource::from(" ];\n")); + result.add(RawStringSource::from(format!( + " return Promise.all(handlers.reduce(function(p, handler) {{ return handler({}, p), p; }}, promises));\n", + chunk_id_str + ))); + result.add(RawStringSource::from("}).then(function() {\n")); + result.add(RawStringSource::from(" return (function() {\n")); + result.add(RawStringSource::from(format!(" {}\n", startup_str))); + result.add(RawStringSource::from(" return __webpack_exports__;\n")); + result.add(RawStringSource::from(" })();\n")); + result.add(RawStringSource::from("});\n")); + + result.boxed() + } else { + // Normal case - no federation + RawStringSource::from(startup_str + "\n").boxed() }; + + // Still call render_startup hook for other plugins that might need it + let mut render_source = RenderSource { source }; hooks .render_startup .call( @@ -1302,6 +1777,7 @@ impl JsPlugin { header, startup, allow_inline_startup, + mf_async_startup: _, } = Self::render_bootstrap(chunk_ukey, compilation).await?; header.hash(hasher); startup.hash(hasher); @@ -1321,4 +1797,5 @@ pub struct RenderBootstrapResult<'a> { pub header: Vec>, pub startup: Vec>, pub allow_inline_startup: bool, + pub mf_async_startup: bool, } diff --git a/crates/rspack_plugin_mf/Cargo.toml b/crates/rspack_plugin_mf/Cargo.toml index 08998955fb37..87b15dc41036 100644 --- a/crates/rspack_plugin_mf/Cargo.toml +++ b/crates/rspack_plugin_mf/Cargo.toml @@ -18,7 +18,6 @@ rspack_hook = { workspace = true } rspack_loader_runner = { workspace = true } rspack_plugin_javascript = { workspace = true } rspack_plugin_runtime = { workspace = true } -rspack_sources = { workspace = true } rspack_util = { workspace = true } async-trait = { workspace = true } @@ -36,5 +35,5 @@ tracing = { workspace = true } ignored = ["tracing", "rspack_hash"] [lints.rust.unexpected_cfgs] -level = "warn" check-cfg = ['cfg(allocative)'] +level = "warn" diff --git a/crates/rspack_plugin_mf/src/container/embed_federation_runtime_module.rs b/crates/rspack_plugin_mf/src/container/embed_federation_runtime_module.rs index 01cff8655b8e..164eb1db299b 100644 --- a/crates/rspack_plugin_mf/src/container/embed_federation_runtime_module.rs +++ b/crates/rspack_plugin_mf/src/container/embed_federation_runtime_module.rs @@ -16,6 +16,7 @@ use rspack_error::Result; #[derive(Debug, Default, Clone, Hash, PartialEq, Eq)] pub struct EmbedFederationRuntimeModuleOptions { pub collected_dependency_ids: Vec, + pub async_startup: bool, } #[impl_runtime_module] @@ -87,24 +88,58 @@ impl RuntimeModule for EmbedFederationRuntimeModule { module_executions.pop(); } - // Generate prevStartup wrapper pattern with defensive checks - let startup = RuntimeGlobals::STARTUP.name(); - let result = format!( - r#"var prevStartup = {startup}; -var hasRun = false; -{startup} = function() {{ - if (!hasRun) {{ - hasRun = true; -{module_executions} - }} - if (typeof prevStartup === 'function') {{ - return prevStartup(); - }} else {{ - console.warn('[MF] Invalid prevStartup'); - }} -}};"# + let module_exec_body = if module_executions.is_empty() { + "\t// no federation runtime modules to execute\n".to_string() + } else { + format!("{module_executions}\n") + }; + + let run_function = format!( + "function runFederationRuntime() {{\n\tif (hasRun) return;\n\thasRun = true;\n{module_exec_body}}}\n", + module_exec_body = module_exec_body ); + let install_chunk = RuntimeGlobals::EXTERNAL_INSTALL_CHUNK.name(); + + // Generate wrapper pattern ensuring federation runtime executes before startup or chunk installation runs + let mut result = String::new(); + if self.options.async_startup { + let startup = RuntimeGlobals::STARTUP_ENTRYPOINT.name(); + result.push_str(&format!("var prevStartup = {};\n", startup)); + result.push_str("var hasRun = false;\n"); + result.push_str("var __mfInitialConsumes;\n"); + result.push_str( + "function __mfSetupInitialConsumesDeferral() {\n\tvar runtime = __webpack_require__.federation && __webpack_require__.federation.bundlerRuntime;\n\tif (!runtime || typeof runtime.installInitialConsumes !== 'function') return;\n\tvar origInstallInitialConsumes = runtime.installInitialConsumes;\n\truntime.installInitialConsumes = function(opts) { __mfInitialConsumes = opts; };\n\truntime.flushInitialConsumes = function() { if (__mfInitialConsumes) { var opts = __mfInitialConsumes; __mfInitialConsumes = undefined; return origInstallInitialConsumes(opts); } };\n}\n", + ); + result.push_str(&run_function); + result.push_str(&format!( + "{startup} = function() {{\n\trunFederationRuntime();\n\t__mfSetupInitialConsumesDeferral();\n\tif (typeof prevStartup === 'function') {{\n\t\treturn prevStartup.apply(this, arguments);\n\t}} else {{\n\t\tconsole.warn('[MF] Invalid prevStartup');\n\t}}\n}};\n", + startup = startup + )); + } else { + let startup = RuntimeGlobals::STARTUP.name(); + result.push_str(&format!("var prevStartup = {startup};\n")); + result.push_str("var hasRun = false;\n"); + result.push_str(&run_function); + result.push_str(&format!( + "{startup} = function() {{\n\trunFederationRuntime();\n\tif (typeof prevStartup === 'function') {{\n\t\treturn prevStartup.apply(this, arguments);\n\t}} else {{\n\t\tconsole.warn('[MF] Invalid prevStartup');\n\t}}\n}};\n", + startup = startup + )); + } + + result.push_str(&format!( + "var prevExternalInstallChunk = {install_chunk};\nif (typeof prevExternalInstallChunk === 'function') {{\n\t{install_chunk} = function() {{\n\t\trunFederationRuntime();\n\t\treturn prevExternalInstallChunk.apply(this, arguments);\n\t}};\n}}\n", + install_chunk = install_chunk + )); + + // For async startup we defer executing the federation runtime until the + // async startup entrypoint runs (or a chunk install occurs) so that share + // scope initialization can complete first. In sync mode we keep the eager + // execution to match the legacy bootstrap order. + if !self.options.async_startup { + result.push_str("runFederationRuntime();\n"); + } + Ok(result) } diff --git a/crates/rspack_plugin_mf/src/container/embed_federation_runtime_plugin.rs b/crates/rspack_plugin_mf/src/container/embed_federation_runtime_plugin.rs index 18a511f47cc9..1f80f46b5df3 100644 --- a/crates/rspack_plugin_mf/src/container/embed_federation_runtime_plugin.rs +++ b/crates/rspack_plugin_mf/src/container/embed_federation_runtime_plugin.rs @@ -7,14 +7,15 @@ use std::sync::{Arc, Mutex}; use rspack_core::{ - ChunkUkey, Compilation, CompilationAdditionalChunkRuntimeRequirements, CompilationParams, + ChunkUkey, Compilation, CompilationAdditionalChunkRuntimeRequirements, + CompilationAdditionalTreeRuntimeRequirements, CompilationParams, CompilationRuntimeRequirementInTree, CompilerCompilation, DependencyId, ModuleIdentifier, Plugin, RuntimeGlobals, + rspack_sources::{ConcatSource, RawStringSource, SourceExt}, }; use rspack_error::Result; use rspack_hook::{plugin, plugin_hook}; use rspack_plugin_javascript::{JavascriptModulesRenderStartup, JsPlugin, RenderSource}; -use rspack_sources::{ConcatSource, RawStringSource, SourceExt}; use rustc_hash::FxHashSet; use super::{ @@ -44,12 +45,13 @@ impl AddFederationRuntimeDependencyHook for FederationRuntimeDependencyCollector #[plugin] #[derive(Debug)] pub struct EmbedFederationRuntimePlugin { + async_startup: bool, collected_dependency_ids: Arc>>, } impl EmbedFederationRuntimePlugin { - pub fn new() -> Self { - Self::new_inner(Arc::new(Mutex::new(FxHashSet::default()))) + pub fn new(async_startup: bool) -> Self { + Self::new_inner(async_startup, Arc::new(Mutex::new(FxHashSet::default()))) } } @@ -60,6 +62,7 @@ async fn additional_chunk_runtime_requirements_tree( chunk_ukey: &ChunkUkey, runtime_requirements: &mut RuntimeGlobals, ) -> Result<()> { + let debug_async = std::env::var("RSPACK_DEBUG_MF_ASYNC").is_ok(); let chunk = compilation.chunk_by_ukey.expect_get(chunk_ukey); // Skip build time chunks @@ -76,12 +79,80 @@ async fn additional_chunk_runtime_requirements_tree( // Federation is enabled for runtime chunks or entry chunks let is_enabled = has_runtime || has_entry_modules; + let use_async_startup = self.async_startup; if is_enabled { - // Add STARTUP requirement + // Add STARTUP or STARTUP_ENTRYPOINT based on mf_async_startup experiment. + // We intentionally do NOT gate on collected federation dependencies here, + // because entry chunks that delegate to a shared runtime still need the startup + // wrapper even when federation runtime is only present in the runtime chunk. + if use_async_startup { + runtime_requirements.insert(RuntimeGlobals::STARTUP_ENTRYPOINT); + runtime_requirements.insert(RuntimeGlobals::ENSURE_CHUNK_HANDLERS); + runtime_requirements.insert(RuntimeGlobals::ASYNC_FEDERATION_STARTUP); + } else { + runtime_requirements.insert(RuntimeGlobals::STARTUP); + } + + if debug_async { + eprintln!( + "[mf-async] chunk {:?} has_runtime={} has_entry={} async={} reqs={:?}", + chunk_ukey, has_runtime, has_entry_modules, use_async_startup, runtime_requirements + ); + } + } + + Ok(()) +} + +#[plugin_hook(CompilationAdditionalTreeRuntimeRequirements for EmbedFederationRuntimePlugin)] +async fn additional_tree_runtime_requirements( + &self, + compilation: &mut Compilation, + chunk_ukey: &ChunkUkey, + runtime_requirements: &mut RuntimeGlobals, +) -> Result<()> { + let debug_async = std::env::var("RSPACK_DEBUG_MF_ASYNC").is_ok(); + let chunk = compilation.chunk_by_ukey.expect_get(chunk_ukey); + + // Skip build time chunks + if chunk.name() == Some("build time chunk") { + return Ok(()); + } + + // Check if chunk needs federation runtime support + let has_entry_modules = compilation + .chunk_graph + .get_number_of_entry_modules(chunk_ukey) + > 0; + + // Only add requirements for entry chunks (non-runtime chunks with entries) + let has_runtime = chunk.has_runtime(&compilation.chunk_group_by_ukey); + if has_runtime || !has_entry_modules { + return Ok(()); + } + + let use_async_startup = self.async_startup; + + if use_async_startup { + runtime_requirements.insert(RuntimeGlobals::STARTUP_ENTRYPOINT); + runtime_requirements.insert(RuntimeGlobals::ENSURE_CHUNK_HANDLERS); + runtime_requirements.insert(RuntimeGlobals::ASYNC_FEDERATION_STARTUP); + } else { runtime_requirements.insert(RuntimeGlobals::STARTUP); } + if debug_async { + eprintln!( + "[mf-async] tree req chunk {:?} has_runtime={} has_entry={} async={} reqs={:?}", + chunk_ukey, + chunk.has_runtime(&compilation.chunk_group_by_ukey), + has_entry_modules, + use_async_startup, + runtime_requirements + ); + } + Ok(()) } @@ -101,10 +172,17 @@ async fn runtime_requirement_in_tree( return Ok(None); } - // Only inject EmbedFederationRuntimeModule into runtime chunks + // Inject EmbedFederationRuntimeModule into runtime chunks. Also inject into + // entry chunks when async startup is enabled so the runtime wrapper can + // override startup before the entry executes (ensures async requirements are + // visible to sharing runtime modules). let has_runtime = chunk.has_runtime(&compilation.chunk_group_by_ukey); - if has_runtime { - // Collect federation dependencies snapshot + let has_entry_modules = compilation + .chunk_graph + .get_number_of_entry_modules(chunk_ukey) + > 0; + + if has_runtime || (self.async_startup && has_entry_modules) { let collected_ids_snapshot = self .collected_dependency_ids .lock() @@ -115,9 +193,9 @@ async fn runtime_requirement_in_tree( let emro = EmbedFederationRuntimeModuleOptions { collected_dependency_ids: collected_ids_snapshot, + async_startup: self.async_startup, }; - // Inject EmbedFederationRuntimeModule compilation.add_runtime_module( chunk_ukey, Box::new(EmbedFederationRuntimeModule::new(emro)), @@ -145,7 +223,7 @@ async fn compilation( .await .tap(collector); - // Register render startup hook, patches entrypoints + // Register render startup hook to patch entrypoints when needed let js_hooks = JsPlugin::get_compilation_hooks_mut(compilation.id()); js_hooks .write() @@ -164,6 +242,7 @@ async fn render_startup( _module: &ModuleIdentifier, render_source: &mut RenderSource, ) -> Result<()> { + let debug_async = std::env::var("RSPACK_DEBUG_MF_ASYNC").is_ok(); let chunk = compilation.chunk_by_ukey.expect_get(chunk_ukey); // Skip build time chunks @@ -181,7 +260,7 @@ async fn render_startup( .collect::>(); let has_federation_deps = !collected_deps.is_empty(); - if !has_federation_deps { + if !self.async_startup && !has_federation_deps { return Ok(()); } @@ -191,11 +270,6 @@ async fn render_startup( .get_number_of_entry_modules(chunk_ukey) > 0; - // Runtime chunks with entry modules: JavaScript plugin handles startup naturally - if has_runtime && has_entry_modules { - return Ok(()); - } - // Entry chunks delegating to runtime need explicit startup calls if !has_runtime && has_entry_modules { let mut startup_with_call = ConcatSource::default(); @@ -204,15 +278,27 @@ async fn render_startup( startup_with_call.add(RawStringSource::from_static( "\n// Federation startup call\n", )); - startup_with_call.add(RawStringSource::from(format!( - "{}();\n", + // Async startup uses STARTUP_ENTRYPOINT; otherwise fall back to the + // synchronous STARTUP global to preserve existing distribution of + // `__webpack_require__.x`. + let startup_global = if self.async_startup { + RuntimeGlobals::STARTUP_ENTRYPOINT.name() + } else { RuntimeGlobals::STARTUP.name() - ))); + }; + startup_with_call.add(RawStringSource::from(format!("{startup_global}();\n"))); startup_with_call.add(render_source.source.clone()); render_source.source = startup_with_call.boxed(); } + if debug_async { + eprintln!( + "[mf-async] render_startup chunk {:?} async={} has_runtime={} has_entry={} deps_present={}", + chunk_ukey, self.async_startup, has_runtime, has_entry_modules, has_federation_deps + ); + } + Ok(()) } @@ -227,6 +313,10 @@ impl Plugin for EmbedFederationRuntimePlugin { .compilation_hooks .additional_chunk_runtime_requirements .tap(additional_chunk_runtime_requirements_tree::new(self)); + ctx + .compilation_hooks + .additional_tree_runtime_requirements + .tap(additional_tree_runtime_requirements::new(self)); ctx .compilation_hooks .runtime_requirement_in_tree @@ -237,6 +327,6 @@ impl Plugin for EmbedFederationRuntimePlugin { impl Default for EmbedFederationRuntimePlugin { fn default() -> Self { - Self::new() + Self::new(false) } } diff --git a/crates/rspack_plugin_mf/src/container/module_federation_runtime_plugin.rs b/crates/rspack_plugin_mf/src/container/module_federation_runtime_plugin.rs index ea1fc35583dc..0768ffd8c2b5 100644 --- a/crates/rspack_plugin_mf/src/container/module_federation_runtime_plugin.rs +++ b/crates/rspack_plugin_mf/src/container/module_federation_runtime_plugin.rs @@ -22,6 +22,14 @@ use super::{ #[derive(Debug, Default, Deserialize, Clone)] pub struct ModuleFederationRuntimePluginOptions { pub entry_runtime: Option, + #[serde(default)] + pub experiments: ModuleFederationRuntimeExperimentsOptions, +} + +#[derive(Debug, Default, Deserialize, Clone)] +pub struct ModuleFederationRuntimeExperimentsOptions { + #[serde(default)] + pub async_startup: bool, } #[plugin] @@ -87,7 +95,8 @@ impl Plugin for ModuleFederationRuntimePlugin { ctx.compiler_hooks.finish_make.tap(finish_make::new(self)); // Apply supporting plugins - EmbedFederationRuntimePlugin::default().apply(ctx)?; + let async_startup = self.options.experiments.async_startup; + EmbedFederationRuntimePlugin::new(async_startup).apply(ctx)?; HoistContainerReferencesPlugin::default().apply(ctx)?; Ok(()) diff --git a/crates/rspack_plugin_mf/src/lib.rs b/crates/rspack_plugin_mf/src/lib.rs index 2c079ace82da..fab355eb5ce8 100644 --- a/crates/rspack_plugin_mf/src/lib.rs +++ b/crates/rspack_plugin_mf/src/lib.rs @@ -7,8 +7,10 @@ pub use container::{ container_reference_plugin::{ ContainerReferencePlugin, ContainerReferencePluginOptions, RemoteOptions, }, + embed_federation_runtime_module::EmbedFederationRuntimeModule, module_federation_runtime_plugin::{ - ModuleFederationRuntimePlugin, ModuleFederationRuntimePluginOptions, + ModuleFederationRuntimeExperimentsOptions, ModuleFederationRuntimePlugin, + ModuleFederationRuntimePluginOptions, }, }; pub use manifest::{ diff --git a/crates/rspack_plugin_mf/src/sharing/consume_shared_plugin.rs b/crates/rspack_plugin_mf/src/sharing/consume_shared_plugin.rs index f95c99e4370a..331ccf048af1 100644 --- a/crates/rspack_plugin_mf/src/sharing/consume_shared_plugin.rs +++ b/crates/rspack_plugin_mf/src/sharing/consume_shared_plugin.rs @@ -160,6 +160,7 @@ fn get_required_version_from_description_file( pub struct ConsumeSharedPluginOptions { pub consumes: Vec<(String, Arc)>, pub enhanced: bool, + pub async_startup: bool, } #[plugin] @@ -485,7 +486,10 @@ async fn additional_tree_runtime_requirements( runtime_requirements.insert(RuntimeGlobals::HAS_OWN_PROPERTY); compilation.add_runtime_module( chunk_ukey, - Box::new(ConsumeSharedRuntimeModule::new(self.options.enhanced)), + Box::new(ConsumeSharedRuntimeModule::new( + self.options.enhanced, + self.options.async_startup, + )), )?; Ok(()) } diff --git a/crates/rspack_plugin_mf/src/sharing/consume_shared_runtime_module.rs b/crates/rspack_plugin_mf/src/sharing/consume_shared_runtime_module.rs index 081004d6f7ec..af85f23b3f3e 100644 --- a/crates/rspack_plugin_mf/src/sharing/consume_shared_runtime_module.rs +++ b/crates/rspack_plugin_mf/src/sharing/consume_shared_runtime_module.rs @@ -14,14 +14,16 @@ pub struct ConsumeSharedRuntimeModule { id: Identifier, chunk: Option, enhanced: bool, + async_startup: bool, } impl ConsumeSharedRuntimeModule { - pub fn new(enhanced: bool) -> Self { + pub fn new(enhanced: bool, async_startup: bool) -> Self { Self::with_default( Identifier::from("webpack/runtime/consumes_loading"), None, enhanced, + async_startup, ) } } @@ -37,10 +39,22 @@ impl RuntimeModule for ConsumeSharedRuntimeModule { } async fn generate(&self, compilation: &Compilation) -> rspack_error::Result { + let debug_async = std::env::var("RSPACK_DEBUG_MF_ASYNC").is_ok(); let chunk_ukey = self .chunk .expect("should have chunk in ::generate"); let chunk = compilation.chunk_by_ukey.expect_get(&chunk_ukey); + // Detect async federation startup globally. Older bootstraps set the + // bespoke ASYNC_FEDERATION_STARTUP requirement, but the current async + // startup path is keyed off STARTUP_ENTRYPOINT. Treat either as a signal + // that startup is async so we can avoid emitting eager initialConsumes that + // would call loadShareSync synchronously. + let async_federation_startup = self.async_startup + || compilation.chunk_by_ukey.keys().any(|ukey| { + let reqs = ChunkGraph::get_chunk_runtime_requirements(compilation, ukey); + reqs.contains(RuntimeGlobals::ASYNC_FEDERATION_STARTUP) + || reqs.contains(RuntimeGlobals::STARTUP_ENTRYPOINT) + }); let module_graph = compilation.get_module_graph(); let mut chunk_to_module_mapping = FxHashMap::default(); let mut module_id_to_consume_data_mapping = FxHashMap::default(); @@ -91,17 +105,19 @@ impl RuntimeModule for ConsumeSharedRuntimeModule { ids, ); } - for chunk in chunk.get_all_initial_chunks(&compilation.chunk_group_by_ukey) { - let modules = compilation - .chunk_graph - .get_chunk_modules_identifier_by_source_type( - &chunk, - SourceType::ConsumeShared, - &module_graph, - ); - let chunk = compilation.chunk_by_ukey.expect_get(&chunk); - for mid in modules { - add_module(mid, chunk, &mut initial_consumes); + if !async_federation_startup { + for chunk in chunk.get_all_initial_chunks(&compilation.chunk_group_by_ukey) { + let modules = compilation + .chunk_graph + .get_chunk_modules_identifier_by_source_type( + &chunk, + SourceType::ConsumeShared, + &module_graph, + ); + let chunk = compilation.chunk_by_ukey.expect_get(&chunk); + for mid in modules { + add_module(mid, chunk, &mut initial_consumes); + } } } let module_id_to_consume_data_mapping = if module_id_to_consume_data_mapping.is_empty() { @@ -121,11 +137,20 @@ impl RuntimeModule for ConsumeSharedRuntimeModule { } else { json_stringify(&chunk_to_module_mapping) }; - let initial_consumes_json = if initial_consumes.is_empty() { + let initial_consumes_json = if async_federation_startup || initial_consumes.is_empty() { "[]".to_string() } else { json_stringify(&initial_consumes) }; + if debug_async { + eprintln!( + "[mf-async] consumes runtime chunk {:?} async_startup={} detected_global_async={} initial_count={}", + chunk_ukey, + self.async_startup, + async_federation_startup, + initial_consumes.len() + ); + } let mut source = format!( r#" __webpack_require__.consumesLoadingData = {{ chunkMapping: {chunk_mapping}, moduleIdToConsumeDataMapping: {module_to_consume_data_mapping}, initialConsumes: {initial_consumes_json} }}; @@ -134,18 +159,31 @@ __webpack_require__.consumesLoadingData = {{ chunkMapping: {chunk_mapping}, modu module_to_consume_data_mapping = module_id_to_consume_data_mapping, initial_consumes_json = initial_consumes_json, ); + + // In async startup we must avoid any synchronous loadShareSync paths. Emit + // only the async loading handler and skip the synchronous initialConsumes + // installer entirely (even if the list were populated) to ensure consumes + // resolve via promises. + let async_mode = async_federation_startup; + if self.enhanced { if ChunkGraph::get_chunk_runtime_requirements(compilation, &chunk_ukey) .contains(RuntimeGlobals::ENSURE_CHUNK_HANDLERS) { - source += "__webpack_require__.f.consumes = __webpack_require__.f.consumes || function() { throw new Error(\"should have __webpack_require__.f.consumes\") }"; + source += "__webpack_require__.f.consumes = __webpack_require__.f.consumes || function() { throw new Error(\"should have __webpack_require__.f.consumes\") };\n"; } return Ok(source); } + + // Always include the common runtime helpers so the consumes loader has the + // shared state it expects (e.g. `installedModules`), even when async startup + // is active. Skip the synchronous initial consumes installer in async mode + // to avoid eager loadShareSync. source += include_str!("./consumesCommon.js"); - if !initial_consumes.is_empty() { + if !async_mode && !initial_consumes.is_empty() { source += include_str!("./consumesInitial.js"); } + if ChunkGraph::get_chunk_runtime_requirements(compilation, &chunk_ukey) .contains(RuntimeGlobals::ENSURE_CHUNK_HANDLERS) { diff --git a/crates/rspack_plugin_mf/src/sharing/share_runtime_module.rs b/crates/rspack_plugin_mf/src/sharing/share_runtime_module.rs index 6b6c5c1f738c..f16d4f97f074 100644 --- a/crates/rspack_plugin_mf/src/sharing/share_runtime_module.rs +++ b/crates/rspack_plugin_mf/src/sharing/share_runtime_module.rs @@ -2,7 +2,8 @@ use hashlink::{LinkedHashMap, LinkedHashSet}; use itertools::Itertools; use rspack_collections::Identifier; use rspack_core::{ - ChunkUkey, Compilation, ModuleId, RuntimeGlobals, RuntimeModule, SourceType, impl_runtime_module, + ChunkGraph, ChunkUkey, Compilation, ModuleId, RuntimeGlobals, RuntimeModule, SourceType, + impl_runtime_module, }; use rustc_hash::FxHashMap; @@ -103,9 +104,17 @@ impl RuntimeModule for ShareRuntimeModule { }) .collect::>() .join(", "); - let initialize_sharing_impl = if self.enhanced { + let chunk_runtime_requirements = + ChunkGraph::get_chunk_runtime_requirements(compilation, &chunk_ukey); + let async_federation_startup = chunk_runtime_requirements + .contains(RuntimeGlobals::ASYNC_FEDERATION_STARTUP) + || chunk_runtime_requirements.contains(RuntimeGlobals::STARTUP_ENTRYPOINT); + + let initialize_sharing_impl = if self.enhanced && !async_federation_startup { "__webpack_require__.I = __webpack_require__.I || function() { throw new Error(\"should have __webpack_require__.I\") }" } else { + // In async startup we must keep the full async-capable initialization logic + // to ensure share scopes are ready before loadShareSync is invoked. include_str!("./initializeSharing.js") }; Ok(format!( diff --git a/crates/rspack_plugin_runtime/Cargo.toml b/crates/rspack_plugin_runtime/Cargo.toml index 2009e6156d5c..e1c4e94786d7 100644 --- a/crates/rspack_plugin_runtime/Cargo.toml +++ b/crates/rspack_plugin_runtime/Cargo.toml @@ -33,5 +33,5 @@ tracing = { workspace = true } ignored = ["tracing", "tokio"] [lints.rust.unexpected_cfgs] -level = "warn" check-cfg = ['cfg(allocative)'] +level = "warn" diff --git a/crates/rspack_plugin_runtime/src/array_push_callback_chunk_format.rs b/crates/rspack_plugin_runtime/src/array_push_callback_chunk_format.rs index 9f58b4fe2c79..22bb73c6f675 100644 --- a/crates/rspack_plugin_runtime/src/array_push_callback_chunk_format.rs +++ b/crates/rspack_plugin_runtime/src/array_push_callback_chunk_format.rs @@ -53,7 +53,9 @@ async fn additional_chunk_runtime_requirements( .get_number_of_entry_modules(chunk_ukey) > 0 { - runtime_requirements.insert(RuntimeGlobals::ON_CHUNKS_LOADED); + if !runtime_requirements.contains(RuntimeGlobals::STARTUP_ENTRYPOINT) { + runtime_requirements.insert(RuntimeGlobals::ON_CHUNKS_LOADED); + } runtime_requirements.insert(RuntimeGlobals::EXPORTS); runtime_requirements.insert(RuntimeGlobals::REQUIRE); } @@ -148,7 +150,10 @@ async fn render_chunk( let entries = compilation .chunk_graph .get_chunk_entry_modules_with_chunk_group_iterable(chunk_ukey); - let start_up_source = generate_entry_startup(compilation, chunk_ukey, entries, true); + let runtime_requirements = + ChunkGraph::get_tree_runtime_requirements(compilation, chunk_ukey); + let passive = !runtime_requirements.contains(RuntimeGlobals::STARTUP_ENTRYPOINT); + let start_up_source = generate_entry_startup(compilation, chunk_ukey, entries, passive); let last_entry_module = entries .keys() .next_back() @@ -168,8 +173,6 @@ async fn render_chunk( ) .await?; source.add(render_source.source); - let runtime_requirements = - ChunkGraph::get_tree_runtime_requirements(compilation, chunk_ukey); if runtime_requirements.contains(RuntimeGlobals::RETURN_EXPORTS_FROM_RUNTIME) { source.add(RawStringSource::from_static( "return __webpack_exports__;\n", diff --git a/crates/rspack_plugin_runtime/src/common_js_chunk_loading.rs b/crates/rspack_plugin_runtime/src/common_js_chunk_loading.rs index b2ddf99f3f74..9c178ae2c6ae 100644 --- a/crates/rspack_plugin_runtime/src/common_js_chunk_loading.rs +++ b/crates/rspack_plugin_runtime/src/common_js_chunk_loading.rs @@ -13,12 +13,16 @@ use crate::runtime_module::{ #[plugin] #[derive(Debug)] pub struct CommonJsChunkLoadingPlugin { - async_chunk_loading: bool, + chunk_loading_type: ChunkLoadingType, } impl CommonJsChunkLoadingPlugin { - pub fn new(async_chunk_loading: bool) -> Self { - Self::new_inner(async_chunk_loading) + pub fn new(chunk_loading_type: ChunkLoadingType) -> Self { + Self::new_inner(chunk_loading_type) + } + + fn chunk_loading(&self) -> ChunkLoading { + ChunkLoading::Enable(self.chunk_loading_type.clone()) } } @@ -29,11 +33,7 @@ async fn additional_tree_runtime_requirements( chunk_ukey: &ChunkUkey, runtime_requirements: &mut RuntimeGlobals, ) -> Result<()> { - let chunk_loading_value = if self.async_chunk_loading { - ChunkLoading::Enable(ChunkLoadingType::AsyncNode) - } else { - ChunkLoading::Enable(ChunkLoadingType::Require) - }; + let chunk_loading_value = self.chunk_loading(); let is_enabled_for_chunk = is_enabled_for_chunk(chunk_ukey, &chunk_loading_value, compilation); if is_enabled_for_chunk && compilation @@ -54,11 +54,7 @@ async fn runtime_requirements_in_tree( runtime_requirements: &RuntimeGlobals, runtime_requirements_mut: &mut RuntimeGlobals, ) -> Result> { - let chunk_loading_value = if self.async_chunk_loading { - ChunkLoading::Enable(ChunkLoadingType::AsyncNode) - } else { - ChunkLoading::Enable(ChunkLoadingType::Require) - }; + let chunk_loading_value = self.chunk_loading(); let is_enabled_for_chunk = is_enabled_for_chunk(chunk_ukey, &chunk_loading_value, compilation); let mut has_chunk_loading = false; @@ -91,9 +87,13 @@ async fn runtime_requirements_in_tree( } if has_chunk_loading && is_enabled_for_chunk { + let mut needs_async_loading = matches!(self.chunk_loading_type, ChunkLoadingType::AsyncNode); + if runtime_requirements.contains(RuntimeGlobals::ASYNC_FEDERATION_STARTUP) { + needs_async_loading = true; + } runtime_requirements_mut.insert(RuntimeGlobals::MODULE_FACTORIES_ADD_ONLY); runtime_requirements_mut.insert(RuntimeGlobals::HAS_OWN_PROPERTY); - if self.async_chunk_loading { + if needs_async_loading { compilation.add_runtime_module( chunk_ukey, Box::::default(), diff --git a/crates/rspack_plugin_runtime/src/helpers.rs b/crates/rspack_plugin_runtime/src/helpers.rs index 307ff4767a01..2d156ce926f0 100644 --- a/crates/rspack_plugin_runtime/src/helpers.rs +++ b/crates/rspack_plugin_runtime/src/helpers.rs @@ -229,6 +229,7 @@ pub fn generate_entry_startup( } let mut source = String::default(); + source.push_str(&format!( "var __webpack_exec__ = function(moduleId) {{ return __webpack_require__({} = moduleId) }}\n", RuntimeGlobals::ENTRY_MODULE_ID diff --git a/crates/rspack_plugin_runtime/src/lib.rs b/crates/rspack_plugin_runtime/src/lib.rs index 2f6f6c4a64f5..62b73ffd48dd 100644 --- a/crates/rspack_plugin_runtime/src/lib.rs +++ b/crates/rspack_plugin_runtime/src/lib.rs @@ -47,7 +47,7 @@ pub fn enable_chunk_loading_plugin(loading_type: ChunkLoadingType, plugins: &mut StartupChunkDependenciesPlugin::new(ChunkLoading::Enable(ChunkLoadingType::Require), false) .boxed(), ); - plugins.push(CommonJsChunkLoadingPlugin::new(false).boxed()) + plugins.push(CommonJsChunkLoadingPlugin::new(ChunkLoadingType::Require).boxed()) } ChunkLoadingType::AsyncNode => { plugins.push( @@ -57,7 +57,7 @@ pub fn enable_chunk_loading_plugin(loading_type: ChunkLoadingType, plugins: &mut ) .boxed(), ); - plugins.push(CommonJsChunkLoadingPlugin::new(true).boxed()) + plugins.push(CommonJsChunkLoadingPlugin::new(ChunkLoadingType::AsyncNode).boxed()) } ChunkLoadingType::ImportScripts => { plugins.push( diff --git a/crates/rspack_plugin_runtime/src/runtime_module/runtime/startup_entrypoint.ejs b/crates/rspack_plugin_runtime/src/runtime_module/runtime/startup_entrypoint.ejs index b5ccf670a61d..83a428963b6e 100644 --- a/crates/rspack_plugin_runtime/src/runtime_module/runtime/startup_entrypoint.ejs +++ b/crates/rspack_plugin_runtime/src/runtime_module/runtime/startup_entrypoint.ejs @@ -1,8 +1,13 @@ +var __webpack_require__startup = <%- STARTUP_ENTRYPOINT %>; <%- STARTUP_ENTRYPOINT %> = <%- basicFunction("result, chunkIds, fn") %> { + if (!fn && chunkIds === undefined && result === undefined) { + return __webpack_require__startup ? __webpack_require__startup() : undefined; + } // arguments: chunkIds, moduleId are deprecated var moduleId = chunkIds; if (!fn) chunkIds = result, fn = <%- returningFunction("$$RUNTIME_GLOBAL_REQUIRE$$($$RUNTIME_GLOBAL_ENTRY_MODULE_ID$$ = moduleId)", "") %> + chunkIds = chunkIds || []; chunkIds.map(<%- ENSURE_CHUNK %>, <%- REQUIRE %>) var r = fn(); return r === undefined ? result : r; -} \ No newline at end of file +} diff --git a/crates/rspack_plugin_runtime/src/runtime_module/runtime/startup_entrypoint_with_async.ejs b/crates/rspack_plugin_runtime/src/runtime_module/runtime/startup_entrypoint_with_async.ejs index 0db9dbcbc2a5..3e5e42ebeef3 100644 --- a/crates/rspack_plugin_runtime/src/runtime_module/runtime/startup_entrypoint_with_async.ejs +++ b/crates/rspack_plugin_runtime/src/runtime_module/runtime/startup_entrypoint_with_async.ejs @@ -1,9 +1,14 @@ +var __webpack_require__startup = <%- STARTUP_ENTRYPOINT %>; <%- STARTUP_ENTRYPOINT %> = <%- basicFunction("result, chunkIds, fn") %> { + if (!fn && chunkIds === undefined && result === undefined) { + return __webpack_require__startup ? __webpack_require__startup() : undefined; + } // arguments: chunkIds, moduleId are deprecated var moduleId = chunkIds; if (!fn) chunkIds = result, fn = <%- returningFunction("$$RUNTIME_GLOBAL_REQUIRE$$($$RUNTIME_GLOBAL_ENTRY_MODULE_ID$$ = moduleId)", "") %> + chunkIds = chunkIds || []; return Promise.all(chunkIds.map(<%- ENSURE_CHUNK %>, <%- REQUIRE %>)).then(<%- basicFunction("") %> { var r = fn(); return r === undefined ? result : r; }); -} \ No newline at end of file +} diff --git a/crates/rspack_plugin_runtime/src/startup_chunk_dependencies.rs b/crates/rspack_plugin_runtime/src/startup_chunk_dependencies.rs index 4313e03642b7..440714637f03 100644 --- a/crates/rspack_plugin_runtime/src/startup_chunk_dependencies.rs +++ b/crates/rspack_plugin_runtime/src/startup_chunk_dependencies.rs @@ -32,6 +32,10 @@ async fn runtime_requirements_in_tree( runtime_requirements_mut: &mut RuntimeGlobals, ) -> Result> { let is_enabled_for_chunk = is_enabled_for_chunk(chunk_ukey, &self.chunk_loading, compilation); + let mut async_chunk_loading = self.async_chunk_loading; + if runtime_requirements.contains(RuntimeGlobals::ASYNC_FEDERATION_STARTUP) { + async_chunk_loading = true; + } if is_enabled_for_chunk && runtime_requirements.contains(RuntimeGlobals::STARTUP_CHUNK_DEPENDENCIES) @@ -41,7 +45,7 @@ async fn runtime_requirements_in_tree( runtime_requirements_mut.insert(RuntimeGlobals::ENSURE_CHUNK_INCLUDE_ENTRIES); compilation.add_runtime_module( chunk_ukey, - StartupChunkDependenciesRuntimeModule::new(self.async_chunk_loading).boxed(), + StartupChunkDependenciesRuntimeModule::new(async_chunk_loading).boxed(), )?; } @@ -51,7 +55,7 @@ async fn runtime_requirements_in_tree( runtime_requirements_mut.insert(RuntimeGlobals::ENSURE_CHUNK_INCLUDE_ENTRIES); compilation.add_runtime_module( chunk_ukey, - StartupEntrypointRuntimeModule::new(self.async_chunk_loading).boxed(), + StartupEntrypointRuntimeModule::new(async_chunk_loading).boxed(), )?; } diff --git a/examples/basic/index.js b/examples/basic/index.js index aa5897581b08..bccbd1e66420 100644 --- a/examples/basic/index.js +++ b/examples/basic/index.js @@ -1 +1,16 @@ import "./lib"; +import React from "react"; + +console.log("React version:", React.version); + +// Test React hooks +const [count, _setCount] = React.useState(0); +console.log("useState initialized with:", count); + +// Test createElement +const element = React.createElement( + "div", + { className: "test" }, + "Hello from Module Federation!" +); +console.log("Created element:", element); diff --git a/examples/basic/rspack.config.cjs b/examples/basic/rspack.config.cjs index 0532a641f18f..6bb8f956d433 100644 --- a/examples/basic/rspack.config.cjs +++ b/examples/basic/rspack.config.cjs @@ -1,6 +1,22 @@ +const _rspack = require("../../packages/rspack/dist/index.js"); + module.exports = { context: __dirname, entry: { main: "./index.js" - } + }, + mode: "development", + devtool: false, + output: { + module: true, + libraryTarget: "module", + chunkFormat: "module" + }, + optimization: { + runtimeChunk: "single" + }, + experiments: { + outputModule: true + }, + plugins: [] }; diff --git a/examples/comprehensive-demo-react18/.gitignore b/examples/comprehensive-demo-react18/.gitignore new file mode 100644 index 000000000000..de524f92c767 --- /dev/null +++ b/examples/comprehensive-demo-react18/.gitignore @@ -0,0 +1,44 @@ +# Dependencies +node_modules/ +.pnpm-store/ + +# Build outputs +dist/ +dist-webpack/ +.rspack/ +.webpack/ +*/public/ + +# Test outputs +test-results/ +playwright-report/ +coverage/ +cypress/videos/ +cypress/screenshots/ + +# Logs +*.log +npm-debug.log* +pnpm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Environment files +.env +.env.local +.env.*.local + +# OS files +.DS_Store +Thumbs.db + +# IDE +.vscode/ +.idea/ +*.swp +*.swo +*~ + +# Temporary files +*.tmp +.cache/ diff --git a/examples/comprehensive-demo-react18/README.md b/examples/comprehensive-demo-react18/README.md new file mode 100644 index 000000000000..87aae5716beb --- /dev/null +++ b/examples/comprehensive-demo-react18/README.md @@ -0,0 +1,27 @@ +# Getting Started + +```sh +yarn install +pnpm run start +``` + +Open [http://localhost:3001](http://localhost:3001). + +The demo is annotated so navigate through the demos and apps available. + +Included apps: + +- App #1 (ReactJS - acts as the app shell plus is an aggregation with other remotes): [http://localhost:3001](http://localhost:3001) +- App #2 (ReactJS - plus is an aggregation with other remotes): [http://localhost:3002](http://localhost:3002) +- App #3 (ReactJS): [http://localhost:3003](http://localhost:3003) +- App #4 (SvelteJS): [http://localhost:3004](http://localhost:3004) +- App #5 (LitElement): [http://localhost:3005](http://localhost:3005) + + +# Running Playwright E2E Tests + +To run the Playwright test suite locally in headless mode, execute `pnpm test:e2e` from this workspace. The tests automatically start the demo and verify each application. + +For an interactive UI to debug or explore tests, run `pnpm test:e2e:ui`. + +In CI scenarios run `pnpm e2e:ci`. This command builds the applications, installs the required Playwright browsers and runs the tests with a concise reporter. diff --git a/examples/comprehensive-demo-react18/app-01/package.json b/examples/comprehensive-demo-react18/app-01/package.json new file mode 100644 index 000000000000..08072ef3eaf6 --- /dev/null +++ b/examples/comprehensive-demo-react18/app-01/package.json @@ -0,0 +1,44 @@ +{ + "name": "comprehensive-demo-react18_app-01", + "description": "ReactJS - acts as the app shell plus is an aggregation with other remotes", + "version": "0.0.0", + "ignored": true, + "dependencies": { + "@babel/core": "^7.28.5", + "@babel/preset-react": "^7.28.5", + "@emotion/react": "^11.13.5", + "@emotion/styled": "^11.13.5", + "@mui/material": "^5.15.20", + "@rspack/cli": "workspace:*", + "@rspack/core": "workspace:*", + "@rspack/dev-server": "~1.1.4", + "babel-loader": "^10.0.0", + "html-webpack-plugin": "^5.6.5", + "markdown-to-jsx": "^8.0.0", + "react": "^19.1.1", + "react-dom": "^19.1.1", + "react-router-dom": "^5.1.2", + "serve": "^14.2.3", + "webpack": "5.102.1", + "webpack-cli": "^5.1.4" + }, + "scripts": { + "build": "cross-env NODE_ENV=production pnpm exec rspack build --mode production", + "legacy:build": "cross-env NODE_ENV=production webpack --mode production --stats minimal", + "start": "pnpm exec rspack --watch", + "legacy:start": "webpack", + "dev": "pnpm exec rspack serve", + "legacy:dev": "webpack serve --port=3001", + "serve": "serve dist -p 3001", + "clean": "rm -rf dist" + }, + "devDependencies": { + "@module-federation/enhanced": "0.21.6", + "@module-federation/runtime": "0.21.6", + "@module-federation/sdk": "0.21.6", + "@pmmmwh/react-refresh-webpack-plugin": "0.5.15", + "@rspack/plugin-react-refresh": "^1.5.3", + "raw-loader": "^4.0.2", + "react-refresh": "^0.18.0" + } +} diff --git a/examples/comprehensive-demo-react18/app-01/rspack.config.js b/examples/comprehensive-demo-react18/app-01/rspack.config.js new file mode 100644 index 000000000000..f32b47b27138 --- /dev/null +++ b/examples/comprehensive-demo-react18/app-01/rspack.config.js @@ -0,0 +1,116 @@ +const rspack = require("../../../packages/rspack/dist/index.js"); +const { + HtmlRspackPlugin, + container: { ModuleFederationPlugin } +} = rspack; + +const { RsdoctorRspackPlugin } = require("@rsdoctor/rspack-plugin"); +const ReactRefreshWebpackPlugin = require("@rspack/plugin-react-refresh"); + +const deps = require("./package.json").dependencies; +const isProd = process.env.NODE_ENV === "production"; +module.exports = { + entry: "./src/index", + + mode: "development", + devtool: "source-map", + resolve: { + extensions: [".jsx", ".js", ".json", ".mjs"] + }, + optimization: { + chunkIds: "named", + moduleIds: "named", + + minimize: false + }, + output: { + publicPath: "auto", + uniqueName: "app1" + }, + experiments: { + css: true + }, + + module: { + rules: [ + { + test: /\.jsx?$/, + use: { + loader: "builtin:swc-loader", + options: { + jsc: { + parser: { + syntax: "ecmascript", + jsx: true + }, + transform: { + react: { + development: !isProd, + refresh: !isProd + } + } + } + } + }, + exclude: /node_modules/ + }, + { + test: /\.md$/, + type: "asset/source" + } + ] + }, + devServer: { + port: 3001, + hot: true, + headers: { + "Access-Control-Allow-Origin": "*", + "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, PATCH, OPTIONS", + "Access-Control-Allow-Headers": + "X-Requested-With, content-type, Authorization" + } + }, + plugins: [ + new HtmlRspackPlugin({ + templateContent: () => + `\n\n\n \n App 01\n\n\n
\n\n` + }), + new ModuleFederationPlugin({ + name: "app_01", + filename: "remoteEntry.js", + remotes: { + app_02: `app_02@http://localhost:3002/remoteEntry.js`, + app_03: `app_03@http://localhost:3003/remoteEntry.js`, + app_04: `app_04@http://localhost:3004/remoteEntry.js` + }, + exposes: { + "./SideNav": "./src/SideNav", + "./Page": "./src/Page" + }, + shared: { + ...deps, + "@mui/material": { + singleton: true, + requiredVersion: false + }, + "react-router-dom": { + singleton: true, + requiredVersion: false + }, + "react-dom": { + singleton: true, + requiredVersion: false + }, + react: { + singleton: true, + requiredVersion: false + } + }, + experiments: { + asyncStartup: true + } + }), + isProd ? new ReactRefreshWebpackPlugin() : undefined + // new RsdoctorRspackPlugin() + ] +}; diff --git a/examples/comprehensive-demo-react18/app-01/src/App.jsx b/examples/comprehensive-demo-react18/app-01/src/App.jsx new file mode 100644 index 000000000000..14416e363a00 --- /dev/null +++ b/examples/comprehensive-demo-react18/app-01/src/App.jsx @@ -0,0 +1,20 @@ +import { CssBaseline, Box } from "@mui/material"; + +import { HashRouter } from "react-router-dom"; +import React from "react"; +import Routes from "./Routes"; +import SideNav from "./SideNav"; + +function App() { + return ( + + + + + + + + ); +} + +export default App; diff --git a/examples/comprehensive-demo-react18/app-01/src/Markdown.jsx b/examples/comprehensive-demo-react18/app-01/src/Markdown.jsx new file mode 100644 index 000000000000..c6a76bc5f629 --- /dev/null +++ b/examples/comprehensive-demo-react18/app-01/src/Markdown.jsx @@ -0,0 +1,59 @@ +import { Box, Link, Paper, Typography, styled } from "@mui/material"; +import React from "react"; +import ReactMarkdown from "markdown-to-jsx"; + +const StyledListItem = styled("li")(({ theme }) => ({ + marginTop: theme.spacing(1) +})); + +const StyledBlockquote = styled("blockquote")(({ theme }) => ({ + margin: 0, + padding: theme.spacing(2, 0, 2, 4), + borderLeft: `${theme.spacing(1)}px solid ${theme.palette.divider}`, + color: theme.palette.text.secondary +})); + +const options = { + overrides: { + h1: { + component: Typography, + props: { + gutterBottom: true, + variant: "h5" + } + }, + h2: { component: Typography, props: { gutterBottom: true, variant: "h6" } }, + h3: { + component: Typography, + props: { gutterBottom: true, variant: "subtitle1" } + }, + h4: { + component: Typography, + props: { gutterBottom: true, variant: "caption", paragraph: true } + }, + p: { component: Typography, props: { paragraph: true } }, + a: { component: Link }, + li: { + component: ({ ...props }) => ( + + + + ) + }, + pre: { + component: Paper, + props: { elevation: 0, sx: { padding: "4px 8px" } } + }, + blockquote: { + component: ({ ...props }) => ( + + + + ) + } + } +}; + +export default function Markdown(props) { + return ; +} diff --git a/examples/comprehensive-demo-react18/app-01/src/Page.jsx b/examples/comprehensive-demo-react18/app-01/src/Page.jsx new file mode 100644 index 000000000000..823ec78127f9 --- /dev/null +++ b/examples/comprehensive-demo-react18/app-01/src/Page.jsx @@ -0,0 +1,28 @@ +import { AppBar, Toolbar, Typography, Box } from "@mui/material"; + +import React from "react"; + +function Page({ title, children }) { + return ( + + + + + {title} + + + + theme.palette.background.default, + p: 3 + }} + > + {children} + + + ); +} + +export default Page; diff --git a/examples/comprehensive-demo-react18/app-01/src/Routes.jsx b/examples/comprehensive-demo-react18/app-01/src/Routes.jsx new file mode 100644 index 000000000000..375af174143d --- /dev/null +++ b/examples/comprehensive-demo-react18/app-01/src/Routes.jsx @@ -0,0 +1,22 @@ +import { Route, Switch } from "react-router-dom"; + +import DialogPage from "./pages/dialog-page"; +import IndexPage from "./pages/index-page"; +import React from "react"; +import RoutingPage from "./pages/routing-page"; +import SveltePage from "./pages/svelte-page"; +import UiLibraryPage from "./pages/ui-library-page"; + +const Routes = () => ( + + + + + + + + + +); + +export default Routes; diff --git a/examples/comprehensive-demo-react18/app-01/src/SideNav.jsx b/examples/comprehensive-demo-react18/app-01/src/SideNav.jsx new file mode 100644 index 000000000000..e8b0ff6eba23 --- /dev/null +++ b/examples/comprehensive-demo-react18/app-01/src/SideNav.jsx @@ -0,0 +1,74 @@ +import { + Divider, + Drawer, + List, + ListItem, + ListItemText, + ListSubheader, + Typography, + Box +} from "@mui/material"; + +import { Link } from "react-router-dom"; +import React from "react"; + +const drawerWidth = 240; + +export default function SideNav() { + return ( + + + SideNav + + + + Demo Pages + + + + + + + + + + + + + + + + Apps + + + + + + + + + + + + + + + ); +} diff --git a/examples/comprehensive-demo-react18/app-01/src/docs/Dialog.md b/examples/comprehensive-demo-react18/app-01/src/docs/Dialog.md new file mode 100644 index 000000000000..d6896f067d50 --- /dev/null +++ b/examples/comprehensive-demo-react18/app-01/src/docs/Dialog.md @@ -0,0 +1 @@ +Clicking the button below will render a Dialog using React `Portal`. This dialog component is being lazy loaded from the [app #2](http://localhost:3002/). diff --git a/examples/comprehensive-demo-react18/app-01/src/docs/Tabs.md b/examples/comprehensive-demo-react18/app-01/src/docs/Tabs.md new file mode 100644 index 000000000000..6403a545dff3 --- /dev/null +++ b/examples/comprehensive-demo-react18/app-01/src/docs/Tabs.md @@ -0,0 +1,7 @@ +The following tab components are being imported remotely from "bravo-app". + +Notice that your browser's route is `/routing/` depending on which tab is active. + +If you open [http://localhost:3002](http://localhost:3002) you will see the same tab components at the root level. + +The "Bar" tab also lazily renders the styled-component `Button` from the [UI Library](http://localhost:3003) demo only when rendered. diff --git a/examples/comprehensive-demo-react18/app-01/src/docs/UiLibrary.md b/examples/comprehensive-demo-react18/app-01/src/docs/UiLibrary.md new file mode 100644 index 000000000000..93b50adbd3ee --- /dev/null +++ b/examples/comprehensive-demo-react18/app-01/src/docs/UiLibrary.md @@ -0,0 +1,5 @@ +Simple example showing host app and external component using separate CSS solutions. + +This `Button` component can be found in [App #3](http://localhost:3003/). + +This button is also used in the [routing demo](http://localhost:3001/#/routing/foo). diff --git a/examples/comprehensive-demo-react18/app-01/src/docs/Welcome.md b/examples/comprehensive-demo-react18/app-01/src/docs/Welcome.md new file mode 100644 index 000000000000..a28582301dbd --- /dev/null +++ b/examples/comprehensive-demo-react18/app-01/src/docs/Welcome.md @@ -0,0 +1,5 @@ +Welcome to the Module Federation Demo! + +Click any of the items on the left to get started. + +Feel free to leave me feedback: [https://github.com/module-federation/mfe-webpack-demo](https://github.com/module-federation/mfe-webpack-demo) diff --git a/examples/comprehensive-demo-react18/app-01/src/index.jsx b/examples/comprehensive-demo-react18/app-01/src/index.jsx new file mode 100644 index 000000000000..64f377c91968 --- /dev/null +++ b/examples/comprehensive-demo-react18/app-01/src/index.jsx @@ -0,0 +1,6 @@ +import React from "react"; +import { createRoot } from "react-dom/client"; +import App from "./App"; + +const root = createRoot(document.getElementById("root")); +root.render(); diff --git a/examples/comprehensive-demo-react18/app-01/src/pages/dialog-page.jsx b/examples/comprehensive-demo-react18/app-01/src/pages/dialog-page.jsx new file mode 100644 index 000000000000..35bfd7390345 --- /dev/null +++ b/examples/comprehensive-demo-react18/app-01/src/pages/dialog-page.jsx @@ -0,0 +1,17 @@ +import DialogMarkdown from "../docs/Dialog.md"; +import Markdown from "markdown-to-jsx"; +import Page from "../Page"; +import React from "react"; + +const Dialog = React.lazy(() => import("app_02/Dialog")); + +const DialogPage = () => ( + + {DialogMarkdown} + + + + +); + +export default DialogPage; diff --git a/examples/comprehensive-demo-react18/app-01/src/pages/index-page.jsx b/examples/comprehensive-demo-react18/app-01/src/pages/index-page.jsx new file mode 100644 index 000000000000..e5ce1b61ba81 --- /dev/null +++ b/examples/comprehensive-demo-react18/app-01/src/pages/index-page.jsx @@ -0,0 +1,12 @@ +import Markdown from "../Markdown"; +import Page from "../Page"; +import React from "react"; +import Welcome from "../docs/Welcome.md"; + +const IndexPage = () => ( + + {Welcome} + +); + +export default IndexPage; diff --git a/examples/comprehensive-demo-react18/app-01/src/pages/routing-page.jsx b/examples/comprehensive-demo-react18/app-01/src/pages/routing-page.jsx new file mode 100644 index 000000000000..a0682da5ad6b --- /dev/null +++ b/examples/comprehensive-demo-react18/app-01/src/pages/routing-page.jsx @@ -0,0 +1,17 @@ +import Markdown from "markdown-to-jsx"; +import Page from "../Page"; +import React from "react"; +import Tabs from "../docs/Tabs.md"; + +const RoutedTabs = React.lazy(() => import("app_02/Tabs")); + +const RoutingPage = () => ( + + {Tabs} + + + + +); + +export default RoutingPage; diff --git a/examples/comprehensive-demo-react18/app-01/src/pages/svelte-page.jsx b/examples/comprehensive-demo-react18/app-01/src/pages/svelte-page.jsx new file mode 100644 index 000000000000..a3135c35d309 --- /dev/null +++ b/examples/comprehensive-demo-react18/app-01/src/pages/svelte-page.jsx @@ -0,0 +1,55 @@ +import React from "react"; +import Page from "../Page"; +import { TextField, Box } from "@mui/material"; +import loadApp from "app_04/loadApp"; + +const SveltePage = () => { + const [name, setName] = React.useState("federation"); + const mountEl = React.useRef(); + + React.useEffect(() => { + if (mountEl.current.innerHTML.length === 0) { + loadApp("app_04", name); + } + }); + + const handleChange = e => { + setName(e.target.value); + const event = new CustomEvent("change-name", { + detail: { + name: e.target.value + }, + bubbles: true, + cancelable: true, + composed: true // makes the event jump shadow DOM boundary + }); + let source = e.target || e.srcElement; + source.dispatchEvent(event); + }; + + return ( + + *": { + margin: 1, + width: 200 + } + }} + > + handleChange(e)} + /> +
+
+
+ ); +}; + +export default SveltePage; diff --git a/examples/comprehensive-demo-react18/app-01/src/pages/ui-library-page.jsx b/examples/comprehensive-demo-react18/app-01/src/pages/ui-library-page.jsx new file mode 100644 index 000000000000..e9aff9ecc17a --- /dev/null +++ b/examples/comprehensive-demo-react18/app-01/src/pages/ui-library-page.jsx @@ -0,0 +1,16 @@ +import Markdown from "markdown-to-jsx"; +import Page from "../Page"; +import React from "react"; +import UiLibraryMd from "../docs/UiLibrary.md"; + +import Button from "app_03/Button"; +const UiLibraryPage = () => ( + + {UiLibraryMd} + + + + +); + +export default UiLibraryPage; diff --git a/examples/comprehensive-demo-react18/app-01/webpack.config.js b/examples/comprehensive-demo-react18/app-01/webpack.config.js new file mode 100644 index 000000000000..10b1ec023086 --- /dev/null +++ b/examples/comprehensive-demo-react18/app-01/webpack.config.js @@ -0,0 +1,116 @@ +const HtmlWebpackPlugin = require("html-webpack-plugin"); +const { ModuleFederationPlugin } = require("@module-federation/enhanced"); +const { RsdoctorWebpackPlugin } = require("@rsdoctor/webpack-plugin"); +const ReactRefreshWebpackPlugin = require("@pmmmwh/react-refresh-webpack-plugin"); + +const isProd = process.env.NODE_ENV === "production"; +const isDevelopment = !isProd; + +const deps = require("./package.json").dependencies; +module.exports = { + entry: "./src/index.jsx", + cache: false, + devServer: { + port: 3001, + hot: isDevelopment, + headers: { + "Access-Control-Allow-Origin": "*", + "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, PATCH, OPTIONS", + "Access-Control-Allow-Headers": + "X-Requested-With, content-type, Authorization" + } + }, + mode: "development", + devtool: "source-map", + + optimization: { + chunkIds: "named", + moduleIds: "named", + + minimize: false + }, + + output: { + uniqueName: "app1", + publicPath: "auto" + }, + + resolve: { + extensions: [".jsx", ".js", ".json", ".mjs"] + }, + + module: { + rules: [ + { + test: /\.m?js$/, + type: "javascript/auto", + resolve: { + fullySpecified: false + } + }, + { + test: /\.jsx?$/, + exclude: /node_modules/, + use: [ + { + loader: require.resolve("babel-loader"), + options: { + presets: [require.resolve("@babel/preset-react")], + plugins: [ + isDevelopment && require.resolve("react-refresh/babel") + ].filter(Boolean) + } + } + ] + }, + { + test: /\.md$/, + loader: "raw-loader" + } + ] + }, + + plugins: [ + isDevelopment && new ReactRefreshWebpackPlugin(), + new ModuleFederationPlugin({ + name: "app_01", + filename: "remoteEntry.js", + experiments: { asyncStartup: true }, + remotes: { + app_02: `app_02@http://localhost:3002/remoteEntry.js`, + app_03: `app_03@http://localhost:3003/remoteEntry.js`, + app_04: `app_04@http://localhost:3004/remoteEntry.js`, + app_05: `app_05@http://localhost:3005/remoteEntry.js` + }, + exposes: { + "./SideNav": "./src/SideNav", + "./Page": "./src/Page" + }, + shared: { + ...deps, + "@mui/material": { + singleton: true, + requiredVersion: false + }, + "react-router-dom": { + singleton: true, + requiredVersion: false + }, + "react-dom": { + singleton: true, + requiredVersion: false + }, + react: { + singleton: true, + requiredVersion: false + } + } + }), + new HtmlWebpackPlugin({ + template: "./public/index.html" + }) + // new RsdoctorWebpackPlugin({ + // // plugin options + // }), + ].filter(Boolean) +}; diff --git a/examples/comprehensive-demo-react18/app-02/package.json b/examples/comprehensive-demo-react18/app-02/package.json new file mode 100644 index 000000000000..887f64860e15 --- /dev/null +++ b/examples/comprehensive-demo-react18/app-02/package.json @@ -0,0 +1,40 @@ +{ + "name": "comprehensive-demo-react18_app-02", + "description": "ReactJS - plus is an aggregation with other remotes", + "version": "0.0.0", + "ignored": true, + "dependencies": { + "@babel/core": "^7.28.5", + "@babel/preset-react": "^7.28.5", + "@emotion/react": "^11.13.5", + "@emotion/styled": "^11.13.5", + "@module-federation/enhanced": "0.21.6", + "@mui/material": "^5.15.20", + "@rspack/cli": "workspace:*", + "@rspack/core": "workspace:*", + "@rspack/dev-server": "~1.1.4", + "babel-loader": "^10.0.0", + "html-webpack-plugin": "^5.6.5", + "react": "^19.1.1", + "react-dom": "^19.1.1", + "react-router-dom": "^5.1.2", + "serve": "^14.2.3", + "webpack": "5.102.1", + "webpack-cli": "^5.1.4" + }, + "devDependencies": { + "@pmmmwh/react-refresh-webpack-plugin": "0.5.15", + "@rspack/plugin-react-refresh": "^1.5.3", + "react-refresh": "^0.18.0" + }, + "scripts": { + "build": "cross-env NODE_ENV=production pnpm exec rspack build --mode production", + "legacy:build": "cross-env NODE_ENV=production webpack --mode production --stats minimal", + "start": "pnpm exec rspack --watch", + "legacy:start": "webpack --watch", + "dev": "pnpm exec rspack serve", + "legacy:dev": "webpack serve --port=3002", + "serve": "serve dist -p 3002", + "clean": "rm -rf dist" + } +} diff --git a/examples/comprehensive-demo-react18/app-02/rspack.config.js b/examples/comprehensive-demo-react18/app-02/rspack.config.js new file mode 100644 index 000000000000..60ea5df8cb58 --- /dev/null +++ b/examples/comprehensive-demo-react18/app-02/rspack.config.js @@ -0,0 +1,109 @@ +const rspack = require("../../../packages/rspack/dist/index.js"); +const { + HtmlRspackPlugin, + container: { ModuleFederationPlugin } +} = rspack; + +const deps = require("./package.json").dependencies; +const ReactRefreshWebpackPlugin = require("@rspack/plugin-react-refresh"); +const isProd = process.env.NODE_ENV === "production"; + +module.exports = { + entry: "./src/index", + + mode: "development", + devtool: "source-map", + resolve: { + extensions: [".jsx", ".js", ".json", ".mjs"] + }, + optimization: { + chunkIds: "named", + moduleIds: "named", + + minimize: false + }, + experiments: { + css: true + }, + devServer: { + port: 3002, + hot: true, + headers: { + "Access-Control-Allow-Origin": "*", + "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, PATCH, OPTIONS", + "Access-Control-Allow-Headers": + "X-Requested-With, content-type, Authorization" + } + }, + output: { + publicPath: "auto", + uniqueName: "app2" + }, + + module: { + rules: [ + { + test: /\.jsx?$/, + use: { + loader: "builtin:swc-loader", + options: { + jsc: { + parser: { + syntax: "ecmascript", + jsx: true + }, + transform: { + react: { + development: !isProd, + refresh: !isProd + } + } + } + } + }, + exclude: /node_modules/ + } + ] + }, + + plugins: [ + new HtmlRspackPlugin({ + templateContent: () => + `\n\n\n \n App 02\n\n\n
\n\n` + }), + new ModuleFederationPlugin({ + name: "app_02", + filename: "remoteEntry.js", + remotes: { + app_01: `app_01@http://localhost:3001/remoteEntry.js`, + app_03: `app_03@http://localhost:3003/remoteEntry.js` + }, + exposes: { + "./Dialog": "./src/Dialog", + "./Tabs": "./src/Tabs" + }, + shared: { + ...deps, + "@mui/material": { + singleton: true, + requiredVersion: false + }, + "react-router-dom": { + singleton: true + }, + "react-dom": { + singleton: true, + requiredVersion: false + }, + react: { + singleton: true, + requiredVersion: false + } + }, + experiments: { + asyncStartup: true + } + }), + new ReactRefreshWebpackPlugin() + ] +}; diff --git a/examples/comprehensive-demo-react18/app-02/src/App.jsx b/examples/comprehensive-demo-react18/app-02/src/App.jsx new file mode 100644 index 000000000000..390e2393c6f1 --- /dev/null +++ b/examples/comprehensive-demo-react18/app-02/src/App.jsx @@ -0,0 +1,29 @@ +import { Divider, ThemeProvider, Typography } from "@mui/material"; + +import Dialog from "./Dialog"; +import { HashRouter } from "react-router-dom"; +import React from "react"; +import Tabs from "./Tabs"; +import { theme } from "./theme"; + +const Page = React.lazy(() => import("app_01/Page")); + +function App() { + return ( + + + + + Dialog Component + + + Tabs Component + + + + + + ); +} + +export default App; diff --git a/examples/comprehensive-demo-react18/app-02/src/Dialog.jsx b/examples/comprehensive-demo-react18/app-02/src/Dialog.jsx new file mode 100644 index 000000000000..5f41513729b2 --- /dev/null +++ b/examples/comprehensive-demo-react18/app-02/src/Dialog.jsx @@ -0,0 +1,51 @@ +import { + Button, + Dialog, + DialogActions, + DialogContent, + DialogContentText, + DialogTitle +} from "@mui/material"; + +import React from "react"; + +function DialogComponent() { + const [open, setOpen] = React.useState(false); + + const handleClickOpen = () => { + setOpen(true); + }; + + const handleClose = () => { + setOpen(false); + }; + + return ( +
+ + + Dialog Example + + + This is a dialog from the Material UI app rendered in a React{" "} + Portal. + + + + + + +
+ ); +} + +export default DialogComponent; diff --git a/examples/comprehensive-demo-react18/app-02/src/Tabs.jsx b/examples/comprehensive-demo-react18/app-02/src/Tabs.jsx new file mode 100644 index 000000000000..f7ca2593373d --- /dev/null +++ b/examples/comprehensive-demo-react18/app-02/src/Tabs.jsx @@ -0,0 +1,60 @@ +import { AppBar, Box, Tab, Tabs, Typography } from "@mui/material"; +import { + Redirect, + Route, + Switch, + useHistory, + useLocation, + useRouteMatch +} from "react-router-dom"; + +import React from "react"; + +const Button = React.lazy(() => import("app_03/Button")); + +export default function TabsComponent() { + const match = useRouteMatch(); + const history = useHistory(); + const location = useLocation(); + const { path: rootPath } = match; + + const handleChange = (event, newValue) => { + history.push(newValue); + }; + + return ( + theme.palette.background.paper + }} + > + + + + + + + + + + + + + Foo Content + + + + + + Bar Content + + + + + + + + + ); +} diff --git a/examples/comprehensive-demo-react18/app-02/src/index.js b/examples/comprehensive-demo-react18/app-02/src/index.js new file mode 100644 index 000000000000..64f377c91968 --- /dev/null +++ b/examples/comprehensive-demo-react18/app-02/src/index.js @@ -0,0 +1,6 @@ +import React from "react"; +import { createRoot } from "react-dom/client"; +import App from "./App"; + +const root = createRoot(document.getElementById("root")); +root.render(); diff --git a/examples/comprehensive-demo-react18/app-02/src/theme.js b/examples/comprehensive-demo-react18/app-02/src/theme.js new file mode 100644 index 000000000000..f8327be96ee3 --- /dev/null +++ b/examples/comprehensive-demo-react18/app-02/src/theme.js @@ -0,0 +1,6 @@ +import { green } from "@mui/material/colors"; +import { createTheme } from "@mui/material/styles"; + +export const theme = createTheme({ + palette: { primary: green } +}); diff --git a/examples/comprehensive-demo-react18/app-02/webpack.config.js b/examples/comprehensive-demo-react18/app-02/webpack.config.js new file mode 100644 index 000000000000..e60080fde249 --- /dev/null +++ b/examples/comprehensive-demo-react18/app-02/webpack.config.js @@ -0,0 +1,105 @@ +const HtmlWebpackPlugin = require("html-webpack-plugin"); +const { ModuleFederationPlugin } = require("@module-federation/enhanced"); +const ReactRefreshWebpackPlugin = require("@pmmmwh/react-refresh-webpack-plugin"); +const deps = require("./package.json").dependencies; + +const isProd = process.env.NODE_ENV === "production"; +const isDevelopment = !isProd; + +module.exports = { + entry: "./src/index", + cache: false, + + mode: "development", + devtool: "source-map", + + optimization: { + chunkIds: "named", + moduleIds: "named", + + minimize: false + }, + + devServer: { + port: 3002, + hot: !isProd, + headers: { + "Access-Control-Allow-Origin": "*", + "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, PATCH, OPTIONS", + "Access-Control-Allow-Headers": + "X-Requested-With, content-type, Authorization" + } + }, + output: { + publicPath: "auto", + uniqueName: "app2" + }, + + resolve: { + extensions: [".jsx", ".js", ".json", ".mjs"] + }, + + module: { + rules: [ + { + test: /\.m?js$/, + type: "javascript/auto", + resolve: { + fullySpecified: false + } + }, + { + test: /\.jsx?$/, + exclude: /node_modules/, + use: [ + { + loader: require.resolve("babel-loader"), + options: { + presets: [require.resolve("@babel/preset-react")], + plugins: [ + isDevelopment && require.resolve("react-refresh/babel") + ].filter(Boolean) + } + } + ] + } + ] + }, + + plugins: [ + !isProd && new ReactRefreshWebpackPlugin(), + new ModuleFederationPlugin({ + name: "app_02", + filename: "remoteEntry.js", + experiments: { asyncStartup: true }, + remotes: { + app_01: `app_01@http://localhost:3001/remoteEntry.js`, + app_03: `app_03@http://localhost:3003/remoteEntry.js` + }, + exposes: { + "./Dialog": "./src/Dialog", + "./Tabs": "./src/Tabs" + }, + shared: { + ...deps, + "@mui/material": { + singleton: true, + requiredVersion: false + }, + "react-router-dom": { + singleton: true + }, + "react-dom": { + singleton: true + }, + react: { + singleton: true + } + } + }), + new HtmlWebpackPlugin({ + template: "./public/index.html", + chunks: ["main"] + }) + ].filter(Boolean) +}; diff --git a/examples/comprehensive-demo-react18/app-03/package.json b/examples/comprehensive-demo-react18/app-03/package.json new file mode 100644 index 000000000000..cc37a3756e62 --- /dev/null +++ b/examples/comprehensive-demo-react18/app-03/package.json @@ -0,0 +1,36 @@ +{ + "name": "comprehensive-demo-react18_app-03", + "description": "ReactJS", + "version": "0.0.0", + "ignored": true, + "dependencies": { + "@babel/core": "^7.28.5", + "@babel/preset-react": "^7.28.5", + "@module-federation/enhanced": "0.21.6", + "@rspack/cli": "workspace:*", + "@rspack/core": "workspace:*", + "@rspack/dev-server": "~1.1.4", + "babel-loader": "^10.0.0", + "html-webpack-plugin": "^5.6.5", + "react": "^19.1.1", + "react-dom": "^19.1.1", + "serve": "^14.2.3", + "styled-components": "^5.0.1", + "webpack": "5.102.1", + "webpack-cli": "^5.1.4" + }, + "scripts": { + "build": "cross-env NODE_ENV=production pnpm exec rspack build --mode production", + "legacy:build": "cross-env NODE_ENV=production webpack --mode production --stats minimal", + "start": "pnpm exec rspack serve", + "legacy:start": "webpack --watch", + "dev": "pnpm exec rspack serve", + "legacy:dev": "webpack serve --port=3003", + "serve": "serve dist -p 3003", + "clean": "rm -rf dist" + }, + "devDependencies": { + "@pmmmwh/react-refresh-webpack-plugin": "0.5.15", + "react-refresh": "^0.18.0" + } +} diff --git a/examples/comprehensive-demo-react18/app-03/rspack.config.js b/examples/comprehensive-demo-react18/app-03/rspack.config.js new file mode 100644 index 000000000000..ed9661a89def --- /dev/null +++ b/examples/comprehensive-demo-react18/app-03/rspack.config.js @@ -0,0 +1,94 @@ +const rspack = require("../../../packages/rspack/dist/index.js"); +const { + HtmlRspackPlugin, + container: { ModuleFederationPlugin } +} = rspack; + +const isProd = process.env.NODE_ENV === "production"; + +module.exports = { + entry: "./src/index", + + mode: "development", + devtool: "source-map", + optimization: { + chunkIds: "named", + moduleIds: "named", + + minimize: false + }, + devServer: { + port: 3003, + hot: true, + headers: { + "Access-Control-Allow-Origin": "*", + "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, PATCH, OPTIONS", + "Access-Control-Allow-Headers": + "X-Requested-With, content-type, Authorization" + } + }, + resolve: { + extensions: [".jsx", ".js", ".json", ".mjs"] + }, + output: { + publicPath: "auto", + uniqueName: "app3" + }, + experiments: { + css: true + }, + + module: { + rules: [ + { + test: /\.jsx?$/, + use: { + loader: "builtin:swc-loader", + options: { + jsc: { + parser: { + syntax: "ecmascript", + jsx: true + }, + transform: { + react: { + development: !isProd, + refresh: !isProd + } + } + } + } + }, + exclude: /node_modules/ + } + ] + }, + + plugins: [ + new HtmlRspackPlugin({ + templateContent: () => + `\n\n\n \n App 03\n\n\n
\n\n` + }), + new ModuleFederationPlugin({ + name: "app_03", + filename: "remoteEntry.js", + remotes: { + app_01: `app_01@http://localhost:3001/remoteEntry.js` + }, + exposes: { + "./Button": "./src/Button" + }, + shared: { + "react-dom": { + singleton: true + }, + react: { + singleton: true + } + }, + experiments: { + asyncStartup: true + } + }) + ] +}; diff --git a/examples/comprehensive-demo-react18/app-03/src/App.jsx b/examples/comprehensive-demo-react18/app-03/src/App.jsx new file mode 100644 index 000000000000..a2896893a9ea --- /dev/null +++ b/examples/comprehensive-demo-react18/app-03/src/App.jsx @@ -0,0 +1,16 @@ +import Button from "./Button"; +import React from "react"; + +const Page = React.lazy(() => import("app_01/Page")); + +function App() { + return ( + + + + + + ); +} + +export default App; diff --git a/examples/comprehensive-demo-react18/app-03/src/Button.jsx b/examples/comprehensive-demo-react18/app-03/src/Button.jsx new file mode 100644 index 000000000000..86fc95eae5dc --- /dev/null +++ b/examples/comprehensive-demo-react18/app-03/src/Button.jsx @@ -0,0 +1,15 @@ +import styled from "styled-components"; + +const Button = styled.button` + display: inline-block; + border-radius: 3px; + padding: 0.5rem 0; + margin: 0.5rem 1rem; + width: 11rem; + background: palevioletred; + color: white; + font-size: 1rem; + font-family: sans-serif; +`; + +export default Button; diff --git a/examples/comprehensive-demo-react18/app-03/src/index.js b/examples/comprehensive-demo-react18/app-03/src/index.js new file mode 100644 index 000000000000..64f377c91968 --- /dev/null +++ b/examples/comprehensive-demo-react18/app-03/src/index.js @@ -0,0 +1,6 @@ +import React from "react"; +import { createRoot } from "react-dom/client"; +import App from "./App"; + +const root = createRoot(document.getElementById("root")); +root.render(); diff --git a/examples/comprehensive-demo-react18/app-03/webpack.config.js b/examples/comprehensive-demo-react18/app-03/webpack.config.js new file mode 100644 index 000000000000..70313a83d40b --- /dev/null +++ b/examples/comprehensive-demo-react18/app-03/webpack.config.js @@ -0,0 +1,88 @@ +const HtmlWebpackPlugin = require("html-webpack-plugin"); +const { ModuleFederationPlugin } = require("@module-federation/enhanced"); +const ReactRefreshWebpackPlugin = require("@pmmmwh/react-refresh-webpack-plugin"); + +const isProd = process.env.NODE_ENV === "production"; + +module.exports = { + entry: "./src/index", + cache: false, + + mode: "development", + devtool: "source-map", + + optimization: { + chunkIds: "named", + moduleIds: "named", + + minimize: false + }, + + output: { + publicPath: "auto", + uniqueName: "app3" + }, + + resolve: { + extensions: [".jsx", ".js", ".json", ".mjs"] + }, + devServer: { + port: 3003, + hot: !isProd, + headers: { + "Access-Control-Allow-Origin": "*", + "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, PATCH, OPTIONS", + "Access-Control-Allow-Headers": + "X-Requested-With, content-type, Authorization" + } + }, + + module: { + rules: [ + { + test: /\.m?js$/, + type: "javascript/auto", + resolve: { + fullySpecified: false + } + }, + { + test: /\.jsx?$/, + loader: require.resolve("babel-loader"), + exclude: /node_modules/, + options: { + presets: [require.resolve("@babel/preset-react")], + plugins: [!isProd && require.resolve("react-refresh/babel")].filter( + Boolean + ) + } + } + ] + }, + + plugins: [ + !isProd && new ReactRefreshWebpackPlugin(), + new ModuleFederationPlugin({ + name: "app_03", + filename: "remoteEntry.js", + experiments: { asyncStartup: true }, + remotes: { + app_01: `app_01@http://localhost:3001/remoteEntry.js` + }, + exposes: { + "./Button": "./src/Button" + }, + shared: { + "react-dom": { + singleton: true + }, + react: { + singleton: true + } + } + }), + new HtmlWebpackPlugin({ + template: "./public/index.html" + }) + ].filter(Boolean) +}; diff --git a/examples/comprehensive-demo-react18/app-04/.gitignore b/examples/comprehensive-demo-react18/app-04/.gitignore new file mode 100644 index 000000000000..764994bf3a58 --- /dev/null +++ b/examples/comprehensive-demo-react18/app-04/.gitignore @@ -0,0 +1,8 @@ +.DS_Store +node_modules +public/bundle.* +public/src_* +public/remoteEntry* +public/vendors* +package-lock.json +yarn.lock \ No newline at end of file diff --git a/examples/comprehensive-demo-react18/app-04/README.md b/examples/comprehensive-demo-react18/app-04/README.md new file mode 100644 index 000000000000..3af7322b072b --- /dev/null +++ b/examples/comprehensive-demo-react18/app-04/README.md @@ -0,0 +1,62 @@ +# svelte app + +This is a project template for [Svelte](https://svelte.dev) apps. It lives at https://github.com/sveltejs/template-webpack. + +To create a new project based on this template using [degit](https://github.com/Rich-Harris/degit): + +```bash +npx degit sveltejs/template-webpack svelte-app +cd svelte-app +``` + +_Note that you will need to have [Node.js](https://nodejs.org) installed._ + +## Get started + +Install the dependencies... + +```bash +cd svelte-app +npm install +``` + +...then start webpack: + +```bash +npm run dev +``` + +Navigate to [localhost:8080](http://localhost:8080). You should see your app running. Edit a component file in `src`, save it, and the page should reload with your changes. + +## Deploying to the web + +### With [now](https://zeit.co/now) + +Install `now` if you haven't already: + +```bash +npm install -g now +``` + +Then, from within your project folder: + +```bash +now +``` + +As an alternative, use the [Now desktop client](https://zeit.co/download) and simply drag the unzipped project folder to the taskbar icon. + +### With [surge](https://surge.sh/) + +Install `surge` if you haven't already: + +```bash +npm install -g surge +``` + +Then, from within your project folder: + +```bash +npm run build +surge public +``` diff --git a/examples/comprehensive-demo-react18/app-04/package.json b/examples/comprehensive-demo-react18/app-04/package.json new file mode 100644 index 000000000000..30c0c178e9e0 --- /dev/null +++ b/examples/comprehensive-demo-react18/app-04/package.json @@ -0,0 +1,35 @@ +{ + "name": "comprehensive-demo-react18_app-04", + "description": "SvelteJS", + "version": "1.0.0", + "ignored": true, + "devDependencies": { + "@module-federation/enhanced": "0.21.6", + "@pmmmwh/react-refresh-webpack-plugin": "0.5.15", + "@rspack/cli": "workspace:*", + "@rspack/core": "workspace:*", + "@rspack/dev-server": "~1.1.4", + "cross-env": "^10.1.0", + "css-loader": "^7.1.2", + "html-webpack-plugin": "^5.6.5", + "mini-css-extract-plugin": "2.9.2", + "react-refresh": "^0.18.0", + "serve": "^14.2.3", + "style-loader": "^4.0.0", + "svelte": "4.2.18", + "svelte-loader": "3.2.3", + "webpack": "5.102.1", + "webpack-cli": "^5.1.4", + "webpack-dev-server": "5.0.4" + }, + "scripts": { + "build": "cross-env NODE_ENV=production pnpm exec rspack build --mode production", + "legacy:build": "cross-env NODE_ENV=production webpack --mode production", + "start": "pnpm exec rspack serve", + "legacy:start": "webpack --watch", + "dev": "pnpm exec rspack serve", + "legacy:dev": "webpack serve --port=3004", + "serve": "serve public -p 3004", + "clean": "rm -rf dist" + } +} diff --git a/examples/comprehensive-demo-react18/app-04/rspack.config.js b/examples/comprehensive-demo-react18/app-04/rspack.config.js new file mode 100644 index 000000000000..a3c91ca81d52 --- /dev/null +++ b/examples/comprehensive-demo-react18/app-04/rspack.config.js @@ -0,0 +1,80 @@ +const rspack = require("../../../packages/rspack/dist/index.js"); +const { + HtmlRspackPlugin, + container: { ModuleFederationPlugin } +} = rspack; +const buildId = Date.now(); +const path = require("path"); + +const mode = process.env.NODE_ENV || "development"; +const prod = mode === "production"; + +module.exports = { + entry: { + bundle: ["./src/main.js"] + }, + resolve: { + extensions: [".mjs", ".js", ".svelte"], + mainFields: ["svelte", "browser", "module", "main"], + conditionNames: ["svelte", "browser", "import"] + }, + output: { + path: path.resolve(__dirname, "public"), + filename: "[name].[contenthash:8].js", + chunkFilename: "[name].[contenthash:8].js", + publicPath: "auto", + uniqueName: "app4" + }, + devServer: { + port: 3004, + hot: true, + headers: { + "Access-Control-Allow-Origin": "*", + "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, PATCH, OPTIONS", + "Access-Control-Allow-Headers": + "X-Requested-With, content-type, Authorization" + } + }, + module: { + rules: [ + { + test: /\.svelte$/, + use: { + loader: "svelte-loader", + options: { + emitCss: true, + hotReload: true + } + } + } + ] + }, + mode, + optimization: { + chunkIds: "named", + moduleIds: "named" + }, + + plugins: [ + new HtmlRspackPlugin({ + templateContent: () => + `\n\n\n \n App 04\n\n\n
\n\n` + }), + new ModuleFederationPlugin({ + name: "app_04", + filename: "remoteEntry.js", + exposes: { + "./App": "./src/main.js", + "./loadApp": "./src/loadApp.js" + }, + shared: [], + experiments: { + asyncStartup: true + } + }) + ], + devtool: prod ? false : "source-map", + experiments: { + css: true + } +}; diff --git a/examples/comprehensive-demo-react18/app-04/src/App.svelte b/examples/comprehensive-demo-react18/app-04/src/App.svelte new file mode 100644 index 000000000000..6a8dd0c65136 --- /dev/null +++ b/examples/comprehensive-demo-react18/app-04/src/App.svelte @@ -0,0 +1,18 @@ + + + + +

Hello From Svelte {name}!

diff --git a/examples/comprehensive-demo-react18/app-04/src/loadApp.js b/examples/comprehensive-demo-react18/app-04/src/loadApp.js new file mode 100644 index 000000000000..b0f39080ab6c --- /dev/null +++ b/examples/comprehensive-demo-react18/app-04/src/loadApp.js @@ -0,0 +1,10 @@ +import App from "./App.svelte"; + +const loadApp = (id, name) => { + return new App({ + target: document.querySelector(`#${id}`), + props: { name } + }); +}; + +export default loadApp; diff --git a/examples/comprehensive-demo-react18/app-04/src/main.js b/examples/comprehensive-demo-react18/app-04/src/main.js new file mode 100644 index 000000000000..54b52299dd18 --- /dev/null +++ b/examples/comprehensive-demo-react18/app-04/src/main.js @@ -0,0 +1,19 @@ +import App from "./App.svelte"; + +const app = new App({ + target: document.querySelector("#app_04"), + props: { + name: "world" + } +}); + +export const loadApp = id => { + return new App({ + target: document.querySelector("#app_04"), + props: { name: "world" } + }); +}; + +window.app = app; + +export default app; diff --git a/examples/comprehensive-demo-react18/app-04/webpack.config.js b/examples/comprehensive-demo-react18/app-04/webpack.config.js new file mode 100644 index 000000000000..612609c9860b --- /dev/null +++ b/examples/comprehensive-demo-react18/app-04/webpack.config.js @@ -0,0 +1,78 @@ +const MiniCssExtractPlugin = require("mini-css-extract-plugin"); +const { ModuleFederationPlugin } = require("@module-federation/enhanced"); +const path = require("path"); + +const mode = process.env.NODE_ENV || "development"; +const prod = mode === "production"; + +module.exports = { + entry: { + bundle: ["./src/main.js"] + }, + resolve: { + extensions: [".mjs", ".js", ".svelte"], + mainFields: ["svelte", "browser", "module", "main"], + conditionNames: ["svelte", "browser", "import"] + }, + output: { + path: __dirname + "/public", + filename: "[name].js", + chunkFilename: "[name].[id].js", + publicPath: "auto", + uniqueName: "app4" + }, + module: { + rules: [ + { + test: /\.m?js$/, + type: "javascript/auto", + resolve: { + fullySpecified: false + } + }, + { + test: /\.svelte$/, + use: { + loader: "svelte-loader", + options: { + emitCss: true, + hotReload: true + } + } + }, + { + test: /\.css$/, + use: [ + /** + * MiniCssExtractPlugin doesn't support HMR. + * For developing, use 'style-loader' instead. + * */ + prod ? MiniCssExtractPlugin.loader : "style-loader", + "css-loader" + ] + } + ] + }, + mode, + optimization: { + chunkIds: "named", + moduleIds: "named" + }, + + plugins: [ + new ModuleFederationPlugin({ + name: "app_04", + filename: "remoteEntry.js", + experiments: { asyncStartup: true }, + exposes: { + "./App": "./src/main.js", + "./loadApp": "./src/loadApp.js" + }, + shared: [] + }), + new MiniCssExtractPlugin({ + filename: "[name].css" + }) + ], + devtool: prod ? false : "source-map" +}; diff --git a/examples/comprehensive-demo-react18/e2e/checkApp1.spec.ts b/examples/comprehensive-demo-react18/e2e/checkApp1.spec.ts new file mode 100644 index 000000000000..8d447fedb08b --- /dev/null +++ b/examples/comprehensive-demo-react18/e2e/checkApp1.spec.ts @@ -0,0 +1,183 @@ +import type { Page } from "@playwright/test"; +import { expect, test } from "@playwright/test"; + +const base = "http://localhost:3001"; + +const demoPages = [ + { name: "Main", hash: "#/" }, + { name: "UI Library", hash: "#/ui-library" }, + { name: "Dialog", hash: "#/dialog" }, + { name: "Svelte Page", hash: "#/svelte" }, + { name: "Routing", hash: "#/routing/foo" } +]; + +const appLinks = [ + { name: "App #1", href: "http://localhost:3001" }, + { name: "App #2", href: "http://localhost:3002" }, + { name: "App #3", href: "http://localhost:3003" }, + { name: "App #4", href: "http://localhost:3004" } +]; + +const mainPageParagraphs = [ + "Welcome to the Module Federation Demo!", + "Click any of the items on the left to get started.", + "Feel free to leave me feedback" +]; + +const uiLibraryParagraphs = [ + "Simple example showing host app and external component using separate CSS solutions.", + "This Button component can be found in App #3.", + "This button is also used in the routing demo." +]; + +const routingParagraphs = [ + 'The following tab components are being imported remotely from "bravo-app".', + "Notice that your browser's route is /routing/ depending on which tab is active.", + "If you open http://localhost:3002 you will see the same tab components at the root level", + 'The "Bar" tab also lazily renders the styled-component Button from the UI Library demo only when rendered.' +]; + +const expectAppBar = async (page: Page, title: string) => { + const appBar = page.locator("header").first(); + await expect(appBar).toBeVisible(); + await expect(appBar).toHaveCSS("background-color", "rgb(25, 118, 210)"); + await expect(page.getByRole("heading", { name: title })).toBeVisible(); +}; + +test.describe("Comprehensive Demo App1", () => { + test("main page displays sidebar links and elements", async ({ page }) => { + await page.goto(base); + + await expect(page.getByRole("heading", { name: "SideNav" })).toBeVisible(); + await expect(page.getByText("Demo Pages")).toBeVisible(); + await expect(page.getByText("Apps")).toBeVisible(); + + for (const { name, hash } of demoPages) { + const link = page.locator("a", { hasText: name }).first(); + await expect(link).toBeVisible(); + await expect(link).toHaveAttribute("href", hash); + } + + for (const { name, href } of appLinks) { + const link = page.locator(`a[href="${href}"]`).first(); + await expect(link).toBeVisible(); + await expect(link).toHaveAttribute("href", href); + await expect(link).toContainText(name); + await expect(link).toContainText(href); + } + + await expectAppBar(page, "Module Federation Demo"); + + for (const paragraph of mainPageParagraphs) { + await expect(page.locator("p", { hasText: paragraph })).toBeVisible(); + } + + await expect( + page.getByRole("link", { + name: "https://github.com/module-federation/mfe-webpack-demo" + }) + ).toHaveAttribute( + "href", + "https://github.com/module-federation/mfe-webpack-demo" + ); + }); + + test("main tab functionality", async ({ page }) => { + await page.goto(base); + + for (const { name, hash } of demoPages) { + await page.locator("a", { hasText: name }).first().click(); + await expect(page).toHaveURL(`${base}/${hash}`); + } + + await page.locator("a", { hasText: "Main" }).first().click(); + await expect(page).toHaveURL(`${base}/#/`); + + for (const { href } of appLinks) { + const response = await page.request.get(href); + expect(response.ok()).toBeTruthy(); + } + }); + + test("UI library page renders remote button", async ({ page }) => { + await page.goto(`${base}/#/ui-library`); + + await expectAppBar(page, "UI Library Demo"); + + for (const paragraph of uiLibraryParagraphs) { + await expect(page.locator("p", { hasText: paragraph })).toBeVisible(); + } + + await expect( + page.locator('a[href="http://localhost:3003/"]').first() + ).toHaveAttribute("href", "http://localhost:3003/"); + await expect( + page.locator('a[href="http://localhost:3001/#/routing/foo"]').first() + ).toHaveAttribute("href", "http://localhost:3001/#/routing/foo"); + + const styledButton = page.getByRole("button", { name: "💅 Button" }); + await expect(styledButton).toBeVisible(); + await expect(styledButton).toHaveCSS( + "background-color", + "rgb(219, 112, 147)" + ); + }); + + test("dialog page loads and dialog opens", async ({ page }) => { + await page.goto(`${base}/#/dialog`); + + await expectAppBar(page, "Dialog Demo"); + await expect( + page.locator("p", { + hasText: + "Clicking the button below will render a Dialog using React Portal. This dialog component is being lazy loaded from the app #2." + }) + ).toBeVisible(); + + await page.getByRole("button", { name: "Open Dialog" }).click(); + const dialog = page.locator('[role="dialog"]'); + await expect( + dialog.getByRole("heading", { name: "Dialog Example" }) + ).toBeVisible(); + await expect( + dialog.getByText( + "This is a dialog from the Material UI app rendered in a React Portal." + ) + ).toBeVisible(); + await dialog.getByRole("button", { name: "Nice" }).click(); + await expect(dialog).not.toBeVisible(); + }); + + test("svelte page updates greeting", async ({ page }) => { + await page.goto(`${base}/#/svelte`); + + await expectAppBar(page, "Svelte Demo"); + + const input = page.locator("input"); + await expect(input).toBeVisible(); + await input.fill("May The Force Be With You"); + await expect(page.locator("h1")).toHaveText( + "Hello From Svelte May The Force Be With You!" + ); + }); + + test("routing page renders tabs", async ({ page }) => { + await page.goto(`${base}/#/routing/foo`); + + await expectAppBar(page, "Routing Demo"); + + for (const paragraph of routingParagraphs) { + await expect(page.locator("p", { hasText: paragraph })).toBeVisible(); + } + + await expect(page.getByRole("tab", { name: "Foo" })).toBeVisible(); + await expect(page.getByText("Foo Content")).toBeVisible(); + + await page.getByRole("tab", { name: "Bar" }).click(); + await expect(page.getByText("Bar Content")).toBeVisible(); + + const barButton = page.getByRole("button", { name: "Bar Button" }); + await expect(barButton).toBeVisible(); + await expect(barButton).toHaveCSS("background-color", "rgb(219, 112, 147)"); + }); +}); diff --git a/examples/comprehensive-demo-react18/e2e/checkApp2.spec.ts b/examples/comprehensive-demo-react18/e2e/checkApp2.spec.ts new file mode 100644 index 000000000000..14f63248fcc3 --- /dev/null +++ b/examples/comprehensive-demo-react18/e2e/checkApp2.spec.ts @@ -0,0 +1,119 @@ +import { expect, test } from "@playwright/test"; + +const base = "http://localhost:3002"; + +test.describe("Comprehensive Demo App2", () => { + test("renders blocks, dialog and tabs", async ({ page }) => { + const events: string[] = []; + page.on("console", msg => + events.push(`console.${msg.type()}: ${msg.text()}`) + ); + page.on("pageerror", err => events.push(`pageerror: ${err.message}`)); + page.on("requestfailed", req => + events.push( + `requestfailed: ${req.url()} ${req.failure()?.errorText || ""}`.trim() + ) + ); + page.on("response", res => { + if (!res.ok()) events.push(`response ${res.status()}: ${res.url()}`); + }); + try { + // Clear all browser storage to prevent stale Module Federation metadata + await page.context().clearCookies(); + await page.goto(base, { waitUntil: "domcontentloaded" }); + // Clear all local storage, caches, and IndexedDB entries for federation data + await page.evaluate(async () => { + try { + localStorage.clear(); + sessionStorage.clear(); + } catch (err) { + console.warn("[e2e] unable to clear Web Storage", err); + } + if ("caches" in window) { + try { + const names = await caches.keys(); + await Promise.all(names.map(name => caches.delete(name))); + } catch (err) { + console.warn("[e2e] unable to clear Cache API", err); + } + } + if (indexedDB && indexedDB.databases) { + try { + const dbs = await indexedDB.databases(); + await Promise.all( + dbs + .map(db => db?.name) + .filter(Boolean) + .map(name => { + try { + const req = indexedDB.deleteDatabase(name); + return new Promise(resolve => { + req.onsuccess = + req.onerror = + req.onblocked = + () => resolve(null); + }); + } catch (err) { + console.warn("[e2e] deleteDatabase failed", err); + return Promise.resolve(null); + } + }) + ); + } catch (err) { + console.warn("[e2e] unable to enumerate IndexedDB databases", err); + } + } + }); + // Force hard reload to clear any runtime cache + await page.reload({ waitUntil: "domcontentloaded" }); + + await expect(page.locator("header").first()).toHaveCSS( + "background-color", + "rgb(76, 175, 80)" // App 2 theme uses MUI green palette + ); + await expect( + page.getByRole("heading", { name: "Material UI App" }) + ).toBeVisible(); + await expect( + page.getByRole("heading", { name: "Dialog Component" }) + ).toBeVisible(); + + const openDialogButton = page.getByRole("button", { + name: "Open Dialog" + }); + await expect(openDialogButton).toBeVisible(); + await openDialogButton.click(); + + const dialog = page.locator('[role="dialog"]'); + await expect( + dialog.getByRole("heading", { name: "Dialog Example" }) + ).toBeVisible(); + await expect( + dialog.getByText( + "This is a dialog from the Material UI app rendered in a React Portal." + ) + ).toBeVisible(); + await dialog.getByRole("button", { name: "Nice" }).click(); + await expect(dialog).not.toBeVisible(); + + await expect( + page.getByRole("heading", { name: "Tabs Component" }) + ).toBeVisible(); + const fooTab = page.getByRole("tab", { name: "Foo" }); + const barTab = page.getByRole("tab", { name: "Bar" }); + await expect(fooTab).toBeVisible(); + await expect(barTab).toBeVisible(); + await expect(page.getByText("Foo Content")).toBeVisible(); + + await barTab.click(); + await expect(page.getByText("Bar Content")).toBeVisible(); + await expect(page.getByRole("button", { name: "Bar Button" })).toHaveCSS( + "background-color", + "rgb(219, 112, 147)" // Styled-components button from App3 + ); + } catch (e) { + console.log("[App2 e2e diagnostics]\\n" + events.join("\\n")); + throw e; + } + }); +}); diff --git a/examples/comprehensive-demo-react18/e2e/checkApp3.spec.ts b/examples/comprehensive-demo-react18/e2e/checkApp3.spec.ts new file mode 100644 index 000000000000..64fdd68a36fe --- /dev/null +++ b/examples/comprehensive-demo-react18/e2e/checkApp3.spec.ts @@ -0,0 +1,21 @@ +import { expect, test } from "@playwright/test"; + +const base = "http://localhost:3003"; + +test.describe("Comprehensive Demo App3", () => { + test("shows styled button", async ({ page }) => { + await page.goto(base); + + await expect(page.locator("header").first()).toHaveCSS( + "background-color", + "rgb(25, 118, 210)" + ); + await expect( + page.getByRole("heading", { name: "Styled Components App" }) + ).toBeVisible(); + + const button = page.getByRole("button", { name: "💅 Test Button" }); + await expect(button).toBeVisible(); + await expect(button).toHaveCSS("background-color", "rgb(219, 112, 147)"); + }); +}); diff --git a/examples/comprehensive-demo-react18/e2e/checkApp4.spec.ts b/examples/comprehensive-demo-react18/e2e/checkApp4.spec.ts new file mode 100644 index 000000000000..2c4eaedabd19 --- /dev/null +++ b/examples/comprehensive-demo-react18/e2e/checkApp4.spec.ts @@ -0,0 +1,10 @@ +import { expect, test } from "@playwright/test"; + +test.describe("Comprehensive Demo App4", () => { + test("shows svelte greeting", async ({ page }) => { + await page.goto("http://localhost:3004"); + await expect(page.locator("h1").first()).toHaveText( + "Hello From Svelte world!" + ); + }); +}); diff --git a/examples/comprehensive-demo-react18/e2e/checkApplications.spec.ts b/examples/comprehensive-demo-react18/e2e/checkApplications.spec.ts new file mode 100644 index 000000000000..1597cb4816de --- /dev/null +++ b/examples/comprehensive-demo-react18/e2e/checkApplications.spec.ts @@ -0,0 +1,24 @@ +import { expect, test } from "@playwright/test"; + +const apps = [ + { port: 3001, name: "App 1", selector: "h6", text: "Module Federation Demo" }, + { port: 3002, name: "App 2", selector: "h6", text: "Material UI App" }, + { port: 3003, name: "App 3", selector: "h6", text: "Styled Components App" }, + { + port: 3004, + name: "App 4", + selector: "h1", + text: "Hello From Svelte world!" + } +]; + +apps.forEach(({ port, name, selector, text }) => { + test.describe(name, () => { + test(`build and run ${name}`, async ({ page }) => { + await page.goto(`http://localhost:${port}`); + const locator = page.locator(selector, { hasText: text }); + // App 4 has multiple instances due to Module Federation async startup, use first() + await expect(name === "App 4" ? locator.first() : locator).toBeVisible(); + }); + }); +}); diff --git a/examples/comprehensive-demo-react18/legacy-start.sh b/examples/comprehensive-demo-react18/legacy-start.sh new file mode 100755 index 000000000000..215d678e8d91 --- /dev/null +++ b/examples/comprehensive-demo-react18/legacy-start.sh @@ -0,0 +1 @@ +pnpm legacy:build && pnpm serve diff --git a/examples/comprehensive-demo-react18/package.json b/examples/comprehensive-demo-react18/package.json new file mode 100644 index 000000000000..194c6013736a --- /dev/null +++ b/examples/comprehensive-demo-react18/package.json @@ -0,0 +1,28 @@ +{ + "name": "comprehensive-demo-react18", + "description": "Multi-framework comprehensive demo for React 18", + "version": "0.0.0", + "scripts": { + "start": "pnpm build && pnpm serve", + "legacy:start": "pnpm legacy:build && pnpm serve", + "build": "pnpm --filter comprehensive-demo-react18_app* --parallel build", + "legacy:build": "pnpm --filter comprehensive-demo-react18_app* legacy:build", + "serve": "pnpm --filter comprehensive-demo-react18_app* --parallel serve", + "dev": "pnpm --filter comprehensive-demo-react18_app* --parallel dev", + "legacy:dev": "pnpm --filter comprehensive-demo-react18_app* --parallel legacy:dev", + "clean": "pnpm --filter comprehensive-demo-react18_app* --parallel clean", + "test:e2e": "npx playwright test", + "test:e2e:ui": "npx playwright test --ui", + "test:e2e:debug": "npx playwright test --debug", + "e2e:ci": "pnpm build && npx playwright install --with-deps && npx playwright test --reporter=list", + "legacy:e2e:ci": "pnpm legacy:build && npx playwright install --with-deps && LEGACY_START=true npx playwright test --reporter=list" + }, + "devDependencies": { + "@playwright/test": "^1.56.0", + "@rsdoctor/rspack-plugin": "0.3.7", + "@rsdoctor/webpack-plugin": "0.3.7", + "concurrently": "8.2.2", + "playwright": "^1.54.2", + "wait-on": "7.2.0" + } +} diff --git a/examples/comprehensive-demo-react18/playwright.config.ts b/examples/comprehensive-demo-react18/playwright.config.ts new file mode 100644 index 000000000000..0c83dc9d1d04 --- /dev/null +++ b/examples/comprehensive-demo-react18/playwright.config.ts @@ -0,0 +1,49 @@ +import { defineConfig, devices } from "@playwright/test"; + +const useLegacyStart = !!process.env.LEGACY_START; + +export default defineConfig({ + testDir: "./e2e", + timeout: 60000, + expect: { + timeout: 15000 + }, + fullyParallel: true, + forbidOnly: !!process.env.CI, + retries: process.env.CI ? 1 : 0, + workers: process.env.CI ? 1 : undefined, + reporter: [ + ["html", { outputFolder: "playwright-report", open: "never" }], + ["list"] + ], + use: { + baseURL: "http://localhost:3001", + trace: "on-first-retry", + screenshot: "only-on-failure", + video: "retain-on-failure", + viewport: { width: 1920, height: 1080 }, + // Clear all browser storage to prevent stale Module Federation metadata + storageState: undefined + }, + + projects: [ + { + name: "chromium", + use: { ...devices["Desktop Chrome"] } + } + ], + + webServer: useLegacyStart + ? { + command: "node start-legacy-servers.js", + port: 3001, + reuseExistingServer: false, + timeout: 180000 + } + : { + command: "pnpm start", + port: 3001, + reuseExistingServer: false, + timeout: 120000 + } +}); diff --git a/examples/comprehensive-demo-react18/start-legacy-servers.js b/examples/comprehensive-demo-react18/start-legacy-servers.js new file mode 100644 index 000000000000..00156c63caa3 --- /dev/null +++ b/examples/comprehensive-demo-react18/start-legacy-servers.js @@ -0,0 +1,68 @@ +const { spawn } = require("child_process"); +const http = require("http"); + +console.log("Building legacy apps..."); +const buildProcess = spawn("pnpm", ["legacy:build"], { + stdio: "inherit", + shell: true +}); + +buildProcess.on("close", code => { + if (code !== 0) { + console.error("Build failed"); + process.exit(code); + } + + console.log("Starting servers..."); + const serveProcess = spawn("pnpm", ["serve"], { + stdio: ["pipe", "inherit", "inherit"], + shell: true, + detached: true + }); + + // Wait a bit for servers to start + setTimeout(() => { + console.log("Checking if servers are ready..."); + checkPorts(); + }, 3000); +}); + +const checkPorts = () => { + const ports = [3001, 3002, 3003, 3004, 3005]; + let readyCount = 0; + + ports.forEach(port => { + const req = http.request( + { + hostname: "localhost", + port, + path: "/", + method: "HEAD", + timeout: 2000 + }, + res => { + if (res.statusCode < 400) { + readyCount++; + console.log(`Port ${port} is ready (${readyCount}/${ports.length})`); + if (readyCount === ports.length) { + console.log("All servers are ready!"); + process.exit(0); + } + } + } + ); + + req.on("error", () => { + console.log(`Port ${port} not ready yet, retrying...`); + setTimeout(() => checkPorts(), 1000); + }); + + req.on("timeout", () => { + req.destroy(); + console.log(`Port ${port} timeout, retrying...`); + setTimeout(() => checkPorts(), 1000); + }); + + req.end(); + }); +}; diff --git a/examples/comprehensive-demo-react18/temp-cjs-ssr/host.config.js b/examples/comprehensive-demo-react18/temp-cjs-ssr/host.config.js new file mode 100644 index 000000000000..27ad78aaa982 --- /dev/null +++ b/examples/comprehensive-demo-react18/temp-cjs-ssr/host.config.js @@ -0,0 +1,45 @@ +const path = require("path"); +const { ModuleFederationPlugin } = require("@rspack/core").container; + +const remoteEntryPath = path.join(__dirname, "dist/remote/remoteEntry.js"); + +module.exports = { + target: "node", + mode: "development", + context: __dirname, + experiments: { + asyncStartup: true + }, + entry: { + main: path.resolve(__dirname, "host.js") + }, + output: { + path: path.join(__dirname, "dist/host"), + filename: "[name].js", + chunkFormat: "commonjs" + }, + plugins: [ + new ModuleFederationPlugin({ + name: "host", + remoteType: "commonjs-module", + experiments: { asyncStartup: true }, + remotes: { + remote: { + external: remoteEntryPath, + shareScope: "default" + } + }, + shared: { + react: { singleton: true, eager: false, requiredVersion: false }, + "react-dom": { singleton: true, eager: false, requiredVersion: false } + } + }) + ], + resolve: { + alias: { + react: require.resolve("react"), + "react-dom": require.resolve("react-dom"), + "react-dom/server": require.resolve("react-dom/server") + } + } +}; diff --git a/examples/comprehensive-demo-react18/temp-cjs-ssr/host.js b/examples/comprehensive-demo-react18/temp-cjs-ssr/host.js new file mode 100644 index 000000000000..65d0754fcac4 --- /dev/null +++ b/examples/comprehensive-demo-react18/temp-cjs-ssr/host.js @@ -0,0 +1,20 @@ +const React = require("react"); +const ReactDOMServer = require("react-dom/server"); + +async function run() { + const remote = await import("remote/Widget"); + const Widget = remote.default || remote; + const element = React.createElement( + "div", + null, + React.createElement("h2", null, "SSR host rendering"), + React.createElement(Widget, { who: "server" }) + ); + const html = ReactDOMServer.renderToString(element); + console.log("[SSR HTML]\n" + html); +} + +run().catch(err => { + console.error("SSR failed", err); + process.exit(1); +}); diff --git a/examples/comprehensive-demo-react18/temp-cjs-ssr/remote.config.js b/examples/comprehensive-demo-react18/temp-cjs-ssr/remote.config.js new file mode 100644 index 000000000000..05fb91d06456 --- /dev/null +++ b/examples/comprehensive-demo-react18/temp-cjs-ssr/remote.config.js @@ -0,0 +1,41 @@ +const path = require("path"); +const { ModuleFederationPlugin } = require("@rspack/core").container; + +module.exports = { + target: "node", + mode: "development", + context: __dirname, + experiments: { + asyncStartup: true + }, + entry: { + remote: path.resolve(__dirname, "remote.js") + }, + output: { + path: path.join(__dirname, "dist/remote"), + filename: "[name].js", + chunkFormat: "commonjs", + library: { type: "commonjs-module" } + }, + plugins: [ + new ModuleFederationPlugin({ + name: "remote", + filename: "remoteEntry.js", + library: { type: "commonjs-module" }, + experiments: { asyncStartup: true }, + exposes: { + "./Widget": "./remote.js" + }, + shared: { + react: { singleton: true, eager: false, requiredVersion: false }, + "react-dom": { singleton: true, eager: false, requiredVersion: false } + } + }) + ], + resolve: { + alias: { + react: require.resolve("react"), + "react-dom": require.resolve("react-dom") + } + } +}; diff --git a/examples/comprehensive-demo-react18/temp-cjs-ssr/remote.js b/examples/comprehensive-demo-react18/temp-cjs-ssr/remote.js new file mode 100644 index 000000000000..58a3caa9e3a7 --- /dev/null +++ b/examples/comprehensive-demo-react18/temp-cjs-ssr/remote.js @@ -0,0 +1,6 @@ +const React = require("react"); + +// top-level sync consume of shared React to mimic real-world usage +module.exports = function Widget({ who = "world" } = {}) { + return React.createElement("div", null, `Remote Widget says hi to ${who}`); +}; diff --git a/examples/comprehensive-demo-react18/wait-all-ports.js b/examples/comprehensive-demo-react18/wait-all-ports.js new file mode 100644 index 000000000000..7815ebee8dfa --- /dev/null +++ b/examples/comprehensive-demo-react18/wait-all-ports.js @@ -0,0 +1,50 @@ +const http = require("http"); + +const ports = [3001, 3002, 3003, 3004, 3005]; +const checkPort = port => { + return new Promise(resolve => { + const req = http.request( + { + hostname: "localhost", + port, + path: "/", + method: "HEAD", + timeout: 1000 + }, + res => { + resolve(res.statusCode < 400); + } + ); + req.on("error", () => resolve(false)); + req.on("timeout", () => { + req.destroy(); + resolve(false); + }); + req.end(); + }); +}; + +const checkAllPorts = async () => { + const results = await Promise.all(ports.map(checkPort)); + return results.every(Boolean); +}; + +const waitForAllPorts = async () => { + console.log("Waiting for all MF servers to be ready..."); + let attempts = 0; + const maxAttempts = 120; // 2 minutes + + while (attempts < maxAttempts) { + if (await checkAllPorts()) { + console.log("All MF servers are ready!"); + process.exit(0); + } + attempts++; + await new Promise(resolve => setTimeout(resolve, 1000)); + } + + console.error("Timeout waiting for MF servers"); + process.exit(1); +}; + +waitForAllPorts(); diff --git a/package.json b/package.json index 9d7daab37df4..8e927f299202 100644 --- a/package.json +++ b/package.json @@ -60,6 +60,7 @@ "pnpm": "10.20.0" }, "devDependencies": { + "@module-federation/webpack-bundler-runtime": "0.21.6", "@biomejs/biome": "^2.3.6", "@microsoft/api-extractor": "7.54.0", "@microsoft/api-extractor-model": "7.31.3", @@ -87,6 +88,10 @@ "patchedDependencies": { "webpack-sources@3.3.3": "patches/webpack-sources@3.3.3.patch" }, + "overrides": { + "@module-federation/webpack-bundler-runtime": "0.21.6", + "@module-federation/runtime-tools": "0.21.6" + }, "onlyBuiltDependencies": [ "@biomejs/biome", "@swc/core", diff --git a/packages/rspack/etc/core.api.md b/packages/rspack/etc/core.api.md index f1f8543281d0..ab91163f6a0d 100644 --- a/packages/rspack/etc/core.api.md +++ b/packages/rspack/etc/core.api.md @@ -1348,6 +1348,7 @@ class ConsumeSharedPlugin extends RspackBuiltinPlugin { eager: boolean; }][]; enhanced: boolean; + asyncStartup: boolean; }; // (undocumented) raw(compiler: Compiler): BuiltinPlugin; @@ -1358,6 +1359,7 @@ export type ConsumeSharedPluginOptions = { consumes: Consumes; shareScope?: string; enhanced?: boolean; + asyncStartup?: boolean; }; // @public (undocumented) @@ -4839,6 +4841,8 @@ class ModuleFederationPlugin { // @public (undocumented) export interface ModuleFederationPluginOptions extends Omit { + // (undocumented) + experiments?: ModuleFederationRuntimeExperimentsOptions; // (undocumented) implementation?: string; // (undocumented) @@ -4861,6 +4865,10 @@ export interface ModuleFederationPluginV1Options { // (undocumented) enhanced?: boolean; // (undocumented) + experiments?: { + asyncStartup?: boolean; + }; + // (undocumented) exposes?: Exposes; // (undocumented) filename?: string; @@ -4880,6 +4888,12 @@ export interface ModuleFederationPluginV1Options { shareScope?: string; } +// @public (undocumented) +interface ModuleFederationRuntimeExperimentsOptions { + // (undocumented) + asyncStartup?: boolean; +} + declare namespace ModuleFilenameHelpers { export { asRegExp, @@ -7381,6 +7395,8 @@ class SharePlugin { // (undocumented) apply(compiler: Compiler): void; // (undocumented) + _asyncStartup: boolean; + // (undocumented) _consumes: { [x: string]: { import: string | false | undefined; @@ -7416,6 +7432,7 @@ export type SharePluginOptions = { shareScope?: string; shared: Shared; enhanced: boolean; + asyncStartup?: boolean; }; // @public (undocumented) diff --git a/packages/rspack/package.json b/packages/rspack/package.json index c1631a7ac1d0..ffab28400074 100644 --- a/packages/rspack/package.json +++ b/packages/rspack/package.json @@ -60,7 +60,7 @@ "webpack-sources": "3.3.3" }, "dependencies": { - "@module-federation/runtime-tools": "0.21.4", + "@module-federation/runtime-tools": "0.21.6", "@rspack/binding": "workspace:*", "@rspack/lite-tapable": "1.1.0" }, diff --git a/packages/rspack/src/container/ModuleFederationPlugin.ts b/packages/rspack/src/container/ModuleFederationPlugin.ts index 505e56bd5b58..4c9dbf783753 100644 --- a/packages/rspack/src/container/ModuleFederationPlugin.ts +++ b/packages/rspack/src/container/ModuleFederationPlugin.ts @@ -10,7 +10,10 @@ import { type RemoteAliasMap } from "./ModuleFederationManifestPlugin"; import type { ModuleFederationPluginV1Options } from "./ModuleFederationPluginV1"; -import { ModuleFederationRuntimePlugin } from "./ModuleFederationRuntimePlugin"; +import { + type ModuleFederationRuntimeExperimentsOptions, + ModuleFederationRuntimePlugin +} from "./ModuleFederationRuntimePlugin"; import { parseOptions } from "./options"; declare const MF_RUNTIME_CODE: string; @@ -26,6 +29,7 @@ export interface ModuleFederationPluginOptions ModuleFederationManifestPluginOptions, "remoteAliasMap" | "globalName" | "name" | "exposes" | "shared" >; + experiments?: ModuleFederationRuntimeExperimentsOptions; } export type RuntimePlugins = string[] | [string, Record][]; @@ -44,9 +48,14 @@ export class ModuleFederationPlugin { // Generate the runtime entry content const entryRuntime = getDefaultEntryRuntime(paths, this._options, compiler); + const runtimeExperiments: ModuleFederationRuntimeExperimentsOptions = { + asyncStartup: this._options.experiments?.asyncStartup ?? false + }; + // Pass only the entry runtime to the Rust-side plugin new ModuleFederationRuntimePlugin({ - entryRuntime + entryRuntime, + experiments: runtimeExperiments }).apply(compiler); new webpack.container.ModuleFederationPluginV1({ diff --git a/packages/rspack/src/container/ModuleFederationPluginV1.ts b/packages/rspack/src/container/ModuleFederationPluginV1.ts index 851c7f89cb11..3d9c94570b89 100644 --- a/packages/rspack/src/container/ModuleFederationPluginV1.ts +++ b/packages/rspack/src/container/ModuleFederationPluginV1.ts @@ -19,6 +19,9 @@ export interface ModuleFederationPluginV1Options { shareScope?: string; shared?: Shared; enhanced?: boolean; + experiments?: { + asyncStartup?: boolean; + }; } export class ModuleFederationPluginV1 { @@ -27,6 +30,7 @@ export class ModuleFederationPluginV1 { apply(compiler: Compiler) { const { _options: options } = this; const enhanced = options.enhanced ?? false; + const asyncStartup = options.experiments?.asyncStartup ?? false; const library = options.library || { type: "var", name: options.name }; const remoteType = @@ -40,7 +44,7 @@ export class ModuleFederationPluginV1 { compiler.options.output.enabledLibraryTypes!.push(library.type); } compiler.hooks.afterPlugins.tap("ModuleFederationPlugin", () => { - new ShareRuntimePlugin(this._options.enhanced).apply(compiler); + new ShareRuntimePlugin(enhanced).apply(compiler); if ( options.exposes && (Array.isArray(options.exposes) @@ -74,7 +78,8 @@ export class ModuleFederationPluginV1 { new SharePlugin({ shared: options.shared, shareScope: options.shareScope, - enhanced + enhanced, + asyncStartup }).apply(compiler); } }); diff --git a/packages/rspack/src/container/ModuleFederationRuntimePlugin.ts b/packages/rspack/src/container/ModuleFederationRuntimePlugin.ts index 0d35ade63432..86faebb6bd11 100644 --- a/packages/rspack/src/container/ModuleFederationRuntimePlugin.ts +++ b/packages/rspack/src/container/ModuleFederationRuntimePlugin.ts @@ -2,8 +2,13 @@ import { BuiltinPluginName } from "@rspack/binding"; import { create } from "../builtin-plugin/base"; +export interface ModuleFederationRuntimeExperimentsOptions { + asyncStartup?: boolean; +} + export interface ModuleFederationRuntimeOptions { entryRuntime?: string; + experiments?: ModuleFederationRuntimeExperimentsOptions; } export const ModuleFederationRuntimePlugin = create( diff --git a/packages/rspack/src/sharing/ConsumeSharedPlugin.ts b/packages/rspack/src/sharing/ConsumeSharedPlugin.ts index fe5e24105797..30c647decb5c 100644 --- a/packages/rspack/src/sharing/ConsumeSharedPlugin.ts +++ b/packages/rspack/src/sharing/ConsumeSharedPlugin.ts @@ -16,6 +16,7 @@ export type ConsumeSharedPluginOptions = { consumes: Consumes; shareScope?: string; enhanced?: boolean; + asyncStartup?: boolean; }; export type Consumes = (ConsumesItem | ConsumesObject)[] | ConsumesObject; export type ConsumesItem = string; @@ -86,7 +87,8 @@ export class ConsumeSharedPlugin extends RspackBuiltinPlugin { eager: !!item.eager }) ), - enhanced: options.enhanced ?? false + enhanced: options.enhanced ?? false, + asyncStartup: options.asyncStartup ?? false }; } @@ -98,7 +100,8 @@ export class ConsumeSharedPlugin extends RspackBuiltinPlugin { key, ...v })), - enhanced: this._options.enhanced + enhanced: this._options.enhanced, + asyncStartup: this._options.asyncStartup }; return createBuiltinPlugin(this.name, rawOptions); } diff --git a/packages/rspack/src/sharing/SharePlugin.ts b/packages/rspack/src/sharing/SharePlugin.ts index 571ebf8bf194..410f3adaabe6 100644 --- a/packages/rspack/src/sharing/SharePlugin.ts +++ b/packages/rspack/src/sharing/SharePlugin.ts @@ -8,6 +8,7 @@ export type SharePluginOptions = { shareScope?: string; shared: Shared; enhanced: boolean; + asyncStartup?: boolean; }; export type Shared = (SharedItem | SharedObject)[] | SharedObject; export type SharedItem = string; @@ -31,6 +32,7 @@ export class SharePlugin { _consumes; _provides; _enhanced; + _asyncStartup; constructor(options: SharePluginOptions) { const sharedOptions = parseOptions( @@ -80,13 +82,15 @@ export class SharePlugin { this._consumes = consumes; this._provides = provides; this._enhanced = options.enhanced ?? false; + this._asyncStartup = options.asyncStartup ?? false; } apply(compiler: Compiler) { new ConsumeSharedPlugin({ shareScope: this._shareScope, consumes: this._consumes, - enhanced: this._enhanced + enhanced: this._enhanced, + asyncStartup: this._asyncStartup }).apply(compiler); new ProvideSharedPlugin({ shareScope: this._shareScope, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2321cf528840..399ebcd28efd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,6 +4,10 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false +overrides: + '@module-federation/webpack-bundler-runtime': 0.21.6 + '@module-federation/runtime-tools': 0.21.6 + patchedDependencies: webpack-sources@3.3.3: hash: b2a26650f08a2359d0a3cd81fa6fa272aa7441a28dd7e601792da5ed5d2b4aee @@ -22,6 +26,9 @@ importers: '@microsoft/api-extractor-model': specifier: 7.31.3 version: 7.31.3(@types/node@20.19.25) + '@module-federation/webpack-bundler-runtime': + specifier: 0.21.6 + version: 0.21.6 '@rslint/core': specifier: 0.1.13 version: 0.1.13 @@ -72,7 +79,7 @@ importers: version: 5.9.3 webpack: specifier: 5.102.1 - version: 5.102.1 + version: 5.102.1(webpack-cli@5.1.4) zx: specifier: 8.8.5 version: 8.8.5 @@ -81,7 +88,7 @@ importers: devDependencies: '@napi-rs/cli': specifier: 3.0.4 - version: 3.0.4(@emnapi/runtime@1.5.0)(@types/node@20.19.25)(emnapi@1.7.1(node-addon-api@7.1.1)) + version: 3.0.4(@emnapi/runtime@1.7.1)(@types/node@20.19.25)(emnapi@1.7.1(node-addon-api@7.1.1)) '@napi-rs/wasm-runtime': specifier: 1.0.7 version: 1.0.7 @@ -127,7 +134,7 @@ importers: devDependencies: '@napi-rs/cli': specifier: 3.0.4 - version: 3.0.4(@emnapi/runtime@1.5.0)(@types/node@20.19.25)(emnapi@1.7.1(node-addon-api@7.1.1)) + version: 3.0.4(@emnapi/runtime@1.7.1)(@types/node@20.19.25)(emnapi@1.7.1(node-addon-api@7.1.1)) '@napi-rs/wasm-runtime': specifier: 1.0.7 version: 1.0.7 @@ -138,6 +145,273 @@ importers: specifier: ^5.9.3 version: 5.9.3 + examples/comprehensive-demo-react18: + devDependencies: + '@playwright/test': + specifier: ^1.56.0 + version: 1.56.1 + '@rsdoctor/rspack-plugin': + specifier: 0.3.7 + version: 0.3.7(@rspack/core@1.6.4(@swc/helpers@0.5.17)) + '@rsdoctor/webpack-plugin': + specifier: 0.3.7 + version: 0.3.7(@rspack/core@1.6.4(@swc/helpers@0.5.17))(webpack@5.102.1) + concurrently: + specifier: 8.2.2 + version: 8.2.2 + playwright: + specifier: ^1.54.2 + version: 1.56.1 + wait-on: + specifier: 7.2.0 + version: 7.2.0 + + examples/comprehensive-demo-react18/app-01: + dependencies: + '@babel/core': + specifier: ^7.28.5 + version: 7.28.5 + '@babel/preset-react': + specifier: ^7.28.5 + version: 7.28.5(@babel/core@7.28.5) + '@emotion/react': + specifier: ^11.13.5 + version: 11.14.0(@types/react@19.2.6)(react@19.2.0) + '@emotion/styled': + specifier: ^11.13.5 + version: 11.14.1(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react@19.2.0) + '@mui/material': + specifier: ^5.15.20 + version: 5.18.0(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@rspack/cli': + specifier: workspace:* + version: link:../../../packages/rspack-cli + '@rspack/core': + specifier: workspace:* + version: link:../../../packages/rspack + '@rspack/dev-server': + specifier: ~1.1.4 + version: 1.1.4(@rspack/core@packages+rspack)(@types/express@4.17.25)(webpack-cli@5.1.4)(webpack@5.102.1) + babel-loader: + specifier: ^10.0.0 + version: 10.0.0(@babel/core@7.28.5)(webpack@5.102.1) + html-webpack-plugin: + specifier: ^5.6.5 + version: 5.6.5(@rspack/core@packages+rspack)(webpack@5.102.1) + markdown-to-jsx: + specifier: ^8.0.0 + version: 8.0.0(react@19.2.0) + react: + specifier: ^19.1.1 + version: 19.2.0 + react-dom: + specifier: ^19.1.1 + version: 19.2.0(react@19.2.0) + react-router-dom: + specifier: ^5.1.2 + version: 5.3.4(react@19.2.0) + serve: + specifier: ^14.2.3 + version: 14.2.5 + webpack: + specifier: 5.102.1 + version: 5.102.1(webpack-cli@5.1.4) + webpack-cli: + specifier: ^5.1.4 + version: 5.1.4(webpack-dev-server@5.2.2)(webpack@5.102.1) + devDependencies: + '@module-federation/enhanced': + specifier: 0.21.6 + version: 0.21.6(@rspack/core@packages+rspack)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.9.3)(webpack@5.102.1) + '@module-federation/runtime': + specifier: 0.21.6 + version: 0.21.6 + '@module-federation/sdk': + specifier: 0.21.6 + version: 0.21.6 + '@pmmmwh/react-refresh-webpack-plugin': + specifier: 0.5.15 + version: 0.5.15(@types/webpack@5.28.0(webpack-cli@5.1.4))(react-refresh@0.18.0)(type-fest@4.41.0)(webpack-dev-server@5.2.2)(webpack@5.102.1) + '@rspack/plugin-react-refresh': + specifier: ^1.5.3 + version: 1.5.3(react-refresh@0.18.0) + raw-loader: + specifier: ^4.0.2 + version: 4.0.2(webpack@5.102.1) + react-refresh: + specifier: ^0.18.0 + version: 0.18.0 + + examples/comprehensive-demo-react18/app-02: + dependencies: + '@babel/core': + specifier: ^7.28.5 + version: 7.28.5 + '@babel/preset-react': + specifier: ^7.28.5 + version: 7.28.5(@babel/core@7.28.5) + '@emotion/react': + specifier: ^11.13.5 + version: 11.14.0(@types/react@19.2.6)(react@19.2.0) + '@emotion/styled': + specifier: ^11.13.5 + version: 11.14.1(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react@19.2.0) + '@module-federation/enhanced': + specifier: 0.21.6 + version: 0.21.6(@rspack/core@packages+rspack)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.9.3)(webpack@5.102.1) + '@mui/material': + specifier: ^5.15.20 + version: 5.18.0(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@rspack/cli': + specifier: workspace:* + version: link:../../../packages/rspack-cli + '@rspack/core': + specifier: workspace:* + version: link:../../../packages/rspack + '@rspack/dev-server': + specifier: ~1.1.4 + version: 1.1.4(@rspack/core@packages+rspack)(@types/express@4.17.25)(webpack-cli@5.1.4)(webpack@5.102.1) + babel-loader: + specifier: ^10.0.0 + version: 10.0.0(@babel/core@7.28.5)(webpack@5.102.1) + html-webpack-plugin: + specifier: ^5.6.5 + version: 5.6.5(@rspack/core@packages+rspack)(webpack@5.102.1) + react: + specifier: ^19.1.1 + version: 19.2.0 + react-dom: + specifier: ^19.1.1 + version: 19.2.0(react@19.2.0) + react-router-dom: + specifier: ^5.1.2 + version: 5.3.4(react@19.2.0) + serve: + specifier: ^14.2.3 + version: 14.2.5 + webpack: + specifier: 5.102.1 + version: 5.102.1(webpack-cli@5.1.4) + webpack-cli: + specifier: ^5.1.4 + version: 5.1.4(webpack-dev-server@5.2.2)(webpack@5.102.1) + devDependencies: + '@pmmmwh/react-refresh-webpack-plugin': + specifier: 0.5.15 + version: 0.5.15(@types/webpack@5.28.0(webpack-cli@5.1.4))(react-refresh@0.18.0)(type-fest@4.41.0)(webpack-dev-server@5.2.2)(webpack@5.102.1) + '@rspack/plugin-react-refresh': + specifier: ^1.5.3 + version: 1.5.3(react-refresh@0.18.0) + react-refresh: + specifier: ^0.18.0 + version: 0.18.0 + + examples/comprehensive-demo-react18/app-03: + dependencies: + '@babel/core': + specifier: ^7.28.5 + version: 7.28.5 + '@babel/preset-react': + specifier: ^7.28.5 + version: 7.28.5(@babel/core@7.28.5) + '@module-federation/enhanced': + specifier: 0.21.6 + version: 0.21.6(@rspack/core@packages+rspack)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.9.3)(webpack@5.102.1) + '@rspack/cli': + specifier: workspace:* + version: link:../../../packages/rspack-cli + '@rspack/core': + specifier: workspace:* + version: link:../../../packages/rspack + '@rspack/dev-server': + specifier: ~1.1.4 + version: 1.1.4(@rspack/core@packages+rspack)(@types/express@4.17.25)(webpack-cli@5.1.4)(webpack@5.102.1) + babel-loader: + specifier: ^10.0.0 + version: 10.0.0(@babel/core@7.28.5)(webpack@5.102.1) + html-webpack-plugin: + specifier: ^5.6.5 + version: 5.6.5(@rspack/core@packages+rspack)(webpack@5.102.1) + react: + specifier: ^19.1.1 + version: 19.2.0 + react-dom: + specifier: ^19.1.1 + version: 19.2.0(react@19.2.0) + serve: + specifier: ^14.2.3 + version: 14.2.5 + styled-components: + specifier: ^5.0.1 + version: 5.3.11(@babel/core@7.28.5)(react-dom@19.2.0(react@19.2.0))(react-is@19.2.0)(react@19.2.0) + webpack: + specifier: 5.102.1 + version: 5.102.1(webpack-cli@5.1.4) + webpack-cli: + specifier: ^5.1.4 + version: 5.1.4(webpack-dev-server@5.2.2)(webpack@5.102.1) + devDependencies: + '@pmmmwh/react-refresh-webpack-plugin': + specifier: 0.5.15 + version: 0.5.15(@types/webpack@5.28.0(webpack-cli@5.1.4))(react-refresh@0.18.0)(type-fest@4.41.0)(webpack-dev-server@5.2.2)(webpack@5.102.1) + react-refresh: + specifier: ^0.18.0 + version: 0.18.0 + + examples/comprehensive-demo-react18/app-04: + devDependencies: + '@module-federation/enhanced': + specifier: 0.21.6 + version: 0.21.6(@rspack/core@packages+rspack)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.9.3)(webpack@5.102.1) + '@pmmmwh/react-refresh-webpack-plugin': + specifier: 0.5.15 + version: 0.5.15(@types/webpack@5.28.0(webpack-cli@5.1.4))(react-refresh@0.18.0)(type-fest@4.41.0)(webpack-dev-server@5.0.4)(webpack@5.102.1) + '@rspack/cli': + specifier: workspace:* + version: link:../../../packages/rspack-cli + '@rspack/core': + specifier: workspace:* + version: link:../../../packages/rspack + '@rspack/dev-server': + specifier: ~1.1.4 + version: 1.1.4(@rspack/core@packages+rspack)(@types/express@4.17.25)(webpack-cli@5.1.4)(webpack@5.102.1) + cross-env: + specifier: ^10.1.0 + version: 10.1.0 + css-loader: + specifier: ^7.1.2 + version: 7.1.2(@rspack/core@packages+rspack)(webpack@5.102.1) + html-webpack-plugin: + specifier: ^5.6.5 + version: 5.6.5(@rspack/core@packages+rspack)(webpack@5.102.1) + mini-css-extract-plugin: + specifier: 2.9.2 + version: 2.9.2(webpack@5.102.1) + react-refresh: + specifier: ^0.18.0 + version: 0.18.0 + serve: + specifier: ^14.2.3 + version: 14.2.5 + style-loader: + specifier: ^4.0.0 + version: 4.0.0(webpack@5.102.1) + svelte: + specifier: 4.2.18 + version: 4.2.18 + svelte-loader: + specifier: 3.2.3 + version: 3.2.3(svelte@4.2.18) + webpack: + specifier: 5.102.1 + version: 5.102.1(webpack-cli@5.1.4) + webpack-cli: + specifier: ^5.1.4 + version: 5.1.4(webpack-dev-server@5.0.4)(webpack@5.102.1) + webpack-dev-server: + specifier: 5.0.4 + version: 5.0.4(webpack-cli@5.1.4)(webpack@5.102.1) + npm/darwin-arm64: {} npm/darwin-x64: {} @@ -179,10 +453,10 @@ importers: dependencies: react: specifier: ^19.1.1 - version: 19.1.1 + version: 19.2.0 react-dom: specifier: ^19.1.1 - version: 19.1.1(react@19.1.1) + version: 19.2.0(react@19.2.0) devDependencies: '@rspack/cli': specifier: workspace:* @@ -195,10 +469,10 @@ importers: version: 1.5.3(react-refresh@0.18.0) '@types/react': specifier: ^19.1.13 - version: 19.1.15 + version: 19.2.6 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.15) + version: 19.2.3(@types/react@19.2.6) react-refresh: specifier: ^0.18.0 version: 0.18.0 @@ -207,10 +481,10 @@ importers: dependencies: react: specifier: ^19.1.1 - version: 19.1.1 + version: 19.2.0 react-dom: specifier: ^19.1.1 - version: 19.1.1(react@19.1.1) + version: 19.2.0(react@19.2.0) devDependencies: '@rspack/cli': specifier: workspace:* @@ -223,10 +497,10 @@ importers: version: 1.5.3(react-refresh@0.18.0) '@types/react': specifier: ^19.1.13 - version: 19.1.15 + version: 19.2.6 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.15) + version: 19.2.3(@types/react@19.2.6) react-refresh: specifier: ^0.18.0 version: 0.18.0 @@ -293,8 +567,8 @@ importers: packages/rspack: dependencies: '@module-federation/runtime-tools': - specifier: 0.21.4 - version: 0.21.4 + specifier: 0.21.6 + version: 0.21.6 '@rspack/binding': specifier: workspace:* version: link:../../crates/node_binding @@ -340,7 +614,7 @@ importers: version: 4.48.1 prebundle: specifier: ^1.5.0 - version: 1.5.0(typescript@5.9.3) + version: 1.6.0(typescript@5.9.3) tinypool: specifier: ^1.1.1 version: 1.1.1 @@ -388,7 +662,7 @@ importers: version: 0.5.7 '@rspack/dev-server': specifier: ~1.1.4 - version: 1.1.4(@rspack/core@packages+rspack)(@types/express@4.17.23)(webpack@5.99.9) + version: 1.1.4(@rspack/core@packages+rspack)(@types/express@4.17.25)(webpack-cli@5.1.4)(webpack@5.102.1) exit-hook: specifier: ^4.0.0 version: 4.0.0 @@ -443,7 +717,7 @@ importers: version: 7.28.5 '@babel/traverse': specifier: 7.28.5 - version: 7.28.5 + version: 7.28.5(supports-color@5.5.0) '@babel/types': specifier: 7.28.5 version: 7.28.5 @@ -494,7 +768,7 @@ importers: version: 5.3.14(webpack@5.102.1) webpack: specifier: 5.102.1 - version: 5.102.1 + version: 5.102.1(webpack-cli@5.1.4) webpack-merge: specifier: 6.0.1 version: 6.0.1 @@ -558,14 +832,14 @@ importers: dependencies: react: specifier: ^19.1.1 - version: 19.1.1 + version: 19.2.0 react-dom: specifier: ^19.1.1 - version: 19.1.1(react@19.1.1) + version: 19.2.0(react@19.2.0) devDependencies: '@codspeed/vitest-plugin': specifier: ^4.0.1 - version: 4.0.1(vite@7.1.7(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))(vitest@3.2.4(@types/debug@4.1.12)(@types/node@20.19.25)(jiti@2.6.1)(jsdom@26.1.0)(less@4.4.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)) + version: 4.0.1(vite@7.2.4(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))(vitest@3.2.4(@types/debug@4.1.12)(@types/node@20.19.25)(jiti@2.6.1)(jsdom@26.1.0)(less@4.4.2)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)) '@rspack/cli': specifier: workspace:* version: link:../../packages/rspack-cli @@ -577,13 +851,13 @@ importers: version: 1.5.3(react-refresh@0.18.0) '@types/react': specifier: ^19.1.13 - version: 19.1.15 + version: 19.2.6 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.15) + version: 19.2.3(@types/react@19.2.6) vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@20.19.25)(jiti@2.6.1)(jsdom@26.1.0)(less@4.4.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) + version: 3.2.4(@types/debug@4.1.12)(@types/node@20.19.25)(jiti@2.6.1)(jsdom@26.1.0)(less@4.4.2)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) tests/e2e: devDependencies: @@ -594,14 +868,14 @@ importers: specifier: ^7.28.5 version: 7.28.5(@babel/core@7.28.5) '@playwright/test': - specifier: 1.56.0 - version: 1.56.0 + specifier: ^1.56.0 + version: 1.56.1 '@rspack/core': specifier: workspace:* version: link:../../packages/rspack '@rspack/dev-server': specifier: ~1.1.4 - version: 1.1.4(@rspack/core@packages+rspack)(@types/express@4.17.23)(webpack@5.102.1) + version: 1.1.4(@rspack/core@packages+rspack)(@types/express@4.17.25)(webpack-cli@5.1.4)(webpack@5.102.1) '@rspack/plugin-react-refresh': specifier: ^1.5.3 version: 1.5.3(react-refresh@0.18.0) @@ -631,16 +905,16 @@ importers: version: 8.2.0(@rspack/core@packages+rspack)(postcss@8.5.6)(typescript@5.9.3)(webpack@5.102.1) react: specifier: ^19.1.1 - version: 19.1.1 + version: 19.2.0 react-dom: specifier: ^19.1.1 - version: 19.1.1(react@19.1.1) + version: 19.2.0(react@19.2.0) react-refresh: specifier: ^0.18.0 version: 0.18.0 tailwindcss: specifier: ^3.4.18 - version: 3.4.18(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.9.3)) + version: 3.4.18(tsx@4.20.6)(yaml@2.8.1) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -673,7 +947,7 @@ importers: version: link:../../packages/rspack '@rspack/plugin-preact-refresh': specifier: 1.1.4 - version: 1.1.4(@prefresh/core@1.5.7(preact@10.27.2))(@prefresh/utils@1.2.1) + version: 1.1.4(@prefresh/core@1.5.9(preact@10.27.2))(@prefresh/utils@1.2.1) '@rspack/plugin-react-refresh': specifier: ^1.5.3 version: 1.5.3(react-refresh@0.18.0) @@ -703,10 +977,10 @@ importers: version: 21.1.7 '@types/react': specifier: ^19.1.13 - version: 19.1.15 + version: 19.2.6 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.15) + version: 19.2.3(@types/react@19.2.6) '@webdiscus/pug-loader': specifier: ^2.11.1 version: 2.11.1(enhanced-resolve@5.18.3)(pug@3.0.3)(webpack@5.102.1) @@ -787,7 +1061,7 @@ importers: version: 4.48.1 mime-types: specifier: ^3.0.1 - version: 3.0.1 + version: 3.0.2 mini-svg-data-uri: specifier: ^1.4.4 version: 1.4.4 @@ -808,10 +1082,10 @@ importers: version: 4.0.2(webpack@5.102.1) react: specifier: ^19.1.1 - version: 19.1.1 + version: 19.2.0 react-dom: specifier: ^19.1.1 - version: 19.1.1(react@19.1.1) + version: 19.2.0(react@19.2.0) react-refresh: specifier: ^0.18.0 version: 0.18.0 @@ -820,7 +1094,7 @@ importers: version: 5.0.10 sass-loader: specifier: ^16.0.6 - version: 16.0.6(@rspack/core@packages+rspack)(sass-embedded@1.93.2)(sass@1.93.2)(webpack@5.102.1) + version: 16.0.6(@rspack/core@packages+rspack)(sass-embedded@1.93.3)(sass@1.93.3)(webpack@5.102.1) source-map: specifier: ^0.7.6 version: 0.7.6 @@ -874,56 +1148,56 @@ importers: dependencies: react: specifier: ^19.1.1 - version: 19.1.1 + version: 19.2.0 website: dependencies: '@rstack-dev/doc-ui': specifier: 1.12.0 - version: 1.12.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + version: 1.12.0(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) axios: specifier: ^1.13.2 version: 1.13.2 markdown-to-jsx: specifier: ^8.0.0 - version: 8.0.0(react@19.1.1) + version: 8.0.0(react@19.2.0) mermaid: specifier: ^11.12.1 version: 11.12.1 react: specifier: ^19.1.1 - version: 19.1.1 + version: 19.2.0 react-dom: specifier: ^19.1.1 - version: 19.1.1(react@19.1.1) + version: 19.2.0(react@19.2.0) semver: specifier: ^7.7.3 version: 7.7.3 tailwindcss: specifier: ^3.4.18 - version: 3.4.18(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.9.3)) + version: 3.4.18(tsx@4.20.6)(yaml@2.8.1) devDependencies: '@rsbuild/plugin-sass': specifier: ^1.4.0 version: 1.4.0(@rsbuild/core@1.6.7) '@rspress/core': specifier: 2.0.0-rc.1 - version: 2.0.0-rc.1(@types/react@19.1.15) + version: 2.0.0-rc.1(@types/react@19.2.6) '@rspress/plugin-algolia': specifier: 2.0.0-rc.1 - version: 2.0.0-rc.1(@algolia/client-search@5.39.0)(@rspress/core@2.0.0-rc.1(@types/react@19.1.15))(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(search-insights@2.17.3) + version: 2.0.0-rc.1(@algolia/client-search@5.44.0)(@rspress/core@2.0.0-rc.1(@types/react@19.2.6))(@types/react@19.2.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(search-insights@2.17.3) '@rspress/plugin-client-redirects': specifier: 2.0.0-rc.1 - version: 2.0.0-rc.1(@rspress/core@2.0.0-rc.1(@types/react@19.1.15)) + version: 2.0.0-rc.1(@rspress/core@2.0.0-rc.1(@types/react@19.2.6)) '@rspress/plugin-llms': specifier: 2.0.0-rc.1 - version: 2.0.0-rc.1(@rspress/core@2.0.0-rc.1(@types/react@19.1.15)) + version: 2.0.0-rc.1(@rspress/core@2.0.0-rc.1(@types/react@19.2.6)) '@rspress/plugin-rss': specifier: 2.0.0-rc.1 - version: 2.0.0-rc.1(@rspress/core@2.0.0-rc.1(@types/react@19.1.15)) + version: 2.0.0-rc.1(@rspress/core@2.0.0-rc.1(@types/react@19.2.6)) '@rspress/plugin-sitemap': specifier: 2.0.0-rc.1 - version: 2.0.0-rc.1(@rspress/core@2.0.0-rc.1(@types/react@19.1.15)) + version: 2.0.0-rc.1(@rspress/core@2.0.0-rc.1(@types/react@19.2.6)) '@shikijs/transformers': specifier: ^3.15.0 version: 3.15.0 @@ -932,7 +1206,7 @@ importers: version: 20.19.25 '@types/react': specifier: ^19.1.13 - version: 19.1.15 + version: 19.2.6 '@types/semver': specifier: ^7.7.1 version: 7.7.1 @@ -956,7 +1230,7 @@ importers: version: 1.1.0(@rsbuild/core@1.6.7) rspress-plugin-font-open-sans: specifier: 1.0.3 - version: 1.0.3(@rspress/core@2.0.0-rc.1(@types/react@19.1.15)) + version: 1.0.3(@rspress/core@2.0.0-rc.1(@types/react@19.2.6)) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -975,14 +1249,14 @@ packages: '@actions/io@1.1.3': resolution: {integrity: sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q==} - '@ai-sdk/gateway@1.0.32': - resolution: {integrity: sha512-TQRIM63EI/ccJBc7RxeB8nq/CnGNnyl7eu5stWdLwL41stkV5skVeZJe0QRvFbaOrwCkgUVE0yrUqJi4tgDC1A==} + '@ai-sdk/gateway@2.0.13': + resolution: {integrity: sha512-q8M+7+VEKp91I295cjNDgQ4LyGImKj5cDLVARDay7nBTXGjIRZOlthYE7K6Rbz2yHKFyTmKH7MMkYavAM7L/UQ==} engines: {node: '>=18'} peerDependencies: zod: ^3.25.76 || ^4.1.8 - '@ai-sdk/provider-utils@3.0.10': - resolution: {integrity: sha512-T1gZ76gEIwffep6MWI0QNy9jgoybUHE7TRaHB5k54K8mF91ciGFlbtCGxDYhMH3nCRergKwYFIDeFF0hJSIQHQ==} + '@ai-sdk/provider-utils@3.0.17': + resolution: {integrity: sha512-TR3Gs4I3Tym4Ll+EPdzRdvo/rc8Js6c4nVhFLuvGLX/Y4V9ZcQMa/HTiYsHEgmYrf1zVi6Q145UEZUfleOwOjw==} engines: {node: '>=18'} peerDependencies: zod: ^3.25.76 || ^4.1.8 @@ -991,8 +1265,8 @@ packages: resolution: {integrity: sha512-6o7Y2SeO9vFKB8lArHXehNuusnpddKPk7xqL7T2/b+OvXMRIXUO1rR4wcv1hAFUAT9avGZshty3Wlua/XA7TvA==} engines: {node: '>=18'} - '@ai-sdk/react@2.0.59': - resolution: {integrity: sha512-whuMGkiRugJIQNJEIpt3gv53EsvQ6ub7Qh19ujbUcvXZKwoCCZlEGmUqEJqvPVRm95d4uYXFxEk0wqpxOpsm6g==} + '@ai-sdk/react@2.0.98': + resolution: {integrity: sha512-iXhTc1jFkcCqtIp2o9OmgpDkjVozxiWFK8fBrDq9mvqxXIuTsYzjjQtbWt0bPf8YsKMjoDxHjGChL9BN6r4raw==} engines: {node: '>=18'} peerDependencies: react: ^18 || ^19 || ^19.0.0-rc @@ -1001,8 +1275,8 @@ packages: zod: optional: true - '@algolia/abtesting@1.5.0': - resolution: {integrity: sha512-W/ohRkbKQsqDWALJg28X15KF7Tcyg53L1MfdOkLgvkcCcofdzGHSimHHeNG05ojjFw9HK8+VPhe/Vwq4MozIJg==} + '@algolia/abtesting@1.10.0': + resolution: {integrity: sha512-mQT3jwuTgX8QMoqbIR7mPlWkqQqBPQaPabQzm37xg2txMlaMogK/4hCiiESGdg39MlHZOVHeV+0VJuE7f5UK8A==} engines: {node: '>= 14.0.0'} '@algolia/autocomplete-core@1.19.2': @@ -1019,67 +1293,71 @@ packages: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' - '@algolia/client-abtesting@5.39.0': - resolution: {integrity: sha512-Vf0ZVe+qo3sHDrCinouJqlg8VoxM4Qo/KxNIqMYybkuctutfnp3kIY9OmESplOQ/9NGBthU9EG+4d5fBibWK/A==} + '@algolia/client-abtesting@5.44.0': + resolution: {integrity: sha512-KY5CcrWhRTUo/lV7KcyjrZkPOOF9bjgWpMj9z98VA+sXzVpZtkuskBLCKsWYFp2sbwchZFTd3wJM48H0IGgF7g==} engines: {node: '>= 14.0.0'} - '@algolia/client-analytics@5.39.0': - resolution: {integrity: sha512-V16ITZxYIwcv1arNce65JZmn94Ft6vKlBZ//gXw8AvIH32glJz1KcbaVAUr9p7PYlGZ/XVHP6LxDgrpNdtwgcA==} + '@algolia/client-analytics@5.44.0': + resolution: {integrity: sha512-LKOCE8S4ewI9bN3ot9RZoYASPi8b78E918/DVPW3HHjCMUe6i+NjbNG6KotU4RpP6AhRWZjjswbOkWelUO+OoA==} engines: {node: '>= 14.0.0'} - '@algolia/client-common@5.39.0': - resolution: {integrity: sha512-UCJTuwySEQeiKPWV3wruhuI/wHbDYenHzgL9pYsvh6r/u5Z+g61ip1iwdAlFp02CnywzI9O7+AQPh2ManYyHmQ==} + '@algolia/client-common@5.44.0': + resolution: {integrity: sha512-1yyJm4OYC2cztbS28XYVWwLXdwpLsMG4LoZLOltVglQ2+hc/i9q9fUDZyjRa2Bqt4DmkIfezagfMrokhyH4uxQ==} engines: {node: '>= 14.0.0'} - '@algolia/client-insights@5.39.0': - resolution: {integrity: sha512-s0ia8M/ZZR+iO2uLNTBrlQdEb6ZMAMcKMHckp5mcoglxrf8gHifL4LmdhGKdAxAn3UIagtqIP0RCnIymHUbm7A==} + '@algolia/client-insights@5.44.0': + resolution: {integrity: sha512-wVQWK6jYYsbEOjIMI+e5voLGPUIbXrvDj392IckXaCPvQ6vCMTXakQqOYCd+znQdL76S+3wHDo77HZWiAYKrtA==} engines: {node: '>= 14.0.0'} - '@algolia/client-personalization@5.39.0': - resolution: {integrity: sha512-vZPIt7Lw+toNsHZUiPhNIc1Z3vUjDp7nzn6AMOaPC73gEuTq2iLPNvM06CSB6aHePo5eMeJIP5YEKBUQUA/PJA==} + '@algolia/client-personalization@5.44.0': + resolution: {integrity: sha512-lkgRjOjOkqmIkebHjHpU9rLJcJNUDMm+eVSW/KJQYLjGqykEZxal+nYJJTBbLceEU2roByP/+27ZmgIwCdf0iA==} engines: {node: '>= 14.0.0'} - '@algolia/client-query-suggestions@5.39.0': - resolution: {integrity: sha512-jcPQr3iKTWNVli2NYHPv02aNLwixDjPCpOgMp9CZTvEiPI6Ec4jHX+oFr3LDZagOFY9e1xJhc/JrgMGGW1sHnw==} + '@algolia/client-query-suggestions@5.44.0': + resolution: {integrity: sha512-sYfhgwKu6NDVmZHL1WEKVLsOx/jUXCY4BHKLUOcYa8k4COCs6USGgz6IjFkUf+niwq8NCECMmTC4o/fVQOalsA==} engines: {node: '>= 14.0.0'} - '@algolia/client-search@5.39.0': - resolution: {integrity: sha512-/IYpF10BpthGZEJQZMhMqV4AqWr5avcWfZm/SIKK1RvUDmzGqLoW/+xeJVX9C8ZnNkIC8hivbIQFaNaRw0BFZQ==} + '@algolia/client-search@5.44.0': + resolution: {integrity: sha512-/FRKUM1G4xn3vV8+9xH1WJ9XknU8rkBGlefruq9jDhYUAvYozKimhrmC2pRqw/RyHhPivmgZCRuC8jHP8piz4Q==} engines: {node: '>= 14.0.0'} - '@algolia/ingestion@1.39.0': - resolution: {integrity: sha512-IgSHKUiuecqLfBlXiuCSdRTdsO3/yvpmXrMFz8fAJ8M4QmDtHkOuD769dmybRYqsbYMHivw+lir4BgbRGMtOIQ==} + '@algolia/ingestion@1.44.0': + resolution: {integrity: sha512-5+S5ynwMmpTpCLXGjTDpeIa81J+R4BLH0lAojOhmeGSeGEHQTqacl/4sbPyDTcidvnWhaqtyf8m42ue6lvISAw==} engines: {node: '>= 14.0.0'} - '@algolia/monitoring@1.39.0': - resolution: {integrity: sha512-8Xnd4+609SKC/hqVsuFc4evFBmvA2765/4NcH+Dpr756SKPbL1BY0X8kVxlmM3YBLNqnduSQxHxpDJUK58imCA==} + '@algolia/monitoring@1.44.0': + resolution: {integrity: sha512-xhaTN8pXJjR6zkrecg4Cc9YZaQK2LKm2R+LkbAq+AYGBCWJxtSGlNwftozZzkUyq4AXWoyoc0x2SyBtq5LRtqQ==} engines: {node: '>= 14.0.0'} - '@algolia/recommend@5.39.0': - resolution: {integrity: sha512-D7Ye2Ss/5xqUkQUxKm/VqEJLt5kARd9IMmjdzlxaKhGgNlOemTay0lwBmOVFuJRp7UODjp5c9+K+B8g0ORObIw==} + '@algolia/recommend@5.44.0': + resolution: {integrity: sha512-GNcite/uOIS7wgRU1MT7SdNIupGSW+vbK9igIzMePvD2Dl8dy0O3urKPKIbTuZQqiVH1Cb84y5cgLvwNrdCj/Q==} engines: {node: '>= 14.0.0'} - '@algolia/requester-browser-xhr@5.39.0': - resolution: {integrity: sha512-mgPte1ZJqpk9dkVs44J3wKAbHATvHZNlSpzhMdjMLIg/3qTycSZyDiomLiSlxE8CLsxyBAOJWnyKRHfom+Z1rg==} + '@algolia/requester-browser-xhr@5.44.0': + resolution: {integrity: sha512-YZHBk72Cd7pcuNHzbhNzF/FbbYszlc7JhZlDyQAchnX5S7tcemSS96F39Sy8t4O4WQLpFvUf1MTNedlitWdOsQ==} engines: {node: '>= 14.0.0'} - '@algolia/requester-fetch@5.39.0': - resolution: {integrity: sha512-LIrCkrxu1WnO3ev1+w6NnZ12JZL/o+2H9w6oWnZAjQZIlA/Ym6M9QHkt+OQ/SwkuoiNkW3DAo+Pi4A2V9FPtqg==} + '@algolia/requester-fetch@5.44.0': + resolution: {integrity: sha512-B9WHl+wQ7uf46t9cq+vVM/ypVbOeuldVDq9OtKsX2ApL2g/htx6ImB9ugDOOJmB5+fE31/XPTuCcYz/j03+idA==} engines: {node: '>= 14.0.0'} - '@algolia/requester-node-http@5.39.0': - resolution: {integrity: sha512-6beG+egPwXmvhAg+m0STCj+ZssDcjrLzf4L05aKm2nGglMXSSPz0cH/rM+kVD9krNfldiMctURd4wjojW1fV0w==} + '@algolia/requester-node-http@5.44.0': + resolution: {integrity: sha512-MULm0qeAIk4cdzZ/ehJnl1o7uB5NMokg83/3MKhPq0Pk7+I0uELGNbzIfAkvkKKEYcHALemKdArtySF9eKzh/A==} engines: {node: '>= 14.0.0'} '@alloc/quick-lru@5.2.0': resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + '@antfu/install-pkg@1.1.0': resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==} - '@antfu/utils@9.2.1': - resolution: {integrity: sha512-TMilPqXyii1AsiEii6l6ubRzbo76p6oshUSYPaKsmXDavyMLqjzVDkcp3pHp5ELMUNJHATcEOGxKTTsX9yYhGg==} + '@antfu/utils@9.3.0': + resolution: {integrity: sha512-9hFT4RauhcUzqOE4f1+frMKLZrgNog5b06I7VmZQV1BkvwvqrbC8EBZf3L1eEL2AKb6rNKjER0sEvJiSP1FXEA==} '@asamuzakjp/css-color@3.2.0': resolution: {integrity: sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==} @@ -1200,16 +1478,16 @@ packages: resolution: {integrity: sha512-qtLLQq1a3isK0iaq0Drl7Qt4PqeyjTrpFxNdA/20O/jYkGiA/oJA8DLMn1bzczsfjlUohe4dg39bpeAqG02uvA==} engines: {node: '>= 10'} - '@babel/code-frame@7.27.1': - resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} + '@babel/code-frame@7.24.2': + resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.28.4': - resolution: {integrity: sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==} + '@babel/code-frame@7.27.1': + resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} engines: {node: '>=6.9.0'} - '@babel/core@7.28.4': - resolution: {integrity: sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==} + '@babel/compat-data@7.28.5': + resolution: {integrity: sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==} engines: {node: '>=6.9.0'} '@babel/core@7.28.5': @@ -1250,10 +1528,6 @@ packages: resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.27.1': - resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} - engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.28.5': resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} engines: {node: '>=6.9.0'} @@ -1266,6 +1540,10 @@ packages: resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==} engines: {node: '>=6.9.0'} + '@babel/highlight@7.25.9': + resolution: {integrity: sha512-llL88JShoCsth8fF8R4SJnIn+WLvR6ccFxu1H3FlMhDontdcmZWf2HgIZ7AIqV3Xcck1idlohrN4EUBQz6klbw==} + engines: {node: '>=6.9.0'} + '@babel/parser@7.28.5': resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==} engines: {node: '>=6.0.0'} @@ -1392,6 +1670,10 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/runtime@7.28.4': + resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} + engines: {node: '>=6.9.0'} + '@babel/template@7.27.2': resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} engines: {node: '>=6.9.0'} @@ -1460,8 +1742,8 @@ packages: '@braintree/sanitize-url@7.1.1': resolution: {integrity: sha512-i1L7noDNxtFyL5DmZafWy1wRVhGehQmzZaz1HiN5e7iylJMSZR7ekOV7NsIqa5qBldlLrsKv4HbgFUVlQrz8Mw==} - '@bufbuild/protobuf@2.9.0': - resolution: {integrity: sha512-rnJenoStJ8nvmt9Gzye8nkYd6V22xUAnu4086ER7h1zJ508vStko4pMvDeQ446ilDTFpV5wnoc5YS7XvMwwMqA==} + '@bufbuild/protobuf@2.10.1': + resolution: {integrity: sha512-ckS3+vyJb5qGpEYv/s1OebUHDi/xSNtfgw1wqKZo7MR9F2z+qXr0q5XagafAG/9O0QPVIUfST0smluYSTpYFkg==} '@chevrotain/cst-dts-gen@11.0.3': resolution: {integrity: sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ==} @@ -1541,8 +1823,8 @@ packages: '@cspell/dict-dart@2.3.1': resolution: {integrity: sha512-xoiGnULEcWdodXI6EwVyqpZmpOoh8RA2Xk9BNdR7DLamV/QMvEYn8KJ7NlRiTSauJKPNkHHQ5EVHRM6sTS7jdg==} - '@cspell/dict-data-science@2.0.11': - resolution: {integrity: sha512-Dt+83nVCcF+dQyvFSaZjCKt1H5KbsVJFtH2X7VUfmIzQu8xCnV1fUmkhBzGJ+NiFs99Oy9JA6I9EjeqExzXk7g==} + '@cspell/dict-data-science@2.0.12': + resolution: {integrity: sha512-vI/mg6cI28IkFcpeINS7cm5M9HWemmXSTnxJiu3nmc4VAGx35SXIEyuLGBcsVzySvDablFYf4hsEpmg1XpVsUQ==} '@cspell/dict-django@4.1.5': resolution: {integrity: sha512-AvTWu99doU3T8ifoMYOMLW2CXKvyKLukPh1auOPwFGHzueWYvBBN+OxF8wF7XwjTBMMeRleVdLh3aWCDEX/ZWg==} @@ -1651,8 +1933,8 @@ packages: '@cspell/dict-public-licenses@2.0.15': resolution: {integrity: sha512-cJEOs901H13Pfy0fl4dCD1U+xpWIMaEPq8MeYU83FfDZvellAuSo4GqWCripfIqlhns/L6+UZEIJSOZnjgy7Wg==} - '@cspell/dict-python@4.2.21': - resolution: {integrity: sha512-M9OgwXWhpZqEZqKU2psB2DFsT8q5SwEahkQeIpNIRWIErjwG7I9yYhhfvPz6s5gMCMhhb3hqcPJTnmdgqGrQyg==} + '@cspell/dict-python@4.2.22': + resolution: {integrity: sha512-rgF7DuleVK2lkzlw33jjEfxS2a0CU5kwAhOqf5B6XkuaPbqZ/0g0LBCdwglAGccYu7sBuvxRS8Yubk+ytSAFTg==} '@cspell/dict-r@2.1.1': resolution: {integrity: sha512-71Ka+yKfG4ZHEMEmDxc6+blFkeTTvgKbKAbwiwQAuKl3zpqs1Y0vUtwW2N4b3LgmSPhV3ODVY0y4m5ofqDuKMw==} @@ -1779,170 +2061,230 @@ packages: search-insights: optional: true - '@emnapi/core@1.5.0': - resolution: {integrity: sha512-sbP8GzB1WDzacS8fgNPpHlp6C9VZe+SJP3F90W9rLemaQj2PzIuTEl1qDOYQf58YIpyjViI24y9aPWCjEzY2cg==} + '@emnapi/core@1.7.1': + resolution: {integrity: sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==} - '@emnapi/runtime@1.5.0': - resolution: {integrity: sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==} + '@emnapi/runtime@1.7.1': + resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==} '@emnapi/wasi-threads@1.1.0': resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} + '@emotion/babel-plugin@11.13.5': + resolution: {integrity: sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==} + + '@emotion/cache@11.14.0': + resolution: {integrity: sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==} + + '@emotion/hash@0.9.2': + resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==} + + '@emotion/is-prop-valid@1.4.0': + resolution: {integrity: sha512-QgD4fyscGcbbKwJmqNvUMSE02OsHUa+lAWKdEUIJKgqe5IwRSKd7+KhibEWdaKwgjLj0DRSHA9biAIqGBk05lw==} + + '@emotion/memoize@0.9.0': + resolution: {integrity: sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==} + + '@emotion/react@11.14.0': + resolution: {integrity: sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==} + peerDependencies: + '@types/react': '*' + react: '>=16.8.0' + peerDependenciesMeta: + '@types/react': + optional: true + + '@emotion/serialize@1.3.3': + resolution: {integrity: sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==} + + '@emotion/sheet@1.4.0': + resolution: {integrity: sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==} + + '@emotion/styled@11.14.1': + resolution: {integrity: sha512-qEEJt42DuToa3gurlH4Qqc1kVpNq8wO8cJtDzU46TjlzWjDlsVyevtYCRijVq3SrHsROS+gVQ8Fnea108GnKzw==} + peerDependencies: + '@emotion/react': ^11.0.0-rc.0 + '@types/react': '*' + react: '>=16.8.0' + peerDependenciesMeta: + '@types/react': + optional: true + + '@emotion/stylis@0.8.5': + resolution: {integrity: sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==} + + '@emotion/unitless@0.10.0': + resolution: {integrity: sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==} + + '@emotion/unitless@0.7.5': + resolution: {integrity: sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==} + + '@emotion/use-insertion-effect-with-fallbacks@1.2.0': + resolution: {integrity: sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==} + peerDependencies: + react: '>=16.8.0' + + '@emotion/utils@1.4.2': + resolution: {integrity: sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA==} + + '@emotion/weak-memoize@0.4.0': + resolution: {integrity: sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==} + '@epic-web/invariant@1.0.0': resolution: {integrity: sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==} - '@esbuild/aix-ppc64@0.25.10': - resolution: {integrity: sha512-0NFWnA+7l41irNuaSVlLfgNT12caWJVLzp5eAVhZ0z1qpxbockccEt3s+149rE64VUI3Ml2zt8Nv5JVc4QXTsw==} + '@esbuild/aix-ppc64@0.25.12': + resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.25.10': - resolution: {integrity: sha512-LSQa7eDahypv/VO6WKohZGPSJDq5OVOo3UoFR1E4t4Gj1W7zEQMUhI+lo81H+DtB+kP+tDgBp+M4oNCwp6kffg==} + '@esbuild/android-arm64@0.25.12': + resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.25.10': - resolution: {integrity: sha512-dQAxF1dW1C3zpeCDc5KqIYuZ1tgAdRXNoZP7vkBIRtKZPYe2xVr/d3SkirklCHudW1B45tGiUlz2pUWDfbDD4w==} + '@esbuild/android-arm@0.25.12': + resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.25.10': - resolution: {integrity: sha512-MiC9CWdPrfhibcXwr39p9ha1x0lZJ9KaVfvzA0Wxwz9ETX4v5CHfF09bx935nHlhi+MxhA63dKRRQLiVgSUtEg==} + '@esbuild/android-x64@0.25.12': + resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.25.10': - resolution: {integrity: sha512-JC74bdXcQEpW9KkV326WpZZjLguSZ3DfS8wrrvPMHgQOIEIG/sPXEN/V8IssoJhbefLRcRqw6RQH2NnpdprtMA==} + '@esbuild/darwin-arm64@0.25.12': + resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.25.10': - resolution: {integrity: sha512-tguWg1olF6DGqzws97pKZ8G2L7Ig1vjDmGTwcTuYHbuU6TTjJe5FXbgs5C1BBzHbJ2bo1m3WkQDbWO2PvamRcg==} + '@esbuild/darwin-x64@0.25.12': + resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.25.10': - resolution: {integrity: sha512-3ZioSQSg1HT2N05YxeJWYR+Libe3bREVSdWhEEgExWaDtyFbbXWb49QgPvFH8u03vUPX10JhJPcz7s9t9+boWg==} + '@esbuild/freebsd-arm64@0.25.12': + resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.10': - resolution: {integrity: sha512-LLgJfHJk014Aa4anGDbh8bmI5Lk+QidDmGzuC2D+vP7mv/GeSN+H39zOf7pN5N8p059FcOfs2bVlrRr4SK9WxA==} + '@esbuild/freebsd-x64@0.25.12': + resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.25.10': - resolution: {integrity: sha512-5luJWN6YKBsawd5f9i4+c+geYiVEw20FVW5x0v1kEMWNq8UctFjDiMATBxLvmmHA4bf7F6hTRaJgtghFr9iziQ==} + '@esbuild/linux-arm64@0.25.12': + resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.25.10': - resolution: {integrity: sha512-oR31GtBTFYCqEBALI9r6WxoU/ZofZl962pouZRTEYECvNF/dtXKku8YXcJkhgK/beU+zedXfIzHijSRapJY3vg==} + '@esbuild/linux-arm@0.25.12': + resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.25.10': - resolution: {integrity: sha512-NrSCx2Kim3EnnWgS4Txn0QGt0Xipoumb6z6sUtl5bOEZIVKhzfyp/Lyw4C1DIYvzeW/5mWYPBFJU3a/8Yr75DQ==} + '@esbuild/linux-ia32@0.25.12': + resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.25.10': - resolution: {integrity: sha512-xoSphrd4AZda8+rUDDfD9J6FUMjrkTz8itpTITM4/xgerAZZcFW7Dv+sun7333IfKxGG8gAq+3NbfEMJfiY+Eg==} + '@esbuild/linux-loong64@0.25.12': + resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.25.10': - resolution: {integrity: sha512-ab6eiuCwoMmYDyTnyptoKkVS3k8fy/1Uvq7Dj5czXI6DF2GqD2ToInBI0SHOp5/X1BdZ26RKc5+qjQNGRBelRA==} + '@esbuild/linux-mips64el@0.25.12': + resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.25.10': - resolution: {integrity: sha512-NLinzzOgZQsGpsTkEbdJTCanwA5/wozN9dSgEl12haXJBzMTpssebuXR42bthOF3z7zXFWH1AmvWunUCkBE4EA==} + '@esbuild/linux-ppc64@0.25.12': + resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.25.10': - resolution: {integrity: sha512-FE557XdZDrtX8NMIeA8LBJX3dC2M8VGXwfrQWU7LB5SLOajfJIxmSdyL/gU1m64Zs9CBKvm4UAuBp5aJ8OgnrA==} + '@esbuild/linux-riscv64@0.25.12': + resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.25.10': - resolution: {integrity: sha512-3BBSbgzuB9ajLoVZk0mGu+EHlBwkusRmeNYdqmznmMc9zGASFjSsxgkNsqmXugpPk00gJ0JNKh/97nxmjctdew==} + '@esbuild/linux-s390x@0.25.12': + resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.25.10': - resolution: {integrity: sha512-QSX81KhFoZGwenVyPoberggdW1nrQZSvfVDAIUXr3WqLRZGZqWk/P4T8p2SP+de2Sr5HPcvjhcJzEiulKgnxtA==} + '@esbuild/linux-x64@0.25.12': + resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.25.10': - resolution: {integrity: sha512-AKQM3gfYfSW8XRk8DdMCzaLUFB15dTrZfnX8WXQoOUpUBQ+NaAFCP1kPS/ykbbGYz7rxn0WS48/81l9hFl3u4A==} + '@esbuild/netbsd-arm64@0.25.12': + resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.25.10': - resolution: {integrity: sha512-7RTytDPGU6fek/hWuN9qQpeGPBZFfB4zZgcz2VK2Z5VpdUxEI8JKYsg3JfO0n/Z1E/6l05n0unDCNc4HnhQGig==} + '@esbuild/netbsd-x64@0.25.12': + resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.25.10': - resolution: {integrity: sha512-5Se0VM9Wtq797YFn+dLimf2Zx6McttsH2olUBsDml+lm0GOCRVebRWUvDtkY4BWYv/3NgzS8b/UM3jQNh5hYyw==} + '@esbuild/openbsd-arm64@0.25.12': + resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.25.10': - resolution: {integrity: sha512-XkA4frq1TLj4bEMB+2HnI0+4RnjbuGZfet2gs/LNs5Hc7D89ZQBHQ0gL2ND6Lzu1+QVkjp3x1gIcPKzRNP8bXw==} + '@esbuild/openbsd-x64@0.25.12': + resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/openharmony-arm64@0.25.10': - resolution: {integrity: sha512-AVTSBhTX8Y/Fz6OmIVBip9tJzZEUcY8WLh7I59+upa5/GPhh2/aM6bvOMQySspnCCHvFi79kMtdJS1w0DXAeag==} + '@esbuild/openharmony-arm64@0.25.12': + resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] - '@esbuild/sunos-x64@0.25.10': - resolution: {integrity: sha512-fswk3XT0Uf2pGJmOpDB7yknqhVkJQkAQOcW/ccVOtfx05LkbWOaRAtn5SaqXypeKQra1QaEa841PgrSL9ubSPQ==} + '@esbuild/sunos-x64@0.25.12': + resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.25.10': - resolution: {integrity: sha512-ah+9b59KDTSfpaCg6VdJoOQvKjI33nTaQr4UluQwW7aEwZQsbMCfTmfEO4VyewOxx4RaDT/xCy9ra2GPWmO7Kw==} + '@esbuild/win32-arm64@0.25.12': + resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.25.10': - resolution: {integrity: sha512-QHPDbKkrGO8/cz9LKVnJU22HOi4pxZnZhhA2HYHez5Pz4JeffhDjf85E57Oyco163GnzNCVkZK0b/n4Y0UHcSw==} + '@esbuild/win32-ia32@0.25.12': + resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.25.10': - resolution: {integrity: sha512-9KpxSVFCu0iK1owoez6aC/s/EdUQLDN3adTxGCqxMVhrPDj6bt5dbrHDXUuq+Bs2vATFBBrQS5vdQ/Ed2P+nbw==} + '@esbuild/win32-x64@0.25.12': + resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -1951,6 +2293,12 @@ packages: resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} engines: {node: '>=14'} + '@hapi/hoek@9.3.0': + resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} + + '@hapi/topo@5.1.0': + resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} + '@iarna/toml@3.0.0': resolution: {integrity: sha512-td6ZUkz2oS3VeleBcN+m//Q6HlCFCPrnI0FZhrt/h4XqLEdOyYp2u21nd8MdsR+WJy5r9PTDaHTDDfhf4H4l6Q==} @@ -1960,12 +2308,12 @@ packages: '@iconify/utils@3.0.2': resolution: {integrity: sha512-EfJS0rLfVuRuJRn4psJHtK2A9TqVnkxPpHY6lYHiB9+8eSuudsxbwMiavocG45ujOo6FJ+CIRlRnlOGinzkaGQ==} - '@inquirer/ansi@1.0.0': - resolution: {integrity: sha512-JWaTfCxI1eTmJ1BIv86vUfjVatOdxwD0DAVKYevY8SazeUUZtW+tNbsdejVO1GYE0GXJW1N1ahmiC3TFd+7wZA==} + '@inquirer/ansi@1.0.2': + resolution: {integrity: sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==} engines: {node: '>=18'} - '@inquirer/checkbox@4.2.4': - resolution: {integrity: sha512-2n9Vgf4HSciFq8ttKXk+qy+GsyTXPV1An6QAwe/8bkbbqvG4VW1I/ZY1pNu2rf+h9bdzMLPbRSfcNxkHBy/Ydw==} + '@inquirer/checkbox@4.3.2': + resolution: {integrity: sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1973,8 +2321,8 @@ packages: '@types/node': optional: true - '@inquirer/confirm@5.1.18': - resolution: {integrity: sha512-MilmWOzHa3Ks11tzvuAmFoAd/wRuaP3SwlT1IZhyMke31FKLxPiuDWcGXhU+PKveNOpAc4axzAgrgxuIJJRmLw==} + '@inquirer/confirm@5.1.21': + resolution: {integrity: sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1982,8 +2330,8 @@ packages: '@types/node': optional: true - '@inquirer/core@10.2.2': - resolution: {integrity: sha512-yXq/4QUnk4sHMtmbd7irwiepjB8jXU0kkFRL4nr/aDBA2mDz13cMakEWdDwX3eSCTkk03kwcndD1zfRAIlELxA==} + '@inquirer/core@10.3.2': + resolution: {integrity: sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1991,8 +2339,8 @@ packages: '@types/node': optional: true - '@inquirer/editor@4.2.20': - resolution: {integrity: sha512-7omh5y5bK672Q+Brk4HBbnHNowOZwrb/78IFXdrEB9PfdxL3GudQyDk8O9vQ188wj3xrEebS2M9n18BjJoI83g==} + '@inquirer/editor@4.2.23': + resolution: {integrity: sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -2000,8 +2348,8 @@ packages: '@types/node': optional: true - '@inquirer/expand@4.0.20': - resolution: {integrity: sha512-Dt9S+6qUg94fEvgn54F2Syf0Z3U8xmnBI9ATq2f5h9xt09fs2IJXSCIXyyVHwvggKWFXEY/7jATRo2K6Dkn6Ow==} + '@inquirer/expand@4.0.23': + resolution: {integrity: sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -2009,8 +2357,8 @@ packages: '@types/node': optional: true - '@inquirer/external-editor@1.0.2': - resolution: {integrity: sha512-yy9cOoBnx58TlsPrIxauKIFQTiyH+0MK4e97y4sV9ERbI+zDxw7i2hxHLCIEGIE/8PPvDxGhgzIOTSOWcs6/MQ==} + '@inquirer/external-editor@1.0.3': + resolution: {integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -2018,12 +2366,12 @@ packages: '@types/node': optional: true - '@inquirer/figures@1.0.13': - resolution: {integrity: sha512-lGPVU3yO9ZNqA7vTYz26jny41lE7yoQansmqdMLBEfqaGsmdg7V3W9mK9Pvb5IL4EVZ9GnSDGMO/cJXud5dMaw==} + '@inquirer/figures@1.0.15': + resolution: {integrity: sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==} engines: {node: '>=18'} - '@inquirer/input@4.2.4': - resolution: {integrity: sha512-cwSGpLBMwpwcZZsc6s1gThm0J+it/KIJ+1qFL2euLmSKUMGumJ5TcbMgxEjMjNHRGadouIYbiIgruKoDZk7klw==} + '@inquirer/input@4.3.1': + resolution: {integrity: sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -2031,8 +2379,8 @@ packages: '@types/node': optional: true - '@inquirer/number@3.0.20': - resolution: {integrity: sha512-bbooay64VD1Z6uMfNehED2A2YOPHSJnQLs9/4WNiV/EK+vXczf/R988itL2XLDGTgmhMF2KkiWZo+iEZmc4jqg==} + '@inquirer/number@3.0.23': + resolution: {integrity: sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -2040,8 +2388,8 @@ packages: '@types/node': optional: true - '@inquirer/password@4.0.20': - resolution: {integrity: sha512-nxSaPV2cPvvoOmRygQR+h0B+Av73B01cqYLcr7NXcGXhbmsYfUb8fDdw2Us1bI2YsX+VvY7I7upgFYsyf8+Nug==} + '@inquirer/password@4.0.23': + resolution: {integrity: sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -2049,8 +2397,8 @@ packages: '@types/node': optional: true - '@inquirer/prompts@7.8.6': - resolution: {integrity: sha512-68JhkiojicX9SBUD8FE/pSKbOKtwoyaVj1kwqLfvjlVXZvOy3iaSWX4dCLsZyYx/5Ur07Fq+yuDNOen+5ce6ig==} + '@inquirer/prompts@7.10.1': + resolution: {integrity: sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -2058,8 +2406,8 @@ packages: '@types/node': optional: true - '@inquirer/rawlist@4.1.8': - resolution: {integrity: sha512-CQ2VkIASbgI2PxdzlkeeieLRmniaUU1Aoi5ggEdm6BIyqopE9GuDXdDOj9XiwOqK5qm72oI2i6J+Gnjaa26ejg==} + '@inquirer/rawlist@4.1.11': + resolution: {integrity: sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -2067,8 +2415,8 @@ packages: '@types/node': optional: true - '@inquirer/search@3.1.3': - resolution: {integrity: sha512-D5T6ioybJJH0IiSUK/JXcoRrrm8sXwzrVMjibuPs+AgxmogKslaafy1oxFiorNI4s3ElSkeQZbhYQgLqiL8h6Q==} + '@inquirer/search@3.2.2': + resolution: {integrity: sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -2076,8 +2424,8 @@ packages: '@types/node': optional: true - '@inquirer/select@4.3.4': - resolution: {integrity: sha512-Qp20nySRmfbuJBBsgPU7E/cL62Hf250vMZRzYDcBHty2zdD1kKCnoDFWRr0WO2ZzaXp3R7a4esaVGJUx0E6zvA==} + '@inquirer/select@4.4.2': + resolution: {integrity: sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -2085,8 +2433,8 @@ packages: '@types/node': optional: true - '@inquirer/type@3.0.8': - resolution: {integrity: sha512-lg9Whz8onIHRthWaN1Q9EGLa/0LFJjyM8mEUbL1eTi6yMGvBf8gvyDLtxSXztQsxMvhxxNpJYrwa1YHdq+w4Jw==} + '@inquirer/type@3.0.10': + resolution: {integrity: sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -2158,8 +2506,8 @@ packages: peerDependencies: tslib: '2' - '@jsonjoy.com/buffers@1.0.0': - resolution: {integrity: sha512-NDigYR3PHqCnQLXYyoLbnEdzMMvzeiCWo1KOut7Q0CoIqg9tUAPKJ1iq/2nFhc5kZtexzutNY0LFjdwWL3Dw3Q==} + '@jsonjoy.com/buffers@1.2.1': + resolution: {integrity: sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' @@ -2170,8 +2518,8 @@ packages: peerDependencies: tslib: '2' - '@jsonjoy.com/json-pack@1.14.0': - resolution: {integrity: sha512-LpWbYgVnKzphN5S6uss4M25jJ/9+m6q6UJoeN6zTkK4xAGhKsiBRPVeF7OYMWonn5repMQbE5vieRXcMUrKDKw==} + '@jsonjoy.com/json-pack@1.21.0': + resolution: {integrity: sha512-+AKG+R2cfZMShzrF2uQw34v3zbeDYUqnQ+jg7ORic3BGtfw9p/+N6RJbq/kkV8JmYZaINknaEQ2m0/f693ZPpg==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' @@ -2216,59 +2564,164 @@ packages: '@microsoft/tsdoc@0.15.1': resolution: {integrity: sha512-4aErSrCR/On/e5G2hDP0wjooqDdauzEbIq8hIkIe5pXV0rtWJZvdCEKL0ykZxex+IxIwBp0eGeV48hQN07dXtw==} - '@module-federation/error-codes@0.21.1': - resolution: {integrity: sha512-h1brnwR9AbwMu1P7ZoJJ9j2O2XWkuMh5p03WhXI1vNEdl3xJheSAvH8RjG8FoKRccVgMnUNDQ+vDVwevUBms/A==} + '@module-federation/bridge-react-webpack-plugin@0.21.6': + resolution: {integrity: sha512-lJMmdhD4VKVkeg8RHb+Jwe6Ou9zKVgjtb1inEURDG/sSS2ksdZA8pVKLYbRPRbdmjr193Y8gJfqFbI2dqoyc/g==} + + '@module-federation/cli@0.21.6': + resolution: {integrity: sha512-qNojnlc8pTyKtK7ww3i/ujLrgWwgXqnD5DcDPsjADVIpu7STaoaVQ0G5GJ7WWS/ajXw6EyIAAGW/AMFh4XUxsQ==} + engines: {node: '>=16.0.0'} + hasBin: true + + '@module-federation/data-prefetch@0.21.6': + resolution: {integrity: sha512-8HD7ZhtWZ9vl6i3wA7M8cEeCRdtvxt09SbMTfqIPm+5eb/V4ijb8zGTYSRhNDb5RCB+BAixaPiZOWKXJ63/rVw==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + '@module-federation/dts-plugin@0.21.6': + resolution: {integrity: sha512-YIsDk8/7QZIWn0I1TAYULniMsbyi2LgKTi9OInzVmZkwMC6644x/ratTWBOUDbdY1Co+feNkoYeot1qIWv2L7w==} + peerDependencies: + typescript: ^4.9.0 || ^5.0.0 + vue-tsc: '>=1.0.24' + peerDependenciesMeta: + vue-tsc: + optional: true + + '@module-federation/enhanced@0.21.6': + resolution: {integrity: sha512-8PFQxtmXc6ukBC4CqGIoc96M2Ly9WVwCPu4Ffvt+K/SB6rGbeFeZoYAwREV1zGNMJ5v5ly6+AHIEOBxNuSnzSg==} + hasBin: true + peerDependencies: + typescript: ^4.9.0 || ^5.0.0 + vue-tsc: '>=1.0.24' + webpack: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + vue-tsc: + optional: true + webpack: + optional: true + + '@module-federation/error-codes@0.21.6': + resolution: {integrity: sha512-MLJUCQ05KnoVl8xd6xs9a5g2/8U+eWmVxg7xiBMeR0+7OjdWUbHwcwgVFatRIwSZvFgKHfWEiI7wsU1q1XbTRQ==} - '@module-federation/error-codes@0.21.2': - resolution: {integrity: sha512-mGbPAAApgjmQUl4J7WAt20aV04a26TyS21GDEpOGXFEQG5FqmZnSJ6FqB8K19HgTKioBT1+fF/Ctl5bGGao/EA==} + '@module-federation/inject-external-runtime-core-plugin@0.21.6': + resolution: {integrity: sha512-DJQne7NQ988AVi3QB8byn12FkNb+C2lBeU1NRf8/WbL0gmHsr6kW8hiEJCm8LYaURwtsQqtsEV7i+8+51qjSmQ==} + peerDependencies: + '@module-federation/runtime-tools': 0.21.6 - '@module-federation/error-codes@0.21.4': - resolution: {integrity: sha512-ClpL5MereWNXh+EgDjz7w4RrC1JlisQTvXDa1gLxpviHafzNDfdViVmuhi9xXVuj+EYo8KU70Y999KHhk9424Q==} + '@module-federation/managers@0.21.6': + resolution: {integrity: sha512-BeV6m2/7kF5MDVz9JJI5T8h8lMosnXkH2bOxxFewcra7ZjvDOgQu7WIio0mgk5l1zjNPvnEVKhnhrenEdcCiWg==} - '@module-federation/runtime-core@0.21.1': - resolution: {integrity: sha512-COob5bepqDc9mKjTziXbQd4WQMCTzhc0cuXyraZhYddYcjcepzZrMpDIXG1x5p+gdg5p1vsGNWt/ZcU8cFh/pg==} + '@module-federation/manifest@0.21.6': + resolution: {integrity: sha512-yg93+I1qjRs5B5hOSvjbjmIoI2z3th8/yst9sfwvx4UDOG1acsE3HHMyPN0GdoIGwplC/KAnU5NmUz4tREUTGQ==} - '@module-federation/runtime-core@0.21.2': - resolution: {integrity: sha512-LtDnccPxjR8Xqa3daRYr1cH/6vUzK3mQSzgvnfsUm1fXte5syX4ftWw3Eu55VdqNY3yREFRn77AXdu9PfPEZRw==} + '@module-federation/rspack@0.21.6': + resolution: {integrity: sha512-SB+z1P+Bqe3R6geZje9dp0xpspX6uash+zO77nodmUy8PTTBlkL7800Cq2FMLKUdoTZHJTBVXf0K6CqQWSlItg==} + peerDependencies: + '@rspack/core': '>=0.7' + typescript: ^4.9.0 || ^5.0.0 + vue-tsc: '>=1.0.24' + peerDependenciesMeta: + typescript: + optional: true + vue-tsc: + optional: true - '@module-federation/runtime-core@0.21.4': - resolution: {integrity: sha512-SGpmoOLGNxZofpTOk6Lxb2ewaoz5wMi93AFYuuJB04HTVcngEK+baNeUZ2D/xewrqNIJoMY6f5maUjVfIIBPUA==} + '@module-federation/runtime-core@0.21.6': + resolution: {integrity: sha512-5Hd1Y5qp5lU/aTiK66lidMlM/4ji2gr3EXAtJdreJzkY+bKcI5+21GRcliZ4RAkICmvdxQU5PHPL71XmNc7Lsw==} - '@module-federation/runtime-tools@0.21.1': - resolution: {integrity: sha512-uQmammw3Osg8370yiRqZwKo7eA5zkyml9pAX9x4oS9QAkEBvQpDogERlF9f7gAgcP2P3v+xLg3/bCdquD0gt8A==} + '@module-federation/runtime-tools@0.21.6': + resolution: {integrity: sha512-fnP+ZOZTFeBGiTAnxve+axGmiYn2D60h86nUISXjXClK3LUY1krUfPgf6MaD4YDJ4i51OGXZWPekeMe16pkd8Q==} - '@module-federation/runtime-tools@0.21.2': - resolution: {integrity: sha512-SgG9NWTYGNYcHSd5MepO3AXf6DNXriIo4sKKM4mu4RqfYhHyP+yNjnF/gvYJl52VD61g0nADmzLWzBqxOqk2tg==} + '@module-federation/runtime@0.21.6': + resolution: {integrity: sha512-+caXwaQqwTNh+CQqyb4mZmXq7iEemRDrTZQGD+zyeH454JAYnJ3s/3oDFizdH6245pk+NiqDyOOkHzzFQorKhQ==} - '@module-federation/runtime-tools@0.21.4': - resolution: {integrity: sha512-RzFKaL0DIjSmkn76KZRfzfB6dD07cvID84950jlNQgdyoQFUGkqD80L6rIpVCJTY/R7LzR3aQjHnoqmq4JPo3w==} + '@module-federation/sdk@0.21.6': + resolution: {integrity: sha512-x6hARETb8iqHVhEsQBysuWpznNZViUh84qV2yE7AD+g7uIzHKiYdoWqj10posbo5XKf/147qgWDzKZoKoEP2dw==} - '@module-federation/runtime@0.21.1': - resolution: {integrity: sha512-sfBrP0gEPwXPEiREVKVd0IjEWXtr3G/i7EUZVWTt4D491nNpswog/kuKFatGmhcBb+9uD5v9rxFgmIbgL9njnQ==} + '@module-federation/third-party-dts-extractor@0.21.6': + resolution: {integrity: sha512-Il6x4hLsvCgZNk1DFwuMBNeoxD1BsZ5AW2BI/nUgu0k5FiAvfcz1OFawRFEHtaM/kVrCsymMOW7pCao90DaX3A==} - '@module-federation/runtime@0.21.2': - resolution: {integrity: sha512-97jlOx4RAnAHMBTfgU5FBK6+V/pfT6GNX0YjSf8G+uJ3lFy74Y6kg/BevEkChTGw5waCLAkw/pw4LmntYcNN7g==} + '@module-federation/webpack-bundler-runtime@0.21.6': + resolution: {integrity: sha512-7zIp3LrcWbhGuFDTUMLJ2FJvcwjlddqhWGxi/MW3ur1a+HaO8v5tF2nl+vElKmbG1DFLU/52l3PElVcWf/YcsQ==} - '@module-federation/runtime@0.21.4': - resolution: {integrity: sha512-wgvGqryurVEvkicufJmTG0ZehynCeNLklv8kIk5BLIsWYSddZAE+xe4xov1kgH5fIJQAoQNkRauFFjVNlHoAkA==} + '@mui/core-downloads-tracker@5.18.0': + resolution: {integrity: sha512-jbhwoQ1AY200PSSOrNXmrFCaSDSJWP7qk6urkTmIirvRXDROkqe+QwcLlUiw/PrREwsIF/vm3/dAXvjlMHF0RA==} - '@module-federation/sdk@0.21.1': - resolution: {integrity: sha512-1cHMrmCCao3NMFM4BkA0GDt4rbYbyneHct5E4z68cu5UBUnI3L/UboP5VNM8lkYMO1nCR8M0FcLkLhK35Nt48A==} + '@mui/material@5.18.0': + resolution: {integrity: sha512-bbH/HaJZpFtXGvWg3TsBWG4eyt3gah3E7nCNU8GLyRjVoWcA91Vm/T+sjHfUcwgJSw9iLtucfHBoq+qW/T30aA==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@emotion/react': ^11.5.0 + '@emotion/styled': ^11.3.0 + '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true + '@types/react': + optional: true - '@module-federation/sdk@0.21.2': - resolution: {integrity: sha512-t2vHSJ1a9zjg7LLJoEghcytNLzeFCqOat5TbXTav5dgU0xXw82Cf0EfLrxiJL6uUpgbtyvUdqqa2DVAvMPjiiA==} + '@mui/private-theming@5.17.1': + resolution: {integrity: sha512-XMxU0NTYcKqdsG8LRmSoxERPXwMbp16sIXPcLVgLGII/bVNagX0xaheWAwFv8+zDK7tI3ajllkuD3GZZE++ICQ==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true - '@module-federation/sdk@0.21.4': - resolution: {integrity: sha512-tzvhOh/oAfX++6zCDDxuvioHY4Jurf8vcfoCbKFxusjmyKr32GPbwFDazUP+OPhYCc3dvaa9oWU6X/qpUBLfJw==} + '@mui/styled-engine@5.18.0': + resolution: {integrity: sha512-BN/vKV/O6uaQh2z5rXV+MBlVrEkwoS/TK75rFQ2mjxA7+NBo8qtTAOA4UaM0XeJfn7kh2wZ+xQw2HAx0u+TiBg==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@emotion/react': ^11.4.1 + '@emotion/styled': ^11.3.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true - '@module-federation/webpack-bundler-runtime@0.21.1': - resolution: {integrity: sha512-yyXX6ugTV07pMxMzAHt6/JDwblS3f1NDyUI7l44CyYgXpl2ItEEUs5aj5h/5xU1c9Px7M//KkY3qW+InW4tR/A==} + '@mui/system@5.18.0': + resolution: {integrity: sha512-ojZGVcRWqWhu557cdO3pWHloIGJdzVtxs3rk0F9L+x55LsUjcMUVkEhiF7E4TMxZoF9MmIHGGs0ZX3FDLAf0Xw==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@emotion/react': ^11.5.0 + '@emotion/styled': ^11.3.0 + '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true + '@types/react': + optional: true - '@module-federation/webpack-bundler-runtime@0.21.2': - resolution: {integrity: sha512-06R/NDY6Uh5RBIaBOFwYWzJCf1dIiQd/DFHToBVhejUT3ZFG7GzHEPIIsAGqMzne/JSmVsvjlXiJu7UthQ6rFA==} + '@mui/types@7.2.24': + resolution: {integrity: sha512-3c8tRt/CbWZ+pEg7QpSwbdxOk36EfmhbKf6AGZsD1EcLDLTSZoxxJ86FVtcjxvjuhdyBiWKSTGZFaXCnidO2kw==} + peerDependencies: + '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true - '@module-federation/webpack-bundler-runtime@0.21.4': - resolution: {integrity: sha512-dusmR3uPnQh9u9ChQo3M+GLOuGFthfvnh7WitF/a1eoeTfRmXqnMFsXtZCUK+f/uXf+64874Zj/bhAgbBcVHZA==} + '@mui/utils@5.17.1': + resolution: {integrity: sha512-jEZ8FTqInt2WzxDV8bhImWBqeQRD99c/id/fq83H0ER9tFl+sfZlaAoCdznGvbSQQ9ividMxqSV2c7cC1vBcQg==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true '@napi-rs/cli@3.0.4': resolution: {integrity: sha512-ilbCI69DVDQcIUSUB504LM1+Nhvo0jKycWAzzPJ22YwUoWrru/w0+V5sfjPINgkshQ4Ykv+oZOJXk9Kg1ZBUvg==} @@ -2622,23 +3075,23 @@ packages: resolution: {integrity: sha512-P4YJBPdPSpWTQ1NU4XYdvHvXJJDxM6YwpS0FZHRgP7YFkdVxsWcpWGy/NVqlAA7PcPCnMacXlRm1y2PFZRWL/w==} engines: {node: '>= 20'} - '@octokit/core@7.0.5': - resolution: {integrity: sha512-t54CUOsFMappY1Jbzb7fetWeO0n6K0k/4+/ZpkS+3Joz8I4VcvY9OiEBFRYISqaI2fq5sCiPtAjRDOzVYG8m+Q==} + '@octokit/core@7.0.6': + resolution: {integrity: sha512-DhGl4xMVFGVIyMwswXeyzdL4uXD5OGILGX5N8Y+f6W7LhC1Ze2poSNrkF/fedpVDHEEZ+PHFW0vL14I+mm8K3Q==} engines: {node: '>= 20'} - '@octokit/endpoint@11.0.1': - resolution: {integrity: sha512-7P1dRAZxuWAOPI7kXfio88trNi/MegQ0IJD3vfgC3b+LZo1Qe6gRJc2v0mz2USWWJOKrB2h5spXCzGbw+fAdqA==} + '@octokit/endpoint@11.0.2': + resolution: {integrity: sha512-4zCpzP1fWc7QlqunZ5bSEjxc6yLAlRTnDwKtgXfcI/FxxGoqedDG8V2+xJ60bV2kODqcGB+nATdtap/XYq2NZQ==} engines: {node: '>= 20'} - '@octokit/graphql@9.0.2': - resolution: {integrity: sha512-iz6KzZ7u95Fzy9Nt2L8cG88lGRMr/qy1Q36ih/XVzMIlPDMYwaNLE/ENhqmIzgPrlNWiYJkwmveEetvxAgFBJw==} + '@octokit/graphql@9.0.3': + resolution: {integrity: sha512-grAEuupr/C1rALFnXTv6ZQhFuL1D8G5y8CN04RgrO4FIPMrtm+mcZzFG7dcBm+nq+1ppNixu+Jd78aeJOYxlGA==} engines: {node: '>= 20'} - '@octokit/openapi-types@26.0.0': - resolution: {integrity: sha512-7AtcfKtpo77j7Ts73b4OWhOZHTKo/gGY8bB3bNBQz4H+GRSWqx2yvj8TXRsbdTE0eRmYmXOEY66jM7mJ7LzfsA==} + '@octokit/openapi-types@27.0.0': + resolution: {integrity: sha512-whrdktVs1h6gtR+09+QsNk2+FO+49j6ga1c55YZudfEG+oKJVvJLQi3zkOm5JjiUXAagWK2tI2kTGKJ2Ys7MGA==} - '@octokit/plugin-paginate-rest@13.2.0': - resolution: {integrity: sha512-YuAlyjR8o5QoRSOvMHxSJzPtogkNMgeMv2mpccrvdUGeC3MKyfi/hS+KiFwyH/iRKIKyx+eIMsDjbt3p9r2GYA==} + '@octokit/plugin-paginate-rest@14.0.0': + resolution: {integrity: sha512-fNVRE7ufJiAA3XUrha2omTA39M6IXIc6GIZLvlbsm8QOQCYvpq/LkMNGyFlB1d8hTDzsAXa3OKtybdMAYsV/fw==} engines: {node: '>= 20'} peerDependencies: '@octokit/core': '>=6' @@ -2649,26 +3102,26 @@ packages: peerDependencies: '@octokit/core': '>=6' - '@octokit/plugin-rest-endpoint-methods@16.1.0': - resolution: {integrity: sha512-nCsyiKoGRnhH5LkH8hJEZb9swpqOcsW+VXv1QoyUNQXJeVODG4+xM6UICEqyqe9XFr6LkL8BIiFCPev8zMDXPw==} + '@octokit/plugin-rest-endpoint-methods@17.0.0': + resolution: {integrity: sha512-B5yCyIlOJFPqUUeiD0cnBJwWJO8lkJs5d8+ze9QDP6SvfiXSz1BF+91+0MeI1d2yxgOhU/O+CvtiZ9jSkHhFAw==} engines: {node: '>= 20'} peerDependencies: '@octokit/core': '>=6' - '@octokit/request-error@7.0.1': - resolution: {integrity: sha512-CZpFwV4+1uBrxu7Cw8E5NCXDWFNf18MSY23TdxCBgjw1tXXHvTrZVsXlW8hgFTOLw8RQR1BBrMvYRtuyaijHMA==} + '@octokit/request-error@7.1.0': + resolution: {integrity: sha512-KMQIfq5sOPpkQYajXHwnhjCC0slzCNScLHs9JafXc4RAJI+9f+jNDlBNaIMTvazOPLgb4BnlhGJOTbnN0wIjPw==} engines: {node: '>= 20'} - '@octokit/request@10.0.5': - resolution: {integrity: sha512-TXnouHIYLtgDhKo+N6mXATnDBkV05VwbR0TtMWpgTHIoQdRQfCSzmy/LGqR1AbRMbijq/EckC/E3/ZNcU92NaQ==} + '@octokit/request@10.0.7': + resolution: {integrity: sha512-v93h0i1yu4idj8qFPZwjehoJx4j3Ntn+JhXsdJrG9pYaX6j/XRz2RmasMUHtNgQD39nrv/VwTWSqK0RNXR8upA==} engines: {node: '>= 20'} - '@octokit/rest@22.0.0': - resolution: {integrity: sha512-z6tmTu9BTnw51jYGulxrlernpsQYXpui1RK21vmXn8yF5bp6iX16yfTtJYGK5Mh1qDkvDOmp2n8sRMcQmR8jiA==} + '@octokit/rest@22.0.1': + resolution: {integrity: sha512-Jzbhzl3CEexhnivb1iQ0KJ7s5vvjMWcmRtq5aUsKmKDrRW6z3r84ngmiFKFvpZjpiU/9/S6ITPFRpn5s/3uQJw==} engines: {node: '>= 20'} - '@octokit/types@15.0.0': - resolution: {integrity: sha512-8o6yDfmoGJUIeR9OfYU0/TUJTnMPG2r68+1yEdUeG2Fdqpj8Qetg0ziKIgcBm0RW/j29H41WP37CYCEhp6GoHQ==} + '@octokit/types@16.0.0': + resolution: {integrity: sha512-sKq+9r1Mm4efXW1FCk7hFSeJo4QKreL/tTbR0rz/qx/r1Oa2VV83LTA/H/MuCOX7uCIJmQVRKBcbmWoySjAnSg==} '@opentelemetry/api@1.9.0': resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} @@ -2760,16 +3213,45 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} - '@playwright/test@1.56.0': - resolution: {integrity: sha512-Tzh95Twig7hUwwNe381/K3PggZBZblKUe2wv25oIpzWLr6Z0m4KgV1ZVIjnR6GM9ANEqjZD7XsZEa6JL/7YEgg==} + '@playwright/test@1.56.1': + resolution: {integrity: sha512-vSMYtL/zOcFpvJCW71Q/OEGQb7KYBPAdKh35WNSkaZA75JlAO8ED8UN6GUNTm3drWomcbcqRPFqQbLae8yBTdg==} engines: {node: '>=18'} hasBin: true + '@pmmmwh/react-refresh-webpack-plugin@0.5.15': + resolution: {integrity: sha512-LFWllMA55pzB9D34w/wXUCf8+c+IYKuJDgxiZ3qMhl64KRMBHYM1I3VdGaD2BV5FNPV2/S2596bppxHbv2ZydQ==} + engines: {node: '>= 10.13'} + peerDependencies: + '@types/webpack': 4.x || 5.x + react-refresh: '>=0.10.0 <1.0.0' + sockjs-client: ^1.4.0 + type-fest: '>=0.17.0 <5.0.0' + webpack: '>=4.43.0 <6.0.0' + webpack-dev-server: 3.x || 4.x || 5.x + webpack-hot-middleware: 2.x + webpack-plugin-serve: 0.x || 1.x + peerDependenciesMeta: + '@types/webpack': + optional: true + sockjs-client: + optional: true + type-fest: + optional: true + webpack-dev-server: + optional: true + webpack-hot-middleware: + optional: true + webpack-plugin-serve: + optional: true + '@polka/url@1.0.0-next.29': resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} - '@prefresh/core@1.5.7': - resolution: {integrity: sha512-AsyeitiPwG7UkT0mqgKzIDuydmYSKtBlzXEb5ymzskvxewcmVGRjQkcHDy6PCNBT7soAyHpQ0mPgXX4IeyOlUg==} + '@popperjs/core@2.11.8': + resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} + + '@prefresh/core@1.5.9': + resolution: {integrity: sha512-IKBKCPaz34OFVC+adiQ2qaTF5qdztO2/4ZPf4KsRTgjKosWqxVXmEbxCiUydYZRY8GVie+DQlKzQr9gt6HQ+EQ==} peerDependencies: preact: ^10.0.0 || ^11.0.0-0 @@ -2780,113 +3262,113 @@ packages: resolution: {integrity: sha512-vDbaOzF7yT2Qs4vO6XV1MHcJv+3dgR1sT+l3B8xxOVhUC336prMvqrvsLL/9Dnw2xr6Qhz4J0dmS0llNAbnUmQ==} engines: {node: '>=14.0.0'} - '@rollup/rollup-android-arm-eabi@4.52.3': - resolution: {integrity: sha512-h6cqHGZ6VdnwliFG1NXvMPTy/9PS3h8oLh7ImwR+kl+oYnQizgjxsONmmPSb2C66RksfkfIxEVtDSEcJiO0tqw==} + '@rollup/rollup-android-arm-eabi@4.53.3': + resolution: {integrity: sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.52.3': - resolution: {integrity: sha512-wd+u7SLT/u6knklV/ifG7gr5Qy4GUbH2hMWcDauPFJzmCZUAJ8L2bTkVXC2niOIxp8lk3iH/QX8kSrUxVZrOVw==} + '@rollup/rollup-android-arm64@4.53.3': + resolution: {integrity: sha512-CbDGaMpdE9sh7sCmTrTUyllhrg65t6SwhjlMJsLr+J8YjFuPmCEjbBSx4Z/e4SmDyH3aB5hGaJUP2ltV/vcs4w==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.52.3': - resolution: {integrity: sha512-lj9ViATR1SsqycwFkJCtYfQTheBdvlWJqzqxwc9f2qrcVrQaF/gCuBRTiTolkRWS6KvNxSk4KHZWG7tDktLgjg==} + '@rollup/rollup-darwin-arm64@4.53.3': + resolution: {integrity: sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.52.3': - resolution: {integrity: sha512-+Dyo7O1KUmIsbzx1l+4V4tvEVnVQqMOIYtrxK7ncLSknl1xnMHLgn7gddJVrYPNZfEB8CIi3hK8gq8bDhb3h5A==} + '@rollup/rollup-darwin-x64@4.53.3': + resolution: {integrity: sha512-DZ8N4CSNfl965CmPktJ8oBnfYr3F8dTTNBQkRlffnUarJ2ohudQD17sZBa097J8xhQ26AwhHJ5mvUyQW8ddTsQ==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.52.3': - resolution: {integrity: sha512-u9Xg2FavYbD30g3DSfNhxgNrxhi6xVG4Y6i9Ur1C7xUuGDW3banRbXj+qgnIrwRN4KeJ396jchwy9bCIzbyBEQ==} + '@rollup/rollup-freebsd-arm64@4.53.3': + resolution: {integrity: sha512-yMTrCrK92aGyi7GuDNtGn2sNW+Gdb4vErx4t3Gv/Tr+1zRb8ax4z8GWVRfr3Jw8zJWvpGHNpss3vVlbF58DZ4w==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.52.3': - resolution: {integrity: sha512-5M8kyi/OX96wtD5qJR89a/3x5x8x5inXBZO04JWhkQb2JWavOWfjgkdvUqibGJeNNaz1/Z1PPza5/tAPXICI6A==} + '@rollup/rollup-freebsd-x64@4.53.3': + resolution: {integrity: sha512-lMfF8X7QhdQzseM6XaX0vbno2m3hlyZFhwcndRMw8fbAGUGL3WFMBdK0hbUBIUYcEcMhVLr1SIamDeuLBnXS+Q==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.52.3': - resolution: {integrity: sha512-IoerZJ4l1wRMopEHRKOO16e04iXRDyZFZnNZKrWeNquh5d6bucjezgd+OxG03mOMTnS1x7hilzb3uURPkJ0OfA==} + '@rollup/rollup-linux-arm-gnueabihf@4.53.3': + resolution: {integrity: sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.52.3': - resolution: {integrity: sha512-ZYdtqgHTDfvrJHSh3W22TvjWxwOgc3ThK/XjgcNGP2DIwFIPeAPNsQxrJO5XqleSlgDux2VAoWQ5iJrtaC1TbA==} + '@rollup/rollup-linux-arm-musleabihf@4.53.3': + resolution: {integrity: sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.52.3': - resolution: {integrity: sha512-NcViG7A0YtuFDA6xWSgmFb6iPFzHlf5vcqb2p0lGEbT+gjrEEz8nC/EeDHvx6mnGXnGCC1SeVV+8u+smj0CeGQ==} + '@rollup/rollup-linux-arm64-gnu@4.53.3': + resolution: {integrity: sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.52.3': - resolution: {integrity: sha512-d3pY7LWno6SYNXRm6Ebsq0DJGoiLXTb83AIPCXl9fmtIQs/rXoS8SJxxUNtFbJ5MiOvs+7y34np77+9l4nfFMw==} + '@rollup/rollup-linux-arm64-musl@4.53.3': + resolution: {integrity: sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loong64-gnu@4.52.3': - resolution: {integrity: sha512-3y5GA0JkBuirLqmjwAKwB0keDlI6JfGYduMlJD/Rl7fvb4Ni8iKdQs1eiunMZJhwDWdCvrcqXRY++VEBbvk6Eg==} + '@rollup/rollup-linux-loong64-gnu@4.53.3': + resolution: {integrity: sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-ppc64-gnu@4.52.3': - resolution: {integrity: sha512-AUUH65a0p3Q0Yfm5oD2KVgzTKgwPyp9DSXc3UA7DtxhEb/WSPfbG4wqXeSN62OG5gSo18em4xv6dbfcUGXcagw==} + '@rollup/rollup-linux-ppc64-gnu@4.53.3': + resolution: {integrity: sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.52.3': - resolution: {integrity: sha512-1makPhFFVBqZE+XFg3Dkq+IkQ7JvmUrwwqaYBL2CE+ZpxPaqkGaiWFEWVGyvTwZace6WLJHwjVh/+CXbKDGPmg==} + '@rollup/rollup-linux-riscv64-gnu@4.53.3': + resolution: {integrity: sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.52.3': - resolution: {integrity: sha512-OOFJa28dxfl8kLOPMUOQBCO6z3X2SAfzIE276fwT52uXDWUS178KWq0pL7d6p1kz7pkzA0yQwtqL0dEPoVcRWg==} + '@rollup/rollup-linux-riscv64-musl@4.53.3': + resolution: {integrity: sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.52.3': - resolution: {integrity: sha512-jMdsML2VI5l+V7cKfZx3ak+SLlJ8fKvLJ0Eoa4b9/vCUrzXKgoKxvHqvJ/mkWhFiyp88nCkM5S2v6nIwRtPcgg==} + '@rollup/rollup-linux-s390x-gnu@4.53.3': + resolution: {integrity: sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.52.3': - resolution: {integrity: sha512-tPgGd6bY2M2LJTA1uGq8fkSPK8ZLYjDjY+ZLK9WHncCnfIz29LIXIqUgzCR0hIefzy6Hpbe8Th5WOSwTM8E7LA==} + '@rollup/rollup-linux-x64-gnu@4.53.3': + resolution: {integrity: sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.52.3': - resolution: {integrity: sha512-BCFkJjgk+WFzP+tcSMXq77ymAPIxsX9lFJWs+2JzuZTLtksJ2o5hvgTdIcZ5+oKzUDMwI0PfWzRBYAydAHF2Mw==} + '@rollup/rollup-linux-x64-musl@4.53.3': + resolution: {integrity: sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q==} cpu: [x64] os: [linux] - '@rollup/rollup-openharmony-arm64@4.52.3': - resolution: {integrity: sha512-KTD/EqjZF3yvRaWUJdD1cW+IQBk4fbQaHYJUmP8N4XoKFZilVL8cobFSTDnjTtxWJQ3JYaMgF4nObY/+nYkumA==} + '@rollup/rollup-openharmony-arm64@4.53.3': + resolution: {integrity: sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.52.3': - resolution: {integrity: sha512-+zteHZdoUYLkyYKObGHieibUFLbttX2r+58l27XZauq0tcWYYuKUwY2wjeCN9oK1Um2YgH2ibd6cnX/wFD7DuA==} + '@rollup/rollup-win32-arm64-msvc@4.53.3': + resolution: {integrity: sha512-GOFuKpsxR/whszbF/bzydebLiXIHSgsEUp6M0JI8dWvi+fFa1TD6YQa4aSZHtpmh2/uAlj/Dy+nmby3TJ3pkTw==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.52.3': - resolution: {integrity: sha512-of1iHkTQSo3kr6dTIRX6t81uj/c/b15HXVsPcEElN5sS859qHrOepM5p9G41Hah+CTqSh2r8Bm56dL2z9UQQ7g==} + '@rollup/rollup-win32-ia32-msvc@4.53.3': + resolution: {integrity: sha512-iah+THLcBJdpfZ1TstDFbKNznlzoxa8fmnFYK4V67HvmuNYkVdAywJSoteUszvBQ9/HqN2+9AZghbajMsFT+oA==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-gnu@4.52.3': - resolution: {integrity: sha512-s0hybmlHb56mWVZQj8ra9048/WZTPLILKxcvcq+8awSZmyiSUZjjem1AhU3Tf4ZKpYhK4mg36HtHDOe8QJS5PQ==} + '@rollup/rollup-win32-x64-gnu@4.53.3': + resolution: {integrity: sha512-J9QDiOIZlZLdcot5NXEepDkstocktoVjkaKUtqzgzpt2yWjGlbYiKyp05rWwk4nypbYUNoFAztEgixoLaSETkg==} cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.52.3': - resolution: {integrity: sha512-zGIbEVVXVtauFgl3MRwGWEN36P5ZGenHRMgNw88X5wEhEBpq0XrMEZwOn07+ICrwM17XO5xfMZqh0OldCH5VTA==} + '@rollup/rollup-win32-x64-msvc@4.53.3': + resolution: {integrity: sha512-UhTd8u31dXadv0MopwGgNOBpUVROFKWVQgAg5N1ESyCz8AuBcMqm4AuTjrwgQKGDfoFuz02EuMRHQIw/frmYKQ==} cpu: [x64] os: [win32] @@ -2895,11 +3377,6 @@ packages: engines: {node: '>=18.12.0'} hasBin: true - '@rsbuild/core@1.6.3': - resolution: {integrity: sha512-93/j5w+nyzfTjHfch2ram+Y6Og3NUcl46nsrKojD3scBR9nSjYHjJM27pQNi0Oq7Io7vQpTMvxwuSaG7AShfRw==} - engines: {node: '>=18.12.0'} - hasBin: true - '@rsbuild/core@1.6.7': resolution: {integrity: sha512-V0INbMrT/LwyhzKmvpupe2oSvPFWaivz7sdriFRp381BJvD0d2pYcq9iRW91bxgMRX78MgTzFYAu868hMAzoSw==} engines: {node: '>=18.12.0'} @@ -2923,12 +3400,45 @@ packages: peerDependencies: '@rsbuild/core': 1.x - '@rslib/core@0.17.1': - resolution: {integrity: sha512-7mqrktQuHMkGcgIW6pBdw7xpBy5KmvTN22+RhSkj1y4FKfen/PqOPDGqGlN+kTbPSXs20kBepNkYWYV8t+6ryA==} - engines: {node: '>=18.12.0'} - hasBin: true + '@rsdoctor/client@0.3.7': + resolution: {integrity: sha512-ZBMy65BO0jUEc6YvfEO7aqnsl0fcEzzIztVORAV//oZftUMkJLCUUwDAfAAVYpZT7c94CX32IQNbEBz2dp5VRA==} + + '@rsdoctor/core@0.3.7': + resolution: {integrity: sha512-UBz4BKEoygryUR7TC2uW5uhZIb7//zI+JjajrSWEoa8O41a5uXj2KSga88c5ZeiWwg5jaIrk5L6dryHSlwWy2A==} + + '@rsdoctor/graph@0.3.7': + resolution: {integrity: sha512-VZU1E2AoDMSpp4xA5cRWe2xFt+RGUZhnxYpBmJvuKtZCo+KY056BmWY2MBV9abV1J6jYdUs9S0XGNK8437h/mw==} + + '@rsdoctor/rspack-plugin@0.3.7': + resolution: {integrity: sha512-ThB0e3vVEmQ2MHhrQZc4YHOsdk0ltHwKOzN+j3Vk7YWsZwbZTw6ZT7G0CMEqFtx0VHzOR/Ef6OU3MZXtM1L2JA==} peerDependencies: - '@microsoft/api-extractor': ^7 + '@rspack/core': 0.x + + '@rsdoctor/sdk@0.3.7': + resolution: {integrity: sha512-n35v64Z75ledyDPF5zJLPGT/MJpEpM7MMwjBuBAoGnE32p9Sb19jPjbERPobRvX1ik4fSyOJUJA6IgipaX20CQ==} + + '@rsdoctor/types@0.3.7': + resolution: {integrity: sha512-nXV9IfeSOgInmPkq4awRG2drROfOSzsowzGvSo48lj0+jLk/qDFiy6Bg+e4dzD2jUCrF7WuRohzMVw74rv2O1A==} + peerDependencies: + '@rspack/core': 0.x + peerDependenciesMeta: + '@rspack/core': + optional: true + + '@rsdoctor/utils@0.3.7': + resolution: {integrity: sha512-rWebg/FSkEBUXEBrgQYYwNgceOneabcmZKu7OR6V7qXDNLm0dydSovoA32MCgVphDcjycys98cSY36CcQ37yVQ==} + + '@rsdoctor/webpack-plugin@0.3.7': + resolution: {integrity: sha512-mYm9dvf1SSLkZyo59lGpnGur6d6UDinlmHb9KF5hlRIIAhse+ppJpEcS9YT7cpvLEvRI9irsiCJoR23ftk7oAA==} + peerDependencies: + webpack: 5.x + + '@rslib/core@0.17.1': + resolution: {integrity: sha512-7mqrktQuHMkGcgIW6pBdw7xpBy5KmvTN22+RhSkj1y4FKfen/PqOPDGqGlN+kTbPSXs20kBepNkYWYV8t+6ryA==} + engines: {node: '>=18.12.0'} + hasBin: true + peerDependencies: + '@microsoft/api-extractor': ^7 typescript: ^5 peerDependenciesMeta: '@microsoft/api-extractor': @@ -2975,11 +3485,6 @@ packages: cpu: [arm64] os: [darwin] - '@rspack/binding-darwin-arm64@1.6.1': - resolution: {integrity: sha512-am7gVsqicKY/FhDfNa/InHxrBd3wRt6rI7sFTaunKaPbPERjWSKr/sI47tB3t8uNYmLQFFhWFijomAhDyrlHMg==} - cpu: [arm64] - os: [darwin] - '@rspack/binding-darwin-arm64@1.6.4': resolution: {integrity: sha512-qD2C5xwdY2qKEXTZiPJQx1L1kELapOc0AaZDqcAyzXs30d1qTKpx6PdyW3HN+gueKovyWZwMMYfz6RxcMCnaDQ==} cpu: [arm64] @@ -2990,11 +3495,6 @@ packages: cpu: [x64] os: [darwin] - '@rspack/binding-darwin-x64@1.6.1': - resolution: {integrity: sha512-uadcJOal5YTg191+kvi47I0b+U0sRKe8vKFjMXYOrSIcbXGVRdBxROt/HMlKnvg0u/A83f6AABiY6MA2fCs/gw==} - cpu: [x64] - os: [darwin] - '@rspack/binding-darwin-x64@1.6.4': resolution: {integrity: sha512-IHceyLDxeubqIrGz4gUqJavnygTij4vtDDE2Fkgobz7hkTJwGtD5mxBKbVNRqGvhrasVw0h9rEjR7tdbDSiUhQ==} cpu: [x64] @@ -3005,11 +3505,6 @@ packages: cpu: [arm64] os: [linux] - '@rspack/binding-linux-arm64-gnu@1.6.1': - resolution: {integrity: sha512-n7UGSBzv7PiX+V1Q2bY3S1XWyN3RCykCQUgfhZ+xWietCM/1349jgN7DoXKPllqlof1GPGBjziHU0sQZTC4tag==} - cpu: [arm64] - os: [linux] - '@rspack/binding-linux-arm64-gnu@1.6.4': resolution: {integrity: sha512-Ldpoz2wWnBaL2+XKLIOyCZMkAkd4pk/L24EVgma3SpRtwgenLEr10bQupvwGAK5OLkjayslOTZmRiAv0FH5o/w==} cpu: [arm64] @@ -3020,11 +3515,6 @@ packages: cpu: [arm64] os: [linux] - '@rspack/binding-linux-arm64-musl@1.6.1': - resolution: {integrity: sha512-P7nx0jsKxx7g3QAnH9UnJDGVgs1M2H7ZQl68SRyrs42TKOd9Md22ynoMIgCK1zoy+skssU6MhWptluSggXqSrA==} - cpu: [arm64] - os: [linux] - '@rspack/binding-linux-arm64-musl@1.6.4': resolution: {integrity: sha512-3fLMSDK5yMjKmx7iFbYG3P3A0xNdtmNu09v5P6hzq65tkJ3dflIt3p8DvtOTURtuSgQZV2A1LDd9hpIXdnigqA==} cpu: [arm64] @@ -3035,11 +3525,6 @@ packages: cpu: [x64] os: [linux] - '@rspack/binding-linux-x64-gnu@1.6.1': - resolution: {integrity: sha512-SdiurC1bV/QHnj7rmrBYJLdsat3uUDWl9KjkVjEbtc8kQV0Ri4/vZRH0nswgzx7hZNY2j0jYuCm5O8+3qeJEMg==} - cpu: [x64] - os: [linux] - '@rspack/binding-linux-x64-gnu@1.6.4': resolution: {integrity: sha512-5YzXUKLnaiqND05CDgkKE0WNRtC1ulkVncYs78xPikonzZmgVXa8eRaTPOZC6ZjpLR0eTsg+MSesLUsPUu27hA==} cpu: [x64] @@ -3050,11 +3535,6 @@ packages: cpu: [x64] os: [linux] - '@rspack/binding-linux-x64-musl@1.6.1': - resolution: {integrity: sha512-JoSJu29nV+auOePhe8x2Fzqxiga1YGNcOMWKJ5Uj8rHBZ8FPAiiE+CpLG8TwfpHsivojrY/sy6fE8JldYLV5TQ==} - cpu: [x64] - os: [linux] - '@rspack/binding-linux-x64-musl@1.6.4': resolution: {integrity: sha512-KcSFla8a9bXG1mmV5oQ1R5h/dSXfd41/qHOsNuLqho2UCX8CVh4dezUA153dj7p1S4yOhTy6VZZi6C1szweE9A==} cpu: [x64] @@ -3064,10 +3544,6 @@ packages: resolution: {integrity: sha512-PaKEjXOkYprSFlgdgVm/P3pv2E8nAQx9WSGgPmMVIAtxo3Cyz0wwFf0f1Bp9wCw0KkIWgi+9lz8oXNkgKZilug==} cpu: [wasm32] - '@rspack/binding-wasm32-wasi@1.6.1': - resolution: {integrity: sha512-u5NiSHxM7LtIo4cebq/hQPJ9o39u127am3eVJHDzdmBVhTYYO5l7XVUnFmcU8hNHuj/4lJzkFviWFbf3SaRSYA==} - cpu: [wasm32] - '@rspack/binding-wasm32-wasi@1.6.4': resolution: {integrity: sha512-mfFJbDJkRy5I1iW3m0JlWbc0X8pjVd+GRUz5nhbccwEhSQOc27ao3evf7XPU4aaDxud1B3UEqYiRcRmtm1BrjA==} cpu: [wasm32] @@ -3077,11 +3553,6 @@ packages: cpu: [arm64] os: [win32] - '@rspack/binding-win32-arm64-msvc@1.6.1': - resolution: {integrity: sha512-u2Lm4iyUstX/H4JavHnFLIlXQwMka6WVvG2XH8uRd6ziNTh0k/u9jlFADzhdZMvxj63L2hNXCs7TrMZTx2VObQ==} - cpu: [arm64] - os: [win32] - '@rspack/binding-win32-arm64-msvc@1.6.4': resolution: {integrity: sha512-QtIqxsfeTSS1lwfaPGrPFfJ9ir/3aWZv5t3iAgYj/CNUA8MTKWt4vQKcco7NRIGK4ZLMI+dgJBFtvd/lUDMQsw==} cpu: [arm64] @@ -3092,11 +3563,6 @@ packages: cpu: [ia32] os: [win32] - '@rspack/binding-win32-ia32-msvc@1.6.1': - resolution: {integrity: sha512-/rMU4pjnQeYnkrXmlqeEPiUNT1wHfJ8GR5v2zqcHXBQkAtic3ZsLwjHpucJjrfRsN5CcVChxJl/T7ozlITfcYw==} - cpu: [ia32] - os: [win32] - '@rspack/binding-win32-ia32-msvc@1.6.4': resolution: {integrity: sha512-HXEWGDllgh0jFwjGhkGcLqb0dzXbc/rA8vQr2JcSdC41p1DTzLgO215jWdKSIvzCzhyPh3VeQkXk76hjFB2cLQ==} cpu: [ia32] @@ -3107,11 +3573,6 @@ packages: cpu: [x64] os: [win32] - '@rspack/binding-win32-x64-msvc@1.6.1': - resolution: {integrity: sha512-8qsdb5COuZF5Trimo3HHz3N0KuRtrPtRCMK/wi7DOT1nR6CpUeUMPTjvtPl/O/QezQje+cpBFTa5BaQ1WKlHhw==} - cpu: [x64] - os: [win32] - '@rspack/binding-win32-x64-msvc@1.6.4': resolution: {integrity: sha512-MAO5rOnGYoeuT2LPn/P7JVJCi3d78XoXgOq3tkGh6qXhvhkjsBRtYluWCzACXQpXfFHEWYd7uT5yHoZgxiVuoA==} cpu: [x64] @@ -3120,9 +3581,6 @@ packages: '@rspack/binding@1.6.0-beta.1': resolution: {integrity: sha512-r3L60ekkDLM5qoRjCMrqsgwU9SQ5e8oA/Omltu/FEEUspIVHawPvAqNZvAXnGB+FoNxM8YgdRRh12PAwXJww0A==} - '@rspack/binding@1.6.1': - resolution: {integrity: sha512-6duvh3CbDA3c4HpNkzIOP9z1wn/mKY1Mrxj+AqgcNvsE0ppp1iKlMsJCDgl7SlUauus2AgtM1dIEU+0sRajmwQ==} - '@rspack/binding@1.6.4': resolution: {integrity: sha512-vUxc/zUdsCuyysOvP4CTdIYxsZPb2jIXST5vrLABiTPIaHpXZ0hVdgKif2XPJwJeuCVS6w25xvyPN0mBCU0MvQ==} @@ -3135,15 +3593,6 @@ packages: '@swc/helpers': optional: true - '@rspack/core@1.6.1': - resolution: {integrity: sha512-hZVrmiZoBTchWUdh/XbeJ5z+GqHW5aPYeufBigmtUeyzul8uJtHlWKmQhpG+lplMf6o1RESTjjxl632TP/Cfhg==} - engines: {node: '>=18.12.0'} - peerDependencies: - '@swc/helpers': '>=0.5.1' - peerDependenciesMeta: - '@swc/helpers': - optional: true - '@rspack/core@1.6.4': resolution: {integrity: sha512-5F1+MQD8rfbFbUHnaiZe4jqOu9pnSb+PliqQvi0lj+uvpMpcS3sJDIs/mz6P1u87lfkfBXChIT4zSLAzeOgMWw==} engines: {node: '>=18.12.0'} @@ -3324,39 +3773,42 @@ packages: '@selderee/plugin-htmlparser2@0.11.0': resolution: {integrity: sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ==} - '@shikijs/core@3.13.0': - resolution: {integrity: sha512-3P8rGsg2Eh2qIHekwuQjzWhKI4jV97PhvYjYUzGqjvJfqdQPz+nMlfWahU24GZAyW1FxFI1sYjyhfh5CoLmIUA==} - '@shikijs/core@3.15.0': resolution: {integrity: sha512-8TOG6yG557q+fMsSVa8nkEDOZNTSxjbbR8l6lF2gyr6Np+jrPlslqDxQkN6rMXCECQ3isNPZAGszAfYoJOPGlg==} - '@shikijs/engine-javascript@3.13.0': - resolution: {integrity: sha512-Ty7xv32XCp8u0eQt8rItpMs6rU9Ki6LJ1dQOW3V/56PKDcpvfHPnYFbsx5FFUP2Yim34m/UkazidamMNVR4vKg==} + '@shikijs/engine-javascript@3.15.0': + resolution: {integrity: sha512-ZedbOFpopibdLmvTz2sJPJgns8Xvyabe2QbmqMTz07kt1pTzfEvKZc5IqPVO/XFiEbbNyaOpjPBkkr1vlwS+qg==} - '@shikijs/engine-oniguruma@3.13.0': - resolution: {integrity: sha512-O42rBGr4UDSlhT2ZFMxqM7QzIU+IcpoTMzb3W7AlziI1ZF7R8eS2M0yt5Ry35nnnTX/LTLXFPUjRFCIW+Operg==} + '@shikijs/engine-oniguruma@3.15.0': + resolution: {integrity: sha512-HnqFsV11skAHvOArMZdLBZZApRSYS4LSztk2K3016Y9VCyZISnlYUYsL2hzlS7tPqKHvNqmI5JSUJZprXloMvA==} - '@shikijs/langs@3.13.0': - resolution: {integrity: sha512-672c3WAETDYHwrRP0yLy3W1QYB89Hbpj+pO4KhxK6FzIrDI2FoEXNiNCut6BQmEApYLfuYfpgOZaqbY+E9b8wQ==} + '@shikijs/langs@3.15.0': + resolution: {integrity: sha512-WpRvEFvkVvO65uKYW4Rzxs+IG0gToyM8SARQMtGGsH4GDMNZrr60qdggXrFOsdfOVssG/QQGEl3FnJ3EZ+8w8A==} - '@shikijs/rehype@3.13.0': - resolution: {integrity: sha512-dxvB5gXEpiTI3beGwOPEwxFxQNmUWM4cwOWbvUmL6DnQJGl18/+cCjVHZK2OnasmU0v7SvM39Zh3iliWdwfBDA==} + '@shikijs/rehype@3.15.0': + resolution: {integrity: sha512-U+tqD1oxL+85N8FaW5XYIlMZ8KAa2g9IdplEZxPWflGRJf2gQRiBMMrpdG1USz3PN350YnMUHWcz9Twt3wJjXQ==} - '@shikijs/themes@3.13.0': - resolution: {integrity: sha512-Vxw1Nm1/Od8jyA7QuAenaV78BG2nSr3/gCGdBkLpfLscddCkzkL36Q5b67SrLLfvAJTOUzW39x4FHVCFriPVgg==} + '@shikijs/themes@3.15.0': + resolution: {integrity: sha512-8ow2zWb1IDvCKjYb0KiLNrK4offFdkfNVPXb1OZykpLCzRU6j+efkY+Y7VQjNlNFXonSw+4AOdGYtmqykDbRiQ==} '@shikijs/transformers@3.15.0': resolution: {integrity: sha512-Hmwip5ovvSkg+Kc41JTvSHHVfCYF+C8Cp1omb5AJj4Xvd+y9IXz2rKJwmFRGsuN0vpHxywcXJ1+Y4B9S7EG1/A==} - '@shikijs/types@3.13.0': - resolution: {integrity: sha512-oM9P+NCFri/mmQ8LoFGVfVyemm5Hi27330zuOBp0annwJdKH1kOLndw3zCtAVDehPLg9fKqoEx3Ht/wNZxolfw==} - '@shikijs/types@3.15.0': resolution: {integrity: sha512-BnP+y/EQnhihgHy4oIAN+6FFtmfTekwOLsQbRw9hOKwqgNy8Bdsjq8B05oAt/ZgvIWWFrshV71ytOrlPfYjIJw==} '@shikijs/vscode-textmate@10.0.2': resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} + '@sideway/address@4.1.5': + resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} + + '@sideway/formula@3.0.1': + resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==} + + '@sideway/pinpoint@2.0.0': + resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} + '@sinclair/typebox@0.27.8': resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} @@ -3364,6 +3816,9 @@ packages: resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} engines: {node: '>=18'} + '@socket.io/component-emitter@3.1.2': + resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} + '@standard-schema/spec@1.0.0': resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==} @@ -3383,8 +3838,8 @@ packages: resolution: {integrity: sha512-Ck3zFhQhIhi02Hl6T4ZmJsXdnJE+wXcJz5f8klxd4keRYgenMnip3JDPMGDRLbnC/2iGd8P0sBIQqI3KxfVjBg==} hasBin: true - '@tsconfig/node10@1.0.11': - resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} + '@tsconfig/node10@1.0.12': + resolution: {integrity: sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==} '@tsconfig/node12@1.0.11': resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} @@ -3413,18 +3868,24 @@ packages: '@types/bonjour@3.5.13': resolution: {integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==} - '@types/chai@5.2.2': - resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==} - '@types/chai@5.2.3': resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} '@types/connect-history-api-fallback@1.5.4': resolution: {integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==} + '@types/connect@3.4.35': + resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} + '@types/connect@3.4.38': resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + '@types/cookie@0.4.1': + resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==} + + '@types/cors@2.8.19': + resolution: {integrity: sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==} + '@types/d3-array@3.2.2': resolution: {integrity: sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==} @@ -3533,14 +3994,20 @@ packages: '@types/estree-jsx@1.0.5': resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} + '@types/estree@1.0.0': + resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==} + '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} - '@types/express-serve-static-core@4.19.6': - resolution: {integrity: sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==} + '@types/express-serve-static-core@4.19.7': + resolution: {integrity: sha512-FvPtiIf1LfhzsaIXhv/PHan/2FeQBbtBDtfX2QfvPxdUelMDEckK08SM6nqo1MIZY3RUlfA+HV8+hFUSio78qg==} - '@types/express@4.17.23': - resolution: {integrity: sha512-Crp6WY9aTYP3qPi2wGDo9iUe/rceX01UMhnF1jmwDcKCFM6cx7YhGP/Mpr3y9AASpfHixIG0E6azCcL5OcDHsQ==} + '@types/express-serve-static-core@5.1.0': + resolution: {integrity: sha512-jnHMsrd0Mwa9Cf4IdOzbz543y4XJepXrbia2T4b6+spXC2We3t1y6K44D3mR8XMFSXMCf3/l7rCgddfx7UNVBA==} + + '@types/express@4.17.25': + resolution: {integrity: sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==} '@types/fs-extra@11.0.4': resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==} @@ -3560,8 +4027,8 @@ packages: '@types/http-errors@2.0.5': resolution: {integrity: sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==} - '@types/http-proxy@1.17.16': - resolution: {integrity: sha512-sdWoUajOB1cd0A8cRRQ1cfyWNbmFKLAqBB89Y8x5iYyG/mkJHc0YUH8pdWBy2omi9qtCpiIgGjuwO0dQST2l5w==} + '@types/http-proxy@1.17.17': + resolution: {integrity: sha512-ED6LB+Z1AVylNTu7hdzuBqOgMnvG/ld6wGCG8wFnAzKX5uyW2K3WD52v0gnLCTK/VLpXtKckgWuyScYK6cSPaw==} '@types/is-ci@3.0.4': resolution: {integrity: sha512-AkCYCmwlXeuH89DagDCzvCAyltI2v9lh3U3DqSg/GrBYoReAaWwxfXCqMx9UV5MajLZ4ZFwZzV4cABGIxk2XRw==} @@ -3605,34 +4072,51 @@ packages: '@types/node@20.19.25': resolution: {integrity: sha512-ZsJzA5thDQMSQO788d7IocwwQbI8B5OPzmqNvpf3NY/+MHDAS759Wo0gd2WQeXYt5AAAQjzcrTVC6SKCuYgoCQ==} + '@types/parse-json@4.0.2': + resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} + + '@types/prop-types@15.7.15': + resolution: {integrity: sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==} + '@types/qs@6.14.0': resolution: {integrity: sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==} '@types/range-parser@1.2.7': resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} - '@types/react-dom@19.1.9': - resolution: {integrity: sha512-qXRuZaOsAdXKFyOhRBg6Lqqc0yay13vN7KrIg4L7N4aaHN68ma9OK3NE1BoDFgFOTfM7zg+3/8+2n8rLUH3OKQ==} + '@types/react-dom@19.2.3': + resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==} + peerDependencies: + '@types/react': ^19.2.0 + + '@types/react-transition-group@4.4.12': + resolution: {integrity: sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w==} peerDependencies: - '@types/react': ^19.0.0 + '@types/react': '*' - '@types/react@19.1.15': - resolution: {integrity: sha512-+kLxJpaJzXybyDyFXYADyP1cznTO8HSuBpenGlnKOAkH4hyNINiywvXS/tGJhsrGGP/gM185RA3xpjY0Yg4erA==} + '@types/react@19.2.6': + resolution: {integrity: sha512-p/jUvulfgU7oKtj6Xpk8cA2Y1xKTtICGpJYeJXz2YVO2UcvjQgeRMLDGfDeqeRW2Ta+0QNFwcc8X3GH8SxZz6w==} '@types/retry@0.12.2': resolution: {integrity: sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==} + '@types/semver@7.5.8': + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} + '@types/semver@7.7.1': resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==} - '@types/send@0.17.5': - resolution: {integrity: sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==} + '@types/send@0.17.6': + resolution: {integrity: sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==} + + '@types/send@1.2.1': + resolution: {integrity: sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==} '@types/serve-index@1.9.4': resolution: {integrity: sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==} - '@types/serve-static@1.15.8': - resolution: {integrity: sha512-roei0UY3LhpOJvjbIP6ZZFngyLKl5dskOtDhxY5THRSpO+ZI+nzJ+m5yUMzGrp89YRa7lvknKkMYjqQFGwA7Sg==} + '@types/serve-static@1.15.10': + resolution: {integrity: sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==} '@types/sockjs@0.3.36': resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} @@ -3640,6 +4124,9 @@ packages: '@types/stack-utils@2.0.3': resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + '@types/tapable@2.2.2': + resolution: {integrity: sha512-ujqOVJEeLcwpDVJPnp/k3u1UXmTKq5urJq9fO8aUKg8Vlel5RNOFbVKEfqfh6wGfF/M+HiTJlBJMLC1aDfyf0Q==} + '@types/tough-cookie@4.0.5': resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} @@ -3658,14 +4145,17 @@ packages: '@types/webpack-bundle-analyzer@4.7.0': resolution: {integrity: sha512-c5i2ThslSNSG8W891BRvOd/RoCjI2zwph8maD22b1adtSns20j+0azDDMCK06DiVrzTgnwiDl5Ntmu1YRJw8Sg==} + '@types/webpack@5.28.0': + resolution: {integrity: sha512-8cP0CzcxUiFuA9xGJkfeVpqmWTk9nx6CWwamRGCj95ph1SmlRRk9KlCZ6avhCbZd4L68LvYT6l1kpdEnQXrF8w==} + '@types/ws@8.18.1': resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} '@types/yargs-parser@21.0.3': resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} - '@types/yargs@17.0.33': - resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} + '@types/yargs@17.0.35': + resolution: {integrity: sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==} '@ungap/structured-clone@1.3.0': resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} @@ -3679,6 +4169,10 @@ packages: resolution: {integrity: sha512-8LwjnlP39s08C08J5NstzriPvW1SP8Zfpp1BvC2sI35kPeZnHfxVkCwu4/+Wodgnd60UtT1n8K8zw+Mp7J9JmQ==} hasBin: true + '@vercel/oidc@3.0.5': + resolution: {integrity: sha512-fnYhv671l+eTTp48gB4zEsTW/YtRgRPnkI2nT7x6qw5rkI1Lq2hTmQIpHPgyThI0znLK+vX2n9XxKdXZ7BUbbw==} + engines: {node: '>= 20'} + '@vitest/expect@3.2.4': resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==} @@ -3797,12 +4291,40 @@ packages: prismjs: optional: true + '@webpack-cli/configtest@2.1.1': + resolution: {integrity: sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==} + engines: {node: '>=14.15.0'} + peerDependencies: + webpack: 5.x.x + webpack-cli: 5.x.x + + '@webpack-cli/info@2.0.2': + resolution: {integrity: sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==} + engines: {node: '>=14.15.0'} + peerDependencies: + webpack: 5.x.x + webpack-cli: 5.x.x + + '@webpack-cli/serve@2.0.5': + resolution: {integrity: sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==} + engines: {node: '>=14.15.0'} + peerDependencies: + webpack: 5.x.x + webpack-cli: 5.x.x + webpack-dev-server: '*' + peerDependenciesMeta: + webpack-dev-server: + optional: true + '@xtuc/ieee754@1.2.0': resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} '@xtuc/long@4.2.2': resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + '@zeit/schemas@2.36.0': + resolution: {integrity: sha512-7kjMwcChYEzMKjeex9ZFXkt1AyNov9R5HZtjBKVsmVpw7pa7ZtlCGvCBC2vnnXctaYN+aRI61HjIqeetZW5ROg==} + abort-controller@3.0.0: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} engines: {node: '>=6.5'} @@ -3811,6 +4333,12 @@ packages: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} engines: {node: '>= 0.6'} + acorn-import-assertions@1.9.0: + resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} + deprecated: package has been renamed to acorn-import-attributes + peerDependencies: + acorn: ^8 + acorn-import-phases@1.0.4: resolution: {integrity: sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==} engines: {node: '>=10.13.0'} @@ -3822,6 +4350,10 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + acorn-walk@8.3.2: + resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} + engines: {node: '>=0.4.0'} + acorn-walk@8.3.4: resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} engines: {node: '>=0.4.0'} @@ -3836,12 +4368,16 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + adm-zip@0.5.16: + resolution: {integrity: sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==} + engines: {node: '>=12.0'} + agent-base@7.1.4: resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} engines: {node: '>= 14'} - ai@5.0.59: - resolution: {integrity: sha512-SuAFxKXt2Ha9FiXB3gaOITkOg9ek/3QNVatGVExvTT4gNXc+hJpuNe1dmuwf6Z5Op4fzc8wdbsrYP27ZCXBzlw==} + ai@5.0.98: + resolution: {integrity: sha512-RpMnwnml68Swblobvk6IdF7HLZrog72Ve6H5J3aN+A/JPg4y5CjCXeQyK1N4wJStyuTa6AoKYfJR5F4e/aVpHQ==} engines: {node: '>=18'} peerDependencies: zod: ^3.25.76 || ^4.1.8 @@ -3892,12 +4428,19 @@ packages: ajv@8.17.1: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} - algoliasearch@5.39.0: - resolution: {integrity: sha512-DzTfhUxzg9QBNGzU/0kZkxEV72TeA4MmPJ7RVfLnQwHNhhliPo7ynglEWJS791rNlLFoTyrKvkapwr/P3EXV9A==} + algoliasearch@5.44.0: + resolution: {integrity: sha512-f8IpsbdQjzTjr/4mJ/jv5UplrtyMnnciGax6/B0OnLCs2/GJTK13O4Y7Ff1AvJVAaztanH+m5nzPoUq6EAy+aA==} engines: {node: '>= 14.0.0'} - ansi-escapes@7.1.1: - resolution: {integrity: sha512-Zhl0ErHcSRUaVfGUeUdDuLgpkEo8KIFjB4Y9uAc46ScOpdDiU1Dbyplh7qWJeJ/ZHpbyMSM26+X3BySgnIz40Q==} + ansi-align@3.0.1: + resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} + + ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + + ansi-escapes@7.2.0: + resolution: {integrity: sha512-g6LhBsl+GBPRWGWsBtutpzBYuIIdBkLEvad5C/va/74Db018+5TZiyA26cZJAr3Rft5lprVqOIPxf5Vid6tqAw==} engines: {node: '>=18'} ansi-html-community@0.0.8: @@ -3905,6 +4448,11 @@ packages: engines: {'0': node >= 0.8.0} hasBin: true + ansi-html@0.0.9: + resolution: {integrity: sha512-ozbS3LuenHVxNRh/wdnN16QapUHzauqSomAl1jwwJRRsGwFwtj644lIhxfWu0Fy0acCij2+AEgHvjscq3dlVXg==} + engines: {'0': node >= 0.8.0} + hasBin: true + ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -3913,6 +4461,10 @@ packages: resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} engines: {node: '>=12'} + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} @@ -3936,6 +4488,9 @@ packages: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} + arch@2.2.0: + resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} + arg@4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} @@ -3948,6 +4503,10 @@ packages: argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + aria-query@5.3.2: + resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} + engines: {node: '>= 0.4'} + array-flatten@1.1.1: resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} @@ -3978,17 +4537,13 @@ packages: resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} hasBin: true - async-function@1.0.0: - resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} - engines: {node: '>= 0.4'} - - async-generator-function@1.0.0: - resolution: {integrity: sha512-+NAXNqgCrB95ya4Sr66i1CL2hqLVckAk7xwRYWdcm39/ELQ6YNn1aw5r0bdQtqNZgQpEWzc5yc/igXc7aL5SLA==} - engines: {node: '>= 0.4'} - asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + at-least-node@1.0.0: + resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} + engines: {node: '>= 4.0.0'} + available-typed-arrays@1.0.7: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} @@ -3996,6 +4551,10 @@ packages: axios@1.13.2: resolution: {integrity: sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==} + axobject-query@4.1.0: + resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} + engines: {node: '>= 0.4'} + babel-loader@10.0.0: resolution: {integrity: sha512-z8jt+EdS61AMw22nSfoNJAZ0vrtmhPRVi6ghL3rCeRZI8cdNYFiV5xeV3HbE7rlZZNmGH8BVccwWt8/ED0QOHA==} engines: {node: ^18.20.0 || ^20.10.0 || >=22.0.0} @@ -4010,6 +4569,15 @@ packages: resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} engines: {node: '>=8'} + babel-plugin-macros@3.1.0: + resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} + engines: {node: '>=10', npm: '>=6'} + + babel-plugin-styled-components@2.1.4: + resolution: {integrity: sha512-Xgp9g+A/cG47sUyRwwYxGM4bR/jDRg5N6it/8+HxCnbT5XNKSKDT9xm4oag/osgqjC2It/vH0yXsomOG6k558g==} + peerDependencies: + styled-components: '>= 2' + babel-preset-current-node-syntax@1.2.0: resolution: {integrity: sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==} peerDependencies: @@ -4028,8 +4596,12 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - baseline-browser-mapping@2.8.9: - resolution: {integrity: sha512-hY/u2lxLrbecMEWSB0IpGzGyDyeoMFQhCvZd2jGFSE5I17Fh01sYUBPCJtkWERw7zrac9+cIghxm/ytJa2X8iA==} + base64id@2.0.0: + resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==} + engines: {node: ^4.5.0 || >= 5.9} + + baseline-browser-mapping@2.8.30: + resolution: {integrity: sha512-aTUKW4ptQhS64+v2d6IkPzymEzzhw+G0bA1g3uBRV3+ntkH+svttKseW5IOR4Ed6NUVKqnY7qT3dKvzQ7io4AA==} hasBin: true batch@0.6.1: @@ -4051,6 +4623,10 @@ packages: bn.js@5.2.2: resolution: {integrity: sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw==} + body-parser@1.20.1: + resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + body-parser@1.20.3: resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} @@ -4064,6 +4640,10 @@ packages: boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + boxen@7.0.0: + resolution: {integrity: sha512-j//dBVuyacJbvW+tvZ9HuH03fZ46QcaKvvhZickZqtB271DxJ7SNRSNxrV/dZX0085m7hISRZWbzWlJvx/rHSg==} + engines: {node: '>=14.16'} + brace-expansion@1.1.12: resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} @@ -4103,19 +4683,19 @@ packages: browserslist-load-config@1.0.1: resolution: {integrity: sha512-orLR5HAoQugQNVUXUwNd+GAAwl3H64KLIwoMFBNW0AbMSqX2Lxs4ZV2/5UoNrVQlQqF9ygychiu7Svr/99bLtg==} - browserslist@4.26.2: - resolution: {integrity: sha512-ECFzp6uFOSB+dcZ5BK/IBaGWssbSYBHvuMeMt3MMFyhI0Z8SqGgEkBLARgpRH3hutIgPVsALcMwbDrJqPxQ65A==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - - browserslist@4.26.3: - resolution: {integrity: sha512-lAUU+02RFBuCKQPj/P6NgjlbCnLBMp4UtgTx7vNHd3XSIJF87s9a5rA3aH2yw3GS9DqZAUbOtZdCCiZeVRqt0w==} + browserslist@4.28.0: + resolution: {integrity: sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true bser@2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + btoa@1.2.1: + resolution: {integrity: sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==} + engines: {node: '>= 0.4.0'} + hasBin: true + buffer-builder@0.2.0: resolution: {integrity: sha512-7VPMEPuYznPSoR21NE1zvd2Xna6c/CloiZCfcMXR1Jny6PjX0N4Nsa38zcBFo/FMK+BlA+FLKbJCQ0i2yxp+Xg==} @@ -4142,6 +4722,10 @@ packages: resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} engines: {node: '>=18'} + bytes@3.0.0: + resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} + engines: {node: '>= 0.8'} + bytes@3.1.2: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} @@ -4177,11 +4761,15 @@ packages: resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} engines: {node: '>=6'} - caniuse-lite@1.0.30001745: - resolution: {integrity: sha512-ywt6i8FzvdgrrrGbr1jZVObnVv6adj+0if2/omv9cmR2oiZs30zL4DIyaptKcbOrBdOIc74QTMoJvSE2QHh5UQ==} + camelcase@7.0.1: + resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} + engines: {node: '>=14.16'} + + camelize@1.0.1: + resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} - caniuse-lite@1.0.30001751: - resolution: {integrity: sha512-A0QJhug0Ly64Ii3eIqHu5X51ebln3k4yTUkY1j8drqpWHVreg/VLijN48cZ1bYPiqOQuqpkIKnzr/Ul8V+p6Cw==} + caniuse-lite@1.0.30001756: + resolution: {integrity: sha512-4HnCNKbMLkLdhJz3TToeVWHSnfJvPaq6vu/eRP0Ahub/07n484XHhBF5AJoSGHdVrS8tKFauUQz8Bp9P7LVx7A==} case-police@2.1.1: resolution: {integrity: sha512-b7ntnoig2aVgKDi/OiziUPmbUQO4lVS0qxspY4Fu+U/N8q2iOU2TpsJjHu94S3GDWEjYnmOOQH7PAgt2ColTPQ==} @@ -4194,14 +4782,30 @@ packages: resolution: {integrity: sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==} engines: {node: '>=18'} + chalk-template@0.4.0: + resolution: {integrity: sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==} + engines: {node: '>=12'} + chalk-template@1.1.2: resolution: {integrity: sha512-2bxTP2yUH7AJj/VAXfcA+4IcWGdQ87HwBANLt5XxGTeomo8yG0y95N1um9i5StvhT/Bl0/2cARA5v1PpPXUxUA==} engines: {node: '>=14.16'} + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + + chalk@3.0.0: + resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} + engines: {node: '>=8'} + chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} + chalk@5.0.1: + resolution: {integrity: sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + chalk@5.6.2: resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} @@ -4221,8 +4825,8 @@ packages: character-reference-invalid@2.0.1: resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} - chardet@2.1.0: - resolution: {integrity: sha512-bNFETTG/pM5ryzQ9Ad0lJOTa6HWD/YsScAR3EnCPZRPlQh77JocYktSHOUHelyhm8IARL+o4c4F1bP5KVOjiRA==} + chardet@2.1.1: + resolution: {integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==} check-dependency-version-consistency@5.0.1: resolution: {integrity: sha512-Hpf7lgElsLVCTJKjFHEVH76Jbf1DnnJ7IJK+zN2b+pRIF0Cs5Girjw1lzWgyV/3QGUR3D6goL0oN6mQ6DlrDCw==} @@ -4257,8 +4861,8 @@ packages: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} - ci-info@4.3.0: - resolution: {integrity: sha512-l+2bNRMiQgcfILUi33labAZYIWlH1kWDp+ecNo5iisRKrbm0xcRyCww71/YU0Fkw0mAFpz9bJayXPjey6vkmaQ==} + ci-info@4.3.1: + resolution: {integrity: sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==} engines: {node: '>=8'} cipher-base@1.0.7: @@ -4273,6 +4877,10 @@ packages: resolution: {integrity: sha512-LWAxzHqdHsAZlPlEyJ2Poz6AIs384mPeqLVCru2p0BrP9G/kVGuhNyZYClLO6cXlnuJjzC8xtsJIuMjKqLXoAw==} engines: {node: '>=8'} + cli-boxes@3.0.0: + resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} + engines: {node: '>=10'} + cli-cursor@5.0.0: resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} engines: {node: '>=18'} @@ -4290,6 +4898,14 @@ packages: peerDependencies: typanion: '*' + clipboardy@3.0.0: + resolution: {integrity: sha512-Su+uU5sr1jkUy1sGRpLKjKrvEOVXgSgiSInwa/qeID6aJ07yh+5NWc3h2QfjHjBnfX4LhtFcuAWKUsJ3r+fjbg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + clone-deep@4.0.1: resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} engines: {node: '>=6'} @@ -4298,6 +4914,9 @@ packages: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} + code-red@1.0.4: + resolution: {integrity: sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==} + coffee-loader@1.0.1: resolution: {integrity: sha512-l3lcWeyNE11ZXNYEpkIkerrvBdSpT06/kcR7MyY+0ys38MOuqzhr+s+s7Tsvv2QH1+qEmhvG8mGuUWIO2zH7Bg==} engines: {node: '>= 10.13.0'} @@ -4313,10 +4932,16 @@ packages: collapse-white-space@2.1.0: resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} @@ -4337,6 +4962,10 @@ packages: resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} engines: {node: '>=14'} + commander@11.1.0: + resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} + engines: {node: '>=16'} + commander@13.1.0: resolution: {integrity: sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==} engines: {node: '>=18'} @@ -4382,6 +5011,11 @@ packages: resolution: {integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==} engines: {'0': node >= 6.0} + concurrently@8.2.2: + resolution: {integrity: sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==} + engines: {node: ^14.13.0 || >=16.0.0} + hasBin: true + confbox@0.1.8: resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} @@ -4392,6 +5026,10 @@ packages: resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==} engines: {node: '>=0.8'} + connect@3.7.0: + resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} + engines: {node: '>= 0.10.0'} + console-browserify@1.2.0: resolution: {integrity: sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==} @@ -4401,6 +5039,10 @@ packages: constants-browserify@1.0.0: resolution: {integrity: sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==} + content-disposition@0.5.2: + resolution: {integrity: sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==} + engines: {node: '>= 0.6'} + content-disposition@0.5.4: resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} engines: {node: '>= 0.6'} @@ -4409,34 +5051,56 @@ packages: resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} engines: {node: '>= 0.6'} + convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} cookie-signature@1.0.6: resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + cookie@0.4.2: + resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} + engines: {node: '>= 0.6'} + cookie@0.7.1: resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} engines: {node: '>= 0.6'} + cookies@0.9.1: + resolution: {integrity: sha512-TG2hpqe4ELx54QER/S3HQ9SRVnQnGBtKUz5bLQWtYAQ+o6GpgMs6sYUvaiJjVxb+UXwhRhAEP3m7LbsIZ77Hmw==} + engines: {node: '>= 0.8'} + copy-anything@2.0.6: resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==} copy-to-clipboard@3.3.3: resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==} + core-js-pure@3.47.0: + resolution: {integrity: sha512-BcxeDbzUrRnXGYIVAGFtcGQVNpFcUhVjr6W7F8XktvQW2iJP9e66GP6xdKotCRFlrxBvNIBrhwKteRXqMV86Nw==} + core-js@3.46.0: resolution: {integrity: sha512-vDMm9B0xnqqZ8uSBpZ8sNtRtOdmfShrvT6h2TuQGLs0Is+cR0DYbj/KWP6ALVNbWPpqA/qPLoOuppJN07humpA==} core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + cors@2.8.5: + resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} + engines: {node: '>= 0.10'} + cose-base@1.0.3: resolution: {integrity: sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==} cose-base@2.2.0: resolution: {integrity: sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==} + cosmiconfig@7.1.0: + resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} + engines: {node: '>=10'} + cosmiconfig@8.3.6: resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} engines: {node: '>=14'} @@ -4470,6 +5134,10 @@ packages: create-rstack@1.7.8: resolution: {integrity: sha512-B8+cOGs0Gsk2i3ZVJweMsFFU50vXlNYzkWOiVQBoMs02Ui/6hQcqB4d+jmTEgwvdb5gJmX2Rcr9J6l+Ld1yCQQ==} + cron-parser@4.9.0: + resolution: {integrity: sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==} + engines: {node: '>=12.0.0'} + cross-env@10.1.0: resolution: {integrity: sha512-GsYosgnACZTADcmEyJctkJIoqAhHjttw7RsFrVoJNXbsWWqaq6Ym+7kZjq6mS45O0jij6vtiReppKQEtqWy6Dw==} engines: {node: '>=20'} @@ -4525,6 +5193,10 @@ packages: engines: {node: '>=20'} hasBin: true + css-color-keywords@1.0.0: + resolution: {integrity: sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==} + engines: {node: '>=4'} + css-loader@7.1.2: resolution: {integrity: sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==} engines: {node: '>= 18.12.0'} @@ -4540,6 +5212,13 @@ packages: css-select@4.3.0: resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} + css-to-react-native@3.2.0: + resolution: {integrity: sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==} + + css-tree@2.3.1: + resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + css-what@6.2.2: resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} engines: {node: '>= 6'} @@ -4553,8 +5232,8 @@ packages: resolution: {integrity: sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==} engines: {node: '>=18'} - csstype@3.1.3: - resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} cuint@0.2.2: resolution: {integrity: sha512-d4ZVpCW31eWwCMe1YT3ur7mUDnTXbgwyzaL320DrcRT45rfjYxkt5QWLrmOJ+/UEAI2+fQgKe/fCjR8l4TpRgw==} @@ -4723,11 +5402,22 @@ packages: resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} engines: {node: '>=18'} + date-fns@2.30.0: + resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} + engines: {node: '>=0.11'} + date-fns@4.1.0: resolution: {integrity: sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==} - dayjs@1.11.18: - resolution: {integrity: sha512-zFBQ7WFRvVRhKcWoUh+ZA1g2HVgUbsZm9sbddh8EC5iv93sui8DVVz1Npvz+r6meo9VKfa8NyLWBsQK1VvIKPA==} + date-format@4.0.14: + resolution: {integrity: sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==} + engines: {node: '>=4.0'} + + dayjs@1.11.19: + resolution: {integrity: sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==} + + dayjs@1.11.6: + resolution: {integrity: sha512-zZbY5giJAinCG+7AGaw0wIhNZ6J8AhWuSXKvuc1KAyMiRsvGQWqh4L+MomvhdAYjN+lqvVCMq1I41e3YHvXkyQ==} debounce@1.2.1: resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} @@ -4740,6 +5430,15 @@ packages: supports-color: optional: true + debug@4.3.7: + resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + debug@4.4.3: resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} engines: {node: '>=6.0'} @@ -4755,26 +5454,45 @@ packages: decode-named-character-reference@1.2.0: resolution: {integrity: sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==} + deep-eql@4.1.0: + resolution: {integrity: sha512-4YM7QHOMBoVWqGPnp3OPPK7+WCIhUR2OTpahlNQFiyTH3QEeiu9MtBiTAJBkfny4PNhpFbV/jm3lv0iCfb40MA==} + engines: {node: '>=6'} + deep-eql@5.0.2: resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} engines: {node: '>=6'} + deep-equal@1.0.1: + resolution: {integrity: sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==} + + deep-extend@0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + deepmerge@4.3.1: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} - default-browser-id@5.0.0: - resolution: {integrity: sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==} + default-browser-id@5.0.1: + resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==} engines: {node: '>=18'} - default-browser@5.2.1: - resolution: {integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==} + default-browser@5.4.0: + resolution: {integrity: sha512-XDuvSq38Hr1MdN47EDvYtx3U0MTqpCEn+F6ft8z2vYDzMrvQhVp0ui9oQdqW3MvK3vqUETglt1tVGgjLuJ5izg==} engines: {node: '>=18'} + default-gateway@6.0.3: + resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} + engines: {node: '>= 10'} + define-data-property@1.1.4: resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} + define-lazy-prop@2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + define-lazy-prop@3.0.0: resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} engines: {node: '>=12'} @@ -4790,6 +5508,9 @@ packages: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} + delegates@1.0.0: + resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} + depd@1.1.2: resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} engines: {node: '>= 0.6'} @@ -4851,6 +5572,9 @@ packages: dom-converter@0.2.0: resolution: {integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==} + dom-helpers@5.2.1: + resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} + dom-serializer@1.4.1: resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} @@ -4876,8 +5600,8 @@ packages: resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} engines: {node: '>= 4'} - dompurify@3.2.7: - resolution: {integrity: sha512-WhL/YuveyGXJaerVlMYGWhvQswa7myDG17P7Vu65EWC05o8vfeNbvNf4d/BOvH99+ZW+LlQsc1GDKMa1vNK6dw==} + dompurify@3.3.0: + resolution: {integrity: sha512-r+f6MYR1gGN1eJv0TVQbhA7if/U7P87cdPl3HN5rikqaBSBxLiCb/b9O+2eG0cxz0ghyU+mU1QkbsOwERMYlWQ==} domutils@2.8.0: resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} @@ -4904,8 +5628,8 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - electron-to-chromium@1.5.227: - resolution: {integrity: sha512-ITxuoPfJu3lsNWUi2lBM2PaBPYgH3uqmxut5vmBxgYvyI4AlJ6P3Cai1O76mOrkJCBzq0IxWg/NtqOrpu/0gKA==} + electron-to-chromium@1.5.259: + resolution: {integrity: sha512-I+oLXgpEJzD6Cwuwt1gYjxsDmu/S/Kd41mmLA3O+/uH2pFRO/DvOjUyGozL8j3KeLV6WyZ7ssPwELMsXCcsJAQ==} elliptic@6.6.1: resolution: {integrity: sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==} @@ -4918,8 +5642,8 @@ packages: node-addon-api: optional: true - emoji-regex@10.5.0: - resolution: {integrity: sha512-lb49vf1Xzfx080OKA0o6l8DQQpV+6Vg95zyCJX9VB/BqKYlhG7N4wgROUUHRA+ZPUefLnteQOad7z1kT2bV7bg==} + emoji-regex@10.6.0: + resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -4939,6 +5663,18 @@ packages: resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} engines: {node: '>= 0.8'} + engine.io-parser@5.2.3: + resolution: {integrity: sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==} + engines: {node: '>=10.0.0'} + + engine.io@6.5.5: + resolution: {integrity: sha512-C5Pn8Wk+1vKBoHghJODM63yk8MvrO9EWZUfkAt5HAqIgPE4/8FF0PEGHXtEd40l223+cE5ABWuPzm38PHFXfMA==} + engines: {node: '>=10.2.0'} + + enhanced-resolve@5.12.0: + resolution: {integrity: sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==} + engines: {node: '>=10.13.0'} + enhanced-resolve@5.18.3: resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==} engines: {node: '>=10.13.0'} @@ -4962,6 +5698,16 @@ packages: resolution: {integrity: sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + envinfo@7.13.0: + resolution: {integrity: sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==} + engines: {node: '>=4'} + hasBin: true + + envinfo@7.20.0: + resolution: {integrity: sha512-+zUomDcLXsVkQ37vUqWBvQwLaLlj8eZPSi61llaEFAVBY5mhcXdaSw1pSJVl4yTYD5g/gEfpNl28YYk4IPvrrg==} + engines: {node: '>=4'} + hasBin: true + environment@1.1.0: resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} engines: {node: '>=18'} @@ -5012,8 +5758,8 @@ packages: esast-util-from-js@2.0.1: resolution: {integrity: sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==} - esbuild@0.25.10: - resolution: {integrity: sha512-9RiGKvCwaqxO2owP61uQ4BgNborAQskMR6QusfWzQqv7AZOg5oGehdY2pRJMTKuwxd1IDBP4rSbI5lHzU7SMsQ==} + esbuild@0.25.12: + resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} engines: {node: '>=18'} hasBin: true @@ -5125,6 +5871,10 @@ packages: resolution: {integrity: sha512-Fqs7ChZm72y40wKjOFXBKg7nJZvQJmewP5/7LtePDdnah/+FH9Hp5sgMujSCMPXlxOAW2//1jrW9pnsY7o20vQ==} engines: {node: '>=18'} + expand-tilde@2.0.2: + resolution: {integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==} + engines: {node: '>=0.10.0'} + expect-type@1.2.2: resolution: {integrity: sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==} engines: {node: '>=12.0.0'} @@ -5143,8 +5893,8 @@ packages: resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==} engines: {node: '>= 0.10.0'} - exsolve@1.0.7: - resolution: {integrity: sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==} + exsolve@1.0.8: + resolution: {integrity: sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==} ext@1.7.0: resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} @@ -5176,6 +5926,10 @@ packages: fast-uri@3.1.0: resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} + fastest-levenshtein@1.0.16: + resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} + engines: {node: '>= 4.9.1'} + fastq@1.19.1: resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} @@ -5213,14 +5967,33 @@ packages: resolution: {integrity: sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==} engines: {node: '>=8'} + filesize@10.1.6: + resolution: {integrity: sha512-sJslQKU2uM33qH5nqewAwVB2QgR6w1aMNsYUp3aN5rMRyXEwJGmZvaWzeJFNTOXWlHQyBFCWrdj3fV/fsTOX8w==} + engines: {node: '>= 10.4.0'} + fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} + finalhandler@1.1.2: + resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} + engines: {node: '>= 0.8'} + finalhandler@1.3.1: resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} engines: {node: '>= 0.8'} + find-file-up@2.0.1: + resolution: {integrity: sha512-qVdaUhYO39zmh28/JLQM5CoYN9byEOKEH4qfa8K1eNV17W0UUMJ9WgbR/hHFH+t5rcl+6RTb5UC7ck/I+uRkpQ==} + engines: {node: '>=8'} + + find-pkg@2.0.0: + resolution: {integrity: sha512-WgZ+nKbELDa6N3i/9nrHeNznm+lY3z4YfhDDWgW+5P0pdmMj26bxaxU11ookgY3NyP9GC7HvZ9etp0jRFqGEeQ==} + engines: {node: '>=8'} + + find-root@1.1.0: + resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} + find-up@4.1.0: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} @@ -5274,8 +6047,8 @@ packages: typescript: '>3.6.0' webpack: ^5.11.0 - form-data@4.0.4: - resolution: {integrity: sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==} + form-data@4.0.5: + resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==} engines: {node: '>= 6'} forwarded@0.2.0: @@ -5308,6 +6081,14 @@ packages: resolution: {integrity: sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==} engines: {node: '>=14.14'} + fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + + fs-extra@9.1.0: + resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} + engines: {node: '>=10'} + fs-monkey@1.1.0: resolution: {integrity: sha512-QMUezzXWII9EV5aTFXW1UBVUO77wYPpjqIF8/AviUCThNeSYZykpoTixUeaNNBwmCev0AMDWMAni+f8Hxb1IFw==} @@ -5327,8 +6108,8 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - generator-function@2.0.0: - resolution: {integrity: sha512-xPypGGincdfyl/AiSGa7GjXLkvld9V7GjZlowup9SHIJnQnHLFiLODCd/DqKOp0PBagbHJ68r1KJI9Mut7m4sA==} + generator-function@2.0.1: + resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==} engines: {node: '>= 0.4'} gensequence@8.0.8: @@ -5339,18 +6120,26 @@ packages: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + get-east-asian-width@1.4.0: resolution: {integrity: sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==} engines: {node: '>=18'} - get-intrinsic@1.3.1: - resolution: {integrity: sha512-fk1ZVEeOX9hVZ6QzoBNEC55+Ucqg4sTVwrVuigZhuRPESVFpMyXnd3sbXvPOwp7Y9riVyANiqhEuRF0G1aVSeQ==} + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} engines: {node: '>= 0.4'} get-package-type@0.1.0: resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} engines: {node: '>=8.0.0'} + get-port@5.1.1: + resolution: {integrity: sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==} + engines: {node: '>=8'} + get-proto@1.0.1: resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} engines: {node: '>= 0.4'} @@ -5359,8 +6148,8 @@ packages: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} - get-tsconfig@4.10.1: - resolution: {integrity: sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==} + get-tsconfig@4.13.0: + resolution: {integrity: sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==} github-slugger@2.0.0: resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} @@ -5373,8 +6162,8 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} - glob-to-regex.js@1.0.1: - resolution: {integrity: sha512-CG/iEvgQqfzoVsMUbxSJcwbG2JwyZ3naEqPkeltwl0BSS8Bp83k3xlGms+0QdWFUAwV+uvo80wNswKF6FWEkKg==} + glob-to-regex.js@1.2.0: + resolution: {integrity: sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' @@ -5382,10 +6171,6 @@ packages: glob-to-regexp@0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - glob@10.4.5: - resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} - hasBin: true - glob@10.5.0: resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==} hasBin: true @@ -5403,6 +6188,14 @@ packages: resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==} engines: {node: '>=18'} + global-modules@1.0.0: + resolution: {integrity: sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==} + engines: {node: '>=0.10.0'} + + global-prefix@1.0.2: + resolution: {integrity: sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==} + engines: {node: '>=0.10.0'} + globals@15.15.0: resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} engines: {node: '>=18'} @@ -5432,6 +6225,10 @@ packages: handle-thing@2.0.1: resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} + has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} @@ -5509,9 +6306,19 @@ packages: resolution: {integrity: sha512-kHDUzStHy3OIysI4sxJsfQ7KNrRKEudT7YgWRwFMFVKN7/0CINF/l3prqN8eLgo7k18Vvfz+xRcEhR/mUVlCaQ==} hasBin: true + history@4.10.1: + resolution: {integrity: sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==} + hmac-drbg@1.0.1: resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} + hoist-non-react-statics@3.3.2: + resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} + + homedir-polyfill@1.0.3: + resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} + engines: {node: '>=0.10.0'} + hookable@5.5.3: resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} @@ -5569,6 +6376,10 @@ packages: htmlparser2@8.0.2: resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} + http-assert@1.5.0: + resolution: {integrity: sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==} + engines: {node: '>= 0.8'} + http-deceiver@1.2.7: resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} @@ -5576,10 +6387,18 @@ packages: resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==} engines: {node: '>= 0.6'} + http-errors@1.8.1: + resolution: {integrity: sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==} + engines: {node: '>= 0.6'} + http-errors@2.0.0: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} + http-errors@2.0.1: + resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} + engines: {node: '>= 0.8'} + http-parser-js@0.5.10: resolution: {integrity: sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==} @@ -5650,8 +6469,8 @@ packages: engines: {node: '>=0.10.0'} hasBin: true - immutable@5.1.3: - resolution: {integrity: sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg==} + immutable@5.1.4: + resolution: {integrity: sha512-p6u1bG3YSnINT5RQmx/yRZBpenIl30kVxkTLDyHLIMk0gict704Q9n+thfDI7lTRm9vXdDYutVzXhzcThxTnXA==} import-fresh@3.3.1: resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} @@ -5661,6 +6480,11 @@ packages: resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} engines: {node: '>=8'} + import-local@3.2.0: + resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} + engines: {node: '>=8'} + hasBin: true + import-meta-resolve@4.2.0: resolution: {integrity: sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==} @@ -5678,12 +6502,15 @@ packages: inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + ini@4.1.1: resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - inline-style-parser@0.2.4: - resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==} + inline-style-parser@0.2.7: + resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==} internmap@1.0.1: resolution: {integrity: sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==} @@ -5692,6 +6519,13 @@ packages: resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} engines: {node: '>=12'} + interpret@3.1.1: + resolution: {integrity: sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==} + engines: {node: '>=10.13.0'} + + ip@1.1.9: + resolution: {integrity: sha512-cyRxvOEpNHNtchU3Ln9KC/auJgup87llfQpQ+t5ghoC/UhL16SWzbueiCsdTnWmqAWl7LadfuwhlqmtOaqMHdQ==} + ipaddr.js@1.9.1: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} @@ -5736,6 +6570,11 @@ packages: is-decimal@2.0.1: resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} + is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + is-docker@3.0.0: resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -5760,8 +6599,8 @@ packages: resolution: {integrity: sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==} engines: {node: '>=18'} - is-generator-function@1.1.0: - resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} + is-generator-function@1.1.2: + resolution: {integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==} engines: {node: '>= 0.4'} is-glob@4.0.3: @@ -5800,6 +6639,10 @@ packages: resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} engines: {node: '>=0.10.0'} + is-port-reachable@4.0.0: + resolution: {integrity: sha512-9UoipoxYmSk6Xy7QFgRv2HDyaysmgSG75TFQs6S+3pDM7ZhKTF/bskZV+0UlABHzKjNVhPjYCLfeZUEg1wXxig==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + is-potential-custom-element-name@1.0.1: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} @@ -5810,6 +6653,9 @@ packages: is-promise@2.2.2: resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} + is-reference@3.0.3: + resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==} + is-regex@1.2.1: resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} engines: {node: '>= 0.4'} @@ -5825,10 +6671,21 @@ packages: is-what@3.14.1: resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} + is-windows@1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} + + is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + is-wsl@3.1.0: resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} engines: {node: '>=16'} + isarray@0.0.1: + resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} + isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} @@ -5846,6 +6703,11 @@ packages: resolution: {integrity: sha512-u4sej9B1LPSxTGKB/HiuzvEQnXH0ECYkSVQU39koSwmFAxhlEAFl9RdTvLv4TOTQUgBS5O3O5fwUxk6byBZ+IQ==} engines: {node: '>=10'} + isomorphic-ws@5.0.0: + resolution: {integrity: sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==} + peerDependencies: + ws: '*' + istanbul-lib-coverage@3.2.2: resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} engines: {node: '>=8'} @@ -5911,8 +6773,8 @@ packages: resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} hasBin: true - jiti@2.6.0: - resolution: {integrity: sha512-VXe6RjJkBPj0ohtqaO8vSWP3ZhAKo66fKrFNCll4BTcwljPLz03pCbaNKfzGP5MbrCYcbJ7v0nOYYwUzTEIdXQ==} + jiti@2.4.2: + resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} hasBin: true jiti@2.6.1: @@ -5922,6 +6784,9 @@ packages: jju@1.4.0: resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} + joi@17.13.3: + resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==} + js-stringify@1.0.2: resolution: {integrity: sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g==} @@ -5931,12 +6796,12 @@ packages: js-tokens@9.0.1: resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} - js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + js-yaml@3.14.2: + resolution: {integrity: sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==} hasBin: true - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + js-yaml@4.1.1: + resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} hasBin: true jsdom@26.1.0: @@ -5968,6 +6833,9 @@ packages: json-schema@0.4.0: resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} + json-stream-stringify@3.0.1: + resolution: {integrity: sha512-vuxs3G1ocFDiAQ/SX0okcZbtqXwgj1g71qE9+vrjJ2EkjKQlEFDAcUNRxRU8O+GekV4v5cM2qXP0Wyt/EMDBiQ==} + json5@1.0.2: resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} hasBin: true @@ -5977,16 +6845,24 @@ packages: engines: {node: '>=6'} hasBin: true + jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + jsonfile@6.2.0: resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==} jstransformer@1.0.0: resolution: {integrity: sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A==} - katex@0.16.22: - resolution: {integrity: sha512-XCHRdUw4lf3SKBaJe4EvgqIuWwkPSo9XoeO8GjQW94Bp7TWv9hNhzZjZ+OH9yf1UmLygb7DIT5GSFQiyt16zYg==} + katex@0.16.25: + resolution: {integrity: sha512-woHRUZ/iF23GBP1dkDQMh1QBad9dmr8/PAwNA54VrSOVYgI12MAcE14TqnDdQOdzyEonGzMepYnqBMYdsoAr8Q==} hasBin: true + keygrip@1.1.0: + resolution: {integrity: sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==} + engines: {node: '>= 0.6'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + khroma@2.1.0: resolution: {integrity: sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==} @@ -5994,6 +6870,13 @@ packages: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} + koa-compose@4.1.0: + resolution: {integrity: sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==} + + koa@3.0.3: + resolution: {integrity: sha512-MeuwbCoN1daWS32/Ni5qkzmrOtQO2qrnfdxDHjrm6s4b59yG4nexAJ0pTEFyzjLp0pBVO80CZp0vW8Ze30Ebow==} + engines: {node: '>= 18'} + kolorist@1.8.0: resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} @@ -6001,8 +6884,8 @@ packages: resolution: {integrity: sha512-QJv/h939gDpvT+9SiLVlY7tZC3xB2qK57v0J04Sh9wpMb6MP1q8gB21L3WIo8T5P1MSMg3Ep14L7KkDCFG3y4w==} engines: {node: '>=16.0.0'} - launch-editor@2.11.1: - resolution: {integrity: sha512-SEET7oNfgSaB6Ym0jufAdCeo3meJVeCaaDyzRygy0xsp2BFKCprcfHljTq4QkzTLUxEKkFK6OK4811YM2oSrRg==} + launch-editor@2.12.0: + resolution: {integrity: sha512-giOHXoOtifjdHqUamwKq6c49GzBdLjvxrd2D+Q4V6uOHopJv7p9VJxikDsQ/CBXZbEITgUqSVHXLTG3VhPP1Dg==} layout-base@1.0.2: resolution: {integrity: sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==} @@ -6038,6 +6921,10 @@ packages: lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + lines-and-columns@2.0.4: + resolution: {integrity: sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + lint-staged@16.2.7: resolution: {integrity: sha512-lDIj4RnYmK7/kXMya+qJsmkRFkGolciXjrsZ6PC25GdTfWOAWetR0ZbsNXRAj1EHHImRSalc+whZFg56F5DVow==} engines: {node: '>=20.17'} @@ -6047,8 +6934,8 @@ packages: resolution: {integrity: sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g==} engines: {node: '>=20.0.0'} - loader-runner@4.3.0: - resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + loader-runner@4.3.1: + resolution: {integrity: sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==} engines: {node: '>=6.11.5'} loader-utils@1.4.2: @@ -6063,6 +6950,9 @@ packages: resolution: {integrity: sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==} engines: {node: '>=14'} + locate-character@3.0.0: + resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} + locate-path@5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} @@ -6078,6 +6968,9 @@ packages: lodash-es@4.17.21: resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + lodash.clonedeepwith@4.5.0: + resolution: {integrity: sha512-QRBRSxhbtsX1nc0baxSkkK5WlVTTm/s48DSukcGcWZwIyI8Zz+lB+kFiELJXtzfH4Aj6kMWQ1VWW4U5uUDgZMA==} + lodash.truncate@4.4.2: resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} @@ -6088,6 +6981,13 @@ packages: resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} engines: {node: '>=18'} + log4js@6.9.1: + resolution: {integrity: sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==} + engines: {node: '>=8.0'} + + long-timeout@0.1.1: + resolution: {integrity: sha512-BFRuQUqc7x2NWxfJBCyUrN8iYUYznzL9JROmRz1gZ6KlOIgmoD+njPVbb+VNn2nGMKggMsK79iUNErillsrx7w==} + longest-streak@3.1.0: resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} @@ -6115,8 +7015,9 @@ packages: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} - magic-string@0.30.19: - resolution: {integrity: sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==} + luxon@3.7.2: + resolution: {integrity: sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==} + engines: {node: '>=12'} magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} @@ -6147,8 +7048,8 @@ packages: react: optional: true - marked@16.3.0: - resolution: {integrity: sha512-K3UxuKu6l6bmA5FUwYho8CfJBlsUWAooKtdGgMcERSpF7gcBUrCGsLH7wDaaNOzwq18JzSUDyoEb/YsrqMac3w==} + marked@16.4.2: + resolution: {integrity: sha512-TI3V8YYWvkVf3KJe1dRkpnjs68JUPyEa5vjKrp1XEEJUAOaQc+Qj+L1qWbPd0SJuAdQkFU0h73sXXqwDYxsiDA==} engines: {node: '>= 20'} hasBin: true @@ -6207,10 +7108,17 @@ packages: mdast-util-to-string@4.0.0: resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + mdn-data@2.0.30: + resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + media-typer@0.3.0: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} + media-typer@1.1.0: + resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} + engines: {node: '>= 0.8'} + medium-zoom@1.1.0: resolution: {integrity: sha512-ewyDsp7k4InCUp3jRmwHBRFGyjBimKps/AJLjRSox+2q/2H4p/PNpQf+pwONWlJiOudkBXtbdmVbFjqyybfTmQ==} @@ -6351,6 +7259,10 @@ packages: resolution: {integrity: sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==} hasBin: true + mime-db@1.33.0: + resolution: {integrity: sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==} + engines: {node: '>= 0.6'} + mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} @@ -6359,13 +7271,17 @@ packages: resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} engines: {node: '>= 0.6'} + mime-types@2.1.18: + resolution: {integrity: sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==} + engines: {node: '>= 0.6'} + mime-types@2.1.35: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} - mime-types@3.0.1: - resolution: {integrity: sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==} - engines: {node: '>= 0.6'} + mime-types@3.0.2: + resolution: {integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==} + engines: {node: '>=18'} mime@1.6.0: resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} @@ -6380,6 +7296,12 @@ packages: resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} engines: {node: '>=18'} + mini-css-extract-plugin@2.9.2: + resolution: {integrity: sha512-GJuACcS//jtq4kCtd5ii/M0SZf7OZRH+BxdqXZHaJfb8TJiVl+NgQRPwiYt2EuqeSkNydn/7vP+bcE27C5mb9w==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^5.0.0 + mini-svg-data-uri@1.4.4: resolution: {integrity: sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==} hasBin: true @@ -6499,8 +7421,12 @@ packages: peerDependencies: webpack: '>=5' - node-releases@2.0.21: - resolution: {integrity: sha512-5b0pgg78U3hwXkCM8Z9b2FJdPZlr9Psr9V2gQPESdGHqbntyFJKFW4r5TeWGFzafGY3hzs1JC62VEQMbl1JFkw==} + node-releases@2.0.27: + resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} + + node-schedule@2.1.1: + resolution: {integrity: sha512-OXdegQq03OmXEjt2hZP33W2YPs/E5BcFQks46+G2gAxs4gHOIVD1u7EqlYLYSKsaIpyKCK9Gbk0ta1/gjRSMRQ==} + engines: {node: '>=6'} node-stdlib-browser@1.3.1: resolution: {integrity: sha512-X75ZN8DCLftGM5iKwoYLA3rjnrAEs97MkzvSd4q2746Tgpg8b8XWiBGiBG4ZpgcAqBgtgPHTiAc8ZMCvZuikDw==} @@ -6550,6 +7476,10 @@ packages: obuf@1.1.2: resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} + on-finished@2.3.0: + resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} + engines: {node: '>= 0.8'} + on-finished@2.4.1: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} engines: {node: '>= 0.8'} @@ -6579,6 +7509,10 @@ packages: resolution: {integrity: sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==} engines: {node: '>=18'} + open@8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} + opener@1.5.2: resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} hasBin: true @@ -6621,8 +7555,8 @@ packages: package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} - package-manager-detector@1.3.0: - resolution: {integrity: sha512-ZsEbbZORsyHuO00lY1kV3/t72yp6Ysay6Pd17ZAlNGuGwmWDLCJxFpRs0IzfXfj1o4icJOkUEioexFHzyPurSQ==} + package-manager-detector@1.5.0: + resolution: {integrity: sha512-uBj69dVlYe/+wxj8JOpr97XfsxH/eumMt6HqjNTmJDf/6NO9s+0uxeOneIz3AsPt2m6y9PqzDzd3ATcU17MNfw==} pako@1.0.11: resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} @@ -6653,6 +7587,10 @@ packages: resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} engines: {node: '>= 0.10'} + parse-passwd@1.0.0: + resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==} + engines: {node: '>=0.10.0'} + parse5@7.3.0: resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} @@ -6684,6 +7622,9 @@ packages: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} + path-is-inside@1.0.2: + resolution: {integrity: sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==} + path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} @@ -6705,6 +7646,12 @@ packages: path-to-regexp@0.1.12: resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} + path-to-regexp@1.9.0: + resolution: {integrity: sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==} + + path-to-regexp@3.3.0: + resolution: {integrity: sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==} + path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} @@ -6727,6 +7674,9 @@ packages: peberminta@0.9.0: resolution: {integrity: sha512-XIxfHpEuSJbITd1H3EeQwpcZbTLHc+VVr8ANI9t5sit565tsI4/xK3KWTUFE2e6QiangUkh3B0jihzmGnNrRsQ==} + periscopic@3.1.0: + resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} + picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -6755,6 +7705,10 @@ packages: resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} engines: {node: '>= 6'} + pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + pkg-dir@5.0.0: resolution: {integrity: sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==} engines: {node: '>=10'} @@ -6765,13 +7719,13 @@ packages: pkg-types@2.3.0: resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==} - playwright-core@1.56.0: - resolution: {integrity: sha512-1SXl7pMfemAMSDn5rkPeZljxOCYAmQnYLBTExuh6E8USHXGSX3dx6lYZN/xPpTz1vimXmPA9CDnILvmJaB8aSQ==} + playwright-core@1.56.1: + resolution: {integrity: sha512-hutraynyn31F+Bifme+Ps9Vq59hKuUCz7H1kDOcBs+2oGguKkWTU50bBWrtz34OUWmIwpBTWDxaRPXrIXkgvmQ==} engines: {node: '>=18'} hasBin: true - playwright@1.56.0: - resolution: {integrity: sha512-X5Q1b8lOdWIE4KAoHpW3SE8HvUB+ZZsUoN64ZhjnN8dOb1UpujxBtENGiZFE+9F/yhzJwYa+ca3u43FeLbboHA==} + playwright@1.56.1: + resolution: {integrity: sha512-aFi5B0WovBHTEvpM3DzXTUaeN6eN0qWnTkKx4NQaH4Wvcmc153PdaY2UBdSYKaGYw+UyWXSVyxDUg5DoPEttjw==} engines: {node: '>=18'} hasBin: true @@ -6797,16 +7751,22 @@ packages: peerDependencies: postcss: ^8.4.21 - postcss-load-config@4.0.2: - resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} - engines: {node: '>= 14'} + postcss-load-config@6.0.1: + resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==} + engines: {node: '>= 18'} peerDependencies: + jiti: '>=1.21.0' postcss: '>=8.0.9' - ts-node: '>=9.0.0' + tsx: ^4.8.1 + yaml: ^2.4.2 peerDependenciesMeta: + jiti: + optional: true postcss: optional: true - ts-node: + tsx: + optional: true + yaml: optional: true postcss-loader@8.2.0: @@ -6875,8 +7835,8 @@ packages: preact@10.27.2: resolution: {integrity: sha512-5SYSgFKSyhCbk6SrXyMpqjb5+MQBgfvEKE/OC+PujcY34sOpqtr+0AZQtPYx5IA6VxynQ7rUPCtKzyovpj9Bpg==} - prebundle@1.5.0: - resolution: {integrity: sha512-LSSMKEdfKfpBFggevmoe+gjM9un1U9yFk5TE1G+fmOo9JaPpblimQk+Q3PQYJd6jWFMTyCKoJ5gREAMZBBEMjA==} + prebundle@1.6.0: + resolution: {integrity: sha512-mv0rUfY/V5RUN/1GI4c6JvNSl8ClsosOBGDFtwePwr76t3DIsc0AzIBwc4ug39awgt00iGPIbb5OReL5NJ4arQ==} hasBin: true prettier@2.8.8: @@ -6971,6 +7931,10 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} + qs@6.11.0: + resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} + engines: {node: '>=0.6'} + qs@6.13.0: resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} engines: {node: '>=0.6'} @@ -6992,16 +7956,27 @@ packages: r-json@1.3.1: resolution: {integrity: sha512-5nhRFfjVMQdrwKUfUlRpDUCocdKtjSnYZ1R/86mpZDV3MfsZ3dYYNjSGuMX+mPBvFvQBhdzxSqxkuLPLv4uFGg==} + rambda@9.4.2: + resolution: {integrity: sha512-++euMfxnl7OgaEKwXh9QqThOjMeta2HH001N1v4mYQzBjJBnmXBh2BCK6dZAbICFVXOFUVD3xFG0R3ZPU0mxXw==} + randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} randomfill@1.0.4: resolution: {integrity: sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==} + range-parser@1.2.0: + resolution: {integrity: sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==} + engines: {node: '>= 0.6'} + range-parser@1.2.1: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} + raw-body@2.5.1: + resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==} + engines: {node: '>= 0.8'} + raw-body@2.5.2: resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} engines: {node: '>= 0.8'} @@ -7012,10 +7987,9 @@ packages: peerDependencies: webpack: ^4.0.0 || ^5.0.0 - react-dom@19.1.1: - resolution: {integrity: sha512-Dlq/5LAZgF0Gaz6yiqZCf6VCcZs1ghAJyrsu84Q/GT0gV+mCxbfmKNoGRKBYMJ8IEdGPqu49YWXD02GCknEDkw==} - peerDependencies: - react: ^19.1.1 + rc@1.2.8: + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} + hasBin: true react-dom@19.2.0: resolution: {integrity: sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==} @@ -7028,6 +8002,9 @@ packages: react-is@18.3.1: resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + react-is@19.2.0: + resolution: {integrity: sha512-x3Ax3kNSMIIkyVYhWPyO09bu0uttcAIoecO/um/rKGQ4EltYWVYtyiGkS/3xMynrbVQdS69Jhlv8FXUEZehlzA==} + react-lazy-with-preload@2.2.1: resolution: {integrity: sha512-ONSb8gizLE5jFpdHAclZ6EAAKuFX2JydnFXPPPjoUImZlLjGtKzyBS8SJgJq7CpLgsGKh9QCZdugJyEEOVC16Q==} @@ -7041,6 +8018,11 @@ packages: resolution: {integrity: sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==} engines: {node: '>=0.10.0'} + react-router-dom@5.3.4: + resolution: {integrity: sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==} + peerDependencies: + react: '>=15' + react-router-dom@6.30.2: resolution: {integrity: sha512-l2OwHn3UUnEVUqc6/1VMmR1cvZryZ3j3NzapC2eUXO1dB0sYp5mvwdjiXhpUbRb21eFow3qSxpP8Yv6oAU824Q==} engines: {node: '>=14.0.0'} @@ -7048,15 +8030,22 @@ packages: react: '>=16.8' react-dom: '>=16.8' + react-router@5.3.4: + resolution: {integrity: sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==} + peerDependencies: + react: '>=15' + react-router@6.30.2: resolution: {integrity: sha512-H2Bm38Zu1bm8KUE5NVWRMzuIyAV8p/JrOaBJAwVmp37AXG72+CZJlEBw6pdn9i5TBgLMhNDgijS4ZlblpHyWTA==} engines: {node: '>=14.0.0'} peerDependencies: react: '>=16.8' - react@19.1.1: - resolution: {integrity: sha512-w8nqGImo45dmMIfljjMwOGtbmC/mk4CMYhWIicdSflH91J9TyCyczcPFXJzrZ/ZXcgGRFeP6BU0BEJTw6tZdfQ==} - engines: {node: '>=0.10.0'} + react-transition-group@4.4.5: + resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==} + peerDependencies: + react: '>=16.6.0' + react-dom: '>=16.6.0' react@19.2.0: resolution: {integrity: sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==} @@ -7084,6 +8073,10 @@ packages: resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} engines: {node: '>= 14.18.0'} + rechoir@0.8.0: + resolution: {integrity: sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==} + engines: {node: '>= 10.13.0'} + recma-build-jsx@1.0.0: resolution: {integrity: sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==} @@ -7110,6 +8103,13 @@ packages: regex@6.0.1: resolution: {integrity: sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==} + registry-auth-token@3.3.2: + resolution: {integrity: sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==} + + registry-url@3.1.0: + resolution: {integrity: sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==} + engines: {node: '>=0.10.0'} + rehype-external-links@3.0.0: resolution: {integrity: sha512-yp+e5N9V3C6bwBeAC4n796kc86M4gJCdlVhiMTxIrJG5UHDMh+PJANf9heqORJbt1nrCbDwIlAZKjANIaVBbvw==} @@ -7141,6 +8141,10 @@ packages: renderkid@3.0.0: resolution: {integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==} + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + require-from-string@2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} @@ -7148,6 +8152,14 @@ packages: requires-port@1.0.0: resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + resolve-cwd@3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} + + resolve-dir@1.0.1: + resolution: {integrity: sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==} + engines: {node: '>=0.10.0'} + resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} @@ -7156,19 +8168,21 @@ packages: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} + resolve-pathname@3.0.0: + resolution: {integrity: sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==} + resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - resolve@1.22.10: - resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} - engines: {node: '>= 0.4'} - hasBin: true - resolve@1.22.11: resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==} engines: {node: '>= 0.4'} hasBin: true + resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + restore-cursor@5.1.0: resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} engines: {node: '>=18'} @@ -7202,8 +8216,8 @@ packages: rollup: ^3.29.4 || ^4 typescript: ^4.5 || ^5.0 - rollup@4.52.3: - resolution: {integrity: sha512-RIDh866U8agLgiIcdpB+COKnlCreHJLfIhWC3LVflku5YHfpnsIKigRZeFfMfCc4dVcqNVfQQ5gO/afOck064A==} + rollup@4.53.3: + resolution: {integrity: sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -7245,6 +8259,9 @@ packages: '@rsbuild/core': optional: true + rslog@1.3.0: + resolution: {integrity: sha512-93DpwwaiRrLz7fJ5z6Uwb171hHBws1VVsWjU6IruLFX63BicLA44QNu0sfn3guKHnBHZMFSKO8akfx5QhjuegQ==} + rspress-plugin-font-open-sans@1.0.3: resolution: {integrity: sha512-17i7uUqvyy5k51ggZJ5xoP9duqC2W76GcBviIu400VXXAQEZx3JzZWPcGz9gGmVaFHAkH19NtZK0EYKfneX4rw==} peerDependencies: @@ -7276,112 +8293,112 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - sass-embedded-all-unknown@1.93.2: - resolution: {integrity: sha512-GdEuPXIzmhRS5J7UKAwEvtk8YyHQuFZRcpnEnkA3rwRUI27kwjyXkNeIj38XjUQ3DzrfMe8HcKFaqWGHvblS7Q==} + sass-embedded-all-unknown@1.93.3: + resolution: {integrity: sha512-3okGgnE41eg+CPLtAPletu6nQ4N0ij7AeW+Sl5Km4j29XcmqZQeFwYjHe1AlKTEgLi/UAONk1O8i8/lupeKMbw==} cpu: ['!arm', '!arm64', '!riscv64', '!x64'] - sass-embedded-android-arm64@1.93.2: - resolution: {integrity: sha512-346f4iVGAPGcNP6V6IOOFkN5qnArAoXNTPr5eA/rmNpeGwomdb7kJyQ717r9rbJXxOG8OAAUado6J0qLsjnjXQ==} + sass-embedded-android-arm64@1.93.3: + resolution: {integrity: sha512-uqUl3Kt1IqdGVAcAdbmC+NwuUJy8tM+2ZnB7/zrt6WxWVShVCRdFnWR9LT8HJr7eJN7AU8kSXxaVX/gedanPsg==} engines: {node: '>=14.0.0'} cpu: [arm64] os: [android] - sass-embedded-android-arm@1.93.2: - resolution: {integrity: sha512-I8bpO8meZNo5FvFx5FIiE7DGPVOYft0WjuwcCCdeJ6duwfkl6tZdatex1GrSigvTsuz9L0m4ngDcX/Tj/8yMow==} + sass-embedded-android-arm@1.93.3: + resolution: {integrity: sha512-8xOw9bywfOD6Wv24BgCmgjkk6tMrsOTTHcb28KDxeJtFtoxiUyMbxo0vChpPAfp2Hyg2tFFKS60s0s4JYk+Raw==} engines: {node: '>=14.0.0'} cpu: [arm] os: [android] - sass-embedded-android-riscv64@1.93.2: - resolution: {integrity: sha512-hSMW1s4yJf5guT9mrdkumluqrwh7BjbZ4MbBW9tmi1DRDdlw1Wh9Oy1HnnmOG8x9XcI1qkojtPL6LUuEJmsiDg==} + sass-embedded-android-riscv64@1.93.3: + resolution: {integrity: sha512-2jNJDmo+3qLocjWqYbXiBDnfgwrUeZgZFHJIwAefU7Fn66Ot7rsXl+XPwlokaCbTpj7eMFIqsRAZ/uDueXNCJg==} engines: {node: '>=14.0.0'} cpu: [riscv64] os: [android] - sass-embedded-android-x64@1.93.2: - resolution: {integrity: sha512-JqktiHZduvn+ldGBosE40ALgQ//tGCVNAObgcQ6UIZznEJbsHegqStqhRo8UW3x2cgOO2XYJcrInH6cc7wdKbw==} + sass-embedded-android-x64@1.93.3: + resolution: {integrity: sha512-y0RoAU6ZenQFcjM9PjQd3cRqRTjqwSbtWLL/p68y2oFyh0QGN0+LQ826fc0ZvU/AbqCsAizkqjzOn6cRZJxTTQ==} engines: {node: '>=14.0.0'} cpu: [x64] os: [android] - sass-embedded-darwin-arm64@1.93.2: - resolution: {integrity: sha512-qI1X16qKNeBJp+M/5BNW7v/JHCDYWr1/mdoJ7+UMHmP0b5AVudIZtimtK0hnjrLnBECURifd6IkulybR+h+4UA==} + sass-embedded-darwin-arm64@1.93.3: + resolution: {integrity: sha512-7zb/hpdMOdKteK17BOyyypemglVURd1Hdz6QGsggy60aUFfptTLQftLRg8r/xh1RbQAUKWFbYTNaM47J9yPxYg==} engines: {node: '>=14.0.0'} cpu: [arm64] os: [darwin] - sass-embedded-darwin-x64@1.93.2: - resolution: {integrity: sha512-4KeAvlkQ0m0enKUnDGQJZwpovYw99iiMb8CTZRSsQm8Eh7halbJZVmx67f4heFY/zISgVOCcxNg19GrM5NTwtA==} + sass-embedded-darwin-x64@1.93.3: + resolution: {integrity: sha512-Ek1Vp8ZDQEe327Lz0b7h3hjvWH3u9XjJiQzveq74RPpJQ2q6d9LfWpjiRRohM4qK6o4XOHw1X10OMWPXJtdtWg==} engines: {node: '>=14.0.0'} cpu: [x64] os: [darwin] - sass-embedded-linux-arm64@1.93.2: - resolution: {integrity: sha512-9ftX6nd5CsShJqJ2WRg+ptaYvUW+spqZfJ88FbcKQBNFQm6L87luj3UI1rB6cP5EWrLwHA754OKxRJyzWiaN6g==} + sass-embedded-linux-arm64@1.93.3: + resolution: {integrity: sha512-RBrHWgfd8Dd8w4fbmdRVXRrhh8oBAPyeWDTKAWw8ZEmuXfVl4ytjDuyxaVilh6rR1xTRTNpbaA/YWApBlLrrNw==} engines: {node: '>=14.0.0'} cpu: [arm64] os: [linux] - sass-embedded-linux-arm@1.93.2: - resolution: {integrity: sha512-N3+D/ToHtzwLDO+lSH05Wo6/KRxFBPnbjVHASOlHzqJnK+g5cqex7IFAp6ozzlRStySk61Rp6d+YGrqZ6/P0PA==} + sass-embedded-linux-arm@1.93.3: + resolution: {integrity: sha512-yeiv2y+dp8B4wNpd3+JsHYD0mvpXSfov7IGyQ1tMIR40qv+ROkRqYiqQvAOXf76Qwh4Y9OaYZtLpnsPjfeq6mA==} engines: {node: '>=14.0.0'} cpu: [arm] os: [linux] - sass-embedded-linux-musl-arm64@1.93.2: - resolution: {integrity: sha512-+3EHuDPkMiAX5kytsjEC1bKZCawB9J6pm2eBIzzLMPWbf5xdx++vO1DpT7hD4bm4ZGn0eVHgSOKIfP6CVz6tVg==} + sass-embedded-linux-musl-arm64@1.93.3: + resolution: {integrity: sha512-PS829l+eUng+9W4PFclXGb4uA2+965NHV3/Sa5U7qTywjeeUUYTZg70dJHSqvhrBEfCc2XJABeW3adLJbyQYkw==} engines: {node: '>=14.0.0'} cpu: [arm64] os: [linux] - sass-embedded-linux-musl-arm@1.93.2: - resolution: {integrity: sha512-XBTvx66yRenvEsp3VaJCb3HQSyqCsUh7R+pbxcN5TuzueybZi0LXvn9zneksdXcmjACMlMpIVXi6LyHPQkYc8A==} + sass-embedded-linux-musl-arm@1.93.3: + resolution: {integrity: sha512-fU0fwAwbp7sBE3h5DVU5UPzvaLg7a4yONfFWkkcCp6ZrOiPuGRHXXYriWQ0TUnWy4wE+svsVuWhwWgvlb/tkKg==} engines: {node: '>=14.0.0'} cpu: [arm] os: [linux] - sass-embedded-linux-musl-riscv64@1.93.2: - resolution: {integrity: sha512-0sB5kmVZDKTYzmCSlTUnjh6mzOhzmQiW/NNI5g8JS4JiHw2sDNTvt1dsFTuqFkUHyEOY3ESTsfHHBQV8Ip4bEA==} + sass-embedded-linux-musl-riscv64@1.93.3: + resolution: {integrity: sha512-cK1oBY+FWQquaIGEeQ5H74KTO8cWsSWwXb/WaildOO9U6wmUypTgUYKQ0o5o/29nZbWWlM1PHuwVYTSnT23Jjg==} engines: {node: '>=14.0.0'} cpu: [riscv64] os: [linux] - sass-embedded-linux-musl-x64@1.93.2: - resolution: {integrity: sha512-t3ejQ+1LEVuHy7JHBI2tWHhoMfhedUNDjGJR2FKaLgrtJntGnyD1RyX0xb3nuqL/UXiEAtmTmZY+Uh3SLUe1Hg==} + sass-embedded-linux-musl-x64@1.93.3: + resolution: {integrity: sha512-A7wkrsHu2/I4Zpa0NMuPGkWDVV7QGGytxGyUq3opSXgAexHo/vBPlGoDXoRlSdex0cV+aTMRPjoGIfdmNlHwyg==} engines: {node: '>=14.0.0'} cpu: [x64] os: [linux] - sass-embedded-linux-riscv64@1.93.2: - resolution: {integrity: sha512-e7AndEwAbFtXaLy6on4BfNGTr3wtGZQmypUgYpSNVcYDO+CWxatKVY4cxbehMPhxG9g5ru+eaMfynvhZt7fLaA==} + sass-embedded-linux-riscv64@1.93.3: + resolution: {integrity: sha512-vWkW1+HTF5qcaHa6hO80gx/QfB6GGjJUP0xLbnAoY4pwEnw5ulGv6RM8qYr8IDhWfVt/KH+lhJ2ZFxnJareisQ==} engines: {node: '>=14.0.0'} cpu: [riscv64] os: [linux] - sass-embedded-linux-x64@1.93.2: - resolution: {integrity: sha512-U3EIUZQL11DU0xDDHXexd4PYPHQaSQa2hzc4EzmhHqrAj+TyfYO94htjWOd+DdTPtSwmLp+9cTWwPZBODzC96w==} + sass-embedded-linux-x64@1.93.3: + resolution: {integrity: sha512-k6uFxs+e5jSuk1Y0niCwuq42F9ZC5UEP7P+RIOurIm8w/5QFa0+YqeW+BPWEW5M1FqVOsNZH3qGn4ahqvAEjPA==} engines: {node: '>=14.0.0'} cpu: [x64] os: [linux] - sass-embedded-unknown-all@1.93.2: - resolution: {integrity: sha512-7VnaOmyewcXohiuoFagJ3SK5ddP9yXpU0rzz+pZQmS1/+5O6vzyFCUoEt3HDRaLctH4GT3nUGoK1jg0ae62IfQ==} + sass-embedded-unknown-all@1.93.3: + resolution: {integrity: sha512-o5wj2rLpXH0C+GJKt/VpWp6AnMsCCbfFmnMAttcrsa+U3yrs/guhZ3x55KAqqUsE8F47e3frbsDL+1OuQM5DAA==} os: ['!android', '!darwin', '!linux', '!win32'] - sass-embedded-win32-arm64@1.93.2: - resolution: {integrity: sha512-Y90DZDbQvtv4Bt0GTXKlcT9pn4pz8AObEjFF8eyul+/boXwyptPZ/A1EyziAeNaIEIfxyy87z78PUgCeGHsx3Q==} + sass-embedded-win32-arm64@1.93.3: + resolution: {integrity: sha512-0dOfT9moy9YmBolodwYYXtLwNr4jL4HQC9rBfv6mVrD7ud8ue2kDbn+GVzj1hEJxvEexVSmDCf7MHUTLcGs9xQ==} engines: {node: '>=14.0.0'} cpu: [arm64] os: [win32] - sass-embedded-win32-x64@1.93.2: - resolution: {integrity: sha512-BbSucRP6PVRZGIwlEBkp+6VQl2GWdkWFMN+9EuOTPrLxCJZoq+yhzmbjspd3PeM8+7WJ7AdFu/uRYdO8tor1iQ==} + sass-embedded-win32-x64@1.93.3: + resolution: {integrity: sha512-wHFVfxiS9hU/sNk7KReD+lJWRp3R0SLQEX4zfOnRP2zlvI2X4IQR5aZr9GNcuMP6TmNpX0nQPZTegS8+h9RrEg==} engines: {node: '>=14.0.0'} cpu: [x64] os: [win32] - sass-embedded@1.93.2: - resolution: {integrity: sha512-FvQdkn2dZ8DGiLgi0Uf4zsj7r/BsiLImNa5QJ10eZalY6NfZyjrmWGFcuCN5jNwlDlXFJnftauv+UtvBKLvepQ==} + sass-embedded@1.93.3: + resolution: {integrity: sha512-+VUy01yfDqNmIVMd/LLKl2TTtY0ovZN0rTonh+FhKr65mFwIYgU9WzgIZKS7U9/SPCQvWTsTGx9jyt+qRm/XFw==} engines: {node: '>=16.0.0'} hasBin: true @@ -7406,21 +8423,18 @@ packages: webpack: optional: true - sass@1.93.2: - resolution: {integrity: sha512-t+YPtOQHpGW1QWsh1CHQ5cPIr9lbbGZLZnbihP/D/qZj/yuV68m8qarcV17nvkOX81BCrvzAlq2klCQFZghyTg==} + sass@1.93.3: + resolution: {integrity: sha512-elOcIZRTM76dvxNAjqYrucTSI0teAF/L2Lv0s6f6b7FOwcwIuA357bIE871580AjHJuSvLIRUosgV+lIWx6Rgg==} engines: {node: '>=14.0.0'} hasBin: true - sax@1.4.1: - resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} + sax@1.4.3: + resolution: {integrity: sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ==} saxes@6.0.0: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} engines: {node: '>=v12.22.7'} - scheduler@0.26.0: - resolution: {integrity: sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==} - scheduler@0.27.0: resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} @@ -7428,10 +8442,6 @@ packages: resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} engines: {node: '>= 10.13.0'} - schema-utils@4.3.2: - resolution: {integrity: sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==} - engines: {node: '>= 10.13.0'} - schema-utils@4.3.3: resolution: {integrity: sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==} engines: {node: '>= 10.13.0'} @@ -7469,8 +8479,8 @@ packages: engines: {node: '>=10'} hasBin: true - semver@7.7.2: - resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} + semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} engines: {node: '>=10'} hasBin: true @@ -7479,6 +8489,10 @@ packages: engines: {node: '>=10'} hasBin: true + send@0.18.0: + resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} + engines: {node: '>= 0.8.0'} + send@0.19.0: resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} engines: {node: '>= 0.8.0'} @@ -7486,14 +8500,26 @@ packages: serialize-javascript@6.0.2: resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + serve-handler@6.1.6: + resolution: {integrity: sha512-x5RL9Y2p5+Sh3D38Fh9i/iQ5ZK+e4xuXRd/pGbM4D13tgo/MGwbttUk8emytcr1YYzBYs+apnUngBDFYfpjPuQ==} + serve-index@1.9.1: resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} engines: {node: '>= 0.8.0'} + serve-static@1.15.0: + resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} + engines: {node: '>= 0.8.0'} + serve-static@1.16.2: resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} engines: {node: '>= 0.8.0'} + serve@14.2.5: + resolution: {integrity: sha512-Qn/qMkzCcMFVPb60E/hQy+iRLpiU8PamOfOSYoAHmmF+fFFmpPpqa6Oci2iWYpTdOUM3VF+TINud7CfbQnsZbA==} + engines: {node: '>= 14'} + hasBin: true + set-function-length@1.2.2: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} @@ -7520,6 +8546,9 @@ packages: resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} engines: {node: '>=8'} + shallowequal@1.1.0: + resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} + shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -7532,8 +8561,8 @@ packages: resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==} engines: {node: '>= 0.4'} - shiki@3.13.0: - resolution: {integrity: sha512-aZW4l8Og16CokuCLf8CF8kq+KK2yOygapU5m3+hoGw0Mdosc6fPitjM+ujYarppj5ZIKGyPDPP1vqmQhr+5/0g==} + shiki@3.15.0: + resolution: {integrity: sha512-kLdkY6iV3dYbtPwS9KXU7mjfmDm25f5m0IPNFnaXO7TBPcvbUOY72PYXSuSqDzwp+vlH/d7MXpHlKO/x+QoLXw==} side-channel-list@1.0.0: resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} @@ -7585,9 +8614,23 @@ packages: resolution: {integrity: sha512-QlaZEqcAH3/RtNyet1IPIYPsEWAaYyXXv1Krsi+1L/QHppjX4Ifm8MQsBISz9vE8cHicIq3clogsheili5vhaQ==} engines: {node: '>= 18'} + socket.io-adapter@2.5.5: + resolution: {integrity: sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==} + + socket.io-parser@4.2.4: + resolution: {integrity: sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==} + engines: {node: '>=10.0.0'} + + socket.io@4.7.2: + resolution: {integrity: sha512-bvKVS29/I5fl2FGLNHuXlQaUH/BlzX1IN6S+NKLNZpBsPZIDH+90eQmCs2Railn4YUiww4SzUedJ6+uzwFnKLw==} + engines: {node: '>=10.2.0'} + sockjs@0.3.24: resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} + sorted-array-functions@1.3.0: + resolution: {integrity: sha512-2sqgzeFlid6N4Z2fUQ1cvFmTOLRi/sEDzSQ0OKYchqgoPmQBVyM3959qYx3fpS6Esef80KjmpgPeEr028dP3OA==} + source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} @@ -7601,6 +8644,10 @@ packages: source-map-support@0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} @@ -7612,6 +8659,9 @@ packages: space-separated-tokens@2.0.2: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + spawn-command@0.0.2: + resolution: {integrity: sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==} + spdy-transport@3.0.0: resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} @@ -7640,8 +8690,12 @@ packages: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} - std-env@3.9.0: - resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==} + statuses@2.0.2: + resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} + engines: {node: '>= 0.8'} + + std-env@3.10.0: + resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} stream-browserify@3.0.0: resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} @@ -7649,6 +8703,10 @@ packages: stream-http@3.2.0: resolution: {integrity: sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==} + streamroller@3.1.5: + resolution: {integrity: sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==} + engines: {node: '>=8.0'} + string-argv@0.3.2: resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} engines: {node: '>=0.6.19'} @@ -7694,6 +8752,10 @@ packages: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} + strip-json-comments@2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} + strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} @@ -7711,20 +8773,35 @@ packages: peerDependencies: webpack: ^5.27.0 - style-to-js@1.1.17: - resolution: {integrity: sha512-xQcBGDxJb6jjFCTzvQtfiPn6YvvP2O8U1MDIPNfJQlWMYfktPy+iGsHE7cssjs7y84d9fQaK4UF3RIJaAHSoYA==} + style-to-js@1.1.21: + resolution: {integrity: sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==} + + style-to-object@1.0.14: + resolution: {integrity: sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==} + + styled-components@5.3.11: + resolution: {integrity: sha512-uuzIIfnVkagcVHv9nE0VPlHPSCmXIUGKfJ42LNjxCCTDTL5sgnJ8Z7GZBq0EnLYGln77tPpEpExt2+qa+cZqSw==} + engines: {node: '>=10'} + peerDependencies: + react: '>= 16.8.0' + react-dom: '>= 16.8.0' + react-is: '>= 16.8.0' - style-to-object@1.0.9: - resolution: {integrity: sha512-G4qppLgKu/k6FwRpHiGiKPaPTFcG3g4wNVX/Qsfu+RqQM30E7Tyu/TEgxcL9PNLF5pdRLwQdE3YKKf+KF2Dzlw==} + stylis@4.2.0: + resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==} stylis@4.3.6: resolution: {integrity: sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==} - sucrase@3.35.0: - resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + sucrase@3.35.1: + resolution: {integrity: sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==} engines: {node: '>=16 || 14 >=14.17'} hasBin: true + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} @@ -7737,6 +8814,24 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} + svelte-dev-helper@1.1.9: + resolution: {integrity: sha512-oU+Xv7Dl4kRU2kdFjsoPLfJfnt5hUhsFUZtuzI3Ku/f2iAFZqBoEuXOqK3N9ngD4dxQOmN4OKWPHVi3NeAeAfQ==} + + svelte-hmr@0.14.12: + resolution: {integrity: sha512-4QSW/VvXuqVcFZ+RhxiR8/newmwOCTlbYIezvkeN6302YFRE8cXy0naamHcjz8Y9Ce3ITTZtrHrIL0AGfyo61w==} + engines: {node: ^12.20 || ^14.13.1 || >= 16} + peerDependencies: + svelte: '>=3.19.0' + + svelte-loader@3.2.3: + resolution: {integrity: sha512-ntitVuO0EneIlw5Zsn/GNnxu8+KkqbfrsjEGvk7qrd67IA24OBVqY9p0NjUGlpewPxGL3iD4z/8VA+hM9AsZxA==} + peerDependencies: + svelte: ^3.0.0 || ^4.0.0-next.0 || ^5.0.0-next.1 + + svelte@4.2.18: + resolution: {integrity: sha512-d0FdzYIiAePqRJEb90WlJDkjUEx42xhivxN8muUBmfZnP+tzUgz12DJ2hRJi8sIHCME7jeK1PTMgKPSfTd8JrA==} + engines: {node: '>=16'} + swr@2.3.6: resolution: {integrity: sha512-wfHRmHWk/isGNMwlLGlZX5Gzz/uTgo0o2IRuTMcf4CPuPFJZlq0rDaKUx+ozB5nBOReNV1kiOyzMfj+MBMikLw==} peerDependencies: @@ -7762,8 +8857,8 @@ packages: engines: {node: '>=14.0.0'} hasBin: true - tapable@2.2.3: - resolution: {integrity: sha512-ZL6DDuAlRlLGghwcfmSn9sK3Hr6ArtyudlSAiCqQ6IfE+b+HHbydbYDIG15IfS5do+7XQQBdBiubF/cV2dnDzg==} + tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} tapable@2.3.0: @@ -7786,11 +8881,6 @@ packages: uglify-js: optional: true - terser@5.43.1: - resolution: {integrity: sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg==} - engines: {node: '>=10'} - hasBin: true - terser@5.44.1: resolution: {integrity: sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==} engines: {node: '>=10'} @@ -7824,14 +8914,21 @@ packages: resolution: {integrity: sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==} engines: {node: '>=0.6.0'} + tiny-invariant@1.3.3: + resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} + + tiny-warning@1.0.3: + resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==} + tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} tinyexec@0.3.2: resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} - tinyexec@1.0.1: - resolution: {integrity: sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==} + tinyexec@1.0.2: + resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} + engines: {node: '>=18'} tinyglobby@0.2.15: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} @@ -7898,6 +8995,10 @@ packages: peerDependencies: tslib: '2' + tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true + trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} @@ -7939,6 +9040,10 @@ packages: tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + tsscmp@1.0.6: + resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==} + engines: {node: '>=0.6.x'} + tsx@4.20.6: resolution: {integrity: sha512-ytQKuwgmrrkDTFP4LjR0ToE2nqgy886GpvRSpU0JAnrdBYppuY5rLkRUYPU1yCryb24SsKBTL/hlDQAEFVwtZg==} engines: {node: '>=18.0.0'} @@ -7954,6 +9059,14 @@ packages: typanion@3.14.0: resolution: {integrity: sha512-ZW/lVMRabETuYCd9O9ZvMhAh8GslSqaUjxmK/JLPCh6l73CvLBiuXswj/+7LdnWOgYsQ130FqLzFz5aGT4I3Ug==} + type-detect@4.1.0: + resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==} + engines: {node: '>=4'} + + type-fest@2.19.0: + resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} + engines: {node: '>=12.20'} + type-fest@4.41.0: resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} engines: {node: '>=16'} @@ -7962,6 +9075,10 @@ packages: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} + type-is@2.0.1: + resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==} + engines: {node: '>= 0.6'} + type@2.7.3: resolution: {integrity: sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==} @@ -8006,8 +9123,8 @@ packages: unified@11.0.5: resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} - unist-util-is@6.0.0: - resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + unist-util-is@6.0.1: + resolution: {integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==} unist-util-position-from-estree@2.0.0: resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==} @@ -8021,8 +9138,8 @@ packages: unist-util-visit-children@3.0.0: resolution: {integrity: sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA==} - unist-util-visit-parents@6.0.1: - resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + unist-util-visit-parents@6.0.2: + resolution: {integrity: sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==} unist-util-visit@5.0.0: resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} @@ -8030,6 +9147,10 @@ packages: universal-user-agent@7.0.3: resolution: {integrity: sha512-TmnEAEAsBJVZM/AADELsK76llnwcf9vMKuPz8JflO1frO8Lchitr0fNaN9d+Ap0BjKtqWqd/J17qeDnXh8CL2A==} + universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + universalify@2.0.1: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} @@ -8038,12 +9159,19 @@ packages: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} - update-browserslist-db@1.1.3: - resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} + upath@2.0.1: + resolution: {integrity: sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==} + engines: {node: '>=4'} + + update-browserslist-db@1.1.4: + resolution: {integrity: sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' + update-check@1.5.4: + resolution: {integrity: sha512-5YHsflzHP4t1G+8WGPlvKbJEbAJGCgw+Em+dGR1KmBUbr1J36SJBqlHLjR7oob7sco5hWHGQVcr9B2poIVDDTQ==} + uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} @@ -8090,6 +9218,9 @@ packages: v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + value-equal@1.0.1: + resolution: {integrity: sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==} + varint@6.0.0: resolution: {integrity: sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==} @@ -8111,8 +9242,8 @@ packages: engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true - vite@7.1.7: - resolution: {integrity: sha512-VbA8ScMvAISJNJVbRDTJdCwqQoAareR/wutevKanhR2/1EkoXVZVkkORaYm/tNVCjP/UDTKtcw3bAkwOUdedmA==} + vite@7.2.4: + resolution: {integrity: sha512-NL8jTlbo0Tn4dUEXEsUg8KeyG/Lkmc4Fnzb8JXN/Ykm9G4HNImjtABMJgkQoVjOBN/j2WAwDTRytdqJbZsah7w==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -8242,6 +9373,11 @@ packages: wabt@1.0.0-nightly.20180421: resolution: {integrity: sha512-bsu9zk672KACjoabONcAS94IS20prRm05IbiIUGfa8eBpRLjWZv8ugocdinV/ONh0mFMfXrVWkvF1/BNtwIfUw==} + wait-on@7.2.0: + resolution: {integrity: sha512-wCQcHkRazgjG5XoAq9jbTMLpNIjoSlZslrJ2+N9MxDsGEv1HnFoVjOCexL0ESva7Y9cu350j+DWADdk54s4AFQ==} + engines: {node: '>=12.0.0'} + hasBin: true + walker@1.0.8: resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} @@ -8267,6 +9403,23 @@ packages: engines: {node: '>= 10.13.0'} hasBin: true + webpack-cli@5.1.4: + resolution: {integrity: sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==} + engines: {node: '>=14.15.0'} + hasBin: true + peerDependencies: + '@webpack-cli/generators': '*' + webpack: 5.x.x + webpack-bundle-analyzer: '*' + webpack-dev-server: '*' + peerDependenciesMeta: + '@webpack-cli/generators': + optional: true + webpack-bundle-analyzer: + optional: true + webpack-dev-server: + optional: true + webpack-dev-middleware@7.4.5: resolution: {integrity: sha512-uxQ6YqGdE4hgDKNf7hUiPXOdtkXvBJXrfEGYSx7P7LC8hnUYGK70X6xQXUvXeNyBDDcsiQXpG2m3G9vxowaEuA==} engines: {node: '>= 18.12.0'} @@ -8276,6 +9429,19 @@ packages: webpack: optional: true + webpack-dev-server@5.0.4: + resolution: {integrity: sha512-dljXhUgx3HqKP2d8J/fUMvhxGhzjeNVarDLcbO/EWMSgRizDkxHQDZQaLFL5VJY9tRBj2Gz+rvCEYYvhbqPHNA==} + engines: {node: '>= 18.12.0'} + hasBin: true + peerDependencies: + webpack: ^5.0.0 + webpack-cli: '*' + peerDependenciesMeta: + webpack: + optional: true + webpack-cli: + optional: true + webpack-dev-server@5.2.2: resolution: {integrity: sha512-QcQ72gh8a+7JO63TAx/6XZf/CWhgMzu5m0QirvPfGvptOusAxG12w2+aua1Jkjr7hzaWDnJ2n6JFeexMHI+Zjg==} engines: {node: '>= 18.12.0'} @@ -8289,6 +9455,10 @@ packages: webpack-cli: optional: true + webpack-merge@5.10.0: + resolution: {integrity: sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==} + engines: {node: '>=10.0.0'} + webpack-merge@6.0.1: resolution: {integrity: sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==} engines: {node: '>=18.0.0'} @@ -8307,16 +9477,6 @@ packages: webpack-cli: optional: true - webpack@5.99.9: - resolution: {integrity: sha512-brOPwM3JnmOa+7kd3NsmOUOwbDAj8FT9xDsG3IW0MgbN9yZV7Oi/s/+MNQ/EcSMqw7qfoRyXPoeEWT8zLVdVGg==} - engines: {node: '>=10.13.0'} - hasBin: true - peerDependencies: - webpack-cli: '*' - peerDependenciesMeta: - webpack-cli: - optional: true - websocket-driver@0.7.4: resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} engines: {node: '>=0.8.0'} @@ -8341,6 +9501,10 @@ packages: resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==} engines: {node: '>= 0.4'} + which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -8351,6 +9515,10 @@ packages: engines: {node: '>=8'} hasBin: true + widest-line@4.0.1: + resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==} + engines: {node: '>=12'} + wildcard@2.0.1: resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} @@ -8405,6 +9573,30 @@ packages: utf-8-validate: optional: true + ws@8.17.1: + resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@8.18.0: + resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + ws@8.18.3: resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==} engines: {node: '>=10.0.0'} @@ -8443,12 +9635,20 @@ packages: xxhashjs@0.2.2: resolution: {integrity: sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw==} + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + yaml@2.8.1: resolution: {integrity: sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==} engines: {node: '>= 14.6'} @@ -8458,6 +9658,14 @@ packages: resolution: {integrity: sha512-C/FsVVhht4iPQYXOInoxUM/1ELSf9EsgKH34FofQOp6hwCPrW4vG4w5++TED3xRUo8gD7l0P1J1dLlDYzODsTQ==} hasBin: true + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + yn@3.1.1: resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} engines: {node: '>=6'} @@ -8466,8 +9674,8 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - yocto-queue@1.2.1: - resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==} + yocto-queue@1.2.2: + resolution: {integrity: sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==} engines: {node: '>=12.20'} yoctocolors-cjs@2.1.3: @@ -8503,13 +9711,14 @@ snapshots: '@actions/io@1.1.3': {} - '@ai-sdk/gateway@1.0.32(zod@4.1.12)': + '@ai-sdk/gateway@2.0.13(zod@4.1.12)': dependencies: '@ai-sdk/provider': 2.0.0 - '@ai-sdk/provider-utils': 3.0.10(zod@4.1.12) + '@ai-sdk/provider-utils': 3.0.17(zod@4.1.12) + '@vercel/oidc': 3.0.5 zod: 4.1.12 - '@ai-sdk/provider-utils@3.0.10(zod@4.1.12)': + '@ai-sdk/provider-utils@3.0.17(zod@4.1.12)': dependencies: '@ai-sdk/provider': 2.0.0 '@standard-schema/spec': 1.0.0 @@ -8520,130 +9729,135 @@ snapshots: dependencies: json-schema: 0.4.0 - '@ai-sdk/react@2.0.59(react@19.1.1)(zod@4.1.12)': + '@ai-sdk/react@2.0.98(react@19.2.0)(zod@4.1.12)': dependencies: - '@ai-sdk/provider-utils': 3.0.10(zod@4.1.12) - ai: 5.0.59(zod@4.1.12) - react: 19.1.1 - swr: 2.3.6(react@19.1.1) + '@ai-sdk/provider-utils': 3.0.17(zod@4.1.12) + ai: 5.0.98(zod@4.1.12) + react: 19.2.0 + swr: 2.3.6(react@19.2.0) throttleit: 2.1.0 optionalDependencies: zod: 4.1.12 - '@algolia/abtesting@1.5.0': + '@algolia/abtesting@1.10.0': dependencies: - '@algolia/client-common': 5.39.0 - '@algolia/requester-browser-xhr': 5.39.0 - '@algolia/requester-fetch': 5.39.0 - '@algolia/requester-node-http': 5.39.0 + '@algolia/client-common': 5.44.0 + '@algolia/requester-browser-xhr': 5.44.0 + '@algolia/requester-fetch': 5.44.0 + '@algolia/requester-node-http': 5.44.0 - '@algolia/autocomplete-core@1.19.2(@algolia/client-search@5.39.0)(algoliasearch@5.39.0)(search-insights@2.17.3)': + '@algolia/autocomplete-core@1.19.2(@algolia/client-search@5.44.0)(algoliasearch@5.44.0)(search-insights@2.17.3)': dependencies: - '@algolia/autocomplete-plugin-algolia-insights': 1.19.2(@algolia/client-search@5.39.0)(algoliasearch@5.39.0)(search-insights@2.17.3) - '@algolia/autocomplete-shared': 1.19.2(@algolia/client-search@5.39.0)(algoliasearch@5.39.0) + '@algolia/autocomplete-plugin-algolia-insights': 1.19.2(@algolia/client-search@5.44.0)(algoliasearch@5.44.0)(search-insights@2.17.3) + '@algolia/autocomplete-shared': 1.19.2(@algolia/client-search@5.44.0)(algoliasearch@5.44.0) transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - search-insights - '@algolia/autocomplete-plugin-algolia-insights@1.19.2(@algolia/client-search@5.39.0)(algoliasearch@5.39.0)(search-insights@2.17.3)': + '@algolia/autocomplete-plugin-algolia-insights@1.19.2(@algolia/client-search@5.44.0)(algoliasearch@5.44.0)(search-insights@2.17.3)': dependencies: - '@algolia/autocomplete-shared': 1.19.2(@algolia/client-search@5.39.0)(algoliasearch@5.39.0) + '@algolia/autocomplete-shared': 1.19.2(@algolia/client-search@5.44.0)(algoliasearch@5.44.0) search-insights: 2.17.3 transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - '@algolia/autocomplete-shared@1.19.2(@algolia/client-search@5.39.0)(algoliasearch@5.39.0)': + '@algolia/autocomplete-shared@1.19.2(@algolia/client-search@5.44.0)(algoliasearch@5.44.0)': dependencies: - '@algolia/client-search': 5.39.0 - algoliasearch: 5.39.0 + '@algolia/client-search': 5.44.0 + algoliasearch: 5.44.0 - '@algolia/client-abtesting@5.39.0': + '@algolia/client-abtesting@5.44.0': dependencies: - '@algolia/client-common': 5.39.0 - '@algolia/requester-browser-xhr': 5.39.0 - '@algolia/requester-fetch': 5.39.0 - '@algolia/requester-node-http': 5.39.0 + '@algolia/client-common': 5.44.0 + '@algolia/requester-browser-xhr': 5.44.0 + '@algolia/requester-fetch': 5.44.0 + '@algolia/requester-node-http': 5.44.0 - '@algolia/client-analytics@5.39.0': + '@algolia/client-analytics@5.44.0': dependencies: - '@algolia/client-common': 5.39.0 - '@algolia/requester-browser-xhr': 5.39.0 - '@algolia/requester-fetch': 5.39.0 - '@algolia/requester-node-http': 5.39.0 + '@algolia/client-common': 5.44.0 + '@algolia/requester-browser-xhr': 5.44.0 + '@algolia/requester-fetch': 5.44.0 + '@algolia/requester-node-http': 5.44.0 - '@algolia/client-common@5.39.0': {} + '@algolia/client-common@5.44.0': {} - '@algolia/client-insights@5.39.0': + '@algolia/client-insights@5.44.0': dependencies: - '@algolia/client-common': 5.39.0 - '@algolia/requester-browser-xhr': 5.39.0 - '@algolia/requester-fetch': 5.39.0 - '@algolia/requester-node-http': 5.39.0 + '@algolia/client-common': 5.44.0 + '@algolia/requester-browser-xhr': 5.44.0 + '@algolia/requester-fetch': 5.44.0 + '@algolia/requester-node-http': 5.44.0 - '@algolia/client-personalization@5.39.0': + '@algolia/client-personalization@5.44.0': dependencies: - '@algolia/client-common': 5.39.0 - '@algolia/requester-browser-xhr': 5.39.0 - '@algolia/requester-fetch': 5.39.0 - '@algolia/requester-node-http': 5.39.0 + '@algolia/client-common': 5.44.0 + '@algolia/requester-browser-xhr': 5.44.0 + '@algolia/requester-fetch': 5.44.0 + '@algolia/requester-node-http': 5.44.0 - '@algolia/client-query-suggestions@5.39.0': + '@algolia/client-query-suggestions@5.44.0': dependencies: - '@algolia/client-common': 5.39.0 - '@algolia/requester-browser-xhr': 5.39.0 - '@algolia/requester-fetch': 5.39.0 - '@algolia/requester-node-http': 5.39.0 + '@algolia/client-common': 5.44.0 + '@algolia/requester-browser-xhr': 5.44.0 + '@algolia/requester-fetch': 5.44.0 + '@algolia/requester-node-http': 5.44.0 - '@algolia/client-search@5.39.0': + '@algolia/client-search@5.44.0': dependencies: - '@algolia/client-common': 5.39.0 - '@algolia/requester-browser-xhr': 5.39.0 - '@algolia/requester-fetch': 5.39.0 - '@algolia/requester-node-http': 5.39.0 + '@algolia/client-common': 5.44.0 + '@algolia/requester-browser-xhr': 5.44.0 + '@algolia/requester-fetch': 5.44.0 + '@algolia/requester-node-http': 5.44.0 - '@algolia/ingestion@1.39.0': + '@algolia/ingestion@1.44.0': dependencies: - '@algolia/client-common': 5.39.0 - '@algolia/requester-browser-xhr': 5.39.0 - '@algolia/requester-fetch': 5.39.0 - '@algolia/requester-node-http': 5.39.0 + '@algolia/client-common': 5.44.0 + '@algolia/requester-browser-xhr': 5.44.0 + '@algolia/requester-fetch': 5.44.0 + '@algolia/requester-node-http': 5.44.0 - '@algolia/monitoring@1.39.0': + '@algolia/monitoring@1.44.0': dependencies: - '@algolia/client-common': 5.39.0 - '@algolia/requester-browser-xhr': 5.39.0 - '@algolia/requester-fetch': 5.39.0 - '@algolia/requester-node-http': 5.39.0 + '@algolia/client-common': 5.44.0 + '@algolia/requester-browser-xhr': 5.44.0 + '@algolia/requester-fetch': 5.44.0 + '@algolia/requester-node-http': 5.44.0 - '@algolia/recommend@5.39.0': + '@algolia/recommend@5.44.0': dependencies: - '@algolia/client-common': 5.39.0 - '@algolia/requester-browser-xhr': 5.39.0 - '@algolia/requester-fetch': 5.39.0 - '@algolia/requester-node-http': 5.39.0 + '@algolia/client-common': 5.44.0 + '@algolia/requester-browser-xhr': 5.44.0 + '@algolia/requester-fetch': 5.44.0 + '@algolia/requester-node-http': 5.44.0 - '@algolia/requester-browser-xhr@5.39.0': + '@algolia/requester-browser-xhr@5.44.0': dependencies: - '@algolia/client-common': 5.39.0 + '@algolia/client-common': 5.44.0 - '@algolia/requester-fetch@5.39.0': + '@algolia/requester-fetch@5.44.0': dependencies: - '@algolia/client-common': 5.39.0 + '@algolia/client-common': 5.44.0 - '@algolia/requester-node-http@5.39.0': + '@algolia/requester-node-http@5.44.0': dependencies: - '@algolia/client-common': 5.39.0 + '@algolia/client-common': 5.44.0 '@alloc/quick-lru@5.2.0': {} + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + '@antfu/install-pkg@1.1.0': dependencies: - package-manager-detector: 1.3.0 - tinyexec: 1.0.1 + package-manager-detector: 1.5.0 + tinyexec: 1.0.2 - '@antfu/utils@9.2.1': {} + '@antfu/utils@9.3.0': {} '@asamuzakjp/css-color@3.2.0': dependencies: @@ -8731,33 +9945,18 @@ snapshots: '@ast-grep/napi-win32-ia32-msvc': 0.39.9 '@ast-grep/napi-win32-x64-msvc': 0.39.9 + '@babel/code-frame@7.24.2': + dependencies: + '@babel/highlight': 7.25.9 + picocolors: 1.1.1 + '@babel/code-frame@7.27.1': dependencies: - '@babel/helper-validator-identifier': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/compat-data@7.28.4': {} - - '@babel/core@7.28.4': - dependencies: - '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.5 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.4) - '@babel/helpers': 7.28.4 - '@babel/parser': 7.28.5 - '@babel/template': 7.27.2 - '@babel/traverse': 7.28.5 - '@babel/types': 7.28.5 - '@jridgewell/remapping': 2.3.5 - convert-source-map: 2.0.0 - debug: 4.4.3 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color + '@babel/compat-data@7.28.5': {} '@babel/core@7.28.5': dependencies: @@ -8768,11 +9967,11 @@ snapshots: '@babel/helpers': 7.28.4 '@babel/parser': 7.28.5 '@babel/template': 7.27.2 - '@babel/traverse': 7.28.5 + '@babel/traverse': 7.28.5(supports-color@5.5.0) '@babel/types': 7.28.5 '@jridgewell/remapping': 2.3.5 convert-source-map: 2.0.0 - debug: 4.4.3 + debug: 4.4.3(supports-color@5.5.0) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -8793,36 +9992,27 @@ snapshots: '@babel/helper-compilation-targets@7.27.2': dependencies: - '@babel/compat-data': 7.28.4 + '@babel/compat-data': 7.28.5 '@babel/helper-validator-option': 7.27.1 - browserslist: 4.26.3 + browserslist: 4.28.0 lru-cache: 5.1.1 semver: 6.3.1 '@babel/helper-globals@7.28.0': {} - '@babel/helper-module-imports@7.27.1': + '@babel/helper-module-imports@7.27.1(supports-color@5.5.0)': dependencies: - '@babel/traverse': 7.28.5 + '@babel/traverse': 7.28.5(supports-color@5.5.0) '@babel/types': 7.28.5 transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.4)': - dependencies: - '@babel/core': 7.28.4 - '@babel/helper-module-imports': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 - '@babel/traverse': 7.28.5 - transitivePeerDependencies: - - supports-color - '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-module-imports': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 - '@babel/traverse': 7.28.5 + '@babel/helper-module-imports': 7.27.1(supports-color@5.5.0) + '@babel/helper-validator-identifier': 7.28.5 + '@babel/traverse': 7.28.5(supports-color@5.5.0) transitivePeerDependencies: - supports-color @@ -8830,8 +10020,6 @@ snapshots: '@babel/helper-string-parser@7.27.1': {} - '@babel/helper-validator-identifier@7.27.1': {} - '@babel/helper-validator-identifier@7.28.5': {} '@babel/helper-validator-option@7.27.1': {} @@ -8841,98 +10029,100 @@ snapshots: '@babel/template': 7.27.2 '@babel/types': 7.28.5 + '@babel/highlight@7.25.9': + dependencies: + '@babel/helper-validator-identifier': 7.28.5 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.1.1 + '@babel/parser@7.28.5': dependencies: '@babel/types': 7.28.5 - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.28.4)': + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.28.4)': + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.28.4)': + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.28.4)': + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.28.4)': + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.28.4)': + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.4)': - dependencies: - '@babel/core': 7.28.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.28.4)': + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.28.4)': + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.28.4)': + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.28.4)': + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.28.4)': + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.28.4)': + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.28.4)': + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.28.4)': + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-react-display-name@7.28.0(@babel/core@7.28.5)': @@ -8951,7 +10141,7 @@ snapshots: dependencies: '@babel/core': 7.28.5 '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-module-imports': 7.27.1 + '@babel/helper-module-imports': 7.27.1(supports-color@5.5.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.5) '@babel/types': 7.28.5 @@ -8976,13 +10166,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/runtime@7.28.4': {} + '@babel/template@7.27.2': dependencies: '@babel/code-frame': 7.27.1 '@babel/parser': 7.28.5 '@babel/types': 7.28.5 - '@babel/traverse@7.28.5': + '@babel/traverse@7.28.5(supports-color@5.5.0)': dependencies: '@babel/code-frame': 7.27.1 '@babel/generator': 7.28.5 @@ -8990,7 +10182,7 @@ snapshots: '@babel/parser': 7.28.5 '@babel/template': 7.27.2 '@babel/types': 7.28.5 - debug: 4.4.3 + debug: 4.4.3(supports-color@5.5.0) transitivePeerDependencies: - supports-color @@ -9036,7 +10228,7 @@ snapshots: '@braintree/sanitize-url@7.1.1': {} - '@bufbuild/protobuf@2.9.0': {} + '@bufbuild/protobuf@2.10.1': {} '@chevrotain/cst-dts-gen@11.0.3': dependencies: @@ -9059,16 +10251,16 @@ snapshots: dependencies: axios: 1.13.2 find-up: 6.3.0 - form-data: 4.0.4 + form-data: 4.0.5 node-gyp-build: 4.8.4 transitivePeerDependencies: - debug - '@codspeed/vitest-plugin@4.0.1(vite@7.1.7(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))(vitest@3.2.4(@types/debug@4.1.12)(@types/node@20.19.25)(jiti@2.6.1)(jsdom@26.1.0)(less@4.4.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))': + '@codspeed/vitest-plugin@4.0.1(vite@7.2.4(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))(vitest@3.2.4(@types/debug@4.1.12)(@types/node@20.19.25)(jiti@2.6.1)(jsdom@26.1.0)(less@4.4.2)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@codspeed/core': 4.0.1 - vite: 7.1.7(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@20.19.25)(jiti@2.6.1)(jsdom@26.1.0)(less@4.4.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.2.4(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) + vitest: 3.2.4(@types/debug@4.1.12)(@types/node@20.19.25)(jiti@2.6.1)(jsdom@26.1.0)(less@4.4.2)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - debug @@ -9084,7 +10276,7 @@ snapshots: '@cspell/dict-csharp': 4.0.7 '@cspell/dict-css': 4.0.18 '@cspell/dict-dart': 2.3.1 - '@cspell/dict-data-science': 2.0.11 + '@cspell/dict-data-science': 2.0.12 '@cspell/dict-django': 4.1.5 '@cspell/dict-docker': 1.1.16 '@cspell/dict-dotnet': 5.0.10 @@ -9119,7 +10311,7 @@ snapshots: '@cspell/dict-php': 4.1.0 '@cspell/dict-powershell': 5.0.15 '@cspell/dict-public-licenses': 2.0.15 - '@cspell/dict-python': 4.2.21 + '@cspell/dict-python': 4.2.22 '@cspell/dict-r': 2.1.1 '@cspell/dict-ruby': 5.0.9 '@cspell/dict-rust': 4.0.12 @@ -9170,7 +10362,7 @@ snapshots: '@cspell/dict-dart@2.3.1': {} - '@cspell/dict-data-science@2.0.11': {} + '@cspell/dict-data-science@2.0.12': {} '@cspell/dict-django@4.1.5': {} @@ -9245,9 +10437,9 @@ snapshots: '@cspell/dict-public-licenses@2.0.15': {} - '@cspell/dict-python@4.2.21': + '@cspell/dict-python@4.2.22': dependencies: - '@cspell/dict-data-science': 2.0.11 + '@cspell/dict-data-science': 2.0.12 '@cspell/dict-r@2.1.1': {} @@ -9312,38 +10504,38 @@ snapshots: '@discoveryjs/json-ext@0.5.7': {} - '@docsearch/core@4.3.1(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + '@docsearch/core@4.3.1(@types/react@19.2.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': optionalDependencies: - '@types/react': 19.1.15 - react: 19.1.1 - react-dom: 19.1.1(react@19.1.1) + '@types/react': 19.2.6 + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) '@docsearch/css@4.3.2': {} - '@docsearch/react@4.3.2(@algolia/client-search@5.39.0)(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(search-insights@2.17.3)': + '@docsearch/react@4.3.2(@algolia/client-search@5.44.0)(@types/react@19.2.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(search-insights@2.17.3)': dependencies: - '@ai-sdk/react': 2.0.59(react@19.1.1)(zod@4.1.12) - '@algolia/autocomplete-core': 1.19.2(@algolia/client-search@5.39.0)(algoliasearch@5.39.0)(search-insights@2.17.3) - '@docsearch/core': 4.3.1(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@ai-sdk/react': 2.0.98(react@19.2.0)(zod@4.1.12) + '@algolia/autocomplete-core': 1.19.2(@algolia/client-search@5.44.0)(algoliasearch@5.44.0)(search-insights@2.17.3) + '@docsearch/core': 4.3.1(@types/react@19.2.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@docsearch/css': 4.3.2 - ai: 5.0.59(zod@4.1.12) - algoliasearch: 5.39.0 - marked: 16.3.0 + ai: 5.0.98(zod@4.1.12) + algoliasearch: 5.44.0 + marked: 16.4.2 zod: 4.1.12 optionalDependencies: - '@types/react': 19.1.15 - react: 19.1.1 - react-dom: 19.1.1(react@19.1.1) + '@types/react': 19.2.6 + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) search-insights: 2.17.3 transitivePeerDependencies: - '@algolia/client-search' - '@emnapi/core@1.5.0': + '@emnapi/core@1.7.1': dependencies: '@emnapi/wasi-threads': 1.1.0 tslib: 2.8.1 - '@emnapi/runtime@1.5.0': + '@emnapi/runtime@1.7.1': dependencies: tslib: 2.8.1 @@ -9351,88 +10543,181 @@ snapshots: dependencies: tslib: 2.8.1 + '@emotion/babel-plugin@11.13.5': + dependencies: + '@babel/helper-module-imports': 7.27.1(supports-color@5.5.0) + '@babel/runtime': 7.28.4 + '@emotion/hash': 0.9.2 + '@emotion/memoize': 0.9.0 + '@emotion/serialize': 1.3.3 + babel-plugin-macros: 3.1.0 + convert-source-map: 1.9.0 + escape-string-regexp: 4.0.0 + find-root: 1.1.0 + source-map: 0.5.7 + stylis: 4.2.0 + transitivePeerDependencies: + - supports-color + + '@emotion/cache@11.14.0': + dependencies: + '@emotion/memoize': 0.9.0 + '@emotion/sheet': 1.4.0 + '@emotion/utils': 1.4.2 + '@emotion/weak-memoize': 0.4.0 + stylis: 4.2.0 + + '@emotion/hash@0.9.2': {} + + '@emotion/is-prop-valid@1.4.0': + dependencies: + '@emotion/memoize': 0.9.0 + + '@emotion/memoize@0.9.0': {} + + '@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0)': + dependencies: + '@babel/runtime': 7.28.4 + '@emotion/babel-plugin': 11.13.5 + '@emotion/cache': 11.14.0 + '@emotion/serialize': 1.3.3 + '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.2.0) + '@emotion/utils': 1.4.2 + '@emotion/weak-memoize': 0.4.0 + hoist-non-react-statics: 3.3.2 + react: 19.2.0 + optionalDependencies: + '@types/react': 19.2.6 + transitivePeerDependencies: + - supports-color + + '@emotion/serialize@1.3.3': + dependencies: + '@emotion/hash': 0.9.2 + '@emotion/memoize': 0.9.0 + '@emotion/unitless': 0.10.0 + '@emotion/utils': 1.4.2 + csstype: 3.2.3 + + '@emotion/sheet@1.4.0': {} + + '@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react@19.2.0)': + dependencies: + '@babel/runtime': 7.28.4 + '@emotion/babel-plugin': 11.13.5 + '@emotion/is-prop-valid': 1.4.0 + '@emotion/react': 11.14.0(@types/react@19.2.6)(react@19.2.0) + '@emotion/serialize': 1.3.3 + '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.2.0) + '@emotion/utils': 1.4.2 + react: 19.2.0 + optionalDependencies: + '@types/react': 19.2.6 + transitivePeerDependencies: + - supports-color + + '@emotion/stylis@0.8.5': {} + + '@emotion/unitless@0.10.0': {} + + '@emotion/unitless@0.7.5': {} + + '@emotion/use-insertion-effect-with-fallbacks@1.2.0(react@19.2.0)': + dependencies: + react: 19.2.0 + + '@emotion/utils@1.4.2': {} + + '@emotion/weak-memoize@0.4.0': {} + '@epic-web/invariant@1.0.0': {} - '@esbuild/aix-ppc64@0.25.10': + '@esbuild/aix-ppc64@0.25.12': optional: true - '@esbuild/android-arm64@0.25.10': + '@esbuild/android-arm64@0.25.12': optional: true - '@esbuild/android-arm@0.25.10': + '@esbuild/android-arm@0.25.12': optional: true - '@esbuild/android-x64@0.25.10': + '@esbuild/android-x64@0.25.12': optional: true - '@esbuild/darwin-arm64@0.25.10': + '@esbuild/darwin-arm64@0.25.12': optional: true - '@esbuild/darwin-x64@0.25.10': + '@esbuild/darwin-x64@0.25.12': optional: true - '@esbuild/freebsd-arm64@0.25.10': + '@esbuild/freebsd-arm64@0.25.12': optional: true - '@esbuild/freebsd-x64@0.25.10': + '@esbuild/freebsd-x64@0.25.12': optional: true - '@esbuild/linux-arm64@0.25.10': + '@esbuild/linux-arm64@0.25.12': optional: true - '@esbuild/linux-arm@0.25.10': + '@esbuild/linux-arm@0.25.12': optional: true - '@esbuild/linux-ia32@0.25.10': + '@esbuild/linux-ia32@0.25.12': optional: true - '@esbuild/linux-loong64@0.25.10': + '@esbuild/linux-loong64@0.25.12': optional: true - '@esbuild/linux-mips64el@0.25.10': + '@esbuild/linux-mips64el@0.25.12': optional: true - '@esbuild/linux-ppc64@0.25.10': + '@esbuild/linux-ppc64@0.25.12': optional: true - '@esbuild/linux-riscv64@0.25.10': + '@esbuild/linux-riscv64@0.25.12': optional: true - '@esbuild/linux-s390x@0.25.10': + '@esbuild/linux-s390x@0.25.12': optional: true - '@esbuild/linux-x64@0.25.10': + '@esbuild/linux-x64@0.25.12': optional: true - '@esbuild/netbsd-arm64@0.25.10': + '@esbuild/netbsd-arm64@0.25.12': optional: true - '@esbuild/netbsd-x64@0.25.10': + '@esbuild/netbsd-x64@0.25.12': optional: true - '@esbuild/openbsd-arm64@0.25.10': + '@esbuild/openbsd-arm64@0.25.12': optional: true - '@esbuild/openbsd-x64@0.25.10': + '@esbuild/openbsd-x64@0.25.12': optional: true - '@esbuild/openharmony-arm64@0.25.10': + '@esbuild/openharmony-arm64@0.25.12': optional: true - '@esbuild/sunos-x64@0.25.10': + '@esbuild/sunos-x64@0.25.12': optional: true - '@esbuild/win32-arm64@0.25.10': + '@esbuild/win32-arm64@0.25.12': optional: true - '@esbuild/win32-ia32@0.25.10': + '@esbuild/win32-ia32@0.25.12': optional: true - '@esbuild/win32-x64@0.25.10': + '@esbuild/win32-x64@0.25.12': optional: true '@fastify/busboy@2.1.1': {} + '@hapi/hoek@9.3.0': {} + + '@hapi/topo@5.1.0': + dependencies: + '@hapi/hoek': 9.3.0 + '@iarna/toml@3.0.0': {} '@iconify/types@2.0.0': {} @@ -9440,9 +10725,9 @@ snapshots: '@iconify/utils@3.0.2': dependencies: '@antfu/install-pkg': 1.1.0 - '@antfu/utils': 9.2.1 + '@antfu/utils': 9.3.0 '@iconify/types': 2.0.0 - debug: 4.4.3 + debug: 4.4.3(supports-color@5.5.0) globals: 15.15.0 kolorist: 1.8.0 local-pkg: 1.1.2 @@ -9450,30 +10735,30 @@ snapshots: transitivePeerDependencies: - supports-color - '@inquirer/ansi@1.0.0': {} + '@inquirer/ansi@1.0.2': {} - '@inquirer/checkbox@4.2.4(@types/node@20.19.25)': + '@inquirer/checkbox@4.3.2(@types/node@20.19.25)': dependencies: - '@inquirer/ansi': 1.0.0 - '@inquirer/core': 10.2.2(@types/node@20.19.25) - '@inquirer/figures': 1.0.13 - '@inquirer/type': 3.0.8(@types/node@20.19.25) + '@inquirer/ansi': 1.0.2 + '@inquirer/core': 10.3.2(@types/node@20.19.25) + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@20.19.25) yoctocolors-cjs: 2.1.3 optionalDependencies: '@types/node': 20.19.25 - '@inquirer/confirm@5.1.18(@types/node@20.19.25)': + '@inquirer/confirm@5.1.21(@types/node@20.19.25)': dependencies: - '@inquirer/core': 10.2.2(@types/node@20.19.25) - '@inquirer/type': 3.0.8(@types/node@20.19.25) + '@inquirer/core': 10.3.2(@types/node@20.19.25) + '@inquirer/type': 3.0.10(@types/node@20.19.25) optionalDependencies: '@types/node': 20.19.25 - '@inquirer/core@10.2.2(@types/node@20.19.25)': + '@inquirer/core@10.3.2(@types/node@20.19.25)': dependencies: - '@inquirer/ansi': 1.0.0 - '@inquirer/figures': 1.0.13 - '@inquirer/type': 3.0.8(@types/node@20.19.25) + '@inquirer/ansi': 1.0.2 + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@20.19.25) cli-width: 4.1.0 mute-stream: 2.0.0 signal-exit: 4.1.0 @@ -9482,96 +10767,96 @@ snapshots: optionalDependencies: '@types/node': 20.19.25 - '@inquirer/editor@4.2.20(@types/node@20.19.25)': + '@inquirer/editor@4.2.23(@types/node@20.19.25)': dependencies: - '@inquirer/core': 10.2.2(@types/node@20.19.25) - '@inquirer/external-editor': 1.0.2(@types/node@20.19.25) - '@inquirer/type': 3.0.8(@types/node@20.19.25) + '@inquirer/core': 10.3.2(@types/node@20.19.25) + '@inquirer/external-editor': 1.0.3(@types/node@20.19.25) + '@inquirer/type': 3.0.10(@types/node@20.19.25) optionalDependencies: '@types/node': 20.19.25 - '@inquirer/expand@4.0.20(@types/node@20.19.25)': + '@inquirer/expand@4.0.23(@types/node@20.19.25)': dependencies: - '@inquirer/core': 10.2.2(@types/node@20.19.25) - '@inquirer/type': 3.0.8(@types/node@20.19.25) + '@inquirer/core': 10.3.2(@types/node@20.19.25) + '@inquirer/type': 3.0.10(@types/node@20.19.25) yoctocolors-cjs: 2.1.3 optionalDependencies: '@types/node': 20.19.25 - '@inquirer/external-editor@1.0.2(@types/node@20.19.25)': + '@inquirer/external-editor@1.0.3(@types/node@20.19.25)': dependencies: - chardet: 2.1.0 + chardet: 2.1.1 iconv-lite: 0.7.0 optionalDependencies: '@types/node': 20.19.25 - '@inquirer/figures@1.0.13': {} + '@inquirer/figures@1.0.15': {} - '@inquirer/input@4.2.4(@types/node@20.19.25)': + '@inquirer/input@4.3.1(@types/node@20.19.25)': dependencies: - '@inquirer/core': 10.2.2(@types/node@20.19.25) - '@inquirer/type': 3.0.8(@types/node@20.19.25) + '@inquirer/core': 10.3.2(@types/node@20.19.25) + '@inquirer/type': 3.0.10(@types/node@20.19.25) optionalDependencies: '@types/node': 20.19.25 - '@inquirer/number@3.0.20(@types/node@20.19.25)': + '@inquirer/number@3.0.23(@types/node@20.19.25)': dependencies: - '@inquirer/core': 10.2.2(@types/node@20.19.25) - '@inquirer/type': 3.0.8(@types/node@20.19.25) + '@inquirer/core': 10.3.2(@types/node@20.19.25) + '@inquirer/type': 3.0.10(@types/node@20.19.25) optionalDependencies: '@types/node': 20.19.25 - '@inquirer/password@4.0.20(@types/node@20.19.25)': + '@inquirer/password@4.0.23(@types/node@20.19.25)': dependencies: - '@inquirer/ansi': 1.0.0 - '@inquirer/core': 10.2.2(@types/node@20.19.25) - '@inquirer/type': 3.0.8(@types/node@20.19.25) + '@inquirer/ansi': 1.0.2 + '@inquirer/core': 10.3.2(@types/node@20.19.25) + '@inquirer/type': 3.0.10(@types/node@20.19.25) optionalDependencies: '@types/node': 20.19.25 - '@inquirer/prompts@7.8.6(@types/node@20.19.25)': - dependencies: - '@inquirer/checkbox': 4.2.4(@types/node@20.19.25) - '@inquirer/confirm': 5.1.18(@types/node@20.19.25) - '@inquirer/editor': 4.2.20(@types/node@20.19.25) - '@inquirer/expand': 4.0.20(@types/node@20.19.25) - '@inquirer/input': 4.2.4(@types/node@20.19.25) - '@inquirer/number': 3.0.20(@types/node@20.19.25) - '@inquirer/password': 4.0.20(@types/node@20.19.25) - '@inquirer/rawlist': 4.1.8(@types/node@20.19.25) - '@inquirer/search': 3.1.3(@types/node@20.19.25) - '@inquirer/select': 4.3.4(@types/node@20.19.25) + '@inquirer/prompts@7.10.1(@types/node@20.19.25)': + dependencies: + '@inquirer/checkbox': 4.3.2(@types/node@20.19.25) + '@inquirer/confirm': 5.1.21(@types/node@20.19.25) + '@inquirer/editor': 4.2.23(@types/node@20.19.25) + '@inquirer/expand': 4.0.23(@types/node@20.19.25) + '@inquirer/input': 4.3.1(@types/node@20.19.25) + '@inquirer/number': 3.0.23(@types/node@20.19.25) + '@inquirer/password': 4.0.23(@types/node@20.19.25) + '@inquirer/rawlist': 4.1.11(@types/node@20.19.25) + '@inquirer/search': 3.2.2(@types/node@20.19.25) + '@inquirer/select': 4.4.2(@types/node@20.19.25) optionalDependencies: '@types/node': 20.19.25 - '@inquirer/rawlist@4.1.8(@types/node@20.19.25)': + '@inquirer/rawlist@4.1.11(@types/node@20.19.25)': dependencies: - '@inquirer/core': 10.2.2(@types/node@20.19.25) - '@inquirer/type': 3.0.8(@types/node@20.19.25) + '@inquirer/core': 10.3.2(@types/node@20.19.25) + '@inquirer/type': 3.0.10(@types/node@20.19.25) yoctocolors-cjs: 2.1.3 optionalDependencies: '@types/node': 20.19.25 - '@inquirer/search@3.1.3(@types/node@20.19.25)': + '@inquirer/search@3.2.2(@types/node@20.19.25)': dependencies: - '@inquirer/core': 10.2.2(@types/node@20.19.25) - '@inquirer/figures': 1.0.13 - '@inquirer/type': 3.0.8(@types/node@20.19.25) + '@inquirer/core': 10.3.2(@types/node@20.19.25) + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@20.19.25) yoctocolors-cjs: 2.1.3 optionalDependencies: '@types/node': 20.19.25 - '@inquirer/select@4.3.4(@types/node@20.19.25)': + '@inquirer/select@4.4.2(@types/node@20.19.25)': dependencies: - '@inquirer/ansi': 1.0.0 - '@inquirer/core': 10.2.2(@types/node@20.19.25) - '@inquirer/figures': 1.0.13 - '@inquirer/type': 3.0.8(@types/node@20.19.25) + '@inquirer/ansi': 1.0.2 + '@inquirer/core': 10.3.2(@types/node@20.19.25) + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@20.19.25) yoctocolors-cjs: 2.1.3 optionalDependencies: '@types/node': 20.19.25 - '@inquirer/type@3.0.8(@types/node@20.19.25)': + '@inquirer/type@3.0.10(@types/node@20.19.25)': optionalDependencies: '@types/node': 20.19.25 @@ -9595,7 +10880,7 @@ snapshots: camelcase: 5.3.1 find-up: 4.1.0 get-package-type: 0.1.0 - js-yaml: 3.14.1 + js-yaml: 3.14.2 resolve-from: 5.0.0 '@istanbuljs/schema@0.1.3': {} @@ -9634,7 +10919,7 @@ snapshots: '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 '@types/node': 20.19.25 - '@types/yargs': 17.0.33 + '@types/yargs': 17.0.35 chalk: 4.1.2 '@jridgewell/gen-mapping@0.3.13': @@ -9670,7 +10955,7 @@ snapshots: dependencies: tslib: 2.8.1 - '@jsonjoy.com/buffers@1.0.0(tslib@2.8.1)': + '@jsonjoy.com/buffers@1.2.1(tslib@2.8.1)': dependencies: tslib: 2.8.1 @@ -9678,15 +10963,16 @@ snapshots: dependencies: tslib: 2.8.1 - '@jsonjoy.com/json-pack@1.14.0(tslib@2.8.1)': + '@jsonjoy.com/json-pack@1.21.0(tslib@2.8.1)': dependencies: '@jsonjoy.com/base64': 1.1.2(tslib@2.8.1) - '@jsonjoy.com/buffers': 1.0.0(tslib@2.8.1) + '@jsonjoy.com/buffers': 1.2.1(tslib@2.8.1) '@jsonjoy.com/codegen': 1.0.0(tslib@2.8.1) '@jsonjoy.com/json-pointer': 1.0.2(tslib@2.8.1) '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) hyperdyperid: 1.2.0 thingies: 2.5.0(tslib@2.8.1) + tree-dump: 1.1.0(tslib@2.8.1) tslib: 2.8.1 '@jsonjoy.com/json-pointer@1.0.2(tslib@2.8.1)': @@ -9697,7 +10983,7 @@ snapshots: '@jsonjoy.com/util@1.9.0(tslib@2.8.1)': dependencies: - '@jsonjoy.com/buffers': 1.0.0(tslib@2.8.1) + '@jsonjoy.com/buffers': 1.2.1(tslib@2.8.1) '@jsonjoy.com/codegen': 1.0.0(tslib@2.8.1) tslib: 2.8.1 @@ -9733,10 +11019,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@mdx-js/react@3.1.1(@types/react@19.1.15)(react@19.2.0)': + '@mdx-js/react@3.1.1(@types/react@19.2.6)(react@19.2.0)': dependencies: '@types/mdx': 2.0.13 - '@types/react': 19.1.15 + '@types/react': 19.2.6 react: 19.2.0 '@mermaid-js/parser@0.6.3': @@ -9763,7 +11049,7 @@ snapshots: diff: 8.0.2 lodash: 4.17.21 minimatch: 10.0.3 - resolve: 1.22.10 + resolve: 1.22.11 semver: 7.5.4 source-map: 0.6.1 typescript: 5.8.2 @@ -9775,101 +11061,259 @@ snapshots: '@microsoft/tsdoc': 0.15.1 ajv: 8.12.0 jju: 1.4.0 - resolve: 1.22.10 + resolve: 1.22.11 '@microsoft/tsdoc@0.15.1': {} - '@module-federation/error-codes@0.21.1': {} + '@module-federation/bridge-react-webpack-plugin@0.21.6': + dependencies: + '@module-federation/sdk': 0.21.6 + '@types/semver': 7.5.8 + semver: 7.6.3 - '@module-federation/error-codes@0.21.2': {} + '@module-federation/cli@0.21.6(typescript@5.9.3)': + dependencies: + '@module-federation/dts-plugin': 0.21.6(typescript@5.9.3) + '@module-federation/sdk': 0.21.6 + chalk: 3.0.0 + commander: 11.1.0 + jiti: 2.4.2 + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - typescript + - utf-8-validate + - vue-tsc - '@module-federation/error-codes@0.21.4': {} + '@module-federation/data-prefetch@0.21.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@module-federation/runtime': 0.21.6 + '@module-federation/sdk': 0.21.6 + fs-extra: 9.1.0 + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) - '@module-federation/runtime-core@0.21.1': + '@module-federation/dts-plugin@0.21.6(typescript@5.9.3)': dependencies: - '@module-federation/error-codes': 0.21.1 - '@module-federation/sdk': 0.21.1 + '@module-federation/error-codes': 0.21.6 + '@module-federation/managers': 0.21.6 + '@module-federation/sdk': 0.21.6 + '@module-federation/third-party-dts-extractor': 0.21.6 + adm-zip: 0.5.16 + ansi-colors: 4.1.3 + axios: 1.13.2 + chalk: 3.0.0 + fs-extra: 9.1.0 + isomorphic-ws: 5.0.0(ws@8.18.0) + koa: 3.0.3 + lodash.clonedeepwith: 4.5.0 + log4js: 6.9.1 + node-schedule: 2.1.1 + rambda: 9.4.2 + typescript: 5.9.3 + ws: 8.18.0 + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + + '@module-federation/enhanced@0.21.6(@rspack/core@packages+rspack)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.9.3)(webpack@5.102.1)': + dependencies: + '@module-federation/bridge-react-webpack-plugin': 0.21.6 + '@module-federation/cli': 0.21.6(typescript@5.9.3) + '@module-federation/data-prefetch': 0.21.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@module-federation/dts-plugin': 0.21.6(typescript@5.9.3) + '@module-federation/error-codes': 0.21.6 + '@module-federation/inject-external-runtime-core-plugin': 0.21.6(@module-federation/runtime-tools@0.21.6) + '@module-federation/managers': 0.21.6 + '@module-federation/manifest': 0.21.6(typescript@5.9.3) + '@module-federation/rspack': 0.21.6(@rspack/core@packages+rspack)(typescript@5.9.3) + '@module-federation/runtime-tools': 0.21.6 + '@module-federation/sdk': 0.21.6 + btoa: 1.2.1 + schema-utils: 4.3.3 + upath: 2.0.1 + optionalDependencies: + typescript: 5.9.3 + webpack: 5.102.1(webpack-cli@5.1.4) + transitivePeerDependencies: + - '@rspack/core' + - bufferutil + - debug + - react + - react-dom + - supports-color + - utf-8-validate + + '@module-federation/error-codes@0.21.6': {} - '@module-federation/runtime-core@0.21.2': + '@module-federation/inject-external-runtime-core-plugin@0.21.6(@module-federation/runtime-tools@0.21.6)': dependencies: - '@module-federation/error-codes': 0.21.2 - '@module-federation/sdk': 0.21.2 + '@module-federation/runtime-tools': 0.21.6 - '@module-federation/runtime-core@0.21.4': + '@module-federation/managers@0.21.6': dependencies: - '@module-federation/error-codes': 0.21.4 - '@module-federation/sdk': 0.21.4 + '@module-federation/sdk': 0.21.6 + find-pkg: 2.0.0 + fs-extra: 9.1.0 - '@module-federation/runtime-tools@0.21.1': + '@module-federation/manifest@0.21.6(typescript@5.9.3)': dependencies: - '@module-federation/runtime': 0.21.1 - '@module-federation/webpack-bundler-runtime': 0.21.1 + '@module-federation/dts-plugin': 0.21.6(typescript@5.9.3) + '@module-federation/managers': 0.21.6 + '@module-federation/sdk': 0.21.6 + chalk: 3.0.0 + find-pkg: 2.0.0 + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - typescript + - utf-8-validate + - vue-tsc - '@module-federation/runtime-tools@0.21.2': + '@module-federation/rspack@0.21.6(@rspack/core@packages+rspack)(typescript@5.9.3)': dependencies: - '@module-federation/runtime': 0.21.2 - '@module-federation/webpack-bundler-runtime': 0.21.2 + '@module-federation/bridge-react-webpack-plugin': 0.21.6 + '@module-federation/dts-plugin': 0.21.6(typescript@5.9.3) + '@module-federation/inject-external-runtime-core-plugin': 0.21.6(@module-federation/runtime-tools@0.21.6) + '@module-federation/managers': 0.21.6 + '@module-federation/manifest': 0.21.6(typescript@5.9.3) + '@module-federation/runtime-tools': 0.21.6 + '@module-federation/sdk': 0.21.6 + '@rspack/core': link:packages/rspack + btoa: 1.2.1 + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate - '@module-federation/runtime-tools@0.21.4': + '@module-federation/runtime-core@0.21.6': dependencies: - '@module-federation/runtime': 0.21.4 - '@module-federation/webpack-bundler-runtime': 0.21.4 + '@module-federation/error-codes': 0.21.6 + '@module-federation/sdk': 0.21.6 - '@module-federation/runtime@0.21.1': + '@module-federation/runtime-tools@0.21.6': dependencies: - '@module-federation/error-codes': 0.21.1 - '@module-federation/runtime-core': 0.21.1 - '@module-federation/sdk': 0.21.1 + '@module-federation/runtime': 0.21.6 + '@module-federation/webpack-bundler-runtime': 0.21.6 - '@module-federation/runtime@0.21.2': + '@module-federation/runtime@0.21.6': dependencies: - '@module-federation/error-codes': 0.21.2 - '@module-federation/runtime-core': 0.21.2 - '@module-federation/sdk': 0.21.2 + '@module-federation/error-codes': 0.21.6 + '@module-federation/runtime-core': 0.21.6 + '@module-federation/sdk': 0.21.6 + + '@module-federation/sdk@0.21.6': {} - '@module-federation/runtime@0.21.4': + '@module-federation/third-party-dts-extractor@0.21.6': dependencies: - '@module-federation/error-codes': 0.21.4 - '@module-federation/runtime-core': 0.21.4 - '@module-federation/sdk': 0.21.4 + find-pkg: 2.0.0 + fs-extra: 9.1.0 + resolve: 1.22.8 - '@module-federation/sdk@0.21.1': {} + '@module-federation/webpack-bundler-runtime@0.21.6': + dependencies: + '@module-federation/runtime': 0.21.6 + '@module-federation/sdk': 0.21.6 - '@module-federation/sdk@0.21.2': {} + '@mui/core-downloads-tracker@5.18.0': {} - '@module-federation/sdk@0.21.4': {} + '@mui/material@5.18.0(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@babel/runtime': 7.28.4 + '@mui/core-downloads-tracker': 5.18.0 + '@mui/system': 5.18.0(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react@19.2.0) + '@mui/types': 7.2.24(@types/react@19.2.6) + '@mui/utils': 5.17.1(@types/react@19.2.6)(react@19.2.0) + '@popperjs/core': 2.11.8 + '@types/react-transition-group': 4.4.12(@types/react@19.2.6) + clsx: 2.1.1 + csstype: 3.2.3 + prop-types: 15.8.1 + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + react-is: 19.2.0 + react-transition-group: 4.4.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + optionalDependencies: + '@emotion/react': 11.14.0(@types/react@19.2.6)(react@19.2.0) + '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react@19.2.0) + '@types/react': 19.2.6 - '@module-federation/webpack-bundler-runtime@0.21.1': + '@mui/private-theming@5.17.1(@types/react@19.2.6)(react@19.2.0)': dependencies: - '@module-federation/runtime': 0.21.1 - '@module-federation/sdk': 0.21.1 + '@babel/runtime': 7.28.4 + '@mui/utils': 5.17.1(@types/react@19.2.6)(react@19.2.0) + prop-types: 15.8.1 + react: 19.2.0 + optionalDependencies: + '@types/react': 19.2.6 - '@module-federation/webpack-bundler-runtime@0.21.2': + '@mui/styled-engine@5.18.0(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react@19.2.0))(react@19.2.0)': dependencies: - '@module-federation/runtime': 0.21.2 - '@module-federation/sdk': 0.21.2 + '@babel/runtime': 7.28.4 + '@emotion/cache': 11.14.0 + '@emotion/serialize': 1.3.3 + csstype: 3.2.3 + prop-types: 15.8.1 + react: 19.2.0 + optionalDependencies: + '@emotion/react': 11.14.0(@types/react@19.2.6)(react@19.2.0) + '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react@19.2.0) + + '@mui/system@5.18.0(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react@19.2.0)': + dependencies: + '@babel/runtime': 7.28.4 + '@mui/private-theming': 5.17.1(@types/react@19.2.6)(react@19.2.0) + '@mui/styled-engine': 5.18.0(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react@19.2.0))(react@19.2.0) + '@mui/types': 7.2.24(@types/react@19.2.6) + '@mui/utils': 5.17.1(@types/react@19.2.6)(react@19.2.0) + clsx: 2.1.1 + csstype: 3.2.3 + prop-types: 15.8.1 + react: 19.2.0 + optionalDependencies: + '@emotion/react': 11.14.0(@types/react@19.2.6)(react@19.2.0) + '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react@19.2.0) + '@types/react': 19.2.6 + + '@mui/types@7.2.24(@types/react@19.2.6)': + optionalDependencies: + '@types/react': 19.2.6 - '@module-federation/webpack-bundler-runtime@0.21.4': + '@mui/utils@5.17.1(@types/react@19.2.6)(react@19.2.0)': dependencies: - '@module-federation/runtime': 0.21.4 - '@module-federation/sdk': 0.21.4 + '@babel/runtime': 7.28.4 + '@mui/types': 7.2.24(@types/react@19.2.6) + '@types/prop-types': 15.7.15 + clsx: 2.1.1 + prop-types: 15.8.1 + react: 19.2.0 + react-is: 19.2.0 + optionalDependencies: + '@types/react': 19.2.6 - '@napi-rs/cli@3.0.4(@emnapi/runtime@1.5.0)(@types/node@20.19.25)(emnapi@1.7.1(node-addon-api@7.1.1))': + '@napi-rs/cli@3.0.4(@emnapi/runtime@1.7.1)(@types/node@20.19.25)(emnapi@1.7.1(node-addon-api@7.1.1))': dependencies: - '@inquirer/prompts': 7.8.6(@types/node@20.19.25) + '@inquirer/prompts': 7.10.1(@types/node@20.19.25) '@napi-rs/cross-toolchain': 1.0.3 '@napi-rs/wasm-tools': 1.0.1 - '@octokit/rest': 22.0.0 + '@octokit/rest': 22.0.1 clipanion: 4.0.0-rc.4(typanion@3.14.0) colorette: 2.0.20 - debug: 4.4.3 + debug: 4.4.3(supports-color@5.5.0) find-up: 7.0.0 - js-yaml: 4.1.0 + js-yaml: 4.1.1 lodash-es: 4.17.21 - semver: 7.7.2 + semver: 7.7.3 typanion: 3.14.0 optionalDependencies: - '@emnapi/runtime': 1.5.0 + '@emnapi/runtime': 1.7.1 emnapi: 1.7.1(node-addon-api@7.1.1) transitivePeerDependencies: - '@napi-rs/cross-toolchain-arm64-target-aarch64' @@ -9889,7 +11333,7 @@ snapshots: dependencies: '@napi-rs/lzma': 1.4.5 '@napi-rs/tar': 1.1.0 - debug: 4.4.3 + debug: 4.4.3(supports-color@5.5.0) transitivePeerDependencies: - supports-color @@ -10037,8 +11481,8 @@ snapshots: '@napi-rs/wasm-runtime@1.0.7': dependencies: - '@emnapi/core': 1.5.0 - '@emnapi/runtime': 1.5.0 + '@emnapi/core': 1.7.1 + '@emnapi/runtime': 1.7.1 '@tybys/wasm-util': 0.10.1 '@napi-rs/wasm-tools-android-arm-eabi@1.0.1': @@ -10112,65 +11556,65 @@ snapshots: '@octokit/auth-token@6.0.0': {} - '@octokit/core@7.0.5': + '@octokit/core@7.0.6': dependencies: '@octokit/auth-token': 6.0.0 - '@octokit/graphql': 9.0.2 - '@octokit/request': 10.0.5 - '@octokit/request-error': 7.0.1 - '@octokit/types': 15.0.0 + '@octokit/graphql': 9.0.3 + '@octokit/request': 10.0.7 + '@octokit/request-error': 7.1.0 + '@octokit/types': 16.0.0 before-after-hook: 4.0.0 universal-user-agent: 7.0.3 - '@octokit/endpoint@11.0.1': + '@octokit/endpoint@11.0.2': dependencies: - '@octokit/types': 15.0.0 + '@octokit/types': 16.0.0 universal-user-agent: 7.0.3 - '@octokit/graphql@9.0.2': + '@octokit/graphql@9.0.3': dependencies: - '@octokit/request': 10.0.5 - '@octokit/types': 15.0.0 + '@octokit/request': 10.0.7 + '@octokit/types': 16.0.0 universal-user-agent: 7.0.3 - '@octokit/openapi-types@26.0.0': {} + '@octokit/openapi-types@27.0.0': {} - '@octokit/plugin-paginate-rest@13.2.0(@octokit/core@7.0.5)': + '@octokit/plugin-paginate-rest@14.0.0(@octokit/core@7.0.6)': dependencies: - '@octokit/core': 7.0.5 - '@octokit/types': 15.0.0 + '@octokit/core': 7.0.6 + '@octokit/types': 16.0.0 - '@octokit/plugin-request-log@6.0.0(@octokit/core@7.0.5)': + '@octokit/plugin-request-log@6.0.0(@octokit/core@7.0.6)': dependencies: - '@octokit/core': 7.0.5 + '@octokit/core': 7.0.6 - '@octokit/plugin-rest-endpoint-methods@16.1.0(@octokit/core@7.0.5)': + '@octokit/plugin-rest-endpoint-methods@17.0.0(@octokit/core@7.0.6)': dependencies: - '@octokit/core': 7.0.5 - '@octokit/types': 15.0.0 + '@octokit/core': 7.0.6 + '@octokit/types': 16.0.0 - '@octokit/request-error@7.0.1': + '@octokit/request-error@7.1.0': dependencies: - '@octokit/types': 15.0.0 + '@octokit/types': 16.0.0 - '@octokit/request@10.0.5': + '@octokit/request@10.0.7': dependencies: - '@octokit/endpoint': 11.0.1 - '@octokit/request-error': 7.0.1 - '@octokit/types': 15.0.0 + '@octokit/endpoint': 11.0.2 + '@octokit/request-error': 7.1.0 + '@octokit/types': 16.0.0 fast-content-type-parse: 3.0.0 universal-user-agent: 7.0.3 - '@octokit/rest@22.0.0': + '@octokit/rest@22.0.1': dependencies: - '@octokit/core': 7.0.5 - '@octokit/plugin-paginate-rest': 13.2.0(@octokit/core@7.0.5) - '@octokit/plugin-request-log': 6.0.0(@octokit/core@7.0.5) - '@octokit/plugin-rest-endpoint-methods': 16.1.0(@octokit/core@7.0.5) + '@octokit/core': 7.0.6 + '@octokit/plugin-paginate-rest': 14.0.0(@octokit/core@7.0.6) + '@octokit/plugin-request-log': 6.0.0(@octokit/core@7.0.6) + '@octokit/plugin-rest-endpoint-methods': 17.0.0(@octokit/core@7.0.6) - '@octokit/types@15.0.0': + '@octokit/types@16.0.0': dependencies: - '@octokit/openapi-types': 26.0.0 + '@octokit/openapi-types': 27.0.0 '@opentelemetry/api@1.9.0': {} @@ -10238,13 +11682,47 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true - '@playwright/test@1.56.0': + '@playwright/test@1.56.1': + dependencies: + playwright: 1.56.1 + + '@pmmmwh/react-refresh-webpack-plugin@0.5.15(@types/webpack@5.28.0(webpack-cli@5.1.4))(react-refresh@0.18.0)(type-fest@4.41.0)(webpack-dev-server@5.0.4)(webpack@5.102.1)': + dependencies: + ansi-html: 0.0.9 + core-js-pure: 3.47.0 + error-stack-parser: 2.1.4 + html-entities: 2.6.0 + loader-utils: 2.0.4 + react-refresh: 0.18.0 + schema-utils: 4.3.3 + source-map: 0.7.6 + webpack: 5.102.1(webpack-cli@5.1.4) + optionalDependencies: + '@types/webpack': 5.28.0(webpack-cli@5.1.4) + type-fest: 4.41.0 + webpack-dev-server: 5.0.4(webpack-cli@5.1.4)(webpack@5.102.1) + + '@pmmmwh/react-refresh-webpack-plugin@0.5.15(@types/webpack@5.28.0(webpack-cli@5.1.4))(react-refresh@0.18.0)(type-fest@4.41.0)(webpack-dev-server@5.2.2)(webpack@5.102.1)': dependencies: - playwright: 1.56.0 + ansi-html: 0.0.9 + core-js-pure: 3.47.0 + error-stack-parser: 2.1.4 + html-entities: 2.6.0 + loader-utils: 2.0.4 + react-refresh: 0.18.0 + schema-utils: 4.3.3 + source-map: 0.7.6 + webpack: 5.102.1(webpack-cli@5.1.4) + optionalDependencies: + '@types/webpack': 5.28.0(webpack-cli@5.1.4) + type-fest: 4.41.0 + webpack-dev-server: 5.2.2(webpack-cli@5.1.4)(webpack@5.102.1) '@polka/url@1.0.0-next.29': {} - '@prefresh/core@1.5.7(preact@10.27.2)': + '@popperjs/core@2.11.8': {} + + '@prefresh/core@1.5.9(preact@10.27.2)': dependencies: preact: 10.27.2 @@ -10252,70 +11730,70 @@ snapshots: '@remix-run/router@1.23.1': {} - '@rollup/rollup-android-arm-eabi@4.52.3': + '@rollup/rollup-android-arm-eabi@4.53.3': optional: true - '@rollup/rollup-android-arm64@4.52.3': + '@rollup/rollup-android-arm64@4.53.3': optional: true - '@rollup/rollup-darwin-arm64@4.52.3': + '@rollup/rollup-darwin-arm64@4.53.3': optional: true - '@rollup/rollup-darwin-x64@4.52.3': + '@rollup/rollup-darwin-x64@4.53.3': optional: true - '@rollup/rollup-freebsd-arm64@4.52.3': + '@rollup/rollup-freebsd-arm64@4.53.3': optional: true - '@rollup/rollup-freebsd-x64@4.52.3': + '@rollup/rollup-freebsd-x64@4.53.3': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.52.3': + '@rollup/rollup-linux-arm-gnueabihf@4.53.3': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.52.3': + '@rollup/rollup-linux-arm-musleabihf@4.53.3': optional: true - '@rollup/rollup-linux-arm64-gnu@4.52.3': + '@rollup/rollup-linux-arm64-gnu@4.53.3': optional: true - '@rollup/rollup-linux-arm64-musl@4.52.3': + '@rollup/rollup-linux-arm64-musl@4.53.3': optional: true - '@rollup/rollup-linux-loong64-gnu@4.52.3': + '@rollup/rollup-linux-loong64-gnu@4.53.3': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.52.3': + '@rollup/rollup-linux-ppc64-gnu@4.53.3': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.52.3': + '@rollup/rollup-linux-riscv64-gnu@4.53.3': optional: true - '@rollup/rollup-linux-riscv64-musl@4.52.3': + '@rollup/rollup-linux-riscv64-musl@4.53.3': optional: true - '@rollup/rollup-linux-s390x-gnu@4.52.3': + '@rollup/rollup-linux-s390x-gnu@4.53.3': optional: true - '@rollup/rollup-linux-x64-gnu@4.52.3': + '@rollup/rollup-linux-x64-gnu@4.53.3': optional: true - '@rollup/rollup-linux-x64-musl@4.52.3': + '@rollup/rollup-linux-x64-musl@4.53.3': optional: true - '@rollup/rollup-openharmony-arm64@4.52.3': + '@rollup/rollup-openharmony-arm64@4.53.3': optional: true - '@rollup/rollup-win32-arm64-msvc@4.52.3': + '@rollup/rollup-win32-arm64-msvc@4.53.3': optional: true - '@rollup/rollup-win32-ia32-msvc@4.52.3': + '@rollup/rollup-win32-ia32-msvc@4.53.3': optional: true - '@rollup/rollup-win32-x64-gnu@4.52.3': + '@rollup/rollup-win32-x64-gnu@4.53.3': optional: true - '@rollup/rollup-win32-x64-msvc@4.52.3': + '@rollup/rollup-win32-x64-msvc@4.53.3': optional: true '@rsbuild/core@1.6.0-beta.1': @@ -10326,14 +11804,6 @@ snapshots: core-js: 3.46.0 jiti: 2.6.1 - '@rsbuild/core@1.6.3': - dependencies: - '@rspack/core': 1.6.1(@swc/helpers@0.5.17) - '@rspack/lite-tapable': 1.0.1 - '@swc/helpers': 0.5.17 - core-js: 3.46.0 - jiti: 2.6.1 - '@rsbuild/core@1.6.7': dependencies: '@rspack/core': 1.6.4(@swc/helpers@0.5.17) @@ -10385,12 +11855,169 @@ snapshots: loader-utils: 2.0.4 postcss: 8.5.6 reduce-configs: 1.1.1 - sass-embedded: 1.93.2 + sass-embedded: 1.93.3 + + '@rsdoctor/client@0.3.7': {} + + '@rsdoctor/core@0.3.7(@rspack/core@1.6.4(@swc/helpers@0.5.17))': + dependencies: + '@rsdoctor/graph': 0.3.7(@rspack/core@1.6.4(@swc/helpers@0.5.17)) + '@rsdoctor/sdk': 0.3.7(@rspack/core@1.6.4(@swc/helpers@0.5.17)) + '@rsdoctor/types': 0.3.7(@rspack/core@1.6.4(@swc/helpers@0.5.17)) + '@rsdoctor/utils': 0.3.7(@rspack/core@1.6.4(@swc/helpers@0.5.17)) + axios: 1.13.2 + enhanced-resolve: 5.12.0 + filesize: 10.1.6 + fs-extra: 11.3.2 + loader-utils: 2.0.4 + lodash: 4.17.21 + path-browserify: 1.0.1 + semver: 7.7.3 + source-map: 0.7.6 + webpack-bundle-analyzer: 4.10.2 + webpack-sources: 3.3.3(patch_hash=b2a26650f08a2359d0a3cd81fa6fa272aa7441a28dd7e601792da5ed5d2b4aee) + transitivePeerDependencies: + - '@rspack/core' + - '@swc/core' + - bufferutil + - debug + - esbuild + - supports-color + - uglify-js + - utf-8-validate + - webpack-cli + + '@rsdoctor/graph@0.3.7(@rspack/core@1.6.4(@swc/helpers@0.5.17))': + dependencies: + '@rsdoctor/types': 0.3.7(@rspack/core@1.6.4(@swc/helpers@0.5.17)) + '@rsdoctor/utils': 0.3.7(@rspack/core@1.6.4(@swc/helpers@0.5.17)) + lodash: 4.17.21 + socket.io: 4.7.2 + source-map: 0.7.6 + transitivePeerDependencies: + - '@rspack/core' + - '@swc/core' + - bufferutil + - esbuild + - supports-color + - uglify-js + - utf-8-validate + - webpack-cli + + '@rsdoctor/rspack-plugin@0.3.7(@rspack/core@1.6.4(@swc/helpers@0.5.17))': + dependencies: + '@rsdoctor/core': 0.3.7(@rspack/core@1.6.4(@swc/helpers@0.5.17)) + '@rsdoctor/graph': 0.3.7(@rspack/core@1.6.4(@swc/helpers@0.5.17)) + '@rsdoctor/sdk': 0.3.7(@rspack/core@1.6.4(@swc/helpers@0.5.17)) + '@rsdoctor/types': 0.3.7(@rspack/core@1.6.4(@swc/helpers@0.5.17)) + '@rsdoctor/utils': 0.3.7(@rspack/core@1.6.4(@swc/helpers@0.5.17)) + '@rspack/core': 1.6.4(@swc/helpers@0.5.17) + loader-utils: 2.0.4 + lodash: 4.17.21 + transitivePeerDependencies: + - '@swc/core' + - bufferutil + - debug + - esbuild + - supports-color + - uglify-js + - utf-8-validate + - webpack-cli + + '@rsdoctor/sdk@0.3.7(@rspack/core@1.6.4(@swc/helpers@0.5.17))': + dependencies: + '@rsdoctor/client': 0.3.7 + '@rsdoctor/graph': 0.3.7(@rspack/core@1.6.4(@swc/helpers@0.5.17)) + '@rsdoctor/types': 0.3.7(@rspack/core@1.6.4(@swc/helpers@0.5.17)) + '@rsdoctor/utils': 0.3.7(@rspack/core@1.6.4(@swc/helpers@0.5.17)) + body-parser: 1.20.1 + cors: 2.8.5 + dayjs: 1.11.6 + ip: 1.1.9 + lodash: 4.17.21 + open: 8.4.2 + serve-static: 1.15.0 + socket.io: 4.7.2 + source-map: 0.7.6 + tapable: 2.2.1 + transitivePeerDependencies: + - '@rspack/core' + - '@swc/core' + - bufferutil + - esbuild + - supports-color + - uglify-js + - utf-8-validate + - webpack-cli + + '@rsdoctor/types@0.3.7(@rspack/core@1.6.4(@swc/helpers@0.5.17))': + dependencies: + '@types/connect': 3.4.35 + '@types/estree': 1.0.0 + '@types/tapable': 2.2.2 + '@types/webpack': 5.28.0(webpack-cli@5.1.4) + source-map: 0.7.6 + optionalDependencies: + '@rspack/core': 1.6.4(@swc/helpers@0.5.17) + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + - webpack-cli + + '@rsdoctor/utils@0.3.7(@rspack/core@1.6.4(@swc/helpers@0.5.17))': + dependencies: + '@babel/code-frame': 7.24.2 + '@rsdoctor/types': 0.3.7(@rspack/core@1.6.4(@swc/helpers@0.5.17)) + '@types/estree': 1.0.0 + acorn: 8.15.0 + acorn-import-assertions: 1.9.0(acorn@8.15.0) + acorn-walk: 8.3.2 + chalk: 4.1.2 + connect: 3.7.0 + deep-eql: 4.1.0 + envinfo: 7.13.0 + filesize: 10.1.6 + fs-extra: 11.3.2 + get-port: 5.1.1 + json-stream-stringify: 3.0.1 + lines-and-columns: 2.0.4 + lodash: 4.17.21 + rslog: 1.3.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - '@rspack/core' + - '@swc/core' + - esbuild + - supports-color + - uglify-js + - webpack-cli + + '@rsdoctor/webpack-plugin@0.3.7(@rspack/core@1.6.4(@swc/helpers@0.5.17))(webpack@5.102.1)': + dependencies: + '@rsdoctor/core': 0.3.7(@rspack/core@1.6.4(@swc/helpers@0.5.17)) + '@rsdoctor/graph': 0.3.7(@rspack/core@1.6.4(@swc/helpers@0.5.17)) + '@rsdoctor/sdk': 0.3.7(@rspack/core@1.6.4(@swc/helpers@0.5.17)) + '@rsdoctor/types': 0.3.7(@rspack/core@1.6.4(@swc/helpers@0.5.17)) + '@rsdoctor/utils': 0.3.7(@rspack/core@1.6.4(@swc/helpers@0.5.17)) + fs-extra: 11.3.2 + lodash: 4.17.21 + webpack: 5.102.1(webpack-cli@5.1.4) + transitivePeerDependencies: + - '@rspack/core' + - '@swc/core' + - bufferutil + - debug + - esbuild + - supports-color + - uglify-js + - utf-8-validate + - webpack-cli '@rslib/core@0.17.1(@microsoft/api-extractor@7.54.0(@types/node@20.19.25))(typescript@5.9.3)': dependencies: - '@rsbuild/core': 1.6.3 - rsbuild-plugin-dts: 0.17.1(@microsoft/api-extractor@7.54.0(@types/node@20.19.25))(@rsbuild/core@1.6.3)(typescript@5.9.3) + '@rsbuild/core': 1.6.7 + rsbuild-plugin-dts: 0.17.1(@microsoft/api-extractor@7.54.0(@types/node@20.19.25))(@rsbuild/core@1.6.7)(typescript@5.9.3) optionalDependencies: '@microsoft/api-extractor': 7.54.0(@types/node@20.19.25) typescript: 5.9.3 @@ -10427,54 +12054,36 @@ snapshots: '@rspack/binding-darwin-arm64@1.6.0-beta.1': optional: true - '@rspack/binding-darwin-arm64@1.6.1': - optional: true - '@rspack/binding-darwin-arm64@1.6.4': optional: true '@rspack/binding-darwin-x64@1.6.0-beta.1': optional: true - '@rspack/binding-darwin-x64@1.6.1': - optional: true - '@rspack/binding-darwin-x64@1.6.4': optional: true '@rspack/binding-linux-arm64-gnu@1.6.0-beta.1': optional: true - '@rspack/binding-linux-arm64-gnu@1.6.1': - optional: true - '@rspack/binding-linux-arm64-gnu@1.6.4': optional: true '@rspack/binding-linux-arm64-musl@1.6.0-beta.1': optional: true - '@rspack/binding-linux-arm64-musl@1.6.1': - optional: true - '@rspack/binding-linux-arm64-musl@1.6.4': optional: true '@rspack/binding-linux-x64-gnu@1.6.0-beta.1': optional: true - '@rspack/binding-linux-x64-gnu@1.6.1': - optional: true - '@rspack/binding-linux-x64-gnu@1.6.4': optional: true '@rspack/binding-linux-x64-musl@1.6.0-beta.1': optional: true - '@rspack/binding-linux-x64-musl@1.6.1': - optional: true - '@rspack/binding-linux-x64-musl@1.6.4': optional: true @@ -10483,11 +12092,6 @@ snapshots: '@napi-rs/wasm-runtime': 1.0.7 optional: true - '@rspack/binding-wasm32-wasi@1.6.1': - dependencies: - '@napi-rs/wasm-runtime': 1.0.7 - optional: true - '@rspack/binding-wasm32-wasi@1.6.4': dependencies: '@napi-rs/wasm-runtime': 1.0.7 @@ -10496,27 +12100,18 @@ snapshots: '@rspack/binding-win32-arm64-msvc@1.6.0-beta.1': optional: true - '@rspack/binding-win32-arm64-msvc@1.6.1': - optional: true - '@rspack/binding-win32-arm64-msvc@1.6.4': optional: true '@rspack/binding-win32-ia32-msvc@1.6.0-beta.1': optional: true - '@rspack/binding-win32-ia32-msvc@1.6.1': - optional: true - '@rspack/binding-win32-ia32-msvc@1.6.4': optional: true '@rspack/binding-win32-x64-msvc@1.6.0-beta.1': optional: true - '@rspack/binding-win32-x64-msvc@1.6.1': - optional: true - '@rspack/binding-win32-x64-msvc@1.6.4': optional: true @@ -10533,19 +12128,6 @@ snapshots: '@rspack/binding-win32-ia32-msvc': 1.6.0-beta.1 '@rspack/binding-win32-x64-msvc': 1.6.0-beta.1 - '@rspack/binding@1.6.1': - optionalDependencies: - '@rspack/binding-darwin-arm64': 1.6.1 - '@rspack/binding-darwin-x64': 1.6.1 - '@rspack/binding-linux-arm64-gnu': 1.6.1 - '@rspack/binding-linux-arm64-musl': 1.6.1 - '@rspack/binding-linux-x64-gnu': 1.6.1 - '@rspack/binding-linux-x64-musl': 1.6.1 - '@rspack/binding-wasm32-wasi': 1.6.1 - '@rspack/binding-win32-arm64-msvc': 1.6.1 - '@rspack/binding-win32-ia32-msvc': 1.6.1 - '@rspack/binding-win32-x64-msvc': 1.6.1 - '@rspack/binding@1.6.4': optionalDependencies: '@rspack/binding-darwin-arm64': 1.6.4 @@ -10561,52 +12143,27 @@ snapshots: '@rspack/core@1.6.0-beta.1(@swc/helpers@0.5.17)': dependencies: - '@module-federation/runtime-tools': 0.21.1 + '@module-federation/runtime-tools': 0.21.6 '@rspack/binding': 1.6.0-beta.1 '@rspack/lite-tapable': 1.0.1 optionalDependencies: '@swc/helpers': 0.5.17 - '@rspack/core@1.6.1(@swc/helpers@0.5.17)': - dependencies: - '@module-federation/runtime-tools': 0.21.2 - '@rspack/binding': 1.6.1 - '@rspack/lite-tapable': 1.0.1 - optionalDependencies: - '@swc/helpers': 0.5.17 - '@rspack/core@1.6.4(@swc/helpers@0.5.17)': dependencies: - '@module-federation/runtime-tools': 0.21.4 + '@module-federation/runtime-tools': 0.21.6 '@rspack/binding': 1.6.4 '@rspack/lite-tapable': 1.1.0 optionalDependencies: '@swc/helpers': 0.5.17 - '@rspack/dev-server@1.1.4(@rspack/core@packages+rspack)(@types/express@4.17.23)(webpack@5.102.1)': - dependencies: - '@rspack/core': link:packages/rspack - chokidar: 3.6.0 - http-proxy-middleware: 2.0.9(@types/express@4.17.23) - p-retry: 6.2.1 - webpack-dev-server: 5.2.2(webpack@5.102.1) - ws: 8.18.3 - transitivePeerDependencies: - - '@types/express' - - bufferutil - - debug - - supports-color - - utf-8-validate - - webpack - - webpack-cli - - '@rspack/dev-server@1.1.4(@rspack/core@packages+rspack)(@types/express@4.17.23)(webpack@5.99.9)': + '@rspack/dev-server@1.1.4(@rspack/core@packages+rspack)(@types/express@4.17.25)(webpack-cli@5.1.4)(webpack@5.102.1)': dependencies: '@rspack/core': link:packages/rspack chokidar: 3.6.0 - http-proxy-middleware: 2.0.9(@types/express@4.17.23) + http-proxy-middleware: 2.0.9(@types/express@4.17.25) p-retry: 6.2.1 - webpack-dev-server: 5.2.2(webpack@5.99.9) + webpack-dev-server: 5.2.2(webpack-cli@5.1.4)(webpack@5.102.1) ws: 8.18.3 transitivePeerDependencies: - '@types/express' @@ -10621,9 +12178,9 @@ snapshots: '@rspack/lite-tapable@1.1.0': {} - '@rspack/plugin-preact-refresh@1.1.4(@prefresh/core@1.5.7(preact@10.27.2))(@prefresh/utils@1.2.1)': + '@rspack/plugin-preact-refresh@1.1.4(@prefresh/core@1.5.9(preact@10.27.2))(@prefresh/utils@1.2.1)': dependencies: - '@prefresh/core': 1.5.7(preact@10.27.2) + '@prefresh/core': 1.5.9(preact@10.27.2) '@prefresh/utils': 1.2.1 '@rspack/plugin-react-refresh@1.5.3(react-refresh@0.18.0)': @@ -10632,16 +12189,16 @@ snapshots: html-entities: 2.6.0 react-refresh: 0.18.0 - '@rspress/core@2.0.0-rc.1(@types/react@19.1.15)': + '@rspress/core@2.0.0-rc.1(@types/react@19.2.6)': dependencies: '@mdx-js/mdx': 3.1.1 - '@mdx-js/react': 3.1.1(@types/react@19.1.15)(react@19.2.0) + '@mdx-js/react': 3.1.1(@types/react@19.2.6)(react@19.2.0) '@rsbuild/core': 1.6.7 '@rsbuild/plugin-react': 1.4.2(@rsbuild/core@1.6.7) '@rspress/mdx-rs': 0.6.6 '@rspress/runtime': 2.0.0-rc.1 '@rspress/shared': 2.0.0-rc.1 - '@shikijs/rehype': 3.13.0 + '@shikijs/rehype': 3.15.0 '@types/unist': 3.0.3 '@unhead/react': 2.0.19(react@19.2.0) body-scroll-lock: 4.0.0-beta.0 @@ -10670,7 +12227,7 @@ snapshots: remark-gfm: 4.0.1 remark-mdx: 3.1.1 scroll-into-view-if-needed: 3.1.0 - shiki: 3.13.0 + shiki: 3.15.0 tinyglobby: 0.2.15 tinypool: 1.1.1 unified: 11.0.5 @@ -10716,11 +12273,11 @@ snapshots: '@rspress/mdx-rs-win32-arm64-msvc': 0.6.6 '@rspress/mdx-rs-win32-x64-msvc': 0.6.6 - '@rspress/plugin-algolia@2.0.0-rc.1(@algolia/client-search@5.39.0)(@rspress/core@2.0.0-rc.1(@types/react@19.1.15))(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(search-insights@2.17.3)': + '@rspress/plugin-algolia@2.0.0-rc.1(@algolia/client-search@5.44.0)(@rspress/core@2.0.0-rc.1(@types/react@19.2.6))(@types/react@19.2.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(search-insights@2.17.3)': dependencies: '@docsearch/css': 4.3.2 - '@docsearch/react': 4.3.2(@algolia/client-search@5.39.0)(@types/react@19.1.15)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(search-insights@2.17.3) - '@rspress/core': 2.0.0-rc.1(@types/react@19.1.15) + '@docsearch/react': 4.3.2(@algolia/client-search@5.44.0)(@types/react@19.2.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(search-insights@2.17.3) + '@rspress/core': 2.0.0-rc.1(@types/react@19.2.6) transitivePeerDependencies: - '@algolia/client-search' - '@types/react' @@ -10728,13 +12285,13 @@ snapshots: - react-dom - search-insights - '@rspress/plugin-client-redirects@2.0.0-rc.1(@rspress/core@2.0.0-rc.1(@types/react@19.1.15))': + '@rspress/plugin-client-redirects@2.0.0-rc.1(@rspress/core@2.0.0-rc.1(@types/react@19.2.6))': dependencies: - '@rspress/core': 2.0.0-rc.1(@types/react@19.1.15) + '@rspress/core': 2.0.0-rc.1(@types/react@19.2.6) - '@rspress/plugin-llms@2.0.0-rc.1(@rspress/core@2.0.0-rc.1(@types/react@19.1.15))': + '@rspress/plugin-llms@2.0.0-rc.1(@rspress/core@2.0.0-rc.1(@types/react@19.2.6))': dependencies: - '@rspress/core': 2.0.0-rc.1(@types/react@19.1.15) + '@rspress/core': 2.0.0-rc.1(@types/react@19.2.6) remark-mdx: 3.1.1 remark-parse: 11.0.0 remark-stringify: 11.0.0 @@ -10743,14 +12300,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@rspress/plugin-rss@2.0.0-rc.1(@rspress/core@2.0.0-rc.1(@types/react@19.1.15))': + '@rspress/plugin-rss@2.0.0-rc.1(@rspress/core@2.0.0-rc.1(@types/react@19.2.6))': dependencies: - '@rspress/core': 2.0.0-rc.1(@types/react@19.1.15) + '@rspress/core': 2.0.0-rc.1(@types/react@19.2.6) feed: 4.2.2 - '@rspress/plugin-sitemap@2.0.0-rc.1(@rspress/core@2.0.0-rc.1(@types/react@19.1.15))': + '@rspress/plugin-sitemap@2.0.0-rc.1(@rspress/core@2.0.0-rc.1(@types/react@19.2.6))': dependencies: - '@rspress/core': 2.0.0-rc.1(@types/react@19.1.15) + '@rspress/core': 2.0.0-rc.1(@types/react@19.2.6) '@rspress/runtime@2.0.0-rc.1': dependencies: @@ -10763,14 +12320,14 @@ snapshots: '@rspress/shared@2.0.0-rc.1': dependencies: '@rsbuild/core': 1.6.7 - '@shikijs/rehype': 3.13.0 + '@shikijs/rehype': 3.15.0 gray-matter: 4.0.3 lodash-es: 4.17.21 unified: 11.0.5 - '@rstack-dev/doc-ui@1.12.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + '@rstack-dev/doc-ui@1.12.0(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: - framer-motion: 12.23.24(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + framer-motion: 12.23.24(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) transitivePeerDependencies: - '@emotion/is-prop-valid' - react @@ -10792,7 +12349,7 @@ snapshots: fs-extra: 11.3.2 import-lazy: 4.0.0 jju: 1.4.0 - resolve: 1.22.10 + resolve: 1.22.11 semver: 7.5.4 optionalDependencies: '@types/node': 20.19.25 @@ -10803,7 +12360,7 @@ snapshots: '@rushstack/rig-package@0.6.0': dependencies: - resolve: 1.22.10 + resolve: 1.22.11 strip-json-comments: 3.1.1 '@rushstack/terminal@0.19.3(@types/node@20.19.25)': @@ -10828,13 +12385,6 @@ snapshots: domhandler: 5.0.3 selderee: 0.11.0 - '@shikijs/core@3.13.0': - dependencies: - '@shikijs/types': 3.13.0 - '@shikijs/vscode-textmate': 10.0.2 - '@types/hast': 3.0.4 - hast-util-to-html: 9.0.5 - '@shikijs/core@3.15.0': dependencies: '@shikijs/types': 3.15.0 @@ -10842,44 +12392,39 @@ snapshots: '@types/hast': 3.0.4 hast-util-to-html: 9.0.5 - '@shikijs/engine-javascript@3.13.0': + '@shikijs/engine-javascript@3.15.0': dependencies: - '@shikijs/types': 3.13.0 + '@shikijs/types': 3.15.0 '@shikijs/vscode-textmate': 10.0.2 oniguruma-to-es: 4.3.3 - '@shikijs/engine-oniguruma@3.13.0': + '@shikijs/engine-oniguruma@3.15.0': dependencies: - '@shikijs/types': 3.13.0 + '@shikijs/types': 3.15.0 '@shikijs/vscode-textmate': 10.0.2 - '@shikijs/langs@3.13.0': + '@shikijs/langs@3.15.0': dependencies: - '@shikijs/types': 3.13.0 + '@shikijs/types': 3.15.0 - '@shikijs/rehype@3.13.0': + '@shikijs/rehype@3.15.0': dependencies: - '@shikijs/types': 3.13.0 + '@shikijs/types': 3.15.0 '@types/hast': 3.0.4 hast-util-to-string: 3.0.1 - shiki: 3.13.0 + shiki: 3.15.0 unified: 11.0.5 unist-util-visit: 5.0.0 - '@shikijs/themes@3.13.0': + '@shikijs/themes@3.15.0': dependencies: - '@shikijs/types': 3.13.0 + '@shikijs/types': 3.15.0 '@shikijs/transformers@3.15.0': dependencies: '@shikijs/core': 3.15.0 '@shikijs/types': 3.15.0 - '@shikijs/types@3.13.0': - dependencies: - '@shikijs/vscode-textmate': 10.0.2 - '@types/hast': 3.0.4 - '@shikijs/types@3.15.0': dependencies: '@shikijs/vscode-textmate': 10.0.2 @@ -10887,10 +12432,20 @@ snapshots: '@shikijs/vscode-textmate@10.0.2': {} + '@sideway/address@4.1.5': + dependencies: + '@hapi/hoek': 9.3.0 + + '@sideway/formula@3.0.1': {} + + '@sideway/pinpoint@2.0.0': {} + '@sinclair/typebox@0.27.8': {} '@sindresorhus/merge-streams@2.3.0': {} + '@socket.io/component-emitter@3.1.2': {} + '@standard-schema/spec@1.0.0': {} '@swc/counter@0.1.3': {} @@ -10909,7 +12464,7 @@ snapshots: '@taplo/cli@0.7.0': {} - '@tsconfig/node10@1.0.11': {} + '@tsconfig/node10@1.0.12': {} '@tsconfig/node12@1.0.11': {} @@ -10940,10 +12495,6 @@ snapshots: dependencies: '@types/node': 20.19.25 - '@types/chai@5.2.2': - dependencies: - '@types/deep-eql': 4.0.2 - '@types/chai@5.2.3': dependencies: '@types/deep-eql': 4.0.2 @@ -10951,13 +12502,23 @@ snapshots: '@types/connect-history-api-fallback@1.5.4': dependencies: - '@types/express-serve-static-core': 4.19.6 + '@types/express-serve-static-core': 5.1.0 + '@types/node': 20.19.25 + + '@types/connect@3.4.35': + dependencies: '@types/node': 20.19.25 '@types/connect@3.4.38': dependencies: '@types/node': 20.19.25 + '@types/cookie@0.4.1': {} + + '@types/cors@2.8.19': + dependencies: + '@types/node': 20.19.25 + '@types/d3-array@3.2.2': {} '@types/d3-axis@3.0.6': @@ -11095,21 +12656,30 @@ snapshots: dependencies: '@types/estree': 1.0.8 + '@types/estree@1.0.0': {} + '@types/estree@1.0.8': {} - '@types/express-serve-static-core@4.19.6': + '@types/express-serve-static-core@4.19.7': + dependencies: + '@types/node': 20.19.25 + '@types/qs': 6.14.0 + '@types/range-parser': 1.2.7 + '@types/send': 1.2.1 + + '@types/express-serve-static-core@5.1.0': dependencies: '@types/node': 20.19.25 '@types/qs': 6.14.0 '@types/range-parser': 1.2.7 - '@types/send': 0.17.5 + '@types/send': 1.2.1 - '@types/express@4.17.23': + '@types/express@4.17.25': dependencies: '@types/body-parser': 1.19.6 - '@types/express-serve-static-core': 4.19.6 + '@types/express-serve-static-core': 4.19.7 '@types/qs': 6.14.0 - '@types/serve-static': 1.15.8 + '@types/serve-static': 1.15.10 '@types/fs-extra@11.0.4': dependencies: @@ -11130,7 +12700,7 @@ snapshots: '@types/http-errors@2.0.5': {} - '@types/http-proxy@1.17.16': + '@types/http-proxy@1.17.17': dependencies: '@types/node': 20.19.25 @@ -11180,36 +12750,50 @@ snapshots: dependencies: undici-types: 6.21.0 + '@types/parse-json@4.0.2': {} + + '@types/prop-types@15.7.15': {} + '@types/qs@6.14.0': {} '@types/range-parser@1.2.7': {} - '@types/react-dom@19.1.9(@types/react@19.1.15)': + '@types/react-dom@19.2.3(@types/react@19.2.6)': + dependencies: + '@types/react': 19.2.6 + + '@types/react-transition-group@4.4.12(@types/react@19.2.6)': dependencies: - '@types/react': 19.1.15 + '@types/react': 19.2.6 - '@types/react@19.1.15': + '@types/react@19.2.6': dependencies: - csstype: 3.1.3 + csstype: 3.2.3 '@types/retry@0.12.2': {} + '@types/semver@7.5.8': {} + '@types/semver@7.7.1': {} - '@types/send@0.17.5': + '@types/send@0.17.6': dependencies: '@types/mime': 1.3.5 '@types/node': 20.19.25 + '@types/send@1.2.1': + dependencies: + '@types/node': 20.19.25 + '@types/serve-index@1.9.4': dependencies: - '@types/express': 4.17.23 + '@types/express': 4.17.25 - '@types/serve-static@1.15.8': + '@types/serve-static@1.15.10': dependencies: '@types/http-errors': 2.0.5 '@types/node': 20.19.25 - '@types/send': 0.17.5 + '@types/send': 0.17.6 '@types/sockjs@0.3.36': dependencies: @@ -11217,6 +12801,10 @@ snapshots: '@types/stack-utils@2.0.3': {} + '@types/tapable@2.2.2': + dependencies: + tapable: 2.3.0 + '@types/tough-cookie@4.0.5': {} '@types/trusted-types@2.0.7': @@ -11234,8 +12822,19 @@ snapshots: '@types/webpack-bundle-analyzer@4.7.0': dependencies: '@types/node': 20.19.25 - tapable: 2.2.3 - webpack: 5.99.9 + tapable: 2.3.0 + webpack: 5.102.1(webpack-cli@5.1.4) + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + - webpack-cli + + '@types/webpack@5.28.0(webpack-cli@5.1.4)': + dependencies: + '@types/node': 20.19.25 + tapable: 2.3.0 + webpack: 5.102.1(webpack-cli@5.1.4) transitivePeerDependencies: - '@swc/core' - esbuild @@ -11248,7 +12847,7 @@ snapshots: '@types/yargs-parser@21.0.3': {} - '@types/yargs@17.0.33': + '@types/yargs@17.0.35': dependencies: '@types/yargs-parser': 21.0.3 @@ -11261,6 +12860,8 @@ snapshots: '@vercel/ncc@0.38.4': {} + '@vercel/oidc@3.0.5': {} + '@vitest/expect@3.2.4': dependencies: '@types/chai': 5.2.3 @@ -11269,13 +12870,13 @@ snapshots: chai: 5.3.3 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(vite@7.1.7(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))': + '@vitest/mocker@3.2.4(vite@7.2.4(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 - magic-string: 0.30.19 + magic-string: 0.30.21 optionalDependencies: - vite: 7.1.7(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.2.4(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) '@vitest/pretty-format@3.2.4': dependencies: @@ -11290,7 +12891,7 @@ snapshots: '@vitest/snapshot@3.2.4': dependencies: '@vitest/pretty-format': 3.2.4 - magic-string: 0.30.19 + magic-string: 0.30.21 pathe: 2.0.3 '@vitest/spy@3.2.4': @@ -11347,7 +12948,7 @@ snapshots: '@vue/reactivity': 3.5.24 '@vue/runtime-core': 3.5.24 '@vue/shared': 3.5.24 - csstype: 3.1.3 + csstype: 3.2.3 '@vue/server-renderer@3.5.24(vue@3.5.24(typescript@5.9.3))': dependencies: @@ -11439,13 +13040,39 @@ snapshots: enhanced-resolve: 5.18.3 parse5: 7.3.0 pug: 3.0.3 - webpack: 5.102.1 + webpack: 5.102.1(webpack-cli@5.1.4) webpack-merge: 6.0.1 + '@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4)(webpack@5.102.1)': + dependencies: + webpack: 5.102.1(webpack-cli@5.1.4) + webpack-cli: 5.1.4(webpack-dev-server@5.2.2)(webpack@5.102.1) + + '@webpack-cli/info@2.0.2(webpack-cli@5.1.4)(webpack@5.102.1)': + dependencies: + webpack: 5.102.1(webpack-cli@5.1.4) + webpack-cli: 5.1.4(webpack-dev-server@5.2.2)(webpack@5.102.1) + + '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4)(webpack-dev-server@5.0.4)(webpack@5.102.1)': + dependencies: + webpack: 5.102.1(webpack-cli@5.1.4) + webpack-cli: 5.1.4(webpack-dev-server@5.0.4)(webpack@5.102.1) + optionalDependencies: + webpack-dev-server: 5.0.4(webpack-cli@5.1.4)(webpack@5.102.1) + + '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4)(webpack-dev-server@5.2.2)(webpack@5.102.1)': + dependencies: + webpack: 5.102.1(webpack-cli@5.1.4) + webpack-cli: 5.1.4(webpack-dev-server@5.2.2)(webpack@5.102.1) + optionalDependencies: + webpack-dev-server: 5.2.2(webpack-cli@5.1.4)(webpack@5.102.1) + '@xtuc/ieee754@1.2.0': {} '@xtuc/long@4.2.2': {} + '@zeit/schemas@2.36.0': {} + abort-controller@3.0.0: dependencies: event-target-shim: 5.0.1 @@ -11455,6 +13082,10 @@ snapshots: mime-types: 2.1.35 negotiator: 0.6.3 + acorn-import-assertions@1.9.0(acorn@8.15.0): + dependencies: + acorn: 8.15.0 + acorn-import-phases@1.0.4(acorn@8.15.0): dependencies: acorn: 8.15.0 @@ -11463,6 +13094,8 @@ snapshots: dependencies: acorn: 8.15.0 + acorn-walk@8.3.2: {} + acorn-walk@8.3.4: dependencies: acorn: 8.15.0 @@ -11471,13 +13104,15 @@ snapshots: acorn@8.15.0: {} + adm-zip@0.5.16: {} + agent-base@7.1.4: {} - ai@5.0.59(zod@4.1.12): + ai@5.0.98(zod@4.1.12): dependencies: - '@ai-sdk/gateway': 1.0.32(zod@4.1.12) + '@ai-sdk/gateway': 2.0.13(zod@4.1.12) '@ai-sdk/provider': 2.0.0 - '@ai-sdk/provider-utils': 3.0.10(zod@4.1.12) + '@ai-sdk/provider-utils': 3.0.17(zod@4.1.12) '@opentelemetry/api': 1.9.0 zod: 4.1.12 @@ -11530,33 +13165,45 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - algoliasearch@5.39.0: - dependencies: - '@algolia/abtesting': 1.5.0 - '@algolia/client-abtesting': 5.39.0 - '@algolia/client-analytics': 5.39.0 - '@algolia/client-common': 5.39.0 - '@algolia/client-insights': 5.39.0 - '@algolia/client-personalization': 5.39.0 - '@algolia/client-query-suggestions': 5.39.0 - '@algolia/client-search': 5.39.0 - '@algolia/ingestion': 1.39.0 - '@algolia/monitoring': 1.39.0 - '@algolia/recommend': 5.39.0 - '@algolia/requester-browser-xhr': 5.39.0 - '@algolia/requester-fetch': 5.39.0 - '@algolia/requester-node-http': 5.39.0 - - ansi-escapes@7.1.1: + algoliasearch@5.44.0: + dependencies: + '@algolia/abtesting': 1.10.0 + '@algolia/client-abtesting': 5.44.0 + '@algolia/client-analytics': 5.44.0 + '@algolia/client-common': 5.44.0 + '@algolia/client-insights': 5.44.0 + '@algolia/client-personalization': 5.44.0 + '@algolia/client-query-suggestions': 5.44.0 + '@algolia/client-search': 5.44.0 + '@algolia/ingestion': 1.44.0 + '@algolia/monitoring': 1.44.0 + '@algolia/recommend': 5.44.0 + '@algolia/requester-browser-xhr': 5.44.0 + '@algolia/requester-fetch': 5.44.0 + '@algolia/requester-node-http': 5.44.0 + + ansi-align@3.0.1: + dependencies: + string-width: 4.2.3 + + ansi-colors@4.1.3: {} + + ansi-escapes@7.2.0: dependencies: environment: 1.1.0 ansi-html-community@0.0.8: {} + ansi-html@0.0.9: {} + ansi-regex@5.0.1: {} ansi-regex@6.2.2: {} + ansi-styles@3.2.1: + dependencies: + color-convert: 1.9.3 + ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 @@ -11574,6 +13221,8 @@ snapshots: normalize-path: 3.0.0 picomatch: 2.3.1 + arch@2.2.0: {} + arg@4.1.3: {} arg@5.0.2: {} @@ -11584,6 +13233,8 @@ snapshots: argparse@2.0.1: {} + aria-query@5.3.2: {} + array-flatten@1.1.1: {} array-timsort@1.0.3: {} @@ -11612,12 +13263,10 @@ snapshots: astring@1.9.0: {} - async-function@1.0.0: {} - - async-generator-function@1.0.0: {} - asynckit@0.4.0: {} + at-least-node@1.0.0: {} + available-typed-arrays@1.0.7: dependencies: possible-typed-array-names: 1.1.0 @@ -11625,20 +13274,22 @@ snapshots: axios@1.13.2: dependencies: follow-redirects: 1.15.11 - form-data: 4.0.4 + form-data: 4.0.5 proxy-from-env: 1.1.0 transitivePeerDependencies: - debug + axobject-query@4.1.0: {} + babel-loader@10.0.0(@babel/core@7.28.5)(webpack@5.102.1): dependencies: '@babel/core': 7.28.5 find-up: 5.0.0 - webpack: 5.102.1 + webpack: 5.102.1(webpack-cli@5.1.4) babel-plugin-import@1.13.8: dependencies: - '@babel/helper-module-imports': 7.27.1 + '@babel/helper-module-imports': 7.27.1(supports-color@5.5.0) transitivePeerDependencies: - supports-color @@ -11652,24 +13303,42 @@ snapshots: transitivePeerDependencies: - supports-color - babel-preset-current-node-syntax@1.2.0(@babel/core@7.28.4): - dependencies: - '@babel/core': 7.28.4 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.28.4) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.28.4) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.28.4) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.28.4) - '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.28.4) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.28.4) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.28.4) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.28.4) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.28.4) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.28.4) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.28.4) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.28.4) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.28.4) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.28.4) + babel-plugin-macros@3.1.0: + dependencies: + '@babel/runtime': 7.28.4 + cosmiconfig: 7.1.0 + resolve: 1.22.11 + + babel-plugin-styled-components@2.1.4(@babel/core@7.28.5)(styled-components@5.3.11(@babel/core@7.28.5)(react-dom@19.2.0(react@19.2.0))(react-is@19.2.0)(react@19.2.0))(supports-color@5.5.0): + dependencies: + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-module-imports': 7.27.1(supports-color@5.5.0) + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.5) + lodash: 4.17.21 + picomatch: 2.3.1 + styled-components: 5.3.11(@babel/core@7.28.5)(react-dom@19.2.0(react@19.2.0))(react-is@19.2.0)(react@19.2.0) + transitivePeerDependencies: + - '@babel/core' + - supports-color + + babel-preset-current-node-syntax@1.2.0(@babel/core@7.28.5): + dependencies: + '@babel/core': 7.28.5 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.28.5) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.28.5) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.28.5) + '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.28.5) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.28.5) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.28.5) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.28.5) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.28.5) babel-walk@3.0.0-canary-5: dependencies: @@ -11681,7 +13350,9 @@ snapshots: base64-js@1.5.1: {} - baseline-browser-mapping@2.8.9: {} + base64id@2.0.0: {} + + baseline-browser-mapping@2.8.30: {} batch@0.6.1: {} @@ -11695,6 +13366,23 @@ snapshots: bn.js@5.2.2: {} + body-parser@1.20.1: + 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.1 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + body-parser@1.20.3: dependencies: bytes: 3.1.2 @@ -11721,6 +13409,17 @@ snapshots: boolbase@1.0.0: {} + boxen@7.0.0: + dependencies: + ansi-align: 3.0.1 + camelcase: 7.0.1 + chalk: 5.6.2 + cli-boxes: 3.0.0 + string-width: 5.1.2 + type-fest: 2.19.0 + widest-line: 4.0.1 + wrap-ansi: 8.1.0 + brace-expansion@1.1.12: dependencies: balanced-match: 1.0.2 @@ -11738,7 +13437,7 @@ snapshots: browser-resolve@2.0.0: dependencies: - resolve: 1.22.10 + resolve: 1.22.11 browserify-aes@1.2.0: dependencies: @@ -11786,26 +13485,20 @@ snapshots: browserslist-load-config@1.0.1: {} - browserslist@4.26.2: - dependencies: - baseline-browser-mapping: 2.8.9 - caniuse-lite: 1.0.30001745 - electron-to-chromium: 1.5.227 - node-releases: 2.0.21 - update-browserslist-db: 1.1.3(browserslist@4.26.2) - - browserslist@4.26.3: + browserslist@4.28.0: dependencies: - baseline-browser-mapping: 2.8.9 - caniuse-lite: 1.0.30001751 - electron-to-chromium: 1.5.227 - node-releases: 2.0.21 - update-browserslist-db: 1.1.3(browserslist@4.26.3) + baseline-browser-mapping: 2.8.30 + caniuse-lite: 1.0.30001756 + electron-to-chromium: 1.5.259 + node-releases: 2.0.27 + update-browserslist-db: 1.1.4(browserslist@4.28.0) bser@2.1.1: dependencies: node-int64: 0.4.0 + btoa@1.2.1: {} + buffer-builder@0.2.0: {} buffer-from@1.1.2: {} @@ -11832,6 +13525,8 @@ snapshots: dependencies: run-applescript: 7.1.0 + bytes@3.0.0: {} + bytes@3.1.2: {} cac@6.7.14: {} @@ -11845,13 +13540,13 @@ snapshots: dependencies: call-bind-apply-helpers: 1.0.2 es-define-property: 1.0.1 - get-intrinsic: 1.3.1 + get-intrinsic: 1.3.0 set-function-length: 1.2.2 call-bound@1.0.4: dependencies: call-bind-apply-helpers: 1.0.2 - get-intrinsic: 1.3.1 + get-intrinsic: 1.3.0 callsites@3.1.0: {} @@ -11864,9 +13559,11 @@ snapshots: camelcase@5.3.1: {} - caniuse-lite@1.0.30001745: {} + camelcase@7.0.1: {} - caniuse-lite@1.0.30001751: {} + camelize@1.0.1: {} + + caniuse-lite@1.0.30001756: {} case-police@2.1.1: {} @@ -11880,15 +13577,32 @@ snapshots: loupe: 3.2.1 pathval: 2.0.1 + chalk-template@0.4.0: + dependencies: + chalk: 4.1.2 + chalk-template@1.1.2: dependencies: chalk: 5.6.2 + chalk@2.4.2: + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + chalk@3.0.0: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + chalk@4.1.2: dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 + chalk@5.0.1: {} + chalk@5.6.2: {} character-entities-html4@2.1.0: {} @@ -11903,7 +13617,7 @@ snapshots: character-reference-invalid@2.0.1: {} - chardet@2.1.0: {} + chardet@2.1.1: {} check-dependency-version-consistency@5.0.1: dependencies: @@ -11912,7 +13626,7 @@ snapshots: commander: 13.1.0 edit-json-file: 1.8.1 globby: 14.1.0 - js-yaml: 4.1.0 + js-yaml: 4.1.1 semver: 7.7.3 table: 6.9.0 type-fest: 4.41.0 @@ -11953,7 +13667,7 @@ snapshots: ci-info@3.9.0: {} - ci-info@4.3.0: {} + ci-info@4.3.1: {} cipher-base@1.0.7: dependencies: @@ -11970,6 +13684,8 @@ snapshots: parent-module: 2.0.0 resolve-from: 5.0.0 + cli-boxes@3.0.0: {} + cli-cursor@5.0.0: dependencies: restore-cursor: 5.1.0 @@ -11985,6 +13701,18 @@ snapshots: dependencies: typanion: 3.14.0 + clipboardy@3.0.0: + dependencies: + arch: 2.2.0 + execa: 5.1.1 + is-wsl: 2.2.0 + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + clone-deep@4.0.1: dependencies: is-plain-object: 2.0.4 @@ -11993,21 +13721,35 @@ snapshots: clsx@2.1.1: {} + code-red@1.0.4: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + '@types/estree': 1.0.8 + acorn: 8.15.0 + estree-walker: 3.0.3 + periscopic: 3.1.0 + coffee-loader@1.0.1(coffeescript@2.7.0)(webpack@5.102.1): dependencies: coffeescript: 2.7.0 loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.102.1 + webpack: 5.102.1(webpack-cli@5.1.4) coffeescript@2.7.0: {} collapse-white-space@2.1.0: {} + color-convert@1.9.3: + dependencies: + color-name: 1.1.3 + color-convert@2.0.1: dependencies: color-name: 1.1.4 + color-name@1.1.3: {} + color-name@1.1.4: {} colorette@2.0.20: {} @@ -12022,6 +13764,8 @@ snapshots: commander@10.0.1: {} + commander@11.1.0: {} + commander@13.1.0: {} commander@14.0.2: {} @@ -12067,12 +13811,33 @@ snapshots: readable-stream: 3.6.2 typedarray: 0.0.6 + concurrently@8.2.2: + dependencies: + chalk: 4.1.2 + date-fns: 2.30.0 + lodash: 4.17.21 + rxjs: 7.8.2 + shell-quote: 1.8.3 + spawn-command: 0.0.2 + supports-color: 8.1.1 + tree-kill: 1.2.2 + yargs: 17.7.2 + confbox@0.1.8: {} confbox@0.2.2: {} connect-history-api-fallback@2.0.0: {} + connect@3.7.0: + dependencies: + debug: 2.6.9 + finalhandler: 1.1.2 + parseurl: 1.3.3 + utils-merge: 1.0.1 + transitivePeerDependencies: + - supports-color + console-browserify@1.2.0: {} constantinople@4.0.1: @@ -12082,18 +13847,29 @@ snapshots: constants-browserify@1.0.0: {} + content-disposition@0.5.2: {} + content-disposition@0.5.4: dependencies: safe-buffer: 5.2.1 content-type@1.0.5: {} + convert-source-map@1.9.0: {} + convert-source-map@2.0.0: {} cookie-signature@1.0.6: {} + cookie@0.4.2: {} + cookie@0.7.1: {} + cookies@0.9.1: + dependencies: + depd: 2.0.0 + keygrip: 1.1.0 + copy-anything@2.0.6: dependencies: is-what: 3.14.1 @@ -12102,10 +13878,17 @@ snapshots: dependencies: toggle-selection: 1.0.6 + core-js-pure@3.47.0: {} + core-js@3.46.0: {} core-util-is@1.0.3: {} + cors@2.8.5: + dependencies: + object-assign: 4.1.1 + vary: 1.1.2 + cose-base@1.0.3: dependencies: layout-base: 1.0.2 @@ -12114,10 +13897,18 @@ snapshots: dependencies: layout-base: 2.0.1 + cosmiconfig@7.1.0: + dependencies: + '@types/parse-json': 4.0.2 + import-fresh: 3.3.1 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + cosmiconfig@8.3.6(typescript@5.9.3): dependencies: import-fresh: 3.3.1 - js-yaml: 4.1.0 + js-yaml: 4.1.1 parse-json: 5.2.0 path-type: 4.0.0 optionalDependencies: @@ -12127,7 +13918,7 @@ snapshots: dependencies: env-paths: 2.2.1 import-fresh: 3.3.1 - js-yaml: 4.1.0 + js-yaml: 4.1.1 parse-json: 5.2.0 optionalDependencies: typescript: 5.9.3 @@ -12158,6 +13949,10 @@ snapshots: create-rstack@1.7.8: {} + cron-parser@4.9.0: + dependencies: + luxon: 3.7.2 + cross-env@10.1.0: dependencies: '@epic-web/invariant': 1.0.0 @@ -12273,6 +14068,8 @@ snapshots: semver: 7.7.3 tinyglobby: 0.2.15 + css-color-keywords@1.0.0: {} + css-loader@7.1.2(@rspack/core@packages+rspack)(webpack@5.102.1): dependencies: icss-utils: 5.1.0(postcss@8.5.6) @@ -12282,10 +14079,10 @@ snapshots: postcss-modules-scope: 3.2.1(postcss@8.5.6) postcss-modules-values: 4.0.0(postcss@8.5.6) postcss-value-parser: 4.2.0 - semver: 7.7.2 + semver: 7.7.3 optionalDependencies: '@rspack/core': link:packages/rspack - webpack: 5.102.1 + webpack: 5.102.1(webpack-cli@5.1.4) css-select@4.3.0: dependencies: @@ -12295,6 +14092,17 @@ snapshots: domutils: 2.8.0 nth-check: 2.1.1 + css-to-react-native@3.2.0: + dependencies: + camelize: 1.0.1 + css-color-keywords: 1.0.0 + postcss-value-parser: 4.2.0 + + css-tree@2.3.1: + dependencies: + mdn-data: 2.0.30 + source-map-js: 1.2.1 + css-what@6.2.2: {} cssesc@3.0.0: {} @@ -12304,7 +14112,7 @@ snapshots: '@asamuzakjp/css-color': 3.2.0 rrweb-cssom: 0.8.0 - csstype@3.1.3: {} + csstype@3.2.3: {} cuint@0.2.2: {} @@ -12502,9 +14310,17 @@ snapshots: whatwg-mimetype: 4.0.0 whatwg-url: 14.2.0 + date-fns@2.30.0: + dependencies: + '@babel/runtime': 7.28.4 + date-fns@4.1.0: {} - dayjs@1.11.18: {} + date-format@4.0.14: {} + + dayjs@1.11.19: {} + + dayjs@1.11.6: {} debounce@1.2.1: {} @@ -12512,9 +14328,15 @@ snapshots: dependencies: ms: 2.0.0 - debug@4.4.3: + debug@4.3.7: + dependencies: + ms: 2.1.3 + + debug@4.4.3(supports-color@5.5.0): dependencies: ms: 2.1.3 + optionalDependencies: + supports-color: 5.5.0 decimal.js@10.6.0: {} @@ -12522,16 +14344,28 @@ snapshots: dependencies: character-entities: 2.0.2 + deep-eql@4.1.0: + dependencies: + type-detect: 4.1.0 + deep-eql@5.0.2: {} + deep-equal@1.0.1: {} + + deep-extend@0.6.0: {} + deepmerge@4.3.1: {} - default-browser-id@5.0.0: {} + default-browser-id@5.0.1: {} - default-browser@5.2.1: + default-browser@5.4.0: dependencies: bundle-name: 4.1.0 - default-browser-id: 5.0.0 + default-browser-id: 5.0.1 + + default-gateway@6.0.3: + dependencies: + execa: 5.1.1 define-data-property@1.1.4: dependencies: @@ -12539,6 +14373,8 @@ snapshots: es-errors: 1.3.0 gopd: 1.2.0 + define-lazy-prop@2.0.0: {} + define-lazy-prop@3.0.0: {} define-properties@1.2.1: @@ -12553,6 +14389,8 @@ snapshots: delayed-stream@1.0.0: {} + delegates@1.0.0: {} + depd@1.1.2: {} depd@2.0.0: {} @@ -12601,6 +14439,11 @@ snapshots: dependencies: utila: 0.4.0 + dom-helpers@5.2.1: + dependencies: + '@babel/runtime': 7.28.4 + csstype: 3.2.3 + dom-serializer@1.4.1: dependencies: domelementtype: 2.3.0 @@ -12627,7 +14470,7 @@ snapshots: dependencies: domelementtype: 2.3.0 - dompurify@3.2.7: + dompurify@3.3.0: optionalDependencies: '@types/trusted-types': 2.0.7 @@ -12668,7 +14511,7 @@ snapshots: ee-first@1.1.1: {} - electron-to-chromium@1.5.227: {} + electron-to-chromium@1.5.259: {} elliptic@6.6.1: dependencies: @@ -12684,7 +14527,7 @@ snapshots: optionalDependencies: node-addon-api: 7.1.1 - emoji-regex@10.5.0: {} + emoji-regex@10.6.0: {} emoji-regex@8.0.0: {} @@ -12696,10 +14539,34 @@ snapshots: encodeurl@2.0.0: {} + engine.io-parser@5.2.3: {} + + engine.io@6.5.5: + dependencies: + '@types/cookie': 0.4.1 + '@types/cors': 2.8.19 + '@types/node': 20.19.25 + accepts: 1.3.8 + base64id: 2.0.0 + cookie: 0.4.2 + cors: 2.8.5 + debug: 4.3.7 + engine.io-parser: 5.2.3 + ws: 8.17.1 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + enhanced-resolve@5.12.0: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.3.0 + enhanced-resolve@5.18.3: dependencies: graceful-fs: 4.2.11 - tapable: 2.2.3 + tapable: 2.3.0 entities@2.2.0: {} @@ -12711,6 +14578,10 @@ snapshots: env-paths@3.0.0: {} + envinfo@7.13.0: {} + + envinfo@7.20.0: {} + environment@1.1.0: {} errno@0.1.8: @@ -12739,7 +14610,7 @@ snapshots: es-set-tostringtag@2.1.0: dependencies: es-errors: 1.3.0 - get-intrinsic: 1.3.1 + get-intrinsic: 1.3.0 has-tostringtag: 1.0.2 hasown: 2.0.2 @@ -12775,34 +14646,34 @@ snapshots: esast-util-from-estree: 2.0.0 vfile-message: 4.0.3 - esbuild@0.25.10: + esbuild@0.25.12: optionalDependencies: - '@esbuild/aix-ppc64': 0.25.10 - '@esbuild/android-arm': 0.25.10 - '@esbuild/android-arm64': 0.25.10 - '@esbuild/android-x64': 0.25.10 - '@esbuild/darwin-arm64': 0.25.10 - '@esbuild/darwin-x64': 0.25.10 - '@esbuild/freebsd-arm64': 0.25.10 - '@esbuild/freebsd-x64': 0.25.10 - '@esbuild/linux-arm': 0.25.10 - '@esbuild/linux-arm64': 0.25.10 - '@esbuild/linux-ia32': 0.25.10 - '@esbuild/linux-loong64': 0.25.10 - '@esbuild/linux-mips64el': 0.25.10 - '@esbuild/linux-ppc64': 0.25.10 - '@esbuild/linux-riscv64': 0.25.10 - '@esbuild/linux-s390x': 0.25.10 - '@esbuild/linux-x64': 0.25.10 - '@esbuild/netbsd-arm64': 0.25.10 - '@esbuild/netbsd-x64': 0.25.10 - '@esbuild/openbsd-arm64': 0.25.10 - '@esbuild/openbsd-x64': 0.25.10 - '@esbuild/openharmony-arm64': 0.25.10 - '@esbuild/sunos-x64': 0.25.10 - '@esbuild/win32-arm64': 0.25.10 - '@esbuild/win32-ia32': 0.25.10 - '@esbuild/win32-x64': 0.25.10 + '@esbuild/aix-ppc64': 0.25.12 + '@esbuild/android-arm': 0.25.12 + '@esbuild/android-arm64': 0.25.12 + '@esbuild/android-x64': 0.25.12 + '@esbuild/darwin-arm64': 0.25.12 + '@esbuild/darwin-x64': 0.25.12 + '@esbuild/freebsd-arm64': 0.25.12 + '@esbuild/freebsd-x64': 0.25.12 + '@esbuild/linux-arm': 0.25.12 + '@esbuild/linux-arm64': 0.25.12 + '@esbuild/linux-ia32': 0.25.12 + '@esbuild/linux-loong64': 0.25.12 + '@esbuild/linux-mips64el': 0.25.12 + '@esbuild/linux-ppc64': 0.25.12 + '@esbuild/linux-riscv64': 0.25.12 + '@esbuild/linux-s390x': 0.25.12 + '@esbuild/linux-x64': 0.25.12 + '@esbuild/netbsd-arm64': 0.25.12 + '@esbuild/netbsd-x64': 0.25.12 + '@esbuild/openbsd-arm64': 0.25.12 + '@esbuild/openbsd-x64': 0.25.12 + '@esbuild/openharmony-arm64': 0.25.12 + '@esbuild/sunos-x64': 0.25.12 + '@esbuild/win32-arm64': 0.25.12 + '@esbuild/win32-ia32': 0.25.12 + '@esbuild/win32-x64': 0.25.12 escalade@3.2.0: {} @@ -12909,6 +14780,10 @@ snapshots: exit-hook@4.0.0: {} + expand-tilde@2.0.2: + dependencies: + homedir-polyfill: 1.0.3 + expect-type@1.2.2: {} expect@29.7.0: @@ -12922,7 +14797,7 @@ snapshots: exports-loader@5.0.0(webpack@5.102.1): dependencies: source-map: 0.6.1 - webpack: 5.102.1 + webpack: 5.102.1(webpack-cli@5.1.4) express@4.21.2: dependencies: @@ -12960,7 +14835,7 @@ snapshots: transitivePeerDependencies: - supports-color - exsolve@1.0.7: {} + exsolve@1.0.8: {} ext@1.7.0: dependencies: @@ -12990,6 +14865,8 @@ snapshots: fast-uri@3.1.0: {} + fastest-levenshtein@1.0.16: {} + fastq@1.19.1: dependencies: reusify: 1.1.0 @@ -13014,7 +14891,7 @@ snapshots: dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.102.1 + webpack: 5.102.1(webpack-cli@5.1.4) filename-reserved-regex@2.0.0: {} @@ -13024,10 +14901,24 @@ snapshots: strip-outer: 1.0.1 trim-repeated: 1.0.0 + filesize@10.1.6: {} + fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 + finalhandler@1.1.2: + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.3.0 + parseurl: 1.3.3 + statuses: 1.5.0 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + finalhandler@1.3.1: dependencies: debug: 2.6.9 @@ -13040,6 +14931,16 @@ snapshots: transitivePeerDependencies: - supports-color + find-file-up@2.0.1: + dependencies: + resolve-dir: 1.0.1 + + find-pkg@2.0.0: + dependencies: + find-file-up: 2.0.1 + + find-root@1.1.0: {} + find-up@4.1.0: dependencies: locate-path: 5.0.0 @@ -13093,11 +14994,11 @@ snapshots: node-abort-controller: 3.1.1 schema-utils: 3.3.0 semver: 7.7.3 - tapable: 2.2.3 + tapable: 2.3.0 typescript: 5.9.3 - webpack: 5.102.1 + webpack: 5.102.1(webpack-cli@5.1.4) - form-data@4.0.4: + form-data@4.0.5: dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 @@ -13107,14 +15008,15 @@ snapshots: forwarded@0.2.0: {} - framer-motion@12.23.24(react-dom@19.1.1(react@19.1.1))(react@19.1.1): + framer-motion@12.23.24(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0): dependencies: motion-dom: 12.23.23 motion-utils: 12.23.6 tslib: 2.8.1 optionalDependencies: - react: 19.1.1 - react-dom: 19.1.1(react@19.1.1) + '@emotion/is-prop-valid': 1.4.0 + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) fresh@0.5.2: {} @@ -13130,6 +15032,19 @@ snapshots: jsonfile: 6.2.0 universalify: 2.0.1 + fs-extra@8.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + + fs-extra@9.1.0: + dependencies: + at-least-node: 1.0.0 + graceful-fs: 4.2.11 + jsonfile: 6.2.0 + universalify: 2.0.1 + fs-monkey@1.1.0: {} fs.realpath@1.0.0: {} @@ -13142,24 +15057,23 @@ snapshots: function-bind@1.1.2: {} - generator-function@2.0.0: {} + generator-function@2.0.1: {} gensequence@8.0.8: {} gensync@1.0.0-beta.2: {} + get-caller-file@2.0.5: {} + get-east-asian-width@1.4.0: {} - get-intrinsic@1.3.1: + get-intrinsic@1.3.0: dependencies: - async-function: 1.0.0 - async-generator-function: 1.0.0 call-bind-apply-helpers: 1.0.2 es-define-property: 1.0.1 es-errors: 1.3.0 es-object-atoms: 1.1.1 function-bind: 1.1.2 - generator-function: 2.0.0 get-proto: 1.0.1 gopd: 1.2.0 has-symbols: 1.1.0 @@ -13168,6 +15082,8 @@ snapshots: get-package-type@0.1.0: {} + get-port@5.1.1: {} + get-proto@1.0.1: dependencies: dunder-proto: 1.0.1 @@ -13175,7 +15091,7 @@ snapshots: get-stream@6.0.1: {} - get-tsconfig@4.10.1: + get-tsconfig@4.13.0: dependencies: resolve-pkg-maps: 1.0.0 @@ -13189,21 +15105,12 @@ snapshots: dependencies: is-glob: 4.0.3 - glob-to-regex.js@1.0.1(tslib@2.8.1): + glob-to-regex.js@1.2.0(tslib@2.8.1): dependencies: tslib: 2.8.1 glob-to-regexp@0.4.1: {} - glob@10.4.5: - dependencies: - foreground-child: 3.3.1 - jackspeak: 3.4.3 - minimatch: 9.0.5 - minipass: 7.1.2 - package-json-from-dist: 1.0.1 - path-scurry: 1.11.1 - glob@10.5.0: dependencies: foreground-child: 3.3.1 @@ -13235,6 +15142,20 @@ snapshots: dependencies: ini: 4.1.1 + global-modules@1.0.0: + dependencies: + global-prefix: 1.0.2 + is-windows: 1.0.2 + resolve-dir: 1.0.1 + + global-prefix@1.0.2: + dependencies: + expand-tilde: 2.0.2 + homedir-polyfill: 1.0.3 + ini: 1.3.8 + is-windows: 1.0.2 + which: 1.3.1 + globals@15.15.0: {} globby@14.1.0: @@ -13252,7 +15173,7 @@ snapshots: gray-matter@4.0.3: dependencies: - js-yaml: 3.14.1 + js-yaml: 3.14.2 kind-of: 6.0.3 section-matter: 1.0.0 strip-bom-string: 1.0.0 @@ -13265,6 +15186,8 @@ snapshots: handle-thing@2.0.1: {} + has-flag@3.0.0: {} + has-flag@4.0.0: {} has-property-descriptors@1.0.2: @@ -13354,7 +15277,7 @@ snapshots: mdast-util-mdxjs-esm: 2.0.1 property-information: 7.1.0 space-separated-tokens: 2.0.2 - style-to-js: 1.1.17 + style-to-js: 1.1.21 unist-util-position: 5.0.0 zwitch: 2.0.4 transitivePeerDependencies: @@ -13388,7 +15311,7 @@ snapshots: mdast-util-mdxjs-esm: 2.0.1 property-information: 7.1.0 space-separated-tokens: 2.0.2 - style-to-js: 1.1.17 + style-to-js: 1.1.21 unist-util-position: 5.0.0 vfile-message: 4.0.3 transitivePeerDependencies: @@ -13424,12 +15347,29 @@ snapshots: heading-case@1.0.3: {} + history@4.10.1: + dependencies: + '@babel/runtime': 7.28.4 + loose-envify: 1.4.0 + resolve-pathname: 3.0.0 + tiny-invariant: 1.3.3 + tiny-warning: 1.0.3 + value-equal: 1.0.1 + hmac-drbg@1.0.1: dependencies: hash.js: 1.1.7 minimalistic-assert: 1.0.1 minimalistic-crypto-utils: 1.0.1 + hoist-non-react-statics@3.3.2: + dependencies: + react-is: 16.13.1 + + homedir-polyfill@1.0.3: + dependencies: + parse-passwd: 1.0.0 + hookable@5.5.3: {} hpack.js@2.1.6: @@ -13451,7 +15391,7 @@ snapshots: dependencies: html-minifier-terser: 7.2.0 parse5: 7.3.0 - webpack: 5.102.1 + webpack: 5.102.1(webpack-cli@5.1.4) html-minifier-terser@6.1.0: dependencies: @@ -13492,7 +15432,7 @@ snapshots: tapable: 2.3.0 optionalDependencies: '@rspack/core': link:packages/rspack - webpack: 5.102.1 + webpack: 5.102.1(webpack-cli@5.1.4) htmlparser2@6.1.0: dependencies: @@ -13508,6 +15448,11 @@ snapshots: domutils: 3.2.2 entities: 4.5.0 + http-assert@1.5.0: + dependencies: + deep-equal: 1.0.1 + http-errors: 1.8.1 + http-deceiver@1.2.7: {} http-errors@1.6.3: @@ -13517,6 +15462,14 @@ snapshots: setprototypeof: 1.1.0 statuses: 1.5.0 + http-errors@1.8.1: + dependencies: + depd: 1.1.2 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 1.5.0 + toidentifier: 1.0.1 + http-errors@2.0.0: dependencies: depd: 2.0.0 @@ -13525,24 +15478,32 @@ snapshots: statuses: 2.0.1 toidentifier: 1.0.1 + http-errors@2.0.1: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.2 + toidentifier: 1.0.1 + http-parser-js@0.5.10: {} http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.4 - debug: 4.4.3 + debug: 4.4.3(supports-color@5.5.0) transitivePeerDependencies: - supports-color - http-proxy-middleware@2.0.9(@types/express@4.17.23): + http-proxy-middleware@2.0.9(@types/express@4.17.25): dependencies: - '@types/http-proxy': 1.17.16 + '@types/http-proxy': 1.17.17 http-proxy: 1.18.1 is-glob: 4.0.3 is-plain-obj: 3.0.0 micromatch: 4.0.8 optionalDependencies: - '@types/express': 4.17.23 + '@types/express': 4.17.25 transitivePeerDependencies: - debug @@ -13559,7 +15520,7 @@ snapshots: https-proxy-agent@7.0.6: dependencies: agent-base: 7.1.4 - debug: 4.4.3 + debug: 4.4.3(supports-color@5.5.0) transitivePeerDependencies: - supports-color @@ -13592,7 +15553,7 @@ snapshots: image-size@0.5.5: optional: true - immutable@5.1.3: {} + immutable@5.1.4: {} import-fresh@3.3.1: dependencies: @@ -13601,6 +15562,11 @@ snapshots: import-lazy@4.0.0: {} + import-local@3.2.0: + dependencies: + pkg-dir: 4.2.0 + resolve-cwd: 3.0.0 + import-meta-resolve@4.2.0: {} imurmurhash@0.1.4: {} @@ -13614,14 +15580,20 @@ snapshots: inherits@2.0.4: {} + ini@1.3.8: {} + ini@4.1.1: {} - inline-style-parser@0.2.4: {} + inline-style-parser@0.2.7: {} internmap@1.0.1: {} internmap@2.0.3: {} + interpret@3.1.1: {} + + ip@1.1.9: {} + ipaddr.js@1.9.1: {} ipaddr.js@2.2.0: {} @@ -13650,7 +15622,7 @@ snapshots: is-ci@4.1.0: dependencies: - ci-info: 4.3.0 + ci-info: 4.3.1 is-core-module@2.16.1: dependencies: @@ -13658,6 +15630,8 @@ snapshots: is-decimal@2.0.1: {} + is-docker@2.2.1: {} + is-docker@3.0.0: {} is-expression@4.0.0: @@ -13675,9 +15649,10 @@ snapshots: dependencies: get-east-asian-width: 1.4.0 - is-generator-function@1.1.0: + is-generator-function@1.1.2: dependencies: call-bound: 1.0.4 + generator-function: 2.0.1 get-proto: 1.0.1 has-tostringtag: 1.0.2 safe-regex-test: 1.1.0 @@ -13709,12 +15684,18 @@ snapshots: dependencies: isobject: 3.0.1 + is-port-reachable@4.0.0: {} + is-potential-custom-element-name@1.0.1: {} is-primitive@3.0.1: {} is-promise@2.2.2: {} + is-reference@3.0.3: + dependencies: + '@types/estree': 1.0.8 + is-regex@1.2.1: dependencies: call-bound: 1.0.4 @@ -13730,10 +15711,18 @@ snapshots: is-what@3.14.1: {} + is-windows@1.0.2: {} + + is-wsl@2.2.0: + dependencies: + is-docker: 2.2.1 + is-wsl@3.1.0: dependencies: is-inside-container: 1.0.0 + isarray@0.0.1: {} + isarray@1.0.0: {} isarray@2.0.5: {} @@ -13744,6 +15733,10 @@ snapshots: isomorphic-timers-promises@1.0.1: {} + isomorphic-ws@5.0.0(ws@8.18.0): + dependencies: + ws: 8.18.0 + istanbul-lib-coverage@3.2.2: {} istanbul-lib-instrument@5.2.1: @@ -13818,15 +15811,15 @@ snapshots: jest-snapshot@29.7.0: dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/generator': 7.28.5 - '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.5) '@babel/types': 7.28.5 '@jest/expect-utils': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - babel-preset-current-node-syntax: 1.2.0(@babel/core@7.28.4) + babel-preset-current-node-syntax: 1.2.0(@babel/core@7.28.5) chalk: 4.1.2 expect: 29.7.0 graceful-fs: 4.2.11 @@ -13837,7 +15830,7 @@ snapshots: jest-util: 29.7.0 natural-compare: 1.4.0 pretty-format: 29.7.0 - semver: 7.7.2 + semver: 7.7.3 transitivePeerDependencies: - supports-color @@ -13865,24 +15858,32 @@ snapshots: jiti@1.21.7: {} - jiti@2.6.0: {} + jiti@2.4.2: {} jiti@2.6.1: {} jju@1.4.0: {} + joi@17.13.3: + dependencies: + '@hapi/hoek': 9.3.0 + '@hapi/topo': 5.1.0 + '@sideway/address': 4.1.5 + '@sideway/formula': 3.0.1 + '@sideway/pinpoint': 2.0.0 + js-stringify@1.0.2: {} js-tokens@4.0.0: {} js-tokens@9.0.1: {} - js-yaml@3.14.1: + js-yaml@3.14.2: dependencies: argparse: 1.0.10 esprima: 4.0.1 - js-yaml@4.1.0: + js-yaml@4.1.1: dependencies: argparse: 2.0.1 @@ -13925,12 +15926,18 @@ snapshots: json-schema@0.4.0: {} + json-stream-stringify@3.0.1: {} + json5@1.0.2: dependencies: minimist: 1.2.8 json5@2.2.3: {} + jsonfile@4.0.0: + optionalDependencies: + graceful-fs: 4.2.11 + jsonfile@6.2.0: dependencies: universalify: 2.0.1 @@ -13942,14 +15949,41 @@ snapshots: is-promise: 2.2.2 promise: 7.3.1 - katex@0.16.22: + katex@0.16.25: dependencies: commander: 8.3.0 + keygrip@1.1.0: + dependencies: + tsscmp: 1.0.6 + khroma@2.1.0: {} kind-of@6.0.3: {} + koa-compose@4.1.0: {} + + koa@3.0.3: + dependencies: + accepts: 1.3.8 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookies: 0.9.1 + delegates: 1.0.0 + destroy: 1.2.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + fresh: 0.5.2 + http-assert: 1.5.0 + http-errors: 2.0.1 + koa-compose: 4.1.0 + mime-types: 3.0.2 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.2 + type-is: 2.0.1 + vary: 1.1.2 + kolorist@1.8.0: {} langium@3.3.1: @@ -13960,7 +15994,7 @@ snapshots: vscode-languageserver-textdocument: 1.0.12 vscode-uri: 3.0.8 - launch-editor@2.11.1: + launch-editor@2.12.0: dependencies: picocolors: 1.1.1 shell-quote: 1.8.3 @@ -13976,7 +16010,7 @@ snapshots: less: 4.4.2 optionalDependencies: '@rspack/core': link:packages/rspack - webpack: 5.102.1 + webpack: 5.102.1(webpack-cli@5.1.4) less@4.4.2: dependencies: @@ -13996,6 +16030,8 @@ snapshots: lines-and-columns@1.2.4: {} + lines-and-columns@2.0.4: {} + lint-staged@16.2.7: dependencies: commander: 14.0.2 @@ -14015,7 +16051,7 @@ snapshots: rfdc: 1.4.1 wrap-ansi: 9.0.2 - loader-runner@4.3.0: {} + loader-runner@4.3.1: {} loader-utils@1.4.2: dependencies: @@ -14035,6 +16071,8 @@ snapshots: pkg-types: 2.3.0 quansync: 0.2.11 + locate-character@3.0.0: {} + locate-path@5.0.0: dependencies: p-locate: 4.1.0 @@ -14049,18 +16087,32 @@ snapshots: lodash-es@4.17.21: {} + lodash.clonedeepwith@4.5.0: {} + lodash.truncate@4.4.2: {} lodash@4.17.21: {} log-update@6.1.0: dependencies: - ansi-escapes: 7.1.1 + ansi-escapes: 7.2.0 cli-cursor: 5.0.0 slice-ansi: 7.1.2 strip-ansi: 7.1.2 wrap-ansi: 9.0.2 + log4js@6.9.1: + dependencies: + date-format: 4.0.14 + debug: 4.4.3(supports-color@5.5.0) + flatted: 3.3.3 + rfdc: 1.4.1 + streamroller: 3.1.5 + transitivePeerDependencies: + - supports-color + + long-timeout@0.1.1: {} + longest-streak@3.1.0: {} loose-envify@1.4.0: @@ -14085,9 +16137,7 @@ snapshots: dependencies: yallist: 4.0.0 - magic-string@0.30.19: - dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 + luxon@3.7.2: {} magic-string@0.30.21: dependencies: @@ -14109,17 +16159,17 @@ snapshots: markdown-table@3.0.4: {} - markdown-to-jsx@8.0.0(react@19.1.1): + markdown-to-jsx@8.0.0(react@19.2.0): optionalDependencies: - react: 19.1.1 + react: 19.2.0 - marked@16.3.0: {} + marked@16.4.2: {} math-intrinsics@1.1.0: {} md5.js@1.3.5: dependencies: - hash-base: 3.0.5 + hash-base: 3.1.2 inherits: 2.0.4 safe-buffer: 5.2.1 @@ -14127,8 +16177,8 @@ snapshots: dependencies: '@types/mdast': 4.0.4 escape-string-regexp: 5.0.0 - unist-util-is: 6.0.0 - unist-util-visit-parents: 6.0.1 + unist-util-is: 6.0.1 + unist-util-visit-parents: 6.0.2 mdast-util-from-markdown@2.0.2: dependencies: @@ -14256,7 +16306,7 @@ snapshots: mdast-util-phrasing@4.1.0: dependencies: '@types/mdast': 4.0.4 - unist-util-is: 6.0.0 + unist-util-is: 6.0.1 mdast-util-to-hast@13.2.0: dependencies: @@ -14286,8 +16336,12 @@ snapshots: dependencies: '@types/mdast': 4.0.4 + mdn-data@2.0.30: {} + media-typer@0.3.0: {} + media-typer@1.1.0: {} + medium-zoom@1.1.0: {} memfs@3.5.3: @@ -14296,9 +16350,9 @@ snapshots: memfs@4.48.1: dependencies: - '@jsonjoy.com/json-pack': 1.14.0(tslib@2.8.1) + '@jsonjoy.com/json-pack': 1.21.0(tslib@2.8.1) '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) - glob-to-regex.js: 1.0.1(tslib@2.8.1) + glob-to-regex.js: 1.2.0(tslib@2.8.1) thingies: 2.5.0(tslib@2.8.1) tree-dump: 1.1.0(tslib@2.8.1) tslib: 2.8.1 @@ -14321,12 +16375,12 @@ snapshots: d3: 7.9.0 d3-sankey: 0.12.3 dagre-d3-es: 7.0.13 - dayjs: 1.11.18 - dompurify: 3.2.7 - katex: 0.16.22 + dayjs: 1.11.19 + dompurify: 3.3.0 + katex: 0.16.25 khroma: 2.1.0 lodash-es: 4.17.21 - marked: 16.3.0 + marked: 16.4.2 roughjs: 4.6.6 stylis: 4.3.6 ts-dedent: 2.2.0 @@ -14581,7 +16635,7 @@ snapshots: micromark@4.0.2: dependencies: '@types/debug': 4.1.12 - debug: 4.4.3 + debug: 4.4.3(supports-color@5.5.0) decode-named-character-reference: 1.2.0 devlop: 1.1.0 micromark-core-commonmark: 2.0.3 @@ -14610,15 +16664,21 @@ snapshots: bn.js: 4.12.2 brorand: 1.1.0 + mime-db@1.33.0: {} + mime-db@1.52.0: {} mime-db@1.54.0: {} + mime-types@2.1.18: + dependencies: + mime-db: 1.33.0 + mime-types@2.1.35: dependencies: mime-db: 1.52.0 - mime-types@3.0.1: + mime-types@3.0.2: dependencies: mime-db: 1.54.0 @@ -14628,6 +16688,12 @@ snapshots: mimic-function@5.0.1: {} + mini-css-extract-plugin@2.9.2(webpack@5.102.1): + dependencies: + schema-utils: 4.3.3 + tapable: 2.3.0 + webpack: 5.102.1(webpack-cli@5.1.4) + mini-svg-data-uri@1.4.4: {} minimalistic-assert@1.0.1: {} @@ -14695,7 +16761,7 @@ snapshots: needle@3.3.1: dependencies: iconv-lite: 0.6.3 - sax: 1.4.1 + sax: 1.4.3 optional: true negotiator@0.6.3: {} @@ -14726,9 +16792,15 @@ snapshots: dependencies: node-stdlib-browser: 1.3.1 type-fest: 4.41.0 - webpack: 5.102.1 + webpack: 5.102.1(webpack-cli@5.1.4) - node-releases@2.0.21: {} + node-releases@2.0.27: {} + + node-schedule@2.1.1: + dependencies: + cron-parser: 4.9.0 + long-timeout: 0.1.1 + sorted-array-functions: 1.3.0 node-stdlib-browser@1.3.1: dependencies: @@ -14798,6 +16870,10 @@ snapshots: obuf@1.1.2: {} + on-finished@2.3.0: + dependencies: + ee-first: 1.1.1 + on-finished@2.4.1: dependencies: ee-first: 1.1.1 @@ -14826,11 +16902,17 @@ snapshots: open@10.2.0: dependencies: - default-browser: 5.2.1 + default-browser: 5.4.0 define-lazy-prop: 3.0.0 is-inside-container: 1.0.0 wsl-utils: 0.1.0 + open@8.4.2: + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + opener@1.5.2: {} os-browserify@0.3.0: {} @@ -14845,7 +16927,7 @@ snapshots: p-limit@4.0.0: dependencies: - yocto-queue: 1.2.1 + yocto-queue: 1.2.2 p-locate@4.1.0: dependencies: @@ -14869,7 +16951,7 @@ snapshots: package-json-from-dist@1.0.1: {} - package-manager-detector@1.3.0: {} + package-manager-detector@1.5.0: {} pako@1.0.11: {} @@ -14913,6 +16995,8 @@ snapshots: parse-node-version@1.0.1: {} + parse-passwd@1.0.0: {} + parse5@7.3.0: dependencies: entities: 6.0.1 @@ -14939,6 +17023,8 @@ snapshots: path-is-absolute@1.0.1: {} + path-is-inside@1.0.2: {} + path-key@3.1.1: {} path-parse@1.0.7: {} @@ -14957,6 +17043,12 @@ snapshots: path-to-regexp@0.1.12: {} + path-to-regexp@1.9.0: + dependencies: + isarray: 0.0.1 + + path-to-regexp@3.3.0: {} + path-type@4.0.0: {} path-type@6.0.0: {} @@ -14976,6 +17068,12 @@ snapshots: peberminta@0.9.0: {} + periscopic@3.1.0: + dependencies: + '@types/estree': 1.0.8 + estree-walker: 3.0.3 + is-reference: 3.0.3 + picocolors@1.1.1: {} picomatch@2.3.1: {} @@ -14991,6 +17089,10 @@ snapshots: pirates@4.0.7: {} + pkg-dir@4.2.0: + dependencies: + find-up: 4.1.0 + pkg-dir@5.0.0: dependencies: find-up: 5.0.0 @@ -15004,14 +17106,14 @@ snapshots: pkg-types@2.3.0: dependencies: confbox: 0.2.2 - exsolve: 1.0.7 + exsolve: 1.0.8 pathe: 2.0.3 - playwright-core@1.56.0: {} + playwright-core@1.56.1: {} - playwright@1.56.0: + playwright@1.56.1: dependencies: - playwright-core: 1.56.0 + playwright-core: 1.56.1 optionalDependencies: fsevents: 2.3.2 @@ -15029,30 +17131,31 @@ snapshots: postcss: 8.5.6 postcss-value-parser: 4.2.0 read-cache: 1.0.0 - resolve: 1.22.10 + resolve: 1.22.11 postcss-js@4.1.0(postcss@8.5.6): dependencies: camelcase-css: 2.0.1 postcss: 8.5.6 - postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.9.3)): + postcss-load-config@6.0.1(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.6)(yaml@2.8.1): dependencies: lilconfig: 3.1.3 - yaml: 2.8.1 optionalDependencies: + jiti: 1.21.7 postcss: 8.5.6 - ts-node: 10.9.2(@types/node@20.19.25)(typescript@5.9.3) + tsx: 4.20.6 + yaml: 2.8.1 postcss-loader@8.2.0(@rspack/core@packages+rspack)(postcss@8.5.6)(typescript@5.9.3)(webpack@5.102.1): dependencies: cosmiconfig: 9.0.0(typescript@5.9.3) - jiti: 2.6.0 + jiti: 2.6.1 postcss: 8.5.6 - semver: 7.7.2 + semver: 7.7.3 optionalDependencies: '@rspack/core': link:packages/rspack - webpack: 5.102.1 + webpack: 5.102.1(webpack-cli@5.1.4) transitivePeerDependencies: - typescript @@ -15106,12 +17209,13 @@ snapshots: preact@10.27.2: {} - prebundle@1.5.0(typescript@5.9.3): + prebundle@1.6.0(typescript@5.9.3): dependencies: '@vercel/ncc': 0.38.4 + cac: 6.7.14 prettier: 3.6.2 - rollup: 4.52.3 - rollup-plugin-dts: 6.2.3(rollup@4.52.3)(typescript@5.9.3) + rollup: 4.53.3 + rollup-plugin-dts: 6.2.3(rollup@4.53.3)(typescript@5.9.3) terser: 5.44.1 transitivePeerDependencies: - typescript @@ -15239,6 +17343,10 @@ snapshots: punycode@2.3.1: {} + qs@6.11.0: + dependencies: + side-channel: 1.1.0 + qs@6.13.0: dependencies: side-channel: 1.1.0 @@ -15257,6 +17365,8 @@ snapshots: dependencies: w-json: 1.3.10 + rambda@9.4.2: {} + randombytes@2.1.0: dependencies: safe-buffer: 5.2.1 @@ -15266,8 +17376,17 @@ snapshots: randombytes: 2.1.0 safe-buffer: 5.2.1 + range-parser@1.2.0: {} + range-parser@1.2.1: {} + raw-body@2.5.1: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + raw-body@2.5.2: dependencies: bytes: 3.1.2 @@ -15279,12 +17398,14 @@ snapshots: dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.102.1 + webpack: 5.102.1(webpack-cli@5.1.4) - react-dom@19.1.1(react@19.1.1): + rc@1.2.8: dependencies: - react: 19.1.1 - scheduler: 0.26.0 + deep-extend: 0.6.0 + ini: 1.3.8 + minimist: 1.2.8 + strip-json-comments: 2.0.1 react-dom@19.2.0(react@19.2.0): dependencies: @@ -15295,6 +17416,8 @@ snapshots: react-is@18.3.1: {} + react-is@19.2.0: {} + react-lazy-with-preload@2.2.1: {} react-reconciler@0.33.0(react@19.2.0): @@ -15304,6 +17427,17 @@ snapshots: react-refresh@0.18.0: {} + react-router-dom@5.3.4(react@19.2.0): + dependencies: + '@babel/runtime': 7.28.4 + history: 4.10.1 + loose-envify: 1.4.0 + prop-types: 15.8.1 + react: 19.2.0 + react-router: 5.3.4(react@19.2.0) + tiny-invariant: 1.3.3 + tiny-warning: 1.0.3 + react-router-dom@6.30.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0): dependencies: '@remix-run/router': 1.23.1 @@ -15311,12 +17445,32 @@ snapshots: react-dom: 19.2.0(react@19.2.0) react-router: 6.30.2(react@19.2.0) + react-router@5.3.4(react@19.2.0): + dependencies: + '@babel/runtime': 7.28.4 + history: 4.10.1 + hoist-non-react-statics: 3.3.2 + loose-envify: 1.4.0 + path-to-regexp: 1.9.0 + prop-types: 15.8.1 + react: 19.2.0 + react-is: 16.13.1 + tiny-invariant: 1.3.3 + tiny-warning: 1.0.3 + react-router@6.30.2(react@19.2.0): dependencies: '@remix-run/router': 1.23.1 react: 19.2.0 - react@19.1.1: {} + react-transition-group@4.4.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + dependencies: + '@babel/runtime': 7.28.4 + dom-helpers: 5.2.1 + loose-envify: 1.4.0 + prop-types: 15.8.1 + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) react@19.2.0: {} @@ -15354,6 +17508,10 @@ snapshots: readdirp@4.1.2: {} + rechoir@0.8.0: + dependencies: + resolve: 1.22.11 + recma-build-jsx@1.0.0: dependencies: '@types/estree': 1.0.8 @@ -15395,6 +17553,15 @@ snapshots: dependencies: regex-utilities: 2.3.0 + registry-auth-token@3.3.2: + dependencies: + rc: 1.2.8 + safe-buffer: 5.2.1 + + registry-url@3.1.0: + dependencies: + rc: 1.2.8 + rehype-external-links@3.0.0: dependencies: '@types/hast': 3.0.4 @@ -15469,23 +17636,36 @@ snapshots: lodash: 4.17.21 strip-ansi: 6.0.1 + require-directory@2.1.1: {} + require-from-string@2.0.2: {} requires-port@1.0.0: {} + resolve-cwd@3.0.0: + dependencies: + resolve-from: 5.0.0 + + resolve-dir@1.0.1: + dependencies: + expand-tilde: 2.0.2 + global-modules: 1.0.0 + resolve-from@4.0.0: {} resolve-from@5.0.0: {} + resolve-pathname@3.0.0: {} + resolve-pkg-maps@1.0.0: {} - resolve@1.22.10: + resolve@1.22.11: dependencies: is-core-module: 2.16.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - resolve@1.22.11: + resolve@1.22.8: dependencies: is-core-module: 2.16.1 path-parse: 1.0.7 @@ -15504,7 +17684,7 @@ snapshots: rimraf@5.0.10: dependencies: - glob: 10.4.5 + glob: 10.5.0 ripemd160@2.0.3: dependencies: @@ -15513,40 +17693,40 @@ snapshots: robust-predicates@3.0.2: {} - rollup-plugin-dts@6.2.3(rollup@4.52.3)(typescript@5.9.3): + rollup-plugin-dts@6.2.3(rollup@4.53.3)(typescript@5.9.3): dependencies: - magic-string: 0.30.19 - rollup: 4.52.3 + magic-string: 0.30.21 + rollup: 4.53.3 typescript: 5.9.3 optionalDependencies: '@babel/code-frame': 7.27.1 - rollup@4.52.3: + rollup@4.53.3: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.52.3 - '@rollup/rollup-android-arm64': 4.52.3 - '@rollup/rollup-darwin-arm64': 4.52.3 - '@rollup/rollup-darwin-x64': 4.52.3 - '@rollup/rollup-freebsd-arm64': 4.52.3 - '@rollup/rollup-freebsd-x64': 4.52.3 - '@rollup/rollup-linux-arm-gnueabihf': 4.52.3 - '@rollup/rollup-linux-arm-musleabihf': 4.52.3 - '@rollup/rollup-linux-arm64-gnu': 4.52.3 - '@rollup/rollup-linux-arm64-musl': 4.52.3 - '@rollup/rollup-linux-loong64-gnu': 4.52.3 - '@rollup/rollup-linux-ppc64-gnu': 4.52.3 - '@rollup/rollup-linux-riscv64-gnu': 4.52.3 - '@rollup/rollup-linux-riscv64-musl': 4.52.3 - '@rollup/rollup-linux-s390x-gnu': 4.52.3 - '@rollup/rollup-linux-x64-gnu': 4.52.3 - '@rollup/rollup-linux-x64-musl': 4.52.3 - '@rollup/rollup-openharmony-arm64': 4.52.3 - '@rollup/rollup-win32-arm64-msvc': 4.52.3 - '@rollup/rollup-win32-ia32-msvc': 4.52.3 - '@rollup/rollup-win32-x64-gnu': 4.52.3 - '@rollup/rollup-win32-x64-msvc': 4.52.3 + '@rollup/rollup-android-arm-eabi': 4.53.3 + '@rollup/rollup-android-arm64': 4.53.3 + '@rollup/rollup-darwin-arm64': 4.53.3 + '@rollup/rollup-darwin-x64': 4.53.3 + '@rollup/rollup-freebsd-arm64': 4.53.3 + '@rollup/rollup-freebsd-x64': 4.53.3 + '@rollup/rollup-linux-arm-gnueabihf': 4.53.3 + '@rollup/rollup-linux-arm-musleabihf': 4.53.3 + '@rollup/rollup-linux-arm64-gnu': 4.53.3 + '@rollup/rollup-linux-arm64-musl': 4.53.3 + '@rollup/rollup-linux-loong64-gnu': 4.53.3 + '@rollup/rollup-linux-ppc64-gnu': 4.53.3 + '@rollup/rollup-linux-riscv64-gnu': 4.53.3 + '@rollup/rollup-linux-riscv64-musl': 4.53.3 + '@rollup/rollup-linux-s390x-gnu': 4.53.3 + '@rollup/rollup-linux-x64-gnu': 4.53.3 + '@rollup/rollup-linux-x64-musl': 4.53.3 + '@rollup/rollup-openharmony-arm64': 4.53.3 + '@rollup/rollup-win32-arm64-msvc': 4.53.3 + '@rollup/rollup-win32-ia32-msvc': 4.53.3 + '@rollup/rollup-win32-x64-gnu': 4.53.3 + '@rollup/rollup-win32-x64-msvc': 4.53.3 fsevents: 2.3.3 roughjs@4.6.6: @@ -15558,10 +17738,10 @@ snapshots: rrweb-cssom@0.8.0: {} - rsbuild-plugin-dts@0.17.1(@microsoft/api-extractor@7.54.0(@types/node@20.19.25))(@rsbuild/core@1.6.3)(typescript@5.9.3): + rsbuild-plugin-dts@0.17.1(@microsoft/api-extractor@7.54.0(@types/node@20.19.25))(@rsbuild/core@1.6.7)(typescript@5.9.3): dependencies: '@ast-grep/napi': 0.37.0 - '@rsbuild/core': 1.6.3 + '@rsbuild/core': 1.6.7 optionalDependencies: '@microsoft/api-extractor': 7.54.0(@types/node@20.19.25) typescript: 5.9.3 @@ -15574,9 +17754,11 @@ snapshots: optionalDependencies: '@rsbuild/core': 1.6.7 - rspress-plugin-font-open-sans@1.0.3(@rspress/core@2.0.0-rc.1(@types/react@19.1.15)): + rslog@1.3.0: {} + + rspress-plugin-font-open-sans@1.0.3(@rspress/core@2.0.0-rc.1(@types/react@19.2.6)): dependencies: - '@rspress/core': 2.0.0-rc.1(@types/react@19.1.15) + '@rspress/core': 2.0.0-rc.1(@types/react@19.2.6) run-applescript@7.1.0: {} @@ -15602,120 +17784,118 @@ snapshots: safer-buffer@2.1.2: {} - sass-embedded-all-unknown@1.93.2: + sass-embedded-all-unknown@1.93.3: dependencies: - sass: 1.93.2 + sass: 1.93.3 optional: true - sass-embedded-android-arm64@1.93.2: + sass-embedded-android-arm64@1.93.3: optional: true - sass-embedded-android-arm@1.93.2: + sass-embedded-android-arm@1.93.3: optional: true - sass-embedded-android-riscv64@1.93.2: + sass-embedded-android-riscv64@1.93.3: optional: true - sass-embedded-android-x64@1.93.2: + sass-embedded-android-x64@1.93.3: optional: true - sass-embedded-darwin-arm64@1.93.2: + sass-embedded-darwin-arm64@1.93.3: optional: true - sass-embedded-darwin-x64@1.93.2: + sass-embedded-darwin-x64@1.93.3: optional: true - sass-embedded-linux-arm64@1.93.2: + sass-embedded-linux-arm64@1.93.3: optional: true - sass-embedded-linux-arm@1.93.2: + sass-embedded-linux-arm@1.93.3: optional: true - sass-embedded-linux-musl-arm64@1.93.2: + sass-embedded-linux-musl-arm64@1.93.3: optional: true - sass-embedded-linux-musl-arm@1.93.2: + sass-embedded-linux-musl-arm@1.93.3: optional: true - sass-embedded-linux-musl-riscv64@1.93.2: + sass-embedded-linux-musl-riscv64@1.93.3: optional: true - sass-embedded-linux-musl-x64@1.93.2: + sass-embedded-linux-musl-x64@1.93.3: optional: true - sass-embedded-linux-riscv64@1.93.2: + sass-embedded-linux-riscv64@1.93.3: optional: true - sass-embedded-linux-x64@1.93.2: + sass-embedded-linux-x64@1.93.3: optional: true - sass-embedded-unknown-all@1.93.2: + sass-embedded-unknown-all@1.93.3: dependencies: - sass: 1.93.2 + sass: 1.93.3 optional: true - sass-embedded-win32-arm64@1.93.2: + sass-embedded-win32-arm64@1.93.3: optional: true - sass-embedded-win32-x64@1.93.2: + sass-embedded-win32-x64@1.93.3: optional: true - sass-embedded@1.93.2: + sass-embedded@1.93.3: dependencies: - '@bufbuild/protobuf': 2.9.0 + '@bufbuild/protobuf': 2.10.1 buffer-builder: 0.2.0 colorjs.io: 0.5.2 - immutable: 5.1.3 + immutable: 5.1.4 rxjs: 7.8.2 supports-color: 8.1.1 sync-child-process: 1.0.2 varint: 6.0.0 optionalDependencies: - sass-embedded-all-unknown: 1.93.2 - sass-embedded-android-arm: 1.93.2 - sass-embedded-android-arm64: 1.93.2 - sass-embedded-android-riscv64: 1.93.2 - sass-embedded-android-x64: 1.93.2 - sass-embedded-darwin-arm64: 1.93.2 - sass-embedded-darwin-x64: 1.93.2 - sass-embedded-linux-arm: 1.93.2 - sass-embedded-linux-arm64: 1.93.2 - sass-embedded-linux-musl-arm: 1.93.2 - sass-embedded-linux-musl-arm64: 1.93.2 - sass-embedded-linux-musl-riscv64: 1.93.2 - sass-embedded-linux-musl-x64: 1.93.2 - sass-embedded-linux-riscv64: 1.93.2 - sass-embedded-linux-x64: 1.93.2 - sass-embedded-unknown-all: 1.93.2 - sass-embedded-win32-arm64: 1.93.2 - sass-embedded-win32-x64: 1.93.2 - - sass-loader@16.0.6(@rspack/core@packages+rspack)(sass-embedded@1.93.2)(sass@1.93.2)(webpack@5.102.1): + sass-embedded-all-unknown: 1.93.3 + sass-embedded-android-arm: 1.93.3 + sass-embedded-android-arm64: 1.93.3 + sass-embedded-android-riscv64: 1.93.3 + sass-embedded-android-x64: 1.93.3 + sass-embedded-darwin-arm64: 1.93.3 + sass-embedded-darwin-x64: 1.93.3 + sass-embedded-linux-arm: 1.93.3 + sass-embedded-linux-arm64: 1.93.3 + sass-embedded-linux-musl-arm: 1.93.3 + sass-embedded-linux-musl-arm64: 1.93.3 + sass-embedded-linux-musl-riscv64: 1.93.3 + sass-embedded-linux-musl-x64: 1.93.3 + sass-embedded-linux-riscv64: 1.93.3 + sass-embedded-linux-x64: 1.93.3 + sass-embedded-unknown-all: 1.93.3 + sass-embedded-win32-arm64: 1.93.3 + sass-embedded-win32-x64: 1.93.3 + + sass-loader@16.0.6(@rspack/core@packages+rspack)(sass-embedded@1.93.3)(sass@1.93.3)(webpack@5.102.1): dependencies: neo-async: 2.6.2 optionalDependencies: '@rspack/core': link:packages/rspack - sass: 1.93.2 - sass-embedded: 1.93.2 - webpack: 5.102.1 + sass: 1.93.3 + sass-embedded: 1.93.3 + webpack: 5.102.1(webpack-cli@5.1.4) - sass@1.93.2: + sass@1.93.3: dependencies: chokidar: 4.0.3 - immutable: 5.1.3 + immutable: 5.1.4 source-map-js: 1.2.1 optionalDependencies: '@parcel/watcher': 2.5.1 optional: true - sax@1.4.1: {} + sax@1.4.3: {} saxes@6.0.0: dependencies: xmlchars: 2.2.0 - scheduler@0.26.0: {} - scheduler@0.27.0: {} schema-utils@3.3.0: @@ -15724,13 +17904,6 @@ snapshots: ajv: 6.12.6 ajv-keywords: 3.5.2(ajv@6.12.6) - schema-utils@4.3.2: - dependencies: - '@types/json-schema': 7.0.15 - ajv: 8.17.1 - ajv-formats: 2.1.1(ajv@8.17.1) - ajv-keywords: 5.1.0(ajv@8.17.1) - schema-utils@4.3.3: dependencies: '@types/json-schema': 7.0.15 @@ -15769,10 +17942,28 @@ snapshots: dependencies: lru-cache: 6.0.0 - semver@7.7.2: {} + semver@7.6.3: {} semver@7.7.3: {} + send@0.18.0: + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + send@0.19.0: dependencies: debug: 2.6.9 @@ -15795,6 +17986,16 @@ snapshots: dependencies: randombytes: 2.1.0 + serve-handler@6.1.6: + dependencies: + bytes: 3.0.0 + content-disposition: 0.5.2 + mime-types: 2.1.18 + minimatch: 3.1.2 + path-is-inside: 1.0.2 + path-to-regexp: 3.3.0 + range-parser: 1.2.0 + serve-index@1.9.1: dependencies: accepts: 1.3.8 @@ -15807,6 +18008,15 @@ snapshots: transitivePeerDependencies: - supports-color + serve-static@1.15.0: + dependencies: + encodeurl: 1.0.2 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.18.0 + transitivePeerDependencies: + - supports-color + serve-static@1.16.2: dependencies: encodeurl: 2.0.0 @@ -15816,12 +18026,28 @@ snapshots: transitivePeerDependencies: - supports-color + serve@14.2.5: + dependencies: + '@zeit/schemas': 2.36.0 + ajv: 8.12.0 + arg: 5.0.2 + boxen: 7.0.0 + chalk: 5.0.1 + chalk-template: 0.4.0 + clipboardy: 3.0.0 + compression: 1.8.1 + is-port-reachable: 4.0.0 + serve-handler: 6.1.6 + update-check: 1.5.4 + transitivePeerDependencies: + - supports-color + set-function-length@1.2.2: dependencies: define-data-property: 1.1.4 es-errors: 1.3.0 function-bind: 1.1.2 - get-intrinsic: 1.3.1 + get-intrinsic: 1.3.0 gopd: 1.2.0 has-property-descriptors: 1.0.2 @@ -15846,6 +18072,8 @@ snapshots: dependencies: kind-of: 6.0.3 + shallowequal@1.1.0: {} + shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 @@ -15854,14 +18082,14 @@ snapshots: shell-quote@1.8.3: {} - shiki@3.13.0: + shiki@3.15.0: dependencies: - '@shikijs/core': 3.13.0 - '@shikijs/engine-javascript': 3.13.0 - '@shikijs/engine-oniguruma': 3.13.0 - '@shikijs/langs': 3.13.0 - '@shikijs/themes': 3.13.0 - '@shikijs/types': 3.13.0 + '@shikijs/core': 3.15.0 + '@shikijs/engine-javascript': 3.15.0 + '@shikijs/engine-oniguruma': 3.15.0 + '@shikijs/langs': 3.15.0 + '@shikijs/themes': 3.15.0 + '@shikijs/types': 3.15.0 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 @@ -15874,14 +18102,14 @@ snapshots: dependencies: call-bound: 1.0.4 es-errors: 1.3.0 - get-intrinsic: 1.3.1 + get-intrinsic: 1.3.0 object-inspect: 1.13.4 side-channel-weakmap@1.0.2: dependencies: call-bound: 1.0.4 es-errors: 1.3.0 - get-intrinsic: 1.3.1 + get-intrinsic: 1.3.0 object-inspect: 1.13.4 side-channel-map: 1.0.1 @@ -15922,34 +18150,70 @@ snapshots: smol-toml@1.5.2: {} + socket.io-adapter@2.5.5: + dependencies: + debug: 4.3.7 + ws: 8.17.1 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + socket.io-parser@4.2.4: + dependencies: + '@socket.io/component-emitter': 3.1.2 + debug: 4.3.7 + transitivePeerDependencies: + - supports-color + + socket.io@4.7.2: + dependencies: + accepts: 1.3.8 + base64id: 2.0.0 + cors: 2.8.5 + debug: 4.3.7 + engine.io: 6.5.5 + socket.io-adapter: 2.5.5 + socket.io-parser: 4.2.4 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + sockjs@0.3.24: dependencies: faye-websocket: 0.11.4 uuid: 8.3.2 websocket-driver: 0.7.4 + sorted-array-functions@1.3.0: {} + source-map-js@1.2.1: {} source-map-loader@5.0.0(webpack@5.102.1): dependencies: iconv-lite: 0.6.3 source-map-js: 1.2.1 - webpack: 5.102.1 + webpack: 5.102.1(webpack-cli@5.1.4) source-map-support@0.5.21: dependencies: buffer-from: 1.1.2 source-map: 0.6.1 + source-map@0.5.7: {} + source-map@0.6.1: {} source-map@0.7.6: {} space-separated-tokens@2.0.2: {} + spawn-command@0.0.2: {} + spdy-transport@3.0.0: dependencies: - debug: 4.4.3 + debug: 4.4.3(supports-color@5.5.0) detect-node: 2.1.0 hpack.js: 2.1.6 obuf: 1.1.2 @@ -15960,7 +18224,7 @@ snapshots: spdy@4.0.2: dependencies: - debug: 4.4.3 + debug: 4.4.3(supports-color@5.5.0) handle-thing: 2.0.1 http-deceiver: 1.2.7 select-hose: 2.0.0 @@ -15982,7 +18246,9 @@ snapshots: statuses@2.0.1: {} - std-env@3.9.0: {} + statuses@2.0.2: {} + + std-env@3.10.0: {} stream-browserify@3.0.0: dependencies: @@ -15996,6 +18262,14 @@ snapshots: readable-stream: 3.6.2 xtend: 4.0.2 + streamroller@3.1.5: + dependencies: + date-format: 4.0.14 + debug: 4.4.3(supports-color@5.5.0) + fs-extra: 8.1.0 + transitivePeerDependencies: + - supports-color + string-argv@0.3.2: {} string-width@4.2.3: @@ -16012,7 +18286,7 @@ snapshots: string-width@7.2.0: dependencies: - emoji-regex: 10.5.0 + emoji-regex: 10.6.0 get-east-asian-width: 1.4.0 strip-ansi: 7.1.2 @@ -16046,6 +18320,8 @@ snapshots: strip-final-newline@2.0.0: {} + strip-json-comments@2.0.1: {} + strip-json-comments@3.1.1: {} strip-literal@3.1.0: @@ -16058,28 +18334,52 @@ snapshots: style-loader@4.0.0(webpack@5.102.1): dependencies: - webpack: 5.102.1 + webpack: 5.102.1(webpack-cli@5.1.4) - style-to-js@1.1.17: + style-to-js@1.1.21: dependencies: - style-to-object: 1.0.9 + style-to-object: 1.0.14 - style-to-object@1.0.9: + style-to-object@1.0.14: dependencies: - inline-style-parser: 0.2.4 + inline-style-parser: 0.2.7 + + styled-components@5.3.11(@babel/core@7.28.5)(react-dom@19.2.0(react@19.2.0))(react-is@19.2.0)(react@19.2.0): + dependencies: + '@babel/helper-module-imports': 7.27.1(supports-color@5.5.0) + '@babel/traverse': 7.28.5(supports-color@5.5.0) + '@emotion/is-prop-valid': 1.4.0 + '@emotion/stylis': 0.8.5 + '@emotion/unitless': 0.7.5 + babel-plugin-styled-components: 2.1.4(@babel/core@7.28.5)(styled-components@5.3.11(@babel/core@7.28.5)(react-dom@19.2.0(react@19.2.0))(react-is@19.2.0)(react@19.2.0))(supports-color@5.5.0) + css-to-react-native: 3.2.0 + hoist-non-react-statics: 3.3.2 + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + react-is: 19.2.0 + shallowequal: 1.1.0 + supports-color: 5.5.0 + transitivePeerDependencies: + - '@babel/core' + + stylis@4.2.0: {} stylis@4.3.6: {} - sucrase@3.35.0: + sucrase@3.35.1: dependencies: '@jridgewell/gen-mapping': 0.3.13 commander: 4.1.1 - glob: 10.5.0 lines-and-columns: 1.2.4 mz: 2.7.0 pirates: 4.0.7 + tinyglobby: 0.2.15 ts-interface-checker: 0.1.13 + supports-color@5.5.0: + dependencies: + has-flag: 3.0.0 + supports-color@7.2.0: dependencies: has-flag: 4.0.0 @@ -16090,11 +18390,41 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - swr@2.3.6(react@19.1.1): + svelte-dev-helper@1.1.9: {} + + svelte-hmr@0.14.12(svelte@4.2.18): + dependencies: + svelte: 4.2.18 + + svelte-loader@3.2.3(svelte@4.2.18): + dependencies: + loader-utils: 2.0.4 + svelte: 4.2.18 + svelte-dev-helper: 1.1.9 + svelte-hmr: 0.14.12(svelte@4.2.18) + + svelte@4.2.18: + dependencies: + '@ampproject/remapping': 2.3.0 + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 + '@types/estree': 1.0.8 + acorn: 8.15.0 + aria-query: 5.3.2 + axobject-query: 4.1.0 + code-red: 1.0.4 + css-tree: 2.3.1 + estree-walker: 3.0.3 + is-reference: 3.0.3 + locate-character: 3.0.0 + magic-string: 0.30.21 + periscopic: 3.1.0 + + swr@2.3.6(react@19.2.0): dependencies: dequal: 2.0.3 - react: 19.1.1 - use-sync-external-store: 1.6.0(react@19.1.1) + react: 19.2.0 + use-sync-external-store: 1.6.0(react@19.2.0) symbol-tree@3.2.4: {} @@ -16112,7 +18442,7 @@ snapshots: string-width: 4.2.3 strip-ansi: 6.0.1 - tailwindcss@3.4.18(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.9.3)): + tailwindcss@3.4.18(tsx@4.20.6)(yaml@2.8.1): dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -16131,15 +18461,16 @@ snapshots: postcss: 8.5.6 postcss-import: 15.1.0(postcss@8.5.6) postcss-js: 4.1.0(postcss@8.5.6) - postcss-load-config: 4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.9.3)) + postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.6)(yaml@2.8.1) postcss-nested: 6.2.0(postcss@8.5.6) postcss-selector-parser: 6.1.2 - resolve: 1.22.10 - sucrase: 3.35.0 + resolve: 1.22.11 + sucrase: 3.35.1 transitivePeerDependencies: - - ts-node + - tsx + - yaml - tapable@2.2.3: {} + tapable@2.2.1: {} tapable@2.3.0: {} @@ -16147,26 +18478,10 @@ snapshots: dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 - schema-utils: 4.3.2 - serialize-javascript: 6.0.2 - terser: 5.43.1 - webpack: 5.102.1 - - terser-webpack-plugin@5.3.14(webpack@5.99.9): - dependencies: - '@jridgewell/trace-mapping': 0.3.31 - jest-worker: 27.5.1 - schema-utils: 4.3.2 + schema-utils: 4.3.3 serialize-javascript: 6.0.2 - terser: 5.43.1 - webpack: 5.99.9 - - terser@5.43.1: - dependencies: - '@jridgewell/source-map': 0.3.11 - acorn: 8.15.0 - commander: 2.20.3 - source-map-support: 0.5.21 + terser: 5.44.1 + webpack: 5.102.1(webpack-cli@5.1.4) terser@5.44.1: dependencies: @@ -16201,11 +18516,15 @@ snapshots: dependencies: setimmediate: 1.0.5 + tiny-invariant@1.3.3: {} + + tiny-warning@1.0.3: {} + tinybench@2.9.0: {} tinyexec@0.3.2: {} - tinyexec@1.0.1: {} + tinyexec@1.0.2: {} tinyglobby@0.2.15: dependencies: @@ -16258,6 +18577,8 @@ snapshots: dependencies: tslib: 2.8.1 + tree-kill@1.2.2: {} + trim-lines@3.0.1: {} trim-repeated@1.0.0: @@ -16278,12 +18599,12 @@ snapshots: semver: 7.7.3 source-map: 0.7.6 typescript: 5.9.3 - webpack: 5.102.1 + webpack: 5.102.1(webpack-cli@5.1.4) ts-node@10.9.2(@types/node@20.19.25)(typescript@5.9.3): dependencies: '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.11 + '@tsconfig/node10': 1.0.12 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 @@ -16300,10 +18621,12 @@ snapshots: tslib@2.8.1: {} + tsscmp@1.0.6: {} + tsx@4.20.6: dependencies: - esbuild: 0.25.10 - get-tsconfig: 4.10.1 + esbuild: 0.25.12 + get-tsconfig: 4.13.0 optionalDependencies: fsevents: 2.3.3 @@ -16313,6 +18636,10 @@ snapshots: typanion@3.14.0: {} + type-detect@4.1.0: {} + + type-fest@2.19.0: {} + type-fest@4.41.0: {} type-is@1.6.18: @@ -16320,6 +18647,12 @@ snapshots: media-typer: 0.3.0 mime-types: 2.1.35 + type-is@2.0.1: + dependencies: + content-type: 1.0.5 + media-typer: 1.1.0 + mime-types: 3.0.2 + type@2.7.3: {} typed-array-buffer@1.0.3: @@ -16360,7 +18693,7 @@ snapshots: trough: 2.2.0 vfile: 6.0.3 - unist-util-is@6.0.0: + unist-util-is@6.0.1: dependencies: '@types/unist': 3.0.3 @@ -16380,34 +18713,37 @@ snapshots: dependencies: '@types/unist': 3.0.3 - unist-util-visit-parents@6.0.1: + unist-util-visit-parents@6.0.2: dependencies: '@types/unist': 3.0.3 - unist-util-is: 6.0.0 + unist-util-is: 6.0.1 unist-util-visit@5.0.0: dependencies: '@types/unist': 3.0.3 - unist-util-is: 6.0.0 - unist-util-visit-parents: 6.0.1 + unist-util-is: 6.0.1 + unist-util-visit-parents: 6.0.2 universal-user-agent@7.0.3: {} + universalify@0.1.2: {} + universalify@2.0.1: {} unpipe@1.0.0: {} - update-browserslist-db@1.1.3(browserslist@4.26.2): + upath@2.0.1: {} + + update-browserslist-db@1.1.4(browserslist@4.28.0): dependencies: - browserslist: 4.26.2 + browserslist: 4.28.0 escalade: 3.2.0 picocolors: 1.1.1 - update-browserslist-db@1.1.3(browserslist@4.26.3): + update-check@1.5.4: dependencies: - browserslist: 4.26.3 - escalade: 3.2.0 - picocolors: 1.1.1 + registry-auth-token: 3.3.2 + registry-url: 3.1.0 uri-js@4.4.1: dependencies: @@ -16418,7 +18754,7 @@ snapshots: loader-utils: 2.0.4 mime-types: 2.1.35 schema-utils: 3.3.0 - webpack: 5.102.1 + webpack: 5.102.1(webpack-cli@5.1.4) optionalDependencies: file-loader: 6.2.0(webpack@5.102.1) @@ -16427,9 +18763,9 @@ snapshots: punycode: 1.4.1 qs: 6.14.0 - use-sync-external-store@1.6.0(react@19.1.1): + use-sync-external-store@1.6.0(react@19.2.0): dependencies: - react: 19.1.1 + react: 19.2.0 util-deprecate@1.0.2: {} @@ -16437,7 +18773,7 @@ snapshots: dependencies: inherits: 2.0.4 is-arguments: 1.2.0 - is-generator-function: 1.1.0 + is-generator-function: 1.1.2 is-typed-array: 1.1.15 which-typed-array: 1.1.19 @@ -16451,6 +18787,8 @@ snapshots: v8-compile-cache-lib@3.0.1: {} + value-equal@1.0.1: {} + varint@6.0.0: {} vary@1.1.2: {} @@ -16470,13 +18808,13 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite-node@3.2.4(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1): + vite-node@3.2.4(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1): dependencies: cac: 6.7.14 - debug: 4.4.3 + debug: 4.4.3(supports-color@5.5.0) es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.1.7(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.2.4(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - '@types/node' - jiti @@ -16491,49 +18829,49 @@ snapshots: - tsx - yaml - vite@7.1.7(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1): + vite@7.2.4(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1): dependencies: - esbuild: 0.25.10 + esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 - rollup: 4.52.3 + rollup: 4.53.3 tinyglobby: 0.2.15 optionalDependencies: '@types/node': 20.19.25 fsevents: 2.3.3 jiti: 2.6.1 less: 4.4.2 - sass: 1.93.2 - sass-embedded: 1.93.2 + sass: 1.93.3 + sass-embedded: 1.93.3 terser: 5.44.1 tsx: 4.20.6 yaml: 2.8.1 - vitest@3.2.4(@types/debug@4.1.12)(@types/node@20.19.25)(jiti@2.6.1)(jsdom@26.1.0)(less@4.4.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1): + vitest@3.2.4(@types/debug@4.1.12)(@types/node@20.19.25)(jiti@2.6.1)(jsdom@26.1.0)(less@4.4.2)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1): dependencies: - '@types/chai': 5.2.2 + '@types/chai': 5.2.3 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.1.7(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)) + '@vitest/mocker': 3.2.4(vite@7.2.4(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 '@vitest/spy': 3.2.4 '@vitest/utils': 3.2.4 chai: 5.3.3 - debug: 4.4.3 + debug: 4.4.3(supports-color@5.5.0) expect-type: 1.2.2 - magic-string: 0.30.19 + magic-string: 0.30.21 pathe: 2.0.3 picomatch: 4.0.3 - std-env: 3.9.0 + std-env: 3.10.0 tinybench: 2.9.0 tinyexec: 0.3.2 tinyglobby: 0.2.15 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.1.7(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) - vite-node: 3.2.4(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.2.4(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) + vite-node: 3.2.4(@types/node@20.19.25)(jiti@2.6.1)(less@4.4.2)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) why-is-node-running: 2.3.0 optionalDependencies: '@types/debug': 4.1.12 @@ -16581,7 +18919,7 @@ snapshots: chalk: 4.1.2 hash-sum: 2.0.0 watchpack: 2.4.4 - webpack: 5.102.1 + webpack: 5.102.1(webpack-cli@5.1.4) optionalDependencies: vue: 3.5.24(typescript@5.9.3) @@ -16605,6 +18943,16 @@ snapshots: wabt@1.0.0-nightly.20180421: {} + wait-on@7.2.0: + dependencies: + axios: 1.13.2 + joi: 17.13.3 + lodash: 4.17.21 + minimist: 1.2.8 + rxjs: 7.8.2 + transitivePeerDependencies: + - debug + walker@1.0.8: dependencies: makeerror: 1.0.12 @@ -16644,36 +18992,62 @@ snapshots: - bufferutil - utf-8-validate - webpack-dev-middleware@7.4.5(webpack@5.102.1): + webpack-cli@5.1.4(webpack-dev-server@5.0.4)(webpack@5.102.1): + dependencies: + '@discoveryjs/json-ext': 0.5.7 + '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4)(webpack@5.102.1) + '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4)(webpack@5.102.1) + '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4)(webpack-dev-server@5.0.4)(webpack@5.102.1) + colorette: 2.0.20 + commander: 10.0.1 + cross-spawn: 7.0.6 + envinfo: 7.20.0 + fastest-levenshtein: 1.0.16 + import-local: 3.2.0 + interpret: 3.1.1 + rechoir: 0.8.0 + webpack: 5.102.1(webpack-cli@5.1.4) + webpack-merge: 5.10.0 + optionalDependencies: + webpack-dev-server: 5.0.4(webpack-cli@5.1.4)(webpack@5.102.1) + + webpack-cli@5.1.4(webpack-dev-server@5.2.2)(webpack@5.102.1): dependencies: + '@discoveryjs/json-ext': 0.5.7 + '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4)(webpack@5.102.1) + '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4)(webpack@5.102.1) + '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4)(webpack-dev-server@5.2.2)(webpack@5.102.1) colorette: 2.0.20 - memfs: 4.48.1 - mime-types: 3.0.1 - on-finished: 2.4.1 - range-parser: 1.2.1 - schema-utils: 4.3.3 + commander: 10.0.1 + cross-spawn: 7.0.6 + envinfo: 7.20.0 + fastest-levenshtein: 1.0.16 + import-local: 3.2.0 + interpret: 3.1.1 + rechoir: 0.8.0 + webpack: 5.102.1(webpack-cli@5.1.4) + webpack-merge: 5.10.0 optionalDependencies: - webpack: 5.102.1 + webpack-dev-server: 5.2.2(webpack-cli@5.1.4)(webpack@5.102.1) - webpack-dev-middleware@7.4.5(webpack@5.99.9): + webpack-dev-middleware@7.4.5(webpack@5.102.1): dependencies: colorette: 2.0.20 memfs: 4.48.1 - mime-types: 3.0.1 + mime-types: 3.0.2 on-finished: 2.4.1 range-parser: 1.2.1 schema-utils: 4.3.3 optionalDependencies: - webpack: 5.99.9 + webpack: 5.102.1(webpack-cli@5.1.4) - webpack-dev-server@5.2.2(webpack@5.102.1): + webpack-dev-server@5.0.4(webpack-cli@5.1.4)(webpack@5.102.1): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 - '@types/express': 4.17.23 - '@types/express-serve-static-core': 4.19.6 + '@types/express': 4.17.25 '@types/serve-index': 1.9.4 - '@types/serve-static': 1.15.8 + '@types/serve-static': 1.15.10 '@types/sockjs': 0.3.36 '@types/ws': 8.18.1 ansi-html-community: 0.0.8 @@ -16682,13 +19056,16 @@ snapshots: colorette: 2.0.20 compression: 1.8.1 connect-history-api-fallback: 2.0.0 + default-gateway: 6.0.3 express: 4.21.2 graceful-fs: 4.2.11 - http-proxy-middleware: 2.0.9(@types/express@4.17.23) + html-entities: 2.6.0 + http-proxy-middleware: 2.0.9(@types/express@4.17.25) ipaddr.js: 2.2.0 - launch-editor: 2.11.1 + launch-editor: 2.12.0 open: 10.2.0 p-retry: 6.2.1 + rimraf: 5.0.10 schema-utils: 4.3.3 selfsigned: 2.4.1 serve-index: 1.9.1 @@ -16697,21 +19074,22 @@ snapshots: webpack-dev-middleware: 7.4.5(webpack@5.102.1) ws: 8.18.3 optionalDependencies: - webpack: 5.102.1 + webpack: 5.102.1(webpack-cli@5.1.4) + webpack-cli: 5.1.4(webpack-dev-server@5.0.4)(webpack@5.102.1) transitivePeerDependencies: - bufferutil - debug - supports-color - utf-8-validate - webpack-dev-server@5.2.2(webpack@5.99.9): + webpack-dev-server@5.2.2(webpack-cli@5.1.4)(webpack@5.102.1): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 - '@types/express': 4.17.23 - '@types/express-serve-static-core': 4.19.6 + '@types/express': 4.17.25 + '@types/express-serve-static-core': 4.19.7 '@types/serve-index': 1.9.4 - '@types/serve-static': 1.15.8 + '@types/serve-static': 1.15.10 '@types/sockjs': 0.3.36 '@types/ws': 8.18.1 ansi-html-community: 0.0.8 @@ -16722,9 +19100,9 @@ snapshots: connect-history-api-fallback: 2.0.0 express: 4.21.2 graceful-fs: 4.2.11 - http-proxy-middleware: 2.0.9(@types/express@4.17.23) + http-proxy-middleware: 2.0.9(@types/express@4.17.25) ipaddr.js: 2.2.0 - launch-editor: 2.11.1 + launch-editor: 2.12.0 open: 10.2.0 p-retry: 6.2.1 schema-utils: 4.3.3 @@ -16732,16 +19110,23 @@ snapshots: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.4.5(webpack@5.99.9) + webpack-dev-middleware: 7.4.5(webpack@5.102.1) ws: 8.18.3 optionalDependencies: - webpack: 5.99.9 + webpack: 5.102.1(webpack-cli@5.1.4) + webpack-cli: 5.1.4(webpack-dev-server@5.2.2)(webpack@5.102.1) transitivePeerDependencies: - bufferutil - debug - supports-color - utf-8-validate + webpack-merge@5.10.0: + dependencies: + clone-deep: 4.0.1 + flat: 5.0.2 + wildcard: 2.0.1 + webpack-merge@6.0.1: dependencies: clone-deep: 4.0.1 @@ -16750,7 +19135,7 @@ snapshots: webpack-sources@3.3.3(patch_hash=b2a26650f08a2359d0a3cd81fa6fa272aa7441a28dd7e601792da5ed5d2b4aee): {} - webpack@5.102.1: + webpack@5.102.1(webpack-cli@5.1.4): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.8 @@ -16760,7 +19145,7 @@ snapshots: '@webassemblyjs/wasm-parser': 1.14.1 acorn: 8.15.0 acorn-import-phases: 1.0.4(acorn@8.15.0) - browserslist: 4.26.3 + browserslist: 4.28.0 chrome-trace-event: 1.0.4 enhanced-resolve: 5.18.3 es-module-lexer: 1.7.0 @@ -16769,7 +19154,7 @@ snapshots: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.0 + loader-runner: 4.3.1 mime-types: 2.1.35 neo-async: 2.6.2 schema-utils: 4.3.3 @@ -16777,37 +19162,8 @@ snapshots: terser-webpack-plugin: 5.3.14(webpack@5.102.1) watchpack: 2.4.4 webpack-sources: 3.3.3(patch_hash=b2a26650f08a2359d0a3cd81fa6fa272aa7441a28dd7e601792da5ed5d2b4aee) - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - - webpack@5.99.9: - dependencies: - '@types/eslint-scope': 3.7.7 - '@types/estree': 1.0.8 - '@types/json-schema': 7.0.15 - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/wasm-edit': 1.14.1 - '@webassemblyjs/wasm-parser': 1.14.1 - acorn: 8.15.0 - browserslist: 4.26.2 - chrome-trace-event: 1.0.4 - enhanced-resolve: 5.18.3 - es-module-lexer: 1.7.0 - eslint-scope: 5.1.1 - events: 3.3.0 - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.0 - mime-types: 2.1.35 - neo-async: 2.6.2 - schema-utils: 4.3.3 - tapable: 2.2.3 - terser-webpack-plugin: 5.3.14(webpack@5.99.9) - watchpack: 2.4.4 - webpack-sources: 3.3.3(patch_hash=b2a26650f08a2359d0a3cd81fa6fa272aa7441a28dd7e601792da5ed5d2b4aee) + optionalDependencies: + webpack-cli: 5.1.4(webpack-dev-server@5.2.2)(webpack@5.102.1) transitivePeerDependencies: - '@swc/core' - esbuild @@ -16842,6 +19198,10 @@ snapshots: gopd: 1.2.0 has-tostringtag: 1.0.2 + which@1.3.1: + dependencies: + isexe: 2.0.0 + which@2.0.2: dependencies: isexe: 2.0.0 @@ -16851,6 +19211,10 @@ snapshots: siginfo: 2.0.0 stackback: 0.0.2 + widest-line@4.0.1: + dependencies: + string-width: 5.1.2 + wildcard@2.0.1: {} with@7.0.2: @@ -16866,7 +19230,7 @@ snapshots: schema-utils: 3.3.0 optionalDependencies: '@rspack/core': link:packages/rspack - webpack: 5.102.1 + webpack: 5.102.1(webpack-cli@5.1.4) wrap-ansi@6.2.0: dependencies: @@ -16901,6 +19265,10 @@ snapshots: ws@7.5.10: {} + ws@8.17.1: {} + + ws@8.18.0: {} + ws@8.18.3: {} wsl-utils@0.1.0: @@ -16911,7 +19279,7 @@ snapshots: xml-js@1.6.11: dependencies: - sax: 1.4.1 + sax: 1.4.3 xml-name-validator@5.0.0: {} @@ -16923,10 +19291,14 @@ snapshots: dependencies: cuint: 0.2.2 + y18n@5.0.8: {} + yallist@3.1.1: {} yallist@4.0.0: {} + yaml@1.10.2: {} + yaml@2.8.1: {} yamljs@0.3.0: @@ -16934,11 +19306,23 @@ snapshots: argparse: 1.0.10 glob: 7.2.3 + yargs-parser@21.1.1: {} + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + yn@3.1.1: {} yocto-queue@0.1.0: {} - yocto-queue@1.2.1: {} + yocto-queue@1.2.2: {} yoctocolors-cjs@2.1.3: {} diff --git a/tests/e2e/package.json b/tests/e2e/package.json index 94abfc93c3a6..a858b98005eb 100644 --- a/tests/e2e/package.json +++ b/tests/e2e/package.json @@ -9,7 +9,7 @@ "devDependencies": { "@babel/core": "^7.28.5", "@babel/preset-react": "^7.28.5", - "@playwright/test": "1.56.0", + "@playwright/test": "^1.56.0", "core-js": "3.46.0", "@rspack/core": "workspace:*", "@rspack/dev-server": "~1.1.4", @@ -30,4 +30,4 @@ "css-loader": "^7.1.2", "ws": "^8.18.3" } -} \ No newline at end of file +} diff --git a/tests/rspack-test/configCases/plugins/mini-css-extract-plugin/rspack.config.js b/tests/rspack-test/configCases/plugins/mini-css-extract-plugin/rspack.config.js index d4c72139ef84..148e159336b0 100644 --- a/tests/rspack-test/configCases/plugins/mini-css-extract-plugin/rspack.config.js +++ b/tests/rspack-test/configCases/plugins/mini-css-extract-plugin/rspack.config.js @@ -45,20 +45,15 @@ const config = (i, options) => ({ .chunks.map(c => c.id) .sort(); - expect(chunkIds).toEqual(process.env.WASM ? [ - "a", - "b", - "c", - "chunk_js-_d5940", - "chunk_js-_d5941", - "d_css", - "x" - ] : [ + // The two dynamic chunks have a stable prefix but non-stable suffixes across runtimes (native vs wasm). + const dynamicChunkIds = chunkIds.filter(id => id.startsWith("chunk_js-_")); + const staticChunkIds = chunkIds.filter(id => !id.startsWith("chunk_js-_")).sort(); + + expect(dynamicChunkIds).toHaveLength(2); + expect(staticChunkIds).toEqual([ "a", "b", "c", - "chunk_js-_aaff0", - "chunk_js-_aaff1", "d_css", "x" ]); diff --git a/tests/rspack-test/serialCases/container-1-5/2-async-startup-sync-imports/App.js b/tests/rspack-test/serialCases/container-1-5/2-async-startup-sync-imports/App.js new file mode 100644 index 000000000000..0403930aeede --- /dev/null +++ b/tests/rspack-test/serialCases/container-1-5/2-async-startup-sync-imports/App.js @@ -0,0 +1,12 @@ +// Test using synchronous imports from federated modules +// NOT using dynamic import() anywhere +import React from "react"; +import ComponentA from "containerA/ComponentA"; +import ComponentB from "containerB/ComponentB"; +import LocalComponentB from "./ComponentB"; + +export default () => { + return `App rendered with [${React()}] and [${ComponentA()}] and [${ComponentB()}]`; +}; + +expect(ComponentB).not.toBe(LocalComponentB); diff --git a/tests/rspack-test/serialCases/container-1-5/2-async-startup-sync-imports/ComponentB.js b/tests/rspack-test/serialCases/container-1-5/2-async-startup-sync-imports/ComponentB.js new file mode 100644 index 000000000000..1943469c7461 --- /dev/null +++ b/tests/rspack-test/serialCases/container-1-5/2-async-startup-sync-imports/ComponentB.js @@ -0,0 +1,5 @@ +import React from "react"; + +export default () => { + return `ComponentB rendered with [${React()}]`; +}; diff --git a/tests/rspack-test/serialCases/container-1-5/2-async-startup-sync-imports/ComponentC.js b/tests/rspack-test/serialCases/container-1-5/2-async-startup-sync-imports/ComponentC.js new file mode 100644 index 000000000000..3ff3832c7180 --- /dev/null +++ b/tests/rspack-test/serialCases/container-1-5/2-async-startup-sync-imports/ComponentC.js @@ -0,0 +1,7 @@ +import React from "react"; +import ComponentA from "containerA/ComponentA"; +import ComponentB from "containerB/ComponentB"; + +export default () => { + return `ComponentC rendered with [${React()}] and [${ComponentA()}] and [${ComponentB()}]`; +}; diff --git a/tests/rspack-test/serialCases/container-1-5/2-async-startup-sync-imports/index.js b/tests/rspack-test/serialCases/container-1-5/2-async-startup-sync-imports/index.js new file mode 100644 index 000000000000..2cb145735ac6 --- /dev/null +++ b/tests/rspack-test/serialCases/container-1-5/2-async-startup-sync-imports/index.js @@ -0,0 +1,145 @@ +const fs = require("fs"); +const path = require("path"); + +// Reset federation state between serial cases to ensure deterministic share scopes. +if (globalThis.__FEDERATION__) { + globalThis.__GLOBAL_LOADING_REMOTE_ENTRY__ = {}; + //@ts-ignore + globalThis.__FEDERATION__.__INSTANCES__.forEach(instance => { + instance.moduleCache.clear(); + if (globalThis[instance.name]) { + delete globalThis[instance.name]; + } + }); + globalThis.__FEDERATION__.__INSTANCES__ = []; +} + +it("should load the component from container", () => { + return import("./App").then(({ default: App }) => { + const rendered = App(); + const initial = parseRenderVersions(rendered); + expect(initial.host).toBe("2.1.0"); + expect(initial.localB).toBe("2.1.0"); + expect(["0.1.2", "3.2.1"]).toContain(initial.remote); + return import("./upgrade-react").then(({ default: upgrade }) => { + upgrade(); + const rendered = App(); + const upgraded = parseRenderVersions(rendered); + expect(upgraded.host).toBe("3.2.1"); + expect(upgraded.localB).toBe("3.2.1"); + expect(["0.1.2", "3.2.1"]).toContain(upgraded.remote); + }); + }); +}); + +it("should work in CommonJS format", () => { + // Verify async startup generates correct CommonJS wrapper + const baseDir = __dirname.endsWith("module") ? path.dirname(__dirname) : __dirname; + const content = fs.readFileSync(path.join(baseDir, "main.js"), "utf-8"); + expect(content).toContain("Promise.resolve().then(function() {"); + + // Functional test: verify bundle actually runs + return import("./App").then(({ default: App }) => { + expect(App()).toContain("App rendered with"); + }); +}); + +it("should work in ESM format", () => { + // Verify async startup generates correct ESM wrapper + const baseDir = __dirname.endsWith("module") ? path.dirname(__dirname) : __dirname; + const content = fs.readFileSync( + path.join(baseDir, "module", "main.mjs"), + "utf-8" + ); + expect(content).toContain( + "const __webpack_exports__Promise = Promise.resolve().then(async () =>" + ); + expect(content).toContain("export default await __webpack_exports__Promise;"); + + // Functional test would require dynamic ESM import which is complex in this context + // The wrapper syntax check is sufficient for format verification +}); + +it("should load remote components synchronously with static imports", () => { + // Verify that static imports from remotes work without dynamic import() + return import("./App").then(({ default: App }) => { + const rendered = App(); + + // Should successfully render with both remote and local components + expect(rendered).toContain("App rendered with"); + expect(rendered).toContain("ComponentA rendered with"); + expect(rendered).toContain("ComponentB rendered with"); + + // All components should have access to shared React + expect(rendered).toMatch(/This is react/g); + }); +}); + +it("should share singleton modules across host and remotes", () => { + // Reset React version to ensure test isolation + return import("./reset-react").then(({ default: reset }) => { + reset(); + + // Verify shared module singleton behavior + return import("./App").then(({ default: App }) => { + const rendered = App(); + const versions = parseRenderVersions(rendered); + + // After upgrade, all should use the same (upgraded) React version + return import("./upgrade-react").then(({ default: upgrade }) => { + upgrade(); + const afterUpgrade = App(); + const upgradedVersions = parseRenderVersions(afterUpgrade); + + // Host, local, and remote should all see the upgraded singleton + expect(upgradedVersions.host).toBe("3.2.1"); + expect(upgradedVersions.localB).toBe("3.2.1"); + + // Verifies singleton sharing works correctly with async startup + expect(["0.1.2", "3.2.1"]).toContain(upgradedVersions.remote); + }); + }); + }); +}); + +it("should initialize remotes before module execution", async () => { + // Import should succeed even though it contains static imports from remotes + // This verifies async startup properly initializes federation runtime first + const AppModule = await import("./App"); + + expect(AppModule.default).toBeInstanceOf(Function); + const rendered = AppModule.default(); + expect(rendered).toBeTruthy(); + + // Verify federation was initialized + // Note: In async startup mode, federation is initialized lazily when needed + // The runtime may be initialized without creating persistent instances + expect(globalThis.__FEDERATION__).toBeDefined(); +}); + +it("should handle self-referential remotes without infinite loops", () => { + // containerB points to itself - verify no infinite initialization loop + return import("./ComponentC").then(({ default: ComponentC }) => { + const rendered = ComponentC(); + + // Should successfully render without hanging + expect(rendered).toContain("ComponentC"); + + // Verify it can import from itself (containerB -> containerB/ComponentB) + expect(rendered).toContain("ComponentB"); + }); +}); + +const parseRenderVersions = rendered => { + const match = rendered.match( + /^App rendered with \[This is react ([^\]]+)\] and \[ComponentA rendered with \[This is react ([^\]]+)\]\] and \[ComponentB rendered with \[This is react ([^\]]+)\]\]$/ + ); + if (!match) { + throw new Error(`Unexpected render output: ${rendered}`); + } + return { + host: match[1], + remote: match[2], + localB: match[3] + }; +}; diff --git a/tests/rspack-test/serialCases/container-1-5/2-async-startup-sync-imports/node_modules/package.json b/tests/rspack-test/serialCases/container-1-5/2-async-startup-sync-imports/node_modules/package.json new file mode 100644 index 000000000000..87032da008ab --- /dev/null +++ b/tests/rspack-test/serialCases/container-1-5/2-async-startup-sync-imports/node_modules/package.json @@ -0,0 +1,3 @@ +{ + "version": "2.1.0" +} diff --git a/tests/rspack-test/serialCases/container-1-5/2-async-startup-sync-imports/node_modules/react.js b/tests/rspack-test/serialCases/container-1-5/2-async-startup-sync-imports/node_modules/react.js new file mode 100644 index 000000000000..97d35a4bc9c9 --- /dev/null +++ b/tests/rspack-test/serialCases/container-1-5/2-async-startup-sync-imports/node_modules/react.js @@ -0,0 +1,3 @@ +let version = "2.1.0"; +export default () => `This is react ${version}`; +export function setVersion(v) { version = v; } diff --git a/tests/rspack-test/serialCases/container-1-5/2-async-startup-sync-imports/package.json b/tests/rspack-test/serialCases/container-1-5/2-async-startup-sync-imports/package.json new file mode 100644 index 000000000000..be6238fec84d --- /dev/null +++ b/tests/rspack-test/serialCases/container-1-5/2-async-startup-sync-imports/package.json @@ -0,0 +1,9 @@ +{ + "private": true, + "engines": { + "node": ">=10.13.0" + }, + "dependencies": { + "react": "*" + } +} diff --git a/tests/rspack-test/serialCases/container-1-5/2-async-startup-sync-imports/reset-react.js b/tests/rspack-test/serialCases/container-1-5/2-async-startup-sync-imports/reset-react.js new file mode 100644 index 000000000000..46bef0722df5 --- /dev/null +++ b/tests/rspack-test/serialCases/container-1-5/2-async-startup-sync-imports/reset-react.js @@ -0,0 +1,5 @@ +import { setVersion } from "react"; + +export default function reset() { + setVersion("2.1.0"); +} diff --git a/tests/rspack-test/serialCases/container-1-5/2-async-startup-sync-imports/rspack.config.js b/tests/rspack-test/serialCases/container-1-5/2-async-startup-sync-imports/rspack.config.js new file mode 100644 index 000000000000..26a4dd876f12 --- /dev/null +++ b/tests/rspack-test/serialCases/container-1-5/2-async-startup-sync-imports/rspack.config.js @@ -0,0 +1,70 @@ +// eslint-disable-next-line node/no-unpublished-require +const { ModuleFederationPlugin } = require("@rspack/core").container; + +const common = { + entry: { + main: "./index.js" + } +}; + +/** @type {ConstructorParameters[0]} */ +const commonMF = { + runtime: false, + exposes: { + "./ComponentB": "./ComponentB", + "./ComponentC": "./ComponentC" + }, + shared: ["react"] +}; + +/** @type {import("@rspack/core").Configuration[]} */ +module.exports = [ + { + ...common, + output: { + filename: "[name].js", + uniqueName: "2-async-startup-sync-imports" + }, + plugins: [ + new ModuleFederationPlugin({ + name: "container", + library: { type: "commonjs-module" }, + filename: "container.js", + remotes: { + containerA: "../0-container-full/container.js", + containerB: "./container.js" + }, + ...commonMF, + experiments: { + asyncStartup: true + } + }) + ] + }, + { + ...common, + experiments: { + outputModule: true + }, + output: { + filename: "module/[name].mjs", + uniqueName: "2-async-startup-sync-imports-mjs" + }, + plugins: [ + new ModuleFederationPlugin({ + name: "container", + library: { type: "module" }, + filename: "module/container.mjs", + remotes: { + containerA: "../../0-container-full/module/container.mjs", + containerB: "./container.mjs" + }, + ...commonMF, + experiments: { + asyncStartup: true + } + }) + ], + target: "node14" + } +]; diff --git a/tests/rspack-test/serialCases/container-1-5/2-async-startup-sync-imports/test.config.js b/tests/rspack-test/serialCases/container-1-5/2-async-startup-sync-imports/test.config.js new file mode 100644 index 000000000000..616cd002c621 --- /dev/null +++ b/tests/rspack-test/serialCases/container-1-5/2-async-startup-sync-imports/test.config.js @@ -0,0 +1,6 @@ +/** @type {import('@rspack/test-tools').TConfigCaseConfig} */ +module.exports = { + findBundle: function (i, options) { + return i === 0 ? "./main.js" : "./module/main.mjs"; + } +}; diff --git a/tests/rspack-test/serialCases/container-1-5/2-async-startup-sync-imports/upgrade-react.js b/tests/rspack-test/serialCases/container-1-5/2-async-startup-sync-imports/upgrade-react.js new file mode 100644 index 000000000000..06fe09b52f70 --- /dev/null +++ b/tests/rspack-test/serialCases/container-1-5/2-async-startup-sync-imports/upgrade-react.js @@ -0,0 +1,11 @@ +import React, { setVersion } from "react"; + +export default function upgrade() { + // Detect current version and upgrade accordingly + const current = React(); + if (current.includes("2.1.0")) { + setVersion("3.2.1"); + } else if (current.includes("3.2.1")) { + setVersion("4.3.2"); + } +} diff --git a/tests/rspack-test/statsOutputCases/dynamic-import/__snapshots__/stats.txt b/tests/rspack-test/statsOutputCases/dynamic-import/__snapshots__/stats.txt index ade06dd39435..494762bc12b3 100644 --- a/tests/rspack-test/statsOutputCases/dynamic-import/__snapshots__/stats.txt +++ b/tests/rspack-test/statsOutputCases/dynamic-import/__snapshots__/stats.txt @@ -1,15 +1,15 @@ -asset common.js xx KiB [emitted] (name: common) (id hint: vendors) +asset common.js 1.11 MiB [emitted] (name: common) (id hint: vendors) asset pages/home.js xx KiB [emitted] (name: pages/home) asset runtime.js xx KiB [emitted] (name: runtime) asset main.js xx KiB [emitted] (name: main) -Entrypoint main 1.01 MiB = runtime.js xx KiB common.js xx KiB main.js xx KiB +Entrypoint main 1.12 MiB = runtime.js xx KiB common.js 1.11 MiB main.js xx KiB runtime modules xx KiB 14 modules -cacheable modules 1 MiB - modules by path ../../../../node_modules/.pnpm/ xx KiB +cacheable modules 1.12 MiB + modules by path ../../../../node_modules/.pnpm/ 1.1 MiB modules by path ../../../../node_modules//react/ xx KiB 4 modules - modules by path ../../../../node_modules//react-dom/ xx KiB + modules by path ../../../../node_modules//react-dom/ 1.04 MiB modules by path ../../../../node_modules//react-dom/*.js xx KiB 2 modules - modules by path ../../../../node_modules//react-dom/cjs/*.js xx KiB 2 modules + modules by path ../../../../node_modules//react-dom/cjs/*.js 1.03 MiB 2 modules modules by path ../../../../node_modules//scheduler/ xx KiB ../../../../node_modules//scheduler/index.js 194 bytes [built] [code generated] ../../../../node_modules//scheduler/cjs/scheduler.development.js xx KiB [built] [code generated]