From 8c07aaae3c4cec2acf02fedcbcb7fcbfb5edd286 Mon Sep 17 00:00:00 2001 From: jeasonnow Date: Tue, 30 Jul 2024 10:53:06 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E5=8D=87=E7=BA=A7=20tauri=20?= =?UTF-8?q?=E5=88=B0=202.x?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 +- src-tauri/Cargo.lock | 2575 +++++++++----------- src-tauri/Cargo.toml | 16 +- src-tauri/capabilities/migrated.json | 17 + src-tauri/gen/schemas/acl-manifests.json | 1 + src-tauri/gen/schemas/capabilities.json | 1 + src-tauri/gen/schemas/desktop-schema.json | 2602 +++++++++++++++++++++ src-tauri/gen/schemas/macOS-schema.json | 2602 +++++++++++++++++++++ src-tauri/icons/icon.png | Bin 0 -> 72397 bytes src-tauri/src/app/invoke.rs | 23 +- src-tauri/src/app/menu.rs | 37 +- src-tauri/src/app/window.rs | 12 +- src-tauri/src/lib.rs | 90 + src-tauri/src/main.rs | 80 +- src-tauri/src/util.rs | 11 +- src-tauri/tauri.conf.json | 41 +- src-tauri/tauri.macos.conf.json | 38 +- 17 files changed, 6475 insertions(+), 1673 deletions(-) create mode 100644 src-tauri/capabilities/migrated.json create mode 100644 src-tauri/gen/schemas/acl-manifests.json create mode 100644 src-tauri/gen/schemas/capabilities.json create mode 100644 src-tauri/gen/schemas/desktop-schema.json create mode 100644 src-tauri/gen/schemas/macOS-schema.json create mode 100644 src-tauri/icons/icon.png create mode 100644 src-tauri/src/lib.rs diff --git a/package.json b/package.json index 7fc9cf1..64dde8d 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,7 @@ "license": "MIT", "dependencies": { "@tauri-apps/api": "^1.5.4", - "@tauri-apps/cli": "^1.5.13", + "@tauri-apps/cli": "^2.0.0-beta.22", "axios": "^1.6.8", "chalk": "^5.3.0", "commander": "^11.1.0", diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 9bf5d30..ccd4e90 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -71,6 +71,9 @@ dependencies = [ "serde_json", "tauri", "tauri-build", + "tauri-plugin-clipboard-manager", + "tauri-plugin-global-shortcut", + "tauri-plugin-http", "tauri-plugin-oauth", "tauri-plugin-window-state", ] @@ -82,7 +85,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9fb4009533e8ff8f1450a5bcbc30f4242a1d34442221f72314bea1f5dc9c7f89" dependencies = [ "clipboard-win", - "core-graphics 0.23.2", + "core-graphics", "image 0.25.1", "log", "objc2", @@ -90,177 +93,30 @@ dependencies = [ "objc2-foundation", "parking_lot", "windows-sys 0.48.0", - "wl-clipboard-rs", "x11rb", ] -[[package]] -name = "async-broadcast" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "258b52a1aa741b9f09783b2d86cf0aeeb617bbf847f6933340a39644227acbdb" -dependencies = [ - "event-listener 5.3.0", - "event-listener-strategy 0.5.2", - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "async-channel" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "136d4d23bcc79e27423727b36823d86233aad06dfea531837b038394d11e9928" -dependencies = [ - "concurrent-queue", - "event-listener 5.3.0", - "event-listener-strategy 0.5.2", - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "async-executor" -version = "1.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b10202063978b3351199d68f8b22c4e47e4b1b822f8d43fd862d5ea8c006b29a" -dependencies = [ - "async-task", - "concurrent-queue", - "fastrand", - "futures-lite", - "slab", -] - -[[package]] -name = "async-fs" -version = "2.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebcd09b382f40fcd159c2d695175b2ae620ffa5f3bd6f664131efff4e8b9e04a" -dependencies = [ - "async-lock", - "blocking", - "futures-lite", -] - -[[package]] -name = "async-io" -version = "2.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcccb0f599cfa2f8ace422d3555572f47424da5648a4382a9dd0310ff8210884" -dependencies = [ - "async-lock", - "cfg-if", - "concurrent-queue", - "futures-io", - "futures-lite", - "parking", - "polling", - "rustix", - "slab", - "tracing", - "windows-sys 0.52.0", -] - -[[package]] -name = "async-lock" -version = "3.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d034b430882f8381900d3fe6f0aaa3ad94f2cb4ac519b429692a1bc2dda4ae7b" -dependencies = [ - "event-listener 4.0.3", - "event-listener-strategy 0.4.0", - "pin-project-lite", -] - -[[package]] -name = "async-process" -version = "2.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a53fc6301894e04a92cb2584fedde80cb25ba8e02d9dc39d4a87d036e22f397d" -dependencies = [ - "async-channel", - "async-io", - "async-lock", - "async-signal", - "async-task", - "blocking", - "cfg-if", - "event-listener 5.3.0", - "futures-lite", - "rustix", - "tracing", - "windows-sys 0.52.0", -] - -[[package]] -name = "async-recursion" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.61", -] - -[[package]] -name = "async-signal" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afe66191c335039c7bb78f99dc7520b0cbb166b3a1cb33a03f53d8a1c6f2afda" -dependencies = [ - "async-io", - "async-lock", - "atomic-waker", - "cfg-if", - "futures-core", - "futures-io", - "rustix", - "signal-hook-registry", - "slab", - "windows-sys 0.52.0", -] - -[[package]] -name = "async-task" -version = "4.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" - -[[package]] -name = "async-trait" -version = "0.1.80" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.61", -] - [[package]] name = "atk" -version = "0.15.1" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c3d816ce6f0e2909a96830d6911c2aff044370b1ef92d7f267b43bae5addedd" +checksum = "b4af014b17dd80e8af9fa689b2d4a211ddba6eb583c1622f35d0cb543f6b17e4" dependencies = [ "atk-sys", - "bitflags 1.3.2", "glib", "libc", ] [[package]] name = "atk-sys" -version = "0.15.1" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58aeb089fb698e06db8089971c7ee317ab9644bade33383f63631437b03aafb6" +checksum = "251e0b7d90e33e0ba930891a505a9a35ece37b2dd37a14f3ffc306c13b980009" dependencies = [ "glib-sys", "gobject-sys", "libc", - "system-deps 6.2.2", + "system-deps", ] [[package]] @@ -290,12 +146,6 @@ dependencies = [ "rustc-demangle", ] -[[package]] -name = "base64" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" - [[package]] name = "base64" version = "0.21.7" @@ -308,21 +158,18 @@ version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" -[[package]] -name = "bincode" -version = "1.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" -dependencies = [ - "serde", -] - [[package]] name = "binfarce" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "18464ccbb85e5dede30d70cc7676dc9950a0fb7dbf595a43d765be9123c616a2" +[[package]] +name = "bit_field" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc827186963e592360843fb5ba4b973e145841266c1357f7180c43526f2e5b61" + [[package]] name = "bitflags" version = "1.3.2" @@ -334,6 +181,9 @@ name = "bitflags" version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" +dependencies = [ + "serde", +] [[package]] name = "block" @@ -359,20 +209,6 @@ dependencies = [ "objc2", ] -[[package]] -name = "blocking" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "495f7104e962b7356f0aeb34247aca1fe7d2e783b346582db7f2904cb5717e88" -dependencies = [ - "async-channel", - "async-lock", - "async-task", - "futures-io", - "futures-lite", - "piper", -] - [[package]] name = "brotli" version = "3.5.0" @@ -394,16 +230,6 @@ dependencies = [ "alloc-stdlib", ] -[[package]] -name = "bstr" -version = "1.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05efc5cfd9110c8416e471df0e96702d58690178e206e61b7173706673c93706" -dependencies = [ - "memchr", - "serde", -] - [[package]] name = "bumpalo" version = "3.16.0" @@ -433,26 +259,36 @@ dependencies = [ [[package]] name = "cairo-rs" -version = "0.15.12" +version = "0.18.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c76ee391b03d35510d9fa917357c7f1855bd9a6659c95a1b392e33f49b3369bc" +checksum = "8ca26ef0159422fb77631dc9d17b102f253b876fe1586b03b803e63a309b4ee2" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.5.0", "cairo-sys-rs", "glib", "libc", + "once_cell", "thiserror", ] [[package]] name = "cairo-sys-rs" -version = "0.15.1" +version = "0.18.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c55d429bef56ac9172d25fecb85dc8068307d17acd74b377866b7a1ef25d3c8" +checksum = "685c9fa8e590b8b3d678873528d83411db17242a73fccaed827770ea0fedda51" dependencies = [ "glib-sys", "libc", - "system-deps 6.2.2", + "system-deps", +] + +[[package]] +name = "camino" +version = "1.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0ec6b951b160caa93cc0c7b209e5a3bff7aae9062213451ac99493cd844c239" +dependencies = [ + "serde", ] [[package]] @@ -472,13 +308,36 @@ dependencies = [ ] [[package]] -name = "cargo_toml" -version = "0.15.3" +name = "cargo-platform" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "599aa35200ffff8f04c1925aa1acc92fa2e08874379ef42e210a80e527e60838" +checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc" dependencies = [ "serde", - "toml 0.7.8", +] + +[[package]] +name = "cargo_metadata" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" +dependencies = [ + "camino", + "cargo-platform", + "semver", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "cargo_toml" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a969e13a7589e9e3e4207e153bae624ade2b5622fb4684a4923b23ec3d57719" +dependencies = [ + "serde", + "toml 0.8.2", ] [[package]] @@ -504,15 +363,6 @@ dependencies = [ "uuid 1.8.0", ] -[[package]] -name = "cfg-expr" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3431df59f28accaf4cb4eed4a9acc66bea3f3c3753aa6cdc2f024174ef232af7" -dependencies = [ - "smallvec", -] - [[package]] name = "cfg-expr" version = "0.15.8" @@ -531,9 +381,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "cfg_aliases" -version = "0.1.1" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "chrono" @@ -559,16 +409,16 @@ dependencies = [ [[package]] name = "cocoa" -version = "0.24.1" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f425db7937052c684daec3bd6375c8abe2d146dca4b8b143d6db777c39138f3a" +checksum = "f6140449f97a6e97f9511815c5632d84c8aacf8ac271ad77c559218161a1373c" dependencies = [ "bitflags 1.3.2", "block", "cocoa-foundation", "core-foundation", - "core-graphics 0.22.3", - "foreign-types 0.3.2", + "core-graphics", + "foreign-types", "libc", "objc", ] @@ -603,21 +453,40 @@ dependencies = [ "memchr", ] -[[package]] -name = "concurrent-queue" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" -dependencies = [ - "crossbeam-utils", -] - [[package]] name = "convert_case" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" +[[package]] +name = "cookie" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ddef33a339a91ea89fb53151bd0a4689cfce27055c291dfa69945475d22c747" +dependencies = [ + "percent-encoding", + "time", + "version_check", +] + +[[package]] +name = "cookie_store" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4934e6b7e8419148b6ef56950d277af8561060b56afd59e2aadf98b59fce6baa" +dependencies = [ + "cookie", + "idna 0.5.0", + "log", + "publicsuffix", + "serde", + "serde_derive", + "serde_json", + "time", + "url", +] + [[package]] name = "core-foundation" version = "0.9.4" @@ -634,19 +503,6 @@ version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" -[[package]] -name = "core-graphics" -version = "0.22.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2581bbab3b8ffc6fcbd550bf46c355135d16e9ff2a6ea032ad6b9bf1d7efe4fb" -dependencies = [ - "bitflags 1.3.2", - "core-foundation", - "core-graphics-types", - "foreign-types 0.3.2", - "libc", -] - [[package]] name = "core-graphics" version = "0.23.2" @@ -656,7 +512,7 @@ dependencies = [ "bitflags 1.3.2", "core-foundation", "core-graphics-types", - "foreign-types 0.5.0", + "foreign-types", "libc", ] @@ -723,6 +579,12 @@ version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + [[package]] name = "crypto-common" version = "0.1.6" @@ -805,6 +667,12 @@ dependencies = [ "syn 2.0.61", ] +[[package]] +name = "data-url" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c297a1c74b71ae29df00c3e22dd9534821d60eb9af5a0192823fa2acea70c2a" + [[package]] name = "deranged" version = "0.3.11" @@ -815,17 +683,6 @@ dependencies = [ "serde", ] -[[package]] -name = "derive-new" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d150dea618e920167e5973d70ae6ece4385b7164e0d799fe7c122dd0a5d912ad" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.61", -] - [[package]] name = "derive_more" version = "0.99.17" @@ -850,24 +707,24 @@ dependencies = [ ] [[package]] -name = "dirs-next" -version = "2.0.0" +name = "dirs" +version = "5.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" +checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" dependencies = [ - "cfg-if", - "dirs-sys-next", + "dirs-sys", ] [[package]] -name = "dirs-sys-next" -version = "0.1.2" +name = "dirs-sys" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" dependencies = [ "libc", + "option-ext", "redox_users", - "winapi", + "windows-sys 0.48.0", ] [[package]] @@ -877,19 +734,36 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" [[package]] -name = "dlib" -version = "0.5.2" +name = "dlopen2" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" +checksum = "9e1297103d2bbaea85724fcee6294c2d50b1081f9ad47d0f6f6f61eda65315a6" dependencies = [ - "libloading 0.8.3", + "dlopen2_derive", + "libc", + "once_cell", + "winapi", ] [[package]] -name = "downcast-rs" -version = "1.2.1" +name = "dlopen2_derive" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" +checksum = "f2b99bf03862d7f545ebc28ddd33a665b50865f4dfd84031a393823879bd4c54" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.61", +] + +[[package]] +name = "dpi" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f25c0e292a7ca6d6498557ff1df68f32c99850012b6ea401cf8daf771f22ff53" +dependencies = [ + "serde", +] [[package]] name = "dtoa" @@ -912,6 +786,18 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b" +[[package]] +name = "dyn-clone" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" + +[[package]] +name = "either" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" + [[package]] name = "embed-resource" version = "2.4.2" @@ -921,9 +807,9 @@ dependencies = [ "cc", "memchr", "rustc_version", - "toml 0.8.12", + "toml 0.8.2", "vswhom", - "winreg 0.52.0", + "winreg", ] [[package]] @@ -941,39 +827,22 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "endi" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf" - -[[package]] -name = "enumflags2" -version = "0.7.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3278c9d5fb675e0a51dabcf4c0d355f692b064171535ba72361be1528a9d8e8d" -dependencies = [ - "enumflags2_derive", - "serde", -] - -[[package]] -name = "enumflags2_derive" -version = "0.7.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c785274071b1b420972453b306eeca06acf4633829db4223b58a2a8c5953bc4" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.61", -] - [[package]] name = "equivalent" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +[[package]] +name = "erased-serde" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24e2389d65ab4fab27dc2a5de7b191e1f6617d1f1c8855c0dc569c94a4cbb18d" +dependencies = [ + "serde", + "typeid", +] + [[package]] name = "errno" version = "0.3.8" @@ -991,45 +860,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a0474425d51df81997e2f90a21591180b38eccf27292d755f3e30750225c175b" [[package]] -name = "event-listener" -version = "4.0.3" +name = "exr" +version = "1.72.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b215c49b2b248c855fb73579eb1f4f26c38ffdc12973e20e07b91d78d5646e" +checksum = "887d93f60543e9a9362ef8a21beedd0a833c5d9610e18c67abe15a5963dcb1a4" dependencies = [ - "concurrent-queue", - "parking", - "pin-project-lite", -] - -[[package]] -name = "event-listener" -version = "5.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d9944b8ca13534cdfb2800775f8dd4902ff3fc75a50101466decadfdf322a24" -dependencies = [ - "concurrent-queue", - "parking", - "pin-project-lite", -] - -[[package]] -name = "event-listener-strategy" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "958e4d70b6d5e81971bebec42271ec641e7ff4e170a6fa605f2b8a8b65cb97d3" -dependencies = [ - "event-listener 4.0.3", - "pin-project-lite", -] - -[[package]] -name = "event-listener-strategy" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1" -dependencies = [ - "event-listener 5.3.0", - "pin-project-lite", + "bit_field", + "flume", + "half", + "lebe", + "miniz_oxide", + "rayon-core", + "smallvec", + "zune-inflate", ] [[package]] @@ -1038,12 +881,6 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" -[[package]] -name = "fastrand" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" - [[package]] name = "fdeflate" version = "0.3.4" @@ -1059,28 +896,10 @@ version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f" dependencies = [ - "memoffset 0.9.1", + "memoffset", "rustc_version", ] -[[package]] -name = "filetime" -version = "0.2.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall 0.4.1", - "windows-sys 0.52.0", -] - -[[package]] -name = "fixedbitset" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" - [[package]] name = "flate2" version = "1.0.30" @@ -1091,21 +910,21 @@ dependencies = [ "miniz_oxide", ] +[[package]] +name = "flume" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55ac459de2512911e4b674ce33cf20befaba382d05b62b008afc1c8b57cbf181" +dependencies = [ + "spin", +] + [[package]] name = "fnv" version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" -[[package]] -name = "foreign-types" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" -dependencies = [ - "foreign-types-shared 0.1.1", -] - [[package]] name = "foreign-types" version = "0.5.0" @@ -1113,7 +932,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" dependencies = [ "foreign-types-macros", - "foreign-types-shared 0.3.1", + "foreign-types-shared", ] [[package]] @@ -1127,12 +946,6 @@ dependencies = [ "syn 2.0.61", ] -[[package]] -name = "foreign-types-shared" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" - [[package]] name = "foreign-types-shared" version = "0.3.1" @@ -1190,19 +1003,6 @@ version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" -[[package]] -name = "futures-lite" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5" -dependencies = [ - "fastrand", - "futures-core", - "futures-io", - "parking", - "pin-project-lite", -] - [[package]] name = "futures-macro" version = "0.3.30" @@ -1254,11 +1054,10 @@ dependencies = [ [[package]] name = "gdk" -version = "0.15.4" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6e05c1f572ab0e1f15be94217f0dc29088c248b14f792a5ff0af0d84bcda9e8" +checksum = "f5ba081bdef3b75ebcdbfc953699ed2d7417d6bd853347a42a37d76406a33646" dependencies = [ - "bitflags 1.3.2", "cairo-rs", "gdk-pixbuf", "gdk-sys", @@ -1270,35 +1069,35 @@ dependencies = [ [[package]] name = "gdk-pixbuf" -version = "0.15.11" +version = "0.18.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad38dd9cc8b099cceecdf41375bb6d481b1b5a7cd5cd603e10a69a9383f8619a" +checksum = "50e1f5f1b0bfb830d6ccc8066d18db35c487b1b2b1e8589b5dfe9f07e8defaec" dependencies = [ - "bitflags 1.3.2", "gdk-pixbuf-sys", "gio", "glib", "libc", + "once_cell", ] [[package]] name = "gdk-pixbuf-sys" -version = "0.15.10" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "140b2f5378256527150350a8346dbdb08fadc13453a7a2d73aecd5fab3c402a7" +checksum = "3f9839ea644ed9c97a34d129ad56d38a25e6756f99f3a88e15cd39c20629caf7" dependencies = [ "gio-sys", "glib-sys", "gobject-sys", "libc", - "system-deps 6.2.2", + "system-deps", ] [[package]] name = "gdk-sys" -version = "0.15.1" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32e7a08c1e8f06f4177fb7e51a777b8c1689f743a7bc11ea91d44d2226073a88" +checksum = "31ff856cb3386dae1703a920f803abafcc580e9b5f711ca62ed1620c25b51ff2" dependencies = [ "cairo-sys-rs", "gdk-pixbuf-sys", @@ -1308,33 +1107,47 @@ dependencies = [ "libc", "pango-sys", "pkg-config", - "system-deps 6.2.2", + "system-deps", ] [[package]] name = "gdkwayland-sys" -version = "0.15.3" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cca49a59ad8cfdf36ef7330fe7bdfbe1d34323220cc16a0de2679ee773aee2c2" +checksum = "a90fbf5c033c65d93792192a49a8efb5bb1e640c419682a58bb96f5ae77f3d4a" dependencies = [ "gdk-sys", "glib-sys", "gobject-sys", "libc", "pkg-config", - "system-deps 6.2.2", + "system-deps", +] + +[[package]] +name = "gdkx11" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2ea8a4909d530f79921290389cbd7c34cb9d623bfe970eaae65ca5f9cd9cce" +dependencies = [ + "gdk", + "gdkx11-sys", + "gio", + "glib", + "libc", + "x11", ] [[package]] name = "gdkx11-sys" -version = "0.15.1" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4b7f8c7a84b407aa9b143877e267e848ff34106578b64d1e0a24bf550716178" +checksum = "fee8f00f4ee46cad2939b8990f5c70c94ff882c3028f3cc5abf950fa4ab53043" dependencies = [ "gdk-sys", "glib-sys", "libc", - "system-deps 6.2.2", + "system-deps", "x11", ] @@ -1393,6 +1206,16 @@ dependencies = [ "wasi 0.11.0+wasi-snapshot-preview1", ] +[[package]] +name = "gif" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fb2d69b19215e18bb912fa30f7ce15846e301408695e44e0ef719f1da9e19f2" +dependencies = [ + "color_quant", + "weezl", +] + [[package]] name = "gimli" version = "0.28.1" @@ -1401,49 +1224,54 @@ checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" [[package]] name = "gio" -version = "0.15.12" +version = "0.18.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68fdbc90312d462781a395f7a16d96a2b379bb6ef8cd6310a2df272771c4283b" +checksum = "d4fc8f532f87b79cbc51a79748f16a6828fb784be93145a322fa14d06d354c73" dependencies = [ - "bitflags 1.3.2", "futures-channel", "futures-core", "futures-io", + "futures-util", "gio-sys", "glib", "libc", "once_cell", + "pin-project-lite", + "smallvec", "thiserror", ] [[package]] name = "gio-sys" -version = "0.15.10" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32157a475271e2c4a023382e9cab31c4584ee30a97da41d3c4e9fdd605abcf8d" +checksum = "37566df850baf5e4cb0dfb78af2e4b9898d817ed9263d1090a2df958c64737d2" dependencies = [ "glib-sys", "gobject-sys", "libc", - "system-deps 6.2.2", + "system-deps", "winapi", ] [[package]] name = "glib" -version = "0.15.12" +version = "0.18.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edb0306fbad0ab5428b0ca674a23893db909a98582969c9b537be4ced78c505d" +checksum = "233daaf6e83ae6a12a52055f568f9d7cf4671dabb78ff9560ab6da230ce00ee5" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.5.0", "futures-channel", "futures-core", "futures-executor", "futures-task", + "futures-util", + "gio-sys", "glib-macros", "glib-sys", "gobject-sys", "libc", + "memchr", "once_cell", "smallvec", "thiserror", @@ -1451,27 +1279,26 @@ dependencies = [ [[package]] name = "glib-macros" -version = "0.15.13" +version = "0.18.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10c6ae9f6fa26f4fb2ac16b528d138d971ead56141de489f8111e259b9df3c4a" +checksum = "0bb0228f477c0900c880fd78c8759b95c7636dbd7842707f49e132378aa2acdc" dependencies = [ - "anyhow", "heck 0.4.1", - "proc-macro-crate 1.3.1", + "proc-macro-crate 2.0.2", "proc-macro-error", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.61", ] [[package]] name = "glib-sys" -version = "0.15.10" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef4b192f8e65e9cf76cbf4ea71fa8e3be4a0e18ffe3d68b8da6836974cc5bad4" +checksum = "063ce2eb6a8d0ea93d2bf8ba1957e78dbab6be1c2220dd3daca57d5a9d869898" dependencies = [ "libc", - "system-deps 6.2.2", + "system-deps", ] [[package]] @@ -1481,37 +1308,41 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" [[package]] -name = "globset" -version = "0.4.14" +name = "global-hotkey" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57da3b9b5b85bd66f31093f8c408b90a74431672542466497dcbdfdc02034be1" +checksum = "89cb13e8c52c87e28a46eae3e5e65b8f0cd465c4c9e67b13d56c70412e792bc3" dependencies = [ - "aho-corasick", - "bstr", - "log", - "regex-automata 0.4.6", - "regex-syntax 0.8.3", + "bitflags 2.5.0", + "cocoa", + "crossbeam-channel", + "keyboard-types", + "objc", + "once_cell", + "serde", + "thiserror", + "windows-sys 0.52.0", + "x11-dl", ] [[package]] name = "gobject-sys" -version = "0.15.10" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d57ce44246becd17153bd035ab4d32cfee096a657fc01f2231c9278378d1e0a" +checksum = "0850127b514d1c4a4654ead6dedadb18198999985908e6ffe4436f53c785ce44" dependencies = [ "glib-sys", "libc", - "system-deps 6.2.2", + "system-deps", ] [[package]] name = "gtk" -version = "0.15.5" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e3004a2d5d6d8b5057d2b57b3712c9529b62e82c77f25c1fecde1fd5c23bd0" +checksum = "93c4f5e0e20b60e10631a5f06da7fe3dda744b05ad0ea71fee2f47adf865890c" dependencies = [ "atk", - "bitflags 1.3.2", "cairo-rs", "field-offset", "futures-channel", @@ -1522,16 +1353,15 @@ dependencies = [ "gtk-sys", "gtk3-macros", "libc", - "once_cell", "pango", "pkg-config", ] [[package]] name = "gtk-sys" -version = "0.15.3" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5bc2f0587cba247f60246a0ca11fe25fb733eabc3de12d1965fc07efab87c84" +checksum = "771437bf1de2c1c0b496c11505bdf748e26066bbe942dfc8f614c9460f6d7722" dependencies = [ "atk-sys", "cairo-sys-rs", @@ -1542,34 +1372,33 @@ dependencies = [ "gobject-sys", "libc", "pango-sys", - "system-deps 6.2.2", + "system-deps", ] [[package]] name = "gtk3-macros" -version = "0.15.6" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "684c0456c086e8e7e9af73ec5b84e35938df394712054550e81558d21c44ab0d" +checksum = "c6063efb63db582968fb7df72e1ae68aa6360dcfb0a75143f34fc7d616bad75e" dependencies = [ - "anyhow", "proc-macro-crate 1.3.1", "proc-macro-error", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.61", ] [[package]] name = "h2" -version = "0.3.26" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" +checksum = "fa82e28a107a8cc405f0839610bdc9b15f1e25ec7d696aa5cf173edbcb1486ab" dependencies = [ + "atomic-waker", "bytes", "fnv", "futures-core", "futures-sink", - "futures-util", "http", "indexmap 2.2.6", "slab", @@ -1578,6 +1407,16 @@ dependencies = [ "tracing", ] +[[package]] +name = "half" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888" +dependencies = [ + "cfg-if", + "crunchy", +] + [[package]] name = "hashbrown" version = "0.12.3" @@ -1590,15 +1429,6 @@ version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" -[[package]] -name = "heck" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" -dependencies = [ - "unicode-segmentation", -] - [[package]] name = "heck" version = "0.4.1" @@ -1623,15 +1453,6 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" -[[package]] -name = "home" -version = "0.5.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" -dependencies = [ - "windows-sys 0.52.0", -] - [[package]] name = "html5ever" version = "0.26.0" @@ -1648,9 +1469,9 @@ dependencies = [ [[package]] name = "http" -version = "0.2.12" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" dependencies = [ "bytes", "fnv", @@ -1659,20 +1480,26 @@ dependencies = [ [[package]] name = "http-body" -version = "0.4.6" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", "http", - "pin-project-lite", ] [[package]] -name = "http-range" -version = "0.1.5" +name = "http-body-util" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21dec9db110f5f872ed9699c3ecf50cf16f423502706ba5c72462e28d3157573" +checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" +dependencies = [ + "bytes", + "futures-util", + "http", + "http-body", + "pin-project-lite", +] [[package]] name = "httparse" @@ -1680,47 +1507,62 @@ version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" -[[package]] -name = "httpdate" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" - [[package]] name = "hyper" -version = "0.14.28" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80" +checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05" dependencies = [ "bytes", "futures-channel", - "futures-core", "futures-util", "h2", "http", "http-body", "httparse", - "httpdate", "itoa 1.0.11", "pin-project-lite", - "socket2", + "smallvec", "tokio", - "tower-service", - "tracing", "want", ] [[package]] -name = "hyper-tls" -version = "0.5.0" +name = "hyper-rustls" +version = "0.27.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" +checksum = "5ee4be2c948921a1a5320b629c4193916ed787a7f7f293fd3f7f5a6c9de74155" +dependencies = [ + "futures-util", + "http", + "hyper", + "hyper-util", + "rustls", + "rustls-pki-types", + "tokio", + "tokio-rustls", + "tower-service", + "webpki-roots", +] + +[[package]] +name = "hyper-util" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ab92f4f49ee4fb4f997c784b7a2e0fa70050211e0b6a287f898c3c9785ca956" dependencies = [ "bytes", + "futures-channel", + "futures-util", + "http", + "http-body", "hyper", - "native-tls", + "pin-project-lite", + "socket2", "tokio", - "tokio-native-tls", + "tower", + "tower-service", + "tracing", ] [[package]] @@ -1764,28 +1606,22 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "0.5.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" dependencies = [ "unicode-bidi", "unicode-normalization", ] [[package]] -name = "ignore" -version = "0.4.22" +name = "idna" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b46810df39e66e925525d6e38ce1e7f6e1d208f72dc39757880fcb66e2c58af1" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" dependencies = [ - "crossbeam-deque", - "globset", - "log", - "memchr", - "regex-automata 0.4.6", - "same-file", - "walkdir", - "winapi-util", + "unicode-bidi", + "unicode-normalization", ] [[package]] @@ -1797,7 +1633,13 @@ dependencies = [ "bytemuck", "byteorder", "color_quant", + "exr", + "gif", + "jpeg-decoder", "num-traits", + "png", + "qoi", + "tiff", ] [[package]] @@ -1837,9 +1679,9 @@ dependencies = [ [[package]] name = "infer" -version = "0.13.0" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f551f8c3a39f68f986517db0d1759de85881894fdc7db798bd2a9df9cb04b7fc" +checksum = "cb33622da908807a06f9513c19b3c1ad50fab3e4137d82a78107d502075aa199" dependencies = [ "cfb", ] @@ -1873,9 +1715,9 @@ checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "javascriptcore-rs" -version = "0.16.0" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf053e7843f2812ff03ef5afe34bb9c06ffee120385caad4f6b9967fcd37d41c" +checksum = "ca5671e9ffce8ffba57afc24070e906da7fc4b1ba66f2cabebf61bf2ea257fcc" dependencies = [ "bitflags 1.3.2", "glib", @@ -1884,28 +1726,30 @@ dependencies = [ [[package]] name = "javascriptcore-rs-sys" -version = "0.4.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "905fbb87419c5cde6e3269537e4ea7d46431f3008c5d057e915ef3f115e7793c" +checksum = "af1be78d14ffa4b75b66df31840478fef72b51f8c2465d4ca7c194da9f7a5124" dependencies = [ "glib-sys", "gobject-sys", "libc", - "system-deps 5.0.0", + "system-deps", ] [[package]] name = "jni" -version = "0.20.0" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "039022cdf4d7b1cf548d31f60ae783138e5fd42013f6271049d7df7afadef96c" +checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" dependencies = [ "cesu8", + "cfg-if", "combine", "jni-sys", "log", "thiserror", "walkdir", + "windows-sys 0.45.0", ] [[package]] @@ -1919,6 +1763,9 @@ name = "jpeg-decoder" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f5d4a7da358eff58addd2877a45865158f0d78c911d43a5784ceb7bbf52833b0" +dependencies = [ + "rayon", +] [[package]] name = "js-sys" @@ -1946,6 +1793,17 @@ dependencies = [ "thiserror", ] +[[package]] +name = "keyboard-types" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b750dcadc39a09dbadd74e118f6dd6598df77fa01df0cfcdc52c28dece74528a" +dependencies = [ + "bitflags 2.5.0", + "serde", + "unicode-segmentation", +] + [[package]] name = "kuchikiki" version = "0.8.2" @@ -1966,10 +1824,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] -name = "libappindicator" -version = "0.7.1" +name = "lebe" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2d3cb96d092b4824cb306c9e544c856a4cb6210c1081945187f7f1924b47e8" +checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8" + +[[package]] +name = "libappindicator" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03589b9607c868cc7ae54c0b2a22c8dc03dd41692d48f2d7df73615c6a95dc0a" dependencies = [ "glib", "gtk", @@ -1980,12 +1844,12 @@ dependencies = [ [[package]] name = "libappindicator-sys" -version = "0.7.3" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1b3b6681973cea8cc3bce7391e6d7d5502720b80a581c9a95c9cbaf592826aa" +checksum = "6e9ec52138abedcc58dc17a7c6c0c00a2bdb4f3427c7f63fa97fd0d859155caf" dependencies = [ "gtk-sys", - "libloading 0.7.4", + "libloading", "once_cell", ] @@ -2005,16 +1869,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "libloading" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19" -dependencies = [ - "cfg-if", - "windows-targets 0.52.5", -] - [[package]] name = "libredox" version = "0.1.3" @@ -2074,19 +1928,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" -[[package]] -name = "mac-notification-sys" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51fca4d74ff9dbaac16a01b924bc3693fa2bba0862c2c633abc73f9a8ea21f64" -dependencies = [ - "cc", - "dirs-next", - "objc-foundation", - "objc_id", - "time", -] - [[package]] name = "malloc_buf" version = "0.0.6" @@ -2140,15 +1981,6 @@ dependencies = [ "libc", ] -[[package]] -name = "memoffset" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" -dependencies = [ - "autocfg", -] - [[package]] name = "memoffset" version = "0.9.1" @@ -2164,12 +1996,6 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" -[[package]] -name = "minimal-lexical" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" - [[package]] name = "miniz_oxide" version = "0.7.2" @@ -2191,40 +2017,42 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "muda" +version = "0.13.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b959f97c97044e4c96e32e1db292a7d594449546a3c6b77ae613dc3a5b5145" +dependencies = [ + "cocoa", + "crossbeam-channel", + "dpi", + "gtk", + "keyboard-types", + "objc", + "once_cell", + "png", + "serde", + "thiserror", + "windows-sys 0.52.0", +] + [[package]] name = "multimap" version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a" -[[package]] -name = "native-tls" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" -dependencies = [ - "lazy_static", - "libc", - "log", - "openssl", - "openssl-probe", - "openssl-sys", - "schannel", - "security-framework", - "security-framework-sys", - "tempfile", -] - [[package]] name = "ndk" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2032c77e030ddee34a6787a64166008da93f6a352b629261d0fee232b8742dd4" +checksum = "451422b7e4718271c8b5b3aadf5adedba43dc76312454b387e98fae0fc951aa0" dependencies = [ "bitflags 1.3.2", "jni-sys", "ndk-sys", "num_enum", + "raw-window-handle 0.5.2", "thiserror", ] @@ -2236,9 +2064,9 @@ checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" [[package]] name = "ndk-sys" -version = "0.3.0" +version = "0.4.1+23.1.7779620" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e5a6ae77c8ee183dcbbba6150e2e6b9f3f4196a7666c02a715a95692ec1fa97" +checksum = "3cf2aae958bd232cac5069850591667ad422d263686d75b52a065f9badeee5a3" dependencies = [ "jni-sys", ] @@ -2249,60 +2077,12 @@ version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" -[[package]] -name = "nix" -version = "0.26.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" -dependencies = [ - "bitflags 1.3.2", - "cfg-if", - "libc", - "memoffset 0.7.1", -] - -[[package]] -name = "nix" -version = "0.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4" -dependencies = [ - "bitflags 2.5.0", - "cfg-if", - "cfg_aliases", - "libc", - "memoffset 0.9.1", -] - [[package]] name = "nodrop" version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" -[[package]] -name = "nom" -version = "7.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" -dependencies = [ - "memchr", - "minimal-lexical", -] - -[[package]] -name = "notify-rust" -version = "4.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5312f837191c317644f313f7b2b39f9cb1496570c74f7c17152dd3961219551f" -dependencies = [ - "log", - "mac-notification-sys", - "serde", - "tauri-winrt-notification", - "zbus", -] - [[package]] name = "nu-ansi-term" version = "0.46.0" @@ -2369,17 +2149,6 @@ dependencies = [ "objc_exception", ] -[[package]] -name = "objc-foundation" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9" -dependencies = [ - "block", - "objc", - "objc_id", -] - [[package]] name = "objc-sys" version = "0.3.3" @@ -2432,9 +2201,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfaefe14254871ea16c7d88968c0ff14ba554712a20d76421eec52f0a7fb8904" dependencies = [ "block2", + "dispatch", "objc2", ] +[[package]] +name = "objc2-quartz-core" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "153140331e87b21327f0be072ac7108e67b43986f64098e937077b1eed6e3191" +dependencies = [ + "objc2", + "objc2-foundation", +] + [[package]] name = "objc_exception" version = "0.1.2" @@ -2469,89 +2249,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] -name = "open" -version = "3.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2078c0039e6a54a0c42c28faa984e115fb4c2d5bf2208f77d1961002df8576f8" -dependencies = [ - "pathdiff", - "windows-sys 0.42.0", -] - -[[package]] -name = "openssl" -version = "0.10.64" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f" -dependencies = [ - "bitflags 2.5.0", - "cfg-if", - "foreign-types 0.3.2", - "libc", - "once_cell", - "openssl-macros", - "openssl-sys", -] - -[[package]] -name = "openssl-macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.61", -] - -[[package]] -name = "openssl-probe" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" - -[[package]] -name = "openssl-sys" -version = "0.9.102" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2" -dependencies = [ - "cc", - "libc", - "pkg-config", - "vcpkg", -] - -[[package]] -name = "ordered-stream" +name = "option-ext" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50" -dependencies = [ - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "os_info" -version = "3.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae99c7fa6dd38c7cafe1ec085e804f8f555a2f8659b0dbe03f1f9963a9b51092" -dependencies = [ - "log", - "serde", - "windows-sys 0.52.0", -] - -[[package]] -name = "os_pipe" -version = "1.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57119c3b893986491ec9aa85056780d3a0f3cf4da7cc09dd3650dbd6c6738fb9" -dependencies = [ - "libc", - "windows-sys 0.52.0", -] +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" [[package]] name = "overload" @@ -2561,11 +2262,11 @@ checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" [[package]] name = "pango" -version = "0.15.10" +version = "0.18.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22e4045548659aee5313bde6c582b0d83a627b7904dd20dc2d9ef0895d414e4f" +checksum = "7ca27ec1eb0457ab26f3036ea52229edbdb74dee1edd29063f5b9b010e7ebee4" dependencies = [ - "bitflags 1.3.2", + "gio", "glib", "libc", "once_cell", @@ -2574,22 +2275,16 @@ dependencies = [ [[package]] name = "pango-sys" -version = "0.15.10" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2a00081cde4661982ed91d80ef437c20eacaf6aa1a5962c0279ae194662c3aa" +checksum = "436737e391a843e5933d6d9aa102cb126d501e815b83601365a948a518555dc5" dependencies = [ "glib-sys", "gobject-sys", "libc", - "system-deps 6.2.2", + "system-deps", ] -[[package]] -name = "parking" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" - [[package]] name = "parking_lot" version = "0.12.2" @@ -2608,17 +2303,11 @@ checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.1", + "redox_syscall", "smallvec", "windows-targets 0.52.5", ] -[[package]] -name = "pathdiff" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" - [[package]] name = "pdb" version = "0.7.0" @@ -2636,16 +2325,6 @@ version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" -[[package]] -name = "petgraph" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" -dependencies = [ - "fixedbitset", - "indexmap 2.2.6", -] - [[package]] name = "phf" version = "0.8.0" @@ -2786,6 +2465,26 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315" +[[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.61", +] + [[package]] name = "pin-project-lite" version = "0.2.14" @@ -2798,17 +2497,6 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" -[[package]] -name = "piper" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4" -dependencies = [ - "atomic-waker", - "fastrand", - "futures-io", -] - [[package]] name = "pkg-config" version = "0.3.30" @@ -2842,21 +2530,6 @@ dependencies = [ "miniz_oxide", ] -[[package]] -name = "polling" -version = "3.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645493cf344456ef24219d02a768cf1fb92ddf8c92161679ae3d91b91a637be3" -dependencies = [ - "cfg-if", - "concurrent-queue", - "hermit-abi", - "pin-project-lite", - "rustix", - "tracing", - "windows-sys 0.52.0", -] - [[package]] name = "powerfmt" version = "0.2.0" @@ -2887,11 +2560,12 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "3.1.0" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +checksum = "b00f26d3400549137f92511a46ac1cd8ce37cb5598a96d382381458b992a5d24" dependencies = [ - "toml_edit 0.21.1", + "toml_datetime", + "toml_edit 0.20.2", ] [[package]] @@ -2933,6 +2607,31 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "psl-types" +version = "2.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33cb294fe86a74cbcf50d4445b37da762029549ebeea341421c7c70370f86cac" + +[[package]] +name = "publicsuffix" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96a8c1bda5ae1af7f99a2962e49df150414a43d62404644d98dd5c3a93d07457" +dependencies = [ + "idna 0.3.0", + "psl-types", +] + +[[package]] +name = "qoi" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f6d64c71eb498fe9eae14ce4ec935c555749aef511cca85b5568910d6e48001" +dependencies = [ + "bytemuck", +] + [[package]] name = "quick-xml" version = "0.31.0" @@ -2942,6 +2641,52 @@ dependencies = [ "memchr", ] +[[package]] +name = "quinn" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4ceeeeabace7857413798eb1ffa1e9c905a9946a57d81fb69b4b71c4d8eb3ad" +dependencies = [ + "bytes", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash", + "rustls", + "thiserror", + "tokio", + "tracing", +] + +[[package]] +name = "quinn-proto" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddf517c03a109db8100448a4be38d498df8a210a99fe0e1b9eaf39e78c640efe" +dependencies = [ + "bytes", + "rand 0.8.5", + "ring", + "rustc-hash", + "rustls", + "slab", + "thiserror", + "tinyvec", + "tracing", +] + +[[package]] +name = "quinn-udp" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8bffec3605b73c6f1754535084a85229fa8a30f86014e6c81aeec4abb68b0285" +dependencies = [ + "libc", + "once_cell", + "socket2", + "windows-sys 0.52.0", +] + [[package]] name = "quote" version = "1.0.36" @@ -3039,12 +2784,29 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9" [[package]] -name = "redox_syscall" -version = "0.4.1" +name = "raw-window-handle" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" + +[[package]] +name = "rayon" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" dependencies = [ - "bitflags 1.3.2", + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", ] [[package]] @@ -3113,36 +2875,42 @@ checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" [[package]] name = "reqwest" -version = "0.11.27" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" +checksum = "c7d6d2a27d57148378eb5e111173f4276ad26340ecc5c49a4a2152167a2d6a37" dependencies = [ - "base64 0.21.7", + "base64 0.22.1", "bytes", + "cookie", + "cookie_store", "encoding_rs", "futures-core", "futures-util", "h2", "http", "http-body", + "http-body-util", "hyper", - "hyper-tls", + "hyper-rustls", + "hyper-util", "ipnet", "js-sys", "log", "mime", - "native-tls", "once_cell", "percent-encoding", "pin-project-lite", + "quinn", + "rustls", "rustls-pemfile", + "rustls-pki-types", "serde", "serde_json", "serde_urlencoded", "sync_wrapper", "system-configuration", "tokio", - "tokio-native-tls", + "tokio-rustls", "tokio-util", "tower-service", "url", @@ -3150,31 +2918,23 @@ dependencies = [ "wasm-bindgen-futures", "wasm-streams", "web-sys", - "winreg 0.50.0", + "webpki-roots", + "winreg", ] [[package]] -name = "rfd" -version = "0.10.0" +name = "ring" +version = "0.17.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0149778bd99b6959285b0933288206090c50e2327f47a9c463bfdbf45c8823ea" +checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" dependencies = [ - "block", - "dispatch", - "glib-sys", - "gobject-sys", - "gtk-sys", - "js-sys", - "lazy_static", - "log", - "objc", - "objc-foundation", - "objc_id", - "raw-window-handle", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "windows 0.37.0", + "cc", + "cfg-if", + "getrandom 0.2.15", + "libc", + "spin", + "untrusted", + "windows-sys 0.52.0", ] [[package]] @@ -3183,6 +2943,12 @@ version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + [[package]] name = "rustc_version" version = "0.4.0" @@ -3206,12 +2972,44 @@ dependencies = [ ] [[package]] -name = "rustls-pemfile" -version = "1.0.4" +name = "rustls" +version = "0.23.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +checksum = "c58f8c84392efc0a126acce10fa59ff7b3d2ac06ab451a33f2741989b806b044" dependencies = [ - "base64 0.21.7", + "once_cell", + "ring", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-pemfile" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29993a25686778eb88d4189742cd713c9bce943bc54251a33509dc63cbacf73d" +dependencies = [ + "base64 0.22.1", + "rustls-pki-types", +] + +[[package]] +name = "rustls-pki-types" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "976295e77ce332211c0d24d92c0e83e50f5c5f046d11082cea19f3df13a3562d" + +[[package]] +name = "rustls-webpki" +version = "0.102.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e6b52d4fda176fd835fdc55a835d4a89b8499cad995885a21149d5ad62f852e" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", ] [[package]] @@ -3236,12 +3034,29 @@ dependencies = [ ] [[package]] -name = "schannel" -version = "0.1.23" +name = "schemars" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" +checksum = "09c024468a378b7e36765cd36702b7a90cc3cba11654f6685c8f233408e89e92" dependencies = [ - "windows-sys 0.52.0", + "dyn-clone", + "indexmap 1.9.3", + "schemars_derive", + "serde", + "serde_json", + "url", +] + +[[package]] +name = "schemars_derive" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1eee588578aff73f856ab961cd2f79e36bc45d7ded33a7562adba4667aecc0e" +dependencies = [ + "proc-macro2", + "quote", + "serde_derive_internals", + "syn 2.0.61", ] [[package]] @@ -3262,29 +3077,6 @@ version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fda28d4b4830b807a8b43f7b0e6b5df875311b3e7621d84577188c175b6ec1ec" -[[package]] -name = "security-framework" -version = "2.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c627723fd09706bacdb5cf41499e95098555af3c3c29d014dc3c458ef6be11c0" -dependencies = [ - "bitflags 2.5.0", - "core-foundation", - "core-foundation-sys", - "libc", - "security-framework-sys", -] - -[[package]] -name = "security-framework-sys" -version = "2.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317936bbbd05227752583946b9e66d7ce3b489f84e11a94a510b4437fef407d7" -dependencies = [ - "core-foundation-sys", - "libc", -] - [[package]] name = "selectors" version = "0.22.0" @@ -3323,6 +3115,17 @@ dependencies = [ "serde_derive", ] +[[package]] +name = "serde-untagged" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2676ba99bd82f75cae5cbd2c8eda6fa0b8760f18978ea840e980dd5567b5c5b6" +dependencies = [ + "erased-serde", + "serde", + "typeid", +] + [[package]] name = "serde_derive" version = "1.0.200" @@ -3334,13 +3137,23 @@ dependencies = [ "syn 2.0.61", ] +[[package]] +name = "serde_derive_internals" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.61", +] + [[package]] name = "serde_json" version = "1.0.116" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3e17db7126d17feb94eb3fad46bf1a96b034e8aacbc2e775fe81505f8b0b2813" dependencies = [ - "indexmap 2.2.6", "itoa 1.0.11", "ryu", "serde", @@ -3440,17 +3253,6 @@ dependencies = [ "stable_deref_trait", ] -[[package]] -name = "sha1" -version = "0.10.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - [[package]] name = "sha2" version = "0.10.8" @@ -3471,25 +3273,6 @@ dependencies = [ "lazy_static", ] -[[package]] -name = "shared_child" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0d94659ad3c2137fef23ae75b03d5241d633f8acded53d672decfa0e6e0caef" -dependencies = [ - "libc", - "winapi", -] - -[[package]] -name = "signal-hook-registry" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" -dependencies = [ - "libc", -] - [[package]] name = "simd-adler32" version = "0.3.7" @@ -3528,31 +3311,61 @@ dependencies = [ ] [[package]] -name = "soup2" -version = "0.2.1" +name = "softbuffer" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2b4d76501d8ba387cf0fefbe055c3e0a59891d09f0f995ae4e4b16f6b60f3c0" +checksum = "d623bff5d06f60d738990980d782c8c866997d9194cfe79ecad00aa2f76826dd" dependencies = [ - "bitflags 1.3.2", - "gio", - "glib", - "libc", - "once_cell", - "soup2-sys", + "bytemuck", + "cfg_aliases", + "core-graphics", + "foreign-types", + "js-sys", + "log", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "objc2-quartz-core", + "raw-window-handle 0.6.2", + "redox_syscall", + "wasm-bindgen", + "web-sys", + "windows-sys 0.52.0", ] [[package]] -name = "soup2-sys" -version = "0.2.0" +name = "soup3" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "009ef427103fcb17f802871647a7fa6c60cbb654b4c4e4c0ac60a31c5f6dc9cf" +checksum = "471f924a40f31251afc77450e781cb26d55c0b650842efafc9c6cbd2f7cc4f9f" +dependencies = [ + "futures-channel", + "gio", + "glib", + "libc", + "soup3-sys", +] + +[[package]] +name = "soup3-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ebe8950a680a12f24f15ebe1bf70db7af98ad242d9db43596ad3108aab86c27" dependencies = [ - "bitflags 1.3.2", "gio-sys", "glib-sys", "gobject-sys", "libc", - "system-deps 5.0.0", + "system-deps", +] + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +dependencies = [ + "lock_api", ] [[package]] @@ -3563,19 +3376,13 @@ checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" [[package]] name = "state" -version = "0.5.3" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbe866e1e51e8260c9eed836a042a5e7f6726bb2b411dffeaa712e19c388f23b" +checksum = "2b8c4a4445d81357df8b1a650d0d0d6fbbbfe99d064aa5e02f3e4022061476d8" dependencies = [ "loom", ] -[[package]] -name = "static_assertions" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" - [[package]] name = "string_cache" version = "0.8.7" @@ -3608,6 +3415,23 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "swift-rs" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bbdb58577b6301f8d17ae2561f32002a5bae056d444e0f69e611e504a276204" +dependencies = [ + "base64 0.21.7", + "serde", + "serde_json", +] + [[package]] name = "syn" version = "1.0.109" @@ -3632,22 +3456,9 @@ dependencies = [ [[package]] name = "sync_wrapper" -version = "0.1.2" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" - -[[package]] -name = "sys-locale" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8a11bd9c338fdba09f7881ab41551932ad42e405f61d01e8406baea71c07aee" -dependencies = [ - "js-sys", - "libc", - "wasm-bindgen", - "web-sys", - "windows-sys 0.45.0", -] +checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" [[package]] name = "system-configuration" @@ -3670,61 +3481,39 @@ dependencies = [ "libc", ] -[[package]] -name = "system-deps" -version = "5.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18db855554db7bd0e73e06cf7ba3df39f97812cb11d3f75e71c39bf45171797e" -dependencies = [ - "cfg-expr 0.9.1", - "heck 0.3.3", - "pkg-config", - "toml 0.5.11", - "version-compare 0.0.11", -] - [[package]] name = "system-deps" version = "6.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349" dependencies = [ - "cfg-expr 0.15.8", + "cfg-expr", "heck 0.5.0", "pkg-config", - "toml 0.8.12", - "version-compare 0.2.0", + "toml 0.8.2", + "version-compare", ] [[package]] name = "tao" -version = "0.16.9" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "575c856fc21e551074869dcfaad8f706412bd5b803dfa0fbf6881c4ff4bfafab" +checksum = "ea538df05fbc2dcbbd740ba0cfe8607688535f4798d213cbbfa13ce494f3451f" dependencies = [ - "bitflags 1.3.2", - "cairo-rs", - "cc", + "bitflags 2.5.0", "cocoa", "core-foundation", - "core-graphics 0.22.3", + "core-graphics", "crossbeam-channel", - "dirs-next", "dispatch", - "gdk", - "gdk-pixbuf", - "gdk-sys", + "dlopen2", + "dpi", "gdkwayland-sys", "gdkx11-sys", - "gio", - "glib", - "glib-sys", "gtk", - "image 0.24.9", "instant", "jni", "lazy_static", - "libappindicator", "libc", "log", "ndk", @@ -3733,15 +3522,14 @@ dependencies = [ "objc", "once_cell", "parking_lot", - "png", - "raw-window-handle", + "raw-window-handle 0.6.2", "scopeguard", - "serde", "tao-macros", "unicode-segmentation", - "uuid 1.8.0", - "windows 0.39.0", - "windows-implement 0.39.0", + "url", + "windows 0.57.0", + "windows-core 0.57.0", + "windows-version", "x11-dl", ] @@ -3756,17 +3544,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "tar" -version = "0.4.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b16afcea1f22891c49a00c751c7b63b2233284064f11a200fc624137c51e2ddb" -dependencies = [ - "filetime", - "libc", - "xattr", -] - [[package]] name = "target-lexicon" version = "0.12.14" @@ -3775,88 +3552,82 @@ checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f" [[package]] name = "tauri" -version = "1.6.3" +version = "2.0.0-beta.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a4fab012dcf1e72762561cef2c08a6538aec2ca44d282158128117f79eb9d39" +checksum = "3eab508aad4ae86e23865e294b20a7bb89bd7afea523897b7478329b841d4295" dependencies = [ "anyhow", "bytes", "cocoa", - "dirs-next", + "dirs", "dunce", "embed_plist", - "encoding_rs", - "flate2", "futures-util", - "glib", + "getrandom 0.2.15", "glob", "gtk", "heck 0.5.0", "http", - "ignore", - "indexmap 1.9.3", - "nix 0.26.4", - "notify-rust", + "jni", + "libc", + "log", + "mime", + "muda", "objc", - "once_cell", - "open", - "os_info", - "os_pipe", "percent-encoding", - "rand 0.8.5", - "raw-window-handle", - "regex", + "raw-window-handle 0.6.2", "reqwest", - "rfd", - "semver", "serde", "serde_json", "serde_repr", "serialize-to-javascript", - "shared_child", "state", - "sys-locale", - "tar", + "swift-rs", + "tauri-build", "tauri-macros", "tauri-runtime", "tauri-runtime-wry", "tauri-utils", - "tempfile", "thiserror", "tokio", + "tray-icon", "url", - "uuid 1.8.0", + "urlpattern", "webkit2gtk", "webview2-com", - "windows 0.39.0", + "window-vibrancy", + "windows 0.57.0", ] [[package]] name = "tauri-build" -version = "1.5.2" +version = "2.0.0-beta.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab30cba12974d0f9b09794f61e72cad6da2142d3ceb81e519321bab86ce53312" +checksum = "498f587026501e4bbc5d6273b63f8956b03c37b3d3b2027f9c756fcd468e9c62" dependencies = [ "anyhow", "cargo_toml", - "dirs-next", + "dirs", + "glob", "heck 0.5.0", "json-patch", + "schemars", "semver", "serde", "serde_json", "tauri-utils", "tauri-winres", + "toml 0.8.2", "walkdir", ] [[package]] name = "tauri-codegen" -version = "1.4.3" +version = "2.0.0-beta.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3a1d90db526a8cdfd54444ad3f34d8d4d58fa5c536463915942393743bd06f8" +checksum = "43bbc731067e319ef60601bf5716d1e706ee9ae28e38c0587f7165c7d6824cdf" dependencies = [ - "base64 0.21.7", + "base64 0.22.1", "brotli", "ico", "json-patch", @@ -3864,111 +3635,204 @@ dependencies = [ "png", "proc-macro2", "quote", - "regex", "semver", "serde", "serde_json", "sha2", + "syn 2.0.61", "tauri-utils", "thiserror", "time", + "url", "uuid 1.8.0", "walkdir", ] [[package]] name = "tauri-macros" -version = "1.4.4" +version = "2.0.0-beta.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a582d75414250122e4a597b9dd7d3c910a2c77906648fc2ac9353845ff0feec" +checksum = "36b4a44346577ccde75a24c62405a4c3b4f7a3a76614ee6cf1ed14a0b756795c" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.61", "tauri-codegen", "tauri-utils", ] +[[package]] +name = "tauri-plugin" +version = "2.0.0-beta.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1abe0b85472516d1033ba251ac81b9f18f02725aadcaad697c8b727e6505a6ad" +dependencies = [ + "anyhow", + "glob", + "plist", + "schemars", + "serde", + "serde_json", + "tauri-utils", + "toml 0.8.2", + "walkdir", +] + +[[package]] +name = "tauri-plugin-clipboard-manager" +version = "2.1.0-beta.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47675aca1e08a481aea642212f82d8ad980bc3ea7ea1350e5d78395aa28f4faf" +dependencies = [ + "arboard", + "image 0.24.9", + "log", + "serde", + "serde_json", + "tauri", + "tauri-plugin", + "thiserror", +] + +[[package]] +name = "tauri-plugin-fs" +version = "2.0.0-beta.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "461853268fe115ca19ee21e5986d505944f0b826048fe1bd726d74753fdf1df6" +dependencies = [ + "anyhow", + "glob", + "schemars", + "serde", + "serde_json", + "serde_repr", + "tauri", + "tauri-plugin", + "thiserror", + "url", + "uuid 1.8.0", +] + +[[package]] +name = "tauri-plugin-global-shortcut" +version = "2.0.0-beta.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b60d2f6406815f1b8cc7a319b802d9ff113ba7a3ef56368bc54df2ff8dd7ae9d" +dependencies = [ + "global-hotkey", + "log", + "serde", + "serde_json", + "tauri", + "tauri-plugin", + "thiserror", +] + +[[package]] +name = "tauri-plugin-http" +version = "2.0.0-beta.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b804bdf8fcb469951380221001c4037528df9b75e15b179f78710c7db906017" +dependencies = [ + "data-url", + "http", + "regex", + "reqwest", + "schemars", + "serde", + "serde_json", + "tauri", + "tauri-plugin", + "tauri-plugin-fs", + "thiserror", + "tokio", + "url", + "urlpattern", +] + [[package]] name = "tauri-plugin-oauth" version = "0.0.0-alpha.0" -source = "git+https://github.com/FabianLars/tauri-plugin-oauth?branch=main#50dadbf4a81cba51f625587b7722892f0b4316a6" +source = "git+https://github.com/FabianLars/tauri-plugin-oauth?branch=v2#13d319dd194d311141c1c51edaf7a396cc164525" dependencies = [ "httparse", "log", "serde", "tauri", + "tauri-plugin", + "thiserror", "url", ] [[package]] name = "tauri-plugin-window-state" -version = "0.1.1" -source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v1#5e3900e682e13f3759b439116ae2f77a6d389ca2" +version = "2.0.0-beta.11" +source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#913d289e8faeecf42d9413253180a3db529388cb" dependencies = [ - "bincode", "bitflags 2.5.0", "log", "serde", "serde_json", "tauri", + "tauri-plugin", "thiserror", ] [[package]] name = "tauri-runtime" -version = "0.14.3" +version = "2.0.0-beta.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd7ffddf36d450791018e63a3ddf54979b9581d9644c584a5fb5611e6b5f20b4" +checksum = "fe978df03966febbebc608931dc2cf26ef94df70855a18b05f07134cf474de09" dependencies = [ + "dpi", "gtk", "http", - "http-range", - "rand 0.8.5", - "raw-window-handle", + "jni", + "raw-window-handle 0.6.2", "serde", "serde_json", "tauri-utils", "thiserror", "url", - "uuid 1.8.0", - "webview2-com", - "windows 0.39.0", + "windows 0.57.0", ] [[package]] name = "tauri-runtime-wry" -version = "0.14.6" +version = "2.0.0-beta.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a777eaa0d88ae47d8081cdc667eba8941b3a18af0f0ccb22640d8f0c3431d6d1" +checksum = "11e4d568f61095f507b3fc4254dfbfff3b20de2a1d66167ffca3f6d90b14db8f" dependencies = [ - "arboard", "cocoa", "gtk", + "http", + "jni", + "log", "percent-encoding", - "rand 0.8.5", - "raw-window-handle", + "raw-window-handle 0.6.2", + "softbuffer", + "tao", "tauri-runtime", "tauri-utils", - "uuid 1.8.0", + "url", "webkit2gtk", "webview2-com", - "windows 0.39.0", + "windows 0.57.0", "wry", ] [[package]] name = "tauri-utils" -version = "1.5.4" +version = "2.0.0-beta.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "450b17a7102e5d46d4bdabae0d1590fd27953e704e691fc081f06c06d2253b35" +checksum = "e20e51856f343c503892749b27d34042e6ca83a0369a12de3c5552d9874d04e8" dependencies = [ "brotli", + "cargo_metadata", "ctor", "dunce", "glob", - "heck 0.5.0", "html5ever", "infer", "json-patch", @@ -3978,14 +3842,19 @@ dependencies = [ "phf 0.11.2", "proc-macro2", "quote", + "regex", + "schemars", "semver", "serde", + "serde-untagged", "serde_json", "serde_with", + "swift-rs", "thiserror", + "toml 0.8.2", "url", + "urlpattern", "walkdir", - "windows-version", ] [[package]] @@ -3998,29 +3867,6 @@ dependencies = [ "toml 0.7.8", ] -[[package]] -name = "tauri-winrt-notification" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f89f5fb70d6f62381f5d9b2ba9008196150b40b75f3068eb24faeddf1c686871" -dependencies = [ - "quick-xml", - "windows 0.56.0", - "windows-version", -] - -[[package]] -name = "tempfile" -version = "3.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" -dependencies = [ - "cfg-if", - "fastrand", - "rustix", - "windows-sys 0.52.0", -] - [[package]] name = "tendril" version = "0.4.3" @@ -4148,16 +3994,29 @@ dependencies = [ "num_cpus", "pin-project-lite", "socket2", + "tokio-macros", "windows-sys 0.48.0", ] [[package]] -name = "tokio-native-tls" -version = "0.3.1" +name = "tokio-macros" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ - "native-tls", + "proc-macro2", + "quote", + "syn 2.0.61", +] + +[[package]] +name = "tokio-rustls" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" +dependencies = [ + "rustls", + "rustls-pki-types", "tokio", ] @@ -4174,15 +4033,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "toml" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" -dependencies = [ - "serde", -] - [[package]] name = "toml" version = "0.7.8" @@ -4197,21 +4047,21 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.12" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9dd1545e8208b4a5af1aa9bbd0b4cf7e9ea08fabc5d0a5c67fcaafa17433aa3" +checksum = "185d8ab0dfbb35cf1399a6344d8484209c088f75f8f68230da55d48d95d43e3d" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.12", + "toml_edit 0.20.2", ] [[package]] name = "toml_datetime" -version = "0.6.5" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" +checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" dependencies = [ "serde", ] @@ -4226,33 +4076,43 @@ dependencies = [ "serde", "serde_spanned", "toml_datetime", - "winnow 0.5.40", + "winnow", ] [[package]] name = "toml_edit" -version = "0.21.1" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" -dependencies = [ - "indexmap 2.2.6", - "toml_datetime", - "winnow 0.5.40", -] - -[[package]] -name = "toml_edit" -version = "0.22.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3328d4f68a705b2a4498da1d580585d39a6510f98318a2cec3018a7ec61ddef" +checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338" dependencies = [ "indexmap 2.2.6", "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.8", + "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.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" + [[package]] name = "tower-service" version = "0.3.2" @@ -4321,17 +4181,23 @@ dependencies = [ ] [[package]] -name = "tree_magic_mini" -version = "3.1.4" +name = "tray-icon" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77ee137597cdb361b55a4746983e4ac1b35ab6024396a419944ad473bb915265" +checksum = "3ad8319cca93189ea9ab1b290de0595960529750b6b8b501a399ed1ec3775d60" dependencies = [ - "fnv", - "home", - "memchr", - "nom", + "cocoa", + "core-graphics", + "crossbeam-channel", + "dirs", + "libappindicator", + "muda", + "objc", "once_cell", - "petgraph", + "png", + "serde", + "thiserror", + "windows-sys 0.52.0", ] [[package]] @@ -4340,6 +4206,12 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" +[[package]] +name = "typeid" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "059d83cc991e7a42fc37bd50941885db0888e34209f8cfd9aab07ddec03bc9cf" + [[package]] name = "typenum" version = "1.17.0" @@ -4347,14 +4219,44 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] -name = "uds_windows" -version = "1.1.0" +name = "unic-char-property" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" +checksum = "a8c57a407d9b6fa02b4795eb81c5b6652060a15a7903ea981f3d723e6c0be221" dependencies = [ - "memoffset 0.9.1", - "tempfile", - "winapi", + "unic-char-range", +] + +[[package]] +name = "unic-char-range" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0398022d5f700414f6b899e10b8348231abf9173fa93144cbc1a43b9793c1fbc" + +[[package]] +name = "unic-common" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80d7ff825a6a654ee85a63e80f92f054f904f21e7d12da4e22f9834a4aaa35bc" + +[[package]] +name = "unic-ucd-ident" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e230a37c0381caa9219d67cf063aa3a375ffed5bf541a452db16e744bdab6987" +dependencies = [ + "unic-char-property", + "unic-char-range", + "unic-ucd-version", +] + +[[package]] +name = "unic-ucd-version" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96bd2f2237fe450fcd0a1d2f5f4e91711124f7857ba2e964247776ebeeb7b0c4" +dependencies = [ + "unic-common", ] [[package]] @@ -4384,6 +4286,12 @@ version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + [[package]] name = "url" version = "2.5.0" @@ -4391,11 +4299,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" dependencies = [ "form_urlencoded", - "idna", + "idna 0.5.0", "percent-encoding", "serde", ] +[[package]] +name = "urlpattern" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9bd5ff03aea02fa45b13a7980151fe45009af1980ba69f651ec367121a31609" +dependencies = [ + "derive_more", + "regex", + "serde", + "unic-ucd-ident", + "url", +] + [[package]] name = "utf-8" version = "0.7.6" @@ -4423,18 +4344,6 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" -[[package]] -name = "vcpkg" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" - -[[package]] -name = "version-compare" -version = "0.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c18c859eead79d8b95d09e4678566e8d70105c4e7b251f707a03df32442661b" - [[package]] name = "version-compare" version = "0.2.0" @@ -4577,79 +4486,6 @@ dependencies = [ "web-sys", ] -[[package]] -name = "wayland-backend" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d50fa61ce90d76474c87f5fc002828d81b32677340112b4ef08079a9d459a40" -dependencies = [ - "cc", - "downcast-rs", - "rustix", - "scoped-tls", - "smallvec", - "wayland-sys", -] - -[[package]] -name = "wayland-client" -version = "0.31.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82fb96ee935c2cea6668ccb470fb7771f6215d1691746c2d896b447a00ad3f1f" -dependencies = [ - "bitflags 2.5.0", - "rustix", - "wayland-backend", - "wayland-scanner", -] - -[[package]] -name = "wayland-protocols" -version = "0.31.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f81f365b8b4a97f422ac0e8737c438024b5951734506b0e1d775c73030561f4" -dependencies = [ - "bitflags 2.5.0", - "wayland-backend", - "wayland-client", - "wayland-scanner", -] - -[[package]] -name = "wayland-protocols-wlr" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad1f61b76b6c2d8742e10f9ba5c3737f6530b4c243132c2a2ccc8aa96fe25cd6" -dependencies = [ - "bitflags 2.5.0", - "wayland-backend", - "wayland-client", - "wayland-protocols", - "wayland-scanner", -] - -[[package]] -name = "wayland-scanner" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63b3a62929287001986fb58c789dce9b67604a397c15c611ad9f747300b6c283" -dependencies = [ - "proc-macro2", - "quick-xml", - "quote", -] - -[[package]] -name = "wayland-sys" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15a0c8eaff5216d07f226cb7a549159267f3467b289d9a2e52fd3ef5aae2b7af" -dependencies = [ - "dlib", - "log", - "pkg-config", -] - [[package]] name = "web-sys" version = "0.3.69" @@ -4662,9 +4498,9 @@ dependencies = [ [[package]] name = "webkit2gtk" -version = "0.18.2" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8f859735e4a452aeb28c6c56a852967a8a76c8eb1cc32dbf931ad28a13d6370" +checksum = "76b1bc1e54c581da1e9f179d0b38512ba358fb1af2d634a1affe42e37172361a" dependencies = [ "bitflags 1.3.2", "cairo-rs", @@ -4680,20 +4516,18 @@ dependencies = [ "javascriptcore-rs", "libc", "once_cell", - "soup2", + "soup3", "webkit2gtk-sys", ] [[package]] name = "webkit2gtk-sys" -version = "0.18.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d76ca6ecc47aeba01ec61e480139dda143796abcae6f83bcddf50d6b5b1dcf3" +checksum = "62daa38afc514d1f8f12b8693d30d5993ff77ced33ce30cd04deebc267a6d57c" dependencies = [ - "atk-sys", "bitflags 1.3.2", "cairo-sys-rs", - "gdk-pixbuf-sys", "gdk-sys", "gio-sys", "glib-sys", @@ -4701,48 +4535,54 @@ dependencies = [ "gtk-sys", "javascriptcore-rs-sys", "libc", - "pango-sys", "pkg-config", - "soup2-sys", - "system-deps 6.2.2", + "soup3-sys", + "system-deps", +] + +[[package]] +name = "webpki-roots" +version = "0.26.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd7c23921eeb1713a4e851530e9b9756e4fb0e89978582942612524cf09f01cd" +dependencies = [ + "rustls-pki-types", ] [[package]] name = "webview2-com" -version = "0.19.1" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4a769c9f1a64a8734bde70caafac2b96cada12cd4aefa49196b3a386b8b4178" +checksum = "6516cfa64c6b3212686080eeec378e662c2af54bb2a5b2a22749673f5cb2226f" dependencies = [ "webview2-com-macros", "webview2-com-sys", - "windows 0.39.0", - "windows-implement 0.39.0", + "windows 0.57.0", + "windows-core 0.57.0", + "windows-implement", + "windows-interface", ] [[package]] name = "webview2-com-macros" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaebe196c01691db62e9e4ca52c5ef1e4fd837dcae27dae3ada599b5a8fd05ac" +checksum = "ac1345798ecd8122468840bcdf1b95e5dc6d2206c5e4b0eafa078d061f59c9bc" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.61", ] [[package]] name = "webview2-com-sys" -version = "0.19.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aac48ef20ddf657755fdcda8dfed2a7b4fc7e4581acce6fe9b88c3d64f29dee7" +checksum = "c76d5b77320ff155660be1df3e6588bc85c75f1a9feef938cc4dc4dd60d1d7cf" dependencies = [ - "regex", - "serde", - "serde_json", "thiserror", - "windows 0.39.0", - "windows-bindgen", - "windows-metadata", + "windows 0.57.0", + "windows-core 0.57.0", ] [[package]] @@ -4783,30 +4623,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] -name = "windows" -version = "0.37.0" +name = "window-vibrancy" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57b543186b344cc61c85b5aab0d2e3adf4e0f99bc076eff9aa5927bcc0b8a647" +checksum = "33082acd404763b315866e14a0d5193f3422c81086657583937a750cdd3ec340" dependencies = [ - "windows_aarch64_msvc 0.37.0", - "windows_i686_gnu 0.37.0", - "windows_i686_msvc 0.37.0", - "windows_x86_64_gnu 0.37.0", - "windows_x86_64_msvc 0.37.0", -] - -[[package]] -name = "windows" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1c4bd0a50ac6020f65184721f758dba47bb9fbc2133df715ec74a237b26794a" -dependencies = [ - "windows-implement 0.39.0", - "windows_aarch64_msvc 0.39.0", - "windows_i686_gnu 0.39.0", - "windows_i686_msvc 0.39.0", - "windows_x86_64_gnu 0.39.0", - "windows_x86_64_msvc 0.39.0", + "cocoa", + "objc", + "raw-window-handle 0.6.2", + "windows-sys 0.52.0", + "windows-version", ] [[package]] @@ -4820,24 +4646,14 @@ dependencies = [ [[package]] name = "windows" -version = "0.56.0" +version = "0.57.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1de69df01bdf1ead2f4ac895dc77c9351aefff65b2f3db429a343f9cbf05e132" +checksum = "12342cb4d8e3b046f3d80effd474a7a02447231330ef77d71daa6fbc40681143" dependencies = [ - "windows-core 0.56.0", + "windows-core 0.57.0", "windows-targets 0.52.5", ] -[[package]] -name = "windows-bindgen" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68003dbd0e38abc0fb85b939240f4bce37c43a5981d3df37ccbaaa981b47cb41" -dependencies = [ - "windows-metadata", - "windows-tokens", -] - [[package]] name = "windows-core" version = "0.52.0" @@ -4849,11 +4665,11 @@ dependencies = [ [[package]] name = "windows-core" -version = "0.56.0" +version = "0.57.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4698e52ed2d08f8658ab0c39512a7c00ee5fe2688c65f8c0a4f06750d729f2a6" +checksum = "d2ed2439a290666cd67ecce2b0ffaad89c2a56b976b736e6ece670297897832d" dependencies = [ - "windows-implement 0.56.0", + "windows-implement", "windows-interface", "windows-result", "windows-targets 0.52.5", @@ -4861,19 +4677,9 @@ dependencies = [ [[package]] name = "windows-implement" -version = "0.39.0" +version = "0.57.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba01f98f509cb5dc05f4e5fc95e535f78260f15fea8fe1a8abdd08f774f1cee7" -dependencies = [ - "syn 1.0.109", - "windows-tokens", -] - -[[package]] -name = "windows-implement" -version = "0.56.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6fc35f58ecd95a9b71c4f2329b911016e6bec66b3f2e6a4aad86bd2e99e2f9b" +checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" dependencies = [ "proc-macro2", "quote", @@ -4882,21 +4688,15 @@ dependencies = [ [[package]] name = "windows-interface" -version = "0.56.0" +version = "0.57.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08990546bf4edef8f431fa6326e032865f27138718c587dc21bc0265bbcb57cc" +checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" dependencies = [ "proc-macro2", "quote", "syn 2.0.61", ] -[[package]] -name = "windows-metadata" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ee5e275231f07c6e240d14f34e1b635bf1faa1c76c57cfd59a5cdb9848e4278" - [[package]] name = "windows-result" version = "0.1.1" @@ -4906,21 +4706,6 @@ dependencies = [ "windows-targets 0.52.5", ] -[[package]] -name = "windows-sys" -version = "0.42.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" -dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", -] - [[package]] name = "windows-sys" version = "0.45.0" @@ -4994,12 +4779,6 @@ dependencies = [ "windows_x86_64_msvc 0.52.5", ] -[[package]] -name = "windows-tokens" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f838de2fe15fe6bac988e74b798f26499a8b21a9d97edec321e79b28d1d7f597" - [[package]] name = "windows-version" version = "0.1.1" @@ -5027,18 +4806,6 @@ version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" -[[package]] -name = "windows_aarch64_msvc" -version = "0.37.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2623277cb2d1c216ba3b578c0f3cf9cdebeddb6e66b1b218bb33596ea7769c3a" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec7711666096bd4096ffa835238905bb33fb87267910e154b18b44eaabb340f2" - [[package]] name = "windows_aarch64_msvc" version = "0.42.2" @@ -5057,18 +4824,6 @@ version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" -[[package]] -name = "windows_i686_gnu" -version = "0.37.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3925fd0b0b804730d44d4b6278c50f9699703ec49bcd628020f46f4ba07d9e1" - -[[package]] -name = "windows_i686_gnu" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "763fc57100a5f7042e3057e7e8d9bdd7860d330070251a73d003563a3bb49e1b" - [[package]] name = "windows_i686_gnu" version = "0.42.2" @@ -5093,18 +4848,6 @@ version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" -[[package]] -name = "windows_i686_msvc" -version = "0.37.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce907ac74fe331b524c1298683efbf598bb031bc84d5e274db2083696d07c57c" - -[[package]] -name = "windows_i686_msvc" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bc7cbfe58828921e10a9f446fcaaf649204dcfe6c1ddd712c5eebae6bda1106" - [[package]] name = "windows_i686_msvc" version = "0.42.2" @@ -5123,18 +4866,6 @@ version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" -[[package]] -name = "windows_x86_64_gnu" -version = "0.37.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2babfba0828f2e6b32457d5341427dcbb577ceef556273229959ac23a10af33d" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6868c165637d653ae1e8dc4d82c25d4f97dd6605eaa8d784b5c6e0ab2a252b65" - [[package]] name = "windows_x86_64_gnu" version = "0.42.2" @@ -5171,18 +4902,6 @@ version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" -[[package]] -name = "windows_x86_64_msvc" -version = "0.37.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4dd6dc7df2d84cf7b33822ed5b86318fb1781948e9663bacd047fc9dd52259d" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e4d40883ae9cae962787ca76ba76390ffa29214667a111db9e0a1ad8377e809" - [[package]] name = "windows_x86_64_msvc" version = "0.42.2" @@ -5210,25 +4929,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "winnow" -version = "0.6.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3c52e9c97a68071b23e836c9380edae937f17b9c4667bd021973efc689f618d" -dependencies = [ - "memchr", -] - -[[package]] -name = "winreg" -version = "0.50.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" -dependencies = [ - "cfg-if", - "windows-sys 0.48.0", -] - [[package]] name = "winreg" version = "0.52.0" @@ -5239,62 +4939,46 @@ dependencies = [ "windows-sys 0.48.0", ] -[[package]] -name = "wl-clipboard-rs" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12b41773911497b18ca8553c3daaf8ec9fe9819caf93d451d3055f69de028adb" -dependencies = [ - "derive-new", - "libc", - "log", - "nix 0.28.0", - "os_pipe", - "tempfile", - "thiserror", - "tree_magic_mini", - "wayland-backend", - "wayland-client", - "wayland-protocols", - "wayland-protocols-wlr", -] - [[package]] name = "wry" -version = "0.24.8" +version = "0.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a04e72739ee84a218e3dbf8625888eadc874285637003ed21ab96a1bbbb538ec" +checksum = "68b00c945786b02d7805d09a969fa36d0eee4e0bd4fb3ec2a79d2bf45a1b44cd" dependencies = [ - "base64 0.13.1", + "base64 0.22.1", "block", "cocoa", - "core-graphics 0.22.3", + "core-graphics", "crossbeam-channel", + "dpi", "dunce", - "gdk", - "gio", - "glib", + "gdkx11", "gtk", "html5ever", "http", + "javascriptcore-rs", + "jni", "kuchikiki", "libc", - "log", + "ndk", + "ndk-context", + "ndk-sys", "objc", "objc_id", "once_cell", - "serde", - "serde_json", + "percent-encoding", + "raw-window-handle 0.6.2", "sha2", - "soup2", - "tao", + "soup3", + "tao-macros", "thiserror", - "url", "webkit2gtk", "webkit2gtk-sys", "webview2-com", - "windows 0.39.0", - "windows-implement 0.39.0", + "windows 0.57.0", + "windows-core 0.57.0", + "windows-version", + "x11-dl", ] [[package]] @@ -5336,121 +5020,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec107c4503ea0b4a98ef47356329af139c0a4f7750e621cf2973cd3385ebcb3d" [[package]] -name = "xattr" -version = "1.3.1" +name = "zeroize" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f" -dependencies = [ - "libc", - "linux-raw-sys", - "rustix", -] +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" [[package]] -name = "xdg-home" -version = "1.1.0" +name = "zune-inflate" +version = "0.2.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21e5a325c3cb8398ad6cf859c1135b25dd29e186679cf2da7581d9679f63b38e" +checksum = "73ab332fe2f6680068f3582b16a24f90ad7096d5d39b974d1c0aff0125116f02" dependencies = [ - "libc", - "winapi", -] - -[[package]] -name = "zbus" -version = "4.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6aea58d1af0aaa8abf87f3d9ade9b8f46bf13727e5f9fb24bc31ee9d94a9b4ad" -dependencies = [ - "async-broadcast", - "async-executor", - "async-fs", - "async-io", - "async-lock", - "async-process", - "async-recursion", - "async-task", - "async-trait", - "blocking", - "enumflags2", - "event-listener 5.3.0", - "futures-core", - "futures-sink", - "futures-util", - "hex", - "nix 0.28.0", - "ordered-stream", - "rand 0.8.5", - "serde", - "serde_repr", - "sha1", - "static_assertions", - "tracing", - "uds_windows", - "windows-sys 0.52.0", - "xdg-home", - "zbus_macros", - "zbus_names", - "zvariant", -] - -[[package]] -name = "zbus_macros" -version = "4.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bf2b496ec1e2d3c4a7878e351607f7a2bec1e1029b353683dfc28a22999e369" -dependencies = [ - "proc-macro-crate 3.1.0", - "proc-macro2", - "quote", - "syn 1.0.109", - "zvariant_utils", -] - -[[package]] -name = "zbus_names" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b9b1fef7d021261cc16cba64c351d291b715febe0fa10dc3a443ac5a5022e6c" -dependencies = [ - "serde", - "static_assertions", - "zvariant", -] - -[[package]] -name = "zvariant" -version = "4.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e9282c6945d9e27742ba7ad7191325546636295de7b83f6735af73159b32ac7" -dependencies = [ - "endi", - "enumflags2", - "serde", - "static_assertions", - "zvariant_derive", -] - -[[package]] -name = "zvariant_derive" -version = "4.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0142549e559746ff09d194dd43d256a554299d286cc56460a082b8ae24652aa1" -dependencies = [ - "proc-macro-crate 3.1.0", - "proc-macro2", - "quote", - "syn 1.0.109", - "zvariant_utils", -] - -[[package]] -name = "zvariant_utils" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75fa7291bdd68cd13c4f97cc9d78cbf16d96305856dfc7ac942aeff4c2de7d5a" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", + "simd-adler32", ] diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index a2ae914..38e252a 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -9,17 +9,25 @@ default-run = "app" edition = "2021" rust-version = "1.78.0" +[lib] +name = "app_lib" +crate-type = ["staticlib", "cdylib", "lib"] + # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [build-dependencies] -tauri-build = { version = "1.5.2", features = [] } +tauri-build = { version = "2.0.0-beta", features = [] } [dependencies] serde_json = "1.0.116" serde = { version = "1.0.200", features = ["derive"] } -tauri = { version = "1.6.3", features = ["api-all", "system-tray"] } -tauri-plugin-window-state = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v1" } -tauri-plugin-oauth = { git = "https://github.com/FabianLars/tauri-plugin-oauth", branch = "main" } +tauri = { version = "2.0.0-beta", features = ["tray-icon"] } +tauri-plugin-window-state = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v2" } +tauri-plugin-oauth = { git = "https://github.com/FabianLars/tauri-plugin-oauth", branch = "v2" } +tauri-plugin-clipboard-manager = "2.1.0-beta.6" +tauri-plugin-http = { version = "2.0.0-beta.12" } +[target."cfg(not(any(target_os = \"android\", target_os = \"ios\")))".dependencies] +tauri-plugin-global-shortcut = { version = "2.0.0-beta.8" } [dev-dependencies] cargo-bloat = "0.11.1" diff --git a/src-tauri/capabilities/migrated.json b/src-tauri/capabilities/migrated.json new file mode 100644 index 0000000..39d6729 --- /dev/null +++ b/src-tauri/capabilities/migrated.json @@ -0,0 +1,17 @@ +{ + "identifier": "migrated", + "description": "permissions that were migrated from v1", + "local": true, + "windows": [ + "pake" + ], + "permissions": [ + "path:default", + "event:default", + "window:default", + "app:default", + "resources:default", + "menu:default", + "tray:default" + ] +} diff --git a/src-tauri/gen/schemas/acl-manifests.json b/src-tauri/gen/schemas/acl-manifests.json new file mode 100644 index 0000000..90d806a --- /dev/null +++ b/src-tauri/gen/schemas/acl-manifests.json @@ -0,0 +1 @@ +{"app":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-version","allow-name","allow-tauri-version"]},"permissions":{"allow-app-hide":{"identifier":"allow-app-hide","description":"Enables the app_hide command without any pre-configured scope.","commands":{"allow":["app_hide"],"deny":[]}},"allow-app-show":{"identifier":"allow-app-show","description":"Enables the app_show command without any pre-configured scope.","commands":{"allow":["app_show"],"deny":[]}},"allow-default-window-icon":{"identifier":"allow-default-window-icon","description":"Enables the default_window_icon command without any pre-configured scope.","commands":{"allow":["default_window_icon"],"deny":[]}},"allow-name":{"identifier":"allow-name","description":"Enables the name command without any pre-configured scope.","commands":{"allow":["name"],"deny":[]}},"allow-tauri-version":{"identifier":"allow-tauri-version","description":"Enables the tauri_version command without any pre-configured scope.","commands":{"allow":["tauri_version"],"deny":[]}},"allow-version":{"identifier":"allow-version","description":"Enables the version command without any pre-configured scope.","commands":{"allow":["version"],"deny":[]}},"deny-app-hide":{"identifier":"deny-app-hide","description":"Denies the app_hide command without any pre-configured scope.","commands":{"allow":[],"deny":["app_hide"]}},"deny-app-show":{"identifier":"deny-app-show","description":"Denies the app_show command without any pre-configured scope.","commands":{"allow":[],"deny":["app_show"]}},"deny-default-window-icon":{"identifier":"deny-default-window-icon","description":"Denies the default_window_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["default_window_icon"]}},"deny-name":{"identifier":"deny-name","description":"Denies the name command without any pre-configured scope.","commands":{"allow":[],"deny":["name"]}},"deny-tauri-version":{"identifier":"deny-tauri-version","description":"Denies the tauri_version command without any pre-configured scope.","commands":{"allow":[],"deny":["tauri_version"]}},"deny-version":{"identifier":"deny-version","description":"Denies the version command without any pre-configured scope.","commands":{"allow":[],"deny":["version"]}}},"permission_sets":{},"global_scope_schema":null},"clipboard-manager":{"default_permission":{"identifier":"default","description":"No features are enabled by default, as we believe\nthe clipboard can be inherently dangerous and it is \napplication specific if read and/or write access is needed.\n\nClipboard interaction needs to be explicitly enabled.\n","permissions":[]},"permissions":{"allow-clear":{"identifier":"allow-clear","description":"Enables the clear command without any pre-configured scope.","commands":{"allow":["clear"],"deny":[]}},"allow-read-image":{"identifier":"allow-read-image","description":"Enables the read_image command without any pre-configured scope.","commands":{"allow":["read_image"],"deny":[]}},"allow-read-text":{"identifier":"allow-read-text","description":"Enables the read_text command without any pre-configured scope.","commands":{"allow":["read_text"],"deny":[]}},"allow-write-html":{"identifier":"allow-write-html","description":"Enables the write_html command without any pre-configured scope.","commands":{"allow":["write_html"],"deny":[]}},"allow-write-image":{"identifier":"allow-write-image","description":"Enables the write_image command without any pre-configured scope.","commands":{"allow":["write_image"],"deny":[]}},"allow-write-text":{"identifier":"allow-write-text","description":"Enables the write_text command without any pre-configured scope.","commands":{"allow":["write_text"],"deny":[]}},"deny-clear":{"identifier":"deny-clear","description":"Denies the clear command without any pre-configured scope.","commands":{"allow":[],"deny":["clear"]}},"deny-read-image":{"identifier":"deny-read-image","description":"Denies the read_image command without any pre-configured scope.","commands":{"allow":[],"deny":["read_image"]}},"deny-read-text":{"identifier":"deny-read-text","description":"Denies the read_text command without any pre-configured scope.","commands":{"allow":[],"deny":["read_text"]}},"deny-write-html":{"identifier":"deny-write-html","description":"Denies the write_html command without any pre-configured scope.","commands":{"allow":[],"deny":["write_html"]}},"deny-write-image":{"identifier":"deny-write-image","description":"Denies the write_image command without any pre-configured scope.","commands":{"allow":[],"deny":["write_image"]}},"deny-write-text":{"identifier":"deny-write-text","description":"Denies the write_text command without any pre-configured scope.","commands":{"allow":[],"deny":["write_text"]}}},"permission_sets":{},"global_scope_schema":null},"event":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-listen","allow-unlisten","allow-emit","allow-emit-to"]},"permissions":{"allow-emit":{"identifier":"allow-emit","description":"Enables the emit command without any pre-configured scope.","commands":{"allow":["emit"],"deny":[]}},"allow-emit-to":{"identifier":"allow-emit-to","description":"Enables the emit_to command without any pre-configured scope.","commands":{"allow":["emit_to"],"deny":[]}},"allow-listen":{"identifier":"allow-listen","description":"Enables the listen command without any pre-configured scope.","commands":{"allow":["listen"],"deny":[]}},"allow-unlisten":{"identifier":"allow-unlisten","description":"Enables the unlisten command without any pre-configured scope.","commands":{"allow":["unlisten"],"deny":[]}},"deny-emit":{"identifier":"deny-emit","description":"Denies the emit command without any pre-configured scope.","commands":{"allow":[],"deny":["emit"]}},"deny-emit-to":{"identifier":"deny-emit-to","description":"Denies the emit_to command without any pre-configured scope.","commands":{"allow":[],"deny":["emit_to"]}},"deny-listen":{"identifier":"deny-listen","description":"Denies the listen command without any pre-configured scope.","commands":{"allow":[],"deny":["listen"]}},"deny-unlisten":{"identifier":"deny-unlisten","description":"Denies the unlisten command without any pre-configured scope.","commands":{"allow":[],"deny":["unlisten"]}}},"permission_sets":{},"global_scope_schema":null},"global-shortcut":{"default_permission":{"identifier":"default","description":"No features are enabled by default, as we believe\nthe shortcuts can be inherently dangerous and it is\napplication specific if specific shortcuts should be\nregistered or unregistered.\n","permissions":[]},"permissions":{"allow-is-registered":{"identifier":"allow-is-registered","description":"Enables the is_registered command without any pre-configured scope.","commands":{"allow":["is_registered"],"deny":[]}},"allow-register":{"identifier":"allow-register","description":"Enables the register command without any pre-configured scope.","commands":{"allow":["register"],"deny":[]}},"allow-register-all":{"identifier":"allow-register-all","description":"Enables the register_all command without any pre-configured scope.","commands":{"allow":["register_all"],"deny":[]}},"allow-unregister":{"identifier":"allow-unregister","description":"Enables the unregister command without any pre-configured scope.","commands":{"allow":["unregister"],"deny":[]}},"allow-unregister-all":{"identifier":"allow-unregister-all","description":"Enables the unregister_all command without any pre-configured scope.","commands":{"allow":["unregister_all"],"deny":[]}},"deny-is-registered":{"identifier":"deny-is-registered","description":"Denies the is_registered command without any pre-configured scope.","commands":{"allow":[],"deny":["is_registered"]}},"deny-register":{"identifier":"deny-register","description":"Denies the register command without any pre-configured scope.","commands":{"allow":[],"deny":["register"]}},"deny-register-all":{"identifier":"deny-register-all","description":"Denies the register_all command without any pre-configured scope.","commands":{"allow":[],"deny":["register_all"]}},"deny-unregister":{"identifier":"deny-unregister","description":"Denies the unregister command without any pre-configured scope.","commands":{"allow":[],"deny":["unregister"]}},"deny-unregister-all":{"identifier":"deny-unregister-all","description":"Denies the unregister_all command without any pre-configured scope.","commands":{"allow":[],"deny":["unregister_all"]}}},"permission_sets":{},"global_scope_schema":null},"http":{"default_permission":{"identifier":"default","description":"This permission set configures what kind of\nfetch operations are available from the http plugin.\n\nThis enables all fetch operations but does not\nallow explicitly any origins to be fetched. This needs to\nbe manually configured before usage.\n\n#### Granted Permissions\n\nAll fetch operations are enabled.\n\n","permissions":["allow-fetch","allow-fetch-cancel","allow-fetch-read-body","allow-fetch-send"]},"permissions":{"allow-fetch":{"identifier":"allow-fetch","description":"Enables the fetch command without any pre-configured scope.","commands":{"allow":["fetch"],"deny":[]}},"allow-fetch-cancel":{"identifier":"allow-fetch-cancel","description":"Enables the fetch_cancel command without any pre-configured scope.","commands":{"allow":["fetch_cancel"],"deny":[]}},"allow-fetch-read-body":{"identifier":"allow-fetch-read-body","description":"Enables the fetch_read_body command without any pre-configured scope.","commands":{"allow":["fetch_read_body"],"deny":[]}},"allow-fetch-send":{"identifier":"allow-fetch-send","description":"Enables the fetch_send command without any pre-configured scope.","commands":{"allow":["fetch_send"],"deny":[]}},"deny-fetch":{"identifier":"deny-fetch","description":"Denies the fetch command without any pre-configured scope.","commands":{"allow":[],"deny":["fetch"]}},"deny-fetch-cancel":{"identifier":"deny-fetch-cancel","description":"Denies the fetch_cancel command without any pre-configured scope.","commands":{"allow":[],"deny":["fetch_cancel"]}},"deny-fetch-read-body":{"identifier":"deny-fetch-read-body","description":"Denies the fetch_read_body command without any pre-configured scope.","commands":{"allow":[],"deny":["fetch_read_body"]}},"deny-fetch-send":{"identifier":"deny-fetch-send","description":"Denies the fetch_send command without any pre-configured scope.","commands":{"allow":[],"deny":["fetch_send"]}}},"permission_sets":{},"global_scope_schema":{"$schema":"http://json-schema.org/draft-07/schema#","anyOf":[{"description":"A URL that can be accessed by the webview when using the HTTP APIs. Wildcards can be used following the URL pattern standard.\n\nSee [the URL Pattern spec](https://urlpattern.spec.whatwg.org/) for more information.\n\nExamples:\n\n- \"https://*\" : allows all HTTPS origin on port 443\n\n- \"https://*:*\" : allows all HTTPS origin on any port\n\n- \"https://*.github.com/tauri-apps/tauri\": allows any subdomain of \"github.com\" with the \"tauri-apps/api\" path\n\n- \"https://myapi.service.com/users/*\": allows access to any URLs that begins with \"https://myapi.service.com/users/\"","type":"string"},{"properties":{"url":{"description":"A URL that can be accessed by the webview when using the HTTP APIs. Wildcards can be used following the URL pattern standard.\n\nSee [the URL Pattern spec](https://urlpattern.spec.whatwg.org/) for more information.\n\nExamples:\n\n- \"https://*\" : allows all HTTPS origin on port 443\n\n- \"https://*:*\" : allows all HTTPS origin on any port\n\n- \"https://*.github.com/tauri-apps/tauri\": allows any subdomain of \"github.com\" with the \"tauri-apps/api\" path\n\n- \"https://myapi.service.com/users/*\": allows access to any URLs that begins with \"https://myapi.service.com/users/\"","type":"string"}},"required":["url"],"type":"object"}],"description":"HTTP scope entry.","title":"HttpScopeEntry"}},"image":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-new","allow-from-bytes","allow-from-path","allow-rgba","allow-size"]},"permissions":{"allow-from-bytes":{"identifier":"allow-from-bytes","description":"Enables the from_bytes command without any pre-configured scope.","commands":{"allow":["from_bytes"],"deny":[]}},"allow-from-path":{"identifier":"allow-from-path","description":"Enables the from_path command without any pre-configured scope.","commands":{"allow":["from_path"],"deny":[]}},"allow-new":{"identifier":"allow-new","description":"Enables the new command without any pre-configured scope.","commands":{"allow":["new"],"deny":[]}},"allow-rgba":{"identifier":"allow-rgba","description":"Enables the rgba command without any pre-configured scope.","commands":{"allow":["rgba"],"deny":[]}},"allow-size":{"identifier":"allow-size","description":"Enables the size command without any pre-configured scope.","commands":{"allow":["size"],"deny":[]}},"deny-from-bytes":{"identifier":"deny-from-bytes","description":"Denies the from_bytes command without any pre-configured scope.","commands":{"allow":[],"deny":["from_bytes"]}},"deny-from-path":{"identifier":"deny-from-path","description":"Denies the from_path command without any pre-configured scope.","commands":{"allow":[],"deny":["from_path"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-rgba":{"identifier":"deny-rgba","description":"Denies the rgba command without any pre-configured scope.","commands":{"allow":[],"deny":["rgba"]}},"deny-size":{"identifier":"deny-size","description":"Denies the size command without any pre-configured scope.","commands":{"allow":[],"deny":["size"]}}},"permission_sets":{},"global_scope_schema":null},"menu":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-new","allow-append","allow-prepend","allow-insert","allow-remove","allow-remove-at","allow-items","allow-get","allow-popup","allow-create-default","allow-set-as-app-menu","allow-set-as-window-menu","allow-text","allow-set-text","allow-is-enabled","allow-set-enabled","allow-set-accelerator","allow-set-as-windows-menu-for-nsapp","allow-set-as-help-menu-for-nsapp","allow-is-checked","allow-set-checked","allow-set-icon"]},"permissions":{"allow-append":{"identifier":"allow-append","description":"Enables the append command without any pre-configured scope.","commands":{"allow":["append"],"deny":[]}},"allow-create-default":{"identifier":"allow-create-default","description":"Enables the create_default command without any pre-configured scope.","commands":{"allow":["create_default"],"deny":[]}},"allow-get":{"identifier":"allow-get","description":"Enables the get command without any pre-configured scope.","commands":{"allow":["get"],"deny":[]}},"allow-insert":{"identifier":"allow-insert","description":"Enables the insert command without any pre-configured scope.","commands":{"allow":["insert"],"deny":[]}},"allow-is-checked":{"identifier":"allow-is-checked","description":"Enables the is_checked command without any pre-configured scope.","commands":{"allow":["is_checked"],"deny":[]}},"allow-is-enabled":{"identifier":"allow-is-enabled","description":"Enables the is_enabled command without any pre-configured scope.","commands":{"allow":["is_enabled"],"deny":[]}},"allow-items":{"identifier":"allow-items","description":"Enables the items command without any pre-configured scope.","commands":{"allow":["items"],"deny":[]}},"allow-new":{"identifier":"allow-new","description":"Enables the new command without any pre-configured scope.","commands":{"allow":["new"],"deny":[]}},"allow-popup":{"identifier":"allow-popup","description":"Enables the popup command without any pre-configured scope.","commands":{"allow":["popup"],"deny":[]}},"allow-prepend":{"identifier":"allow-prepend","description":"Enables the prepend command without any pre-configured scope.","commands":{"allow":["prepend"],"deny":[]}},"allow-remove":{"identifier":"allow-remove","description":"Enables the remove command without any pre-configured scope.","commands":{"allow":["remove"],"deny":[]}},"allow-remove-at":{"identifier":"allow-remove-at","description":"Enables the remove_at command without any pre-configured scope.","commands":{"allow":["remove_at"],"deny":[]}},"allow-set-accelerator":{"identifier":"allow-set-accelerator","description":"Enables the set_accelerator command without any pre-configured scope.","commands":{"allow":["set_accelerator"],"deny":[]}},"allow-set-as-app-menu":{"identifier":"allow-set-as-app-menu","description":"Enables the set_as_app_menu command without any pre-configured scope.","commands":{"allow":["set_as_app_menu"],"deny":[]}},"allow-set-as-help-menu-for-nsapp":{"identifier":"allow-set-as-help-menu-for-nsapp","description":"Enables the set_as_help_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":["set_as_help_menu_for_nsapp"],"deny":[]}},"allow-set-as-window-menu":{"identifier":"allow-set-as-window-menu","description":"Enables the set_as_window_menu command without any pre-configured scope.","commands":{"allow":["set_as_window_menu"],"deny":[]}},"allow-set-as-windows-menu-for-nsapp":{"identifier":"allow-set-as-windows-menu-for-nsapp","description":"Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":["set_as_windows_menu_for_nsapp"],"deny":[]}},"allow-set-checked":{"identifier":"allow-set-checked","description":"Enables the set_checked command without any pre-configured scope.","commands":{"allow":["set_checked"],"deny":[]}},"allow-set-enabled":{"identifier":"allow-set-enabled","description":"Enables the set_enabled command without any pre-configured scope.","commands":{"allow":["set_enabled"],"deny":[]}},"allow-set-icon":{"identifier":"allow-set-icon","description":"Enables the set_icon command without any pre-configured scope.","commands":{"allow":["set_icon"],"deny":[]}},"allow-set-text":{"identifier":"allow-set-text","description":"Enables the set_text command without any pre-configured scope.","commands":{"allow":["set_text"],"deny":[]}},"allow-text":{"identifier":"allow-text","description":"Enables the text command without any pre-configured scope.","commands":{"allow":["text"],"deny":[]}},"deny-append":{"identifier":"deny-append","description":"Denies the append command without any pre-configured scope.","commands":{"allow":[],"deny":["append"]}},"deny-create-default":{"identifier":"deny-create-default","description":"Denies the create_default command without any pre-configured scope.","commands":{"allow":[],"deny":["create_default"]}},"deny-get":{"identifier":"deny-get","description":"Denies the get command without any pre-configured scope.","commands":{"allow":[],"deny":["get"]}},"deny-insert":{"identifier":"deny-insert","description":"Denies the insert command without any pre-configured scope.","commands":{"allow":[],"deny":["insert"]}},"deny-is-checked":{"identifier":"deny-is-checked","description":"Denies the is_checked command without any pre-configured scope.","commands":{"allow":[],"deny":["is_checked"]}},"deny-is-enabled":{"identifier":"deny-is-enabled","description":"Denies the is_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["is_enabled"]}},"deny-items":{"identifier":"deny-items","description":"Denies the items command without any pre-configured scope.","commands":{"allow":[],"deny":["items"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-popup":{"identifier":"deny-popup","description":"Denies the popup command without any pre-configured scope.","commands":{"allow":[],"deny":["popup"]}},"deny-prepend":{"identifier":"deny-prepend","description":"Denies the prepend command without any pre-configured scope.","commands":{"allow":[],"deny":["prepend"]}},"deny-remove":{"identifier":"deny-remove","description":"Denies the remove command without any pre-configured scope.","commands":{"allow":[],"deny":["remove"]}},"deny-remove-at":{"identifier":"deny-remove-at","description":"Denies the remove_at command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_at"]}},"deny-set-accelerator":{"identifier":"deny-set-accelerator","description":"Denies the set_accelerator command without any pre-configured scope.","commands":{"allow":[],"deny":["set_accelerator"]}},"deny-set-as-app-menu":{"identifier":"deny-set-as-app-menu","description":"Denies the set_as_app_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_app_menu"]}},"deny-set-as-help-menu-for-nsapp":{"identifier":"deny-set-as-help-menu-for-nsapp","description":"Denies the set_as_help_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_help_menu_for_nsapp"]}},"deny-set-as-window-menu":{"identifier":"deny-set-as-window-menu","description":"Denies the set_as_window_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_window_menu"]}},"deny-set-as-windows-menu-for-nsapp":{"identifier":"deny-set-as-windows-menu-for-nsapp","description":"Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_windows_menu_for_nsapp"]}},"deny-set-checked":{"identifier":"deny-set-checked","description":"Denies the set_checked command without any pre-configured scope.","commands":{"allow":[],"deny":["set_checked"]}},"deny-set-enabled":{"identifier":"deny-set-enabled","description":"Denies the set_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["set_enabled"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-text":{"identifier":"deny-set-text","description":"Denies the set_text command without any pre-configured scope.","commands":{"allow":[],"deny":["set_text"]}},"deny-text":{"identifier":"deny-text","description":"Denies the text command without any pre-configured scope.","commands":{"allow":[],"deny":["text"]}}},"permission_sets":{},"global_scope_schema":null},"oauth":{"default_permission":null,"permissions":{"allow-cancel":{"identifier":"allow-cancel","description":"Enables the cancel command without any pre-configured scope.","commands":{"allow":["cancel"],"deny":[]}},"allow-start":{"identifier":"allow-start","description":"Enables the start command without any pre-configured scope.","commands":{"allow":["start"],"deny":[]}},"deny-cancel":{"identifier":"deny-cancel","description":"Denies the cancel command without any pre-configured scope.","commands":{"allow":[],"deny":["cancel"]}},"deny-start":{"identifier":"deny-start","description":"Denies the start command without any pre-configured scope.","commands":{"allow":[],"deny":["start"]}}},"permission_sets":{},"global_scope_schema":null},"path":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-resolve-directory","allow-resolve","allow-normalize","allow-join","allow-dirname","allow-extname","allow-basename","allow-is-absolute"]},"permissions":{"allow-basename":{"identifier":"allow-basename","description":"Enables the basename command without any pre-configured scope.","commands":{"allow":["basename"],"deny":[]}},"allow-dirname":{"identifier":"allow-dirname","description":"Enables the dirname command without any pre-configured scope.","commands":{"allow":["dirname"],"deny":[]}},"allow-extname":{"identifier":"allow-extname","description":"Enables the extname command without any pre-configured scope.","commands":{"allow":["extname"],"deny":[]}},"allow-is-absolute":{"identifier":"allow-is-absolute","description":"Enables the is_absolute command without any pre-configured scope.","commands":{"allow":["is_absolute"],"deny":[]}},"allow-join":{"identifier":"allow-join","description":"Enables the join command without any pre-configured scope.","commands":{"allow":["join"],"deny":[]}},"allow-normalize":{"identifier":"allow-normalize","description":"Enables the normalize command without any pre-configured scope.","commands":{"allow":["normalize"],"deny":[]}},"allow-resolve":{"identifier":"allow-resolve","description":"Enables the resolve command without any pre-configured scope.","commands":{"allow":["resolve"],"deny":[]}},"allow-resolve-directory":{"identifier":"allow-resolve-directory","description":"Enables the resolve_directory command without any pre-configured scope.","commands":{"allow":["resolve_directory"],"deny":[]}},"deny-basename":{"identifier":"deny-basename","description":"Denies the basename command without any pre-configured scope.","commands":{"allow":[],"deny":["basename"]}},"deny-dirname":{"identifier":"deny-dirname","description":"Denies the dirname command without any pre-configured scope.","commands":{"allow":[],"deny":["dirname"]}},"deny-extname":{"identifier":"deny-extname","description":"Denies the extname command without any pre-configured scope.","commands":{"allow":[],"deny":["extname"]}},"deny-is-absolute":{"identifier":"deny-is-absolute","description":"Denies the is_absolute command without any pre-configured scope.","commands":{"allow":[],"deny":["is_absolute"]}},"deny-join":{"identifier":"deny-join","description":"Denies the join command without any pre-configured scope.","commands":{"allow":[],"deny":["join"]}},"deny-normalize":{"identifier":"deny-normalize","description":"Denies the normalize command without any pre-configured scope.","commands":{"allow":[],"deny":["normalize"]}},"deny-resolve":{"identifier":"deny-resolve","description":"Denies the resolve command without any pre-configured scope.","commands":{"allow":[],"deny":["resolve"]}},"deny-resolve-directory":{"identifier":"deny-resolve-directory","description":"Denies the resolve_directory command without any pre-configured scope.","commands":{"allow":[],"deny":["resolve_directory"]}}},"permission_sets":{},"global_scope_schema":null},"resources":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-close"]},"permissions":{"allow-close":{"identifier":"allow-close","description":"Enables the close command without any pre-configured scope.","commands":{"allow":["close"],"deny":[]}},"deny-close":{"identifier":"deny-close","description":"Denies the close command without any pre-configured scope.","commands":{"allow":[],"deny":["close"]}}},"permission_sets":{},"global_scope_schema":null},"tray":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-new","allow-get-by-id","allow-remove-by-id","allow-set-icon","allow-set-menu","allow-set-tooltip","allow-set-title","allow-set-visible","allow-set-temp-dir-path","allow-set-icon-as-template","allow-set-show-menu-on-left-click"]},"permissions":{"allow-get-by-id":{"identifier":"allow-get-by-id","description":"Enables the get_by_id command without any pre-configured scope.","commands":{"allow":["get_by_id"],"deny":[]}},"allow-new":{"identifier":"allow-new","description":"Enables the new command without any pre-configured scope.","commands":{"allow":["new"],"deny":[]}},"allow-remove-by-id":{"identifier":"allow-remove-by-id","description":"Enables the remove_by_id command without any pre-configured scope.","commands":{"allow":["remove_by_id"],"deny":[]}},"allow-set-icon":{"identifier":"allow-set-icon","description":"Enables the set_icon command without any pre-configured scope.","commands":{"allow":["set_icon"],"deny":[]}},"allow-set-icon-as-template":{"identifier":"allow-set-icon-as-template","description":"Enables the set_icon_as_template command without any pre-configured scope.","commands":{"allow":["set_icon_as_template"],"deny":[]}},"allow-set-menu":{"identifier":"allow-set-menu","description":"Enables the set_menu command without any pre-configured scope.","commands":{"allow":["set_menu"],"deny":[]}},"allow-set-show-menu-on-left-click":{"identifier":"allow-set-show-menu-on-left-click","description":"Enables the set_show_menu_on_left_click command without any pre-configured scope.","commands":{"allow":["set_show_menu_on_left_click"],"deny":[]}},"allow-set-temp-dir-path":{"identifier":"allow-set-temp-dir-path","description":"Enables the set_temp_dir_path command without any pre-configured scope.","commands":{"allow":["set_temp_dir_path"],"deny":[]}},"allow-set-title":{"identifier":"allow-set-title","description":"Enables the set_title command without any pre-configured scope.","commands":{"allow":["set_title"],"deny":[]}},"allow-set-tooltip":{"identifier":"allow-set-tooltip","description":"Enables the set_tooltip command without any pre-configured scope.","commands":{"allow":["set_tooltip"],"deny":[]}},"allow-set-visible":{"identifier":"allow-set-visible","description":"Enables the set_visible command without any pre-configured scope.","commands":{"allow":["set_visible"],"deny":[]}},"deny-get-by-id":{"identifier":"deny-get-by-id","description":"Denies the get_by_id command without any pre-configured scope.","commands":{"allow":[],"deny":["get_by_id"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-remove-by-id":{"identifier":"deny-remove-by-id","description":"Denies the remove_by_id command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_by_id"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-icon-as-template":{"identifier":"deny-set-icon-as-template","description":"Denies the set_icon_as_template command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon_as_template"]}},"deny-set-menu":{"identifier":"deny-set-menu","description":"Denies the set_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_menu"]}},"deny-set-show-menu-on-left-click":{"identifier":"deny-set-show-menu-on-left-click","description":"Denies the set_show_menu_on_left_click command without any pre-configured scope.","commands":{"allow":[],"deny":["set_show_menu_on_left_click"]}},"deny-set-temp-dir-path":{"identifier":"deny-set-temp-dir-path","description":"Denies the set_temp_dir_path command without any pre-configured scope.","commands":{"allow":[],"deny":["set_temp_dir_path"]}},"deny-set-title":{"identifier":"deny-set-title","description":"Denies the set_title command without any pre-configured scope.","commands":{"allow":[],"deny":["set_title"]}},"deny-set-tooltip":{"identifier":"deny-set-tooltip","description":"Denies the set_tooltip command without any pre-configured scope.","commands":{"allow":[],"deny":["set_tooltip"]}},"deny-set-visible":{"identifier":"deny-set-visible","description":"Denies the set_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["set_visible"]}}},"permission_sets":{},"global_scope_schema":null},"webview":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-webview-position","allow-webview-size","allow-internal-toggle-devtools"]},"permissions":{"allow-create-webview":{"identifier":"allow-create-webview","description":"Enables the create_webview command without any pre-configured scope.","commands":{"allow":["create_webview"],"deny":[]}},"allow-create-webview-window":{"identifier":"allow-create-webview-window","description":"Enables the create_webview_window command without any pre-configured scope.","commands":{"allow":["create_webview_window"],"deny":[]}},"allow-internal-toggle-devtools":{"identifier":"allow-internal-toggle-devtools","description":"Enables the internal_toggle_devtools command without any pre-configured scope.","commands":{"allow":["internal_toggle_devtools"],"deny":[]}},"allow-print":{"identifier":"allow-print","description":"Enables the print command without any pre-configured scope.","commands":{"allow":["print"],"deny":[]}},"allow-reparent":{"identifier":"allow-reparent","description":"Enables the reparent command without any pre-configured scope.","commands":{"allow":["reparent"],"deny":[]}},"allow-set-webview-focus":{"identifier":"allow-set-webview-focus","description":"Enables the set_webview_focus command without any pre-configured scope.","commands":{"allow":["set_webview_focus"],"deny":[]}},"allow-set-webview-position":{"identifier":"allow-set-webview-position","description":"Enables the set_webview_position command without any pre-configured scope.","commands":{"allow":["set_webview_position"],"deny":[]}},"allow-set-webview-size":{"identifier":"allow-set-webview-size","description":"Enables the set_webview_size command without any pre-configured scope.","commands":{"allow":["set_webview_size"],"deny":[]}},"allow-set-webview-zoom":{"identifier":"allow-set-webview-zoom","description":"Enables the set_webview_zoom command without any pre-configured scope.","commands":{"allow":["set_webview_zoom"],"deny":[]}},"allow-webview-close":{"identifier":"allow-webview-close","description":"Enables the webview_close command without any pre-configured scope.","commands":{"allow":["webview_close"],"deny":[]}},"allow-webview-position":{"identifier":"allow-webview-position","description":"Enables the webview_position command without any pre-configured scope.","commands":{"allow":["webview_position"],"deny":[]}},"allow-webview-size":{"identifier":"allow-webview-size","description":"Enables the webview_size command without any pre-configured scope.","commands":{"allow":["webview_size"],"deny":[]}},"deny-create-webview":{"identifier":"deny-create-webview","description":"Denies the create_webview command without any pre-configured scope.","commands":{"allow":[],"deny":["create_webview"]}},"deny-create-webview-window":{"identifier":"deny-create-webview-window","description":"Denies the create_webview_window command without any pre-configured scope.","commands":{"allow":[],"deny":["create_webview_window"]}},"deny-internal-toggle-devtools":{"identifier":"deny-internal-toggle-devtools","description":"Denies the internal_toggle_devtools command without any pre-configured scope.","commands":{"allow":[],"deny":["internal_toggle_devtools"]}},"deny-print":{"identifier":"deny-print","description":"Denies the print command without any pre-configured scope.","commands":{"allow":[],"deny":["print"]}},"deny-reparent":{"identifier":"deny-reparent","description":"Denies the reparent command without any pre-configured scope.","commands":{"allow":[],"deny":["reparent"]}},"deny-set-webview-focus":{"identifier":"deny-set-webview-focus","description":"Denies the set_webview_focus command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_focus"]}},"deny-set-webview-position":{"identifier":"deny-set-webview-position","description":"Denies the set_webview_position command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_position"]}},"deny-set-webview-size":{"identifier":"deny-set-webview-size","description":"Denies the set_webview_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_size"]}},"deny-set-webview-zoom":{"identifier":"deny-set-webview-zoom","description":"Denies the set_webview_zoom command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_zoom"]}},"deny-webview-close":{"identifier":"deny-webview-close","description":"Denies the webview_close command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_close"]}},"deny-webview-position":{"identifier":"deny-webview-position","description":"Denies the webview_position command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_position"]}},"deny-webview-size":{"identifier":"deny-webview-size","description":"Denies the webview_size command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_size"]}}},"permission_sets":{},"global_scope_schema":null},"window":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-scale-factor","allow-inner-position","allow-outer-position","allow-inner-size","allow-outer-size","allow-is-fullscreen","allow-is-minimized","allow-is-maximized","allow-is-focused","allow-is-decorated","allow-is-resizable","allow-is-maximizable","allow-is-minimizable","allow-is-closable","allow-is-visible","allow-title","allow-current-monitor","allow-primary-monitor","allow-monitor-from-point","allow-available-monitors","allow-cursor-position","allow-theme","allow-internal-toggle-maximize"]},"permissions":{"allow-available-monitors":{"identifier":"allow-available-monitors","description":"Enables the available_monitors command without any pre-configured scope.","commands":{"allow":["available_monitors"],"deny":[]}},"allow-center":{"identifier":"allow-center","description":"Enables the center command without any pre-configured scope.","commands":{"allow":["center"],"deny":[]}},"allow-close":{"identifier":"allow-close","description":"Enables the close command without any pre-configured scope.","commands":{"allow":["close"],"deny":[]}},"allow-create":{"identifier":"allow-create","description":"Enables the create command without any pre-configured scope.","commands":{"allow":["create"],"deny":[]}},"allow-current-monitor":{"identifier":"allow-current-monitor","description":"Enables the current_monitor command without any pre-configured scope.","commands":{"allow":["current_monitor"],"deny":[]}},"allow-cursor-position":{"identifier":"allow-cursor-position","description":"Enables the cursor_position command without any pre-configured scope.","commands":{"allow":["cursor_position"],"deny":[]}},"allow-destroy":{"identifier":"allow-destroy","description":"Enables the destroy command without any pre-configured scope.","commands":{"allow":["destroy"],"deny":[]}},"allow-hide":{"identifier":"allow-hide","description":"Enables the hide command without any pre-configured scope.","commands":{"allow":["hide"],"deny":[]}},"allow-inner-position":{"identifier":"allow-inner-position","description":"Enables the inner_position command without any pre-configured scope.","commands":{"allow":["inner_position"],"deny":[]}},"allow-inner-size":{"identifier":"allow-inner-size","description":"Enables the inner_size command without any pre-configured scope.","commands":{"allow":["inner_size"],"deny":[]}},"allow-internal-toggle-maximize":{"identifier":"allow-internal-toggle-maximize","description":"Enables the internal_toggle_maximize command without any pre-configured scope.","commands":{"allow":["internal_toggle_maximize"],"deny":[]}},"allow-is-closable":{"identifier":"allow-is-closable","description":"Enables the is_closable command without any pre-configured scope.","commands":{"allow":["is_closable"],"deny":[]}},"allow-is-decorated":{"identifier":"allow-is-decorated","description":"Enables the is_decorated command without any pre-configured scope.","commands":{"allow":["is_decorated"],"deny":[]}},"allow-is-focused":{"identifier":"allow-is-focused","description":"Enables the is_focused command without any pre-configured scope.","commands":{"allow":["is_focused"],"deny":[]}},"allow-is-fullscreen":{"identifier":"allow-is-fullscreen","description":"Enables the is_fullscreen command without any pre-configured scope.","commands":{"allow":["is_fullscreen"],"deny":[]}},"allow-is-maximizable":{"identifier":"allow-is-maximizable","description":"Enables the is_maximizable command without any pre-configured scope.","commands":{"allow":["is_maximizable"],"deny":[]}},"allow-is-maximized":{"identifier":"allow-is-maximized","description":"Enables the is_maximized command without any pre-configured scope.","commands":{"allow":["is_maximized"],"deny":[]}},"allow-is-minimizable":{"identifier":"allow-is-minimizable","description":"Enables the is_minimizable command without any pre-configured scope.","commands":{"allow":["is_minimizable"],"deny":[]}},"allow-is-minimized":{"identifier":"allow-is-minimized","description":"Enables the is_minimized command without any pre-configured scope.","commands":{"allow":["is_minimized"],"deny":[]}},"allow-is-resizable":{"identifier":"allow-is-resizable","description":"Enables the is_resizable command without any pre-configured scope.","commands":{"allow":["is_resizable"],"deny":[]}},"allow-is-visible":{"identifier":"allow-is-visible","description":"Enables the is_visible command without any pre-configured scope.","commands":{"allow":["is_visible"],"deny":[]}},"allow-maximize":{"identifier":"allow-maximize","description":"Enables the maximize command without any pre-configured scope.","commands":{"allow":["maximize"],"deny":[]}},"allow-minimize":{"identifier":"allow-minimize","description":"Enables the minimize command without any pre-configured scope.","commands":{"allow":["minimize"],"deny":[]}},"allow-monitor-from-point":{"identifier":"allow-monitor-from-point","description":"Enables the monitor_from_point command without any pre-configured scope.","commands":{"allow":["monitor_from_point"],"deny":[]}},"allow-outer-position":{"identifier":"allow-outer-position","description":"Enables the outer_position command without any pre-configured scope.","commands":{"allow":["outer_position"],"deny":[]}},"allow-outer-size":{"identifier":"allow-outer-size","description":"Enables the outer_size command without any pre-configured scope.","commands":{"allow":["outer_size"],"deny":[]}},"allow-primary-monitor":{"identifier":"allow-primary-monitor","description":"Enables the primary_monitor command without any pre-configured scope.","commands":{"allow":["primary_monitor"],"deny":[]}},"allow-request-user-attention":{"identifier":"allow-request-user-attention","description":"Enables the request_user_attention command without any pre-configured scope.","commands":{"allow":["request_user_attention"],"deny":[]}},"allow-scale-factor":{"identifier":"allow-scale-factor","description":"Enables the scale_factor command without any pre-configured scope.","commands":{"allow":["scale_factor"],"deny":[]}},"allow-set-always-on-bottom":{"identifier":"allow-set-always-on-bottom","description":"Enables the set_always_on_bottom command without any pre-configured scope.","commands":{"allow":["set_always_on_bottom"],"deny":[]}},"allow-set-always-on-top":{"identifier":"allow-set-always-on-top","description":"Enables the set_always_on_top command without any pre-configured scope.","commands":{"allow":["set_always_on_top"],"deny":[]}},"allow-set-closable":{"identifier":"allow-set-closable","description":"Enables the set_closable command without any pre-configured scope.","commands":{"allow":["set_closable"],"deny":[]}},"allow-set-content-protected":{"identifier":"allow-set-content-protected","description":"Enables the set_content_protected command without any pre-configured scope.","commands":{"allow":["set_content_protected"],"deny":[]}},"allow-set-cursor-grab":{"identifier":"allow-set-cursor-grab","description":"Enables the set_cursor_grab command without any pre-configured scope.","commands":{"allow":["set_cursor_grab"],"deny":[]}},"allow-set-cursor-icon":{"identifier":"allow-set-cursor-icon","description":"Enables the set_cursor_icon command without any pre-configured scope.","commands":{"allow":["set_cursor_icon"],"deny":[]}},"allow-set-cursor-position":{"identifier":"allow-set-cursor-position","description":"Enables the set_cursor_position command without any pre-configured scope.","commands":{"allow":["set_cursor_position"],"deny":[]}},"allow-set-cursor-visible":{"identifier":"allow-set-cursor-visible","description":"Enables the set_cursor_visible command without any pre-configured scope.","commands":{"allow":["set_cursor_visible"],"deny":[]}},"allow-set-decorations":{"identifier":"allow-set-decorations","description":"Enables the set_decorations command without any pre-configured scope.","commands":{"allow":["set_decorations"],"deny":[]}},"allow-set-effects":{"identifier":"allow-set-effects","description":"Enables the set_effects command without any pre-configured scope.","commands":{"allow":["set_effects"],"deny":[]}},"allow-set-focus":{"identifier":"allow-set-focus","description":"Enables the set_focus command without any pre-configured scope.","commands":{"allow":["set_focus"],"deny":[]}},"allow-set-fullscreen":{"identifier":"allow-set-fullscreen","description":"Enables the set_fullscreen command without any pre-configured scope.","commands":{"allow":["set_fullscreen"],"deny":[]}},"allow-set-icon":{"identifier":"allow-set-icon","description":"Enables the set_icon command without any pre-configured scope.","commands":{"allow":["set_icon"],"deny":[]}},"allow-set-ignore-cursor-events":{"identifier":"allow-set-ignore-cursor-events","description":"Enables the set_ignore_cursor_events command without any pre-configured scope.","commands":{"allow":["set_ignore_cursor_events"],"deny":[]}},"allow-set-max-size":{"identifier":"allow-set-max-size","description":"Enables the set_max_size command without any pre-configured scope.","commands":{"allow":["set_max_size"],"deny":[]}},"allow-set-maximizable":{"identifier":"allow-set-maximizable","description":"Enables the set_maximizable command without any pre-configured scope.","commands":{"allow":["set_maximizable"],"deny":[]}},"allow-set-min-size":{"identifier":"allow-set-min-size","description":"Enables the set_min_size command without any pre-configured scope.","commands":{"allow":["set_min_size"],"deny":[]}},"allow-set-minimizable":{"identifier":"allow-set-minimizable","description":"Enables the set_minimizable command without any pre-configured scope.","commands":{"allow":["set_minimizable"],"deny":[]}},"allow-set-position":{"identifier":"allow-set-position","description":"Enables the set_position command without any pre-configured scope.","commands":{"allow":["set_position"],"deny":[]}},"allow-set-progress-bar":{"identifier":"allow-set-progress-bar","description":"Enables the set_progress_bar command without any pre-configured scope.","commands":{"allow":["set_progress_bar"],"deny":[]}},"allow-set-resizable":{"identifier":"allow-set-resizable","description":"Enables the set_resizable command without any pre-configured scope.","commands":{"allow":["set_resizable"],"deny":[]}},"allow-set-shadow":{"identifier":"allow-set-shadow","description":"Enables the set_shadow command without any pre-configured scope.","commands":{"allow":["set_shadow"],"deny":[]}},"allow-set-size":{"identifier":"allow-set-size","description":"Enables the set_size command without any pre-configured scope.","commands":{"allow":["set_size"],"deny":[]}},"allow-set-skip-taskbar":{"identifier":"allow-set-skip-taskbar","description":"Enables the set_skip_taskbar command without any pre-configured scope.","commands":{"allow":["set_skip_taskbar"],"deny":[]}},"allow-set-title":{"identifier":"allow-set-title","description":"Enables the set_title command without any pre-configured scope.","commands":{"allow":["set_title"],"deny":[]}},"allow-set-title-bar-style":{"identifier":"allow-set-title-bar-style","description":"Enables the set_title_bar_style command without any pre-configured scope.","commands":{"allow":["set_title_bar_style"],"deny":[]}},"allow-set-visible-on-all-workspaces":{"identifier":"allow-set-visible-on-all-workspaces","description":"Enables the set_visible_on_all_workspaces command without any pre-configured scope.","commands":{"allow":["set_visible_on_all_workspaces"],"deny":[]}},"allow-show":{"identifier":"allow-show","description":"Enables the show command without any pre-configured scope.","commands":{"allow":["show"],"deny":[]}},"allow-start-dragging":{"identifier":"allow-start-dragging","description":"Enables the start_dragging command without any pre-configured scope.","commands":{"allow":["start_dragging"],"deny":[]}},"allow-start-resize-dragging":{"identifier":"allow-start-resize-dragging","description":"Enables the start_resize_dragging command without any pre-configured scope.","commands":{"allow":["start_resize_dragging"],"deny":[]}},"allow-theme":{"identifier":"allow-theme","description":"Enables the theme command without any pre-configured scope.","commands":{"allow":["theme"],"deny":[]}},"allow-title":{"identifier":"allow-title","description":"Enables the title command without any pre-configured scope.","commands":{"allow":["title"],"deny":[]}},"allow-toggle-maximize":{"identifier":"allow-toggle-maximize","description":"Enables the toggle_maximize command without any pre-configured scope.","commands":{"allow":["toggle_maximize"],"deny":[]}},"allow-unmaximize":{"identifier":"allow-unmaximize","description":"Enables the unmaximize command without any pre-configured scope.","commands":{"allow":["unmaximize"],"deny":[]}},"allow-unminimize":{"identifier":"allow-unminimize","description":"Enables the unminimize command without any pre-configured scope.","commands":{"allow":["unminimize"],"deny":[]}},"deny-available-monitors":{"identifier":"deny-available-monitors","description":"Denies the available_monitors command without any pre-configured scope.","commands":{"allow":[],"deny":["available_monitors"]}},"deny-center":{"identifier":"deny-center","description":"Denies the center command without any pre-configured scope.","commands":{"allow":[],"deny":["center"]}},"deny-close":{"identifier":"deny-close","description":"Denies the close command without any pre-configured scope.","commands":{"allow":[],"deny":["close"]}},"deny-create":{"identifier":"deny-create","description":"Denies the create command without any pre-configured scope.","commands":{"allow":[],"deny":["create"]}},"deny-current-monitor":{"identifier":"deny-current-monitor","description":"Denies the current_monitor command without any pre-configured scope.","commands":{"allow":[],"deny":["current_monitor"]}},"deny-cursor-position":{"identifier":"deny-cursor-position","description":"Denies the cursor_position command without any pre-configured scope.","commands":{"allow":[],"deny":["cursor_position"]}},"deny-destroy":{"identifier":"deny-destroy","description":"Denies the destroy command without any pre-configured scope.","commands":{"allow":[],"deny":["destroy"]}},"deny-hide":{"identifier":"deny-hide","description":"Denies the hide command without any pre-configured scope.","commands":{"allow":[],"deny":["hide"]}},"deny-inner-position":{"identifier":"deny-inner-position","description":"Denies the inner_position command without any pre-configured scope.","commands":{"allow":[],"deny":["inner_position"]}},"deny-inner-size":{"identifier":"deny-inner-size","description":"Denies the inner_size command without any pre-configured scope.","commands":{"allow":[],"deny":["inner_size"]}},"deny-internal-toggle-maximize":{"identifier":"deny-internal-toggle-maximize","description":"Denies the internal_toggle_maximize command without any pre-configured scope.","commands":{"allow":[],"deny":["internal_toggle_maximize"]}},"deny-is-closable":{"identifier":"deny-is-closable","description":"Denies the is_closable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_closable"]}},"deny-is-decorated":{"identifier":"deny-is-decorated","description":"Denies the is_decorated command without any pre-configured scope.","commands":{"allow":[],"deny":["is_decorated"]}},"deny-is-focused":{"identifier":"deny-is-focused","description":"Denies the is_focused command without any pre-configured scope.","commands":{"allow":[],"deny":["is_focused"]}},"deny-is-fullscreen":{"identifier":"deny-is-fullscreen","description":"Denies the is_fullscreen command without any pre-configured scope.","commands":{"allow":[],"deny":["is_fullscreen"]}},"deny-is-maximizable":{"identifier":"deny-is-maximizable","description":"Denies the is_maximizable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_maximizable"]}},"deny-is-maximized":{"identifier":"deny-is-maximized","description":"Denies the is_maximized command without any pre-configured scope.","commands":{"allow":[],"deny":["is_maximized"]}},"deny-is-minimizable":{"identifier":"deny-is-minimizable","description":"Denies the is_minimizable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_minimizable"]}},"deny-is-minimized":{"identifier":"deny-is-minimized","description":"Denies the is_minimized command without any pre-configured scope.","commands":{"allow":[],"deny":["is_minimized"]}},"deny-is-resizable":{"identifier":"deny-is-resizable","description":"Denies the is_resizable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_resizable"]}},"deny-is-visible":{"identifier":"deny-is-visible","description":"Denies the is_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["is_visible"]}},"deny-maximize":{"identifier":"deny-maximize","description":"Denies the maximize command without any pre-configured scope.","commands":{"allow":[],"deny":["maximize"]}},"deny-minimize":{"identifier":"deny-minimize","description":"Denies the minimize command without any pre-configured scope.","commands":{"allow":[],"deny":["minimize"]}},"deny-monitor-from-point":{"identifier":"deny-monitor-from-point","description":"Denies the monitor_from_point command without any pre-configured scope.","commands":{"allow":[],"deny":["monitor_from_point"]}},"deny-outer-position":{"identifier":"deny-outer-position","description":"Denies the outer_position command without any pre-configured scope.","commands":{"allow":[],"deny":["outer_position"]}},"deny-outer-size":{"identifier":"deny-outer-size","description":"Denies the outer_size command without any pre-configured scope.","commands":{"allow":[],"deny":["outer_size"]}},"deny-primary-monitor":{"identifier":"deny-primary-monitor","description":"Denies the primary_monitor command without any pre-configured scope.","commands":{"allow":[],"deny":["primary_monitor"]}},"deny-request-user-attention":{"identifier":"deny-request-user-attention","description":"Denies the request_user_attention command without any pre-configured scope.","commands":{"allow":[],"deny":["request_user_attention"]}},"deny-scale-factor":{"identifier":"deny-scale-factor","description":"Denies the scale_factor command without any pre-configured scope.","commands":{"allow":[],"deny":["scale_factor"]}},"deny-set-always-on-bottom":{"identifier":"deny-set-always-on-bottom","description":"Denies the set_always_on_bottom command without any pre-configured scope.","commands":{"allow":[],"deny":["set_always_on_bottom"]}},"deny-set-always-on-top":{"identifier":"deny-set-always-on-top","description":"Denies the set_always_on_top command without any pre-configured scope.","commands":{"allow":[],"deny":["set_always_on_top"]}},"deny-set-closable":{"identifier":"deny-set-closable","description":"Denies the set_closable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_closable"]}},"deny-set-content-protected":{"identifier":"deny-set-content-protected","description":"Denies the set_content_protected command without any pre-configured scope.","commands":{"allow":[],"deny":["set_content_protected"]}},"deny-set-cursor-grab":{"identifier":"deny-set-cursor-grab","description":"Denies the set_cursor_grab command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_grab"]}},"deny-set-cursor-icon":{"identifier":"deny-set-cursor-icon","description":"Denies the set_cursor_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_icon"]}},"deny-set-cursor-position":{"identifier":"deny-set-cursor-position","description":"Denies the set_cursor_position command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_position"]}},"deny-set-cursor-visible":{"identifier":"deny-set-cursor-visible","description":"Denies the set_cursor_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_visible"]}},"deny-set-decorations":{"identifier":"deny-set-decorations","description":"Denies the set_decorations command without any pre-configured scope.","commands":{"allow":[],"deny":["set_decorations"]}},"deny-set-effects":{"identifier":"deny-set-effects","description":"Denies the set_effects command without any pre-configured scope.","commands":{"allow":[],"deny":["set_effects"]}},"deny-set-focus":{"identifier":"deny-set-focus","description":"Denies the set_focus command without any pre-configured scope.","commands":{"allow":[],"deny":["set_focus"]}},"deny-set-fullscreen":{"identifier":"deny-set-fullscreen","description":"Denies the set_fullscreen command without any pre-configured scope.","commands":{"allow":[],"deny":["set_fullscreen"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-ignore-cursor-events":{"identifier":"deny-set-ignore-cursor-events","description":"Denies the set_ignore_cursor_events command without any pre-configured scope.","commands":{"allow":[],"deny":["set_ignore_cursor_events"]}},"deny-set-max-size":{"identifier":"deny-set-max-size","description":"Denies the set_max_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_max_size"]}},"deny-set-maximizable":{"identifier":"deny-set-maximizable","description":"Denies the set_maximizable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_maximizable"]}},"deny-set-min-size":{"identifier":"deny-set-min-size","description":"Denies the set_min_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_min_size"]}},"deny-set-minimizable":{"identifier":"deny-set-minimizable","description":"Denies the set_minimizable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_minimizable"]}},"deny-set-position":{"identifier":"deny-set-position","description":"Denies the set_position command without any pre-configured scope.","commands":{"allow":[],"deny":["set_position"]}},"deny-set-progress-bar":{"identifier":"deny-set-progress-bar","description":"Denies the set_progress_bar command without any pre-configured scope.","commands":{"allow":[],"deny":["set_progress_bar"]}},"deny-set-resizable":{"identifier":"deny-set-resizable","description":"Denies the set_resizable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_resizable"]}},"deny-set-shadow":{"identifier":"deny-set-shadow","description":"Denies the set_shadow command without any pre-configured scope.","commands":{"allow":[],"deny":["set_shadow"]}},"deny-set-size":{"identifier":"deny-set-size","description":"Denies the set_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_size"]}},"deny-set-skip-taskbar":{"identifier":"deny-set-skip-taskbar","description":"Denies the set_skip_taskbar command without any pre-configured scope.","commands":{"allow":[],"deny":["set_skip_taskbar"]}},"deny-set-title":{"identifier":"deny-set-title","description":"Denies the set_title command without any pre-configured scope.","commands":{"allow":[],"deny":["set_title"]}},"deny-set-title-bar-style":{"identifier":"deny-set-title-bar-style","description":"Denies the set_title_bar_style command without any pre-configured scope.","commands":{"allow":[],"deny":["set_title_bar_style"]}},"deny-set-visible-on-all-workspaces":{"identifier":"deny-set-visible-on-all-workspaces","description":"Denies the set_visible_on_all_workspaces command without any pre-configured scope.","commands":{"allow":[],"deny":["set_visible_on_all_workspaces"]}},"deny-show":{"identifier":"deny-show","description":"Denies the show command without any pre-configured scope.","commands":{"allow":[],"deny":["show"]}},"deny-start-dragging":{"identifier":"deny-start-dragging","description":"Denies the start_dragging command without any pre-configured scope.","commands":{"allow":[],"deny":["start_dragging"]}},"deny-start-resize-dragging":{"identifier":"deny-start-resize-dragging","description":"Denies the start_resize_dragging command without any pre-configured scope.","commands":{"allow":[],"deny":["start_resize_dragging"]}},"deny-theme":{"identifier":"deny-theme","description":"Denies the theme command without any pre-configured scope.","commands":{"allow":[],"deny":["theme"]}},"deny-title":{"identifier":"deny-title","description":"Denies the title command without any pre-configured scope.","commands":{"allow":[],"deny":["title"]}},"deny-toggle-maximize":{"identifier":"deny-toggle-maximize","description":"Denies the toggle_maximize command without any pre-configured scope.","commands":{"allow":[],"deny":["toggle_maximize"]}},"deny-unmaximize":{"identifier":"deny-unmaximize","description":"Denies the unmaximize command without any pre-configured scope.","commands":{"allow":[],"deny":["unmaximize"]}},"deny-unminimize":{"identifier":"deny-unminimize","description":"Denies the unminimize command without any pre-configured scope.","commands":{"allow":[],"deny":["unminimize"]}}},"permission_sets":{},"global_scope_schema":null},"window-state":{"default_permission":{"identifier":"default","description":"This permission set configures what kind of\noperations are available from the window state plugin.\n\n#### Granted Permissions\n\nAll operations are enabled by default.\n\n","permissions":["allow-filename","allow-restore-state","allow-save-window-state"]},"permissions":{"allow-filename":{"identifier":"allow-filename","description":"Enables the filename command without any pre-configured scope.","commands":{"allow":["filename"],"deny":[]}},"allow-restore-state":{"identifier":"allow-restore-state","description":"Enables the restore_state command without any pre-configured scope.","commands":{"allow":["restore_state"],"deny":[]}},"allow-save-window-state":{"identifier":"allow-save-window-state","description":"Enables the save_window_state command without any pre-configured scope.","commands":{"allow":["save_window_state"],"deny":[]}},"deny-filename":{"identifier":"deny-filename","description":"Denies the filename command without any pre-configured scope.","commands":{"allow":[],"deny":["filename"]}},"deny-restore-state":{"identifier":"deny-restore-state","description":"Denies the restore_state command without any pre-configured scope.","commands":{"allow":[],"deny":["restore_state"]}},"deny-save-window-state":{"identifier":"deny-save-window-state","description":"Denies the save_window_state command without any pre-configured scope.","commands":{"allow":[],"deny":["save_window_state"]}}},"permission_sets":{},"global_scope_schema":null}} \ No newline at end of file diff --git a/src-tauri/gen/schemas/capabilities.json b/src-tauri/gen/schemas/capabilities.json new file mode 100644 index 0000000..79c02ab --- /dev/null +++ b/src-tauri/gen/schemas/capabilities.json @@ -0,0 +1 @@ +{"migrated":{"identifier":"migrated","description":"permissions that were migrated from v1","local":true,"windows":["pake"],"permissions":["path:default","event:default","window:default","app:default","resources:default","menu:default","tray:default"]}} \ No newline at end of file diff --git a/src-tauri/gen/schemas/desktop-schema.json b/src-tauri/gen/schemas/desktop-schema.json new file mode 100644 index 0000000..ca35c48 --- /dev/null +++ b/src-tauri/gen/schemas/desktop-schema.json @@ -0,0 +1,2602 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "CapabilityFile", + "description": "Capability formats accepted in a capability file.", + "anyOf": [ + { + "description": "A single capability.", + "allOf": [ + { + "$ref": "#/definitions/Capability" + } + ] + }, + { + "description": "A list of capabilities.", + "type": "array", + "items": { + "$ref": "#/definitions/Capability" + } + }, + { + "description": "A list of capabilities.", + "type": "object", + "required": [ + "capabilities" + ], + "properties": { + "capabilities": { + "description": "The list of capabilities.", + "type": "array", + "items": { + "$ref": "#/definitions/Capability" + } + } + } + } + ], + "definitions": { + "Capability": { + "description": "A grouping and boundary mechanism developers can use to isolate access to the IPC layer.\n\nIt controls application windows fine grained access to the Tauri core, application, or plugin commands. If a window is not matching any capability then it has no access to the IPC layer at all.\n\nThis can be done to create groups of windows, based on their required system access, which can reduce impact of frontend vulnerabilities in less privileged windows. Windows can be added to a capability by exact name (e.g. `main-window`) or glob patterns like `*` or `admin-*`. A Window can have none, one, or multiple associated capabilities.\n\n## Example\n\n```json { \"identifier\": \"main-user-files-write\", \"description\": \"This capability allows the `main` window on macOS and Windows access to `filesystem` write related commands and `dialog` commands to enable programatic access to files selected by the user.\", \"windows\": [ \"main\" ], \"permissions\": [ \"path:default\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] }, \"platforms\": [\"macOS\",\"windows\"] } ```", + "type": "object", + "required": [ + "identifier", + "permissions" + ], + "properties": { + "identifier": { + "description": "Identifier of the capability.\n\n## Example\n\n`main-user-files-write`", + "type": "string" + }, + "description": { + "description": "Description of what the capability is intended to allow on associated windows.\n\nIt should contain a description of what the grouped permissions should allow.\n\n## Example\n\nThis capability allows the `main` window access to `filesystem` write related commands and `dialog` commands to enable programatic access to files selected by the user.", + "default": "", + "type": "string" + }, + "remote": { + "description": "Configure remote URLs that can use the capability permissions.\n\nThis setting is optional and defaults to not being set, as our default use case is that the content is served from our local application.\n\n:::caution Make sure you understand the security implications of providing remote sources with local system access. :::\n\n## Example\n\n```json { \"urls\": [\"https://*.mydomain.dev\"] } ```", + "anyOf": [ + { + "$ref": "#/definitions/CapabilityRemote" + }, + { + "type": "null" + } + ] + }, + "local": { + "description": "Whether this capability is enabled for local app URLs or not. Defaults to `true`.", + "default": true, + "type": "boolean" + }, + "windows": { + "description": "List of windows that are affected by this capability. Can be a glob pattern.\n\nOn multiwebview windows, prefer [`Self::webviews`] for a fine grained access control.\n\n## Example\n\n`[\"main\"]`", + "type": "array", + "items": { + "type": "string" + } + }, + "webviews": { + "description": "List of webviews that are affected by this capability. Can be a glob pattern.\n\nThis is only required when using on multiwebview contexts, by default all child webviews of a window that matches [`Self::windows`] are linked.\n\n## Example\n\n`[\"sub-webview-one\", \"sub-webview-two\"]`", + "type": "array", + "items": { + "type": "string" + } + }, + "permissions": { + "description": "List of permissions attached to this capability.\n\nMust include the plugin name as prefix in the form of `${plugin-name}:${permission-name}`. For commands directly implemented in the application itself only `${permission-name}` is required.\n\n## Example\n\n```json [ \"path:default\", \"event:default\", \"window:default\", \"app:default\", \"image:default\", \"resources:default\", \"menu:default\", \"tray:default\", \"shell:allow-open\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] } ```", + "type": "array", + "items": { + "$ref": "#/definitions/PermissionEntry" + }, + "uniqueItems": true + }, + "platforms": { + "description": "Limit which target platforms this capability applies to.\n\nBy default all platforms are targeted.\n\n## Example\n\n`[\"macOS\",\"windows\"]`", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/definitions/Target" + } + } + } + }, + "CapabilityRemote": { + "description": "Configuration for remote URLs that are associated with the capability.", + "type": "object", + "required": [ + "urls" + ], + "properties": { + "urls": { + "description": "Remote domains this capability refers to using the [URLPattern standard](https://urlpattern.spec.whatwg.org/).\n\n## Examples\n\n- \"https://*.mydomain.dev\": allows subdomains of mydomain.dev - \"https://mydomain.dev/api/*\": allows any subpath of mydomain.dev/api", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "PermissionEntry": { + "description": "An entry for a permission value in a [`Capability`] can be either a raw permission [`Identifier`] or an object that references a permission and extends its scope.", + "anyOf": [ + { + "description": "Reference a permission or permission set by identifier.", + "allOf": [ + { + "$ref": "#/definitions/Identifier" + } + ] + }, + { + "description": "Reference a permission or permission set by identifier and extends its scope.", + "type": "object", + "oneOf": [ + { + "type": "object", + "required": [ + "identifier" + ], + "properties": { + "identifier": { + "oneOf": [ + { + "description": "http:default -> This permission set configures what kind of\nfetch operations are available from the http plugin.\n\nThis enables all fetch operations but does not\nallow explicitly any origins to be fetched. This needs to\nbe manually configured before usage.\n\n#### Granted Permissions\n\nAll fetch operations are enabled.\n\n", + "type": "string", + "enum": [ + "http:default" + ] + }, + { + "description": "http:allow-fetch -> Enables the fetch command without any pre-configured scope.", + "type": "string", + "enum": [ + "http:allow-fetch" + ] + }, + { + "description": "http:allow-fetch-cancel -> Enables the fetch_cancel command without any pre-configured scope.", + "type": "string", + "enum": [ + "http:allow-fetch-cancel" + ] + }, + { + "description": "http:allow-fetch-read-body -> Enables the fetch_read_body command without any pre-configured scope.", + "type": "string", + "enum": [ + "http:allow-fetch-read-body" + ] + }, + { + "description": "http:allow-fetch-send -> Enables the fetch_send command without any pre-configured scope.", + "type": "string", + "enum": [ + "http:allow-fetch-send" + ] + }, + { + "description": "http:deny-fetch -> Denies the fetch command without any pre-configured scope.", + "type": "string", + "enum": [ + "http:deny-fetch" + ] + }, + { + "description": "http:deny-fetch-cancel -> Denies the fetch_cancel command without any pre-configured scope.", + "type": "string", + "enum": [ + "http:deny-fetch-cancel" + ] + }, + { + "description": "http:deny-fetch-read-body -> Denies the fetch_read_body command without any pre-configured scope.", + "type": "string", + "enum": [ + "http:deny-fetch-read-body" + ] + }, + { + "description": "http:deny-fetch-send -> Denies the fetch_send command without any pre-configured scope.", + "type": "string", + "enum": [ + "http:deny-fetch-send" + ] + } + ] + }, + "allow": { + "items": { + "title": "HttpScopeEntry", + "description": "HTTP scope entry.", + "anyOf": [ + { + "description": "A URL that can be accessed by the webview when using the HTTP APIs. Wildcards can be used following the URL pattern standard.\n\nSee [the URL Pattern spec](https://urlpattern.spec.whatwg.org/) for more information.\n\nExamples:\n\n- \"https://*\" : allows all HTTPS origin on port 443\n\n- \"https://*:*\" : allows all HTTPS origin on any port\n\n- \"https://*.github.com/tauri-apps/tauri\": allows any subdomain of \"github.com\" with the \"tauri-apps/api\" path\n\n- \"https://myapi.service.com/users/*\": allows access to any URLs that begins with \"https://myapi.service.com/users/\"", + "type": "string" + }, + { + "type": "object", + "required": [ + "url" + ], + "properties": { + "url": { + "description": "A URL that can be accessed by the webview when using the HTTP APIs. Wildcards can be used following the URL pattern standard.\n\nSee [the URL Pattern spec](https://urlpattern.spec.whatwg.org/) for more information.\n\nExamples:\n\n- \"https://*\" : allows all HTTPS origin on port 443\n\n- \"https://*:*\" : allows all HTTPS origin on any port\n\n- \"https://*.github.com/tauri-apps/tauri\": allows any subdomain of \"github.com\" with the \"tauri-apps/api\" path\n\n- \"https://myapi.service.com/users/*\": allows access to any URLs that begins with \"https://myapi.service.com/users/\"", + "type": "string" + } + } + } + ] + } + }, + "deny": { + "items": { + "title": "HttpScopeEntry", + "description": "HTTP scope entry.", + "anyOf": [ + { + "description": "A URL that can be accessed by the webview when using the HTTP APIs. Wildcards can be used following the URL pattern standard.\n\nSee [the URL Pattern spec](https://urlpattern.spec.whatwg.org/) for more information.\n\nExamples:\n\n- \"https://*\" : allows all HTTPS origin on port 443\n\n- \"https://*:*\" : allows all HTTPS origin on any port\n\n- \"https://*.github.com/tauri-apps/tauri\": allows any subdomain of \"github.com\" with the \"tauri-apps/api\" path\n\n- \"https://myapi.service.com/users/*\": allows access to any URLs that begins with \"https://myapi.service.com/users/\"", + "type": "string" + }, + { + "type": "object", + "required": [ + "url" + ], + "properties": { + "url": { + "description": "A URL that can be accessed by the webview when using the HTTP APIs. Wildcards can be used following the URL pattern standard.\n\nSee [the URL Pattern spec](https://urlpattern.spec.whatwg.org/) for more information.\n\nExamples:\n\n- \"https://*\" : allows all HTTPS origin on port 443\n\n- \"https://*:*\" : allows all HTTPS origin on any port\n\n- \"https://*.github.com/tauri-apps/tauri\": allows any subdomain of \"github.com\" with the \"tauri-apps/api\" path\n\n- \"https://myapi.service.com/users/*\": allows access to any URLs that begins with \"https://myapi.service.com/users/\"", + "type": "string" + } + } + } + ] + } + } + } + } + ] + } + ] + }, + "Identifier": { + "oneOf": [ + { + "description": "app:default -> Default permissions for the plugin.", + "type": "string", + "enum": [ + "app:default" + ] + }, + { + "description": "app:allow-app-hide -> Enables the app_hide command without any pre-configured scope.", + "type": "string", + "enum": [ + "app:allow-app-hide" + ] + }, + { + "description": "app:allow-app-show -> Enables the app_show command without any pre-configured scope.", + "type": "string", + "enum": [ + "app:allow-app-show" + ] + }, + { + "description": "app:allow-default-window-icon -> Enables the default_window_icon command without any pre-configured scope.", + "type": "string", + "enum": [ + "app:allow-default-window-icon" + ] + }, + { + "description": "app:allow-name -> Enables the name command without any pre-configured scope.", + "type": "string", + "enum": [ + "app:allow-name" + ] + }, + { + "description": "app:allow-tauri-version -> Enables the tauri_version command without any pre-configured scope.", + "type": "string", + "enum": [ + "app:allow-tauri-version" + ] + }, + { + "description": "app:allow-version -> Enables the version command without any pre-configured scope.", + "type": "string", + "enum": [ + "app:allow-version" + ] + }, + { + "description": "app:deny-app-hide -> Denies the app_hide command without any pre-configured scope.", + "type": "string", + "enum": [ + "app:deny-app-hide" + ] + }, + { + "description": "app:deny-app-show -> Denies the app_show command without any pre-configured scope.", + "type": "string", + "enum": [ + "app:deny-app-show" + ] + }, + { + "description": "app:deny-default-window-icon -> Denies the default_window_icon command without any pre-configured scope.", + "type": "string", + "enum": [ + "app:deny-default-window-icon" + ] + }, + { + "description": "app:deny-name -> Denies the name command without any pre-configured scope.", + "type": "string", + "enum": [ + "app:deny-name" + ] + }, + { + "description": "app:deny-tauri-version -> Denies the tauri_version command without any pre-configured scope.", + "type": "string", + "enum": [ + "app:deny-tauri-version" + ] + }, + { + "description": "app:deny-version -> Denies the version command without any pre-configured scope.", + "type": "string", + "enum": [ + "app:deny-version" + ] + }, + { + "description": "clipboard-manager:default -> No features are enabled by default, as we believe\nthe clipboard can be inherently dangerous and it is \napplication specific if read and/or write access is needed.\n\nClipboard interaction needs to be explicitly enabled.\n", + "type": "string", + "enum": [ + "clipboard-manager:default" + ] + }, + { + "description": "clipboard-manager:allow-clear -> Enables the clear command without any pre-configured scope.", + "type": "string", + "enum": [ + "clipboard-manager:allow-clear" + ] + }, + { + "description": "clipboard-manager:allow-read-image -> Enables the read_image command without any pre-configured scope.", + "type": "string", + "enum": [ + "clipboard-manager:allow-read-image" + ] + }, + { + "description": "clipboard-manager:allow-read-text -> Enables the read_text command without any pre-configured scope.", + "type": "string", + "enum": [ + "clipboard-manager:allow-read-text" + ] + }, + { + "description": "clipboard-manager:allow-write-html -> Enables the write_html command without any pre-configured scope.", + "type": "string", + "enum": [ + "clipboard-manager:allow-write-html" + ] + }, + { + "description": "clipboard-manager:allow-write-image -> Enables the write_image command without any pre-configured scope.", + "type": "string", + "enum": [ + "clipboard-manager:allow-write-image" + ] + }, + { + "description": "clipboard-manager:allow-write-text -> Enables the write_text command without any pre-configured scope.", + "type": "string", + "enum": [ + "clipboard-manager:allow-write-text" + ] + }, + { + "description": "clipboard-manager:deny-clear -> Denies the clear command without any pre-configured scope.", + "type": "string", + "enum": [ + "clipboard-manager:deny-clear" + ] + }, + { + "description": "clipboard-manager:deny-read-image -> Denies the read_image command without any pre-configured scope.", + "type": "string", + "enum": [ + "clipboard-manager:deny-read-image" + ] + }, + { + "description": "clipboard-manager:deny-read-text -> Denies the read_text command without any pre-configured scope.", + "type": "string", + "enum": [ + "clipboard-manager:deny-read-text" + ] + }, + { + "description": "clipboard-manager:deny-write-html -> Denies the write_html command without any pre-configured scope.", + "type": "string", + "enum": [ + "clipboard-manager:deny-write-html" + ] + }, + { + "description": "clipboard-manager:deny-write-image -> Denies the write_image command without any pre-configured scope.", + "type": "string", + "enum": [ + "clipboard-manager:deny-write-image" + ] + }, + { + "description": "clipboard-manager:deny-write-text -> Denies the write_text command without any pre-configured scope.", + "type": "string", + "enum": [ + "clipboard-manager:deny-write-text" + ] + }, + { + "description": "event:default -> Default permissions for the plugin.", + "type": "string", + "enum": [ + "event:default" + ] + }, + { + "description": "event:allow-emit -> Enables the emit command without any pre-configured scope.", + "type": "string", + "enum": [ + "event:allow-emit" + ] + }, + { + "description": "event:allow-emit-to -> Enables the emit_to command without any pre-configured scope.", + "type": "string", + "enum": [ + "event:allow-emit-to" + ] + }, + { + "description": "event:allow-listen -> Enables the listen command without any pre-configured scope.", + "type": "string", + "enum": [ + "event:allow-listen" + ] + }, + { + "description": "event:allow-unlisten -> Enables the unlisten command without any pre-configured scope.", + "type": "string", + "enum": [ + "event:allow-unlisten" + ] + }, + { + "description": "event:deny-emit -> Denies the emit command without any pre-configured scope.", + "type": "string", + "enum": [ + "event:deny-emit" + ] + }, + { + "description": "event:deny-emit-to -> Denies the emit_to command without any pre-configured scope.", + "type": "string", + "enum": [ + "event:deny-emit-to" + ] + }, + { + "description": "event:deny-listen -> Denies the listen command without any pre-configured scope.", + "type": "string", + "enum": [ + "event:deny-listen" + ] + }, + { + "description": "event:deny-unlisten -> Denies the unlisten command without any pre-configured scope.", + "type": "string", + "enum": [ + "event:deny-unlisten" + ] + }, + { + "description": "global-shortcut:default -> No features are enabled by default, as we believe\nthe shortcuts can be inherently dangerous and it is\napplication specific if specific shortcuts should be\nregistered or unregistered.\n", + "type": "string", + "enum": [ + "global-shortcut:default" + ] + }, + { + "description": "global-shortcut:allow-is-registered -> Enables the is_registered command without any pre-configured scope.", + "type": "string", + "enum": [ + "global-shortcut:allow-is-registered" + ] + }, + { + "description": "global-shortcut:allow-register -> Enables the register command without any pre-configured scope.", + "type": "string", + "enum": [ + "global-shortcut:allow-register" + ] + }, + { + "description": "global-shortcut:allow-register-all -> Enables the register_all command without any pre-configured scope.", + "type": "string", + "enum": [ + "global-shortcut:allow-register-all" + ] + }, + { + "description": "global-shortcut:allow-unregister -> Enables the unregister command without any pre-configured scope.", + "type": "string", + "enum": [ + "global-shortcut:allow-unregister" + ] + }, + { + "description": "global-shortcut:allow-unregister-all -> Enables the unregister_all command without any pre-configured scope.", + "type": "string", + "enum": [ + "global-shortcut:allow-unregister-all" + ] + }, + { + "description": "global-shortcut:deny-is-registered -> Denies the is_registered command without any pre-configured scope.", + "type": "string", + "enum": [ + "global-shortcut:deny-is-registered" + ] + }, + { + "description": "global-shortcut:deny-register -> Denies the register command without any pre-configured scope.", + "type": "string", + "enum": [ + "global-shortcut:deny-register" + ] + }, + { + "description": "global-shortcut:deny-register-all -> Denies the register_all command without any pre-configured scope.", + "type": "string", + "enum": [ + "global-shortcut:deny-register-all" + ] + }, + { + "description": "global-shortcut:deny-unregister -> Denies the unregister command without any pre-configured scope.", + "type": "string", + "enum": [ + "global-shortcut:deny-unregister" + ] + }, + { + "description": "global-shortcut:deny-unregister-all -> Denies the unregister_all command without any pre-configured scope.", + "type": "string", + "enum": [ + "global-shortcut:deny-unregister-all" + ] + }, + { + "description": "http:default -> This permission set configures what kind of\nfetch operations are available from the http plugin.\n\nThis enables all fetch operations but does not\nallow explicitly any origins to be fetched. This needs to\nbe manually configured before usage.\n\n#### Granted Permissions\n\nAll fetch operations are enabled.\n\n", + "type": "string", + "enum": [ + "http:default" + ] + }, + { + "description": "http:allow-fetch -> Enables the fetch command without any pre-configured scope.", + "type": "string", + "enum": [ + "http:allow-fetch" + ] + }, + { + "description": "http:allow-fetch-cancel -> Enables the fetch_cancel command without any pre-configured scope.", + "type": "string", + "enum": [ + "http:allow-fetch-cancel" + ] + }, + { + "description": "http:allow-fetch-read-body -> Enables the fetch_read_body command without any pre-configured scope.", + "type": "string", + "enum": [ + "http:allow-fetch-read-body" + ] + }, + { + "description": "http:allow-fetch-send -> Enables the fetch_send command without any pre-configured scope.", + "type": "string", + "enum": [ + "http:allow-fetch-send" + ] + }, + { + "description": "http:deny-fetch -> Denies the fetch command without any pre-configured scope.", + "type": "string", + "enum": [ + "http:deny-fetch" + ] + }, + { + "description": "http:deny-fetch-cancel -> Denies the fetch_cancel command without any pre-configured scope.", + "type": "string", + "enum": [ + "http:deny-fetch-cancel" + ] + }, + { + "description": "http:deny-fetch-read-body -> Denies the fetch_read_body command without any pre-configured scope.", + "type": "string", + "enum": [ + "http:deny-fetch-read-body" + ] + }, + { + "description": "http:deny-fetch-send -> Denies the fetch_send command without any pre-configured scope.", + "type": "string", + "enum": [ + "http:deny-fetch-send" + ] + }, + { + "description": "image:default -> Default permissions for the plugin.", + "type": "string", + "enum": [ + "image:default" + ] + }, + { + "description": "image:allow-from-bytes -> Enables the from_bytes command without any pre-configured scope.", + "type": "string", + "enum": [ + "image:allow-from-bytes" + ] + }, + { + "description": "image:allow-from-path -> Enables the from_path command without any pre-configured scope.", + "type": "string", + "enum": [ + "image:allow-from-path" + ] + }, + { + "description": "image:allow-new -> Enables the new command without any pre-configured scope.", + "type": "string", + "enum": [ + "image:allow-new" + ] + }, + { + "description": "image:allow-rgba -> Enables the rgba command without any pre-configured scope.", + "type": "string", + "enum": [ + "image:allow-rgba" + ] + }, + { + "description": "image:allow-size -> Enables the size command without any pre-configured scope.", + "type": "string", + "enum": [ + "image:allow-size" + ] + }, + { + "description": "image:deny-from-bytes -> Denies the from_bytes command without any pre-configured scope.", + "type": "string", + "enum": [ + "image:deny-from-bytes" + ] + }, + { + "description": "image:deny-from-path -> Denies the from_path command without any pre-configured scope.", + "type": "string", + "enum": [ + "image:deny-from-path" + ] + }, + { + "description": "image:deny-new -> Denies the new command without any pre-configured scope.", + "type": "string", + "enum": [ + "image:deny-new" + ] + }, + { + "description": "image:deny-rgba -> Denies the rgba command without any pre-configured scope.", + "type": "string", + "enum": [ + "image:deny-rgba" + ] + }, + { + "description": "image:deny-size -> Denies the size command without any pre-configured scope.", + "type": "string", + "enum": [ + "image:deny-size" + ] + }, + { + "description": "menu:default -> Default permissions for the plugin.", + "type": "string", + "enum": [ + "menu:default" + ] + }, + { + "description": "menu:allow-append -> Enables the append command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-append" + ] + }, + { + "description": "menu:allow-create-default -> Enables the create_default command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-create-default" + ] + }, + { + "description": "menu:allow-get -> Enables the get command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-get" + ] + }, + { + "description": "menu:allow-insert -> Enables the insert command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-insert" + ] + }, + { + "description": "menu:allow-is-checked -> Enables the is_checked command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-is-checked" + ] + }, + { + "description": "menu:allow-is-enabled -> Enables the is_enabled command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-is-enabled" + ] + }, + { + "description": "menu:allow-items -> Enables the items command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-items" + ] + }, + { + "description": "menu:allow-new -> Enables the new command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-new" + ] + }, + { + "description": "menu:allow-popup -> Enables the popup command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-popup" + ] + }, + { + "description": "menu:allow-prepend -> Enables the prepend command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-prepend" + ] + }, + { + "description": "menu:allow-remove -> Enables the remove command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-remove" + ] + }, + { + "description": "menu:allow-remove-at -> Enables the remove_at command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-remove-at" + ] + }, + { + "description": "menu:allow-set-accelerator -> Enables the set_accelerator command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-set-accelerator" + ] + }, + { + "description": "menu:allow-set-as-app-menu -> Enables the set_as_app_menu command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-set-as-app-menu" + ] + }, + { + "description": "menu:allow-set-as-help-menu-for-nsapp -> Enables the set_as_help_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-set-as-help-menu-for-nsapp" + ] + }, + { + "description": "menu:allow-set-as-window-menu -> Enables the set_as_window_menu command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-set-as-window-menu" + ] + }, + { + "description": "menu:allow-set-as-windows-menu-for-nsapp -> Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-set-as-windows-menu-for-nsapp" + ] + }, + { + "description": "menu:allow-set-checked -> Enables the set_checked command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-set-checked" + ] + }, + { + "description": "menu:allow-set-enabled -> Enables the set_enabled command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-set-enabled" + ] + }, + { + "description": "menu:allow-set-icon -> Enables the set_icon command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-set-icon" + ] + }, + { + "description": "menu:allow-set-text -> Enables the set_text command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-set-text" + ] + }, + { + "description": "menu:allow-text -> Enables the text command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-text" + ] + }, + { + "description": "menu:deny-append -> Denies the append command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-append" + ] + }, + { + "description": "menu:deny-create-default -> Denies the create_default command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-create-default" + ] + }, + { + "description": "menu:deny-get -> Denies the get command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-get" + ] + }, + { + "description": "menu:deny-insert -> Denies the insert command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-insert" + ] + }, + { + "description": "menu:deny-is-checked -> Denies the is_checked command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-is-checked" + ] + }, + { + "description": "menu:deny-is-enabled -> Denies the is_enabled command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-is-enabled" + ] + }, + { + "description": "menu:deny-items -> Denies the items command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-items" + ] + }, + { + "description": "menu:deny-new -> Denies the new command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-new" + ] + }, + { + "description": "menu:deny-popup -> Denies the popup command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-popup" + ] + }, + { + "description": "menu:deny-prepend -> Denies the prepend command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-prepend" + ] + }, + { + "description": "menu:deny-remove -> Denies the remove command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-remove" + ] + }, + { + "description": "menu:deny-remove-at -> Denies the remove_at command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-remove-at" + ] + }, + { + "description": "menu:deny-set-accelerator -> Denies the set_accelerator command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-set-accelerator" + ] + }, + { + "description": "menu:deny-set-as-app-menu -> Denies the set_as_app_menu command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-set-as-app-menu" + ] + }, + { + "description": "menu:deny-set-as-help-menu-for-nsapp -> Denies the set_as_help_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-set-as-help-menu-for-nsapp" + ] + }, + { + "description": "menu:deny-set-as-window-menu -> Denies the set_as_window_menu command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-set-as-window-menu" + ] + }, + { + "description": "menu:deny-set-as-windows-menu-for-nsapp -> Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-set-as-windows-menu-for-nsapp" + ] + }, + { + "description": "menu:deny-set-checked -> Denies the set_checked command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-set-checked" + ] + }, + { + "description": "menu:deny-set-enabled -> Denies the set_enabled command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-set-enabled" + ] + }, + { + "description": "menu:deny-set-icon -> Denies the set_icon command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-set-icon" + ] + }, + { + "description": "menu:deny-set-text -> Denies the set_text command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-set-text" + ] + }, + { + "description": "menu:deny-text -> Denies the text command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-text" + ] + }, + { + "type": "string", + "enum": [ + "oauth:default" + ] + }, + { + "description": "oauth:allow-cancel -> Enables the cancel command without any pre-configured scope.", + "type": "string", + "enum": [ + "oauth:allow-cancel" + ] + }, + { + "description": "oauth:allow-start -> Enables the start command without any pre-configured scope.", + "type": "string", + "enum": [ + "oauth:allow-start" + ] + }, + { + "description": "oauth:deny-cancel -> Denies the cancel command without any pre-configured scope.", + "type": "string", + "enum": [ + "oauth:deny-cancel" + ] + }, + { + "description": "oauth:deny-start -> Denies the start command without any pre-configured scope.", + "type": "string", + "enum": [ + "oauth:deny-start" + ] + }, + { + "description": "path:default -> Default permissions for the plugin.", + "type": "string", + "enum": [ + "path:default" + ] + }, + { + "description": "path:allow-basename -> Enables the basename command without any pre-configured scope.", + "type": "string", + "enum": [ + "path:allow-basename" + ] + }, + { + "description": "path:allow-dirname -> Enables the dirname command without any pre-configured scope.", + "type": "string", + "enum": [ + "path:allow-dirname" + ] + }, + { + "description": "path:allow-extname -> Enables the extname command without any pre-configured scope.", + "type": "string", + "enum": [ + "path:allow-extname" + ] + }, + { + "description": "path:allow-is-absolute -> Enables the is_absolute command without any pre-configured scope.", + "type": "string", + "enum": [ + "path:allow-is-absolute" + ] + }, + { + "description": "path:allow-join -> Enables the join command without any pre-configured scope.", + "type": "string", + "enum": [ + "path:allow-join" + ] + }, + { + "description": "path:allow-normalize -> Enables the normalize command without any pre-configured scope.", + "type": "string", + "enum": [ + "path:allow-normalize" + ] + }, + { + "description": "path:allow-resolve -> Enables the resolve command without any pre-configured scope.", + "type": "string", + "enum": [ + "path:allow-resolve" + ] + }, + { + "description": "path:allow-resolve-directory -> Enables the resolve_directory command without any pre-configured scope.", + "type": "string", + "enum": [ + "path:allow-resolve-directory" + ] + }, + { + "description": "path:deny-basename -> Denies the basename command without any pre-configured scope.", + "type": "string", + "enum": [ + "path:deny-basename" + ] + }, + { + "description": "path:deny-dirname -> Denies the dirname command without any pre-configured scope.", + "type": "string", + "enum": [ + "path:deny-dirname" + ] + }, + { + "description": "path:deny-extname -> Denies the extname command without any pre-configured scope.", + "type": "string", + "enum": [ + "path:deny-extname" + ] + }, + { + "description": "path:deny-is-absolute -> Denies the is_absolute command without any pre-configured scope.", + "type": "string", + "enum": [ + "path:deny-is-absolute" + ] + }, + { + "description": "path:deny-join -> Denies the join command without any pre-configured scope.", + "type": "string", + "enum": [ + "path:deny-join" + ] + }, + { + "description": "path:deny-normalize -> Denies the normalize command without any pre-configured scope.", + "type": "string", + "enum": [ + "path:deny-normalize" + ] + }, + { + "description": "path:deny-resolve -> Denies the resolve command without any pre-configured scope.", + "type": "string", + "enum": [ + "path:deny-resolve" + ] + }, + { + "description": "path:deny-resolve-directory -> Denies the resolve_directory command without any pre-configured scope.", + "type": "string", + "enum": [ + "path:deny-resolve-directory" + ] + }, + { + "description": "resources:default -> Default permissions for the plugin.", + "type": "string", + "enum": [ + "resources:default" + ] + }, + { + "description": "resources:allow-close -> Enables the close command without any pre-configured scope.", + "type": "string", + "enum": [ + "resources:allow-close" + ] + }, + { + "description": "resources:deny-close -> Denies the close command without any pre-configured scope.", + "type": "string", + "enum": [ + "resources:deny-close" + ] + }, + { + "description": "tray:default -> Default permissions for the plugin.", + "type": "string", + "enum": [ + "tray:default" + ] + }, + { + "description": "tray:allow-get-by-id -> Enables the get_by_id command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:allow-get-by-id" + ] + }, + { + "description": "tray:allow-new -> Enables the new command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:allow-new" + ] + }, + { + "description": "tray:allow-remove-by-id -> Enables the remove_by_id command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:allow-remove-by-id" + ] + }, + { + "description": "tray:allow-set-icon -> Enables the set_icon command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:allow-set-icon" + ] + }, + { + "description": "tray:allow-set-icon-as-template -> Enables the set_icon_as_template command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:allow-set-icon-as-template" + ] + }, + { + "description": "tray:allow-set-menu -> Enables the set_menu command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:allow-set-menu" + ] + }, + { + "description": "tray:allow-set-show-menu-on-left-click -> Enables the set_show_menu_on_left_click command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:allow-set-show-menu-on-left-click" + ] + }, + { + "description": "tray:allow-set-temp-dir-path -> Enables the set_temp_dir_path command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:allow-set-temp-dir-path" + ] + }, + { + "description": "tray:allow-set-title -> Enables the set_title command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:allow-set-title" + ] + }, + { + "description": "tray:allow-set-tooltip -> Enables the set_tooltip command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:allow-set-tooltip" + ] + }, + { + "description": "tray:allow-set-visible -> Enables the set_visible command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:allow-set-visible" + ] + }, + { + "description": "tray:deny-get-by-id -> Denies the get_by_id command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:deny-get-by-id" + ] + }, + { + "description": "tray:deny-new -> Denies the new command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:deny-new" + ] + }, + { + "description": "tray:deny-remove-by-id -> Denies the remove_by_id command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:deny-remove-by-id" + ] + }, + { + "description": "tray:deny-set-icon -> Denies the set_icon command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:deny-set-icon" + ] + }, + { + "description": "tray:deny-set-icon-as-template -> Denies the set_icon_as_template command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:deny-set-icon-as-template" + ] + }, + { + "description": "tray:deny-set-menu -> Denies the set_menu command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:deny-set-menu" + ] + }, + { + "description": "tray:deny-set-show-menu-on-left-click -> Denies the set_show_menu_on_left_click command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:deny-set-show-menu-on-left-click" + ] + }, + { + "description": "tray:deny-set-temp-dir-path -> Denies the set_temp_dir_path command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:deny-set-temp-dir-path" + ] + }, + { + "description": "tray:deny-set-title -> Denies the set_title command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:deny-set-title" + ] + }, + { + "description": "tray:deny-set-tooltip -> Denies the set_tooltip command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:deny-set-tooltip" + ] + }, + { + "description": "tray:deny-set-visible -> Denies the set_visible command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:deny-set-visible" + ] + }, + { + "description": "webview:default -> Default permissions for the plugin.", + "type": "string", + "enum": [ + "webview:default" + ] + }, + { + "description": "webview:allow-create-webview -> Enables the create_webview command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:allow-create-webview" + ] + }, + { + "description": "webview:allow-create-webview-window -> Enables the create_webview_window command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:allow-create-webview-window" + ] + }, + { + "description": "webview:allow-internal-toggle-devtools -> Enables the internal_toggle_devtools command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:allow-internal-toggle-devtools" + ] + }, + { + "description": "webview:allow-print -> Enables the print command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:allow-print" + ] + }, + { + "description": "webview:allow-reparent -> Enables the reparent command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:allow-reparent" + ] + }, + { + "description": "webview:allow-set-webview-focus -> Enables the set_webview_focus command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:allow-set-webview-focus" + ] + }, + { + "description": "webview:allow-set-webview-position -> Enables the set_webview_position command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:allow-set-webview-position" + ] + }, + { + "description": "webview:allow-set-webview-size -> Enables the set_webview_size command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:allow-set-webview-size" + ] + }, + { + "description": "webview:allow-set-webview-zoom -> Enables the set_webview_zoom command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:allow-set-webview-zoom" + ] + }, + { + "description": "webview:allow-webview-close -> Enables the webview_close command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:allow-webview-close" + ] + }, + { + "description": "webview:allow-webview-position -> Enables the webview_position command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:allow-webview-position" + ] + }, + { + "description": "webview:allow-webview-size -> Enables the webview_size command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:allow-webview-size" + ] + }, + { + "description": "webview:deny-create-webview -> Denies the create_webview command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:deny-create-webview" + ] + }, + { + "description": "webview:deny-create-webview-window -> Denies the create_webview_window command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:deny-create-webview-window" + ] + }, + { + "description": "webview:deny-internal-toggle-devtools -> Denies the internal_toggle_devtools command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:deny-internal-toggle-devtools" + ] + }, + { + "description": "webview:deny-print -> Denies the print command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:deny-print" + ] + }, + { + "description": "webview:deny-reparent -> Denies the reparent command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:deny-reparent" + ] + }, + { + "description": "webview:deny-set-webview-focus -> Denies the set_webview_focus command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:deny-set-webview-focus" + ] + }, + { + "description": "webview:deny-set-webview-position -> Denies the set_webview_position command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:deny-set-webview-position" + ] + }, + { + "description": "webview:deny-set-webview-size -> Denies the set_webview_size command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:deny-set-webview-size" + ] + }, + { + "description": "webview:deny-set-webview-zoom -> Denies the set_webview_zoom command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:deny-set-webview-zoom" + ] + }, + { + "description": "webview:deny-webview-close -> Denies the webview_close command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:deny-webview-close" + ] + }, + { + "description": "webview:deny-webview-position -> Denies the webview_position command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:deny-webview-position" + ] + }, + { + "description": "webview:deny-webview-size -> Denies the webview_size command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:deny-webview-size" + ] + }, + { + "description": "window:default -> Default permissions for the plugin.", + "type": "string", + "enum": [ + "window:default" + ] + }, + { + "description": "window:allow-available-monitors -> Enables the available_monitors command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-available-monitors" + ] + }, + { + "description": "window:allow-center -> Enables the center command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-center" + ] + }, + { + "description": "window:allow-close -> Enables the close command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-close" + ] + }, + { + "description": "window:allow-create -> Enables the create command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-create" + ] + }, + { + "description": "window:allow-current-monitor -> Enables the current_monitor command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-current-monitor" + ] + }, + { + "description": "window:allow-cursor-position -> Enables the cursor_position command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-cursor-position" + ] + }, + { + "description": "window:allow-destroy -> Enables the destroy command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-destroy" + ] + }, + { + "description": "window:allow-hide -> Enables the hide command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-hide" + ] + }, + { + "description": "window:allow-inner-position -> Enables the inner_position command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-inner-position" + ] + }, + { + "description": "window:allow-inner-size -> Enables the inner_size command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-inner-size" + ] + }, + { + "description": "window:allow-internal-toggle-maximize -> Enables the internal_toggle_maximize command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-internal-toggle-maximize" + ] + }, + { + "description": "window:allow-is-closable -> Enables the is_closable command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-is-closable" + ] + }, + { + "description": "window:allow-is-decorated -> Enables the is_decorated command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-is-decorated" + ] + }, + { + "description": "window:allow-is-focused -> Enables the is_focused command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-is-focused" + ] + }, + { + "description": "window:allow-is-fullscreen -> Enables the is_fullscreen command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-is-fullscreen" + ] + }, + { + "description": "window:allow-is-maximizable -> Enables the is_maximizable command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-is-maximizable" + ] + }, + { + "description": "window:allow-is-maximized -> Enables the is_maximized command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-is-maximized" + ] + }, + { + "description": "window:allow-is-minimizable -> Enables the is_minimizable command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-is-minimizable" + ] + }, + { + "description": "window:allow-is-minimized -> Enables the is_minimized command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-is-minimized" + ] + }, + { + "description": "window:allow-is-resizable -> Enables the is_resizable command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-is-resizable" + ] + }, + { + "description": "window:allow-is-visible -> Enables the is_visible command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-is-visible" + ] + }, + { + "description": "window:allow-maximize -> Enables the maximize command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-maximize" + ] + }, + { + "description": "window:allow-minimize -> Enables the minimize command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-minimize" + ] + }, + { + "description": "window:allow-monitor-from-point -> Enables the monitor_from_point command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-monitor-from-point" + ] + }, + { + "description": "window:allow-outer-position -> Enables the outer_position command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-outer-position" + ] + }, + { + "description": "window:allow-outer-size -> Enables the outer_size command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-outer-size" + ] + }, + { + "description": "window:allow-primary-monitor -> Enables the primary_monitor command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-primary-monitor" + ] + }, + { + "description": "window:allow-request-user-attention -> Enables the request_user_attention command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-request-user-attention" + ] + }, + { + "description": "window:allow-scale-factor -> Enables the scale_factor command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-scale-factor" + ] + }, + { + "description": "window:allow-set-always-on-bottom -> Enables the set_always_on_bottom command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-always-on-bottom" + ] + }, + { + "description": "window:allow-set-always-on-top -> Enables the set_always_on_top command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-always-on-top" + ] + }, + { + "description": "window:allow-set-closable -> Enables the set_closable command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-closable" + ] + }, + { + "description": "window:allow-set-content-protected -> Enables the set_content_protected command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-content-protected" + ] + }, + { + "description": "window:allow-set-cursor-grab -> Enables the set_cursor_grab command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-cursor-grab" + ] + }, + { + "description": "window:allow-set-cursor-icon -> Enables the set_cursor_icon command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-cursor-icon" + ] + }, + { + "description": "window:allow-set-cursor-position -> Enables the set_cursor_position command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-cursor-position" + ] + }, + { + "description": "window:allow-set-cursor-visible -> Enables the set_cursor_visible command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-cursor-visible" + ] + }, + { + "description": "window:allow-set-decorations -> Enables the set_decorations command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-decorations" + ] + }, + { + "description": "window:allow-set-effects -> Enables the set_effects command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-effects" + ] + }, + { + "description": "window:allow-set-focus -> Enables the set_focus command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-focus" + ] + }, + { + "description": "window:allow-set-fullscreen -> Enables the set_fullscreen command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-fullscreen" + ] + }, + { + "description": "window:allow-set-icon -> Enables the set_icon command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-icon" + ] + }, + { + "description": "window:allow-set-ignore-cursor-events -> Enables the set_ignore_cursor_events command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-ignore-cursor-events" + ] + }, + { + "description": "window:allow-set-max-size -> Enables the set_max_size command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-max-size" + ] + }, + { + "description": "window:allow-set-maximizable -> Enables the set_maximizable command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-maximizable" + ] + }, + { + "description": "window:allow-set-min-size -> Enables the set_min_size command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-min-size" + ] + }, + { + "description": "window:allow-set-minimizable -> Enables the set_minimizable command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-minimizable" + ] + }, + { + "description": "window:allow-set-position -> Enables the set_position command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-position" + ] + }, + { + "description": "window:allow-set-progress-bar -> Enables the set_progress_bar command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-progress-bar" + ] + }, + { + "description": "window:allow-set-resizable -> Enables the set_resizable command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-resizable" + ] + }, + { + "description": "window:allow-set-shadow -> Enables the set_shadow command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-shadow" + ] + }, + { + "description": "window:allow-set-size -> Enables the set_size command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-size" + ] + }, + { + "description": "window:allow-set-skip-taskbar -> Enables the set_skip_taskbar command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-skip-taskbar" + ] + }, + { + "description": "window:allow-set-title -> Enables the set_title command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-title" + ] + }, + { + "description": "window:allow-set-title-bar-style -> Enables the set_title_bar_style command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-title-bar-style" + ] + }, + { + "description": "window:allow-set-visible-on-all-workspaces -> Enables the set_visible_on_all_workspaces command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-visible-on-all-workspaces" + ] + }, + { + "description": "window:allow-show -> Enables the show command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-show" + ] + }, + { + "description": "window:allow-start-dragging -> Enables the start_dragging command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-start-dragging" + ] + }, + { + "description": "window:allow-start-resize-dragging -> Enables the start_resize_dragging command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-start-resize-dragging" + ] + }, + { + "description": "window:allow-theme -> Enables the theme command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-theme" + ] + }, + { + "description": "window:allow-title -> Enables the title command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-title" + ] + }, + { + "description": "window:allow-toggle-maximize -> Enables the toggle_maximize command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-toggle-maximize" + ] + }, + { + "description": "window:allow-unmaximize -> Enables the unmaximize command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-unmaximize" + ] + }, + { + "description": "window:allow-unminimize -> Enables the unminimize command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-unminimize" + ] + }, + { + "description": "window:deny-available-monitors -> Denies the available_monitors command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-available-monitors" + ] + }, + { + "description": "window:deny-center -> Denies the center command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-center" + ] + }, + { + "description": "window:deny-close -> Denies the close command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-close" + ] + }, + { + "description": "window:deny-create -> Denies the create command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-create" + ] + }, + { + "description": "window:deny-current-monitor -> Denies the current_monitor command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-current-monitor" + ] + }, + { + "description": "window:deny-cursor-position -> Denies the cursor_position command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-cursor-position" + ] + }, + { + "description": "window:deny-destroy -> Denies the destroy command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-destroy" + ] + }, + { + "description": "window:deny-hide -> Denies the hide command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-hide" + ] + }, + { + "description": "window:deny-inner-position -> Denies the inner_position command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-inner-position" + ] + }, + { + "description": "window:deny-inner-size -> Denies the inner_size command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-inner-size" + ] + }, + { + "description": "window:deny-internal-toggle-maximize -> Denies the internal_toggle_maximize command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-internal-toggle-maximize" + ] + }, + { + "description": "window:deny-is-closable -> Denies the is_closable command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-is-closable" + ] + }, + { + "description": "window:deny-is-decorated -> Denies the is_decorated command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-is-decorated" + ] + }, + { + "description": "window:deny-is-focused -> Denies the is_focused command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-is-focused" + ] + }, + { + "description": "window:deny-is-fullscreen -> Denies the is_fullscreen command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-is-fullscreen" + ] + }, + { + "description": "window:deny-is-maximizable -> Denies the is_maximizable command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-is-maximizable" + ] + }, + { + "description": "window:deny-is-maximized -> Denies the is_maximized command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-is-maximized" + ] + }, + { + "description": "window:deny-is-minimizable -> Denies the is_minimizable command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-is-minimizable" + ] + }, + { + "description": "window:deny-is-minimized -> Denies the is_minimized command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-is-minimized" + ] + }, + { + "description": "window:deny-is-resizable -> Denies the is_resizable command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-is-resizable" + ] + }, + { + "description": "window:deny-is-visible -> Denies the is_visible command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-is-visible" + ] + }, + { + "description": "window:deny-maximize -> Denies the maximize command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-maximize" + ] + }, + { + "description": "window:deny-minimize -> Denies the minimize command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-minimize" + ] + }, + { + "description": "window:deny-monitor-from-point -> Denies the monitor_from_point command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-monitor-from-point" + ] + }, + { + "description": "window:deny-outer-position -> Denies the outer_position command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-outer-position" + ] + }, + { + "description": "window:deny-outer-size -> Denies the outer_size command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-outer-size" + ] + }, + { + "description": "window:deny-primary-monitor -> Denies the primary_monitor command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-primary-monitor" + ] + }, + { + "description": "window:deny-request-user-attention -> Denies the request_user_attention command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-request-user-attention" + ] + }, + { + "description": "window:deny-scale-factor -> Denies the scale_factor command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-scale-factor" + ] + }, + { + "description": "window:deny-set-always-on-bottom -> Denies the set_always_on_bottom command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-always-on-bottom" + ] + }, + { + "description": "window:deny-set-always-on-top -> Denies the set_always_on_top command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-always-on-top" + ] + }, + { + "description": "window:deny-set-closable -> Denies the set_closable command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-closable" + ] + }, + { + "description": "window:deny-set-content-protected -> Denies the set_content_protected command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-content-protected" + ] + }, + { + "description": "window:deny-set-cursor-grab -> Denies the set_cursor_grab command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-cursor-grab" + ] + }, + { + "description": "window:deny-set-cursor-icon -> Denies the set_cursor_icon command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-cursor-icon" + ] + }, + { + "description": "window:deny-set-cursor-position -> Denies the set_cursor_position command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-cursor-position" + ] + }, + { + "description": "window:deny-set-cursor-visible -> Denies the set_cursor_visible command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-cursor-visible" + ] + }, + { + "description": "window:deny-set-decorations -> Denies the set_decorations command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-decorations" + ] + }, + { + "description": "window:deny-set-effects -> Denies the set_effects command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-effects" + ] + }, + { + "description": "window:deny-set-focus -> Denies the set_focus command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-focus" + ] + }, + { + "description": "window:deny-set-fullscreen -> Denies the set_fullscreen command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-fullscreen" + ] + }, + { + "description": "window:deny-set-icon -> Denies the set_icon command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-icon" + ] + }, + { + "description": "window:deny-set-ignore-cursor-events -> Denies the set_ignore_cursor_events command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-ignore-cursor-events" + ] + }, + { + "description": "window:deny-set-max-size -> Denies the set_max_size command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-max-size" + ] + }, + { + "description": "window:deny-set-maximizable -> Denies the set_maximizable command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-maximizable" + ] + }, + { + "description": "window:deny-set-min-size -> Denies the set_min_size command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-min-size" + ] + }, + { + "description": "window:deny-set-minimizable -> Denies the set_minimizable command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-minimizable" + ] + }, + { + "description": "window:deny-set-position -> Denies the set_position command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-position" + ] + }, + { + "description": "window:deny-set-progress-bar -> Denies the set_progress_bar command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-progress-bar" + ] + }, + { + "description": "window:deny-set-resizable -> Denies the set_resizable command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-resizable" + ] + }, + { + "description": "window:deny-set-shadow -> Denies the set_shadow command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-shadow" + ] + }, + { + "description": "window:deny-set-size -> Denies the set_size command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-size" + ] + }, + { + "description": "window:deny-set-skip-taskbar -> Denies the set_skip_taskbar command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-skip-taskbar" + ] + }, + { + "description": "window:deny-set-title -> Denies the set_title command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-title" + ] + }, + { + "description": "window:deny-set-title-bar-style -> Denies the set_title_bar_style command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-title-bar-style" + ] + }, + { + "description": "window:deny-set-visible-on-all-workspaces -> Denies the set_visible_on_all_workspaces command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-visible-on-all-workspaces" + ] + }, + { + "description": "window:deny-show -> Denies the show command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-show" + ] + }, + { + "description": "window:deny-start-dragging -> Denies the start_dragging command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-start-dragging" + ] + }, + { + "description": "window:deny-start-resize-dragging -> Denies the start_resize_dragging command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-start-resize-dragging" + ] + }, + { + "description": "window:deny-theme -> Denies the theme command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-theme" + ] + }, + { + "description": "window:deny-title -> Denies the title command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-title" + ] + }, + { + "description": "window:deny-toggle-maximize -> Denies the toggle_maximize command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-toggle-maximize" + ] + }, + { + "description": "window:deny-unmaximize -> Denies the unmaximize command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-unmaximize" + ] + }, + { + "description": "window:deny-unminimize -> Denies the unminimize command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-unminimize" + ] + }, + { + "description": "window-state:default -> This permission set configures what kind of\noperations are available from the window state plugin.\n\n#### Granted Permissions\n\nAll operations are enabled by default.\n\n", + "type": "string", + "enum": [ + "window-state:default" + ] + }, + { + "description": "window-state:allow-filename -> Enables the filename command without any pre-configured scope.", + "type": "string", + "enum": [ + "window-state:allow-filename" + ] + }, + { + "description": "window-state:allow-restore-state -> Enables the restore_state command without any pre-configured scope.", + "type": "string", + "enum": [ + "window-state:allow-restore-state" + ] + }, + { + "description": "window-state:allow-save-window-state -> Enables the save_window_state command without any pre-configured scope.", + "type": "string", + "enum": [ + "window-state:allow-save-window-state" + ] + }, + { + "description": "window-state:deny-filename -> Denies the filename command without any pre-configured scope.", + "type": "string", + "enum": [ + "window-state:deny-filename" + ] + }, + { + "description": "window-state:deny-restore-state -> Denies the restore_state command without any pre-configured scope.", + "type": "string", + "enum": [ + "window-state:deny-restore-state" + ] + }, + { + "description": "window-state:deny-save-window-state -> Denies the save_window_state command without any pre-configured scope.", + "type": "string", + "enum": [ + "window-state:deny-save-window-state" + ] + } + ] + }, + "Value": { + "description": "All supported ACL values.", + "anyOf": [ + { + "description": "Represents a null JSON value.", + "type": "null" + }, + { + "description": "Represents a [`bool`].", + "type": "boolean" + }, + { + "description": "Represents a valid ACL [`Number`].", + "allOf": [ + { + "$ref": "#/definitions/Number" + } + ] + }, + { + "description": "Represents a [`String`].", + "type": "string" + }, + { + "description": "Represents a list of other [`Value`]s.", + "type": "array", + "items": { + "$ref": "#/definitions/Value" + } + }, + { + "description": "Represents a map of [`String`] keys to [`Value`]s.", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/Value" + } + } + ] + }, + "Number": { + "description": "A valid ACL number.", + "anyOf": [ + { + "description": "Represents an [`i64`].", + "type": "integer", + "format": "int64" + }, + { + "description": "Represents a [`f64`].", + "type": "number", + "format": "double" + } + ] + }, + "Target": { + "description": "Platform target.", + "oneOf": [ + { + "description": "MacOS.", + "type": "string", + "enum": [ + "macOS" + ] + }, + { + "description": "Windows.", + "type": "string", + "enum": [ + "windows" + ] + }, + { + "description": "Linux.", + "type": "string", + "enum": [ + "linux" + ] + }, + { + "description": "Android.", + "type": "string", + "enum": [ + "android" + ] + }, + { + "description": "iOS.", + "type": "string", + "enum": [ + "iOS" + ] + } + ] + } + } +} \ No newline at end of file diff --git a/src-tauri/gen/schemas/macOS-schema.json b/src-tauri/gen/schemas/macOS-schema.json new file mode 100644 index 0000000..ca35c48 --- /dev/null +++ b/src-tauri/gen/schemas/macOS-schema.json @@ -0,0 +1,2602 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "CapabilityFile", + "description": "Capability formats accepted in a capability file.", + "anyOf": [ + { + "description": "A single capability.", + "allOf": [ + { + "$ref": "#/definitions/Capability" + } + ] + }, + { + "description": "A list of capabilities.", + "type": "array", + "items": { + "$ref": "#/definitions/Capability" + } + }, + { + "description": "A list of capabilities.", + "type": "object", + "required": [ + "capabilities" + ], + "properties": { + "capabilities": { + "description": "The list of capabilities.", + "type": "array", + "items": { + "$ref": "#/definitions/Capability" + } + } + } + } + ], + "definitions": { + "Capability": { + "description": "A grouping and boundary mechanism developers can use to isolate access to the IPC layer.\n\nIt controls application windows fine grained access to the Tauri core, application, or plugin commands. If a window is not matching any capability then it has no access to the IPC layer at all.\n\nThis can be done to create groups of windows, based on their required system access, which can reduce impact of frontend vulnerabilities in less privileged windows. Windows can be added to a capability by exact name (e.g. `main-window`) or glob patterns like `*` or `admin-*`. A Window can have none, one, or multiple associated capabilities.\n\n## Example\n\n```json { \"identifier\": \"main-user-files-write\", \"description\": \"This capability allows the `main` window on macOS and Windows access to `filesystem` write related commands and `dialog` commands to enable programatic access to files selected by the user.\", \"windows\": [ \"main\" ], \"permissions\": [ \"path:default\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] }, \"platforms\": [\"macOS\",\"windows\"] } ```", + "type": "object", + "required": [ + "identifier", + "permissions" + ], + "properties": { + "identifier": { + "description": "Identifier of the capability.\n\n## Example\n\n`main-user-files-write`", + "type": "string" + }, + "description": { + "description": "Description of what the capability is intended to allow on associated windows.\n\nIt should contain a description of what the grouped permissions should allow.\n\n## Example\n\nThis capability allows the `main` window access to `filesystem` write related commands and `dialog` commands to enable programatic access to files selected by the user.", + "default": "", + "type": "string" + }, + "remote": { + "description": "Configure remote URLs that can use the capability permissions.\n\nThis setting is optional and defaults to not being set, as our default use case is that the content is served from our local application.\n\n:::caution Make sure you understand the security implications of providing remote sources with local system access. :::\n\n## Example\n\n```json { \"urls\": [\"https://*.mydomain.dev\"] } ```", + "anyOf": [ + { + "$ref": "#/definitions/CapabilityRemote" + }, + { + "type": "null" + } + ] + }, + "local": { + "description": "Whether this capability is enabled for local app URLs or not. Defaults to `true`.", + "default": true, + "type": "boolean" + }, + "windows": { + "description": "List of windows that are affected by this capability. Can be a glob pattern.\n\nOn multiwebview windows, prefer [`Self::webviews`] for a fine grained access control.\n\n## Example\n\n`[\"main\"]`", + "type": "array", + "items": { + "type": "string" + } + }, + "webviews": { + "description": "List of webviews that are affected by this capability. Can be a glob pattern.\n\nThis is only required when using on multiwebview contexts, by default all child webviews of a window that matches [`Self::windows`] are linked.\n\n## Example\n\n`[\"sub-webview-one\", \"sub-webview-two\"]`", + "type": "array", + "items": { + "type": "string" + } + }, + "permissions": { + "description": "List of permissions attached to this capability.\n\nMust include the plugin name as prefix in the form of `${plugin-name}:${permission-name}`. For commands directly implemented in the application itself only `${permission-name}` is required.\n\n## Example\n\n```json [ \"path:default\", \"event:default\", \"window:default\", \"app:default\", \"image:default\", \"resources:default\", \"menu:default\", \"tray:default\", \"shell:allow-open\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] } ```", + "type": "array", + "items": { + "$ref": "#/definitions/PermissionEntry" + }, + "uniqueItems": true + }, + "platforms": { + "description": "Limit which target platforms this capability applies to.\n\nBy default all platforms are targeted.\n\n## Example\n\n`[\"macOS\",\"windows\"]`", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/definitions/Target" + } + } + } + }, + "CapabilityRemote": { + "description": "Configuration for remote URLs that are associated with the capability.", + "type": "object", + "required": [ + "urls" + ], + "properties": { + "urls": { + "description": "Remote domains this capability refers to using the [URLPattern standard](https://urlpattern.spec.whatwg.org/).\n\n## Examples\n\n- \"https://*.mydomain.dev\": allows subdomains of mydomain.dev - \"https://mydomain.dev/api/*\": allows any subpath of mydomain.dev/api", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "PermissionEntry": { + "description": "An entry for a permission value in a [`Capability`] can be either a raw permission [`Identifier`] or an object that references a permission and extends its scope.", + "anyOf": [ + { + "description": "Reference a permission or permission set by identifier.", + "allOf": [ + { + "$ref": "#/definitions/Identifier" + } + ] + }, + { + "description": "Reference a permission or permission set by identifier and extends its scope.", + "type": "object", + "oneOf": [ + { + "type": "object", + "required": [ + "identifier" + ], + "properties": { + "identifier": { + "oneOf": [ + { + "description": "http:default -> This permission set configures what kind of\nfetch operations are available from the http plugin.\n\nThis enables all fetch operations but does not\nallow explicitly any origins to be fetched. This needs to\nbe manually configured before usage.\n\n#### Granted Permissions\n\nAll fetch operations are enabled.\n\n", + "type": "string", + "enum": [ + "http:default" + ] + }, + { + "description": "http:allow-fetch -> Enables the fetch command without any pre-configured scope.", + "type": "string", + "enum": [ + "http:allow-fetch" + ] + }, + { + "description": "http:allow-fetch-cancel -> Enables the fetch_cancel command without any pre-configured scope.", + "type": "string", + "enum": [ + "http:allow-fetch-cancel" + ] + }, + { + "description": "http:allow-fetch-read-body -> Enables the fetch_read_body command without any pre-configured scope.", + "type": "string", + "enum": [ + "http:allow-fetch-read-body" + ] + }, + { + "description": "http:allow-fetch-send -> Enables the fetch_send command without any pre-configured scope.", + "type": "string", + "enum": [ + "http:allow-fetch-send" + ] + }, + { + "description": "http:deny-fetch -> Denies the fetch command without any pre-configured scope.", + "type": "string", + "enum": [ + "http:deny-fetch" + ] + }, + { + "description": "http:deny-fetch-cancel -> Denies the fetch_cancel command without any pre-configured scope.", + "type": "string", + "enum": [ + "http:deny-fetch-cancel" + ] + }, + { + "description": "http:deny-fetch-read-body -> Denies the fetch_read_body command without any pre-configured scope.", + "type": "string", + "enum": [ + "http:deny-fetch-read-body" + ] + }, + { + "description": "http:deny-fetch-send -> Denies the fetch_send command without any pre-configured scope.", + "type": "string", + "enum": [ + "http:deny-fetch-send" + ] + } + ] + }, + "allow": { + "items": { + "title": "HttpScopeEntry", + "description": "HTTP scope entry.", + "anyOf": [ + { + "description": "A URL that can be accessed by the webview when using the HTTP APIs. Wildcards can be used following the URL pattern standard.\n\nSee [the URL Pattern spec](https://urlpattern.spec.whatwg.org/) for more information.\n\nExamples:\n\n- \"https://*\" : allows all HTTPS origin on port 443\n\n- \"https://*:*\" : allows all HTTPS origin on any port\n\n- \"https://*.github.com/tauri-apps/tauri\": allows any subdomain of \"github.com\" with the \"tauri-apps/api\" path\n\n- \"https://myapi.service.com/users/*\": allows access to any URLs that begins with \"https://myapi.service.com/users/\"", + "type": "string" + }, + { + "type": "object", + "required": [ + "url" + ], + "properties": { + "url": { + "description": "A URL that can be accessed by the webview when using the HTTP APIs. Wildcards can be used following the URL pattern standard.\n\nSee [the URL Pattern spec](https://urlpattern.spec.whatwg.org/) for more information.\n\nExamples:\n\n- \"https://*\" : allows all HTTPS origin on port 443\n\n- \"https://*:*\" : allows all HTTPS origin on any port\n\n- \"https://*.github.com/tauri-apps/tauri\": allows any subdomain of \"github.com\" with the \"tauri-apps/api\" path\n\n- \"https://myapi.service.com/users/*\": allows access to any URLs that begins with \"https://myapi.service.com/users/\"", + "type": "string" + } + } + } + ] + } + }, + "deny": { + "items": { + "title": "HttpScopeEntry", + "description": "HTTP scope entry.", + "anyOf": [ + { + "description": "A URL that can be accessed by the webview when using the HTTP APIs. Wildcards can be used following the URL pattern standard.\n\nSee [the URL Pattern spec](https://urlpattern.spec.whatwg.org/) for more information.\n\nExamples:\n\n- \"https://*\" : allows all HTTPS origin on port 443\n\n- \"https://*:*\" : allows all HTTPS origin on any port\n\n- \"https://*.github.com/tauri-apps/tauri\": allows any subdomain of \"github.com\" with the \"tauri-apps/api\" path\n\n- \"https://myapi.service.com/users/*\": allows access to any URLs that begins with \"https://myapi.service.com/users/\"", + "type": "string" + }, + { + "type": "object", + "required": [ + "url" + ], + "properties": { + "url": { + "description": "A URL that can be accessed by the webview when using the HTTP APIs. Wildcards can be used following the URL pattern standard.\n\nSee [the URL Pattern spec](https://urlpattern.spec.whatwg.org/) for more information.\n\nExamples:\n\n- \"https://*\" : allows all HTTPS origin on port 443\n\n- \"https://*:*\" : allows all HTTPS origin on any port\n\n- \"https://*.github.com/tauri-apps/tauri\": allows any subdomain of \"github.com\" with the \"tauri-apps/api\" path\n\n- \"https://myapi.service.com/users/*\": allows access to any URLs that begins with \"https://myapi.service.com/users/\"", + "type": "string" + } + } + } + ] + } + } + } + } + ] + } + ] + }, + "Identifier": { + "oneOf": [ + { + "description": "app:default -> Default permissions for the plugin.", + "type": "string", + "enum": [ + "app:default" + ] + }, + { + "description": "app:allow-app-hide -> Enables the app_hide command without any pre-configured scope.", + "type": "string", + "enum": [ + "app:allow-app-hide" + ] + }, + { + "description": "app:allow-app-show -> Enables the app_show command without any pre-configured scope.", + "type": "string", + "enum": [ + "app:allow-app-show" + ] + }, + { + "description": "app:allow-default-window-icon -> Enables the default_window_icon command without any pre-configured scope.", + "type": "string", + "enum": [ + "app:allow-default-window-icon" + ] + }, + { + "description": "app:allow-name -> Enables the name command without any pre-configured scope.", + "type": "string", + "enum": [ + "app:allow-name" + ] + }, + { + "description": "app:allow-tauri-version -> Enables the tauri_version command without any pre-configured scope.", + "type": "string", + "enum": [ + "app:allow-tauri-version" + ] + }, + { + "description": "app:allow-version -> Enables the version command without any pre-configured scope.", + "type": "string", + "enum": [ + "app:allow-version" + ] + }, + { + "description": "app:deny-app-hide -> Denies the app_hide command without any pre-configured scope.", + "type": "string", + "enum": [ + "app:deny-app-hide" + ] + }, + { + "description": "app:deny-app-show -> Denies the app_show command without any pre-configured scope.", + "type": "string", + "enum": [ + "app:deny-app-show" + ] + }, + { + "description": "app:deny-default-window-icon -> Denies the default_window_icon command without any pre-configured scope.", + "type": "string", + "enum": [ + "app:deny-default-window-icon" + ] + }, + { + "description": "app:deny-name -> Denies the name command without any pre-configured scope.", + "type": "string", + "enum": [ + "app:deny-name" + ] + }, + { + "description": "app:deny-tauri-version -> Denies the tauri_version command without any pre-configured scope.", + "type": "string", + "enum": [ + "app:deny-tauri-version" + ] + }, + { + "description": "app:deny-version -> Denies the version command without any pre-configured scope.", + "type": "string", + "enum": [ + "app:deny-version" + ] + }, + { + "description": "clipboard-manager:default -> No features are enabled by default, as we believe\nthe clipboard can be inherently dangerous and it is \napplication specific if read and/or write access is needed.\n\nClipboard interaction needs to be explicitly enabled.\n", + "type": "string", + "enum": [ + "clipboard-manager:default" + ] + }, + { + "description": "clipboard-manager:allow-clear -> Enables the clear command without any pre-configured scope.", + "type": "string", + "enum": [ + "clipboard-manager:allow-clear" + ] + }, + { + "description": "clipboard-manager:allow-read-image -> Enables the read_image command without any pre-configured scope.", + "type": "string", + "enum": [ + "clipboard-manager:allow-read-image" + ] + }, + { + "description": "clipboard-manager:allow-read-text -> Enables the read_text command without any pre-configured scope.", + "type": "string", + "enum": [ + "clipboard-manager:allow-read-text" + ] + }, + { + "description": "clipboard-manager:allow-write-html -> Enables the write_html command without any pre-configured scope.", + "type": "string", + "enum": [ + "clipboard-manager:allow-write-html" + ] + }, + { + "description": "clipboard-manager:allow-write-image -> Enables the write_image command without any pre-configured scope.", + "type": "string", + "enum": [ + "clipboard-manager:allow-write-image" + ] + }, + { + "description": "clipboard-manager:allow-write-text -> Enables the write_text command without any pre-configured scope.", + "type": "string", + "enum": [ + "clipboard-manager:allow-write-text" + ] + }, + { + "description": "clipboard-manager:deny-clear -> Denies the clear command without any pre-configured scope.", + "type": "string", + "enum": [ + "clipboard-manager:deny-clear" + ] + }, + { + "description": "clipboard-manager:deny-read-image -> Denies the read_image command without any pre-configured scope.", + "type": "string", + "enum": [ + "clipboard-manager:deny-read-image" + ] + }, + { + "description": "clipboard-manager:deny-read-text -> Denies the read_text command without any pre-configured scope.", + "type": "string", + "enum": [ + "clipboard-manager:deny-read-text" + ] + }, + { + "description": "clipboard-manager:deny-write-html -> Denies the write_html command without any pre-configured scope.", + "type": "string", + "enum": [ + "clipboard-manager:deny-write-html" + ] + }, + { + "description": "clipboard-manager:deny-write-image -> Denies the write_image command without any pre-configured scope.", + "type": "string", + "enum": [ + "clipboard-manager:deny-write-image" + ] + }, + { + "description": "clipboard-manager:deny-write-text -> Denies the write_text command without any pre-configured scope.", + "type": "string", + "enum": [ + "clipboard-manager:deny-write-text" + ] + }, + { + "description": "event:default -> Default permissions for the plugin.", + "type": "string", + "enum": [ + "event:default" + ] + }, + { + "description": "event:allow-emit -> Enables the emit command without any pre-configured scope.", + "type": "string", + "enum": [ + "event:allow-emit" + ] + }, + { + "description": "event:allow-emit-to -> Enables the emit_to command without any pre-configured scope.", + "type": "string", + "enum": [ + "event:allow-emit-to" + ] + }, + { + "description": "event:allow-listen -> Enables the listen command without any pre-configured scope.", + "type": "string", + "enum": [ + "event:allow-listen" + ] + }, + { + "description": "event:allow-unlisten -> Enables the unlisten command without any pre-configured scope.", + "type": "string", + "enum": [ + "event:allow-unlisten" + ] + }, + { + "description": "event:deny-emit -> Denies the emit command without any pre-configured scope.", + "type": "string", + "enum": [ + "event:deny-emit" + ] + }, + { + "description": "event:deny-emit-to -> Denies the emit_to command without any pre-configured scope.", + "type": "string", + "enum": [ + "event:deny-emit-to" + ] + }, + { + "description": "event:deny-listen -> Denies the listen command without any pre-configured scope.", + "type": "string", + "enum": [ + "event:deny-listen" + ] + }, + { + "description": "event:deny-unlisten -> Denies the unlisten command without any pre-configured scope.", + "type": "string", + "enum": [ + "event:deny-unlisten" + ] + }, + { + "description": "global-shortcut:default -> No features are enabled by default, as we believe\nthe shortcuts can be inherently dangerous and it is\napplication specific if specific shortcuts should be\nregistered or unregistered.\n", + "type": "string", + "enum": [ + "global-shortcut:default" + ] + }, + { + "description": "global-shortcut:allow-is-registered -> Enables the is_registered command without any pre-configured scope.", + "type": "string", + "enum": [ + "global-shortcut:allow-is-registered" + ] + }, + { + "description": "global-shortcut:allow-register -> Enables the register command without any pre-configured scope.", + "type": "string", + "enum": [ + "global-shortcut:allow-register" + ] + }, + { + "description": "global-shortcut:allow-register-all -> Enables the register_all command without any pre-configured scope.", + "type": "string", + "enum": [ + "global-shortcut:allow-register-all" + ] + }, + { + "description": "global-shortcut:allow-unregister -> Enables the unregister command without any pre-configured scope.", + "type": "string", + "enum": [ + "global-shortcut:allow-unregister" + ] + }, + { + "description": "global-shortcut:allow-unregister-all -> Enables the unregister_all command without any pre-configured scope.", + "type": "string", + "enum": [ + "global-shortcut:allow-unregister-all" + ] + }, + { + "description": "global-shortcut:deny-is-registered -> Denies the is_registered command without any pre-configured scope.", + "type": "string", + "enum": [ + "global-shortcut:deny-is-registered" + ] + }, + { + "description": "global-shortcut:deny-register -> Denies the register command without any pre-configured scope.", + "type": "string", + "enum": [ + "global-shortcut:deny-register" + ] + }, + { + "description": "global-shortcut:deny-register-all -> Denies the register_all command without any pre-configured scope.", + "type": "string", + "enum": [ + "global-shortcut:deny-register-all" + ] + }, + { + "description": "global-shortcut:deny-unregister -> Denies the unregister command without any pre-configured scope.", + "type": "string", + "enum": [ + "global-shortcut:deny-unregister" + ] + }, + { + "description": "global-shortcut:deny-unregister-all -> Denies the unregister_all command without any pre-configured scope.", + "type": "string", + "enum": [ + "global-shortcut:deny-unregister-all" + ] + }, + { + "description": "http:default -> This permission set configures what kind of\nfetch operations are available from the http plugin.\n\nThis enables all fetch operations but does not\nallow explicitly any origins to be fetched. This needs to\nbe manually configured before usage.\n\n#### Granted Permissions\n\nAll fetch operations are enabled.\n\n", + "type": "string", + "enum": [ + "http:default" + ] + }, + { + "description": "http:allow-fetch -> Enables the fetch command without any pre-configured scope.", + "type": "string", + "enum": [ + "http:allow-fetch" + ] + }, + { + "description": "http:allow-fetch-cancel -> Enables the fetch_cancel command without any pre-configured scope.", + "type": "string", + "enum": [ + "http:allow-fetch-cancel" + ] + }, + { + "description": "http:allow-fetch-read-body -> Enables the fetch_read_body command without any pre-configured scope.", + "type": "string", + "enum": [ + "http:allow-fetch-read-body" + ] + }, + { + "description": "http:allow-fetch-send -> Enables the fetch_send command without any pre-configured scope.", + "type": "string", + "enum": [ + "http:allow-fetch-send" + ] + }, + { + "description": "http:deny-fetch -> Denies the fetch command without any pre-configured scope.", + "type": "string", + "enum": [ + "http:deny-fetch" + ] + }, + { + "description": "http:deny-fetch-cancel -> Denies the fetch_cancel command without any pre-configured scope.", + "type": "string", + "enum": [ + "http:deny-fetch-cancel" + ] + }, + { + "description": "http:deny-fetch-read-body -> Denies the fetch_read_body command without any pre-configured scope.", + "type": "string", + "enum": [ + "http:deny-fetch-read-body" + ] + }, + { + "description": "http:deny-fetch-send -> Denies the fetch_send command without any pre-configured scope.", + "type": "string", + "enum": [ + "http:deny-fetch-send" + ] + }, + { + "description": "image:default -> Default permissions for the plugin.", + "type": "string", + "enum": [ + "image:default" + ] + }, + { + "description": "image:allow-from-bytes -> Enables the from_bytes command without any pre-configured scope.", + "type": "string", + "enum": [ + "image:allow-from-bytes" + ] + }, + { + "description": "image:allow-from-path -> Enables the from_path command without any pre-configured scope.", + "type": "string", + "enum": [ + "image:allow-from-path" + ] + }, + { + "description": "image:allow-new -> Enables the new command without any pre-configured scope.", + "type": "string", + "enum": [ + "image:allow-new" + ] + }, + { + "description": "image:allow-rgba -> Enables the rgba command without any pre-configured scope.", + "type": "string", + "enum": [ + "image:allow-rgba" + ] + }, + { + "description": "image:allow-size -> Enables the size command without any pre-configured scope.", + "type": "string", + "enum": [ + "image:allow-size" + ] + }, + { + "description": "image:deny-from-bytes -> Denies the from_bytes command without any pre-configured scope.", + "type": "string", + "enum": [ + "image:deny-from-bytes" + ] + }, + { + "description": "image:deny-from-path -> Denies the from_path command without any pre-configured scope.", + "type": "string", + "enum": [ + "image:deny-from-path" + ] + }, + { + "description": "image:deny-new -> Denies the new command without any pre-configured scope.", + "type": "string", + "enum": [ + "image:deny-new" + ] + }, + { + "description": "image:deny-rgba -> Denies the rgba command without any pre-configured scope.", + "type": "string", + "enum": [ + "image:deny-rgba" + ] + }, + { + "description": "image:deny-size -> Denies the size command without any pre-configured scope.", + "type": "string", + "enum": [ + "image:deny-size" + ] + }, + { + "description": "menu:default -> Default permissions for the plugin.", + "type": "string", + "enum": [ + "menu:default" + ] + }, + { + "description": "menu:allow-append -> Enables the append command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-append" + ] + }, + { + "description": "menu:allow-create-default -> Enables the create_default command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-create-default" + ] + }, + { + "description": "menu:allow-get -> Enables the get command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-get" + ] + }, + { + "description": "menu:allow-insert -> Enables the insert command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-insert" + ] + }, + { + "description": "menu:allow-is-checked -> Enables the is_checked command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-is-checked" + ] + }, + { + "description": "menu:allow-is-enabled -> Enables the is_enabled command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-is-enabled" + ] + }, + { + "description": "menu:allow-items -> Enables the items command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-items" + ] + }, + { + "description": "menu:allow-new -> Enables the new command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-new" + ] + }, + { + "description": "menu:allow-popup -> Enables the popup command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-popup" + ] + }, + { + "description": "menu:allow-prepend -> Enables the prepend command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-prepend" + ] + }, + { + "description": "menu:allow-remove -> Enables the remove command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-remove" + ] + }, + { + "description": "menu:allow-remove-at -> Enables the remove_at command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-remove-at" + ] + }, + { + "description": "menu:allow-set-accelerator -> Enables the set_accelerator command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-set-accelerator" + ] + }, + { + "description": "menu:allow-set-as-app-menu -> Enables the set_as_app_menu command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-set-as-app-menu" + ] + }, + { + "description": "menu:allow-set-as-help-menu-for-nsapp -> Enables the set_as_help_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-set-as-help-menu-for-nsapp" + ] + }, + { + "description": "menu:allow-set-as-window-menu -> Enables the set_as_window_menu command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-set-as-window-menu" + ] + }, + { + "description": "menu:allow-set-as-windows-menu-for-nsapp -> Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-set-as-windows-menu-for-nsapp" + ] + }, + { + "description": "menu:allow-set-checked -> Enables the set_checked command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-set-checked" + ] + }, + { + "description": "menu:allow-set-enabled -> Enables the set_enabled command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-set-enabled" + ] + }, + { + "description": "menu:allow-set-icon -> Enables the set_icon command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-set-icon" + ] + }, + { + "description": "menu:allow-set-text -> Enables the set_text command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-set-text" + ] + }, + { + "description": "menu:allow-text -> Enables the text command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-text" + ] + }, + { + "description": "menu:deny-append -> Denies the append command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-append" + ] + }, + { + "description": "menu:deny-create-default -> Denies the create_default command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-create-default" + ] + }, + { + "description": "menu:deny-get -> Denies the get command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-get" + ] + }, + { + "description": "menu:deny-insert -> Denies the insert command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-insert" + ] + }, + { + "description": "menu:deny-is-checked -> Denies the is_checked command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-is-checked" + ] + }, + { + "description": "menu:deny-is-enabled -> Denies the is_enabled command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-is-enabled" + ] + }, + { + "description": "menu:deny-items -> Denies the items command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-items" + ] + }, + { + "description": "menu:deny-new -> Denies the new command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-new" + ] + }, + { + "description": "menu:deny-popup -> Denies the popup command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-popup" + ] + }, + { + "description": "menu:deny-prepend -> Denies the prepend command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-prepend" + ] + }, + { + "description": "menu:deny-remove -> Denies the remove command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-remove" + ] + }, + { + "description": "menu:deny-remove-at -> Denies the remove_at command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-remove-at" + ] + }, + { + "description": "menu:deny-set-accelerator -> Denies the set_accelerator command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-set-accelerator" + ] + }, + { + "description": "menu:deny-set-as-app-menu -> Denies the set_as_app_menu command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-set-as-app-menu" + ] + }, + { + "description": "menu:deny-set-as-help-menu-for-nsapp -> Denies the set_as_help_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-set-as-help-menu-for-nsapp" + ] + }, + { + "description": "menu:deny-set-as-window-menu -> Denies the set_as_window_menu command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-set-as-window-menu" + ] + }, + { + "description": "menu:deny-set-as-windows-menu-for-nsapp -> Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-set-as-windows-menu-for-nsapp" + ] + }, + { + "description": "menu:deny-set-checked -> Denies the set_checked command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-set-checked" + ] + }, + { + "description": "menu:deny-set-enabled -> Denies the set_enabled command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-set-enabled" + ] + }, + { + "description": "menu:deny-set-icon -> Denies the set_icon command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-set-icon" + ] + }, + { + "description": "menu:deny-set-text -> Denies the set_text command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-set-text" + ] + }, + { + "description": "menu:deny-text -> Denies the text command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-text" + ] + }, + { + "type": "string", + "enum": [ + "oauth:default" + ] + }, + { + "description": "oauth:allow-cancel -> Enables the cancel command without any pre-configured scope.", + "type": "string", + "enum": [ + "oauth:allow-cancel" + ] + }, + { + "description": "oauth:allow-start -> Enables the start command without any pre-configured scope.", + "type": "string", + "enum": [ + "oauth:allow-start" + ] + }, + { + "description": "oauth:deny-cancel -> Denies the cancel command without any pre-configured scope.", + "type": "string", + "enum": [ + "oauth:deny-cancel" + ] + }, + { + "description": "oauth:deny-start -> Denies the start command without any pre-configured scope.", + "type": "string", + "enum": [ + "oauth:deny-start" + ] + }, + { + "description": "path:default -> Default permissions for the plugin.", + "type": "string", + "enum": [ + "path:default" + ] + }, + { + "description": "path:allow-basename -> Enables the basename command without any pre-configured scope.", + "type": "string", + "enum": [ + "path:allow-basename" + ] + }, + { + "description": "path:allow-dirname -> Enables the dirname command without any pre-configured scope.", + "type": "string", + "enum": [ + "path:allow-dirname" + ] + }, + { + "description": "path:allow-extname -> Enables the extname command without any pre-configured scope.", + "type": "string", + "enum": [ + "path:allow-extname" + ] + }, + { + "description": "path:allow-is-absolute -> Enables the is_absolute command without any pre-configured scope.", + "type": "string", + "enum": [ + "path:allow-is-absolute" + ] + }, + { + "description": "path:allow-join -> Enables the join command without any pre-configured scope.", + "type": "string", + "enum": [ + "path:allow-join" + ] + }, + { + "description": "path:allow-normalize -> Enables the normalize command without any pre-configured scope.", + "type": "string", + "enum": [ + "path:allow-normalize" + ] + }, + { + "description": "path:allow-resolve -> Enables the resolve command without any pre-configured scope.", + "type": "string", + "enum": [ + "path:allow-resolve" + ] + }, + { + "description": "path:allow-resolve-directory -> Enables the resolve_directory command without any pre-configured scope.", + "type": "string", + "enum": [ + "path:allow-resolve-directory" + ] + }, + { + "description": "path:deny-basename -> Denies the basename command without any pre-configured scope.", + "type": "string", + "enum": [ + "path:deny-basename" + ] + }, + { + "description": "path:deny-dirname -> Denies the dirname command without any pre-configured scope.", + "type": "string", + "enum": [ + "path:deny-dirname" + ] + }, + { + "description": "path:deny-extname -> Denies the extname command without any pre-configured scope.", + "type": "string", + "enum": [ + "path:deny-extname" + ] + }, + { + "description": "path:deny-is-absolute -> Denies the is_absolute command without any pre-configured scope.", + "type": "string", + "enum": [ + "path:deny-is-absolute" + ] + }, + { + "description": "path:deny-join -> Denies the join command without any pre-configured scope.", + "type": "string", + "enum": [ + "path:deny-join" + ] + }, + { + "description": "path:deny-normalize -> Denies the normalize command without any pre-configured scope.", + "type": "string", + "enum": [ + "path:deny-normalize" + ] + }, + { + "description": "path:deny-resolve -> Denies the resolve command without any pre-configured scope.", + "type": "string", + "enum": [ + "path:deny-resolve" + ] + }, + { + "description": "path:deny-resolve-directory -> Denies the resolve_directory command without any pre-configured scope.", + "type": "string", + "enum": [ + "path:deny-resolve-directory" + ] + }, + { + "description": "resources:default -> Default permissions for the plugin.", + "type": "string", + "enum": [ + "resources:default" + ] + }, + { + "description": "resources:allow-close -> Enables the close command without any pre-configured scope.", + "type": "string", + "enum": [ + "resources:allow-close" + ] + }, + { + "description": "resources:deny-close -> Denies the close command without any pre-configured scope.", + "type": "string", + "enum": [ + "resources:deny-close" + ] + }, + { + "description": "tray:default -> Default permissions for the plugin.", + "type": "string", + "enum": [ + "tray:default" + ] + }, + { + "description": "tray:allow-get-by-id -> Enables the get_by_id command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:allow-get-by-id" + ] + }, + { + "description": "tray:allow-new -> Enables the new command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:allow-new" + ] + }, + { + "description": "tray:allow-remove-by-id -> Enables the remove_by_id command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:allow-remove-by-id" + ] + }, + { + "description": "tray:allow-set-icon -> Enables the set_icon command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:allow-set-icon" + ] + }, + { + "description": "tray:allow-set-icon-as-template -> Enables the set_icon_as_template command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:allow-set-icon-as-template" + ] + }, + { + "description": "tray:allow-set-menu -> Enables the set_menu command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:allow-set-menu" + ] + }, + { + "description": "tray:allow-set-show-menu-on-left-click -> Enables the set_show_menu_on_left_click command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:allow-set-show-menu-on-left-click" + ] + }, + { + "description": "tray:allow-set-temp-dir-path -> Enables the set_temp_dir_path command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:allow-set-temp-dir-path" + ] + }, + { + "description": "tray:allow-set-title -> Enables the set_title command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:allow-set-title" + ] + }, + { + "description": "tray:allow-set-tooltip -> Enables the set_tooltip command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:allow-set-tooltip" + ] + }, + { + "description": "tray:allow-set-visible -> Enables the set_visible command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:allow-set-visible" + ] + }, + { + "description": "tray:deny-get-by-id -> Denies the get_by_id command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:deny-get-by-id" + ] + }, + { + "description": "tray:deny-new -> Denies the new command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:deny-new" + ] + }, + { + "description": "tray:deny-remove-by-id -> Denies the remove_by_id command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:deny-remove-by-id" + ] + }, + { + "description": "tray:deny-set-icon -> Denies the set_icon command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:deny-set-icon" + ] + }, + { + "description": "tray:deny-set-icon-as-template -> Denies the set_icon_as_template command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:deny-set-icon-as-template" + ] + }, + { + "description": "tray:deny-set-menu -> Denies the set_menu command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:deny-set-menu" + ] + }, + { + "description": "tray:deny-set-show-menu-on-left-click -> Denies the set_show_menu_on_left_click command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:deny-set-show-menu-on-left-click" + ] + }, + { + "description": "tray:deny-set-temp-dir-path -> Denies the set_temp_dir_path command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:deny-set-temp-dir-path" + ] + }, + { + "description": "tray:deny-set-title -> Denies the set_title command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:deny-set-title" + ] + }, + { + "description": "tray:deny-set-tooltip -> Denies the set_tooltip command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:deny-set-tooltip" + ] + }, + { + "description": "tray:deny-set-visible -> Denies the set_visible command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:deny-set-visible" + ] + }, + { + "description": "webview:default -> Default permissions for the plugin.", + "type": "string", + "enum": [ + "webview:default" + ] + }, + { + "description": "webview:allow-create-webview -> Enables the create_webview command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:allow-create-webview" + ] + }, + { + "description": "webview:allow-create-webview-window -> Enables the create_webview_window command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:allow-create-webview-window" + ] + }, + { + "description": "webview:allow-internal-toggle-devtools -> Enables the internal_toggle_devtools command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:allow-internal-toggle-devtools" + ] + }, + { + "description": "webview:allow-print -> Enables the print command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:allow-print" + ] + }, + { + "description": "webview:allow-reparent -> Enables the reparent command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:allow-reparent" + ] + }, + { + "description": "webview:allow-set-webview-focus -> Enables the set_webview_focus command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:allow-set-webview-focus" + ] + }, + { + "description": "webview:allow-set-webview-position -> Enables the set_webview_position command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:allow-set-webview-position" + ] + }, + { + "description": "webview:allow-set-webview-size -> Enables the set_webview_size command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:allow-set-webview-size" + ] + }, + { + "description": "webview:allow-set-webview-zoom -> Enables the set_webview_zoom command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:allow-set-webview-zoom" + ] + }, + { + "description": "webview:allow-webview-close -> Enables the webview_close command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:allow-webview-close" + ] + }, + { + "description": "webview:allow-webview-position -> Enables the webview_position command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:allow-webview-position" + ] + }, + { + "description": "webview:allow-webview-size -> Enables the webview_size command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:allow-webview-size" + ] + }, + { + "description": "webview:deny-create-webview -> Denies the create_webview command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:deny-create-webview" + ] + }, + { + "description": "webview:deny-create-webview-window -> Denies the create_webview_window command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:deny-create-webview-window" + ] + }, + { + "description": "webview:deny-internal-toggle-devtools -> Denies the internal_toggle_devtools command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:deny-internal-toggle-devtools" + ] + }, + { + "description": "webview:deny-print -> Denies the print command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:deny-print" + ] + }, + { + "description": "webview:deny-reparent -> Denies the reparent command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:deny-reparent" + ] + }, + { + "description": "webview:deny-set-webview-focus -> Denies the set_webview_focus command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:deny-set-webview-focus" + ] + }, + { + "description": "webview:deny-set-webview-position -> Denies the set_webview_position command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:deny-set-webview-position" + ] + }, + { + "description": "webview:deny-set-webview-size -> Denies the set_webview_size command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:deny-set-webview-size" + ] + }, + { + "description": "webview:deny-set-webview-zoom -> Denies the set_webview_zoom command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:deny-set-webview-zoom" + ] + }, + { + "description": "webview:deny-webview-close -> Denies the webview_close command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:deny-webview-close" + ] + }, + { + "description": "webview:deny-webview-position -> Denies the webview_position command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:deny-webview-position" + ] + }, + { + "description": "webview:deny-webview-size -> Denies the webview_size command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:deny-webview-size" + ] + }, + { + "description": "window:default -> Default permissions for the plugin.", + "type": "string", + "enum": [ + "window:default" + ] + }, + { + "description": "window:allow-available-monitors -> Enables the available_monitors command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-available-monitors" + ] + }, + { + "description": "window:allow-center -> Enables the center command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-center" + ] + }, + { + "description": "window:allow-close -> Enables the close command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-close" + ] + }, + { + "description": "window:allow-create -> Enables the create command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-create" + ] + }, + { + "description": "window:allow-current-monitor -> Enables the current_monitor command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-current-monitor" + ] + }, + { + "description": "window:allow-cursor-position -> Enables the cursor_position command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-cursor-position" + ] + }, + { + "description": "window:allow-destroy -> Enables the destroy command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-destroy" + ] + }, + { + "description": "window:allow-hide -> Enables the hide command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-hide" + ] + }, + { + "description": "window:allow-inner-position -> Enables the inner_position command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-inner-position" + ] + }, + { + "description": "window:allow-inner-size -> Enables the inner_size command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-inner-size" + ] + }, + { + "description": "window:allow-internal-toggle-maximize -> Enables the internal_toggle_maximize command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-internal-toggle-maximize" + ] + }, + { + "description": "window:allow-is-closable -> Enables the is_closable command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-is-closable" + ] + }, + { + "description": "window:allow-is-decorated -> Enables the is_decorated command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-is-decorated" + ] + }, + { + "description": "window:allow-is-focused -> Enables the is_focused command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-is-focused" + ] + }, + { + "description": "window:allow-is-fullscreen -> Enables the is_fullscreen command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-is-fullscreen" + ] + }, + { + "description": "window:allow-is-maximizable -> Enables the is_maximizable command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-is-maximizable" + ] + }, + { + "description": "window:allow-is-maximized -> Enables the is_maximized command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-is-maximized" + ] + }, + { + "description": "window:allow-is-minimizable -> Enables the is_minimizable command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-is-minimizable" + ] + }, + { + "description": "window:allow-is-minimized -> Enables the is_minimized command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-is-minimized" + ] + }, + { + "description": "window:allow-is-resizable -> Enables the is_resizable command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-is-resizable" + ] + }, + { + "description": "window:allow-is-visible -> Enables the is_visible command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-is-visible" + ] + }, + { + "description": "window:allow-maximize -> Enables the maximize command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-maximize" + ] + }, + { + "description": "window:allow-minimize -> Enables the minimize command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-minimize" + ] + }, + { + "description": "window:allow-monitor-from-point -> Enables the monitor_from_point command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-monitor-from-point" + ] + }, + { + "description": "window:allow-outer-position -> Enables the outer_position command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-outer-position" + ] + }, + { + "description": "window:allow-outer-size -> Enables the outer_size command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-outer-size" + ] + }, + { + "description": "window:allow-primary-monitor -> Enables the primary_monitor command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-primary-monitor" + ] + }, + { + "description": "window:allow-request-user-attention -> Enables the request_user_attention command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-request-user-attention" + ] + }, + { + "description": "window:allow-scale-factor -> Enables the scale_factor command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-scale-factor" + ] + }, + { + "description": "window:allow-set-always-on-bottom -> Enables the set_always_on_bottom command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-always-on-bottom" + ] + }, + { + "description": "window:allow-set-always-on-top -> Enables the set_always_on_top command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-always-on-top" + ] + }, + { + "description": "window:allow-set-closable -> Enables the set_closable command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-closable" + ] + }, + { + "description": "window:allow-set-content-protected -> Enables the set_content_protected command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-content-protected" + ] + }, + { + "description": "window:allow-set-cursor-grab -> Enables the set_cursor_grab command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-cursor-grab" + ] + }, + { + "description": "window:allow-set-cursor-icon -> Enables the set_cursor_icon command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-cursor-icon" + ] + }, + { + "description": "window:allow-set-cursor-position -> Enables the set_cursor_position command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-cursor-position" + ] + }, + { + "description": "window:allow-set-cursor-visible -> Enables the set_cursor_visible command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-cursor-visible" + ] + }, + { + "description": "window:allow-set-decorations -> Enables the set_decorations command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-decorations" + ] + }, + { + "description": "window:allow-set-effects -> Enables the set_effects command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-effects" + ] + }, + { + "description": "window:allow-set-focus -> Enables the set_focus command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-focus" + ] + }, + { + "description": "window:allow-set-fullscreen -> Enables the set_fullscreen command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-fullscreen" + ] + }, + { + "description": "window:allow-set-icon -> Enables the set_icon command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-icon" + ] + }, + { + "description": "window:allow-set-ignore-cursor-events -> Enables the set_ignore_cursor_events command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-ignore-cursor-events" + ] + }, + { + "description": "window:allow-set-max-size -> Enables the set_max_size command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-max-size" + ] + }, + { + "description": "window:allow-set-maximizable -> Enables the set_maximizable command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-maximizable" + ] + }, + { + "description": "window:allow-set-min-size -> Enables the set_min_size command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-min-size" + ] + }, + { + "description": "window:allow-set-minimizable -> Enables the set_minimizable command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-minimizable" + ] + }, + { + "description": "window:allow-set-position -> Enables the set_position command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-position" + ] + }, + { + "description": "window:allow-set-progress-bar -> Enables the set_progress_bar command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-progress-bar" + ] + }, + { + "description": "window:allow-set-resizable -> Enables the set_resizable command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-resizable" + ] + }, + { + "description": "window:allow-set-shadow -> Enables the set_shadow command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-shadow" + ] + }, + { + "description": "window:allow-set-size -> Enables the set_size command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-size" + ] + }, + { + "description": "window:allow-set-skip-taskbar -> Enables the set_skip_taskbar command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-skip-taskbar" + ] + }, + { + "description": "window:allow-set-title -> Enables the set_title command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-title" + ] + }, + { + "description": "window:allow-set-title-bar-style -> Enables the set_title_bar_style command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-title-bar-style" + ] + }, + { + "description": "window:allow-set-visible-on-all-workspaces -> Enables the set_visible_on_all_workspaces command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-visible-on-all-workspaces" + ] + }, + { + "description": "window:allow-show -> Enables the show command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-show" + ] + }, + { + "description": "window:allow-start-dragging -> Enables the start_dragging command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-start-dragging" + ] + }, + { + "description": "window:allow-start-resize-dragging -> Enables the start_resize_dragging command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-start-resize-dragging" + ] + }, + { + "description": "window:allow-theme -> Enables the theme command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-theme" + ] + }, + { + "description": "window:allow-title -> Enables the title command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-title" + ] + }, + { + "description": "window:allow-toggle-maximize -> Enables the toggle_maximize command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-toggle-maximize" + ] + }, + { + "description": "window:allow-unmaximize -> Enables the unmaximize command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-unmaximize" + ] + }, + { + "description": "window:allow-unminimize -> Enables the unminimize command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-unminimize" + ] + }, + { + "description": "window:deny-available-monitors -> Denies the available_monitors command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-available-monitors" + ] + }, + { + "description": "window:deny-center -> Denies the center command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-center" + ] + }, + { + "description": "window:deny-close -> Denies the close command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-close" + ] + }, + { + "description": "window:deny-create -> Denies the create command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-create" + ] + }, + { + "description": "window:deny-current-monitor -> Denies the current_monitor command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-current-monitor" + ] + }, + { + "description": "window:deny-cursor-position -> Denies the cursor_position command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-cursor-position" + ] + }, + { + "description": "window:deny-destroy -> Denies the destroy command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-destroy" + ] + }, + { + "description": "window:deny-hide -> Denies the hide command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-hide" + ] + }, + { + "description": "window:deny-inner-position -> Denies the inner_position command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-inner-position" + ] + }, + { + "description": "window:deny-inner-size -> Denies the inner_size command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-inner-size" + ] + }, + { + "description": "window:deny-internal-toggle-maximize -> Denies the internal_toggle_maximize command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-internal-toggle-maximize" + ] + }, + { + "description": "window:deny-is-closable -> Denies the is_closable command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-is-closable" + ] + }, + { + "description": "window:deny-is-decorated -> Denies the is_decorated command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-is-decorated" + ] + }, + { + "description": "window:deny-is-focused -> Denies the is_focused command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-is-focused" + ] + }, + { + "description": "window:deny-is-fullscreen -> Denies the is_fullscreen command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-is-fullscreen" + ] + }, + { + "description": "window:deny-is-maximizable -> Denies the is_maximizable command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-is-maximizable" + ] + }, + { + "description": "window:deny-is-maximized -> Denies the is_maximized command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-is-maximized" + ] + }, + { + "description": "window:deny-is-minimizable -> Denies the is_minimizable command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-is-minimizable" + ] + }, + { + "description": "window:deny-is-minimized -> Denies the is_minimized command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-is-minimized" + ] + }, + { + "description": "window:deny-is-resizable -> Denies the is_resizable command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-is-resizable" + ] + }, + { + "description": "window:deny-is-visible -> Denies the is_visible command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-is-visible" + ] + }, + { + "description": "window:deny-maximize -> Denies the maximize command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-maximize" + ] + }, + { + "description": "window:deny-minimize -> Denies the minimize command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-minimize" + ] + }, + { + "description": "window:deny-monitor-from-point -> Denies the monitor_from_point command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-monitor-from-point" + ] + }, + { + "description": "window:deny-outer-position -> Denies the outer_position command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-outer-position" + ] + }, + { + "description": "window:deny-outer-size -> Denies the outer_size command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-outer-size" + ] + }, + { + "description": "window:deny-primary-monitor -> Denies the primary_monitor command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-primary-monitor" + ] + }, + { + "description": "window:deny-request-user-attention -> Denies the request_user_attention command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-request-user-attention" + ] + }, + { + "description": "window:deny-scale-factor -> Denies the scale_factor command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-scale-factor" + ] + }, + { + "description": "window:deny-set-always-on-bottom -> Denies the set_always_on_bottom command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-always-on-bottom" + ] + }, + { + "description": "window:deny-set-always-on-top -> Denies the set_always_on_top command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-always-on-top" + ] + }, + { + "description": "window:deny-set-closable -> Denies the set_closable command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-closable" + ] + }, + { + "description": "window:deny-set-content-protected -> Denies the set_content_protected command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-content-protected" + ] + }, + { + "description": "window:deny-set-cursor-grab -> Denies the set_cursor_grab command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-cursor-grab" + ] + }, + { + "description": "window:deny-set-cursor-icon -> Denies the set_cursor_icon command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-cursor-icon" + ] + }, + { + "description": "window:deny-set-cursor-position -> Denies the set_cursor_position command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-cursor-position" + ] + }, + { + "description": "window:deny-set-cursor-visible -> Denies the set_cursor_visible command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-cursor-visible" + ] + }, + { + "description": "window:deny-set-decorations -> Denies the set_decorations command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-decorations" + ] + }, + { + "description": "window:deny-set-effects -> Denies the set_effects command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-effects" + ] + }, + { + "description": "window:deny-set-focus -> Denies the set_focus command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-focus" + ] + }, + { + "description": "window:deny-set-fullscreen -> Denies the set_fullscreen command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-fullscreen" + ] + }, + { + "description": "window:deny-set-icon -> Denies the set_icon command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-icon" + ] + }, + { + "description": "window:deny-set-ignore-cursor-events -> Denies the set_ignore_cursor_events command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-ignore-cursor-events" + ] + }, + { + "description": "window:deny-set-max-size -> Denies the set_max_size command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-max-size" + ] + }, + { + "description": "window:deny-set-maximizable -> Denies the set_maximizable command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-maximizable" + ] + }, + { + "description": "window:deny-set-min-size -> Denies the set_min_size command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-min-size" + ] + }, + { + "description": "window:deny-set-minimizable -> Denies the set_minimizable command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-minimizable" + ] + }, + { + "description": "window:deny-set-position -> Denies the set_position command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-position" + ] + }, + { + "description": "window:deny-set-progress-bar -> Denies the set_progress_bar command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-progress-bar" + ] + }, + { + "description": "window:deny-set-resizable -> Denies the set_resizable command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-resizable" + ] + }, + { + "description": "window:deny-set-shadow -> Denies the set_shadow command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-shadow" + ] + }, + { + "description": "window:deny-set-size -> Denies the set_size command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-size" + ] + }, + { + "description": "window:deny-set-skip-taskbar -> Denies the set_skip_taskbar command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-skip-taskbar" + ] + }, + { + "description": "window:deny-set-title -> Denies the set_title command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-title" + ] + }, + { + "description": "window:deny-set-title-bar-style -> Denies the set_title_bar_style command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-title-bar-style" + ] + }, + { + "description": "window:deny-set-visible-on-all-workspaces -> Denies the set_visible_on_all_workspaces command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-visible-on-all-workspaces" + ] + }, + { + "description": "window:deny-show -> Denies the show command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-show" + ] + }, + { + "description": "window:deny-start-dragging -> Denies the start_dragging command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-start-dragging" + ] + }, + { + "description": "window:deny-start-resize-dragging -> Denies the start_resize_dragging command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-start-resize-dragging" + ] + }, + { + "description": "window:deny-theme -> Denies the theme command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-theme" + ] + }, + { + "description": "window:deny-title -> Denies the title command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-title" + ] + }, + { + "description": "window:deny-toggle-maximize -> Denies the toggle_maximize command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-toggle-maximize" + ] + }, + { + "description": "window:deny-unmaximize -> Denies the unmaximize command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-unmaximize" + ] + }, + { + "description": "window:deny-unminimize -> Denies the unminimize command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-unminimize" + ] + }, + { + "description": "window-state:default -> This permission set configures what kind of\noperations are available from the window state plugin.\n\n#### Granted Permissions\n\nAll operations are enabled by default.\n\n", + "type": "string", + "enum": [ + "window-state:default" + ] + }, + { + "description": "window-state:allow-filename -> Enables the filename command without any pre-configured scope.", + "type": "string", + "enum": [ + "window-state:allow-filename" + ] + }, + { + "description": "window-state:allow-restore-state -> Enables the restore_state command without any pre-configured scope.", + "type": "string", + "enum": [ + "window-state:allow-restore-state" + ] + }, + { + "description": "window-state:allow-save-window-state -> Enables the save_window_state command without any pre-configured scope.", + "type": "string", + "enum": [ + "window-state:allow-save-window-state" + ] + }, + { + "description": "window-state:deny-filename -> Denies the filename command without any pre-configured scope.", + "type": "string", + "enum": [ + "window-state:deny-filename" + ] + }, + { + "description": "window-state:deny-restore-state -> Denies the restore_state command without any pre-configured scope.", + "type": "string", + "enum": [ + "window-state:deny-restore-state" + ] + }, + { + "description": "window-state:deny-save-window-state -> Denies the save_window_state command without any pre-configured scope.", + "type": "string", + "enum": [ + "window-state:deny-save-window-state" + ] + } + ] + }, + "Value": { + "description": "All supported ACL values.", + "anyOf": [ + { + "description": "Represents a null JSON value.", + "type": "null" + }, + { + "description": "Represents a [`bool`].", + "type": "boolean" + }, + { + "description": "Represents a valid ACL [`Number`].", + "allOf": [ + { + "$ref": "#/definitions/Number" + } + ] + }, + { + "description": "Represents a [`String`].", + "type": "string" + }, + { + "description": "Represents a list of other [`Value`]s.", + "type": "array", + "items": { + "$ref": "#/definitions/Value" + } + }, + { + "description": "Represents a map of [`String`] keys to [`Value`]s.", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/Value" + } + } + ] + }, + "Number": { + "description": "A valid ACL number.", + "anyOf": [ + { + "description": "Represents an [`i64`].", + "type": "integer", + "format": "int64" + }, + { + "description": "Represents a [`f64`].", + "type": "number", + "format": "double" + } + ] + }, + "Target": { + "description": "Platform target.", + "oneOf": [ + { + "description": "MacOS.", + "type": "string", + "enum": [ + "macOS" + ] + }, + { + "description": "Windows.", + "type": "string", + "enum": [ + "windows" + ] + }, + { + "description": "Linux.", + "type": "string", + "enum": [ + "linux" + ] + }, + { + "description": "Android.", + "type": "string", + "enum": [ + "android" + ] + }, + { + "description": "iOS.", + "type": "string", + "enum": [ + "iOS" + ] + } + ] + } + } +} \ No newline at end of file diff --git a/src-tauri/icons/icon.png b/src-tauri/icons/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..4ba1291d030f12e64e720baf6806280a5c8649e8 GIT binary patch literal 72397 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 z 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
Rh*Qbjv;8RGX3vGf`2G(o?o~{ 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 literal 0 HcmV?d00001 diff --git a/src-tauri/src/app/invoke.rs b/src-tauri/src/app/invoke.rs index 5cf2f07..71aeaa8 100644 --- a/src-tauri/src/app/invoke.rs +++ b/src-tauri/src/app/invoke.rs @@ -1,8 +1,11 @@ use crate::util::{check_file_or_append, get_download_message, show_toast, MessageType}; use std::fs::{self, File}; use std::io::Write; -use tauri::api::http::{ClientBuilder, HttpRequestBuilder, ResponseType}; -use tauri::{api, command, AppHandle, Manager, Window}; +use std::str::FromStr; +use tauri::http::Method; +use tauri_plugin_http::reqwest::{ClientBuilder, Request}; +// use tauri::http::{ClientBuilder, HttpRequestBuilder, ResponseType}; +use tauri::{command, AppHandle, Manager, Url, WebviewWindow}; #[derive(serde::Deserialize)] pub struct DownloadFileParams { @@ -18,24 +21,22 @@ pub struct BinaryDownloadParams { #[command] pub async fn download_file(app: AppHandle, params: DownloadFileParams) -> Result<(), String> { - let window: Window = app.get_window("pake").unwrap(); + let window: WebviewWindow = app.get_webview_window("pake").unwrap(); show_toast(&window, &get_download_message(MessageType::Start)); - let output_path = api::path::download_dir().unwrap().join(params.filename); + let output_path = app.path().download_dir().unwrap().join(params.filename); let file_path = check_file_or_append(output_path.to_str().unwrap()); let client = ClientBuilder::new().build().unwrap(); let response = client - .send( - HttpRequestBuilder::new("GET", ¶ms.url) - .unwrap() - .response_type(ResponseType::Binary), + .execute( + Request::new(Method::GET, Url::from_str(¶ms.url).unwrap()) ) .await; match response { Ok(res) => { - let bytes = res.bytes().await.unwrap().data; + let bytes = res.bytes().await.unwrap(); let mut file = File::create(file_path).unwrap(); file.write_all(&bytes).unwrap(); @@ -54,9 +55,9 @@ pub async fn download_file_by_binary( app: AppHandle, params: BinaryDownloadParams, ) -> Result<(), String> { - let window: Window = app.get_window("pake").unwrap(); + let window: WebviewWindow = app.get_webview_window("pake").unwrap(); show_toast(&window, &get_download_message(MessageType::Start)); - let output_path = api::path::download_dir().unwrap().join(params.filename); + let output_path = app.path().download_dir().unwrap().join(params.filename); let file_path = check_file_or_append(output_path.to_str().unwrap()); let download_file_result = fs::write(file_path, ¶ms.binary); match download_file_result { diff --git a/src-tauri/src/app/menu.rs b/src-tauri/src/app/menu.rs index 0d03dd6..11b8c57 100644 --- a/src-tauri/src/app/menu.rs +++ b/src-tauri/src/app/menu.rs @@ -1,31 +1,30 @@ -use tauri::{CustomMenuItem, Manager, SystemTray, SystemTrayEvent, SystemTrayMenu}; +use tauri::{ + menu::{MenuBuilder, MenuItemBuilder}, tray::TrayIconBuilder, AppHandle, Manager +}; use tauri_plugin_window_state::{AppHandleExt, StateFlags}; -pub fn get_system_tray() -> SystemTray { - let hide_app = CustomMenuItem::new("hide_app".to_string(), "Hide"); - let show_app = CustomMenuItem::new("show_app".to_string(), "Show"); - let quit = CustomMenuItem::new("quit".to_string(), "Quit"); - let tray_menu = SystemTrayMenu::new() - .add_item(show_app) - .add_item(hide_app) - .add_item(quit); - SystemTray::new().with_menu(tray_menu) -} +pub fn set_system_tray(app: &AppHandle) -> tauri::Result<()> { + let hide_app = MenuItemBuilder::with_id("hide_app", "Hide").build(app)?; + let show_app = MenuItemBuilder::with_id("show_app", "Show").build(app)?; + let quit = MenuItemBuilder::with_id("quit", "Quit").build(app)?; + let menu = MenuBuilder::new(app).items(&[&hide_app, &show_app, &quit]).build()?; -pub fn system_tray_handle(app: &tauri::AppHandle, event: SystemTrayEvent) { - if let SystemTrayEvent::MenuItemClick { tray_id: _, id, .. } = event { - match id.as_str() { + TrayIconBuilder::new() + .menu(&menu) + .on_menu_event(move |app, event| match event.id().as_ref() { "hide_app" => { - app.get_window("pake").unwrap().minimize().unwrap(); + app.get_webview_window("pake").unwrap().minimize().unwrap(); } "show_app" => { - app.get_window("pake").unwrap().show().unwrap(); + app.get_webview_window("pake").unwrap().show().unwrap(); } "quit" => { let _res = app.save_window_state(StateFlags::all()); std::process::exit(0); } - _ => {} - } - }; + _ => (), + }) + .build(app)?; + + Ok(()) } diff --git a/src-tauri/src/app/window.rs b/src-tauri/src/app/window.rs index 44cdf84..379bf5e 100644 --- a/src-tauri/src/app/window.rs +++ b/src-tauri/src/app/window.rs @@ -1,11 +1,11 @@ use crate::app::config::PakeConfig; use std::path::PathBuf; -use tauri::{App, Window, WindowBuilder, WindowUrl}; +use tauri::{App, WebviewUrl, WebviewWindow, WebviewWindowBuilder}; #[cfg(target_os = "macos")] use tauri::TitleBarStyle; -pub fn get_window(app: &mut App, config: PakeConfig, _data_dir: PathBuf) -> Window { +pub fn get_window(app: &mut App, config: PakeConfig, _data_dir: PathBuf) -> WebviewWindow { let window_config = config .windows .first() @@ -14,8 +14,8 @@ pub fn get_window(app: &mut App, config: PakeConfig, _data_dir: PathBuf) -> Wind let user_agent = config.user_agent.get(); let url = match window_config.url_type.as_str() { - "web" => WindowUrl::App(window_config.url.parse().unwrap()), - "local" => WindowUrl::App(PathBuf::from(&window_config.url)), + "web" => WebviewUrl::App(window_config.url.parse().unwrap()), + "local" => WebviewUrl::App(PathBuf::from(&window_config.url)), _ => panic!("url type can only be web or local"), }; @@ -24,14 +24,14 @@ pub fn get_window(app: &mut App, config: PakeConfig, _data_dir: PathBuf) -> Wind serde_json::to_string(&window_config).unwrap() ); - let mut window_builder = WindowBuilder::new(app, "pake", url) + let mut window_builder = WebviewWindowBuilder::new(app, "pake", url) .title("") .user_agent(user_agent) .visible(false) // Prevent initial shaking .resizable(window_config.resizable) .fullscreen(window_config.fullscreen) .inner_size(window_config.width, window_config.height) - .disable_file_drop_handler() + .disable_drag_drop_handler() .always_on_top(window_config.always_on_top) .initialization_script(&config_script) .initialization_script(include_str!("../inject/component.js")) diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs new file mode 100644 index 0000000..0cfd213 --- /dev/null +++ b/src-tauri/src/lib.rs @@ -0,0 +1,90 @@ +#[cfg_attr(mobile, tauri::mobile_entry_point)] +mod app; +mod util; + +use std::str::FromStr; + +use app::{invoke, menu::set_system_tray, window}; +use invoke::{download_file, download_file_by_binary}; +use tauri::Manager; +use tauri_plugin_window_state::Builder as windowStatePlugin; +use tauri_plugin_global_shortcut::Shortcut; +use util::{get_data_dir, get_pake_config}; +use window::get_window; + +pub fn run_app() { + let (pake_config, tauri_config) = get_pake_config(); + + let mut tauri_app = tauri::Builder::default(); + + let show_system_tray = pake_config.show_system_tray(); + + // Save the value of toggle_app_shortcut before pake_config is moved + let activation_shortcut = pake_config.windows[0].activation_shortcut.clone(); + + tauri_app + .plugin(windowStatePlugin::default().build()) + .plugin(tauri_plugin_oauth::init()) + .plugin(tauri_plugin_http::init()) + .invoke_handler(tauri::generate_handler![ + download_file, + download_file_by_binary + ]) + .setup(move |app| { + let data_dir = get_data_dir(&app.app_handle(), tauri_config); + + let _window = get_window(app, pake_config, data_dir); + // Prevent initial shaking + _window.show().unwrap(); + + if show_system_tray { + let _ = set_system_tray(&app.app_handle()); + } + + if !activation_shortcut.is_empty() { + let app_handle = app.app_handle().clone(); + app_handle + .plugin( + tauri_plugin_global_shortcut::Builder::new() + .with_shortcut(activation_shortcut.as_str()) + ?.with_handler(move |app, event, _shortcut| { + let shortcut_hotkey = Shortcut::from_str(&activation_shortcut.as_str()).unwrap(); + + if shortcut_hotkey.eq(event) { + let window = app.get_webview_window("pake").unwrap(); + match window.is_visible().unwrap() { + true => window.hide().unwrap(), + false => { + window.show().unwrap(); + window.set_focus().unwrap(); + } + } + } + } + ).build()) + .expect("Error registering global evoke shortcuts!"); + } + + Ok(()) + }) + .on_window_event(|window, event| { + if let tauri::WindowEvent::CloseRequested { api, .. } = event { + #[cfg(target_os = "macos")] + { + window.minimize().unwrap(); + window.hide().unwrap(); + } + + #[cfg(not(target_os = "macos"))] + event.window().close().unwrap(); + + api.prevent_close(); + } + }) + .run(tauri::generate_context!()) + .expect("error while running tauri application"); +} + +pub fn run() { + run_app() +} diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index 0570dab..d90487c 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -3,84 +3,6 @@ windows_subsystem = "windows" )] -mod app; -mod util; - -use app::{invoke, menu, window}; -use invoke::{download_file, download_file_by_binary}; -use menu::{get_system_tray, system_tray_handle}; -use tauri::{GlobalShortcutManager, Manager}; -use tauri_plugin_window_state::Builder as windowStatePlugin; -use util::{get_data_dir, get_pake_config}; -use window::get_window; - -pub fn run_app() { - let (pake_config, tauri_config) = get_pake_config(); - let data_dir = get_data_dir(tauri_config); - - let mut tauri_app = tauri::Builder::default(); - - let show_system_tray = pake_config.show_system_tray(); - let system_tray = get_system_tray(); - - if show_system_tray { - tauri_app = tauri_app - .system_tray(system_tray) - .on_system_tray_event(system_tray_handle); - } - - // Save the value of toggle_app_shortcut before pake_config is moved - let activation_shortcut = pake_config.windows[0].activation_shortcut.clone(); - - tauri_app - .plugin(windowStatePlugin::default().build()) - .plugin(tauri_plugin_oauth::init()) - .invoke_handler(tauri::generate_handler![ - download_file, - download_file_by_binary - ]) - .setup(move |app| { - let _window = get_window(app, pake_config, data_dir); - // Prevent initial shaking - _window.show().unwrap(); - - if !activation_shortcut.is_empty() { - let app_handle = app.app_handle().clone(); - app_handle - .global_shortcut_manager() - .register(activation_shortcut.as_str(), move || { - let window = app_handle.get_window("pake").unwrap(); - match window.is_visible().unwrap() { - true => window.hide().unwrap(), - false => { - window.show().unwrap(); - window.set_focus().unwrap(); - } - } - }) - .expect("Error registering global evoke shortcuts!"); - } - - Ok(()) - }) - .on_window_event(|event| { - if let tauri::WindowEvent::CloseRequested { api, .. } = event.event() { - #[cfg(target_os = "macos")] - { - event.window().minimize().unwrap(); - event.window().hide().unwrap(); - } - - #[cfg(not(target_os = "macos"))] - event.window().close().unwrap(); - - api.prevent_close(); - } - }) - .run(tauri::generate_context!()) - .expect("error while running tauri application"); -} - fn main() { - run_app() + app_lib::run() } diff --git a/src-tauri/src/util.rs b/src-tauri/src/util.rs index ec8242f..60a94c5 100644 --- a/src-tauri/src/util.rs +++ b/src-tauri/src/util.rs @@ -1,7 +1,8 @@ use crate::app::config::PakeConfig; use std::env; use std::path::PathBuf; -use tauri::{api, Config, Window}; +use tauri::{App, AppHandle, Config, Manager, WebviewWindow}; + pub fn get_pake_config() -> (PakeConfig, Config) { #[cfg(feature = "cli-build")] @@ -23,10 +24,10 @@ pub fn get_pake_config() -> (PakeConfig, Config) { (pake_config, tauri_config) } -pub fn get_data_dir(_tauri_config: Config) -> PathBuf { +pub fn get_data_dir(app: &AppHandle, _tauri_config: Config, ) -> PathBuf { { - let package_name = _tauri_config.package.product_name.unwrap(); - let data_dir = api::path::config_dir() + let package_name = _tauri_config.product_name.unwrap(); + let data_dir = app.path().config_dir() .expect("Failed to get data dirname") .join(package_name); @@ -38,7 +39,7 @@ pub fn get_data_dir(_tauri_config: Config) -> PathBuf { } } -pub fn show_toast(window: &Window, message: &str) { +pub fn show_toast(window: &WebviewWindow, message: &str) { let script = format!(r#"pakeToast("{}");"#, message); window.eval(&script).unwrap(); } diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index 8a5847b..4000f52 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -1,39 +1,20 @@ { - "package": { - "productName": "WeRead", - "version": "1.0.0" + "build": { + "beforeBuildCommand": "", + "frontendDist": "../dist", + "beforeDevCommand": "" }, - "tauri": { + "plugins": {}, + "productName": "WeRead", + "version": "1.0.0", + "app": { "security": { - "csp": null, - "dangerousRemoteDomainIpcAccess": [ - { - "domain": "weread.qq.com", - "windows": ["pake"], - "enableTauriAPI": true - } - ] + "csp": null }, - "updater": { - "active": false - }, - "systemTray": { + "trayIcon": { "iconPath": "png/icon_512.png", "iconAsTemplate": false }, - "allowlist": { - "all": true, - "fs": { - "all": true, - "scope": ["$DOWNLOAD/*"] - } - } - }, - "build": { - "withGlobalTauri": true, - "devPath": "../dist", - "distDir": "../dist", - "beforeBuildCommand": "", - "beforeDevCommand": "" + "withGlobalTauri": true } } diff --git a/src-tauri/tauri.macos.conf.json b/src-tauri/tauri.macos.conf.json index cdfbfa1..90b3605 100644 --- a/src-tauri/tauri.macos.conf.json +++ b/src-tauri/tauri.macos.conf.json @@ -1,23 +1,21 @@ { - "tauri": { - "bundle": { - "icon": ["icons/weread.icns"], - "identifier": "com.pake.weread", - "active": true, - "category": "DeveloperTool", - "copyright": "", - "externalBin": [], - "longDescription": "", - "macOS": { - "entitlements": null, - "exceptionDomain": "", - "frameworks": [], - "providerShortName": null, - "signingIdentity": null - }, - "resources": [], - "shortDescription": "", - "targets": ["dmg"] - } + "identifier": "com.pake.weread", + "bundle": { + "icon": ["icons/weread.icns"], + "active": true, + "category": "DeveloperTool", + "copyright": "", + "externalBin": [], + "longDescription": "", + "macOS": { + "entitlements": null, + "exceptionDomain": null, + "frameworks": [], + "providerShortName": null, + "signingIdentity": null + }, + "resources": [], + "shortDescription": "", + "targets": ["dmg"] } }