Merge branch 'v2' into feat/dialog/folder-picker

pull/2322/head
Julian Carrier 6 months ago committed by GitHub
commit cfe971dd62
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -0,0 +1,6 @@
---
clipboard-manager: patch
clipboard-manager-js: patch
---
Explicitly drop `arboard::Clipboard` on exit. Add recommendation to not use read methods on the mainthread.

@ -0,0 +1,6 @@
---
"http": minor
"http-js": minor
---
Add `dangerous-settings` feature flag and new JS `danger` option to disable tls hostname/certificate validation.

@ -0,0 +1,6 @@
---
"log": patch
"log-js": patch
---
Use `objc2` instead of `objc`.

4
Cargo.lock generated

@ -6645,10 +6645,10 @@ version = "2.2.0"
dependencies = [ dependencies = [
"android_logger", "android_logger",
"byte-unit", "byte-unit",
"cocoa",
"fern", "fern",
"log", "log",
"objc", "objc2",
"objc2-foundation",
"serde", "serde",
"serde_json", "serde_json",
"serde_repr", "serde_repr",

@ -14,7 +14,7 @@ pub fn init<R: Runtime, C: DeserializeOwned>(
) -> crate::Result<Clipboard<R>> { ) -> crate::Result<Clipboard<R>> {
Ok(Clipboard { Ok(Clipboard {
app: app.clone(), app: app.clone(),
clipboard: arboard::Clipboard::new().map(Mutex::new), clipboard: arboard::Clipboard::new().map(|c| Mutex::new(Some(c))),
}) })
} }
@ -22,13 +22,21 @@ pub fn init<R: Runtime, C: DeserializeOwned>(
pub struct Clipboard<R: Runtime> { pub struct Clipboard<R: Runtime> {
#[allow(dead_code)] #[allow(dead_code)]
app: AppHandle<R>, app: AppHandle<R>,
clipboard: Result<Mutex<arboard::Clipboard>, arboard::Error>, // According to arboard docs the clipboard must be dropped before exit.
// Since tauri doesn't call drop on exit we'll use an Option to take() on RunEvent::Exit.
clipboard: Result<Mutex<Option<arboard::Clipboard>>, arboard::Error>,
} }
impl<R: Runtime> Clipboard<R> { impl<R: Runtime> Clipboard<R> {
pub fn write_text<'a, T: Into<Cow<'a, str>>>(&self, text: T) -> crate::Result<()> { pub fn write_text<'a, T: Into<Cow<'a, str>>>(&self, text: T) -> crate::Result<()> {
match &self.clipboard { match &self.clipboard {
Ok(clipboard) => clipboard.lock().unwrap().set_text(text).map_err(Into::into), Ok(clipboard) => clipboard
.lock()
.unwrap()
.as_mut()
.unwrap()
.set_text(text)
.map_err(Into::into),
Err(e) => Err(crate::Error::Clipboard(e.to_string())), Err(e) => Err(crate::Error::Clipboard(e.to_string())),
} }
} }
@ -38,6 +46,8 @@ impl<R: Runtime> Clipboard<R> {
Ok(clipboard) => clipboard Ok(clipboard) => clipboard
.lock() .lock()
.unwrap() .unwrap()
.as_mut()
.unwrap()
.set_image(ImageData { .set_image(ImageData {
bytes: Cow::Borrowed(image.rgba()), bytes: Cow::Borrowed(image.rgba()),
width: image.width() as usize, width: image.width() as usize,
@ -48,10 +58,11 @@ impl<R: Runtime> Clipboard<R> {
} }
} }
/// Warning: This method should not be used on the main thread! Otherwise the underlying libraries may deadlock on Linux, freezing the whole app, when trying to copy data copied from this app, for example if the user copies text from the WebView.
pub fn read_text(&self) -> crate::Result<String> { pub fn read_text(&self) -> crate::Result<String> {
match &self.clipboard { match &self.clipboard {
Ok(clipboard) => { Ok(clipboard) => {
let text = clipboard.lock().unwrap().get_text()?; let text = clipboard.lock().unwrap().as_mut().unwrap().get_text()?;
Ok(text) Ok(text)
} }
Err(e) => Err(crate::Error::Clipboard(e.to_string())), Err(e) => Err(crate::Error::Clipboard(e.to_string())),
@ -67,6 +78,8 @@ impl<R: Runtime> Clipboard<R> {
Ok(clipboard) => clipboard Ok(clipboard) => clipboard
.lock() .lock()
.unwrap() .unwrap()
.as_mut()
.unwrap()
.set_html(html, alt_text) .set_html(html, alt_text)
.map_err(Into::into), .map_err(Into::into),
Err(e) => Err(crate::Error::Clipboard(e.to_string())), Err(e) => Err(crate::Error::Clipboard(e.to_string())),
@ -75,15 +88,22 @@ impl<R: Runtime> Clipboard<R> {
pub fn clear(&self) -> crate::Result<()> { pub fn clear(&self) -> crate::Result<()> {
match &self.clipboard { match &self.clipboard {
Ok(clipboard) => clipboard.lock().unwrap().clear().map_err(Into::into), Ok(clipboard) => clipboard
.lock()
.unwrap()
.as_mut()
.unwrap()
.clear()
.map_err(Into::into),
Err(e) => Err(crate::Error::Clipboard(e.to_string())), Err(e) => Err(crate::Error::Clipboard(e.to_string())),
} }
} }
/// Warning: This method should not be used on the main thread! Otherwise the underlying libraries may deadlock on Linux, freezing the whole app, when trying to copy data copied from this app, for example if the user copies text from the WebView.
pub fn read_image(&self) -> crate::Result<Image<'_>> { pub fn read_image(&self) -> crate::Result<Image<'_>> {
match &self.clipboard { match &self.clipboard {
Ok(clipboard) => { Ok(clipboard) => {
let image = clipboard.lock().unwrap().get_image()?; let image = clipboard.lock().unwrap().as_mut().unwrap().get_image()?;
let image = Image::new_owned( let image = Image::new_owned(
image.bytes.to_vec(), image.bytes.to_vec(),
image.width as u32, image.width as u32,
@ -94,4 +114,10 @@ impl<R: Runtime> Clipboard<R> {
Err(e) => Err(crate::Error::Clipboard(e.to_string())), Err(e) => Err(crate::Error::Clipboard(e.to_string())),
} }
} }
pub(crate) fn cleanup(&self) {
if let Ok(clipboard) = &self.clipboard {
clipboard.lock().unwrap().take();
}
}
} }

@ -11,7 +11,7 @@
use tauri::{ use tauri::{
plugin::{Builder, TauriPlugin}, plugin::{Builder, TauriPlugin},
Manager, Runtime, Manager, RunEvent, Runtime,
}; };
#[cfg(desktop)] #[cfg(desktop)]
@ -59,5 +59,11 @@ pub fn init<R: Runtime>() -> TauriPlugin<R> {
app.manage(clipboard); app.manage(clipboard);
Ok(()) Ok(())
}) })
.on_event(|_app, _event| {
#[cfg(desktop)]
if let RunEvent::Exit = _event {
_app.clipboard().cleanup();
}
})
.build() .build()
} }

@ -73,3 +73,4 @@ charset = ["reqwest/charset"]
macos-system-configuration = ["reqwest/macos-system-configuration"] macos-system-configuration = ["reqwest/macos-system-configuration"]
unsafe-headers = [] unsafe-headers = []
tracing = ["dep:tracing"] tracing = ["dep:tracing"]
dangerous-settings = []

@ -1 +1 @@
if("__TAURI__"in window){var __TAURI_PLUGIN_HTTP__=function(e){"use strict";async function t(e,t={},r){return window.__TAURI_INTERNALS__.invoke(e,t,r)}"function"==typeof SuppressedError&&SuppressedError;const r="Request canceled";return e.fetch=async function(e,n){const a=n?.signal;if(a?.aborted)throw new Error(r);const o=n?.maxRedirections,s=n?.connectTimeout,i=n?.proxy;n&&(delete n.maxRedirections,delete n.connectTimeout,delete n.proxy);const d=n?.headers?n.headers instanceof Headers?n.headers:new Headers(n.headers):new Headers,c=new Request(e,n),u=await c.arrayBuffer(),f=0!==u.byteLength?Array.from(new Uint8Array(u)):null;for(const[e,t]of c.headers)d.get(e)||d.set(e,t);const _=(d instanceof Headers?Array.from(d.entries()):Array.isArray(d)?d:Object.entries(d)).map((([e,t])=>[e,"string"==typeof t?t:t.toString()]));if(a?.aborted)throw new Error(r);const h=await t("plugin:http|fetch",{clientConfig:{method:c.method,url:c.url,headers:_,data:f,maxRedirections:o,connectTimeout:s,proxy:i}}),l=()=>t("plugin:http|fetch_cancel",{rid:h});if(a?.aborted)throw l(),new Error(r);a?.addEventListener("abort",(()=>{l()}));const{status:p,statusText:w,url:y,headers:T,rid:A}=await t("plugin:http|fetch_send",{rid:h}),g=await t("plugin:http|fetch_read_body",{rid:A}),R=new Response(g instanceof ArrayBuffer&&0!==g.byteLength?g:g instanceof Array&&g.length>0?new Uint8Array(g):null,{status:p,statusText:w});return Object.defineProperty(R,"url",{value:y}),Object.defineProperty(R,"headers",{value:new Headers(T)}),R},e}({});Object.defineProperty(window.__TAURI__,"http",{value:__TAURI_PLUGIN_HTTP__})} if("__TAURI__"in window){var __TAURI_PLUGIN_HTTP__=function(e){"use strict";async function t(e,t={},r){return window.__TAURI_INTERNALS__.invoke(e,t,r)}"function"==typeof SuppressedError&&SuppressedError;const r="Request canceled";return e.fetch=async function(e,n){const a=n?.signal;if(a?.aborted)throw new Error(r);const o=n?.maxRedirections,s=n?.connectTimeout,i=n?.proxy,d=n?.danger;n&&(delete n.maxRedirections,delete n.connectTimeout,delete n.proxy,delete n.danger);const c=n?.headers?n.headers instanceof Headers?n.headers:new Headers(n.headers):new Headers,u=new Request(e,n),f=await u.arrayBuffer(),_=0!==f.byteLength?Array.from(new Uint8Array(f)):null;for(const[e,t]of u.headers)c.get(e)||c.set(e,t);const h=(c instanceof Headers?Array.from(c.entries()):Array.isArray(c)?c:Object.entries(c)).map((([e,t])=>[e,"string"==typeof t?t:t.toString()]));if(a?.aborted)throw new Error(r);const l=await t("plugin:http|fetch",{clientConfig:{method:u.method,url:u.url,headers:h,data:_,maxRedirections:o,connectTimeout:s,proxy:i,danger:d}}),p=()=>t("plugin:http|fetch_cancel",{rid:l});if(a?.aborted)throw p(),new Error(r);a?.addEventListener("abort",(()=>{p()}));const{status:w,statusText:y,url:g,headers:T,rid:A}=await t("plugin:http|fetch_send",{rid:l}),R=await t("plugin:http|fetch_read_body",{rid:A}),b=new Response(R instanceof ArrayBuffer&&0!==R.byteLength?R:R instanceof Array&&R.length>0?new Uint8Array(R):null,{status:w,statusText:y});return Object.defineProperty(b,"url",{value:g}),Object.defineProperty(b,"headers",{value:new Headers(T)}),b},e}({});Object.defineProperty(window.__TAURI__,"http",{value:__TAURI_PLUGIN_HTTP__})}

@ -84,6 +84,26 @@ export interface ClientOptions {
* Configuration of a proxy that a Client should pass requests to. * Configuration of a proxy that a Client should pass requests to.
*/ */
proxy?: Proxy proxy?: Proxy
/**
* Configuration for dangerous settings on the client such as disabling SSL verification.
*/
danger?: DangerousSettings
}
/**
* Configuration for dangerous settings on the client such as disabling SSL verification.
*
* @since 2.3.0
*/
export interface DangerousSettings {
/**
* Disables SSL verification.
*/
acceptInvalidCerts?: boolean
/**
* Disables hostname verification.
*/
acceptInvalidHostnames?: boolean
} }
const ERROR_REQUEST_CANCELLED = 'Request canceled' const ERROR_REQUEST_CANCELLED = 'Request canceled'
@ -115,12 +135,14 @@ export async function fetch(
const maxRedirections = init?.maxRedirections const maxRedirections = init?.maxRedirections
const connectTimeout = init?.connectTimeout const connectTimeout = init?.connectTimeout
const proxy = init?.proxy const proxy = init?.proxy
const danger = init?.danger
// Remove these fields before creating the request // Remove these fields before creating the request
if (init) { if (init) {
delete init.maxRedirections delete init.maxRedirections
delete init.connectTimeout delete init.connectTimeout
delete init.proxy delete init.proxy
delete init.danger
} }
const headers = init?.headers const headers = init?.headers
@ -172,7 +194,8 @@ export async function fetch(
data, data,
maxRedirections, maxRedirections,
connectTimeout, connectTimeout,
proxy proxy,
danger
} }
}) })

@ -75,6 +75,14 @@ pub struct FetchResponse {
rid: ResourceId, rid: ResourceId,
} }
#[derive(Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
#[allow(dead_code)] //feature flags shoudln't affect api
pub struct DangerousSettings {
accept_invalid_certs: bool,
accept_invalid_hostnames: bool,
}
#[derive(Debug, Deserialize)] #[derive(Debug, Deserialize)]
#[serde(rename_all = "camelCase")] #[serde(rename_all = "camelCase")]
pub struct ClientConfig { pub struct ClientConfig {
@ -85,6 +93,7 @@ pub struct ClientConfig {
connect_timeout: Option<u64>, connect_timeout: Option<u64>,
max_redirections: Option<usize>, max_redirections: Option<usize>,
proxy: Option<Proxy>, proxy: Option<Proxy>,
danger: Option<DangerousSettings>,
} }
#[derive(Debug, Deserialize)] #[derive(Debug, Deserialize)]
@ -181,6 +190,7 @@ pub async fn fetch<R: Runtime>(
connect_timeout, connect_timeout,
max_redirections, max_redirections,
proxy, proxy,
danger,
} = client_config; } = client_config;
let scheme = url.scheme(); let scheme = url.scheme();
@ -220,6 +230,24 @@ pub async fn fetch<R: Runtime>(
{ {
let mut builder = reqwest::ClientBuilder::new(); let mut builder = reqwest::ClientBuilder::new();
if let Some(danger_config) = danger {
#[cfg(not(feature = "dangerous-settings"))]
{
#[cfg(debug_assertions)]
{
eprintln!("[\x1b[33mWARNING\x1b[0m] using dangerous settings requires `dangerous-settings` feature flag in your Cargo.toml");
}
let _ = danger_config;
return Err(Error::DangerousSettings);
}
#[cfg(feature = "dangerous-settings")]
{
builder = builder
.danger_accept_invalid_certs(danger_config.accept_invalid_certs)
.danger_accept_invalid_hostnames(danger_config.accept_invalid_hostnames)
}
}
if let Some(timeout) = connect_timeout { if let Some(timeout) = connect_timeout {
builder = builder.connect_timeout(Duration::from_millis(timeout)); builder = builder.connect_timeout(Duration::from_millis(timeout));
} }

@ -41,6 +41,8 @@ pub enum Error {
Tauri(#[from] tauri::Error), Tauri(#[from] tauri::Error),
#[error(transparent)] #[error(transparent)]
Utf8(#[from] std::string::FromUtf8Error), Utf8(#[from] std::string::FromUtf8Error),
#[error("dangerous settings used but are not enabled")]
DangerousSettings,
} }
impl Serialize for Error { impl Serialize for Error {

@ -39,8 +39,11 @@ android_logger = "0.14"
[target."cfg(target_os = \"ios\")".dependencies] [target."cfg(target_os = \"ios\")".dependencies]
swift-rs = "1" swift-rs = "1"
objc = "0.2" objc2 = "0.5"
cocoa = "0.26" objc2-foundation = { version = "0.2", default-features = false, features = [
"std",
"NSString",
] }
[features] [features]
colored = ["fern/colored"] colored = ["fern/colored"]

@ -35,31 +35,6 @@ pub const WEBVIEW_TARGET: &str = "webview";
#[cfg(target_os = "ios")] #[cfg(target_os = "ios")]
mod ios { mod ios {
use cocoa::base::id;
use objc::*;
const UTF8_ENCODING: usize = 4;
pub struct NSString(pub id);
impl NSString {
pub fn new(s: &str) -> Self {
// Safety: objc runtime calls are unsafe
NSString(unsafe {
let ns_string: id = msg_send![class!(NSString), alloc];
let ns_string: id = msg_send![ns_string,
initWithBytes:s.as_ptr()
length:s.len()
encoding:UTF8_ENCODING];
// The thing is allocated in rust, the thing must be set to autorelease in rust to relinquish control
// or it can not be released correctly in OC runtime
let _: () = msg_send![ns_string, autorelease];
ns_string
})
}
}
swift_rs::swift!(pub fn tauri_log( swift_rs::swift!(pub fn tauri_log(
level: u8, message: *const std::ffi::c_void level: u8, message: *const std::ffi::c_void
)); ));
@ -429,7 +404,12 @@ impl Builder {
log::Level::Info => 2, log::Level::Info => 2,
log::Level::Warn | log::Level::Error => 3, log::Level::Warn | log::Level::Error => 3,
}, },
ios::NSString::new(message.as_str()).0 as _, // The string is allocated in rust, so we must
// autorelease it rust to give it to the Swift
// runtime.
objc2::rc::Retained::autorelease_ptr(
objc2_foundation::NSString::from_str(message.as_str()),
) as _,
); );
} }
}), }),

@ -55,11 +55,13 @@ url = { workspace = true }
[target."cfg(target_os = \"macos\")".dependencies.objc2-app-kit] [target."cfg(target_os = \"macos\")".dependencies.objc2-app-kit]
version = "0.2" version = "0.2"
features = ["NSWorkspace"] default-features = false
features = ["std", "NSWorkspace"]
[target."cfg(target_os = \"macos\")".dependencies.objc2-foundation] [target."cfg(target_os = \"macos\")".dependencies.objc2-foundation]
version = "0.2" version = "0.2"
features = ["NSURL", "NSArray", "NSString"] default-features = false
features = ["std", "NSURL", "NSArray", "NSString"]
[target.'cfg(target_os = "ios")'.dependencies] [target.'cfg(target_os = "ios")'.dependencies]
tauri = { workspace = true, features = ["wry"] } tauri = { workspace = true, features = ["wry"] }

@ -126,7 +126,7 @@ importers:
version: 1.2.1 version: 1.2.1
'@sveltejs/vite-plugin-svelte': '@sveltejs/vite-plugin-svelte':
specifier: ^5.0.1 specifier: ^5.0.1
version: 5.0.1(svelte@5.10.0)(vite@6.0.3(jiti@2.4.2)(terser@5.36.0)(tsx@4.19.2)) version: 5.0.1(svelte@5.10.0)(vite@6.0.9(jiti@2.4.2)(terser@5.36.0)(tsx@4.19.2))
'@tauri-apps/cli': '@tauri-apps/cli':
specifier: 2.2.5 specifier: 2.2.5
version: 2.2.5 version: 2.2.5
@ -138,10 +138,10 @@ importers:
version: 5.10.0 version: 5.10.0
unocss: unocss:
specifier: ^65.0.0 specifier: ^65.0.0
version: 65.4.0(postcss@8.4.49)(rollup@4.31.0)(vite@6.0.3(jiti@2.4.2)(terser@5.36.0)(tsx@4.19.2))(vue@3.5.13(typescript@5.7.3)) version: 65.4.0(postcss@8.5.1)(rollup@4.31.0)(vite@6.0.9(jiti@2.4.2)(terser@5.36.0)(tsx@4.19.2))(vue@3.5.13(typescript@5.7.3))
vite: vite:
specifier: ^6.0.3 specifier: ^6.0.3
version: 6.0.3(jiti@2.4.2)(terser@5.36.0)(tsx@4.19.2) version: 6.0.9(jiti@2.4.2)(terser@5.36.0)(tsx@4.19.2)
plugins/autostart: plugins/autostart:
dependencies: dependencies:
@ -196,7 +196,7 @@ importers:
version: 5.7.3 version: 5.7.3
vite: vite:
specifier: ^6.0.0 specifier: ^6.0.0
version: 6.0.3(jiti@2.4.2)(terser@5.36.0)(tsx@4.19.2) version: 6.0.9(jiti@2.4.2)(terser@5.36.0)(tsx@4.19.2)
plugins/dialog: plugins/dialog:
dependencies: dependencies:
@ -310,7 +310,7 @@ importers:
version: 5.7.3 version: 5.7.3
vite: vite:
specifier: ^6.0.0 specifier: ^6.0.0
version: 6.0.3(jiti@2.4.2)(terser@5.36.0)(tsx@4.19.2) version: 6.0.9(jiti@2.4.2)(terser@5.36.0)(tsx@4.19.2)
plugins/stronghold: plugins/stronghold:
dependencies: dependencies:
@ -350,7 +350,7 @@ importers:
version: 5.7.3 version: 5.7.3
vite: vite:
specifier: ^6.0.0 specifier: ^6.0.0
version: 6.0.3(jiti@2.4.2)(terser@5.36.0)(tsx@4.19.2) version: 6.0.9(jiti@2.4.2)(terser@5.36.0)(tsx@4.19.2)
plugins/window-state: plugins/window-state:
dependencies: dependencies:
@ -453,8 +453,8 @@ packages:
cpu: [ppc64] cpu: [ppc64]
os: [aix] os: [aix]
'@esbuild/aix-ppc64@0.24.0': '@esbuild/aix-ppc64@0.24.2':
resolution: {integrity: sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==} resolution: {integrity: sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [ppc64] cpu: [ppc64]
os: [aix] os: [aix]
@ -465,8 +465,8 @@ packages:
cpu: [arm64] cpu: [arm64]
os: [android] os: [android]
'@esbuild/android-arm64@0.24.0': '@esbuild/android-arm64@0.24.2':
resolution: {integrity: sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==} resolution: {integrity: sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [arm64] cpu: [arm64]
os: [android] os: [android]
@ -477,8 +477,8 @@ packages:
cpu: [arm] cpu: [arm]
os: [android] os: [android]
'@esbuild/android-arm@0.24.0': '@esbuild/android-arm@0.24.2':
resolution: {integrity: sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==} resolution: {integrity: sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [arm] cpu: [arm]
os: [android] os: [android]
@ -489,8 +489,8 @@ packages:
cpu: [x64] cpu: [x64]
os: [android] os: [android]
'@esbuild/android-x64@0.24.0': '@esbuild/android-x64@0.24.2':
resolution: {integrity: sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==} resolution: {integrity: sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [x64] cpu: [x64]
os: [android] os: [android]
@ -501,8 +501,8 @@ packages:
cpu: [arm64] cpu: [arm64]
os: [darwin] os: [darwin]
'@esbuild/darwin-arm64@0.24.0': '@esbuild/darwin-arm64@0.24.2':
resolution: {integrity: sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==} resolution: {integrity: sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [arm64] cpu: [arm64]
os: [darwin] os: [darwin]
@ -513,8 +513,8 @@ packages:
cpu: [x64] cpu: [x64]
os: [darwin] os: [darwin]
'@esbuild/darwin-x64@0.24.0': '@esbuild/darwin-x64@0.24.2':
resolution: {integrity: sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==} resolution: {integrity: sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [x64] cpu: [x64]
os: [darwin] os: [darwin]
@ -525,8 +525,8 @@ packages:
cpu: [arm64] cpu: [arm64]
os: [freebsd] os: [freebsd]
'@esbuild/freebsd-arm64@0.24.0': '@esbuild/freebsd-arm64@0.24.2':
resolution: {integrity: sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==} resolution: {integrity: sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [arm64] cpu: [arm64]
os: [freebsd] os: [freebsd]
@ -537,8 +537,8 @@ packages:
cpu: [x64] cpu: [x64]
os: [freebsd] os: [freebsd]
'@esbuild/freebsd-x64@0.24.0': '@esbuild/freebsd-x64@0.24.2':
resolution: {integrity: sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==} resolution: {integrity: sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [x64] cpu: [x64]
os: [freebsd] os: [freebsd]
@ -549,8 +549,8 @@ packages:
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
'@esbuild/linux-arm64@0.24.0': '@esbuild/linux-arm64@0.24.2':
resolution: {integrity: sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==} resolution: {integrity: sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
@ -561,8 +561,8 @@ packages:
cpu: [arm] cpu: [arm]
os: [linux] os: [linux]
'@esbuild/linux-arm@0.24.0': '@esbuild/linux-arm@0.24.2':
resolution: {integrity: sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==} resolution: {integrity: sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [arm] cpu: [arm]
os: [linux] os: [linux]
@ -573,8 +573,8 @@ packages:
cpu: [ia32] cpu: [ia32]
os: [linux] os: [linux]
'@esbuild/linux-ia32@0.24.0': '@esbuild/linux-ia32@0.24.2':
resolution: {integrity: sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==} resolution: {integrity: sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [ia32] cpu: [ia32]
os: [linux] os: [linux]
@ -585,8 +585,8 @@ packages:
cpu: [loong64] cpu: [loong64]
os: [linux] os: [linux]
'@esbuild/linux-loong64@0.24.0': '@esbuild/linux-loong64@0.24.2':
resolution: {integrity: sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==} resolution: {integrity: sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [loong64] cpu: [loong64]
os: [linux] os: [linux]
@ -597,8 +597,8 @@ packages:
cpu: [mips64el] cpu: [mips64el]
os: [linux] os: [linux]
'@esbuild/linux-mips64el@0.24.0': '@esbuild/linux-mips64el@0.24.2':
resolution: {integrity: sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==} resolution: {integrity: sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [mips64el] cpu: [mips64el]
os: [linux] os: [linux]
@ -609,8 +609,8 @@ packages:
cpu: [ppc64] cpu: [ppc64]
os: [linux] os: [linux]
'@esbuild/linux-ppc64@0.24.0': '@esbuild/linux-ppc64@0.24.2':
resolution: {integrity: sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==} resolution: {integrity: sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [ppc64] cpu: [ppc64]
os: [linux] os: [linux]
@ -621,8 +621,8 @@ packages:
cpu: [riscv64] cpu: [riscv64]
os: [linux] os: [linux]
'@esbuild/linux-riscv64@0.24.0': '@esbuild/linux-riscv64@0.24.2':
resolution: {integrity: sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==} resolution: {integrity: sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [riscv64] cpu: [riscv64]
os: [linux] os: [linux]
@ -633,8 +633,8 @@ packages:
cpu: [s390x] cpu: [s390x]
os: [linux] os: [linux]
'@esbuild/linux-s390x@0.24.0': '@esbuild/linux-s390x@0.24.2':
resolution: {integrity: sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==} resolution: {integrity: sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [s390x] cpu: [s390x]
os: [linux] os: [linux]
@ -645,20 +645,26 @@ packages:
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
'@esbuild/linux-x64@0.24.0': '@esbuild/linux-x64@0.24.2':
resolution: {integrity: sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==} resolution: {integrity: sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
'@esbuild/netbsd-arm64@0.24.2':
resolution: {integrity: sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==}
engines: {node: '>=18'}
cpu: [arm64]
os: [netbsd]
'@esbuild/netbsd-x64@0.23.1': '@esbuild/netbsd-x64@0.23.1':
resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==} resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [x64] cpu: [x64]
os: [netbsd] os: [netbsd]
'@esbuild/netbsd-x64@0.24.0': '@esbuild/netbsd-x64@0.24.2':
resolution: {integrity: sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==} resolution: {integrity: sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [x64] cpu: [x64]
os: [netbsd] os: [netbsd]
@ -669,8 +675,8 @@ packages:
cpu: [arm64] cpu: [arm64]
os: [openbsd] os: [openbsd]
'@esbuild/openbsd-arm64@0.24.0': '@esbuild/openbsd-arm64@0.24.2':
resolution: {integrity: sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==} resolution: {integrity: sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [arm64] cpu: [arm64]
os: [openbsd] os: [openbsd]
@ -681,8 +687,8 @@ packages:
cpu: [x64] cpu: [x64]
os: [openbsd] os: [openbsd]
'@esbuild/openbsd-x64@0.24.0': '@esbuild/openbsd-x64@0.24.2':
resolution: {integrity: sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==} resolution: {integrity: sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [x64] cpu: [x64]
os: [openbsd] os: [openbsd]
@ -693,8 +699,8 @@ packages:
cpu: [x64] cpu: [x64]
os: [sunos] os: [sunos]
'@esbuild/sunos-x64@0.24.0': '@esbuild/sunos-x64@0.24.2':
resolution: {integrity: sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==} resolution: {integrity: sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [x64] cpu: [x64]
os: [sunos] os: [sunos]
@ -705,8 +711,8 @@ packages:
cpu: [arm64] cpu: [arm64]
os: [win32] os: [win32]
'@esbuild/win32-arm64@0.24.0': '@esbuild/win32-arm64@0.24.2':
resolution: {integrity: sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==} resolution: {integrity: sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [arm64] cpu: [arm64]
os: [win32] os: [win32]
@ -717,8 +723,8 @@ packages:
cpu: [ia32] cpu: [ia32]
os: [win32] os: [win32]
'@esbuild/win32-ia32@0.24.0': '@esbuild/win32-ia32@0.24.2':
resolution: {integrity: sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==} resolution: {integrity: sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [ia32] cpu: [ia32]
os: [win32] os: [win32]
@ -729,8 +735,8 @@ packages:
cpu: [x64] cpu: [x64]
os: [win32] os: [win32]
'@esbuild/win32-x64@0.24.0': '@esbuild/win32-x64@0.24.2':
resolution: {integrity: sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==} resolution: {integrity: sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [x64] cpu: [x64]
os: [win32] os: [win32]
@ -1468,8 +1474,8 @@ packages:
engines: {node: '>=18'} engines: {node: '>=18'}
hasBin: true hasBin: true
esbuild@0.24.0: esbuild@0.24.2:
resolution: {integrity: sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==} resolution: {integrity: sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==}
engines: {node: '>=18'} engines: {node: '>=18'}
hasBin: true hasBin: true
@ -1976,8 +1982,8 @@ packages:
pkg-types@1.2.1: pkg-types@1.2.1:
resolution: {integrity: sha512-sQoqa8alT3nHjGuTjuKgOnvjo4cljkufdtLMnO2LBP/wRwuDlo1tkaEdMxCRhyGRPacv/ztlZgDPm2b7FAmEvw==} resolution: {integrity: sha512-sQoqa8alT3nHjGuTjuKgOnvjo4cljkufdtLMnO2LBP/wRwuDlo1tkaEdMxCRhyGRPacv/ztlZgDPm2b7FAmEvw==}
postcss@8.4.49: postcss@8.5.1:
resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} resolution: {integrity: sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==}
engines: {node: ^10 || ^12 || >=14} engines: {node: ^10 || ^12 || >=14}
prelude-ls@1.2.1: prelude-ls@1.2.1:
@ -2257,8 +2263,8 @@ packages:
vfile@4.2.1: vfile@4.2.1:
resolution: {integrity: sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==} resolution: {integrity: sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==}
vite@6.0.3: vite@6.0.9:
resolution: {integrity: sha512-Cmuo5P0ENTN6HxLSo6IHsjCLn/81Vgrp81oaiFFMRa8gGDj5xEjIcEpf2ZymZtZR8oU0P2JX5WuUp/rlXcHkAw==} resolution: {integrity: sha512-MSgUxHcaXLtnBPktkbUSoQUANApKYuxZ6DrbVENlIorbhL2dZydTLaZ01tjUoE3szeFzlFk9ANOKk0xurh4MKA==}
engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
hasBin: true hasBin: true
peerDependencies: peerDependencies:
@ -2540,145 +2546,148 @@ snapshots:
'@esbuild/aix-ppc64@0.23.1': '@esbuild/aix-ppc64@0.23.1':
optional: true optional: true
'@esbuild/aix-ppc64@0.24.0': '@esbuild/aix-ppc64@0.24.2':
optional: true optional: true
'@esbuild/android-arm64@0.23.1': '@esbuild/android-arm64@0.23.1':
optional: true optional: true
'@esbuild/android-arm64@0.24.0': '@esbuild/android-arm64@0.24.2':
optional: true optional: true
'@esbuild/android-arm@0.23.1': '@esbuild/android-arm@0.23.1':
optional: true optional: true
'@esbuild/android-arm@0.24.0': '@esbuild/android-arm@0.24.2':
optional: true optional: true
'@esbuild/android-x64@0.23.1': '@esbuild/android-x64@0.23.1':
optional: true optional: true
'@esbuild/android-x64@0.24.0': '@esbuild/android-x64@0.24.2':
optional: true optional: true
'@esbuild/darwin-arm64@0.23.1': '@esbuild/darwin-arm64@0.23.1':
optional: true optional: true
'@esbuild/darwin-arm64@0.24.0': '@esbuild/darwin-arm64@0.24.2':
optional: true optional: true
'@esbuild/darwin-x64@0.23.1': '@esbuild/darwin-x64@0.23.1':
optional: true optional: true
'@esbuild/darwin-x64@0.24.0': '@esbuild/darwin-x64@0.24.2':
optional: true optional: true
'@esbuild/freebsd-arm64@0.23.1': '@esbuild/freebsd-arm64@0.23.1':
optional: true optional: true
'@esbuild/freebsd-arm64@0.24.0': '@esbuild/freebsd-arm64@0.24.2':
optional: true optional: true
'@esbuild/freebsd-x64@0.23.1': '@esbuild/freebsd-x64@0.23.1':
optional: true optional: true
'@esbuild/freebsd-x64@0.24.0': '@esbuild/freebsd-x64@0.24.2':
optional: true optional: true
'@esbuild/linux-arm64@0.23.1': '@esbuild/linux-arm64@0.23.1':
optional: true optional: true
'@esbuild/linux-arm64@0.24.0': '@esbuild/linux-arm64@0.24.2':
optional: true optional: true
'@esbuild/linux-arm@0.23.1': '@esbuild/linux-arm@0.23.1':
optional: true optional: true
'@esbuild/linux-arm@0.24.0': '@esbuild/linux-arm@0.24.2':
optional: true optional: true
'@esbuild/linux-ia32@0.23.1': '@esbuild/linux-ia32@0.23.1':
optional: true optional: true
'@esbuild/linux-ia32@0.24.0': '@esbuild/linux-ia32@0.24.2':
optional: true optional: true
'@esbuild/linux-loong64@0.23.1': '@esbuild/linux-loong64@0.23.1':
optional: true optional: true
'@esbuild/linux-loong64@0.24.0': '@esbuild/linux-loong64@0.24.2':
optional: true optional: true
'@esbuild/linux-mips64el@0.23.1': '@esbuild/linux-mips64el@0.23.1':
optional: true optional: true
'@esbuild/linux-mips64el@0.24.0': '@esbuild/linux-mips64el@0.24.2':
optional: true optional: true
'@esbuild/linux-ppc64@0.23.1': '@esbuild/linux-ppc64@0.23.1':
optional: true optional: true
'@esbuild/linux-ppc64@0.24.0': '@esbuild/linux-ppc64@0.24.2':
optional: true optional: true
'@esbuild/linux-riscv64@0.23.1': '@esbuild/linux-riscv64@0.23.1':
optional: true optional: true
'@esbuild/linux-riscv64@0.24.0': '@esbuild/linux-riscv64@0.24.2':
optional: true optional: true
'@esbuild/linux-s390x@0.23.1': '@esbuild/linux-s390x@0.23.1':
optional: true optional: true
'@esbuild/linux-s390x@0.24.0': '@esbuild/linux-s390x@0.24.2':
optional: true optional: true
'@esbuild/linux-x64@0.23.1': '@esbuild/linux-x64@0.23.1':
optional: true optional: true
'@esbuild/linux-x64@0.24.0': '@esbuild/linux-x64@0.24.2':
optional: true
'@esbuild/netbsd-arm64@0.24.2':
optional: true optional: true
'@esbuild/netbsd-x64@0.23.1': '@esbuild/netbsd-x64@0.23.1':
optional: true optional: true
'@esbuild/netbsd-x64@0.24.0': '@esbuild/netbsd-x64@0.24.2':
optional: true optional: true
'@esbuild/openbsd-arm64@0.23.1': '@esbuild/openbsd-arm64@0.23.1':
optional: true optional: true
'@esbuild/openbsd-arm64@0.24.0': '@esbuild/openbsd-arm64@0.24.2':
optional: true optional: true
'@esbuild/openbsd-x64@0.23.1': '@esbuild/openbsd-x64@0.23.1':
optional: true optional: true
'@esbuild/openbsd-x64@0.24.0': '@esbuild/openbsd-x64@0.24.2':
optional: true optional: true
'@esbuild/sunos-x64@0.23.1': '@esbuild/sunos-x64@0.23.1':
optional: true optional: true
'@esbuild/sunos-x64@0.24.0': '@esbuild/sunos-x64@0.24.2':
optional: true optional: true
'@esbuild/win32-arm64@0.23.1': '@esbuild/win32-arm64@0.23.1':
optional: true optional: true
'@esbuild/win32-arm64@0.24.0': '@esbuild/win32-arm64@0.24.2':
optional: true optional: true
'@esbuild/win32-ia32@0.23.1': '@esbuild/win32-ia32@0.23.1':
optional: true optional: true
'@esbuild/win32-ia32@0.24.0': '@esbuild/win32-ia32@0.24.2':
optional: true optional: true
'@esbuild/win32-x64@0.23.1': '@esbuild/win32-x64@0.23.1':
optional: true optional: true
'@esbuild/win32-x64@0.24.0': '@esbuild/win32-x64@0.24.2':
optional: true optional: true
'@eslint-community/eslint-utils@4.4.1(eslint@9.18.0(jiti@2.4.2))': '@eslint-community/eslint-utils@4.4.1(eslint@9.18.0(jiti@2.4.2))':
@ -2887,25 +2896,25 @@ snapshots:
'@rollup/rollup-win32-x64-msvc@4.31.0': '@rollup/rollup-win32-x64-msvc@4.31.0':
optional: true optional: true
'@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.0.1(svelte@5.10.0)(vite@6.0.3(jiti@2.4.2)(terser@5.36.0)(tsx@4.19.2)))(svelte@5.10.0)(vite@6.0.3(jiti@2.4.2)(terser@5.36.0)(tsx@4.19.2))': '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.0.1(svelte@5.10.0)(vite@6.0.9(jiti@2.4.2)(terser@5.36.0)(tsx@4.19.2)))(svelte@5.10.0)(vite@6.0.9(jiti@2.4.2)(terser@5.36.0)(tsx@4.19.2))':
dependencies: dependencies:
'@sveltejs/vite-plugin-svelte': 5.0.1(svelte@5.10.0)(vite@6.0.3(jiti@2.4.2)(terser@5.36.0)(tsx@4.19.2)) '@sveltejs/vite-plugin-svelte': 5.0.1(svelte@5.10.0)(vite@6.0.9(jiti@2.4.2)(terser@5.36.0)(tsx@4.19.2))
debug: 4.4.0(supports-color@8.1.1) debug: 4.4.0(supports-color@8.1.1)
svelte: 5.10.0 svelte: 5.10.0
vite: 6.0.3(jiti@2.4.2)(terser@5.36.0)(tsx@4.19.2) vite: 6.0.9(jiti@2.4.2)(terser@5.36.0)(tsx@4.19.2)
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@sveltejs/vite-plugin-svelte@5.0.1(svelte@5.10.0)(vite@6.0.3(jiti@2.4.2)(terser@5.36.0)(tsx@4.19.2))': '@sveltejs/vite-plugin-svelte@5.0.1(svelte@5.10.0)(vite@6.0.9(jiti@2.4.2)(terser@5.36.0)(tsx@4.19.2))':
dependencies: dependencies:
'@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.0.1(svelte@5.10.0)(vite@6.0.3(jiti@2.4.2)(terser@5.36.0)(tsx@4.19.2)))(svelte@5.10.0)(vite@6.0.3(jiti@2.4.2)(terser@5.36.0)(tsx@4.19.2)) '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.0.1(svelte@5.10.0)(vite@6.0.9(jiti@2.4.2)(terser@5.36.0)(tsx@4.19.2)))(svelte@5.10.0)(vite@6.0.9(jiti@2.4.2)(terser@5.36.0)(tsx@4.19.2))
debug: 4.4.0(supports-color@8.1.1) debug: 4.4.0(supports-color@8.1.1)
deepmerge: 4.3.1 deepmerge: 4.3.1
kleur: 4.1.5 kleur: 4.1.5
magic-string: 0.30.17 magic-string: 0.30.17
svelte: 5.10.0 svelte: 5.10.0
vite: 6.0.3(jiti@2.4.2)(terser@5.36.0)(tsx@4.19.2) vite: 6.0.9(jiti@2.4.2)(terser@5.36.0)(tsx@4.19.2)
vitefu: 1.0.4(vite@6.0.3(jiti@2.4.2)(terser@5.36.0)(tsx@4.19.2)) vitefu: 1.0.4(vite@6.0.9(jiti@2.4.2)(terser@5.36.0)(tsx@4.19.2))
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
@ -3052,13 +3061,13 @@ snapshots:
'@typescript-eslint/types': 8.21.0 '@typescript-eslint/types': 8.21.0
eslint-visitor-keys: 4.2.0 eslint-visitor-keys: 4.2.0
'@unocss/astro@65.4.0(rollup@4.31.0)(vite@6.0.3(jiti@2.4.2)(terser@5.36.0)(tsx@4.19.2))(vue@3.5.13(typescript@5.7.3))': '@unocss/astro@65.4.0(rollup@4.31.0)(vite@6.0.9(jiti@2.4.2)(terser@5.36.0)(tsx@4.19.2))(vue@3.5.13(typescript@5.7.3))':
dependencies: dependencies:
'@unocss/core': 65.4.0 '@unocss/core': 65.4.0
'@unocss/reset': 65.4.0 '@unocss/reset': 65.4.0
'@unocss/vite': 65.4.0(rollup@4.31.0)(vite@6.0.3(jiti@2.4.2)(terser@5.36.0)(tsx@4.19.2))(vue@3.5.13(typescript@5.7.3)) '@unocss/vite': 65.4.0(rollup@4.31.0)(vite@6.0.9(jiti@2.4.2)(terser@5.36.0)(tsx@4.19.2))(vue@3.5.13(typescript@5.7.3))
optionalDependencies: optionalDependencies:
vite: 6.0.3(jiti@2.4.2)(terser@5.36.0)(tsx@4.19.2) vite: 6.0.9(jiti@2.4.2)(terser@5.36.0)(tsx@4.19.2)
transitivePeerDependencies: transitivePeerDependencies:
- rollup - rollup
- supports-color - supports-color
@ -3109,13 +3118,13 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- vue - vue
'@unocss/postcss@65.4.0(postcss@8.4.49)': '@unocss/postcss@65.4.0(postcss@8.5.1)':
dependencies: dependencies:
'@unocss/config': 65.4.0 '@unocss/config': 65.4.0
'@unocss/core': 65.4.0 '@unocss/core': 65.4.0
'@unocss/rule-utils': 65.4.0 '@unocss/rule-utils': 65.4.0
css-tree: 3.1.0 css-tree: 3.1.0
postcss: 8.4.49 postcss: 8.5.1
tinyglobby: 0.2.10 tinyglobby: 0.2.10
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
@ -3190,7 +3199,7 @@ snapshots:
dependencies: dependencies:
'@unocss/core': 65.4.0 '@unocss/core': 65.4.0
'@unocss/vite@65.4.0(rollup@4.31.0)(vite@6.0.3(jiti@2.4.2)(terser@5.36.0)(tsx@4.19.2))(vue@3.5.13(typescript@5.7.3))': '@unocss/vite@65.4.0(rollup@4.31.0)(vite@6.0.9(jiti@2.4.2)(terser@5.36.0)(tsx@4.19.2))(vue@3.5.13(typescript@5.7.3))':
dependencies: dependencies:
'@ampproject/remapping': 2.3.0 '@ampproject/remapping': 2.3.0
'@rollup/pluginutils': 5.1.4(rollup@4.31.0) '@rollup/pluginutils': 5.1.4(rollup@4.31.0)
@ -3200,7 +3209,7 @@ snapshots:
chokidar: 3.6.0 chokidar: 3.6.0
magic-string: 0.30.17 magic-string: 0.30.17
tinyglobby: 0.2.10 tinyglobby: 0.2.10
vite: 6.0.3(jiti@2.4.2)(terser@5.36.0)(tsx@4.19.2) vite: 6.0.9(jiti@2.4.2)(terser@5.36.0)(tsx@4.19.2)
transitivePeerDependencies: transitivePeerDependencies:
- rollup - rollup
- supports-color - supports-color
@ -3228,7 +3237,7 @@ snapshots:
'@vue/shared': 3.5.13 '@vue/shared': 3.5.13
estree-walker: 2.0.2 estree-walker: 2.0.2
magic-string: 0.30.17 magic-string: 0.30.17
postcss: 8.4.49 postcss: 8.5.1
source-map-js: 1.2.1 source-map-js: 1.2.1
'@vue/compiler-ssr@3.5.13': '@vue/compiler-ssr@3.5.13':
@ -3338,9 +3347,9 @@ snapshots:
base64-js: 1.5.1 base64-js: 1.5.1
ieee754: 1.2.1 ieee754: 1.2.1
bundle-require@5.0.0(esbuild@0.24.0): bundle-require@5.0.0(esbuild@0.24.2):
dependencies: dependencies:
esbuild: 0.24.0 esbuild: 0.24.2
load-tsconfig: 0.2.5 load-tsconfig: 0.2.5
cac@6.7.14: {} cac@6.7.14: {}
@ -3510,32 +3519,33 @@ snapshots:
'@esbuild/win32-ia32': 0.23.1 '@esbuild/win32-ia32': 0.23.1
'@esbuild/win32-x64': 0.23.1 '@esbuild/win32-x64': 0.23.1
esbuild@0.24.0: esbuild@0.24.2:
optionalDependencies: optionalDependencies:
'@esbuild/aix-ppc64': 0.24.0 '@esbuild/aix-ppc64': 0.24.2
'@esbuild/android-arm': 0.24.0 '@esbuild/android-arm': 0.24.2
'@esbuild/android-arm64': 0.24.0 '@esbuild/android-arm64': 0.24.2
'@esbuild/android-x64': 0.24.0 '@esbuild/android-x64': 0.24.2
'@esbuild/darwin-arm64': 0.24.0 '@esbuild/darwin-arm64': 0.24.2
'@esbuild/darwin-x64': 0.24.0 '@esbuild/darwin-x64': 0.24.2
'@esbuild/freebsd-arm64': 0.24.0 '@esbuild/freebsd-arm64': 0.24.2
'@esbuild/freebsd-x64': 0.24.0 '@esbuild/freebsd-x64': 0.24.2
'@esbuild/linux-arm': 0.24.0 '@esbuild/linux-arm': 0.24.2
'@esbuild/linux-arm64': 0.24.0 '@esbuild/linux-arm64': 0.24.2
'@esbuild/linux-ia32': 0.24.0 '@esbuild/linux-ia32': 0.24.2
'@esbuild/linux-loong64': 0.24.0 '@esbuild/linux-loong64': 0.24.2
'@esbuild/linux-mips64el': 0.24.0 '@esbuild/linux-mips64el': 0.24.2
'@esbuild/linux-ppc64': 0.24.0 '@esbuild/linux-ppc64': 0.24.2
'@esbuild/linux-riscv64': 0.24.0 '@esbuild/linux-riscv64': 0.24.2
'@esbuild/linux-s390x': 0.24.0 '@esbuild/linux-s390x': 0.24.2
'@esbuild/linux-x64': 0.24.0 '@esbuild/linux-x64': 0.24.2
'@esbuild/netbsd-x64': 0.24.0 '@esbuild/netbsd-arm64': 0.24.2
'@esbuild/openbsd-arm64': 0.24.0 '@esbuild/netbsd-x64': 0.24.2
'@esbuild/openbsd-x64': 0.24.0 '@esbuild/openbsd-arm64': 0.24.2
'@esbuild/sunos-x64': 0.24.0 '@esbuild/openbsd-x64': 0.24.2
'@esbuild/win32-arm64': 0.24.0 '@esbuild/sunos-x64': 0.24.2
'@esbuild/win32-ia32': 0.24.0 '@esbuild/win32-arm64': 0.24.2
'@esbuild/win32-x64': 0.24.0 '@esbuild/win32-ia32': 0.24.2
'@esbuild/win32-x64': 0.24.2
escalade@3.2.0: {} escalade@3.2.0: {}
@ -3751,9 +3761,9 @@ snapshots:
importx@0.5.1: importx@0.5.1:
dependencies: dependencies:
bundle-require: 5.0.0(esbuild@0.24.0) bundle-require: 5.0.0(esbuild@0.24.2)
debug: 4.4.0(supports-color@8.1.1) debug: 4.4.0(supports-color@8.1.1)
esbuild: 0.24.0 esbuild: 0.24.2
jiti: 2.4.2 jiti: 2.4.2
pathe: 1.1.2 pathe: 1.1.2
tsx: 4.19.2 tsx: 4.19.2
@ -4061,7 +4071,7 @@ snapshots:
mlly: 1.7.3 mlly: 1.7.3
pathe: 1.1.2 pathe: 1.1.2
postcss@8.4.49: postcss@8.5.1:
dependencies: dependencies:
nanoid: 3.3.8 nanoid: 3.3.8
picocolors: 1.1.1 picocolors: 1.1.1
@ -4339,12 +4349,12 @@ snapshots:
dependencies: dependencies:
'@types/unist': 2.0.11 '@types/unist': 2.0.11
unocss@65.4.0(postcss@8.4.49)(rollup@4.31.0)(vite@6.0.3(jiti@2.4.2)(terser@5.36.0)(tsx@4.19.2))(vue@3.5.13(typescript@5.7.3)): unocss@65.4.0(postcss@8.5.1)(rollup@4.31.0)(vite@6.0.9(jiti@2.4.2)(terser@5.36.0)(tsx@4.19.2))(vue@3.5.13(typescript@5.7.3)):
dependencies: dependencies:
'@unocss/astro': 65.4.0(rollup@4.31.0)(vite@6.0.3(jiti@2.4.2)(terser@5.36.0)(tsx@4.19.2))(vue@3.5.13(typescript@5.7.3)) '@unocss/astro': 65.4.0(rollup@4.31.0)(vite@6.0.9(jiti@2.4.2)(terser@5.36.0)(tsx@4.19.2))(vue@3.5.13(typescript@5.7.3))
'@unocss/cli': 65.4.0(rollup@4.31.0) '@unocss/cli': 65.4.0(rollup@4.31.0)
'@unocss/core': 65.4.0 '@unocss/core': 65.4.0
'@unocss/postcss': 65.4.0(postcss@8.4.49) '@unocss/postcss': 65.4.0(postcss@8.5.1)
'@unocss/preset-attributify': 65.4.0 '@unocss/preset-attributify': 65.4.0
'@unocss/preset-icons': 65.4.0 '@unocss/preset-icons': 65.4.0
'@unocss/preset-mini': 65.4.0 '@unocss/preset-mini': 65.4.0
@ -4357,9 +4367,9 @@ snapshots:
'@unocss/transformer-compile-class': 65.4.0 '@unocss/transformer-compile-class': 65.4.0
'@unocss/transformer-directives': 65.4.0 '@unocss/transformer-directives': 65.4.0
'@unocss/transformer-variant-group': 65.4.0 '@unocss/transformer-variant-group': 65.4.0
'@unocss/vite': 65.4.0(rollup@4.31.0)(vite@6.0.3(jiti@2.4.2)(terser@5.36.0)(tsx@4.19.2))(vue@3.5.13(typescript@5.7.3)) '@unocss/vite': 65.4.0(rollup@4.31.0)(vite@6.0.9(jiti@2.4.2)(terser@5.36.0)(tsx@4.19.2))(vue@3.5.13(typescript@5.7.3))
optionalDependencies: optionalDependencies:
vite: 6.0.3(jiti@2.4.2)(terser@5.36.0)(tsx@4.19.2) vite: 6.0.9(jiti@2.4.2)(terser@5.36.0)(tsx@4.19.2)
transitivePeerDependencies: transitivePeerDependencies:
- postcss - postcss
- rollup - rollup
@ -4382,10 +4392,10 @@ snapshots:
unist-util-stringify-position: 2.0.3 unist-util-stringify-position: 2.0.3
vfile-message: 2.0.4 vfile-message: 2.0.4
vite@6.0.3(jiti@2.4.2)(terser@5.36.0)(tsx@4.19.2): vite@6.0.9(jiti@2.4.2)(terser@5.36.0)(tsx@4.19.2):
dependencies: dependencies:
esbuild: 0.24.0 esbuild: 0.24.2
postcss: 8.4.49 postcss: 8.5.1
rollup: 4.31.0 rollup: 4.31.0
optionalDependencies: optionalDependencies:
fsevents: 2.3.3 fsevents: 2.3.3
@ -4393,9 +4403,9 @@ snapshots:
terser: 5.36.0 terser: 5.36.0
tsx: 4.19.2 tsx: 4.19.2
vitefu@1.0.4(vite@6.0.3(jiti@2.4.2)(terser@5.36.0)(tsx@4.19.2)): vitefu@1.0.4(vite@6.0.9(jiti@2.4.2)(terser@5.36.0)(tsx@4.19.2)):
optionalDependencies: optionalDependencies:
vite: 6.0.3(jiti@2.4.2)(terser@5.36.0)(tsx@4.19.2) vite: 6.0.9(jiti@2.4.2)(terser@5.36.0)(tsx@4.19.2)
vue-flow-layout@0.1.1(vue@3.5.13(typescript@5.7.3)): vue-flow-layout@0.1.1(vue@3.5.13(typescript@5.7.3)):
dependencies: dependencies:

Loading…
Cancel
Save