diff --git a/package-lock.json b/package-lock.json index 568f429..c44fc1b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1881,6 +1881,28 @@ "node": ">= 10" } }, + "node_modules/@tauri-apps/plugin-fs": { + "version": "2.0.0-beta.3", + "resolved": "https://registry.npmjs.org/@tauri-apps/plugin-fs/-/plugin-fs-2.0.0-beta.3.tgz", + "integrity": "sha512-LBgA7S10NwcitHaugIfmCSkewz45vSz1VOpMHhzvE38i1r1KpuTSHlr3MZ0LLq93tH/lvhYZ+3LAml4Sriwthw==", + "dependencies": { + "@tauri-apps/api": "2.0.0-beta.11" + } + }, + "node_modules/@tauri-apps/plugin-fs/node_modules/@tauri-apps/api": { + "version": "2.0.0-beta.11", + "resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-2.0.0-beta.11.tgz", + "integrity": "sha512-wJRY+fBUm3KpqZDHMIz5HRv+1vlnvRJ/dFxiyY3NlINTx2qXqDou5qWYcP1CuZXsd39InWVPV3FAZvno/kGCkA==", + "engines": { + "node": ">= 18", + "npm": ">= 6.6.0", + "yarn": ">= 1.19.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/tauri" + } + }, "node_modules/@types/babel__core": { "version": "7.20.5", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", @@ -5389,6 +5411,28 @@ "node": ">=14.0.0" } }, + "node_modules/tauri-plugin-fs-watch-api": { + "version": "0.0.0", + "resolved": "git+ssh://git@github.com/tauri-apps/tauri-plugin-fs-watch.git#1b5db098baee370c039ed12c8c43b0ab03314e03", + "license": "MIT or APACHE-2.0", + "dependencies": { + "@tauri-apps/api": "1.5.3" + } + }, + "node_modules/tauri-plugin-fs-watch-api/node_modules/@tauri-apps/api": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-1.5.3.tgz", + "integrity": "sha512-zxnDjHHKjOsrIzZm6nO5Xapb/BxqUq1tc7cGkFXsFkGTsSWgCPH1D8mm0XS9weJY2OaR73I3k3S+b7eSzJDfqA==", + "engines": { + "node": ">= 14.6.0", + "npm": ">= 6.6.0", + "yarn": ">= 1.19.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/tauri" + } + }, "node_modules/test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", @@ -5911,7 +5955,9 @@ "version": "0.0.0", "dependencies": { "@tauri-apps/api": "^1", + "@tauri-apps/plugin-fs": "^2.0.0-beta.3", "luxon": "^3.4.2", + "tauri-plugin-fs-watch-api": "github:tauri-apps/tauri-plugin-fs-watch#v1", "vue": "^3.4.21" }, "devDependencies": { diff --git a/packages/app/package.json b/packages/app/package.json index a3f2595..172938a 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -14,6 +14,7 @@ "dependencies": { "@tauri-apps/api": "^1", "luxon": "^3.4.2", + "tauri-plugin-fs-watch-api": "github:tauri-apps/tauri-plugin-fs-watch#v1", "vue": "^3.4.21" }, "devDependencies": { diff --git a/packages/app/src-tauri/Cargo.lock b/packages/app/src-tauri/Cargo.lock index d3b4713..522342e 100644 --- a/packages/app/src-tauri/Cargo.lock +++ b/packages/app/src-tauri/Cargo.lock @@ -731,6 +731,15 @@ dependencies = [ "percent-encoding", ] +[[package]] +name = "fsevent-sys" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76ee7a02da4d231650c7cea31349b889be2f45ddb3ef3032d2ec8185f6313fd2" +dependencies = [ + "libc", +] + [[package]] name = "futf" version = "0.1.5" @@ -1294,6 +1303,26 @@ dependencies = [ "cfb", ] +[[package]] +name = "inotify" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8069d3ec154eb856955c1c0fbffefbf5f3c40a104ec912d4797314c1801abff" +dependencies = [ + "bitflags 1.3.2", + "inotify-sys", + "libc", +] + +[[package]] +name = "inotify-sys" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb" +dependencies = [ + "libc", +] + [[package]] name = "instant" version = "0.1.12" @@ -1379,6 +1408,26 @@ dependencies = [ "treediff", ] +[[package]] +name = "kqueue" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7447f1ca1b7b563588a205fe93dea8df60fd981423a768bc1c0ded35ed147d0c" +dependencies = [ + "kqueue-sys", + "libc", +] + +[[package]] +name = "kqueue-sys" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed9625ffda8729b85e45cf04090035ac368927b8cebc34898e7c120f52e4838b" +dependencies = [ + "bitflags 1.3.2", + "libc", +] + [[package]] name = "kuchikiki" version = "0.8.2" @@ -1526,6 +1575,18 @@ dependencies = [ "simd-adler32", ] +[[package]] +name = "mio" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" +dependencies = [ + "libc", + "log", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys 0.48.0", +] + [[package]] name = "ndk" version = "0.6.0" @@ -1566,6 +1627,38 @@ version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" +[[package]] +name = "notify" +version = "6.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6205bd8bb1e454ad2e27422015fb5e4f2bcc7e08fa8f27058670d208324a4d2d" +dependencies = [ + "bitflags 2.5.0", + "crossbeam-channel", + "filetime", + "fsevent-sys", + "inotify", + "kqueue", + "libc", + "log", + "mio", + "serde", + "walkdir", + "windows-sys 0.48.0", +] + +[[package]] +name = "notify-debouncer-mini" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d40b221972a1fc5ef4d858a2f671fb34c75983eb385463dff3780eeff6a9d43" +dependencies = [ + "crossbeam-channel", + "log", + "notify", + "serde", +] + [[package]] name = "nu-ansi-term" version = "0.46.0" @@ -2670,6 +2763,7 @@ dependencies = [ "serde_json", "tauri", "tauri-build", + "tauri-plugin-fs-watch", ] [[package]] @@ -2731,6 +2825,20 @@ dependencies = [ "tauri-utils", ] +[[package]] +name = "tauri-plugin-fs-watch" +version = "0.0.0" +source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v1#5e3900e682e13f3759b439116ae2f77a6d389ca2" +dependencies = [ + "log", + "notify", + "notify-debouncer-mini", + "serde", + "serde_json", + "tauri", + "thiserror", +] + [[package]] name = "tauri-runtime" version = "0.14.2" diff --git a/packages/app/src-tauri/Cargo.toml b/packages/app/src-tauri/Cargo.toml index 22e16a1..309b980 100644 --- a/packages/app/src-tauri/Cargo.toml +++ b/packages/app/src-tauri/Cargo.toml @@ -11,9 +11,10 @@ edition = "2021" tauri-build = { version = "1", features = [] } [dependencies] -tauri = { version = "1", features = ["shell-open"] } serde = { version = "1", features = ["derive"] } serde_json = "1" +tauri = { version = "1", features = ["shell-open"] } +tauri-plugin-fs-watch = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v1" } [features] # This feature is used for production builds or when a dev server is not specified, DO NOT REMOVE!! diff --git a/packages/app/src-tauri/src/main.rs b/packages/app/src-tauri/src/main.rs index 523550d..3292e63 100644 --- a/packages/app/src-tauri/src/main.rs +++ b/packages/app/src-tauri/src/main.rs @@ -9,6 +9,7 @@ fn greet(name: &str) -> String { fn main() { tauri::Builder::default() + .plugin(tauri_plugin_fs_watch::init()) .invoke_handler(tauri::generate_handler![greet]) .run(tauri::generate_context!()) .expect("error while running tauri application");