mirror of
https://github.com/tauri-apps/plugins-workspace.git
synced 2026-06-26 15:19:57 +02:00
Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| bc53cf11db | |||
| 539d41ace7 | |||
| 1ec8844b0e | |||
| b5c55d4ba2 | |||
| 5092683f97 |
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
sql: patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Replace `Mutex` with `RwLock` to enable concurrent SQL execution.
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"fs-js": "patch"
|
||||||
|
---
|
||||||
|
|
||||||
|
Fix `writeTextFile` converting UTF-8 characters (for example `äöü`) in the given path into replacement character (`�`)
|
||||||
Generated
+500
-35
@@ -17,6 +17,12 @@ dependencies = [
|
|||||||
"gimli",
|
"gimli",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "adler"
|
||||||
|
version = "1.0.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "adler2"
|
name = "adler2"
|
||||||
version = "2.0.0"
|
version = "2.0.0"
|
||||||
@@ -96,6 +102,12 @@ dependencies = [
|
|||||||
"memchr",
|
"memchr",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "aligned-vec"
|
||||||
|
version = "0.5.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "4aa90d7ce82d4be67b64039a3d588d38dbcc6736577de4a847025ce5b0c468d1"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "alloc-no-stdlib"
|
name = "alloc-no-stdlib"
|
||||||
version = "2.0.4"
|
version = "2.0.4"
|
||||||
@@ -206,7 +218,7 @@ checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "api"
|
name = "api"
|
||||||
version = "2.0.5"
|
version = "2.0.4"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"log",
|
"log",
|
||||||
"serde",
|
"serde",
|
||||||
@@ -298,6 +310,17 @@ dependencies = [
|
|||||||
"x11rb",
|
"x11rb",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "arg_enum_proc_macro"
|
||||||
|
version = "0.3.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn 2.0.79",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "arrayref"
|
name = "arrayref"
|
||||||
version = "0.3.9"
|
version = "0.3.9"
|
||||||
@@ -559,6 +582,29 @@ version = "1.4.0"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"
|
checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "av1-grain"
|
||||||
|
version = "0.2.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "6678909d8c5d46a42abcf571271e15fdbc0a225e3646cf23762cd415046c78bf"
|
||||||
|
dependencies = [
|
||||||
|
"anyhow",
|
||||||
|
"arrayvec",
|
||||||
|
"log",
|
||||||
|
"nom",
|
||||||
|
"num-rational",
|
||||||
|
"v_frame",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "avif-serialize"
|
||||||
|
version = "0.8.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "e335041290c43101ca215eed6f43ec437eb5a42125573f600fc3fa42b9bddd62"
|
||||||
|
dependencies = [
|
||||||
|
"arrayvec",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "backtrace"
|
name = "backtrace"
|
||||||
version = "0.3.74"
|
version = "0.3.74"
|
||||||
@@ -568,7 +614,7 @@ dependencies = [
|
|||||||
"addr2line",
|
"addr2line",
|
||||||
"cfg-if",
|
"cfg-if",
|
||||||
"libc",
|
"libc",
|
||||||
"miniz_oxide",
|
"miniz_oxide 0.8.0",
|
||||||
"object",
|
"object",
|
||||||
"rustc-demangle",
|
"rustc-demangle",
|
||||||
"windows-targets 0.52.6",
|
"windows-targets 0.52.6",
|
||||||
@@ -613,6 +659,12 @@ dependencies = [
|
|||||||
"serde",
|
"serde",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "bit_field"
|
||||||
|
version = "0.10.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "dc827186963e592360843fb5ba4b973e145841266c1357f7180c43526f2e5b61"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "bitflags"
|
name = "bitflags"
|
||||||
version = "1.3.2"
|
version = "1.3.2"
|
||||||
@@ -628,6 +680,12 @@ dependencies = [
|
|||||||
"serde",
|
"serde",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "bitstream-io"
|
||||||
|
version = "2.5.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "b81e1519b0d82120d2fd469d5bfb2919a9361c48b02d82d04befc1cdd2002452"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "bitvec"
|
name = "bitvec"
|
||||||
version = "1.0.1"
|
version = "1.0.1"
|
||||||
@@ -762,6 +820,12 @@ dependencies = [
|
|||||||
"alloc-stdlib",
|
"alloc-stdlib",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "built"
|
||||||
|
version = "0.7.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "236e6289eda5a812bc6b53c3b024039382a2895fbbeef2d748b2931546d392c4"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "bumpalo"
|
name = "bumpalo"
|
||||||
version = "3.16.0"
|
version = "3.16.0"
|
||||||
@@ -901,6 +965,8 @@ version = "1.1.30"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "b16803a61b81d9eabb7eae2588776c4c1e584b738ede45fdbb4c972cec1e9945"
|
checksum = "b16803a61b81d9eabb7eae2588776c4c1e584b738ede45fdbb4c972cec1e9945"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"jobserver",
|
||||||
|
"libc",
|
||||||
"shlex",
|
"shlex",
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -1079,12 +1145,29 @@ dependencies = [
|
|||||||
"termcolor",
|
"termcolor",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "color_quant"
|
||||||
|
version = "1.1.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "colorchoice"
|
name = "colorchoice"
|
||||||
version = "1.0.2"
|
version = "1.0.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0"
|
checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "colored"
|
||||||
|
version = "1.9.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "5a5f741c91823341bebf717d4c71bda820630ce065443b58bd1b7451af008355"
|
||||||
|
dependencies = [
|
||||||
|
"is-terminal",
|
||||||
|
"lazy_static",
|
||||||
|
"winapi",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "colored"
|
name = "colored"
|
||||||
version = "2.1.0"
|
version = "2.1.0"
|
||||||
@@ -1311,6 +1394,25 @@ dependencies = [
|
|||||||
"crossbeam-utils",
|
"crossbeam-utils",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "crossbeam-deque"
|
||||||
|
version = "0.8.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d"
|
||||||
|
dependencies = [
|
||||||
|
"crossbeam-epoch",
|
||||||
|
"crossbeam-utils",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "crossbeam-epoch"
|
||||||
|
version = "0.9.18"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
|
||||||
|
dependencies = [
|
||||||
|
"crossbeam-utils",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "crossbeam-queue"
|
name = "crossbeam-queue"
|
||||||
version = "0.3.11"
|
version = "0.3.11"
|
||||||
@@ -1927,6 +2029,22 @@ dependencies = [
|
|||||||
"pin-project-lite",
|
"pin-project-lite",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "exr"
|
||||||
|
version = "1.72.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "887d93f60543e9a9362ef8a21beedd0a833c5d9610e18c67abe15a5963dcb1a4"
|
||||||
|
dependencies = [
|
||||||
|
"bit_field",
|
||||||
|
"flume",
|
||||||
|
"half",
|
||||||
|
"lebe",
|
||||||
|
"miniz_oxide 0.7.4",
|
||||||
|
"rayon-core",
|
||||||
|
"smallvec",
|
||||||
|
"zune-inflate",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "fastrand"
|
name = "fastrand"
|
||||||
version = "2.1.1"
|
version = "2.1.1"
|
||||||
@@ -1944,11 +2062,11 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "fern"
|
name = "fern"
|
||||||
version = "0.7.0"
|
version = "0.6.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "69ff9c9d5fb3e6da8ac2f77ab76fe7e8087d512ce095200f8f29ac5b656cf6dc"
|
checksum = "d9f0c14694cbd524c8720dd69b0e3179344f04ebb5f90f2e4a440c6ea3b2f1ee"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"colored",
|
"colored 1.9.4",
|
||||||
"log",
|
"log",
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -1980,11 +2098,11 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "file-id"
|
name = "file-id"
|
||||||
version = "0.2.2"
|
version = "0.2.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "6bc904b9bbefcadbd8e3a9fb0d464a9b979de6324c03b3c663e8994f46a5be36"
|
checksum = "6584280525fb2059cba3db2c04abf947a1a29a45ddae89f3870f8281704fafc9"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"windows-sys 0.52.0",
|
"windows-sys 0.48.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -2006,7 +2124,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0"
|
checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"crc32fast",
|
"crc32fast",
|
||||||
"miniz_oxide",
|
"miniz_oxide 0.8.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -2397,6 +2515,16 @@ dependencies = [
|
|||||||
"polyval",
|
"polyval",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "gif"
|
||||||
|
version = "0.13.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "3fb2d69b19215e18bb912fa30f7ce15846e301408695e44e0ef719f1da9e19f2"
|
||||||
|
dependencies = [
|
||||||
|
"color_quant",
|
||||||
|
"weezl",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "gimli"
|
name = "gimli"
|
||||||
version = "0.31.1"
|
version = "0.31.1"
|
||||||
@@ -2598,6 +2726,16 @@ dependencies = [
|
|||||||
"tracing",
|
"tracing",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "half"
|
||||||
|
version = "2.4.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888"
|
||||||
|
dependencies = [
|
||||||
|
"cfg-if",
|
||||||
|
"crunchy",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "hashbrown"
|
name = "hashbrown"
|
||||||
version = "0.12.3"
|
version = "0.12.3"
|
||||||
@@ -2897,11 +3035,37 @@ checksum = "d97eb9a8e0cd5b76afea91d7eecd5cf8338cd44ced04256cf1f800474b227c52"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"bytemuck",
|
"bytemuck",
|
||||||
"byteorder-lite",
|
"byteorder-lite",
|
||||||
|
"color_quant",
|
||||||
|
"exr",
|
||||||
|
"gif",
|
||||||
|
"image-webp",
|
||||||
"num-traits",
|
"num-traits",
|
||||||
"png",
|
"png",
|
||||||
|
"qoi",
|
||||||
|
"ravif",
|
||||||
|
"rayon",
|
||||||
|
"rgb",
|
||||||
"tiff",
|
"tiff",
|
||||||
|
"zune-core",
|
||||||
|
"zune-jpeg",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "image-webp"
|
||||||
|
version = "0.2.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "e031e8e3d94711a9ccb5d6ea357439ef3dcbed361798bd4071dc4d9793fbe22f"
|
||||||
|
dependencies = [
|
||||||
|
"byteorder-lite",
|
||||||
|
"quick-error 2.0.1",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "imgref"
|
||||||
|
version = "1.11.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "d0263a3d970d5c054ed9312c0057b4f3bde9c0b33836d3637361d4a9e6e7a408"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "indexmap"
|
name = "indexmap"
|
||||||
version = "1.9.3"
|
version = "1.9.3"
|
||||||
@@ -2935,9 +3099,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "inotify"
|
name = "inotify"
|
||||||
version = "0.10.2"
|
version = "0.9.6"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "fdd168d97690d0b8c412d6b6c10360277f4d7ee495c5d0d5d5fe0854923255cc"
|
checksum = "f8069d3ec154eb856955c1c0fbffefbf5f3c40a104ec912d4797314c1801abff"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags 1.3.2",
|
"bitflags 1.3.2",
|
||||||
"inotify-sys",
|
"inotify-sys",
|
||||||
@@ -2972,6 +3136,17 @@ dependencies = [
|
|||||||
"cfg-if",
|
"cfg-if",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "interpolate_name"
|
||||||
|
version = "0.2.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn 2.0.79",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "iota-crypto"
|
name = "iota-crypto"
|
||||||
version = "0.23.2"
|
version = "0.23.2"
|
||||||
@@ -3039,6 +3214,17 @@ dependencies = [
|
|||||||
"once_cell",
|
"once_cell",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "is-terminal"
|
||||||
|
version = "0.4.13"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b"
|
||||||
|
dependencies = [
|
||||||
|
"hermit-abi 0.4.0",
|
||||||
|
"libc",
|
||||||
|
"windows-sys 0.52.0",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "is-wsl"
|
name = "is-wsl"
|
||||||
version = "0.4.0"
|
version = "0.4.0"
|
||||||
@@ -3061,6 +3247,15 @@ version = "0.1.0"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "d101775d2bc8f99f4ac18bf29b9ed70c0dd138b9a1e88d7b80179470cbbe8bd2"
|
checksum = "d101775d2bc8f99f4ac18bf29b9ed70c0dd138b9a1e88d7b80179470cbbe8bd2"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "itertools"
|
||||||
|
version = "0.12.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569"
|
||||||
|
dependencies = [
|
||||||
|
"either",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "itoa"
|
name = "itoa"
|
||||||
version = "0.4.8"
|
version = "0.4.8"
|
||||||
@@ -3118,6 +3313,15 @@ version = "0.3.0"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130"
|
checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "jobserver"
|
||||||
|
version = "0.1.32"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0"
|
||||||
|
dependencies = [
|
||||||
|
"libc",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "jpeg-decoder"
|
name = "jpeg-decoder"
|
||||||
version = "0.3.1"
|
version = "0.3.1"
|
||||||
@@ -3222,6 +3426,12 @@ dependencies = [
|
|||||||
"spin",
|
"spin",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "lebe"
|
||||||
|
version = "0.5.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "libappindicator"
|
name = "libappindicator"
|
||||||
version = "0.9.0"
|
version = "0.9.0"
|
||||||
@@ -3276,6 +3486,17 @@ dependencies = [
|
|||||||
"rle-decode-fast",
|
"rle-decode-fast",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "libfuzzer-sys"
|
||||||
|
version = "0.4.7"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "a96cfd5557eb82f2b83fed4955246c988d331975a002961b07c81584d107e7f7"
|
||||||
|
dependencies = [
|
||||||
|
"arbitrary",
|
||||||
|
"cc",
|
||||||
|
"once_cell",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "libloading"
|
name = "libloading"
|
||||||
version = "0.7.4"
|
version = "0.7.4"
|
||||||
@@ -3372,6 +3593,15 @@ dependencies = [
|
|||||||
"value-bag",
|
"value-bag",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "loop9"
|
||||||
|
version = "0.1.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "0fae87c125b03c1d2c0150c90365d7d6bcc53fb73a9acaef207d2d065860f062"
|
||||||
|
dependencies = [
|
||||||
|
"imgref",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "mac"
|
name = "mac"
|
||||||
version = "0.1.1"
|
version = "0.1.1"
|
||||||
@@ -3426,6 +3656,15 @@ version = "0.1.10"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5"
|
checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "maybe-rayon"
|
||||||
|
version = "0.1.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "8ea1f30cedd69f0a2954655f7188c6a834246d2bcf1e315e2ac40c4b24dc9519"
|
||||||
|
dependencies = [
|
||||||
|
"cfg-if",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "md-5"
|
name = "md-5"
|
||||||
version = "0.10.6"
|
version = "0.10.6"
|
||||||
@@ -3488,6 +3727,15 @@ version = "0.2.2"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "a05b5d0594e0cb1ad8cee3373018d2b84e25905dc75b2468114cc9a8e86cfc20"
|
checksum = "a05b5d0594e0cb1ad8cee3373018d2b84e25905dc75b2468114cc9a8e86cfc20"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "miniz_oxide"
|
||||||
|
version = "0.7.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08"
|
||||||
|
dependencies = [
|
||||||
|
"adler",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "miniz_oxide"
|
name = "miniz_oxide"
|
||||||
version = "0.8.0"
|
version = "0.8.0"
|
||||||
@@ -3498,6 +3746,18 @@ dependencies = [
|
|||||||
"simd-adler32",
|
"simd-adler32",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "mio"
|
||||||
|
version = "0.8.11"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c"
|
||||||
|
dependencies = [
|
||||||
|
"libc",
|
||||||
|
"log",
|
||||||
|
"wasi 0.11.0+wasi-snapshot-preview1",
|
||||||
|
"windows-sys 0.48.0",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "mio"
|
name = "mio"
|
||||||
version = "1.0.2"
|
version = "1.0.2"
|
||||||
@@ -3506,7 +3766,6 @@ checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"hermit-abi 0.3.9",
|
"hermit-abi 0.3.9",
|
||||||
"libc",
|
"libc",
|
||||||
"log",
|
|
||||||
"wasi 0.11.0+wasi-snapshot-preview1",
|
"wasi 0.11.0+wasi-snapshot-preview1",
|
||||||
"windows-sys 0.52.0",
|
"windows-sys 0.52.0",
|
||||||
]
|
]
|
||||||
@@ -3519,7 +3778,7 @@ checksum = "09b34bd91b9e5c5b06338d392463e1318d683cf82ec3d3af4014609be6e2108d"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"assert-json-diff",
|
"assert-json-diff",
|
||||||
"bytes",
|
"bytes",
|
||||||
"colored",
|
"colored 2.1.0",
|
||||||
"futures-util",
|
"futures-util",
|
||||||
"http",
|
"http",
|
||||||
"http-body",
|
"http-body",
|
||||||
@@ -3649,34 +3908,42 @@ dependencies = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "notify"
|
name = "noop_proc_macro"
|
||||||
version = "7.0.0"
|
version = "0.3.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "c533b4c39709f9ba5005d8002048266593c1cfaf3c5f0739d5b8ab0c6c504009"
|
checksum = "0676bb32a98c1a483ce53e500a81ad9c3d5b3f7c920c28c24e9cb0980d0b5bc8"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "notify"
|
||||||
|
version = "6.1.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "6205bd8bb1e454ad2e27422015fb5e4f2bcc7e08fa8f27058670d208324a4d2d"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags 2.6.0",
|
"bitflags 2.6.0",
|
||||||
|
"crossbeam-channel",
|
||||||
"filetime",
|
"filetime",
|
||||||
"fsevent-sys",
|
"fsevent-sys",
|
||||||
"inotify",
|
"inotify",
|
||||||
"kqueue",
|
"kqueue",
|
||||||
"libc",
|
"libc",
|
||||||
"log",
|
"log",
|
||||||
"mio",
|
"mio 0.8.11",
|
||||||
"notify-types",
|
"serde",
|
||||||
"walkdir",
|
"walkdir",
|
||||||
"windows-sys 0.52.0",
|
"windows-sys 0.48.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "notify-debouncer-full"
|
name = "notify-debouncer-full"
|
||||||
version = "0.4.0"
|
version = "0.3.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "9dcf855483228259b2353f89e99df35fc639b2b2510d1166e4858e3f67ec1afb"
|
checksum = "fb7fd166739789c9ff169e654dc1501373db9d80a4c3f972817c8a4d7cf8f34e"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"crossbeam-channel",
|
||||||
"file-id",
|
"file-id",
|
||||||
"log",
|
"log",
|
||||||
"notify",
|
"notify",
|
||||||
"notify-types",
|
"parking_lot",
|
||||||
"walkdir",
|
"walkdir",
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -3694,13 +3961,13 @@ dependencies = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "notify-types"
|
name = "num-bigint"
|
||||||
version = "1.0.0"
|
version = "0.4.6"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "7393c226621f817964ffb3dc5704f9509e107a8b024b489cc2c1b217378785df"
|
checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"instant",
|
"num-integer",
|
||||||
"serde",
|
"num-traits",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -3726,6 +3993,17 @@ version = "0.1.0"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9"
|
checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "num-derive"
|
||||||
|
version = "0.4.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn 2.0.79",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "num-integer"
|
name = "num-integer"
|
||||||
version = "0.1.46"
|
version = "0.1.46"
|
||||||
@@ -3746,6 +4024,17 @@ dependencies = [
|
|||||||
"num-traits",
|
"num-traits",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "num-rational"
|
||||||
|
version = "0.4.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824"
|
||||||
|
dependencies = [
|
||||||
|
"num-bigint",
|
||||||
|
"num-integer",
|
||||||
|
"num-traits",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "num-traits"
|
name = "num-traits"
|
||||||
version = "0.2.19"
|
version = "0.2.19"
|
||||||
@@ -4465,7 +4754,7 @@ dependencies = [
|
|||||||
"crc32fast",
|
"crc32fast",
|
||||||
"fdeflate",
|
"fdeflate",
|
||||||
"flate2",
|
"flate2",
|
||||||
"miniz_oxide",
|
"miniz_oxide 0.8.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -4586,6 +4875,25 @@ dependencies = [
|
|||||||
"unicode-ident",
|
"unicode-ident",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "profiling"
|
||||||
|
version = "1.0.16"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "afbdc74edc00b6f6a218ca6a5364d6226a259d4b8ea1af4a0ea063f27e179f4d"
|
||||||
|
dependencies = [
|
||||||
|
"profiling-procmacros",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "profiling-procmacros"
|
||||||
|
version = "1.0.16"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "a65f2e60fbf1063868558d69c6beacf412dc755f9fc020f514b7955fc914fe30"
|
||||||
|
dependencies = [
|
||||||
|
"quote",
|
||||||
|
"syn 2.0.79",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "psl-types"
|
name = "psl-types"
|
||||||
version = "2.0.11"
|
version = "2.0.11"
|
||||||
@@ -4622,12 +4930,27 @@ dependencies = [
|
|||||||
"psl-types",
|
"psl-types",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "qoi"
|
||||||
|
version = "0.4.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "7f6d64c71eb498fe9eae14ce4ec935c555749aef511cca85b5568910d6e48001"
|
||||||
|
dependencies = [
|
||||||
|
"bytemuck",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "quick-error"
|
name = "quick-error"
|
||||||
version = "1.2.3"
|
version = "1.2.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0"
|
checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "quick-error"
|
||||||
|
version = "2.0.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "quick-xml"
|
name = "quick-xml"
|
||||||
version = "0.31.0"
|
version = "0.31.0"
|
||||||
@@ -4799,12 +5122,81 @@ dependencies = [
|
|||||||
"rand_core 0.5.1",
|
"rand_core 0.5.1",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rav1e"
|
||||||
|
version = "0.7.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "cd87ce80a7665b1cce111f8a16c1f3929f6547ce91ade6addf4ec86a8dda5ce9"
|
||||||
|
dependencies = [
|
||||||
|
"arbitrary",
|
||||||
|
"arg_enum_proc_macro",
|
||||||
|
"arrayvec",
|
||||||
|
"av1-grain",
|
||||||
|
"bitstream-io",
|
||||||
|
"built",
|
||||||
|
"cfg-if",
|
||||||
|
"interpolate_name",
|
||||||
|
"itertools",
|
||||||
|
"libc",
|
||||||
|
"libfuzzer-sys",
|
||||||
|
"log",
|
||||||
|
"maybe-rayon",
|
||||||
|
"new_debug_unreachable",
|
||||||
|
"noop_proc_macro",
|
||||||
|
"num-derive",
|
||||||
|
"num-traits",
|
||||||
|
"once_cell",
|
||||||
|
"paste",
|
||||||
|
"profiling",
|
||||||
|
"rand 0.8.5",
|
||||||
|
"rand_chacha 0.3.1",
|
||||||
|
"simd_helpers",
|
||||||
|
"system-deps",
|
||||||
|
"thiserror",
|
||||||
|
"v_frame",
|
||||||
|
"wasm-bindgen",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "ravif"
|
||||||
|
version = "0.11.10"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "a8f0bfd976333248de2078d350bfdf182ff96e168a24d23d2436cef320dd4bdd"
|
||||||
|
dependencies = [
|
||||||
|
"avif-serialize",
|
||||||
|
"imgref",
|
||||||
|
"loop9",
|
||||||
|
"quick-error 2.0.1",
|
||||||
|
"rav1e",
|
||||||
|
"rgb",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "raw-window-handle"
|
name = "raw-window-handle"
|
||||||
version = "0.6.2"
|
version = "0.6.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539"
|
checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rayon"
|
||||||
|
version = "1.10.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa"
|
||||||
|
dependencies = [
|
||||||
|
"either",
|
||||||
|
"rayon-core",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rayon-core"
|
||||||
|
version = "1.12.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2"
|
||||||
|
dependencies = [
|
||||||
|
"crossbeam-deque",
|
||||||
|
"crossbeam-utils",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "read-progress-stream"
|
name = "read-progress-stream"
|
||||||
version = "1.0.0"
|
version = "1.0.0"
|
||||||
@@ -4964,6 +5356,12 @@ dependencies = [
|
|||||||
"windows-sys 0.48.0",
|
"windows-sys 0.48.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rgb"
|
||||||
|
version = "0.8.50"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "57397d16646700483b67d2dd6511d79318f9d057fdbd21a4066aeac8b41d310a"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ring"
|
name = "ring"
|
||||||
version = "0.17.8"
|
version = "0.17.8"
|
||||||
@@ -5178,7 +5576,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f"
|
checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"fnv",
|
"fnv",
|
||||||
"quick-error",
|
"quick-error 1.2.3",
|
||||||
"tempfile",
|
"tempfile",
|
||||||
"wait-timeout",
|
"wait-timeout",
|
||||||
]
|
]
|
||||||
@@ -5549,6 +5947,15 @@ version = "0.3.7"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe"
|
checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "simd_helpers"
|
||||||
|
version = "0.1.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "95890f873bec569a0362c235787f3aca6e1e887302ba4840839bcc6459c42da6"
|
||||||
|
dependencies = [
|
||||||
|
"quote",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "simdutf8"
|
name = "simdutf8"
|
||||||
version = "0.1.5"
|
version = "0.1.5"
|
||||||
@@ -6386,9 +6793,10 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tauri-plugin-clipboard-manager"
|
name = "tauri-plugin-clipboard-manager"
|
||||||
version = "2.0.2"
|
version = "2.0.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"arboard",
|
"arboard",
|
||||||
|
"image",
|
||||||
"log",
|
"log",
|
||||||
"serde",
|
"serde",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
@@ -6526,7 +6934,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tauri-plugin-log"
|
name = "tauri-plugin-log"
|
||||||
version = "2.0.2"
|
version = "2.0.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"android_logger",
|
"android_logger",
|
||||||
"byte-unit",
|
"byte-unit",
|
||||||
@@ -6634,6 +7042,7 @@ dependencies = [
|
|||||||
name = "tauri-plugin-shell"
|
name = "tauri-plugin-shell"
|
||||||
version = "2.0.2"
|
version = "2.0.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"dunce",
|
||||||
"encoding_rs",
|
"encoding_rs",
|
||||||
"log",
|
"log",
|
||||||
"open",
|
"open",
|
||||||
@@ -6647,6 +7056,7 @@ dependencies = [
|
|||||||
"tauri-plugin",
|
"tauri-plugin",
|
||||||
"thiserror",
|
"thiserror",
|
||||||
"tokio",
|
"tokio",
|
||||||
|
"windows 0.54.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -6666,7 +7076,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tauri-plugin-sql"
|
name = "tauri-plugin-sql"
|
||||||
version = "2.0.2"
|
version = "2.0.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"futures-core",
|
"futures-core",
|
||||||
"indexmap 2.6.0",
|
"indexmap 2.6.0",
|
||||||
@@ -6746,7 +7156,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tauri-plugin-upload"
|
name = "tauri-plugin-upload"
|
||||||
version = "2.1.0"
|
version = "2.0.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"futures-util",
|
"futures-util",
|
||||||
"log",
|
"log",
|
||||||
@@ -6781,7 +7191,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tauri-plugin-window-state"
|
name = "tauri-plugin-window-state"
|
||||||
version = "2.0.2"
|
version = "2.0.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags 2.6.0",
|
"bitflags 2.6.0",
|
||||||
"log",
|
"log",
|
||||||
@@ -7045,7 +7455,7 @@ dependencies = [
|
|||||||
"backtrace",
|
"backtrace",
|
||||||
"bytes",
|
"bytes",
|
||||||
"libc",
|
"libc",
|
||||||
"mio",
|
"mio 1.0.2",
|
||||||
"parking_lot",
|
"parking_lot",
|
||||||
"pin-project-lite",
|
"pin-project-lite",
|
||||||
"signal-hook-registry",
|
"signal-hook-registry",
|
||||||
@@ -7498,6 +7908,17 @@ dependencies = [
|
|||||||
"serde",
|
"serde",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "v_frame"
|
||||||
|
version = "0.3.8"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "d6f32aaa24bacd11e488aa9ba66369c7cd514885742c9fe08cfe85884db3e92b"
|
||||||
|
dependencies = [
|
||||||
|
"aligned-vec",
|
||||||
|
"num-traits",
|
||||||
|
"wasm-bindgen",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "value-bag"
|
name = "value-bag"
|
||||||
version = "1.9.0"
|
version = "1.9.0"
|
||||||
@@ -7925,6 +8346,16 @@ dependencies = [
|
|||||||
"windows_x86_64_msvc 0.36.1",
|
"windows_x86_64_msvc 0.36.1",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows"
|
||||||
|
version = "0.54.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "9252e5725dbed82865af151df558e754e4a3c2c30818359eb17465f1346a1b49"
|
||||||
|
dependencies = [
|
||||||
|
"windows-core 0.54.0",
|
||||||
|
"windows-targets 0.52.6",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "windows"
|
name = "windows"
|
||||||
version = "0.56.0"
|
version = "0.56.0"
|
||||||
@@ -7954,6 +8385,16 @@ dependencies = [
|
|||||||
"windows-targets 0.52.6",
|
"windows-targets 0.52.6",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows-core"
|
||||||
|
version = "0.54.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "12661b9c89351d684a50a8a643ce5f608e20243b9fb84687800163429f161d65"
|
||||||
|
dependencies = [
|
||||||
|
"windows-result 0.1.2",
|
||||||
|
"windows-targets 0.52.6",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "windows-core"
|
name = "windows-core"
|
||||||
version = "0.56.0"
|
version = "0.56.0"
|
||||||
@@ -8621,6 +9062,30 @@ dependencies = [
|
|||||||
"simd-adler32",
|
"simd-adler32",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "zune-core"
|
||||||
|
version = "0.4.12"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "3f423a2c17029964870cfaabb1f13dfab7d092a62a29a89264f4d36990ca414a"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "zune-inflate"
|
||||||
|
version = "0.2.54"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "73ab332fe2f6680068f3582b16a24f90ad7096d5d39b974d1c0aff0125116f02"
|
||||||
|
dependencies = [
|
||||||
|
"simd-adler32",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "zune-jpeg"
|
||||||
|
version = "0.4.13"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "16099418600b4d8f028622f73ff6e3deaabdff330fb9a2a131dea781ee8b0768"
|
||||||
|
dependencies = [
|
||||||
|
"zune-core",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "zvariant"
|
name = "zvariant"
|
||||||
version = "4.0.0"
|
version = "4.0.0"
|
||||||
|
|||||||
@@ -1,22 +1,16 @@
|
|||||||
# Official Tauri Plugins
|
|
||||||
|
|
||||||
This repo and all plugins require a Rust version of at least **1.77.2**
|
|
||||||
|
|
||||||
## Plugins Found Here
|
## Plugins Found Here
|
||||||
|
|
||||||
| | | Win | Mac | Lin | iOS | And |
|
| | | Win | Mac | Lin | iOS | And |
|
||||||
| ---------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | --- | --- | --- | --- | --- |
|
| ---------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | --- | --- | --- | --- | --- |
|
||||||
| [autostart](plugins/autostart) | Automatically launch your app at system startup. | ✅ | ✅ | ✅ | ❌ | ❌ |
|
| [autostart](plugins/autostart) | Automatically launch your app at system startup. | ✅ | ✅ | ✅ | ? | ? |
|
||||||
| [barcode-scanner](plugins/barcode-scanner) | Allows your mobile application to use the camera to scan QR codes, EAN-13 and other kinds of barcodes. | ? | ? | ? | ✅ | ✅ |
|
| [barcode-scanner](plugins/barcode-scanner) | Allows your mobile application to use the camera to scan QR codes, EAN-13 and other kinds of barcodes. | ? | ? | ? | ✅ | ✅ |
|
||||||
| [biometric](plugins/biometric) | Prompt the user for biometric authentication on Android and iOS. | ? | ? | ? | ✅ | ✅ |
|
| [biometric](plugins/biometric) | Prompt the user for biometric authentication on Android and iOS. | ? | ? | ? | ✅ | ✅ |
|
||||||
| [cli](plugins/cli) | Parse arguments from your Command Line Interface | ✅ | ✅ | ✅ | ❌ | ❌ |
|
| [cli](plugins/cli) | Parse arguments from your Command Line Interface | ✅ | ✅ | ✅ | ? | ? |
|
||||||
| [clipboard-manager](plugins/clipboard-manager) | Read and write to the system clipboard. | ✅ | ✅ | ✅ | ✅ | ✅ |
|
| [clipboard-manager](plugins/clipboard-manager) | Read and write to the system clipboard. | ✅ | ✅ | ✅ | ✅ | ✅ |
|
||||||
| [deep-link](plugins/deep-link) | Set your Tauri application as the default handler for an URL. | ✅ | ✅ | ✅ | ✅ | ✅ |
|
| [deep-link](plugins/deep-link) | Set your Tauri application as the default handler for an URL. | ✅ | ✅ | ✅ | ✅ | ✅ |
|
||||||
| [dialog](plugins/dialog) | Native system dialogs for opening and saving files along with message dialogs. | ✅ | ✅ | ✅ | ✅ | ✅ |
|
| [dialog](plugins/dialog) | Native system dialogs for opening and saving files along with message dialogs. | ✅ | ✅ | ✅ | ✅ | ✅ |
|
||||||
| [fs](plugins/fs) | Access the file system. | ✅ | ✅ | ✅ | ? | ? |
|
| [fs](plugins/fs) | Access the file system. | ✅ | ✅ | ✅ | ? | ? |
|
||||||
| [geolocation](plugins/geolocation) | Get and track current device position. | ? | ? | ? | ✅ | ✅ |
|
|
||||||
| [global-shortcut](plugins/global-shortcut) | Register global shortcuts. | ✅ | ✅ | ✅ | ? | ? |
|
| [global-shortcut](plugins/global-shortcut) | Register global shortcuts. | ✅ | ✅ | ✅ | ? | ? |
|
||||||
| [haptics](plugins/haptics) | Haptic feedback and vibrations. | ? | ? | ? | ✅ | ✅ |
|
|
||||||
| [http](plugins/http) | Access the HTTP client written in Rust. | ✅ | ✅ | ✅ | ✅ | ✅ |
|
| [http](plugins/http) | Access the HTTP client written in Rust. | ✅ | ✅ | ✅ | ✅ | ✅ |
|
||||||
| [localhost](plugins/localhost) | Use a localhost server in production apps. | ✅ | ✅ | ✅ | ? | ? |
|
| [localhost](plugins/localhost) | Use a localhost server in production apps. | ✅ | ✅ | ✅ | ? | ? |
|
||||||
| [log](plugins/log) | Configurable logging. | ✅ | ✅ | ✅ | ✅ | ✅ |
|
| [log](plugins/log) | Configurable logging. | ✅ | ✅ | ✅ | ✅ | ✅ |
|
||||||
@@ -24,21 +18,19 @@ This repo and all plugins require a Rust version of at least **1.77.2**
|
|||||||
| [notification](plugins/notification) | Send message notifications (brief auto-expiring OS window element) to your user. Can also be used with the Notification Web API. | ✅ | ✅ | ✅ | ✅ | ✅ |
|
| [notification](plugins/notification) | Send message notifications (brief auto-expiring OS window element) to your user. Can also be used with the Notification Web API. | ✅ | ✅ | ✅ | ✅ | ✅ |
|
||||||
| [os](plugins/os) | Read information about the operating system. | ✅ | ✅ | ✅ | ✅ | ✅ |
|
| [os](plugins/os) | Read information about the operating system. | ✅ | ✅ | ✅ | ✅ | ✅ |
|
||||||
| [persisted-scope](plugins/persisted-scope) | Persist runtime scope changes on the filesystem. | ✅ | ✅ | ✅ | ? | ? |
|
| [persisted-scope](plugins/persisted-scope) | Persist runtime scope changes on the filesystem. | ✅ | ✅ | ✅ | ? | ? |
|
||||||
| [positioner](plugins/positioner) | Move windows to common locations. | ✅ | ✅ | ✅ | ❌ | ❌ |
|
| [positioner](plugins/positioner) | Move windows to common locations. | ✅ | ✅ | ✅ | ? | ? |
|
||||||
| [process](plugins/process) | This plugin provides APIs to access the current process. To spawn child processes, see the [`shell`](https://github.com/tauri-apps/tauri-plugin-shell) plugin. | ✅ | ✅ | ✅ | ? | ? |
|
| [process](plugins/process) | This plugin provides APIs to access the current process. To spawn child processes, see the [`shell`](https://github.com/tauri-apps/tauri-plugin-shell) plugin. | ✅ | ✅ | ✅ | ? | ? |
|
||||||
| [shell](plugins/shell) | Access the system shell. Allows you to spawn child processes and manage files and URLs using their default application. | ✅ | ✅ | ✅ | ? | ? |
|
| [shell](plugins/shell) | Access the system shell. Allows you to spawn child processes and manage files and URLs using their default application. | ✅ | ✅ | ✅ | ? | ? |
|
||||||
| [single-instance](plugins/single-instance) | Ensure a single instance of your tauri app is running. | ✅ | ✅ | ✅ | ❌ | ❌ |
|
| [single-instance](plugins/single-instance) | Ensure a single instance of your tauri app is running. | ✅ | ? | ✅ | ? | ? |
|
||||||
| [sql](plugins/sql) | Interface with SQL databases. | ✅ | ✅ | ✅ | ? | ✅ |
|
| [sql](plugins/sql) | Interface with SQL databases. | ✅ | ✅ | ✅ | ? | ? |
|
||||||
| [store](plugins/store) | Persistent key value storage. | ✅ | ✅ | ✅ | ✅ | ✅ |
|
| [store](plugins/store) | Persistent key value storage. | ✅ | ✅ | ✅ | ✅ | ✅ |
|
||||||
| [stronghold](plugins/stronghold) | Encrypted, secure database. | ✅ | ✅ | ✅ | ? | ? |
|
| [stronghold](plugins/stronghold) | Encrypted, secure database. | ✅ | ✅ | ✅ | ? | ? |
|
||||||
| [updater](plugins/updater) | In-app updates for Tauri applications. | ✅ | ✅ | ✅ | ❌ | ❌ |
|
| [updater](plugins/updater) | In-app updates for Tauri applications. | ✅ | ✅ | ✅ | ? | ? |
|
||||||
| [upload](plugins/upload) | Tauri plugin for file uploads through HTTP. | ✅ | ✅ | ✅ | ? | ? |
|
| [upload](plugins/upload) | Tauri plugin for file uploads through HTTP. | ✅ | ✅ | ✅ | ? | ? |
|
||||||
| [websocket](plugins/websocket) | Open a WebSocket connection using a Rust client in JS. | ✅ | ✅ | ✅ | ? | ? |
|
| [websocket](plugins/websocket) | Open a WebSocket connection using a Rust client in JS. | ✅ | ✅ | ✅ | ? | ? |
|
||||||
| [window-state](plugins/window-state) | Persist window sizes and positions. | ✅ | ✅ | ✅ | ❌ | ❌ |
|
| [window-state](plugins/window-state) | Persist window sizes and positions. | ✅ | ✅ | ✅ | ? | ? |
|
||||||
|
|
||||||
- ✅: (Partially) Supported
|
_This repo and all plugins require a Rust version of at least **1.77.2**_
|
||||||
- ❌: Not supported
|
|
||||||
- `?` : Unknown/Untested or Planned
|
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,5 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
## \[2.0.2]
|
|
||||||
|
|
||||||
### Dependencies
|
|
||||||
|
|
||||||
- Upgraded to `fs-js@2.0.2`
|
|
||||||
|
|
||||||
## \[2.0.1]
|
## \[2.0.1]
|
||||||
|
|
||||||
### Dependencies
|
### Dependencies
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "svelte-app",
|
"name": "svelte-app",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "2.0.2",
|
"version": "2.0.1",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite --clearScreen false",
|
"dev": "vite --clearScreen false",
|
||||||
@@ -9,13 +9,13 @@
|
|||||||
"serve": "vite preview"
|
"serve": "vite preview"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@tauri-apps/api": "2.0.3",
|
"@tauri-apps/api": "2.0.2",
|
||||||
"@tauri-apps/plugin-barcode-scanner": "2.0.0",
|
"@tauri-apps/plugin-barcode-scanner": "2.0.0",
|
||||||
"@tauri-apps/plugin-biometric": "2.0.0",
|
"@tauri-apps/plugin-biometric": "2.0.0",
|
||||||
"@tauri-apps/plugin-cli": "2.0.0",
|
"@tauri-apps/plugin-cli": "2.0.0",
|
||||||
"@tauri-apps/plugin-clipboard-manager": "2.0.0",
|
"@tauri-apps/plugin-clipboard-manager": "2.0.0",
|
||||||
"@tauri-apps/plugin-dialog": "2.0.1",
|
"@tauri-apps/plugin-dialog": "2.0.1",
|
||||||
"@tauri-apps/plugin-fs": "2.0.2",
|
"@tauri-apps/plugin-fs": "2.0.1",
|
||||||
"@tauri-apps/plugin-geolocation": "2.0.0",
|
"@tauri-apps/plugin-geolocation": "2.0.0",
|
||||||
"@tauri-apps/plugin-global-shortcut": "2.0.0",
|
"@tauri-apps/plugin-global-shortcut": "2.0.0",
|
||||||
"@tauri-apps/plugin-haptics": "2.0.0",
|
"@tauri-apps/plugin-haptics": "2.0.0",
|
||||||
@@ -32,11 +32,11 @@
|
|||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@iconify-json/codicon": "^1.1.37",
|
"@iconify-json/codicon": "^1.1.37",
|
||||||
"@iconify-json/ph": "^1.1.8",
|
"@iconify-json/ph": "^1.1.8",
|
||||||
"@sveltejs/vite-plugin-svelte": "^4.0.0",
|
"@sveltejs/vite-plugin-svelte": "^3.0.1",
|
||||||
"@tauri-apps/cli": "2.0.4",
|
"@tauri-apps/cli": "2.0.3",
|
||||||
"@unocss/extractor-svelte": "^0.64.0",
|
"@unocss/extractor-svelte": "^0.63.0",
|
||||||
"svelte": "^5.0.0",
|
"svelte": "^4.2.19",
|
||||||
"unocss": "^0.64.0",
|
"unocss": "^0.63.0",
|
||||||
"vite": "^5.4.7"
|
"vite": "^5.4.7"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,5 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
## \[2.0.5]
|
|
||||||
|
|
||||||
### Dependencies
|
|
||||||
|
|
||||||
- Upgraded to `clipboard-manager@2.0.2`
|
|
||||||
- Upgraded to `log-plugin@2.0.2`
|
|
||||||
|
|
||||||
## \[2.0.4]
|
## \[2.0.4]
|
||||||
|
|
||||||
### Dependencies
|
### Dependencies
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "api"
|
name = "api"
|
||||||
publish = false
|
publish = false
|
||||||
version = "2.0.5"
|
version = "2.0.4"
|
||||||
description = "An example Tauri Application showcasing the api"
|
description = "An example Tauri Application showcasing the api"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
rust-version = { workspace = true }
|
rust-version = { workspace = true }
|
||||||
@@ -19,11 +19,11 @@ serde_json = { workspace = true }
|
|||||||
serde = { workspace = true }
|
serde = { workspace = true }
|
||||||
tiny_http = "0.12"
|
tiny_http = "0.12"
|
||||||
log = { workspace = true }
|
log = { workspace = true }
|
||||||
tauri-plugin-log = { path = "../../../plugins/log", version = "2.0.2" }
|
tauri-plugin-log = { path = "../../../plugins/log", version = "2.0.1" }
|
||||||
tauri-plugin-fs = { path = "../../../plugins/fs", version = "2.0.3", features = [
|
tauri-plugin-fs = { path = "../../../plugins/fs", version = "2.0.3", features = [
|
||||||
"watch",
|
"watch",
|
||||||
] }
|
] }
|
||||||
tauri-plugin-clipboard-manager = { path = "../../../plugins/clipboard-manager", version = "2.0.2" }
|
tauri-plugin-clipboard-manager = { path = "../../../plugins/clipboard-manager", version = "2.0.1" }
|
||||||
tauri-plugin-dialog = { path = "../../../plugins/dialog", version = "2.0.3" }
|
tauri-plugin-dialog = { path = "../../../plugins/dialog", version = "2.0.3" }
|
||||||
tauri-plugin-http = { path = "../../../plugins/http", features = [
|
tauri-plugin-http = { path = "../../../plugins/http", features = [
|
||||||
"multipart",
|
"multipart",
|
||||||
|
|||||||
@@ -53,7 +53,6 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"shell:allow-open",
|
|
||||||
"shell:allow-kill",
|
"shell:allow-kill",
|
||||||
"shell:allow-stdin-write",
|
"shell:allow-stdin-write",
|
||||||
"process:allow-exit",
|
"process:allow-exit",
|
||||||
|
|||||||
@@ -9,8 +9,6 @@
|
|||||||
"updater:default",
|
"updater:default",
|
||||||
"global-shortcut:allow-unregister",
|
"global-shortcut:allow-unregister",
|
||||||
"global-shortcut:allow-register",
|
"global-shortcut:allow-register",
|
||||||
"global-shortcut:allow-unregister-all",
|
"global-shortcut:allow-unregister-all"
|
||||||
{ "identifier": "fs:allow-watch", "allow": ["*", "**/*"] },
|
|
||||||
"fs:allow-unwatch"
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
+41
-44
@@ -205,7 +205,7 @@
|
|||||||
if (consoleTextEl) consoleTextEl.scrollTop = consoleTextEl.scrollHeight
|
if (consoleTextEl) consoleTextEl.scrollTop = consoleTextEl.scrollHeight
|
||||||
}
|
}
|
||||||
|
|
||||||
// this function renders HTML without sanitizing it so it's insecure
|
// this function is renders HTML without sanitizing it so it's insecure
|
||||||
// we only use it with our own input data
|
// we only use it with our own input data
|
||||||
async function insecureRenderHtml(html) {
|
async function insecureRenderHtml(html) {
|
||||||
messages.update((r) => [
|
messages.update((r) => [
|
||||||
@@ -334,46 +334,42 @@
|
|||||||
children:h-100% children:w-12 children:inline-flex
|
children:h-100% children:w-12 children:inline-flex
|
||||||
children:items-center children:justify-center"
|
children:items-center children:justify-center"
|
||||||
>
|
>
|
||||||
<button
|
<span
|
||||||
aria-label="Toggle dark mode"
|
|
||||||
title={isDark ? 'Switch to Light mode' : 'Switch to Dark mode'}
|
title={isDark ? 'Switch to Light mode' : 'Switch to Dark mode'}
|
||||||
class="bg-inherit border-none hover:bg-hoverOverlay active:bg-hoverOverlayDarker dark:hover:bg-darkHoverOverlay dark:active:bg-darkHoverOverlayDarker"
|
class="hover:bg-hoverOverlay active:bg-hoverOverlayDarker dark:hover:bg-darkHoverOverlay dark:active:bg-darkHoverOverlayDarker"
|
||||||
on:click={toggleDark}
|
on:click={toggleDark}
|
||||||
>
|
>
|
||||||
{#if isDark}
|
{#if isDark}
|
||||||
<div class="i-ph-sun"></div>
|
<div class="i-ph-sun" />
|
||||||
{:else}
|
{:else}
|
||||||
<div class="i-ph-moon"></div>
|
<div class="i-ph-moon" />
|
||||||
{/if}
|
{/if}
|
||||||
</button>
|
</span>
|
||||||
<button
|
<span
|
||||||
aria-label="Minimize window"
|
|
||||||
title="Minimize"
|
title="Minimize"
|
||||||
class="bg-inherit border-none hover:bg-hoverOverlay active:bg-hoverOverlayDarker dark:hover:bg-darkHoverOverlay dark:active:bg-darkHoverOverlayDarker"
|
class="hover:bg-hoverOverlay active:bg-hoverOverlayDarker dark:hover:bg-darkHoverOverlay dark:active:bg-darkHoverOverlayDarker"
|
||||||
on:click={minimize}
|
on:click={minimize}
|
||||||
>
|
>
|
||||||
<div class="i-codicon-chrome-minimize"></div>
|
<div class="i-codicon-chrome-minimize" />
|
||||||
</button>
|
</span>
|
||||||
<button
|
<span
|
||||||
aria-label="Maximize window"
|
|
||||||
title={isWindowMaximized ? 'Restore' : 'Maximize'}
|
title={isWindowMaximized ? 'Restore' : 'Maximize'}
|
||||||
class="bg-inherit border-none hover:bg-hoverOverlay active:bg-hoverOverlayDarker dark:hover:bg-darkHoverOverlay dark:active:bg-darkHoverOverlayDarker"
|
class="hover:bg-hoverOverlay active:bg-hoverOverlayDarker dark:hover:bg-darkHoverOverlay dark:active:bg-darkHoverOverlayDarker"
|
||||||
on:click={toggleMaximize}
|
on:click={toggleMaximize}
|
||||||
>
|
>
|
||||||
{#if isWindowMaximized}
|
{#if isWindowMaximized}
|
||||||
<div class="i-codicon-chrome-restore"></div>
|
<div class="i-codicon-chrome-restore" />
|
||||||
{:else}
|
{:else}
|
||||||
<div class="i-codicon-chrome-maximize"></div>
|
<div class="i-codicon-chrome-maximize" />
|
||||||
{/if}
|
{/if}
|
||||||
</button>
|
</span>
|
||||||
<button
|
<span
|
||||||
aria-label="Close window"
|
|
||||||
title="Close"
|
title="Close"
|
||||||
class="bg-inherit border-none hover:bg-red-700 dark:hover:bg-red-700 hover:text-darkPrimaryText active:bg-red-700/90 dark:active:bg-red-700/90 active:text-darkPrimaryText"
|
class="hover:bg-red-700 dark:hover:bg-red-700 hover:text-darkPrimaryText active:bg-red-700/90 dark:active:bg-red-700/90 active:text-darkPrimaryText"
|
||||||
on:click={close}
|
on:click={close}
|
||||||
>
|
>
|
||||||
<div class="i-codicon-chrome-close"></div>
|
<div class="i-codicon-chrome-close" />
|
||||||
</button>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
@@ -381,13 +377,13 @@
|
|||||||
<!-- Sidebar toggle, only visible on small screens -->
|
<!-- Sidebar toggle, only visible on small screens -->
|
||||||
<div
|
<div
|
||||||
id="sidebarToggle"
|
id="sidebarToggle"
|
||||||
class="z-2000 sidebar-toggle hidden lt-sm:flex justify-center absolute items-center w-8 h-8 rd-8
|
class="z-2000 sidebar-toggle display-none lt-sm:flex justify-center absolute items-center w-8 h-8 rd-8
|
||||||
bg-accent dark:bg-darkAccent active:bg-accentDark dark:active:bg-darkAccentDark"
|
bg-accent dark:bg-darkAccent active:bg-accentDark dark:active:bg-darkAccentDark"
|
||||||
>
|
>
|
||||||
{#if isSideBarOpen}
|
{#if isSideBarOpen}
|
||||||
<span class="i-codicon-close animate-duration-300ms animate-fade-in"></span>
|
<span class="i-codicon-close animate-duration-300ms animate-fade-in" />
|
||||||
{:else}
|
{:else}
|
||||||
<span class="i-codicon-menu animate-duration-300ms animate-fade-in"></span>
|
<span class="i-codicon-menu animate-duration-300ms animate-fade-in" />
|
||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -399,21 +395,24 @@
|
|||||||
class="lt-sm:h-screen lt-sm:shadow-lg lt-sm:shadow lt-sm:transition-transform lt-sm:absolute lt-sm:z-1999
|
class="lt-sm:h-screen lt-sm:shadow-lg lt-sm:shadow lt-sm:transition-transform lt-sm:absolute lt-sm:z-1999
|
||||||
bg-darkPrimaryLighter transition-colors-250 overflow-hidden grid select-none px-2"
|
bg-darkPrimaryLighter transition-colors-250 overflow-hidden grid select-none px-2"
|
||||||
>
|
>
|
||||||
<a href="https://tauri.app" target="_blank">
|
<img
|
||||||
<img class="p-7" src="tauri_logo.png" alt="Tauri logo" />
|
on:click={() => open('https://tauri.app/')}
|
||||||
</a>
|
class="self-center p-7 cursor-pointer"
|
||||||
|
src="tauri_logo.png"
|
||||||
|
alt="Tauri logo"
|
||||||
|
/>
|
||||||
{#if !isWindows}
|
{#if !isWindows}
|
||||||
<a href="##" class="nv justify-between h-8" on:click={toggleDark}>
|
<a href="##" class="nv justify-between h-8" on:click={toggleDark}>
|
||||||
{#if isDark}
|
{#if isDark}
|
||||||
Switch to Light mode
|
Switch to Light mode
|
||||||
<div class="i-ph-sun"></div>
|
<div class="i-ph-sun" />
|
||||||
{:else}
|
{:else}
|
||||||
Switch to Dark mode
|
Switch to Dark mode
|
||||||
<div class="i-ph-moon"></div>
|
<div class="i-ph-moon" />
|
||||||
{/if}
|
{/if}
|
||||||
</a>
|
</a>
|
||||||
<br />
|
<br />
|
||||||
<div class="bg-white/5 h-2px"></div>
|
<div class="bg-white/5 h-2px" />
|
||||||
<br />
|
<br />
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
@@ -423,7 +422,7 @@
|
|||||||
href="https://tauri.app/v1/guides/"
|
href="https://tauri.app/v1/guides/"
|
||||||
>
|
>
|
||||||
Documentation
|
Documentation
|
||||||
<span class="i-codicon-link-external"></span>
|
<span class="i-codicon-link-external" />
|
||||||
</a>
|
</a>
|
||||||
<a
|
<a
|
||||||
class="nv justify-between h-8"
|
class="nv justify-between h-8"
|
||||||
@@ -431,7 +430,7 @@
|
|||||||
href="https://github.com/tauri-apps/tauri"
|
href="https://github.com/tauri-apps/tauri"
|
||||||
>
|
>
|
||||||
GitHub
|
GitHub
|
||||||
<span class="i-codicon-link-external"></span>
|
<span class="i-codicon-link-external" />
|
||||||
</a>
|
</a>
|
||||||
<a
|
<a
|
||||||
class="nv justify-between h-8"
|
class="nv justify-between h-8"
|
||||||
@@ -439,10 +438,10 @@
|
|||||||
href="https://github.com/tauri-apps/tauri/tree/dev/examples/api"
|
href="https://github.com/tauri-apps/tauri/tree/dev/examples/api"
|
||||||
>
|
>
|
||||||
Source
|
Source
|
||||||
<span class="i-codicon-link-external"></span>
|
<span class="i-codicon-link-external" />
|
||||||
</a>
|
</a>
|
||||||
<br />
|
<br />
|
||||||
<div class="bg-white/5 h-2px"></div>
|
<div class="bg-white/5 h-2px" />
|
||||||
<br />
|
<br />
|
||||||
<div
|
<div
|
||||||
class="flex flex-col overflow-y-auto children-h-10 children-flex-none gap-1"
|
class="flex flex-col overflow-y-auto children-h-10 children-flex-none gap-1"
|
||||||
@@ -457,7 +456,7 @@
|
|||||||
isSideBarOpen = false
|
isSideBarOpen = false
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<div class="{view.icon} mr-2"></div>
|
<div class="{view.icon} mr-2" />
|
||||||
<p>{view.label}</p></a
|
<p>{view.label}</p></a
|
||||||
>
|
>
|
||||||
{/if}
|
{/if}
|
||||||
@@ -486,23 +485,21 @@
|
|||||||
id="console"
|
id="console"
|
||||||
class="select-none h-15rem grid grid-rows-[2px_2rem_1fr] gap-1 overflow-hidden"
|
class="select-none h-15rem grid grid-rows-[2px_2rem_1fr] gap-1 overflow-hidden"
|
||||||
>
|
>
|
||||||
<!-- svelte-ignore a11y_no_static_element_interactions -->
|
|
||||||
<div
|
<div
|
||||||
on:mousedown={startResizingConsole}
|
on:mousedown={startResizingConsole}
|
||||||
class="bg-black/20 h-2px cursor-ns-resize"
|
class="bg-black/20 h-2px cursor-ns-resize"
|
||||||
></div>
|
/>
|
||||||
<div class="flex justify-between items-center px-2">
|
<div class="flex justify-between items-center px-2">
|
||||||
<p class="font-semibold">Console</p>
|
<p class="font-semibold">Console</p>
|
||||||
<button
|
<div
|
||||||
aria-label="Clear Console"
|
class="cursor-pointer h-85% rd-1 p-1 flex justify-center items-center
|
||||||
class="cursor-pointer h-85% rd-1 p-1 flex justify-center items-center border-none bg-inherit
|
|
||||||
hover:bg-hoverOverlay dark:hover:bg-darkHoverOverlay
|
hover:bg-hoverOverlay dark:hover:bg-darkHoverOverlay
|
||||||
active:bg-hoverOverlay/25 dark:active:bg-darkHoverOverlay/25
|
active:bg-hoverOverlay/25 dark:active:bg-darkHoverOverlay/25
|
||||||
"
|
"
|
||||||
on:click={clear}
|
on:click={clear}
|
||||||
>
|
>
|
||||||
<div class="i-codicon-clear-all"></div>
|
<div class="i-codicon-clear-all" />
|
||||||
</button>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
bind:this={consoleTextEl}
|
bind:this={consoleTextEl}
|
||||||
|
|||||||
@@ -5,9 +5,8 @@
|
|||||||
import 'uno.css'
|
import 'uno.css'
|
||||||
import './app.css'
|
import './app.css'
|
||||||
import App from './App.svelte'
|
import App from './App.svelte'
|
||||||
import { mount } from 'svelte'
|
|
||||||
|
|
||||||
const app = mount(App, {
|
const app = new App({
|
||||||
target: document.querySelector('#app')
|
target: document.querySelector('#app')
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
<script>
|
<script>
|
||||||
import { getMatches } from '@tauri-apps/plugin-cli'
|
import { getMatches } from "@tauri-apps/plugin-cli";
|
||||||
|
|
||||||
export let onMessage
|
export let onMessage;
|
||||||
|
|
||||||
function cliMatches() {
|
function cliMatches() {
|
||||||
getMatches().then(onMessage).catch(onMessage)
|
getMatches().then(onMessage).catch(onMessage);
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div>
|
<p>
|
||||||
This binary can be run from the terminal and takes the following arguments:
|
This binary can be run from the terminal and takes the following arguments:
|
||||||
<code class="code-block flex flex-wrap my-2">
|
<code class="code-block flex flex-wrap my-2">
|
||||||
<pre>
|
<pre>
|
||||||
@@ -17,7 +17,7 @@
|
|||||||
--verbose</pre>
|
--verbose</pre>
|
||||||
</code>
|
</code>
|
||||||
Additionally, it has a <code>update --background</code> subcommand.
|
Additionally, it has a <code>update --background</code> subcommand.
|
||||||
</div>
|
</p>
|
||||||
<br />
|
<br />
|
||||||
<div class="note">
|
<div class="note">
|
||||||
Note that the arguments are only parsed, not implemented.
|
Note that the arguments are only parsed, not implemented.
|
||||||
|
|||||||
@@ -1,69 +1,69 @@
|
|||||||
<script>
|
<script>
|
||||||
import { fetch as tauriFetch } from '@tauri-apps/plugin-http'
|
import { fetch as tauriFetch } from "@tauri-apps/plugin-http";
|
||||||
import { JsonView } from '@zerodevx/svelte-json-view'
|
import { JsonView } from "@zerodevx/svelte-json-view";
|
||||||
|
|
||||||
let httpMethod = 'GET'
|
let httpMethod = "GET";
|
||||||
let httpBody = ''
|
let httpBody = "";
|
||||||
|
|
||||||
export let onMessage
|
export let onMessage;
|
||||||
|
|
||||||
async function makeHttpRequest() {
|
async function makeHttpRequest() {
|
||||||
let method = httpMethod || 'GET'
|
let method = httpMethod || "GET";
|
||||||
|
|
||||||
const options = {
|
const options = {
|
||||||
method: method || 'GET',
|
method: method || "GET",
|
||||||
headers: {}
|
headers: {},
|
||||||
}
|
};
|
||||||
|
|
||||||
let bodyType
|
let bodyType;
|
||||||
|
|
||||||
if (method !== 'GET') {
|
if (method !== "GET") {
|
||||||
options.body = httpBody
|
options.body = httpBody;
|
||||||
|
|
||||||
if (
|
if (
|
||||||
(httpBody.startsWith('{') && httpBody.endsWith('}')) ||
|
(httpBody.startsWith("{") && httpBody.endsWith("}")) ||
|
||||||
(httpBody.startsWith('[') && httpBody.endsWith(']'))
|
(httpBody.startsWith("[") && httpBody.endsWith("]"))
|
||||||
) {
|
) {
|
||||||
options.headers['Content-Type'] = 'application/json'
|
options.headers["Content-Type"] = "application/json";
|
||||||
bodyType = 'json'
|
bodyType = "json";
|
||||||
} else if (httpBody !== '') {
|
} else if (httpBody !== "") {
|
||||||
bodyType = 'text'
|
bodyType = "text";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const response = await tauriFetch('http://localhost:3003', options)
|
const response = await tauriFetch("http://localhost:3003", options);
|
||||||
const body =
|
const body =
|
||||||
bodyType === 'json' ? await response.json() : await response.text()
|
bodyType === "json" ? await response.json() : await response.text();
|
||||||
|
|
||||||
onMessage({
|
onMessage({
|
||||||
url: response.url,
|
url: response.url,
|
||||||
status: response.status,
|
status: response.status,
|
||||||
ok: response.ok,
|
ok: response.ok,
|
||||||
headers: Object.fromEntries(response.headers.entries()),
|
headers: Object.fromEntries(response.headers.entries()),
|
||||||
body
|
body,
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/// http form
|
/// http form
|
||||||
let foo = 'baz'
|
let foo = "baz";
|
||||||
let bar = 'qux'
|
let bar = "qux";
|
||||||
let result = null
|
let result = null;
|
||||||
|
|
||||||
async function doPost() {
|
async function doPost() {
|
||||||
const form = new FormData()
|
const form = new FormData();
|
||||||
form.append('foo', foo)
|
form.append("foo", foo);
|
||||||
form.append('bar', bar)
|
form.append("bar", bar);
|
||||||
const response = await tauriFetch('http://localhost:3003/tauri', {
|
const response = await tauriFetch("http://localhost:3003/tauri", {
|
||||||
method: 'POST',
|
method: "POST",
|
||||||
body: form
|
body: form,
|
||||||
})
|
});
|
||||||
result = {
|
result = {
|
||||||
url: response.url,
|
url: response.url,
|
||||||
status: response.status,
|
status: response.status,
|
||||||
ok: response.ok,
|
ok: response.ok,
|
||||||
headers: Object.fromEntries(response.headers.entries()),
|
headers: Object.fromEntries(response.headers.entries()),
|
||||||
body: await response.text()
|
body: await response.text(),
|
||||||
}
|
};
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@@ -82,7 +82,7 @@
|
|||||||
placeholder="Request body"
|
placeholder="Request body"
|
||||||
rows="5"
|
rows="5"
|
||||||
bind:value={httpBody}
|
bind:value={httpBody}
|
||||||
></textarea>
|
/>
|
||||||
<br />
|
<br />
|
||||||
<button class="btn" id="make-request"> Make request </button>
|
<button class="btn" id="make-request"> Make request </button>
|
||||||
</form>
|
</form>
|
||||||
|
|||||||
@@ -1,44 +1,38 @@
|
|||||||
<script>
|
<script>
|
||||||
import {
|
import { scan, checkPermissions, requestPermissions, Format, cancel } from "@tauri-apps/plugin-barcode-scanner";
|
||||||
scan,
|
|
||||||
checkPermissions,
|
|
||||||
requestPermissions,
|
|
||||||
Format,
|
|
||||||
cancel
|
|
||||||
} from '@tauri-apps/plugin-barcode-scanner'
|
|
||||||
|
|
||||||
export let onMessage
|
export let onMessage;
|
||||||
|
|
||||||
let scanning = false
|
let scanning = false;
|
||||||
let windowed = true
|
let windowed = true;
|
||||||
let formats = [Format.QRCode]
|
let formats = [Format.QRCode];
|
||||||
const supportedFormats = [Format.QRCode, Format.EAN13]
|
const supportedFormats = [Format.QRCode, Format.EAN13];
|
||||||
|
|
||||||
async function startScan() {
|
async function startScan() {
|
||||||
let permission = await checkPermissions()
|
let permission = await checkPermissions();
|
||||||
if (permission === 'prompt') {
|
if (permission === 'prompt') {
|
||||||
permission = await requestPermissions()
|
permission = await requestPermissions();
|
||||||
}
|
}
|
||||||
if (permission === 'granted') {
|
if (permission === 'granted') {
|
||||||
scanning = true
|
scanning = true;
|
||||||
scan({ windowed, formats })
|
scan({ windowed, formats })
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
scanning = false
|
scanning = false;
|
||||||
onMessage(res)
|
onMessage(res);
|
||||||
})
|
})
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
scanning = false
|
scanning = false;
|
||||||
onMessage(error)
|
onMessage(error);
|
||||||
})
|
});
|
||||||
} else {
|
} else {
|
||||||
onMessage('Permission denied')
|
onMessage('Permission denied')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function cancelScan() {
|
async function cancelScan() {
|
||||||
await cancel()
|
await cancel();
|
||||||
scanning = false
|
scanning = false;
|
||||||
onMessage('cancelled')
|
onMessage("cancelled");
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@@ -65,12 +59,11 @@
|
|||||||
<div class="barcode-scanner--area--container">
|
<div class="barcode-scanner--area--container">
|
||||||
<div class="relative">
|
<div class="relative">
|
||||||
<p>Aim your camera at a QR code</p>
|
<p>Aim your camera at a QR code</p>
|
||||||
<button class="btn" type="button" on:click={cancelScan}>Cancel</button
|
<button class="btn" type="button" on:click={cancelScan}>Cancel</button>
|
||||||
>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="square surround-cover">
|
<div class="square surround-cover">
|
||||||
<div class="barcode-scanner--area--outer surround-cover">
|
<div class="barcode-scanner--area--outer surround-cover">
|
||||||
<div class="barcode-scanner--area--inner"></div>
|
<div class="barcode-scanner--area--inner" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -118,7 +111,7 @@
|
|||||||
transition: 0.3s;
|
transition: 0.3s;
|
||||||
}
|
}
|
||||||
.square:after {
|
.square:after {
|
||||||
content: '';
|
content: "";
|
||||||
top: 0;
|
top: 0;
|
||||||
display: block;
|
display: block;
|
||||||
padding-bottom: 100%;
|
padding-bottom: 100%;
|
||||||
@@ -148,8 +141,7 @@
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
margin: 1rem;
|
margin: 1rem;
|
||||||
border: 2px solid #fff;
|
border: 2px solid #fff;
|
||||||
box-shadow:
|
box-shadow: 0px 0px 2px 1px rgb(0 0 0 / 0.5),
|
||||||
0px 0px 2px 1px rgb(0 0 0 / 0.5),
|
|
||||||
inset 0px 0px 2px 1px rgb(0 0 0 / 0.5);
|
inset 0px 0px 2px 1px rgb(0 0 0 / 0.5);
|
||||||
border-radius: 1rem;
|
border-radius: 1rem;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,56 +1,56 @@
|
|||||||
<script>
|
<script>
|
||||||
import { check } from '@tauri-apps/plugin-updater'
|
import { check } from "@tauri-apps/plugin-updater";
|
||||||
import { relaunch } from '@tauri-apps/plugin-process'
|
import { relaunch } from "@tauri-apps/plugin-process";
|
||||||
|
|
||||||
export let onMessage
|
export let onMessage;
|
||||||
|
|
||||||
let isChecking, isInstalling, newUpdate
|
let isChecking, isInstalling, newUpdate;
|
||||||
let totalSize = 0,
|
let totalSize = 0,
|
||||||
downloadedSize = 0
|
downloadedSize = 0;
|
||||||
|
|
||||||
async function checkUpdate() {
|
async function checkUpdate() {
|
||||||
isChecking = true
|
isChecking = true;
|
||||||
try {
|
try {
|
||||||
const update = await check()
|
const update = await check();
|
||||||
onMessage(`Should update: ${update.available}`)
|
onMessage(`Should update: ${update.available}`);
|
||||||
onMessage(update)
|
onMessage(update);
|
||||||
|
|
||||||
newUpdate = update
|
newUpdate = update;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
onMessage(e)
|
onMessage(e);
|
||||||
} finally {
|
} finally {
|
||||||
isChecking = false
|
isChecking = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function install() {
|
async function install() {
|
||||||
isInstalling = true
|
isInstalling = true;
|
||||||
downloadedSize = 0
|
downloadedSize = 0;
|
||||||
try {
|
try {
|
||||||
await newUpdate.downloadAndInstall((downloadProgress) => {
|
await newUpdate.downloadAndInstall((downloadProgress) => {
|
||||||
switch (downloadProgress.event) {
|
switch (downloadProgress.event) {
|
||||||
case 'Started':
|
case "Started":
|
||||||
totalSize = downloadProgress.data.contentLength
|
totalSize = downloadProgress.data.contentLength;
|
||||||
break
|
break;
|
||||||
case 'Progress':
|
case "Progress":
|
||||||
downloadedSize += downloadProgress.data.chunkLength
|
downloadedSize += downloadProgress.data.chunkLength;
|
||||||
break
|
break;
|
||||||
case 'Finished':
|
case "Finished":
|
||||||
break
|
break;
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
onMessage('Installation complete, restarting...')
|
onMessage("Installation complete, restarting...");
|
||||||
await new Promise((resolve) => setTimeout(resolve, 2000))
|
await new Promise((resolve) => setTimeout(resolve, 2000));
|
||||||
await relaunch()
|
await relaunch();
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error(e)
|
console.error(e);
|
||||||
onMessage(e)
|
onMessage(e);
|
||||||
} finally {
|
} finally {
|
||||||
isInstalling = false
|
isInstalling = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$: progress = totalSize ? Math.round((downloadedSize / totalSize) * 100) : 0
|
$: progress = totalSize ? Math.round((downloadedSize / totalSize) * 100) : 0;
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="flex children:grow children:h10">
|
<div class="flex children:grow children:h10">
|
||||||
@@ -61,7 +61,7 @@
|
|||||||
{:else}
|
{:else}
|
||||||
<div class="progress">
|
<div class="progress">
|
||||||
<span>{progress}%</span>
|
<span>{progress}%</span>
|
||||||
<div class="progress-bar" style="width: {progress}%"></div>
|
<div class="progress-bar" style="width: {progress}%" />
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
+5
-5
@@ -10,20 +10,20 @@
|
|||||||
"format:check": "prettier --check ."
|
"format:check": "prettier --check ."
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@eslint/js": "9.14.0",
|
"@eslint/js": "9.13.0",
|
||||||
"@rollup/plugin-node-resolve": "15.3.0",
|
"@rollup/plugin-node-resolve": "15.3.0",
|
||||||
"@rollup/plugin-terser": "0.4.4",
|
"@rollup/plugin-terser": "0.4.4",
|
||||||
"@rollup/plugin-typescript": "11.1.6",
|
"@rollup/plugin-typescript": "11.1.6",
|
||||||
"@types/eslint__js": "8.42.3",
|
"@types/eslint__js": "8.42.3",
|
||||||
"covector": "^0.12.3",
|
"covector": "^0.12.3",
|
||||||
"eslint": "9.14.0",
|
"eslint": "9.13.0",
|
||||||
"eslint-config-prettier": "9.1.0",
|
"eslint-config-prettier": "9.1.0",
|
||||||
"eslint-plugin-security": "3.0.1",
|
"eslint-plugin-security": "3.0.1",
|
||||||
"prettier": "3.3.3",
|
"prettier": "3.3.3",
|
||||||
"rollup": "4.24.4",
|
"rollup": "4.22.4",
|
||||||
"tslib": "2.8.1",
|
"tslib": "2.7.0",
|
||||||
"typescript": "5.6.3",
|
"typescript": "5.6.3",
|
||||||
"typescript-eslint": "8.13.0"
|
"typescript-eslint": "8.10.0"
|
||||||
},
|
},
|
||||||
"resolutions": {
|
"resolutions": {
|
||||||
"semver": ">=7.5.2",
|
"semver": ">=7.5.2",
|
||||||
|
|||||||
@@ -1,9 +1,5 @@
|
|||||||
# Changelog
|
# 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]
|
## \[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.
|
- [`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.
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "tauri-plugin-clipboard-manager"
|
name = "tauri-plugin-clipboard-manager"
|
||||||
version = "2.0.2"
|
version = "2.0.1"
|
||||||
description = "Read and write to the system clipboard."
|
description = "Read and write to the system clipboard."
|
||||||
edition = { workspace = true }
|
edition = { workspace = true }
|
||||||
authors = { workspace = true }
|
authors = { workspace = true }
|
||||||
@@ -37,3 +37,4 @@ tauri = { workspace = true, features = ["wry"] }
|
|||||||
|
|
||||||
[target."cfg(any(target_os = \"macos\", windows, target_os = \"linux\", target_os = \"dragonfly\", target_os = \"freebsd\", target_os = \"openbsd\", target_os = \"netbsd\"))".dependencies]
|
[target."cfg(any(target_os = \"macos\", windows, target_os = \"linux\", target_os = \"dragonfly\", target_os = \"freebsd\", target_os = \"openbsd\", target_os = \"netbsd\"))".dependencies]
|
||||||
arboard = "3"
|
arboard = "3"
|
||||||
|
image = "0.25"
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
// SPDX-License-Identifier: MIT
|
// SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
use arboard::ImageData;
|
use arboard::ImageData;
|
||||||
|
use image::ImageEncoder;
|
||||||
use serde::de::DeserializeOwned;
|
use serde::de::DeserializeOwned;
|
||||||
use tauri::{image::Image, plugin::PluginApi, AppHandle, Runtime};
|
use tauri::{image::Image, plugin::PluginApi, AppHandle, Runtime};
|
||||||
|
|
||||||
@@ -84,11 +85,16 @@ impl<R: Runtime> Clipboard<R> {
|
|||||||
match &self.clipboard {
|
match &self.clipboard {
|
||||||
Ok(clipboard) => {
|
Ok(clipboard) => {
|
||||||
let image = clipboard.lock().unwrap().get_image()?;
|
let image = clipboard.lock().unwrap().get_image()?;
|
||||||
let image = Image::new_owned(
|
|
||||||
image.bytes.to_vec(),
|
let mut buffer: Vec<u8> = Vec::new();
|
||||||
|
image::codecs::png::PngEncoder::new(&mut buffer).write_image(
|
||||||
|
&image.bytes,
|
||||||
image.width as u32,
|
image.width as u32,
|
||||||
image.height as u32,
|
image.height as u32,
|
||||||
);
|
image::ExtendedColorType::Rgba8,
|
||||||
|
)?;
|
||||||
|
|
||||||
|
let image = Image::new_owned(buffer, image.width as u32, image.height as u32);
|
||||||
Ok(image)
|
Ok(image)
|
||||||
}
|
}
|
||||||
Err(e) => Err(crate::Error::Clipboard(e.to_string())),
|
Err(e) => Err(crate::Error::Clipboard(e.to_string())),
|
||||||
|
|||||||
@@ -15,6 +15,9 @@ pub enum Error {
|
|||||||
Clipboard(String),
|
Clipboard(String),
|
||||||
#[error(transparent)]
|
#[error(transparent)]
|
||||||
Tauri(#[from] tauri::Error),
|
Tauri(#[from] tauri::Error),
|
||||||
|
#[cfg(desktop)]
|
||||||
|
#[error("invalid image: {0}")]
|
||||||
|
Image(#[from] image::ImageError),
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Serialize for Error {
|
impl Serialize for Error {
|
||||||
|
|||||||
@@ -10,11 +10,11 @@
|
|||||||
"tauri": "tauri"
|
"tauri": "tauri"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@tauri-apps/api": "2.0.3",
|
"@tauri-apps/api": "2.0.2",
|
||||||
"@tauri-apps/plugin-deep-link": "2.0.0"
|
"@tauri-apps/plugin-deep-link": "2.0.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@tauri-apps/cli": "2.0.4",
|
"@tauri-apps/cli": "2.0.3",
|
||||||
"typescript": "^5.2.2",
|
"typescript": "^5.2.2",
|
||||||
"vite": "^5.4.7"
|
"vite": "^5.4.7"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,5 @@
|
|||||||
# Changelog
|
# 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]
|
## \[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`
|
- [`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`
|
||||||
|
|||||||
@@ -35,12 +35,8 @@ url = { workspace = true }
|
|||||||
anyhow = "1"
|
anyhow = "1"
|
||||||
uuid = { version = "1", features = ["v4"] }
|
uuid = { version = "1", features = ["v4"] }
|
||||||
glob = "0.3"
|
glob = "0.3"
|
||||||
# TODO: Remove `serialization-compat-6` in v3
|
notify = { version = "6", optional = true, features = ["serde"] }
|
||||||
notify = { version = "7", optional = true, features = [
|
notify-debouncer-full = { version = "0.3", optional = true }
|
||||||
"serde",
|
|
||||||
"serialization-compat-6",
|
|
||||||
] }
|
|
||||||
notify-debouncer-full = { version = "0.4", optional = true }
|
|
||||||
dunce = { workspace = true }
|
dunce = { workspace = true }
|
||||||
percent-encoding = "2"
|
percent-encoding = "2"
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@tauri-apps/plugin-fs",
|
"name": "@tauri-apps/plugin-fs",
|
||||||
"version": "2.0.2",
|
"version": "2.0.1",
|
||||||
"description": "Access the file system.",
|
"description": "Access the file system.",
|
||||||
"license": "MIT OR Apache-2.0",
|
"license": "MIT OR Apache-2.0",
|
||||||
"authors": [
|
"authors": [
|
||||||
|
|||||||
@@ -24,7 +24,6 @@ This default permission set prevents access to critical components
|
|||||||
of the Tauri application by default.
|
of the Tauri application by default.
|
||||||
On Windows the webview data folder access is denied.
|
On Windows the webview data folder access is denied.
|
||||||
|
|
||||||
#### Included permissions within this default permission set:
|
|
||||||
|
|
||||||
|
|
||||||
- `create-app-specific-dirs`
|
- `create-app-specific-dirs`
|
||||||
|
|||||||
@@ -26,7 +26,6 @@ This default permission set prevents access to critical components
|
|||||||
of the Tauri application by default.
|
of the Tauri application by default.
|
||||||
On Windows the webview data folder access is denied.
|
On Windows the webview data folder access is denied.
|
||||||
|
|
||||||
#### Included permissions within this default permission set:
|
|
||||||
"""
|
"""
|
||||||
permissions = [
|
permissions = [
|
||||||
"create-app-specific-dirs",
|
"create-app-specific-dirs",
|
||||||
|
|||||||
@@ -1665,7 +1665,7 @@
|
|||||||
"const": "create-app-specific-dirs"
|
"const": "create-app-specific-dirs"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"description": "This set of permissions describes the what kind of\nfile system access the `fs` plugin has enabled or denied by default.\n\n#### Granted Permissions\n\nThis default permission set enables read access to the\napplication specific directories (AppConfig, AppData, AppLocalData, AppCache,\nAppLog) and all files and sub directories created in it.\nThe location of these directories depends on the operating system,\nwhere the application is run.\n\nIn general these directories need to be manually created\nby the application at runtime, before accessing files or folders\nin it is possible.\n\nTherefore, it is also allowed to create all of these folders via\nthe `mkdir` command.\n\n#### Denied Permissions\n\nThis default permission set prevents access to critical components\nof the Tauri application by default.\nOn Windows the webview data folder access is denied.\n\n#### Included permissions within this default permission set:\n",
|
"description": "This set of permissions describes the what kind of\nfile system access the `fs` plugin has enabled or denied by default.\n\n#### Granted Permissions\n\nThis default permission set enables read access to the\napplication specific directories (AppConfig, AppData, AppLocalData, AppCache,\nAppLog) and all files and sub directories created in it.\nThe location of these directories depends on the operating system,\nwhere the application is run.\n\nIn general these directories need to be manually created\nby the application at runtime, before accessing files or folders\nin it is possible.\n\nTherefore, it is also allowed to create all of these folders via\nthe `mkdir` command.\n\n#### Denied Permissions\n\nThis default permission set prevents access to critical components\nof the Tauri application by default.\nOn Windows the webview data folder access is denied.\n\n",
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"const": "default"
|
"const": "default"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
// SPDX-License-Identifier: MIT
|
// SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
use notify::{Config, Event, RecommendedWatcher, RecursiveMode, Watcher};
|
use notify::{Config, Event, RecommendedWatcher, RecursiveMode, Watcher};
|
||||||
use notify_debouncer_full::{new_debouncer, DebounceEventResult, Debouncer, RecommendedCache};
|
use notify_debouncer_full::{new_debouncer, DebounceEventResult, Debouncer, FileIdMap};
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
use tauri::{
|
use tauri::{
|
||||||
ipc::{Channel, CommandScope, GlobalScope},
|
ipc::{Channel, CommandScope, GlobalScope},
|
||||||
@@ -47,7 +47,7 @@ impl WatcherResource {
|
|||||||
impl Resource for WatcherResource {}
|
impl Resource for WatcherResource {}
|
||||||
|
|
||||||
enum WatcherKind {
|
enum WatcherKind {
|
||||||
Debouncer(Debouncer<RecommendedWatcher, RecommendedCache>),
|
Debouncer(Debouncer<RecommendedWatcher, FileIdMap>),
|
||||||
Watcher(RecommendedWatcher),
|
Watcher(RecommendedWatcher),
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -111,7 +111,8 @@ pub async fn watch<R: Runtime>(
|
|||||||
let (tx, rx) = channel();
|
let (tx, rx) = channel();
|
||||||
let mut debouncer = new_debouncer(Duration::from_millis(delay), None, tx)?;
|
let mut debouncer = new_debouncer(Duration::from_millis(delay), None, tx)?;
|
||||||
for path in &resolved_paths {
|
for path in &resolved_paths {
|
||||||
debouncer.watch(path, recursive_mode)?;
|
debouncer.watcher().watch(path.as_ref(), recursive_mode)?;
|
||||||
|
debouncer.cache().add_root(path, recursive_mode);
|
||||||
}
|
}
|
||||||
watch_debounced(on_event, rx);
|
watch_debounced(on_event, rx);
|
||||||
WatcherKind::Debouncer(debouncer)
|
WatcherKind::Debouncer(debouncer)
|
||||||
@@ -119,7 +120,7 @@ pub async fn watch<R: Runtime>(
|
|||||||
let (tx, rx) = channel();
|
let (tx, rx) = channel();
|
||||||
let mut watcher = RecommendedWatcher::new(tx, Config::default())?;
|
let mut watcher = RecommendedWatcher::new(tx, Config::default())?;
|
||||||
for path in &resolved_paths {
|
for path in &resolved_paths {
|
||||||
watcher.watch(path, recursive_mode)?;
|
watcher.watch(path.as_ref(), recursive_mode)?;
|
||||||
}
|
}
|
||||||
watch_raw(on_event, rx);
|
watch_raw(on_event, rx);
|
||||||
WatcherKind::Watcher(watcher)
|
WatcherKind::Watcher(watcher)
|
||||||
@@ -139,14 +140,14 @@ pub async fn unwatch<R: Runtime>(webview: Webview<R>, rid: ResourceId) -> Comman
|
|||||||
match &mut watcher.kind {
|
match &mut watcher.kind {
|
||||||
WatcherKind::Debouncer(ref mut debouncer) => {
|
WatcherKind::Debouncer(ref mut debouncer) => {
|
||||||
for path in &watcher.paths {
|
for path in &watcher.paths {
|
||||||
debouncer.unwatch(path).map_err(|e| {
|
debouncer.watcher().unwatch(path.as_ref()).map_err(|e| {
|
||||||
format!("failed to unwatch path: {} with error: {e}", path.display())
|
format!("failed to unwatch path: {} with error: {e}", path.display())
|
||||||
})?;
|
})?;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
WatcherKind::Watcher(ref mut w) => {
|
WatcherKind::Watcher(ref mut w) => {
|
||||||
for path in &watcher.paths {
|
for path in &watcher.paths {
|
||||||
w.unwatch(path).map_err(|e| {
|
w.unwatch(path.as_ref()).map_err(|e| {
|
||||||
format!("failed to unwatch path: {} with error: {e}", path.display())
|
format!("failed to unwatch path: {} with error: {e}", path.display())
|
||||||
})?;
|
})?;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -191,11 +191,6 @@ pub async fn fetch<R: Runtime>(
|
|||||||
let name = HeaderName::from_str(&h)?;
|
let name = HeaderName::from_str(&h)?;
|
||||||
#[cfg(not(feature = "unsafe-headers"))]
|
#[cfg(not(feature = "unsafe-headers"))]
|
||||||
if is_unsafe_header(&name) {
|
if is_unsafe_header(&name) {
|
||||||
#[cfg(debug_assertions)]
|
|
||||||
{
|
|
||||||
eprintln!("[\x1b[33mWARNING\x1b[0m] Skipping {name} header as it is a forbidden header per fetch spec https://fetch.spec.whatwg.org/#terminology-headers");
|
|
||||||
eprintln!("[\x1b[33mWARNING\x1b[0m] if keeping the header is a desired behavior, you can enable `unsafe-headers` feature flag in your Cargo.toml");
|
|
||||||
}
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,5 @@
|
|||||||
# Changelog
|
# 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]
|
## \[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.
|
- [`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.
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "tauri-plugin-log"
|
name = "tauri-plugin-log"
|
||||||
version = "2.0.2"
|
version = "2.0.1"
|
||||||
description = "Configurable logging for your Tauri app."
|
description = "Configurable logging for your Tauri app."
|
||||||
authors = { workspace = true }
|
authors = { workspace = true }
|
||||||
license = { workspace = true }
|
license = { workspace = true }
|
||||||
@@ -31,7 +31,7 @@ serde_repr = "0.1"
|
|||||||
byte-unit = "5"
|
byte-unit = "5"
|
||||||
log = { workspace = true, features = ["kv_unstable"] }
|
log = { workspace = true, features = ["kv_unstable"] }
|
||||||
time = { version = "0.3", features = ["formatting", "local-offset"] }
|
time = { version = "0.3", features = ["formatting", "local-offset"] }
|
||||||
fern = "0.7"
|
fern = "0.6"
|
||||||
thiserror = "1"
|
thiserror = "1"
|
||||||
|
|
||||||
[target."cfg(target_os = \"android\")".dependencies]
|
[target."cfg(target_os = \"android\")".dependencies]
|
||||||
|
|||||||
@@ -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,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}|register_listener`,{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__})}
|
||||||
|
|||||||
@@ -37,6 +37,17 @@ regex = "1"
|
|||||||
open = { version = "5", features = ["shellexecute-on-windows"] }
|
open = { version = "5", features = ["shellexecute-on-windows"] }
|
||||||
encoding_rs = "0.8"
|
encoding_rs = "0.8"
|
||||||
os_pipe = "1"
|
os_pipe = "1"
|
||||||
|
dunce = { workspace = true }
|
||||||
|
|
||||||
|
[target."cfg(windows)".dependencies.windows]
|
||||||
|
version = "0.54"
|
||||||
|
features = [
|
||||||
|
"Win32_Foundation",
|
||||||
|
"Win32_UI_Shell_Common",
|
||||||
|
"Win32_UI_WindowsAndMessaging",
|
||||||
|
"Win32_System_Com",
|
||||||
|
"Win32_System_Registry",
|
||||||
|
]
|
||||||
|
|
||||||
[target.'cfg(target_os = "ios")'.dependencies]
|
[target.'cfg(target_os = "ios")'.dependencies]
|
||||||
tauri = { workspace = true, features = ["wry"] }
|
tauri = { workspace = true, features = ["wry"] }
|
||||||
|
|||||||
@@ -30,6 +30,15 @@ pub enum Error {
|
|||||||
/// JSON error.
|
/// JSON error.
|
||||||
#[error(transparent)]
|
#[error(transparent)]
|
||||||
Json(#[from] serde_json::Error),
|
Json(#[from] serde_json::Error),
|
||||||
|
/// API not supported on the current platform
|
||||||
|
#[error("API not supported on the current platform")]
|
||||||
|
UnsupportedPlatform,
|
||||||
|
#[error(transparent)]
|
||||||
|
#[cfg(windows)]
|
||||||
|
Win32Error(#[from] windows::core::Error),
|
||||||
|
/// Path doesn't have a parent.
|
||||||
|
#[error("Path doesn't have a parent: {0}")]
|
||||||
|
NoParent(PathBuf),
|
||||||
/// Utf8 error.
|
/// Utf8 error.
|
||||||
#[error(transparent)]
|
#[error(transparent)]
|
||||||
Utf8(#[from] std::string::FromUtf8Error),
|
Utf8(#[from] std::string::FromUtf8Error),
|
||||||
|
|||||||
@@ -85,6 +85,10 @@ impl<R: Runtime> Shell<R> {
|
|||||||
.run_mobile_plugin("open", path.into())
|
.run_mobile_plugin("open", path.into())
|
||||||
.map_err(Into::into)
|
.map_err(Into::into)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn show_item_in_directory<P: AsRef<Path>>(&self, p: P) -> Result<()> {
|
||||||
|
open::show_item_in_directory(p)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub trait ShellExt<R: Runtime> {
|
pub trait ShellExt<R: Runtime> {
|
||||||
|
|||||||
@@ -0,0 +1,3 @@
|
|||||||
|
use std::path::Path;
|
||||||
|
|
||||||
|
pub fn show_item_in_directory(file: &Path) -> crate::Result<()> {}
|
||||||
@@ -9,6 +9,22 @@ use serde::{Deserialize, Deserializer};
|
|||||||
use crate::scope::OpenScope;
|
use crate::scope::OpenScope;
|
||||||
use std::str::FromStr;
|
use std::str::FromStr;
|
||||||
|
|
||||||
|
#[cfg(windows)]
|
||||||
|
#[path = "windows.rs"]
|
||||||
|
mod platform;
|
||||||
|
#[cfg(target_os = "macos")]
|
||||||
|
#[path = "macos.rs"]
|
||||||
|
mod platform;
|
||||||
|
#[cfg(any(
|
||||||
|
target_os = "linux",
|
||||||
|
target_os = "dragonfly",
|
||||||
|
target_os = "freebsd",
|
||||||
|
target_os = "netbsd",
|
||||||
|
target_os = "openbsd"
|
||||||
|
))]
|
||||||
|
#[path = "linux.rs"]
|
||||||
|
mod platform;
|
||||||
|
|
||||||
/// Program to use on the [`open()`] call.
|
/// Program to use on the [`open()`] call.
|
||||||
pub enum Program {
|
pub enum Program {
|
||||||
/// Use the `open` program.
|
/// Use the `open` program.
|
||||||
@@ -120,3 +136,30 @@ impl Program {
|
|||||||
pub fn open<P: AsRef<str>>(scope: &OpenScope, path: P, with: Option<Program>) -> crate::Result<()> {
|
pub fn open<P: AsRef<str>>(scope: &OpenScope, path: P, with: Option<Program>) -> crate::Result<()> {
|
||||||
scope.open(path.as_ref(), with).map_err(Into::into)
|
scope.open(path.as_ref(), with).map_err(Into::into)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn show_item_in_directory<P: AsRef<std::path::Path>>(p: P) -> crate::Result<()> {
|
||||||
|
let p = p.as_ref().canonicalize()?;
|
||||||
|
let p = dunce::simplified(&p);
|
||||||
|
|
||||||
|
#[cfg(any(
|
||||||
|
windows,
|
||||||
|
target_os = "macos",
|
||||||
|
target_os = "linux",
|
||||||
|
target_os = "dragonfly",
|
||||||
|
target_os = "freebsd",
|
||||||
|
target_os = "netbsd",
|
||||||
|
target_os = "openbsd"
|
||||||
|
))]
|
||||||
|
return platform::show_item_in_directory(p);
|
||||||
|
|
||||||
|
#[cfg(not(any(
|
||||||
|
windows,
|
||||||
|
target_os = "macos",
|
||||||
|
target_os = "linux",
|
||||||
|
target_os = "dragonfly",
|
||||||
|
target_os = "freebsd",
|
||||||
|
target_os = "netbsd",
|
||||||
|
target_os = "openbsd"
|
||||||
|
)))]
|
||||||
|
Err(crate::Error::UnsupportedPlatform)
|
||||||
|
}
|
||||||
@@ -0,0 +1,59 @@
|
|||||||
|
use std::path::Path;
|
||||||
|
|
||||||
|
use windows::{
|
||||||
|
core::{w, HSTRING, PCWSTR},
|
||||||
|
Win32::{
|
||||||
|
Foundation::ERROR_FILE_NOT_FOUND,
|
||||||
|
System::Com::CoInitialize,
|
||||||
|
UI::{
|
||||||
|
Shell::{
|
||||||
|
ILCreateFromPathW, ILFree, SHOpenFolderAndSelectItems, ShellExecuteExW,
|
||||||
|
SHELLEXECUTEINFOW,
|
||||||
|
},
|
||||||
|
WindowsAndMessaging::SW_SHOWNORMAL,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
pub fn show_item_in_directory(file: &Path) -> crate::Result<()> {
|
||||||
|
let _ = unsafe { CoInitialize(None) };
|
||||||
|
|
||||||
|
let dir = file
|
||||||
|
.parent()
|
||||||
|
.ok_or_else(|| crate::Error::NoParent(file.to_path_buf()))?;
|
||||||
|
|
||||||
|
let dir = HSTRING::from(dir);
|
||||||
|
let dir_item = unsafe { ILCreateFromPathW(PCWSTR::from_raw(dir.as_ptr())) };
|
||||||
|
|
||||||
|
let file_h = HSTRING::from(file);
|
||||||
|
let file_item = unsafe { ILCreateFromPathW(PCWSTR::from_raw(file_h.as_ptr())) };
|
||||||
|
|
||||||
|
unsafe {
|
||||||
|
if let Err(e) = SHOpenFolderAndSelectItems(dir_item, Some(&[file_item]), 0) {
|
||||||
|
if e.code().0 == ERROR_FILE_NOT_FOUND.0 as i32 {
|
||||||
|
let is_dir = std::fs::metadata(file).map(|f| f.is_dir()).unwrap_or(false);
|
||||||
|
let mut info = SHELLEXECUTEINFOW {
|
||||||
|
cbSize: std::mem::size_of::<SHELLEXECUTEINFOW>() as _,
|
||||||
|
nShow: SW_SHOWNORMAL.0,
|
||||||
|
lpVerb: if is_dir {
|
||||||
|
w!("explore")
|
||||||
|
} else {
|
||||||
|
PCWSTR::null()
|
||||||
|
},
|
||||||
|
lpClass: if is_dir { w!("folder") } else { PCWSTR::null() },
|
||||||
|
lpFile: PCWSTR(file_h.as_ptr()),
|
||||||
|
..std::mem::zeroed()
|
||||||
|
};
|
||||||
|
|
||||||
|
ShellExecuteExW(&mut info)?;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
unsafe {
|
||||||
|
ILFree(Some(dir_item));
|
||||||
|
ILFree(Some(file_item));
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
@@ -9,6 +9,6 @@
|
|||||||
"author": "",
|
"author": "",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@tauri-apps/cli": "2.0.4"
|
"@tauri-apps/cli": "2.0.3"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,10 +2,6 @@
|
|||||||
|
|
||||||
## \[2.0.1]
|
## \[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.
|
- [`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]
|
## \[2.0.0]
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "tauri-plugin-sql"
|
name = "tauri-plugin-sql"
|
||||||
version = "2.0.2"
|
version = "2.0.1"
|
||||||
description = "Interface with SQL databases."
|
description = "Interface with SQL databases."
|
||||||
authors = { workspace = true }
|
authors = { workspace = true }
|
||||||
license = { workspace = true }
|
license = { workspace = true }
|
||||||
|
|||||||
@@ -129,12 +129,12 @@ export default class Database {
|
|||||||
* ```ts
|
* ```ts
|
||||||
* // for sqlite & postgres
|
* // for sqlite & postgres
|
||||||
* const result = await db.select(
|
* const result = await db.select(
|
||||||
* "SELECT * from todos WHERE id = $1", [ id ]
|
* "SELECT * from todos WHERE id = $1", id
|
||||||
* );
|
* );
|
||||||
*
|
*
|
||||||
* // for mysql
|
* // for mysql
|
||||||
* const result = await db.select(
|
* const result = await db.select(
|
||||||
* "SELECT * from todos WHERE id = ?", [ id ]
|
* "SELECT * from todos WHERE id = ?", id
|
||||||
* );
|
* );
|
||||||
* ```
|
* ```
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@tauri-apps/plugin-sql",
|
"name": "@tauri-apps/plugin-sql",
|
||||||
"version": "2.0.1",
|
"version": "2.0.0",
|
||||||
"description": "Interface with SQL databases",
|
"description": "Interface with SQL databases",
|
||||||
"license": "MIT OR Apache-2.0",
|
"license": "MIT OR Apache-2.0",
|
||||||
"authors": [
|
"authors": [
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
"tauri": "tauri"
|
"tauri": "tauri"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@tauri-apps/cli": "2.0.4",
|
"@tauri-apps/cli": "2.0.3",
|
||||||
"vite": "^5.0.12",
|
"vite": "^5.0.12",
|
||||||
"typescript": "^5.4.7"
|
"typescript": "^5.4.7"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,5 @@
|
|||||||
# Changelog
|
# 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]
|
## \[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.
|
- [`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.
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "tauri-plugin-upload"
|
name = "tauri-plugin-upload"
|
||||||
version = "2.1.0"
|
version = "2.0.1"
|
||||||
description = "Upload files from disk to a remote server over HTTP."
|
description = "Upload files from disk to a remote server over HTTP."
|
||||||
authors = { workspace = true }
|
authors = { workspace = true }
|
||||||
license = { workspace = true }
|
license = { workspace = true }
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ import { invoke, Channel } from '@tauri-apps/api/core'
|
|||||||
interface ProgressPayload {
|
interface ProgressPayload {
|
||||||
progress: number
|
progress: number
|
||||||
total: number
|
total: number
|
||||||
transferSpeed: number
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type ProgressHandler = (progress: ProgressPayload) => void
|
type ProgressHandler = (progress: ProgressPayload) => void
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@tauri-apps/plugin-upload",
|
"name": "@tauri-apps/plugin-upload",
|
||||||
"version": "2.1.0",
|
"version": "2.0.0",
|
||||||
"description": "Upload files from disk to a remote server over HTTP.",
|
"description": "Upload files from disk to a remote server over HTTP.",
|
||||||
"license": "MIT OR Apache-2.0",
|
"license": "MIT OR Apache-2.0",
|
||||||
"authors": [
|
"authors": [
|
||||||
|
|||||||
@@ -13,9 +13,6 @@
|
|||||||
html_favicon_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png"
|
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 futures_util::TryStreamExt;
|
||||||
use serde::{ser::Serializer, Serialize};
|
use serde::{ser::Serializer, Serialize};
|
||||||
use tauri::{
|
use tauri::{
|
||||||
@@ -58,11 +55,9 @@ impl Serialize for Error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, Serialize)]
|
#[derive(Clone, Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
struct ProgressPayload {
|
struct ProgressPayload {
|
||||||
progress: u64,
|
progress: u64,
|
||||||
total: u64,
|
total: u64,
|
||||||
transfer_speed: u64,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[command]
|
#[command]
|
||||||
@@ -93,14 +88,11 @@ async fn download(
|
|||||||
let mut file = BufWriter::new(File::create(file_path).await?);
|
let mut file = BufWriter::new(File::create(file_path).await?);
|
||||||
let mut stream = response.bytes_stream();
|
let mut stream = response.bytes_stream();
|
||||||
|
|
||||||
let mut stats = TransferStats::default();
|
|
||||||
while let Some(chunk) = stream.try_next().await? {
|
while let Some(chunk) = stream.try_next().await? {
|
||||||
file.write_all(&chunk).await?;
|
file.write_all(&chunk).await?;
|
||||||
stats.record_chunk_transfer(chunk.len());
|
|
||||||
let _ = on_progress.send(ProgressPayload {
|
let _ = on_progress.send(ProgressPayload {
|
||||||
progress: chunk.len() as u64,
|
progress: chunk.len() as u64,
|
||||||
total,
|
total,
|
||||||
transfer_speed: stats.transfer_speed,
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
file.flush().await?;
|
file.flush().await?;
|
||||||
@@ -146,16 +138,10 @@ async fn upload(
|
|||||||
fn file_to_body(channel: Channel<ProgressPayload>, file: File) -> reqwest::Body {
|
fn file_to_body(channel: Channel<ProgressPayload>, file: File) -> reqwest::Body {
|
||||||
let stream = FramedRead::new(file, BytesCodec::new()).map_ok(|r| r.freeze());
|
let stream = FramedRead::new(file, BytesCodec::new()).map_ok(|r| r.freeze());
|
||||||
|
|
||||||
let mut stats = TransferStats::default();
|
|
||||||
reqwest::Body::wrap_stream(ReadProgressStream::new(
|
reqwest::Body::wrap_stream(ReadProgressStream::new(
|
||||||
stream,
|
stream,
|
||||||
Box::new(move |progress, total| {
|
Box::new(move |progress, total| {
|
||||||
stats.record_chunk_transfer(progress as usize);
|
let _ = channel.send(ProgressPayload { progress, total });
|
||||||
let _ = channel.send(ProgressPayload {
|
|
||||||
progress,
|
|
||||||
total,
|
|
||||||
transfer_speed: stats.transfer_speed,
|
|
||||||
});
|
|
||||||
}),
|
}),
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,52 +0,0 @@
|
|||||||
// 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 is used to track and calculate the transfer speed of data chunks over time.
|
|
||||||
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
|
|
||||||
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,
|
|
||||||
start_time: Instant::now(),
|
|
||||||
granularity,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Records the transfer of a data chunk and updates the transfer speed if the granularity period has elapsed.
|
|
||||||
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.accumulated_time += it_took;
|
|
||||||
|
|
||||||
// If the accumulated time exceeds the granularity, calculate the transfer speed.
|
|
||||||
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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -9,7 +9,7 @@
|
|||||||
"preview": "vite preview"
|
"preview": "vite preview"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@tauri-apps/cli": "2.0.4",
|
"@tauri-apps/cli": "2.0.3",
|
||||||
"typescript": "^5.3.3",
|
"typescript": "^5.3.3",
|
||||||
"vite": "^5.4.7"
|
"vite": "^5.4.7"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,9 +1,5 @@
|
|||||||
# Changelog
|
# 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]
|
## \[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.
|
- [`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.
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "tauri-plugin-window-state"
|
name = "tauri-plugin-window-state"
|
||||||
version = "2.0.2"
|
version = "2.0.1"
|
||||||
description = "Save window positions and sizes and restore them when the app is reopened."
|
description = "Save window positions and sizes and restore them when the app is reopened."
|
||||||
authors = { workspace = true }
|
authors = { workspace = true }
|
||||||
license = { workspace = true }
|
license = { workspace = true }
|
||||||
|
|||||||
@@ -471,23 +471,13 @@ impl Builder {
|
|||||||
.0
|
.0
|
||||||
.try_lock()
|
.try_lock()
|
||||||
.is_ok()
|
.is_ok()
|
||||||
|
&& !window_clone.is_minimized().unwrap_or_default()
|
||||||
|
&& !window_clone.is_maximized().unwrap_or_default()
|
||||||
{
|
{
|
||||||
// TODO: Remove once https://github.com/tauri-apps/tauri/issues/5812 is resolved.
|
let mut c = cache.lock().unwrap();
|
||||||
let is_maximized = if cfg!(target_os = "macos")
|
if let Some(state) = c.get_mut(&label) {
|
||||||
&& (!window_clone.is_decorated().unwrap_or_default()
|
state.width = size.width;
|
||||||
|| !window_clone.is_resizable().unwrap_or_default())
|
state.height = size.height;
|
||||||
{
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Generated
+557
-721
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user