diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 0cb552a4..94eab453 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -9,6 +9,10 @@ on: - master workflow_dispatch: +env: + RUST_BACKTRACE: 1 + CARGO_PROFILE_DEV_DEBUG: 0 # This would add unnecessary bloat to the target folder, decreasing cache efficiency. + jobs: commitlint: runs-on: ubuntu-latest @@ -56,7 +60,7 @@ jobs: - name: Run Prettier run: pnpm format:check clippy: - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 with: @@ -69,10 +73,7 @@ jobs: - name: Install tauri specific dependencies run: | sudo apt-get update - sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev librsvg2-dev - - - name: Setup Node & PNPM - uses: ./.github/actions/setup-node-pnpm + sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf - uses: dtolnay/rust-toolchain@stable with: @@ -82,4 +83,4 @@ jobs: uses: swatinem/rust-cache@v2 - name: Run Clippy - run: pnpm rust:lint + run: cargo clippy diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 9a121635..3434a4db 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -15,7 +15,15 @@ jobs: strategy: fail-fast: false matrix: - platform: [macos-latest, ubuntu-20.04, windows-latest] + include: + - platform: "macos-latest" # for Arm based macs (M1 and above). + args: "--target aarch64-apple-darwin" + - platform: "macos-latest" # for Intel based macs. + args: "--target x86_64-apple-darwin" + - platform: "ubuntu-22.04" + args: "" + - platform: "windows-latest" + args: "" runs-on: ${{ matrix.platform }} steps: @@ -35,13 +43,15 @@ jobs: path: apps/meta-x - name: Install dependencies (ubuntu only) - if: matrix.platform == 'ubuntu-20.04' + if: matrix.platform == 'ubuntu-22.04' run: | sudo apt-get update - sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev librsvg2-dev + sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf - name: Install Rust stable uses: dtolnay/rust-toolchain@stable + with: + targets: ${{ matrix.platform == 'macos-latest' && 'aarch64-apple-darwin,x86_64-apple-darwin' || '' }} - name: Rust cache uses: swatinem/rust-cache@v2 @@ -79,4 +89,4 @@ jobs: releaseId: ${{ github.event.release.id || github.event.inputs.release-id }} projectPath: ./apps/core tauriScript: pnpm tauri - args: --config src-tauri/tauri.conf.sidecar.json --features metax + args: --config src-tauri/tauri.conf.sidecar.json --features metax ${{ matrix.args }} diff --git a/.github/workflows/test-tauri.yml b/.github/workflows/test-tauri.yml index 0f08265a..c4bee24f 100644 --- a/.github/workflows/test-tauri.yml +++ b/.github/workflows/test-tauri.yml @@ -19,12 +19,24 @@ on: - "package.json" workflow_dispatch: +env: + RUST_BACKTRACE: 1 + CARGO_PROFILE_DEV_DEBUG: 0 # This would add unnecessary bloat to the target folder, decreasing cache efficiency. + jobs: test-tauri: strategy: fail-fast: false matrix: - platform: [macos-latest, ubuntu-20.04, windows-latest] + include: + - platform: "macos-latest" # for Arm based macs (M1 and above). + args: "--target aarch64-apple-darwin" + - platform: "macos-latest" # for Intel based macs. + args: "--target x86_64-apple-darwin" + - platform: "ubuntu-22.04" + args: "" + - platform: "windows-latest" + args: "" runs-on: ${{ matrix.platform }} steps: @@ -37,13 +49,15 @@ jobs: .github/actions - name: install dependencies (ubuntu only) - if: matrix.platform == 'ubuntu-20.04' + if: matrix.platform == 'ubuntu-22.04' run: | sudo apt-get update - sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev librsvg2-dev + sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf - name: install Rust stable uses: dtolnay/rust-toolchain@stable + with: + targets: ${{ matrix.platform == 'macos-latest' && 'aarch64-apple-darwin,x86_64-apple-darwin' || '' }} - name: Rust cache uses: swatinem/rust-cache@v2 diff --git a/.gitignore b/.gitignore index 0283f596..e6d43942 100644 --- a/.gitignore +++ b/.gitignore @@ -35,4 +35,5 @@ next-env.d.ts *.db /**/target **/bin/ -**/dist \ No newline at end of file +**/dist +gen \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock index 7b3b1532..f76bdd3f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -147,24 +147,148 @@ checksum = "0952808a6c2afd1aa8947271f3a60f1a6763c7b912d210184c5149b5cf147247" [[package]] name = "arboard" -version = "3.3.2" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2041f1943049c7978768d84e6d0fd95de98b76d6c4727b09e78ec253d29fa58" +checksum = "9fb4009533e8ff8f1450a5bcbc30f4242a1d34442221f72314bea1f5dc9c7f89" dependencies = [ "clipboard-win", - "core-graphics 0.23.2", - "image", + "core-graphics", + "image 0.25.1", "log", - "objc", - "objc-foundation", - "objc_id", + "objc2", + "objc2-app-kit", + "objc2-foundation", "parking_lot 0.12.1", - "thiserror", "windows-sys 0.48.0", - "wl-clipboard-rs", "x11rb", ] +[[package]] +name = "ashpd" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd884d7c72877a94102c3715f3b1cd09ff4fac28221add3e57cfbe25c236d093" +dependencies = [ + "enumflags2", + "futures-channel", + "futures-util", + "rand 0.8.5", + "serde", + "serde_repr", + "tokio", + "url", + "zbus", +] + +[[package]] +name = "async-broadcast" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "258b52a1aa741b9f09783b2d86cf0aeeb617bbf847f6933340a39644227acbdb" +dependencies = [ + "event-listener 5.3.0", + "event-listener-strategy 0.5.2", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-channel" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" +dependencies = [ + "concurrent-queue", + "event-listener-strategy 0.5.2", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-io" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcccb0f599cfa2f8ace422d3555572f47424da5648a4382a9dd0310ff8210884" +dependencies = [ + "async-lock", + "cfg-if", + "concurrent-queue", + "futures-io", + "futures-lite", + "parking", + "polling", + "rustix", + "slab", + "tracing", + "windows-sys 0.52.0", +] + +[[package]] +name = "async-lock" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d034b430882f8381900d3fe6f0aaa3ad94f2cb4ac519b429692a1bc2dda4ae7b" +dependencies = [ + "event-listener 4.0.3", + "event-listener-strategy 0.4.0", + "pin-project-lite", +] + +[[package]] +name = "async-process" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a53fc6301894e04a92cb2584fedde80cb25ba8e02d9dc39d4a87d036e22f397d" +dependencies = [ + "async-channel", + "async-io", + "async-lock", + "async-signal", + "async-task", + "blocking", + "cfg-if", + "event-listener 5.3.0", + "futures-lite", + "rustix", + "tracing", + "windows-sys 0.52.0", +] + +[[package]] +name = "async-recursion" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.66", +] + +[[package]] +name = "async-signal" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afe66191c335039c7bb78f99dc7520b0cbb166b3a1cb33a03f53d8a1c6f2afda" +dependencies = [ + "async-io", + "async-lock", + "atomic-waker", + "cfg-if", + "futures-core", + "futures-io", + "rustix", + "signal-hook-registry", + "slab", + "windows-sys 0.52.0", +] + +[[package]] +name = "async-task" +version = "4.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" + [[package]] name = "async-trait" version = "0.1.80" @@ -173,31 +297,30 @@ checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] name = "atk" -version = "0.15.1" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c3d816ce6f0e2909a96830d6911c2aff044370b1ef92d7f267b43bae5addedd" +checksum = "b4af014b17dd80e8af9fa689b2d4a211ddba6eb583c1622f35d0cb543f6b17e4" dependencies = [ "atk-sys", - "bitflags 1.3.2", "glib", "libc", ] [[package]] name = "atk-sys" -version = "0.15.1" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58aeb089fb698e06db8089971c7ee317ab9644bade33383f63631437b03aafb6" +checksum = "251e0b7d90e33e0ba930891a505a9a35ece37b2dd37a14f3ffc306c13b980009" dependencies = [ "glib-sys", "gobject-sys", "libc", - "system-deps 6.2.2", + "system-deps", ] [[package]] @@ -209,6 +332,12 @@ dependencies = [ "num-traits", ] +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + [[package]] name = "autocfg" version = "1.2.0" @@ -242,12 +371,24 @@ version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + [[package]] name = "base64ct" version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" +[[package]] +name = "bit_field" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc827186963e592360843fb5ba4b973e145841266c1357f7180c43526f2e5b61" + [[package]] name = "bitflags" version = "1.3.2" @@ -259,6 +400,9 @@ name = "bitflags" version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" +dependencies = [ + "serde", +] [[package]] name = "block" @@ -275,6 +419,28 @@ dependencies = [ "generic-array", ] +[[package]] +name = "block2" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" +dependencies = [ + "objc2", +] + +[[package]] +name = "blocking" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" +dependencies = [ + "async-channel", + "async-task", + "futures-io", + "futures-lite", + "piper", +] + [[package]] name = "brotli" version = "3.5.0" @@ -296,16 +462,6 @@ dependencies = [ "alloc-stdlib", ] -[[package]] -name = "bstr" -version = "1.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05efc5cfd9110c8416e471df0e96702d58690178e206e61b7173706673c93706" -dependencies = [ - "memchr", - "serde", -] - [[package]] name = "bumpalo" version = "3.15.4" @@ -329,39 +485,75 @@ name = "bytes" version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" +dependencies = [ + "serde", +] [[package]] name = "cairo-rs" -version = "0.15.12" +version = "0.18.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c76ee391b03d35510d9fa917357c7f1855bd9a6659c95a1b392e33f49b3369bc" +checksum = "8ca26ef0159422fb77631dc9d17b102f253b876fe1586b03b803e63a309b4ee2" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.5.0", "cairo-sys-rs", "glib", "libc", + "once_cell", "thiserror", ] [[package]] name = "cairo-sys-rs" -version = "0.15.1" +version = "0.18.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c55d429bef56ac9172d25fecb85dc8068307d17acd74b377866b7a1ef25d3c8" +checksum = "685c9fa8e590b8b3d678873528d83411db17242a73fccaed827770ea0fedda51" dependencies = [ "glib-sys", "libc", - "system-deps 6.2.2", + "system-deps", +] + +[[package]] +name = "camino" +version = "1.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0ec6b951b160caa93cc0c7b209e5a3bff7aae9062213451ac99493cd844c239" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo-platform" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo_metadata" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" +dependencies = [ + "camino", + "cargo-platform", + "semver", + "serde", + "serde_json", + "thiserror", ] [[package]] name = "cargo_toml" -version = "0.15.3" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "599aa35200ffff8f04c1925aa1acc92fa2e08874379ef42e210a80e527e60838" +checksum = "8a969e13a7589e9e3e4207e153bae624ade2b5622fb4684a4923b23ec3d57719" dependencies = [ "serde", - "toml 0.7.8", + "toml 0.8.2", ] [[package]] @@ -387,15 +579,6 @@ dependencies = [ "uuid", ] -[[package]] -name = "cfg-expr" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3431df59f28accaf4cb4eed4a9acc66bea3f3c3753aa6cdc2f024174ef232af7" -dependencies = [ - "smallvec", -] - [[package]] name = "cfg-expr" version = "0.15.7" @@ -414,9 +597,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "cfg_aliases" -version = "0.1.1" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "chrono" @@ -430,7 +613,7 @@ dependencies = [ "num-traits", "serde", "wasm-bindgen", - "windows-targets 0.52.4", + "windows-targets 0.52.5", ] [[package]] @@ -464,7 +647,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] @@ -475,25 +658,25 @@ checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" [[package]] name = "clipboard-win" -version = "5.3.0" +version = "5.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d517d4b86184dbb111d3556a10f1c8a04da7428d2987bf1081602bf11c3aa9ee" +checksum = "79f4473f5144e20d9aceaf2972478f06ddf687831eafeeb434fbaf0acc4144ad" dependencies = [ "error-code", ] [[package]] name = "cocoa" -version = "0.24.1" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f425db7937052c684daec3bd6375c8abe2d146dca4b8b143d6db777c39138f3a" +checksum = "f6140449f97a6e97f9511815c5632d84c8aacf8ac271ad77c559218161a1373c" dependencies = [ "bitflags 1.3.2", "block", "cocoa-foundation", "core-foundation", - "core-graphics 0.22.3", - "foreign-types 0.3.2", + "core-graphics", + "foreign-types 0.5.0", "libc", "objc", ] @@ -534,6 +717,15 @@ dependencies = [ "memchr", ] +[[package]] +name = "concurrent-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +dependencies = [ + "crossbeam-utils", +] + [[package]] name = "const-oid" version = "0.7.1" @@ -562,19 +754,6 @@ version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" -[[package]] -name = "core-graphics" -version = "0.22.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2581bbab3b8ffc6fcbd550bf46c355135d16e9ff2a6ea032ad6b9bf1d7efe4fb" -dependencies = [ - "bitflags 1.3.2", - "core-foundation", - "core-graphics-types", - "foreign-types 0.3.2", - "libc", -] - [[package]] name = "core-graphics" version = "0.23.2" @@ -675,6 +854,12 @@ version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + [[package]] name = "crypto-bigint" version = "0.3.2" @@ -719,7 +904,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" dependencies = [ "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] @@ -729,7 +914,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ad291aa74992b9b7a7e88c38acbbf6ad7e107f1d90ee8775b7bc1fc3394f485c" dependencies = [ "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] @@ -753,7 +938,7 @@ dependencies = [ "proc-macro2", "quote", "strsim 0.10.0", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] @@ -764,7 +949,7 @@ checksum = "a668eda54683121533a393014d8692171709ff57a7d61f187b6e782719f8933f" dependencies = [ "darling_core", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] @@ -789,14 +974,14 @@ dependencies = [ ] [[package]] -name = "derive-new" -version = "0.6.0" +name = "derivative" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d150dea618e920167e5973d70ae6ece4385b7164e0d799fe7c122dd0a5d912ad" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 1.0.109", ] [[package]] @@ -876,16 +1061,30 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" dependencies = [ - "libloading", + "libloading 0.8.3", ] [[package]] -name = "document-features" -version = "0.2.8" +name = "dlopen2" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1297103d2bbaea85724fcee6294c2d50b1081f9ad47d0f6f6f61eda65315a6" +dependencies = [ + "dlopen2_derive", + "libc", + "once_cell", + "winapi", +] + +[[package]] +name = "dlopen2_derive" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef5282ad69563b5fc40319526ba27e0e7363d552a896f0297d54f767717f9b95" +checksum = "f2b99bf03862d7f545ebc28ddd33a665b50865f4dfd84031a393823879bd4c54" dependencies = [ - "litrs", + "proc-macro2", + "quote", + "syn 2.0.66", ] [[package]] @@ -895,10 +1094,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" [[package]] -name = "downcast-rs" -version = "1.2.1" +name = "dpi" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" +checksum = "f25c0e292a7ca6d6498557ff1df68f32c99850012b6ea401cf8daf771f22ff53" +dependencies = [ + "serde", +] [[package]] name = "dtoa" @@ -921,6 +1123,12 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b" +[[package]] +name = "dyn-clone" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" + [[package]] name = "either" version = "1.10.0" @@ -936,7 +1144,7 @@ dependencies = [ "cc", "memchr", "rustc_version", - "toml 0.8.12", + "toml 0.8.2", "vswhom", "winreg", ] @@ -949,13 +1157,40 @@ checksum = "4ef6b89e5b37196644d8796de5268852ff179b44e96276cf4290264843743bb7" [[package]] name = "encoding_rs" -version = "0.8.33" +version = "0.8.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" +checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" dependencies = [ "cfg-if", ] +[[package]] +name = "endi" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf" + +[[package]] +name = "enumflags2" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3278c9d5fb675e0a51dabcf4c0d355f692b064171535ba72361be1528a9d8e8d" +dependencies = [ + "enumflags2_derive", + "serde", +] + +[[package]] +name = "enumflags2_derive" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c785274071b1b420972453b306eeca06acf4633829db4223b58a2a8c5953bc4" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.66", +] + [[package]] name = "equivalent" version = "1.0.1" @@ -985,53 +1220,93 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" [[package]] -name = "fastrand" -version = "2.0.2" +name = "event-listener" +version = "4.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "658bd65b1cf4c852a3cc96f18a8ce7b5640f6b703f905c7d74532294c2a63984" +checksum = "67b215c49b2b248c855fb73579eb1f4f26c38ffdc12973e20e07b91d78d5646e" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] [[package]] -name = "fdeflate" -version = "0.3.4" +name = "event-listener" +version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f9bfee30e4dedf0ab8b422f03af778d9612b63f502710fc500a334ebe2de645" +checksum = "6d9944b8ca13534cdfb2800775f8dd4902ff3fc75a50101466decadfdf322a24" dependencies = [ - "simd-adler32", + "concurrent-queue", + "parking", + "pin-project-lite", ] [[package]] -name = "field-offset" -version = "0.3.6" +name = "event-listener-strategy" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f" +checksum = "958e4d70b6d5e81971bebec42271ec641e7ff4e170a6fa605f2b8a8b65cb97d3" dependencies = [ - "memoffset", - "rustc_version", + "event-listener 4.0.3", + "pin-project-lite", ] [[package]] -name = "filetime" -version = "0.2.23" +name = "event-listener-strategy" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd" +checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1" dependencies = [ - "cfg-if", - "libc", - "redox_syscall 0.4.1", - "windows-sys 0.52.0", + "event-listener 5.3.0", + "pin-project-lite", ] [[package]] -name = "finl_unicode" -version = "1.2.0" +name = "exr" +version = "1.72.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fcfdc7a0362c9f4444381a9e697c79d435fe65b52a37466fc2c1184cee9edc6" - +checksum = "887d93f60543e9a9362ef8a21beedd0a833c5d9610e18c67abe15a5963dcb1a4" +dependencies = [ + "bit_field", + "flume 0.11.0", + "half", + "lebe", + "miniz_oxide", + "rayon-core", + "smallvec", + "zune-inflate", +] + [[package]] -name = "fixedbitset" -version = "0.4.2" +name = "fastrand" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "658bd65b1cf4c852a3cc96f18a8ce7b5640f6b703f905c7d74532294c2a63984" + +[[package]] +name = "fdeflate" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f9bfee30e4dedf0ab8b422f03af778d9612b63f502710fc500a334ebe2de645" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "field-offset" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f" +dependencies = [ + "memoffset", + "rustc_version", +] + +[[package]] +name = "finl_unicode" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" +checksum = "8fcfdc7a0362c9f4444381a9e697c79d435fe65b52a37466fc2c1184cee9edc6" [[package]] name = "flate2" @@ -1055,6 +1330,15 @@ dependencies = [ "spin 0.9.8", ] +[[package]] +name = "flume" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55ac459de2512911e4b674ce33cf20befaba382d05b62b008afc1c8b57cbf181" +dependencies = [ + "spin 0.9.8", +] + [[package]] name = "fnv" version = "1.0.7" @@ -1088,7 +1372,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] @@ -1166,6 +1450,19 @@ version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" +[[package]] +name = "futures-lite" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5" +dependencies = [ + "fastrand", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", +] + [[package]] name = "futures-macro" version = "0.3.30" @@ -1174,7 +1471,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] @@ -1196,9 +1493,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" dependencies = [ "futures-core", + "futures-io", "futures-macro", "futures-sink", "futures-task", + "memchr", "pin-project-lite", "pin-utils", "slab", @@ -1215,11 +1514,10 @@ dependencies = [ [[package]] name = "gdk" -version = "0.15.4" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6e05c1f572ab0e1f15be94217f0dc29088c248b14f792a5ff0af0d84bcda9e8" +checksum = "f5ba081bdef3b75ebcdbfc953699ed2d7417d6bd853347a42a37d76406a33646" dependencies = [ - "bitflags 1.3.2", "cairo-rs", "gdk-pixbuf", "gdk-sys", @@ -1231,35 +1529,35 @@ dependencies = [ [[package]] name = "gdk-pixbuf" -version = "0.15.11" +version = "0.18.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad38dd9cc8b099cceecdf41375bb6d481b1b5a7cd5cd603e10a69a9383f8619a" +checksum = "50e1f5f1b0bfb830d6ccc8066d18db35c487b1b2b1e8589b5dfe9f07e8defaec" dependencies = [ - "bitflags 1.3.2", "gdk-pixbuf-sys", "gio", "glib", "libc", + "once_cell", ] [[package]] name = "gdk-pixbuf-sys" -version = "0.15.10" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "140b2f5378256527150350a8346dbdb08fadc13453a7a2d73aecd5fab3c402a7" +checksum = "3f9839ea644ed9c97a34d129ad56d38a25e6756f99f3a88e15cd39c20629caf7" dependencies = [ "gio-sys", "glib-sys", "gobject-sys", "libc", - "system-deps 6.2.2", + "system-deps", ] [[package]] name = "gdk-sys" -version = "0.15.1" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32e7a08c1e8f06f4177fb7e51a777b8c1689f743a7bc11ea91d44d2226073a88" +checksum = "31ff856cb3386dae1703a920f803abafcc580e9b5f711ca62ed1620c25b51ff2" dependencies = [ "cairo-sys-rs", "gdk-pixbuf-sys", @@ -1269,33 +1567,47 @@ dependencies = [ "libc", "pango-sys", "pkg-config", - "system-deps 6.2.2", + "system-deps", ] [[package]] name = "gdkwayland-sys" -version = "0.15.3" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cca49a59ad8cfdf36ef7330fe7bdfbe1d34323220cc16a0de2679ee773aee2c2" +checksum = "a90fbf5c033c65d93792192a49a8efb5bb1e640c419682a58bb96f5ae77f3d4a" dependencies = [ "gdk-sys", "glib-sys", "gobject-sys", "libc", "pkg-config", - "system-deps 6.2.2", + "system-deps", +] + +[[package]] +name = "gdkx11" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2ea8a4909d530f79921290389cbd7c34cb9d623bfe970eaae65ca5f9cd9cce" +dependencies = [ + "gdk", + "gdkx11-sys", + "gio", + "glib", + "libc", + "x11", ] [[package]] name = "gdkx11-sys" -version = "0.15.1" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4b7f8c7a84b407aa9b143877e267e848ff34106578b64d1e0a24bf550716178" +checksum = "fee8f00f4ee46cad2939b8990f5c70c94ff882c3028f3cc5abf950fa4ab53043" dependencies = [ "gdk-sys", "glib-sys", "libc", - "system-deps 6.2.2", + "system-deps", "x11", ] @@ -1354,6 +1666,16 @@ dependencies = [ "wasi 0.11.0+wasi-snapshot-preview1", ] +[[package]] +name = "gif" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fb2d69b19215e18bb912fa30f7ce15846e301408695e44e0ef719f1da9e19f2" +dependencies = [ + "color_quant", + "weezl", +] + [[package]] name = "gimli" version = "0.28.1" @@ -1362,49 +1684,54 @@ checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" [[package]] name = "gio" -version = "0.15.12" +version = "0.18.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68fdbc90312d462781a395f7a16d96a2b379bb6ef8cd6310a2df272771c4283b" +checksum = "d4fc8f532f87b79cbc51a79748f16a6828fb784be93145a322fa14d06d354c73" dependencies = [ - "bitflags 1.3.2", "futures-channel", "futures-core", "futures-io", + "futures-util", "gio-sys", "glib", "libc", "once_cell", + "pin-project-lite", + "smallvec", "thiserror", ] [[package]] name = "gio-sys" -version = "0.15.10" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32157a475271e2c4a023382e9cab31c4584ee30a97da41d3c4e9fdd605abcf8d" +checksum = "37566df850baf5e4cb0dfb78af2e4b9898d817ed9263d1090a2df958c64737d2" dependencies = [ "glib-sys", "gobject-sys", "libc", - "system-deps 6.2.2", + "system-deps", "winapi", ] [[package]] name = "glib" -version = "0.15.12" +version = "0.18.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edb0306fbad0ab5428b0ca674a23893db909a98582969c9b537be4ced78c505d" +checksum = "233daaf6e83ae6a12a52055f568f9d7cf4671dabb78ff9560ab6da230ce00ee5" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.5.0", "futures-channel", "futures-core", "futures-executor", "futures-task", + "futures-util", + "gio-sys", "glib-macros", "glib-sys", "gobject-sys", "libc", + "memchr", "once_cell", "smallvec", "thiserror", @@ -1412,27 +1739,26 @@ dependencies = [ [[package]] name = "glib-macros" -version = "0.15.13" +version = "0.18.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10c6ae9f6fa26f4fb2ac16b528d138d971ead56141de489f8111e259b9df3c4a" +checksum = "0bb0228f477c0900c880fd78c8759b95c7636dbd7842707f49e132378aa2acdc" dependencies = [ - "anyhow", "heck 0.4.1", - "proc-macro-crate", + "proc-macro-crate 2.0.2", "proc-macro-error", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.66", ] [[package]] name = "glib-sys" -version = "0.15.10" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef4b192f8e65e9cf76cbf4ea71fa8e3be4a0e18ffe3d68b8da6836974cc5bad4" +checksum = "063ce2eb6a8d0ea93d2bf8ba1957e78dbab6be1c2220dd3daca57d5a9d869898" dependencies = [ "libc", - "system-deps 6.2.2", + "system-deps", ] [[package]] @@ -1442,37 +1768,41 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" [[package]] -name = "globset" -version = "0.4.14" +name = "global-hotkey" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57da3b9b5b85bd66f31093f8c408b90a74431672542466497dcbdfdc02034be1" +checksum = "89cb13e8c52c87e28a46eae3e5e65b8f0cd465c4c9e67b13d56c70412e792bc3" dependencies = [ - "aho-corasick", - "bstr", - "log", - "regex-automata 0.4.6", - "regex-syntax 0.8.3", + "bitflags 2.5.0", + "cocoa", + "crossbeam-channel", + "keyboard-types", + "objc", + "once_cell", + "serde", + "thiserror", + "windows-sys 0.52.0", + "x11-dl", ] [[package]] name = "gobject-sys" -version = "0.15.10" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d57ce44246becd17153bd035ab4d32cfee096a657fc01f2231c9278378d1e0a" +checksum = "0850127b514d1c4a4654ead6dedadb18198999985908e6ffe4436f53c785ce44" dependencies = [ "glib-sys", "libc", - "system-deps 6.2.2", + "system-deps", ] [[package]] name = "gtk" -version = "0.15.5" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e3004a2d5d6d8b5057d2b57b3712c9529b62e82c77f25c1fecde1fd5c23bd0" +checksum = "93c4f5e0e20b60e10631a5f06da7fe3dda744b05ad0ea71fee2f47adf865890c" dependencies = [ "atk", - "bitflags 1.3.2", "cairo-rs", "field-offset", "futures-channel", @@ -1483,16 +1813,15 @@ dependencies = [ "gtk-sys", "gtk3-macros", "libc", - "once_cell", "pango", "pkg-config", ] [[package]] name = "gtk-sys" -version = "0.15.3" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5bc2f0587cba247f60246a0ca11fe25fb733eabc3de12d1965fc07efab87c84" +checksum = "771437bf1de2c1c0b496c11505bdf748e26066bbe942dfc8f614c9460f6d7722" dependencies = [ "atk-sys", "cairo-sys-rs", @@ -1503,21 +1832,30 @@ dependencies = [ "gobject-sys", "libc", "pango-sys", - "system-deps 6.2.2", + "system-deps", ] [[package]] name = "gtk3-macros" -version = "0.15.6" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "684c0456c086e8e7e9af73ec5b84e35938df394712054550e81558d21c44ab0d" +checksum = "c6063efb63db582968fb7df72e1ae68aa6360dcfb0a75143f34fc7d616bad75e" dependencies = [ - "anyhow", - "proc-macro-crate", + "proc-macro-crate 1.3.1", "proc-macro-error", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.66", +] + +[[package]] +name = "half" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888" +dependencies = [ + "cfg-if", + "crunchy", ] [[package]] @@ -1545,15 +1883,6 @@ dependencies = [ "hashbrown 0.14.3", ] -[[package]] -name = "heck" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" -dependencies = [ - "unicode-segmentation", -] - [[package]] name = "heck" version = "0.4.1" @@ -1599,15 +1928,6 @@ dependencies = [ "digest", ] -[[package]] -name = "home" -version = "0.5.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" -dependencies = [ - "windows-sys 0.52.0", -] - [[package]] name = "html5ever" version = "0.26.0" @@ -1624,9 +1944,9 @@ dependencies = [ [[package]] name = "http" -version = "0.2.12" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" dependencies = [ "bytes", "fnv", @@ -1634,10 +1954,72 @@ dependencies = [ ] [[package]] -name = "http-range" -version = "0.1.5" +name = "http-body" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0475f8b2ac86659c21b64320d5d653f9efe42acd2a4e560073ec61a155a34f1d" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" + +[[package]] +name = "hyper" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe575dd17d0862a9a33781c8c4696a55c320909004a67a00fb286ba8b1bc496d" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http", + "http-body", + "httparse", + "itoa 1.0.11", + "pin-project-lite", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-util" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21dec9db110f5f872ed9699c3ecf50cf16f423502706ba5c72462e28d3157573" +checksum = "3d8d52be92d09acc2e01dddb7fde3ad983fc6489c7db4837e605bc3fca4cb63e" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http", + "http-body", + "hyper", + "pin-project-lite", + "socket2", + "tokio", + "tower", + "tower-service", + "tracing", +] [[package]] name = "iana-time-zone" @@ -1689,30 +2071,31 @@ dependencies = [ ] [[package]] -name = "ignore" -version = "0.4.22" +name = "image" +version = "0.24.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b46810df39e66e925525d6e38ce1e7f6e1d208f72dc39757880fcb66e2c58af1" +checksum = "5690139d2f55868e080017335e4b94cb7414274c74f1669c84fb5feba2c9f69d" dependencies = [ - "crossbeam-deque", - "globset", - "log", - "memchr", - "regex-automata 0.4.6", - "same-file", - "walkdir", - "winapi-util", + "bytemuck", + "byteorder", + "color_quant", + "exr", + "gif", + "jpeg-decoder", + "num-traits", + "png", + "qoi", + "tiff", ] [[package]] name = "image" -version = "0.24.9" +version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5690139d2f55868e080017335e4b94cb7414274c74f1669c84fb5feba2c9f69d" +checksum = "fd54d660e773627692c524beaad361aca785a4f9f5730ce91f42aabe5bce3d11" dependencies = [ "bytemuck", "byteorder", - "color_quant", "num-traits", "png", "tiff", @@ -1740,12 +2123,6 @@ dependencies = [ "serde", ] -[[package]] -name = "indoc" -version = "1.0.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa799dd5ed20a7e349f3b4639aa80d74549c81716d9ec4f994c9b5815598306" - [[package]] name = "indoc" version = "2.0.5" @@ -1754,9 +2131,9 @@ checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5" [[package]] name = "infer" -version = "0.13.0" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f551f8c3a39f68f986517db0d1759de85881894fdc7db798bd2a9df9cb04b7fc" +checksum = "cb33622da908807a06f9513c19b3c1ad50fab3e4137d82a78107d502075aa199" dependencies = [ "cfb", ] @@ -1771,12 +2148,28 @@ dependencies = [ ] [[package]] -name = "itertools" -version = "0.10.5" +name = "ipnet" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" + +[[package]] +name = "is-docker" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +checksum = "928bae27f42bc99b60d9ac7334e3a21d10ad8f1835a4e12ec3ec0464765ed1b3" dependencies = [ - "either", + "once_cell", +] + +[[package]] +name = "is-wsl" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "173609498df190136aa7dea1a91db051746d339e18476eed5ca40521f02d7aa5" +dependencies = [ + "is-docker", + "once_cell", ] [[package]] @@ -1802,9 +2195,9 @@ checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "javascriptcore-rs" -version = "0.16.0" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf053e7843f2812ff03ef5afe34bb9c06ffee120385caad4f6b9967fcd37d41c" +checksum = "ca5671e9ffce8ffba57afc24070e906da7fc4b1ba66f2cabebf61bf2ea257fcc" dependencies = [ "bitflags 1.3.2", "glib", @@ -1813,28 +2206,30 @@ dependencies = [ [[package]] name = "javascriptcore-rs-sys" -version = "0.4.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "905fbb87419c5cde6e3269537e4ea7d46431f3008c5d057e915ef3f115e7793c" +checksum = "af1be78d14ffa4b75b66df31840478fef72b51f8c2465d4ca7c194da9f7a5124" dependencies = [ "glib-sys", "gobject-sys", "libc", - "system-deps 5.0.0", + "system-deps", ] [[package]] name = "jni" -version = "0.20.0" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "039022cdf4d7b1cf548d31f60ae783138e5fd42013f6271049d7df7afadef96c" +checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" dependencies = [ "cesu8", + "cfg-if", "combine", "jni-sys", "log", "thiserror", "walkdir", + "windows-sys 0.45.0", ] [[package]] @@ -1848,6 +2243,9 @@ name = "jpeg-decoder" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f5d4a7da358eff58addd2877a45865158f0d78c911d43a5784ceb7bbf52833b0" +dependencies = [ + "rayon", +] [[package]] name = "js-sys" @@ -1870,6 +2268,17 @@ dependencies = [ "treediff", ] +[[package]] +name = "keyboard-types" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b750dcadc39a09dbadd74e118f6dd6598df77fa01df0cfcdc52c28dece74528a" +dependencies = [ + "bitflags 2.5.0", + "serde", + "unicode-segmentation", +] + [[package]] name = "kuchikiki" version = "0.8.2" @@ -1893,29 +2302,69 @@ dependencies = [ ] [[package]] -name = "libc" -version = "0.2.153" +name = "lebe" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" +checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8" [[package]] -name = "libloading" -version = "0.8.3" +name = "libappindicator" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19" +checksum = "03589b9607c868cc7ae54c0b2a22c8dc03dd41692d48f2d7df73615c6a95dc0a" dependencies = [ - "cfg-if", - "windows-targets 0.52.4", + "glib", + "gtk", + "gtk-sys", + "libappindicator-sys", + "log", ] [[package]] -name = "libm" -version = "0.2.8" +name = "libappindicator-sys" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" +checksum = "6e9ec52138abedcc58dc17a7c6c0c00a2bdb4f3427c7f63fa97fd0d859155caf" +dependencies = [ + "gtk-sys", + "libloading 0.7.4", + "once_cell", +] [[package]] -name = "libredox" +name = "libc" +version = "0.2.153" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" + +[[package]] +name = "libloading" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +dependencies = [ + "cfg-if", + "winapi", +] + +[[package]] +name = "libloading" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19" +dependencies = [ + "cfg-if", + "windows-targets 0.52.5", +] + +[[package]] +name = "libm" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" + +[[package]] +name = "libredox" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" @@ -1947,12 +2396,6 @@ version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" -[[package]] -name = "litrs" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4ce301924b7887e9d637144fdade93f9dfff9b60981d4ac161db09720d39aa5" - [[package]] name = "lock_api" version = "0.4.11" @@ -2053,6 +2496,12 @@ dependencies = [ "autocfg", ] +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + [[package]] name = "minimal-lexical" version = "0.2.1" @@ -2080,6 +2529,25 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "muda" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1717c136c99673f55640c14125a0349a5cd7fee6efcfb0adbfe4c289e3b3f7f2" +dependencies = [ + "cocoa", + "crossbeam-channel", + "dpi", + "gtk", + "keyboard-types", + "objc", + "once_cell", + "png", + "serde", + "thiserror", + "windows-sys 0.52.0", +] + [[package]] name = "native-tls" version = "0.2.11" @@ -2100,14 +2568,15 @@ dependencies = [ [[package]] name = "ndk" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2032c77e030ddee34a6787a64166008da93f6a352b629261d0fee232b8742dd4" +checksum = "451422b7e4718271c8b5b3aadf5adedba43dc76312454b387e98fae0fc951aa0" dependencies = [ "bitflags 1.3.2", "jni-sys", "ndk-sys", "num_enum", + "raw-window-handle 0.5.2", "thiserror", ] @@ -2119,9 +2588,9 @@ checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" [[package]] name = "ndk-sys" -version = "0.3.0" +version = "0.4.1+23.1.7779620" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e5a6ae77c8ee183dcbbba6150e2e6b9f3f4196a7666c02a715a95692ec1fa97" +checksum = "3cf2aae958bd232cac5069850591667ad422d263686d75b52a065f9badeee5a3" dependencies = [ "jni-sys", ] @@ -2134,14 +2603,14 @@ checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" [[package]] name = "nix" -version = "0.28.0" +version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4" +checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053" dependencies = [ "bitflags 2.5.0", "cfg-if", - "cfg_aliases", "libc", + "memoffset", ] [[package]] @@ -2259,7 +2728,7 @@ version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" dependencies = [ - "proc-macro-crate", + "proc-macro-crate 1.3.1", "proc-macro2", "quote", "syn 1.0.109", @@ -2286,6 +2755,105 @@ dependencies = [ "objc_id", ] +[[package]] +name = "objc-sys" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdb91bdd390c7ce1a8607f35f3ca7151b65afc0ff5ff3b34fa350f7d7c7e4310" + +[[package]] +name = "objc2" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46a785d4eeff09c14c487497c162e92766fbb3e4059a71840cecc03d9a50b804" +dependencies = [ + "objc-sys", + "objc2-encode", +] + +[[package]] +name = "objc2-app-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" +dependencies = [ + "bitflags 2.5.0", + "block2", + "libc", + "objc2", + "objc2-core-data", + "objc2-core-image", + "objc2-foundation", + "objc2-quartz-core", +] + +[[package]] +name = "objc2-core-data" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" +dependencies = [ + "bitflags 2.5.0", + "block2", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-image" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80" +dependencies = [ + "block2", + "objc2", + "objc2-foundation", + "objc2-metal", +] + +[[package]] +name = "objc2-encode" +version = "4.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7891e71393cd1f227313c9379a26a584ff3d7e6e7159e988851f0934c993f0f8" + +[[package]] +name = "objc2-foundation" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" +dependencies = [ + "bitflags 2.5.0", + "block2", + "libc", + "objc2", +] + +[[package]] +name = "objc2-metal" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" +dependencies = [ + "bitflags 2.5.0", + "block2", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-quartz-core" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" +dependencies = [ + "bitflags 2.5.0", + "block2", + "objc2", + "objc2-foundation", + "objc2-metal", +] + [[package]] name = "objc_exception" version = "0.1.2" @@ -2321,12 +2889,13 @@ checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "open" -version = "3.2.0" +version = "5.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2078c0039e6a54a0c42c28faa984e115fb4c2d5bf2208f77d1961002df8576f8" +checksum = "2eb49fbd5616580e9974662cb96a3463da4476e649a7e4b258df0de065db0657" dependencies = [ + "is-wsl", + "libc", "pathdiff", - "windows-sys 0.42.0", ] [[package]] @@ -2352,7 +2921,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] @@ -2374,14 +2943,13 @@ dependencies = [ ] [[package]] -name = "os_info" -version = "3.8.2" +name = "ordered-stream" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae99c7fa6dd38c7cafe1ec085e804f8f555a2f8659b0dbe03f1f9963a9b51092" +checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50" dependencies = [ - "log", - "serde", - "windows-sys 0.52.0", + "futures-core", + "pin-project-lite", ] [[package]] @@ -2402,11 +2970,11 @@ checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" [[package]] name = "pango" -version = "0.15.10" +version = "0.18.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22e4045548659aee5313bde6c582b0d83a627b7904dd20dc2d9ef0895d414e4f" +checksum = "7ca27ec1eb0457ab26f3036ea52229edbdb74dee1edd29063f5b9b010e7ebee4" dependencies = [ - "bitflags 1.3.2", + "gio", "glib", "libc", "once_cell", @@ -2415,16 +2983,22 @@ dependencies = [ [[package]] name = "pango-sys" -version = "0.15.10" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2a00081cde4661982ed91d80ef437c20eacaf6aa1a5962c0279ae194662c3aa" +checksum = "436737e391a843e5933d6d9aa102cb126d501e815b83601365a948a518555dc5" dependencies = [ "glib-sys", "gobject-sys", "libc", - "system-deps 6.2.2", + "system-deps", ] +[[package]] +name = "parking" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" + [[package]] name = "parking_lot" version = "0.11.2" @@ -2500,16 +3074,6 @@ version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" -[[package]] -name = "petgraph" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" -dependencies = [ - "fixedbitset", - "indexmap 2.2.6", -] - [[package]] name = "phf" version = "0.8.0" @@ -2614,7 +3178,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] @@ -2661,7 +3225,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] @@ -2676,6 +3240,17 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +[[package]] +name = "piper" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "464db0c665917b13ebb5d453ccdec4add5658ee1adc7affc7677615356a8afaf" +dependencies = [ + "atomic-waker", + "fastrand", + "futures-io", +] + [[package]] name = "pkcs1" version = "0.3.3" @@ -2731,6 +3306,21 @@ dependencies = [ "miniz_oxide", ] +[[package]] +name = "polling" +version = "3.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "645493cf344456ef24219d02a768cf1fb92ddf8c92161679ae3d91b91a637be3" +dependencies = [ + "cfg-if", + "concurrent-queue", + "hermit-abi", + "pin-project-lite", + "rustix", + "tracing", + "windows-sys 0.52.0", +] + [[package]] name = "powerfmt" version = "0.2.0" @@ -2759,6 +3349,16 @@ dependencies = [ "toml_edit 0.19.15", ] +[[package]] +name = "proc-macro-crate" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b00f26d3400549137f92511a46ac1cd8ce37cb5598a96d382381458b992a5d24" +dependencies = [ + "toml_datetime", + "toml_edit 0.20.2", +] + [[package]] name = "proc-macro-error" version = "1.0.4" @@ -2791,13 +3391,22 @@ checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" [[package]] name = "proc-macro2" -version = "1.0.79" +version = "1.0.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e" +checksum = "ec96c6a92621310b51366f1e28d05ef11489516e93be030060e5fc12024a49d6" dependencies = [ "unicode-ident", ] +[[package]] +name = "qoi" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f6d64c71eb498fe9eae14ce4ec935c555749aef511cca85b5568910d6e48001" +dependencies = [ + "bytemuck", +] + [[package]] name = "quick-xml" version = "0.31.0" @@ -2809,9 +3418,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.35" +version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" dependencies = [ "proc-macro2", ] @@ -2903,6 +3512,32 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9" +[[package]] +name = "raw-window-handle" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" + +[[package]] +name = "rayon" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + [[package]] name = "redox_syscall" version = "0.2.16" @@ -2921,6 +3556,15 @@ dependencies = [ "bitflags 1.3.2", ] +[[package]] +name = "redox_syscall" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e" +dependencies = [ + "bitflags 2.5.0", +] + [[package]] name = "redox_users" version = "0.4.5" @@ -2976,28 +3620,65 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" +[[package]] +name = "reqwest" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "566cafdd92868e0939d3fb961bd0dc25fcfaaed179291093b3d43e6b3150ea10" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-core", + "futures-util", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-util", + "ipnet", + "js-sys", + "log", + "mime", + "once_cell", + "percent-encoding", + "pin-project-lite", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tokio-util", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams", + "web-sys", + "winreg", +] + [[package]] name = "rfd" -version = "0.10.0" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0149778bd99b6959285b0933288206090c50e2327f47a9c463bfdbf45c8823ea" +checksum = "25a73a7337fc24366edfca76ec521f51877b114e42dab584008209cca6719251" dependencies = [ + "ashpd", "block", "dispatch", "glib-sys", "gobject-sys", "gtk-sys", "js-sys", - "lazy_static", "log", "objc", "objc-foundation", "objc_id", - "raw-window-handle", + "raw-window-handle 0.6.2", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "windows 0.37.0", + "windows-sys 0.48.0", ] [[package]] @@ -3078,6 +3759,32 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "schemars" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09c024468a378b7e36765cd36702b7a90cc3cba11654f6685c8f233408e89e92" +dependencies = [ + "dyn-clone", + "indexmap 1.9.3", + "schemars_derive", + "serde", + "serde_json", + "url", +] + +[[package]] +name = "schemars_derive" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1eee588578aff73f856ab961cd2f79e36bc45d7ded33a7562adba4667aecc0e" +dependencies = [ + "proc-macro2", + "quote", + "serde_derive_internals", + "syn 2.0.66", +] + [[package]] name = "scoped-tls" version = "1.0.1" @@ -3159,7 +3866,18 @@ checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", +] + +[[package]] +name = "serde_derive_internals" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.66", ] [[package]] @@ -3168,7 +3886,6 @@ version = "1.0.115" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "12dc5c46daa8e9fdf4f5e71b6cf9a53f2487da0e86e55808e2d35539666497dd" dependencies = [ - "indexmap 2.2.6", "itoa 1.0.11", "ryu", "serde", @@ -3182,7 +3899,7 @@ checksum = "0b2e6b945e9d3df726b65d6ee24060aff8e3533d431f677a9695db04eff9dfdb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] @@ -3194,6 +3911,18 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa 1.0.11", + "ryu", + "serde", +] + [[package]] name = "serde_with" version = "3.7.0" @@ -3221,7 +3950,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] @@ -3344,62 +4073,79 @@ dependencies = [ ] [[package]] -name = "soup2" -version = "0.2.1" +name = "softbuffer" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2b4d76501d8ba387cf0fefbe055c3e0a59891d09f0f995ae4e4b16f6b60f3c0" +checksum = "d09e57a5a6b300bf917329da0ff30a58737d83abb7b14f99a419c23e83007cb8" dependencies = [ - "bitflags 1.3.2", + "bytemuck", + "cfg_aliases", + "core-graphics", + "foreign-types 0.5.0", + "js-sys", + "log", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "objc2-quartz-core", + "raw-window-handle 0.6.2", + "redox_syscall 0.5.1", + "wasm-bindgen", + "wayland-sys", + "web-sys", + "windows-sys 0.52.0", +] + +[[package]] +name = "soup3" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "471f924a40f31251afc77450e781cb26d55c0b650842efafc9c6cbd2f7cc4f9f" +dependencies = [ + "futures-channel", "gio", "glib", "libc", - "once_cell", - "soup2-sys", + "soup3-sys", ] [[package]] -name = "soup2-sys" -version = "0.2.0" +name = "soup3-sys" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "009ef427103fcb17f802871647a7fa6c60cbb654b4c4e4c0ac60a31c5f6dc9cf" +checksum = "7ebe8950a680a12f24f15ebe1bf70db7af98ad242d9db43596ad3108aab86c27" dependencies = [ - "bitflags 1.3.2", "gio-sys", "glib-sys", "gobject-sys", "libc", - "system-deps 5.0.0", + "system-deps", ] [[package]] name = "specta" -version = "1.0.5" +version = "2.0.0-rc.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2240c3aa020aa61d2c569087d213baafbb212f4ceb9de9dd162376ea6aa0fe3" +checksum = "3624a07cbde326fdf1ec37cbd39d06a224660fa0199b7db7316f2349583df981" dependencies = [ - "document-features", - "indoc 1.0.9", "once_cell", "paste", "serde", "serde_json", "specta-macros", - "tauri", "thiserror", ] [[package]] name = "specta-macros" -version = "1.0.5" +version = "2.0.0-rc.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4605306321c356e03873b8ee71d7592a5e7c508add325c3ed0677c16fdf1bcfb" +checksum = "ef33e9678ae36993fcbfc46aa29568ef10d32fd54428808759c6a450998c43ec" dependencies = [ "Inflector", - "itertools 0.10.5", "proc-macro2", "quote", "syn 1.0.109", - "termcolor", ] [[package]] @@ -3433,7 +4179,7 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ce81b7bd7c4493975347ef60d8c7e8b742d4694f4c49f93e0a12ea263938176c" dependencies = [ - "itertools 0.12.1", + "itertools", "nom", "unicode_categories", ] @@ -3467,8 +4213,8 @@ dependencies = [ "dirs", "dotenvy", "either", - "event-listener", - "flume", + "event-listener 2.5.3", + "flume 0.10.14", "futures-channel", "futures-core", "futures-executor", @@ -3546,13 +4292,19 @@ checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" [[package]] name = "state" -version = "0.5.3" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbe866e1e51e8260c9eed836a042a5e7f6726bb2b411dffeaa712e19c388f23b" +checksum = "2b8c4a4445d81357df8b1a650d0d0d6fbbbfe99d064aa5e02f3e4022061476d8" dependencies = [ "loom", ] +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + [[package]] name = "string_cache" version = "0.8.7" @@ -3608,6 +4360,17 @@ version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" +[[package]] +name = "swift-rs" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bbdb58577b6301f8d17ae2561f32002a5bae056d444e0f69e611e504a276204" +dependencies = [ + "base64 0.21.7", + "serde", + "serde_json", +] + [[package]] name = "syn" version = "1.0.109" @@ -3621,9 +4384,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.58" +version = "2.0.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44cfb93f38070beee36b3fef7d4f5a16f27751d94b187b666a5cc5e9b0d30687" +checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5" dependencies = [ "proc-macro2", "quote", @@ -3631,30 +4394,10 @@ dependencies = [ ] [[package]] -name = "sys-locale" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8a11bd9c338fdba09f7881ab41551932ad42e405f61d01e8406baea71c07aee" -dependencies = [ - "js-sys", - "libc", - "wasm-bindgen", - "web-sys", - "windows-sys 0.45.0", -] - -[[package]] -name = "system-deps" -version = "5.0.0" +name = "sync_wrapper" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18db855554db7bd0e73e06cf7ba3df39f97812cb11d3f75e71c39bf45171797e" -dependencies = [ - "cfg-expr 0.9.1", - "heck 0.3.3", - "pkg-config", - "toml 0.5.11", - "version-compare 0.0.11", -] +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" [[package]] name = "system-deps" @@ -3662,11 +4405,11 @@ version = "6.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349" dependencies = [ - "cfg-expr 0.15.7", + "cfg-expr", "heck 0.5.0", "pkg-config", - "toml 0.8.12", - "version-compare 0.2.0", + "toml 0.8.2", + "version-compare", ] [[package]] @@ -3681,6 +4424,10 @@ dependencies = [ "sqlx", "tauri", "tauri-build", + "tauri-plugin-clipboard-manager", + "tauri-plugin-dialog", + "tauri-plugin-global-shortcut", + "tauri-plugin-shell", "tauri-specta", "tokio", "tx_handlers", @@ -3690,28 +4437,21 @@ dependencies = [ [[package]] name = "tao" -version = "0.16.8" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26a794e476ce829420b58059f4ac23c2b991dab2ee552be740f931aea95ae9c8" +checksum = "12a8121bd5721ebbbe0889f8286d5824673beeb04071519b68916fbed04f3093" dependencies = [ - "bitflags 1.3.2", - "cairo-rs", - "cc", + "bitflags 2.5.0", "cocoa", "core-foundation", - "core-graphics 0.22.3", + "core-graphics", "crossbeam-channel", "dispatch", - "gdk", - "gdk-pixbuf", - "gdk-sys", + "dlopen2", + "dpi", "gdkwayland-sys", "gdkx11-sys", - "gio", - "glib", - "glib-sys", "gtk", - "image", "instant", "jni", "lazy_static", @@ -3723,15 +4463,14 @@ dependencies = [ "objc", "once_cell", "parking_lot 0.12.1", - "png", - "raw-window-handle", + "raw-window-handle 0.6.2", "scopeguard", - "serde", "tao-macros", "unicode-segmentation", - "uuid", - "windows 0.39.0", - "windows-implement", + "url", + "windows 0.56.0", + "windows-core 0.56.0", + "windows-version", "x11-dl", ] @@ -3746,17 +4485,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "tar" -version = "0.4.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b16afcea1f22891c49a00c751c7b63b2233284064f11a200fc624137c51e2ddb" -dependencies = [ - "filetime", - "libc", - "xattr", -] - [[package]] name = "target-lexicon" version = "0.12.14" @@ -3765,83 +4493,83 @@ checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f" [[package]] name = "tauri" -version = "1.6.1" +version = "2.0.0-beta.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f078117725e36d55d29fafcbb4b1e909073807ca328ae8deb8c0b3843aac0fed" +checksum = "6f8e5bc2e4f5eb7496d1a3e5f4d272f69f1333db5f8efed28d79d7f93334fe95" dependencies = [ "anyhow", + "bytes", "cocoa", "dirs-next", "dunce", "embed_plist", - "encoding_rs", - "flate2", "futures-util", - "glib", + "getrandom 0.2.12", "glob", "gtk", - "heck 0.4.1", + "heck 0.5.0", "http", - "ignore", + "jni", + "libc", + "log", + "mime", + "muda", "objc", - "once_cell", - "open", - "os_info", - "os_pipe", "percent-encoding", - "rand 0.8.5", - "raw-window-handle", - "regex", - "rfd", - "semver", + "raw-window-handle 0.6.2", + "reqwest", "serde", "serde_json", "serde_repr", "serialize-to-javascript", - "shared_child", + "specta", "state", - "sys-locale", - "tar", + "swift-rs", + "tauri-build", "tauri-macros", "tauri-runtime", "tauri-runtime-wry", "tauri-utils", - "tempfile", "thiserror", "tokio", + "tray-icon", "url", - "uuid", + "urlpattern", "webkit2gtk", "webview2-com", - "windows 0.39.0", + "window-vibrancy", + "windows 0.56.0", ] [[package]] name = "tauri-build" -version = "1.5.1" +version = "2.0.0-beta.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9914a4715e0b75d9f387a285c7e26b5bbfeb1249ad9f842675a82481565c532" +checksum = "1a6829341dde141cd48caabd4f57463444fb1127e7e20e758088be12e866bd77" dependencies = [ "anyhow", "cargo_toml", "dirs-next", - "heck 0.4.1", + "glob", + "heck 0.5.0", "json-patch", + "schemars", "semver", "serde", "serde_json", "tauri-utils", "tauri-winres", + "toml 0.8.2", "walkdir", ] [[package]] name = "tauri-codegen" -version = "1.4.2" +version = "2.0.0-beta.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1554c5857f65dbc377cefb6b97c8ac77b1cb2a90d30d3448114d5d6b48a77fc" +checksum = "de94afa2ee0cc6a7ba99c1300b80a9ede416c54a6a68a0ad38c3ebe1d6fe547c" dependencies = [ - "base64 0.21.7", + "base64 0.22.1", "brotli", "ico", "json-patch", @@ -3849,100 +4577,222 @@ dependencies = [ "png", "proc-macro2", "quote", - "regex", "semver", "serde", "serde_json", "sha2", + "syn 2.0.66", "tauri-utils", "thiserror", "time", + "url", "uuid", "walkdir", ] [[package]] name = "tauri-macros" -version = "1.4.3" +version = "2.0.0-beta.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "277abf361a3a6993ec16bcbb179de0d6518009b851090a01adfea12ac89fa875" +checksum = "305a13d6164bd76f9b407cd1b95031deb1c1a0804c686f5e332a99ee62710ac2" dependencies = [ - "heck 0.4.1", + "heck 0.5.0", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.66", "tauri-codegen", "tauri-utils", ] +[[package]] +name = "tauri-plugin" +version = "2.0.0-beta.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f511a86bb648b8d6ea5841719d12966491f472734915b0d510e6eeb299f4371" +dependencies = [ + "anyhow", + "glob", + "plist", + "schemars", + "serde", + "serde_json", + "tauri-utils", + "toml 0.8.2", + "walkdir", +] + +[[package]] +name = "tauri-plugin-clipboard-manager" +version = "2.1.0-beta.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e8b139799d4d39d15e4c1a61dd5d86e4ac154e6324f9dd1032c7a354cde6c1" +dependencies = [ + "arboard", + "image 0.24.9", + "log", + "serde", + "serde_json", + "tauri", + "tauri-plugin", + "thiserror", +] + +[[package]] +name = "tauri-plugin-dialog" +version = "2.0.0-beta.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4563f62939a475273e7b75eb4a862f0108969a54db813ef250092d470eff84dc" +dependencies = [ + "dunce", + "log", + "raw-window-handle 0.6.2", + "rfd", + "serde", + "serde_json", + "tauri", + "tauri-plugin", + "tauri-plugin-fs", + "thiserror", +] + +[[package]] +name = "tauri-plugin-fs" +version = "2.0.0-beta.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35377195c6923beda5f29482a16b492d431de964389fca9aaf81a0f7e908023f" +dependencies = [ + "anyhow", + "glob", + "schemars", + "serde", + "serde_json", + "serde_repr", + "tauri", + "tauri-plugin", + "thiserror", + "url", + "uuid", +] + +[[package]] +name = "tauri-plugin-global-shortcut" +version = "2.0.0-beta.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ef1cfbcbb0b13ba15d23790d2148d9242d40b10d0e7a6879901bb8530d77ef4" +dependencies = [ + "global-hotkey", + "log", + "serde", + "serde_json", + "tauri", + "tauri-plugin", + "thiserror", +] + +[[package]] +name = "tauri-plugin-shell" +version = "2.0.0-beta.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca4973141725f74983f6e89b9ce9c69a18bc0ec0fba23cc4d022986e0325b92b" +dependencies = [ + "encoding_rs", + "log", + "open", + "os_pipe", + "regex", + "schemars", + "serde", + "serde_json", + "shared_child", + "tauri", + "tauri-plugin", + "thiserror", + "tokio", +] + [[package]] name = "tauri-runtime" -version = "0.14.2" +version = "2.0.0-beta.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf2d0652aa2891ff3e9caa2401405257ea29ab8372cce01f186a5825f1bd0e76" +checksum = "42e81dc86660cc1421af7967e71857201d8ebf114327465bde819913a27bffc1" dependencies = [ + "dpi", "gtk", "http", - "http-range", - "rand 0.8.5", - "raw-window-handle", + "jni", + "raw-window-handle 0.6.2", "serde", "serde_json", "tauri-utils", "thiserror", "url", - "uuid", - "webview2-com", - "windows 0.39.0", + "windows 0.56.0", ] [[package]] name = "tauri-runtime-wry" -version = "0.14.5" +version = "2.0.0-beta.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "067c56fc153b3caf406d7cd6de4486c80d1d66c0f414f39e94cb2f5543f6445f" +checksum = "23beea1d1540fe23c33a0791aeba1054f51d84faadc07ff8637b7e5494eba9fa" dependencies = [ - "arboard", "cocoa", "gtk", + "http", + "jni", + "log", "percent-encoding", - "rand 0.8.5", - "raw-window-handle", + "raw-window-handle 0.6.2", + "softbuffer", + "tao", "tauri-runtime", "tauri-utils", - "uuid", + "url", "webkit2gtk", "webview2-com", - "windows 0.39.0", + "windows 0.56.0", "wry", ] [[package]] name = "tauri-specta" -version = "1.0.2" +version = "2.0.0-rc.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa034c38b7bdfeccc606eca0b030a1e67a20b78e7642edef09816b7e1ff9a9de" +checksum = "856a2bbbbd4d39ae2c1e6d22aec50623596708ff8f7e4c598123dbc5165f5f76" dependencies = [ - "heck 0.4.1", - "indoc 2.0.5", + "heck 0.5.0", + "indoc", "serde", "serde_json", "specta", "tauri", + "tauri-specta-macros", "thiserror", ] +[[package]] +name = "tauri-specta-macros" +version = "2.0.0-rc.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6f9e90bf2012877e2c4029a1bf756277183e9c7c77b850ef965711553998012" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.66", +] + [[package]] name = "tauri-utils" -version = "1.5.3" +version = "2.0.0-beta.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75ad0bbb31fccd1f4c56275d0a5c3abdf1f59999f72cb4ef8b79b4ed42082a21" +checksum = "199edb0e8969f53decfb683971faa50eb8b421f9034bfa95121286e1e93beaef" dependencies = [ "brotli", + "cargo_metadata", "ctor", "dunce", "glob", - "heck 0.4.1", + "heck 0.5.0", "html5ever", "infer", "json-patch", @@ -3952,14 +4802,18 @@ dependencies = [ "phf 0.11.2", "proc-macro2", "quote", + "regex", + "schemars", "semver", "serde", "serde_json", "serde_with", + "swift-rs", "thiserror", + "toml 0.8.2", "url", + "urlpattern", "walkdir", - "windows-version", ] [[package]] @@ -3995,15 +4849,6 @@ dependencies = [ "utf-8", ] -[[package]] -name = "termcolor" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" -dependencies = [ - "winapi-util", -] - [[package]] name = "thin-slice" version = "0.1.1" @@ -4027,7 +4872,7 @@ checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] @@ -4113,6 +4958,7 @@ dependencies = [ "signal-hook-registry", "socket2", "tokio-macros", + "tracing", "windows-sys 0.48.0", ] @@ -4124,7 +4970,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] @@ -4149,12 +4995,16 @@ dependencies = [ ] [[package]] -name = "toml" -version = "0.5.11" +name = "tokio-util" +version = "0.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" dependencies = [ - "serde", + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", ] [[package]] @@ -4171,21 +5021,21 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.12" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9dd1545e8208b4a5af1aa9bbd0b4cf7e9ea08fabc5d0a5c67fcaafa17433aa3" +checksum = "185d8ab0dfbb35cf1399a6344d8484209c088f75f8f68230da55d48d95d43e3d" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.9", + "toml_edit 0.20.2", ] [[package]] name = "toml_datetime" -version = "0.6.5" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" +checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" dependencies = [ "serde", ] @@ -4200,22 +5050,49 @@ dependencies = [ "serde", "serde_spanned", "toml_datetime", - "winnow 0.5.40", + "winnow", ] [[package]] name = "toml_edit" -version = "0.22.9" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e40bb779c5187258fd7aad0eb68cb8706a0a81fa712fbea808ab43c4b8374c4" +checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338" dependencies = [ "indexmap 2.2.6", "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.5", + "winnow", +] + +[[package]] +name = "tower" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +dependencies = [ + "futures-core", + "futures-util", + "pin-project", + "pin-project-lite", + "tokio", + "tower-layer", + "tower-service", ] +[[package]] +name = "tower-layer" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" + +[[package]] +name = "tower-service" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" + [[package]] name = "tracing" version = "0.1.40" @@ -4235,7 +5112,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] @@ -4278,17 +5155,23 @@ dependencies = [ ] [[package]] -name = "tree_magic_mini" -version = "3.1.4" +name = "tray-icon" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77ee137597cdb361b55a4746983e4ac1b35ab6024396a419944ad473bb915265" +checksum = "39240037d755a1832e752d64f99078c3b0b21c09a71c12405070c75ef4e7cd3c" dependencies = [ - "fnv", - "home", - "memchr", - "nom", + "cocoa", + "core-graphics", + "crossbeam-channel", + "dirs-next", + "libappindicator", + "muda", + "objc", "once_cell", - "petgraph", + "png", + "serde", + "thiserror", + "windows-sys 0.52.0", ] [[package]] @@ -4300,6 +5183,12 @@ dependencies = [ "serde_json", ] +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + [[package]] name = "tx_handlers" version = "0.3.4" @@ -4321,6 +5210,7 @@ dependencies = [ "serde_json", "specta", "sqlx", + "tauri-specta", "uuid", ] @@ -4330,6 +5220,58 @@ version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +[[package]] +name = "uds_windows" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" +dependencies = [ + "memoffset", + "tempfile", + "winapi", +] + +[[package]] +name = "unic-char-property" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8c57a407d9b6fa02b4795eb81c5b6652060a15a7903ea981f3d723e6c0be221" +dependencies = [ + "unic-char-range", +] + +[[package]] +name = "unic-char-range" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0398022d5f700414f6b899e10b8348231abf9173fa93144cbc1a43b9793c1fbc" + +[[package]] +name = "unic-common" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80d7ff825a6a654ee85a63e80f92f054f904f21e7d12da4e22f9834a4aaa35bc" + +[[package]] +name = "unic-ucd-ident" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e230a37c0381caa9219d67cf063aa3a375ffed5bf541a452db16e744bdab6987" +dependencies = [ + "unic-char-property", + "unic-char-range", + "unic-ucd-version", +] + +[[package]] +name = "unic-ucd-version" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96bd2f2237fe450fcd0a1d2f5f4e91711124f7857ba2e964247776ebeeb7b0c4" +dependencies = [ + "unic-common", +] + [[package]] name = "unicode-bidi" version = "0.3.15" @@ -4375,6 +5317,19 @@ dependencies = [ "serde", ] +[[package]] +name = "urlpattern" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9bd5ff03aea02fa45b13a7980151fe45009af1980ba69f651ec367121a31609" +dependencies = [ + "derive_more", + "regex", + "serde", + "unic-ucd-ident", + "url", +] + [[package]] name = "utf-8" version = "0.7.6" @@ -4406,7 +5361,7 @@ checksum = "9881bea7cbe687e36c9ab3b778c36cd0487402e270304e8b1296d5085303c1a2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] @@ -4421,12 +5376,6 @@ version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" -[[package]] -name = "version-compare" -version = "0.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c18c859eead79d8b95d09e4678566e8d70105c4e7b251f707a03df32442661b" - [[package]] name = "version-compare" version = "0.2.0" @@ -4469,6 +5418,15 @@ dependencies = [ "winapi-util", ] +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + [[package]] name = "wasi" version = "0.9.0+wasi-snapshot-preview1" @@ -4508,7 +5466,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", "wasm-bindgen-shared", ] @@ -4542,7 +5500,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -4554,65 +5512,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" [[package]] -name = "wayland-backend" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d50fa61ce90d76474c87f5fc002828d81b32677340112b4ef08079a9d459a40" -dependencies = [ - "cc", - "downcast-rs", - "rustix", - "scoped-tls", - "smallvec", - "wayland-sys", -] - -[[package]] -name = "wayland-client" -version = "0.31.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82fb96ee935c2cea6668ccb470fb7771f6215d1691746c2d896b447a00ad3f1f" -dependencies = [ - "bitflags 2.5.0", - "rustix", - "wayland-backend", - "wayland-scanner", -] - -[[package]] -name = "wayland-protocols" -version = "0.31.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f81f365b8b4a97f422ac0e8737c438024b5951734506b0e1d775c73030561f4" -dependencies = [ - "bitflags 2.5.0", - "wayland-backend", - "wayland-client", - "wayland-scanner", -] - -[[package]] -name = "wayland-protocols-wlr" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad1f61b76b6c2d8742e10f9ba5c3737f6530b4c243132c2a2ccc8aa96fe25cd6" -dependencies = [ - "bitflags 2.5.0", - "wayland-backend", - "wayland-client", - "wayland-protocols", - "wayland-scanner", -] - -[[package]] -name = "wayland-scanner" -version = "0.31.1" +name = "wasm-streams" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63b3a62929287001986fb58c789dce9b67604a397c15c611ad9f747300b6c283" +checksum = "b65dc4c90b63b118468cf747d8bf3566c1913ef60be765b5730ead9e0a3ba129" dependencies = [ - "proc-macro2", - "quick-xml", - "quote", + "futures-util", + "js-sys", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", ] [[package]] @@ -4638,9 +5547,9 @@ dependencies = [ [[package]] name = "webkit2gtk" -version = "0.18.2" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8f859735e4a452aeb28c6c56a852967a8a76c8eb1cc32dbf931ad28a13d6370" +checksum = "76b1bc1e54c581da1e9f179d0b38512ba358fb1af2d634a1affe42e37172361a" dependencies = [ "bitflags 1.3.2", "cairo-rs", @@ -4656,20 +5565,18 @@ dependencies = [ "javascriptcore-rs", "libc", "once_cell", - "soup2", + "soup3", "webkit2gtk-sys", ] [[package]] name = "webkit2gtk-sys" -version = "0.18.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d76ca6ecc47aeba01ec61e480139dda143796abcae6f83bcddf50d6b5b1dcf3" +checksum = "62daa38afc514d1f8f12b8693d30d5993ff77ced33ce30cd04deebc267a6d57c" dependencies = [ - "atk-sys", "bitflags 1.3.2", "cairo-sys-rs", - "gdk-pixbuf-sys", "gdk-sys", "gio-sys", "glib-sys", @@ -4677,48 +5584,45 @@ dependencies = [ "gtk-sys", "javascriptcore-rs-sys", "libc", - "pango-sys", "pkg-config", - "soup2-sys", - "system-deps 6.2.2", + "soup3-sys", + "system-deps", ] [[package]] name = "webview2-com" -version = "0.19.1" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4a769c9f1a64a8734bde70caafac2b96cada12cd4aefa49196b3a386b8b4178" +checksum = "5c914dd492a52f0377bef56fd1b6e74a79090f9ee631d625d5b505a00e4538b6" dependencies = [ "webview2-com-macros", "webview2-com-sys", - "windows 0.39.0", + "windows 0.56.0", + "windows-core 0.56.0", "windows-implement", + "windows-interface", ] [[package]] name = "webview2-com-macros" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaebe196c01691db62e9e4ca52c5ef1e4fd837dcae27dae3ada599b5a8fd05ac" +checksum = "ac1345798ecd8122468840bcdf1b95e5dc6d2206c5e4b0eafa078d061f59c9bc" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.66", ] [[package]] name = "webview2-com-sys" -version = "0.19.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aac48ef20ddf657755fdcda8dfed2a7b4fc7e4581acce6fe9b88c3d64f29dee7" +checksum = "2a46bcf03482ec28eeb764ca788f67998cde4213adfbbfa90462622058530f5e" dependencies = [ - "regex", - "serde", - "serde_json", "thiserror", - "windows 0.39.0", - "windows-bindgen", - "windows-metadata", + "windows 0.56.0", + "windows-core 0.56.0", ] [[package]] @@ -4770,30 +5674,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] -name = "windows" -version = "0.37.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57b543186b344cc61c85b5aab0d2e3adf4e0f99bc076eff9aa5927bcc0b8a647" -dependencies = [ - "windows_aarch64_msvc 0.37.0", - "windows_i686_gnu 0.37.0", - "windows_i686_msvc 0.37.0", - "windows_x86_64_gnu 0.37.0", - "windows_x86_64_msvc 0.37.0", -] - -[[package]] -name = "windows" -version = "0.39.0" +name = "window-vibrancy" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1c4bd0a50ac6020f65184721f758dba47bb9fbc2133df715ec74a237b26794a" +checksum = "33082acd404763b315866e14a0d5193f3422c81086657583937a750cdd3ec340" dependencies = [ - "windows-implement", - "windows_aarch64_msvc 0.39.0", - "windows_i686_gnu 0.39.0", - "windows_i686_msvc 0.39.0", - "windows_x86_64_gnu 0.39.0", - "windows_x86_64_msvc 0.39.0", + "cocoa", + "objc", + "raw-window-handle 0.6.2", + "windows-sys 0.52.0", + "windows-version", ] [[package]] @@ -4812,17 +5702,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9252e5725dbed82865af151df558e754e4a3c2c30818359eb17465f1346a1b49" dependencies = [ "windows-core 0.54.0", - "windows-targets 0.52.4", + "windows-targets 0.52.5", ] [[package]] -name = "windows-bindgen" -version = "0.39.0" +name = "windows" +version = "0.56.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68003dbd0e38abc0fb85b939240f4bce37c43a5981d3df37ccbaaa981b47cb41" +checksum = "1de69df01bdf1ead2f4ac895dc77c9351aefff65b2f3db429a343f9cbf05e132" dependencies = [ - "windows-metadata", - "windows-tokens", + "windows-core 0.56.0", + "windows-targets 0.52.5", ] [[package]] @@ -4831,7 +5721,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets 0.52.4", + "windows-targets 0.52.5", ] [[package]] @@ -4841,47 +5731,50 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "12661b9c89351d684a50a8a643ce5f608e20243b9fb84687800163429f161d65" dependencies = [ "windows-result", - "windows-targets 0.52.4", + "windows-targets 0.52.5", ] [[package]] -name = "windows-implement" -version = "0.39.0" +name = "windows-core" +version = "0.56.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba01f98f509cb5dc05f4e5fc95e535f78260f15fea8fe1a8abdd08f774f1cee7" +checksum = "4698e52ed2d08f8658ab0c39512a7c00ee5fe2688c65f8c0a4f06750d729f2a6" dependencies = [ - "syn 1.0.109", - "windows-tokens", + "windows-implement", + "windows-interface", + "windows-result", + "windows-targets 0.52.5", ] [[package]] -name = "windows-metadata" -version = "0.39.0" +name = "windows-implement" +version = "0.56.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ee5e275231f07c6e240d14f34e1b635bf1faa1c76c57cfd59a5cdb9848e4278" +checksum = "f6fc35f58ecd95a9b71c4f2329b911016e6bec66b3f2e6a4aad86bd2e99e2f9b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.66", +] [[package]] -name = "windows-result" -version = "0.1.0" +name = "windows-interface" +version = "0.56.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd19df78e5168dfb0aedc343d1d1b8d422ab2db6756d2dc3fef75035402a3f64" +checksum = "08990546bf4edef8f431fa6326e032865f27138718c587dc21bc0265bbcb57cc" dependencies = [ - "windows-targets 0.52.4", + "proc-macro2", + "quote", + "syn 2.0.66", ] [[package]] -name = "windows-sys" -version = "0.42.0" +name = "windows-result" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" +checksum = "749f0da9cc72d82e600d8d2e44cadd0b9eedb9038f71a1c58556ac1c5791813b" dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", + "windows-targets 0.52.5", ] [[package]] @@ -4908,7 +5801,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.4", + "windows-targets 0.52.5", ] [[package]] @@ -4943,32 +5836,27 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.4" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b" +checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" dependencies = [ - "windows_aarch64_gnullvm 0.52.4", - "windows_aarch64_msvc 0.52.4", - "windows_i686_gnu 0.52.4", - "windows_i686_msvc 0.52.4", - "windows_x86_64_gnu 0.52.4", - "windows_x86_64_gnullvm 0.52.4", - "windows_x86_64_msvc 0.52.4", + "windows_aarch64_gnullvm 0.52.5", + "windows_aarch64_msvc 0.52.5", + "windows_i686_gnu 0.52.5", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.5", + "windows_x86_64_gnu 0.52.5", + "windows_x86_64_gnullvm 0.52.5", + "windows_x86_64_msvc 0.52.5", ] -[[package]] -name = "windows-tokens" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f838de2fe15fe6bac988e74b798f26499a8b21a9d97edec321e79b28d1d7f597" - [[package]] name = "windows-version" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75aa004c988e080ad34aff5739c39d0312f4684699d6d71fc8a198d057b8b9b4" dependencies = [ - "windows-targets 0.52.4", + "windows-targets 0.52.5", ] [[package]] @@ -4985,21 +5873,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.37.0" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2623277cb2d1c216ba3b578c0f3cf9cdebeddb6e66b1b218bb33596ea7769c3a" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec7711666096bd4096ffa835238905bb33fb87267910e154b18b44eaabb340f2" +checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" [[package]] name = "windows_aarch64_msvc" @@ -5015,21 +5891,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.4" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675" - -[[package]] -name = "windows_i686_gnu" -version = "0.37.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3925fd0b0b804730d44d4b6278c50f9699703ec49bcd628020f46f4ba07d9e1" - -[[package]] -name = "windows_i686_gnu" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "763fc57100a5f7042e3057e7e8d9bdd7860d330070251a73d003563a3bb49e1b" +checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" [[package]] name = "windows_i686_gnu" @@ -5045,21 +5909,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3" - -[[package]] -name = "windows_i686_msvc" -version = "0.37.0" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce907ac74fe331b524c1298683efbf598bb031bc84d5e274db2083696d07c57c" +checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" [[package]] -name = "windows_i686_msvc" -version = "0.39.0" +name = "windows_i686_gnullvm" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bc7cbfe58828921e10a9f446fcaaf649204dcfe6c1ddd712c5eebae6bda1106" +checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" [[package]] name = "windows_i686_msvc" @@ -5075,21 +5933,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.37.0" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2babfba0828f2e6b32457d5341427dcbb577ceef556273229959ac23a10af33d" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6868c165637d653ae1e8dc4d82c25d4f97dd6605eaa8d784b5c6e0ab2a252b65" +checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" [[package]] name = "windows_x86_64_gnu" @@ -5105,9 +5951,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.4" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03" +checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" [[package]] name = "windows_x86_64_gnullvm" @@ -5123,21 +5969,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.37.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4dd6dc7df2d84cf7b33822ed5b86318fb1781948e9663bacd047fc9dd52259d" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.39.0" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e4d40883ae9cae962787ca76ba76390ffa29214667a111db9e0a1ad8377e809" +checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" [[package]] name = "windows_x86_64_msvc" @@ -5153,9 +5987,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.4" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8" +checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" [[package]] name = "winnow" @@ -5166,15 +6000,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "winnow" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dffa400e67ed5a4dd237983829e66475f0a4a26938c4b04c21baede6262215b8" -dependencies = [ - "memchr", -] - [[package]] name = "winreg" version = "0.52.0" @@ -5185,62 +6010,46 @@ dependencies = [ "windows-sys 0.48.0", ] -[[package]] -name = "wl-clipboard-rs" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12b41773911497b18ca8553c3daaf8ec9fe9819caf93d451d3055f69de028adb" -dependencies = [ - "derive-new", - "libc", - "log", - "nix", - "os_pipe", - "tempfile", - "thiserror", - "tree_magic_mini", - "wayland-backend", - "wayland-client", - "wayland-protocols", - "wayland-protocols-wlr", -] - [[package]] name = "wry" -version = "0.24.7" +version = "0.40.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ad85d0e067359e409fcb88903c3eac817c392e5d638258abfb3da5ad8ba6fc4" +checksum = "7cd42682bad8d1efd0e0d0593770c602c13b8922bb1ca705cb845967de81bbc4" dependencies = [ - "base64 0.13.1", + "base64 0.22.1", "block", "cocoa", - "core-graphics 0.22.3", + "core-graphics", "crossbeam-channel", + "dpi", "dunce", - "gdk", - "gio", - "glib", + "gdkx11", "gtk", "html5ever", "http", + "javascriptcore-rs", + "jni", "kuchikiki", "libc", - "log", + "ndk", + "ndk-context", + "ndk-sys", "objc", "objc_id", "once_cell", - "serde", - "serde_json", + "percent-encoding", + "raw-window-handle 0.6.2", "sha2", - "soup2", - "tao", + "soup3", + "tao-macros", "thiserror", - "url", "webkit2gtk", "webkit2gtk-sys", "webview2-com", - "windows 0.39.0", - "windows-implement", + "windows 0.56.0", + "windows-core 0.56.0", + "windows-version", + "x11-dl", ] [[package]] @@ -5266,9 +6075,9 @@ dependencies = [ [[package]] name = "x11rb" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8f25ead8c7e4cba123243a6367da5d3990e0d3affa708ea19dce96356bd9f1a" +checksum = "5d91ffca73ee7f68ce055750bf9f6eca0780b8c85eff9bc046a3b0da41755e12" dependencies = [ "gethostname", "rustix", @@ -5277,19 +6086,77 @@ dependencies = [ [[package]] name = "x11rb-protocol" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e63e71c4b8bd9ffec2c963173a4dc4cbde9ee96961d4fcb4429db9929b606c34" +checksum = "ec107c4503ea0b4a98ef47356329af139c0a4f7750e621cf2973cd3385ebcb3d" [[package]] -name = "xattr" -version = "1.3.1" +name = "xdg-home" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f" +checksum = "21e5a325c3cb8398ad6cf859c1135b25dd29e186679cf2da7581d9679f63b38e" dependencies = [ "libc", - "linux-raw-sys", - "rustix", + "winapi", +] + +[[package]] +name = "zbus" +version = "4.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b8e3d6ae3342792a6cc2340e4394334c7402f3d793b390d2c5494a4032b3030" +dependencies = [ + "async-broadcast", + "async-process", + "async-recursion", + "async-trait", + "derivative", + "enumflags2", + "event-listener 5.3.0", + "futures-core", + "futures-sink", + "futures-util", + "hex", + "nix", + "ordered-stream", + "rand 0.8.5", + "serde", + "serde_repr", + "sha1", + "static_assertions", + "tokio", + "tracing", + "uds_windows", + "windows-sys 0.52.0", + "xdg-home", + "zbus_macros", + "zbus_names", + "zvariant", +] + +[[package]] +name = "zbus_macros" +version = "4.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7a3e850ff1e7217a3b7a07eba90d37fe9bb9e89a310f718afcde5885ca9b6d7" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro2", + "quote", + "regex", + "syn 1.0.109", + "zvariant_utils", +] + +[[package]] +name = "zbus_names" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b9b1fef7d021261cc16cba64c351d291b715febe0fa10dc3a443ac5a5022e6c" +dependencies = [ + "serde", + "static_assertions", + "zvariant", ] [[package]] @@ -5309,7 +6176,7 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] @@ -5317,3 +6184,50 @@ name = "zeroize" version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d" + +[[package]] +name = "zune-inflate" +version = "0.2.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73ab332fe2f6680068f3582b16a24f90ad7096d5d39b974d1c0aff0125116f02" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "zvariant" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e09e8be97d44eeab994d752f341e67b3b0d80512a8b315a0671d47232ef1b65" +dependencies = [ + "endi", + "enumflags2", + "serde", + "static_assertions", + "url", + "zvariant_derive", +] + +[[package]] +name = "zvariant_derive" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72a5857e2856435331636a9fbb415b09243df4521a267c5bedcd5289b4d5799e" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro2", + "quote", + "syn 1.0.109", + "zvariant_utils", +] + +[[package]] +name = "zvariant_utils" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00bedb16a193cc12451873fee2a1bc6550225acece0e36f333e68326c73c8172" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] diff --git a/Cargo.toml b/Cargo.toml index ffae6e5a..169c5806 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -35,4 +35,5 @@ sqlx = { version = "0.6.3", features = [ "time", ] } async-trait = "0.1.80" -specta = "1" +specta = { version = "2.0.0-rc.12", features = ["serde", "serde_json"] } +tauri-specta = { version = "2.0.0-rc.5", features = ["typescript"] } diff --git a/apps/core/package.json b/apps/core/package.json index ae00a016..2c05e2ac 100644 --- a/apps/core/package.json +++ b/apps/core/package.json @@ -23,11 +23,15 @@ "@radix-ui/react-tabs": "^1.0.4", "@radix-ui/react-tooltip": "^1.0.7", "@tanstack/react-query": "^5.8.4", - "@tanstack/react-router": "^1.19.2", + "@tanstack/react-router": "^1.34.7", "@tanstack/react-table": "^8.10.7", "@tanstack/react-virtual": "^3.1.2", - "@tauri-apps/api": "^1.5.1", + "@tauri-apps/api": "2.0.0-beta.12", + "@tauri-apps/plugin-clipboard-manager": "2.1.0-beta.1", + "@tauri-apps/plugin-dialog": "2.0.0-beta.3", + "@tauri-apps/plugin-global-shortcut": "2.0.0-beta.3", "@tauri-apps/plugin-os": "2.0.0-beta.2", + "@tauri-apps/plugin-shell": "2.0.0-beta.4", "class-variance-authority": "^0.7.0", "clsx": "^2.1.0", "cmdk": "^0.2.0", @@ -43,9 +47,9 @@ "devDependencies": { "@tablex/lib": "workspace:^", "@tablex/tailwind": "workspace:^", - "@tanstack/router-devtools": "^1.19.1", - "@tanstack/router-vite-plugin": "^1.18.1", - "@tauri-apps/cli": "^1.5.11", + "@tanstack/router-devtools": "^1.34.7", + "@tanstack/router-vite-plugin": "^1.34.1", + "@tauri-apps/cli": "2.0.0-beta.18", "@types/react": "^18.2.56", "@types/react-dom": "^18.2.19", "@typescript-eslint/eslint-plugin": "^7.0.2", diff --git a/apps/core/src-tauri/Cargo.toml b/apps/core/src-tauri/Cargo.toml index 0f3e58de..39e149cc 100644 --- a/apps/core/src-tauri/Cargo.toml +++ b/apps/core/src-tauri/Cargo.toml @@ -11,28 +11,23 @@ edition.workspace = true # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [build-dependencies] -tauri-build = { version = "1.5.1", features = [] } +tauri-build = { version = "2.0.0-beta", features = [] } [dependencies] tx_lib = { path = "../../../crates/lib" } tx_handlers = { path = "../../../crates/handlers" } serde_json = { workspace = true } serde = { workspace = true } -tauri = { version = "1.6.1", features = [ - "shell-open", - "os-all", - "clipboard-write-text", - "global-shortcut-all", - "dialog-open", - "test", - "process-command-api", -] } +tauri = { version = "2.0.0-beta.19", features = [] } sqlx = { workspace = true } clap = { version = "4.5.1", features = ["derive"] } tokio = { workspace = true } regex = "1.10.3" specta = { workspace = true } -tauri-specta = { version = "1", features = ["typescript"] } +tauri-specta = { workspace = true } +tauri-plugin-dialog = "2.0.0-beta.7" +tauri-plugin-clipboard-manager = "2.1.0-beta.2" +tauri-plugin-shell = "2.0.0-beta.5" [features] # this feature is used for production builds or when `devPath` points to the filesystem and the built-in dev server is disabled. @@ -46,3 +41,6 @@ windows = { version = "0.54.0", features = [ "Win32_System_Console", "Win32_Foundation", ] } + +[target."cfg(not(any(target_os = \"android\", target_os = \"ios\")))".dependencies] +tauri-plugin-global-shortcut = "2.0.0-beta.4" diff --git a/apps/core/src-tauri/build.rs b/apps/core/src-tauri/build.rs index 795b9b7c..d860e1e6 100644 --- a/apps/core/src-tauri/build.rs +++ b/apps/core/src-tauri/build.rs @@ -1,3 +1,3 @@ fn main() { - tauri_build::build() + tauri_build::build() } diff --git a/apps/core/src-tauri/capabilities/migrated.json b/apps/core/src-tauri/capabilities/migrated.json new file mode 100644 index 00000000..7fe58464 --- /dev/null +++ b/apps/core/src-tauri/capabilities/migrated.json @@ -0,0 +1,28 @@ +{ + "identifier": "migrated", + "description": "permissions that were migrated from v1", + "local": true, + "windows": [ + "main" + ], + "permissions": [ + "path:default", + "event:default", + "window:default", + "app:default", + "resources:default", + "menu:default", + "tray:default", + "dialog:allow-open", + "global-shortcut:allow-is-registered", + "global-shortcut:allow-register", + "global-shortcut:allow-register-all", + "global-shortcut:allow-unregister", + "global-shortcut:allow-unregister-all", + "clipboard-manager:allow-write-text", + "dialog:default", + "global-shortcut:default", + "clipboard-manager:default", + "shell:default" + ] +} \ No newline at end of file diff --git a/apps/core/src-tauri/src/cli.rs b/apps/core/src-tauri/src/cli.rs index 05677fa0..fee7487c 100644 --- a/apps/core/src-tauri/src/cli.rs +++ b/apps/core/src-tauri/src/cli.rs @@ -3,7 +3,7 @@ use crate::state::SharedState; use clap::Command; use clap::{error::ErrorKind, CommandFactory, Parser}; use tauri::{async_runtime::Mutex, Manager}; -use tauri::{AppHandle, Window}; +use tauri::{AppHandle, WebviewWindow}; use tx_lib::types::Drivers; #[derive(Parser, Debug)] @@ -61,8 +61,8 @@ pub fn parse_cli_args() -> (Args, Command) { /// - If the driver is invalid. /// - If `--save` is set without `-c`. pub async fn handle_cli_args(app: &AppHandle, args: Args, mut cmd: Command) { - let main_window = app.get_window("main").unwrap(); - let splash_screen = app.get_window("splashscreen").unwrap(); + let main_window = app.get_webview_window("main").unwrap(); + let splash_screen = app.get_webview_window("splashscreen").unwrap(); if let Some(conn_string) = args.conn_string { #[cfg(all(windows, not(dev)))] @@ -89,7 +89,7 @@ pub async fn handle_cli_args(app: &AppHandle, args: Args, mut cmd: Command) { splash_screen.show().unwrap(); let url = format!( - "/dashboard/layout/land?connectionName={}", + "/dashboard/land?connectionName={}", &args.conn_name.unwrap_or("Temp".into()) ); let _ = main_window.eval(format!("window.location.replace('{url}')").as_str()); @@ -117,13 +117,13 @@ async fn establish_on_the_fly_connection( "mysql" => Ok(Drivers::MySQL), _ => Err(format!("Unsupported driver {prefix}")), }?; - establish_connection(state, conn_string.into(), driver.clone()).await?; + establish_connection(app.to_owned(), state, conn_string.into(), driver.clone()).await?; Ok(driver) } /// If the app is ran without CLI args -fn normal_navigation(app: &AppHandle, main_window: Window) { +fn normal_navigation(app: &AppHandle, main_window: WebviewWindow) { let exist = connections_exist(app.clone()).unwrap(); if exist { diff --git a/apps/core/src-tauri/src/connection.rs b/apps/core/src-tauri/src/connection.rs index ff833874..830712ad 100644 --- a/apps/core/src-tauri/src/connection.rs +++ b/apps/core/src-tauri/src/connection.rs @@ -1,14 +1,17 @@ use crate::state::SharedState; use sqlx::{AnyConnection, Connection}; use std::{collections::HashMap, path::PathBuf}; +use tauri::{async_runtime::Mutex, AppHandle, Manager, Runtime, State}; #[cfg(feature = "metax")] -use tauri::api::process::{Command, CommandChild}; -use tauri::{async_runtime::Mutex, Runtime, State}; +use tauri_plugin_shell::process::CommandChild; +#[cfg(feature = "metax")] +use tauri_plugin_shell::ShellExt; +use tauri_specta::Event; use tx_handlers::{mysql::MySQLHandler, postgres::PostgresHandler, sqlite::SQLiteHandler}; use tx_lib::{ fs::{delete_from_connections_file, read_from_connections_file, write_into_connections_file}, handler::Handler, - types::{ConnConfig, Drivers}, + types::{ConnConfig, ConnectionsChangedEvent, Drivers}, }; #[tauri::command] @@ -23,7 +26,7 @@ pub async fn test_connection(conn_string: String) -> Result { let _ = con.close().await; - Ok("Connection is healthy".to_string()) + Ok("Connection is healthy".into()) } #[tauri::command] @@ -33,23 +36,25 @@ pub fn create_connection_record( conn_string: String, conn_name: String, driver: Drivers, -) -> Result<(), String> { +) -> Result { let mut connections_file_path = get_connections_file_path(&app)?; write_into_connections_file(&mut connections_file_path, driver, conn_string, conn_name)?; - Ok(()) + Ok(String::from("Successfully created connection")) } #[tauri::command] #[specta::specta] -pub fn delete_connection_record(app: tauri::AppHandle, conn_id: String) -> Result<(), String> { +pub fn delete_connection_record(app: tauri::AppHandle, conn_id: String) -> Result { let mut connections_file_path = get_connections_file_path(&app)?; delete_from_connections_file(&mut connections_file_path, conn_id)?; - Ok(()) + ConnectionsChangedEvent.emit(&app).unwrap(); + Ok(String::from("Successfully deleted connection")) } #[tauri::command] #[specta::specta] pub async fn establish_connection( + _app: AppHandle, state: State<'_, Mutex>, conn_string: String, driver: Drivers, @@ -74,7 +79,7 @@ pub async fn establish_connection( state.handler = Some(handler); #[cfg(feature = "metax")] { - let child = spawn_sidecar(driver, conn_string); + let child = spawn_sidecar(_app, driver, conn_string); state.metax = Some(child); } @@ -82,7 +87,7 @@ pub async fn establish_connection( } #[cfg(feature = "metax")] -fn spawn_sidecar(driver: Drivers, conn_string: String) -> CommandChild { +fn spawn_sidecar(app: AppHandle, driver: Drivers, conn_string: String) -> CommandChild { let args = match driver { Drivers::SQLite => { let (_, after) = conn_string.split_once(':').unwrap(); @@ -104,7 +109,9 @@ fn spawn_sidecar(driver: Drivers, conn_string: String) -> CommandChild { } }; - let (_, child) = Command::new_sidecar("meta-x") + let (_, child) = app + .shell() + .sidecar("meta-x") .expect("failed to create `meta-x` binary command") .args(args) .spawn() @@ -150,9 +157,9 @@ pub fn get_connection_details( /// **Varies by platform**. pub fn get_connections_file_path(app: &tauri::AppHandle) -> Result { let mut config_dir = app - .path_resolver() + .path() .app_config_dir() - .ok_or("Couldn't read config dir path".to_string())?; + .map_err(|_| "Couldn't read config dir path".to_string())?; config_dir.push("connections.json"); Ok(config_dir) } diff --git a/apps/core/src-tauri/src/main.rs b/apps/core/src-tauri/src/main.rs index 836d4e2c..d06c3e0d 100644 --- a/apps/core/src-tauri/src/main.rs +++ b/apps/core/src-tauri/src/main.rs @@ -13,22 +13,21 @@ use connection::{ get_connection_details, get_connections, test_connection, }; use row::{create_row, delete_rows, get_fk_relations, get_paginated_rows, update_row}; -#[cfg(debug_assertions)] -use specta::ts::{BigIntExportBehavior, ExportConfiguration}; +use specta::ts::{BigIntExportBehavior, ExportConfig}; use table::{get_columns_props, get_tables}; use tauri::async_runtime::Mutex; use tauri::{Manager, Window, WindowEvent}; -#[cfg(debug_assertions)] -use tauri_specta::ts; +use tauri_specta::{collect_commands, collect_events}; +use tx_lib::types::{ConnectionsChangedEvent, TableContentsChangedEvent}; #[tauri::command] #[specta::specta] fn close_splashscreen(window: Window) { - if let Some(splashscreen) = window.get_window("splashscreen") { + if let Some(splashscreen) = window.get_webview_window("splashscreen") { splashscreen.close().unwrap(); window - .get_window("main") + .get_webview_window("main") .expect("no window labeled 'main' found") .show() .unwrap(); @@ -36,81 +35,78 @@ fn close_splashscreen(window: Window) { } fn main() { - #[cfg(debug_assertions)] - { - let res = specta::collect_types![ - close_splashscreen, - test_connection, - create_connection_record, - delete_connection_record, - establish_connection, - connections_exist, - get_connections, - get_connection_details, - get_tables, - get_paginated_rows, - delete_rows, - get_columns_props, - create_row, - update_row, - get_fk_relations - ] - .expect("Failed to collect tauri commands types"); - ts::export_with_cfg( - res, - ExportConfiguration::default().bigint(BigIntExportBehavior::Number), - "../src/bindings.ts", - ) - .expect("Failed to export specta bindings"); - } + let (invoke_handler, register_events) = { + let builder = tauri_specta::ts::builder() + .commands(collect_commands![ + close_splashscreen, + test_connection, + create_connection_record, + delete_connection_record, + establish_connection, + connections_exist, + get_connections, + get_connection_details, + get_tables, + get_paginated_rows, + delete_rows, + get_columns_props, + create_row, + update_row, + get_fk_relations + ]) + .events(collect_events![ + ConnectionsChangedEvent, + TableContentsChangedEvent + ]); + + #[cfg(debug_assertions)] + let builder = builder.path("../src/bindings.ts"); + let builder = builder.config(ExportConfig::default().bigint(BigIntExportBehavior::Number)); + + builder.build().unwrap() + }; let (args, cmd) = cli::parse_cli_args(); - tauri::Builder::default() + let tauri_builder = tauri::Builder::default() + .plugin(tauri_plugin_clipboard_manager::init()) + .plugin(tauri_plugin_global_shortcut::Builder::new().build()) + .plugin(tauri_plugin_dialog::init()) .manage(Mutex::new(SharedState::default())) .setup(|app| { + register_events(app); + let rt = tokio::runtime::Runtime::new().unwrap(); - rt.block_on(cli::handle_cli_args(&app.app_handle(), args, cmd)); + rt.block_on(cli::handle_cli_args(app.app_handle(), args, cmd)); #[cfg(debug_assertions)] { - let main_window = app.get_window("main").unwrap(); + let main_window = app.get_webview_window("main").unwrap(); main_window.open_devtools(); main_window.close_devtools(); } Ok(()) }) - .invoke_handler(tauri::generate_handler![ - close_splashscreen, - test_connection, - create_connection_record, - delete_connection_record, - establish_connection, - connections_exist, - get_connections, - get_connection_details, - get_tables, - get_paginated_rows, - delete_rows, - get_columns_props, - create_row, - update_row, - get_fk_relations - ]) - .on_window_event(move |event| { - if let WindowEvent::Destroyed = event.event() { + .invoke_handler(invoke_handler) + .on_window_event(move |window, event| { + if let WindowEvent::Destroyed = event { // If the destroyed window is for e.g splashscreen then don't cleanup - if event.window().label() != "main" { + if window.label() != "main" { return; } - let state = event.window().state::>(); + let state = window.state::>(); let rt = tokio::runtime::Runtime::new().unwrap(); let mut stt = rt.block_on(state.lock()); rt.block_on(stt.cleanup()); rt.shutdown_background(); } - }) + }); + + #[cfg(feature = "metax")] + tauri_builder.plugin(tauri_plugin_shell::init()); + + tauri_builder .run(tauri::generate_context!()) .expect("error while running tauri application"); } diff --git a/apps/core/src-tauri/src/row.rs b/apps/core/src-tauri/src/row.rs index 97ef39a3..ecd5cf18 100644 --- a/apps/core/src-tauri/src/row.rs +++ b/apps/core/src-tauri/src/row.rs @@ -2,8 +2,9 @@ use crate::state::SharedState; use serde_json::Map; use serde_json::Value as JsonValue; use std::collections::HashMap; -use tauri::async_runtime::Mutex; -use tauri::State; +use tauri::{async_runtime::Mutex, AppHandle, State}; +use tauri_specta::Event; +use tx_lib::types::TableContentsChangedEvent; use tx_lib::types::{FKRows, PaginatedRows}; #[tauri::command] @@ -26,11 +27,12 @@ pub async fn get_paginated_rows( #[tauri::command] #[specta::specta] pub async fn delete_rows( + app: AppHandle, state: State<'_, Mutex>, pk_col_name: String, row_pk_values: Vec, table_name: String, -) -> Result { +) -> Result { let state = state.lock().await; let pool = state.pool.as_ref().unwrap(); let handler = state.handler.as_deref().unwrap(); @@ -46,18 +48,23 @@ pub async fn delete_rows( } params.pop(); // to remove the last trailing comma - handler + let result = handler .delete_rows(pool, pk_col_name, table_name, params) - .await + .await; + if result.is_ok() { + TableContentsChangedEvent.emit(&app).unwrap() + } + result } #[tauri::command] #[specta::specta] pub async fn create_row( + app: AppHandle, state: State<'_, Mutex>, table_name: String, data: HashMap, -) -> Result { +) -> Result { let state = state.lock().await; let pool = state.pool.as_ref().unwrap(); let handler = state.handler.as_deref().unwrap(); @@ -77,24 +84,29 @@ pub async fn create_row( values = values.replace('\"', "'"); - handler.create_row(pool, table_name, columns, values).await + let result = handler.create_row(pool, table_name, columns, values).await; + if result.is_ok() { + TableContentsChangedEvent.emit(&app).unwrap(); + } + result } #[tauri::command] #[specta::specta] pub async fn update_row( + app: AppHandle, state: State<'_, Mutex>, table_name: String, pk_col_name: String, pk_col_value: JsonValue, data: Map, -) -> Result { +) -> Result { let state = state.lock().await; let pool = state.pool.as_ref().unwrap(); let handler = state.handler.as_deref().unwrap(); if data.is_empty() { - return Ok(0); + return Ok(String::new()); } let mut set_condition: String = Default::default(); for (key, value) in data.iter() { @@ -102,9 +114,13 @@ pub async fn update_row( } set_condition.pop(); // to remove the trailing comma - handler + let result = handler .update_row(pool, table_name, set_condition, pk_col_name, pk_col_value) - .await + .await; + if result.is_ok() { + TableContentsChangedEvent.emit(&app).unwrap(); + } + result } #[tauri::command] diff --git a/apps/core/src-tauri/src/state.rs b/apps/core/src-tauri/src/state.rs index 721ee457..e4d1c337 100644 --- a/apps/core/src-tauri/src/state.rs +++ b/apps/core/src-tauri/src/state.rs @@ -1,6 +1,6 @@ use sqlx::AnyPool; #[cfg(feature = "metax")] -use tauri::api::process::CommandChild; +use tauri_plugin_shell::process::CommandChild; use tx_lib::handler::Handler; #[derive(Default, Debug)] diff --git a/apps/core/src-tauri/tauri.conf.json b/apps/core/src-tauri/tauri.conf.json index 50f5bd13..87160f3b 100644 --- a/apps/core/src-tauri/tauri.conf.json +++ b/apps/core/src-tauri/tauri.conf.json @@ -3,65 +3,44 @@ "build": { "beforeBuildCommand": "pnpm build", "beforeDevCommand": "pnpm dev", - "devPath": "http://localhost:5173", - "distDir": "../dist" + "frontendDist": "../dist", + "devUrl": "http://localhost:5173" }, - "package": { - "productName": "TableX", - "version": "../package.json" - }, - "tauri": { - "allowlist": { - "all": false, - "dialog": { - "open": true - }, - "globalShortcut": { - "all": true - }, - "clipboard": { - "writeText": true - }, - "os": { - "all": true - }, - "shell": { - "open": true - } + "bundle": { + "active": true, + "category": "DeveloperTool", + "copyright": "", + "targets": "all", + "externalBin": [], + "icon": [ + "icons/icon.ico" + ], + "windows": { + "certificateThumbprint": null, + "digestAlgorithm": "sha256", + "timestampUrl": "" + }, + "longDescription": "", + "macOS": { + "entitlements": null, + "exceptionDomain": "", + "frameworks": [], + "providerShortName": null, + "signingIdentity": null }, - "bundle": { - "active": true, - "category": "DeveloperTool", - "copyright": "", + "resources": [], + "shortDescription": "", + "linux": { "deb": { "depends": [] - }, - "externalBin": [], - "icon": ["icons/icon.ico"], - "identifier": "tablex", - "longDescription": "", - "macOS": { - "entitlements": null, - "exceptionDomain": "", - "frameworks": [], - "providerShortName": null, - "signingIdentity": null - }, - "resources": [], - "shortDescription": "", - "targets": "all", - "windows": { - "certificateThumbprint": null, - "digestAlgorithm": "sha256", - "timestampUrl": "" } - }, - "security": { - "csp": null - }, - "updater": { - "active": false - }, + } + }, + "productName": "TableX", + "version": "../package.json", + "identifier": "tablex", + "plugins": {}, + "app": { "windows": [ { "fullscreen": false, @@ -73,14 +52,17 @@ "visible": false }, { - "width": 600, - "height": 350, - "decorations": false, - "url": "splashscreen.html", - "label": "splashscreen", - "center": true, - "visible": false + "width": 600, + "height": 350, + "decorations": false, + "url": "splashscreen.html", + "label": "splashscreen", + "center": true, + "visible": false } - ] + ], + "security": { + "csp": null + } } } \ No newline at end of file diff --git a/apps/core/src-tauri/tauri.conf.sidecar.json b/apps/core/src-tauri/tauri.conf.sidecar.json index 95bf4a41..b26db058 100644 --- a/apps/core/src-tauri/tauri.conf.sidecar.json +++ b/apps/core/src-tauri/tauri.conf.sidecar.json @@ -1,93 +1,6 @@ { "$schema": "../node_modules/@tauri-apps/cli/schema.json", - "build": { - "beforeBuildCommand": "pnpm build", - "beforeDevCommand": "pnpm dev", - "devPath": "http://localhost:5173", - "distDir": "../dist" - }, - "package": { - "productName": "TableX", - "version": "../package.json" - }, - "tauri": { - "allowlist": { - "all": false, - "dialog": { - "open": true - }, - "globalShortcut": { - "all": true - }, - "clipboard": { - "writeText": true - }, - "os": { - "all": true - }, - "shell": { - "open": true, - "sidecar": true, - "scope": [ - {"name": "../../bin/meta-x","sidecar": true} - ] - } - }, - "bundle": { - "active": true, - "category": "DeveloperTool", - "copyright": "", - "deb": { - "depends": [] - }, - "externalBin": [ - "../../bin/meta-x" - ], - "icon": ["icons/icon.ico"], - "identifier": "tablex", - "longDescription": "", - "macOS": { - "entitlements": null, - "exceptionDomain": "", - "frameworks": [], - "providerShortName": null, - "signingIdentity": null - }, - "resources": [], - "shortDescription": "", - "targets": "all", - "windows": { - "certificateThumbprint": null, - "digestAlgorithm": "sha256", - "timestampUrl": "" - } - }, - "security": { - "csp": null - }, - "updater": { - "active": false - }, - "windows": [ - { - "fullscreen": false, - "height": 600, - "resizable": true, - "title": "TableX", - "width": 800, - "center": true, - "visible": false - }, - { - "width": 600, - "height": 350, - "decorations": false, - "url": "splashscreen.html", - "label": "splashscreen", - "center": true, - "visible": false - } - ] + "bundle": { + "externalBin": ["../../bin/meta-x"] } - } diff --git a/apps/core/src/bindings.ts b/apps/core/src/bindings.ts index 013907bc..7e32ecf0 100644 --- a/apps/core/src/bindings.ts +++ b/apps/core/src/bindings.ts @@ -1,83 +1,203 @@ -/* eslint-disable */ -// This file was generated by [tauri-specta](https://github.com/oscartbeaumont/tauri-specta). Do not edit this file manually. - -declare global { - interface Window { - __TAURI_INVOKE__(cmd: string, args?: Record): Promise; - } -} - -// Function avoids 'window not defined' in SSR -const invoke = () => window.__TAURI_INVOKE__; - -export function closeSplashscreen() { - return invoke()("close_splashscreen") -} - -export function testConnection(connString: string) { - return invoke()("test_connection", { connString }) -} - -export function createConnectionRecord(connString: string, connName: string, driver: Drivers) { - return invoke()("create_connection_record", { connString,connName,driver }) -} - -export function deleteConnectionRecord(connId: string) { - return invoke()("delete_connection_record", { connId }) -} - -export function establishConnection(connString: string, driver: Drivers) { - return invoke()("establish_connection", { connString,driver }) -} - -export function connectionsExist() { - return invoke()("connections_exist") -} - -export function getConnections() { - return invoke()<{ [key: string]: ConnConfig }>("get_connections") -} - -export function getConnectionDetails(connId: string) { - return invoke()("get_connection_details", { connId }) -} - -export function getTables() { - return invoke()("get_tables") -} - -export function getPaginatedRows(tableName: string, pageIndex: number, pageSize: number) { - return invoke()("get_paginated_rows", { tableName,pageIndex,pageSize }) -} - -export function deleteRows(pkColName: string, rowPkValues: any[], tableName: string) { - return invoke()("delete_rows", { pkColName,rowPkValues,tableName }) -} - -export function getColumnsProps(tableName: string) { - return invoke()("get_columns_props", { tableName }) -} - -export function createRow(tableName: string, data: { [key: string]: any }) { - return invoke()("create_row", { tableName,data }) -} - -export function updateRow(tableName: string, pkColName: string, pkColValue: any, data: { [key: string]: any }) { - return invoke()("update_row", { tableName,pkColName,pkColValue,data }) -} - -export function getFkRelations(tableName: string, columnName: string, cellValue: any) { - return invoke()("get_fk_relations", { tableName,columnName,cellValue }) -} - -/** - * Supported drivers, stored inside connection config in `connections.json`. - */ -export type Drivers = "sqlite" | "postgresql" | "mysql" -export type FKRows = { tableName: string; rows: { [key: string]: any }[] } -export type ColumnProps = { columnName: string; type: string; isNullable: boolean; defaultValue: any; isPK: boolean; hasFkRelations: boolean } -export type PaginatedRows = { data: { [key: string]: any }[]; pageCount: number } + // This file was generated by [tauri-specta](https://github.com/oscartbeaumont/tauri-specta). Do not edit this file manually. + + export const commands = { +async closeSplashscreen() : Promise { +await TAURI_INVOKE("close_splashscreen"); +}, +async testConnection(connString: string) : Promise> { +try { + return { status: "ok", data: await TAURI_INVOKE("test_connection", { connString }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async createConnectionRecord(connString: string, connName: string, driver: Drivers) : Promise> { +try { + return { status: "ok", data: await TAURI_INVOKE("create_connection_record", { connString, connName, driver }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async deleteConnectionRecord(connId: string) : Promise> { +try { + return { status: "ok", data: await TAURI_INVOKE("delete_connection_record", { connId }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async establishConnection(connString: string, driver: Drivers) : Promise> { +try { + return { status: "ok", data: await TAURI_INVOKE("establish_connection", { connString, driver }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async connectionsExist() : Promise> { +try { + return { status: "ok", data: await TAURI_INVOKE("connections_exist") }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async getConnections() : Promise> { +try { + return { status: "ok", data: await TAURI_INVOKE("get_connections") }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async getConnectionDetails(connId: string) : Promise> { +try { + return { status: "ok", data: await TAURI_INVOKE("get_connection_details", { connId }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async getTables() : Promise> { +try { + return { status: "ok", data: await TAURI_INVOKE("get_tables") }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async getPaginatedRows(tableName: string, pageIndex: number, pageSize: number) : Promise> { +try { + return { status: "ok", data: await TAURI_INVOKE("get_paginated_rows", { tableName, pageIndex, pageSize }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async deleteRows(pkColName: string, rowPkValues: JsonValue[], tableName: string) : Promise> { +try { + return { status: "ok", data: await TAURI_INVOKE("delete_rows", { pkColName, rowPkValues, tableName }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async getColumnsProps(tableName: string) : Promise> { +try { + return { status: "ok", data: await TAURI_INVOKE("get_columns_props", { tableName }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async createRow(tableName: string, data: { [key in string]: JsonValue }) : Promise> { +try { + return { status: "ok", data: await TAURI_INVOKE("create_row", { tableName, data }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async updateRow(tableName: string, pkColName: string, pkColValue: JsonValue, data: { [key in string]: JsonValue }) : Promise> { +try { + return { status: "ok", data: await TAURI_INVOKE("update_row", { tableName, pkColName, pkColValue, data }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +}, +async getFkRelations(tableName: string, columnName: string, cellValue: JsonValue) : Promise> { +try { + return { status: "ok", data: await TAURI_INVOKE("get_fk_relations", { tableName, columnName, cellValue }) }; +} catch (e) { + if(e instanceof Error) throw e; + else return { status: "error", error: e as any }; +} +} +} + +export const events = __makeEvents__<{ +connectionsChangedEvent: ConnectionsChangedEvent, +tableContentsChangedEvent: TableContentsChangedEvent +}>({ +connectionsChangedEvent: "connections-changed-event", +tableContentsChangedEvent: "table-contents-changed-event" +}) + +/** user-defined types **/ + +export type ColumnProps = { columnName: string; type: string; isNullable: boolean; defaultValue: JsonValue; isPK: boolean; hasFkRelations: boolean } /** * Connection Config Stored inside `connections.json` file */ export type ConnConfig = { driver: Drivers; connString: string; connName: string } +export type ConnectionsChangedEvent = null +/** + * Supported drivers, stored inside connection config in `connections.json`. + */ +export type Drivers = "sqlite" | "postgresql" | "mysql" +export type FKRows = { tableName: string; rows: { [key in string]: JsonValue }[] } +export type JsonValue = null | boolean | number | string | JsonValue[] | { [key in string]: JsonValue } +export type PaginatedRows = { data: { [key in string]: JsonValue }[]; pageCount: number } +export type TableContentsChangedEvent = null + +/** tauri-specta globals **/ + + import { invoke as TAURI_INVOKE } from "@tauri-apps/api/core"; +import * as TAURI_API_EVENT from "@tauri-apps/api/event"; +import { type WebviewWindow as __WebviewWindow__ } from "@tauri-apps/api/webviewWindow"; + +type __EventObj__ = { + listen: ( + cb: TAURI_API_EVENT.EventCallback + ) => ReturnType>; + once: ( + cb: TAURI_API_EVENT.EventCallback + ) => ReturnType>; + emit: T extends null + ? (payload?: T) => ReturnType + : (payload: T) => ReturnType; +}; + +export type Result = + | { status: "ok"; data: T } + | { status: "error"; error: E }; + +function __makeEvents__>( + mappings: Record +) { + return new Proxy( + {} as unknown as { + [K in keyof T]: __EventObj__ & { + (handle: __WebviewWindow__): __EventObj__; + }; + }, + { + get: (_, event) => { + const name = mappings[event as keyof T]; + + return new Proxy((() => {}) as any, { + apply: (_, __, [window]: [__WebviewWindow__]) => ({ + listen: (arg: any) => window.listen(name, arg), + once: (arg: any) => window.once(name, arg), + emit: (arg: any) => window.emit(name, arg), + }), + get: (_, command: keyof __EventObj__) => { + switch (command) { + case "listen": + return (arg: any) => TAURI_API_EVENT.listen(name, arg); + case "once": + return (arg: any) => TAURI_API_EVENT.once(name, arg); + case "emit": + return (arg: any) => TAURI_API_EVENT.emit(name, arg); + } + }, + }); + }, + } + ); +} + + \ No newline at end of file diff --git a/apps/core/src/commands/columns.ts b/apps/core/src/commands/columns.ts index 183ef654..76db5d9d 100644 --- a/apps/core/src/commands/columns.ts +++ b/apps/core/src/commands/columns.ts @@ -1,13 +1,15 @@ -import { getColumnsProps } from "@/bindings" +import { commands } from "@/bindings" import { DATE_DATA_TYPES, NUMERIC_DATA_TYPE, STRING_DATA_TYPES } from "@tablex/lib/constants" +import { unwrapResult } from "@tablex/lib/utils" import { z } from "zod" export const getZodSchemaFromCols = async (tableName: string) => { - const cols = await getColumnsProps(tableName) + const result = await commands.getColumnsProps(tableName) + const cols = unwrapResult(result) const schemaObject: z.ZodRawShape = {} cols.forEach((colProps) => { let validationRule: z.ZodTypeAny diff --git a/apps/core/src/commands/connection.ts b/apps/core/src/commands/connection.ts index 00e7f342..211fbf42 100644 --- a/apps/core/src/commands/connection.ts +++ b/apps/core/src/commands/connection.ts @@ -1,20 +1,12 @@ -import { deleteConnectionRecord, testConnection } from "@/bindings" +import { commands } from "@/bindings" import { customToast } from "@tablex/lib/utils" -import { type Router } from "@tanstack/react-router" export const testConnectionCmd = async (connString: string) => { - const command = testConnection(connString) - customToast(command, (s) => s, "test_connection") + const commandResult = await commands.testConnection(connString) + customToast(commandResult, () => {}, "test_connection") } -export const deleteConnectionCmd = async (router: Router, connId: string) => { - const command = deleteConnectionRecord(connId) - customToast( - command, - () => { - router.invalidate() - return "Succesfully deleted connection" - }, - "delete_connection" - ) +export const deleteConnectionCmd = async (connId: string) => { + const commandResult = await commands.deleteConnectionRecord(connId) + customToast(commandResult, () => {}, "delete_connection") } diff --git a/apps/core/src/commands/row.ts b/apps/core/src/commands/row.ts index 9d48cf31..4dccdad5 100644 --- a/apps/core/src/commands/row.ts +++ b/apps/core/src/commands/row.ts @@ -1,34 +1,23 @@ -import { createRow, deleteRows, updateRow } from "@/bindings" +import { commands } from "@/bindings" import { customToast } from "@tablex/lib/utils" -import type { QueryClient } from "@tanstack/react-query" import type { Row, Table } from "@tanstack/react-table" -import { writeText } from "@tauri-apps/api/clipboard" +import { writeText } from "@tauri-apps/plugin-clipboard-manager" import { Dispatch, SetStateAction } from "react" import toast from "react-hot-toast" export const createRowCmd = async ( tableName: string, data: Record, - setIsSheetOpen: Dispatch>, - queryClient: QueryClient + setIsSheetOpen: Dispatch> ) => { - const command = createRow(tableName, data) + const commandResult = await commands.createRow(tableName, data) - customToast( - command, - (s) => { - setIsSheetOpen(false) - queryClient.invalidateQueries({ queryKey: ["table_rows"] }) - return `Successfully created ${s} row` - }, - "create_row" - ) + customToast(commandResult, () => setIsSheetOpen(false), "create_row") } export const deleteRowsCmd = async ( table: Table, tableName: string, - queryClient: QueryClient, contextMenuRow?: Row ) => { const column = table.getColumn("pk") @@ -51,22 +40,13 @@ export const deleteRowsCmd = async ( rowPkValues = [contextMenuRow.getValue("pk")] } - const command = deleteRows( + const command = await commands.deleteRows( // eslint-disable-next-line @typescript-eslint/no-non-null-asserted-optional-chain column.columnDef.meta?.name!, rowPkValues, tableName ) - customToast( - command, - (rowsAffected) => { - queryClient.invalidateQueries({ queryKey: ["table_rows"] }) - return `Successfully deleted ${ - rowsAffected === 1 ? "1 row" : rowsAffected + " rows" - }` - }, - "delete_row" - ) + customToast(command, () => {}, "delete_row") table.toggleAllRowsSelected(false) } @@ -77,15 +57,13 @@ export const updateRowCmd = async ( data: Record, setIsSheetOpen: Dispatch> ) => { - const command = updateRow(tableName, pkColName, pkColValue, data) - customToast( - command, - () => { - setIsSheetOpen(false) - return `Successfully updated rows` - }, - "update_row" + const command = await commands.updateRow( + tableName, + pkColName, + pkColValue, + data ) + customToast(command, () => setIsSheetOpen(false), "update_row") } export const copyRowIntoClipboard = async ( diff --git a/apps/core/src/routes/dashboard/_layout/-components/create-row-sheet.tsx b/apps/core/src/components/sheets/create-row-sheet.tsx similarity index 90% rename from apps/core/src/routes/dashboard/_layout/-components/create-row-sheet.tsx rename to apps/core/src/components/sheets/create-row-sheet.tsx index dd9e87dc..cdb464ef 100644 --- a/apps/core/src/routes/dashboard/_layout/-components/create-row-sheet.tsx +++ b/apps/core/src/components/sheets/create-row-sheet.tsx @@ -11,7 +11,6 @@ import { TooltipProvider, TooltipTrigger } from "@/components/ui/tooltip" -import { useQueryClient } from "@tanstack/react-query" import { createRowCmd } from "@/commands/row" import LoadingSpinner from "@/components/loading-spinner" @@ -30,6 +29,7 @@ import { zodResolver } from "@hookform/resolvers/zod" import { Plus } from "lucide-react" import { useState, type Dispatch, type SetStateAction } from "react" import { useForm } from "react-hook-form" +import toast from "react-hot-toast" import { z } from "zod" type AddRowBtnProps = { @@ -45,9 +45,9 @@ const AddRowBtn = ({ tableName }: AddRowBtnProps) => { - + @@ -76,17 +76,18 @@ type AddRowFormProps = { } const AddRowForm = ({ setOpenSheet, tableName }: AddRowFormProps) => { - const queryClient = useQueryClient() - const { data, isLoading } = useGetZodSchema(tableName) + const { data, isLoading, error } = useGetZodSchema(tableName) const form = useForm>>({ resolver: zodResolver(data!) }) const onSubmit = async (values: z.infer>) => { - await createRowCmd(tableName, values, setOpenSheet, queryClient) + await createRowCmd(tableName, values, setOpenSheet) } if (isLoading) return + if (error) return toast.error(error.message, { id: "get_zod_schema" }) + return (
diff --git a/apps/core/src/routes/dashboard/_layout/$tableName/-components/edit-row-sheet.tsx b/apps/core/src/components/sheets/edit-row-sheet.tsx similarity index 94% rename from apps/core/src/routes/dashboard/_layout/$tableName/-components/edit-row-sheet.tsx rename to apps/core/src/components/sheets/edit-row-sheet.tsx index 747d9783..c749715e 100644 --- a/apps/core/src/routes/dashboard/_layout/$tableName/-components/edit-row-sheet.tsx +++ b/apps/core/src/components/sheets/edit-row-sheet.tsx @@ -14,7 +14,7 @@ import { Input } from "@/components/ui/input" import { SheetContent, SheetHeader, SheetTitle } from "@/components/ui/sheet" import { zodResolver } from "@hookform/resolvers/zod" import { dirtyValues } from "@tablex/lib/utils" -import { useQuery, useQueryClient } from "@tanstack/react-query" +import { useQuery } from "@tanstack/react-query" import type { Row, Table } from "@tanstack/react-table" import type { Dispatch, SetStateAction } from "react" import { useForm } from "react-hook-form" @@ -34,7 +34,6 @@ const EditRowSheet = ({ table, tableName }: EditRowSheetProps) => { - const queryClient = useQueryClient() const { data, isLoading } = useQuery({ queryKey: [tableName], queryFn: async () => (await getZodSchemaFromCols(tableName)).partial() @@ -60,7 +59,6 @@ const EditRowSheet = ({ dirtyValues(form.formState.dirtyFields, values), setIsSheetOpen ) - queryClient.invalidateQueries({ queryKey: ["table_rows"] }) } if (isLoading) return diff --git a/apps/core/src/hooks/row.ts b/apps/core/src/hooks/row.ts index a1a2d9f8..09cd10f0 100644 --- a/apps/core/src/hooks/row.ts +++ b/apps/core/src/hooks/row.ts @@ -1,5 +1,6 @@ -import { getFkRelations, getPaginatedRows } from "@/bindings" +import { commands } from "@/bindings" import { useQuery } from "@tanstack/react-query" +import { unwrapResult } from "@tablex/lib/utils" /** * Returns foreign key rows related to a specific cell value. @@ -13,7 +14,14 @@ export const useGetFKRelations = ( ) => { return useQuery({ queryKey: ["fk_rows"], - queryFn: async () => await getFkRelations(tableName, columnName, cellValue), + queryFn: async () => { + const result = await commands.getFkRelations( + tableName, + columnName, + cellValue + ) + return unwrapResult(result) + }, enabled: false, placeholderData: [{ tableName: "", rows: [{ "": "" }] }] }) @@ -26,6 +34,14 @@ export const useGetPaginatedRows = ( ) => { return useQuery({ queryKey: ["table_rows", tableName, { pageIndex, pageSize }], - queryFn: async () => await getPaginatedRows(tableName, pageIndex, pageSize) + queryFn: async () => { + const result = await commands.getPaginatedRows( + tableName, + pageIndex, + pageSize + ) + + return unwrapResult(result) + } }) } diff --git a/apps/core/src/main.tsx b/apps/core/src/main.tsx index 4a4b2405..499a32eb 100644 --- a/apps/core/src/main.tsx +++ b/apps/core/src/main.tsx @@ -17,18 +17,6 @@ declare module "@tanstack/react-router" { } } -// if (import.meta.hot) { -// console.log(true) -// import.meta.hot.on("vite:beforeUpdate", () => { -// // unregisterAll() -// console.log("beforeUpdate") -// }) -// import.meta.hot.on("vite:beforeFullReload", () => { -// // unregisterAll() -// console.log("beforeFullReload") -// }) -// } - const client = new QueryClient() const rootElement = document.getElementById("app")! diff --git a/apps/core/src/routeTree.gen.ts b/apps/core/src/routeTree.gen.ts index f4ede0ee..dc4305d2 100644 --- a/apps/core/src/routeTree.gen.ts +++ b/apps/core/src/routeTree.gen.ts @@ -8,6 +8,8 @@ // This file is auto-generated by TanStack Router +import { createFileRoute } from '@tanstack/react-router' + // Import Routes import { Route as rootRoute } from './routes/__root' @@ -18,8 +20,17 @@ import { Route as DashboardLayoutImport } from './routes/dashboard/_layout' import { Route as DashboardLayoutLandRouteImport } from './routes/dashboard/_layout/land/route' import { Route as DashboardLayoutTableNameRouteImport } from './routes/dashboard/_layout/$tableName/route' +// Create Virtual Routes + +const DashboardImport = createFileRoute('/dashboard')() + // Create/Update Routes +const DashboardRoute = DashboardImport.update({ + path: '/dashboard', + getParentRoute: () => rootRoute, +} as any) + const ConnectionsRouteRoute = ConnectionsRouteImport.update({ path: '/connections', getParentRoute: () => rootRoute, @@ -36,8 +47,8 @@ const IndexRouteRoute = IndexRouteImport.update({ } as any) const DashboardLayoutRoute = DashboardLayoutImport.update({ - path: '/dashboard/layout', - getParentRoute: () => rootRoute, + id: '/_layout', + getParentRoute: () => DashboardRoute, } as any) const DashboardLayoutLandRouteRoute = DashboardLayoutLandRouteImport.update({ @@ -56,26 +67,51 @@ const DashboardLayoutTableNameRouteRoute = declare module '@tanstack/react-router' { interface FileRoutesByPath { '/': { + id: '/' + path: '/' + fullPath: '/' preLoaderRoute: typeof IndexRouteImport parentRoute: typeof rootRoute } '/connect': { + id: '/connect' + path: '/connect' + fullPath: '/connect' preLoaderRoute: typeof ConnectRouteImport parentRoute: typeof rootRoute } '/connections': { + id: '/connections' + path: '/connections' + fullPath: '/connections' preLoaderRoute: typeof ConnectionsRouteImport parentRoute: typeof rootRoute } + '/dashboard': { + id: '/dashboard' + path: '/dashboard' + fullPath: '/dashboard' + preLoaderRoute: typeof DashboardImport + parentRoute: typeof rootRoute + } '/dashboard/_layout': { + id: '/dashboard/_layout' + path: '/dashboard' + fullPath: '/dashboard' preLoaderRoute: typeof DashboardLayoutImport - parentRoute: typeof rootRoute + parentRoute: typeof DashboardRoute } '/dashboard/_layout/$tableName': { + id: '/dashboard/_layout/$tableName' + path: '/$tableName' + fullPath: '/dashboard/$tableName' preLoaderRoute: typeof DashboardLayoutTableNameRouteImport parentRoute: typeof DashboardLayoutImport } '/dashboard/_layout/land': { + id: '/dashboard/_layout/land' + path: '/land' + fullPath: '/dashboard/land' preLoaderRoute: typeof DashboardLayoutLandRouteImport parentRoute: typeof DashboardLayoutImport } @@ -84,14 +120,63 @@ declare module '@tanstack/react-router' { // Create and export the route tree -export const routeTree = rootRoute.addChildren([ +export const routeTree = rootRoute.addChildren({ IndexRouteRoute, ConnectRouteRoute, ConnectionsRouteRoute, - DashboardLayoutRoute.addChildren([ - DashboardLayoutTableNameRouteRoute, - DashboardLayoutLandRouteRoute, - ]), -]) + DashboardRoute: DashboardRoute.addChildren({ + DashboardLayoutRoute: DashboardLayoutRoute.addChildren({ + DashboardLayoutTableNameRouteRoute, + DashboardLayoutLandRouteRoute, + }), + }), +}) /* prettier-ignore-end */ + +/* ROUTE_MANIFEST_START +{ + "routes": { + "__root__": { + "filePath": "__root.tsx", + "children": [ + "/", + "/connect", + "/connections", + "/dashboard" + ] + }, + "/": { + "filePath": "index/route.tsx" + }, + "/connect": { + "filePath": "connect/route.tsx" + }, + "/connections": { + "filePath": "connections/route.tsx" + }, + "/dashboard": { + "filePath": "dashboard", + "children": [ + "/dashboard/_layout" + ] + }, + "/dashboard/_layout": { + "filePath": "dashboard/_layout.tsx", + "parent": "/dashboard", + "children": [ + "/dashboard/_layout/$tableName", + "/dashboard/_layout/land" + ] + }, + "/dashboard/_layout/$tableName": { + "filePath": "dashboard/_layout/$tableName/route.tsx", + "parent": "/dashboard/_layout" + }, + "/dashboard/_layout/land": { + "filePath": "dashboard/_layout/land/route.tsx", + "parent": "/dashboard/_layout" + } + } +} +ROUTE_MANIFEST_END */ diff --git a/apps/core/src/routes/__root.tsx b/apps/core/src/routes/__root.tsx index 19d02085..3f5d0873 100644 --- a/apps/core/src/routes/__root.tsx +++ b/apps/core/src/routes/__root.tsx @@ -1,4 +1,4 @@ -import { closeSplashscreen } from "@/bindings" +import { commands } from "@/bindings" import { createRootRoute, Outlet } from "@tanstack/react-router" import React, { Suspense } from "react" import { Toaster } from "react-hot-toast" @@ -14,7 +14,7 @@ const TanStackRouterDevtools = ) export const Route = createRootRoute({ - onEnter: closeSplashscreen, + onEnter: commands.closeSplashscreen, component: () => { return (
diff --git a/apps/core/src/routes/connect/-components/pg-mysql-connection.tsx b/apps/core/src/routes/connect/-components/pg-mysql-connection.tsx index b2e9b7e4..d3e98f48 100644 --- a/apps/core/src/routes/connect/-components/pg-mysql-connection.tsx +++ b/apps/core/src/routes/connect/-components/pg-mysql-connection.tsx @@ -1,9 +1,5 @@ import type { Drivers } from "@/bindings" -import { - createConnectionRecord, - establishConnection, - testConnection -} from "@/bindings" +import { commands } from "@/bindings" import { Form, FormControl, @@ -20,6 +16,7 @@ import { constructConnectionString, customToast } from "@tablex/lib/utils" import { useNavigate } from "@tanstack/react-router" import { useState } from "react" import { useForm } from "react-hook-form" +import { toast } from "react-hot-toast" import { z } from "zod" import ConnectionActions from "./connection-actions" @@ -90,19 +87,17 @@ const ConnectionParamsForm = ({ driver }: ConnectionParamsFormProps) => { values: z.infer ) => { const connString = constructConnectionString({ ...values, driver }) - customToast( - establishConnection(connString, driver), - () => { - navigate({ - to: "/dashboard/layout/land", - search: { - connectionName: values.connName - } - }) - return "Successfully established connection" - }, - "establish_connection" - ) + const result = await commands.establishConnection(connString, driver) + if (result.status === "error") { + return toast.error(result.error, { id: "establish_connection" }) + } + + navigate({ + to: "/dashboard/land", + search: { + connectionName: values.connName + } + }) } const onClickSave = async ( @@ -112,19 +107,25 @@ const ConnectionParamsForm = ({ driver }: ConnectionParamsFormProps) => { driver: driver, ...values }) - await createConnectionRecord(values.connName, connString, driver) - navigate({ to: "/connections" }) + customToast( + await commands.createConnectionRecord( + connString, + values.connName, + driver + ), + () => navigate({ to: "/connections" }) + ) } const onClickTest = async ( values: z.infer ) => { const connString = constructConnectionString({ ...values, driver }) - await testConnection(connString) + customToast(await commands.testConnection(connString), () => {}) } return ( - + { const onClickConnect = async ( values: z.infer ) => { - customToast( - establishConnection(values.connString, driver), - () => { - navigate({ - to: "/dashboard/layout/land", - search: { - connectionName: values.connName - } - }) - return "Successfully established connection" - }, - "establish_connection" - ) + const result = await commands.establishConnection(values.connString, driver) + if (result.status === "error") { + return toast.error(result.error, { id: "establish_connection" }) + } + navigate({ + to: "/dashboard/land", + search: { + connectionName: values.connName + } + }) } const onClickSave = async ( values: z.infer ) => { - await createConnectionRecord(values.connName, values.connString, driver) - navigate({ to: "/connections" }) + const commandResult = await commands.createConnectionRecord( + values.connString, + values.connName, + driver + ) + customToast( + commandResult, + () => navigate({ to: "/connections" }), + "create_connection" + ) } const onClickTest = async ( values: z.infer ) => { - await testConnection(values.connString) + const commandResult = await commands.testConnection(values.connString) + if (commandResult.status === "error") { + return toast.error(commandResult.error) + } } return ( diff --git a/apps/core/src/routes/connect/-components/sqlite-connection.tsx b/apps/core/src/routes/connect/-components/sqlite-connection.tsx index 8ecb96c9..2096cd09 100644 --- a/apps/core/src/routes/connect/-components/sqlite-connection.tsx +++ b/apps/core/src/routes/connect/-components/sqlite-connection.tsx @@ -1,8 +1,5 @@ -import { - createConnectionRecord, - establishConnection, - testConnection -} from "@/bindings" +import { commands } from "@/bindings" +import { testConnectionCmd } from "@/commands/connection" import { Button } from "@/components/ui/button" import { Form, @@ -17,9 +14,10 @@ import { zodResolver } from "@hookform/resolvers/zod" import { Drivers } from "@tablex/lib/types" import { constructConnectionString, customToast } from "@tablex/lib/utils" import { useNavigate } from "@tanstack/react-router" -import { open } from "@tauri-apps/api/dialog" +import { open } from "@tauri-apps/plugin-dialog" import { useState } from "react" import { useForm } from "react-hook-form" +import toast from "react-hot-toast" import { z } from "zod" import ConnectionActions from "./connection-actions" @@ -31,7 +29,7 @@ const SQLiteConnectionForm = () => { - - - - - - - {table.getState().pagination.pageIndex + 1} - - - - - - - - - - - ) -} diff --git a/apps/core/src/routes/dashboard/_layout/$tableName/-components/fk-dropdown.tsx b/apps/core/src/routes/dashboard/_layout/$tableName/-components/fk-dropdown.tsx index d2eee4b5..e05ffefc 100644 --- a/apps/core/src/routes/dashboard/_layout/$tableName/-components/fk-dropdown.tsx +++ b/apps/core/src/routes/dashboard/_layout/$tableName/-components/fk-dropdown.tsx @@ -71,7 +71,7 @@ const ForeignKeyDropdown = ({ {fkRow.rows.map((row) => ( {Object.values(row).map((rowValue) => ( - {rowValue} + {rowValue?.toString()} ))} ))} diff --git a/apps/core/src/routes/dashboard/_layout/$tableName/-components/table-actions.tsx b/apps/core/src/routes/dashboard/_layout/$tableName/-components/table-actions.tsx new file mode 100644 index 00000000..e98a0b62 --- /dev/null +++ b/apps/core/src/routes/dashboard/_layout/$tableName/-components/table-actions.tsx @@ -0,0 +1,90 @@ +import { Button } from "@/components/ui/button" +import { + Pagination, + PaginationContent, + PaginationItem, + PaginationLink +} from "@/components/ui/pagination" +import type { Table } from "@tanstack/react-table" +import { + ChevronLeft, + ChevronRight, + ChevronsLeft, + ChevronsRight +} from "lucide-react" + +type TableActionsProps = { + tableName: string + table: Table +} + +const TableActions = ({ tableName, table }: TableActionsProps) => { + return ( +
+

{tableName}

+ +
+ ) +} + +export default TableActions + +type PaginationControlsProps = { + table: Table +} + +const PaginationControls = ({ table }: PaginationControlsProps) => { + return ( + + + + + + + + + + + {table.getState().pagination.pageIndex + 1} + + + + + + + + + + + ) +} diff --git a/apps/core/src/routes/dashboard/_layout/$tableName/route.tsx b/apps/core/src/routes/dashboard/_layout/$tableName/route.tsx index 4cf543e3..28dc26b3 100644 --- a/apps/core/src/routes/dashboard/_layout/$tableName/route.tsx +++ b/apps/core/src/routes/dashboard/_layout/$tableName/route.tsx @@ -1,6 +1,7 @@ import LoadingSpinner from "@/components/loading-spinner" import { useGetTableColumns } from "@/hooks/table" import { createFileRoute } from "@tanstack/react-router" +import { toast } from "react-hot-toast" import { z } from "zod" import DataTable from "./-components/data-table" @@ -17,11 +18,16 @@ export const Route = createFileRoute("/dashboard/_layout/$tableName")({ function TableData() { const { tableName } = Route.useParams() - const { data: columns, isLoading: isColumnsLoading } = - useGetTableColumns(tableName) + const { + data: columns, + isLoading: isColumnsLoading, + error + } = useGetTableColumns(tableName) if (isColumnsLoading) return + if (error) return toast.error(error.message, { id: "get_table_columns" }) + return (
diff --git a/apps/core/src/routes/dashboard/_layout/-components/command-palette.tsx b/apps/core/src/routes/dashboard/_layout/-components/command-palette.tsx index 99371bea..9acfa483 100644 --- a/apps/core/src/routes/dashboard/_layout/-components/command-palette.tsx +++ b/apps/core/src/routes/dashboard/_layout/-components/command-palette.tsx @@ -8,8 +8,7 @@ import { } from "@/components/ui/command" import { useNavigate } from "@tanstack/react-router" import { FileText, Globe2, Link } from "lucide-react" - -import { Dispatch, SetStateAction, useEffect, useState } from "react" +import { type Dispatch, type SetStateAction, useEffect, useState } from "react" interface CommandPaletteProps { setIsDialogOpen: Dispatch> diff --git a/apps/core/src/routes/dashboard/_layout/-components/api-docs-dialog.tsx b/apps/core/src/routes/dashboard/_layout/-components/metax-dialog.tsx similarity index 93% rename from apps/core/src/routes/dashboard/_layout/-components/api-docs-dialog.tsx rename to apps/core/src/routes/dashboard/_layout/-components/metax-dialog.tsx index d2a8eb6a..9c379f0c 100644 --- a/apps/core/src/routes/dashboard/_layout/-components/api-docs-dialog.tsx +++ b/apps/core/src/routes/dashboard/_layout/-components/metax-dialog.tsx @@ -10,9 +10,9 @@ import { TooltipProvider, TooltipTrigger } from "@/components/ui/tooltip" -import { open } from "@tauri-apps/api/shell" +import { open } from "@tauri-apps/plugin-shell" import { Globe, PlayCircle } from "lucide-react" -import { Dispatch, SetStateAction } from "react" +import type { Dispatch, SetStateAction } from "react" interface APIDocsDialog { isDialogOpen: boolean @@ -37,7 +37,7 @@ const APIDocsDialog = ({ isDialogOpen, setIsDialogOpen }: APIDocsDialog) => { > @@ -87,7 +87,7 @@ const APIDocsDialog = ({ isDialogOpen, setIsDialogOpen }: APIDocsDialog) => { > diff --git a/apps/core/src/routes/index/route.tsx b/apps/core/src/routes/index/route.tsx index 0ac771df..a1e98f25 100644 --- a/apps/core/src/routes/index/route.tsx +++ b/apps/core/src/routes/index/route.tsx @@ -7,9 +7,9 @@ export const Route = createFileRoute("/")({ function Index() { return ( -
+
-

Table

+

Table

logo, tableName: string, - queryClient: QueryClient, contextMenuRow?: Row ) => { - return deleteRowsCmd(table, tableName, queryClient, contextMenuRow) + return deleteRowsCmd(table, tableName, contextMenuRow) } export const selectAllRowsHandler = (table: Table) => { diff --git a/apps/web/src/sections/BundleSizeCard/bundle-size-chart.tsx b/apps/web/src/sections/BundleSizeCard/bundle-size-chart.tsx index ecb0ba38..a19acc81 100644 --- a/apps/web/src/sections/BundleSizeCard/bundle-size-chart.tsx +++ b/apps/web/src/sections/BundleSizeCard/bundle-size-chart.tsx @@ -16,7 +16,7 @@ const BundleSizeChart = () => { return ( - + { return ( -
    +
      ) diff --git a/apps/web/src/sections/Nav/mobile-nav.tsx b/apps/web/src/sections/Nav/mobile-nav.tsx index 54be7835..29195092 100644 --- a/apps/web/src/sections/Nav/mobile-nav.tsx +++ b/apps/web/src/sections/Nav/mobile-nav.tsx @@ -18,10 +18,10 @@ const MobileNav = () => { - +