From 246b5a3d6a6eeb847cb4cf7aba28fe9ad589e560 Mon Sep 17 00:00:00 2001 From: Pauline Date: Sat, 27 Jul 2024 20:19:33 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20fix:=20standardize=20rust=20cons?= =?UTF-8?q?tants=20bcs=20i=20was=20bored?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/desktop/src/ext/updater.rs | 2 +- apps/frontend/package.json | 6 +- package.json | 2 +- packages/client/package.json | 2 +- .../core/src/api/package/content/modrinth.rs | 3 +- packages/core/src/api/package/from.rs | 15 +- packages/core/src/api/package/mrpack.rs | 4 +- packages/core/src/api/proxy/send.rs | 5 +- packages/core/src/api/settings.rs | 6 +- packages/core/src/constants.rs | 78 +- packages/core/src/game/arguments.rs | 7 +- packages/core/src/game/metadata.rs | 2 +- packages/core/src/store/clusters.rs | 8 +- packages/core/src/store/dirs.rs | 16 +- packages/core/src/store/metadata.rs | 6 +- packages/core/src/store/minecraft.rs | 8 +- packages/core/src/store/processor.rs | 12 +- packages/core/src/store/settings.rs | 7 +- packages/core/src/utils/http.rs | 9 +- packages/core/src/utils/io.rs | 35 +- packages/core/src/utils/java.rs | 47 +- packages/core/src/utils/mod.rs | 5 +- packages/core/src/utils/pkg.rs | 1 - packages/core/src/utils/platform.rs | 13 +- packages/core/src/utils/watcher.rs | 7 +- pnpm-lock.yaml | 920 +++++++++++------- 26 files changed, 739 insertions(+), 487 deletions(-) delete mode 100644 packages/core/src/utils/pkg.rs diff --git a/apps/desktop/src/ext/updater.rs b/apps/desktop/src/ext/updater.rs index 29e7f37b..9acd2dac 100644 --- a/apps/desktop/src/ext/updater.rs +++ b/apps/desktop/src/ext/updater.rs @@ -110,7 +110,7 @@ pub fn plugin() -> TauriPlugin { }) .js_init_script(format!( r#"window.__ONELAUNCHER_VERSION__ = "{}";"#, - env!("CARGO_PKG_VERSION") + onelauncher::constants::VERSION, )) .build() } diff --git a/apps/frontend/package.json b/apps/frontend/package.json index 47c21305..3efe4d0c 100644 --- a/apps/frontend/package.json +++ b/apps/frontend/package.json @@ -24,13 +24,13 @@ "@rspc/tauri": "^0.2.0", "@solid-primitives/refs": "^1.0.8", "@solidjs/router": "^0.14.1", - "@tanstack/solid-query": "^5.51.9", + "@tanstack/solid-query": "^5.51.15", "@tauri-apps/api": "^2.0.0-beta.13", "@tauri-apps/plugin-clipboard-manager": "github:tauri-apps/tauri-plugin-clipboard-manager#v2", "@tauri-apps/plugin-shell": "github:tauri-apps/tauri-plugin-shell#v2", "@thisbeyond/solid-dnd": "^0.7.5", "@thisbeyond/solid-select": "^0.15.0", - "@unocss/reset": "^0.61.5", + "@unocss/reset": "^0.61.6", "@untitled-theme/icons-solid": "^0.10.5", "overlayscrollbars": "^2.9.2", "overlayscrollbars-solid": "^0.5.5", @@ -45,7 +45,7 @@ "@types/uuid": "^10.0.0", "jsdom": "^24.1.1", "sass": "^1.77.8", - "unocss": "^0.61.5", + "unocss": "^0.61.6", "vite-plugin-solid": "^2.10.2", "vite-plugin-solid-svg": "^0.8.1", "vite-tsconfig-paths": "^4.3.2" diff --git a/package.json b/package.json index 7f4dcda7..b44fceda 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "@types/node": "^20.14.12", "@vitest/ui": "^2.0.4", "bumpp": "^9.4.1", - "eslint": "^9.7.0", + "eslint": "^9.8.0", "eslint-plugin-solid": "^0.14.1", "ts-node": "^10.9.2", "tsx": "^4.16.2", diff --git a/packages/client/package.json b/packages/client/package.json index 2c2d271e..0ba263e0 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -19,7 +19,7 @@ "@rspc/solid-query": "^0.2.3", "@rspc/tauri": "^0.2.0", "@solid-primitives/deep": "^0.2.9", - "@tanstack/solid-query": "^5.51.9", + "@tanstack/solid-query": "^5.51.15", "fast-equals": "^5.0.1", "plausible-tracker": "^0.3.9", "solid-js": "^1.8.19", diff --git a/packages/core/src/api/package/content/modrinth.rs b/packages/core/src/api/package/content/modrinth.rs index 3fa72b9c..ebcf7ab2 100644 --- a/packages/core/src/api/package/content/modrinth.rs +++ b/packages/core/src/api/package/content/modrinth.rs @@ -1,5 +1,4 @@ use crate::data::{ManagedPackage, ManagedVersion, PackageType}; -use crate::package::from::MODRINTH_API_URL; use crate::store::{ManagedVersionFile, PackageFile, PackageSide}; use crate::utils::http::fetch; use crate::{Result, State}; @@ -127,7 +126,7 @@ pub struct Gallery { macro_rules! format_url { ($($arg:tt)*) => {{ - format!("{}{}", MODRINTH_API_URL, format!($($arg)*)) + format!("{}{}", crate::constants::MODRINTH_API_URL, format!($($arg)*)) }}; } diff --git a/packages/core/src/api/package/from.rs b/packages/core/src/api/package/from.rs index 9541b705..4f575e5f 100644 --- a/packages/core/src/api/package/from.rs +++ b/packages/core/src/api/package/from.rs @@ -13,9 +13,6 @@ use serde::{Deserialize, Serialize}; use std::collections::HashMap; use std::path::PathBuf; -pub const MODRINTH_API_URL: &str = "https://api.modrinth.com/v2"; -pub const CURSEFORGE_API_URL: &str = "https://api.cursefor"; - #[derive(Serialize, Deserialize, Eq, PartialEq)] #[serde(rename_all = "camelCase")] pub struct PackFormat { @@ -216,7 +213,11 @@ pub async fn generate_pack_from_version_id( send_ingress(&ingress, 0.0, Some("fetching version")).await?; let version: ManagedVersion = fetch_json( Method::GET, - &format!("{}version/{}", MODRINTH_API_URL, version_id), + &format!( + "{}version/{}", + crate::constants::MODRINTH_API_URL, + version_id + ), None, None, &state.fetch_semaphore, @@ -250,7 +251,11 @@ pub async fn generate_pack_from_version_id( let pkg: ManagedPackage = fetch_json( Method::GET, - &format!("{}project/{}", MODRINTH_API_URL, version.package_id), + &format!( + "{}project/{}", + crate::constants::MODRINTH_API_URL, + version.package_id + ), None, None, &state.fetch_semaphore, diff --git a/packages/core/src/api/package/mrpack.rs b/packages/core/src/api/package/mrpack.rs index 7d59fd28..1cec34b7 100644 --- a/packages/core/src/api/package/mrpack.rs +++ b/packages/core/src/api/package/mrpack.rs @@ -18,7 +18,7 @@ use std::path::{Component, PathBuf}; use super::from::{ generate_pack_from_file, generate_pack_from_version_id, CreatePack, CreatePackLocation, - PackFormat, MODRINTH_API_URL, + PackFormat, }; /// Install a pack @@ -280,7 +280,7 @@ pub async fn remove_all_related_files( .filter_map(|f| Some(f.hashes.get(&PackFileHash::Sha512)?.clone())) .collect::>(); - let files_url = format!("{}version_files", MODRINTH_API_URL); + let files_url = format!("{}version_files", crate::constants::MODRINTH_API_URL); let hash_packages = fetch_json::>( Method::POST, diff --git a/packages/core/src/api/proxy/send.rs b/packages/core/src/api/proxy/send.rs index 656be912..8a554e7e 100644 --- a/packages/core/src/api/proxy/send.rs +++ b/packages/core/src/api/proxy/send.rs @@ -2,6 +2,8 @@ use super::IngressId; use crate::api::proxy::{ ClusterPayloadType, Ingress, IngressType, InternetPayload, ProcessPayloadType, ProxyError, }; +#[cfg(feature = "cli")] +use crate::constants::CLI_TOTAL_INGRESS; use crate::store::{ClusterPath, IngressProcessType, IngressProcessor}; use uuid::Uuid; @@ -22,9 +24,6 @@ pub async fn init_ingress( Ok(key) } -#[cfg(feature = "cli")] -const CLI_TOTAL_INGRESS: u64 = 1000; - #[onelauncher_macros::memory] pub async fn init_ingress_internal( ingress_type: IngressType, diff --git a/packages/core/src/api/settings.rs b/packages/core/src/api/settings.rs index c4d6b913..574259e6 100644 --- a/packages/core/src/api/settings.rs +++ b/packages/core/src/api/settings.rs @@ -1,7 +1,7 @@ //! Settings Management use crate::proxy::send::{init_ingress, send_ingress}; -use crate::store::{self, Clusters, Directories, Settings}; +use crate::store::{Clusters, Directories, Settings}; use crate::State; use std::path::{Path, PathBuf}; use tokio::sync::RwLock; @@ -103,7 +103,9 @@ pub async fn set_directory(new: PathBuf) -> crate::Result<()> { { let epath = e.path(); if let Some(file_name) = epath.file_name() { - if file_name == store::CLUSTERS_FOLDER || file_name == store::METADATA_FOLDER { + if file_name == crate::constants::CLUSTERS_FOLDER + || file_name == crate::constants::METADATA_FOLDER + { if across_filesystems { entries.extend(crate::package::import::sub(&epath).await?); cleanable.push(epath.clone()); diff --git a/packages/core/src/constants.rs b/packages/core/src/constants.rs index 2ecbfb22..1234209b 100644 --- a/packages/core/src/constants.rs +++ b/packages/core/src/constants.rs @@ -1,18 +1,26 @@ //! **OneLauncher Constants** //! //! Public constant variables and strings that are used throughout the launcher. -//! Can be shared publically, any encrypted secrets should be stored in [`crate::store::credentials`]. +//! Can be shared publically, any secrets should be stored in [`crate::store::credentials`]. // =========== Core Metadata =========== /// The name of the launcher. pub const NAME: &str = "OneLauncher"; -/// The version of the launcher -pub const VERSION: &str = "1.0.0-alpha.1"; // todo: env +/// The version of the launcher (from `../Cargo.toml` env). +pub const VERSION: &str = env!("CARGO_PKG_VERSION"); + +// =========== Default Ingress =========== +/// The amount of attempts to fetch a file before a request fails. +pub const FETCH_ATTEMPTS: usize = 3; +/// The total ingress capacity of the CLI, provided to [`indicatif`]. +#[cfg(feature = "cli")] +pub const CLI_TOTAL_INGRESS: u64 = 1000; +/// The newline which we replace in metadata files. +pub const DUMMY_REPLACE_NEWLINE: &str = "\n"; // =========== Authentication =========== -/// The Discord RPC client ID. -pub const DISCORD_RPC_CLIENT_ID: &str = "1234567890000000"; - +/// Our Discord RPC client ID. +pub const DISCORD_RPC_CLIENT_ID: &str = "1234567890000000"; // todo /// Our Microsoft client ID. pub const MICROSOFT_CLIENT_ID: &str = "9eac3a4e-8cdd-43ef-863e-49cd601b1f03"; /// Mojang/Microsoft client ID. @@ -22,6 +30,47 @@ pub const MINECRAFT_REDIRECT_URL: &str = "https://login.live.com/oauth20_desktop /// Mojang/Microsoft login xboxlive scopes to get tokens. pub const MINECRAFT_SCOPES: &str = "service::user.auth.xboxlive.com::MBI_SSL"; +// =========== API =========== +/// The Modrinth API base url. +pub const MODRINTH_API_URL: &str = "https://api.modrinth.com/v2"; +/// The Curseforge API base url. +pub const CURSEFORGE_API_URL: &str = "https://api.curseforge"; +/// Our metadata API base url. +pub const METADATA_API_URL: &str = "https://meta.polyfrost.org"; + +// =========== Paths =========== +/// The public `settings.json` file used to store the global [`Settings`] state. +/// +/// [`Settings`]: crate::store::Settings +pub const SETTINGS_FILE: &str = "settings.json"; +/// The public `cluster.json` file used to store the global [`Clusters`] state. +/// +/// [`Clusters`]: crate::store::Clusters +pub const CLUSTER_FILE: &str = "cluster.json"; +/// The public `authentication.json` file used to store the global [`MinecraftAuth`] state. +/// +/// [`MinecraftAuth`]: crate::store::MinecraftAuth +pub const AUTH_FILE: &str = "authentication.json"; +/// The public `processor.json` file used to store the global [`Processor`] state. +/// +/// [`Processor`]: crate::store::Processor +pub const PROCESSOR_FILE: &str = "processor.json"; + +/// The current [`Settings`] format version, bumped for breaking changes. +/// If updated, a config file migration logic **NEEDS** to be implemented. +/// +/// [`Settings`]: crate::store::Settings +pub const CURRENT_SETTINGS_FORMAT_VERSION: u32 = 1; + +/// The constant core caches folder. +pub const CACHES_FOLDER: &str = "caches"; +/// The constant core crash reports folder. +pub const CRASH_PATH: &str = "crash-reports"; +/// The constant core clusters folder. +pub const CLUSTERS_FOLDER: &str = "clusters"; +/// The constant core metadata folder. +pub const METADATA_FOLDER: &str = "metadata"; + // =========== Hacky Mojang-spec OS constants =========== #[cfg(target_os = "windows")] pub const TARGET_OS: &str = "windows"; @@ -41,4 +90,19 @@ pub const NATIVE_ARCH: &str = "64"; #[cfg(all(not(target_arch = "x86_64"), not(target_arch = "x86")))] pub const NATIVE_ARCH: &str = "64"; -// TODO: Add more architectures +// =========== Java =========== +/// The default java executable on Windows. +#[cfg(target_os = "windows")] +pub const JAVA_BIN: &str = "javaw.exe"; + +/// The default java executable on macOS and Linux. +#[cfg(not(target_os = "windows"))] +pub const JAVA_BIN: &str = "java"; + +/// The bit width on x64 architectures. +#[cfg(target_pointer_width = "64")] +pub const ARCH_WIDTH: &str = "64"; + +/// The bit width on x32 architectures. +#[cfg(target_pointer_width = "32")] +pub const ARCH_WIDTH: &str = "32"; diff --git a/packages/core/src/game/arguments.rs b/packages/core/src/game/arguments.rs index d458e634..db87529a 100644 --- a/packages/core/src/game/arguments.rs +++ b/packages/core/src/game/arguments.rs @@ -9,12 +9,11 @@ use interpulse::api::minecraft::{Argument, ArgumentValue, Library, VersionType}; use interpulse::api::modded::SidedDataEntry; use interpulse::utils::get_path_from_artifact; +use crate::constants::DUMMY_REPLACE_NEWLINE; use crate::store::{Memory, MinecraftCredentials, Resolution}; use crate::utils::io::IOError; use crate::utils::platform::classpath_separator; -const DUMMY_REPLACE_NEWLINE: &str = "\n"; - #[allow(clippy::too_many_arguments)] pub fn java_arguments( arguments: Option<&[Argument]>, @@ -285,8 +284,8 @@ fn parse_java_argument( .to_string_lossy(), ) .replace("${classpath_seperator}", classpath_separator(java_arch)) - .replace("${launcher_name}", "onelauncher") - .replace("${launcher_version}", env!("CARGO_PKG_VERSION")) + .replace("${launcher_name}", crate::constants::NAME) + .replace("${launcher_version}", crate::constants::VERSION) .replace("${version_name}", version) .replace("${classpath}", classpaths)) } diff --git a/packages/core/src/game/metadata.rs b/packages/core/src/game/metadata.rs index b58f7e57..98428dbc 100644 --- a/packages/core/src/game/metadata.rs +++ b/packages/core/src/game/metadata.rs @@ -290,7 +290,7 @@ pub async fn download_libraries( lib.natives.as_ref()?.get(&Os::native_arch(java_arch))?, lib.downloads.as_ref()?.classifiers.as_ref()? ))) { - let parsed = os_key.replace("${arch}", crate::utils::platform::ARCH_WIDTH); + let parsed = os_key.replace("${arch}", crate::constants::ARCH_WIDTH); if let Some(native) = classifiers.get(&parsed) { let data = fetch(&native.url, Some(&native.sha1), &st.fetch_semaphore).await?; let reader = std::io::Cursor::new(&data); diff --git a/packages/core/src/store/clusters.rs b/packages/core/src/store/clusters.rs index 78499cd2..06a826f7 100644 --- a/packages/core/src/store/clusters.rs +++ b/packages/core/src/store/clusters.rs @@ -10,6 +10,7 @@ use std::collections::HashMap; use std::path::{Path, PathBuf}; use uuid::Uuid; +use crate::constants::CLUSTER_FILE; use crate::proxy::send::{send_cluster, send_message}; use crate::proxy::ClusterPayloadType; use crate::utils::http::{write_icon, IoSemaphore}; @@ -19,9 +20,6 @@ use crate::State; use super::{Directories, InitHooks, Memory, Package, PackageType, Resolution}; -/// The public `cluster.json` file used to store the global [`Clusters`] state. -const CLUSTER_JSON: &str = "cluster.json"; - /// Core Cluster state manager with a [`HashMap`]. pub(crate) struct Clusters(pub HashMap); @@ -712,7 +710,7 @@ impl Clusters { .map(Ok::<_, crate::Error>) .try_for_each_concurrent(None, |(_, cluster)| async move { let json = serde_json::to_vec(&cluster)?; - let json_path = cluster.get_full_path().await?.join(CLUSTER_JSON); + let json_path = cluster.get_full_path().await?.join(CLUSTER_FILE); io::write(&json_path, &json).await?; Ok::<_, crate::Error>(()) }) @@ -723,7 +721,7 @@ impl Clusters { /// read a cluster from a directory async fn from_dir(path: &Path, dirs: &Directories) -> crate::Result { - let json = io::read(&path.join(CLUSTER_JSON)).await?; + let json = io::read(&path.join(CLUSTER_FILE)).await?; let mut cluster = serde_json::from_slice::(&json)?; cluster.path = PathBuf::from( path.strip_prefix(dirs.clusters_dir().await) diff --git a/packages/core/src/store/dirs.rs b/packages/core/src/store/dirs.rs index 4104791a..f9dc5cbf 100644 --- a/packages/core/src/store/dirs.rs +++ b/packages/core/src/store/dirs.rs @@ -5,15 +5,6 @@ use tokio::sync::RwLock; use super::Settings; use crate::constants; -/// The public `settings.json` file used to store the [`Settings`] state. -pub const SETTINGS_FILE: &str = "settings.json"; -/// The constant core caches folder. -pub const CACHES_FOLDER: &str = "caches"; -/// The constant core clusters folder. -pub const CLUSTERS_FOLDER: &str = "clusters"; -/// The constant core metadata folder. -pub const METADATA_FOLDER: &str = "metadata"; - /// Directory management and utilities. #[derive(Debug)] pub struct Directories { @@ -59,7 +50,10 @@ impl Directories { /// Get the `config_dir/metadata` folder within the core config directory. #[inline] pub async fn metadata_dir(&self) -> PathBuf { - self.config_dir.read().await.join(METADATA_FOLDER) + self.config_dir + .read() + .await + .join(constants::METADATA_FOLDER) } /// Get the `config_dir/metadata/libraries` folder for Minecraft libraries. @@ -89,7 +83,7 @@ impl Directories { /// Get the `settings_dir/settings.json` file as a [`PathBuf`]. #[inline] pub fn settings_file(&self) -> PathBuf { - self.settings_dir.join(SETTINGS_FILE) + self.settings_dir.join(constants::SETTINGS_FILE) } /// Get a [`PathBuf`] from a provided environment variable. diff --git a/packages/core/src/store/metadata.rs b/packages/core/src/store/metadata.rs index 4d7e721b..bb8dde6e 100644 --- a/packages/core/src/store/metadata.rs +++ b/packages/core/src/store/metadata.rs @@ -4,15 +4,13 @@ use interpulse::api::minecraft::VersionManifest as MinecraftManifest; use interpulse::api::modded::Manifest as ModdedManifest; use serde::{Deserialize, Serialize}; +use crate::constants::METADATA_API_URL; use crate::utils::http::{fetch, read_json, write, FetchSemaphore, IoSemaphore}; use crate::utils::io::copy; use crate::State; use super::Directories; -/// The metadata url. -const METADATA_URL: &str = "https://meta.polyfrost.org"; - /// A structure of manifests and metadata fetching utilities. #[derive(Serialize, Deserialize, Debug, Clone)] pub struct Metadata { @@ -33,7 +31,7 @@ pub struct Metadata { impl Metadata { /// Get the formatted manifest for a specific [`Metadata`] type. fn get_manifest(name: &str, version: usize) -> String { - format!("{METADATA_URL}/{name}/v{version}/manifest.json") + format!("{METADATA_API_URL}/{name}/v{version}/manifest.json") } /// Fetch all available metadata types that are currently [`None`] and get a new [`Metadata`] structure. diff --git a/packages/core/src/store/minecraft.rs b/packages/core/src/store/minecraft.rs index 64f6801a..2a74aae3 100644 --- a/packages/core/src/store/minecraft.rs +++ b/packages/core/src/store/minecraft.rs @@ -13,9 +13,7 @@ use std::collections::HashMap; use std::fmt::Write; use uuid::Uuid; -use crate::constants::{MINECRAFT_CLIENT_ID, MINECRAFT_REDIRECT_URL, MINECRAFT_SCOPES}; - -const AUTH_STORE: &str = "authentication.json"; +use crate::constants::{AUTH_FILE, MINECRAFT_CLIENT_ID, MINECRAFT_REDIRECT_URL, MINECRAFT_SCOPES}; /// The core state of Microsoft authentication for the launcher #[derive(Serialize, Deserialize, Debug)] @@ -35,7 +33,7 @@ impl MinecraftState { dirs: &super::Directories, io_semaphore: &crate::utils::http::IoSemaphore, ) -> crate::Result { - let path = dirs.caches_dir().await.join(AUTH_STORE); + let path = dirs.caches_dir().await.join(AUTH_FILE); let store = crate::utils::http::read_json(&path, io_semaphore) .await .ok(); @@ -55,7 +53,7 @@ impl MinecraftState { #[tracing::instrument(skip(self))] pub async fn save(&self) -> crate::Result<()> { let state = crate::State::get().await?; - let path = state.directories.caches_dir().await.join(AUTH_STORE); + let path = state.directories.caches_dir().await.join(AUTH_FILE); crate::utils::http::write(&path, &serde_json::to_vec(&self)?, &state.io_semaphore).await?; Ok(()) } diff --git a/packages/core/src/store/processor.rs b/packages/core/src/store/processor.rs index 88be298d..42c8a6bc 100644 --- a/packages/core/src/store/processor.rs +++ b/packages/core/src/store/processor.rs @@ -10,6 +10,7 @@ use tokio::task::JoinHandle; use uuid::Uuid; use crate::api::cluster; +use crate::constants::PROCESSOR_FILE; use crate::proxy::send::send_process; use crate::proxy::ProcessPayloadType; use crate::utils::http::read_json; @@ -18,9 +19,6 @@ use crate::State; use super::{Cluster, ClusterPath}; -/// Global processor cache file. -const PROCESSOR_JSON: &str = "processor.json"; - /// Wrapper over a HashMap of PIDs to ProcessorChildren and unified apis pub struct Processor(HashMap>>); @@ -168,7 +166,7 @@ impl ChildType { post, }; - let path = state.directories.caches_dir().await.join(PROCESSOR_JSON); + let path = state.directories.caches_dir().await.join(PROCESSOR_FILE); let mut caches = if let Ok(proc_json) = read_json::>(&path, &state.io_semaphore).await { @@ -187,8 +185,7 @@ impl ChildType { /// Remove a child from the global store of processes. pub async fn remove(&self, uuid: Uuid) -> crate::Result<()> { let state = crate::State::get().await?; - - let path = state.directories.caches_dir().await.join(PROCESSOR_JSON); + let path = state.directories.caches_dir().await.join(PROCESSOR_FILE); let mut caches = if let Ok(proc_json) = read_json::>(&path, &state.io_semaphore).await { @@ -378,8 +375,7 @@ impl Processor { /// restore processes from the cache. pub async fn restore(&mut self) -> crate::Result<()> { let state = crate::State::get().await?; - let processor_path = state.directories.caches_dir().await.join(PROCESSOR_JSON); - + let processor_path = state.directories.caches_dir().await.join(PROCESSOR_FILE); let mut processor_caches = if let Ok(processes_json) = read_json::>(&processor_path, &state.io_semaphore) .await diff --git a/packages/core/src/store/settings.rs b/packages/core/src/store/settings.rs index fa74ef1c..1af9859a 100644 --- a/packages/core/src/store/settings.rs +++ b/packages/core/src/store/settings.rs @@ -1,14 +1,11 @@ //! Handles user-inputted settings and global values use super::{Directories, JavaVersions}; +use crate::constants::CURRENT_SETTINGS_FORMAT_VERSION; use crate::utils::io; use serde::{Deserialize, Serialize}; use std::path::{Path, PathBuf}; -/// The current [`Settings`] format version, changed for breaking changes. -/// If updated, a config file migration logic **NEEDS** to be implemented. -const CURRENT_FORMAT_VERSION: u32 = 1; - /// A global settings state for the launcher. #[cfg_attr(feature = "tauri", derive(specta::Type))] #[derive(Debug, Serialize, Deserialize, Clone)] @@ -106,7 +103,7 @@ impl Settings { custom_java_args: Vec::new(), max_async_fetches: 10, max_async_io_operations: 10, - version: CURRENT_FORMAT_VERSION, + version: CURRENT_SETTINGS_FORMAT_VERSION, disable_analytics: false, disable_discord: false, debug_mode: false, diff --git a/packages/core/src/utils/http.rs b/packages/core/src/utils/http.rs index c15e9c42..182f303d 100644 --- a/packages/core/src/utils/http.rs +++ b/packages/core/src/utils/http.rs @@ -13,6 +13,7 @@ use tokio::fs::File; use tokio::io::AsyncWriteExt; use tokio::sync::{RwLock, Semaphore}; +use crate::constants::FETCH_ATTEMPTS; use crate::proxy::send::send_ingress; use crate::proxy::IngressId; use crate::utils::io; @@ -31,8 +32,9 @@ lazy_static::lazy_static! { pub static ref REQWEST_CLIENT: reqwest::Client = { let mut headers = reqwest::header::HeaderMap::new(); let header = reqwest::header::HeaderValue::from_str(&format!( - "onelauncher/{} (polyfrost.org)", - env!("CARGO_PKG_VERSION") + "{}/{} (https://polyfrost.org)", + crate::constants::NAME, + crate::constants::VERSION, )).unwrap(); headers.insert(reqwest::header::USER_AGENT, header); reqwest::Client::builder() @@ -43,9 +45,6 @@ lazy_static::lazy_static! { }; } -/// The amount of attempts to fetch a file before the request fails. -const FETCH_ATTEMPTS: usize = 3; - /// Basic HTTP fetch interface. #[tracing::instrument(skip(semaphore))] pub async fn fetch( diff --git a/packages/core/src/utils/io.rs b/packages/core/src/utils/io.rs index 1b232f74..e8fd4ae6 100644 --- a/packages/core/src/utils/io.rs +++ b/packages/core/src/utils/io.rs @@ -1,12 +1,8 @@ //! **IO Utilities** //! -//! Wrapper around [`tokio::io`] for our error system. +//! Async wrapper around [`tokio::fs`] and [`std::io::Error`] for our error system. -use std::fs::File; use std::io::Write; -use std::path::PathBuf; - -use anyhow::anyhow; use tempfile::NamedTempFile; use tokio::task::spawn_blocking; @@ -184,32 +180,3 @@ pub async fn remove_file(path: impl AsRef) -> Result<(), IOErro path: path.to_string_lossy().to_string(), }) } - -/// Extract an archive based on its file extension, supporting ZIP files and GZ files. -pub fn extract_archive(archive: &PathBuf, dest: &PathBuf) -> crate::Result<()> { - let ext = match archive.extension() { - Some(ext) => ext.to_str().unwrap(), - None => return Err(anyhow!("unsupported operating system").into()), - }; - - match ext { - "zip" => Ok(extract_zip(archive, dest)?), - "gz" => Ok(extract_tar_gz(archive, dest)?), - _ => Err(anyhow!("unsupported file extension {:?}", ext).into()), - } -} - -pub fn extract_zip(archive: &PathBuf, dest: &PathBuf) -> Result<(), IOError> { - let file = File::open(archive).map_err(|err| IOError::with_path(err, archive.as_path()))?; - let archive = zip::ZipArchive::new(file).map_err(IOError::from_zip); - archive?.extract(dest).map_err(IOError::from_zip)?; - Ok(()) -} - -pub fn extract_tar_gz(archive: &PathBuf, dest: &PathBuf) -> Result<(), IOError> { - let file = File::open(archive).map_err(IOError::from)?; - let tar_gz = flate2::read::GzDecoder::new(file); - let mut archive = tar::Archive::new(tar_gz); - archive.unpack(dest).map_err(IOError::from)?; - Ok(()) -} diff --git a/packages/core/src/utils/java.rs b/packages/core/src/utils/java.rs index e9d78861..2b21f4b5 100644 --- a/packages/core/src/utils/java.rs +++ b/packages/core/src/utils/java.rs @@ -2,6 +2,7 @@ //! //! Async utilities for managing and downloading Java versions. +use crate::constants::JAVA_BIN; use crate::State; use futures::prelude::*; use serde::{Deserialize, Serialize}; @@ -19,10 +20,12 @@ use winreg::{ use super::io; -/// A struct representing a single version of the Java Runtime Environment -/// Use [`locate_java`] to get an array of all located java instances on the machine -/// paths from https://github.com/PrismLauncher/PrismLauncher/blob/develop/launcher/java/JavaUtils.cpp under GPL 3.0 -/// paths and java_check from https://github.com/modrinth/theseus/blob/master/theseus/src/util/jre.rs under MIT +/// A struct representing a single version of the Java Runtime Environment. +/// Use [`locate_java`] to get an array of all located java instances on the machine. +/// +/// common java paths from https://github.com/PrismLauncher/PrismLauncher/blob/develop/launcher/java/JavaUtils.cpp under GPL 3.0 +/// +/// java check functionality from https://github.com/modrinth/theseus/blob/master/theseus/src/util/jre.rs under MIT #[cfg_attr(feature = "tauri", derive(specta::Type))] #[derive(Debug, PartialEq, Eq, Hash, Serialize, Deserialize, Clone)] pub struct JavaVersion { @@ -31,7 +34,8 @@ pub struct JavaVersion { pub path: String, } -/// JVM Entrypoint (WINDOWS ONLY) +/// Java entrypoint: Returns all possibly existing java paths on a Linux machine and validates them, +/// returning a [`Vec`] with all valid java installations, their paths, and associated metadata. #[cfg(target_os = "windows")] #[tracing::instrument] pub async fn locate_java() -> Result, JavaError> { @@ -42,7 +46,6 @@ pub async fn locate_java() -> Result, JavaError> { paths.insert(PathBuf::from(java_home)); } - // i hate windows.com let common_java_paths = [ r"C:/Program Files/Java", r"C:\Program Files\Eclipse Adoptium", @@ -76,7 +79,7 @@ pub async fn locate_java() -> Result, JavaError> { r"SOFTWARE\\BellSoft\\Liberica", ]; - for key in key_paths { + for key in common_key_paths { if let Ok(java_key) = RegKey::predef(HKEY_LOCAL_MACHINE) .open_subkey_with_flags(key, KEY_READ | KEY_WOW64_32KEY) { @@ -91,9 +94,10 @@ pub async fn locate_java() -> Result, JavaError> { let java = check_java(paths).await.into_iter().collect(); - Ok(java); + Ok(java) } +/// Locates possibly existing java paths on Windows from Registry keys, returning as a [`HashSet`] #[cfg(target_os = "windows")] #[tracing::instrument] pub fn get_java_paths_from_windows(java_key: RegKey) -> HashSet { @@ -113,7 +117,8 @@ pub fn get_java_paths_from_windows(java_key: RegKey) -> HashSet { paths } -/// JVM Entrypoint (MacOS ONLY) +/// Java entrypoint: Returns all possibly existing java paths on a macOS machine and validates them, +/// returning a [`Vec`] with all valid java installations, their paths, and associated metadata. #[cfg(target_os = "macos")] #[tracing::instrument] pub async fn locate_java() -> Result, JavaError> { @@ -144,7 +149,8 @@ pub async fn locate_java() -> Result, JavaError> { Ok(java) } -/// JVM Entrypoint (LINUX ONLY) +/// Java entrypoint: Returns all possibly existing java paths on a Linux machine and validates them, +/// returning a [`Vec`] with all valid java installations, their paths, and associated metadata. #[cfg(target_os = "linux")] #[tracing::instrument] pub async fn locate_java() -> Result, JavaError> { @@ -181,7 +187,7 @@ pub async fn locate_java() -> Result, JavaError> { Ok(java) } -/// Locate JRE's auto-installed by the launcher instance. +/// Locate Java paths automatically added by the launcher instance. #[tracing::instrument] #[onelauncher_macros::memory] async fn locate_installed_java() -> Result, JavaError> { @@ -213,20 +219,16 @@ async fn locate_installed_java() -> Result, JavaError> { .await } -/// Locate all installed Java instances from the PATH env variable cross-device. +/// Locates all installed Java instances from the `PATH` env variable, returning a +/// [`HashSet`] containing all paths in the `PATH` variable to be sorted into java versions. #[tracing::instrument] async fn locate_java_path() -> HashSet { let paths = env::var("PATH").map(|p| env::split_paths(&p).collect::>()); paths.unwrap_or_else(|_| HashSet::new()) } -#[cfg(target_os = "windows")] -pub const JAVA_BIN: &str = "javaw.exe"; - -#[cfg(not(target_os = "windows"))] -pub const JAVA_BIN: &str = "java"; - -/// Verifies that each Java instance is valid from a HashSet of PathBufs +/// Verifies that each Java instance is valid from a [`HashSet`], returning a +/// [`HashSet`] for each validated path containing the installation's metadata. #[tracing::instrument] pub async fn check_java(paths: HashSet) -> HashSet { let java_instances = stream::iter(paths.into_iter()) @@ -242,7 +244,8 @@ pub async fn check_java(paths: HashSet) -> HashSet { .collect() } -/// Verifies that a java instance [`Path`] is valid. +/// Verifies that a java instance [`Path`] is valid, returning a [`JavaVersion`] if the java path +/// is valid, containing the installation's metadata. /// java_check from https://github.com/modrinth/theseus/blob/master/theseus/library/JavaInfo.class under MIT #[tracing::instrument] #[onelauncher_macros::memory] @@ -311,7 +314,9 @@ pub async fn check_java_instance(path: &Path) -> Option { None } -/// Get a formatted java version. +/// Get a formatted java version as `(major: u32, minor: u32)`. +/// +/// This means 1.8 becomes `(1, 8)`, and 21.0.3 becomes `(21, 0)`. pub fn get_java_version(version: &str) -> Result<(u32, u32), JavaError> { let mut split = version.split('.'); let major_opt = split.next(); diff --git a/packages/core/src/utils/mod.rs b/packages/core/src/utils/mod.rs index 143e3b16..26a624e0 100644 --- a/packages/core/src/utils/mod.rs +++ b/packages/core/src/utils/mod.rs @@ -2,12 +2,11 @@ pub mod http; pub mod io; pub mod java; -pub mod pkg; pub mod platform; pub mod watcher; -/// mutable reference gets epically owned by free thinking macro!!!! (not clickbait) -/// im going insane insane insane insane insane insane +/// mutable reference gets epically owned by free thinking macro!!!!! (not clickbait) +/// im going insane insane insane insane insane insane insane insane insane macro_rules! ref_owned { ($id:ident = $init:expr => $transform:block) => {{ let mut it = $init; diff --git a/packages/core/src/utils/pkg.rs b/packages/core/src/utils/pkg.rs deleted file mode 100644 index 8b137891..00000000 --- a/packages/core/src/utils/pkg.rs +++ /dev/null @@ -1 +0,0 @@ - diff --git a/packages/core/src/utils/platform.rs b/packages/core/src/utils/platform.rs index 1f79264d..2c253ab7 100644 --- a/packages/core/src/utils/platform.rs +++ b/packages/core/src/utils/platform.rs @@ -5,11 +5,13 @@ use interpulse::api::minecraft::{Os, OsRule}; use regex::Regex; +// todo: add this to interpulse (maybe, generally we keep it unimplemented but these are pretty basic functions). + pub trait OsExt { - /// Get the OS of the current system + /// Get the [`Os`] of the current system fn native() -> Self; - /// Gets the OS + Arch of the current system + /// Get the [`Os`] of the current system along with it's arch from the `java_arch`. fn native_arch(java_arch: &str) -> Self; } @@ -50,13 +52,6 @@ impl OsExt for Os { } } -// Bit width -#[cfg(target_pointer_width = "64")] -pub const ARCH_WIDTH: &str = "64"; - -#[cfg(target_pointer_width = "32")] -pub const ARCH_WIDTH: &str = "32"; - // Platform rule handling pub fn os_rule(rule: &OsRule, java_arch: &str, updated: bool) -> bool { let mut rule_match = true; diff --git a/packages/core/src/utils/watcher.rs b/packages/core/src/utils/watcher.rs index fe06389d..0a284596 100644 --- a/packages/core/src/utils/watcher.rs +++ b/packages/core/src/utils/watcher.rs @@ -11,9 +11,6 @@ use futures::{SinkExt, StreamExt}; use notify::RecommendedWatcher; use notify_debouncer_mini::{new_debouncer, DebounceEventResult, Debouncer}; -pub const CLUSTERS_PATH: &str = "clusters"; -pub const CRASH_PATH: &str = "crash-reports"; - pub async fn initialize_watcher() -> crate::Result> { let (mut sender, mut rscv) = channel(1); let watcher = new_debouncer( @@ -56,7 +53,9 @@ pub async fn initialize_watcher() -> crate::Result formatted.file_name().unwrap_or_default(), )); - if a.path.components().any(|c| c.as_os_str() == CRASH_PATH) + if a.path + .components() + .any(|c| c.as_os_str() == crate::constants::CRASH_PATH) && a.path.extension().map(|e| e == "txt").unwrap_or(false) { Cluster::handle_crash(cluster_path); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cf029991..5c30580f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,7 +10,7 @@ importers: devDependencies: '@flowr/eslint-config': specifier: ^3.10.1 - version: 3.10.1(@unocss/eslint-plugin@0.61.5(eslint@9.7.0)(typescript@5.5.4))(eslint-plugin-solid@0.14.1(eslint@9.7.0)(typescript@5.5.4))(eslint-plugin-vue@9.27.0(eslint@9.7.0))(eslint-processor-vue-blocks@0.1.2(eslint@9.7.0))(eslint@9.7.0)(typescript@5.5.4)(vitest@2.0.4(@types/node@20.14.12)(@vitest/ui@2.0.4)(jsdom@24.1.1)(sass@1.77.8))(vue-eslint-parser@9.4.3(eslint@9.7.0)) + version: 3.10.1(@unocss/eslint-plugin@0.61.6(eslint@9.8.0)(typescript@5.5.4))(eslint-plugin-solid@0.14.1(eslint@9.8.0)(typescript@5.5.4))(eslint-plugin-vue@9.27.0(eslint@9.8.0))(eslint-processor-vue-blocks@0.1.2(eslint@9.8.0))(eslint@9.8.0)(typescript@5.5.4)(vitest@2.0.4(@types/node@20.14.12)(@vitest/ui@2.0.4)(jsdom@24.1.1)(sass@1.77.8))(vue-eslint-parser@9.4.3(eslint@9.8.0)) '@types/node': specifier: ^20.14.12 version: 20.14.12 @@ -21,11 +21,11 @@ importers: specifier: ^9.4.1 version: 9.4.1 eslint: - specifier: ^9.7.0 - version: 9.7.0 + specifier: ^9.8.0 + version: 9.8.0 eslint-plugin-solid: specifier: ^0.14.1 - version: 0.14.1(eslint@9.7.0)(typescript@5.5.4) + version: 0.14.1(eslint@9.8.0)(typescript@5.5.4) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@20.14.12)(typescript@5.5.4) @@ -77,7 +77,7 @@ importers: version: 0.2.3 '@rspc/solid-query': specifier: ^0.2.3 - version: 0.2.3(@tanstack/solid-query@5.51.9(solid-js@1.8.19))(solid-js@1.8.19) + version: 0.2.3(@tanstack/solid-query@5.51.15(solid-js@1.8.19))(solid-js@1.8.19) '@rspc/tauri': specifier: ^0.2.0 version: 0.2.0(@tauri-apps/api@2.0.0-beta.15) @@ -88,8 +88,8 @@ importers: specifier: ^0.14.1 version: 0.14.1(solid-js@1.8.19) '@tanstack/solid-query': - specifier: ^5.51.9 - version: 5.51.9(solid-js@1.8.19) + specifier: ^5.51.15 + version: 5.51.15(solid-js@1.8.19) '@tauri-apps/api': specifier: ^2.0.0-beta.13 version: 2.0.0-beta.15 @@ -106,8 +106,8 @@ importers: specifier: ^0.15.0 version: 0.15.0(solid-js@1.8.19) '@unocss/reset': - specifier: ^0.61.5 - version: 0.61.5 + specifier: ^0.61.6 + version: 0.61.6 '@untitled-theme/icons-solid': specifier: ^0.10.5 version: 0.10.5(solid-js@1.8.19) @@ -146,8 +146,8 @@ importers: specifier: ^1.77.8 version: 1.77.8 unocss: - specifier: ^0.61.5 - version: 0.61.5(postcss@8.4.40)(rollup@4.19.0)(vite@5.3.5(@types/node@20.14.12)(sass@1.77.8)) + specifier: ^0.61.6 + version: 0.61.6(postcss@8.4.40)(rollup@4.19.1)(vite@5.3.5(@types/node@20.14.12)(sass@1.77.8)) vite-plugin-solid: specifier: ^2.10.2 version: 2.10.2(@testing-library/jest-dom@6.4.8)(solid-js@1.8.19)(vite@5.3.5(@types/node@20.14.12)(sass@1.77.8)) @@ -167,7 +167,7 @@ importers: version: 0.2.3 '@rspc/solid-query': specifier: ^0.2.3 - version: 0.2.3(@tanstack/solid-query@5.51.9(solid-js@1.8.19))(solid-js@1.8.19) + version: 0.2.3(@tanstack/solid-query@5.51.15(solid-js@1.8.19))(solid-js@1.8.19) '@rspc/tauri': specifier: ^0.2.0 version: 0.2.0(@tauri-apps/api@2.0.0-beta.15) @@ -175,8 +175,8 @@ importers: specifier: ^0.2.9 version: 0.2.9(solid-js@1.8.19) '@tanstack/solid-query': - specifier: ^5.51.9 - version: 5.51.9(solid-js@1.8.19) + specifier: ^5.51.15 + version: 5.51.15(solid-js@1.8.19) fast-equals: specifier: ^5.0.1 version: 5.0.1 @@ -253,6 +253,10 @@ packages: resolution: {integrity: sha512-o9HBZL1G2129luEUlG1hB4N/nlYNWHnpwlND9eOMclRqqu1YDy2sSYVCFUZwl8I1Gxh+QSRrP2vD7EpUmFVXxg==} engines: {node: '>=6.9.0'} + '@babel/generator@7.25.0': + resolution: {integrity: sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==} + engines: {node: '>=6.9.0'} + '@babel/helper-annotate-as-pure@7.24.7': resolution: {integrity: sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==} engines: {node: '>=6.9.0'} @@ -261,8 +265,8 @@ packages: resolution: {integrity: sha512-oU+UoqCHdp+nWVDkpldqIQL/i/bvAv53tRqLG/s+cOXxe66zOYLU7ar/Xs3LdmBihrUMEUhwu6dMZwbNOYDwvw==} engines: {node: '>=6.9.0'} - '@babel/helper-create-class-features-plugin@7.24.8': - resolution: {integrity: sha512-4f6Oqnmyp2PP3olgUMmOwC3akxSm5aBYraQ6YDdKy7NcAMkDECHWG0DEnV6M2UAkERgIBhYt8S27rURPg7SxWA==} + '@babel/helper-create-class-features-plugin@7.25.0': + resolution: {integrity: sha512-GYM6BxeQsETc9mnct+nIIpf63SAyzvyYN7UB/IlTyd+MBg06afFGp0mIeUqGyWgS2mxad6vqbMrHVlaL3m70sQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -297,6 +301,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0 + '@babel/helper-module-transforms@7.25.0': + resolution: {integrity: sha512-bIkOa2ZJYn7FHnepzr5iX9Kmz8FjIz4UKzJ9zhX3dnYuVW0xul9RuR3skBfoLu+FPTQw90EHW9rJsSZhyLQ3fQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/helper-optimise-call-expression@7.24.7': resolution: {integrity: sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==} engines: {node: '>=6.9.0'} @@ -305,8 +315,8 @@ packages: resolution: {integrity: sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==} engines: {node: '>=6.9.0'} - '@babel/helper-replace-supers@7.24.7': - resolution: {integrity: sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg==} + '@babel/helper-replace-supers@7.25.0': + resolution: {integrity: sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -348,6 +358,11 @@ packages: engines: {node: '>=6.0.0'} hasBin: true + '@babel/parser@7.25.0': + resolution: {integrity: sha512-CzdIU9jdP0dg7HdyB+bHvDJGagUv+qtzZt5rYCWwW6tITNqV9odjp6Qu41gkG0ca5UfdDUWrKkiAnHHdGRnOrA==} + engines: {node: '>=6.0.0'} + hasBin: true + '@babel/plugin-syntax-jsx@7.24.7': resolution: {integrity: sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==} engines: {node: '>=6.9.0'} @@ -366,8 +381,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-typescript@7.24.8': - resolution: {integrity: sha512-CgFgtN61BbdOGCP4fLaAMOPkzWUh6yQZNMr5YSt8uz2cZSSiQONCQFWqsE4NeVfOIhqDOlS9CR3WD91FzMeB2Q==} + '@babel/plugin-transform-typescript@7.25.0': + resolution: {integrity: sha512-LZicxFzHIw+Sa3pzgMgSz6gdpsdkfiMObHUzhSIrwKF0+/rP/nuR49u79pSS+zIFJ1FeGeqQD2Dq4QGFbOVvSw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -386,14 +401,26 @@ packages: resolution: {integrity: sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==} engines: {node: '>=6.9.0'} + '@babel/template@7.25.0': + resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} + engines: {node: '>=6.9.0'} + '@babel/traverse@7.24.8': resolution: {integrity: sha512-t0P1xxAPzEDcEPmjprAQq19NWum4K0EQPjMwZQZbHt+GiZqvjCHjj755Weq1YRPVzBI+3zSfvScfpnuIecVFJQ==} engines: {node: '>=6.9.0'} + '@babel/traverse@7.25.0': + resolution: {integrity: sha512-ubALThHQy4GCf6mbb+5ZRNmLLCI7bJ3f8Q6LHBSRlSKSWj5a7dSUzJBLv3VuIhFrFPgjF4IzPF567YG/HSCdZA==} + engines: {node: '>=6.9.0'} + '@babel/types@7.24.9': resolution: {integrity: sha512-xm8XrMKz0IlUdocVbYJe0Z9xEgidU7msskG8BbhnTPK/HZ2z/7FP7ykqPgrUH+C+r414mNfNWam1f2vqOjqjYQ==} engines: {node: '>=6.9.0'} + '@babel/types@7.25.0': + resolution: {integrity: sha512-LcnxQSsd9aXOIgmmSpvZ/1yo46ra2ESYyqLcryaBZOghxy5qqOBjvCWP5JfkI8yl9rlxRgdLTTMCQQRcN2hdCg==} + engines: {node: '>=6.9.0'} + '@clack/core@0.3.4': resolution: {integrity: sha512-H4hxZDXgHtWTwV3RAVenqcC4VbJZNegbBjlPvzOzCouXtS2y3sDvlO3IsbrPNWuLWPPlYVYPghQdSF64683Ldw==} @@ -568,16 +595,16 @@ packages: resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/config-array@0.17.0': - resolution: {integrity: sha512-A68TBu6/1mHHuc5YJL0U0VVeGNiklLAL6rRmhTCP2B5XjWLMnrX+HkO+IAXyHvks5cyyY1jjK5ITPQ1HGS2EVA==} + '@eslint/config-array@0.17.1': + resolution: {integrity: sha512-BlYOpej8AQ8Ev9xVqroV7a02JK3SkBAaN9GfMMH9W6Ch8FlQlkjGw4Ir7+FgYwfirivAf4t+GtzuAxqfukmISA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/eslintrc@3.1.0': resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.7.0': - resolution: {integrity: sha512-ChuWDQenef8OSFnvuxv0TCVxEwmu3+hPNKvM9B34qpM0rDRbjL8t5QkQeHHeAfsKQjuH9wS82WeCi1J/owatng==} + '@eslint/js@9.8.0': + resolution: {integrity: sha512-MfluB7EUfxXtv3i/++oh89uzAr4PDI4nn201hsp+qaXqsjAWzinlZEHEfPgAX4doIlKvPG/i0A9dpKxOLII8yA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.4': @@ -736,81 +763,161 @@ packages: cpu: [arm] os: [android] + '@rollup/rollup-android-arm-eabi@4.19.1': + resolution: {integrity: sha512-XzqSg714++M+FXhHfXpS1tDnNZNpgxxuGZWlRG/jSj+VEPmZ0yg6jV4E0AL3uyBKxO8mO3xtOsP5mQ+XLfrlww==} + cpu: [arm] + os: [android] + '@rollup/rollup-android-arm64@4.19.0': resolution: {integrity: sha512-RDxUSY8D1tWYfn00DDi5myxKgOk6RvWPxhmWexcICt/MEC6yEMr4HNCu1sXXYLw8iAsg0D44NuU+qNq7zVWCrw==} cpu: [arm64] os: [android] + '@rollup/rollup-android-arm64@4.19.1': + resolution: {integrity: sha512-thFUbkHteM20BGShD6P08aungq4irbIZKUNbG70LN8RkO7YztcGPiKTTGZS7Kw+x5h8hOXs0i4OaHwFxlpQN6A==} + cpu: [arm64] + os: [android] + '@rollup/rollup-darwin-arm64@4.19.0': resolution: {integrity: sha512-emvKHL4B15x6nlNTBMtIaC9tLPRpeA5jMvRLXVbl/W9Ie7HhkrE7KQjvgS9uxgatL1HmHWDXk5TTS4IaNJxbAA==} cpu: [arm64] os: [darwin] + '@rollup/rollup-darwin-arm64@4.19.1': + resolution: {integrity: sha512-8o6eqeFZzVLia2hKPUZk4jdE3zW7LCcZr+MD18tXkgBBid3lssGVAYuox8x6YHoEPDdDa9ixTaStcmx88lio5Q==} + cpu: [arm64] + os: [darwin] + '@rollup/rollup-darwin-x64@4.19.0': resolution: {integrity: sha512-fO28cWA1dC57qCd+D0rfLC4VPbh6EOJXrreBmFLWPGI9dpMlER2YwSPZzSGfq11XgcEpPukPTfEVFtw2q2nYJg==} cpu: [x64] os: [darwin] + '@rollup/rollup-darwin-x64@4.19.1': + resolution: {integrity: sha512-4T42heKsnbjkn7ovYiAdDVRRWZLU9Kmhdt6HafZxFcUdpjlBlxj4wDrt1yFWLk7G4+E+8p2C9tcmSu0KA6auGA==} + cpu: [x64] + os: [darwin] + '@rollup/rollup-linux-arm-gnueabihf@4.19.0': resolution: {integrity: sha512-2Rn36Ubxdv32NUcfm0wB1tgKqkQuft00PtM23VqLuCUR4N5jcNWDoV5iBC9jeGdgS38WK66ElncprqgMUOyomw==} cpu: [arm] os: [linux] + '@rollup/rollup-linux-arm-gnueabihf@4.19.1': + resolution: {integrity: sha512-MXg1xp+e5GhZ3Vit1gGEyoC+dyQUBy2JgVQ+3hUrD9wZMkUw/ywgkpK7oZgnB6kPpGrxJ41clkPPnsknuD6M2Q==} + cpu: [arm] + os: [linux] + '@rollup/rollup-linux-arm-musleabihf@4.19.0': resolution: {integrity: sha512-gJuzIVdq/X1ZA2bHeCGCISe0VWqCoNT8BvkQ+BfsixXwTOndhtLUpOg0A1Fcx/+eA6ei6rMBzlOz4JzmiDw7JQ==} cpu: [arm] os: [linux] + '@rollup/rollup-linux-arm-musleabihf@4.19.1': + resolution: {integrity: sha512-DZNLwIY4ftPSRVkJEaxYkq7u2zel7aah57HESuNkUnz+3bZHxwkCUkrfS2IWC1sxK6F2QNIR0Qr/YXw7nkF3Pw==} + cpu: [arm] + os: [linux] + '@rollup/rollup-linux-arm64-gnu@4.19.0': resolution: {integrity: sha512-0EkX2HYPkSADo9cfeGFoQ7R0/wTKb7q6DdwI4Yn/ULFE1wuRRCHybxpl2goQrx4c/yzK3I8OlgtBu4xvted0ug==} cpu: [arm64] os: [linux] + '@rollup/rollup-linux-arm64-gnu@4.19.1': + resolution: {integrity: sha512-C7evongnjyxdngSDRRSQv5GvyfISizgtk9RM+z2biV5kY6S/NF/wta7K+DanmktC5DkuaJQgoKGf7KUDmA7RUw==} + cpu: [arm64] + os: [linux] + '@rollup/rollup-linux-arm64-musl@4.19.0': resolution: {integrity: sha512-GlIQRj9px52ISomIOEUq/IojLZqzkvRpdP3cLgIE1wUWaiU5Takwlzpz002q0Nxxr1y2ZgxC2obWxjr13lvxNQ==} cpu: [arm64] os: [linux] + '@rollup/rollup-linux-arm64-musl@4.19.1': + resolution: {integrity: sha512-89tFWqxfxLLHkAthAcrTs9etAoBFRduNfWdl2xUs/yLV+7XDrJ5yuXMHptNqf1Zw0UCA3cAutkAiAokYCkaPtw==} + cpu: [arm64] + os: [linux] + '@rollup/rollup-linux-powerpc64le-gnu@4.19.0': resolution: {integrity: sha512-N6cFJzssruDLUOKfEKeovCKiHcdwVYOT1Hs6dovDQ61+Y9n3Ek4zXvtghPPelt6U0AH4aDGnDLb83uiJMkWYzQ==} cpu: [ppc64] os: [linux] + '@rollup/rollup-linux-powerpc64le-gnu@4.19.1': + resolution: {integrity: sha512-PromGeV50sq+YfaisG8W3fd+Cl6mnOOiNv2qKKqKCpiiEke2KiKVyDqG/Mb9GWKbYMHj5a01fq/qlUR28PFhCQ==} + cpu: [ppc64] + os: [linux] + '@rollup/rollup-linux-riscv64-gnu@4.19.0': resolution: {integrity: sha512-2DnD3mkS2uuam/alF+I7M84koGwvn3ZVD7uG+LEWpyzo/bq8+kKnus2EVCkcvh6PlNB8QPNFOz6fWd5N8o1CYg==} cpu: [riscv64] os: [linux] + '@rollup/rollup-linux-riscv64-gnu@4.19.1': + resolution: {integrity: sha512-/1BmHYh+iz0cNCP0oHCuF8CSiNj0JOGf0jRlSo3L/FAyZyG2rGBuKpkZVH9YF+x58r1jgWxvm1aRg3DHrLDt6A==} + cpu: [riscv64] + os: [linux] + '@rollup/rollup-linux-s390x-gnu@4.19.0': resolution: {integrity: sha512-D6pkaF7OpE7lzlTOFCB2m3Ngzu2ykw40Nka9WmKGUOTS3xcIieHe82slQlNq69sVB04ch73thKYIWz/Ian8DUA==} cpu: [s390x] os: [linux] + '@rollup/rollup-linux-s390x-gnu@4.19.1': + resolution: {integrity: sha512-0cYP5rGkQWRZKy9/HtsWVStLXzCF3cCBTRI+qRL8Z+wkYlqN7zrSYm6FuY5Kd5ysS5aH0q5lVgb/WbG4jqXN1Q==} + cpu: [s390x] + os: [linux] + '@rollup/rollup-linux-x64-gnu@4.19.0': resolution: {integrity: sha512-HBndjQLP8OsdJNSxpNIN0einbDmRFg9+UQeZV1eiYupIRuZsDEoeGU43NQsS34Pp166DtwQOnpcbV/zQxM+rWA==} cpu: [x64] os: [linux] + '@rollup/rollup-linux-x64-gnu@4.19.1': + resolution: {integrity: sha512-XUXeI9eM8rMP8aGvii/aOOiMvTs7xlCosq9xCjcqI9+5hBxtjDpD+7Abm1ZhVIFE1J2h2VIg0t2DX/gjespC2Q==} + cpu: [x64] + os: [linux] + '@rollup/rollup-linux-x64-musl@4.19.0': resolution: {integrity: sha512-HxfbvfCKJe/RMYJJn0a12eiOI9OOtAUF4G6ozrFUK95BNyoJaSiBjIOHjZskTUffUrB84IPKkFG9H9nEvJGW6A==} cpu: [x64] os: [linux] + '@rollup/rollup-linux-x64-musl@4.19.1': + resolution: {integrity: sha512-V7cBw/cKXMfEVhpSvVZhC+iGifD6U1zJ4tbibjjN+Xi3blSXaj/rJynAkCFFQfoG6VZrAiP7uGVzL440Q6Me2Q==} + cpu: [x64] + os: [linux] + '@rollup/rollup-win32-arm64-msvc@4.19.0': resolution: {integrity: sha512-HxDMKIhmcguGTiP5TsLNolwBUK3nGGUEoV/BO9ldUBoMLBssvh4J0X8pf11i1fTV7WShWItB1bKAKjX4RQeYmg==} cpu: [arm64] os: [win32] + '@rollup/rollup-win32-arm64-msvc@4.19.1': + resolution: {integrity: sha512-88brja2vldW/76jWATlBqHEoGjJLRnP0WOEKAUbMcXaAZnemNhlAHSyj4jIwMoP2T750LE9lblvD4e2jXleZsA==} + cpu: [arm64] + os: [win32] + '@rollup/rollup-win32-ia32-msvc@4.19.0': resolution: {integrity: sha512-xItlIAZZaiG/u0wooGzRsx11rokP4qyc/79LkAOdznGRAbOFc+SfEdfUOszG1odsHNgwippUJavag/+W/Etc6Q==} cpu: [ia32] os: [win32] + '@rollup/rollup-win32-ia32-msvc@4.19.1': + resolution: {integrity: sha512-LdxxcqRVSXi6k6JUrTah1rHuaupoeuiv38du8Mt4r4IPer3kwlTo+RuvfE8KzZ/tL6BhaPlzJ3835i6CxrFIRQ==} + cpu: [ia32] + os: [win32] + '@rollup/rollup-win32-x64-msvc@4.19.0': resolution: {integrity: sha512-xNo5fV5ycvCCKqiZcpB65VMR11NJB+StnxHz20jdqRAktfdfzhgjTiJ2doTDQE/7dqGaV5I7ZGqKpgph6lCIag==} cpu: [x64] os: [win32] + '@rollup/rollup-win32-x64-msvc@4.19.1': + resolution: {integrity: sha512-2bIrL28PcK3YCqD9anGxDxamxdiJAxA+l7fWIwM5o8UqNy1t3d1NdAweO2XhA0KTDJ5aH1FsuiT5+7VhtHliXg==} + cpu: [x64] + os: [win32] + '@rspc/client@0.2.0': resolution: {integrity: sha512-IIOfAk4g+bzbfr3cmvm42EocsjtzMO9CRCc95ZMx9mFh5ixHzP4Na1lun+KipGzsFV1QsmV6uYSBg/4Kpnu9iA==} @@ -917,11 +1024,11 @@ packages: '@tanstack/query-core@5.51.1': resolution: {integrity: sha512-fJBMQMpo8/KSsWW5ratJR5+IFr7YNJ3K2kfP9l5XObYHsgfVy1w3FJUWU4FT2fj7+JMaEg33zOcNDBo0LMwHnw==} - '@tanstack/query-core@5.51.9': - resolution: {integrity: sha512-HsAwaY5J19MD18ykZDS3aVVh+bAt0i7m6uQlFC2b77DLV9djo+xEN7MWQAQQTR8IM+7r/zbozTQ7P0xr0bHuew==} + '@tanstack/query-core@5.51.15': + resolution: {integrity: sha512-xyobHDJ0yhPE3+UkSQ2/4X1fLSg7ICJI5J1JyU9yf7F3deQfEwSImCDrB1WSRrauJkMtXW7YIEcC0oA6ZZWt5A==} - '@tanstack/solid-query@5.51.9': - resolution: {integrity: sha512-1HAuqPfrXyXXWZ8ZmgJ7vIP+Px3ri96EAwNyWiHuMcTwgHzlwz+XiopKiQpuXlI009cTBbeituF+pbZYEYNkhA==} + '@tanstack/solid-query@5.51.15': + resolution: {integrity: sha512-+o1D6InXDESoHW+PUaSe7cL4APdUIYpD757DJGwsuTVjjbbaOa+fw3N+A/e3Juz7QjsHCc/YWKlYtEV0B7MXKQ==} peerDependencies: solid-js: ^1.6.0 @@ -1224,93 +1331,93 @@ packages: resolution: {integrity: sha512-lS8wrI6Vxw6ebIi+ehocAjXLG43bN5JCC8+wtGDD3Xw9O/EVpanAVdftefJs/mlK87eyccvVIiiHgD294TpIEQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@unocss/astro@0.61.5': - resolution: {integrity: sha512-keyh6/EsPMBEiLguaOsh47UcMkWCGT0rW3KV5aYRUfYXlgccSzDd4SLmTNsdlGXIso2XCl/14BJQuwjP0UEU0Q==} + '@unocss/astro@0.61.6': + resolution: {integrity: sha512-uM41sh54eKtjbBIEK7NcQHEcs8p520/5p1K5kmKcc7mEyXWLVk0jbaJE7bKGhB32xa0F4uwmbpNB5GS834a5XA==} peerDependencies: vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 peerDependenciesMeta: vite: optional: true - '@unocss/cli@0.61.5': - resolution: {integrity: sha512-Y5mKSoQGEYRmjUi5Tia3EesQbLgQTTPGmeE7LFrbeyP1c7PDiW3wSR5fRNZ7PBrr6/C5oo2sId3MhWJQl3tFSA==} + '@unocss/cli@0.61.6': + resolution: {integrity: sha512-BPMk6Z0T1Qt1l3VK4SUTpyBmpVYOYhGefHJh8zQvuqynlD/NOvTyU8gW1SqPGC4Xvl3G+Tp66ODaqysj0ApLyw==} engines: {node: '>=14'} hasBin: true - '@unocss/config@0.61.5': - resolution: {integrity: sha512-VIIln/1aD9cqU95+3IVZG9U1yO7Ys6RqyqtgD5pIJ77rg57v/2sey+S2ScFx3KB24Bal3FxAgHA5CdjFpQZldA==} + '@unocss/config@0.61.6': + resolution: {integrity: sha512-uUJj+ObvH1y2CqJ6KK+g9YkZ+insN8jk3xFha2nKOq3hCmUs8F6B06buWn3Nquin5HYP5Y416GaEJtQT4H0wgQ==} engines: {node: '>=14'} - '@unocss/core@0.61.5': - resolution: {integrity: sha512-hB8zr2rnrCzz9x8ho2SAXQiYTEjwAPMiBzpaEe2C0+CFWeL1179h9508YVyZHHAzMyZILIG9YrVAWrrMdt2/Xg==} + '@unocss/core@0.61.6': + resolution: {integrity: sha512-z1O1fnMRvmX1zkvbKVZ7jKUOHZHw/tUBYDNpll1rx9wjmps/MHfv7K5C5FiOTaW9S9H5r2LSjW/MaMs0dxgoCw==} - '@unocss/eslint-plugin@0.61.5': - resolution: {integrity: sha512-t/TKX3C8i2EIHRj9R7jZVEbU+tB4KShSMVAW90fUuttN3KaqujoctEyYpOYD7c5XxSelnFUspTljiH604BGyCg==} + '@unocss/eslint-plugin@0.61.6': + resolution: {integrity: sha512-vLAAOMB1s5PyBse3jbCExmg40p0kDSa5vPP0MGVyre8IAVC9qUa9ASxWaRxUU0jQYyQbEpx7iiF3KeEt2QBpQA==} engines: {node: '>=14'} - '@unocss/extractor-arbitrary-variants@0.61.5': - resolution: {integrity: sha512-UB1EweAaJrUxv+h3n5FqoizKHrnUgUzkdmOdJTfV6xvow90ITqbUoza+L6iVMNfcrcXTx8QpDnWh6rhLRyKY+g==} + '@unocss/extractor-arbitrary-variants@0.61.6': + resolution: {integrity: sha512-QLq4XBaQZsB7ONi3JLZwFtBLLSrZHTr1UhkqDumIhYL2tQx+xP2F88JdKXgnArolnX4QC7xFwUZ++8D8zaIAhw==} - '@unocss/inspector@0.61.5': - resolution: {integrity: sha512-DIT+hgTphHXZTJEe4ZWUoYoQUNszmVJr06+gGhBkKwpdetQa6B2N+zGLkAxgAvo/BUmk29tOORIBu7AyoloRUA==} + '@unocss/inspector@0.61.6': + resolution: {integrity: sha512-ACU6ejgd3N1+UGSd4a0f1qDkH5puuwFOArb5pYgWiDSy0tISJXd7kdTBzYZysGfGPFsMvvMDVdHceKLNIwJWqA==} - '@unocss/postcss@0.61.5': - resolution: {integrity: sha512-FbN9G3v5X6TEzBRytnFvqOr1oeeUv1ZzprBIyXnQFg17D8rx7uRS9kAfUMoSiqAqnFxkJObv43fH+W3E41+JYQ==} + '@unocss/postcss@0.61.6': + resolution: {integrity: sha512-h7mFbmfNpTLGh6yEuVvhAEe3jXHPIEC6TgtIKRJRcFS0rA8+MLtroEucaKSwqVsQlKXG6caA8Ep1j/hwNtIWcQ==} engines: {node: '>=14'} peerDependencies: postcss: ^8.4.21 - '@unocss/preset-attributify@0.61.5': - resolution: {integrity: sha512-D2KDHPj8Qvp0hafA4JT5GXebO49gHsuKT6QvzwBpP9wzwAefAkd6PIY8cSKqSD6sjjVSfOpCfbZIzbwLEbXV5w==} + '@unocss/preset-attributify@0.61.6': + resolution: {integrity: sha512-kH7UrCgh3tw7sDyCHDcAYjy5GEJXXlZ2C8dnyHuSEuKZViFPE6HukonwvyK70hi9nJIPJ1sqDo1XLmUexGRfOQ==} - '@unocss/preset-icons@0.61.5': - resolution: {integrity: sha512-Fx1WZz6A7wtUDU+mt6KdjWOu9fEGG2XgzE8t8YFfUu22KjXyyef7Lto90uUNs9z+vYLevXqeDfthOZQFwNSfIg==} + '@unocss/preset-icons@0.61.6': + resolution: {integrity: sha512-fJqzZcskz+1e01rsgALuVY2dO2f/rlJzL5GUzcTrvg9mMdnk4XufoA15ItC6dopDj2SUomvR0hnKiYcAsAB5+g==} - '@unocss/preset-mini@0.61.5': - resolution: {integrity: sha512-gVm7Z9X0krx8CK/+pKAqcVmpqzRk1+SH7bfgRxKtKhyFSxJlwpjNp1rKm3gCT0F1Tlp3d8aufYRksaXGZhs8Ow==} + '@unocss/preset-mini@0.61.6': + resolution: {integrity: sha512-V/M+7vkDqyDiIinmBLfcqKsNJ3Lmr7NnWePq3s/KKrd8QEMUss+zHVZlk8clp4hrdT8gk0dUQZbrQkTi5dYWjQ==} - '@unocss/preset-tagify@0.61.5': - resolution: {integrity: sha512-kxO20pV7Bwg7U3hPpxShFSn6CXH+EMaTFC+WXsh2wTOEs43Tta7L6kCSUPzrZ9pX/Pq4oInRQY9gqiZqlGETmQ==} + '@unocss/preset-tagify@0.61.6': + resolution: {integrity: sha512-BSh/QuzsPD6UI2IH7hjJxF1nAOHHgf36yfDhSlNgY8CBgNcPsTX5zqa3Wm97ilqDma3fG2RWVacZaQK8VfzzFA==} - '@unocss/preset-typography@0.61.5': - resolution: {integrity: sha512-CQIleFkmfk/dAOlY7nPA1SOYHzXA6ia7+BCqGrTKxQVFOyBL7iHeNl0yV7lFtKFQn8zyFNEiBVW+fYi0QrouYw==} + '@unocss/preset-typography@0.61.6': + resolution: {integrity: sha512-9tenl97U5IsygEMsDT1bmRrTMef453FvGrK/xPy6X2/7+jJuCfUdOv5qq5ujBkchTz7873kWjkhWAeDaQGwskg==} - '@unocss/preset-uno@0.61.5': - resolution: {integrity: sha512-CflB0l9CeZx+b/Q8mA4Ow4d63Caf+vFJ+1EGA06jG9qYjPLy76Rkci//0m9cEtO+vPnYtgLc7HZAZv0X6wh4Tg==} + '@unocss/preset-uno@0.61.6': + resolution: {integrity: sha512-yHGeU0tPAsdvwQSdblMGeITh0/ORX+voknRWoaOLv2h+u1LcELliwFjEWZp7p9lzEt0sqKmL/V2hF9JPjNkjcw==} - '@unocss/preset-web-fonts@0.61.5': - resolution: {integrity: sha512-hVIMPGayxg7xvlvfQnJxB0N3KTvmrglbH3v5BCYNjbh37+5hv+x22K6iWewY3BkGtaWqOtLO3H1n5a1rxPMyaw==} + '@unocss/preset-web-fonts@0.61.6': + resolution: {integrity: sha512-6lk0ukIEw9HNPy9kEr7xVju1lQYGUBy03RuzIP01NNCcNSfq2rvPpxotYAN2xx2aZpnGh2YgjMo6RuCb/eDQkg==} - '@unocss/preset-wind@0.61.5': - resolution: {integrity: sha512-n4uepxv3gVoVQb0tv7iV8M4W0CgwLw0QaMX+3ECYzFLMynjCkZmFDtdQAX720yTvLZxwCxEZfQCgydOSt0qjZA==} + '@unocss/preset-wind@0.61.6': + resolution: {integrity: sha512-wyi3UhYvyNPGbseQigjW3MwVr0c9R0NboESxS6dDNsvCvAi+uVgP7yBnEeydUPNhW3QyZoIRtSmc6xckdz7crg==} - '@unocss/reset@0.61.5': - resolution: {integrity: sha512-5FKNsHnke9J1Z0T4prOZn9hkWh86c6Px+Oh3xf8mDd6dDw8CjzYMRxZEKti0gt13NcsO29G1vLGM7UjG1sCamg==} + '@unocss/reset@0.61.6': + resolution: {integrity: sha512-fAlE2EbG5h6yS6oIBDOKw4VHogLcl/Ao9EbrcNe1uRc79cA1rvSkqeMAxLHvGxwXAzu7LIovknR+pzASeVLZBg==} - '@unocss/rule-utils@0.61.5': - resolution: {integrity: sha512-sCHnpCQoj3/ZmCjYo+oW3+4r5Z8kFI2snEL+miU2Uk0SqCgY1k0cUIYivj5L9ghp29p8VjEusX9M01QEZOYK7g==} + '@unocss/rule-utils@0.61.6': + resolution: {integrity: sha512-OkAYqCWfbrBDBVfbulYx/6fWeEAVrw37/8VqsSlHD9UDc0Khz/M/4R+9oBhnNfdmqs3VccA2k7PdS5l5dghwzw==} engines: {node: '>=14'} - '@unocss/scope@0.61.5': - resolution: {integrity: sha512-GSmnSYWQ4oiSmJdyT5bmf0McXXhFJcVY7jgweAK2WltQgrxs1C3FWl9XIJtkWvaP3DIJjf4mKJf+zc6TjYxxEw==} + '@unocss/scope@0.61.6': + resolution: {integrity: sha512-yFh88rTQLJSmwLhI26Bd06bOb4F3krlGgDzN4sRRrzbpoSjytFZ7eqSltjDvUZFh05whrDbHFHisH0Xid7DdPQ==} - '@unocss/transformer-attributify-jsx-babel@0.61.5': - resolution: {integrity: sha512-wBwjBCh6N95Bv3fJg8iokbDO9P5F+ee4n4gCecoePi6qSW22cBowj/UakP++L92GWX8FNZcphKOqMxx61q9gOg==} + '@unocss/transformer-attributify-jsx-babel@0.61.6': + resolution: {integrity: sha512-JY4JyX/hWP6+ZM10PGfhZInsjUrXjzFoxw2/GKIIAvV3HKR9uQCzQ1Iz52MMRptqzUV6Ji2OFQw7tTn5DBXmTA==} - '@unocss/transformer-attributify-jsx@0.61.5': - resolution: {integrity: sha512-w9vSBfgRdfofFnqzBvxrMi/FmP+ZtXz9W07wnoS6Yea7uhADilgx1h7wNfJECmK8kM8gWhjl5e6svZNAUQbI7A==} + '@unocss/transformer-attributify-jsx@0.61.6': + resolution: {integrity: sha512-IeTqXLzNFn7ngTsZLnYaXlYasbSGPvvdae0mNjie4XNB+4SsNWYrbDr+1xJhOy0zwUATVQ9NPXkaSYyYf2KtoQ==} - '@unocss/transformer-compile-class@0.61.5': - resolution: {integrity: sha512-5WLi5MgRt8DJiANoWUK49noCgdyU/IKneGs3RJYDRNONEh2HdsL6ktACSRe9Y185ICGaD9MOk3cHBZALj07gew==} + '@unocss/transformer-compile-class@0.61.6': + resolution: {integrity: sha512-AFM6CfkM1WvApWXfoYC4zJ1V8JuS887PlGWtk1jS9uVRlAchIgiA5GpwblD4T734gCVwdy7h16P3rE1xcMS26g==} - '@unocss/transformer-directives@0.61.5': - resolution: {integrity: sha512-vQvgLicgFJt/rUTh3nd8yZz5l0AMoE9qmtZqpgb9iDMOTHUZrlWpI3hsVsU6AB9kvL/NoyMI16hVkP8x6y7b9g==} + '@unocss/transformer-directives@0.61.6': + resolution: {integrity: sha512-k+NzDoO0+uwL9HjOWzIFLWwsxzw7K1aIeq0ZbzbHRSsZmlUWVNEAZ+bczX/HMpjUglM/FrTWux600B/jMBshJg==} - '@unocss/transformer-variant-group@0.61.5': - resolution: {integrity: sha512-7Is7PChplNYTkLTiQm5fL5zFKf+LV6d9TpzNuwXNK2oa1pQARMXNmnHjFPpzaDgxpTjn9sqQON72gziuXcpOsg==} + '@unocss/transformer-variant-group@0.61.6': + resolution: {integrity: sha512-nCVGmZTD8CYufJ1b7H0KJlWS5AleuqBFlihu5xnZE4aovMJ/t9NPw1KabEAqjnM7f08sYSJJy+6ZZ9L57E4eYQ==} - '@unocss/vite@0.61.5': - resolution: {integrity: sha512-+U5Ey5Z2csjLy7zcaDCtUqs08+ugRK87UWGm65W8yMAGW7me72f36QR8IHJUTqlVVEdhbJVIAy+yNFjGHYffjA==} + '@unocss/vite@0.61.6': + resolution: {integrity: sha512-Q9vFhSacuWp5rlcG0II4Gahrq9XS3uMiV/ZDHp1ILuoURmTojHI67awwSzl0xjzRPBwvHG4FnPE3KvSa5U7ulA==} peerDependencies: vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 @@ -1631,6 +1738,15 @@ packages: supports-color: optional: true + debug@4.3.6: + resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + decimal.js@10.4.3: resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} @@ -1895,8 +2011,8 @@ packages: resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.7.0: - resolution: {integrity: sha512-FzJ9D/0nGiCGBf8UXO/IGLTgLVzIxze1zpfA8Ton2mjLovXdAPlYDv+MQDcqj3TmrhAGYfOpz9RfR+ent0AgAw==} + eslint@9.8.0: + resolution: {integrity: sha512-K8qnZ/QJzT2dLKdZJVX6W4XOwBzutMYmt0lqUS+JdXgd+HTYFlonFgkJ8s44d/zMPPCnOOk0kMWCApCPhiOy9A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true @@ -2739,6 +2855,11 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + rollup@4.19.1: + resolution: {integrity: sha512-K5vziVlg7hTpYfFBI+91zHBEMo6jafYXpkMlqZjg7/zhIG9iHqazBf4xz9AVdjS9BruRn280ROqLI7G3OFRIlw==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + rrweb-cssom@0.6.0: resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} @@ -3060,11 +3181,11 @@ packages: resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} engines: {node: '>= 4.0.0'} - unocss@0.61.5: - resolution: {integrity: sha512-BScwlqXW9KHQLKIKtXmwWmMb4Ihoryb7uIgmS+HSqmCN58eqNA73vAo3cZ97xtO+RFdauqgGKP5wD6ShQUvqnQ==} + unocss@0.61.6: + resolution: {integrity: sha512-iVNhFiWchcDhO9JuqCmbWd4rxQTAdDfwCyX7LrdF7Inv8atCuADJti+DVokD+tJdk1jhsEfo15B8uNwLBrVPvg==} engines: {node: '>=14'} peerDependencies: - '@unocss/webpack': 0.61.5 + '@unocss/webpack': 0.61.6 vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 peerDependenciesMeta: '@unocss/webpack': @@ -3341,9 +3462,16 @@ snapshots: '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 + '@babel/generator@7.25.0': + dependencies: + '@babel/types': 7.25.0 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 2.5.2 + '@babel/helper-annotate-as-pure@7.24.7': dependencies: - '@babel/types': 7.24.9 + '@babel/types': 7.25.0 '@babel/helper-compilation-targets@7.24.8': dependencies: @@ -3353,17 +3481,15 @@ snapshots: lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.24.8(@babel/core@7.24.9)': + '@babel/helper-create-class-features-plugin@7.25.0(@babel/core@7.24.9)': dependencies: '@babel/core': 7.24.9 '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-function-name': 7.24.7 '@babel/helper-member-expression-to-functions': 7.24.8 '@babel/helper-optimise-call-expression': 7.24.7 - '@babel/helper-replace-supers': 7.24.7(@babel/core@7.24.9) + '@babel/helper-replace-supers': 7.25.0(@babel/core@7.24.9) '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/helper-split-export-declaration': 7.24.7 + '@babel/traverse': 7.25.0 semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -3383,8 +3509,8 @@ snapshots: '@babel/helper-member-expression-to-functions@7.24.8': dependencies: - '@babel/traverse': 7.24.8 - '@babel/types': 7.24.9 + '@babel/traverse': 7.25.0 + '@babel/types': 7.25.0 transitivePeerDependencies: - supports-color @@ -3410,18 +3536,28 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-module-transforms@7.25.0(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-simple-access': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + '@babel/traverse': 7.25.0 + transitivePeerDependencies: + - supports-color + '@babel/helper-optimise-call-expression@7.24.7': dependencies: - '@babel/types': 7.24.9 + '@babel/types': 7.25.0 '@babel/helper-plugin-utils@7.24.8': {} - '@babel/helper-replace-supers@7.24.7(@babel/core@7.24.9)': + '@babel/helper-replace-supers@7.25.0(@babel/core@7.24.9)': dependencies: '@babel/core': 7.24.9 - '@babel/helper-environment-visitor': 7.24.7 '@babel/helper-member-expression-to-functions': 7.24.8 '@babel/helper-optimise-call-expression': 7.24.7 + '@babel/traverse': 7.25.0 transitivePeerDependencies: - supports-color @@ -3434,8 +3570,8 @@ snapshots: '@babel/helper-skip-transparent-expression-wrappers@7.24.7': dependencies: - '@babel/traverse': 7.24.8 - '@babel/types': 7.24.9 + '@babel/traverse': 7.25.0 + '@babel/types': 7.25.0 transitivePeerDependencies: - supports-color @@ -3465,6 +3601,10 @@ snapshots: dependencies: '@babel/types': 7.24.9 + '@babel/parser@7.25.0': + dependencies: + '@babel/types': 7.25.0 + '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.24.9)': dependencies: '@babel/core': 7.24.9 @@ -3478,18 +3618,19 @@ snapshots: '@babel/plugin-transform-modules-commonjs@7.24.8(@babel/core@7.24.9)': dependencies: '@babel/core': 7.24.9 - '@babel/helper-module-transforms': 7.24.9(@babel/core@7.24.9) + '@babel/helper-module-transforms': 7.25.0(@babel/core@7.24.9) '@babel/helper-plugin-utils': 7.24.8 '@babel/helper-simple-access': 7.24.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-typescript@7.24.8(@babel/core@7.24.9)': + '@babel/plugin-transform-typescript@7.25.0(@babel/core@7.24.9)': dependencies: '@babel/core': 7.24.9 '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-create-class-features-plugin': 7.24.8(@babel/core@7.24.9) + '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.24.9) '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.24.9) transitivePeerDependencies: - supports-color @@ -3501,7 +3642,7 @@ snapshots: '@babel/helper-validator-option': 7.24.8 '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.24.9) '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.24.9) - '@babel/plugin-transform-typescript': 7.24.8(@babel/core@7.24.9) + '@babel/plugin-transform-typescript': 7.25.0(@babel/core@7.24.9) transitivePeerDependencies: - supports-color @@ -3515,6 +3656,12 @@ snapshots: '@babel/parser': 7.24.8 '@babel/types': 7.24.9 + '@babel/template@7.25.0': + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/parser': 7.25.0 + '@babel/types': 7.25.0 + '@babel/traverse@7.24.8': dependencies: '@babel/code-frame': 7.24.7 @@ -3530,12 +3677,30 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/traverse@7.25.0': + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.25.0 + '@babel/parser': 7.25.0 + '@babel/template': 7.25.0 + '@babel/types': 7.25.0 + debug: 4.3.6 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + '@babel/types@7.24.9': dependencies: '@babel/helper-string-parser': 7.24.8 '@babel/helper-validator-identifier': 7.24.7 to-fast-properties: 2.0.0 + '@babel/types@7.25.0': + dependencies: + '@babel/helper-string-parser': 7.24.8 + '@babel/helper-validator-identifier': 7.24.7 + to-fast-properties: 2.0.0 + '@clack/core@0.3.4': dependencies: picocolors: 1.0.1 @@ -3635,23 +3800,23 @@ snapshots: '@esbuild/win32-x64@0.21.5': optional: true - '@eslint-community/eslint-plugin-eslint-comments@4.3.0(eslint@9.7.0)': + '@eslint-community/eslint-plugin-eslint-comments@4.3.0(eslint@9.8.0)': dependencies: escape-string-regexp: 4.0.0 - eslint: 9.7.0 + eslint: 9.8.0 ignore: 5.3.1 - '@eslint-community/eslint-utils@4.4.0(eslint@9.7.0)': + '@eslint-community/eslint-utils@4.4.0(eslint@9.8.0)': dependencies: - eslint: 9.7.0 + eslint: 9.8.0 eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.11.0': {} - '@eslint/config-array@0.17.0': + '@eslint/config-array@0.17.1': dependencies: '@eslint/object-schema': 2.1.4 - debug: 4.3.5 + debug: 4.3.6 minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -3659,7 +3824,7 @@ snapshots: '@eslint/eslintrc@3.1.0': dependencies: ajv: 6.12.6 - debug: 4.3.5 + debug: 4.3.6 espree: 10.1.0 globals: 14.0.0 ignore: 5.3.1 @@ -3670,35 +3835,35 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.7.0': {} + '@eslint/js@9.8.0': {} '@eslint/object-schema@2.1.4': {} - '@flowr/eslint-config@3.10.1(@unocss/eslint-plugin@0.61.5(eslint@9.7.0)(typescript@5.5.4))(eslint-plugin-solid@0.14.1(eslint@9.7.0)(typescript@5.5.4))(eslint-plugin-vue@9.27.0(eslint@9.7.0))(eslint-processor-vue-blocks@0.1.2(eslint@9.7.0))(eslint@9.7.0)(typescript@5.5.4)(vitest@2.0.4(@types/node@20.14.12)(@vitest/ui@2.0.4)(jsdom@24.1.1)(sass@1.77.8))(vue-eslint-parser@9.4.3(eslint@9.7.0))': + '@flowr/eslint-config@3.10.1(@unocss/eslint-plugin@0.61.6(eslint@9.8.0)(typescript@5.5.4))(eslint-plugin-solid@0.14.1(eslint@9.8.0)(typescript@5.5.4))(eslint-plugin-vue@9.27.0(eslint@9.8.0))(eslint-processor-vue-blocks@0.1.2(eslint@9.8.0))(eslint@9.8.0)(typescript@5.5.4)(vitest@2.0.4(@types/node@20.14.12)(@vitest/ui@2.0.4)(jsdom@24.1.1)(sass@1.77.8))(vue-eslint-parser@9.4.3(eslint@9.8.0))': dependencies: '@antfu/install-pkg': 0.3.3 '@clack/prompts': 0.7.0 - '@eslint-community/eslint-plugin-eslint-comments': 4.3.0(eslint@9.7.0) - '@stylistic/eslint-plugin': 2.6.0-beta.0(eslint@9.7.0)(typescript@5.5.4) - '@typescript-eslint/eslint-plugin': 8.0.0-alpha.41(@typescript-eslint/parser@8.0.0-alpha.41(eslint@9.7.0)(typescript@5.5.4))(eslint@9.7.0)(typescript@5.5.4) - '@typescript-eslint/parser': 8.0.0-alpha.41(eslint@9.7.0)(typescript@5.5.4) - eslint: 9.7.0 + '@eslint-community/eslint-plugin-eslint-comments': 4.3.0(eslint@9.8.0) + '@stylistic/eslint-plugin': 2.6.0-beta.0(eslint@9.8.0)(typescript@5.5.4) + '@typescript-eslint/eslint-plugin': 8.0.0-alpha.41(@typescript-eslint/parser@8.0.0-alpha.41(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4) + '@typescript-eslint/parser': 8.0.0-alpha.41(eslint@9.8.0)(typescript@5.5.4) + eslint: 9.8.0 eslint-flat-config-utils: 0.2.5 - eslint-merge-processors: 0.1.0(eslint@9.7.0) - eslint-plugin-command: 0.2.3(eslint@9.7.0) - eslint-plugin-import-x: 3.1.0(eslint@9.7.0)(typescript@5.5.4) - eslint-plugin-jsdoc: 48.8.3(eslint@9.7.0) - eslint-plugin-jsonc: 2.16.0(eslint@9.7.0) - eslint-plugin-markdown: 5.1.0(eslint@9.7.0) - eslint-plugin-n: 17.9.0(eslint@9.7.0) - eslint-plugin-perfectionist: 3.0.0(eslint@9.7.0)(typescript@5.5.4)(vue-eslint-parser@9.4.3(eslint@9.7.0)) - eslint-plugin-petal: 3.10.1(eslint@9.7.0) - eslint-plugin-regexp: 2.6.0(eslint@9.7.0) - eslint-plugin-toml: 0.11.1(eslint@9.7.0) - eslint-plugin-unicorn: 55.0.0(eslint@9.7.0) - eslint-plugin-unused-imports: 4.0.1(@typescript-eslint/eslint-plugin@8.0.0-alpha.41(@typescript-eslint/parser@8.0.0-alpha.41(eslint@9.7.0)(typescript@5.5.4))(eslint@9.7.0)(typescript@5.5.4))(eslint@9.7.0) - eslint-plugin-vitest: 0.5.4(@typescript-eslint/eslint-plugin@8.0.0-alpha.41(@typescript-eslint/parser@8.0.0-alpha.41(eslint@9.7.0)(typescript@5.5.4))(eslint@9.7.0)(typescript@5.5.4))(eslint@9.7.0)(typescript@5.5.4)(vitest@2.0.4(@types/node@20.14.12)(@vitest/ui@2.0.4)(jsdom@24.1.1)(sass@1.77.8)) - eslint-plugin-yml: 1.14.0(eslint@9.7.0) + eslint-merge-processors: 0.1.0(eslint@9.8.0) + eslint-plugin-command: 0.2.3(eslint@9.8.0) + eslint-plugin-import-x: 3.1.0(eslint@9.8.0)(typescript@5.5.4) + eslint-plugin-jsdoc: 48.8.3(eslint@9.8.0) + eslint-plugin-jsonc: 2.16.0(eslint@9.8.0) + eslint-plugin-markdown: 5.1.0(eslint@9.8.0) + eslint-plugin-n: 17.9.0(eslint@9.8.0) + eslint-plugin-perfectionist: 3.0.0(eslint@9.8.0)(typescript@5.5.4)(vue-eslint-parser@9.4.3(eslint@9.8.0)) + eslint-plugin-petal: 3.10.1(eslint@9.8.0) + eslint-plugin-regexp: 2.6.0(eslint@9.8.0) + eslint-plugin-toml: 0.11.1(eslint@9.8.0) + eslint-plugin-unicorn: 55.0.0(eslint@9.8.0) + eslint-plugin-unused-imports: 4.0.1(@typescript-eslint/eslint-plugin@8.0.0-alpha.41(@typescript-eslint/parser@8.0.0-alpha.41(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0) + eslint-plugin-vitest: 0.5.4(@typescript-eslint/eslint-plugin@8.0.0-alpha.41(@typescript-eslint/parser@8.0.0-alpha.41(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4)(vitest@2.0.4(@types/node@20.14.12)(@vitest/ui@2.0.4)(jsdom@24.1.1)(sass@1.77.8)) + eslint-plugin-yml: 1.14.0(eslint@9.8.0) find-up: 7.0.0 globals: 15.8.0 jsonc-eslint-parser: 2.4.0 @@ -3707,11 +3872,11 @@ snapshots: toml-eslint-parser: 0.10.0 yaml-eslint-parser: 1.2.3 optionalDependencies: - '@unocss/eslint-plugin': 0.61.5(eslint@9.7.0)(typescript@5.5.4) - eslint-plugin-solid: 0.14.1(eslint@9.7.0)(typescript@5.5.4) - eslint-plugin-vue: 9.27.0(eslint@9.7.0) - eslint-processor-vue-blocks: 0.1.2(eslint@9.7.0) - vue-eslint-parser: 9.4.3(eslint@9.7.0) + '@unocss/eslint-plugin': 0.61.6(eslint@9.8.0)(typescript@5.5.4) + eslint-plugin-solid: 0.14.1(eslint@9.8.0)(typescript@5.5.4) + eslint-plugin-vue: 9.27.0(eslint@9.8.0) + eslint-processor-vue-blocks: 0.1.2(eslint@9.8.0) + vue-eslint-parser: 9.4.3(eslint@9.8.0) transitivePeerDependencies: - supports-color - svelte @@ -3739,7 +3904,7 @@ snapshots: '@antfu/install-pkg': 0.1.1 '@antfu/utils': 0.7.10 '@iconify/types': 2.0.0 - debug: 4.3.5 + debug: 4.3.6 kolorist: 1.8.0 local-pkg: 0.5.0 mlly: 1.7.1 @@ -3795,62 +3960,110 @@ snapshots: '@polka/url@1.0.0-next.25': {} - '@rollup/pluginutils@5.1.0(rollup@4.19.0)': + '@rollup/pluginutils@5.1.0(rollup@4.19.1)': dependencies: '@types/estree': 1.0.5 estree-walker: 2.0.2 picomatch: 2.3.1 optionalDependencies: - rollup: 4.19.0 + rollup: 4.19.1 '@rollup/rollup-android-arm-eabi@4.19.0': optional: true + '@rollup/rollup-android-arm-eabi@4.19.1': + optional: true + '@rollup/rollup-android-arm64@4.19.0': optional: true + '@rollup/rollup-android-arm64@4.19.1': + optional: true + '@rollup/rollup-darwin-arm64@4.19.0': optional: true + '@rollup/rollup-darwin-arm64@4.19.1': + optional: true + '@rollup/rollup-darwin-x64@4.19.0': optional: true + '@rollup/rollup-darwin-x64@4.19.1': + optional: true + '@rollup/rollup-linux-arm-gnueabihf@4.19.0': optional: true + '@rollup/rollup-linux-arm-gnueabihf@4.19.1': + optional: true + '@rollup/rollup-linux-arm-musleabihf@4.19.0': optional: true + '@rollup/rollup-linux-arm-musleabihf@4.19.1': + optional: true + '@rollup/rollup-linux-arm64-gnu@4.19.0': optional: true + '@rollup/rollup-linux-arm64-gnu@4.19.1': + optional: true + '@rollup/rollup-linux-arm64-musl@4.19.0': optional: true + '@rollup/rollup-linux-arm64-musl@4.19.1': + optional: true + '@rollup/rollup-linux-powerpc64le-gnu@4.19.0': optional: true + '@rollup/rollup-linux-powerpc64le-gnu@4.19.1': + optional: true + '@rollup/rollup-linux-riscv64-gnu@4.19.0': optional: true + '@rollup/rollup-linux-riscv64-gnu@4.19.1': + optional: true + '@rollup/rollup-linux-s390x-gnu@4.19.0': optional: true + '@rollup/rollup-linux-s390x-gnu@4.19.1': + optional: true + '@rollup/rollup-linux-x64-gnu@4.19.0': optional: true + '@rollup/rollup-linux-x64-gnu@4.19.1': + optional: true + '@rollup/rollup-linux-x64-musl@4.19.0': optional: true + '@rollup/rollup-linux-x64-musl@4.19.1': + optional: true + '@rollup/rollup-win32-arm64-msvc@4.19.0': optional: true + '@rollup/rollup-win32-arm64-msvc@4.19.1': + optional: true + '@rollup/rollup-win32-ia32-msvc@4.19.0': optional: true + '@rollup/rollup-win32-ia32-msvc@4.19.1': + optional: true + '@rollup/rollup-win32-x64-msvc@4.19.0': optional: true + '@rollup/rollup-win32-x64-msvc@4.19.1': + optional: true + '@rspc/client@0.2.0': {} '@rspc/client@0.2.3': {} @@ -3860,11 +4073,11 @@ snapshots: '@rspc/client': 0.2.3 '@tanstack/query-core': 5.51.1 - '@rspc/solid-query@0.2.3(@tanstack/solid-query@5.51.9(solid-js@1.8.19))(solid-js@1.8.19)': + '@rspc/solid-query@0.2.3(@tanstack/solid-query@5.51.15(solid-js@1.8.19))(solid-js@1.8.19)': dependencies: '@rspc/client': 0.2.3 '@rspc/query-core': 0.2.3(@rspc/client@0.2.3) - '@tanstack/solid-query': 5.51.9(solid-js@1.8.19) + '@tanstack/solid-query': 5.51.15(solid-js@1.8.19) solid-js: 1.8.19 '@rspc/tauri@0.2.0(@tauri-apps/api@2.0.0-beta.15)': @@ -3915,60 +4128,60 @@ snapshots: optionalDependencies: '@solidjs/router': 0.14.1(solid-js@1.8.19) - '@stylistic/eslint-plugin-js@2.6.0-beta.0(eslint@9.7.0)': + '@stylistic/eslint-plugin-js@2.6.0-beta.0(eslint@9.8.0)': dependencies: '@types/eslint': 8.56.11 acorn: 8.12.1 - eslint: 9.7.0 + eslint: 9.8.0 eslint-visitor-keys: 4.0.0 espree: 10.1.0 - '@stylistic/eslint-plugin-jsx@2.6.0-beta.0(eslint@9.7.0)': + '@stylistic/eslint-plugin-jsx@2.6.0-beta.0(eslint@9.8.0)': dependencies: - '@stylistic/eslint-plugin-js': 2.6.0-beta.0(eslint@9.7.0) + '@stylistic/eslint-plugin-js': 2.6.0-beta.0(eslint@9.8.0) '@types/eslint': 8.56.11 - eslint: 9.7.0 + eslint: 9.8.0 estraverse: 5.3.0 picomatch: 4.0.2 - '@stylistic/eslint-plugin-plus@2.6.0-beta.0(eslint@9.7.0)(typescript@5.5.4)': + '@stylistic/eslint-plugin-plus@2.6.0-beta.0(eslint@9.8.0)(typescript@5.5.4)': dependencies: '@types/eslint': 8.56.11 - '@typescript-eslint/utils': 8.0.0-alpha.54(eslint@9.7.0)(typescript@5.5.4) - eslint: 9.7.0 + '@typescript-eslint/utils': 8.0.0-alpha.54(eslint@9.8.0)(typescript@5.5.4) + eslint: 9.8.0 transitivePeerDependencies: - supports-color - typescript - '@stylistic/eslint-plugin-ts@2.6.0-beta.0(eslint@9.7.0)(typescript@5.5.4)': + '@stylistic/eslint-plugin-ts@2.6.0-beta.0(eslint@9.8.0)(typescript@5.5.4)': dependencies: - '@stylistic/eslint-plugin-js': 2.6.0-beta.0(eslint@9.7.0) + '@stylistic/eslint-plugin-js': 2.6.0-beta.0(eslint@9.8.0) '@types/eslint': 8.56.11 - '@typescript-eslint/utils': 8.0.0-alpha.54(eslint@9.7.0)(typescript@5.5.4) - eslint: 9.7.0 + '@typescript-eslint/utils': 8.0.0-alpha.54(eslint@9.8.0)(typescript@5.5.4) + eslint: 9.8.0 transitivePeerDependencies: - supports-color - typescript - '@stylistic/eslint-plugin@2.6.0-beta.0(eslint@9.7.0)(typescript@5.5.4)': + '@stylistic/eslint-plugin@2.6.0-beta.0(eslint@9.8.0)(typescript@5.5.4)': dependencies: - '@stylistic/eslint-plugin-js': 2.6.0-beta.0(eslint@9.7.0) - '@stylistic/eslint-plugin-jsx': 2.6.0-beta.0(eslint@9.7.0) - '@stylistic/eslint-plugin-plus': 2.6.0-beta.0(eslint@9.7.0)(typescript@5.5.4) - '@stylistic/eslint-plugin-ts': 2.6.0-beta.0(eslint@9.7.0)(typescript@5.5.4) + '@stylistic/eslint-plugin-js': 2.6.0-beta.0(eslint@9.8.0) + '@stylistic/eslint-plugin-jsx': 2.6.0-beta.0(eslint@9.8.0) + '@stylistic/eslint-plugin-plus': 2.6.0-beta.0(eslint@9.8.0)(typescript@5.5.4) + '@stylistic/eslint-plugin-ts': 2.6.0-beta.0(eslint@9.8.0)(typescript@5.5.4) '@types/eslint': 8.56.11 - eslint: 9.7.0 + eslint: 9.8.0 transitivePeerDependencies: - supports-color - typescript '@tanstack/query-core@5.51.1': {} - '@tanstack/query-core@5.51.9': {} + '@tanstack/query-core@5.51.15': {} - '@tanstack/solid-query@5.51.9(solid-js@1.8.19)': + '@tanstack/solid-query@5.51.15(solid-js@1.8.19)': dependencies: - '@tanstack/query-core': 5.51.9 + '@tanstack/query-core': 5.51.15 solid-js: 1.8.19 '@tauri-apps/api@2.0.0-beta.15': {} @@ -4120,15 +4333,15 @@ snapshots: '@types/uuid@10.0.0': {} - '@typescript-eslint/eslint-plugin@8.0.0-alpha.41(@typescript-eslint/parser@8.0.0-alpha.41(eslint@9.7.0)(typescript@5.5.4))(eslint@9.7.0)(typescript@5.5.4)': + '@typescript-eslint/eslint-plugin@8.0.0-alpha.41(@typescript-eslint/parser@8.0.0-alpha.41(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4)': dependencies: '@eslint-community/regexpp': 4.11.0 - '@typescript-eslint/parser': 8.0.0-alpha.41(eslint@9.7.0)(typescript@5.5.4) + '@typescript-eslint/parser': 8.0.0-alpha.41(eslint@9.8.0)(typescript@5.5.4) '@typescript-eslint/scope-manager': 8.0.0-alpha.41 - '@typescript-eslint/type-utils': 8.0.0-alpha.41(eslint@9.7.0)(typescript@5.5.4) - '@typescript-eslint/utils': 8.0.0-alpha.41(eslint@9.7.0)(typescript@5.5.4) + '@typescript-eslint/type-utils': 8.0.0-alpha.41(eslint@9.8.0)(typescript@5.5.4) + '@typescript-eslint/utils': 8.0.0-alpha.41(eslint@9.8.0)(typescript@5.5.4) '@typescript-eslint/visitor-keys': 8.0.0-alpha.41 - eslint: 9.7.0 + eslint: 9.8.0 graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 @@ -4138,14 +4351,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.0.0-alpha.41(eslint@9.7.0)(typescript@5.5.4)': + '@typescript-eslint/parser@8.0.0-alpha.41(eslint@9.8.0)(typescript@5.5.4)': dependencies: '@typescript-eslint/scope-manager': 8.0.0-alpha.41 '@typescript-eslint/types': 8.0.0-alpha.41 '@typescript-eslint/typescript-estree': 8.0.0-alpha.41(typescript@5.5.4) '@typescript-eslint/visitor-keys': 8.0.0-alpha.41 debug: 4.3.5 - eslint: 9.7.0 + eslint: 9.8.0 optionalDependencies: typescript: 5.5.4 transitivePeerDependencies: @@ -4171,10 +4384,10 @@ snapshots: '@typescript-eslint/types': 8.0.0-alpha.54 '@typescript-eslint/visitor-keys': 8.0.0-alpha.54 - '@typescript-eslint/type-utils@8.0.0-alpha.41(eslint@9.7.0)(typescript@5.5.4)': + '@typescript-eslint/type-utils@8.0.0-alpha.41(eslint@9.8.0)(typescript@5.5.4)': dependencies: '@typescript-eslint/typescript-estree': 8.0.0-alpha.41(typescript@5.5.4) - '@typescript-eslint/utils': 8.0.0-alpha.41(eslint@9.7.0)(typescript@5.5.4) + '@typescript-eslint/utils': 8.0.0-alpha.41(eslint@9.8.0)(typescript@5.5.4) debug: 4.3.5 ts-api-utils: 1.3.0(typescript@5.5.4) optionalDependencies: @@ -4251,46 +4464,46 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@7.16.0(eslint@9.7.0)(typescript@5.5.4)': + '@typescript-eslint/utils@7.16.0(eslint@9.8.0)(typescript@5.5.4)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.7.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.8.0) '@typescript-eslint/scope-manager': 7.16.0 '@typescript-eslint/types': 7.16.0 '@typescript-eslint/typescript-estree': 7.16.0(typescript@5.5.4) - eslint: 9.7.0 + eslint: 9.8.0 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/utils@7.17.0(eslint@9.7.0)(typescript@5.5.4)': + '@typescript-eslint/utils@7.17.0(eslint@9.8.0)(typescript@5.5.4)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.7.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.8.0) '@typescript-eslint/scope-manager': 7.17.0 '@typescript-eslint/types': 7.17.0 '@typescript-eslint/typescript-estree': 7.17.0(typescript@5.5.4) - eslint: 9.7.0 + eslint: 9.8.0 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/utils@8.0.0-alpha.41(eslint@9.7.0)(typescript@5.5.4)': + '@typescript-eslint/utils@8.0.0-alpha.41(eslint@9.8.0)(typescript@5.5.4)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.7.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.8.0) '@typescript-eslint/scope-manager': 8.0.0-alpha.41 '@typescript-eslint/types': 8.0.0-alpha.41 '@typescript-eslint/typescript-estree': 8.0.0-alpha.41(typescript@5.5.4) - eslint: 9.7.0 + eslint: 9.8.0 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/utils@8.0.0-alpha.54(eslint@9.7.0)(typescript@5.5.4)': + '@typescript-eslint/utils@8.0.0-alpha.54(eslint@9.8.0)(typescript@5.5.4)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.7.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.8.0) '@typescript-eslint/scope-manager': 8.0.0-alpha.54 '@typescript-eslint/types': 8.0.0-alpha.54 '@typescript-eslint/typescript-estree': 8.0.0-alpha.54(typescript@5.5.4) - eslint: 9.7.0 + eslint: 9.8.0 transitivePeerDependencies: - supports-color - typescript @@ -4315,23 +4528,23 @@ snapshots: '@typescript-eslint/types': 8.0.0-alpha.54 eslint-visitor-keys: 3.4.3 - '@unocss/astro@0.61.5(rollup@4.19.0)(vite@5.3.5(@types/node@20.14.12)(sass@1.77.8))': + '@unocss/astro@0.61.6(rollup@4.19.1)(vite@5.3.5(@types/node@20.14.12)(sass@1.77.8))': dependencies: - '@unocss/core': 0.61.5 - '@unocss/reset': 0.61.5 - '@unocss/vite': 0.61.5(rollup@4.19.0)(vite@5.3.5(@types/node@20.14.12)(sass@1.77.8)) + '@unocss/core': 0.61.6 + '@unocss/reset': 0.61.6 + '@unocss/vite': 0.61.6(rollup@4.19.1)(vite@5.3.5(@types/node@20.14.12)(sass@1.77.8)) optionalDependencies: vite: 5.3.5(@types/node@20.14.12)(sass@1.77.8) transitivePeerDependencies: - rollup - '@unocss/cli@0.61.5(rollup@4.19.0)': + '@unocss/cli@0.61.6(rollup@4.19.1)': dependencies: '@ampproject/remapping': 2.3.0 - '@rollup/pluginutils': 5.1.0(rollup@4.19.0) - '@unocss/config': 0.61.5 - '@unocss/core': 0.61.5 - '@unocss/preset-uno': 0.61.5 + '@rollup/pluginutils': 5.1.0(rollup@4.19.1) + '@unocss/config': 0.61.6 + '@unocss/core': 0.61.6 + '@unocss/preset-uno': 0.61.6 cac: 6.7.14 chokidar: 3.6.0 colorette: 2.0.20 @@ -4343,18 +4556,18 @@ snapshots: transitivePeerDependencies: - rollup - '@unocss/config@0.61.5': + '@unocss/config@0.61.6': dependencies: - '@unocss/core': 0.61.5 + '@unocss/core': 0.61.6 unconfig: 0.3.13 - '@unocss/core@0.61.5': {} + '@unocss/core@0.61.6': {} - '@unocss/eslint-plugin@0.61.5(eslint@9.7.0)(typescript@5.5.4)': + '@unocss/eslint-plugin@0.61.6(eslint@9.8.0)(typescript@5.5.4)': dependencies: - '@typescript-eslint/utils': 7.17.0(eslint@9.7.0)(typescript@5.5.4) - '@unocss/config': 0.61.5 - '@unocss/core': 0.61.5 + '@typescript-eslint/utils': 7.17.0(eslint@9.8.0)(typescript@5.5.4) + '@unocss/config': 0.61.6 + '@unocss/core': 0.61.6 magic-string: 0.30.10 synckit: 0.9.1 transitivePeerDependencies: @@ -4363,117 +4576,117 @@ snapshots: - typescript optional: true - '@unocss/extractor-arbitrary-variants@0.61.5': + '@unocss/extractor-arbitrary-variants@0.61.6': dependencies: - '@unocss/core': 0.61.5 + '@unocss/core': 0.61.6 - '@unocss/inspector@0.61.5': + '@unocss/inspector@0.61.6': dependencies: - '@unocss/core': 0.61.5 - '@unocss/rule-utils': 0.61.5 + '@unocss/core': 0.61.6 + '@unocss/rule-utils': 0.61.6 gzip-size: 6.0.0 sirv: 2.0.4 - '@unocss/postcss@0.61.5(postcss@8.4.40)': + '@unocss/postcss@0.61.6(postcss@8.4.40)': dependencies: - '@unocss/config': 0.61.5 - '@unocss/core': 0.61.5 - '@unocss/rule-utils': 0.61.5 + '@unocss/config': 0.61.6 + '@unocss/core': 0.61.6 + '@unocss/rule-utils': 0.61.6 css-tree: 2.3.1 fast-glob: 3.3.2 magic-string: 0.30.10 postcss: 8.4.40 - '@unocss/preset-attributify@0.61.5': + '@unocss/preset-attributify@0.61.6': dependencies: - '@unocss/core': 0.61.5 + '@unocss/core': 0.61.6 - '@unocss/preset-icons@0.61.5': + '@unocss/preset-icons@0.61.6': dependencies: '@iconify/utils': 2.1.25 - '@unocss/core': 0.61.5 + '@unocss/core': 0.61.6 ofetch: 1.3.4 transitivePeerDependencies: - supports-color - '@unocss/preset-mini@0.61.5': + '@unocss/preset-mini@0.61.6': dependencies: - '@unocss/core': 0.61.5 - '@unocss/extractor-arbitrary-variants': 0.61.5 - '@unocss/rule-utils': 0.61.5 + '@unocss/core': 0.61.6 + '@unocss/extractor-arbitrary-variants': 0.61.6 + '@unocss/rule-utils': 0.61.6 - '@unocss/preset-tagify@0.61.5': + '@unocss/preset-tagify@0.61.6': dependencies: - '@unocss/core': 0.61.5 + '@unocss/core': 0.61.6 - '@unocss/preset-typography@0.61.5': + '@unocss/preset-typography@0.61.6': dependencies: - '@unocss/core': 0.61.5 - '@unocss/preset-mini': 0.61.5 + '@unocss/core': 0.61.6 + '@unocss/preset-mini': 0.61.6 - '@unocss/preset-uno@0.61.5': + '@unocss/preset-uno@0.61.6': dependencies: - '@unocss/core': 0.61.5 - '@unocss/preset-mini': 0.61.5 - '@unocss/preset-wind': 0.61.5 - '@unocss/rule-utils': 0.61.5 + '@unocss/core': 0.61.6 + '@unocss/preset-mini': 0.61.6 + '@unocss/preset-wind': 0.61.6 + '@unocss/rule-utils': 0.61.6 - '@unocss/preset-web-fonts@0.61.5': + '@unocss/preset-web-fonts@0.61.6': dependencies: - '@unocss/core': 0.61.5 + '@unocss/core': 0.61.6 ofetch: 1.3.4 - '@unocss/preset-wind@0.61.5': + '@unocss/preset-wind@0.61.6': dependencies: - '@unocss/core': 0.61.5 - '@unocss/preset-mini': 0.61.5 - '@unocss/rule-utils': 0.61.5 + '@unocss/core': 0.61.6 + '@unocss/preset-mini': 0.61.6 + '@unocss/rule-utils': 0.61.6 - '@unocss/reset@0.61.5': {} + '@unocss/reset@0.61.6': {} - '@unocss/rule-utils@0.61.5': + '@unocss/rule-utils@0.61.6': dependencies: - '@unocss/core': 0.61.5 + '@unocss/core': 0.61.6 magic-string: 0.30.10 - '@unocss/scope@0.61.5': {} + '@unocss/scope@0.61.6': {} - '@unocss/transformer-attributify-jsx-babel@0.61.5': + '@unocss/transformer-attributify-jsx-babel@0.61.6': dependencies: '@babel/core': 7.24.9 '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.24.9) '@babel/preset-typescript': 7.24.7(@babel/core@7.24.9) - '@unocss/core': 0.61.5 + '@unocss/core': 0.61.6 transitivePeerDependencies: - supports-color - '@unocss/transformer-attributify-jsx@0.61.5': + '@unocss/transformer-attributify-jsx@0.61.6': dependencies: - '@unocss/core': 0.61.5 + '@unocss/core': 0.61.6 - '@unocss/transformer-compile-class@0.61.5': + '@unocss/transformer-compile-class@0.61.6': dependencies: - '@unocss/core': 0.61.5 + '@unocss/core': 0.61.6 - '@unocss/transformer-directives@0.61.5': + '@unocss/transformer-directives@0.61.6': dependencies: - '@unocss/core': 0.61.5 - '@unocss/rule-utils': 0.61.5 + '@unocss/core': 0.61.6 + '@unocss/rule-utils': 0.61.6 css-tree: 2.3.1 - '@unocss/transformer-variant-group@0.61.5': + '@unocss/transformer-variant-group@0.61.6': dependencies: - '@unocss/core': 0.61.5 + '@unocss/core': 0.61.6 - '@unocss/vite@0.61.5(rollup@4.19.0)(vite@5.3.5(@types/node@20.14.12)(sass@1.77.8))': + '@unocss/vite@0.61.6(rollup@4.19.1)(vite@5.3.5(@types/node@20.14.12)(sass@1.77.8))': dependencies: '@ampproject/remapping': 2.3.0 - '@rollup/pluginutils': 5.1.0(rollup@4.19.0) - '@unocss/config': 0.61.5 - '@unocss/core': 0.61.5 - '@unocss/inspector': 0.61.5 - '@unocss/scope': 0.61.5 - '@unocss/transformer-directives': 0.61.5 + '@rollup/pluginutils': 5.1.0(rollup@4.19.1) + '@unocss/config': 0.61.6 + '@unocss/core': 0.61.6 + '@unocss/inspector': 0.61.6 + '@unocss/scope': 0.61.6 + '@unocss/transformer-directives': 0.61.6 chokidar: 3.6.0 fast-glob: 3.3.2 magic-string: 0.30.10 @@ -4811,6 +5024,10 @@ snapshots: dependencies: ms: 2.1.2 + debug@4.3.6: + dependencies: + ms: 2.1.2 + decimal.js@10.4.3: {} deep-eql@5.0.2: {} @@ -4908,9 +5125,9 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-compat-utils@0.5.1(eslint@9.7.0): + eslint-compat-utils@0.5.1(eslint@9.8.0): dependencies: - eslint: 9.7.0 + eslint: 9.8.0 semver: 7.6.3 eslint-flat-config-utils@0.2.5: @@ -4926,28 +5143,28 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-merge-processors@0.1.0(eslint@9.7.0): + eslint-merge-processors@0.1.0(eslint@9.8.0): dependencies: - eslint: 9.7.0 + eslint: 9.8.0 - eslint-plugin-command@0.2.3(eslint@9.7.0): + eslint-plugin-command@0.2.3(eslint@9.8.0): dependencies: '@es-joy/jsdoccomment': 0.43.1 - eslint: 9.7.0 + eslint: 9.8.0 - eslint-plugin-es-x@7.8.0(eslint@9.7.0): + eslint-plugin-es-x@7.8.0(eslint@9.8.0): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.7.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.8.0) '@eslint-community/regexpp': 4.11.0 - eslint: 9.7.0 - eslint-compat-utils: 0.5.1(eslint@9.7.0) + eslint: 9.8.0 + eslint-compat-utils: 0.5.1(eslint@9.8.0) - eslint-plugin-import-x@3.1.0(eslint@9.7.0)(typescript@5.5.4): + eslint-plugin-import-x@3.1.0(eslint@9.8.0)(typescript@5.5.4): dependencies: - '@typescript-eslint/utils': 7.17.0(eslint@9.7.0)(typescript@5.5.4) + '@typescript-eslint/utils': 7.17.0(eslint@9.8.0)(typescript@5.5.4) debug: 4.3.5 doctrine: 3.0.0 - eslint: 9.7.0 + eslint: 9.8.0 eslint-import-resolver-node: 0.3.9 get-tsconfig: 4.7.6 is-glob: 4.0.3 @@ -4959,14 +5176,14 @@ snapshots: - supports-color - typescript - eslint-plugin-jsdoc@48.8.3(eslint@9.7.0): + eslint-plugin-jsdoc@48.8.3(eslint@9.8.0): dependencies: '@es-joy/jsdoccomment': 0.46.0 are-docs-informative: 0.0.2 comment-parser: 1.4.1 debug: 4.3.5 escape-string-regexp: 4.0.0 - eslint: 9.7.0 + eslint: 9.8.0 esquery: 1.6.0 parse-imports: 2.1.1 semver: 7.6.3 @@ -4975,69 +5192,69 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-jsonc@2.16.0(eslint@9.7.0): + eslint-plugin-jsonc@2.16.0(eslint@9.8.0): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.7.0) - eslint: 9.7.0 - eslint-compat-utils: 0.5.1(eslint@9.7.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.8.0) + eslint: 9.8.0 + eslint-compat-utils: 0.5.1(eslint@9.8.0) espree: 9.6.1 graphemer: 1.4.0 jsonc-eslint-parser: 2.4.0 natural-compare: 1.4.0 synckit: 0.6.2 - eslint-plugin-markdown@5.1.0(eslint@9.7.0): + eslint-plugin-markdown@5.1.0(eslint@9.8.0): dependencies: - eslint: 9.7.0 + eslint: 9.8.0 mdast-util-from-markdown: 0.8.5 transitivePeerDependencies: - supports-color - eslint-plugin-n@17.9.0(eslint@9.7.0): + eslint-plugin-n@17.9.0(eslint@9.8.0): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.7.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.8.0) enhanced-resolve: 5.17.1 - eslint: 9.7.0 - eslint-plugin-es-x: 7.8.0(eslint@9.7.0) + eslint: 9.8.0 + eslint-plugin-es-x: 7.8.0(eslint@9.8.0) get-tsconfig: 4.7.6 globals: 15.8.0 ignore: 5.3.1 minimatch: 9.0.5 semver: 7.6.3 - eslint-plugin-perfectionist@3.0.0(eslint@9.7.0)(typescript@5.5.4)(vue-eslint-parser@9.4.3(eslint@9.7.0)): + eslint-plugin-perfectionist@3.0.0(eslint@9.8.0)(typescript@5.5.4)(vue-eslint-parser@9.4.3(eslint@9.8.0)): dependencies: '@typescript-eslint/types': 7.17.0 - '@typescript-eslint/utils': 7.17.0(eslint@9.7.0)(typescript@5.5.4) - eslint: 9.7.0 + '@typescript-eslint/utils': 7.17.0(eslint@9.8.0)(typescript@5.5.4) + eslint: 9.8.0 minimatch: 10.0.1 natural-compare-lite: 1.4.0 optionalDependencies: - vue-eslint-parser: 9.4.3(eslint@9.7.0) + vue-eslint-parser: 9.4.3(eslint@9.8.0) transitivePeerDependencies: - supports-color - typescript - eslint-plugin-petal@3.10.1(eslint@9.7.0): + eslint-plugin-petal@3.10.1(eslint@9.8.0): dependencies: '@flowr/utils': 3.10.1 - eslint: 9.7.0 + eslint: 9.8.0 - eslint-plugin-regexp@2.6.0(eslint@9.7.0): + eslint-plugin-regexp@2.6.0(eslint@9.8.0): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.7.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.8.0) '@eslint-community/regexpp': 4.11.0 comment-parser: 1.4.1 - eslint: 9.7.0 + eslint: 9.8.0 jsdoc-type-pratt-parser: 4.0.0 refa: 0.12.1 regexp-ast-analysis: 0.7.1 scslre: 0.3.0 - eslint-plugin-solid@0.14.1(eslint@9.7.0)(typescript@5.5.4): + eslint-plugin-solid@0.14.1(eslint@9.8.0)(typescript@5.5.4): dependencies: - '@typescript-eslint/utils': 7.16.0(eslint@9.7.0)(typescript@5.5.4) - eslint: 9.7.0 + '@typescript-eslint/utils': 7.16.0(eslint@9.8.0)(typescript@5.5.4) + eslint: 9.8.0 estraverse: 5.3.0 is-html: 2.0.0 kebab-case: 1.0.2 @@ -5047,24 +5264,24 @@ snapshots: - supports-color - typescript - eslint-plugin-toml@0.11.1(eslint@9.7.0): + eslint-plugin-toml@0.11.1(eslint@9.8.0): dependencies: debug: 4.3.5 - eslint: 9.7.0 - eslint-compat-utils: 0.5.1(eslint@9.7.0) + eslint: 9.8.0 + eslint-compat-utils: 0.5.1(eslint@9.8.0) lodash: 4.17.21 toml-eslint-parser: 0.10.0 transitivePeerDependencies: - supports-color - eslint-plugin-unicorn@55.0.0(eslint@9.7.0): + eslint-plugin-unicorn@55.0.0(eslint@9.8.0): dependencies: '@babel/helper-validator-identifier': 7.24.7 - '@eslint-community/eslint-utils': 4.4.0(eslint@9.7.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.8.0) ci-info: 4.0.0 clean-regexp: 1.0.0 core-js-compat: 3.37.1 - eslint: 9.7.0 + eslint: 9.8.0 esquery: 1.6.0 globals: 15.8.0 indent-string: 4.0.0 @@ -5077,53 +5294,53 @@ snapshots: semver: 7.6.3 strip-indent: 3.0.0 - eslint-plugin-unused-imports@4.0.1(@typescript-eslint/eslint-plugin@8.0.0-alpha.41(@typescript-eslint/parser@8.0.0-alpha.41(eslint@9.7.0)(typescript@5.5.4))(eslint@9.7.0)(typescript@5.5.4))(eslint@9.7.0): + eslint-plugin-unused-imports@4.0.1(@typescript-eslint/eslint-plugin@8.0.0-alpha.41(@typescript-eslint/parser@8.0.0-alpha.41(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0): dependencies: - eslint: 9.7.0 + eslint: 9.8.0 eslint-rule-composer: 0.3.0 optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.0.0-alpha.41(@typescript-eslint/parser@8.0.0-alpha.41(eslint@9.7.0)(typescript@5.5.4))(eslint@9.7.0)(typescript@5.5.4) + '@typescript-eslint/eslint-plugin': 8.0.0-alpha.41(@typescript-eslint/parser@8.0.0-alpha.41(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4) - eslint-plugin-vitest@0.5.4(@typescript-eslint/eslint-plugin@8.0.0-alpha.41(@typescript-eslint/parser@8.0.0-alpha.41(eslint@9.7.0)(typescript@5.5.4))(eslint@9.7.0)(typescript@5.5.4))(eslint@9.7.0)(typescript@5.5.4)(vitest@2.0.4(@types/node@20.14.12)(@vitest/ui@2.0.4)(jsdom@24.1.1)(sass@1.77.8)): + eslint-plugin-vitest@0.5.4(@typescript-eslint/eslint-plugin@8.0.0-alpha.41(@typescript-eslint/parser@8.0.0-alpha.41(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4)(vitest@2.0.4(@types/node@20.14.12)(@vitest/ui@2.0.4)(jsdom@24.1.1)(sass@1.77.8)): dependencies: - '@typescript-eslint/utils': 7.17.0(eslint@9.7.0)(typescript@5.5.4) - eslint: 9.7.0 + '@typescript-eslint/utils': 7.17.0(eslint@9.8.0)(typescript@5.5.4) + eslint: 9.8.0 optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.0.0-alpha.41(@typescript-eslint/parser@8.0.0-alpha.41(eslint@9.7.0)(typescript@5.5.4))(eslint@9.7.0)(typescript@5.5.4) + '@typescript-eslint/eslint-plugin': 8.0.0-alpha.41(@typescript-eslint/parser@8.0.0-alpha.41(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4) vitest: 2.0.4(@types/node@20.14.12)(@vitest/ui@2.0.4)(jsdom@24.1.1)(sass@1.77.8) transitivePeerDependencies: - supports-color - typescript - eslint-plugin-vue@9.27.0(eslint@9.7.0): + eslint-plugin-vue@9.27.0(eslint@9.8.0): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.7.0) - eslint: 9.7.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@9.8.0) + eslint: 9.8.0 globals: 13.24.0 natural-compare: 1.4.0 nth-check: 2.1.1 postcss-selector-parser: 6.1.1 semver: 7.6.3 - vue-eslint-parser: 9.4.3(eslint@9.7.0) + vue-eslint-parser: 9.4.3(eslint@9.8.0) xml-name-validator: 4.0.0 transitivePeerDependencies: - supports-color optional: true - eslint-plugin-yml@1.14.0(eslint@9.7.0): + eslint-plugin-yml@1.14.0(eslint@9.8.0): dependencies: debug: 4.3.5 - eslint: 9.7.0 - eslint-compat-utils: 0.5.1(eslint@9.7.0) + eslint: 9.8.0 + eslint-compat-utils: 0.5.1(eslint@9.8.0) lodash: 4.17.21 natural-compare: 1.4.0 yaml-eslint-parser: 1.2.3 transitivePeerDependencies: - supports-color - eslint-processor-vue-blocks@0.1.2(eslint@9.7.0): + eslint-processor-vue-blocks@0.1.2(eslint@9.8.0): dependencies: - eslint: 9.7.0 + eslint: 9.8.0 optional: true eslint-rule-composer@0.3.0: {} @@ -5143,20 +5360,20 @@ snapshots: eslint-visitor-keys@4.0.0: {} - eslint@9.7.0: + eslint@9.8.0: dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.7.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.8.0) '@eslint-community/regexpp': 4.11.0 - '@eslint/config-array': 0.17.0 + '@eslint/config-array': 0.17.1 '@eslint/eslintrc': 3.1.0 - '@eslint/js': 9.7.0 + '@eslint/js': 9.8.0 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.3.0 '@nodelib/fs.walk': 1.2.8 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.5 + debug: 4.3.6 escape-string-regexp: 4.0.0 eslint-scope: 8.0.2 eslint-visitor-keys: 4.0.0 @@ -6019,6 +6236,29 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.19.0 fsevents: 2.3.3 + rollup@4.19.1: + dependencies: + '@types/estree': 1.0.5 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.19.1 + '@rollup/rollup-android-arm64': 4.19.1 + '@rollup/rollup-darwin-arm64': 4.19.1 + '@rollup/rollup-darwin-x64': 4.19.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.19.1 + '@rollup/rollup-linux-arm-musleabihf': 4.19.1 + '@rollup/rollup-linux-arm64-gnu': 4.19.1 + '@rollup/rollup-linux-arm64-musl': 4.19.1 + '@rollup/rollup-linux-powerpc64le-gnu': 4.19.1 + '@rollup/rollup-linux-riscv64-gnu': 4.19.1 + '@rollup/rollup-linux-s390x-gnu': 4.19.1 + '@rollup/rollup-linux-x64-gnu': 4.19.1 + '@rollup/rollup-linux-x64-musl': 4.19.1 + '@rollup/rollup-win32-arm64-msvc': 4.19.1 + '@rollup/rollup-win32-ia32-msvc': 4.19.1 + '@rollup/rollup-win32-x64-msvc': 4.19.1 + fsevents: 2.3.3 + optional: true + rrweb-cssom@0.6.0: {} rrweb-cssom@0.7.1: {} @@ -6298,28 +6538,28 @@ snapshots: universalify@0.2.0: {} - unocss@0.61.5(postcss@8.4.40)(rollup@4.19.0)(vite@5.3.5(@types/node@20.14.12)(sass@1.77.8)): + unocss@0.61.6(postcss@8.4.40)(rollup@4.19.1)(vite@5.3.5(@types/node@20.14.12)(sass@1.77.8)): dependencies: - '@unocss/astro': 0.61.5(rollup@4.19.0)(vite@5.3.5(@types/node@20.14.12)(sass@1.77.8)) - '@unocss/cli': 0.61.5(rollup@4.19.0) - '@unocss/core': 0.61.5 - '@unocss/extractor-arbitrary-variants': 0.61.5 - '@unocss/postcss': 0.61.5(postcss@8.4.40) - '@unocss/preset-attributify': 0.61.5 - '@unocss/preset-icons': 0.61.5 - '@unocss/preset-mini': 0.61.5 - '@unocss/preset-tagify': 0.61.5 - '@unocss/preset-typography': 0.61.5 - '@unocss/preset-uno': 0.61.5 - '@unocss/preset-web-fonts': 0.61.5 - '@unocss/preset-wind': 0.61.5 - '@unocss/reset': 0.61.5 - '@unocss/transformer-attributify-jsx': 0.61.5 - '@unocss/transformer-attributify-jsx-babel': 0.61.5 - '@unocss/transformer-compile-class': 0.61.5 - '@unocss/transformer-directives': 0.61.5 - '@unocss/transformer-variant-group': 0.61.5 - '@unocss/vite': 0.61.5(rollup@4.19.0)(vite@5.3.5(@types/node@20.14.12)(sass@1.77.8)) + '@unocss/astro': 0.61.6(rollup@4.19.1)(vite@5.3.5(@types/node@20.14.12)(sass@1.77.8)) + '@unocss/cli': 0.61.6(rollup@4.19.1) + '@unocss/core': 0.61.6 + '@unocss/extractor-arbitrary-variants': 0.61.6 + '@unocss/postcss': 0.61.6(postcss@8.4.40) + '@unocss/preset-attributify': 0.61.6 + '@unocss/preset-icons': 0.61.6 + '@unocss/preset-mini': 0.61.6 + '@unocss/preset-tagify': 0.61.6 + '@unocss/preset-typography': 0.61.6 + '@unocss/preset-uno': 0.61.6 + '@unocss/preset-web-fonts': 0.61.6 + '@unocss/preset-wind': 0.61.6 + '@unocss/reset': 0.61.6 + '@unocss/transformer-attributify-jsx': 0.61.6 + '@unocss/transformer-attributify-jsx-babel': 0.61.6 + '@unocss/transformer-compile-class': 0.61.6 + '@unocss/transformer-directives': 0.61.6 + '@unocss/transformer-variant-group': 0.61.6 + '@unocss/vite': 0.61.6(rollup@4.19.1)(vite@5.3.5(@types/node@20.14.12)(sass@1.77.8)) optionalDependencies: vite: 5.3.5(@types/node@20.14.12)(sass@1.77.8) transitivePeerDependencies: @@ -6453,10 +6693,10 @@ snapshots: - supports-color - terser - vue-eslint-parser@9.4.3(eslint@9.7.0): + vue-eslint-parser@9.4.3(eslint@9.8.0): dependencies: - debug: 4.3.5 - eslint: 9.7.0 + debug: 4.3.6 + eslint: 9.8.0 eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 espree: 9.6.1