From af3f1041a30b943729d311866388fc52cb2cb1f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20W=C3=B3jcik?= Date: Tue, 22 Sep 2026 12:11:58 +0200 Subject: [PATCH 01/16] update nix shell --- flake.lock | 12 ++++++------ flake.nix | 4 +++- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/flake.lock b/flake.lock index a5722241..5c3b32db 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1787135253, - "narHash": "sha256-RD2kNWCG+Bjo6h+JVjWVNntZs2GtRoeY2xHjts/FNkA=", + "lastModified": 1789921291, + "narHash": "sha256-Ft/BRnIqw1MywFoXydKobjjWmDFgDdYtSpJliE8+yUw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ffb3c9b700e759be2ef13237c9d8f953b32a1e46", + "rev": "44a91898084f46797b5fac650c7e8c9ac38c43d4", "type": "github" }, "original": { @@ -48,11 +48,11 @@ ] }, "locked": { - "lastModified": 1787281715, - "narHash": "sha256-5yIL5XL31hCZBPWDdUOvUy4cYAl27XZrke7JELhHlnI=", + "lastModified": 1790062494, + "narHash": "sha256-Mds1vuoczq1fRm1rf+Iar8IKDBHNjOMo2JqqPWJUlng=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "89abdfd661ea493cde2f73d7b1332cb34150aa43", + "rev": "b88764907c1b2de6c0e206d8d9d9634d91c81334", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 23412544..52a263f6 100644 --- a/flake.nix +++ b/flake.nix @@ -43,7 +43,9 @@ # define shared build inputs nativeBuildInputs = with pkgs; [rustToolchain pkg-config]; - buildInputs = with pkgs; [openssl protobuf nodejs_26 pnpm_11]; + buildInputs = with pkgs; + [openssl protobuf nodejs_26 pnpm_11] + ++ lib.optionals stdenv.hostPlatform.isLinux [systemd]; in { devShells.default = pkgs.mkShell { inherit nativeBuildInputs buildInputs; From 2e6655738b49f479943a138af883387925e270f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20W=C3=B3jcik?= Date: Tue, 22 Sep 2026 12:12:06 +0200 Subject: [PATCH 02/16] update dependencies --- Cargo.lock | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 867162bd..c2cc78ff 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -593,9 +593,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.4.6" +version = "1.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3eb0f42d6c360dc3f8a821f6bf2fdea7f72bfd36b3076eb0e6d1e9e0752fff4" +checksum = "54413ede23c2daf518f35156dfde027feb2374004d63bd497f983c8db9c0e313" dependencies = [ "find-msvc-tools", "jobserver", @@ -1553,9 +1553,9 @@ checksum = "64cd1e32ddd350061ae6edb1b082d7c54915b5c672c389143b9a63403a109f24" [[package]] name = "find-msvc-tools" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e0f1c7c3a72c66fd80abe965175f7523475c0489a87d3ff9d6e8c87d87a9d2d" +checksum = "ef25905e51abafe4dcea6c15fec58c57b601cdbd0ee53d22ea1d3016c587d39b" [[package]] name = "fixedbitset" @@ -2126,9 +2126,9 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.9" +version = "0.27.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33ca68d021ef39cf6463ab54c1d0f5daf03377b70561305bb89a8f83aab66e0f" +checksum = "dfa8e654703247911e29c23fbeaa261834bd9bb74efba2f9acddc37bfb127f53" dependencies = [ "http", "hyper", @@ -3739,7 +3739,7 @@ dependencies = [ "bytes", "getrandom 0.4.3", "lru-slab", - "rand 0.10.2", + "rand 0.10.3", "rand_pcg", "ring", "rustc-hash", @@ -3810,9 +3810,9 @@ dependencies = [ [[package]] name = "rand" -version = "0.10.2" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80" +checksum = "65c9fb96cbc91e3478eaae79a69fcd3f1ae4ad052e471fe6732fff548984b4af" dependencies = [ "chacha20", "getrandom 0.4.3", @@ -4780,7 +4780,7 @@ dependencies = [ "log", "md-5", "memchr", - "rand 0.10.2", + "rand 0.10.3", "serde", "serde_json", "sha2 0.11.0", From 9986a2051f740ef8fed3d61c6375db2fa7d43c18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20W=C3=B3jcik?= Date: Tue, 22 Sep 2026 12:12:35 +0200 Subject: [PATCH 03/16] update protobuf submodule --- proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proto b/proto index c7bda9d9..83da36b3 160000 --- a/proto +++ b/proto @@ -1 +1 @@ -Subproject commit c7bda9d94d4f1906331e0d1d21af197a40ecc160 +Subproject commit 83da36b380f8d843ef4983c24b98e47c84a4dae3 From e1c8d6dbc386319c25e78ce48eede32be86780fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20W=C3=B3jcik?= Date: Tue, 22 Sep 2026 12:46:57 +0200 Subject: [PATCH 04/16] add separate mfa flow routes --- build.rs | 19 ++ src/handlers/desktop_client_mfa.rs | 136 ++------------ src/handlers/mfa_flow.rs | 273 +++++++++++++++++++++++++++ src/handlers/mod.rs | 1 + src/http.rs | 3 +- src/tests/mfa_flow.rs | 286 +++++++++++++++++++++++++++++ src/tests/mod.rs | 1 + 7 files changed, 599 insertions(+), 120 deletions(-) create mode 100644 src/handlers/mfa_flow.rs create mode 100644 src/tests/mfa_flow.rs diff --git a/build.rs b/build.rs index ee65df42..0529f3a0 100644 --- a/build.rs +++ b/build.rs @@ -17,6 +17,25 @@ fn main() -> Result<(), Box> { "CodeMfaSetupFinishResponse", "CoreRequest", "CoreResponse", + "MfaBiometricSignature", + "MfaCodeCredential", + "MfaCompleted", + "MfaFido2Assertion", + "MfaFlowApproveRequest", + "MfaFlowRemoteRequest", + "MfaFlowRemoteResponse", + "MfaFlowStartAccepted", + "MfaFlowStartRequest", + "MfaFlowStartResponse", + "MfaFlowStepFinishRequest", + "MfaFlowStepFinishResponse", + "MfaFlowStepStartRequest", + "MfaFlowStepStartResponse", + "MfaMobileApprovalProof", + "MfaSignatureChallenge", + "MfaStepResult", + "MfaStepStarted", + "MfaFido2Challenge", "DeviceConfigResponse", "DevicePostureCheckRequest", "InstanceInfoResponse", diff --git a/src/handlers/desktop_client_mfa.rs b/src/handlers/desktop_client_mfa.rs index cbfea0fb..d4860f6c 100644 --- a/src/handlers/desktop_client_mfa.rs +++ b/src/handlers/desktop_client_mfa.rs @@ -20,8 +20,7 @@ use crate::{ http::AppState, proto::{ AwaitRemoteMfaFinishRequest, AwaitRemoteMfaFinishResponse, ClientMfaFinishRequest, - ClientMfaFinishResponse, ClientMfaStartRequest, ClientMfaStartResponse, - ClientMfaStepStartRequest, ClientMfaStepStartResponse, DeviceInfo, MfaStepResult, + ClientMfaFinishResponse, ClientMfaStartRequest, ClientMfaStartResponse, DeviceInfo, core_request, core_response::{self, Payload}, }, @@ -33,7 +32,6 @@ const REMOTE_AUTH_TIMEOUT: Duration = Duration::from_secs(60); pub(crate) fn router() -> Router { Router::new() .route("/start", post(start_client_mfa)) - .route("/step-start", post(step_start_client_mfa)) .route("/finish", post(finish_client_mfa)) .route("/remote", any(await_remote_auth)) .route("/finish-remote", post(finish_remote_mfa)) @@ -49,22 +47,11 @@ pub(crate) struct RemoteMfaRequestQuery { enum RemoteMfaResponse<'a> { #[serde(rename = "mfa_success")] Legacy { preshared_key: &'a str }, - #[serde(rename = "mfa_result")] - Result { result: &'a MfaStepResult }, } -fn remote_mfa_response(response: &AwaitRemoteMfaFinishResponse) -> Option> { - match response.result.as_ref() { - // New-protocol outcome: preserve the result and avoid the legacy success type. - Some(result) if result.outcome.is_some() => Some(RemoteMfaResponse::Result { result }), - // A present but empty result is malformed. Do not downgrade it to legacy behavior. - Some(_) => None, - // Legacy response: preserve the deprecated envelope for deployed clients. - None => { - #[allow(deprecated)] - let preshared_key = response.preshared_key.as_str(); - Some(RemoteMfaResponse::Legacy { preshared_key }) - } +fn remote_mfa_response(response: &AwaitRemoteMfaFinishResponse) -> RemoteMfaResponse<'_> { + RemoteMfaResponse::Legacy { + preshared_key: response.preshared_key.as_str(), } } @@ -127,20 +114,16 @@ async fn handle_remote_auth_socket( set.spawn(async move { match rx.await { Ok(Payload::AwaitRemoteMfaFinish(response)) => { - if let Some(ws_response) = remote_mfa_response(&response) { - match serde_json::to_string(&ws_response) { - Ok(serialized) => { - let message = Message::Text(serialized.into()); - if let Err(err) = ws_tx.send(message).await { - error!("Failed to send MFA result via ws: {err:?}"); - } - } - Err(err) => { - error!("Failed to serialize MFA result for ws: {err:?}"); + match serde_json::to_string(&remote_mfa_response(&response)) { + Ok(serialized) => { + let message = Message::Text(serialized.into()); + if let Err(err) = ws_tx.send(message).await { + error!("Failed to send MFA result via ws: {err:?}"); } } - } else { - error!("Received malformed MFA result from Core"); + Err(err) => { + error!("Failed to serialize MFA result for ws: {err:?}"); + } } } Ok(Payload::CoreError(status)) if status.status_code == tonic::Code::Aborted as i32 => { @@ -219,25 +202,6 @@ async fn start_client_mfa( } } -#[instrument(level = "debug", skip(state, req))] -async fn step_start_client_mfa( - State(state): State, - device_info: DeviceInfo, - Json(req): Json, -) -> Result, ApiError> { - info!("Starting MFA step for desktop client authorization"); - let rx = state - .grpc_server - .send(core_request::Payload::ClientMfaStepStart(req), device_info)?; - let payload = get_core_response(rx, None).await?; - if let core_response::Payload::ClientMfaStepStart(response) = payload { - Ok(Json(response)) - } else { - error!("Received invalid gRPC response type, expected ClientMfaStepStart"); - Err(ApiError::InvalidResponseType) - } -} - #[instrument(level = "debug", skip(state, req))] async fn finish_client_mfa( State(state): State, @@ -278,73 +242,14 @@ async fn finish_remote_mfa( #[cfg(test)] mod tests { use super::remote_mfa_response; - use crate::proto::{ - AwaitRemoteMfaFinishResponse, MfaAdvanced, MfaAwaitingExternal, MfaCompleted, - MfaStepResult, mfa_step_result, - }; - - #[allow(deprecated)] - fn response(result: Option) -> AwaitRemoteMfaFinishResponse { - AwaitRemoteMfaFinishResponse { - preshared_key: "legacy-psk".to_string(), - result, - } - } - - fn result(outcome: mfa_step_result::Outcome) -> MfaStepResult { - MfaStepResult { - outcome: Some(outcome), - } - } - - fn serialized(response: &AwaitRemoteMfaFinishResponse) -> serde_json::Value { - serde_json::from_str( - &serde_json::to_string(&remote_mfa_response(response).expect("valid MFA result")) - .expect("MFA response should serialize"), - ) - .expect("MFA response should be valid JSON") - } - - #[test] - fn test_completed_uses_result_envelope() { - let result = result(mfa_step_result::Outcome::Completed(MfaCompleted { - preshared_key: "completed-psk".to_string(), - })); - let frame = serialized(&response(Some(result.clone()))); - - assert_eq!(frame["type"], serde_json::json!("mfa_result")); - assert_eq!(frame["result"], serde_json::to_value(&result).unwrap()); - assert!(frame.get("preshared_key").is_none()); - } - - #[test] - fn test_advanced_uses_result_envelope() { - let result = result(mfa_step_result::Outcome::Advanced(MfaAdvanced { - next_step: 1, - })); - let frame = serialized(&response(Some(result.clone()))); - - assert_eq!(frame["type"], serde_json::json!("mfa_result")); - assert_eq!(frame["result"], serde_json::to_value(&result).unwrap()); - assert!(frame.get("preshared_key").is_none()); - } - - #[test] - fn test_awaiting_external_uses_result_envelope() { - let result = result(mfa_step_result::Outcome::AwaitingExternal( - MfaAwaitingExternal {}, - )); - let frame = serialized(&response(Some(result.clone()))); - - assert_eq!(frame["type"], serde_json::json!("mfa_result")); - assert_eq!(frame["result"], serde_json::to_value(&result).unwrap()); - assert!(frame.get("preshared_key").is_none()); - } + use crate::proto::AwaitRemoteMfaFinishResponse; #[test] fn test_legacy_response_preserves_success_envelope() { - let response = response(None); - let serialized = serde_json::to_string(&remote_mfa_response(&response).expect("legacy")) + let response = AwaitRemoteMfaFinishResponse { + preshared_key: "legacy-psk".to_string(), + }; + let serialized = serde_json::to_string(&remote_mfa_response(&response)) .expect("legacy response should serialize"); assert_eq!( @@ -352,11 +257,4 @@ mod tests { r#"{"type":"mfa_success","preshared_key":"legacy-psk"}"# ); } - - #[test] - fn test_empty_result_fails_closed() { - let response = response(Some(MfaStepResult { outcome: None })); - - assert!(remote_mfa_response(&response).is_none()); - } } diff --git a/src/handlers/mfa_flow.rs b/src/handlers/mfa_flow.rs new file mode 100644 index 00000000..018041c2 --- /dev/null +++ b/src/handlers/mfa_flow.rs @@ -0,0 +1,273 @@ +use std::time::Duration; + +use axum::{ + Json, Router, + extract::{ + Query, State, WebSocketUpgrade, + ws::{Message, WebSocket}, + }, + response::Response, + routing::{any, post}, +}; +use futures_util::{sink::SinkExt, stream::StreamExt}; +use serde::{Deserialize, Serialize}; +use serde_json::json; +use tokio::{sync::oneshot::Receiver, task::JoinSet}; + +use crate::{ + error::ApiError, + handlers::get_core_response, + http::AppState, + proto::{ + DeviceInfo, MfaFlowApproveRequest, MfaFlowRemoteRequest, MfaFlowRemoteResponse, + MfaFlowStartRequest, MfaFlowStartResponse, MfaFlowStepFinishRequest, + MfaFlowStepFinishResponse, MfaFlowStepStartRequest, MfaFlowStepStartResponse, + MfaStepResult, core_request, core_response::Payload, mfa_step_result, + }, +}; + +const REMOTE_AUTH_TIMEOUT: Duration = Duration::from_secs(60); + +pub(crate) fn router() -> Router { + Router::new() + .route("/start", post(start_mfa_flow)) + .route("/step-start", post(step_start_mfa_flow)) + .route("/step-finish", post(step_finish_mfa_flow)) + .route("/approve", post(approve_mfa_flow)) + .route("/remote", any(remote_mfa_flow)) +} + +#[derive(Deserialize)] +pub(crate) struct RemoteMfaRequestQuery { + pub token: String, + pub step_attempt_id: String, +} + +#[derive(Serialize)] +#[serde(tag = "type")] +enum MfaFlowSocketResponse<'a> { + #[serde(rename = "mfa_result")] + Result { result: &'a MfaStepResult }, +} + +fn mfa_flow_socket_response(response: &MfaFlowRemoteResponse) -> Option> { + let result = response.result.as_ref()?; + match result.outcome.as_ref() { + Some(mfa_step_result::Outcome::Advanced(_)) + | Some(mfa_step_result::Outcome::Completed(_)) => { + Some(MfaFlowSocketResponse::Result { result }) + } + Some(mfa_step_result::Outcome::AwaitingExternal(_)) | None => None, + } +} + +#[instrument(level = "debug", skip_all)] +async fn start_mfa_flow( + State(state): State, + device_info: DeviceInfo, + Json(request): Json, +) -> Result, ApiError> { + let rx = state + .grpc_server + .send(core_request::Payload::MfaFlowStart(request), device_info)?; + let payload = get_core_response(rx, None).await?; + if let Payload::MfaFlowStart(response) = payload { + Ok(Json(response)) + } else { + error!("Received invalid gRPC response type, expected MfaFlowStart"); + Err(ApiError::InvalidResponseType) + } +} + +#[instrument(level = "debug", skip_all)] +async fn step_start_mfa_flow( + State(state): State, + device_info: DeviceInfo, + Json(request): Json, +) -> Result, ApiError> { + let rx = state.grpc_server.send( + core_request::Payload::MfaFlowStepStart(request), + device_info, + )?; + let payload = get_core_response(rx, None).await?; + if let Payload::MfaFlowStepStart(response) = payload { + Ok(Json(response)) + } else { + error!("Received invalid gRPC response type, expected MfaFlowStepStart"); + Err(ApiError::InvalidResponseType) + } +} + +#[instrument(level = "debug", skip_all)] +async fn step_finish_mfa_flow( + State(state): State, + device_info: DeviceInfo, + Json(request): Json, +) -> Result, ApiError> { + let rx = state.grpc_server.send( + core_request::Payload::MfaFlowStepFinish(request), + device_info, + )?; + let payload = get_core_response(rx, None).await?; + if let Payload::MfaFlowStepFinish(response) = payload { + Ok(Json(response)) + } else { + error!("Received invalid gRPC response type, expected MfaFlowStepFinish"); + Err(ApiError::InvalidResponseType) + } +} + +#[instrument(level = "debug", skip_all)] +async fn approve_mfa_flow( + State(state): State, + device_info: DeviceInfo, + Json(request): Json, +) -> Result, ApiError> { + let rx = state + .grpc_server + .send(core_request::Payload::MfaFlowApprove(request), device_info)?; + let payload = get_core_response(rx, None).await?; + if let Payload::Empty(()) = payload { + Ok(Json(json!({}))) + } else { + error!("Received invalid gRPC response type, expected empty response"); + Err(ApiError::InvalidResponseType) + } +} + +pub(crate) fn send_mfa_flow_remote( + state: &AppState, + request: MfaFlowRemoteRequest, + device_info: DeviceInfo, +) -> Result, ApiError> { + state + .grpc_server + .send(core_request::Payload::MfaFlowRemote(request), device_info) +} + +#[instrument(level = "debug", skip_all)] +async fn remote_mfa_flow( + ws: WebSocketUpgrade, + Query(query): Query, + State(state): State, + device_info: DeviceInfo, +) -> Result { + let request = MfaFlowRemoteRequest { + token: query.token, + step_attempt_id: query.step_attempt_id, + }; + let rx = send_mfa_flow_remote(&state, request, device_info)?; + + Ok(ws.on_upgrade(move |socket| handle_remote_mfa_flow_socket(socket, rx))) +} + +async fn handle_remote_mfa_flow_socket(socket: WebSocket, rx: Receiver) { + let (mut ws_tx, mut ws_rx) = socket.split(); + let mut set = JoinSet::new(); + + set.spawn(async move { + match get_core_response(rx, Some(REMOTE_AUTH_TIMEOUT)).await { + Ok(Payload::MfaFlowRemote(response)) => { + if let Some(ws_response) = mfa_flow_socket_response(&response) { + match serde_json::to_string(&ws_response) { + Ok(serialized) => { + if ws_tx.send(Message::Text(serialized.into())).await.is_err() { + error!("Failed to send MFA flow result via WebSocket"); + } + } + Err(_) => error!("Failed to serialize MFA flow result for WebSocket"), + } + } else { + error!("Received invalid MFA flow remote result from Core"); + } + } + Ok(_) => error!("Received invalid gRPC response type, expected MfaFlowRemote"), + Err(_) => error!("Failed to receive MFA flow remote result from Core"), + } + + let _ = ws_tx.close().await; + }); + + set.spawn(async move { + while let Some(message) = ws_rx.next().await { + match message { + Ok(Message::Close(_)) => break, + Ok(_) => {} + Err(_) => { + error!("MFA flow WebSocket client listen error"); + break; + } + } + } + }); + + let _ = set.join_next().await; + set.shutdown().await; +} + +#[cfg(test)] +mod tests { + use super::*; + use crate::proto::{MfaAdvanced, MfaCompleted, mfa_step_result}; + + fn response(outcome: mfa_step_result::Outcome) -> MfaFlowRemoteResponse { + MfaFlowRemoteResponse { + result: Some(MfaStepResult { + outcome: Some(outcome), + }), + } + } + + fn serialized(response: &MfaFlowRemoteResponse) -> serde_json::Value { + serde_json::to_value(mfa_flow_socket_response(response).expect("valid remote result")) + .expect("MFA flow response should serialize") + } + + #[test] + fn advanced_serializes_as_mfa_result() { + let frame = serialized(&response(mfa_step_result::Outcome::Advanced(MfaAdvanced { + next_step: 1, + }))); + + assert_eq!( + frame, + serde_json::json!({ + "type": "mfa_result", + "result": {"outcome": {"Advanced": {"next_step": 1}}} + }) + ); + } + + #[test] + fn completed_nests_the_preshared_key() { + let frame = serialized(&response(mfa_step_result::Outcome::Completed( + MfaCompleted { + preshared_key: "completed-psk".to_string(), + }, + ))); + + assert_eq!( + frame, + serde_json::json!({ + "type": "mfa_result", + "result": { + "outcome": {"Completed": {"preshared_key": "completed-psk"}} + } + }) + ); + assert!(frame.get("preshared_key").is_none()); + } + + #[test] + fn awaiting_external_is_not_a_remote_result() { + let response = MfaFlowRemoteResponse { + result: Some(MfaStepResult { + outcome: Some(mfa_step_result::Outcome::AwaitingExternal( + crate::proto::MfaAwaitingExternal {}, + )), + }), + }; + + assert!(mfa_flow_socket_response(&response).is_none()); + } +} diff --git a/src/handlers/mod.rs b/src/handlers/mod.rs index ada1f175..f3af3702 100644 --- a/src/handlers/mod.rs +++ b/src/handlers/mod.rs @@ -18,6 +18,7 @@ use crate::{error::ApiError, http::ENROLLMENT_COOKIE_NAME, proto::core_response: pub(crate) mod desktop_client_mfa; pub(crate) mod enrollment; pub(crate) mod mfa_config; +pub(crate) mod mfa_flow; pub(crate) mod mobile_client; pub(crate) mod password_reset; pub(crate) mod polling; diff --git a/src/http.rs b/src/http.rs index 2ffae12a..b51893a6 100644 --- a/src/http.rs +++ b/src/http.rs @@ -50,7 +50,7 @@ use crate::{ enterprise::handlers::{desktop_client_posture, openid_login}, error::ApiError, grpc::{ProxyServer, TlsConfig}, - handlers::{desktop_client_mfa, enrollment, mfa_config, password_reset, polling}, + handlers::{desktop_client_mfa, enrollment, mfa_config, mfa_flow, password_reset, polling}, setup::ProxySetupServer, }; @@ -428,6 +428,7 @@ pub(crate) fn api_router() -> Router { .nest("/enrollment", enrollment::router()) .nest("/password-reset", password_reset::router()) .nest("/client-mfa", desktop_client_mfa::router()) + .nest("/mfa-flow", mfa_flow::router()) .nest("/mfa-config", mfa_config::router()) .nest("/openid", openid_login::router()) .nest("/posture", desktop_client_posture::router()) diff --git a/src/tests/mfa_flow.rs b/src/tests/mfa_flow.rs new file mode 100644 index 00000000..1ae1b681 --- /dev/null +++ b/src/tests/mfa_flow.rs @@ -0,0 +1,286 @@ +use std::sync::Arc; + +use axum::http::StatusCode; +use serde_json::json; + +use crate::{ + handlers::mfa_flow::send_mfa_flow_remote, + http::AppState, + proto::{ + ClientMfaFinishRequest, ClientMfaFinishResponse, ClientMfaStartRequest, + ClientMfaStartResponse, DeviceInfo, MfaAdvanced, MfaAwaitingExternal, MfaCodeCredential, + MfaCompleted, MfaFlowApproveRequest, MfaFlowRemoteRequest, MfaFlowRemoteResponse, + MfaFlowStartAccepted, MfaFlowStartRequest, MfaFlowStartResponse, MfaFlowStepFinishRequest, + MfaFlowStepFinishResponse, MfaFlowStepStartRequest, MfaFlowStepStartResponse, MfaMethod, + MfaMobileApprovalProof, MfaSignatureChallenge, MfaStepResult, MfaStepStarted, core_request, + core_response, mfa_flow_start_response, mfa_flow_step_finish_request, mfa_step_result, + mfa_step_started, + }, + tests::support::{app_with_fake_core, cookie_key, post_json, test_proxy_server}, +}; + +fn first_step() -> MfaStepStarted { + MfaStepStarted { + step_attempt_id: "attempt-id".to_string(), + challenge: Some(mfa_step_started::Challenge::Signature( + MfaSignatureChallenge { + challenge: "challenge".to_string(), + }, + )), + } +} + +fn start_response() -> MfaFlowStartResponse { + MfaFlowStartResponse { + outcome: Some(mfa_flow_start_response::Outcome::Accepted( + MfaFlowStartAccepted { + token: "flow-token".to_string(), + first_step: Some(first_step()), + }, + )), + } +} + +#[tokio::test] +async fn start_dispatches_to_mfa_flow_start() { + let response = start_response(); + let expected = serde_json::to_value(&response).unwrap(); + let app = app_with_fake_core(move |payload| match payload { + core_request::Payload::MfaFlowStart(request) => { + assert!(request.location_id == 7); + assert!(request.pubkey == "device-public-key"); + assert!(request.selected_methods == vec![MfaMethod::Totp as i32]); + core_response::Payload::MfaFlowStart(response.clone()) + } + _ => panic!("unexpected Core request"), + }); + + let request = MfaFlowStartRequest { + location_id: 7, + pubkey: "device-public-key".to_string(), + posture_data: None, + selected_methods: vec![MfaMethod::Totp as i32], + }; + let (status, body) = post_json(&app, "/api/v1/mfa-flow/start", &request).await; + + assert_eq!(status, StatusCode::OK); + assert!(body == expected); +} + +#[tokio::test] +async fn step_start_dispatches_to_mfa_flow_step_start() { + let response = MfaFlowStepStartResponse { + started: Some(first_step()), + }; + let expected = serde_json::to_value(&response).unwrap(); + let app = app_with_fake_core(move |payload| match payload { + core_request::Payload::MfaFlowStepStart(request) => { + assert!(request.token == "flow-token"); + assert!(request.method == MfaMethod::Email as i32); + core_response::Payload::MfaFlowStepStart(response.clone()) + } + _ => panic!("unexpected Core request"), + }); + + let request = MfaFlowStepStartRequest { + token: "flow-token".to_string(), + method: MfaMethod::Email as i32, + }; + let (status, body) = post_json(&app, "/api/v1/mfa-flow/step-start", &request).await; + + assert_eq!(status, StatusCode::OK); + assert!(body == expected); +} + +#[tokio::test] +async fn step_finish_dispatches_and_preserves_all_result_arms() { + let outcomes = [ + mfa_step_result::Outcome::Advanced(MfaAdvanced { next_step: 1 }), + mfa_step_result::Outcome::Completed(MfaCompleted { + preshared_key: "flow-psk".to_string(), + }), + mfa_step_result::Outcome::AwaitingExternal(MfaAwaitingExternal {}), + ]; + + for outcome in outcomes { + let response = MfaFlowStepFinishResponse { + result: Some(MfaStepResult { + outcome: Some(outcome), + }), + }; + let expected = serde_json::to_value(&response).unwrap(); + let app = app_with_fake_core(move |payload| match payload { + core_request::Payload::MfaFlowStepFinish(request) => { + assert!(request.token == "flow-token"); + assert!(request.step_attempt_id == "attempt-id"); + assert!(matches!( + request.submission, + Some(mfa_flow_step_finish_request::Submission::Code(_)) + )); + core_response::Payload::MfaFlowStepFinish(response.clone()) + } + _ => panic!("unexpected Core request"), + }); + + let request = MfaFlowStepFinishRequest { + token: "flow-token".to_string(), + step_attempt_id: "attempt-id".to_string(), + submission: Some(mfa_flow_step_finish_request::Submission::Code( + MfaCodeCredential { + code: "123456".to_string(), + }, + )), + }; + let (status, body) = post_json(&app, "/api/v1/mfa-flow/step-finish", &request).await; + + assert_eq!(status, StatusCode::OK); + assert!(body == expected); + } +} + +#[tokio::test] +async fn approve_dispatches_and_returns_empty_json() { + let app = app_with_fake_core(|payload| match payload { + core_request::Payload::MfaFlowApprove(request) => { + assert!(request.token == "flow-token"); + assert!(request.step_attempt_id == "attempt-id"); + assert!(matches!(request.proof, Some(MfaMobileApprovalProof { .. }))); + core_response::Payload::Empty(()) + } + _ => panic!("unexpected Core request"), + }); + + let request = MfaFlowApproveRequest { + token: "flow-token".to_string(), + step_attempt_id: "attempt-id".to_string(), + proof: Some(MfaMobileApprovalProof { + signature: "signature".to_string(), + auth_pub_key: "auth-public-key".to_string(), + }), + }; + let (status, body) = post_json(&app, "/api/v1/mfa-flow/approve", &request).await; + + assert_eq!(status, StatusCode::OK); + assert!(body == json!({})); +} + +#[tokio::test] +async fn remote_dispatches_to_mfa_flow_remote() { + let cookie_key = cookie_key(); + let server = test_proxy_server(Arc::clone(&cookie_key)); + let mut requests = server.register_test_client(); + let state = AppState { + grpc_server: server.clone(), + cookie_key, + }; + let receiver = send_mfa_flow_remote( + &state, + MfaFlowRemoteRequest { + token: "flow-token".to_string(), + step_attempt_id: "attempt-id".to_string(), + }, + DeviceInfo { + ip_address: "10.0.0.1".to_string(), + user_agent: None, + version: None, + platform: None, + }, + ) + .unwrap(); + + let request = requests.recv().await.unwrap().unwrap(); + let request_id = request.id; + match request.payload { + Some(core_request::Payload::MfaFlowRemote(request)) => { + assert!(request.token == "flow-token"); + assert!(request.step_attempt_id == "attempt-id"); + } + _ => panic!("unexpected Core request"), + } + server.resolve_test_response( + request_id, + core_response::Payload::MfaFlowRemote(MfaFlowRemoteResponse { + result: Some(MfaStepResult { + outcome: Some(mfa_step_result::Outcome::Advanced(MfaAdvanced { + next_step: 1, + })), + }), + }), + ); + + assert!(matches!( + receiver.await.unwrap(), + core_response::Payload::MfaFlowRemote(_) + )); +} + +#[tokio::test] +async fn legacy_http_routes_keep_their_response_shapes() { + let app = app_with_fake_core(|payload| match payload { + core_request::Payload::ClientMfaStart(_) => { + core_response::Payload::ClientMfaStart(ClientMfaStartResponse { + token: "legacy-token".to_string(), + challenge: None, + }) + } + core_request::Payload::ClientMfaFinish(_) => { + core_response::Payload::ClientMfaFinish(ClientMfaFinishResponse { + preshared_key: "legacy-psk".to_string(), + token: None, + }) + } + _ => panic!("unexpected Core request"), + }); + + let (status, body) = post_json( + &app, + "/api/v1/client-mfa/start", + &ClientMfaStartRequest { + location_id: 7, + pubkey: "device-public-key".to_string(), + method: MfaMethod::Totp as i32, + posture_data: None, + }, + ) + .await; + assert_eq!(status, StatusCode::OK); + assert!(body == json!({"token": "legacy-token", "challenge": null})); + + let finish_request = ClientMfaFinishRequest { + token: "legacy-token".to_string(), + code: Some("123456".to_string()), + auth_pub_key: None, + }; + let (status, body) = post_json(&app, "/api/v1/client-mfa/finish", &finish_request).await; + assert_eq!(status, StatusCode::OK); + assert!(body == json!({"preshared_key": "legacy-psk", "token": null})); + + let (status, body) = post_json(&app, "/api/v1/client-mfa/finish-remote", &finish_request).await; + assert_eq!(status, StatusCode::OK); + assert!(body == json!({})); +} + +#[tokio::test] +async fn legacy_step_start_is_an_unknown_route() { + let app = app_with_fake_core(|_| panic!("unknown route reached Core")); + let (step_status, step_body) = + post_json(&app, "/api/v1/client-mfa/step-start", &json!({})).await; + let (unknown_status, unknown_body) = + post_json(&app, "/api/v1/client-mfa/unknown", &json!({})).await; + + assert_eq!(step_status, unknown_status); + assert!(step_body == unknown_body); +} + +#[tokio::test] +async fn malformed_step_finish_is_rejected_before_core_dispatch() { + let app = app_with_fake_core(|_| panic!("malformed request reached Core")); + let (status, _) = post_json( + &app, + "/api/v1/mfa-flow/step-finish", + &json!({"token": "flow-token"}), + ) + .await; + + assert_eq!(status, StatusCode::UNPROCESSABLE_ENTITY); +} diff --git a/src/tests/mod.rs b/src/tests/mod.rs index 29186f8c..c45a6c1c 100644 --- a/src/tests/mod.rs +++ b/src/tests/mod.rs @@ -1,4 +1,5 @@ mod cookies; mod mfa_config; +mod mfa_flow; mod mtls; pub(crate) mod support; From 746a7533e714c4ed234c3b2fc463ddd8d29c5acf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20W=C3=B3jcik?= Date: Tue, 22 Sep 2026 23:52:05 +0200 Subject: [PATCH 05/16] fix test names --- src/handlers/mfa_flow.rs | 6 +++--- src/tests/mfa_flow.rs | 16 ++++++++-------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/handlers/mfa_flow.rs b/src/handlers/mfa_flow.rs index 018041c2..328393ca 100644 --- a/src/handlers/mfa_flow.rs +++ b/src/handlers/mfa_flow.rs @@ -224,7 +224,7 @@ mod tests { } #[test] - fn advanced_serializes_as_mfa_result() { + fn test_advanced_serializes_as_mfa_result() { let frame = serialized(&response(mfa_step_result::Outcome::Advanced(MfaAdvanced { next_step: 1, }))); @@ -239,7 +239,7 @@ mod tests { } #[test] - fn completed_nests_the_preshared_key() { + fn test_completed_nests_the_preshared_key() { let frame = serialized(&response(mfa_step_result::Outcome::Completed( MfaCompleted { preshared_key: "completed-psk".to_string(), @@ -259,7 +259,7 @@ mod tests { } #[test] - fn awaiting_external_is_not_a_remote_result() { + fn test_awaiting_external_is_not_a_remote_result() { let response = MfaFlowRemoteResponse { result: Some(MfaStepResult { outcome: Some(mfa_step_result::Outcome::AwaitingExternal( diff --git a/src/tests/mfa_flow.rs b/src/tests/mfa_flow.rs index 1ae1b681..9e7b4057 100644 --- a/src/tests/mfa_flow.rs +++ b/src/tests/mfa_flow.rs @@ -42,7 +42,7 @@ fn start_response() -> MfaFlowStartResponse { } #[tokio::test] -async fn start_dispatches_to_mfa_flow_start() { +async fn test_start_dispatches_to_mfa_flow_start() { let response = start_response(); let expected = serde_json::to_value(&response).unwrap(); let app = app_with_fake_core(move |payload| match payload { @@ -68,7 +68,7 @@ async fn start_dispatches_to_mfa_flow_start() { } #[tokio::test] -async fn step_start_dispatches_to_mfa_flow_step_start() { +async fn test_step_start_dispatches_to_mfa_flow_step_start() { let response = MfaFlowStepStartResponse { started: Some(first_step()), }; @@ -93,7 +93,7 @@ async fn step_start_dispatches_to_mfa_flow_step_start() { } #[tokio::test] -async fn step_finish_dispatches_and_preserves_all_result_arms() { +async fn test_step_finish_dispatches_and_preserves_all_result_arms() { let outcomes = [ mfa_step_result::Outcome::Advanced(MfaAdvanced { next_step: 1 }), mfa_step_result::Outcome::Completed(MfaCompleted { @@ -139,7 +139,7 @@ async fn step_finish_dispatches_and_preserves_all_result_arms() { } #[tokio::test] -async fn approve_dispatches_and_returns_empty_json() { +async fn test_approve_dispatches_and_returns_empty_json() { let app = app_with_fake_core(|payload| match payload { core_request::Payload::MfaFlowApprove(request) => { assert!(request.token == "flow-token"); @@ -165,7 +165,7 @@ async fn approve_dispatches_and_returns_empty_json() { } #[tokio::test] -async fn remote_dispatches_to_mfa_flow_remote() { +async fn test_remote_dispatches_to_mfa_flow_remote() { let cookie_key = cookie_key(); let server = test_proxy_server(Arc::clone(&cookie_key)); let mut requests = server.register_test_client(); @@ -215,7 +215,7 @@ async fn remote_dispatches_to_mfa_flow_remote() { } #[tokio::test] -async fn legacy_http_routes_keep_their_response_shapes() { +async fn test_legacy_http_routes_keep_their_response_shapes() { let app = app_with_fake_core(|payload| match payload { core_request::Payload::ClientMfaStart(_) => { core_response::Payload::ClientMfaStart(ClientMfaStartResponse { @@ -261,7 +261,7 @@ async fn legacy_http_routes_keep_their_response_shapes() { } #[tokio::test] -async fn legacy_step_start_is_an_unknown_route() { +async fn test_legacy_step_start_is_an_unknown_route() { let app = app_with_fake_core(|_| panic!("unknown route reached Core")); let (step_status, step_body) = post_json(&app, "/api/v1/client-mfa/step-start", &json!({})).await; @@ -273,7 +273,7 @@ async fn legacy_step_start_is_an_unknown_route() { } #[tokio::test] -async fn malformed_step_finish_is_rejected_before_core_dispatch() { +async fn test_malformed_step_finish_is_rejected_before_core_dispatch() { let app = app_with_fake_core(|_| panic!("malformed request reached Core")); let (status, _) = post_json( &app, From 01597097a586aa76ff9a48ec5e34f26e77f639d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20W=C3=B3jcik?= Date: Thu, 1 Oct 2026 15:21:44 +0200 Subject: [PATCH 06/16] update proto submodule --- proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proto b/proto index 83da36b3..76c49a76 160000 --- a/proto +++ b/proto @@ -1 +1 @@ -Subproject commit 83da36b380f8d843ef4983c24b98e47c84a4dae3 +Subproject commit 76c49a76eb884b25797875a03cc6ec873059db2d From e8a2b302227f4dcb5f5b3f454f50004ab363dd63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20W=C3=B3jcik?= Date: Fri, 2 Oct 2026 15:20:05 +0200 Subject: [PATCH 07/16] update proto submodule --- proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proto b/proto index 76c49a76..82342d41 160000 --- a/proto +++ b/proto @@ -1 +1 @@ -Subproject commit 76c49a76eb884b25797875a03cc6ec873059db2d +Subproject commit 82342d41da571dec327b48b8ca9cc55490e00652 From 2ed31db262f0e5bf82a348c3a46e5780572740b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20W=C3=B3jcik?= Date: Fri, 2 Oct 2026 17:00:05 +0200 Subject: [PATCH 08/16] update flake inputs --- flake.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/flake.lock b/flake.lock index 5c3b32db..ba0e2d8a 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1789921291, - "narHash": "sha256-Ft/BRnIqw1MywFoXydKobjjWmDFgDdYtSpJliE8+yUw=", + "lastModified": 1790822859, + "narHash": "sha256-69xHQhAeMAD2wDXO7T2pcOZIF9Sga2W+JkmY2a11Ops=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "44a91898084f46797b5fac650c7e8c9ac38c43d4", + "rev": "c59305bab2065cfecc4944690d9eedbb56f3a9fa", "type": "github" }, "original": { @@ -48,11 +48,11 @@ ] }, "locked": { - "lastModified": 1790062494, - "narHash": "sha256-Mds1vuoczq1fRm1rf+Iar8IKDBHNjOMo2JqqPWJUlng=", + "lastModified": 1790928989, + "narHash": "sha256-5r3MN/Rx7N9tLapCBmUq6/zCc3C9J7gNif1HybD1fJQ=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "b88764907c1b2de6c0e206d8d9d9634d91c81334", + "rev": "368fee9beaab04ca6fe7af28db63caa9badb22fa", "type": "github" }, "original": { From b85fea1b60de73f99b6481c7ab94290f5140107c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20W=C3=B3jcik?= Date: Mon, 5 Oct 2026 10:16:05 +0200 Subject: [PATCH 09/16] cleanup --- src/handlers/desktop_client_mfa.rs | 34 ++++++++++++------------------ src/handlers/mfa_flow.rs | 11 ++++------ 2 files changed, 17 insertions(+), 28 deletions(-) diff --git a/src/handlers/desktop_client_mfa.rs b/src/handlers/desktop_client_mfa.rs index d4860f6c..e6221dc6 100644 --- a/src/handlers/desktop_client_mfa.rs +++ b/src/handlers/desktop_client_mfa.rs @@ -19,9 +19,8 @@ use crate::{ handlers::get_core_response, http::AppState, proto::{ - AwaitRemoteMfaFinishRequest, AwaitRemoteMfaFinishResponse, ClientMfaFinishRequest, - ClientMfaFinishResponse, ClientMfaStartRequest, ClientMfaStartResponse, DeviceInfo, - core_request, + AwaitRemoteMfaFinishRequest, ClientMfaFinishRequest, ClientMfaFinishResponse, + ClientMfaStartRequest, ClientMfaStartResponse, DeviceInfo, core_request, core_response::{self, Payload}, }, }; @@ -43,16 +42,9 @@ pub(crate) struct RemoteMfaRequestQuery { } #[derive(Serialize)] -#[serde(tag = "type")] -enum RemoteMfaResponse<'a> { - #[serde(rename = "mfa_success")] - Legacy { preshared_key: &'a str }, -} - -fn remote_mfa_response(response: &AwaitRemoteMfaFinishResponse) -> RemoteMfaResponse<'_> { - RemoteMfaResponse::Legacy { - preshared_key: response.preshared_key.as_str(), - } +#[serde(tag = "type", rename = "mfa_success")] +struct RemoteMfaResponse<'a> { + preshared_key: &'a str, } // Allows desktop client to await for another device to complete MFA for it via mobile client. @@ -114,7 +106,9 @@ async fn handle_remote_auth_socket( set.spawn(async move { match rx.await { Ok(Payload::AwaitRemoteMfaFinish(response)) => { - match serde_json::to_string(&remote_mfa_response(&response)) { + match serde_json::to_string(&RemoteMfaResponse { + preshared_key: &response.preshared_key, + }) { Ok(serialized) => { let message = Message::Text(serialized.into()); if let Err(err) = ws_tx.send(message).await { @@ -241,16 +235,14 @@ async fn finish_remote_mfa( #[cfg(test)] mod tests { - use super::remote_mfa_response; - use crate::proto::AwaitRemoteMfaFinishResponse; + use super::RemoteMfaResponse; #[test] fn test_legacy_response_preserves_success_envelope() { - let response = AwaitRemoteMfaFinishResponse { - preshared_key: "legacy-psk".to_string(), - }; - let serialized = serde_json::to_string(&remote_mfa_response(&response)) - .expect("legacy response should serialize"); + let serialized = serde_json::to_string(&RemoteMfaResponse { + preshared_key: "legacy-psk", + }) + .expect("legacy response should serialize"); assert_eq!( serialized, diff --git a/src/handlers/mfa_flow.rs b/src/handlers/mfa_flow.rs index 328393ca..6e01ce82 100644 --- a/src/handlers/mfa_flow.rs +++ b/src/handlers/mfa_flow.rs @@ -44,19 +44,16 @@ pub(crate) struct RemoteMfaRequestQuery { } #[derive(Serialize)] -#[serde(tag = "type")] -enum MfaFlowSocketResponse<'a> { - #[serde(rename = "mfa_result")] - Result { result: &'a MfaStepResult }, +#[serde(tag = "type", rename = "mfa_result")] +struct MfaFlowSocketResponse<'a> { + result: &'a MfaStepResult, } fn mfa_flow_socket_response(response: &MfaFlowRemoteResponse) -> Option> { let result = response.result.as_ref()?; match result.outcome.as_ref() { Some(mfa_step_result::Outcome::Advanced(_)) - | Some(mfa_step_result::Outcome::Completed(_)) => { - Some(MfaFlowSocketResponse::Result { result }) - } + | Some(mfa_step_result::Outcome::Completed(_)) => Some(MfaFlowSocketResponse { result }), Some(mfa_step_result::Outcome::AwaitingExternal(_)) | None => None, } } From 4d2151dfb198c9fe0758d2e3a38982c0817ef64d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20W=C3=B3jcik?= Date: Mon, 5 Oct 2026 11:11:05 +0200 Subject: [PATCH 10/16] update submodule --- proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proto b/proto index 82342d41..8df8c23b 160000 --- a/proto +++ b/proto @@ -1 +1 @@ -Subproject commit 82342d41da571dec327b48b8ca9cc55490e00652 +Subproject commit 8df8c23b49d29349822280917dcdc4a2baf04d61 From dd262197c511627a82e4d31c2b413264cf868f13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20W=C3=B3jcik?= Date: Mon, 5 Oct 2026 11:54:49 +0200 Subject: [PATCH 11/16] update proto submodule --- proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proto b/proto index 8df8c23b..54bb86a4 160000 --- a/proto +++ b/proto @@ -1 +1 @@ -Subproject commit 8df8c23b49d29349822280917dcdc4a2baf04d61 +Subproject commit 54bb86a40760f4bb4e9aec0bc2242189776451ea From 10d3f7740f5bee808f495c2b387bfa3bb42f3af6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20W=C3=B3jcik?= Date: Mon, 5 Oct 2026 12:48:14 +0200 Subject: [PATCH 12/16] update proto submodule --- proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proto b/proto index 54bb86a4..f1565967 160000 --- a/proto +++ b/proto @@ -1 +1 @@ -Subproject commit 54bb86a40760f4bb4e9aec0bc2242189776451ea +Subproject commit f1565967e17d6ca714b66246685af1f8f6200ee4 From cdfa8a8d35d79a930af9abbcf6804f0000d133fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20W=C3=B3jcik?= Date: Wed, 7 Oct 2026 09:47:19 +0200 Subject: [PATCH 13/16] fix posture error mapping --- src/handlers/mfa_flow.rs | 15 ++++++++++----- src/tests/mfa_flow.rs | 37 ++++++++++++++++++++++++++++++------- 2 files changed, 40 insertions(+), 12 deletions(-) diff --git a/src/handlers/mfa_flow.rs b/src/handlers/mfa_flow.rs index 6e01ce82..0f1d0fa6 100644 --- a/src/handlers/mfa_flow.rs +++ b/src/handlers/mfa_flow.rs @@ -68,11 +68,16 @@ async fn start_mfa_flow( .grpc_server .send(core_request::Payload::MfaFlowStart(request), device_info)?; let payload = get_core_response(rx, None).await?; - if let Payload::MfaFlowStart(response) = payload { - Ok(Json(response)) - } else { - error!("Received invalid gRPC response type, expected MfaFlowStart"); - Err(ApiError::InvalidResponseType) + match payload { + Payload::MfaFlowStart(response) => Ok(Json(response)), + Payload::DevicePostureRejected(response) => { + info!("Desktop client failed posture check {response:?}"); + Err(ApiError::PostureRejected(response.failed_posture_checks)) + } + _ => { + error!("Received invalid gRPC response type, expected MfaFlowStart"); + Err(ApiError::InvalidResponseType) + } } } diff --git a/src/tests/mfa_flow.rs b/src/tests/mfa_flow.rs index 9e7b4057..54e2c24b 100644 --- a/src/tests/mfa_flow.rs +++ b/src/tests/mfa_flow.rs @@ -8,13 +8,13 @@ use crate::{ http::AppState, proto::{ ClientMfaFinishRequest, ClientMfaFinishResponse, ClientMfaStartRequest, - ClientMfaStartResponse, DeviceInfo, MfaAdvanced, MfaAwaitingExternal, MfaCodeCredential, - MfaCompleted, MfaFlowApproveRequest, MfaFlowRemoteRequest, MfaFlowRemoteResponse, - MfaFlowStartAccepted, MfaFlowStartRequest, MfaFlowStartResponse, MfaFlowStepFinishRequest, - MfaFlowStepFinishResponse, MfaFlowStepStartRequest, MfaFlowStepStartResponse, MfaMethod, - MfaMobileApprovalProof, MfaSignatureChallenge, MfaStepResult, MfaStepStarted, core_request, - core_response, mfa_flow_start_response, mfa_flow_step_finish_request, mfa_step_result, - mfa_step_started, + ClientMfaStartResponse, DeviceInfo, DevicePostureRejection, MfaAdvanced, + MfaAwaitingExternal, MfaCodeCredential, MfaCompleted, MfaFlowApproveRequest, + MfaFlowRemoteRequest, MfaFlowRemoteResponse, MfaFlowStartAccepted, MfaFlowStartRequest, + MfaFlowStartResponse, MfaFlowStepFinishRequest, MfaFlowStepFinishResponse, + MfaFlowStepStartRequest, MfaFlowStepStartResponse, MfaMethod, MfaMobileApprovalProof, + MfaSignatureChallenge, MfaStepResult, MfaStepStarted, core_request, core_response, + mfa_flow_start_response, mfa_flow_step_finish_request, mfa_step_result, mfa_step_started, }, tests::support::{app_with_fake_core, cookie_key, post_json, test_proxy_server}, }; @@ -67,6 +67,29 @@ async fn test_start_dispatches_to_mfa_flow_start() { assert!(body == expected); } +#[tokio::test] +async fn test_start_maps_posture_rejection_to_forbidden() { + let app = app_with_fake_core(|payload| match payload { + core_request::Payload::MfaFlowStart(_) => { + core_response::Payload::DevicePostureRejected(DevicePostureRejection { + failed_posture_checks: vec!["OS version".to_string()], + }) + } + _ => panic!("unexpected Core request"), + }); + + let request = MfaFlowStartRequest { + location_id: 7, + pubkey: "device-public-key".to_string(), + posture_data: None, + selected_methods: vec![MfaMethod::Totp as i32], + }; + let (status, body) = post_json(&app, "/api/v1/mfa-flow/start", &request).await; + + assert_eq!(status, StatusCode::FORBIDDEN); + assert_eq!(body, json!({"error": "OS version"})); +} + #[tokio::test] async fn test_step_start_dispatches_to_mfa_flow_step_start() { let response = MfaFlowStepStartResponse { From 8c9090aae320440142faa2c3e09aa81da025c8d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20W=C3=B3jcik?= Date: Wed, 7 Oct 2026 10:45:34 +0200 Subject: [PATCH 14/16] update dependencies --- web/package.json | 24 +- web/pnpm-lock.yaml | 1985 ++++++++++++++++++++++++++------------------ 2 files changed, 1195 insertions(+), 814 deletions(-) diff --git a/web/package.json b/web/package.json index f0901863..94cb2bb5 100644 --- a/web/package.json +++ b/web/package.json @@ -21,9 +21,9 @@ "@react-hook/resize-observer": "^2.0.2", "@tanstack/react-devtools": "^0.10.13", "@tanstack/react-form": "^1.33.5", - "@tanstack/react-query": "^5.104.0", - "@tanstack/react-query-devtools": "^5.104.0", - "@tanstack/react-router": "^1.170.39", + "@tanstack/react-query": "^5.104.1", + "@tanstack/react-query-devtools": "^5.104.1", + "@tanstack/react-router": "^1.170.41", "@tanstack/react-router-devtools": "^1.167.2", "@tanstack/react-table": "^8.21.3", "@tanstack/react-virtual": "^3.14.13", @@ -49,26 +49,26 @@ }, "devDependencies": { "@biomejs/biome": "2.5.14", - "@inlang/paraglide-js": "^2.20.1", + "@inlang/paraglide-js": "^2.25.4", "@tanstack/devtools-vite": "^0.8.5", - "@tanstack/router-plugin": "^1.168.41", + "@tanstack/router-plugin": "^1.168.42", "@types/lodash-es": "^4.17.12", - "@types/node": "^26.6.3", + "@types/node": "^26.6.4", "@types/qs": "^6.15.1", "@types/react": "^19.3.0", "@types/react-dom": "^19.3.0", "@vitejs/plugin-react-swc": "^4.3.3", - "globals": "^17.12.0", + "globals": "^17.13.0", "prettier": "^3.9.9", "sass": "^1.105.1", - "sharp": "^0.35.4", - "stylelint": "^17.15.0", + "sharp": "^0.35.5", + "stylelint": "^17.16.0", "stylelint-config-standard-scss": "^17.0.0", "stylelint-scss": "^7.3.0", "typescript": "~6.0.3", - "typescript-eslint": "^8.69.0", - "vite": "^8.3.1", + "typescript-eslint": "^8.71.1", + "vite": "^8.3.3", "vite-plugin-image-optimizer": "^2.0.3", - "vitest": "^4.1.9" + "vitest": "^4.1.11" } } diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 6c4e29ac..94c59c7d 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -30,17 +30,17 @@ importers: specifier: ^1.33.5 version: 1.33.5(react-dom@19.3.0(react@19.3.0))(react@19.3.0) '@tanstack/react-query': - specifier: ^5.104.0 - version: 5.104.0(react@19.3.0) + specifier: ^5.104.1 + version: 5.104.1(react@19.3.0) '@tanstack/react-query-devtools': - specifier: ^5.104.0 - version: 5.104.0(@tanstack/react-query@5.104.0(react@19.3.0))(@types/react@19.3.0)(csstype@3.2.3)(react@19.3.0) + specifier: ^5.104.1 + version: 5.104.1(@tanstack/react-query@5.104.1(react@19.3.0))(@types/react@19.3.0)(csstype@3.2.3)(react@19.3.0) '@tanstack/react-router': - specifier: ^1.170.39 - version: 1.170.39(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + specifier: ^1.170.41 + version: 1.170.41(react-dom@19.3.0(react@19.3.0))(react@19.3.0) '@tanstack/react-router-devtools': specifier: ^1.167.2 - version: 1.167.2(@tanstack/react-router@1.170.39(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(@tanstack/router-core@1.171.33)(csstype@3.2.3)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + version: 1.167.2(@tanstack/react-router@1.170.41(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(@tanstack/router-core@1.171.34)(csstype@3.2.3)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) '@tanstack/react-table': specifier: ^8.21.3 version: 8.21.3(react-dom@19.3.0(react@19.3.0))(react@19.3.0) @@ -103,26 +103,26 @@ importers: version: 4.6.5 zustand: specifier: ^5.0.15 - version: 5.0.15(@types/react@19.3.0)(react@19.3.0)(use-sync-external-store@1.6.0(react@19.3.0)) + version: 5.0.15(@types/react@19.3.0)(react@19.3.0)(use-sync-external-store@1.7.0(react@19.3.0)) devDependencies: '@biomejs/biome': specifier: 2.5.14 version: 2.5.14 '@inlang/paraglide-js': - specifier: ^2.20.1 - version: 2.20.1(typescript@6.0.3) + specifier: ^2.25.4 + version: 2.25.4(typescript@6.0.3)(vite@8.3.3(@types/node@26.6.4)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.105.1)(tsx@4.21.0)) '@tanstack/devtools-vite': specifier: ^0.8.5 - version: 0.8.5(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)(vite@8.3.1(@types/node@26.6.3)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.105.1)(tsx@4.21.0)) + version: 0.8.5(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)(vite@8.3.3(@types/node@26.6.4)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.105.1)(tsx@4.21.0)) '@tanstack/router-plugin': - specifier: ^1.168.41 - version: 1.168.41(@tanstack/react-router@1.170.39(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(esbuild@0.28.2)(rolldown@1.2.11)(rollup@4.63.1)(vite@8.3.1(@types/node@26.6.3)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.105.1)(tsx@4.21.0)) + specifier: ^1.168.42 + version: 1.168.42(@tanstack/react-router@1.170.41(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(esbuild@0.28.2)(rolldown@1.2.12)(rollup@4.63.1)(vite@8.3.3(@types/node@26.6.4)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.105.1)(tsx@4.21.0)) '@types/lodash-es': specifier: ^4.17.12 version: 4.17.12 '@types/node': - specifier: ^26.6.3 - version: 26.6.3 + specifier: ^26.6.4 + version: 26.6.4 '@types/qs': specifier: ^6.15.1 version: 6.15.1 @@ -134,10 +134,10 @@ importers: version: 19.3.0(@types/react@19.3.0) '@vitejs/plugin-react-swc': specifier: ^4.3.3 - version: 4.3.3(@swc/helpers@0.5.23)(vite@8.3.1(@types/node@26.6.3)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.105.1)(tsx@4.21.0)) + version: 4.3.3(@swc/helpers@0.5.23)(vite@8.3.3(@types/node@26.6.4)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.105.1)(tsx@4.21.0)) globals: - specifier: ^17.12.0 - version: 17.12.0 + specifier: ^17.13.0 + version: 17.13.0 prettier: specifier: ^3.9.9 version: 3.9.9 @@ -145,32 +145,32 @@ importers: specifier: ^1.105.1 version: 1.105.1 sharp: - specifier: ^0.35.4 - version: 0.35.4(@types/node@26.6.3) + specifier: ^0.35.5 + version: 0.35.5(@types/node@26.6.4) stylelint: - specifier: ^17.15.0 - version: 17.15.0(typescript@6.0.3) + specifier: ^17.16.0 + version: 17.16.0(typescript@6.0.3) stylelint-config-standard-scss: specifier: ^17.0.0 - version: 17.0.0(postcss@8.5.28)(stylelint@17.15.0(typescript@6.0.3)) + version: 17.0.0(postcss@8.5.29)(stylelint@17.16.0(typescript@6.0.3)) stylelint-scss: specifier: ^7.3.0 - version: 7.3.0(stylelint@17.15.0(typescript@6.0.3)) + version: 7.3.0(stylelint@17.16.0(typescript@6.0.3)) typescript: specifier: ~6.0.3 version: 6.0.3 typescript-eslint: - specifier: ^8.69.0 - version: 8.69.0(eslint@9.38.0(jiti@2.7.0))(typescript@6.0.3) + specifier: ^8.71.1 + version: 8.71.1(eslint@9.38.0(jiti@2.7.0))(typescript@6.0.3) vite: - specifier: ^8.3.1 - version: 8.3.1(@types/node@26.6.3)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.105.1)(tsx@4.21.0) + specifier: ^8.3.3 + version: 8.3.3(@types/node@26.6.4)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.105.1)(tsx@4.21.0) vite-plugin-image-optimizer: specifier: ^2.0.3 - version: 2.0.3(sharp@0.35.4(@types/node@26.6.3))(vite@8.3.1(@types/node@26.6.3)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.105.1)(tsx@4.21.0)) + version: 2.0.3(sharp@0.35.5(@types/node@26.6.4))(vite@8.3.3(@types/node@26.6.4)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.105.1)(tsx@4.21.0)) vitest: - specifier: ^4.1.9 - version: 4.1.9(@types/node@26.6.3)(vite@8.3.1(@types/node@26.6.3)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.105.1)(tsx@4.21.0)) + specifier: ^4.1.11 + version: 4.1.11(@types/node@26.6.4)(vite@8.3.3(@types/node@26.6.4)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.105.1)(tsx@4.21.0)) packages: @@ -230,8 +230,8 @@ packages: resolution: {integrity: sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==} engines: {node: '>=6.9.0'} - '@babel/parser@7.29.8': - resolution: {integrity: sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==} + '@babel/parser@7.29.9': + resolution: {integrity: sha512-CjXrNHTnvqBVqHgdBysY3vk2T8tpJHb5/RMeHJBTyVa9xgugCB0CJTx/3oO8RV2QRQP391RWpB7D6hLjm8V9uA==} engines: {node: '>=6.0.0'} hasBin: true @@ -304,6 +304,74 @@ packages: cpu: [x64] os: [win32] + '@bytecodealliance/jco-node-fs-darwin-arm64@0.3.2': + resolution: {integrity: sha512-WXQq1tRVUWhbK+ImH0G8Kni2AR0sdokLf/KyXRw5P6n4A9ZbgMHOuPfN/PEsYgw4eosuTAonutK0xILk/hA81A==} + engines: {node: '>=20'} + cpu: [arm64] + os: [darwin] + + '@bytecodealliance/jco-node-fs-darwin-x64@0.3.2': + resolution: {integrity: sha512-Fy/OjHnto7hNE5ksewVkmAMXG/uXyj+RAKFZWQFTzFkp73UyT5vuPjKq3nvx9KolUGWBG37BudEMb4ZAoD9TbQ==} + engines: {node: '>=20'} + cpu: [x64] + os: [darwin] + + '@bytecodealliance/jco-node-fs-linux-arm64-gnu@0.3.2': + resolution: {integrity: sha512-OafRtRu3tfOFQARfkia/LDEqSo2R3yAL1xPwzf4RcRW6JqkOY7qKWsUS5+LPVo/aFaSkMX7F7bdFGpFPmcoZJg==} + engines: {node: '>=20'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@bytecodealliance/jco-node-fs-linux-arm64-musl@0.3.2': + resolution: {integrity: sha512-JblDiwD7+Y+w0d/tjaNDX4QdGvh5lyuDc+S/jDeT7sYA1caA9yiwIjLa8PC/lm2xudqSxD+Cuy4AosXvl+qI0g==} + engines: {node: '>=20'} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@bytecodealliance/jco-node-fs-linux-x64-gnu@0.3.2': + resolution: {integrity: sha512-6FzmHoLOsa6b4X9AuFLsvlpNF66Dt4sRRftZHaT1I1pYzCWrJkkpgNJhRXxf67ZPmOwBZJT4dan/g752Rx4xRw==} + engines: {node: '>=20'} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@bytecodealliance/jco-node-fs-linux-x64-musl@0.3.2': + resolution: {integrity: sha512-SbAJG2PDV8YAHBESHU9sVSckOitJyvlezdF4CGP5/mOp01JnijVkLVXzGK62yVSfa5TpAybbSd1rk+v36NAW/Q==} + engines: {node: '>=20'} + cpu: [x64] + os: [linux] + libc: [musl] + + '@bytecodealliance/jco-node-fs-win32-arm64-msvc@0.3.2': + resolution: {integrity: sha512-nUWYdFysRQJGsIOCk0KAYN2smkNYiHG7rZ7m+0ZXqP+5wqWxKEjkDsORwXiBjdaWFLVww0anZ3SBxrju6P7hXQ==} + engines: {node: '>=20'} + cpu: [arm64] + os: [win32] + + '@bytecodealliance/jco-node-fs-win32-x64-msvc@0.3.2': + resolution: {integrity: sha512-RsPj2t8TvltsMWK7/Z7JcVC/IWPMi07/AJkNLiNTCuGTdT/sseqTThJJwhuz3sjFw7dJdxA+bSGT+23y/KT0fw==} + engines: {node: '>=20'} + cpu: [x64] + os: [win32] + + '@bytecodealliance/jco-node-fs@0.3.2': + resolution: {integrity: sha512-yxvqQreNcOQdMsEKZomkSqThtkxrAz3f1Cmy8BsV0UHi9saa2/D1KDB14IAXPYwDq/maS6lCzS+MuMQx6QkUgA==} + engines: {node: '>=20'} + + '@bytecodealliance/jco-transpile@0.13.0': + resolution: {integrity: sha512-9hZ2GMqOlYP1Bf7qQ8v3sCsmkFoXGbgi0HtjHipzrgyk+9GGDzvvbehTGe0oM54rcbKJacvyjpPDn7wtpgzwYA==} + + '@bytecodealliance/preview2-shim@0.24.1': + resolution: {integrity: sha512-QGZsKD5M76xBhwu3BzLWqYDEpaMX90QWrrfhkQPn2pN9t378koumtdAVH4lr25mqGCZt10YNXkWvyWkw/vJbLQ==} + + '@bytecodealliance/preview2-shim@0.25.0': + resolution: {integrity: sha512-6ZSDRJ8hJc/febZepzd68z3KzLcOXyCOKtRm8LB2rgAU88xV7ykq6dMb5I4a+sBh1cuV2Yb1159gDzI1q8UsoQ==} + + '@bytecodealliance/preview3-shim@0.6.1': + resolution: {integrity: sha512-61mEfjfgGmZhEMA0H3waawPKvYd3za9y0vJ7pmQz/9yvm4FR6Ef+cmqhnxDE7ezsM07MY1btP92ymmgsgFwxmg==} + '@cacheable/memory@2.2.0': resolution: {integrity: sha512-CTLKqLItRCEixEAewD3/j9DB3/o96gpTPD4eJ1v+DGOlxZRZncRQkGYqqnAGCscYd6RNeXfGeiuCphsPtqyIfQ==} @@ -318,56 +386,65 @@ packages: peerDependencies: solid-js: ^1.8 - '@csstools/css-calc@3.3.0': - resolution: {integrity: sha512-c5ihYsPkdG6JCkU2zTMm4+k6r7RXuGxtWYhu5DHMIiF1FHzrfmHL5so11AoFpUv/tu61xfcmT4AmKoFfMPoqdQ==} + '@csstools/css-calc@3.4.3': + resolution: {integrity: sha512-iex20d8CHVkyvg6B7UKV7uHnI2Bqo9g+EFfT9E0y+GvTvhZ/DwONJ+9aKb1dlqm0ZiGsL5RXjp0fCoJYnkeDjA==} engines: {node: '>=20.19.0'} peerDependencies: - '@csstools/css-parser-algorithms': ^4.0.0 - '@csstools/css-tokenizer': ^4.0.0 + '@csstools/css-parser-algorithms': ^4.0.2 + '@csstools/css-tokenizer': ^4.0.2 - '@csstools/css-parser-algorithms@4.0.0': - resolution: {integrity: sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==} + '@csstools/css-parser-algorithms@4.0.2': + resolution: {integrity: sha512-40cSKyMvK+tq4qz6Awrlye2WGuOKt3FwPgtGg6KTfbHOWNw+Rk1rzbAtZnZ6IBhsY491HLRnDXwoyBAijmmILA==} engines: {node: '>=20.19.0'} peerDependencies: - '@csstools/css-tokenizer': ^4.0.0 + '@csstools/css-tokenizer': ^4.0.2 - '@csstools/css-syntax-patches-for-csstree@1.1.12': - resolution: {integrity: sha512-3vLQK+dXxhBMR2Wx99PTCifE+vHtW2ndZWyla8yK813ev6oGhyn8Lja8jCyGAWTJ+LEYZK7EVtJxrDj8ztevJw==} + '@csstools/css-syntax-patches-for-csstree@1.1.15': + resolution: {integrity: sha512-J0u7HkVl2nzSlhsiTOp4AmwcUQ3D+mGEEKfBy/7To5/y7F2OHwyLrXfrhR0SMgr4p5Lo+eaMVSeai24zUcBIxA==} peerDependencies: css-tree: ^3.2.1 peerDependenciesMeta: css-tree: optional: true - '@csstools/css-tokenizer@4.0.0': - resolution: {integrity: sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==} + '@csstools/css-tokenizer@4.0.2': + resolution: {integrity: sha512-OoKoR0f76dCY666JlcbhmVTs2drYj1GUXZTYTcbUgJjh9Nv41aFfZ21bPQTERm5+L5cBDo466NltB2lplS5GBw==} engines: {node: '>=20.19.0'} - '@csstools/media-query-list-parser@5.0.0': - resolution: {integrity: sha512-T9lXmZOfnam3eMERPsszjY5NK0jX8RmThmmm99FZ8b7z8yMaFZWKwLWGZuTwdO3ddRY5fy13GmmEYZXB4I98Eg==} + '@csstools/media-query-list-parser@5.0.2': + resolution: {integrity: sha512-qx19O8AbbLLbDSAcI6YOby/Vq8rV51psgIvlF5OZT/L8fQJDCyQifL6k+kYU4a8ySpzJ4RBzZkIs530bAn8y4Q==} engines: {node: '>=20.19.0'} peerDependencies: - '@csstools/css-parser-algorithms': ^4.0.0 - '@csstools/css-tokenizer': ^4.0.0 + '@csstools/css-parser-algorithms': ^4.0.2 + '@csstools/css-tokenizer': ^4.0.2 - '@csstools/selector-resolve-nested@4.0.1': - resolution: {integrity: sha512-j3vdQu0XwLME5qOTWxm8cnmvsf423R2YL6DbKklCHZwkDm7UdKNu6RPlw4REIJhSlKBICY3B70/7QZdicLqZgg==} + '@csstools/selector-resolve-nested@4.0.2': + resolution: {integrity: sha512-JpjNBJFA+4OnAHKRK4AMp8xrYyLhI9XapOeBlP2PhRU/IylSw+1ep3BFNTksBJnrTS3KT6kqKNVfpzLLwZUW5Q==} engines: {node: '>=20.19.0'} peerDependencies: postcss-selector-parser: ^7.1.1 - '@csstools/selector-specificity@6.0.0': - resolution: {integrity: sha512-4sSgl78OtOXEX/2d++8A83zHNTgwCJMaR24FvsYL7Uf/VS8HZk9PTwR51elTbGqMuwH3szLvvOXEaVnqn0Z3zA==} + '@csstools/selector-specificity@6.0.1': + resolution: {integrity: sha512-MBuqFIIvqk4S593MGAskTkPpEUUzZNvGzh8mMxEwl3oHwjQlXmqHEDxNbN3Y0Tsh+xjmem4GZjeg7I0qkwBivg==} engines: {node: '>=20.19.0'} peerDependencies: postcss-selector-parser: ^7.1.1 + '@emnapi/core@1.11.1': + resolution: {integrity: sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==} + '@emnapi/core@1.11.3': resolution: {integrity: sha512-zLpS5asjEb7lq8jYLq37N6XKaE41DIexlY1rF/z4/tIl3wo13Sqm28fRyfIsKZD+NZ8mM5RoKkpW/rBcuoSZSg==} + '@emnapi/runtime@1.11.1': + resolution: {integrity: sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==} + '@emnapi/runtime@1.11.3': resolution: {integrity: sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==} + '@emnapi/wasi-threads@1.2.2': + resolution: {integrity: sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==} + '@emnapi/wasi-threads@1.2.3': resolution: {integrity: sha512-ELEBe8PsLvvJ6QMr0zLt8ffvOHW/dc1m3CEzNMg7aJUv3bMaoDtw2TXyDAwkYBuroxxuHEwhRTLJSe5sya547g==} @@ -770,178 +847,181 @@ packages: resolution: {integrity: sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==} engines: {node: '>=18'} - '@img/sharp-darwin-arm64@0.35.4': - resolution: {integrity: sha512-Uhfl4V4lhP2nbUVF9+hyH1+luj86f1gUFeo8ALYxFoULoU+G87D43BfeMP8XHsk9boxAnCY/bf2EHwhA7MuGsA==} + '@img/sharp-darwin-arm64@0.35.5': + resolution: {integrity: sha512-QRUlFQ0WxvdWyqqG/WtI3iupfD5rBzmCHXSdPsY91sAtVtTo7Q4cb6zOccZ3gqEqkr0f1As1ehLqmEpDsRf+lg==} engines: {node: '>=20.9.0'} cpu: [arm64] os: [darwin] - '@img/sharp-darwin-x64@0.35.4': - resolution: {integrity: sha512-hWniXY3bG5qKpkKrAwPe4y+VTPmf086YQAnkxWh7uA1YrlRouWGa0M0Mxj3ZjnXFkv7/TD1bTy9lGUK26vRvWw==} + '@img/sharp-darwin-x64@0.35.5': + resolution: {integrity: sha512-+BR255RhDlpygUpOc/Jdt1nT6DQ3XG/ERo5wbcdOf5Q320dKtPCKPLR1LJs9VGXRaMa8l1uUa0tkCNOXiAxZUw==} engines: {node: '>=20.9.0'} cpu: [x64] os: [darwin] - '@img/sharp-freebsd-wasm32@0.35.4': - resolution: {integrity: sha512-lIsKw/BU+kjB4eZjxrYrZmwOJYi3Ajrv66iAlBmUPyKc3HpnloevB1g3wxGD9P/5BbQ1brBGl65VRRrCvQDEqA==} + '@img/sharp-freebsd-wasm32@0.35.5': + resolution: {integrity: sha512-Y/z91nEZ4uIBX5X3nfTovjU9lHNKFYbL2lpHCLVNmXQK03VIZvXBBt0KxbPGp2SdGSF+2mQU4e+hQaWOt86iAw==} engines: {node: '>=20.9.0'} os: [freebsd] - '@img/sharp-libvips-darwin-arm64@1.3.3': - resolution: {integrity: sha512-suTBPTDGrI9WodccaDdwZItTSaBYASlBk1NSfElSHrUfzu3szG6lvIF58+WiFvnfzuK8ZBFS5zE00PxqxnRiPg==} + '@img/sharp-libvips-darwin-arm64@1.3.4': + resolution: {integrity: sha512-5R89nBYiRdUlSWJxPhO+GVtaXzXSxKnRu/xqMn3KTA3L9EB9Oy/P+Nn2f2vlhPuUdy/Zusb2DarbyTpGCfEDuw==} cpu: [arm64] os: [darwin] - '@img/sharp-libvips-darwin-x64@1.3.3': - resolution: {integrity: sha512-FVJZ5mITMobmXIz/hPDTw0EintTW5H3WfrxwLqEqjiIihlu+hVRyGrFQ60xl0Lxn7Bt3zdpevPaQi0HEzqz9fw==} + '@img/sharp-libvips-darwin-x64@1.3.4': + resolution: {integrity: sha512-iR2OKH80yi0U+dUplyh3/xdpFvps6YkCwsXenIJxqxR1v9o+xtKTGbS9H7cps+2Vxjc8B1j96p75NmTGjIhtpQ==} cpu: [x64] os: [darwin] - '@img/sharp-libvips-linux-arm64@1.3.3': - resolution: {integrity: sha512-0DaL0A6Xu6sQSQFwe4iVCrKWU2cCTItnRsYsCdxAMm9NF6twAA9BKnoqy4hqz4+azQ0JHuA26qiUKsf1XJ/v5A==} + '@img/sharp-libvips-linux-arm64@1.3.4': + resolution: {integrity: sha512-Y3dgX/6lE2QhQb+Gxy0WZxfg9MEm/JBjamZpS2IklP7xIQoKN4hzAm7KcMVGtaVDt3neE9OKBC7vAfonA/Lr1A==} cpu: [arm64] os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-arm@1.3.3': - resolution: {integrity: sha512-3rbU4vqXXc3hY/OiXdl52xZvT0F1yEngWfvqudtPJg/KkyiaQw2DRsFrNzpmLvfavbwOq3qXn36GP8obHRULQA==} + '@img/sharp-libvips-linux-arm@1.3.4': + resolution: {integrity: sha512-LmRtTsOHuvM2+wlO2Db37dx5MiZhB0FvSunciw48YjdOkZz9KAiRbm8ujeMOA1INqmei5NapFxYEK1D1ZSidmw==} cpu: [arm] os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-ppc64@1.3.3': - resolution: {integrity: sha512-cdn1OvUBwsXhbC0zSzJnNzf5MZ/mTrobawDvNXBTxe8VtqKAm0sRuEY2Evzovb/w9JMk4TvRxqt1mekSuJz64w==} + '@img/sharp-libvips-linux-ppc64@1.3.4': + resolution: {integrity: sha512-Le6boB8Tai0Nis+gIxIpKx68UDVVIqdR8Tin5Yf1z2LJJQLDJvCDRqRu+jC2qCoD+eIomonmOwB4smBRxfVpYQ==} cpu: [ppc64] os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-riscv64@1.3.3': - resolution: {integrity: sha512-HjPVx7yKz+0lqdhDlTw1tt90wamBoxhiXpvl1XZpJLiHH4RCJ5yDTqH+VlYPv2fwFs89JFw4c1IexYOcQUi4IQ==} + '@img/sharp-libvips-linux-riscv64@1.3.4': + resolution: {integrity: sha512-aHkkIEHPRdQEegJN20MLmGtxYD9R2wQr3Cwpddnu5+YKMt6Uzax7S9h5gpZTo8wyrGuZSlfQ63OevL5mTyOC7Q==} cpu: [riscv64] os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-s390x@1.3.3': - resolution: {integrity: sha512-neWLh+3yCNThxnfy3c4BbVBeGgt9aftno+XbT56iK28RgeDs3UOFWviLWlUu0bArYVYJaFDK+RRohbicUNCm8Q==} + '@img/sharp-libvips-linux-s390x@1.3.4': + resolution: {integrity: sha512-ra/mB6MikESDUO7Yg+Mi95bFBb9GsObURuhnOv3OqknjGe9sZrG8tCe9q0xSIGrtLgvgw0gKnFWcK4blSgQOuQ==} cpu: [s390x] os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-x64@1.3.3': - resolution: {integrity: sha512-4vKmvAst9nrowcqquKFAyZJUDolUaIp8uRiN0mWFguJ1IplC9/pitXtlnnlU4aa/eJw3J7i67V+pwUL+wZGdsA==} + '@img/sharp-libvips-linux-x64@1.3.4': + resolution: {integrity: sha512-GJ//SSXbnwSDes02umB3nDJLFcQzw8a18V8fyhqr6tV515tOEMdImjjxj1AoafMRz56F3PHgftnj1QEKSU1zkw==} cpu: [x64] os: [linux] libc: [glibc] - '@img/sharp-libvips-linuxmusl-arm64@1.3.3': - resolution: {integrity: sha512-Y9kQaLMuNoB0bPYOOdcZMaseNrFpPodIWWMrx+CZyydf2xn68j9WYc6sWWRrDwNkzCQjKYfc68L7jKjGlHMibw==} + '@img/sharp-libvips-linuxmusl-arm64@1.3.4': + resolution: {integrity: sha512-hvulFwtjUcagsis6BBxHwGFwWoNZjgYmULGVrZcyfNbjA8hKILbRxGg15/7w5HDyXHXUos/j6baAWqnCyQ2DWA==} cpu: [arm64] os: [linux] libc: [musl] - '@img/sharp-libvips-linuxmusl-x64@1.3.3': - resolution: {integrity: sha512-fj8Mv0HHfD1Rr+4I68+3agJynxDWtBFgicTbSOb9Bke6pIwzGcJ+RX/yHjmiEGFMCavY/dxvem7MyNaJF+wDiw==} + '@img/sharp-libvips-linuxmusl-x64@1.3.4': + resolution: {integrity: sha512-6zXKeE/p39I1AmA3cJG35eyBGNqNddLnUXjhwBnsGjFPWqf5VKkDBEqaEkPDoTEtkxwi2vv8Tcr2mDyP4So7Fg==} cpu: [x64] os: [linux] libc: [musl] - '@img/sharp-linux-arm64@0.35.4': - resolution: {integrity: sha512-De4jpEnAU8Hd5oT0j1G3uL4ZvTuipVMn7YC6vPaJhy6/7EwEae0SVAoBrUMYQbkLGDm85taVWwuPc1a44LTzCQ==} + '@img/sharp-linux-arm64@0.35.5': + resolution: {integrity: sha512-LYVx5JTsOM2CBzmxreh+nl64/3H6Xb09iSLknqH47z2T2DFFxDeFLP5y4dJwe6H7uGQlHPyEEtIqyo3DYsRwdQ==} engines: {node: '>=20.9.0'} cpu: [arm64] os: [linux] libc: [glibc] - '@img/sharp-linux-arm@0.35.4': - resolution: {integrity: sha512-7OAS8gI0EReKGVN2HssHlM6umJgxF5VI3xN0p9FA91p/YO+ou5hiNghLdZ5BEHztwaaK5+bLKRf8x/o2L2nk9A==} + '@img/sharp-linux-arm@0.35.5': + resolution: {integrity: sha512-LEaXK2WdXVK5ykcw0buWyPMsmLLL2vpHLD6yrNSW+JGEL3BZPA4tpKN6iaMc4AxTTAoaX/sU1rOL51lcIz48ZQ==} engines: {node: '>=20.9.0'} cpu: [arm] os: [linux] libc: [glibc] - '@img/sharp-linux-ppc64@0.35.4': - resolution: {integrity: sha512-2oYZJeIl4kCcMGk4ouZVjnkCtFrpQFlNEtJ6GbxzhHQchwH0NH/qEb9ykmOl29dqwMq+JhFdZn+1ak2FKhI9fQ==} + '@img/sharp-linux-ppc64@0.35.5': + resolution: {integrity: sha512-QVxAAq8evVRI9ia2vqgwrmWucn5Dfv+JdWzj75pD8omHLPSP7f8p20O8jxzjCcuCEQEOtYOZUmX1hkiZ0kdevA==} engines: {node: '>=20.9.0'} cpu: [ppc64] os: [linux] libc: [glibc] - '@img/sharp-linux-riscv64@0.35.4': - resolution: {integrity: sha512-cPbNChoRURAWdebDIHSenxRpgEdy7JkPydSnUxRm9VvKD7m0/xVaR/8Fzlu81pk5nHEvHH87UZUA7cTtwnbJSA==} + '@img/sharp-linux-riscv64@0.35.5': + resolution: {integrity: sha512-LtdreXguaavKODPIfzJ4kffx7UNt1omwtK0rch4EBbbSTXPnxWmYSayXdLJw0fJzQ97kHt1gL/yh4tvU+nCyRQ==} engines: {node: '>=20.9.0'} cpu: [riscv64] os: [linux] libc: [glibc] - '@img/sharp-linux-s390x@0.35.4': - resolution: {integrity: sha512-RY0JFY8Fd6RonCBtHz+DvadaPkXDSI1AUn6yWL9TipqkZ1vY8w8evqdgyDFnkm4/K1ve1TvZiaePP5oSd4+WVQ==} + '@img/sharp-linux-s390x@0.35.5': + resolution: {integrity: sha512-UZasTOFiYzotTsGOCu42BfUzP6Tu6Do/947iRm1RsLKvlllxwGcn4RN27LibGWceix4Y+Pmw3jsnTcCQIgWjqA==} engines: {node: '>=20.9.0'} cpu: [s390x] os: [linux] libc: [glibc] - '@img/sharp-linux-x64@0.35.4': - resolution: {integrity: sha512-9qvvEAuk8k89TfWUoX2htWjbAMX8p+NxCppjpcg5k6xMsjhBQPTsoIh36h9Qde4WRuGpJeYnOjdosDn/cnv+OA==} + '@img/sharp-linux-x64@0.35.5': + resolution: {integrity: sha512-SxFtLTeJInhAA9Q836kux2vZNeOBQEx658qvbboZScr0wIARym3IcGmW7KpVD5sbVg0Ojy+udFQdayYIZyoNog==} engines: {node: '>=20.9.0'} cpu: [x64] os: [linux] libc: [glibc] - '@img/sharp-linuxmusl-arm64@0.35.4': - resolution: {integrity: sha512-KB5jxpfWQTr0nc3xdHtWChdbifHrBGsd2SM62Eyxrl8afikm+f5qGBU75SJIZBT/S1MC8XyacdlXBMSWq6OURA==} + '@img/sharp-linuxmusl-arm64@0.35.5': + resolution: {integrity: sha512-9HbMclmI1zlNkFRs3z9/eBtDjfD0sGlrX1z6b1qwmiFY5ElDLh4BC0LPBdVp7z1DXFiKlIcznf+ZlsuZzLxQqg==} engines: {node: '>=20.9.0'} cpu: [arm64] os: [linux] libc: [musl] - '@img/sharp-linuxmusl-x64@0.35.4': - resolution: {integrity: sha512-f+eZJZIQNEEd26RPSW+76chwOf1XtA2Y/O+5ocVyLliHkeih3e+jhLVBdNTd2rS3IbNXK8+ug93Vf5ZXtF5Lxg==} + '@img/sharp-linuxmusl-x64@0.35.5': + resolution: {integrity: sha512-4KOphqB035HrVdqLZfCgMzzERrQkkzOwRhl4OAkRO1YCldbaFjySXMaK534Mo0V+LndnlJk+sbUyLeU0ULyD1A==} engines: {node: '>=20.9.0'} cpu: [x64] os: [linux] libc: [musl] - '@img/sharp-wasm32@0.35.4': - resolution: {integrity: sha512-zQnl4Kwp7Q6NHsENtU2T/00Zi+w3AQNwz3+UaTyVBy2FpXrzXzGjndpK61onhZjRtRpQXxCTeqw19bVyXOh7jA==} + '@img/sharp-wasm32@0.35.5': + resolution: {integrity: sha512-Ptsga1su4tQx+LLF1ECS9U6nz5kmrXKo6XVbtR48Ke3ZRxxgaWBu7IDtEe1quo8hiupwm6WFqxVlXaSf7IINGQ==} engines: {node: '>=20.9.0'} - '@img/sharp-webcontainers-wasm32@0.35.4': - resolution: {integrity: sha512-ESfNkywmCfPNyaZjxooddJQiQ+l/nTpGEOGthxiLnIHXC/CmcBixnfwUleX9mCz9ovrUUvKMap/pm8RYbzfwaA==} + '@img/sharp-webcontainers-wasm32@0.35.5': + resolution: {integrity: sha512-hfhF/FmoQyTUkA0bIKFOtw536BQSeBMe6BF6QyWlrPxT754+TFLaZ7sKKTfvvM0yJgKgaYTwnFCIZ/GuDw5SUA==} engines: {node: '>=20.9.0'} cpu: [wasm32] - '@img/sharp-win32-arm64@0.35.4': - resolution: {integrity: sha512-iNdlBX9gLVvqe2I3uIJSIKTq6wckP/DYxZtcqxm09x5Gi24DnFBmPAWZmr60ZyYMG0xlzo6goG3670ar+RXvRw==} + '@img/sharp-win32-arm64@0.35.5': + resolution: {integrity: sha512-X4t7g+7ZA5DKblCBEXGjUqqemj4vczING/5viFwAL8h4N3qYeyjwdCvRLHi4EdOUI+2Z7UFlp1VM+p/AuEtm6Q==} engines: {node: '>=20.9.0'} cpu: [arm64] os: [win32] - '@img/sharp-win32-ia32@0.35.4': - resolution: {integrity: sha512-kqRsbaa5CS6KHlpxnN7WhE6vAAugXyZButpRdvDWetlv6Qv4N9WTcrWzF7tXfB9T7MsoadqdI8hmwLq6UlLvtw==} + '@img/sharp-win32-ia32@0.35.5': + resolution: {integrity: sha512-5Zm82LoBc43nhwNybZlG7Y1KO//Zhsn306fQl29ZOuStHLGTo3BWL83q3cznX0poxSAMuYL1On/BHBxkBeKr6A==} engines: {node: ^20.9.0} cpu: [ia32] os: [win32] - '@img/sharp-win32-x64@0.35.4': - resolution: {integrity: sha512-XtmnYhBcrORsJ4XJngyzr/EWP0hRZLAZRFaApdKuviyqF78+ylxh2y06ZmtULAMOnObJ3ucpN0AcwSWnMowTRg==} + '@img/sharp-win32-x64@0.35.5': + resolution: {integrity: sha512-x76eH0vEiHlcMQu8Y8IenntaACtddpT6W0wmXtWrnKcnKI7ME5DdgqhAD6SEWOEl1v2zDvkZDhFA9KnURwpfqg==} engines: {node: '>=20.9.0'} cpu: [x64] os: [win32] - '@inlang/paraglide-js@2.20.1': - resolution: {integrity: sha512-8mDhvcociFkWZDy3J+ZIIWkl0GTtJjVXS/kcBT2QG2l88y7+bFT45s8I00a7Hp1eFP9y6ScJMmNXWy87Krt7wA==} + '@inlang/paraglide-js@2.25.4': + resolution: {integrity: sha512-z8OoKAcPT0DwlfTQ/SvaPBQILrtmkl4lUPCSQPjKxqERRp1n7W7a2eKi7EvfylatWivSZFGHGjlB6Ad20w0nzw==} hasBin: true peerDependencies: typescript: '>=5.6' + vite: '>=5.0.0' peerDependenciesMeta: typescript: optional: true + vite: + optional: true '@inlang/recommend-sherlock@0.2.1': resolution: {integrity: sha512-ckv8HvHy/iTqaVAEKrr+gnl+p3XFNwe5D2+6w6wJk2ORV2XkcRkKOJ/XsTUJbPSiyi4PI+p+T3bqbmNx/rDUlg==} - '@inlang/sdk@2.10.2': - resolution: {integrity: sha512-O1ki72SNK6LPagaGrvlioBb1mWKvump7cO7P85hfGZjdFTmDdn3icI0A6MvaBsB3P9KQHAjzyubnN1OslGufTw==} + '@inlang/sdk@3.0.6': + resolution: {integrity: sha512-JyUxQNjKNWglT8qhInmenKK/AnKkbX9AhAM8vFnTT8SyQ0gFA2YGKPntGp+3+UZP9F06Nmawf4sFTn7nGIyTXQ==} engines: {node: '>=20.0.0'} '@internationalized/number@3.6.8': @@ -982,12 +1062,28 @@ packages: peerDependencies: solid-js: ^1.8.8 - '@lix-js/sdk@0.4.10': - resolution: {integrity: sha512-0dMInAJK/67guTG5rRZaCEhvzC5cCXENOjaePA5AqMXrCE97kaY7SRor9e2vnoGsFIiGqXKlT0MCIoZj36G0gg==} - engines: {node: '>=18'} + '@lix-js/sdk-darwin-arm64@0.17.0': + resolution: {integrity: sha512-+r74U7uBNfzgHEkxJAo4VkwQugqfk3MYZ5GHUIZnWZyyU1+oecXTmeepiaMnmHuflMPVv6ZfE4Yl8eM0Wyn+lw==} + cpu: [arm64] + os: [darwin] - '@lix-js/server-protocol-schema@0.1.1': - resolution: {integrity: sha512-jBeALB6prAbtr5q4vTuxnRZZv1M2rKe8iNqRQhFJ4Tv7150unEa0vKyz0hs8Gl3fUGsWaNJBh3J8++fpbrpRBQ==} + '@lix-js/sdk-linux-arm64@0.17.0': + resolution: {integrity: sha512-4HqHHsWq1gfPgkReR43Sy18T10JmRSo+VVR3Kqr/xu5zD/2ssoGdtl9QEpC80KVn4pCT5vDCysT1UOwEJkv7iA==} + cpu: [arm64] + os: [linux] + + '@lix-js/sdk-linux-x64@0.17.0': + resolution: {integrity: sha512-968kHRX0waV5UoR4i0HZkqNr5KDOWPd4he3miLImCMGsQDWLViYde613Bf4hxas/SouCSfmnvlAnl87oSAZc8w==} + cpu: [x64] + os: [linux] + + '@lix-js/sdk-win32-x64@0.17.0': + resolution: {integrity: sha512-/uYvg0c5R9+BtQ1aJqBE9VCwNSYSaZORUjo5u6ukAFkH7XuN1ZnpTzoI9K6HE82/dxlCymMsP3Ga/rQVpQn4hA==} + cpu: [x64] + os: [win32] + + '@lix-js/sdk@0.17.0': + resolution: {integrity: sha512-xplbKYEokKbm0/soUy9eXlROF55Si1J9HK97iwJrNl/av1VixZ2mvpDTa0QsX96UyxFnzkXru6hngjtIJTl73g==} '@napi-rs/lzma-linux-x64-gnu@1.5.1': resolution: {integrity: sha512-oTXEIha4SsuXdTA4Iyskj0kpdx2yVXdhd75c2v3xGrHFfVMsbhTPZU/nMPL4sWKo4pBHm3aucLaqGlF696dTyQ==} @@ -996,8 +1092,8 @@ packages: os: [linux] libc: [glibc] - '@napi-rs/wasm-runtime@1.2.4': - resolution: {integrity: sha512-AJxoUD2/15ESHbvpcyjU274nsAPLuOtPHCk0vKJM5pj//Fg/B1FXNWjPnXTT9PymCYYiHo4zPj0ZomXBKhoy7g==} + '@napi-rs/wasm-runtime@1.2.5': + resolution: {integrity: sha512-HshSvXzmBxNzqejd3k/KemgQ3hdREUYFRRrgxOZ+gPljDIsO2SDZrVZMd4Z/HsxudQbE62OVyVFE8z9BCurfjA==} engines: {node: ^20.19.0 || ^22.13.0 || >=23.5.0} peerDependencies: '@emnapi/core': ^1.7.1 || ^2.0.0-alpha.4 @@ -1024,6 +1120,133 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} + '@oxc-minify/binding-android-arm-eabi@0.136.0': + resolution: {integrity: sha512-gk1jzky1vLeOcK7w9Ib2RT/UooZ7O21s8YSeXCsy4tzsmguKb3Cbsv/Ra2fKhMp4mKeKCzvC1Xa41OfSBWfWdQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [android] + + '@oxc-minify/binding-android-arm64@0.136.0': + resolution: {integrity: sha512-5GIYanqud/ohXEcg2dsdn0+eSKXqclw5qlRUkvSM1sKEa4ZQ7hqOk8XPJBNPh3LXXw+Qw85B6jkmOFLKsCHp5w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@oxc-minify/binding-darwin-arm64@0.136.0': + resolution: {integrity: sha512-QAMpHKXWOoMCTenSZjQjVT5YmMooujlCKAf1T3PHFl2LuaA6ukQFXba0bgSLgAxRrAeX/itkwi4lzVQXtYmnRg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@oxc-minify/binding-darwin-x64@0.136.0': + resolution: {integrity: sha512-rDnoPj8hztiU8C1VNKuzujh7SgTJlgiUvUCiWQjTnVSLsABsLW9ZWd1l1Ji0VN3UW39wGpptgvahIWTrHnGH/A==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@oxc-minify/binding-freebsd-x64@0.136.0': + resolution: {integrity: sha512-9fGSgP7uyPLCTjMx9z3AUV4UjnfOVoGTH5JzamLegPwGLJ97Gr1jht1437CRk8ZNabGmxQR6qNn3e+Tox2lswg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@oxc-minify/binding-linux-arm-gnueabihf@0.136.0': + resolution: {integrity: sha512-k0QvZS+x6ROI4O5Ikqn9dDU2dmkEJ46Yh6baZJI/eUk/a1k1GOs9/vyXItLZrKlwYrSgdEx2BFXbKgyd1NyRPw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxc-minify/binding-linux-arm-musleabihf@0.136.0': + resolution: {integrity: sha512-iRFxUc8ubotVfuyq3e4LPGbHrjvWd1/B3499a55GueMLc1EDJ0fHzNXJiCx2eMQGfzHtHodjmvrJ2BSvSXBNhQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxc-minify/binding-linux-arm64-gnu@0.136.0': + resolution: {integrity: sha512-hbKxNCXJsULrb6EyG5SumzJKuPfP8Y0UQ/TElRgXVUhyyPf6cBPlF8HMq+MAylF98ACBzV8jBp2Mm62lJyTo+w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@oxc-minify/binding-linux-arm64-musl@0.136.0': + resolution: {integrity: sha512-T+u/CGKW0UXemJeVux4ix6rK+ug3bQCUEbu5hFlX9K61KQNd44rOcrM15mDK99L7USaXwmiwHeIkEDvmmyDMSA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@oxc-minify/binding-linux-ppc64-gnu@0.136.0': + resolution: {integrity: sha512-WNPTN2F448tb49BoqjV9IMRzZWa0WB8GHzrB+bnxKQPOyzz07T6rmDKrr4Hjl81ADGjDYSsr1fgXcjyLQFdMdw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@oxc-minify/binding-linux-riscv64-gnu@0.136.0': + resolution: {integrity: sha512-MvcCfu8OeabrmNN9wqhh8Gqizg68RQ3iOvXBJmlLMy5p1PC6az9bAwqOk98lsCmKI4I5LpULekOlfxRYh3o5Kw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@oxc-minify/binding-linux-riscv64-musl@0.136.0': + resolution: {integrity: sha512-rwJXFUFFA0egAULtOOgfW8YhhLhtWrr2qFxftvZ7/U6Xtxiev8i+eCwSNW1RpHiX74QMsJVpRE3ykoefqb1MtQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@oxc-minify/binding-linux-s390x-gnu@0.136.0': + resolution: {integrity: sha512-qizAxHmj7VHm5/D5qiIlvzxAS2tlmadDOJ5XFI7zx/wfnk/+fdk5iVaHOv+C4tDE/4wLQyMoBYVIs6R1LeN91w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@oxc-minify/binding-linux-x64-gnu@0.136.0': + resolution: {integrity: sha512-gcyLAad0UblkEhGjVfx5Mwq63OSx8r04IbcfwzpZYpHisO/vioMsrs4GkDsQZ2Ejc8cdUk6YMIrf9FwNBzh+Dw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@oxc-minify/binding-linux-x64-musl@0.136.0': + resolution: {integrity: sha512-QAK6kwBjljX6luYzeppVdRP3gTaFNFfp9iS/V0cCvU43wUZay5xFXBgmzBHYrzZV2MhzURNnXfEZRo9poAxyvA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] + + '@oxc-minify/binding-openharmony-arm64@0.136.0': + resolution: {integrity: sha512-nIGxkTOnN9GwslmooxbZ3Ti2RgbX9QLHy0X9uO0pslOT+4dsNVUawBU/6r4M5cWM+ZdRD2tOF4V+n0l8tS59nQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@oxc-minify/binding-wasm32-wasi@0.136.0': + resolution: {integrity: sha512-YB3G8AHT6PpDS8/DfjlJrQjywj+/6gCkNBcAJdYzcYbQRIZE6SaTNowiGuZPR1m1jOl1WjcjefniKSmVxzhvRA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [wasm32] + + '@oxc-minify/binding-win32-arm64-msvc@0.136.0': + resolution: {integrity: sha512-UVRH3BlNc2rmla+sbSd5xTF/u+esCqZS6VSWPolZybcBh3TlVe1Sf5MOuHQWUaFoyv5uFOvee4hOfS/14nPvZw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@oxc-minify/binding-win32-ia32-msvc@0.136.0': + resolution: {integrity: sha512-zFGkUd82jci0E+isc2O36lVmmXVUDXyEMN2RYIyez+MBNqhdjPLIGx62FCsrJtLKeuiPf/8XkFv977aUtndUng==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ia32] + os: [win32] + + '@oxc-minify/binding-win32-x64-msvc@0.136.0': + resolution: {integrity: sha512-VHgPwd5xibC9UYxBeq7nURTjY+wxhdumllij6JaCIUVfD9IRcrA66SVlJ5fPNoUXcRp8ZXhJfoIZwVz9wAEGJw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + '@oxc-parser/binding-android-arm-eabi@0.120.0': resolution: {integrity: sha512-WU3qtINx802wOl8RxAF1v0VvmC2O4D9M8Sv486nLeQ7iPHVmncYZrtBhB4SYyX+XZxj2PNnCcN+PW21jHgiOxg==} engines: {node: ^20.19.0 || >=22.12.0} @@ -1154,8 +1377,8 @@ packages: '@oxc-project/types@0.120.0': resolution: {integrity: sha512-k1YNu55DuvAip/MGE1FTsIuU3FUCn6v/ujG9V7Nq5Df/kX2CWb13hhwD0lmJGMGqE+bE1MXvv9SZVnMzEXlWcg==} - '@oxc-project/types@0.151.0': - resolution: {integrity: sha512-J1yXrIlNDZVzE3ada310xeAw7nH8yCAyLPuUIsjKatFPmfn5bS1oW+cM+QsGOtVWd5nhSpbwZWx/rue+r5Z+PA==} + '@oxc-project/types@0.152.0': + resolution: {integrity: sha512-oM/5rLBm2tPkg0iBgkH/FOeR3PCDpY19GTgAZjMFM8h9WI9VW7cLgzp6nwtarYKmovavIQZ+Fe/RKX/8C8O/Rw==} '@parcel/watcher-android-arm64@2.6.0': resolution: {integrity: sha512-trgpLSCKRC/huFjXX/Smh+0sWe4+YtKfktIToiMl59ghz7z+qkH6kMvNnUbLyRs9N11t8l4svSCs1+5B3rOAhA==} @@ -1254,98 +1477,98 @@ packages: peerDependencies: react: '>=18' - '@rolldown/binding-android-arm-eabi@1.2.11': - resolution: {integrity: sha512-A5kXfGKvKWWZE0TtPrfsvT+q4Y5d1QG8gGUzpYjGydM+fARM9MuX90PrXYXe0XbsDVgyxxNzHo6giCj90bsFNw==} + '@rolldown/binding-android-arm-eabi@1.2.12': + resolution: {integrity: sha512-dB/a1214qKfHMXCpgqR4OZT+jS4kTyEXbQGJPqzobt5EwH5rX080pxE37alt3RzvR1bf1Yz/yGqRfrYAxuPw0A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [android] - '@rolldown/binding-android-arm64@1.2.11': - resolution: {integrity: sha512-z6cTycz+iJ4PVkuL4HHW4DfTfoeU/2nqYYuSOrTmH7yHK5Y0LCOnA03V4ZNxavyVaU1oOqUgIg2klN/s+USGOA==} + '@rolldown/binding-android-arm64@1.2.12': + resolution: {integrity: sha512-7KHFgQ5VJxIHcLlrwrc3Xbds7oTNQT7Pgi9gQCJKrd2VGab/UksIOYp6VD8MzCstGxOKMgNamPwUCfxPdP1OHg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.2.11': - resolution: {integrity: sha512-jShvqNtP6vDC6/A5JOAzbVV+DkgHqhl/ScVCJEbt+TUY6QYz7YnXcrg3sLtFBniro0f/Ld50ZwCWA6f7KYD1nQ==} + '@rolldown/binding-darwin-arm64@1.2.12': + resolution: {integrity: sha512-3YIhqHD96nA5SaYNRBR16HnGv4oavZvXfD/ayHM+oYZ0WD/8lBAtf6zQua4kEyAvpqrluKXl0lnOBoiNby7x9w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.2.11': - resolution: {integrity: sha512-f2i2xiNWq1Z1l2++q2fuhZRdLAT3aqxD6vRNm1RAxpUoBcdqNB3C0s1Bt+K+PbEx2F5F4gQp6hqKkphCY/xF9w==} + '@rolldown/binding-darwin-x64@1.2.12': + resolution: {integrity: sha512-UuuJ35MFw4gmFOrE9pEqIV+K3syIKveph+Qc1/ljHZVdoDW4pz/JHR/eMVom+TZGl/5OOvGJOWaOCVt3ZfqhxA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.2.11': - resolution: {integrity: sha512-4Ir5FSOKIAMr4r0kExpt1s3bMgzJU3rA45AYOHtQpls0oNeqcYBKrWMlckrYH4KCfGLfkfn1tN1dmZPMVsdXow==} + '@rolldown/binding-freebsd-x64@1.2.12': + resolution: {integrity: sha512-uMvssit0a4W+/7D8CbHUvG719mH3R2jwXAlh/XcPvuHTE0g++LymF88DCGNX0HM2rBOn0xrzgXktIB6fLSJBTQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.2.11': - resolution: {integrity: sha512-/gnRDM+39BROzAN/k1OZjDPnDMcZxB/0EUxKjONO5yVkNEvlsoMDrxGNKgZi/ttFriS2gwlDNzB65pvNbFOXIQ==} + '@rolldown/binding-linux-arm-gnueabihf@1.2.12': + resolution: {integrity: sha512-XcFu0R0xWnwzSf4IQgFH1rJIckPN1pLy2R+4r9IDB7Yfu/ys9cVqfa4pBrMHj7a3gl8mIR4nRNPg0e5IvEVs6g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.2.11': - resolution: {integrity: sha512-PFaK8HwvAHbaKbBcDNQihjMKYvFnA5hiENx/l5tphTDz1E0WFp32l0A7aq7lyUwGsRw/xSrNIy/gIK4thrSCrw==} + '@rolldown/binding-linux-arm64-gnu@1.2.12': + resolution: {integrity: sha512-260UrKgn8tz39ak+SMDOirKzr7V04M9dWPw5llW00SwBivCZoWcRBKV1d8cXnRkUmSZA3BdiUmBHWk7734Ulpw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-arm64-musl@1.2.11': - resolution: {integrity: sha512-AskzJUIKRLPxkruR1wLKewGbOw+EYfU/9lOrBFj4AFrEA8hPpKFnODWNu2WLaNs0QNkEb9QIJufmVZZIL/bJlg==} + '@rolldown/binding-linux-arm64-musl@1.2.12': + resolution: {integrity: sha512-5YK1I9SqDkbPgc1IA8BgDl34suqUS2q0KWnBrirm0E51YjOs6eo6dV6jbQfNE/argHRSvd0QUGgtpIoYx+WWpw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@rolldown/binding-linux-ppc64-gnu@1.2.11': - resolution: {integrity: sha512-qlUGAheh2yh8afH7QBgx0PrRHN85hKnNd78x8MeMhXivuevgd8vgf6/CstOzmNKY/lLTHvNTrPy98cLnAugzJw==} + '@rolldown/binding-linux-ppc64-gnu@1.2.12': + resolution: {integrity: sha512-Rkcrmp7eFRg74yL5fXEU91JEWbdEPLevWwGtXpmhbjlD1StScbWTmO94Bhly+Mo+ketKYkdmM1vNUKeWSlx8cQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-s390x-gnu@1.2.11': - resolution: {integrity: sha512-secpEad+0vCbSfn8upFySkDskv+bGPk3THSDS9Y89yc4rb4kzqHp8Dmyd9BkQW4SnhNXBZCl/6CrO//hZahNJQ==} + '@rolldown/binding-linux-s390x-gnu@1.2.12': + resolution: {integrity: sha512-qvK4DuAsQc2BSjlx+Xr+IzOIvvxbGZqxFwdWfG6F518Erj0GGISyQbJ6pIappnOxlNPzNHvo/L0BwB30GZ+zVw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-gnu@1.2.11': - resolution: {integrity: sha512-mOVBT3dPpkWm8XBWPmU4bf+U6dYDLeMo/9ojUmis4N0L5uu10qra5vOyngZ7/PSdoE4G9KvRt4bloRxNjLas7A==} + '@rolldown/binding-linux-x64-gnu@1.2.12': + resolution: {integrity: sha512-Q9uLBO53Xd4QIq1WOycVQyPP1O4HhraEV2qqb3uTrnVw6QZih9duY4vNXOivL1xoUS1/z+W8eF4NMfl2a8Sdjw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-musl@1.2.11': - resolution: {integrity: sha512-Is78i9A8Ui4SqcxUwFJ9uMmjDn58IbVTjFWYdQestFEgeuEmHMLGNriXnVJKkwG2YiZjw8cP0zCTyDMdDGtOOg==} + '@rolldown/binding-linux-x64-musl@1.2.12': + resolution: {integrity: sha512-3IBxWFMjbOZskDPKv8Lf9BCnahlKuHthWkYnyIxOH/QcJrFcS4EmcenthApkwr/5+nEqZlLzeYbxeMaX7A5u4g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@rolldown/binding-openharmony-arm64@1.2.11': - resolution: {integrity: sha512-dUCXneZ87INUMyQ0D+C0HrEBNUPNXHaPmU5GTjyKTJEiussw9Kaj5Ln8UztPe4epV/ffvgNBEadksdYhmW6xJA==} + '@rolldown/binding-openharmony-arm64@1.2.12': + resolution: {integrity: sha512-xtX61xg4LKPkPWilZU1ynKClz5Gj4bf74LML4r3eVLWumKnGjoEr1OSHQhMdbBDoYTi+yjrujvpZe2pUnqCrrA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-win32-arm64-msvc@1.2.11': - resolution: {integrity: sha512-jByxb6qfd+bH1xUd0qnfFnb17i9sWBPY2tOavJ0l3tdr3OTu+Kvtm8cd/JV5nFt657b1VqGltxg9olOEfofXWw==} + '@rolldown/binding-win32-arm64-msvc@1.2.12': + resolution: {integrity: sha512-At7fPB6PCaIjzgIhEZFxuT+BBFqiQibJDT4d3PhiR3f4E7bbMZF4aKblbFfEM3sETRDd1YiQx/+U/g/B/ou5Ew==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.2.11': - resolution: {integrity: sha512-/PzKqzAJ03i19oy2ItPvyvaVjOjBCNnfaJs8yvUdGBKmiESgnrJSQ2awd81QzFbbnAmu7YO9ZnJrDCb9VSJPRA==} + '@rolldown/binding-win32-x64-msvc@1.2.12': + resolution: {integrity: sha512-WIw2haVKwjuYdXkHaoC0mF8Le71TuCBxjrdKqLbJGctbBABj+ClfmNvtbOnzpq3RokNo5+V1qhtSzJyXorsklQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] @@ -1568,93 +1791,89 @@ packages: peerDependencies: solid-js: ^1.6.12 - '@sqlite.org/sqlite-wasm@3.48.0-build4': - resolution: {integrity: sha512-hI6twvUkzOmyGZhQMza1gpfqErZxXRw6JEsiVjUbo7tFanVD+8Oil0Ih3l2nGzHdxPI41zFmfUQG7GHqhciKZQ==} - hasBin: true - '@standard-schema/spec@1.1.0': resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} - '@swc/core-darwin-arm64@1.16.2': - resolution: {integrity: sha512-i/j0HNbnn79qnTVPicvay92Nark8fW8NQqn1e2mGERjUXNpBV0+SwQxlRpk2zBhn6laJ8PDI6Kn1nHZhnz3LCA==} + '@swc/core-darwin-arm64@1.16.13': + resolution: {integrity: sha512-JrMH2h7ohd4mOIneNRx/diqTmCDSdWfp9uOdQ8VJ2V2CA7jOJ1jWb+qp8RoZLqgiVmwDDC7eySKB1kbvZ+jVXQ==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] - '@swc/core-darwin-x64@1.16.2': - resolution: {integrity: sha512-HrwqHyEyHVXO3qTk8EkNK7/b6sOZSEoNh+pot6RdE5x0LbNqfo8LtJUvi3UTXr+5ja/o5HbJdW80eCXo+NjbiA==} + '@swc/core-darwin-x64@1.16.13': + resolution: {integrity: sha512-HauZMRxpOImRxgY6GXjw5gbD8ts2NcPZuLMM8htY8Mic7j1Izt/lxkXrKYUwqyU56YLwQZ4dHRT+6jFHkztcag==} engines: {node: '>=10'} cpu: [x64] os: [darwin] - '@swc/core-linux-arm-gnueabihf@1.16.2': - resolution: {integrity: sha512-MdXi83Z/gGp1LIrg+h7HKxiul/z/Bty/ZJSvYAFqDl9zteC1XLSAZdScquKtXPp50rdyXqritTDCqQBhwVfZKA==} + '@swc/core-linux-arm-gnueabihf@1.16.13': + resolution: {integrity: sha512-tUSojGIythnHJKrElDM9OvuhBnK+FF39eM9iIBgj9kdfbAm6PhAM7dKbaSDcnX2gOLG2slkasjD0Z8m/YUlzOA==} engines: {node: '>=10'} cpu: [arm] os: [linux] - '@swc/core-linux-arm64-gnu@1.16.2': - resolution: {integrity: sha512-/jcTmK6Ktz3owM3YtiKvjofV6p3VpHnYzTIrOGwDIOsDigRAAVuZ8east33wYO/7UTdKYFlyHNnJNT0WJqOA3Q==} + '@swc/core-linux-arm64-gnu@1.16.13': + resolution: {integrity: sha512-qS3bk/ezRrLXGn1b764S/EG3/oKj6uRhnTNRAALpnuu8d9I0YwSiUkQghnX7lOH9X/yRr+qrFI3R0wAruO47Tg==} engines: {node: '>=10'} cpu: [arm64] os: [linux] libc: [glibc] - '@swc/core-linux-arm64-musl@1.16.2': - resolution: {integrity: sha512-4gFarKaFnlJTSlJYKmMhV4u+3YE4uYfiydpBoYjmgQhCf9lAieOq+WilZaK9vVSHeqLuQpTEiGULZqAdsRX5Dw==} + '@swc/core-linux-arm64-musl@1.16.13': + resolution: {integrity: sha512-aeoYoG6fQsOS3mFOuTKvnJo1aaaxYNI0aRRlhdHaGP4q1YQx4XOc5Hkd35IFduWCBG3eZl3fPTjRuYvxpl7eTA==} engines: {node: '>=10'} cpu: [arm64] os: [linux] libc: [musl] - '@swc/core-linux-ppc64-gnu@1.16.2': - resolution: {integrity: sha512-syqSLGd6KlZ1PciNzs6bIUlhOuFztZufebOHaERjc4N4SqNZxyqYd4I+jj/EfOYnpe0kNjccn9HJLN1p5dz3+w==} + '@swc/core-linux-ppc64-gnu@1.16.13': + resolution: {integrity: sha512-eEFoueZXWZ2S1lsqL8Ve2C8RjhzH9+Ktj8U4IGTUQL6CNG04+VhQiYQWJOf5xfVBU6I+PbH80yvsYegqZOOSZQ==} engines: {node: '>=10'} cpu: [ppc64] os: [linux] libc: [glibc] - '@swc/core-linux-s390x-gnu@1.16.2': - resolution: {integrity: sha512-ZBBLK+ewGyXLzWeMS7wbKtWBdnif6etn7xvPY/iOfbdsjX/+bgkp1pQt2lWF2wlu2hXYZuhJ/tHZE/QR8/apzg==} + '@swc/core-linux-s390x-gnu@1.16.13': + resolution: {integrity: sha512-K0q1ReVXL3d5bzBgZxS+yJq5q2xRjg4k2XXGj9yiCEpE5ZqJGQ4Gtk1sRrk8W2lo3KY0DCJD3Myt6x2SMvGArQ==} engines: {node: '>=10'} cpu: [s390x] os: [linux] libc: [glibc] - '@swc/core-linux-x64-gnu@1.16.2': - resolution: {integrity: sha512-LyHJgxCA4Tje0ysBMbEb0tt/ie8kgUKoFE3JAKFhpevmTmhYEoC0H9s47WuDsqiFckF1ITUguZIXJG6K5e0dvg==} + '@swc/core-linux-x64-gnu@1.16.13': + resolution: {integrity: sha512-Qvpihw30irhIjy2f91BR1pamcJBCgf8hmr9XWenztAX1YLkneRkkTB/PFGWQubhaBqQhY2uZKViMj/xV61uMBQ==} engines: {node: '>=10'} cpu: [x64] os: [linux] libc: [glibc] - '@swc/core-linux-x64-musl@1.16.2': - resolution: {integrity: sha512-PghXJlVM1cgtLfNUR1vxFo1z+PDRAe8cWAJlZZ7spmeiN7BospGXg/MHUg7oNSgwSX7Zo//YKv9P5yD9apsFJQ==} + '@swc/core-linux-x64-musl@1.16.13': + resolution: {integrity: sha512-iCGxHbh3Cq5vqRvCPlw3XkkDz4RlkPSyQwfFKbOKTMj5tiEuojY/rLmf4BMfI9Z8yPJTf9VB07t3NbKInoC97g==} engines: {node: '>=10'} cpu: [x64] os: [linux] libc: [musl] - '@swc/core-win32-arm64-msvc@1.16.2': - resolution: {integrity: sha512-StTOSefYBxemvNYYUI3UmO1a8y+hSPjjfHogC2TEHL+Z1PlEBim/XtLas5rS04jAzT9RrNmbtX911SZ42H9jSQ==} + '@swc/core-win32-arm64-msvc@1.16.13': + resolution: {integrity: sha512-iOabn6cd+hg3cnoKlAC8j3Yufv8nQHBVU5OIDX8dCPA95PjAZ0B0TlDn9sWivk8ezo/cLJux7p9n0B9vRej+1Q==} engines: {node: '>=10'} cpu: [arm64] os: [win32] - '@swc/core-win32-ia32-msvc@1.16.2': - resolution: {integrity: sha512-fycER209DYIzsibpTMC+chND05OfOjgztWL9U8OE6/uUlsOUZH3eh98isBLEnOymYUhlJLEt5++W1+KL/FOh5Q==} + '@swc/core-win32-ia32-msvc@1.16.13': + resolution: {integrity: sha512-+1b/3xBNuVbpnJIZUCAaSdscOPYRWq85eohKx44y/3qbPp56UMiCJWBiWtyr7K5F1nf1JENXm2IBSEJaLgWq6Q==} engines: {node: '>=10'} cpu: [ia32] os: [win32] - '@swc/core-win32-x64-msvc@1.16.2': - resolution: {integrity: sha512-cSd1z6ivSrJPVr+moVwOHWjeKy6TpO4/Shwcv5KCrKYXCccxwh4pRy1C3fDioNx2PF1jPZWHKZjtXt+Be9VbaQ==} + '@swc/core-win32-x64-msvc@1.16.13': + resolution: {integrity: sha512-6kEJhYshk7OVoVIWryiHqjCNuwZeOlPTS6et+bKV/WhtHs8fLA01wyTLrQGi+4ultgRe/o0M4b25K/KKdvl0dQ==} engines: {node: '>=10'} cpu: [x64] os: [win32] - '@swc/core@1.16.2': - resolution: {integrity: sha512-95I4kiSMeveI/Mhi+tE4fiWcWLUMfzfKrk0jtr8LRMqHgOgq+xHS+zExkDqoO4b5OeeuXHMWVdD5MeP3X6sULw==} + '@swc/core@1.16.13': + resolution: {integrity: sha512-k4uUsIMS0IwOKVsrQs48IZK75O4roV3FnuJEdL7ES+DFESftdgvz73QBqN3VUAbUmUr78We4tzG0kgYj36M22Q==} engines: {node: '>=10'} peerDependencies: '@swc/helpers': '>=0.5.17' @@ -1720,19 +1939,19 @@ packages: resolution: {integrity: sha512-utTS5L2OkeYUzXGohL1Z8sefu1GLNOJcxe8Hd6iIdc/Xo1K1nDB2JEp4iSFhvYh33xKC9V91TxrS8qfrpoKobQ==} engines: {node: '>=20.19'} - '@tanstack/match-sorter-utils@9.1.2': - resolution: {integrity: sha512-aPkUQctDzpXLSWhlx7jUDi3mInsI18xcnrK1hvIyIa88ab1ax88cACr7xU+BKMCGB4NZYNwh4SoNSEbv3RY2NA==} + '@tanstack/match-sorter-utils@9.2.6': + resolution: {integrity: sha512-DIpUSOhPfQ7u/qfUi/Wgm0wBO56MyBYXGvnlI0NcauDRPqdBUlAZZjW2Dxm92m+k1UWVhKw8YJ4f47+75Aujyw==} engines: {node: '>=20'} '@tanstack/pacer-lite@0.1.1': resolution: {integrity: sha512-y/xtNPNt/YeyoVxE/JCx+T7yjEzpezmbb+toK8DDD1P4m7Kzs5YR956+7OKexG3f8aXgC3rLZl7b1V+yNUSy5w==} engines: {node: '>=18'} - '@tanstack/query-core@5.104.0': - resolution: {integrity: sha512-JrC2r/JQlXt7khBSdUpsgxNvybzOg+aITa+ARRMlP2AFo93Y8vIqz077rp+e61mJetSZ0T6AJbwW1JHer1vrPQ==} + '@tanstack/query-core@5.104.1': + resolution: {integrity: sha512-TiRghcrGkUTE+M4JBxvpPSpBhxvIzQairw+cksrHYGr+2uwC77yW1SY9nYxnYRYOppvucf8rEg6b5byoz4rTpw==} - '@tanstack/query-devtools@5.104.0': - resolution: {integrity: sha512-snKyFLVFC5LuNoyUTpyqCD2Z8cRlCWrAeO3xub0nGi81IMz8YAUWq2Z+XdpGSGT7bCxqVdOHUjyiA3CtDuBjfQ==} + '@tanstack/query-devtools@5.104.1': + resolution: {integrity: sha512-wmXnQbnwEz+SctYMTrwsOWWNHKhCsVgtaliL9E+VI2vx2Xr773d/MpcrbIU1hEOUqC3p7x59swXFUPDLbplT3g==} '@tanstack/react-devtools@0.10.13': resolution: {integrity: sha512-r0cdB/14+st2Vxl/1Bodlyq4VC8pf9SykLQDYbGHDc1+V146WQo5B3KlYLkfyxD9Q/6+9NPRQHZyl8fvZVMdRA==} @@ -1752,15 +1971,15 @@ packages: '@tanstack/react-start': optional: true - '@tanstack/react-query-devtools@5.104.0': - resolution: {integrity: sha512-E3AfuGqrdyaamuRV3u8RFWQlkZxk7OQa9MJ3XLF9SEHFRHyTUnlHcAQ0hEpDYxNsNFKYrheiRpDKlYaG4vkt7g==} + '@tanstack/react-query-devtools@5.104.1': + resolution: {integrity: sha512-0GoLxe08PVxnkbrHFwO+7fkgbc07xEcoBfdYvbTv63e6Fe7uz7PGyOxKeQTOXKGMmTfoniaISOqkjDzKC/66Ng==} peerDependencies: - '@tanstack/react-query': ^5.104.0 + '@tanstack/react-query': ^5.104.1 '@types/react': ^18 || ^19 react: ^18 || ^19 - '@tanstack/react-query@5.104.0': - resolution: {integrity: sha512-e1TZmDCQnWIfiDVryIHeA6Idj+Lfx1hORLOhXS/l5wcgvtVD4yYqbTDl378sGQKIi2cSgb0TEMC9cKK8GGoJEw==} + '@tanstack/react-query@5.104.1': + resolution: {integrity: sha512-Zz70EgjahNI7aCz8BZxM3vUGU44ycxEAzMuCUjLeA7SVhhOkg3ZgPjPJPvHjs6Rmky/dtmnu1WzjGHNHmhCoZQ==} peerDependencies: react: ^18 || ^19 @@ -1776,15 +1995,15 @@ packages: '@tanstack/router-core': optional: true - '@tanstack/react-router@1.170.39': - resolution: {integrity: sha512-wLZi/hXW/kTeLlMIvI2VB8Oj38GLz8YkHmTM14lLScAzx79UZEwBHWMj6JZw/imuyuhrcmbe8KTFsFBHzJUftg==} + '@tanstack/react-router@1.170.41': + resolution: {integrity: sha512-Mpvw8Wm5MGDbTqI8Yc9flLKxbOHwoWocv0H2aGKcgw2a017oK5nZWqa954P+DrUx/8fI98YNywnHP5XcD3tQ9w==} engines: {node: '>=20.19'} peerDependencies: react: '>=18.0.0 || >=19.0.0' react-dom: '>=18.0.0 || >=19.0.0' - '@tanstack/react-store@0.11.1': - resolution: {integrity: sha512-HaIGKI3YLmjBYIvy5DFDY23oNaYZIsTZfngey07Uh5iLVJgM3bIGCnZeOFOqzjFld9JHWcaHJnasD/bKoGKwJQ==} + '@tanstack/react-store@0.11.2': + resolution: {integrity: sha512-oj5O5DmiMWE+ih+SioX2ayC1kbK7d3fpLx0B75fPJr9nY3zU+hoW010yr64qXsY/9fyiLVE2bn5mGNV3owm8RQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -1802,12 +2021,8 @@ packages: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - '@tanstack/router-core@1.171.32': - resolution: {integrity: sha512-X86Jqk3vB2KJcUfS6oLi7B7yxbaa59QEhZRPPP1fRx3k+Jw/Fu1UYVBcRtdwK/OccQnrlQdVoKvNO3QXmyEBOw==} - engines: {node: '>=20.19'} - - '@tanstack/router-core@1.171.33': - resolution: {integrity: sha512-TK31LyRZuVwwmWrv3oSCBN7OuM4R1qQZePRTiexFyqQUuCo3ERHZgzArosynwZKtYlEf4qbFCvbW7UUfvGiiZw==} + '@tanstack/router-core@1.171.34': + resolution: {integrity: sha512-X+19pGuuLVPvvAvPYw9v/+ktRk5cCll8AtfpBpOhDRmVgUMrfqze0467xtq8YRVVs/mmo5rVtWn/7Tp32RDBKw==} engines: {node: '>=20.19'} '@tanstack/router-devtools-core@1.168.2': @@ -1820,16 +2035,16 @@ packages: csstype: optional: true - '@tanstack/router-generator@1.167.39': - resolution: {integrity: sha512-9W4ErxITHoJH+1eySMm6RmTXzH/7drSUcVwynkco01A6Dg5gsnQsfxyojvLASLp5QxQe4gyubfBVupjBIPdPeg==} + '@tanstack/router-generator@1.167.40': + resolution: {integrity: sha512-WkEueqEvsBBudzO0fx1nWfOmRNW8OAvBoVABTGls9bAWzjdC+KDGHvjCNrvn88ofs1F6gqL8aWnzKCbxW3dCyQ==} engines: {node: '>=20.19'} - '@tanstack/router-plugin@1.168.41': - resolution: {integrity: sha512-D6t6kkivRb0PzNgtYqnGBar9gOXEN8YrU2A3D5gnWMHv33DDshmuhrhRMk/u9cvumoeH88P1R1eWbQ3ZegTgcA==} + '@tanstack/router-plugin@1.168.42': + resolution: {integrity: sha512-vAR5WXJh/ErseEWQftDhsJcr2c++ucRQ6FbqN3ygMO44+ZxxRfW3sIpZmddHROVSmBk8jc6MrwjTPNjVhd62Vw==} engines: {node: '>=20.19'} peerDependencies: '@rsbuild/core': '>=1.0.2 || ^2.0.0' - '@tanstack/react-router': ^1.170.40 + '@tanstack/react-router': ^1.170.41 vite: '>=5.0.0 || >=6.0.0 || >=7.0.0 || >=8.0.0' vite-plugin-solid: ^2.11.10 || ^3.0.0-0 webpack: '>=5.92.0' @@ -1849,8 +2064,8 @@ packages: resolution: {integrity: sha512-Icb0xGuG1+54IV0WMLRcc3ErTx2HeJWyPG661FkQ8UT6guoBq1FJjFRqlG/JS0xi4mFFkBhvwO7tbLa32f3yxA==} engines: {node: '>=20.19'} - '@tanstack/store@0.11.1': - resolution: {integrity: sha512-mzTOBhypOuDJAy/D8n2MfUZ1HFkXnmSETviRyhqEC8LUE7/IZQExOTxMANj3KjTofYTkFNpBY67qaVrT41YccA==} + '@tanstack/store@0.11.2': + resolution: {integrity: sha512-sJ4mjol8uQsHV0gOJzzjwXfh2Fwm+Sz0+8deqiTm4jGbMdjzNSW+xZCFm0kUa870uhd8yi+DpKnZb5Kc4apa0Q==} '@tanstack/table-core@8.21.3': resolution: {integrity: sha512-ldZXEhOBb8Is7xLs01fR3YEc3DERiz5silj8tnGkFZytt1abEvl/GhUmCE0PMLaMPTa3Jk4HbKmRlHmu+gCftg==} @@ -1899,8 +2114,8 @@ packages: '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} - '@types/node@26.6.3': - resolution: {integrity: sha512-dsqMQQoeTLqu9wynDD00q573mNzso3IdQOAfHRJqLCcmCFPoGo9A1bDpUcv/9tnKpErQWv9uKeGfl37EIS02Yg==} + '@types/node@26.6.4': + resolution: {integrity: sha512-ldVPDCzj7fsaGZrLB0NuHuTvJcsNasysBAqMolr/cgxrLd1xbqxIr3XJiPnHHJUCxj5sNF1vnRj9aWnrVh5Jcg==} '@types/qs@6.15.1': resolution: {integrity: sha512-GZHUBZR9hckSUhrxmp1nG6NwdpM9fCunJwyThLW1X3AyHgd9IlHb6VANpQQqDr2o/qQp6McZ3y/IA2rVzKzSbw==} @@ -1919,63 +2134,63 @@ packages: '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} - '@typescript-eslint/eslint-plugin@8.69.0': - resolution: {integrity: sha512-t5jQTKPIgVW1PE6dR6H6Qz5gm8zjMlX5/2gRaOGd9eO6V7J+tQc6iWKukEe7dY8u9HyYasQ0yfF0/FSSTEO2gA==} + '@typescript-eslint/eslint-plugin@8.71.1': + resolution: {integrity: sha512-nNlBf6HuotqMgZvSkWD5hNdemiBIxQ2NmrlgfcUIeZRs+BbakjscCQRq/Hb74EFVnFiSWWdL12JruqwBy3ERDw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.69.0 + '@typescript-eslint/parser': ^8.71.1 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/parser@8.69.0': - resolution: {integrity: sha512-l4b0DhWioGg6Gt2ebGlvfkFMOjRsauxtsnDRwUSRX1qHq3HdTfQHV8wW9zEXeciai6HfeaKOedQn2Zoofx3WBw==} + '@typescript-eslint/parser@8.71.1': + resolution: {integrity: sha512-oM/5sAqz/l1v/zYK1qTOPrn2+JIrBGC1V6uNYucRO5gh6eT9vWJ/RhPbGE59byvZEUQ4VP6XkLBaS5Jti5jpvw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/project-service@8.69.0': - resolution: {integrity: sha512-yi4obFrHMmnsesWehHbkg9zMA7Jt8cXT+mKM08G999pH1yT6nqgsHx7MYm0uY1wAj8CqiBXYRJ7WAT0QdQHQXg==} + '@typescript-eslint/project-service@8.71.1': + resolution: {integrity: sha512-Oijc9RUsohHjncg6iGi7gCtjnEjYt9FWv9u6ygK8uKcHK5eLjLAkqERQ9BaytbpceOFdk6kifPCS/zAZE+A99g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/scope-manager@8.69.0': - resolution: {integrity: sha512-ewfspqWvSxKSOaplqAUNbaSFO0eB6w1EtQ+esfYFRm3614Ty4uNtExkcbgd6nWsXphbqKyf9ZYdbZdv2xEoWEQ==} + '@typescript-eslint/scope-manager@8.71.1': + resolution: {integrity: sha512-1YUDZXdTnXLlob03SFHBipdyMBsDVm7zoSz0ytTJ39dk5J1TgsTK03VlR/dLXG/RLLUrPcYbD4rp23BmHxHP0w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.69.0': - resolution: {integrity: sha512-xNqK7YTDZsLniQMV/4rpFR8Z5JlqeRvVjuG1YgF/mdPVH84HSD19L8CczMA0qg2RfwEV231GHH3VnToJDo4MfQ==} + '@typescript-eslint/tsconfig-utils@8.71.1': + resolution: {integrity: sha512-oTvkml5SxXhgg+WWKhod5qWQICDXtOB+/Hi9VdPKFAANJ2b7YOgMffgvzXuqog7R6A/JtrzRf128dsxummyWhg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/type-utils@8.69.0': - resolution: {integrity: sha512-ZfoJAVg3JZndQEpEl9petVlxau3lRuElc4HRMuAlLCf8to04/iHz692RUSNmXKDjEuJmIL+KZ2/BsOcBc16dsA==} + '@typescript-eslint/type-utils@8.71.1': + resolution: {integrity: sha512-kH3t3jZCYv2PZSBEWPKTariLrCaoF1CLoPitYFBJOhAGEwWnSRAtGEifrfrpBa4K9JlwWNZotgA5w3/wLSk/FQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/types@8.69.0': - resolution: {integrity: sha512-K3VrubUPhlo9VDBS6QdI8YB5j7ClpqLRdefcz6PFrhnwicehBweqQ9Evhl4l+FYz0HdDmMqIiSX0aldGRYtDCA==} + '@typescript-eslint/types@8.71.1': + resolution: {integrity: sha512-ybYnPTUwg3VQQOFEiBPLs8Jxl1ry2vXdn1kVKguomBbvxpetdu3MKTNDqFNUrlG8ylP9MpZosmXMFYlGQHk1oQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.69.0': - resolution: {integrity: sha512-AdFkgqck3Vudb/kWnxlyafU/4aBhHrbQ9locP2N4psXTy5mOBg0SHJumnLvx7r6g1gV4DKvUFwV2nJZBoqOD8w==} + '@typescript-eslint/typescript-estree@8.71.1': + resolution: {integrity: sha512-pSKSEK1JJpHs6KiKVtABCE4iJK5d7FLFzDXQNBQ2oRY7LEd3UwOt3TZemTgu9syTIf56dJWlTn/pdmrO9oKUXQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/utils@8.69.0': - resolution: {integrity: sha512-tUbx60BBqQa31kXF5MCsOOLL5E/WzUuxIn7YpAvq+eaUlqvk8/NXnXMBNAdLCr0icjkzem7iUA5QqWHe/hJ1aw==} + '@typescript-eslint/utils@8.71.1': + resolution: {integrity: sha512-CBjT6gfAz3DW2j9Q4moFnqt208Aq+506sVGXfpRcyAeqn0EpayL0mjdWoCO2t3RC7GewNrFxdeehuEaPg6DMzQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/visitor-keys@8.69.0': - resolution: {integrity: sha512-+rmdgPA+EXkNgKYvHvFfhrs35utXbwaC5PGpDquSXcoXQDKUA5UjV0LmTucG/4JXkM31BTu4TilHtrN8IVBe8w==} + '@typescript-eslint/visitor-keys@8.71.1': + resolution: {integrity: sha512-0GxiUGqMU0qXJt58cBsiG3DP8lUmBaFo2vChtUX+CT7PnR3v/VGLLrzVP4K9r1lNiZXjHYefMBbPunplr09v6w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@uidotdev/usehooks@2.4.1': @@ -1994,11 +2209,11 @@ packages: peerDependencies: vite: ^4 || ^5 || ^6 || ^7 || ^8 - '@vitest/expect@4.1.9': - resolution: {integrity: sha512-vl/rYsUKcBr3SnQn166+XR5ZQcgMx3DQhFWdfli/cWpLnLUmbxZvyrJZotLFUryib+LtArYMSTJ5RbQ57ZqrlA==} + '@vitest/expect@4.1.11': + resolution: {integrity: sha512-VX2x5vNJXET47KAFzwERI+KRMtTTCSWTfSMKsW7JsUsXV4psq++e3DvZpuTDOpHcxytiDs6p2nhVb2tVDiiUYw==} - '@vitest/mocker@4.1.9': - resolution: {integrity: sha512-EVkXzBjrPGM+cK8/ANWgBrkUCfJfb38/EfTSO8h7pWvKkyPkpWxvR7BkD2MyItMF62C97zAEoqdpUixwR/e+Rw==} + '@vitest/mocker@4.1.11': + resolution: {integrity: sha512-2XJVD55d1o5AZous5CCGKS74g/riOj9odEt2bQpCVZeblHyHdnMeFl4jl0XjU21stf4mbjUkew2eXQZt65g5CQ==} peerDependencies: msw: ^2.4.9 vite: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -2008,28 +2223,28 @@ packages: vite: optional: true - '@vitest/pretty-format@4.1.9': - resolution: {integrity: sha512-s0iufns3iIFitdgm+YR7g1whCAaGtXz459VS9/PqyKDEEFgYIhsHOQmXgIgDuYCt7DeQmiZT0Qe2OA2p4ZPu5A==} + '@vitest/pretty-format@4.1.11': + resolution: {integrity: sha512-yiZzPbGTS9Sr/JpFl8zHrcIkAofNbFV6k21vIgQN/cY/oxZeXhJv5sc/MBJ5jFKWmWs+oJHw0UXLZjmf931+Vw==} - '@vitest/runner@4.1.9': - resolution: {integrity: sha512-KXLMDtc7oe70+3mJfGrPUWPesswH+3sTxAMAMl8DG7I8IUQT4XW718dY5ID3vPUcmlu27CcKfY4P3h3I29SLJg==} + '@vitest/runner@4.1.11': + resolution: {integrity: sha512-LztvUgdwMNJMIkj3hQnnxiC2Xy1zNxq928W/xhjCLaNCzqTZOudjwbQf6v9IntZGPw132i2Lq2rgTRZHD3JHNw==} - '@vitest/snapshot@4.1.9': - resolution: {integrity: sha512-Jc7RKGNBo8Z28WYIm0Niej4xdSPByRf6mU58VpHQkd6Zh05rlnA+twjbK5HyeIGHxrzsc3mJgS43uM0CZKzaIA==} + '@vitest/snapshot@4.1.11': + resolution: {integrity: sha512-pN7ikn1ON7h8ee4gIAp4AzyK+zBtJPzVbqOgu5LCEh4VaJVbPQcgYQYJIMGQPXVeJJq1fnfazis7a5pFNPahog==} - '@vitest/spy@4.1.9': - resolution: {integrity: sha512-fHpsS6mIi+PiEW+vcRVOMkX1oSaPKne3VOclSFICPcGOmfKgXPU5iAah+wcNcj2xPrCCmfq99IDGf+EojhhvhA==} + '@vitest/spy@4.1.11': + resolution: {integrity: sha512-apNa/prQy2qCeywhnixOHPRCgGNhvg7T4Dapfl1GahLp/R+uhBm5cPyFoNVyqsNd2h1nJxL6BqqdIjiABL60YA==} - '@vitest/utils@4.1.9': - resolution: {integrity: sha512-A51o8ymO5PpqlWNnBP9ZHPXDIpuMtTLlGSjN7la4US+LJzoUMyhwjA5QXlm39JexgwHKW4Xjs8Z2d3dLCXOeuA==} + '@vitest/utils@4.1.11': + resolution: {integrity: sha512-zTCVGpyFsGWBhllOyKlTw/vnr6D9qxsfSDyfbyZmTyjHw5N/VuvzHpHoQjm2ZJzn4RJgx5w4r7V0er69CmLgPQ==} acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn@8.18.0: - resolution: {integrity: sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==} + acorn@8.19.0: + resolution: {integrity: sha512-oJlA3XiRm7Cyk6qFD2Jn8ak9B7jSy0qy00ADO3+8dpT0LSjFihQYv4C02LFCSYJV3Q37xYwwRy5m+IpIiUzqWw==} engines: {node: '>=0.4.0'} hasBin: true @@ -2051,16 +2266,16 @@ packages: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - ansi-regex@6.3.0: - resolution: {integrity: sha512-WpDfL7NO6j7tH88IDBNVdUJxDh9nmCteAVW9dsep846XdwF4naCBK+/tGLX3KJgcpgMRXCFlTM2hKGoK9FsdrQ==} + ansi-regex@6.4.0: + resolution: {integrity: sha512-KzTVk2tCWAHtYrvvvaP8bJKJq2pVinhLcGEQdtLIYPbmNGNyYe8QwNaTUYQp2J7/vIsUKt5QCqAfUkYyG9DkOw==} engines: {node: '>=12'} ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} - ansis@4.3.1: - resolution: {integrity: sha512-BJ8/l4R5LRE7hW9WdSuGYrLSHi2ynxeFpDFbH0K/CgNeY/tyhk+vO6TYxXC5r5CpUhNVX310xzPsN/H9lCdfOA==} + ansis@4.4.0: + resolution: {integrity: sha512-9k3v7xcHwgdO/DruxGIg4HtjvlAZlcnsX/mzqUb1t3NkYnl9kK2UJ+Gq0io+vQf7iT//BD/HB/NBkUR1LWxoeA==} engines: {node: '>=14'} argparse@2.0.1: @@ -2096,24 +2311,28 @@ packages: resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} engines: {node: 18 || 20 || >=22} - baseline-browser-mapping@2.11.21: - resolution: {integrity: sha512-uh8vpY/1/YyFkunIDFH/12p7/7VdPKA1hejMVEbdkEaWnUz0Hesvx5EbiU6XxjyHZIOju+ZMbQJkRh+es3/spQ==} + baseline-browser-mapping@2.11.27: + resolution: {integrity: sha512-ElY12DaROGuan+lMmZ8Cvo/ZUbXPe7Enc/9VU/b1T3Kp4dwytRcNdR8DoSJN5SNJT/CuvcCA0DHDVmMOCePdRQ==} engines: {node: '>=6.0.0'} hasBin: true - brace-expansion@1.1.18: - resolution: {integrity: sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==} + binaryen@130.0.0: + resolution: {integrity: sha512-XDrb+zql0RbFPKgj7MuH9zOc78R3Fa/P/VSGnnpdwYsvNZPWjcMYMdAkKCOQEL2A7yqgjSMTDRFp6gfSDW+/QQ==} + hasBin: true + + brace-expansion@1.1.21: + resolution: {integrity: sha512-9zeA+KLZNNzglF2TPKRQEDyx6Yby7daAkuy8MiPzpXPsYDWi/DRM8jmwUDxokQjYqBpv5DgPiwD4h4ZZSy1Ujw==} - brace-expansion@5.0.9: - resolution: {integrity: sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==} + brace-expansion@5.0.12: + resolution: {integrity: sha512-YovQ3rzhaLMIrDjNDMkNS01tea93qhEhG5xy8f6+R0l+dw3Ki+5sCoIoI942iuLZTHWogWktgwVDhU09iNEimQ==} engines: {node: 20 || >=22} braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - browserslist@4.28.9: - resolution: {integrity: sha512-EWazOblFYUvlGZcfGhPUPmYh3nikUxBVb+y9MJun5f3hBi812X+8MSQTujLBtgK3cf51fJWbWfOjyeO954d+Eg==} + browserslist@4.29.3: + resolution: {integrity: sha512-1R4kiYKXGViqEN0CnoDrXc1StD9niAwu+j2dukWzrD4bJgsD4lDmEp0CRbc6E/vYJIfTHwPmwyaKtVSudICdPA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -2132,14 +2351,14 @@ packages: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} - caniuse-lite@1.0.30001810: - resolution: {integrity: sha512-TITQPUkaz+aVk5GL6NhOdwk1aEaNTSDPsGFWrTuhKGtjTF70jL/Oht2W4c6rXUe5fu7Ie19VIahAXHIIiWWNeg==} + caniuse-lite@1.0.30001814: + resolution: {integrity: sha512-/Uaf1lAzr59XcMpW0o96WoEfr+VXK2OX4U9AgFoiSHsVJ4HppnIFUjtYzsyDH2+tgANaQb2/oxYGwCPapN1FpA==} ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - chai@6.2.2: - resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} + chai@6.3.0: + resolution: {integrity: sha512-XWAtwJ6OHO+tj0EKCs0Y2UamnyOxseZWltU4x2U2wh8g4AigdjwvtUjvLP2tqkA/avxHEtzxNaqGq/YGNwckKg==} engines: {node: '>=18'} chalk@4.1.2: @@ -2211,8 +2430,8 @@ packages: cookie-es@3.1.1: resolution: {integrity: sha512-UaXxwISYJPTr9hwQxMFYZ7kNhSXboMXP+Z3TRX6f1/NyaGPfuNUZOWP1pUEb75B2HjfklIYLVRfWiFZJyC6Npg==} - copy-anything@4.1.4: - resolution: {integrity: sha512-/LLeW0CtsoSybVkEpYjifB2Pis8DUSuwY7QD9FiR98fWkdbdrACw3ilckfnAHMecQ+RFEdZlRt6eCXhYHJbl/g==} + copy-anything@4.1.5: + resolution: {integrity: sha512-vePst2VLTSqPglW7Q98VwFpGiGpOHTyXIo81MO5VyLecA5zMbZw/P/V1vmwD1jksa2iJpn/YkDrJ3XhTfzUyhQ==} engines: {node: '>=18'} cosmiconfig@9.0.2: @@ -2259,14 +2478,6 @@ packages: decode-named-character-reference@1.3.0: resolution: {integrity: sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==} - dedent@1.5.1: - resolution: {integrity: sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==} - peerDependencies: - babel-plugin-macros: ^3.1.0 - peerDependenciesMeta: - babel-plugin-macros: - optional: true - deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} @@ -2293,8 +2504,8 @@ packages: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} - electron-to-chromium@1.5.422: - resolution: {integrity: sha512-UvA/32XqrLDdZSn7Jllo1AYNcWji/G0d5M0GTViE7KoGBiMunw3a34Sb2KO4ZZyrSEhqsxFoVhWWJshdyfKqJA==} + electron-to-chromium@1.5.445: + resolution: {integrity: sha512-iX7o1nF+qNb3Bv5mLYgqfgF9Znh9e/8MKXdmbb8Gv2Q47OKIzTwEPD1oda1HrgEwYatTLJj0wQjHvIFt8Db53Q==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -2425,8 +2636,8 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - fast-uri@3.1.7: - resolution: {integrity: sha512-dOvZVzjdZdz7phd9v6jCbwxrBW3fK6n8Rc0CtdmM4bumzMnxywBYhuph6J819RRw/ku+rLbelwfMunktuzVVHg==} + fast-uri@3.1.8: + resolution: {integrity: sha512-GZMtZUTNRpOVIECoXwLNZS5xUGE+mVNbTB8h/7Rwh2TFWcBQiPzTgyZi05BF9UMZKkLJv8XBRJTlU7zg8+ZfMg==} fastest-levenshtein@1.0.16: resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} @@ -2444,6 +2655,9 @@ packages: picomatch: optional: true + fflate@0.8.3: + resolution: {integrity: sha512-tbZNuJrLwGUp3zshBtdy4W+ORxZuIh8a5ilyIEQDC5rY1f3U20JMry0Ll3WBzU58EZKsEuJFXhb5gwv8CsPvgA==} + file-entry-cache@11.1.5: resolution: {integrity: sha512-+PFTHITI08JIGhnNpGNI8T8inUpgZfk3GNEqfT9R2zZV2iFXg3CvqzSl/uEhs7TSGujYRELEANyDvS8Fj7+S7Q==} @@ -2469,8 +2683,8 @@ packages: flatted@3.4.4: resolution: {integrity: sha512-5+ybhBZANEJxaH3X5evAFatUxLfEHSr7n6kYJ+1Qd0mUqr4eu9gIf6GDbWHf8RJijHrjjO8G+la14SlL2SeS1Q==} - follow-redirects@1.16.0: - resolution: {integrity: sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==} + follow-redirects@1.16.1: + resolution: {integrity: sha512-FNvFGzoMLWmE6Yj9spb/zjd7yiNCHiAW9/Tg9CXrQ8wuu32HtlJOwWO11OJafl5FfY3DxTdQ0vj42zU1kvv5jg==} engines: {node: '>=4.0'} peerDependencies: debug: '*' @@ -2508,8 +2722,8 @@ packages: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} - get-east-asian-width@1.6.0: - resolution: {integrity: sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==} + get-east-asian-width@1.7.0: + resolution: {integrity: sha512-XjH1AECxf0giL2V1aU8vKyRR2ppRUb5c0EvT7zuJTokQ74bNo52zOtghqdWIqrhUD79fo3x0WfKZdOqxF6LG1Q==} engines: {node: '>=18'} get-intrinsic@1.3.0: @@ -2543,8 +2757,8 @@ packages: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} - globals@17.12.0: - resolution: {integrity: sha512-cezEd/DTyyht9cvSSURyygXPfy04GtWO/5e6ZPvH7fCtjKz9PYOmuawphw1Ctd1f6C+5JypXfGD7ahNMXvevBA==} + globals@17.13.0: + resolution: {integrity: sha512-RwMTC61u7hrG3ZJMkZQOK4JLJrKS8QtoTii63EmWvFXHqycY9FObBJQCbsLxSO8kjKhWE5kV1GC+Vb1g3RI0Zg==} engines: {node: '>=18'} globby@16.2.4: @@ -2631,16 +2845,12 @@ packages: resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} engines: {node: '>= 6'} - human-id@4.2.1: - resolution: {integrity: sha512-zPGsiS+dWoTZtZ4AtpA9Y+BdSFSNWvnouNlWNoUFyAM6xHOHmdCvqO3k8AIbdamCOv4gUFUVNPf6rJFfc4UiJw==} - hasBin: true - ignore@5.3.2: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} - ignore@7.0.8: - resolution: {integrity: sha512-YYNsSlXBjMk92SKnkwvB5LOVSa6OznlFUGcsvrFgNJbJCd0M1XKeFVRc8ZByeCqz32FivYNHJVooLmdqrmvp/Q==} + ignore@7.0.12: + resolution: {integrity: sha512-/8UvqAPU9DGTI9k4mxtf49U37Isfwr8Uts96+SBHIkFxPJnHS0Ew4f00sM4Scd8V8EjM0jUNtVDdv1kPdt35lg==} engines: {node: '>= 4'} immutable@5.1.9: @@ -2717,9 +2927,6 @@ packages: resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==} hasBin: true - js-sha256@0.11.1: - resolution: {integrity: sha512-o6WSo/LUvY2uC4j7mO50a2ms7E/EAdbP0swigLV+nzHKTTaYnaLIWJ02VdXrsJX0vGedDESQnLsOekr94ryfjg==} - js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -2769,8 +2976,8 @@ packages: resolution: {integrity: sha512-nbD8lB9EB3wNdMhOCdx5Li8DxnLbvKByylRLcJ1h+4SkrowVeECAyZlyiKMThF7xFdRz0jSQ2MoJr+wXux2y0Q==} engines: {node: '>=20.0.0'} - launch-editor@2.14.1: - resolution: {integrity: sha512-QWBrQsMpH7gPr965dsKD/3cKWiNoTjpATQf++Xq63N6sKRGMwlVXz41O1IZTMfZQgBctD/K5Zt06+/I6pP6+HA==} + launch-editor@2.14.2: + resolution: {integrity: sha512-NHJEb30MGBCkmZXLZwz25t37QR4aY03ZzPYUJXOJaOa92uWwExI9SBQUuIznBYc1xkD7cJNGX7oc3Nl3sq2kQQ==} levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} @@ -2882,8 +3089,8 @@ packages: mathml-tag-names@4.0.0: resolution: {integrity: sha512-aa6AU2Pcx0VP/XWnh8IGL0SYSgQHDT6Ucror2j2mXeFAlN3ahaNs8EZtG1YiticMkSLj3Gt6VPFfZogt7G5iFQ==} - mdast-util-from-markdown@2.0.3: - resolution: {integrity: sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q==} + mdast-util-from-markdown@2.1.0: + resolution: {integrity: sha512-KRLgmPaP2H1ul2bpoJkOS+9pAcDAAj9Nu1mqLnh8NLeJG5tlvj42TH80PIGBpROWlRXLk0lDrWNuZCFy/tsB4A==} mdast-util-mdx-expression@2.0.1: resolution: {integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==} @@ -2900,8 +3107,8 @@ packages: mdast-util-to-hast@13.2.1: resolution: {integrity: sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==} - mdast-util-to-markdown@2.1.2: - resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} + mdast-util-to-markdown@2.2.0: + resolution: {integrity: sha512-2Jn/ADrHFFyyniBMi0bncTbJqU78K3/TEYvzvwrWWzD9MYPUa/Gm4r3nOeKFQg/PDM5BsbDYdc8ackW4NTY6NA==} mdast-util-to-string@4.0.0: resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} @@ -2917,8 +3124,8 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - micromark-core-commonmark@2.0.3: - resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} + micromark-core-commonmark@2.0.4: + resolution: {integrity: sha512-wxEeE8v8XVvOrxn1TZj74qYhAtTQsSqufHVS3uNVyT1MupXxhyaHk8/9xDNPh9BmL77QNDgWTkZ3RsYHB2ry7w==} micromark-factory-destination@2.0.1: resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==} @@ -2926,8 +3133,8 @@ packages: micromark-factory-label@2.0.1: resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==} - micromark-factory-space@2.0.1: - resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==} + micromark-factory-space@2.1.0: + resolution: {integrity: sha512-fS8hnLIjnjvdQIj39Geug8wWsR0HrYZ43KShKxNfwT7t2LOHo/LbWZEzEaSOjwtjdCsjoE6syHhonEzW0zv0+Q==} micromark-factory-title@2.0.1: resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==} @@ -2953,6 +3160,9 @@ packages: micromark-util-decode-string@2.0.1: resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==} + micromark-util-edit-map@1.0.0: + resolution: {integrity: sha512-Pa2ljlsEL6sVwFaYeyrOLSYbQt73JvGbPOYFq+9AElXiSnfI5Q4465RRZ1sHv7lDjDOnGRDDaqPXqClqWK/q1Q==} + micromark-util-encode@2.0.1: resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} @@ -2974,11 +3184,11 @@ packages: micromark-util-symbol@2.0.1: resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} - micromark-util-types@2.0.2: - resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==} + micromark-util-types@2.0.3: + resolution: {integrity: sha512-oxB2Ik03hI0gv+VNn9tnh1t1YEe9MDPptViAEgfdf3YQHsn0pzGTgCdlSCJXcwhqm8phaEuM7zeEu3QQzVBrPg==} - micromark@4.0.2: - resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==} + micromark@4.0.3: + resolution: {integrity: sha512-oGYfQzHSG5dOMovQcJ3fyTmZlWAWpi0XA0sJwJs+i6OT88o1+Jtw/8z0CmdowSLxGhhFK89rQ/oXph/wN02PNw==} micromatch@4.0.8: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} @@ -3022,8 +3232,8 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - nanoid@3.3.18: - resolution: {integrity: sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w==} + nanoid@3.3.20: + resolution: {integrity: sha512-uKdg2G3GNCKQn9byYOpxbGqrT2fGO5KRt5J/8b3pok8rT6qxGWF6hxMyJiEYtAf+FVyYuD9hRaDqX5uPFYJ4ZQ==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true @@ -3033,8 +3243,8 @@ packages: node-addon-api@7.1.1: resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} - node-releases@2.0.54: - resolution: {integrity: sha512-YHs7BmmcsdAI5Ozuf8JZo6PT0mv2GIWC9vMfvUC3dp65M8hn7Ux8CPL+2oBI7juNuj9d0ndhTcznq2ODBps9cQ==} + node-releases@2.0.57: + resolution: {integrity: sha512-kQK9LGGFiHtrWiNhZtA7Qbw17AQz+dmsEKODRIVTXA9+e5MS/2gZEBhYJt13GrAz5/IOZKddH/0Z3TP/Zgo+yw==} engines: {node: '>=18'} normalize-path@3.0.0: @@ -3045,14 +3255,18 @@ packages: resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} engines: {node: '>= 0.4'} - obug@2.1.4: - resolution: {integrity: sha512-4a+OsYv9UktOJKE+l1A4OufDgdRF9PifWj+tJnHURo/P+WOxpG4GzUFL9qCalmWauao6ogiG+QvnCovwPoyAWA==} + obug@2.2.1: + resolution: {integrity: sha512-XrsrhT5sybtKI6wakr2SPOlGZWWYbUXZ7a0jT8/QOeAPau+1X/bSegNe5YR75oJmEZQbKningirmGOEJCIk61Q==} engines: {node: '>=12.20.0'} optionator@0.9.4: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} + oxc-minify@0.136.0: + resolution: {integrity: sha512-u9UvPFTYVwQ/i1kpp/c20S/SbvLaLV0Ngzyhgi0YV4B1SlxM7RgnnePl4vY9N3Z9sTRcozL1MRStI3PlUN9RFA==} + engines: {node: ^20.19.0 || >=22.12.0} + oxc-parser@0.120.0: resolution: {integrity: sha512-WyPWZlcIm+Fkte63FGfgFB8mAAk33aH9h5N9lphXVOHSXEBFFsmYdOBedVKly363aWABjZdaj/m9lBfEY4wt+w==} engines: {node: ^20.19.0 || >=22.12.0} @@ -3126,19 +3340,14 @@ packages: postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - postcss@8.5.28: - resolution: {integrity: sha512-RRuzqDtt5Y9h3quz5hWhK+TPnsmVs6WwSU6LkJMeY4HstUEDuYTG8UJSdawMRzmzAtV+KEoG8N3Qg2qLy5vM/A==} + postcss@8.5.29: + resolution: {integrity: sha512-49cGhUbXj8Qenv0iTMxA1cFBzxXoctpC9Ujd77t1WcbJIr6nF/eI7g/8MgxrYldFRuAXvja7xQRwavoW7kgrxQ==} engines: {node: ^10 || ^12 || >=14} prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - prettier@3.9.6: - resolution: {integrity: sha512-OpN0zzVdiaiAhxpuuj5efpIS4sY9j7bY6uR5mnj5yPzGkdkjNKSJeUThPb60Jw29QuAZgA4o+/iB49kFiaBX6g==} - engines: {node: '>=14'} - hasBin: true - prettier@3.9.9: resolution: {integrity: sha512-Z/CJHIkdujO/OtN7nXUii0Rf3VT5SRuhjBA82Xvu2XhBUgX3nhP67T0LHceBdQLex7OOFGTox+Q5Yg8Jk2Qivg==} engines: {node: '>=14'} @@ -3234,8 +3443,8 @@ packages: resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - rolldown@1.2.11: - resolution: {integrity: sha512-qpSwIyz0jHQq5qXBTNxFmE6664rJ7O+4TvPFOiOaBSrz8IOHc1koKKSqTM2H6u1UG1+TveuC6vaDHKXFOvb1Kw==} + rolldown@1.2.12: + resolution: {integrity: sha512-8wafseiaG80xmXSfqidUNqZcylTlhmPZZt+za2m+js2sFZ8dTNlhIOV2WcbIPx2hgwPBJpEUGFAMZ9bgBBLTSQ==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -3283,8 +3492,8 @@ packages: resolution: {integrity: sha512-46uFvgrXTVxZcUorgSSRZ4y+ieqLLQRMlG4bnCZKW3qI6BZm7Rg4ntMW4p1mILEEBZWrFlcpp0AyIIlM6jD9iw==} engines: {node: '>=10'} - sharp@0.35.4: - resolution: {integrity: sha512-n++8XWcj+jCOr2IOl7h8LbKnGBDY4aPbmprMONBNFdn0ImXqpGVv5zliDs0V9HbmbCQLpbuo2ej9rAoOQTvMDA==} + sharp@0.35.5: + resolution: {integrity: sha512-Ywn4OnzGukp7CDMrp08RQ50YKmuwG47brZgIVPTvBaaAfQlRlygrRqSrxdCiL9M+LlzLBiJ68IR1QqvzHyjC7g==} engines: {node: '>=20.9.0'} peerDependencies: '@types/node': '*' @@ -3300,8 +3509,8 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - shell-quote@1.10.0: - resolution: {integrity: sha512-w1aiOKwKuRgtwAReIIj89puqg+I7GvX4IbLrvmhXbzQsj1+Zwi4VO3+fa6ZF91TWSjIxoEkKnMeHcLEODK5ZXA==} + shell-quote@1.12.0: + resolution: {integrity: sha512-PcByqNyT/38F2kDNi006HAMRJaULuBzq/FOsw3qdZvX/GA9W/jamDaRskgHjubHiftXK5sIFxLNkvrXUwcof6Q==} engines: {node: '>= 0.4'} side-channel-list@1.0.1: @@ -3354,30 +3563,25 @@ packages: peerDependencies: solid-js: ^1.6.12 - source-map-js@1.2.1: - resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + source-map-js@1.2.2: + resolution: {integrity: sha512-KGj/8Y43x35aZVDtt+J4mK1hoLGHULMYfSkODJNQjNDC3oW1PqPoxMwo0pLUsWM/UEGzON/NxeHywEfNXNP3Vw==} engines: {node: '>=0.10.0'} space-separated-tokens@2.0.2: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} - sqlite-wasm-kysely@0.3.0: - resolution: {integrity: sha512-TzjBNv7KwRw6E3pdKdlRyZiTmUIE0UttT/Sl56MVwVARl/u5gp978KepazCJZewFUnlWHz9i3NQd4kOtP/Afdg==} - peerDependencies: - kysely: '*' - stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - std-env@4.2.0: - resolution: {integrity: sha512-oCUKSupKTHX53EyjDtuZQ64pjLJ6yYCtpmEw0goYxtjG9KpbRe8KAsl2tBUGU9DyMcJ0RwJ8GqJAFzMXcXW1Rw==} + std-env@4.3.0: + resolution: {integrity: sha512-OtU/EgQ1kIm5KwqQpBC6ZEMXrZRui11w8zgfTWp8cdO9B8OaPsbA8bTHO2P+HNo1VlUTGMVBwPhydu6poeXiag==} string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} - string-width@8.2.2: - resolution: {integrity: sha512-GaPUh5gfdrYzqeVNZvUfT23vYYxXzKYidUcnMtJg/3rxRV63EFZy3k6xfKlmfeJD0176lnUV/Usr3XcwSvFzpg==} + string-width@8.3.0: + resolution: {integrity: sha512-ZbmZM0JCihQN91dWnxoipT2KOEyHqEyfRXUyjuRhW8b/xnqPDoq4gWEVApTVa9db2wN8mmoikgFBbjh71+cGeQ==} engines: {node: '>=20'} stringify-entities@4.0.4: @@ -3439,8 +3643,8 @@ packages: peerDependencies: stylelint: ^16.8.2 || ^17.0.0 - stylelint@17.15.0: - resolution: {integrity: sha512-mWIkesYQvQjf4Kvdeu9ns0IL8/K/wtjaGxPqsPd6DlLZvaQxGysJsocxUDrBcyHQ5VleAk4uSMat4yMrVED7PA==} + stylelint@17.16.0: + resolution: {integrity: sha512-ejlWnbJ13x1GU32+zZXa6sYQJsKKkwSdv2B4rAdO3OWdEmvhSJKcXi5pOphQYSzyaj1kXpuGJr7pcMBNfDIuPw==} engines: {node: '>=20.19.0'} hasBin: true @@ -3456,8 +3660,8 @@ packages: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} - supports-hyperlinks@4.5.0: - resolution: {integrity: sha512-ZW2OvfeCXrNTbLakPUzjQG922EeGCOteFSVoek5DKStTh898wf7zgtuFlzQN8HfZCxC3Eh02yJVrRW51hADf+w==} + supports-hyperlinks@4.6.0: + resolution: {integrity: sha512-FL/q/YePS4tFFTNiBOR+zPk2ZrKheqNtmTJ/9OUZ4e1wKHJofDbGQSmSsxS0XNnabSkqexryCaXGvEKz1vf9UQ==} engines: {node: '>=20'} svg-tags@1.0.0: @@ -3473,8 +3677,8 @@ packages: tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} - tinyexec@1.3.0: - resolution: {integrity: sha512-QKAl9m8gWWGHV8jZcPeym6j+XULi6tOf1mT83WYJ4Lk2ytW/uwAWkrP0uFsdoYMdueVJ0qs26wZ+23xeB4ibNQ==} + tinyexec@1.3.1: + resolution: {integrity: sha512-GCvB3aoys96IuDFBMcTB46JOR6mdMtAToqwiW8JlWhsoh1mhHi/xn9ss/Dg7N555GiJyEt2qzoG/NHCwM6h1EA==} engines: {node: '>=18'} tinyglobby@0.2.17: @@ -3513,8 +3717,8 @@ packages: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} - typescript-eslint@8.69.0: - resolution: {integrity: sha512-B3MltX0VqjUBNEe3b3sSuiRbfa6XrfHFtBiPamjT5AsW/dfq+y+bc0wyuS9DxAS1LyzCxRp2+rxzpLUvqM2BvA==} + typescript-eslint@8.71.1: + resolution: {integrity: sha512-oiNVPC3/NbV1FpaHU07l8O6ynqG9v4PAiW2WvTrAmZdR0f2HI/gE668ElMLCK7Xbsu5k2fK5C4fXNiq05j7/nQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 @@ -3528,8 +3732,8 @@ packages: undici-types@8.9.0: resolution: {integrity: sha512-KTDyRTYX8sWmKXAikPHHSyc63CRPETMctyjKFupcC6OBLXT3xsN0e9aF7m+mIXutFWpUXuedtowG7iLOzp0kQg==} - unicorn-magic@0.4.0: - resolution: {integrity: sha512-wH590V9VNgYH9g3lH9wWjTrUoKsjLF6sGLjhR4sH1LWpLmCOH0Zf7PukhDA8BiS7KHe4oPNkcTHqYkj7SOGUOw==} + unicorn-magic@0.4.1: + resolution: {integrity: sha512-lzlXPoVB0Uy/FvTaUgX39RbixYiSKoc3JSoSf01+0c2B6FR3qdYIPN7Qjo/AV7n6sqLCk0509cT3LRj1oSZ1+A==} engines: {node: '>=20'} unified@11.0.5: @@ -3554,11 +3758,12 @@ packages: resolution: {integrity: sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww==} engines: {node: '>=18.12.0'} - unplugin@3.3.0: - resolution: {integrity: sha512-qa66K+crbfyE6JK10GjvbJeRrOsuC/JpbnHctfyp/i4oBTxWOzJfRZyDiOk1PtErMFRu8JhsU/wPvOdBNWe5Rg==} + unplugin@3.4.0: + resolution: {integrity: sha512-9skdIFlCsPdFV7wUfZxNsFInlW+7nJmGu2gkTu0OUhF56aXGsHab9x52/QhdJ4lC7ZDPWTxbiC4ANqVlsuaW3w==} engines: {node: ^20.19.0 || >=22.12.0} peerDependencies: '@farmfe/core': '*' + '@rsbuild/core': '*' '@rspack/core': '*' bun-types-no-globals: '*' esbuild: '*' @@ -3570,6 +3775,8 @@ packages: peerDependenciesMeta: '@farmfe/core': optional: true + '@rsbuild/core': + optional: true '@rspack/core': optional: true bun-types-no-globals: @@ -3587,8 +3794,8 @@ packages: webpack: optional: true - update-browserslist-db@1.3.2: - resolution: {integrity: sha512-UQ+MSxlhRm1bzjhU+DcuXfjFO1FzNtqhK5+9Yvlp90ItDLk5vT932A0rFu619nf7RVS+Y/VeaUW1jaRDqZ8VJw==} + update-browserslist-db@1.3.3: + resolution: {integrity: sha512-pJ2sYawQS0R/WI928Gj5GlPhTGzbMelq0+4INtSYNDV9ErKJcX6xjGWkoG/VnB3dpUm00zALaqkrUD77pO5TDQ==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -3599,8 +3806,8 @@ packages: urlpattern-polyfill@10.1.0: resolution: {integrity: sha512-IGjKp/o0NL3Bso1PymYURCJxMPNAf/ILOpendP9f5B6e1rTJgdgiOvgfoT8VxCAdY+Wisb9uhGaJJf3yZ2V9nw==} - use-sync-external-store@1.6.0: - resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==} + use-sync-external-store@1.7.0: + resolution: {integrity: sha512-6L+EeigHMQhdaIPNIFUKwfWJSwWFQ8gJbJ2DLOs5sDIegTwR9fRxvnM3uciHKjIZhFz+KAv2emhWMRvDmMcY8A==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -3611,6 +3818,14 @@ packages: resolution: {integrity: sha512-xZe/16rV4aa+HGSOCiY2YeLT1OybRLrrkL/Rqaq7p7GMVXjFh+6wN4oMYgjFmnSnhY8t6Xpdl2l9qmnHYuMHwQ==} hasBin: true + valibot@1.5.0: + resolution: {integrity: sha512-nil6AkP2TChWL43Z5uJ6GTxX01CUA+g8LWUM+N/rB9NBbkUMaUsi9PUNzlUPgoKASgmx9f7eGOYpJ04/fSa6FQ==} + peerDependencies: + typescript: '>=5' + peerDependenciesMeta: + typescript: + optional: true + vfile-location@5.0.3: resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==} @@ -3633,8 +3848,8 @@ packages: svgo: optional: true - vite@8.3.1: - resolution: {integrity: sha512-/bvH9E9tmCXRGp2uXY3WbOldqpTwFkbha/8ANaEQ6VkxhH60KyqLwgZq6lG2y+4uT55x9+9eUHMpQ7uGnOCKjA==} + vite@8.3.3: + resolution: {integrity: sha512-cTAldKPImjg6c+gk48U19POPn3GCBzZwpdsN8ZMEEcbpes+6/wvfqUd0C2y3qYY4wsj8PwgFwrZ/1jBPVttMSg==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -3676,20 +3891,20 @@ packages: yaml: optional: true - vitest@4.1.9: - resolution: {integrity: sha512-nE3/LEyc0z87uHYLZebqCUOaJr2hdtuPp7BQ4BosVFnfltxgAvMG08NyrSGlPpOUWvR27c5flSmYFTNr78L9GQ==} + vitest@4.1.11: + resolution: {integrity: sha512-fhACrNXUidIbGSBr5FlbuBkO7VWC1ZyLl0DO4CU2DrQoAPxX84Ysxs+HeGQpii5lZWV1Q4gBZTTu49mF+A6Edw==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@opentelemetry/api': ^1.9.0 '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.1.9 - '@vitest/browser-preview': 4.1.9 - '@vitest/browser-webdriverio': 4.1.9 - '@vitest/coverage-istanbul': 4.1.9 - '@vitest/coverage-v8': 4.1.9 - '@vitest/ui': 4.1.9 + '@vitest/browser-playwright': 4.1.11 + '@vitest/browser-preview': 4.1.11 + '@vitest/browser-webdriverio': 4.1.11 + '@vitest/coverage-istanbul': 4.1.11 + '@vitest/coverage-v8': 4.1.11 + '@vitest/ui': 4.1.11 happy-dom: '*' jsdom: '*' vite: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -3745,8 +3960,8 @@ packages: resolution: {integrity: sha512-OTIk8iR8/aCRWBqvxrzxR0hgxWpnYBblY1S5hDWBQfk/VFmJwzmJgQFN3WsoUKHISv2eAwe+PpbUzyL1CKTLXg==} engines: {node: ^20.17.0 || >=22.9.0} - ws@8.21.3: - resolution: {integrity: sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw==} + ws@8.22.0: + resolution: {integrity: sha512-Ydggc987+RO0AnWtZ/7Wq9FtNvcrL1b/RO0ud9mWjUPgDrsAAwQSF51sm2hm1XofbU/4jkpGEsLFsZZxU+1DOg==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -3810,7 +4025,7 @@ snapshots: '@babel/helper-compilation-targets': 7.29.7 '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) '@babel/helpers': 7.29.7 - '@babel/parser': 7.29.8 + '@babel/parser': 7.29.9 '@babel/template': 7.29.7 '@babel/traverse': 7.29.8 '@babel/types': 7.29.8 @@ -3825,7 +4040,7 @@ snapshots: '@babel/generator@7.29.8': dependencies: - '@babel/parser': 7.29.8 + '@babel/parser': 7.29.9 '@babel/types': 7.29.8 '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 @@ -3835,7 +4050,7 @@ snapshots: dependencies: '@babel/compat-data': 7.29.7 '@babel/helper-validator-option': 7.29.7 - browserslist: 4.28.9 + browserslist: 4.29.3 lru-cache: 5.1.1 semver: 6.3.1 @@ -3868,14 +4083,14 @@ snapshots: '@babel/template': 7.29.7 '@babel/types': 7.29.8 - '@babel/parser@7.29.8': + '@babel/parser@7.29.9': dependencies: '@babel/types': 7.29.8 '@babel/template@7.29.7': dependencies: '@babel/code-frame': 7.29.7 - '@babel/parser': 7.29.8 + '@babel/parser': 7.29.9 '@babel/types': 7.29.8 '@babel/traverse@7.29.8': @@ -3883,7 +4098,7 @@ snapshots: '@babel/code-frame': 7.29.7 '@babel/generator': 7.29.8 '@babel/helper-globals': 7.29.7 - '@babel/parser': 7.29.8 + '@babel/parser': 7.29.9 '@babel/template': 7.29.7 '@babel/types': 7.29.8 debug: 4.4.3 @@ -3930,6 +4145,61 @@ snapshots: '@biomejs/cli-win32-x64@2.5.14': optional: true + '@bytecodealliance/jco-node-fs-darwin-arm64@0.3.2': + optional: true + + '@bytecodealliance/jco-node-fs-darwin-x64@0.3.2': + optional: true + + '@bytecodealliance/jco-node-fs-linux-arm64-gnu@0.3.2': + optional: true + + '@bytecodealliance/jco-node-fs-linux-arm64-musl@0.3.2': + optional: true + + '@bytecodealliance/jco-node-fs-linux-x64-gnu@0.3.2': + optional: true + + '@bytecodealliance/jco-node-fs-linux-x64-musl@0.3.2': + optional: true + + '@bytecodealliance/jco-node-fs-win32-arm64-msvc@0.3.2': + optional: true + + '@bytecodealliance/jco-node-fs-win32-x64-msvc@0.3.2': + optional: true + + '@bytecodealliance/jco-node-fs@0.3.2': + optionalDependencies: + '@bytecodealliance/jco-node-fs-darwin-arm64': 0.3.2 + '@bytecodealliance/jco-node-fs-darwin-x64': 0.3.2 + '@bytecodealliance/jco-node-fs-linux-arm64-gnu': 0.3.2 + '@bytecodealliance/jco-node-fs-linux-arm64-musl': 0.3.2 + '@bytecodealliance/jco-node-fs-linux-x64-gnu': 0.3.2 + '@bytecodealliance/jco-node-fs-linux-x64-musl': 0.3.2 + '@bytecodealliance/jco-node-fs-win32-arm64-msvc': 0.3.2 + '@bytecodealliance/jco-node-fs-win32-x64-msvc': 0.3.2 + + '@bytecodealliance/jco-transpile@0.13.0': + dependencies: + '@bytecodealliance/preview2-shim': 0.24.1 + '@bytecodealliance/preview3-shim': 0.6.1 + binaryen: 130.0.0 + oxc-minify: 0.136.0 + + '@bytecodealliance/preview2-shim@0.24.1': + dependencies: + '@bytecodealliance/jco-node-fs': 0.3.2 + + '@bytecodealliance/preview2-shim@0.25.0': + dependencies: + '@bytecodealliance/jco-node-fs': 0.3.2 + + '@bytecodealliance/preview3-shim@0.6.1': + dependencies: + '@bytecodealliance/jco-node-fs': 0.3.2 + '@bytecodealliance/preview2-shim': 0.25.0 + '@cacheable/memory@2.2.0': dependencies: '@cacheable/utils': 2.5.0 @@ -3949,45 +4219,61 @@ snapshots: '@floating-ui/dom': 1.8.0 solid-js: 1.9.15 - '@csstools/css-calc@3.3.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': + '@csstools/css-calc@3.4.3(@csstools/css-parser-algorithms@4.0.2(@csstools/css-tokenizer@4.0.2))(@csstools/css-tokenizer@4.0.2)': dependencies: - '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) - '@csstools/css-tokenizer': 4.0.0 + '@csstools/css-parser-algorithms': 4.0.2(@csstools/css-tokenizer@4.0.2) + '@csstools/css-tokenizer': 4.0.2 - '@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0)': + '@csstools/css-parser-algorithms@4.0.2(@csstools/css-tokenizer@4.0.2)': dependencies: - '@csstools/css-tokenizer': 4.0.0 + '@csstools/css-tokenizer': 4.0.2 - '@csstools/css-syntax-patches-for-csstree@1.1.12(css-tree@3.2.1)': + '@csstools/css-syntax-patches-for-csstree@1.1.15(css-tree@3.2.1)': optionalDependencies: css-tree: 3.2.1 - '@csstools/css-tokenizer@4.0.0': {} + '@csstools/css-tokenizer@4.0.2': {} - '@csstools/media-query-list-parser@5.0.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': + '@csstools/media-query-list-parser@5.0.2(@csstools/css-parser-algorithms@4.0.2(@csstools/css-tokenizer@4.0.2))(@csstools/css-tokenizer@4.0.2)': dependencies: - '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) - '@csstools/css-tokenizer': 4.0.0 + '@csstools/css-parser-algorithms': 4.0.2(@csstools/css-tokenizer@4.0.2) + '@csstools/css-tokenizer': 4.0.2 - '@csstools/selector-resolve-nested@4.0.1(postcss-selector-parser@7.1.6)': + '@csstools/selector-resolve-nested@4.0.2(postcss-selector-parser@7.1.6)': dependencies: postcss-selector-parser: 7.1.6 - '@csstools/selector-specificity@6.0.0(postcss-selector-parser@7.1.6)': + '@csstools/selector-specificity@6.0.1(postcss-selector-parser@7.1.6)': dependencies: postcss-selector-parser: 7.1.6 + '@emnapi/core@1.11.1': + dependencies: + '@emnapi/wasi-threads': 1.2.2 + tslib: 2.8.1 + optional: true + '@emnapi/core@1.11.3': dependencies: '@emnapi/wasi-threads': 1.2.3 tslib: 2.8.1 optional: true + '@emnapi/runtime@1.11.1': + dependencies: + tslib: 2.8.1 + optional: true + '@emnapi/runtime@1.11.3': dependencies: tslib: 2.8.1 optional: true + '@emnapi/wasi-threads@1.2.2': + dependencies: + tslib: 2.8.1 + optional: true + '@emnapi/wasi-threads@1.2.3': dependencies: tslib: 2.8.1 @@ -4242,137 +4528,135 @@ snapshots: '@img/colour@1.1.0': {} - '@img/sharp-darwin-arm64@0.35.4': + '@img/sharp-darwin-arm64@0.35.5': optionalDependencies: - '@img/sharp-libvips-darwin-arm64': 1.3.3 + '@img/sharp-libvips-darwin-arm64': 1.3.4 optional: true - '@img/sharp-darwin-x64@0.35.4': + '@img/sharp-darwin-x64@0.35.5': optionalDependencies: - '@img/sharp-libvips-darwin-x64': 1.3.3 + '@img/sharp-libvips-darwin-x64': 1.3.4 optional: true - '@img/sharp-freebsd-wasm32@0.35.4': + '@img/sharp-freebsd-wasm32@0.35.5': dependencies: - '@img/sharp-wasm32': 0.35.4 + '@img/sharp-wasm32': 0.35.5 optional: true - '@img/sharp-libvips-darwin-arm64@1.3.3': + '@img/sharp-libvips-darwin-arm64@1.3.4': optional: true - '@img/sharp-libvips-darwin-x64@1.3.3': + '@img/sharp-libvips-darwin-x64@1.3.4': optional: true - '@img/sharp-libvips-linux-arm64@1.3.3': + '@img/sharp-libvips-linux-arm64@1.3.4': optional: true - '@img/sharp-libvips-linux-arm@1.3.3': + '@img/sharp-libvips-linux-arm@1.3.4': optional: true - '@img/sharp-libvips-linux-ppc64@1.3.3': + '@img/sharp-libvips-linux-ppc64@1.3.4': optional: true - '@img/sharp-libvips-linux-riscv64@1.3.3': + '@img/sharp-libvips-linux-riscv64@1.3.4': optional: true - '@img/sharp-libvips-linux-s390x@1.3.3': + '@img/sharp-libvips-linux-s390x@1.3.4': optional: true - '@img/sharp-libvips-linux-x64@1.3.3': + '@img/sharp-libvips-linux-x64@1.3.4': optional: true - '@img/sharp-libvips-linuxmusl-arm64@1.3.3': + '@img/sharp-libvips-linuxmusl-arm64@1.3.4': optional: true - '@img/sharp-libvips-linuxmusl-x64@1.3.3': + '@img/sharp-libvips-linuxmusl-x64@1.3.4': optional: true - '@img/sharp-linux-arm64@0.35.4': + '@img/sharp-linux-arm64@0.35.5': optionalDependencies: - '@img/sharp-libvips-linux-arm64': 1.3.3 + '@img/sharp-libvips-linux-arm64': 1.3.4 optional: true - '@img/sharp-linux-arm@0.35.4': + '@img/sharp-linux-arm@0.35.5': optionalDependencies: - '@img/sharp-libvips-linux-arm': 1.3.3 + '@img/sharp-libvips-linux-arm': 1.3.4 optional: true - '@img/sharp-linux-ppc64@0.35.4': + '@img/sharp-linux-ppc64@0.35.5': optionalDependencies: - '@img/sharp-libvips-linux-ppc64': 1.3.3 + '@img/sharp-libvips-linux-ppc64': 1.3.4 optional: true - '@img/sharp-linux-riscv64@0.35.4': + '@img/sharp-linux-riscv64@0.35.5': optionalDependencies: - '@img/sharp-libvips-linux-riscv64': 1.3.3 + '@img/sharp-libvips-linux-riscv64': 1.3.4 optional: true - '@img/sharp-linux-s390x@0.35.4': + '@img/sharp-linux-s390x@0.35.5': optionalDependencies: - '@img/sharp-libvips-linux-s390x': 1.3.3 + '@img/sharp-libvips-linux-s390x': 1.3.4 optional: true - '@img/sharp-linux-x64@0.35.4': + '@img/sharp-linux-x64@0.35.5': optionalDependencies: - '@img/sharp-libvips-linux-x64': 1.3.3 + '@img/sharp-libvips-linux-x64': 1.3.4 optional: true - '@img/sharp-linuxmusl-arm64@0.35.4': + '@img/sharp-linuxmusl-arm64@0.35.5': optionalDependencies: - '@img/sharp-libvips-linuxmusl-arm64': 1.3.3 + '@img/sharp-libvips-linuxmusl-arm64': 1.3.4 optional: true - '@img/sharp-linuxmusl-x64@0.35.4': + '@img/sharp-linuxmusl-x64@0.35.5': optionalDependencies: - '@img/sharp-libvips-linuxmusl-x64': 1.3.3 + '@img/sharp-libvips-linuxmusl-x64': 1.3.4 optional: true - '@img/sharp-wasm32@0.35.4': + '@img/sharp-wasm32@0.35.5': dependencies: '@emnapi/runtime': 1.11.3 optional: true - '@img/sharp-webcontainers-wasm32@0.35.4': + '@img/sharp-webcontainers-wasm32@0.35.5': dependencies: - '@img/sharp-wasm32': 0.35.4 + '@img/sharp-wasm32': 0.35.5 optional: true - '@img/sharp-win32-arm64@0.35.4': + '@img/sharp-win32-arm64@0.35.5': optional: true - '@img/sharp-win32-ia32@0.35.4': + '@img/sharp-win32-ia32@0.35.5': optional: true - '@img/sharp-win32-x64@0.35.4': + '@img/sharp-win32-x64@0.35.5': optional: true - '@inlang/paraglide-js@2.20.1(typescript@6.0.3)': + '@inlang/paraglide-js@2.25.4(typescript@6.0.3)(vite@8.3.3(@types/node@26.6.4)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.105.1)(tsx@4.21.0))': dependencies: '@inlang/recommend-sherlock': 0.2.1 - '@inlang/sdk': 2.10.2 + '@inlang/sdk': 3.0.6 commander: 11.1.0 consola: 3.4.0 + jiti: 2.7.0 json5: 2.2.3 unplugin: 2.3.11 urlpattern-polyfill: 10.1.0 + valibot: 1.5.0(typescript@6.0.3) optionalDependencies: typescript: 6.0.3 - transitivePeerDependencies: - - babel-plugin-macros + vite: 8.3.3(@types/node@26.6.4)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.105.1)(tsx@4.21.0) '@inlang/recommend-sherlock@0.2.1': dependencies: comment-json: 4.6.2 - '@inlang/sdk@2.10.2': + '@inlang/sdk@3.0.6': dependencies: - '@lix-js/sdk': 0.4.10 + '@lix-js/sdk': 0.17.0 '@sinclair/typebox': 0.31.30 kysely: 0.28.17 - sqlite-wasm-kysely: 0.3.0(kysely@0.28.17) uuid: 14.0.2 - transitivePeerDependencies: - - babel-plugin-macros '@internationalized/number@3.6.8': dependencies: @@ -4427,24 +4711,40 @@ snapshots: '@solid-primitives/utils': 6.4.1(solid-js@1.9.15) solid-js: 1.9.15 - '@lix-js/sdk@0.4.10': - dependencies: - '@lix-js/server-protocol-schema': 0.1.1 - dedent: 1.5.1 - human-id: 4.2.1 - js-sha256: 0.11.1 - kysely: 0.28.17 - sqlite-wasm-kysely: 0.3.0(kysely@0.28.17) - uuid: 14.0.2 - transitivePeerDependencies: - - babel-plugin-macros + '@lix-js/sdk-darwin-arm64@0.17.0': + optional: true - '@lix-js/server-protocol-schema@0.1.1': {} + '@lix-js/sdk-linux-arm64@0.17.0': + optional: true + + '@lix-js/sdk-linux-x64@0.17.0': + optional: true + + '@lix-js/sdk-win32-x64@0.17.0': + optional: true + + '@lix-js/sdk@0.17.0': + dependencies: + '@bytecodealliance/jco-transpile': 0.13.0 + binaryen: 130.0.0 + fflate: 0.8.3 + optionalDependencies: + '@lix-js/sdk-darwin-arm64': 0.17.0 + '@lix-js/sdk-linux-arm64': 0.17.0 + '@lix-js/sdk-linux-x64': 0.17.0 + '@lix-js/sdk-win32-x64': 0.17.0 '@napi-rs/lzma-linux-x64-gnu@1.5.1': optional: true - '@napi-rs/wasm-runtime@1.2.4(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)': + '@napi-rs/wasm-runtime@1.2.5(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)': + dependencies: + '@emnapi/core': 1.11.1 + '@emnapi/runtime': 1.11.1 + '@tybys/wasm-util': 0.10.4 + optional: true + + '@napi-rs/wasm-runtime@1.2.5(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)': dependencies: '@emnapi/core': 1.11.3 '@emnapi/runtime': 1.11.3 @@ -4470,6 +4770,70 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.20.3 + '@oxc-minify/binding-android-arm-eabi@0.136.0': + optional: true + + '@oxc-minify/binding-android-arm64@0.136.0': + optional: true + + '@oxc-minify/binding-darwin-arm64@0.136.0': + optional: true + + '@oxc-minify/binding-darwin-x64@0.136.0': + optional: true + + '@oxc-minify/binding-freebsd-x64@0.136.0': + optional: true + + '@oxc-minify/binding-linux-arm-gnueabihf@0.136.0': + optional: true + + '@oxc-minify/binding-linux-arm-musleabihf@0.136.0': + optional: true + + '@oxc-minify/binding-linux-arm64-gnu@0.136.0': + optional: true + + '@oxc-minify/binding-linux-arm64-musl@0.136.0': + optional: true + + '@oxc-minify/binding-linux-ppc64-gnu@0.136.0': + optional: true + + '@oxc-minify/binding-linux-riscv64-gnu@0.136.0': + optional: true + + '@oxc-minify/binding-linux-riscv64-musl@0.136.0': + optional: true + + '@oxc-minify/binding-linux-s390x-gnu@0.136.0': + optional: true + + '@oxc-minify/binding-linux-x64-gnu@0.136.0': + optional: true + + '@oxc-minify/binding-linux-x64-musl@0.136.0': + optional: true + + '@oxc-minify/binding-openharmony-arm64@0.136.0': + optional: true + + '@oxc-minify/binding-wasm32-wasi@0.136.0': + dependencies: + '@emnapi/core': 1.11.1 + '@emnapi/runtime': 1.11.1 + '@napi-rs/wasm-runtime': 1.2.5(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) + optional: true + + '@oxc-minify/binding-win32-arm64-msvc@0.136.0': + optional: true + + '@oxc-minify/binding-win32-ia32-msvc@0.136.0': + optional: true + + '@oxc-minify/binding-win32-x64-msvc@0.136.0': + optional: true + '@oxc-parser/binding-android-arm-eabi@0.120.0': optional: true @@ -4520,7 +4884,7 @@ snapshots: '@oxc-parser/binding-wasm32-wasi@0.120.0(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)': dependencies: - '@napi-rs/wasm-runtime': 1.2.4(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3) + '@napi-rs/wasm-runtime': 1.2.5(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3) transitivePeerDependencies: - '@emnapi/core' - '@emnapi/runtime' @@ -4537,7 +4901,7 @@ snapshots: '@oxc-project/types@0.120.0': {} - '@oxc-project/types@0.151.0': {} + '@oxc-project/types@0.152.0': {} '@parcel/watcher-android-arm64@2.6.0': optional: true @@ -4610,49 +4974,49 @@ snapshots: '@react-hook/passive-layout-effect': 1.2.1(react@19.3.0) react: 19.3.0 - '@rolldown/binding-android-arm-eabi@1.2.11': + '@rolldown/binding-android-arm-eabi@1.2.12': optional: true - '@rolldown/binding-android-arm64@1.2.11': + '@rolldown/binding-android-arm64@1.2.12': optional: true - '@rolldown/binding-darwin-arm64@1.2.11': + '@rolldown/binding-darwin-arm64@1.2.12': optional: true - '@rolldown/binding-darwin-x64@1.2.11': + '@rolldown/binding-darwin-x64@1.2.12': optional: true - '@rolldown/binding-freebsd-x64@1.2.11': + '@rolldown/binding-freebsd-x64@1.2.12': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.2.11': + '@rolldown/binding-linux-arm-gnueabihf@1.2.12': optional: true - '@rolldown/binding-linux-arm64-gnu@1.2.11': + '@rolldown/binding-linux-arm64-gnu@1.2.12': optional: true - '@rolldown/binding-linux-arm64-musl@1.2.11': + '@rolldown/binding-linux-arm64-musl@1.2.12': optional: true - '@rolldown/binding-linux-ppc64-gnu@1.2.11': + '@rolldown/binding-linux-ppc64-gnu@1.2.12': optional: true - '@rolldown/binding-linux-s390x-gnu@1.2.11': + '@rolldown/binding-linux-s390x-gnu@1.2.12': optional: true - '@rolldown/binding-linux-x64-gnu@1.2.11': + '@rolldown/binding-linux-x64-gnu@1.2.12': optional: true - '@rolldown/binding-linux-x64-musl@1.2.11': + '@rolldown/binding-linux-x64-musl@1.2.12': optional: true - '@rolldown/binding-openharmony-arm64@1.2.11': + '@rolldown/binding-openharmony-arm64@1.2.12': optional: true - '@rolldown/binding-win32-arm64-msvc@1.2.11': + '@rolldown/binding-win32-arm64-msvc@1.2.12': optional: true - '@rolldown/binding-win32-x64-msvc@1.2.11': + '@rolldown/binding-win32-x64-msvc@1.2.12': optional: true '@rolldown/pluginutils@1.0.1': {} @@ -4811,63 +5175,61 @@ snapshots: dependencies: solid-js: 1.9.15 - '@sqlite.org/sqlite-wasm@3.48.0-build4': {} - '@standard-schema/spec@1.1.0': {} - '@swc/core-darwin-arm64@1.16.2': + '@swc/core-darwin-arm64@1.16.13': optional: true - '@swc/core-darwin-x64@1.16.2': + '@swc/core-darwin-x64@1.16.13': optional: true - '@swc/core-linux-arm-gnueabihf@1.16.2': + '@swc/core-linux-arm-gnueabihf@1.16.13': optional: true - '@swc/core-linux-arm64-gnu@1.16.2': + '@swc/core-linux-arm64-gnu@1.16.13': optional: true - '@swc/core-linux-arm64-musl@1.16.2': + '@swc/core-linux-arm64-musl@1.16.13': optional: true - '@swc/core-linux-ppc64-gnu@1.16.2': + '@swc/core-linux-ppc64-gnu@1.16.13': optional: true - '@swc/core-linux-s390x-gnu@1.16.2': + '@swc/core-linux-s390x-gnu@1.16.13': optional: true - '@swc/core-linux-x64-gnu@1.16.2': + '@swc/core-linux-x64-gnu@1.16.13': optional: true - '@swc/core-linux-x64-musl@1.16.2': + '@swc/core-linux-x64-musl@1.16.13': optional: true - '@swc/core-win32-arm64-msvc@1.16.2': + '@swc/core-win32-arm64-msvc@1.16.13': optional: true - '@swc/core-win32-ia32-msvc@1.16.2': + '@swc/core-win32-ia32-msvc@1.16.13': optional: true - '@swc/core-win32-x64-msvc@1.16.2': + '@swc/core-win32-x64-msvc@1.16.13': optional: true - '@swc/core@1.16.2(@swc/helpers@0.5.23)': + '@swc/core@1.16.13(@swc/helpers@0.5.23)': dependencies: '@swc/counter': 0.1.3 '@swc/types': 0.1.28 optionalDependencies: - '@swc/core-darwin-arm64': 1.16.2 - '@swc/core-darwin-x64': 1.16.2 - '@swc/core-linux-arm-gnueabihf': 1.16.2 - '@swc/core-linux-arm64-gnu': 1.16.2 - '@swc/core-linux-arm64-musl': 1.16.2 - '@swc/core-linux-ppc64-gnu': 1.16.2 - '@swc/core-linux-s390x-gnu': 1.16.2 - '@swc/core-linux-x64-gnu': 1.16.2 - '@swc/core-linux-x64-musl': 1.16.2 - '@swc/core-win32-arm64-msvc': 1.16.2 - '@swc/core-win32-ia32-msvc': 1.16.2 - '@swc/core-win32-x64-msvc': 1.16.2 + '@swc/core-darwin-arm64': 1.16.13 + '@swc/core-darwin-x64': 1.16.13 + '@swc/core-linux-arm-gnueabihf': 1.16.13 + '@swc/core-linux-arm64-gnu': 1.16.13 + '@swc/core-linux-arm64-musl': 1.16.13 + '@swc/core-linux-ppc64-gnu': 1.16.13 + '@swc/core-linux-s390x-gnu': 1.16.13 + '@swc/core-linux-x64-gnu': 1.16.13 + '@swc/core-linux-x64-musl': 1.16.13 + '@swc/core-win32-arm64-msvc': 1.16.13 + '@swc/core-win32-ia32-msvc': 1.16.13 + '@swc/core-win32-x64-msvc': 1.16.13 '@swc/helpers': 0.5.23 '@swc/counter@0.1.3': {} @@ -4885,7 +5247,7 @@ snapshots: '@tanstack/devtools-client': 0.0.8 '@tanstack/devtools-event-bus': 0.4.3 chalk: 5.6.2 - launch-editor: 2.14.1 + launch-editor: 2.14.2 magic-string: 0.30.21 oxc-parser: 0.120.0(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3) picomatch: 4.0.7 @@ -4901,7 +5263,7 @@ snapshots: '@tanstack/devtools-event-bus@0.4.3': dependencies: - ws: 8.21.3 + ws: 8.22.0 transitivePeerDependencies: - bufferutil - utf-8-validate @@ -4919,13 +5281,13 @@ snapshots: transitivePeerDependencies: - csstype - '@tanstack/devtools-vite@0.8.5(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)(vite@8.3.1(@types/node@26.6.3)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.105.1)(tsx@4.21.0))': + '@tanstack/devtools-vite@0.8.5(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)(vite@8.3.3(@types/node@26.6.4)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.105.1)(tsx@4.21.0))': dependencies: '@tanstack/devtools-bundler-core': 0.1.3(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3) '@tanstack/devtools-client': 0.0.8 '@tanstack/devtools-event-bus': 0.4.3 chalk: 5.6.2 - vite: 8.3.1(@types/node@26.6.3)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.105.1)(tsx@4.21.0) + vite: 8.3.3(@types/node@26.6.4)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.105.1)(tsx@4.21.0) transitivePeerDependencies: - '@emnapi/core' - '@emnapi/runtime' @@ -4954,26 +5316,26 @@ snapshots: dependencies: '@tanstack/devtools-event-client': 0.4.4 '@tanstack/pacer-lite': 0.1.1 - '@tanstack/store': 0.11.1 + '@tanstack/store': 0.11.2 '@tanstack/history@1.162.4': {} - '@tanstack/match-sorter-utils@9.1.2': + '@tanstack/match-sorter-utils@9.2.6': dependencies: remove-accents: 0.5.0 '@tanstack/pacer-lite@0.1.1': {} - '@tanstack/query-core@5.104.0': {} + '@tanstack/query-core@5.104.1': {} - '@tanstack/query-devtools@5.104.0(csstype@3.2.3)': + '@tanstack/query-devtools@5.104.1(csstype@3.2.3)': dependencies: '@kobalte/core': 0.13.14(solid-js@1.9.15) '@solid-primitives/keyed': 1.5.3(solid-js@1.9.15) '@solid-primitives/resize-observer': 2.2.0(solid-js@1.9.15) '@solid-primitives/storage': 1.3.11(solid-js@1.9.15) - '@tanstack/match-sorter-utils': 9.1.2 - '@tanstack/query-core': 5.104.0 + '@tanstack/match-sorter-utils': 9.2.6 + '@tanstack/query-core': 5.104.1 clsx: 2.1.1 goober: 2.1.19(csstype@3.2.3) solid-js: 1.9.15 @@ -4998,51 +5360,51 @@ snapshots: '@tanstack/react-form@1.33.5(react-dom@19.3.0(react@19.3.0))(react@19.3.0)': dependencies: '@tanstack/form-core': 1.33.5 - '@tanstack/react-store': 0.11.1(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + '@tanstack/react-store': 0.11.2(react-dom@19.3.0(react@19.3.0))(react@19.3.0) react: 19.3.0 transitivePeerDependencies: - react-dom - '@tanstack/react-query-devtools@5.104.0(@tanstack/react-query@5.104.0(react@19.3.0))(@types/react@19.3.0)(csstype@3.2.3)(react@19.3.0)': + '@tanstack/react-query-devtools@5.104.1(@tanstack/react-query@5.104.1(react@19.3.0))(@types/react@19.3.0)(csstype@3.2.3)(react@19.3.0)': dependencies: - '@tanstack/query-devtools': 5.104.0(csstype@3.2.3) - '@tanstack/react-query': 5.104.0(react@19.3.0) + '@tanstack/query-devtools': 5.104.1(csstype@3.2.3) + '@tanstack/react-query': 5.104.1(react@19.3.0) '@types/react': 19.3.0 react: 19.3.0 transitivePeerDependencies: - csstype - '@tanstack/react-query@5.104.0(react@19.3.0)': + '@tanstack/react-query@5.104.1(react@19.3.0)': dependencies: - '@tanstack/query-core': 5.104.0 + '@tanstack/query-core': 5.104.1 react: 19.3.0 - '@tanstack/react-router-devtools@1.167.2(@tanstack/react-router@1.170.39(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(@tanstack/router-core@1.171.33)(csstype@3.2.3)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)': + '@tanstack/react-router-devtools@1.167.2(@tanstack/react-router@1.170.41(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(@tanstack/router-core@1.171.34)(csstype@3.2.3)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)': dependencies: - '@tanstack/react-router': 1.170.39(react-dom@19.3.0(react@19.3.0))(react@19.3.0) - '@tanstack/router-devtools-core': 1.168.2(@tanstack/router-core@1.171.33)(csstype@3.2.3) + '@tanstack/react-router': 1.170.41(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + '@tanstack/router-devtools-core': 1.168.2(@tanstack/router-core@1.171.34)(csstype@3.2.3) react: 19.3.0 react-dom: 19.3.0(react@19.3.0) optionalDependencies: - '@tanstack/router-core': 1.171.33 + '@tanstack/router-core': 1.171.34 transitivePeerDependencies: - csstype - '@tanstack/react-router@1.170.39(react-dom@19.3.0(react@19.3.0))(react@19.3.0)': + '@tanstack/react-router@1.170.41(react-dom@19.3.0(react@19.3.0))(react@19.3.0)': dependencies: '@tanstack/history': 1.162.4 - '@tanstack/react-store': 0.11.1(react-dom@19.3.0(react@19.3.0))(react@19.3.0) - '@tanstack/router-core': 1.171.32 + '@tanstack/react-store': 0.11.2(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + '@tanstack/router-core': 1.171.34 isbot: 5.2.2 react: 19.3.0 react-dom: 19.3.0(react@19.3.0) - '@tanstack/react-store@0.11.1(react-dom@19.3.0(react@19.3.0))(react@19.3.0)': + '@tanstack/react-store@0.11.2(react-dom@19.3.0(react@19.3.0))(react@19.3.0)': dependencies: - '@tanstack/store': 0.11.1 + '@tanstack/store': 0.11.2 react: 19.3.0 react-dom: 19.3.0(react@19.3.0) - use-sync-external-store: 1.6.0(react@19.3.0) + use-sync-external-store: 1.7.0(react@19.3.0) '@tanstack/react-table@8.21.3(react-dom@19.3.0(react@19.3.0))(react@19.3.0)': dependencies: @@ -5056,55 +5418,48 @@ snapshots: react: 19.3.0 react-dom: 19.3.0(react@19.3.0) - '@tanstack/router-core@1.171.32': - dependencies: - '@tanstack/history': 1.162.4 - cookie-es: 3.1.1 - seroval: 1.5.4 - seroval-plugins: 1.6.8(seroval@1.5.4) - - '@tanstack/router-core@1.171.33': + '@tanstack/router-core@1.171.34': dependencies: '@tanstack/history': 1.162.4 cookie-es: 3.1.1 seroval: 1.5.4 seroval-plugins: 1.6.8(seroval@1.5.4) - '@tanstack/router-devtools-core@1.168.2(@tanstack/router-core@1.171.33)(csstype@3.2.3)': + '@tanstack/router-devtools-core@1.168.2(@tanstack/router-core@1.171.34)(csstype@3.2.3)': dependencies: - '@tanstack/router-core': 1.171.33 + '@tanstack/router-core': 1.171.34 clsx: 2.1.1 goober: 2.1.19(csstype@3.2.3) optionalDependencies: csstype: 3.2.3 - '@tanstack/router-generator@1.167.39': + '@tanstack/router-generator@1.167.40': dependencies: '@babel/types': 7.29.8 - '@tanstack/router-core': 1.171.33 + '@tanstack/router-core': 1.171.34 '@tanstack/router-utils': 1.162.3 '@tanstack/virtual-file-routes': 1.162.0 jiti: 2.7.0 magic-string: 0.30.21 - prettier: 3.9.6 + prettier: 3.9.9 zod: 4.6.5 transitivePeerDependencies: - supports-color - '@tanstack/router-plugin@1.168.41(@tanstack/react-router@1.170.39(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(esbuild@0.28.2)(rolldown@1.2.11)(rollup@4.63.1)(vite@8.3.1(@types/node@26.6.3)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.105.1)(tsx@4.21.0))': + '@tanstack/router-plugin@1.168.42(@tanstack/react-router@1.170.41(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(esbuild@0.28.2)(rolldown@1.2.12)(rollup@4.63.1)(vite@8.3.3(@types/node@26.6.4)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.105.1)(tsx@4.21.0))': dependencies: '@babel/core': 7.29.7 '@babel/template': 7.29.7 '@babel/types': 7.29.8 - '@tanstack/router-core': 1.171.33 - '@tanstack/router-generator': 1.167.39 + '@tanstack/router-core': 1.171.34 + '@tanstack/router-generator': 1.167.40 '@tanstack/router-utils': 1.162.3 chokidar: 5.0.0 - unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.11)(rollup@4.63.1)(vite@8.3.1(@types/node@26.6.3)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.105.1)(tsx@4.21.0)) + unplugin: 3.4.0(esbuild@0.28.2)(rolldown@1.2.12)(rollup@4.63.1)(vite@8.3.3(@types/node@26.6.4)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.105.1)(tsx@4.21.0)) zod: 4.6.5 optionalDependencies: - '@tanstack/react-router': 1.170.39(react-dom@19.3.0(react@19.3.0))(react@19.3.0) - vite: 8.3.1(@types/node@26.6.3)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.105.1)(tsx@4.21.0) + '@tanstack/react-router': 1.170.41(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + vite: 8.3.3(@types/node@26.6.4)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.105.1)(tsx@4.21.0) transitivePeerDependencies: - '@farmfe/core' - '@rspack/core' @@ -5118,9 +5473,9 @@ snapshots: '@tanstack/router-utils@1.162.3': dependencies: '@babel/generator': 7.29.8 - '@babel/parser': 7.29.8 + '@babel/parser': 7.29.9 '@babel/types': 7.29.8 - ansis: 4.3.1 + ansis: 4.4.0 babel-dead-code-elimination: 1.0.12 diff: 8.0.4 pathe: 2.0.3 @@ -5128,7 +5483,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@tanstack/store@0.11.1': {} + '@tanstack/store@0.11.2': {} '@tanstack/table-core@8.21.3': {} @@ -5176,7 +5531,7 @@ snapshots: '@types/ms@2.1.0': {} - '@types/node@26.6.3': + '@types/node@26.6.4': dependencies: undici-types: 8.9.0 @@ -5194,57 +5549,57 @@ snapshots: '@types/unist@3.0.3': {} - '@typescript-eslint/eslint-plugin@8.69.0(@typescript-eslint/parser@8.69.0(eslint@9.38.0(jiti@2.7.0))(typescript@6.0.3))(eslint@9.38.0(jiti@2.7.0))(typescript@6.0.3)': + '@typescript-eslint/eslint-plugin@8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.38.0(jiti@2.7.0))(typescript@6.0.3))(eslint@9.38.0(jiti@2.7.0))(typescript@6.0.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.69.0(eslint@9.38.0(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/scope-manager': 8.69.0 - '@typescript-eslint/type-utils': 8.69.0(eslint@9.38.0(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/utils': 8.69.0(eslint@9.38.0(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.69.0 + '@typescript-eslint/parser': 8.71.1(eslint@9.38.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/scope-manager': 8.71.1 + '@typescript-eslint/type-utils': 8.71.1(eslint@9.38.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/utils': 8.71.1(eslint@9.38.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.71.1 eslint: 9.38.0(jiti@2.7.0) - ignore: 7.0.8 + ignore: 7.0.12 natural-compare: 1.4.0 ts-api-utils: 2.5.0(typescript@6.0.3) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.69.0(eslint@9.38.0(jiti@2.7.0))(typescript@6.0.3)': + '@typescript-eslint/parser@8.71.1(eslint@9.38.0(jiti@2.7.0))(typescript@6.0.3)': dependencies: - '@typescript-eslint/scope-manager': 8.69.0 - '@typescript-eslint/types': 8.69.0 - '@typescript-eslint/typescript-estree': 8.69.0(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.69.0 + '@typescript-eslint/scope-manager': 8.71.1 + '@typescript-eslint/types': 8.71.1 + '@typescript-eslint/typescript-estree': 8.71.1(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.71.1 debug: 4.4.3 eslint: 9.38.0(jiti@2.7.0) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.69.0(typescript@6.0.3)': + '@typescript-eslint/project-service@8.71.1(typescript@6.0.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.69.0(typescript@6.0.3) - '@typescript-eslint/types': 8.69.0 + '@typescript-eslint/tsconfig-utils': 8.71.1(typescript@6.0.3) + '@typescript-eslint/types': 8.71.1 debug: 4.4.3 typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.69.0': + '@typescript-eslint/scope-manager@8.71.1': dependencies: - '@typescript-eslint/types': 8.69.0 - '@typescript-eslint/visitor-keys': 8.69.0 + '@typescript-eslint/types': 8.71.1 + '@typescript-eslint/visitor-keys': 8.71.1 - '@typescript-eslint/tsconfig-utils@8.69.0(typescript@6.0.3)': + '@typescript-eslint/tsconfig-utils@8.71.1(typescript@6.0.3)': dependencies: typescript: 6.0.3 - '@typescript-eslint/type-utils@8.69.0(eslint@9.38.0(jiti@2.7.0))(typescript@6.0.3)': + '@typescript-eslint/type-utils@8.71.1(eslint@9.38.0(jiti@2.7.0))(typescript@6.0.3)': dependencies: - '@typescript-eslint/types': 8.69.0 - '@typescript-eslint/typescript-estree': 8.69.0(typescript@6.0.3) - '@typescript-eslint/utils': 8.69.0(eslint@9.38.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/types': 8.71.1 + '@typescript-eslint/typescript-estree': 8.71.1(typescript@6.0.3) + '@typescript-eslint/utils': 8.71.1(eslint@9.38.0(jiti@2.7.0))(typescript@6.0.3) debug: 4.4.3 eslint: 9.38.0(jiti@2.7.0) ts-api-utils: 2.5.0(typescript@6.0.3) @@ -5252,14 +5607,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.69.0': {} + '@typescript-eslint/types@8.71.1': {} - '@typescript-eslint/typescript-estree@8.69.0(typescript@6.0.3)': + '@typescript-eslint/typescript-estree@8.71.1(typescript@6.0.3)': dependencies: - '@typescript-eslint/project-service': 8.69.0(typescript@6.0.3) - '@typescript-eslint/tsconfig-utils': 8.69.0(typescript@6.0.3) - '@typescript-eslint/types': 8.69.0 - '@typescript-eslint/visitor-keys': 8.69.0 + '@typescript-eslint/project-service': 8.71.1(typescript@6.0.3) + '@typescript-eslint/tsconfig-utils': 8.71.1(typescript@6.0.3) + '@typescript-eslint/types': 8.71.1 + '@typescript-eslint/visitor-keys': 8.71.1 debug: 4.4.3 minimatch: 10.2.6 semver: 7.8.5 @@ -5269,20 +5624,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.69.0(eslint@9.38.0(jiti@2.7.0))(typescript@6.0.3)': + '@typescript-eslint/utils@8.71.1(eslint@9.38.0(jiti@2.7.0))(typescript@6.0.3)': dependencies: '@eslint-community/eslint-utils': 4.10.1(eslint@9.38.0(jiti@2.7.0)) - '@typescript-eslint/scope-manager': 8.69.0 - '@typescript-eslint/types': 8.69.0 - '@typescript-eslint/typescript-estree': 8.69.0(typescript@6.0.3) + '@typescript-eslint/scope-manager': 8.71.1 + '@typescript-eslint/types': 8.71.1 + '@typescript-eslint/typescript-estree': 8.71.1(typescript@6.0.3) eslint: 9.38.0(jiti@2.7.0) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.69.0': + '@typescript-eslint/visitor-keys@8.71.1': dependencies: - '@typescript-eslint/types': 8.69.0 + '@typescript-eslint/types': 8.71.1 eslint-visitor-keys: 5.0.1 '@uidotdev/usehooks@2.4.1(react-dom@19.3.0(react@19.3.0))(react@19.3.0)': @@ -5292,60 +5647,60 @@ snapshots: '@ungap/structured-clone@1.4.0': {} - '@vitejs/plugin-react-swc@4.3.3(@swc/helpers@0.5.23)(vite@8.3.1(@types/node@26.6.3)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.105.1)(tsx@4.21.0))': + '@vitejs/plugin-react-swc@4.3.3(@swc/helpers@0.5.23)(vite@8.3.3(@types/node@26.6.4)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.105.1)(tsx@4.21.0))': dependencies: '@rolldown/pluginutils': 1.0.1 - '@swc/core': 1.16.2(@swc/helpers@0.5.23) - vite: 8.3.1(@types/node@26.6.3)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.105.1)(tsx@4.21.0) + '@swc/core': 1.16.13(@swc/helpers@0.5.23) + vite: 8.3.3(@types/node@26.6.4)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.105.1)(tsx@4.21.0) transitivePeerDependencies: - '@swc/helpers' - '@vitest/expect@4.1.9': + '@vitest/expect@4.1.11': dependencies: '@standard-schema/spec': 1.1.0 '@types/chai': 5.2.3 - '@vitest/spy': 4.1.9 - '@vitest/utils': 4.1.9 - chai: 6.2.2 + '@vitest/spy': 4.1.11 + '@vitest/utils': 4.1.11 + chai: 6.3.0 tinyrainbow: 3.2.0 - '@vitest/mocker@4.1.9(vite@8.3.1(@types/node@26.6.3)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.105.1)(tsx@4.21.0))': + '@vitest/mocker@4.1.11(vite@8.3.3(@types/node@26.6.4)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.105.1)(tsx@4.21.0))': dependencies: - '@vitest/spy': 4.1.9 + '@vitest/spy': 4.1.11 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 8.3.1(@types/node@26.6.3)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.105.1)(tsx@4.21.0) + vite: 8.3.3(@types/node@26.6.4)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.105.1)(tsx@4.21.0) - '@vitest/pretty-format@4.1.9': + '@vitest/pretty-format@4.1.11': dependencies: tinyrainbow: 3.2.0 - '@vitest/runner@4.1.9': + '@vitest/runner@4.1.11': dependencies: - '@vitest/utils': 4.1.9 + '@vitest/utils': 4.1.11 pathe: 2.0.3 - '@vitest/snapshot@4.1.9': + '@vitest/snapshot@4.1.11': dependencies: - '@vitest/pretty-format': 4.1.9 - '@vitest/utils': 4.1.9 + '@vitest/pretty-format': 4.1.11 + '@vitest/utils': 4.1.11 magic-string: 0.30.21 pathe: 2.0.3 - '@vitest/spy@4.1.9': {} + '@vitest/spy@4.1.11': {} - '@vitest/utils@4.1.9': + '@vitest/utils@4.1.11': dependencies: - '@vitest/pretty-format': 4.1.9 + '@vitest/pretty-format': 4.1.11 convert-source-map: 2.0.0 tinyrainbow: 3.2.0 - acorn-jsx@5.3.2(acorn@8.18.0): + acorn-jsx@5.3.2(acorn@8.19.0): dependencies: - acorn: 8.18.0 + acorn: 8.19.0 - acorn@8.18.0: {} + acorn@8.19.0: {} agent-base@6.0.2: dependencies: @@ -5363,7 +5718,7 @@ snapshots: ajv@8.20.0: dependencies: fast-deep-equal: 3.1.3 - fast-uri: 3.1.7 + fast-uri: 3.1.8 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 @@ -5371,13 +5726,13 @@ snapshots: ansi-regex@5.0.1: {} - ansi-regex@6.3.0: {} + ansi-regex@6.4.0: {} ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 - ansis@4.3.1: {} + ansis@4.4.0: {} argparse@2.0.1: {} @@ -5391,7 +5746,7 @@ snapshots: axios@1.20.0: dependencies: - follow-redirects: 1.16.0 + follow-redirects: 1.16.1 form-data: 4.0.6 https-proxy-agent: 5.0.1 proxy-from-env: 2.1.0 @@ -5402,7 +5757,7 @@ snapshots: babel-dead-code-elimination@1.0.12: dependencies: '@babel/core': 7.29.7 - '@babel/parser': 7.29.8 + '@babel/parser': 7.29.9 '@babel/traverse': 7.29.8 '@babel/types': 7.29.8 transitivePeerDependencies: @@ -5414,14 +5769,16 @@ snapshots: balanced-match@4.0.4: {} - baseline-browser-mapping@2.11.21: {} + baseline-browser-mapping@2.11.27: {} - brace-expansion@1.1.18: + binaryen@130.0.0: {} + + brace-expansion@1.1.21: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - brace-expansion@5.0.9: + brace-expansion@5.0.12: dependencies: balanced-match: 4.0.4 @@ -5429,13 +5786,13 @@ snapshots: dependencies: fill-range: 7.1.1 - browserslist@4.28.9: + browserslist@4.29.3: dependencies: - baseline-browser-mapping: 2.11.21 - caniuse-lite: 1.0.30001810 - electron-to-chromium: 1.5.422 - node-releases: 2.0.54 - update-browserslist-db: 1.3.2(browserslist@4.28.9) + baseline-browser-mapping: 2.11.27 + caniuse-lite: 1.0.30001814 + electron-to-chromium: 1.5.445 + node-releases: 2.0.57 + update-browserslist-db: 1.3.3(browserslist@4.29.3) cacheable@2.5.0: dependencies: @@ -5457,11 +5814,11 @@ snapshots: callsites@3.1.0: {} - caniuse-lite@1.0.30001810: {} + caniuse-lite@1.0.30001814: {} ccount@2.0.1: {} - chai@6.2.2: {} + chai@6.3.0: {} chalk@4.1.2: dependencies: @@ -5515,7 +5872,7 @@ snapshots: cookie-es@3.1.1: {} - copy-anything@4.1.4: {} + copy-anything@4.1.5: {} cosmiconfig@9.0.2(typescript@6.0.3): dependencies: @@ -5537,7 +5894,7 @@ snapshots: css-tree@3.2.1: dependencies: mdn-data: 2.27.1 - source-map-js: 1.2.1 + source-map-js: 1.2.2 cssesc@3.0.0: {} @@ -5553,8 +5910,6 @@ snapshots: dependencies: character-entities: 2.0.2 - dedent@1.5.1: {} - deep-is@0.1.4: {} delayed-stream@1.0.0: {} @@ -5575,7 +5930,7 @@ snapshots: es-errors: 1.3.0 gopd: 1.2.0 - electron-to-chromium@1.5.422: {} + electron-to-chromium@1.5.445: {} emoji-regex@8.0.0: {} @@ -5722,8 +6077,8 @@ snapshots: espree@10.4.0: dependencies: - acorn: 8.18.0 - acorn-jsx: 5.3.2(acorn@8.18.0) + acorn: 8.19.0 + acorn-jsx: 5.3.2(acorn@8.19.0) eslint-visitor-keys: 4.2.1 esprima@4.0.1: {} @@ -5764,7 +6119,7 @@ snapshots: fast-levenshtein@2.0.6: {} - fast-uri@3.1.7: {} + fast-uri@3.1.8: {} fastest-levenshtein@1.0.16: {} @@ -5776,6 +6131,8 @@ snapshots: optionalDependencies: picomatch: 4.0.7 + fflate@0.8.3: {} + file-entry-cache@11.1.5: dependencies: flat-cache: 6.1.23 @@ -5806,7 +6163,7 @@ snapshots: flatted@3.4.4: {} - follow-redirects@1.16.0: {} + follow-redirects@1.16.1: {} form-data@4.0.6: dependencies: @@ -5832,7 +6189,7 @@ snapshots: gensync@1.0.0-beta.2: {} - get-east-asian-width@1.6.0: {} + get-east-asian-width@1.7.0: {} get-intrinsic@1.3.0: dependencies: @@ -5877,17 +6234,17 @@ snapshots: globals@14.0.0: {} - globals@17.12.0: {} + globals@17.13.0: {} globby@16.2.4: dependencies: '@sindresorhus/merge-streams': 4.0.0 fast-glob: 3.3.3 - ignore: 7.0.8 + ignore: 7.0.12 is-path-inside: 4.0.0 micromatch: 4.0.8 slash: 5.1.0 - unicorn-magic: 0.4.0 + unicorn-magic: 0.4.1 globjoin@0.1.4: {} @@ -6011,11 +6368,9 @@ snapshots: transitivePeerDependencies: - supports-color - human-id@4.2.1: {} - ignore@5.3.2: {} - ignore@7.0.8: {} + ignore@7.0.12: {} immutable@5.1.9: {} @@ -6067,8 +6422,6 @@ snapshots: jiti@2.7.0: {} - js-sha256@0.11.1: {} - js-tokens@4.0.0: {} js-yaml@4.3.2: @@ -6103,10 +6456,10 @@ snapshots: kysely@0.28.17: {} - launch-editor@2.14.1: + launch-editor@2.14.2: dependencies: picocolors: 1.1.1 - shell-quote: 1.10.0 + shell-quote: 1.12.0 levn@0.4.1: dependencies: @@ -6188,19 +6541,19 @@ snapshots: mathml-tag-names@4.0.0: {} - mdast-util-from-markdown@2.0.3: + mdast-util-from-markdown@2.1.0: dependencies: '@types/mdast': 4.0.4 '@types/unist': 3.0.3 decode-named-character-reference: 1.3.0 devlop: 1.1.0 mdast-util-to-string: 4.0.0 - micromark: 4.0.2 + micromark: 4.0.3 micromark-util-decode-numeric-character-reference: 2.0.2 micromark-util-decode-string: 2.0.1 micromark-util-normalize-identifier: 2.0.1 micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 + micromark-util-types: 2.0.3 unist-util-stringify-position: 4.0.0 transitivePeerDependencies: - supports-color @@ -6211,8 +6564,8 @@ snapshots: '@types/hast': 3.0.5 '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.3 - mdast-util-to-markdown: 2.1.2 + mdast-util-from-markdown: 2.1.0 + mdast-util-to-markdown: 2.2.0 transitivePeerDependencies: - supports-color @@ -6224,8 +6577,8 @@ snapshots: '@types/unist': 3.0.3 ccount: 2.0.1 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.3 - mdast-util-to-markdown: 2.1.2 + mdast-util-from-markdown: 2.1.0 + mdast-util-to-markdown: 2.2.0 parse-entities: 4.0.2 stringify-entities: 4.0.4 unist-util-stringify-position: 4.0.0 @@ -6239,8 +6592,8 @@ snapshots: '@types/hast': 3.0.5 '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.3 - mdast-util-to-markdown: 2.1.2 + mdast-util-from-markdown: 2.1.0 + mdast-util-to-markdown: 2.2.0 transitivePeerDependencies: - supports-color @@ -6261,15 +6614,17 @@ snapshots: unist-util-visit: 5.1.0 vfile: 6.0.3 - mdast-util-to-markdown@2.1.2: + mdast-util-to-markdown@2.2.0: dependencies: '@types/mdast': 4.0.4 '@types/unist': 3.0.3 longest-streak: 3.1.0 mdast-util-phrasing: 4.1.0 mdast-util-to-string: 4.0.0 + micromark-util-character: 2.1.1 micromark-util-classify-character: 2.0.1 micromark-util-decode-string: 2.0.1 + micromark-util-html-tag-name: 2.0.1 unist-util-visit: 5.1.0 zwitch: 2.0.4 @@ -6283,61 +6638,62 @@ snapshots: merge2@1.4.1: {} - micromark-core-commonmark@2.0.3: + micromark-core-commonmark@2.0.4: dependencies: decode-named-character-reference: 1.3.0 devlop: 1.1.0 micromark-factory-destination: 2.0.1 micromark-factory-label: 2.0.1 - micromark-factory-space: 2.0.1 + micromark-factory-space: 2.1.0 micromark-factory-title: 2.0.1 micromark-factory-whitespace: 2.0.1 micromark-util-character: 2.1.1 micromark-util-chunked: 2.0.1 micromark-util-classify-character: 2.0.1 + micromark-util-edit-map: 1.0.0 micromark-util-html-tag-name: 2.0.1 micromark-util-normalize-identifier: 2.0.1 micromark-util-resolve-all: 2.0.1 micromark-util-subtokenize: 2.1.0 micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 + micromark-util-types: 2.0.3 micromark-factory-destination@2.0.1: dependencies: micromark-util-character: 2.1.1 micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 + micromark-util-types: 2.0.3 micromark-factory-label@2.0.1: dependencies: devlop: 1.1.0 micromark-util-character: 2.1.1 micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 + micromark-util-types: 2.0.3 - micromark-factory-space@2.0.1: + micromark-factory-space@2.1.0: dependencies: micromark-util-character: 2.1.1 - micromark-util-types: 2.0.2 + micromark-util-types: 2.0.3 micromark-factory-title@2.0.1: dependencies: - micromark-factory-space: 2.0.1 + micromark-factory-space: 2.1.0 micromark-util-character: 2.1.1 micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 + micromark-util-types: 2.0.3 micromark-factory-whitespace@2.0.1: dependencies: - micromark-factory-space: 2.0.1 + micromark-factory-space: 2.1.0 micromark-util-character: 2.1.1 micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 + micromark-util-types: 2.0.3 micromark-util-character@2.1.1: dependencies: micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 + micromark-util-types: 2.0.3 micromark-util-chunked@2.0.1: dependencies: @@ -6347,12 +6703,12 @@ snapshots: dependencies: micromark-util-character: 2.1.1 micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 + micromark-util-types: 2.0.3 micromark-util-combine-extensions@2.0.1: dependencies: micromark-util-chunked: 2.0.1 - micromark-util-types: 2.0.2 + micromark-util-types: 2.0.3 micromark-util-decode-numeric-character-reference@2.0.2: dependencies: @@ -6365,6 +6721,10 @@ snapshots: micromark-util-decode-numeric-character-reference: 2.0.2 micromark-util-symbol: 2.0.1 + micromark-util-edit-map@1.0.0: + dependencies: + micromark-util-types: 2.0.3 + micromark-util-encode@2.0.1: {} micromark-util-html-tag-name@2.0.1: {} @@ -6375,7 +6735,7 @@ snapshots: micromark-util-resolve-all@2.0.1: dependencies: - micromark-util-types: 2.0.2 + micromark-util-types: 2.0.3 micromark-util-sanitize-uri@2.0.1: dependencies: @@ -6388,31 +6748,32 @@ snapshots: devlop: 1.1.0 micromark-util-chunked: 2.0.1 micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 + micromark-util-types: 2.0.3 micromark-util-symbol@2.0.1: {} - micromark-util-types@2.0.2: {} + micromark-util-types@2.0.3: {} - micromark@4.0.2: + micromark@4.0.3: dependencies: '@types/debug': 4.1.13 debug: 4.4.3 decode-named-character-reference: 1.3.0 devlop: 1.1.0 - micromark-core-commonmark: 2.0.3 - micromark-factory-space: 2.0.1 + micromark-core-commonmark: 2.0.4 + micromark-factory-space: 2.1.0 micromark-util-character: 2.1.1 micromark-util-chunked: 2.0.1 micromark-util-combine-extensions: 2.0.1 micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-edit-map: 1.0.0 micromark-util-encode: 2.0.1 micromark-util-normalize-identifier: 2.0.1 micromark-util-resolve-all: 2.0.1 micromark-util-sanitize-uri: 2.0.1 micromark-util-subtokenize: 2.1.0 micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 + micromark-util-types: 2.0.3 transitivePeerDependencies: - supports-color @@ -6429,11 +6790,11 @@ snapshots: minimatch@10.2.6: dependencies: - brace-expansion: 5.0.9 + brace-expansion: 5.0.12 minimatch@3.1.5: dependencies: - brace-expansion: 1.1.18 + brace-expansion: 1.1.21 motion-dom@12.43.0: dependencies: @@ -6451,20 +6812,20 @@ snapshots: ms@2.1.3: {} - nanoid@3.3.18: {} + nanoid@3.3.20: {} natural-compare@1.4.0: {} node-addon-api@7.1.1: optional: true - node-releases@2.0.54: {} + node-releases@2.0.57: {} normalize-path@3.0.0: {} object-inspect@1.13.4: {} - obug@2.1.4: {} + obug@2.2.1: {} optionator@0.9.4: dependencies: @@ -6475,6 +6836,29 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 + oxc-minify@0.136.0: + optionalDependencies: + '@oxc-minify/binding-android-arm-eabi': 0.136.0 + '@oxc-minify/binding-android-arm64': 0.136.0 + '@oxc-minify/binding-darwin-arm64': 0.136.0 + '@oxc-minify/binding-darwin-x64': 0.136.0 + '@oxc-minify/binding-freebsd-x64': 0.136.0 + '@oxc-minify/binding-linux-arm-gnueabihf': 0.136.0 + '@oxc-minify/binding-linux-arm-musleabihf': 0.136.0 + '@oxc-minify/binding-linux-arm64-gnu': 0.136.0 + '@oxc-minify/binding-linux-arm64-musl': 0.136.0 + '@oxc-minify/binding-linux-ppc64-gnu': 0.136.0 + '@oxc-minify/binding-linux-riscv64-gnu': 0.136.0 + '@oxc-minify/binding-linux-riscv64-musl': 0.136.0 + '@oxc-minify/binding-linux-s390x-gnu': 0.136.0 + '@oxc-minify/binding-linux-x64-gnu': 0.136.0 + '@oxc-minify/binding-linux-x64-musl': 0.136.0 + '@oxc-minify/binding-openharmony-arm64': 0.136.0 + '@oxc-minify/binding-wasm32-wasi': 0.136.0 + '@oxc-minify/binding-win32-arm64-msvc': 0.136.0 + '@oxc-minify/binding-win32-ia32-msvc': 0.136.0 + '@oxc-minify/binding-win32-x64-msvc': 0.136.0 + oxc-parser@0.120.0(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3): dependencies: '@oxc-project/types': 0.120.0 @@ -6552,13 +6936,13 @@ snapshots: postcss-resolve-nested-selector@0.1.6: {} - postcss-safe-parser@7.1.0(postcss@8.5.28): + postcss-safe-parser@7.1.0(postcss@8.5.29): dependencies: - postcss: 8.5.28 + postcss: 8.5.29 - postcss-scss@4.0.9(postcss@8.5.28): + postcss-scss@4.0.9(postcss@8.5.29): dependencies: - postcss: 8.5.28 + postcss: 8.5.29 postcss-selector-parser@7.1.6: dependencies: @@ -6567,16 +6951,14 @@ snapshots: postcss-value-parser@4.2.0: {} - postcss@8.5.28: + postcss@8.5.29: dependencies: - nanoid: 3.3.18 + nanoid: 3.3.20 picocolors: 1.1.1 - source-map-js: 1.2.1 + source-map-js: 1.2.2 prelude-ls@1.2.1: {} - prettier@3.9.6: {} - prettier@3.9.9: {} property-information@7.2.0: {} @@ -6651,8 +7033,8 @@ snapshots: remark-parse@11.0.0: dependencies: '@types/mdast': 4.0.4 - mdast-util-from-markdown: 2.0.3 - micromark-util-types: 2.0.2 + mdast-util-from-markdown: 2.1.0 + micromark-util-types: 2.0.3 unified: 11.0.5 transitivePeerDependencies: - supports-color @@ -6676,26 +7058,26 @@ snapshots: reusify@1.1.0: {} - rolldown@1.2.11: + rolldown@1.2.12: dependencies: - '@oxc-project/types': 0.151.0 + '@oxc-project/types': 0.152.0 '@rolldown/pluginutils': 1.0.1 optionalDependencies: - '@rolldown/binding-android-arm-eabi': 1.2.11 - '@rolldown/binding-android-arm64': 1.2.11 - '@rolldown/binding-darwin-arm64': 1.2.11 - '@rolldown/binding-darwin-x64': 1.2.11 - '@rolldown/binding-freebsd-x64': 1.2.11 - '@rolldown/binding-linux-arm-gnueabihf': 1.2.11 - '@rolldown/binding-linux-arm64-gnu': 1.2.11 - '@rolldown/binding-linux-arm64-musl': 1.2.11 - '@rolldown/binding-linux-ppc64-gnu': 1.2.11 - '@rolldown/binding-linux-s390x-gnu': 1.2.11 - '@rolldown/binding-linux-x64-gnu': 1.2.11 - '@rolldown/binding-linux-x64-musl': 1.2.11 - '@rolldown/binding-openharmony-arm64': 1.2.11 - '@rolldown/binding-win32-arm64-msvc': 1.2.11 - '@rolldown/binding-win32-x64-msvc': 1.2.11 + '@rolldown/binding-android-arm-eabi': 1.2.12 + '@rolldown/binding-android-arm64': 1.2.12 + '@rolldown/binding-darwin-arm64': 1.2.12 + '@rolldown/binding-darwin-x64': 1.2.12 + '@rolldown/binding-freebsd-x64': 1.2.12 + '@rolldown/binding-linux-arm-gnueabihf': 1.2.12 + '@rolldown/binding-linux-arm64-gnu': 1.2.12 + '@rolldown/binding-linux-arm64-musl': 1.2.12 + '@rolldown/binding-linux-ppc64-gnu': 1.2.12 + '@rolldown/binding-linux-s390x-gnu': 1.2.12 + '@rolldown/binding-linux-x64-gnu': 1.2.12 + '@rolldown/binding-linux-x64-musl': 1.2.12 + '@rolldown/binding-openharmony-arm64': 1.2.12 + '@rolldown/binding-win32-arm64-msvc': 1.2.12 + '@rolldown/binding-win32-x64-msvc': 1.2.12 rollup@4.63.1: dependencies: @@ -6742,7 +7124,7 @@ snapshots: dependencies: chokidar: 5.0.0 immutable: 5.1.9 - source-map-js: 1.2.1 + source-map-js: 1.2.2 optionalDependencies: '@parcel/watcher': 2.6.0 @@ -6762,38 +7144,38 @@ snapshots: seroval@1.5.4: {} - sharp@0.35.4(@types/node@26.6.3): + sharp@0.35.5(@types/node@26.6.4): dependencies: '@img/colour': 1.1.0 detect-libc: 2.1.2 semver: 7.8.5 optionalDependencies: - '@img/sharp-darwin-arm64': 0.35.4 - '@img/sharp-darwin-x64': 0.35.4 - '@img/sharp-freebsd-wasm32': 0.35.4 - '@img/sharp-libvips-darwin-arm64': 1.3.3 - '@img/sharp-libvips-darwin-x64': 1.3.3 - '@img/sharp-libvips-linux-arm': 1.3.3 - '@img/sharp-libvips-linux-arm64': 1.3.3 - '@img/sharp-libvips-linux-ppc64': 1.3.3 - '@img/sharp-libvips-linux-riscv64': 1.3.3 - '@img/sharp-libvips-linux-s390x': 1.3.3 - '@img/sharp-libvips-linux-x64': 1.3.3 - '@img/sharp-libvips-linuxmusl-arm64': 1.3.3 - '@img/sharp-libvips-linuxmusl-x64': 1.3.3 - '@img/sharp-linux-arm': 0.35.4 - '@img/sharp-linux-arm64': 0.35.4 - '@img/sharp-linux-ppc64': 0.35.4 - '@img/sharp-linux-riscv64': 0.35.4 - '@img/sharp-linux-s390x': 0.35.4 - '@img/sharp-linux-x64': 0.35.4 - '@img/sharp-linuxmusl-arm64': 0.35.4 - '@img/sharp-linuxmusl-x64': 0.35.4 - '@img/sharp-webcontainers-wasm32': 0.35.4 - '@img/sharp-win32-arm64': 0.35.4 - '@img/sharp-win32-ia32': 0.35.4 - '@img/sharp-win32-x64': 0.35.4 - '@types/node': 26.6.3 + '@img/sharp-darwin-arm64': 0.35.5 + '@img/sharp-darwin-x64': 0.35.5 + '@img/sharp-freebsd-wasm32': 0.35.5 + '@img/sharp-libvips-darwin-arm64': 1.3.4 + '@img/sharp-libvips-darwin-x64': 1.3.4 + '@img/sharp-libvips-linux-arm': 1.3.4 + '@img/sharp-libvips-linux-arm64': 1.3.4 + '@img/sharp-libvips-linux-ppc64': 1.3.4 + '@img/sharp-libvips-linux-riscv64': 1.3.4 + '@img/sharp-libvips-linux-s390x': 1.3.4 + '@img/sharp-libvips-linux-x64': 1.3.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.3.4 + '@img/sharp-libvips-linuxmusl-x64': 1.3.4 + '@img/sharp-linux-arm': 0.35.5 + '@img/sharp-linux-arm64': 0.35.5 + '@img/sharp-linux-ppc64': 0.35.5 + '@img/sharp-linux-riscv64': 0.35.5 + '@img/sharp-linux-s390x': 0.35.5 + '@img/sharp-linux-x64': 0.35.5 + '@img/sharp-linuxmusl-arm64': 0.35.5 + '@img/sharp-linuxmusl-x64': 0.35.5 + '@img/sharp-webcontainers-wasm32': 0.35.5 + '@img/sharp-win32-arm64': 0.35.5 + '@img/sharp-win32-ia32': 0.35.5 + '@img/sharp-win32-x64': 0.35.5 + '@types/node': 26.6.4 shebang-command@2.0.0: dependencies: @@ -6801,7 +7183,7 @@ snapshots: shebang-regex@3.0.0: {} - shell-quote@1.10.0: {} + shell-quote@1.12.0: {} side-channel-list@1.0.1: dependencies: @@ -6865,18 +7247,13 @@ snapshots: '@solid-primitives/transition-group': 1.1.2(solid-js@1.9.15) solid-js: 1.9.15 - source-map-js@1.2.1: {} + source-map-js@1.2.2: {} space-separated-tokens@2.0.2: {} - sqlite-wasm-kysely@0.3.0(kysely@0.28.17): - dependencies: - '@sqlite.org/sqlite-wasm': 3.48.0-build4 - kysely: 0.28.17 - stackback@0.0.2: {} - std-env@4.2.0: {} + std-env@4.3.0: {} string-width@4.2.3: dependencies: @@ -6884,9 +7261,9 @@ snapshots: is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - string-width@8.2.2: + string-width@8.3.0: dependencies: - get-east-asian-width: 1.6.0 + get-east-asian-width: 1.7.0 strip-ansi: 7.2.0 stringify-entities@4.0.4: @@ -6900,7 +7277,7 @@ snapshots: strip-ansi@7.2.0: dependencies: - ansi-regex: 6.3.0 + ansi-regex: 6.4.0 strip-json-comments@3.1.1: {} @@ -6912,38 +7289,38 @@ snapshots: dependencies: inline-style-parser: 0.2.7 - stylelint-config-recommended-scss@17.0.1(postcss@8.5.28)(stylelint@17.15.0(typescript@6.0.3)): + stylelint-config-recommended-scss@17.0.1(postcss@8.5.29)(stylelint@17.16.0(typescript@6.0.3)): dependencies: - postcss-scss: 4.0.9(postcss@8.5.28) - stylelint: 17.15.0(typescript@6.0.3) - stylelint-config-recommended: 18.0.0(stylelint@17.15.0(typescript@6.0.3)) - stylelint-scss: 7.3.0(stylelint@17.15.0(typescript@6.0.3)) + postcss-scss: 4.0.9(postcss@8.5.29) + stylelint: 17.16.0(typescript@6.0.3) + stylelint-config-recommended: 18.0.0(stylelint@17.16.0(typescript@6.0.3)) + stylelint-scss: 7.3.0(stylelint@17.16.0(typescript@6.0.3)) optionalDependencies: - postcss: 8.5.28 + postcss: 8.5.29 - stylelint-config-recommended@18.0.0(stylelint@17.15.0(typescript@6.0.3)): + stylelint-config-recommended@18.0.0(stylelint@17.16.0(typescript@6.0.3)): dependencies: - stylelint: 17.15.0(typescript@6.0.3) + stylelint: 17.16.0(typescript@6.0.3) - stylelint-config-standard-scss@17.0.0(postcss@8.5.28)(stylelint@17.15.0(typescript@6.0.3)): + stylelint-config-standard-scss@17.0.0(postcss@8.5.29)(stylelint@17.16.0(typescript@6.0.3)): dependencies: - stylelint: 17.15.0(typescript@6.0.3) - stylelint-config-recommended-scss: 17.0.1(postcss@8.5.28)(stylelint@17.15.0(typescript@6.0.3)) - stylelint-config-standard: 40.0.0(stylelint@17.15.0(typescript@6.0.3)) + stylelint: 17.16.0(typescript@6.0.3) + stylelint-config-recommended-scss: 17.0.1(postcss@8.5.29)(stylelint@17.16.0(typescript@6.0.3)) + stylelint-config-standard: 40.0.0(stylelint@17.16.0(typescript@6.0.3)) optionalDependencies: - postcss: 8.5.28 + postcss: 8.5.29 - stylelint-config-standard@40.0.0(stylelint@17.15.0(typescript@6.0.3)): + stylelint-config-standard@40.0.0(stylelint@17.16.0(typescript@6.0.3)): dependencies: - stylelint: 17.15.0(typescript@6.0.3) - stylelint-config-recommended: 18.0.0(stylelint@17.15.0(typescript@6.0.3)) + stylelint: 17.16.0(typescript@6.0.3) + stylelint-config-recommended: 18.0.0(stylelint@17.16.0(typescript@6.0.3)) - stylelint-scss@7.3.0(stylelint@17.15.0(typescript@6.0.3)): + stylelint-scss@7.3.0(stylelint@17.16.0(typescript@6.0.3)): dependencies: - '@csstools/css-calc': 3.3.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) - '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) - '@csstools/css-syntax-patches-for-csstree': 1.1.12(css-tree@3.2.1) - '@csstools/css-tokenizer': 4.0.0 + '@csstools/css-calc': 3.4.3(@csstools/css-parser-algorithms@4.0.2(@csstools/css-tokenizer@4.0.2))(@csstools/css-tokenizer@4.0.2) + '@csstools/css-parser-algorithms': 4.0.2(@csstools/css-tokenizer@4.0.2) + '@csstools/css-syntax-patches-for-csstree': 1.1.15(css-tree@3.2.1) + '@csstools/css-tokenizer': 4.0.2 css-tree: 3.2.1 is-plain-object: 5.1.0 known-css-properties: 0.37.0 @@ -6951,17 +7328,17 @@ snapshots: postcss-resolve-nested-selector: 0.1.6 postcss-selector-parser: 7.1.6 postcss-value-parser: 4.2.0 - stylelint: 17.15.0(typescript@6.0.3) + stylelint: 17.16.0(typescript@6.0.3) - stylelint@17.15.0(typescript@6.0.3): + stylelint@17.16.0(typescript@6.0.3): dependencies: - '@csstools/css-calc': 3.3.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) - '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) - '@csstools/css-syntax-patches-for-csstree': 1.1.12(css-tree@3.2.1) - '@csstools/css-tokenizer': 4.0.0 - '@csstools/media-query-list-parser': 5.0.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) - '@csstools/selector-resolve-nested': 4.0.1(postcss-selector-parser@7.1.6) - '@csstools/selector-specificity': 6.0.0(postcss-selector-parser@7.1.6) + '@csstools/css-calc': 3.4.3(@csstools/css-parser-algorithms@4.0.2(@csstools/css-tokenizer@4.0.2))(@csstools/css-tokenizer@4.0.2) + '@csstools/css-parser-algorithms': 4.0.2(@csstools/css-tokenizer@4.0.2) + '@csstools/css-syntax-patches-for-csstree': 1.1.15(css-tree@3.2.1) + '@csstools/css-tokenizer': 4.0.2 + '@csstools/media-query-list-parser': 5.0.2(@csstools/css-parser-algorithms@4.0.2(@csstools/css-tokenizer@4.0.2))(@csstools/css-tokenizer@4.0.2) + '@csstools/selector-resolve-nested': 4.0.2(postcss-selector-parser@7.1.6) + '@csstools/selector-specificity': 6.0.1(postcss-selector-parser@7.1.6) colord: 2.10.0 cosmiconfig: 9.0.2(typescript@6.0.3) css-functions-list: 3.3.3 @@ -6974,19 +7351,19 @@ snapshots: globby: 16.2.4 globjoin: 0.1.4 html-tags: 5.1.0 - ignore: 7.0.8 + ignore: 7.0.12 import-meta-resolve: 4.2.0 mathml-tag-names: 4.0.0 meow: 14.1.0 micromatch: 4.0.8 normalize-path: 3.0.0 picocolors: 1.1.1 - postcss: 8.5.28 - postcss-safe-parser: 7.1.0(postcss@8.5.28) + postcss: 8.5.29 + postcss-safe-parser: 7.1.0(postcss@8.5.29) postcss-selector-parser: 7.1.6 postcss-value-parser: 4.2.0 - string-width: 8.2.2 - supports-hyperlinks: 4.5.0 + string-width: 8.3.0 + supports-hyperlinks: 4.6.0 svg-tags: 1.0.0 table: 6.9.0 write-file-atomic: 7.0.1 @@ -6996,7 +7373,7 @@ snapshots: superjson@2.2.6: dependencies: - copy-anything: 4.1.4 + copy-anything: 4.1.5 supports-color@10.2.2: {} @@ -7004,7 +7381,7 @@ snapshots: dependencies: has-flag: 4.0.0 - supports-hyperlinks@4.5.0: + supports-hyperlinks@4.6.0: dependencies: has-flag: 5.0.1 supports-color: 10.2.2 @@ -7023,7 +7400,7 @@ snapshots: tinybench@2.9.0: {} - tinyexec@1.3.0: {} + tinyexec@1.3.1: {} tinyglobby@0.2.17: dependencies: @@ -7058,12 +7435,12 @@ snapshots: dependencies: prelude-ls: 1.2.1 - typescript-eslint@8.69.0(eslint@9.38.0(jiti@2.7.0))(typescript@6.0.3): + typescript-eslint@8.71.1(eslint@9.38.0(jiti@2.7.0))(typescript@6.0.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.69.0(@typescript-eslint/parser@8.69.0(eslint@9.38.0(jiti@2.7.0))(typescript@6.0.3))(eslint@9.38.0(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/parser': 8.69.0(eslint@9.38.0(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/typescript-estree': 8.69.0(typescript@6.0.3) - '@typescript-eslint/utils': 8.69.0(eslint@9.38.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/eslint-plugin': 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.38.0(jiti@2.7.0))(typescript@6.0.3))(eslint@9.38.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/parser': 8.71.1(eslint@9.38.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/typescript-estree': 8.71.1(typescript@6.0.3) + '@typescript-eslint/utils': 8.71.1(eslint@9.38.0(jiti@2.7.0))(typescript@6.0.3) eslint: 9.38.0(jiti@2.7.0) typescript: 6.0.3 transitivePeerDependencies: @@ -7073,7 +7450,7 @@ snapshots: undici-types@8.9.0: {} - unicorn-magic@0.4.0: {} + unicorn-magic@0.4.1: {} unified@11.0.5: dependencies: @@ -7111,24 +7488,24 @@ snapshots: unplugin@2.3.11: dependencies: '@jridgewell/remapping': 2.3.5 - acorn: 8.18.0 + acorn: 8.19.0 picomatch: 4.0.7 webpack-virtual-modules: 0.6.2 - unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.11)(rollup@4.63.1)(vite@8.3.1(@types/node@26.6.3)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.105.1)(tsx@4.21.0)): + unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.12)(rollup@4.63.1)(vite@8.3.3(@types/node@26.6.4)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.105.1)(tsx@4.21.0)): dependencies: '@jridgewell/remapping': 2.3.5 picomatch: 4.0.7 webpack-virtual-modules: 0.6.2 optionalDependencies: esbuild: 0.28.2 - rolldown: 1.2.11 + rolldown: 1.2.12 rollup: 4.63.1 - vite: 8.3.1(@types/node@26.6.3)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.105.1)(tsx@4.21.0) + vite: 8.3.3(@types/node@26.6.4)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.105.1)(tsx@4.21.0) - update-browserslist-db@1.3.2(browserslist@4.28.9): + update-browserslist-db@1.3.3(browserslist@4.29.3): dependencies: - browserslist: 4.28.9 + browserslist: 4.29.3 escalade: 3.2.0 picocolors: 1.1.1 @@ -7138,7 +7515,7 @@ snapshots: urlpattern-polyfill@10.1.0: {} - use-sync-external-store@1.6.0(react@19.3.0): + use-sync-external-store@1.7.0(react@19.3.0): dependencies: react: 19.3.0 @@ -7146,6 +7523,10 @@ snapshots: uuid@14.0.2: {} + valibot@1.5.0(typescript@6.0.3): + optionalDependencies: + typescript: 6.0.3 + vfile-location@5.0.3: dependencies: '@types/unist': 3.0.3 @@ -7161,53 +7542,53 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite-plugin-image-optimizer@2.0.3(sharp@0.35.4(@types/node@26.6.3))(vite@8.3.1(@types/node@26.6.3)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.105.1)(tsx@4.21.0)): + vite-plugin-image-optimizer@2.0.3(sharp@0.35.5(@types/node@26.6.4))(vite@8.3.3(@types/node@26.6.4)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.105.1)(tsx@4.21.0)): dependencies: ansi-colors: 4.1.3 pathe: 2.0.3 - vite: 8.3.1(@types/node@26.6.3)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.105.1)(tsx@4.21.0) + vite: 8.3.3(@types/node@26.6.4)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.105.1)(tsx@4.21.0) optionalDependencies: - sharp: 0.35.4(@types/node@26.6.3) + sharp: 0.35.5(@types/node@26.6.4) - vite@8.3.1(@types/node@26.6.3)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.105.1)(tsx@4.21.0): + vite@8.3.3(@types/node@26.6.4)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.105.1)(tsx@4.21.0): dependencies: lightningcss: 1.33.0 picomatch: 4.0.7 - postcss: 8.5.28 - rolldown: 1.2.11 + postcss: 8.5.29 + rolldown: 1.2.12 tinyglobby: 0.2.17 optionalDependencies: - '@types/node': 26.6.3 + '@types/node': 26.6.4 esbuild: 0.28.2 fsevents: 2.3.3 jiti: 2.7.0 sass: 1.105.1 tsx: 4.21.0 - vitest@4.1.9(@types/node@26.6.3)(vite@8.3.1(@types/node@26.6.3)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.105.1)(tsx@4.21.0)): + vitest@4.1.11(@types/node@26.6.4)(vite@8.3.3(@types/node@26.6.4)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.105.1)(tsx@4.21.0)): dependencies: - '@vitest/expect': 4.1.9 - '@vitest/mocker': 4.1.9(vite@8.3.1(@types/node@26.6.3)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.105.1)(tsx@4.21.0)) - '@vitest/pretty-format': 4.1.9 - '@vitest/runner': 4.1.9 - '@vitest/snapshot': 4.1.9 - '@vitest/spy': 4.1.9 - '@vitest/utils': 4.1.9 + '@vitest/expect': 4.1.11 + '@vitest/mocker': 4.1.11(vite@8.3.3(@types/node@26.6.4)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.105.1)(tsx@4.21.0)) + '@vitest/pretty-format': 4.1.11 + '@vitest/runner': 4.1.11 + '@vitest/snapshot': 4.1.11 + '@vitest/spy': 4.1.11 + '@vitest/utils': 4.1.11 es-module-lexer: 2.3.2 expect-type: 1.4.0 magic-string: 0.30.21 - obug: 2.1.4 + obug: 2.2.1 pathe: 2.0.3 picomatch: 4.0.7 - std-env: 4.2.0 + std-env: 4.3.0 tinybench: 2.9.0 - tinyexec: 1.3.0 + tinyexec: 1.3.1 tinyglobby: 0.2.17 tinyrainbow: 3.2.0 - vite: 8.3.1(@types/node@26.6.3)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.105.1)(tsx@4.21.0) + vite: 8.3.3(@types/node@26.6.4)(esbuild@0.28.2)(jiti@2.7.0)(sass@1.105.1)(tsx@4.21.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 26.6.3 + '@types/node': 26.6.4 transitivePeerDependencies: - msw @@ -7234,7 +7615,7 @@ snapshots: dependencies: signal-exit: 4.1.0 - ws@8.21.3: {} + ws@8.22.0: {} yallist@3.1.1: {} @@ -7242,10 +7623,10 @@ snapshots: zod@4.6.5: {} - zustand@5.0.15(@types/react@19.3.0)(react@19.3.0)(use-sync-external-store@1.6.0(react@19.3.0)): + zustand@5.0.15(@types/react@19.3.0)(react@19.3.0)(use-sync-external-store@1.7.0(react@19.3.0)): optionalDependencies: '@types/react': 19.3.0 react: 19.3.0 - use-sync-external-store: 1.6.0(react@19.3.0) + use-sync-external-store: 1.7.0(react@19.3.0) zwitch@2.0.4: {} From 8a5df2c19e662206ccdf006d2ef7c0d2ba06a8d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20W=C3=B3jcik?= Date: Wed, 7 Oct 2026 11:17:28 +0200 Subject: [PATCH 15/16] try to appease trivy --- web/pnpm-lock.yaml | 28 ++++++++++++++-------------- web/pnpm-workspace.yaml | 2 +- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 94c59c7d..3d481b65 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -5,7 +5,7 @@ settings: excludeLinksFromLockfile: false overrides: - seroval: 1.5.4 + seroval: 1.6.3 importers: @@ -3480,16 +3480,16 @@ packages: resolution: {integrity: sha512-HXuLAX2pu/UByPpaeo/TaMfvMIi+1QqIoPJYCcAtU8QkVNwgR6MPlGuCQTErV1JwraaMbYaWVIBX7mppzGLATQ==} engines: {node: '>=10'} peerDependencies: - seroval: 1.5.4 + seroval: 1.6.3 seroval-plugins@1.6.8: resolution: {integrity: sha512-N7mWAMydj89EnYTHtRpS3LBrAz3J9O6oVrqpuXuvlAHfAUG8WEKqtbAd7SBiJNY5NfCAFhSdyAh7wI4Shjqy4g==} engines: {node: '>=10'} peerDependencies: - seroval: 1.5.4 + seroval: 1.6.3 - seroval@1.5.4: - resolution: {integrity: sha512-46uFvgrXTVxZcUorgSSRZ4y+ieqLLQRMlG4bnCZKW3qI6BZm7Rg4ntMW4p1mILEEBZWrFlcpp0AyIIlM6jD9iw==} + seroval@1.6.3: + resolution: {integrity: sha512-5PwLbVPpT4DEki1hYVSSsoxWY6xCNMVucAVLK/CH0mXSDfp/I4KaAex72q80GNt5hpn7CCMGdSpIg4YGqH/wXQ==} engines: {node: '>=10'} sharp@0.35.5: @@ -5422,8 +5422,8 @@ snapshots: dependencies: '@tanstack/history': 1.162.4 cookie-es: 3.1.1 - seroval: 1.5.4 - seroval-plugins: 1.6.8(seroval@1.5.4) + seroval: 1.6.3 + seroval-plugins: 1.6.8(seroval@1.6.3) '@tanstack/router-devtools-core@1.168.2(@tanstack/router-core@1.171.34)(csstype@3.2.3)': dependencies: @@ -7134,15 +7134,15 @@ snapshots: semver@7.8.5: {} - seroval-plugins@1.5.6(seroval@1.5.4): + seroval-plugins@1.5.6(seroval@1.6.3): dependencies: - seroval: 1.5.4 + seroval: 1.6.3 - seroval-plugins@1.6.8(seroval@1.5.4): + seroval-plugins@1.6.8(seroval@1.6.3): dependencies: - seroval: 1.5.4 + seroval: 1.6.3 - seroval@1.5.4: {} + seroval@1.6.3: {} sharp@0.35.5(@types/node@26.6.4): dependencies: @@ -7228,8 +7228,8 @@ snapshots: solid-js@1.9.15: dependencies: csstype: 3.2.3 - seroval: 1.5.4 - seroval-plugins: 1.5.6(seroval@1.5.4) + seroval: 1.6.3 + seroval-plugins: 1.5.6(seroval@1.6.3) solid-presence@0.2.0(solid-js@1.9.15): dependencies: diff --git a/web/pnpm-workspace.yaml b/web/pnpm-workspace.yaml index bea4c0c9..e2810097 100644 --- a/web/pnpm-workspace.yaml +++ b/web/pnpm-workspace.yaml @@ -9,4 +9,4 @@ onlyBuiltDependencies: - esbuild - sharp overrides: - seroval: 1.5.4 + seroval: 1.6.3 From 0cb6f5249adb4ba1bcbbcce0cedee8ff94f1a307 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20W=C3=B3jcik?= Date: Wed, 7 Oct 2026 11:26:59 +0200 Subject: [PATCH 16/16] adjust timeout --- src/handlers/mfa_flow.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/handlers/mfa_flow.rs b/src/handlers/mfa_flow.rs index 0f1d0fa6..769e5a4b 100644 --- a/src/handlers/mfa_flow.rs +++ b/src/handlers/mfa_flow.rs @@ -26,7 +26,8 @@ use crate::{ }, }; -const REMOTE_AUTH_TIMEOUT: Duration = Duration::from_secs(60); +// 10 seconds more that core-side timeout, to avoid proxy breaking the connection +const REMOTE_AUTH_TIMEOUT: Duration = Duration::from_secs(130); pub(crate) fn router() -> Router { Router::new()