diff --git a/.changes/add-total-transferred-field.md b/.changes/add-total-transferred-field.md
new file mode 100644
index 00000000..ac11352f
--- /dev/null
+++ b/.changes/add-total-transferred-field.md
@@ -0,0 +1,6 @@
+---
+"upload": "minor"
+"upload-js": "minor"
+---
+
+Added a new field `progressTotal` to track the total amount of data transferred during the upload/download process.
diff --git a/.changes/change-pr-1963.md b/.changes/change-pr-1963.md
deleted file mode 100644
index ce68f4e2..00000000
--- a/.changes/change-pr-1963.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"sql-js": patch
----
-
-Fixed incorrect documentation of the select method in the Database class.
diff --git a/.changes/fix-1985.md b/.changes/fix-1985.md
deleted file mode 100644
index 6f0c3999..00000000
--- a/.changes/fix-1985.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"clipboard-manager": patch
----
-
-Fix that `read_image` wrongly set the image rgba data with binary PNG data.
diff --git a/.changes/fix-deep-link-onopenurl-current.md b/.changes/fix-deep-link-onopenurl-current.md
new file mode 100644
index 00000000..3ede6ebd
--- /dev/null
+++ b/.changes/fix-deep-link-onopenurl-current.md
@@ -0,0 +1,6 @@
+---
+deep-link: patch
+deep-link-js: patch
+---
+
+`onOpenUrl()` will now not call `getCurrent()` anymore, matching the documented behavior.
diff --git a/.changes/fix-sql-blocking.md b/.changes/fix-sql-blocking.md
deleted file mode 100644
index 518f02a5..00000000
--- a/.changes/fix-sql-blocking.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-sql: patch
----
-
-Replace `Mutex` with `RwLock` to enable concurrent SQL execution.
\ No newline at end of file
diff --git a/.changes/fs-read-dir-broken-symlink.md b/.changes/fs-read-dir-broken-symlink.md
new file mode 100644
index 00000000..d1aa3d01
--- /dev/null
+++ b/.changes/fs-read-dir-broken-symlink.md
@@ -0,0 +1,7 @@
+---
+"fs": "patch"
+"fs-js": "patch"
+---
+
+Fix `readDir` function failing to read directories that contain broken symlinks.
+
diff --git a/.changes/fs-writeTextFile-utf8-path.md b/.changes/fs-writeTextFile-utf8-path.md
deleted file mode 100644
index 561e83e3..00000000
--- a/.changes/fs-writeTextFile-utf8-path.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"fs-js": "patch"
----
-
-Fix `writeTextFile` converting UTF-8 characters (for example `äöü`) in the given path into replacement character (`�`)
\ No newline at end of file
diff --git a/.changes/localhost-custom-host-binding.md b/.changes/localhost-custom-host-binding.md
new file mode 100644
index 00000000..b5bd3b53
--- /dev/null
+++ b/.changes/localhost-custom-host-binding.md
@@ -0,0 +1,5 @@
+---
+'localhost': 'minor'
+---
+
+Add custom host binding to allow external access
\ No newline at end of file
diff --git a/.changes/log-update-fern.md b/.changes/log-update-fern.md
deleted file mode 100644
index ecfe06c7..00000000
--- a/.changes/log-update-fern.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-log-plugin: patch
----
-
-**Potentially breaking:** Updated `fern` from 0.6 to 0.7. This is technically a breaking change because `fern` is re-exported in `tauri-plugin-log`.
diff --git a/Cargo.lock b/Cargo.lock
index 91758e68..c888bb6e 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -206,7 +206,7 @@ checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6"
[[package]]
name = "api"
-version = "2.0.4"
+version = "2.0.5"
dependencies = [
"log",
"serde",
@@ -377,7 +377,7 @@ version = "0.4.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "103db485efc3e41214fe4fda9f3dbeae2eb9082f48fd236e6095627a9422066e"
dependencies = [
- "brotli 7.0.0",
+ "brotli",
"flate2",
"futures-core",
"memchr",
@@ -466,7 +466,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.79",
+ "syn 2.0.87",
]
[[package]]
@@ -501,7 +501,7 @@ checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.79",
+ "syn 2.0.87",
]
[[package]]
@@ -549,7 +549,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1f012b8cc0c850f34117ec8252a44418f2e34a2cf501de89e29b241ae5f79471"
dependencies = [
"dirs 4.0.0",
- "thiserror",
+ "thiserror 1.0.64",
"winreg 0.10.1",
]
@@ -726,21 +726,10 @@ dependencies = [
"proc-macro-crate 2.0.2",
"proc-macro2",
"quote",
- "syn 2.0.79",
+ "syn 2.0.87",
"syn_derive",
]
-[[package]]
-name = "brotli"
-version = "6.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "74f7971dbd9326d58187408ab83117d8ac1bb9c17b085fdacd1cf2f598719b6b"
-dependencies = [
- "alloc-no-stdlib",
- "alloc-stdlib",
- "brotli-decompressor",
-]
-
[[package]]
name = "brotli"
version = "7.0.0"
@@ -839,7 +828,7 @@ dependencies = [
"glib",
"libc",
"once_cell",
- "thiserror",
+ "thiserror 1.0.64",
]
[[package]]
@@ -882,7 +871,7 @@ dependencies = [
"semver",
"serde",
"serde_json",
- "thiserror",
+ "thiserror 1.0.64",
]
[[package]]
@@ -1379,7 +1368,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331"
dependencies = [
"quote",
- "syn 2.0.79",
+ "syn 2.0.87",
]
[[package]]
@@ -1389,7 +1378,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "edb49164822f3ee45b17acd4a208cfc1251410cf0cad9a833234c9890774dd9f"
dependencies = [
"quote",
- "syn 2.0.79",
+ "syn 2.0.87",
]
[[package]]
@@ -1425,7 +1414,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.79",
+ "syn 2.0.87",
]
[[package]]
@@ -1449,7 +1438,7 @@ dependencies = [
"proc-macro2",
"quote",
"strsim",
- "syn 2.0.79",
+ "syn 2.0.87",
]
[[package]]
@@ -1460,7 +1449,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806"
dependencies = [
"darling_core",
"quote",
- "syn 2.0.79",
+ "syn 2.0.87",
]
[[package]]
@@ -1535,7 +1524,7 @@ checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.79",
+ "syn 2.0.87",
]
[[package]]
@@ -1548,7 +1537,7 @@ dependencies = [
"proc-macro2",
"quote",
"rustc_version",
- "syn 2.0.79",
+ "syn 2.0.87",
]
[[package]]
@@ -1639,7 +1628,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.79",
+ "syn 2.0.87",
]
[[package]]
@@ -1671,7 +1660,7 @@ checksum = "f2b99bf03862d7f545ebc28ddd33a665b50865f4dfd84031a393823879bd4c54"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.79",
+ "syn 2.0.87",
]
[[package]]
@@ -1850,7 +1839,7 @@ checksum = "de0d48a183585823424a4ce1aa132d174a6a81bd540895822eb4c8373a8e49e8"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.79",
+ "syn 2.0.87",
]
[[package]]
@@ -2009,15 +1998,6 @@ dependencies = [
"miniz_oxide",
]
-[[package]]
-name = "fluent-uri"
-version = "0.1.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "17c704e9dbe1ddd863da1e6ff3567795087b1eb201ce80d8fa81162e1516500d"
-dependencies = [
- "bitflags 1.3.2",
-]
-
[[package]]
name = "flume"
version = "0.11.0"
@@ -2062,7 +2042,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.79",
+ "syn 2.0.87",
]
[[package]]
@@ -2191,7 +2171,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.79",
+ "syn 2.0.87",
]
[[package]]
@@ -2419,7 +2399,7 @@ dependencies = [
"once_cell",
"pin-project-lite",
"smallvec",
- "thiserror",
+ "thiserror 1.0.64",
]
[[package]]
@@ -2455,7 +2435,7 @@ dependencies = [
"memchr",
"once_cell",
"smallvec",
- "thiserror",
+ "thiserror 1.0.64",
]
[[package]]
@@ -2469,7 +2449,7 @@ dependencies = [
"proc-macro-error",
"proc-macro2",
"quote",
- "syn 2.0.79",
+ "syn 2.0.87",
]
[[package]]
@@ -2500,7 +2480,7 @@ dependencies = [
"objc2-app-kit",
"once_cell",
"serde",
- "thiserror",
+ "thiserror 1.0.64",
"windows-sys 0.59.0",
"x11-dl",
]
@@ -2576,7 +2556,7 @@ dependencies = [
"proc-macro-error",
"proc-macro2",
"quote",
- "syn 2.0.79",
+ "syn 2.0.87",
]
[[package]]
@@ -3020,7 +3000,7 @@ dependencies = [
"stronghold-derive",
"stronghold-utils",
"stronghold_engine",
- "thiserror",
+ "thiserror 1.0.64",
"zeroize",
]
@@ -3107,7 +3087,7 @@ dependencies = [
"combine",
"jni-sys",
"log",
- "thiserror",
+ "thiserror 1.0.64",
"walkdir",
"windows-sys 0.45.0",
]
@@ -3135,23 +3115,22 @@ dependencies = [
[[package]]
name = "json-patch"
-version = "2.0.0"
+version = "3.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5b1fb8864823fad91877e6caea0baca82e49e8db50f8e5c9f9a453e27d3330fc"
+checksum = "863726d7afb6bc2590eeff7135d923545e5e964f004c2ccf8716c25e70a86f08"
dependencies = [
"jsonptr",
"serde",
"serde_json",
- "thiserror",
+ "thiserror 1.0.64",
]
[[package]]
name = "jsonptr"
-version = "0.4.7"
+version = "0.6.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1c6e529149475ca0b2820835d3dce8fcc41c6b943ca608d32f35b449255e4627"
+checksum = "5dea2b27dd239b2556ed7a25ba842fe47fd602e7fc7433c2a8d6106d4d9edd70"
dependencies = [
- "fluent-uri",
"serde",
"serde_json",
]
@@ -3551,7 +3530,7 @@ dependencies = [
"once_cell",
"png",
"serde",
- "thiserror",
+ "thiserror 1.0.64",
"windows-sys 0.59.0",
]
@@ -3584,7 +3563,7 @@ dependencies = [
"ndk-sys",
"num_enum",
"raw-window-handle",
- "thiserror",
+ "thiserror 1.0.64",
]
[[package]]
@@ -3774,7 +3753,7 @@ dependencies = [
"proc-macro-crate 2.0.2",
"proc-macro2",
"quote",
- "syn 2.0.79",
+ "syn 2.0.87",
]
[[package]]
@@ -4089,7 +4068,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.79",
+ "syn 2.0.87",
]
[[package]]
@@ -4362,7 +4341,7 @@ dependencies = [
"phf_shared 0.11.2",
"proc-macro2",
"quote",
- "syn 2.0.79",
+ "syn 2.0.87",
]
[[package]]
@@ -4668,7 +4647,7 @@ dependencies = [
"rustc-hash",
"rustls",
"socket2",
- "thiserror",
+ "thiserror 1.0.64",
"tokio",
"tracing",
]
@@ -4685,7 +4664,7 @@ dependencies = [
"rustc-hash",
"rustls",
"slab",
- "thiserror",
+ "thiserror 1.0.64",
"tinyvec",
"tracing",
]
@@ -4833,7 +4812,7 @@ checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43"
dependencies = [
"getrandom 0.2.15",
"libredox",
- "thiserror",
+ "thiserror 1.0.64",
]
[[package]]
@@ -5240,7 +5219,7 @@ dependencies = [
"proc-macro2",
"quote",
"serde_derive_internals",
- "syn 2.0.79",
+ "syn 2.0.87",
]
[[package]]
@@ -5366,7 +5345,7 @@ checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.79",
+ "syn 2.0.87",
]
[[package]]
@@ -5377,7 +5356,7 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.79",
+ "syn 2.0.87",
]
[[package]]
@@ -5400,7 +5379,7 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.79",
+ "syn 2.0.87",
]
[[package]]
@@ -5451,7 +5430,7 @@ dependencies = [
"darling",
"proc-macro2",
"quote",
- "syn 2.0.79",
+ "syn 2.0.87",
]
[[package]]
@@ -5663,7 +5642,7 @@ checksum = "4ccbb212565d2dc177bc15ecb7b039d66c4490da892436a4eee5b394d620c9bc"
dependencies = [
"paste",
"specta-macros",
- "thiserror",
+ "thiserror 1.0.64",
]
[[package]]
@@ -5675,7 +5654,7 @@ dependencies = [
"Inflector",
"proc-macro2",
"quote",
- "syn 2.0.79",
+ "syn 2.0.87",
]
[[package]]
@@ -5754,7 +5733,7 @@ dependencies = [
"sha2",
"smallvec",
"sqlformat",
- "thiserror",
+ "thiserror 1.0.64",
"time",
"tokio",
"tokio-stream",
@@ -5773,7 +5752,7 @@ dependencies = [
"quote",
"sqlx-core",
"sqlx-macros-core",
- "syn 2.0.79",
+ "syn 2.0.87",
]
[[package]]
@@ -5796,7 +5775,7 @@ dependencies = [
"sqlx-mysql",
"sqlx-postgres",
"sqlx-sqlite",
- "syn 2.0.79",
+ "syn 2.0.87",
"tempfile",
"tokio",
"url",
@@ -5839,7 +5818,7 @@ dependencies = [
"smallvec",
"sqlx-core",
"stringprep",
- "thiserror",
+ "thiserror 1.0.64",
"time",
"tracing",
"whoami",
@@ -5878,7 +5857,7 @@ dependencies = [
"smallvec",
"sqlx-core",
"stringprep",
- "thiserror",
+ "thiserror 1.0.64",
"time",
"tracing",
"whoami",
@@ -5982,7 +5961,7 @@ dependencies = [
"nix 0.24.3",
"rand 0.8.5",
"serde",
- "thiserror",
+ "thiserror 1.0.64",
"windows 0.36.1",
"zeroize",
]
@@ -6011,7 +5990,7 @@ dependencies = [
"paste",
"serde",
"stronghold-runtime",
- "thiserror",
+ "thiserror 1.0.64",
"zeroize",
]
@@ -6051,9 +6030,9 @@ dependencies = [
[[package]]
name = "syn"
-version = "2.0.79"
+version = "2.0.87"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590"
+checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d"
dependencies = [
"proc-macro2",
"quote",
@@ -6069,7 +6048,7 @@ dependencies = [
"proc-macro-error",
"proc-macro2",
"quote",
- "syn 2.0.79",
+ "syn 2.0.87",
]
[[package]]
@@ -6126,9 +6105,9 @@ dependencies = [
[[package]]
name = "tao"
-version = "0.30.3"
+version = "0.30.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a0dbbebe82d02044dfa481adca1550d6dd7bd16e086bc34fa0fbecceb5a63751"
+checksum = "0368f818393ddb38d84cf7446adbf343cca3896da7dd2c8c2311059c11cb1740"
dependencies = [
"bitflags 2.6.0",
"cocoa",
@@ -6171,7 +6150,7 @@ checksum = "f4e16beb8b2ac17db28eab8bca40e62dbfbb34c0fcdc6d9826b11b7b5d047dfd"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.79",
+ "syn 2.0.87",
]
[[package]]
@@ -6199,9 +6178,9 @@ checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1"
[[package]]
name = "tauri"
-version = "2.0.4"
+version = "2.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "44438500b50708bfc1e6083844e135d1b516325aae58710dcd8fb67e050ae87c"
+checksum = "e545de0a2dfe296fa67db208266cd397c5a55ae782da77973ef4c4fac90e9f2c"
dependencies = [
"anyhow",
"bytes",
@@ -6239,7 +6218,7 @@ dependencies = [
"tauri-runtime",
"tauri-runtime-wry",
"tauri-utils",
- "thiserror",
+ "thiserror 2.0.3",
"tokio",
"tray-icon",
"url",
@@ -6253,9 +6232,9 @@ dependencies = [
[[package]]
name = "tauri-build"
-version = "2.0.1"
+version = "2.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "935f9b3c49b22b3e2e485a57f46d61cd1ae07b1cbb2ba87387a387caf2d8c4e7"
+checksum = "7bd2a4bcfaf5fb9f4be72520eefcb61ae565038f8ccba2a497d8c28f463b8c01"
dependencies = [
"anyhow",
"cargo_toml",
@@ -6277,12 +6256,12 @@ dependencies = [
[[package]]
name = "tauri-codegen"
-version = "2.0.1"
+version = "2.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "95d7443dd4f0b597704b6a14b964ee2ed16e99928d8e6292ae9825f09fbcd30e"
+checksum = "bf79faeecf301d3e969b1fae977039edb77a4c1f25cc0a961be298b54bff97cf"
dependencies = [
"base64 0.22.1",
- "brotli 6.0.0",
+ "brotli",
"ico",
"json-patch",
"plist",
@@ -6293,9 +6272,9 @@ dependencies = [
"serde",
"serde_json",
"sha2",
- "syn 2.0.79",
+ "syn 2.0.87",
"tauri-utils",
- "thiserror",
+ "thiserror 2.0.3",
"time",
"url",
"uuid",
@@ -6304,14 +6283,14 @@ dependencies = [
[[package]]
name = "tauri-macros"
-version = "2.0.1"
+version = "2.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4d2c0963ccfc3f5194415f2cce7acc975942a8797fbabfb0aa1ed6f59326ae7f"
+checksum = "c52027c8c5afb83166dacddc092ee8fff50772f9646d461d8c33ee887e447a03"
dependencies = [
"heck 0.5.0",
"proc-macro2",
"quote",
- "syn 2.0.79",
+ "syn 2.0.87",
"tauri-codegen",
"tauri-utils",
]
@@ -6343,7 +6322,7 @@ dependencies = [
"serde_json",
"tauri",
"tauri-plugin",
- "thiserror",
+ "thiserror 2.0.3",
]
[[package]]
@@ -6355,7 +6334,7 @@ dependencies = [
"serde_json",
"tauri",
"tauri-plugin",
- "thiserror",
+ "thiserror 2.0.3",
]
[[package]]
@@ -6368,7 +6347,7 @@ dependencies = [
"serde_repr",
"tauri",
"tauri-plugin",
- "thiserror",
+ "thiserror 2.0.3",
]
[[package]]
@@ -6381,12 +6360,12 @@ dependencies = [
"serde_json",
"tauri",
"tauri-plugin",
- "thiserror",
+ "thiserror 2.0.3",
]
[[package]]
name = "tauri-plugin-clipboard-manager"
-version = "2.0.1"
+version = "2.0.2"
dependencies = [
"arboard",
"log",
@@ -6394,7 +6373,7 @@ dependencies = [
"serde_json",
"tauri",
"tauri-plugin",
- "thiserror",
+ "thiserror 2.0.3",
]
[[package]]
@@ -6409,7 +6388,7 @@ dependencies = [
"tauri",
"tauri-plugin",
"tauri-utils",
- "thiserror",
+ "thiserror 2.0.3",
"url",
"windows-registry 0.3.0",
"windows-result 0.2.0",
@@ -6427,7 +6406,7 @@ dependencies = [
"tauri",
"tauri-plugin",
"tauri-plugin-fs",
- "thiserror",
+ "thiserror 2.0.3",
"url",
]
@@ -6447,7 +6426,7 @@ dependencies = [
"serde_repr",
"tauri",
"tauri-plugin",
- "thiserror",
+ "thiserror 2.0.3",
"url",
"uuid",
]
@@ -6462,7 +6441,7 @@ dependencies = [
"specta",
"tauri",
"tauri-plugin",
- "thiserror",
+ "thiserror 2.0.3",
]
[[package]]
@@ -6475,7 +6454,7 @@ dependencies = [
"serde_json",
"tauri",
"tauri-plugin",
- "thiserror",
+ "thiserror 2.0.3",
]
[[package]]
@@ -6488,7 +6467,7 @@ dependencies = [
"specta",
"tauri",
"tauri-plugin",
- "thiserror",
+ "thiserror 2.0.3",
]
[[package]]
@@ -6505,7 +6484,7 @@ dependencies = [
"tauri",
"tauri-plugin",
"tauri-plugin-fs",
- "thiserror",
+ "thiserror 2.0.3",
"tokio",
"url",
"urlpattern",
@@ -6520,13 +6499,13 @@ dependencies = [
"serde",
"serde_json",
"tauri",
- "thiserror",
+ "thiserror 2.0.3",
"tiny_http",
]
[[package]]
name = "tauri-plugin-log"
-version = "2.0.1"
+version = "2.0.2"
dependencies = [
"android_logger",
"byte-unit",
@@ -6540,7 +6519,7 @@ dependencies = [
"swift-rs",
"tauri",
"tauri-plugin",
- "thiserror",
+ "thiserror 2.0.3",
"time",
]
@@ -6554,7 +6533,7 @@ dependencies = [
"serde_repr",
"tauri",
"tauri-plugin",
- "thiserror",
+ "thiserror 2.0.3",
]
[[package]]
@@ -6572,7 +6551,7 @@ dependencies = [
"serde_repr",
"tauri",
"tauri-plugin",
- "thiserror",
+ "thiserror 2.0.3",
"time",
"url",
"win7-notifications",
@@ -6592,7 +6571,7 @@ dependencies = [
"sys-locale",
"tauri",
"tauri-plugin",
- "thiserror",
+ "thiserror 2.0.3",
]
[[package]]
@@ -6606,7 +6585,7 @@ dependencies = [
"serde_json",
"tauri",
"tauri-plugin-fs",
- "thiserror",
+ "thiserror 2.0.3",
]
[[package]]
@@ -6619,7 +6598,7 @@ dependencies = [
"serde_repr",
"tauri",
"tauri-plugin",
- "thiserror",
+ "thiserror 2.0.3",
]
[[package]]
@@ -6645,7 +6624,7 @@ dependencies = [
"shared_child",
"tauri",
"tauri-plugin",
- "thiserror",
+ "thiserror 2.0.3",
"tokio",
]
@@ -6659,14 +6638,14 @@ dependencies = [
"serde_json",
"tauri",
"tauri-plugin-deep-link",
- "thiserror",
+ "thiserror 2.0.3",
"windows-sys 0.59.0",
"zbus",
]
[[package]]
name = "tauri-plugin-sql"
-version = "2.0.1"
+version = "2.0.2"
dependencies = [
"futures-core",
"indexmap 2.6.0",
@@ -6676,7 +6655,7 @@ dependencies = [
"sqlx",
"tauri",
"tauri-plugin",
- "thiserror",
+ "thiserror 2.0.3",
"time",
"tokio",
]
@@ -6691,7 +6670,7 @@ dependencies = [
"serde_json",
"tauri",
"tauri-plugin",
- "thiserror",
+ "thiserror 2.0.3",
"tokio",
]
@@ -6712,7 +6691,7 @@ dependencies = [
"serde_json",
"tauri",
"tauri-plugin",
- "thiserror",
+ "thiserror 2.0.3",
"zeroize",
]
@@ -6736,7 +6715,7 @@ dependencies = [
"tauri",
"tauri-plugin",
"tempfile",
- "thiserror",
+ "thiserror 2.0.3",
"time",
"tokio",
"url",
@@ -6746,7 +6725,7 @@ dependencies = [
[[package]]
name = "tauri-plugin-upload"
-version = "2.0.1"
+version = "2.1.0"
dependencies = [
"futures-util",
"log",
@@ -6757,7 +6736,7 @@ dependencies = [
"serde_json",
"tauri",
"tauri-plugin",
- "thiserror",
+ "thiserror 2.0.3",
"tokio",
"tokio-util",
]
@@ -6774,14 +6753,14 @@ dependencies = [
"serde_json",
"tauri",
"tauri-plugin",
- "thiserror",
+ "thiserror 2.0.3",
"tokio",
"tokio-tungstenite",
]
[[package]]
name = "tauri-plugin-window-state"
-version = "2.0.1"
+version = "2.0.2"
dependencies = [
"bitflags 2.6.0",
"log",
@@ -6789,14 +6768,14 @@ dependencies = [
"serde_json",
"tauri",
"tauri-plugin",
- "thiserror",
+ "thiserror 2.0.3",
]
[[package]]
name = "tauri-runtime"
-version = "2.1.0"
+version = "2.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c8f437293d6f5e5dce829250f4dbdce4e0b52905e297a6689cc2963eb53ac728"
+checksum = "cce18d43f80d4aba3aa8a0c953bbe835f3d0f2370aca75e8dbb14bd4bab27958"
dependencies = [
"dpi",
"gtk",
@@ -6806,16 +6785,16 @@ dependencies = [
"serde",
"serde_json",
"tauri-utils",
- "thiserror",
+ "thiserror 2.0.3",
"url",
"windows 0.58.0",
]
[[package]]
name = "tauri-runtime-wry"
-version = "2.1.1"
+version = "2.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1431602bcc71f2f840ad623915c9842ecc32999b867c4a787d975a17a9625cc6"
+checksum = "9f442a38863e10129ffe2cec7bd09c2dcf8a098a3a27801a476a304d5bb991d2"
dependencies = [
"gtk",
"http",
@@ -6839,18 +6818,19 @@ dependencies = [
[[package]]
name = "tauri-utils"
-version = "2.0.1"
+version = "2.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c38b0230d6880cf6dd07b6d7dd7789a0869f98ac12146e0d18d1c1049215a045"
+checksum = "9271a88f99b4adea0dc71d0baca4505475a0bbd139fb135f62958721aaa8fe54"
dependencies = [
"aes-gcm",
- "brotli 6.0.0",
+ "brotli",
"cargo_metadata",
"ctor",
"dunce",
"getrandom 0.2.15",
"glob",
"html5ever",
+ "http",
"infer",
"json-patch",
"kuchikiki",
@@ -6868,7 +6848,7 @@ dependencies = [
"serde_with",
"serialize-to-javascript",
"swift-rs",
- "thiserror",
+ "thiserror 2.0.3",
"toml 0.8.2",
"url",
"urlpattern",
@@ -6942,7 +6922,16 @@ version = "1.0.64"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84"
dependencies = [
- "thiserror-impl",
+ "thiserror-impl 1.0.64",
+]
+
+[[package]]
+name = "thiserror"
+version = "2.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c006c85c7651b3cf2ada4584faa36773bd07bac24acfb39f3c431b36d7e667aa"
+dependencies = [
+ "thiserror-impl 2.0.3",
]
[[package]]
@@ -6953,7 +6942,18 @@ checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.79",
+ "syn 2.0.87",
+]
+
+[[package]]
+name = "thiserror-impl"
+version = "2.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f077553d607adc1caf65430528a576c757a71ed73944b66ebb58ef2bbd243568"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.87",
]
[[package]]
@@ -7063,7 +7063,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.79",
+ "syn 2.0.87",
]
[[package]]
@@ -7095,7 +7095,7 @@ checksum = "0d4770b8024672c1101b3f6733eab95b18007dbe0847a8afe341fcf79e06043f"
dependencies = [
"either",
"futures-util",
- "thiserror",
+ "thiserror 1.0.64",
"tokio",
]
@@ -7227,7 +7227,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.79",
+ "syn 2.0.87",
]
[[package]]
@@ -7256,7 +7256,7 @@ dependencies = [
"once_cell",
"png",
"serde",
- "thiserror",
+ "thiserror 1.0.64",
"windows-sys 0.59.0",
]
@@ -7289,7 +7289,7 @@ dependencies = [
"rustls",
"rustls-pki-types",
"sha1",
- "thiserror",
+ "thiserror 1.0.64",
"utf-8",
]
@@ -7610,7 +7610,7 @@ dependencies = [
"once_cell",
"proc-macro2",
"quote",
- "syn 2.0.79",
+ "syn 2.0.87",
"wasm-bindgen-shared",
]
@@ -7644,7 +7644,7 @@ checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.79",
+ "syn 2.0.87",
"wasm-bindgen-backend",
"wasm-bindgen-shared",
]
@@ -7827,7 +7827,7 @@ checksum = "1d228f15bba3b9d56dde8bddbee66fa24545bd17b48d5128ccf4a8742b18e431"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.79",
+ "syn 2.0.87",
]
[[package]]
@@ -7836,7 +7836,7 @@ version = "0.33.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a3a3e2eeb58f82361c93f9777014668eb3d07e7d174ee4c819575a9208011886"
dependencies = [
- "thiserror",
+ "thiserror 1.0.64",
"windows 0.58.0",
"windows-core 0.58.0",
]
@@ -7987,7 +7987,7 @@ checksum = "f6fc35f58ecd95a9b71c4f2329b911016e6bec66b3f2e6a4aad86bd2e99e2f9b"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.79",
+ "syn 2.0.87",
]
[[package]]
@@ -7998,7 +7998,7 @@ checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.79",
+ "syn 2.0.87",
]
[[package]]
@@ -8009,7 +8009,7 @@ checksum = "08990546bf4edef8f431fa6326e032865f27138718c587dc21bc0265bbcb57cc"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.79",
+ "syn 2.0.87",
]
[[package]]
@@ -8020,7 +8020,7 @@ checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.79",
+ "syn 2.0.87",
]
[[package]]
@@ -8365,12 +8365,13 @@ dependencies = [
[[package]]
name = "wry"
-version = "0.46.2"
+version = "0.47.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6fa1c8c760041c64ce6be99f83d6cb55fe3fcd85a1ad46d32895f6e65cee87ba"
+checksum = "553ca1ce149982123962fac2506aa75b8b76288779a77e72b12fa2fc34938647"
dependencies = [
"base64 0.22.1",
"block2",
+ "cookie",
"crossbeam-channel",
"dpi",
"dunce",
@@ -8394,7 +8395,8 @@ dependencies = [
"sha2",
"soup3",
"tao-macros",
- "thiserror",
+ "thiserror 1.0.64",
+ "url",
"webkit2gtk",
"webkit2gtk-sys",
"webview2-com",
@@ -8566,7 +8568,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.79",
+ "syn 2.0.87",
]
[[package]]
@@ -8587,7 +8589,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.79",
+ "syn 2.0.87",
]
[[package]]
@@ -8603,7 +8605,7 @@ dependencies = [
"flate2",
"indexmap 2.6.0",
"memchr",
- "thiserror",
+ "thiserror 1.0.64",
"zopfli",
]
diff --git a/Cargo.toml b/Cargo.toml
index a17d33ea..4143e048 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -11,12 +11,12 @@ resolver = "2"
[workspace.dependencies]
serde = { version = "1", features = ["derive"] }
log = "0.4"
-tauri = { version = "2.0.4", default-features = false }
-tauri-build = "2.0.1"
-tauri-plugin = "2.0.1"
-tauri-utils = "2.0.1"
+tauri = { version = "2", default-features = false }
+tauri-build = "2"
+tauri-plugin = "2"
+tauri-utils = "2"
serde_json = "1"
-thiserror = "1"
+thiserror = "2"
url = "2"
schemars = "0.8"
dunce = "1"
diff --git a/examples/api/CHANGELOG.md b/examples/api/CHANGELOG.md
index 0fc70ec0..4313f7e3 100644
--- a/examples/api/CHANGELOG.md
+++ b/examples/api/CHANGELOG.md
@@ -1,5 +1,11 @@
# Changelog
+## \[2.0.2]
+
+### Dependencies
+
+- Upgraded to `fs-js@2.0.2`
+
## \[2.0.1]
### Dependencies
diff --git a/examples/api/package.json b/examples/api/package.json
index b7b2d32c..53b66b37 100644
--- a/examples/api/package.json
+++ b/examples/api/package.json
@@ -1,21 +1,22 @@
{
- "name": "svelte-app",
+ "name": "api",
"private": true,
- "version": "2.0.1",
+ "version": "2.0.2",
"type": "module",
"scripts": {
"dev": "vite --clearScreen false",
"build": "vite build",
- "serve": "vite preview"
+ "serve": "vite preview",
+ "tauri": "tauri"
},
"dependencies": {
- "@tauri-apps/api": "2.0.3",
+ "@tauri-apps/api": "2.1.1",
"@tauri-apps/plugin-barcode-scanner": "2.0.0",
"@tauri-apps/plugin-biometric": "2.0.0",
"@tauri-apps/plugin-cli": "2.0.0",
"@tauri-apps/plugin-clipboard-manager": "2.0.0",
"@tauri-apps/plugin-dialog": "2.0.1",
- "@tauri-apps/plugin-fs": "2.0.1",
+ "@tauri-apps/plugin-fs": "2.0.2",
"@tauri-apps/plugin-geolocation": "2.0.0",
"@tauri-apps/plugin-global-shortcut": "2.0.0",
"@tauri-apps/plugin-haptics": "2.0.0",
@@ -33,10 +34,10 @@
"@iconify-json/codicon": "^1.1.37",
"@iconify-json/ph": "^1.1.8",
"@sveltejs/vite-plugin-svelte": "^4.0.0",
- "@tauri-apps/cli": "2.0.4",
- "@unocss/extractor-svelte": "^0.63.0",
+ "@tauri-apps/cli": "2.1.0",
+ "@unocss/extractor-svelte": "^0.64.0",
"svelte": "^5.0.0",
- "unocss": "^0.63.0",
+ "unocss": "^0.64.0",
"vite": "^5.4.7"
}
}
diff --git a/examples/api/src-tauri/CHANGELOG.md b/examples/api/src-tauri/CHANGELOG.md
index b914893a..d4855a8b 100644
--- a/examples/api/src-tauri/CHANGELOG.md
+++ b/examples/api/src-tauri/CHANGELOG.md
@@ -1,5 +1,12 @@
# Changelog
+## \[2.0.5]
+
+### Dependencies
+
+- Upgraded to `clipboard-manager@2.0.2`
+- Upgraded to `log-plugin@2.0.2`
+
## \[2.0.4]
### Dependencies
diff --git a/examples/api/src-tauri/Cargo.toml b/examples/api/src-tauri/Cargo.toml
index db6ec283..6bf01614 100644
--- a/examples/api/src-tauri/Cargo.toml
+++ b/examples/api/src-tauri/Cargo.toml
@@ -1,7 +1,7 @@
[package]
name = "api"
publish = false
-version = "2.0.4"
+version = "2.0.5"
description = "An example Tauri Application showcasing the api"
edition = "2021"
rust-version = { workspace = true }
@@ -19,11 +19,11 @@ serde_json = { workspace = true }
serde = { workspace = true }
tiny_http = "0.12"
log = { workspace = true }
-tauri-plugin-log = { path = "../../../plugins/log", version = "2.0.1" }
+tauri-plugin-log = { path = "../../../plugins/log", version = "2.0.2" }
tauri-plugin-fs = { path = "../../../plugins/fs", version = "2.0.3", features = [
"watch",
] }
-tauri-plugin-clipboard-manager = { path = "../../../plugins/clipboard-manager", version = "2.0.1" }
+tauri-plugin-clipboard-manager = { path = "../../../plugins/clipboard-manager", version = "2.0.2" }
tauri-plugin-dialog = { path = "../../../plugins/dialog", version = "2.0.3" }
tauri-plugin-http = { path = "../../../plugins/http", features = [
"multipart",
diff --git a/examples/api/src-tauri/capabilities/mobile.json b/examples/api/src-tauri/capabilities/mobile.json
index 93d46ad2..da77f5e5 100644
--- a/examples/api/src-tauri/capabilities/mobile.json
+++ b/examples/api/src-tauri/capabilities/mobile.json
@@ -15,6 +15,10 @@
"geolocation:allow-check-permissions",
"geolocation:allow-request-permissions",
"geolocation:allow-watch-position",
- "geolocation:allow-get-current-position"
+ "geolocation:allow-get-current-position",
+ "haptics:allow-impact-feedback",
+ "haptics:allow-notification-feedback",
+ "haptics:allow-selection-feedback",
+ "haptics:allow-vibrate"
]
}
diff --git a/examples/api/src/App.svelte b/examples/api/src/App.svelte
index c5fcf55e..f93198c2 100644
--- a/examples/api/src/App.svelte
+++ b/examples/api/src/App.svelte
@@ -21,6 +21,7 @@
import Scanner from './views/Scanner.svelte'
import Biometric from './views/Biometric.svelte'
import Geolocation from './views/Geolocation.svelte'
+ import Haptics from './views/Haptics.svelte'
import { onMount, tick } from 'svelte'
import { ask } from '@tauri-apps/plugin-dialog'
@@ -130,6 +131,11 @@
label: 'Geolocation',
component: Geolocation,
icon: 'i-ph-map-pin'
+ },
+ isMobile && {
+ label: 'Haptics',
+ component: Haptics,
+ icon: 'i-ph-vibrate'
}
]
diff --git a/examples/api/src/views/Haptics.svelte b/examples/api/src/views/Haptics.svelte
new file mode 100644
index 00000000..9ddf15c1
--- /dev/null
+++ b/examples/api/src/views/Haptics.svelte
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Depending on your device settings for haptic feedback some of the buttons may
+ not work.
+
diff --git a/package.json b/package.json
index f1192e95..c6b9d7e6 100644
--- a/package.json
+++ b/package.json
@@ -7,7 +7,8 @@
"build": "pnpm run -r --parallel --filter !plugins-workspace --filter !\"./plugins/*/examples/**\" --filter !\"./examples/*\" build",
"lint": "eslint .",
"format": "prettier --write .",
- "format:check": "prettier --check ."
+ "format:check": "prettier --check .",
+ "example:api:dev": "pnpm run --filter \"api\" tauri dev"
},
"devDependencies": {
"@eslint/js": "9.14.0",
@@ -20,10 +21,10 @@
"eslint-config-prettier": "9.1.0",
"eslint-plugin-security": "3.0.1",
"prettier": "3.3.3",
- "rollup": "4.24.4",
+ "rollup": "4.25.0",
"tslib": "2.8.1",
"typescript": "5.6.3",
- "typescript-eslint": "8.13.0"
+ "typescript-eslint": "8.14.0"
},
"resolutions": {
"semver": ">=7.5.2",
diff --git a/plugins/clipboard-manager/CHANGELOG.md b/plugins/clipboard-manager/CHANGELOG.md
index 68dee776..6b352e77 100644
--- a/plugins/clipboard-manager/CHANGELOG.md
+++ b/plugins/clipboard-manager/CHANGELOG.md
@@ -1,5 +1,9 @@
# Changelog
+## \[2.0.2]
+
+- [`d57df4de`](https://github.com/tauri-apps/plugins-workspace/commit/d57df4debe7c75cfbd6d6558fff1beb07dbee54c) ([#1986](https://github.com/tauri-apps/plugins-workspace/pull/1986) by [@RikaKagurasaka](https://github.com/tauri-apps/plugins-workspace/../../RikaKagurasaka)) Fix that `read_image` wrongly set the image rgba data with binary PNG data.
+
## \[2.0.1]
- [`a1a82208`](https://github.com/tauri-apps/plugins-workspace/commit/a1a82208ed4ab87f83310be0dc95428aec9ab241) ([#1873](https://github.com/tauri-apps/plugins-workspace/pull/1873) by [@lucasfernog](https://github.com/tauri-apps/plugins-workspace/../../lucasfernog)) Downgrade MSRV to 1.77.2 to support Windows 7.
diff --git a/plugins/clipboard-manager/Cargo.toml b/plugins/clipboard-manager/Cargo.toml
index 799b6010..cd30b4d0 100644
--- a/plugins/clipboard-manager/Cargo.toml
+++ b/plugins/clipboard-manager/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "tauri-plugin-clipboard-manager"
-version = "2.0.1"
+version = "2.0.2"
description = "Read and write to the system clipboard."
edition = { workspace = true }
authors = { workspace = true }
diff --git a/plugins/deep-link/api-iife.js b/plugins/deep-link/api-iife.js
index eba7152f..6d9e3e18 100644
--- a/plugins/deep-link/api-iife.js
+++ b/plugins/deep-link/api-iife.js
@@ -1 +1 @@
-if("__TAURI__"in window){var __TAURI_PLUGIN_DEEP_LINK__=function(e){"use strict";function n(e,n=!1){return window.__TAURI_INTERNALS__.transformCallback(e,n)}async function r(e,n={},r){return window.__TAURI_INTERNALS__.invoke(e,n,r)}var t;async function i(e,t,i){const a={kind:"Any"};return r("plugin:event|listen",{event:e,target:a,handler:n(t)}).then((n=>async()=>async function(e,n){await r("plugin:event|unlisten",{event:e,eventId:n})}(e,n)))}async function a(){return await r("plugin:deep-link|get_current")}return"function"==typeof SuppressedError&&SuppressedError,function(e){e.WINDOW_RESIZED="tauri://resize",e.WINDOW_MOVED="tauri://move",e.WINDOW_CLOSE_REQUESTED="tauri://close-requested",e.WINDOW_DESTROYED="tauri://destroyed",e.WINDOW_FOCUS="tauri://focus",e.WINDOW_BLUR="tauri://blur",e.WINDOW_SCALE_FACTOR_CHANGED="tauri://scale-change",e.WINDOW_THEME_CHANGED="tauri://theme-changed",e.WINDOW_CREATED="tauri://window-created",e.WEBVIEW_CREATED="tauri://webview-created",e.DRAG_ENTER="tauri://drag-enter",e.DRAG_OVER="tauri://drag-over",e.DRAG_DROP="tauri://drag-drop",e.DRAG_LEAVE="tauri://drag-leave"}(t||(t={})),e.getCurrent=a,e.isRegistered=async function(e){return await r("plugin:deep-link|is_registered",{protocol:e})},e.onOpenUrl=async function(e){const n=await a();return n&&e(n),await i("deep-link://new-url",(n=>{e(n.payload)}))},e.register=async function(e){return await r("plugin:deep-link|register",{protocol:e})},e.unregister=async function(e){return await r("plugin:deep-link|unregister",{protocol:e})},e}({});Object.defineProperty(window.__TAURI__,"deepLink",{value:__TAURI_PLUGIN_DEEP_LINK__})}
+if("__TAURI__"in window){var __TAURI_PLUGIN_DEEP_LINK__=function(e){"use strict";function n(e,n=!1){return window.__TAURI_INTERNALS__.transformCallback(e,n)}async function r(e,n={},r){return window.__TAURI_INTERNALS__.invoke(e,n,r)}var t;async function i(e,t,i){const a={kind:"Any"};return r("plugin:event|listen",{event:e,target:a,handler:n(t)}).then((n=>async()=>async function(e,n){await r("plugin:event|unlisten",{event:e,eventId:n})}(e,n)))}return"function"==typeof SuppressedError&&SuppressedError,function(e){e.WINDOW_RESIZED="tauri://resize",e.WINDOW_MOVED="tauri://move",e.WINDOW_CLOSE_REQUESTED="tauri://close-requested",e.WINDOW_DESTROYED="tauri://destroyed",e.WINDOW_FOCUS="tauri://focus",e.WINDOW_BLUR="tauri://blur",e.WINDOW_SCALE_FACTOR_CHANGED="tauri://scale-change",e.WINDOW_THEME_CHANGED="tauri://theme-changed",e.WINDOW_CREATED="tauri://window-created",e.WEBVIEW_CREATED="tauri://webview-created",e.DRAG_ENTER="tauri://drag-enter",e.DRAG_OVER="tauri://drag-over",e.DRAG_DROP="tauri://drag-drop",e.DRAG_LEAVE="tauri://drag-leave"}(t||(t={})),e.getCurrent=async function(){return await r("plugin:deep-link|get_current")},e.isRegistered=async function(e){return await r("plugin:deep-link|is_registered",{protocol:e})},e.onOpenUrl=async function(e){return await i("deep-link://new-url",(n=>{e(n.payload)}))},e.register=async function(e){return await r("plugin:deep-link|register",{protocol:e})},e.unregister=async function(e){return await r("plugin:deep-link|unregister",{protocol:e})},e}({});Object.defineProperty(window.__TAURI__,"deepLink",{value:__TAURI_PLUGIN_DEEP_LINK__})}
diff --git a/plugins/deep-link/examples/app/package.json b/plugins/deep-link/examples/app/package.json
index 3ec6e4ab..0e997a5c 100644
--- a/plugins/deep-link/examples/app/package.json
+++ b/plugins/deep-link/examples/app/package.json
@@ -10,11 +10,11 @@
"tauri": "tauri"
},
"dependencies": {
- "@tauri-apps/api": "2.0.3",
+ "@tauri-apps/api": "2.1.1",
"@tauri-apps/plugin-deep-link": "2.0.0"
},
"devDependencies": {
- "@tauri-apps/cli": "2.0.4",
+ "@tauri-apps/cli": "2.1.0",
"typescript": "^5.2.2",
"vite": "^5.4.7"
}
diff --git a/plugins/deep-link/guest-js/index.ts b/plugins/deep-link/guest-js/index.ts
index 49afbab7..c9190d7a 100644
--- a/plugins/deep-link/guest-js/index.ts
+++ b/plugins/deep-link/guest-js/index.ts
@@ -99,11 +99,6 @@ export async function isRegistered(protocol: string): Promise {
export async function onOpenUrl(
handler: (urls: string[]) => void
): Promise {
- const current = await getCurrent()
- if (current) {
- handler(current)
- }
-
return await listen('deep-link://new-url', (event) => {
handler(event.payload)
})
diff --git a/plugins/deep-link/src/lib.rs b/plugins/deep-link/src/lib.rs
index 25cdd317..19065e40 100644
--- a/plugins/deep-link/src/lib.rs
+++ b/plugins/deep-link/src/lib.rs
@@ -2,8 +2,6 @@
// SPDX-License-Identifier: Apache-2.0
// SPDX-License-Identifier: MIT
-use std::sync::Arc;
-
use tauri::{
plugin::{Builder, PluginApi, TauriPlugin},
AppHandle, EventId, Listener, Manager, Runtime,
@@ -478,13 +476,10 @@ impl OpenUrlEvent {
}
impl DeepLink {
- /// Handle a new deep link being triggered to open the app.
+ /// Helper function for the `deep-link://new-url` event to run a function each time the protocol is triggered while the app is running.
///
- /// To avoid race conditions, if the app was started with a deep link,
- /// the closure gets immediately called with the deep link URL.
+ /// Use `get_current` on app load to check whether your app was started via a deep link.
pub fn on_open_url(&self, f: F) -> EventId {
- let f = Arc::new(f);
- let f_ = f.clone();
let event_id = self.app.listen("deep-link://new-url", move |event| {
if let Ok(urls) = serde_json::from_str(event.payload()) {
f(OpenUrlEvent {
@@ -494,13 +489,6 @@ impl DeepLink {
}
});
- if let Ok(Some(current)) = self.get_current() {
- f_(OpenUrlEvent {
- id: event_id,
- urls: current,
- })
- }
-
event_id
}
}
diff --git a/plugins/fs/CHANGELOG.md b/plugins/fs/CHANGELOG.md
index 707733ee..ab76200e 100644
--- a/plugins/fs/CHANGELOG.md
+++ b/plugins/fs/CHANGELOG.md
@@ -1,5 +1,9 @@
# Changelog
+## \[2.0.2]
+
+- [`77149dc4`](https://github.com/tauri-apps/plugins-workspace/commit/77149dc4320d26b413e4a6bbe82c654367c51b32) ([#1965](https://github.com/tauri-apps/plugins-workspace/pull/1965) by [@amrbashir](https://github.com/tauri-apps/plugins-workspace/../../amrbashir)) Fix `writeTextFile` converting UTF-8 characters (for example `äöü`) in the given path into replacement character (`�`)
+
## \[2.0.3]
- [`14cee64c`](https://github.com/tauri-apps/plugins-workspace/commit/14cee64c82a72655ae6a4ac0892736a2959dbda5) ([#1958](https://github.com/tauri-apps/plugins-workspace/pull/1958) by [@bWanShiTong](https://github.com/tauri-apps/plugins-workspace/../../bWanShiTong)) Fix compilation on targets with pointer width of `16` or `32`
diff --git a/plugins/fs/api-iife.js b/plugins/fs/api-iife.js
index f1e5360b..e44a180b 100644
--- a/plugins/fs/api-iife.js
+++ b/plugins/fs/api-iife.js
@@ -1 +1 @@
-if("__TAURI__"in window){var __TAURI_PLUGIN_FS__=function(t){"use strict";function e(t,e,n,i){if("a"===n&&!i)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!i:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?i:"a"===n?i.call(t):i?i.value:e.get(t)}function n(t,e,n,i,o){if("function"==typeof e?t!==e||!o:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return e.set(t,n),n}var i,o,r,a,s,c;"function"==typeof SuppressedError&&SuppressedError;class f{constructor(){this.__TAURI_CHANNEL_MARKER__=!0,i.set(this,(()=>{})),o.set(this,0),r.set(this,{}),this.id=function(t,e=!1){return window.__TAURI_INTERNALS__.transformCallback(t,e)}((({message:t,id:a})=>{if(a===e(this,o,"f")){n(this,o,a+1),e(this,i,"f").call(this,t);const s=Object.keys(e(this,r,"f"));if(s.length>0){let t=a+1;for(const n of s.sort()){if(parseInt(n)!==t)break;{const o=e(this,r,"f")[n];delete e(this,r,"f")[n],e(this,i,"f").call(this,o),t+=1}}n(this,o,t)}}else e(this,r,"f")[a.toString()]=t}))}set onmessage(t){n(this,i,t)}get onmessage(){return e(this,i,"f")}toJSON(){return`__CHANNEL__:${this.id}`}}async function l(t,e={},n){return window.__TAURI_INTERNALS__.invoke(t,e,n)}i=new WeakMap,o=new WeakMap,r=new WeakMap;class u{get rid(){return e(this,a,"f")}constructor(t){a.set(this,void 0),n(this,a,t)}async close(){return l("plugin:resources|close",{rid:this.rid})}}function p(t){return{isFile:t.isFile,isDirectory:t.isDirectory,isSymlink:t.isSymlink,size:t.size,mtime:null!==t.mtime?new Date(t.mtime):null,atime:null!==t.atime?new Date(t.atime):null,birthtime:null!==t.birthtime?new Date(t.birthtime):null,readonly:t.readonly,fileAttributes:t.fileAttributes,dev:t.dev,ino:t.ino,mode:t.mode,nlink:t.nlink,uid:t.uid,gid:t.gid,rdev:t.rdev,blksize:t.blksize,blocks:t.blocks}}a=new WeakMap,t.BaseDirectory=void 0,(s=t.BaseDirectory||(t.BaseDirectory={}))[s.Audio=1]="Audio",s[s.Cache=2]="Cache",s[s.Config=3]="Config",s[s.Data=4]="Data",s[s.LocalData=5]="LocalData",s[s.Document=6]="Document",s[s.Download=7]="Download",s[s.Picture=8]="Picture",s[s.Public=9]="Public",s[s.Video=10]="Video",s[s.Resource=11]="Resource",s[s.Temp=12]="Temp",s[s.AppConfig=13]="AppConfig",s[s.AppData=14]="AppData",s[s.AppLocalData=15]="AppLocalData",s[s.AppCache=16]="AppCache",s[s.AppLog=17]="AppLog",s[s.Desktop=18]="Desktop",s[s.Executable=19]="Executable",s[s.Font=20]="Font",s[s.Home=21]="Home",s[s.Runtime=22]="Runtime",s[s.Template=23]="Template",t.SeekMode=void 0,(c=t.SeekMode||(t.SeekMode={}))[c.Start=0]="Start",c[c.Current=1]="Current",c[c.End=2]="End";class w extends u{async read(t){if(0===t.byteLength)return 0;const e=await l("plugin:fs|read",{rid:this.rid,len:t.byteLength}),n=function(t){const e=new Uint8ClampedArray(t),n=e.byteLength;let i=0;for(let t=0;tt instanceof URL?t.toString():t)),options:i,onEvent:r});return()=>{h(a)}},t.watchImmediate=async function(t,e,n){const i={recursive:!1,...n,delayMs:null},o=Array.isArray(t)?t:[t];for(const t of o)if(t instanceof URL&&"file:"!==t.protocol)throw new TypeError("Must be a file URL.");const r=new f;r.onmessage=e;const a=await l("plugin:fs|watch",{paths:o.map((t=>t instanceof URL?t.toString():t)),options:i,onEvent:r});return()=>{h(a)}},t.writeFile=async function(t,e,n){if(t instanceof URL&&"file:"!==t.protocol)throw new TypeError("Must be a file URL.");await l("plugin:fs|write_file",e,{headers:{path:encodeURIComponent(t instanceof URL?t.toString():t),options:JSON.stringify(n)}})},t.writeTextFile=async function(t,e,n){if(t instanceof URL&&"file:"!==t.protocol)throw new TypeError("Must be a file URL.");const i=new TextEncoder;await l("plugin:fs|write_text_file",i.encode(e),{headers:{path:encodeURIComponent(t instanceof URL?t.toString():t),options:JSON.stringify(n)}})},t}({});Object.defineProperty(window.__TAURI__,"fs",{value:__TAURI_PLUGIN_FS__})}
+if("__TAURI__"in window){var __TAURI_PLUGIN_FS__=function(t){"use strict";function e(t,e,n,i){if("a"===n&&!i)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!i:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?i:"a"===n?i.call(t):i?i.value:e.get(t)}function n(t,e,n,i,o){if("function"==typeof e?t!==e||!o:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return e.set(t,n),n}var i,o,r,a;"function"==typeof SuppressedError&&SuppressedError;const s="__TAURI_TO_IPC_KEY__";class c{constructor(){this.__TAURI_CHANNEL_MARKER__=!0,i.set(this,(()=>{})),o.set(this,0),r.set(this,{}),this.id=function(t,e=!1){return window.__TAURI_INTERNALS__.transformCallback(t,e)}((({message:t,id:a})=>{if(a===e(this,o,"f")){n(this,o,a+1),e(this,i,"f").call(this,t);const s=Object.keys(e(this,r,"f"));if(s.length>0){let t=a+1;for(const n of s.sort()){if(parseInt(n)!==t)break;{const o=e(this,r,"f")[n];delete e(this,r,"f")[n],e(this,i,"f").call(this,o),t+=1}}n(this,o,t)}}else e(this,r,"f")[a.toString()]=t}))}set onmessage(t){n(this,i,t)}get onmessage(){return e(this,i,"f")}[(i=new WeakMap,o=new WeakMap,r=new WeakMap,s)](){return`__CHANNEL__:${this.id}`}toJSON(){return this[s]()}}async function f(t,e={},n){return window.__TAURI_INTERNALS__.invoke(t,e,n)}class l{get rid(){return e(this,a,"f")}constructor(t){a.set(this,void 0),n(this,a,t)}async close(){return f("plugin:resources|close",{rid:this.rid})}}var u,p;function w(t){return{isFile:t.isFile,isDirectory:t.isDirectory,isSymlink:t.isSymlink,size:t.size,mtime:null!==t.mtime?new Date(t.mtime):null,atime:null!==t.atime?new Date(t.atime):null,birthtime:null!==t.birthtime?new Date(t.birthtime):null,readonly:t.readonly,fileAttributes:t.fileAttributes,dev:t.dev,ino:t.ino,mode:t.mode,nlink:t.nlink,uid:t.uid,gid:t.gid,rdev:t.rdev,blksize:t.blksize,blocks:t.blocks}}a=new WeakMap,t.BaseDirectory=void 0,(u=t.BaseDirectory||(t.BaseDirectory={}))[u.Audio=1]="Audio",u[u.Cache=2]="Cache",u[u.Config=3]="Config",u[u.Data=4]="Data",u[u.LocalData=5]="LocalData",u[u.Document=6]="Document",u[u.Download=7]="Download",u[u.Picture=8]="Picture",u[u.Public=9]="Public",u[u.Video=10]="Video",u[u.Resource=11]="Resource",u[u.Temp=12]="Temp",u[u.AppConfig=13]="AppConfig",u[u.AppData=14]="AppData",u[u.AppLocalData=15]="AppLocalData",u[u.AppCache=16]="AppCache",u[u.AppLog=17]="AppLog",u[u.Desktop=18]="Desktop",u[u.Executable=19]="Executable",u[u.Font=20]="Font",u[u.Home=21]="Home",u[u.Runtime=22]="Runtime",u[u.Template=23]="Template",t.SeekMode=void 0,(p=t.SeekMode||(t.SeekMode={}))[p.Start=0]="Start",p[p.Current=1]="Current",p[p.End=2]="End";class h extends l{async read(t){if(0===t.byteLength)return 0;const e=await f("plugin:fs|read",{rid:this.rid,len:t.byteLength}),n=function(t){const e=new Uint8ClampedArray(t),n=e.byteLength;let i=0;for(let t=0;tt instanceof URL?t.toString():t)),options:i,onEvent:r});return()=>{d(a)}},t.watchImmediate=async function(t,e,n){const i={recursive:!1,...n,delayMs:null},o=Array.isArray(t)?t:[t];for(const t of o)if(t instanceof URL&&"file:"!==t.protocol)throw new TypeError("Must be a file URL.");const r=new c;r.onmessage=e;const a=await f("plugin:fs|watch",{paths:o.map((t=>t instanceof URL?t.toString():t)),options:i,onEvent:r});return()=>{d(a)}},t.writeFile=async function(t,e,n){if(t instanceof URL&&"file:"!==t.protocol)throw new TypeError("Must be a file URL.");await f("plugin:fs|write_file",e,{headers:{path:encodeURIComponent(t instanceof URL?t.toString():t),options:JSON.stringify(n)}})},t.writeTextFile=async function(t,e,n){if(t instanceof URL&&"file:"!==t.protocol)throw new TypeError("Must be a file URL.");const i=new TextEncoder;await f("plugin:fs|write_text_file",i.encode(e),{headers:{path:encodeURIComponent(t instanceof URL?t.toString():t),options:JSON.stringify(n)}})},t}({});Object.defineProperty(window.__TAURI__,"fs",{value:__TAURI_PLUGIN_FS__})}
diff --git a/plugins/fs/guest-js/index.ts b/plugins/fs/guest-js/index.ts
index ed8749d7..dabfbc92 100644
--- a/plugins/fs/guest-js/index.ts
+++ b/plugins/fs/guest-js/index.ts
@@ -14,16 +14,29 @@
*
* The API has a scope configuration that forces you to restrict the paths that can be accessed using glob patterns.
*
- * The scope configuration is an array of glob patterns describing folder paths that are allowed.
- * For instance, this scope configuration only allows accessing files on the
- * *databases* folder of the {@link https://v2.tauri.app/reference/javascript/api/namespacepath/#appdatadir | `$APPDATA` directory}:
+ * The scope configuration is an array of glob patterns describing file/directory paths that are allowed.
+ * For instance, this scope configuration allows **all** enabled `fs` APIs to (only) access files in the
+ * *databases* directory of the {@link https://v2.tauri.app/reference/javascript/api/namespacepath/#appdatadir | `$APPDATA` directory}:
* ```json
* {
- * "plugins": {
- * "fs": {
- * "scope": ["$APPDATA/databases/*"]
+ * "permissions": [
+ * {
+ * "identifier": "fs:scope",
+ * "allow": [{ "path": "$APPDATA/databases/*" }]
* }
- * }
+ * ]
+ * }
+ * ```
+ *
+ * Scopes can also be applied to specific `fs` APIs by using the API's identifier instead of `fs:scope`:
+ * ```json
+ * {
+ * "permissions": [
+ * {
+ * "identifier": "fs:allow-exists",
+ * "allow": [{ "path": "$APPDATA/databases/*" }]
+ * }
+ * ]
* }
* ```
*
@@ -56,8 +69,6 @@
*
* Trying to execute any API with a URL not configured on the scope results in a promise rejection due to denied access.
*
- * Note that this scope applies to **all** APIs on this module.
- *
* @module
*/
diff --git a/plugins/fs/package.json b/plugins/fs/package.json
index 0bce5c6c..dfecaee2 100644
--- a/plugins/fs/package.json
+++ b/plugins/fs/package.json
@@ -1,6 +1,6 @@
{
"name": "@tauri-apps/plugin-fs",
- "version": "2.0.1",
+ "version": "2.0.2",
"description": "Access the file system.",
"license": "MIT OR Apache-2.0",
"authors": [
diff --git a/plugins/fs/src/commands.rs b/plugins/fs/src/commands.rs
index 99eb5aa0..3b5cc44e 100644
--- a/plugins/fs/src/commands.rs
+++ b/plugins/fs/src/commands.rs
@@ -16,7 +16,7 @@ use std::{
borrow::Cow,
fs::File,
io::{BufReader, Lines, Read, Write},
- path::{Path, PathBuf},
+ path::PathBuf,
str::FromStr,
sync::Mutex,
time::{SystemTime, UNIX_EPOCH},
@@ -245,32 +245,12 @@ pub fn mkdir(
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct DirEntry {
- pub name: Option,
+ pub name: String,
pub is_directory: bool,
pub is_file: bool,
pub is_symlink: bool,
}
-fn read_dir_inner>(path: P) -> crate::Result> {
- let mut files_and_dirs: Vec = vec![];
- for entry in std::fs::read_dir(path)? {
- let path = entry?.path();
- let file_type = path.metadata()?.file_type();
- files_and_dirs.push(DirEntry {
- is_directory: file_type.is_dir(),
- is_file: file_type.is_file(),
- is_symlink: std::fs::symlink_metadata(&path)
- .map(|md| md.file_type().is_symlink())
- .unwrap_or(false),
- name: path
- .file_name()
- .map(|name| name.to_string_lossy())
- .map(|name| name.to_string()),
- });
- }
- Result::Ok(files_and_dirs)
-}
-
#[tauri::command]
pub async fn read_dir(
webview: Webview,
@@ -287,14 +267,37 @@ pub async fn read_dir(
options.as_ref().and_then(|o| o.base_dir),
)?;
- read_dir_inner(&resolved_path)
- .map_err(|e| {
- format!(
- "failed to read directory at path: {} with error: {e}",
- resolved_path.display()
- )
+ let entries = std::fs::read_dir(&resolved_path).map_err(|e| {
+ format!(
+ "failed to read directory at path: {} with error: {e}",
+ resolved_path.display()
+ )
+ })?;
+
+ let entries = entries
+ .filter_map(|entry| {
+ let entry = entry.ok()?;
+ let name = entry.file_name().into_string().ok()?;
+ let metadata = entry.file_type();
+ macro_rules! method_or_false {
+ ($method:ident) => {
+ if let Ok(metadata) = &metadata {
+ metadata.$method()
+ } else {
+ false
+ }
+ };
+ }
+ Some(DirEntry {
+ name,
+ is_file: method_or_false!(is_file),
+ is_directory: method_or_false!(is_dir),
+ is_symlink: method_or_false!(is_symlink),
+ })
})
- .map_err(Into::into)
+ .collect();
+
+ Ok(entries)
}
#[tauri::command]
diff --git a/plugins/geolocation/api-iife.js b/plugins/geolocation/api-iife.js
index 912c073e..5dcae251 100644
--- a/plugins/geolocation/api-iife.js
+++ b/plugins/geolocation/api-iife.js
@@ -1 +1 @@
-if("__TAURI__"in window){var __TAURI_PLUGIN_GEOLOCATION__=function(t){"use strict";function e(t,e,n,i){if("a"===n&&!i)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!i:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?i:"a"===n?i.call(t):i?i.value:e.get(t)}function n(t,e,n,i,o){if("function"==typeof e?t!==e||!o:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return e.set(t,n),n}var i,o,s;"function"==typeof SuppressedError&&SuppressedError;class r{constructor(){this.__TAURI_CHANNEL_MARKER__=!0,i.set(this,(()=>{})),o.set(this,0),s.set(this,{}),this.id=function(t,e=!1){return window.__TAURI_INTERNALS__.transformCallback(t,e)}((({message:t,id:r})=>{if(r===e(this,o,"f")){n(this,o,r+1),e(this,i,"f").call(this,t);const a=Object.keys(e(this,s,"f"));if(a.length>0){let t=r+1;for(const n of a.sort()){if(parseInt(n)!==t)break;{const o=e(this,s,"f")[n];delete e(this,s,"f")[n],e(this,i,"f").call(this,o),t+=1}}n(this,o,t)}}else e(this,s,"f")[r.toString()]=t}))}set onmessage(t){n(this,i,t)}get onmessage(){return e(this,i,"f")}toJSON(){return`__CHANNEL__:${this.id}`}}async function a(t,e={},n){return window.__TAURI_INTERNALS__.invoke(t,e,n)}return i=new WeakMap,o=new WeakMap,s=new WeakMap,t.checkPermissions=async function(){return await async function(t){return a(`plugin:${t}|check_permissions`)}("geolocation")},t.clearWatch=async function(t){await a("plugin:geolocation|clear_watch",{channelId:t})},t.getCurrentPosition=async function(t){return await a("plugin:geolocation|get_current_position",{options:t})},t.requestPermissions=async function(t){return await a("plugin:geolocation|request_permissions",{permissions:t})},t.watchPosition=async function(t,e){const n=new r;return n.onmessage=t=>{"string"==typeof t?e(null,t):e(t)},await a("plugin:geolocation|watch_position",{options:t,channel:n}),n.id},t}({});Object.defineProperty(window.__TAURI__,"geolocation",{value:__TAURI_PLUGIN_GEOLOCATION__})}
+if("__TAURI__"in window){var __TAURI_PLUGIN_GEOLOCATION__=function(t){"use strict";function e(t,e,n,i){if("a"===n&&!i)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!i:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?i:"a"===n?i.call(t):i?i.value:e.get(t)}function n(t,e,n,i,o){if("function"==typeof e?t!==e||!o:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return e.set(t,n),n}var i,o,s;"function"==typeof SuppressedError&&SuppressedError;const r="__TAURI_TO_IPC_KEY__";class a{constructor(){this.__TAURI_CHANNEL_MARKER__=!0,i.set(this,(()=>{})),o.set(this,0),s.set(this,{}),this.id=function(t,e=!1){return window.__TAURI_INTERNALS__.transformCallback(t,e)}((({message:t,id:r})=>{if(r===e(this,o,"f")){n(this,o,r+1),e(this,i,"f").call(this,t);const a=Object.keys(e(this,s,"f"));if(a.length>0){let t=r+1;for(const n of a.sort()){if(parseInt(n)!==t)break;{const o=e(this,s,"f")[n];delete e(this,s,"f")[n],e(this,i,"f").call(this,o),t+=1}}n(this,o,t)}}else e(this,s,"f")[r.toString()]=t}))}set onmessage(t){n(this,i,t)}get onmessage(){return e(this,i,"f")}[(i=new WeakMap,o=new WeakMap,s=new WeakMap,r)](){return`__CHANNEL__:${this.id}`}toJSON(){return this[r]()}}async function c(t,e={},n){return window.__TAURI_INTERNALS__.invoke(t,e,n)}return t.checkPermissions=async function(){return await async function(t){return c(`plugin:${t}|check_permissions`)}("geolocation")},t.clearWatch=async function(t){await c("plugin:geolocation|clear_watch",{channelId:t})},t.getCurrentPosition=async function(t){return await c("plugin:geolocation|get_current_position",{options:t})},t.requestPermissions=async function(t){return await c("plugin:geolocation|request_permissions",{permissions:t})},t.watchPosition=async function(t,e){const n=new a;return n.onmessage=t=>{"string"==typeof t?e(null,t):e(t)},await c("plugin:geolocation|watch_position",{options:t,channel:n}),n.id},t}({});Object.defineProperty(window.__TAURI__,"geolocation",{value:__TAURI_PLUGIN_GEOLOCATION__})}
diff --git a/plugins/global-shortcut/api-iife.js b/plugins/global-shortcut/api-iife.js
index 67ec9e47..b78e4084 100644
--- a/plugins/global-shortcut/api-iife.js
+++ b/plugins/global-shortcut/api-iife.js
@@ -1 +1 @@
-if("__TAURI__"in window){var __TAURI_PLUGIN_GLOBAL_SHORTCUT__=function(t){"use strict";function e(t,e,r,s){if("a"===r&&!s)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?s:"a"===r?s.call(t):s?s.value:e.get(t)}function r(t,e,r,s,n){if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return e.set(t,r),r}var s,n,i;"function"==typeof SuppressedError&&SuppressedError;class o{constructor(){this.__TAURI_CHANNEL_MARKER__=!0,s.set(this,(()=>{})),n.set(this,0),i.set(this,{}),this.id=function(t,e=!1){return window.__TAURI_INTERNALS__.transformCallback(t,e)}((({message:t,id:o})=>{if(o===e(this,n,"f")){r(this,n,o+1),e(this,s,"f").call(this,t);const a=Object.keys(e(this,i,"f"));if(a.length>0){let t=o+1;for(const r of a.sort()){if(parseInt(r)!==t)break;{const n=e(this,i,"f")[r];delete e(this,i,"f")[r],e(this,s,"f").call(this,n),t+=1}}r(this,n,t)}}else e(this,i,"f")[o.toString()]=t}))}set onmessage(t){r(this,s,t)}get onmessage(){return e(this,s,"f")}toJSON(){return`__CHANNEL__:${this.id}`}}async function a(t,e={},r){return window.__TAURI_INTERNALS__.invoke(t,e,r)}return s=new WeakMap,n=new WeakMap,i=new WeakMap,t.isRegistered=async function(t){return await a("plugin:global-shortcut|is_registered",{shortcut:t})},t.register=async function(t,e){const r=new o;return r.onmessage=e,await a("plugin:global-shortcut|register",{shortcuts:Array.isArray(t)?t:[t],handler:r})},t.unregister=async function(t){return await a("plugin:global-shortcut|unregister",{shortcuts:Array.isArray(t)?t:[t]})},t.unregisterAll=async function(){return await a("plugin:global-shortcut|unregister_all",{})},t}({});Object.defineProperty(window.__TAURI__,"globalShortcut",{value:__TAURI_PLUGIN_GLOBAL_SHORTCUT__})}
+if("__TAURI__"in window){var __TAURI_PLUGIN_GLOBAL_SHORTCUT__=function(t){"use strict";function e(t,e,r,s){if("a"===r&&!s)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?s:"a"===r?s.call(t):s?s.value:e.get(t)}function r(t,e,r,s,n){if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return e.set(t,r),r}var s,n,i;"function"==typeof SuppressedError&&SuppressedError;const o="__TAURI_TO_IPC_KEY__";class a{constructor(){this.__TAURI_CHANNEL_MARKER__=!0,s.set(this,(()=>{})),n.set(this,0),i.set(this,{}),this.id=function(t,e=!1){return window.__TAURI_INTERNALS__.transformCallback(t,e)}((({message:t,id:o})=>{if(o===e(this,n,"f")){r(this,n,o+1),e(this,s,"f").call(this,t);const a=Object.keys(e(this,i,"f"));if(a.length>0){let t=o+1;for(const r of a.sort()){if(parseInt(r)!==t)break;{const n=e(this,i,"f")[r];delete e(this,i,"f")[r],e(this,s,"f").call(this,n),t+=1}}r(this,n,t)}}else e(this,i,"f")[o.toString()]=t}))}set onmessage(t){r(this,s,t)}get onmessage(){return e(this,s,"f")}[(s=new WeakMap,n=new WeakMap,i=new WeakMap,o)](){return`__CHANNEL__:${this.id}`}toJSON(){return this[o]()}}async function _(t,e={},r){return window.__TAURI_INTERNALS__.invoke(t,e,r)}return t.isRegistered=async function(t){return await _("plugin:global-shortcut|is_registered",{shortcut:t})},t.register=async function(t,e){const r=new a;return r.onmessage=e,await _("plugin:global-shortcut|register",{shortcuts:Array.isArray(t)?t:[t],handler:r})},t.unregister=async function(t){return await _("plugin:global-shortcut|unregister",{shortcuts:Array.isArray(t)?t:[t]})},t.unregisterAll=async function(){return await _("plugin:global-shortcut|unregister_all",{})},t}({});Object.defineProperty(window.__TAURI__,"globalShortcut",{value:__TAURI_PLUGIN_GLOBAL_SHORTCUT__})}
diff --git a/plugins/localhost/src/lib.rs b/plugins/localhost/src/lib.rs
index a0c4c794..ae77cd80 100644
--- a/plugins/localhost/src/lib.rs
+++ b/plugins/localhost/src/lib.rs
@@ -46,6 +46,7 @@ type OnRequest = Option>;
pub struct Builder {
port: u16,
+ host: Option,
on_request: OnRequest,
}
@@ -53,10 +54,17 @@ impl Builder {
pub fn new(port: u16) -> Self {
Self {
port,
+ host: None,
on_request: None,
}
}
+ // Change the host the plugin binds to. Defaults to `localhost`.
+ pub fn host>(mut self, host: H) -> Self {
+ self.host = Some(host.into());
+ self
+ }
+
pub fn on_request(
mut self,
f: F,
@@ -67,6 +75,7 @@ impl Builder {
pub fn build(mut self) -> TauriPlugin {
let port = self.port;
+ let host = self.host.unwrap_or("localhost".to_string());
let on_request = self.on_request.take();
PluginBuilder::new("localhost")
@@ -74,7 +83,7 @@ impl Builder {
let asset_resolver = app.asset_resolver();
std::thread::spawn(move || {
let server =
- Server::http(format!("localhost:{port}")).expect("Unable to spawn server");
+ Server::http(format!("{host}:{port}")).expect("Unable to spawn server");
for req in server.incoming_requests() {
let path = req
.url()
diff --git a/plugins/log/CHANGELOG.md b/plugins/log/CHANGELOG.md
index f0177138..acc49d4f 100644
--- a/plugins/log/CHANGELOG.md
+++ b/plugins/log/CHANGELOG.md
@@ -1,5 +1,9 @@
# Changelog
+## \[2.0.2]
+
+- [`606fa08d`](https://github.com/tauri-apps/plugins-workspace/commit/606fa08dae1acd074b961fb360623f4c86f13ee8) ([#1997](https://github.com/tauri-apps/plugins-workspace/pull/1997) by [@renovate](https://github.com/tauri-apps/plugins-workspace/../../renovate)) **Potentially breaking:** Updated `fern` from 0.6 to 0.7. This is technically a breaking change because `fern` is re-exported in `tauri-plugin-log`.
+
## \[2.0.1]
- [`a1a82208`](https://github.com/tauri-apps/plugins-workspace/commit/a1a82208ed4ab87f83310be0dc95428aec9ab241) ([#1873](https://github.com/tauri-apps/plugins-workspace/pull/1873) by [@lucasfernog](https://github.com/tauri-apps/plugins-workspace/../../lucasfernog)) Downgrade MSRV to 1.77.2 to support Windows 7.
diff --git a/plugins/log/Cargo.toml b/plugins/log/Cargo.toml
index 402de10d..7b94e9a4 100644
--- a/plugins/log/Cargo.toml
+++ b/plugins/log/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "tauri-plugin-log"
-version = "2.0.1"
+version = "2.0.2"
description = "Configurable logging for your Tauri app."
authors = { workspace = true }
license = { workspace = true }
@@ -27,12 +27,12 @@ tauri-plugin = { workspace = true, features = ["build"] }
serde = { workspace = true }
serde_json = { workspace = true }
tauri = { workspace = true }
+thiserror = { workspace = true }
serde_repr = "0.1"
byte-unit = "5"
log = { workspace = true, features = ["kv_unstable"] }
time = { version = "0.3", features = ["formatting", "local-offset"] }
fern = "0.7"
-thiserror = "1"
[target."cfg(target_os = \"android\")".dependencies]
android_logger = "0.14"
diff --git a/plugins/notification/api-iife.js b/plugins/notification/api-iife.js
index a78b2a6d..0d33ccac 100644
--- a/plugins/notification/api-iife.js
+++ b/plugins/notification/api-iife.js
@@ -1 +1 @@
-if("__TAURI__"in window){var __TAURI_PLUGIN_NOTIFICATION__=function(i){"use strict";function t(i,t,n,e){if("a"===n&&!e)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?i!==t||!e:!t.has(i))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?e:"a"===n?e.call(i):e?e.value:t.get(i)}function n(i,t,n,e,o){if("function"==typeof t?i!==t||!o:!t.has(i))throw new TypeError("Cannot write private member to an object whose class did not declare it");return t.set(i,n),n}var e,o,a,r,c,s;"function"==typeof SuppressedError&&SuppressedError;class l{constructor(){this.__TAURI_CHANNEL_MARKER__=!0,e.set(this,(()=>{})),o.set(this,0),a.set(this,{}),this.id=function(i,t=!1){return window.__TAURI_INTERNALS__.transformCallback(i,t)}((({message:i,id:r})=>{if(r===t(this,o,"f")){n(this,o,r+1),t(this,e,"f").call(this,i);const c=Object.keys(t(this,a,"f"));if(c.length>0){let i=r+1;for(const n of c.sort()){if(parseInt(n)!==i)break;{const o=t(this,a,"f")[n];delete t(this,a,"f")[n],t(this,e,"f").call(this,o),i+=1}}n(this,o,i)}}else t(this,a,"f")[r.toString()]=i}))}set onmessage(i){n(this,e,i)}get onmessage(){return t(this,e,"f")}toJSON(){return`__CHANNEL__:${this.id}`}}e=new WeakMap,o=new WeakMap,a=new WeakMap;class u{constructor(i,t,n){this.plugin=i,this.event=t,this.channelId=n}async unregister(){return d(`plugin:${this.plugin}|remove_listener`,{event:this.event,channelId:this.channelId})}}async function f(i,t,n){const e=new l;return e.onmessage=n,d(`plugin:${i}|registerListener`,{event:t,handler:e}).then((()=>new u(i,t,e.id)))}async function d(i,t={},n){return window.__TAURI_INTERNALS__.invoke(i,t,n)}i.ScheduleEvery=void 0,(r=i.ScheduleEvery||(i.ScheduleEvery={})).Year="year",r.Month="month",r.TwoWeeks="twoWeeks",r.Week="week",r.Day="day",r.Hour="hour",r.Minute="minute",r.Second="second";return i.Importance=void 0,(c=i.Importance||(i.Importance={}))[c.None=0]="None",c[c.Min=1]="Min",c[c.Low=2]="Low",c[c.Default=3]="Default",c[c.High=4]="High",i.Visibility=void 0,(s=i.Visibility||(i.Visibility={}))[s.Secret=-1]="Secret",s[s.Private=0]="Private",s[s.Public=1]="Public",i.Schedule=class{static at(i,t=!1,n=!1){return{at:{date:i,repeating:t,allowWhileIdle:n},interval:void 0,every:void 0}}static interval(i,t=!1){return{at:void 0,interval:{interval:i,allowWhileIdle:t},every:void 0}}static every(i,t,n=!1){return{at:void 0,interval:void 0,every:{interval:i,count:t,allowWhileIdle:n}}}},i.active=async function(){return await d("plugin:notification|get_active")},i.cancel=async function(i){await d("plugin:notification|cancel",{notifications:i})},i.cancelAll=async function(){await d("plugin:notification|cancel")},i.channels=async function(){return await d("plugin:notification|listChannels")},i.createChannel=async function(i){await d("plugin:notification|create_channel",{...i})},i.isPermissionGranted=async function(){return"default"!==window.Notification.permission?await Promise.resolve("granted"===window.Notification.permission):await d("plugin:notification|is_permission_granted")},i.onAction=async function(i){return await f("notification","actionPerformed",i)},i.onNotificationReceived=async function(i){return await f("notification","notification",i)},i.pending=async function(){return await d("plugin:notification|get_pending")},i.registerActionTypes=async function(i){await d("plugin:notification|register_action_types",{types:i})},i.removeActive=async function(i){await d("plugin:notification|remove_active",{notifications:i})},i.removeAllActive=async function(){await d("plugin:notification|remove_active")},i.removeChannel=async function(i){await d("plugin:notification|delete_channel",{id:i})},i.requestPermission=async function(){return await window.Notification.requestPermission()},i.sendNotification=function(i){"string"==typeof i?new window.Notification(i):new window.Notification(i.title,i)},i}({});Object.defineProperty(window.__TAURI__,"notification",{value:__TAURI_PLUGIN_NOTIFICATION__})}
+if("__TAURI__"in window){var __TAURI_PLUGIN_NOTIFICATION__=function(i){"use strict";function t(i,t,n,e){if("a"===n&&!e)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?i!==t||!e:!t.has(i))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?e:"a"===n?e.call(i):e?e.value:t.get(i)}function n(i,t,n,e,o){if("function"==typeof t?i!==t||!o:!t.has(i))throw new TypeError("Cannot write private member to an object whose class did not declare it");return t.set(i,n),n}var e,o,a;"function"==typeof SuppressedError&&SuppressedError;const r="__TAURI_TO_IPC_KEY__";class c{constructor(){this.__TAURI_CHANNEL_MARKER__=!0,e.set(this,(()=>{})),o.set(this,0),a.set(this,{}),this.id=function(i,t=!1){return window.__TAURI_INTERNALS__.transformCallback(i,t)}((({message:i,id:r})=>{if(r===t(this,o,"f")){n(this,o,r+1),t(this,e,"f").call(this,i);const c=Object.keys(t(this,a,"f"));if(c.length>0){let i=r+1;for(const n of c.sort()){if(parseInt(n)!==i)break;{const o=t(this,a,"f")[n];delete t(this,a,"f")[n],t(this,e,"f").call(this,o),i+=1}}n(this,o,i)}}else t(this,a,"f")[r.toString()]=i}))}set onmessage(i){n(this,e,i)}get onmessage(){return t(this,e,"f")}[(e=new WeakMap,o=new WeakMap,a=new WeakMap,r)](){return`__CHANNEL__:${this.id}`}toJSON(){return this[r]()}}class s{constructor(i,t,n){this.plugin=i,this.event=t,this.channelId=n}async unregister(){return u(`plugin:${this.plugin}|remove_listener`,{event:this.event,channelId:this.channelId})}}async function l(i,t,n){const e=new c;return e.onmessage=n,u(`plugin:${i}|registerListener`,{event:t,handler:e}).then((()=>new s(i,t,e.id)))}async function u(i,t={},n){return window.__TAURI_INTERNALS__.invoke(i,t,n)}var f,d,w;i.ScheduleEvery=void 0,(f=i.ScheduleEvery||(i.ScheduleEvery={})).Year="year",f.Month="month",f.TwoWeeks="twoWeeks",f.Week="week",f.Day="day",f.Hour="hour",f.Minute="minute",f.Second="second";return i.Importance=void 0,(d=i.Importance||(i.Importance={}))[d.None=0]="None",d[d.Min=1]="Min",d[d.Low=2]="Low",d[d.Default=3]="Default",d[d.High=4]="High",i.Visibility=void 0,(w=i.Visibility||(i.Visibility={}))[w.Secret=-1]="Secret",w[w.Private=0]="Private",w[w.Public=1]="Public",i.Schedule=class{static at(i,t=!1,n=!1){return{at:{date:i,repeating:t,allowWhileIdle:n},interval:void 0,every:void 0}}static interval(i,t=!1){return{at:void 0,interval:{interval:i,allowWhileIdle:t},every:void 0}}static every(i,t,n=!1){return{at:void 0,interval:void 0,every:{interval:i,count:t,allowWhileIdle:n}}}},i.active=async function(){return await u("plugin:notification|get_active")},i.cancel=async function(i){await u("plugin:notification|cancel",{notifications:i})},i.cancelAll=async function(){await u("plugin:notification|cancel")},i.channels=async function(){return await u("plugin:notification|listChannels")},i.createChannel=async function(i){await u("plugin:notification|create_channel",{...i})},i.isPermissionGranted=async function(){return"default"!==window.Notification.permission?await Promise.resolve("granted"===window.Notification.permission):await u("plugin:notification|is_permission_granted")},i.onAction=async function(i){return await l("notification","actionPerformed",i)},i.onNotificationReceived=async function(i){return await l("notification","notification",i)},i.pending=async function(){return await u("plugin:notification|get_pending")},i.registerActionTypes=async function(i){await u("plugin:notification|register_action_types",{types:i})},i.removeActive=async function(i){await u("plugin:notification|remove_active",{notifications:i})},i.removeAllActive=async function(){await u("plugin:notification|remove_active")},i.removeChannel=async function(i){await u("plugin:notification|delete_channel",{id:i})},i.requestPermission=async function(){return await window.Notification.requestPermission()},i.sendNotification=function(i){"string"==typeof i?new window.Notification(i):new window.Notification(i.title,i)},i}({});Object.defineProperty(window.__TAURI__,"notification",{value:__TAURI_PLUGIN_NOTIFICATION__})}
diff --git a/plugins/shell/api-iife.js b/plugins/shell/api-iife.js
index 25ba6d3e..ca3cc423 100644
--- a/plugins/shell/api-iife.js
+++ b/plugins/shell/api-iife.js
@@ -1 +1 @@
-if("__TAURI__"in window){var __TAURI_PLUGIN_SHELL__=function(e){"use strict";function t(e,t,s,n){if("a"===s&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===s?n:"a"===s?n.call(e):n?n.value:t.get(e)}function s(e,t,s,n,i){if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return t.set(e,s),s}var n,i,r;"function"==typeof SuppressedError&&SuppressedError;class o{constructor(){this.__TAURI_CHANNEL_MARKER__=!0,n.set(this,(()=>{})),i.set(this,0),r.set(this,{}),this.id=function(e,t=!1){return window.__TAURI_INTERNALS__.transformCallback(e,t)}((({message:e,id:o})=>{if(o===t(this,i,"f")){s(this,i,o+1),t(this,n,"f").call(this,e);const a=Object.keys(t(this,r,"f"));if(a.length>0){let e=o+1;for(const s of a.sort()){if(parseInt(s)!==e)break;{const i=t(this,r,"f")[s];delete t(this,r,"f")[s],t(this,n,"f").call(this,i),e+=1}}s(this,i,e)}}else t(this,r,"f")[o.toString()]=e}))}set onmessage(e){s(this,n,e)}get onmessage(){return t(this,n,"f")}toJSON(){return`__CHANNEL__:${this.id}`}}async function a(e,t={},s){return window.__TAURI_INTERNALS__.invoke(e,t,s)}n=new WeakMap,i=new WeakMap,r=new WeakMap;class h{constructor(){this.eventListeners=Object.create(null)}addListener(e,t){return this.on(e,t)}removeListener(e,t){return this.off(e,t)}on(e,t){return e in this.eventListeners?this.eventListeners[e].push(t):this.eventListeners[e]=[t],this}once(e,t){const s=n=>{this.removeListener(e,s),t(n)};return this.addListener(e,s)}off(e,t){return e in this.eventListeners&&(this.eventListeners[e]=this.eventListeners[e].filter((e=>e!==t))),this}removeAllListeners(e){return e?delete this.eventListeners[e]:this.eventListeners=Object.create(null),this}emit(e,t){if(e in this.eventListeners){const s=this.eventListeners[e];for(const e of s)e(t);return!0}return!1}listenerCount(e){return e in this.eventListeners?this.eventListeners[e].length:0}prependListener(e,t){return e in this.eventListeners?this.eventListeners[e].unshift(t):this.eventListeners[e]=[t],this}prependOnceListener(e,t){const s=n=>{this.removeListener(e,s),t(n)};return this.prependListener(e,s)}}class c{constructor(e){this.pid=e}async write(e){await a("plugin:shell|stdin_write",{pid:this.pid,buffer:e})}async kill(){await a("plugin:shell|kill",{cmd:"killChild",pid:this.pid})}}class l extends h{constructor(e,t=[],s){super(),this.stdout=new h,this.stderr=new h,this.program=e,this.args="string"==typeof t?[t]:t,this.options=s??{}}static create(e,t=[],s){return new l(e,t,s)}static sidecar(e,t=[],s){const n=new l(e,t,s);return n.options.sidecar=!0,n}async spawn(){const e=this.program,t=this.args,s=this.options;"object"==typeof t&&Object.freeze(t);const n=new o;return n.onmessage=e=>{switch(e.event){case"Error":this.emit("error",e.payload);break;case"Terminated":this.emit("close",e.payload);break;case"Stdout":this.stdout.emit("data",e.payload);break;case"Stderr":this.stderr.emit("data",e.payload)}},await a("plugin:shell|spawn",{program:e,args:t,options:s,onEvent:n}).then((e=>new c(e)))}async execute(){const e=this.program,t=this.args,s=this.options;return"object"==typeof t&&Object.freeze(t),await a("plugin:shell|execute",{program:e,args:t,options:s})}}return e.Child=c,e.Command=l,e.EventEmitter=h,e.open=async function(e,t){await a("plugin:shell|open",{path:e,with:t})},e}({});Object.defineProperty(window.__TAURI__,"shell",{value:__TAURI_PLUGIN_SHELL__})}
+if("__TAURI__"in window){var __TAURI_PLUGIN_SHELL__=function(e){"use strict";function t(e,t,s,n){if("a"===s&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===s?n:"a"===s?n.call(e):n?n.value:t.get(e)}function s(e,t,s,n,i){if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return t.set(e,s),s}var n,i,r;"function"==typeof SuppressedError&&SuppressedError;const o="__TAURI_TO_IPC_KEY__";class a{constructor(){this.__TAURI_CHANNEL_MARKER__=!0,n.set(this,(()=>{})),i.set(this,0),r.set(this,{}),this.id=function(e,t=!1){return window.__TAURI_INTERNALS__.transformCallback(e,t)}((({message:e,id:o})=>{if(o===t(this,i,"f")){s(this,i,o+1),t(this,n,"f").call(this,e);const a=Object.keys(t(this,r,"f"));if(a.length>0){let e=o+1;for(const s of a.sort()){if(parseInt(s)!==e)break;{const i=t(this,r,"f")[s];delete t(this,r,"f")[s],t(this,n,"f").call(this,i),e+=1}}s(this,i,e)}}else t(this,r,"f")[o.toString()]=e}))}set onmessage(e){s(this,n,e)}get onmessage(){return t(this,n,"f")}[(n=new WeakMap,i=new WeakMap,r=new WeakMap,o)](){return`__CHANNEL__:${this.id}`}toJSON(){return this[o]()}}async function h(e,t={},s){return window.__TAURI_INTERNALS__.invoke(e,t,s)}class c{constructor(){this.eventListeners=Object.create(null)}addListener(e,t){return this.on(e,t)}removeListener(e,t){return this.off(e,t)}on(e,t){return e in this.eventListeners?this.eventListeners[e].push(t):this.eventListeners[e]=[t],this}once(e,t){const s=n=>{this.removeListener(e,s),t(n)};return this.addListener(e,s)}off(e,t){return e in this.eventListeners&&(this.eventListeners[e]=this.eventListeners[e].filter((e=>e!==t))),this}removeAllListeners(e){return e?delete this.eventListeners[e]:this.eventListeners=Object.create(null),this}emit(e,t){if(e in this.eventListeners){const s=this.eventListeners[e];for(const e of s)e(t);return!0}return!1}listenerCount(e){return e in this.eventListeners?this.eventListeners[e].length:0}prependListener(e,t){return e in this.eventListeners?this.eventListeners[e].unshift(t):this.eventListeners[e]=[t],this}prependOnceListener(e,t){const s=n=>{this.removeListener(e,s),t(n)};return this.prependListener(e,s)}}class l{constructor(e){this.pid=e}async write(e){await h("plugin:shell|stdin_write",{pid:this.pid,buffer:e})}async kill(){await h("plugin:shell|kill",{cmd:"killChild",pid:this.pid})}}class u extends c{constructor(e,t=[],s){super(),this.stdout=new c,this.stderr=new c,this.program=e,this.args="string"==typeof t?[t]:t,this.options=s??{}}static create(e,t=[],s){return new u(e,t,s)}static sidecar(e,t=[],s){const n=new u(e,t,s);return n.options.sidecar=!0,n}async spawn(){const e=this.program,t=this.args,s=this.options;"object"==typeof t&&Object.freeze(t);const n=new a;return n.onmessage=e=>{switch(e.event){case"Error":this.emit("error",e.payload);break;case"Terminated":this.emit("close",e.payload);break;case"Stdout":this.stdout.emit("data",e.payload);break;case"Stderr":this.stderr.emit("data",e.payload)}},await h("plugin:shell|spawn",{program:e,args:t,options:s,onEvent:n}).then((e=>new l(e)))}async execute(){const e=this.program,t=this.args,s=this.options;return"object"==typeof t&&Object.freeze(t),await h("plugin:shell|execute",{program:e,args:t,options:s})}}return e.Child=l,e.Command=u,e.EventEmitter=c,e.open=async function(e,t){await h("plugin:shell|open",{path:e,with:t})},e}({});Object.defineProperty(window.__TAURI__,"shell",{value:__TAURI_PLUGIN_SHELL__})}
diff --git a/plugins/single-instance/examples/vanilla/package.json b/plugins/single-instance/examples/vanilla/package.json
index 1ecf30c5..790657d0 100644
--- a/plugins/single-instance/examples/vanilla/package.json
+++ b/plugins/single-instance/examples/vanilla/package.json
@@ -9,6 +9,6 @@
"author": "",
"license": "MIT",
"devDependencies": {
- "@tauri-apps/cli": "2.0.4"
+ "@tauri-apps/cli": "2.1.0"
}
}
diff --git a/plugins/sql/CHANGELOG.md b/plugins/sql/CHANGELOG.md
index 8fe92f86..833921b9 100644
--- a/plugins/sql/CHANGELOG.md
+++ b/plugins/sql/CHANGELOG.md
@@ -2,6 +2,10 @@
## \[2.0.1]
+- [`0ca4cc91`](https://github.com/tauri-apps/plugins-workspace/commit/0ca4cc914c5ea995c98f9e60a2ab49827c219350) ([#1963](https://github.com/tauri-apps/plugins-workspace/pull/1963) by [@yoggys](https://github.com/tauri-apps/plugins-workspace/../../yoggys)) Fixed incorrect documentation of the select method in the Database class.
+
+## \[2.0.1]
+
- [`a1a82208`](https://github.com/tauri-apps/plugins-workspace/commit/a1a82208ed4ab87f83310be0dc95428aec9ab241) ([#1873](https://github.com/tauri-apps/plugins-workspace/pull/1873) by [@lucasfernog](https://github.com/tauri-apps/plugins-workspace/../../lucasfernog)) Downgrade MSRV to 1.77.2 to support Windows 7.
## \[2.0.0]
diff --git a/plugins/sql/Cargo.toml b/plugins/sql/Cargo.toml
index 8e6ed457..62fa3377 100644
--- a/plugins/sql/Cargo.toml
+++ b/plugins/sql/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "tauri-plugin-sql"
-version = "2.0.1"
+version = "2.0.2"
description = "Interface with SQL databases."
authors = { workspace = true }
license = { workspace = true }
diff --git a/plugins/sql/package.json b/plugins/sql/package.json
index db2c6d2a..564b061e 100644
--- a/plugins/sql/package.json
+++ b/plugins/sql/package.json
@@ -1,6 +1,6 @@
{
"name": "@tauri-apps/plugin-sql",
- "version": "2.0.0",
+ "version": "2.0.1",
"description": "Interface with SQL databases",
"license": "MIT OR Apache-2.0",
"authors": [
diff --git a/plugins/store/examples/AppSettingsManager/package.json b/plugins/store/examples/AppSettingsManager/package.json
index 50692647..c1fe41cc 100644
--- a/plugins/store/examples/AppSettingsManager/package.json
+++ b/plugins/store/examples/AppSettingsManager/package.json
@@ -8,7 +8,7 @@
"tauri": "tauri"
},
"devDependencies": {
- "@tauri-apps/cli": "2.0.4",
+ "@tauri-apps/cli": "2.1.0",
"vite": "^5.0.12",
"typescript": "^5.4.7"
}
diff --git a/plugins/updater/api-iife.js b/plugins/updater/api-iife.js
index 2b10e2e7..87294903 100644
--- a/plugins/updater/api-iife.js
+++ b/plugins/updater/api-iife.js
@@ -1 +1 @@
-if("__TAURI__"in window){var __TAURI_PLUGIN_UPDATER__=function(e){"use strict";function t(e,t,s,n){if("a"===s&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===s?n:"a"===s?n.call(e):n?n.value:t.get(e)}function s(e,t,s,n,i){if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return t.set(e,s),s}var n,i,r,a;"function"==typeof SuppressedError&&SuppressedError;class o{constructor(){this.__TAURI_CHANNEL_MARKER__=!0,n.set(this,(()=>{})),i.set(this,0),r.set(this,{}),this.id=function(e,t=!1){return window.__TAURI_INTERNALS__.transformCallback(e,t)}((({message:e,id:a})=>{if(a===t(this,i,"f")){s(this,i,a+1),t(this,n,"f").call(this,e);const o=Object.keys(t(this,r,"f"));if(o.length>0){let e=a+1;for(const s of o.sort()){if(parseInt(s)!==e)break;{const i=t(this,r,"f")[s];delete t(this,r,"f")[s],t(this,n,"f").call(this,i),e+=1}}s(this,i,e)}}else t(this,r,"f")[a.toString()]=e}))}set onmessage(e){s(this,n,e)}get onmessage(){return t(this,n,"f")}toJSON(){return`__CHANNEL__:${this.id}`}}async function d(e,t={},s){return window.__TAURI_INTERNALS__.invoke(e,t,s)}n=new WeakMap,i=new WeakMap,r=new WeakMap;class l{get rid(){return t(this,a,"f")}constructor(e){a.set(this,void 0),s(this,a,e)}async close(){return d("plugin:resources|close",{rid:this.rid})}}a=new WeakMap;class c extends l{constructor(e){super(e.rid),this.available=e.available,this.currentVersion=e.currentVersion,this.version=e.version,this.date=e.date,this.body=e.body}async download(e,t){const s=new o;e&&(s.onmessage=e);const n=await d("plugin:updater|download",{onEvent:s,rid:this.rid,...t});this.downloadedBytes=new l(n)}async install(){if(!this.downloadedBytes)throw new Error("Update.install called before Update.download");await d("plugin:updater|install",{updateRid:this.rid,bytesRid:this.downloadedBytes.rid}),this.downloadedBytes=void 0}async downloadAndInstall(e,t){const s=new o;e&&(s.onmessage=e),await d("plugin:updater|download_and_install",{onEvent:s,rid:this.rid,...t})}async close(){await(this.downloadedBytes?.close()),await super.close()}}return e.Update=c,e.check=async function(e){return e?.headers&&(e.headers=Array.from(new Headers(e.headers).entries())),await d("plugin:updater|check",{...e}).then((e=>e.available?new c(e):null))},e}({});Object.defineProperty(window.__TAURI__,"updater",{value:__TAURI_PLUGIN_UPDATER__})}
+if("__TAURI__"in window){var __TAURI_PLUGIN_UPDATER__=function(e){"use strict";function t(e,t,s,n){if("a"===s&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===s?n:"a"===s?n.call(e):n?n.value:t.get(e)}function s(e,t,s,n,i){if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return t.set(e,s),s}var n,i,r,a;"function"==typeof SuppressedError&&SuppressedError;const o="__TAURI_TO_IPC_KEY__";class d{constructor(){this.__TAURI_CHANNEL_MARKER__=!0,n.set(this,(()=>{})),i.set(this,0),r.set(this,{}),this.id=function(e,t=!1){return window.__TAURI_INTERNALS__.transformCallback(e,t)}((({message:e,id:a})=>{if(a===t(this,i,"f")){s(this,i,a+1),t(this,n,"f").call(this,e);const o=Object.keys(t(this,r,"f"));if(o.length>0){let e=a+1;for(const s of o.sort()){if(parseInt(s)!==e)break;{const i=t(this,r,"f")[s];delete t(this,r,"f")[s],t(this,n,"f").call(this,i),e+=1}}s(this,i,e)}}else t(this,r,"f")[a.toString()]=e}))}set onmessage(e){s(this,n,e)}get onmessage(){return t(this,n,"f")}[(n=new WeakMap,i=new WeakMap,r=new WeakMap,o)](){return`__CHANNEL__:${this.id}`}toJSON(){return this[o]()}}async function l(e,t={},s){return window.__TAURI_INTERNALS__.invoke(e,t,s)}class c{get rid(){return t(this,a,"f")}constructor(e){a.set(this,void 0),s(this,a,e)}async close(){return l("plugin:resources|close",{rid:this.rid})}}a=new WeakMap;class h extends c{constructor(e){super(e.rid),this.available=e.available,this.currentVersion=e.currentVersion,this.version=e.version,this.date=e.date,this.body=e.body}async download(e,t){const s=new d;e&&(s.onmessage=e);const n=await l("plugin:updater|download",{onEvent:s,rid:this.rid,...t});this.downloadedBytes=new c(n)}async install(){if(!this.downloadedBytes)throw new Error("Update.install called before Update.download");await l("plugin:updater|install",{updateRid:this.rid,bytesRid:this.downloadedBytes.rid}),this.downloadedBytes=void 0}async downloadAndInstall(e,t){const s=new d;e&&(s.onmessage=e),await l("plugin:updater|download_and_install",{onEvent:s,rid:this.rid,...t})}async close(){await(this.downloadedBytes?.close()),await super.close()}}return e.Update=h,e.check=async function(e){return e?.headers&&(e.headers=Array.from(new Headers(e.headers).entries())),await l("plugin:updater|check",{...e}).then((e=>e.available?new h(e):null))},e}({});Object.defineProperty(window.__TAURI__,"updater",{value:__TAURI_PLUGIN_UPDATER__})}
diff --git a/plugins/upload/CHANGELOG.md b/plugins/upload/CHANGELOG.md
index 3c52be17..c65bd4bc 100644
--- a/plugins/upload/CHANGELOG.md
+++ b/plugins/upload/CHANGELOG.md
@@ -1,5 +1,9 @@
# Changelog
+## \[2.1.0]
+
+- [`87cc5852`](https://github.com/tauri-apps/plugins-workspace/commit/87cc58527d769960427a2f46bb10532f5dcf7ace) ([#1797](https://github.com/tauri-apps/plugins-workspace/pull/1797) by [@VirtualPirate](https://github.com/tauri-apps/plugins-workspace/../../VirtualPirate)) Added feature for calculating `transfer_speed` during file uploads and downloads
+
## \[2.0.1]
- [`a1a82208`](https://github.com/tauri-apps/plugins-workspace/commit/a1a82208ed4ab87f83310be0dc95428aec9ab241) ([#1873](https://github.com/tauri-apps/plugins-workspace/pull/1873) by [@lucasfernog](https://github.com/tauri-apps/plugins-workspace/../../lucasfernog)) Downgrade MSRV to 1.77.2 to support Windows 7.
diff --git a/plugins/upload/Cargo.toml b/plugins/upload/Cargo.toml
index 692c13e1..b4d34867 100644
--- a/plugins/upload/Cargo.toml
+++ b/plugins/upload/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "tauri-plugin-upload"
-version = "2.0.1"
+version = "2.1.0"
description = "Upload files from disk to a remote server over HTTP."
authors = { workspace = true }
license = { workspace = true }
diff --git a/plugins/upload/api-iife.js b/plugins/upload/api-iife.js
index 188b262a..3dfe99be 100644
--- a/plugins/upload/api-iife.js
+++ b/plugins/upload/api-iife.js
@@ -1 +1 @@
-if("__TAURI__"in window){var __TAURI_PLUGIN_UPLOAD__=function(e){"use strict";function t(e,t,n,o){if("a"===n&&!o)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!o:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?o:"a"===n?o.call(e):o?o.value:t.get(e)}function n(e,t,n,o,s){if("function"==typeof t?e!==t||!s:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return t.set(e,n),n}var o,s,r;"function"==typeof SuppressedError&&SuppressedError;class i{constructor(){this.__TAURI_CHANNEL_MARKER__=!0,o.set(this,(()=>{})),s.set(this,0),r.set(this,{}),this.id=function(e,t=!1){return window.__TAURI_INTERNALS__.transformCallback(e,t)}((({message:e,id:i})=>{if(i===t(this,s,"f")){n(this,s,i+1),t(this,o,"f").call(this,e);const a=Object.keys(t(this,r,"f"));if(a.length>0){let e=i+1;for(const n of a.sort()){if(parseInt(n)!==e)break;{const s=t(this,r,"f")[n];delete t(this,r,"f")[n],t(this,o,"f").call(this,s),e+=1}}n(this,s,e)}}else t(this,r,"f")[i.toString()]=e}))}set onmessage(e){n(this,o,e)}get onmessage(){return t(this,o,"f")}toJSON(){return`__CHANNEL__:${this.id}`}}async function a(e,t={},n){return window.__TAURI_INTERNALS__.invoke(e,t,n)}return o=new WeakMap,s=new WeakMap,r=new WeakMap,e.download=async function(e,t,n,o){const s=new Uint32Array(1);window.crypto.getRandomValues(s);const r=s[0],c=new i;n&&(c.onmessage=n),await a("plugin:upload|download",{id:r,url:e,filePath:t,headers:o??{},onProgress:c})},e.upload=async function(e,t,n,o){const s=new Uint32Array(1);window.crypto.getRandomValues(s);const r=s[0],c=new i;return n&&(c.onmessage=n),await a("plugin:upload|upload",{id:r,url:e,filePath:t,headers:o??{},onProgress:c})},e}({});Object.defineProperty(window.__TAURI__,"upload",{value:__TAURI_PLUGIN_UPLOAD__})}
+if("__TAURI__"in window){var __TAURI_PLUGIN_UPLOAD__=function(t){"use strict";function e(t,e,n,s){if("a"===n&&!s)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?s:"a"===n?s.call(t):s?s.value:e.get(t)}function n(t,e,n,s,o){if("function"==typeof e?t!==e||!o:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return e.set(t,n),n}var s,o,r;"function"==typeof SuppressedError&&SuppressedError;const i="__TAURI_TO_IPC_KEY__";class a{constructor(){this.__TAURI_CHANNEL_MARKER__=!0,s.set(this,(()=>{})),o.set(this,0),r.set(this,{}),this.id=function(t,e=!1){return window.__TAURI_INTERNALS__.transformCallback(t,e)}((({message:t,id:i})=>{if(i===e(this,o,"f")){n(this,o,i+1),e(this,s,"f").call(this,t);const a=Object.keys(e(this,r,"f"));if(a.length>0){let t=i+1;for(const n of a.sort()){if(parseInt(n)!==t)break;{const o=e(this,r,"f")[n];delete e(this,r,"f")[n],e(this,s,"f").call(this,o),t+=1}}n(this,o,t)}}else e(this,r,"f")[i.toString()]=t}))}set onmessage(t){n(this,s,t)}get onmessage(){return e(this,s,"f")}[(s=new WeakMap,o=new WeakMap,r=new WeakMap,i)](){return`__CHANNEL__:${this.id}`}toJSON(){return this[i]()}}async function _(t,e={},n){return window.__TAURI_INTERNALS__.invoke(t,e,n)}return t.download=async function(t,e,n,s){const o=new Uint32Array(1);window.crypto.getRandomValues(o);const r=o[0],i=new a;n&&(i.onmessage=n),await _("plugin:upload|download",{id:r,url:t,filePath:e,headers:s??{},onProgress:i})},t.upload=async function(t,e,n,s){const o=new Uint32Array(1);window.crypto.getRandomValues(o);const r=o[0],i=new a;return n&&(i.onmessage=n),await _("plugin:upload|upload",{id:r,url:t,filePath:e,headers:s??{},onProgress:i})},t}({});Object.defineProperty(window.__TAURI__,"upload",{value:__TAURI_PLUGIN_UPLOAD__})}
diff --git a/plugins/upload/guest-js/index.ts b/plugins/upload/guest-js/index.ts
index 9586a241..d036f00a 100644
--- a/plugins/upload/guest-js/index.ts
+++ b/plugins/upload/guest-js/index.ts
@@ -6,7 +6,9 @@ import { invoke, Channel } from '@tauri-apps/api/core'
interface ProgressPayload {
progress: number
+ progressTotal: number
total: number
+ transferSpeed: number
}
type ProgressHandler = (progress: ProgressPayload) => void
diff --git a/plugins/upload/package.json b/plugins/upload/package.json
index 03b1c9ea..7464deda 100644
--- a/plugins/upload/package.json
+++ b/plugins/upload/package.json
@@ -1,6 +1,6 @@
{
"name": "@tauri-apps/plugin-upload",
- "version": "2.0.0",
+ "version": "2.1.0",
"description": "Upload files from disk to a remote server over HTTP.",
"license": "MIT OR Apache-2.0",
"authors": [
diff --git a/plugins/upload/src/lib.rs b/plugins/upload/src/lib.rs
index 9351b246..d8f5f43c 100644
--- a/plugins/upload/src/lib.rs
+++ b/plugins/upload/src/lib.rs
@@ -13,6 +13,9 @@
html_favicon_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png"
)]
+mod transfer_stats;
+use transfer_stats::TransferStats;
+
use futures_util::TryStreamExt;
use serde::{ser::Serializer, Serialize};
use tauri::{
@@ -55,9 +58,12 @@ impl Serialize for Error {
}
#[derive(Clone, Serialize)]
+#[serde(rename_all = "camelCase")]
struct ProgressPayload {
progress: u64,
+ progress_total: u64,
total: u64,
+ transfer_speed: u64,
}
#[command]
@@ -88,11 +94,15 @@ async fn download(
let mut file = BufWriter::new(File::create(file_path).await?);
let mut stream = response.bytes_stream();
+ let mut stats = TransferStats::default();
while let Some(chunk) = stream.try_next().await? {
file.write_all(&chunk).await?;
+ stats.record_chunk_transfer(chunk.len());
let _ = on_progress.send(ProgressPayload {
progress: chunk.len() as u64,
+ progress_total: stats.total_transferred,
total,
+ transfer_speed: stats.transfer_speed,
});
}
file.flush().await?;
@@ -138,10 +148,17 @@ async fn upload(
fn file_to_body(channel: Channel, file: File) -> reqwest::Body {
let stream = FramedRead::new(file, BytesCodec::new()).map_ok(|r| r.freeze());
+ let mut stats = TransferStats::default();
reqwest::Body::wrap_stream(ReadProgressStream::new(
stream,
Box::new(move |progress, total| {
- let _ = channel.send(ProgressPayload { progress, total });
+ stats.record_chunk_transfer(progress as usize);
+ let _ = channel.send(ProgressPayload {
+ progress,
+ progress_total: stats.total_transferred,
+ total,
+ transfer_speed: stats.transfer_speed,
+ });
}),
))
}
diff --git a/plugins/upload/src/transfer_stats.rs b/plugins/upload/src/transfer_stats.rs
new file mode 100644
index 00000000..2f3a3946
--- /dev/null
+++ b/plugins/upload/src/transfer_stats.rs
@@ -0,0 +1,55 @@
+// Copyright 2019-2023 Tauri Programme within The Commons Conservancy
+// SPDX-License-Identifier: Apache-2.0
+// SPDX-License-Identifier: MIT
+
+use std::time::Instant;
+
+// The TransferStats struct tracks both transfer speed and cumulative transfer progress.
+pub struct TransferStats {
+ accumulated_chunk_len: usize, // Total length of chunks transferred in the current period
+ accumulated_time: u128, // Total time taken for the transfers in the current period
+ pub transfer_speed: u64, // Calculated transfer speed in bytes per second
+ pub total_transferred: u64, // Cumulative total of all transferred data
+ start_time: Instant, // Time when the current period started
+ granularity: u32, // Time period (in milliseconds) over which the transfer speed is calculated
+}
+
+impl TransferStats {
+ // Initializes a new TransferStats instance with the specified granularity.
+ pub fn start(granularity: u32) -> Self {
+ Self {
+ accumulated_chunk_len: 0,
+ accumulated_time: 0,
+ transfer_speed: 0,
+ total_transferred: 0,
+ start_time: Instant::now(),
+ granularity,
+ }
+ }
+ // Records the transfer of a data chunk and updates both transfer speed and total progress.
+ pub fn record_chunk_transfer(&mut self, chunk_len: usize) {
+ let now = Instant::now();
+ let it_took = now.duration_since(self.start_time).as_millis();
+ self.accumulated_chunk_len += chunk_len;
+ self.total_transferred += chunk_len as u64;
+ self.accumulated_time += it_took;
+
+ // Calculate transfer speed if accumulated time exceeds granularity.
+ if self.accumulated_time >= self.granularity as u128 {
+ self.transfer_speed =
+ (self.accumulated_chunk_len as u128 / self.accumulated_time * 1024) as u64;
+ self.accumulated_chunk_len = 0;
+ self.accumulated_time = 0;
+ }
+
+ // Reset the start time for the next period.
+ self.start_time = now;
+ }
+}
+
+// Provides a default implementation for TransferStats with a granularity of 500 milliseconds.
+impl Default for TransferStats {
+ fn default() -> Self {
+ Self::start(500) // Default granularity is 500 ms
+ }
+}
diff --git a/plugins/websocket/README.md b/plugins/websocket/README.md
index a9c3a267..3383bc54 100644
--- a/plugins/websocket/README.md
+++ b/plugins/websocket/README.md
@@ -1,6 +1,6 @@

-Expose a WebSocket server to your Tauri frontend.
+Open a WebSocket connection using a Rust client in JS.
| Platform | Supported |
| -------- | --------- |
diff --git a/plugins/websocket/api-iife.js b/plugins/websocket/api-iife.js
index ec81c68f..db059741 100644
--- a/plugins/websocket/api-iife.js
+++ b/plugins/websocket/api-iife.js
@@ -1 +1 @@
-if("__TAURI__"in window){var __TAURI_PLUGIN_WEBSOCKET__=function(){"use strict";function e(e,t,s,n){if("a"===s&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===s?n:"a"===s?n.call(e):n?n.value:t.get(e)}function t(e,t,s,n,r){if("function"==typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return t.set(e,s),s}var s,n,r;"function"==typeof SuppressedError&&SuppressedError;class i{constructor(){this.__TAURI_CHANNEL_MARKER__=!0,s.set(this,(()=>{})),n.set(this,0),r.set(this,{}),this.id=function(e,t=!1){return window.__TAURI_INTERNALS__.transformCallback(e,t)}((({message:i,id:a})=>{if(a===e(this,n,"f")){t(this,n,a+1),e(this,s,"f").call(this,i);const o=Object.keys(e(this,r,"f"));if(o.length>0){let i=a+1;for(const t of o.sort()){if(parseInt(t)!==i)break;{const n=e(this,r,"f")[t];delete e(this,r,"f")[t],e(this,s,"f").call(this,n),i+=1}}t(this,n,i)}}else e(this,r,"f")[a.toString()]=i}))}set onmessage(e){t(this,s,e)}get onmessage(){return e(this,s,"f")}toJSON(){return`__CHANNEL__:${this.id}`}}async function a(e,t={},s){return window.__TAURI_INTERNALS__.invoke(e,t,s)}s=new WeakMap,n=new WeakMap,r=new WeakMap;class o{constructor(e,t){this.id=e,this.listeners=t}static async connect(e,t){const s=[],n=new i;return n.onmessage=e=>{s.forEach((t=>{t(e)}))},t?.headers&&(t.headers=Array.from(new Headers(t.headers).entries())),await a("plugin:websocket|connect",{url:e,onMessage:n,config:t}).then((e=>new o(e,s)))}addListener(e){this.listeners.push(e)}async send(e){let t;if("string"==typeof e)t={type:"Text",data:e};else if("object"==typeof e&&"type"in e)t=e;else{if(!Array.isArray(e))throw new Error("invalid `message` type, expected a `{ type: string, data: any }` object, a string or a numeric array");t={type:"Binary",data:e}}await a("plugin:websocket|send",{id:this.id,message:t})}async disconnect(){await this.send({type:"Close",data:{code:1e3,reason:"Disconnected by client"}})}}return o}();Object.defineProperty(window.__TAURI__,"websocket",{value:__TAURI_PLUGIN_WEBSOCKET__})}
+if("__TAURI__"in window){var __TAURI_PLUGIN_WEBSOCKET__=function(){"use strict";function e(e,t,s,n){if("a"===s&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===s?n:"a"===s?n.call(e):n?n.value:t.get(e)}function t(e,t,s,n,r){if("function"==typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return t.set(e,s),s}var s,n,r;"function"==typeof SuppressedError&&SuppressedError;const i="__TAURI_TO_IPC_KEY__";class a{constructor(){this.__TAURI_CHANNEL_MARKER__=!0,s.set(this,(()=>{})),n.set(this,0),r.set(this,{}),this.id=function(e,t=!1){return window.__TAURI_INTERNALS__.transformCallback(e,t)}((({message:i,id:a})=>{if(a===e(this,n,"f")){t(this,n,a+1),e(this,s,"f").call(this,i);const o=Object.keys(e(this,r,"f"));if(o.length>0){let i=a+1;for(const t of o.sort()){if(parseInt(t)!==i)break;{const n=e(this,r,"f")[t];delete e(this,r,"f")[t],e(this,s,"f").call(this,n),i+=1}}t(this,n,i)}}else e(this,r,"f")[a.toString()]=i}))}set onmessage(e){t(this,s,e)}get onmessage(){return e(this,s,"f")}[(s=new WeakMap,n=new WeakMap,r=new WeakMap,i)](){return`__CHANNEL__:${this.id}`}toJSON(){return this[i]()}}async function o(e,t={},s){return window.__TAURI_INTERNALS__.invoke(e,t,s)}class c{constructor(e,t){this.id=e,this.listeners=t}static async connect(e,t){const s=[],n=new a;return n.onmessage=e=>{s.forEach((t=>{t(e)}))},t?.headers&&(t.headers=Array.from(new Headers(t.headers).entries())),await o("plugin:websocket|connect",{url:e,onMessage:n,config:t}).then((e=>new c(e,s)))}addListener(e){this.listeners.push(e)}async send(e){let t;if("string"==typeof e)t={type:"Text",data:e};else if("object"==typeof e&&"type"in e)t=e;else{if(!Array.isArray(e))throw new Error("invalid `message` type, expected a `{ type: string, data: any }` object, a string or a numeric array");t={type:"Binary",data:e}}await o("plugin:websocket|send",{id:this.id,message:t})}async disconnect(){await this.send({type:"Close",data:{code:1e3,reason:"Disconnected by client"}})}}return c}();Object.defineProperty(window.__TAURI__,"websocket",{value:__TAURI_PLUGIN_WEBSOCKET__})}
diff --git a/plugins/websocket/examples/tauri-app/package.json b/plugins/websocket/examples/tauri-app/package.json
index ca13ac24..33b62a51 100644
--- a/plugins/websocket/examples/tauri-app/package.json
+++ b/plugins/websocket/examples/tauri-app/package.json
@@ -9,7 +9,7 @@
"preview": "vite preview"
},
"devDependencies": {
- "@tauri-apps/cli": "2.0.4",
+ "@tauri-apps/cli": "2.1.0",
"typescript": "^5.3.3",
"vite": "^5.4.7"
},
diff --git a/plugins/window-state/CHANGELOG.md b/plugins/window-state/CHANGELOG.md
index 4f6eb45d..37fb3425 100644
--- a/plugins/window-state/CHANGELOG.md
+++ b/plugins/window-state/CHANGELOG.md
@@ -1,5 +1,9 @@
# Changelog
+## \[2.0.2]
+
+- [`cfb3ec0e`](https://github.com/tauri-apps/plugins-workspace/commit/cfb3ec0e21cab8010fbc1d7ef82aa65d86c3cfa9) ([#2007](https://github.com/tauri-apps/plugins-workspace/pull/2007) by [@FabianLars](https://github.com/tauri-apps/plugins-workspace/../../FabianLars)) On macOS the plugin now (temporarily) ignores the maximized state for undecorated windows on resize events to fix app freezes.
+
## \[2.0.1]
- [`a1a82208`](https://github.com/tauri-apps/plugins-workspace/commit/a1a82208ed4ab87f83310be0dc95428aec9ab241) ([#1873](https://github.com/tauri-apps/plugins-workspace/pull/1873) by [@lucasfernog](https://github.com/tauri-apps/plugins-workspace/../../lucasfernog)) Downgrade MSRV to 1.77.2 to support Windows 7.
diff --git a/plugins/window-state/Cargo.toml b/plugins/window-state/Cargo.toml
index d7a7a5f7..fbd3eee4 100644
--- a/plugins/window-state/Cargo.toml
+++ b/plugins/window-state/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "tauri-plugin-window-state"
-version = "2.0.1"
+version = "2.0.2"
description = "Save window positions and sizes and restore them when the app is reopened."
authors = { workspace = true }
license = { workspace = true }
diff --git a/plugins/window-state/api-iife.js b/plugins/window-state/api-iife.js
index de6e9613..3cfdbf94 100644
--- a/plugins/window-state/api-iife.js
+++ b/plugins/window-state/api-iife.js
@@ -1 +1 @@
-if("__TAURI__"in window){var __TAURI_PLUGIN_WINDOW_STATE__=function(e){"use strict";var t,i,n,a;function l(e,t=!1){return window.__TAURI_INTERNALS__.transformCallback(e,t)}async function s(e,t={},i){return window.__TAURI_INTERNALS__.invoke(e,t,i)}"function"==typeof SuppressedError&&SuppressedError;class r{get rid(){return function(e,t,i,n){if("a"===i&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===i?n:"a"===i?n.call(e):n?n.value:t.get(e)}(this,t,"f")}constructor(e){t.set(this,void 0),function(e,t,i,n,a){if("function"==typeof t?e!==t||!a:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");t.set(e,i)}(this,t,e)}async close(){return s("plugin:resources|close",{rid:this.rid})}}t=new WeakMap;class o{constructor(e,t){this.type="Logical",this.width=e,this.height=t}toPhysical(e){return new u(this.width*e,this.height*e)}}class u{constructor(e,t){this.type="Physical",this.width=e,this.height=t}toLogical(e){return new o(this.width/e,this.height/e)}}class c{constructor(e,t){this.type="Logical",this.x=e,this.y=t}toPhysical(e){return new d(this.x*e,this.x*e)}}class d{constructor(e,t){this.type="Physical",this.x=e,this.y=t}toLogical(e){return new c(this.x/e,this.y/e)}}async function h(e,t){await s("plugin:event|unlisten",{event:e,eventId:t})}async function w(e,t,i){var n;const a="string"==typeof(null==i?void 0:i.target)?{kind:"AnyLabel",label:i.target}:null!==(n=null==i?void 0:i.target)&&void 0!==n?n:{kind:"Any"};return s("plugin:event|listen",{event:e,target:a,handler:l(t)}).then((t=>async()=>h(e,t)))}!function(e){e.WINDOW_RESIZED="tauri://resize",e.WINDOW_MOVED="tauri://move",e.WINDOW_CLOSE_REQUESTED="tauri://close-requested",e.WINDOW_DESTROYED="tauri://destroyed",e.WINDOW_FOCUS="tauri://focus",e.WINDOW_BLUR="tauri://blur",e.WINDOW_SCALE_FACTOR_CHANGED="tauri://scale-change",e.WINDOW_THEME_CHANGED="tauri://theme-changed",e.WINDOW_CREATED="tauri://window-created",e.WEBVIEW_CREATED="tauri://webview-created",e.DRAG_ENTER="tauri://drag-enter",e.DRAG_OVER="tauri://drag-over",e.DRAG_DROP="tauri://drag-drop",e.DRAG_LEAVE="tauri://drag-leave"}(i||(i={}));class b extends r{constructor(e){super(e)}static async new(e,t,i){return s("plugin:image|new",{rgba:y(e),width:t,height:i}).then((e=>new b(e)))}static async fromBytes(e){return s("plugin:image|from_bytes",{bytes:y(e)}).then((e=>new b(e)))}static async fromPath(e){return s("plugin:image|from_path",{path:e}).then((e=>new b(e)))}async rgba(){return s("plugin:image|rgba",{rid:this.rid}).then((e=>new Uint8Array(e)))}async size(){return s("plugin:image|size",{rid:this.rid})}}function y(e){return null==e?null:"string"==typeof e?e:e instanceof b?e.rid:e}!function(e){e[e.Critical=1]="Critical",e[e.Informational=2]="Informational"}(n||(n={}));class p{constructor(e){this._preventDefault=!1,this.event=e.event,this.id=e.id}preventDefault(){this._preventDefault=!0}isPreventDefault(){return this._preventDefault}}function g(){return new v(window.__TAURI_INTERNALS__.metadata.currentWindow.label,{skip:!0})}async function _(){return s("plugin:window|get_all_windows").then((e=>e.map((e=>new v(e,{skip:!0})))))}!function(e){e.None="none",e.Normal="normal",e.Indeterminate="indeterminate",e.Paused="paused",e.Error="error"}(a||(a={}));const m=["tauri://created","tauri://error"];class v{constructor(e,t={}){var i;this.label=e,this.listeners=Object.create(null),(null==t?void 0:t.skip)||s("plugin:window|create",{options:{...t,parent:"string"==typeof t.parent?t.parent:null===(i=t.parent)||void 0===i?void 0:i.label,label:e}}).then((async()=>this.emit("tauri://created"))).catch((async e=>this.emit("tauri://error",e)))}static async getByLabel(e){var t;return null!==(t=(await _()).find((t=>t.label===e)))&&void 0!==t?t:null}static getCurrent(){return g()}static async getAll(){return _()}static async getFocusedWindow(){for(const e of await _())if(await e.isFocused())return e;return null}async listen(e,t){return this._handleTauriEvent(e,t)?()=>{const i=this.listeners[e];i.splice(i.indexOf(t),1)}:w(e,t,{target:{kind:"Window",label:this.label}})}async once(e,t){return this._handleTauriEvent(e,t)?()=>{const i=this.listeners[e];i.splice(i.indexOf(t),1)}:async function(e,t,i){return w(e,(i=>{h(e,i.id),t(i)}),i)}(e,t,{target:{kind:"Window",label:this.label}})}async emit(e,t){if(!m.includes(e))return async function(e,t){await s("plugin:event|emit",{event:e,payload:t})}(e,t);for(const i of this.listeners[e]||[])i({event:e,id:-1,payload:t})}async emitTo(e,t,i){if(!m.includes(t))return async function(e,t,i){const n="string"==typeof e?{kind:"AnyLabel",label:e}:e;await s("plugin:event|emit_to",{target:n,event:t,payload:i})}(e,t,i);for(const e of this.listeners[t]||[])e({event:t,id:-1,payload:i})}_handleTauriEvent(e,t){return!!m.includes(e)&&(e in this.listeners?this.listeners[e].push(t):this.listeners[e]=[t],!0)}async scaleFactor(){return s("plugin:window|scale_factor",{label:this.label})}async innerPosition(){return s("plugin:window|inner_position",{label:this.label}).then((({x:e,y:t})=>new d(e,t)))}async outerPosition(){return s("plugin:window|outer_position",{label:this.label}).then((({x:e,y:t})=>new d(e,t)))}async innerSize(){return s("plugin:window|inner_size",{label:this.label}).then((({width:e,height:t})=>new u(e,t)))}async outerSize(){return s("plugin:window|outer_size",{label:this.label}).then((({width:e,height:t})=>new u(e,t)))}async isFullscreen(){return s("plugin:window|is_fullscreen",{label:this.label})}async isMinimized(){return s("plugin:window|is_minimized",{label:this.label})}async isMaximized(){return s("plugin:window|is_maximized",{label:this.label})}async isFocused(){return s("plugin:window|is_focused",{label:this.label})}async isDecorated(){return s("plugin:window|is_decorated",{label:this.label})}async isResizable(){return s("plugin:window|is_resizable",{label:this.label})}async isMaximizable(){return s("plugin:window|is_maximizable",{label:this.label})}async isMinimizable(){return s("plugin:window|is_minimizable",{label:this.label})}async isClosable(){return s("plugin:window|is_closable",{label:this.label})}async isVisible(){return s("plugin:window|is_visible",{label:this.label})}async title(){return s("plugin:window|title",{label:this.label})}async theme(){return s("plugin:window|theme",{label:this.label})}async center(){return s("plugin:window|center",{label:this.label})}async requestUserAttention(e){let t=null;return e&&(t=e===n.Critical?{type:"Critical"}:{type:"Informational"}),s("plugin:window|request_user_attention",{label:this.label,value:t})}async setResizable(e){return s("plugin:window|set_resizable",{label:this.label,value:e})}async setEnabled(e){return s("plugin:window|set_enabled",{label:this.label,value:e})}async isEnabled(){return s("plugin:window|is_enabled",{label:this.label})}async setMaximizable(e){return s("plugin:window|set_maximizable",{label:this.label,value:e})}async setMinimizable(e){return s("plugin:window|set_minimizable",{label:this.label,value:e})}async setClosable(e){return s("plugin:window|set_closable",{label:this.label,value:e})}async setTitle(e){return s("plugin:window|set_title",{label:this.label,value:e})}async maximize(){return s("plugin:window|maximize",{label:this.label})}async unmaximize(){return s("plugin:window|unmaximize",{label:this.label})}async toggleMaximize(){return s("plugin:window|toggle_maximize",{label:this.label})}async minimize(){return s("plugin:window|minimize",{label:this.label})}async unminimize(){return s("plugin:window|unminimize",{label:this.label})}async show(){return s("plugin:window|show",{label:this.label})}async hide(){return s("plugin:window|hide",{label:this.label})}async close(){return s("plugin:window|close",{label:this.label})}async destroy(){return s("plugin:window|destroy",{label:this.label})}async setDecorations(e){return s("plugin:window|set_decorations",{label:this.label,value:e})}async setShadow(e){return s("plugin:window|set_shadow",{label:this.label,value:e})}async setEffects(e){return s("plugin:window|set_effects",{label:this.label,value:e})}async clearEffects(){return s("plugin:window|set_effects",{label:this.label,value:null})}async setAlwaysOnTop(e){return s("plugin:window|set_always_on_top",{label:this.label,value:e})}async setAlwaysOnBottom(e){return s("plugin:window|set_always_on_bottom",{label:this.label,value:e})}async setContentProtected(e){return s("plugin:window|set_content_protected",{label:this.label,value:e})}async setSize(e){if(!e||"Logical"!==e.type&&"Physical"!==e.type)throw new Error("the `size` argument must be either a LogicalSize or a PhysicalSize instance");const t={};return t[`${e.type}`]={width:e.width,height:e.height},s("plugin:window|set_size",{label:this.label,value:t})}async setMinSize(e){if(e&&"Logical"!==e.type&&"Physical"!==e.type)throw new Error("the `size` argument must be either a LogicalSize or a PhysicalSize instance");let t=null;return e&&(t={},t[`${e.type}`]={width:e.width,height:e.height}),s("plugin:window|set_min_size",{label:this.label,value:t})}async setMaxSize(e){if(e&&"Logical"!==e.type&&"Physical"!==e.type)throw new Error("the `size` argument must be either a LogicalSize or a PhysicalSize instance");let t=null;return e&&(t={},t[`${e.type}`]={width:e.width,height:e.height}),s("plugin:window|set_max_size",{label:this.label,value:t})}async setSizeConstraints(e){function t(e){return e?{Logical:e}:null}return s("plugin:window|set_size_constraints",{label:this.label,value:{minWidth:t(null==e?void 0:e.minWidth),minHeight:t(null==e?void 0:e.minHeight),maxWidth:t(null==e?void 0:e.maxWidth),maxHeight:t(null==e?void 0:e.maxHeight)}})}async setPosition(e){if(!e||"Logical"!==e.type&&"Physical"!==e.type)throw new Error("the `position` argument must be either a LogicalPosition or a PhysicalPosition instance");const t={};return t[`${e.type}`]={x:e.x,y:e.y},s("plugin:window|set_position",{label:this.label,value:t})}async setFullscreen(e){return s("plugin:window|set_fullscreen",{label:this.label,value:e})}async setFocus(){return s("plugin:window|set_focus",{label:this.label})}async setIcon(e){return s("plugin:window|set_icon",{label:this.label,value:y(e)})}async setSkipTaskbar(e){return s("plugin:window|set_skip_taskbar",{label:this.label,value:e})}async setCursorGrab(e){return s("plugin:window|set_cursor_grab",{label:this.label,value:e})}async setCursorVisible(e){return s("plugin:window|set_cursor_visible",{label:this.label,value:e})}async setCursorIcon(e){return s("plugin:window|set_cursor_icon",{label:this.label,value:e})}async setCursorPosition(e){if(!e||"Logical"!==e.type&&"Physical"!==e.type)throw new Error("the `position` argument must be either a LogicalPosition or a PhysicalPosition instance");const t={};return t[`${e.type}`]={x:e.x,y:e.y},s("plugin:window|set_cursor_position",{label:this.label,value:t})}async setIgnoreCursorEvents(e){return s("plugin:window|set_ignore_cursor_events",{label:this.label,value:e})}async startDragging(){return s("plugin:window|start_dragging",{label:this.label})}async startResizeDragging(e){return s("plugin:window|start_resize_dragging",{label:this.label,value:e})}async setProgressBar(e){return s("plugin:window|set_progress_bar",{label:this.label,value:e})}async setVisibleOnAllWorkspaces(e){return s("plugin:window|set_visible_on_all_workspaces",{label:this.label,value:e})}async setTitleBarStyle(e){return s("plugin:window|set_title_bar_style",{label:this.label,value:e})}async setTheme(e){return s("plugin:window|set_theme",{label:this.label,value:e})}async onResized(e){return this.listen(i.WINDOW_RESIZED,(t=>{var i;t.payload=(i=t.payload,new u(i.width,i.height)),e(t)}))}async onMoved(e){return this.listen(i.WINDOW_MOVED,(t=>{t.payload=I(t.payload),e(t)}))}async onCloseRequested(e){return this.listen(i.WINDOW_CLOSE_REQUESTED,(async t=>{const i=new p(t);await e(i),i.isPreventDefault()||await this.destroy()}))}async onDragDropEvent(e){const t=await this.listen(i.DRAG_ENTER,(t=>{e({...t,payload:{type:"enter",paths:t.payload.paths,position:I(t.payload.position)}})})),n=await this.listen(i.DRAG_OVER,(t=>{e({...t,payload:{type:"over",position:I(t.payload.position)}})})),a=await this.listen(i.DRAG_DROP,(t=>{e({...t,payload:{type:"drop",paths:t.payload.paths,position:I(t.payload.position)}})})),l=await this.listen(i.DRAG_LEAVE,(t=>{e({...t,payload:{type:"leave"}})}));return()=>{t(),a(),n(),l()}}async onFocusChanged(e){const t=await this.listen(i.WINDOW_FOCUS,(t=>{e({...t,payload:!0})})),n=await this.listen(i.WINDOW_BLUR,(t=>{e({...t,payload:!1})}));return()=>{t(),n()}}async onScaleChanged(e){return this.listen(i.WINDOW_SCALE_FACTOR_CHANGED,e)}async onThemeChanged(e){return this.listen(i.WINDOW_THEME_CHANGED,e)}}var f,E,D;function I(e){return new d(e.x,e.y)}async function S(e,t){await s("plugin:window-state|restore_state",{label:e,flags:t})}return function(e){e.AppearanceBased="appearanceBased",e.Light="light",e.Dark="dark",e.MediumLight="mediumLight",e.UltraDark="ultraDark",e.Titlebar="titlebar",e.Selection="selection",e.Menu="menu",e.Popover="popover",e.Sidebar="sidebar",e.HeaderView="headerView",e.Sheet="sheet",e.WindowBackground="windowBackground",e.HudWindow="hudWindow",e.FullScreenUI="fullScreenUI",e.Tooltip="tooltip",e.ContentBackground="contentBackground",e.UnderWindowBackground="underWindowBackground",e.UnderPageBackground="underPageBackground",e.Mica="mica",e.Blur="blur",e.Acrylic="acrylic",e.Tabbed="tabbed",e.TabbedDark="tabbedDark",e.TabbedLight="tabbedLight"}(f||(f={})),function(e){e.FollowsWindowActiveState="followsWindowActiveState",e.Active="active",e.Inactive="inactive"}(E||(E={})),e.StateFlags=void 0,(D=e.StateFlags||(e.StateFlags={}))[D.SIZE=1]="SIZE",D[D.POSITION=2]="POSITION",D[D.MAXIMIZED=4]="MAXIMIZED",D[D.VISIBLE=8]="VISIBLE",D[D.DECORATIONS=16]="DECORATIONS",D[D.FULLSCREEN=32]="FULLSCREEN",D[D.ALL=63]="ALL",e.filename=async function(){return await s("plugin:window-state|filename")},e.restoreState=S,e.restoreStateCurrent=async function(e){await S(g().label,e)},e.saveWindowState=async function(e){await s("plugin:window-state|save_window_state",{flags:e})},e}({});Object.defineProperty(window.__TAURI__,"windowState",{value:__TAURI_PLUGIN_WINDOW_STATE__})}
+if("__TAURI__"in window){var __TAURI_PLUGIN_WINDOW_STATE__=function(e){"use strict";var t;"function"==typeof SuppressedError&&SuppressedError;const i="__TAURI_TO_IPC_KEY__";function n(e,t=!1){return window.__TAURI_INTERNALS__.transformCallback(e,t)}async function a(e,t={},i){return window.__TAURI_INTERNALS__.invoke(e,t,i)}class s{get rid(){return function(e,t,i,n){if("a"===i&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===i?n:"a"===i?n.call(e):n?n.value:t.get(e)}(this,t,"f")}constructor(e){t.set(this,void 0),function(e,t,i,n,a){if("function"==typeof t?e!==t||!a:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");t.set(e,i)}(this,t,e)}async close(){return a("plugin:resources|close",{rid:this.rid})}}t=new WeakMap;class l{constructor(...e){this.type="Logical",1===e.length?"Logical"in e[0]?(this.width=e[0].Logical.width,this.height=e[0].Logical.height):(this.width=e[0].width,this.height=e[0].height):(this.width=e[0],this.height=e[1])}toPhysical(e){return new r(this.width*e,this.height*e)}[i](){return{width:this.width,height:this.height}}toJSON(){return this[i]()}}class r{constructor(...e){this.type="Physical",1===e.length?"Physical"in e[0]?(this.width=e[0].Physical.width,this.height=e[0].Physical.height):(this.width=e[0].width,this.height=e[0].height):(this.width=e[0],this.height=e[1])}toLogical(e){return new l(this.width/e,this.height/e)}[i](){return{width:this.width,height:this.height}}toJSON(){return this[i]()}}class o{constructor(e){this.size=e}toLogical(e){return this.size instanceof l?this.size:this.size.toLogical(e)}toPhysical(e){return this.size instanceof r?this.size:this.size.toPhysical(e)}[i](){return{[`${this.size.type}`]:{width:this.size.width,height:this.size.height}}}toJSON(){return this[i]()}}class u{constructor(...e){this.type="Logical",1===e.length?"Logical"in e[0]?(this.x=e[0].Logical.x,this.y=e[0].Logical.y):(this.x=e[0].x,this.y=e[0].y):(this.x=e[0],this.y=e[1])}toPhysical(e){return new c(this.x*e,this.y*e)}[i](){return{x:this.x,y:this.y}}toJSON(){return this[i]()}}class c{constructor(...e){this.type="Physical",1===e.length?"Physical"in e[0]?(this.x=e[0].Physical.x,this.y=e[0].Physical.y):(this.x=e[0].x,this.y=e[0].y):(this.x=e[0],this.y=e[1])}toLogical(e){return new u(this.x/e,this.y/e)}[i](){return{x:this.x,y:this.y}}toJSON(){return this[i]()}}class h{constructor(e){this.position=e}toLogical(e){return this.position instanceof u?this.position:this.position.toLogical(e)}toPhysical(e){return this.position instanceof c?this.position:this.position.toPhysical(e)}[i](){return{[`${this.position.type}`]:{x:this.position.x,y:this.position.y}}}toJSON(){return this[i]()}}var d,w,b;async function g(e,t){await a("plugin:event|unlisten",{event:e,eventId:t})}async function y(e,t,i){var s;const l="string"==typeof(null==i?void 0:i.target)?{kind:"AnyLabel",label:i.target}:null!==(s=null==i?void 0:i.target)&&void 0!==s?s:{kind:"Any"};return a("plugin:event|listen",{event:e,target:l,handler:n(t)}).then((t=>async()=>g(e,t)))}!function(e){e.WINDOW_RESIZED="tauri://resize",e.WINDOW_MOVED="tauri://move",e.WINDOW_CLOSE_REQUESTED="tauri://close-requested",e.WINDOW_DESTROYED="tauri://destroyed",e.WINDOW_FOCUS="tauri://focus",e.WINDOW_BLUR="tauri://blur",e.WINDOW_SCALE_FACTOR_CHANGED="tauri://scale-change",e.WINDOW_THEME_CHANGED="tauri://theme-changed",e.WINDOW_CREATED="tauri://window-created",e.WEBVIEW_CREATED="tauri://webview-created",e.DRAG_ENTER="tauri://drag-enter",e.DRAG_OVER="tauri://drag-over",e.DRAG_DROP="tauri://drag-drop",e.DRAG_LEAVE="tauri://drag-leave"}(d||(d={}));class p extends s{constructor(e){super(e)}static async new(e,t,i){return a("plugin:image|new",{rgba:_(e),width:t,height:i}).then((e=>new p(e)))}static async fromBytes(e){return a("plugin:image|from_bytes",{bytes:_(e)}).then((e=>new p(e)))}static async fromPath(e){return a("plugin:image|from_path",{path:e}).then((e=>new p(e)))}async rgba(){return a("plugin:image|rgba",{rid:this.rid}).then((e=>new Uint8Array(e)))}async size(){return a("plugin:image|size",{rid:this.rid})}}function _(e){return null==e?null:"string"==typeof e?e:e instanceof p?e.rid:e}!function(e){e[e.Critical=1]="Critical",e[e.Informational=2]="Informational"}(w||(w={}));class v{constructor(e){this._preventDefault=!1,this.event=e.event,this.id=e.id}preventDefault(){this._preventDefault=!0}isPreventDefault(){return this._preventDefault}}function f(){return new D(window.__TAURI_INTERNALS__.metadata.currentWindow.label,{skip:!0})}async function m(){return a("plugin:window|get_all_windows").then((e=>e.map((e=>new D(e,{skip:!0})))))}!function(e){e.None="none",e.Normal="normal",e.Indeterminate="indeterminate",e.Paused="paused",e.Error="error"}(b||(b={}));const E=["tauri://created","tauri://error"];class D{constructor(e,t={}){var i;this.label=e,this.listeners=Object.create(null),(null==t?void 0:t.skip)||a("plugin:window|create",{options:{...t,parent:"string"==typeof t.parent?t.parent:null===(i=t.parent)||void 0===i?void 0:i.label,label:e}}).then((async()=>this.emit("tauri://created"))).catch((async e=>this.emit("tauri://error",e)))}static async getByLabel(e){var t;return null!==(t=(await m()).find((t=>t.label===e)))&&void 0!==t?t:null}static getCurrent(){return f()}static async getAll(){return m()}static async getFocusedWindow(){for(const e of await m())if(await e.isFocused())return e;return null}async listen(e,t){return this._handleTauriEvent(e,t)?()=>{const i=this.listeners[e];i.splice(i.indexOf(t),1)}:y(e,t,{target:{kind:"Window",label:this.label}})}async once(e,t){return this._handleTauriEvent(e,t)?()=>{const i=this.listeners[e];i.splice(i.indexOf(t),1)}:async function(e,t,i){return y(e,(i=>{g(e,i.id),t(i)}),i)}(e,t,{target:{kind:"Window",label:this.label}})}async emit(e,t){if(!E.includes(e))return async function(e,t){await a("plugin:event|emit",{event:e,payload:t})}(e,t);for(const i of this.listeners[e]||[])i({event:e,id:-1,payload:t})}async emitTo(e,t,i){if(!E.includes(t))return async function(e,t,i){const n="string"==typeof e?{kind:"AnyLabel",label:e}:e;await a("plugin:event|emit_to",{target:n,event:t,payload:i})}(e,t,i);for(const e of this.listeners[t]||[])e({event:t,id:-1,payload:i})}_handleTauriEvent(e,t){return!!E.includes(e)&&(e in this.listeners?this.listeners[e].push(t):this.listeners[e]=[t],!0)}async scaleFactor(){return a("plugin:window|scale_factor",{label:this.label})}async innerPosition(){return a("plugin:window|inner_position",{label:this.label}).then((e=>new c(e)))}async outerPosition(){return a("plugin:window|outer_position",{label:this.label}).then((e=>new c(e)))}async innerSize(){return a("plugin:window|inner_size",{label:this.label}).then((e=>new r(e)))}async outerSize(){return a("plugin:window|outer_size",{label:this.label}).then((e=>new r(e)))}async isFullscreen(){return a("plugin:window|is_fullscreen",{label:this.label})}async isMinimized(){return a("plugin:window|is_minimized",{label:this.label})}async isMaximized(){return a("plugin:window|is_maximized",{label:this.label})}async isFocused(){return a("plugin:window|is_focused",{label:this.label})}async isDecorated(){return a("plugin:window|is_decorated",{label:this.label})}async isResizable(){return a("plugin:window|is_resizable",{label:this.label})}async isMaximizable(){return a("plugin:window|is_maximizable",{label:this.label})}async isMinimizable(){return a("plugin:window|is_minimizable",{label:this.label})}async isClosable(){return a("plugin:window|is_closable",{label:this.label})}async isVisible(){return a("plugin:window|is_visible",{label:this.label})}async title(){return a("plugin:window|title",{label:this.label})}async theme(){return a("plugin:window|theme",{label:this.label})}async center(){return a("plugin:window|center",{label:this.label})}async requestUserAttention(e){let t=null;return e&&(t=e===w.Critical?{type:"Critical"}:{type:"Informational"}),a("plugin:window|request_user_attention",{label:this.label,value:t})}async setResizable(e){return a("plugin:window|set_resizable",{label:this.label,value:e})}async setEnabled(e){return a("plugin:window|set_enabled",{label:this.label,value:e})}async isEnabled(){return a("plugin:window|is_enabled",{label:this.label})}async setMaximizable(e){return a("plugin:window|set_maximizable",{label:this.label,value:e})}async setMinimizable(e){return a("plugin:window|set_minimizable",{label:this.label,value:e})}async setClosable(e){return a("plugin:window|set_closable",{label:this.label,value:e})}async setTitle(e){return a("plugin:window|set_title",{label:this.label,value:e})}async maximize(){return a("plugin:window|maximize",{label:this.label})}async unmaximize(){return a("plugin:window|unmaximize",{label:this.label})}async toggleMaximize(){return a("plugin:window|toggle_maximize",{label:this.label})}async minimize(){return a("plugin:window|minimize",{label:this.label})}async unminimize(){return a("plugin:window|unminimize",{label:this.label})}async show(){return a("plugin:window|show",{label:this.label})}async hide(){return a("plugin:window|hide",{label:this.label})}async close(){return a("plugin:window|close",{label:this.label})}async destroy(){return a("plugin:window|destroy",{label:this.label})}async setDecorations(e){return a("plugin:window|set_decorations",{label:this.label,value:e})}async setShadow(e){return a("plugin:window|set_shadow",{label:this.label,value:e})}async setEffects(e){return a("plugin:window|set_effects",{label:this.label,value:e})}async clearEffects(){return a("plugin:window|set_effects",{label:this.label,value:null})}async setAlwaysOnTop(e){return a("plugin:window|set_always_on_top",{label:this.label,value:e})}async setAlwaysOnBottom(e){return a("plugin:window|set_always_on_bottom",{label:this.label,value:e})}async setContentProtected(e){return a("plugin:window|set_content_protected",{label:this.label,value:e})}async setSize(e){return a("plugin:window|set_size",{label:this.label,value:e instanceof o?e:new o(e)})}async setMinSize(e){return a("plugin:window|set_min_size",{label:this.label,value:e instanceof o?e:e?new o(e):null})}async setMaxSize(e){return a("plugin:window|set_max_size",{label:this.label,value:e instanceof o?e:e?new o(e):null})}async setSizeConstraints(e){function t(e){return e?{Logical:e}:null}return a("plugin:window|set_size_constraints",{label:this.label,value:{minWidth:t(null==e?void 0:e.minWidth),minHeight:t(null==e?void 0:e.minHeight),maxWidth:t(null==e?void 0:e.maxWidth),maxHeight:t(null==e?void 0:e.maxHeight)}})}async setPosition(e){return a("plugin:window|set_position",{label:this.label,value:e instanceof h?e:new h(e)})}async setFullscreen(e){return a("plugin:window|set_fullscreen",{label:this.label,value:e})}async setFocus(){return a("plugin:window|set_focus",{label:this.label})}async setIcon(e){return a("plugin:window|set_icon",{label:this.label,value:_(e)})}async setSkipTaskbar(e){return a("plugin:window|set_skip_taskbar",{label:this.label,value:e})}async setCursorGrab(e){return a("plugin:window|set_cursor_grab",{label:this.label,value:e})}async setCursorVisible(e){return a("plugin:window|set_cursor_visible",{label:this.label,value:e})}async setCursorIcon(e){return a("plugin:window|set_cursor_icon",{label:this.label,value:e})}async setBackgroundColor(e){return a("plugin:window|set_background_color",{color:e})}async setCursorPosition(e){return a("plugin:window|set_cursor_position",{label:this.label,value:e instanceof h?e:new h(e)})}async setIgnoreCursorEvents(e){return a("plugin:window|set_ignore_cursor_events",{label:this.label,value:e})}async startDragging(){return a("plugin:window|start_dragging",{label:this.label})}async startResizeDragging(e){return a("plugin:window|start_resize_dragging",{label:this.label,value:e})}async setProgressBar(e){return a("plugin:window|set_progress_bar",{label:this.label,value:e})}async setVisibleOnAllWorkspaces(e){return a("plugin:window|set_visible_on_all_workspaces",{label:this.label,value:e})}async setTitleBarStyle(e){return a("plugin:window|set_title_bar_style",{label:this.label,value:e})}async setTheme(e){return a("plugin:window|set_theme",{label:this.label,value:e})}async onResized(e){return this.listen(d.WINDOW_RESIZED,(t=>{t.payload=new r(t.payload),e(t)}))}async onMoved(e){return this.listen(d.WINDOW_MOVED,(t=>{t.payload=new c(t.payload),e(t)}))}async onCloseRequested(e){return this.listen(d.WINDOW_CLOSE_REQUESTED,(async t=>{const i=new v(t);await e(i),i.isPreventDefault()||await this.destroy()}))}async onDragDropEvent(e){const t=await this.listen(d.DRAG_ENTER,(t=>{e({...t,payload:{type:"enter",paths:t.payload.paths,position:new c(t.payload.position)}})})),i=await this.listen(d.DRAG_OVER,(t=>{e({...t,payload:{type:"over",position:new c(t.payload.position)}})})),n=await this.listen(d.DRAG_DROP,(t=>{e({...t,payload:{type:"drop",paths:t.payload.paths,position:new c(t.payload.position)}})})),a=await this.listen(d.DRAG_LEAVE,(t=>{e({...t,payload:{type:"leave"}})}));return()=>{t(),n(),i(),a()}}async onFocusChanged(e){const t=await this.listen(d.WINDOW_FOCUS,(t=>{e({...t,payload:!0})})),i=await this.listen(d.WINDOW_BLUR,(t=>{e({...t,payload:!1})}));return()=>{t(),i()}}async onScaleChanged(e){return this.listen(d.WINDOW_SCALE_FACTOR_CHANGED,e)}async onThemeChanged(e){return this.listen(d.WINDOW_THEME_CHANGED,e)}}var I,S,W;async function z(e,t){await a("plugin:window-state|restore_state",{label:e,flags:t})}return function(e){e.AppearanceBased="appearanceBased",e.Light="light",e.Dark="dark",e.MediumLight="mediumLight",e.UltraDark="ultraDark",e.Titlebar="titlebar",e.Selection="selection",e.Menu="menu",e.Popover="popover",e.Sidebar="sidebar",e.HeaderView="headerView",e.Sheet="sheet",e.WindowBackground="windowBackground",e.HudWindow="hudWindow",e.FullScreenUI="fullScreenUI",e.Tooltip="tooltip",e.ContentBackground="contentBackground",e.UnderWindowBackground="underWindowBackground",e.UnderPageBackground="underPageBackground",e.Mica="mica",e.Blur="blur",e.Acrylic="acrylic",e.Tabbed="tabbed",e.TabbedDark="tabbedDark",e.TabbedLight="tabbedLight"}(I||(I={})),function(e){e.FollowsWindowActiveState="followsWindowActiveState",e.Active="active",e.Inactive="inactive"}(S||(S={})),e.StateFlags=void 0,(W=e.StateFlags||(e.StateFlags={}))[W.SIZE=1]="SIZE",W[W.POSITION=2]="POSITION",W[W.MAXIMIZED=4]="MAXIMIZED",W[W.VISIBLE=8]="VISIBLE",W[W.DECORATIONS=16]="DECORATIONS",W[W.FULLSCREEN=32]="FULLSCREEN",W[W.ALL=63]="ALL",e.filename=async function(){return await a("plugin:window-state|filename")},e.restoreState=z,e.restoreStateCurrent=async function(e){await z(f().label,e)},e.saveWindowState=async function(e){await a("plugin:window-state|save_window_state",{flags:e})},e}({});Object.defineProperty(window.__TAURI__,"windowState",{value:__TAURI_PLUGIN_WINDOW_STATE__})}
diff --git a/plugins/window-state/src/lib.rs b/plugins/window-state/src/lib.rs
index 15599da8..82beb9f4 100644
--- a/plugins/window-state/src/lib.rs
+++ b/plugins/window-state/src/lib.rs
@@ -471,13 +471,23 @@ impl Builder {
.0
.try_lock()
.is_ok()
- && !window_clone.is_minimized().unwrap_or_default()
- && !window_clone.is_maximized().unwrap_or_default()
{
- let mut c = cache.lock().unwrap();
- if let Some(state) = c.get_mut(&label) {
- state.width = size.width;
- state.height = size.height;
+ // TODO: Remove once https://github.com/tauri-apps/tauri/issues/5812 is resolved.
+ let is_maximized = if cfg!(target_os = "macos")
+ && (!window_clone.is_decorated().unwrap_or_default()
+ || !window_clone.is_resizable().unwrap_or_default())
+ {
+ false
+ } else {
+ window_clone.is_maximized().unwrap_or_default()
+ };
+
+ if !window_clone.is_minimized().unwrap_or_default() && !is_maximized {
+ let mut c = cache.lock().unwrap();
+ if let Some(state) = c.get_mut(&label) {
+ state.width = size.width;
+ state.height = size.height;
+ }
}
}
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index bcff562a..85cc899d 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -17,13 +17,13 @@ importers:
version: 9.14.0
'@rollup/plugin-node-resolve':
specifier: 15.3.0
- version: 15.3.0(rollup@4.24.4)
+ version: 15.3.0(rollup@4.25.0)
'@rollup/plugin-terser':
specifier: 0.4.4
- version: 0.4.4(rollup@4.24.4)
+ version: 0.4.4(rollup@4.25.0)
'@rollup/plugin-typescript':
specifier: 11.1.6
- version: 11.1.6(rollup@4.24.4)(tslib@2.8.1)(typescript@5.6.3)
+ version: 11.1.6(rollup@4.25.0)(tslib@2.8.1)(typescript@5.6.3)
'@types/eslint__js':
specifier: 8.42.3
version: 8.42.3
@@ -43,8 +43,8 @@ importers:
specifier: 3.3.3
version: 3.3.3
rollup:
- specifier: 4.24.4
- version: 4.24.4
+ specifier: 4.25.0
+ version: 4.25.0
tslib:
specifier: 2.8.1
version: 2.8.1
@@ -52,14 +52,14 @@ importers:
specifier: 5.6.3
version: 5.6.3
typescript-eslint:
- specifier: 8.13.0
- version: 8.13.0(eslint@9.14.0(jiti@2.0.0))(typescript@5.6.3)
+ specifier: 8.14.0
+ version: 8.14.0(eslint@9.14.0(jiti@2.0.0))(typescript@5.6.3)
examples/api:
dependencies:
'@tauri-apps/api':
- specifier: 2.0.3
- version: 2.0.3
+ specifier: 2.1.1
+ version: 2.1.1
'@tauri-apps/plugin-barcode-scanner':
specifier: 2.0.0
version: link:../../plugins/barcode-scanner
@@ -76,7 +76,7 @@ importers:
specifier: 2.0.1
version: link:../../plugins/dialog
'@tauri-apps/plugin-fs':
- specifier: 2.0.1
+ specifier: 2.0.2
version: link:../../plugins/fs
'@tauri-apps/plugin-geolocation':
specifier: 2.0.0
@@ -125,17 +125,17 @@ importers:
specifier: ^4.0.0
version: 4.0.0(svelte@5.1.9)(vite@5.4.8(terser@5.34.1))
'@tauri-apps/cli':
- specifier: 2.0.4
- version: 2.0.4
+ specifier: 2.1.0
+ version: 2.1.0
'@unocss/extractor-svelte':
- specifier: ^0.63.0
- version: 0.63.1
+ specifier: ^0.64.0
+ version: 0.64.0
svelte:
specifier: ^5.0.0
version: 5.1.9
unocss:
- specifier: ^0.63.0
- version: 0.63.1(postcss@8.4.47)(rollup@4.24.4)(vite@5.4.8(terser@5.34.1))
+ specifier: ^0.64.0
+ version: 0.64.0(postcss@8.4.47)(rollup@4.25.0)(vite@5.4.8(terser@5.34.1))(vue@3.5.12(typescript@5.6.3))
vite:
specifier: ^5.4.7
version: 5.4.8(terser@5.34.1)
@@ -144,50 +144,50 @@ importers:
dependencies:
'@tauri-apps/api':
specifier: ^2.0.0
- version: 2.0.3
+ version: 2.1.1
plugins/barcode-scanner:
dependencies:
'@tauri-apps/api':
specifier: ^2.0.0
- version: 2.0.3
+ version: 2.1.1
plugins/biometric:
dependencies:
'@tauri-apps/api':
specifier: ^2.0.0
- version: 2.0.3
+ version: 2.1.1
plugins/cli:
dependencies:
'@tauri-apps/api':
specifier: ^2.0.0
- version: 2.0.3
+ version: 2.1.1
plugins/clipboard-manager:
dependencies:
'@tauri-apps/api':
specifier: ^2.0.0
- version: 2.0.3
+ version: 2.1.1
plugins/deep-link:
dependencies:
'@tauri-apps/api':
specifier: ^2.0.0
- version: 2.0.3
+ version: 2.1.1
plugins/deep-link/examples/app:
dependencies:
'@tauri-apps/api':
- specifier: 2.0.3
- version: 2.0.3
+ specifier: 2.1.1
+ version: 2.1.1
'@tauri-apps/plugin-deep-link':
specifier: 2.0.0
version: link:../..
devDependencies:
'@tauri-apps/cli':
- specifier: 2.0.4
- version: 2.0.4
+ specifier: 2.1.0
+ version: 2.1.0
typescript:
specifier: ^5.2.2
version: 5.6.3
@@ -199,103 +199,103 @@ importers:
dependencies:
'@tauri-apps/api':
specifier: ^2.0.0
- version: 2.0.3
+ version: 2.1.1
plugins/fs:
dependencies:
'@tauri-apps/api':
specifier: ^2.0.0
- version: 2.0.3
+ version: 2.1.1
plugins/geolocation:
dependencies:
'@tauri-apps/api':
specifier: ^2.0.0
- version: 2.0.3
+ version: 2.1.1
plugins/global-shortcut:
dependencies:
'@tauri-apps/api':
specifier: ^2.0.0
- version: 2.0.3
+ version: 2.1.1
plugins/haptics:
dependencies:
'@tauri-apps/api':
specifier: ^2.0.0
- version: 2.0.3
+ version: 2.1.1
plugins/http:
dependencies:
'@tauri-apps/api':
specifier: ^2.0.0
- version: 2.0.3
+ version: 2.1.1
plugins/log:
dependencies:
'@tauri-apps/api':
specifier: ^2.0.0
- version: 2.0.3
+ version: 2.1.1
plugins/nfc:
dependencies:
'@tauri-apps/api':
specifier: ^2.0.0
- version: 2.0.3
+ version: 2.1.1
plugins/notification:
dependencies:
'@tauri-apps/api':
specifier: ^2.0.0
- version: 2.0.3
+ version: 2.1.1
plugins/os:
dependencies:
'@tauri-apps/api':
specifier: ^2.0.0
- version: 2.0.3
+ version: 2.1.1
plugins/positioner:
dependencies:
'@tauri-apps/api':
specifier: ^2.0.0
- version: 2.0.3
+ version: 2.1.1
plugins/process:
dependencies:
'@tauri-apps/api':
specifier: ^2.0.0
- version: 2.0.3
+ version: 2.1.1
plugins/shell:
dependencies:
'@tauri-apps/api':
specifier: ^2.0.0
- version: 2.0.3
+ version: 2.1.1
plugins/single-instance/examples/vanilla:
devDependencies:
'@tauri-apps/cli':
- specifier: 2.0.4
- version: 2.0.4
+ specifier: 2.1.0
+ version: 2.1.0
plugins/sql:
dependencies:
'@tauri-apps/api':
specifier: ^2.0.0
- version: 2.0.3
+ version: 2.1.1
plugins/store:
dependencies:
'@tauri-apps/api':
specifier: ^2.0.0
- version: 2.0.3
+ version: 2.1.1
plugins/store/examples/AppSettingsManager:
devDependencies:
'@tauri-apps/cli':
- specifier: 2.0.4
- version: 2.0.4
+ specifier: 2.1.0
+ version: 2.1.0
typescript:
specifier: ^5.4.7
version: 5.6.3
@@ -307,25 +307,25 @@ importers:
dependencies:
'@tauri-apps/api':
specifier: ^2.0.0
- version: 2.0.3
+ version: 2.1.1
plugins/updater:
dependencies:
'@tauri-apps/api':
specifier: ^2.0.0
- version: 2.0.3
+ version: 2.1.1
plugins/upload:
dependencies:
'@tauri-apps/api':
specifier: ^2.0.0
- version: 2.0.3
+ version: 2.1.1
plugins/websocket:
dependencies:
'@tauri-apps/api':
specifier: ^2.0.0
- version: 2.0.3
+ version: 2.1.1
plugins/websocket/examples/tauri-app:
dependencies:
@@ -334,8 +334,8 @@ importers:
version: link:../..
devDependencies:
'@tauri-apps/cli':
- specifier: 2.0.4
- version: 2.0.4
+ specifier: 2.1.0
+ version: 2.1.0
typescript:
specifier: ^5.3.3
version: 5.6.3
@@ -347,7 +347,7 @@ importers:
dependencies:
'@tauri-apps/api':
specifier: ^2.0.0
- version: 2.0.3
+ version: 2.1.1
packages:
@@ -361,6 +361,23 @@ packages:
'@antfu/utils@0.7.10':
resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==}
+ '@babel/helper-string-parser@7.25.9':
+ resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-validator-identifier@7.25.9':
+ resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/parser@7.26.2':
+ resolution: {integrity: sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==}
+ engines: {node: '>=6.0.0'}
+ hasBin: true
+
+ '@babel/types@7.26.0':
+ resolution: {integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==}
+ engines: {node: '>=6.9.0'}
+
'@chainsafe/abort-controller@3.0.1':
resolution: {integrity: sha512-oyq0qgFJDIIgLpyPwTv4j/sHX/MITatFzY3/b42VSldyZfnUC1lYBx5RwFvzBv1Sq4APOj2VCZO23pDRwy5kew==}
engines: {node: '>=6.5'}
@@ -836,8 +853,8 @@ packages:
tslib:
optional: true
- '@rollup/pluginutils@5.1.2':
- resolution: {integrity: sha512-/FIdS3PyZ39bjZlwqFnWqCOVnW7o963LtKMwQOD0NhQqw22gSr2YY1afu3FxRip4ZCZNsD5jq6Aaz6QV3D/Njw==}
+ '@rollup/pluginutils@5.1.3':
+ resolution: {integrity: sha512-Pnsb6f32CD2W3uCaLZIzDmeFyQ2b8UWMFI7xtwUezpcGBDVDW6y9XgAWIlARiGAo6eNF5FK5aQTr0LFyNyqq5A==}
engines: {node: '>=14.0.0'}
peerDependencies:
rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
@@ -845,93 +862,93 @@ packages:
rollup:
optional: true
- '@rollup/rollup-android-arm-eabi@4.24.4':
- resolution: {integrity: sha512-jfUJrFct/hTA0XDM5p/htWKoNNTbDLY0KRwEt6pyOA6k2fmk0WVwl65PdUdJZgzGEHWx+49LilkcSaumQRyNQw==}
+ '@rollup/rollup-android-arm-eabi@4.25.0':
+ resolution: {integrity: sha512-CC/ZqFZwlAIbU1wUPisHyV/XRc5RydFrNLtgl3dGYskdwPZdt4HERtKm50a/+DtTlKeCq9IXFEWR+P6blwjqBA==}
cpu: [arm]
os: [android]
- '@rollup/rollup-android-arm64@4.24.4':
- resolution: {integrity: sha512-j4nrEO6nHU1nZUuCfRKoCcvh7PIywQPUCBa2UsootTHvTHIoIu2BzueInGJhhvQO/2FTRdNYpf63xsgEqH9IhA==}
+ '@rollup/rollup-android-arm64@4.25.0':
+ resolution: {integrity: sha512-/Y76tmLGUJqVBXXCfVS8Q8FJqYGhgH4wl4qTA24E9v/IJM0XvJCGQVSW1QZ4J+VURO9h8YCa28sTFacZXwK7Rg==}
cpu: [arm64]
os: [android]
- '@rollup/rollup-darwin-arm64@4.24.4':
- resolution: {integrity: sha512-GmU/QgGtBTeraKyldC7cDVVvAJEOr3dFLKneez/n7BvX57UdhOqDsVwzU7UOnYA7AAOt+Xb26lk79PldDHgMIQ==}
+ '@rollup/rollup-darwin-arm64@4.25.0':
+ resolution: {integrity: sha512-YVT6L3UrKTlC0FpCZd0MGA7NVdp7YNaEqkENbWQ7AOVOqd/7VzyHpgIpc1mIaxRAo1ZsJRH45fq8j4N63I/vvg==}
cpu: [arm64]
os: [darwin]
- '@rollup/rollup-darwin-x64@4.24.4':
- resolution: {integrity: sha512-N6oDBiZCBKlwYcsEPXGDE4g9RoxZLK6vT98M8111cW7VsVJFpNEqvJeIPfsCzbf0XEakPslh72X0gnlMi4Ddgg==}
+ '@rollup/rollup-darwin-x64@4.25.0':
+ resolution: {integrity: sha512-ZRL+gexs3+ZmmWmGKEU43Bdn67kWnMeWXLFhcVv5Un8FQcx38yulHBA7XR2+KQdYIOtD0yZDWBCudmfj6lQJoA==}
cpu: [x64]
os: [darwin]
- '@rollup/rollup-freebsd-arm64@4.24.4':
- resolution: {integrity: sha512-py5oNShCCjCyjWXCZNrRGRpjWsF0ic8f4ieBNra5buQz0O/U6mMXCpC1LvrHuhJsNPgRt36tSYMidGzZiJF6mw==}
+ '@rollup/rollup-freebsd-arm64@4.25.0':
+ resolution: {integrity: sha512-xpEIXhiP27EAylEpreCozozsxWQ2TJbOLSivGfXhU4G1TBVEYtUPi2pOZBnvGXHyOdLAUUhPnJzH3ah5cqF01g==}
cpu: [arm64]
os: [freebsd]
- '@rollup/rollup-freebsd-x64@4.24.4':
- resolution: {integrity: sha512-L7VVVW9FCnTTp4i7KrmHeDsDvjB4++KOBENYtNYAiYl96jeBThFfhP6HVxL74v4SiZEVDH/1ILscR5U9S4ms4g==}
+ '@rollup/rollup-freebsd-x64@4.25.0':
+ resolution: {integrity: sha512-sC5FsmZGlJv5dOcURrsnIK7ngc3Kirnx3as2XU9uER+zjfyqIjdcMVgzy4cOawhsssqzoAX19qmxgJ8a14Qrqw==}
cpu: [x64]
os: [freebsd]
- '@rollup/rollup-linux-arm-gnueabihf@4.24.4':
- resolution: {integrity: sha512-10ICosOwYChROdQoQo589N5idQIisxjaFE/PAnX2i0Zr84mY0k9zul1ArH0rnJ/fpgiqfu13TFZR5A5YJLOYZA==}
+ '@rollup/rollup-linux-arm-gnueabihf@4.25.0':
+ resolution: {integrity: sha512-uD/dbLSs1BEPzg564TpRAQ/YvTnCds2XxyOndAO8nJhaQcqQGFgv/DAVko/ZHap3boCvxnzYMa3mTkV/B/3SWA==}
cpu: [arm]
os: [linux]
- '@rollup/rollup-linux-arm-musleabihf@4.24.4':
- resolution: {integrity: sha512-ySAfWs69LYC7QhRDZNKqNhz2UKN8LDfbKSMAEtoEI0jitwfAG2iZwVqGACJT+kfYvvz3/JgsLlcBP+WWoKCLcw==}
+ '@rollup/rollup-linux-arm-musleabihf@4.25.0':
+ resolution: {integrity: sha512-ZVt/XkrDlQWegDWrwyC3l0OfAF7yeJUF4fq5RMS07YM72BlSfn2fQQ6lPyBNjt+YbczMguPiJoCfaQC2dnflpQ==}
cpu: [arm]
os: [linux]
- '@rollup/rollup-linux-arm64-gnu@4.24.4':
- resolution: {integrity: sha512-uHYJ0HNOI6pGEeZ/5mgm5arNVTI0nLlmrbdph+pGXpC9tFHFDQmDMOEqkmUObRfosJqpU8RliYoGz06qSdtcjg==}
+ '@rollup/rollup-linux-arm64-gnu@4.25.0':
+ resolution: {integrity: sha512-qboZ+T0gHAW2kkSDPHxu7quaFaaBlynODXpBVnPxUgvWYaE84xgCKAPEYE+fSMd3Zv5PyFZR+L0tCdYCMAtG0A==}
cpu: [arm64]
os: [linux]
- '@rollup/rollup-linux-arm64-musl@4.24.4':
- resolution: {integrity: sha512-38yiWLemQf7aLHDgTg85fh3hW9stJ0Muk7+s6tIkSUOMmi4Xbv5pH/5Bofnsb6spIwD5FJiR+jg71f0CH5OzoA==}
+ '@rollup/rollup-linux-arm64-musl@4.25.0':
+ resolution: {integrity: sha512-ndWTSEmAaKr88dBuogGH2NZaxe7u2rDoArsejNslugHZ+r44NfWiwjzizVS1nUOHo+n1Z6qV3X60rqE/HlISgw==}
cpu: [arm64]
os: [linux]
- '@rollup/rollup-linux-powerpc64le-gnu@4.24.4':
- resolution: {integrity: sha512-q73XUPnkwt9ZNF2xRS4fvneSuaHw2BXuV5rI4cw0fWYVIWIBeDZX7c7FWhFQPNTnE24172K30I+dViWRVD9TwA==}
+ '@rollup/rollup-linux-powerpc64le-gnu@4.25.0':
+ resolution: {integrity: sha512-BVSQvVa2v5hKwJSy6X7W1fjDex6yZnNKy3Kx1JGimccHft6HV0THTwNtC2zawtNXKUu+S5CjXslilYdKBAadzA==}
cpu: [ppc64]
os: [linux]
- '@rollup/rollup-linux-riscv64-gnu@4.24.4':
- resolution: {integrity: sha512-Aie/TbmQi6UXokJqDZdmTJuZBCU3QBDA8oTKRGtd4ABi/nHgXICulfg1KI6n9/koDsiDbvHAiQO3YAUNa/7BCw==}
+ '@rollup/rollup-linux-riscv64-gnu@4.25.0':
+ resolution: {integrity: sha512-G4hTREQrIdeV0PE2JruzI+vXdRnaK1pg64hemHq2v5fhv8C7WjVaeXc9P5i4Q5UC06d/L+zA0mszYIKl+wY8oA==}
cpu: [riscv64]
os: [linux]
- '@rollup/rollup-linux-s390x-gnu@4.24.4':
- resolution: {integrity: sha512-P8MPErVO/y8ohWSP9JY7lLQ8+YMHfTI4bAdtCi3pC2hTeqFJco2jYspzOzTUB8hwUWIIu1xwOrJE11nP+0JFAQ==}
+ '@rollup/rollup-linux-s390x-gnu@4.25.0':
+ resolution: {integrity: sha512-9T/w0kQ+upxdkFL9zPVB6zy9vWW1deA3g8IauJxojN4bnz5FwSsUAD034KpXIVX5j5p/rn6XqumBMxfRkcHapQ==}
cpu: [s390x]
os: [linux]
- '@rollup/rollup-linux-x64-gnu@4.24.4':
- resolution: {integrity: sha512-K03TljaaoPK5FOyNMZAAEmhlyO49LaE4qCsr0lYHUKyb6QacTNF9pnfPpXnFlFD3TXuFbFbz7tJ51FujUXkXYA==}
+ '@rollup/rollup-linux-x64-gnu@4.25.0':
+ resolution: {integrity: sha512-ThcnU0EcMDn+J4B9LD++OgBYxZusuA7iemIIiz5yzEcFg04VZFzdFjuwPdlURmYPZw+fgVrFzj4CA64jSTG4Ig==}
cpu: [x64]
os: [linux]
- '@rollup/rollup-linux-x64-musl@4.24.4':
- resolution: {integrity: sha512-VJYl4xSl/wqG2D5xTYncVWW+26ICV4wubwN9Gs5NrqhJtayikwCXzPL8GDsLnaLU3WwhQ8W02IinYSFJfyo34Q==}
+ '@rollup/rollup-linux-x64-musl@4.25.0':
+ resolution: {integrity: sha512-zx71aY2oQxGxAT1JShfhNG79PnjYhMC6voAjzpu/xmMjDnKNf6Nl/xv7YaB/9SIa9jDYf8RBPWEnjcdlhlv1rQ==}
cpu: [x64]
os: [linux]
- '@rollup/rollup-win32-arm64-msvc@4.24.4':
- resolution: {integrity: sha512-ku2GvtPwQfCqoPFIJCqZ8o7bJcj+Y54cZSr43hHca6jLwAiCbZdBUOrqE6y29QFajNAzzpIOwsckaTFmN6/8TA==}
+ '@rollup/rollup-win32-arm64-msvc@4.25.0':
+ resolution: {integrity: sha512-JT8tcjNocMs4CylWY/CxVLnv8e1lE7ff1fi6kbGocWwxDq9pj30IJ28Peb+Y8yiPNSF28oad42ApJB8oUkwGww==}
cpu: [arm64]
os: [win32]
- '@rollup/rollup-win32-ia32-msvc@4.24.4':
- resolution: {integrity: sha512-V3nCe+eTt/W6UYNr/wGvO1fLpHUrnlirlypZfKCT1fG6hWfqhPgQV/K/mRBXBpxc0eKLIF18pIOFVPh0mqHjlg==}
+ '@rollup/rollup-win32-ia32-msvc@4.25.0':
+ resolution: {integrity: sha512-dRLjLsO3dNOfSN6tjyVlG+Msm4IiZnGkuZ7G5NmpzwF9oOc582FZG05+UdfTbz5Jd4buK/wMb6UeHFhG18+OEg==}
cpu: [ia32]
os: [win32]
- '@rollup/rollup-win32-x64-msvc@4.24.4':
- resolution: {integrity: sha512-LTw1Dfd0mBIEqUVCxbvTE/LLo+9ZxVC9k99v1v4ahg9Aak6FpqOfNu5kRkeTAn0wphoC4JU7No1/rL+bBCEwhg==}
+ '@rollup/rollup-win32-x64-msvc@4.25.0':
+ resolution: {integrity: sha512-/RqrIFtLB926frMhZD0a5oDa4eFIbyNEwLLloMTEjmqfwZWXywwVVOVmwTsuyhC9HKkVEZcOOi+KV4U9wmOdlg==}
cpu: [x64]
os: [win32]
@@ -950,71 +967,71 @@ packages:
svelte: ^5.0.0-next.96 || ^5.0.0
vite: ^5.0.0
- '@tauri-apps/api@2.0.3':
- resolution: {integrity: sha512-840qk6n8rbXBXMA5/aAgTYsg5JAubKO0nXw5wf7IzGnUuYKGbB4oFBIZtXOIWy+E0kNTDI3qhq5iqsoMJfwp8g==}
+ '@tauri-apps/api@2.1.1':
+ resolution: {integrity: sha512-fzUfFFKo4lknXGJq8qrCidkUcKcH2UHhfaaCNt4GzgzGaW2iS26uFOg4tS3H4P8D6ZEeUxtiD5z0nwFF0UN30A==}
- '@tauri-apps/cli-darwin-arm64@2.0.4':
- resolution: {integrity: sha512-siH7rOHobb16rPbc11k64p1mxIpiRCkWmzs2qmL5IX21Gx9K5onI3Tk67Oqpf2uNupbYzItrOttaDT4NHFC7tw==}
+ '@tauri-apps/cli-darwin-arm64@2.1.0':
+ resolution: {integrity: sha512-ESc6J6CE8hl1yKH2vJ+ALF+thq4Be+DM1mvmTyUCQObvezNCNhzfS6abIUd3ou4x5RGH51ouiANeT3wekU6dCw==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [darwin]
- '@tauri-apps/cli-darwin-x64@2.0.4':
- resolution: {integrity: sha512-zIccfbCoZMfmUpnk6PFCV0keFyfVj1A9XV3Oiiitj/dkTZ9CQvzjhX3XC0XcK4rsTWegfr2PjSrK06aiPAROAw==}
+ '@tauri-apps/cli-darwin-x64@2.1.0':
+ resolution: {integrity: sha512-TasHS442DFs8cSH2eUQzuDBXUST4ECjCd0yyP+zZzvAruiB0Bg+c8A+I/EnqCvBQ2G2yvWLYG8q/LI7c87A5UA==}
engines: {node: '>= 10'}
cpu: [x64]
os: [darwin]
- '@tauri-apps/cli-linux-arm-gnueabihf@2.0.4':
- resolution: {integrity: sha512-fgQqJzefOGWCBNg4yrVA82Rg4s1XQr5K0dc2rCxBhJfa696e8dQ1LDrnWq/AiO5r+uHfVaoQTIUvxxpFicYRSA==}
+ '@tauri-apps/cli-linux-arm-gnueabihf@2.1.0':
+ resolution: {integrity: sha512-aP7ZBGNL4ny07Cbb6kKpUOSrmhcIK2KhjviTzYlh+pPhAptxnC78xQGD3zKQkTi2WliJLPmBYbOHWWQa57lQ9w==}
engines: {node: '>= 10'}
cpu: [arm]
os: [linux]
- '@tauri-apps/cli-linux-arm64-gnu@2.0.4':
- resolution: {integrity: sha512-u8wbt5tPA9pI6j+d7jGrfOz9UVCiTp+IYzKNiIqlrDsAjqAUFaNXYHKqOUboeFWEmI4zoCWj6LgpS2OJTQ5FKg==}
+ '@tauri-apps/cli-linux-arm64-gnu@2.1.0':
+ resolution: {integrity: sha512-ZTdgD5gLeMCzndMT2f358EkoYkZ5T+Qy6zPzU+l5vv5M7dHVN9ZmblNAYYXmoOuw7y+BY4X/rZvHV9pcGrcanQ==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
- '@tauri-apps/cli-linux-arm64-musl@2.0.4':
- resolution: {integrity: sha512-hntF1V8e3V1hlrESm93PsghDhf3lA5pbvFrRfYxU1c+fVD/jRXGVw8BH3O1lW8MWwhEg1YdhKk01oAgsuHLuig==}
+ '@tauri-apps/cli-linux-arm64-musl@2.1.0':
+ resolution: {integrity: sha512-NzwqjUCilhnhJzusz3d/0i0F1GFrwCQbkwR6yAHUxItESbsGYkZRJk0yMEWkg3PzFnyK4cWTlQJMEU52TjhEzA==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
- '@tauri-apps/cli-linux-x64-gnu@2.0.4':
- resolution: {integrity: sha512-Iq1GGJb+oT1T0ZV8izrgf0cBtlzPCJaWcNueRbf1ZXquMf+FSTyQv+/Lo8rq5T6buOIJOH7cAOTuEWWqiCZteg==}
+ '@tauri-apps/cli-linux-x64-gnu@2.1.0':
+ resolution: {integrity: sha512-TyiIpMEtZxNOQmuFyfJwaaYbg3movSthpBJLIdPlKxSAB2BW0VWLY3/ZfIxm/G2YGHyREkjJvimzYE0i37PnMA==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
- '@tauri-apps/cli-linux-x64-musl@2.0.4':
- resolution: {integrity: sha512-9NTk6Pf0bSwXqCBdAA+PDYts9HeHebZzIo8mbRzRyUbER6QngG5HZb9Ka36Z1QWtJjdRy6uxSb4zb/9NuTeHfA==}
+ '@tauri-apps/cli-linux-x64-musl@2.1.0':
+ resolution: {integrity: sha512-/dQd0TlaxBdJACrR72DhynWftzHDaX32eBtS5WBrNJ+nnNb+znM3gON6nJ9tSE9jgDa6n1v2BkI/oIDtypfUXw==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
- '@tauri-apps/cli-win32-arm64-msvc@2.0.4':
- resolution: {integrity: sha512-OF2e9oxiBFR8A8wVMOhUx9QGN/I1ZkquWC7gVQBnA56nx9PabJlDT08QBy5UD8USqZFVznnfNr2ehlheQahb3g==}
+ '@tauri-apps/cli-win32-arm64-msvc@2.1.0':
+ resolution: {integrity: sha512-NdQJO7SmdYqOcE+JPU7bwg7+odfZMWO6g8xF9SXYCMdUzvM2Gv/AQfikNXz5yS7ralRhNFuW32i5dcHlxh4pDg==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [win32]
- '@tauri-apps/cli-win32-ia32-msvc@2.0.4':
- resolution: {integrity: sha512-T+hCKB3rFP6q0saHHtR02hm6wr1ZPJ0Mkii3oRTxjPG6BBXoVzHNCYzvdgEGJPTA2sFuAQtJH764NRtNlDMifw==}
+ '@tauri-apps/cli-win32-ia32-msvc@2.1.0':
+ resolution: {integrity: sha512-f5h8gKT/cB8s1ticFRUpNmHqkmaLutT62oFDB7N//2YTXnxst7EpMIn1w+QimxTvTk2gcx6EcW6bEk/y2hZGzg==}
engines: {node: '>= 10'}
cpu: [ia32]
os: [win32]
- '@tauri-apps/cli-win32-x64-msvc@2.0.4':
- resolution: {integrity: sha512-GVaiI3KWRFLomjJmApHqihhYlkJ+7FqhumhVfBO6Z2tWzZjQyVQgTdNp0kYEuW2WoAYEj0dKY6qd4YM33xYcUA==}
+ '@tauri-apps/cli-win32-x64-msvc@2.1.0':
+ resolution: {integrity: sha512-P/+LrdSSb5Xbho1LRP4haBjFHdyPdjWvGgeopL96OVtrFpYnfC+RctB45z2V2XxqFk3HweDDxk266btjttfjGw==}
engines: {node: '>= 10'}
cpu: [x64]
os: [win32]
- '@tauri-apps/cli@2.0.4':
- resolution: {integrity: sha512-Hl9eFXz+O366+6su9PfaSzu2EJdFe1p8K8ghkWmi40dz8VmSE7vsMTaOStD0I71ckSOkh2ICDX7FQTBgjlpjWw==}
+ '@tauri-apps/cli@2.1.0':
+ resolution: {integrity: sha512-K2VhcKqBhAeS5pNOVdnR/xQRU6jwpgmkSL2ejHXcl0m+kaTggT0WRDQnFtPq6NljA7aE03cvwsbCAoFG7vtkJw==}
engines: {node: '>= 10'}
hasBin: true
@@ -1039,8 +1056,8 @@ packages:
'@types/unist@2.0.11':
resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==}
- '@typescript-eslint/eslint-plugin@8.13.0':
- resolution: {integrity: sha512-nQtBLiZYMUPkclSeC3id+x4uVd1SGtHuElTxL++SfP47jR0zfkZBJHc+gL4qPsgTuypz0k8Y2GheaDYn6Gy3rg==}
+ '@typescript-eslint/eslint-plugin@8.14.0':
+ resolution: {integrity: sha512-tqp8H7UWFaZj0yNO6bycd5YjMwxa6wIHOLZvWPkidwbgLCsBMetQoGj7DPuAlWa2yGO3H48xmPwjhsSPPCGU5w==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
'@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0
@@ -1050,8 +1067,8 @@ packages:
typescript:
optional: true
- '@typescript-eslint/parser@8.13.0':
- resolution: {integrity: sha512-w0xp+xGg8u/nONcGw1UXAr6cjCPU1w0XVyBs6Zqaj5eLmxkKQAByTdV/uGgNN5tVvN/kKpoQlP2cL7R+ajZZIQ==}
+ '@typescript-eslint/parser@8.14.0':
+ resolution: {integrity: sha512-2p82Yn9juUJq0XynBXtFCyrBDb6/dJombnz6vbo6mgQEtWHfvHbQuEa9kAOVIt1c9YFwi7H6WxtPj1kg+80+RA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
@@ -1060,12 +1077,12 @@ packages:
typescript:
optional: true
- '@typescript-eslint/scope-manager@8.13.0':
- resolution: {integrity: sha512-XsGWww0odcUT0gJoBZ1DeulY1+jkaHUciUq4jKNv4cpInbvvrtDoyBH9rE/n2V29wQJPk8iCH1wipra9BhmiMA==}
+ '@typescript-eslint/scope-manager@8.14.0':
+ resolution: {integrity: sha512-aBbBrnW9ARIDn92Zbo7rguLnqQ/pOrUguVpbUwzOhkFg2npFDwTgPGqFqE0H5feXcOoJOfX3SxlJaKEVtq54dw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@typescript-eslint/type-utils@8.13.0':
- resolution: {integrity: sha512-Rqnn6xXTR316fP4D2pohZenJnp+NwQ1mo7/JM+J1LWZENSLkJI8ID8QNtlvFeb0HnFSK94D6q0cnMX6SbE5/vA==}
+ '@typescript-eslint/type-utils@8.14.0':
+ resolution: {integrity: sha512-Xcz9qOtZuGusVOH5Uk07NGs39wrKkf3AxlkK79RBK6aJC1l03CobXjJbwBPSidetAOV+5rEVuiT1VSBUOAsanQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '*'
@@ -1073,12 +1090,12 @@ packages:
typescript:
optional: true
- '@typescript-eslint/types@8.13.0':
- resolution: {integrity: sha512-4cyFErJetFLckcThRUFdReWJjVsPCqyBlJTi6IDEpc1GWCIIZRFxVppjWLIMcQhNGhdWJJRYFHpHoDWvMlDzng==}
+ '@typescript-eslint/types@8.14.0':
+ resolution: {integrity: sha512-yjeB9fnO/opvLJFAsPNYlKPnEM8+z4og09Pk504dkqonT02AyL5Z9SSqlE0XqezS93v6CXn49VHvB2G7XSsl0g==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@typescript-eslint/typescript-estree@8.13.0':
- resolution: {integrity: sha512-v7SCIGmVsRK2Cy/LTLGN22uea6SaUIlpBcO/gnMGT/7zPtxp90bphcGf4fyrCQl3ZtiBKqVTG32hb668oIYy1g==}
+ '@typescript-eslint/typescript-estree@8.14.0':
+ resolution: {integrity: sha512-OPXPLYKGZi9XS/49rdaCbR5j/S14HazviBlUQFvSKz3npr3NikF+mrgK7CFVur6XEt95DZp/cmke9d5i3vtVnQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '*'
@@ -1086,99 +1103,128 @@ packages:
typescript:
optional: true
- '@typescript-eslint/utils@8.13.0':
- resolution: {integrity: sha512-A1EeYOND6Uv250nybnLZapeXpYMl8tkzYUxqmoKAWnI4sei3ihf2XdZVd+vVOmHGcp3t+P7yRrNsyyiXTvShFQ==}
+ '@typescript-eslint/utils@8.14.0':
+ resolution: {integrity: sha512-OGqj6uB8THhrHj0Fk27DcHPojW7zKwKkPmHXHvQ58pLYp4hy8CSUdTKykKeh+5vFqTTVmjz0zCOOPKRovdsgHA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
- '@typescript-eslint/visitor-keys@8.13.0':
- resolution: {integrity: sha512-7N/+lztJqH4Mrf0lb10R/CbI1EaAMMGyF5y0oJvFoAhafwgiRA7TXyd8TFn8FC8k5y2dTsYogg238qavRGNnlw==}
+ '@typescript-eslint/visitor-keys@8.14.0':
+ resolution: {integrity: sha512-vG0XZo8AdTH9OE6VFRwAZldNc7qtJ/6NLGWak+BtENuEUXGZgFpihILPiBvKXvJ2nFu27XNGC6rKiwuaoMbYzQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@unocss/astro@0.63.1':
- resolution: {integrity: sha512-TJISaUIMNPQH0MY0R7f14DO3HF4Z5H3seZazojhbLCOA7gDFV0WpSP84sdx9PsP1fpyYuNsxW9xrwA13bDaJYw==}
+ '@unocss/astro@0.64.0':
+ resolution: {integrity: sha512-4Ijf3cQblSjdC3XV4SvzkEj17z6gNsuMGy7M+TvNN4cZhGLWQCIChtHR525ESGxJ4kdZ6FoIUoxmLdWHMOpX4Q==}
peerDependencies:
vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0
peerDependenciesMeta:
vite:
optional: true
- '@unocss/cli@0.63.1':
- resolution: {integrity: sha512-DH9JZBL/CecAr7HWXinUSXEnDIVcOkHn4GYuaL4Zn33ZIV9ni20/lHhxJwbnEgv1eCIa3XTAMLCOU9uhpdTKCQ==}
+ '@unocss/cli@0.64.0':
+ resolution: {integrity: sha512-xfY/qm7vr/4Qaf+CcQHuBJSg5ApZBvvGVD1zwyGFgfhfOFYR1hI3DS2zl75zav6btEwwXsjY7AUv6uYGF4M7dA==}
engines: {node: '>=14'}
hasBin: true
- '@unocss/config@0.63.1':
- resolution: {integrity: sha512-9n1VDQ3xMpRIdzqvyUhWHA2ur5CWH0Oezw6Rbg/75bk86pD3yMrD8JkP4wK9wgq1pNNEpygmE7jFbDe29r8vVw==}
+ '@unocss/config@0.64.0':
+ resolution: {integrity: sha512-L97x4vEk7jNG5ptZY5Xp0xgEk//tbMpQVm2BzfyL7w+Hg8X3AV4YjFL6hysHvpYiTdUCVaZg+S0s3b7wuj8Mqw==}
engines: {node: '>=14'}
- '@unocss/core@0.63.1':
- resolution: {integrity: sha512-scg53c6vw8cRsX4DbUO+MlTXicA9GWztm6PW0lsisJxXrdbQQCd+J+PIhrxLUExxeNqxTKsL3Msy9bwJU5uUsQ==}
+ '@unocss/core@0.64.0':
+ resolution: {integrity: sha512-Qb8wWPYNlTagCdJGzULew+e3NMM8Bd7fr38lDLgrMj+njop+wzkSe1ZZOyMMH9yHSq/Rznn5eCjnyzyHwxGslQ==}
- '@unocss/extractor-arbitrary-variants@0.63.1':
- resolution: {integrity: sha512-yqHDUgFCR4R2HMuD2k4dVkkdT2uOa/gUDIY6xoseOx1r98Fxlyvdr0UnLOaWsSSzpSGm7SS7XtafGa24IgJRUQ==}
+ '@unocss/extractor-arbitrary-variants@0.64.0':
+ resolution: {integrity: sha512-oVB8l8zM+x0MQJTkraRcsrfJnWEwyPVgMgtzmNUm//HqV+xTrjZCNtOqHFNIZdj/+w0gkErGQLxzRwyPjlHq4g==}
- '@unocss/extractor-svelte@0.63.1':
- resolution: {integrity: sha512-kqf+3ghZIc/hBT3W6nrvWEBMbAleJIGI4A1GW+K+dovP68T4gFxp7D077VtuC69dZp1foV4HM17QHmphZq1Oiw==}
+ '@unocss/extractor-svelte@0.64.0':
+ resolution: {integrity: sha512-vg2qjZtEYzsKMB1w0lzxA2UDUikjdCSRLD8TR95l9+8kPnD/aWjRCyjzB4ALTxmVKPI1dqB3ctjQq/0Msk38Iw==}
- '@unocss/inspector@0.63.1':
- resolution: {integrity: sha512-RO5DWZcnQ964ppaWskECSsx2b6I+dAH6A4YQIZEavG0ykHWwa//TquaY2HJH6OJoI7hKEnrFIFtlwzV5nWoYMw==}
+ '@unocss/inspector@0.64.0':
+ resolution: {integrity: sha512-aFEfxEuPOpbPNH3j1CLLnN7ZyZkc64XoxZbz7RbG20Wy5oJxonOnlu+Wikz9SfGvIyF16MVAMCkHu12WFRRC+g==}
- '@unocss/postcss@0.63.1':
- resolution: {integrity: sha512-ZHBy2swGg2zifQ6YEfctagIi+jZrLW/uBHqIkRIQYZyBQjw1GSqx+OSrq81LYIREBSQG7G90Nn1CXu8muttgzg==}
+ '@unocss/postcss@0.64.0':
+ resolution: {integrity: sha512-OMDhAUDEzbb7i+fcYEYNxwdWJLSYklMrFGSC60ADK96UPX/B9S0z1pBz7N34DRPPIzg6shO6NQfDHOaxLelAeg==}
engines: {node: '>=14'}
peerDependencies:
postcss: ^8.4.21
- '@unocss/preset-attributify@0.63.1':
- resolution: {integrity: sha512-K6IaQ6cUQNWDp6JmAJ8dh17c/iPc9Ssgz6C9qayWwIJCZA3023EXfoXI0a0csnJyRHJALIw2sSZAvlmRudln1A==}
+ '@unocss/preset-attributify@0.64.0':
+ resolution: {integrity: sha512-3T1mktq5rAQxHXtdLkjjj1UOjPwy9iGbVUChvxyaGV5oOsj1mvfe1oetxz8HqAVQak8MtvsJzFzvuuQQln/6OA==}
- '@unocss/preset-icons@0.63.1':
- resolution: {integrity: sha512-ucCLrlQ6DsFzqSu/Cmqo3q/F/ybV+2P/TQflHS9Oo8wtOETxTT0aPEEEd/sj1SPTU9uUbLEeS6TaRD6MrwLcrw==}
+ '@unocss/preset-icons@0.64.0':
+ resolution: {integrity: sha512-jhozA4r583agZZpKttdootaWfvQ29lY/kHxNU1Ah2xeRQcVXXEh7M3cG0bo9HSIX9/BgXSk5rWQlqSPIqFl4Lw==}
- '@unocss/preset-mini@0.63.1':
- resolution: {integrity: sha512-8NW3hK5fp+glBI2v1/3utp+Gv0yXoVTX66531BDDXxivsCJBNRTh40TP8hXSbtDne615UGrykIjyadsUHCRK5Q==}
+ '@unocss/preset-mini@0.64.0':
+ resolution: {integrity: sha512-bc7zanalVQUrETJ06eyS7y/lhceRlY8kBG/lRCV/dYmKl4Ho/s57LrpZH0G63OcO6IfWIjwoZHVC8/RHAqnYvQ==}
- '@unocss/preset-tagify@0.63.1':
- resolution: {integrity: sha512-GlhWsdD3pYvtMePVNWMOjkQGSp4XKJcfS65spUOZv03h6xrKuCCnJNsawYqbnpTzUOAL29pG/X8Quse00weRjQ==}
+ '@unocss/preset-tagify@0.64.0':
+ resolution: {integrity: sha512-WlRQXYgtVzJpVlZ+itXhrQyvMj6XW1InNIfvAHMorr5BGvMGETLRnuWwYYhGg2YDF/g+/EucU5PQmk9UkurBzg==}
- '@unocss/preset-typography@0.63.1':
- resolution: {integrity: sha512-NfC0qQmCeA68F0JeVMKNpCqZhh0X3+1ouEjlRrFGzmIZt5lxWuTFgGroyp5rXv++iubm3CMoW1bMnp8CsyUUYw==}
+ '@unocss/preset-typography@0.64.0':
+ resolution: {integrity: sha512-hMKxhHTRUjvwB0gcdWOh6zWWolH9pvIvgB4p2GaFT1vKyFD0wkTZ/7S/Q3OMKJyevSKHyIgKd+PhNGKTx5FuQQ==}
- '@unocss/preset-uno@0.63.1':
- resolution: {integrity: sha512-L7ptI/kI48+miTv5y7vNE1igw8/ThkWPFICMuhQksQS4QuuysuzO/IjfD5QwPy8Awr9HgSYZLqf5Jaax63HJ5w==}
+ '@unocss/preset-uno@0.64.0':
+ resolution: {integrity: sha512-gUmuL8anty551r/Q2XU5wc0aNZ+te4yydnamXHSUv3EkX6PCphOaiWsQ5f95fj26G8EYH9fLBvxqXurFBPM7og==}
- '@unocss/preset-web-fonts@0.63.1':
- resolution: {integrity: sha512-55DkFZ2/hLYp5cDvxQWElnPgnKj9AjoC/hTgC6JlKjzaafaqKh5Bt45rDKOPiXe2cPMN7A9gURgBgFyARX4nBw==}
+ '@unocss/preset-web-fonts@0.64.0':
+ resolution: {integrity: sha512-qraIhS0tCFHvdPQnzGTfi/dggwyboWPU8UQn8oLMsmPKogNPsYQfjrtTZs8X6F1KNaPV18c6saaWYvVZ8tXPoA==}
- '@unocss/preset-wind@0.63.1':
- resolution: {integrity: sha512-L/Pyz55NC55K2+zJX9b3cC23tMZzh/a2jUUfoiJAHudsSPjAvP/PJ31Nc+27FFMbqZXhGQ50CBq8geq51O4PKQ==}
+ '@unocss/preset-wind@0.64.0':
+ resolution: {integrity: sha512-cJbZI4etFrIIQoC1VhRqyEZU5fUaYqOH3uIt5lM3osxBdAvHds7SPjLRbdR612US7JbuPeFhMMRnA1EYoo39sQ==}
- '@unocss/reset@0.63.1':
- resolution: {integrity: sha512-gjSF0LeWwkNCYZ4Z/AnQXGCIOPUGL5Ll1IIDfwnKZeFGCj9QmcV1hki4xf/7N8mNHhfP0nYdJpdAfiznhKdkwQ==}
+ '@unocss/reset@0.64.0':
+ resolution: {integrity: sha512-75SiDtRX/mtg/7GWeoLfDfdWF4z59zF1XesL46FNd2hDZL36a+SZHIKB/J+PPzLyX9irqm3mAETS2PNfynuJpA==}
- '@unocss/rule-utils@0.63.1':
- resolution: {integrity: sha512-z7WQ8lKq7p6sS/6Yl1pStcA2WyxxD7H1i86iXa2orWayW8KtrIJbdCXFYEsj3sOkMKLqpG5w65P+103dO2jUhQ==}
+ '@unocss/rule-utils@0.64.0':
+ resolution: {integrity: sha512-R5b/uspq6XsmpEqhxSzOOePHsS+pdxya+0pkQw7m6thsUxNDL7kVDpBiz2iNX5lnwagvhyhUWYu85a8XmZ8ymw==}
engines: {node: '>=14'}
- '@unocss/transformer-attributify-jsx@0.63.1':
- resolution: {integrity: sha512-c92pv9x6AZ3Zfw5ledP6rzTudWUvVY5HrVSaG3GxO2ofyCFEdHyJ1qLTK7omwnTJZ3rMJ3QplIrPJka1Ftasuw==}
+ '@unocss/transformer-attributify-jsx@0.64.0':
+ resolution: {integrity: sha512-/kG7NFmqMCftK5DJUgMUbe9SWRJt20Z55o36aaCkBcEsrTSYBmWYDyIJPZa3TxsjO8H1qDekRVu7CgDxwlxMEQ==}
- '@unocss/transformer-compile-class@0.63.1':
- resolution: {integrity: sha512-OV8nQJf+OEIoqHSsFQPjP/ocOxQc2nnMirB+J7D5e32SqU4Zg4GPWag3E+Pcb4InwZ/OUTPPdecKSPNHgT3CTQ==}
+ '@unocss/transformer-compile-class@0.64.0':
+ resolution: {integrity: sha512-p1LZG2AUsD0FrkCSo1JOsWVQ+sEMcgnVCm6XtCgxBraV3nPFeZUyxmj9yEkt0HhfYkMTvdT155c3rDhbwP8AFw==}
- '@unocss/transformer-directives@0.63.1':
- resolution: {integrity: sha512-mWVcQqVXj5OtUzfwc9B2/CRPYVHqkoj+AFfhU8RZ6e1nPgDKtR9JLt0jypTvv/PMo56vPJUTbpBBvXU+vvQwQA==}
+ '@unocss/transformer-directives@0.64.0':
+ resolution: {integrity: sha512-+e2bDEQMEsfq4KZ2R+GQNrEv0bL3E1KbXGPQXUiMGitmZzzagDfIBk9VTP3gNhU+hgTaWtjXlReeap1eSmwKGQ==}
- '@unocss/transformer-variant-group@0.63.1':
- resolution: {integrity: sha512-Awk9FDpvZM8m9YY46MThYYZ81fY6HVs4pOX22xcbw06J2l8z3WyG5iHIzx0f8vCTNwTekDuxD6vV3UlQKoI+0w==}
+ '@unocss/transformer-variant-group@0.64.0':
+ resolution: {integrity: sha512-c4CN+W8ShBhGIma3KHHcBe7CRljRwZ0f5UamRrUIMs28a2jfa1TlPlr/4Ke5b6icr0mwTGajJEUaPanOK0Fp1A==}
- '@unocss/vite@0.63.1':
- resolution: {integrity: sha512-MUi4gtGYPahDeabXfxq25J9YRUksJPLB+xsU2zn7Rb4ai0wBdi6SsZsjjeHhx7RZEXjse9UG3FGZP6Xhe6erUQ==}
+ '@unocss/vite@0.64.0':
+ resolution: {integrity: sha512-QrfXlI8YcIaqQc4WRVrLbCho8eEi5pjs1/C8AwnUHGximEDN6MZNUk0htjo4QZ+50IA2b4RrYdz1N3875bJoFg==}
peerDependencies:
vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0
+ '@vue/compiler-core@3.5.12':
+ resolution: {integrity: sha512-ISyBTRMmMYagUxhcpyEH0hpXRd/KqDU4ymofPgl2XAkY9ZhQ+h0ovEZJIiPop13UmR/54oA2cgMDjgroRelaEw==}
+
+ '@vue/compiler-dom@3.5.12':
+ resolution: {integrity: sha512-9G6PbJ03uwxLHKQ3P42cMTi85lDRvGLB2rSGOiQqtXELat6uI4n8cNz9yjfVHRPIu+MsK6TE418Giruvgptckg==}
+
+ '@vue/compiler-sfc@3.5.12':
+ resolution: {integrity: sha512-2k973OGo2JuAa5+ZlekuQJtitI5CgLMOwgl94BzMCsKZCX/xiqzJYzapl4opFogKHqwJk34vfsaKpfEhd1k5nw==}
+
+ '@vue/compiler-ssr@3.5.12':
+ resolution: {integrity: sha512-eLwc7v6bfGBSM7wZOGPmRavSWzNFF6+PdRhE+VFJhNCgHiF8AM7ccoqcv5kBXA2eWUfigD7byekvf/JsOfKvPA==}
+
+ '@vue/reactivity@3.5.12':
+ resolution: {integrity: sha512-UzaN3Da7xnJXdz4Okb/BGbAaomRHc3RdoWqTzlvd9+WBR5m3J39J1fGcHes7U3za0ruYn/iYy/a1euhMEHvTAg==}
+
+ '@vue/runtime-core@3.5.12':
+ resolution: {integrity: sha512-hrMUYV6tpocr3TL3Ad8DqxOdpDe4zuQY4HPY3X/VRh+L2myQO8MFXPAMarIOSGNu0bFAjh1yBkMPXZBqCk62Uw==}
+
+ '@vue/runtime-dom@3.5.12':
+ resolution: {integrity: sha512-q8VFxR9A2MRfBr6/55Q3umyoN7ya836FzRXajPB6/Vvuv0zOPL+qltd9rIMzG/DbRLAIlREmnLsplEF/kotXKA==}
+
+ '@vue/server-renderer@3.5.12':
+ resolution: {integrity: sha512-I3QoeDDeEPZm8yR28JtY+rk880Oqmj43hreIBVTicisFTx/Dl7JpG72g/X7YF8hnQD3IFhkky5i2bPonwrTVPg==}
+ peerDependencies:
+ vue: 3.5.12
+
+ '@vue/shared@3.5.12':
+ resolution: {integrity: sha512-L2RPSAwUFbgZH20etwrXyVyCBu9OxRSi8T/38QsvnkJyvq2LufW2lDCOzm7t/U9C1mkhJGWYfCuFBCmIuNivrg==}
+
'@zerodevx/svelte-json-view@1.0.11':
resolution: {integrity: sha512-mIjj0H1al/P4FPlbeDoiey93lNEUqBEAe5LIdD5GttZfEYt3awexD2lHwKNfUeY4jHizOJkoWTPN/2iO0GBqpw==}
peerDependencies:
@@ -1350,10 +1396,13 @@ packages:
resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
engines: {node: '>= 8'}
- css-tree@3.0.0:
- resolution: {integrity: sha512-o88DVQ6GzsABn1+6+zo2ct801dBO5OASVyxbbvA2W20ue2puSh/VOuqUj90eUeMSX/xqGqBmOKiRQN7tJOuBXw==}
+ css-tree@3.0.1:
+ resolution: {integrity: sha512-8Fxxv+tGhORlshCdCwnNJytvlvq46sOLSYEx2ZIGurahWvMucSRnyjPA3AmrMq4VPRYbHVpWj5VkiVasrM2H4Q==}
engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0}
+ csstype@3.1.3:
+ resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
+
ctrlc-windows@2.1.0:
resolution: {integrity: sha512-OrX5KI+K+2NMN91QIhYZdW7VDO2YsSdTZW494pA7Nvw/wBdU2hz+MGP006bR978zOTrG6Q8EIeJvLJmLqc6MsQ==}
@@ -1400,6 +1449,10 @@ packages:
emoji-regex@8.0.0:
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
+ entities@4.5.0:
+ resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
+ engines: {node: '>=0.12'}
+
esbuild@0.21.5:
resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==}
engines: {node: '>=12'}
@@ -1513,8 +1566,8 @@ packages:
fault@1.0.4:
resolution: {integrity: sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==}
- fdir@6.3.0:
- resolution: {integrity: sha512-QOnuT+BOtivR77wYvCWHfGt9s4Pz1VIMbD463vegT5MLqNXy8rYFT/lPVEqf/bhYeT6qmqrNHhsX+rWwe3rOCQ==}
+ fdir@6.4.2:
+ resolution: {integrity: sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==}
peerDependencies:
picomatch: ^3 || ^4
peerDependenciesMeta:
@@ -1617,8 +1670,8 @@ packages:
resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
engines: {node: '>=6'}
- importx@0.5.0:
- resolution: {integrity: sha512-qROz3rSOjQYclmEQAajH9RhBuqpAGHM+5CNd9fk+TsF4JKmQsAI1egafW8XZZv8vARCo4nAmmt5d0eI2B8GUsA==}
+ importx@0.4.4:
+ resolution: {integrity: sha512-Lo1pukzAREqrBnnHC+tj+lreMTAvyxtkKsMxLY8H15M/bvLl54p3YuoTI70Tz7Il0AsgSlD7Lrk/FaApRcBL7w==}
imurmurhash@0.1.4:
resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
@@ -1688,10 +1741,18 @@ packages:
isexe@2.0.0:
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
+ jiti@1.21.6:
+ resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==}
+ hasBin: true
+
jiti@2.0.0:
resolution: {integrity: sha512-CJ7e7Abb779OTRv3lomfp7Mns/Sy1+U4pcAx5VbjxCZD5ZM/VJaXPpPjNKjtSvWQy/H86E49REXR34dl1JEz9w==}
hasBin: true
+ jiti@2.0.0-beta.3:
+ resolution: {integrity: sha512-pmfRbVRs/7khFrSAYnSiJ8C0D5GvzkE4Ey2pAvUcJsw1ly/p+7ut27jbJrjY79BpAJQJ4gXYFtK6d1Aub+9baQ==}
+ hasBin: true
+
js-yaml@4.1.0:
resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
hasBin: true
@@ -1762,8 +1823,8 @@ packages:
mdast-util-to-string@2.0.0:
resolution: {integrity: sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==}
- mdn-data@2.10.0:
- resolution: {integrity: sha512-qq7C3EtK3yJXMwz1zAab65pjl+UhohqMOctTgcqjLOWABqmwj+me02LSsCuEUxnst9X1lCBpoE0WArGKgdGDzw==}
+ mdn-data@2.12.1:
+ resolution: {integrity: sha512-rsfnCbOHjqrhWxwt5/wtSLzpoKTzW7OXdT5lLOIH1OTYhWu9rRJveGq0sKvDZODABH7RX+uoR+DYcpFnq4Tf6Q==}
merge2@1.4.1:
resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
@@ -1829,8 +1890,8 @@ packages:
resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
engines: {node: '>=0.10.0'}
- ofetch@1.4.0:
- resolution: {integrity: sha512-MuHgsEhU6zGeX+EMh+8mSMrYTnsqJQQrpM00Q6QHMKNqQ0bKy0B43tk8tL1wg+CnsSTy1kg4Ir2T5Ig6rD+dfQ==}
+ ofetch@1.4.1:
+ resolution: {integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==}
on-exit-leak-free@2.1.2:
resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==}
@@ -1987,8 +2048,8 @@ packages:
resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
- rollup@4.24.4:
- resolution: {integrity: sha512-vGorVWIsWfX3xbcyAS+I047kFKapHYivmkaT63Smj77XwvLSJos6M1xGqZnBPFQFBRZDOcG1QnYEIxAvTr/HjA==}
+ rollup@4.25.0:
+ resolution: {integrity: sha512-uVbClXmR6wvx5R1M3Od4utyLUxrmOcEm3pAtMphn73Apq19PDtHpgZoEvqH2YnnaNUuvKmg2DgRd2Sqv+odyqg==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
@@ -2105,8 +2166,8 @@ packages:
tinyexec@0.3.0:
resolution: {integrity: sha512-tVGE0mVJPGb0chKhqmsoosjsS+qUnJVGJpZgsHYQcGoPlG3B51R3PouqTgEGH2Dc9jjFyOqOpix6ZHNMXp1FZg==}
- tinyglobby@0.2.6:
- resolution: {integrity: sha512-NbBoFBpqfcgd1tCiO8Lkfdk+xrA7mlLR9zgvZcZWQQwU63XAfUePyd6wZBaU93Hqw347lHnwFzttAkemHzzz4g==}
+ tinyglobby@0.2.10:
+ resolution: {integrity: sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==}
engines: {node: '>=12.0.0'}
to-regex-range@5.0.1:
@@ -2145,8 +2206,8 @@ packages:
resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==}
engines: {node: '>=8'}
- typescript-eslint@8.13.0:
- resolution: {integrity: sha512-vIMpDRJrQd70au2G8w34mPps0ezFSPMEX4pXkTzUkrNbRX+36ais2ksGWN0esZL+ZMaFJEneOBHzCgSqle7DHw==}
+ typescript-eslint@8.14.0:
+ resolution: {integrity: sha512-K8fBJHxVL3kxMmwByvz8hNdBJ8a0YqKzKDX6jRlrjMuNXyd5T2V02HIq37+OiWXvUUOXgOOGiSSOh26Mh8pC3w==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '*'
@@ -2162,8 +2223,8 @@ packages:
ufo@1.5.4:
resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==}
- unconfig@0.6.0:
- resolution: {integrity: sha512-4C67J0nIF2QwSXty2kW3zZx1pMZ3iXabylvJWWgHybWVUcMf9pxwsngoQt0gC+AVstRywFqrRBp3qOXJayhpOw==}
+ unconfig@0.5.5:
+ resolution: {integrity: sha512-VQZ5PT9HDX+qag0XdgQi8tJepPhXiR/yVOkn707gJDKo31lGjRilPREiQJ9Z6zd/Ugpv6ZvO5VxVIcatldYcNQ==}
unified@9.2.2:
resolution: {integrity: sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==}
@@ -2171,11 +2232,11 @@ packages:
unist-util-stringify-position@2.0.3:
resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==}
- unocss@0.63.1:
- resolution: {integrity: sha512-fVZOT+RCL43yK9enRVVClgh5RT9av8mE6P665cZH+F17hVqDO56q7J7HUqGh9/+zO+omkhYJwUQX4hTPE8J/9g==}
+ unocss@0.64.0:
+ resolution: {integrity: sha512-wiEFRjGXSogzf/4+KICXjFDgSGloSCV1Ka2Dct/8Z8U+iwRqeVpHGVQcGjBFg9Uh0DH1fSVBbis2aPuIkT0nEA==}
engines: {node: '>=14'}
peerDependencies:
- '@unocss/webpack': 0.63.1
+ '@unocss/webpack': 0.64.0
vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0
peerDependenciesMeta:
'@unocss/webpack':
@@ -2231,6 +2292,19 @@ packages:
vite:
optional: true
+ vue-flow-layout@0.1.1:
+ resolution: {integrity: sha512-JdgRRUVrN0Y2GosA0M68DEbKlXMqJ7FQgsK8CjQD2vxvNSqAU6PZEpi4cfcTVtfM2GVOMjHo7GKKLbXxOBqDqA==}
+ peerDependencies:
+ vue: ^3.4.37
+
+ vue@3.5.12:
+ resolution: {integrity: sha512-CLVZtXtn2ItBIi/zHZ0Sg1Xkb7+PU32bJJ8Bmy7ts3jxXTcbfsEfBivFYYWz1Hur+lalqGAh65Coin0r+HRUfg==}
+ peerDependencies:
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
webidl-conversions@3.0.1:
resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
@@ -2313,6 +2387,19 @@ snapshots:
'@antfu/utils@0.7.10': {}
+ '@babel/helper-string-parser@7.25.9': {}
+
+ '@babel/helper-validator-identifier@7.25.9': {}
+
+ '@babel/parser@7.26.2':
+ dependencies:
+ '@babel/types': 7.26.0
+
+ '@babel/types@7.26.0':
+ dependencies:
+ '@babel/helper-string-parser': 7.25.9
+ '@babel/helper-validator-identifier': 7.25.9
+
'@chainsafe/abort-controller@3.0.1':
dependencies:
event-target-shim: 5.0.1
@@ -2688,93 +2775,93 @@ snapshots:
'@polka/url@1.0.0-next.28': {}
- '@rollup/plugin-node-resolve@15.3.0(rollup@4.24.4)':
+ '@rollup/plugin-node-resolve@15.3.0(rollup@4.25.0)':
dependencies:
- '@rollup/pluginutils': 5.1.2(rollup@4.24.4)
+ '@rollup/pluginutils': 5.1.3(rollup@4.25.0)
'@types/resolve': 1.20.2
deepmerge: 4.3.1
is-module: 1.0.0
resolve: 1.22.8
optionalDependencies:
- rollup: 4.24.4
+ rollup: 4.25.0
- '@rollup/plugin-terser@0.4.4(rollup@4.24.4)':
+ '@rollup/plugin-terser@0.4.4(rollup@4.25.0)':
dependencies:
serialize-javascript: 6.0.2
smob: 1.5.0
terser: 5.34.1
optionalDependencies:
- rollup: 4.24.4
+ rollup: 4.25.0
- '@rollup/plugin-typescript@11.1.6(rollup@4.24.4)(tslib@2.8.1)(typescript@5.6.3)':
+ '@rollup/plugin-typescript@11.1.6(rollup@4.25.0)(tslib@2.8.1)(typescript@5.6.3)':
dependencies:
- '@rollup/pluginutils': 5.1.2(rollup@4.24.4)
+ '@rollup/pluginutils': 5.1.3(rollup@4.25.0)
resolve: 1.22.8
typescript: 5.6.3
optionalDependencies:
- rollup: 4.24.4
+ rollup: 4.25.0
tslib: 2.8.1
- '@rollup/pluginutils@5.1.2(rollup@4.24.4)':
+ '@rollup/pluginutils@5.1.3(rollup@4.25.0)':
dependencies:
'@types/estree': 1.0.6
estree-walker: 2.0.2
- picomatch: 2.3.1
+ picomatch: 4.0.2
optionalDependencies:
- rollup: 4.24.4
+ rollup: 4.25.0
- '@rollup/rollup-android-arm-eabi@4.24.4':
+ '@rollup/rollup-android-arm-eabi@4.25.0':
optional: true
- '@rollup/rollup-android-arm64@4.24.4':
+ '@rollup/rollup-android-arm64@4.25.0':
optional: true
- '@rollup/rollup-darwin-arm64@4.24.4':
+ '@rollup/rollup-darwin-arm64@4.25.0':
optional: true
- '@rollup/rollup-darwin-x64@4.24.4':
+ '@rollup/rollup-darwin-x64@4.25.0':
optional: true
- '@rollup/rollup-freebsd-arm64@4.24.4':
+ '@rollup/rollup-freebsd-arm64@4.25.0':
optional: true
- '@rollup/rollup-freebsd-x64@4.24.4':
+ '@rollup/rollup-freebsd-x64@4.25.0':
optional: true
- '@rollup/rollup-linux-arm-gnueabihf@4.24.4':
+ '@rollup/rollup-linux-arm-gnueabihf@4.25.0':
optional: true
- '@rollup/rollup-linux-arm-musleabihf@4.24.4':
+ '@rollup/rollup-linux-arm-musleabihf@4.25.0':
optional: true
- '@rollup/rollup-linux-arm64-gnu@4.24.4':
+ '@rollup/rollup-linux-arm64-gnu@4.25.0':
optional: true
- '@rollup/rollup-linux-arm64-musl@4.24.4':
+ '@rollup/rollup-linux-arm64-musl@4.25.0':
optional: true
- '@rollup/rollup-linux-powerpc64le-gnu@4.24.4':
+ '@rollup/rollup-linux-powerpc64le-gnu@4.25.0':
optional: true
- '@rollup/rollup-linux-riscv64-gnu@4.24.4':
+ '@rollup/rollup-linux-riscv64-gnu@4.25.0':
optional: true
- '@rollup/rollup-linux-s390x-gnu@4.24.4':
+ '@rollup/rollup-linux-s390x-gnu@4.25.0':
optional: true
- '@rollup/rollup-linux-x64-gnu@4.24.4':
+ '@rollup/rollup-linux-x64-gnu@4.25.0':
optional: true
- '@rollup/rollup-linux-x64-musl@4.24.4':
+ '@rollup/rollup-linux-x64-musl@4.25.0':
optional: true
- '@rollup/rollup-win32-arm64-msvc@4.24.4':
+ '@rollup/rollup-win32-arm64-msvc@4.25.0':
optional: true
- '@rollup/rollup-win32-ia32-msvc@4.24.4':
+ '@rollup/rollup-win32-ia32-msvc@4.25.0':
optional: true
- '@rollup/rollup-win32-x64-msvc@4.24.4':
+ '@rollup/rollup-win32-x64-msvc@4.25.0':
optional: true
'@sveltejs/vite-plugin-svelte-inspector@3.0.1(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.1.9)(vite@5.4.8(terser@5.34.1)))(svelte@5.1.9)(vite@5.4.8(terser@5.34.1))':
@@ -2799,50 +2886,50 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@tauri-apps/api@2.0.3': {}
+ '@tauri-apps/api@2.1.1': {}
- '@tauri-apps/cli-darwin-arm64@2.0.4':
+ '@tauri-apps/cli-darwin-arm64@2.1.0':
optional: true
- '@tauri-apps/cli-darwin-x64@2.0.4':
+ '@tauri-apps/cli-darwin-x64@2.1.0':
optional: true
- '@tauri-apps/cli-linux-arm-gnueabihf@2.0.4':
+ '@tauri-apps/cli-linux-arm-gnueabihf@2.1.0':
optional: true
- '@tauri-apps/cli-linux-arm64-gnu@2.0.4':
+ '@tauri-apps/cli-linux-arm64-gnu@2.1.0':
optional: true
- '@tauri-apps/cli-linux-arm64-musl@2.0.4':
+ '@tauri-apps/cli-linux-arm64-musl@2.1.0':
optional: true
- '@tauri-apps/cli-linux-x64-gnu@2.0.4':
+ '@tauri-apps/cli-linux-x64-gnu@2.1.0':
optional: true
- '@tauri-apps/cli-linux-x64-musl@2.0.4':
+ '@tauri-apps/cli-linux-x64-musl@2.1.0':
optional: true
- '@tauri-apps/cli-win32-arm64-msvc@2.0.4':
+ '@tauri-apps/cli-win32-arm64-msvc@2.1.0':
optional: true
- '@tauri-apps/cli-win32-ia32-msvc@2.0.4':
+ '@tauri-apps/cli-win32-ia32-msvc@2.1.0':
optional: true
- '@tauri-apps/cli-win32-x64-msvc@2.0.4':
+ '@tauri-apps/cli-win32-x64-msvc@2.1.0':
optional: true
- '@tauri-apps/cli@2.0.4':
+ '@tauri-apps/cli@2.1.0':
optionalDependencies:
- '@tauri-apps/cli-darwin-arm64': 2.0.4
- '@tauri-apps/cli-darwin-x64': 2.0.4
- '@tauri-apps/cli-linux-arm-gnueabihf': 2.0.4
- '@tauri-apps/cli-linux-arm64-gnu': 2.0.4
- '@tauri-apps/cli-linux-arm64-musl': 2.0.4
- '@tauri-apps/cli-linux-x64-gnu': 2.0.4
- '@tauri-apps/cli-linux-x64-musl': 2.0.4
- '@tauri-apps/cli-win32-arm64-msvc': 2.0.4
- '@tauri-apps/cli-win32-ia32-msvc': 2.0.4
- '@tauri-apps/cli-win32-x64-msvc': 2.0.4
+ '@tauri-apps/cli-darwin-arm64': 2.1.0
+ '@tauri-apps/cli-darwin-x64': 2.1.0
+ '@tauri-apps/cli-linux-arm-gnueabihf': 2.1.0
+ '@tauri-apps/cli-linux-arm64-gnu': 2.1.0
+ '@tauri-apps/cli-linux-arm64-musl': 2.1.0
+ '@tauri-apps/cli-linux-x64-gnu': 2.1.0
+ '@tauri-apps/cli-linux-x64-musl': 2.1.0
+ '@tauri-apps/cli-win32-arm64-msvc': 2.1.0
+ '@tauri-apps/cli-win32-ia32-msvc': 2.1.0
+ '@tauri-apps/cli-win32-x64-msvc': 2.1.0
'@types/eslint@9.6.1':
dependencies:
@@ -2865,14 +2952,14 @@ snapshots:
'@types/unist@2.0.11': {}
- '@typescript-eslint/eslint-plugin@8.13.0(@typescript-eslint/parser@8.13.0(eslint@9.14.0(jiti@2.0.0))(typescript@5.6.3))(eslint@9.14.0(jiti@2.0.0))(typescript@5.6.3)':
+ '@typescript-eslint/eslint-plugin@8.14.0(@typescript-eslint/parser@8.14.0(eslint@9.14.0(jiti@2.0.0))(typescript@5.6.3))(eslint@9.14.0(jiti@2.0.0))(typescript@5.6.3)':
dependencies:
'@eslint-community/regexpp': 4.12.1
- '@typescript-eslint/parser': 8.13.0(eslint@9.14.0(jiti@2.0.0))(typescript@5.6.3)
- '@typescript-eslint/scope-manager': 8.13.0
- '@typescript-eslint/type-utils': 8.13.0(eslint@9.14.0(jiti@2.0.0))(typescript@5.6.3)
- '@typescript-eslint/utils': 8.13.0(eslint@9.14.0(jiti@2.0.0))(typescript@5.6.3)
- '@typescript-eslint/visitor-keys': 8.13.0
+ '@typescript-eslint/parser': 8.14.0(eslint@9.14.0(jiti@2.0.0))(typescript@5.6.3)
+ '@typescript-eslint/scope-manager': 8.14.0
+ '@typescript-eslint/type-utils': 8.14.0(eslint@9.14.0(jiti@2.0.0))(typescript@5.6.3)
+ '@typescript-eslint/utils': 8.14.0(eslint@9.14.0(jiti@2.0.0))(typescript@5.6.3)
+ '@typescript-eslint/visitor-keys': 8.14.0
eslint: 9.14.0(jiti@2.0.0)
graphemer: 1.4.0
ignore: 5.3.2
@@ -2883,12 +2970,12 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/parser@8.13.0(eslint@9.14.0(jiti@2.0.0))(typescript@5.6.3)':
+ '@typescript-eslint/parser@8.14.0(eslint@9.14.0(jiti@2.0.0))(typescript@5.6.3)':
dependencies:
- '@typescript-eslint/scope-manager': 8.13.0
- '@typescript-eslint/types': 8.13.0
- '@typescript-eslint/typescript-estree': 8.13.0(typescript@5.6.3)
- '@typescript-eslint/visitor-keys': 8.13.0
+ '@typescript-eslint/scope-manager': 8.14.0
+ '@typescript-eslint/types': 8.14.0
+ '@typescript-eslint/typescript-estree': 8.14.0(typescript@5.6.3)
+ '@typescript-eslint/visitor-keys': 8.14.0
debug: 4.3.7(supports-color@8.1.1)
eslint: 9.14.0(jiti@2.0.0)
optionalDependencies:
@@ -2896,15 +2983,15 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/scope-manager@8.13.0':
+ '@typescript-eslint/scope-manager@8.14.0':
dependencies:
- '@typescript-eslint/types': 8.13.0
- '@typescript-eslint/visitor-keys': 8.13.0
+ '@typescript-eslint/types': 8.14.0
+ '@typescript-eslint/visitor-keys': 8.14.0
- '@typescript-eslint/type-utils@8.13.0(eslint@9.14.0(jiti@2.0.0))(typescript@5.6.3)':
+ '@typescript-eslint/type-utils@8.14.0(eslint@9.14.0(jiti@2.0.0))(typescript@5.6.3)':
dependencies:
- '@typescript-eslint/typescript-estree': 8.13.0(typescript@5.6.3)
- '@typescript-eslint/utils': 8.13.0(eslint@9.14.0(jiti@2.0.0))(typescript@5.6.3)
+ '@typescript-eslint/typescript-estree': 8.14.0(typescript@5.6.3)
+ '@typescript-eslint/utils': 8.14.0(eslint@9.14.0(jiti@2.0.0))(typescript@5.6.3)
debug: 4.3.7(supports-color@8.1.1)
ts-api-utils: 1.3.0(typescript@5.6.3)
optionalDependencies:
@@ -2913,12 +3000,12 @@ snapshots:
- eslint
- supports-color
- '@typescript-eslint/types@8.13.0': {}
+ '@typescript-eslint/types@8.14.0': {}
- '@typescript-eslint/typescript-estree@8.13.0(typescript@5.6.3)':
+ '@typescript-eslint/typescript-estree@8.14.0(typescript@5.6.3)':
dependencies:
- '@typescript-eslint/types': 8.13.0
- '@typescript-eslint/visitor-keys': 8.13.0
+ '@typescript-eslint/types': 8.14.0
+ '@typescript-eslint/visitor-keys': 8.14.0
debug: 4.3.7(supports-color@8.1.1)
fast-glob: 3.3.2
is-glob: 4.0.3
@@ -2930,40 +3017,41 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/utils@8.13.0(eslint@9.14.0(jiti@2.0.0))(typescript@5.6.3)':
+ '@typescript-eslint/utils@8.14.0(eslint@9.14.0(jiti@2.0.0))(typescript@5.6.3)':
dependencies:
'@eslint-community/eslint-utils': 4.4.0(eslint@9.14.0(jiti@2.0.0))
- '@typescript-eslint/scope-manager': 8.13.0
- '@typescript-eslint/types': 8.13.0
- '@typescript-eslint/typescript-estree': 8.13.0(typescript@5.6.3)
+ '@typescript-eslint/scope-manager': 8.14.0
+ '@typescript-eslint/types': 8.14.0
+ '@typescript-eslint/typescript-estree': 8.14.0(typescript@5.6.3)
eslint: 9.14.0(jiti@2.0.0)
transitivePeerDependencies:
- supports-color
- typescript
- '@typescript-eslint/visitor-keys@8.13.0':
+ '@typescript-eslint/visitor-keys@8.14.0':
dependencies:
- '@typescript-eslint/types': 8.13.0
+ '@typescript-eslint/types': 8.14.0
eslint-visitor-keys: 3.4.3
- '@unocss/astro@0.63.1(rollup@4.24.4)(vite@5.4.8(terser@5.34.1))':
+ '@unocss/astro@0.64.0(rollup@4.25.0)(vite@5.4.8(terser@5.34.1))(vue@3.5.12(typescript@5.6.3))':
dependencies:
- '@unocss/core': 0.63.1
- '@unocss/reset': 0.63.1
- '@unocss/vite': 0.63.1(rollup@4.24.4)(vite@5.4.8(terser@5.34.1))
+ '@unocss/core': 0.64.0
+ '@unocss/reset': 0.64.0
+ '@unocss/vite': 0.64.0(rollup@4.25.0)(vite@5.4.8(terser@5.34.1))(vue@3.5.12(typescript@5.6.3))
optionalDependencies:
vite: 5.4.8(terser@5.34.1)
transitivePeerDependencies:
- rollup
- supports-color
+ - vue
- '@unocss/cli@0.63.1(rollup@4.24.4)':
+ '@unocss/cli@0.64.0(rollup@4.25.0)':
dependencies:
'@ampproject/remapping': 2.3.0
- '@rollup/pluginutils': 5.1.2(rollup@4.24.4)
- '@unocss/config': 0.63.1
- '@unocss/core': 0.63.1
- '@unocss/preset-uno': 0.63.1
+ '@rollup/pluginutils': 5.1.3(rollup@4.25.0)
+ '@unocss/config': 0.64.0
+ '@unocss/core': 0.64.0
+ '@unocss/preset-uno': 0.64.0
cac: 6.7.14
chokidar: 3.6.0
colorette: 2.0.20
@@ -2971,128 +3059,186 @@ snapshots:
magic-string: 0.30.12
pathe: 1.1.2
perfect-debounce: 1.0.0
- tinyglobby: 0.2.6
+ tinyglobby: 0.2.10
transitivePeerDependencies:
- rollup
- supports-color
- '@unocss/config@0.63.1':
+ '@unocss/config@0.64.0':
dependencies:
- '@unocss/core': 0.63.1
- unconfig: 0.6.0
+ '@unocss/core': 0.64.0
+ unconfig: 0.5.5
transitivePeerDependencies:
- supports-color
- '@unocss/core@0.63.1': {}
+ '@unocss/core@0.64.0': {}
- '@unocss/extractor-arbitrary-variants@0.63.1':
+ '@unocss/extractor-arbitrary-variants@0.64.0':
dependencies:
- '@unocss/core': 0.63.1
+ '@unocss/core': 0.64.0
- '@unocss/extractor-svelte@0.63.1': {}
+ '@unocss/extractor-svelte@0.64.0': {}
- '@unocss/inspector@0.63.1':
+ '@unocss/inspector@0.64.0(vue@3.5.12(typescript@5.6.3))':
dependencies:
- '@unocss/core': 0.63.1
- '@unocss/rule-utils': 0.63.1
+ '@unocss/core': 0.64.0
+ '@unocss/rule-utils': 0.64.0
gzip-size: 6.0.0
sirv: 2.0.4
+ vue-flow-layout: 0.1.1(vue@3.5.12(typescript@5.6.3))
+ transitivePeerDependencies:
+ - vue
- '@unocss/postcss@0.63.1(postcss@8.4.47)':
+ '@unocss/postcss@0.64.0(postcss@8.4.47)':
dependencies:
- '@unocss/config': 0.63.1
- '@unocss/core': 0.63.1
- '@unocss/rule-utils': 0.63.1
- css-tree: 3.0.0
+ '@unocss/config': 0.64.0
+ '@unocss/core': 0.64.0
+ '@unocss/rule-utils': 0.64.0
+ css-tree: 3.0.1
postcss: 8.4.47
- tinyglobby: 0.2.6
+ tinyglobby: 0.2.10
transitivePeerDependencies:
- supports-color
- '@unocss/preset-attributify@0.63.1':
+ '@unocss/preset-attributify@0.64.0':
dependencies:
- '@unocss/core': 0.63.1
+ '@unocss/core': 0.64.0
- '@unocss/preset-icons@0.63.1':
+ '@unocss/preset-icons@0.64.0':
dependencies:
'@iconify/utils': 2.1.33
- '@unocss/core': 0.63.1
- ofetch: 1.4.0
+ '@unocss/core': 0.64.0
+ ofetch: 1.4.1
transitivePeerDependencies:
- supports-color
- '@unocss/preset-mini@0.63.1':
+ '@unocss/preset-mini@0.64.0':
dependencies:
- '@unocss/core': 0.63.1
- '@unocss/extractor-arbitrary-variants': 0.63.1
- '@unocss/rule-utils': 0.63.1
+ '@unocss/core': 0.64.0
+ '@unocss/extractor-arbitrary-variants': 0.64.0
+ '@unocss/rule-utils': 0.64.0
- '@unocss/preset-tagify@0.63.1':
+ '@unocss/preset-tagify@0.64.0':
dependencies:
- '@unocss/core': 0.63.1
+ '@unocss/core': 0.64.0
- '@unocss/preset-typography@0.63.1':
+ '@unocss/preset-typography@0.64.0':
dependencies:
- '@unocss/core': 0.63.1
- '@unocss/preset-mini': 0.63.1
+ '@unocss/core': 0.64.0
+ '@unocss/preset-mini': 0.64.0
- '@unocss/preset-uno@0.63.1':
+ '@unocss/preset-uno@0.64.0':
dependencies:
- '@unocss/core': 0.63.1
- '@unocss/preset-mini': 0.63.1
- '@unocss/preset-wind': 0.63.1
- '@unocss/rule-utils': 0.63.1
+ '@unocss/core': 0.64.0
+ '@unocss/preset-mini': 0.64.0
+ '@unocss/preset-wind': 0.64.0
+ '@unocss/rule-utils': 0.64.0
- '@unocss/preset-web-fonts@0.63.1':
+ '@unocss/preset-web-fonts@0.64.0':
dependencies:
- '@unocss/core': 0.63.1
- ofetch: 1.4.0
+ '@unocss/core': 0.64.0
+ ofetch: 1.4.1
- '@unocss/preset-wind@0.63.1':
+ '@unocss/preset-wind@0.64.0':
dependencies:
- '@unocss/core': 0.63.1
- '@unocss/preset-mini': 0.63.1
- '@unocss/rule-utils': 0.63.1
+ '@unocss/core': 0.64.0
+ '@unocss/preset-mini': 0.64.0
+ '@unocss/rule-utils': 0.64.0
- '@unocss/reset@0.63.1': {}
+ '@unocss/reset@0.64.0': {}
- '@unocss/rule-utils@0.63.1':
+ '@unocss/rule-utils@0.64.0':
dependencies:
- '@unocss/core': 0.63.1
+ '@unocss/core': 0.64.0
magic-string: 0.30.12
- '@unocss/transformer-attributify-jsx@0.63.1':
+ '@unocss/transformer-attributify-jsx@0.64.0':
dependencies:
- '@unocss/core': 0.63.1
+ '@unocss/core': 0.64.0
- '@unocss/transformer-compile-class@0.63.1':
+ '@unocss/transformer-compile-class@0.64.0':
dependencies:
- '@unocss/core': 0.63.1
+ '@unocss/core': 0.64.0
- '@unocss/transformer-directives@0.63.1':
+ '@unocss/transformer-directives@0.64.0':
dependencies:
- '@unocss/core': 0.63.1
- '@unocss/rule-utils': 0.63.1
- css-tree: 3.0.0
+ '@unocss/core': 0.64.0
+ '@unocss/rule-utils': 0.64.0
+ css-tree: 3.0.1
- '@unocss/transformer-variant-group@0.63.1':
+ '@unocss/transformer-variant-group@0.64.0':
dependencies:
- '@unocss/core': 0.63.1
+ '@unocss/core': 0.64.0
- '@unocss/vite@0.63.1(rollup@4.24.4)(vite@5.4.8(terser@5.34.1))':
+ '@unocss/vite@0.64.0(rollup@4.25.0)(vite@5.4.8(terser@5.34.1))(vue@3.5.12(typescript@5.6.3))':
dependencies:
'@ampproject/remapping': 2.3.0
- '@rollup/pluginutils': 5.1.2(rollup@4.24.4)
- '@unocss/config': 0.63.1
- '@unocss/core': 0.63.1
- '@unocss/inspector': 0.63.1
+ '@rollup/pluginutils': 5.1.3(rollup@4.25.0)
+ '@unocss/config': 0.64.0
+ '@unocss/core': 0.64.0
+ '@unocss/inspector': 0.64.0(vue@3.5.12(typescript@5.6.3))
chokidar: 3.6.0
magic-string: 0.30.12
- tinyglobby: 0.2.6
+ tinyglobby: 0.2.10
vite: 5.4.8(terser@5.34.1)
transitivePeerDependencies:
- rollup
- supports-color
+ - vue
+
+ '@vue/compiler-core@3.5.12':
+ dependencies:
+ '@babel/parser': 7.26.2
+ '@vue/shared': 3.5.12
+ entities: 4.5.0
+ estree-walker: 2.0.2
+ source-map-js: 1.2.1
+
+ '@vue/compiler-dom@3.5.12':
+ dependencies:
+ '@vue/compiler-core': 3.5.12
+ '@vue/shared': 3.5.12
+
+ '@vue/compiler-sfc@3.5.12':
+ dependencies:
+ '@babel/parser': 7.26.2
+ '@vue/compiler-core': 3.5.12
+ '@vue/compiler-dom': 3.5.12
+ '@vue/compiler-ssr': 3.5.12
+ '@vue/shared': 3.5.12
+ estree-walker: 2.0.2
+ magic-string: 0.30.12
+ postcss: 8.4.47
+ source-map-js: 1.2.1
+
+ '@vue/compiler-ssr@3.5.12':
+ dependencies:
+ '@vue/compiler-dom': 3.5.12
+ '@vue/shared': 3.5.12
+
+ '@vue/reactivity@3.5.12':
+ dependencies:
+ '@vue/shared': 3.5.12
+
+ '@vue/runtime-core@3.5.12':
+ dependencies:
+ '@vue/reactivity': 3.5.12
+ '@vue/shared': 3.5.12
+
+ '@vue/runtime-dom@3.5.12':
+ dependencies:
+ '@vue/reactivity': 3.5.12
+ '@vue/runtime-core': 3.5.12
+ '@vue/shared': 3.5.12
+ csstype: 3.1.3
+
+ '@vue/server-renderer@3.5.12(vue@3.5.12(typescript@5.6.3))':
+ dependencies:
+ '@vue/compiler-ssr': 3.5.12
+ '@vue/shared': 3.5.12
+ vue: 3.5.12(typescript@5.6.3)
+
+ '@vue/shared@3.5.12': {}
'@zerodevx/svelte-json-view@1.0.11(svelte@5.1.9)':
dependencies:
@@ -3267,11 +3413,13 @@ snapshots:
shebang-command: 2.0.0
which: 2.0.2
- css-tree@3.0.0:
+ css-tree@3.0.1:
dependencies:
- mdn-data: 2.10.0
+ mdn-data: 2.12.1
source-map-js: 1.2.1
+ csstype@3.1.3: {}
+
ctrlc-windows@2.1.0: {}
debug@4.3.7(supports-color@8.1.1):
@@ -3313,6 +3461,8 @@ snapshots:
emoji-regex@8.0.0: {}
+ entities@4.5.0: {}
+
esbuild@0.21.5:
optionalDependencies:
'@esbuild/aix-ppc64': 0.21.5
@@ -3486,7 +3636,7 @@ snapshots:
dependencies:
format: 0.2.2
- fdir@6.3.0(picomatch@4.0.2):
+ fdir@6.4.2(picomatch@4.0.2):
optionalDependencies:
picomatch: 4.0.2
@@ -3577,12 +3727,13 @@ snapshots:
parent-module: 1.0.1
resolve-from: 4.0.0
- importx@0.5.0:
+ importx@0.4.4:
dependencies:
bundle-require: 5.0.0(esbuild@0.23.1)
debug: 4.3.7(supports-color@8.1.1)
esbuild: 0.23.1
- jiti: 2.0.0
+ jiti: 2.0.0-beta.3
+ jiti-v1: jiti@1.21.6
pathe: 1.1.2
tsx: 4.19.1
transitivePeerDependencies:
@@ -3640,7 +3791,12 @@ snapshots:
isexe@2.0.0: {}
- jiti@2.0.0: {}
+ jiti@1.21.6: {}
+
+ jiti@2.0.0:
+ optional: true
+
+ jiti@2.0.0-beta.3: {}
js-yaml@4.1.0:
dependencies:
@@ -3718,7 +3874,7 @@ snapshots:
mdast-util-to-string@2.0.0: {}
- mdn-data@2.10.0: {}
+ mdn-data@2.12.1: {}
merge2@1.4.1: {}
@@ -3796,7 +3952,7 @@ snapshots:
normalize-path@3.0.0: {}
- ofetch@1.4.0:
+ ofetch@1.4.1:
dependencies:
destr: 2.0.3
node-fetch-native: 1.6.4
@@ -3956,28 +4112,28 @@ snapshots:
reusify@1.0.4: {}
- rollup@4.24.4:
+ rollup@4.25.0:
dependencies:
'@types/estree': 1.0.6
optionalDependencies:
- '@rollup/rollup-android-arm-eabi': 4.24.4
- '@rollup/rollup-android-arm64': 4.24.4
- '@rollup/rollup-darwin-arm64': 4.24.4
- '@rollup/rollup-darwin-x64': 4.24.4
- '@rollup/rollup-freebsd-arm64': 4.24.4
- '@rollup/rollup-freebsd-x64': 4.24.4
- '@rollup/rollup-linux-arm-gnueabihf': 4.24.4
- '@rollup/rollup-linux-arm-musleabihf': 4.24.4
- '@rollup/rollup-linux-arm64-gnu': 4.24.4
- '@rollup/rollup-linux-arm64-musl': 4.24.4
- '@rollup/rollup-linux-powerpc64le-gnu': 4.24.4
- '@rollup/rollup-linux-riscv64-gnu': 4.24.4
- '@rollup/rollup-linux-s390x-gnu': 4.24.4
- '@rollup/rollup-linux-x64-gnu': 4.24.4
- '@rollup/rollup-linux-x64-musl': 4.24.4
- '@rollup/rollup-win32-arm64-msvc': 4.24.4
- '@rollup/rollup-win32-ia32-msvc': 4.24.4
- '@rollup/rollup-win32-x64-msvc': 4.24.4
+ '@rollup/rollup-android-arm-eabi': 4.25.0
+ '@rollup/rollup-android-arm64': 4.25.0
+ '@rollup/rollup-darwin-arm64': 4.25.0
+ '@rollup/rollup-darwin-x64': 4.25.0
+ '@rollup/rollup-freebsd-arm64': 4.25.0
+ '@rollup/rollup-freebsd-x64': 4.25.0
+ '@rollup/rollup-linux-arm-gnueabihf': 4.25.0
+ '@rollup/rollup-linux-arm-musleabihf': 4.25.0
+ '@rollup/rollup-linux-arm64-gnu': 4.25.0
+ '@rollup/rollup-linux-arm64-musl': 4.25.0
+ '@rollup/rollup-linux-powerpc64le-gnu': 4.25.0
+ '@rollup/rollup-linux-riscv64-gnu': 4.25.0
+ '@rollup/rollup-linux-s390x-gnu': 4.25.0
+ '@rollup/rollup-linux-x64-gnu': 4.25.0
+ '@rollup/rollup-linux-x64-musl': 4.25.0
+ '@rollup/rollup-win32-arm64-msvc': 4.25.0
+ '@rollup/rollup-win32-ia32-msvc': 4.25.0
+ '@rollup/rollup-win32-x64-msvc': 4.25.0
fsevents: 2.3.3
run-parallel@1.2.0:
@@ -4094,9 +4250,9 @@ snapshots:
tinyexec@0.3.0: {}
- tinyglobby@0.2.6:
+ tinyglobby@0.2.10:
dependencies:
- fdir: 6.3.0(picomatch@4.0.2)
+ fdir: 6.4.2(picomatch@4.0.2)
picomatch: 4.0.2
to-regex-range@5.0.1:
@@ -4128,11 +4284,11 @@ snapshots:
type-fest@0.7.1: {}
- typescript-eslint@8.13.0(eslint@9.14.0(jiti@2.0.0))(typescript@5.6.3):
+ typescript-eslint@8.14.0(eslint@9.14.0(jiti@2.0.0))(typescript@5.6.3):
dependencies:
- '@typescript-eslint/eslint-plugin': 8.13.0(@typescript-eslint/parser@8.13.0(eslint@9.14.0(jiti@2.0.0))(typescript@5.6.3))(eslint@9.14.0(jiti@2.0.0))(typescript@5.6.3)
- '@typescript-eslint/parser': 8.13.0(eslint@9.14.0(jiti@2.0.0))(typescript@5.6.3)
- '@typescript-eslint/utils': 8.13.0(eslint@9.14.0(jiti@2.0.0))(typescript@5.6.3)
+ '@typescript-eslint/eslint-plugin': 8.14.0(@typescript-eslint/parser@8.14.0(eslint@9.14.0(jiti@2.0.0))(typescript@5.6.3))(eslint@9.14.0(jiti@2.0.0))(typescript@5.6.3)
+ '@typescript-eslint/parser': 8.14.0(eslint@9.14.0(jiti@2.0.0))(typescript@5.6.3)
+ '@typescript-eslint/utils': 8.14.0(eslint@9.14.0(jiti@2.0.0))(typescript@5.6.3)
optionalDependencies:
typescript: 5.6.3
transitivePeerDependencies:
@@ -4143,11 +4299,11 @@ snapshots:
ufo@1.5.4: {}
- unconfig@0.6.0:
+ unconfig@0.5.5:
dependencies:
'@antfu/utils': 0.7.10
defu: 6.1.4
- importx: 0.5.0
+ importx: 0.4.4
transitivePeerDependencies:
- supports-color
@@ -4165,31 +4321,32 @@ snapshots:
dependencies:
'@types/unist': 2.0.11
- unocss@0.63.1(postcss@8.4.47)(rollup@4.24.4)(vite@5.4.8(terser@5.34.1)):
- dependencies:
- '@unocss/astro': 0.63.1(rollup@4.24.4)(vite@5.4.8(terser@5.34.1))
- '@unocss/cli': 0.63.1(rollup@4.24.4)
- '@unocss/core': 0.63.1
- '@unocss/postcss': 0.63.1(postcss@8.4.47)
- '@unocss/preset-attributify': 0.63.1
- '@unocss/preset-icons': 0.63.1
- '@unocss/preset-mini': 0.63.1
- '@unocss/preset-tagify': 0.63.1
- '@unocss/preset-typography': 0.63.1
- '@unocss/preset-uno': 0.63.1
- '@unocss/preset-web-fonts': 0.63.1
- '@unocss/preset-wind': 0.63.1
- '@unocss/transformer-attributify-jsx': 0.63.1
- '@unocss/transformer-compile-class': 0.63.1
- '@unocss/transformer-directives': 0.63.1
- '@unocss/transformer-variant-group': 0.63.1
- '@unocss/vite': 0.63.1(rollup@4.24.4)(vite@5.4.8(terser@5.34.1))
+ unocss@0.64.0(postcss@8.4.47)(rollup@4.25.0)(vite@5.4.8(terser@5.34.1))(vue@3.5.12(typescript@5.6.3)):
+ dependencies:
+ '@unocss/astro': 0.64.0(rollup@4.25.0)(vite@5.4.8(terser@5.34.1))(vue@3.5.12(typescript@5.6.3))
+ '@unocss/cli': 0.64.0(rollup@4.25.0)
+ '@unocss/core': 0.64.0
+ '@unocss/postcss': 0.64.0(postcss@8.4.47)
+ '@unocss/preset-attributify': 0.64.0
+ '@unocss/preset-icons': 0.64.0
+ '@unocss/preset-mini': 0.64.0
+ '@unocss/preset-tagify': 0.64.0
+ '@unocss/preset-typography': 0.64.0
+ '@unocss/preset-uno': 0.64.0
+ '@unocss/preset-web-fonts': 0.64.0
+ '@unocss/preset-wind': 0.64.0
+ '@unocss/transformer-attributify-jsx': 0.64.0
+ '@unocss/transformer-compile-class': 0.64.0
+ '@unocss/transformer-directives': 0.64.0
+ '@unocss/transformer-variant-group': 0.64.0
+ '@unocss/vite': 0.64.0(rollup@4.25.0)(vite@5.4.8(terser@5.34.1))(vue@3.5.12(typescript@5.6.3))
optionalDependencies:
vite: 5.4.8(terser@5.34.1)
transitivePeerDependencies:
- postcss
- rollup
- supports-color
+ - vue
uri-js@4.4.1:
dependencies:
@@ -4211,7 +4368,7 @@ snapshots:
dependencies:
esbuild: 0.21.5
postcss: 8.4.47
- rollup: 4.24.4
+ rollup: 4.25.0
optionalDependencies:
fsevents: 2.3.3
terser: 5.34.1
@@ -4220,6 +4377,20 @@ snapshots:
optionalDependencies:
vite: 5.4.8(terser@5.34.1)
+ vue-flow-layout@0.1.1(vue@3.5.12(typescript@5.6.3)):
+ dependencies:
+ vue: 3.5.12(typescript@5.6.3)
+
+ vue@3.5.12(typescript@5.6.3):
+ dependencies:
+ '@vue/compiler-dom': 3.5.12
+ '@vue/compiler-sfc': 3.5.12
+ '@vue/runtime-dom': 3.5.12
+ '@vue/server-renderer': 3.5.12(vue@3.5.12(typescript@5.6.3))
+ '@vue/shared': 3.5.12
+ optionalDependencies:
+ typescript: 5.6.3
+
webidl-conversions@3.0.1: {}
whatwg-url@5.0.0: