diff --git a/.changes/dialog-async-message-dialog.md b/.changes/dialog-async-message-dialog.md new file mode 100644 index 00000000..adfe008b --- /dev/null +++ b/.changes/dialog-async-message-dialog.md @@ -0,0 +1,5 @@ +--- +"dialog": "patch" +--- + +On non-Linux system, use `AsyncMessageDialog` instead of `MessageDialog`. [(tauri#7182)](https://github.com/tauri-apps/tauri/issues/7182) diff --git a/.changes/fs-wiret-binary-file.md b/.changes/fs-wiret-binary-file.md new file mode 100644 index 00000000..82dd056f --- /dev/null +++ b/.changes/fs-wiret-binary-file.md @@ -0,0 +1,5 @@ +--- +"fs-js": patch +--- + +Fix `writeBinaryFile` crashing with `command 'write_binary_file' not found` diff --git a/.changes/http-multipart-refactor.md b/.changes/http-multipart-refactor.md new file mode 100644 index 00000000..562943d5 --- /dev/null +++ b/.changes/http-multipart-refactor.md @@ -0,0 +1,5 @@ +--- +"http-js": minor +--- + +Multipart requests are now handled in JavaScript by the `Request` JavaScript class so you just need to use a `FormData` body and not set the content-type header to `multipart/form-data`. `application/x-www-form-urlencoded` requests must be done manually. diff --git a/.changes/http-plugin-refactor.md b/.changes/http-plugin-refactor.md new file mode 100644 index 00000000..ff089543 --- /dev/null +++ b/.changes/http-plugin-refactor.md @@ -0,0 +1,6 @@ +--- +"http": minor +"http-js": minor +--- + +The http plugin has been rewritten from scratch and now only exposes a `fetch` function in Javascript and Re-exports `reqwest` crate in Rust. The new `fetch` method tries to be as close and compliant to the `fetch` Web API as possible. diff --git a/.changes/persisted-scope-asset.md b/.changes/persisted-scope-asset.md new file mode 100644 index 00000000..5b4b933a --- /dev/null +++ b/.changes/persisted-scope-asset.md @@ -0,0 +1,5 @@ +--- +"persisted-scope": patch +--- + +Split up fs and asset scopes. **This will reset the asset protocol scope once!** diff --git a/.changes/persisted-scope-glob.md b/.changes/persisted-scope-glob.md new file mode 100644 index 00000000..24875a8e --- /dev/null +++ b/.changes/persisted-scope-glob.md @@ -0,0 +1,5 @@ +--- +"persisted-scope": patch +--- + +Fix usage of directory patterns by removing glob asterisks at the end before allowing/forbidding them. This was causing them to be escaped, and so undesirable paths were allowed/forbidden while polluting the `.persisted-scope` file. diff --git a/.changes/shell-command-apis.md b/.changes/shell-command-apis.md new file mode 100644 index 00000000..2307e07c --- /dev/null +++ b/.changes/shell-command-apis.md @@ -0,0 +1,5 @@ +--- +"shell": "patch" +--- + +Added `Command::arg`, `Command::env` and changed `Command::new` input type. \ No newline at end of file diff --git a/.changes/shell-detached.md b/.changes/shell-detached.md new file mode 100644 index 00000000..4d65f865 --- /dev/null +++ b/.changes/shell-detached.md @@ -0,0 +1,5 @@ +--- +"shell": patch +--- + +Ensure the launched process is detached so it can out-live your tauri app and does not shutdown with it. diff --git a/.changes/stronghold-arg-name.md b/.changes/stronghold-arg-name.md new file mode 100644 index 00000000..61efc0ed --- /dev/null +++ b/.changes/stronghold-arg-name.md @@ -0,0 +1,5 @@ +--- +"stronghold-js": patch +--- + +Change the argument name of the `Stronghold.remove` from `location` to `recordPath` to match the Stronghold command argument diff --git a/.changes/updater-nsis-admin.md b/.changes/updater-nsis-admin.md new file mode 100644 index 00000000..b4e92e87 --- /dev/null +++ b/.changes/updater-nsis-admin.md @@ -0,0 +1,5 @@ +--- +"updater": "patch" +--- + +On Windows, fix NSIS installers requiring administrator rights failing to be launched by updater. diff --git a/.scripts/ci/check-license-header.js b/.scripts/ci/check-license-header.js index d8a64650..ee6ef336 100644 --- a/.scripts/ci/check-license-header.js +++ b/.scripts/ci/check-license-header.js @@ -116,6 +116,6 @@ if (files.length > 0) { console.log(missing.join("\n")); process.exit(1); } - } + }, ); } diff --git a/.scripts/covector/package-latest-version.cjs b/.scripts/covector/package-latest-version.cjs index 68203a1f..fde1d4c0 100644 --- a/.scripts/covector/package-latest-version.cjs +++ b/.scripts/covector/package-latest-version.cjs @@ -52,7 +52,7 @@ https.get(url, options, (response) => { } } else if (kind === "npm") { const versions = Object.keys(data.versions || {}).filter((v) => - v.startsWith(target) + v.startsWith(target), ); console.log(versions[versions.length - 1] || "0.0.0"); } diff --git a/Cargo.lock b/Cargo.lock index 813f90dc..b3e9f4ef 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,15 @@ # It is not intended for manual editing. version = 3 +[[package]] +name = "addr2line" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4fa78e18c64fce05e902adecd7a5eed15a5e0a3439f7b0e169f0252214865e3" +dependencies = [ + "gimli", +] + [[package]] name = "adler" version = "1.0.2" @@ -41,9 +50,9 @@ dependencies = [ [[package]] name = "aes" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "433cfd6710c9986c576a25ca913c39d66a6474107b406f34f91d4a8923395241" +checksum = "ac1f845298e95f983ff1944b728ae08b8cebab80d684f0a832ed0fc74dfa27e2" dependencies = [ "cfg-if", "cipher 0.4.4", @@ -71,7 +80,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "209b47e8954a928e1d72e86eca7000ebb6655fe1436d33eefc2201cad027e237" dependencies = [ "aead 0.5.2", - "aes 0.8.2", + "aes 0.8.3", "cipher 0.4.4", "ctr 0.9.2", "ghash 0.5.0", @@ -84,7 +93,7 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" dependencies = [ - "getrandom 0.2.9", + "getrandom 0.2.10", "once_cell", "version_check", ] @@ -96,24 +105,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f" dependencies = [ "cfg-if", + "getrandom 0.2.10", "once_cell", "version_check", ] [[package]] name = "aho-corasick" -version = "0.7.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" -dependencies = [ - "memchr", -] - -[[package]] -name = "aho-corasick" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67fc08ce920c31afb70f013dcce1bfc3a3195de6a228474e45e1f145b36f8d04" +checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41" dependencies = [ "memchr", ] @@ -133,6 +134,18 @@ dependencies = [ "alloc-no-stdlib", ] +[[package]] +name = "allocator-api2" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + [[package]] name = "android_log-sys" version = "0.2.0" @@ -177,15 +190,15 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41ed9a86bf92ae6580e0a31281f65a1b1d867c0cc68d5346e2ae128dddfa6a7d" +checksum = "3a30da5c5f2d5e72842e00bcb57657162cdabef0931f40e2deb9b4140440cecd" [[package]] name = "anstyle-parse" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e765fd216e48e067936442276d1d57399e37bce53c264d6fefbe298080cb57ee" +checksum = "938874ff5980b03a87c5524b3ae5b59cf99b1d6bc836848df7bc5ada9643c333" dependencies = [ "utf8parse", ] @@ -211,9 +224,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.71" +version = "1.0.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c7d0618f0e0b7e8ff11427422b64564d5fb0be1940354bfe2e0529b18a9d9b8" +checksum = "3b13c32d80ecc7ab747b80c3784bce54ee8a7a0cc4fbda9bf4cda2cf6fe90854" [[package]] name = "api" @@ -251,7 +264,7 @@ dependencies = [ "tauri", "tauri-build", "tauri-plugin-updater", - "time 0.3.21", + "time 0.3.24", "tiny_http 0.11.0", ] @@ -269,7 +282,7 @@ dependencies = [ "objc-foundation", "objc_id", "once_cell", - "parking_lot 0.12.1", + "parking_lot", "thiserror", "winapi", "x11rb", @@ -283,9 +296,9 @@ checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" [[package]] name = "arrayvec" -version = "0.7.2" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "ascii" @@ -315,15 +328,29 @@ dependencies = [ [[package]] name = "async-channel" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf46fee83e5ccffc220104713af3292ff9bc7c64c7de289f66dae8e38d826833" +checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" dependencies = [ "concurrent-queue", "event-listener", "futures-core", ] +[[package]] +name = "async-compression" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b74f44609f0f91493e3082d3734d98497e094777144380ea4db9f9905dd5b6" +dependencies = [ + "brotli", + "flate2", + "futures-core", + "memchr", + "pin-project-lite", + "tokio", +] + [[package]] name = "async-executor" version = "1.5.1" @@ -333,7 +360,7 @@ dependencies = [ "async-lock", "async-task", "concurrent-queue", - "fastrand", + "fastrand 1.9.0", "futures-lite", "slab", ] @@ -364,9 +391,9 @@ dependencies = [ "log", "parking", "polling", - "rustix", + "rustix 0.37.23", "slab", - "socket2", + "socket2 0.4.9", "waker-fn", ] @@ -379,6 +406,24 @@ dependencies = [ "event-listener", ] +[[package]] +name = "async-process" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a9d28b1d97e08915212e2e45310d47854eafa69600756fc735fb788f75199c9" +dependencies = [ + "async-io", + "async-lock", + "autocfg", + "blocking", + "cfg-if", + "event-listener", + "futures-lite", + "rustix 0.37.23", + "signal-hook", + "windows-sys 0.48.0", +] + [[package]] name = "async-recursion" version = "1.0.4" @@ -387,7 +432,7 @@ checksum = "0e97ce7de6cf12de5d7226c73f5ba9811622f4db3a5b91b55c53e987e5f91cba" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.28", ] [[package]] @@ -409,7 +454,7 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.28", ] [[package]] @@ -420,13 +465,13 @@ checksum = "ecc7ab41815b3c653ccd2978ec3255c81349336702dfdf62ee6f7069b12a3aae" [[package]] name = "async-trait" -version = "0.1.68" +version = "0.1.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9ccdd8f2a161be9bd5c023df56f1b2a0bd1d83872ae53b71a84a12c9bf6e842" +checksum = "cc6dde6e4ed435a4c1ee4e73592f5ba9da2151af10076cc04858746af9352d09" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.28", ] [[package]] @@ -455,9 +500,9 @@ dependencies = [ [[package]] name = "atoi" -version = "1.0.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7c57d12312ff59c811c0643f4d80830505833c9ffaebd193d819392b265be8e" +checksum = "f28d99ec8bfea296261ca1af174f24225171fea9664ba9003cbebee704810528" dependencies = [ "num-traits", ] @@ -468,17 +513,6 @@ version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1181e1e0d1fce796a03db1ae795d67167da795f9cf4a39c37589e85ef57f26d3" -[[package]] -name = "atty" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" -dependencies = [ - "hermit-abi 0.1.19", - "libc", - "winapi", -] - [[package]] name = "authenticator" version = "0.3.1" @@ -513,6 +547,21 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +[[package]] +name = "backtrace" +version = "0.3.68" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4319208da049c43661739c5fade2ba182f09d1dc2299b32298d3a31692b17e12" +dependencies = [ + "addr2line", + "cc", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] + [[package]] name = "base64" version = "0.11.0" @@ -554,9 +603,12 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.3.1" +version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6776fc96284a0bb647b615056fc496d1fe1644a7ab01829818a6d91cae888b84" +checksum = "630be753d4e58660abd17930c71b647fe46c27ea6b63cc59e1e3851406972e42" +dependencies = [ + "serde", +] [[package]] name = "blake2" @@ -575,7 +627,7 @@ checksum = "3c2f0dc9a68c6317d884f97cc36cf5a3d20ba14ce404227df55e1af708ab04bc" dependencies = [ "arrayref", "arrayvec", - "constant_time_eq 0.2.5", + "constant_time_eq 0.2.6", ] [[package]] @@ -612,7 +664,7 @@ dependencies = [ "async-lock", "async-task", "atomic-waker", - "fastrand", + "fastrand 1.9.0", "futures-lite", "log", ] @@ -640,9 +692,9 @@ dependencies = [ [[package]] name = "bstr" -version = "1.5.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a246e68bb43f6cd9db24bea052a53e40405417c5fb372e3d1a8a7f770a564ef5" +checksum = "6798148dccfbff0fae41c7574d2fa8f1ef3492fba0face179de5d8d447d67b05" dependencies = [ "memchr", "serde", @@ -722,9 +774,9 @@ dependencies = [ [[package]] name = "cargo_toml" -version = "0.15.2" +version = "0.15.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f83bc2e401ed041b7057345ebc488c005efa0341d5541ce7004d30458d0090b" +checksum = "599aa35200ffff8f04c1925aa1acc92fa2e08874379ef42e210a80e527e60838" dependencies = [ "serde", "toml", @@ -755,9 +807,9 @@ dependencies = [ [[package]] name = "cfg-expr" -version = "0.15.1" +version = "0.15.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8790cf1286da485c72cf5fc7aeba308438800036ec67d89425924c4807268c9" +checksum = "b40ccee03b5175c18cde8f37e7d2a33bcef6f8ec8f7cc0d81090d1bb380949c9" dependencies = [ "smallvec", "target-lexicon", @@ -796,13 +848,13 @@ dependencies = [ [[package]] name = "chrono" -version = "0.4.24" +version = "0.4.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e3c5919066adf22df73762e50cffcde3a758f2a848b113b586d1f86728b673b" +checksum = "ec837a71355b28f6556dbd569b37b3f363091c0bd4b2e735674521b4c5fd9bc5" dependencies = [ + "android-tzdata", "iana-time-zone", "js-sys", - "num-integer", "num-traits", "serde", "time 0.1.45", @@ -837,22 +889,21 @@ dependencies = [ [[package]] name = "clap" -version = "4.3.0" +version = "4.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93aae7a4192245f70fe75dd9157fc7b4a5bf53e88d30bd4396f7d8f9284d5acc" +checksum = "5fd304a20bff958a57f04c4e96a2e7594cc4490a0e809cbd48bb6437edaa452d" dependencies = [ "clap_builder", ] [[package]] name = "clap_builder" -version = "4.3.0" +version = "4.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f423e341edefb78c9caba2d9c7f7687d0e72e89df3ce3394554754393ac3990" +checksum = "01c6a3f08f1fe5662a35cfe393aec09c4df95f60ee93b7556505260f75eee9e1" dependencies = [ "anstream", "anstyle", - "bitflags 1.3.2", "clap_lex", "strsim", ] @@ -919,24 +970,24 @@ checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" [[package]] name = "colored" -version = "1.9.3" +version = "1.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4ffc801dacf156c5854b9df4f425a626539c3a6ef7893cc0c5084a23f0b6c59" +checksum = "5a5f741c91823341bebf717d4c71bda820630ce065443b58bd1b7451af008355" dependencies = [ - "atty", + "is-terminal", "lazy_static", "winapi", ] [[package]] name = "colored" -version = "2.0.0" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3616f750b84d8f0de8a58bda93e08e2a81ad3f523089b05f1dffecab48c6cbd" +checksum = "2674ec482fbc38012cf31e6c42ba0177b431a0cb6f15fe40efa5aab1bda516f6" dependencies = [ - "atty", + "is-terminal", "lazy_static", - "winapi", + "windows-sys 0.48.0", ] [[package]] @@ -960,9 +1011,9 @@ dependencies = [ [[package]] name = "const-oid" -version = "0.7.1" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4c78c047431fee22c1a7bb92e00ad095a02a983affe4d8a72e2a2c62c1b94f3" +checksum = "795bc6e66a8e340f075fcf6227e417a2dc976b92b91f3cdc778bb858778b6747" [[package]] name = "constant_time_eq" @@ -972,9 +1023,9 @@ checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" [[package]] name = "constant_time_eq" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13418e745008f7349ec7e449155f419a61b92b58a99cc3616942b926825ec76b" +checksum = "21a53c0a4d288377e7415b53dcfc3c04da5cdc2cc95c8d5ac178b58f0b861ad6" [[package]] name = "convert_case" @@ -982,6 +1033,34 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" +[[package]] +name = "cookie" +version = "0.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e859cd57d0710d9e06c381b550c06e76992472a8c6d527aecd2fc673dcc231fb" +dependencies = [ + "percent-encoding", + "time 0.3.24", + "version_check", +] + +[[package]] +name = "cookie_store" +version = "0.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d606d0fba62e13cf04db20536c05cb7f13673c161cb47a47a82b9b9e7d3f1daa" +dependencies = [ + "cookie", + "idna 0.2.3", + "log", + "publicsuffix", + "serde", + "serde_derive", + "serde_json", + "time 0.3.24", + "url", +] + [[package]] name = "core-foundation" version = "0.9.3" @@ -1013,21 +1092,20 @@ dependencies = [ [[package]] name = "core-graphics-types" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a68b68b3446082644c91ac778bf50cd4104bfb002b5a6a7c44cca5a2c70788b" +checksum = "2bb142d41022986c1d8ff29103a1411c8a3dfad3552f87a4f8dc50d61d4f4e33" dependencies = [ "bitflags 1.3.2", "core-foundation", - "foreign-types", "libc", ] [[package]] name = "cpufeatures" -version = "0.2.7" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e4c1eaa2012c47becbbad2ab175484c2a84d1185b566fb2cc5b8707343dfe58" +checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1" dependencies = [ "libc", ] @@ -1078,23 +1156,13 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.15" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b" +checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" dependencies = [ "cfg-if", ] -[[package]] -name = "crypto-bigint" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03c6a1d5fa1de37e071642dfa44ec552ca5b299adb128fab16138e24b548fd21" -dependencies = [ - "generic-array", - "subtle", -] - [[package]] name = "crypto-common" version = "0.1.6" @@ -1125,12 +1193,12 @@ dependencies = [ [[package]] name = "cssparser-macros" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfae75de57f2b2e85e8768c3ea840fd159c8f33e2b6522c7835b7abac81be16e" +checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" dependencies = [ "quote", - "syn 1.0.109", + "syn 2.0.28", ] [[package]] @@ -1176,9 +1244,9 @@ dependencies = [ [[package]] name = "darling" -version = "0.20.1" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0558d22a7b463ed0241e993f76f09f30b126687447751a8638587b864e4b3944" +checksum = "0209d94da627ab5605dcccf08bb18afa5009cfbef48d8a8b7d7bdbc79be25c5e" dependencies = [ "darling_core", "darling_macro", @@ -1186,27 +1254,27 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.1" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab8bfa2e259f8ee1ce5e97824a3c55ec4404a0d772ca7fa96bf19f0752a046eb" +checksum = "177e3443818124b357d8e76f53be906d60937f0d3a90773a664fa63fa253e621" dependencies = [ "fnv", "ident_case", "proc-macro2", "quote", "strsim", - "syn 2.0.18", + "syn 2.0.28", ] [[package]] name = "darling_macro" -version = "0.20.1" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29a358ff9f12ec09c3e61fef9b5a9902623a695a46a917b07f269bff1445611a" +checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" dependencies = [ "darling_core", "quote", - "syn 2.0.18", + "syn 2.0.28", ] [[package]] @@ -1215,15 +1283,30 @@ version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308" +[[package]] +name = "data-url" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41b319d1b62ffbd002e057f36bebd1f42b9f97927c9577461d855f3513c4289f" + [[package]] name = "der" -version = "0.5.1" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6919815d73839e7ad218de758883aae3a257ba6759ce7a9992501efbb53d705c" +checksum = "0c7ed52955ce76b1554f509074bb357d3fb8ac9b51288a65a3fd480d1dfba946" dependencies = [ "const-oid", - "crypto-bigint", "pem-rfc7468", + "zeroize", +] + +[[package]] +name = "deranged" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8810e7e2cf385b1e9b50d68264908ec367ba642c96d02edfe61c39e88e2a3c01" +dependencies = [ + "serde", ] [[package]] @@ -1276,6 +1359,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer 0.10.4", + "const-oid", "crypto-common", "subtle", ] @@ -1335,15 +1419,15 @@ checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" [[package]] name = "dtoa" -version = "0.4.8" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56899898ce76aaf4a0f24d914c97ea6ed976d42fec6ad33fcbb0a1103e07b2b0" +checksum = "dcbb2bf8e87535c23f7a8a321e364ce21462d0ff10cb6407820e8e96dfff6653" [[package]] name = "dtoa-short" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bde03329ae10e79ede66c9ce4dc930aa8599043b0743008548680f25b91502d6" +checksum = "dbaceec3c6e4211c79e7b1800fb9680527106beb2f9c51904a3210c03a448c74" dependencies = [ "dtoa", ] @@ -1370,15 +1454,18 @@ dependencies = [ [[package]] name = "either" -version = "1.8.1" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" +checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" +dependencies = [ + "serde", +] [[package]] name = "embed-resource" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80663502655af01a2902dff3f06869330782267924bf1788410b74edcd93770a" +checksum = "f7f1e82a60222fc67bfd50d752a9c89da5cce4c39ed39decc84a443b07bbd69a" dependencies = [ "cc", "rustc_version", @@ -1402,6 +1489,18 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "enum-as-inner" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9720bba047d567ffc8a3cba48bf19126600e249ab7f128e9233e6376976a116" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "enumflags2" version = "0.7.7" @@ -1420,7 +1519,7 @@ checksum = "5e9a1f9f7d83e59740248a6e14ecf93929ade55027844dfcea78beafccc15745" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.28", ] [[package]] @@ -1433,11 +1532,17 @@ dependencies = [ "regex", ] +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + [[package]] name = "errno" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" +checksum = "6b30f669a7961ef1631673d2766cc92f52d64f7ef354d4fe0ddfd30ed52f0f4f" dependencies = [ "errno-dragonfly", "libc", @@ -1464,6 +1569,17 @@ dependencies = [ "str-buf", ] +[[package]] +name = "etcetera" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "136d1b5283a1ab77bd9257427ffd09d8667ced0570b6f938942bc7568ed5b943" +dependencies = [ + "cfg-if", + "home", + "windows-sys 0.48.0", +] + [[package]] name = "event-listener" version = "2.5.3" @@ -1479,6 +1595,12 @@ dependencies = [ "instant", ] +[[package]] +name = "fastrand" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6999dc1837253364c2ebb0704ba97994bd874e8f195d665c50b7548f6ea92764" + [[package]] name = "fdeflate" version = "0.3.0" @@ -1494,17 +1616,17 @@ version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9f0c14694cbd524c8720dd69b0e3179344f04ebb5f90f2e4a440c6ea3b2f1ee" dependencies = [ - "colored 1.9.3", + "colored 1.9.4", "log", ] [[package]] name = "field-offset" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3cf3a800ff6e860c863ca6d4b16fd999db8b752819c1606884047b73e468535" +checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f" dependencies = [ - "memoffset 0.8.0", + "memoffset 0.9.0", "rustc_version", ] @@ -1565,9 +1687,9 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "form_urlencoded" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8" +checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" dependencies = [ "percent-encoding", ] @@ -1635,13 +1757,13 @@ dependencies = [ [[package]] name = "futures-intrusive" -version = "0.4.2" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a604f7a68fbf8103337523b1fadc8ade7361ee3f112f7c680ad179651616aed5" +checksum = "1d930c203dd0b6ff06e0201a4a2fe9149b43c684fd4420555b26d21b1a02956f" dependencies = [ "futures-core", "lock_api", - "parking_lot 0.11.2", + "parking_lot", ] [[package]] @@ -1656,7 +1778,7 @@ version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" dependencies = [ - "fastrand", + "fastrand 1.9.0", "futures-core", "futures-io", "memchr", @@ -1673,7 +1795,7 @@ checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.28", ] [[package]] @@ -1803,9 +1925,9 @@ dependencies = [ [[package]] name = "generator" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3e123d9ae7c02966b4d892e550bdc32164f05853cd40ab570650ad600596a8a" +checksum = "5cc16584ff22b460a382b7feec54b23d2908d858152e5739a120b949293bd74e" dependencies = [ "cc", "libc", @@ -1841,7 +1963,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0176e0459c2e4a1fe232f984bca6890e681076abb9934f6cea7c326f3fc47818" dependencies = [ "libc", - "windows-targets 0.48.0", + "windows-targets 0.48.1", ] [[package]] @@ -1857,9 +1979,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.9" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c85e1d9ab2eadba7e5040d4e09cbd6d072b76a557ad64e797c2cb9d4da21d7e4" +checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" dependencies = [ "cfg-if", "js-sys", @@ -1885,9 +2007,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d930750de5717d2dd0b8c0d42c076c0e884c81a73e6cab859bbd2339c71e3e40" dependencies = [ "opaque-debug", - "polyval 0.6.0", + "polyval 0.6.1", ] +[[package]] +name = "gimli" +version = "0.27.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e" + [[package]] name = "gio" version = "0.16.7" @@ -1923,9 +2051,9 @@ dependencies = [ [[package]] name = "glib" -version = "0.16.7" +version = "0.16.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddd4df61a866ed7259d6189b8bcb1464989a77f1d85d25d002279bbe9dd38b2f" +checksum = "16aa2475c9debed5a32832cb5ff2af5a3f9e1ab9e69df58eaadc1ab2004d6eba" dependencies = [ "bitflags 1.3.2", "futures-channel", @@ -1950,7 +2078,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fb1a9325847aa46f1e96ffea37611b9d51fc4827e67f79e7de502a297560a67b" dependencies = [ "anyhow", - "heck 0.4.1", + "heck", "proc-macro-crate", "proc-macro-error", "proc-macro2", @@ -1976,9 +2104,9 @@ checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" [[package]] name = "global-hotkey" -version = "0.2.1" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "273daa5db9a79be95b2b04c9955651c301a08b5dc1d7656e692e3801634aa873" +checksum = "997c3cad8588ba1079e7747961d27515e85989be4680d88f3a194b576a4f1d58" dependencies = [ "crossbeam-channel", "keyboard-types", @@ -1990,11 +2118,11 @@ dependencies = [ [[package]] name = "globset" -version = "0.4.10" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "029d74589adefde59de1a0c4f4732695c32805624aec7b68d91503d4dba79afc" +checksum = "aca8bbd8e0707c1887a8bbb7e6b40e228f251ff5d62c8220a4a7a53c73aff006" dependencies = [ - "aho-corasick 0.7.20", + "aho-corasick", "bstr", "fnv", "log", @@ -2069,9 +2197,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.19" +version = "0.3.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d357c7ae988e7d2182f7d7871d0b963962420b0678b0997ce7de72001aeab782" +checksum = "97ec8491ebaf99c8eaa73058b045fe58073cd6be7f596ac993ced0b0a0c01049" dependencies = [ "bytes 1.4.0", "fnv", @@ -2079,13 +2207,41 @@ dependencies = [ "futures-sink", "futures-util", "http", - "indexmap", + "indexmap 1.9.3", "slab", "tokio", "tokio-util", "tracing", ] +[[package]] +name = "h3" +version = "0.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6de6ca43eed186fd055214af06967b0a7a68336cefec7e8a4004e96efeaccb9e" +dependencies = [ + "bytes 1.4.0", + "fastrand 1.9.0", + "futures-util", + "http", + "tokio", + "tracing", +] + +[[package]] +name = "h3-quinn" +version = "0.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d4a1a1763e4f3e82ee9f1ecf2cf862b22cc7316ebe14684e42f94532b5ec64d" +dependencies = [ + "bytes 1.4.0", + "futures", + "h3", + "quinn", + "quinn-proto", + "tokio-util", +] + [[package]] name = "hashbrown" version = "0.12.3" @@ -2097,29 +2253,21 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" +checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" dependencies = [ "ahash 0.8.3", + "allocator-api2", ] [[package]] name = "hashlink" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0761a1b9491c4f2e3d66aa0f62d0fba0af9a0e2852e4d48ea506632a4b56e6aa" -dependencies = [ - "hashbrown 0.13.2", -] - -[[package]] -name = "heck" -version = "0.3.3" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" +checksum = "312f66718a2d7789ffef4f4b7b213138ed9f1eb3aa1d0d82fc99f88fb3ffd26f" dependencies = [ - "unicode-segmentation", + "hashbrown 0.14.0", ] [[package]] @@ -2133,27 +2281,9 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" -dependencies = [ - "libc", -] - -[[package]] -name = "hermit-abi" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" -dependencies = [ - "libc", -] - -[[package]] -name = "hermit-abi" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" +checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b" [[package]] name = "hex" @@ -2180,28 +2310,48 @@ dependencies = [ ] [[package]] -name = "html5ever" -version = "0.25.2" +name = "home" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5c13fb08e5d4dfc151ee5e88bae63f7773d61852f3bdc73c9f4b9e1bde03148" +checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb" dependencies = [ - "log", - "mac", - "markup5ever", - "proc-macro2", - "quote", - "syn 1.0.109", + "windows-sys 0.48.0", ] [[package]] -name = "http" -version = "0.2.9" +name = "hostname" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867" +dependencies = [ + "libc", + "match_cfg", + "winapi", +] + +[[package]] +name = "html5ever" +version = "0.25.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5c13fb08e5d4dfc151ee5e88bae63f7773d61852f3bdc73c9f4b9e1bde03148" +dependencies = [ + "log", + "mac", + "markup5ever", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "http" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" dependencies = [ "bytes 1.4.0", "fnv", - "itoa 1.0.6", + "itoa 1.0.9", ] [[package]] @@ -2235,9 +2385,9 @@ checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" [[package]] name = "hyper" -version = "0.14.26" +version = "0.14.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab302d72a6f11a3b910431ff93aae7e773078c769f0a3ef15fb9ec692ed147d4" +checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" dependencies = [ "bytes 1.4.0", "futures-channel", @@ -2248,9 +2398,9 @@ dependencies = [ "http-body", "httparse", "httpdate", - "itoa 1.0.6", + "itoa 1.0.9", "pin-project-lite", - "socket2", + "socket2 0.4.9", "tokio", "tower-service", "tracing", @@ -2259,15 +2409,16 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.24.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0646026eb1b3eea4cd9ba47912ea5ce9cc07713d105b1a14698f4e6433d348b7" +checksum = "8d78e1e73ec14cf7375674f74d7dde185c8206fd9dea6fb6295e8a98098aaa97" dependencies = [ + "futures-util", "http", "hyper", - "rustls 0.21.1", + "rustls", "tokio", - "tokio-rustls 0.24.0", + "tokio-rustls", ] [[package]] @@ -2285,9 +2436,9 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.56" +version = "0.1.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0722cd7114b7de04316e7ea5456a0bbb20e4adb46fd27a3697adb812cff0f37c" +checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -2332,6 +2483,17 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" +[[package]] +name = "idna" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8" +dependencies = [ + "matches", + "unicode-bidi", + "unicode-normalization", +] + [[package]] name = "idna" version = "0.3.0" @@ -2342,6 +2504,16 @@ dependencies = [ "unicode-normalization", ] +[[package]] +name = "idna" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + [[package]] name = "ignore" version = "0.4.20" @@ -2385,6 +2557,16 @@ dependencies = [ "serde", ] +[[package]] +name = "indexmap" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" +dependencies = [ + "equivalent", + "hashbrown 0.14.0", +] + [[package]] name = "infer" version = "0.9.0" @@ -2447,7 +2629,7 @@ version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" dependencies = [ - "hermit-abi 0.3.1", + "hermit-abi", "libc", "windows-sys 0.48.0", ] @@ -2468,11 +2650,11 @@ dependencies = [ "digest 0.10.7", "ed25519-zebra", "generic-array", - "getrandom 0.2.9", + "getrandom 0.2.10", "hmac", "pbkdf2", "serde", - "sha2 0.10.6", + "sha2 0.10.7", "unicode-normalization", "x25519-dalek", "zeroize", @@ -2480,9 +2662,9 @@ dependencies = [ [[package]] name = "iota-crypto" -version = "0.20.1" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7eb2df6763689b6e2b95787941eb9a58b29d16d17c2055392f550b3daf40bdce" +checksum = "c5d5a986d972c3a703d48ced24fdc0bf16fb2d02959ff4b152fa77b9132f6fb0" dependencies = [ "autocfg", ] @@ -2514,11 +2696,23 @@ dependencies = [ "libc", ] +[[package]] +name = "ipconfig" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b58db92f96b720de98181bbbe63c831e87005ab460c1bf306eb2622b4707997f" +dependencies = [ + "socket2 0.5.3", + "widestring", + "windows-sys 0.48.0", + "winreg 0.50.0", +] + [[package]] name = "ipnet" -version = "2.7.2" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12b6ee2129af8d4fb011108c73d99a1b83a85977f23b82460c0ae2e25bb4b57f" +checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6" [[package]] name = "is-docker" @@ -2531,13 +2725,12 @@ dependencies = [ [[package]] name = "is-terminal" -version = "0.4.7" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adcf93614601c8129ddf72e2d5633df827ba6551541c6d8c59520a371475be1f" +checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" dependencies = [ - "hermit-abi 0.3.1", - "io-lifetimes", - "rustix", + "hermit-abi", + "rustix 0.38.4", "windows-sys 0.48.0", ] @@ -2568,9 +2761,9 @@ checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" [[package]] name = "itoa" -version = "1.0.6" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" +checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" [[package]] name = "javascriptcore-rs" @@ -2623,9 +2816,9 @@ checksum = "bc0000e42512c92e31c2252315bda326620a4e034105e900c98ec492fa077b3e" [[package]] name = "js-sys" -version = "0.3.63" +version = "0.3.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f37a4a5928311ac501dee68b3c7613a1037d0edb30c8e5427bd832d55d1b790" +checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" dependencies = [ "wasm-bindgen", ] @@ -2720,9 +2913,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.144" +version = "0.2.147" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b00cc1c228a6782d0f076e7b232802e0c5689d41bb5df366f2a6b6621cfdfe1" +checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" [[package]] name = "libloading" @@ -2754,9 +2947,9 @@ dependencies = [ [[package]] name = "libsqlite3-sys" -version = "0.24.2" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "898745e570c7d0453cc1fbc4a701eb6c662ed54e8fec8b7d14be137ebeeb9d14" +checksum = "afc22eff61b133b115c6e8c74e818c628d6d5e7a502afea6f64dee076dd94326" dependencies = [ "cc", "pkg-config", @@ -2792,17 +2985,29 @@ dependencies = [ "safemem", ] +[[package]] +name = "linked-hash-map" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" + [[package]] name = "linux-raw-sys" version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" +[[package]] +name = "linux-raw-sys" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09fc20d2ca12cb9f044c93e3bd6d32d523e6e2ec3db4f7b2939cd99026ecd3f0" + [[package]] name = "lock_api" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" +checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" dependencies = [ "autocfg", "scopeguard", @@ -2810,11 +3015,10 @@ dependencies = [ [[package]] name = "log" -version = "0.4.17" +version = "0.4.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" +checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" dependencies = [ - "cfg-if", "value-bag", ] @@ -2833,6 +3037,15 @@ dependencies = [ "tracing-subscriber", ] +[[package]] +name = "lru-cache" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c" +dependencies = [ + "linked-hash-map", +] + [[package]] name = "mac" version = "0.1.1" @@ -2841,15 +3054,15 @@ checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" [[package]] name = "mac-notification-sys" -version = "0.5.6" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e72d50edb17756489e79d52eb146927bec8eba9dd48faadf9ef08bca3791ad5" +checksum = "abc434554ad0e640d772f7f262aa28e61d485212533d3673abe5f3d1729bd42a" dependencies = [ "cc", "dirs-next", "objc-foundation", "objc_id", - "time 0.3.21", + "time 0.3.24", ] [[package]] @@ -2875,13 +3088,19 @@ dependencies = [ "tendril", ] +[[package]] +name = "match_cfg" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4" + [[package]] name = "matchers" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" dependencies = [ - "regex-automata", + "regex-automata 0.1.10", ] [[package]] @@ -2925,9 +3144,9 @@ dependencies = [ [[package]] name = "memoffset" -version = "0.8.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1" +checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" dependencies = [ "autocfg", ] @@ -2972,14 +3191,14 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.6" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b9d9a46eff5b4ff64b45a9e316a6d1e0bc719ef429cbec4dc630684212bfdf9" +checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" dependencies = [ "libc", "log", "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.45.0", + "windows-sys 0.48.0", ] [[package]] @@ -2989,7 +3208,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "80f9fece9bd97ab74339fe19f4bcaf52b76dcc18e5364c7977c1838f76b38de9" dependencies = [ "assert-json-diff", - "colored 2.0.0", + "colored 2.0.4", "httparse", "lazy_static", "log", @@ -3146,22 +3365,11 @@ dependencies = [ "winapi", ] -[[package]] -name = "num-bigint" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", -] - [[package]] name = "num-bigint-dig" -version = "0.8.2" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2399c9463abc5f909349d8aa9ba080e0b88b3ce2885389b60b993f39b1a56905" +checksum = "dc84195820f291c7697304f3cbdadd1cb7199c0efc917ff5eafd71225c136151" dependencies = [ "byteorder", "lazy_static", @@ -3208,9 +3416,9 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" dependencies = [ "autocfg", "libm", @@ -3218,11 +3426,11 @@ dependencies = [ [[package]] name = "num_cpus" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "hermit-abi 0.2.6", + "hermit-abi", "libc", ] @@ -3295,11 +3503,20 @@ dependencies = [ "objc", ] +[[package]] +name = "object" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8bda667d9f2b5051b8833f59f3bf748b28ef54f850f4fcb389a252aa383866d1" +dependencies = [ + "memchr", +] + [[package]] name = "once_cell" -version = "1.17.1" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" +checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" [[package]] name = "opaque-debug" @@ -3309,19 +3526,20 @@ checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" [[package]] name = "open" -version = "4.1.0" +version = "4.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d16814a067484415fda653868c9be0ac5f2abd2ef5d951082a5f2fe1b3662944" +checksum = "3a083c0c7e5e4a8ec4176346cf61f67ac674e8bfb059d9226e1c54a96b377c12" dependencies = [ "is-wsl", + "libc", "pathdiff", ] [[package]] name = "openssl" -version = "0.10.52" +version = "0.10.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01b8574602df80f7b85fdfc5392fa884a4e3b3f4f35402c070ab34c3d3f78d56" +checksum = "345df152bc43501c5eb9e4654ff05f794effb78d4efe3d53abc158baddc0703d" dependencies = [ "bitflags 1.3.2", "cfg-if", @@ -3340,7 +3558,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.28", ] [[package]] @@ -3351,18 +3569,18 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-src" -version = "111.25.3+1.1.1t" +version = "111.26.0+1.1.1u" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "924757a6a226bf60da5f7dd0311a34d2b52283dd82ddeb103208ddc66362f80c" +checksum = "efc62c9f12b22b8f5208c23a7200a442b2e5999f8bdf80233852122b5a4f6f37" dependencies = [ "cc", ] [[package]] name = "openssl-sys" -version = "0.9.87" +version = "0.9.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e17f59264b2809d77ae94f0e1ebabc434773f370d6ca667bd223ea10e06cc7e" +checksum = "374533b0e45f3a7ced10fcaeccca020e66656bc03dac384f852e4e5a7a8104a6" dependencies = [ "cc", "libc", @@ -3440,17 +3658,6 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "14f2252c834a40ed9bb5422029649578e63aa341ac401f74e719dd1afda8394e" -[[package]] -name = "parking_lot" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" -dependencies = [ - "instant", - "lock_api", - "parking_lot_core 0.8.6", -] - [[package]] name = "parking_lot" version = "0.12.1" @@ -3458,41 +3665,27 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" dependencies = [ "lock_api", - "parking_lot_core 0.9.7", -] - -[[package]] -name = "parking_lot_core" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" -dependencies = [ - "cfg-if", - "instant", - "libc", - "redox_syscall 0.2.16", - "smallvec", - "winapi", + "parking_lot_core", ] [[package]] name = "parking_lot_core" -version = "0.9.7" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9069cbb9f99e3a5083476ccb29ceb1de18b9118cafa53e90c9551235de2b9521" +checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.2.16", + "redox_syscall 0.3.5", "smallvec", - "windows-sys 0.45.0", + "windows-targets 0.48.1", ] [[package]] name = "paste" -version = "1.0.12" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f746c4065a8fa3fe23974dd82f15431cc8d40779821001404d10d2e79ca7d79" +checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" [[package]] name = "pathdiff" @@ -3511,18 +3704,18 @@ dependencies = [ [[package]] name = "pem-rfc7468" -version = "0.3.1" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01de5d978f34aa4b2296576379fcc416034702fd94117c56ffd8a1a767cefb30" +checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" dependencies = [ "base64ct", ] [[package]] name = "percent-encoding" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" +checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" [[package]] name = "phf" @@ -3624,29 +3817,29 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.0" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c95a7476719eab1e366eaf73d0260af3021184f18177925b07f54b30089ceead" +checksum = "030ad2bc4db10a8944cb0d837f158bdfec4d4a4873ab701a95046770d11f8842" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.0" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39407670928234ebc5e6e580247dd567ad73a3578460c5990f9503df207e8f07" +checksum = "ec2e072ecce94ec471b13398d5402c188e76ac03cf74dd1a975161b23a3f6d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.28", ] [[package]] name = "pin-project-lite" -version = "0.2.9" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" +checksum = "4c40d25201921e5ff0c862a505c6557ea88568a4e3ace775ab55e93f2f4f9d57" [[package]] name = "pin-utils" @@ -3656,24 +3849,23 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkcs1" -version = "0.3.3" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a78f66c04ccc83dd4486fd46c33896f4e17b24a7a3a6400dedc48ed0ddd72320" +checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f" dependencies = [ "der", "pkcs8", - "zeroize", + "spki", ] [[package]] name = "pkcs8" -version = "0.8.0" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cabda3fb821068a9a4fab19a683eac3af12edf0f34b94a8be53c4972b8149d0" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" dependencies = [ "der", "spki", - "zeroize", ] [[package]] @@ -3684,23 +3876,23 @@ checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" [[package]] name = "plist" -version = "1.4.3" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bd9647b268a3d3e14ff09c23201133a62589c658db02bb7388c7246aafe0590" +checksum = "bdc0001cfea3db57a2e24bc0d818e9e20e554b5f97fabb9bc231dc240269ae06" dependencies = [ "base64 0.21.2", - "indexmap", + "indexmap 1.9.3", "line-wrap", - "quick-xml 0.28.2", + "quick-xml 0.29.0", "serde", - "time 0.3.21", + "time 0.3.24", ] [[package]] name = "png" -version = "0.17.8" +version = "0.17.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aaeebc51f9e7d2c150d3f3bfeb667f2aa985db5ef1e3d212847bdedb488beeaa" +checksum = "59871cc5b6cce7eaccca5a802b4173377a1c2ba90654246789a8fa2334426d11" dependencies = [ "bitflags 1.3.2", "crc32fast", @@ -3750,9 +3942,9 @@ dependencies = [ [[package]] name = "polyval" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ef234e08c11dfcb2e56f79fd70f6f2eb7f025c0ce2333e82f4f0518ecad30c6" +checksum = "d52cff9d1d4dee5fe6d03729099f4a310a41179e0a10dbf542039873f2e826fb" dependencies = [ "cfg-if", "cpufeatures", @@ -3814,13 +4006,29 @@ checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" [[package]] name = "proc-macro2" -version = "1.0.59" +version = "1.0.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6aeca18b86b413c660b781aa319e4e2648a3e6f9eadc9b47e9038e6fe9f3451b" +checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" 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 = "quick-error" version = "1.2.3" @@ -3838,18 +4046,65 @@ dependencies = [ [[package]] name = "quick-xml" -version = "0.28.2" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ce5e73202a820a31f8a0ee32ada5e21029c81fd9e3ebf668a40832e4219d9d1" +checksum = "81b9228215d82c7b61490fec1de287136b5de6f5700f6e58ea9ad61a7964ca51" dependencies = [ "memchr", ] +[[package]] +name = "quinn" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cc2c5017e4b43d5995dcea317bc46c1e09404c0a9664d2908f7f02dfe943d75" +dependencies = [ + "bytes 1.4.0", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash", + "rustls", + "thiserror", + "tokio", + "tracing", +] + +[[package]] +name = "quinn-proto" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8c8bb234e70c863204303507d841e7fa2295e95c822b2bb4ca8ebf57f17b1cb" +dependencies = [ + "bytes 1.4.0", + "rand 0.8.5", + "ring", + "rustc-hash", + "rustls", + "slab", + "thiserror", + "tinyvec", + "tracing", +] + +[[package]] +name = "quinn-udp" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6df19e284d93757a9fb91d63672f7741b129246a669db09d1c0063071debc0c0" +dependencies = [ + "bytes 1.4.0", + "libc", + "socket2 0.5.3", + "tracing", + "windows-sys 0.48.0", +] + [[package]] name = "quote" -version = "1.0.28" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9ab9c7eadfd8df19006f1cf1a4aed13540ed5cbc047010ece5826e10825488" +checksum = "50f3b39ccfb720540debaa0164757101c08ecb8d326b15358ce76a62c7e85965" dependencies = [ "proc-macro2", ] @@ -3914,7 +4169,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.9", + "getrandom 0.2.10", ] [[package]] @@ -3976,20 +4231,21 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" dependencies = [ - "getrandom 0.2.9", + "getrandom 0.2.10", "redox_syscall 0.2.16", "thiserror", ] [[package]] name = "regex" -version = "1.8.3" +version = "1.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81ca098a9821bd52d6b24fd8b10bd081f47d39c22778cafaa75a2857a62c6390" +checksum = "b2eae68fc220f7cf2532e4494aded17545fce192d59cd996e0fe7887f4ceb575" dependencies = [ - "aho-corasick 1.0.1", + "aho-corasick", "memchr", - "regex-syntax 0.7.2", + "regex-automata 0.3.4", + "regex-syntax 0.7.4", ] [[package]] @@ -4001,6 +4257,17 @@ dependencies = [ "regex-syntax 0.6.29", ] +[[package]] +name = "regex-automata" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7b6d6190b7594385f61bd3911cd1be99dfddcfc365a4160cc2ab5bff4aed294" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.7.4", +] + [[package]] name = "regex-syntax" version = "0.6.29" @@ -4009,9 +4276,9 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.7.2" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "436b050e76ed2903236f032a59761c1eb99e1b0aead2c257922771dab1fc8c78" +checksum = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2" [[package]] name = "reqwest" @@ -4019,12 +4286,18 @@ version = "0.11.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cde824a14b7c14f85caff81225f411faacc04a2013f41670f41443742b1c1c55" dependencies = [ + "async-compression", "base64 0.21.2", "bytes 1.4.0", + "cookie", + "cookie_store", "encoding_rs", + "futures-channel", "futures-core", "futures-util", "h2", + "h3", + "h3-quinn", "http", "http-body", "hyper", @@ -4039,16 +4312,20 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", - "rustls 0.21.1", + "quinn", + "rustls", + "rustls-native-certs", "rustls-pemfile", "serde", "serde_json", "serde_urlencoded", "tokio", "tokio-native-tls", - "tokio-rustls 0.24.0", + "tokio-rustls", + "tokio-socks", "tokio-util", "tower-service", + "trust-dns-resolver", "url", "wasm-bindgen", "wasm-bindgen-futures", @@ -4058,6 +4335,16 @@ dependencies = [ "winreg 0.10.1", ] +[[package]] +name = "resolv-conf" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52e44394d2086d010551b14b53b1f24e31647570cd1deb0379e2c21b329aba00" +dependencies = [ + "hostname", + "quick-error", +] + [[package]] name = "rfd" version = "0.11.4" @@ -4100,11 +4387,12 @@ dependencies = [ [[package]] name = "rsa" -version = "0.6.1" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cf22754c49613d2b3b119f0e5d46e34a2c628a937e3024b8762de4e7d8c710b" +checksum = "6ab43bb47d23c1a631b4b680199a45255dce26fa9ab2fa902581f624ff13e6a8" dependencies = [ "byteorder", + "const-oid", "digest 0.10.7", "num-bigint-dig", "num-integer", @@ -4113,7 +4401,8 @@ dependencies = [ "pkcs1", "pkcs8", "rand_core 0.6.4", - "smallvec", + "signature", + "spki", "subtle", "zeroize", ] @@ -4136,6 +4425,18 @@ dependencies = [ "crossbeam-utils", ] +[[package]] +name = "rustc-demangle" +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" @@ -4147,47 +4448,60 @@ dependencies = [ [[package]] name = "rustix" -version = "0.37.19" +version = "0.37.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acf8729d8542766f1b2cf77eb034d52f40d375bb8b615d0b147089946e16613d" +checksum = "4d69718bf81c6127a49dc64e44a742e8bb9213c0ff8869a22c308f84c1d4ab06" dependencies = [ "bitflags 1.3.2", "errno", "io-lifetimes", "libc", - "linux-raw-sys", + "linux-raw-sys 0.3.8", "windows-sys 0.48.0", ] [[package]] -name = "rustls" -version = "0.20.8" +name = "rustix" +version = "0.38.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fff78fc74d175294f4e83b28343315ffcfb114b156f0185e9741cb5570f50e2f" +checksum = "0a962918ea88d644592894bc6dc55acc6c0956488adcebbfb6e273506b7fd6e5" dependencies = [ - "log", - "ring", - "sct", - "webpki", + "bitflags 2.3.3", + "errno", + "libc", + "linux-raw-sys 0.4.3", + "windows-sys 0.48.0", ] [[package]] name = "rustls" -version = "0.21.1" +version = "0.21.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c911ba11bc8433e811ce56fde130ccf32f5127cab0e0194e9c68c5a5b671791e" +checksum = "79ea77c539259495ce8ca47f53e66ae0330a8819f67e23ac96ca02f50e7b7d36" dependencies = [ "log", "ring", - "rustls-webpki", + "rustls-webpki 0.101.2", "sct", ] +[[package]] +name = "rustls-native-certs" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" +dependencies = [ + "openssl-probe", + "rustls-pemfile", + "schannel", + "security-framework", +] + [[package]] name = "rustls-pemfile" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d194b56d58803a43635bdc398cd17e383d6f71f9182b9a192c127ca42494a59b" +checksum = "2d3987094b1d07b653b7dfdc3f70ce9a1da9c51ac18c1b06b662e4f9a0e9f4b2" dependencies = [ "base64 0.21.2", ] @@ -4202,11 +4516,21 @@ dependencies = [ "untrusted", ] +[[package]] +name = "rustls-webpki" +version = "0.101.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "513722fd73ad80a71f72b61009ea1b584bcfa1483ca93949c8f290298837fa59" +dependencies = [ + "ring", + "untrusted", +] + [[package]] name = "rustversion" -version = "1.0.12" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f3208ce4d8448b3f3e7d168a73f5e0c43a61e32930de3bceeccedb388b6bf06" +checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" [[package]] name = "rusty-fork" @@ -4222,9 +4546,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.13" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" +checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" [[package]] name = "safemem" @@ -4243,11 +4567,11 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.21" +version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "713cfb06c7059f3588fb8044c0fad1d09e3c01d225e25b9220dbfdcf16dbb1b3" +checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88" dependencies = [ - "windows-sys 0.42.0", + "windows-sys 0.48.0", ] [[package]] @@ -4258,9 +4582,9 @@ checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" [[package]] name = "scopeguard" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "sct" @@ -4274,9 +4598,9 @@ dependencies = [ [[package]] name = "security-framework" -version = "2.9.1" +version = "2.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fc758eb7bffce5b308734e9b0c1468893cae9ff70ebf13e7090be8dcbcc83a8" +checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de" dependencies = [ "bitflags 1.3.2", "core-foundation", @@ -4287,9 +4611,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.9.0" +version = "2.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f51d0c0d83bec45f16480d0ce0058397a69e48fcdc52d1dc8855fb68acbd31a7" +checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a" dependencies = [ "core-foundation-sys", "libc", @@ -4317,60 +4641,60 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed" +checksum = "b0293b4b29daaf487284529cc2f5675b8e57c61f70167ba415a463651fd6a918" dependencies = [ "serde", ] [[package]] name = "serde" -version = "1.0.163" +version = "1.0.179" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2113ab51b87a539ae008b5c6c02dc020ffa39afd2d83cffcb3f4eb2722cebec2" +checksum = "0a5bf42b8d227d4abf38a1ddb08602e229108a517cd4e5bb28f9c7eaafdce5c0" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.163" +version = "1.0.179" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c805777e3930c8883389c602315a24224bcc738b63905ef87cd1420353ea93e" +checksum = "741e124f5485c7e60c03b043f79f320bff3527f4bbf12cf3831750dc46a0ec2c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.28", ] [[package]] name = "serde_json" -version = "1.0.96" +version = "1.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "057d394a50403bcac12672b2b18fb387ab6d289d957dab67dd201875391e52f1" +checksum = "076066c5f1078eac5b722a31827a8832fe108bed65dfa75e233c89f8206e976c" dependencies = [ - "itoa 1.0.6", + "itoa 1.0.9", "ryu", "serde", ] [[package]] name = "serde_repr" -version = "0.1.12" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcec881020c684085e55a25f7fd888954d56609ef363479dc5a1305eb0d40cab" +checksum = "8725e1dfadb3a50f7e5ce0b1a540466f6ed3fe7a0fca2ac2b8b831d31316bd00" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.28", ] [[package]] name = "serde_spanned" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93107647184f6027e3b7dcb2e11034cf95ffa1e3a682c67951963ac69c1c007d" +checksum = "96426c9936fd7a0124915f9185ea1d20aa9445cc9821142f0a73bc9207a2e186" dependencies = [ "serde", ] @@ -4382,37 +4706,37 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" dependencies = [ "form_urlencoded", - "itoa 1.0.6", + "itoa 1.0.9", "ryu", "serde", ] [[package]] name = "serde_with" -version = "3.0.0" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f02d8aa6e3c385bf084924f660ce2a3a6bd333ba55b35e8590b321f35d88513" +checksum = "21e47d95bc83ed33b2ecf84f4187ad1ab9685d18ff28db000c99deac8ce180e3" dependencies = [ "base64 0.21.2", "chrono", "hex", - "indexmap", + "indexmap 1.9.3", "serde", "serde_json", "serde_with_macros", - "time 0.3.21", + "time 0.3.24", ] [[package]] name = "serde_with_macros" -version = "3.0.0" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edc7d5d3932fb12ce722ee5e64dd38c504efba37567f0c402f6ca728c3b8b070" +checksum = "ea3cee93715c2e266b9338b7544da68a9f24e227722ba482bd1c024367c77c65" dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.28", ] [[package]] @@ -4473,9 +4797,9 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.6" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" +checksum = "479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8" dependencies = [ "cfg-if", "cpufeatures", @@ -4501,11 +4825,40 @@ dependencies = [ "winapi", ] +[[package]] +name = "signal-hook" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801" +dependencies = [ + "libc", + "signal-hook-registry", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" +dependencies = [ + "libc", +] + +[[package]] +name = "signature" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e1788eed21689f9cf370582dfc467ef36ed9c707f073528ddafa8d83e3b8500" +dependencies = [ + "digest 0.10.7", + "rand_core 0.6.4", +] + [[package]] name = "simd-adler32" -version = "0.3.5" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "238abfbb77c1915110ad968465608b68e869e0772622c9656714e73e5a1a522f" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" [[package]] name = "similar" @@ -4530,9 +4883,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" +checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9" [[package]] name = "socket2" @@ -4541,7 +4894,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" dependencies = [ "libc", - "winapi", + "winapi", +] + +[[package]] +name = "socket2" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2538b18701741680e0322a2302176d3253a35388e2e62f172f64f4f16605f877" +dependencies = [ + "libc", + "windows-sys 0.48.0", ] [[package]] @@ -4589,9 +4952,9 @@ dependencies = [ [[package]] name = "spki" -version = "0.5.4" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d01ac02a6ccf3e07db148d2be087da624fea0221a16152ed01f0496a6b0a27" +checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a" dependencies = [ "base64ct", "der", @@ -4610,104 +4973,204 @@ dependencies = [ [[package]] name = "sqlx" -version = "0.6.3" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8de3b03a925878ed54a954f621e64bf55a3c1bd29652d0d1a17830405350188" +checksum = "8e58421b6bc416714d5115a2ca953718f6c621a51b68e4f4922aea5a4391a721" dependencies = [ "sqlx-core", "sqlx-macros", + "sqlx-mysql", + "sqlx-postgres", + "sqlx-sqlite", ] [[package]] name = "sqlx-core" -version = "0.6.3" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa8241483a83a3f33aa5fff7e7d9def398ff9990b2752b6c6112b83c6d246029" +checksum = "dd4cef4251aabbae751a3710927945901ee1d97ee96d757f6880ebb9a79bfd53" dependencies = [ - "ahash 0.7.6", + "ahash 0.8.3", "atoi", - "base64 0.13.1", - "bitflags 1.3.2", "byteorder", "bytes 1.4.0", "crc", "crossbeam-queue", - "digest 0.10.7", - "dirs", "dotenvy", "either", "event-listener", - "flume", "futures-channel", "futures-core", - "futures-executor", "futures-intrusive", + "futures-io", "futures-util", - "generic-array", "hashlink", "hex", - "hkdf", - "hmac", - "indexmap", - "itoa 1.0.6", - "libc", - "libsqlite3-sys", + "indexmap 2.0.0", "log", - "md-5", "memchr", - "num-bigint", "once_cell", "paste", "percent-encoding", - "rand 0.8.5", - "rsa", - "rustls 0.20.8", + "rustls", "rustls-pemfile", "serde", "serde_json", - "sha1", - "sha2 0.10.6", + "sha2 0.10.7", "smallvec", "sqlformat", - "sqlx-rt", - "stringprep", "thiserror", - "time 0.3.21", + "time 0.3.24", + "tokio", "tokio-stream", + "tracing", "url", - "webpki-roots 0.22.6", - "whoami", + "webpki-roots 0.24.0", ] [[package]] name = "sqlx-macros" -version = "0.6.3" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9966e64ae989e7e575b19d7265cb79d7fc3cbbdf179835cb0d716f294c2049c9" +checksum = "208e3165167afd7f3881b16c1ef3f2af69fa75980897aac8874a0696516d12c2" +dependencies = [ + "proc-macro2", + "quote", + "sqlx-core", + "sqlx-macros-core", + "syn 1.0.109", +] + +[[package]] +name = "sqlx-macros-core" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a4a8336d278c62231d87f24e8a7a74898156e34c1c18942857be2acb29c7dfc" dependencies = [ "dotenvy", "either", - "heck 0.4.1", + "heck", + "hex", "once_cell", "proc-macro2", "quote", + "serde", "serde_json", - "sha2 0.10.6", + "sha2 0.10.7", "sqlx-core", - "sqlx-rt", + "sqlx-mysql", + "sqlx-postgres", + "sqlx-sqlite", "syn 1.0.109", + "tempfile", + "tokio", "url", ] [[package]] -name = "sqlx-rt" -version = "0.6.3" +name = "sqlx-mysql" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ca69bf415b93b60b80dc8fda3cb4ef52b2336614d8da2de5456cc942a110482" +dependencies = [ + "atoi", + "base64 0.21.2", + "bitflags 2.3.3", + "byteorder", + "bytes 1.4.0", + "crc", + "digest 0.10.7", + "dotenvy", + "either", + "futures-channel", + "futures-core", + "futures-io", + "futures-util", + "generic-array", + "hex", + "hkdf", + "hmac", + "itoa 1.0.9", + "log", + "md-5", + "memchr", + "once_cell", + "percent-encoding", + "rand 0.8.5", + "rsa", + "serde", + "sha1", + "sha2 0.10.7", + "smallvec", + "sqlx-core", + "stringprep", + "thiserror", + "time 0.3.24", + "tracing", + "whoami", +] + +[[package]] +name = "sqlx-postgres" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "804d3f245f894e61b1e6263c84b23ca675d96753b5abfd5cc8597d86806e8024" +checksum = "a0db2df1b8731c3651e204629dd55e52adbae0462fa1bdcbed56a2302c18181e" dependencies = [ + "atoi", + "base64 0.21.2", + "bitflags 2.3.3", + "byteorder", + "crc", + "dotenvy", + "etcetera", + "futures-channel", + "futures-core", + "futures-io", + "futures-util", + "hex", + "hkdf", + "hmac", + "home", + "itoa 1.0.9", + "log", + "md-5", + "memchr", "once_cell", - "tokio", - "tokio-rustls 0.23.4", + "rand 0.8.5", + "serde", + "serde_json", + "sha1", + "sha2 0.10.7", + "smallvec", + "sqlx-core", + "stringprep", + "thiserror", + "time 0.3.24", + "tracing", + "whoami", +] + +[[package]] +name = "sqlx-sqlite" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be4c21bf34c7cae5b283efb3ac1bcc7670df7561124dc2f8bdc0b59be40f79a2" +dependencies = [ + "atoi", + "flume", + "futures-channel", + "futures-core", + "futures-executor", + "futures-intrusive", + "futures-util", + "libsqlite3-sys", + "log", + "percent-encoding", + "serde", + "sqlx-core", + "time 0.3.24", + "tracing", + "url", ] [[package]] @@ -4745,7 +5208,7 @@ checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" dependencies = [ "new_debug_unreachable", "once_cell", - "parking_lot 0.12.1", + "parking_lot", "phf_shared 0.10.0", "precomputed-hash", "serde", @@ -4765,9 +5228,9 @@ dependencies = [ [[package]] name = "stringprep" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ee348cb74b87454fff4b551cbf727025810a004f88aeacae7f85b87f4e9a1c1" +checksum = "db3737bde7edce97102e0e2b15365bf7a20bfdb5f60f4f9e8d7004258a51a8da" dependencies = [ "unicode-bidi", "unicode-normalization", @@ -4837,27 +5300,6 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" -[[package]] -name = "strum" -version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7ac893c7d471c8a21f31cfe213ec4f6d9afeed25537c772e08ef3f005f8729e" -dependencies = [ - "strum_macros", -] - -[[package]] -name = "strum_macros" -version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "339f799d8b549e3744c7ac7feb216383e4005d94bdb22561b3ab8f3b808ae9fb" -dependencies = [ - "heck 0.3.3", - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "subtle" version = "2.5.0" @@ -4888,9 +5330,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.18" +version = "2.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32d41677bcbe24c20c52e7c70b0d8db04134c5d1066bf98662e2871ad200ea3e" +checksum = "04361975b3f5e348b2189d8dc55bc942f278b2d482a6a0365de5bdd62d351567" dependencies = [ "proc-macro2", "quote", @@ -4909,12 +5351,12 @@ dependencies = [ [[package]] name = "system-deps" -version = "6.1.0" +version = "6.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5fa6fb9ee296c0dc2df41a656ca7948546d061958115ddb0bcaae43ad0d17d2" +checksum = "30c2de8a4d8f4b823d634affc9cd2a74ec98c53a756f317e529a48046cbf71f3" dependencies = [ "cfg-expr", - "heck 0.4.1", + "heck", "pkg-config", "toml", "version-compare", @@ -4956,7 +5398,7 @@ dependencies = [ "ndk-sys", "objc", "once_cell", - "parking_lot 0.12.1", + "parking_lot", "png", "raw-window-handle", "scopeguard", @@ -4982,9 +5424,9 @@ dependencies = [ [[package]] name = "tar" -version = "0.4.38" +version = "0.4.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b55807c0344e1e6c04d7c965f5289c39a8d94ae23ed5c0b57aabac549f871c6" +checksum = "ec96d2ffad078296368d46ff1cb309be1c23c513b4ab0e22a45de0185275ac96" dependencies = [ "filetime", "libc", @@ -4993,9 +5435,9 @@ dependencies = [ [[package]] name = "target-lexicon" -version = "0.12.7" +version = "0.12.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd1ba337640d60c3e96bc6f0638a939b9c9a7f2c316a1598c279828b3d1dc8c5" +checksum = "1d2faeef5759ab89935255b1a4cd98e0baf99d1085e37d36599c625dac49ae8e" [[package]] name = "tauri" @@ -5012,7 +5454,7 @@ dependencies = [ "glib", "glob", "gtk", - "heck 0.4.1", + "heck", "http", "ico 0.2.0", "infer 0.9.0", @@ -5056,7 +5498,7 @@ checksum = "a52990870fd043f1d3bd6719ae713ef2e0c50431334d7249f6ae8509d1b8c326" dependencies = [ "anyhow", "cargo_toml", - "heck 0.4.1", + "heck", "json-patch", "quote", "semver", @@ -5086,10 +5528,10 @@ dependencies = [ "semver", "serde", "serde_json", - "sha2 0.10.6", + "sha2 0.10.7", "tauri-utils", "thiserror", - "time 0.3.21", + "time 0.3.24", "url", "uuid", "walkdir", @@ -5101,7 +5543,7 @@ version = "2.0.0-alpha.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22752425c6dd6f3a058f376db7371f1d5bac250e340d40ba6c97ecf7182eef29" dependencies = [ - "heck 0.4.1", + "heck", "proc-macro2", "quote", "syn 1.0.109", @@ -5129,7 +5571,7 @@ dependencies = [ "rusty-fork", "serde", "serde_json", - "sha2 0.10.6", + "sha2 0.10.7", "tauri", "thiserror", "u2f", @@ -5218,17 +5660,16 @@ dependencies = [ name = "tauri-plugin-http" version = "2.0.0-alpha.0" dependencies = [ - "bytes 1.4.0", + "data-url", "glob", "http", - "rand 0.8.5", "reqwest", "serde", "serde_json", - "serde_repr", "tauri", "tauri-plugin-fs", "thiserror", + "url", ] [[package]] @@ -5260,7 +5701,7 @@ dependencies = [ "swift-rs", "tauri", "tauri-build", - "time 0.3.21", + "time 0.3.24", ] [[package]] @@ -5276,7 +5717,7 @@ dependencies = [ "tauri", "tauri-build", "thiserror", - "time 0.3.21", + "time 0.3.24", "url", "win7-notifications", ] @@ -5300,7 +5741,7 @@ dependencies = [ name = "tauri-plugin-persisted-scope" version = "2.0.0-alpha.0" dependencies = [ - "aho-corasick 1.0.1", + "aho-corasick", "bincode", "log", "serde", @@ -5369,7 +5810,7 @@ dependencies = [ "sqlx", "tauri", "thiserror", - "time 0.3.21", + "time 0.3.24", "tokio", ] @@ -5389,7 +5830,7 @@ name = "tauri-plugin-stronghold" version = "2.0.0-alpha.0" dependencies = [ "hex", - "iota-crypto 0.20.1", + "iota-crypto 0.23.0", "iota_stronghold", "log", "rand 0.8.5", @@ -5422,7 +5863,7 @@ dependencies = [ "tauri", "tempfile", "thiserror", - "time 0.3.21", + "time 0.3.24", "tokio", "tokio-test", "url", @@ -5474,7 +5915,7 @@ name = "tauri-plugin-window-state" version = "2.0.0-alpha.0" dependencies = [ "bincode", - "bitflags 2.3.1", + "bitflags 2.3.3", "log", "serde", "serde_json", @@ -5534,9 +5975,9 @@ dependencies = [ "brotli", "ctor", "dunce", - "getrandom 0.2.9", + "getrandom 0.2.10", "glob", - "heck 0.4.1", + "heck", "html5ever", "infer 0.12.0", "json-patch", @@ -5568,26 +6009,25 @@ dependencies = [ [[package]] name = "tauri-winrt-notification" -version = "0.1.0" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c58de036c4d2e20717024de2a3c4bf56c301f07b21bc8ef9b57189fce06f1f3b" +checksum = "4f5bff1d532fead7c43324a0fa33643b8621a47ce2944a633be4cb6c0240898f" dependencies = [ "quick-xml 0.23.1", - "strum", "windows 0.39.0", ] [[package]] name = "tempfile" -version = "3.5.0" +version = "3.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9fbec84f381d5795b08656e4912bec604d162bff9291d6189a78f4c8ab87998" +checksum = "5486094ee78b2e5038a6382ed7645bc084dc2ec433426ca4c3cb61e2007b8998" dependencies = [ "cfg-if", - "fastrand", + "fastrand 2.0.0", "redox_syscall 0.3.5", - "rustix", - "windows-sys 0.45.0", + "rustix 0.38.4", + "windows-sys 0.48.0", ] [[package]] @@ -5609,22 +6049,22 @@ checksum = "8eaa81235c7058867fa8c0e7314f33dcce9c215f535d1913822a2b3f5e289f3c" [[package]] name = "thiserror" -version = "1.0.40" +version = "1.0.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac" +checksum = "611040a08a0439f8248d1990b111c95baa9c704c805fa1f62104b39655fd7f90" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.40" +version = "1.0.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" +checksum = "090198534930841fab3a5d1bb637cde49e339654e606195f8d9c76eeb081dc96" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.28", ] [[package]] @@ -5661,11 +6101,12 @@ dependencies = [ [[package]] name = "time" -version = "0.3.21" +version = "0.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f3403384eaacbca9923fa06940178ac13e4edb725486d70e8e15881d0c836cc" +checksum = "b79eabcd964882a646b3584543ccabeae7869e9ac32a46f6f22b7a5bd405308b" dependencies = [ - "itoa 1.0.6", + "deranged", + "itoa 1.0.9", "libc", "num_threads", "serde", @@ -5681,9 +6122,9 @@ checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb" [[package]] name = "time-macros" -version = "0.2.9" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "372950940a5f07bf38dbe211d7283c9e6d7327df53794992d293e534c733d09b" +checksum = "eb71511c991639bb078fd5bf97757e03914361c48100d52878b8e52b46fb92cd" dependencies = [ "time-core", ] @@ -5697,7 +6138,7 @@ dependencies = [ "ascii", "chunked_transfer", "log", - "time 0.3.21", + "time 0.3.24", "url", ] @@ -5730,17 +6171,18 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.28.1" +version = "1.29.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0aa32867d44e6f2ce3385e89dceb990188b8bb0fb25b0cf576647a6f98ac5105" +checksum = "532826ff75199d5833b9d2c5fe410f29235e25704ee5f0ef599fb51c21f4a4da" dependencies = [ "autocfg", + "backtrace", "bytes 1.4.0", "libc", "mio", "num_cpus", "pin-project-lite", - "socket2", + "socket2 0.4.9", "windows-sys 0.48.0", ] @@ -5756,22 +6198,23 @@ dependencies = [ [[package]] name = "tokio-rustls" -version = "0.23.4" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59" +checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" dependencies = [ - "rustls 0.20.8", + "rustls", "tokio", - "webpki", ] [[package]] -name = "tokio-rustls" -version = "0.24.0" +name = "tokio-socks" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0d409377ff5b1e3ca6437aa86c1eb7d40c134bfec254e44c830defa92669db5" +checksum = "51165dfa029d2a65969413a6cc96f354b86b464498702f174a4efa13608fd8c0" dependencies = [ - "rustls 0.21.1", + "either", + "futures-util", + "thiserror", "tokio", ] @@ -5808,12 +6251,12 @@ dependencies = [ "futures-util", "log", "native-tls", - "rustls 0.21.1", + "rustls", "tokio", "tokio-native-tls", - "tokio-rustls 0.24.0", + "tokio-rustls", "tungstenite", - "webpki-roots 0.23.0", + "webpki-roots 0.23.1", ] [[package]] @@ -5832,9 +6275,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.7.4" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6135d499e69981f9ff0ef2167955a5333c35e36f6937d382974566b3d5b94ec" +checksum = "c17e963a819c331dcacd7ab957d80bc2b9a9c1e71c804826d2f283dd65306542" dependencies = [ "serde", "serde_spanned", @@ -5844,20 +6287,20 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a76a9312f5ba4c2dec6b9161fdf25d87ad8a09256ccea5a556fef03c706a10f" +checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" dependencies = [ "serde", ] [[package]] name = "toml_edit" -version = "0.19.10" +version = "0.19.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2380d56e8670370eee6566b0bfd4265f65b3f432e8c6d85623f728d4fa31f739" +checksum = "f8123f27e969974a3dfba720fdb560be359f57b44302d280ba72e76a74480e8a" dependencies = [ - "indexmap", + "indexmap 2.0.0", "serde", "serde_spanned", "toml_datetime", @@ -5877,6 +6320,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" dependencies = [ "cfg-if", + "log", "pin-project-lite", "tracing-attributes", "tracing-core", @@ -5884,13 +6328,13 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.24" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f57e3ca2a01450b1a921183a9c9cbfda207fd822cef4ccb00a65402cbba7a74" +checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.28", ] [[package]] @@ -5941,6 +6385,51 @@ dependencies = [ "serde_json", ] +[[package]] +name = "trust-dns-proto" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f7f83d1e4a0e4358ac54c5c3681e5d7da5efc5a7a632c90bb6d6669ddd9bc26" +dependencies = [ + "async-trait", + "cfg-if", + "data-encoding", + "enum-as-inner", + "futures-channel", + "futures-io", + "futures-util", + "idna 0.2.3", + "ipnet", + "lazy_static", + "rand 0.8.5", + "smallvec", + "thiserror", + "tinyvec", + "tokio", + "tracing", + "url", +] + +[[package]] +name = "trust-dns-resolver" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aff21aa4dcefb0a1afbfac26deb0adc93888c7d295fb63ab273ef276ba2b7cfe" +dependencies = [ + "cfg-if", + "futures-util", + "ipconfig", + "lazy_static", + "lru-cache", + "parking_lot", + "resolv-conf", + "smallvec", + "thiserror", + "tokio", + "tracing", + "trust-dns-proto", +] + [[package]] name = "try-lock" version = "0.2.4" @@ -5961,7 +6450,7 @@ dependencies = [ "log", "native-tls", "rand 0.8.5", - "rustls 0.21.1", + "rustls", "sha1", "thiserror", "url", @@ -6019,9 +6508,9 @@ checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" [[package]] name = "unicode-ident" -version = "1.0.9" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15811caf2415fb889178633e7724bad2509101cde276048e013b9def5e51fa0" +checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" [[package]] name = "unicode-normalization" @@ -6072,12 +6561,12 @@ checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" [[package]] name = "url" -version = "2.3.1" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643" +checksum = "50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb" dependencies = [ "form_urlencoded", - "idna", + "idna 0.4.0", "percent-encoding", "serde", ] @@ -6102,11 +6591,11 @@ checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" [[package]] name = "uuid" -version = "1.3.3" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "345444e32442451b267fc254ae85a209c64be56d2890e601a0c37ff0c3c5ecd2" +checksum = "79daa5ed5740825c40b389c5e50312b9c86df53fccd33f281df655642b43869d" dependencies = [ - "getrandom 0.2.9", + "getrandom 0.2.10", ] [[package]] @@ -6117,13 +6606,9 @@ checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" [[package]] name = "value-bag" -version = "1.0.0-alpha.9" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2209b78d1249f7e6f3293657c9779fe31ced465df091bbd433a1cf88e916ec55" -dependencies = [ - "ctor", - "version_check", -] +checksum = "d92ccd67fb88503048c01b59152a04effd0782d035a83a6d256ce6085f08f4a3" [[package]] name = "vcpkg" @@ -6190,11 +6675,10 @@ dependencies = [ [[package]] name = "want" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" dependencies = [ - "log", "try-lock", ] @@ -6218,9 +6702,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.86" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bba0e8cb82ba49ff4e229459ff22a191bbe9a1cb3a341610c9c33efc27ddf73" +checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -6228,24 +6712,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.86" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19b04bc93f9d6bdee709f6bd2118f57dd6679cf1176a1af464fca3ab0d66d8fb" +checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.28", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.36" +version = "0.4.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d1985d03709c53167ce907ff394f5316aa22cb4e12761295c5dc57dacb6297e" +checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" dependencies = [ "cfg-if", "js-sys", @@ -6255,9 +6739,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.86" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14d6b024f1a526bb0234f52840389927257beb670610081360e5a03c5df9c258" +checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -6265,22 +6749,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.86" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e128beba882dd1eb6200e1dc92ae6c5dbaa4311aa7bb211ca035779e5efc39f8" +checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.28", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.86" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed9d5b4305409d1fc9482fee2d7f9bcbf24b3972bf59817ef757e23982242a93" +checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" [[package]] name = "wasm-streams" @@ -6297,9 +6781,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.63" +version = "0.3.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bdd9ef4e984da1187bf8110c5cf5b845fbc87a23602cdf912386a76fcd3a7c2" +checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" dependencies = [ "js-sys", "wasm-bindgen", @@ -6370,11 +6854,20 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.23.0" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b03058f88386e5ff5310d9111d53f48b17d732b401aeb83a8d5190f2ac459338" +dependencies = [ + "rustls-webpki 0.100.1", +] + +[[package]] +name = "webpki-roots" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa54963694b65584e170cf5dc46aeb4dcaa5584e652ff5f3952e56d66aff0125" +checksum = "b291546d5d9d1eab74f069c77749f2cb8504a12caa20f0f2de93ddbf6f411888" dependencies = [ - "rustls-webpki", + "rustls-webpki 0.101.2", ] [[package]] @@ -6423,13 +6916,15 @@ checksum = "9193164d4de03a926d909d3bc7c30543cecb35400c02114792c2cae20d5e2dbb" [[package]] name = "whoami" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c70234412ca409cc04e864e89523cb0fc37f5e1344ebed5a3ebf4192b6b9f68" -dependencies = [ - "wasm-bindgen", - "web-sys", -] +checksum = "22fc3756b8a9133049b26c7f61ab35416c130e8c09b660f5b3958b446f52cc50" + +[[package]] +name = "widestring" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "653f141f39ec16bba3c5abe400a0c60da7468261cc2cbf36805022876bc721a8" [[package]] name = "win7-notifications" @@ -6536,7 +7031,7 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" dependencies = [ - "windows-targets 0.48.0", + "windows-targets 0.48.1", ] [[package]] @@ -6620,7 +7115,7 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ - "windows-targets 0.48.0", + "windows-targets 0.48.1", ] [[package]] @@ -6640,9 +7135,9 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.48.0" +version = "0.48.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" +checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f" dependencies = [ "windows_aarch64_gnullvm 0.48.0", "windows_aarch64_msvc 0.48.0", @@ -6805,9 +7300,9 @@ checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" [[package]] name = "winnow" -version = "0.4.6" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61de7bac303dc551fe038e2b3cef0f571087a47571ea6e79a87692ac99b99699" +checksum = "8bd122eb777186e60c3fdf765a58ac76e41c582f1f535fbf3314434c6b58f3f7" dependencies = [ "memchr", ] @@ -6831,6 +7326,16 @@ dependencies = [ "winapi", ] +[[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 = "wry" version = "0.28.3" @@ -6858,7 +7363,7 @@ dependencies = [ "once_cell", "serde", "serde_json", - "sha2 0.10.6", + "sha2 0.10.7", "soup3", "tao", "thiserror", @@ -6945,18 +7450,20 @@ dependencies = [ [[package]] name = "zbus" -version = "3.12.0" +version = "3.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29242fa5ec5693629ae74d6eb1f69622a9511f600986d6d9779bccf36ac316e3" +checksum = "31de390a2d872e4cd04edd71b425e29853f786dc99317ed72d73d6fcf5ebb948" dependencies = [ "async-broadcast", "async-executor", "async-fs", "async-io", "async-lock", + "async-process", "async-recursion", "async-task", "async-trait", + "blocking", "byteorder", "derivative", "enumflags2", @@ -6984,9 +7491,9 @@ dependencies = [ [[package]] name = "zbus_macros" -version = "3.12.0" +version = "3.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "537793e26e9af85f774801dc52c6f6292352b2b517c5cf0449ffd3735732a53a" +checksum = "41d1794a946878c0e807f55a397187c11fc7a038ba5d868e7db4f3bd7760bc9d" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -6998,9 +7505,9 @@ dependencies = [ [[package]] name = "zbus_names" -version = "2.5.1" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82441e6033be0a741157a72951a3e4957d519698f3a824439cc131c5ba77ac2a" +checksum = "fb80bb776dbda6e23d705cf0123c3b95df99c4ebeaec6c2599d4a5419902b4a9" dependencies = [ "serde", "static_assertions", @@ -7024,7 +7531,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.28", ] [[package]] @@ -7040,9 +7547,9 @@ dependencies = [ [[package]] name = "zvariant" -version = "3.13.0" +version = "3.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cb36cd95352132911c9c99fdcc1635de5c2c139bd34cbcf6dfb8350ee8ff6a7" +checksum = "44b291bee0d960c53170780af148dca5fa260a63cdd24f1962fa82e03e53338c" dependencies = [ "byteorder", "enumflags2", @@ -7054,9 +7561,9 @@ dependencies = [ [[package]] name = "zvariant_derive" -version = "3.13.0" +version = "3.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b34951e1ac64f3a1443fe7181256b9ed6a811a1631917566c3d5ca718d8cf33" +checksum = "934d7a7dfc310d6ee06c87ffe88ef4eca7d3e37bb251dece2ef93da8f17d8ecd" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -7067,9 +7574,9 @@ dependencies = [ [[package]] name = "zvariant_utils" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53b22993dbc4d128a17a3b6c92f1c63872dd67198537ee728d8b5d7c40640a8b" +checksum = "7234f0d811589db492d16893e3f21e8e2fd282e6d01b0cddee310322062cc200" dependencies = [ "proc-macro2", "quote", diff --git a/examples/api/index.html b/examples/api/index.html index 81b6f92e..919cfd2a 100644 --- a/examples/api/index.html +++ b/examples/api/index.html @@ -1,4 +1,4 @@ - + diff --git a/examples/api/isolation-dist/index.html b/examples/api/isolation-dist/index.html index 27c8d3f3..a97caa83 100644 --- a/examples/api/isolation-dist/index.html +++ b/examples/api/isolation-dist/index.html @@ -1,4 +1,4 @@ - + diff --git a/examples/api/src-tauri/Cargo.toml b/examples/api/src-tauri/Cargo.toml index 2431dc2f..b1f1b09d 100644 --- a/examples/api/src-tauri/Cargo.toml +++ b/examples/api/src-tauri/Cargo.toml @@ -4,7 +4,7 @@ publish = false version = "2.0.0-alpha.1" description = "An example Tauri Application showcasing the api" edition = "2021" -rust-version = "1.65" +rust-version = { workspace = true } license = "Apache-2.0 OR MIT" [lib] diff --git a/examples/api/src/views/Http.svelte b/examples/api/src/views/Http.svelte index 5a1d3032..842816b8 100644 --- a/examples/api/src/views/Http.svelte +++ b/examples/api/src/views/Http.svelte @@ -1,5 +1,5 @@ @@ -87,11 +96,6 @@
- -


diff --git a/package.json b/package.json index 13567e7b..7cdb65ad 100644 --- a/package.json +++ b/package.json @@ -10,24 +10,28 @@ "format-check": "prettier --check ." }, "devDependencies": { - "@rollup/plugin-node-resolve": "^15.1.0", - "@rollup/plugin-terser": "^0.4.3", - "@rollup/plugin-typescript": "^11.1.1", - "@typescript-eslint/eslint-plugin": "^5.59.11", - "@typescript-eslint/parser": "^5.59.11", + "@rollup/plugin-node-resolve": "15.1.0", + "@rollup/plugin-terser": "0.4.3", + "@rollup/plugin-typescript": "11.1.2", + "@typescript-eslint/eslint-plugin": "6.1.0", + "@typescript-eslint/parser": "6.1.0", "covector": "^0.9.0", - "eslint": "^8.43.0", - "eslint-config-prettier": "^8.8.0", - "eslint-config-standard-with-typescript": "^35.0.0", - "eslint-plugin-import": "^2.27.5", - "eslint-plugin-n": "^16.0.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-security": "^1.7.1", - "prettier": "^2.8.8", - "rollup": "^3.25.1", - "typescript": "^5.1.3" + "eslint": "8.45.0", + "eslint-config-prettier": "8.8.0", + "eslint-config-standard-with-typescript": "36.1.0", + "eslint-plugin-import": "2.27.5", + "eslint-plugin-n": "16.0.1", + "eslint-plugin-promise": "6.1.1", + "eslint-plugin-security": "1.7.1", + "prettier": "3.0.0", + "rollup": "3.26.3", + "typescript": "5.1.6" + }, + "resolutions": { + "semver": ">=7.5.2", + "optionator": ">=0.9.3" }, "engines": { - "pnpm": ">=7.33.0" + "pnpm": ">=7.33.1" } } diff --git a/plugins/app/README.md b/plugins/app/README.md index 34d44e56..d79c52e3 100644 --- a/plugins/app/README.md +++ b/plugins/app/README.md @@ -1,4 +1,4 @@ -![plugin-app](banner.png) +![plugin-app](https://github.com/tauri-apps/plugins-workspace/raw/v2/plugins/app/banner.png) This plugin provides APIs to read application metadata and macOS app visibility functions. diff --git a/plugins/app/rollup.config.mjs b/plugins/app/rollup.config.mjs index 6555e98b..99a3dd31 100644 --- a/plugins/app/rollup.config.mjs +++ b/plugins/app/rollup.config.mjs @@ -5,7 +5,7 @@ import { createConfig } from "../../shared/rollup.config.mjs"; export default createConfig({ input: "guest-js/index.ts", pkg: JSON.parse( - readFileSync(new URL("./package.json", import.meta.url), "utf8") + readFileSync(new URL("./package.json", import.meta.url), "utf8"), ), external: [/^@tauri-apps\/api/], }); diff --git a/plugins/app/src/lib.rs b/plugins/app/src/lib.rs index aa6fb802..fbfd27d5 100644 --- a/plugins/app/src/lib.rs +++ b/plugins/app/src/lib.rs @@ -2,6 +2,15 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: MIT +//! [![](https://github.com/tauri-apps/plugins-workspace/raw/v2/plugins/app/banner.png)](https://github.com/tauri-apps/plugins-workspace/tree/v2/plugins/app) +//! +//! This plugin provides APIs to read application metadata and macOS app visibility functions. + +#![doc( + html_logo_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png", + html_favicon_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png" +)] + use tauri::{ plugin::{Builder, TauriPlugin}, Runtime, diff --git a/plugins/authenticator/README.md b/plugins/authenticator/README.md index bcdedeab..b24f4efa 100644 --- a/plugins/authenticator/README.md +++ b/plugins/authenticator/README.md @@ -1,4 +1,4 @@ -![plugin-authenticator](banner.png) +![plugin-authenticator](https://github.com/tauri-apps/plugins-workspace/raw/v2/plugins/authenticator/banner.png) Use hardware security-keys in your Tauri App. @@ -93,7 +93,7 @@ const r2 = await auth.verifyRegistration( challenge, app, registerResult.registerData, - registerResult.clientData + registerResult.clientData, ); const j2 = JSON.parse(r2); @@ -108,7 +108,7 @@ const counter = await auth.verifySignature( signData.signData, clientData, keyHandle, - pubkey + pubkey, ); if (counter && counter > 0) { diff --git a/plugins/authenticator/guest-js/index.ts b/plugins/authenticator/guest-js/index.ts index c7bb51a1..f4b3193b 100644 --- a/plugins/authenticator/guest-js/index.ts +++ b/plugins/authenticator/guest-js/index.ts @@ -25,7 +25,7 @@ export class Authenticator { challenge: string, application: string, registerData: string, - clientData: string + clientData: string, ): Promise { return await window.__TAURI_INVOKE__( "plugin:authenticator|verify_registration", @@ -34,14 +34,14 @@ export class Authenticator { application, registerData, clientData, - } + }, ); } async sign( challenge: string, application: string, - keyHandle: string + keyHandle: string, ): Promise { return await window.__TAURI_INVOKE__("plugin:authenticator|sign", { timeout: 10000, @@ -57,7 +57,7 @@ export class Authenticator { signData: string, clientData: string, keyHandle: string, - pubkey: string + pubkey: string, ): Promise { return await window.__TAURI_INVOKE__( "plugin:authenticator|verify_signature", @@ -68,7 +68,7 @@ export class Authenticator { clientData, keyHandle, pubkey, - } + }, ); } } diff --git a/plugins/authenticator/package.json b/plugins/authenticator/package.json index 2a487b27..ff353189 100644 --- a/plugins/authenticator/package.json +++ b/plugins/authenticator/package.json @@ -25,7 +25,7 @@ "LICENSE" ], "devDependencies": { - "tslib": "^2.5.0" + "tslib": "2.6.0" }, "dependencies": { "@tauri-apps/api": "2.0.0-alpha.5" diff --git a/plugins/authenticator/rollup.config.mjs b/plugins/authenticator/rollup.config.mjs index 6555e98b..99a3dd31 100644 --- a/plugins/authenticator/rollup.config.mjs +++ b/plugins/authenticator/rollup.config.mjs @@ -5,7 +5,7 @@ import { createConfig } from "../../shared/rollup.config.mjs"; export default createConfig({ input: "guest-js/index.ts", pkg: JSON.parse( - readFileSync(new URL("./package.json", import.meta.url), "utf8") + readFileSync(new URL("./package.json", import.meta.url), "utf8"), ), external: [/^@tauri-apps\/api/], }); diff --git a/plugins/authenticator/src/lib.rs b/plugins/authenticator/src/lib.rs index 9e6785d0..92fef471 100644 --- a/plugins/authenticator/src/lib.rs +++ b/plugins/authenticator/src/lib.rs @@ -2,6 +2,16 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: MIT +//! [![](https://github.com/tauri-apps/plugins-workspace/raw/v2/plugins/authenticator/banner.png)](https://github.com/tauri-apps/plugins-workspace/tree/v2/plugins/authenticator) +//! +//! Use hardware security-keys in your Tauri App. +//! +//! - Supported platforms: Windows, Linux, FreeBSD, NetBSD, OpenBSD, and macOS. + +#![doc( + html_logo_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png", + html_favicon_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png" +)] #![cfg(not(any(target_os = "android", target_os = "ios")))] mod auth; diff --git a/plugins/autostart/README.md b/plugins/autostart/README.md index f14fd2c2..3df21d41 100644 --- a/plugins/autostart/README.md +++ b/plugins/autostart/README.md @@ -1,4 +1,4 @@ -![plugin-autostart](banner.png) +![plugin-autostart](https://github.com/tauri-apps/plugins-workspace/raw/v2/plugins/autostart/banner.png) Automatically launch your application at startup. Supports Windows, Mac (via AppleScript or Launch Agent), and Linux. diff --git a/plugins/autostart/package.json b/plugins/autostart/package.json index 774ce298..96ee8030 100644 --- a/plugins/autostart/package.json +++ b/plugins/autostart/package.json @@ -24,7 +24,7 @@ "LICENSE" ], "devDependencies": { - "tslib": "^2.5.0" + "tslib": "2.6.0" }, "dependencies": { "@tauri-apps/api": "2.0.0-alpha.5" diff --git a/plugins/autostart/rollup.config.mjs b/plugins/autostart/rollup.config.mjs index 6555e98b..99a3dd31 100644 --- a/plugins/autostart/rollup.config.mjs +++ b/plugins/autostart/rollup.config.mjs @@ -5,7 +5,7 @@ import { createConfig } from "../../shared/rollup.config.mjs"; export default createConfig({ input: "guest-js/index.ts", pkg: JSON.parse( - readFileSync(new URL("./package.json", import.meta.url), "utf8") + readFileSync(new URL("./package.json", import.meta.url), "utf8"), ), external: [/^@tauri-apps\/api/], }); diff --git a/plugins/autostart/src/lib.rs b/plugins/autostart/src/lib.rs index 91c6e4ec..b4338208 100644 --- a/plugins/autostart/src/lib.rs +++ b/plugins/autostart/src/lib.rs @@ -2,6 +2,14 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: MIT +//! [![](https://github.com/tauri-apps/plugins-workspace/raw/v2/plugins/autostart/banner.png)](https://github.com/tauri-apps/plugins-workspace/tree/v2/plugins/autostart) +//! +//! Automatically launch your application at startup. Supports Windows, Mac (via AppleScript or Launch Agent), and Linux. + +#![doc( + html_logo_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png", + html_favicon_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png" +)] #![cfg(not(any(target_os = "android", target_os = "ios")))] use auto_launch::{AutoLaunch, AutoLaunchBuilder}; diff --git a/plugins/cli/README.md b/plugins/cli/README.md index c0bd1ae4..2a1ebe3a 100644 --- a/plugins/cli/README.md +++ b/plugins/cli/README.md @@ -1,4 +1,4 @@ -![plugin-cli](banner.png) +![plugin-cli](https://github.com/tauri-apps/plugins-workspace/raw/v2/plugins/cli/banner.png) Parse arguments from your Command Line Interface. diff --git a/plugins/cli/rollup.config.mjs b/plugins/cli/rollup.config.mjs index 6555e98b..99a3dd31 100644 --- a/plugins/cli/rollup.config.mjs +++ b/plugins/cli/rollup.config.mjs @@ -5,7 +5,7 @@ import { createConfig } from "../../shared/rollup.config.mjs"; export default createConfig({ input: "guest-js/index.ts", pkg: JSON.parse( - readFileSync(new URL("./package.json", import.meta.url), "utf8") + readFileSync(new URL("./package.json", import.meta.url), "utf8"), ), external: [/^@tauri-apps\/api/], }); diff --git a/plugins/cli/src/lib.rs b/plugins/cli/src/lib.rs index 096b62a2..c666874c 100644 --- a/plugins/cli/src/lib.rs +++ b/plugins/cli/src/lib.rs @@ -2,6 +2,17 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: MIT +//! [![](https://github.com/tauri-apps/plugins-workspace/raw/v2/plugins/cli/banner.png)](https://github.com/tauri-apps/plugins-workspace/tree/v2/plugins/cli) +//! +//! Parse arguments from your Command Line Interface. +//! +//! - Supported platforms: Windows, Linux and macOS. + +#![doc( + html_logo_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png", + html_favicon_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png" +)] + use tauri::{ plugin::{Builder, PluginApi, TauriPlugin}, AppHandle, Manager, Runtime, State, diff --git a/plugins/clipboard-manager/README.md b/plugins/clipboard-manager/README.md index 3bdc6f73..1e7db7a1 100644 --- a/plugins/clipboard-manager/README.md +++ b/plugins/clipboard-manager/README.md @@ -1,4 +1,4 @@ -![plugin-clipboard-manager](banner.png) +![plugin-clipboard-manager](https://github.com/tauri-apps/plugins-workspace/raw/v2/plugins/clipboard-manager/banner.png) Read and write to the system clipboard. diff --git a/plugins/clipboard-manager/guest-js/index.ts b/plugins/clipboard-manager/guest-js/index.ts index bd68d724..fa1e611c 100644 --- a/plugins/clipboard-manager/guest-js/index.ts +++ b/plugins/clipboard-manager/guest-js/index.ts @@ -36,7 +36,7 @@ type ClipResponse = Clip<"PlainText", string>; */ async function writeText( text: string, - opts?: { label?: string } + opts?: { label?: string }, ): Promise { return window.__TAURI_INVOKE__("plugin:clipboard|write", { data: { @@ -60,7 +60,7 @@ async function writeText( */ async function readText(): Promise { const kind: ClipResponse = await window.__TAURI_INVOKE__( - "plugin:clipboard|read" + "plugin:clipboard|read", ); return kind.options; } diff --git a/plugins/clipboard-manager/rollup.config.mjs b/plugins/clipboard-manager/rollup.config.mjs index 6555e98b..99a3dd31 100644 --- a/plugins/clipboard-manager/rollup.config.mjs +++ b/plugins/clipboard-manager/rollup.config.mjs @@ -5,7 +5,7 @@ import { createConfig } from "../../shared/rollup.config.mjs"; export default createConfig({ input: "guest-js/index.ts", pkg: JSON.parse( - readFileSync(new URL("./package.json", import.meta.url), "utf8") + readFileSync(new URL("./package.json", import.meta.url), "utf8"), ), external: [/^@tauri-apps\/api/], }); diff --git a/plugins/clipboard-manager/src/lib.rs b/plugins/clipboard-manager/src/lib.rs index 7fc05348..d4ccdb0a 100644 --- a/plugins/clipboard-manager/src/lib.rs +++ b/plugins/clipboard-manager/src/lib.rs @@ -2,6 +2,15 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: MIT +//! [![](https://github.com/tauri-apps/plugins-workspace/raw/v2/plugins/clipboard-manager/banner.png)](https://github.com/tauri-apps/plugins-workspace/tree/v2/plugins/clipboard-manager) +//! +//! Read and write to the system clipboard. + +#![doc( + html_logo_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png", + html_favicon_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png" +)] + use tauri::{ plugin::{Builder, TauriPlugin}, Manager, Runtime, diff --git a/plugins/dialog/README.md b/plugins/dialog/README.md index 2c5638fc..9bd8a212 100644 --- a/plugins/dialog/README.md +++ b/plugins/dialog/README.md @@ -1,4 +1,4 @@ -![plugin-dialog](banner.png) +![plugin-dialog](https://github.com/tauri-apps/plugins-workspace/raw/v2/plugins/dialog/banner.png) Native system dialogs for opening and saving files along with message dialogs. diff --git a/plugins/dialog/guest-js/index.ts b/plugins/dialog/guest-js/index.ts index de74217f..c0c34dfb 100644 --- a/plugins/dialog/guest-js/index.ts +++ b/plugins/dialog/guest-js/index.ts @@ -103,16 +103,16 @@ interface ConfirmDialogOptions { } async function open( - options?: OpenDialogOptions & { multiple?: false; directory?: false } + options?: OpenDialogOptions & { multiple?: false; directory?: false }, ): Promise; async function open( - options?: OpenDialogOptions & { multiple?: true; directory?: false } + options?: OpenDialogOptions & { multiple?: true; directory?: false }, ): Promise; async function open( - options?: OpenDialogOptions & { multiple?: false; directory?: true } + options?: OpenDialogOptions & { multiple?: false; directory?: true }, ): Promise; async function open( - options?: OpenDialogOptions & { multiple?: true; directory?: true } + options?: OpenDialogOptions & { multiple?: true; directory?: true }, ): Promise; /** * Open a file/directory selection dialog. @@ -125,7 +125,7 @@ async function open( * You can save it to the filesystem using [tauri-plugin-persisted-scope](https://github.com/tauri-apps/tauri-plugin-persisted-scope). * @example * ```typescript - * import { open } from '@tauri-apps/api/dialog'; + * import { open } from '@tauri-apps/plugin-dialog'; * // Open a selection dialog for image files * const selected = await open({ * multiple: true, @@ -145,7 +145,7 @@ async function open( * * @example * ```typescript - * import { open } from '@tauri-apps/api/dialog'; + * import { open } from '@tauri-apps/plugin-dialog'; * import { appDir } from '@tauri-apps/api/path'; * // Open a selection dialog for directories * const selected = await open({ @@ -167,7 +167,7 @@ async function open( * @since 2.0.0 */ async function open( - options: OpenDialogOptions = {} + options: OpenDialogOptions = {}, ): Promise { if (typeof options === "object") { Object.freeze(options); @@ -187,7 +187,7 @@ async function open( * You can save it to the filesystem using [tauri-plugin-persisted-scope](https://github.com/tauri-apps/tauri-plugin-persisted-scope). * @example * ```typescript - * import { save } from '@tauri-apps/api/dialog'; + * import { save } from '@tauri-apps/plugin-dialog'; * const filePath = await save({ * filters: [{ * name: 'Image', @@ -212,7 +212,7 @@ async function save(options: SaveDialogOptions = {}): Promise { * Shows a message dialog with an `Ok` button. * @example * ```typescript - * import { message } from '@tauri-apps/api/dialog'; + * import { message } from '@tauri-apps/plugin-dialog'; * await message('Tauri is awesome', 'Tauri'); * await message('File not found', { title: 'Tauri', type: 'error' }); * ``` @@ -227,7 +227,7 @@ async function save(options: SaveDialogOptions = {}): Promise { */ async function message( message: string, - options?: string | MessageDialogOptions + options?: string | MessageDialogOptions, ): Promise { const opts = typeof options === "string" ? { title: options } : options; return window.__TAURI_INVOKE__("plugin:dialog|message", { @@ -242,7 +242,7 @@ async function message( * Shows a question dialog with `Yes` and `No` buttons. * @example * ```typescript - * import { ask } from '@tauri-apps/api/dialog'; + * import { ask } from '@tauri-apps/plugin-dialog'; * const yes = await ask('Are you sure?', 'Tauri'); * const yes2 = await ask('This action cannot be reverted. Are you sure?', { title: 'Tauri', type: 'warning' }); * ``` @@ -256,7 +256,7 @@ async function message( */ async function ask( message: string, - options?: string | ConfirmDialogOptions + options?: string | ConfirmDialogOptions, ): Promise { const opts = typeof options === "string" ? { title: options } : options; return window.__TAURI_INVOKE__("plugin:dialog|ask", { @@ -272,7 +272,7 @@ async function ask( * Shows a question dialog with `Ok` and `Cancel` buttons. * @example * ```typescript - * import { confirm } from '@tauri-apps/api/dialog'; + * import { confirm } from '@tauri-apps/plugin-dialog'; * const confirmed = await confirm('Are you sure?', 'Tauri'); * const confirmed2 = await confirm('This action cannot be reverted. Are you sure?', { title: 'Tauri', type: 'warning' }); * ``` @@ -286,7 +286,7 @@ async function ask( */ async function confirm( message: string, - options?: string | ConfirmDialogOptions + options?: string | ConfirmDialogOptions, ): Promise { const opts = typeof options === "string" ? { title: options } : options; return window.__TAURI_INVOKE__("plugin:dialog|confirm", { diff --git a/plugins/dialog/rollup.config.mjs b/plugins/dialog/rollup.config.mjs index 6555e98b..99a3dd31 100644 --- a/plugins/dialog/rollup.config.mjs +++ b/plugins/dialog/rollup.config.mjs @@ -5,7 +5,7 @@ import { createConfig } from "../../shared/rollup.config.mjs"; export default createConfig({ input: "guest-js/index.ts", pkg: JSON.parse( - readFileSync(new URL("./package.json", import.meta.url), "utf8") + readFileSync(new URL("./package.json", import.meta.url), "utf8"), ), external: [/^@tauri-apps\/api/], }); diff --git a/plugins/dialog/src/desktop.rs b/plugins/dialog/src/desktop.rs index 25222f91..4cd02bcd 100644 --- a/plugins/dialog/src/desktop.rs +++ b/plugins/dialog/src/desktop.rs @@ -23,6 +23,11 @@ type FileDialog = rfd::FileDialog; #[cfg(not(target_os = "linux"))] type FileDialog = rfd::AsyncFileDialog; +#[cfg(target_os = "linux")] +type MessageDialog = rfd::MessageDialog; +#[cfg(not(target_os = "linux"))] +type MessageDialog = rfd::AsyncMessageDialog; + pub fn init( app: &AppHandle, _api: PluginApi, @@ -50,7 +55,7 @@ impl Dialog { macro_rules! run_dialog { ($e:expr, $h: ident) => {{ std::thread::spawn(move || { - let response = $e; + let response = tauri::async_runtime::block_on($e); $h(response); }); }}; @@ -136,9 +141,9 @@ impl From> for FileDialog { } } -impl From> for rfd::MessageDialog { +impl From> for MessageDialog { fn from(d: MessageDialogBuilder) -> Self { - let mut dialog = rfd::MessageDialog::new() + let mut dialog = MessageDialog::new() .set_title(&d.title) .set_description(&d.message) .set_level(d.kind.into()); @@ -215,5 +220,5 @@ pub fn show_message_dialog( dialog: MessageDialogBuilder, f: F, ) { - run_dialog!(rfd::MessageDialog::from(dialog).show(), f); + run_dialog!(MessageDialog::from(dialog).show(), f); } diff --git a/plugins/dialog/src/lib.rs b/plugins/dialog/src/lib.rs index 8353b71c..ba08b645 100644 --- a/plugins/dialog/src/lib.rs +++ b/plugins/dialog/src/lib.rs @@ -2,6 +2,15 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: MIT +//! [![](https://github.com/tauri-apps/plugins-workspace/raw/v2/plugins/dialog/banner.png)](https://github.com/tauri-apps/plugins-workspace/tree/v2/plugins/dialog) +//! +//! Native system dialogs for opening and saving files along with message dialogs. + +#![doc( + html_logo_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png", + html_favicon_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png" +)] + use serde::{Deserialize, Serialize}; use tauri::{ plugin::{Builder, TauriPlugin}, @@ -200,7 +209,9 @@ impl MessageDialogBuilder { show_message_dialog(self, f) } - //// Shows a message dialog. + /// Shows a message dialog. + /// This is a blocking operation, + /// and should *NOT* be used when running on the main thread context. pub fn blocking_show(self) -> bool { blocking_fn!(self, show) } diff --git a/plugins/fs/README.md b/plugins/fs/README.md index 24501a34..b687b687 100644 --- a/plugins/fs/README.md +++ b/plugins/fs/README.md @@ -1,4 +1,4 @@ -![plugin-fs](banner.png) +![plugin-fs](https://github.com/tauri-apps/plugins-workspace/raw/v2/plugins/fs/banner.png) Access the file system. diff --git a/plugins/fs/guest-js/index.ts b/plugins/fs/guest-js/index.ts index af4d2e84..06ce4b37 100644 --- a/plugins/fs/guest-js/index.ts +++ b/plugins/fs/guest-js/index.ts @@ -229,7 +229,7 @@ interface FileEntry { */ async function readTextFile( filePath: string, - options: FsOptions = {} + options: FsOptions = {}, ): Promise { return await window.__TAURI_INVOKE__("plugin:fs|read_text_file", { path: filePath, @@ -250,7 +250,7 @@ async function readTextFile( */ async function readBinaryFile( filePath: string, - options: FsOptions = {} + options: FsOptions = {}, ): Promise { const arr = await window.__TAURI_INVOKE__("plugin:fs|read_file", { path: filePath, @@ -274,7 +274,7 @@ async function readBinaryFile( async function writeTextFile( path: string, contents: string, - options?: FsOptions + options?: FsOptions, ): Promise; /** @@ -291,7 +291,7 @@ async function writeTextFile( */ async function writeTextFile( file: FsTextFileOption, - options?: FsOptions + options?: FsOptions, ): Promise; /** @@ -304,7 +304,7 @@ async function writeTextFile( async function writeTextFile( path: string | FsTextFileOption, contents?: string | FsOptions, - options?: FsOptions + options?: FsOptions, ): Promise { if (typeof options === "object") { Object.freeze(options); @@ -352,7 +352,7 @@ async function writeTextFile( async function writeBinaryFile( path: string, contents: BinaryFileContents, - options?: FsOptions + options?: FsOptions, ): Promise; /** @@ -372,7 +372,7 @@ async function writeBinaryFile( */ async function writeBinaryFile( file: FsBinaryFileOption, - options?: FsOptions + options?: FsOptions, ): Promise; /** @@ -385,7 +385,7 @@ async function writeBinaryFile( async function writeBinaryFile( path: string | FsBinaryFileOption, contents?: BinaryFileContents | FsOptions, - options?: FsOptions + options?: FsOptions, ): Promise { if (typeof options === "object") { Object.freeze(options); @@ -410,12 +410,12 @@ async function writeBinaryFile( file.contents = contents ?? []; } - return await window.__TAURI_INVOKE__("plugin:fs|write_binary_file", { + return await window.__TAURI_INVOKE__("plugin:fs|write_file", { path: file.path, contents: Array.from( file.contents instanceof ArrayBuffer ? new Uint8Array(file.contents) - : file.contents + : file.contents, ), options: fileOptions, }); @@ -443,7 +443,7 @@ async function writeBinaryFile( */ async function readDir( dir: string, - options: FsDirOptions = {} + options: FsDirOptions = {}, ): Promise { return await window.__TAURI_INVOKE__("plugin:fs|read_dir", { path: dir, @@ -468,7 +468,7 @@ async function readDir( */ async function createDir( dir: string, - options: FsDirOptions = {} + options: FsDirOptions = {}, ): Promise { return await window.__TAURI_INVOKE__("plugin:fs|create_dir", { path: dir, @@ -492,7 +492,7 @@ async function createDir( */ async function removeDir( dir: string, - options: FsDirOptions = {} + options: FsDirOptions = {}, ): Promise { return await window.__TAURI_INVOKE__("plugin:fs|remove_dir", { path: dir, @@ -516,7 +516,7 @@ async function removeDir( async function copyFile( source: string, destination: string, - options: FsOptions = {} + options: FsOptions = {}, ): Promise { return await window.__TAURI_INVOKE__("plugin:fs|copy_file", { source, @@ -540,7 +540,7 @@ async function copyFile( */ async function removeFile( file: string, - options: FsOptions = {} + options: FsOptions = {}, ): Promise { return await window.__TAURI_INVOKE__("plugin:fs|remove_file", { path: file, @@ -564,7 +564,7 @@ async function removeFile( async function renameFile( oldPath: string, newPath: string, - options: FsOptions = {} + options: FsOptions = {}, ): Promise { return await window.__TAURI_INVOKE__("plugin:fs|rename_file", { oldPath, diff --git a/plugins/fs/rollup.config.mjs b/plugins/fs/rollup.config.mjs index 6555e98b..99a3dd31 100644 --- a/plugins/fs/rollup.config.mjs +++ b/plugins/fs/rollup.config.mjs @@ -5,7 +5,7 @@ import { createConfig } from "../../shared/rollup.config.mjs"; export default createConfig({ input: "guest-js/index.ts", pkg: JSON.parse( - readFileSync(new URL("./package.json", import.meta.url), "utf8") + readFileSync(new URL("./package.json", import.meta.url), "utf8"), ), external: [/^@tauri-apps\/api/], }); diff --git a/plugins/fs/src/api-iife.js b/plugins/fs/src/api-iife.js index 64aae16a..6bc30442 100644 --- a/plugins/fs/src/api-iife.js +++ b/plugins/fs/src/api-iife.js @@ -1 +1 @@ -if("__TAURI__"in window){var __TAURI_FS__=function(e){"use strict";var t=Object.defineProperty,n=(e,n)=>{for(var r in n)t(e,r,{get:n[r],enumerable:!0})},r=(e,t,n)=>{if(!t.has(e))throw TypeError("Cannot "+n)},i=(e,t,n)=>(r(e,t,"read from private field"),n?n.call(e):t.get(e)),o=(e,t,n,i)=>(r(e,t,"write to private field"),i?i.call(e,n):t.set(e,n),n);function a(e,t=!1){let n=window.crypto.getRandomValues(new Uint32Array(1))[0],r=`_${n}`;return Object.defineProperty(window,r,{value:n=>(t&&Reflect.deleteProperty(window,r),e?.(n)),writable:!1,configurable:!0}),n}n({},{Channel:()=>s,PluginListener:()=>u,addPluginListener:()=>p,convertFileSrc:()=>_,invoke:()=>l,transformCallback:()=>a});var c,s=class{constructor(){this.__TAURI_CHANNEL_MARKER__=!0,((e,t,n)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,n)})(this,c,(()=>{})),this.id=a((e=>{i(this,c).call(this,e)}))}set onmessage(e){o(this,c,e)}get onmessage(){return i(this,c)}toJSON(){return`__CHANNEL__:${this.id}`}};c=new WeakMap;var u=class{constructor(e,t,n){this.plugin=e,this.event=t,this.channelId=n}async unregister(){return l(`plugin:${this.plugin}|remove_listener`,{event:this.event,channelId:this.channelId})}};async function p(e,t,n){let r=new s;return r.onmessage=n,l(`plugin:${e}|register_listener`,{event:t,handler:r}).then((()=>new u(e,t,r.id)))}async function l(e,t={}){return new Promise(((n,r)=>{let i=a((e=>{n(e),Reflect.deleteProperty(window,`_${o}`)}),!0),o=a((e=>{r(e),Reflect.deleteProperty(window,`_${i}`)}),!0);window.__TAURI_IPC__({cmd:e,callback:i,error:o,...t})}))}function _(e,t="asset"){let n=encodeURIComponent(e);return navigator.userAgent.includes("Windows")?`https://${t}.localhost/${n}`:`${t}://localhost/${n}`}n({},{BaseDirectory:()=>y,appCacheDir:()=>g,appConfigDir:()=>f,appDataDir:()=>h,appLocalDataDir:()=>w,appLogDir:()=>x,audioDir:()=>m,basename:()=>W,cacheDir:()=>v,configDir:()=>A,dataDir:()=>D,delimiter:()=>k,desktopDir:()=>I,dirname:()=>S,documentDir:()=>R,downloadDir:()=>T,executableDir:()=>b,extname:()=>H,fontDir:()=>U,homeDir:()=>E,isAbsolute:()=>J,join:()=>M,localDataDir:()=>O,normalize:()=>B,pictureDir:()=>C,publicDir:()=>N,resolve:()=>z,resolveResource:()=>V,resourceDir:()=>P,runtimeDir:()=>j,sep:()=>$,tempDir:()=>L,templateDir:()=>F,videoDir:()=>K});var d,y=((d=y||{})[d.Audio=1]="Audio",d[d.Cache=2]="Cache",d[d.Config=3]="Config",d[d.Data=4]="Data",d[d.LocalData=5]="LocalData",d[d.Document=6]="Document",d[d.Download=7]="Download",d[d.Picture=8]="Picture",d[d.Public=9]="Public",d[d.Video=10]="Video",d[d.Resource=11]="Resource",d[d.Temp=12]="Temp",d[d.AppConfig=13]="AppConfig",d[d.AppData=14]="AppData",d[d.AppLocalData=15]="AppLocalData",d[d.AppCache=16]="AppCache",d[d.AppLog=17]="AppLog",d[d.Desktop=18]="Desktop",d[d.Executable=19]="Executable",d[d.Font=20]="Font",d[d.Home=21]="Home",d[d.Runtime=22]="Runtime",d[d.Template=23]="Template",d);async function f(){return l("plugin:path|resolve_directory",{directory:13})}async function h(){return l("plugin:path|resolve_directory",{directory:14})}async function w(){return l("plugin:path|resolve_directory",{directory:15})}async function g(){return l("plugin:path|resolve_directory",{directory:16})}async function m(){return l("plugin:path|resolve_directory",{directory:1})}async function v(){return l("plugin:path|resolve_directory",{directory:2})}async function A(){return l("plugin:path|resolve_directory",{directory:3})}async function D(){return l("plugin:path|resolve_directory",{directory:4})}async function I(){return l("plugin:path|resolve_directory",{directory:18})}async function R(){return l("plugin:path|resolve_directory",{directory:6})}async function T(){return l("plugin:path|resolve_directory",{directory:7})}async function b(){return l("plugin:path|resolve_directory",{directory:19})}async function U(){return l("plugin:path|resolve_directory",{directory:20})}async function E(){return l("plugin:path|resolve_directory",{directory:21})}async function O(){return l("plugin:path|resolve_directory",{directory:5})}async function C(){return l("plugin:path|resolve_directory",{directory:8})}async function N(){return l("plugin:path|resolve_directory",{directory:9})}async function P(){return l("plugin:path|resolve_directory",{directory:11})}async function V(e){return l("plugin:path|resolve_directory",{directory:11,path:e})}async function j(){return l("plugin:path|resolve_directory",{directory:22})}async function F(){return l("plugin:path|resolve_directory",{directory:23})}async function K(){return l("plugin:path|resolve_directory",{directory:10})}async function x(){return l("plugin:path|resolve_directory",{directory:17})}async function L(e){return l("plugin:path|resolve_directory",{directory:12})}function $(){return window.__TAURI__.path.__sep}function k(){return window.__TAURI__.path.__delimiter}async function z(...e){return l("plugin:path|resolve",{paths:e})}async function B(e){return l("plugin:path|normalize",{path:e})}async function M(...e){return l("plugin:path|join",{paths:e})}async function S(e){return l("plugin:path|dirname",{path:e})}async function H(e){return l("plugin:path|extname",{path:e})}async function W(e,t){return l("plugin:path|basename",{path:e,ext:t})}async function J(e){return l("plugin:path|isAbsolute",{path:e})}async function q(e,t,n){"object"==typeof n&&Object.freeze(n),"object"==typeof e&&Object.freeze(e);const r={path:"",contents:""};let i=n;return"string"==typeof e?r.path=e:(r.path=e.path,r.contents=e.contents),"string"==typeof t?r.contents=null!=t?t:"":i=t,await window.__TAURI_INVOKE__("plugin:fs|write_file",{path:r.path,contents:Array.from((new TextEncoder).encode(r.contents)),options:i})}return e.BaseDirectory=y,e.Dir=y,e.copyFile=async function(e,t,n={}){return await window.__TAURI_INVOKE__("plugin:fs|copy_file",{source:e,destination:t,options:n})},e.createDir=async function(e,t={}){return await window.__TAURI_INVOKE__("plugin:fs|create_dir",{path:e,options:t})},e.exists=async function(e){return await window.__TAURI_INVOKE__("plugin:fs|exists",{path:e})},e.metadata=async function(e){return await window.__TAURI_INVOKE__("plugin:fs|metadata",{path:e}).then((e=>{const{accessedAtMs:t,createdAtMs:n,modifiedAtMs:r,...i}=e;return{accessedAt:new Date(t),createdAt:new Date(n),modifiedAt:new Date(r),...i}}))},e.readBinaryFile=async function(e,t={}){const n=await window.__TAURI_INVOKE__("plugin:fs|read_file",{path:e,options:t});return Uint8Array.from(n)},e.readDir=async function(e,t={}){return await window.__TAURI_INVOKE__("plugin:fs|read_dir",{path:e,options:t})},e.readTextFile=async function(e,t={}){return await window.__TAURI_INVOKE__("plugin:fs|read_text_file",{path:e,options:t})},e.removeDir=async function(e,t={}){return await window.__TAURI_INVOKE__("plugin:fs|remove_dir",{path:e,options:t})},e.removeFile=async function(e,t={}){return await window.__TAURI_INVOKE__("plugin:fs|remove_file",{path:e,options:t})},e.renameFile=async function(e,t,n={}){return await window.__TAURI_INVOKE__("plugin:fs|rename_file",{oldPath:e,newPath:t,options:n})},e.writeBinaryFile=async function(e,t,n){"object"==typeof n&&Object.freeze(n),"object"==typeof e&&Object.freeze(e);const r={path:"",contents:[]};let i=n;return"string"==typeof e?r.path=e:(r.path=e.path,r.contents=e.contents),t&&"dir"in t?i=t:"string"==typeof e&&(r.contents=null!=t?t:[]),await window.__TAURI_INVOKE__("plugin:fs|write_binary_file",{path:r.path,contents:Array.from(r.contents instanceof ArrayBuffer?new Uint8Array(r.contents):r.contents),options:i})},e.writeFile=q,e.writeTextFile=q,e}({});Object.defineProperty(window.__TAURI__,"fs",{value:__TAURI_FS__})} +if("__TAURI__"in window){var __TAURI_FS__=function(e){"use strict";var t=Object.defineProperty,n=(e,n)=>{for(var r in n)t(e,r,{get:n[r],enumerable:!0})},r=(e,t,n)=>{if(!t.has(e))throw TypeError("Cannot "+n)},i=(e,t,n)=>(r(e,t,"read from private field"),n?n.call(e):t.get(e)),o=(e,t,n,i)=>(r(e,t,"write to private field"),i?i.call(e,n):t.set(e,n),n);function a(e,t=!1){let n=window.crypto.getRandomValues(new Uint32Array(1))[0],r=`_${n}`;return Object.defineProperty(window,r,{value:n=>(t&&Reflect.deleteProperty(window,r),e?.(n)),writable:!1,configurable:!0}),n}n({},{Channel:()=>s,PluginListener:()=>u,addPluginListener:()=>p,convertFileSrc:()=>_,invoke:()=>l,transformCallback:()=>a});var c,s=class{constructor(){this.__TAURI_CHANNEL_MARKER__=!0,((e,t,n)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,n)})(this,c,(()=>{})),this.id=a((e=>{i(this,c).call(this,e)}))}set onmessage(e){o(this,c,e)}get onmessage(){return i(this,c)}toJSON(){return`__CHANNEL__:${this.id}`}};c=new WeakMap;var u=class{constructor(e,t,n){this.plugin=e,this.event=t,this.channelId=n}async unregister(){return l(`plugin:${this.plugin}|remove_listener`,{event:this.event,channelId:this.channelId})}};async function p(e,t,n){let r=new s;return r.onmessage=n,l(`plugin:${e}|register_listener`,{event:t,handler:r}).then((()=>new u(e,t,r.id)))}async function l(e,t={}){return new Promise(((n,r)=>{let i=a((e=>{n(e),Reflect.deleteProperty(window,`_${o}`)}),!0),o=a((e=>{r(e),Reflect.deleteProperty(window,`_${i}`)}),!0);window.__TAURI_IPC__({cmd:e,callback:i,error:o,...t})}))}function _(e,t="asset"){let n=encodeURIComponent(e);return navigator.userAgent.includes("Windows")?`https://${t}.localhost/${n}`:`${t}://localhost/${n}`}n({},{BaseDirectory:()=>y,appCacheDir:()=>g,appConfigDir:()=>f,appDataDir:()=>h,appLocalDataDir:()=>w,appLogDir:()=>x,audioDir:()=>m,basename:()=>W,cacheDir:()=>v,configDir:()=>A,dataDir:()=>D,delimiter:()=>k,desktopDir:()=>I,dirname:()=>S,documentDir:()=>R,downloadDir:()=>T,executableDir:()=>b,extname:()=>H,fontDir:()=>U,homeDir:()=>E,isAbsolute:()=>J,join:()=>M,localDataDir:()=>O,normalize:()=>B,pictureDir:()=>C,publicDir:()=>N,resolve:()=>z,resolveResource:()=>V,resourceDir:()=>P,runtimeDir:()=>j,sep:()=>$,tempDir:()=>L,templateDir:()=>F,videoDir:()=>K});var d,y=((d=y||{})[d.Audio=1]="Audio",d[d.Cache=2]="Cache",d[d.Config=3]="Config",d[d.Data=4]="Data",d[d.LocalData=5]="LocalData",d[d.Document=6]="Document",d[d.Download=7]="Download",d[d.Picture=8]="Picture",d[d.Public=9]="Public",d[d.Video=10]="Video",d[d.Resource=11]="Resource",d[d.Temp=12]="Temp",d[d.AppConfig=13]="AppConfig",d[d.AppData=14]="AppData",d[d.AppLocalData=15]="AppLocalData",d[d.AppCache=16]="AppCache",d[d.AppLog=17]="AppLog",d[d.Desktop=18]="Desktop",d[d.Executable=19]="Executable",d[d.Font=20]="Font",d[d.Home=21]="Home",d[d.Runtime=22]="Runtime",d[d.Template=23]="Template",d);async function f(){return l("plugin:path|resolve_directory",{directory:13})}async function h(){return l("plugin:path|resolve_directory",{directory:14})}async function w(){return l("plugin:path|resolve_directory",{directory:15})}async function g(){return l("plugin:path|resolve_directory",{directory:16})}async function m(){return l("plugin:path|resolve_directory",{directory:1})}async function v(){return l("plugin:path|resolve_directory",{directory:2})}async function A(){return l("plugin:path|resolve_directory",{directory:3})}async function D(){return l("plugin:path|resolve_directory",{directory:4})}async function I(){return l("plugin:path|resolve_directory",{directory:18})}async function R(){return l("plugin:path|resolve_directory",{directory:6})}async function T(){return l("plugin:path|resolve_directory",{directory:7})}async function b(){return l("plugin:path|resolve_directory",{directory:19})}async function U(){return l("plugin:path|resolve_directory",{directory:20})}async function E(){return l("plugin:path|resolve_directory",{directory:21})}async function O(){return l("plugin:path|resolve_directory",{directory:5})}async function C(){return l("plugin:path|resolve_directory",{directory:8})}async function N(){return l("plugin:path|resolve_directory",{directory:9})}async function P(){return l("plugin:path|resolve_directory",{directory:11})}async function V(e){return l("plugin:path|resolve_directory",{directory:11,path:e})}async function j(){return l("plugin:path|resolve_directory",{directory:22})}async function F(){return l("plugin:path|resolve_directory",{directory:23})}async function K(){return l("plugin:path|resolve_directory",{directory:10})}async function x(){return l("plugin:path|resolve_directory",{directory:17})}async function L(e){return l("plugin:path|resolve_directory",{directory:12})}function $(){return window.__TAURI__.path.__sep}function k(){return window.__TAURI__.path.__delimiter}async function z(...e){return l("plugin:path|resolve",{paths:e})}async function B(e){return l("plugin:path|normalize",{path:e})}async function M(...e){return l("plugin:path|join",{paths:e})}async function S(e){return l("plugin:path|dirname",{path:e})}async function H(e){return l("plugin:path|extname",{path:e})}async function W(e,t){return l("plugin:path|basename",{path:e,ext:t})}async function J(e){return l("plugin:path|isAbsolute",{path:e})}async function q(e,t,n){"object"==typeof n&&Object.freeze(n),"object"==typeof e&&Object.freeze(e);const r={path:"",contents:""};let i=n;return"string"==typeof e?r.path=e:(r.path=e.path,r.contents=e.contents),"string"==typeof t?r.contents=null!=t?t:"":i=t,await window.__TAURI_INVOKE__("plugin:fs|write_file",{path:r.path,contents:Array.from((new TextEncoder).encode(r.contents)),options:i})}return e.BaseDirectory=y,e.Dir=y,e.copyFile=async function(e,t,n={}){return await window.__TAURI_INVOKE__("plugin:fs|copy_file",{source:e,destination:t,options:n})},e.createDir=async function(e,t={}){return await window.__TAURI_INVOKE__("plugin:fs|create_dir",{path:e,options:t})},e.exists=async function(e){return await window.__TAURI_INVOKE__("plugin:fs|exists",{path:e})},e.metadata=async function(e){return await window.__TAURI_INVOKE__("plugin:fs|metadata",{path:e}).then((e=>{const{accessedAtMs:t,createdAtMs:n,modifiedAtMs:r,...i}=e;return{accessedAt:new Date(t),createdAt:new Date(n),modifiedAt:new Date(r),...i}}))},e.readBinaryFile=async function(e,t={}){const n=await window.__TAURI_INVOKE__("plugin:fs|read_file",{path:e,options:t});return Uint8Array.from(n)},e.readDir=async function(e,t={}){return await window.__TAURI_INVOKE__("plugin:fs|read_dir",{path:e,options:t})},e.readTextFile=async function(e,t={}){return await window.__TAURI_INVOKE__("plugin:fs|read_text_file",{path:e,options:t})},e.removeDir=async function(e,t={}){return await window.__TAURI_INVOKE__("plugin:fs|remove_dir",{path:e,options:t})},e.removeFile=async function(e,t={}){return await window.__TAURI_INVOKE__("plugin:fs|remove_file",{path:e,options:t})},e.renameFile=async function(e,t,n={}){return await window.__TAURI_INVOKE__("plugin:fs|rename_file",{oldPath:e,newPath:t,options:n})},e.writeBinaryFile=async function(e,t,n){"object"==typeof n&&Object.freeze(n),"object"==typeof e&&Object.freeze(e);const r={path:"",contents:[]};let i=n;return"string"==typeof e?r.path=e:(r.path=e.path,r.contents=e.contents),t&&"dir"in t?i=t:"string"==typeof e&&(r.contents=null!=t?t:[]),await window.__TAURI_INVOKE__("plugin:fs|write_file",{path:r.path,contents:Array.from(r.contents instanceof ArrayBuffer?new Uint8Array(r.contents):r.contents),options:i})},e.writeFile=q,e.writeTextFile=q,e}({});Object.defineProperty(window.__TAURI__,"fs",{value:__TAURI_FS__})} diff --git a/plugins/fs/src/lib.rs b/plugins/fs/src/lib.rs index 9156661f..aab60ce9 100644 --- a/plugins/fs/src/lib.rs +++ b/plugins/fs/src/lib.rs @@ -2,6 +2,15 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: MIT +//! [![](https://github.com/tauri-apps/plugins-workspace/raw/v2/plugins/fs/banner.png)](https://github.com/tauri-apps/plugins-workspace/tree/v2/plugins/fs) +//! +//! Access the file system. + +#![doc( + html_logo_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png", + html_favicon_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png" +)] + use config::FsScope; use tauri::{ plugin::{Builder as PluginBuilder, TauriPlugin}, diff --git a/plugins/global-shortcut/README.md b/plugins/global-shortcut/README.md index 7c5097ce..b969ccdc 100644 --- a/plugins/global-shortcut/README.md +++ b/plugins/global-shortcut/README.md @@ -1,4 +1,4 @@ -![plugin-global-shortcut](banner.png) +![plugin-global-shortcut](https://github.com/tauri-apps/plugins-workspace/raw/v2/plugins/global-shortcut/banner.png) Register global shortcuts. diff --git a/plugins/global-shortcut/guest-js/index.ts b/plugins/global-shortcut/guest-js/index.ts index 16ef0055..541530c4 100644 --- a/plugins/global-shortcut/guest-js/index.ts +++ b/plugins/global-shortcut/guest-js/index.ts @@ -36,7 +36,7 @@ export type ShortcutHandler = (shortcut: string) => void; */ async function register( shortcut: string, - handler: ShortcutHandler + handler: ShortcutHandler, ): Promise { return await window.__TAURI_INVOKE__("plugin:globalShortcut|register", { shortcut, @@ -61,7 +61,7 @@ async function register( */ async function registerAll( shortcuts: string[], - handler: ShortcutHandler + handler: ShortcutHandler, ): Promise { return await window.__TAURI_INVOKE__("plugin:globalShortcut|register_all", { shortcuts, diff --git a/plugins/global-shortcut/rollup.config.mjs b/plugins/global-shortcut/rollup.config.mjs index 6555e98b..99a3dd31 100644 --- a/plugins/global-shortcut/rollup.config.mjs +++ b/plugins/global-shortcut/rollup.config.mjs @@ -5,7 +5,7 @@ import { createConfig } from "../../shared/rollup.config.mjs"; export default createConfig({ input: "guest-js/index.ts", pkg: JSON.parse( - readFileSync(new URL("./package.json", import.meta.url), "utf8") + readFileSync(new URL("./package.json", import.meta.url), "utf8"), ), external: [/^@tauri-apps\/api/], }); diff --git a/plugins/global-shortcut/src/lib.rs b/plugins/global-shortcut/src/lib.rs index 86fb28dd..96fab9d8 100644 --- a/plugins/global-shortcut/src/lib.rs +++ b/plugins/global-shortcut/src/lib.rs @@ -2,6 +2,16 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: MIT +//! [![](https://github.com/tauri-apps/plugins-workspace/raw/v2/plugins/global-shortcut/banner.png)](https://github.com/tauri-apps/plugins-workspace/tree/v2/plugins/global-shortcut) +//! +//! Register global shortcuts. +//! +//! - Supported platforms: Windows, Linux and macOS. + +#![doc( + html_logo_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png", + html_favicon_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png" +)] #![cfg(not(any(target_os = "android", target_os = "ios")))] use std::{ diff --git a/plugins/http/Cargo.toml b/plugins/http/Cargo.toml index f1fb6082..95f74bfe 100644 --- a/plugins/http/Cargo.toml +++ b/plugins/http/Cargo.toml @@ -13,14 +13,28 @@ tauri = { workspace = true } thiserror = { workspace = true } tauri-plugin-fs = { path = "../fs", version = "2.0.0-alpha.0" } glob = "0.3" -rand = "0.8" -bytes = { version = "1", features = [ "serde" ] } -serde_repr = "0.1" http = "0.2" -reqwest = { version = "0.11", default-features = false, features = [ "json", "stream" ] } +reqwest = { version = "0.11", default-features = false } +url = "2.4" +data-url = "0.3" [features] -multipart = [ "reqwest/multipart" ] -native-tls = [ "reqwest/native-tls" ] -native-tls-vendored = [ "reqwest/native-tls-vendored" ] -rustls-tls = [ "reqwest/rustls-tls" ] +multipart = ["reqwest/multipart"] +json = ["reqwest/json"] +stream = ["reqwest/stream"] +native-tls = ["reqwest/native-tls"] +native-tls-vendored = ["reqwest/native-tls-vendored"] +rustls-tls = ["reqwest/rustls-tls"] +default-tls = ["reqwest/default-tls"] +native-tls-alpn = ["reqwest/native-tls-alpn"] +rustls-tls-manual-roots = ["reqwest/rustls-tls-manual-roots"] +rustls-tls-webpki-roots = ["reqwest/rustls-tls-webpki-roots"] +rustls-tls-native-roots = ["reqwest/rustls-tls-native-roots"] +blocking = ["reqwest/blocking"] +cookies = ["reqwest/cookies"] +gzip = ["reqwest/gzip"] +brotli = ["reqwest/brotli"] +deflate = ["reqwest/deflate"] +trust-dns = ["reqwest/trust-dns"] +socks = ["reqwest/socks"] +http3 = ["reqwest/http3"] diff --git a/plugins/http/README.md b/plugins/http/README.md index 54532243..148fe7e2 100644 --- a/plugins/http/README.md +++ b/plugins/http/README.md @@ -1,4 +1,4 @@ -![plugin-http](banner.png) +![plugin-http](https://github.com/tauri-apps/plugins-workspace/raw/v2/plugins/http/banner.png) Access the HTTP client written in Rust. diff --git a/plugins/http/guest-js/index.ts b/plugins/http/guest-js/index.ts index 60378402..e991076f 100644 --- a/plugins/http/guest-js/index.ts +++ b/plugins/http/guest-js/index.ts @@ -3,7 +3,7 @@ // SPDX-License-Identifier: MIT /** - * Access the HTTP client written in Rust. + * Make HTTP requests with the Rust backend. * * ## Security * @@ -31,518 +31,94 @@ declare global { } /** + * Options to configure the Rust client used to make fetch requests + * * @since 2.0.0 */ -interface Duration { - secs: number; - nanos: number; -} - -/** - * @since 2.0.0 - */ -interface ClientOptions { +export interface ClientOptions { /** * Defines the maximum number of redirects the client should follow. * If set to 0, no redirects will be followed. */ maxRedirections?: number; - connectTimeout?: number | Duration; + /** Timeout in milliseconds */ + connectTimeout?: number; } /** - * @since 2.0.0 - */ -enum ResponseType { - JSON = 1, - Text = 2, - Binary = 3, -} - -/** - * @since 2.0.0 - */ -interface FilePart { - file: string | T; - mime?: string; - fileName?: string; -} - -type Part = string | Uint8Array | FilePart; - -/** - * The body object to be used on POST and PUT requests. + * Fetch a resource from the network. It returns a `Promise` that resolves to the + * `Response` to that `Request`, whether it is successful or not. * - * @since 2.0.0 - */ -class Body { - type: string; - payload: unknown; - - /** @ignore */ - private constructor(type: string, payload: unknown) { - this.type = type; - this.payload = payload; - } - - /** - * Creates a new form data body. The form data is an object where each key is the entry name, - * and the value is either a string or a file object. - * - * By default it sets the `application/x-www-form-urlencoded` Content-Type header, - * but you can set it to `multipart/form-data` if the Cargo feature `multipart` is enabled. - * - * Note that a file path must be allowed in the `fs` scope. - * @example - * ```typescript - * import { Body } from "@tauri-apps/plugin-http" - * const body = Body.form({ - * key: 'value', - * image: { - * file: '/path/to/file', // either a path or an array buffer of the file contents - * mime: 'image/jpeg', // optional - * fileName: 'image.jpg' // optional - * } - * }); - * - * // alternatively, use a FormData: - * const form = new FormData(); - * form.append('key', 'value'); - * form.append('image', file, 'image.png'); - * const formBody = Body.form(form); - * ``` - * - * @param data The body data. - * - * @returns The body object ready to be used on the POST and PUT requests. - * - * @since 2.0.0 - */ - static form(data: Record | FormData): Body { - const form: Record> = {}; - - const append = ( - key: string, - v: string | Uint8Array | FilePart | File - ): void => { - if (v !== null) { - let r; - if (typeof v === "string") { - r = v; - } else if (v instanceof Uint8Array || Array.isArray(v)) { - r = Array.from(v); - } else if (v instanceof File) { - r = { file: v.name, mime: v.type, fileName: v.name }; - } else if (typeof v.file === "string") { - r = { file: v.file, mime: v.mime, fileName: v.fileName }; - } else { - r = { file: Array.from(v.file), mime: v.mime, fileName: v.fileName }; - } - form[String(key)] = r; - } - }; - - if (data instanceof FormData) { - for (const [key, value] of data) { - append(key, value); - } - } else { - for (const [key, value] of Object.entries(data)) { - append(key, value); - } - } - return new Body("Form", form); - } - - /** - * Creates a new JSON body. - * @example - * ```typescript - * import { Body } from "@tauri-apps/plugin-http" - * Body.json({ - * registered: true, - * name: 'tauri' - * }); - * ``` - * - * @param data The body JSON object. - * - * @returns The body object ready to be used on the POST and PUT requests. - * - * @since 2.0.0 - */ - static json(data: Record): Body { - return new Body("Json", data); - } - - /** - * Creates a new UTF-8 string body. - * @example - * ```typescript - * import { Body } from "@tauri-apps/plugin-http" - * Body.text('The body content as a string'); - * ``` - * - * @param value The body string. - * - * @returns The body object ready to be used on the POST and PUT requests. - * - * @since 2.0.0 - */ - static text(value: string): Body { - return new Body("Text", value); - } - - /** - * Creates a new byte array body. - * @example - * ```typescript - * import { Body } from "@tauri-apps/plugin-http" - * Body.bytes(new Uint8Array([1, 2, 3])); - * ``` - * - * @param bytes The body byte array. - * - * @returns The body object ready to be used on the POST and PUT requests. - * - * @since 2.0.0 - */ - static bytes( - bytes: Iterable | ArrayLike | ArrayBuffer - ): Body { - // stringifying Uint8Array doesn't return an array of numbers, so we create one here - return new Body( - "Bytes", - Array.from(bytes instanceof ArrayBuffer ? new Uint8Array(bytes) : bytes) - ); - } -} - -/** The request HTTP verb. */ -type HttpVerb = - | "GET" - | "POST" - | "PUT" - | "DELETE" - | "PATCH" - | "HEAD" - | "OPTIONS" - | "CONNECT" - | "TRACE"; - -/** - * Options object sent to the backend. + * @example + * ```typescript + * const response = await fetch("http://my.json.host/data.json"); + * console.log(response.status); // e.g. 200 + * console.log(response.statusText); // e.g. "OK" + * const jsonData = await response.json(); + * ``` * * @since 2.0.0 */ -interface HttpOptions { - method: HttpVerb; - url: string; - headers?: Record; - query?: Record; - body?: Body; - timeout?: number | Duration; - responseType?: ResponseType; -} - -/** Request options. */ -type RequestOptions = Omit; -/** Options for the `fetch` API. */ -type FetchOptions = Omit; - -/** @ignore */ -interface IResponse { - url: string; - status: number; - headers: Record; - rawHeaders: Record; - data: T; -} - -/** - * Response object. - * - * @since 2.0.0 - * */ -class Response { - /** The request URL. */ - url: string; - /** The response status code. */ - status: number; - /** A boolean indicating whether the response was successful (status in the range 200–299) or not. */ - ok: boolean; - /** The response headers. */ - headers: Record; - /** The response raw headers. */ - rawHeaders: Record; - /** The response data. */ - data: T; - - /** @ignore */ - constructor(response: IResponse) { - this.url = response.url; - this.status = response.status; - this.ok = this.status >= 200 && this.status < 300; - this.headers = response.headers; - this.rawHeaders = response.rawHeaders; - this.data = response.data; - } -} - -/** - * @since 2.0.0 - */ -class Client { - id: number; - /** @ignore */ - constructor(id: number) { - this.id = id; - } - - /** - * Drops the client instance. - * @example - * ```typescript - * import { getClient } from '@tauri-apps/plugin-http'; - * const client = await getClient(); - * await client.drop(); - * ``` - */ - async drop(): Promise { - return window.__TAURI_INVOKE__("plugin:http|drop_client", { - client: this.id, - }); - } - - /** - * Makes an HTTP request. - * @example - * ```typescript - * import { getClient } from '@tauri-apps/plugin-http'; - * const client = await getClient(); - * const response = await client.request({ - * method: 'GET', - * url: 'http://localhost:3003/users', - * }); - * ``` - */ - async request(options: HttpOptions): Promise> { - const jsonResponse = - !options.responseType || options.responseType === ResponseType.JSON; - if (jsonResponse) { - options.responseType = ResponseType.Text; - } - return window - .__TAURI_INVOKE__>("plugin:http|request", { - clientId: this.id, - options, - }) - .then((res) => { - const response = new Response(res); - if (jsonResponse) { - /* eslint-disable */ - try { - response.data = JSON.parse(response.data as string); - } catch (e) { - if (response.ok && (response.data as unknown as string) === "") { - response.data = {} as T; - } else if (response.ok) { - throw Error( - `Failed to parse response \`${response.data}\` as JSON: ${e}; - try setting the \`responseType\` option to \`ResponseType.Text\` or \`ResponseType.Binary\` if the API does not return a JSON response.` - ); - } - } - /* eslint-enable */ - return response; - } - return response; - }); - } - - /** - * Makes a GET request. - * @example - * ```typescript - * import { getClient, ResponseType } from '@tauri-apps/plugin-http'; - * const client = await getClient(); - * const response = await client.get('http://localhost:3003/users', { - * timeout: 30, - * // the expected response type - * responseType: ResponseType.JSON - * }); - * ``` - */ - async get(url: string, options?: RequestOptions): Promise> { - return this.request({ - method: "GET", - url, - ...options, - }); - } - - /** - * Makes a POST request. - * @example - * ```typescript - * import { getClient, Body, ResponseType } from '@tauri-apps/plugin-http'; - * const client = await getClient(); - * const response = await client.post('http://localhost:3003/users', { - * body: Body.json({ - * name: 'tauri', - * password: 'awesome' - * }), - * // in this case the server returns a simple string - * responseType: ResponseType.Text, - * }); - * ``` - */ - async post( - url: string, - body?: Body, - options?: RequestOptions - ): Promise> { - return this.request({ - method: "POST", - url, - body, - ...options, - }); - } +export async function fetch( + input: URL | Request | string, + init?: RequestInit & ClientOptions, +): Promise { + const maxRedirections = init?.maxRedirections; + const connectTimeout = init?.maxRedirections; + + // Remove these fields before creating the request + if (init) { + delete init.maxRedirections; + delete init.connectTimeout; + } + + const req = new Request(input, init); + const buffer = await req.arrayBuffer(); + const reqData = buffer.byteLength ? Array.from(new Uint8Array(buffer)) : null; + + const rid = await window.__TAURI_INVOKE__("plugin:http|fetch", { + cmd: "fetch", + method: req.method, + url: req.url, + headers: Array.from(req.headers.entries()), + data: reqData, + maxRedirections, + connectTimeout, + }); - /** - * Makes a PUT request. - * @example - * ```typescript - * import { getClient, Body } from '@tauri-apps/plugin-http'; - * const client = await getClient(); - * const response = await client.put('http://localhost:3003/users/1', { - * body: Body.form({ - * file: { - * file: '/home/tauri/avatar.png', - * mime: 'image/png', - * fileName: 'avatar.png' - * } - * }) - * }); - * ``` - */ - async put( - url: string, - body?: Body, - options?: RequestOptions - ): Promise> { - return this.request({ - method: "PUT", - url, - body, - ...options, + req.signal.addEventListener("abort", () => { + window.__TAURI_INVOKE__("plugin:http|fetch_cancel", { + rid, }); - } + }); - /** - * Makes a PATCH request. - * @example - * ```typescript - * import { getClient, Body } from '@tauri-apps/plugin-http'; - * const client = await getClient(); - * const response = await client.patch('http://localhost:3003/users/1', { - * body: Body.json({ email: 'contact@tauri.app' }) - * }); - * ``` - */ - async patch(url: string, options?: RequestOptions): Promise> { - return this.request({ - method: "PATCH", - url, - ...options, - }); + interface FetchSendResponse { + status: number; + statusText: string; + headers: [[string, string]]; + url: string; } - /** - * Makes a DELETE request. - * @example - * ```typescript - * import { getClient } from '@tauri-apps/plugin-http'; - * const client = await getClient(); - * const response = await client.delete('http://localhost:3003/users/1'); - * ``` - */ - async delete(url: string, options?: RequestOptions): Promise> { - return this.request({ - method: "DELETE", - url, - ...options, + const { status, statusText, url, headers } = + await window.__TAURI_INVOKE__("plugin:http|fetch_send", { + rid, }); - } -} - -/** - * Creates a new client using the specified options. - * @example - * ```typescript - * import { getClient } from '@tauri-apps/plugin-http'; - * const client = await getClient(); - * ``` - * - * @param options Client configuration. - * - * @returns A promise resolving to the client instance. - * - * @since 2.0.0 - */ -async function getClient(options?: ClientOptions): Promise { - return window - .__TAURI_INVOKE__("plugin:http|create_client", { - options, - }) - .then((id) => new Client(id)); -} - -/** @internal */ -let defaultClient: Client | null = null; -/** - * Perform an HTTP request using the default client. - * @example - * ```typescript - * import { fetch } from '@tauri-apps/plugin-http'; - * const response = await fetch('http://localhost:3003/users/2', { - * method: 'GET', - * timeout: 30, - * }); - * ``` - */ -async function fetch( - url: string, - options?: FetchOptions -): Promise> { - if (defaultClient === null) { - defaultClient = await getClient(); - } - return defaultClient.request({ - url, - method: options?.method ?? "GET", - ...options, + const body = await window.__TAURI_INVOKE__( + "plugin:http|fetch_read_body", + { + rid, + }, + ); + + const res = new Response(Uint8Array.from(body), { + headers, + status, + statusText, }); -} -export type { - Duration, - ClientOptions, - Part, - HttpVerb, - HttpOptions, - RequestOptions, - FetchOptions, -}; + // url is read only but seems like we can do this + Object.defineProperty(res, "url", { value: url }); -export { - getClient, - fetch, - Body, - Client, - Response, - ResponseType, - type FilePart, -}; + return res; +} diff --git a/plugins/http/rollup.config.mjs b/plugins/http/rollup.config.mjs index 6555e98b..99a3dd31 100644 --- a/plugins/http/rollup.config.mjs +++ b/plugins/http/rollup.config.mjs @@ -5,7 +5,7 @@ import { createConfig } from "../../shared/rollup.config.mjs"; export default createConfig({ input: "guest-js/index.ts", pkg: JSON.parse( - readFileSync(new URL("./package.json", import.meta.url), "utf8") + readFileSync(new URL("./package.json", import.meta.url), "utf8"), ), external: [/^@tauri-apps\/api/], }); diff --git a/plugins/http/src/api-iife.js b/plugins/http/src/api-iife.js index e99aa35b..18db7172 100644 --- a/plugins/http/src/api-iife.js +++ b/plugins/http/src/api-iife.js @@ -1 +1 @@ -if("__TAURI__"in window){var __TAURI_HTTP__=function(e){"use strict";var t;e.ResponseType=void 0,(t=e.ResponseType||(e.ResponseType={}))[t.JSON=1]="JSON",t[t.Text=2]="Text",t[t.Binary=3]="Binary";class r{constructor(e,t){this.type=e,this.payload=t}static form(e){const t={},s=(e,r)=>{if(null!==r){let s;s="string"==typeof r?r:r instanceof Uint8Array||Array.isArray(r)?Array.from(r):r instanceof File?{file:r.name,mime:r.type,fileName:r.name}:"string"==typeof r.file?{file:r.file,mime:r.mime,fileName:r.fileName}:{file:Array.from(r.file),mime:r.mime,fileName:r.fileName},t[String(e)]=s}};if(e instanceof FormData)for(const[t,r]of e)s(t,r);else for(const[t,r]of Object.entries(e))s(t,r);return new r("Form",t)}static json(e){return new r("Json",e)}static text(e){return new r("Text",e)}static bytes(e){return new r("Bytes",Array.from(e instanceof ArrayBuffer?new Uint8Array(e):e))}}class s{constructor(e){this.url=e.url,this.status=e.status,this.ok=this.status>=200&&this.status<300,this.headers=e.headers,this.rawHeaders=e.rawHeaders,this.data=e.data}}class n{constructor(e){this.id=e}async drop(){return window.__TAURI_INVOKE__("plugin:http|drop_client",{client:this.id})}async request(t){const r=!t.responseType||t.responseType===e.ResponseType.JSON;return r&&(t.responseType=e.ResponseType.Text),window.__TAURI_INVOKE__("plugin:http|request",{clientId:this.id,options:t}).then((e=>{const t=new s(e);if(r){try{t.data=JSON.parse(t.data)}catch(e){if(t.ok&&""===t.data)t.data={};else if(t.ok)throw Error(`Failed to parse response \`${t.data}\` as JSON: ${e};\n try setting the \`responseType\` option to \`ResponseType.Text\` or \`ResponseType.Binary\` if the API does not return a JSON response.`)}return t}return t}))}async get(e,t){return this.request({method:"GET",url:e,...t})}async post(e,t,r){return this.request({method:"POST",url:e,body:t,...r})}async put(e,t,r){return this.request({method:"PUT",url:e,body:t,...r})}async patch(e,t){return this.request({method:"PATCH",url:e,...t})}async delete(e,t){return this.request({method:"DELETE",url:e,...t})}}async function i(e){return window.__TAURI_INVOKE__("plugin:http|create_client",{options:e}).then((e=>new n(e)))}let o=null;return e.Body=r,e.Client=n,e.Response=s,e.fetch=async function(e,t){var r;return null===o&&(o=await i()),o.request({url:e,method:null!==(r=null==t?void 0:t.method)&&void 0!==r?r:"GET",...t})},e.getClient=i,e}({});Object.defineProperty(window.__TAURI__,"http",{value:__TAURI_HTTP__})} +if("__TAURI__"in window){var __TAURI_HTTP__=function(e){"use strict";return e.fetch=async function(e,t){const n=null==t?void 0:t.maxRedirections,r=null==t?void 0:t.maxRedirections;t&&(delete t.maxRedirections,delete t.connectTimeout);const _=new Request(e,t),i=await _.arrayBuffer(),a=i.byteLength?Array.from(new Uint8Array(i)):null,d=await window.__TAURI_INVOKE__("plugin:http|fetch",{cmd:"fetch",method:_.method,url:_.url,headers:Array.from(_.headers.entries()),data:a,maxRedirections:n,connectTimeout:r});_.signal.addEventListener("abort",(()=>{window.__TAURI_INVOKE__("plugin:http|fetch_cancel",{rid:d})}));const{status:o,statusText:s,url:c,headers:u}=await window.__TAURI_INVOKE__("plugin:http|fetch_send",{rid:d}),l=await window.__TAURI_INVOKE__("plugin:http|fetch_read_body",{rid:d}),w=new Response(Uint8Array.from(l),{headers:u,status:o,statusText:s});return Object.defineProperty(w,"url",{value:c}),w},e}({});Object.defineProperty(window.__TAURI__,"http",{value:__TAURI_HTTP__})} diff --git a/plugins/http/src/commands.rs b/plugins/http/src/commands.rs new file mode 100644 index 00000000..833b4e7f --- /dev/null +++ b/plugins/http/src/commands.rs @@ -0,0 +1,178 @@ +// Copyright 2019-2023 Tauri Programme within The Commons Conservancy +// SPDX-License-Identifier: Apache-2.0 +// SPDX-License-Identifier: MIT + +use std::{collections::HashMap, time::Duration}; + +use http::{header, HeaderName, HeaderValue, Method, StatusCode}; +use reqwest::redirect::Policy; +use serde::Serialize; +use tauri::{command, AppHandle, Runtime}; + +use crate::{Error, FetchRequest, HttpExt, RequestId}; + +#[derive(Serialize)] +#[serde(rename_all = "camelCase")] +pub struct FetchResponse { + status: u16, + status_text: String, + headers: Vec<(String, String)>, + url: String, +} + +#[command] +pub async fn fetch( + app: AppHandle, + method: String, + url: url::Url, + headers: Vec<(String, String)>, + data: Option>, + connect_timeout: Option, + max_redirections: Option, +) -> crate::Result { + let scheme = url.scheme(); + let method = Method::from_bytes(method.as_bytes())?; + let headers: HashMap = HashMap::from_iter(headers); + + match scheme { + "http" | "https" => { + if app.http().scope.is_allowed(&url) { + let mut builder = reqwest::ClientBuilder::new(); + + if let Some(timeout) = connect_timeout { + builder = builder.connect_timeout(Duration::from_millis(timeout)); + } + + if let Some(max_redirections) = max_redirections { + builder = builder.redirect(if max_redirections == 0 { + Policy::none() + } else { + Policy::limited(max_redirections) + }); + } + + let mut request = builder.build()?.request(method.clone(), url); + + for (key, value) in &headers { + let name = HeaderName::from_bytes(key.as_bytes())?; + let v = HeaderValue::from_bytes(value.as_bytes())?; + if !matches!(name, header::HOST | header::CONTENT_LENGTH) { + request = request.header(name, v); + } + } + + // POST and PUT requests should always have a 0 length content-length, + // if there is no body. https://fetch.spec.whatwg.org/#http-network-or-cache-fetch + if data.is_none() && matches!(method, Method::POST | Method::PUT) { + request = request.header(header::CONTENT_LENGTH, HeaderValue::from(0)); + } + + if headers.contains_key(header::RANGE.as_str()) { + // https://fetch.spec.whatwg.org/#http-network-or-cache-fetch step 18 + // If httpRequest’s header list contains `Range`, then append (`Accept-Encoding`, `identity`) + request = request.header( + header::ACCEPT_ENCODING, + HeaderValue::from_static("identity"), + ); + } + + if !headers.contains_key(header::USER_AGENT.as_str()) { + request = request.header(header::USER_AGENT, HeaderValue::from_static("tauri")); + } + + if let Some(data) = data { + request = request.body(data); + } + + let http_state = app.http(); + let rid = http_state.next_id(); + let fut = async move { Ok(request.send().await.map_err(Into::into)) }; + let mut request_table = http_state.requests.lock().await; + request_table.insert(rid, FetchRequest::new(Box::pin(fut))); + + Ok(rid) + } else { + Err(Error::UrlNotAllowed(url)) + } + } + "data" => { + let data_url = + data_url::DataUrl::process(url.as_str()).map_err(|_| Error::DataUrlError)?; + let (body, _) = data_url + .decode_to_vec() + .map_err(|_| Error::DataUrlDecodeError)?; + + let response = http::Response::builder() + .status(StatusCode::OK) + .header(header::CONTENT_TYPE, data_url.mime_type().to_string()) + .body(reqwest::Body::from(body))?; + + let http_state = app.http(); + let rid = http_state.next_id(); + let fut = async move { Ok(Ok(reqwest::Response::from(response))) }; + let mut request_table = http_state.requests.lock().await; + request_table.insert(rid, FetchRequest::new(Box::pin(fut))); + Ok(rid) + } + _ => Err(Error::SchemeNotSupport(scheme.to_string())), + } +} + +#[command] +pub async fn fetch_cancel(app: AppHandle, rid: RequestId) -> crate::Result<()> { + let mut request_table = app.http().requests.lock().await; + let req = request_table + .get_mut(&rid) + .ok_or(Error::InvalidRequestId(rid))?; + *req = FetchRequest::new(Box::pin(async { Err(Error::RequestCanceled) })); + Ok(()) +} + +#[command] +pub async fn fetch_send( + app: AppHandle, + rid: RequestId, +) -> crate::Result { + let mut request_table = app.http().requests.lock().await; + let req = request_table + .remove(&rid) + .ok_or(Error::InvalidRequestId(rid))?; + + let res = match req.0.lock().await.as_mut().await { + Ok(Ok(res)) => res, + Ok(Err(e)) | Err(e) => return Err(e), + }; + + let status = res.status(); + let url = res.url().to_string(); + let mut headers = Vec::new(); + for (key, val) in res.headers().iter() { + headers.push(( + key.as_str().into(), + String::from_utf8(val.as_bytes().to_vec())?, + )); + } + + app.http().responses.lock().await.insert(rid, res); + + Ok(FetchResponse { + status: status.as_u16(), + status_text: status.canonical_reason().unwrap_or_default().to_string(), + headers, + url, + }) +} + +// TODO: change return value to tauri::ipc::Response on next alpha +#[command] +pub(crate) async fn fetch_read_body( + app: AppHandle, + rid: RequestId, +) -> crate::Result> { + let mut response_table = app.http().responses.lock().await; + let res = response_table + .remove(&rid) + .ok_or(Error::InvalidRequestId(rid))?; + + Ok(res.bytes().await?.to_vec()) +} diff --git a/plugins/http/src/commands/client.rs b/plugins/http/src/commands/client.rs deleted file mode 100644 index 07614a53..00000000 --- a/plugins/http/src/commands/client.rs +++ /dev/null @@ -1,341 +0,0 @@ -// Copyright 2019-2023 Tauri Programme within The Commons Conservancy -// SPDX-License-Identifier: Apache-2.0 -// SPDX-License-Identifier: MIT - -use std::{collections::HashMap, path::PathBuf, time::Duration}; - -use reqwest::{header, Method, Url}; -use serde::{Deserialize, Deserializer, Serialize}; -use serde_json::Value; -use serde_repr::{Deserialize_repr, Serialize_repr}; - -#[derive(Deserialize)] -#[serde(untagged)] -enum SerdeDuration { - Seconds(u64), - Duration(Duration), -} - -fn deserialize_duration<'de, D: Deserializer<'de>>( - deserializer: D, -) -> std::result::Result, D::Error> { - if let Some(duration) = Option::::deserialize(deserializer)? { - Ok(Some(match duration { - SerdeDuration::Seconds(s) => Duration::from_secs(s), - SerdeDuration::Duration(d) => d, - })) - } else { - Ok(None) - } -} - -/// The builder of [`Client`]. -#[derive(Debug, Clone, Default, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct ClientBuilder { - /// Max number of redirections to follow. - pub max_redirections: Option, - /// Connect timeout for the request. - #[serde(deserialize_with = "deserialize_duration", default)] - pub connect_timeout: Option, -} - -impl ClientBuilder { - /// Builds the Client. - pub fn build(self) -> crate::Result { - let mut client_builder = reqwest::Client::builder(); - - if let Some(max_redirections) = self.max_redirections { - client_builder = client_builder.redirect(if max_redirections == 0 { - reqwest::redirect::Policy::none() - } else { - reqwest::redirect::Policy::limited(max_redirections) - }); - } - - if let Some(connect_timeout) = self.connect_timeout { - client_builder = client_builder.connect_timeout(connect_timeout); - } - - let client = client_builder.build()?; - Ok(Client(client)) - } -} - -/// The HTTP client based on [`reqwest`]. -#[derive(Debug, Clone)] -pub struct Client(reqwest::Client); - -impl Client { - /// Executes an HTTP request - /// - /// # Examples - pub async fn send(&self, mut request: HttpRequestBuilder) -> crate::Result { - let method = Method::from_bytes(request.method.to_uppercase().as_bytes())?; - - let mut request_builder = self.0.request(method, request.url.as_str()); - - if let Some(query) = request.query { - request_builder = request_builder.query(&query); - } - - if let Some(timeout) = request.timeout { - request_builder = request_builder.timeout(timeout); - } - - if let Some(body) = request.body { - request_builder = match body { - Body::Bytes(data) => request_builder.body(bytes::Bytes::from(data)), - Body::Text(text) => request_builder.body(bytes::Bytes::from(text)), - Body::Json(json) => request_builder.json(&json), - Body::Form(form_body) => { - #[allow(unused_variables)] - fn send_form( - request_builder: reqwest::RequestBuilder, - headers: &mut Option, - form_body: FormBody, - ) -> crate::Result { - #[cfg(feature = "multipart")] - if matches!( - headers - .as_ref() - .and_then(|h| h.0.get("content-type")) - .map(|v| v.as_bytes()), - Some(b"multipart/form-data") - ) { - // the Content-Type header will be set by reqwest in the `.multipart` call - headers.as_mut().map(|h| h.0.remove("content-type")); - let mut multipart = reqwest::multipart::Form::new(); - - for (name, part) in form_body.0 { - let part = match part { - FormPart::File { - file, - mime, - file_name, - } => { - let bytes: Vec = file.try_into()?; - let mut part = reqwest::multipart::Part::bytes(bytes); - if let Some(mime) = mime { - part = part.mime_str(&mime)?; - } - if let Some(file_name) = file_name { - part = part.file_name(file_name); - } - part - } - FormPart::Text(value) => reqwest::multipart::Part::text(value), - }; - - multipart = multipart.part(name, part); - } - - return Ok(request_builder.multipart(multipart)); - } - - let mut form = Vec::new(); - for (name, part) in form_body.0 { - match part { - FormPart::File { file, .. } => { - let bytes: Vec = file.try_into()?; - form.push((name, serde_json::to_string(&bytes)?)) - } - FormPart::Text(value) => form.push((name, value)), - } - } - Ok(request_builder.form(&form)) - } - send_form(request_builder, &mut request.headers, form_body)? - } - }; - } - - if let Some(headers) = request.headers { - request_builder = request_builder.headers(headers.0); - } - - let http_request = request_builder.build()?; - - let response = self.0.execute(http_request).await?; - - Ok(Response( - request.response_type.unwrap_or(ResponseType::Json), - response, - )) - } -} - -#[derive(Serialize_repr, Deserialize_repr, Clone, Debug)] -#[repr(u16)] -#[non_exhaustive] -/// The HTTP response type. -pub enum ResponseType { - /// Read the response as JSON - Json = 1, - /// Read the response as text - Text, - /// Read the response as binary - Binary, -} - -#[derive(Debug)] -pub struct Response(ResponseType, reqwest::Response); - -impl Response { - /// Reads the response. - /// - /// Note that the body is serialized to a [`Value`]. - pub async fn read(self) -> crate::Result { - let url = self.1.url().clone(); - - let mut headers = HashMap::new(); - let mut raw_headers = HashMap::new(); - for (name, value) in self.1.headers() { - headers.insert( - name.as_str().to_string(), - String::from_utf8(value.as_bytes().to_vec())?, - ); - raw_headers.insert( - name.as_str().to_string(), - self.1 - .headers() - .get_all(name) - .into_iter() - .map(|v| String::from_utf8(v.as_bytes().to_vec()).map_err(Into::into)) - .collect::>>()?, - ); - } - let status = self.1.status().as_u16(); - - let data = match self.0 { - ResponseType::Json => self.1.json().await?, - ResponseType::Text => Value::String(self.1.text().await?), - ResponseType::Binary => serde_json::to_value(&self.1.bytes().await?)?, - }; - - Ok(ResponseData { - url, - status, - headers, - raw_headers, - data, - }) - } -} - -#[derive(Debug, Serialize)] -#[serde(rename_all = "camelCase")] -#[non_exhaustive] -pub struct ResponseData { - /// Response URL. Useful if it followed redirects. - pub url: Url, - /// Response status code. - pub status: u16, - /// Response headers. - pub headers: HashMap, - /// Response raw headers. - pub raw_headers: HashMap>, - /// Response data. - pub data: Value, -} - -/// A file path or contents. -#[derive(Debug, Clone, Deserialize)] -#[serde(untagged)] -#[non_exhaustive] -pub enum FilePart { - /// File path. - Path(PathBuf), - /// File contents. - Contents(Vec), -} - -impl TryFrom for Vec { - type Error = crate::Error; - fn try_from(file: FilePart) -> crate::Result { - let bytes = match file { - FilePart::Path(path) => std::fs::read(path)?, - FilePart::Contents(bytes) => bytes, - }; - Ok(bytes) - } -} - -#[derive(Debug, Deserialize)] -#[serde(untagged)] -#[non_exhaustive] -pub enum FormPart { - /// A string value. - Text(String), - /// A file value. - #[serde(rename_all = "camelCase")] - File { - /// File path or content. - file: FilePart, - /// Mime type of this part. - /// Only used when the `Content-Type` header is set to `multipart/form-data`. - mime: Option, - /// File name. - /// Only used when the `Content-Type` header is set to `multipart/form-data`. - file_name: Option, - }, -} - -#[derive(Debug, Deserialize)] -pub struct FormBody(pub(crate) HashMap); - -#[derive(Debug, Deserialize)] -#[serde(tag = "type", content = "payload")] -#[non_exhaustive] -pub enum Body { - Form(FormBody), - Json(Value), - Text(String), - Bytes(Vec), -} - -#[derive(Debug, Default)] -pub struct HeaderMap(header::HeaderMap); - -impl<'de> Deserialize<'de> for HeaderMap { - fn deserialize(deserializer: D) -> Result - where - D: Deserializer<'de>, - { - let map = HashMap::::deserialize(deserializer)?; - let mut headers = header::HeaderMap::default(); - for (key, value) in map { - if let (Ok(key), Ok(value)) = ( - header::HeaderName::from_bytes(key.as_bytes()), - header::HeaderValue::from_str(&value), - ) { - headers.insert(key, value); - } else { - return Err(serde::de::Error::custom(format!( - "invalid header `{key}` `{value}`" - ))); - } - } - Ok(Self(headers)) - } -} - -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct HttpRequestBuilder { - /// The request method (GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS, CONNECT or TRACE) - pub method: String, - /// The request URL - pub url: Url, - /// The request query params - pub query: Option>, - /// The request headers - pub headers: Option, - /// The request body - pub body: Option, - /// Timeout for the whole request - #[serde(deserialize_with = "deserialize_duration", default)] - pub timeout: Option, - /// The response type (defaults to Json) - pub response_type: Option, -} diff --git a/plugins/http/src/commands/mod.rs b/plugins/http/src/commands/mod.rs deleted file mode 100644 index 94c71324..00000000 --- a/plugins/http/src/commands/mod.rs +++ /dev/null @@ -1,78 +0,0 @@ -// Copyright 2019-2023 Tauri Programme within The Commons Conservancy -// SPDX-License-Identifier: Apache-2.0 -// SPDX-License-Identifier: MIT - -use tauri::{path::SafePathBuf, AppHandle, Runtime, State}; -use tauri_plugin_fs::FsExt; - -use crate::{ClientId, Http}; - -mod client; -use client::{Body, ClientBuilder, FilePart, FormPart, HttpRequestBuilder, ResponseData}; - -pub use client::Client; - -#[tauri::command] -pub async fn create_client( - _app: AppHandle, - http: State<'_, Http>, - options: Option, -) -> super::Result { - let client = options.unwrap_or_default().build()?; - let mut store = http.clients.lock().unwrap(); - let id = rand::random::(); - store.insert(id, client); - Ok(id) -} - -#[tauri::command] -pub async fn drop_client( - _app: AppHandle, - http: State<'_, Http>, - client: ClientId, -) -> super::Result<()> { - let mut store = http.clients.lock().unwrap(); - store.remove(&client); - Ok(()) -} - -#[tauri::command] -pub async fn request( - app: AppHandle, - http: State<'_, Http>, - client_id: ClientId, - options: Box, -) -> super::Result { - if http.scope.is_allowed(&options.url) { - let client = http - .clients - .lock() - .unwrap() - .get(&client_id) - .ok_or_else(|| crate::Error::HttpClientNotInitialized)? - .clone(); - let options = *options; - if let Some(Body::Form(form)) = &options.body { - for value in form.0.values() { - if let FormPart::File { - file: FilePart::Path(path), - .. - } = value - { - if SafePathBuf::new(path.clone()).is_err() - || !app - .try_fs_scope() - .map(|s| s.is_allowed(path)) - .unwrap_or_default() - { - return Err(crate::Error::PathNotAllowed(path.clone())); - } - } - } - } - let response = client.send(options).await?; - Ok(response.read().await?) - } else { - Err(crate::Error::UrlNotAllowed(options.url)) - } -} diff --git a/plugins/http/src/config.rs b/plugins/http/src/config.rs index 4e9d7317..e4ac882b 100644 --- a/plugins/http/src/config.rs +++ b/plugins/http/src/config.rs @@ -2,7 +2,6 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: MIT -use reqwest::Url; use serde::Deserialize; #[derive(Deserialize)] @@ -15,9 +14,9 @@ pub struct Config { /// The scoped URL is matched against the request URL using a glob pattern. /// /// Examples: -/// - "https://**": allows all HTTPS urls +/// - "https://*" or "https://**" : allows all HTTPS urls /// - "https://*.github.com/tauri-apps/tauri": allows any subdomain of "github.com" with the "tauri-apps/api" path /// - "https://myapi.service.com/users/*": allows access to any URLs that begins with "https://myapi.service.com/users/" #[allow(rustdoc::bare_urls)] #[derive(Debug, Default, PartialEq, Eq, Clone, Deserialize)] -pub struct HttpAllowlistScope(pub Vec); +pub struct HttpAllowlistScope(pub Vec); diff --git a/plugins/http/src/error.rs b/plugins/http/src/error.rs index 8b49b0f7..457b3382 100644 --- a/plugins/http/src/error.rs +++ b/plugins/http/src/error.rs @@ -2,10 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: MIT -use std::path::PathBuf; - -use reqwest::Url; use serde::{Serialize, Serializer}; +use url::Url; + +use crate::RequestId; #[derive(Debug, thiserror::Error)] pub enum Error { @@ -15,19 +15,32 @@ pub enum Error { Io(#[from] std::io::Error), #[error(transparent)] Network(#[from] reqwest::Error), + #[error(transparent)] + Http(#[from] http::Error), + #[error(transparent)] + HttpInvalidHeaderName(#[from] http::header::InvalidHeaderName), + #[error(transparent)] + HttpInvalidHeaderValue(#[from] http::header::InvalidHeaderValue), /// URL not allowed by the scope. #[error("url not allowed on the configured scope: {0}")] UrlNotAllowed(Url), - /// Path not allowed by the scope. - #[error("path not allowed on the configured scope: {0}")] - PathNotAllowed(PathBuf), - /// Client with specified ID not found. - #[error("http client dropped or not initialized")] - HttpClientNotInitialized, + #[error(transparent)] + UrlParseError(#[from] url::ParseError), /// HTTP method error. #[error(transparent)] HttpMethod(#[from] http::method::InvalidMethod), - /// Failed to serialize header value as string. + #[error("scheme {0} not supported")] + SchemeNotSupport(String), + #[error("Request canceled")] + RequestCanceled, + #[error(transparent)] + FsError(#[from] tauri_plugin_fs::Error), + #[error("failed to process data url")] + DataUrlError, + #[error("failed to decode data url into bytes")] + DataUrlDecodeError, + #[error("invalid request id: {0}")] + InvalidRequestId(RequestId), #[error(transparent)] Utf8(#[from] std::string::FromUtf8Error), } @@ -40,3 +53,5 @@ impl Serialize for Error { serializer.serialize_str(self.to_string().as_ref()) } } + +pub type Result = std::result::Result; diff --git a/plugins/http/src/lib.rs b/plugins/http/src/lib.rs index d63107cc..7bf9217b 100644 --- a/plugins/http/src/lib.rs +++ b/plugins/http/src/lib.rs @@ -2,34 +2,60 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: MIT -use config::{Config, HttpAllowlistScope}; -pub use reqwest as client; +//! [![](https://github.com/tauri-apps/plugins-workspace/raw/v2/plugins/http/banner.png)](https://github.com/tauri-apps/plugins-workspace/tree/v2/plugins/http) +//! +//! Access the HTTP client written in Rust. + +use std::sync::atomic::AtomicU32; +use std::{collections::HashMap, future::Future, pin::Pin}; + +pub use reqwest; +use reqwest::Response; +use tauri::async_runtime::Mutex; use tauri::{ plugin::{Builder, TauriPlugin}, AppHandle, Manager, Runtime, }; -use std::{collections::HashMap, sync::Mutex}; +use crate::config::{Config, HttpAllowlistScope}; +pub use error::{Error, Result}; mod commands; mod config; mod error; mod scope; -pub use error::Error; -type Result = std::result::Result; -type ClientId = u32; +type RequestId = u32; +type CancelableResponseResult = Result>; +type CancelableResponseFuture = + Pin + Send + Sync>>; +type RequestTable = HashMap; +type ResponseTable = HashMap; -pub struct Http { +struct FetchRequest(Mutex); +impl FetchRequest { + fn new(f: CancelableResponseFuture) -> Self { + Self(Mutex::new(f)) + } +} + +struct Http { #[allow(dead_code)] app: AppHandle, - pub(crate) clients: Mutex>, - pub(crate) scope: scope::Scope, + scope: scope::Scope, + current_id: AtomicU32, + requests: Mutex, + responses: Mutex, } -impl Http {} +impl Http { + fn next_id(&self) -> RequestId { + self.current_id + .fetch_add(1, std::sync::atomic::Ordering::Relaxed) + } +} -pub trait HttpExt { +trait HttpExt { fn http(&self) -> &Http; } @@ -43,15 +69,18 @@ pub fn init() -> TauriPlugin> { Builder::>::new("http") .js_init_script(include_str!("api-iife.js").to_string()) .invoke_handler(tauri::generate_handler![ - commands::create_client, - commands::drop_client, - commands::request + commands::fetch, + commands::fetch_cancel, + commands::fetch_send, + commands::fetch_read_body, ]) .setup(|app, api| { let default_scope = HttpAllowlistScope::default(); app.manage(Http { app: app.clone(), - clients: Default::default(), + current_id: 0.into(), + requests: Default::default(), + responses: Default::default(), scope: scope::Scope::new( api.config() .as_ref() diff --git a/plugins/http/src/scope.rs b/plugins/http/src/scope.rs index 1b802ace..00ef7e08 100644 --- a/plugins/http/src/scope.rs +++ b/plugins/http/src/scope.rs @@ -2,10 +2,11 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: MIT -use crate::config::HttpAllowlistScope; use glob::Pattern; use reqwest::Url; +use crate::config::HttpAllowlistScope; + /// Scope for filesystem access. #[derive(Debug, Clone)] pub struct Scope { @@ -20,7 +21,7 @@ impl Scope { .0 .iter() .map(|url| { - glob::Pattern::new(url.as_str()).unwrap_or_else(|_| { + glob::Pattern::new(url).unwrap_or_else(|_| { panic!("scoped URL is not a valid glob pattern: `{url}`") }) }) @@ -30,9 +31,10 @@ impl Scope { /// Determines if the given URL is allowed on this scope. pub fn is_allowed(&self, url: &Url) -> bool { - self.allowed_urls - .iter() - .any(|allowed| allowed.matches(url.as_str())) + self.allowed_urls.iter().any(|allowed| { + allowed.matches(url.as_str()) + || allowed.matches(url.as_str().strip_suffix('/').unwrap_or_default()) + }) } } @@ -79,7 +81,7 @@ mod tests { let scope = super::Scope::new(&HttpAllowlistScope(vec!["http://*".parse().unwrap()])); assert!(scope.is_allowed(&"http://something.else".parse().unwrap())); - assert!(!scope.is_allowed(&"http://something.else/path/to/file".parse().unwrap())); + assert!(scope.is_allowed(&"http://something.else/path/to/file".parse().unwrap())); assert!(!scope.is_allowed(&"https://something.else".parse().unwrap())); let scope = super::Scope::new(&HttpAllowlistScope(vec!["http://**".parse().unwrap()])); diff --git a/plugins/localhost/README.md b/plugins/localhost/README.md index 5b83bf4b..d4f92c70 100644 --- a/plugins/localhost/README.md +++ b/plugins/localhost/README.md @@ -1,4 +1,4 @@ -![plugin-localhost](banner.png) +![plugin-localhost](https://github.com/tauri-apps/plugins-workspace/raw/v2/plugins/localhost/banner.png) Expose your apps assets through a localhost server instead of the default custom protocol. diff --git a/plugins/localhost/src/lib.rs b/plugins/localhost/src/lib.rs index e34a9ace..c0b42a29 100644 --- a/plugins/localhost/src/lib.rs +++ b/plugins/localhost/src/lib.rs @@ -2,6 +2,17 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: MIT +//! [![](https://github.com/tauri-apps/plugins-workspace/raw/v2/plugins/localhost/banner.png)](https://github.com/tauri-apps/plugins-workspace/tree/v2/plugins/localhost) +//! +//! Expose your apps assets through a localhost server instead of the default custom protocol. +//! +//! **Note: This plugins brings considerable security risks and you should only use it if you know what your are doing. If in doubt, use the default custom protocol implementation.** + +#![doc( + html_logo_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png", + html_favicon_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png" +)] + use std::collections::HashMap; use http::Uri; diff --git a/plugins/log/README.md b/plugins/log/README.md index 50aaecbf..ac020de1 100644 --- a/plugins/log/README.md +++ b/plugins/log/README.md @@ -1,4 +1,4 @@ -![plugin-log](banner.png) +![plugin-log](https://github.com/tauri-apps/plugins-workspace/raw/v2/plugins/log/banner.png) Configurable logging for your Tauri app. diff --git a/plugins/log/guest-js/index.ts b/plugins/log/guest-js/index.ts index 108bf05e..065d940c 100644 --- a/plugins/log/guest-js/index.ts +++ b/plugins/log/guest-js/index.ts @@ -52,7 +52,7 @@ enum LogLevel { async function log( level: LogLevel, message: string, - options?: LogOptions + options?: LogOptions, ): Promise { const traces = new Error().stack?.split("\n").map((line) => line.split("@")); @@ -95,7 +95,7 @@ async function log( */ export async function error( message: string, - options?: LogOptions + options?: LogOptions, ): Promise { await log(LogLevel.Error, message, options); } @@ -117,7 +117,7 @@ export async function error( */ export async function warn( message: string, - options?: LogOptions + options?: LogOptions, ): Promise { await log(LogLevel.Warn, message, options); } @@ -139,7 +139,7 @@ export async function warn( */ export async function info( message: string, - options?: LogOptions + options?: LogOptions, ): Promise { await log(LogLevel.Info, message, options); } @@ -161,7 +161,7 @@ export async function info( */ export async function debug( message: string, - options?: LogOptions + options?: LogOptions, ): Promise { await log(LogLevel.Debug, message, options); } @@ -183,7 +183,7 @@ export async function debug( */ export async function trace( message: string, - options?: LogOptions + options?: LogOptions, ): Promise { await log(LogLevel.Trace, message, options); } @@ -202,7 +202,7 @@ export async function attachConsole(): Promise { // TODO: Investigate security/detect-unsafe-regex // eslint-disable-next-line no-control-regex, security/detect-unsafe-regex /[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g, - "" + "", ); switch (payload.level) { diff --git a/plugins/log/package.json b/plugins/log/package.json index 703c272a..4370fa1a 100644 --- a/plugins/log/package.json +++ b/plugins/log/package.json @@ -25,7 +25,7 @@ "LICENSE" ], "devDependencies": { - "tslib": "^2.5.0" + "tslib": "2.6.0" }, "dependencies": { "@tauri-apps/api": "2.0.0-alpha.5" diff --git a/plugins/log/rollup.config.mjs b/plugins/log/rollup.config.mjs index 6555e98b..99a3dd31 100644 --- a/plugins/log/rollup.config.mjs +++ b/plugins/log/rollup.config.mjs @@ -5,7 +5,7 @@ import { createConfig } from "../../shared/rollup.config.mjs"; export default createConfig({ input: "guest-js/index.ts", pkg: JSON.parse( - readFileSync(new URL("./package.json", import.meta.url), "utf8") + readFileSync(new URL("./package.json", import.meta.url), "utf8"), ), external: [/^@tauri-apps\/api/], }); diff --git a/plugins/log/src/lib.rs b/plugins/log/src/lib.rs index 05794dd7..4ba428e5 100644 --- a/plugins/log/src/lib.rs +++ b/plugins/log/src/lib.rs @@ -2,8 +2,15 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: MIT +//! [![](https://github.com/tauri-apps/plugins-workspace/raw/v2/plugins/log/banner.png)](https://github.com/tauri-apps/plugins-workspace/tree/v2/plugins/log) +//! //! Logging for Tauri applications. +#![doc( + html_logo_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png", + html_favicon_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png" +)] + use fern::{Filter, FormatCallback}; use log::{logger, RecordBuilder}; use log::{LevelFilter, Record}; diff --git a/plugins/notification/README.md b/plugins/notification/README.md index 95ca72b3..2eaa1581 100644 --- a/plugins/notification/README.md +++ b/plugins/notification/README.md @@ -1,4 +1,4 @@ -![plugin-notification](banner.png) +![plugin-notification](https://github.com/tauri-apps/plugins-workspace/raw/v2/plugins/notification/banner.png) Send message notifications (brief auto-expiring OS window element) to your user. Can also be used with the Notification Web API. diff --git a/plugins/notification/guest-js/index.ts b/plugins/notification/guest-js/index.ts index 7de70375..979c5b43 100644 --- a/plugins/notification/guest-js/index.ts +++ b/plugins/notification/guest-js/index.ts @@ -296,7 +296,7 @@ type Permission = "granted" | "denied" | "default"; * Checks if the permission to send notifications is granted. * @example * ```typescript - * import { isPermissionGranted } from '@tauri-apps/api/notification'; + * import { isPermissionGranted } from '@tauri-apps/plugin-notification'; * const permissionGranted = await isPermissionGranted(); * ``` * @@ -313,7 +313,7 @@ async function isPermissionGranted(): Promise { * Requests the permission to send notifications. * @example * ```typescript - * import { isPermissionGranted, requestPermission } from '@tauri-apps/api/notification'; + * import { isPermissionGranted, requestPermission } from '@tauri-apps/plugin-notification'; * let permissionGranted = await isPermissionGranted(); * if (!permissionGranted) { * const permission = await requestPermission(); @@ -333,7 +333,7 @@ async function requestPermission(): Promise { * Sends a notification to the user. * @example * ```typescript - * import { isPermissionGranted, requestPermission, sendNotification } from '@tauri-apps/api/notification'; + * import { isPermissionGranted, requestPermission, sendNotification } from '@tauri-apps/plugin-notification'; * let permissionGranted = await isPermissionGranted(); * if (!permissionGranted) { * const permission = await requestPermission(); @@ -362,7 +362,7 @@ function sendNotification(options: Options | string): void { * * @example * ```typescript - * import { registerActionTypes } from '@tauri-apps/api/notification'; + * import { registerActionTypes } from '@tauri-apps/plugin-notification'; * await registerActionTypes([{ * id: 'tauri', * actions: [{ @@ -385,7 +385,7 @@ async function registerActionTypes(types: ActionType[]): Promise { * * @example * ```typescript - * import { pending } from '@tauri-apps/api/notification'; + * import { pending } from '@tauri-apps/plugin-notification'; * const pendingNotifications = await pending(); * ``` * @@ -402,7 +402,7 @@ async function pending(): Promise { * * @example * ```typescript - * import { cancel } from '@tauri-apps/api/notification'; + * import { cancel } from '@tauri-apps/plugin-notification'; * await cancel([-34234, 23432, 4311]); * ``` * @@ -419,7 +419,7 @@ async function cancel(notifications: number[]): Promise { * * @example * ```typescript - * import { cancelAll } from '@tauri-apps/api/notification'; + * import { cancelAll } from '@tauri-apps/plugin-notification'; * await cancelAll(); * ``` * @@ -436,7 +436,7 @@ async function cancelAll(): Promise { * * @example * ```typescript - * import { active } from '@tauri-apps/api/notification'; + * import { active } from '@tauri-apps/plugin-notification'; * const activeNotifications = await active(); * ``` * @@ -453,7 +453,7 @@ async function active(): Promise { * * @example * ```typescript - * import { cancel } from '@tauri-apps/api/notification'; + * import { cancel } from '@tauri-apps/plugin-notification'; * await cancel([-34234, 23432, 4311]) * ``` * @@ -470,7 +470,7 @@ async function removeActive(notifications: number[]): Promise { * * @example * ```typescript - * import { removeAllActive } from '@tauri-apps/api/notification'; + * import { removeAllActive } from '@tauri-apps/plugin-notification'; * await removeAllActive() * ``` * @@ -487,7 +487,7 @@ async function removeAllActive(): Promise { * * @example * ```typescript - * import { createChannel, Importance, Visibility } from '@tauri-apps/api/notification'; + * import { createChannel, Importance, Visibility } from '@tauri-apps/plugin-notification'; * await createChannel({ * id: 'new-messages', * name: 'New Messages', @@ -511,7 +511,7 @@ async function createChannel(channel: Channel): Promise { * * @example * ```typescript - * import { removeChannel } from '@tauri-apps/api/notification'; + * import { removeChannel } from '@tauri-apps/plugin-notification'; * await removeChannel(); * ``` * @@ -528,7 +528,7 @@ async function removeChannel(id: string): Promise { * * @example * ```typescript - * import { channels } from '@tauri-apps/api/notification'; + * import { channels } from '@tauri-apps/plugin-notification'; * const notificationChannels = await channels(); * ``` * @@ -541,13 +541,13 @@ async function channels(): Promise { } async function onNotificationReceived( - cb: (notification: Options) => void + cb: (notification: Options) => void, ): Promise { return addPluginListener("notification", "notification", cb); } async function onAction( - cb: (notification: Options) => void + cb: (notification: Options) => void, ): Promise { return addPluginListener("notification", "actionPerformed", cb); } diff --git a/plugins/notification/rollup.config.mjs b/plugins/notification/rollup.config.mjs index 6555e98b..99a3dd31 100644 --- a/plugins/notification/rollup.config.mjs +++ b/plugins/notification/rollup.config.mjs @@ -5,7 +5,7 @@ import { createConfig } from "../../shared/rollup.config.mjs"; export default createConfig({ input: "guest-js/index.ts", pkg: JSON.parse( - readFileSync(new URL("./package.json", import.meta.url), "utf8") + readFileSync(new URL("./package.json", import.meta.url), "utf8"), ), external: [/^@tauri-apps\/api/], }); diff --git a/plugins/notification/src/lib.rs b/plugins/notification/src/lib.rs index 03f6db09..b1e28474 100644 --- a/plugins/notification/src/lib.rs +++ b/plugins/notification/src/lib.rs @@ -2,6 +2,15 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: MIT +//! [![](https://github.com/tauri-apps/plugins-workspace/raw/v2/plugins/notification/banner.png)](https://github.com/tauri-apps/plugins-workspace/tree/v2/plugins/notification) +//! +//! Send message notifications (brief auto-expiring OS window element) to your user. Can also be used with the Notification Web API. + +#![doc( + html_logo_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png", + html_favicon_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png" +)] + use serde::Serialize; #[cfg(mobile)] use tauri::plugin::PluginHandle; diff --git a/plugins/os/README.md b/plugins/os/README.md index f7ce7954..103f851f 100644 --- a/plugins/os/README.md +++ b/plugins/os/README.md @@ -1,4 +1,4 @@ -![plugin-os](banner.png) +![plugin-os](https://github.com/tauri-apps/plugins-workspace/raw/v2/plugins/os/banner.png) Read information about the operating system. diff --git a/plugins/os/guest-js/index.ts b/plugins/os/guest-js/index.ts index 5c85b579..02803361 100644 --- a/plugins/os/guest-js/index.ts +++ b/plugins/os/guest-js/index.ts @@ -166,7 +166,7 @@ async function exeExtension(): Promise { * Returns the host name of the operating system. * @example * ```typescript - * import { hostname } from '@tauri-apps/api/os'; + * import { hostname } from '@tauri-apps/plugin-os'; * const hostname = await hostname(); * ``` */ diff --git a/plugins/os/package.json b/plugins/os/package.json index 51524b54..93a51096 100644 --- a/plugins/os/package.json +++ b/plugins/os/package.json @@ -24,7 +24,7 @@ "LICENSE" ], "devDependencies": { - "tslib": "^2.5.0" + "tslib": "2.6.0" }, "dependencies": { "@tauri-apps/api": "2.0.0-alpha.5" diff --git a/plugins/os/rollup.config.mjs b/plugins/os/rollup.config.mjs index 6555e98b..99a3dd31 100644 --- a/plugins/os/rollup.config.mjs +++ b/plugins/os/rollup.config.mjs @@ -5,7 +5,7 @@ import { createConfig } from "../../shared/rollup.config.mjs"; export default createConfig({ input: "guest-js/index.ts", pkg: JSON.parse( - readFileSync(new URL("./package.json", import.meta.url), "utf8") + readFileSync(new URL("./package.json", import.meta.url), "utf8"), ), external: [/^@tauri-apps\/api/], }); diff --git a/plugins/os/src/lib.rs b/plugins/os/src/lib.rs index c66580d1..fab629d5 100644 --- a/plugins/os/src/lib.rs +++ b/plugins/os/src/lib.rs @@ -2,6 +2,15 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: MIT +//! [![](https://github.com/tauri-apps/plugins-workspace/raw/v2/plugins/os/banner.png)](https://github.com/tauri-apps/plugins-workspace/tree/v2/plugins/os) +//! +//! Read information about the operating system. + +#![doc( + html_logo_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png", + html_favicon_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png" +)] + use std::fmt::Display; pub use os_info::Version; diff --git a/plugins/persisted-scope/CHANGELOG.md b/plugins/persisted-scope/CHANGELOG.md index 5bb1d362..fea6e6de 100644 --- a/plugins/persisted-scope/CHANGELOG.md +++ b/plugins/persisted-scope/CHANGELOG.md @@ -5,6 +5,16 @@ - [`ebb2eb2`](https://github.com/tauri-apps/plugins-workspace/commit/ebb2eb2fe2ebfbb70530d16a983d396aa5829aa1)([#274](https://github.com/tauri-apps/plugins-workspace/pull/274)) Recursively unescape saved patterns before allowing/forbidding them. This effectively prevents `.persisted-scope` files from blowing up, which caused Out-Of-Memory issues, while automatically fixing existing broken files seamlessly. - [`717ae67`](https://github.com/tauri-apps/plugins-workspace/commit/717ae670978feb4492fac1f295998b93f2b9347f)([#371](https://github.com/tauri-apps/plugins-workspace/pull/371)) First v2 alpha release! +## \[0.1.3] + +- Split up fs and asset scopes. **This will reset the asset protocol scope once!** + - [ad30286](https://github.com/tauri-apps/plugins-workspace/commit/ad3028646c96ed213a2f483823ffdc3c17b5fc1e) fix(persisted-scope): separately save asset protocol patterns ([#459](https://github.com/tauri-apps/plugins-workspace/pull/459)) on 2023-07-10 + +## \[0.1.2] + +- Fix usage of directory patterns by removing glob asterisks at the end before allowing/forbidding them. This was causing them to be escaped, and so undesirable paths were allowed/forbidden while polluting the `.persisted_scope` file. + - [9174b80](https://github.com/tauri-apps/plugins-workspace/commit/9174b808dc37154999c119fcc3f31258a9c5a3fb) \[persisted scope] fix: handle recursive directory correctly ([#455](https://github.com/tauri-apps/plugins-workspace/pull/455)) on 2023-06-29 + ## \[0.1.1] - The MSRV was raised to 1.64! diff --git a/plugins/persisted-scope/README.md b/plugins/persisted-scope/README.md index 1a7e19bf..6e271330 100644 --- a/plugins/persisted-scope/README.md +++ b/plugins/persisted-scope/README.md @@ -1,4 +1,4 @@ -![plugin-persisted-scope](banner.png) +![plugin-persisted-scope](https://github.com/tauri-apps/plugins-workspace/raw/v2/plugins/persisted-scope/banner.png) Save filesystem and asset scopes and restore them when the app is reopened. diff --git a/plugins/persisted-scope/src/lib.rs b/plugins/persisted-scope/src/lib.rs index f1e02c18..b4803dc9 100644 --- a/plugins/persisted-scope/src/lib.rs +++ b/plugins/persisted-scope/src/lib.rs @@ -2,21 +2,36 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: MIT +//! [![](https://github.com/tauri-apps/plugins-workspace/raw/v2/plugins/persisted-scope/banner.png)](https://github.com/tauri-apps/plugins-workspace/tree/v2/plugins/persisted-scope) +//! +//! Save filesystem and asset scopes and restore them when the app is reopened. + +#![doc( + html_logo_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png", + html_favicon_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png" +)] + use aho_corasick::AhoCorasick; use serde::{Deserialize, Serialize}; use tauri::{ plugin::{Builder, TauriPlugin}, - AppHandle, Manager, Runtime, + GlobPattern, Manager, Runtime, }; -use tauri_plugin_fs::{FsExt, ScopeEvent as FsScopeEvent}; +#[cfg(feature = "protocol-asset")] +use tauri::{FsScope, FsScopeEvent}; +use tauri_plugin_fs::{FsExt, Scope as FsPluginScope, ScopeEvent as FsPluginScopeEvent}; use std::{ + collections::HashSet, fs::{create_dir_all, File}, io::Write, path::Path, }; +// Using 2 separate files so that we don't have to think about write conflicts and not break backwards compat. const SCOPE_STATE_FILENAME: &str = ".persisted-scope"; +#[cfg(feature = "protocol-asset")] +const ASSET_SCOPE_STATE_FILENAME: &str = ".persisted-scope-asset"; // Most of these patterns are just added to try to fix broken files in the wild. // After a while we can hopefully reduce it to something like [r"[?]", r"[*]", r"\\?\\\?\"] @@ -31,6 +46,70 @@ const PATTERNS: &[&str] = &[ ]; const REPLACE_WITH: &[&str] = &[r"[", r"]", r"?", r"*", r"\?", r"\\?\", r"\\?\"]; +trait ScopeExt { + fn allow_file(&self, path: &Path); + fn allow_directory(&self, path: &Path, recursive: bool); + + fn forbid_file(&self, path: &Path); + fn forbid_directory(&self, path: &Path, recursive: bool); + + fn allowed_patterns(&self) -> HashSet; + fn forbidden_patterns(&self) -> HashSet; +} + +impl ScopeExt for &FsPluginScope { + fn allow_file(&self, path: &Path) { + let _ = FsPluginScope::allow_file(self, path); + } + + fn allow_directory(&self, path: &Path, recursive: bool) { + let _ = FsPluginScope::allow_directory(self, path, recursive); + } + + fn forbid_file(&self, path: &Path) { + let _ = FsPluginScope::forbid_file(self, path); + } + + fn forbid_directory(&self, path: &Path, recursive: bool) { + let _ = FsPluginScope::forbid_directory(self, path, recursive); + } + + fn allowed_patterns(&self) -> HashSet { + FsPluginScope::allowed_patterns(self) + } + + fn forbidden_patterns(&self) -> HashSet { + FsPluginScope::forbidden_patterns(self) + } +} + +#[cfg(feature = "protocol-asset")] +impl ScopeExt for &FsScope { + fn allow_file(&self, path: &Path) { + let _ = FsScope::allow_file(self, path); + } + + fn allow_directory(&self, path: &Path, recursive: bool) { + let _ = FsScope::allow_directory(self, path, recursive); + } + + fn forbid_file(&self, path: &Path) { + let _ = FsScope::forbid_file(self, path); + } + + fn forbid_directory(&self, path: &Path, recursive: bool) { + let _ = FsScope::forbid_directory(self, path, recursive); + } + + fn allowed_patterns(&self) -> HashSet { + FsScope::allowed_patterns(self) + } + + fn forbidden_patterns(&self) -> HashSet { + FsScope::forbidden_patterns(self) + } +} + #[derive(Debug, thiserror::Error)] enum Error { #[error(transparent)] @@ -43,6 +122,14 @@ enum Error { Bincode(#[from] Box), } +#[derive(Debug, Default, Deserialize, Serialize, Eq, PartialEq, Hash)] +enum TargetType { + #[default] + File, + Directory, + RecursiveDirectory, +} + #[derive(Debug, Default, Deserialize, Serialize)] struct Scope { allowed_paths: Vec, @@ -59,85 +146,173 @@ fn fix_pattern(ac: &AhoCorasick, s: &str) -> String { s } -fn save_scopes(app: &AppHandle, app_dir: &Path, scope_state_path: &Path) { - if let Some(fs_scope) = app.try_fs_scope() { - let scope = Scope { - allowed_paths: fs_scope - .allowed_patterns() - .into_iter() - .map(|p| p.to_string()) - .collect(), - forbidden_patterns: fs_scope - .forbidden_patterns() - .into_iter() - .map(|p| p.to_string()) - .collect(), +const RESURSIVE_DIRECTORY_SUFFIX: &str = "**"; +const DIRECTORY_SUFFIX: &str = "*"; + +fn detect_scope_type(scope_state_path: &str) -> TargetType { + if scope_state_path.ends_with(RESURSIVE_DIRECTORY_SUFFIX) { + TargetType::RecursiveDirectory + } else if scope_state_path.ends_with(DIRECTORY_SUFFIX) { + TargetType::Directory + } else { + TargetType::File + } +} + +fn fix_directory(path_str: &str) -> &Path { + let mut path = Path::new(path_str); + + if path.ends_with(DIRECTORY_SUFFIX) || path.ends_with(RESURSIVE_DIRECTORY_SUFFIX) { + path = match path.parent() { + Some(value) => value, + None => return path, }; + } + + path +} + +fn allow_path(scope: impl ScopeExt, path: &str) { + let target_type = detect_scope_type(path); + + match target_type { + TargetType::File => { + scope.allow_file(Path::new(path)); + } + TargetType::Directory => { + // We remove the '*' at the end of it, else it will be escaped by the pattern. + scope.allow_directory(fix_directory(path), false); + } + TargetType::RecursiveDirectory => { + // We remove the '**' at the end of it, else it will be escaped by the pattern. + scope.allow_directory(fix_directory(path), true); + } + } +} - let _ = create_dir_all(app_dir) - .and_then(|_| File::create(scope_state_path)) - .map_err(Error::Io) - .and_then(|mut f| { - f.write_all(&bincode::serialize(&scope).map_err(Error::from)?) - .map_err(Into::into) - }); +fn forbid_path(scope: impl ScopeExt, path: &str) { + let target_type = detect_scope_type(path); + + match target_type { + TargetType::File => { + scope.forbid_file(Path::new(path)); + } + TargetType::Directory => { + scope.forbid_directory(fix_directory(path), false); + } + TargetType::RecursiveDirectory => { + scope.forbid_directory(fix_directory(path), true); + } } } +fn save_scopes(scope: impl ScopeExt, app_dir: &Path, scope_state_path: &Path) { + let scope = Scope { + allowed_paths: scope + .allowed_patterns() + .into_iter() + .map(|p| p.to_string()) + .collect(), + forbidden_patterns: scope + .forbidden_patterns() + .into_iter() + .map(|p| p.to_string()) + .collect(), + }; + + let _ = create_dir_all(app_dir) + .and_then(|_| File::create(scope_state_path)) + .map_err(Error::Io) + .and_then(|mut f| { + f.write_all(&bincode::serialize(&scope).map_err(Error::from)?) + .map_err(Into::into) + }); +} + pub fn init() -> TauriPlugin { Builder::new("persisted-scope") .setup(|app, _api| { let fs_scope = app.try_fs_scope(); - let core_scopes = app.state::(); + #[cfg(feature = "protocol-asset")] + let asset_protocol_scope = app.asset_protocol_scope(); let app = app.clone(); let app_dir = app.path().app_data_dir(); if let Ok(app_dir) = app_dir { - let scope_state_path = app_dir.join(SCOPE_STATE_FILENAME); + let fs_scope_state_path = app_dir.join(SCOPE_STATE_FILENAME); + #[cfg(feature = "protocol-asset")] + let asset_scope_state_path = app_dir.join(ASSET_SCOPE_STATE_FILENAME); - if let Some(s) = fs_scope { - let _ = s.forbid_file(&scope_state_path); - } - let _ = core_scopes.forbid_file(&scope_state_path); + if let Some(fs_scope) = fs_scope { + let _ = fs_scope.forbid_file(&fs_scope_state_path);} + #[cfg(feature = "protocol-asset")] + let _ = asset_protocol_scope.forbid_file(&asset_scope_state_path); // We're trying to fix broken .persisted-scope files seamlessly, so we'll be running this on the values read on the saved file. // We will still save some semi-broken values because the scope events are quite spammy and we don't want to reduce runtime performance any further. let ac = AhoCorasick::new(PATTERNS).unwrap(/* This should be impossible to fail since we're using a small static input */); - if scope_state_path.exists() { - let scope: Scope = tauri::api::file::read_binary(&scope_state_path) + if let Some(fs_scope) = fs_scope { + if fs_scope_state_path.exists() { + let scope: Scope = tauri::api::file::read_binary(&fs_scope_state_path) .map_err(Error::from) .and_then(|scope| bincode::deserialize(&scope).map_err(Into::into)) .unwrap_or_default(); + for allowed in &scope.allowed_paths { let allowed = fix_pattern(&ac, allowed); - - if let Some(s) = fs_scope { - let _ = s.allow_file(&allowed); - } - let _ = core_scopes.allow_file(&allowed); + allow_path(fs_scope, &allowed); } for forbidden in &scope.forbidden_patterns { let forbidden = fix_pattern(&ac, forbidden); - - if let Some(s) = fs_scope { - let _ = s.forbid_file(&forbidden); - } - let _ = core_scopes.forbid_file(&forbidden); + forbid_path(fs_scope, &forbidden); } // Manually save the fixed scopes to disk once. // This is needed to fix broken .peristed-scope files in case the app doesn't update the scope itself. - save_scopes(&app, &app_dir, &scope_state_path); + save_scopes(fs_scope, &app_dir, &fs_scope_state_path); + } + } + + #[cfg(feature = "protocol-asset")] + if asset_scope_state_path.exists() { + let scope: Scope = tauri::api::file::read_binary(&asset_scope_state_path) + .map_err(Error::from) + .and_then(|scope| bincode::deserialize(&scope).map_err(Into::into)) + .unwrap_or_default(); + + for allowed in &scope.allowed_paths { + let allowed = fix_pattern(&ac, allowed); + allow_path(&asset_protocol_scope, &allowed); + } + for forbidden in &scope.forbidden_patterns { + let forbidden = fix_pattern(&ac, forbidden); + forbid_path(&asset_protocol_scope, &forbidden); + } + + // Manually save the fixed scopes to disk once. + save_scopes(&asset_protocol_scope, &app_dir, &asset_scope_state_path); } - if let Some(s) = fs_scope { - s.listen(move |event| { - if let FsScopeEvent::PathAllowed(_) = event { - save_scopes(&app, &app_dir, &scope_state_path); + #[cfg(feature = "protocol-asset")] + let app_dir_ = app_dir.clone(); + if let Some(fs_scope) = fs_scope { + let fs_scope_ = fs_scope.clone(); + fs_scope.listen(move |event| { + if let FsPluginScopeEvent::PathAllowed(_) = event { + save_scopes(&fs_scope_, &app_dir, &fs_scope_state_path); } }); } + + #[cfg(feature = "protocol-asset")] + { + let asset_protocol_scope_ = asset_protocol_scope.clone(); + asset_protocol_scope.listen(move |event| { + if let FsScopeEvent::PathAllowed(_) = event { + save_scopes(&asset_protocol_scope_, &app_dir_, &asset_scope_state_path); + } + });} } Ok(()) }) diff --git a/plugins/positioner/README.md b/plugins/positioner/README.md index e80eb516..6df43988 100644 --- a/plugins/positioner/README.md +++ b/plugins/positioner/README.md @@ -1,4 +1,4 @@ -![plugin-positioner](banner.png) +![plugin-positioner](https://github.com/tauri-apps/plugins-workspace/raw/v2/plugins/positioner/banner.png) Position your windows at well-known locations. diff --git a/plugins/positioner/package.json b/plugins/positioner/package.json index 09b1ffcc..0593b4a0 100644 --- a/plugins/positioner/package.json +++ b/plugins/positioner/package.json @@ -25,7 +25,7 @@ "LICENSE" ], "devDependencies": { - "tslib": "^2.5.0" + "tslib": "2.6.0" }, "dependencies": { "@tauri-apps/api": "2.0.0-alpha.5" diff --git a/plugins/positioner/rollup.config.mjs b/plugins/positioner/rollup.config.mjs index 6555e98b..99a3dd31 100644 --- a/plugins/positioner/rollup.config.mjs +++ b/plugins/positioner/rollup.config.mjs @@ -5,7 +5,7 @@ import { createConfig } from "../../shared/rollup.config.mjs"; export default createConfig({ input: "guest-js/index.ts", pkg: JSON.parse( - readFileSync(new URL("./package.json", import.meta.url), "utf8") + readFileSync(new URL("./package.json", import.meta.url), "utf8"), ), external: [/^@tauri-apps\/api/], }); diff --git a/plugins/positioner/src/lib.rs b/plugins/positioner/src/lib.rs index b7f83c41..0a412d9a 100644 --- a/plugins/positioner/src/lib.rs +++ b/plugins/positioner/src/lib.rs @@ -3,14 +3,20 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: MIT +//! [![](https://github.com/tauri-apps/plugins-workspace/raw/v2/plugins/positioner/banner.png)](https://github.com/tauri-apps/plugins-workspace/tree/v2/plugins/positioner) +//! //! A plugin for Tauri that helps position your windows at well-known locations. //! //! # Cargo features //! //! - **system-tray**: Enables system-tray-relative positions. -//! +//! //! Note: This requires attaching the Tauri plugin, *even* when using the trait extension only. +#![doc( + html_logo_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png", + html_favicon_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png" +)] #![cfg(not(any(target_os = "android", target_os = "ios")))] mod ext; diff --git a/plugins/process/README.md b/plugins/process/README.md index 10b0a111..ac4e5f0b 100644 --- a/plugins/process/README.md +++ b/plugins/process/README.md @@ -1,4 +1,4 @@ -![plugin-process](banner.png) +![plugin-process](https://github.com/tauri-apps/plugins-workspace/raw/v2/plugins/process/banner.png) This plugin provides APIs to access the current process. To spawn child processes, see the [`shell`](https://github.com/tauri-apps/tauri-plugin-shell) plugin. diff --git a/plugins/process/package.json b/plugins/process/package.json index 95357b0c..92490d55 100644 --- a/plugins/process/package.json +++ b/plugins/process/package.json @@ -24,7 +24,7 @@ "LICENSE" ], "devDependencies": { - "tslib": "^2.5.0" + "tslib": "2.6.0" }, "dependencies": { "@tauri-apps/api": "2.0.0-alpha.5" diff --git a/plugins/process/rollup.config.mjs b/plugins/process/rollup.config.mjs index 6555e98b..99a3dd31 100644 --- a/plugins/process/rollup.config.mjs +++ b/plugins/process/rollup.config.mjs @@ -5,7 +5,7 @@ import { createConfig } from "../../shared/rollup.config.mjs"; export default createConfig({ input: "guest-js/index.ts", pkg: JSON.parse( - readFileSync(new URL("./package.json", import.meta.url), "utf8") + readFileSync(new URL("./package.json", import.meta.url), "utf8"), ), external: [/^@tauri-apps\/api/], }); diff --git a/plugins/process/src/lib.rs b/plugins/process/src/lib.rs index d6c327b3..2de82914 100644 --- a/plugins/process/src/lib.rs +++ b/plugins/process/src/lib.rs @@ -2,6 +2,15 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: MIT +//! [![](https://github.com/tauri-apps/plugins-workspace/raw/v2/plugins/process/banner.png)](https://github.com/tauri-apps/plugins-workspace/tree/v2/plugins/process) +//! +//! This plugin provides APIs to access the current process. To spawn child processes, see the [`shell`](https://github.com/tauri-apps/tauri-plugin-shell) plugin. + +#![doc( + html_logo_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png", + html_favicon_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png" +)] + use tauri::{ plugin::{Builder, TauriPlugin}, Runtime, diff --git a/plugins/shell/README.md b/plugins/shell/README.md index 8389a687..dd99edf8 100644 --- a/plugins/shell/README.md +++ b/plugins/shell/README.md @@ -1,4 +1,4 @@ -![plugin-shell](banner.png) +![plugin-shell](https://github.com/tauri-apps/plugins-workspace/raw/v2/plugins/shell/banner.png) Access the system shell. Allows you to spawn child processes and manage files and URLs using their default application. diff --git a/plugins/shell/guest-js/index.ts b/plugins/shell/guest-js/index.ts index 32c34f6e..6c567c21 100644 --- a/plugins/shell/guest-js/index.ts +++ b/plugins/shell/guest-js/index.ts @@ -122,7 +122,7 @@ async function execute( onEvent: (event: CommandEvent) => void, program: string, args: string | string[] = [], - options?: InternalSpawnOptions + options?: InternalSpawnOptions, ): Promise { if (typeof args === "object") { Object.freeze(args); @@ -153,7 +153,7 @@ class EventEmitter> { */ addListener( eventName: N, - listener: (arg: E[typeof eventName]) => void + listener: (arg: E[typeof eventName]) => void, ): this { return this.on(eventName, listener); } @@ -165,7 +165,7 @@ class EventEmitter> { */ removeListener( eventName: N, - listener: (arg: E[typeof eventName]) => void + listener: (arg: E[typeof eventName]) => void, ): this { return this.off(eventName, listener); } @@ -182,7 +182,7 @@ class EventEmitter> { */ on( eventName: N, - listener: (arg: E[typeof eventName]) => void + listener: (arg: E[typeof eventName]) => void, ): this { if (eventName in this.eventListeners) { // eslint-disable-next-line security/detect-object-injection @@ -204,7 +204,7 @@ class EventEmitter> { */ once( eventName: N, - listener: (arg: E[typeof eventName]) => void + listener: (arg: E[typeof eventName]) => void, ): this { const wrapper = (arg: E[typeof eventName]): void => { this.removeListener(eventName, wrapper); @@ -222,12 +222,12 @@ class EventEmitter> { */ off( eventName: N, - listener: (arg: E[typeof eventName]) => void + listener: (arg: E[typeof eventName]) => void, ): this { if (eventName in this.eventListeners) { // eslint-disable-next-line security/detect-object-injection this.eventListeners[eventName] = this.eventListeners[eventName].filter( - (l) => l !== listener + (l) => l !== listener, ); } return this; @@ -295,7 +295,7 @@ class EventEmitter> { */ prependListener( eventName: N, - listener: (arg: E[typeof eventName]) => void + listener: (arg: E[typeof eventName]) => void, ): this { if (eventName in this.eventListeners) { // eslint-disable-next-line security/detect-object-injection @@ -317,7 +317,7 @@ class EventEmitter> { */ prependOnceListener( eventName: N, - listener: (arg: E[typeof eventName]) => void + listener: (arg: E[typeof eventName]) => void, ): this { // eslint-disable-next-line @typescript-eslint/no-explicit-any const wrapper = (arg: any): void => { @@ -434,7 +434,7 @@ class Command extends EventEmitter { private constructor( program: string, args: string | string[] = [], - options?: SpawnOptions + options?: SpawnOptions, ) { super(); this.program = program; @@ -446,12 +446,12 @@ class Command extends EventEmitter { static create( program: string, args?: string | string[], - options?: SpawnOptions & { encoding: "raw" } + options?: SpawnOptions & { encoding: "raw" }, ): Command; static create( program: string, args?: string | string[], - options?: SpawnOptions + options?: SpawnOptions, ): Command; /** @@ -469,7 +469,7 @@ class Command extends EventEmitter { static create( program: string, args: string | string[] = [], - options?: SpawnOptions + options?: SpawnOptions, ): Command { return new Command(program, args, options); } @@ -478,12 +478,12 @@ class Command extends EventEmitter { static sidecar( program: string, args?: string | string[], - options?: SpawnOptions & { encoding: "raw" } + options?: SpawnOptions & { encoding: "raw" }, ): Command; static sidecar( program: string, args?: string | string[], - options?: SpawnOptions + options?: SpawnOptions, ): Command; /** @@ -501,7 +501,7 @@ class Command extends EventEmitter { static sidecar( program: string, args: string | string[] = [], - options?: SpawnOptions + options?: SpawnOptions, ): Command { const instance = new Command(program, args, options); instance.options.sidecar = true; @@ -535,7 +535,7 @@ class Command extends EventEmitter { }, this.program, this.args, - this.options + this.options, ).then((pid) => new Child(pid)); } diff --git a/plugins/shell/rollup.config.mjs b/plugins/shell/rollup.config.mjs index 6555e98b..99a3dd31 100644 --- a/plugins/shell/rollup.config.mjs +++ b/plugins/shell/rollup.config.mjs @@ -5,7 +5,7 @@ import { createConfig } from "../../shared/rollup.config.mjs"; export default createConfig({ input: "guest-js/index.ts", pkg: JSON.parse( - readFileSync(new URL("./package.json", import.meta.url), "utf8") + readFileSync(new URL("./package.json", import.meta.url), "utf8"), ), external: [/^@tauri-apps\/api/], }); diff --git a/plugins/shell/src/init.js b/plugins/shell/src/init.js index 61cbe3b4..c5297948 100644 --- a/plugins/shell/src/init.js +++ b/plugins/shell/src/init.js @@ -12,7 +12,7 @@ if ( target.href && ["http://", "https://", "mailto:", "tel:"].some((v) => - target.href.startsWith(v) + target.href.startsWith(v), ) && target.target === "_blank" ) { diff --git a/plugins/shell/src/lib.rs b/plugins/shell/src/lib.rs index d7637ea5..70caad6c 100644 --- a/plugins/shell/src/lib.rs +++ b/plugins/shell/src/lib.rs @@ -2,8 +2,19 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: MIT +//! [![](https://github.com/tauri-apps/plugins-workspace/raw/v2/plugins/shell/banner.png)](https://github.com/tauri-apps/plugins-workspace/tree/v2/plugins/shell) +//! +//! Access the system shell. Allows you to spawn child processes and manage files and URLs using their default application. + +#![doc( + html_logo_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png", + html_favicon_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png" +)] + use std::{ collections::HashMap, + ffi::OsStr, + path::Path, sync::{Arc, Mutex}, }; @@ -36,7 +47,7 @@ pub struct Shell { impl Shell { /// Creates a new Command for launching the given program. - pub fn command(&self, program: impl Into) -> Command { + pub fn command(&self, program: impl AsRef) -> Command { Command::new(program) } @@ -44,7 +55,7 @@ impl Shell { /// /// A sidecar program is a embedded external binary in order to make your application work /// or to prevent users having to install additional dependencies (e.g. Node.js, Python, etc). - pub fn sidecar(&self, program: impl Into) -> Result { + pub fn sidecar(&self, program: impl AsRef) -> Result { Command::new_sidecar(program) } diff --git a/plugins/shell/src/process/mod.rs b/plugins/shell/src/process/mod.rs index d677d636..11a3154e 100644 --- a/plugins/shell/src/process/mod.rs +++ b/plugins/shell/src/process/mod.rs @@ -3,9 +3,9 @@ // SPDX-License-Identifier: MIT use std::{ - collections::HashMap, + ffi::OsStr, io::{BufReader, Write}, - path::PathBuf, + path::{Path, PathBuf}, process::{Command as StdCommand, Stdio}, sync::{Arc, RwLock}, thread::spawn, @@ -53,13 +53,7 @@ pub enum CommandEvent { /// The type to spawn commands. #[derive(Debug)] -pub struct Command { - program: String, - args: Vec, - env_clear: bool, - env: HashMap, - current_dir: Option, -} +pub struct Command(StdCommand); /// Spawned child process. #[derive(Debug)] @@ -116,49 +110,44 @@ pub struct Output { pub stderr: Vec, } -fn relative_command_path(command: String) -> crate::Result { +fn relative_command_path(command: &Path) -> crate::Result { match platform::current_exe()?.parent() { #[cfg(windows)] - Some(exe_dir) => Ok(format!("{}\\{command}.exe", exe_dir.display())), + Some(exe_dir) => Ok(exe_dir.join(command).with_extension("exe")), #[cfg(not(windows))] - Some(exe_dir) => Ok(format!("{}/{command}", exe_dir.display())), + Some(exe_dir) => Ok(exe_dir.join(command)), None => Err(crate::Error::CurrentExeHasNoParent), } } impl From for StdCommand { fn from(cmd: Command) -> StdCommand { - let mut command = StdCommand::new(cmd.program); - command.args(cmd.args); + cmd.0 + } +} + +impl Command { + pub(crate) fn new>(program: S) -> Self { + let mut command = StdCommand::new(program); + command.stdout(Stdio::piped()); command.stdin(Stdio::piped()); command.stderr(Stdio::piped()); - if cmd.env_clear { - command.env_clear(); - } - command.envs(cmd.env); - if let Some(current_dir) = cmd.current_dir { - command.current_dir(current_dir); - } #[cfg(windows)] command.creation_flags(CREATE_NO_WINDOW); - command + + Self(command) } -} -impl Command { - pub(crate) fn new>(program: S) -> Self { - Self { - program: program.into(), - args: Default::default(), - env_clear: false, - env: Default::default(), - current_dir: None, - } + pub(crate) fn new_sidecar>(program: S) -> crate::Result { + Ok(Self::new(relative_command_path(program.as_ref())?)) } - pub(crate) fn new_sidecar>(program: S) -> crate::Result { - Ok(Self::new(relative_command_path(program.into())?)) + /// Appends an argument to the command. + #[must_use] + pub fn arg>(mut self, arg: S) -> Self { + self.0.arg(arg); + self } /// Appends arguments to the command. @@ -166,32 +155,46 @@ impl Command { pub fn args(mut self, args: I) -> Self where I: IntoIterator, - S: AsRef, + S: AsRef, { - for arg in args { - self.args.push(arg.as_ref().to_string()); - } + self.0.args(args); self } /// Clears the entire environment map for the child process. #[must_use] pub fn env_clear(mut self) -> Self { - self.env_clear = true; + self.0.env_clear(); + self + } + + /// Inserts or updates an explicit environment variable mapping. + #[must_use] + pub fn env(mut self, key: K, value: V) -> Self + where + K: AsRef, + V: AsRef, + { + self.0.env(key, value); self } /// Adds or updates multiple environment variable mappings. #[must_use] - pub fn envs(mut self, env: HashMap) -> Self { - self.env = env; + pub fn envs(mut self, envs: I) -> Self + where + I: IntoIterator, + K: AsRef, + V: AsRef, + { + self.0.envs(envs); self } /// Sets the working directory for the child process. #[must_use] - pub fn current_dir(mut self, current_dir: PathBuf) -> Self { - self.current_dir.replace(current_dir); + pub fn current_dir>(mut self, current_dir: P) -> Self { + self.0.current_dir(current_dir); self } diff --git a/plugins/shell/src/scope.rs b/plugins/shell/src/scope.rs index 67ebde6a..c184e922 100644 --- a/plugins/shell/src/scope.rs +++ b/plugins/shell/src/scope.rs @@ -264,8 +264,8 @@ impl Scope { // The prevention of argument escaping is handled by the usage of std::process::Command::arg by // the `open` dependency. This behavior should be re-confirmed during upgrades of `open`. match with.map(Program::name) { - Some(program) => ::open::with(path, program), - None => ::open::that(path), + Some(program) => ::open::with_detached(path, program), + None => ::open::that_detached(path), } .map_err(Into::into) } diff --git a/plugins/single-instance/README.md b/plugins/single-instance/README.md index 2cb2d88e..801bd8b4 100644 --- a/plugins/single-instance/README.md +++ b/plugins/single-instance/README.md @@ -1,4 +1,4 @@ -![tauri-plugin-single-instance](banner.png) +![tauri-plugin-single-instance](https://github.com/tauri-apps/plugins-workspace/raw/v2/plugins/single-instance/banner.png) Ensure a single instance of your tauri app is running. diff --git a/plugins/single-instance/examples/vanilla/pnpm-lock.yaml b/plugins/single-instance/examples/vanilla/pnpm-lock.yaml deleted file mode 100644 index 45d94e96..00000000 --- a/plugins/single-instance/examples/vanilla/pnpm-lock.yaml +++ /dev/null @@ -1,106 +0,0 @@ -lockfileVersion: 5.4 - -specifiers: - '@tauri-apps/cli': ^1.0.0 - -dependencies: - '@tauri-apps/cli': 1.0.2 - -packages: - - /@tauri-apps/cli-darwin-arm64/1.0.2: - resolution: {integrity: sha512-Ahd951yoYon1+WLNBg6xsx6Bb7+GJt7WwC1FllHZ2/iLCbrtWCS2qfeLS0L4ngBqCuWyL35JC/M2LIr9mcUzrg==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: false - optional: true - - /@tauri-apps/cli-darwin-x64/1.0.2: - resolution: {integrity: sha512-8wo+SN1zWoXFQVa/iyEt3Cs0vNMjxDXqVe3Srm4UNpgKboFN5mIgbugwqvM+aJKnEZAH8h8n+ZJUHzc4wtPGHA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: false - optional: true - - /@tauri-apps/cli-linux-arm-gnueabihf/1.0.2: - resolution: {integrity: sha512-PGQghMn0adt9PTnyi2K2o/CLG3tWbOyZvwQjam5cfQbK757WmMgPErC1VqsxiQc+PItWYvqoE9gjANiFc2MpAQ==} - engines: {node: '>= 10'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@tauri-apps/cli-linux-arm64-gnu/1.0.2: - resolution: {integrity: sha512-Uc+XNlWelrnRh7DYrdxBi8Oam9JAQM1GzgEwjupF6Pv7BwlODN7s0HImGPQOKrEkqzpfmYw7KpfgWiiEjS5/3Q==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@tauri-apps/cli-linux-arm64-musl/1.0.2: - resolution: {integrity: sha512-lVwCG1QzQs2zWP32H4+Dw8NKgJ6hBox2X+bmawGfV9Ce+K4P84bnqfNgpdaSAncjeiTjrO+g7yT9gJFQCOrjlQ==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@tauri-apps/cli-linux-x64-gnu/1.0.2: - resolution: {integrity: sha512-G2XmGxvufW9sgGhA3rx+HehcifVTUo8zyISd8DpvGwtpp6Z4WakbivzKFyGiNnnok0nvj/WUrLgBxtUbfdSY+A==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@tauri-apps/cli-linux-x64-musl/1.0.2: - resolution: {integrity: sha512-/eX536p+KXSmkFuINGeU6EQmYiQEXj6JXbmetmJmkXN0297HbtH3rS3wlyVDCnobRzh1hMeOJEnV+XA20GghMA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@tauri-apps/cli-win32-ia32-msvc/1.0.2: - resolution: {integrity: sha512-ZvnaKkCABqUbyUKlNk4RdxKyfOte30D5BxN1pj6iZNeKAwXEuTcgP6iPzOovdeaDirkIjcWCEZymwtZDXN4Rvg==} - engines: {node: '>= 10'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /@tauri-apps/cli-win32-x64-msvc/1.0.2: - resolution: {integrity: sha512-uMcQyQQD7nyxps34HyYBYUYzFwH26lP58/qdT/GZWvBL1Sv2rqkQXuxHT7xtp4g7nTs0fGRWOtfcnvYIr/1wDw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /@tauri-apps/cli/1.0.2: - resolution: {integrity: sha512-OJdQJVwtKnTAuv2a9JQlOd0gHbbGsXwT+N6M6YQiXZ3/5WdlXey1zhnD78GXwZsf8Cz0R7QIGTBECO4ur4fnKg==} - engines: {node: '>= 10'} - hasBin: true - optionalDependencies: - '@tauri-apps/cli-darwin-arm64': 1.0.2 - '@tauri-apps/cli-darwin-x64': 1.0.2 - '@tauri-apps/cli-linux-arm-gnueabihf': 1.0.2 - '@tauri-apps/cli-linux-arm64-gnu': 1.0.2 - '@tauri-apps/cli-linux-arm64-musl': 1.0.2 - '@tauri-apps/cli-linux-x64-gnu': 1.0.2 - '@tauri-apps/cli-linux-x64-musl': 1.0.2 - '@tauri-apps/cli-win32-ia32-msvc': 1.0.2 - '@tauri-apps/cli-win32-x64-msvc': 1.0.2 - dev: false diff --git a/plugins/single-instance/examples/vanilla/src-tauri/Cargo.toml b/plugins/single-instance/examples/vanilla/src-tauri/Cargo.toml index 40d08d7f..7129cac4 100644 --- a/plugins/single-instance/examples/vanilla/src-tauri/Cargo.toml +++ b/plugins/single-instance/examples/vanilla/src-tauri/Cargo.toml @@ -7,7 +7,7 @@ description = "A Tauri App" authors = [ "You" ] repository = "" edition = "2021" -rust-version = "1.57" +rust-version = "1.65" [dependencies] serde_json = "1.0" diff --git a/plugins/single-instance/src/lib.rs b/plugins/single-instance/src/lib.rs index 6b20956e..715c894e 100644 --- a/plugins/single-instance/src/lib.rs +++ b/plugins/single-instance/src/lib.rs @@ -2,6 +2,14 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: MIT +//! [![](https://github.com/tauri-apps/plugins-workspace/raw/v2/plugins/single-instance/banner.png)](https://github.com/tauri-apps/plugins-workspace/tree/v2/plugins/single-instance) +//! +//! Ensure a single instance of your tauri app is running. + +#![doc( + html_logo_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png", + html_favicon_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png" +)] #![cfg(not(any(target_os = "android", target_os = "ios")))] use tauri::{plugin::TauriPlugin, AppHandle, Manager, Runtime}; diff --git a/plugins/sql/Cargo.toml b/plugins/sql/Cargo.toml index c08a48ff..d6ae7bed 100644 --- a/plugins/sql/Cargo.toml +++ b/plugins/sql/Cargo.toml @@ -17,7 +17,7 @@ tauri = { workspace = true } log = { workspace = true } thiserror = { workspace = true } futures-core = "0.3" -sqlx = { version = "0.6", features = [ "runtime-tokio-rustls", "json", "time" ] } +sqlx = { version = "0.7", features = [ "runtime-tokio-rustls", "json", "time" ] } time = "0.3" tokio = { version = "1", features = [ "sync" ] } diff --git a/plugins/sql/README.md b/plugins/sql/README.md index 3901405e..8500819c 100644 --- a/plugins/sql/README.md +++ b/plugins/sql/README.md @@ -1,4 +1,4 @@ -![plugin-sql](banner.png) +![plugin-sql](https://github.com/tauri-apps/plugins-workspace/raw/v2/plugins/sql/banner.png) Interface with SQL databases through [sqlx](https://github.com/launchbadge/sqlx). It supports the `sqlite`, `mysql` and `postgres` drivers, enabled by a Cargo feature. @@ -74,6 +74,37 @@ const db = await Database.load("postgres://postgres:password@localhost/test"); await db.execute("INSERT INTO ..."); ``` +## Syntax + +We use sqlx as our underlying library, adopting their query syntax: + +- sqlite and postgres use the "$#" syntax when substituting query data +- mysql uses "?" when substituting query data + +```javascript +// INSERT and UPDATE examples for sqlite and postgres +const result = await db.execute( + "INSERT into todos (id, title, status) VALUES ($1, $2, $3)", + [todos.id, todos.title, todos.status], +); + +const result = await db.execute( + "UPDATE todos SET title = $1, completed = $2 WHERE id = $3", + [todos.title, todos.status, todos.id], +); + +// INSERT and UPDATE examples for mysql +const result = await db.execute( + "INSERT into todos (id, title, status) VALUES (?, ?, ?)", + [todos.id, todos.title, todos.status], +); + +const result = await db.execute( + "UPDATE todos SET title = ?, completed = ? WHERE id = ?", + [todos.title, todos.status, todos.id], +); +``` + ## Contributing PRs accepted. Please make sure to read the Contributing Guide before making a pull request. diff --git a/plugins/sql/guest-js/index.ts b/plugins/sql/guest-js/index.ts index 24f35ec9..9f107a0e 100644 --- a/plugins/sql/guest-js/index.ts +++ b/plugins/sql/guest-js/index.ts @@ -84,10 +84,29 @@ export default class Database { * * @example * ```ts + * // for sqlite & postgres + * // INSERT example + * const result = await db.execute( + * "INSERT into todos (id, title, status) VALUES ($1, $2, $3)", + * [ todos.id, todos.title, todos.status ] + * ); + * // UPDATE example * const result = await db.execute( * "UPDATE todos SET title = $1, completed = $2 WHERE id = $3", * [ todos.title, todos.status, todos.id ] * ); + * + * // for mysql + * // INSERT example + * const result = await db.execute( + * "INSERT into todos (id, title, status) VALUES (?, ?, ?)", + * [ todos.id, todos.title, todos.status ] + * ); + * // UPDATE example + * const result = await db.execute( + * "UPDATE todos SET title = ?, completed = ? WHERE id = ?", + * [ todos.title, todos.status, todos.id ] + * ); * ``` */ async execute(query: string, bindValues?: unknown[]): Promise { @@ -104,7 +123,6 @@ export default class Database { rowsAffected, }; } - /** * **select** * @@ -112,9 +130,15 @@ export default class Database { * * @example * ```ts + * // for sqlite & postgres * const result = await db.select( * "SELECT * from todos WHERE id = $1", id * ); + * + * // for mysql + * const result = await db.select( + * "SELECT * from todos WHERE id = ?", id + * ); * ``` */ async select(query: string, bindValues?: unknown[]): Promise { diff --git a/plugins/sql/package.json b/plugins/sql/package.json index d6f50186..28ad04e8 100644 --- a/plugins/sql/package.json +++ b/plugins/sql/package.json @@ -25,7 +25,7 @@ "LICENSE" ], "devDependencies": { - "tslib": "^2.5.0" + "tslib": "2.6.0" }, "dependencies": { "@tauri-apps/api": "2.0.0-alpha.5" diff --git a/plugins/sql/rollup.config.mjs b/plugins/sql/rollup.config.mjs index 6555e98b..99a3dd31 100644 --- a/plugins/sql/rollup.config.mjs +++ b/plugins/sql/rollup.config.mjs @@ -5,7 +5,7 @@ import { createConfig } from "../../shared/rollup.config.mjs"; export default createConfig({ input: "guest-js/index.ts", pkg: JSON.parse( - readFileSync(new URL("./package.json", import.meta.url), "utf8") + readFileSync(new URL("./package.json", import.meta.url), "utf8"), ), external: [/^@tauri-apps\/api/], }); diff --git a/plugins/sql/src/lib.rs b/plugins/sql/src/lib.rs index 4bc87324..f25ede21 100644 --- a/plugins/sql/src/lib.rs +++ b/plugins/sql/src/lib.rs @@ -2,6 +2,15 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: MIT +//! [![](https://github.com/tauri-apps/plugins-workspace/raw/v2/plugins/sql/banner.png)](https://github.com/tauri-apps/plugins-workspace/tree/v2/plugins/sql) +//! +//! Interface with SQL databases through [sqlx](https://github.com/launchbadge/sqlx). It supports the `sqlite`, `mysql` and `postgres` drivers, enabled by a Cargo feature. + +#![doc( + html_logo_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png", + html_favicon_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png" +)] + #[cfg(any( all(feature = "sqlite", feature = "mysql"), all(feature = "sqlite", feature = "postgres"), diff --git a/plugins/store/README.md b/plugins/store/README.md index 90b0b7ef..78400fb2 100644 --- a/plugins/store/README.md +++ b/plugins/store/README.md @@ -1,4 +1,4 @@ -![plugin-store](banner.png) +![plugin-store](https://github.com/tauri-apps/plugins-workspace/raw/v2/plugins/store/banner.png) Simple, persistent key-value store. diff --git a/plugins/store/guest-js/index.ts b/plugins/store/guest-js/index.ts index 4df455f8..a3df76ec 100644 --- a/plugins/store/guest-js/index.ts +++ b/plugins/store/guest-js/index.ts @@ -184,7 +184,7 @@ export class Store { */ async onKeyChange( key: string, - cb: (value: T | null) => void + cb: (value: T | null) => void, ): Promise { return await listen>("store://change", (event) => { if (event.payload.path === this.path && event.payload.key === key) { @@ -201,7 +201,7 @@ export class Store { * @since 2.0.0 */ async onChange( - cb: (key: string, value: T | null) => void + cb: (key: string, value: T | null) => void, ): Promise { return await listen>("store://change", (event) => { if (event.payload.path === this.path) { diff --git a/plugins/store/package.json b/plugins/store/package.json index 45a338d6..63f61ac2 100644 --- a/plugins/store/package.json +++ b/plugins/store/package.json @@ -25,7 +25,7 @@ "LICENSE" ], "devDependencies": { - "tslib": "^2.5.0" + "tslib": "2.6.0" }, "dependencies": { "@tauri-apps/api": "2.0.0-alpha.5" diff --git a/plugins/store/rollup.config.mjs b/plugins/store/rollup.config.mjs index 6555e98b..99a3dd31 100644 --- a/plugins/store/rollup.config.mjs +++ b/plugins/store/rollup.config.mjs @@ -5,7 +5,7 @@ import { createConfig } from "../../shared/rollup.config.mjs"; export default createConfig({ input: "guest-js/index.ts", pkg: JSON.parse( - readFileSync(new URL("./package.json", import.meta.url), "utf8") + readFileSync(new URL("./package.json", import.meta.url), "utf8"), ), external: [/^@tauri-apps\/api/], }); diff --git a/plugins/store/src/lib.rs b/plugins/store/src/lib.rs index 1ce2885e..3569f273 100644 --- a/plugins/store/src/lib.rs +++ b/plugins/store/src/lib.rs @@ -2,6 +2,15 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: MIT +//! [![](https://github.com/tauri-apps/plugins-workspace/raw/v2/plugins/store/banner.png)](https://github.com/tauri-apps/plugins-workspace/tree/v2/plugins/store) +//! +//! Simple, persistent key-value store. + +#![doc( + html_logo_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png", + html_favicon_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png" +)] + pub use error::Error; use log::warn; use serde::Serialize; diff --git a/plugins/stronghold/Cargo.toml b/plugins/stronghold/Cargo.toml index 8b6084f5..709131c1 100644 --- a/plugins/stronghold/Cargo.toml +++ b/plugins/stronghold/Cargo.toml @@ -14,7 +14,7 @@ tauri = { workspace = true } log = { workspace = true } thiserror = { workspace = true } iota_stronghold = "1" -iota-crypto = "0.20" +iota-crypto = "0.23" hex = "0.4" zeroize = { version = "1", features = [ "zeroize_derive" ] } diff --git a/plugins/stronghold/README.md b/plugins/stronghold/README.md index 7254b857..b56792aa 100644 --- a/plugins/stronghold/README.md +++ b/plugins/stronghold/README.md @@ -1,4 +1,4 @@ -![plugin-stronghold](banner.png) +![plugin-stronghold](https://github.com/tauri-apps/plugins-workspace/raw/v2/plugins/stronghold/banner.png) Store secrets and keys using the [IOTA Stronghold](https://github.com/iotaledger/stronghold.rs) encrypted database and secure runtime. diff --git a/plugins/stronghold/guest-js/index.ts b/plugins/stronghold/guest-js/index.ts index 1b28f4f1..24dd5685 100644 --- a/plugins/stronghold/guest-js/index.ts +++ b/plugins/stronghold/guest-js/index.ts @@ -31,7 +31,7 @@ export type StoreKey = | ArrayBuffer; function toBytesDto( - v: ClientPath | VaultPath | RecordPath | StoreKey + v: ClientPath | VaultPath | RecordPath | StoreKey, ): string | number[] { if (typeof v === "string") { return v; @@ -133,7 +133,7 @@ class ProcedureExecutor { */ async generateSLIP10Seed( outputLocation: Location, - sizeBytes?: number + sizeBytes?: number, ): Promise { return await window .__TAURI_INVOKE__("plugin:stronghold|execute_procedure", { @@ -162,7 +162,7 @@ class ProcedureExecutor { chain: number[], source: "Seed" | "Key", sourceLocation: Location, - outputLocation: Location + outputLocation: Location, ): Promise { return await window .__TAURI_INVOKE__("plugin:stronghold|execute_procedure", { @@ -193,7 +193,7 @@ class ProcedureExecutor { async recoverBIP39( mnemonic: string, outputLocation: Location, - passphrase?: string + passphrase?: string, ): Promise { return await window .__TAURI_INVOKE__("plugin:stronghold|execute_procedure", { @@ -219,7 +219,7 @@ class ProcedureExecutor { */ async generateBIP39( outputLocation: Location, - passphrase?: string + passphrase?: string, ): Promise { return await window .__TAURI_INVOKE__("plugin:stronghold|execute_procedure", { @@ -267,7 +267,7 @@ class ProcedureExecutor { */ async signEd25519( privateKeyLocation: Location, - msg: string + msg: string, ): Promise { return await window .__TAURI_INVOKE__("plugin:stronghold|execute_procedure", { @@ -317,20 +317,20 @@ export class Store { this.client = client; } - async get(key: StoreKey): Promise { + async get(key: StoreKey): Promise { return await window .__TAURI_INVOKE__("plugin:stronghold|get_store_record", { snapshotPath: this.path, client: this.client, key: toBytesDto(key), }) - .then((v) => Uint8Array.from(v)); + .then((v) => (v != null ? Uint8Array.from(v) : null)); } async insert( key: StoreKey, value: number[], - lifetime?: Duration + lifetime?: Duration, ): Promise { return await window.__TAURI_INVOKE__( "plugin:stronghold|save_store_record", @@ -340,7 +340,7 @@ export class Store { key: toBytesDto(key), value, lifetime, - } + }, ); } @@ -352,7 +352,7 @@ export class Store { snapshotPath: this.path, client: this.client, key: toBytesDto(key), - } + }, ) .then((v) => (v != null ? Uint8Array.from(v) : null)); } @@ -409,7 +409,7 @@ export class Vault extends ProcedureExecutor { snapshotPath: this.path, client: this.client, vault: this.name, - location, + recordPath: location.payload.record, }); } } diff --git a/plugins/stronghold/package.json b/plugins/stronghold/package.json index 9fa2121d..8d3ed06b 100644 --- a/plugins/stronghold/package.json +++ b/plugins/stronghold/package.json @@ -25,7 +25,7 @@ "LICENSE" ], "devDependencies": { - "tslib": "^2.5.0" + "tslib": "2.6.0" }, "dependencies": { "@tauri-apps/api": "2.0.0-alpha.5" diff --git a/plugins/stronghold/rollup.config.mjs b/plugins/stronghold/rollup.config.mjs index 6555e98b..99a3dd31 100644 --- a/plugins/stronghold/rollup.config.mjs +++ b/plugins/stronghold/rollup.config.mjs @@ -5,7 +5,7 @@ import { createConfig } from "../../shared/rollup.config.mjs"; export default createConfig({ input: "guest-js/index.ts", pkg: JSON.parse( - readFileSync(new URL("./package.json", import.meta.url), "utf8") + readFileSync(new URL("./package.json", import.meta.url), "utf8"), ), external: [/^@tauri-apps\/api/], }); diff --git a/plugins/stronghold/src/api-iife.js b/plugins/stronghold/src/api-iife.js index b8cf0127..b915eed8 100644 --- a/plugins/stronghold/src/api-iife.js +++ b/plugins/stronghold/src/api-iife.js @@ -1 +1 @@ -if("__TAURI__"in window){var __TAURI_STRONGHOLD__=function(t){"use strict";function e(t){return"string"==typeof t?t:Array.from(t instanceof ArrayBuffer?new Uint8Array(t):t)}class r{constructor(t,e){this.type=t,this.payload=e}static generic(t,n){return new r("Generic",{vault:e(t),record:e(n)})}static counter(t,n){return new r("Counter",{vault:e(t),counter:n})}}class n{constructor(t){this.procedureArgs=t}async generateSLIP10Seed(t,e){return await window.__TAURI_INVOKE__("plugin:stronghold|execute_procedure",{...this.procedureArgs,procedure:{type:"SLIP10Generate",payload:{output:t,sizeBytes:e}}}).then((t=>Uint8Array.from(t)))}async deriveSLIP10(t,e,r,n){return await window.__TAURI_INVOKE__("plugin:stronghold|execute_procedure",{...this.procedureArgs,procedure:{type:"SLIP10Derive",payload:{chain:t,input:{type:e,payload:r},output:n}}}).then((t=>Uint8Array.from(t)))}async recoverBIP39(t,e,r){return await window.__TAURI_INVOKE__("plugin:stronghold|execute_procedure",{...this.procedureArgs,procedure:{type:"BIP39Recover",payload:{mnemonic:t,passphrase:r,output:e}}}).then((t=>Uint8Array.from(t)))}async generateBIP39(t,e){return await window.__TAURI_INVOKE__("plugin:stronghold|execute_procedure",{...this.procedureArgs,procedure:{type:"BIP39Generate",payload:{output:t,passphrase:e}}}).then((t=>Uint8Array.from(t)))}async getEd25519PublicKey(t){return await window.__TAURI_INVOKE__("plugin:stronghold|execute_procedure",{...this.procedureArgs,procedure:{type:"PublicKey",payload:{type:"Ed25519",privateKey:t}}}).then((t=>Uint8Array.from(t)))}async signEd25519(t,e){return await window.__TAURI_INVOKE__("plugin:stronghold|execute_procedure",{...this.procedureArgs,procedure:{type:"Ed25519Sign",payload:{privateKey:t,msg:e}}}).then((t=>Uint8Array.from(t)))}}class a{constructor(t,r){this.path=t,this.name=e(r)}getVault(t){return new s(this.path,this.name,e(t))}getStore(){return new i(this.path,this.name)}}class i{constructor(t,e){this.path=t,this.client=e}async get(t){return await window.__TAURI_INVOKE__("plugin:stronghold|get_store_record",{snapshotPath:this.path,client:this.client,key:e(t)}).then((t=>Uint8Array.from(t)))}async insert(t,r,n){return await window.__TAURI_INVOKE__("plugin:stronghold|save_store_record",{snapshotPath:this.path,client:this.client,key:e(t),value:r,lifetime:n})}async remove(t){return await window.__TAURI_INVOKE__("plugin:stronghold|remove_store_record",{snapshotPath:this.path,client:this.client,key:e(t)}).then((t=>null!=t?Uint8Array.from(t):null))}}class s extends n{constructor(t,r,n){super({snapshotPath:t,client:r,vault:n}),this.path=t,this.client=e(r),this.name=e(n)}async insert(t,r){return await window.__TAURI_INVOKE__("plugin:stronghold|save_secret",{snapshotPath:this.path,client:this.client,vault:this.name,recordPath:e(t),secret:r})}async remove(t){return await window.__TAURI_INVOKE__("plugin:stronghold|remove_secret",{snapshotPath:this.path,client:this.client,vault:this.name,location:t})}}class o{constructor(t){this.path=t}static async load(t,e){return await window.__TAURI_INVOKE__("plugin:stronghold|initialize",{snapshotPath:t,password:e}).then((()=>new o(t)))}async unload(){return await window.__TAURI_INVOKE__("plugin:stronghold|destroy",{snapshotPath:this.path})}async loadClient(t){return await window.__TAURI_INVOKE__("plugin:stronghold|load_client",{snapshotPath:this.path,client:e(t)}).then((()=>new a(this.path,t)))}async createClient(t){return await window.__TAURI_INVOKE__("plugin:stronghold|create_client",{snapshotPath:this.path,client:e(t)}).then((()=>new a(this.path,t)))}async save(){return await window.__TAURI_INVOKE__("plugin:stronghold|save",{snapshotPath:this.path})}}return t.Client=a,t.Location=r,t.Store=i,t.Stronghold=o,t.Vault=s,t}({});Object.defineProperty(window.__TAURI__,"stronghold",{value:__TAURI_STRONGHOLD__})} +if("__TAURI__"in window){var __TAURI_STRONGHOLD__=function(t){"use strict";function e(t){return"string"==typeof t?t:Array.from(t instanceof ArrayBuffer?new Uint8Array(t):t)}class r{constructor(t,e){this.type=t,this.payload=e}static generic(t,n){return new r("Generic",{vault:e(t),record:e(n)})}static counter(t,n){return new r("Counter",{vault:e(t),counter:n})}}class n{constructor(t){this.procedureArgs=t}async generateSLIP10Seed(t,e){return await window.__TAURI_INVOKE__("plugin:stronghold|execute_procedure",{...this.procedureArgs,procedure:{type:"SLIP10Generate",payload:{output:t,sizeBytes:e}}}).then((t=>Uint8Array.from(t)))}async deriveSLIP10(t,e,r,n){return await window.__TAURI_INVOKE__("plugin:stronghold|execute_procedure",{...this.procedureArgs,procedure:{type:"SLIP10Derive",payload:{chain:t,input:{type:e,payload:r},output:n}}}).then((t=>Uint8Array.from(t)))}async recoverBIP39(t,e,r){return await window.__TAURI_INVOKE__("plugin:stronghold|execute_procedure",{...this.procedureArgs,procedure:{type:"BIP39Recover",payload:{mnemonic:t,passphrase:r,output:e}}}).then((t=>Uint8Array.from(t)))}async generateBIP39(t,e){return await window.__TAURI_INVOKE__("plugin:stronghold|execute_procedure",{...this.procedureArgs,procedure:{type:"BIP39Generate",payload:{output:t,passphrase:e}}}).then((t=>Uint8Array.from(t)))}async getEd25519PublicKey(t){return await window.__TAURI_INVOKE__("plugin:stronghold|execute_procedure",{...this.procedureArgs,procedure:{type:"PublicKey",payload:{type:"Ed25519",privateKey:t}}}).then((t=>Uint8Array.from(t)))}async signEd25519(t,e){return await window.__TAURI_INVOKE__("plugin:stronghold|execute_procedure",{...this.procedureArgs,procedure:{type:"Ed25519Sign",payload:{privateKey:t,msg:e}}}).then((t=>Uint8Array.from(t)))}}class a{constructor(t,r){this.path=t,this.name=e(r)}getVault(t){return new s(this.path,this.name,e(t))}getStore(){return new o(this.path,this.name)}}class o{constructor(t,e){this.path=t,this.client=e}async get(t){return await window.__TAURI_INVOKE__("plugin:stronghold|get_store_record",{snapshotPath:this.path,client:this.client,key:e(t)}).then((t=>null!=t?Uint8Array.from(t):null))}async insert(t,r,n){return await window.__TAURI_INVOKE__("plugin:stronghold|save_store_record",{snapshotPath:this.path,client:this.client,key:e(t),value:r,lifetime:n})}async remove(t){return await window.__TAURI_INVOKE__("plugin:stronghold|remove_store_record",{snapshotPath:this.path,client:this.client,key:e(t)}).then((t=>null!=t?Uint8Array.from(t):null))}}class s extends n{constructor(t,r,n){super({snapshotPath:t,client:r,vault:n}),this.path=t,this.client=e(r),this.name=e(n)}async insert(t,r){return await window.__TAURI_INVOKE__("plugin:stronghold|save_secret",{snapshotPath:this.path,client:this.client,vault:this.name,recordPath:e(t),secret:r})}async remove(t){return await window.__TAURI_INVOKE__("plugin:stronghold|remove_secret",{snapshotPath:this.path,client:this.client,vault:this.name,recordPath:t.payload.record})}}class i{constructor(t){this.path=t}static async load(t,e){return await window.__TAURI_INVOKE__("plugin:stronghold|initialize",{snapshotPath:t,password:e}).then((()=>new i(t)))}async unload(){return await window.__TAURI_INVOKE__("plugin:stronghold|destroy",{snapshotPath:this.path})}async loadClient(t){return await window.__TAURI_INVOKE__("plugin:stronghold|load_client",{snapshotPath:this.path,client:e(t)}).then((()=>new a(this.path,t)))}async createClient(t){return await window.__TAURI_INVOKE__("plugin:stronghold|create_client",{snapshotPath:this.path,client:e(t)}).then((()=>new a(this.path,t)))}async save(){return await window.__TAURI_INVOKE__("plugin:stronghold|save",{snapshotPath:this.path})}}return t.Client=a,t.Location=r,t.Store=o,t.Stronghold=i,t.Vault=s,t}({});Object.defineProperty(window.__TAURI__,"stronghold",{value:__TAURI_STRONGHOLD__})} diff --git a/plugins/stronghold/src/lib.rs b/plugins/stronghold/src/lib.rs index 37322cc6..96489c84 100644 --- a/plugins/stronghold/src/lib.rs +++ b/plugins/stronghold/src/lib.rs @@ -2,6 +2,15 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: MIT +//! [![](https://github.com/tauri-apps/plugins-workspace/raw/v2/plugins/stronghold/banner.png)](https://github.com/tauri-apps/plugins-workspace/tree/v2/plugins/stronghold) +//! +//! Store secrets and keys using the [IOTA Stronghold](https://github.com/iotaledger/stronghold.rs) encrypted database and secure runtime. + +#![doc( + html_logo_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png", + html_favicon_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png" +)] + use std::{ collections::HashMap, fmt, diff --git a/plugins/updater/README.md b/plugins/updater/README.md index 0e47281f..0597969c 100644 --- a/plugins/updater/README.md +++ b/plugins/updater/README.md @@ -1,4 +1,4 @@ -![plugin-updater](banner.png) +![plugin-updater](https://github.com/tauri-apps/plugins-workspace/raw/v2/plugins/updater/banner.png) In-app updates for Tauri applications. diff --git a/plugins/updater/guest-js/index.ts b/plugins/updater/guest-js/index.ts index 0124caf8..3994bdbe 100644 --- a/plugins/updater/guest-js/index.ts +++ b/plugins/updater/guest-js/index.ts @@ -40,7 +40,7 @@ class Update { } async downloadAndInstall( - onEvent?: (progress: DownloadEvent) => void + onEvent?: (progress: DownloadEvent) => void, ): Promise { const channel = new Channel(); if (onEvent != null) { @@ -54,7 +54,7 @@ class Update { async function check(options?: CheckOptions): Promise { return invoke("plugin:updater|check", { ...options }).then( - (response) => new Update(response) + (response) => new Update(response), ); } diff --git a/plugins/updater/rollup.config.mjs b/plugins/updater/rollup.config.mjs index 6555e98b..99a3dd31 100644 --- a/plugins/updater/rollup.config.mjs +++ b/plugins/updater/rollup.config.mjs @@ -5,7 +5,7 @@ import { createConfig } from "../../shared/rollup.config.mjs"; export default createConfig({ input: "guest-js/index.ts", pkg: JSON.parse( - readFileSync(new URL("./package.json", import.meta.url), "utf8") + readFileSync(new URL("./package.json", import.meta.url), "utf8"), ), external: [/^@tauri-apps\/api/], }); diff --git a/plugins/updater/src/lib.rs b/plugins/updater/src/lib.rs index 3b511ca4..e9de6643 100644 --- a/plugins/updater/src/lib.rs +++ b/plugins/updater/src/lib.rs @@ -2,6 +2,17 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: MIT +//! [![](https://github.com/tauri-apps/plugins-workspace/raw/v2/plugins/updater/banner.png)](https://github.com/tauri-apps/plugins-workspace/tree/v2/plugins/updater) +//! +//! In-app updates for Tauri applications. +//! +//! - Supported platforms: Windows, Linux and macOS.crypted database and secure runtime. + +#![doc( + html_logo_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png", + html_favicon_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png" +)] + use tauri::{ plugin::{Builder as PluginBuilder, TauriPlugin}, Manager, Runtime, diff --git a/plugins/updater/src/updater/core.rs b/plugins/updater/src/updater/core.rs index 8ebaf842..986586e2 100644 --- a/plugins/updater/src/updater/core.rs +++ b/plugins/updater/src/updater/core.rs @@ -728,6 +728,12 @@ fn copy_files_and_run( // extract the msi extractor.extract_into(&tmp_dir)?; + let system_root = std::env::var("SYSTEMROOT"); + let powershell_path = system_root.as_ref().map_or_else( + |_| "powershell.exe".to_string(), + |p| format!("{p}\\System32\\WindowsPowerShell\\v1.0\\powershell.exe"), + ); + let paths = read_dir(&tmp_dir)?; for path in paths { @@ -735,10 +741,31 @@ fn copy_files_and_run( // we support 2 type of files exe & msi for now // If it's an `exe` we expect an installer not a runtime. if found_path.extension() == Some(OsStr::new("exe")) { + // we need to wrap the installer path in quotes for Start-Process + let mut installer_arg = std::ffi::OsString::new(); + installer_arg.push("\""); + installer_arg.push(&found_path); + installer_arg.push("\""); + // Run the EXE - Command::new(found_path) - .args(config.tauri.bundle.updater.windows.install_mode.nsis_args()) - .args(&updater_config.installer_args) + Command::new(powershell_path) + .args(["-NoProfile", "-WindowStyle", "Hidden"]) + .args(["Start-Process"]) + .arg(found_path) + .arg("-ArgumentList") + .arg( + [ + config.tauri.bundle.updater.windows.install_mode.nsis_args(), + updater_config + .installer_args + .iter() + .map(AsRef::as_ref) + .collect::>() + .as_slice(), + ] + .concat() + .join(", "), + ) .spawn() .expect("installer failed to start"); @@ -808,13 +835,8 @@ fn copy_files_and_run( msiexec_args.extend(updater_config.installer_args.clone()); // run the installer and relaunch the application - let system_root = std::env::var("SYSTEMROOT"); - let powershell_path = system_root.as_ref().map_or_else( - |_| "powershell.exe".to_string(), - |p| format!("{p}\\System32\\WindowsPowerShell\\v1.0\\powershell.exe"), - ); let powershell_install_res = Command::new(powershell_path) - .args(["-NoProfile", "-windowstyle", "hidden"]) + .args(["-NoProfile", "-WindowStyle", "Hidden"]) .args([ "Start-Process", "-Wait", diff --git a/plugins/upload/README.md b/plugins/upload/README.md index 31d13238..07341d37 100644 --- a/plugins/upload/README.md +++ b/plugins/upload/README.md @@ -1,4 +1,4 @@ -![plugin-upload](banner.png) +![plugin-upload](https://github.com/tauri-apps/plugins-workspace/raw/v2/plugins/upload/banner.png) Upload files from disk to a remote server over HTTP. Download files from a remote HTTP server to disk. @@ -67,7 +67,7 @@ upload( "https://example.com/file-upload", "./path/to/my/file.txt", (progress, total) => console.log(`Uploaded ${progress} of ${total} bytes`), // a callback that will be called with the upload progress - { "Content-Type": "text/plain" } // optional headers to send with the request + { "Content-Type": "text/plain" }, // optional headers to send with the request ); ``` @@ -78,7 +78,7 @@ download( "https://example.com/file-download-link", "./path/to/save/my/file.txt", (progress, total) => console.log(`Downloaded ${progress} of ${total} bytes`), // a callback that will be called with the download progress - { "Content-Type": "text/plain" } // optional headers to send with the request + { "Content-Type": "text/plain" }, // optional headers to send with the request ); ``` diff --git a/plugins/upload/guest-js/index.ts b/plugins/upload/guest-js/index.ts index 29c25a98..700cc6d3 100644 --- a/plugins/upload/guest-js/index.ts +++ b/plugins/upload/guest-js/index.ts @@ -15,7 +15,7 @@ async function upload( url: string, filePath: string, progressHandler?: ProgressHandler, - headers?: Map + headers?: Map, ): Promise { const ids = new Uint32Array(1); window.crypto.getRandomValues(ids); @@ -43,7 +43,7 @@ async function download( url: string, filePath: string, progressHandler?: ProgressHandler, - headers?: Map + headers?: Map, ): Promise { const ids = new Uint32Array(1); window.crypto.getRandomValues(ids); diff --git a/plugins/upload/package.json b/plugins/upload/package.json index ac24ce63..db31acf1 100644 --- a/plugins/upload/package.json +++ b/plugins/upload/package.json @@ -25,7 +25,7 @@ "LICENSE" ], "devDependencies": { - "tslib": "^2.5.0" + "tslib": "2.6.0" }, "dependencies": { "@tauri-apps/api": "2.0.0-alpha.5" diff --git a/plugins/upload/rollup.config.mjs b/plugins/upload/rollup.config.mjs index 6555e98b..99a3dd31 100644 --- a/plugins/upload/rollup.config.mjs +++ b/plugins/upload/rollup.config.mjs @@ -5,7 +5,7 @@ import { createConfig } from "../../shared/rollup.config.mjs"; export default createConfig({ input: "guest-js/index.ts", pkg: JSON.parse( - readFileSync(new URL("./package.json", import.meta.url), "utf8") + readFileSync(new URL("./package.json", import.meta.url), "utf8"), ), external: [/^@tauri-apps\/api/], }); diff --git a/plugins/upload/src/lib.rs b/plugins/upload/src/lib.rs index 698549af..fb139a3e 100644 --- a/plugins/upload/src/lib.rs +++ b/plugins/upload/src/lib.rs @@ -2,6 +2,17 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: MIT +//! [![](https://github.com/tauri-apps/plugins-workspace/raw/v2/plugins/upload/banner.png)](https://github.com/tauri-apps/plugins-workspace/tree/v2/plugins/upload) +//! +//! Upload files from disk to a remote server over HTTP. +//! +//! Download files from a remote HTTP server to disk. + +#![doc( + html_logo_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png", + html_favicon_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png" +)] + use futures_util::TryStreamExt; use serde::{ser::Serializer, Serialize}; use tauri::{ diff --git a/plugins/websocket/README.md b/plugins/websocket/README.md index 56943465..d49d393c 100644 --- a/plugins/websocket/README.md +++ b/plugins/websocket/README.md @@ -1,4 +1,4 @@ -![plugin-websocket](banner.png) +![plugin-websocket](https://github.com/tauri-apps/plugins-workspace/raw/v2/plugins/websocket/banner.png) Expose a WebSocket server to your Tauri frontend. @@ -60,7 +60,7 @@ fn main() { Afterwards all the plugin's APIs are available through the JavaScript guest bindings: ```javascript -import { WebSocket } from "@tauri-apps/plugin-websocket"; +import WebSocket from "@tauri-apps/plugin-websocket"; const ws = await WebSocket.connect("wss://example.com"); diff --git a/plugins/websocket/examples/svelte-app/package.json b/plugins/websocket/examples/svelte-app/package.json index 203f217d..98b52669 100644 --- a/plugins/websocket/examples/svelte-app/package.json +++ b/plugins/websocket/examples/svelte-app/package.json @@ -11,14 +11,14 @@ "tauri": "tauri" }, "devDependencies": { - "@sveltejs/adapter-auto": "^2.0.0", - "@sveltejs/kit": "^1.15.5", + "@sveltejs/adapter-auto": "2.1.0", + "@sveltejs/kit": "1.22.3", "@tauri-apps/cli": "2.0.0-alpha.10", - "svelte": "^3.58.0", - "svelte-check": "^3.2.0", - "tslib": "^2.5.0", - "typescript": "^5.0.4", - "vite": "^4.3.9" + "svelte": "4.0.5", + "svelte-check": "3.4.6", + "tslib": "2.6.0", + "typescript": "5.1.6", + "vite": "4.4.4" }, "dependencies": { "@tauri-apps/plugin-websocket": "link:../../" diff --git a/plugins/websocket/examples/svelte-app/src/app.html b/plugins/websocket/examples/svelte-app/src/app.html index 46d06d3b..73cf3cd3 100644 --- a/plugins/websocket/examples/svelte-app/src/app.html +++ b/plugins/websocket/examples/svelte-app/src/app.html @@ -1,4 +1,4 @@ - + diff --git a/plugins/websocket/guest-js/index.ts b/plugins/websocket/guest-js/index.ts index 5fd967b4..bd6ca752 100644 --- a/plugins/websocket/guest-js/index.ts +++ b/plugins/websocket/guest-js/index.ts @@ -66,7 +66,7 @@ export default class WebSocket { m = { type: "Binary", data: message }; } else { throw new Error( - "invalid `message` type, expected a `{ type: string, data: any }` object, a string or a numeric array" + "invalid `message` type, expected a `{ type: string, data: any }` object, a string or a numeric array", ); } return await window.__TAURI_INVOKE__("plugin:websocket|send", { diff --git a/plugins/websocket/package.json b/plugins/websocket/package.json index c747d6cc..0ae8849b 100644 --- a/plugins/websocket/package.json +++ b/plugins/websocket/package.json @@ -24,7 +24,7 @@ "LICENSE" ], "devDependencies": { - "tslib": "^2.5.0" + "tslib": "2.6.0" }, "dependencies": { "@tauri-apps/api": "2.0.0-alpha.5" diff --git a/plugins/websocket/rollup.config.mjs b/plugins/websocket/rollup.config.mjs index 6555e98b..99a3dd31 100644 --- a/plugins/websocket/rollup.config.mjs +++ b/plugins/websocket/rollup.config.mjs @@ -5,7 +5,7 @@ import { createConfig } from "../../shared/rollup.config.mjs"; export default createConfig({ input: "guest-js/index.ts", pkg: JSON.parse( - readFileSync(new URL("./package.json", import.meta.url), "utf8") + readFileSync(new URL("./package.json", import.meta.url), "utf8"), ), external: [/^@tauri-apps\/api/], }); diff --git a/plugins/websocket/src/lib.rs b/plugins/websocket/src/lib.rs index a3b94136..31d744c3 100644 --- a/plugins/websocket/src/lib.rs +++ b/plugins/websocket/src/lib.rs @@ -2,6 +2,15 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: MIT +//! [![](https://github.com/tauri-apps/plugins-workspace/raw/v2/plugins/websocket/banner.png)](https://github.com/tauri-apps/plugins-workspace/tree/v2/plugins/websocket) +//! +//! Expose a WebSocket server to your Tauri frontend. + +#![doc( + html_logo_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png", + html_favicon_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png" +)] + use futures_util::{stream::SplitSink, SinkExt, StreamExt}; use serde::{ser::Serializer, Deserialize, Serialize}; use tauri::{ diff --git a/plugins/window-state/README.md b/plugins/window-state/README.md index ea03f8e2..45fd3bd9 100644 --- a/plugins/window-state/README.md +++ b/plugins/window-state/README.md @@ -1,4 +1,4 @@ -![plugin-window-state](banner.png) +![plugin-window-state](https://github.com/tauri-apps/plugins-workspace/raw/v2/plugins/window-state/banner.png) Save window positions and sizes and restore them when the app is reopened. diff --git a/plugins/window-state/package.json b/plugins/window-state/package.json index 47cba0c0..ad169f17 100644 --- a/plugins/window-state/package.json +++ b/plugins/window-state/package.json @@ -25,7 +25,7 @@ "LICENSE" ], "devDependencies": { - "tslib": "^2.5.0" + "tslib": "2.6.0" }, "dependencies": { "@tauri-apps/api": "2.0.0-alpha.5" diff --git a/plugins/window-state/rollup.config.mjs b/plugins/window-state/rollup.config.mjs index 6555e98b..99a3dd31 100644 --- a/plugins/window-state/rollup.config.mjs +++ b/plugins/window-state/rollup.config.mjs @@ -5,7 +5,7 @@ import { createConfig } from "../../shared/rollup.config.mjs"; export default createConfig({ input: "guest-js/index.ts", pkg: JSON.parse( - readFileSync(new URL("./package.json", import.meta.url), "utf8") + readFileSync(new URL("./package.json", import.meta.url), "utf8"), ), external: [/^@tauri-apps\/api/], }); diff --git a/plugins/window-state/src/lib.rs b/plugins/window-state/src/lib.rs index fa88be3b..98d58a9f 100644 --- a/plugins/window-state/src/lib.rs +++ b/plugins/window-state/src/lib.rs @@ -2,6 +2,14 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: MIT +//! [![](https://github.com/tauri-apps/plugins-workspace/raw/v2/plugins/window-state/banner.png)](https://github.com/tauri-apps/plugins-workspace/tree/v2/plugins/window-state) +//! +//! Save window positions and sizes and restore them when the app is reopened. + +#![doc( + html_logo_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png", + html_favicon_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png" +)] #![cfg(not(any(target_os = "android", target_os = "ios")))] use bitflags::bitflags; diff --git a/plugins/window/README.md b/plugins/window/README.md index 03dcc509..ccb989d1 100644 --- a/plugins/window/README.md +++ b/plugins/window/README.md @@ -1,4 +1,4 @@ -![plugin-window](banner.png) +![plugin-window](https://github.com/tauri-apps/plugins-workspace/raw/v2/plugins/window/banner.png) Interact with the Tauri window. diff --git a/plugins/window/guest-js/index.ts b/plugins/window/guest-js/index.ts index 956e1ced..a4e0721f 100644 --- a/plugins/window/guest-js/index.ts +++ b/plugins/window/guest-js/index.ts @@ -102,7 +102,7 @@ class PhysicalSize { * Converts the physical size to a logical one. * @example * ```typescript - * import { getCurrent } from '@tauri-apps/window'; + * import { getCurrent } from '@tauri-apps/plugin-window'; * const appWindow = getCurrent(); * const factor = await appWindow.scaleFactor(); * const size = await appWindow.innerSize(); @@ -149,7 +149,7 @@ class PhysicalPosition { * Converts the physical position to a logical one. * @example * ```typescript - * import { getCurrent } from '@tauri-apps/window'; + * import { getCurrent } from '@tauri-apps/plugin-window'; * const appWindow = getCurrent(); * const factor = await appWindow.scaleFactor(); * const position = await appWindow.innerPosition(); @@ -284,7 +284,7 @@ function getAll(): Window[] { new Window(w.label, { // @ts-expect-error `skip` is not defined in the public API but it is handled by the constructor skip: true, - }) + }), ); } @@ -338,7 +338,7 @@ class Window { * Creates a new WebviewWindow. * @example * ```typescript - * import { Window } from '@tauri-apps/window'; + * import { Window } from '@tauri-apps/plugin-window'; * const appWindow = new Window('my-label', { * url: 'https://github.com/tauri-apps/tauri' * }); @@ -377,7 +377,7 @@ class Window { * Gets the WebviewWindow for the webview associated with the given label. * @example * ```typescript - * import { WebviewWindow } from '@tauri-apps/window'; + * import { WebviewWindow } from '@tauri-apps/plugin-window'; * const mainWindow = WebviewWindow.getByLabel('main'); * ``` * @@ -438,7 +438,7 @@ class Window { * * @example * ```typescript - * import { getCurrent } from '@tauri-apps/window'; + * import { getCurrent } from '@tauri-apps/plugin-window'; * const unlisten = await getCurrent().listen('state-changed', (event) => { * console.log(`Got error: ${payload}`); * }); @@ -456,7 +456,7 @@ class Window { */ async listen( event: EventName, - handler: EventCallback + handler: EventCallback, ): Promise { if (this._handleTauriEvent(event, handler)) { return Promise.resolve(() => { @@ -473,7 +473,7 @@ class Window { * * @example * ```typescript - * import { getCurrent } from '@tauri-apps/window'; + * import { getCurrent } from '@tauri-apps/plugin-window'; * const unlisten = await getCurrent().once('initialized', (event) => { * console.log(`Window initialized!`); * }); @@ -504,7 +504,7 @@ class Window { * Emits an event to the backend, tied to the webview window. * @example * ```typescript - * import { getCurrent } from '@tauri-apps/window'; + * import { getCurrent } from '@tauri-apps/plugin-window'; * await getCurrent().emit('window-loaded', { loggedIn: true, token: 'authToken' }); * ``` * @@ -542,7 +542,7 @@ class Window { * The scale factor that can be used to map physical pixels to logical pixels. * @example * ```typescript - * import { getCurrent } from '@tauri-apps/window'; + * import { getCurrent } from '@tauri-apps/plugin-window'; * const factor = await getCurrent().scaleFactor(); * ``` * @@ -560,7 +560,7 @@ class Window { * The position of the top-left hand corner of the window's client area relative to the top-left hand corner of the desktop. * @example * ```typescript - * import { getCurrent } from '@tauri-apps/window'; + * import { getCurrent } from '@tauri-apps/plugin-window'; * const position = await getCurrent().innerPosition(); * ``` * @@ -574,7 +574,7 @@ class Window { "plugin:window|inner_position", { label: this.label, - } + }, ) .then(({ x, y }) => new PhysicalPosition(x, y)); } @@ -583,7 +583,7 @@ class Window { * The position of the top-left hand corner of the window relative to the top-left hand corner of the desktop. * @example * ```typescript - * import { getCurrent } from '@tauri-apps/window'; + * import { getCurrent } from '@tauri-apps/plugin-window'; * const position = await getCurrent().outerPosition(); * ``` * @@ -597,7 +597,7 @@ class Window { "plugin:window|outer_position", { label: this.label, - } + }, ) .then(({ x, y }) => new PhysicalPosition(x, y)); } @@ -607,7 +607,7 @@ class Window { * The client area is the content of the window, excluding the title bar and borders. * @example * ```typescript - * import { getCurrent } from '@tauri-apps/window'; + * import { getCurrent } from '@tauri-apps/plugin-window'; * const size = await getCurrent().innerSize(); * ``` * @@ -621,7 +621,7 @@ class Window { "plugin:window|inner_size", { label: this.label, - } + }, ) .then(({ width, height }) => new PhysicalSize(width, height)); } @@ -631,7 +631,7 @@ class Window { * These dimensions include the title bar and borders. If you don't want that (and you usually don't), use inner_size instead. * @example * ```typescript - * import { getCurrent } from '@tauri-apps/window'; + * import { getCurrent } from '@tauri-apps/plugin-window'; * const size = await getCurrent().outerSize(); * ``` * @@ -645,7 +645,7 @@ class Window { "plugin:window|outer_size", { label: this.label, - } + }, ) .then(({ width, height }) => new PhysicalSize(width, height)); } @@ -654,7 +654,7 @@ class Window { * Gets the window's current fullscreen state. * @example * ```typescript - * import { getCurrent } from '@tauri-apps/window'; + * import { getCurrent } from '@tauri-apps/plugin-window'; * const fullscreen = await getCurrent().isFullscreen(); * ``` * @@ -672,7 +672,7 @@ class Window { * Gets the window's current minimized state. * @example * ```typescript - * import { getCurrent } from '@tauri-apps/window'; + * import { getCurrent } from '@tauri-apps/plugin-window'; * const minimized = await getCurrent().isMinimized(); * ``` * @@ -688,7 +688,7 @@ class Window { * Gets the window's current maximized state. * @example * ```typescript - * import { getCurrent } from '@tauri-apps/window'; + * import { getCurrent } from '@tauri-apps/plugin-window'; * const maximized = await getCurrent().isMaximized(); * ``` * @@ -724,7 +724,7 @@ class Window { * Gets the window's current decorated state. * @example * ```typescript - * import { getCurrent } from '@tauri-apps/window'; + * import { getCurrent } from '@tauri-apps/plugin-window'; * const decorated = await getCurrent().isDecorated(); * ``` * @@ -742,7 +742,7 @@ class Window { * Gets the window's current resizable state. * @example * ```typescript - * import { getCurrent } from '@tauri-apps/window'; + * import { getCurrent } from '@tauri-apps/plugin-window'; * const resizable = await getCurrent().isResizable(); * ``` * @@ -823,7 +823,7 @@ class Window { * Gets the window's current visible state. * @example * ```typescript - * import { getCurrent } from '@tauri-apps/window'; + * import { getCurrent } from '@tauri-apps/plugin-window'; * const visible = await getCurrent().isVisible(); * ``` * @@ -841,7 +841,7 @@ class Window { * Gets the window's current title. * @example * ```typescript - * import { getCurrent } from '@tauri-apps/window'; + * import { getCurrent } from '@tauri-apps/plugin-window'; * const title = await getCurrent().title(); * ``` * @@ -862,7 +862,7 @@ class Window { * * @example * ```typescript - * import { getCurrent } from '@tauri-apps/window'; + * import { getCurrent } from '@tauri-apps/plugin-window'; * const theme = await getCurrent().theme(); * ``` * @@ -882,7 +882,7 @@ class Window { * Centers the window. * @example * ```typescript - * import { getCurrent } from '@tauri-apps/window'; + * import { getCurrent } from '@tauri-apps/plugin-window'; * await getCurrent().center(); * ``` * @@ -911,7 +911,7 @@ class Window { * - **Linux:** Urgency levels have the same effect. * @example * ```typescript - * import { getCurrent } from '@tauri-apps/window'; + * import { getCurrent } from '@tauri-apps/plugin-window'; * await getCurrent().requestUserAttention(); * ``` * @@ -921,7 +921,7 @@ class Window { * @since 2.0.0 */ async requestUserAttention( - requestType: UserAttentionType | null + requestType: UserAttentionType | null, ): Promise { let requestType_ = null; if (requestType) { @@ -942,7 +942,7 @@ class Window { * Updates the window resizable flag. * @example * ```typescript - * import { getCurrent } from '@tauri-apps/window'; + * import { getCurrent } from '@tauri-apps/plugin-window'; * await getCurrent().setResizable(false); * ``` * @@ -1034,7 +1034,7 @@ class Window { * Sets the window title. * @example * ```typescript - * import { getCurrent } from '@tauri-apps/window'; + * import { getCurrent } from '@tauri-apps/plugin-window'; * await getCurrent().setTitle('Tauri'); * ``` * @@ -1054,7 +1054,7 @@ class Window { * Maximizes the window. * @example * ```typescript - * import { getCurrent } from '@tauri-apps/window'; + * import { getCurrent } from '@tauri-apps/plugin-window'; * await getCurrent().maximize(); * ``` * @@ -1072,7 +1072,7 @@ class Window { * Unmaximizes the window. * @example * ```typescript - * import { getCurrent } from '@tauri-apps/window'; + * import { getCurrent } from '@tauri-apps/plugin-window'; * await getCurrent().unmaximize(); * ``` * @@ -1090,7 +1090,7 @@ class Window { * Toggles the window maximized state. * @example * ```typescript - * import { getCurrent } from '@tauri-apps/window'; + * import { getCurrent } from '@tauri-apps/plugin-window'; * await getCurrent().toggleMaximize(); * ``` * @@ -1108,7 +1108,7 @@ class Window { * Minimizes the window. * @example * ```typescript - * import { getCurrent } from '@tauri-apps/window'; + * import { getCurrent } from '@tauri-apps/plugin-window'; * await getCurrent().minimize(); * ``` * @@ -1126,7 +1126,7 @@ class Window { * Unminimizes the window. * @example * ```typescript - * import { getCurrent } from '@tauri-apps/window'; + * import { getCurrent } from '@tauri-apps/plugin-window'; * await getCurrent().unminimize(); * ``` * @@ -1144,7 +1144,7 @@ class Window { * Sets the window visibility to true. * @example * ```typescript - * import { getCurrent } from '@tauri-apps/window'; + * import { getCurrent } from '@tauri-apps/plugin-window'; * await getCurrent().show(); * ``` * @@ -1162,7 +1162,7 @@ class Window { * Sets the window visibility to false. * @example * ```typescript - * import { getCurrent } from '@tauri-apps/window'; + * import { getCurrent } from '@tauri-apps/plugin-window'; * await getCurrent().hide(); * ``` * @@ -1180,7 +1180,7 @@ class Window { * Closes the window. * @example * ```typescript - * import { getCurrent } from '@tauri-apps/window'; + * import { getCurrent } from '@tauri-apps/plugin-window'; * await getCurrent().close(); * ``` * @@ -1198,7 +1198,7 @@ class Window { * Whether the window should have borders and bars. * @example * ```typescript - * import { getCurrent } from '@tauri-apps/window'; + * import { getCurrent } from '@tauri-apps/plugin-window'; * await getCurrent().setDecorations(false); * ``` * @@ -1227,7 +1227,7 @@ class Window { * * @example * ```typescript - * import { getCurrent } from '@tauri-apps/window'; + * import { getCurrent } from '@tauri-apps/plugin-window'; * await getCurrent().setShadow(false); * ``` * @@ -1270,7 +1270,7 @@ class Window { * Whether the window should always be on top of other windows. * @example * ```typescript - * import { getCurrent } from '@tauri-apps/window'; + * import { getCurrent } from '@tauri-apps/plugin-window'; * await getCurrent().setAlwaysOnTop(true); * ``` * @@ -1290,7 +1290,7 @@ class Window { * Prevents the window contents from being captured by other apps. * @example * ```typescript - * import { getCurrent } from '@tauri-apps/window'; + * import { getCurrent } from '@tauri-apps/plugin-window'; * await getCurrent().setContentProtected(true); * ``` * @@ -1309,7 +1309,7 @@ class Window { * Resizes the window with a new inner size. * @example * ```typescript - * import { getCurrent, LogicalSize } from '@tauri-apps/window'; + * import { getCurrent, LogicalSize } from '@tauri-apps/plugin-window'; * await getCurrent().setSize(new LogicalSize(600, 500)); * ``` * @@ -1321,7 +1321,7 @@ class Window { async setSize(size: LogicalSize | PhysicalSize): Promise { if (!size || (size.type !== "Logical" && size.type !== "Physical")) { throw new Error( - "the `size` argument must be either a LogicalSize or a PhysicalSize instance" + "the `size` argument must be either a LogicalSize or a PhysicalSize instance", ); } @@ -1341,7 +1341,7 @@ class Window { * Sets the window minimum inner size. If the `size` argument is not provided, the constraint is unset. * @example * ```typescript - * import { getCurrent, PhysicalSize } from '@tauri-apps/window'; + * import { getCurrent, PhysicalSize } from '@tauri-apps/plugin-window'; * await getCurrent().setMinSize(new PhysicalSize(600, 500)); * ``` * @@ -1351,11 +1351,11 @@ class Window { * @since 2.0.0 */ async setMinSize( - size: LogicalSize | PhysicalSize | null | undefined + size: LogicalSize | PhysicalSize | null | undefined, ): Promise { if (size && size.type !== "Logical" && size.type !== "Physical") { throw new Error( - "the `size` argument must be either a LogicalSize or a PhysicalSize instance" + "the `size` argument must be either a LogicalSize or a PhysicalSize instance", ); } @@ -1377,7 +1377,7 @@ class Window { * Sets the window maximum inner size. If the `size` argument is undefined, the constraint is unset. * @example * ```typescript - * import { getCurrent, LogicalSize } from '@tauri-apps/window'; + * import { getCurrent, LogicalSize } from '@tauri-apps/plugin-window'; * await getCurrent().setMaxSize(new LogicalSize(600, 500)); * ``` * @@ -1387,11 +1387,11 @@ class Window { * @since 2.0.0 */ async setMaxSize( - size: LogicalSize | PhysicalSize | null | undefined + size: LogicalSize | PhysicalSize | null | undefined, ): Promise { if (size && size.type !== "Logical" && size.type !== "Physical") { throw new Error( - "the `size` argument must be either a LogicalSize or a PhysicalSize instance" + "the `size` argument must be either a LogicalSize or a PhysicalSize instance", ); } @@ -1413,7 +1413,7 @@ class Window { * Sets the window outer position. * @example * ```typescript - * import { getCurrent, LogicalPosition } from '@tauri-apps/window'; + * import { getCurrent, LogicalPosition } from '@tauri-apps/plugin-window'; * await getCurrent().setPosition(new LogicalPosition(600, 500)); * ``` * @@ -1423,14 +1423,14 @@ class Window { * @since 2.0.0 */ async setPosition( - position: LogicalPosition | PhysicalPosition + position: LogicalPosition | PhysicalPosition, ): Promise { if ( !position || (position.type !== "Logical" && position.type !== "Physical") ) { throw new Error( - "the `position` argument must be either a LogicalPosition or a PhysicalPosition instance" + "the `position` argument must be either a LogicalPosition or a PhysicalPosition instance", ); } @@ -1450,7 +1450,7 @@ class Window { * Sets the window fullscreen state. * @example * ```typescript - * import { getCurrent } from '@tauri-apps/window'; + * import { getCurrent } from '@tauri-apps/plugin-window'; * await getCurrent().setFullscreen(true); * ``` * @@ -1470,7 +1470,7 @@ class Window { * Bring the window to front and focus. * @example * ```typescript - * import { getCurrent } from '@tauri-apps/window'; + * import { getCurrent } from '@tauri-apps/plugin-window'; * await getCurrent().setFocus(); * ``` * @@ -1488,7 +1488,7 @@ class Window { * Sets the window icon. * @example * ```typescript - * import { getCurrent } from '@tauri-apps/window'; + * import { getCurrent } from '@tauri-apps/plugin-window'; * await getCurrent().setIcon('/tauri/awesome.png'); * ``` * @@ -1519,7 +1519,7 @@ class Window { * - **macOS:** Unsupported. * @example * ```typescript - * import { getCurrent } from '@tauri-apps/window'; + * import { getCurrent } from '@tauri-apps/plugin-window'; * await getCurrent().setSkipTaskbar(true); * ``` * @@ -1547,7 +1547,7 @@ class Window { * - **macOS:** This locks the cursor in a fixed location, which looks visually awkward. * @example * ```typescript - * import { getCurrent } from '@tauri-apps/window'; + * import { getCurrent } from '@tauri-apps/plugin-window'; * await getCurrent().setCursorGrab(true); * ``` * @@ -1573,7 +1573,7 @@ class Window { * outside of the window. * @example * ```typescript - * import { getCurrent } from '@tauri-apps/window'; + * import { getCurrent } from '@tauri-apps/plugin-window'; * await getCurrent().setCursorVisible(false); * ``` * @@ -1593,7 +1593,7 @@ class Window { * Modifies the cursor icon of the window. * @example * ```typescript - * import { getCurrent } from '@tauri-apps/window'; + * import { getCurrent } from '@tauri-apps/plugin-window'; * await getCurrent().setCursorIcon('help'); * ``` * @@ -1613,7 +1613,7 @@ class Window { * Changes the position of the cursor in window coordinates. * @example * ```typescript - * import { getCurrent, LogicalPosition } from '@tauri-apps/window'; + * import { getCurrent, LogicalPosition } from '@tauri-apps/plugin-window'; * await getCurrent().setCursorPosition(new LogicalPosition(600, 300)); * ``` * @@ -1623,14 +1623,14 @@ class Window { * @since 2.0.0 */ async setCursorPosition( - position: LogicalPosition | PhysicalPosition + position: LogicalPosition | PhysicalPosition, ): Promise { if ( !position || (position.type !== "Logical" && position.type !== "Physical") ) { throw new Error( - "the `position` argument must be either a LogicalPosition or a PhysicalPosition instance" + "the `position` argument must be either a LogicalPosition or a PhysicalPosition instance", ); } @@ -1651,7 +1651,7 @@ class Window { * * @example * ```typescript - * import { getCurrent } from '@tauri-apps/window'; + * import { getCurrent } from '@tauri-apps/plugin-window'; * await getCurrent().setIgnoreCursorEvents(true); * ``` * @@ -1671,7 +1671,7 @@ class Window { * Starts dragging the window. * @example * ```typescript - * import { getCurrent } from '@tauri-apps/window'; + * import { getCurrent } from '@tauri-apps/plugin-window'; * await getCurrent().startDragging(); * ``` * @@ -1765,7 +1765,7 @@ class Window { */ /* eslint-disable @typescript-eslint/promise-function-async */ async onCloseRequested( - handler: (event: CloseRequestedEvent) => void | Promise + handler: (event: CloseRequestedEvent) => void | Promise, ): Promise { return this.listen(TauriEvent.WINDOW_CLOSE_REQUESTED, (event) => { const evt = new CloseRequestedEvent(event); @@ -1802,13 +1802,13 @@ class Window { TauriEvent.WINDOW_FOCUS, (event) => { handler({ ...event, payload: true }); - } + }, ); const unlistenBlur = await this.listen( TauriEvent.WINDOW_BLUR, (event) => { handler({ ...event, payload: false }); - } + }, ); return () => { unlistenFocus(); @@ -1840,11 +1840,11 @@ class Window { * @since 2.0.0 */ async onScaleChanged( - handler: EventCallback + handler: EventCallback, ): Promise { return this.listen( TauriEvent.WINDOW_SCALE_FACTOR_CHANGED, - handler + handler, ); } @@ -1899,27 +1899,27 @@ class Window { * @since 2.0.0 */ async onFileDropEvent( - handler: EventCallback + handler: EventCallback, ): Promise { const unlistenFileDrop = await this.listen( TauriEvent.WINDOW_FILE_DROP, (event) => { handler({ ...event, payload: { type: "drop", paths: event.payload } }); - } + }, ); const unlistenFileHover = await this.listen( TauriEvent.WINDOW_FILE_DROP_HOVER, (event) => { handler({ ...event, payload: { type: "hover", paths: event.payload } }); - } + }, ); const unlistenCancel = await this.listen( TauriEvent.WINDOW_FILE_DROP_CANCELLED, (event) => { handler({ ...event, payload: { type: "cancel" } }); - } + }, ); return () => { @@ -2274,7 +2274,7 @@ function mapPhysicalSize(m: PhysicalSize): PhysicalSize { * Returns `null` if current monitor can't be detected. * @example * ```typescript - * import { currentMonitor } from '@tauri-apps/window'; + * import { currentMonitor } from '@tauri-apps/plugin-window'; * const monitor = currentMonitor(); * ``` * @@ -2291,7 +2291,7 @@ async function currentMonitor(): Promise { * Returns `null` if it can't identify any monitor as a primary one. * @example * ```typescript - * import { primaryMonitor } from '@tauri-apps/window'; + * import { primaryMonitor } from '@tauri-apps/plugin-window'; * const monitor = primaryMonitor(); * ``` * @@ -2307,7 +2307,7 @@ async function primaryMonitor(): Promise { * Returns the list of all the monitors available on the system. * @example * ```typescript - * import { availableMonitors } from '@tauri-apps/window'; + * import { availableMonitors } from '@tauri-apps/plugin-window'; * const monitors = availableMonitors(); * ``` * diff --git a/plugins/window/rollup.config.mjs b/plugins/window/rollup.config.mjs index 6555e98b..99a3dd31 100644 --- a/plugins/window/rollup.config.mjs +++ b/plugins/window/rollup.config.mjs @@ -5,7 +5,7 @@ import { createConfig } from "../../shared/rollup.config.mjs"; export default createConfig({ input: "guest-js/index.ts", pkg: JSON.parse( - readFileSync(new URL("./package.json", import.meta.url), "utf8") + readFileSync(new URL("./package.json", import.meta.url), "utf8"), ), external: [/^@tauri-apps\/api/], }); diff --git a/plugins/window/src/lib.rs b/plugins/window/src/lib.rs index 722a9924..be545b88 100644 --- a/plugins/window/src/lib.rs +++ b/plugins/window/src/lib.rs @@ -2,6 +2,15 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: MIT +//! [![](https://github.com/tauri-apps/plugins-workspace/raw/v2/plugins/window/banner.png)](https://github.com/tauri-apps/plugins-workspace/tree/v2/plugins/window) +//! +//! Interact with the Tauri window. + +#![doc( + html_logo_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png", + html_favicon_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png" +)] + use tauri::{ plugin::{Builder, TauriPlugin}, Runtime, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fde9937c..062ad1ad 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,58 +4,62 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false +overrides: + semver: '>=7.5.2' + optionator: '>=0.9.3' + importers: .: devDependencies: '@rollup/plugin-node-resolve': - specifier: ^15.1.0 - version: 15.1.0(rollup@3.25.1) + specifier: 15.1.0 + version: 15.1.0(rollup@3.26.3) '@rollup/plugin-terser': - specifier: ^0.4.3 - version: 0.4.3(rollup@3.25.1) + specifier: 0.4.3 + version: 0.4.3(rollup@3.26.3) '@rollup/plugin-typescript': - specifier: ^11.1.1 - version: 11.1.1(rollup@3.25.1)(typescript@5.1.3) + specifier: 11.1.2 + version: 11.1.2(rollup@3.26.3)(typescript@5.1.6) '@typescript-eslint/eslint-plugin': - specifier: ^5.59.11 - version: 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.43.0)(typescript@5.1.3) + specifier: 6.1.0 + version: 6.1.0(@typescript-eslint/parser@6.1.0)(eslint@8.45.0)(typescript@5.1.6) '@typescript-eslint/parser': - specifier: ^5.59.11 - version: 5.59.11(eslint@8.43.0)(typescript@5.1.3) + specifier: 6.1.0 + version: 6.1.0(eslint@8.45.0)(typescript@5.1.6) covector: specifier: ^0.9.0 - version: 0.9.0 + version: 0.9.0(mocha@10.2.0) eslint: - specifier: ^8.43.0 - version: 8.43.0 + specifier: 8.45.0 + version: 8.45.0 eslint-config-prettier: - specifier: ^8.8.0 - version: 8.8.0(eslint@8.43.0) + specifier: 8.8.0 + version: 8.8.0(eslint@8.45.0) eslint-config-standard-with-typescript: - specifier: ^35.0.0 - version: 35.0.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint-plugin-import@2.27.5)(eslint-plugin-n@16.0.0)(eslint-plugin-promise@6.1.1)(eslint@8.43.0)(typescript@5.1.3) + specifier: 36.1.0 + version: 36.1.0(@typescript-eslint/eslint-plugin@6.1.0)(eslint-plugin-import@2.27.5)(eslint-plugin-n@16.0.1)(eslint-plugin-promise@6.1.1)(eslint@8.45.0)(typescript@5.1.6) eslint-plugin-import: - specifier: ^2.27.5 - version: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint@8.43.0) + specifier: 2.27.5 + version: 2.27.5(@typescript-eslint/parser@6.1.0)(eslint@8.45.0) eslint-plugin-n: - specifier: ^16.0.0 - version: 16.0.0(eslint@8.43.0) + specifier: 16.0.1 + version: 16.0.1(eslint@8.45.0) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.1.1(eslint@8.43.0) + specifier: 6.1.1 + version: 6.1.1(eslint@8.45.0) eslint-plugin-security: - specifier: ^1.7.1 + specifier: 1.7.1 version: 1.7.1 prettier: - specifier: ^2.8.8 - version: 2.8.8 + specifier: 3.0.0 + version: 3.0.0 rollup: - specifier: ^3.25.1 - version: 3.25.1 + specifier: 3.26.3 + version: 3.26.3 typescript: - specifier: ^5.1.3 - version: 5.1.3 + specifier: 5.1.6 + version: 5.1.6 examples/api: dependencies: @@ -113,7 +117,7 @@ importers: version: 1.1.5 '@sveltejs/vite-plugin-svelte': specifier: ^2.4.1 - version: 2.4.1(svelte@3.59.1)(vite@4.3.9) + version: 2.4.1(svelte@3.59.1)(vite@4.4.4) '@tauri-apps/cli': specifier: 2.0.0-alpha.10 version: 2.0.0-alpha.10 @@ -128,10 +132,10 @@ importers: version: 3.59.1 unocss: specifier: ^0.53.1 - version: 0.53.1(postcss@8.4.23)(rollup@3.25.1)(vite@4.3.9) + version: 0.53.1(postcss@8.4.26)(rollup@3.26.3)(vite@4.4.4) vite: specifier: ^4.3.9 - version: 4.3.9 + version: 4.4.4 plugins/app: dependencies: @@ -141,7 +145,7 @@ importers: devDependencies: tslib: specifier: ^2.5.0 - version: 2.5.0 + version: 2.6.0 plugins/authenticator: dependencies: @@ -150,8 +154,8 @@ importers: version: 2.0.0-alpha.5 devDependencies: tslib: - specifier: ^2.5.0 - version: 2.5.0 + specifier: 2.6.0 + version: 2.6.0 plugins/autostart: dependencies: @@ -160,8 +164,8 @@ importers: version: 2.0.0-alpha.5 devDependencies: tslib: - specifier: ^2.5.0 - version: 2.5.0 + specifier: 2.6.0 + version: 2.6.0 plugins/cli: dependencies: @@ -171,7 +175,7 @@ importers: devDependencies: tslib: specifier: ^2.4.1 - version: 2.4.1 + version: 2.6.0 plugins/clipboard-manager: dependencies: @@ -181,7 +185,7 @@ importers: devDependencies: tslib: specifier: ^2.4.1 - version: 2.4.1 + version: 2.6.0 plugins/dialog: dependencies: @@ -191,7 +195,7 @@ importers: devDependencies: tslib: specifier: ^2.4.1 - version: 2.4.1 + version: 2.6.0 plugins/fs: dependencies: @@ -201,7 +205,7 @@ importers: devDependencies: tslib: specifier: ^2.4.1 - version: 2.4.1 + version: 2.6.0 plugins/global-shortcut: dependencies: @@ -211,7 +215,7 @@ importers: devDependencies: tslib: specifier: ^2.4.1 - version: 2.4.1 + version: 2.6.0 plugins/http: dependencies: @@ -221,7 +225,7 @@ importers: devDependencies: tslib: specifier: ^2.5.0 - version: 2.5.0 + version: 2.6.0 plugins/log: dependencies: @@ -230,8 +234,8 @@ importers: version: 2.0.0-alpha.5 devDependencies: tslib: - specifier: ^2.5.0 - version: 2.5.0 + specifier: 2.6.0 + version: 2.6.0 plugins/notification: dependencies: @@ -241,7 +245,7 @@ importers: devDependencies: tslib: specifier: ^2.4.1 - version: 2.4.1 + version: 2.6.0 plugins/os: dependencies: @@ -250,8 +254,8 @@ importers: version: 2.0.0-alpha.5 devDependencies: tslib: - specifier: ^2.5.0 - version: 2.5.0 + specifier: 2.6.0 + version: 2.6.0 plugins/positioner: dependencies: @@ -260,8 +264,8 @@ importers: version: 2.0.0-alpha.5 devDependencies: tslib: - specifier: ^2.5.0 - version: 2.5.0 + specifier: 2.6.0 + version: 2.6.0 plugins/process: dependencies: @@ -270,8 +274,8 @@ importers: version: 2.0.0-alpha.5 devDependencies: tslib: - specifier: ^2.5.0 - version: 2.5.0 + specifier: 2.6.0 + version: 2.6.0 plugins/shell: dependencies: @@ -281,7 +285,7 @@ importers: devDependencies: tslib: specifier: ^2.4.1 - version: 2.4.1 + version: 2.6.0 plugins/single-instance/examples/vanilla: devDependencies: @@ -296,8 +300,8 @@ importers: version: 2.0.0-alpha.5 devDependencies: tslib: - specifier: ^2.5.0 - version: 2.5.0 + specifier: 2.6.0 + version: 2.6.0 plugins/store: dependencies: @@ -306,8 +310,8 @@ importers: version: 2.0.0-alpha.5 devDependencies: tslib: - specifier: ^2.5.0 - version: 2.5.0 + specifier: 2.6.0 + version: 2.6.0 plugins/stronghold: dependencies: @@ -316,8 +320,8 @@ importers: version: 2.0.0-alpha.5 devDependencies: tslib: - specifier: ^2.5.0 - version: 2.5.0 + specifier: 2.6.0 + version: 2.6.0 plugins/updater: dependencies: @@ -327,7 +331,7 @@ importers: devDependencies: tslib: specifier: ^2.5.0 - version: 2.5.0 + version: 2.6.0 plugins/upload: dependencies: @@ -336,8 +340,8 @@ importers: version: 2.0.0-alpha.5 devDependencies: tslib: - specifier: ^2.5.0 - version: 2.5.0 + specifier: 2.6.0 + version: 2.6.0 plugins/websocket: dependencies: @@ -346,8 +350,8 @@ importers: version: 2.0.0-alpha.5 devDependencies: tslib: - specifier: ^2.5.0 - version: 2.5.0 + specifier: 2.6.0 + version: 2.6.0 plugins/websocket/examples/svelte-app: dependencies: @@ -356,29 +360,29 @@ importers: version: link:../.. devDependencies: '@sveltejs/adapter-auto': - specifier: ^2.0.0 - version: 2.0.1(@sveltejs/kit@1.15.8) + specifier: 2.1.0 + version: 2.1.0(@sveltejs/kit@1.22.3) '@sveltejs/kit': - specifier: ^1.15.5 - version: 1.15.8(svelte@3.58.0)(vite@4.3.9) + specifier: 1.22.3 + version: 1.22.3(svelte@4.0.5)(vite@4.4.4) '@tauri-apps/cli': specifier: 2.0.0-alpha.10 version: 2.0.0-alpha.10 svelte: - specifier: ^3.58.0 - version: 3.58.0 + specifier: 4.0.5 + version: 4.0.5 svelte-check: - specifier: ^3.2.0 - version: 3.2.0(svelte@3.58.0) + specifier: 3.4.6 + version: 3.4.6(svelte@4.0.5) tslib: - specifier: ^2.5.0 - version: 2.5.0 + specifier: 2.6.0 + version: 2.6.0 typescript: - specifier: ^5.0.4 - version: 5.0.4 + specifier: 5.1.6 + version: 5.1.6 vite: - specifier: ^4.3.9 - version: 4.3.9 + specifier: 4.4.4 + version: 4.4.4 plugins/window: dependencies: @@ -388,7 +392,7 @@ importers: devDependencies: tslib: specifier: ^2.5.0 - version: 2.5.0 + version: 2.6.0 plugins/window-state: dependencies: @@ -397,17 +401,22 @@ importers: version: 2.0.0-alpha.5 devDependencies: tslib: - specifier: ^2.5.0 - version: 2.5.0 + specifier: 2.6.0 + version: 2.6.0 packages: + /@aashutoshrathi/word-wrap@1.2.6: + resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} + engines: {node: '>=0.10.0'} + dev: true + /@ampproject/remapping@2.2.1: resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} engines: {node: '>=6.0.0'} dependencies: - '@jridgewell/gen-mapping': 0.3.2 - '@jridgewell/trace-mapping': 0.3.17 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.18 dev: true /@antfu/install-pkg@0.1.1: @@ -417,27 +426,35 @@ packages: find-up: 5.0.0 dev: true - /@antfu/utils@0.7.4: - resolution: {integrity: sha512-qe8Nmh9rYI/HIspLSTwtbMFPj6dISG6+dJnOguTlPNXtCvS2uezdxscVBb7/3DrmNbQK49TDqpkSQ1chbRGdpQ==} + /@antfu/utils@0.7.5: + resolution: {integrity: sha512-dlR6LdS+0SzOAPx/TPRhnoi7hE251OVeT2Snw0RguNbBSbjUHdWr0l3vcUUDg26rEysT89kCbtw1lVorBXLLCg==} + dev: true + + /@chainsafe/abort-controller@3.0.1: + resolution: {integrity: sha512-oyq0qgFJDIIgLpyPwTv4j/sHX/MITatFzY3/b42VSldyZfnUC1lYBx5RwFvzBv1Sq4APOj2VCZO23pDRwy5kew==} + engines: {node: '>=6.5'} + dependencies: + event-target-shim: 5.0.1 dev: true - /@covector/apply@0.8.0: + /@covector/apply@0.8.0(mocha@10.2.0): resolution: {integrity: sha512-t/yDcj9kzLl0NjmA86lET5ePGmGneHtcTlENdDEoWiJvLtjgtrCg9NcxMBHImEwIdUi1EsLQw9MgpWEZSMmtRg==} dependencies: '@covector/files': 0.6.1 - effection: 2.0.6 + effection: 2.0.7(mocha@10.2.0) lodash: 4.17.21 - semver: 7.3.8 + semver: 7.5.4 transitivePeerDependencies: - encoding + - mocha dev: true - /@covector/assemble@0.10.0: + /@covector/assemble@0.10.0(mocha@10.2.0): resolution: {integrity: sha512-Ug8NMj/tEbRB3ZE7DhVL86AJiymi3T7AE6gBKVlWjSOQsAfj10bLRUUYXUrpFpt0uf1UGxldaqJshp9qemRKsA==} dependencies: - '@covector/command': 0.6.1 + '@covector/command': 0.6.1(mocha@10.2.0) '@covector/files': 0.6.1 - effection: 2.0.6 + effection: 2.0.7(mocha@10.2.0) js-yaml: 4.1.0 lodash: 4.17.21 remark-frontmatter: 3.0.0 @@ -446,31 +463,34 @@ packages: unified: 9.2.2 transitivePeerDependencies: - encoding + - mocha - supports-color dev: true - /@covector/changelog@0.8.0: + /@covector/changelog@0.8.0(mocha@10.2.0): resolution: {integrity: sha512-INSuWMdGt96gkafwF+lK3o4113tqAuBNEP6VxjWGVUX4LRKRZlndwLua1Ckjc7TV5pMMfSTSUgBuc7AF/p2uzA==} dependencies: '@covector/files': 0.6.1 - effection: 2.0.6 + effection: 2.0.7(mocha@10.2.0) lodash: 4.17.21 remark-parse: 9.0.0 remark-stringify: 9.0.1 unified: 9.2.2 transitivePeerDependencies: - encoding + - mocha - supports-color dev: true - /@covector/command@0.6.1: + /@covector/command@0.6.1(mocha@10.2.0): resolution: {integrity: sha512-H44DLRVqRp/GarYqt1X1yo26+hBYqrrFqUstIb6b/+KRuuwN57VlHCvTlOnEK4Mn5bGZErFDrRiJ5yRCdMDYNw==} dependencies: - '@effection/process': 2.1.2 - effection: 2.0.6 + '@effection/process': 2.1.3(mocha@10.2.0) + effection: 2.0.7(mocha@10.2.0) strip-ansi: 6.0.1 transitivePeerDependencies: - encoding + - mocha dev: true /@covector/files@0.6.1: @@ -480,73 +500,85 @@ packages: '@tauri-apps/toml': 2.2.4 globby: 11.1.0 js-yaml: 4.1.0 - semver: 7.3.8 + semver: 7.5.4 dev: true - /@effection/channel@2.0.4: - resolution: {integrity: sha512-JlopFnlubIGEKEwmoENsNqj2Tfxt0Xz6P8wFnmKVOajT9ggsFKgIaD3DwZ8ndJnHM+mw5BvKMaPGuuL7r3Pvuw==} + /@effection/channel@2.0.5: + resolution: {integrity: sha512-Tq1BHVOKcH2Gd5Wsp1kqW1uKU+ZnXxb/wAXeRx57ciOY3bB6+0uOf1GdL9U8YQW5h2WQPBx76RykYLBhgVs9Cw==} dependencies: - '@effection/core': 2.2.1 - '@effection/events': 2.0.4 - '@effection/stream': 2.0.4 + '@effection/core': 2.2.2 + '@effection/events': 2.0.5 + '@effection/stream': 2.0.5 dev: true - /@effection/core@2.2.1: - resolution: {integrity: sha512-uYItornfIcdEya1NrRbatPQyRc1DR+o1RNtpYkVyXMSf3bpShsPADdqPJmxTvGaa2CK6mLkZ+6onUNz06tsPWA==} + /@effection/core@2.2.2: + resolution: {integrity: sha512-JdOTXLrflRyBTgvTHwX9l0ItWfcEPUGiUFKhqnMDJT6lf2FUnQ85oKTrDZXco2sQjXKuMtO0dwzmKngos2cTIQ==} dependencies: - abort-controller: 3.0.0 + '@chainsafe/abort-controller': 3.0.1 dev: true - /@effection/events@2.0.4: - resolution: {integrity: sha512-7CsWy1h9JON+ZtIcQTcld4MWLs7JS09ncmiO1bLFQE3BaIEBjs98E89WtfGg66bXvlTYC0wTC7it03CcA/QEbA==} + /@effection/events@2.0.5: + resolution: {integrity: sha512-xhF5hX8+ZmCvLuRSSCHwVudm/vm1/U9M9xi8+h0jwECt/2PV26vz+8ZDXbJGh9eF+0TZ+tIHto/X+7bTiRtQxg==} dependencies: - '@effection/core': 2.2.1 - '@effection/stream': 2.0.4 + '@effection/core': 2.2.2 + '@effection/stream': 2.0.5 dev: true - /@effection/fetch@2.0.5: - resolution: {integrity: sha512-NWrZYBgmNx686aslxf4J8CuquMIFVcG3LnONkGWQ41agDAX2lqQUOa5pAtUqj1hvEtb+l3lNawvpWbqFuNYYzA==} + /@effection/fetch@2.0.6(mocha@10.2.0): + resolution: {integrity: sha512-b0fUUe4vWCVopp8GyaP67L7EttGVA1NAYFm+4aLQntR0R3ybfl1uPGz164tM4eVXGwHYEwEkArFV9/oaXePyKA==} dependencies: - '@effection/core': 2.2.1 + '@effection/core': 2.2.2 + '@effection/mocha': 2.0.7(mocha@10.2.0) cross-fetch: 3.1.5 transitivePeerDependencies: - encoding + - mocha dev: true - /@effection/main@2.1.1: - resolution: {integrity: sha512-NwQ4hN+Crja/8At8QCr2vXyTkd5kDdwnl1UqqspSm88y3YdVH/B8yvw89Y3j+E0teo3COY/zu5NcS/VnxkMnLQ==} + /@effection/main@2.1.2: + resolution: {integrity: sha512-202JariBwP210C3Ka+ZHLGymcAuXs8Lg8TECbawpMFhA2w58AZhQB/oc0SOGvHWDarfRjVCMmB2dvQchCAGgnQ==} dependencies: - '@effection/core': 2.2.1 + '@effection/core': 2.2.2 chalk: 4.1.2 stacktrace-parser: 0.1.10 dev: true - /@effection/process@2.1.2: - resolution: {integrity: sha512-hwanPqnyA1fyQNDFwoRo6fqrbX7akgLPv4fXYEOETElDjaXuLA88FHBPaDm52IJv2KI49beq9krdEaobWmFmlA==} + /@effection/mocha@2.0.7(mocha@10.2.0): + resolution: {integrity: sha512-CSb0GEWUDL3BhvQw1FAT79xAypNOFYtQFaBozq2daM8E1Ej4DSJFCixDZahQBbXgLAmftSffeHdhYLDlr4pY/g==} + peerDependencies: + mocha: ^10.0.0 + dependencies: + effection: 2.0.7(mocha@10.2.0) + mocha: 10.2.0 + dev: true + + /@effection/process@2.1.3(mocha@10.2.0): + resolution: {integrity: sha512-LsSpstWbT0aBMITXR7VyNt4xpdhYQ8Uxc2cw98j7cXbadfnvRN7J7/KJHY97g3g98aDbREPex713bp4G7ef8wQ==} dependencies: cross-spawn: 7.0.3 ctrlc-windows: 2.1.0 - effection: 2.0.6 + effection: 2.0.7(mocha@10.2.0) shellwords: 0.1.1 transitivePeerDependencies: - encoding + - mocha dev: true - /@effection/stream@2.0.4: - resolution: {integrity: sha512-XXDiUbX+2zBAFlV6r5HfwLzm1Ko1Had13HUNTJFR+fmtkb5uG9Y6eJuViphaYg0VBbsZTJfgTAZWzN4PsBT9Lg==} + /@effection/stream@2.0.5: + resolution: {integrity: sha512-uALkQhCjgc7moeY3H8FG/plfYvgVTmxGOyJscgopRKYJIIuagswD0HD8RiSu1C21PuaUDCqfjMO3LIyNamcIqQ==} dependencies: - '@effection/core': 2.2.1 - '@effection/subscription': 2.0.4 + '@effection/core': 2.2.2 + '@effection/subscription': 2.0.5 dev: true - /@effection/subscription@2.0.4: - resolution: {integrity: sha512-flr7bu4a9t3WuDAXodH2Y2LId8pPb3UEUtwYsUaGBWNxLJJ51t3uCdPybf57L5h4/bqxAwJosd3gyhAhKzxk0Q==} + /@effection/subscription@2.0.5: + resolution: {integrity: sha512-Vsufl5Ywum2HgIjruhh4OJefvFnxYCWXtWZY/yVK3X2rovgdXr2IKphfO00VsXKeP4Uez4BhuiuFF5tq2DKDnw==} dependencies: - '@effection/core': 2.2.1 + '@effection/core': 2.2.2 dev: true - /@esbuild/android-arm64@0.17.18: - resolution: {integrity: sha512-/iq0aK0eeHgSC3z55ucMAHO05OIqmQehiGay8eP5l/5l+iEr4EIbh4/MI8xD9qRFjqzgkc0JkX0LculNC9mXBw==} + /@esbuild/android-arm64@0.18.14: + resolution: {integrity: sha512-rZ2v+Luba5/3D6l8kofWgTnqE+qsC/L5MleKIKFyllHTKHrNBMqeRCnZI1BtRx8B24xMYxeU32iIddRQqMsOsg==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -554,8 +586,8 @@ packages: dev: true optional: true - /@esbuild/android-arm@0.17.18: - resolution: {integrity: sha512-EmwL+vUBZJ7mhFCs5lA4ZimpUH3WMAoqvOIYhVQwdIgSpHC8ImHdsRyhHAVxpDYUSm0lWvd63z0XH1IlImS2Qw==} + /@esbuild/android-arm@0.18.14: + resolution: {integrity: sha512-blODaaL+lngG5bdK/t4qZcQvq2BBqrABmYwqPPcS5VRxrCSGHb9R/rA3fqxh7R18I7WU4KKv+NYkt22FDfalcg==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -563,8 +595,8 @@ packages: dev: true optional: true - /@esbuild/android-x64@0.17.18: - resolution: {integrity: sha512-x+0efYNBF3NPW2Xc5bFOSFW7tTXdAcpfEg2nXmxegm4mJuVeS+i109m/7HMiOQ6M12aVGGFlqJX3RhNdYM2lWg==} + /@esbuild/android-x64@0.18.14: + resolution: {integrity: sha512-qSwh8y38QKl+1Iqg+YhvCVYlSk3dVLk9N88VO71U4FUjtiSFylMWK3Ugr8GC6eTkkP4Tc83dVppt2n8vIdlSGg==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -572,8 +604,8 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64@0.17.18: - resolution: {integrity: sha512-6tY+djEAdF48M1ONWnQb1C+6LiXrKjmqjzPNPWXhu/GzOHTHX2nh8Mo2ZAmBFg0kIodHhciEgUBtcYCAIjGbjQ==} + /@esbuild/darwin-arm64@0.18.14: + resolution: {integrity: sha512-9Hl2D2PBeDYZiNbnRKRWuxwHa9v5ssWBBjisXFkVcSP5cZqzZRFBUWEQuqBHO4+PKx4q4wgHoWtfQ1S7rUqJ2Q==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -581,8 +613,8 @@ packages: dev: true optional: true - /@esbuild/darwin-x64@0.17.18: - resolution: {integrity: sha512-Qq84ykvLvya3dO49wVC9FFCNUfSrQJLbxhoQk/TE1r6MjHo3sFF2tlJCwMjhkBVq3/ahUisj7+EpRSz0/+8+9A==} + /@esbuild/darwin-x64@0.18.14: + resolution: {integrity: sha512-ZnI3Dg4ElQ6tlv82qLc/UNHtFsgZSKZ7KjsUNAo1BF1SoYDjkGKHJyCrYyWjFecmXpvvG/KJ9A/oe0H12odPLQ==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -590,8 +622,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64@0.17.18: - resolution: {integrity: sha512-fw/ZfxfAzuHfaQeMDhbzxp9mc+mHn1Y94VDHFHjGvt2Uxl10mT4CDavHm+/L9KG441t1QdABqkVYwakMUeyLRA==} + /@esbuild/freebsd-arm64@0.18.14: + resolution: {integrity: sha512-h3OqR80Da4oQCIa37zl8tU5MwHQ7qgPV0oVScPfKJK21fSRZEhLE4IIVpmcOxfAVmqjU6NDxcxhYaM8aDIGRLw==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -599,8 +631,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64@0.17.18: - resolution: {integrity: sha512-FQFbRtTaEi8ZBi/A6kxOC0V0E9B/97vPdYjY9NdawyLd4Qk5VD5g2pbWN2VR1c0xhzcJm74HWpObPszWC+qTew==} + /@esbuild/freebsd-x64@0.18.14: + resolution: {integrity: sha512-ha4BX+S6CZG4BoH9tOZTrFIYC1DH13UTCRHzFc3GWX74nz3h/N6MPF3tuR3XlsNjMFUazGgm35MPW5tHkn2lzQ==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -608,8 +640,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm64@0.17.18: - resolution: {integrity: sha512-R7pZvQZFOY2sxUG8P6A21eq6q+eBv7JPQYIybHVf1XkQYC+lT7nDBdC7wWKTrbvMXKRaGudp/dzZCwL/863mZQ==} + /@esbuild/linux-arm64@0.18.14: + resolution: {integrity: sha512-IXORRe22In7U65NZCzjwAUc03nn8SDIzWCnfzJ6t/8AvGx5zBkcLfknI+0P+hhuftufJBmIXxdSTbzWc8X/V4w==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -617,8 +649,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm@0.17.18: - resolution: {integrity: sha512-jW+UCM40LzHcouIaqv3e/oRs0JM76JfhHjCavPxMUti7VAPh8CaGSlS7cmyrdpzSk7A+8f0hiedHqr/LMnfijg==} + /@esbuild/linux-arm@0.18.14: + resolution: {integrity: sha512-5+7vehI1iqru5WRtJyU2XvTOvTGURw3OZxe3YTdE9muNNIdmKAVmSHpB3Vw2LazJk2ifEdIMt/wTWnVe5V98Kg==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -626,8 +658,8 @@ packages: dev: true optional: true - /@esbuild/linux-ia32@0.17.18: - resolution: {integrity: sha512-ygIMc3I7wxgXIxk6j3V00VlABIjq260i967Cp9BNAk5pOOpIXmd1RFQJQX9Io7KRsthDrQYrtcx7QCof4o3ZoQ==} + /@esbuild/linux-ia32@0.18.14: + resolution: {integrity: sha512-BfHlMa0nibwpjG+VXbOoqJDmFde4UK2gnW351SQ2Zd4t1N3zNdmUEqRkw/srC1Sa1DRBE88Dbwg4JgWCbNz/FQ==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -635,8 +667,8 @@ packages: dev: true optional: true - /@esbuild/linux-loong64@0.17.18: - resolution: {integrity: sha512-bvPG+MyFs5ZlwYclCG1D744oHk1Pv7j8psF5TfYx7otCVmcJsEXgFEhQkbhNW8otDHL1a2KDINW20cfCgnzgMQ==} + /@esbuild/linux-loong64@0.18.14: + resolution: {integrity: sha512-j2/Ex++DRUWIAaUDprXd3JevzGtZ4/d7VKz+AYDoHZ3HjJzCyYBub9CU1wwIXN+viOP0b4VR3RhGClsvyt/xSw==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -644,8 +676,8 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el@0.17.18: - resolution: {integrity: sha512-oVqckATOAGuiUOa6wr8TXaVPSa+6IwVJrGidmNZS1cZVx0HqkTMkqFGD2HIx9H1RvOwFeWYdaYbdY6B89KUMxA==} + /@esbuild/linux-mips64el@0.18.14: + resolution: {integrity: sha512-qn2+nc+ZCrJmiicoAnJXJJkZWt8Nwswgu1crY7N+PBR8ChBHh89XRxj38UU6Dkthl2yCVO9jWuafZ24muzDC/A==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -653,8 +685,8 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64@0.17.18: - resolution: {integrity: sha512-3dLlQO+b/LnQNxgH4l9rqa2/IwRJVN9u/bK63FhOPB4xqiRqlQAU0qDU3JJuf0BmaH0yytTBdoSBHrb2jqc5qQ==} + /@esbuild/linux-ppc64@0.18.14: + resolution: {integrity: sha512-aGzXzd+djqeEC5IRkDKt3kWzvXoXC6K6GyYKxd+wsFJ2VQYnOWE954qV2tvy5/aaNrmgPTb52cSCHFE+Z7Z0yg==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -662,8 +694,8 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64@0.17.18: - resolution: {integrity: sha512-/x7leOyDPjZV3TcsdfrSI107zItVnsX1q2nho7hbbQoKnmoeUWjs+08rKKt4AUXju7+3aRZSsKrJtaRmsdL1xA==} + /@esbuild/linux-riscv64@0.18.14: + resolution: {integrity: sha512-8C6vWbfr0ygbAiMFLS6OPz0BHvApkT2gCboOGV76YrYw+sD/MQJzyITNsjZWDXJwPu9tjrFQOVG7zijRzBCnLw==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -671,8 +703,8 @@ packages: dev: true optional: true - /@esbuild/linux-s390x@0.17.18: - resolution: {integrity: sha512-cX0I8Q9xQkL/6F5zWdYmVf5JSQt+ZfZD2bJudZrWD+4mnUvoZ3TDDXtDX2mUaq6upMFv9FlfIh4Gfun0tbGzuw==} + /@esbuild/linux-s390x@0.18.14: + resolution: {integrity: sha512-G/Lf9iu8sRMM60OVGOh94ZW2nIStksEcITkXdkD09/T6QFD/o+g0+9WVyR/jajIb3A0LvBJ670tBnGe1GgXMgw==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -680,8 +712,8 @@ packages: dev: true optional: true - /@esbuild/linux-x64@0.17.18: - resolution: {integrity: sha512-66RmRsPlYy4jFl0vG80GcNRdirx4nVWAzJmXkevgphP1qf4dsLQCpSKGM3DUQCojwU1hnepI63gNZdrr02wHUA==} + /@esbuild/linux-x64@0.18.14: + resolution: {integrity: sha512-TBgStYBQaa3EGhgqIDM+ECnkreb0wkcKqL7H6m+XPcGUoU4dO7dqewfbm0mWEQYH3kzFHrzjOFNpSAVzDZRSJw==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -689,8 +721,8 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64@0.17.18: - resolution: {integrity: sha512-95IRY7mI2yrkLlTLb1gpDxdC5WLC5mZDi+kA9dmM5XAGxCME0F8i4bYH4jZreaJ6lIZ0B8hTrweqG1fUyW7jbg==} + /@esbuild/netbsd-x64@0.18.14: + resolution: {integrity: sha512-stvCcjyCQR2lMTroqNhAbvROqRjxPEq0oQ380YdXxA81TaRJEucH/PzJ/qsEtsHgXlWFW6Ryr/X15vxQiyRXVg==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -698,8 +730,8 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64@0.17.18: - resolution: {integrity: sha512-WevVOgcng+8hSZ4Q3BKL3n1xTv5H6Nb53cBrtzzEjDbbnOmucEVcZeGCsCOi9bAOcDYEeBZbD2SJNBxlfP3qiA==} + /@esbuild/openbsd-x64@0.18.14: + resolution: {integrity: sha512-apAOJF14CIsN5ht1PA57PboEMsNV70j3FUdxLmA2liZ20gEQnfTG5QU0FhENo5nwbTqCB2O3WDsXAihfODjHYw==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -707,8 +739,8 @@ packages: dev: true optional: true - /@esbuild/sunos-x64@0.17.18: - resolution: {integrity: sha512-Rzf4QfQagnwhQXVBS3BYUlxmEbcV7MY+BH5vfDZekU5eYpcffHSyjU8T0xucKVuOcdCsMo+Ur5wmgQJH2GfNrg==} + /@esbuild/sunos-x64@0.18.14: + resolution: {integrity: sha512-fYRaaS8mDgZcGybPn2MQbn1ZNZx+UXFSUoS5Hd2oEnlsyUcr/l3c6RnXf1bLDRKKdLRSabTmyCy7VLQ7VhGdOQ==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -716,8 +748,8 @@ packages: dev: true optional: true - /@esbuild/win32-arm64@0.17.18: - resolution: {integrity: sha512-Kb3Ko/KKaWhjeAm2YoT/cNZaHaD1Yk/pa3FTsmqo9uFh1D1Rfco7BBLIPdDOozrObj2sahslFuAQGvWbgWldAg==} + /@esbuild/win32-arm64@0.18.14: + resolution: {integrity: sha512-1c44RcxKEJPrVj62XdmYhxXaU/V7auELCmnD+Ri+UCt+AGxTvzxl9uauQhrFso8gj6ZV1DaORV0sT9XSHOAk8Q==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -725,8 +757,8 @@ packages: dev: true optional: true - /@esbuild/win32-ia32@0.17.18: - resolution: {integrity: sha512-0/xUMIdkVHwkvxfbd5+lfG7mHOf2FRrxNbPiKWg9C4fFrB8H0guClmaM3BFiRUYrznVoyxTIyC/Ou2B7QQSwmw==} + /@esbuild/win32-ia32@0.18.14: + resolution: {integrity: sha512-EXAFttrdAxZkFQmpvcAQ2bywlWUsONp/9c2lcfvPUhu8vXBBenCXpoq9YkUvVP639ld3YGiYx0YUQ6/VQz3Maw==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -734,8 +766,8 @@ packages: dev: true optional: true - /@esbuild/win32-x64@0.17.18: - resolution: {integrity: sha512-qU25Ma1I3NqTSHJUOKi9sAH1/Mzuvlke0ioMJRthLXKm7JiSKVwFghlGbDLOO2sARECGhja4xYfRAZNPAkooYg==} + /@esbuild/win32-x64@0.18.14: + resolution: {integrity: sha512-K0QjGbcskx+gY+qp3v4/940qg8JitpXbdxFhRDA1aYoNaPff88+aEwoq45aqJ+ogpxQxmU0ZTjgnrQD/w8iiUg==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -743,30 +775,30 @@ packages: dev: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.43.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.45.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.43.0 - eslint-visitor-keys: 3.4.0 + eslint: 8.45.0 + eslint-visitor-keys: 3.4.1 dev: true - /@eslint-community/regexpp@4.5.0: - resolution: {integrity: sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==} + /@eslint-community/regexpp@4.5.1: + resolution: {integrity: sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true - /@eslint/eslintrc@2.0.3: - resolution: {integrity: sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==} + /@eslint/eslintrc@2.1.0: + resolution: {integrity: sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 - debug: 4.3.4 - espree: 9.5.2 - globals: 13.19.0 - ignore: 5.2.1 + debug: 4.3.4(supports-color@8.1.1) + espree: 9.6.1 + globals: 13.20.0 + ignore: 5.2.4 import-fresh: 3.3.0 js-yaml: 4.1.0 minimatch: 3.1.2 @@ -775,8 +807,8 @@ packages: - supports-color dev: true - /@eslint/js@8.43.0: - resolution: {integrity: sha512-s2UHCoiXfxMvmfzqoN+vrQ84ahUSYde9qNO1MdxmoEhyHWsfmwOpFlwYV+ePJEVc7gFnATGUi376WowX1N7tFg==} + /@eslint/js@8.44.0: + resolution: {integrity: sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true @@ -785,7 +817,7 @@ packages: engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 1.2.1 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -807,43 +839,39 @@ packages: /@iconify-json/codicon@1.1.26: resolution: {integrity: sha512-45eL9SIRByOryjY4VZ49SyaSxolHpYGL6z8vIzqrhECSQpcd8hvUJjyVj2gQ9IUy6QNVJirvgvWxXbp+XV5AMw==} dependencies: - '@iconify/types': 1.1.0 + '@iconify/types': 2.0.0 dev: true /@iconify-json/ph@1.1.5: resolution: {integrity: sha512-iLXq3nohfGge22gL2tZmQ2WHBKkKkIbGWrkuyC8arckS4PWaONyh4A+uDPtSek9QbYDvi9AE2+NxWkNZhANotA==} dependencies: - '@iconify/types': 1.1.0 - dev: true - - /@iconify/types@1.1.0: - resolution: {integrity: sha512-Jh0llaK2LRXQoYsorIH8maClebsnzTcve+7U3rQUSnC11X4jtPnFuyatqFLvMxZ8MLG8dB4zfHsbPfuvxluONw==} + '@iconify/types': 2.0.0 dev: true /@iconify/types@2.0.0: resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} dev: true - /@iconify/utils@2.1.6: - resolution: {integrity: sha512-WJNcj/mmFQoYok+576EexlCQe/g2tZ8X9jR4QLo++z6DlVqrjwt7FBYetTQ3iyTtrPMFHcAx0JiCqtUz30XG5A==} + /@iconify/utils@2.1.7: + resolution: {integrity: sha512-P8S3z/L1LcV4Qem9AoCfVAaTFGySEMzFEY4CHZLkfRj0Fv9LiR+AwjDgrDrzyI93U2L2mg9JHsbTJ52mF8suNw==} dependencies: '@antfu/install-pkg': 0.1.1 - '@antfu/utils': 0.7.4 + '@antfu/utils': 0.7.5 '@iconify/types': 2.0.0 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) kolorist: 1.8.0 local-pkg: 0.4.3 transitivePeerDependencies: - supports-color dev: true - /@jridgewell/gen-mapping@0.3.2: - resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} + /@jridgewell/gen-mapping@0.3.3: + resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} engines: {node: '>=6.0.0'} dependencies: '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.14 - '@jridgewell/trace-mapping': 0.3.17 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.18 dev: true /@jridgewell/resolve-uri@3.1.0: @@ -856,19 +884,23 @@ packages: engines: {node: '>=6.0.0'} dev: true - /@jridgewell/source-map@0.3.3: - resolution: {integrity: sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==} + /@jridgewell/source-map@0.3.5: + resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} dependencies: - '@jridgewell/gen-mapping': 0.3.2 - '@jridgewell/trace-mapping': 0.3.17 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.18 dev: true /@jridgewell/sourcemap-codec@1.4.14: resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} dev: true - /@jridgewell/trace-mapping@0.3.17: - resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==} + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + dev: true + + /@jridgewell/trace-mapping@0.3.18: + resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} dependencies: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.4.14 @@ -892,14 +924,14 @@ packages: engines: {node: '>= 8'} dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.14.0 + fastq: 1.15.0 dev: true /@polka/url@1.0.0-next.21: resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==} dev: true - /@rollup/plugin-node-resolve@15.1.0(rollup@3.25.1): + /@rollup/plugin-node-resolve@15.1.0(rollup@3.26.3): resolution: {integrity: sha512-xeZHCgsiZ9pzYVgAo9580eCGqwh/XCEUM9q6iQfGNocjgkufHAqC3exA+45URvhiYV8sBF9RlBai650eNs7AsA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -908,16 +940,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.25.1) + '@rollup/pluginutils': 5.0.2(rollup@3.26.3) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.2 - rollup: 3.25.1 + rollup: 3.26.3 dev: true - /@rollup/plugin-terser@0.4.3(rollup@3.25.1): + /@rollup/plugin-terser@0.4.3(rollup@3.26.3): resolution: {integrity: sha512-EF0oejTMtkyhrkwCdg0HJ0IpkcaVg1MMSf2olHb2Jp+1mnLM04OhjpJWGma4HobiDTF0WCyViWuvadyE9ch2XA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -926,14 +958,14 @@ packages: rollup: optional: true dependencies: - rollup: 3.25.1 + rollup: 3.26.3 serialize-javascript: 6.0.1 smob: 1.4.0 - terser: 5.18.0 + terser: 5.19.1 dev: true - /@rollup/plugin-typescript@11.1.1(rollup@3.25.1)(typescript@5.1.3): - resolution: {integrity: sha512-Ioir+x5Bejv72Lx2Zbz3/qGg7tvGbxQZALCLoJaGrkNXak/19+vKgKYJYM3i/fJxvsb23I9FuFQ8CUBEfsmBRg==} + /@rollup/plugin-typescript@11.1.2(rollup@3.26.3)(typescript@5.1.6): + resolution: {integrity: sha512-0ghSOCMcA7fl1JM+0gYRf+Q/HWyg+zg7/gDSc+fRLmlJWcW5K1I+CLRzaRhXf4Y3DRyPnnDo4M2ktw+a6JcDEg==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^2.14.0||^3.0.0 @@ -945,13 +977,13 @@ packages: tslib: optional: true dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.25.1) + '@rollup/pluginutils': 5.0.2(rollup@3.26.3) resolve: 1.22.2 - rollup: 3.25.1 - typescript: 5.1.3 + rollup: 3.26.3 + typescript: 5.1.6 dev: true - /@rollup/pluginutils@5.0.2(rollup@3.25.1): + /@rollup/pluginutils@5.0.2(rollup@3.26.3): resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -960,117 +992,116 @@ packages: rollup: optional: true dependencies: - '@types/estree': 1.0.0 + '@types/estree': 1.0.1 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 3.25.1 + rollup: 3.26.3 dev: true - /@sveltejs/adapter-auto@2.0.1(@sveltejs/kit@1.15.8): - resolution: {integrity: sha512-anxxYMcQy7HWSKxN4YNaVcgNzCHtNFwygq72EA1Xv7c+5gSECOJ1ez1PYoLciPiFa7A3XBvMDQXUFJ2eqLDtAA==} + /@sveltejs/adapter-auto@2.1.0(@sveltejs/kit@1.22.3): + resolution: {integrity: sha512-o2pZCfATFtA/Gw/BB0Xm7k4EYaekXxaPGER3xGSY3FvzFJGTlJlZjBseaXwYSM94lZ0HniOjTokN3cWaLX6fow==} peerDependencies: '@sveltejs/kit': ^1.0.0 dependencies: - '@sveltejs/kit': 1.15.8(svelte@3.58.0)(vite@4.3.9) + '@sveltejs/kit': 1.22.3(svelte@4.0.5)(vite@4.4.4) import-meta-resolve: 3.0.0 dev: true - /@sveltejs/kit@1.15.8(svelte@3.58.0)(vite@4.3.9): - resolution: {integrity: sha512-xPIF3UbFEA5BBZWFTGGUtSZ0O3DAtmzIp/yZZVdLIfzZ9+geKG3iGSVFnOUdYstjU7JcvJg12UC5MD5xoED59A==} + /@sveltejs/kit@1.22.3(svelte@4.0.5)(vite@4.4.4): + resolution: {integrity: sha512-IpHD5wvuoOIHYaHQUBJ1zERD2Iz+fB/rBXhXjl8InKw6X4VKE9BSus+ttHhE7Ke+Ie9ecfilzX8BnWE3FeQyng==} engines: {node: ^16.14 || >=18} hasBin: true requiresBuild: true peerDependencies: - svelte: ^3.54.0 + svelte: ^3.54.0 || ^4.0.0-next.0 vite: ^4.0.0 dependencies: - '@sveltejs/vite-plugin-svelte': 2.4.1(svelte@3.58.0)(vite@4.3.9) + '@sveltejs/vite-plugin-svelte': 2.4.2(svelte@4.0.5)(vite@4.4.4) '@types/cookie': 0.5.1 cookie: 0.5.0 - devalue: 4.3.0 + devalue: 4.3.2 esm-env: 1.0.0 kleur: 4.1.5 - magic-string: 0.30.0 + magic-string: 0.30.1 mime: 3.0.0 sade: 1.8.1 - set-cookie-parser: 2.5.1 - sirv: 2.0.2 - svelte: 3.58.0 - tiny-glob: 0.2.9 - undici: 5.22.0 - vite: 4.3.9 + set-cookie-parser: 2.6.0 + sirv: 2.0.3 + svelte: 4.0.5 + undici: 5.22.1 + vite: 4.4.4 transitivePeerDependencies: - supports-color dev: true - /@sveltejs/vite-plugin-svelte-inspector@1.0.2(@sveltejs/vite-plugin-svelte@2.4.1)(svelte@3.58.0)(vite@4.3.9): - resolution: {integrity: sha512-Cy1dUMcYCnDVV/hPLXa43YZJ2jGKVW5rA0xuNL9dlmYhT0yoS1g7+FOFSRlgk0BXKk/Oc7grs+8BVA5Iz2fr8A==} + /@sveltejs/vite-plugin-svelte-inspector@1.0.3(@sveltejs/vite-plugin-svelte@2.4.1)(svelte@3.59.1)(vite@4.4.4): + resolution: {integrity: sha512-Khdl5jmmPN6SUsVuqSXatKpQTMIifoQPDanaxC84m9JxIibWvSABJyHpyys0Z+1yYrxY5TTEQm+6elh0XCMaOA==} engines: {node: ^14.18.0 || >= 16} peerDependencies: '@sveltejs/vite-plugin-svelte': ^2.2.0 - svelte: ^3.54.0 || ^4.0.0-next.0 + svelte: ^3.54.0 || ^4.0.0 vite: ^4.0.0 dependencies: - '@sveltejs/vite-plugin-svelte': 2.4.1(svelte@3.58.0)(vite@4.3.9) - debug: 4.3.4 - svelte: 3.58.0 - vite: 4.3.9 + '@sveltejs/vite-plugin-svelte': 2.4.1(svelte@3.59.1)(vite@4.4.4) + debug: 4.3.4(supports-color@8.1.1) + svelte: 3.59.1 + vite: 4.4.4 transitivePeerDependencies: - supports-color dev: true - /@sveltejs/vite-plugin-svelte-inspector@1.0.2(@sveltejs/vite-plugin-svelte@2.4.1)(svelte@3.59.1)(vite@4.3.9): - resolution: {integrity: sha512-Cy1dUMcYCnDVV/hPLXa43YZJ2jGKVW5rA0xuNL9dlmYhT0yoS1g7+FOFSRlgk0BXKk/Oc7grs+8BVA5Iz2fr8A==} + /@sveltejs/vite-plugin-svelte-inspector@1.0.3(@sveltejs/vite-plugin-svelte@2.4.2)(svelte@4.0.5)(vite@4.4.4): + resolution: {integrity: sha512-Khdl5jmmPN6SUsVuqSXatKpQTMIifoQPDanaxC84m9JxIibWvSABJyHpyys0Z+1yYrxY5TTEQm+6elh0XCMaOA==} engines: {node: ^14.18.0 || >= 16} peerDependencies: '@sveltejs/vite-plugin-svelte': ^2.2.0 - svelte: ^3.54.0 || ^4.0.0-next.0 + svelte: ^3.54.0 || ^4.0.0 vite: ^4.0.0 dependencies: - '@sveltejs/vite-plugin-svelte': 2.4.1(svelte@3.59.1)(vite@4.3.9) - debug: 4.3.4 - svelte: 3.59.1 - vite: 4.3.9 + '@sveltejs/vite-plugin-svelte': 2.4.2(svelte@4.0.5)(vite@4.4.4) + debug: 4.3.4(supports-color@8.1.1) + svelte: 4.0.5 + vite: 4.4.4 transitivePeerDependencies: - supports-color dev: true - /@sveltejs/vite-plugin-svelte@2.4.1(svelte@3.58.0)(vite@4.3.9): + /@sveltejs/vite-plugin-svelte@2.4.1(svelte@3.59.1)(vite@4.4.4): resolution: {integrity: sha512-bNNKvoRY89ptY7udeBSCmTdCVwkjmMcZ0j/z9J5MuedT8jPjq0zrknAo/jF1sToAza4NVaAgR9AkZoD9oJJmnA==} engines: {node: ^14.18.0 || >= 16} peerDependencies: svelte: ^3.54.0 || ^4.0.0-next.0 vite: ^4.0.0 dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 1.0.2(@sveltejs/vite-plugin-svelte@2.4.1)(svelte@3.58.0)(vite@4.3.9) - debug: 4.3.4 + '@sveltejs/vite-plugin-svelte-inspector': 1.0.3(@sveltejs/vite-plugin-svelte@2.4.1)(svelte@3.59.1)(vite@4.4.4) + debug: 4.3.4(supports-color@8.1.1) deepmerge: 4.3.1 kleur: 4.1.5 - magic-string: 0.30.0 - svelte: 3.58.0 - svelte-hmr: 0.15.1(svelte@3.58.0) - vite: 4.3.9 - vitefu: 0.2.4(vite@4.3.9) + magic-string: 0.30.1 + svelte: 3.59.1 + svelte-hmr: 0.15.2(svelte@3.59.1) + vite: 4.4.4 + vitefu: 0.2.4(vite@4.4.4) transitivePeerDependencies: - supports-color dev: true - /@sveltejs/vite-plugin-svelte@2.4.1(svelte@3.59.1)(vite@4.3.9): - resolution: {integrity: sha512-bNNKvoRY89ptY7udeBSCmTdCVwkjmMcZ0j/z9J5MuedT8jPjq0zrknAo/jF1sToAza4NVaAgR9AkZoD9oJJmnA==} + /@sveltejs/vite-plugin-svelte@2.4.2(svelte@4.0.5)(vite@4.4.4): + resolution: {integrity: sha512-ePfcC48ftMKhkT0OFGdOyycYKnnkT6i/buzey+vHRTR/JpQvuPzzhf1PtKqCDQfJRgoPSN2vscXs6gLigx/zGw==} engines: {node: ^14.18.0 || >= 16} peerDependencies: - svelte: ^3.54.0 || ^4.0.0-next.0 + svelte: ^3.54.0 || ^4.0.0 vite: ^4.0.0 dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 1.0.2(@sveltejs/vite-plugin-svelte@2.4.1)(svelte@3.59.1)(vite@4.3.9) - debug: 4.3.4 + '@sveltejs/vite-plugin-svelte-inspector': 1.0.3(@sveltejs/vite-plugin-svelte@2.4.2)(svelte@4.0.5)(vite@4.4.4) + debug: 4.3.4(supports-color@8.1.1) deepmerge: 4.3.1 kleur: 4.1.5 - magic-string: 0.30.0 - svelte: 3.59.1 - svelte-hmr: 0.15.1(svelte@3.59.1) - vite: 4.3.9 - vitefu: 0.2.4(vite@4.3.9) + magic-string: 0.30.1 + svelte: 4.0.5 + svelte-hmr: 0.15.2(svelte@4.0.5) + vite: 4.4.4 + vitefu: 0.2.4(vite@4.4.4) transitivePeerDependencies: - supports-color dev: true @@ -1195,22 +1226,22 @@ packages: resolution: {integrity: sha512-COUnqfB2+ckwXXSFInsFdOAWQzCCx+a5hq2ruyj+Vjund94RJQd4LG2u9hnvJrTgunKAaax7ancBYlDrNYxA0g==} dev: true - /@types/estree@1.0.0: - resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==} + /@types/estree@1.0.1: + resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} dev: true - /@types/json-schema@7.0.11: - resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} + /@types/json-schema@7.0.12: + resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} dev: true /@types/json5@0.0.29: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} dev: true - /@types/mdast@3.0.11: - resolution: {integrity: sha512-Y/uImid8aAwrEA24/1tcRZwpxX3pIFTSilcNDKSPn+Y2iDywSEachzRuvgAYYLR3wpGXAsMbv5lvKLDZLeYPAw==} + /@types/mdast@3.0.12: + resolution: {integrity: sha512-DT+iNIRNX884cx0/Q1ja7NyUPpZuv0KPyL5rGNxm1WC1OtHstl7n4Jb7nk+xacNShQMbczJjt8uFzznpp6kYBg==} dependencies: - '@types/unist': 2.0.6 + '@types/unist': 2.0.7 dev: true /@types/pug@2.0.6: @@ -1221,44 +1252,46 @@ packages: resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} dev: true - /@types/semver@7.3.13: - resolution: {integrity: sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==} + /@types/semver@7.5.0: + resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} dev: true - /@types/unist@2.0.6: - resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} + /@types/unist@2.0.7: + resolution: {integrity: sha512-cputDpIbFgLUaGQn6Vqg3/YsJwxUwHLO13v3i5ouxT4lat0khip9AEWxtERujXV9wxIB1EyF97BSJFt6vpdI8g==} dev: true - /@typescript-eslint/eslint-plugin@5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.43.0)(typescript@5.1.3): - resolution: {integrity: sha512-XxuOfTkCUiOSyBWIvHlUraLw/JT/6Io1365RO6ZuI88STKMavJZPNMU0lFcUTeQXEhHiv64CbxYxBNoDVSmghg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@typescript-eslint/eslint-plugin@6.1.0(@typescript-eslint/parser@6.1.0)(eslint@8.45.0)(typescript@5.1.6): + resolution: {integrity: sha512-qg7Bm5TyP/I7iilGyp6DRqqkt8na00lI6HbjWZObgk3FFSzH5ypRwAHXJhJkwiRtTcfn+xYQIMOR5kJgpo6upw==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - '@typescript-eslint/parser': ^5.0.0 - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha + eslint: ^7.0.0 || ^8.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@eslint-community/regexpp': 4.5.0 - '@typescript-eslint/parser': 5.59.11(eslint@8.43.0)(typescript@5.1.3) - '@typescript-eslint/scope-manager': 5.59.11 - '@typescript-eslint/type-utils': 5.59.11(eslint@8.43.0)(typescript@5.1.3) - '@typescript-eslint/utils': 5.59.11(eslint@8.43.0)(typescript@5.1.3) - debug: 4.3.4 - eslint: 8.43.0 - grapheme-splitter: 1.0.4 - ignore: 5.2.1 + '@eslint-community/regexpp': 4.5.1 + '@typescript-eslint/parser': 6.1.0(eslint@8.45.0)(typescript@5.1.6) + '@typescript-eslint/scope-manager': 6.1.0 + '@typescript-eslint/type-utils': 6.1.0(eslint@8.45.0)(typescript@5.1.6) + '@typescript-eslint/utils': 6.1.0(eslint@8.45.0)(typescript@5.1.6) + '@typescript-eslint/visitor-keys': 6.1.0 + debug: 4.3.4(supports-color@8.1.1) + eslint: 8.45.0 + graphemer: 1.4.0 + ignore: 5.2.4 + natural-compare: 1.4.0 natural-compare-lite: 1.4.0 - semver: 7.5.1 - tsutils: 3.21.0(typescript@5.1.3) - typescript: 5.1.3 + semver: 7.5.4 + ts-api-utils: 1.0.1(typescript@5.1.6) + typescript: 5.1.6 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@5.59.11(eslint@8.43.0)(typescript@5.1.3): - resolution: {integrity: sha512-s9ZF3M+Nym6CAZEkJJeO2TFHHDsKAM3ecNkLuH4i4s8/RCPnF5JRip2GyviYkeEAcwGMJxkqG9h2dAsnA1nZpA==} + /@typescript-eslint/parser@5.62.0(eslint@8.45.0)(typescript@5.1.6): + resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -1267,51 +1300,85 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.59.11 - '@typescript-eslint/types': 5.59.11 - '@typescript-eslint/typescript-estree': 5.59.11(typescript@5.1.3) - debug: 4.3.4 - eslint: 8.43.0 - typescript: 5.1.3 + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.1.6) + debug: 4.3.4(supports-color@8.1.1) + eslint: 8.45.0 + typescript: 5.1.6 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager@5.59.11: - resolution: {integrity: sha512-dHFOsxoLFtrIcSj5h0QoBT/89hxQONwmn3FOQ0GOQcLOOXm+MIrS8zEAhs4tWl5MraxCY3ZJpaXQQdFMc2Tu+Q==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@typescript-eslint/parser@6.1.0(eslint@8.45.0)(typescript@5.1.6): + resolution: {integrity: sha512-hIzCPvX4vDs4qL07SYzyomamcs2/tQYXg5DtdAfj35AyJ5PIUqhsLf4YrEIFzZcND7R2E8tpQIZKayxg8/6Wbw==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: - '@typescript-eslint/types': 5.59.11 - '@typescript-eslint/visitor-keys': 5.59.11 + '@typescript-eslint/scope-manager': 6.1.0 + '@typescript-eslint/types': 6.1.0 + '@typescript-eslint/typescript-estree': 6.1.0(typescript@5.1.6) + '@typescript-eslint/visitor-keys': 6.1.0 + debug: 4.3.4(supports-color@8.1.1) + eslint: 8.45.0 + typescript: 5.1.6 + transitivePeerDependencies: + - supports-color dev: true - /@typescript-eslint/type-utils@5.59.11(eslint@8.43.0)(typescript@5.1.3): - resolution: {integrity: sha512-LZqVY8hMiVRF2a7/swmkStMYSoXMFlzL6sXV6U/2gL5cwnLWQgLEG8tjWPpaE4rMIdZ6VKWwcffPlo1jPfk43g==} + /@typescript-eslint/scope-manager@5.62.0: + resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + dev: true + + /@typescript-eslint/scope-manager@6.1.0: + resolution: {integrity: sha512-AxjgxDn27hgPpe2rQe19k0tXw84YCOsjDJ2r61cIebq1t+AIxbgiXKvD4999Wk49GVaAcdJ/d49FYel+Pp3jjw==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.1.0 + '@typescript-eslint/visitor-keys': 6.1.0 + dev: true + + /@typescript-eslint/type-utils@6.1.0(eslint@8.45.0)(typescript@5.1.6): + resolution: {integrity: sha512-kFXBx6QWS1ZZ5Ni89TyT1X9Ag6RXVIVhqDs0vZE/jUeWlBv/ixq2diua6G7ece6+fXw3TvNRxP77/5mOMusx2w==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - eslint: '*' + eslint: ^7.0.0 || ^8.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.59.11(typescript@5.1.3) - '@typescript-eslint/utils': 5.59.11(eslint@8.43.0)(typescript@5.1.3) - debug: 4.3.4 - eslint: 8.43.0 - tsutils: 3.21.0(typescript@5.1.3) - typescript: 5.1.3 + '@typescript-eslint/typescript-estree': 6.1.0(typescript@5.1.6) + '@typescript-eslint/utils': 6.1.0(eslint@8.45.0)(typescript@5.1.6) + debug: 4.3.4(supports-color@8.1.1) + eslint: 8.45.0 + ts-api-utils: 1.0.1(typescript@5.1.6) + typescript: 5.1.6 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types@5.59.11: - resolution: {integrity: sha512-epoN6R6tkvBYSc+cllrz+c2sOFWkbisJZWkOE+y3xHtvYaOE6Wk6B8e114McRJwFRjGvYdJwLXQH5c9osME/AA==} + /@typescript-eslint/types@5.62.0: + resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/typescript-estree@5.59.11(typescript@5.1.3): - resolution: {integrity: sha512-YupOpot5hJO0maupJXixi6l5ETdrITxeo5eBOeuV7RSKgYdU3G5cxO49/9WRnJq9EMrB7AuTSLH/bqOsXi7wPA==} + /@typescript-eslint/types@6.1.0: + resolution: {integrity: sha512-+Gfd5NHCpDoHDOaU/yIF3WWRI2PcBRKKpP91ZcVbL0t5tQpqYWBs3z/GGhvU+EV1D0262g9XCnyqQh19prU0JQ==} + engines: {node: ^16.0.0 || >=18.0.0} + dev: true + + /@typescript-eslint/typescript-estree@5.62.0(typescript@5.1.6): + resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -1319,73 +1386,101 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.59.11 - '@typescript-eslint/visitor-keys': 5.59.11 - debug: 4.3.4 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + debug: 4.3.4(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 - semver: 7.5.1 - tsutils: 3.21.0(typescript@5.1.3) - typescript: 5.1.3 + semver: 7.5.4 + tsutils: 3.21.0(typescript@5.1.6) + typescript: 5.1.6 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@5.59.11(eslint@8.43.0)(typescript@5.1.3): - resolution: {integrity: sha512-didu2rHSOMUdJThLk4aZ1Or8IcO3HzCw/ZvEjTTIfjIrcdd5cvSIwwDy2AOlE7htSNp7QIZ10fLMyRCveesMLg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@typescript-eslint/typescript-estree@6.1.0(typescript@5.1.6): + resolution: {integrity: sha512-nUKAPWOaP/tQjU1IQw9sOPCDavs/iU5iYLiY/6u7gxS7oKQoi4aUxXS1nrrVGTyBBaGesjkcwwHkbkiD5eBvcg==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.43.0) - '@types/json-schema': 7.0.11 - '@types/semver': 7.3.13 - '@typescript-eslint/scope-manager': 5.59.11 - '@typescript-eslint/types': 5.59.11 - '@typescript-eslint/typescript-estree': 5.59.11(typescript@5.1.3) - eslint: 8.43.0 - eslint-scope: 5.1.1 - semver: 7.5.1 + '@typescript-eslint/types': 6.1.0 + '@typescript-eslint/visitor-keys': 6.1.0 + debug: 4.3.4(supports-color@8.1.1) + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.4 + ts-api-utils: 1.0.1(typescript@5.1.6) + typescript: 5.1.6 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/utils@6.1.0(eslint@8.45.0)(typescript@5.1.6): + resolution: {integrity: sha512-wp652EogZlKmQoMS5hAvWqRKplXvkuOnNzZSE0PVvsKjpexd/XznRVHAtrfHFYmqaJz0DFkjlDsGYC9OXw+OhQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.45.0) + '@types/json-schema': 7.0.12 + '@types/semver': 7.5.0 + '@typescript-eslint/scope-manager': 6.1.0 + '@typescript-eslint/types': 6.1.0 + '@typescript-eslint/typescript-estree': 6.1.0(typescript@5.1.6) + eslint: 8.45.0 + semver: 7.5.4 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/visitor-keys@5.59.11: - resolution: {integrity: sha512-KGYniTGG3AMTuKF9QBD7EIrvufkB6O6uX3knP73xbKLMpH+QRPcgnCxjWXSHjMRuOxFLovljqQgQpR0c7GvjoA==} + /@typescript-eslint/visitor-keys@5.62.0: + resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.59.11 + '@typescript-eslint/types': 5.62.0 + eslint-visitor-keys: 3.4.1 + dev: true + + /@typescript-eslint/visitor-keys@6.1.0: + resolution: {integrity: sha512-yQeh+EXhquh119Eis4k0kYhj9vmFzNpbhM3LftWQVwqVjipCkwHBQOZutcYW+JVkjtTG9k8nrZU1UoNedPDd1A==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.1.0 eslint-visitor-keys: 3.4.1 dev: true - /@unocss/astro@0.53.1(rollup@3.25.1)(vite@4.3.9): + /@unocss/astro@0.53.1(rollup@3.26.3)(vite@4.4.4): resolution: {integrity: sha512-dvPH2buCL0qvWXFfQFUeB8kbbJsliN0ib2Am5/1r4XyOwCiCvfwc3UuQpsi0xJs/WO9QgIxLWxakxVj3DeAuAQ==} dependencies: '@unocss/core': 0.53.1 '@unocss/reset': 0.53.1 - '@unocss/vite': 0.53.1(rollup@3.25.1)(vite@4.3.9) + '@unocss/vite': 0.53.1(rollup@3.26.3)(vite@4.4.4) transitivePeerDependencies: - rollup - vite dev: true - /@unocss/cli@0.53.1(rollup@3.25.1): + /@unocss/cli@0.53.1(rollup@3.26.3): resolution: {integrity: sha512-K2r8eBtwv1oQ6KcDLb3KyIDaApVle3zbckZmd7W402/IRIJSKScLjxWHtEJpnYEyuxD5MlQpfRZLZgmWWVMOsg==} engines: {node: '>=14'} hasBin: true dependencies: '@ampproject/remapping': 2.2.1 - '@rollup/pluginutils': 5.0.2(rollup@3.25.1) + '@rollup/pluginutils': 5.0.2(rollup@3.26.3) '@unocss/config': 0.53.1 '@unocss/core': 0.53.1 '@unocss/preset-uno': 0.53.1 cac: 6.7.14 chokidar: 3.5.3 colorette: 2.0.20 - consola: 3.1.0 - fast-glob: 3.2.12 - magic-string: 0.30.0 + consola: 3.2.3 + fast-glob: 3.3.0 + magic-string: 0.30.1 pathe: 1.1.1 perfect-debounce: 1.0.0 transitivePeerDependencies: @@ -1421,7 +1516,7 @@ packages: sirv: 2.0.3 dev: true - /@unocss/postcss@0.53.1(postcss@8.4.23): + /@unocss/postcss@0.53.1(postcss@8.4.26): resolution: {integrity: sha512-vuUj/Tsvn6/YlEYp/AezyjoZLNBp+YomwpQctNZAC5ged5cqKfaw+oISw1LYzi/48Ynx7cV/4XqikApuozrvRQ==} engines: {node: '>=14'} peerDependencies: @@ -1430,9 +1525,9 @@ packages: '@unocss/config': 0.53.1 '@unocss/core': 0.53.1 css-tree: 2.3.1 - fast-glob: 3.2.12 - magic-string: 0.30.0 - postcss: 8.4.23 + fast-glob: 3.3.0 + magic-string: 0.30.1 + postcss: 8.4.26 dev: true /@unocss/preset-attributify@0.53.1: @@ -1444,9 +1539,9 @@ packages: /@unocss/preset-icons@0.53.1: resolution: {integrity: sha512-itL92ZSoplYjJA22TjMQnlJVOheFL8KWy9yPvXpNc4LA+eAhfCLXK2f5DoBNE5ehg3xGRvc8nhI0lP5xKJURWQ==} dependencies: - '@iconify/utils': 2.1.6 + '@iconify/utils': 2.1.7 '@unocss/core': 0.53.1 - ofetch: 1.1.0 + ofetch: 1.1.1 transitivePeerDependencies: - supports-color dev: true @@ -1483,7 +1578,7 @@ packages: resolution: {integrity: sha512-UwAYDkdIVwydw1UxXFVQ7HufzIPxY6Nf3ATb3cKgC134xLNGxbzIQx7DQRFSGe6hmqYC2S86U+URayboGlL1iA==} dependencies: '@unocss/core': 0.53.1 - ofetch: 1.1.0 + ofetch: 1.1.1 dev: true /@unocss/preset-wind@0.53.1: @@ -1532,22 +1627,22 @@ packages: '@unocss/core': 0.53.1 dev: true - /@unocss/vite@0.53.1(rollup@3.25.1)(vite@4.3.9): + /@unocss/vite@0.53.1(rollup@3.26.3)(vite@4.4.4): resolution: {integrity: sha512-/N/rjiFyj1ejK1ZQIv9N/NMsNE6i2/V8ISwYhbGxLpc3Sca4jeVjZPsx5cg5DN9Ddas2BRH3YhLhdh8rPUPzxQ==} peerDependencies: vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 dependencies: '@ampproject/remapping': 2.2.1 - '@rollup/pluginutils': 5.0.2(rollup@3.25.1) + '@rollup/pluginutils': 5.0.2(rollup@3.26.3) '@unocss/config': 0.53.1 '@unocss/core': 0.53.1 '@unocss/inspector': 0.53.1 '@unocss/scope': 0.53.1 '@unocss/transformer-directives': 0.53.1 chokidar: 3.5.3 - fast-glob: 3.2.12 - magic-string: 0.30.0 - vite: 4.3.9 + fast-glob: 3.3.0 + magic-string: 0.30.1 + vite: 4.4.4 transitivePeerDependencies: - rollup dev: true @@ -1560,29 +1655,16 @@ packages: svelte: 3.59.1 dev: false - /abort-controller@3.0.0: - resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} - engines: {node: '>=6.5'} - dependencies: - event-target-shim: 5.0.1 - dev: true - - /acorn-jsx@5.3.2(acorn@8.8.1): + /acorn-jsx@5.3.2(acorn@8.10.0): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - acorn: 8.8.1 + acorn: 8.10.0 dev: true - /acorn@8.8.1: - resolution: {integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: true - - /acorn@8.9.0: - resolution: {integrity: sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==} + /acorn@8.10.0: + resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} engines: {node: '>=0.4.0'} hasBin: true dev: true @@ -1596,6 +1678,11 @@ packages: uri-js: 4.4.1 dev: true + /ansi-colors@4.1.1: + resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==} + engines: {node: '>=6'} + dev: true + /ansi-escapes@4.3.2: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} @@ -1627,14 +1714,27 @@ packages: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} dev: true + /aria-query@5.3.0: + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} + dependencies: + dequal: 2.0.3 + dev: true + + /array-buffer-byte-length@1.0.0: + resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} + dependencies: + call-bind: 1.0.2 + is-array-buffer: 3.0.2 + dev: true + /array-includes@3.1.6: resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.20.5 - get-intrinsic: 1.1.3 + define-properties: 1.2.0 + es-abstract: 1.22.1 + get-intrinsic: 1.2.1 is-string: 1.0.7 dev: true @@ -1648,8 +1748,8 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.20.5 + define-properties: 1.2.0 + es-abstract: 1.22.1 es-shim-unscopables: 1.0.0 dev: true @@ -1658,11 +1758,34 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.20.5 + define-properties: 1.2.0 + es-abstract: 1.22.1 es-shim-unscopables: 1.0.0 dev: true + /arraybuffer.prototype.slice@1.0.1: + resolution: {integrity: sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.0 + call-bind: 1.0.2 + define-properties: 1.2.0 + get-intrinsic: 1.2.1 + is-array-buffer: 3.0.2 + is-shared-array-buffer: 1.0.2 + dev: true + + /available-typed-arrays@1.0.5: + resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} + engines: {node: '>= 0.4'} + dev: true + + /axobject-query@3.2.1: + resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} + dependencies: + dequal: 2.0.3 + dev: true + /bail@1.0.5: resolution: {integrity: sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==} dev: true @@ -1695,6 +1818,12 @@ packages: concat-map: 0.0.1 dev: true + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + dev: true + /braces@3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} engines: {node: '>=8'} @@ -1702,6 +1831,10 @@ packages: fill-range: 7.0.1 dev: true + /browser-stdout@1.3.1: + resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} + dev: true + /buffer-crc32@0.2.13: resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} dev: true @@ -1725,7 +1858,7 @@ packages: /builtins@5.0.1: resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} dependencies: - semver: 7.5.1 + semver: 7.5.4 dev: true /busboy@1.6.0: @@ -1744,7 +1877,7 @@ packages: resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: function-bind: 1.1.1 - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.1 dev: true /callsites@3.1.0: @@ -1752,6 +1885,11 @@ packages: engines: {node: '>=6'} dev: true + /camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + dev: true + /chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} @@ -1825,6 +1963,14 @@ packages: engines: {node: '>= 10'} dev: true + /cliui@7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + dev: true + /cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} @@ -1846,6 +1992,16 @@ packages: engines: {node: '>=0.8'} dev: true + /code-red@1.0.3: + resolution: {integrity: sha512-kVwJELqiILQyG5aeuyKFbdsI1fmQy1Cmf7dQ8eGmVuJoaRVdwey7WaMknr2ZFeVSYSKT0rExsa8EGw0aoI/1QQ==} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + '@types/estree': 1.0.1 + acorn: 8.10.0 + estree-walker: 3.0.3 + periscopic: 3.1.0 + dev: true + /color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} @@ -1869,8 +2025,9 @@ packages: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} dev: true - /consola@3.1.0: - resolution: {integrity: sha512-rrrJE6rP0qzl/Srg+C9x/AE5Kxfux7reVm1Wh0wCjuXvih6DqZgqDZe8auTD28fzJ9TF0mHlSDrPpWlujQRo1Q==} + /consola@3.2.3: + resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} + engines: {node: ^14.18.0 || >=16.10.0} dev: true /convert-hrtime@5.0.0: @@ -1883,21 +2040,22 @@ packages: engines: {node: '>= 0.6'} dev: true - /covector@0.9.0: + /covector@0.9.0(mocha@10.2.0): resolution: {integrity: sha512-uGDdpb33ZOwThylB8GKWpygGrpbipt7YRGUtIKnS4EBLugXz7ZM+Aj3g+BXzvFJC87S0My1+y98ejcXAoQkwbQ==} hasBin: true dependencies: - '@covector/apply': 0.8.0 - '@covector/assemble': 0.10.0 - '@covector/changelog': 0.8.0 - '@covector/command': 0.6.1 + '@covector/apply': 0.8.0(mocha@10.2.0) + '@covector/assemble': 0.10.0(mocha@10.2.0) + '@covector/changelog': 0.8.0(mocha@10.2.0) + '@covector/command': 0.6.1(mocha@10.2.0) '@covector/files': 0.6.1 - effection: 2.0.6 + effection: 2.0.7(mocha@10.2.0) globby: 11.1.0 inquirer: 8.2.5 yargs: 17.7.2 transitivePeerDependencies: - encoding + - mocha - supports-color dev: true @@ -1941,7 +2099,7 @@ packages: ms: 2.1.3 dev: true - /debug@4.3.4: + /debug@4.3.4(supports-color@8.1.1): resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} peerDependencies: @@ -1951,6 +2109,12 @@ packages: optional: true dependencies: ms: 2.1.2 + supports-color: 8.1.1 + dev: true + + /decamelize@4.0.0: + resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} + engines: {node: '>=10'} dev: true /deep-is@0.1.4: @@ -1975,8 +2139,8 @@ packages: clone: 1.0.4 dev: true - /define-properties@1.1.4: - resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==} + /define-properties@1.2.0: + resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} engines: {node: '>= 0.4'} dependencies: has-property-descriptors: 1.0.0 @@ -1987,8 +2151,13 @@ packages: resolution: {integrity: sha512-+uO4+qr7msjNNWKYPHqN/3+Dx3NFkmIzayk2L1MyZQlvgZb/J1A0fo410dpKrN2SnqFjt8n4JL8fDJE0wIgjFQ==} dev: true - /destr@1.2.2: - resolution: {integrity: sha512-lrbCJwD9saUQrqUfXvl6qoM+QN3W7tLV5pAOs+OqOmopCCz/JkE05MHedJR1xfk4IAnZuJXPVuN5+7jNA2ZCiA==} + /dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + dev: true + + /destr@2.0.0: + resolution: {integrity: sha512-FJ9RDpf3GicEBvzI3jxc2XhHzbqD8p4ANw/1kPsFBfTvP1b7Gn/Lg1vO7R9J4IVgoMbyUmFrFGZafJ1hPZpvlg==} dev: true /detect-indent@6.1.0: @@ -1996,8 +2165,13 @@ packages: engines: {node: '>=8'} dev: true - /devalue@4.3.0: - resolution: {integrity: sha512-n94yQo4LI3w7erwf84mhRUkUJfhLoCZiLyoOZ/QFsDbcWNZePrLwbQpvZBUG2TNxwV3VjCKPxkiiQA6pe3TrTA==} + /devalue@4.3.2: + resolution: {integrity: sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==} + dev: true + + /diff@5.0.0: + resolution: {integrity: sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==} + engines: {node: '>=0.3.1'} dev: true /dir-glob@3.0.1: @@ -2025,53 +2199,77 @@ packages: resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} dev: true - /effection@2.0.6: - resolution: {integrity: sha512-Bc8pXBrNQFumPLAmwj6mh7JeZFbLRoPYkqhU8WkVAuwHCQZh2xHE5zxaceL1nWR78ZuqFwwXlrTODDQLIkeQBw==} + /effection@2.0.7(mocha@10.2.0): + resolution: {integrity: sha512-I9ndFvtByvHbvOHwMp1NM7vlLDT0RBOu1YlIfBece46VASSot0oPnAfoGdc1YKoQShQLjigvHZ6OqZYUAxUcXg==} dependencies: - '@effection/channel': 2.0.4 - '@effection/core': 2.2.1 - '@effection/events': 2.0.4 - '@effection/fetch': 2.0.5 - '@effection/main': 2.1.1 - '@effection/stream': 2.0.4 - '@effection/subscription': 2.0.4 + '@effection/channel': 2.0.5 + '@effection/core': 2.2.2 + '@effection/events': 2.0.5 + '@effection/fetch': 2.0.6(mocha@10.2.0) + '@effection/main': 2.1.2 + '@effection/stream': 2.0.5 + '@effection/subscription': 2.0.5 transitivePeerDependencies: - encoding + - mocha dev: true /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} dev: true - /es-abstract@1.20.5: - resolution: {integrity: sha512-7h8MM2EQhsCA7pU/Nv78qOXFpD8Rhqd12gYiSJVkrH9+e8VuA8JlPJK/hQjjlLv6pJvx/z1iRFKzYb0XT/RuAQ==} + /es-abstract@1.22.1: + resolution: {integrity: sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==} engines: {node: '>= 0.4'} dependencies: + array-buffer-byte-length: 1.0.0 + arraybuffer.prototype.slice: 1.0.1 + available-typed-arrays: 1.0.5 call-bind: 1.0.2 + es-set-tostringtag: 2.0.1 es-to-primitive: 1.2.1 - function-bind: 1.1.1 function.prototype.name: 1.1.5 - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.1 get-symbol-description: 1.0.0 + globalthis: 1.0.3 gopd: 1.0.1 has: 1.0.3 has-property-descriptors: 1.0.0 + has-proto: 1.0.1 has-symbols: 1.0.3 - internal-slot: 1.0.4 + internal-slot: 1.0.5 + is-array-buffer: 3.0.2 is-callable: 1.2.7 is-negative-zero: 2.0.2 is-regex: 1.1.4 is-shared-array-buffer: 1.0.2 is-string: 1.0.7 + is-typed-array: 1.1.12 is-weakref: 1.0.2 - object-inspect: 1.12.2 + object-inspect: 1.12.3 object-keys: 1.1.1 object.assign: 4.1.4 - regexp.prototype.flags: 1.4.3 + regexp.prototype.flags: 1.5.0 + safe-array-concat: 1.0.0 safe-regex-test: 1.0.0 + string.prototype.trim: 1.2.7 string.prototype.trimend: 1.0.6 string.prototype.trimstart: 1.0.6 + typed-array-buffer: 1.0.0 + typed-array-byte-length: 1.0.0 + typed-array-byte-offset: 1.0.0 + typed-array-length: 1.0.4 unbox-primitive: 1.0.2 + which-typed-array: 1.1.11 + dev: true + + /es-set-tostringtag@2.0.1: + resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.1 + has: 1.0.3 + has-tostringtag: 1.0.0 dev: true /es-shim-unscopables@1.0.0: @@ -2093,34 +2291,34 @@ packages: resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} dev: true - /esbuild@0.17.18: - resolution: {integrity: sha512-z1lix43jBs6UKjcZVKOw2xx69ffE2aG0PygLL5qJ9OS/gy0Ewd1gW/PUQIOIQGXBHWNywSc0floSKoMFF8aK2w==} + /esbuild@0.18.14: + resolution: {integrity: sha512-uNPj5oHPYmj+ZhSQeYQVFZ+hAlJZbAGOmmILWIqrGvPVlNLbyOvU5Bu6Woi8G8nskcx0vwY0iFoMPrzT86Ko+w==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.17.18 - '@esbuild/android-arm64': 0.17.18 - '@esbuild/android-x64': 0.17.18 - '@esbuild/darwin-arm64': 0.17.18 - '@esbuild/darwin-x64': 0.17.18 - '@esbuild/freebsd-arm64': 0.17.18 - '@esbuild/freebsd-x64': 0.17.18 - '@esbuild/linux-arm': 0.17.18 - '@esbuild/linux-arm64': 0.17.18 - '@esbuild/linux-ia32': 0.17.18 - '@esbuild/linux-loong64': 0.17.18 - '@esbuild/linux-mips64el': 0.17.18 - '@esbuild/linux-ppc64': 0.17.18 - '@esbuild/linux-riscv64': 0.17.18 - '@esbuild/linux-s390x': 0.17.18 - '@esbuild/linux-x64': 0.17.18 - '@esbuild/netbsd-x64': 0.17.18 - '@esbuild/openbsd-x64': 0.17.18 - '@esbuild/sunos-x64': 0.17.18 - '@esbuild/win32-arm64': 0.17.18 - '@esbuild/win32-ia32': 0.17.18 - '@esbuild/win32-x64': 0.17.18 + '@esbuild/android-arm': 0.18.14 + '@esbuild/android-arm64': 0.18.14 + '@esbuild/android-x64': 0.18.14 + '@esbuild/darwin-arm64': 0.18.14 + '@esbuild/darwin-x64': 0.18.14 + '@esbuild/freebsd-arm64': 0.18.14 + '@esbuild/freebsd-x64': 0.18.14 + '@esbuild/linux-arm': 0.18.14 + '@esbuild/linux-arm64': 0.18.14 + '@esbuild/linux-ia32': 0.18.14 + '@esbuild/linux-loong64': 0.18.14 + '@esbuild/linux-mips64el': 0.18.14 + '@esbuild/linux-ppc64': 0.18.14 + '@esbuild/linux-riscv64': 0.18.14 + '@esbuild/linux-s390x': 0.18.14 + '@esbuild/linux-x64': 0.18.14 + '@esbuild/netbsd-x64': 0.18.14 + '@esbuild/openbsd-x64': 0.18.14 + '@esbuild/sunos-x64': 0.18.14 + '@esbuild/win32-arm64': 0.18.14 + '@esbuild/win32-ia32': 0.18.14 + '@esbuild/win32-x64': 0.18.14 dev: true /escalade@3.1.1: @@ -2138,63 +2336,64 @@ packages: engines: {node: '>=10'} dev: true - /eslint-config-prettier@8.8.0(eslint@8.43.0): + /eslint-config-prettier@8.8.0(eslint@8.45.0): resolution: {integrity: sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.43.0 + eslint: 8.45.0 dev: true - /eslint-config-standard-with-typescript@35.0.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint-plugin-import@2.27.5)(eslint-plugin-n@16.0.0)(eslint-plugin-promise@6.1.1)(eslint@8.43.0)(typescript@5.1.3): - resolution: {integrity: sha512-Xa7DY9GgduZyp0qmXxBF0/dB+Vm4/DgWu1lGpNLJV2d46aCaUxTKDEnkzjUWX/1O9S0a+Dhnw7A4oI0JpYzwtw==} + /eslint-config-standard-with-typescript@36.1.0(@typescript-eslint/eslint-plugin@6.1.0)(eslint-plugin-import@2.27.5)(eslint-plugin-n@16.0.1)(eslint-plugin-promise@6.1.1)(eslint@8.45.0)(typescript@5.1.6): + resolution: {integrity: sha512-Gpk+7Q3EHqIzTnqYs/LpfOwVb8+kocvlFLYhBdCmUy+EUpsC7067PaHhGSp8P4N+lC2KNGBZ7e2tiGyoRNSVHA==} peerDependencies: '@typescript-eslint/eslint-plugin': ^5.50.0 eslint: ^8.0.1 eslint-plugin-import: ^2.25.2 - eslint-plugin-n: ^15.0.0 + eslint-plugin-n: '^15.0.0 || ^16.0.0 ' eslint-plugin-promise: ^6.0.0 typescript: '*' dependencies: - '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.43.0)(typescript@5.1.3) - '@typescript-eslint/parser': 5.59.11(eslint@8.43.0)(typescript@5.1.3) - eslint: 8.43.0 - eslint-config-standard: 17.0.0(eslint-plugin-import@2.27.5)(eslint-plugin-n@16.0.0)(eslint-plugin-promise@6.1.1)(eslint@8.43.0) - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint@8.43.0) - eslint-plugin-n: 16.0.0(eslint@8.43.0) - eslint-plugin-promise: 6.1.1(eslint@8.43.0) - typescript: 5.1.3 + '@typescript-eslint/eslint-plugin': 6.1.0(@typescript-eslint/parser@6.1.0)(eslint@8.45.0)(typescript@5.1.6) + '@typescript-eslint/parser': 5.62.0(eslint@8.45.0)(typescript@5.1.6) + eslint: 8.45.0 + eslint-config-standard: 17.1.0(eslint-plugin-import@2.27.5)(eslint-plugin-n@16.0.1)(eslint-plugin-promise@6.1.1)(eslint@8.45.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@6.1.0)(eslint@8.45.0) + eslint-plugin-n: 16.0.1(eslint@8.45.0) + eslint-plugin-promise: 6.1.1(eslint@8.45.0) + typescript: 5.1.6 transitivePeerDependencies: - supports-color dev: true - /eslint-config-standard@17.0.0(eslint-plugin-import@2.27.5)(eslint-plugin-n@16.0.0)(eslint-plugin-promise@6.1.1)(eslint@8.43.0): - resolution: {integrity: sha512-/2ks1GKyqSOkH7JFvXJicu0iMpoojkwB+f5Du/1SC0PtBL+s8v30k9njRZ21pm2drKYm2342jFnGWzttxPmZVg==} + /eslint-config-standard@17.1.0(eslint-plugin-import@2.27.5)(eslint-plugin-n@16.0.1)(eslint-plugin-promise@6.1.1)(eslint@8.45.0): + resolution: {integrity: sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==} + engines: {node: '>=12.0.0'} peerDependencies: eslint: ^8.0.1 eslint-plugin-import: ^2.25.2 - eslint-plugin-n: ^15.0.0 + eslint-plugin-n: '^15.0.0 || ^16.0.0 ' eslint-plugin-promise: ^6.0.0 dependencies: - eslint: 8.43.0 - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint@8.43.0) - eslint-plugin-n: 16.0.0(eslint@8.43.0) - eslint-plugin-promise: 6.1.1(eslint@8.43.0) + eslint: 8.45.0 + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@6.1.0)(eslint@8.45.0) + eslint-plugin-n: 16.0.1(eslint@8.45.0) + eslint-plugin-promise: 6.1.1(eslint@8.45.0) dev: true /eslint-import-resolver-node@0.3.7: resolution: {integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==} dependencies: debug: 3.2.7 - is-core-module: 2.11.0 - resolve: 1.22.1 + is-core-module: 2.12.1 + resolve: 1.22.2 transitivePeerDependencies: - supports-color dev: true - /eslint-module-utils@2.7.4(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint@8.43.0): - resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.1.0)(eslint-import-resolver-node@0.3.7)(eslint@8.45.0): + resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -2214,26 +2413,26 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.59.11(eslint@8.43.0)(typescript@5.1.3) + '@typescript-eslint/parser': 6.1.0(eslint@8.45.0)(typescript@5.1.6) debug: 3.2.7 - eslint: 8.43.0 + eslint: 8.45.0 eslint-import-resolver-node: 0.3.7 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-es-x@6.2.1(eslint@8.43.0): - resolution: {integrity: sha512-uR34zUhZ9EBoiSD2DdV5kHLpydVEvwWqjteUr9sXRgJknwbKZJZhdJ7uFnaTtd+Nr/2G3ceJHnHXrFhJ67n3Tw==} + /eslint-plugin-es-x@7.1.0(eslint@8.45.0): + resolution: {integrity: sha512-AhiaF31syh4CCQ+C5ccJA0VG6+kJK8+5mXKKE7Qs1xcPRg02CDPOj3mWlQxuWS/AYtg7kxrDNgW9YW3vc0Q+Mw==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '>=8' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.43.0) - '@eslint-community/regexpp': 4.5.0 - eslint: 8.43.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.45.0) + '@eslint-community/regexpp': 4.5.1 + eslint: 8.45.0 dev: true - /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.59.11)(eslint@8.43.0): + /eslint-plugin-import@2.27.5(@typescript-eslint/parser@6.1.0)(eslint@8.45.0): resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} engines: {node: '>=4'} peerDependencies: @@ -2243,53 +2442,53 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.59.11(eslint@8.43.0)(typescript@5.1.3) + '@typescript-eslint/parser': 6.1.0(eslint@8.45.0)(typescript@5.1.6) array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.43.0 + eslint: 8.45.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint@8.43.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.1.0)(eslint-import-resolver-node@0.3.7)(eslint@8.45.0) has: 1.0.3 - is-core-module: 2.11.0 + is-core-module: 2.12.1 is-glob: 4.0.3 minimatch: 3.1.2 object.values: 1.1.6 - resolve: 1.22.1 - semver: 6.3.0 - tsconfig-paths: 3.14.1 + resolve: 1.22.2 + semver: 7.5.4 + tsconfig-paths: 3.14.2 transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color dev: true - /eslint-plugin-n@16.0.0(eslint@8.43.0): - resolution: {integrity: sha512-akkZTE3hsHBrq6CwmGuYCzQREbVUrA855kzcHqe6i0FLBkeY7Y/6tThCVkjUnjhvRBAlc+8lILcSe5QvvDpeZQ==} + /eslint-plugin-n@16.0.1(eslint@8.45.0): + resolution: {integrity: sha512-CDmHegJN0OF3L5cz5tATH84RPQm9kG+Yx39wIqIwPR2C0uhBGMWfbbOtetR83PQjjidA5aXMu+LEFw1jaSwvTA==} engines: {node: '>=16.0.0'} peerDependencies: eslint: '>=7.0.0' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.43.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.45.0) builtins: 5.0.1 - eslint: 8.43.0 - eslint-plugin-es-x: 6.2.1(eslint@8.43.0) - ignore: 5.2.1 - is-core-module: 2.12.0 + eslint: 8.45.0 + eslint-plugin-es-x: 7.1.0(eslint@8.45.0) + ignore: 5.2.4 + is-core-module: 2.12.1 minimatch: 3.1.2 resolve: 1.22.2 - semver: 7.5.1 + semver: 7.5.4 dev: true - /eslint-plugin-promise@6.1.1(eslint@8.43.0): + /eslint-plugin-promise@6.1.1(eslint@8.45.0): resolution: {integrity: sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: - eslint: 8.43.0 + eslint: 8.45.0 dev: true /eslint-plugin-security@1.7.1: @@ -2298,63 +2497,49 @@ packages: safe-regex: 2.1.1 dev: true - /eslint-scope@5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} - dependencies: - esrecurse: 4.3.0 - estraverse: 4.3.0 - dev: true - - /eslint-scope@7.2.0: - resolution: {integrity: sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==} + /eslint-scope@7.2.1: + resolution: {integrity: sha512-CvefSOsDdaYYvxChovdrPo/ZGt8d5lrJWleAc1diXRKhHGiTYEI26cvo8Kle/wGnsizoCJjK73FMg1/IkIwiNA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 dev: true - /eslint-visitor-keys@3.4.0: - resolution: {integrity: sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - /eslint-visitor-keys@3.4.1: resolution: {integrity: sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@8.43.0: - resolution: {integrity: sha512-aaCpf2JqqKesMFGgmRPessmVKjcGXqdlAYLLC3THM8t5nBRZRQ+st5WM/hoJXkdioEXLLbXgclUpM0TXo5HX5Q==} + /eslint@8.45.0: + resolution: {integrity: sha512-pd8KSxiQpdYRfYa9Wufvdoct3ZPQQuVuU5O6scNgMuOMYuxvH0IGaYK0wUFjo4UYYQQCUndlXiMbnxopwvvTiw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.43.0) - '@eslint-community/regexpp': 4.5.0 - '@eslint/eslintrc': 2.0.3 - '@eslint/js': 8.43.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.45.0) + '@eslint-community/regexpp': 4.5.1 + '@eslint/eslintrc': 2.1.0 + '@eslint/js': 8.44.0 '@humanwhocodes/config-array': 0.11.10 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) doctrine: 3.0.0 escape-string-regexp: 4.0.0 - eslint-scope: 7.2.0 + eslint-scope: 7.2.1 eslint-visitor-keys: 3.4.1 - espree: 9.5.2 + espree: 9.6.1 esquery: 1.5.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 6.0.1 find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.19.0 + globals: 13.20.0 graphemer: 1.4.0 - ignore: 5.2.1 - import-fresh: 3.3.0 + ignore: 5.2.4 imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 @@ -2364,9 +2549,8 @@ packages: lodash.merge: 4.6.2 minimatch: 3.1.2 natural-compare: 1.4.0 - optionator: 0.9.1 + optionator: 0.9.3 strip-ansi: 6.0.1 - strip-json-comments: 3.1.1 text-table: 0.2.0 transitivePeerDependencies: - supports-color @@ -2376,12 +2560,12 @@ packages: resolution: {integrity: sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==} dev: true - /espree@9.5.2: - resolution: {integrity: sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==} + /espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - acorn: 8.8.1 - acorn-jsx: 5.3.2(acorn@8.8.1) + acorn: 8.10.0 + acorn-jsx: 5.3.2(acorn@8.10.0) eslint-visitor-keys: 3.4.1 dev: true @@ -2399,11 +2583,6 @@ packages: estraverse: 5.3.0 dev: true - /estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - dev: true - /estraverse@5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} @@ -2413,6 +2592,12 @@ packages: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} dev: true + /estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + dependencies: + '@types/estree': 1.0.1 + dev: true + /esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} @@ -2470,8 +2655,8 @@ packages: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} dev: true - /fast-glob@3.2.12: - resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} + /fast-glob@3.3.0: + resolution: {integrity: sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==} engines: {node: '>=8.6.0'} dependencies: '@nodelib/fs.stat': 2.0.5 @@ -2489,8 +2674,8 @@ packages: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} dev: true - /fastq@1.14.0: - resolution: {integrity: sha512-eR2D+V9/ExcbF9ls441yIuN6TI2ED1Y2ZcA5BmMtJsOkWOFRJQ0Jt0g1UwqXJJVAb+V+umH5Dfr8oh4EVP7VVg==} + /fastq@1.15.0: + resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} dependencies: reusify: 1.0.4 dev: true @@ -2538,10 +2723,21 @@ packages: rimraf: 3.0.2 dev: true + /flat@5.0.2: + resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} + hasBin: true + dev: true + /flatted@3.2.7: resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} dev: true + /for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + dependencies: + is-callable: 1.2.7 + dev: true + /format@0.2.2: resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} engines: {node: '>=0.4.x'} @@ -2573,8 +2769,8 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.20.5 + define-properties: 1.2.0 + es-abstract: 1.22.1 functions-have-names: 1.2.3 dev: true @@ -2587,11 +2783,12 @@ packages: engines: {node: 6.* || 8.* || >= 10.*} dev: true - /get-intrinsic@1.1.3: - resolution: {integrity: sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==} + /get-intrinsic@1.2.1: + resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} dependencies: function-bind: 1.1.1 has: 1.0.3 + has-proto: 1.0.1 has-symbols: 1.0.3 dev: true @@ -2605,7 +2802,7 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.1 dev: true /glob-parent@5.1.2: @@ -2622,6 +2819,17 @@ packages: is-glob: 4.0.3 dev: true + /glob@7.2.0: + resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + /glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: @@ -2633,15 +2841,18 @@ packages: path-is-absolute: 1.0.1 dev: true - /globals@13.19.0: - resolution: {integrity: sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==} + /globals@13.20.0: + resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} engines: {node: '>=8'} dependencies: type-fest: 0.20.2 dev: true - /globalyzer@0.1.0: - resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} + /globalthis@1.0.3: + resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + engines: {node: '>= 0.4'} + dependencies: + define-properties: 1.2.0 dev: true /globby@11.1.0: @@ -2650,28 +2861,20 @@ packages: dependencies: array-union: 2.1.0 dir-glob: 3.0.1 - fast-glob: 3.2.12 - ignore: 5.2.1 + fast-glob: 3.3.0 + ignore: 5.2.4 merge2: 1.4.1 slash: 3.0.0 dev: true - /globrex@0.1.2: - resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} - dev: true - /gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.1 dev: true - /graceful-fs@4.2.10: - resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} - dev: true - - /grapheme-splitter@1.0.4: - resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} dev: true /graphemer@1.4.0: @@ -2697,7 +2900,12 @@ packages: /has-property-descriptors@1.0.0: resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} dependencies: - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.1 + dev: true + + /has-proto@1.0.1: + resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + engines: {node: '>= 0.4'} dev: true /has-symbols@1.0.3: @@ -2719,6 +2927,11 @@ packages: function-bind: 1.1.1 dev: true + /he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + dev: true + /human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} @@ -2740,8 +2953,8 @@ packages: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} dev: true - /ignore@5.2.1: - resolution: {integrity: sha512-d2qQLzTJ9WxQftPAuEQpSPmKqzxePjzVbpAVv62AQ64NTL+wR4JkrVqR/LqFsFEUsHDAiId52mJteHDFuDkElA==} + /ignore@5.2.4: + resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} engines: {node: '>= 4'} dev: true @@ -2804,11 +3017,11 @@ packages: p-event: 5.0.1 dev: true - /internal-slot@1.0.4: - resolution: {integrity: sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ==} + /internal-slot@1.0.5: + resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.1 has: 1.0.3 side-channel: 1.0.4 dev: true @@ -2834,6 +3047,14 @@ packages: is-decimal: 1.0.4 dev: true + /is-array-buffer@3.0.2: + resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + is-typed-array: 1.1.12 + dev: true + /is-bigint@1.0.4: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} dependencies: @@ -2872,14 +3093,8 @@ packages: engines: {node: '>= 0.4'} dev: true - /is-core-module@2.11.0: - resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} - dependencies: - has: 1.0.3 - dev: true - - /is-core-module@2.12.0: - resolution: {integrity: sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==} + /is-core-module@2.12.1: + resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==} dependencies: has: 1.0.3 dev: true @@ -2960,6 +3175,12 @@ packages: engines: {node: '>=8'} dev: true + /is-reference@3.0.1: + resolution: {integrity: sha512-baJJdQLiYaJdvFbJqXrcGv3WU3QCzBlUcI5QhbesIm6/xPsvmO+2CDoi/GMOFBQEQm+PXkwOPrp9KK5ozZsp2w==} + dependencies: + '@types/estree': 1.0.1 + dev: true + /is-regex@1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} @@ -3003,6 +3224,13 @@ packages: has-symbols: 1.0.3 dev: true + /is-typed-array@1.1.12: + resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} + engines: {node: '>= 0.4'} + dependencies: + which-typed-array: 1.1.11 + dev: true + /is-unicode-supported@0.1.0: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} @@ -3014,12 +3242,16 @@ packages: call-bind: 1.0.2 dev: true + /isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + dev: true + /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} dev: true - /jiti@1.18.2: - resolution: {integrity: sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==} + /jiti@1.19.1: + resolution: {integrity: sha512-oVhqoRDaBXf7sjkll95LHVS6Myyyb1zaunVwk4Z0+WPSW4gjS0pl01zYKHScTuyEhQsFxV5L4DR5r+YqSyqyyg==} hasBin: true dev: true @@ -3042,7 +3274,7 @@ packages: resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} hasBin: true dependencies: - minimist: 1.2.7 + minimist: 1.2.8 dev: true /kleur@4.1.5: @@ -3067,6 +3299,10 @@ packages: engines: {node: '>=14'} dev: true + /locate-character@3.0.0: + resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} + dev: true + /locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} @@ -3105,20 +3341,20 @@ packages: resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} engines: {node: '>=12'} dependencies: - '@jridgewell/sourcemap-codec': 1.4.14 + '@jridgewell/sourcemap-codec': 1.4.15 dev: true - /magic-string@0.30.0: - resolution: {integrity: sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==} + /magic-string@0.30.1: + resolution: {integrity: sha512-mbVKXPmS0z0G4XqFDCTllmDQ6coZzn94aMlb0o/A4HEHJCKcanlDZwYJgwnkmgD3jyWhUgj9VsPrfd972yPffA==} engines: {node: '>=12'} dependencies: - '@jridgewell/sourcemap-codec': 1.4.14 + '@jridgewell/sourcemap-codec': 1.4.15 dev: true /mdast-util-from-markdown@0.8.5: resolution: {integrity: sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==} dependencies: - '@types/mdast': 3.0.11 + '@types/mdast': 3.0.12 mdast-util-to-string: 2.0.0 micromark: 2.11.4 parse-entities: 2.0.0 @@ -3136,7 +3372,7 @@ packages: /mdast-util-to-markdown@0.6.5: resolution: {integrity: sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==} dependencies: - '@types/unist': 2.0.6 + '@types/unist': 2.0.7 longest-streak: 2.0.4 mdast-util-to-string: 2.0.0 parse-entities: 2.0.0 @@ -3170,7 +3406,7 @@ packages: /micromark@2.11.4: resolution: {integrity: sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==} dependencies: - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) parse-entities: 2.0.0 transitivePeerDependencies: - supports-color @@ -3211,15 +3447,50 @@ packages: brace-expansion: 1.1.11 dev: true - /minimist@1.2.7: - resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} + /minimatch@5.0.1: + resolution: {integrity: sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} dev: true /mkdirp@0.5.6: resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} hasBin: true dependencies: - minimist: 1.2.7 + minimist: 1.2.8 + dev: true + + /mocha@10.2.0: + resolution: {integrity: sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==} + engines: {node: '>= 14.0.0'} + hasBin: true + dependencies: + ansi-colors: 4.1.1 + browser-stdout: 1.3.1 + chokidar: 3.5.3 + debug: 4.3.4(supports-color@8.1.1) + diff: 5.0.0 + escape-string-regexp: 4.0.0 + find-up: 5.0.0 + glob: 7.2.0 + he: 1.2.0 + js-yaml: 4.1.0 + log-symbols: 4.1.0 + minimatch: 5.0.1 + ms: 2.1.3 + nanoid: 3.3.3 + serialize-javascript: 6.0.0 + strip-json-comments: 3.1.1 + supports-color: 8.1.1 + workerpool: 6.2.1 + yargs: 16.2.0 + yargs-parser: 20.2.4 + yargs-unparser: 2.0.0 dev: true /mri@1.2.0: @@ -3244,6 +3515,12 @@ packages: resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} dev: true + /nanoid@3.3.3: + resolution: {integrity: sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + dev: true + /nanoid@3.3.6: resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -3293,8 +3570,8 @@ packages: path-key: 4.0.0 dev: true - /object-inspect@1.12.2: - resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} + /object-inspect@1.12.3: + resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} dev: true /object-keys@1.1.1: @@ -3307,7 +3584,7 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 + define-properties: 1.2.0 has-symbols: 1.0.3 object-keys: 1.1.1 dev: true @@ -3317,14 +3594,14 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.20.5 + define-properties: 1.2.0 + es-abstract: 1.22.1 dev: true - /ofetch@1.1.0: - resolution: {integrity: sha512-yjq2ZUUMto1ITpge2J5vNlUfteLzxfHn9aJC55WtVGD3okKwSfPoLaKpcHXmmKd2kZZUGo+jdkFuuj09Blyeig==} + /ofetch@1.1.1: + resolution: {integrity: sha512-SSMoktrp9SNLi20BWfB/BnnKcL0RDigXThD/mZBeQxkIRv1xrd9183MtLdsqRYLYSqW0eTr5t8w8MqjNhvoOQQ==} dependencies: - destr: 1.2.2 + destr: 2.0.0 node-fetch-native: 1.2.0 ufo: 1.1.2 dev: true @@ -3349,16 +3626,16 @@ packages: mimic-fn: 4.0.0 dev: true - /optionator@0.9.1: - resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} + /optionator@0.9.3: + resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} engines: {node: '>= 0.8.0'} dependencies: + '@aashutoshrathi/word-wrap': 1.2.6 deep-is: 0.1.4 fast-levenshtein: 2.0.6 levn: 0.4.1 prelude-ls: 1.2.1 type-check: 0.4.0 - word-wrap: 1.2.3 dev: true /ora@5.4.1: @@ -3462,6 +3739,14 @@ packages: resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} dev: true + /periscopic@3.1.0: + resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} + dependencies: + '@types/estree': 1.0.1 + estree-walker: 3.0.3 + is-reference: 3.0.1 + dev: true + /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} dev: true @@ -3471,8 +3756,8 @@ packages: engines: {node: '>=8.6'} dev: true - /postcss@8.4.23: - resolution: {integrity: sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==} + /postcss@8.4.26: + resolution: {integrity: sha512-jrXHFF8iTloAenySjM/ob3gSj7pCu0Ji49hnjqzsgSRa50hkWCKD0HQ+gMNJkW38jBI68MpAAg7ZWwHwX8NMMw==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.6 @@ -3485,14 +3770,14 @@ packages: engines: {node: '>= 0.8.0'} dev: true - /prettier@2.8.8: - resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} - engines: {node: '>=10.13.0'} + /prettier@3.0.0: + resolution: {integrity: sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g==} + engines: {node: '>=14'} hasBin: true dev: true - /punycode@2.1.1: - resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} + /punycode@2.3.0: + resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} engines: {node: '>=6'} dev: true @@ -3527,12 +3812,12 @@ packages: hasBin: true dev: true - /regexp.prototype.flags@1.4.3: - resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} + /regexp.prototype.flags@1.5.0: + resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 + define-properties: 1.2.0 functions-have-names: 1.2.3 dev: true @@ -3572,20 +3857,11 @@ packages: engines: {node: '>=4'} dev: true - /resolve@1.22.1: - resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} - hasBin: true - dependencies: - is-core-module: 2.11.0 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - dev: true - /resolve@1.22.2: resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} hasBin: true dependencies: - is-core-module: 2.12.0 + is-core-module: 2.12.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 dev: true @@ -3617,16 +3893,8 @@ packages: glob: 7.2.3 dev: true - /rollup@3.21.0: - resolution: {integrity: sha512-ANPhVcyeHvYdQMUyCbczy33nbLzI7RzrBje4uvNiTDJGIMtlKoOStmympwr9OtS1LZxiDmE2wvxHyVhoLtf1KQ==} - engines: {node: '>=14.18.0', npm: '>=8.0.0'} - hasBin: true - optionalDependencies: - fsevents: 2.3.2 - dev: true - - /rollup@3.25.1: - resolution: {integrity: sha512-tywOR+rwIt5m2ZAWSe5AIJcTat8vGlnPFAv15ycCrw33t6iFsXZ6mzHVFh2psSjxQPmI+xgzMZZizUAukBI4aQ==} + /rollup@3.26.3: + resolution: {integrity: sha512-7Tin0C8l86TkpcMtXvQu6saWH93nhG3dGQ1/+l5V2TDMceTxO7kDiK6GzbfLWNNxqJXm591PcEZUozZm51ogwQ==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: @@ -3647,7 +3915,7 @@ packages: /rxjs@7.8.1: resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} dependencies: - tslib: 2.5.0 + tslib: 2.6.0 dev: true /sade@1.8.1: @@ -3657,6 +3925,16 @@ packages: mri: 1.2.0 dev: true + /safe-array-concat@1.0.0: + resolution: {integrity: sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==} + engines: {node: '>=0.4'} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + has-symbols: 1.0.3 + isarray: 2.0.5 + dev: true + /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} dev: true @@ -3665,7 +3943,7 @@ packages: resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} dependencies: call-bind: 1.0.2 - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.1 is-regex: 1.1.4 dev: true @@ -3683,30 +3961,23 @@ packages: resolution: {integrity: sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==} dependencies: es6-promise: 3.3.1 - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 mkdirp: 0.5.6 rimraf: 2.7.1 dev: true - /semver@6.3.0: - resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} - hasBin: true - dev: true - - /semver@7.3.8: - resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} + /semver@7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} engines: {node: '>=10'} hasBin: true dependencies: lru-cache: 6.0.0 dev: true - /semver@7.5.1: - resolution: {integrity: sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==} - engines: {node: '>=10'} - hasBin: true + /serialize-javascript@6.0.0: + resolution: {integrity: sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==} dependencies: - lru-cache: 6.0.0 + randombytes: 2.1.0 dev: true /serialize-javascript@6.0.1: @@ -3715,8 +3986,8 @@ packages: randombytes: 2.1.0 dev: true - /set-cookie-parser@2.5.1: - resolution: {integrity: sha512-1jeBGaKNGdEq4FgIrORu/N570dwoPYio8lSoYLWmX7sQ//0JY08Xh9o5pBcgmHQ/MbsYp/aZnOe1s1lIsbLprQ==} + /set-cookie-parser@2.6.0: + resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} dev: true /shebang-command@2.0.0: @@ -3739,30 +4010,21 @@ packages: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: call-bind: 1.0.2 - get-intrinsic: 1.1.3 - object-inspect: 1.12.2 + get-intrinsic: 1.2.1 + object-inspect: 1.12.3 dev: true /signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} dev: true - /sirv@2.0.2: - resolution: {integrity: sha512-4Qog6aE29nIjAOKe/wowFTxOdmbEZKb+3tsLljaBRzJwtqto0BChD2zzH0LhgCSXiI+V7X+Y45v14wBZQ1TK3w==} - engines: {node: '>= 10'} - dependencies: - '@polka/url': 1.0.0-next.21 - mrmime: 1.0.1 - totalist: 3.0.0 - dev: true - /sirv@2.0.3: resolution: {integrity: sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==} engines: {node: '>= 10'} dependencies: '@polka/url': 1.0.0-next.21 mrmime: 1.0.1 - totalist: 3.0.0 + totalist: 3.0.1 dev: true /slash@3.0.0: @@ -3778,9 +4040,9 @@ packages: resolution: {integrity: sha512-J69LQ22xrQB1cIFJhPfgtLuI6BpWRiWu1Y3vSsIwK/eAScqJxd/+CJlUuHQRdX2C9NGFamq+KqNywGgaThwfHw==} hasBin: true dependencies: - '@jridgewell/sourcemap-codec': 1.4.14 + '@jridgewell/sourcemap-codec': 1.4.15 buffer-crc32: 0.2.13 - minimist: 1.2.7 + minimist: 1.2.8 sander: 0.5.1 dev: true @@ -3826,20 +4088,29 @@ packages: strip-ansi: 6.0.1 dev: true + /string.prototype.trim@1.2.7: + resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + dev: true + /string.prototype.trimend@1.0.6: resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.20.5 + define-properties: 1.2.0 + es-abstract: 1.22.1 dev: true /string.prototype.trimstart@1.0.6: resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.20.5 + define-properties: 1.2.0 + es-abstract: 1.22.1 dev: true /string_decoder@1.3.0: @@ -3898,26 +4169,33 @@ packages: has-flag: 4.0.0 dev: true + /supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + dependencies: + has-flag: 4.0.0 + dev: true + /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} dev: true - /svelte-check@3.2.0(svelte@3.58.0): - resolution: {integrity: sha512-6ZnscN8dHEN5Eq5LgIzjj07W9nc9myyBH+diXsUAuiY/3rt0l65/LCIQYlIuoFEjp2F1NhXqZiJwV9omPj9tMw==} + /svelte-check@3.4.6(svelte@4.0.5): + resolution: {integrity: sha512-OBlY8866Zh1zHQTkBMPS6psPi7o2umTUyj6JWm4SacnIHXpWFm658pG32m3dKvKFL49V4ntAkfFHKo4ztH07og==} hasBin: true peerDependencies: - svelte: ^3.55.0 + svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0 dependencies: - '@jridgewell/trace-mapping': 0.3.17 + '@jridgewell/trace-mapping': 0.3.18 chokidar: 3.5.3 - fast-glob: 3.2.12 + fast-glob: 3.3.0 import-fresh: 3.3.0 picocolors: 1.0.0 sade: 1.8.1 - svelte: 3.58.0 - svelte-preprocess: 5.0.3(svelte@3.58.0)(typescript@5.1.3) - typescript: 5.1.3 + svelte: 4.0.5 + svelte-preprocess: 5.0.4(svelte@4.0.5)(typescript@5.1.6) + typescript: 5.1.6 transitivePeerDependencies: - '@babel/core' - coffeescript @@ -3930,26 +4208,26 @@ packages: - sugarss dev: true - /svelte-hmr@0.15.1(svelte@3.58.0): - resolution: {integrity: sha512-BiKB4RZ8YSwRKCNVdNxK/GfY+r4Kjgp9jCLEy0DuqAKfmQtpL38cQK3afdpjw4sqSs4PLi3jIPJIFp259NkZtA==} + /svelte-hmr@0.15.2(svelte@3.59.1): + resolution: {integrity: sha512-q/bAruCvFLwvNbeE1x3n37TYFb3mTBJ6TrCq6p2CoFbSTNhDE9oAtEfpy+wmc9So8AG0Tja+X0/mJzX9tSfvIg==} engines: {node: ^12.20 || ^14.13.1 || >= 16} peerDependencies: - svelte: '>=3.19.0' + svelte: ^3.19.0 || ^4.0.0-next.0 dependencies: - svelte: 3.58.0 + svelte: 3.59.1 dev: true - /svelte-hmr@0.15.1(svelte@3.59.1): - resolution: {integrity: sha512-BiKB4RZ8YSwRKCNVdNxK/GfY+r4Kjgp9jCLEy0DuqAKfmQtpL38cQK3afdpjw4sqSs4PLi3jIPJIFp259NkZtA==} + /svelte-hmr@0.15.2(svelte@4.0.5): + resolution: {integrity: sha512-q/bAruCvFLwvNbeE1x3n37TYFb3mTBJ6TrCq6p2CoFbSTNhDE9oAtEfpy+wmc9So8AG0Tja+X0/mJzX9tSfvIg==} engines: {node: ^12.20 || ^14.13.1 || >= 16} peerDependencies: - svelte: '>=3.19.0' + svelte: ^3.19.0 || ^4.0.0-next.0 dependencies: - svelte: 3.59.1 + svelte: 4.0.5 dev: true - /svelte-preprocess@5.0.3(svelte@3.58.0)(typescript@5.1.3): - resolution: {integrity: sha512-GrHF1rusdJVbOZOwgPWtpqmaexkydznKzy5qIC2FabgpFyKN57bjMUUUqPRfbBXK5igiEWn1uO/DXsa2vJ5VHA==} + /svelte-preprocess@5.0.4(svelte@4.0.5)(typescript@5.1.6): + resolution: {integrity: sha512-ABia2QegosxOGsVlsSBJvoWeXy1wUKSfF7SWJdTjLAbx/Y3SrVevvvbFNQqrSJw89+lNSsM58SipmZJ5SRi5iw==} engines: {node: '>= 14.10.0'} requiresBuild: true peerDependencies: @@ -3962,7 +4240,7 @@ packages: sass: ^1.26.8 stylus: ^0.55.0 sugarss: ^2.0.0 || ^3.0.0 || ^4.0.0 - svelte: ^3.23.0 + svelte: ^3.23.0 || ^4.0.0-next.0 || ^4.0.0 typescript: '>=3.9.5 || ^4.0.0 || ^5.0.0' peerDependenciesMeta: '@babel/core': @@ -3991,26 +4269,40 @@ packages: magic-string: 0.27.0 sorcery: 0.11.0 strip-indent: 3.0.0 - svelte: 3.58.0 - typescript: 5.1.3 - dev: true - - /svelte@3.58.0: - resolution: {integrity: sha512-brIBNNB76mXFmU/Kerm4wFnkskBbluBDCjx/8TcpYRb298Yh2dztS2kQ6bhtjMcvUhd5ynClfwpz5h2gnzdQ1A==} - engines: {node: '>= 8'} + svelte: 4.0.5 + typescript: 5.1.6 dev: true /svelte@3.59.1: resolution: {integrity: sha512-pKj8fEBmqf6mq3/NfrB9SLtcJcUvjYSWyePlfCqN9gujLB25RitWK8PvFzlwim6hD/We35KbPlRteuA6rnPGcQ==} engines: {node: '>= 8'} - /terser@5.18.0: - resolution: {integrity: sha512-pdL757Ig5a0I+owA42l6tIuEycRuM7FPY4n62h44mRLRfnOxJkkOHd6i89dOpwZlpF6JXBwaAHF6yWzFrt+QyA==} + /svelte@4.0.5: + resolution: {integrity: sha512-PHKPWP1wiWHBtsE57nCb8xiWB3Ht7/3Kvi3jac0XIxUM2rep8alO7YoAtgWeGD7++tFy46krilOrPW0mG3Dx+A==} + engines: {node: '>=16'} + dependencies: + '@ampproject/remapping': 2.2.1 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.18 + acorn: 8.10.0 + aria-query: 5.3.0 + axobject-query: 3.2.1 + code-red: 1.0.3 + css-tree: 2.3.1 + estree-walker: 3.0.3 + is-reference: 3.0.1 + locate-character: 3.0.0 + magic-string: 0.30.1 + periscopic: 3.1.0 + dev: true + + /terser@5.19.1: + resolution: {integrity: sha512-27hxBUVdV6GoNg1pKQ7Z5cbR6V9txPVyBA+FQw3BaZ1Wuzvztce5p156DaP0NVZNrMZZ+6iG9Syf7WgMNKDg2Q==} engines: {node: '>=10'} hasBin: true dependencies: - '@jridgewell/source-map': 0.3.3 - acorn: 8.9.0 + '@jridgewell/source-map': 0.3.5 + acorn: 8.10.0 commander: 2.20.3 source-map-support: 0.5.21 dev: true @@ -4030,13 +4322,6 @@ packages: convert-hrtime: 5.0.0 dev: true - /tiny-glob@0.2.9: - resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} - dependencies: - globalyzer: 0.1.0 - globrex: 0.1.2 - dev: true - /tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} @@ -4051,8 +4336,8 @@ packages: is-number: 7.0.0 dev: true - /totalist@3.0.0: - resolution: {integrity: sha512-eM+pCBxXO/njtF7vdFsHuqb+ElbxqtI4r5EAvk6grfAFyJ6IvWlSkfZ5T9ozC6xWw3Fj1fGoSmrl0gUs46JVIw==} + /totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} engines: {node: '>=6'} dev: true @@ -4064,12 +4349,21 @@ packages: resolution: {integrity: sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==} dev: true - /tsconfig-paths@3.14.1: - resolution: {integrity: sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==} + /ts-api-utils@1.0.1(typescript@5.1.6): + resolution: {integrity: sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A==} + engines: {node: '>=16.13.0'} + peerDependencies: + typescript: '>=4.2.0' + dependencies: + typescript: 5.1.6 + dev: true + + /tsconfig-paths@3.14.2: + resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} dependencies: '@types/json5': 0.0.29 json5: 1.0.2 - minimist: 1.2.7 + minimist: 1.2.8 strip-bom: 3.0.0 dev: true @@ -4077,22 +4371,18 @@ packages: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: true - /tslib@2.4.1: - resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==} + /tslib@2.6.0: + resolution: {integrity: sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==} dev: true - /tslib@2.5.0: - resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} - dev: true - - /tsutils@3.21.0(typescript@5.1.3): + /tsutils@3.21.0(typescript@5.1.6): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' dependencies: tslib: 1.14.1 - typescript: 5.1.3 + typescript: 5.1.6 dev: true /type-check@0.4.0: @@ -4117,14 +4407,46 @@ packages: engines: {node: '>=8'} dev: true - /typescript@5.0.4: - resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==} - engines: {node: '>=12.20'} - hasBin: true + /typed-array-buffer@1.0.0: + resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + is-typed-array: 1.1.12 + dev: true + + /typed-array-byte-length@1.0.0: + resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + for-each: 0.3.3 + has-proto: 1.0.1 + is-typed-array: 1.1.12 + dev: true + + /typed-array-byte-offset@1.0.0: + resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + for-each: 0.3.3 + has-proto: 1.0.1 + is-typed-array: 1.1.12 + dev: true + + /typed-array-length@1.0.4: + resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} + dependencies: + call-bind: 1.0.2 + for-each: 0.3.3 + is-typed-array: 1.1.12 dev: true - /typescript@5.1.3: - resolution: {integrity: sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==} + /typescript@5.1.6: + resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} engines: {node: '>=14.17'} hasBin: true dev: true @@ -4145,13 +4467,13 @@ packages: /unconfig@0.3.9: resolution: {integrity: sha512-8yhetFd48M641mxrkWA+C/lZU4N0rCOdlo3dFsyFPnBHBjMJfjT/3eAZBRT2RxCRqeBMAKBVgikejdS6yeBjMw==} dependencies: - '@antfu/utils': 0.7.4 + '@antfu/utils': 0.7.5 defu: 6.1.2 - jiti: 1.18.2 + jiti: 1.19.1 dev: true - /undici@5.22.0: - resolution: {integrity: sha512-fR9RXCc+6Dxav4P9VV/sp5w3eFiSdOjJYsbtWfd4s5L5C4ogyuVpdKIVHeW0vV1MloM65/f7W45nR9ZxwVdyiA==} + /undici@5.22.1: + resolution: {integrity: sha512-Ji2IJhFXZY0x/0tVBXeQwgPlLWw13GVzpsWPQ3rV50IFMMof2I55PZZxtm4P6iNq+L5znYN9nSTAq0ZyE6lSJw==} engines: {node: '>=14.0'} dependencies: busboy: 1.6.0 @@ -4160,7 +4482,7 @@ packages: /unified@9.2.2: resolution: {integrity: sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==} dependencies: - '@types/unist': 2.0.6 + '@types/unist': 2.0.7 bail: 1.0.5 extend: 3.0.2 is-buffer: 2.0.5 @@ -4172,10 +4494,10 @@ packages: /unist-util-stringify-position@2.0.3: resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==} dependencies: - '@types/unist': 2.0.6 + '@types/unist': 2.0.7 dev: true - /unocss@0.53.1(postcss@8.4.23)(rollup@3.25.1)(vite@4.3.9): + /unocss@0.53.1(postcss@8.4.26)(rollup@3.26.3)(vite@4.4.4): resolution: {integrity: sha512-0lRblA8hX7VUu5dywbcStzm590Iz5ahSJGsMNKNH3+u9C7AfJcKT8epxjkIkJWQBNJLD5vsao4SuuhLWB7eMQQ==} engines: {node: '>=14'} peerDependencies: @@ -4184,11 +4506,11 @@ packages: '@unocss/webpack': optional: true dependencies: - '@unocss/astro': 0.53.1(rollup@3.25.1)(vite@4.3.9) - '@unocss/cli': 0.53.1(rollup@3.25.1) + '@unocss/astro': 0.53.1(rollup@3.26.3)(vite@4.4.4) + '@unocss/cli': 0.53.1(rollup@3.26.3) '@unocss/core': 0.53.1 '@unocss/extractor-arbitrary-variants': 0.53.1 - '@unocss/postcss': 0.53.1(postcss@8.4.23) + '@unocss/postcss': 0.53.1(postcss@8.4.26) '@unocss/preset-attributify': 0.53.1 '@unocss/preset-icons': 0.53.1 '@unocss/preset-mini': 0.53.1 @@ -4203,7 +4525,7 @@ packages: '@unocss/transformer-compile-class': 0.53.1 '@unocss/transformer-directives': 0.53.1 '@unocss/transformer-variant-group': 0.53.1 - '@unocss/vite': 0.53.1(rollup@3.25.1)(vite@4.3.9) + '@unocss/vite': 0.53.1(rollup@3.26.3)(vite@4.4.4) transitivePeerDependencies: - postcss - rollup @@ -4214,7 +4536,7 @@ packages: /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: - punycode: 2.1.1 + punycode: 2.3.0 dev: true /util-deprecate@1.0.2: @@ -4224,26 +4546,27 @@ packages: /vfile-message@2.0.4: resolution: {integrity: sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==} dependencies: - '@types/unist': 2.0.6 + '@types/unist': 2.0.7 unist-util-stringify-position: 2.0.3 dev: true /vfile@4.2.1: resolution: {integrity: sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==} dependencies: - '@types/unist': 2.0.6 + '@types/unist': 2.0.7 is-buffer: 2.0.5 unist-util-stringify-position: 2.0.3 vfile-message: 2.0.4 dev: true - /vite@4.3.9: - resolution: {integrity: sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg==} + /vite@4.4.4: + resolution: {integrity: sha512-4mvsTxjkveWrKDJI70QmelfVqTm+ihFAb6+xf4sjEU2TmUCTlVX87tmg/QooPEMQb/lM9qGHT99ebqPziEd3wg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: '@types/node': '>= 14' less: '*' + lightningcss: ^1.21.0 sass: '*' stylus: '*' sugarss: '*' @@ -4253,6 +4576,8 @@ packages: optional: true less: optional: true + lightningcss: + optional: true sass: optional: true stylus: @@ -4262,14 +4587,14 @@ packages: terser: optional: true dependencies: - esbuild: 0.17.18 - postcss: 8.4.23 - rollup: 3.21.0 + esbuild: 0.18.14 + postcss: 8.4.26 + rollup: 3.26.3 optionalDependencies: fsevents: 2.3.2 dev: true - /vitefu@0.2.4(vite@4.3.9): + /vitefu@0.2.4(vite@4.4.4): resolution: {integrity: sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==} peerDependencies: vite: ^3.0.0 || ^4.0.0 @@ -4277,7 +4602,7 @@ packages: vite: optional: true dependencies: - vite: 4.3.9 + vite: 4.4.4 dev: true /wcwidth@1.0.1: @@ -4307,6 +4632,17 @@ packages: is-symbol: 1.0.4 dev: true + /which-typed-array@1.1.11: + resolution: {integrity: sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.0 + dev: true + /which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -4315,9 +4651,8 @@ packages: isexe: 2.0.0 dev: true - /word-wrap@1.2.3: - resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} - engines: {node: '>=0.10.0'} + /workerpool@6.2.1: + resolution: {integrity: sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==} dev: true /wrap-ansi@7.0.0: @@ -4342,11 +4677,39 @@ packages: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} dev: true + /yargs-parser@20.2.4: + resolution: {integrity: sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==} + engines: {node: '>=10'} + dev: true + /yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} dev: true + /yargs-unparser@2.0.0: + resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} + engines: {node: '>=10'} + dependencies: + camelcase: 6.3.0 + decamelize: 4.0.0 + flat: 5.0.2 + is-plain-obj: 2.1.0 + dev: true + + /yargs@16.2.0: + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} + dependencies: + cliui: 7.0.4 + escalade: 3.1.1 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 20.2.4 + dev: true + /yargs@17.7.2: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} diff --git a/shared/template/README.md b/shared/template/README.md index 1a839763..235b6b99 100644 --- a/shared/template/README.md +++ b/shared/template/README.md @@ -1,4 +1,4 @@ -![{{plugin-name}}](banner.png) +![{{plugin-name}}](https://github.com/tauri-apps/plugins-workspace/raw/v2/plugins/{{plugin-name}}/banner.png) @@ -27,6 +27,8 @@ You can install the JavaScript Guest bindings using your preferred JavaScript pa > Note: Since most JavaScript package managers are unable to install packages from git monorepos we provide read-only mirrors of each plugin. This makes installation option 2 more ergonomic to use. + + ```sh pnpm add @tauri-apps/plugin-{{plugin-name}} # or diff --git a/shared/template/package.json b/shared/template/package.json index d67c7819..58309e19 100644 --- a/shared/template/package.json +++ b/shared/template/package.json @@ -24,7 +24,7 @@ "LICENSE" ], "devDependencies": { - "tslib": "^2.4.1" + "tslib": "2.6.0" }, "dependencies": { "@tauri-apps/api": "2.0.0-alpha.5" diff --git a/shared/template/rollup.config.mjs b/shared/template/rollup.config.mjs index 96840adc..a71590d2 100644 --- a/shared/template/rollup.config.mjs +++ b/shared/template/rollup.config.mjs @@ -5,7 +5,7 @@ import { createConfig } from "../rollup.config.mjs"; export default createConfig({ input: "guest-js/index.ts", pkg: JSON.parse( - readFileSync(new URL("./package.json", import.meta.url), "utf8") + readFileSync(new URL("./package.json", import.meta.url), "utf8"), ), external: [/^@tauri-apps\/api/], });