From 2965380603bc0b08080a089e8169ca44b15ec63a Mon Sep 17 00:00:00 2001 From: Sebastian Date: Sun, 21 Apr 2024 21:22:19 +0200 Subject: [PATCH] GH-93: Initial Android Support Changes + Tauri 2.0 migration --- .gitignore | 4 +- .yarnrc.yml | 6 + package.json | 9 +- src-tauri/.cargo/config.toml | 4 + src-tauri/Cargo.toml | 33 +- src-tauri/build.rs | 15 +- src-tauri/capabilities/migrated.json | 17 + src-tauri/src/commands/mod.rs | 22 +- src-tauri/src/commands/settings_cmd.rs | 27 +- src-tauri/src/commands/utils/settings.rs | 2 +- src-tauri/src/lib.rs | 88 ++++ src-tauri/src/main.rs | 10 +- src-tauri/src/mobile.rs | 27 ++ src-tauri/src/protocol/message_transmitter.rs | 6 +- src-tauri/src/utils/audio/recorder.rs | 1 + src-tauri/src/utils/constants.rs | 1 + src-tauri/src/utils/file.rs | 6 +- src-tauri/tauri.conf.json | 155 ++---- src/App.tsx | 8 +- src/components/ChannelSearch.tsx | 2 +- src/components/ChannelViewer.tsx | 2 +- src/components/CurrentUserInfo.tsx | 2 +- src/components/GifSearch.tsx | 2 +- src/components/Sidebar.tsx | 2 +- src/components/Titlebar.tsx | 8 +- src/components/UploadBox.tsx | 2 +- src/components/UrlPreview.tsx | 2 +- src/components/UserInfo.tsx | 3 +- .../settings/AdditionalFeatures.tsx | 2 +- src/components/settings/Audio.tsx | 2 +- src/components/settings/Profile.tsx | 2 +- src/helper/BackendMessageHandler.ts | 2 +- src/helper/BrowserUtils.ts | 2 +- src/helper/ChatMessage.ts | 3 +- src/helper/ProfileDataHelper.ts | 2 +- src/helper/UserInfo.tsx | 2 +- src/routes/Chat.tsx | 2 +- src/routes/Login.tsx | 2 +- src/routes/Settings.tsx | 4 +- vite.config.ts | 6 + yarn.lock | 456 +++++++++++------- 41 files changed, 601 insertions(+), 352 deletions(-) create mode 100644 .yarnrc.yml create mode 100644 src-tauri/.cargo/config.toml create mode 100644 src-tauri/capabilities/migrated.json create mode 100644 src-tauri/src/lib.rs create mode 100644 src-tauri/src/mobile.rs diff --git a/.gitignore b/.gitignore index b7b4010..6e63e5c 100644 --- a/.gitignore +++ b/.gitignore @@ -108,4 +108,6 @@ dist-ssr src-tauri/data src-tauri/src/proto/Mumble.proto src-tauri/src/proto/MumbleUDP.proto -src-tauri/gen \ No newline at end of file +src-tauri/gen + +out/ \ No newline at end of file diff --git a/.yarnrc.yml b/.yarnrc.yml new file mode 100644 index 0000000..74018e9 --- /dev/null +++ b/.yarnrc.yml @@ -0,0 +1,6 @@ +# .yarnrc.yml +supportedArchitectures: + os: + - "current" + - "linux" + - "win32" \ No newline at end of file diff --git a/package.json b/package.json index c5d449d..6ebb938 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "type": "module", "license": "MIT", "scripts": { - "dev": "vite", + "dev": "vite --host", "build": "tsc && vite build", "preview": "vite preview" }, @@ -17,7 +17,8 @@ "@mui/material": "^5.12.0", "@mui/styles": "^5.12.0", "@reduxjs/toolkit": "^1.9.5", - "@tauri-apps/api": "^1.2.0", + "@tauri-apps/api": "^2.0.0", + "@tauri-apps/plugin-dialog": "^2.0.0-beta.2", "@types/dompurify": "^3.0.1", "@types/lodash": "^4.14.202", "@types/marked": "^5.0.0", @@ -46,7 +47,7 @@ "react-router-dom": "^6.10.0", "socket.io": "^4.7.4", "socket.io-client": "^4.7.4", - "tauri-plugin-store-api": "https://github.com/tauri-apps/tauri-plugin-store#v1", + "tauri-plugin-store-api": "https://github.com/tauri-apps/tauri-plugin-store#v2", "tinycolor2": "^1.6.0" }, "devDependencies": { @@ -54,6 +55,6 @@ "@types/react-dom": "^18.0.11", "@vitejs/plugin-react": "^3.1.0", "typescript": "^4.9.3", - "vite": "^4.2.0" + "vite": "^5.2.10" } } diff --git a/src-tauri/.cargo/config.toml b/src-tauri/.cargo/config.toml new file mode 100644 index 0000000..58fa028 --- /dev/null +++ b/src-tauri/.cargo/config.toml @@ -0,0 +1,4 @@ +[build] +target = "x86_64-pc-windows-msvc" + +[target] diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index aea3d99..c5c2392 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -2,19 +2,19 @@ name = "app" version = "0.2.2" description = "Fancy Mumble" -authors = ["you"] +authors = ["SetZero"] license = "MIT" repository = "" default-run = "app" edition = "2021" -rust-version = "1.59" +rust-version = "1.77" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [build-dependencies] -tauri-build = { version = "1.4.0", features = [] } +tauri-build = { version = "2.0.0-beta", features = [] } prost-build = "0.12.3" -reqwest = { version = "0.11", features = ["cookies"] } +reqwest = { version = "0.12", features = ["cookies"] } sha2 = "0.10.6" tokio = { version = "1", features = ["full"] } patch = "0.7.0" @@ -22,7 +22,7 @@ patch = "0.7.0" [dependencies] serde_json = "1.0" serde = { version = "1.0", features = ["derive"] } -tauri = { version = "1.5.4", features = [ "path-all", "dialog-open", "global-shortcut-all", "shell-open", "updater", "window-close", "window-hide", "window-maximize", "window-minimize", "window-start-dragging", "window-unmaximize", "window-unminimize"] } +tauri = { version = "2.0.0-beta", features = [] } futures = "0.3.4" tokio = { version = "1", features = ["full"] } tokio-native-tls = "0.3.1" @@ -31,23 +31,26 @@ byteorder = "1.4.3" async-trait = "0.1.68" tracing = "0.1" tracing-subscriber = {version = "0.3", features = ["env-filter"] } -base64 = "0.21.0" +base64 = "0.22.0" openssl = "0.10.52" os_info = "3" -opus = "0.3.0" rodio = "0.17.1" -image = "0.24.6" directories = "5.0.1" num-traits = "0.2" -brotli = "3.3.4" +brotli = "5.0.0" webbrowser = "0.8.10" -reqwest = "0.11" -scraper = "0.18.1" -tauri-plugin-window-state = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v1" } -tauri-plugin-store = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v1" } +reqwest = "0.12" +scraper = "0.19" +tauri-plugin-window-state = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v2" } +tauri-plugin-store = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v2" } symphonia = "0.5.3" mime_guess = "2.0.4" uuid = "1.7.0" +tauri-plugin-dialog = "2.0.0-beta.4" +image = {version = "0.25.1", features = ["gif", "png"], default-features = false } # zune jpeg is broken in android builds +audiopus_sys = { git = "F:/Dokumente/projekte/rust/audiopus_sys", branch = "0.0.6" } +opus = "0.3.0" +oboe = { version = "0.6.1", features = [ "java-interface", "shared-stdcxx" ] } # Android [dev-dependencies] tempfile = "3.5.0" @@ -63,6 +66,7 @@ default = ["custom-protocol"] # DO NOT remove this custom-protocol = ["tauri/custom-protocol"] + [profile.release] debug = 1 @@ -73,3 +77,6 @@ codegen-units = 1 [rust] debuginfo-level = 1 + +[lib] +crate-type = ["staticlib", "cdylib", "rlib"] diff --git a/src-tauri/build.rs b/src-tauri/build.rs index d90623f..c949819 100644 --- a/src-tauri/build.rs +++ b/src-tauri/build.rs @@ -84,8 +84,9 @@ async fn download_file( } fn main() -> io::Result<()> { - let mumble_proto = Path::new("src/proto/Mumble.proto"); - let mumble_udp_proto = Path::new("src/proto/MumbleUDP.proto"); + let mumble_proto = Path::new("../out/proto/Mumble.proto"); + let mumble_udp_proto = Path::new("../out/proto/MumbleUDP.proto"); + let fancy_proto = Path::new("src/proto/Fancy.proto"); let patch_file = Path::new("src/proto/Mumble.proto.patch"); let mumble_proto_bytes = read_file_as_bytes(mumble_proto).unwrap_or_default(); @@ -116,9 +117,13 @@ fn main() -> io::Result<()> { }); } - prost_build::compile_protos(&["src/proto/Mumble.proto"], &["src/"])?; - prost_build::compile_protos(&["src/proto/MumbleUDP.proto"], &["src/"])?; - prost_build::compile_protos(&["src/proto/Fancy.proto"], &["src/"])?; + let mumble_proto_str = mumble_proto.to_str().expect("Failed to convert path to string"); + let mumble_udp_proto_str = mumble_udp_proto.to_str().expect("Failed to convert path to string"); + let fancy_proto_str = fancy_proto.to_str().expect("Failed to convert path to string"); + + prost_build::compile_protos(&[mumble_proto_str], &["../out"])?; + prost_build::compile_protos(&[mumble_udp_proto_str], &["../out"])?; + prost_build::compile_protos(&[fancy_proto_str], &["src/"])?; tauri_build::build(); Ok(()) diff --git a/src-tauri/capabilities/migrated.json b/src-tauri/capabilities/migrated.json new file mode 100644 index 0000000..03fd357 --- /dev/null +++ b/src-tauri/capabilities/migrated.json @@ -0,0 +1,17 @@ +{ + "identifier": "migrated", + "description": "permissions that were migrated from v1", + "local": true, + "windows": [ + "main" + ], + "permissions": [ + "path:default", + "event:default", + "window:default", + "app:default", + "resources:default", + "menu:default", + "tray:default" + ] +} \ No newline at end of file diff --git a/src-tauri/src/commands/mod.rs b/src-tauri/src/commands/mod.rs index 96507fa..32dbfed 100644 --- a/src-tauri/src/commands/mod.rs +++ b/src-tauri/src/commands/mod.rs @@ -16,13 +16,13 @@ use crate::{ protocol::message_transmitter::MessageTransmitter, utils::{audio::device_manager::AudioDeviceManager, constants::get_project_dirs}, }; -use tauri::{AppHandle, State}; -use tauri_plugin_window_state::{AppHandleExt, StateFlags}; +use tauri::{AppHandle, Manager, State}; use tokio::sync::{ broadcast::{self, Receiver, Sender}, Mutex, }; use tracing::{error, info, trace}; +use tracing_subscriber::fmt::format; use self::utils::settings::{ AudioOptions, AudioOutputSettings, AudioPreviewContainer, AudioUserState, Coordinates, @@ -32,10 +32,12 @@ use image::{ imageops::{self, FilterType}, GenericImageView, }; +#[cfg(desktop)] +use tauri_plugin_window_state::{AppHandleExt, StateFlags}; pub struct ConnectionState { pub connection: Mutex>, - pub window: Arc>, + pub window: Arc>, pub package_info: Mutex, pub message_handler: Mutex>>, pub device_manager: Mutex>, @@ -205,10 +207,9 @@ pub async fn crop_and_store_image( zoom: f32, crop: Coordinates, rotation: i32, + app_handle: tauri::AppHandle ) -> Result { - let project_dirs = get_project_dirs().ok_or("Unable to load project dir")?; - - let data_dir = project_dirs.cache_dir(); + let data_dir = app_handle.path().app_data_dir().map_err(|e| format!("{e:?}"))?; let path = Path::new(path); let img = image::open(path).map_err(|e| e.to_string())?; @@ -354,6 +355,7 @@ pub async fn enable_audio_info(state: State<'_, ConnectionState>) -> Result<(), Ok(()) } +#[cfg(desktop)] #[allow(clippy::needless_pass_by_value)] // tauri command #[tauri::command] pub fn close_app(app: AppHandle) { @@ -362,3 +364,11 @@ pub fn close_app(app: AppHandle) { } app.exit(0); } + +#[cfg(desktop)] +#[tauri::command] +pub fn dev_tools(app: AppHandle) { + if let Err(e) = app.get_webview_window("main").map_or_else(|| Err(()), |w| Ok(w.open_devtools())) { + error!("Failed to toggle dev tools: {:?}", e); + } +} \ No newline at end of file diff --git a/src-tauri/src/commands/settings_cmd.rs b/src-tauri/src/commands/settings_cmd.rs index d628d30..46c8652 100644 --- a/src-tauri/src/commands/settings_cmd.rs +++ b/src-tauri/src/commands/settings_cmd.rs @@ -3,6 +3,7 @@ use std::{ io::{Seek, SeekFrom, Write}, }; +use tauri::Manager; use tracing::{info, trace}; use crate::{ @@ -12,10 +13,9 @@ use crate::{ const SERVER_SETTINS_FILE: &str = "server.json"; -pub fn get_settings_file(file_name: &str) -> Result { - let project_dirs = get_project_dirs().ok_or("Unable to load project dir")?; - let data_dir = project_dirs.config_dir(); - std::fs::create_dir_all(data_dir).map_err(|e| format!("{e:?}"))?; +pub fn get_settings_file(file_name: &str, app: &tauri::AppHandle) -> Result { + let data_dir = app.path().app_config_dir().map_err(|e| format!("{e:?}"))?; + std::fs::create_dir_all(&data_dir).map_err(|e| format!("{e:?}"))?; let settings_file = std::fs::OpenOptions::new() .read(true) .write(true) @@ -32,9 +32,10 @@ pub fn save_server( server_port: u16, username: &str, identity: Option, + app_handle: tauri::AppHandle ) -> Result<(), String> { info!("Saving server: {server_host}:{server_port}"); - let mut server_file = get_settings_file(SERVER_SETTINS_FILE)?; + let mut server_file = get_settings_file(SERVER_SETTINS_FILE, &app_handle)?; // read the json content using serde and append the new server let mut server_list = @@ -73,14 +74,13 @@ pub fn save_server( } #[tauri::command] -pub fn get_server_list() -> Result, String> { +pub fn get_server_list(app_handle: tauri::AppHandle) -> Result, String> { info!("Getting server list"); - let project_dirs = get_project_dirs().ok_or("Unable to load project dir")?; - let data_dir = project_dirs.config_dir(); + let data_dir = app_handle.path().app_config_dir().map_err(|e| format!("{e:?}"))?; // create config dir if it doesn't exist - std::fs::create_dir_all(data_dir).map_err(|e| format!("{e:?}"))?; + std::fs::create_dir_all(&data_dir).map_err(|e| format!("{e:?}"))?; // open server.json or create it if it doesn't exist let server_file = std::fs::OpenOptions::new() @@ -100,14 +100,11 @@ pub fn get_server_list() -> Result, String> { } #[tauri::command] -pub fn get_identity_certs() -> Result, String> { - let project_dirs = get_project_dirs() - .ok_or_else(|| CertificateError::new("Unable to load project dir")) - .map_err(|e| format!("{e:?}"))?; - let data_dir = project_dirs.data_dir(); +pub fn get_identity_certs(app_handle: tauri::AppHandle) -> Result, String> { + let data_dir = app_handle.path().app_data_dir().map_err(|e| format!("{e:?}"))?; if !data_dir.exists() { - std::fs::create_dir_all(data_dir).map_err(|e| format!("{e:?}"))?; + std::fs::create_dir_all(&data_dir).map_err(|e| format!("{e:?}"))?; } let mut certs = Vec::new(); diff --git a/src-tauri/src/commands/utils/settings.rs b/src-tauri/src/commands/utils/settings.rs index 95acc00..c114a88 100644 --- a/src-tauri/src/commands/utils/settings.rs +++ b/src-tauri/src/commands/utils/settings.rs @@ -68,7 +68,7 @@ pub struct AudioOutputSettings { #[derive(Clone, Debug)] pub struct AudioPreviewContainer { pub enabled: bool, - pub window: Arc>, + pub window: Arc>, } #[derive(Clone, Debug, Deserialize, Serialize)] diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs new file mode 100644 index 0000000..793c9ca --- /dev/null +++ b/src-tauri/src/lib.rs @@ -0,0 +1,88 @@ +mod commands; +mod connection; +mod errors; +mod manager; +mod mumble; +mod protocol; +mod utils; + +use tauri::App; + +use crate::commands::{ + change_user_state, connect_to_server, crop_and_store_image, disable_audio_info, + enable_audio_info, get_audio_devices, like_message, logout, send_message, + set_audio_input_setting, set_audio_output_setting, set_audio_user_state, set_user_image, + settings_cmd::{get_identity_certs, get_server_list, save_server}, + web_cmd::{ + convert_url_to_base64, get_open_graph_data_from_website, get_tenor_search_results, + get_tenor_trending_results, open_browser, + }, + zip_cmd::{convert_to_base64, unzip_data_from_utf8, zip_data_to_utf8}, +}; + +#[cfg(mobile)] +mod mobile; +#[cfg(mobile)] +pub use mobile::*; + +pub type SetupHook = Box Result<(), Box> + Send>; + +#[derive(Default)] +pub struct AppBuilder { + setup: Option, +} + +impl AppBuilder { + pub fn new() -> Self { + Self::default() + } + + #[must_use] + pub fn setup(mut self, setup: F) -> Self + where + F: FnOnce(&mut App) -> Result<(), Box> + Send + 'static, + { + self.setup.replace(Box::new(setup)); + self + } + + pub fn run(self) { + let setup = self.setup; + tauri::Builder::default() + .plugin(tauri_plugin_store::Builder::default().build()) + .setup(move |app| { + if let Some(setup) = setup { + (setup)(app)?; + } + Ok(()) + }) + .invoke_handler(tauri::generate_handler![ + connect_to_server, + save_server, + get_server_list, + send_message, + logout, + like_message, + set_user_image, + crop_and_store_image, + change_user_state, + get_audio_devices, + zip_data_to_utf8, + unzip_data_from_utf8, + convert_to_base64, + open_browser, + get_open_graph_data_from_website, + get_identity_certs, + set_audio_input_setting, + set_audio_output_setting, + enable_audio_info, + disable_audio_info, + get_tenor_search_results, + get_tenor_trending_results, + convert_url_to_base64, + set_audio_user_state, + ]) + .run(tauri::generate_context!()) + .expect("error while running tauri application"); + } +} diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index 6aad528..fdf3bcc 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -14,6 +14,7 @@ mod utils; #[cfg(test)] mod tests; +use core::panic; use std::{collections::HashMap, sync::Arc}; use commands::{web_cmd::CrawlerState, ConnectionState}; @@ -27,8 +28,8 @@ use tracing_subscriber::{ }; use crate::commands::{ - change_user_state, close_app, connect_to_server, crop_and_store_image, disable_audio_info, - enable_audio_info, get_audio_devices, like_message, logout, send_message, + change_user_state, close_app, connect_to_server, crop_and_store_image, dev_tools, + disable_audio_info, enable_audio_info, get_audio_devices, like_message, logout, send_message, set_audio_input_setting, set_audio_output_setting, set_audio_user_state, set_user_image, settings_cmd::{get_identity_certs, get_server_list, save_server}, web_cmd::{ @@ -65,7 +66,7 @@ async fn main() { app.manage(ConnectionState { connection: Mutex::new(None), window: Arc::new(Mutex::new( - app.get_window("main").expect("window not found"), + app.get_webview_window("main").expect("window not found"), )), package_info: Mutex::new(app.package_info().clone()), message_handler: Mutex::new(HashMap::new()), @@ -103,7 +104,8 @@ async fn main() { get_tenor_trending_results, convert_url_to_base64, set_audio_user_state, - close_app + close_app, + dev_tools ]) .run(tauri::generate_context!()) .expect("error while running tauri application"); diff --git a/src-tauri/src/mobile.rs b/src-tauri/src/mobile.rs new file mode 100644 index 0000000..e78670a --- /dev/null +++ b/src-tauri/src/mobile.rs @@ -0,0 +1,27 @@ +use tracing::Level; +use tracing_subscriber::{ + fmt::{self, format::FmtSpan}, + EnvFilter, +}; + +fn init_logging() { + let format = fmt::format() + .with_level(true) + .with_target(false) + .with_thread_ids(false) + .with_thread_names(false) + .compact(); // use the `Compact` formatting style. + + tracing_subscriber::fmt() + .with_max_level(Level::TRACE) + .event_format(format) + .with_env_filter(EnvFilter::from_default_env().add_directive(Level::INFO.into())) + .with_span_events(FmtSpan::CLOSE) + .init(); +} + +#[tauri::mobile_entry_point] +fn main() { + init_logging(); + super::AppBuilder::new().run(); +} \ No newline at end of file diff --git a/src-tauri/src/protocol/message_transmitter.rs b/src-tauri/src/protocol/message_transmitter.rs index 74d36b5..a5696b2 100644 --- a/src-tauri/src/protocol/message_transmitter.rs +++ b/src-tauri/src/protocol/message_transmitter.rs @@ -12,13 +12,13 @@ use tracing::{debug, trace}; pub struct MessageTransmitter { recv_channel: Receiver, - window: tauri::Window, + window: tauri::WebviewWindow, transmitter_thread: Option>, running: Arc>, } impl MessageTransmitter { - pub fn new(recv_channel: Receiver, window: tauri::Window) -> Self { + pub fn new(recv_channel: Receiver, window: tauri::WebviewWindow) -> Self { Self { recv_channel, window, @@ -47,7 +47,7 @@ impl MessageTransmitter { select! { Ok(result) = channel.recv() => { trace!("backend_update received"); - _ = window_clone.emit_all("backend_update", result); + _ = window_clone.emit("backend_update", result); } _ = interval.tick() => {} } diff --git a/src-tauri/src/utils/audio/recorder.rs b/src-tauri/src/utils/audio/recorder.rs index 87e5ef5..09bd25f 100644 --- a/src-tauri/src/utils/audio/recorder.rs +++ b/src-tauri/src/utils/audio/recorder.rs @@ -7,6 +7,7 @@ use std::{ thread, time::Duration, }; +use tauri::Manager; use tokio::sync::broadcast::{self, Receiver}; use tracing::{error, info, trace, warn}; diff --git a/src-tauri/src/utils/constants.rs b/src-tauri/src/utils/constants.rs index bf7eadc..96e2e8e 100644 --- a/src-tauri/src/utils/constants.rs +++ b/src-tauri/src/utils/constants.rs @@ -1,4 +1,5 @@ use directories::ProjectDirs; +use tauri::path::PathResolver; const QUALIFIER: &str = "com"; const ORGANIZATION: &str = "fancy-mumble"; diff --git a/src-tauri/src/utils/file.rs b/src-tauri/src/utils/file.rs index 3302055..97aa530 100644 --- a/src-tauri/src/utils/file.rs +++ b/src-tauri/src/utils/file.rs @@ -78,8 +78,10 @@ pub fn read_image_as_thumbnail(filename: &str, max_size: u32) -> AnyError(null); useEffect(() => { @@ -24,9 +27,10 @@ function App() { return (
- + +
) } diff --git a/src/components/ChannelSearch.tsx b/src/components/ChannelSearch.tsx index 4099f54..4bbea97 100644 --- a/src/components/ChannelSearch.tsx +++ b/src/components/ChannelSearch.tsx @@ -3,7 +3,7 @@ import SearchIcon from '@mui/icons-material/Search'; import React from "react"; import { useSelector } from "react-redux"; import { RootState } from "../store/store"; -import { invoke } from "@tauri-apps/api"; +import { invoke } from "@tauri-apps/api/core"; import './styles/ChannelSearch.css'; import Fuse from 'fuse.js'; import { useTranslation } from "react-i18next"; diff --git a/src/components/ChannelViewer.tsx b/src/components/ChannelViewer.tsx index 949ba29..72d03c5 100644 --- a/src/components/ChannelViewer.tsx +++ b/src/components/ChannelViewer.tsx @@ -3,7 +3,7 @@ import { ChannelState } from "../store/features/users/channelSlice"; import { UsersState } from "../store/features/users/userSlice"; import { useSelector } from "react-redux"; import { RootState } from "../store/store"; -import { invoke } from "@tauri-apps/api"; +import { invoke } from "@tauri-apps/api/core"; import ArrowForwardIosIcon from '@mui/icons-material/ArrowForwardIos'; import MicOffIcon from '@mui/icons-material/MicOff'; import VolumeOffIcon from '@mui/icons-material/VolumeOff'; diff --git a/src/components/CurrentUserInfo.tsx b/src/components/CurrentUserInfo.tsx index e765cd4..1f6784f 100644 --- a/src/components/CurrentUserInfo.tsx +++ b/src/components/CurrentUserInfo.tsx @@ -8,7 +8,7 @@ import VolumeUpIcon from '@mui/icons-material/VolumeUp'; import VolumeOffIcon from '@mui/icons-material/VolumeOff'; import MicOffIcon from '@mui/icons-material/MicOff'; import './styles/CurrentUserInfo.css' -import { invoke } from "@tauri-apps/api"; +import { invoke } from "@tauri-apps/api/core"; import { UpdateableUserState, UsersState } from "../store/features/users/userSlice"; import "./styles/common.css" import { useCallback, useEffect, useMemo } from "react"; diff --git a/src/components/GifSearch.tsx b/src/components/GifSearch.tsx index 6b9697f..a33ea46 100644 --- a/src/components/GifSearch.tsx +++ b/src/components/GifSearch.tsx @@ -5,7 +5,7 @@ import { useTranslation } from 'react-i18next'; import { debounce, set } from 'lodash'; import { useSelector } from 'react-redux'; import { RootState } from '../store/store'; -import { invoke } from '@tauri-apps/api'; +import { invoke } from "@tauri-apps/api/core"; import { use } from 'i18next'; import { Gif } from '@mui/icons-material'; import ContainedBackdrop from './utils/ContainedBackdrop'; diff --git a/src/components/Sidebar.tsx b/src/components/Sidebar.tsx index e0754f6..da4697a 100644 --- a/src/components/Sidebar.tsx +++ b/src/components/Sidebar.tsx @@ -4,7 +4,7 @@ import LogoutIcon from '@mui/icons-material/Logout'; import InfoIcon from '@mui/icons-material/Info'; import SettingsIcon from '@mui/icons-material/Settings'; import CastIcon from '@mui/icons-material/Cast'; -import { invoke } from "@tauri-apps/api"; +import { invoke } from "@tauri-apps/api/core"; import { useNavigate } from "react-router-dom"; import { useSelector } from 'react-redux'; import { RootState } from "../store/store"; diff --git a/src/components/Titlebar.tsx b/src/components/Titlebar.tsx index 3a97ff7..a0d5b66 100644 --- a/src/components/Titlebar.tsx +++ b/src/components/Titlebar.tsx @@ -1,9 +1,9 @@ -import { appWindow } from "@tauri-apps/api/window"; +import { getCurrent } from "@tauri-apps/api/webviewWindow"; import CloseIcon from '@mui/icons-material/Close'; import MinimizeIcon from '@mui/icons-material/Minimize'; import FilterNoneIcon from '@mui/icons-material/FilterNone'; import { IconButton, Paper } from "@mui/material"; -import { invoke } from "@tauri-apps/api"; +import { invoke } from "@tauri-apps/api/core"; import './styles/Titlebar.css'; function Titlebar() { const closeApp = () => { @@ -18,10 +18,10 @@ function Titlebar() { zIndex: 9999, userSelect: 'none', }}> - appWindow.minimize()} className="titlebar-button" > + getCurrent().window.minimize()} className="titlebar-button" > - appWindow.toggleMaximize()} className="titlebar-button"> + getCurrent().window.toggleMaximize()} className="titlebar-button"> closeApp()} className="titlebar-button" color="error"> diff --git a/src/components/UploadBox.tsx b/src/components/UploadBox.tsx index f383254..8329f1c 100644 --- a/src/components/UploadBox.tsx +++ b/src/components/UploadBox.tsx @@ -1,5 +1,5 @@ import { Box } from "@mui/material"; -import { open } from '@tauri-apps/api/dialog'; +import { open } from '@tauri-apps/plugin-dialog'; import { listen } from '@tauri-apps/api/event'; import './styles/UploadBox.css' import { useEffect, useState } from "react"; diff --git a/src/components/UrlPreview.tsx b/src/components/UrlPreview.tsx index 5491ea9..64766a7 100644 --- a/src/components/UrlPreview.tsx +++ b/src/components/UrlPreview.tsx @@ -2,7 +2,7 @@ import { Box, Button, Card, CardActionArea, CardActions, CardContent, CardMedia, import "./styles/UserInfo.css"; import "./styles/common.css" import { useEffect, useMemo, useState } from "react"; -import { invoke } from "@tauri-apps/api"; +import { invoke } from "@tauri-apps/api/core" import { openInBrowser } from "../helper/BrowserUtils"; import { useSelector } from "react-redux"; import { RootState } from "../store/store"; diff --git a/src/components/UserInfo.tsx b/src/components/UserInfo.tsx index 0e6d5b8..5495950 100644 --- a/src/components/UserInfo.tsx +++ b/src/components/UserInfo.tsx @@ -5,12 +5,11 @@ import { getBackgroundFromComment, getProfileImage, getTextFromcomment } from ". import SendIcon from '@mui/icons-material/Send'; import "./styles/UserInfo.css"; import dayjs from "dayjs"; -import MessageParser from "../helper/MessageParser"; import { ChatMessageHandler } from "../helper/ChatMessage"; import { useDispatch, useSelector } from "react-redux"; import { RootState } from "../store/store"; import "./styles/common.css" -import { invoke } from "@tauri-apps/api"; +import { invoke } from "@tauri-apps/api/core"; import { useTranslation } from "react-i18next"; interface UserInfoProps { diff --git a/src/components/settings/AdditionalFeatures.tsx b/src/components/settings/AdditionalFeatures.tsx index 7d5b4cc..f8544d5 100644 --- a/src/components/settings/AdditionalFeatures.tsx +++ b/src/components/settings/AdditionalFeatures.tsx @@ -3,7 +3,7 @@ import React, { useState } from 'react'; import { useDispatch, useSelector } from 'react-redux'; import { RootState } from '../../store/store'; import { updateApiKey, FrontendSettings, updateFrontendSettings, clearFrontendSettings } from '../../store/features/users/frontendSettings'; -import { invoke } from '@tauri-apps/api'; +import { invoke } from "@tauri-apps/api/core"; import { ActionCreatorWithPayload } from '@reduxjs/toolkit'; import { t } from 'i18next'; import { persistFrontendSettings, persistentStorage } from '../../store/persistance/persist'; diff --git a/src/components/settings/Audio.tsx b/src/components/settings/Audio.tsx index 47c0a4c..b5b03de 100644 --- a/src/components/settings/Audio.tsx +++ b/src/components/settings/Audio.tsx @@ -1,5 +1,5 @@ import { Box, Button, Collapse, Container, FormControl, FormControlLabel, Grid, IconButton, InputLabel, LinearProgress, MenuItem, Select, Slider, Switch, Typography, RadioGroup, Radio, Paper, InputBase, Divider } from "@mui/material"; -import { invoke } from "@tauri-apps/api"; +import { invoke } from "@tauri-apps/api/core"; import LoopIcon from '@mui/icons-material/Loop'; import { useEffect, useState } from "react"; import KeyboardIcon from '@mui/icons-material/Keyboard'; diff --git a/src/components/settings/Profile.tsx b/src/components/settings/Profile.tsx index 5851ace..96a5f53 100644 --- a/src/components/settings/Profile.tsx +++ b/src/components/settings/Profile.tsx @@ -1,5 +1,5 @@ import { Alert, Backdrop, Box, Card, CardContent, CircularProgress, Container, Divider, Grid, TextField, Typography } from "@mui/material"; -import { invoke } from "@tauri-apps/api"; +import { invoke } from "@tauri-apps/api/core"; import UploadBox from "../UploadBox"; import React, { useState } from 'react'; import DefaultColorPicker from "../ColorPicker"; diff --git a/src/helper/BackendMessageHandler.ts b/src/helper/BackendMessageHandler.ts index 798e6be..6b2b9cb 100644 --- a/src/helper/BackendMessageHandler.ts +++ b/src/helper/BackendMessageHandler.ts @@ -5,7 +5,7 @@ import { addChatMessage } from '../store/features/users/chatMessageSlice'; import { Dispatch } from 'react'; import { AnyAction } from '@reduxjs/toolkit'; import { ServerSync, updateServerInfo } from '../store/features/server/serverSlice'; -import { invoke } from '@tauri-apps/api/tauri'; +import { invoke } from '@tauri-apps/api/core'; import { useNavigate } from 'react-router-dom'; enum MessageTypes { diff --git a/src/helper/BrowserUtils.ts b/src/helper/BrowserUtils.ts index 1762c8b..64970a8 100644 --- a/src/helper/BrowserUtils.ts +++ b/src/helper/BrowserUtils.ts @@ -1,4 +1,4 @@ -import { invoke } from "@tauri-apps/api"; +import { invoke } from "@tauri-apps/api/core"; export function openInBrowser(url: string) { invoke('open_browser', { url: url }); diff --git a/src/helper/ChatMessage.ts b/src/helper/ChatMessage.ts index bd2ee12..f6499ee 100644 --- a/src/helper/ChatMessage.ts +++ b/src/helper/ChatMessage.ts @@ -1,4 +1,4 @@ -import { invoke } from "@tauri-apps/api"; +import { invoke } from "@tauri-apps/api/core"; import { TextMessage, addChatMessage, deleteAllMessages } from "../store/features/users/chatMessageSlice"; import { UsersState } from "../store/features/users/userSlice"; import MessageParser from "./MessageParser"; @@ -42,6 +42,7 @@ export class ChatMessageHandler { public sendChatMessage(chatMessage: string, userInfo: UsersState | undefined) { if (chatMessage.length === 0) return; + console.log("sending message", chatMessage); let message = new MessageParser(chatMessage) .parseLinks() diff --git a/src/helper/ProfileDataHelper.ts b/src/helper/ProfileDataHelper.ts index 8435e81..986caf4 100644 --- a/src/helper/ProfileDataHelper.ts +++ b/src/helper/ProfileDataHelper.ts @@ -1,4 +1,4 @@ -import { invoke } from "@tauri-apps/api"; +import { invoke } from "@tauri-apps/api/core"; import { UserCommentData } from "../store/features/users/userSlice"; const TOKEN = ">>>FM;"; diff --git a/src/helper/UserInfo.tsx b/src/helper/UserInfo.tsx index f91e2bd..f0115d9 100644 --- a/src/helper/UserInfo.tsx +++ b/src/helper/UserInfo.tsx @@ -1,7 +1,7 @@ import { UpdateableUserState, UsersState } from "../store/features/users/userSlice"; import { useDispatch, useSelector } from 'react-redux'; import { RootState } from "../store/store"; -import { invoke } from "@tauri-apps/api"; +import { invoke } from "@tauri-apps/api/core"; export function updateUserValue(currentUser: UsersState | undefined, update: (currentUser: UsersState, operator: UpdateableUserState) => void) { if (currentUser) { diff --git a/src/routes/Chat.tsx b/src/routes/Chat.tsx index 42fe166..c0a726b 100644 --- a/src/routes/Chat.tsx +++ b/src/routes/Chat.tsx @@ -14,7 +14,7 @@ import QuillChatInput from '../components/QuillChatInput'; import { persistentStorage } from '../store/persistance/persist'; import { FrontendSettings, updateFrontendSettings } from '../store/features/users/frontendSettings'; import { updateAudioSettings } from '../store/features/users/audioSettings'; -import { invoke } from '@tauri-apps/api'; +import { invoke } from "@tauri-apps/api/core"; import i18n from '../i18n/i18n'; import { updateCurrentUserListeningInfo } from '../store/features/users/userSlice'; diff --git a/src/routes/Login.tsx b/src/routes/Login.tsx index c877cd9..add8e0e 100644 --- a/src/routes/Login.tsx +++ b/src/routes/Login.tsx @@ -2,7 +2,7 @@ import React, { useEffect, useState } from 'react' import '../App.css'; import './styles/Login.css'; import { Accordion, AccordionDetails, AccordionSummary, Alert, Avatar, Box, IconButton, LinearProgress, List, ListItem, ListItemAvatar, ListItemButton, ListItemText, MenuItem, Typography, Menu } from '@mui/material' -import { invoke } from '@tauri-apps/api/tauri' +import { invoke } from '@tauri-apps/api/core' import { useLocation, useNavigate } from 'react-router-dom'; import { useDispatch, useSelector } from 'react-redux'; import { RootState } from '../store/store'; diff --git a/src/routes/Settings.tsx b/src/routes/Settings.tsx index 3ec4b9e..7538316 100644 --- a/src/routes/Settings.tsx +++ b/src/routes/Settings.tsx @@ -13,10 +13,9 @@ import NotificationsIcon from '@mui/icons-material/Notifications'; import KeyboardIcon from '@mui/icons-material/Keyboard'; import SettingsSuggestIcon from '@mui/icons-material/SettingsSuggest'; import AdvancedSettings from "../components/settings/AdvancedSettings"; -import Language from "@mui/icons-material/Language"; -import { Lan } from "@mui/icons-material"; import LanguageSettings from "../components/settings/LanguageSettings"; import LanguageIcon from '@mui/icons-material/Language'; +import AppearanceSettings from "../components/settings/AppearanceSettings"; import { useTranslation } from "react-i18next"; enum SettingsTab { @@ -142,6 +141,7 @@ function Settings() { {selectedIndex === SettingsTab.Privacy &&
{t('Privacy', { ns: "privacy" })}
} {selectedIndex === SettingsTab.Advanced && } {selectedIndex === SettingsTab.Language && } + {selectedIndex === SettingsTab.Appearance && } diff --git a/vite.config.ts b/vite.config.ts index 8329621..eea2071 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,11 +1,17 @@ import { defineConfig } from 'vite'; export default defineConfig({ + // prevent vite from obscuring rust errors clearScreen: false, // Tauri expects a fixed port, fail if that port is not available server: { + //port: 5173, strictPort: true, + /*hmr: { + protocol: 'ws', + port: 5183, + },*/ }, // to make use of `TAURI_PLATFORM`, `TAURI_ARCH`, `TAURI_FAMILY`, // `TAURI_PLATFORM_VERSION`, `TAURI_PLATFORM_TYPE` and `TAURI_DEBUG` diff --git a/yarn.lock b/yarn.lock index eed57fe..26f3559 100644 --- a/yarn.lock +++ b/yarn.lock @@ -322,115 +322,120 @@ resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz#d0fce5d07b0620caa282b5131c297bb60f9d87e6" integrity sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww== -"@esbuild/android-arm64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz#984b4f9c8d0377443cc2dfcef266d02244593622" - integrity sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ== - -"@esbuild/android-arm@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.18.20.tgz#fedb265bc3a589c84cc11f810804f234947c3682" - integrity sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw== - -"@esbuild/android-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.18.20.tgz#35cf419c4cfc8babe8893d296cd990e9e9f756f2" - integrity sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg== - -"@esbuild/darwin-arm64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz#08172cbeccf95fbc383399a7f39cfbddaeb0d7c1" - integrity sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA== - -"@esbuild/darwin-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz#d70d5790d8bf475556b67d0f8b7c5bdff053d85d" - integrity sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ== - -"@esbuild/freebsd-arm64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz#98755cd12707f93f210e2494d6a4b51b96977f54" - integrity sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw== - -"@esbuild/freebsd-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz#c1eb2bff03915f87c29cece4c1a7fa1f423b066e" - integrity sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ== - -"@esbuild/linux-arm64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz#bad4238bd8f4fc25b5a021280c770ab5fc3a02a0" - integrity sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA== - -"@esbuild/linux-arm@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz#3e617c61f33508a27150ee417543c8ab5acc73b0" - integrity sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg== - -"@esbuild/linux-ia32@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz#699391cccba9aee6019b7f9892eb99219f1570a7" - integrity sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA== - -"@esbuild/linux-loong64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz#e6fccb7aac178dd2ffb9860465ac89d7f23b977d" - integrity sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg== - -"@esbuild/linux-mips64el@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz#eeff3a937de9c2310de30622a957ad1bd9183231" - integrity sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ== - -"@esbuild/linux-ppc64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz#2f7156bde20b01527993e6881435ad79ba9599fb" - integrity sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA== - -"@esbuild/linux-riscv64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz#6628389f210123d8b4743045af8caa7d4ddfc7a6" - integrity sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A== - -"@esbuild/linux-s390x@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz#255e81fb289b101026131858ab99fba63dcf0071" - integrity sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ== - -"@esbuild/linux-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz#c7690b3417af318a9b6f96df3031a8865176d338" - integrity sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w== - -"@esbuild/netbsd-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz#30e8cd8a3dded63975e2df2438ca109601ebe0d1" - integrity sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A== - -"@esbuild/openbsd-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz#7812af31b205055874c8082ea9cf9ab0da6217ae" - integrity sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg== - -"@esbuild/sunos-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz#d5c275c3b4e73c9b0ecd38d1ca62c020f887ab9d" - integrity sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ== - -"@esbuild/win32-arm64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz#73bc7f5a9f8a77805f357fab97f290d0e4820ac9" - integrity sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg== - -"@esbuild/win32-ia32@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz#ec93cbf0ef1085cc12e71e0d661d20569ff42102" - integrity sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g== - -"@esbuild/win32-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz#786c5f41f043b07afb1af37683d7c33668858f6d" - integrity sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ== +"@esbuild/aix-ppc64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz#a70f4ac11c6a1dfc18b8bbb13284155d933b9537" + integrity sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g== + +"@esbuild/android-arm64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz#db1c9202a5bc92ea04c7b6840f1bbe09ebf9e6b9" + integrity sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg== + +"@esbuild/android-arm@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.20.2.tgz#3b488c49aee9d491c2c8f98a909b785870d6e995" + integrity sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w== + +"@esbuild/android-x64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.20.2.tgz#3b1628029e5576249d2b2d766696e50768449f98" + integrity sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg== + +"@esbuild/darwin-arm64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz#6e8517a045ddd86ae30c6608c8475ebc0c4000bb" + integrity sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA== + +"@esbuild/darwin-x64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz#90ed098e1f9dd8a9381695b207e1cff45540a0d0" + integrity sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA== + +"@esbuild/freebsd-arm64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz#d71502d1ee89a1130327e890364666c760a2a911" + integrity sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw== + +"@esbuild/freebsd-x64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz#aa5ea58d9c1dd9af688b8b6f63ef0d3d60cea53c" + integrity sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw== + +"@esbuild/linux-arm64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz#055b63725df678379b0f6db9d0fa85463755b2e5" + integrity sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A== + +"@esbuild/linux-arm@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz#76b3b98cb1f87936fbc37f073efabad49dcd889c" + integrity sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg== + +"@esbuild/linux-ia32@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz#c0e5e787c285264e5dfc7a79f04b8b4eefdad7fa" + integrity sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig== + +"@esbuild/linux-loong64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz#a6184e62bd7cdc63e0c0448b83801001653219c5" + integrity sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ== + +"@esbuild/linux-mips64el@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz#d08e39ce86f45ef8fc88549d29c62b8acf5649aa" + integrity sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA== + +"@esbuild/linux-ppc64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz#8d252f0b7756ffd6d1cbde5ea67ff8fd20437f20" + integrity sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg== + +"@esbuild/linux-riscv64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz#19f6dcdb14409dae607f66ca1181dd4e9db81300" + integrity sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg== + +"@esbuild/linux-s390x@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz#3c830c90f1a5d7dd1473d5595ea4ebb920988685" + integrity sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ== + +"@esbuild/linux-x64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz#86eca35203afc0d9de0694c64ec0ab0a378f6fff" + integrity sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw== + +"@esbuild/netbsd-x64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz#e771c8eb0e0f6e1877ffd4220036b98aed5915e6" + integrity sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ== + +"@esbuild/openbsd-x64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz#9a795ae4b4e37e674f0f4d716f3e226dd7c39baf" + integrity sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ== + +"@esbuild/sunos-x64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz#7df23b61a497b8ac189def6e25a95673caedb03f" + integrity sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w== + +"@esbuild/win32-arm64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz#f1ae5abf9ca052ae11c1bc806fb4c0f519bacf90" + integrity sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ== + +"@esbuild/win32-ia32@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz#241fe62c34d8e8461cd708277813e1d0ba55ce23" + integrity sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ== + +"@esbuild/win32-x64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz#9c907b21e30a52db959ba4f80bb01a0cc403d5cc" + integrity sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ== "@floating-ui/core@^1.6.0": version "1.6.0" @@ -643,15 +648,112 @@ resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.14.2.tgz#4d58f59908d9197ba3179310077f25c88e49ed17" integrity sha512-ACXpdMM9hmKZww21yEqWwiLws/UPLhNKvimN8RrYSqPSvB3ov7sLvAcfvaxePeLvccTQKGdkDIhLYApZVDFuKg== +"@rollup/rollup-android-arm-eabi@4.15.0": + version "4.15.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.15.0.tgz#28c9c79c5baccb59a96afcf60e428ea6965a5579" + integrity sha512-O63bJ7p909pRRQfOJ0k/Jp8gNFMud+ZzLLG5EBWquylHxmRT2k18M2ifg8WyjCgFVdpA7+rI0YZ8EkAtg6dSUw== + +"@rollup/rollup-android-arm64@4.15.0": + version "4.15.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.15.0.tgz#a2bdafdb753ece571956289a5ba8c37af748bd0c" + integrity sha512-5UywPdmC9jiVOShjQx4uuIcnTQOf85iA4jgg8bkFoH5NYWFfAfrJpv5eeokmTdSmYwUTT5IrcrBCJNkowhrZDA== + +"@rollup/rollup-darwin-arm64@4.15.0": + version "4.15.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.15.0.tgz#4cb44cfec3068f6f76f70463ccc25f3e245af06a" + integrity sha512-hNkt75uFfWpRxHItCBmbS0ba70WnibJh6yz60WShSWITLlVRbkvAu1E/c7RlliPY4ajhqJd0UPZz//gNalTd4g== + +"@rollup/rollup-darwin-x64@4.15.0": + version "4.15.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.15.0.tgz#1035bfbf53e6acf16771191f41c3d3aff089e8f1" + integrity sha512-HnC5bTP7qdfO9nUw/mBhNcjOEZfbS8NwV+nFegiMhYOn1ATAGZF4kfAxR9BuZevBrebWCxMmxm8NCU1CUoz+wQ== + +"@rollup/rollup-linux-arm-gnueabihf@4.15.0": + version "4.15.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.15.0.tgz#0036b835f17ca9e84c188c419399493bd5739986" + integrity sha512-QGOIQIJZeIIqMsc4BUGe8TnV4dkXhSW2EhaQ1G4LqMUNpkyeLztvlDlOoNHn7SR7a4dBANdcEbPkkEzz3rzjzA== + +"@rollup/rollup-linux-arm-musleabihf@4.15.0": + version "4.15.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.15.0.tgz#c44420167203400ba7a707f8205413c2817cdaeb" + integrity sha512-PS/Cp8CinYgoysQ8i4UXYH/TZl06fXszvY/RDkyBYgUB1+tKyOMS925/4FZhfrhkl3XQEKjMc3BKtsxpB9Tz9Q== + +"@rollup/rollup-linux-arm64-gnu@4.15.0": + version "4.15.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.15.0.tgz#531d3792e1526583ecd794ceee0ab980d79813dd" + integrity sha512-XzOsnD6lGDP+k+vGgTYAryVGu8N89qpjMN5BVFUj75dGVFP3FzIVAufJAraxirpDwEQZA7Gjs0Vo5p4UmnnjsA== + +"@rollup/rollup-linux-arm64-musl@4.15.0": + version "4.15.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.15.0.tgz#86376eaa6d65a860a046e0dfe285a51792bc2026" + integrity sha512-+ScJA4Epbx/ZQGjDnbvTAcb8ZD06b+TlIka2UkujbKf1I/A+yrvEcJwG3/27zMmvcWMQyeCJhbL9TlSjzL0B7Q== + +"@rollup/rollup-linux-powerpc64le-gnu@4.15.0": + version "4.15.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.15.0.tgz#6adf69ce27d1266dbb86eeac237ad5dd4d4a1f28" + integrity sha512-1cUSvYgnyTakM4FDyf/GxUCDcqmj/hUh1NOizEOJU7+D5xEfFGCxgcNOs3hYBeRMUCcGmGkt01EhD3ILgKpGHQ== + +"@rollup/rollup-linux-riscv64-gnu@4.15.0": + version "4.15.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.15.0.tgz#961c290372d170f588ebf65c145c485c4aad7005" + integrity sha512-3A1FbHDbBUvpJXFAZwVsiROIcstVHP9AX/cwnyIhAp+xyQ1cBCxywKtuzmw0Av1MDNNg/y/9dDHtNypfRa8bdw== + +"@rollup/rollup-linux-s390x-gnu@4.15.0": + version "4.15.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.15.0.tgz#cb43301e10f17f0a642416c5d3d82a26cf430fa8" + integrity sha512-hYPbhg9ow6/mXIkojc8LOeiip2sCTuw1taWyoOXTOWk9vawIXz8x7B4KkgWUAtvAElssxhSyEXr2EZycH/FGzQ== + +"@rollup/rollup-linux-x64-gnu@4.15.0": + version "4.15.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.15.0.tgz#25c1fb87b2255949ee7ff6956e205710c5d7c414" + integrity sha512-511qln5mPSUKwv7HI28S1jCD1FK+2WbX5THM9A9annr3c1kzmfnf8Oe3ZakubEjob3IV6OPnNNcesfy+adIrmw== + +"@rollup/rollup-linux-x64-musl@4.15.0": + version "4.15.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.15.0.tgz#145745e339e282c7afc36142bd5a3f9495c7c681" + integrity sha512-4qKKGTDIv2bQZ+afhPWqPL+94+dLtk4lw1iwbcylKlLNqQ/Yyjof2CFYBxf6npiDzPV+zf4EWRiHb26/4Vsm9w== + +"@rollup/rollup-win32-arm64-msvc@4.15.0": + version "4.15.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.15.0.tgz#95dae687b645a25aab3a082d987556f58274ffbe" + integrity sha512-nEtaFBHp1OnbOf+tz66DtID579sNRHGgMC23to8HUyVuOCpCMD0CvRNqiDGLErLNnwApWIUtUl1VvuovCWUxwg== + +"@rollup/rollup-win32-ia32-msvc@4.15.0": + version "4.15.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.15.0.tgz#acbd48f10093e6cd52f99ad004966433a49cb362" + integrity sha512-5O49NykwSgX6iT2HgZ6cAoGHt6T/FqNMB5OqFOGxU/y1GyFSHquox1sK2OqApQc0ANxiHFQEMNDLNVCL7AUDnQ== + +"@rollup/rollup-win32-x64-msvc@4.15.0": + version "4.15.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.15.0.tgz#68bb584231dfc8e36bb7ad5317dfd1fd2563a6f7" + integrity sha512-YA0hTwCunmKNeTOFWdJuKhdXse9jBqgo34FDo+9aS0spfCkp+wj0o1bCcOOTu+0P48O95GTfkLTAaVonwNuIdQ== + "@socket.io/component-emitter@~3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz#96116f2a912e0c02817345b3c10751069920d553" integrity sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg== -"@tauri-apps/api@1.5.3", "@tauri-apps/api@^1.2.0": - version "1.5.3" - resolved "https://registry.yarnpkg.com/@tauri-apps/api/-/api-1.5.3.tgz#f7b362b1f30aadb0a8bbeb7ae111755c0ed33d73" - integrity sha512-zxnDjHHKjOsrIzZm6nO5Xapb/BxqUq1tc7cGkFXsFkGTsSWgCPH1D8mm0XS9weJY2OaR73I3k3S+b7eSzJDfqA== +"@tauri-apps/api@2.0.0-beta.4": + version "2.0.0-beta.4" + resolved "https://registry.yarnpkg.com/@tauri-apps/api/-/api-2.0.0-beta.4.tgz#7688950f6e03f38b3bac73585f8f4cdd61be6aa6" + integrity sha512-Nxtj28NYUo5iwYkpYslxmOPkdI2WkELU2e3UH9nbJm9Ydki2CQwJVGQxx4EANtdZcMNsEsUzRqaDTvEUYH1l6w== + +"@tauri-apps/api@2.0.0-beta.6": + version "2.0.0-beta.6" + resolved "https://registry.yarnpkg.com/@tauri-apps/api/-/api-2.0.0-beta.6.tgz#7ff0092b868db3627ccfe78b2648bdc67a9ca3e9" + integrity sha512-ay3kAXYQoqC3rX4Vr3y6uGwrBhRPM7UQqZ9wr1VYzN6lkcMIcu7+UBvytmcfXDlVctqFoMQJafn6+dK/Oqh8+Q== + +"@tauri-apps/api@^2.0.0": + version "2.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@tauri-apps/api/-/api-2.0.0-beta.8.tgz#36ac5365360312928bdf593d561cd490a8185a48" + integrity sha512-fN5u+9HsSfhRaXGOdD2kPGbqDgyX+nkm1XF/4d/LNuM4WiNfvHjjRAqWQYBhQsg1aF9nsTPmSW+tmy+Yn5T5+A== + +"@tauri-apps/plugin-dialog@^2.0.0-beta.2": + version "2.0.0-beta.2" + resolved "https://registry.yarnpkg.com/@tauri-apps/plugin-dialog/-/plugin-dialog-2.0.0-beta.2.tgz#64028104c51f018acfce96221a41f6389b9707b5" + integrity sha512-WugTn/8d5jYA0GL1JRIJgA1OSxG0h2V4PSZZzehgA3v7rPlIU6w9s2+dSRqj55aMj6hm3Az9YbQqC18nuaHkpw== + dependencies: + "@tauri-apps/api" "2.0.0-beta.4" "@types/cookie@^0.4.1": version "0.4.1" @@ -672,6 +774,11 @@ dependencies: "@types/trusted-types" "*" +"@types/estree@1.0.5": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" + integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== + "@types/hoist-non-react-statics@^3.3.1": version "3.3.5" resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.5.tgz#dab7867ef789d87e2b4b0003c9d65c49cc44a494" @@ -1061,33 +1168,34 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -esbuild@^0.18.10: - version "0.18.20" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.18.20.tgz#4709f5a34801b43b799ab7d6d82f7284a9b7a7a6" - integrity sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA== +esbuild@^0.20.1: + version "0.20.2" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.20.2.tgz#9d6b2386561766ee6b5a55196c6d766d28c87ea1" + integrity sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g== optionalDependencies: - "@esbuild/android-arm" "0.18.20" - "@esbuild/android-arm64" "0.18.20" - "@esbuild/android-x64" "0.18.20" - "@esbuild/darwin-arm64" "0.18.20" - "@esbuild/darwin-x64" "0.18.20" - "@esbuild/freebsd-arm64" "0.18.20" - "@esbuild/freebsd-x64" "0.18.20" - "@esbuild/linux-arm" "0.18.20" - "@esbuild/linux-arm64" "0.18.20" - "@esbuild/linux-ia32" "0.18.20" - "@esbuild/linux-loong64" "0.18.20" - "@esbuild/linux-mips64el" "0.18.20" - "@esbuild/linux-ppc64" "0.18.20" - "@esbuild/linux-riscv64" "0.18.20" - "@esbuild/linux-s390x" "0.18.20" - "@esbuild/linux-x64" "0.18.20" - "@esbuild/netbsd-x64" "0.18.20" - "@esbuild/openbsd-x64" "0.18.20" - "@esbuild/sunos-x64" "0.18.20" - "@esbuild/win32-arm64" "0.18.20" - "@esbuild/win32-ia32" "0.18.20" - "@esbuild/win32-x64" "0.18.20" + "@esbuild/aix-ppc64" "0.20.2" + "@esbuild/android-arm" "0.20.2" + "@esbuild/android-arm64" "0.20.2" + "@esbuild/android-x64" "0.20.2" + "@esbuild/darwin-arm64" "0.20.2" + "@esbuild/darwin-x64" "0.20.2" + "@esbuild/freebsd-arm64" "0.20.2" + "@esbuild/freebsd-x64" "0.20.2" + "@esbuild/linux-arm" "0.20.2" + "@esbuild/linux-arm64" "0.20.2" + "@esbuild/linux-ia32" "0.20.2" + "@esbuild/linux-loong64" "0.20.2" + "@esbuild/linux-mips64el" "0.20.2" + "@esbuild/linux-ppc64" "0.20.2" + "@esbuild/linux-riscv64" "0.20.2" + "@esbuild/linux-s390x" "0.20.2" + "@esbuild/linux-x64" "0.20.2" + "@esbuild/netbsd-x64" "0.20.2" + "@esbuild/openbsd-x64" "0.20.2" + "@esbuild/sunos-x64" "0.20.2" + "@esbuild/win32-arm64" "0.20.2" + "@esbuild/win32-ia32" "0.20.2" + "@esbuild/win32-x64" "0.20.2" escalade@^3.1.1: version "3.1.1" @@ -1129,7 +1237,7 @@ find-root@^1.1.0: resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== -fsevents@~2.3.2: +fsevents@~2.3.2, fsevents@~2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== @@ -1591,14 +1699,14 @@ picocolors@^1.0.0: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== -postcss@^8.4.27: - version "8.4.33" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.33.tgz#1378e859c9f69bf6f638b990a0212f43e2aaa742" - integrity sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg== +postcss@^8.4.38: + version "8.4.38" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.38.tgz#b387d533baf2054288e337066d81c6bee9db9e0e" + integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A== dependencies: nanoid "^3.3.7" picocolors "^1.0.0" - source-map-js "^1.0.2" + source-map-js "^1.2.0" prop-types@^15.5.10, prop-types@^15.6.2, prop-types@^15.8.1: version "15.8.1" @@ -1799,11 +1907,29 @@ resolve@^1.19.0: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -rollup@^3.27.1: - version "3.29.4" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.29.4.tgz#4d70c0f9834146df8705bfb69a9a19c9e1109981" - integrity sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw== +rollup@^4.13.0: + version "4.15.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.15.0.tgz#3be428e4fe86297b1b3448f29515d978593d9d9a" + integrity sha512-i0ir57IMF5o7YvNYyUNeIGG+IZaaucnGZAOsSctO2tPLXlCEaZzyBa+QhpHNSgtpyLMoDev2DyN6a7J1dQA8Tw== + dependencies: + "@types/estree" "1.0.5" optionalDependencies: + "@rollup/rollup-android-arm-eabi" "4.15.0" + "@rollup/rollup-android-arm64" "4.15.0" + "@rollup/rollup-darwin-arm64" "4.15.0" + "@rollup/rollup-darwin-x64" "4.15.0" + "@rollup/rollup-linux-arm-gnueabihf" "4.15.0" + "@rollup/rollup-linux-arm-musleabihf" "4.15.0" + "@rollup/rollup-linux-arm64-gnu" "4.15.0" + "@rollup/rollup-linux-arm64-musl" "4.15.0" + "@rollup/rollup-linux-powerpc64le-gnu" "4.15.0" + "@rollup/rollup-linux-riscv64-gnu" "4.15.0" + "@rollup/rollup-linux-s390x-gnu" "4.15.0" + "@rollup/rollup-linux-x64-gnu" "4.15.0" + "@rollup/rollup-linux-x64-musl" "4.15.0" + "@rollup/rollup-win32-arm64-msvc" "4.15.0" + "@rollup/rollup-win32-ia32-msvc" "4.15.0" + "@rollup/rollup-win32-x64-msvc" "4.15.0" fsevents "~2.3.2" scheduler@^0.23.0: @@ -1876,10 +2002,10 @@ socket.io@^4.7.4: socket.io-adapter "~2.5.2" socket.io-parser "~4.2.4" -source-map-js@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" - integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== +source-map-js@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af" + integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== source-map@^0.5.7: version "0.5.7" @@ -1917,11 +2043,11 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -"tauri-plugin-store-api@https://github.com/tauri-apps/tauri-plugin-store#v1": - version "0.0.0" - resolved "https://github.com/tauri-apps/tauri-plugin-store#7d2632996f290b0f18cc5f8a2b2791046400690e" +"tauri-plugin-store-api@https://github.com/tauri-apps/tauri-plugin-store#v2": + version "2.0.0-beta.2" + resolved "https://github.com/tauri-apps/tauri-plugin-store#ab3cd7d99f0417ba0423bd5a35f856dbdaa46d98" dependencies: - "@tauri-apps/api" "1.5.3" + "@tauri-apps/api" "2.0.0-beta.6" throttle-debounce@^2.1.0: version "2.3.0" @@ -1981,16 +2107,16 @@ vary@^1: resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== -vite@^4.2.0: - version "4.5.2" - resolved "https://registry.yarnpkg.com/vite/-/vite-4.5.2.tgz#d6ea8610e099851dad8c7371599969e0f8b97e82" - integrity sha512-tBCZBNSBbHQkaGyhGCDUGqeo2ph8Fstyp6FMSvTtsXeZSPpSMGlviAOav2hxVTqFcx8Hj/twtWKsMJXNY0xI8w== +vite@^5.2.10: + version "5.2.10" + resolved "https://registry.yarnpkg.com/vite/-/vite-5.2.10.tgz#2ac927c91e99d51b376a5c73c0e4b059705f5bd7" + integrity sha512-PAzgUZbP7msvQvqdSD+ErD5qGnSFiGOoWmV5yAKUEI0kdhjbH6nMWVyZQC/hSc4aXwc0oJ9aEdIiF9Oje0JFCw== dependencies: - esbuild "^0.18.10" - postcss "^8.4.27" - rollup "^3.27.1" + esbuild "^0.20.1" + postcss "^8.4.38" + rollup "^4.13.0" optionalDependencies: - fsevents "~2.3.2" + fsevents "~2.3.3" void-elements@3.1.0: version "3.1.0"