mirror of
https://github.com/tauri-apps/plugins-workspace.git
synced 2026-06-16 14:30:06 +02:00
Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 12e80ffe00 | |||
| a2fe55512f | |||
| d00519e3e3 | |||
| 6995127778 |
@@ -0,0 +1,10 @@
|
||||
---
|
||||
"fs": patch
|
||||
"dialog": patch
|
||||
---
|
||||
|
||||
Add utility methods on `FilePath` and `SafeFilePath` enums which are:
|
||||
|
||||
- `path`
|
||||
- `simplified`
|
||||
- `into_path`
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
"fs": patch
|
||||
"dialog": patch
|
||||
---
|
||||
|
||||
Implement `Serialize`, `Deserialize`, `From`, `TryFrom` and `FromStr` traits for `FilePath` and `SafeFilePath` enums.
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
"fs": patch
|
||||
"dialog": patch
|
||||
---
|
||||
|
||||
Mark `Error` enum as `#[non_exhuastive]`.
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
"fs": patch
|
||||
"dialog": patch
|
||||
---
|
||||
|
||||
Add `SafeFilePath` enum.
|
||||
@@ -11,6 +11,10 @@
|
||||
".changes/fix-ios-file-dialog-default-mode.md",
|
||||
".changes/fix-linux-updater-permission-error.md",
|
||||
".changes/fix-restore-minimized-window-position.md",
|
||||
".changes/fs-dialog-file-path-methods.md",
|
||||
".changes/fs-dialog-file-path-traits.md",
|
||||
".changes/fs-dialog-non-exhaustive-error.md",
|
||||
".changes/fs-dialog-safe-file-path.md",
|
||||
".changes/fs-scope-recursive-allow-read-dir.md",
|
||||
".changes/fs-windows-path.md",
|
||||
".changes/geolocation-release.md",
|
||||
@@ -30,6 +34,7 @@
|
||||
".changes/tauri-rc-8.md",
|
||||
".changes/update-fs-api-docs.md",
|
||||
".changes/update-tauri-rc-3.md",
|
||||
".changes/updater-js-headers-download-crate.md",
|
||||
".changes/updater-js-headers-download.md"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"updater": "patch"
|
||||
---
|
||||
|
||||
Add a second argument in `Update.download` and `Update.donloadAndInstall` JS APIs to modify headers and timeout when downloading the update.
|
||||
+1
-1
@@ -12,7 +12,7 @@ pnpm-lock.yaml
|
||||
|
||||
# examples gen directory
|
||||
examples/*/src-tauri/gen/
|
||||
plugins/examples/*/src-tauri/gen/
|
||||
plugins/*/examples/*/src-tauri/gen/
|
||||
|
||||
# autogenerated files
|
||||
**/autogenerated/**/*.md
|
||||
|
||||
Generated
+27
-27
@@ -206,7 +206,7 @@ checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da"
|
||||
|
||||
[[package]]
|
||||
name = "api"
|
||||
version = "2.0.0-rc.3"
|
||||
version = "2.0.0-rc.4"
|
||||
dependencies = [
|
||||
"log",
|
||||
"serde",
|
||||
@@ -6253,9 +6253,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "tao"
|
||||
version = "0.29.1"
|
||||
version = "0.30.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d3a97abbc7d6cfd0720da3e06fcb1cf2ac87cbfdb5bbbce103a1279a211c4d81"
|
||||
checksum = "2a93f2c6b8fdaeb7f417bda89b5bc767999745c3052969664ae1fa65892deb7e"
|
||||
dependencies = [
|
||||
"bitflags 2.6.0",
|
||||
"cocoa 0.26.0",
|
||||
@@ -6326,9 +6326,9 @@ checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1"
|
||||
|
||||
[[package]]
|
||||
name = "tauri"
|
||||
version = "2.0.0-rc.8"
|
||||
version = "2.0.0-rc.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e8345ccc676ef16e26b61fc0f5340b4e770678b1e1f53f08c69ebdac5e56b422"
|
||||
checksum = "0b805e6bf5f6a4df7d1a64b2952d33fca6d538746efe9c9cdae4157a1efc5b17"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"bytes",
|
||||
@@ -6379,9 +6379,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "tauri-build"
|
||||
version = "2.0.0-rc.7"
|
||||
version = "2.0.0-rc.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7d5ad5fcfaf02cf79aa6727f6c5df38567d8dce172b00b62690c6bc46c08b7ce"
|
||||
checksum = "4acec578ff9de14da177722c8fb5e3d6c88af296696190c70b83bec91437248a"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"cargo_toml",
|
||||
@@ -6403,9 +6403,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "tauri-codegen"
|
||||
version = "2.0.0-rc.7"
|
||||
version = "2.0.0-rc.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "809ef6316726fc72593d296cf6f4e7461326e310c313d6a6c42b6e7f1e2671cf"
|
||||
checksum = "0744bec087358e5de9a078a1b19346ed9b775f578395975f5a74ccd0c717b22a"
|
||||
dependencies = [
|
||||
"base64 0.22.1",
|
||||
"brotli",
|
||||
@@ -6430,9 +6430,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "tauri-macros"
|
||||
version = "2.0.0-rc.6"
|
||||
version = "2.0.0-rc.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1359e8861d210d25731f8b1bfbb4d111dd06406cf73c59659366ef450364d811"
|
||||
checksum = "b043cac341130f288044dca76fae8e62d7c18fdcd8012239a66af03868b7ca37"
|
||||
dependencies = [
|
||||
"heck 0.5.0",
|
||||
"proc-macro2",
|
||||
@@ -6444,9 +6444,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "tauri-plugin"
|
||||
version = "2.0.0-rc.7"
|
||||
version = "2.0.0-rc.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a7dded420c86183f592d0fe925ef9447f41e26fa79f0bdfef8d3f17bfbcdbfb7"
|
||||
checksum = "1c9bb31aad7296f85df545171023c72a263b54aac350197f923893fb5e6f90b4"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"glob",
|
||||
@@ -6544,9 +6544,8 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "tauri-plugin-dialog"
|
||||
version = "2.0.0-rc.4"
|
||||
version = "2.0.0-rc.5"
|
||||
dependencies = [
|
||||
"dunce",
|
||||
"log",
|
||||
"raw-window-handle 0.6.2",
|
||||
"rfd",
|
||||
@@ -6561,9 +6560,10 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "tauri-plugin-fs"
|
||||
version = "2.0.0-rc.2"
|
||||
version = "2.0.0-rc.3"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"dunce",
|
||||
"glob",
|
||||
"notify",
|
||||
"notify-debouncer-full",
|
||||
@@ -6619,7 +6619,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "tauri-plugin-http"
|
||||
version = "2.0.0-rc.2"
|
||||
version = "2.0.0-rc.3"
|
||||
dependencies = [
|
||||
"data-url",
|
||||
"http",
|
||||
@@ -6723,7 +6723,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "tauri-plugin-persisted-scope"
|
||||
version = "2.0.0-rc.2"
|
||||
version = "2.0.0-rc.3"
|
||||
dependencies = [
|
||||
"aho-corasick",
|
||||
"bincode",
|
||||
@@ -6842,7 +6842,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "tauri-plugin-updater"
|
||||
version = "2.0.0-rc.2"
|
||||
version = "2.0.0-rc.3"
|
||||
dependencies = [
|
||||
"base64 0.22.1",
|
||||
"dirs 5.0.1",
|
||||
@@ -6916,9 +6916,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "tauri-runtime"
|
||||
version = "2.0.0-rc.7"
|
||||
version = "2.0.0-rc.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "75c72b844f387bfc3341c355f3e16b8cbf4161848fa4e348670effb222cd3ba5"
|
||||
checksum = "d7c7a6530acc06640e8f07cfeb01ac694f1de2f4e565525a2199e0dca80ff9f7"
|
||||
dependencies = [
|
||||
"dpi",
|
||||
"gtk",
|
||||
@@ -6935,9 +6935,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "tauri-runtime-wry"
|
||||
version = "2.0.0-rc.7"
|
||||
version = "2.0.0-rc.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "73accf936a7cd01d1382de7850726fdf6c1f6ab3b01ccb7a0950cb852e332596"
|
||||
checksum = "5fcadbc24646c8d3362ed4e332cb42932e08c632220a20a61cb7e5fe36ddd85c"
|
||||
dependencies = [
|
||||
"cocoa 0.26.0",
|
||||
"gtk",
|
||||
@@ -6959,9 +6959,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "tauri-utils"
|
||||
version = "2.0.0-rc.7"
|
||||
version = "2.0.0-rc.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d53d9fe87e985b273696ae22ce2b9f099a8f1b44bc8fb127467bda5fcb3e4371"
|
||||
checksum = "201498c8281ab2597e344b4a4c923e8d491782305979d71e7cdf8fb79aab5948"
|
||||
dependencies = [
|
||||
"aes-gcm",
|
||||
"brotli",
|
||||
@@ -8508,9 +8508,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "wry"
|
||||
version = "0.42.0"
|
||||
version = "0.43.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "49b8049c8f239cdbfaaea4bacb9646f6b208938ceec0acd5b3e99cd05f70903f"
|
||||
checksum = "f4d715cf5fe88e9647f3d17b207b6d060d4a88e7171d4ccb2d2c657dd1d44728"
|
||||
dependencies = [
|
||||
"base64 0.22.1",
|
||||
"block",
|
||||
|
||||
+4
-4
@@ -11,10 +11,10 @@ resolver = "2"
|
||||
[workspace.dependencies]
|
||||
serde = { version = "1", features = ["derive"] }
|
||||
log = "0.4"
|
||||
tauri = { version = "2.0.0-rc.8", default-features = false }
|
||||
tauri-build = "2.0.0-rc.7"
|
||||
tauri-plugin = "2.0.0-rc.7"
|
||||
tauri-utils = "2.0.0-rc.7"
|
||||
tauri = { version = "2.0.0-rc.9", default-features = false }
|
||||
tauri-build = "2.0.0-rc.8"
|
||||
tauri-plugin = "2.0.0-rc.8"
|
||||
tauri-utils = "2.0.0-rc.8"
|
||||
serde_json = "1"
|
||||
thiserror = "1"
|
||||
url = "2"
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
"@iconify-json/codicon": "^1.1.37",
|
||||
"@iconify-json/ph": "^1.1.8",
|
||||
"@sveltejs/vite-plugin-svelte": "^3.0.1",
|
||||
"@tauri-apps/cli": "2.0.0-rc.10",
|
||||
"@tauri-apps/cli": "2.0.0-rc.11",
|
||||
"@unocss/extractor-svelte": "^0.62.0",
|
||||
"svelte": "^4.2.19",
|
||||
"unocss": "^0.62.0",
|
||||
|
||||
@@ -1,5 +1,14 @@
|
||||
# Changelog
|
||||
|
||||
## \[2.0.0-rc.4]
|
||||
|
||||
### Dependencies
|
||||
|
||||
- Upgraded to `fs@2.0.0-rc.3`
|
||||
- Upgraded to `dialog@2.0.0-rc.5`
|
||||
- Upgraded to `updater@2.0.0-rc.3`
|
||||
- Upgraded to `http@2.0.0-rc.3`
|
||||
|
||||
## \[2.0.0-rc.3]
|
||||
|
||||
### Dependencies
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
[package]
|
||||
name = "api"
|
||||
publish = false
|
||||
version = "2.0.0-rc.3"
|
||||
version = "2.0.0-rc.4"
|
||||
description = "An example Tauri Application showcasing the api"
|
||||
edition = "2021"
|
||||
rust-version = { workspace = true }
|
||||
@@ -20,14 +20,14 @@ serde = { workspace = true }
|
||||
tiny_http = "0.12"
|
||||
log = { workspace = true }
|
||||
tauri-plugin-log = { path = "../../../plugins/log", version = "2.0.0-rc.2" }
|
||||
tauri-plugin-fs = { path = "../../../plugins/fs", version = "2.0.0-rc.2", features = [
|
||||
tauri-plugin-fs = { path = "../../../plugins/fs", version = "2.0.0-rc.3", features = [
|
||||
"watch",
|
||||
] }
|
||||
tauri-plugin-clipboard-manager = { path = "../../../plugins/clipboard-manager", version = "2.0.0-rc.3" }
|
||||
tauri-plugin-dialog = { path = "../../../plugins/dialog", version = "2.0.0-rc.4" }
|
||||
tauri-plugin-dialog = { path = "../../../plugins/dialog", version = "2.0.0-rc.5" }
|
||||
tauri-plugin-http = { path = "../../../plugins/http", features = [
|
||||
"multipart",
|
||||
], version = "2.0.0-rc.2" }
|
||||
], version = "2.0.0-rc.3" }
|
||||
tauri-plugin-notification = { path = "../../../plugins/notification", version = "2.0.0-rc.3", features = [
|
||||
"windows7-compat",
|
||||
] }
|
||||
@@ -52,7 +52,7 @@ features = [
|
||||
[target."cfg(any(target_os = \"macos\", windows, target_os = \"linux\", target_os = \"dragonfly\", target_os = \"freebsd\", target_os = \"openbsd\", target_os = \"netbsd\"))".dependencies]
|
||||
tauri-plugin-cli = { path = "../../../plugins/cli", version = "2.0.0-rc.1" }
|
||||
tauri-plugin-global-shortcut = { path = "../../../plugins/global-shortcut", version = "2.0.0-rc.2" }
|
||||
tauri-plugin-updater = { path = "../../../plugins/updater", version = "2.0.0-rc.2" }
|
||||
tauri-plugin-updater = { path = "../../../plugins/updater", version = "2.0.0-rc.3" }
|
||||
|
||||
[target."cfg(any(target_os = \"android\", target_os = \"ios\"))".dependencies]
|
||||
tauri-plugin-barcode-scanner = { path = "../../../plugins/barcode-scanner/", version = "2.0.0-rc.3" }
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
"@tauri-apps/plugin-deep-link": "2.0.0-rc.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@tauri-apps/cli": "2.0.0-rc.10",
|
||||
"@tauri-apps/cli": "2.0.0-rc.11",
|
||||
"typescript": "^5.2.2",
|
||||
"vite": "^5.0.13"
|
||||
}
|
||||
|
||||
@@ -1,5 +1,20 @@
|
||||
# Changelog
|
||||
|
||||
## \[2.0.0-rc.5]
|
||||
|
||||
- [`a2fe5551`](https://github.com/tauri-apps/plugins-workspace/commit/a2fe55512f908dd11c814ce021d164f01677572a) ([#1727](https://github.com/tauri-apps/plugins-workspace/pull/1727) by [@amrbashir](https://github.com/tauri-apps/plugins-workspace/../../amrbashir)) Add utility methods on `FilePath` and `SafeFilePath` enums which are:
|
||||
|
||||
- `path`
|
||||
- `simplified`
|
||||
- `into_path`
|
||||
- [`a2fe5551`](https://github.com/tauri-apps/plugins-workspace/commit/a2fe55512f908dd11c814ce021d164f01677572a) ([#1727](https://github.com/tauri-apps/plugins-workspace/pull/1727) by [@amrbashir](https://github.com/tauri-apps/plugins-workspace/../../amrbashir)) Implement `Serialize`, `Deserialize`, `From`, `TryFrom` and `FromStr` traits for `FilePath` and `SafeFilePath` enums.
|
||||
- [`a2fe5551`](https://github.com/tauri-apps/plugins-workspace/commit/a2fe55512f908dd11c814ce021d164f01677572a) ([#1727](https://github.com/tauri-apps/plugins-workspace/pull/1727) by [@amrbashir](https://github.com/tauri-apps/plugins-workspace/../../amrbashir)) Mark `Error` enum as `#[non_exhuastive]`.
|
||||
- [`a2fe5551`](https://github.com/tauri-apps/plugins-workspace/commit/a2fe55512f908dd11c814ce021d164f01677572a) ([#1727](https://github.com/tauri-apps/plugins-workspace/pull/1727) by [@amrbashir](https://github.com/tauri-apps/plugins-workspace/../../amrbashir)) Add `SafeFilePath` enum.
|
||||
|
||||
### Dependencies
|
||||
|
||||
- Upgraded to `fs@2.0.0-rc.3`
|
||||
|
||||
## \[2.0.0-rc.4]
|
||||
|
||||
### Dependencies
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "tauri-plugin-dialog"
|
||||
version = "2.0.0-rc.4"
|
||||
version = "2.0.0-rc.5"
|
||||
description = "Native system dialogs for opening and saving files along with message dialogs on your Tauri application."
|
||||
edition = { workspace = true }
|
||||
authors = { workspace = true }
|
||||
@@ -26,9 +26,8 @@ serde_json = { workspace = true }
|
||||
tauri = { workspace = true }
|
||||
log = { workspace = true }
|
||||
thiserror = { workspace = true }
|
||||
dunce = { workspace = true }
|
||||
url = { workspace = true }
|
||||
tauri-plugin-fs = { path = "../fs", version = "2.0.0-rc.2" }
|
||||
tauri-plugin-fs = { path = "../fs", version = "2.0.0-rc.3" }
|
||||
|
||||
[target.'cfg(target_os = "ios")'.dependencies]
|
||||
tauri = { workspace = true, features = ["wry"] }
|
||||
|
||||
@@ -136,7 +136,7 @@ pub(crate) async fn open<R: Runtime>(
|
||||
let folders = dialog_builder.blocking_pick_folders();
|
||||
if let Some(folders) = &folders {
|
||||
for folder in folders {
|
||||
if let Ok(path) = folder.path() {
|
||||
if let Ok(path) = folder.clone().into_path() {
|
||||
if let Some(s) = window.try_fs_scope() {
|
||||
s.allow_directory(path, options.recursive);
|
||||
}
|
||||
@@ -149,7 +149,7 @@ pub(crate) async fn open<R: Runtime>(
|
||||
} else {
|
||||
let folder = dialog_builder.blocking_pick_folder();
|
||||
if let Some(folder) = &folder {
|
||||
if let Ok(path) = folder.path() {
|
||||
if let Ok(path) = folder.clone().into_path() {
|
||||
if let Some(s) = window.try_fs_scope() {
|
||||
s.allow_directory(path, options.recursive);
|
||||
}
|
||||
@@ -164,7 +164,7 @@ pub(crate) async fn open<R: Runtime>(
|
||||
let files = dialog_builder.blocking_pick_files();
|
||||
if let Some(files) = &files {
|
||||
for file in files {
|
||||
if let Ok(path) = file.path() {
|
||||
if let Ok(path) = file.clone().into_path() {
|
||||
if let Some(s) = window.try_fs_scope() {
|
||||
s.allow_file(&path);
|
||||
}
|
||||
@@ -178,7 +178,7 @@ pub(crate) async fn open<R: Runtime>(
|
||||
let file = dialog_builder.blocking_pick_file();
|
||||
|
||||
if let Some(file) = &file {
|
||||
if let Ok(path) = file.path() {
|
||||
if let Ok(path) = file.clone().into_path() {
|
||||
if let Some(s) = window.try_fs_scope() {
|
||||
s.allow_file(&path);
|
||||
}
|
||||
@@ -218,7 +218,7 @@ pub(crate) async fn save<R: Runtime>(
|
||||
|
||||
let path = dialog_builder.blocking_save_file();
|
||||
if let Some(p) = &path {
|
||||
if let Ok(path) = p.path() {
|
||||
if let Ok(path) = p.clone().into_path() {
|
||||
if let Some(s) = window.try_fs_scope() {
|
||||
s.allow_file(&path);
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ use serde::{ser::Serializer, Serialize};
|
||||
pub type Result<T> = std::result::Result<T, Error>;
|
||||
|
||||
#[derive(Debug, thiserror::Error)]
|
||||
#[non_exhaustive]
|
||||
pub enum Error {
|
||||
#[error(transparent)]
|
||||
Tauri(#[from] tauri::Error),
|
||||
@@ -20,8 +21,6 @@ pub enum Error {
|
||||
FolderPickerNotImplemented,
|
||||
#[error(transparent)]
|
||||
Fs(#[from] tauri_plugin_fs::Error),
|
||||
#[error("URL is not a valid path")]
|
||||
InvalidPathUrl,
|
||||
}
|
||||
|
||||
impl Serialize for Error {
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
html_favicon_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png"
|
||||
)]
|
||||
|
||||
use serde::{Deserialize, Serialize};
|
||||
use serde::Serialize;
|
||||
use tauri::{
|
||||
plugin::{Builder, TauriPlugin},
|
||||
Manager, Runtime,
|
||||
@@ -24,6 +24,7 @@ use std::{
|
||||
|
||||
pub use models::*;
|
||||
|
||||
pub use tauri_plugin_fs::FilePath;
|
||||
#[cfg(desktop)]
|
||||
mod desktop;
|
||||
#[cfg(mobile)]
|
||||
@@ -294,57 +295,6 @@ impl<R: Runtime> MessageDialogBuilder<R> {
|
||||
blocking_fn!(self, show)
|
||||
}
|
||||
}
|
||||
|
||||
/// Represents either a filesystem path or a URI pointing to a file
|
||||
/// such as `file://` URIs or Android `content://` URIs.
|
||||
#[derive(Debug, Deserialize, Serialize)]
|
||||
#[serde(untagged)]
|
||||
pub enum FilePath {
|
||||
Url(url::Url),
|
||||
Path(PathBuf),
|
||||
}
|
||||
|
||||
impl From<PathBuf> for FilePath {
|
||||
fn from(value: PathBuf) -> Self {
|
||||
Self::Path(value)
|
||||
}
|
||||
}
|
||||
|
||||
impl From<url::Url> for FilePath {
|
||||
fn from(value: url::Url) -> Self {
|
||||
Self::Url(value)
|
||||
}
|
||||
}
|
||||
|
||||
impl From<FilePath> for tauri_plugin_fs::FilePath {
|
||||
fn from(value: FilePath) -> Self {
|
||||
match value {
|
||||
FilePath::Path(p) => tauri_plugin_fs::FilePath::Path(p),
|
||||
FilePath::Url(url) => tauri_plugin_fs::FilePath::Url(url),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl FilePath {
|
||||
fn simplified(self) -> Self {
|
||||
match self {
|
||||
Self::Url(url) => Self::Url(url),
|
||||
Self::Path(p) => Self::Path(dunce::simplified(&p).to_path_buf()),
|
||||
}
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn path(&self) -> Result<PathBuf> {
|
||||
match self {
|
||||
Self::Url(url) => url
|
||||
.to_file_path()
|
||||
.map(PathBuf::from)
|
||||
.map_err(|_| Error::InvalidPathUrl),
|
||||
Self::Path(p) => Ok(p.to_owned()),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize)]
|
||||
pub(crate) struct Filter {
|
||||
pub name: String,
|
||||
|
||||
@@ -1,5 +1,16 @@
|
||||
# Changelog
|
||||
|
||||
## \[2.0.0-rc.3]
|
||||
|
||||
- [`a2fe5551`](https://github.com/tauri-apps/plugins-workspace/commit/a2fe55512f908dd11c814ce021d164f01677572a) ([#1727](https://github.com/tauri-apps/plugins-workspace/pull/1727) by [@amrbashir](https://github.com/tauri-apps/plugins-workspace/../../amrbashir)) Add utility methods on `FilePath` and `SafeFilePath` enums which are:
|
||||
|
||||
- `path`
|
||||
- `simplified`
|
||||
- `into_path`
|
||||
- [`a2fe5551`](https://github.com/tauri-apps/plugins-workspace/commit/a2fe55512f908dd11c814ce021d164f01677572a) ([#1727](https://github.com/tauri-apps/plugins-workspace/pull/1727) by [@amrbashir](https://github.com/tauri-apps/plugins-workspace/../../amrbashir)) Implement `Serialize`, `Deserialize`, `From`, `TryFrom` and `FromStr` traits for `FilePath` and `SafeFilePath` enums.
|
||||
- [`a2fe5551`](https://github.com/tauri-apps/plugins-workspace/commit/a2fe55512f908dd11c814ce021d164f01677572a) ([#1727](https://github.com/tauri-apps/plugins-workspace/pull/1727) by [@amrbashir](https://github.com/tauri-apps/plugins-workspace/../../amrbashir)) Mark `Error` enum as `#[non_exhuastive]`.
|
||||
- [`a2fe5551`](https://github.com/tauri-apps/plugins-workspace/commit/a2fe55512f908dd11c814ce021d164f01677572a) ([#1727](https://github.com/tauri-apps/plugins-workspace/pull/1727) by [@amrbashir](https://github.com/tauri-apps/plugins-workspace/../../amrbashir)) Add `SafeFilePath` enum.
|
||||
|
||||
## \[2.0.0-rc.2]
|
||||
|
||||
- [`f7280c88`](https://github.com/tauri-apps/plugins-workspace/commit/f7280c88309cdf1f2330574fec31e26e01e9cdbd) ([#1710](https://github.com/tauri-apps/plugins-workspace/pull/1710) by [@Legend-Master](https://github.com/tauri-apps/plugins-workspace/../../Legend-Master)) Fix can't use Windows paths like `C:/Users/UserName/file.txt`
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "tauri-plugin-fs"
|
||||
version = "2.0.0-rc.2"
|
||||
version = "2.0.0-rc.3"
|
||||
description = "Access the file system."
|
||||
authors = { workspace = true }
|
||||
license = { workspace = true }
|
||||
@@ -30,6 +30,7 @@ uuid = { version = "1", features = ["v4"] }
|
||||
glob = "0.3"
|
||||
notify = { version = "6", optional = true, features = ["serde"] }
|
||||
notify-debouncer-full = { version = "0.3", optional = true }
|
||||
dunce = { workspace = true }
|
||||
|
||||
[features]
|
||||
watch = ["notify", "notify-debouncer-full"]
|
||||
|
||||
@@ -7,7 +7,7 @@ use serde::{Deserialize, Serialize, Serializer};
|
||||
use serde_repr::{Deserialize_repr, Serialize_repr};
|
||||
use tauri::{
|
||||
ipc::{CommandScope, GlobalScope},
|
||||
path::{BaseDirectory, SafePathBuf},
|
||||
path::BaseDirectory,
|
||||
utils::config::FsScope,
|
||||
AppHandle, Manager, Resource, ResourceId, Runtime, Webview,
|
||||
};
|
||||
@@ -22,80 +22,7 @@ use std::{
|
||||
time::{SystemTime, UNIX_EPOCH},
|
||||
};
|
||||
|
||||
use crate::{scope::Entry, Error, FilePath, FsExt};
|
||||
|
||||
// TODO: Combine this with FilePath
|
||||
#[derive(Debug)]
|
||||
pub enum SafeFilePath {
|
||||
Url(url::Url),
|
||||
Path(SafePathBuf),
|
||||
}
|
||||
|
||||
impl<'de> serde::Deserialize<'de> for SafeFilePath {
|
||||
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
|
||||
where
|
||||
D: serde::Deserializer<'de>,
|
||||
{
|
||||
struct SafeFilePathVisitor;
|
||||
|
||||
impl<'de> serde::de::Visitor<'de> for SafeFilePathVisitor {
|
||||
type Value = SafeFilePath;
|
||||
|
||||
fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
|
||||
formatter.write_str("a string representing an file URL or a path")
|
||||
}
|
||||
|
||||
fn visit_str<E>(self, s: &str) -> std::result::Result<Self::Value, E>
|
||||
where
|
||||
E: serde::de::Error,
|
||||
{
|
||||
SafeFilePath::from_str(s).map_err(|e| {
|
||||
serde::de::Error::invalid_value(
|
||||
serde::de::Unexpected::Str(s),
|
||||
&e.to_string().as_str(),
|
||||
)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
deserializer.deserialize_str(SafeFilePathVisitor)
|
||||
}
|
||||
}
|
||||
|
||||
impl From<SafeFilePath> for FilePath {
|
||||
fn from(value: SafeFilePath) -> Self {
|
||||
match value {
|
||||
SafeFilePath::Url(url) => FilePath::Url(url),
|
||||
SafeFilePath::Path(p) => FilePath::Path(p.as_ref().to_owned()),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl FromStr for SafeFilePath {
|
||||
type Err = CommandError;
|
||||
fn from_str(s: &str) -> Result<Self, Self::Err> {
|
||||
if let Ok(url) = url::Url::from_str(s) {
|
||||
if url.scheme().len() != 1 {
|
||||
return Ok(Self::Url(url));
|
||||
}
|
||||
}
|
||||
Ok(Self::Path(SafePathBuf::new(s.into())?))
|
||||
}
|
||||
}
|
||||
|
||||
impl SafeFilePath {
|
||||
#[inline]
|
||||
fn into_path(self) -> CommandResult<SafePathBuf> {
|
||||
match self {
|
||||
Self::Url(url) => SafePathBuf::new(
|
||||
url.to_file_path()
|
||||
.map_err(|_| format!("failed to get path from {url}"))?,
|
||||
)
|
||||
.map_err(Into::into),
|
||||
Self::Path(p) => Ok(p),
|
||||
}
|
||||
}
|
||||
}
|
||||
use crate::{scope::Entry, Error, FsExt, SafeFilePath};
|
||||
|
||||
#[derive(Debug, thiserror::Error)]
|
||||
pub enum CommandError {
|
||||
@@ -1052,7 +979,7 @@ pub fn resolve_path<R: Runtime>(
|
||||
let path = if let Some(base_dir) = base_dir {
|
||||
webview.path().resolve(&path, base_dir)?
|
||||
} else {
|
||||
path.as_ref().to_path_buf()
|
||||
path
|
||||
};
|
||||
|
||||
let scope = tauri::scope::fs::Scope::new(
|
||||
|
||||
@@ -7,6 +7,7 @@ use std::path::PathBuf;
|
||||
use serde::{Serialize, Serializer};
|
||||
|
||||
#[derive(Debug, thiserror::Error)]
|
||||
#[non_exhaustive]
|
||||
pub enum Error {
|
||||
#[error(transparent)]
|
||||
Json(#[from] serde_json::Error),
|
||||
@@ -26,6 +27,10 @@ pub enum Error {
|
||||
#[cfg(target_os = "android")]
|
||||
#[error(transparent)]
|
||||
PluginInvoke(#[from] tauri::plugin::mobile::PluginInvokeError),
|
||||
#[error("URL is not a valid path")]
|
||||
InvalidPathUrl,
|
||||
#[error("Unsafe PathBuf: {0}")]
|
||||
UnsafePathBuf(&'static str),
|
||||
}
|
||||
|
||||
impl Serialize for Error {
|
||||
|
||||
@@ -0,0 +1,314 @@
|
||||
// Copyright 2019-2023 Tauri Programme within The Commons Conservancy
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
use std::{
|
||||
convert::Infallible,
|
||||
path::{Path, PathBuf},
|
||||
str::FromStr,
|
||||
};
|
||||
|
||||
use serde::Serialize;
|
||||
use tauri::path::SafePathBuf;
|
||||
|
||||
use crate::{Error, Result};
|
||||
|
||||
/// Represents either a filesystem path or a URI pointing to a file
|
||||
/// such as `file://` URIs or Android `content://` URIs.
|
||||
#[derive(Debug, Serialize, Clone)]
|
||||
#[serde(untagged)]
|
||||
pub enum FilePath {
|
||||
/// `file://` URIs or Android `content://` URIs.
|
||||
Url(url::Url),
|
||||
/// Regular [`PathBuf`]
|
||||
Path(PathBuf),
|
||||
}
|
||||
|
||||
/// Represents either a safe filesystem path or a URI pointing to a file
|
||||
/// such as `file://` URIs or Android `content://` URIs.
|
||||
#[derive(Debug, Clone, Serialize)]
|
||||
pub enum SafeFilePath {
|
||||
/// `file://` URIs or Android `content://` URIs.
|
||||
Url(url::Url),
|
||||
/// Safe [`PathBuf`], see [`SafePathBuf``].
|
||||
Path(SafePathBuf),
|
||||
}
|
||||
|
||||
impl FilePath {
|
||||
/// Get a reference to the contaiend [`Path`] if the variant is [`FilePath::Path`].
|
||||
///
|
||||
/// Use [`FilePath::into_path`] to try to convert the [`FilePath::Url`] variant as well.
|
||||
#[inline]
|
||||
pub fn as_path(&self) -> Option<&Path> {
|
||||
match self {
|
||||
Self::Url(_) => None,
|
||||
Self::Path(p) => Some(p),
|
||||
}
|
||||
}
|
||||
|
||||
/// Try to convert into [`PathBuf`] if possible.
|
||||
///
|
||||
/// This calls [`Url::to_file_path`](url::Url::to_file_path) if the variant is [`FilePath::Url`],
|
||||
/// otherwise returns the contained [PathBuf] as is.
|
||||
#[inline]
|
||||
pub fn into_path(self) -> Result<PathBuf> {
|
||||
match self {
|
||||
Self::Url(url) => url
|
||||
.to_file_path()
|
||||
.map(PathBuf::from)
|
||||
.map_err(|_| Error::InvalidPathUrl),
|
||||
Self::Path(p) => Ok(p),
|
||||
}
|
||||
}
|
||||
|
||||
/// Takes the contained [`PathBuf`] if the variant is [`FilePath::Path`],
|
||||
/// and when possible, converts Windows UNC paths to regular paths.
|
||||
#[inline]
|
||||
pub fn simplified(self) -> Self {
|
||||
match self {
|
||||
Self::Url(url) => Self::Url(url),
|
||||
Self::Path(p) => Self::Path(dunce::simplified(&p).to_path_buf()),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl SafeFilePath {
|
||||
/// Get a reference to the contaiend [`Path`] if the variant is [`SafeFilePath::Path`].
|
||||
///
|
||||
/// Use [`SafeFilePath::into_path`] to try to convert the [`SafeFilePath::Url`] variant as well.
|
||||
#[inline]
|
||||
pub fn as_path(&self) -> Option<&Path> {
|
||||
match self {
|
||||
Self::Url(_) => None,
|
||||
Self::Path(p) => Some(p.as_ref()),
|
||||
}
|
||||
}
|
||||
|
||||
/// Try to convert into [`PathBuf`] if possible.
|
||||
///
|
||||
/// This calls [`Url::to_file_path`](url::Url::to_file_path) if the variant is [`SafeFilePath::Url`],
|
||||
/// otherwise returns the contained [PathBuf] as is.
|
||||
#[inline]
|
||||
pub fn into_path(self) -> Result<PathBuf> {
|
||||
match self {
|
||||
Self::Url(url) => url
|
||||
.to_file_path()
|
||||
.map(PathBuf::from)
|
||||
.map_err(|_| Error::InvalidPathUrl),
|
||||
Self::Path(p) => Ok(p.as_ref().to_owned()),
|
||||
}
|
||||
}
|
||||
|
||||
/// Takes the contained [`PathBuf`] if the variant is [`SafeFilePath::Path`],
|
||||
/// and when possible, converts Windows UNC paths to regular paths.
|
||||
#[inline]
|
||||
pub fn simplified(self) -> Self {
|
||||
match self {
|
||||
Self::Url(url) => Self::Url(url),
|
||||
Self::Path(p) => {
|
||||
// Safe to unwrap since it was a safe file path already
|
||||
Self::Path(SafePathBuf::new(dunce::simplified(p.as_ref()).to_path_buf()).unwrap())
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl std::fmt::Display for FilePath {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
match self {
|
||||
Self::Url(u) => u.fmt(f),
|
||||
Self::Path(p) => p.display().fmt(f),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl std::fmt::Display for SafeFilePath {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
match self {
|
||||
Self::Url(u) => u.fmt(f),
|
||||
Self::Path(p) => p.display().fmt(f),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl<'de> serde::Deserialize<'de> for FilePath {
|
||||
fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
|
||||
where
|
||||
D: serde::Deserializer<'de>,
|
||||
{
|
||||
struct FilePathVisitor;
|
||||
|
||||
impl<'de> serde::de::Visitor<'de> for FilePathVisitor {
|
||||
type Value = FilePath;
|
||||
|
||||
fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
|
||||
formatter.write_str("a string representing an file URL or a path")
|
||||
}
|
||||
|
||||
fn visit_str<E>(self, s: &str) -> std::result::Result<Self::Value, E>
|
||||
where
|
||||
E: serde::de::Error,
|
||||
{
|
||||
FilePath::from_str(s).map_err(|e| {
|
||||
serde::de::Error::invalid_value(
|
||||
serde::de::Unexpected::Str(s),
|
||||
&e.to_string().as_str(),
|
||||
)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
deserializer.deserialize_str(FilePathVisitor)
|
||||
}
|
||||
}
|
||||
|
||||
impl<'de> serde::Deserialize<'de> for SafeFilePath {
|
||||
fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
|
||||
where
|
||||
D: serde::Deserializer<'de>,
|
||||
{
|
||||
struct SafeFilePathVisitor;
|
||||
|
||||
impl<'de> serde::de::Visitor<'de> for SafeFilePathVisitor {
|
||||
type Value = SafeFilePath;
|
||||
|
||||
fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
|
||||
formatter.write_str("a string representing an file URL or a path")
|
||||
}
|
||||
|
||||
fn visit_str<E>(self, s: &str) -> std::result::Result<Self::Value, E>
|
||||
where
|
||||
E: serde::de::Error,
|
||||
{
|
||||
SafeFilePath::from_str(s).map_err(|e| {
|
||||
serde::de::Error::invalid_value(
|
||||
serde::de::Unexpected::Str(s),
|
||||
&e.to_string().as_str(),
|
||||
)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
deserializer.deserialize_str(SafeFilePathVisitor)
|
||||
}
|
||||
}
|
||||
|
||||
impl FromStr for FilePath {
|
||||
type Err = Infallible;
|
||||
fn from_str(s: &str) -> std::result::Result<Self, Self::Err> {
|
||||
if let Ok(url) = url::Url::from_str(s) {
|
||||
if url.scheme().len() != 1 {
|
||||
return Ok(Self::Url(url));
|
||||
}
|
||||
}
|
||||
Ok(Self::Path(PathBuf::from(s)))
|
||||
}
|
||||
}
|
||||
|
||||
impl FromStr for SafeFilePath {
|
||||
type Err = Error;
|
||||
fn from_str(s: &str) -> Result<Self> {
|
||||
if let Ok(url) = url::Url::from_str(s) {
|
||||
if url.scheme().len() != 1 {
|
||||
return Ok(Self::Url(url));
|
||||
}
|
||||
}
|
||||
|
||||
SafePathBuf::new(s.into())
|
||||
.map(SafeFilePath::Path)
|
||||
.map_err(Error::UnsafePathBuf)
|
||||
}
|
||||
}
|
||||
|
||||
impl From<PathBuf> for FilePath {
|
||||
fn from(value: PathBuf) -> Self {
|
||||
Self::Path(value)
|
||||
}
|
||||
}
|
||||
|
||||
impl TryFrom<PathBuf> for SafeFilePath {
|
||||
type Error = Error;
|
||||
fn try_from(value: PathBuf) -> Result<Self> {
|
||||
SafePathBuf::new(value)
|
||||
.map(SafeFilePath::Path)
|
||||
.map_err(Error::UnsafePathBuf)
|
||||
}
|
||||
}
|
||||
|
||||
impl From<&Path> for FilePath {
|
||||
fn from(value: &Path) -> Self {
|
||||
Self::Path(value.to_owned())
|
||||
}
|
||||
}
|
||||
|
||||
impl TryFrom<&Path> for SafeFilePath {
|
||||
type Error = Error;
|
||||
fn try_from(value: &Path) -> Result<Self> {
|
||||
SafePathBuf::new(value.to_path_buf())
|
||||
.map(SafeFilePath::Path)
|
||||
.map_err(Error::UnsafePathBuf)
|
||||
}
|
||||
}
|
||||
|
||||
impl From<&PathBuf> for FilePath {
|
||||
fn from(value: &PathBuf) -> Self {
|
||||
Self::Path(value.to_owned())
|
||||
}
|
||||
}
|
||||
|
||||
impl TryFrom<&PathBuf> for SafeFilePath {
|
||||
type Error = Error;
|
||||
fn try_from(value: &PathBuf) -> Result<Self> {
|
||||
SafePathBuf::new(value.to_owned())
|
||||
.map(SafeFilePath::Path)
|
||||
.map_err(Error::UnsafePathBuf)
|
||||
}
|
||||
}
|
||||
|
||||
impl From<url::Url> for FilePath {
|
||||
fn from(value: url::Url) -> Self {
|
||||
Self::Url(value)
|
||||
}
|
||||
}
|
||||
|
||||
impl From<url::Url> for SafeFilePath {
|
||||
fn from(value: url::Url) -> Self {
|
||||
Self::Url(value)
|
||||
}
|
||||
}
|
||||
|
||||
impl TryFrom<FilePath> for PathBuf {
|
||||
type Error = Error;
|
||||
fn try_from(value: FilePath) -> Result<Self> {
|
||||
value.into_path()
|
||||
}
|
||||
}
|
||||
|
||||
impl TryFrom<SafeFilePath> for PathBuf {
|
||||
type Error = Error;
|
||||
fn try_from(value: SafeFilePath) -> Result<Self> {
|
||||
value.into_path()
|
||||
}
|
||||
}
|
||||
|
||||
impl From<SafeFilePath> for FilePath {
|
||||
fn from(value: SafeFilePath) -> Self {
|
||||
match value {
|
||||
SafeFilePath::Url(url) => FilePath::Url(url),
|
||||
SafeFilePath::Path(p) => FilePath::Path(p.as_ref().to_owned()),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl TryFrom<FilePath> for SafeFilePath {
|
||||
type Error = Error;
|
||||
|
||||
fn try_from(value: FilePath) -> Result<Self> {
|
||||
match value {
|
||||
FilePath::Url(url) => Ok(SafeFilePath::Url(url)),
|
||||
FilePath::Path(p) => SafePathBuf::new(p)
|
||||
.map(SafeFilePath::Path)
|
||||
.map_err(Error::UnsafePathBuf),
|
||||
}
|
||||
}
|
||||
}
|
||||
+7
-92
@@ -11,13 +11,7 @@
|
||||
html_favicon_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png"
|
||||
)]
|
||||
|
||||
use std::{
|
||||
convert::Infallible,
|
||||
fmt,
|
||||
io::Read,
|
||||
path::{Path, PathBuf},
|
||||
str::FromStr,
|
||||
};
|
||||
use std::io::Read;
|
||||
|
||||
use serde::Deserialize;
|
||||
use tauri::{
|
||||
@@ -32,6 +26,7 @@ mod config;
|
||||
#[cfg(not(target_os = "android"))]
|
||||
mod desktop;
|
||||
mod error;
|
||||
mod file_path;
|
||||
#[cfg(target_os = "android")]
|
||||
mod mobile;
|
||||
#[cfg(target_os = "android")]
|
||||
@@ -48,93 +43,11 @@ pub use mobile::Fs;
|
||||
pub use error::Error;
|
||||
pub use scope::{Event as ScopeEvent, Scope};
|
||||
|
||||
pub use file_path::FilePath;
|
||||
pub use file_path::SafeFilePath;
|
||||
|
||||
type Result<T> = std::result::Result<T, Error>;
|
||||
|
||||
// TODO: Combine this with SafeFilePath
|
||||
/// Represents either a filesystem path or a URI pointing to a file
|
||||
/// such as `file://` URIs or Android `content://` URIs.
|
||||
#[derive(Debug)]
|
||||
pub enum FilePath {
|
||||
Url(url::Url),
|
||||
Path(PathBuf),
|
||||
}
|
||||
|
||||
impl<'de> serde::Deserialize<'de> for FilePath {
|
||||
fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
|
||||
where
|
||||
D: serde::Deserializer<'de>,
|
||||
{
|
||||
struct FilePathVisitor;
|
||||
|
||||
impl<'de> serde::de::Visitor<'de> for FilePathVisitor {
|
||||
type Value = FilePath;
|
||||
|
||||
fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
|
||||
formatter.write_str("a string representing an file URL or a path")
|
||||
}
|
||||
|
||||
fn visit_str<E>(self, s: &str) -> std::result::Result<Self::Value, E>
|
||||
where
|
||||
E: serde::de::Error,
|
||||
{
|
||||
FilePath::from_str(s).map_err(|e| {
|
||||
serde::de::Error::invalid_value(
|
||||
serde::de::Unexpected::Str(s),
|
||||
&e.to_string().as_str(),
|
||||
)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
deserializer.deserialize_str(FilePathVisitor)
|
||||
}
|
||||
}
|
||||
|
||||
impl FromStr for FilePath {
|
||||
type Err = Infallible;
|
||||
fn from_str(s: &str) -> std::result::Result<Self, Self::Err> {
|
||||
if let Ok(url) = url::Url::from_str(s) {
|
||||
if url.scheme().len() != 1 {
|
||||
return Ok(Self::Url(url));
|
||||
}
|
||||
}
|
||||
Ok(Self::Path(PathBuf::from(s)))
|
||||
}
|
||||
}
|
||||
|
||||
impl From<PathBuf> for FilePath {
|
||||
fn from(value: PathBuf) -> Self {
|
||||
Self::Path(value)
|
||||
}
|
||||
}
|
||||
|
||||
impl From<&Path> for FilePath {
|
||||
fn from(value: &Path) -> Self {
|
||||
Self::Path(value.to_owned())
|
||||
}
|
||||
}
|
||||
|
||||
impl From<&PathBuf> for FilePath {
|
||||
fn from(value: &PathBuf) -> Self {
|
||||
Self::Path(value.to_owned())
|
||||
}
|
||||
}
|
||||
|
||||
impl From<url::Url> for FilePath {
|
||||
fn from(value: url::Url) -> Self {
|
||||
Self::Url(value)
|
||||
}
|
||||
}
|
||||
|
||||
impl fmt::Display for FilePath {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
match self {
|
||||
Self::Url(u) => u.fmt(f),
|
||||
Self::Path(p) => p.display().fmt(f),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Default, Clone, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct OpenOptions {
|
||||
@@ -151,8 +64,10 @@ pub struct OpenOptions {
|
||||
#[serde(default)]
|
||||
create_new: bool,
|
||||
#[serde(default)]
|
||||
#[allow(unused)]
|
||||
mode: Option<u32>,
|
||||
#[serde(default)]
|
||||
#[allow(unused)]
|
||||
custom_flags: Option<i32>,
|
||||
}
|
||||
|
||||
|
||||
@@ -22,8 +22,9 @@ use std::{
|
||||
};
|
||||
|
||||
use crate::{
|
||||
commands::{resolve_path, CommandResult, SafeFilePath},
|
||||
commands::{resolve_path, CommandResult},
|
||||
scope::Entry,
|
||||
SafeFilePath,
|
||||
};
|
||||
|
||||
struct InnerWatcher {
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
# Changelog
|
||||
|
||||
## \[2.0.0-rc.3]
|
||||
|
||||
### Dependencies
|
||||
|
||||
- Upgraded to `fs@2.0.0-rc.3`
|
||||
|
||||
## \[2.0.0-rc.2]
|
||||
|
||||
### Dependencies
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "tauri-plugin-http"
|
||||
version = "2.0.0-rc.2"
|
||||
version = "2.0.0-rc.3"
|
||||
description = "Access an HTTP client written in Rust."
|
||||
edition = { workspace = true }
|
||||
authors = { workspace = true }
|
||||
@@ -27,7 +27,7 @@ serde_json = { workspace = true }
|
||||
tauri = { workspace = true }
|
||||
thiserror = { workspace = true }
|
||||
tokio = { version = "1", features = ["sync", "macros"] }
|
||||
tauri-plugin-fs = { path = "../fs", version = "2.0.0-rc.2" }
|
||||
tauri-plugin-fs = { path = "../fs", version = "2.0.0-rc.3" }
|
||||
urlpattern = "0.3"
|
||||
regex = "1"
|
||||
http = "1"
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
# Changelog
|
||||
|
||||
## \[2.0.0-rc.3]
|
||||
|
||||
### Dependencies
|
||||
|
||||
- Upgraded to `fs@2.0.0-rc.3`
|
||||
|
||||
## \[2.0.0-rc.2]
|
||||
|
||||
### Dependencies
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "tauri-plugin-persisted-scope"
|
||||
version = "2.0.0-rc.2"
|
||||
version = "2.0.0-rc.3"
|
||||
description = "Save filesystem and asset scopes and restore them when the app is reopened."
|
||||
authors = { workspace = true }
|
||||
license = { workspace = true }
|
||||
@@ -20,7 +20,7 @@ log = { workspace = true }
|
||||
thiserror = { workspace = true }
|
||||
aho-corasick = "1"
|
||||
bincode = "1"
|
||||
tauri-plugin-fs = { path = "../fs", version = "2.0.0-rc.2" }
|
||||
tauri-plugin-fs = { path = "../fs", version = "2.0.0-rc.3" }
|
||||
|
||||
[features]
|
||||
protocol-asset = ["tauri/protocol-asset"]
|
||||
|
||||
@@ -9,6 +9,6 @@
|
||||
"author": "",
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
"@tauri-apps/cli": "2.0.0-rc.10"
|
||||
"@tauri-apps/cli": "2.0.0-rc.11"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,8 +2,6 @@
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
#![cfg(feature = "semver")]
|
||||
|
||||
/// Takes a version and spits out a String with trailing _x, thus only considering the digits
|
||||
/// relevant regarding semver compatibility
|
||||
pub fn semver_compat_string(version: semver::Version) -> String {
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
"tauri": "tauri"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@tauri-apps/cli": "2.0.0-rc.10",
|
||||
"@tauri-apps/cli": "2.0.0-rc.11",
|
||||
"vite": "^5.0.12",
|
||||
"typescript": "^5.3.3"
|
||||
}
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
# Changelog
|
||||
|
||||
## \[2.0.0-rc.3]
|
||||
|
||||
- [`d00519e3`](https://github.com/tauri-apps/plugins-workspace/commit/d00519e3e3a3234f9eb6c2ba82c92d4199f03e53) ([#1735](https://github.com/tauri-apps/plugins-workspace/pull/1735) by [@FabianLars](https://github.com/tauri-apps/plugins-workspace/../../FabianLars)) This releases the changes from 2.0.0-rc.2 to crates.io. Please see the links below for the actual changes.
|
||||
|
||||
## \[2.0.0-rc.2]
|
||||
|
||||
- [`f8255e1d`](https://github.com/tauri-apps/plugins-workspace/commit/f8255e1db5df6cf562b9334fbefe5e62f4a28e0a) ([#1661](https://github.com/tauri-apps/plugins-workspace/pull/1661) by [@amrbashir](https://github.com/tauri-apps/plugins-workspace/../../amrbashir)) Add a second argument in `Update.download` and `Update.donloadAndInstall` JS APIs to modify headers and timeout when downloading the update.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "tauri-plugin-updater"
|
||||
version = "2.0.0-rc.2"
|
||||
version = "2.0.0-rc.3"
|
||||
description = "In-app updates for Tauri applications."
|
||||
edition = { workspace = true }
|
||||
authors = { workspace = true }
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
"preview": "vite preview"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@tauri-apps/cli": "2.0.0-rc.10",
|
||||
"@tauri-apps/cli": "2.0.0-rc.11",
|
||||
"typescript": "^5.3.3",
|
||||
"vite": "^5.0.13"
|
||||
},
|
||||
|
||||
Generated
+64
-66
@@ -119,8 +119,8 @@ importers:
|
||||
specifier: ^3.0.1
|
||||
version: 3.1.1(svelte@4.2.19)(vite@5.4.0(terser@5.31.5))
|
||||
'@tauri-apps/cli':
|
||||
specifier: 2.0.0-rc.10
|
||||
version: 2.0.0-rc.10
|
||||
specifier: 2.0.0-rc.11
|
||||
version: 2.0.0-rc.11
|
||||
'@unocss/extractor-svelte':
|
||||
specifier: ^0.62.0
|
||||
version: 0.62.0
|
||||
@@ -180,8 +180,8 @@ importers:
|
||||
version: link:../..
|
||||
devDependencies:
|
||||
'@tauri-apps/cli':
|
||||
specifier: 2.0.0-rc.10
|
||||
version: 2.0.0-rc.10
|
||||
specifier: 2.0.0-rc.11
|
||||
version: 2.0.0-rc.11
|
||||
typescript:
|
||||
specifier: ^5.2.2
|
||||
version: 5.5.4
|
||||
@@ -270,8 +270,8 @@ importers:
|
||||
plugins/single-instance/examples/vanilla:
|
||||
devDependencies:
|
||||
'@tauri-apps/cli':
|
||||
specifier: 2.0.0-rc.10
|
||||
version: 2.0.0-rc.10
|
||||
specifier: 2.0.0-rc.11
|
||||
version: 2.0.0-rc.11
|
||||
|
||||
plugins/sql:
|
||||
dependencies:
|
||||
@@ -288,8 +288,8 @@ importers:
|
||||
plugins/store/examples/AppSettingsManager:
|
||||
devDependencies:
|
||||
'@tauri-apps/cli':
|
||||
specifier: 2.0.0-rc.10
|
||||
version: 2.0.0-rc.10
|
||||
specifier: 2.0.0-rc.11
|
||||
version: 2.0.0-rc.11
|
||||
typescript:
|
||||
specifier: ^5.3.3
|
||||
version: 5.5.4
|
||||
@@ -328,8 +328,8 @@ importers:
|
||||
version: link:../..
|
||||
devDependencies:
|
||||
'@tauri-apps/cli':
|
||||
specifier: 2.0.0-rc.10
|
||||
version: 2.0.0-rc.10
|
||||
specifier: 2.0.0-rc.11
|
||||
version: 2.0.0-rc.11
|
||||
typescript:
|
||||
specifier: ^5.3.3
|
||||
version: 5.5.4
|
||||
@@ -1050,68 +1050,68 @@ packages:
|
||||
'@tauri-apps/api@2.0.0-rc.4':
|
||||
resolution: {integrity: sha512-UNiIhhKG08j4ooss2oEEVexffmWkgkYlC2M3GcX3VPtNsqFgVNL8Mcw/4Y7rO9M9S+ffAMnLOF5ypzyuyb8tyg==}
|
||||
|
||||
'@tauri-apps/cli-darwin-arm64@2.0.0-rc.10':
|
||||
resolution: {integrity: sha512-oAuG3n/dIqK5ZedknF1QOgVDlpEepAaaIFHpUi+eIdG1MFp82jgyHqplveVZ95F16j7RhjIMaEhiTF6cGR/baA==}
|
||||
'@tauri-apps/cli-darwin-arm64@2.0.0-rc.11':
|
||||
resolution: {integrity: sha512-nPPRF606X8mI6Psiu8+dQr1jiqXYuyS81ZpoyyXxkzz6YEVFLv2YKNLw3MwQIM2MQ3wEkUuFy5Lp4x5pHW5zGQ==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [arm64]
|
||||
os: [darwin]
|
||||
|
||||
'@tauri-apps/cli-darwin-x64@2.0.0-rc.10':
|
||||
resolution: {integrity: sha512-n4ul0XUBqrA7KbNY6Vo52EBNqTXogYuV2qi5RWR0bIJF/A/vYjZ3LcC1TXXo/X57sDN55LWORrBe4c4Ds8MZrA==}
|
||||
'@tauri-apps/cli-darwin-x64@2.0.0-rc.11':
|
||||
resolution: {integrity: sha512-l5DX3f7z3xSekN1Wei9glewiCnUw0dQ3OypY97kGgKBIwTdx+JKSTMduc2kB/rXWfLf+VLX1SM423FiC/52GiA==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [x64]
|
||||
os: [darwin]
|
||||
|
||||
'@tauri-apps/cli-linux-arm-gnueabihf@2.0.0-rc.10':
|
||||
resolution: {integrity: sha512-RByz0zRbngps5QMQVsbgCD03TiCMxwAhaZhNtojXQ2AiJFkv1Mu68W/prbpWucw6Ep1nM3/yTIm0aL6ozdh/gw==}
|
||||
'@tauri-apps/cli-linux-arm-gnueabihf@2.0.0-rc.11':
|
||||
resolution: {integrity: sha512-m5Nqj1fBlBbiqX23z0sLr4Up2J92D1DKd59x7u1z6NQqePGEbEqbZdrJR9jI38evw0sSOgvSAPMRSVVfhlKsFQ==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [arm]
|
||||
os: [linux]
|
||||
|
||||
'@tauri-apps/cli-linux-arm64-gnu@2.0.0-rc.10':
|
||||
resolution: {integrity: sha512-ZqpbDIMp5b0jz1ddutJH6S5geLaBEmsMG6eZix+MgcZZRyEfahTMGCq3xkvv+tnrNNq7drvwBISCVSSS0zu3wQ==}
|
||||
'@tauri-apps/cli-linux-arm64-gnu@2.0.0-rc.11':
|
||||
resolution: {integrity: sha512-1EvsQhKvYYVXn7PTHR8x7UTUuHAnFJ8ayVW77eTNLJPzXS2rk2/DDEaSPln+5tKBccWL2+FbB7bdyx2XbheLmA==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
|
||||
'@tauri-apps/cli-linux-arm64-musl@2.0.0-rc.10':
|
||||
resolution: {integrity: sha512-EVh1xPqs5bi0aBYbv6Iy1ooFClyK6/wIsNw9DyxWwhPz9I7UNpDAgHm6lOhkMH26Cp/eQPiEA8OdfOLTfCY81A==}
|
||||
'@tauri-apps/cli-linux-arm64-musl@2.0.0-rc.11':
|
||||
resolution: {integrity: sha512-cCQXdck6LWDfCFMR780I4FLXy9OPvep0z6mJnhYfWBhiCkmFecgZNHDZD5fmh5NwcXWo3tlY6FBDMm2Cn1X3uw==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
|
||||
'@tauri-apps/cli-linux-x64-gnu@2.0.0-rc.10':
|
||||
resolution: {integrity: sha512-ZLcXJbRRMfgSkZdxBegP/4PlXkoVR1zpx2pE7mKkRgyvwJCx+A2f0+IZM+VVu/WRECxAdzVCbgxztTAOoLkdrg==}
|
||||
'@tauri-apps/cli-linux-x64-gnu@2.0.0-rc.11':
|
||||
resolution: {integrity: sha512-6ziiEts2WVFOq4UUCtvSTi9Fwu+UGXEGycJ3OgRsBPgQgeoeMCamHnb3kcnI5SKE6LKVJbwigOTnIwC7mfBN4A==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
|
||||
'@tauri-apps/cli-linux-x64-musl@2.0.0-rc.10':
|
||||
resolution: {integrity: sha512-IgzRemlQT+SHfb2x8kq32xKGnR3r7S69Ogv5pBKIDX1/G2qQofM6wfy0OHnAyS4Bj0y2lZPjiYQBwmLIkK/BNw==}
|
||||
'@tauri-apps/cli-linux-x64-musl@2.0.0-rc.11':
|
||||
resolution: {integrity: sha512-GBAr1N4m8+zxTSY+ls2uQi6XQ6DfGsgWA1kNy475+m0ZbFH0XBNyWSfQg/ztZ4Sn5qK9UYQO0uNBYY0oYEZsHw==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
|
||||
'@tauri-apps/cli-win32-arm64-msvc@2.0.0-rc.10':
|
||||
resolution: {integrity: sha512-RmSh5omDiCEZgw1fOhdEFi6MzAQ1rQBmvTM13K2p8XUxxaYb/MHYYZbNEMqxqWvsg4fidZ8hNSqRkB7YCCWWgg==}
|
||||
'@tauri-apps/cli-win32-arm64-msvc@2.0.0-rc.11':
|
||||
resolution: {integrity: sha512-IxkXVDlJCFqif1gEil92ZqGAxapvim7I1ekQBndPaNKu3D/GUtyl4kFFkyHS5S3LvnDRzzHetD10BOM6UAZgHA==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [arm64]
|
||||
os: [win32]
|
||||
|
||||
'@tauri-apps/cli-win32-ia32-msvc@2.0.0-rc.10':
|
||||
resolution: {integrity: sha512-6zxZ1KnKqflC5YpJmXZyNNVaRXMdOiRijimua8zLzfoAo+adb6gd8V4o03rZF3BPHtmd35rPkZHlgMlg/th2Bw==}
|
||||
'@tauri-apps/cli-win32-ia32-msvc@2.0.0-rc.11':
|
||||
resolution: {integrity: sha512-aNz5lItTDyHZjmSm5ZuzPj0c/uTSdZLlDDtAuUNuxaWFBUi1loLR85AY4X5qAr1Mo6RuaASUs4TJbEFkWcWmHA==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [ia32]
|
||||
os: [win32]
|
||||
|
||||
'@tauri-apps/cli-win32-x64-msvc@2.0.0-rc.10':
|
||||
resolution: {integrity: sha512-D7L9QnxUJcSykQ9S8AQ0CEdxaw3IMoyAwv2LR7x+w/j7Jg3UsEgnsX5ePkShBiqSmu/UXfSuQeGvAoA8kSLiUw==}
|
||||
'@tauri-apps/cli-win32-x64-msvc@2.0.0-rc.11':
|
||||
resolution: {integrity: sha512-makFSAiYq0oF7o7lpimjmc2DDQrG7mfpjAE52cfMo5JiCYG1SZYK9wqzZC7gjHr6Zh1dgOOvEuIKdhAMKSBiGg==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [x64]
|
||||
os: [win32]
|
||||
|
||||
'@tauri-apps/cli@2.0.0-rc.10':
|
||||
resolution: {integrity: sha512-mnoMyeD65DoVWzrLiLRW8Ns5Aktn9Ua7eKTOUEPq+r+1sQtWKxfnYTBEbEWnivduLhJCEDqGP5tyJaPcVXcEzA==}
|
||||
'@tauri-apps/cli@2.0.0-rc.11':
|
||||
resolution: {integrity: sha512-99ZuBF9AsB6dPa3je4wRLFAq9PJljHrlb5gcKqlklCpZP4F/GgQl8GaxtZurL/2Vwab7JBYRRyysV0bi7TlrOg==}
|
||||
engines: {node: '>= 10'}
|
||||
hasBin: true
|
||||
|
||||
@@ -2774,9 +2774,9 @@ snapshots:
|
||||
- encoding
|
||||
- mocha
|
||||
|
||||
'@covector/assemble@0.12.0(mocha@10.7.3)':
|
||||
'@covector/assemble@0.12.0':
|
||||
dependencies:
|
||||
'@covector/command': 0.8.0(mocha@10.7.3)
|
||||
'@covector/command': 0.8.0
|
||||
'@covector/files': 0.8.0
|
||||
effection: 2.0.8(mocha@10.7.3)
|
||||
js-yaml: 4.1.0
|
||||
@@ -2787,10 +2787,9 @@ snapshots:
|
||||
unified: 9.2.2
|
||||
transitivePeerDependencies:
|
||||
- encoding
|
||||
- mocha
|
||||
- supports-color
|
||||
|
||||
'@covector/changelog@0.12.0(mocha@10.7.3)':
|
||||
'@covector/changelog@0.12.0':
|
||||
dependencies:
|
||||
'@covector/files': 0.8.0
|
||||
effection: 2.0.8(mocha@10.7.3)
|
||||
@@ -2800,16 +2799,14 @@ snapshots:
|
||||
unified: 9.2.2
|
||||
transitivePeerDependencies:
|
||||
- encoding
|
||||
- mocha
|
||||
- supports-color
|
||||
|
||||
'@covector/command@0.8.0(mocha@10.7.3)':
|
||||
'@covector/command@0.8.0':
|
||||
dependencies:
|
||||
'@effection/process': 2.1.4(mocha@10.7.3)
|
||||
'@effection/process': 2.1.4
|
||||
effection: 2.0.8(mocha@10.7.3)
|
||||
transitivePeerDependencies:
|
||||
- encoding
|
||||
- mocha
|
||||
|
||||
'@covector/files@0.8.0':
|
||||
dependencies:
|
||||
@@ -2856,8 +2853,10 @@ snapshots:
|
||||
dependencies:
|
||||
effection: 2.0.8(mocha@10.7.3)
|
||||
mocha: 10.7.3
|
||||
transitivePeerDependencies:
|
||||
- encoding
|
||||
|
||||
'@effection/process@2.1.4(mocha@10.7.3)':
|
||||
'@effection/process@2.1.4':
|
||||
dependencies:
|
||||
cross-spawn: 7.0.3
|
||||
ctrlc-windows: 2.1.0
|
||||
@@ -2865,7 +2864,6 @@ snapshots:
|
||||
shellwords: 0.1.1
|
||||
transitivePeerDependencies:
|
||||
- encoding
|
||||
- mocha
|
||||
|
||||
'@effection/stream@2.0.6':
|
||||
dependencies:
|
||||
@@ -3221,48 +3219,48 @@ snapshots:
|
||||
|
||||
'@tauri-apps/api@2.0.0-rc.4': {}
|
||||
|
||||
'@tauri-apps/cli-darwin-arm64@2.0.0-rc.10':
|
||||
'@tauri-apps/cli-darwin-arm64@2.0.0-rc.11':
|
||||
optional: true
|
||||
|
||||
'@tauri-apps/cli-darwin-x64@2.0.0-rc.10':
|
||||
'@tauri-apps/cli-darwin-x64@2.0.0-rc.11':
|
||||
optional: true
|
||||
|
||||
'@tauri-apps/cli-linux-arm-gnueabihf@2.0.0-rc.10':
|
||||
'@tauri-apps/cli-linux-arm-gnueabihf@2.0.0-rc.11':
|
||||
optional: true
|
||||
|
||||
'@tauri-apps/cli-linux-arm64-gnu@2.0.0-rc.10':
|
||||
'@tauri-apps/cli-linux-arm64-gnu@2.0.0-rc.11':
|
||||
optional: true
|
||||
|
||||
'@tauri-apps/cli-linux-arm64-musl@2.0.0-rc.10':
|
||||
'@tauri-apps/cli-linux-arm64-musl@2.0.0-rc.11':
|
||||
optional: true
|
||||
|
||||
'@tauri-apps/cli-linux-x64-gnu@2.0.0-rc.10':
|
||||
'@tauri-apps/cli-linux-x64-gnu@2.0.0-rc.11':
|
||||
optional: true
|
||||
|
||||
'@tauri-apps/cli-linux-x64-musl@2.0.0-rc.10':
|
||||
'@tauri-apps/cli-linux-x64-musl@2.0.0-rc.11':
|
||||
optional: true
|
||||
|
||||
'@tauri-apps/cli-win32-arm64-msvc@2.0.0-rc.10':
|
||||
'@tauri-apps/cli-win32-arm64-msvc@2.0.0-rc.11':
|
||||
optional: true
|
||||
|
||||
'@tauri-apps/cli-win32-ia32-msvc@2.0.0-rc.10':
|
||||
'@tauri-apps/cli-win32-ia32-msvc@2.0.0-rc.11':
|
||||
optional: true
|
||||
|
||||
'@tauri-apps/cli-win32-x64-msvc@2.0.0-rc.10':
|
||||
'@tauri-apps/cli-win32-x64-msvc@2.0.0-rc.11':
|
||||
optional: true
|
||||
|
||||
'@tauri-apps/cli@2.0.0-rc.10':
|
||||
'@tauri-apps/cli@2.0.0-rc.11':
|
||||
optionalDependencies:
|
||||
'@tauri-apps/cli-darwin-arm64': 2.0.0-rc.10
|
||||
'@tauri-apps/cli-darwin-x64': 2.0.0-rc.10
|
||||
'@tauri-apps/cli-linux-arm-gnueabihf': 2.0.0-rc.10
|
||||
'@tauri-apps/cli-linux-arm64-gnu': 2.0.0-rc.10
|
||||
'@tauri-apps/cli-linux-arm64-musl': 2.0.0-rc.10
|
||||
'@tauri-apps/cli-linux-x64-gnu': 2.0.0-rc.10
|
||||
'@tauri-apps/cli-linux-x64-musl': 2.0.0-rc.10
|
||||
'@tauri-apps/cli-win32-arm64-msvc': 2.0.0-rc.10
|
||||
'@tauri-apps/cli-win32-ia32-msvc': 2.0.0-rc.10
|
||||
'@tauri-apps/cli-win32-x64-msvc': 2.0.0-rc.10
|
||||
'@tauri-apps/cli-darwin-arm64': 2.0.0-rc.11
|
||||
'@tauri-apps/cli-darwin-x64': 2.0.0-rc.11
|
||||
'@tauri-apps/cli-linux-arm-gnueabihf': 2.0.0-rc.11
|
||||
'@tauri-apps/cli-linux-arm64-gnu': 2.0.0-rc.11
|
||||
'@tauri-apps/cli-linux-arm64-musl': 2.0.0-rc.11
|
||||
'@tauri-apps/cli-linux-x64-gnu': 2.0.0-rc.11
|
||||
'@tauri-apps/cli-linux-x64-musl': 2.0.0-rc.11
|
||||
'@tauri-apps/cli-win32-arm64-msvc': 2.0.0-rc.11
|
||||
'@tauri-apps/cli-win32-ia32-msvc': 2.0.0-rc.11
|
||||
'@tauri-apps/cli-win32-x64-msvc': 2.0.0-rc.11
|
||||
|
||||
'@types/eslint@9.6.0':
|
||||
dependencies:
|
||||
@@ -3707,9 +3705,9 @@ snapshots:
|
||||
dependencies:
|
||||
'@clack/prompts': 0.7.0
|
||||
'@covector/apply': 0.10.0(mocha@10.7.3)
|
||||
'@covector/assemble': 0.12.0(mocha@10.7.3)
|
||||
'@covector/changelog': 0.12.0(mocha@10.7.3)
|
||||
'@covector/command': 0.8.0(mocha@10.7.3)
|
||||
'@covector/assemble': 0.12.0
|
||||
'@covector/changelog': 0.12.0
|
||||
'@covector/command': 0.8.0
|
||||
'@covector/files': 0.8.0
|
||||
effection: 2.0.8(mocha@10.7.3)
|
||||
globby: 11.1.0
|
||||
|
||||
Reference in New Issue
Block a user