From 4bd1f15bb983c9228f38e3630cf3315aedb86e93 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Sat, 28 Sep 2024 14:44:24 +0800
Subject: [PATCH 01/40] fix(deps): update tauri monorepo (#1846)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
Cargo.lock | 210 +++---------------
Cargo.toml | 8 +-
examples/api/package.json | 4 +-
plugins/deep-link/examples/app/package.json | 4 +-
.../examples/vanilla/package.json | 2 +-
.../examples/AppSettingsManager/package.json | 2 +-
.../websocket/examples/tauri-app/package.json | 2 +-
pnpm-lock.yaml | 172 +++++++-------
8 files changed, 130 insertions(+), 274 deletions(-)
diff --git a/Cargo.lock b/Cargo.lock
index 9c3f85dd..69d77592 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -2439,19 +2439,6 @@ dependencies = [
"x11",
]
-[[package]]
-name = "generator"
-version = "0.7.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5cc16584ff22b460a382b7feec54b23d2908d858152e5739a120b949293bd74e"
-dependencies = [
- "cc",
- "libc",
- "log",
- "rustversion",
- "windows 0.48.0",
-]
-
[[package]]
name = "generic-array"
version = "0.14.7"
@@ -3580,21 +3567,6 @@ dependencies = [
"value-bag",
]
-[[package]]
-name = "loom"
-version = "0.5.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ff50ecb28bb86013e935fb6683ab1f6d3a20016f123c76fd4c27470076ac30f5"
-dependencies = [
- "cfg-if",
- "generator",
- "scoped-tls",
- "serde",
- "serde_json",
- "tracing",
- "tracing-subscriber",
-]
-
[[package]]
name = "loop9"
version = "0.1.5"
@@ -3652,15 +3624,6 @@ dependencies = [
"tendril",
]
-[[package]]
-name = "matchers"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558"
-dependencies = [
- "regex-automata 0.1.10",
-]
-
[[package]]
name = "matches"
version = "0.1.10"
@@ -3808,16 +3771,17 @@ dependencies = [
[[package]]
name = "muda"
-version = "0.14.1"
+version = "0.15.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ba8ac4080fb1e097c2c22acae467e46e4da72d941f02e82b67a87a2a89fa38b1"
+checksum = "b8123dfd4996055ac9b15a60ad263b44b01e539007523ad7a4a533a3d93b0591"
dependencies = [
- "cocoa",
"crossbeam-channel",
"dpi",
"gtk",
"keyboard-types",
- "objc",
+ "objc2",
+ "objc2-app-kit",
+ "objc2-foundation",
"once_cell",
"png",
"serde",
@@ -3971,16 +3935,6 @@ dependencies = [
"zbus",
]
-[[package]]
-name = "nu-ansi-term"
-version = "0.46.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84"
-dependencies = [
- "overload",
- "winapi",
-]
-
[[package]]
name = "num-bigint"
version = "0.4.6"
@@ -4358,12 +4312,6 @@ dependencies = [
"windows-sys 0.59.0",
]
-[[package]]
-name = "overload"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
-
[[package]]
name = "pango"
version = "0.18.3"
@@ -5166,17 +5114,8 @@ checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619"
dependencies = [
"aho-corasick",
"memchr",
- "regex-automata 0.4.7",
- "regex-syntax 0.8.4",
-]
-
-[[package]]
-name = "regex-automata"
-version = "0.1.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132"
-dependencies = [
- "regex-syntax 0.6.29",
+ "regex-automata",
+ "regex-syntax",
]
[[package]]
@@ -5187,15 +5126,9 @@ checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df"
dependencies = [
"aho-corasick",
"memchr",
- "regex-syntax 0.8.4",
+ "regex-syntax",
]
-[[package]]
-name = "regex-syntax"
-version = "0.6.29"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
-
[[package]]
name = "regex-syntax"
version = "0.8.4"
@@ -5531,12 +5464,6 @@ dependencies = [
"untrusted",
]
-[[package]]
-name = "rustversion"
-version = "1.0.17"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6"
-
[[package]]
name = "rusty-fork"
version = "0.3.0"
@@ -5594,6 +5521,7 @@ dependencies = [
"serde",
"serde_json",
"url",
+ "uuid",
]
[[package]]
@@ -5873,15 +5801,6 @@ dependencies = [
"digest",
]
-[[package]]
-name = "sharded-slab"
-version = "0.1.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6"
-dependencies = [
- "lazy_static",
-]
-
[[package]]
name = "shared_child"
version = "1.0.1"
@@ -6297,15 +6216,6 @@ version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
-[[package]]
-name = "state"
-version = "0.6.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2b8c4a4445d81357df8b1a650d0d0d6fbbbfe99d064aa5e02f3e4022061476d8"
-dependencies = [
- "loom",
-]
-
[[package]]
name = "static_assertions"
version = "1.1.0"
@@ -6518,9 +6428,9 @@ dependencies = [
[[package]]
name = "tao"
-version = "0.30.0"
+version = "0.30.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2a93f2c6b8fdaeb7f417bda89b5bc767999745c3052969664ae1fa65892deb7e"
+checksum = "06e48d7c56b3f7425d061886e8ce3b6acfab1993682ed70bef50fd133d721ee6"
dependencies = [
"bitflags 2.6.0",
"cocoa",
@@ -6591,9 +6501,9 @@ checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1"
[[package]]
name = "tauri"
-version = "2.0.0-rc.15"
+version = "2.0.0-rc.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eb3c3b1c7ac5b72d59da307b84af900a0098c74c9d7369f65018cd8ec0eb50fb"
+checksum = "246bd333561c5601241b7a09f19957d5f659667f3c1191c869a066fb309e1841"
dependencies = [
"anyhow",
"bytes",
@@ -6625,7 +6535,6 @@ dependencies = [
"serde_repr",
"serialize-to-javascript",
"specta",
- "state",
"swift-rs",
"tauri-build",
"tauri-macros",
@@ -6646,9 +6555,9 @@ dependencies = [
[[package]]
name = "tauri-build"
-version = "2.0.0-rc.12"
+version = "2.0.0-rc.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6ff5713e81e02e0b99f5219b275abbd7d2c0cc0f30180e25b1b650e08feeac63"
+checksum = "e5bc30f14b3c1548d75dfdf3e40bffe20a53bc4e3381e9bacc21dc765d701d0a"
dependencies = [
"anyhow",
"cargo_toml",
@@ -6670,9 +6579,9 @@ dependencies = [
[[package]]
name = "tauri-codegen"
-version = "2.0.0-rc.12"
+version = "2.0.0-rc.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5370f2591dcc93d4ff08d9dd168f5097f79b34e859883586a409c627544190e3"
+checksum = "b1cfb6089cfc626b81bb8aa4692ede527732011dfd22486d8ac5bf299189841f"
dependencies = [
"base64 0.22.1",
"brotli",
@@ -6697,9 +6606,9 @@ dependencies = [
[[package]]
name = "tauri-macros"
-version = "2.0.0-rc.11"
+version = "2.0.0-rc.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "19442dc8ee002ab1926586f6aecb90114f3a1226766008b0c9ac2d9fec9eeb7e"
+checksum = "1f04ed6fadd294ef8061137463fe31abccbb5fa61ff9946aab2896acd140cff1"
dependencies = [
"heck 0.5.0",
"proc-macro2",
@@ -6711,9 +6620,9 @@ dependencies = [
[[package]]
name = "tauri-plugin"
-version = "2.0.0-rc.12"
+version = "2.0.0-rc.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5e3368e91a98aa55ea4e3e8ccff516bc1ed2f85872c335ec35e9b345469032e0"
+checksum = "6de7ffe64afa61c4cc13d450d64643b8db6cbb177a802beb88bf595594505ddf"
dependencies = [
"anyhow",
"glob",
@@ -7187,9 +7096,9 @@ dependencies = [
[[package]]
name = "tauri-runtime"
-version = "2.0.0-rc.12"
+version = "2.0.0-rc.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c5f38d8aaa1e81d20e8e208e3e317f81b59fb75c530fbae8a90e72d02001d687"
+checksum = "8d9465366fd7f9e9c77385fa8b7cb583b060544e8800bd0309deb100008c312d"
dependencies = [
"dpi",
"gtk",
@@ -7206,9 +7115,9 @@ dependencies = [
[[package]]
name = "tauri-runtime-wry"
-version = "2.0.0-rc.13"
+version = "2.0.0-rc.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf1ef5171e14c8fe3b5a63e75004c20d057747bc3e7fdc5f8ded625f0b29f5c7"
+checksum = "a03a49d6bcc0e65d64ea4420e2097270a25a9e1ff0fb2ece75e54fbbd54e45f7"
dependencies = [
"gtk",
"http",
@@ -7232,9 +7141,9 @@ dependencies = [
[[package]]
name = "tauri-utils"
-version = "2.0.0-rc.12"
+version = "2.0.0-rc.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "31fe4c9148e1b35225e1c00753f24b517ce00041d02eb4b4d6fd10613a47736c"
+checksum = "a271545e4c25b36b922d98cf7e0c1755f64e92355705f656893e352aef0331e3"
dependencies = [
"aes-gcm",
"brotli",
@@ -7265,6 +7174,7 @@ dependencies = [
"toml 0.8.2",
"url",
"urlpattern",
+ "uuid",
"walkdir",
]
@@ -7348,16 +7258,6 @@ dependencies = [
"syn 2.0.77",
]
-[[package]]
-name = "thread_local"
-version = "1.1.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c"
-dependencies = [
- "cfg-if",
- "once_cell",
-]
-
[[package]]
name = "tiff"
version = "0.9.1"
@@ -7660,43 +7560,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54"
dependencies = [
"once_cell",
- "valuable",
-]
-
-[[package]]
-name = "tracing-log"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3"
-dependencies = [
- "log",
- "once_cell",
- "tracing-core",
-]
-
-[[package]]
-name = "tracing-subscriber"
-version = "0.3.18"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b"
-dependencies = [
- "matchers",
- "nu-ansi-term",
- "once_cell",
- "regex",
- "sharded-slab",
- "smallvec",
- "thread_local",
- "tracing",
- "tracing-core",
- "tracing-log",
]
[[package]]
name = "tray-icon"
-version = "0.17.0"
+version = "0.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "044d7738b3d50f288ddef035b793228740ad4d927f5466b0af55dc15e7e03cfe"
+checksum = "533fc2d4105e0e3d96ce1c71f2d308c9fbbe2ef9c587cab63dd627ab5bde218f"
dependencies = [
"core-graphics 0.24.0",
"crossbeam-channel",
@@ -7948,6 +7818,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314"
dependencies = [
"getrandom 0.2.15",
+ "serde",
]
[[package]]
@@ -7961,12 +7832,6 @@ dependencies = [
"wasm-bindgen",
]
-[[package]]
-name = "valuable"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"
-
[[package]]
name = "value-bag"
version = "1.9.0"
@@ -8394,15 +8259,6 @@ dependencies = [
"windows_x86_64_msvc 0.36.1",
]
-[[package]]
-name = "windows"
-version = "0.48.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f"
-dependencies = [
- "windows-targets 0.48.5",
-]
-
[[package]]
name = "windows"
version = "0.56.0"
@@ -8843,9 +8699,9 @@ dependencies = [
[[package]]
name = "wry"
-version = "0.43.1"
+version = "0.44.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f4d715cf5fe88e9647f3d17b207b6d060d4a88e7171d4ccb2d2c657dd1d44728"
+checksum = "440600584cfbd8b0d28eace95c1f2c253db05dae43780b79380aa1e868f04c73"
dependencies = [
"base64 0.22.1",
"block",
diff --git a/Cargo.toml b/Cargo.toml
index 95a89d36..40d983a4 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -11,10 +11,10 @@ resolver = "2"
[workspace.dependencies]
serde = { version = "1", features = ["derive"] }
log = "0.4"
-tauri = { version = "2.0.0-rc.15", default-features = false }
-tauri-build = "2.0.0-rc.12"
-tauri-plugin = "2.0.0-rc.12"
-tauri-utils = "2.0.0-rc.12"
+tauri = { version = "2.0.0-rc.16", default-features = false }
+tauri-build = "2.0.0-rc.13"
+tauri-plugin = "2.0.0-rc.13"
+tauri-utils = "2.0.0-rc.13"
serde_json = "1"
thiserror = "1"
url = "2"
diff --git a/examples/api/package.json b/examples/api/package.json
index e3cf39bf..b8600e26 100644
--- a/examples/api/package.json
+++ b/examples/api/package.json
@@ -9,7 +9,7 @@
"serve": "vite preview"
},
"dependencies": {
- "@tauri-apps/api": "2.0.0-rc.5",
+ "@tauri-apps/api": "2.0.0-rc.6",
"@tauri-apps/plugin-barcode-scanner": "2.0.0-rc.2",
"@tauri-apps/plugin-biometric": "2.0.0-rc.1",
"@tauri-apps/plugin-cli": "2.0.0-rc.1",
@@ -33,7 +33,7 @@
"@iconify-json/codicon": "^1.1.37",
"@iconify-json/ph": "^1.1.8",
"@sveltejs/vite-plugin-svelte": "^3.0.1",
- "@tauri-apps/cli": "2.0.0-rc.16",
+ "@tauri-apps/cli": "2.0.0-rc.17",
"@unocss/extractor-svelte": "^0.62.0",
"svelte": "^4.2.19",
"unocss": "^0.62.0",
diff --git a/plugins/deep-link/examples/app/package.json b/plugins/deep-link/examples/app/package.json
index 145ade16..db2b47b6 100644
--- a/plugins/deep-link/examples/app/package.json
+++ b/plugins/deep-link/examples/app/package.json
@@ -10,11 +10,11 @@
"tauri": "tauri"
},
"dependencies": {
- "@tauri-apps/api": "2.0.0-rc.5",
+ "@tauri-apps/api": "2.0.0-rc.6",
"@tauri-apps/plugin-deep-link": "2.0.0-rc.2"
},
"devDependencies": {
- "@tauri-apps/cli": "2.0.0-rc.16",
+ "@tauri-apps/cli": "2.0.0-rc.17",
"typescript": "^5.2.2",
"vite": "^5.4.7"
}
diff --git a/plugins/single-instance/examples/vanilla/package.json b/plugins/single-instance/examples/vanilla/package.json
index 08f8da02..70506755 100644
--- a/plugins/single-instance/examples/vanilla/package.json
+++ b/plugins/single-instance/examples/vanilla/package.json
@@ -9,6 +9,6 @@
"author": "",
"license": "MIT",
"devDependencies": {
- "@tauri-apps/cli": "2.0.0-rc.16"
+ "@tauri-apps/cli": "2.0.0-rc.17"
}
}
diff --git a/plugins/store/examples/AppSettingsManager/package.json b/plugins/store/examples/AppSettingsManager/package.json
index c242ba89..183de4d8 100644
--- a/plugins/store/examples/AppSettingsManager/package.json
+++ b/plugins/store/examples/AppSettingsManager/package.json
@@ -8,7 +8,7 @@
"tauri": "tauri"
},
"devDependencies": {
- "@tauri-apps/cli": "2.0.0-rc.16",
+ "@tauri-apps/cli": "2.0.0-rc.17",
"vite": "^5.0.12",
"typescript": "^5.4.7"
}
diff --git a/plugins/websocket/examples/tauri-app/package.json b/plugins/websocket/examples/tauri-app/package.json
index 2ede55c3..d71974e5 100644
--- a/plugins/websocket/examples/tauri-app/package.json
+++ b/plugins/websocket/examples/tauri-app/package.json
@@ -9,7 +9,7 @@
"preview": "vite preview"
},
"devDependencies": {
- "@tauri-apps/cli": "2.0.0-rc.16",
+ "@tauri-apps/cli": "2.0.0-rc.17",
"typescript": "^5.3.3",
"vite": "^5.4.7"
},
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 6a6064f9..6b1595c6 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -58,8 +58,8 @@ importers:
examples/api:
dependencies:
'@tauri-apps/api':
- specifier: 2.0.0-rc.5
- version: 2.0.0-rc.5
+ specifier: 2.0.0-rc.6
+ version: 2.0.0-rc.6
'@tauri-apps/plugin-barcode-scanner':
specifier: 2.0.0-rc.2
version: link:../../plugins/barcode-scanner
@@ -125,8 +125,8 @@ importers:
specifier: ^3.0.1
version: 3.1.2(svelte@4.2.19)(vite@5.4.7(terser@5.33.0))
'@tauri-apps/cli':
- specifier: 2.0.0-rc.16
- version: 2.0.0-rc.16
+ specifier: 2.0.0-rc.17
+ version: 2.0.0-rc.17
'@unocss/extractor-svelte':
specifier: ^0.62.0
version: 0.62.3
@@ -144,50 +144,50 @@ importers:
dependencies:
'@tauri-apps/api':
specifier: ^2.0.0-rc.4
- version: 2.0.0-rc.5
+ version: 2.0.0-rc.6
plugins/barcode-scanner:
dependencies:
'@tauri-apps/api':
specifier: ^2.0.0-rc.4
- version: 2.0.0-rc.5
+ version: 2.0.0-rc.6
plugins/biometric:
dependencies:
'@tauri-apps/api':
specifier: ^2.0.0-rc.4
- version: 2.0.0-rc.5
+ version: 2.0.0-rc.6
plugins/cli:
dependencies:
'@tauri-apps/api':
specifier: ^2.0.0-rc.4
- version: 2.0.0-rc.5
+ version: 2.0.0-rc.6
plugins/clipboard-manager:
dependencies:
'@tauri-apps/api':
specifier: ^2.0.0-rc.4
- version: 2.0.0-rc.5
+ version: 2.0.0-rc.6
plugins/deep-link:
dependencies:
'@tauri-apps/api':
specifier: ^2.0.0-rc.4
- version: 2.0.0-rc.5
+ version: 2.0.0-rc.6
plugins/deep-link/examples/app:
dependencies:
'@tauri-apps/api':
- specifier: 2.0.0-rc.5
- version: 2.0.0-rc.5
+ specifier: 2.0.0-rc.6
+ version: 2.0.0-rc.6
'@tauri-apps/plugin-deep-link':
specifier: 2.0.0-rc.2
version: link:../..
devDependencies:
'@tauri-apps/cli':
- specifier: 2.0.0-rc.16
- version: 2.0.0-rc.16
+ specifier: 2.0.0-rc.17
+ version: 2.0.0-rc.17
typescript:
specifier: ^5.2.2
version: 5.6.2
@@ -199,103 +199,103 @@ importers:
dependencies:
'@tauri-apps/api':
specifier: ^2.0.0-rc.4
- version: 2.0.0-rc.5
+ version: 2.0.0-rc.6
plugins/fs:
dependencies:
'@tauri-apps/api':
specifier: ^2.0.0-rc.4
- version: 2.0.0-rc.5
+ version: 2.0.0-rc.6
plugins/geolocation:
dependencies:
'@tauri-apps/api':
specifier: ^2.0.0-rc.4
- version: 2.0.0-rc.5
+ version: 2.0.0-rc.6
plugins/global-shortcut:
dependencies:
'@tauri-apps/api':
specifier: ^2.0.0-rc.4
- version: 2.0.0-rc.5
+ version: 2.0.0-rc.6
plugins/haptics:
dependencies:
'@tauri-apps/api':
specifier: ^2.0.0-rc.4
- version: 2.0.0-rc.5
+ version: 2.0.0-rc.6
plugins/http:
dependencies:
'@tauri-apps/api':
specifier: ^2.0.0-rc.4
- version: 2.0.0-rc.5
+ version: 2.0.0-rc.6
plugins/log:
dependencies:
'@tauri-apps/api':
specifier: ^2.0.0-rc.4
- version: 2.0.0-rc.5
+ version: 2.0.0-rc.6
plugins/nfc:
dependencies:
'@tauri-apps/api':
specifier: ^2.0.0-rc.4
- version: 2.0.0-rc.5
+ version: 2.0.0-rc.6
plugins/notification:
dependencies:
'@tauri-apps/api':
specifier: ^2.0.0-rc.4
- version: 2.0.0-rc.5
+ version: 2.0.0-rc.6
plugins/os:
dependencies:
'@tauri-apps/api':
specifier: ^2.0.0-rc.4
- version: 2.0.0-rc.5
+ version: 2.0.0-rc.6
plugins/positioner:
dependencies:
'@tauri-apps/api':
specifier: ^2.0.0-rc.4
- version: 2.0.0-rc.5
+ version: 2.0.0-rc.6
plugins/process:
dependencies:
'@tauri-apps/api':
specifier: ^2.0.0-rc.4
- version: 2.0.0-rc.5
+ version: 2.0.0-rc.6
plugins/shell:
dependencies:
'@tauri-apps/api':
specifier: ^2.0.0-rc.4
- version: 2.0.0-rc.5
+ version: 2.0.0-rc.6
plugins/single-instance/examples/vanilla:
devDependencies:
'@tauri-apps/cli':
- specifier: 2.0.0-rc.16
- version: 2.0.0-rc.16
+ specifier: 2.0.0-rc.17
+ version: 2.0.0-rc.17
plugins/sql:
dependencies:
'@tauri-apps/api':
specifier: ^2.0.0-rc.4
- version: 2.0.0-rc.5
+ version: 2.0.0-rc.6
plugins/store:
dependencies:
'@tauri-apps/api':
specifier: ^2.0.0-rc.4
- version: 2.0.0-rc.5
+ version: 2.0.0-rc.6
plugins/store/examples/AppSettingsManager:
devDependencies:
'@tauri-apps/cli':
- specifier: 2.0.0-rc.16
- version: 2.0.0-rc.16
+ specifier: 2.0.0-rc.17
+ version: 2.0.0-rc.17
typescript:
specifier: ^5.4.7
version: 5.6.2
@@ -307,25 +307,25 @@ importers:
dependencies:
'@tauri-apps/api':
specifier: ^2.0.0-rc.4
- version: 2.0.0-rc.5
+ version: 2.0.0-rc.6
plugins/updater:
dependencies:
'@tauri-apps/api':
specifier: ^2.0.0-rc.4
- version: 2.0.0-rc.5
+ version: 2.0.0-rc.6
plugins/upload:
dependencies:
'@tauri-apps/api':
specifier: ^2.0.0-rc.4
- version: 2.0.0-rc.5
+ version: 2.0.0-rc.6
plugins/websocket:
dependencies:
'@tauri-apps/api':
specifier: ^2.0.0-rc.4
- version: 2.0.0-rc.5
+ version: 2.0.0-rc.6
plugins/websocket/examples/tauri-app:
dependencies:
@@ -334,8 +334,8 @@ importers:
version: link:../..
devDependencies:
'@tauri-apps/cli':
- specifier: 2.0.0-rc.16
- version: 2.0.0-rc.16
+ specifier: 2.0.0-rc.17
+ version: 2.0.0-rc.17
typescript:
specifier: ^5.3.3
version: 5.6.2
@@ -347,7 +347,7 @@ importers:
dependencies:
'@tauri-apps/api':
specifier: ^2.0.0-rc.4
- version: 2.0.0-rc.5
+ version: 2.0.0-rc.6
packages:
@@ -1061,71 +1061,71 @@ packages:
svelte: ^4.0.0 || ^5.0.0-next.0
vite: ^5.0.0
- '@tauri-apps/api@2.0.0-rc.5':
- resolution: {integrity: sha512-JWs69pE9NsQdcqTpEVBepAZ08+jgQWuthIiTiaWRq/YlCLgnqq0KfC9sDem55uJ0YpgsytZuyj+m6b6q8oiD2g==}
+ '@tauri-apps/api@2.0.0-rc.6':
+ resolution: {integrity: sha512-oENxL0C5WqHNSXWjZEbjnzoBwFFyn8do5S0elOg0ME1cLvWJOAKmqdCnWPpAwtzHQZ+xAzMU0/k8nPpJq4OQYA==}
- '@tauri-apps/cli-darwin-arm64@2.0.0-rc.16':
- resolution: {integrity: sha512-lISZU4gG0c9PbY7h/j/gW7nJLxZEygNBrYEET6zN8R99Znf5rSO+CfjenaMcJUUj6yTAd8gzdakRpLqNSAWegA==}
+ '@tauri-apps/cli-darwin-arm64@2.0.0-rc.17':
+ resolution: {integrity: sha512-LXlLpavNfhvELPBcjCzQ9DOLx7rlAzZM4iltsaKawAewx30Q0EpIjK53Sg5AR3p5/KzNfCsTMjjpeUZg1AcFgw==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [darwin]
- '@tauri-apps/cli-darwin-x64@2.0.0-rc.16':
- resolution: {integrity: sha512-D9uxPCxpyYcTSQulJGFX3POAKPOJd8WcWHFH8x6YVM1cIx6EWRXIE1sZnPUOjFr7qCg+bSdYdr8/BFHcZGcApQ==}
+ '@tauri-apps/cli-darwin-x64@2.0.0-rc.17':
+ resolution: {integrity: sha512-86jlpD9DQEMdPCu+foqady2Kov3u151Pgs1uOdA3SQxXph4L31T7j26axIhADLYZH6T1be+lSVPm6+fp0iXGgw==}
engines: {node: '>= 10'}
cpu: [x64]
os: [darwin]
- '@tauri-apps/cli-linux-arm-gnueabihf@2.0.0-rc.16':
- resolution: {integrity: sha512-WsVdKm4D1I1XV8I9yRnmOINZRwwWfh6xcLV3m19+B9g6TohK8RkRxWfxvs3TLQlWOLQ6lo8BzS9rzXB+KtjDpg==}
+ '@tauri-apps/cli-linux-arm-gnueabihf@2.0.0-rc.17':
+ resolution: {integrity: sha512-ZFZeVBFdM9ogNebqzU3vo6f662YwmnE5XzeT6UEKUy+df49Fw2Npebmg0t/BPoF9e/nEgK1w1Jy68aK2JISscg==}
engines: {node: '>= 10'}
cpu: [arm]
os: [linux]
- '@tauri-apps/cli-linux-arm64-gnu@2.0.0-rc.16':
- resolution: {integrity: sha512-2jpZDagNs6rrqposHJihHBayttgOl5aB2+bYiVEC6ye+haiFtmYmpdaPOaVIw+YVQs6lepf5PVrisCoU9DmYsg==}
+ '@tauri-apps/cli-linux-arm64-gnu@2.0.0-rc.17':
+ resolution: {integrity: sha512-GvO7BNJL6y8CumvaidJ+cEXn0KRaCzhmwtrMfTEl9jsqhGYvmNXuOlZR41hgoy6CQtUiu11ZGoBtU37/lxEKaQ==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
- '@tauri-apps/cli-linux-arm64-musl@2.0.0-rc.16':
- resolution: {integrity: sha512-SNEDcB+sWOls/B0a+UpUHVa/oegvlXXKYWsTxuXtgWIr5VbWG7rXLZ3fZpLLP3SpRVGTGTnABcyqshFbWSqqKQ==}
+ '@tauri-apps/cli-linux-arm64-musl@2.0.0-rc.17':
+ resolution: {integrity: sha512-DypDS3rJjcKzpgZKqHsCrzVGDbjo17XcYNhAYd2VxvXmGVAq05eZ71jLYHSSofXTxbpLZMcGKaino0jKyX1mOA==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
- '@tauri-apps/cli-linux-x64-gnu@2.0.0-rc.16':
- resolution: {integrity: sha512-Zsq29MM1ooeH1+chQBa7ffDFnzAZebBBFdsvs4e05tS1H8gn4oKE+PSMn9p/okzVXykEk9ri2/n7BG1XFeifMA==}
+ '@tauri-apps/cli-linux-x64-gnu@2.0.0-rc.17':
+ resolution: {integrity: sha512-nKCAJtC4b9HnVpDsCVXASPEXOEIZb/HFmdRPuKiYXmpziL5OByCJLjhVx5EFhpVtqAg1isCmOutqKc8Nmw1QQQ==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
- '@tauri-apps/cli-linux-x64-musl@2.0.0-rc.16':
- resolution: {integrity: sha512-g+pwSuis2YMxhJJ/pJYwp/Nps5CWvlv/5MV5UfDvClkCkeAyzIqVX+HbBLPcs5S0CePUQNeP0j4d4jBWUqZZQg==}
+ '@tauri-apps/cli-linux-x64-musl@2.0.0-rc.17':
+ resolution: {integrity: sha512-cSi3M/hcNo+NubSKJG96Af6o6cL38RCvP0ImFiyIOU/adYmW0bQGWI4u/eL14IpdNCR1pbifgEcQL6dteyod0g==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
- '@tauri-apps/cli-win32-arm64-msvc@2.0.0-rc.16':
- resolution: {integrity: sha512-PpPqdMTwJSDAK4KnNjvh77ShSkY+7pih1f6e50EtXar8bjC17e3XcEqFhDNne5mxEVTLYhibs6p1JLPad0ZjRA==}
+ '@tauri-apps/cli-win32-arm64-msvc@2.0.0-rc.17':
+ resolution: {integrity: sha512-hMtNtm2zXvUwzzTEJIf/GQplWHNLEeAjiLGaX9sS2Me96X/OzU1PUXcWTYdjVA102cf6q//0/pgpPo/Yn480KA==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [win32]
- '@tauri-apps/cli-win32-ia32-msvc@2.0.0-rc.16':
- resolution: {integrity: sha512-io2yIcEcG7YLP+9n13NbilB93SjcB7jIl8GbURC4XZT4/4t9D1PWHpJr5hySVsGRLCz5e8NzwC5RlnenNzmpPQ==}
+ '@tauri-apps/cli-win32-ia32-msvc@2.0.0-rc.17':
+ resolution: {integrity: sha512-XO+zgvYvpz65aYbXMyFhej4Td5sEK7bSLPr2+8BigiI7F4tHaS7KJpYVtJtjHQtAo6KBy/bT8P9VW6xM4G+YVA==}
engines: {node: '>= 10'}
cpu: [ia32]
os: [win32]
- '@tauri-apps/cli-win32-x64-msvc@2.0.0-rc.16':
- resolution: {integrity: sha512-Rfkmxe3k+cBVA/kVYt8O25QrQqWKJlH9AiH7Q3C6xBzzG9PCSRMBszCp+JhBF8jhVlwNmOBv6UG+lm85kspwGg==}
+ '@tauri-apps/cli-win32-x64-msvc@2.0.0-rc.17':
+ resolution: {integrity: sha512-sVV0o9careFJuL3fTtkp6ed8X4FGGfMyK1WbXR5ci4Z2dn94wIJuefzTnGaQnvur4PaEJQ9WmTlQ2Pe3UrokBQ==}
engines: {node: '>= 10'}
cpu: [x64]
os: [win32]
- '@tauri-apps/cli@2.0.0-rc.16':
- resolution: {integrity: sha512-wdjZg/M3dcxiqgWG6VRnABpX0dYxRww93t0d1MYoZxFDrnyoUz5kYwFQ0v4J9u0qenEgskjoypvon7V/Nj9qrg==}
+ '@tauri-apps/cli@2.0.0-rc.17':
+ resolution: {integrity: sha512-7YQljT+izYmhLqsI5G2xg3AHBPx3gAHc+gB/s+NKqdSL4CuGImLiii8Rw/qBtuJpWFWLJiaGXnpra35zrSlknQ==}
engines: {node: '>= 10'}
hasBin: true
@@ -3196,50 +3196,50 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@tauri-apps/api@2.0.0-rc.5': {}
+ '@tauri-apps/api@2.0.0-rc.6': {}
- '@tauri-apps/cli-darwin-arm64@2.0.0-rc.16':
+ '@tauri-apps/cli-darwin-arm64@2.0.0-rc.17':
optional: true
- '@tauri-apps/cli-darwin-x64@2.0.0-rc.16':
+ '@tauri-apps/cli-darwin-x64@2.0.0-rc.17':
optional: true
- '@tauri-apps/cli-linux-arm-gnueabihf@2.0.0-rc.16':
+ '@tauri-apps/cli-linux-arm-gnueabihf@2.0.0-rc.17':
optional: true
- '@tauri-apps/cli-linux-arm64-gnu@2.0.0-rc.16':
+ '@tauri-apps/cli-linux-arm64-gnu@2.0.0-rc.17':
optional: true
- '@tauri-apps/cli-linux-arm64-musl@2.0.0-rc.16':
+ '@tauri-apps/cli-linux-arm64-musl@2.0.0-rc.17':
optional: true
- '@tauri-apps/cli-linux-x64-gnu@2.0.0-rc.16':
+ '@tauri-apps/cli-linux-x64-gnu@2.0.0-rc.17':
optional: true
- '@tauri-apps/cli-linux-x64-musl@2.0.0-rc.16':
+ '@tauri-apps/cli-linux-x64-musl@2.0.0-rc.17':
optional: true
- '@tauri-apps/cli-win32-arm64-msvc@2.0.0-rc.16':
+ '@tauri-apps/cli-win32-arm64-msvc@2.0.0-rc.17':
optional: true
- '@tauri-apps/cli-win32-ia32-msvc@2.0.0-rc.16':
+ '@tauri-apps/cli-win32-ia32-msvc@2.0.0-rc.17':
optional: true
- '@tauri-apps/cli-win32-x64-msvc@2.0.0-rc.16':
+ '@tauri-apps/cli-win32-x64-msvc@2.0.0-rc.17':
optional: true
- '@tauri-apps/cli@2.0.0-rc.16':
+ '@tauri-apps/cli@2.0.0-rc.17':
optionalDependencies:
- '@tauri-apps/cli-darwin-arm64': 2.0.0-rc.16
- '@tauri-apps/cli-darwin-x64': 2.0.0-rc.16
- '@tauri-apps/cli-linux-arm-gnueabihf': 2.0.0-rc.16
- '@tauri-apps/cli-linux-arm64-gnu': 2.0.0-rc.16
- '@tauri-apps/cli-linux-arm64-musl': 2.0.0-rc.16
- '@tauri-apps/cli-linux-x64-gnu': 2.0.0-rc.16
- '@tauri-apps/cli-linux-x64-musl': 2.0.0-rc.16
- '@tauri-apps/cli-win32-arm64-msvc': 2.0.0-rc.16
- '@tauri-apps/cli-win32-ia32-msvc': 2.0.0-rc.16
- '@tauri-apps/cli-win32-x64-msvc': 2.0.0-rc.16
+ '@tauri-apps/cli-darwin-arm64': 2.0.0-rc.17
+ '@tauri-apps/cli-darwin-x64': 2.0.0-rc.17
+ '@tauri-apps/cli-linux-arm-gnueabihf': 2.0.0-rc.17
+ '@tauri-apps/cli-linux-arm64-gnu': 2.0.0-rc.17
+ '@tauri-apps/cli-linux-arm64-musl': 2.0.0-rc.17
+ '@tauri-apps/cli-linux-x64-gnu': 2.0.0-rc.17
+ '@tauri-apps/cli-linux-x64-musl': 2.0.0-rc.17
+ '@tauri-apps/cli-win32-arm64-msvc': 2.0.0-rc.17
+ '@tauri-apps/cli-win32-ia32-msvc': 2.0.0-rc.17
+ '@tauri-apps/cli-win32-x64-msvc': 2.0.0-rc.17
'@types/eslint@9.6.1':
dependencies:
From 34737186fe64a3643166fb28dbcd5b504bb757bf Mon Sep 17 00:00:00 2001
From: Tony <68118705+Legend-Master@users.noreply.github.com>
Date: Sun, 29 Sep 2024 01:50:57 +0800
Subject: [PATCH 02/40] chore: re-generate reference.md (#1847)
---
plugins/autostart/permissions/autogenerated/reference.md | 2 +-
plugins/barcode-scanner/permissions/autogenerated/reference.md | 2 +-
plugins/biometric/permissions/autogenerated/reference.md | 2 +-
plugins/cli/permissions/autogenerated/reference.md | 2 +-
.../clipboard-manager/permissions/autogenerated/reference.md | 2 +-
plugins/deep-link/permissions/autogenerated/reference.md | 2 +-
plugins/dialog/permissions/autogenerated/reference.md | 2 +-
plugins/fs/permissions/autogenerated/reference.md | 2 +-
plugins/geolocation/permissions/autogenerated/reference.md | 2 +-
plugins/global-shortcut/permissions/autogenerated/reference.md | 2 +-
plugins/haptics/permissions/autogenerated/reference.md | 2 +-
plugins/http/permissions/autogenerated/reference.md | 2 +-
plugins/log/permissions/autogenerated/reference.md | 2 +-
plugins/nfc/permissions/autogenerated/reference.md | 2 +-
plugins/notification/permissions/autogenerated/reference.md | 2 +-
plugins/os/permissions/autogenerated/reference.md | 2 +-
plugins/positioner/permissions/autogenerated/reference.md | 2 +-
plugins/process/permissions/autogenerated/reference.md | 2 +-
plugins/shell/permissions/autogenerated/reference.md | 2 +-
plugins/sql/permissions/autogenerated/reference.md | 2 +-
plugins/store/permissions/autogenerated/reference.md | 2 +-
plugins/stronghold/permissions/autogenerated/reference.md | 2 +-
plugins/updater/permissions/autogenerated/reference.md | 2 +-
plugins/upload/permissions/autogenerated/reference.md | 2 +-
plugins/websocket/permissions/autogenerated/reference.md | 2 +-
plugins/window-state/permissions/autogenerated/reference.md | 2 +-
26 files changed, 26 insertions(+), 26 deletions(-)
diff --git a/plugins/autostart/permissions/autogenerated/reference.md b/plugins/autostart/permissions/autogenerated/reference.md
index b5e37ac1..6e40fdb7 100644
--- a/plugins/autostart/permissions/autogenerated/reference.md
+++ b/plugins/autostart/permissions/autogenerated/reference.md
@@ -15,7 +15,7 @@ disable the automatic start on boot.
- `allow-disable`
- `allow-is-enabled`
-## Permission Table
+## Permission Table
diff --git a/plugins/barcode-scanner/permissions/autogenerated/reference.md b/plugins/barcode-scanner/permissions/autogenerated/reference.md
index 6b8739c1..50cbcf99 100644
--- a/plugins/barcode-scanner/permissions/autogenerated/reference.md
+++ b/plugins/barcode-scanner/permissions/autogenerated/reference.md
@@ -16,7 +16,7 @@ It allows all barcode related features.
- `allow-scan`
- `allow-vibrate`
-## Permission Table
+## Permission Table
diff --git a/plugins/biometric/permissions/autogenerated/reference.md b/plugins/biometric/permissions/autogenerated/reference.md
index 8b3b58c2..37a9fa07 100644
--- a/plugins/biometric/permissions/autogenerated/reference.md
+++ b/plugins/biometric/permissions/autogenerated/reference.md
@@ -12,7 +12,7 @@ It allows acccess to all biometric commands.
- `allow-authenticate`
- `allow-status`
-## Permission Table
+## Permission Table
diff --git a/plugins/cli/permissions/autogenerated/reference.md b/plugins/cli/permissions/autogenerated/reference.md
index 48434cea..a920b749 100644
--- a/plugins/cli/permissions/autogenerated/reference.md
+++ b/plugins/cli/permissions/autogenerated/reference.md
@@ -4,7 +4,7 @@ Allows reading the CLI matches
- `allow-cli-matches`
-## Permission Table
+## Permission Table
diff --git a/plugins/clipboard-manager/permissions/autogenerated/reference.md b/plugins/clipboard-manager/permissions/autogenerated/reference.md
index 88c90e41..6b8bf14f 100644
--- a/plugins/clipboard-manager/permissions/autogenerated/reference.md
+++ b/plugins/clipboard-manager/permissions/autogenerated/reference.md
@@ -8,7 +8,7 @@ Clipboard interaction needs to be explicitly enabled.
-## Permission Table
+## Permission Table
diff --git a/plugins/deep-link/permissions/autogenerated/reference.md b/plugins/deep-link/permissions/autogenerated/reference.md
index 460960c8..3b84f1c5 100644
--- a/plugins/deep-link/permissions/autogenerated/reference.md
+++ b/plugins/deep-link/permissions/autogenerated/reference.md
@@ -4,7 +4,7 @@ Allows reading the opened deep link via the get_current command
- `allow-get-current`
-## Permission Table
+## Permission Table
diff --git a/plugins/dialog/permissions/autogenerated/reference.md b/plugins/dialog/permissions/autogenerated/reference.md
index 325432e5..d93595d1 100644
--- a/plugins/dialog/permissions/autogenerated/reference.md
+++ b/plugins/dialog/permissions/autogenerated/reference.md
@@ -16,7 +16,7 @@ All dialog types are enabled.
- `allow-save`
- `allow-open`
-## Permission Table
+## Permission Table
diff --git a/plugins/fs/permissions/autogenerated/reference.md b/plugins/fs/permissions/autogenerated/reference.md
index cc6477f1..79ec2f55 100644
--- a/plugins/fs/permissions/autogenerated/reference.md
+++ b/plugins/fs/permissions/autogenerated/reference.md
@@ -30,7 +30,7 @@ On Windows the webview data folder access is denied.
- `read-app-specific-dirs-recursive`
- `deny-default`
-## Permission Table
+## Permission Table
diff --git a/plugins/geolocation/permissions/autogenerated/reference.md b/plugins/geolocation/permissions/autogenerated/reference.md
index e0417c80..71d81a72 100644
--- a/plugins/geolocation/permissions/autogenerated/reference.md
+++ b/plugins/geolocation/permissions/autogenerated/reference.md
@@ -1,5 +1,5 @@
-## Permission Table
+## Permission Table
diff --git a/plugins/global-shortcut/permissions/autogenerated/reference.md b/plugins/global-shortcut/permissions/autogenerated/reference.md
index 1c91743c..f8571c04 100644
--- a/plugins/global-shortcut/permissions/autogenerated/reference.md
+++ b/plugins/global-shortcut/permissions/autogenerated/reference.md
@@ -7,7 +7,7 @@ registered or unregistered.
-## Permission Table
+## Permission Table
diff --git a/plugins/haptics/permissions/autogenerated/reference.md b/plugins/haptics/permissions/autogenerated/reference.md
index 36fbd7d3..c2d0dd5d 100644
--- a/plugins/haptics/permissions/autogenerated/reference.md
+++ b/plugins/haptics/permissions/autogenerated/reference.md
@@ -1,5 +1,5 @@
-## Permission Table
+## Permission Table
diff --git a/plugins/http/permissions/autogenerated/reference.md b/plugins/http/permissions/autogenerated/reference.md
index 85406618..4126f0b9 100644
--- a/plugins/http/permissions/autogenerated/reference.md
+++ b/plugins/http/permissions/autogenerated/reference.md
@@ -18,7 +18,7 @@ All fetch operations are enabled.
- `allow-fetch-read-body`
- `allow-fetch-send`
-## Permission Table
+## Permission Table
diff --git a/plugins/log/permissions/autogenerated/reference.md b/plugins/log/permissions/autogenerated/reference.md
index f2cdf689..d59aefa0 100644
--- a/plugins/log/permissions/autogenerated/reference.md
+++ b/plugins/log/permissions/autogenerated/reference.md
@@ -4,7 +4,7 @@ Allows the log command
- `allow-log`
-## Permission Table
+## Permission Table
diff --git a/plugins/nfc/permissions/autogenerated/reference.md b/plugins/nfc/permissions/autogenerated/reference.md
index 8e4960fe..bf425832 100644
--- a/plugins/nfc/permissions/autogenerated/reference.md
+++ b/plugins/nfc/permissions/autogenerated/reference.md
@@ -14,7 +14,7 @@ Writing to tags needs to be manually enabled.
- `allow-is-available`
- `allow-scan`
-## Permission Table
+## Permission Table
diff --git a/plugins/notification/permissions/autogenerated/reference.md b/plugins/notification/permissions/autogenerated/reference.md
index 9e26eb8b..b6130d60 100644
--- a/plugins/notification/permissions/autogenerated/reference.md
+++ b/plugins/notification/permissions/autogenerated/reference.md
@@ -26,7 +26,7 @@ It allows all notification related features.
- `allow-create-channel`
- `allow-permission-state`
-## Permission Table
+## Permission Table
diff --git a/plugins/os/permissions/autogenerated/reference.md b/plugins/os/permissions/autogenerated/reference.md
index 1b49691b..88fcd6fa 100644
--- a/plugins/os/permissions/autogenerated/reference.md
+++ b/plugins/os/permissions/autogenerated/reference.md
@@ -18,7 +18,7 @@ All information except the host name are available.
- `allow-platform`
- `allow-version`
-## Permission Table
+## Permission Table
diff --git a/plugins/positioner/permissions/autogenerated/reference.md b/plugins/positioner/permissions/autogenerated/reference.md
index ad160d1b..f2a92c66 100644
--- a/plugins/positioner/permissions/autogenerated/reference.md
+++ b/plugins/positioner/permissions/autogenerated/reference.md
@@ -4,7 +4,7 @@ Allows the move_window command
- `allow-move-window`
-## Permission Table
+## Permission Table
diff --git a/plugins/process/permissions/autogenerated/reference.md b/plugins/process/permissions/autogenerated/reference.md
index b0aecfa6..10b6a82b 100644
--- a/plugins/process/permissions/autogenerated/reference.md
+++ b/plugins/process/permissions/autogenerated/reference.md
@@ -12,7 +12,7 @@ the application.
- `allow-exit`
- `allow-restart`
-## Permission Table
+## Permission Table
diff --git a/plugins/shell/permissions/autogenerated/reference.md b/plugins/shell/permissions/autogenerated/reference.md
index 80a5a4bd..d88bf2d5 100644
--- a/plugins/shell/permissions/autogenerated/reference.md
+++ b/plugins/shell/permissions/autogenerated/reference.md
@@ -12,7 +12,7 @@ scope pre-configured. It will allow opening `http(s)://`,
- `allow-open`
-## Permission Table
+## Permission Table
diff --git a/plugins/sql/permissions/autogenerated/reference.md b/plugins/sql/permissions/autogenerated/reference.md
index 4f3a32eb..5b887c94 100644
--- a/plugins/sql/permissions/autogenerated/reference.md
+++ b/plugins/sql/permissions/autogenerated/reference.md
@@ -16,7 +16,7 @@ Also allows to load or close a connection.
- `allow-load`
- `allow-select`
-## Permission Table
+## Permission Table
diff --git a/plugins/store/permissions/autogenerated/reference.md b/plugins/store/permissions/autogenerated/reference.md
index 8dceebca..704d759d 100644
--- a/plugins/store/permissions/autogenerated/reference.md
+++ b/plugins/store/permissions/autogenerated/reference.md
@@ -22,7 +22,7 @@ All operations are enabled by default.
- `allow-set`
- `allow-values`
-## Permission Table
+## Permission Table
diff --git a/plugins/stronghold/permissions/autogenerated/reference.md b/plugins/stronghold/permissions/autogenerated/reference.md
index 60aea74b..c07dc283 100644
--- a/plugins/stronghold/permissions/autogenerated/reference.md
+++ b/plugins/stronghold/permissions/autogenerated/reference.md
@@ -18,7 +18,7 @@ All non-destructive operations are enabled by default.
- `allow-save-store-record`
- `allow-save`
-## Permission Table
+## Permission Table
diff --git a/plugins/updater/permissions/autogenerated/reference.md b/plugins/updater/permissions/autogenerated/reference.md
index 41f10869..06241af8 100644
--- a/plugins/updater/permissions/autogenerated/reference.md
+++ b/plugins/updater/permissions/autogenerated/reference.md
@@ -15,7 +15,7 @@ is enabled.
- `allow-install`
- `allow-download-and-install`
-## Permission Table
+## Permission Table
diff --git a/plugins/upload/permissions/autogenerated/reference.md b/plugins/upload/permissions/autogenerated/reference.md
index 10a310cb..19dbe32f 100644
--- a/plugins/upload/permissions/autogenerated/reference.md
+++ b/plugins/upload/permissions/autogenerated/reference.md
@@ -12,7 +12,7 @@ All operations are enabled by default.
- `allow-upload`
- `allow-download`
-## Permission Table
+## Permission Table
diff --git a/plugins/websocket/permissions/autogenerated/reference.md b/plugins/websocket/permissions/autogenerated/reference.md
index a1f05e8f..640c05a8 100644
--- a/plugins/websocket/permissions/autogenerated/reference.md
+++ b/plugins/websocket/permissions/autogenerated/reference.md
@@ -5,7 +5,7 @@ Allows connecting and sending data to a WebSocket server
- `allow-connect`
- `allow-send`
-## Permission Table
+## Permission Table
diff --git a/plugins/window-state/permissions/autogenerated/reference.md b/plugins/window-state/permissions/autogenerated/reference.md
index 7329c2be..53d51ca6 100644
--- a/plugins/window-state/permissions/autogenerated/reference.md
+++ b/plugins/window-state/permissions/autogenerated/reference.md
@@ -13,7 +13,7 @@ All operations are enabled by default.
- `allow-restore-state`
- `allow-save-window-state`
-## Permission Table
+## Permission Table
From 34319bd977352dfeb9236bb2ac68f51a69ccc20d Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Sun, 29 Sep 2024 16:18:56 +0800
Subject: [PATCH 03/40] chore(deps): update unocss monorepo to ^0.63.0 (#1848)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
examples/api/package.json | 4 +-
pnpm-lock.yaml | 891 +++++++++-----------------------------
2 files changed, 202 insertions(+), 693 deletions(-)
diff --git a/examples/api/package.json b/examples/api/package.json
index b8600e26..f5426331 100644
--- a/examples/api/package.json
+++ b/examples/api/package.json
@@ -34,9 +34,9 @@
"@iconify-json/ph": "^1.1.8",
"@sveltejs/vite-plugin-svelte": "^3.0.1",
"@tauri-apps/cli": "2.0.0-rc.17",
- "@unocss/extractor-svelte": "^0.62.0",
+ "@unocss/extractor-svelte": "^0.63.0",
"svelte": "^4.2.19",
- "unocss": "^0.62.0",
+ "unocss": "^0.63.0",
"vite": "^5.4.7"
}
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 6b1595c6..71669ddc 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -32,10 +32,10 @@ importers:
version: 0.12.3(mocha@10.7.3)
eslint:
specifier: 9.11.1
- version: 9.11.1(jiti@1.21.6)
+ version: 9.11.1(jiti@2.0.0)
eslint-config-prettier:
specifier: 9.1.0
- version: 9.1.0(eslint@9.11.1(jiti@1.21.6))
+ version: 9.1.0(eslint@9.11.1(jiti@2.0.0))
eslint-plugin-security:
specifier: 3.0.1
version: 3.0.1
@@ -53,7 +53,7 @@ importers:
version: 5.6.2
typescript-eslint:
specifier: 8.7.0
- version: 8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
+ version: 8.7.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
examples/api:
dependencies:
@@ -128,14 +128,14 @@ importers:
specifier: 2.0.0-rc.17
version: 2.0.0-rc.17
'@unocss/extractor-svelte':
- specifier: ^0.62.0
- version: 0.62.3
+ specifier: ^0.63.0
+ version: 0.63.0
svelte:
specifier: ^4.2.19
version: 4.2.19
unocss:
- specifier: ^0.62.0
- version: 0.62.3(postcss@8.4.45)(rollup@4.22.4)(vite@5.4.7(terser@5.33.0))
+ specifier: ^0.63.0
+ version: 0.63.0(postcss@8.4.45)(rollup@4.22.4)(vite@5.4.7(terser@5.33.0))
vite:
specifier: ^5.4.7
version: 5.4.7(terser@5.33.0)
@@ -361,139 +361,6 @@ packages:
'@antfu/utils@0.7.10':
resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==}
- '@babel/code-frame@7.24.7':
- resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==}
- engines: {node: '>=6.9.0'}
-
- '@babel/compat-data@7.25.4':
- resolution: {integrity: sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==}
- engines: {node: '>=6.9.0'}
-
- '@babel/core@7.25.2':
- resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==}
- engines: {node: '>=6.9.0'}
-
- '@babel/generator@7.25.6':
- resolution: {integrity: sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-annotate-as-pure@7.24.7':
- resolution: {integrity: sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-compilation-targets@7.25.2':
- resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-create-class-features-plugin@7.25.4':
- resolution: {integrity: sha512-ro/bFs3/84MDgDmMwbcHgDa8/E6J3QKNTk4xJJnVeFtGE+tL0K26E3pNxhYz2b67fJpt7Aphw5XcploKXuCvCQ==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0
-
- '@babel/helper-member-expression-to-functions@7.24.8':
- resolution: {integrity: sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-module-imports@7.24.7':
- resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-module-transforms@7.25.2':
- resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0
-
- '@babel/helper-optimise-call-expression@7.24.7':
- resolution: {integrity: sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-plugin-utils@7.24.8':
- resolution: {integrity: sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-replace-supers@7.25.0':
- resolution: {integrity: sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0
-
- '@babel/helper-simple-access@7.24.7':
- resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-skip-transparent-expression-wrappers@7.24.7':
- resolution: {integrity: sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-string-parser@7.24.8':
- resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-validator-identifier@7.24.7':
- resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-validator-option@7.24.8':
- resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helpers@7.25.6':
- resolution: {integrity: sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==}
- engines: {node: '>=6.9.0'}
-
- '@babel/highlight@7.24.7':
- resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==}
- engines: {node: '>=6.9.0'}
-
- '@babel/parser@7.25.6':
- resolution: {integrity: sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==}
- engines: {node: '>=6.0.0'}
- hasBin: true
-
- '@babel/plugin-syntax-jsx@7.24.7':
- resolution: {integrity: sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
-
- '@babel/plugin-syntax-typescript@7.25.4':
- resolution: {integrity: sha512-uMOCoHVU52BsSWxPOMVv5qKRdeSlPuImUCB2dlPuBSU+W2/ROE7/Zg8F2Kepbk+8yBa68LlRKxO+xgEVWorsDg==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
-
- '@babel/plugin-transform-modules-commonjs@7.24.8':
- resolution: {integrity: sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
-
- '@babel/plugin-transform-typescript@7.25.2':
- resolution: {integrity: sha512-lBwRvjSmqiMYe/pS0+1gggjJleUJi7NzjvQ1Fkqtt69hBa/0t1YuW/MLQMAPixfwaQOHUXsd6jeU3Z+vdGv3+A==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
-
- '@babel/preset-typescript@7.24.7':
- resolution: {integrity: sha512-SyXRe3OdWwIwalxDg5UtJnJQO+YPcTfwiIY2B0Xlddh9o7jpWLvv8X1RthIeDOxQ+O1ML5BLPCONToObyVQVuQ==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
-
- '@babel/template@7.25.0':
- resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==}
- engines: {node: '>=6.9.0'}
-
- '@babel/traverse@7.25.6':
- resolution: {integrity: sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==}
- engines: {node: '>=6.9.0'}
-
- '@babel/types@7.25.6':
- resolution: {integrity: sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==}
- engines: {node: '>=6.9.0'}
-
'@chainsafe/abort-controller@3.0.1':
resolution: {integrity: sha512-oyq0qgFJDIIgLpyPwTv4j/sHX/MITatFzY3/b42VSldyZfnUC1lYBx5RwFvzBv1Sq4APOj2VCZO23pDRwy5kew==}
engines: {node: '>=6.5'}
@@ -887,8 +754,8 @@ packages:
'@iconify/types@2.0.0':
resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==}
- '@iconify/utils@2.1.32':
- resolution: {integrity: sha512-LeifFZPPKu28O3AEDpYJNdEbvS4/ojAPyIW+pF/vUpJTYnbTiXUHkCh0bwgFRzKvdpb8H4Fbfd/742++MF4fPQ==}
+ '@iconify/utils@2.1.33':
+ resolution: {integrity: sha512-jP9h6v/g0BIZx0p7XGJJVtkVnydtbgTgt9mVNcGDYwaa7UhdHdI9dvoq+gKj9sijMSJKxUPEG2JyjsgXjxL7Kw==}
'@jridgewell/gen-mapping@0.3.5':
resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==}
@@ -1210,92 +1077,86 @@ packages:
resolution: {integrity: sha512-b1tx0orFCCh/THWPQa2ZwWzvOeyzzp36vkJYOpVg0u8UVOIsfVrnuC9FqAw9gRKn+rG2VmWQ/zDJZzkxUnj/XQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@unocss/astro@0.62.3':
- resolution: {integrity: sha512-C6ZdyLbLDS0LebwmgwVItLNAOSkL/tvVWNRd1i3Jy5uj1vPxlrw+3lIYiHjEofn0GFpBiwlv5+OCvO1Xpq5MqA==}
+ '@unocss/astro@0.63.0':
+ resolution: {integrity: sha512-ToF9X1uvm8CdxND+oVHrRPQyBsE5FZI1vz9lLVvqwzhOi9rfjGeoKeN7rV0njM2ohC+gbbPRDU9kKmZMnHLSzg==}
peerDependencies:
vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0
peerDependenciesMeta:
vite:
optional: true
- '@unocss/cli@0.62.3':
- resolution: {integrity: sha512-yEl1iNKkBVpo8+i8gzveM5/0/vOVe6m8+FmuSDuKeSPJnYMhI1mAn+OCKFb/I+qEeLbRPXebbJUUB1xZNzya+w==}
+ '@unocss/cli@0.63.0':
+ resolution: {integrity: sha512-nJuHLDxgxSYhPQ0OY5BIZ0XQJyphapAFHYNh1ahTfJRa6IBIcCZb/JZFHjczCCLSSp1PAO4SJBNEPjJxZWr3rQ==}
engines: {node: '>=14'}
hasBin: true
- '@unocss/config@0.62.3':
- resolution: {integrity: sha512-zYOvFE0HfGIbnP/AvsbAlJpPRx9CQyXzL11m/8zgsHW5SGlJIYxuTll83l/xu026G5mPiksy7quoEOEgCLslqw==}
+ '@unocss/config@0.63.0':
+ resolution: {integrity: sha512-rlhki3GA6pNX05sjDGJO4vTDonOfDngL9CJWEbn9hELgMZQ3+OAO4mePMA6OsYfMxYz5qpfDKwofkuV4CGNDKQ==}
engines: {node: '>=14'}
- '@unocss/core@0.62.3':
- resolution: {integrity: sha512-Pfyrj8S7jq9K1QXD6Z5BCeiQavaHpbMN5q958/kmdbNGp57hOg1e346fMJAvgPjLBR+lE/hgZEsDrijtRiZXnw==}
+ '@unocss/core@0.63.0':
+ resolution: {integrity: sha512-ZGvmQ3CgGlGJy8TDYUCLRzgv+uyUj2nv0a5MsVvLAD1BKHN96YSt/zRdvRprKUkSzP0yLw44k3kv59md8Bn8xw==}
- '@unocss/extractor-arbitrary-variants@0.62.3':
- resolution: {integrity: sha512-9ZscWyXEwDZif+b56xZyJFHwJOjdMXmj+6x96jOsnRNBzwT9eW7YcGCErP1ih/q1S6KmuRrHM/JOXMBQ6H4qlw==}
+ '@unocss/extractor-arbitrary-variants@0.63.0':
+ resolution: {integrity: sha512-zHSpKnXU+So15VtJV8CZE+VV6zxeard+fi3bfepCAZFI/8vxU7aTrEPeXniF06eIQeJZTGVn/EaOw4AKiy1ZRA==}
- '@unocss/extractor-svelte@0.62.3':
- resolution: {integrity: sha512-0Ani/K5/2qdY5sbszkIVzbQMTfAVUi4bfpu2GCkdWTtedsl0zLyYIp+OjuXRswhslQQVKOh5WTrowbqTRp3EOQ==}
+ '@unocss/extractor-svelte@0.63.0':
+ resolution: {integrity: sha512-1cm/SI01uNaZsXJTDsB8pSTg/Rlpg7PKtG8/BSbHFvR7yiwQAstKaCGCPraHy/7wUgMMFMsP4Pj9yy+9HyU/Jw==}
- '@unocss/inspector@0.62.3':
- resolution: {integrity: sha512-nTSXOf7YimFPxEYJo5VfP5wlMgYOCjlv3c5Ub/0fynCJXZNb89SFeU05ABXkEgg/FfiobVBTscikLc6guW8eHQ==}
+ '@unocss/inspector@0.63.0':
+ resolution: {integrity: sha512-vcAHezenaP3TxiX7GBNyLFRNrhw8oZlz8xNDiuSR3QI6Z2gCrCxdEwblFdjJKhBcNWK79oXm2QCHzD3/Fb7xvg==}
- '@unocss/postcss@0.62.3':
- resolution: {integrity: sha512-CwL378ef0QazduXqlaGcWgKJAzemBUxdhapWWiRqI8sXC/eXht5xK6nS1JxqADDuxosgqsGdvcCGmP8ZFrEyiA==}
+ '@unocss/postcss@0.63.0':
+ resolution: {integrity: sha512-p0JvVJjOxi9O1dRfto6SOqFqV+aq0knqiTlyOmmINiwkcvXWYmFGXKTw6DTR8ACYF8MwpnACt81DF7yNqA5L3g==}
engines: {node: '>=14'}
peerDependencies:
postcss: ^8.4.21
- '@unocss/preset-attributify@0.62.3':
- resolution: {integrity: sha512-ORNwyLobGTwnn/tK5yHnMabdJU6Mr/C4LyFH7G8VSLit/aVS0fFa795kJXwxfbqQoQ7Gw0Zxs9oE5RXI0/0y7g==}
+ '@unocss/preset-attributify@0.63.0':
+ resolution: {integrity: sha512-9t9rlo7JIhd+SbjupYTwKmyPgqc9uFa6zuaq+ol5HdTdbnDvj9dUAJSEvQEzB0NebjIn+n94WpHhRTX8M6O2Lw==}
- '@unocss/preset-icons@0.62.3':
- resolution: {integrity: sha512-Ie+5RTyac1Q5CNB/s/4aB4VTHAQgQqsI5hshMNLkJ0Jj1lWxodUdEbCRKjXDalRjAXOS9vsLjfJ35ozJ1RSTIQ==}
+ '@unocss/preset-icons@0.63.0':
+ resolution: {integrity: sha512-MYxhrmyf+cneKp1mB35OCewlYSRuFhEb5cvNN0q/doAM18/beELPDTVLGiVzspin8de3fgiqy9XIQdEVgtujMQ==}
- '@unocss/preset-mini@0.62.3':
- resolution: {integrity: sha512-dn/8ubeW2ry/ZF3iKxdQHnS0l3EBibt0rIOE/XVwx24ub6pRzclU4r7xHnXeqvAFOO9PoiKDGgFR92m6R2MxyQ==}
+ '@unocss/preset-mini@0.63.0':
+ resolution: {integrity: sha512-lpGtqtXqr6yVLeWiQmY1lb7sJBcb2O3CuFduKlx7HZKZOJpnRtZoZeNRo1XYcH6BRPBxPgru/d/m43AGMnDqew==}
- '@unocss/preset-tagify@0.62.3':
- resolution: {integrity: sha512-8BpUCZ5sjOZOzBKtu7ecfhRggwwPF78IqeqeNjI+XYRs8r7TBBcUVeF6zUkwhlX/TbtREkw2OZj0Iusa9CBO+A==}
+ '@unocss/preset-tagify@0.63.0':
+ resolution: {integrity: sha512-RrXYruhvSqB4QaDTCHiRQUSfP2b1ie1eEhZ0HV9/WqCtgQjan1w9uV8bbA1TPXHLdMXWyt6tAoWUZPRdszBXZg==}
- '@unocss/preset-typography@0.62.3':
- resolution: {integrity: sha512-GjtDgQ1Jec/5RNmnyGMWMgyPdStWcFG/S+NUfOuroRsGSI8PDxihVOwFu5CwvOB2J2r6mRNLeUYMluE05jW3sw==}
+ '@unocss/preset-typography@0.63.0':
+ resolution: {integrity: sha512-4uhTRa2D6yB2sBjV3lksP/rpc2kq0p6v+yvpAvor73PADQCpLLMW+HPpS3YZe52nagHBf/LpY8gVNoGTIy/8FA==}
- '@unocss/preset-uno@0.62.3':
- resolution: {integrity: sha512-RlsrMlpEzoZqB0lr5VvlkHGpEgr0Vp6z4Q/7DjW5t7mi20Z2i8olaLGWM0TO1wKoRi8bxc6HP0RHUS7pHtZxBA==}
+ '@unocss/preset-uno@0.63.0':
+ resolution: {integrity: sha512-rXBz83FQG/FynPMhYQ5xlQ5ai9clYqmlubvDQR/UvEtuQWL0wIK2NiBFBGosn4Q0ukT0GrwOIicV8aizHu2tAg==}
- '@unocss/preset-web-fonts@0.62.3':
- resolution: {integrity: sha512-rGEouncGFwcUY1cjkQ/ZoSmEzOeSi3Yk4YAfHGyS0ff5zKuTDWZgivB8hh/mTtvRzZunIL+FW1+1z5G9rUwjgQ==}
+ '@unocss/preset-web-fonts@0.63.0':
+ resolution: {integrity: sha512-0ybW2EG6fAtK0XrB82wNK7ETiE12+ctfRxqWnKgLxpcYHIYVS0m8bRWgBWpJ+1l9I0fWilyB622rg6qIBHHU3g==}
- '@unocss/preset-wind@0.62.3':
- resolution: {integrity: sha512-6+VNce1he1U5EXKlXRwTIPn8KeK6bZ2jAEgcCxk8mFy8SzOlLeYzXCI9lcdiWRTjIeIiK5iSaUqmsQFtKdTyQg==}
+ '@unocss/preset-wind@0.63.0':
+ resolution: {integrity: sha512-TVgFdxiIm4BfGLBE/4XqpeD2a+yMlrgTRY12WMEjj8DduNbuyuE+mnvaN7iY5+/DMIsng+eKyM3gamJew2r30w==}
- '@unocss/reset@0.62.3':
- resolution: {integrity: sha512-XVKPkbm8y9SGzRaG3x+HygGZURm50MvKLVHXsbxi67RbIir9Ouyt9hQTV6Xs3RicRZFWOpJx3wMRb8iKUOe5Zw==}
+ '@unocss/reset@0.63.0':
+ resolution: {integrity: sha512-QAAXxITLSWaNNK2+Mn1m2IeaCqrS3U9dszId2GVaiTHVe30M7vpMZQ6NrJI7xcD7DZ0kuh48BoZl5ttuiJkeww==}
- '@unocss/rule-utils@0.62.3':
- resolution: {integrity: sha512-qI37jHH//XzyR5Y2aN3Kpo4lQrQO+CaiXpqPSwMLYh2bIypc2RQVpqGVtU736x0eA6IIx41XEkKzUW+VtvJvmg==}
+ '@unocss/rule-utils@0.63.0':
+ resolution: {integrity: sha512-OKA2LzSPUXsYtfzx2G8Mw7/IhIOYxJNprBg7QwRF0e3eVmo87Ae1G5m9cghBLh7h7Ur1SgG5PCNhI0dZg6f7XA==}
engines: {node: '>=14'}
- '@unocss/scope@0.62.3':
- resolution: {integrity: sha512-TJGmFfsMrTo8DBJ7CJupIqObpgij+w4jCHMBf1uu0/9jbm63dH6WGcrl3zf5mm6UBTeLmB0RwJ8K4hs7LtrBDQ==}
-
- '@unocss/transformer-attributify-jsx-babel@0.62.3':
- resolution: {integrity: sha512-3yFZPSoN8VLiAGUAFIyfDRv9HQYTKFGKawDdMM9ATZmSEYOecJnYjS2HayT1P9kzGwBwuKoFjcX50JH1PuNokg==}
+ '@unocss/transformer-attributify-jsx@0.63.0':
+ resolution: {integrity: sha512-+U+udpaRoUn5gXlejmT6h5l6ZcPr/8QCj4edCURyTOUZYrOd8siZzjDRisXP5/fskm4UqEgdlx97Qar97O6CYQ==}
- '@unocss/transformer-attributify-jsx@0.62.3':
- resolution: {integrity: sha512-AutidZj26QW1vLQzuW/aQigC/5ZnIeqGYIBeb/O+FKKt0bU411tHrHnA1iV4CoxIdWJTkw2sGAl6z6YvwAYG6w==}
+ '@unocss/transformer-compile-class@0.63.0':
+ resolution: {integrity: sha512-bCapGembNCy9xY8CJxCretx/lj7mTyhnoO79CkTxckHlnUGEgNj9gbvtLkXCPJAfRLmBWMtgeMdUivG5+auq1A==}
- '@unocss/transformer-compile-class@0.62.3':
- resolution: {integrity: sha512-1hf+99wJXzQXQPz9xR0AiTB3vBXT5RiEyugIX95HFx7EvSE/P17RP90yKEKZtDZRUwGiz2vIyySlxcKTFak9Vg==}
+ '@unocss/transformer-directives@0.63.0':
+ resolution: {integrity: sha512-+qWfNKrOSuuaAfM5RSyqeCNy2s3nIct5knwlkzg/cYTT9UiKyIALeJY/k+plVM99WlGDNh/k6otNkNv5N/Z6wg==}
- '@unocss/transformer-directives@0.62.3':
- resolution: {integrity: sha512-HqHwFOA7DfxD/A1ROZIp8Dr8iZcE0z4w3VQtViWPQ89Fqmb7p2wCPGekk+8yW5PAltpynvHE4ahJEto5xjdg6w==}
+ '@unocss/transformer-variant-group@0.63.0':
+ resolution: {integrity: sha512-JNTqxogGDd+XpbP3oRUulNEaY1H+42+4KXQxlfxllikgqe28QHorhBbM/4ObCw085tKhrM+oDH391KF+VUNkhQ==}
- '@unocss/transformer-variant-group@0.62.3':
- resolution: {integrity: sha512-oNX1SdfWemz0GWGSXACu8NevM0t2l44j2ancnooNkNz3l1+z1nbn4vFwfsJCOqOaoVm4ZqxaiQ8HIx81ZSiU1A==}
-
- '@unocss/vite@0.62.3':
- resolution: {integrity: sha512-RrqF6Go8s0BGpwRfkOiLuO+n3CUE/CXxGqb0ipbUARhmNWJlekE3YPfayqImSEnCcImpaPgtVGv6Y0u3kLGG/w==}
+ '@unocss/vite@0.63.0':
+ resolution: {integrity: sha512-7UH36o7UEwMbrifuvTj6wOPJZ3DNK21HO+ACOlFaM9HGVmlEUEuzC5fRVid0Q/zRlo0URaI/82TkvEh3sUU8Zg==}
peerDependencies:
vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0
@@ -1329,10 +1190,6 @@ packages:
resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
engines: {node: '>=8'}
- ansi-styles@3.2.1:
- resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
- engines: {node: '>=4'}
-
ansi-styles@4.3.0:
resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
engines: {node: '>=8'}
@@ -1385,11 +1242,6 @@ packages:
browser-stdout@1.3.1:
resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==}
- browserslist@4.23.3:
- resolution: {integrity: sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==}
- engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
- hasBin: true
-
buffer-from@1.1.2:
resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
@@ -1414,13 +1266,6 @@ packages:
resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==}
engines: {node: '>=10'}
- caniuse-lite@1.0.30001659:
- resolution: {integrity: sha512-Qxxyfv3RdHAfJcXelgf0hU4DFUVXBGTjqrBUZLUh8AtlGnsDo+CnncYtTd95+ZKfnANUOzxyIQCuU/UeBZBYoA==}
-
- chalk@2.4.2:
- resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
- engines: {node: '>=4'}
-
chalk@4.1.2:
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
engines: {node: '>=10'}
@@ -1448,16 +1293,10 @@ packages:
code-red@1.0.4:
resolution: {integrity: sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==}
- color-convert@1.9.3:
- resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
-
color-convert@2.0.1:
resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
engines: {node: '>=7.0.0'}
- color-name@1.1.3:
- resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
-
color-name@1.1.4:
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
@@ -1477,9 +1316,6 @@ packages:
resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==}
engines: {node: ^14.18.0 || >=16.10.0}
- convert-source-map@2.0.0:
- resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
-
covector@0.12.3:
resolution: {integrity: sha512-9LNME5eb4/KMdWD2jyJ4XX6CvD45xsF9hmxTQWAoDSuDGKdyh98wzUupz4BrJ9iviR8R9pI3D6Mozv13UX0g+A==}
engines: {node: '>=18'}
@@ -1496,6 +1332,10 @@ packages:
resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==}
engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0}
+ css-tree@3.0.0:
+ resolution: {integrity: sha512-o88DVQ6GzsABn1+6+zo2ct801dBO5OASVyxbbvA2W20ue2puSh/VOuqUj90eUeMSX/xqGqBmOKiRQN7tJOuBXw==}
+ engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0}
+
ctrlc-windows@2.1.0:
resolution: {integrity: sha512-OrX5KI+K+2NMN91QIhYZdW7VDO2YsSdTZW494pA7Nvw/wBdU2hz+MGP006bR978zOTrG6Q8EIeJvLJmLqc6MsQ==}
@@ -1543,9 +1383,6 @@ packages:
effection@2.0.8:
resolution: {integrity: sha512-/v7cbPIXGGylInQgHHjJutzqUn6VIfcP13hh2X0hXf04wwAlSI+lVjUBKpr5TX3+v9dXV/JLHO/pqQ9Cp1QAnQ==}
- electron-to-chromium@1.5.18:
- resolution: {integrity: sha512-1OfuVACu+zKlmjsNdcJuVQuVE61sZOLbNM4JAQ1Rvh6EOj0/EUKhMJjRH73InPlXSh8HIJk1cVZ8pyOV/FMdUQ==}
-
emoji-regex@8.0.0:
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
@@ -1563,10 +1400,6 @@ packages:
resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
engines: {node: '>=6'}
- escape-string-regexp@1.0.5:
- resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
- engines: {node: '>=0.8.0'}
-
escape-string-regexp@4.0.0:
resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
engines: {node: '>=10'}
@@ -1709,10 +1542,6 @@ packages:
function-bind@1.1.2:
resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
- gensync@1.0.0-beta.2:
- resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
- engines: {node: '>=6.9.0'}
-
get-caller-file@2.0.5:
resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
engines: {node: 6.* || 8.* || >= 10.*}
@@ -1733,10 +1562,6 @@ packages:
engines: {node: '>=12'}
deprecated: Glob versions prior to v9 are no longer supported
- globals@11.12.0:
- resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
- engines: {node: '>=4'}
-
globals@14.0.0:
resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==}
engines: {node: '>=18'}
@@ -1752,10 +1577,6 @@ packages:
resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==}
engines: {node: '>=10'}
- has-flag@3.0.0:
- resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
- engines: {node: '>=4'}
-
has-flag@4.0.0:
resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
engines: {node: '>=8'}
@@ -1779,8 +1600,8 @@ packages:
resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
engines: {node: '>=6'}
- importx@0.4.4:
- resolution: {integrity: sha512-Lo1pukzAREqrBnnHC+tj+lreMTAvyxtkKsMxLY8H15M/bvLl54p3YuoTI70Tz7Il0AsgSlD7Lrk/FaApRcBL7w==}
+ importx@0.5.0:
+ resolution: {integrity: sha512-qROz3rSOjQYclmEQAajH9RhBuqpAGHM+5CNd9fk+TsF4JKmQsAI1egafW8XZZv8vARCo4nAmmt5d0eI2B8GUsA==}
imurmurhash@0.1.4:
resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
@@ -1854,26 +1675,14 @@ packages:
isexe@2.0.0:
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
- jiti@1.21.6:
- resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==}
+ jiti@2.0.0:
+ resolution: {integrity: sha512-CJ7e7Abb779OTRv3lomfp7Mns/Sy1+U4pcAx5VbjxCZD5ZM/VJaXPpPjNKjtSvWQy/H86E49REXR34dl1JEz9w==}
hasBin: true
- jiti@2.0.0-beta.3:
- resolution: {integrity: sha512-pmfRbVRs/7khFrSAYnSiJ8C0D5GvzkE4Ey2pAvUcJsw1ly/p+7ut27jbJrjY79BpAJQJ4gXYFtK6d1Aub+9baQ==}
- hasBin: true
-
- js-tokens@4.0.0:
- resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
-
js-yaml@4.1.0:
resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
hasBin: true
- jsesc@2.5.2:
- resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==}
- engines: {node: '>=4'}
- hasBin: true
-
json-buffer@3.0.1:
resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
@@ -1883,11 +1692,6 @@ packages:
json-stable-stringify-without-jsonify@1.0.1:
resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
- json5@2.2.3:
- resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
- engines: {node: '>=6'}
- hasBin: true
-
keyv@4.5.4:
resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
@@ -1930,9 +1734,6 @@ packages:
longest-streak@2.0.4:
resolution: {integrity: sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==}
- lru-cache@5.1.1:
- resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
-
magic-string@0.30.11:
resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==}
@@ -1951,6 +1752,9 @@ packages:
mdn-data@2.0.30:
resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==}
+ mdn-data@2.10.0:
+ resolution: {integrity: sha512-qq7C3EtK3yJXMwz1zAab65pjl+UhohqMOctTgcqjLOWABqmwj+me02LSsCuEUxnst9X1lCBpoE0WArGKgdGDzw==}
+
merge2@1.4.1:
resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
engines: {node: '>= 8'}
@@ -2011,15 +1815,12 @@ packages:
encoding:
optional: true
- node-releases@2.0.18:
- resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==}
-
normalize-path@3.0.0:
resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
engines: {node: '>=0.10.0'}
- ofetch@1.3.4:
- resolution: {integrity: sha512-KLIET85ik3vhEfS+3fDlc/BAZiAp+43QEC/yCo5zkNoY2YaKvNkOaFr/6wCFgFH1kuYQM5pMNi0Tg8koiIemtw==}
+ ofetch@1.4.0:
+ resolution: {integrity: sha512-MuHgsEhU6zGeX+EMh+8mSMrYTnsqJQQrpM00Q6QHMKNqQ0bKy0B43tk8tL1wg+CnsSTy1kg4Ir2T5Ig6rD+dfQ==}
on-exit-leak-free@2.1.2:
resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==}
@@ -2267,10 +2068,6 @@ packages:
resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
engines: {node: '>=8'}
- supports-color@5.5.0:
- resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
- engines: {node: '>=4'}
-
supports-color@7.2.0:
resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
engines: {node: '>=8'}
@@ -2311,10 +2108,6 @@ packages:
resolution: {integrity: sha512-NbBoFBpqfcgd1tCiO8Lkfdk+xrA7mlLR9zgvZcZWQQwU63XAfUePyd6wZBaU93Hqw347lHnwFzttAkemHzzz4g==}
engines: {node: '>=12.0.0'}
- to-fast-properties@2.0.0:
- resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
- engines: {node: '>=4'}
-
to-regex-range@5.0.1:
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
engines: {node: '>=8.0'}
@@ -2338,8 +2131,8 @@ packages:
tslib@2.7.0:
resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==}
- tsx@4.19.0:
- resolution: {integrity: sha512-bV30kM7bsLZKZIOCHeMNVMJ32/LuJzLVajkQI/qf92J2Qr08ueLQvW00PUZGiuLPP760UINwupgUj8qrSCPUKg==}
+ tsx@4.19.1:
+ resolution: {integrity: sha512-0flMz1lh74BR4wOvBjuh9olbnwqCPc35OOlfyzHba0Dc+QNUeWX/Gq2YTbnwcWPO3BMd8fkzRVrHcsR+a7z7rA==}
engines: {node: '>=18.0.0'}
hasBin: true
@@ -2368,8 +2161,8 @@ packages:
ufo@1.5.4:
resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==}
- unconfig@0.5.5:
- resolution: {integrity: sha512-VQZ5PT9HDX+qag0XdgQi8tJepPhXiR/yVOkn707gJDKo31lGjRilPREiQJ9Z6zd/Ugpv6ZvO5VxVIcatldYcNQ==}
+ unconfig@0.6.0:
+ resolution: {integrity: sha512-4C67J0nIF2QwSXty2kW3zZx1pMZ3iXabylvJWWgHybWVUcMf9pxwsngoQt0gC+AVstRywFqrRBp3qOXJayhpOw==}
unified@9.2.2:
resolution: {integrity: sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==}
@@ -2377,11 +2170,11 @@ packages:
unist-util-stringify-position@2.0.3:
resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==}
- unocss@0.62.3:
- resolution: {integrity: sha512-CLS6+JIlBobe/iPTz07pehyGDP8VqGJsiE+ZZ3Xkgib3hw76nCqAQF/4mJ8jVoV4C8KvGyVxmHaSSCFOkWmmZg==}
+ unocss@0.63.0:
+ resolution: {integrity: sha512-+C+qsKMDL2GyhY4/Dz3BrQcf/1yf1oRyej7ItW4Y7l1sIS1Zcsp9772IUlzuTEnLQQQOdOJVm99OB4TWnGndeg==}
engines: {node: '>=14'}
peerDependencies:
- '@unocss/webpack': 0.62.3
+ '@unocss/webpack': 0.63.0
vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0
peerDependenciesMeta:
'@unocss/webpack':
@@ -2389,12 +2182,6 @@ packages:
vite:
optional: true
- update-browserslist-db@1.1.0:
- resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==}
- hasBin: true
- peerDependencies:
- browserslist: '>= 4.21.0'
-
uri-js@4.4.1:
resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
@@ -2472,9 +2259,6 @@ packages:
resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
engines: {node: '>=10'}
- yallist@3.1.1:
- resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
-
yargs-parser@20.2.9:
resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==}
engines: {node: '>=10'}
@@ -2525,205 +2309,6 @@ snapshots:
'@antfu/utils@0.7.10': {}
- '@babel/code-frame@7.24.7':
- dependencies:
- '@babel/highlight': 7.24.7
- picocolors: 1.1.0
-
- '@babel/compat-data@7.25.4': {}
-
- '@babel/core@7.25.2':
- dependencies:
- '@ampproject/remapping': 2.3.0
- '@babel/code-frame': 7.24.7
- '@babel/generator': 7.25.6
- '@babel/helper-compilation-targets': 7.25.2
- '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2)
- '@babel/helpers': 7.25.6
- '@babel/parser': 7.25.6
- '@babel/template': 7.25.0
- '@babel/traverse': 7.25.6
- '@babel/types': 7.25.6
- convert-source-map: 2.0.0
- debug: 4.3.7(supports-color@8.1.1)
- gensync: 1.0.0-beta.2
- json5: 2.2.3
- semver: 7.6.3
- transitivePeerDependencies:
- - supports-color
-
- '@babel/generator@7.25.6':
- dependencies:
- '@babel/types': 7.25.6
- '@jridgewell/gen-mapping': 0.3.5
- '@jridgewell/trace-mapping': 0.3.25
- jsesc: 2.5.2
-
- '@babel/helper-annotate-as-pure@7.24.7':
- dependencies:
- '@babel/types': 7.25.6
-
- '@babel/helper-compilation-targets@7.25.2':
- dependencies:
- '@babel/compat-data': 7.25.4
- '@babel/helper-validator-option': 7.24.8
- browserslist: 4.23.3
- lru-cache: 5.1.1
- semver: 7.6.3
-
- '@babel/helper-create-class-features-plugin@7.25.4(@babel/core@7.25.2)':
- dependencies:
- '@babel/core': 7.25.2
- '@babel/helper-annotate-as-pure': 7.24.7
- '@babel/helper-member-expression-to-functions': 7.24.8
- '@babel/helper-optimise-call-expression': 7.24.7
- '@babel/helper-replace-supers': 7.25.0(@babel/core@7.25.2)
- '@babel/helper-skip-transparent-expression-wrappers': 7.24.7
- '@babel/traverse': 7.25.6
- semver: 7.6.3
- transitivePeerDependencies:
- - supports-color
-
- '@babel/helper-member-expression-to-functions@7.24.8':
- dependencies:
- '@babel/traverse': 7.25.6
- '@babel/types': 7.25.6
- transitivePeerDependencies:
- - supports-color
-
- '@babel/helper-module-imports@7.24.7':
- dependencies:
- '@babel/traverse': 7.25.6
- '@babel/types': 7.25.6
- transitivePeerDependencies:
- - supports-color
-
- '@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2)':
- dependencies:
- '@babel/core': 7.25.2
- '@babel/helper-module-imports': 7.24.7
- '@babel/helper-simple-access': 7.24.7
- '@babel/helper-validator-identifier': 7.24.7
- '@babel/traverse': 7.25.6
- transitivePeerDependencies:
- - supports-color
-
- '@babel/helper-optimise-call-expression@7.24.7':
- dependencies:
- '@babel/types': 7.25.6
-
- '@babel/helper-plugin-utils@7.24.8': {}
-
- '@babel/helper-replace-supers@7.25.0(@babel/core@7.25.2)':
- dependencies:
- '@babel/core': 7.25.2
- '@babel/helper-member-expression-to-functions': 7.24.8
- '@babel/helper-optimise-call-expression': 7.24.7
- '@babel/traverse': 7.25.6
- transitivePeerDependencies:
- - supports-color
-
- '@babel/helper-simple-access@7.24.7':
- dependencies:
- '@babel/traverse': 7.25.6
- '@babel/types': 7.25.6
- transitivePeerDependencies:
- - supports-color
-
- '@babel/helper-skip-transparent-expression-wrappers@7.24.7':
- dependencies:
- '@babel/traverse': 7.25.6
- '@babel/types': 7.25.6
- transitivePeerDependencies:
- - supports-color
-
- '@babel/helper-string-parser@7.24.8': {}
-
- '@babel/helper-validator-identifier@7.24.7': {}
-
- '@babel/helper-validator-option@7.24.8': {}
-
- '@babel/helpers@7.25.6':
- dependencies:
- '@babel/template': 7.25.0
- '@babel/types': 7.25.6
-
- '@babel/highlight@7.24.7':
- dependencies:
- '@babel/helper-validator-identifier': 7.24.7
- chalk: 2.4.2
- js-tokens: 4.0.0
- picocolors: 1.1.0
-
- '@babel/parser@7.25.6':
- dependencies:
- '@babel/types': 7.25.6
-
- '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.25.2)':
- dependencies:
- '@babel/core': 7.25.2
- '@babel/helper-plugin-utils': 7.24.8
-
- '@babel/plugin-syntax-typescript@7.25.4(@babel/core@7.25.2)':
- dependencies:
- '@babel/core': 7.25.2
- '@babel/helper-plugin-utils': 7.24.8
-
- '@babel/plugin-transform-modules-commonjs@7.24.8(@babel/core@7.25.2)':
- dependencies:
- '@babel/core': 7.25.2
- '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2)
- '@babel/helper-plugin-utils': 7.24.8
- '@babel/helper-simple-access': 7.24.7
- transitivePeerDependencies:
- - supports-color
-
- '@babel/plugin-transform-typescript@7.25.2(@babel/core@7.25.2)':
- dependencies:
- '@babel/core': 7.25.2
- '@babel/helper-annotate-as-pure': 7.24.7
- '@babel/helper-create-class-features-plugin': 7.25.4(@babel/core@7.25.2)
- '@babel/helper-plugin-utils': 7.24.8
- '@babel/helper-skip-transparent-expression-wrappers': 7.24.7
- '@babel/plugin-syntax-typescript': 7.25.4(@babel/core@7.25.2)
- transitivePeerDependencies:
- - supports-color
-
- '@babel/preset-typescript@7.24.7(@babel/core@7.25.2)':
- dependencies:
- '@babel/core': 7.25.2
- '@babel/helper-plugin-utils': 7.24.8
- '@babel/helper-validator-option': 7.24.8
- '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2)
- '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.25.2)
- '@babel/plugin-transform-typescript': 7.25.2(@babel/core@7.25.2)
- transitivePeerDependencies:
- - supports-color
-
- '@babel/template@7.25.0':
- dependencies:
- '@babel/code-frame': 7.24.7
- '@babel/parser': 7.25.6
- '@babel/types': 7.25.6
-
- '@babel/traverse@7.25.6':
- dependencies:
- '@babel/code-frame': 7.24.7
- '@babel/generator': 7.25.6
- '@babel/parser': 7.25.6
- '@babel/template': 7.25.0
- '@babel/types': 7.25.6
- debug: 4.3.7(supports-color@8.1.1)
- globals: 11.12.0
- transitivePeerDependencies:
- - supports-color
-
- '@babel/types@7.25.6':
- dependencies:
- '@babel/helper-string-parser': 7.24.8
- '@babel/helper-validator-identifier': 7.24.7
- to-fast-properties: 2.0.0
-
'@chainsafe/abort-controller@3.0.1':
dependencies:
event-target-shim: 5.0.1
@@ -2989,9 +2574,9 @@ snapshots:
'@esbuild/win32-x64@0.23.1':
optional: true
- '@eslint-community/eslint-utils@4.4.0(eslint@9.11.1(jiti@1.21.6))':
+ '@eslint-community/eslint-utils@4.4.0(eslint@9.11.1(jiti@2.0.0))':
dependencies:
- eslint: 9.11.1(jiti@1.21.6)
+ eslint: 9.11.1(jiti@2.0.0)
eslint-visitor-keys: 3.4.3
'@eslint-community/regexpp@4.11.1': {}
@@ -3042,7 +2627,7 @@ snapshots:
'@iconify/types@2.0.0': {}
- '@iconify/utils@2.1.32':
+ '@iconify/utils@2.1.33':
dependencies:
'@antfu/install-pkg': 0.4.1
'@antfu/utils': 0.7.10
@@ -3264,15 +2849,15 @@ snapshots:
'@types/unist@2.0.11': {}
- '@typescript-eslint/eslint-plugin@8.7.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2))(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)':
+ '@typescript-eslint/eslint-plugin@8.7.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2))(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)':
dependencies:
'@eslint-community/regexpp': 4.11.1
- '@typescript-eslint/parser': 8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
+ '@typescript-eslint/parser': 8.7.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
'@typescript-eslint/scope-manager': 8.7.0
- '@typescript-eslint/type-utils': 8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
- '@typescript-eslint/utils': 8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
+ '@typescript-eslint/type-utils': 8.7.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
+ '@typescript-eslint/utils': 8.7.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
'@typescript-eslint/visitor-keys': 8.7.0
- eslint: 9.11.1(jiti@1.21.6)
+ eslint: 9.11.1(jiti@2.0.0)
graphemer: 1.4.0
ignore: 5.3.2
natural-compare: 1.4.0
@@ -3282,14 +2867,14 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)':
+ '@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)':
dependencies:
'@typescript-eslint/scope-manager': 8.7.0
'@typescript-eslint/types': 8.7.0
'@typescript-eslint/typescript-estree': 8.7.0(typescript@5.6.2)
'@typescript-eslint/visitor-keys': 8.7.0
debug: 4.3.7(supports-color@8.1.1)
- eslint: 9.11.1(jiti@1.21.6)
+ eslint: 9.11.1(jiti@2.0.0)
optionalDependencies:
typescript: 5.6.2
transitivePeerDependencies:
@@ -3300,10 +2885,10 @@ snapshots:
'@typescript-eslint/types': 8.7.0
'@typescript-eslint/visitor-keys': 8.7.0
- '@typescript-eslint/type-utils@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)':
+ '@typescript-eslint/type-utils@8.7.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)':
dependencies:
'@typescript-eslint/typescript-estree': 8.7.0(typescript@5.6.2)
- '@typescript-eslint/utils': 8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
+ '@typescript-eslint/utils': 8.7.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
debug: 4.3.7(supports-color@8.1.1)
ts-api-utils: 1.3.0(typescript@5.6.2)
optionalDependencies:
@@ -3329,13 +2914,13 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/utils@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)':
+ '@typescript-eslint/utils@8.7.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)':
dependencies:
- '@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1(jiti@1.21.6))
+ '@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1(jiti@2.0.0))
'@typescript-eslint/scope-manager': 8.7.0
'@typescript-eslint/types': 8.7.0
'@typescript-eslint/typescript-estree': 8.7.0(typescript@5.6.2)
- eslint: 9.11.1(jiti@1.21.6)
+ eslint: 9.11.1(jiti@2.0.0)
transitivePeerDependencies:
- supports-color
- typescript
@@ -3345,24 +2930,24 @@ snapshots:
'@typescript-eslint/types': 8.7.0
eslint-visitor-keys: 3.4.3
- '@unocss/astro@0.62.3(rollup@4.22.4)(vite@5.4.7(terser@5.33.0))':
+ '@unocss/astro@0.63.0(rollup@4.22.4)(vite@5.4.7(terser@5.33.0))':
dependencies:
- '@unocss/core': 0.62.3
- '@unocss/reset': 0.62.3
- '@unocss/vite': 0.62.3(rollup@4.22.4)(vite@5.4.7(terser@5.33.0))
+ '@unocss/core': 0.63.0
+ '@unocss/reset': 0.63.0
+ '@unocss/vite': 0.63.0(rollup@4.22.4)(vite@5.4.7(terser@5.33.0))
optionalDependencies:
vite: 5.4.7(terser@5.33.0)
transitivePeerDependencies:
- rollup
- supports-color
- '@unocss/cli@0.62.3(rollup@4.22.4)':
+ '@unocss/cli@0.63.0(rollup@4.22.4)':
dependencies:
'@ampproject/remapping': 2.3.0
'@rollup/pluginutils': 5.1.2(rollup@4.22.4)
- '@unocss/config': 0.62.3
- '@unocss/core': 0.62.3
- '@unocss/preset-uno': 0.62.3
+ '@unocss/config': 0.63.0
+ '@unocss/core': 0.63.0
+ '@unocss/preset-uno': 0.63.0
cac: 6.7.14
chokidar: 3.6.0
colorette: 2.0.20
@@ -3375,130 +2960,116 @@ snapshots:
- rollup
- supports-color
- '@unocss/config@0.62.3':
+ '@unocss/config@0.63.0':
dependencies:
- '@unocss/core': 0.62.3
- unconfig: 0.5.5
+ '@unocss/core': 0.63.0
+ unconfig: 0.6.0
transitivePeerDependencies:
- supports-color
- '@unocss/core@0.62.3': {}
+ '@unocss/core@0.63.0': {}
- '@unocss/extractor-arbitrary-variants@0.62.3':
+ '@unocss/extractor-arbitrary-variants@0.63.0':
dependencies:
- '@unocss/core': 0.62.3
+ '@unocss/core': 0.63.0
- '@unocss/extractor-svelte@0.62.3': {}
+ '@unocss/extractor-svelte@0.63.0': {}
- '@unocss/inspector@0.62.3':
+ '@unocss/inspector@0.63.0':
dependencies:
- '@unocss/core': 0.62.3
- '@unocss/rule-utils': 0.62.3
+ '@unocss/core': 0.63.0
+ '@unocss/rule-utils': 0.63.0
gzip-size: 6.0.0
sirv: 2.0.4
- '@unocss/postcss@0.62.3(postcss@8.4.45)':
+ '@unocss/postcss@0.63.0(postcss@8.4.45)':
dependencies:
- '@unocss/config': 0.62.3
- '@unocss/core': 0.62.3
- '@unocss/rule-utils': 0.62.3
- css-tree: 2.3.1
- magic-string: 0.30.11
+ '@unocss/config': 0.63.0
+ '@unocss/core': 0.63.0
+ '@unocss/rule-utils': 0.63.0
+ css-tree: 3.0.0
postcss: 8.4.45
tinyglobby: 0.2.6
transitivePeerDependencies:
- supports-color
- '@unocss/preset-attributify@0.62.3':
+ '@unocss/preset-attributify@0.63.0':
dependencies:
- '@unocss/core': 0.62.3
+ '@unocss/core': 0.63.0
- '@unocss/preset-icons@0.62.3':
+ '@unocss/preset-icons@0.63.0':
dependencies:
- '@iconify/utils': 2.1.32
- '@unocss/core': 0.62.3
- ofetch: 1.3.4
+ '@iconify/utils': 2.1.33
+ '@unocss/core': 0.63.0
+ ofetch: 1.4.0
transitivePeerDependencies:
- supports-color
- '@unocss/preset-mini@0.62.3':
+ '@unocss/preset-mini@0.63.0':
dependencies:
- '@unocss/core': 0.62.3
- '@unocss/extractor-arbitrary-variants': 0.62.3
- '@unocss/rule-utils': 0.62.3
+ '@unocss/core': 0.63.0
+ '@unocss/extractor-arbitrary-variants': 0.63.0
+ '@unocss/rule-utils': 0.63.0
- '@unocss/preset-tagify@0.62.3':
+ '@unocss/preset-tagify@0.63.0':
dependencies:
- '@unocss/core': 0.62.3
+ '@unocss/core': 0.63.0
- '@unocss/preset-typography@0.62.3':
+ '@unocss/preset-typography@0.63.0':
dependencies:
- '@unocss/core': 0.62.3
- '@unocss/preset-mini': 0.62.3
+ '@unocss/core': 0.63.0
+ '@unocss/preset-mini': 0.63.0
- '@unocss/preset-uno@0.62.3':
+ '@unocss/preset-uno@0.63.0':
dependencies:
- '@unocss/core': 0.62.3
- '@unocss/preset-mini': 0.62.3
- '@unocss/preset-wind': 0.62.3
- '@unocss/rule-utils': 0.62.3
+ '@unocss/core': 0.63.0
+ '@unocss/preset-mini': 0.63.0
+ '@unocss/preset-wind': 0.63.0
+ '@unocss/rule-utils': 0.63.0
- '@unocss/preset-web-fonts@0.62.3':
+ '@unocss/preset-web-fonts@0.63.0':
dependencies:
- '@unocss/core': 0.62.3
- ofetch: 1.3.4
+ '@unocss/core': 0.63.0
+ ofetch: 1.4.0
- '@unocss/preset-wind@0.62.3':
+ '@unocss/preset-wind@0.63.0':
dependencies:
- '@unocss/core': 0.62.3
- '@unocss/preset-mini': 0.62.3
- '@unocss/rule-utils': 0.62.3
+ '@unocss/core': 0.63.0
+ '@unocss/preset-mini': 0.63.0
+ '@unocss/rule-utils': 0.63.0
- '@unocss/reset@0.62.3': {}
+ '@unocss/reset@0.63.0': {}
- '@unocss/rule-utils@0.62.3':
+ '@unocss/rule-utils@0.63.0':
dependencies:
- '@unocss/core': 0.62.3
+ '@unocss/core': 0.63.0
magic-string: 0.30.11
- '@unocss/scope@0.62.3': {}
-
- '@unocss/transformer-attributify-jsx-babel@0.62.3':
- dependencies:
- '@babel/core': 7.25.2
- '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2)
- '@babel/preset-typescript': 7.24.7(@babel/core@7.25.2)
- '@unocss/core': 0.62.3
- transitivePeerDependencies:
- - supports-color
-
- '@unocss/transformer-attributify-jsx@0.62.3':
+ '@unocss/transformer-attributify-jsx@0.63.0':
dependencies:
- '@unocss/core': 0.62.3
+ '@unocss/core': 0.63.0
- '@unocss/transformer-compile-class@0.62.3':
+ '@unocss/transformer-compile-class@0.63.0':
dependencies:
- '@unocss/core': 0.62.3
+ '@unocss/core': 0.63.0
- '@unocss/transformer-directives@0.62.3':
+ '@unocss/transformer-directives@0.63.0':
dependencies:
- '@unocss/core': 0.62.3
- '@unocss/rule-utils': 0.62.3
- css-tree: 2.3.1
+ '@unocss/core': 0.63.0
+ '@unocss/rule-utils': 0.63.0
+ css-tree: 3.0.0
- '@unocss/transformer-variant-group@0.62.3':
+ '@unocss/transformer-variant-group@0.63.0':
dependencies:
- '@unocss/core': 0.62.3
+ '@unocss/core': 0.63.0
- '@unocss/vite@0.62.3(rollup@4.22.4)(vite@5.4.7(terser@5.33.0))':
+ '@unocss/vite@0.63.0(rollup@4.22.4)(vite@5.4.7(terser@5.33.0))':
dependencies:
'@ampproject/remapping': 2.3.0
'@rollup/pluginutils': 5.1.2(rollup@4.22.4)
- '@unocss/config': 0.62.3
- '@unocss/core': 0.62.3
- '@unocss/inspector': 0.62.3
- '@unocss/scope': 0.62.3
- '@unocss/transformer-directives': 0.62.3
+ '@unocss/config': 0.63.0
+ '@unocss/core': 0.63.0
+ '@unocss/inspector': 0.63.0
chokidar: 3.6.0
magic-string: 0.30.11
tinyglobby: 0.2.6
@@ -3532,10 +3103,6 @@ snapshots:
ansi-regex@5.0.1: {}
- ansi-styles@3.2.1:
- dependencies:
- color-convert: 1.9.3
-
ansi-styles@4.3.0:
dependencies:
color-convert: 2.0.1
@@ -3580,13 +3147,6 @@ snapshots:
browser-stdout@1.3.1: {}
- browserslist@4.23.3:
- dependencies:
- caniuse-lite: 1.0.30001659
- electron-to-chromium: 1.5.18
- node-releases: 2.0.18
- update-browserslist-db: 1.1.0(browserslist@4.23.3)
-
buffer-from@1.1.2: {}
buffer@6.0.3:
@@ -3605,14 +3165,6 @@ snapshots:
camelcase@6.3.0: {}
- caniuse-lite@1.0.30001659: {}
-
- chalk@2.4.2:
- dependencies:
- ansi-styles: 3.2.1
- escape-string-regexp: 1.0.5
- supports-color: 5.5.0
-
chalk@4.1.2:
dependencies:
ansi-styles: 4.3.0
@@ -3656,16 +3208,10 @@ snapshots:
estree-walker: 3.0.3
periscopic: 3.1.0
- color-convert@1.9.3:
- dependencies:
- color-name: 1.1.3
-
color-convert@2.0.1:
dependencies:
color-name: 1.1.4
- color-name@1.1.3: {}
-
color-name@1.1.4: {}
colorette@2.0.20: {}
@@ -3678,8 +3224,6 @@ snapshots:
consola@3.2.3: {}
- convert-source-map@2.0.0: {}
-
covector@0.12.3(mocha@10.7.3):
dependencies:
'@clack/prompts': 0.7.0
@@ -3718,6 +3262,11 @@ snapshots:
mdn-data: 2.0.30
source-map-js: 1.2.1
+ css-tree@3.0.0:
+ dependencies:
+ mdn-data: 2.10.0
+ source-map-js: 1.2.1
+
ctrlc-windows@2.1.0: {}
debug@4.3.7(supports-color@8.1.1):
@@ -3759,8 +3308,6 @@ snapshots:
- encoding
- mocha
- electron-to-chromium@1.5.18: {}
-
emoji-regex@8.0.0: {}
esbuild@0.21.5:
@@ -3818,13 +3365,11 @@ snapshots:
escalade@3.2.0: {}
- escape-string-regexp@1.0.5: {}
-
escape-string-regexp@4.0.0: {}
- eslint-config-prettier@9.1.0(eslint@9.11.1(jiti@1.21.6)):
+ eslint-config-prettier@9.1.0(eslint@9.11.1(jiti@2.0.0)):
dependencies:
- eslint: 9.11.1(jiti@1.21.6)
+ eslint: 9.11.1(jiti@2.0.0)
eslint-plugin-security@3.0.1:
dependencies:
@@ -3839,9 +3384,9 @@ snapshots:
eslint-visitor-keys@4.0.0: {}
- eslint@9.11.1(jiti@1.21.6):
+ eslint@9.11.1(jiti@2.0.0):
dependencies:
- '@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1(jiti@1.21.6))
+ '@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1(jiti@2.0.0))
'@eslint-community/regexpp': 4.11.1
'@eslint/config-array': 0.18.0
'@eslint/core': 0.6.0
@@ -3879,7 +3424,7 @@ snapshots:
strip-ansi: 6.0.1
text-table: 0.2.0
optionalDependencies:
- jiti: 1.21.6
+ jiti: 2.0.0
transitivePeerDependencies:
- supports-color
@@ -3972,8 +3517,6 @@ snapshots:
function-bind@1.1.2: {}
- gensync@1.0.0-beta.2: {}
-
get-caller-file@2.0.5: {}
get-tsconfig@4.8.0:
@@ -3996,8 +3539,6 @@ snapshots:
minimatch: 5.1.6
once: 1.4.0
- globals@11.12.0: {}
-
globals@14.0.0: {}
globby@11.1.0:
@@ -4015,8 +3556,6 @@ snapshots:
dependencies:
duplexer: 0.1.2
- has-flag@3.0.0: {}
-
has-flag@4.0.0: {}
hasown@2.0.2:
@@ -4034,15 +3573,14 @@ snapshots:
parent-module: 1.0.1
resolve-from: 4.0.0
- importx@0.4.4:
+ importx@0.5.0:
dependencies:
bundle-require: 5.0.0(esbuild@0.23.1)
debug: 4.3.7(supports-color@8.1.1)
esbuild: 0.23.1
- jiti: 2.0.0-beta.3
- jiti-v1: jiti@1.21.6
+ jiti: 2.0.0
pathe: 1.1.2
- tsx: 4.19.0
+ tsx: 4.19.1
transitivePeerDependencies:
- supports-color
@@ -4100,26 +3638,18 @@ snapshots:
isexe@2.0.0: {}
- jiti@1.21.6: {}
-
- jiti@2.0.0-beta.3: {}
-
- js-tokens@4.0.0: {}
+ jiti@2.0.0: {}
js-yaml@4.1.0:
dependencies:
argparse: 2.0.1
- jsesc@2.5.2: {}
-
json-buffer@3.0.1: {}
json-schema-traverse@0.4.1: {}
json-stable-stringify-without-jsonify@1.0.1: {}
- json5@2.2.3: {}
-
keyv@4.5.4:
dependencies:
json-buffer: 3.0.1
@@ -4157,10 +3687,6 @@ snapshots:
longest-streak@2.0.4: {}
- lru-cache@5.1.1:
- dependencies:
- yallist: 3.1.1
-
magic-string@0.30.11:
dependencies:
'@jridgewell/sourcemap-codec': 1.5.0
@@ -4192,6 +3718,8 @@ snapshots:
mdn-data@2.0.30: {}
+ mdn-data@2.10.0: {}
+
merge2@1.4.1: {}
micromark-extension-frontmatter@0.2.2:
@@ -4266,11 +3794,9 @@ snapshots:
dependencies:
whatwg-url: 5.0.0
- node-releases@2.0.18: {}
-
normalize-path@3.0.0: {}
- ofetch@1.3.4:
+ ofetch@1.4.0:
dependencies:
destr: 2.0.3
node-fetch-native: 1.6.4
@@ -4531,10 +4057,6 @@ snapshots:
strip-json-comments@3.1.1: {}
- supports-color@5.5.0:
- dependencies:
- has-flag: 3.0.0
-
supports-color@7.2.0:
dependencies:
has-flag: 4.0.0
@@ -4586,8 +4108,6 @@ snapshots:
fdir: 6.3.0(picomatch@4.0.2)
picomatch: 4.0.2
- to-fast-properties@2.0.0: {}
-
to-regex-range@5.0.1:
dependencies:
is-number: 7.0.0
@@ -4604,7 +4124,7 @@ snapshots:
tslib@2.7.0: {}
- tsx@4.19.0:
+ tsx@4.19.1:
dependencies:
esbuild: 0.23.1
get-tsconfig: 4.8.0
@@ -4617,11 +4137,11 @@ snapshots:
type-fest@0.7.1: {}
- typescript-eslint@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2):
+ typescript-eslint@8.7.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2):
dependencies:
- '@typescript-eslint/eslint-plugin': 8.7.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2))(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
- '@typescript-eslint/parser': 8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
- '@typescript-eslint/utils': 8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
+ '@typescript-eslint/eslint-plugin': 8.7.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2))(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
+ '@typescript-eslint/parser': 8.7.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
+ '@typescript-eslint/utils': 8.7.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
optionalDependencies:
typescript: 5.6.2
transitivePeerDependencies:
@@ -4632,11 +4152,11 @@ snapshots:
ufo@1.5.4: {}
- unconfig@0.5.5:
+ unconfig@0.6.0:
dependencies:
'@antfu/utils': 0.7.10
defu: 6.1.4
- importx: 0.4.4
+ importx: 0.5.0
transitivePeerDependencies:
- supports-color
@@ -4654,28 +4174,25 @@ snapshots:
dependencies:
'@types/unist': 2.0.11
- unocss@0.62.3(postcss@8.4.45)(rollup@4.22.4)(vite@5.4.7(terser@5.33.0)):
- dependencies:
- '@unocss/astro': 0.62.3(rollup@4.22.4)(vite@5.4.7(terser@5.33.0))
- '@unocss/cli': 0.62.3(rollup@4.22.4)
- '@unocss/core': 0.62.3
- '@unocss/extractor-arbitrary-variants': 0.62.3
- '@unocss/postcss': 0.62.3(postcss@8.4.45)
- '@unocss/preset-attributify': 0.62.3
- '@unocss/preset-icons': 0.62.3
- '@unocss/preset-mini': 0.62.3
- '@unocss/preset-tagify': 0.62.3
- '@unocss/preset-typography': 0.62.3
- '@unocss/preset-uno': 0.62.3
- '@unocss/preset-web-fonts': 0.62.3
- '@unocss/preset-wind': 0.62.3
- '@unocss/reset': 0.62.3
- '@unocss/transformer-attributify-jsx': 0.62.3
- '@unocss/transformer-attributify-jsx-babel': 0.62.3
- '@unocss/transformer-compile-class': 0.62.3
- '@unocss/transformer-directives': 0.62.3
- '@unocss/transformer-variant-group': 0.62.3
- '@unocss/vite': 0.62.3(rollup@4.22.4)(vite@5.4.7(terser@5.33.0))
+ unocss@0.63.0(postcss@8.4.45)(rollup@4.22.4)(vite@5.4.7(terser@5.33.0)):
+ dependencies:
+ '@unocss/astro': 0.63.0(rollup@4.22.4)(vite@5.4.7(terser@5.33.0))
+ '@unocss/cli': 0.63.0(rollup@4.22.4)
+ '@unocss/core': 0.63.0
+ '@unocss/postcss': 0.63.0(postcss@8.4.45)
+ '@unocss/preset-attributify': 0.63.0
+ '@unocss/preset-icons': 0.63.0
+ '@unocss/preset-mini': 0.63.0
+ '@unocss/preset-tagify': 0.63.0
+ '@unocss/preset-typography': 0.63.0
+ '@unocss/preset-uno': 0.63.0
+ '@unocss/preset-web-fonts': 0.63.0
+ '@unocss/preset-wind': 0.63.0
+ '@unocss/transformer-attributify-jsx': 0.63.0
+ '@unocss/transformer-compile-class': 0.63.0
+ '@unocss/transformer-directives': 0.63.0
+ '@unocss/transformer-variant-group': 0.63.0
+ '@unocss/vite': 0.63.0(rollup@4.22.4)(vite@5.4.7(terser@5.33.0))
optionalDependencies:
vite: 5.4.7(terser@5.33.0)
transitivePeerDependencies:
@@ -4683,12 +4200,6 @@ snapshots:
- rollup
- supports-color
- update-browserslist-db@1.1.0(browserslist@4.23.3):
- dependencies:
- browserslist: 4.23.3
- escalade: 3.2.0
- picocolors: 1.1.0
-
uri-js@4.4.1:
dependencies:
punycode: 2.3.1
@@ -4743,8 +4254,6 @@ snapshots:
y18n@5.0.8: {}
- yallist@3.1.1: {}
-
yargs-parser@20.2.9: {}
yargs-parser@21.1.1: {}
From f930505de47491fa1b13862540f97397bc3ee8c9 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Mon, 30 Sep 2024 10:19:10 +0800
Subject: [PATCH 04/40] chore(deps): lock file maintenance (#1852)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
Cargo.lock | 314 ++++++++++++++++++---------------------
pnpm-lock.yaml | 391 ++++++++++++++++++++++++-------------------------
2 files changed, 336 insertions(+), 369 deletions(-)
diff --git a/Cargo.lock b/Cargo.lock
index 69d77592..0d4b1212 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -318,7 +318,7 @@ checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.77",
+ "syn 2.0.79",
]
[[package]]
@@ -489,7 +489,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.77",
+ "syn 2.0.79",
]
[[package]]
@@ -518,13 +518,13 @@ checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de"
[[package]]
name = "async-trait"
-version = "0.1.82"
+version = "0.1.83"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a27b8a3a6e1a44fa4c8baf1f653e4172e81486d4941f2237e20dc2d0cf4ddff1"
+checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.77",
+ "syn 2.0.79",
]
[[package]]
@@ -578,9 +578,9 @@ dependencies = [
[[package]]
name = "autocfg"
-version = "1.3.0"
+version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0"
+checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"
[[package]]
name = "av1-grain"
@@ -682,9 +682,9 @@ dependencies = [
[[package]]
name = "bitstream-io"
-version = "2.3.0"
+version = "2.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7c12d1856e42f0d817a835fe55853957c85c8c8a470114029143d3f12671446e"
+checksum = "b81e1519b0d82120d2fd469d5bfb2919a9361c48b02d82d04befc1cdd2002452"
[[package]]
name = "bitvec"
@@ -784,7 +784,7 @@ dependencies = [
"proc-macro-crate 2.0.2",
"proc-macro2",
"quote",
- "syn 2.0.77",
+ "syn 2.0.79",
"syn_derive",
]
@@ -874,9 +874,9 @@ checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495"
[[package]]
name = "bytes"
-version = "1.7.1"
+version = "1.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50"
+checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3"
dependencies = [
"serde",
]
@@ -950,9 +950,9 @@ dependencies = [
[[package]]
name = "cc"
-version = "1.1.19"
+version = "1.1.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2d74707dde2ba56f86ae90effb3b43ddd369504387e718014de010cec7959800"
+checksum = "9540e661f81799159abee814118cc139a2004b3a3aa3ea37724a1b66530b90e0"
dependencies = [
"jobserver",
"libc",
@@ -1060,18 +1060,18 @@ dependencies = [
[[package]]
name = "clap"
-version = "4.5.17"
+version = "4.5.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3e5a21b8495e732f1b3c364c9949b201ca7bae518c502c80256c96ad79eaf6ac"
+checksum = "b0956a43b323ac1afaffc053ed5c4b7c1f1800bacd1683c353aabbb752515dd3"
dependencies = [
"clap_builder",
]
[[package]]
name = "clap_builder"
-version = "4.5.17"
+version = "4.5.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8cf2dd12af7a047ad9d6da2b6b249759a22a7abc0f474c1dae1777afa4b21a73"
+checksum = "4d72166dd41634086d5803a47eb71ae740e61d84709c36f3c34110173db3961b"
dependencies = [
"anstream",
"anstyle",
@@ -1470,7 +1470,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331"
dependencies = [
"quote",
- "syn 2.0.77",
+ "syn 2.0.79",
]
[[package]]
@@ -1480,7 +1480,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "edb49164822f3ee45b17acd4a208cfc1251410cf0cad9a833234c9890774dd9f"
dependencies = [
"quote",
- "syn 2.0.77",
+ "syn 2.0.79",
]
[[package]]
@@ -1516,7 +1516,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.77",
+ "syn 2.0.79",
]
[[package]]
@@ -1540,7 +1540,7 @@ dependencies = [
"proc-macro2",
"quote",
"strsim",
- "syn 2.0.77",
+ "syn 2.0.79",
]
[[package]]
@@ -1551,7 +1551,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806"
dependencies = [
"darling_core",
"quote",
- "syn 2.0.77",
+ "syn 2.0.79",
]
[[package]]
@@ -1626,7 +1626,7 @@ checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.77",
+ "syn 2.0.79",
]
[[package]]
@@ -1639,7 +1639,7 @@ dependencies = [
"proc-macro2",
"quote",
"rustc_version",
- "syn 2.0.77",
+ "syn 2.0.79",
]
[[package]]
@@ -1730,7 +1730,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.77",
+ "syn 2.0.79",
]
[[package]]
@@ -1739,7 +1739,7 @@ version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412"
dependencies = [
- "libloading",
+ "libloading 0.8.5",
]
[[package]]
@@ -1762,7 +1762,7 @@ checksum = "f2b99bf03862d7f545ebc28ddd33a665b50865f4dfd84031a393823879bd4c54"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.77",
+ "syn 2.0.79",
]
[[package]]
@@ -1890,9 +1890,9 @@ dependencies = [
[[package]]
name = "embed-resource"
-version = "2.4.3"
+version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4edcacde9351c33139a41e3c97eb2334351a81a2791bebb0b243df837128f602"
+checksum = "f4e24052d7be71f0efb50c201557f6fe7d237cfd5a64fd5bcd7fd8fe32dbbffa"
dependencies = [
"cc",
"memchr",
@@ -1941,7 +1941,7 @@ checksum = "de0d48a183585823424a4ce1aa132d174a6a81bd540895822eb4c8373a8e49e8"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.77",
+ "syn 2.0.79",
]
[[package]]
@@ -2042,9 +2042,9 @@ checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6"
[[package]]
name = "fdeflate"
-version = "0.3.4"
+version = "0.3.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4f9bfee30e4dedf0ab8b422f03af778d9612b63f502710fc500a334ebe2de645"
+checksum = "d8090f921a24b04994d9929e204f50b498a33ea6ba559ffaa05e04f7ee7fb5ab"
dependencies = [
"simd-adler32",
]
@@ -2108,9 +2108,9 @@ dependencies = [
[[package]]
name = "flate2"
-version = "1.0.33"
+version = "1.0.34"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "324a1be68054ef05ad64b861cc9eaf1d623d2d8cb25b4bf2cb9cdd902b4bf253"
+checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0"
dependencies = [
"crc32fast",
"miniz_oxide 0.8.0",
@@ -2169,7 +2169,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.77",
+ "syn 2.0.79",
]
[[package]]
@@ -2298,7 +2298,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.77",
+ "syn 2.0.79",
]
[[package]]
@@ -2586,7 +2586,7 @@ dependencies = [
"proc-macro-error",
"proc-macro2",
"quote",
- "syn 2.0.77",
+ "syn 2.0.79",
]
[[package]]
@@ -2693,7 +2693,7 @@ dependencies = [
"proc-macro-error",
"proc-macro2",
"quote",
- "syn 2.0.77",
+ "syn 2.0.79",
]
[[package]]
@@ -2934,9 +2934,9 @@ dependencies = [
[[package]]
name = "hyper-util"
-version = "0.1.8"
+version = "0.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "da62f120a8a37763efb0cf8fdf264b884c7b8b9ac8660b900c8661030c00e6ba"
+checksum = "41296eb09f183ac68eec06e03cdbea2e759633d4067b2f6552fc2e009bcad08b"
dependencies = [
"bytes",
"futures-channel",
@@ -2947,16 +2947,15 @@ dependencies = [
"pin-project-lite",
"socket2",
"tokio",
- "tower",
"tower-service",
"tracing",
]
[[package]]
name = "iana-time-zone"
-version = "0.1.60"
+version = "0.1.61"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141"
+checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220"
dependencies = [
"android_system_properties",
"core-foundation-sys",
@@ -3128,7 +3127,7 @@ checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.77",
+ "syn 2.0.79",
]
[[package]]
@@ -3346,9 +3345,9 @@ dependencies = [
[[package]]
name = "k256"
-version = "0.13.3"
+version = "0.13.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "956ff9b67e26e1a6a866cb758f12c6f8746208489e3e4a4b5580802f2f0a587b"
+checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b"
dependencies = [
"cfg-if",
"ecdsa",
@@ -3436,15 +3435,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6e9ec52138abedcc58dc17a7c6c0c00a2bdb4f3427c7f63fa97fd0d859155caf"
dependencies = [
"gtk-sys",
- "libloading",
+ "libloading 0.7.4",
"once_cell",
]
[[package]]
name = "libc"
-version = "0.2.158"
+version = "0.2.159"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439"
+checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5"
[[package]]
name = "libflate"
@@ -3491,6 +3490,16 @@ dependencies = [
"winapi",
]
+[[package]]
+name = "libloading"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4"
+dependencies = [
+ "cfg-if",
+ "windows-targets 0.52.6",
+]
+
[[package]]
name = "libm"
version = "0.2.8"
@@ -3510,9 +3519,9 @@ dependencies = [
[[package]]
name = "libsodium-sys-stable"
-version = "1.21.1"
+version = "1.21.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5fd1882b85f01cdd4021c0664fd897710a04c5d01b593a5a70e1b0baa999c1f8"
+checksum = "42631d334de875c636a1aae7adb515653ac2e771e5a2ce74b1053f5a4412df3a"
dependencies = [
"cc",
"libc",
@@ -3637,7 +3646,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8ea1f30cedd69f0a2954655f7188c6a834246d2bcf1e315e2ac40c4b24dc9519"
dependencies = [
"cfg-if",
- "rayon",
]
[[package]]
@@ -3709,7 +3717,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08"
dependencies = [
"adler",
- "simd-adler32",
]
[[package]]
@@ -3719,6 +3726,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1"
dependencies = [
"adler2",
+ "simd-adler32",
]
[[package]]
@@ -3976,7 +3984,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.77",
+ "syn 2.0.79",
]
[[package]]
@@ -4038,7 +4046,7 @@ dependencies = [
"proc-macro-crate 2.0.2",
"proc-macro2",
"quote",
- "syn 2.0.77",
+ "syn 2.0.79",
]
[[package]]
@@ -4190,9 +4198,12 @@ dependencies = [
[[package]]
name = "once_cell"
-version = "1.20.0"
+version = "1.20.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "33ea5043e58958ee56f3e15a90aee535795cd7dfd319846288d93c5b57d85cbe"
+checksum = "82881c4be219ab5faaf2ad5e5e5ecdff8c66bd7402ca3160975c93b24961afd1"
+dependencies = [
+ "portable-atomic",
+]
[[package]]
name = "opaque-debug"
@@ -4234,7 +4245,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.77",
+ "syn 2.0.79",
]
[[package]]
@@ -4507,7 +4518,7 @@ dependencies = [
"phf_shared 0.11.2",
"proc-macro2",
"quote",
- "syn 2.0.77",
+ "syn 2.0.79",
]
[[package]]
@@ -4537,26 +4548,6 @@ dependencies = [
"siphasher",
]
-[[package]]
-name = "pin-project"
-version = "1.1.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3"
-dependencies = [
- "pin-project-internal",
-]
-
-[[package]]
-name = "pin-project-internal"
-version = "1.1.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.77",
-]
-
[[package]]
name = "pin-project-lite"
version = "0.2.14"
@@ -4603,9 +4594,9 @@ dependencies = [
[[package]]
name = "pkg-config"
-version = "0.3.30"
+version = "0.3.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec"
+checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2"
[[package]]
name = "plist"
@@ -4622,15 +4613,15 @@ dependencies = [
[[package]]
name = "png"
-version = "0.17.13"
+version = "0.17.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "06e4b0d3d1312775e782c86c91a111aa1f910cbb65e1337f9975b5f9a554b5e1"
+checksum = "52f9d46a34a05a6a57566bc2bfae066ef07585a6e3fa30fbbdff5936380623f0"
dependencies = [
"bitflags 1.3.2",
"crc32fast",
"fdeflate",
"flate2",
- "miniz_oxide 0.7.4",
+ "miniz_oxide 0.8.0",
]
[[package]]
@@ -4671,6 +4662,12 @@ dependencies = [
"universal-hash",
]
+[[package]]
+name = "portable-atomic"
+version = "1.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cc9c68a3f6da06753e9335d63e27f6b9754dd1920d941135b7ea8224f141adb2"
+
[[package]]
name = "powerfmt"
version = "0.2.0"
@@ -4767,7 +4764,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8021cf59c8ec9c432cfc2526ac6b8aa508ecaf29cd415f271b8406c1b851c3fd"
dependencies = [
"quote",
- "syn 2.0.77",
+ "syn 2.0.79",
]
[[package]]
@@ -4847,9 +4844,9 @@ dependencies = [
[[package]]
name = "quick-xml"
-version = "0.36.1"
+version = "0.36.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "96a05e2e8efddfa51a84ca47cec303fac86c8541b686d37cac5efc0e094417bc"
+checksum = "f7649a7b4df05aed9ea7ec6f628c67c9953a43869b8bc50929569b2999d443fe"
dependencies = [
"memchr",
]
@@ -5035,17 +5032,15 @@ dependencies = [
[[package]]
name = "ravif"
-version = "0.11.6"
+version = "0.11.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "85be49d628515bb99a01c44200009f0a4167c252f036445b975b35daf952258c"
+checksum = "a8f0bfd976333248de2078d350bfdf182ff96e168a24d23d2436cef320dd4bdd"
dependencies = [
"avif-serialize",
- "bitstream-io",
"imgref",
"loop9",
"quick-error 2.0.1",
"rav1e",
- "rayon",
"rgb",
]
@@ -5088,9 +5083,9 @@ dependencies = [
[[package]]
name = "redox_syscall"
-version = "0.5.4"
+version = "0.5.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0884ad60e090bf1345b93da0a5de8923c93884cd03f40dfcfddd3b4bee661853"
+checksum = "355ae415ccd3a04315d3f8246e86d67689ea74d88d915576e1589a351062a13b"
dependencies = [
"bitflags 2.6.0",
]
@@ -5108,9 +5103,9 @@ dependencies = [
[[package]]
name = "regex"
-version = "1.10.6"
+version = "1.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619"
+checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8"
dependencies = [
"aho-corasick",
"memchr",
@@ -5120,9 +5115,9 @@ dependencies = [
[[package]]
name = "regex-automata"
-version = "0.4.7"
+version = "0.4.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df"
+checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3"
dependencies = [
"aho-corasick",
"memchr",
@@ -5131,9 +5126,9 @@ dependencies = [
[[package]]
name = "regex-syntax"
-version = "0.8.4"
+version = "0.8.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b"
+checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
[[package]]
name = "rend"
@@ -5449,9 +5444,9 @@ dependencies = [
[[package]]
name = "rustls-pki-types"
-version = "1.8.0"
+version = "1.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fc0a2ce646f8655401bb81e7927b812614bd5d91dbc968696be50603510fcaf0"
+checksum = "0e696e35370c65c9c541198af4543ccd580cf17fc25d8e05c5a242b202488c55"
[[package]]
name = "rustls-webpki"
@@ -5533,7 +5528,7 @@ dependencies = [
"proc-macro2",
"quote",
"serde_derive_internals",
- "syn 2.0.77",
+ "syn 2.0.79",
]
[[package]]
@@ -5594,9 +5589,9 @@ dependencies = [
[[package]]
name = "security-framework-sys"
-version = "2.11.1"
+version = "2.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf"
+checksum = "ea4a292869320c0272d7bc55a5a6aafaff59b4f63404a003887b679a2e05b4b6"
dependencies = [
"core-foundation-sys",
"libc",
@@ -5659,7 +5654,7 @@ checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.77",
+ "syn 2.0.79",
]
[[package]]
@@ -5670,7 +5665,7 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.77",
+ "syn 2.0.79",
]
[[package]]
@@ -5693,14 +5688,14 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.77",
+ "syn 2.0.79",
]
[[package]]
name = "serde_spanned"
-version = "0.6.7"
+version = "0.6.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d"
+checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1"
dependencies = [
"serde",
]
@@ -5744,7 +5739,7 @@ dependencies = [
"darling",
"proc-macro2",
"quote",
- "syn 2.0.77",
+ "syn 2.0.79",
]
[[package]]
@@ -5853,9 +5848,9 @@ dependencies = [
[[package]]
name = "simdutf8"
-version = "0.1.4"
+version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a"
+checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e"
[[package]]
name = "similar"
@@ -5977,7 +5972,7 @@ dependencies = [
"Inflector",
"proc-macro2",
"quote",
- "syn 2.0.77",
+ "syn 2.0.79",
]
[[package]]
@@ -6075,7 +6070,7 @@ dependencies = [
"quote",
"sqlx-core",
"sqlx-macros-core",
- "syn 2.0.77",
+ "syn 2.0.79",
]
[[package]]
@@ -6098,7 +6093,7 @@ dependencies = [
"sqlx-mysql",
"sqlx-postgres",
"sqlx-sqlite",
- "syn 2.0.77",
+ "syn 2.0.79",
"tempfile",
"tokio",
"url",
@@ -6353,9 +6348,9 @@ dependencies = [
[[package]]
name = "syn"
-version = "2.0.77"
+version = "2.0.79"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed"
+checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590"
dependencies = [
"proc-macro2",
"quote",
@@ -6371,7 +6366,7 @@ dependencies = [
"proc-macro-error",
"proc-macro2",
"quote",
- "syn 2.0.77",
+ "syn 2.0.79",
]
[[package]]
@@ -6473,7 +6468,7 @@ checksum = "f4e16beb8b2ac17db28eab8bca40e62dbfbb34c0fcdc6d9826b11b7b5d047dfd"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.77",
+ "syn 2.0.79",
]
[[package]]
@@ -6484,9 +6479,9 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369"
[[package]]
name = "tar"
-version = "0.4.41"
+version = "0.4.42"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cb797dad5fb5b76fcf519e702f4a589483b5ef06567f160c392832c1f5e44909"
+checksum = "4ff6c40d3aedb5e06b57c6f669ad17ab063dd1e63d977c6a88e7f4dfa4f04020"
dependencies = [
"filetime",
"libc",
@@ -6595,7 +6590,7 @@ dependencies = [
"serde",
"serde_json",
"sha2",
- "syn 2.0.77",
+ "syn 2.0.79",
"tauri-utils",
"thiserror",
"time",
@@ -6613,7 +6608,7 @@ dependencies = [
"heck 0.5.0",
"proc-macro2",
"quote",
- "syn 2.0.77",
+ "syn 2.0.79",
"tauri-codegen",
"tauri-utils",
]
@@ -7201,9 +7196,9 @@ dependencies = [
[[package]]
name = "tempfile"
-version = "3.12.0"
+version = "3.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64"
+checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b"
dependencies = [
"cfg-if",
"fastrand",
@@ -7240,22 +7235,22 @@ checksum = "8eaa81235c7058867fa8c0e7314f33dcce9c215f535d1913822a2b3f5e289f3c"
[[package]]
name = "thiserror"
-version = "1.0.63"
+version = "1.0.64"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724"
+checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84"
dependencies = [
"thiserror-impl",
]
[[package]]
name = "thiserror-impl"
-version = "1.0.63"
+version = "1.0.64"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261"
+checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.77",
+ "syn 2.0.79",
]
[[package]]
@@ -7365,7 +7360,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.77",
+ "syn 2.0.79",
]
[[package]]
@@ -7503,27 +7498,6 @@ dependencies = [
"winnow",
]
-[[package]]
-name = "tower"
-version = "0.4.13"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c"
-dependencies = [
- "futures-core",
- "futures-util",
- "pin-project",
- "pin-project-lite",
- "tokio",
- "tower-layer",
- "tower-service",
-]
-
-[[package]]
-name = "tower-layer"
-version = "0.3.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e"
-
[[package]]
name = "tower-service"
version = "0.3.3"
@@ -7550,7 +7524,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.77",
+ "syn 2.0.79",
]
[[package]]
@@ -7703,9 +7677,9 @@ checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe"
[[package]]
name = "unicode-normalization"
-version = "0.1.23"
+version = "0.1.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5"
+checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956"
dependencies = [
"tinyvec",
]
@@ -7944,7 +7918,7 @@ dependencies = [
"once_cell",
"proc-macro2",
"quote",
- "syn 2.0.77",
+ "syn 2.0.79",
"wasm-bindgen-shared",
]
@@ -7978,7 +7952,7 @@ checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.77",
+ "syn 2.0.79",
"wasm-bindgen-backend",
"wasm-bindgen-shared",
]
@@ -7991,9 +7965,9 @@ checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484"
[[package]]
name = "wasm-streams"
-version = "0.4.0"
+version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b65dc4c90b63b118468cf747d8bf3566c1913ef60be765b5730ead9e0a3ba129"
+checksum = "4e072d4e72f700fb3443d8fe94a39315df013eef1104903cdb0a2abd322bbecd"
dependencies = [
"futures-util",
"js-sys",
@@ -8047,7 +8021,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "597f2001b2e5fc1121e3d5b9791d3e78f05ba6bfa4641053846248e3a13661c3"
dependencies = [
"proc-macro2",
- "quick-xml 0.36.1",
+ "quick-xml 0.36.2",
"quote",
]
@@ -8118,9 +8092,9 @@ dependencies = [
[[package]]
name = "webpki-roots"
-version = "0.26.5"
+version = "0.26.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0bd24728e5af82c6c4ec1b66ac4844bdf8156257fccda846ec58b42cd0cdbe6a"
+checksum = "841c67bff177718f1d4dfefde8d8f0e78f9b6589319ba88312f567fc5841a958"
dependencies = [
"rustls-pki-types",
]
@@ -8161,7 +8135,7 @@ checksum = "1d228f15bba3b9d56dde8bddbee66fa24545bd17b48d5128ccf4a8742b18e431"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.77",
+ "syn 2.0.79",
]
[[package]]
@@ -8321,7 +8295,7 @@ checksum = "f6fc35f58ecd95a9b71c4f2329b911016e6bec66b3f2e6a4aad86bd2e99e2f9b"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.77",
+ "syn 2.0.79",
]
[[package]]
@@ -8332,7 +8306,7 @@ checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.77",
+ "syn 2.0.79",
]
[[package]]
@@ -8343,7 +8317,7 @@ checksum = "08990546bf4edef8f431fa6326e032865f27138718c587dc21bc0265bbcb57cc"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.77",
+ "syn 2.0.79",
]
[[package]]
@@ -8354,7 +8328,7 @@ checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.77",
+ "syn 2.0.79",
]
[[package]]
@@ -8899,7 +8873,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.77",
+ "syn 2.0.79",
]
[[package]]
@@ -8920,7 +8894,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.77",
+ "syn 2.0.79",
]
[[package]]
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 71669ddc..7480d338 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -117,28 +117,28 @@ importers:
devDependencies:
'@iconify-json/codicon':
specifier: ^1.1.37
- version: 1.2.0
+ version: 1.2.2
'@iconify-json/ph':
specifier: ^1.1.8
version: 1.2.0
'@sveltejs/vite-plugin-svelte':
specifier: ^3.0.1
- version: 3.1.2(svelte@4.2.19)(vite@5.4.7(terser@5.33.0))
+ version: 3.1.2(svelte@4.2.19)(vite@5.4.8(terser@5.34.1))
'@tauri-apps/cli':
specifier: 2.0.0-rc.17
version: 2.0.0-rc.17
'@unocss/extractor-svelte':
specifier: ^0.63.0
- version: 0.63.0
+ version: 0.63.1
svelte:
specifier: ^4.2.19
version: 4.2.19
unocss:
specifier: ^0.63.0
- version: 0.63.0(postcss@8.4.45)(rollup@4.22.4)(vite@5.4.7(terser@5.33.0))
+ version: 0.63.1(postcss@8.4.47)(rollup@4.22.4)(vite@5.4.8(terser@5.34.1))
vite:
specifier: ^5.4.7
- version: 5.4.7(terser@5.33.0)
+ version: 5.4.8(terser@5.34.1)
plugins/autostart:
dependencies:
@@ -193,7 +193,7 @@ importers:
version: 5.6.2
vite:
specifier: ^5.4.7
- version: 5.4.7(terser@5.33.0)
+ version: 5.4.8(terser@5.34.1)
plugins/dialog:
dependencies:
@@ -301,7 +301,7 @@ importers:
version: 5.6.2
vite:
specifier: ^5.0.12
- version: 5.4.7(terser@5.33.0)
+ version: 5.4.8(terser@5.34.1)
plugins/stronghold:
dependencies:
@@ -341,7 +341,7 @@ importers:
version: 5.6.2
vite:
specifier: ^5.4.7
- version: 5.4.7(terser@5.33.0)
+ version: 5.4.8(terser@5.34.1)
plugins/window-state:
dependencies:
@@ -745,8 +745,8 @@ packages:
resolution: {integrity: sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==}
engines: {node: '>=18.18'}
- '@iconify-json/codicon@1.2.0':
- resolution: {integrity: sha512-KkqHpVq1guUqKgnhsG8xK+l3rX6sBc+CKB6icQKfabRpqCEpJWmG83IrZkCcD0A7CTghRRSwtrMPqpEvY8EwkA==}
+ '@iconify-json/codicon@1.2.2':
+ resolution: {integrity: sha512-ZO63Qy0e+/VBESGHE3CZEE2EFpzlBOTPSiMtIDQc1qIGvh6HpYVRNpEGuawF91oEws7PLuUifCIZL5NpYpKloA==}
'@iconify-json/ph@1.2.0':
resolution: {integrity: sha512-013eLpgTmX1lACOuDnkuhC7gRHyYj9w/j8SyDmlyUYvsKQrwdRsv1otcXtwH3DevuDAzSkreeeRsCeez+gTyVA==}
@@ -790,8 +790,8 @@ packages:
resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
engines: {node: '>= 8'}
- '@polka/url@1.0.0-next.25':
- resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==}
+ '@polka/url@1.0.0-next.28':
+ resolution: {integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==}
'@rollup/plugin-node-resolve@15.3.0':
resolution: {integrity: sha512-9eO5McEICxMzJpDW9OnMYSv4Sta3hmt7VtBFz5zR9273suNOydOyq/FrGeGy+KsTRFm8w0SLVhzig2ILFT63Ag==}
@@ -1077,86 +1077,86 @@ packages:
resolution: {integrity: sha512-b1tx0orFCCh/THWPQa2ZwWzvOeyzzp36vkJYOpVg0u8UVOIsfVrnuC9FqAw9gRKn+rG2VmWQ/zDJZzkxUnj/XQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@unocss/astro@0.63.0':
- resolution: {integrity: sha512-ToF9X1uvm8CdxND+oVHrRPQyBsE5FZI1vz9lLVvqwzhOi9rfjGeoKeN7rV0njM2ohC+gbbPRDU9kKmZMnHLSzg==}
+ '@unocss/astro@0.63.1':
+ resolution: {integrity: sha512-TJISaUIMNPQH0MY0R7f14DO3HF4Z5H3seZazojhbLCOA7gDFV0WpSP84sdx9PsP1fpyYuNsxW9xrwA13bDaJYw==}
peerDependencies:
vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0
peerDependenciesMeta:
vite:
optional: true
- '@unocss/cli@0.63.0':
- resolution: {integrity: sha512-nJuHLDxgxSYhPQ0OY5BIZ0XQJyphapAFHYNh1ahTfJRa6IBIcCZb/JZFHjczCCLSSp1PAO4SJBNEPjJxZWr3rQ==}
+ '@unocss/cli@0.63.1':
+ resolution: {integrity: sha512-DH9JZBL/CecAr7HWXinUSXEnDIVcOkHn4GYuaL4Zn33ZIV9ni20/lHhxJwbnEgv1eCIa3XTAMLCOU9uhpdTKCQ==}
engines: {node: '>=14'}
hasBin: true
- '@unocss/config@0.63.0':
- resolution: {integrity: sha512-rlhki3GA6pNX05sjDGJO4vTDonOfDngL9CJWEbn9hELgMZQ3+OAO4mePMA6OsYfMxYz5qpfDKwofkuV4CGNDKQ==}
+ '@unocss/config@0.63.1':
+ resolution: {integrity: sha512-9n1VDQ3xMpRIdzqvyUhWHA2ur5CWH0Oezw6Rbg/75bk86pD3yMrD8JkP4wK9wgq1pNNEpygmE7jFbDe29r8vVw==}
engines: {node: '>=14'}
- '@unocss/core@0.63.0':
- resolution: {integrity: sha512-ZGvmQ3CgGlGJy8TDYUCLRzgv+uyUj2nv0a5MsVvLAD1BKHN96YSt/zRdvRprKUkSzP0yLw44k3kv59md8Bn8xw==}
+ '@unocss/core@0.63.1':
+ resolution: {integrity: sha512-scg53c6vw8cRsX4DbUO+MlTXicA9GWztm6PW0lsisJxXrdbQQCd+J+PIhrxLUExxeNqxTKsL3Msy9bwJU5uUsQ==}
- '@unocss/extractor-arbitrary-variants@0.63.0':
- resolution: {integrity: sha512-zHSpKnXU+So15VtJV8CZE+VV6zxeard+fi3bfepCAZFI/8vxU7aTrEPeXniF06eIQeJZTGVn/EaOw4AKiy1ZRA==}
+ '@unocss/extractor-arbitrary-variants@0.63.1':
+ resolution: {integrity: sha512-yqHDUgFCR4R2HMuD2k4dVkkdT2uOa/gUDIY6xoseOx1r98Fxlyvdr0UnLOaWsSSzpSGm7SS7XtafGa24IgJRUQ==}
- '@unocss/extractor-svelte@0.63.0':
- resolution: {integrity: sha512-1cm/SI01uNaZsXJTDsB8pSTg/Rlpg7PKtG8/BSbHFvR7yiwQAstKaCGCPraHy/7wUgMMFMsP4Pj9yy+9HyU/Jw==}
+ '@unocss/extractor-svelte@0.63.1':
+ resolution: {integrity: sha512-kqf+3ghZIc/hBT3W6nrvWEBMbAleJIGI4A1GW+K+dovP68T4gFxp7D077VtuC69dZp1foV4HM17QHmphZq1Oiw==}
- '@unocss/inspector@0.63.0':
- resolution: {integrity: sha512-vcAHezenaP3TxiX7GBNyLFRNrhw8oZlz8xNDiuSR3QI6Z2gCrCxdEwblFdjJKhBcNWK79oXm2QCHzD3/Fb7xvg==}
+ '@unocss/inspector@0.63.1':
+ resolution: {integrity: sha512-RO5DWZcnQ964ppaWskECSsx2b6I+dAH6A4YQIZEavG0ykHWwa//TquaY2HJH6OJoI7hKEnrFIFtlwzV5nWoYMw==}
- '@unocss/postcss@0.63.0':
- resolution: {integrity: sha512-p0JvVJjOxi9O1dRfto6SOqFqV+aq0knqiTlyOmmINiwkcvXWYmFGXKTw6DTR8ACYF8MwpnACt81DF7yNqA5L3g==}
+ '@unocss/postcss@0.63.1':
+ resolution: {integrity: sha512-ZHBy2swGg2zifQ6YEfctagIi+jZrLW/uBHqIkRIQYZyBQjw1GSqx+OSrq81LYIREBSQG7G90Nn1CXu8muttgzg==}
engines: {node: '>=14'}
peerDependencies:
postcss: ^8.4.21
- '@unocss/preset-attributify@0.63.0':
- resolution: {integrity: sha512-9t9rlo7JIhd+SbjupYTwKmyPgqc9uFa6zuaq+ol5HdTdbnDvj9dUAJSEvQEzB0NebjIn+n94WpHhRTX8M6O2Lw==}
+ '@unocss/preset-attributify@0.63.1':
+ resolution: {integrity: sha512-K6IaQ6cUQNWDp6JmAJ8dh17c/iPc9Ssgz6C9qayWwIJCZA3023EXfoXI0a0csnJyRHJALIw2sSZAvlmRudln1A==}
- '@unocss/preset-icons@0.63.0':
- resolution: {integrity: sha512-MYxhrmyf+cneKp1mB35OCewlYSRuFhEb5cvNN0q/doAM18/beELPDTVLGiVzspin8de3fgiqy9XIQdEVgtujMQ==}
+ '@unocss/preset-icons@0.63.1':
+ resolution: {integrity: sha512-ucCLrlQ6DsFzqSu/Cmqo3q/F/ybV+2P/TQflHS9Oo8wtOETxTT0aPEEEd/sj1SPTU9uUbLEeS6TaRD6MrwLcrw==}
- '@unocss/preset-mini@0.63.0':
- resolution: {integrity: sha512-lpGtqtXqr6yVLeWiQmY1lb7sJBcb2O3CuFduKlx7HZKZOJpnRtZoZeNRo1XYcH6BRPBxPgru/d/m43AGMnDqew==}
+ '@unocss/preset-mini@0.63.1':
+ resolution: {integrity: sha512-8NW3hK5fp+glBI2v1/3utp+Gv0yXoVTX66531BDDXxivsCJBNRTh40TP8hXSbtDne615UGrykIjyadsUHCRK5Q==}
- '@unocss/preset-tagify@0.63.0':
- resolution: {integrity: sha512-RrXYruhvSqB4QaDTCHiRQUSfP2b1ie1eEhZ0HV9/WqCtgQjan1w9uV8bbA1TPXHLdMXWyt6tAoWUZPRdszBXZg==}
+ '@unocss/preset-tagify@0.63.1':
+ resolution: {integrity: sha512-GlhWsdD3pYvtMePVNWMOjkQGSp4XKJcfS65spUOZv03h6xrKuCCnJNsawYqbnpTzUOAL29pG/X8Quse00weRjQ==}
- '@unocss/preset-typography@0.63.0':
- resolution: {integrity: sha512-4uhTRa2D6yB2sBjV3lksP/rpc2kq0p6v+yvpAvor73PADQCpLLMW+HPpS3YZe52nagHBf/LpY8gVNoGTIy/8FA==}
+ '@unocss/preset-typography@0.63.1':
+ resolution: {integrity: sha512-NfC0qQmCeA68F0JeVMKNpCqZhh0X3+1ouEjlRrFGzmIZt5lxWuTFgGroyp5rXv++iubm3CMoW1bMnp8CsyUUYw==}
- '@unocss/preset-uno@0.63.0':
- resolution: {integrity: sha512-rXBz83FQG/FynPMhYQ5xlQ5ai9clYqmlubvDQR/UvEtuQWL0wIK2NiBFBGosn4Q0ukT0GrwOIicV8aizHu2tAg==}
+ '@unocss/preset-uno@0.63.1':
+ resolution: {integrity: sha512-L7ptI/kI48+miTv5y7vNE1igw8/ThkWPFICMuhQksQS4QuuysuzO/IjfD5QwPy8Awr9HgSYZLqf5Jaax63HJ5w==}
- '@unocss/preset-web-fonts@0.63.0':
- resolution: {integrity: sha512-0ybW2EG6fAtK0XrB82wNK7ETiE12+ctfRxqWnKgLxpcYHIYVS0m8bRWgBWpJ+1l9I0fWilyB622rg6qIBHHU3g==}
+ '@unocss/preset-web-fonts@0.63.1':
+ resolution: {integrity: sha512-55DkFZ2/hLYp5cDvxQWElnPgnKj9AjoC/hTgC6JlKjzaafaqKh5Bt45rDKOPiXe2cPMN7A9gURgBgFyARX4nBw==}
- '@unocss/preset-wind@0.63.0':
- resolution: {integrity: sha512-TVgFdxiIm4BfGLBE/4XqpeD2a+yMlrgTRY12WMEjj8DduNbuyuE+mnvaN7iY5+/DMIsng+eKyM3gamJew2r30w==}
+ '@unocss/preset-wind@0.63.1':
+ resolution: {integrity: sha512-L/Pyz55NC55K2+zJX9b3cC23tMZzh/a2jUUfoiJAHudsSPjAvP/PJ31Nc+27FFMbqZXhGQ50CBq8geq51O4PKQ==}
- '@unocss/reset@0.63.0':
- resolution: {integrity: sha512-QAAXxITLSWaNNK2+Mn1m2IeaCqrS3U9dszId2GVaiTHVe30M7vpMZQ6NrJI7xcD7DZ0kuh48BoZl5ttuiJkeww==}
+ '@unocss/reset@0.63.1':
+ resolution: {integrity: sha512-gjSF0LeWwkNCYZ4Z/AnQXGCIOPUGL5Ll1IIDfwnKZeFGCj9QmcV1hki4xf/7N8mNHhfP0nYdJpdAfiznhKdkwQ==}
- '@unocss/rule-utils@0.63.0':
- resolution: {integrity: sha512-OKA2LzSPUXsYtfzx2G8Mw7/IhIOYxJNprBg7QwRF0e3eVmo87Ae1G5m9cghBLh7h7Ur1SgG5PCNhI0dZg6f7XA==}
+ '@unocss/rule-utils@0.63.1':
+ resolution: {integrity: sha512-z7WQ8lKq7p6sS/6Yl1pStcA2WyxxD7H1i86iXa2orWayW8KtrIJbdCXFYEsj3sOkMKLqpG5w65P+103dO2jUhQ==}
engines: {node: '>=14'}
- '@unocss/transformer-attributify-jsx@0.63.0':
- resolution: {integrity: sha512-+U+udpaRoUn5gXlejmT6h5l6ZcPr/8QCj4edCURyTOUZYrOd8siZzjDRisXP5/fskm4UqEgdlx97Qar97O6CYQ==}
+ '@unocss/transformer-attributify-jsx@0.63.1':
+ resolution: {integrity: sha512-c92pv9x6AZ3Zfw5ledP6rzTudWUvVY5HrVSaG3GxO2ofyCFEdHyJ1qLTK7omwnTJZ3rMJ3QplIrPJka1Ftasuw==}
- '@unocss/transformer-compile-class@0.63.0':
- resolution: {integrity: sha512-bCapGembNCy9xY8CJxCretx/lj7mTyhnoO79CkTxckHlnUGEgNj9gbvtLkXCPJAfRLmBWMtgeMdUivG5+auq1A==}
+ '@unocss/transformer-compile-class@0.63.1':
+ resolution: {integrity: sha512-OV8nQJf+OEIoqHSsFQPjP/ocOxQc2nnMirB+J7D5e32SqU4Zg4GPWag3E+Pcb4InwZ/OUTPPdecKSPNHgT3CTQ==}
- '@unocss/transformer-directives@0.63.0':
- resolution: {integrity: sha512-+qWfNKrOSuuaAfM5RSyqeCNy2s3nIct5knwlkzg/cYTT9UiKyIALeJY/k+plVM99WlGDNh/k6otNkNv5N/Z6wg==}
+ '@unocss/transformer-directives@0.63.1':
+ resolution: {integrity: sha512-mWVcQqVXj5OtUzfwc9B2/CRPYVHqkoj+AFfhU8RZ6e1nPgDKtR9JLt0jypTvv/PMo56vPJUTbpBBvXU+vvQwQA==}
- '@unocss/transformer-variant-group@0.63.0':
- resolution: {integrity: sha512-JNTqxogGDd+XpbP3oRUulNEaY1H+42+4KXQxlfxllikgqe28QHorhBbM/4ObCw085tKhrM+oDH391KF+VUNkhQ==}
+ '@unocss/transformer-variant-group@0.63.1':
+ resolution: {integrity: sha512-Awk9FDpvZM8m9YY46MThYYZ81fY6HVs4pOX22xcbw06J2l8z3WyG5iHIzx0f8vCTNwTekDuxD6vV3UlQKoI+0w==}
- '@unocss/vite@0.63.0':
- resolution: {integrity: sha512-7UH36o7UEwMbrifuvTj6wOPJZ3DNK21HO+ACOlFaM9HGVmlEUEuzC5fRVid0Q/zRlo0URaI/82TkvEh3sUU8Zg==}
+ '@unocss/vite@0.63.1':
+ resolution: {integrity: sha512-MUi4gtGYPahDeabXfxq25J9YRUksJPLB+xsU2zn7Rb4ai0wBdi6SsZsjjeHhx7RZEXjse9UG3FGZP6Xhe6erUQ==}
peerDependencies:
vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0
@@ -1201,8 +1201,9 @@ packages:
argparse@2.0.1:
resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
- aria-query@5.3.0:
- resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==}
+ aria-query@5.3.2:
+ resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==}
+ engines: {node: '>= 0.4'}
array-union@2.1.0:
resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
@@ -1362,10 +1363,6 @@ packages:
defu@6.1.4:
resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==}
- dequal@2.0.3:
- resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
- engines: {node: '>=6'}
-
destr@2.0.3:
resolution: {integrity: sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==}
@@ -1414,16 +1411,16 @@ packages:
resolution: {integrity: sha512-XjVGBhtDZJfyuhIxnQ/WMm385RbX3DBu7H1J7HNNhmB2tnGxMeqVSnYv79oAj992ayvIBZghsymwkYFS6cGH4Q==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- eslint-scope@8.0.2:
- resolution: {integrity: sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==}
+ eslint-scope@8.1.0:
+ resolution: {integrity: sha512-14dSvlhaVhKKsa9Fx1l8A17s7ah7Ef7wCakJ10LYk6+GYmP9yDti2oq2SEwcyndt6knfcZyhyxwY3i9yL78EQw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
eslint-visitor-keys@3.4.3:
resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- eslint-visitor-keys@4.0.0:
- resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==}
+ eslint-visitor-keys@4.1.0:
+ resolution: {integrity: sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
eslint@9.11.1:
@@ -1436,8 +1433,8 @@ packages:
jiti:
optional: true
- espree@10.1.0:
- resolution: {integrity: sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==}
+ espree@10.2.0:
+ resolution: {integrity: sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
esquery@1.6.0:
@@ -1546,8 +1543,8 @@ packages:
resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
engines: {node: 6.* || 8.* || >= 10.*}
- get-tsconfig@4.8.0:
- resolution: {integrity: sha512-Pgba6TExTZ0FJAn1qkJAjIeKoDJ3CsI2ChuLohJnZl/tTU8MVrq3b+2t5UOPfRa4RMsorClBjJALkJUMjG1PAw==}
+ get-tsconfig@4.8.1:
+ resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==}
glob-parent@5.1.2:
resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
@@ -1899,8 +1896,8 @@ packages:
pkg-types@1.2.0:
resolution: {integrity: sha512-+ifYuSSqOQ8CqP4MbZA5hDpb97n3E8SVWdJe+Wms9kj745lmd3b7EZJiqvmLwAlmRfjrI7Hi5z3kdBJ93lFNPA==}
- postcss@8.4.45:
- resolution: {integrity: sha512-7KTLTdzdZZYscUc65XmjFiB73vBhBfbPztCYdUNvlaso9PrzjzcmjqBPR0lNGkcVlcO4BjiO5rK/qNz+XAen1Q==}
+ postcss@8.4.47:
+ resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==}
engines: {node: ^10 || ^12 || >=14}
prelude-ls@1.2.1:
@@ -2090,8 +2087,8 @@ packages:
resolution: {integrity: sha512-IY1rnGr6izd10B0A8LqsBfmlT5OILVuZ7XsI0vdGPEvuonFV7NYEUK4dAkm9Zg2q0Um92kYjTpS1CAP3Nh/KWw==}
engines: {node: '>=16'}
- terser@5.33.0:
- resolution: {integrity: sha512-JuPVaB7s1gdFKPKTelwUyRq5Sid2A3Gko2S0PncwdBq7kN9Ti9HPWDQ06MPsEDGsZeVESjKEnyGy68quBk1w6g==}
+ terser@5.34.1:
+ resolution: {integrity: sha512-FsJZ7iZLd/BXkz+4xrRTGJ26o/6VTjQytUk8b8OxkwcD2I+79VPJlz7qss1+zE7h8GNIScFqXcDyJ/KqBYZFVA==}
engines: {node: '>=10'}
hasBin: true
@@ -2170,11 +2167,11 @@ packages:
unist-util-stringify-position@2.0.3:
resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==}
- unocss@0.63.0:
- resolution: {integrity: sha512-+C+qsKMDL2GyhY4/Dz3BrQcf/1yf1oRyej7ItW4Y7l1sIS1Zcsp9772IUlzuTEnLQQQOdOJVm99OB4TWnGndeg==}
+ unocss@0.63.1:
+ resolution: {integrity: sha512-fVZOT+RCL43yK9enRVVClgh5RT9av8mE6P665cZH+F17hVqDO56q7J7HUqGh9/+zO+omkhYJwUQX4hTPE8J/9g==}
engines: {node: '>=14'}
peerDependencies:
- '@unocss/webpack': 0.63.0
+ '@unocss/webpack': 0.63.1
vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0
peerDependenciesMeta:
'@unocss/webpack':
@@ -2191,8 +2188,8 @@ packages:
vfile@4.2.1:
resolution: {integrity: sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==}
- vite@5.4.7:
- resolution: {integrity: sha512-5l2zxqMEPVENgvzTuBpHer2awaetimj2BGkhBPdnwKbPNOlHsODU+oiazEZzLK7KhAnOrO+XGYJYn4ZlUhDtDQ==}
+ vite@5.4.8:
+ resolution: {integrity: sha512-FqrItQ4DT1NC4zCUqMB4c4AZORMKIa0m8/URVCZ77OZ/QSNeJ54bU1vrFADbDsuwfIPcgknRkmqakQcgnL4GiQ==}
engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true
peerDependencies:
@@ -2595,7 +2592,7 @@ snapshots:
dependencies:
ajv: 6.12.6
debug: 4.3.7(supports-color@8.1.1)
- espree: 10.1.0
+ espree: 10.2.0
globals: 14.0.0
ignore: 5.3.2
import-fresh: 3.3.0
@@ -2617,7 +2614,7 @@ snapshots:
'@humanwhocodes/retry@0.3.0': {}
- '@iconify-json/codicon@1.2.0':
+ '@iconify-json/codicon@1.2.2':
dependencies:
'@iconify/types': 2.0.0
@@ -2673,7 +2670,7 @@ snapshots:
'@nodelib/fs.scandir': 2.1.5
fastq: 1.17.1
- '@polka/url@1.0.0-next.25': {}
+ '@polka/url@1.0.0-next.28': {}
'@rollup/plugin-node-resolve@15.3.0(rollup@4.22.4)':
dependencies:
@@ -2689,7 +2686,7 @@ snapshots:
dependencies:
serialize-javascript: 6.0.2
smob: 1.5.0
- terser: 5.33.0
+ terser: 5.34.1
optionalDependencies:
rollup: 4.22.4
@@ -2758,26 +2755,26 @@ snapshots:
'@rollup/rollup-win32-x64-msvc@4.22.4':
optional: true
- '@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.7(terser@5.33.0)))(svelte@4.2.19)(vite@5.4.7(terser@5.33.0))':
+ '@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.8(terser@5.34.1)))(svelte@4.2.19)(vite@5.4.8(terser@5.34.1))':
dependencies:
- '@sveltejs/vite-plugin-svelte': 3.1.2(svelte@4.2.19)(vite@5.4.7(terser@5.33.0))
+ '@sveltejs/vite-plugin-svelte': 3.1.2(svelte@4.2.19)(vite@5.4.8(terser@5.34.1))
debug: 4.3.7(supports-color@8.1.1)
svelte: 4.2.19
- vite: 5.4.7(terser@5.33.0)
+ vite: 5.4.8(terser@5.34.1)
transitivePeerDependencies:
- supports-color
- '@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.7(terser@5.33.0))':
+ '@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.8(terser@5.34.1))':
dependencies:
- '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.7(terser@5.33.0)))(svelte@4.2.19)(vite@5.4.7(terser@5.33.0))
+ '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.8(terser@5.34.1)))(svelte@4.2.19)(vite@5.4.8(terser@5.34.1))
debug: 4.3.7(supports-color@8.1.1)
deepmerge: 4.3.1
kleur: 4.1.5
magic-string: 0.30.11
svelte: 4.2.19
svelte-hmr: 0.16.0(svelte@4.2.19)
- vite: 5.4.7(terser@5.33.0)
- vitefu: 0.2.5(vite@5.4.7(terser@5.33.0))
+ vite: 5.4.8(terser@5.34.1)
+ vitefu: 0.2.5(vite@5.4.8(terser@5.34.1))
transitivePeerDependencies:
- supports-color
@@ -2930,24 +2927,24 @@ snapshots:
'@typescript-eslint/types': 8.7.0
eslint-visitor-keys: 3.4.3
- '@unocss/astro@0.63.0(rollup@4.22.4)(vite@5.4.7(terser@5.33.0))':
+ '@unocss/astro@0.63.1(rollup@4.22.4)(vite@5.4.8(terser@5.34.1))':
dependencies:
- '@unocss/core': 0.63.0
- '@unocss/reset': 0.63.0
- '@unocss/vite': 0.63.0(rollup@4.22.4)(vite@5.4.7(terser@5.33.0))
+ '@unocss/core': 0.63.1
+ '@unocss/reset': 0.63.1
+ '@unocss/vite': 0.63.1(rollup@4.22.4)(vite@5.4.8(terser@5.34.1))
optionalDependencies:
- vite: 5.4.7(terser@5.33.0)
+ vite: 5.4.8(terser@5.34.1)
transitivePeerDependencies:
- rollup
- supports-color
- '@unocss/cli@0.63.0(rollup@4.22.4)':
+ '@unocss/cli@0.63.1(rollup@4.22.4)':
dependencies:
'@ampproject/remapping': 2.3.0
'@rollup/pluginutils': 5.1.2(rollup@4.22.4)
- '@unocss/config': 0.63.0
- '@unocss/core': 0.63.0
- '@unocss/preset-uno': 0.63.0
+ '@unocss/config': 0.63.1
+ '@unocss/core': 0.63.1
+ '@unocss/preset-uno': 0.63.1
cac: 6.7.14
chokidar: 3.6.0
colorette: 2.0.20
@@ -2960,120 +2957,120 @@ snapshots:
- rollup
- supports-color
- '@unocss/config@0.63.0':
+ '@unocss/config@0.63.1':
dependencies:
- '@unocss/core': 0.63.0
+ '@unocss/core': 0.63.1
unconfig: 0.6.0
transitivePeerDependencies:
- supports-color
- '@unocss/core@0.63.0': {}
+ '@unocss/core@0.63.1': {}
- '@unocss/extractor-arbitrary-variants@0.63.0':
+ '@unocss/extractor-arbitrary-variants@0.63.1':
dependencies:
- '@unocss/core': 0.63.0
+ '@unocss/core': 0.63.1
- '@unocss/extractor-svelte@0.63.0': {}
+ '@unocss/extractor-svelte@0.63.1': {}
- '@unocss/inspector@0.63.0':
+ '@unocss/inspector@0.63.1':
dependencies:
- '@unocss/core': 0.63.0
- '@unocss/rule-utils': 0.63.0
+ '@unocss/core': 0.63.1
+ '@unocss/rule-utils': 0.63.1
gzip-size: 6.0.0
sirv: 2.0.4
- '@unocss/postcss@0.63.0(postcss@8.4.45)':
+ '@unocss/postcss@0.63.1(postcss@8.4.47)':
dependencies:
- '@unocss/config': 0.63.0
- '@unocss/core': 0.63.0
- '@unocss/rule-utils': 0.63.0
+ '@unocss/config': 0.63.1
+ '@unocss/core': 0.63.1
+ '@unocss/rule-utils': 0.63.1
css-tree: 3.0.0
- postcss: 8.4.45
+ postcss: 8.4.47
tinyglobby: 0.2.6
transitivePeerDependencies:
- supports-color
- '@unocss/preset-attributify@0.63.0':
+ '@unocss/preset-attributify@0.63.1':
dependencies:
- '@unocss/core': 0.63.0
+ '@unocss/core': 0.63.1
- '@unocss/preset-icons@0.63.0':
+ '@unocss/preset-icons@0.63.1':
dependencies:
'@iconify/utils': 2.1.33
- '@unocss/core': 0.63.0
+ '@unocss/core': 0.63.1
ofetch: 1.4.0
transitivePeerDependencies:
- supports-color
- '@unocss/preset-mini@0.63.0':
+ '@unocss/preset-mini@0.63.1':
dependencies:
- '@unocss/core': 0.63.0
- '@unocss/extractor-arbitrary-variants': 0.63.0
- '@unocss/rule-utils': 0.63.0
+ '@unocss/core': 0.63.1
+ '@unocss/extractor-arbitrary-variants': 0.63.1
+ '@unocss/rule-utils': 0.63.1
- '@unocss/preset-tagify@0.63.0':
+ '@unocss/preset-tagify@0.63.1':
dependencies:
- '@unocss/core': 0.63.0
+ '@unocss/core': 0.63.1
- '@unocss/preset-typography@0.63.0':
+ '@unocss/preset-typography@0.63.1':
dependencies:
- '@unocss/core': 0.63.0
- '@unocss/preset-mini': 0.63.0
+ '@unocss/core': 0.63.1
+ '@unocss/preset-mini': 0.63.1
- '@unocss/preset-uno@0.63.0':
+ '@unocss/preset-uno@0.63.1':
dependencies:
- '@unocss/core': 0.63.0
- '@unocss/preset-mini': 0.63.0
- '@unocss/preset-wind': 0.63.0
- '@unocss/rule-utils': 0.63.0
+ '@unocss/core': 0.63.1
+ '@unocss/preset-mini': 0.63.1
+ '@unocss/preset-wind': 0.63.1
+ '@unocss/rule-utils': 0.63.1
- '@unocss/preset-web-fonts@0.63.0':
+ '@unocss/preset-web-fonts@0.63.1':
dependencies:
- '@unocss/core': 0.63.0
+ '@unocss/core': 0.63.1
ofetch: 1.4.0
- '@unocss/preset-wind@0.63.0':
+ '@unocss/preset-wind@0.63.1':
dependencies:
- '@unocss/core': 0.63.0
- '@unocss/preset-mini': 0.63.0
- '@unocss/rule-utils': 0.63.0
+ '@unocss/core': 0.63.1
+ '@unocss/preset-mini': 0.63.1
+ '@unocss/rule-utils': 0.63.1
- '@unocss/reset@0.63.0': {}
+ '@unocss/reset@0.63.1': {}
- '@unocss/rule-utils@0.63.0':
+ '@unocss/rule-utils@0.63.1':
dependencies:
- '@unocss/core': 0.63.0
+ '@unocss/core': 0.63.1
magic-string: 0.30.11
- '@unocss/transformer-attributify-jsx@0.63.0':
+ '@unocss/transformer-attributify-jsx@0.63.1':
dependencies:
- '@unocss/core': 0.63.0
+ '@unocss/core': 0.63.1
- '@unocss/transformer-compile-class@0.63.0':
+ '@unocss/transformer-compile-class@0.63.1':
dependencies:
- '@unocss/core': 0.63.0
+ '@unocss/core': 0.63.1
- '@unocss/transformer-directives@0.63.0':
+ '@unocss/transformer-directives@0.63.1':
dependencies:
- '@unocss/core': 0.63.0
- '@unocss/rule-utils': 0.63.0
+ '@unocss/core': 0.63.1
+ '@unocss/rule-utils': 0.63.1
css-tree: 3.0.0
- '@unocss/transformer-variant-group@0.63.0':
+ '@unocss/transformer-variant-group@0.63.1':
dependencies:
- '@unocss/core': 0.63.0
+ '@unocss/core': 0.63.1
- '@unocss/vite@0.63.0(rollup@4.22.4)(vite@5.4.7(terser@5.33.0))':
+ '@unocss/vite@0.63.1(rollup@4.22.4)(vite@5.4.8(terser@5.34.1))':
dependencies:
'@ampproject/remapping': 2.3.0
'@rollup/pluginutils': 5.1.2(rollup@4.22.4)
- '@unocss/config': 0.63.0
- '@unocss/core': 0.63.0
- '@unocss/inspector': 0.63.0
+ '@unocss/config': 0.63.1
+ '@unocss/core': 0.63.1
+ '@unocss/inspector': 0.63.1
chokidar: 3.6.0
magic-string: 0.30.11
tinyglobby: 0.2.6
- vite: 5.4.7(terser@5.33.0)
+ vite: 5.4.8(terser@5.34.1)
transitivePeerDependencies:
- rollup
- supports-color
@@ -3114,9 +3111,7 @@ snapshots:
argparse@2.0.1: {}
- aria-query@5.3.0:
- dependencies:
- dequal: 2.0.3
+ aria-query@5.3.2: {}
array-union@2.1.0: {}
@@ -3283,8 +3278,6 @@ snapshots:
defu@6.1.4: {}
- dequal@2.0.3: {}
-
destr@2.0.3: {}
diff@5.2.0: {}
@@ -3375,14 +3368,14 @@ snapshots:
dependencies:
safe-regex: 2.1.1
- eslint-scope@8.0.2:
+ eslint-scope@8.1.0:
dependencies:
esrecurse: 4.3.0
estraverse: 5.3.0
eslint-visitor-keys@3.4.3: {}
- eslint-visitor-keys@4.0.0: {}
+ eslint-visitor-keys@4.1.0: {}
eslint@9.11.1(jiti@2.0.0):
dependencies:
@@ -3403,9 +3396,9 @@ snapshots:
cross-spawn: 7.0.3
debug: 4.3.7(supports-color@8.1.1)
escape-string-regexp: 4.0.0
- eslint-scope: 8.0.2
- eslint-visitor-keys: 4.0.0
- espree: 10.1.0
+ eslint-scope: 8.1.0
+ eslint-visitor-keys: 4.1.0
+ espree: 10.2.0
esquery: 1.6.0
esutils: 2.0.3
fast-deep-equal: 3.1.3
@@ -3428,11 +3421,11 @@ snapshots:
transitivePeerDependencies:
- supports-color
- espree@10.1.0:
+ espree@10.2.0:
dependencies:
acorn: 8.12.1
acorn-jsx: 5.3.2(acorn@8.12.1)
- eslint-visitor-keys: 4.0.0
+ eslint-visitor-keys: 4.1.0
esquery@1.6.0:
dependencies:
@@ -3519,7 +3512,7 @@ snapshots:
get-caller-file@2.0.5: {}
- get-tsconfig@4.8.0:
+ get-tsconfig@4.8.1:
dependencies:
resolve-pkg-maps: 1.0.0
@@ -3891,7 +3884,7 @@ snapshots:
mlly: 1.7.1
pathe: 1.1.2
- postcss@8.4.45:
+ postcss@8.4.47:
dependencies:
nanoid: 3.3.7
picocolors: 1.1.0
@@ -4012,7 +4005,7 @@ snapshots:
sirv@2.0.4:
dependencies:
- '@polka/url': 1.0.0-next.25
+ '@polka/url': 1.0.0-next.28
mrmime: 2.0.0
totalist: 3.0.1
@@ -4078,7 +4071,7 @@ snapshots:
'@jridgewell/trace-mapping': 0.3.25
'@types/estree': 1.0.6
acorn: 8.12.1
- aria-query: 5.3.0
+ aria-query: 5.3.2
axobject-query: 4.1.0
code-red: 1.0.4
css-tree: 2.3.1
@@ -4088,7 +4081,7 @@ snapshots:
magic-string: 0.30.11
periscopic: 3.1.0
- terser@5.33.0:
+ terser@5.34.1:
dependencies:
'@jridgewell/source-map': 0.3.6
acorn: 8.12.1
@@ -4127,7 +4120,7 @@ snapshots:
tsx@4.19.1:
dependencies:
esbuild: 0.23.1
- get-tsconfig: 4.8.0
+ get-tsconfig: 4.8.1
optionalDependencies:
fsevents: 2.3.3
@@ -4174,27 +4167,27 @@ snapshots:
dependencies:
'@types/unist': 2.0.11
- unocss@0.63.0(postcss@8.4.45)(rollup@4.22.4)(vite@5.4.7(terser@5.33.0)):
- dependencies:
- '@unocss/astro': 0.63.0(rollup@4.22.4)(vite@5.4.7(terser@5.33.0))
- '@unocss/cli': 0.63.0(rollup@4.22.4)
- '@unocss/core': 0.63.0
- '@unocss/postcss': 0.63.0(postcss@8.4.45)
- '@unocss/preset-attributify': 0.63.0
- '@unocss/preset-icons': 0.63.0
- '@unocss/preset-mini': 0.63.0
- '@unocss/preset-tagify': 0.63.0
- '@unocss/preset-typography': 0.63.0
- '@unocss/preset-uno': 0.63.0
- '@unocss/preset-web-fonts': 0.63.0
- '@unocss/preset-wind': 0.63.0
- '@unocss/transformer-attributify-jsx': 0.63.0
- '@unocss/transformer-compile-class': 0.63.0
- '@unocss/transformer-directives': 0.63.0
- '@unocss/transformer-variant-group': 0.63.0
- '@unocss/vite': 0.63.0(rollup@4.22.4)(vite@5.4.7(terser@5.33.0))
+ unocss@0.63.1(postcss@8.4.47)(rollup@4.22.4)(vite@5.4.8(terser@5.34.1)):
+ dependencies:
+ '@unocss/astro': 0.63.1(rollup@4.22.4)(vite@5.4.8(terser@5.34.1))
+ '@unocss/cli': 0.63.1(rollup@4.22.4)
+ '@unocss/core': 0.63.1
+ '@unocss/postcss': 0.63.1(postcss@8.4.47)
+ '@unocss/preset-attributify': 0.63.1
+ '@unocss/preset-icons': 0.63.1
+ '@unocss/preset-mini': 0.63.1
+ '@unocss/preset-tagify': 0.63.1
+ '@unocss/preset-typography': 0.63.1
+ '@unocss/preset-uno': 0.63.1
+ '@unocss/preset-web-fonts': 0.63.1
+ '@unocss/preset-wind': 0.63.1
+ '@unocss/transformer-attributify-jsx': 0.63.1
+ '@unocss/transformer-compile-class': 0.63.1
+ '@unocss/transformer-directives': 0.63.1
+ '@unocss/transformer-variant-group': 0.63.1
+ '@unocss/vite': 0.63.1(rollup@4.22.4)(vite@5.4.8(terser@5.34.1))
optionalDependencies:
- vite: 5.4.7(terser@5.33.0)
+ vite: 5.4.8(terser@5.34.1)
transitivePeerDependencies:
- postcss
- rollup
@@ -4216,18 +4209,18 @@ snapshots:
unist-util-stringify-position: 2.0.3
vfile-message: 2.0.4
- vite@5.4.7(terser@5.33.0):
+ vite@5.4.8(terser@5.34.1):
dependencies:
esbuild: 0.21.5
- postcss: 8.4.45
+ postcss: 8.4.47
rollup: 4.22.4
optionalDependencies:
fsevents: 2.3.3
- terser: 5.33.0
+ terser: 5.34.1
- vitefu@0.2.5(vite@5.4.7(terser@5.33.0)):
+ vitefu@0.2.5(vite@5.4.8(terser@5.34.1)):
optionalDependencies:
- vite: 5.4.7(terser@5.33.0)
+ vite: 5.4.8(terser@5.34.1)
webidl-conversions@3.0.1: {}
From 3b2bd3065d516735b33519df014a81b0d481c7a8 Mon Sep 17 00:00:00 2001
From: Tillmann <28728469+tweidinger@users.noreply.github.com>
Date: Mon, 30 Sep 2024 21:11:44 +0900
Subject: [PATCH 05/40] fix sql heading
---
plugins/sql/permissions/default.toml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/plugins/sql/permissions/default.toml b/plugins/sql/permissions/default.toml
index efac5433..eb5fa555 100644
--- a/plugins/sql/permissions/default.toml
+++ b/plugins/sql/permissions/default.toml
@@ -2,7 +2,7 @@
[default]
description = """
-# Tauri SQL Default Permissions
+### Default Permissions
This permission set configures what kind of
database operations are available from the sql plugin.
From 04459afbb67aafa5cd57e6a148c2beb0a8d3e04a Mon Sep 17 00:00:00 2001
From: Tony <68118705+Legend-Master@users.noreply.github.com>
Date: Tue, 1 Oct 2024 20:34:20 +0800
Subject: [PATCH 06/40] refactor(dialog)!: use enum instead of label for
buttons (#1842)
* refactor(dialog)!: use enum instead of label
* Add change file
* Fix doc comment typo
* Move ok and cancel to lib.rs
---
.changes/native-dialog-button-text.md | 5 +++
plugins/dialog/src/commands.rs | 47 +++++++++++++++---------
plugins/dialog/src/desktop.rs | 34 ++++++++++--------
plugins/dialog/src/lib.rs | 51 ++++++++++++++-------------
plugins/dialog/src/models.rs | 15 ++++++++
5 files changed, 95 insertions(+), 57 deletions(-)
create mode 100644 .changes/native-dialog-button-text.md
diff --git a/.changes/native-dialog-button-text.md b/.changes/native-dialog-button-text.md
new file mode 100644
index 00000000..5440cea1
--- /dev/null
+++ b/.changes/native-dialog-button-text.md
@@ -0,0 +1,5 @@
+---
+"dialog": patch:breaking
+---
+
+Changed `MessageDialogBuilder::ok_button_label` and `MessageDialogBuilder::cancel_button_label` to `MessageDialogBuilder::buttons` which takes an enum now
diff --git a/plugins/dialog/src/commands.rs b/plugins/dialog/src/commands.rs
index 9173e83e..8690a8b0 100644
--- a/plugins/dialog/src/commands.rs
+++ b/plugins/dialog/src/commands.rs
@@ -8,7 +8,10 @@ use serde::{Deserialize, Serialize};
use tauri::{command, Manager, Runtime, State, Window};
use tauri_plugin_fs::FsExt;
-use crate::{Dialog, FileDialogBuilder, FilePath, MessageDialogKind, Result};
+use crate::{
+ Dialog, FileDialogBuilder, FilePath, MessageDialogButtons, MessageDialogKind, Result, CANCEL,
+ OK,
+};
#[derive(Serialize)]
#[serde(untagged)]
@@ -244,11 +247,12 @@ fn message_dialog(
title: Option,
message: String,
kind: Option,
- ok_button_label: Option,
- cancel_button_label: Option,
+ buttons: MessageDialogButtons,
) -> bool {
let mut builder = dialog.message(message);
+ builder = builder.buttons(buttons);
+
if let Some(title) = title {
builder = builder.title(title);
}
@@ -262,14 +266,6 @@ fn message_dialog(
builder = builder.kind(kind);
}
- if let Some(ok) = ok_button_label {
- builder = builder.ok_button_label(ok);
- }
-
- if let Some(cancel) = cancel_button_label {
- builder = builder.cancel_button_label(cancel);
- }
-
builder.blocking_show()
}
@@ -288,8 +284,11 @@ pub(crate) async fn message(
title,
message,
kind,
- ok_button_label,
- None,
+ if let Some(ok_button_label) = ok_button_label {
+ MessageDialogButtons::OkCustom(ok_button_label)
+ } else {
+ MessageDialogButtons::Ok
+ },
))
}
@@ -309,8 +308,7 @@ pub(crate) async fn ask(
title,
message,
kind,
- Some(ok_button_label.unwrap_or_else(|| "Yes".into())),
- Some(cancel_button_label.unwrap_or_else(|| "No".into())),
+ get_ok_cancel_type(ok_button_label, cancel_button_label),
))
}
@@ -330,7 +328,22 @@ pub(crate) async fn confirm(
title,
message,
kind,
- Some(ok_button_label.unwrap_or_else(|| "Ok".into())),
- Some(cancel_button_label.unwrap_or_else(|| "Cancel".into())),
+ get_ok_cancel_type(ok_button_label, cancel_button_label),
))
}
+
+fn get_ok_cancel_type(
+ ok_button_label: Option,
+ cancel_button_label: Option,
+) -> MessageDialogButtons {
+ if let Some(ok_button_label) = ok_button_label {
+ MessageDialogButtons::OkCancelCustom(
+ ok_button_label,
+ cancel_button_label.unwrap_or(CANCEL.to_string()),
+ )
+ } else if let Some(cancel_button_label) = cancel_button_label {
+ MessageDialogButtons::OkCancelCustom(OK.to_string(), cancel_button_label)
+ } else {
+ MessageDialogButtons::OkCancel
+ }
+}
diff --git a/plugins/dialog/src/desktop.rs b/plugins/dialog/src/desktop.rs
index be19b49a..d30f6bfe 100644
--- a/plugins/dialog/src/desktop.rs
+++ b/plugins/dialog/src/desktop.rs
@@ -13,9 +13,7 @@ use rfd::{AsyncFileDialog, AsyncMessageDialog};
use serde::de::DeserializeOwned;
use tauri::{plugin::PluginApi, AppHandle, Runtime};
-use crate::{models::*, FileDialogBuilder, FilePath, MessageDialogBuilder};
-
-const OK: &str = "Ok";
+use crate::{models::*, FileDialogBuilder, FilePath, MessageDialogBuilder, OK};
pub fn init(
app: &AppHandle,
@@ -109,22 +107,24 @@ impl From> for AsyncFileDialog {
}
}
+impl From for rfd::MessageButtons {
+ fn from(value: MessageDialogButtons) -> Self {
+ match value {
+ MessageDialogButtons::Ok => Self::Ok,
+ MessageDialogButtons::OkCancel => Self::OkCancel,
+ MessageDialogButtons::OkCustom(ok) => Self::OkCustom(ok),
+ MessageDialogButtons::OkCancelCustom(ok, cancel) => Self::OkCancelCustom(ok, cancel),
+ }
+ }
+}
+
impl From> for AsyncMessageDialog {
fn from(d: MessageDialogBuilder) -> Self {
let mut dialog = AsyncMessageDialog::new()
.set_title(&d.title)
.set_description(&d.message)
- .set_level(d.kind.into());
-
- let buttons = match (d.ok_button_label, d.cancel_button_label) {
- (Some(ok), Some(cancel)) => Some(rfd::MessageButtons::OkCancelCustom(ok, cancel)),
- (Some(ok), None) => Some(rfd::MessageButtons::OkCustom(ok)),
- (None, Some(cancel)) => Some(rfd::MessageButtons::OkCancelCustom(OK.into(), cancel)),
- (None, None) => None,
- };
- if let Some(buttons) = buttons {
- dialog = dialog.set_buttons(buttons);
- }
+ .set_level(d.kind.into())
+ .set_buttons(d.buttons.into());
if let Some(parent) = d.parent {
dialog = dialog.set_parent(&parent);
@@ -213,7 +213,11 @@ pub fn show_message_dialog(
) {
use rfd::MessageDialogResult;
- let ok_label = dialog.ok_button_label.clone();
+ let ok_label = match &dialog.buttons {
+ MessageDialogButtons::OkCustom(ok) => Some(ok.clone()),
+ MessageDialogButtons::OkCancelCustom(ok, _) => Some(ok.clone()),
+ _ => None,
+ };
let f = move |res| {
f(match res {
MessageDialogResult::Ok | MessageDialogResult::Yes => true,
diff --git a/plugins/dialog/src/lib.rs b/plugins/dialog/src/lib.rs
index 5f2b35b0..a7538e1b 100644
--- a/plugins/dialog/src/lib.rs
+++ b/plugins/dialog/src/lib.rs
@@ -41,6 +41,9 @@ use desktop::*;
#[cfg(mobile)]
use mobile::*;
+pub(crate) const OK: &str = "Ok";
+pub(crate) const CANCEL: &str = "Cancel";
+
macro_rules! blocking_fn {
($self:ident, $fn:ident) => {{
let (tx, rx) = sync_channel(0);
@@ -89,14 +92,13 @@ impl Dialog {
/// - Ask dialog:
///
/// ```
- /// use tauri_plugin_dialog::DialogExt;
+ /// use tauri_plugin_dialog::{DialogExt, MessageDialogButtons};
///
/// tauri::Builder::default()
/// .setup(|app| {
/// app.dialog()
/// .message("Are you sure?")
- /// .ok_button_label("Yes")
- /// .cancel_button_label("No")
+ /// .buttons(MessageDialogButtons::OkCancelCustom("Yes", "No"))
/// .show(|yes| {
/// println!("user said {}", if yes { "yes" } else { "no" });
/// });
@@ -107,13 +109,13 @@ impl Dialog {
/// - Message dialog with OK button:
///
/// ```
- /// use tauri_plugin_dialog::DialogExt;
+ /// use tauri_plugin_dialog::{DialogExt, MessageDialogButtons};
///
/// tauri::Builder::default()
/// .setup(|app| {
/// app.dialog()
/// .message("Job completed successfully")
- /// .ok_button_label("Ok")
+ /// .buttons(MessageDialogButtons::Ok)
/// .show(|_| {
/// println!("dialog closed");
/// });
@@ -129,7 +131,7 @@ impl Dialog {
/// but note that it cannot be executed on the main thread as it will freeze your application.
///
/// ```
- /// use tauri_plugin_dialog::DialogExt;
+ /// use tauri_plugin_dialog::{DialogExt, MessageDialogButtons};
///
/// tauri::Builder::default()
/// .setup(|app| {
@@ -137,8 +139,7 @@ impl Dialog {
/// std::thread::spawn(move || {
/// let yes = handle.dialog()
/// .message("Are you sure?")
- /// .ok_button_label("Yes")
- /// .cancel_button_label("No")
+ /// .buttons(MessageDialogButtons::OkCancelCustom("Yes", "No"))
/// .blocking_show();
/// });
///
@@ -196,8 +197,7 @@ pub struct MessageDialogBuilder {
pub(crate) title: String,
pub(crate) message: String,
pub(crate) kind: MessageDialogKind,
- pub(crate) ok_button_label: Option,
- pub(crate) cancel_button_label: Option,
+ pub(crate) buttons: MessageDialogButtons,
#[cfg(desktop)]
pub(crate) parent: Option,
}
@@ -210,8 +210,8 @@ pub(crate) struct MessageDialogPayload<'a> {
title: &'a String,
message: &'a String,
kind: &'a MessageDialogKind,
- ok_button_label: &'a Option,
- cancel_button_label: &'a Option,
+ ok_button_label: Option<&'a str>,
+ cancel_button_label: Option<&'a str>,
}
// raw window handle :(
@@ -225,8 +225,7 @@ impl MessageDialogBuilder {
title: title.into(),
message: message.into(),
kind: Default::default(),
- ok_button_label: None,
- cancel_button_label: None,
+ buttons: Default::default(),
#[cfg(desktop)]
parent: None,
}
@@ -234,12 +233,20 @@ impl MessageDialogBuilder {
#[cfg(mobile)]
pub(crate) fn payload(&self) -> MessageDialogPayload<'_> {
+ let (ok_button_label, cancel_button_label) = match &self.buttons {
+ MessageDialogButtons::Ok => (Some(OK), None),
+ MessageDialogButtons::OkCancel => (Some(OK), Some(CANCEL)),
+ MessageDialogButtons::OkCustom(ok) => (Some(ok.as_str()), Some(CANCEL)),
+ MessageDialogButtons::OkCancelCustom(ok, cancel) => {
+ (Some(ok.as_str()), Some(cancel.as_str()))
+ }
+ };
MessageDialogPayload {
title: &self.title,
message: &self.message,
kind: &self.kind,
- ok_button_label: &self.ok_button_label,
- cancel_button_label: &self.cancel_button_label,
+ ok_button_label,
+ cancel_button_label,
}
}
@@ -266,15 +273,9 @@ impl MessageDialogBuilder {
self
}
- /// Sets the label for the OK button.
- pub fn ok_button_label(mut self, label: impl Into) -> Self {
- self.ok_button_label.replace(label.into());
- self
- }
-
- /// Sets the label for the Cancel button.
- pub fn cancel_button_label(mut self, label: impl Into) -> Self {
- self.cancel_button_label.replace(label.into());
+ /// Sets the dialog buttons.
+ pub fn buttons(mut self, buttons: MessageDialogButtons) -> Self {
+ self.buttons = buttons;
self
}
diff --git a/plugins/dialog/src/models.rs b/plugins/dialog/src/models.rs
index fa9224e1..3f9eb6c1 100644
--- a/plugins/dialog/src/models.rs
+++ b/plugins/dialog/src/models.rs
@@ -49,3 +49,18 @@ impl Serialize for MessageDialogKind {
}
}
}
+
+/// Set of button that will be displayed on the dialog
+#[non_exhaustive]
+#[derive(Debug, Default, Clone)]
+pub enum MessageDialogButtons {
+ #[default]
+ /// A single `Ok` button with OS default dialog text
+ Ok,
+ /// 2 buttons `Ok` and `Cancel` with OS default dialog texts
+ OkCancel,
+ /// A single `Ok` button with custom text
+ OkCustom(String),
+ /// 2 buttons `Ok` and `Cancel` with custom texts
+ OkCancelCustom(String, String),
+}
From 68579934c93f6ed2edbc97474560d6a8a00e8f70 Mon Sep 17 00:00:00 2001
From: Amr Bashir
Date: Tue, 1 Oct 2024 15:35:13 +0300
Subject: [PATCH 07/40] fix(cli): expose hidden structs (#1856)
closes #1843
---
.changes/cli-hidden-structs.md | 5 +++++
plugins/cli/src/error.rs | 2 ++
plugins/cli/src/lib.rs | 5 +++--
plugins/sql/permissions/autogenerated/reference.md | 2 +-
plugins/sql/permissions/schemas/schema.json | 2 +-
5 files changed, 12 insertions(+), 4 deletions(-)
create mode 100644 .changes/cli-hidden-structs.md
diff --git a/.changes/cli-hidden-structs.md b/.changes/cli-hidden-structs.md
new file mode 100644
index 00000000..61619a05
--- /dev/null
+++ b/.changes/cli-hidden-structs.md
@@ -0,0 +1,5 @@
+---
+"cli": patch
+---
+
+Expose `Matches`, `SubcommandMatches` and `ArgData` structs.
\ No newline at end of file
diff --git a/plugins/cli/src/error.rs b/plugins/cli/src/error.rs
index b4bd2872..2b5e1602 100644
--- a/plugins/cli/src/error.rs
+++ b/plugins/cli/src/error.rs
@@ -18,3 +18,5 @@ impl Serialize for Error {
serializer.serialize_str(self.to_string().as_ref())
}
}
+
+pub type Result = std::result::Result;
diff --git a/plugins/cli/src/lib.rs b/plugins/cli/src/lib.rs
index 0e65409e..38f64f83 100644
--- a/plugins/cli/src/lib.rs
+++ b/plugins/cli/src/lib.rs
@@ -23,8 +23,9 @@ mod error;
mod parser;
use config::{Arg, Config};
-pub use error::Error;
-type Result = std::result::Result;
+
+pub use error::{Error, Result};
+pub use parser::{ArgData, Matches, SubcommandMatches};
pub struct Cli(PluginApi);
diff --git a/plugins/sql/permissions/autogenerated/reference.md b/plugins/sql/permissions/autogenerated/reference.md
index 5b887c94..2a70f7b3 100644
--- a/plugins/sql/permissions/autogenerated/reference.md
+++ b/plugins/sql/permissions/autogenerated/reference.md
@@ -1,6 +1,6 @@
## Default Permission
-# Tauri SQL Default Permissions
+### Default Permissions
This permission set configures what kind of
database operations are available from the sql plugin.
diff --git a/plugins/sql/permissions/schemas/schema.json b/plugins/sql/permissions/schemas/schema.json
index e14f5cea..e3add537 100644
--- a/plugins/sql/permissions/schemas/schema.json
+++ b/plugins/sql/permissions/schemas/schema.json
@@ -335,7 +335,7 @@
"const": "deny-select"
},
{
- "description": "# Tauri SQL Default Permissions\n\nThis permission set configures what kind of\ndatabase operations are available from the sql plugin.\n\n### Granted Permissions\n\nAll reading related operations are enabled.\nAlso allows to load or close a connection.\n\n",
+ "description": "### Default Permissions\n\nThis permission set configures what kind of\ndatabase operations are available from the sql plugin.\n\n### Granted Permissions\n\nAll reading related operations are enabled.\nAlso allows to load or close a connection.\n\n",
"type": "string",
"const": "default"
}
From 30bcf5dcc22e1bb1fb983a8d2887edc39404e6df Mon Sep 17 00:00:00 2001
From: Fabian-Lars
Date: Tue, 1 Oct 2024 14:47:08 +0200
Subject: [PATCH 08/40] refactor(sql): Allow multiple drivers at the same time
(#1838)
* refactor(sql): Allow multiple drivers at the same time
* fmt
* remove default feature comment [skip ci]
* what was that doing there [skip ci]
* disable public methods for now
---
.changes/feat-multiple-sql-backends.md | 5 +
.github/workflows/lint-rust.yml | 10 +-
.github/workflows/test-rust.yml | 14 +-
plugins/localhost/src/lib.rs | 2 +-
plugins/sql/Cargo.toml | 1 +
plugins/sql/src/commands.rs | 82 ++++++
plugins/sql/src/decode/mod.rs | 15 +-
plugins/sql/src/error.rs | 28 ++
plugins/sql/src/lib.rs | 180 +++++++++++--
plugins/sql/src/plugin.rs | 343 -------------------------
plugins/sql/src/wrapper.rs | 328 +++++++++++++++++++++++
11 files changed, 615 insertions(+), 393 deletions(-)
create mode 100644 .changes/feat-multiple-sql-backends.md
create mode 100644 plugins/sql/src/commands.rs
create mode 100644 plugins/sql/src/error.rs
delete mode 100644 plugins/sql/src/plugin.rs
create mode 100644 plugins/sql/src/wrapper.rs
diff --git a/.changes/feat-multiple-sql-backends.md b/.changes/feat-multiple-sql-backends.md
new file mode 100644
index 00000000..65b8fe86
--- /dev/null
+++ b/.changes/feat-multiple-sql-backends.md
@@ -0,0 +1,5 @@
+---
+sql: patch
+---
+
+It is now possible to enable multiple SQL backends at the same time. There will be no compile error anymore if no backends are enabled!
diff --git a/.github/workflows/lint-rust.yml b/.github/workflows/lint-rust.yml
index 74d9d766..39cc37fe 100644
--- a/.github/workflows/lint-rust.yml
+++ b/.github/workflows/lint-rust.yml
@@ -148,13 +148,7 @@ jobs:
- uses: Swatinem/rust-cache@v2
- name: clippy ${{ matrix.package }}
- if: matrix.package != 'tauri-plugin-sql'
run: cargo clippy --package ${{ matrix.package }} --all-targets -- -D warnings
- - name: clippy ${{ matrix.package }} mysql
- if: matrix.package == 'tauri-plugin-sql'
- run: cargo clippy --package ${{ matrix.package }} --all-targets --no-default-features --features mysql -- -D warnings
-
- - name: clippy ${{ matrix.package }} postgres
- if: matrix.package == 'tauri-plugin-sql'
- run: cargo clippy --package ${{ matrix.package }} --all-targets --no-default-features --features postgres -- -D warnings
+ - name: clippy ${{ matrix.package }} --all-features
+ run: cargo clippy --package ${{ matrix.package }} --all-targets --all-features -- -D warnings
diff --git a/.github/workflows/test-rust.yml b/.github/workflows/test-rust.yml
index 75b1e55f..34af5e2c 100644
--- a/.github/workflows/test-rust.yml
+++ b/.github/workflows/test-rust.yml
@@ -215,21 +215,9 @@ jobs:
run: cargo +stable install cross --git https://github.com/cross-rs/cross
- name: test ${{ matrix.package }}
- if: matrix.package != 'tauri-plugin-sql' && matrix.package != 'tauri-plugin-http'
+ if: matrix.package != 'tauri-plugin-http'
run: ${{ matrix.platform.runner }} ${{ matrix.platform.command }} --package ${{ matrix.package }} --target ${{ matrix.platform.target }} --all-targets --all-features
- name: test ${{ matrix.package }}
if: matrix.package == 'tauri-plugin-http'
run: ${{ matrix.platform.runner }} ${{ matrix.platform.command }} --package ${{ matrix.package }} --target ${{ matrix.platform.target }} --all-targets
-
- - name: test ${{ matrix.package }} sqlite
- if: matrix.package == 'tauri-plugin-sql'
- run: ${{ matrix.platform.runner }} ${{ matrix.platform.command }} --package ${{ matrix.package }} --target ${{ matrix.platform.target }} --all-targets --features sqlite
-
- - name: test ${{ matrix.package }} mysql
- if: matrix.package == 'tauri-plugin-sql'
- run: ${{ matrix.platform.runner }} ${{ matrix.platform.command }} --package ${{ matrix.package }} --target ${{ matrix.platform.target }} --all-targets --features mysql
-
- - name: test ${{ matrix.package }} postgres
- if: matrix.package == 'tauri-plugin-sql'
- run: ${{ matrix.platform.runner }} ${{ matrix.platform.command }} --package ${{ matrix.package }} --target ${{ matrix.platform.target }} --all-targets --features postgres
diff --git a/plugins/localhost/src/lib.rs b/plugins/localhost/src/lib.rs
index f5f99fe4..a0c4c794 100644
--- a/plugins/localhost/src/lib.rs
+++ b/plugins/localhost/src/lib.rs
@@ -74,7 +74,7 @@ impl Builder {
let asset_resolver = app.asset_resolver();
std::thread::spawn(move || {
let server =
- Server::http(&format!("localhost:{port}")).expect("Unable to spawn server");
+ Server::http(format!("localhost:{port}")).expect("Unable to spawn server");
for req in server.incoming_requests() {
let path = req
.url()
diff --git a/plugins/sql/Cargo.toml b/plugins/sql/Cargo.toml
index bfcfc99e..4f4db76f 100644
--- a/plugins/sql/Cargo.toml
+++ b/plugins/sql/Cargo.toml
@@ -40,3 +40,4 @@ indexmap = { version = "2", features = ["serde"] }
sqlite = ["sqlx/sqlite", "sqlx/runtime-tokio"]
mysql = ["sqlx/mysql", "sqlx/runtime-tokio-rustls"]
postgres = ["sqlx/postgres", "sqlx/runtime-tokio-rustls"]
+# TODO: bundled-cipher etc
diff --git a/plugins/sql/src/commands.rs b/plugins/sql/src/commands.rs
new file mode 100644
index 00000000..8cd90e9c
--- /dev/null
+++ b/plugins/sql/src/commands.rs
@@ -0,0 +1,82 @@
+// Copyright 2019-2023 Tauri Programme within The Commons Conservancy
+// SPDX-License-Identifier: Apache-2.0
+// SPDX-License-Identifier: MIT
+
+use indexmap::IndexMap;
+use serde_json::Value as JsonValue;
+use sqlx::migrate::Migrator;
+use tauri::{command, AppHandle, Runtime, State};
+
+use crate::{DbInstances, DbPool, Error, LastInsertId, Migrations};
+
+#[command]
+pub(crate) async fn load(
+ app: AppHandle,
+ db_instances: State<'_, DbInstances>,
+ migrations: State<'_, Migrations>,
+ db: String,
+) -> Result {
+ let pool = DbPool::connect(&db, &app).await?;
+
+ if let Some(migrations) = migrations.0.lock().await.remove(&db) {
+ let migrator = Migrator::new(migrations).await?;
+ pool.migrate(&migrator).await?;
+ }
+
+ db_instances.0.lock().await.insert(db.clone(), pool);
+
+ Ok(db)
+}
+
+/// Allows the database connection(s) to be closed; if no database
+/// name is passed in then _all_ database connection pools will be
+/// shut down.
+#[command]
+pub(crate) async fn close(
+ db_instances: State<'_, DbInstances>,
+ db: Option,
+) -> Result {
+ let mut instances = db_instances.0.lock().await;
+
+ let pools = if let Some(db) = db {
+ vec![db]
+ } else {
+ instances.keys().cloned().collect()
+ };
+
+ for pool in pools {
+ let db = instances
+ .get_mut(&pool)
+ .ok_or(Error::DatabaseNotLoaded(pool))?;
+ db.close().await;
+ }
+
+ Ok(true)
+}
+
+/// Execute a command against the database
+#[command]
+pub(crate) async fn execute(
+ db_instances: State<'_, DbInstances>,
+ db: String,
+ query: String,
+ values: Vec,
+) -> Result<(u64, LastInsertId), crate::Error> {
+ let mut instances = db_instances.0.lock().await;
+
+ let db = instances.get_mut(&db).ok_or(Error::DatabaseNotLoaded(db))?;
+ db.execute(query, values).await
+}
+
+#[command]
+pub(crate) async fn select(
+ db_instances: State<'_, DbInstances>,
+ db: String,
+ query: String,
+ values: Vec,
+) -> Result>, crate::Error> {
+ let mut instances = db_instances.0.lock().await;
+
+ let db = instances.get_mut(&db).ok_or(Error::DatabaseNotLoaded(db))?;
+ db.select(query, values).await
+}
diff --git a/plugins/sql/src/decode/mod.rs b/plugins/sql/src/decode/mod.rs
index 50fb3c78..0a2d2cdd 100644
--- a/plugins/sql/src/decode/mod.rs
+++ b/plugins/sql/src/decode/mod.rs
@@ -3,17 +3,8 @@
// SPDX-License-Identifier: MIT
#[cfg(feature = "mysql")]
-mod mysql;
+pub(crate) mod mysql;
#[cfg(feature = "postgres")]
-mod postgres;
+pub(crate) mod postgres;
#[cfg(feature = "sqlite")]
-mod sqlite;
-
-#[cfg(feature = "mysql")]
-pub(crate) use mysql::to_json;
-
-#[cfg(feature = "postgres")]
-pub(crate) use postgres::to_json;
-
-#[cfg(feature = "sqlite")]
-pub(crate) use sqlite::to_json;
+pub(crate) mod sqlite;
diff --git a/plugins/sql/src/error.rs b/plugins/sql/src/error.rs
new file mode 100644
index 00000000..5ac845b8
--- /dev/null
+++ b/plugins/sql/src/error.rs
@@ -0,0 +1,28 @@
+// Copyright 2019-2023 Tauri Programme within The Commons Conservancy
+// SPDX-License-Identifier: Apache-2.0
+// SPDX-License-Identifier: MIT
+
+use serde::{Serialize, Serializer};
+
+#[derive(Debug, thiserror::Error)]
+pub enum Error {
+ #[error(transparent)]
+ Sql(#[from] sqlx::Error),
+ #[error(transparent)]
+ Migration(#[from] sqlx::migrate::MigrateError),
+ #[error("invalid connection url: {0}")]
+ InvalidDbUrl(String),
+ #[error("database {0} not loaded")]
+ DatabaseNotLoaded(String),
+ #[error("unsupported datatype: {0}")]
+ UnsupportedDatatype(String),
+}
+
+impl Serialize for Error {
+ fn serialize(&self, serializer: S) -> std::result::Result
+ where
+ S: Serializer,
+ {
+ serializer.serialize_str(self.to_string().as_ref())
+ }
+}
diff --git a/plugins/sql/src/lib.rs b/plugins/sql/src/lib.rs
index f25ede21..ec9362bf 100644
--- a/plugins/sql/src/lib.rs
+++ b/plugins/sql/src/lib.rs
@@ -11,20 +11,168 @@
html_favicon_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png"
)]
-#[cfg(any(
- all(feature = "sqlite", feature = "mysql"),
- all(feature = "sqlite", feature = "postgres"),
- all(feature = "mysql", feature = "postgres")
-))]
-compile_error!(
- "Only one database driver can be enabled. Set the feature flag for the driver of your choice."
-);
-
-#[cfg(not(any(feature = "sqlite", feature = "mysql", feature = "postgres")))]
-compile_error!(
- "Database driver not defined. Please set the feature flag for the driver of your choice."
-);
-
+mod commands;
mod decode;
-mod plugin;
-pub use plugin::*;
+mod error;
+mod wrapper;
+
+pub use error::Error;
+pub use wrapper::DbPool;
+
+use futures_core::future::BoxFuture;
+use serde::{Deserialize, Serialize};
+use sqlx::{
+ error::BoxDynError,
+ migrate::{Migration as SqlxMigration, MigrationSource, MigrationType, Migrator},
+};
+use tauri::{
+ plugin::{Builder as PluginBuilder, TauriPlugin},
+ Manager, RunEvent, Runtime,
+};
+use tokio::sync::Mutex;
+
+use std::collections::HashMap;
+
+#[derive(Default)]
+pub struct DbInstances(pub Mutex>);
+
+#[derive(Serialize)]
+#[serde(untagged)]
+pub(crate) enum LastInsertId {
+ #[cfg(feature = "sqlite")]
+ Sqlite(i64),
+ #[cfg(feature = "mysql")]
+ MySql(u64),
+ #[cfg(feature = "postgres")]
+ Postgres(()),
+ #[cfg(not(any(feature = "sqlite", feature = "mysql", feature = "postgres")))]
+ None,
+}
+
+struct Migrations(Mutex>);
+
+#[derive(Default, Clone, Deserialize)]
+pub struct PluginConfig {
+ #[serde(default)]
+ preload: Vec,
+}
+
+#[derive(Debug)]
+pub enum MigrationKind {
+ Up,
+ Down,
+}
+
+impl From for MigrationType {
+ fn from(kind: MigrationKind) -> Self {
+ match kind {
+ MigrationKind::Up => Self::ReversibleUp,
+ MigrationKind::Down => Self::ReversibleDown,
+ }
+ }
+}
+
+/// A migration definition.
+#[derive(Debug)]
+pub struct Migration {
+ pub version: i64,
+ pub description: &'static str,
+ pub sql: &'static str,
+ pub kind: MigrationKind,
+}
+
+#[derive(Debug)]
+struct MigrationList(Vec);
+
+impl MigrationSource<'static> for MigrationList {
+ fn resolve(self) -> BoxFuture<'static, std::result::Result, BoxDynError>> {
+ Box::pin(async move {
+ let mut migrations = Vec::new();
+ for migration in self.0 {
+ if matches!(migration.kind, MigrationKind::Up) {
+ migrations.push(SqlxMigration::new(
+ migration.version,
+ migration.description.into(),
+ migration.kind.into(),
+ migration.sql.into(),
+ false,
+ ));
+ }
+ }
+ Ok(migrations)
+ })
+ }
+}
+
+/// Tauri SQL plugin builder.
+#[derive(Default)]
+pub struct Builder {
+ migrations: Option>,
+}
+
+impl Builder {
+ pub fn new() -> Self {
+ #[cfg(not(any(feature = "sqlite", feature = "mysql", feature = "postgres")))]
+ eprintln!("No sql driver enabled. Please set at least one of the \"sqlite\", \"mysql\", \"postgres\" feature flags.");
+
+ Self::default()
+ }
+
+ /// Add migrations to a database.
+ #[must_use]
+ pub fn add_migrations(mut self, db_url: &str, migrations: Vec) -> Self {
+ self.migrations
+ .get_or_insert(Default::default())
+ .insert(db_url.to_string(), MigrationList(migrations));
+ self
+ }
+
+ pub fn build(mut self) -> TauriPlugin> {
+ PluginBuilder::>::new("sql")
+ .invoke_handler(tauri::generate_handler![
+ commands::load,
+ commands::execute,
+ commands::select,
+ commands::close
+ ])
+ .setup(|app, api| {
+ let config = api.config().clone().unwrap_or_default();
+
+ tauri::async_runtime::block_on(async move {
+ let instances = DbInstances::default();
+ let mut lock = instances.0.lock().await;
+
+ for db in config.preload {
+ let pool = DbPool::connect(&db, app).await?;
+
+ if let Some(migrations) = self.migrations.as_mut().unwrap().remove(&db) {
+ let migrator = Migrator::new(migrations).await?;
+ pool.migrate(&migrator).await?;
+ }
+
+ lock.insert(db, pool);
+ }
+ drop(lock);
+
+ app.manage(instances);
+ app.manage(Migrations(Mutex::new(
+ self.migrations.take().unwrap_or_default(),
+ )));
+
+ Ok(())
+ })
+ })
+ .on_event(|app, event| {
+ if let RunEvent::Exit = event {
+ tauri::async_runtime::block_on(async move {
+ let instances = &*app.state::();
+ let instances = instances.0.lock().await;
+ for value in instances.values() {
+ value.close().await;
+ }
+ });
+ }
+ })
+ .build()
+ }
+}
diff --git a/plugins/sql/src/plugin.rs b/plugins/sql/src/plugin.rs
deleted file mode 100644
index 63f8e183..00000000
--- a/plugins/sql/src/plugin.rs
+++ /dev/null
@@ -1,343 +0,0 @@
-// Copyright 2019-2023 Tauri Programme within The Commons Conservancy
-// SPDX-License-Identifier: Apache-2.0
-// SPDX-License-Identifier: MIT
-
-use futures_core::future::BoxFuture;
-use serde::{ser::Serializer, Deserialize, Serialize};
-use serde_json::Value as JsonValue;
-use sqlx::{
- error::BoxDynError,
- migrate::{
- MigrateDatabase, Migration as SqlxMigration, MigrationSource, MigrationType, Migrator,
- },
- Column, Pool, Row,
-};
-use tauri::{
- command,
- plugin::{Builder as PluginBuilder, TauriPlugin},
- AppHandle, Manager, RunEvent, Runtime, State,
-};
-use tokio::sync::Mutex;
-
-use indexmap::IndexMap;
-use std::collections::HashMap;
-
-#[cfg(feature = "sqlite")]
-use std::{fs::create_dir_all, path::PathBuf};
-
-#[cfg(feature = "sqlite")]
-type Db = sqlx::sqlite::Sqlite;
-#[cfg(feature = "mysql")]
-type Db = sqlx::mysql::MySql;
-#[cfg(feature = "postgres")]
-type Db = sqlx::postgres::Postgres;
-
-#[cfg(feature = "sqlite")]
-type LastInsertId = i64;
-#[cfg(not(feature = "sqlite"))]
-type LastInsertId = u64;
-
-#[derive(Debug, thiserror::Error)]
-pub enum Error {
- #[error(transparent)]
- Sql(#[from] sqlx::Error),
- #[error(transparent)]
- Migration(#[from] sqlx::migrate::MigrateError),
- #[error("database {0} not loaded")]
- DatabaseNotLoaded(String),
- #[error("unsupported datatype: {0}")]
- UnsupportedDatatype(String),
-}
-
-impl Serialize for Error {
- fn serialize(&self, serializer: S) -> std::result::Result
- where
- S: Serializer,
- {
- serializer.serialize_str(self.to_string().as_ref())
- }
-}
-
-type Result = std::result::Result;
-
-#[cfg(feature = "sqlite")]
-/// Resolves the App's **file path** from the `AppHandle` context
-/// object
-fn app_path(app: &AppHandle) -> PathBuf {
- app.path().app_config_dir().expect("No App path was found!")
-}
-
-#[cfg(feature = "sqlite")]
-/// Maps the user supplied DB connection string to a connection string
-/// with a fully qualified file path to the App's designed "app_path"
-fn path_mapper(mut app_path: PathBuf, connection_string: &str) -> String {
- app_path.push(
- connection_string
- .split_once(':')
- .expect("Couldn't parse the connection string for DB!")
- .1,
- );
-
- format!(
- "sqlite:{}",
- app_path
- .to_str()
- .expect("Problem creating fully qualified path to Database file!")
- )
-}
-
-#[derive(Default)]
-pub struct DbInstances(pub Mutex>>);
-
-struct Migrations(Mutex>);
-
-#[derive(Default, Clone, Deserialize)]
-pub struct PluginConfig {
- #[serde(default)]
- preload: Vec,
-}
-
-#[derive(Debug)]
-pub enum MigrationKind {
- Up,
- Down,
-}
-
-impl From for MigrationType {
- fn from(kind: MigrationKind) -> Self {
- match kind {
- MigrationKind::Up => Self::ReversibleUp,
- MigrationKind::Down => Self::ReversibleDown,
- }
- }
-}
-
-/// A migration definition.
-#[derive(Debug)]
-pub struct Migration {
- pub version: i64,
- pub description: &'static str,
- pub sql: &'static str,
- pub kind: MigrationKind,
-}
-
-#[derive(Debug)]
-struct MigrationList(Vec);
-
-impl MigrationSource<'static> for MigrationList {
- fn resolve(self) -> BoxFuture<'static, std::result::Result, BoxDynError>> {
- Box::pin(async move {
- let mut migrations = Vec::new();
- for migration in self.0 {
- if matches!(migration.kind, MigrationKind::Up) {
- migrations.push(SqlxMigration::new(
- migration.version,
- migration.description.into(),
- migration.kind.into(),
- migration.sql.into(),
- false,
- ));
- }
- }
- Ok(migrations)
- })
- }
-}
-
-#[command]
-async fn load(
- #[allow(unused_variables)] app: AppHandle,
- db_instances: State<'_, DbInstances>,
- migrations: State<'_, Migrations>,
- db: String,
-) -> Result {
- #[cfg(feature = "sqlite")]
- let fqdb = path_mapper(app_path(&app), &db);
- #[cfg(not(feature = "sqlite"))]
- let fqdb = db.clone();
-
- #[cfg(feature = "sqlite")]
- create_dir_all(app_path(&app)).expect("Problem creating App directory!");
-
- if !Db::database_exists(&fqdb).await.unwrap_or(false) {
- Db::create_database(&fqdb).await?;
- }
- let pool = Pool::connect(&fqdb).await?;
-
- if let Some(migrations) = migrations.0.lock().await.remove(&db) {
- let migrator = Migrator::new(migrations).await?;
- migrator.run(&pool).await?;
- }
-
- db_instances.0.lock().await.insert(db.clone(), pool);
- Ok(db)
-}
-
-/// Allows the database connection(s) to be closed; if no database
-/// name is passed in then _all_ database connection pools will be
-/// shut down.
-#[command]
-async fn close(db_instances: State<'_, DbInstances>, db: Option) -> Result {
- let mut instances = db_instances.0.lock().await;
-
- let pools = if let Some(db) = db {
- vec![db]
- } else {
- instances.keys().cloned().collect()
- };
-
- for pool in pools {
- let db = instances
- .get_mut(&pool) //
- .ok_or(Error::DatabaseNotLoaded(pool))?;
- db.close().await;
- }
-
- Ok(true)
-}
-
-/// Execute a command against the database
-#[command]
-async fn execute(
- db_instances: State<'_, DbInstances>,
- db: String,
- query: String,
- values: Vec,
-) -> Result<(u64, LastInsertId)> {
- let mut instances = db_instances.0.lock().await;
-
- let db = instances.get_mut(&db).ok_or(Error::DatabaseNotLoaded(db))?;
- let mut query = sqlx::query(&query);
- for value in values {
- if value.is_null() {
- query = query.bind(None::);
- } else if value.is_string() {
- query = query.bind(value.as_str().unwrap().to_owned())
- } else if let Some(number) = value.as_number() {
- query = query.bind(number.as_f64().unwrap_or_default())
- } else {
- query = query.bind(value);
- }
- }
- let result = query.execute(&*db).await?;
- #[cfg(feature = "sqlite")]
- let r = Ok((result.rows_affected(), result.last_insert_rowid()));
- #[cfg(feature = "mysql")]
- let r = Ok((result.rows_affected(), result.last_insert_id()));
- #[cfg(feature = "postgres")]
- let r = Ok((result.rows_affected(), 0));
- r
-}
-
-#[command]
-async fn select(
- db_instances: State<'_, DbInstances>,
- db: String,
- query: String,
- values: Vec,
-) -> Result>> {
- let mut instances = db_instances.0.lock().await;
- let db = instances.get_mut(&db).ok_or(Error::DatabaseNotLoaded(db))?;
- let mut query = sqlx::query(&query);
- for value in values {
- if value.is_null() {
- query = query.bind(None::);
- } else if value.is_string() {
- query = query.bind(value.as_str().unwrap().to_owned())
- } else if let Some(number) = value.as_number() {
- query = query.bind(number.as_f64().unwrap_or_default())
- } else {
- query = query.bind(value);
- }
- }
- let rows = query.fetch_all(&*db).await?;
- let mut values = Vec::new();
- for row in rows {
- let mut value = IndexMap::default();
- for (i, column) in row.columns().iter().enumerate() {
- let v = row.try_get_raw(i)?;
-
- let v = crate::decode::to_json(v)?;
-
- value.insert(column.name().to_string(), v);
- }
-
- values.push(value);
- }
-
- Ok(values)
-}
-
-/// Tauri SQL plugin builder.
-#[derive(Default)]
-pub struct Builder {
- migrations: Option>,
-}
-
-impl Builder {
- pub fn new() -> Self {
- Self::default()
- }
-
- /// Add migrations to a database.
- #[must_use]
- pub fn add_migrations(mut self, db_url: &str, migrations: Vec) -> Self {
- self.migrations
- .get_or_insert(Default::default())
- .insert(db_url.to_string(), MigrationList(migrations));
- self
- }
-
- pub fn build(mut self) -> TauriPlugin> {
- PluginBuilder::>::new("sql")
- .invoke_handler(tauri::generate_handler![load, execute, select, close])
- .setup(|app, api| {
- let config = api.config().clone().unwrap_or_default();
-
- #[cfg(feature = "sqlite")]
- create_dir_all(app_path(app)).expect("problems creating App directory!");
-
- tauri::async_runtime::block_on(async move {
- let instances = DbInstances::default();
- let mut lock = instances.0.lock().await;
- for db in config.preload {
- #[cfg(feature = "sqlite")]
- let fqdb = path_mapper(app_path(app), &db);
- #[cfg(not(feature = "sqlite"))]
- let fqdb = db.clone();
-
- if !Db::database_exists(&fqdb).await.unwrap_or(false) {
- Db::create_database(&fqdb).await?;
- }
- let pool = Pool::connect(&fqdb).await?;
-
- if let Some(migrations) = self.migrations.as_mut().unwrap().remove(&db) {
- let migrator = Migrator::new(migrations).await?;
- migrator.run(&pool).await?;
- }
- lock.insert(db, pool);
- }
- drop(lock);
-
- app.manage(instances);
- app.manage(Migrations(Mutex::new(
- self.migrations.take().unwrap_or_default(),
- )));
-
- Ok(())
- })
- })
- .on_event(|app, event| {
- if let RunEvent::Exit = event {
- tauri::async_runtime::block_on(async move {
- let instances = &*app.state::();
- let instances = instances.0.lock().await;
- for value in instances.values() {
- value.close().await;
- }
- });
- }
- })
- .build()
- }
-}
diff --git a/plugins/sql/src/wrapper.rs b/plugins/sql/src/wrapper.rs
new file mode 100644
index 00000000..90631dac
--- /dev/null
+++ b/plugins/sql/src/wrapper.rs
@@ -0,0 +1,328 @@
+// Copyright 2019-2023 Tauri Programme within The Commons Conservancy
+// SPDX-License-Identifier: Apache-2.0
+// SPDX-License-Identifier: MIT
+
+#[cfg(feature = "sqlite")]
+use std::fs::create_dir_all;
+
+use indexmap::IndexMap;
+use serde_json::Value as JsonValue;
+#[cfg(any(feature = "sqlite", feature = "mysql", feature = "postgres"))]
+use sqlx::{migrate::MigrateDatabase, Column, Executor, Pool, Row};
+#[cfg(any(feature = "sqlite", feature = "mysql", feature = "postgres"))]
+use tauri::Manager;
+use tauri::{AppHandle, Runtime};
+
+#[cfg(feature = "mysql")]
+use sqlx::MySql;
+#[cfg(feature = "postgres")]
+use sqlx::Postgres;
+#[cfg(feature = "sqlite")]
+use sqlx::Sqlite;
+
+use crate::LastInsertId;
+
+pub enum DbPool {
+ #[cfg(feature = "sqlite")]
+ Sqlite(Pool),
+ #[cfg(feature = "mysql")]
+ MySql(Pool),
+ #[cfg(feature = "postgres")]
+ Postgres(Pool),
+ #[cfg(not(any(feature = "sqlite", feature = "mysql", feature = "postgres")))]
+ None,
+}
+
+// public methods
+/* impl DbPool {
+ /// Get the inner Sqlite Pool. Returns None for MySql and Postgres pools.
+ #[cfg(feature = "sqlite")]
+ pub fn sqlite(&self) -> Option<&Pool> {
+ match self {
+ DbPool::Sqlite(pool) => Some(pool),
+ _ => None,
+ }
+ }
+
+ /// Get the inner MySql Pool. Returns None for Sqlite and Postgres pools.
+ #[cfg(feature = "mysql")]
+ pub fn mysql(&self) -> Option<&Pool> {
+ match self {
+ DbPool::MySql(pool) => Some(pool),
+ _ => None,
+ }
+ }
+
+ /// Get the inner Postgres Pool. Returns None for MySql and Sqlite pools.
+ #[cfg(feature = "postgres")]
+ pub fn postgres(&self) -> Option<&Pool> {
+ match self {
+ DbPool::Postgres(pool) => Some(pool),
+ _ => None,
+ }
+ }
+} */
+
+// private methods
+impl DbPool {
+ pub(crate) async fn connect(
+ conn_url: &str,
+ _app: &AppHandle,
+ ) -> Result {
+ match conn_url
+ .split_once(':')
+ .ok_or_else(|| crate::Error::InvalidDbUrl(conn_url.to_string()))?
+ .0
+ {
+ #[cfg(feature = "sqlite")]
+ "sqlite" => {
+ let app_path = _app
+ .path()
+ .app_config_dir()
+ .expect("No App config path was found!");
+
+ create_dir_all(&app_path).expect("Couldn't create app config dir");
+
+ let conn_url = &path_mapper(app_path, conn_url);
+
+ if !Sqlite::database_exists(conn_url).await.unwrap_or(false) {
+ Sqlite::create_database(conn_url).await?;
+ }
+ Ok(Self::Sqlite(Pool::connect(conn_url).await?))
+ }
+ #[cfg(feature = "mysql")]
+ "mysql" => {
+ if !MySql::database_exists(conn_url).await.unwrap_or(false) {
+ MySql::create_database(conn_url).await?;
+ }
+ Ok(Self::MySql(Pool::connect(conn_url).await?))
+ }
+ #[cfg(feature = "postgres")]
+ "postgres" => {
+ if !Postgres::database_exists(conn_url).await.unwrap_or(false) {
+ Postgres::create_database(conn_url).await?;
+ }
+ Ok(Self::Postgres(Pool::connect(conn_url).await?))
+ }
+ _ => Err(crate::Error::InvalidDbUrl(conn_url.to_string())),
+ }
+ }
+
+ pub(crate) async fn migrate(
+ &self,
+ _migrator: &sqlx::migrate::Migrator,
+ ) -> Result<(), crate::Error> {
+ match self {
+ #[cfg(feature = "sqlite")]
+ DbPool::Sqlite(pool) => _migrator.run(pool).await?,
+ #[cfg(feature = "mysql")]
+ DbPool::MySql(pool) => _migrator.run(pool).await?,
+ #[cfg(feature = "postgres")]
+ DbPool::Postgres(pool) => _migrator.run(pool).await?,
+ #[cfg(not(any(feature = "sqlite", feature = "mysql", feature = "postgres")))]
+ DbPool::None => (),
+ }
+ Ok(())
+ }
+
+ pub(crate) async fn close(&self) {
+ match self {
+ #[cfg(feature = "sqlite")]
+ DbPool::Sqlite(pool) => pool.close().await,
+ #[cfg(feature = "mysql")]
+ DbPool::MySql(pool) => pool.close().await,
+ #[cfg(feature = "postgres")]
+ DbPool::Postgres(pool) => pool.close().await,
+ #[cfg(not(any(feature = "sqlite", feature = "mysql", feature = "postgres")))]
+ DbPool::None => (),
+ }
+ }
+
+ pub(crate) async fn execute(
+ &self,
+ _query: String,
+ _values: Vec,
+ ) -> Result<(u64, LastInsertId), crate::Error> {
+ Ok(match self {
+ #[cfg(feature = "sqlite")]
+ DbPool::Sqlite(pool) => {
+ let mut query = sqlx::query(&_query);
+ for value in _values {
+ if value.is_null() {
+ query = query.bind(None::);
+ } else if value.is_string() {
+ query = query.bind(value.as_str().unwrap().to_owned())
+ } else if let Some(number) = value.as_number() {
+ query = query.bind(number.as_f64().unwrap_or_default())
+ } else {
+ query = query.bind(value);
+ }
+ }
+ let result = pool.execute(query).await?;
+ (
+ result.rows_affected(),
+ LastInsertId::Sqlite(result.last_insert_rowid()),
+ )
+ }
+ #[cfg(feature = "mysql")]
+ DbPool::MySql(pool) => {
+ let mut query = sqlx::query(&_query);
+ for value in _values {
+ if value.is_null() {
+ query = query.bind(None::);
+ } else if value.is_string() {
+ query = query.bind(value.as_str().unwrap().to_owned())
+ } else if let Some(number) = value.as_number() {
+ query = query.bind(number.as_f64().unwrap_or_default())
+ } else {
+ query = query.bind(value);
+ }
+ }
+ let result = pool.execute(query).await?;
+ (
+ result.rows_affected(),
+ LastInsertId::MySql(result.last_insert_id()),
+ )
+ }
+ #[cfg(feature = "postgres")]
+ DbPool::Postgres(pool) => {
+ let mut query = sqlx::query(&_query);
+ for value in _values {
+ if value.is_null() {
+ query = query.bind(None::);
+ } else if value.is_string() {
+ query = query.bind(value.as_str().unwrap().to_owned())
+ } else if let Some(number) = value.as_number() {
+ query = query.bind(number.as_f64().unwrap_or_default())
+ } else {
+ query = query.bind(value);
+ }
+ }
+ let result = pool.execute(query).await?;
+ (result.rows_affected(), LastInsertId::Postgres(()))
+ }
+ #[cfg(not(any(feature = "sqlite", feature = "mysql", feature = "postgres")))]
+ DbPool::None => (0, LastInsertId::None),
+ })
+ }
+
+ pub(crate) async fn select(
+ &self,
+ _query: String,
+ _values: Vec,
+ ) -> Result>, crate::Error> {
+ Ok(match self {
+ #[cfg(feature = "sqlite")]
+ DbPool::Sqlite(pool) => {
+ let mut query = sqlx::query(&_query);
+ for value in _values {
+ if value.is_null() {
+ query = query.bind(None::);
+ } else if value.is_string() {
+ query = query.bind(value.as_str().unwrap().to_owned())
+ } else if let Some(number) = value.as_number() {
+ query = query.bind(number.as_f64().unwrap_or_default())
+ } else {
+ query = query.bind(value);
+ }
+ }
+ let rows = pool.fetch_all(query).await?;
+ let mut values = Vec::new();
+ for row in rows {
+ let mut value = IndexMap::default();
+ for (i, column) in row.columns().iter().enumerate() {
+ let v = row.try_get_raw(i)?;
+
+ let v = crate::decode::sqlite::to_json(v)?;
+
+ value.insert(column.name().to_string(), v);
+ }
+
+ values.push(value);
+ }
+ values
+ }
+ #[cfg(feature = "mysql")]
+ DbPool::MySql(pool) => {
+ let mut query = sqlx::query(&_query);
+ for value in _values {
+ if value.is_null() {
+ query = query.bind(None::);
+ } else if value.is_string() {
+ query = query.bind(value.as_str().unwrap().to_owned())
+ } else if let Some(number) = value.as_number() {
+ query = query.bind(number.as_f64().unwrap_or_default())
+ } else {
+ query = query.bind(value);
+ }
+ }
+ let rows = pool.fetch_all(query).await?;
+ let mut values = Vec::new();
+ for row in rows {
+ let mut value = IndexMap::default();
+ for (i, column) in row.columns().iter().enumerate() {
+ let v = row.try_get_raw(i)?;
+
+ let v = crate::decode::mysql::to_json(v)?;
+
+ value.insert(column.name().to_string(), v);
+ }
+
+ values.push(value);
+ }
+ values
+ }
+ #[cfg(feature = "postgres")]
+ DbPool::Postgres(pool) => {
+ let mut query = sqlx::query(&_query);
+ for value in _values {
+ if value.is_null() {
+ query = query.bind(None::);
+ } else if value.is_string() {
+ query = query.bind(value.as_str().unwrap().to_owned())
+ } else if let Some(number) = value.as_number() {
+ query = query.bind(number.as_f64().unwrap_or_default())
+ } else {
+ query = query.bind(value);
+ }
+ }
+ let rows = pool.fetch_all(query).await?;
+ let mut values = Vec::new();
+ for row in rows {
+ let mut value = IndexMap::default();
+ for (i, column) in row.columns().iter().enumerate() {
+ let v = row.try_get_raw(i)?;
+
+ let v = crate::decode::postgres::to_json(v)?;
+
+ value.insert(column.name().to_string(), v);
+ }
+
+ values.push(value);
+ }
+ values
+ }
+ #[cfg(not(any(feature = "sqlite", feature = "mysql", feature = "postgres")))]
+ DbPool::None => Vec::new(),
+ })
+ }
+}
+
+#[cfg(feature = "sqlite")]
+/// Maps the user supplied DB connection string to a connection string
+/// with a fully qualified file path to the App's designed "app_path"
+fn path_mapper(mut app_path: std::path::PathBuf, connection_string: &str) -> String {
+ app_path.push(
+ connection_string
+ .split_once(':')
+ .expect("Couldn't parse the connection string for DB!")
+ .1,
+ );
+
+ format!(
+ "sqlite:{}",
+ app_path
+ .to_str()
+ .expect("Problem creating fully qualified path to Database file!")
+ )
+}
From 2f7e32b5e07454d6c0cf3ab03f8af8da74c4a8a7 Mon Sep 17 00:00:00 2001
From: Jacob Bolda
Date: Tue, 1 Oct 2024 08:15:22 -0500
Subject: [PATCH 09/40] [positioner] handleIconState in JS (#1822)
* [positioner] handleIconState in JS
* update readme
* fix change file version
* fixes
---------
Co-authored-by: Lucas Nogueira
---
.changes/positioner-v2-handleIconState.md | 6 ++++
plugins/barcode-scanner/api-iife.js | 2 +-
plugins/positioner/README.md | 35 +++++++++++++++++++
plugins/positioner/api-iife.js | 2 +-
plugins/positioner/guest-js/index.ts | 12 +++++++
.../commands/set_tray_icon_state.toml | 8 +++++
.../permissions/autogenerated/reference.md | 14 ++++++++
plugins/positioner/permissions/default.toml | 2 +-
.../permissions/schemas/schema.json | 5 +++
plugins/positioner/src/lib.rs | 21 +++++++++--
plugins/window-state/api-iife.js | 2 +-
11 files changed, 103 insertions(+), 6 deletions(-)
create mode 100644 .changes/positioner-v2-handleIconState.md
create mode 100644 plugins/positioner/permissions/autogenerated/commands/set_tray_icon_state.toml
diff --git a/.changes/positioner-v2-handleIconState.md b/.changes/positioner-v2-handleIconState.md
new file mode 100644
index 00000000..e43c84d8
--- /dev/null
+++ b/.changes/positioner-v2-handleIconState.md
@@ -0,0 +1,6 @@
+---
+"positioner": patch
+"positioner-js": patch
+---
+
+`handleIconState` function for use in JavaScript event handlers. This allows one to update the TrayIcon state through JavaScript and fully create and handle the TrayIcon without requiring Rust (and the side-effect of creating a TrayIcon).
diff --git a/plugins/barcode-scanner/api-iife.js b/plugins/barcode-scanner/api-iife.js
index cd6f1193..620b59a7 100644
--- a/plugins/barcode-scanner/api-iife.js
+++ b/plugins/barcode-scanner/api-iife.js
@@ -1 +1 @@
-if("__TAURI__"in window){var __TAURI_PLUGIN_BARCODE_SCANNER__=function(n){"use strict";async function e(n,e={},r){return window.__TAURI_INTERNALS__.invoke(n,e,r)}var r;return"function"==typeof SuppressedError&&SuppressedError,n.Format=void 0,(r=n.Format||(n.Format={})).QRCode="QR_CODE",r.UPC_A="UPC_A",r.UPC_E="UPC_E",r.EAN8="EAN_8",r.EAN13="EAN_13",r.Code39="CODE_39",r.Code93="CODE_93",r.Code128="CODE_128",r.Codabar="CODABAR",r.ITF="ITF",r.Aztec="AZTEC",r.DataMatrix="DATA_MATRIX",r.PDF417="PDF_417",n.cancel=async function(){await e("plugin:barcode-scanner|cancel")},n.checkPermissions=async function(){return await async function(n){return e(`plugin:${n}|request_permissions`)}("barcode-scanner").then((n=>n.camera))},n.openAppSettings=async function(){await e("plugin:barcode-scanner|open_app_settings")},n.requestPermissions=async function(){return await async function(n){return e(`plugin:${n}|check_permissions`)}("barcode-scanner").then((n=>n.camera))},n.scan=async function(n){return await e("plugin:barcode-scanner|scan",{...n})},n}({});Object.defineProperty(window.__TAURI__,"barcodeScanner",{value:__TAURI_PLUGIN_BARCODE_SCANNER__})}
+if("__TAURI__"in window){var __TAURI_PLUGIN_BARCODE_SCANNER__=function(n){"use strict";async function e(n,e={},r){return window.__TAURI_INTERNALS__.invoke(n,e,r)}var r;return"function"==typeof SuppressedError&&SuppressedError,n.Format=void 0,(r=n.Format||(n.Format={})).QRCode="QR_CODE",r.UPC_A="UPC_A",r.UPC_E="UPC_E",r.EAN8="EAN_8",r.EAN13="EAN_13",r.Code39="CODE_39",r.Code93="CODE_93",r.Code128="CODE_128",r.Codabar="CODABAR",r.ITF="ITF",r.Aztec="AZTEC",r.DataMatrix="DATA_MATRIX",r.PDF417="PDF_417",n.cancel=async function(){await e("plugin:barcode-scanner|cancel")},n.checkPermissions=async function(){return await async function(n){return e(`plugin:${n}|check_permissions`)}("barcode-scanner").then((n=>n.camera))},n.openAppSettings=async function(){await e("plugin:barcode-scanner|open_app_settings")},n.requestPermissions=async function(){return await async function(n){return e(`plugin:${n}|request_permissions`)}("barcode-scanner").then((n=>n.camera))},n.scan=async function(n){return await e("plugin:barcode-scanner|scan",{...n})},n}({});Object.defineProperty(window.__TAURI__,"barcodeScanner",{value:__TAURI_PLUGIN_BARCODE_SCANNER__})}
diff --git a/plugins/positioner/README.md b/plugins/positioner/README.md
index db9bab5a..3c8ac1d9 100644
--- a/plugins/positioner/README.md
+++ b/plugins/positioner/README.md
@@ -58,6 +58,7 @@ fn main() {
.plugin(tauri_plugin_positioner::init())
// This is required to get tray-relative positions to work
.setup(|app| {
+ // note that this will create a new TrayIcon
TrayIconBuilder::new()
.on_tray_icon_event(|app, event| {
tauri_plugin_positioner::on_tray_event(app.app_handle(), &event);
@@ -70,6 +71,40 @@ fn main() {
}
```
+Alternatively, you may handle the tray events through JavaScript. Register the plugin as previously noted.
+
+```rust
+fn main() {
+ tauri::Builder::default()
+ .plugin(tauri_plugin_positioner::init())
+ .run(tauri::generate_context!())
+ .expect("error while running tauri application");
+}
+```
+
+And in JavaScript, the `action` passed to the TrayIcon should include the handler.
+
+```javascript
+import {
+ moveWindow,
+ Position,
+ handleIconState,
+} from "@tauri-apps/plugin-positioner";
+
+const action = async (event: TrayIconEvent) => {
+ // add the handle in the action to update the state
+ await handleIconState(event);
+ if ("click" in event) {
+ const { click } = event;
+ // note this option requires enabling the `tray-icon`
+ // feature in the Cargo.toml
+ await moveWindow(Position.TrayLeft);
+ }
+};
+
+const tray = await TrayIcon.new({ id: "main", action });
+```
+
Afterwards all the plugin's APIs are available through the JavaScript guest bindings:
```javascript
diff --git a/plugins/positioner/api-iife.js b/plugins/positioner/api-iife.js
index d0c8ba69..5504ebe8 100644
--- a/plugins/positioner/api-iife.js
+++ b/plugins/positioner/api-iife.js
@@ -1 +1 @@
-if("__TAURI__"in window){var __TAURI_PLUGIN_POSITIONER__=function(t){"use strict";var o;return"function"==typeof SuppressedError&&SuppressedError,t.Position=void 0,(o=t.Position||(t.Position={}))[o.TopLeft=0]="TopLeft",o[o.TopRight=1]="TopRight",o[o.BottomLeft=2]="BottomLeft",o[o.BottomRight=3]="BottomRight",o[o.TopCenter=4]="TopCenter",o[o.BottomCenter=5]="BottomCenter",o[o.LeftCenter=6]="LeftCenter",o[o.RightCenter=7]="RightCenter",o[o.Center=8]="Center",o[o.TrayLeft=9]="TrayLeft",o[o.TrayBottomLeft=10]="TrayBottomLeft",o[o.TrayRight=11]="TrayRight",o[o.TrayBottomRight=12]="TrayBottomRight",o[o.TrayCenter=13]="TrayCenter",o[o.TrayBottomCenter=14]="TrayBottomCenter",t.moveWindow=async function(t){await async function(t,o={},e){return window.__TAURI_INTERNALS__.invoke(t,o,e)}("plugin:positioner|move_window",{position:t})},t}({});Object.defineProperty(window.__TAURI__,"positioner",{value:__TAURI_PLUGIN_POSITIONER__})}
+if("__TAURI__"in window){var __TAURI_PLUGIN_POSITIONER__=function(t){"use strict";async function o(t,o={},e){return window.__TAURI_INTERNALS__.invoke(t,o,e)}var e;return"function"==typeof SuppressedError&&SuppressedError,t.Position=void 0,(e=t.Position||(t.Position={}))[e.TopLeft=0]="TopLeft",e[e.TopRight=1]="TopRight",e[e.BottomLeft=2]="BottomLeft",e[e.BottomRight=3]="BottomRight",e[e.TopCenter=4]="TopCenter",e[e.BottomCenter=5]="BottomCenter",e[e.LeftCenter=6]="LeftCenter",e[e.RightCenter=7]="RightCenter",e[e.Center=8]="Center",e[e.TrayLeft=9]="TrayLeft",e[e.TrayBottomLeft=10]="TrayBottomLeft",e[e.TrayRight=11]="TrayRight",e[e.TrayBottomRight=12]="TrayBottomRight",e[e.TrayCenter=13]="TrayCenter",e[e.TrayBottomCenter=14]="TrayBottomCenter",t.handleIconState=async function(t){await async function(t){await o("plugin:positioner|set_tray_icon_state",{position:t.position,size:t.size})}(t.rect)},t.moveWindow=async function(t){await o("plugin:positioner|move_window",{position:t})},t}({});Object.defineProperty(window.__TAURI__,"positioner",{value:__TAURI_PLUGIN_POSITIONER__})}
diff --git a/plugins/positioner/guest-js/index.ts b/plugins/positioner/guest-js/index.ts
index 449e3298..319f80db 100644
--- a/plugins/positioner/guest-js/index.ts
+++ b/plugins/positioner/guest-js/index.ts
@@ -4,6 +4,7 @@
// SPDX-License-Identifier: MIT
import { invoke } from '@tauri-apps/api/core'
+import type { TrayIconEvent } from '@tauri-apps/api/tray'
/**
* Well known window positions.
@@ -37,3 +38,14 @@ export async function moveWindow(to: Position): Promise {
position: to
})
}
+
+export async function handleIconState(event: TrayIconEvent): Promise {
+ await invokeSetTrayIconState(event.rect)
+}
+
+async function invokeSetTrayIconState(rect: TrayIconEvent['rect']) {
+ await invoke('plugin:positioner|set_tray_icon_state', {
+ position: rect.position,
+ size: rect.size
+ })
+}
diff --git a/plugins/positioner/permissions/autogenerated/commands/set_tray_icon_state.toml b/plugins/positioner/permissions/autogenerated/commands/set_tray_icon_state.toml
new file mode 100644
index 00000000..dcc8fa56
--- /dev/null
+++ b/plugins/positioner/permissions/autogenerated/commands/set_tray_icon_state.toml
@@ -0,0 +1,8 @@
+# Automatically generated - DO NOT EDIT!
+
+"$schema" = "../../schemas/schema.json"
+
+[[permission]]
+identifier = "allow-set-tray-icon-state"
+description = "Enables the set_tray_icon_state to handle events and set the TrayIcon state."
+commands.allow = ["set_tray_icon_state"]
diff --git a/plugins/positioner/permissions/autogenerated/reference.md b/plugins/positioner/permissions/autogenerated/reference.md
index f2a92c66..324e4e56 100644
--- a/plugins/positioner/permissions/autogenerated/reference.md
+++ b/plugins/positioner/permissions/autogenerated/reference.md
@@ -3,6 +3,7 @@
Allows the move_window command
- `allow-move-window`
+- `set-tray-icon-state`
## Permission Table
@@ -36,6 +37,19 @@ Enables the move_window command without any pre-configured scope.
Denies the move_window command without any pre-configured scope.
+
+
+
+
+
+
+`positioner:allow-set-tray-icon-state`
+
+
+
+
+Enables the set_tray_icon_state to handle events and set the TrayIcon state.
+
diff --git a/plugins/positioner/permissions/default.toml b/plugins/positioner/permissions/default.toml
index b0b3b3e2..8492711c 100644
--- a/plugins/positioner/permissions/default.toml
+++ b/plugins/positioner/permissions/default.toml
@@ -1,4 +1,4 @@
"$schema" = "schemas/schema.json"
[default]
description = "Allows the move_window command"
-permissions = ["allow-move-window"]
+permissions = ["allow-move-window", "set-tray-icon-state"]
diff --git a/plugins/positioner/permissions/schemas/schema.json b/plugins/positioner/permissions/schemas/schema.json
index f5514887..5bddddde 100644
--- a/plugins/positioner/permissions/schemas/schema.json
+++ b/plugins/positioner/permissions/schemas/schema.json
@@ -304,6 +304,11 @@
"type": "string",
"const": "deny-move-window"
},
+ {
+ "description": "Enables the set_tray_icon_state to handle events and set the TrayIcon state.",
+ "type": "string",
+ "const": "allow-set-tray-icon-state"
+ },
{
"description": "Allows the move_window command",
"type": "string",
diff --git a/plugins/positioner/src/lib.rs b/plugins/positioner/src/lib.rs
index 96c243e5..81bfaef8 100644
--- a/plugins/positioner/src/lib.rs
+++ b/plugins/positioner/src/lib.rs
@@ -63,10 +63,27 @@ async fn move_window(window: tauri::Window, position: Position) -
window.move_window(position)
}
+#[cfg(feature = "tray-icon")]
+#[tauri::command]
+fn set_tray_icon_state(
+ app: AppHandle,
+ position: PhysicalPosition,
+ size: PhysicalSize,
+) {
+ app.state::()
+ .0
+ .lock()
+ .unwrap()
+ .replace((position, size));
+}
+
/// The Tauri plugin that exposes [`WindowExt::move_window`] to the webview.
pub fn init() -> TauriPlugin {
- let plugin =
- plugin::Builder::new("positioner").invoke_handler(tauri::generate_handler![move_window]);
+ let plugin = plugin::Builder::new("positioner").invoke_handler(tauri::generate_handler![
+ move_window,
+ #[cfg(feature = "tray-icon")]
+ set_tray_icon_state
+ ]);
#[cfg(feature = "tray-icon")]
let plugin = plugin.setup(|app_handle, _api| {
diff --git a/plugins/window-state/api-iife.js b/plugins/window-state/api-iife.js
index 7f36809b..de6e9613 100644
--- a/plugins/window-state/api-iife.js
+++ b/plugins/window-state/api-iife.js
@@ -1 +1 @@
-if("__TAURI__"in window){var __TAURI_PLUGIN_WINDOW_STATE__=function(e){"use strict";var t,i,n,a;function l(e,t=!1){return window.__TAURI_INTERNALS__.transformCallback(e,t)}async function s(e,t={},i){return window.__TAURI_INTERNALS__.invoke(e,t,i)}"function"==typeof SuppressedError&&SuppressedError;class r{get rid(){return function(e,t,i,n){if("a"===i&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===i?n:"a"===i?n.call(e):n?n.value:t.get(e)}(this,t,"f")}constructor(e){t.set(this,void 0),function(e,t,i,n,a){if("function"==typeof t?e!==t||!a:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");t.set(e,i)}(this,t,e)}async close(){return s("plugin:resources|close",{rid:this.rid})}}t=new WeakMap;class o{constructor(e,t){this.type="Logical",this.width=e,this.height=t}}class u{constructor(e,t){this.type="Physical",this.width=e,this.height=t}toLogical(e){return new o(this.width/e,this.height/e)}}class c{constructor(e,t){this.type="Logical",this.x=e,this.y=t}}class d{constructor(e,t){this.type="Physical",this.x=e,this.y=t}toLogical(e){return new c(this.x/e,this.y/e)}}async function w(e,t){await s("plugin:event|unlisten",{event:e,eventId:t})}async function h(e,t,i){var n;const a="string"==typeof(null==i?void 0:i.target)?{kind:"AnyLabel",label:i.target}:null!==(n=null==i?void 0:i.target)&&void 0!==n?n:{kind:"Any"};return s("plugin:event|listen",{event:e,target:a,handler:l(t)}).then((t=>async()=>w(e,t)))}!function(e){e.WINDOW_RESIZED="tauri://resize",e.WINDOW_MOVED="tauri://move",e.WINDOW_CLOSE_REQUESTED="tauri://close-requested",e.WINDOW_DESTROYED="tauri://destroyed",e.WINDOW_FOCUS="tauri://focus",e.WINDOW_BLUR="tauri://blur",e.WINDOW_SCALE_FACTOR_CHANGED="tauri://scale-change",e.WINDOW_THEME_CHANGED="tauri://theme-changed",e.WINDOW_CREATED="tauri://window-created",e.WEBVIEW_CREATED="tauri://webview-created",e.DRAG_ENTER="tauri://drag-enter",e.DRAG_OVER="tauri://drag-over",e.DRAG_DROP="tauri://drag-drop",e.DRAG_LEAVE="tauri://drag-leave"}(i||(i={}));class b extends r{constructor(e){super(e)}static async new(e,t,i){return s("plugin:image|new",{rgba:p(e),width:t,height:i}).then((e=>new b(e)))}static async fromBytes(e){return s("plugin:image|from_bytes",{bytes:p(e)}).then((e=>new b(e)))}static async fromPath(e){return s("plugin:image|from_path",{path:e}).then((e=>new b(e)))}async rgba(){return s("plugin:image|rgba",{rid:this.rid}).then((e=>new Uint8Array(e)))}async size(){return s("plugin:image|size",{rid:this.rid})}}function p(e){return null==e?null:"string"==typeof e?e:e instanceof b?e.rid:e}!function(e){e[e.Critical=1]="Critical",e[e.Informational=2]="Informational"}(n||(n={}));class y{constructor(e){this._preventDefault=!1,this.event=e.event,this.id=e.id}preventDefault(){this._preventDefault=!0}isPreventDefault(){return this._preventDefault}}function g(){return new v(window.__TAURI_INTERNALS__.metadata.currentWindow.label,{skip:!0})}async function _(){return s("plugin:window|get_all_windows").then((e=>e.map((e=>new v(e,{skip:!0})))))}!function(e){e.None="none",e.Normal="normal",e.Indeterminate="indeterminate",e.Paused="paused",e.Error="error"}(a||(a={}));const m=["tauri://created","tauri://error"];class v{constructor(e,t={}){var i;this.label=e,this.listeners=Object.create(null),(null==t?void 0:t.skip)||s("plugin:window|create",{options:{...t,parent:"string"==typeof t.parent?t.parent:null===(i=t.parent)||void 0===i?void 0:i.label,label:e}}).then((async()=>this.emit("tauri://created"))).catch((async e=>this.emit("tauri://error",e)))}static async getByLabel(e){var t;return null!==(t=(await _()).find((t=>t.label===e)))&&void 0!==t?t:null}static getCurrent(){return g()}static async getAll(){return _()}static async getFocusedWindow(){for(const e of await _())if(await e.isFocused())return e;return null}async listen(e,t){return this._handleTauriEvent(e,t)?()=>{const i=this.listeners[e];i.splice(i.indexOf(t),1)}:h(e,t,{target:{kind:"Window",label:this.label}})}async once(e,t){return this._handleTauriEvent(e,t)?()=>{const i=this.listeners[e];i.splice(i.indexOf(t),1)}:async function(e,t,i){return h(e,(i=>{w(e,i.id),t(i)}),i)}(e,t,{target:{kind:"Window",label:this.label}})}async emit(e,t){if(!m.includes(e))return async function(e,t){await s("plugin:event|emit",{event:e,payload:t})}(e,t);for(const i of this.listeners[e]||[])i({event:e,id:-1,payload:t})}async emitTo(e,t,i){if(!m.includes(t))return async function(e,t,i){const n="string"==typeof e?{kind:"AnyLabel",label:e}:e;await s("plugin:event|emit_to",{target:n,event:t,payload:i})}(e,t,i);for(const e of this.listeners[t]||[])e({event:t,id:-1,payload:i})}_handleTauriEvent(e,t){return!!m.includes(e)&&(e in this.listeners?this.listeners[e].push(t):this.listeners[e]=[t],!0)}async scaleFactor(){return s("plugin:window|scale_factor",{label:this.label})}async innerPosition(){return s("plugin:window|inner_position",{label:this.label}).then((({x:e,y:t})=>new d(e,t)))}async outerPosition(){return s("plugin:window|outer_position",{label:this.label}).then((({x:e,y:t})=>new d(e,t)))}async innerSize(){return s("plugin:window|inner_size",{label:this.label}).then((({width:e,height:t})=>new u(e,t)))}async outerSize(){return s("plugin:window|outer_size",{label:this.label}).then((({width:e,height:t})=>new u(e,t)))}async isFullscreen(){return s("plugin:window|is_fullscreen",{label:this.label})}async isMinimized(){return s("plugin:window|is_minimized",{label:this.label})}async isMaximized(){return s("plugin:window|is_maximized",{label:this.label})}async isFocused(){return s("plugin:window|is_focused",{label:this.label})}async isDecorated(){return s("plugin:window|is_decorated",{label:this.label})}async isResizable(){return s("plugin:window|is_resizable",{label:this.label})}async isMaximizable(){return s("plugin:window|is_maximizable",{label:this.label})}async isMinimizable(){return s("plugin:window|is_minimizable",{label:this.label})}async isClosable(){return s("plugin:window|is_closable",{label:this.label})}async isVisible(){return s("plugin:window|is_visible",{label:this.label})}async title(){return s("plugin:window|title",{label:this.label})}async theme(){return s("plugin:window|theme",{label:this.label})}async center(){return s("plugin:window|center",{label:this.label})}async requestUserAttention(e){let t=null;return e&&(t=e===n.Critical?{type:"Critical"}:{type:"Informational"}),s("plugin:window|request_user_attention",{label:this.label,value:t})}async setResizable(e){return s("plugin:window|set_resizable",{label:this.label,value:e})}async setMaximizable(e){return s("plugin:window|set_maximizable",{label:this.label,value:e})}async setMinimizable(e){return s("plugin:window|set_minimizable",{label:this.label,value:e})}async setClosable(e){return s("plugin:window|set_closable",{label:this.label,value:e})}async setTitle(e){return s("plugin:window|set_title",{label:this.label,value:e})}async maximize(){return s("plugin:window|maximize",{label:this.label})}async unmaximize(){return s("plugin:window|unmaximize",{label:this.label})}async toggleMaximize(){return s("plugin:window|toggle_maximize",{label:this.label})}async minimize(){return s("plugin:window|minimize",{label:this.label})}async unminimize(){return s("plugin:window|unminimize",{label:this.label})}async show(){return s("plugin:window|show",{label:this.label})}async hide(){return s("plugin:window|hide",{label:this.label})}async close(){return s("plugin:window|close",{label:this.label})}async destroy(){return s("plugin:window|destroy",{label:this.label})}async setDecorations(e){return s("plugin:window|set_decorations",{label:this.label,value:e})}async setShadow(e){return s("plugin:window|set_shadow",{label:this.label,value:e})}async setEffects(e){return s("plugin:window|set_effects",{label:this.label,value:e})}async clearEffects(){return s("plugin:window|set_effects",{label:this.label,value:null})}async setAlwaysOnTop(e){return s("plugin:window|set_always_on_top",{label:this.label,value:e})}async setAlwaysOnBottom(e){return s("plugin:window|set_always_on_bottom",{label:this.label,value:e})}async setContentProtected(e){return s("plugin:window|set_content_protected",{label:this.label,value:e})}async setSize(e){if(!e||"Logical"!==e.type&&"Physical"!==e.type)throw new Error("the `size` argument must be either a LogicalSize or a PhysicalSize instance");const t={};return t[`${e.type}`]={width:e.width,height:e.height},s("plugin:window|set_size",{label:this.label,value:t})}async setMinSize(e){if(e&&"Logical"!==e.type&&"Physical"!==e.type)throw new Error("the `size` argument must be either a LogicalSize or a PhysicalSize instance");let t=null;return e&&(t={},t[`${e.type}`]={width:e.width,height:e.height}),s("plugin:window|set_min_size",{label:this.label,value:t})}async setMaxSize(e){if(e&&"Logical"!==e.type&&"Physical"!==e.type)throw new Error("the `size` argument must be either a LogicalSize or a PhysicalSize instance");let t=null;return e&&(t={},t[`${e.type}`]={width:e.width,height:e.height}),s("plugin:window|set_max_size",{label:this.label,value:t})}async setSizeConstraints(e){function t(e){return e?{Logical:e}:null}return s("plugin:window|set_size_constraints",{label:this.label,value:{minWidth:t(null==e?void 0:e.minWidth),minHeight:t(null==e?void 0:e.minHeight),maxWidth:t(null==e?void 0:e.maxWidth),maxHeight:t(null==e?void 0:e.maxHeight)}})}async setPosition(e){if(!e||"Logical"!==e.type&&"Physical"!==e.type)throw new Error("the `position` argument must be either a LogicalPosition or a PhysicalPosition instance");const t={};return t[`${e.type}`]={x:e.x,y:e.y},s("plugin:window|set_position",{label:this.label,value:t})}async setFullscreen(e){return s("plugin:window|set_fullscreen",{label:this.label,value:e})}async setFocus(){return s("plugin:window|set_focus",{label:this.label})}async setIcon(e){return s("plugin:window|set_icon",{label:this.label,value:p(e)})}async setSkipTaskbar(e){return s("plugin:window|set_skip_taskbar",{label:this.label,value:e})}async setCursorGrab(e){return s("plugin:window|set_cursor_grab",{label:this.label,value:e})}async setCursorVisible(e){return s("plugin:window|set_cursor_visible",{label:this.label,value:e})}async setCursorIcon(e){return s("plugin:window|set_cursor_icon",{label:this.label,value:e})}async setCursorPosition(e){if(!e||"Logical"!==e.type&&"Physical"!==e.type)throw new Error("the `position` argument must be either a LogicalPosition or a PhysicalPosition instance");const t={};return t[`${e.type}`]={x:e.x,y:e.y},s("plugin:window|set_cursor_position",{label:this.label,value:t})}async setIgnoreCursorEvents(e){return s("plugin:window|set_ignore_cursor_events",{label:this.label,value:e})}async startDragging(){return s("plugin:window|start_dragging",{label:this.label})}async startResizeDragging(e){return s("plugin:window|start_resize_dragging",{label:this.label,value:e})}async setProgressBar(e){return s("plugin:window|set_progress_bar",{label:this.label,value:e})}async setVisibleOnAllWorkspaces(e){return s("plugin:window|set_visible_on_all_workspaces",{label:this.label,value:e})}async setTitleBarStyle(e){return s("plugin:window|set_title_bar_style",{label:this.label,value:e})}async onResized(e){return this.listen(i.WINDOW_RESIZED,(t=>{var i;t.payload=(i=t.payload,new u(i.width,i.height)),e(t)}))}async onMoved(e){return this.listen(i.WINDOW_MOVED,(t=>{t.payload=I(t.payload),e(t)}))}async onCloseRequested(e){return this.listen(i.WINDOW_CLOSE_REQUESTED,(async t=>{const i=new y(t);await e(i),i.isPreventDefault()||await this.destroy()}))}async onDragDropEvent(e){const t=await this.listen(i.DRAG_ENTER,(t=>{e({...t,payload:{type:"enter",paths:t.payload.paths,position:I(t.payload.position)}})})),n=await this.listen(i.DRAG_OVER,(t=>{e({...t,payload:{type:"over",position:I(t.payload.position)}})})),a=await this.listen(i.DRAG_DROP,(t=>{e({...t,payload:{type:"drop",paths:t.payload.paths,position:I(t.payload.position)}})})),l=await this.listen(i.DRAG_LEAVE,(t=>{e({...t,payload:{type:"leave"}})}));return()=>{t(),a(),n(),l()}}async onFocusChanged(e){const t=await this.listen(i.WINDOW_FOCUS,(t=>{e({...t,payload:!0})})),n=await this.listen(i.WINDOW_BLUR,(t=>{e({...t,payload:!1})}));return()=>{t(),n()}}async onScaleChanged(e){return this.listen(i.WINDOW_SCALE_FACTOR_CHANGED,e)}async onThemeChanged(e){return this.listen(i.WINDOW_THEME_CHANGED,e)}}var f,E,D;function I(e){return new d(e.x,e.y)}async function S(e,t){await s("plugin:window-state|restore_state",{label:e,flags:t})}return function(e){e.AppearanceBased="appearanceBased",e.Light="light",e.Dark="dark",e.MediumLight="mediumLight",e.UltraDark="ultraDark",e.Titlebar="titlebar",e.Selection="selection",e.Menu="menu",e.Popover="popover",e.Sidebar="sidebar",e.HeaderView="headerView",e.Sheet="sheet",e.WindowBackground="windowBackground",e.HudWindow="hudWindow",e.FullScreenUI="fullScreenUI",e.Tooltip="tooltip",e.ContentBackground="contentBackground",e.UnderWindowBackground="underWindowBackground",e.UnderPageBackground="underPageBackground",e.Mica="mica",e.Blur="blur",e.Acrylic="acrylic",e.Tabbed="tabbed",e.TabbedDark="tabbedDark",e.TabbedLight="tabbedLight"}(f||(f={})),function(e){e.FollowsWindowActiveState="followsWindowActiveState",e.Active="active",e.Inactive="inactive"}(E||(E={})),e.StateFlags=void 0,(D=e.StateFlags||(e.StateFlags={}))[D.SIZE=1]="SIZE",D[D.POSITION=2]="POSITION",D[D.MAXIMIZED=4]="MAXIMIZED",D[D.VISIBLE=8]="VISIBLE",D[D.DECORATIONS=16]="DECORATIONS",D[D.FULLSCREEN=32]="FULLSCREEN",D[D.ALL=63]="ALL",e.filename=async function(){return await s("plugin:window-state|filename")},e.restoreState=S,e.restoreStateCurrent=async function(e){await S(g().label,e)},e.saveWindowState=async function(e){await s("plugin:window-state|save_window_state",{flags:e})},e}({});Object.defineProperty(window.__TAURI__,"windowState",{value:__TAURI_PLUGIN_WINDOW_STATE__})}
+if("__TAURI__"in window){var __TAURI_PLUGIN_WINDOW_STATE__=function(e){"use strict";var t,i,n,a;function l(e,t=!1){return window.__TAURI_INTERNALS__.transformCallback(e,t)}async function s(e,t={},i){return window.__TAURI_INTERNALS__.invoke(e,t,i)}"function"==typeof SuppressedError&&SuppressedError;class r{get rid(){return function(e,t,i,n){if("a"===i&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===i?n:"a"===i?n.call(e):n?n.value:t.get(e)}(this,t,"f")}constructor(e){t.set(this,void 0),function(e,t,i,n,a){if("function"==typeof t?e!==t||!a:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");t.set(e,i)}(this,t,e)}async close(){return s("plugin:resources|close",{rid:this.rid})}}t=new WeakMap;class o{constructor(e,t){this.type="Logical",this.width=e,this.height=t}toPhysical(e){return new u(this.width*e,this.height*e)}}class u{constructor(e,t){this.type="Physical",this.width=e,this.height=t}toLogical(e){return new o(this.width/e,this.height/e)}}class c{constructor(e,t){this.type="Logical",this.x=e,this.y=t}toPhysical(e){return new d(this.x*e,this.x*e)}}class d{constructor(e,t){this.type="Physical",this.x=e,this.y=t}toLogical(e){return new c(this.x/e,this.y/e)}}async function h(e,t){await s("plugin:event|unlisten",{event:e,eventId:t})}async function w(e,t,i){var n;const a="string"==typeof(null==i?void 0:i.target)?{kind:"AnyLabel",label:i.target}:null!==(n=null==i?void 0:i.target)&&void 0!==n?n:{kind:"Any"};return s("plugin:event|listen",{event:e,target:a,handler:l(t)}).then((t=>async()=>h(e,t)))}!function(e){e.WINDOW_RESIZED="tauri://resize",e.WINDOW_MOVED="tauri://move",e.WINDOW_CLOSE_REQUESTED="tauri://close-requested",e.WINDOW_DESTROYED="tauri://destroyed",e.WINDOW_FOCUS="tauri://focus",e.WINDOW_BLUR="tauri://blur",e.WINDOW_SCALE_FACTOR_CHANGED="tauri://scale-change",e.WINDOW_THEME_CHANGED="tauri://theme-changed",e.WINDOW_CREATED="tauri://window-created",e.WEBVIEW_CREATED="tauri://webview-created",e.DRAG_ENTER="tauri://drag-enter",e.DRAG_OVER="tauri://drag-over",e.DRAG_DROP="tauri://drag-drop",e.DRAG_LEAVE="tauri://drag-leave"}(i||(i={}));class b extends r{constructor(e){super(e)}static async new(e,t,i){return s("plugin:image|new",{rgba:y(e),width:t,height:i}).then((e=>new b(e)))}static async fromBytes(e){return s("plugin:image|from_bytes",{bytes:y(e)}).then((e=>new b(e)))}static async fromPath(e){return s("plugin:image|from_path",{path:e}).then((e=>new b(e)))}async rgba(){return s("plugin:image|rgba",{rid:this.rid}).then((e=>new Uint8Array(e)))}async size(){return s("plugin:image|size",{rid:this.rid})}}function y(e){return null==e?null:"string"==typeof e?e:e instanceof b?e.rid:e}!function(e){e[e.Critical=1]="Critical",e[e.Informational=2]="Informational"}(n||(n={}));class p{constructor(e){this._preventDefault=!1,this.event=e.event,this.id=e.id}preventDefault(){this._preventDefault=!0}isPreventDefault(){return this._preventDefault}}function g(){return new v(window.__TAURI_INTERNALS__.metadata.currentWindow.label,{skip:!0})}async function _(){return s("plugin:window|get_all_windows").then((e=>e.map((e=>new v(e,{skip:!0})))))}!function(e){e.None="none",e.Normal="normal",e.Indeterminate="indeterminate",e.Paused="paused",e.Error="error"}(a||(a={}));const m=["tauri://created","tauri://error"];class v{constructor(e,t={}){var i;this.label=e,this.listeners=Object.create(null),(null==t?void 0:t.skip)||s("plugin:window|create",{options:{...t,parent:"string"==typeof t.parent?t.parent:null===(i=t.parent)||void 0===i?void 0:i.label,label:e}}).then((async()=>this.emit("tauri://created"))).catch((async e=>this.emit("tauri://error",e)))}static async getByLabel(e){var t;return null!==(t=(await _()).find((t=>t.label===e)))&&void 0!==t?t:null}static getCurrent(){return g()}static async getAll(){return _()}static async getFocusedWindow(){for(const e of await _())if(await e.isFocused())return e;return null}async listen(e,t){return this._handleTauriEvent(e,t)?()=>{const i=this.listeners[e];i.splice(i.indexOf(t),1)}:w(e,t,{target:{kind:"Window",label:this.label}})}async once(e,t){return this._handleTauriEvent(e,t)?()=>{const i=this.listeners[e];i.splice(i.indexOf(t),1)}:async function(e,t,i){return w(e,(i=>{h(e,i.id),t(i)}),i)}(e,t,{target:{kind:"Window",label:this.label}})}async emit(e,t){if(!m.includes(e))return async function(e,t){await s("plugin:event|emit",{event:e,payload:t})}(e,t);for(const i of this.listeners[e]||[])i({event:e,id:-1,payload:t})}async emitTo(e,t,i){if(!m.includes(t))return async function(e,t,i){const n="string"==typeof e?{kind:"AnyLabel",label:e}:e;await s("plugin:event|emit_to",{target:n,event:t,payload:i})}(e,t,i);for(const e of this.listeners[t]||[])e({event:t,id:-1,payload:i})}_handleTauriEvent(e,t){return!!m.includes(e)&&(e in this.listeners?this.listeners[e].push(t):this.listeners[e]=[t],!0)}async scaleFactor(){return s("plugin:window|scale_factor",{label:this.label})}async innerPosition(){return s("plugin:window|inner_position",{label:this.label}).then((({x:e,y:t})=>new d(e,t)))}async outerPosition(){return s("plugin:window|outer_position",{label:this.label}).then((({x:e,y:t})=>new d(e,t)))}async innerSize(){return s("plugin:window|inner_size",{label:this.label}).then((({width:e,height:t})=>new u(e,t)))}async outerSize(){return s("plugin:window|outer_size",{label:this.label}).then((({width:e,height:t})=>new u(e,t)))}async isFullscreen(){return s("plugin:window|is_fullscreen",{label:this.label})}async isMinimized(){return s("plugin:window|is_minimized",{label:this.label})}async isMaximized(){return s("plugin:window|is_maximized",{label:this.label})}async isFocused(){return s("plugin:window|is_focused",{label:this.label})}async isDecorated(){return s("plugin:window|is_decorated",{label:this.label})}async isResizable(){return s("plugin:window|is_resizable",{label:this.label})}async isMaximizable(){return s("plugin:window|is_maximizable",{label:this.label})}async isMinimizable(){return s("plugin:window|is_minimizable",{label:this.label})}async isClosable(){return s("plugin:window|is_closable",{label:this.label})}async isVisible(){return s("plugin:window|is_visible",{label:this.label})}async title(){return s("plugin:window|title",{label:this.label})}async theme(){return s("plugin:window|theme",{label:this.label})}async center(){return s("plugin:window|center",{label:this.label})}async requestUserAttention(e){let t=null;return e&&(t=e===n.Critical?{type:"Critical"}:{type:"Informational"}),s("plugin:window|request_user_attention",{label:this.label,value:t})}async setResizable(e){return s("plugin:window|set_resizable",{label:this.label,value:e})}async setEnabled(e){return s("plugin:window|set_enabled",{label:this.label,value:e})}async isEnabled(){return s("plugin:window|is_enabled",{label:this.label})}async setMaximizable(e){return s("plugin:window|set_maximizable",{label:this.label,value:e})}async setMinimizable(e){return s("plugin:window|set_minimizable",{label:this.label,value:e})}async setClosable(e){return s("plugin:window|set_closable",{label:this.label,value:e})}async setTitle(e){return s("plugin:window|set_title",{label:this.label,value:e})}async maximize(){return s("plugin:window|maximize",{label:this.label})}async unmaximize(){return s("plugin:window|unmaximize",{label:this.label})}async toggleMaximize(){return s("plugin:window|toggle_maximize",{label:this.label})}async minimize(){return s("plugin:window|minimize",{label:this.label})}async unminimize(){return s("plugin:window|unminimize",{label:this.label})}async show(){return s("plugin:window|show",{label:this.label})}async hide(){return s("plugin:window|hide",{label:this.label})}async close(){return s("plugin:window|close",{label:this.label})}async destroy(){return s("plugin:window|destroy",{label:this.label})}async setDecorations(e){return s("plugin:window|set_decorations",{label:this.label,value:e})}async setShadow(e){return s("plugin:window|set_shadow",{label:this.label,value:e})}async setEffects(e){return s("plugin:window|set_effects",{label:this.label,value:e})}async clearEffects(){return s("plugin:window|set_effects",{label:this.label,value:null})}async setAlwaysOnTop(e){return s("plugin:window|set_always_on_top",{label:this.label,value:e})}async setAlwaysOnBottom(e){return s("plugin:window|set_always_on_bottom",{label:this.label,value:e})}async setContentProtected(e){return s("plugin:window|set_content_protected",{label:this.label,value:e})}async setSize(e){if(!e||"Logical"!==e.type&&"Physical"!==e.type)throw new Error("the `size` argument must be either a LogicalSize or a PhysicalSize instance");const t={};return t[`${e.type}`]={width:e.width,height:e.height},s("plugin:window|set_size",{label:this.label,value:t})}async setMinSize(e){if(e&&"Logical"!==e.type&&"Physical"!==e.type)throw new Error("the `size` argument must be either a LogicalSize or a PhysicalSize instance");let t=null;return e&&(t={},t[`${e.type}`]={width:e.width,height:e.height}),s("plugin:window|set_min_size",{label:this.label,value:t})}async setMaxSize(e){if(e&&"Logical"!==e.type&&"Physical"!==e.type)throw new Error("the `size` argument must be either a LogicalSize or a PhysicalSize instance");let t=null;return e&&(t={},t[`${e.type}`]={width:e.width,height:e.height}),s("plugin:window|set_max_size",{label:this.label,value:t})}async setSizeConstraints(e){function t(e){return e?{Logical:e}:null}return s("plugin:window|set_size_constraints",{label:this.label,value:{minWidth:t(null==e?void 0:e.minWidth),minHeight:t(null==e?void 0:e.minHeight),maxWidth:t(null==e?void 0:e.maxWidth),maxHeight:t(null==e?void 0:e.maxHeight)}})}async setPosition(e){if(!e||"Logical"!==e.type&&"Physical"!==e.type)throw new Error("the `position` argument must be either a LogicalPosition or a PhysicalPosition instance");const t={};return t[`${e.type}`]={x:e.x,y:e.y},s("plugin:window|set_position",{label:this.label,value:t})}async setFullscreen(e){return s("plugin:window|set_fullscreen",{label:this.label,value:e})}async setFocus(){return s("plugin:window|set_focus",{label:this.label})}async setIcon(e){return s("plugin:window|set_icon",{label:this.label,value:y(e)})}async setSkipTaskbar(e){return s("plugin:window|set_skip_taskbar",{label:this.label,value:e})}async setCursorGrab(e){return s("plugin:window|set_cursor_grab",{label:this.label,value:e})}async setCursorVisible(e){return s("plugin:window|set_cursor_visible",{label:this.label,value:e})}async setCursorIcon(e){return s("plugin:window|set_cursor_icon",{label:this.label,value:e})}async setCursorPosition(e){if(!e||"Logical"!==e.type&&"Physical"!==e.type)throw new Error("the `position` argument must be either a LogicalPosition or a PhysicalPosition instance");const t={};return t[`${e.type}`]={x:e.x,y:e.y},s("plugin:window|set_cursor_position",{label:this.label,value:t})}async setIgnoreCursorEvents(e){return s("plugin:window|set_ignore_cursor_events",{label:this.label,value:e})}async startDragging(){return s("plugin:window|start_dragging",{label:this.label})}async startResizeDragging(e){return s("plugin:window|start_resize_dragging",{label:this.label,value:e})}async setProgressBar(e){return s("plugin:window|set_progress_bar",{label:this.label,value:e})}async setVisibleOnAllWorkspaces(e){return s("plugin:window|set_visible_on_all_workspaces",{label:this.label,value:e})}async setTitleBarStyle(e){return s("plugin:window|set_title_bar_style",{label:this.label,value:e})}async setTheme(e){return s("plugin:window|set_theme",{label:this.label,value:e})}async onResized(e){return this.listen(i.WINDOW_RESIZED,(t=>{var i;t.payload=(i=t.payload,new u(i.width,i.height)),e(t)}))}async onMoved(e){return this.listen(i.WINDOW_MOVED,(t=>{t.payload=I(t.payload),e(t)}))}async onCloseRequested(e){return this.listen(i.WINDOW_CLOSE_REQUESTED,(async t=>{const i=new p(t);await e(i),i.isPreventDefault()||await this.destroy()}))}async onDragDropEvent(e){const t=await this.listen(i.DRAG_ENTER,(t=>{e({...t,payload:{type:"enter",paths:t.payload.paths,position:I(t.payload.position)}})})),n=await this.listen(i.DRAG_OVER,(t=>{e({...t,payload:{type:"over",position:I(t.payload.position)}})})),a=await this.listen(i.DRAG_DROP,(t=>{e({...t,payload:{type:"drop",paths:t.payload.paths,position:I(t.payload.position)}})})),l=await this.listen(i.DRAG_LEAVE,(t=>{e({...t,payload:{type:"leave"}})}));return()=>{t(),a(),n(),l()}}async onFocusChanged(e){const t=await this.listen(i.WINDOW_FOCUS,(t=>{e({...t,payload:!0})})),n=await this.listen(i.WINDOW_BLUR,(t=>{e({...t,payload:!1})}));return()=>{t(),n()}}async onScaleChanged(e){return this.listen(i.WINDOW_SCALE_FACTOR_CHANGED,e)}async onThemeChanged(e){return this.listen(i.WINDOW_THEME_CHANGED,e)}}var f,E,D;function I(e){return new d(e.x,e.y)}async function S(e,t){await s("plugin:window-state|restore_state",{label:e,flags:t})}return function(e){e.AppearanceBased="appearanceBased",e.Light="light",e.Dark="dark",e.MediumLight="mediumLight",e.UltraDark="ultraDark",e.Titlebar="titlebar",e.Selection="selection",e.Menu="menu",e.Popover="popover",e.Sidebar="sidebar",e.HeaderView="headerView",e.Sheet="sheet",e.WindowBackground="windowBackground",e.HudWindow="hudWindow",e.FullScreenUI="fullScreenUI",e.Tooltip="tooltip",e.ContentBackground="contentBackground",e.UnderWindowBackground="underWindowBackground",e.UnderPageBackground="underPageBackground",e.Mica="mica",e.Blur="blur",e.Acrylic="acrylic",e.Tabbed="tabbed",e.TabbedDark="tabbedDark",e.TabbedLight="tabbedLight"}(f||(f={})),function(e){e.FollowsWindowActiveState="followsWindowActiveState",e.Active="active",e.Inactive="inactive"}(E||(E={})),e.StateFlags=void 0,(D=e.StateFlags||(e.StateFlags={}))[D.SIZE=1]="SIZE",D[D.POSITION=2]="POSITION",D[D.MAXIMIZED=4]="MAXIMIZED",D[D.VISIBLE=8]="VISIBLE",D[D.DECORATIONS=16]="DECORATIONS",D[D.FULLSCREEN=32]="FULLSCREEN",D[D.ALL=63]="ALL",e.filename=async function(){return await s("plugin:window-state|filename")},e.restoreState=S,e.restoreStateCurrent=async function(e){await S(g().label,e)},e.saveWindowState=async function(e){await s("plugin:window-state|save_window_state",{flags:e})},e}({});Object.defineProperty(window.__TAURI__,"windowState",{value:__TAURI_PLUGIN_WINDOW_STATE__})}
From 44273b988957a254eff715d6be7547d2ace882e1 Mon Sep 17 00:00:00 2001
From: Amr Bashir
Date: Tue, 1 Oct 2024 16:16:14 +0300
Subject: [PATCH 10/40] fix(shell): fix schema requiring `sidecar` property
even though it is optional (#1839)
* fix(shell): fix schema requiring `sidecar` property even though it is optional
* fix clippy
* make `cmd` and `sidecar` exclusive
* make args optional
* cleanup
---------
Co-authored-by: Lucas Nogueira
---
.changes/shell-schema-required-sidcar.md | 6 +
plugins/fs/build.rs | 18 +-
plugins/fs/src/scope.rs | 3 +-
plugins/http/build.rs | 27 ++-
plugins/http/src/scope.rs | 14 +-
plugins/shell/Cargo.toml | 1 -
plugins/shell/build.rs | 160 +++++++++++++++++-
plugins/shell/src/scope_entry.rs | 81 ++-------
.../updater/tests/app-updater/tests/update.rs | 2 +-
.../tests/updater-migration/tests/update.rs | 2 +-
10 files changed, 213 insertions(+), 101 deletions(-)
create mode 100644 .changes/shell-schema-required-sidcar.md
diff --git a/.changes/shell-schema-required-sidcar.md b/.changes/shell-schema-required-sidcar.md
new file mode 100644
index 00000000..7e48f653
--- /dev/null
+++ b/.changes/shell-schema-required-sidcar.md
@@ -0,0 +1,6 @@
+---
+"shell": "patch"
+---
+
+Fix the plugin schema requiring to set `sidecar` property when it is in fact optional.
+
diff --git a/plugins/fs/build.rs b/plugins/fs/build.rs
index 5a641eb6..cb9d00da 100644
--- a/plugins/fs/build.rs
+++ b/plugins/fs/build.rs
@@ -24,14 +24,16 @@ enum FsScopeEntry {
},
}
-// Ensure scope entry is kept up to date
-impl From for scope::EntryRaw {
- fn from(value: FsScopeEntry) -> Self {
- match value {
- FsScopeEntry::Value(path) => scope::EntryRaw::Value(path),
- FsScopeEntry::Object { path } => scope::EntryRaw::Object { path },
- }
- }
+// Ensure `FsScopeEntry` and `scope::EntryRaw` is kept in sync
+fn _f() {
+ match scope::EntryRaw::Value(PathBuf::new()) {
+ scope::EntryRaw::Value(path) => FsScopeEntry::Value(path),
+ scope::EntryRaw::Object { path } => FsScopeEntry::Object { path },
+ };
+ match FsScopeEntry::Value(PathBuf::new()) {
+ FsScopeEntry::Value(path) => scope::EntryRaw::Value(path),
+ FsScopeEntry::Object { path } => scope::EntryRaw::Object { path },
+ };
}
const BASE_DIR_VARS: &[&str] = &[
diff --git a/plugins/fs/src/scope.rs b/plugins/fs/src/scope.rs
index fd94b0eb..e8361d51 100644
--- a/plugins/fs/src/scope.rs
+++ b/plugins/fs/src/scope.rs
@@ -13,10 +13,9 @@ use std::{
use serde::Deserialize;
-#[doc(hidden)]
#[derive(Deserialize)]
#[serde(untagged)]
-pub enum EntryRaw {
+pub(crate) enum EntryRaw {
Value(PathBuf),
Object { path: PathBuf },
}
diff --git a/plugins/http/build.rs b/plugins/http/build.rs
index 5f12208d..a4b802ad 100644
--- a/plugins/http/build.rs
+++ b/plugins/http/build.rs
@@ -47,23 +47,16 @@ enum HttpScopeEntry {
},
}
-// Ensure scope entry is kept up to date
-impl From for scope::Entry {
- fn from(value: HttpScopeEntry) -> Self {
- let url = match value {
- HttpScopeEntry::Value(url) => url,
- HttpScopeEntry::Object { url } => url,
- };
-
- scope::Entry {
- url: urlpattern::UrlPattern::parse(
- urlpattern::UrlPatternInit::parse_constructor_string::(&url, None)
- .unwrap(),
- Default::default(),
- )
- .unwrap(),
- }
- }
+// Ensure `HttpScopeEntry` and `scope::EntryRaw` is kept in sync
+fn _f() {
+ match scope::EntryRaw::Value(String::new()) {
+ scope::EntryRaw::Value(url) => HttpScopeEntry::Value(url),
+ scope::EntryRaw::Object { url } => HttpScopeEntry::Object { url },
+ };
+ match HttpScopeEntry::Value(String::new()) {
+ HttpScopeEntry::Value(url) => scope::EntryRaw::Value(url),
+ HttpScopeEntry::Object { url } => scope::EntryRaw::Object { url },
+ };
}
fn main() {
diff --git a/plugins/http/src/scope.rs b/plugins/http/src/scope.rs
index b84831de..2123f215 100644
--- a/plugins/http/src/scope.rs
+++ b/plugins/http/src/scope.rs
@@ -33,18 +33,18 @@ fn parse_url_pattern(s: &str) -> Result {
UrlPattern::parse(init, Default::default())
}
+#[derive(Deserialize)]
+#[serde(untagged)]
+pub(crate) enum EntryRaw {
+ Value(String),
+ Object { url: String },
+}
+
impl<'de> Deserialize<'de> for Entry {
fn deserialize(deserializer: D) -> std::result::Result
where
D: Deserializer<'de>,
{
- #[derive(Deserialize)]
- #[serde(untagged)]
- enum EntryRaw {
- Value(String),
- Object { url: String },
- }
-
EntryRaw::deserialize(deserializer).and_then(|raw| {
let url = match raw {
EntryRaw::Value(url) => url,
diff --git a/plugins/shell/Cargo.toml b/plugins/shell/Cargo.toml
index 62a3fd9e..a045f0c2 100644
--- a/plugins/shell/Cargo.toml
+++ b/plugins/shell/Cargo.toml
@@ -27,7 +27,6 @@ serde = { workspace = true }
[dependencies]
serde = { workspace = true }
-schemars = { workspace = true }
serde_json = { workspace = true }
tauri = { workspace = true }
tokio = { version = "1", features = ["time"] }
diff --git a/plugins/shell/build.rs b/plugins/shell/build.rs
index fbfbb470..a4a74a99 100644
--- a/plugins/shell/build.rs
+++ b/plugins/shell/build.rs
@@ -2,15 +2,173 @@
// SPDX-License-Identifier: Apache-2.0
// SPDX-License-Identifier: MIT
+use std::path::PathBuf;
+
+use schemars::JsonSchema;
+
#[path = "src/scope_entry.rs"]
mod scope_entry;
+/// A command argument allowed to be executed by the webview API.
+#[derive(Debug, PartialEq, Eq, Clone, Hash, schemars::JsonSchema)]
+#[serde(untagged, deny_unknown_fields)]
+#[non_exhaustive]
+pub enum ShellScopeEntryAllowedArg {
+ /// A non-configurable argument that is passed to the command in the order it was specified.
+ Fixed(String),
+
+ /// A variable that is set while calling the command from the webview API.
+ ///
+ Var {
+ /// [regex] validator to require passed values to conform to an expected input.
+ ///
+ /// This will require the argument value passed to this variable to match the `validator` regex
+ /// before it will be executed.
+ ///
+ /// The regex string is by default surrounded by `^...$` to match the full string.
+ /// For example the `https?://\w+` regex would be registered as `^https?://\w+$`.
+ ///
+ /// [regex]:
+ validator: String,
+
+ /// Marks the validator as a raw regex, meaning the plugin should not make any modification at runtime.
+ ///
+ /// This means the regex will not match on the entire string by default, which might
+ /// be exploited if your regex allow unexpected input to be considered valid.
+ /// When using this option, make sure your regex is correct.
+ #[serde(default)]
+ raw: bool,
+ },
+}
+
+/// A set of command arguments allowed to be executed by the webview API.
+///
+/// A value of `true` will allow any arguments to be passed to the command. `false` will disable all
+/// arguments. A list of [`ShellScopeEntryAllowedArg`] will set those arguments as the only valid arguments to
+/// be passed to the attached command configuration.
+#[derive(Debug, PartialEq, Eq, Clone, Hash, JsonSchema)]
+#[serde(untagged, deny_unknown_fields)]
+#[non_exhaustive]
+pub enum ShellScopeEntryAllowedArgs {
+ /// Use a simple boolean to allow all or disable all arguments to this command configuration.
+ Flag(bool),
+
+ /// A specific set of [`ShellScopeEntryAllowedArg`] that are valid to call for the command configuration.
+ List(Vec),
+}
+
+impl Default for ShellScopeEntryAllowedArgs {
+ fn default() -> Self {
+ Self::Flag(false)
+ }
+}
+
+/// Shell scope entry.
+#[derive(JsonSchema)]
+#[serde(untagged, deny_unknown_fields)]
+#[allow(unused)]
+pub(crate) enum ShellScopeEntry {
+ Command {
+ /// The name for this allowed shell command configuration.
+ ///
+ /// This name will be used inside of the webview API to call this command along with
+ /// any specified arguments.
+ name: String,
+ /// The command name.
+ /// It can start with a variable that resolves to a system base directory.
+ /// The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`,
+ /// `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`,
+ /// `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`,
+ /// `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.
+ // use default just so the schema doesn't flag it as required
+ #[serde(rename = "cmd")]
+ command: PathBuf,
+ /// The allowed arguments for the command execution.
+ #[serde(default)]
+ args: ShellScopeEntryAllowedArgs,
+ },
+ Sidecar {
+ /// The name for this allowed shell command configuration.
+ ///
+ /// This name will be used inside of the webview API to call this command along with
+ /// any specified arguments.
+ name: String,
+ /// The allowed arguments for the command execution.
+ #[serde(default)]
+ args: ShellScopeEntryAllowedArgs,
+ /// If this command is a sidecar command.
+ sidecar: bool,
+ },
+}
+
+// Ensure `ShellScopeEntry` and `scope_entry::EntryRaw`
+// and `ShellScopeEntryAllowedArg` and `ShellAllowedArg`
+// and `ShellScopeEntryAllowedArgs` and `ShellAllowedArgs`
+// are kept in sync
+#[allow(clippy::unnecessary_operation)]
+fn _f() {
+ match (ShellScopeEntry::Sidecar {
+ name: String::new(),
+ args: ShellScopeEntryAllowedArgs::Flag(false),
+ sidecar: true,
+ }) {
+ ShellScopeEntry::Command {
+ name,
+ command,
+ args,
+ } => scope_entry::EntryRaw {
+ name,
+ command: Some(command),
+ args: match args {
+ ShellScopeEntryAllowedArgs::Flag(flag) => scope_entry::ShellAllowedArgs::Flag(flag),
+ ShellScopeEntryAllowedArgs::List(vec) => scope_entry::ShellAllowedArgs::List(
+ vec.into_iter()
+ .map(|s| match s {
+ ShellScopeEntryAllowedArg::Fixed(fixed) => {
+ scope_entry::ShellAllowedArg::Fixed(fixed)
+ }
+ ShellScopeEntryAllowedArg::Var { validator, raw } => {
+ scope_entry::ShellAllowedArg::Var { validator, raw }
+ }
+ })
+ .collect(),
+ ),
+ },
+ sidecar: false,
+ },
+ ShellScopeEntry::Sidecar {
+ name,
+ args,
+ sidecar,
+ } => scope_entry::EntryRaw {
+ name,
+ command: None,
+ args: match args {
+ ShellScopeEntryAllowedArgs::Flag(flag) => scope_entry::ShellAllowedArgs::Flag(flag),
+ ShellScopeEntryAllowedArgs::List(vec) => scope_entry::ShellAllowedArgs::List(
+ vec.into_iter()
+ .map(|s| match s {
+ ShellScopeEntryAllowedArg::Fixed(fixed) => {
+ scope_entry::ShellAllowedArg::Fixed(fixed)
+ }
+ ShellScopeEntryAllowedArg::Var { validator, raw } => {
+ scope_entry::ShellAllowedArg::Var { validator, raw }
+ }
+ })
+ .collect(),
+ ),
+ },
+ sidecar,
+ },
+ };
+}
+
const COMMANDS: &[&str] = &["execute", "spawn", "stdin_write", "kill", "open"];
fn main() {
tauri_plugin::Builder::new(COMMANDS)
.global_api_script_path("./api-iife.js")
- .global_scope_schema(schemars::schema_for!(scope_entry::Entry))
+ .global_scope_schema(schemars::schema_for!(ShellScopeEntry))
.android_path("android")
.ios_path("ios")
.build();
diff --git a/plugins/shell/src/scope_entry.rs b/plugins/shell/src/scope_entry.rs
index a2fb6136..59839178 100644
--- a/plugins/shell/src/scope_entry.rs
+++ b/plugins/shell/src/scope_entry.rs
@@ -7,29 +7,23 @@ use serde::{de::Error as DeError, Deserialize, Deserializer};
use std::path::PathBuf;
/// A command allowed to be executed by the webview API.
-#[derive(Debug, Clone, PartialEq, Eq, Hash, schemars::JsonSchema)]
-pub struct Entry {
- /// The name for this allowed shell command configuration.
- ///
- /// This name will be used inside of the webview API to call this command along with
- /// any specified arguments.
- pub name: String,
+#[derive(Debug, Clone, PartialEq, Eq, Hash)]
+pub(crate) struct Entry {
+ pub(crate) name: String,
+ pub(crate) command: PathBuf,
+ pub(crate) args: ShellAllowedArgs,
+ pub(crate) sidecar: bool,
+}
- /// The command name.
- /// It can start with a variable that resolves to a system base directory.
- /// The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`,
- /// `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`,
- /// `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`,
- /// `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.
- // use default just so the schema doesn't flag it as required
+#[derive(Deserialize)]
+pub(crate) struct EntryRaw {
+ pub(crate) name: String,
#[serde(rename = "cmd")]
- pub command: PathBuf,
-
- /// The allowed arguments for the command execution.
- pub args: ShellAllowedArgs,
-
- /// If this command is a sidecar command.
- pub sidecar: bool,
+ pub(crate) command: Option,
+ #[serde(default)]
+ pub(crate) args: ShellAllowedArgs,
+ #[serde(default)]
+ pub(crate) sidecar: bool,
}
impl<'de> Deserialize<'de> for Entry {
@@ -37,18 +31,7 @@ impl<'de> Deserialize<'de> for Entry {
where
D: Deserializer<'de>,
{
- #[derive(Deserialize)]
- struct InnerEntry {
- name: String,
- #[serde(rename = "cmd")]
- command: Option,
- #[serde(default)]
- args: ShellAllowedArgs,
- #[serde(default)]
- sidecar: bool,
- }
-
- let config = InnerEntry::deserialize(deserializer)?;
+ let config = EntryRaw::deserialize(deserializer)?;
if !config.sidecar && config.command.is_none() {
return Err(DeError::custom(
@@ -65,19 +48,11 @@ impl<'de> Deserialize<'de> for Entry {
}
}
-/// A set of command arguments allowed to be executed by the webview API.
-///
-/// A value of `true` will allow any arguments to be passed to the command. `false` will disable all
-/// arguments. A list of [`ShellAllowedArg`] will set those arguments as the only valid arguments to
-/// be passed to the attached command configuration.
-#[derive(Debug, PartialEq, Eq, Clone, Hash, Deserialize, schemars::JsonSchema)]
+#[derive(Debug, PartialEq, Eq, Clone, Hash, Deserialize)]
#[serde(untagged, deny_unknown_fields)]
#[non_exhaustive]
pub enum ShellAllowedArgs {
- /// Use a simple boolean to allow all or disable all arguments to this command configuration.
Flag(bool),
-
- /// A specific set of [`ShellAllowedArg`] that are valid to call for the command configuration.
List(Vec),
}
@@ -87,33 +62,13 @@ impl Default for ShellAllowedArgs {
}
}
-/// A command argument allowed to be executed by the webview API.
-#[derive(Debug, PartialEq, Eq, Clone, Hash, Deserialize, schemars::JsonSchema)]
+#[derive(Debug, PartialEq, Eq, Clone, Hash, Deserialize)]
#[serde(untagged, deny_unknown_fields)]
#[non_exhaustive]
pub enum ShellAllowedArg {
- /// A non-configurable argument that is passed to the command in the order it was specified.
Fixed(String),
-
- /// A variable that is set while calling the command from the webview API.
- ///
Var {
- /// [regex] validator to require passed values to conform to an expected input.
- ///
- /// This will require the argument value passed to this variable to match the `validator` regex
- /// before it will be executed.
- ///
- /// The regex string is by default surrounded by `^...$` to match the full string.
- /// For example the `https?://\w+` regex would be registered as `^https?://\w+$`.
- ///
- /// [regex]:
validator: String,
-
- /// Marks the validator as a raw regex, meaning the plugin should not make any modification at runtime.
- ///
- /// This means the regex will not match on the entire string by default, which might
- /// be exploited if your regex allow unexpected input to be considered valid.
- /// When using this option, make sure your regex is correct.
#[serde(default)]
raw: bool,
},
diff --git a/plugins/updater/tests/app-updater/tests/update.rs b/plugins/updater/tests/app-updater/tests/update.rs
index 985a4c4a..230ab376 100644
--- a/plugins/updater/tests/app-updater/tests/update.rs
+++ b/plugins/updater/tests/app-updater/tests/update.rs
@@ -221,7 +221,7 @@ fn update_app() {
let updater_extension = if let Some(updater_zip_ext) = updater_zip_ext {
format!("{bundle_updater_ext}.{updater_zip_ext}")
} else {
- format!("{bundle_updater_ext}")
+ bundle_updater_ext
};
let signature_extension = format!("{updater_extension}.sig");
let signature_path = out_bundle_path.with_extension(signature_extension);
diff --git a/plugins/updater/tests/updater-migration/tests/update.rs b/plugins/updater/tests/updater-migration/tests/update.rs
index 3b5cb779..56cb2d30 100644
--- a/plugins/updater/tests/updater-migration/tests/update.rs
+++ b/plugins/updater/tests/updater-migration/tests/update.rs
@@ -413,7 +413,7 @@ fn update_app() {
),
2 => (
v2_config.version,
- Box::new(|| v2::bundle_paths(&root_dir, &v2_config.version))
+ Box::new(|| v2::bundle_paths(&root_dir, v2_config.version))
as Box Vec<(BundleTarget, PathBuf)>>,
"-v2",
),
From f12d35609ab84f536c0f087665fdc1f978af3093 Mon Sep 17 00:00:00 2001
From: Tony <68118705+Legend-Master@users.noreply.github.com>
Date: Wed, 2 Oct 2024 02:10:40 +0800
Subject: [PATCH 11/40] feat(store)!: fully rework and add auto save (#1550)
* Add auto save to store plugin
* Put jsdoc at constructor instead of class level
* Clippy
* Use enum instead of bool
* Some(AutoSaveMessage::Cancel) | None
* from_millis
* u64
* Add change file
* Rename to emit_on_change
* should use Duration in `with_store`
* Add breaking change notice to change file
* Emit change event for inserts by reset
* Update readme example
* Update example
* Remove extra line
* Make description clear it only works with managed
* Fix links in docstring
* Fix doc string closing
* get_mut
* Proof of concept
* fmt
* Load store on create
* cargo fmt
* Fix merge conflits
* Format
* small cleanup
* update docs, use `impl Into`
* fix doctests, further simplification of api
* add store options
---------
Co-authored-by: Tillmann <28728469+tweidinger@users.noreply.github.com>
Co-authored-by: Lucas Nogueira
---
.changes/store-api-refactor.md | 5 +
.changes/store-auto-save.md | 7 +
Cargo.lock | 1 +
plugins/store/Cargo.toml | 4 +
plugins/store/README.md | 8 +-
plugins/store/api-iife.js | 2 +-
plugins/store/build.rs | 13 +-
.../src-tauri/src/app/settings.rs | 5 +-
.../AppSettingsManager/src-tauri/src/main.rs | 28 +-
plugins/store/guest-js/index.ts | 76 ++--
.../autogenerated/commands/create_store.toml | 13 +
.../permissions/autogenerated/reference.md | 27 ++
plugins/store/permissions/default.toml | 1 +
plugins/store/permissions/schemas/schema.json | 10 +
plugins/store/src/lib.rs | 362 ++++++++--------
plugins/store/src/store.rs | 404 +++++++++++++-----
16 files changed, 603 insertions(+), 363 deletions(-)
create mode 100644 .changes/store-api-refactor.md
create mode 100644 .changes/store-auto-save.md
create mode 100644 plugins/store/permissions/autogenerated/commands/create_store.toml
diff --git a/.changes/store-api-refactor.md b/.changes/store-api-refactor.md
new file mode 100644
index 00000000..ed049eb1
--- /dev/null
+++ b/.changes/store-api-refactor.md
@@ -0,0 +1,5 @@
+---
+"store-js": patch
+---
+
+**Breaking change**: Removed the `Store` constructor and added the `createStore` API.
diff --git a/.changes/store-auto-save.md b/.changes/store-auto-save.md
new file mode 100644
index 00000000..4babad27
--- /dev/null
+++ b/.changes/store-auto-save.md
@@ -0,0 +1,7 @@
+---
+"store": patch
+---
+
+Add a setting `auto_save` to enable a store to debounce save on modification (on calls like set, clear, delete, reset)
+
+**Breaking change**: Removed the `with_store` API and added `StoreExt::store_builder`.
diff --git a/Cargo.lock b/Cargo.lock
index 0d4b1212..8afbabde 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -6990,6 +6990,7 @@ dependencies = [
"tauri",
"tauri-plugin",
"thiserror",
+ "tokio",
]
[[package]]
diff --git a/plugins/store/Cargo.toml b/plugins/store/Cargo.toml
index 0300b35f..c2f8ddd9 100644
--- a/plugins/store/Cargo.toml
+++ b/plugins/store/Cargo.toml
@@ -30,6 +30,10 @@ tauri = { workspace = true }
log = { workspace = true }
thiserror = { workspace = true }
dunce = { workspace = true }
+tokio = { version = "1", features = ["sync", "time", "macros"] }
[target.'cfg(target_os = "ios")'.dependencies]
tauri = { workspace = true, features = ["wry"] }
+
+[dev-dependencies]
+tauri = { workspace = true, features = ["wry"] }
diff --git a/plugins/store/README.md b/plugins/store/README.md
index be6fdfae..f7d65a0f 100644
--- a/plugins/store/README.md
+++ b/plugins/store/README.md
@@ -149,12 +149,10 @@ As you may have noticed, the `Store` crated above isn't accessible to the fronte
```rust
use tauri::Wry;
-use tauri_plugin_store::with_store;
+use tauri_plugin_store::StoreExt;
-let stores = app.state::>();
-let path = PathBuf::from("app_data.bin");
-
-with_store(app_handle, stores, path, |store| store.insert("a".to_string(), json!("b")))
+let store = app.store_builder("app_data.bin").build();
+store.insert("key", "value");
```
## Contributing
diff --git a/plugins/store/api-iife.js b/plugins/store/api-iife.js
index 9bd5a3f4..77295d7f 100644
--- a/plugins/store/api-iife.js
+++ b/plugins/store/api-iife.js
@@ -1 +1 @@
-if("__TAURI__"in window){var __TAURI_PLUGIN_STORE__=function(t){"use strict";function a(t,a=!1){return window.__TAURI_INTERNALS__.transformCallback(t,a)}async function e(t,a={},e){return window.__TAURI_INTERNALS__.invoke(t,a,e)}var n;async function r(t,n,r){const i={kind:"Any"};return e("plugin:event|listen",{event:t,target:i,handler:a(n)}).then((a=>async()=>async function(t,a){await e("plugin:event|unlisten",{event:t,eventId:a})}(t,a)))}"function"==typeof SuppressedError&&SuppressedError,function(t){t.WINDOW_RESIZED="tauri://resize",t.WINDOW_MOVED="tauri://move",t.WINDOW_CLOSE_REQUESTED="tauri://close-requested",t.WINDOW_DESTROYED="tauri://destroyed",t.WINDOW_FOCUS="tauri://focus",t.WINDOW_BLUR="tauri://blur",t.WINDOW_SCALE_FACTOR_CHANGED="tauri://scale-change",t.WINDOW_THEME_CHANGED="tauri://theme-changed",t.WINDOW_CREATED="tauri://window-created",t.WEBVIEW_CREATED="tauri://webview-created",t.DRAG_ENTER="tauri://drag-enter",t.DRAG_OVER="tauri://drag-over",t.DRAG_DROP="tauri://drag-drop",t.DRAG_LEAVE="tauri://drag-leave"}(n||(n={}));return t.Store=class{constructor(t){this.path=t}async set(t,a){await e("plugin:store|set",{path:this.path,key:t,value:a})}async get(t){return await e("plugin:store|get",{path:this.path,key:t})}async has(t){return await e("plugin:store|has",{path:this.path,key:t})}async delete(t){return await e("plugin:store|delete",{path:this.path,key:t})}async clear(){await e("plugin:store|clear",{path:this.path})}async reset(){await e("plugin:store|reset",{path:this.path})}async keys(){return await e("plugin:store|keys",{path:this.path})}async values(){return await e("plugin:store|values",{path:this.path})}async entries(){return await e("plugin:store|entries",{path:this.path})}async length(){return await e("plugin:store|length",{path:this.path})}async load(){await e("plugin:store|load",{path:this.path})}async save(){await e("plugin:store|save",{path:this.path})}async onKeyChange(t,a){return await r("store://change",(e=>{e.payload.path===this.path&&e.payload.key===t&&a(e.payload.value)}))}async onChange(t){return await r("store://change",(a=>{a.payload.path===this.path&&t(a.payload.key,a.payload.value)}))}},t}({});Object.defineProperty(window.__TAURI__,"store",{value:__TAURI_PLUGIN_STORE__})}
+if("__TAURI__"in window){var __TAURI_PLUGIN_STORE__=function(e){"use strict";var t,r;function a(e,t=!1){return window.__TAURI_INTERNALS__.transformCallback(e,t)}async function i(e,t={},r){return window.__TAURI_INTERNALS__.invoke(e,t,r)}"function"==typeof SuppressedError&&SuppressedError;class n{get rid(){return function(e,t,r,a){if("a"===r&&!a)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!a:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?a:"a"===r?a.call(e):a?a.value:t.get(e)}(this,t,"f")}constructor(e){t.set(this,void 0),function(e,t,r,a,i){if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");t.set(e,r)}(this,t,e)}async close(){return i("plugin:resources|close",{rid:this.rid})}}async function s(e,t,r){const n={kind:"Any"};return i("plugin:event|listen",{event:e,target:n,handler:a(t)}).then((t=>async()=>async function(e,t){await i("plugin:event|unlisten",{event:e,eventId:t})}(e,t)))}t=new WeakMap,function(e){e.WINDOW_RESIZED="tauri://resize",e.WINDOW_MOVED="tauri://move",e.WINDOW_CLOSE_REQUESTED="tauri://close-requested",e.WINDOW_DESTROYED="tauri://destroyed",e.WINDOW_FOCUS="tauri://focus",e.WINDOW_BLUR="tauri://blur",e.WINDOW_SCALE_FACTOR_CHANGED="tauri://scale-change",e.WINDOW_THEME_CHANGED="tauri://theme-changed",e.WINDOW_CREATED="tauri://window-created",e.WEBVIEW_CREATED="tauri://webview-created",e.DRAG_ENTER="tauri://drag-enter",e.DRAG_OVER="tauri://drag-over",e.DRAG_DROP="tauri://drag-drop",e.DRAG_LEAVE="tauri://drag-leave"}(r||(r={}));class o extends n{constructor(e,t){super(e),this.path=t}async set(e,t){await i("plugin:store|set",{rid:this.rid,key:e,value:t})}async get(e){return await i("plugin:store|get",{rid:this.rid,key:e})}async has(e){return await i("plugin:store|has",{rid:this.rid,key:e})}async delete(e){return await i("plugin:store|delete",{rid:this.rid,key:e})}async clear(){await i("plugin:store|clear",{rid:this.rid})}async reset(){await i("plugin:store|reset",{rid:this.rid})}async keys(){return await i("plugin:store|keys",{rid:this.rid})}async values(){return await i("plugin:store|values",{rid:this.rid})}async entries(){return await i("plugin:store|entries",{rid:this.rid})}async length(){return await i("plugin:store|length",{rid:this.rid})}async load(){await i("plugin:store|load",{rid:this.rid})}async save(){await i("plugin:store|save",{rid:this.rid})}async onKeyChange(e,t){return await s("store://change",(r=>{r.payload.path===this.path&&r.payload.key===e&&t(r.payload.value)}))}async onChange(e){return await s("store://change",(t=>{t.payload.path===this.path&&e(t.payload.key,t.payload.value)}))}}return e.Store=o,e.createStore=async function(e,t){const r=await i("plugin:store|create_store",{path:e,...t});return new o(r,e)},e}({});Object.defineProperty(window.__TAURI__,"store",{value:__TAURI_PLUGIN_STORE__})}
diff --git a/plugins/store/build.rs b/plugins/store/build.rs
index 7b54fe42..3c9fee01 100644
--- a/plugins/store/build.rs
+++ b/plugins/store/build.rs
@@ -3,7 +3,18 @@
// SPDX-License-Identifier: MIT
const COMMANDS: &[&str] = &[
- "set", "get", "has", "delete", "clear", "reset", "keys", "values", "length", "entries", "load",
+ "create_store",
+ "set",
+ "get",
+ "has",
+ "delete",
+ "clear",
+ "reset",
+ "keys",
+ "values",
+ "length",
+ "entries",
+ "load",
"save",
];
diff --git a/plugins/store/examples/AppSettingsManager/src-tauri/src/app/settings.rs b/plugins/store/examples/AppSettingsManager/src-tauri/src/app/settings.rs
index 5fc281b2..30514a00 100644
--- a/plugins/store/examples/AppSettingsManager/src-tauri/src/app/settings.rs
+++ b/plugins/store/examples/AppSettingsManager/src-tauri/src/app/settings.rs
@@ -21,9 +21,8 @@ impl AppSettings {
let theme = store
.get("appSettings.theme")
- .and_then(|v| v.as_str())
- .map(|s| s.to_string())
- .unwrap_or_else(|| "dark".to_string());
+ .and_then(|v| v.as_str().map(String::from))
+ .unwrap_or_else(|| "dark".to_owned());
Ok(AppSettings {
launch_at_login,
diff --git a/plugins/store/examples/AppSettingsManager/src-tauri/src/main.rs b/plugins/store/examples/AppSettingsManager/src-tauri/src/main.rs
index 5926713e..0dd4e0bc 100644
--- a/plugins/store/examples/AppSettingsManager/src-tauri/src/main.rs
+++ b/plugins/store/examples/AppSettingsManager/src-tauri/src/main.rs
@@ -5,17 +5,24 @@
// Prevents additional console window on Windows in release, DO NOT REMOVE!!
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
-use tauri_plugin_store::StoreBuilder;
+use std::time::Duration;
+
+use serde_json::json;
+use tauri_plugin_store::StoreExt;
mod app;
use app::settings::AppSettings;
fn main() {
tauri::Builder::default()
- .plugin(tauri_plugin_store::Builder::default().build())
+ .plugin(tauri_plugin_store::Builder::new().build())
.setup(|app| {
// Init store and load it from disk
- let mut store = StoreBuilder::new("settings.json").build(app.handle().clone());
+ let store = app
+ .handle()
+ .store_builder("settings.json")
+ .auto_save(Duration::from_millis(100))
+ .build();
// If there are no saved settings yet, this will return an error so we ignore the return value.
let _ = store.load();
@@ -27,17 +34,20 @@ fn main() {
let theme = app_settings.theme;
let launch_at_login = app_settings.launch_at_login;
- println!("theme {}", theme);
- println!("launch_at_login {}", launch_at_login);
-
- Ok(())
+ println!("theme {theme}");
+ println!("launch_at_login {launch_at_login}");
+ store.set(
+ "appSettings",
+ json!({ "theme": theme, "launchAtLogin": launch_at_login }),
+ );
}
Err(err) => {
- eprintln!("Error loading settings: {}", err);
+ eprintln!("Error loading settings: {err}");
// Handle the error case if needed
- Err(err) // Convert the error to a Box and return Err(err) here
+ return Err(err); // Convert the error to a Box and return Err(err) here
}
}
+ Ok(())
})
.run(tauri::generate_context!())
.expect("error while running tauri application");
diff --git a/plugins/store/guest-js/index.ts b/plugins/store/guest-js/index.ts
index dce545ac..259b0662 100644
--- a/plugins/store/guest-js/index.ts
+++ b/plugins/store/guest-js/index.ts
@@ -4,7 +4,7 @@
import { listen, type UnlistenFn } from '@tauri-apps/api/event'
-import { invoke } from '@tauri-apps/api/core'
+import { invoke, Resource } from '@tauri-apps/api/core'
interface ChangePayload {
path: string
@@ -13,12 +13,36 @@ interface ChangePayload {
}
/**
- * A key-value store persisted by the backend layer.
+ * Options to create a store
*/
-export class Store {
- path: string
- constructor(path: string) {
- this.path = path
+export type StoreOptions = {
+ /**
+ * Auto save on modification with debounce duration in milliseconds
+ */
+ autoSave?: boolean
+}
+
+/**
+ * @param path: Path to save the store in `app_data_dir`
+ * @param options: Store configuration options
+ */
+export async function createStore(path: string, options?: StoreOptions) {
+ const resourceId = await invoke('plugin:store|create_store', {
+ path,
+ ...options
+ })
+ return new Store(resourceId, path)
+}
+
+/**
+ * A lazy loaded key-value store persisted by the backend layer.
+ */
+export class Store extends Resource {
+ constructor(
+ rid: number,
+ private readonly path: string
+ ) {
+ super(rid)
}
/**
@@ -30,7 +54,7 @@ export class Store {
*/
async set(key: string, value: unknown): Promise {
await invoke('plugin:store|set', {
- path: this.path,
+ rid: this.rid,
key,
value
})
@@ -44,7 +68,7 @@ export class Store {
*/
async get(key: string): Promise {
return await invoke('plugin:store|get', {
- path: this.path,
+ rid: this.rid,
key
})
}
@@ -57,7 +81,7 @@ export class Store {
*/
async has(key: string): Promise {
return await invoke('plugin:store|has', {
- path: this.path,
+ rid: this.rid,
key
})
}
@@ -70,7 +94,7 @@ export class Store {
*/
async delete(key: string): Promise {
return await invoke('plugin:store|delete', {
- path: this.path,
+ rid: this.rid,
key
})
}
@@ -82,9 +106,7 @@ export class Store {
* @returns
*/
async clear(): Promise {
- await invoke('plugin:store|clear', {
- path: this.path
- })
+ await invoke('plugin:store|clear', { rid: this.rid })
}
/**
@@ -94,9 +116,7 @@ export class Store {
* @returns
*/
async reset(): Promise {
- await invoke('plugin:store|reset', {
- path: this.path
- })
+ await invoke('plugin:store|reset', { rid: this.rid })
}
/**
@@ -105,9 +125,7 @@ export class Store {
* @returns
*/
async keys(): Promise {
- return await invoke('plugin:store|keys', {
- path: this.path
- })
+ return await invoke('plugin:store|keys', { rid: this.rid })
}
/**
@@ -116,9 +134,7 @@ export class Store {
* @returns
*/
async values(): Promise {
- return await invoke('plugin:store|values', {
- path: this.path
- })
+ return await invoke('plugin:store|values', { rid: this.rid })
}
/**
@@ -127,9 +143,7 @@ export class Store {
* @returns
*/
async entries(): Promise> {
- return await invoke('plugin:store|entries', {
- path: this.path
- })
+ return await invoke('plugin:store|entries', { rid: this.rid })
}
/**
@@ -138,9 +152,7 @@ export class Store {
* @returns
*/
async length(): Promise {
- return await invoke('plugin:store|length', {
- path: this.path
- })
+ return await invoke('plugin:store|length', { rid: this.rid })
}
/**
@@ -152,9 +164,7 @@ export class Store {
* @returns
*/
async load(): Promise {
- await invoke('plugin:store|load', {
- path: this.path
- })
+ await invoke('plugin:store|load', { rid: this.rid })
}
/**
@@ -165,9 +175,7 @@ export class Store {
* @returns
*/
async save(): Promise {
- await invoke('plugin:store|save', {
- path: this.path
- })
+ await invoke('plugin:store|save', { rid: this.rid })
}
/**
diff --git a/plugins/store/permissions/autogenerated/commands/create_store.toml b/plugins/store/permissions/autogenerated/commands/create_store.toml
new file mode 100644
index 00000000..cde71c24
--- /dev/null
+++ b/plugins/store/permissions/autogenerated/commands/create_store.toml
@@ -0,0 +1,13 @@
+# Automatically generated - DO NOT EDIT!
+
+"$schema" = "../../schemas/schema.json"
+
+[[permission]]
+identifier = "allow-create-store"
+description = "Enables the create_store command without any pre-configured scope."
+commands.allow = ["create_store"]
+
+[[permission]]
+identifier = "deny-create-store"
+description = "Denies the create_store command without any pre-configured scope."
+commands.deny = ["create_store"]
diff --git a/plugins/store/permissions/autogenerated/reference.md b/plugins/store/permissions/autogenerated/reference.md
index 704d759d..4e9bf2cc 100644
--- a/plugins/store/permissions/autogenerated/reference.md
+++ b/plugins/store/permissions/autogenerated/reference.md
@@ -9,6 +9,7 @@ All operations are enabled by default.
+- `allow-create-store`
- `allow-clear`
- `allow-delete`
- `allow-entries`
@@ -60,6 +61,32 @@ Denies the clear command without any pre-configured scope.
+`store:allow-create-store`
+
+
+
+
+Enables the create_store command without any pre-configured scope.
+
+
+
+
+
+
+
+`store:deny-create-store`
+
+
+
+
+Denies the create_store command without any pre-configured scope.
+
+
+
+
+
+
+
`store:allow-delete`
diff --git a/plugins/store/permissions/default.toml b/plugins/store/permissions/default.toml
index d2369b27..bf888679 100644
--- a/plugins/store/permissions/default.toml
+++ b/plugins/store/permissions/default.toml
@@ -11,6 +11,7 @@ All operations are enabled by default.
"""
permissions = [
+ "allow-create-store",
"allow-clear",
"allow-delete",
"allow-entries",
diff --git a/plugins/store/permissions/schemas/schema.json b/plugins/store/permissions/schemas/schema.json
index 56bced91..6ebf788e 100644
--- a/plugins/store/permissions/schemas/schema.json
+++ b/plugins/store/permissions/schemas/schema.json
@@ -304,6 +304,16 @@
"type": "string",
"const": "deny-clear"
},
+ {
+ "description": "Enables the create_store command without any pre-configured scope.",
+ "type": "string",
+ "const": "allow-create-store"
+ },
+ {
+ "description": "Denies the create_store command without any pre-configured scope.",
+ "type": "string",
+ "const": "deny-create-store"
+ },
{
"description": "Enables the delete command without any pre-configured scope.",
"type": "string",
diff --git a/plugins/store/src/lib.rs b/plugins/store/src/lib.rs
index fa331eb5..b05bf4b4 100644
--- a/plugins/store/src/lib.rs
+++ b/plugins/store/src/lib.rs
@@ -18,12 +18,13 @@ pub use serde_json::Value as JsonValue;
use std::{
collections::HashMap,
path::{Path, PathBuf},
- sync::Mutex,
+ sync::{Mutex, Weak},
+ time::Duration,
};
-pub use store::{Store, StoreBuilder};
+pub use store::{Store, StoreBuilder, StoreInner};
use tauri::{
plugin::{self, TauriPlugin},
- AppHandle, Manager, RunEvent, Runtime, State,
+ AppHandle, Manager, ResourceId, RunEvent, Runtime, Webview,
};
mod error;
@@ -37,177 +38,138 @@ struct ChangePayload<'a> {
}
pub struct StoreCollection {
- stores: Mutex>>,
- frozen: bool,
+ stores: Mutex>>>>,
+ // frozen: bool,
}
-pub fn with_store) -> Result>(
+#[tauri::command]
+async fn create_store(
app: AppHandle,
- collection: State<'_, StoreCollection>,
- path: impl AsRef,
- f: F,
-) -> Result {
- let mut stores = collection.stores.lock().expect("mutex poisoned");
-
- let path = path.as_ref();
- if !stores.contains_key(path) {
- if collection.frozen {
- return Err(Error::NotFound(path.to_path_buf()));
- }
-
- #[allow(unused_mut)]
- let mut builder = StoreBuilder::new(path);
-
- let mut store = builder.build(app);
-
- // ignore loading errors, just use the default
- if let Err(err) = store.load() {
- warn!(
- "Failed to load store {:?} from disk: {}. Falling back to default values.",
- path, err
- );
- }
- stores.insert(path.to_path_buf(), store);
+ webview: Webview,
+ path: PathBuf,
+ auto_save: Option,
+) -> Result {
+ let mut builder = app.store_builder(path);
+ if let Some(auto_save) = auto_save {
+ builder = builder.auto_save(Duration::from_millis(auto_save));
}
-
- f(stores
- .get_mut(path)
- .expect("failed to retrieve store. This is a bug!"))
+ let store = builder.build();
+ Ok(webview.resources_table().add(store))
}
#[tauri::command]
async fn set(
- app: AppHandle,
- stores: State<'_, StoreCollection>,
- path: PathBuf,
+ webview: Webview,
+ rid: ResourceId,
key: String,
value: JsonValue,
) -> Result<()> {
- with_store(app, stores, path, |store| store.insert(key, value))
+ let store = webview.resources_table().get::>(rid)?;
+ store.set(key, value);
+ Ok(())
}
#[tauri::command]
async fn get(
- app: AppHandle,
- stores: State<'_, StoreCollection>,
- path: PathBuf,
+ webview: Webview,
+ rid: ResourceId,
key: String,
) -> Result> {
- with_store(app, stores, path, |store| Ok(store.get(key).cloned()))
+ let store = webview.resources_table().get::>(rid)?;
+ Ok(store.get(key))
}
#[tauri::command]
-async fn has(
- app: AppHandle,
- stores: State<'_, StoreCollection>,
- path: PathBuf,
- key: String,
-) -> Result {
- with_store(app, stores, path, |store| Ok(store.has(key)))
+async fn has(webview: Webview, rid: ResourceId, key: String) -> Result {
+ let store = webview.resources_table().get::>(rid)?;
+ Ok(store.has(key))
}
#[tauri::command]
-async fn delete(
- app: AppHandle,
- stores: State<'_, StoreCollection>,
- path: PathBuf,
- key: String,
-) -> Result {
- with_store(app, stores, path, |store| store.delete(key))
+async fn delete(webview: Webview, rid: ResourceId, key: String) -> Result {
+ let store = webview.resources_table().get::>(rid)?;
+ Ok(store.delete(key))
}
#[tauri::command]
-async fn clear(
- app: AppHandle,
- stores: State<'_, StoreCollection>,
- path: PathBuf,
-) -> Result<()> {
- with_store(app, stores, path, |store| store.clear())
+async fn clear(webview: Webview, rid: ResourceId) -> Result<()> {
+ let store = webview.resources_table().get::>(rid)?;
+ store.clear();
+ Ok(())
}
#[tauri::command]
-async fn reset(
- app: AppHandle,
- collection: State<'_, StoreCollection>,
- path: PathBuf,
-) -> Result<()> {
- with_store(app, collection, path, |store| store.reset())
+async fn reset(webview: Webview, rid: ResourceId) -> Result<()> {
+ let store = webview.resources_table().get::>(rid)?;
+ store.reset();
+ Ok(())
}
#[tauri::command]
-async fn keys(
- app: AppHandle,
- stores: State<'_, StoreCollection>,
- path: PathBuf,
-) -> Result> {
- with_store(app, stores, path, |store| {
- Ok(store.keys().cloned().collect())
- })
+async fn keys(webview: Webview, rid: ResourceId) -> Result> {
+ let store = webview.resources_table().get::>(rid)?;
+ Ok(store.keys())
}
#[tauri::command]
-async fn values(
- app: AppHandle,
- stores: State<'_, StoreCollection>,
- path: PathBuf,
-) -> Result> {
- with_store(app, stores, path, |store| {
- Ok(store.values().cloned().collect())
- })
+async fn values(webview: Webview, rid: ResourceId) -> Result> {
+ let store = webview.resources_table().get::>(rid)?;
+ Ok(store.values())
}
#[tauri::command]
async fn entries(
- app: AppHandle,
- stores: State<'_, StoreCollection>,
- path: PathBuf,
+ webview: Webview,
+ rid: ResourceId,
) -> Result> {
- with_store(app, stores, path, |store| {
- Ok(store
- .entries()
- .map(|(k, v)| (k.to_owned(), v.to_owned()))
- .collect())
- })
+ let store = webview.resources_table().get::>(rid)?;
+ Ok(store.entries())
}
#[tauri::command]
-async fn length(
- app: AppHandle,
- stores: State<'_, StoreCollection>,
- path: PathBuf,
-) -> Result {
- with_store(app, stores, path, |store| Ok(store.len()))
+async fn length(webview: Webview, rid: ResourceId) -> Result {
+ let store = webview.resources_table().get::>(rid)?;
+ Ok(store.length())
}
#[tauri::command]
-async fn load(
- app: AppHandle,
- stores: State<'_, StoreCollection>,
- path: PathBuf,
-) -> Result<()> {
- with_store(app, stores, path, |store| store.load())
+async fn load(webview: Webview, rid: ResourceId) -> Result<()> {
+ let store = webview.resources_table().get::>(rid)?;
+ store.load()
}
#[tauri::command]
-async fn save(
- app: AppHandle,
- stores: State<'_, StoreCollection>,
- path: PathBuf,
-) -> Result<()> {
- with_store(app, stores, path, |store| store.save())
+async fn save(webview: Webview, rid: ResourceId) -> Result<()> {
+ let store = webview.resources_table().get::>(rid)?;
+ store.save()
+}
+
+pub trait StoreExt {
+ fn store(&self, path: impl AsRef) -> Store;
+ fn store_builder(&self, path: impl AsRef) -> StoreBuilder;
+}
+
+impl> StoreExt for T {
+ fn store(&self, path: impl AsRef) -> Store {
+ StoreBuilder::new(self.app_handle(), path).build()
+ }
+
+ fn store_builder(&self, path: impl AsRef) -> StoreBuilder {
+ StoreBuilder::new(self.app_handle(), path)
+ }
}
// #[derive(Default)]
pub struct Builder {
stores: HashMap>,
- frozen: bool,
+ // frozen: bool,
}
impl Default for Builder {
fn default() -> Self {
Self {
stores: Default::default(),
- frozen: false,
+ // frozen: false,
}
}
}
@@ -217,114 +179,126 @@ impl Builder {
Self::default()
}
- /// Registers a store with the plugin.
- ///
- /// # Examples
- ///
- /// ```
- /// use tauri_plugin_store::{StoreBuilder, Builder};
- ///
- /// tauri::Builder::default()
- /// .setup(|app| {
- /// let store = StoreBuilder::new("store.bin").build(app.handle().clone());
- /// let builder = Builder::default().store(store);
- /// Ok(())
- /// });
- /// ```
- pub fn store(mut self, store: Store) -> Self {
- self.stores.insert(store.path.clone(), store);
- self
- }
-
- /// Registers multiple stores with the plugin.
- ///
- /// # Examples
- ///
- /// ```
- /// use tauri_plugin_store::{StoreBuilder, Builder};
- ///
- /// tauri::Builder::default()
- /// .setup(|app| {
- /// let store = StoreBuilder::new("store.bin").build(app.handle().clone());
- /// let builder = Builder::default().stores([store]);
- /// Ok(())
- /// });
- /// ```
- pub fn stores>>(mut self, stores: T) -> Self {
- self.stores = stores
- .into_iter()
- .map(|store| (store.path.clone(), store))
- .collect();
- self
- }
-
- /// Freezes the collection.
- ///
- /// This causes requests for plugins that haven't been registered to fail
- ///
- /// # Examples
- ///
- /// ```
- /// use tauri_plugin_store::{StoreBuilder, Builder};
- ///
- /// tauri::Builder::default()
- /// .setup(|app| {
- /// let store = StoreBuilder::new("store.bin").build(app.handle().clone());
- /// app.handle().plugin(Builder::default().freeze().build());
- /// Ok(())
- /// });
- /// ```
- pub fn freeze(mut self) -> Self {
- self.frozen = true;
- self
- }
+ // /// Registers a store with the plugin.
+ // ///
+ // /// # Examples
+ // ///
+ // /// ```
+ // /// use tauri_plugin_store::{StoreBuilder, Builder};
+ // ///
+ // /// tauri::Builder::default()
+ // /// .setup(|app| {
+ // /// let store = StoreBuilder::new("store.bin").build(app.handle().clone());
+ // /// let builder = Builder::default().store(store);
+ // /// Ok(())
+ // /// });
+ // /// ```
+ // pub fn store(mut self, store: Store) -> Self {
+ // self.stores.insert(store.path.clone(), store);
+ // self
+ // }
+
+ // /// Registers multiple stores with the plugin.
+ // ///
+ // /// # Examples
+ // ///
+ // /// ```
+ // /// use tauri_plugin_store::{StoreBuilder, Builder};
+ // ///
+ // /// tauri::Builder::default()
+ // /// .setup(|app| {
+ // /// let store = StoreBuilder::new("store.bin").build(app.handle().clone());
+ // /// let builder = Builder::default().stores([store]);
+ // /// Ok(())
+ // /// });
+ // /// ```
+ // pub fn stores>>(mut self, stores: T) -> Self {
+ // self.stores = stores
+ // .into_iter()
+ // .map(|store| (store.path.clone(), store))
+ // .collect();
+ // self
+ // }
+
+ // /// Freezes the collection.
+ // ///
+ // /// This causes requests for plugins that haven't been registered to fail
+ // ///
+ // /// # Examples
+ // ///
+ // /// ```
+ // /// use tauri_plugin_store::{StoreBuilder, Builder};
+ // ///
+ // /// tauri::Builder::default()
+ // /// .setup(|app| {
+ // /// let store = StoreBuilder::new("store.bin").build(app.handle().clone());
+ // /// app.handle().plugin(Builder::default().freeze().build());
+ // /// Ok(())
+ // /// });
+ // /// ```
+ // pub fn freeze(mut self) -> Self {
+ // self.frozen = true;
+ // self
+ // }
/// Builds the plugin.
///
/// # Examples
///
/// ```
- /// use tauri_plugin_store::{StoreBuilder, Builder};
- ///
/// tauri::Builder::default()
+ /// .plugin(tauri_plugin_store::Builder::default().build())
/// .setup(|app| {
- /// let store = StoreBuilder::new("store.bin").build(app.handle().clone());
- /// app.handle().plugin(Builder::default().build());
+ /// let store = tauri_plugin_store::StoreBuilder::new(app, "store.bin").build();
/// Ok(())
/// });
/// ```
pub fn build(mut self) -> TauriPlugin {
plugin::Builder::new("store")
.invoke_handler(tauri::generate_handler![
- set, get, has, delete, clear, reset, keys, values, length, entries, load, save
+ create_store,
+ set,
+ get,
+ has,
+ delete,
+ clear,
+ reset,
+ keys,
+ values,
+ length,
+ entries,
+ load,
+ save
])
.setup(move |app_handle, _api| {
for (path, store) in self.stores.iter_mut() {
// ignore loading errors, just use the default
if let Err(err) = store.load() {
warn!(
- "Failed to load store {:?} from disk: {}. Falling back to default values.",
- path, err
- );
+ "Failed to load store {path:?} from disk: {err}. Falling back to default values."
+ );
}
}
- app_handle.manage(StoreCollection {
- stores: Mutex::new(self.stores),
- frozen: self.frozen,
+ app_handle.manage(StoreCollection:: {
+ stores: Mutex::new(HashMap::new()),
+ // frozen: self.frozen,
});
Ok(())
})
- .on_event(|app_handle, event| {
+ .on_event(|_app_handle, event| {
if let RunEvent::Exit = event {
- let collection = app_handle.state::>();
-
- for store in collection.stores.lock().expect("mutex poisoned").values() {
- if let Err(err) = store.save() {
- eprintln!("failed to save store {:?} with error {:?}", store.path, err);
- }
- }
+ // let collection = app_handle.state::>();
+
+ // for store in collection.stores.lock().expect("mutex poisoned").values_mut() {
+ // if let Some(sender) = store.auto_save_debounce_sender.take() {
+ // let _ = sender.send(AutoSaveMessage::Cancel);
+ // }
+ // if let Err(err) = store.save() {
+ // eprintln!("failed to save store {:?} with error {:?}", store.path, err);
+ // }
+ // }
}
})
.build()
diff --git a/plugins/store/src/store.rs b/plugins/store/src/store.rs
index 08184439..b18d0027 100644
--- a/plugins/store/src/store.rs
+++ b/plugins/store/src/store.rs
@@ -2,19 +2,26 @@
// SPDX-License-Identifier: Apache-2.0
// SPDX-License-Identifier: MIT
-use crate::{ChangePayload, Error};
+use crate::{ChangePayload, StoreCollection};
use serde_json::Value as JsonValue;
use std::{
collections::HashMap,
fs::{create_dir_all, read, File},
io::Write,
path::{Path, PathBuf},
+ sync::{Arc, Mutex},
+ time::Duration,
+};
+use tauri::{AppHandle, Emitter, Manager, Resource, Runtime};
+use tokio::{
+ select,
+ sync::mpsc::{unbounded_channel, UnboundedSender},
+ time::sleep,
};
-use tauri::{AppHandle, Emitter, Manager, Runtime};
type SerializeFn =
fn(&HashMap) -> Result, Box>;
-type DeserializeFn =
+pub(crate) type DeserializeFn =
fn(&[u8]) -> Result, Box>;
fn default_serialize(
@@ -30,35 +37,38 @@ fn default_deserialize(
}
/// Builds a [`Store`]
-pub struct StoreBuilder {
+pub struct StoreBuilder {
+ app: AppHandle,
path: PathBuf,
defaults: Option>,
cache: HashMap,
serialize: SerializeFn,
deserialize: DeserializeFn,
+ auto_save: Option,
}
-impl StoreBuilder {
+impl StoreBuilder {
/// Creates a new [`StoreBuilder`].
///
/// # Examples
/// ```
- /// # fn main() -> Result<(), Box> {
- /// use tauri_plugin_store::StoreBuilder;
- ///
- /// let builder = StoreBuilder::::new("store.bin");
- ///
- /// # Ok(())
- /// # }
+ /// tauri::Builder::default()
+ /// .plugin(tauri_plugin_store::Builder::default().build())
+ /// .setup(|app| {
+ /// let builder = tauri_plugin_store::StoreBuilder::new(app, "store.bin");
+ /// Ok(())
+ /// });
/// ```
- pub fn new>(path: P) -> Self {
+ pub fn new, P: AsRef>(manager: &M, path: P) -> Self {
Self {
+ app: manager.app_handle().clone(),
// Since Store.path is only exposed to the user in emit calls we may as well simplify it here already.
path: dunce::simplified(path.as_ref()).to_path_buf(),
defaults: None,
cache: Default::default(),
serialize: default_serialize,
deserialize: default_deserialize,
+ auto_save: None,
}
}
@@ -66,19 +76,18 @@ impl StoreBuilder {
///
/// # Examples
/// ```
- /// # fn main() -> Result<(), Box> {
- /// use tauri_plugin_store::StoreBuilder;
- /// use std::collections::HashMap;
- ///
- /// let mut defaults = HashMap::new();
- ///
- /// defaults.insert("foo".to_string(), "bar".into());
- ///
- /// let builder = StoreBuilder::::new("store.bin")
- /// .defaults(defaults);
+ /// tauri::Builder::default()
+ /// .plugin(tauri_plugin_store::Builder::default().build())
+ /// .setup(|app| {
+ /// let mut defaults = std::collections::HashMap::new();
+ /// defaults.insert("foo".to_string(), "bar".into());
///
- /// # Ok(())
- /// # }
+ /// let store = tauri_plugin_store::StoreBuilder::new(app, "store.bin")
+ /// .defaults(defaults)
+ /// .build();
+ /// Ok(())
+ /// });
+ /// ```
pub fn defaults(mut self, defaults: HashMap) -> Self {
self.cache.clone_from(&defaults);
self.defaults = Some(defaults);
@@ -89,15 +98,18 @@ impl StoreBuilder {
///
/// # Examples
/// ```
- /// # fn main() -> Result<(), Box> {
- /// use tauri_plugin_store::StoreBuilder;
- ///
- /// let builder = StoreBuilder::::new("store.bin")
- /// .default("foo".to_string(), "bar".into());
- ///
- /// # Ok(())
- /// # }
- pub fn default(mut self, key: String, value: JsonValue) -> Self {
+ /// tauri::Builder::default()
+ /// .plugin(tauri_plugin_store::Builder::default().build())
+ /// .setup(|app| {
+ /// let store = tauri_plugin_store::StoreBuilder::new(app, "store.bin")
+ /// .default("foo".to_string(), "bar")
+ /// .build();
+ /// Ok(())
+ /// });
+ /// ```
+ pub fn default(mut self, key: impl Into, value: impl Into) -> Self {
+ let key = key.into();
+ let value = value.into();
self.cache.insert(key.clone(), value.clone());
self.defaults
.get_or_insert(HashMap::new())
@@ -109,14 +121,15 @@ impl StoreBuilder {
///
/// # Examples
/// ```
- /// # fn main() -> Result<(), Box> {
- /// use tauri_plugin_store::StoreBuilder;
- ///
- /// let builder = StoreBuilder::::new("store.json")
- /// .serialize(|cache| serde_json::to_vec(&cache).map_err(Into::into));
- ///
- /// # Ok(())
- /// # }
+ /// tauri::Builder::default()
+ /// .plugin(tauri_plugin_store::Builder::default().build())
+ /// .setup(|app| {
+ /// let store = tauri_plugin_store::StoreBuilder::new(app, "store.json")
+ /// .serialize(|cache| serde_json::to_vec(&cache).map_err(Into::into))
+ /// .build();
+ /// Ok(())
+ /// });
+ /// ```
pub fn serialize(mut self, serialize: SerializeFn) -> Self {
self.serialize = serialize;
self
@@ -126,53 +139,102 @@ impl StoreBuilder {
///
/// # Examples
/// ```
- /// # fn main() -> Result<(), Box> {
- /// use tauri_plugin_store::StoreBuilder;
- ///
- /// let builder = StoreBuilder::::new("store.json")
- /// .deserialize(|bytes| serde_json::from_slice(&bytes).map_err(Into::into));
- ///
- /// # Ok(())
- /// # }
+ /// tauri::Builder::default()
+ /// .plugin(tauri_plugin_store::Builder::default().build())
+ /// .setup(|app| {
+ /// let store = tauri_plugin_store::StoreBuilder::new(app, "store.json")
+ /// .deserialize(|bytes| serde_json::from_slice(&bytes).map_err(Into::into))
+ /// .build();
+ /// Ok(())
+ /// });
+ /// ```
pub fn deserialize(mut self, deserialize: DeserializeFn) -> Self {
self.deserialize = deserialize;
self
}
+ /// Auto save on modified with a debounce duration
+ ///
+ /// Note: only works if this store is managed by the plugin (e.g. made using [`crate::with_store`] or inserted into [`crate::Builder`])
+ ///
+ /// # Examples
+ /// ```
+ ///
+ /// tauri::Builder::default()
+ /// .plugin(tauri_plugin_store::Builder::default().build())
+ /// .setup(|app| {
+ /// let store = tauri_plugin_store::StoreBuilder::new(app, "store.json")
+ /// .auto_save(std::time::Duration::from_millis(100))
+ /// .build();
+ /// Ok(())
+ /// });
+ /// ```
+ pub fn auto_save(mut self, debounce_duration: Duration) -> Self {
+ self.auto_save = Some(debounce_duration);
+ self
+ }
+
/// Builds the [`Store`].
///
/// # Examples
/// ```
/// tauri::Builder::default()
+ /// .plugin(tauri_plugin_store::Builder::default().build())
/// .setup(|app| {
- /// let store = tauri_plugin_store::StoreBuilder::new("store.json").build(app.handle().clone());
+ /// let store = tauri_plugin_store::StoreBuilder::new(app, "store.json").build();
/// Ok(())
/// });
/// ```
- pub fn build(self, app: AppHandle) -> Store {
+ pub fn build(self) -> Store {
+ let collection = self.app.state::>();
+ let mut stores = collection.stores.lock().unwrap();
+ let store = stores
+ .get(&self.path)
+ .and_then(|store| store.upgrade())
+ .unwrap_or_else(|| {
+ let mut store = StoreInner::new(self.app.clone(), self.path.clone());
+ let _ = store.load(self.deserialize);
+ let store = Arc::new(Mutex::new(store));
+ stores.insert(
+ self.path.clone(),
+ Arc::>>::downgrade(&store),
+ );
+ store
+ });
+ drop(stores);
Store {
- app,
- path: self.path,
defaults: self.defaults,
- cache: self.cache,
serialize: self.serialize,
deserialize: self.deserialize,
+ auto_save: self.auto_save,
+ auto_save_debounce_sender: Arc::new(Mutex::new(None)),
+ store,
}
}
}
+pub(crate) enum AutoSaveMessage {
+ Reset,
+ Cancel,
+}
+
#[derive(Clone)]
-pub struct Store {
+pub struct StoreInner {
pub(crate) app: AppHandle