From 8911f559200c1d028dff4e8e6b8ed25c19ee106f Mon Sep 17 00:00:00 2001 From: Jonas Kruckenberg Date: Thu, 3 Nov 2022 18:57:42 +0100 Subject: [PATCH 01/29] Revert "Merge pull request #3 from JonasKruckenberg/revert-2-feat/window" This reverts commit 896fc516d36d444b7d33bcdef338ea7a78371a79, reversing changes made to 5d6ea2060c213cc71708113fd5b913ab4fec3d38. --- .github/workflows/test.yml | 42 + Cargo.lock | 3572 ++++++++++++++- Cargo.toml | 13 +- build.rs | 8 +- dist/process.js | 65 + dist/window.js | 1004 +++++ examples/api/.gitignore | 3 - examples/api/.taurignore | 3 - examples/api/Cargo.toml | 21 - examples/api/Trunk.toml | 16 - examples/api/index.html | 12 - examples/api/public/tauri_logo.png | Bin 2810 -> 0 bytes examples/api/shared/Cargo.toml | 9 - examples/api/shared/src/lib.rs | 12 - examples/api/src-tauri/src/main.rs | 37 - examples/api/src/main.rs | 79 - examples/api/src/views/app.rs | 78 - examples/api/src/views/clipboard.rs | 42 - examples/api/src/views/communication.rs | 90 - examples/api/src/views/mod.rs | 29 - examples/api/src/views/welcome.rs | 10 - examples/api/style.css | 120 - examples/test/.gitignore | 1 + examples/test/Cargo.lock | 3894 +++++++++++++++++ examples/test/Cargo.toml | 17 + examples/test/Trunk.toml | 10 + examples/test/dist/index.html | 35 + .../tauri-sys-91bd50ded94e0ed7/dist/app.js | 91 + .../dist/clipboard.js | 66 + .../tauri-sys-91bd50ded94e0ed7/dist/event.js | 123 + .../tauri-sys-91bd50ded94e0ed7/dist/mocks.js | 30 + .../dist/process.js | 65 + .../tauri-sys-91bd50ded94e0ed7/dist/tauri.js | 46 + .../tauri-sys-91bd50ded94e0ed7/dist/window.js | 1004 +++++ .../tauri-sys-test-ui-3eb704384493bbf2.js | 644 +++ ...tauri-sys-test-ui-3eb704384493bbf2_bg.wasm | Bin 0 -> 1678833 bytes examples/test/index.html | 7 + examples/{api => test}/src-tauri/.gitignore | 0 examples/{api => test}/src-tauri/Cargo.toml | 7 +- examples/{api => test}/src-tauri/build.rs | 0 examples/test/src-tauri/ci.tauri.conf.json | 6 + .../{api => test}/src-tauri/icons/128x128.png | Bin .../src-tauri/icons/128x128@2x.png | Bin .../{api => test}/src-tauri/icons/32x32.png | Bin .../src-tauri/icons/Square107x107Logo.png | Bin .../src-tauri/icons/Square142x142Logo.png | Bin .../src-tauri/icons/Square150x150Logo.png | Bin .../src-tauri/icons/Square284x284Logo.png | Bin .../src-tauri/icons/Square30x30Logo.png | Bin .../src-tauri/icons/Square310x310Logo.png | Bin .../src-tauri/icons/Square44x44Logo.png | Bin .../src-tauri/icons/Square71x71Logo.png | Bin .../src-tauri/icons/Square89x89Logo.png | Bin .../src-tauri/icons/StoreLogo.png | Bin .../{api => test}/src-tauri/icons/icon.icns | Bin .../{api => test}/src-tauri/icons/icon.ico | Bin .../{api => test}/src-tauri/icons/icon.png | Bin examples/test/src-tauri/src/main.rs | 38 + .../{api => test}/src-tauri/tauri.conf.json | 2 +- examples/test/src/app.rs | 34 + examples/test/src/clipboard.rs | 12 + examples/test/src/event.rs | 10 + examples/test/src/main.rs | 86 + examples/test/src/window.rs | 13 + src/lib.rs | 4 + src/process.rs | 18 + src/window.rs | 750 ++++ 67 files changed, 11705 insertions(+), 573 deletions(-) create mode 100644 .github/workflows/test.yml create mode 100644 dist/process.js create mode 100644 dist/window.js delete mode 100644 examples/api/.gitignore delete mode 100644 examples/api/.taurignore delete mode 100644 examples/api/Cargo.toml delete mode 100644 examples/api/Trunk.toml delete mode 100644 examples/api/index.html delete mode 100644 examples/api/public/tauri_logo.png delete mode 100644 examples/api/shared/Cargo.toml delete mode 100644 examples/api/shared/src/lib.rs delete mode 100644 examples/api/src-tauri/src/main.rs delete mode 100644 examples/api/src/main.rs delete mode 100644 examples/api/src/views/app.rs delete mode 100644 examples/api/src/views/clipboard.rs delete mode 100644 examples/api/src/views/communication.rs delete mode 100644 examples/api/src/views/mod.rs delete mode 100644 examples/api/src/views/welcome.rs delete mode 100644 examples/api/style.css create mode 100644 examples/test/.gitignore create mode 100644 examples/test/Cargo.lock create mode 100644 examples/test/Cargo.toml create mode 100644 examples/test/Trunk.toml create mode 100644 examples/test/dist/index.html create mode 100644 examples/test/dist/snippets/tauri-sys-91bd50ded94e0ed7/dist/app.js create mode 100644 examples/test/dist/snippets/tauri-sys-91bd50ded94e0ed7/dist/clipboard.js create mode 100644 examples/test/dist/snippets/tauri-sys-91bd50ded94e0ed7/dist/event.js create mode 100644 examples/test/dist/snippets/tauri-sys-91bd50ded94e0ed7/dist/mocks.js create mode 100644 examples/test/dist/snippets/tauri-sys-91bd50ded94e0ed7/dist/process.js create mode 100644 examples/test/dist/snippets/tauri-sys-91bd50ded94e0ed7/dist/tauri.js create mode 100644 examples/test/dist/snippets/tauri-sys-91bd50ded94e0ed7/dist/window.js create mode 100644 examples/test/dist/tauri-sys-test-ui-3eb704384493bbf2.js create mode 100644 examples/test/dist/tauri-sys-test-ui-3eb704384493bbf2_bg.wasm create mode 100644 examples/test/index.html rename examples/{api => test}/src-tauri/.gitignore (100%) rename examples/{api => test}/src-tauri/Cargo.toml (76%) rename examples/{api => test}/src-tauri/build.rs (100%) create mode 100644 examples/test/src-tauri/ci.tauri.conf.json rename examples/{api => test}/src-tauri/icons/128x128.png (100%) rename examples/{api => test}/src-tauri/icons/128x128@2x.png (100%) rename examples/{api => test}/src-tauri/icons/32x32.png (100%) rename examples/{api => test}/src-tauri/icons/Square107x107Logo.png (100%) rename examples/{api => test}/src-tauri/icons/Square142x142Logo.png (100%) rename examples/{api => test}/src-tauri/icons/Square150x150Logo.png (100%) rename examples/{api => test}/src-tauri/icons/Square284x284Logo.png (100%) rename examples/{api => test}/src-tauri/icons/Square30x30Logo.png (100%) rename examples/{api => test}/src-tauri/icons/Square310x310Logo.png (100%) rename examples/{api => test}/src-tauri/icons/Square44x44Logo.png (100%) rename examples/{api => test}/src-tauri/icons/Square71x71Logo.png (100%) rename examples/{api => test}/src-tauri/icons/Square89x89Logo.png (100%) rename examples/{api => test}/src-tauri/icons/StoreLogo.png (100%) rename examples/{api => test}/src-tauri/icons/icon.icns (100%) rename examples/{api => test}/src-tauri/icons/icon.ico (100%) rename examples/{api => test}/src-tauri/icons/icon.png (100%) create mode 100644 examples/test/src-tauri/src/main.rs rename examples/{api => test}/src-tauri/tauri.conf.json (97%) create mode 100644 examples/test/src/app.rs create mode 100644 examples/test/src/clipboard.rs create mode 100644 examples/test/src/event.rs create mode 100644 examples/test/src/main.rs create mode 100644 examples/test/src/window.rs create mode 100644 src/process.rs create mode 100644 src/window.rs diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..31e73b2 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,42 @@ +name: Test + +push: + branches: + - main + paths: + - '.github/workflows/test.yml' + - 'src/**' + - 'examples/test/**' + pull_request: + branches: + - main + paths: + - '.github/workflows/test.yml' + - 'src/**' + - 'examples/test/**' + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + build-and-test: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - name: Install stable toolchain + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + override: true + - uses: Swatinem/rust-cache@v1 + - name: Install native deps + run: | + sudo apt-get update + sudo apt-get install -y webkit2gtk-4.0 + wget -qO- https://github.com/tauri-apps/tauri/releases/download/cli.rs-v1.1.1/cargo-tauri-x86_64-unknown-linux-gnu.tgz | tar -xzf- + - name: Run test app + run: | + cd examples/test + cargo tauri dev --exit-on-panic --config ./src-tauri/ci.tauri.conf.json \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock index 305ed81..cec30af 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,18 +2,314 @@ # It is not intended for manual editing. version = 3 +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "adler32" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" + +[[package]] +name = "ahash" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" +dependencies = [ + "getrandom 0.2.8", + "once_cell", + "version_check", +] + +[[package]] +name = "aho-corasick" +version = "0.7.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4f55bd91a0978cbfd91c457a164bab8b4001c833b7f323132c0a4e1922dd44e" +dependencies = [ + "memchr", +] + +[[package]] +name = "alloc-no-stdlib" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" + +[[package]] +name = "alloc-stdlib" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" +dependencies = [ + "alloc-no-stdlib", +] + +[[package]] +name = "anyhow" +version = "1.0.66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "216261ddc8289130e551ddcd5ce8a064710c0d064a4d2895c67151c92b5443f6" + +[[package]] +name = "atk" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c3d816ce6f0e2909a96830d6911c2aff044370b1ef92d7f267b43bae5addedd" +dependencies = [ + "atk-sys", + "bitflags", + "glib", + "libc", +] + +[[package]] +name = "atk-sys" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58aeb089fb698e06db8089971c7ee317ab9644bade33383f63631437b03aafb6" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps 6.0.3", +] + +[[package]] +name = "attohttpc" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fcf00bc6d5abb29b5f97e3c61a90b6d3caa12f3faf897d4a3e3607c050a35a7" +dependencies = [ + "flate2", + "http", + "log", + "native-tls", + "serde", + "serde_json", + "serde_urlencoded", + "url", +] + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "block" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" + +[[package]] +name = "block-buffer" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cce20737498f97b993470a6e536b8523f0af7892a4f928cceb1ac5e52ebe7e" +dependencies = [ + "generic-array", +] + +[[package]] +name = "brotli" +version = "3.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1a0b1dbcc8ae29329621f8d4f0d835787c1c38bb1401979b49d13b0b305ff68" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor", +] + +[[package]] +name = "brotli-decompressor" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ad2d4653bf5ca36ae797b1f4bb4dbddb60ce49ca4aed8a2ce4829f60425b80" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", +] + +[[package]] +name = "bstr" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3569f383e8f1598449f1a423e72e99569137b47740b1da11ef19af3d5c3223" +dependencies = [ + "memchr", +] + [[package]] name = "bumpalo" version = "3.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "572f695136211188308f16ad2ca5c851a712c464060ae6974944458eb83880ba" +[[package]] +name = "bytemuck" +version = "1.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aec14f5d4e6e3f927cd0c81f72e5710d95ee9019fbeb4b3021193867491bfd8" + +[[package]] +name = "byteorder" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" + +[[package]] +name = "bytes" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec8a7b6a70fde80372154c65702f00a0f56f3e1c36abbc6c440484be248856db" + +[[package]] +name = "cairo-rs" +version = "0.15.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c76ee391b03d35510d9fa917357c7f1855bd9a6659c95a1b392e33f49b3369bc" +dependencies = [ + "bitflags", + "cairo-sys-rs", + "glib", + "libc", + "thiserror", +] + +[[package]] +name = "cairo-sys-rs" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c55d429bef56ac9172d25fecb85dc8068307d17acd74b377866b7a1ef25d3c8" +dependencies = [ + "glib-sys", + "libc", + "system-deps 6.0.3", +] + +[[package]] +name = "cargo_toml" +version = "0.11.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e72c3ff59e3b7d24630206bb63a73af65da4ed5df1f76ee84dfafb9fee2ba60e" +dependencies = [ + "serde", + "serde_derive", + "toml", +] + +[[package]] +name = "cc" +version = "1.0.74" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "581f5dba903aac52ea3feb5ec4810848460ee833876f1f9b0fdeab1f19091574" + +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + +[[package]] +name = "cfb" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74f89d248799e3f15f91b70917f65381062a01bb8e222700ea0e5a7ff9785f9c" +dependencies = [ + "byteorder", + "uuid 0.8.2", +] + +[[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.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0357a6402b295ca3a86bc148e84df46c02e41f41fef186bda662557ef6328aa" +dependencies = [ + "smallvec", +] + [[package]] name = "cfg-if" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "cocoa" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f425db7937052c684daec3bd6375c8abe2d146dca4b8b143d6db777c39138f3a" +dependencies = [ + "bitflags", + "block", + "cocoa-foundation", + "core-foundation", + "core-graphics", + "foreign-types", + "libc", + "objc", +] + +[[package]] +name = "cocoa-foundation" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ade49b65d560ca58c403a479bb396592b155c0185eada742ee323d1d68d6318" +dependencies = [ + "bitflags", + "block", + "core-foundation", + "core-graphics-types", + "foreign-types", + "libc", + "objc", +] + +[[package]] +name = "color_quant" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" + +[[package]] +name = "combine" +version = "4.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4" +dependencies = [ + "bytes", + "memchr", +] + [[package]] name = "console_error_panic_hook" version = "0.1.7" @@ -24,6 +320,341 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "convert_case" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" + +[[package]] +name = "core-foundation" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" + +[[package]] +name = "core-graphics" +version = "0.22.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2581bbab3b8ffc6fcbd550bf46c355135d16e9ff2a6ea032ad6b9bf1d7efe4fb" +dependencies = [ + "bitflags", + "core-foundation", + "core-graphics-types", + "foreign-types", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a68b68b3446082644c91ac778bf50cd4104bfb002b5a6a7c44cca5a2c70788b" +dependencies = [ + "bitflags", + "core-foundation", + "foreign-types", + "libc", +] + +[[package]] +name = "cpufeatures" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d997bd5e24a5928dd43e46dc529867e207907fe0b239c3477d924f7f2ca320" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521" +dependencies = [ + "cfg-if", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edbafec5fa1f196ca66527c1b12c2ec4745ca14b50f1ad8f9f6f720b55d11fac" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "cssparser" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "754b69d351cdc2d8ee09ae203db831e005560fc6030da058f86ad60c92a9cb0a" +dependencies = [ + "cssparser-macros", + "dtoa-short", + "itoa 0.4.8", + "matches", + "phf 0.8.0", + "proc-macro2", + "quote", + "smallvec", + "syn", +] + +[[package]] +name = "cssparser-macros" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfae75de57f2b2e85e8768c3ea840fd159c8f33e2b6522c7835b7abac81be16e" +dependencies = [ + "quote", + "syn", +] + +[[package]] +name = "ctor" +version = "0.1.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d2301688392eb071b0bf1a37be05c469d3cc4dbbd95df672fe28ab021e6a096" +dependencies = [ + "quote", + "syn", +] + +[[package]] +name = "cty" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b365fabc795046672053e29c954733ec3b05e4be654ab130fe8f1f94d7051f35" + +[[package]] +name = "darling" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn", +] + +[[package]] +name = "darling_macro" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" +dependencies = [ + "darling_core", + "quote", + "syn", +] + +[[package]] +name = "dbus" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f8bcdd56d2e5c4ed26a529c5a9029f5db8290d433497506f958eae3be148eb6" +dependencies = [ + "libc", + "libdbus-sys", + "winapi", +] + +[[package]] +name = "deflate" +version = "0.7.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "707b6a7b384888a70c8d2e8650b3e60170dfc6a67bb4aa67b6dfca57af4bedb4" +dependencies = [ + "adler32", + "byteorder", +] + +[[package]] +name = "derive_more" +version = "0.99.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "rustc_version 0.4.0", + "syn", +] + +[[package]] +name = "digest" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adfbc57365a37acbd2ebf2b64d7e69bb766e2fea813521ed536f5d0520dcf86c" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "dirs-next" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" +dependencies = [ + "cfg-if", + "dirs-sys-next", +] + +[[package]] +name = "dirs-sys-next" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" +dependencies = [ + "libc", + "redox_users", + "winapi", +] + +[[package]] +name = "dispatch" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" + +[[package]] +name = "dtoa" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56899898ce76aaf4a0f24d914c97ea6ed976d42fec6ad33fcbb0a1103e07b2b0" + +[[package]] +name = "dtoa-short" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bde03329ae10e79ede66c9ce4dc930aa8599043b0743008548680f25b91502d6" +dependencies = [ + "dtoa", +] + +[[package]] +name = "embed_plist" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ef6b89e5b37196644d8796de5268852ff179b44e96276cf4290264843743bb7" + +[[package]] +name = "encoding_rs" +version = "0.8.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9852635589dc9f9ea1b6fe9f05b50ef208c85c834a562f0c6abb1c475736ec2b" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "fastrand" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499" +dependencies = [ + "instant", +] + +[[package]] +name = "field-offset" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e1c54951450cbd39f3dbcf1005ac413b49487dabf18a720ad2383eccfeffb92" +dependencies = [ + "memoffset", + "rustc_version 0.3.3", +] + +[[package]] +name = "filetime" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b9663d381d07ae25dc88dbdf27df458faa83a9b25336bcac83d5e452b5fc9d3" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "windows-sys 0.42.0", +] + +[[package]] +name = "flate2" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f82b0f4c27ad9f8bfd1f3208d882da2b09c301bc1c828fd3a00d0216d2fbbff6" +dependencies = [ + "crc32fast", + "miniz_oxide 0.5.4", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + [[package]] name = "form_urlencoded" version = "1.1.0" @@ -33,6 +664,477 @@ dependencies = [ "percent-encoding", ] +[[package]] +name = "futf" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df420e2e84819663797d1ec6544b13c5be84629e7bb00dc960d6917db2987843" +dependencies = [ + "mac", + "new_debug_unreachable", +] + +[[package]] +name = "futures" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38390104763dc37a5145a53c29c63c1290b5d316d6086ec32c293f6736051bb0" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52ba265a92256105f45b719605a571ffe2d1f0fea3807304b522c1d778f79eed" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04909a7a7e4633ae6c4a9ab280aeb86da1236243a77b694a49eacd659a4bd3ac" + +[[package]] +name = "futures-executor" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7acc85df6714c176ab5edf386123fafe217be88c0840ec11f199441134a074e2" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00f5fb52a06bdcadeb54e8d3671f8888a39697dcb0b81b23b55174030427f4eb" + +[[package]] +name = "futures-macro" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdfb8ce053d86b91919aad980c220b1fb8401a9394410e1c289ed7e66b61835d" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-sink" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39c15cf1a4aa79df40f1bb462fb39676d0ad9e366c2a33b590d7c66f4f81fcf9" + +[[package]] +name = "futures-task" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ffb393ac5d9a6eaa9d3fdf37ae2776656b706e200c8e16b1bdb227f5198e6ea" + +[[package]] +name = "futures-util" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "197676987abd2f9cadff84926f410af1c183608d36641465df73ae8211dc65d6" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + +[[package]] +name = "gdk" +version = "0.15.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6e05c1f572ab0e1f15be94217f0dc29088c248b14f792a5ff0af0d84bcda9e8" +dependencies = [ + "bitflags", + "cairo-rs", + "gdk-pixbuf", + "gdk-sys", + "gio", + "glib", + "libc", + "pango", +] + +[[package]] +name = "gdk-pixbuf" +version = "0.15.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad38dd9cc8b099cceecdf41375bb6d481b1b5a7cd5cd603e10a69a9383f8619a" +dependencies = [ + "bitflags", + "gdk-pixbuf-sys", + "gio", + "glib", + "libc", +] + +[[package]] +name = "gdk-pixbuf-sys" +version = "0.15.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "140b2f5378256527150350a8346dbdb08fadc13453a7a2d73aecd5fab3c402a7" +dependencies = [ + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "system-deps 6.0.3", +] + +[[package]] +name = "gdk-sys" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32e7a08c1e8f06f4177fb7e51a777b8c1689f743a7bc11ea91d44d2226073a88" +dependencies = [ + "cairo-sys-rs", + "gdk-pixbuf-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "pango-sys", + "pkg-config", + "system-deps 6.0.3", +] + +[[package]] +name = "gdkx11-sys" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4b7f8c7a84b407aa9b143877e267e848ff34106578b64d1e0a24bf550716178" +dependencies = [ + "gdk-sys", + "glib-sys", + "libc", + "system-deps 6.0.3", + "x11", +] + +[[package]] +name = "generator" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc184cace1cea8335047a471cc1da80f18acf8a76f3bab2028d499e328948ec7" +dependencies = [ + "cc", + "libc", + "log", + "rustversion", + "windows 0.32.0", +] + +[[package]] +name = "generic-array" +version = "0.14.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", +] + +[[package]] +name = "gio" +version = "0.15.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68fdbc90312d462781a395f7a16d96a2b379bb6ef8cd6310a2df272771c4283b" +dependencies = [ + "bitflags", + "futures-channel", + "futures-core", + "futures-io", + "gio-sys", + "glib", + "libc", + "once_cell", + "thiserror", +] + +[[package]] +name = "gio-sys" +version = "0.15.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32157a475271e2c4a023382e9cab31c4584ee30a97da41d3c4e9fdd605abcf8d" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps 6.0.3", + "winapi", +] + +[[package]] +name = "glib" +version = "0.15.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edb0306fbad0ab5428b0ca674a23893db909a98582969c9b537be4ced78c505d" +dependencies = [ + "bitflags", + "futures-channel", + "futures-core", + "futures-executor", + "futures-task", + "glib-macros", + "glib-sys", + "gobject-sys", + "libc", + "once_cell", + "smallvec", + "thiserror", +] + +[[package]] +name = "glib-macros" +version = "0.15.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25a68131a662b04931e71891fb14aaf65ee4b44d08e8abc10f49e77418c86c64" +dependencies = [ + "anyhow", + "heck 0.4.0", + "proc-macro-crate", + "proc-macro-error", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "glib-sys" +version = "0.15.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef4b192f8e65e9cf76cbf4ea71fa8e3be4a0e18ffe3d68b8da6836974cc5bad4" +dependencies = [ + "libc", + "system-deps 6.0.3", +] + +[[package]] +name = "glob" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" + +[[package]] +name = "globset" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a1e17342619edbc21a964c2afbeb6c820c6a2560032872f397bb97ea127bd0a" +dependencies = [ + "aho-corasick", + "bstr", + "fnv", + "log", + "regex", +] + +[[package]] +name = "gobject-sys" +version = "0.15.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d57ce44246becd17153bd035ab4d32cfee096a657fc01f2231c9278378d1e0a" +dependencies = [ + "glib-sys", + "libc", + "system-deps 6.0.3", +] + +[[package]] +name = "gtk" +version = "0.15.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92e3004a2d5d6d8b5057d2b57b3712c9529b62e82c77f25c1fecde1fd5c23bd0" +dependencies = [ + "atk", + "bitflags", + "cairo-rs", + "field-offset", + "futures-channel", + "gdk", + "gdk-pixbuf", + "gio", + "glib", + "gtk-sys", + "gtk3-macros", + "libc", + "once_cell", + "pango", + "pkg-config", +] + +[[package]] +name = "gtk-sys" +version = "0.15.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5bc2f0587cba247f60246a0ca11fe25fb733eabc3de12d1965fc07efab87c84" +dependencies = [ + "atk-sys", + "cairo-sys-rs", + "gdk-pixbuf-sys", + "gdk-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "pango-sys", + "system-deps 6.0.3", +] + +[[package]] +name = "gtk3-macros" +version = "0.15.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24f518afe90c23fba585b2d7697856f9e6a7bbc62f65588035e66f6afb01a2e9" +dependencies = [ + "anyhow", + "proc-macro-crate", + "proc-macro-error", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[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.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9" + +[[package]] +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + +[[package]] +name = "html-escape" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15315cfa9503e9aa85a477138eff76a1b203a430703548052c330b69d8d8c205" +dependencies = [ + "utf8-width", +] + +[[package]] +name = "html5ever" +version = "0.25.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5c13fb08e5d4dfc151ee5e88bae63f7773d61852f3bdc73c9f4b9e1bde03148" +dependencies = [ + "log", + "mac", + "markup5ever", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "http" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399" +dependencies = [ + "bytes", + "fnv", + "itoa 1.0.4", +] + +[[package]] +name = "http-range" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21dec9db110f5f872ed9699c3ecf50cf16f423502706ba5c72462e28d3157573" + +[[package]] +name = "ico" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a4b3331534254a9b64095ae60d3dc2a8225a7a70229cd5888be127cdc1f6804" +dependencies = [ + "byteorder", + "png 0.11.0", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + [[package]] name = "idna" version = "0.3.0" @@ -43,12 +1145,129 @@ dependencies = [ "unicode-normalization", ] +[[package]] +name = "ignore" +version = "0.4.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "713f1b139373f96a2e0ce3ac931cd01ee973c3c5dd7c40c0c2efe96ad2b6751d" +dependencies = [ + "crossbeam-utils", + "globset", + "lazy_static", + "log", + "memchr", + "regex", + "same-file", + "thread_local", + "walkdir", + "winapi-util", +] + +[[package]] +name = "image" +version = "0.24.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd8e4fb07cf672b1642304e731ef8a6a4c7891d67bb4fd4f5ce58cd6ed86803c" +dependencies = [ + "bytemuck", + "byteorder", + "color_quant", + "num-rational", + "num-traits", +] + +[[package]] +name = "indexmap" +version = "1.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e" +dependencies = [ + "autocfg", + "hashbrown", +] + +[[package]] +name = "infer" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20b2b533137b9cad970793453d4f921c2e91312a6d88b1085c07bc15fc51bb3b" +dependencies = [ + "cfb", +] + +[[package]] +name = "inflate" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5f9f47468e9a76a6452271efadc88fe865a82be91fe75e6c0c57b87ccea59d4" +dependencies = [ + "adler32", +] + +[[package]] +name = "instant" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "itoa" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" + [[package]] name = "itoa" version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4217ad341ebadf8d8e724e264f13e593e0648f5b3e94b3896a5df283be015ecc" +[[package]] +name = "javascriptcore-rs" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf053e7843f2812ff03ef5afe34bb9c06ffee120385caad4f6b9967fcd37d41c" +dependencies = [ + "bitflags", + "glib", + "javascriptcore-rs-sys", +] + +[[package]] +name = "javascriptcore-rs-sys" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "905fbb87419c5cde6e3269537e4ea7d46431f3008c5d057e915ef3f115e7793c" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps 5.0.0", +] + +[[package]] +name = "jni" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6df18c2e3db7e453d3c6ac5b3e9d5182664d28788126d39b91f2d1e22b017ec" +dependencies = [ + "cesu8", + "combine", + "jni-sys", + "log", + "thiserror", + "walkdir", +] + +[[package]] +name = "jni-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" + [[package]] name = "js-sys" version = "0.3.60" @@ -58,6 +1277,69 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "json-patch" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f995a3c8f2bc3dd52a18a583e90f9ec109c047fa1603a853e46bcda14d2e279d" +dependencies = [ + "serde", + "serde_json", + "treediff", +] + +[[package]] +name = "kuchiki" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ea8e9c6e031377cff82ee3001dc8026cdf431ed4e2e6b51f98ab8c73484a358" +dependencies = [ + "cssparser", + "html5ever", + "matches", + "selectors", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "libc" +version = "0.2.137" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7fcc620a3bff7cdd7a365be3376c97191aeaccc2a603e600951e452615bf89" + +[[package]] +name = "libdbus-sys" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c185b5b7ad900923ef3a8ff594083d4d9b5aea80bb4f32b8342363138c0d456b" +dependencies = [ + "pkg-config", +] + +[[package]] +name = "line-wrap" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f30344350a2a51da54c1d53be93fade8a237e545dbcc4bdbe635413f2117cab9" +dependencies = [ + "safemem", +] + +[[package]] +name = "lock_api" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" +dependencies = [ + "autocfg", + "scopeguard", +] + [[package]] name = "log" version = "0.4.17" @@ -67,18 +1349,681 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "loom" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff50ecb28bb86013e935fb6683ab1f6d3a20016f123c76fd4c27470076ac30f5" +dependencies = [ + "cfg-if", + "generator", + "scoped-tls", + "serde", + "serde_json", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "mac" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" + +[[package]] +name = "mac-notification-sys" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e72d50edb17756489e79d52eb146927bec8eba9dd48faadf9ef08bca3791ad5" +dependencies = [ + "cc", + "dirs-next", + "objc-foundation", + "objc_id", + "time", +] + +[[package]] +name = "malloc_buf" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" +dependencies = [ + "libc", +] + +[[package]] +name = "markup5ever" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a24f40fb03852d1cdd84330cddcaf98e9ec08a7b7768e952fad3b4cf048ec8fd" +dependencies = [ + "log", + "phf 0.8.0", + "phf_codegen", + "string_cache", + "string_cache_codegen", + "tendril", +] + +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata", +] + +[[package]] +name = "matches" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" + +[[package]] +name = "memchr" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" + +[[package]] +name = "memoffset" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" +dependencies = [ + "autocfg", +] + +[[package]] +name = "miniz_oxide" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96590ba8f175222643a85693f33d26e9c8a015f599c216509b1a6894af675d34" +dependencies = [ + "adler", +] + +[[package]] +name = "miniz_oxide" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa" +dependencies = [ + "adler", +] + +[[package]] +name = "native-tls" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" +dependencies = [ + "lazy_static", + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "ndk" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2032c77e030ddee34a6787a64166008da93f6a352b629261d0fee232b8742dd4" +dependencies = [ + "bitflags", + "jni-sys", + "ndk-sys", + "num_enum", + "thiserror", +] + +[[package]] +name = "ndk-context" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" + +[[package]] +name = "ndk-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e5a6ae77c8ee183dcbbba6150e2e6b9f3f4196a7666c02a715a95692ec1fa97" +dependencies = [ + "jni-sys", +] + +[[package]] +name = "new_debug_unreachable" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54" + +[[package]] +name = "nodrop" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" + +[[package]] +name = "notify-rust" +version = "4.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "368e89ea58df747ce88be669ae44e79783c1d30bfd540ad0fc520b3f41f0b3b0" +dependencies = [ + "dbus", + "mac-notification-sys", + "tauri-winrt-notification", +] + +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + +[[package]] +name = "num-integer" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "num_enum" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf5395665662ef45796a4ff5486c5d41d29e0c09640af4c5f17fd94ee2c119c9" +dependencies = [ + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0498641e53dd6ac1a4f22547548caa6864cc4933784319cd1775271c5a46ce" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "num_threads" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44" +dependencies = [ + "libc", +] + +[[package]] +name = "objc" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" +dependencies = [ + "malloc_buf", + "objc_exception", +] + +[[package]] +name = "objc-foundation" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9" +dependencies = [ + "block", + "objc", + "objc_id", +] + +[[package]] +name = "objc_exception" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad970fb455818ad6cba4c122ad012fae53ae8b4795f86378bce65e4f6bab2ca4" +dependencies = [ + "cc", +] + +[[package]] +name = "objc_id" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b" +dependencies = [ + "objc", +] + [[package]] name = "once_cell" version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "86f0b0d4bf799edbc74508c1e8bf170ff5f41238e5f8225603ca7caaae2b7860" +[[package]] +name = "open" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4a3100141f1733ea40b53381b0ae3117330735ef22309a190ac57b9576ea716" +dependencies = [ + "pathdiff", + "windows-sys 0.36.1", +] + +[[package]] +name = "openssl" +version = "0.10.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12fc0523e3bd51a692c8850d075d74dc062ccf251c0110668cbd921917118a13" +dependencies = [ + "bitflags", + "cfg-if", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b501e44f11665960c7e7fcf062c7d96a14ade4aa98116c004b2e37b5be7d736c" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "openssl-sys" +version = "0.9.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b03b84c3b2d099b81f0953422b4d4ad58761589d0229b5506356afca05a3670a" +dependencies = [ + "autocfg", + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "os_info" +version = "3.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4750134fb6a5d49afc80777394ad5d95b04bc12068c6abb92fae8f43817270f" +dependencies = [ + "log", + "serde", + "winapi", +] + +[[package]] +name = "os_pipe" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dceb7e43f59c35ee1548045b2c72945a5a3bb6ce6d6f07cdc13dc8f6bc4930a" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "pango" +version = "0.15.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22e4045548659aee5313bde6c582b0d83a627b7904dd20dc2d9ef0895d414e4f" +dependencies = [ + "bitflags", + "glib", + "libc", + "once_cell", + "pango-sys", +] + +[[package]] +name = "pango-sys" +version = "0.15.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2a00081cde4661982ed91d80ef437c20eacaf6aa1a5962c0279ae194662c3aa" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps 6.0.3", +] + +[[package]] +name = "parking_lot" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dc9e0dc2adc1c69d09143aff38d3d30c5c3f0df0dad82e6d25547af174ebec0" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-sys 0.42.0", +] + +[[package]] +name = "paste" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1de2e551fb905ac83f73f7aedf2f0cb4a0da7e35efa24a202a936269f1f18e1" + +[[package]] +name = "pathdiff" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" + [[package]] name = "percent-encoding" version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" +[[package]] +name = "pest" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbc7bc69c062e492337d74d59b120c274fd3d261b6bf6d3207d499b4b379c41a" +dependencies = [ + "thiserror", + "ucd-trie", +] + +[[package]] +name = "phf" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3dfb61232e34fcb633f43d12c58f83c1df82962dcdfa565a4e866ffc17dafe12" +dependencies = [ + "phf_macros 0.8.0", + "phf_shared 0.8.0", + "proc-macro-hack", +] + +[[package]] +name = "phf" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259" +dependencies = [ + "phf_macros 0.10.0", + "phf_shared 0.10.0", + "proc-macro-hack", +] + +[[package]] +name = "phf_codegen" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbffee61585b0411840d3ece935cce9cb6321f01c45477d30066498cd5e1a815" +dependencies = [ + "phf_generator 0.8.0", + "phf_shared 0.8.0", +] + +[[package]] +name = "phf_generator" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17367f0cc86f2d25802b2c26ee58a7b23faeccf78a396094c13dced0d0182526" +dependencies = [ + "phf_shared 0.8.0", + "rand 0.7.3", +] + +[[package]] +name = "phf_generator" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6" +dependencies = [ + "phf_shared 0.10.0", + "rand 0.8.5", +] + +[[package]] +name = "phf_macros" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f6fde18ff429ffc8fe78e2bf7f8b7a5a5a6e2a8b58bc5a9ac69198bbda9189c" +dependencies = [ + "phf_generator 0.8.0", + "phf_shared 0.8.0", + "proc-macro-hack", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "phf_macros" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58fdf3184dd560f160dd73922bea2d5cd6e8f064bf4b13110abd81b03697b4e0" +dependencies = [ + "phf_generator 0.10.0", + "phf_shared 0.10.0", + "proc-macro-hack", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "phf_shared" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c00cf8b9eafe68dde5e9eaa2cef8ee84a9336a47d566ec55ca16589633b65af7" +dependencies = [ + "siphasher", +] + +[[package]] +name = "phf_shared" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" +dependencies = [ + "siphasher", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkg-config" +version = "0.3.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" + +[[package]] +name = "plist" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd39bc6cdc9355ad1dc5eeedefee696bb35c34caf21768741e81826c0bbd7225" +dependencies = [ + "base64", + "indexmap", + "line-wrap", + "serde", + "time", + "xml-rs", +] + +[[package]] +name = "png" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0b0cabbbd20c2d7f06dbf015e06aad59b6ca3d9ed14848783e98af9aaf19925" +dependencies = [ + "bitflags", + "deflate", + "inflate", + "num-iter", +] + +[[package]] +name = "png" +version = "0.17.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d708eaf860a19b19ce538740d2b4bdeeb8337fa53f7738455e706623ad5c638" +dependencies = [ + "bitflags", + "crc32fast", + "flate2", + "miniz_oxide 0.6.2", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" + +[[package]] +name = "precomputed-hash" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" + +[[package]] +name = "proc-macro-crate" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eda0fc3b0fb7c975631757e14d9049da17374063edb6ebbcbc54d880d4fe94e9" +dependencies = [ + "once_cell", + "thiserror", + "toml", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro-hack" +version = "0.5.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" + [[package]] name = "proc-macro2" version = "1.0.47" @@ -88,6 +2033,15 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "quick-xml" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11bafc859c6815fbaffbbbf4229ecb767ac913fecb27f9ad4343662e9ef099ea" +dependencies = [ + "memchr", +] + [[package]] name = "quote" version = "1.0.21" @@ -97,23 +2051,311 @@ dependencies = [ "proc-macro2", ] +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.16", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc", + "rand_pcg", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.8", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "rand_pcg" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "raw-window-handle" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed7e3d950b66e19e0c372f3fa3fbbcf85b1746b571f74e0c2af6042a5c93420a" +dependencies = [ + "cty", +] + +[[package]] +name = "redox_syscall" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +dependencies = [ + "bitflags", +] + +[[package]] +name = "redox_users" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" +dependencies = [ + "getrandom 0.2.8", + "redox_syscall", + "thiserror", +] + +[[package]] +name = "regex" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.6.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244" + +[[package]] +name = "remove_dir_all" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" +dependencies = [ + "winapi", +] + +[[package]] +name = "rfd" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0149778bd99b6959285b0933288206090c50e2327f47a9c463bfdbf45c8823ea" +dependencies = [ + "block", + "dispatch", + "glib-sys", + "gobject-sys", + "gtk-sys", + "js-sys", + "lazy_static", + "log", + "objc", + "objc-foundation", + "objc_id", + "raw-window-handle", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "windows 0.37.0", +] + +[[package]] +name = "rustc_version" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" +dependencies = [ + "semver 0.11.0", +] + +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver 1.0.14", +] + +[[package]] +name = "rustversion" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97477e48b4cf8603ad5f7aaf897467cf42ab4218a38ef76fb14c2d6773a6d6a8" + [[package]] name = "ryu" version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09" +[[package]] +name = "safemem" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "schannel" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88d6731146462ea25d9244b2ed5fd1d716d25c52e4d54aa4fb0f3c4e9854dbe2" +dependencies = [ + "lazy_static", + "windows-sys 0.36.1", +] + [[package]] name = "scoped-tls" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" +[[package]] +name = "scopeguard" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" + +[[package]] +name = "security-framework" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bc1bb97804af6631813c55739f771071e0f2ed33ee20b68c86ec505d906356c" +dependencies = [ + "bitflags", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0160a13a177a45bfb43ce71c01580998474f556ad854dcbca936dd2841a5c556" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "selectors" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df320f1889ac4ba6bc0cdc9c9af7af4bd64bb927bccdf32d81140dc1f9be12fe" +dependencies = [ + "bitflags", + "cssparser", + "derive_more", + "fxhash", + "log", + "matches", + "phf 0.8.0", + "phf_codegen", + "precomputed-hash", + "servo_arc", + "smallvec", + "thin-slice", +] + +[[package]] +name = "semver" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" +dependencies = [ + "semver-parser", +] + [[package]] name = "semver" version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e25dfac463d778e353db5be2449d1cce89bd6fd23c9f1ea21310ce6e5a1b29c4" +dependencies = [ + "serde", +] + +[[package]] +name = "semver-parser" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7" +dependencies = [ + "pest", +] [[package]] name = "serde" @@ -152,11 +2394,322 @@ version = "1.0.87" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6ce777b7b150d76b9cf60d28b55f5847135a003f7d7350c6be7a773508ce7d45" dependencies = [ - "itoa", + "itoa 1.0.4", "ryu", "serde", ] +[[package]] +name = "serde_repr" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fe39d9fbb0ebf5eb2c7cb7e2a47e4f462fad1379f1166b8ae49ad9eae89a7ca" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[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.4", + "ryu", + "serde", +] + +[[package]] +name = "serde_with" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "678b5a069e50bf00ecd22d0cd8ddf7c236f68581b03db652061ed5eb13a312ff" +dependencies = [ + "serde", + "serde_with_macros", +] + +[[package]] +name = "serde_with_macros" +version = "1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e182d6ec6f05393cc0e5ed1bf81ad6db3a8feedf8ee515ecdd369809bcce8082" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serialize-to-javascript" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9823f2d3b6a81d98228151fdeaf848206a7855a7a042bbf9bf870449a66cafb" +dependencies = [ + "serde", + "serde_json", + "serialize-to-javascript-impl", +] + +[[package]] +name = "serialize-to-javascript-impl" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74064874e9f6a15f04c1f3cb627902d0e6b410abbf36668afa873c61889f1763" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "servo_arc" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d98238b800e0d1576d8b6e3de32827c2d74bee68bb97748dcf5071fb53965432" +dependencies = [ + "nodrop", + "stable_deref_trait", +] + +[[package]] +name = "sha2" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sharded-slab" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shared_child" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0d94659ad3c2137fef23ae75b03d5241d633f8acded53d672decfa0e6e0caef" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "siphasher" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de" + +[[package]] +name = "slab" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef" +dependencies = [ + "autocfg", +] + +[[package]] +name = "slotmap" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1e08e261d0e8f5c43123b7adf3e4ca1690d655377ac93a03b2c9d3e98de1342" +dependencies = [ + "version_check", +] + +[[package]] +name = "smallvec" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" + +[[package]] +name = "soup2" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2b4d76501d8ba387cf0fefbe055c3e0a59891d09f0f995ae4e4b16f6b60f3c0" +dependencies = [ + "bitflags", + "gio", + "glib", + "libc", + "once_cell", + "soup2-sys", +] + +[[package]] +name = "soup2-sys" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "009ef427103fcb17f802871647a7fa6c60cbb654b4c4e4c0ac60a31c5f6dc9cf" +dependencies = [ + "bitflags", + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "system-deps 5.0.0", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "state" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbe866e1e51e8260c9eed836a042a5e7f6726bb2b411dffeaa712e19c388f23b" +dependencies = [ + "loom", +] + +[[package]] +name = "string_cache" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213494b7a2b503146286049378ce02b482200519accc31872ee8be91fa820a08" +dependencies = [ + "new_debug_unreachable", + "once_cell", + "parking_lot", + "phf_shared 0.10.0", + "precomputed-hash", + "serde", +] + +[[package]] +name = "string_cache_codegen" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bb30289b722be4ff74a408c3cc27edeaad656e06cb1fe8fa9231fa59c728988" +dependencies = [ + "phf_generator 0.10.0", + "phf_shared 0.10.0", + "proc-macro2", + "quote", +] + +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "strum" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7ac893c7d471c8a21f31cfe213ec4f6d9afeed25537c772e08ef3f005f8729e" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "339f799d8b549e3744c7ac7feb216383e4005d94bdb22561b3ab8f3b808ae9fb" +dependencies = [ + "heck 0.3.3", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "sycamore" +version = "0.8.2" +source = "git+https://github.com/sycamore-rs/sycamore?rev=abd556cbc02047042dad2ebd04405e455a9b11b2#abd556cbc02047042dad2ebd04405e455a9b11b2" +dependencies = [ + "ahash", + "futures", + "indexmap", + "js-sys", + "paste", + "sycamore-core", + "sycamore-futures", + "sycamore-macro", + "sycamore-reactive", + "sycamore-web", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "sycamore-core" +version = "0.8.2" +source = "git+https://github.com/sycamore-rs/sycamore?rev=abd556cbc02047042dad2ebd04405e455a9b11b2#abd556cbc02047042dad2ebd04405e455a9b11b2" +dependencies = [ + "ahash", + "sycamore-reactive", +] + +[[package]] +name = "sycamore-futures" +version = "0.8.0" +source = "git+https://github.com/sycamore-rs/sycamore?rev=abd556cbc02047042dad2ebd04405e455a9b11b2#abd556cbc02047042dad2ebd04405e455a9b11b2" +dependencies = [ + "futures", + "sycamore-reactive", + "tokio", + "wasm-bindgen-futures", +] + +[[package]] +name = "sycamore-macro" +version = "0.8.2" +source = "git+https://github.com/sycamore-rs/sycamore?rev=abd556cbc02047042dad2ebd04405e455a9b11b2#abd556cbc02047042dad2ebd04405e455a9b11b2" +dependencies = [ + "once_cell", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "sycamore-reactive" +version = "0.8.1" +source = "git+https://github.com/sycamore-rs/sycamore?rev=abd556cbc02047042dad2ebd04405e455a9b11b2#abd556cbc02047042dad2ebd04405e455a9b11b2" +dependencies = [ + "ahash", + "bumpalo", + "indexmap", + "slotmap", + "smallvec", +] + +[[package]] +name = "sycamore-web" +version = "0.8.2" +source = "git+https://github.com/sycamore-rs/sycamore?rev=abd556cbc02047042dad2ebd04405e455a9b11b2#abd556cbc02047042dad2ebd04405e455a9b11b2" +dependencies = [ + "html-escape", + "indexmap", + "js-sys", + "once_cell", + "sycamore-core", + "sycamore-reactive", + "wasm-bindgen", + "web-sys", +] + [[package]] name = "syn" version = "1.0.103" @@ -168,14 +2721,248 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "system-deps" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18db855554db7bd0e73e06cf7ba3df39f97812cb11d3f75e71c39bf45171797e" +dependencies = [ + "cfg-expr 0.9.1", + "heck 0.3.3", + "pkg-config", + "toml", + "version-compare 0.0.11", +] + +[[package]] +name = "system-deps" +version = "6.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2955b1fe31e1fa2fbd1976b71cc69a606d7d4da16f6de3333d0c92d51419aeff" +dependencies = [ + "cfg-expr 0.11.0", + "heck 0.4.0", + "pkg-config", + "toml", + "version-compare 0.1.0", +] + +[[package]] +name = "tao" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43336f5d1793543ba96e2a1e75f3a5c7dcd592743be06a0ab3a190f4fcb4b934" +dependencies = [ + "bitflags", + "cairo-rs", + "cc", + "cocoa", + "core-foundation", + "core-graphics", + "crossbeam-channel", + "dispatch", + "gdk", + "gdk-pixbuf", + "gdk-sys", + "gdkx11-sys", + "gio", + "glib", + "glib-sys", + "gtk", + "image", + "instant", + "jni", + "lazy_static", + "libc", + "log", + "ndk", + "ndk-context", + "ndk-sys", + "objc", + "once_cell", + "parking_lot", + "paste", + "png 0.17.7", + "raw-window-handle", + "scopeguard", + "serde", + "unicode-segmentation", + "uuid 1.2.1", + "windows 0.39.0", + "windows-implement", + "x11-dl", +] + +[[package]] +name = "tar" +version = "0.4.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b55807c0344e1e6c04d7c965f5289c39a8d94ae23ed5c0b57aabac549f871c6" +dependencies = [ + "filetime", + "libc", + "xattr", +] + +[[package]] +name = "tauri" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efbf22abd61d95ca9b2becd77f9db4c093892f73e8a07d21d8b0b2bf71a7bcea" +dependencies = [ + "anyhow", + "attohttpc", + "cocoa", + "dirs-next", + "embed_plist", + "encoding_rs", + "flate2", + "futures-util", + "glib", + "glob", + "gtk", + "heck 0.4.0", + "http", + "ignore", + "notify-rust", + "objc", + "once_cell", + "open", + "os_info", + "os_pipe", + "percent-encoding", + "rand 0.8.5", + "raw-window-handle", + "regex", + "rfd", + "semver 1.0.14", + "serde", + "serde_json", + "serde_repr", + "serialize-to-javascript", + "shared_child", + "state", + "tar", + "tauri-macros", + "tauri-runtime", + "tauri-runtime-wry", + "tauri-utils", + "tempfile", + "thiserror", + "tokio", + "url", + "uuid 1.2.1", + "webkit2gtk", + "webview2-com", + "windows 0.39.0", +] + +[[package]] +name = "tauri-build" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0991fb306849897439dbd4a72e4cbed2413e2eb26cb4b3ba220b94edba8b4b88" +dependencies = [ + "anyhow", + "cargo_toml", + "heck 0.4.0", + "json-patch", + "semver 1.0.14", + "serde_json", + "tauri-utils", + "winres", +] + +[[package]] +name = "tauri-codegen" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "356fa253e40ae4d6ff02075011f2f2bb4066f5c9d8c1e16ca6912d7b75903ba6" +dependencies = [ + "base64", + "brotli", + "ico", + "json-patch", + "plist", + "png 0.17.7", + "proc-macro2", + "quote", + "regex", + "semver 1.0.14", + "serde", + "serde_json", + "sha2", + "tauri-utils", + "thiserror", + "time", + "uuid 1.2.1", + "walkdir", +] + +[[package]] +name = "tauri-macros" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6051fd6940ddb22af452340d03c66a3e2f5d72e0788d4081d91e31528ccdc4d" +dependencies = [ + "heck 0.4.0", + "proc-macro2", + "quote", + "syn", + "tauri-codegen", + "tauri-utils", +] + +[[package]] +name = "tauri-runtime" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d49439a5ea47f474572b854972f42eda2e02a470be5ca9609cc83bb66945abe2" +dependencies = [ + "gtk", + "http", + "http-range", + "infer", + "rand 0.8.5", + "raw-window-handle", + "serde", + "serde_json", + "tauri-utils", + "thiserror", + "uuid 1.2.1", + "webview2-com", + "windows 0.39.0", +] + +[[package]] +name = "tauri-runtime-wry" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28dce920995fd49907aa9bea7249ed1771454f11f7611924c920a1f75fb614d4" +dependencies = [ + "cocoa", + "gtk", + "percent-encoding", + "rand 0.8.5", + "raw-window-handle", + "tauri-runtime", + "tauri-utils", + "uuid 1.2.1", + "webkit2gtk", + "webview2-com", + "windows 0.39.0", + "wry", +] + [[package]] name = "tauri-sys" version = "0.1.0" dependencies = [ "js-sys", - "semver", + "semver 1.0.14", "serde", "serde-wasm-bindgen", + "tauri", "tauri-sys", "thiserror", "url", @@ -184,6 +2971,98 @@ dependencies = [ "wasm-bindgen-test", ] +[[package]] +name = "tauri-sys-test" +version = "0.0.0" +dependencies = [ + "serde", + "serde_json", + "tauri", + "tauri-build", +] + +[[package]] +name = "tauri-sys-test-ui" +version = "0.0.0" +dependencies = [ + "anyhow", + "console_error_panic_hook", + "futures-util", + "serde", + "sycamore", + "tauri-sys", + "wasm-bindgen-futures", +] + +[[package]] +name = "tauri-utils" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e8fdae6f29cef959809a3c3afef510c5b715a446a597ab8b791497585363f39" +dependencies = [ + "brotli", + "ctor", + "glob", + "heck 0.4.0", + "html5ever", + "json-patch", + "kuchiki", + "memchr", + "phf 0.10.1", + "proc-macro2", + "quote", + "semver 1.0.14", + "serde", + "serde_json", + "serde_with", + "thiserror", + "url", + "walkdir", + "windows 0.39.0", +] + +[[package]] +name = "tauri-winrt-notification" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c58de036c4d2e20717024de2a3c4bf56c301f07b21bc8ef9b57189fce06f1f3b" +dependencies = [ + "quick-xml", + "strum", + "windows 0.39.0", +] + +[[package]] +name = "tempfile" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4" +dependencies = [ + "cfg-if", + "fastrand", + "libc", + "redox_syscall", + "remove_dir_all", + "winapi", +] + +[[package]] +name = "tendril" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d24a120c5fc464a3458240ee02c299ebcb9d67b5249c8848b09d639dca8d7bb0" +dependencies = [ + "futf", + "mac", + "utf-8", +] + +[[package]] +name = "thin-slice" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eaa81235c7058867fa8c0e7314f33dcce9c215f535d1913822a2b3f5e289f3c" + [[package]] name = "thiserror" version = "1.0.37" @@ -204,6 +3083,44 @@ dependencies = [ "syn", ] +[[package]] +name = "thread_local" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5516c27b78311c50bf42c071425c560ac799b11c30b31f87e3081965fe5e0180" +dependencies = [ + "once_cell", +] + +[[package]] +name = "time" +version = "0.3.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fab5c8b9980850e06d92ddbe3ab839c062c801f3927c0fb8abd6fc8e918fbca" +dependencies = [ + "itoa 1.0.4", + "libc", + "num_threads", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd" + +[[package]] +name = "time-macros" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65bb801831d812c562ae7d2bfb531f26e66e4e1f6b17307ba4149c5064710e5b" +dependencies = [ + "time-core", +] + [[package]] name = "tinyvec" version = "1.6.0" @@ -219,6 +3136,111 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" +[[package]] +name = "tokio" +version = "1.21.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9e03c497dc955702ba729190dc4aac6f2a0ce97f913e5b1b5912fc5039d9099" +dependencies = [ + "autocfg", + "bytes", + "memchr", + "num_cpus", + "pin-project-lite", +] + +[[package]] +name = "toml" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7" +dependencies = [ + "serde", +] + +[[package]] +name = "tracing" +version = "0.1.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +dependencies = [ + "cfg-if", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tracing-core" +version = "0.1.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" +dependencies = [ + "lazy_static", + "log", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6176eae26dd70d0c919749377897b54a9276bd7061339665dd68777926b5a70" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "treediff" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "761e8d5ad7ce14bb82b7e61ccc0ca961005a275a060b9644a2431aa11553c2ff" +dependencies = [ + "serde_json", +] + +[[package]] +name = "typenum" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" + +[[package]] +name = "ucd-trie" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e79c4d996edb816c91e4308506774452e55e95c3c9de07b6729e17e15a5ef81" + [[package]] name = "unicode-bidi" version = "0.3.8" @@ -240,6 +3262,12 @@ dependencies = [ "tinyvec", ] +[[package]] +name = "unicode-segmentation" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fdbf052a0783de01e944a6ce7a8cb939e295b1e7be835a1112c3b9a7f047a5a" + [[package]] name = "url" version = "2.3.1" @@ -249,8 +3277,89 @@ dependencies = [ "form_urlencoded", "idna", "percent-encoding", + "serde", ] +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + +[[package]] +name = "utf8-width" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5190c9442dcdaf0ddd50f37420417d219ae5261bbf5db120d0f9bab996c9cba1" + +[[package]] +name = "uuid" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" + +[[package]] +name = "uuid" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "feb41e78f93363bb2df8b0e86a2ca30eed7806ea16ea0c790d757cf93f79be83" +dependencies = [ + "getrandom 0.2.8", +] + +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "version-compare" +version = "0.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c18c859eead79d8b95d09e4678566e8d70105c4e7b251f707a03df32442661b" + +[[package]] +name = "version-compare" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe88247b92c1df6b6de80ddc290f3976dbdf2f5f5d3fd049a9fb598c6dd5ca73" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "walkdir" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" +dependencies = [ + "same-file", + "winapi", + "winapi-util", +] + +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + [[package]] name = "wasm-bindgen" version = "0.2.83" @@ -351,3 +3460,462 @@ dependencies = [ "js-sys", "wasm-bindgen", ] + +[[package]] +name = "webkit2gtk" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8f859735e4a452aeb28c6c56a852967a8a76c8eb1cc32dbf931ad28a13d6370" +dependencies = [ + "bitflags", + "cairo-rs", + "gdk", + "gdk-sys", + "gio", + "gio-sys", + "glib", + "glib-sys", + "gobject-sys", + "gtk", + "gtk-sys", + "javascriptcore-rs", + "libc", + "once_cell", + "soup2", + "webkit2gtk-sys", +] + +[[package]] +name = "webkit2gtk-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d76ca6ecc47aeba01ec61e480139dda143796abcae6f83bcddf50d6b5b1dcf3" +dependencies = [ + "atk-sys", + "bitflags", + "cairo-sys-rs", + "gdk-pixbuf-sys", + "gdk-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "gtk-sys", + "javascriptcore-rs-sys", + "libc", + "pango-sys", + "pkg-config", + "soup2-sys", + "system-deps 6.0.3", +] + +[[package]] +name = "webview2-com" +version = "0.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4a769c9f1a64a8734bde70caafac2b96cada12cd4aefa49196b3a386b8b4178" +dependencies = [ + "webview2-com-macros", + "webview2-com-sys", + "windows 0.39.0", + "windows-implement", +] + +[[package]] +name = "webview2-com-macros" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaebe196c01691db62e9e4ca52c5ef1e4fd837dcae27dae3ada599b5a8fd05ac" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "webview2-com-sys" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aac48ef20ddf657755fdcda8dfed2a7b4fc7e4581acce6fe9b88c3d64f29dee7" +dependencies = [ + "regex", + "serde", + "serde_json", + "thiserror", + "windows 0.39.0", + "windows-bindgen", + "windows-metadata", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +dependencies = [ + "winapi", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbedf6db9096bc2364adce0ae0aa636dcd89f3c3f2cd67947062aaf0ca2a10ec" +dependencies = [ + "windows_aarch64_msvc 0.32.0", + "windows_i686_gnu 0.32.0", + "windows_i686_msvc 0.32.0", + "windows_x86_64_gnu 0.32.0", + "windows_x86_64_msvc 0.32.0", +] + +[[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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1c4bd0a50ac6020f65184721f758dba47bb9fbc2133df715ec74a237b26794a" +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", +] + +[[package]] +name = "windows-bindgen" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68003dbd0e38abc0fb85b939240f4bce37c43a5981d3df37ccbaaa981b47cb41" +dependencies = [ + "windows-metadata", + "windows-tokens", +] + +[[package]] +name = "windows-implement" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba01f98f509cb5dc05f4e5fc95e535f78260f15fea8fe1a8abdd08f774f1cee7" +dependencies = [ + "syn", + "windows-tokens", +] + +[[package]] +name = "windows-metadata" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ee5e275231f07c6e240d14f34e1b635bf1faa1c76c57cfd59a5cdb9848e4278" + +[[package]] +name = "windows-sys" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2" +dependencies = [ + "windows_aarch64_msvc 0.36.1", + "windows_i686_gnu 0.36.1", + "windows_i686_msvc 0.36.1", + "windows_x86_64_gnu 0.36.1", + "windows_x86_64_msvc 0.36.1", +] + +[[package]] +name = "windows-sys" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc 0.42.0", + "windows_i686_gnu 0.42.0", + "windows_i686_msvc 0.42.0", + "windows_x86_64_gnu 0.42.0", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc 0.42.0", +] + +[[package]] +name = "windows-tokens" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f838de2fe15fe6bac988e74b798f26499a8b21a9d97edec321e79b28d1d7f597" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d2aa71f6f0cbe00ae5167d90ef3cfe66527d6f613ca78ac8024c3ccab9a19e" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8e92753b1c443191654ec532f14c199742964a061be25d77d7a96f09db20bf5" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2623277cb2d1c216ba3b578c0f3cf9cdebeddb6e66b1b218bb33596ea7769c3a" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec7711666096bd4096ffa835238905bb33fb87267910e154b18b44eaabb340f2" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd0f252f5a35cac83d6311b2e795981f5ee6e67eb1f9a7f64eb4500fbc4dcdb4" + +[[package]] +name = "windows_i686_gnu" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a711c68811799e017b6038e0922cb27a5e2f43a2ddb609fe0b6f3eeda9de615" + +[[package]] +name = "windows_i686_gnu" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6" + +[[package]] +name = "windows_i686_gnu" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3925fd0b0b804730d44d4b6278c50f9699703ec49bcd628020f46f4ba07d9e1" + +[[package]] +name = "windows_i686_gnu" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "763fc57100a5f7042e3057e7e8d9bdd7860d330070251a73d003563a3bb49e1b" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbeae19f6716841636c28d695375df17562ca208b2b7d0dc47635a50ae6c5de7" + +[[package]] +name = "windows_i686_msvc" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "146c11bb1a02615db74680b32a68e2d61f553cc24c4eb5b4ca10311740e44172" + +[[package]] +name = "windows_i686_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024" + +[[package]] +name = "windows_i686_msvc" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce907ac74fe331b524c1298683efbf598bb031bc84d5e274db2083696d07c57c" + +[[package]] +name = "windows_i686_msvc" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bc7cbfe58828921e10a9f446fcaaf649204dcfe6c1ddd712c5eebae6bda1106" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84c12f65daa39dd2babe6e442988fc329d6243fdce47d7d2d155b8d874862246" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c912b12f7454c6620635bbff3450962753834be2a594819bd5e945af18ec64bc" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2babfba0828f2e6b32457d5341427dcbb577ceef556273229959ac23a10af33d" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6868c165637d653ae1e8dc4d82c25d4f97dd6605eaa8d784b5c6e0ab2a252b65" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf7b1b21b5362cbc318f686150e5bcea75ecedc74dd157d874d754a2ca44b0ed" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09d525d2ba30eeb3297665bd434a54297e4170c7f1a44cad4ef58095b4cd2028" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "504a2476202769977a040c6364301a3f65d0cc9e3fb08600b2bda150a0488316" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4dd6dc7df2d84cf7b33822ed5b86318fb1781948e9663bacd047fc9dd52259d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e4d40883ae9cae962787ca76ba76390ffa29214667a111db9e0a1ad8377e809" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40009d85759725a34da6d89a94e63d7bdc50a862acf0dbc7c8e488f1edcb6f5" + +[[package]] +name = "winres" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b68db261ef59e9e52806f688020631e987592bd83619edccda9c47d42cde4f6c" +dependencies = [ + "toml", +] + +[[package]] +name = "wry" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff5c1352b4266fdf92c63479d2f58ab4cd29dc4e78fbc1b62011ed1227926945" +dependencies = [ + "base64", + "block", + "cocoa", + "core-graphics", + "crossbeam-channel", + "gdk", + "gio", + "glib", + "gtk", + "html5ever", + "http", + "kuchiki", + "libc", + "log", + "objc", + "objc_id", + "once_cell", + "serde", + "serde_json", + "sha2", + "tao", + "thiserror", + "url", + "webkit2gtk", + "webkit2gtk-sys", + "webview2-com", + "windows 0.39.0", + "windows-implement", +] + +[[package]] +name = "x11" +version = "2.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7ae97874a928d821b061fce3d1fc52f08071dd53c89a6102bc06efcac3b2908" +dependencies = [ + "libc", + "pkg-config", +] + +[[package]] +name = "x11-dl" +version = "2.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c83627bc137605acc00bb399c7b908ef460b621fc37c953db2b09f88c449ea6" +dependencies = [ + "lazy_static", + "libc", + "pkg-config", +] + +[[package]] +name = "xattr" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d1526bbe5aaeb5eb06885f4d987bcdfa5e23187055de9b83fe00156a821fabc" +dependencies = [ + "libc", +] + +[[package]] +name = "xml-rs" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2d7d3948613f75c98fd9328cfdcc45acc4d360655289d0a7d4ec931392200a3" diff --git a/Cargo.toml b/Cargo.toml index 8c2523a..32bf093 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,11 +18,20 @@ semver = { version = "1.0.14", optional = true } [dev-dependencies] wasm-bindgen-test = "0.3.33" tauri-sys = { path = ".", features = ["all"] } +tauri = "1.1.1" + +[package.metadata.docs.rs] +all-features = true [features] -all = ["app", "clipboard", "event", "mocks", "tauri"] +all = ["app", "clipboard", "event", "mocks", "tauri", "window", "process"] app = ["dep:semver"] clipboard = [] event = [] mocks = [] -tauri = ["dep:url"] \ No newline at end of file +tauri = ["dep:url"] +window = [] +process = [] + +[workspace] +members = ["examples/test", "examples/test/src-tauri"] \ No newline at end of file diff --git a/build.rs b/build.rs index f0eae84..e8baf46 100644 --- a/build.rs +++ b/build.rs @@ -2,7 +2,7 @@ use std::process::Command; fn main() { /* Shared arguments */ - let sargs: [&str; 8] = [ + let sargs: &[&str] = &[ "--outdir=dist", "--format=esm", "--bundle", @@ -11,18 +11,20 @@ fn main() { "tauri/tooling/api/src/tauri.ts", "tauri/tooling/api/src/event.ts", "tauri/tooling/api/src/mocks.ts", + "tauri/tooling/api/src/window.ts", + "tauri/tooling/api/src/process.ts" ]; if cfg!(windows) { /* Use cmd if the target is windows */ Command::new("cmd") .args(&["/C", "esbuild"]) - .args(&sargs) + .args(sargs) .output() .unwrap(); } else if cfg!(unix) { Command::new("esbuild") - .args(&sargs) + .args(sargs) .output() .unwrap(); } else { diff --git a/dist/process.js b/dist/process.js new file mode 100644 index 0000000..9356313 --- /dev/null +++ b/dist/process.js @@ -0,0 +1,65 @@ +// tauri/tooling/api/src/tauri.ts +function uid() { + return window.crypto.getRandomValues(new Uint32Array(1))[0]; +} +function transformCallback(callback, once = false) { + const identifier = uid(); + const prop = `_${identifier}`; + Object.defineProperty(window, prop, { + value: (result) => { + if (once) { + Reflect.deleteProperty(window, prop); + } + return callback?.(result); + }, + writable: false, + configurable: true + }); + return identifier; +} +async function invoke(cmd, args = {}) { + return new Promise((resolve, reject) => { + const callback = transformCallback((e) => { + resolve(e); + Reflect.deleteProperty(window, `_${error}`); + }, true); + const error = transformCallback((e) => { + reject(e); + Reflect.deleteProperty(window, `_${callback}`); + }, true); + window.__TAURI_IPC__({ + cmd, + callback, + error, + ...args + }); + }); +} + +// tauri/tooling/api/src/helpers/tauri.ts +async function invokeTauriCommand(command) { + return invoke("tauri", command); +} + +// tauri/tooling/api/src/process.ts +async function exit(exitCode = 0) { + return invokeTauriCommand({ + __tauriModule: "Process", + message: { + cmd: "exit", + exitCode + } + }); +} +async function relaunch() { + return invokeTauriCommand({ + __tauriModule: "Process", + message: { + cmd: "relaunch" + } + }); +} +export { + exit, + relaunch +}; diff --git a/dist/window.js b/dist/window.js new file mode 100644 index 0000000..e0b637b --- /dev/null +++ b/dist/window.js @@ -0,0 +1,1004 @@ +// tauri/tooling/api/src/tauri.ts +function uid() { + return window.crypto.getRandomValues(new Uint32Array(1))[0]; +} +function transformCallback(callback, once2 = false) { + const identifier = uid(); + const prop = `_${identifier}`; + Object.defineProperty(window, prop, { + value: (result) => { + if (once2) { + Reflect.deleteProperty(window, prop); + } + return callback?.(result); + }, + writable: false, + configurable: true + }); + return identifier; +} +async function invoke(cmd, args = {}) { + return new Promise((resolve, reject) => { + const callback = transformCallback((e) => { + resolve(e); + Reflect.deleteProperty(window, `_${error}`); + }, true); + const error = transformCallback((e) => { + reject(e); + Reflect.deleteProperty(window, `_${callback}`); + }, true); + window.__TAURI_IPC__({ + cmd, + callback, + error, + ...args + }); + }); +} + +// tauri/tooling/api/src/helpers/tauri.ts +async function invokeTauriCommand(command) { + return invoke("tauri", command); +} + +// tauri/tooling/api/src/helpers/event.ts +async function _unlisten(event, eventId) { + return invokeTauriCommand({ + __tauriModule: "Event", + message: { + cmd: "unlisten", + event, + eventId + } + }); +} +async function emit(event, windowLabel, payload) { + await invokeTauriCommand({ + __tauriModule: "Event", + message: { + cmd: "emit", + event, + windowLabel, + payload + } + }); +} +async function listen(event, windowLabel, handler) { + return invokeTauriCommand({ + __tauriModule: "Event", + message: { + cmd: "listen", + event, + windowLabel, + handler: transformCallback(handler) + } + }).then((eventId) => { + return async () => _unlisten(event, eventId); + }); +} +async function once(event, windowLabel, handler) { + return listen(event, windowLabel, (eventData) => { + handler(eventData); + _unlisten(event, eventData.id).catch(() => { + }); + }); +} + +// tauri/tooling/api/src/window.ts +var LogicalSize = class { + constructor(width, height) { + this.type = "Logical"; + this.width = width; + this.height = height; + } +}; +var PhysicalSize = class { + constructor(width, height) { + this.type = "Physical"; + this.width = width; + this.height = height; + } + toLogical(scaleFactor) { + return new LogicalSize(this.width / scaleFactor, this.height / scaleFactor); + } +}; +var LogicalPosition = class { + constructor(x, y) { + this.type = "Logical"; + this.x = x; + this.y = y; + } +}; +var PhysicalPosition = class { + constructor(x, y) { + this.type = "Physical"; + this.x = x; + this.y = y; + } + toLogical(scaleFactor) { + return new LogicalPosition(this.x / scaleFactor, this.y / scaleFactor); + } +}; +var UserAttentionType = /* @__PURE__ */ ((UserAttentionType2) => { + UserAttentionType2[UserAttentionType2["Critical"] = 1] = "Critical"; + UserAttentionType2[UserAttentionType2["Informational"] = 2] = "Informational"; + return UserAttentionType2; +})(UserAttentionType || {}); +function getCurrent() { + return new WebviewWindow(window.__TAURI_METADATA__.__currentWindow.label, { + skip: true + }); +} +function getAll() { + return window.__TAURI_METADATA__.__windows.map( + (w) => new WebviewWindow(w.label, { + skip: true + }) + ); +} +var localTauriEvents = ["tauri://created", "tauri://error"]; +var WebviewWindowHandle = class { + constructor(label) { + this.label = label; + this.listeners = /* @__PURE__ */ Object.create(null); + } + async listen(event, handler) { + if (this._handleTauriEvent(event, handler)) { + return Promise.resolve(() => { + const listeners = this.listeners[event]; + listeners.splice(listeners.indexOf(handler), 1); + }); + } + return listen(event, this.label, handler); + } + async once(event, handler) { + if (this._handleTauriEvent(event, handler)) { + return Promise.resolve(() => { + const listeners = this.listeners[event]; + listeners.splice(listeners.indexOf(handler), 1); + }); + } + return once(event, this.label, handler); + } + async emit(event, payload) { + if (localTauriEvents.includes(event)) { + for (const handler of this.listeners[event] || []) { + handler({ event, id: -1, windowLabel: this.label, payload }); + } + return Promise.resolve(); + } + return emit(event, this.label, payload); + } + _handleTauriEvent(event, handler) { + if (localTauriEvents.includes(event)) { + if (!(event in this.listeners)) { + this.listeners[event] = [handler]; + } else { + this.listeners[event].push(handler); + } + return true; + } + return false; + } +}; +var WindowManager = class extends WebviewWindowHandle { + async scaleFactor() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "scaleFactor" + } + } + } + }); + } + async innerPosition() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "innerPosition" + } + } + } + }).then(({ x, y }) => new PhysicalPosition(x, y)); + } + async outerPosition() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "outerPosition" + } + } + } + }).then(({ x, y }) => new PhysicalPosition(x, y)); + } + async innerSize() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "innerSize" + } + } + } + }).then(({ width, height }) => new PhysicalSize(width, height)); + } + async outerSize() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "outerSize" + } + } + } + }).then(({ width, height }) => new PhysicalSize(width, height)); + } + async isFullscreen() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "isFullscreen" + } + } + } + }); + } + async isMaximized() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "isMaximized" + } + } + } + }); + } + async isDecorated() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "isDecorated" + } + } + } + }); + } + async isResizable() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "isResizable" + } + } + } + }); + } + async isVisible() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "isVisible" + } + } + } + }); + } + async theme() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "theme" + } + } + } + }); + } + async center() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "center" + } + } + } + }); + } + async requestUserAttention(requestType) { + let requestType_ = null; + if (requestType) { + if (requestType === 1 /* Critical */) { + requestType_ = { type: "Critical" }; + } else { + requestType_ = { type: "Informational" }; + } + } + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "requestUserAttention", + payload: requestType_ + } + } + } + }); + } + async setResizable(resizable) { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "setResizable", + payload: resizable + } + } + } + }); + } + async setTitle(title) { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "setTitle", + payload: title + } + } + } + }); + } + async maximize() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "maximize" + } + } + } + }); + } + async unmaximize() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "unmaximize" + } + } + } + }); + } + async toggleMaximize() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "toggleMaximize" + } + } + } + }); + } + async minimize() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "minimize" + } + } + } + }); + } + async unminimize() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "unminimize" + } + } + } + }); + } + async show() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "show" + } + } + } + }); + } + async hide() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "hide" + } + } + } + }); + } + async close() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "close" + } + } + } + }); + } + async setDecorations(decorations) { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "setDecorations", + payload: decorations + } + } + } + }); + } + async setAlwaysOnTop(alwaysOnTop) { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "setAlwaysOnTop", + payload: alwaysOnTop + } + } + } + }); + } + async setSize(size) { + if (!size || size.type !== "Logical" && size.type !== "Physical") { + throw new Error( + "the `size` argument must be either a LogicalSize or a PhysicalSize instance" + ); + } + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "setSize", + payload: { + type: size.type, + data: { + width: size.width, + height: size.height + } + } + } + } + } + }); + } + async setMinSize(size) { + if (size && size.type !== "Logical" && size.type !== "Physical") { + throw new Error( + "the `size` argument must be either a LogicalSize or a PhysicalSize instance" + ); + } + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "setMinSize", + payload: size ? { + type: size.type, + data: { + width: size.width, + height: size.height + } + } : null + } + } + } + }); + } + async setMaxSize(size) { + if (size && size.type !== "Logical" && size.type !== "Physical") { + throw new Error( + "the `size` argument must be either a LogicalSize or a PhysicalSize instance" + ); + } + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "setMaxSize", + payload: size ? { + type: size.type, + data: { + width: size.width, + height: size.height + } + } : null + } + } + } + }); + } + async setPosition(position) { + if (!position || position.type !== "Logical" && position.type !== "Physical") { + throw new Error( + "the `position` argument must be either a LogicalPosition or a PhysicalPosition instance" + ); + } + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "setPosition", + payload: { + type: position.type, + data: { + x: position.x, + y: position.y + } + } + } + } + } + }); + } + async setFullscreen(fullscreen) { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "setFullscreen", + payload: fullscreen + } + } + } + }); + } + async setFocus() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "setFocus" + } + } + } + }); + } + async setIcon(icon) { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "setIcon", + payload: { + icon: typeof icon === "string" ? icon : Array.from(icon) + } + } + } + } + }); + } + async setSkipTaskbar(skip) { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "setSkipTaskbar", + payload: skip + } + } + } + }); + } + async setCursorGrab(grab) { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "setCursorGrab", + payload: grab + } + } + } + }); + } + async setCursorVisible(visible) { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "setCursorVisible", + payload: visible + } + } + } + }); + } + async setCursorIcon(icon) { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "setCursorIcon", + payload: icon + } + } + } + }); + } + async setCursorPosition(position) { + if (!position || position.type !== "Logical" && position.type !== "Physical") { + throw new Error( + "the `position` argument must be either a LogicalPosition or a PhysicalPosition instance" + ); + } + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "setCursorPosition", + payload: { + type: position.type, + data: { + x: position.x, + y: position.y + } + } + } + } + } + }); + } + async setIgnoreCursorEvents(ignore) { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "setIgnoreCursorEvents", + payload: ignore + } + } + } + }); + } + async startDragging() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "startDragging" + } + } + } + }); + } + async onResized(handler) { + return this.listen("tauri://resize" /* WINDOW_RESIZED */, handler); + } + async onMoved(handler) { + return this.listen("tauri://move" /* WINDOW_MOVED */, handler); + } + async onCloseRequested(handler) { + return this.listen("tauri://close-requested" /* WINDOW_CLOSE_REQUESTED */, (event) => { + const evt = new CloseRequestedEvent(event); + void Promise.resolve(handler(evt)).then(() => { + if (!evt.isPreventDefault()) { + return this.close(); + } + }); + }); + } + async onFocusChanged(handler) { + const unlistenFocus = await this.listen( + "tauri://focus" /* WINDOW_FOCUS */, + (event) => { + handler({ ...event, payload: true }); + } + ); + const unlistenBlur = await this.listen( + "tauri://blur" /* WINDOW_BLUR */, + (event) => { + handler({ ...event, payload: false }); + } + ); + return () => { + unlistenFocus(); + unlistenBlur(); + }; + } + async onScaleChanged(handler) { + return this.listen( + "tauri://scale-change" /* WINDOW_SCALE_FACTOR_CHANGED */, + handler + ); + } + async onMenuClicked(handler) { + return this.listen("tauri://menu" /* MENU */, handler); + } + async onFileDropEvent(handler) { + const unlistenFileDrop = await this.listen( + "tauri://file-drop" /* WINDOW_FILE_DROP */, + (event) => { + handler({ ...event, payload: { type: "drop", paths: event.payload } }); + } + ); + const unlistenFileHover = await this.listen( + "tauri://file-drop-hover" /* WINDOW_FILE_DROP_HOVER */, + (event) => { + handler({ ...event, payload: { type: "hover", paths: event.payload } }); + } + ); + const unlistenCancel = await this.listen( + "tauri://file-drop-cancelled" /* WINDOW_FILE_DROP_CANCELLED */, + (event) => { + handler({ ...event, payload: { type: "cancel" } }); + } + ); + return () => { + unlistenFileDrop(); + unlistenFileHover(); + unlistenCancel(); + }; + } + async onThemeChanged(handler) { + return this.listen("tauri://theme-changed" /* WINDOW_THEME_CHANGED */, handler); + } +}; +var CloseRequestedEvent = class { + constructor(event) { + this._preventDefault = false; + this.event = event.event; + this.windowLabel = event.windowLabel; + this.id = event.id; + } + preventDefault() { + this._preventDefault = true; + } + isPreventDefault() { + return this._preventDefault; + } +}; +var WebviewWindow = class extends WindowManager { + constructor(label, options = {}) { + super(label); + if (!options?.skip) { + invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "createWebview", + data: { + options: { + label, + ...options + } + } + } + }).then(async () => this.emit("tauri://created")).catch(async (e) => this.emit("tauri://error", e)); + } + } + static getByLabel(label) { + if (getAll().some((w) => w.label === label)) { + return new WebviewWindow(label, { skip: true }); + } + return null; + } +}; +var appWindow; +if ("__TAURI_METADATA__" in window) { + appWindow = new WebviewWindow( + window.__TAURI_METADATA__.__currentWindow.label, + { + skip: true + } + ); +} else { + console.warn( + `Could not find "window.__TAURI_METADATA__". The "appWindow" value will reference the "main" window label. +Note that this is not an issue if running this frontend on a browser instead of a Tauri window.` + ); + appWindow = new WebviewWindow("main", { + skip: true + }); +} +function mapMonitor(m) { + return m === null ? null : { + name: m.name, + scaleFactor: m.scaleFactor, + position: new PhysicalPosition(m.position.x, m.position.y), + size: new PhysicalSize(m.size.width, m.size.height) + }; +} +async function currentMonitor() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + cmd: { + type: "currentMonitor" + } + } + } + }).then(mapMonitor); +} +async function primaryMonitor() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + cmd: { + type: "primaryMonitor" + } + } + } + }).then(mapMonitor); +} +async function availableMonitors() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + cmd: { + type: "availableMonitors" + } + } + } + }).then((ms) => ms.map(mapMonitor)); +} +export { + CloseRequestedEvent, + LogicalPosition, + LogicalSize, + PhysicalPosition, + PhysicalSize, + UserAttentionType, + WebviewWindow, + WebviewWindowHandle, + WindowManager, + appWindow, + availableMonitors, + currentMonitor, + getAll, + getCurrent, + primaryMonitor +}; diff --git a/examples/api/.gitignore b/examples/api/.gitignore deleted file mode 100644 index 48c3ca4..0000000 --- a/examples/api/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -/dist/ -/target/ -/Cargo.lock diff --git a/examples/api/.taurignore b/examples/api/.taurignore deleted file mode 100644 index 1ebdc6d..0000000 --- a/examples/api/.taurignore +++ /dev/null @@ -1,3 +0,0 @@ -/src -/public -/Cargo.toml \ No newline at end of file diff --git a/examples/api/Cargo.toml b/examples/api/Cargo.toml deleted file mode 100644 index 37c7504..0000000 --- a/examples/api/Cargo.toml +++ /dev/null @@ -1,21 +0,0 @@ -[package] -name = "tauri-app-ui" -version = "0.0.0" -edition = "2021" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html -[dependencies] -tauri-sys = { path = "../../", features = ["all"] } -serde = { version = "1.0.140", features = ["derive"] } -sycamore = { git = "https://github.com/sycamore-rs/sycamore", rev = "abd556cbc02047042dad2ebd04405e455a9b11b2", features = ["suspense", "hydrate"] } -sycamore-router = { git = "https://github.com/sycamore-rs/sycamore", rev = "abd556cbc02047042dad2ebd04405e455a9b11b2" } -log = "0.4.17" -wasm-logger = "0.2.0" -gloo-timers = "0.2.4" -shared = { path = "shared" } - -[features] -ssg = ["sycamore/ssr"] - -[workspace] -members = ["src-tauri", "shared"] diff --git a/examples/api/Trunk.toml b/examples/api/Trunk.toml deleted file mode 100644 index 60ac6db..0000000 --- a/examples/api/Trunk.toml +++ /dev/null @@ -1,16 +0,0 @@ -[build] -target = "./index.html" - -[watch] -ignore = ["./src-tauri"] - -[serve] -address = "127.0.0.1" -port = 1420 -open = false - -# [[hooks]] -# # Runs SSG on production builds -# stage = "post_build" -# command = "bash" -# command_arguments = ["-c", "if [[ $TRUNK_PROFILE == \"release\" ]]; then cargo run --release --features ssg -- $TRUNK_STAGING_DIR; fi"] diff --git a/examples/api/index.html b/examples/api/index.html deleted file mode 100644 index fc029e0..0000000 --- a/examples/api/index.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - Tauri + Yew App - - - - - - - diff --git a/examples/api/public/tauri_logo.png b/examples/api/public/tauri_logo.png deleted file mode 100644 index 2c53b8c4bd721c7346831ba6be581d03a0a4d755..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2810 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 diff --git a/examples/api/shared/Cargo.toml b/examples/api/shared/Cargo.toml deleted file mode 100644 index 92a9d17..0000000 --- a/examples/api/shared/Cargo.toml +++ /dev/null @@ -1,9 +0,0 @@ -[package] -name = "shared" -version = "0.1.0" -edition = "2021" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] -serde = { version = "1.0.140", features = ["derive"] } \ No newline at end of file diff --git a/examples/api/shared/src/lib.rs b/examples/api/shared/src/lib.rs deleted file mode 100644 index 1ebbc1d..0000000 --- a/examples/api/shared/src/lib.rs +++ /dev/null @@ -1,12 +0,0 @@ -use serde::{Serialize, Deserialize}; - -#[derive(Debug, Clone, Serialize, Deserialize)] -pub struct Reply<'a> { - pub data: &'a str, -} - -#[derive(Debug, Clone, Serialize, Deserialize)] -pub struct RequestBody<'a> { - pub id: i32, - pub name: &'a str, -} \ No newline at end of file diff --git a/examples/api/src-tauri/src/main.rs b/examples/api/src-tauri/src/main.rs deleted file mode 100644 index bea1e9a..0000000 --- a/examples/api/src-tauri/src/main.rs +++ /dev/null @@ -1,37 +0,0 @@ -#![cfg_attr( - all(not(debug_assertions), target_os = "windows"), - windows_subsystem = "windows" -)] - -use shared::{Reply, RequestBody}; - -#[tauri::command] -fn log_operation(event: String, payload: Option) { - println!("{} {:?}", event, payload); -} - -#[tauri::command] -fn perform_request(endpoint: String, body: RequestBody) -> String { - println!("{} {:?}", endpoint, body); - "message response".into() -} - -fn main() { - tauri::Builder::default() - .invoke_handler(tauri::generate_handler![log_operation, perform_request]) - .on_page_load(|window, _| { - let window_ = window.clone(); - window.listen("js-event", move |event| { - println!("got js-event with message '{:?}'", event.payload()); - let reply = Reply { - data: "something else", - }; - - window_ - .emit("rust-event", Some(reply)) - .expect("failed to emit"); - }); - }) - .run(tauri::generate_context!()) - .expect("error while running tauri application"); -} diff --git a/examples/api/src/main.rs b/examples/api/src/main.rs deleted file mode 100644 index c317bcc..0000000 --- a/examples/api/src/main.rs +++ /dev/null @@ -1,79 +0,0 @@ -mod views; - -use sycamore::prelude::*; -#[cfg(not(feature = "ssg"))] -use sycamore_router::{Router, HistoryIntegration}; - -#[component] -fn Header(cx: Scope) -> View { - view! { cx, - header(style="display: flex; gap: 1em; margin-bottom: 1em;") { - a(href="/") { - "Welcome" - } - a(href="/app") { - "App" - } - a(href="/clipboard") { - "Clipboard" - } - a(href="/communication") { - "Communication" - } - } - } -} - -#[cfg(all(not(debug_assertions), not(feature = "ssg")))] -fn main() { - wasm_logger::init(wasm_logger::Config::default()); - - sycamore::hydrate(|cx| view! { cx, - Header - Router( - integration=HistoryIntegration::new(), - view=views::switch - ) - }); -} - -#[cfg(all(debug_assertions, not(feature = "ssg")))] -fn main() { - use sycamore::view; - - wasm_logger::init(wasm_logger::Config::default()); - - sycamore::render(|cx| view! { cx, - Header - Router( - integration=HistoryIntegration::new(), - view=views::switch - ) - }); -} - -#[cfg(feature = "ssg")] -fn main() { - use sycamore_router::StaticRouter; - - let out_dir = std::env::args().nth(1).unwrap(); - - println!("out_dir {}", out_dir); - - let template = std::fs::read_to_string(format!("{}/index.html", out_dir)).unwrap(); - - let html = sycamore::render_to_string(|cx| view! { cx, - Header - StaticRouter( - route=route.clone(), - view=views::switch - ) - }); - - let html = template.replace("\n", &html); - - let path = format!("{}/index.html", out_dir); - - println!("Writing html to file \"{}\"", path); - std::fs::write(path, html).unwrap(); -} diff --git a/examples/api/src/views/app.rs b/examples/api/src/views/app.rs deleted file mode 100644 index 9b04817..0000000 --- a/examples/api/src/views/app.rs +++ /dev/null @@ -1,78 +0,0 @@ -use gloo_timers::callback::Timeout; -use sycamore::prelude::*; -use tauri_sys::app; - -#[component] -pub fn App(cx: Scope) -> View { - let show_app = |_| { - sycamore::futures::spawn_local(async move { - let res = app::hide().await; - - log::debug!("app hide res {:?}", res); - - let timeout = Timeout::new(2_000, move || { - sycamore::futures::spawn_local(async move { - let res = app::show().await; - - log::debug!("app show res {:?}", res); - }); - }); - - timeout.forget(); - }); - }; - - let hide_app = |_| { - sycamore::futures::spawn_local(async move { - let res = app::hide().await; - - log::debug!("app hide res {:?}", res); - }); - }; - - let get_name = |_| { - sycamore::futures::spawn_local(async move { - let res = app::get_name().await; - - log::debug!("app name {:?}", res); - }); - }; - - let get_version = |_| { - sycamore::futures::spawn_local(async move { - let res = app::get_version().await; - - log::debug!("app version {:?}", res); - }); - }; - - let get_tauri_version = |_| { - sycamore::futures::spawn_local(async move { - let res = app::get_tauri_version().await; - - log::debug!("tauri version {:?}", res); - }); - }; - - view! { cx, - div { - button(class="btn",id="get_name",on:click=get_name) { - "Get App Name" - } - button(class="btn",id="get_version",on:click=get_version) { - "Get App Version" - } - button(class="btn",id="get_tauri_version",on:click=get_tauri_version) { - "Get Tauri Version" - } - } - div { - button(class="btn",id="show",title="Hides and shows the app after 2 seconds",on:click=show_app) { - "Show" - } - button(class="btn",id="hide",on:click=hide_app) { - "Hide" - } - } - } -} diff --git a/examples/api/src/views/clipboard.rs b/examples/api/src/views/clipboard.rs deleted file mode 100644 index 1a2093a..0000000 --- a/examples/api/src/views/clipboard.rs +++ /dev/null @@ -1,42 +0,0 @@ -use sycamore::prelude::*; -use tauri_sys::clipboard::{read_text, write_text}; - -#[component] -pub fn Clipboard(cx: Scope) -> View { - let text = create_signal(cx, "clipboard message".to_string()); - - let write = move |_| { - sycamore::futures::spawn_local_scoped(cx, async move { - write_text(&text.get()).await - // .then(() => { - // onMessage('Wrote to the clipboard') - // }) - // .catch(onMessage) - }); - }; - - let read = |_| { - sycamore::futures::spawn_local(async move { - let text = read_text().await; - - log::info!("Read text from clipboard {:?}", text); - // readText() - // .then((contents) => { - // onMessage(`Clipboard contents: ${contents}`) - // }) - // .catch(onMessage) - }); - }; - - view! { cx, - div(class="flex gap-1") { - input(class="grow input",placeholder="Text to write to the clipboard",bind:value=text) - button(class="btn",type="button",on:click=write) { - "Write" - } - button(class="btn",type="button",on:click=read) { - "Read" - } - } - } -} diff --git a/examples/api/src/views/communication.rs b/examples/api/src/views/communication.rs deleted file mode 100644 index 5c0ed4d..0000000 --- a/examples/api/src/views/communication.rs +++ /dev/null @@ -1,90 +0,0 @@ -use serde::{Deserialize, Serialize}; -use sycamore::prelude::*; -use tauri_sys::event::{emit, listen}; -use tauri_sys::tauri::invoke; -use shared::RequestBody; - -#[component] -pub fn Communication<'a, G: Html>(cx: Scope<'a>) -> View { - let unlisten = create_signal::>>(cx, None); - - // on_mount(cx, move || { - - // sycamore::futures::spawn_local_scoped(cx, async move { - // let unlisten_raw = listen::("rust-event", &|reply| log::debug!("got reply {:?}", reply)).await; - - // unlisten.set(Some(Box::new(&unlisten_raw))); - // }); - // }); - - // on_cleanup(cx, || { - // if let Some(unlisten) = unlisten .take().as_deref() { - // (unlisten)() - // } - // }); - - let log = |_| { - #[derive(Serialize)] - struct Payload<'a> { - event: &'a str, - payload: &'a str, - } - - sycamore::futures::spawn_local(async move { - let res = invoke::<_, ()>( - "log_operation", - &Payload { - event: "tauri-click", - payload: "this payload is optional because we used Option in Rust", - }, - ) - .await; - - log::debug!("Emitted event, response {:?}", res); - }); - }; - - let perform_request = |_| { - sycamore::futures::spawn_local(async move { - #[derive(Serialize)] - struct Payload<'a> { - endpoint: &'a str, - body: RequestBody<'a> - } - - let res = invoke::<_, String>( - "perform_request", - &Payload { - endpoint: "dummy endpoint arg", - body: RequestBody { - id: 5, - name: "test", - }, - }, - ) - .await; - - log::debug!("Got reply {:?}", res); - }); - }; - - let emit_event = |_| { - sycamore::futures::spawn_local(async move { - emit("js-event", &"this is the payload string").await; - }); - }; - - view! { cx, - div { - button(class="btn",id="log",on:click=log) { - "Call Log API" - } - button(class="btn",mid="request",on:click=perform_request) { - "Call Request (async) API" - } - button(class="btn",id="event",on:click=emit_event) { - "Send event to Rust" - } - } - } -} diff --git a/examples/api/src/views/mod.rs b/examples/api/src/views/mod.rs deleted file mode 100644 index 88f6dca..0000000 --- a/examples/api/src/views/mod.rs +++ /dev/null @@ -1,29 +0,0 @@ -mod app; -mod clipboard; -mod communication; -mod welcome; - -use sycamore::view::View; -use sycamore_router::Route; -use sycamore::prelude::*; - -#[derive(Debug, Clone, Route)] -pub enum Page { - #[to("/app")] - App, - #[to("/clipboard")] - Clipboard, - #[to("/communication")] - Communication, - #[not_found] - NotFound -} - -pub fn switch(cx: Scope, route: &ReadSignal) -> View { - match route.get().as_ref() { - Page::App => app::App(cx), - Page::Clipboard => clipboard::Clipboard(cx), - Page::Communication => communication::Communication(cx), - Page::NotFound => welcome::Welcome(cx) - } -} \ No newline at end of file diff --git a/examples/api/src/views/welcome.rs b/examples/api/src/views/welcome.rs deleted file mode 100644 index 1fffd14..0000000 --- a/examples/api/src/views/welcome.rs +++ /dev/null @@ -1,10 +0,0 @@ -use sycamore::prelude::*; - -#[component] -pub fn Welcome(cx: Scope) -> View { - view! { cx, - h1 { - "Welcome" - } - } -} \ No newline at end of file diff --git a/examples/api/style.css b/examples/api/style.css deleted file mode 100644 index a3fbd74..0000000 --- a/examples/api/style.css +++ /dev/null @@ -1,120 +0,0 @@ -.logo.yew:hover { - filter: drop-shadow(0 0 2em #20a88a); -} -.logo.sycamore { - color: #0000; - font-size: 3rem; - line-height: 1; - font-weight: 800; - -webkit-background-clip: text; - background-clip: text; - background-image: linear-gradient(to right,#fdba74, #f87171); - font-family: Inter,system-ui,sans-serif; -} -.logo.sycamore:hover { - filter: drop-shadow(0 0 2em #f87171); -} - -:root { - font-family: Inter, Avenir, Helvetica, Arial, sans-serif; - font-size: 16px; - line-height: 24px; - font-weight: 400; - - color: #0f0f0f; - background-color: #f6f6f6; - - font-synthesis: none; - text-rendering: optimizeLegibility; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - -webkit-text-size-adjust: 100%; -} - -.container { - margin: 0; - padding-top: 10vh; - display: flex; - flex-direction: column; - justify-content: center; - text-align: center; -} - -.logo { - height: 6em; - padding: 1.5em; - will-change: filter; - transition: 0.75s; -} - -.logo.tauri:hover { - filter: drop-shadow(0 0 2em #24c8db); -} - -.row { - display: flex; - justify-content: center; - align-items: center; -} - -a { - font-weight: 500; - color: #646cff; - text-decoration: inherit; -} - -a:hover { - color: #535bf2; -} - -h1 { - text-align: center; -} - -input, -button { - border-radius: 8px; - border: 1px solid transparent; - padding: 0.6em 1.2em; - font-size: 1em; - font-weight: 500; - font-family: inherit; - color: #0f0f0f; - background-color: #ffffff; - transition: border-color 0.25s; - box-shadow: 0 2px 2px rgba(0, 0, 0, 0.2); -} - -button { - cursor: pointer; -} - -button:hover { - border-color: #396cd8; -} - -input, -button { - outline: none; -} - -#greet-input { - margin-right: 5px; -} - -@media (prefers-color-scheme: dark) { - :root { - color: #f6f6f6; - background-color: #2f2f2f; - } - - a:hover { - color: #24c8db; - } - - input, - button { - color: #ffffff; - background-color: #0f0f0f98; - } -} diff --git a/examples/test/.gitignore b/examples/test/.gitignore new file mode 100644 index 0000000..1de5659 --- /dev/null +++ b/examples/test/.gitignore @@ -0,0 +1 @@ +target \ No newline at end of file diff --git a/examples/test/Cargo.lock b/examples/test/Cargo.lock new file mode 100644 index 0000000..88aadaf --- /dev/null +++ b/examples/test/Cargo.lock @@ -0,0 +1,3894 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "adler32" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" + +[[package]] +name = "ahash" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" +dependencies = [ + "getrandom 0.2.8", + "once_cell", + "version_check", +] + +[[package]] +name = "aho-corasick" +version = "0.7.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4f55bd91a0978cbfd91c457a164bab8b4001c833b7f323132c0a4e1922dd44e" +dependencies = [ + "memchr", +] + +[[package]] +name = "alloc-no-stdlib" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" + +[[package]] +name = "alloc-stdlib" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" +dependencies = [ + "alloc-no-stdlib", +] + +[[package]] +name = "anyhow" +version = "1.0.66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "216261ddc8289130e551ddcd5ce8a064710c0d064a4d2895c67151c92b5443f6" + +[[package]] +name = "atk" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c3d816ce6f0e2909a96830d6911c2aff044370b1ef92d7f267b43bae5addedd" +dependencies = [ + "atk-sys", + "bitflags", + "glib", + "libc", +] + +[[package]] +name = "atk-sys" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58aeb089fb698e06db8089971c7ee317ab9644bade33383f63631437b03aafb6" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps 6.0.3", +] + +[[package]] +name = "attohttpc" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fcf00bc6d5abb29b5f97e3c61a90b6d3caa12f3faf897d4a3e3607c050a35a7" +dependencies = [ + "flate2", + "http", + "log", + "native-tls", + "serde", + "serde_json", + "serde_urlencoded", + "url", +] + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "block" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" + +[[package]] +name = "block-buffer" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cce20737498f97b993470a6e536b8523f0af7892a4f928cceb1ac5e52ebe7e" +dependencies = [ + "generic-array", +] + +[[package]] +name = "brotli" +version = "3.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1a0b1dbcc8ae29329621f8d4f0d835787c1c38bb1401979b49d13b0b305ff68" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor", +] + +[[package]] +name = "brotli-decompressor" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ad2d4653bf5ca36ae797b1f4bb4dbddb60ce49ca4aed8a2ce4829f60425b80" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", +] + +[[package]] +name = "bstr" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3569f383e8f1598449f1a423e72e99569137b47740b1da11ef19af3d5c3223" +dependencies = [ + "memchr", +] + +[[package]] +name = "bumpalo" +version = "3.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "572f695136211188308f16ad2ca5c851a712c464060ae6974944458eb83880ba" + +[[package]] +name = "bytemuck" +version = "1.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aec14f5d4e6e3f927cd0c81f72e5710d95ee9019fbeb4b3021193867491bfd8" + +[[package]] +name = "byteorder" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" + +[[package]] +name = "bytes" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec8a7b6a70fde80372154c65702f00a0f56f3e1c36abbc6c440484be248856db" + +[[package]] +name = "cairo-rs" +version = "0.15.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c76ee391b03d35510d9fa917357c7f1855bd9a6659c95a1b392e33f49b3369bc" +dependencies = [ + "bitflags", + "cairo-sys-rs", + "glib", + "libc", + "thiserror", +] + +[[package]] +name = "cairo-sys-rs" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c55d429bef56ac9172d25fecb85dc8068307d17acd74b377866b7a1ef25d3c8" +dependencies = [ + "glib-sys", + "libc", + "system-deps 6.0.3", +] + +[[package]] +name = "cargo_toml" +version = "0.11.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e72c3ff59e3b7d24630206bb63a73af65da4ed5df1f76ee84dfafb9fee2ba60e" +dependencies = [ + "serde", + "serde_derive", + "toml", +] + +[[package]] +name = "cc" +version = "1.0.74" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "581f5dba903aac52ea3feb5ec4810848460ee833876f1f9b0fdeab1f19091574" + +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + +[[package]] +name = "cfb" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74f89d248799e3f15f91b70917f65381062a01bb8e222700ea0e5a7ff9785f9c" +dependencies = [ + "byteorder", + "uuid 0.8.2", +] + +[[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.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0357a6402b295ca3a86bc148e84df46c02e41f41fef186bda662557ef6328aa" +dependencies = [ + "smallvec", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "cocoa" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f425db7937052c684daec3bd6375c8abe2d146dca4b8b143d6db777c39138f3a" +dependencies = [ + "bitflags", + "block", + "cocoa-foundation", + "core-foundation", + "core-graphics", + "foreign-types", + "libc", + "objc", +] + +[[package]] +name = "cocoa-foundation" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ade49b65d560ca58c403a479bb396592b155c0185eada742ee323d1d68d6318" +dependencies = [ + "bitflags", + "block", + "core-foundation", + "core-graphics-types", + "foreign-types", + "libc", + "objc", +] + +[[package]] +name = "color_quant" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" + +[[package]] +name = "combine" +version = "4.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4" +dependencies = [ + "bytes", + "memchr", +] + +[[package]] +name = "console_error_panic_hook" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" +dependencies = [ + "cfg-if", + "wasm-bindgen", +] + +[[package]] +name = "convert_case" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" + +[[package]] +name = "core-foundation" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" + +[[package]] +name = "core-graphics" +version = "0.22.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2581bbab3b8ffc6fcbd550bf46c355135d16e9ff2a6ea032ad6b9bf1d7efe4fb" +dependencies = [ + "bitflags", + "core-foundation", + "core-graphics-types", + "foreign-types", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a68b68b3446082644c91ac778bf50cd4104bfb002b5a6a7c44cca5a2c70788b" +dependencies = [ + "bitflags", + "core-foundation", + "foreign-types", + "libc", +] + +[[package]] +name = "cpufeatures" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d997bd5e24a5928dd43e46dc529867e207907fe0b239c3477d924f7f2ca320" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521" +dependencies = [ + "cfg-if", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edbafec5fa1f196ca66527c1b12c2ec4745ca14b50f1ad8f9f6f720b55d11fac" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "cssparser" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "754b69d351cdc2d8ee09ae203db831e005560fc6030da058f86ad60c92a9cb0a" +dependencies = [ + "cssparser-macros", + "dtoa-short", + "itoa 0.4.8", + "matches", + "phf 0.8.0", + "proc-macro2", + "quote", + "smallvec", + "syn", +] + +[[package]] +name = "cssparser-macros" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfae75de57f2b2e85e8768c3ea840fd159c8f33e2b6522c7835b7abac81be16e" +dependencies = [ + "quote", + "syn", +] + +[[package]] +name = "ctor" +version = "0.1.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d2301688392eb071b0bf1a37be05c469d3cc4dbbd95df672fe28ab021e6a096" +dependencies = [ + "quote", + "syn", +] + +[[package]] +name = "cty" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b365fabc795046672053e29c954733ec3b05e4be654ab130fe8f1f94d7051f35" + +[[package]] +name = "darling" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn", +] + +[[package]] +name = "darling_macro" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" +dependencies = [ + "darling_core", + "quote", + "syn", +] + +[[package]] +name = "dbus" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f8bcdd56d2e5c4ed26a529c5a9029f5db8290d433497506f958eae3be148eb6" +dependencies = [ + "libc", + "libdbus-sys", + "winapi", +] + +[[package]] +name = "deflate" +version = "0.7.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "707b6a7b384888a70c8d2e8650b3e60170dfc6a67bb4aa67b6dfca57af4bedb4" +dependencies = [ + "adler32", + "byteorder", +] + +[[package]] +name = "derive_more" +version = "0.99.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "rustc_version 0.4.0", + "syn", +] + +[[package]] +name = "digest" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adfbc57365a37acbd2ebf2b64d7e69bb766e2fea813521ed536f5d0520dcf86c" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "dirs-next" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" +dependencies = [ + "cfg-if", + "dirs-sys-next", +] + +[[package]] +name = "dirs-sys-next" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" +dependencies = [ + "libc", + "redox_users", + "winapi", +] + +[[package]] +name = "dispatch" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" + +[[package]] +name = "dtoa" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56899898ce76aaf4a0f24d914c97ea6ed976d42fec6ad33fcbb0a1103e07b2b0" + +[[package]] +name = "dtoa-short" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bde03329ae10e79ede66c9ce4dc930aa8599043b0743008548680f25b91502d6" +dependencies = [ + "dtoa", +] + +[[package]] +name = "embed_plist" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ef6b89e5b37196644d8796de5268852ff179b44e96276cf4290264843743bb7" + +[[package]] +name = "encoding_rs" +version = "0.8.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9852635589dc9f9ea1b6fe9f05b50ef208c85c834a562f0c6abb1c475736ec2b" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "fastrand" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499" +dependencies = [ + "instant", +] + +[[package]] +name = "field-offset" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e1c54951450cbd39f3dbcf1005ac413b49487dabf18a720ad2383eccfeffb92" +dependencies = [ + "memoffset", + "rustc_version 0.3.3", +] + +[[package]] +name = "filetime" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b9663d381d07ae25dc88dbdf27df458faa83a9b25336bcac83d5e452b5fc9d3" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "windows-sys 0.42.0", +] + +[[package]] +name = "flate2" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f82b0f4c27ad9f8bfd1f3208d882da2b09c301bc1c828fd3a00d0216d2fbbff6" +dependencies = [ + "crc32fast", + "miniz_oxide 0.5.4", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "form_urlencoded" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futf" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df420e2e84819663797d1ec6544b13c5be84629e7bb00dc960d6917db2987843" +dependencies = [ + "mac", + "new_debug_unreachable", +] + +[[package]] +name = "futures" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38390104763dc37a5145a53c29c63c1290b5d316d6086ec32c293f6736051bb0" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52ba265a92256105f45b719605a571ffe2d1f0fea3807304b522c1d778f79eed" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04909a7a7e4633ae6c4a9ab280aeb86da1236243a77b694a49eacd659a4bd3ac" + +[[package]] +name = "futures-executor" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7acc85df6714c176ab5edf386123fafe217be88c0840ec11f199441134a074e2" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00f5fb52a06bdcadeb54e8d3671f8888a39697dcb0b81b23b55174030427f4eb" + +[[package]] +name = "futures-macro" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdfb8ce053d86b91919aad980c220b1fb8401a9394410e1c289ed7e66b61835d" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-sink" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39c15cf1a4aa79df40f1bb462fb39676d0ad9e366c2a33b590d7c66f4f81fcf9" + +[[package]] +name = "futures-task" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ffb393ac5d9a6eaa9d3fdf37ae2776656b706e200c8e16b1bdb227f5198e6ea" + +[[package]] +name = "futures-util" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "197676987abd2f9cadff84926f410af1c183608d36641465df73ae8211dc65d6" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + +[[package]] +name = "gdk" +version = "0.15.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6e05c1f572ab0e1f15be94217f0dc29088c248b14f792a5ff0af0d84bcda9e8" +dependencies = [ + "bitflags", + "cairo-rs", + "gdk-pixbuf", + "gdk-sys", + "gio", + "glib", + "libc", + "pango", +] + +[[package]] +name = "gdk-pixbuf" +version = "0.15.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad38dd9cc8b099cceecdf41375bb6d481b1b5a7cd5cd603e10a69a9383f8619a" +dependencies = [ + "bitflags", + "gdk-pixbuf-sys", + "gio", + "glib", + "libc", +] + +[[package]] +name = "gdk-pixbuf-sys" +version = "0.15.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "140b2f5378256527150350a8346dbdb08fadc13453a7a2d73aecd5fab3c402a7" +dependencies = [ + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "system-deps 6.0.3", +] + +[[package]] +name = "gdk-sys" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32e7a08c1e8f06f4177fb7e51a777b8c1689f743a7bc11ea91d44d2226073a88" +dependencies = [ + "cairo-sys-rs", + "gdk-pixbuf-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "pango-sys", + "pkg-config", + "system-deps 6.0.3", +] + +[[package]] +name = "gdkx11-sys" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4b7f8c7a84b407aa9b143877e267e848ff34106578b64d1e0a24bf550716178" +dependencies = [ + "gdk-sys", + "glib-sys", + "libc", + "system-deps 6.0.3", + "x11", +] + +[[package]] +name = "generator" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc184cace1cea8335047a471cc1da80f18acf8a76f3bab2028d499e328948ec7" +dependencies = [ + "cc", + "libc", + "log", + "rustversion", + "windows 0.32.0", +] + +[[package]] +name = "generic-array" +version = "0.14.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", +] + +[[package]] +name = "gio" +version = "0.15.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68fdbc90312d462781a395f7a16d96a2b379bb6ef8cd6310a2df272771c4283b" +dependencies = [ + "bitflags", + "futures-channel", + "futures-core", + "futures-io", + "gio-sys", + "glib", + "libc", + "once_cell", + "thiserror", +] + +[[package]] +name = "gio-sys" +version = "0.15.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32157a475271e2c4a023382e9cab31c4584ee30a97da41d3c4e9fdd605abcf8d" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps 6.0.3", + "winapi", +] + +[[package]] +name = "glib" +version = "0.15.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edb0306fbad0ab5428b0ca674a23893db909a98582969c9b537be4ced78c505d" +dependencies = [ + "bitflags", + "futures-channel", + "futures-core", + "futures-executor", + "futures-task", + "glib-macros", + "glib-sys", + "gobject-sys", + "libc", + "once_cell", + "smallvec", + "thiserror", +] + +[[package]] +name = "glib-macros" +version = "0.15.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25a68131a662b04931e71891fb14aaf65ee4b44d08e8abc10f49e77418c86c64" +dependencies = [ + "anyhow", + "heck 0.4.0", + "proc-macro-crate", + "proc-macro-error", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "glib-sys" +version = "0.15.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef4b192f8e65e9cf76cbf4ea71fa8e3be4a0e18ffe3d68b8da6836974cc5bad4" +dependencies = [ + "libc", + "system-deps 6.0.3", +] + +[[package]] +name = "glob" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" + +[[package]] +name = "globset" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a1e17342619edbc21a964c2afbeb6c820c6a2560032872f397bb97ea127bd0a" +dependencies = [ + "aho-corasick", + "bstr", + "fnv", + "log", + "regex", +] + +[[package]] +name = "gobject-sys" +version = "0.15.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d57ce44246becd17153bd035ab4d32cfee096a657fc01f2231c9278378d1e0a" +dependencies = [ + "glib-sys", + "libc", + "system-deps 6.0.3", +] + +[[package]] +name = "gtk" +version = "0.15.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92e3004a2d5d6d8b5057d2b57b3712c9529b62e82c77f25c1fecde1fd5c23bd0" +dependencies = [ + "atk", + "bitflags", + "cairo-rs", + "field-offset", + "futures-channel", + "gdk", + "gdk-pixbuf", + "gio", + "glib", + "gtk-sys", + "gtk3-macros", + "libc", + "once_cell", + "pango", + "pkg-config", +] + +[[package]] +name = "gtk-sys" +version = "0.15.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5bc2f0587cba247f60246a0ca11fe25fb733eabc3de12d1965fc07efab87c84" +dependencies = [ + "atk-sys", + "cairo-sys-rs", + "gdk-pixbuf-sys", + "gdk-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "pango-sys", + "system-deps 6.0.3", +] + +[[package]] +name = "gtk3-macros" +version = "0.15.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24f518afe90c23fba585b2d7697856f9e6a7bbc62f65588035e66f6afb01a2e9" +dependencies = [ + "anyhow", + "proc-macro-crate", + "proc-macro-error", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[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.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9" + +[[package]] +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + +[[package]] +name = "html-escape" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15315cfa9503e9aa85a477138eff76a1b203a430703548052c330b69d8d8c205" +dependencies = [ + "utf8-width", +] + +[[package]] +name = "html5ever" +version = "0.25.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5c13fb08e5d4dfc151ee5e88bae63f7773d61852f3bdc73c9f4b9e1bde03148" +dependencies = [ + "log", + "mac", + "markup5ever", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "http" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399" +dependencies = [ + "bytes", + "fnv", + "itoa 1.0.4", +] + +[[package]] +name = "http-range" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21dec9db110f5f872ed9699c3ecf50cf16f423502706ba5c72462e28d3157573" + +[[package]] +name = "ico" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a4b3331534254a9b64095ae60d3dc2a8225a7a70229cd5888be127cdc1f6804" +dependencies = [ + "byteorder", + "png 0.11.0", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "ignore" +version = "0.4.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "713f1b139373f96a2e0ce3ac931cd01ee973c3c5dd7c40c0c2efe96ad2b6751d" +dependencies = [ + "crossbeam-utils", + "globset", + "lazy_static", + "log", + "memchr", + "regex", + "same-file", + "thread_local", + "walkdir", + "winapi-util", +] + +[[package]] +name = "image" +version = "0.24.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd8e4fb07cf672b1642304e731ef8a6a4c7891d67bb4fd4f5ce58cd6ed86803c" +dependencies = [ + "bytemuck", + "byteorder", + "color_quant", + "num-rational", + "num-traits", +] + +[[package]] +name = "indexmap" +version = "1.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e" +dependencies = [ + "autocfg", + "hashbrown", +] + +[[package]] +name = "infer" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20b2b533137b9cad970793453d4f921c2e91312a6d88b1085c07bc15fc51bb3b" +dependencies = [ + "cfb", +] + +[[package]] +name = "inflate" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5f9f47468e9a76a6452271efadc88fe865a82be91fe75e6c0c57b87ccea59d4" +dependencies = [ + "adler32", +] + +[[package]] +name = "instant" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "itoa" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" + +[[package]] +name = "itoa" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4217ad341ebadf8d8e724e264f13e593e0648f5b3e94b3896a5df283be015ecc" + +[[package]] +name = "javascriptcore-rs" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf053e7843f2812ff03ef5afe34bb9c06ffee120385caad4f6b9967fcd37d41c" +dependencies = [ + "bitflags", + "glib", + "javascriptcore-rs-sys", +] + +[[package]] +name = "javascriptcore-rs-sys" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "905fbb87419c5cde6e3269537e4ea7d46431f3008c5d057e915ef3f115e7793c" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps 5.0.0", +] + +[[package]] +name = "jni" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6df18c2e3db7e453d3c6ac5b3e9d5182664d28788126d39b91f2d1e22b017ec" +dependencies = [ + "cesu8", + "combine", + "jni-sys", + "log", + "thiserror", + "walkdir", +] + +[[package]] +name = "jni-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" + +[[package]] +name = "js-sys" +version = "0.3.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49409df3e3bf0856b916e2ceaca09ee28e6871cf7d9ce97a692cacfdb2a25a47" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "json-patch" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f995a3c8f2bc3dd52a18a583e90f9ec109c047fa1603a853e46bcda14d2e279d" +dependencies = [ + "serde", + "serde_json", + "treediff", +] + +[[package]] +name = "kuchiki" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ea8e9c6e031377cff82ee3001dc8026cdf431ed4e2e6b51f98ab8c73484a358" +dependencies = [ + "cssparser", + "html5ever", + "matches", + "selectors", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "libc" +version = "0.2.137" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7fcc620a3bff7cdd7a365be3376c97191aeaccc2a603e600951e452615bf89" + +[[package]] +name = "libdbus-sys" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c185b5b7ad900923ef3a8ff594083d4d9b5aea80bb4f32b8342363138c0d456b" +dependencies = [ + "pkg-config", +] + +[[package]] +name = "line-wrap" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f30344350a2a51da54c1d53be93fade8a237e545dbcc4bdbe635413f2117cab9" +dependencies = [ + "safemem", +] + +[[package]] +name = "lock_api" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "loom" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff50ecb28bb86013e935fb6683ab1f6d3a20016f123c76fd4c27470076ac30f5" +dependencies = [ + "cfg-if", + "generator", + "scoped-tls", + "serde", + "serde_json", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "mac" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" + +[[package]] +name = "mac-notification-sys" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e72d50edb17756489e79d52eb146927bec8eba9dd48faadf9ef08bca3791ad5" +dependencies = [ + "cc", + "dirs-next", + "objc-foundation", + "objc_id", + "time", +] + +[[package]] +name = "malloc_buf" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" +dependencies = [ + "libc", +] + +[[package]] +name = "markup5ever" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a24f40fb03852d1cdd84330cddcaf98e9ec08a7b7768e952fad3b4cf048ec8fd" +dependencies = [ + "log", + "phf 0.8.0", + "phf_codegen", + "string_cache", + "string_cache_codegen", + "tendril", +] + +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata", +] + +[[package]] +name = "matches" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" + +[[package]] +name = "memchr" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" + +[[package]] +name = "memoffset" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" +dependencies = [ + "autocfg", +] + +[[package]] +name = "miniz_oxide" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96590ba8f175222643a85693f33d26e9c8a015f599c216509b1a6894af675d34" +dependencies = [ + "adler", +] + +[[package]] +name = "miniz_oxide" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa" +dependencies = [ + "adler", +] + +[[package]] +name = "native-tls" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" +dependencies = [ + "lazy_static", + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "ndk" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2032c77e030ddee34a6787a64166008da93f6a352b629261d0fee232b8742dd4" +dependencies = [ + "bitflags", + "jni-sys", + "ndk-sys", + "num_enum", + "thiserror", +] + +[[package]] +name = "ndk-context" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" + +[[package]] +name = "ndk-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e5a6ae77c8ee183dcbbba6150e2e6b9f3f4196a7666c02a715a95692ec1fa97" +dependencies = [ + "jni-sys", +] + +[[package]] +name = "new_debug_unreachable" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54" + +[[package]] +name = "nodrop" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" + +[[package]] +name = "notify-rust" +version = "4.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "368e89ea58df747ce88be669ae44e79783c1d30bfd540ad0fc520b3f41f0b3b0" +dependencies = [ + "dbus", + "mac-notification-sys", + "tauri-winrt-notification", +] + +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + +[[package]] +name = "num-integer" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "num_enum" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf5395665662ef45796a4ff5486c5d41d29e0c09640af4c5f17fd94ee2c119c9" +dependencies = [ + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0498641e53dd6ac1a4f22547548caa6864cc4933784319cd1775271c5a46ce" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "num_threads" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44" +dependencies = [ + "libc", +] + +[[package]] +name = "objc" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" +dependencies = [ + "malloc_buf", + "objc_exception", +] + +[[package]] +name = "objc-foundation" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9" +dependencies = [ + "block", + "objc", + "objc_id", +] + +[[package]] +name = "objc_exception" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad970fb455818ad6cba4c122ad012fae53ae8b4795f86378bce65e4f6bab2ca4" +dependencies = [ + "cc", +] + +[[package]] +name = "objc_id" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b" +dependencies = [ + "objc", +] + +[[package]] +name = "once_cell" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86f0b0d4bf799edbc74508c1e8bf170ff5f41238e5f8225603ca7caaae2b7860" + +[[package]] +name = "open" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4a3100141f1733ea40b53381b0ae3117330735ef22309a190ac57b9576ea716" +dependencies = [ + "pathdiff", + "windows-sys 0.36.1", +] + +[[package]] +name = "openssl" +version = "0.10.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12fc0523e3bd51a692c8850d075d74dc062ccf251c0110668cbd921917118a13" +dependencies = [ + "bitflags", + "cfg-if", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b501e44f11665960c7e7fcf062c7d96a14ade4aa98116c004b2e37b5be7d736c" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "openssl-sys" +version = "0.9.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b03b84c3b2d099b81f0953422b4d4ad58761589d0229b5506356afca05a3670a" +dependencies = [ + "autocfg", + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "os_info" +version = "3.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4750134fb6a5d49afc80777394ad5d95b04bc12068c6abb92fae8f43817270f" +dependencies = [ + "log", + "serde", + "winapi", +] + +[[package]] +name = "os_pipe" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dceb7e43f59c35ee1548045b2c72945a5a3bb6ce6d6f07cdc13dc8f6bc4930a" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "pango" +version = "0.15.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22e4045548659aee5313bde6c582b0d83a627b7904dd20dc2d9ef0895d414e4f" +dependencies = [ + "bitflags", + "glib", + "libc", + "once_cell", + "pango-sys", +] + +[[package]] +name = "pango-sys" +version = "0.15.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2a00081cde4661982ed91d80ef437c20eacaf6aa1a5962c0279ae194662c3aa" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps 6.0.3", +] + +[[package]] +name = "parking_lot" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dc9e0dc2adc1c69d09143aff38d3d30c5c3f0df0dad82e6d25547af174ebec0" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-sys 0.42.0", +] + +[[package]] +name = "paste" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1de2e551fb905ac83f73f7aedf2f0cb4a0da7e35efa24a202a936269f1f18e1" + +[[package]] +name = "pathdiff" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" + +[[package]] +name = "percent-encoding" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" + +[[package]] +name = "pest" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbc7bc69c062e492337d74d59b120c274fd3d261b6bf6d3207d499b4b379c41a" +dependencies = [ + "thiserror", + "ucd-trie", +] + +[[package]] +name = "phf" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3dfb61232e34fcb633f43d12c58f83c1df82962dcdfa565a4e866ffc17dafe12" +dependencies = [ + "phf_macros 0.8.0", + "phf_shared 0.8.0", + "proc-macro-hack", +] + +[[package]] +name = "phf" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259" +dependencies = [ + "phf_macros 0.10.0", + "phf_shared 0.10.0", + "proc-macro-hack", +] + +[[package]] +name = "phf_codegen" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbffee61585b0411840d3ece935cce9cb6321f01c45477d30066498cd5e1a815" +dependencies = [ + "phf_generator 0.8.0", + "phf_shared 0.8.0", +] + +[[package]] +name = "phf_generator" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17367f0cc86f2d25802b2c26ee58a7b23faeccf78a396094c13dced0d0182526" +dependencies = [ + "phf_shared 0.8.0", + "rand 0.7.3", +] + +[[package]] +name = "phf_generator" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6" +dependencies = [ + "phf_shared 0.10.0", + "rand 0.8.5", +] + +[[package]] +name = "phf_macros" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f6fde18ff429ffc8fe78e2bf7f8b7a5a5a6e2a8b58bc5a9ac69198bbda9189c" +dependencies = [ + "phf_generator 0.8.0", + "phf_shared 0.8.0", + "proc-macro-hack", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "phf_macros" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58fdf3184dd560f160dd73922bea2d5cd6e8f064bf4b13110abd81b03697b4e0" +dependencies = [ + "phf_generator 0.10.0", + "phf_shared 0.10.0", + "proc-macro-hack", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "phf_shared" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c00cf8b9eafe68dde5e9eaa2cef8ee84a9336a47d566ec55ca16589633b65af7" +dependencies = [ + "siphasher", +] + +[[package]] +name = "phf_shared" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" +dependencies = [ + "siphasher", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkg-config" +version = "0.3.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" + +[[package]] +name = "plist" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd39bc6cdc9355ad1dc5eeedefee696bb35c34caf21768741e81826c0bbd7225" +dependencies = [ + "base64", + "indexmap", + "line-wrap", + "serde", + "time", + "xml-rs", +] + +[[package]] +name = "png" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0b0cabbbd20c2d7f06dbf015e06aad59b6ca3d9ed14848783e98af9aaf19925" +dependencies = [ + "bitflags", + "deflate", + "inflate", + "num-iter", +] + +[[package]] +name = "png" +version = "0.17.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d708eaf860a19b19ce538740d2b4bdeeb8337fa53f7738455e706623ad5c638" +dependencies = [ + "bitflags", + "crc32fast", + "flate2", + "miniz_oxide 0.6.2", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" + +[[package]] +name = "precomputed-hash" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" + +[[package]] +name = "proc-macro-crate" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eda0fc3b0fb7c975631757e14d9049da17374063edb6ebbcbc54d880d4fe94e9" +dependencies = [ + "once_cell", + "thiserror", + "toml", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro-hack" +version = "0.5.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" + +[[package]] +name = "proc-macro2" +version = "1.0.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ea3d908b0e36316caf9e9e2c4625cdde190a7e6f440d794667ed17a1855e725" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quick-xml" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11bafc859c6815fbaffbbbf4229ecb767ac913fecb27f9ad4343662e9ef099ea" +dependencies = [ + "memchr", +] + +[[package]] +name = "quote" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.16", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc", + "rand_pcg", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.8", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "rand_pcg" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "raw-window-handle" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed7e3d950b66e19e0c372f3fa3fbbcf85b1746b571f74e0c2af6042a5c93420a" +dependencies = [ + "cty", +] + +[[package]] +name = "redox_syscall" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +dependencies = [ + "bitflags", +] + +[[package]] +name = "redox_users" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" +dependencies = [ + "getrandom 0.2.8", + "redox_syscall", + "thiserror", +] + +[[package]] +name = "regex" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.6.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244" + +[[package]] +name = "remove_dir_all" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" +dependencies = [ + "winapi", +] + +[[package]] +name = "rfd" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0149778bd99b6959285b0933288206090c50e2327f47a9c463bfdbf45c8823ea" +dependencies = [ + "block", + "dispatch", + "glib-sys", + "gobject-sys", + "gtk-sys", + "js-sys", + "lazy_static", + "log", + "objc", + "objc-foundation", + "objc_id", + "raw-window-handle", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "windows 0.37.0", +] + +[[package]] +name = "rustc_version" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" +dependencies = [ + "semver 0.11.0", +] + +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver 1.0.14", +] + +[[package]] +name = "rustversion" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97477e48b4cf8603ad5f7aaf897467cf42ab4218a38ef76fb14c2d6773a6d6a8" + +[[package]] +name = "ryu" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09" + +[[package]] +name = "safemem" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "schannel" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88d6731146462ea25d9244b2ed5fd1d716d25c52e4d54aa4fb0f3c4e9854dbe2" +dependencies = [ + "lazy_static", + "windows-sys 0.36.1", +] + +[[package]] +name = "scoped-tls" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" + +[[package]] +name = "scopeguard" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" + +[[package]] +name = "security-framework" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bc1bb97804af6631813c55739f771071e0f2ed33ee20b68c86ec505d906356c" +dependencies = [ + "bitflags", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0160a13a177a45bfb43ce71c01580998474f556ad854dcbca936dd2841a5c556" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "selectors" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df320f1889ac4ba6bc0cdc9c9af7af4bd64bb927bccdf32d81140dc1f9be12fe" +dependencies = [ + "bitflags", + "cssparser", + "derive_more", + "fxhash", + "log", + "matches", + "phf 0.8.0", + "phf_codegen", + "precomputed-hash", + "servo_arc", + "smallvec", + "thin-slice", +] + +[[package]] +name = "semver" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e25dfac463d778e353db5be2449d1cce89bd6fd23c9f1ea21310ce6e5a1b29c4" +dependencies = [ + "serde", +] + +[[package]] +name = "semver-parser" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7" +dependencies = [ + "pest", +] + +[[package]] +name = "serde" +version = "1.0.147" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d193d69bae983fc11a79df82342761dfbf28a99fc8d203dca4c3c1b590948965" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde-wasm-bindgen" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3b4c031cd0d9014307d82b8abf653c0290fbdaeb4c02d00c63cf52f728628bf" +dependencies = [ + "js-sys", + "serde", + "wasm-bindgen", +] + +[[package]] +name = "serde_derive" +version = "1.0.147" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f1d362ca8fc9c3e3a7484440752472d68a6caa98f1ab81d99b5dfe517cec852" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce777b7b150d76b9cf60d28b55f5847135a003f7d7350c6be7a773508ce7d45" +dependencies = [ + "itoa 1.0.4", + "ryu", + "serde", +] + +[[package]] +name = "serde_repr" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fe39d9fbb0ebf5eb2c7cb7e2a47e4f462fad1379f1166b8ae49ad9eae89a7ca" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[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.4", + "ryu", + "serde", +] + +[[package]] +name = "serde_with" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "678b5a069e50bf00ecd22d0cd8ddf7c236f68581b03db652061ed5eb13a312ff" +dependencies = [ + "serde", + "serde_with_macros", +] + +[[package]] +name = "serde_with_macros" +version = "1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e182d6ec6f05393cc0e5ed1bf81ad6db3a8feedf8ee515ecdd369809bcce8082" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serialize-to-javascript" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9823f2d3b6a81d98228151fdeaf848206a7855a7a042bbf9bf870449a66cafb" +dependencies = [ + "serde", + "serde_json", + "serialize-to-javascript-impl", +] + +[[package]] +name = "serialize-to-javascript-impl" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74064874e9f6a15f04c1f3cb627902d0e6b410abbf36668afa873c61889f1763" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "servo_arc" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d98238b800e0d1576d8b6e3de32827c2d74bee68bb97748dcf5071fb53965432" +dependencies = [ + "nodrop", + "stable_deref_trait", +] + +[[package]] +name = "sha2" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sharded-slab" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shared_child" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0d94659ad3c2137fef23ae75b03d5241d633f8acded53d672decfa0e6e0caef" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "siphasher" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de" + +[[package]] +name = "slab" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef" +dependencies = [ + "autocfg", +] + +[[package]] +name = "slotmap" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1e08e261d0e8f5c43123b7adf3e4ca1690d655377ac93a03b2c9d3e98de1342" +dependencies = [ + "version_check", +] + +[[package]] +name = "smallvec" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" + +[[package]] +name = "soup2" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2b4d76501d8ba387cf0fefbe055c3e0a59891d09f0f995ae4e4b16f6b60f3c0" +dependencies = [ + "bitflags", + "gio", + "glib", + "libc", + "once_cell", + "soup2-sys", +] + +[[package]] +name = "soup2-sys" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "009ef427103fcb17f802871647a7fa6c60cbb654b4c4e4c0ac60a31c5f6dc9cf" +dependencies = [ + "bitflags", + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "system-deps 5.0.0", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "state" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbe866e1e51e8260c9eed836a042a5e7f6726bb2b411dffeaa712e19c388f23b" +dependencies = [ + "loom", +] + +[[package]] +name = "string_cache" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213494b7a2b503146286049378ce02b482200519accc31872ee8be91fa820a08" +dependencies = [ + "new_debug_unreachable", + "once_cell", + "parking_lot", + "phf_shared 0.10.0", + "precomputed-hash", + "serde", +] + +[[package]] +name = "string_cache_codegen" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bb30289b722be4ff74a408c3cc27edeaad656e06cb1fe8fa9231fa59c728988" +dependencies = [ + "phf_generator 0.10.0", + "phf_shared 0.10.0", + "proc-macro2", + "quote", +] + +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "strum" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7ac893c7d471c8a21f31cfe213ec4f6d9afeed25537c772e08ef3f005f8729e" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "339f799d8b549e3744c7ac7feb216383e4005d94bdb22561b3ab8f3b808ae9fb" +dependencies = [ + "heck 0.3.3", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "sycamore" +version = "0.8.2" +source = "git+https://github.com/sycamore-rs/sycamore?rev=abd556cbc02047042dad2ebd04405e455a9b11b2#abd556cbc02047042dad2ebd04405e455a9b11b2" +dependencies = [ + "ahash", + "futures", + "indexmap", + "js-sys", + "paste", + "sycamore-core", + "sycamore-futures", + "sycamore-macro", + "sycamore-reactive", + "sycamore-web", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "sycamore-core" +version = "0.8.2" +source = "git+https://github.com/sycamore-rs/sycamore?rev=abd556cbc02047042dad2ebd04405e455a9b11b2#abd556cbc02047042dad2ebd04405e455a9b11b2" +dependencies = [ + "ahash", + "sycamore-reactive", +] + +[[package]] +name = "sycamore-futures" +version = "0.8.0" +source = "git+https://github.com/sycamore-rs/sycamore?rev=abd556cbc02047042dad2ebd04405e455a9b11b2#abd556cbc02047042dad2ebd04405e455a9b11b2" +dependencies = [ + "futures", + "sycamore-reactive", + "tokio", + "wasm-bindgen-futures", +] + +[[package]] +name = "sycamore-macro" +version = "0.8.2" +source = "git+https://github.com/sycamore-rs/sycamore?rev=abd556cbc02047042dad2ebd04405e455a9b11b2#abd556cbc02047042dad2ebd04405e455a9b11b2" +dependencies = [ + "once_cell", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "sycamore-reactive" +version = "0.8.1" +source = "git+https://github.com/sycamore-rs/sycamore?rev=abd556cbc02047042dad2ebd04405e455a9b11b2#abd556cbc02047042dad2ebd04405e455a9b11b2" +dependencies = [ + "ahash", + "bumpalo", + "indexmap", + "slotmap", + "smallvec", +] + +[[package]] +name = "sycamore-web" +version = "0.8.2" +source = "git+https://github.com/sycamore-rs/sycamore?rev=abd556cbc02047042dad2ebd04405e455a9b11b2#abd556cbc02047042dad2ebd04405e455a9b11b2" +dependencies = [ + "html-escape", + "indexmap", + "js-sys", + "once_cell", + "sycamore-core", + "sycamore-reactive", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "syn" +version = "1.0.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a864042229133ada95abf3b54fdc62ef5ccabe9515b64717bcb9a1919e59445d" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "system-deps" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18db855554db7bd0e73e06cf7ba3df39f97812cb11d3f75e71c39bf45171797e" +dependencies = [ + "cfg-expr 0.9.1", + "heck 0.3.3", + "pkg-config", + "toml", + "version-compare 0.0.11", +] + +[[package]] +name = "system-deps" +version = "6.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2955b1fe31e1fa2fbd1976b71cc69a606d7d4da16f6de3333d0c92d51419aeff" +dependencies = [ + "cfg-expr 0.11.0", + "heck 0.4.0", + "pkg-config", + "toml", + "version-compare 0.1.0", +] + +[[package]] +name = "tao" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43336f5d1793543ba96e2a1e75f3a5c7dcd592743be06a0ab3a190f4fcb4b934" +dependencies = [ + "bitflags", + "cairo-rs", + "cc", + "cocoa", + "core-foundation", + "core-graphics", + "crossbeam-channel", + "dispatch", + "gdk", + "gdk-pixbuf", + "gdk-sys", + "gdkx11-sys", + "gio", + "glib", + "glib-sys", + "gtk", + "image", + "instant", + "jni", + "lazy_static", + "libc", + "log", + "ndk", + "ndk-context", + "ndk-sys", + "objc", + "once_cell", + "parking_lot", + "paste", + "png 0.17.7", + "raw-window-handle", + "scopeguard", + "serde", + "unicode-segmentation", + "uuid 1.2.1", + "windows 0.39.0", + "windows-implement", + "x11-dl", +] + +[[package]] +name = "tar" +version = "0.4.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b55807c0344e1e6c04d7c965f5289c39a8d94ae23ed5c0b57aabac549f871c6" +dependencies = [ + "filetime", + "libc", + "xattr", +] + +[[package]] +name = "tauri" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efbf22abd61d95ca9b2becd77f9db4c093892f73e8a07d21d8b0b2bf71a7bcea" +dependencies = [ + "anyhow", + "attohttpc", + "cocoa", + "dirs-next", + "embed_plist", + "encoding_rs", + "flate2", + "futures-util", + "glib", + "glob", + "gtk", + "heck 0.4.0", + "http", + "ignore", + "notify-rust", + "objc", + "once_cell", + "open", + "os_info", + "os_pipe", + "percent-encoding", + "rand 0.8.5", + "raw-window-handle", + "regex", + "rfd", + "semver 1.0.14", + "serde", + "serde_json", + "serde_repr", + "serialize-to-javascript", + "shared_child", + "state", + "tar", + "tauri-macros", + "tauri-runtime", + "tauri-runtime-wry", + "tauri-utils", + "tempfile", + "thiserror", + "tokio", + "url", + "uuid 1.2.1", + "webkit2gtk", + "webview2-com", + "windows 0.39.0", +] + +[[package]] +name = "tauri-build" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0991fb306849897439dbd4a72e4cbed2413e2eb26cb4b3ba220b94edba8b4b88" +dependencies = [ + "anyhow", + "cargo_toml", + "heck 0.4.0", + "json-patch", + "semver 1.0.14", + "serde_json", + "tauri-utils", + "winres", +] + +[[package]] +name = "tauri-codegen" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "356fa253e40ae4d6ff02075011f2f2bb4066f5c9d8c1e16ca6912d7b75903ba6" +dependencies = [ + "base64", + "brotli", + "ico", + "json-patch", + "plist", + "png 0.17.7", + "proc-macro2", + "quote", + "regex", + "semver 1.0.14", + "serde", + "serde_json", + "sha2", + "tauri-utils", + "thiserror", + "time", + "uuid 1.2.1", + "walkdir", +] + +[[package]] +name = "tauri-macros" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6051fd6940ddb22af452340d03c66a3e2f5d72e0788d4081d91e31528ccdc4d" +dependencies = [ + "heck 0.4.0", + "proc-macro2", + "quote", + "syn", + "tauri-codegen", + "tauri-utils", +] + +[[package]] +name = "tauri-runtime" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d49439a5ea47f474572b854972f42eda2e02a470be5ca9609cc83bb66945abe2" +dependencies = [ + "gtk", + "http", + "http-range", + "infer", + "rand 0.8.5", + "raw-window-handle", + "serde", + "serde_json", + "tauri-utils", + "thiserror", + "uuid 1.2.1", + "webview2-com", + "windows 0.39.0", +] + +[[package]] +name = "tauri-runtime-wry" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28dce920995fd49907aa9bea7249ed1771454f11f7611924c920a1f75fb614d4" +dependencies = [ + "cocoa", + "gtk", + "percent-encoding", + "rand 0.8.5", + "raw-window-handle", + "tauri-runtime", + "tauri-utils", + "uuid 1.2.1", + "webkit2gtk", + "webview2-com", + "windows 0.39.0", + "wry", +] + +[[package]] +name = "tauri-sys" +version = "0.1.0" +dependencies = [ + "js-sys", + "semver 1.0.14", + "serde", + "serde-wasm-bindgen", + "thiserror", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", +] + +[[package]] +name = "tauri-sys-test" +version = "0.0.0" +dependencies = [ + "serde", + "serde_json", + "tauri", + "tauri-build", +] + +[[package]] +name = "tauri-sys-test-ui" +version = "0.0.0" +dependencies = [ + "anyhow", + "console_error_panic_hook", + "futures-util", + "serde", + "sycamore", + "tauri-sys", + "wasm-bindgen-futures", +] + +[[package]] +name = "tauri-utils" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e8fdae6f29cef959809a3c3afef510c5b715a446a597ab8b791497585363f39" +dependencies = [ + "brotli", + "ctor", + "glob", + "heck 0.4.0", + "html5ever", + "json-patch", + "kuchiki", + "memchr", + "phf 0.10.1", + "proc-macro2", + "quote", + "semver 1.0.14", + "serde", + "serde_json", + "serde_with", + "thiserror", + "url", + "walkdir", + "windows 0.39.0", +] + +[[package]] +name = "tauri-winrt-notification" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c58de036c4d2e20717024de2a3c4bf56c301f07b21bc8ef9b57189fce06f1f3b" +dependencies = [ + "quick-xml", + "strum", + "windows 0.39.0", +] + +[[package]] +name = "tempfile" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4" +dependencies = [ + "cfg-if", + "fastrand", + "libc", + "redox_syscall", + "remove_dir_all", + "winapi", +] + +[[package]] +name = "tendril" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d24a120c5fc464a3458240ee02c299ebcb9d67b5249c8848b09d639dca8d7bb0" +dependencies = [ + "futf", + "mac", + "utf-8", +] + +[[package]] +name = "thin-slice" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eaa81235c7058867fa8c0e7314f33dcce9c215f535d1913822a2b3f5e289f3c" + +[[package]] +name = "thiserror" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10deb33631e3c9018b9baf9dcbbc4f737320d2b576bac10f6aefa048fa407e3e" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "982d17546b47146b28f7c22e3d08465f6b8903d0ea13c1660d9d84a6e7adcdbb" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "thread_local" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5516c27b78311c50bf42c071425c560ac799b11c30b31f87e3081965fe5e0180" +dependencies = [ + "once_cell", +] + +[[package]] +name = "time" +version = "0.3.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fab5c8b9980850e06d92ddbe3ab839c062c801f3927c0fb8abd6fc8e918fbca" +dependencies = [ + "itoa 1.0.4", + "libc", + "num_threads", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd" + +[[package]] +name = "time-macros" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65bb801831d812c562ae7d2bfb531f26e66e4e1f6b17307ba4149c5064710e5b" +dependencies = [ + "time-core", +] + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" + +[[package]] +name = "tokio" +version = "1.21.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9e03c497dc955702ba729190dc4aac6f2a0ce97f913e5b1b5912fc5039d9099" +dependencies = [ + "autocfg", + "bytes", + "memchr", + "num_cpus", + "pin-project-lite", +] + +[[package]] +name = "toml" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7" +dependencies = [ + "serde", +] + +[[package]] +name = "tracing" +version = "0.1.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +dependencies = [ + "cfg-if", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tracing-core" +version = "0.1.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" +dependencies = [ + "lazy_static", + "log", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6176eae26dd70d0c919749377897b54a9276bd7061339665dd68777926b5a70" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "treediff" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "761e8d5ad7ce14bb82b7e61ccc0ca961005a275a060b9644a2431aa11553c2ff" +dependencies = [ + "serde_json", +] + +[[package]] +name = "typenum" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" + +[[package]] +name = "ucd-trie" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e79c4d996edb816c91e4308506774452e55e95c3c9de07b6729e17e15a5ef81" + +[[package]] +name = "unicode-bidi" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" + +[[package]] +name = "unicode-ident" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3" + +[[package]] +name = "unicode-normalization" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-segmentation" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fdbf052a0783de01e944a6ce7a8cb939e295b1e7be835a1112c3b9a7f047a5a" + +[[package]] +name = "url" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + +[[package]] +name = "utf8-width" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5190c9442dcdaf0ddd50f37420417d219ae5261bbf5db120d0f9bab996c9cba1" + +[[package]] +name = "uuid" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" + +[[package]] +name = "uuid" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "feb41e78f93363bb2df8b0e86a2ca30eed7806ea16ea0c790d757cf93f79be83" +dependencies = [ + "getrandom 0.2.8", +] + +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "version-compare" +version = "0.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c18c859eead79d8b95d09e4678566e8d70105c4e7b251f707a03df32442661b" + +[[package]] +name = "version-compare" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe88247b92c1df6b6de80ddc290f3976dbdf2f5f5d3fd049a9fb598c6dd5ca73" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "walkdir" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" +dependencies = [ + "same-file", + "winapi", + "winapi-util", +] + +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268" +dependencies = [ + "cfg-if", + "serde_json", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23639446165ca5a5de86ae1d8896b737ae80319560fbaa4c2887b7da6e7ebd7d" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f" + +[[package]] +name = "web-sys" +version = "0.3.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcda906d8be16e728fd5adc5b729afad4e444e106ab28cd1c7256e54fa61510f" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webkit2gtk" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8f859735e4a452aeb28c6c56a852967a8a76c8eb1cc32dbf931ad28a13d6370" +dependencies = [ + "bitflags", + "cairo-rs", + "gdk", + "gdk-sys", + "gio", + "gio-sys", + "glib", + "glib-sys", + "gobject-sys", + "gtk", + "gtk-sys", + "javascriptcore-rs", + "libc", + "once_cell", + "soup2", + "webkit2gtk-sys", +] + +[[package]] +name = "webkit2gtk-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d76ca6ecc47aeba01ec61e480139dda143796abcae6f83bcddf50d6b5b1dcf3" +dependencies = [ + "atk-sys", + "bitflags", + "cairo-sys-rs", + "gdk-pixbuf-sys", + "gdk-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "gtk-sys", + "javascriptcore-rs-sys", + "libc", + "pango-sys", + "pkg-config", + "soup2-sys", + "system-deps 6.0.3", +] + +[[package]] +name = "webview2-com" +version = "0.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4a769c9f1a64a8734bde70caafac2b96cada12cd4aefa49196b3a386b8b4178" +dependencies = [ + "webview2-com-macros", + "webview2-com-sys", + "windows 0.39.0", + "windows-implement", +] + +[[package]] +name = "webview2-com-macros" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaebe196c01691db62e9e4ca52c5ef1e4fd837dcae27dae3ada599b5a8fd05ac" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "webview2-com-sys" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aac48ef20ddf657755fdcda8dfed2a7b4fc7e4581acce6fe9b88c3d64f29dee7" +dependencies = [ + "regex", + "serde", + "serde_json", + "thiserror", + "windows 0.39.0", + "windows-bindgen", + "windows-metadata", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +dependencies = [ + "winapi", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbedf6db9096bc2364adce0ae0aa636dcd89f3c3f2cd67947062aaf0ca2a10ec" +dependencies = [ + "windows_aarch64_msvc 0.32.0", + "windows_i686_gnu 0.32.0", + "windows_i686_msvc 0.32.0", + "windows_x86_64_gnu 0.32.0", + "windows_x86_64_msvc 0.32.0", +] + +[[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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1c4bd0a50ac6020f65184721f758dba47bb9fbc2133df715ec74a237b26794a" +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", +] + +[[package]] +name = "windows-bindgen" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68003dbd0e38abc0fb85b939240f4bce37c43a5981d3df37ccbaaa981b47cb41" +dependencies = [ + "windows-metadata", + "windows-tokens", +] + +[[package]] +name = "windows-implement" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba01f98f509cb5dc05f4e5fc95e535f78260f15fea8fe1a8abdd08f774f1cee7" +dependencies = [ + "syn", + "windows-tokens", +] + +[[package]] +name = "windows-metadata" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ee5e275231f07c6e240d14f34e1b635bf1faa1c76c57cfd59a5cdb9848e4278" + +[[package]] +name = "windows-sys" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2" +dependencies = [ + "windows_aarch64_msvc 0.36.1", + "windows_i686_gnu 0.36.1", + "windows_i686_msvc 0.36.1", + "windows_x86_64_gnu 0.36.1", + "windows_x86_64_msvc 0.36.1", +] + +[[package]] +name = "windows-sys" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc 0.42.0", + "windows_i686_gnu 0.42.0", + "windows_i686_msvc 0.42.0", + "windows_x86_64_gnu 0.42.0", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc 0.42.0", +] + +[[package]] +name = "windows-tokens" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f838de2fe15fe6bac988e74b798f26499a8b21a9d97edec321e79b28d1d7f597" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d2aa71f6f0cbe00ae5167d90ef3cfe66527d6f613ca78ac8024c3ccab9a19e" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8e92753b1c443191654ec532f14c199742964a061be25d77d7a96f09db20bf5" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2623277cb2d1c216ba3b578c0f3cf9cdebeddb6e66b1b218bb33596ea7769c3a" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec7711666096bd4096ffa835238905bb33fb87267910e154b18b44eaabb340f2" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd0f252f5a35cac83d6311b2e795981f5ee6e67eb1f9a7f64eb4500fbc4dcdb4" + +[[package]] +name = "windows_i686_gnu" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a711c68811799e017b6038e0922cb27a5e2f43a2ddb609fe0b6f3eeda9de615" + +[[package]] +name = "windows_i686_gnu" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6" + +[[package]] +name = "windows_i686_gnu" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3925fd0b0b804730d44d4b6278c50f9699703ec49bcd628020f46f4ba07d9e1" + +[[package]] +name = "windows_i686_gnu" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "763fc57100a5f7042e3057e7e8d9bdd7860d330070251a73d003563a3bb49e1b" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbeae19f6716841636c28d695375df17562ca208b2b7d0dc47635a50ae6c5de7" + +[[package]] +name = "windows_i686_msvc" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "146c11bb1a02615db74680b32a68e2d61f553cc24c4eb5b4ca10311740e44172" + +[[package]] +name = "windows_i686_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024" + +[[package]] +name = "windows_i686_msvc" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce907ac74fe331b524c1298683efbf598bb031bc84d5e274db2083696d07c57c" + +[[package]] +name = "windows_i686_msvc" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bc7cbfe58828921e10a9f446fcaaf649204dcfe6c1ddd712c5eebae6bda1106" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84c12f65daa39dd2babe6e442988fc329d6243fdce47d7d2d155b8d874862246" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c912b12f7454c6620635bbff3450962753834be2a594819bd5e945af18ec64bc" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2babfba0828f2e6b32457d5341427dcbb577ceef556273229959ac23a10af33d" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6868c165637d653ae1e8dc4d82c25d4f97dd6605eaa8d784b5c6e0ab2a252b65" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf7b1b21b5362cbc318f686150e5bcea75ecedc74dd157d874d754a2ca44b0ed" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09d525d2ba30eeb3297665bd434a54297e4170c7f1a44cad4ef58095b4cd2028" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "504a2476202769977a040c6364301a3f65d0cc9e3fb08600b2bda150a0488316" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4dd6dc7df2d84cf7b33822ed5b86318fb1781948e9663bacd047fc9dd52259d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e4d40883ae9cae962787ca76ba76390ffa29214667a111db9e0a1ad8377e809" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40009d85759725a34da6d89a94e63d7bdc50a862acf0dbc7c8e488f1edcb6f5" + +[[package]] +name = "winres" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b68db261ef59e9e52806f688020631e987592bd83619edccda9c47d42cde4f6c" +dependencies = [ + "toml", +] + +[[package]] +name = "wry" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff5c1352b4266fdf92c63479d2f58ab4cd29dc4e78fbc1b62011ed1227926945" +dependencies = [ + "base64", + "block", + "cocoa", + "core-graphics", + "crossbeam-channel", + "gdk", + "gio", + "glib", + "gtk", + "html5ever", + "http", + "kuchiki", + "libc", + "log", + "objc", + "objc_id", + "once_cell", + "serde", + "serde_json", + "sha2", + "tao", + "thiserror", + "url", + "webkit2gtk", + "webkit2gtk-sys", + "webview2-com", + "windows 0.39.0", + "windows-implement", +] + +[[package]] +name = "x11" +version = "2.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7ae97874a928d821b061fce3d1fc52f08071dd53c89a6102bc06efcac3b2908" +dependencies = [ + "libc", + "pkg-config", +] + +[[package]] +name = "x11-dl" +version = "2.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c83627bc137605acc00bb399c7b908ef460b621fc37c953db2b09f88c449ea6" +dependencies = [ + "lazy_static", + "libc", + "pkg-config", +] + +[[package]] +name = "xattr" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d1526bbe5aaeb5eb06885f4d987bcdfa5e23187055de9b83fe00156a821fabc" +dependencies = [ + "libc", +] + +[[package]] +name = "xml-rs" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2d7d3948613f75c98fd9328cfdcc45acc4d360655289d0a7d4ec931392200a3" diff --git a/examples/test/Cargo.toml b/examples/test/Cargo.toml new file mode 100644 index 0000000..2c74dba --- /dev/null +++ b/examples/test/Cargo.toml @@ -0,0 +1,17 @@ +[package] +name = "tauri-sys-test-ui" +version = "0.0.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html +[dependencies] +tauri-sys = { path = "../../", features = ["all"] } +sycamore = { git = "https://github.com/sycamore-rs/sycamore", rev = "abd556cbc02047042dad2ebd04405e455a9b11b2", features = ["suspense"] } +anyhow = "1.0.66" +console_error_panic_hook = "0.1.7" +wasm-bindgen-futures = "0.4.32" +futures-util = "0.3.25" +serde = { version = "1.0.147", features = ["derive"] } + +[features] +ci = [] diff --git a/examples/test/Trunk.toml b/examples/test/Trunk.toml new file mode 100644 index 0000000..856f3d2 --- /dev/null +++ b/examples/test/Trunk.toml @@ -0,0 +1,10 @@ +[build] +target = "./index.html" + +[watch] +ignore = ["./src-tauri"] + +[serve] +address = "127.0.0.1" +port = 1420 +open = false \ No newline at end of file diff --git a/examples/test/dist/index.html b/examples/test/dist/index.html new file mode 100644 index 0000000..6f47821 --- /dev/null +++ b/examples/test/dist/index.html @@ -0,0 +1,35 @@ + + + Tauri + Yew App + + + + + \ No newline at end of file diff --git a/examples/test/dist/snippets/tauri-sys-91bd50ded94e0ed7/dist/app.js b/examples/test/dist/snippets/tauri-sys-91bd50ded94e0ed7/dist/app.js new file mode 100644 index 0000000..6b66a23 --- /dev/null +++ b/examples/test/dist/snippets/tauri-sys-91bd50ded94e0ed7/dist/app.js @@ -0,0 +1,91 @@ +// tauri/tooling/api/src/tauri.ts +function uid() { + return window.crypto.getRandomValues(new Uint32Array(1))[0]; +} +function transformCallback(callback, once = false) { + const identifier = uid(); + const prop = `_${identifier}`; + Object.defineProperty(window, prop, { + value: (result) => { + if (once) { + Reflect.deleteProperty(window, prop); + } + return callback?.(result); + }, + writable: false, + configurable: true + }); + return identifier; +} +async function invoke(cmd, args = {}) { + return new Promise((resolve, reject) => { + const callback = transformCallback((e) => { + resolve(e); + Reflect.deleteProperty(window, `_${error}`); + }, true); + const error = transformCallback((e) => { + reject(e); + Reflect.deleteProperty(window, `_${callback}`); + }, true); + window.__TAURI_IPC__({ + cmd, + callback, + error, + ...args + }); + }); +} + +// tauri/tooling/api/src/helpers/tauri.ts +async function invokeTauriCommand(command) { + return invoke("tauri", command); +} + +// tauri/tooling/api/src/app.ts +async function getVersion() { + return invokeTauriCommand({ + __tauriModule: "App", + message: { + cmd: "getAppVersion" + } + }); +} +async function getName() { + return invokeTauriCommand({ + __tauriModule: "App", + message: { + cmd: "getAppName" + } + }); +} +async function getTauriVersion() { + return invokeTauriCommand({ + __tauriModule: "App", + message: { + cmd: "getTauriVersion" + } + }); +} +async function show() { + return invokeTauriCommand({ + __tauriModule: "App", + message: { + cmd: "show" + } + }); +} +async function hide() { + return invokeTauriCommand({ + __tauriModule: "App", + message: { + cmd: "hide" + } + }); +} +export { + getName, + getTauriVersion, + getVersion, + hide, + show +}; diff --git a/examples/test/dist/snippets/tauri-sys-91bd50ded94e0ed7/dist/clipboard.js b/examples/test/dist/snippets/tauri-sys-91bd50ded94e0ed7/dist/clipboard.js new file mode 100644 index 0000000..16bd040 --- /dev/null +++ b/examples/test/dist/snippets/tauri-sys-91bd50ded94e0ed7/dist/clipboard.js @@ -0,0 +1,66 @@ +// tauri/tooling/api/src/tauri.ts +function uid() { + return window.crypto.getRandomValues(new Uint32Array(1))[0]; +} +function transformCallback(callback, once = false) { + const identifier = uid(); + const prop = `_${identifier}`; + Object.defineProperty(window, prop, { + value: (result) => { + if (once) { + Reflect.deleteProperty(window, prop); + } + return callback?.(result); + }, + writable: false, + configurable: true + }); + return identifier; +} +async function invoke(cmd, args = {}) { + return new Promise((resolve, reject) => { + const callback = transformCallback((e) => { + resolve(e); + Reflect.deleteProperty(window, `_${error}`); + }, true); + const error = transformCallback((e) => { + reject(e); + Reflect.deleteProperty(window, `_${callback}`); + }, true); + window.__TAURI_IPC__({ + cmd, + callback, + error, + ...args + }); + }); +} + +// tauri/tooling/api/src/helpers/tauri.ts +async function invokeTauriCommand(command) { + return invoke("tauri", command); +} + +// tauri/tooling/api/src/clipboard.ts +async function writeText(text) { + return invokeTauriCommand({ + __tauriModule: "Clipboard", + message: { + cmd: "writeText", + data: text + } + }); +} +async function readText() { + return invokeTauriCommand({ + __tauriModule: "Clipboard", + message: { + cmd: "readText", + data: null + } + }); +} +export { + readText, + writeText +}; diff --git a/examples/test/dist/snippets/tauri-sys-91bd50ded94e0ed7/dist/event.js b/examples/test/dist/snippets/tauri-sys-91bd50ded94e0ed7/dist/event.js new file mode 100644 index 0000000..934f20b --- /dev/null +++ b/examples/test/dist/snippets/tauri-sys-91bd50ded94e0ed7/dist/event.js @@ -0,0 +1,123 @@ +// tauri/tooling/api/src/tauri.ts +function uid() { + return window.crypto.getRandomValues(new Uint32Array(1))[0]; +} +function transformCallback(callback, once3 = false) { + const identifier = uid(); + const prop = `_${identifier}`; + Object.defineProperty(window, prop, { + value: (result) => { + if (once3) { + Reflect.deleteProperty(window, prop); + } + return callback?.(result); + }, + writable: false, + configurable: true + }); + return identifier; +} +async function invoke(cmd, args = {}) { + return new Promise((resolve, reject) => { + const callback = transformCallback((e) => { + resolve(e); + Reflect.deleteProperty(window, `_${error}`); + }, true); + const error = transformCallback((e) => { + reject(e); + Reflect.deleteProperty(window, `_${callback}`); + }, true); + window.__TAURI_IPC__({ + cmd, + callback, + error, + ...args + }); + }); +} + +// tauri/tooling/api/src/helpers/tauri.ts +async function invokeTauriCommand(command) { + return invoke("tauri", command); +} + +// tauri/tooling/api/src/helpers/event.ts +async function _unlisten(event, eventId) { + return invokeTauriCommand({ + __tauriModule: "Event", + message: { + cmd: "unlisten", + event, + eventId + } + }); +} +async function emit(event, windowLabel, payload) { + await invokeTauriCommand({ + __tauriModule: "Event", + message: { + cmd: "emit", + event, + windowLabel, + payload + } + }); +} +async function listen(event, windowLabel, handler) { + return invokeTauriCommand({ + __tauriModule: "Event", + message: { + cmd: "listen", + event, + windowLabel, + handler: transformCallback(handler) + } + }).then((eventId) => { + return async () => _unlisten(event, eventId); + }); +} +async function once(event, windowLabel, handler) { + return listen(event, windowLabel, (eventData) => { + handler(eventData); + _unlisten(event, eventData.id).catch(() => { + }); + }); +} + +// tauri/tooling/api/src/event.ts +var TauriEvent = /* @__PURE__ */ ((TauriEvent2) => { + TauriEvent2["WINDOW_RESIZED"] = "tauri://resize"; + TauriEvent2["WINDOW_MOVED"] = "tauri://move"; + TauriEvent2["WINDOW_CLOSE_REQUESTED"] = "tauri://close-requested"; + TauriEvent2["WINDOW_CREATED"] = "tauri://window-created"; + TauriEvent2["WINDOW_DESTROYED"] = "tauri://destroyed"; + TauriEvent2["WINDOW_FOCUS"] = "tauri://focus"; + TauriEvent2["WINDOW_BLUR"] = "tauri://blur"; + TauriEvent2["WINDOW_SCALE_FACTOR_CHANGED"] = "tauri://scale-change"; + TauriEvent2["WINDOW_THEME_CHANGED"] = "tauri://theme-changed"; + TauriEvent2["WINDOW_FILE_DROP"] = "tauri://file-drop"; + TauriEvent2["WINDOW_FILE_DROP_HOVER"] = "tauri://file-drop-hover"; + TauriEvent2["WINDOW_FILE_DROP_CANCELLED"] = "tauri://file-drop-cancelled"; + TauriEvent2["MENU"] = "tauri://menu"; + TauriEvent2["CHECK_UPDATE"] = "tauri://update"; + TauriEvent2["UPDATE_AVAILABLE"] = "tauri://update-available"; + TauriEvent2["INSTALL_UPDATE"] = "tauri://update-install"; + TauriEvent2["STATUS_UPDATE"] = "tauri://update-status"; + TauriEvent2["DOWNLOAD_PROGRESS"] = "tauri://update-download-progress"; + return TauriEvent2; +})(TauriEvent || {}); +async function listen2(event, handler) { + return listen(event, null, handler); +} +async function once2(event, handler) { + return once(event, null, handler); +} +async function emit2(event, payload) { + return emit(event, void 0, payload); +} +export { + TauriEvent, + emit2 as emit, + listen2 as listen, + once2 as once +}; diff --git a/examples/test/dist/snippets/tauri-sys-91bd50ded94e0ed7/dist/mocks.js b/examples/test/dist/snippets/tauri-sys-91bd50ded94e0ed7/dist/mocks.js new file mode 100644 index 0000000..4342d8f --- /dev/null +++ b/examples/test/dist/snippets/tauri-sys-91bd50ded94e0ed7/dist/mocks.js @@ -0,0 +1,30 @@ +// tauri/tooling/api/src/mocks.ts +function mockIPC(cb) { + window.__TAURI_IPC__ = async ({ + cmd, + callback, + error, + ...args + }) => { + try { + window[`_${callback}`](await cb(cmd, args)); + } catch (err) { + window[`_${error}`](err); + } + }; +} +function mockWindows(current, ...additionalWindows) { + window.__TAURI_METADATA__ = { + __windows: [current, ...additionalWindows].map((label) => ({ label })), + __currentWindow: { label: current } + }; +} +function clearMocks() { + delete window.__TAURI_IPC__; + delete window.__TAURI_METADATA__; +} +export { + clearMocks, + mockIPC, + mockWindows +}; diff --git a/examples/test/dist/snippets/tauri-sys-91bd50ded94e0ed7/dist/process.js b/examples/test/dist/snippets/tauri-sys-91bd50ded94e0ed7/dist/process.js new file mode 100644 index 0000000..9356313 --- /dev/null +++ b/examples/test/dist/snippets/tauri-sys-91bd50ded94e0ed7/dist/process.js @@ -0,0 +1,65 @@ +// tauri/tooling/api/src/tauri.ts +function uid() { + return window.crypto.getRandomValues(new Uint32Array(1))[0]; +} +function transformCallback(callback, once = false) { + const identifier = uid(); + const prop = `_${identifier}`; + Object.defineProperty(window, prop, { + value: (result) => { + if (once) { + Reflect.deleteProperty(window, prop); + } + return callback?.(result); + }, + writable: false, + configurable: true + }); + return identifier; +} +async function invoke(cmd, args = {}) { + return new Promise((resolve, reject) => { + const callback = transformCallback((e) => { + resolve(e); + Reflect.deleteProperty(window, `_${error}`); + }, true); + const error = transformCallback((e) => { + reject(e); + Reflect.deleteProperty(window, `_${callback}`); + }, true); + window.__TAURI_IPC__({ + cmd, + callback, + error, + ...args + }); + }); +} + +// tauri/tooling/api/src/helpers/tauri.ts +async function invokeTauriCommand(command) { + return invoke("tauri", command); +} + +// tauri/tooling/api/src/process.ts +async function exit(exitCode = 0) { + return invokeTauriCommand({ + __tauriModule: "Process", + message: { + cmd: "exit", + exitCode + } + }); +} +async function relaunch() { + return invokeTauriCommand({ + __tauriModule: "Process", + message: { + cmd: "relaunch" + } + }); +} +export { + exit, + relaunch +}; diff --git a/examples/test/dist/snippets/tauri-sys-91bd50ded94e0ed7/dist/tauri.js b/examples/test/dist/snippets/tauri-sys-91bd50ded94e0ed7/dist/tauri.js new file mode 100644 index 0000000..5360e6f --- /dev/null +++ b/examples/test/dist/snippets/tauri-sys-91bd50ded94e0ed7/dist/tauri.js @@ -0,0 +1,46 @@ +// tauri/tooling/api/src/tauri.ts +function uid() { + return window.crypto.getRandomValues(new Uint32Array(1))[0]; +} +function transformCallback(callback, once = false) { + const identifier = uid(); + const prop = `_${identifier}`; + Object.defineProperty(window, prop, { + value: (result) => { + if (once) { + Reflect.deleteProperty(window, prop); + } + return callback?.(result); + }, + writable: false, + configurable: true + }); + return identifier; +} +async function invoke(cmd, args = {}) { + return new Promise((resolve, reject) => { + const callback = transformCallback((e) => { + resolve(e); + Reflect.deleteProperty(window, `_${error}`); + }, true); + const error = transformCallback((e) => { + reject(e); + Reflect.deleteProperty(window, `_${callback}`); + }, true); + window.__TAURI_IPC__({ + cmd, + callback, + error, + ...args + }); + }); +} +function convertFileSrc(filePath, protocol = "asset") { + const path = encodeURIComponent(filePath); + return navigator.userAgent.includes("Windows") ? `https://${protocol}.localhost/${path}` : `${protocol}://localhost/${path}`; +} +export { + convertFileSrc, + invoke, + transformCallback +}; diff --git a/examples/test/dist/snippets/tauri-sys-91bd50ded94e0ed7/dist/window.js b/examples/test/dist/snippets/tauri-sys-91bd50ded94e0ed7/dist/window.js new file mode 100644 index 0000000..e0b637b --- /dev/null +++ b/examples/test/dist/snippets/tauri-sys-91bd50ded94e0ed7/dist/window.js @@ -0,0 +1,1004 @@ +// tauri/tooling/api/src/tauri.ts +function uid() { + return window.crypto.getRandomValues(new Uint32Array(1))[0]; +} +function transformCallback(callback, once2 = false) { + const identifier = uid(); + const prop = `_${identifier}`; + Object.defineProperty(window, prop, { + value: (result) => { + if (once2) { + Reflect.deleteProperty(window, prop); + } + return callback?.(result); + }, + writable: false, + configurable: true + }); + return identifier; +} +async function invoke(cmd, args = {}) { + return new Promise((resolve, reject) => { + const callback = transformCallback((e) => { + resolve(e); + Reflect.deleteProperty(window, `_${error}`); + }, true); + const error = transformCallback((e) => { + reject(e); + Reflect.deleteProperty(window, `_${callback}`); + }, true); + window.__TAURI_IPC__({ + cmd, + callback, + error, + ...args + }); + }); +} + +// tauri/tooling/api/src/helpers/tauri.ts +async function invokeTauriCommand(command) { + return invoke("tauri", command); +} + +// tauri/tooling/api/src/helpers/event.ts +async function _unlisten(event, eventId) { + return invokeTauriCommand({ + __tauriModule: "Event", + message: { + cmd: "unlisten", + event, + eventId + } + }); +} +async function emit(event, windowLabel, payload) { + await invokeTauriCommand({ + __tauriModule: "Event", + message: { + cmd: "emit", + event, + windowLabel, + payload + } + }); +} +async function listen(event, windowLabel, handler) { + return invokeTauriCommand({ + __tauriModule: "Event", + message: { + cmd: "listen", + event, + windowLabel, + handler: transformCallback(handler) + } + }).then((eventId) => { + return async () => _unlisten(event, eventId); + }); +} +async function once(event, windowLabel, handler) { + return listen(event, windowLabel, (eventData) => { + handler(eventData); + _unlisten(event, eventData.id).catch(() => { + }); + }); +} + +// tauri/tooling/api/src/window.ts +var LogicalSize = class { + constructor(width, height) { + this.type = "Logical"; + this.width = width; + this.height = height; + } +}; +var PhysicalSize = class { + constructor(width, height) { + this.type = "Physical"; + this.width = width; + this.height = height; + } + toLogical(scaleFactor) { + return new LogicalSize(this.width / scaleFactor, this.height / scaleFactor); + } +}; +var LogicalPosition = class { + constructor(x, y) { + this.type = "Logical"; + this.x = x; + this.y = y; + } +}; +var PhysicalPosition = class { + constructor(x, y) { + this.type = "Physical"; + this.x = x; + this.y = y; + } + toLogical(scaleFactor) { + return new LogicalPosition(this.x / scaleFactor, this.y / scaleFactor); + } +}; +var UserAttentionType = /* @__PURE__ */ ((UserAttentionType2) => { + UserAttentionType2[UserAttentionType2["Critical"] = 1] = "Critical"; + UserAttentionType2[UserAttentionType2["Informational"] = 2] = "Informational"; + return UserAttentionType2; +})(UserAttentionType || {}); +function getCurrent() { + return new WebviewWindow(window.__TAURI_METADATA__.__currentWindow.label, { + skip: true + }); +} +function getAll() { + return window.__TAURI_METADATA__.__windows.map( + (w) => new WebviewWindow(w.label, { + skip: true + }) + ); +} +var localTauriEvents = ["tauri://created", "tauri://error"]; +var WebviewWindowHandle = class { + constructor(label) { + this.label = label; + this.listeners = /* @__PURE__ */ Object.create(null); + } + async listen(event, handler) { + if (this._handleTauriEvent(event, handler)) { + return Promise.resolve(() => { + const listeners = this.listeners[event]; + listeners.splice(listeners.indexOf(handler), 1); + }); + } + return listen(event, this.label, handler); + } + async once(event, handler) { + if (this._handleTauriEvent(event, handler)) { + return Promise.resolve(() => { + const listeners = this.listeners[event]; + listeners.splice(listeners.indexOf(handler), 1); + }); + } + return once(event, this.label, handler); + } + async emit(event, payload) { + if (localTauriEvents.includes(event)) { + for (const handler of this.listeners[event] || []) { + handler({ event, id: -1, windowLabel: this.label, payload }); + } + return Promise.resolve(); + } + return emit(event, this.label, payload); + } + _handleTauriEvent(event, handler) { + if (localTauriEvents.includes(event)) { + if (!(event in this.listeners)) { + this.listeners[event] = [handler]; + } else { + this.listeners[event].push(handler); + } + return true; + } + return false; + } +}; +var WindowManager = class extends WebviewWindowHandle { + async scaleFactor() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "scaleFactor" + } + } + } + }); + } + async innerPosition() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "innerPosition" + } + } + } + }).then(({ x, y }) => new PhysicalPosition(x, y)); + } + async outerPosition() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "outerPosition" + } + } + } + }).then(({ x, y }) => new PhysicalPosition(x, y)); + } + async innerSize() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "innerSize" + } + } + } + }).then(({ width, height }) => new PhysicalSize(width, height)); + } + async outerSize() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "outerSize" + } + } + } + }).then(({ width, height }) => new PhysicalSize(width, height)); + } + async isFullscreen() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "isFullscreen" + } + } + } + }); + } + async isMaximized() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "isMaximized" + } + } + } + }); + } + async isDecorated() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "isDecorated" + } + } + } + }); + } + async isResizable() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "isResizable" + } + } + } + }); + } + async isVisible() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "isVisible" + } + } + } + }); + } + async theme() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "theme" + } + } + } + }); + } + async center() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "center" + } + } + } + }); + } + async requestUserAttention(requestType) { + let requestType_ = null; + if (requestType) { + if (requestType === 1 /* Critical */) { + requestType_ = { type: "Critical" }; + } else { + requestType_ = { type: "Informational" }; + } + } + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "requestUserAttention", + payload: requestType_ + } + } + } + }); + } + async setResizable(resizable) { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "setResizable", + payload: resizable + } + } + } + }); + } + async setTitle(title) { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "setTitle", + payload: title + } + } + } + }); + } + async maximize() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "maximize" + } + } + } + }); + } + async unmaximize() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "unmaximize" + } + } + } + }); + } + async toggleMaximize() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "toggleMaximize" + } + } + } + }); + } + async minimize() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "minimize" + } + } + } + }); + } + async unminimize() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "unminimize" + } + } + } + }); + } + async show() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "show" + } + } + } + }); + } + async hide() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "hide" + } + } + } + }); + } + async close() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "close" + } + } + } + }); + } + async setDecorations(decorations) { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "setDecorations", + payload: decorations + } + } + } + }); + } + async setAlwaysOnTop(alwaysOnTop) { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "setAlwaysOnTop", + payload: alwaysOnTop + } + } + } + }); + } + async setSize(size) { + if (!size || size.type !== "Logical" && size.type !== "Physical") { + throw new Error( + "the `size` argument must be either a LogicalSize or a PhysicalSize instance" + ); + } + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "setSize", + payload: { + type: size.type, + data: { + width: size.width, + height: size.height + } + } + } + } + } + }); + } + async setMinSize(size) { + if (size && size.type !== "Logical" && size.type !== "Physical") { + throw new Error( + "the `size` argument must be either a LogicalSize or a PhysicalSize instance" + ); + } + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "setMinSize", + payload: size ? { + type: size.type, + data: { + width: size.width, + height: size.height + } + } : null + } + } + } + }); + } + async setMaxSize(size) { + if (size && size.type !== "Logical" && size.type !== "Physical") { + throw new Error( + "the `size` argument must be either a LogicalSize or a PhysicalSize instance" + ); + } + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "setMaxSize", + payload: size ? { + type: size.type, + data: { + width: size.width, + height: size.height + } + } : null + } + } + } + }); + } + async setPosition(position) { + if (!position || position.type !== "Logical" && position.type !== "Physical") { + throw new Error( + "the `position` argument must be either a LogicalPosition or a PhysicalPosition instance" + ); + } + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "setPosition", + payload: { + type: position.type, + data: { + x: position.x, + y: position.y + } + } + } + } + } + }); + } + async setFullscreen(fullscreen) { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "setFullscreen", + payload: fullscreen + } + } + } + }); + } + async setFocus() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "setFocus" + } + } + } + }); + } + async setIcon(icon) { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "setIcon", + payload: { + icon: typeof icon === "string" ? icon : Array.from(icon) + } + } + } + } + }); + } + async setSkipTaskbar(skip) { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "setSkipTaskbar", + payload: skip + } + } + } + }); + } + async setCursorGrab(grab) { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "setCursorGrab", + payload: grab + } + } + } + }); + } + async setCursorVisible(visible) { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "setCursorVisible", + payload: visible + } + } + } + }); + } + async setCursorIcon(icon) { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "setCursorIcon", + payload: icon + } + } + } + }); + } + async setCursorPosition(position) { + if (!position || position.type !== "Logical" && position.type !== "Physical") { + throw new Error( + "the `position` argument must be either a LogicalPosition or a PhysicalPosition instance" + ); + } + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "setCursorPosition", + payload: { + type: position.type, + data: { + x: position.x, + y: position.y + } + } + } + } + } + }); + } + async setIgnoreCursorEvents(ignore) { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "setIgnoreCursorEvents", + payload: ignore + } + } + } + }); + } + async startDragging() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "startDragging" + } + } + } + }); + } + async onResized(handler) { + return this.listen("tauri://resize" /* WINDOW_RESIZED */, handler); + } + async onMoved(handler) { + return this.listen("tauri://move" /* WINDOW_MOVED */, handler); + } + async onCloseRequested(handler) { + return this.listen("tauri://close-requested" /* WINDOW_CLOSE_REQUESTED */, (event) => { + const evt = new CloseRequestedEvent(event); + void Promise.resolve(handler(evt)).then(() => { + if (!evt.isPreventDefault()) { + return this.close(); + } + }); + }); + } + async onFocusChanged(handler) { + const unlistenFocus = await this.listen( + "tauri://focus" /* WINDOW_FOCUS */, + (event) => { + handler({ ...event, payload: true }); + } + ); + const unlistenBlur = await this.listen( + "tauri://blur" /* WINDOW_BLUR */, + (event) => { + handler({ ...event, payload: false }); + } + ); + return () => { + unlistenFocus(); + unlistenBlur(); + }; + } + async onScaleChanged(handler) { + return this.listen( + "tauri://scale-change" /* WINDOW_SCALE_FACTOR_CHANGED */, + handler + ); + } + async onMenuClicked(handler) { + return this.listen("tauri://menu" /* MENU */, handler); + } + async onFileDropEvent(handler) { + const unlistenFileDrop = await this.listen( + "tauri://file-drop" /* WINDOW_FILE_DROP */, + (event) => { + handler({ ...event, payload: { type: "drop", paths: event.payload } }); + } + ); + const unlistenFileHover = await this.listen( + "tauri://file-drop-hover" /* WINDOW_FILE_DROP_HOVER */, + (event) => { + handler({ ...event, payload: { type: "hover", paths: event.payload } }); + } + ); + const unlistenCancel = await this.listen( + "tauri://file-drop-cancelled" /* WINDOW_FILE_DROP_CANCELLED */, + (event) => { + handler({ ...event, payload: { type: "cancel" } }); + } + ); + return () => { + unlistenFileDrop(); + unlistenFileHover(); + unlistenCancel(); + }; + } + async onThemeChanged(handler) { + return this.listen("tauri://theme-changed" /* WINDOW_THEME_CHANGED */, handler); + } +}; +var CloseRequestedEvent = class { + constructor(event) { + this._preventDefault = false; + this.event = event.event; + this.windowLabel = event.windowLabel; + this.id = event.id; + } + preventDefault() { + this._preventDefault = true; + } + isPreventDefault() { + return this._preventDefault; + } +}; +var WebviewWindow = class extends WindowManager { + constructor(label, options = {}) { + super(label); + if (!options?.skip) { + invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "createWebview", + data: { + options: { + label, + ...options + } + } + } + }).then(async () => this.emit("tauri://created")).catch(async (e) => this.emit("tauri://error", e)); + } + } + static getByLabel(label) { + if (getAll().some((w) => w.label === label)) { + return new WebviewWindow(label, { skip: true }); + } + return null; + } +}; +var appWindow; +if ("__TAURI_METADATA__" in window) { + appWindow = new WebviewWindow( + window.__TAURI_METADATA__.__currentWindow.label, + { + skip: true + } + ); +} else { + console.warn( + `Could not find "window.__TAURI_METADATA__". The "appWindow" value will reference the "main" window label. +Note that this is not an issue if running this frontend on a browser instead of a Tauri window.` + ); + appWindow = new WebviewWindow("main", { + skip: true + }); +} +function mapMonitor(m) { + return m === null ? null : { + name: m.name, + scaleFactor: m.scaleFactor, + position: new PhysicalPosition(m.position.x, m.position.y), + size: new PhysicalSize(m.size.width, m.size.height) + }; +} +async function currentMonitor() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + cmd: { + type: "currentMonitor" + } + } + } + }).then(mapMonitor); +} +async function primaryMonitor() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + cmd: { + type: "primaryMonitor" + } + } + } + }).then(mapMonitor); +} +async function availableMonitors() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + cmd: { + type: "availableMonitors" + } + } + } + }).then((ms) => ms.map(mapMonitor)); +} +export { + CloseRequestedEvent, + LogicalPosition, + LogicalSize, + PhysicalPosition, + PhysicalSize, + UserAttentionType, + WebviewWindow, + WebviewWindowHandle, + WindowManager, + appWindow, + availableMonitors, + currentMonitor, + getAll, + getCurrent, + primaryMonitor +}; diff --git a/examples/test/dist/tauri-sys-test-ui-3eb704384493bbf2.js b/examples/test/dist/tauri-sys-test-ui-3eb704384493bbf2.js new file mode 100644 index 0000000..055ec6b --- /dev/null +++ b/examples/test/dist/tauri-sys-test-ui-3eb704384493bbf2.js @@ -0,0 +1,644 @@ +import { getName, getTauriVersion, getVersion } from './snippets/tauri-sys-91bd50ded94e0ed7/dist/app.js'; +import { readText, writeText } from './snippets/tauri-sys-91bd50ded94e0ed7/dist/clipboard.js'; +import { emit } from './snippets/tauri-sys-91bd50ded94e0ed7/dist/event.js'; +import { invoke } from './snippets/tauri-sys-91bd50ded94e0ed7/dist/tauri.js'; + +let wasm; + +const heap = new Array(32).fill(undefined); + +heap.push(undefined, null, true, false); + +function getObject(idx) { return heap[idx]; } + +let WASM_VECTOR_LEN = 0; + +let cachedUint8Memory0 = new Uint8Array(); + +function getUint8Memory0() { + if (cachedUint8Memory0.byteLength === 0) { + cachedUint8Memory0 = new Uint8Array(wasm.memory.buffer); + } + return cachedUint8Memory0; +} + +const cachedTextEncoder = new TextEncoder('utf-8'); + +const encodeString = (typeof cachedTextEncoder.encodeInto === 'function' + ? function (arg, view) { + return cachedTextEncoder.encodeInto(arg, view); +} + : function (arg, view) { + const buf = cachedTextEncoder.encode(arg); + view.set(buf); + return { + read: arg.length, + written: buf.length + }; +}); + +function passStringToWasm0(arg, malloc, realloc) { + + if (realloc === undefined) { + const buf = cachedTextEncoder.encode(arg); + const ptr = malloc(buf.length); + getUint8Memory0().subarray(ptr, ptr + buf.length).set(buf); + WASM_VECTOR_LEN = buf.length; + return ptr; + } + + let len = arg.length; + let ptr = malloc(len); + + const mem = getUint8Memory0(); + + let offset = 0; + + for (; offset < len; offset++) { + const code = arg.charCodeAt(offset); + if (code > 0x7F) break; + mem[ptr + offset] = code; + } + + if (offset !== len) { + if (offset !== 0) { + arg = arg.slice(offset); + } + ptr = realloc(ptr, len, len = offset + arg.length * 3); + const view = getUint8Memory0().subarray(ptr + offset, ptr + len); + const ret = encodeString(arg, view); + + offset += ret.written; + } + + WASM_VECTOR_LEN = offset; + return ptr; +} + +function isLikeNone(x) { + return x === undefined || x === null; +} + +let cachedInt32Memory0 = new Int32Array(); + +function getInt32Memory0() { + if (cachedInt32Memory0.byteLength === 0) { + cachedInt32Memory0 = new Int32Array(wasm.memory.buffer); + } + return cachedInt32Memory0; +} + +let heap_next = heap.length; + +function addHeapObject(obj) { + if (heap_next === heap.length) heap.push(heap.length + 1); + const idx = heap_next; + heap_next = heap[idx]; + + heap[idx] = obj; + return idx; +} + +const cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }); + +cachedTextDecoder.decode(); + +function getStringFromWasm0(ptr, len) { + return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len)); +} + +let cachedFloat64Memory0 = new Float64Array(); + +function getFloat64Memory0() { + if (cachedFloat64Memory0.byteLength === 0) { + cachedFloat64Memory0 = new Float64Array(wasm.memory.buffer); + } + return cachedFloat64Memory0; +} + +function dropObject(idx) { + if (idx < 36) return; + heap[idx] = heap_next; + heap_next = idx; +} + +function takeObject(idx) { + const ret = getObject(idx); + dropObject(idx); + return ret; +} + +function debugString(val) { + // primitive types + const type = typeof val; + if (type == 'number' || type == 'boolean' || val == null) { + return `${val}`; + } + if (type == 'string') { + return `"${val}"`; + } + if (type == 'symbol') { + const description = val.description; + if (description == null) { + return 'Symbol'; + } else { + return `Symbol(${description})`; + } + } + if (type == 'function') { + const name = val.name; + if (typeof name == 'string' && name.length > 0) { + return `Function(${name})`; + } else { + return 'Function'; + } + } + // objects + if (Array.isArray(val)) { + const length = val.length; + let debug = '['; + if (length > 0) { + debug += debugString(val[0]); + } + for(let i = 1; i < length; i++) { + debug += ', ' + debugString(val[i]); + } + debug += ']'; + return debug; + } + // Test for built-in + const builtInMatches = /\[object ([^\]]+)\]/.exec(toString.call(val)); + let className; + if (builtInMatches.length > 1) { + className = builtInMatches[1]; + } else { + // Failed to match the standard '[object ClassName]' + return toString.call(val); + } + if (className == 'Object') { + // we're a user defined class or Object + // JSON.stringify avoids problems with cycles, and is generally much + // easier than looping through ownProperties of `val`. + try { + return 'Object(' + JSON.stringify(val) + ')'; + } catch (_) { + return 'Object'; + } + } + // errors + if (val instanceof Error) { + return `${val.name}: ${val.message}\n${val.stack}`; + } + // TODO we could test for more things here, like `Set`s and `Map`s. + return className; +} + +function makeMutClosure(arg0, arg1, dtor, f) { + const state = { a: arg0, b: arg1, cnt: 1, dtor }; + const real = (...args) => { + // First up with a closure we increment the internal reference + // count. This ensures that the Rust closure environment won't + // be deallocated while we're invoking it. + state.cnt++; + const a = state.a; + state.a = 0; + try { + return f(a, state.b, ...args); + } finally { + if (--state.cnt === 0) { + wasm.__wbindgen_export_2.get(state.dtor)(a, state.b); + + } else { + state.a = a; + } + } + }; + real.original = state; + + return real; +} +function __wbg_adapter_28(arg0, arg1, arg2) { + wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h45f286b32445b0b2(arg0, arg1, addHeapObject(arg2)); +} + +function getCachedStringFromWasm0(ptr, len) { + if (ptr === 0) { + return getObject(len); + } else { + return getStringFromWasm0(ptr, len); + } +} + +function handleError(f, args) { + try { + return f.apply(this, args); + } catch (e) { + wasm.__wbindgen_exn_store(addHeapObject(e)); + } +} + +async function load(module, imports) { + if (typeof Response === 'function' && module instanceof Response) { + if (typeof WebAssembly.instantiateStreaming === 'function') { + try { + return await WebAssembly.instantiateStreaming(module, imports); + + } catch (e) { + if (module.headers.get('Content-Type') != 'application/wasm') { + console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e); + + } else { + throw e; + } + } + } + + const bytes = await module.arrayBuffer(); + return await WebAssembly.instantiate(bytes, imports); + + } else { + const instance = await WebAssembly.instantiate(module, imports); + + if (instance instanceof WebAssembly.Instance) { + return { instance, module }; + + } else { + return instance; + } + } +} + +function getImports() { + const imports = {}; + imports.wbg = {}; + imports.wbg.__wbg_readText_d6aa69a1d055ebfb = function() { + const ret = readText(); + return addHeapObject(ret); + }; + imports.wbg.__wbg_writeText_98a927b6ebdc847f = function(arg0, arg1) { + var v0 = getCachedStringFromWasm0(arg0, arg1); + const ret = writeText(v0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_invoke_575077e3d547074e = function() { return handleError(function (arg0, arg1, arg2) { + var v0 = getCachedStringFromWasm0(arg0, arg1); + const ret = invoke(v0, takeObject(arg2)); + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_getVersion_13e166788d7097c8 = function() { + const ret = getVersion(); + return addHeapObject(ret); + }; + imports.wbg.__wbg_getTauriVersion_62b3cf54af008ea9 = function() { + const ret = getTauriVersion(); + return addHeapObject(ret); + }; + imports.wbg.__wbg_getName_d3872e5e2b652485 = function() { + const ret = getName(); + return addHeapObject(ret); + }; + imports.wbg.__wbg_emit_128d56f37ce5403a = function(arg0, arg1, arg2) { + var v0 = getCachedStringFromWasm0(arg0, arg1); + const ret = emit(v0, takeObject(arg2)); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_boolean_get = function(arg0) { + const v = getObject(arg0); + const ret = typeof(v) === 'boolean' ? (v ? 1 : 0) : 2; + return ret; + }; + imports.wbg.__wbindgen_string_get = function(arg0, arg1) { + const obj = getObject(arg1); + const ret = typeof(obj) === 'string' ? obj : undefined; + var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len0 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len0; + getInt32Memory0()[arg0 / 4 + 0] = ptr0; + }; + imports.wbg.__wbindgen_object_clone_ref = function(arg0) { + const ret = getObject(arg0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_nodeId_bbf0efafa303e805 = function(arg0, arg1) { + const ret = getObject(arg1).$$$nodeId; + getInt32Memory0()[arg0 / 4 + 1] = isLikeNone(ret) ? 0 : ret; + getInt32Memory0()[arg0 / 4 + 0] = !isLikeNone(ret); + }; + imports.wbg.__wbg_setnodeId_433ef8ed15bd1612 = function(arg0, arg1) { + getObject(arg0).$$$nodeId = arg1 >>> 0; + }; + imports.wbg.__wbg_createTextNode_a7d5f5b956acda97 = function(arg0, arg1) { + const ret = getObject(arg0).createTextNode(arg1); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_string_new = function(arg0, arg1) { + const ret = getStringFromWasm0(arg0, arg1); + return addHeapObject(ret); + }; + imports.wbg.__wbg_instanceof_Window_acc97ff9f5d2c7b4 = function(arg0) { + let result; + try { + result = getObject(arg0) instanceof Window; + } catch { + result = false; + } + const ret = result; + return ret; + }; + imports.wbg.__wbg_document_3ead31dbcad65886 = function(arg0) { + const ret = getObject(arg0).document; + return isLikeNone(ret) ? 0 : addHeapObject(ret); + }; + imports.wbg.__wbg_body_3cb4b4042b9a632b = function(arg0) { + const ret = getObject(arg0).body; + return isLikeNone(ret) ? 0 : addHeapObject(ret); + }; + imports.wbg.__wbg_createComment_0df3a4d0d91032e7 = function(arg0, arg1, arg2) { + var v0 = getCachedStringFromWasm0(arg1, arg2); + const ret = getObject(arg0).createComment(v0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_createElement_976dbb84fe1661b5 = function() { return handleError(function (arg0, arg1, arg2) { + var v0 = getCachedStringFromWasm0(arg1, arg2); + const ret = getObject(arg0).createElement(v0); + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_createElementNS_1561aca8ee3693c0 = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) { + var v0 = getCachedStringFromWasm0(arg1, arg2); + var v1 = getCachedStringFromWasm0(arg3, arg4); + const ret = getObject(arg0).createElementNS(v0, v1); + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_createTextNode_300f845fab76642f = function(arg0, arg1, arg2) { + var v0 = getCachedStringFromWasm0(arg1, arg2); + const ret = getObject(arg0).createTextNode(v0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_instanceof_Comment_1758f7164ca9ea81 = function(arg0) { + let result; + try { + result = getObject(arg0) instanceof Comment; + } catch { + result = false; + } + const ret = result; + return ret; + }; + imports.wbg.__wbg_instanceof_Text_6855016c7825859b = function(arg0) { + let result; + try { + result = getObject(arg0) instanceof Text; + } catch { + result = false; + } + const ret = result; + return ret; + }; + imports.wbg.__wbg_instanceof_Element_33bd126d58f2021b = function(arg0) { + let result; + try { + result = getObject(arg0) instanceof Element; + } catch { + result = false; + } + const ret = result; + return ret; + }; + imports.wbg.__wbg_outerHTML_bf662bdff92e5910 = function(arg0, arg1) { + const ret = getObject(arg1).outerHTML; + const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len0; + getInt32Memory0()[arg0 / 4 + 0] = ptr0; + }; + imports.wbg.__wbg_parentNode_e397bbbe28be7b28 = function(arg0) { + const ret = getObject(arg0).parentNode; + return isLikeNone(ret) ? 0 : addHeapObject(ret); + }; + imports.wbg.__wbg_nextSibling_62338ec2a05607b4 = function(arg0) { + const ret = getObject(arg0).nextSibling; + return isLikeNone(ret) ? 0 : addHeapObject(ret); + }; + imports.wbg.__wbg_textContent_77bd294928962f93 = function(arg0, arg1) { + const ret = getObject(arg1).textContent; + var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len0 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len0; + getInt32Memory0()[arg0 / 4 + 0] = ptr0; + }; + imports.wbg.__wbg_settextContent_538ceb17614272d8 = function(arg0, arg1, arg2) { + var v0 = getCachedStringFromWasm0(arg1, arg2); + getObject(arg0).textContent = v0; + }; + imports.wbg.__wbg_appendChild_e513ef0e5098dfdd = function() { return handleError(function (arg0, arg1) { + const ret = getObject(arg0).appendChild(getObject(arg1)); + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_insertBefore_9f2d2defb9471006 = function() { return handleError(function (arg0, arg1, arg2) { + const ret = getObject(arg0).insertBefore(getObject(arg1), getObject(arg2)); + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_removeChild_6751e9ca5d9aaf00 = function() { return handleError(function (arg0, arg1) { + const ret = getObject(arg0).removeChild(getObject(arg1)); + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_replaceChild_4793d6269c04dd25 = function() { return handleError(function (arg0, arg1, arg2) { + const ret = getObject(arg0).replaceChild(getObject(arg1), getObject(arg2)); + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbindgen_is_undefined = function(arg0) { + const ret = getObject(arg0) === undefined; + return ret; + }; + imports.wbg.__wbindgen_number_get = function(arg0, arg1) { + const obj = getObject(arg1); + const ret = typeof(obj) === 'number' ? obj : undefined; + getFloat64Memory0()[arg0 / 8 + 1] = isLikeNone(ret) ? 0 : ret; + getInt32Memory0()[arg0 / 4 + 0] = !isLikeNone(ret); + }; + imports.wbg.__wbindgen_error_new = function(arg0, arg1) { + const ret = new Error(getStringFromWasm0(arg0, arg1)); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_jsval_loose_eq = function(arg0, arg1) { + const ret = getObject(arg0) == getObject(arg1); + return ret; + }; + imports.wbg.__wbindgen_cb_drop = function(arg0) { + const obj = takeObject(arg0).original; + if (obj.cnt-- == 1) { + obj.a = 0; + return true; + } + const ret = false; + return ret; + }; + imports.wbg.__wbg_instanceof_ArrayBuffer_e5e48f4762c5610b = function(arg0) { + let result; + try { + result = getObject(arg0) instanceof ArrayBuffer; + } catch { + result = false; + } + const ret = result; + return ret; + }; + imports.wbg.__wbg_newnoargs_b5b063fc6c2f0376 = function(arg0, arg1) { + var v0 = getCachedStringFromWasm0(arg0, arg1); + const ret = new Function(v0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_call_97ae9d8645dc388b = function() { return handleError(function (arg0, arg1) { + const ret = getObject(arg0).call(getObject(arg1)); + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_is_40a66842732708e7 = function(arg0, arg1) { + const ret = Object.is(getObject(arg0), getObject(arg1)); + return ret; + }; + imports.wbg.__wbg_toString_7be108a12ef03bc2 = function(arg0) { + const ret = getObject(arg0).toString(); + return addHeapObject(ret); + }; + imports.wbg.__wbg_resolve_99fe17964f31ffc0 = function(arg0) { + const ret = Promise.resolve(getObject(arg0)); + return addHeapObject(ret); + }; + imports.wbg.__wbg_then_11f7a54d67b4bfad = function(arg0, arg1) { + const ret = getObject(arg0).then(getObject(arg1)); + return addHeapObject(ret); + }; + imports.wbg.__wbg_then_cedad20fbbd9418a = function(arg0, arg1, arg2) { + const ret = getObject(arg0).then(getObject(arg1), getObject(arg2)); + return addHeapObject(ret); + }; + imports.wbg.__wbg_globalThis_7f206bda628d5286 = function() { return handleError(function () { + const ret = globalThis.globalThis; + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_self_6d479506f72c6a71 = function() { return handleError(function () { + const ret = self.self; + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_window_f2557cc78490aceb = function() { return handleError(function () { + const ret = window.window; + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_global_ba75c50d1cf384f4 = function() { return handleError(function () { + const ret = global.global; + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_instanceof_Uint8Array_971eeda69eb75003 = function(arg0) { + let result; + try { + result = getObject(arg0) instanceof Uint8Array; + } catch { + result = false; + } + const ret = result; + return ret; + }; + imports.wbg.__wbg_new_8c3f0052272a457a = function(arg0) { + const ret = new Uint8Array(getObject(arg0)); + return addHeapObject(ret); + }; + imports.wbg.__wbg_length_9e1ae1900cb0fbd5 = function(arg0) { + const ret = getObject(arg0).length; + return ret; + }; + imports.wbg.__wbg_set_83db9690f9353e79 = function(arg0, arg1, arg2) { + getObject(arg0).set(getObject(arg1), arg2 >>> 0); + }; + imports.wbg.__wbg_buffer_3f3d764d4747d564 = function(arg0) { + const ret = getObject(arg0).buffer; + return addHeapObject(ret); + }; + imports.wbg.__wbg_error_f851667af71bcfc6 = function(arg0, arg1) { + var v0 = getCachedStringFromWasm0(arg0, arg1); + if (arg0 !== 0) { wasm.__wbindgen_free(arg0, arg1); } + console.error(v0); +}; +imports.wbg.__wbg_new_abda76e883ba8a5f = function() { + const ret = new Error(); + return addHeapObject(ret); +}; +imports.wbg.__wbg_stack_658279fe44541cf6 = function(arg0, arg1) { + const ret = getObject(arg1).stack; + const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len0; + getInt32Memory0()[arg0 / 4 + 0] = ptr0; +}; +imports.wbg.__wbindgen_debug_string = function(arg0, arg1) { + const ret = debugString(getObject(arg1)); + const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len0; + getInt32Memory0()[arg0 / 4 + 0] = ptr0; +}; +imports.wbg.__wbindgen_object_drop_ref = function(arg0) { + takeObject(arg0); +}; +imports.wbg.__wbindgen_throw = function(arg0, arg1) { + throw new Error(getStringFromWasm0(arg0, arg1)); +}; +imports.wbg.__wbindgen_memory = function() { + const ret = wasm.memory; + return addHeapObject(ret); +}; +imports.wbg.__wbindgen_closure_wrapper5822 = function(arg0, arg1, arg2) { + const ret = makeMutClosure(arg0, arg1, 295, __wbg_adapter_28); + return addHeapObject(ret); +}; + +return imports; +} + +function initMemory(imports, maybe_memory) { + +} + +function finalizeInit(instance, module) { + wasm = instance.exports; + init.__wbindgen_wasm_module = module; + cachedFloat64Memory0 = new Float64Array(); + cachedInt32Memory0 = new Int32Array(); + cachedUint8Memory0 = new Uint8Array(); + + wasm.__wbindgen_start(); + return wasm; +} + +function initSync(module) { + const imports = getImports(); + + initMemory(imports); + + if (!(module instanceof WebAssembly.Module)) { + module = new WebAssembly.Module(module); + } + + const instance = new WebAssembly.Instance(module, imports); + + return finalizeInit(instance, module); +} + +async function init(input) { + if (typeof input === 'undefined') { + input = new URL('tauri-sys-test-ui-3eb704384493bbf2_bg.wasm', import.meta.url); + } + const imports = getImports(); + + if (typeof input === 'string' || (typeof Request === 'function' && input instanceof Request) || (typeof URL === 'function' && input instanceof URL)) { + input = fetch(input); + } + + initMemory(imports); + + const { instance, module } = await load(await input, imports); + + return finalizeInit(instance, module); +} + +export { initSync } +export default init; diff --git a/examples/test/dist/tauri-sys-test-ui-3eb704384493bbf2_bg.wasm b/examples/test/dist/tauri-sys-test-ui-3eb704384493bbf2_bg.wasm new file mode 100644 index 0000000000000000000000000000000000000000..f24c56af065b98743781d7da34eb1811ba19eaf7 GIT binary patch literal 1678833 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 z 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%0A_dGxn#jv)C-Ua>L|$=dbt3tJCi3&j3YyCuC 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

94_3Y&k;~-lCf# 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

ir!Yvr<2L`ig_7cN-4v2UUoZE}l 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

7yG4%)Io5Vxv%u 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 + + + + Tauri + Yew App + + diff --git a/examples/api/src-tauri/.gitignore b/examples/test/src-tauri/.gitignore similarity index 100% rename from examples/api/src-tauri/.gitignore rename to examples/test/src-tauri/.gitignore diff --git a/examples/api/src-tauri/Cargo.toml b/examples/test/src-tauri/Cargo.toml similarity index 76% rename from examples/api/src-tauri/Cargo.toml rename to examples/test/src-tauri/Cargo.toml index ee6ef6f..74230c6 100644 --- a/examples/api/src-tauri/Cargo.toml +++ b/examples/test/src-tauri/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "tauri-app" +name = "tauri-sys-test" version = "0.0.0" description = "A Tauri App" authors = ["you"] @@ -11,13 +11,12 @@ rust-version = "1.57" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [build-dependencies] -tauri-build = { git = "https://github.com/tauri-apps/tauri", features = [] } +tauri-build = { version = "1.1", features = [] } [dependencies] serde_json = "1.0" serde = { version = "1.0", features = ["derive"] } -tauri = { git = "https://github.com/tauri-apps/tauri", features = ["api-all"] } -shared = { path = "../shared" } +tauri = { version = "1.1", features = ["api-all"] } [features] # by default Tauri runs in production mode diff --git a/examples/api/src-tauri/build.rs b/examples/test/src-tauri/build.rs similarity index 100% rename from examples/api/src-tauri/build.rs rename to examples/test/src-tauri/build.rs diff --git a/examples/test/src-tauri/ci.tauri.conf.json b/examples/test/src-tauri/ci.tauri.conf.json new file mode 100644 index 0000000..b23a6dd --- /dev/null +++ b/examples/test/src-tauri/ci.tauri.conf.json @@ -0,0 +1,6 @@ +{ + "build": { + "beforeDevCommand": "trunk serve --features ci", + "beforeBuildCommand": "trunk build --release --features ci" + } +} diff --git a/examples/api/src-tauri/icons/128x128.png b/examples/test/src-tauri/icons/128x128.png similarity index 100% rename from examples/api/src-tauri/icons/128x128.png rename to examples/test/src-tauri/icons/128x128.png diff --git a/examples/api/src-tauri/icons/128x128@2x.png b/examples/test/src-tauri/icons/128x128@2x.png similarity index 100% rename from examples/api/src-tauri/icons/128x128@2x.png rename to examples/test/src-tauri/icons/128x128@2x.png diff --git a/examples/api/src-tauri/icons/32x32.png b/examples/test/src-tauri/icons/32x32.png similarity index 100% rename from examples/api/src-tauri/icons/32x32.png rename to examples/test/src-tauri/icons/32x32.png diff --git a/examples/api/src-tauri/icons/Square107x107Logo.png b/examples/test/src-tauri/icons/Square107x107Logo.png similarity index 100% rename from examples/api/src-tauri/icons/Square107x107Logo.png rename to examples/test/src-tauri/icons/Square107x107Logo.png diff --git a/examples/api/src-tauri/icons/Square142x142Logo.png b/examples/test/src-tauri/icons/Square142x142Logo.png similarity index 100% rename from examples/api/src-tauri/icons/Square142x142Logo.png rename to examples/test/src-tauri/icons/Square142x142Logo.png diff --git a/examples/api/src-tauri/icons/Square150x150Logo.png b/examples/test/src-tauri/icons/Square150x150Logo.png similarity index 100% rename from examples/api/src-tauri/icons/Square150x150Logo.png rename to examples/test/src-tauri/icons/Square150x150Logo.png diff --git a/examples/api/src-tauri/icons/Square284x284Logo.png b/examples/test/src-tauri/icons/Square284x284Logo.png similarity index 100% rename from examples/api/src-tauri/icons/Square284x284Logo.png rename to examples/test/src-tauri/icons/Square284x284Logo.png diff --git a/examples/api/src-tauri/icons/Square30x30Logo.png b/examples/test/src-tauri/icons/Square30x30Logo.png similarity index 100% rename from examples/api/src-tauri/icons/Square30x30Logo.png rename to examples/test/src-tauri/icons/Square30x30Logo.png diff --git a/examples/api/src-tauri/icons/Square310x310Logo.png b/examples/test/src-tauri/icons/Square310x310Logo.png similarity index 100% rename from examples/api/src-tauri/icons/Square310x310Logo.png rename to examples/test/src-tauri/icons/Square310x310Logo.png diff --git a/examples/api/src-tauri/icons/Square44x44Logo.png b/examples/test/src-tauri/icons/Square44x44Logo.png similarity index 100% rename from examples/api/src-tauri/icons/Square44x44Logo.png rename to examples/test/src-tauri/icons/Square44x44Logo.png diff --git a/examples/api/src-tauri/icons/Square71x71Logo.png b/examples/test/src-tauri/icons/Square71x71Logo.png similarity index 100% rename from examples/api/src-tauri/icons/Square71x71Logo.png rename to examples/test/src-tauri/icons/Square71x71Logo.png diff --git a/examples/api/src-tauri/icons/Square89x89Logo.png b/examples/test/src-tauri/icons/Square89x89Logo.png similarity index 100% rename from examples/api/src-tauri/icons/Square89x89Logo.png rename to examples/test/src-tauri/icons/Square89x89Logo.png diff --git a/examples/api/src-tauri/icons/StoreLogo.png b/examples/test/src-tauri/icons/StoreLogo.png similarity index 100% rename from examples/api/src-tauri/icons/StoreLogo.png rename to examples/test/src-tauri/icons/StoreLogo.png diff --git a/examples/api/src-tauri/icons/icon.icns b/examples/test/src-tauri/icons/icon.icns similarity index 100% rename from examples/api/src-tauri/icons/icon.icns rename to examples/test/src-tauri/icons/icon.icns diff --git a/examples/api/src-tauri/icons/icon.ico b/examples/test/src-tauri/icons/icon.ico similarity index 100% rename from examples/api/src-tauri/icons/icon.ico rename to examples/test/src-tauri/icons/icon.ico diff --git a/examples/api/src-tauri/icons/icon.png b/examples/test/src-tauri/icons/icon.png similarity index 100% rename from examples/api/src-tauri/icons/icon.png rename to examples/test/src-tauri/icons/icon.png diff --git a/examples/test/src-tauri/src/main.rs b/examples/test/src-tauri/src/main.rs new file mode 100644 index 0000000..d367b50 --- /dev/null +++ b/examples/test/src-tauri/src/main.rs @@ -0,0 +1,38 @@ +#![cfg_attr( + all(not(debug_assertions), target_os = "windows"), + windows_subsystem = "windows" +)] + +use std::sync::atomic::{AtomicBool, Ordering}; + +use tauri::{State, Manager}; + +struct Received(AtomicBool); +// Learn more about Tauri commands at https://tauri.app/v1/guides/features/command +#[tauri::command] +fn verify_receive(emitted: State) -> bool { + emitted.0.load(Ordering::Relaxed) +} + +#[tauri::command] +fn exit_with_error(e: &str) -> bool { + eprintln!("{}", e); + std::process::exit(1); +} + +fn main() { + tauri::Builder::default() + .invoke_handler(tauri::generate_handler![verify_receive, exit_with_error]) + .setup(|app| { + app.manage(Received(AtomicBool::new(false))); + + let app_handle = app.handle(); + app.listen_global("foo", move |_| { + app_handle.state::().0.store(true, Ordering::Relaxed); + }); + + Ok(()) + }) + .run(tauri::generate_context!()) + .expect("error while running tauri application"); +} diff --git a/examples/api/src-tauri/tauri.conf.json b/examples/test/src-tauri/tauri.conf.json similarity index 97% rename from examples/api/src-tauri/tauri.conf.json rename to examples/test/src-tauri/tauri.conf.json index 15e818e..63dd763 100644 --- a/examples/api/src-tauri/tauri.conf.json +++ b/examples/test/src-tauri/tauri.conf.json @@ -7,7 +7,7 @@ "withGlobalTauri": true }, "package": { - "productName": "tauri-app", + "productName": "tauri-sys-test", "version": "0.0.0" }, "tauri": { diff --git a/examples/test/src/app.rs b/examples/test/src/app.rs new file mode 100644 index 0000000..7ce0760 --- /dev/null +++ b/examples/test/src/app.rs @@ -0,0 +1,34 @@ +use anyhow::ensure; +use tauri_sys::app; + +pub async fn get_name() -> anyhow::Result<()> { + let name = app::get_name().await; + + ensure!(name == "tauri-sys-test"); + + Ok(()) +} + +pub async fn get_version() -> anyhow::Result<()> { + let version = app::get_version().await; + + ensure!(version.major == 0); + ensure!(version.minor == 0); + ensure!(version.patch == 0); + ensure!(version.build.is_empty()); + ensure!(version.pre.is_empty()); + + Ok(()) +} + +pub async fn get_tauri_version() -> anyhow::Result<()> { + let version = app::get_tauri_version().await; + + ensure!(version.major == 1); + ensure!(version.minor == 1); + ensure!(version.patch == 1); + ensure!(version.build.is_empty()); + ensure!(version.pre.is_empty()); + + Ok(()) +} \ No newline at end of file diff --git a/examples/test/src/clipboard.rs b/examples/test/src/clipboard.rs new file mode 100644 index 0000000..e84c521 --- /dev/null +++ b/examples/test/src/clipboard.rs @@ -0,0 +1,12 @@ +use anyhow::ensure; +use tauri_sys::clipboard; + +pub async fn test() -> anyhow::Result<()> { + clipboard::write_text("foobar").await; + + let text = clipboard::read_text().await; + + ensure!(text == Some("foobar".to_string())); + + Ok(()) +} \ No newline at end of file diff --git a/examples/test/src/event.rs b/examples/test/src/event.rs new file mode 100644 index 0000000..7c207a4 --- /dev/null +++ b/examples/test/src/event.rs @@ -0,0 +1,10 @@ +use anyhow::ensure; +use tauri_sys::{event, tauri}; + +pub async fn emit() -> anyhow::Result<()> { + event::emit("foo", &"bar").await; + + ensure!(tauri::invoke::<_, bool>("verify_receive", &()).await.unwrap()); + + Ok(()) +} \ No newline at end of file diff --git a/examples/test/src/main.rs b/examples/test/src/main.rs new file mode 100644 index 0000000..83aed19 --- /dev/null +++ b/examples/test/src/main.rs @@ -0,0 +1,86 @@ +mod app; +mod clipboard; +mod event; +mod window; + +extern crate console_error_panic_hook; +use std::future::Future; +use std::panic; +use sycamore::prelude::*; +use sycamore::suspense::Suspense; + +#[cfg(feature = "ci")] +async fn exit_with_error(e: String) { + use serde::Serialize; + + #[derive(Serialize)] + struct Args { + e: String, + } + + tauri_sys::tauri::invoke::<_, ()>("exit_with_error", &Args { e }).await.unwrap(); +} + +#[derive(Props)] +pub struct TestProps<'a, F> +where + F: Future> + 'a, +{ + name: &'a str, + test: F, +} + +#[component] +pub async fn Test<'a, G: Html, F>(cx: Scope<'a>, props: TestProps<'a, F>) -> View +where + F: Future> + 'a, +{ + let res = props.test.await; + + view! { cx, + tr { + td { code { (props.name.to_string()) } } + td { (if let Err(e) = &res { + #[cfg(feature = "ci")] + { + wasm_bindgen_futures::spawn_local(exit_with_error(e.to_string())); + unreachable!() + } + #[cfg(not(feature = "ci"))] + format!("❌ {:?}", e) + } else { + format!("✅") + }) + } + } + } +} + +fn main() { + panic::set_hook(Box::new(|info| { + console_error_panic_hook::hook(info); + + #[cfg(feature = "ci")] + wasm_bindgen_futures::spawn_local(exit_with_error(format!("{}", info))); + })); + + sycamore::render(|cx| { + view! { cx, + table { + tbody { + Suspense(fallback=view!{ cx, "Running Tests..." }) { + Test(name="app::get_name",test=app::get_name()) + Test(name="app::get_version",test=app::get_version()) + Test(name="app::get_tauri_version",test=app::get_tauri_version()) + Test(name="clipboard::read_text | clipboard::write_text",test=clipboard::test()) + Test(name="event::emit",test=event::emit()) + // Test(name="window::WebviewWindow::new",test=window::create_window()) + } + } + } + } + }); + + #[cfg(feature = "ci")] + tauri_sys::process::exit(0); +} diff --git a/examples/test/src/window.rs b/examples/test/src/window.rs new file mode 100644 index 0000000..0954ea5 --- /dev/null +++ b/examples/test/src/window.rs @@ -0,0 +1,13 @@ +use anyhow::ensure; +use tauri_sys::window; + +pub async fn create_window() -> anyhow::Result<()> { + let win = window::WebviewWindow::new("foo", ()); + + ensure!(win.is_visible().await); + // ensure!(win.label() == "foo".to_string()); + + win.close().await; + + Ok(()) +} \ No newline at end of file diff --git a/src/lib.rs b/src/lib.rs index 20d4fbd..f65d708 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -10,6 +10,10 @@ pub mod event; pub mod mocks; #[cfg(feature = "tauri")] pub mod tauri; +#[cfg(feature = "window")] +pub mod window; +#[cfg(feature = "process")] +pub mod process; #[derive(Debug, thiserror::Error)] pub enum Error { diff --git a/src/process.rs b/src/process.rs new file mode 100644 index 0000000..0a725d7 --- /dev/null +++ b/src/process.rs @@ -0,0 +1,18 @@ +pub fn exit(exit_code: u32) -> ! { + inner::exit(exit_code); + unreachable!() +} + +pub fn relaunch() { + inner::relaunch(); +} + +mod inner { + use wasm_bindgen::prelude::wasm_bindgen; + + #[wasm_bindgen(module = "/dist/process.js")] + extern "C" { + pub fn exit(exitCode: u32); + pub fn relaunch(); + } +} diff --git a/src/window.rs b/src/window.rs new file mode 100644 index 0000000..3bec133 --- /dev/null +++ b/src/window.rs @@ -0,0 +1,750 @@ +use crate::event::Event; +use serde::{de::DeserializeOwned, Serialize}; +use std::fmt::Display; +use wasm_bindgen::{prelude::Closure, JsCast, JsValue}; + +#[derive(Debug, Clone, PartialEq)] +pub enum Theme { + Light, + Dark, +} + +#[derive(Debug, Clone, PartialEq)] +pub enum TitleBarStyle { + Visible, + Transparent, + Overlay, +} + +#[derive(Debug, Clone, PartialEq)] +pub enum UserAttentionType { + Critical = 1, + Informational, +} + +#[derive(Debug, Clone, PartialEq)] +pub enum Position { + Physical(PhysicalPosition), + Logical(LogicalPosition), +} + +#[derive(Debug, Clone, PartialEq)] +pub enum Size { + Physical(PhysicalSize), + Logical(LogicalSize), +} + +#[derive(Debug, Clone, PartialEq)] +pub enum CursorIcon { + Default, + Crosshair, + Hand, + Arrow, + Move, + Text, + Wait, + Help, + Progress, + // something cannot be done + NotAllowed, + ContextMenu, + Cell, + VerticalText, + Alias, + Copy, + NoDrop, + // something can be grabbed + Grab, + /// something is grabbed + Grabbing, + AllScroll, + ZoomIn, + ZoomOut, + // edge is to be moved + EResize, + NResize, + NeResize, + NwResize, + SResize, + SeResize, + SwResize, + WResize, + EwResize, + NsResize, + NeswResize, + NwseResize, + ColResize, + RowResize, +} + +impl Display for CursorIcon { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match self { + CursorIcon::Default => write!(f, "default"), + CursorIcon::Crosshair => write!(f, "crosshair"), + CursorIcon::Hand => write!(f, "hand"), + CursorIcon::Arrow => write!(f, "arrow"), + CursorIcon::Move => write!(f, "move"), + CursorIcon::Text => write!(f, "text"), + CursorIcon::Wait => write!(f, "wait"), + CursorIcon::Help => write!(f, "help"), + CursorIcon::Progress => write!(f, "progress"), + CursorIcon::NotAllowed => write!(f, "notAllowed"), + CursorIcon::ContextMenu => write!(f, "contextMenu"), + CursorIcon::Cell => write!(f, "cell"), + CursorIcon::VerticalText => write!(f, "verticalText"), + CursorIcon::Alias => write!(f, "alias"), + CursorIcon::Copy => write!(f, "copy"), + CursorIcon::NoDrop => write!(f, "noDrop"), + CursorIcon::Grab => write!(f, "grab"), + CursorIcon::Grabbing => write!(f, "grabbing"), + CursorIcon::AllScroll => write!(f, "allScroll"), + CursorIcon::ZoomIn => write!(f, "zoomIn"), + CursorIcon::ZoomOut => write!(f, "zoomOut"), + CursorIcon::EResize => write!(f, "eResize"), + CursorIcon::NResize => write!(f, "nResize"), + CursorIcon::NeResize => write!(f, "neResize"), + CursorIcon::NwResize => write!(f, "nwResize"), + CursorIcon::SResize => write!(f, "sResize"), + CursorIcon::SeResize => write!(f, "seResize"), + CursorIcon::SwResize => write!(f, "swResize"), + CursorIcon::WResize => write!(f, "wResize"), + CursorIcon::EwResize => write!(f, "ewResize"), + CursorIcon::NsResize => write!(f, "nsResize"), + CursorIcon::NeswResize => write!(f, "neswResize"), + CursorIcon::NwseResize => write!(f, "nwseResize"), + CursorIcon::ColResize => write!(f, "colResize"), + CursorIcon::RowResize => write!(f, "rowResize"), + } + } +} + +#[derive(Debug, Clone, PartialEq)] +pub struct WebviewWindow(inner::WebviewWindow); + +impl WebviewWindow { + pub fn new(label: &str, options: ()) -> Self { + Self(inner::WebviewWindow::new(label, options)) + } + + pub fn get_by_label(label: &str) -> Option { + inner::WebviewWindow::getByLabel(label).map(Self) + } + + pub fn label(&self) -> String { + self.0.label() + } + + pub async fn scale_factor(&self) -> f64 { + self.0.scaleFactor().await.as_f64().unwrap() + } + + pub async fn inner_position(&self) -> PhysicalPosition { + PhysicalPosition(self.0.innerPosition().await.unchecked_into()) + } + + pub async fn outer_position(&self) -> PhysicalPosition { + PhysicalPosition(self.0.outerPosition().await.unchecked_into()) + } + + pub async fn inner_size(&self) -> PhysicalSize { + PhysicalSize(self.0.innerSize().await.unchecked_into()) + } + + pub async fn outer_size(&self) -> PhysicalSize { + PhysicalSize(self.0.outerSize().await.unchecked_into()) + } + + pub async fn is_fullscreen(&self) -> bool { + self.0.isFullscreen().await.as_bool().unwrap() + } + + pub async fn is_maximized(&self) -> bool { + self.0.isMaximized().await.as_bool().unwrap() + } + + pub async fn is_decorated(&self) -> bool { + self.0.isDecorated().await.as_bool().unwrap() + } + + pub async fn is_resizable(&self) -> bool { + self.0.isResizable().await.as_bool().unwrap() + } + + pub async fn is_visible(&self) -> bool { + self.0.isVisible().await.as_bool().unwrap() + } + + pub async fn theme(&self) -> Theme { + match self.0.theme().await.as_string().unwrap().as_str() { + "light" => Theme::Light, + "dark" => Theme::Dark, + _ => panic!("Unknown theme"), + } + } + + pub async fn center(&self) { + self.0.center().await; + } + + pub async fn request_user_attention(&self, request_type: UserAttentionType) { + self.0.requestUserAttention(request_type as u32).await; + } + + pub async fn set_resizable(&self, resizable: bool) { + self.0.setResizable(resizable).await; + } + + pub async fn set_title(&self, title: impl AsRef) { + self.0.setTitle(title.as_ref()).await; + } + + pub async fn maximize(&self) { + self.0.maximize().await; + } + + pub async fn unmaximize(&self) { + self.0.unmaximize().await; + } + + pub async fn toggle_maximize(&self) { + self.0.toggleMaximize().await; + } + + pub async fn minimize(&self) { + self.0.minimize().await; + } + + pub async fn unminimize(&self) { + self.0.unminimize().await; + } + + pub async fn show(&self) { + self.0.show().await; + } + + pub async fn hide(&self) { + self.0.hide().await; + } + + pub async fn close(&self) { + self.0.close().await; + } + + pub async fn set_decorations(&self, decorations: bool) { + self.0.setDecorations(decorations).await; + } + + pub async fn set_always_on_top(&self, always_on_top: bool) { + self.0.setAlwaysOnTop(always_on_top).await; + } + + pub async fn set_size(&self, size: Size) { + match size { + Size::Physical(size) => self.0.setSizePhysical(size.0).await, + Size::Logical(size) => self.0.setSizeLogical(size.0).await, + }; + } + + pub async fn set_min_size(&self, size: Option) { + match size { + None => self.0.setMinSizePhysical(None).await, + Some(Size::Physical(size)) => self.0.setMinSizePhysical(Some(size.0)).await, + Some(Size::Logical(size)) => self.0.setMinSizeLogical(Some(size.0)).await, + } + } + + pub async fn set_max_size(&self, size: Option) { + match size { + None => self.0.setMaxSizePhysical(None).await, + Some(Size::Physical(size)) => self.0.setMaxSizePhysical(Some(size.0)).await, + Some(Size::Logical(size)) => self.0.setMaxSizeLogical(Some(size.0)).await, + } + } + + pub async fn set_position(&self, position: Position) { + match position { + Position::Physical(pos) => self.0.setPositionPhysical(pos.0).await, + Position::Logical(pos) => self.0.setPositionLogical(pos.0).await, + } + } + + pub async fn set_fullscreen(&self, fullscreen: bool) { + self.0.setFullscreen(fullscreen).await; + } + + pub async fn set_focus(&self) { + self.0.setFocus().await; + } + + pub async fn set_icon(&self, icon: &[u8]) { + self.0.setIcon(icon).await; + } + + pub async fn set_skip_taskbar(&self, skip: bool) { + self.0.setSkipTaskbar(skip).await; + } + + pub async fn set_cursor_grab(&self, grab: bool) { + self.0.setCursorGrab(grab).await; + } + + pub async fn set_cursor_visible(&self, visible: bool) { + self.0.setCursorVisible(visible).await; + } + + pub async fn set_cursor_icon(&self, icon: CursorIcon) { + self.0.setCursorIcon(&icon.to_string()).await; + } + + pub async fn set_cursor_position(&self, position: Position) { + match position { + Position::Physical(pos) => self.0.setCursorPositionPhysical(pos.0).await, + Position::Logical(pos) => self.0.setCursorPositionLogical(pos.0).await, + } + } + + pub async fn set_ignore_cursor_events(&self, ignore: bool) { + self.0.setIgnoreCursorEvents(ignore).await; + } + + pub async fn start_dragging(&self) { + self.0.startDragging().await; + } + + #[inline(always)] + pub async fn emit(&self, event: &str, payload: &T) { + self.0 + .emit(event, serde_wasm_bindgen::to_value(payload).unwrap()) + .await; + } + + #[inline(always)] + pub async fn listen(&self, event: &str, mut handler: H) -> impl FnOnce() + where + T: DeserializeOwned, + H: FnMut(Event) + 'static, + { + let closure = Closure::::new(move |raw| { + (handler)(serde_wasm_bindgen::from_value(raw).unwrap()) + }); + + let unlisten = self.0.listen(event, &closure).await; + + closure.forget(); + + let unlisten = js_sys::Function::from(unlisten); + move || { + unlisten.call0(&wasm_bindgen::JsValue::NULL).unwrap(); + } + } + + #[inline(always)] + pub async fn once(&self, event: &str, mut handler: H) -> impl FnOnce() + where + T: DeserializeOwned, + H: FnMut(Event) + 'static, + { + let closure = Closure::::new(move |raw| { + (handler)(serde_wasm_bindgen::from_value(raw).unwrap()) + }); + + let unlisten = self.0.once(event, &closure).await; + + closure.forget(); + + let unlisten = js_sys::Function::from(unlisten); + move || { + unlisten.call0(&wasm_bindgen::JsValue::NULL).unwrap(); + } + } +} + +#[derive(Debug, Clone, PartialEq)] +pub struct LogicalPosition(inner::LogicalPosition); + +impl LogicalPosition { + pub fn new(x: u32, y: u32) -> Self { + Self(inner::LogicalPosition::new(x, y)) + } + + pub fn x(&self) -> u32 { + self.0.x() + } + pub fn set_x(&self, x: u32) { + self.0.set_x(x) + } + pub fn y(&self) -> u32 { + self.0.y() + } + pub fn set_y(&self, y: u32) { + self.0.set_y(y) + } +} + +#[derive(Debug, Clone, PartialEq)] +pub struct PhysicalPosition(inner::PhysicalPosition); + +impl PhysicalPosition { + pub fn new(x: u32, y: u32) -> Self { + Self(inner::PhysicalPosition::new(x, y)) + } + + pub fn to_logical(self, scale_factor: u32) -> LogicalPosition { + LogicalPosition(self.0.toLogical(scale_factor)) + } + + pub fn x(&self) -> u32 { + self.0.x() + } + pub fn set_x(&self, x: u32) { + self.0.set_x(x) + } + pub fn y(&self) -> u32 { + self.0.y() + } + pub fn set_y(&self, y: u32) { + self.0.set_y(y) + } +} + +#[derive(Debug, Clone, PartialEq)] +pub struct LogicalSize(inner::LogicalSize); + +impl LogicalSize { + pub fn new(x: u32, y: u32) -> Self { + Self(inner::LogicalSize::new(x, y)) + } + + pub fn width(&self) -> u32 { + self.0.width() + } + pub fn set_width(&self, x: u32) { + self.0.set_width(x) + } + pub fn height(&self) -> u32 { + self.0.height() + } + pub fn set_height(&self, y: u32) { + self.0.set_height(y) + } +} + +#[derive(Debug, Clone, PartialEq)] +pub struct PhysicalSize(inner::PhysicalSize); + +impl PhysicalSize { + pub fn new(x: u32, y: u32) -> Self { + Self(inner::PhysicalSize::new(x, y)) + } + + pub fn to_logical(self, scale_factor: u32) -> LogicalSize { + LogicalSize(self.0.toLogical(scale_factor)) + } + + pub fn width(&self) -> u32 { + self.0.width() + } + pub fn set_width(&self, x: u32) { + self.0.set_width(x) + } + pub fn height(&self) -> u32 { + self.0.height() + } + pub fn set_height(&self, y: u32) { + self.0.set_height(y) + } +} + +#[derive(Debug, Clone, PartialEq)] +pub struct Monitor(JsValue); + +impl Monitor { + pub fn name(&self) -> Option { + let raw = js_sys::Reflect::get(&self.0, &JsValue::from_str("name")).unwrap(); + + raw.as_string() + } + + pub fn size(&self) -> PhysicalSize { + let raw = js_sys::Reflect::get(&self.0, &JsValue::from_str("size")).unwrap(); + + PhysicalSize(raw.unchecked_into()) + } + + pub fn position(&self) -> PhysicalPosition { + let raw = js_sys::Reflect::get(&self.0, &JsValue::from_str("position")).unwrap(); + + PhysicalPosition(raw.unchecked_into()) + } + + pub fn scale_factor(&self) -> u32 { + let raw = js_sys::Reflect::get(&self.0, &JsValue::from_str("size")) + .unwrap() + .as_f64() + .unwrap(); + + raw as u32 + } +} + +pub fn current_window() -> WebviewWindow { + WebviewWindow(inner::getCurrent()) +} + +pub fn all_windows() -> Vec { + inner::getAll().into_iter().map(WebviewWindow).collect() +} + +pub async fn current_monitor() -> Monitor { + Monitor(inner::currentMonitor().await) +} +pub async fn primary_monitor() -> Monitor { + Monitor(inner::primaryMonitor().await) +} + +#[derive(Debug, Clone)] +pub struct AvailableMonitors { + idx: u32, + array: js_sys::Array, +} + +impl Iterator for AvailableMonitors { + type Item = Monitor; + + fn next(&mut self) -> Option { + let raw = self.array.get(self.idx); + + if raw.is_undefined() { + None + } else { + let monitor = Monitor(raw); + self.idx += 1; + + Some(monitor) + } + } +} + +pub async fn available_monitors() -> AvailableMonitors { + AvailableMonitors { + idx: 0, + array: inner::availableMonitors().await.unchecked_into() + } +} + +mod inner { + use wasm_bindgen::{ + prelude::{wasm_bindgen, Closure}, + JsValue, + }; + + #[wasm_bindgen(module = "/dist/window.js")] + extern "C" { + #[derive(Debug, Clone, PartialEq)] + pub type LogicalPosition; + #[wasm_bindgen(constructor)] + pub fn new(x: u32, y: u32) -> LogicalPosition; + #[wasm_bindgen(method, getter)] + pub fn x(this: &LogicalPosition) -> u32; + #[wasm_bindgen(method, setter)] + pub fn set_x(this: &LogicalPosition, x: u32); + #[wasm_bindgen(method, getter)] + pub fn y(this: &LogicalPosition) -> u32; + #[wasm_bindgen(method, setter)] + pub fn set_y(this: &LogicalPosition, y: u32); + } + + #[wasm_bindgen(module = "/dist/window.js")] + extern "C" { + #[derive(Debug, Clone, PartialEq)] + pub type PhysicalPosition; + #[wasm_bindgen(constructor)] + pub fn new(x: u32, y: u32) -> PhysicalPosition; + #[wasm_bindgen(method)] + pub fn toLogical(this: &PhysicalPosition, scaleFactor: u32) -> LogicalPosition; + #[wasm_bindgen(method, getter)] + pub fn x(this: &PhysicalPosition) -> u32; + #[wasm_bindgen(method, setter)] + pub fn set_x(this: &PhysicalPosition, x: u32); + #[wasm_bindgen(method, getter)] + pub fn y(this: &PhysicalPosition) -> u32; + #[wasm_bindgen(method, setter)] + pub fn set_y(this: &PhysicalPosition, y: u32); + } + + #[wasm_bindgen(module = "/dist/window.js")] + extern "C" { + #[derive(Debug, Clone, PartialEq)] + pub type LogicalSize; + #[wasm_bindgen(constructor)] + pub fn new(width: u32, height: u32) -> LogicalSize; + #[wasm_bindgen(method, getter)] + pub fn width(this: &LogicalSize) -> u32; + #[wasm_bindgen(method, setter)] + pub fn set_width(this: &LogicalSize, width: u32); + #[wasm_bindgen(method, getter)] + pub fn height(this: &LogicalSize) -> u32; + #[wasm_bindgen(method, setter)] + pub fn set_height(this: &LogicalSize, height: u32); + } + + #[wasm_bindgen(module = "/dist/window.js")] + extern "C" { + #[derive(Debug, Clone, PartialEq)] + pub type PhysicalSize; + #[wasm_bindgen(constructor)] + pub fn new(width: u32, height: u32) -> PhysicalSize; + #[wasm_bindgen(method)] + pub fn toLogical(this: &PhysicalSize, scaleFactor: u32) -> LogicalSize; + #[wasm_bindgen(method, getter)] + pub fn width(this: &PhysicalSize) -> u32; + #[wasm_bindgen(method, setter)] + pub fn set_width(this: &PhysicalSize, width: u32); + #[wasm_bindgen(method, getter)] + pub fn height(this: &PhysicalSize) -> u32; + #[wasm_bindgen(method, setter)] + pub fn set_height(this: &PhysicalSize, height: u32); + } + + #[wasm_bindgen(module = "/dist/window.js")] + extern "C" { + #[derive(Debug, Clone, PartialEq)] + pub type WebviewWindowHandle; + #[wasm_bindgen(constructor)] + pub fn new(label: &str) -> WebviewWindowHandle; + #[wasm_bindgen(method)] + pub async fn listen( + this: &WebviewWindowHandle, + event: &str, + handler: &Closure, + ) -> JsValue; + #[wasm_bindgen(method)] + pub async fn once( + this: &WebviewWindowHandle, + event: &str, + handler: &Closure, + ) -> JsValue; + #[wasm_bindgen(method)] + pub async fn emit(this: &WebviewWindowHandle, event: &str, payload: JsValue); + } + + #[wasm_bindgen(module = "/dist/window.js")] + extern "C" { + #[wasm_bindgen(extends = WebviewWindowHandle)] + #[derive(Debug, Clone, PartialEq)] + pub type WindowManager; + #[wasm_bindgen(constructor)] + pub fn new(label: &str) -> WindowManager; + #[wasm_bindgen(method, getter)] + pub fn label(this: &WindowManager) -> String; + #[wasm_bindgen(method)] + pub async fn scaleFactor(this: &WindowManager) -> JsValue; + #[wasm_bindgen(method)] + pub async fn innerPosition(this: &WindowManager) -> JsValue; + #[wasm_bindgen(method)] + pub async fn outerPosition(this: &WindowManager) -> JsValue; + #[wasm_bindgen(method)] + pub async fn innerSize(this: &WindowManager) -> JsValue; + #[wasm_bindgen(method)] + pub async fn outerSize(this: &WindowManager) -> JsValue; + #[wasm_bindgen(method)] + pub async fn isFullscreen(this: &WindowManager) -> JsValue; + #[wasm_bindgen(method)] + pub async fn isMaximized(this: &WindowManager) -> JsValue; + #[wasm_bindgen(method)] + pub async fn isDecorated(this: &WindowManager) -> JsValue; + #[wasm_bindgen(method)] + pub async fn isResizable(this: &WindowManager) -> JsValue; + #[wasm_bindgen(method)] + pub async fn isVisible(this: &WindowManager) -> JsValue; + #[wasm_bindgen(method)] + pub async fn theme(this: &WindowManager) -> JsValue; + #[wasm_bindgen(method)] + pub async fn center(this: &WindowManager); + #[wasm_bindgen(method)] + pub async fn requestUserAttention(this: &WindowManager, requestType: u32); + #[wasm_bindgen(method)] + pub async fn setResizable(this: &WindowManager, resizable: bool); + #[wasm_bindgen(method)] + pub async fn setTitle(this: &WindowManager, title: &str); + #[wasm_bindgen(method)] + pub async fn maximize(this: &WindowManager); + #[wasm_bindgen(method)] + pub async fn unmaximize(this: &WindowManager); + #[wasm_bindgen(method)] + pub async fn toggleMaximize(this: &WindowManager); + #[wasm_bindgen(method)] + pub async fn minimize(this: &WindowManager); + #[wasm_bindgen(method)] + pub async fn unminimize(this: &WindowManager); + #[wasm_bindgen(method)] + pub async fn show(this: &WindowManager); + #[wasm_bindgen(method)] + pub async fn hide(this: &WindowManager); + #[wasm_bindgen(method)] + pub async fn close(this: &WindowManager); + #[wasm_bindgen(method)] + pub async fn setDecorations(this: &WindowManager, decorations: bool); + #[wasm_bindgen(method)] + pub async fn setAlwaysOnTop(this: &WindowManager, alwaysOnTop: bool); + #[wasm_bindgen(method, js_name = setSize)] + pub async fn setSizePhysical(this: &WindowManager, size: PhysicalSize); + #[wasm_bindgen(method, js_name = setSize)] + pub async fn setSizeLogical(this: &WindowManager, size: LogicalSize); + #[wasm_bindgen(method, js_name = setMinSize)] + pub async fn setMinSizePhysical(this: &WindowManager, size: Option); + #[wasm_bindgen(method, js_name = setMinSize)] + pub async fn setMinSizeLogical(this: &WindowManager, size: Option); + #[wasm_bindgen(method, js_name = setMaxSize)] + pub async fn setMaxSizePhysical(this: &WindowManager, size: Option); + #[wasm_bindgen(method, js_name = setMinSize)] + pub async fn setMaxSizeLogical(this: &WindowManager, size: Option); + #[wasm_bindgen(method, js_name = setPosition)] + pub async fn setPositionPhysical(this: &WindowManager, position: PhysicalPosition); + #[wasm_bindgen(method, js_name = setPosition)] + pub async fn setPositionLogical(this: &WindowManager, position: LogicalPosition); + #[wasm_bindgen(method)] + pub async fn setFullscreen(this: &WindowManager, fullscreen: bool); + #[wasm_bindgen(method)] + pub async fn setFocus(this: &WindowManager); + #[wasm_bindgen(method)] + pub async fn setIcon(this: &WindowManager, icon: &[u8]); + #[wasm_bindgen(method)] + pub async fn setSkipTaskbar(this: &WindowManager, skip: bool); + #[wasm_bindgen(method)] + pub async fn setCursorGrab(this: &WindowManager, grab: bool); + #[wasm_bindgen(method)] + pub async fn setCursorVisible(this: &WindowManager, visible: bool); + #[wasm_bindgen(method)] + pub async fn setCursorIcon(this: &WindowManager, icon: &str); + #[wasm_bindgen(method, js_name = setCursorPosition)] + pub async fn setCursorPositionPhysical(this: &WindowManager, position: PhysicalPosition); + #[wasm_bindgen(method, js_name = setCursorPosition)] + pub async fn setCursorPositionLogical(this: &WindowManager, position: LogicalPosition); + #[wasm_bindgen(method)] + pub async fn setIgnoreCursorEvents(this: &WindowManager, ignore: bool); + #[wasm_bindgen(method)] + pub async fn startDragging(this: &WindowManager); + } + + #[wasm_bindgen(module = "/dist/window.js")] + extern "C" { + #[wasm_bindgen(extends = WindowManager)] + #[derive(Debug, Clone, PartialEq)] + pub type WebviewWindow; + #[wasm_bindgen(constructor)] + pub fn new(label: &str, options: ()) -> WebviewWindow; + #[wasm_bindgen(static_method_of = WebviewWindow)] + pub fn getByLabel(label: &str) -> Option; + } + + #[wasm_bindgen(module = "/dist/window.js")] + extern "C" { + pub fn getCurrent() -> WebviewWindow; + pub fn getAll() -> Vec; + pub async fn currentMonitor() -> JsValue; + pub async fn primaryMonitor() -> JsValue; + pub async fn availableMonitors() -> JsValue; + } +} From 23eb82a2e80e2cb893168a8dd47dde402dfebe0b Mon Sep 17 00:00:00 2001 From: Jonas Kruckenberg Date: Thu, 3 Nov 2022 19:00:25 +0100 Subject: [PATCH 02/29] Update test.yml --- .github/workflows/test.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 31e73b2..e44bc0c 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1,6 +1,7 @@ name: Test -push: +on: + push: branches: - main paths: From 15c932a745a1b9da164c73a1cff6b5c0004fa333 Mon Sep 17 00:00:00 2001 From: Jonas Kruckenberg Date: Thu, 3 Nov 2022 19:02:57 +0100 Subject: [PATCH 03/29] Update test.yml --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index e44bc0c..cab3af4 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -40,4 +40,4 @@ jobs: - name: Run test app run: | cd examples/test - cargo tauri dev --exit-on-panic --config ./src-tauri/ci.tauri.conf.json \ No newline at end of file + cargo-tauri dev --exit-on-panic --config ./src-tauri/ci.tauri.conf.json \ No newline at end of file From 0ad0cddd4826b60f3c5db3bc658f9a1a21632cbf Mon Sep 17 00:00:00 2001 From: Jonas Kruckenberg Date: Thu, 3 Nov 2022 19:06:06 +0100 Subject: [PATCH 04/29] Update test.yml --- .github/workflows/test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index cab3af4..de534db 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -36,8 +36,8 @@ jobs: run: | sudo apt-get update sudo apt-get install -y webkit2gtk-4.0 - wget -qO- https://github.com/tauri-apps/tauri/releases/download/cli.rs-v1.1.1/cargo-tauri-x86_64-unknown-linux-gnu.tgz | tar -xzf- - name: Run test app run: | cd examples/test - cargo-tauri dev --exit-on-panic --config ./src-tauri/ci.tauri.conf.json \ No newline at end of file + wget -qO- https://github.com/tauri-apps/tauri/releases/download/cli.rs-v1.1.1/cargo-tauri-x86_64-unknown-linux-gnu.tgz | tar -xzf- + ./cargo-tauri dev --exit-on-panic --config ./src-tauri/ci.tauri.conf.json \ No newline at end of file From db9337730c502306b3fc7dd59714c4c4dc1c7090 Mon Sep 17 00:00:00 2001 From: Jonas Kruckenberg Date: Thu, 3 Nov 2022 19:07:47 +0100 Subject: [PATCH 05/29] Update test.yml --- .github/workflows/test.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index de534db..7794a50 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -40,4 +40,6 @@ jobs: run: | cd examples/test wget -qO- https://github.com/tauri-apps/tauri/releases/download/cli.rs-v1.1.1/cargo-tauri-x86_64-unknown-linux-gnu.tgz | tar -xzf- + wget -qO- https://github.com/thedodd/trunk/releases/download/0.16.0/trunk-x86_64-unknown-linux-gnu.tar.gz | tar -xzf- + export CARGO_UNSTABLE_SPARSE_REGISTRY=true ./cargo-tauri dev --exit-on-panic --config ./src-tauri/ci.tauri.conf.json \ No newline at end of file From 00da1971e7c30a7ab6ba2bf2fffb2d09a634d0b1 Mon Sep 17 00:00:00 2001 From: Jonas Kruckenberg Date: Thu, 3 Nov 2022 19:10:23 +0100 Subject: [PATCH 06/29] Update test.yml --- .github/workflows/test.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 7794a50..20008ca 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -36,10 +36,16 @@ jobs: run: | sudo apt-get update sudo apt-get install -y webkit2gtk-4.0 - - name: Run test app + - name: Install Tauri CLI run: | cd examples/test wget -qO- https://github.com/tauri-apps/tauri/releases/download/cli.rs-v1.1.1/cargo-tauri-x86_64-unknown-linux-gnu.tgz | tar -xzf- + - name: Install Trunk + run: | + cd examples/test wget -qO- https://github.com/thedodd/trunk/releases/download/0.16.0/trunk-x86_64-unknown-linux-gnu.tar.gz | tar -xzf- + - name: Run test app + run: | + cd examples/test export CARGO_UNSTABLE_SPARSE_REGISTRY=true ./cargo-tauri dev --exit-on-panic --config ./src-tauri/ci.tauri.conf.json \ No newline at end of file From 6dca2bc6f2f1bb473f518c4e324a960bd985edb3 Mon Sep 17 00:00:00 2001 From: Jonas Kruckenberg Date: Fri, 4 Nov 2022 11:50:34 +0100 Subject: [PATCH 07/29] Update test.yml --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 20008ca..c16a651 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -43,7 +43,7 @@ jobs: - name: Install Trunk run: | cd examples/test - wget -qO- https://github.com/thedodd/trunk/releases/download/0.16.0/trunk-x86_64-unknown-linux-gnu.tar.gz | tar -xzf- + wget -qO- https://github.com/thedodd/trunk/releases/download/v0.16.0/trunk-x86_64-unknown-linux-gnu.tar.gz | tar -xzf- - name: Run test app run: | cd examples/test From bb60ce841415ba03bf1d393ea8ba9f9c870fae65 Mon Sep 17 00:00:00 2001 From: Jonas Kruckenberg Date: Fri, 4 Nov 2022 12:02:09 +0100 Subject: [PATCH 08/29] Update test.yml --- .github/workflows/test.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c16a651..fe92b44 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -39,13 +39,13 @@ jobs: - name: Install Tauri CLI run: | cd examples/test - wget -qO- https://github.com/tauri-apps/tauri/releases/download/cli.rs-v1.1.1/cargo-tauri-x86_64-unknown-linux-gnu.tgz | tar -xzf- + wget -qO- https://github.com/tauri-apps/tauri/releases/download/cli.rs-v1.1.1/cargo-tauri-x86_64-unknown-linux-gnu.tgz | tar -xzf- -C ~/.cargo/bin - name: Install Trunk run: | cd examples/test - wget -qO- https://github.com/thedodd/trunk/releases/download/v0.16.0/trunk-x86_64-unknown-linux-gnu.tar.gz | tar -xzf- + wget -qO- https://github.com/thedodd/trunk/releases/download/v0.16.0/trunk-x86_64-unknown-linux-gnu.tar.gz | tar -xzf- -C ~/.cargo/bin - name: Run test app run: | cd examples/test export CARGO_UNSTABLE_SPARSE_REGISTRY=true - ./cargo-tauri dev --exit-on-panic --config ./src-tauri/ci.tauri.conf.json \ No newline at end of file + cargo tauri dev --exit-on-panic --config ./src-tauri/ci.tauri.conf.json \ No newline at end of file From 20442c1f433170d3d2bd9eb2fcb9cf2e324f5cf7 Mon Sep 17 00:00:00 2001 From: Jonas Kruckenberg Date: Fri, 4 Nov 2022 12:24:22 +0100 Subject: [PATCH 09/29] Update test.yml --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index fe92b44..4fb03d3 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -48,4 +48,4 @@ jobs: run: | cd examples/test export CARGO_UNSTABLE_SPARSE_REGISTRY=true - cargo tauri dev --exit-on-panic --config ./src-tauri/ci.tauri.conf.json \ No newline at end of file + xvfb-run cargo tauri dev --exit-on-panic --config ./src-tauri/ci.tauri.conf.json From c9fa93de725bd65d30b5608591a10444a04e371f Mon Sep 17 00:00:00 2001 From: Jonas Kruckenberg Date: Sun, 13 Nov 2022 21:05:51 +0100 Subject: [PATCH 10/29] remove build script --- build.rs | 33 - package.json | 15 + pnpm-lock.yaml | 237 ++++ {dist => src}/app.js | 0 src/cli.js | 55 + {dist => src}/clipboard.js | 0 src/dialog.js | 111 ++ {dist => src}/event.js | 0 src/fs.js | 243 ++++ src/globalShortcut.js | 97 ++ src/http.js | 207 ++++ src/index.js | 2402 ++++++++++++++++++++++++++++++++++++ {dist => src}/mocks.js | 0 src/notification.js | 70 ++ src/os.js | 98 ++ src/path.js | 418 +++++++ {dist => src}/process.js | 0 src/shell.js | 230 ++++ {dist => src}/tauri.js | 0 src/updater.js | 185 +++ {dist => src}/window.js | 0 21 files changed, 4368 insertions(+), 33 deletions(-) delete mode 100644 build.rs create mode 100644 package.json create mode 100644 pnpm-lock.yaml rename {dist => src}/app.js (100%) create mode 100644 src/cli.js rename {dist => src}/clipboard.js (100%) create mode 100644 src/dialog.js rename {dist => src}/event.js (100%) create mode 100644 src/fs.js create mode 100644 src/globalShortcut.js create mode 100644 src/http.js create mode 100644 src/index.js rename {dist => src}/mocks.js (100%) create mode 100644 src/notification.js create mode 100644 src/os.js create mode 100644 src/path.js rename {dist => src}/process.js (100%) create mode 100644 src/shell.js rename {dist => src}/tauri.js (100%) create mode 100644 src/updater.js rename {dist => src}/window.js (100%) diff --git a/build.rs b/build.rs deleted file mode 100644 index e8baf46..0000000 --- a/build.rs +++ /dev/null @@ -1,33 +0,0 @@ -use std::process::Command; - -fn main() { - /* Shared arguments */ - let sargs: &[&str] = &[ - "--outdir=dist", - "--format=esm", - "--bundle", - "tauri/tooling/api/src/app.ts", - "tauri/tooling/api/src/clipboard.ts", - "tauri/tooling/api/src/tauri.ts", - "tauri/tooling/api/src/event.ts", - "tauri/tooling/api/src/mocks.ts", - "tauri/tooling/api/src/window.ts", - "tauri/tooling/api/src/process.ts" - ]; - - if cfg!(windows) { - /* Use cmd if the target is windows */ - Command::new("cmd") - .args(&["/C", "esbuild"]) - .args(sargs) - .output() - .unwrap(); - } else if cfg!(unix) { - Command::new("esbuild") - .args(sargs) - .output() - .unwrap(); - } else { - panic!("Unsupported build target"); - } -} diff --git a/package.json b/package.json new file mode 100644 index 0000000..b99b41c --- /dev/null +++ b/package.json @@ -0,0 +1,15 @@ +{ + "name": "tauri-sys", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "build": "esbuild --outdir=src --format=esm --bundle tauri/tooling/api/src/*.ts" + }, + "keywords": [], + "author": "", + "license": "ISC", + "devDependencies": { + "esbuild": "^0.15.13" + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..fbedf0f --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,237 @@ +lockfileVersion: 5.4 + +specifiers: + esbuild: ^0.15.13 + +devDependencies: + esbuild: 0.15.13 + +packages: + + /@esbuild/android-arm/0.15.13: + resolution: {integrity: sha512-RY2fVI8O0iFUNvZirXaQ1vMvK0xhCcl0gqRj74Z6yEiO1zAUa7hbsdwZM1kzqbxHK7LFyMizipfXT3JME+12Hw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64/0.15.13: + resolution: {integrity: sha512-+BoyIm4I8uJmH/QDIH0fu7MG0AEx9OXEDXnqptXCwKOlOqZiS4iraH1Nr7/ObLMokW3sOCeBNyD68ATcV9b9Ag==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-android-64/0.15.13: + resolution: {integrity: sha512-yRorukXBlokwTip+Sy4MYskLhJsO0Kn0/Fj43s1krVblfwP+hMD37a4Wmg139GEsMLl+vh8WXp2mq/cTA9J97g==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /esbuild-android-arm64/0.15.13: + resolution: {integrity: sha512-TKzyymLD6PiVeyYa4c5wdPw87BeAiTXNtK6amWUcXZxkV51gOk5u5qzmDaYSwiWeecSNHamFsaFjLoi32QR5/w==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /esbuild-darwin-64/0.15.13: + resolution: {integrity: sha512-WAx7c2DaOS6CrRcoYCgXgkXDliLnFv3pQLV6GeW1YcGEZq2Gnl8s9Pg7ahValZkpOa0iE/ojRVQ87sbUhF1Cbg==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /esbuild-darwin-arm64/0.15.13: + resolution: {integrity: sha512-U6jFsPfSSxC3V1CLiQqwvDuj3GGrtQNB3P3nNC3+q99EKf94UGpsG9l4CQ83zBs1NHrk1rtCSYT0+KfK5LsD8A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /esbuild-freebsd-64/0.15.13: + resolution: {integrity: sha512-whItJgDiOXaDG/idy75qqevIpZjnReZkMGCgQaBWZuKHoElDJC1rh7MpoUgupMcdfOd+PgdEwNQW9DAE6i8wyA==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-freebsd-arm64/0.15.13: + resolution: {integrity: sha512-6pCSWt8mLUbPtygv7cufV0sZLeylaMwS5Fznj6Rsx9G2AJJsAjQ9ifA+0rQEIg7DwJmi9it+WjzNTEAzzdoM3Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-32/0.15.13: + resolution: {integrity: sha512-VbZdWOEdrJiYApm2kkxoTOgsoCO1krBZ3quHdYk3g3ivWaMwNIVPIfEE0f0XQQ0u5pJtBsnk2/7OPiCFIPOe/w==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-64/0.15.13: + resolution: {integrity: sha512-rXmnArVNio6yANSqDQlIO4WiP+Cv7+9EuAHNnag7rByAqFVuRusLbGi2697A5dFPNXoO//IiogVwi3AdcfPC6A==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-arm/0.15.13: + resolution: {integrity: sha512-Ac6LpfmJO8WhCMQmO253xX2IU2B3wPDbl4IvR0hnqcPrdfCaUa2j/lLMGTjmQ4W5JsJIdHEdW12dG8lFS0MbxQ==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-arm64/0.15.13: + resolution: {integrity: sha512-alEMGU4Z+d17U7KQQw2IV8tQycO6T+rOrgW8OS22Ua25x6kHxoG6Ngry6Aq6uranC+pNWNMB6aHFPh7aTQdORQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-mips64le/0.15.13: + resolution: {integrity: sha512-47PgmyYEu+yN5rD/MbwS6DxP2FSGPo4Uxg5LwIdxTiyGC2XKwHhHyW7YYEDlSuXLQXEdTO7mYe8zQ74czP7W8A==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-ppc64le/0.15.13: + resolution: {integrity: sha512-z6n28h2+PC1Ayle9DjKoBRcx/4cxHoOa2e689e2aDJSaKug3jXcQw7mM+GLg+9ydYoNzj8QxNL8ihOv/OnezhA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-riscv64/0.15.13: + resolution: {integrity: sha512-+Lu4zuuXuQhgLUGyZloWCqTslcCAjMZH1k3Xc9MSEJEpEFdpsSU0sRDXAnk18FKOfEjhu4YMGaykx9xjtpA6ow==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-s390x/0.15.13: + resolution: {integrity: sha512-BMeXRljruf7J0TMxD5CIXS65y7puiZkAh+s4XFV9qy16SxOuMhxhVIXYLnbdfLrsYGFzx7U9mcdpFWkkvy/Uag==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-netbsd-64/0.15.13: + resolution: {integrity: sha512-EHj9QZOTel581JPj7UO3xYbltFTYnHy+SIqJVq6yd3KkCrsHRbapiPb0Lx3EOOtybBEE9EyqbmfW1NlSDsSzvQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-openbsd-64/0.15.13: + resolution: {integrity: sha512-nkuDlIjF/sfUhfx8SKq0+U+Fgx5K9JcPq1mUodnxI0x4kBdCv46rOGWbuJ6eof2n3wdoCLccOoJAbg9ba/bT2w==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-sunos-64/0.15.13: + resolution: {integrity: sha512-jVeu2GfxZQ++6lRdY43CS0Tm/r4WuQQ0Pdsrxbw+aOrHQPHV0+LNOLnvbN28M7BSUGnJnHkHm2HozGgNGyeIRw==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-32/0.15.13: + resolution: {integrity: sha512-XoF2iBf0wnqo16SDq+aDGi/+QbaLFpkiRarPVssMh9KYbFNCqPLlGAWwDvxEVz+ywX6Si37J2AKm+AXq1kC0JA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-64/0.15.13: + resolution: {integrity: sha512-Et6htEfGycjDrtqb2ng6nT+baesZPYQIW+HUEHK4D1ncggNrDNk3yoboYQ5KtiVrw/JaDMNttz8rrPubV/fvPQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-arm64/0.15.13: + resolution: {integrity: sha512-3bv7tqntThQC9SWLRouMDmZnlOukBhOCTlkzNqzGCmrkCJI7io5LLjwJBOVY6kOUlIvdxbooNZwjtBvj+7uuVg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild/0.15.13: + resolution: {integrity: sha512-Cu3SC84oyzzhrK/YyN4iEVy2jZu5t2fz66HEOShHURcjSkOSAVL8C/gfUT+lDJxkVHpg8GZ10DD0rMHRPqMFaQ==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.15.13 + '@esbuild/linux-loong64': 0.15.13 + esbuild-android-64: 0.15.13 + esbuild-android-arm64: 0.15.13 + esbuild-darwin-64: 0.15.13 + esbuild-darwin-arm64: 0.15.13 + esbuild-freebsd-64: 0.15.13 + esbuild-freebsd-arm64: 0.15.13 + esbuild-linux-32: 0.15.13 + esbuild-linux-64: 0.15.13 + esbuild-linux-arm: 0.15.13 + esbuild-linux-arm64: 0.15.13 + esbuild-linux-mips64le: 0.15.13 + esbuild-linux-ppc64le: 0.15.13 + esbuild-linux-riscv64: 0.15.13 + esbuild-linux-s390x: 0.15.13 + esbuild-netbsd-64: 0.15.13 + esbuild-openbsd-64: 0.15.13 + esbuild-sunos-64: 0.15.13 + esbuild-windows-32: 0.15.13 + esbuild-windows-64: 0.15.13 + esbuild-windows-arm64: 0.15.13 + dev: true diff --git a/dist/app.js b/src/app.js similarity index 100% rename from dist/app.js rename to src/app.js diff --git a/src/cli.js b/src/cli.js new file mode 100644 index 0000000..8829347 --- /dev/null +++ b/src/cli.js @@ -0,0 +1,55 @@ +// tauri/tooling/api/src/tauri.ts +function uid() { + return window.crypto.getRandomValues(new Uint32Array(1))[0]; +} +function transformCallback(callback, once = false) { + const identifier = uid(); + const prop = `_${identifier}`; + Object.defineProperty(window, prop, { + value: (result) => { + if (once) { + Reflect.deleteProperty(window, prop); + } + return callback?.(result); + }, + writable: false, + configurable: true + }); + return identifier; +} +async function invoke(cmd, args = {}) { + return new Promise((resolve, reject) => { + const callback = transformCallback((e) => { + resolve(e); + Reflect.deleteProperty(window, `_${error}`); + }, true); + const error = transformCallback((e) => { + reject(e); + Reflect.deleteProperty(window, `_${callback}`); + }, true); + window.__TAURI_IPC__({ + cmd, + callback, + error, + ...args + }); + }); +} + +// tauri/tooling/api/src/helpers/tauri.ts +async function invokeTauriCommand(command) { + return invoke("tauri", command); +} + +// tauri/tooling/api/src/cli.ts +async function getMatches() { + return invokeTauriCommand({ + __tauriModule: "Cli", + message: { + cmd: "cliMatches" + } + }); +} +export { + getMatches +}; diff --git a/dist/clipboard.js b/src/clipboard.js similarity index 100% rename from dist/clipboard.js rename to src/clipboard.js diff --git a/src/dialog.js b/src/dialog.js new file mode 100644 index 0000000..53811e1 --- /dev/null +++ b/src/dialog.js @@ -0,0 +1,111 @@ +// tauri/tooling/api/src/tauri.ts +function uid() { + return window.crypto.getRandomValues(new Uint32Array(1))[0]; +} +function transformCallback(callback, once = false) { + const identifier = uid(); + const prop = `_${identifier}`; + Object.defineProperty(window, prop, { + value: (result) => { + if (once) { + Reflect.deleteProperty(window, prop); + } + return callback?.(result); + }, + writable: false, + configurable: true + }); + return identifier; +} +async function invoke(cmd, args = {}) { + return new Promise((resolve, reject) => { + const callback = transformCallback((e) => { + resolve(e); + Reflect.deleteProperty(window, `_${error}`); + }, true); + const error = transformCallback((e) => { + reject(e); + Reflect.deleteProperty(window, `_${callback}`); + }, true); + window.__TAURI_IPC__({ + cmd, + callback, + error, + ...args + }); + }); +} + +// tauri/tooling/api/src/helpers/tauri.ts +async function invokeTauriCommand(command) { + return invoke("tauri", command); +} + +// tauri/tooling/api/src/dialog.ts +async function open(options = {}) { + if (typeof options === "object") { + Object.freeze(options); + } + return invokeTauriCommand({ + __tauriModule: "Dialog", + message: { + cmd: "openDialog", + options + } + }); +} +async function save(options = {}) { + if (typeof options === "object") { + Object.freeze(options); + } + return invokeTauriCommand({ + __tauriModule: "Dialog", + message: { + cmd: "saveDialog", + options + } + }); +} +async function message(message2, options) { + const opts = typeof options === "string" ? { title: options } : options; + return invokeTauriCommand({ + __tauriModule: "Dialog", + message: { + cmd: "messageDialog", + message: message2.toString(), + title: opts?.title?.toString(), + type: opts?.type + } + }); +} +async function ask(message2, options) { + const opts = typeof options === "string" ? { title: options } : options; + return invokeTauriCommand({ + __tauriModule: "Dialog", + message: { + cmd: "askDialog", + message: message2.toString(), + title: opts?.title?.toString(), + type: opts?.type + } + }); +} +async function confirm(message2, options) { + const opts = typeof options === "string" ? { title: options } : options; + return invokeTauriCommand({ + __tauriModule: "Dialog", + message: { + cmd: "confirmDialog", + message: message2.toString(), + title: opts?.title?.toString(), + type: opts?.type + } + }); +} +export { + ask, + confirm, + message, + open, + save +}; diff --git a/dist/event.js b/src/event.js similarity index 100% rename from dist/event.js rename to src/event.js diff --git a/src/fs.js b/src/fs.js new file mode 100644 index 0000000..8e223c3 --- /dev/null +++ b/src/fs.js @@ -0,0 +1,243 @@ +// tauri/tooling/api/src/tauri.ts +function uid() { + return window.crypto.getRandomValues(new Uint32Array(1))[0]; +} +function transformCallback(callback, once = false) { + const identifier = uid(); + const prop = `_${identifier}`; + Object.defineProperty(window, prop, { + value: (result) => { + if (once) { + Reflect.deleteProperty(window, prop); + } + return callback?.(result); + }, + writable: false, + configurable: true + }); + return identifier; +} +async function invoke(cmd, args = {}) { + return new Promise((resolve, reject) => { + const callback = transformCallback((e) => { + resolve(e); + Reflect.deleteProperty(window, `_${error}`); + }, true); + const error = transformCallback((e) => { + reject(e); + Reflect.deleteProperty(window, `_${callback}`); + }, true); + window.__TAURI_IPC__({ + cmd, + callback, + error, + ...args + }); + }); +} + +// tauri/tooling/api/src/helpers/tauri.ts +async function invokeTauriCommand(command) { + return invoke("tauri", command); +} + +// tauri/tooling/api/src/fs.ts +var BaseDirectory = /* @__PURE__ */ ((BaseDirectory2) => { + BaseDirectory2[BaseDirectory2["Audio"] = 1] = "Audio"; + BaseDirectory2[BaseDirectory2["Cache"] = 2] = "Cache"; + BaseDirectory2[BaseDirectory2["Config"] = 3] = "Config"; + BaseDirectory2[BaseDirectory2["Data"] = 4] = "Data"; + BaseDirectory2[BaseDirectory2["LocalData"] = 5] = "LocalData"; + BaseDirectory2[BaseDirectory2["Desktop"] = 6] = "Desktop"; + BaseDirectory2[BaseDirectory2["Document"] = 7] = "Document"; + BaseDirectory2[BaseDirectory2["Download"] = 8] = "Download"; + BaseDirectory2[BaseDirectory2["Executable"] = 9] = "Executable"; + BaseDirectory2[BaseDirectory2["Font"] = 10] = "Font"; + BaseDirectory2[BaseDirectory2["Home"] = 11] = "Home"; + BaseDirectory2[BaseDirectory2["Picture"] = 12] = "Picture"; + BaseDirectory2[BaseDirectory2["Public"] = 13] = "Public"; + BaseDirectory2[BaseDirectory2["Runtime"] = 14] = "Runtime"; + BaseDirectory2[BaseDirectory2["Template"] = 15] = "Template"; + BaseDirectory2[BaseDirectory2["Video"] = 16] = "Video"; + BaseDirectory2[BaseDirectory2["Resource"] = 17] = "Resource"; + BaseDirectory2[BaseDirectory2["App"] = 18] = "App"; + BaseDirectory2[BaseDirectory2["Log"] = 19] = "Log"; + BaseDirectory2[BaseDirectory2["Temp"] = 20] = "Temp"; + BaseDirectory2[BaseDirectory2["AppConfig"] = 21] = "AppConfig"; + BaseDirectory2[BaseDirectory2["AppData"] = 22] = "AppData"; + BaseDirectory2[BaseDirectory2["AppLocalData"] = 23] = "AppLocalData"; + BaseDirectory2[BaseDirectory2["AppCache"] = 24] = "AppCache"; + BaseDirectory2[BaseDirectory2["AppLog"] = 25] = "AppLog"; + return BaseDirectory2; +})(BaseDirectory || {}); +async function readTextFile(filePath, options = {}) { + return invokeTauriCommand({ + __tauriModule: "Fs", + message: { + cmd: "readTextFile", + path: filePath, + options + } + }); +} +async function readBinaryFile(filePath, options = {}) { + const arr = await invokeTauriCommand({ + __tauriModule: "Fs", + message: { + cmd: "readFile", + path: filePath, + options + } + }); + return Uint8Array.from(arr); +} +async function writeTextFile(path, contents, options) { + if (typeof options === "object") { + Object.freeze(options); + } + if (typeof path === "object") { + Object.freeze(path); + } + const file = { path: "", contents: "" }; + let fileOptions = options; + if (typeof path === "string") { + file.path = path; + } else { + file.path = path.path; + file.contents = path.contents; + } + if (typeof contents === "string") { + file.contents = contents ?? ""; + } else { + fileOptions = contents; + } + return invokeTauriCommand({ + __tauriModule: "Fs", + message: { + cmd: "writeFile", + path: file.path, + contents: Array.from(new TextEncoder().encode(file.contents)), + options: fileOptions + } + }); +} +async function writeBinaryFile(path, contents, options) { + if (typeof options === "object") { + Object.freeze(options); + } + if (typeof path === "object") { + Object.freeze(path); + } + const file = { path: "", contents: [] }; + let fileOptions = options; + if (typeof path === "string") { + file.path = path; + } else { + file.path = path.path; + file.contents = path.contents; + } + if (contents && "dir" in contents) { + fileOptions = contents; + } else if (typeof path === "string") { + file.contents = contents ?? []; + } + return invokeTauriCommand({ + __tauriModule: "Fs", + message: { + cmd: "writeFile", + path: file.path, + contents: Array.from( + file.contents instanceof ArrayBuffer ? new Uint8Array(file.contents) : file.contents + ), + options: fileOptions + } + }); +} +async function readDir(dir, options = {}) { + return invokeTauriCommand({ + __tauriModule: "Fs", + message: { + cmd: "readDir", + path: dir, + options + } + }); +} +async function createDir(dir, options = {}) { + return invokeTauriCommand({ + __tauriModule: "Fs", + message: { + cmd: "createDir", + path: dir, + options + } + }); +} +async function removeDir(dir, options = {}) { + return invokeTauriCommand({ + __tauriModule: "Fs", + message: { + cmd: "removeDir", + path: dir, + options + } + }); +} +async function copyFile(source, destination, options = {}) { + return invokeTauriCommand({ + __tauriModule: "Fs", + message: { + cmd: "copyFile", + source, + destination, + options + } + }); +} +async function removeFile(file, options = {}) { + return invokeTauriCommand({ + __tauriModule: "Fs", + message: { + cmd: "removeFile", + path: file, + options + } + }); +} +async function renameFile(oldPath, newPath, options = {}) { + return invokeTauriCommand({ + __tauriModule: "Fs", + message: { + cmd: "renameFile", + oldPath, + newPath, + options + } + }); +} +async function exists(path, options = {}) { + return invokeTauriCommand({ + __tauriModule: "Fs", + message: { + cmd: "exists", + path, + options + } + }); +} +export { + BaseDirectory, + BaseDirectory as Dir, + copyFile, + createDir, + exists, + readBinaryFile, + readDir, + readTextFile, + removeDir, + removeFile, + renameFile, + writeBinaryFile, + writeTextFile as writeFile, + writeTextFile +}; diff --git a/src/globalShortcut.js b/src/globalShortcut.js new file mode 100644 index 0000000..0a6235f --- /dev/null +++ b/src/globalShortcut.js @@ -0,0 +1,97 @@ +// tauri/tooling/api/src/tauri.ts +function uid() { + return window.crypto.getRandomValues(new Uint32Array(1))[0]; +} +function transformCallback(callback, once = false) { + const identifier = uid(); + const prop = `_${identifier}`; + Object.defineProperty(window, prop, { + value: (result) => { + if (once) { + Reflect.deleteProperty(window, prop); + } + return callback?.(result); + }, + writable: false, + configurable: true + }); + return identifier; +} +async function invoke(cmd, args = {}) { + return new Promise((resolve, reject) => { + const callback = transformCallback((e) => { + resolve(e); + Reflect.deleteProperty(window, `_${error}`); + }, true); + const error = transformCallback((e) => { + reject(e); + Reflect.deleteProperty(window, `_${callback}`); + }, true); + window.__TAURI_IPC__({ + cmd, + callback, + error, + ...args + }); + }); +} + +// tauri/tooling/api/src/helpers/tauri.ts +async function invokeTauriCommand(command) { + return invoke("tauri", command); +} + +// tauri/tooling/api/src/globalShortcut.ts +async function register(shortcut, handler) { + return invokeTauriCommand({ + __tauriModule: "GlobalShortcut", + message: { + cmd: "register", + shortcut, + handler: transformCallback(handler) + } + }); +} +async function registerAll(shortcuts, handler) { + return invokeTauriCommand({ + __tauriModule: "GlobalShortcut", + message: { + cmd: "registerAll", + shortcuts, + handler: transformCallback(handler) + } + }); +} +async function isRegistered(shortcut) { + return invokeTauriCommand({ + __tauriModule: "GlobalShortcut", + message: { + cmd: "isRegistered", + shortcut + } + }); +} +async function unregister(shortcut) { + return invokeTauriCommand({ + __tauriModule: "GlobalShortcut", + message: { + cmd: "unregister", + shortcut + } + }); +} +async function unregisterAll() { + return invokeTauriCommand({ + __tauriModule: "GlobalShortcut", + message: { + cmd: "unregisterAll" + } + }); +} +export { + isRegistered, + register, + registerAll, + unregister, + unregisterAll +}; diff --git a/src/http.js b/src/http.js new file mode 100644 index 0000000..7147405 --- /dev/null +++ b/src/http.js @@ -0,0 +1,207 @@ +// tauri/tooling/api/src/tauri.ts +function uid() { + return window.crypto.getRandomValues(new Uint32Array(1))[0]; +} +function transformCallback(callback, once = false) { + const identifier = uid(); + const prop = `_${identifier}`; + Object.defineProperty(window, prop, { + value: (result) => { + if (once) { + Reflect.deleteProperty(window, prop); + } + return callback?.(result); + }, + writable: false, + configurable: true + }); + return identifier; +} +async function invoke(cmd, args = {}) { + return new Promise((resolve, reject) => { + const callback = transformCallback((e) => { + resolve(e); + Reflect.deleteProperty(window, `_${error}`); + }, true); + const error = transformCallback((e) => { + reject(e); + Reflect.deleteProperty(window, `_${callback}`); + }, true); + window.__TAURI_IPC__({ + cmd, + callback, + error, + ...args + }); + }); +} + +// tauri/tooling/api/src/helpers/tauri.ts +async function invokeTauriCommand(command) { + return invoke("tauri", command); +} + +// tauri/tooling/api/src/http.ts +var ResponseType = /* @__PURE__ */ ((ResponseType2) => { + ResponseType2[ResponseType2["JSON"] = 1] = "JSON"; + ResponseType2[ResponseType2["Text"] = 2] = "Text"; + ResponseType2[ResponseType2["Binary"] = 3] = "Binary"; + return ResponseType2; +})(ResponseType || {}); +var Body = class { + constructor(type, payload) { + this.type = type; + this.payload = payload; + } + static form(data) { + const form = {}; + for (const key in data) { + const v = data[key]; + let r; + if (typeof v === "string") { + r = v; + } else if (v instanceof Uint8Array || Array.isArray(v)) { + r = Array.from(v); + } else if (typeof v.file === "string") { + r = { file: v.file, mime: v.mime, fileName: v.fileName }; + } else { + r = { file: Array.from(v.file), mime: v.mime, fileName: v.fileName }; + } + form[key] = r; + } + return new Body("Form", form); + } + static json(data) { + return new Body("Json", data); + } + static text(value) { + return new Body("Text", value); + } + static bytes(bytes) { + return new Body( + "Bytes", + Array.from(bytes instanceof ArrayBuffer ? new Uint8Array(bytes) : bytes) + ); + } +}; +var Response = class { + constructor(response) { + this.url = response.url; + this.status = response.status; + this.ok = this.status >= 200 && this.status < 300; + this.headers = response.headers; + this.rawHeaders = response.rawHeaders; + this.data = response.data; + } +}; +var Client = class { + constructor(id) { + this.id = id; + } + async drop() { + return invokeTauriCommand({ + __tauriModule: "Http", + message: { + cmd: "dropClient", + client: this.id + } + }); + } + async request(options) { + const jsonResponse = !options.responseType || options.responseType === 1 /* JSON */; + if (jsonResponse) { + options.responseType = 2 /* Text */; + } + return invokeTauriCommand({ + __tauriModule: "Http", + message: { + cmd: "httpRequest", + client: this.id, + options + } + }).then((res) => { + const response = new Response(res); + if (jsonResponse) { + try { + response.data = JSON.parse(response.data); + } catch (e) { + if (response.ok && response.data === "") { + response.data = {}; + } else if (response.ok) { + throw Error( + `Failed to parse response \`${response.data}\` as JSON: ${e}; + try setting the \`responseType\` option to \`ResponseType.Text\` or \`ResponseType.Binary\` if the API does not return a JSON response.` + ); + } + } + return response; + } + return response; + }); + } + async get(url, options) { + return this.request({ + method: "GET", + url, + ...options + }); + } + async post(url, body, options) { + return this.request({ + method: "POST", + url, + body, + ...options + }); + } + async put(url, body, options) { + return this.request({ + method: "PUT", + url, + body, + ...options + }); + } + async patch(url, options) { + return this.request({ + method: "PATCH", + url, + ...options + }); + } + async delete(url, options) { + return this.request({ + method: "DELETE", + url, + ...options + }); + } +}; +async function getClient(options) { + return invokeTauriCommand({ + __tauriModule: "Http", + message: { + cmd: "createClient", + options + } + }).then((id) => new Client(id)); +} +var defaultClient = null; +async function fetch(url, options) { + if (defaultClient === null) { + defaultClient = await getClient(); + } + return defaultClient.request({ + url, + method: options?.method ?? "GET", + ...options + }); +} +export { + Body, + Client, + Response, + ResponseType, + fetch, + getClient +}; diff --git a/src/index.js b/src/index.js new file mode 100644 index 0000000..211e255 --- /dev/null +++ b/src/index.js @@ -0,0 +1,2402 @@ +var __defProp = Object.defineProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; + +// tauri/tooling/api/src/app.ts +var app_exports = {}; +__export(app_exports, { + getName: () => getName, + getTauriVersion: () => getTauriVersion, + getVersion: () => getVersion, + hide: () => hide, + show: () => show +}); + +// tauri/tooling/api/src/tauri.ts +var tauri_exports = {}; +__export(tauri_exports, { + convertFileSrc: () => convertFileSrc, + invoke: () => invoke, + transformCallback: () => transformCallback +}); +function uid() { + return window.crypto.getRandomValues(new Uint32Array(1))[0]; +} +function transformCallback(callback, once3 = false) { + const identifier = uid(); + const prop = `_${identifier}`; + Object.defineProperty(window, prop, { + value: (result) => { + if (once3) { + Reflect.deleteProperty(window, prop); + } + return callback?.(result); + }, + writable: false, + configurable: true + }); + return identifier; +} +async function invoke(cmd, args = {}) { + return new Promise((resolve2, reject) => { + const callback = transformCallback((e) => { + resolve2(e); + Reflect.deleteProperty(window, `_${error}`); + }, true); + const error = transformCallback((e) => { + reject(e); + Reflect.deleteProperty(window, `_${callback}`); + }, true); + window.__TAURI_IPC__({ + cmd, + callback, + error, + ...args + }); + }); +} +function convertFileSrc(filePath, protocol = "asset") { + const path = encodeURIComponent(filePath); + return navigator.userAgent.includes("Windows") ? `https://${protocol}.localhost/${path}` : `${protocol}://localhost/${path}`; +} + +// tauri/tooling/api/src/helpers/tauri.ts +async function invokeTauriCommand(command) { + return invoke("tauri", command); +} + +// tauri/tooling/api/src/app.ts +async function getVersion() { + return invokeTauriCommand({ + __tauriModule: "App", + message: { + cmd: "getAppVersion" + } + }); +} +async function getName() { + return invokeTauriCommand({ + __tauriModule: "App", + message: { + cmd: "getAppName" + } + }); +} +async function getTauriVersion() { + return invokeTauriCommand({ + __tauriModule: "App", + message: { + cmd: "getTauriVersion" + } + }); +} +async function show() { + return invokeTauriCommand({ + __tauriModule: "App", + message: { + cmd: "show" + } + }); +} +async function hide() { + return invokeTauriCommand({ + __tauriModule: "App", + message: { + cmd: "hide" + } + }); +} + +// tauri/tooling/api/src/cli.ts +var cli_exports = {}; +__export(cli_exports, { + getMatches: () => getMatches +}); +async function getMatches() { + return invokeTauriCommand({ + __tauriModule: "Cli", + message: { + cmd: "cliMatches" + } + }); +} + +// tauri/tooling/api/src/clipboard.ts +var clipboard_exports = {}; +__export(clipboard_exports, { + readText: () => readText, + writeText: () => writeText +}); +async function writeText(text) { + return invokeTauriCommand({ + __tauriModule: "Clipboard", + message: { + cmd: "writeText", + data: text + } + }); +} +async function readText() { + return invokeTauriCommand({ + __tauriModule: "Clipboard", + message: { + cmd: "readText", + data: null + } + }); +} + +// tauri/tooling/api/src/dialog.ts +var dialog_exports = {}; +__export(dialog_exports, { + ask: () => ask, + confirm: () => confirm, + message: () => message, + open: () => open, + save: () => save +}); +async function open(options = {}) { + if (typeof options === "object") { + Object.freeze(options); + } + return invokeTauriCommand({ + __tauriModule: "Dialog", + message: { + cmd: "openDialog", + options + } + }); +} +async function save(options = {}) { + if (typeof options === "object") { + Object.freeze(options); + } + return invokeTauriCommand({ + __tauriModule: "Dialog", + message: { + cmd: "saveDialog", + options + } + }); +} +async function message(message2, options) { + const opts = typeof options === "string" ? { title: options } : options; + return invokeTauriCommand({ + __tauriModule: "Dialog", + message: { + cmd: "messageDialog", + message: message2.toString(), + title: opts?.title?.toString(), + type: opts?.type + } + }); +} +async function ask(message2, options) { + const opts = typeof options === "string" ? { title: options } : options; + return invokeTauriCommand({ + __tauriModule: "Dialog", + message: { + cmd: "askDialog", + message: message2.toString(), + title: opts?.title?.toString(), + type: opts?.type + } + }); +} +async function confirm(message2, options) { + const opts = typeof options === "string" ? { title: options } : options; + return invokeTauriCommand({ + __tauriModule: "Dialog", + message: { + cmd: "confirmDialog", + message: message2.toString(), + title: opts?.title?.toString(), + type: opts?.type + } + }); +} + +// tauri/tooling/api/src/event.ts +var event_exports = {}; +__export(event_exports, { + TauriEvent: () => TauriEvent, + emit: () => emit2, + listen: () => listen2, + once: () => once2 +}); + +// tauri/tooling/api/src/helpers/event.ts +async function _unlisten(event, eventId) { + return invokeTauriCommand({ + __tauriModule: "Event", + message: { + cmd: "unlisten", + event, + eventId + } + }); +} +async function emit(event, windowLabel, payload) { + await invokeTauriCommand({ + __tauriModule: "Event", + message: { + cmd: "emit", + event, + windowLabel, + payload + } + }); +} +async function listen(event, windowLabel, handler) { + return invokeTauriCommand({ + __tauriModule: "Event", + message: { + cmd: "listen", + event, + windowLabel, + handler: transformCallback(handler) + } + }).then((eventId) => { + return async () => _unlisten(event, eventId); + }); +} +async function once(event, windowLabel, handler) { + return listen(event, windowLabel, (eventData) => { + handler(eventData); + _unlisten(event, eventData.id).catch(() => { + }); + }); +} + +// tauri/tooling/api/src/event.ts +var TauriEvent = /* @__PURE__ */ ((TauriEvent2) => { + TauriEvent2["WINDOW_RESIZED"] = "tauri://resize"; + TauriEvent2["WINDOW_MOVED"] = "tauri://move"; + TauriEvent2["WINDOW_CLOSE_REQUESTED"] = "tauri://close-requested"; + TauriEvent2["WINDOW_CREATED"] = "tauri://window-created"; + TauriEvent2["WINDOW_DESTROYED"] = "tauri://destroyed"; + TauriEvent2["WINDOW_FOCUS"] = "tauri://focus"; + TauriEvent2["WINDOW_BLUR"] = "tauri://blur"; + TauriEvent2["WINDOW_SCALE_FACTOR_CHANGED"] = "tauri://scale-change"; + TauriEvent2["WINDOW_THEME_CHANGED"] = "tauri://theme-changed"; + TauriEvent2["WINDOW_FILE_DROP"] = "tauri://file-drop"; + TauriEvent2["WINDOW_FILE_DROP_HOVER"] = "tauri://file-drop-hover"; + TauriEvent2["WINDOW_FILE_DROP_CANCELLED"] = "tauri://file-drop-cancelled"; + TauriEvent2["MENU"] = "tauri://menu"; + TauriEvent2["CHECK_UPDATE"] = "tauri://update"; + TauriEvent2["UPDATE_AVAILABLE"] = "tauri://update-available"; + TauriEvent2["INSTALL_UPDATE"] = "tauri://update-install"; + TauriEvent2["STATUS_UPDATE"] = "tauri://update-status"; + TauriEvent2["DOWNLOAD_PROGRESS"] = "tauri://update-download-progress"; + return TauriEvent2; +})(TauriEvent || {}); +async function listen2(event, handler) { + return listen(event, null, handler); +} +async function once2(event, handler) { + return once(event, null, handler); +} +async function emit2(event, payload) { + return emit(event, void 0, payload); +} + +// tauri/tooling/api/src/fs.ts +var fs_exports = {}; +__export(fs_exports, { + BaseDirectory: () => BaseDirectory, + Dir: () => BaseDirectory, + copyFile: () => copyFile, + createDir: () => createDir, + exists: () => exists, + readBinaryFile: () => readBinaryFile, + readDir: () => readDir, + readTextFile: () => readTextFile, + removeDir: () => removeDir, + removeFile: () => removeFile, + renameFile: () => renameFile, + writeBinaryFile: () => writeBinaryFile, + writeFile: () => writeTextFile, + writeTextFile: () => writeTextFile +}); +var BaseDirectory = /* @__PURE__ */ ((BaseDirectory2) => { + BaseDirectory2[BaseDirectory2["Audio"] = 1] = "Audio"; + BaseDirectory2[BaseDirectory2["Cache"] = 2] = "Cache"; + BaseDirectory2[BaseDirectory2["Config"] = 3] = "Config"; + BaseDirectory2[BaseDirectory2["Data"] = 4] = "Data"; + BaseDirectory2[BaseDirectory2["LocalData"] = 5] = "LocalData"; + BaseDirectory2[BaseDirectory2["Desktop"] = 6] = "Desktop"; + BaseDirectory2[BaseDirectory2["Document"] = 7] = "Document"; + BaseDirectory2[BaseDirectory2["Download"] = 8] = "Download"; + BaseDirectory2[BaseDirectory2["Executable"] = 9] = "Executable"; + BaseDirectory2[BaseDirectory2["Font"] = 10] = "Font"; + BaseDirectory2[BaseDirectory2["Home"] = 11] = "Home"; + BaseDirectory2[BaseDirectory2["Picture"] = 12] = "Picture"; + BaseDirectory2[BaseDirectory2["Public"] = 13] = "Public"; + BaseDirectory2[BaseDirectory2["Runtime"] = 14] = "Runtime"; + BaseDirectory2[BaseDirectory2["Template"] = 15] = "Template"; + BaseDirectory2[BaseDirectory2["Video"] = 16] = "Video"; + BaseDirectory2[BaseDirectory2["Resource"] = 17] = "Resource"; + BaseDirectory2[BaseDirectory2["App"] = 18] = "App"; + BaseDirectory2[BaseDirectory2["Log"] = 19] = "Log"; + BaseDirectory2[BaseDirectory2["Temp"] = 20] = "Temp"; + BaseDirectory2[BaseDirectory2["AppConfig"] = 21] = "AppConfig"; + BaseDirectory2[BaseDirectory2["AppData"] = 22] = "AppData"; + BaseDirectory2[BaseDirectory2["AppLocalData"] = 23] = "AppLocalData"; + BaseDirectory2[BaseDirectory2["AppCache"] = 24] = "AppCache"; + BaseDirectory2[BaseDirectory2["AppLog"] = 25] = "AppLog"; + return BaseDirectory2; +})(BaseDirectory || {}); +async function readTextFile(filePath, options = {}) { + return invokeTauriCommand({ + __tauriModule: "Fs", + message: { + cmd: "readTextFile", + path: filePath, + options + } + }); +} +async function readBinaryFile(filePath, options = {}) { + const arr = await invokeTauriCommand({ + __tauriModule: "Fs", + message: { + cmd: "readFile", + path: filePath, + options + } + }); + return Uint8Array.from(arr); +} +async function writeTextFile(path, contents, options) { + if (typeof options === "object") { + Object.freeze(options); + } + if (typeof path === "object") { + Object.freeze(path); + } + const file = { path: "", contents: "" }; + let fileOptions = options; + if (typeof path === "string") { + file.path = path; + } else { + file.path = path.path; + file.contents = path.contents; + } + if (typeof contents === "string") { + file.contents = contents ?? ""; + } else { + fileOptions = contents; + } + return invokeTauriCommand({ + __tauriModule: "Fs", + message: { + cmd: "writeFile", + path: file.path, + contents: Array.from(new TextEncoder().encode(file.contents)), + options: fileOptions + } + }); +} +async function writeBinaryFile(path, contents, options) { + if (typeof options === "object") { + Object.freeze(options); + } + if (typeof path === "object") { + Object.freeze(path); + } + const file = { path: "", contents: [] }; + let fileOptions = options; + if (typeof path === "string") { + file.path = path; + } else { + file.path = path.path; + file.contents = path.contents; + } + if (contents && "dir" in contents) { + fileOptions = contents; + } else if (typeof path === "string") { + file.contents = contents ?? []; + } + return invokeTauriCommand({ + __tauriModule: "Fs", + message: { + cmd: "writeFile", + path: file.path, + contents: Array.from( + file.contents instanceof ArrayBuffer ? new Uint8Array(file.contents) : file.contents + ), + options: fileOptions + } + }); +} +async function readDir(dir, options = {}) { + return invokeTauriCommand({ + __tauriModule: "Fs", + message: { + cmd: "readDir", + path: dir, + options + } + }); +} +async function createDir(dir, options = {}) { + return invokeTauriCommand({ + __tauriModule: "Fs", + message: { + cmd: "createDir", + path: dir, + options + } + }); +} +async function removeDir(dir, options = {}) { + return invokeTauriCommand({ + __tauriModule: "Fs", + message: { + cmd: "removeDir", + path: dir, + options + } + }); +} +async function copyFile(source, destination, options = {}) { + return invokeTauriCommand({ + __tauriModule: "Fs", + message: { + cmd: "copyFile", + source, + destination, + options + } + }); +} +async function removeFile(file, options = {}) { + return invokeTauriCommand({ + __tauriModule: "Fs", + message: { + cmd: "removeFile", + path: file, + options + } + }); +} +async function renameFile(oldPath, newPath, options = {}) { + return invokeTauriCommand({ + __tauriModule: "Fs", + message: { + cmd: "renameFile", + oldPath, + newPath, + options + } + }); +} +async function exists(path, options = {}) { + return invokeTauriCommand({ + __tauriModule: "Fs", + message: { + cmd: "exists", + path, + options + } + }); +} + +// tauri/tooling/api/src/globalShortcut.ts +var globalShortcut_exports = {}; +__export(globalShortcut_exports, { + isRegistered: () => isRegistered, + register: () => register, + registerAll: () => registerAll, + unregister: () => unregister, + unregisterAll: () => unregisterAll +}); +async function register(shortcut, handler) { + return invokeTauriCommand({ + __tauriModule: "GlobalShortcut", + message: { + cmd: "register", + shortcut, + handler: transformCallback(handler) + } + }); +} +async function registerAll(shortcuts, handler) { + return invokeTauriCommand({ + __tauriModule: "GlobalShortcut", + message: { + cmd: "registerAll", + shortcuts, + handler: transformCallback(handler) + } + }); +} +async function isRegistered(shortcut) { + return invokeTauriCommand({ + __tauriModule: "GlobalShortcut", + message: { + cmd: "isRegistered", + shortcut + } + }); +} +async function unregister(shortcut) { + return invokeTauriCommand({ + __tauriModule: "GlobalShortcut", + message: { + cmd: "unregister", + shortcut + } + }); +} +async function unregisterAll() { + return invokeTauriCommand({ + __tauriModule: "GlobalShortcut", + message: { + cmd: "unregisterAll" + } + }); +} + +// tauri/tooling/api/src/http.ts +var http_exports = {}; +__export(http_exports, { + Body: () => Body, + Client: () => Client, + Response: () => Response, + ResponseType: () => ResponseType, + fetch: () => fetch, + getClient: () => getClient +}); +var ResponseType = /* @__PURE__ */ ((ResponseType2) => { + ResponseType2[ResponseType2["JSON"] = 1] = "JSON"; + ResponseType2[ResponseType2["Text"] = 2] = "Text"; + ResponseType2[ResponseType2["Binary"] = 3] = "Binary"; + return ResponseType2; +})(ResponseType || {}); +var Body = class { + constructor(type2, payload) { + this.type = type2; + this.payload = payload; + } + static form(data) { + const form = {}; + for (const key in data) { + const v = data[key]; + let r; + if (typeof v === "string") { + r = v; + } else if (v instanceof Uint8Array || Array.isArray(v)) { + r = Array.from(v); + } else if (typeof v.file === "string") { + r = { file: v.file, mime: v.mime, fileName: v.fileName }; + } else { + r = { file: Array.from(v.file), mime: v.mime, fileName: v.fileName }; + } + form[key] = r; + } + return new Body("Form", form); + } + static json(data) { + return new Body("Json", data); + } + static text(value) { + return new Body("Text", value); + } + static bytes(bytes) { + return new Body( + "Bytes", + Array.from(bytes instanceof ArrayBuffer ? new Uint8Array(bytes) : bytes) + ); + } +}; +var Response = class { + constructor(response) { + this.url = response.url; + this.status = response.status; + this.ok = this.status >= 200 && this.status < 300; + this.headers = response.headers; + this.rawHeaders = response.rawHeaders; + this.data = response.data; + } +}; +var Client = class { + constructor(id) { + this.id = id; + } + async drop() { + return invokeTauriCommand({ + __tauriModule: "Http", + message: { + cmd: "dropClient", + client: this.id + } + }); + } + async request(options) { + const jsonResponse = !options.responseType || options.responseType === 1 /* JSON */; + if (jsonResponse) { + options.responseType = 2 /* Text */; + } + return invokeTauriCommand({ + __tauriModule: "Http", + message: { + cmd: "httpRequest", + client: this.id, + options + } + }).then((res) => { + const response = new Response(res); + if (jsonResponse) { + try { + response.data = JSON.parse(response.data); + } catch (e) { + if (response.ok && response.data === "") { + response.data = {}; + } else if (response.ok) { + throw Error( + `Failed to parse response \`${response.data}\` as JSON: ${e}; + try setting the \`responseType\` option to \`ResponseType.Text\` or \`ResponseType.Binary\` if the API does not return a JSON response.` + ); + } + } + return response; + } + return response; + }); + } + async get(url, options) { + return this.request({ + method: "GET", + url, + ...options + }); + } + async post(url, body, options) { + return this.request({ + method: "POST", + url, + body, + ...options + }); + } + async put(url, body, options) { + return this.request({ + method: "PUT", + url, + body, + ...options + }); + } + async patch(url, options) { + return this.request({ + method: "PATCH", + url, + ...options + }); + } + async delete(url, options) { + return this.request({ + method: "DELETE", + url, + ...options + }); + } +}; +async function getClient(options) { + return invokeTauriCommand({ + __tauriModule: "Http", + message: { + cmd: "createClient", + options + } + }).then((id) => new Client(id)); +} +var defaultClient = null; +async function fetch(url, options) { + if (defaultClient === null) { + defaultClient = await getClient(); + } + return defaultClient.request({ + url, + method: options?.method ?? "GET", + ...options + }); +} + +// tauri/tooling/api/src/notification.ts +var notification_exports = {}; +__export(notification_exports, { + isPermissionGranted: () => isPermissionGranted, + requestPermission: () => requestPermission, + sendNotification: () => sendNotification +}); +async function isPermissionGranted() { + if (window.Notification.permission !== "default") { + return Promise.resolve(window.Notification.permission === "granted"); + } + return invokeTauriCommand({ + __tauriModule: "Notification", + message: { + cmd: "isNotificationPermissionGranted" + } + }); +} +async function requestPermission() { + return window.Notification.requestPermission(); +} +function sendNotification(options) { + if (typeof options === "string") { + new window.Notification(options); + } else { + new window.Notification(options.title, options); + } +} + +// tauri/tooling/api/src/path.ts +var path_exports = {}; +__export(path_exports, { + BaseDirectory: () => BaseDirectory, + appCacheDir: () => appCacheDir, + appConfigDir: () => appConfigDir, + appDataDir: () => appDataDir, + appDir: () => appDir, + appLocalDataDir: () => appLocalDataDir, + appLogDir: () => appLogDir, + audioDir: () => audioDir, + basename: () => basename, + cacheDir: () => cacheDir, + configDir: () => configDir, + dataDir: () => dataDir, + delimiter: () => delimiter, + desktopDir: () => desktopDir, + dirname: () => dirname, + documentDir: () => documentDir, + downloadDir: () => downloadDir, + executableDir: () => executableDir, + extname: () => extname, + fontDir: () => fontDir, + homeDir: () => homeDir, + isAbsolute: () => isAbsolute, + join: () => join, + localDataDir: () => localDataDir, + logDir: () => logDir, + normalize: () => normalize, + pictureDir: () => pictureDir, + publicDir: () => publicDir, + resolve: () => resolve, + resolveResource: () => resolveResource, + resourceDir: () => resourceDir, + runtimeDir: () => runtimeDir, + sep: () => sep, + templateDir: () => templateDir, + videoDir: () => videoDir +}); + +// tauri/tooling/api/src/helpers/os-check.ts +function isWindows() { + return navigator.appVersion.includes("Win"); +} + +// tauri/tooling/api/src/path.ts +async function appDir() { + return appConfigDir(); +} +async function appConfigDir() { + return invokeTauriCommand({ + __tauriModule: "Path", + message: { + cmd: "resolvePath", + path: "", + directory: 21 /* AppConfig */ + } + }); +} +async function appDataDir() { + return invokeTauriCommand({ + __tauriModule: "Path", + message: { + cmd: "resolvePath", + path: "", + directory: 22 /* AppData */ + } + }); +} +async function appLocalDataDir() { + return invokeTauriCommand({ + __tauriModule: "Path", + message: { + cmd: "resolvePath", + path: "", + directory: 23 /* AppLocalData */ + } + }); +} +async function appCacheDir() { + return invokeTauriCommand({ + __tauriModule: "Path", + message: { + cmd: "resolvePath", + path: "", + directory: 24 /* AppCache */ + } + }); +} +async function audioDir() { + return invokeTauriCommand({ + __tauriModule: "Path", + message: { + cmd: "resolvePath", + path: "", + directory: 1 /* Audio */ + } + }); +} +async function cacheDir() { + return invokeTauriCommand({ + __tauriModule: "Path", + message: { + cmd: "resolvePath", + path: "", + directory: 2 /* Cache */ + } + }); +} +async function configDir() { + return invokeTauriCommand({ + __tauriModule: "Path", + message: { + cmd: "resolvePath", + path: "", + directory: 3 /* Config */ + } + }); +} +async function dataDir() { + return invokeTauriCommand({ + __tauriModule: "Path", + message: { + cmd: "resolvePath", + path: "", + directory: 4 /* Data */ + } + }); +} +async function desktopDir() { + return invokeTauriCommand({ + __tauriModule: "Path", + message: { + cmd: "resolvePath", + path: "", + directory: 6 /* Desktop */ + } + }); +} +async function documentDir() { + return invokeTauriCommand({ + __tauriModule: "Path", + message: { + cmd: "resolvePath", + path: "", + directory: 7 /* Document */ + } + }); +} +async function downloadDir() { + return invokeTauriCommand({ + __tauriModule: "Path", + message: { + cmd: "resolvePath", + path: "", + directory: 8 /* Download */ + } + }); +} +async function executableDir() { + return invokeTauriCommand({ + __tauriModule: "Path", + message: { + cmd: "resolvePath", + path: "", + directory: 9 /* Executable */ + } + }); +} +async function fontDir() { + return invokeTauriCommand({ + __tauriModule: "Path", + message: { + cmd: "resolvePath", + path: "", + directory: 10 /* Font */ + } + }); +} +async function homeDir() { + return invokeTauriCommand({ + __tauriModule: "Path", + message: { + cmd: "resolvePath", + path: "", + directory: 11 /* Home */ + } + }); +} +async function localDataDir() { + return invokeTauriCommand({ + __tauriModule: "Path", + message: { + cmd: "resolvePath", + path: "", + directory: 5 /* LocalData */ + } + }); +} +async function pictureDir() { + return invokeTauriCommand({ + __tauriModule: "Path", + message: { + cmd: "resolvePath", + path: "", + directory: 12 /* Picture */ + } + }); +} +async function publicDir() { + return invokeTauriCommand({ + __tauriModule: "Path", + message: { + cmd: "resolvePath", + path: "", + directory: 13 /* Public */ + } + }); +} +async function resourceDir() { + return invokeTauriCommand({ + __tauriModule: "Path", + message: { + cmd: "resolvePath", + path: "", + directory: 17 /* Resource */ + } + }); +} +async function resolveResource(resourcePath) { + return invokeTauriCommand({ + __tauriModule: "Path", + message: { + cmd: "resolvePath", + path: resourcePath, + directory: 17 /* Resource */ + } + }); +} +async function runtimeDir() { + return invokeTauriCommand({ + __tauriModule: "Path", + message: { + cmd: "resolvePath", + path: "", + directory: 14 /* Runtime */ + } + }); +} +async function templateDir() { + return invokeTauriCommand({ + __tauriModule: "Path", + message: { + cmd: "resolvePath", + path: "", + directory: 15 /* Template */ + } + }); +} +async function videoDir() { + return invokeTauriCommand({ + __tauriModule: "Path", + message: { + cmd: "resolvePath", + path: "", + directory: 16 /* Video */ + } + }); +} +async function logDir() { + return appLogDir(); +} +async function appLogDir() { + return invokeTauriCommand({ + __tauriModule: "Path", + message: { + cmd: "resolvePath", + path: "", + directory: 25 /* AppLog */ + } + }); +} +var sep = isWindows() ? "\\" : "/"; +var delimiter = isWindows() ? ";" : ":"; +async function resolve(...paths) { + return invokeTauriCommand({ + __tauriModule: "Path", + message: { + cmd: "resolve", + paths + } + }); +} +async function normalize(path) { + return invokeTauriCommand({ + __tauriModule: "Path", + message: { + cmd: "normalize", + path + } + }); +} +async function join(...paths) { + return invokeTauriCommand({ + __tauriModule: "Path", + message: { + cmd: "join", + paths + } + }); +} +async function dirname(path) { + return invokeTauriCommand({ + __tauriModule: "Path", + message: { + cmd: "dirname", + path + } + }); +} +async function extname(path) { + return invokeTauriCommand({ + __tauriModule: "Path", + message: { + cmd: "extname", + path + } + }); +} +async function basename(path, ext) { + return invokeTauriCommand({ + __tauriModule: "Path", + message: { + cmd: "basename", + path, + ext + } + }); +} +async function isAbsolute(path) { + return invokeTauriCommand({ + __tauriModule: "Path", + message: { + cmd: "isAbsolute", + path + } + }); +} + +// tauri/tooling/api/src/process.ts +var process_exports = {}; +__export(process_exports, { + exit: () => exit, + relaunch: () => relaunch +}); +async function exit(exitCode = 0) { + return invokeTauriCommand({ + __tauriModule: "Process", + message: { + cmd: "exit", + exitCode + } + }); +} +async function relaunch() { + return invokeTauriCommand({ + __tauriModule: "Process", + message: { + cmd: "relaunch" + } + }); +} + +// tauri/tooling/api/src/shell.ts +var shell_exports = {}; +__export(shell_exports, { + Child: () => Child, + Command: () => Command, + EventEmitter: () => EventEmitter, + open: () => open2 +}); +async function execute(onEvent, program, args = [], options) { + if (typeof args === "object") { + Object.freeze(args); + } + return invokeTauriCommand({ + __tauriModule: "Shell", + message: { + cmd: "execute", + program, + args, + options, + onEventFn: transformCallback(onEvent) + } + }); +} +var EventEmitter = class { + constructor() { + this.eventListeners = /* @__PURE__ */ Object.create(null); + } + addListener(eventName, listener) { + return this.on(eventName, listener); + } + removeListener(eventName, listener) { + return this.off(eventName, listener); + } + on(eventName, listener) { + if (eventName in this.eventListeners) { + this.eventListeners[eventName].push(listener); + } else { + this.eventListeners[eventName] = [listener]; + } + return this; + } + once(eventName, listener) { + const wrapper = (...args) => { + this.removeListener(eventName, wrapper); + listener(...args); + }; + return this.addListener(eventName, wrapper); + } + off(eventName, listener) { + if (eventName in this.eventListeners) { + this.eventListeners[eventName] = this.eventListeners[eventName].filter( + (l) => l !== listener + ); + } + return this; + } + removeAllListeners(event) { + if (event) { + delete this.eventListeners[event]; + } else { + this.eventListeners = /* @__PURE__ */ Object.create(null); + } + return this; + } + emit(eventName, ...args) { + if (eventName in this.eventListeners) { + const listeners = this.eventListeners[eventName]; + for (const listener of listeners) + listener(...args); + return true; + } + return false; + } + listenerCount(eventName) { + if (eventName in this.eventListeners) + return this.eventListeners[eventName].length; + return 0; + } + prependListener(eventName, listener) { + if (eventName in this.eventListeners) { + this.eventListeners[eventName].unshift(listener); + } else { + this.eventListeners[eventName] = [listener]; + } + return this; + } + prependOnceListener(eventName, listener) { + const wrapper = (...args) => { + this.removeListener(eventName, wrapper); + listener(...args); + }; + return this.prependListener(eventName, wrapper); + } +}; +var Child = class { + constructor(pid) { + this.pid = pid; + } + async write(data) { + return invokeTauriCommand({ + __tauriModule: "Shell", + message: { + cmd: "stdinWrite", + pid: this.pid, + buffer: typeof data === "string" ? data : Array.from(data) + } + }); + } + async kill() { + return invokeTauriCommand({ + __tauriModule: "Shell", + message: { + cmd: "killChild", + pid: this.pid + } + }); + } +}; +var Command = class extends EventEmitter { + constructor(program, args = [], options) { + super(); + this.stdout = new EventEmitter(); + this.stderr = new EventEmitter(); + this.program = program; + this.args = typeof args === "string" ? [args] : args; + this.options = options ?? {}; + } + static sidecar(program, args = [], options) { + const instance = new Command(program, args, options); + instance.options.sidecar = true; + return instance; + } + async spawn() { + return execute( + (event) => { + switch (event.event) { + case "Error": + this.emit("error", event.payload); + break; + case "Terminated": + this.emit("close", event.payload); + break; + case "Stdout": + this.stdout.emit("data", event.payload); + break; + case "Stderr": + this.stderr.emit("data", event.payload); + break; + } + }, + this.program, + this.args, + this.options + ).then((pid) => new Child(pid)); + } + async execute() { + return new Promise((resolve2, reject) => { + this.on("error", reject); + const stdout = []; + const stderr = []; + this.stdout.on("data", (line) => { + stdout.push(line); + }); + this.stderr.on("data", (line) => { + stderr.push(line); + }); + this.on("close", (payload) => { + resolve2({ + code: payload.code, + signal: payload.signal, + stdout: stdout.join("\n"), + stderr: stderr.join("\n") + }); + }); + this.spawn().catch(reject); + }); + } +}; +async function open2(path, openWith) { + return invokeTauriCommand({ + __tauriModule: "Shell", + message: { + cmd: "open", + path, + with: openWith + } + }); +} + +// tauri/tooling/api/src/updater.ts +var updater_exports = {}; +__export(updater_exports, { + checkUpdate: () => checkUpdate, + installUpdate: () => installUpdate, + onUpdaterEvent: () => onUpdaterEvent +}); +async function onUpdaterEvent(handler) { + return listen2("tauri://update-status" /* STATUS_UPDATE */, (data) => { + handler(data?.payload); + }); +} +async function installUpdate() { + let unlistenerFn; + function cleanListener() { + if (unlistenerFn) { + unlistenerFn(); + } + unlistenerFn = void 0; + } + return new Promise((resolve2, reject) => { + function onStatusChange(statusResult) { + if (statusResult.error) { + cleanListener(); + return reject(statusResult.error); + } + if (statusResult.status === "DONE") { + cleanListener(); + return resolve2(); + } + } + onUpdaterEvent(onStatusChange).then((fn) => { + unlistenerFn = fn; + }).catch((e) => { + cleanListener(); + throw e; + }); + emit2("tauri://update-install" /* INSTALL_UPDATE */).catch((e) => { + cleanListener(); + throw e; + }); + }); +} +async function checkUpdate() { + let unlistenerFn; + function cleanListener() { + if (unlistenerFn) { + unlistenerFn(); + } + unlistenerFn = void 0; + } + return new Promise((resolve2, reject) => { + function onUpdateAvailable(manifest) { + cleanListener(); + return resolve2({ + manifest, + shouldUpdate: true + }); + } + function onStatusChange(statusResult) { + if (statusResult.error) { + cleanListener(); + return reject(statusResult.error); + } + if (statusResult.status === "UPTODATE") { + cleanListener(); + return resolve2({ + shouldUpdate: false + }); + } + } + once2("tauri://update-available" /* UPDATE_AVAILABLE */, (data) => { + onUpdateAvailable(data?.payload); + }).catch((e) => { + cleanListener(); + throw e; + }); + onUpdaterEvent(onStatusChange).then((fn) => { + unlistenerFn = fn; + }).catch((e) => { + cleanListener(); + throw e; + }); + emit2("tauri://update" /* CHECK_UPDATE */).catch((e) => { + cleanListener(); + throw e; + }); + }); +} + +// tauri/tooling/api/src/window.ts +var window_exports = {}; +__export(window_exports, { + CloseRequestedEvent: () => CloseRequestedEvent, + LogicalPosition: () => LogicalPosition, + LogicalSize: () => LogicalSize, + PhysicalPosition: () => PhysicalPosition, + PhysicalSize: () => PhysicalSize, + UserAttentionType: () => UserAttentionType, + WebviewWindow: () => WebviewWindow, + WebviewWindowHandle: () => WebviewWindowHandle, + WindowManager: () => WindowManager, + appWindow: () => appWindow, + availableMonitors: () => availableMonitors, + currentMonitor: () => currentMonitor, + getAll: () => getAll, + getCurrent: () => getCurrent, + primaryMonitor: () => primaryMonitor +}); +var LogicalSize = class { + constructor(width, height) { + this.type = "Logical"; + this.width = width; + this.height = height; + } +}; +var PhysicalSize = class { + constructor(width, height) { + this.type = "Physical"; + this.width = width; + this.height = height; + } + toLogical(scaleFactor) { + return new LogicalSize(this.width / scaleFactor, this.height / scaleFactor); + } +}; +var LogicalPosition = class { + constructor(x, y) { + this.type = "Logical"; + this.x = x; + this.y = y; + } +}; +var PhysicalPosition = class { + constructor(x, y) { + this.type = "Physical"; + this.x = x; + this.y = y; + } + toLogical(scaleFactor) { + return new LogicalPosition(this.x / scaleFactor, this.y / scaleFactor); + } +}; +var UserAttentionType = /* @__PURE__ */ ((UserAttentionType2) => { + UserAttentionType2[UserAttentionType2["Critical"] = 1] = "Critical"; + UserAttentionType2[UserAttentionType2["Informational"] = 2] = "Informational"; + return UserAttentionType2; +})(UserAttentionType || {}); +function getCurrent() { + return new WebviewWindow(window.__TAURI_METADATA__.__currentWindow.label, { + skip: true + }); +} +function getAll() { + return window.__TAURI_METADATA__.__windows.map( + (w) => new WebviewWindow(w.label, { + skip: true + }) + ); +} +var localTauriEvents = ["tauri://created", "tauri://error"]; +var WebviewWindowHandle = class { + constructor(label) { + this.label = label; + this.listeners = /* @__PURE__ */ Object.create(null); + } + async listen(event, handler) { + if (this._handleTauriEvent(event, handler)) { + return Promise.resolve(() => { + const listeners = this.listeners[event]; + listeners.splice(listeners.indexOf(handler), 1); + }); + } + return listen(event, this.label, handler); + } + async once(event, handler) { + if (this._handleTauriEvent(event, handler)) { + return Promise.resolve(() => { + const listeners = this.listeners[event]; + listeners.splice(listeners.indexOf(handler), 1); + }); + } + return once(event, this.label, handler); + } + async emit(event, payload) { + if (localTauriEvents.includes(event)) { + for (const handler of this.listeners[event] || []) { + handler({ event, id: -1, windowLabel: this.label, payload }); + } + return Promise.resolve(); + } + return emit(event, this.label, payload); + } + _handleTauriEvent(event, handler) { + if (localTauriEvents.includes(event)) { + if (!(event in this.listeners)) { + this.listeners[event] = [handler]; + } else { + this.listeners[event].push(handler); + } + return true; + } + return false; + } +}; +var WindowManager = class extends WebviewWindowHandle { + async scaleFactor() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "scaleFactor" + } + } + } + }); + } + async innerPosition() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "innerPosition" + } + } + } + }).then(({ x, y }) => new PhysicalPosition(x, y)); + } + async outerPosition() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "outerPosition" + } + } + } + }).then(({ x, y }) => new PhysicalPosition(x, y)); + } + async innerSize() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "innerSize" + } + } + } + }).then(({ width, height }) => new PhysicalSize(width, height)); + } + async outerSize() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "outerSize" + } + } + } + }).then(({ width, height }) => new PhysicalSize(width, height)); + } + async isFullscreen() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "isFullscreen" + } + } + } + }); + } + async isMaximized() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "isMaximized" + } + } + } + }); + } + async isDecorated() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "isDecorated" + } + } + } + }); + } + async isResizable() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "isResizable" + } + } + } + }); + } + async isVisible() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "isVisible" + } + } + } + }); + } + async theme() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "theme" + } + } + } + }); + } + async center() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "center" + } + } + } + }); + } + async requestUserAttention(requestType) { + let requestType_ = null; + if (requestType) { + if (requestType === 1 /* Critical */) { + requestType_ = { type: "Critical" }; + } else { + requestType_ = { type: "Informational" }; + } + } + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "requestUserAttention", + payload: requestType_ + } + } + } + }); + } + async setResizable(resizable) { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "setResizable", + payload: resizable + } + } + } + }); + } + async setTitle(title) { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "setTitle", + payload: title + } + } + } + }); + } + async maximize() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "maximize" + } + } + } + }); + } + async unmaximize() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "unmaximize" + } + } + } + }); + } + async toggleMaximize() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "toggleMaximize" + } + } + } + }); + } + async minimize() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "minimize" + } + } + } + }); + } + async unminimize() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "unminimize" + } + } + } + }); + } + async show() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "show" + } + } + } + }); + } + async hide() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "hide" + } + } + } + }); + } + async close() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "close" + } + } + } + }); + } + async setDecorations(decorations) { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "setDecorations", + payload: decorations + } + } + } + }); + } + async setAlwaysOnTop(alwaysOnTop) { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "setAlwaysOnTop", + payload: alwaysOnTop + } + } + } + }); + } + async setSize(size) { + if (!size || size.type !== "Logical" && size.type !== "Physical") { + throw new Error( + "the `size` argument must be either a LogicalSize or a PhysicalSize instance" + ); + } + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "setSize", + payload: { + type: size.type, + data: { + width: size.width, + height: size.height + } + } + } + } + } + }); + } + async setMinSize(size) { + if (size && size.type !== "Logical" && size.type !== "Physical") { + throw new Error( + "the `size` argument must be either a LogicalSize or a PhysicalSize instance" + ); + } + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "setMinSize", + payload: size ? { + type: size.type, + data: { + width: size.width, + height: size.height + } + } : null + } + } + } + }); + } + async setMaxSize(size) { + if (size && size.type !== "Logical" && size.type !== "Physical") { + throw new Error( + "the `size` argument must be either a LogicalSize or a PhysicalSize instance" + ); + } + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "setMaxSize", + payload: size ? { + type: size.type, + data: { + width: size.width, + height: size.height + } + } : null + } + } + } + }); + } + async setPosition(position) { + if (!position || position.type !== "Logical" && position.type !== "Physical") { + throw new Error( + "the `position` argument must be either a LogicalPosition or a PhysicalPosition instance" + ); + } + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "setPosition", + payload: { + type: position.type, + data: { + x: position.x, + y: position.y + } + } + } + } + } + }); + } + async setFullscreen(fullscreen) { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "setFullscreen", + payload: fullscreen + } + } + } + }); + } + async setFocus() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "setFocus" + } + } + } + }); + } + async setIcon(icon) { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "setIcon", + payload: { + icon: typeof icon === "string" ? icon : Array.from(icon) + } + } + } + } + }); + } + async setSkipTaskbar(skip) { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "setSkipTaskbar", + payload: skip + } + } + } + }); + } + async setCursorGrab(grab) { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "setCursorGrab", + payload: grab + } + } + } + }); + } + async setCursorVisible(visible) { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "setCursorVisible", + payload: visible + } + } + } + }); + } + async setCursorIcon(icon) { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "setCursorIcon", + payload: icon + } + } + } + }); + } + async setCursorPosition(position) { + if (!position || position.type !== "Logical" && position.type !== "Physical") { + throw new Error( + "the `position` argument must be either a LogicalPosition or a PhysicalPosition instance" + ); + } + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "setCursorPosition", + payload: { + type: position.type, + data: { + x: position.x, + y: position.y + } + } + } + } + } + }); + } + async setIgnoreCursorEvents(ignore) { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "setIgnoreCursorEvents", + payload: ignore + } + } + } + }); + } + async startDragging() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + label: this.label, + cmd: { + type: "startDragging" + } + } + } + }); + } + async onResized(handler) { + return this.listen("tauri://resize" /* WINDOW_RESIZED */, handler); + } + async onMoved(handler) { + return this.listen("tauri://move" /* WINDOW_MOVED */, handler); + } + async onCloseRequested(handler) { + return this.listen("tauri://close-requested" /* WINDOW_CLOSE_REQUESTED */, (event) => { + const evt = new CloseRequestedEvent(event); + void Promise.resolve(handler(evt)).then(() => { + if (!evt.isPreventDefault()) { + return this.close(); + } + }); + }); + } + async onFocusChanged(handler) { + const unlistenFocus = await this.listen( + "tauri://focus" /* WINDOW_FOCUS */, + (event) => { + handler({ ...event, payload: true }); + } + ); + const unlistenBlur = await this.listen( + "tauri://blur" /* WINDOW_BLUR */, + (event) => { + handler({ ...event, payload: false }); + } + ); + return () => { + unlistenFocus(); + unlistenBlur(); + }; + } + async onScaleChanged(handler) { + return this.listen( + "tauri://scale-change" /* WINDOW_SCALE_FACTOR_CHANGED */, + handler + ); + } + async onMenuClicked(handler) { + return this.listen("tauri://menu" /* MENU */, handler); + } + async onFileDropEvent(handler) { + const unlistenFileDrop = await this.listen( + "tauri://file-drop" /* WINDOW_FILE_DROP */, + (event) => { + handler({ ...event, payload: { type: "drop", paths: event.payload } }); + } + ); + const unlistenFileHover = await this.listen( + "tauri://file-drop-hover" /* WINDOW_FILE_DROP_HOVER */, + (event) => { + handler({ ...event, payload: { type: "hover", paths: event.payload } }); + } + ); + const unlistenCancel = await this.listen( + "tauri://file-drop-cancelled" /* WINDOW_FILE_DROP_CANCELLED */, + (event) => { + handler({ ...event, payload: { type: "cancel" } }); + } + ); + return () => { + unlistenFileDrop(); + unlistenFileHover(); + unlistenCancel(); + }; + } + async onThemeChanged(handler) { + return this.listen("tauri://theme-changed" /* WINDOW_THEME_CHANGED */, handler); + } +}; +var CloseRequestedEvent = class { + constructor(event) { + this._preventDefault = false; + this.event = event.event; + this.windowLabel = event.windowLabel; + this.id = event.id; + } + preventDefault() { + this._preventDefault = true; + } + isPreventDefault() { + return this._preventDefault; + } +}; +var WebviewWindow = class extends WindowManager { + constructor(label, options = {}) { + super(label); + if (!options?.skip) { + invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "createWebview", + data: { + options: { + label, + ...options + } + } + } + }).then(async () => this.emit("tauri://created")).catch(async (e) => this.emit("tauri://error", e)); + } + } + static getByLabel(label) { + if (getAll().some((w) => w.label === label)) { + return new WebviewWindow(label, { skip: true }); + } + return null; + } +}; +var appWindow; +if ("__TAURI_METADATA__" in window) { + appWindow = new WebviewWindow( + window.__TAURI_METADATA__.__currentWindow.label, + { + skip: true + } + ); +} else { + console.warn( + `Could not find "window.__TAURI_METADATA__". The "appWindow" value will reference the "main" window label. +Note that this is not an issue if running this frontend on a browser instead of a Tauri window.` + ); + appWindow = new WebviewWindow("main", { + skip: true + }); +} +function mapMonitor(m) { + return m === null ? null : { + name: m.name, + scaleFactor: m.scaleFactor, + position: new PhysicalPosition(m.position.x, m.position.y), + size: new PhysicalSize(m.size.width, m.size.height) + }; +} +async function currentMonitor() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + cmd: { + type: "currentMonitor" + } + } + } + }).then(mapMonitor); +} +async function primaryMonitor() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + cmd: { + type: "primaryMonitor" + } + } + } + }).then(mapMonitor); +} +async function availableMonitors() { + return invokeTauriCommand({ + __tauriModule: "Window", + message: { + cmd: "manage", + data: { + cmd: { + type: "availableMonitors" + } + } + } + }).then((ms) => ms.map(mapMonitor)); +} + +// tauri/tooling/api/src/os.ts +var os_exports = {}; +__export(os_exports, { + EOL: () => EOL, + arch: () => arch, + platform: () => platform, + tempdir: () => tempdir, + type: () => type, + version: () => version +}); +var EOL = isWindows() ? "\r\n" : "\n"; +async function platform() { + return invokeTauriCommand({ + __tauriModule: "Os", + message: { + cmd: "platform" + } + }); +} +async function version() { + return invokeTauriCommand({ + __tauriModule: "Os", + message: { + cmd: "version" + } + }); +} +async function type() { + return invokeTauriCommand({ + __tauriModule: "Os", + message: { + cmd: "osType" + } + }); +} +async function arch() { + return invokeTauriCommand({ + __tauriModule: "Os", + message: { + cmd: "arch" + } + }); +} +async function tempdir() { + return invokeTauriCommand({ + __tauriModule: "Os", + message: { + cmd: "tempdir" + } + }); +} + +// tauri/tooling/api/src/index.ts +var invoke2 = invoke; +export { + app_exports as app, + cli_exports as cli, + clipboard_exports as clipboard, + dialog_exports as dialog, + event_exports as event, + fs_exports as fs, + globalShortcut_exports as globalShortcut, + http_exports as http, + invoke2 as invoke, + notification_exports as notification, + os_exports as os, + path_exports as path, + process_exports as process, + shell_exports as shell, + tauri_exports as tauri, + updater_exports as updater, + window_exports as window +}; diff --git a/dist/mocks.js b/src/mocks.js similarity index 100% rename from dist/mocks.js rename to src/mocks.js diff --git a/src/notification.js b/src/notification.js new file mode 100644 index 0000000..4ec6b9b --- /dev/null +++ b/src/notification.js @@ -0,0 +1,70 @@ +// tauri/tooling/api/src/tauri.ts +function uid() { + return window.crypto.getRandomValues(new Uint32Array(1))[0]; +} +function transformCallback(callback, once = false) { + const identifier = uid(); + const prop = `_${identifier}`; + Object.defineProperty(window, prop, { + value: (result) => { + if (once) { + Reflect.deleteProperty(window, prop); + } + return callback?.(result); + }, + writable: false, + configurable: true + }); + return identifier; +} +async function invoke(cmd, args = {}) { + return new Promise((resolve, reject) => { + const callback = transformCallback((e) => { + resolve(e); + Reflect.deleteProperty(window, `_${error}`); + }, true); + const error = transformCallback((e) => { + reject(e); + Reflect.deleteProperty(window, `_${callback}`); + }, true); + window.__TAURI_IPC__({ + cmd, + callback, + error, + ...args + }); + }); +} + +// tauri/tooling/api/src/helpers/tauri.ts +async function invokeTauriCommand(command) { + return invoke("tauri", command); +} + +// tauri/tooling/api/src/notification.ts +async function isPermissionGranted() { + if (window.Notification.permission !== "default") { + return Promise.resolve(window.Notification.permission === "granted"); + } + return invokeTauriCommand({ + __tauriModule: "Notification", + message: { + cmd: "isNotificationPermissionGranted" + } + }); +} +async function requestPermission() { + return window.Notification.requestPermission(); +} +function sendNotification(options) { + if (typeof options === "string") { + new window.Notification(options); + } else { + new window.Notification(options.title, options); + } +} +export { + isPermissionGranted, + requestPermission, + sendNotification +}; diff --git a/src/os.js b/src/os.js new file mode 100644 index 0000000..76dd323 --- /dev/null +++ b/src/os.js @@ -0,0 +1,98 @@ +// tauri/tooling/api/src/helpers/os-check.ts +function isWindows() { + return navigator.appVersion.includes("Win"); +} + +// tauri/tooling/api/src/tauri.ts +function uid() { + return window.crypto.getRandomValues(new Uint32Array(1))[0]; +} +function transformCallback(callback, once = false) { + const identifier = uid(); + const prop = `_${identifier}`; + Object.defineProperty(window, prop, { + value: (result) => { + if (once) { + Reflect.deleteProperty(window, prop); + } + return callback?.(result); + }, + writable: false, + configurable: true + }); + return identifier; +} +async function invoke(cmd, args = {}) { + return new Promise((resolve, reject) => { + const callback = transformCallback((e) => { + resolve(e); + Reflect.deleteProperty(window, `_${error}`); + }, true); + const error = transformCallback((e) => { + reject(e); + Reflect.deleteProperty(window, `_${callback}`); + }, true); + window.__TAURI_IPC__({ + cmd, + callback, + error, + ...args + }); + }); +} + +// tauri/tooling/api/src/helpers/tauri.ts +async function invokeTauriCommand(command) { + return invoke("tauri", command); +} + +// tauri/tooling/api/src/os.ts +var EOL = isWindows() ? "\r\n" : "\n"; +async function platform() { + return invokeTauriCommand({ + __tauriModule: "Os", + message: { + cmd: "platform" + } + }); +} +async function version() { + return invokeTauriCommand({ + __tauriModule: "Os", + message: { + cmd: "version" + } + }); +} +async function type() { + return invokeTauriCommand({ + __tauriModule: "Os", + message: { + cmd: "osType" + } + }); +} +async function arch() { + return invokeTauriCommand({ + __tauriModule: "Os", + message: { + cmd: "arch" + } + }); +} +async function tempdir() { + return invokeTauriCommand({ + __tauriModule: "Os", + message: { + cmd: "tempdir" + } + }); +} +export { + EOL, + arch, + platform, + tempdir, + type, + version +}; diff --git a/src/path.js b/src/path.js new file mode 100644 index 0000000..1250562 --- /dev/null +++ b/src/path.js @@ -0,0 +1,418 @@ +// tauri/tooling/api/src/tauri.ts +function uid() { + return window.crypto.getRandomValues(new Uint32Array(1))[0]; +} +function transformCallback(callback, once = false) { + const identifier = uid(); + const prop = `_${identifier}`; + Object.defineProperty(window, prop, { + value: (result) => { + if (once) { + Reflect.deleteProperty(window, prop); + } + return callback?.(result); + }, + writable: false, + configurable: true + }); + return identifier; +} +async function invoke(cmd, args = {}) { + return new Promise((resolve2, reject) => { + const callback = transformCallback((e) => { + resolve2(e); + Reflect.deleteProperty(window, `_${error}`); + }, true); + const error = transformCallback((e) => { + reject(e); + Reflect.deleteProperty(window, `_${callback}`); + }, true); + window.__TAURI_IPC__({ + cmd, + callback, + error, + ...args + }); + }); +} + +// tauri/tooling/api/src/helpers/tauri.ts +async function invokeTauriCommand(command) { + return invoke("tauri", command); +} + +// tauri/tooling/api/src/fs.ts +var BaseDirectory = /* @__PURE__ */ ((BaseDirectory2) => { + BaseDirectory2[BaseDirectory2["Audio"] = 1] = "Audio"; + BaseDirectory2[BaseDirectory2["Cache"] = 2] = "Cache"; + BaseDirectory2[BaseDirectory2["Config"] = 3] = "Config"; + BaseDirectory2[BaseDirectory2["Data"] = 4] = "Data"; + BaseDirectory2[BaseDirectory2["LocalData"] = 5] = "LocalData"; + BaseDirectory2[BaseDirectory2["Desktop"] = 6] = "Desktop"; + BaseDirectory2[BaseDirectory2["Document"] = 7] = "Document"; + BaseDirectory2[BaseDirectory2["Download"] = 8] = "Download"; + BaseDirectory2[BaseDirectory2["Executable"] = 9] = "Executable"; + BaseDirectory2[BaseDirectory2["Font"] = 10] = "Font"; + BaseDirectory2[BaseDirectory2["Home"] = 11] = "Home"; + BaseDirectory2[BaseDirectory2["Picture"] = 12] = "Picture"; + BaseDirectory2[BaseDirectory2["Public"] = 13] = "Public"; + BaseDirectory2[BaseDirectory2["Runtime"] = 14] = "Runtime"; + BaseDirectory2[BaseDirectory2["Template"] = 15] = "Template"; + BaseDirectory2[BaseDirectory2["Video"] = 16] = "Video"; + BaseDirectory2[BaseDirectory2["Resource"] = 17] = "Resource"; + BaseDirectory2[BaseDirectory2["App"] = 18] = "App"; + BaseDirectory2[BaseDirectory2["Log"] = 19] = "Log"; + BaseDirectory2[BaseDirectory2["Temp"] = 20] = "Temp"; + BaseDirectory2[BaseDirectory2["AppConfig"] = 21] = "AppConfig"; + BaseDirectory2[BaseDirectory2["AppData"] = 22] = "AppData"; + BaseDirectory2[BaseDirectory2["AppLocalData"] = 23] = "AppLocalData"; + BaseDirectory2[BaseDirectory2["AppCache"] = 24] = "AppCache"; + BaseDirectory2[BaseDirectory2["AppLog"] = 25] = "AppLog"; + return BaseDirectory2; +})(BaseDirectory || {}); + +// tauri/tooling/api/src/helpers/os-check.ts +function isWindows() { + return navigator.appVersion.includes("Win"); +} + +// tauri/tooling/api/src/path.ts +async function appDir() { + return appConfigDir(); +} +async function appConfigDir() { + return invokeTauriCommand({ + __tauriModule: "Path", + message: { + cmd: "resolvePath", + path: "", + directory: 21 /* AppConfig */ + } + }); +} +async function appDataDir() { + return invokeTauriCommand({ + __tauriModule: "Path", + message: { + cmd: "resolvePath", + path: "", + directory: 22 /* AppData */ + } + }); +} +async function appLocalDataDir() { + return invokeTauriCommand({ + __tauriModule: "Path", + message: { + cmd: "resolvePath", + path: "", + directory: 23 /* AppLocalData */ + } + }); +} +async function appCacheDir() { + return invokeTauriCommand({ + __tauriModule: "Path", + message: { + cmd: "resolvePath", + path: "", + directory: 24 /* AppCache */ + } + }); +} +async function audioDir() { + return invokeTauriCommand({ + __tauriModule: "Path", + message: { + cmd: "resolvePath", + path: "", + directory: 1 /* Audio */ + } + }); +} +async function cacheDir() { + return invokeTauriCommand({ + __tauriModule: "Path", + message: { + cmd: "resolvePath", + path: "", + directory: 2 /* Cache */ + } + }); +} +async function configDir() { + return invokeTauriCommand({ + __tauriModule: "Path", + message: { + cmd: "resolvePath", + path: "", + directory: 3 /* Config */ + } + }); +} +async function dataDir() { + return invokeTauriCommand({ + __tauriModule: "Path", + message: { + cmd: "resolvePath", + path: "", + directory: 4 /* Data */ + } + }); +} +async function desktopDir() { + return invokeTauriCommand({ + __tauriModule: "Path", + message: { + cmd: "resolvePath", + path: "", + directory: 6 /* Desktop */ + } + }); +} +async function documentDir() { + return invokeTauriCommand({ + __tauriModule: "Path", + message: { + cmd: "resolvePath", + path: "", + directory: 7 /* Document */ + } + }); +} +async function downloadDir() { + return invokeTauriCommand({ + __tauriModule: "Path", + message: { + cmd: "resolvePath", + path: "", + directory: 8 /* Download */ + } + }); +} +async function executableDir() { + return invokeTauriCommand({ + __tauriModule: "Path", + message: { + cmd: "resolvePath", + path: "", + directory: 9 /* Executable */ + } + }); +} +async function fontDir() { + return invokeTauriCommand({ + __tauriModule: "Path", + message: { + cmd: "resolvePath", + path: "", + directory: 10 /* Font */ + } + }); +} +async function homeDir() { + return invokeTauriCommand({ + __tauriModule: "Path", + message: { + cmd: "resolvePath", + path: "", + directory: 11 /* Home */ + } + }); +} +async function localDataDir() { + return invokeTauriCommand({ + __tauriModule: "Path", + message: { + cmd: "resolvePath", + path: "", + directory: 5 /* LocalData */ + } + }); +} +async function pictureDir() { + return invokeTauriCommand({ + __tauriModule: "Path", + message: { + cmd: "resolvePath", + path: "", + directory: 12 /* Picture */ + } + }); +} +async function publicDir() { + return invokeTauriCommand({ + __tauriModule: "Path", + message: { + cmd: "resolvePath", + path: "", + directory: 13 /* Public */ + } + }); +} +async function resourceDir() { + return invokeTauriCommand({ + __tauriModule: "Path", + message: { + cmd: "resolvePath", + path: "", + directory: 17 /* Resource */ + } + }); +} +async function resolveResource(resourcePath) { + return invokeTauriCommand({ + __tauriModule: "Path", + message: { + cmd: "resolvePath", + path: resourcePath, + directory: 17 /* Resource */ + } + }); +} +async function runtimeDir() { + return invokeTauriCommand({ + __tauriModule: "Path", + message: { + cmd: "resolvePath", + path: "", + directory: 14 /* Runtime */ + } + }); +} +async function templateDir() { + return invokeTauriCommand({ + __tauriModule: "Path", + message: { + cmd: "resolvePath", + path: "", + directory: 15 /* Template */ + } + }); +} +async function videoDir() { + return invokeTauriCommand({ + __tauriModule: "Path", + message: { + cmd: "resolvePath", + path: "", + directory: 16 /* Video */ + } + }); +} +async function logDir() { + return appLogDir(); +} +async function appLogDir() { + return invokeTauriCommand({ + __tauriModule: "Path", + message: { + cmd: "resolvePath", + path: "", + directory: 25 /* AppLog */ + } + }); +} +var sep = isWindows() ? "\\" : "/"; +var delimiter = isWindows() ? ";" : ":"; +async function resolve(...paths) { + return invokeTauriCommand({ + __tauriModule: "Path", + message: { + cmd: "resolve", + paths + } + }); +} +async function normalize(path) { + return invokeTauriCommand({ + __tauriModule: "Path", + message: { + cmd: "normalize", + path + } + }); +} +async function join(...paths) { + return invokeTauriCommand({ + __tauriModule: "Path", + message: { + cmd: "join", + paths + } + }); +} +async function dirname(path) { + return invokeTauriCommand({ + __tauriModule: "Path", + message: { + cmd: "dirname", + path + } + }); +} +async function extname(path) { + return invokeTauriCommand({ + __tauriModule: "Path", + message: { + cmd: "extname", + path + } + }); +} +async function basename(path, ext) { + return invokeTauriCommand({ + __tauriModule: "Path", + message: { + cmd: "basename", + path, + ext + } + }); +} +async function isAbsolute(path) { + return invokeTauriCommand({ + __tauriModule: "Path", + message: { + cmd: "isAbsolute", + path + } + }); +} +export { + BaseDirectory, + appCacheDir, + appConfigDir, + appDataDir, + appDir, + appLocalDataDir, + appLogDir, + audioDir, + basename, + cacheDir, + configDir, + dataDir, + delimiter, + desktopDir, + dirname, + documentDir, + downloadDir, + executableDir, + extname, + fontDir, + homeDir, + isAbsolute, + join, + localDataDir, + logDir, + normalize, + pictureDir, + publicDir, + resolve, + resolveResource, + resourceDir, + runtimeDir, + sep, + templateDir, + videoDir +}; diff --git a/dist/process.js b/src/process.js similarity index 100% rename from dist/process.js rename to src/process.js diff --git a/src/shell.js b/src/shell.js new file mode 100644 index 0000000..006bca0 --- /dev/null +++ b/src/shell.js @@ -0,0 +1,230 @@ +// tauri/tooling/api/src/tauri.ts +function uid() { + return window.crypto.getRandomValues(new Uint32Array(1))[0]; +} +function transformCallback(callback, once = false) { + const identifier = uid(); + const prop = `_${identifier}`; + Object.defineProperty(window, prop, { + value: (result) => { + if (once) { + Reflect.deleteProperty(window, prop); + } + return callback?.(result); + }, + writable: false, + configurable: true + }); + return identifier; +} +async function invoke(cmd, args = {}) { + return new Promise((resolve, reject) => { + const callback = transformCallback((e) => { + resolve(e); + Reflect.deleteProperty(window, `_${error}`); + }, true); + const error = transformCallback((e) => { + reject(e); + Reflect.deleteProperty(window, `_${callback}`); + }, true); + window.__TAURI_IPC__({ + cmd, + callback, + error, + ...args + }); + }); +} + +// tauri/tooling/api/src/helpers/tauri.ts +async function invokeTauriCommand(command) { + return invoke("tauri", command); +} + +// tauri/tooling/api/src/shell.ts +async function execute(onEvent, program, args = [], options) { + if (typeof args === "object") { + Object.freeze(args); + } + return invokeTauriCommand({ + __tauriModule: "Shell", + message: { + cmd: "execute", + program, + args, + options, + onEventFn: transformCallback(onEvent) + } + }); +} +var EventEmitter = class { + constructor() { + this.eventListeners = /* @__PURE__ */ Object.create(null); + } + addListener(eventName, listener) { + return this.on(eventName, listener); + } + removeListener(eventName, listener) { + return this.off(eventName, listener); + } + on(eventName, listener) { + if (eventName in this.eventListeners) { + this.eventListeners[eventName].push(listener); + } else { + this.eventListeners[eventName] = [listener]; + } + return this; + } + once(eventName, listener) { + const wrapper = (...args) => { + this.removeListener(eventName, wrapper); + listener(...args); + }; + return this.addListener(eventName, wrapper); + } + off(eventName, listener) { + if (eventName in this.eventListeners) { + this.eventListeners[eventName] = this.eventListeners[eventName].filter( + (l) => l !== listener + ); + } + return this; + } + removeAllListeners(event) { + if (event) { + delete this.eventListeners[event]; + } else { + this.eventListeners = /* @__PURE__ */ Object.create(null); + } + return this; + } + emit(eventName, ...args) { + if (eventName in this.eventListeners) { + const listeners = this.eventListeners[eventName]; + for (const listener of listeners) + listener(...args); + return true; + } + return false; + } + listenerCount(eventName) { + if (eventName in this.eventListeners) + return this.eventListeners[eventName].length; + return 0; + } + prependListener(eventName, listener) { + if (eventName in this.eventListeners) { + this.eventListeners[eventName].unshift(listener); + } else { + this.eventListeners[eventName] = [listener]; + } + return this; + } + prependOnceListener(eventName, listener) { + const wrapper = (...args) => { + this.removeListener(eventName, wrapper); + listener(...args); + }; + return this.prependListener(eventName, wrapper); + } +}; +var Child = class { + constructor(pid) { + this.pid = pid; + } + async write(data) { + return invokeTauriCommand({ + __tauriModule: "Shell", + message: { + cmd: "stdinWrite", + pid: this.pid, + buffer: typeof data === "string" ? data : Array.from(data) + } + }); + } + async kill() { + return invokeTauriCommand({ + __tauriModule: "Shell", + message: { + cmd: "killChild", + pid: this.pid + } + }); + } +}; +var Command = class extends EventEmitter { + constructor(program, args = [], options) { + super(); + this.stdout = new EventEmitter(); + this.stderr = new EventEmitter(); + this.program = program; + this.args = typeof args === "string" ? [args] : args; + this.options = options ?? {}; + } + static sidecar(program, args = [], options) { + const instance = new Command(program, args, options); + instance.options.sidecar = true; + return instance; + } + async spawn() { + return execute( + (event) => { + switch (event.event) { + case "Error": + this.emit("error", event.payload); + break; + case "Terminated": + this.emit("close", event.payload); + break; + case "Stdout": + this.stdout.emit("data", event.payload); + break; + case "Stderr": + this.stderr.emit("data", event.payload); + break; + } + }, + this.program, + this.args, + this.options + ).then((pid) => new Child(pid)); + } + async execute() { + return new Promise((resolve, reject) => { + this.on("error", reject); + const stdout = []; + const stderr = []; + this.stdout.on("data", (line) => { + stdout.push(line); + }); + this.stderr.on("data", (line) => { + stderr.push(line); + }); + this.on("close", (payload) => { + resolve({ + code: payload.code, + signal: payload.signal, + stdout: stdout.join("\n"), + stderr: stderr.join("\n") + }); + }); + this.spawn().catch(reject); + }); + } +}; +async function open(path, openWith) { + return invokeTauriCommand({ + __tauriModule: "Shell", + message: { + cmd: "open", + path, + with: openWith + } + }); +} +export { + Child, + Command, + EventEmitter, + open +}; diff --git a/dist/tauri.js b/src/tauri.js similarity index 100% rename from dist/tauri.js rename to src/tauri.js diff --git a/src/updater.js b/src/updater.js new file mode 100644 index 0000000..43fb58a --- /dev/null +++ b/src/updater.js @@ -0,0 +1,185 @@ +// tauri/tooling/api/src/tauri.ts +function uid() { + return window.crypto.getRandomValues(new Uint32Array(1))[0]; +} +function transformCallback(callback, once3 = false) { + const identifier = uid(); + const prop = `_${identifier}`; + Object.defineProperty(window, prop, { + value: (result) => { + if (once3) { + Reflect.deleteProperty(window, prop); + } + return callback?.(result); + }, + writable: false, + configurable: true + }); + return identifier; +} +async function invoke(cmd, args = {}) { + return new Promise((resolve, reject) => { + const callback = transformCallback((e) => { + resolve(e); + Reflect.deleteProperty(window, `_${error}`); + }, true); + const error = transformCallback((e) => { + reject(e); + Reflect.deleteProperty(window, `_${callback}`); + }, true); + window.__TAURI_IPC__({ + cmd, + callback, + error, + ...args + }); + }); +} + +// tauri/tooling/api/src/helpers/tauri.ts +async function invokeTauriCommand(command) { + return invoke("tauri", command); +} + +// tauri/tooling/api/src/helpers/event.ts +async function _unlisten(event, eventId) { + return invokeTauriCommand({ + __tauriModule: "Event", + message: { + cmd: "unlisten", + event, + eventId + } + }); +} +async function emit(event, windowLabel, payload) { + await invokeTauriCommand({ + __tauriModule: "Event", + message: { + cmd: "emit", + event, + windowLabel, + payload + } + }); +} +async function listen(event, windowLabel, handler) { + return invokeTauriCommand({ + __tauriModule: "Event", + message: { + cmd: "listen", + event, + windowLabel, + handler: transformCallback(handler) + } + }).then((eventId) => { + return async () => _unlisten(event, eventId); + }); +} +async function once(event, windowLabel, handler) { + return listen(event, windowLabel, (eventData) => { + handler(eventData); + _unlisten(event, eventData.id).catch(() => { + }); + }); +} + +// tauri/tooling/api/src/event.ts +async function listen2(event, handler) { + return listen(event, null, handler); +} +async function once2(event, handler) { + return once(event, null, handler); +} +async function emit2(event, payload) { + return emit(event, void 0, payload); +} + +// tauri/tooling/api/src/updater.ts +async function onUpdaterEvent(handler) { + return listen2("tauri://update-status" /* STATUS_UPDATE */, (data) => { + handler(data?.payload); + }); +} +async function installUpdate() { + let unlistenerFn; + function cleanListener() { + if (unlistenerFn) { + unlistenerFn(); + } + unlistenerFn = void 0; + } + return new Promise((resolve, reject) => { + function onStatusChange(statusResult) { + if (statusResult.error) { + cleanListener(); + return reject(statusResult.error); + } + if (statusResult.status === "DONE") { + cleanListener(); + return resolve(); + } + } + onUpdaterEvent(onStatusChange).then((fn) => { + unlistenerFn = fn; + }).catch((e) => { + cleanListener(); + throw e; + }); + emit2("tauri://update-install" /* INSTALL_UPDATE */).catch((e) => { + cleanListener(); + throw e; + }); + }); +} +async function checkUpdate() { + let unlistenerFn; + function cleanListener() { + if (unlistenerFn) { + unlistenerFn(); + } + unlistenerFn = void 0; + } + return new Promise((resolve, reject) => { + function onUpdateAvailable(manifest) { + cleanListener(); + return resolve({ + manifest, + shouldUpdate: true + }); + } + function onStatusChange(statusResult) { + if (statusResult.error) { + cleanListener(); + return reject(statusResult.error); + } + if (statusResult.status === "UPTODATE") { + cleanListener(); + return resolve({ + shouldUpdate: false + }); + } + } + once2("tauri://update-available" /* UPDATE_AVAILABLE */, (data) => { + onUpdateAvailable(data?.payload); + }).catch((e) => { + cleanListener(); + throw e; + }); + onUpdaterEvent(onStatusChange).then((fn) => { + unlistenerFn = fn; + }).catch((e) => { + cleanListener(); + throw e; + }); + emit2("tauri://update" /* CHECK_UPDATE */).catch((e) => { + cleanListener(); + throw e; + }); + }); +} +export { + checkUpdate, + installUpdate, + onUpdaterEvent +}; diff --git a/dist/window.js b/src/window.js similarity index 100% rename from dist/window.js rename to src/window.js From 355febf927aae7bf7b3ef6cb2adf16e1524943f7 Mon Sep 17 00:00:00 2001 From: Jonas Kruckenberg Date: Sun, 13 Nov 2022 21:06:06 +0100 Subject: [PATCH 11/29] improve error handling --- examples/test/src-tauri/src/main.rs | 7 +- examples/test/src/app.rs | 2 +- examples/test/src/clipboard.rs | 2 +- examples/test/src/event.rs | 6 +- examples/test/src/main.rs | 4 +- examples/test/src/window.rs | 2 +- src/app.rs | 43 ++- src/clipboard.rs | 18 +- src/event.rs | 39 ++- src/lib.rs | 10 +- src/tauri.rs | 45 ++- src/window.rs | 523 +++++++++++++++++----------- 12 files changed, 443 insertions(+), 258 deletions(-) diff --git a/examples/test/src-tauri/src/main.rs b/examples/test/src-tauri/src/main.rs index d367b50..afccf34 100644 --- a/examples/test/src-tauri/src/main.rs +++ b/examples/test/src-tauri/src/main.rs @@ -5,7 +5,7 @@ use std::sync::atomic::{AtomicBool, Ordering}; -use tauri::{State, Manager}; +use tauri::{Manager, State}; struct Received(AtomicBool); // Learn more about Tauri commands at https://tauri.app/v1/guides/features/command @@ -28,7 +28,10 @@ fn main() { let app_handle = app.handle(); app.listen_global("foo", move |_| { - app_handle.state::().0.store(true, Ordering::Relaxed); + app_handle + .state::() + .0 + .store(true, Ordering::Relaxed); }); Ok(()) diff --git a/examples/test/src/app.rs b/examples/test/src/app.rs index 7ce0760..5ed8b4d 100644 --- a/examples/test/src/app.rs +++ b/examples/test/src/app.rs @@ -31,4 +31,4 @@ pub async fn get_tauri_version() -> anyhow::Result<()> { ensure!(version.pre.is_empty()); Ok(()) -} \ No newline at end of file +} diff --git a/examples/test/src/clipboard.rs b/examples/test/src/clipboard.rs index e84c521..816b459 100644 --- a/examples/test/src/clipboard.rs +++ b/examples/test/src/clipboard.rs @@ -9,4 +9,4 @@ pub async fn test() -> anyhow::Result<()> { ensure!(text == Some("foobar".to_string())); Ok(()) -} \ No newline at end of file +} diff --git a/examples/test/src/event.rs b/examples/test/src/event.rs index 7c207a4..4b76306 100644 --- a/examples/test/src/event.rs +++ b/examples/test/src/event.rs @@ -4,7 +4,9 @@ use tauri_sys::{event, tauri}; pub async fn emit() -> anyhow::Result<()> { event::emit("foo", &"bar").await; - ensure!(tauri::invoke::<_, bool>("verify_receive", &()).await.unwrap()); + ensure!(tauri::invoke::<_, bool>("verify_receive", &()) + .await + .unwrap()); Ok(()) -} \ No newline at end of file +} diff --git a/examples/test/src/main.rs b/examples/test/src/main.rs index 83aed19..8931580 100644 --- a/examples/test/src/main.rs +++ b/examples/test/src/main.rs @@ -18,7 +18,9 @@ async fn exit_with_error(e: String) { e: String, } - tauri_sys::tauri::invoke::<_, ()>("exit_with_error", &Args { e }).await.unwrap(); + tauri_sys::tauri::invoke::<_, ()>("exit_with_error", &Args { e }) + .await + .unwrap(); } #[derive(Props)] diff --git a/examples/test/src/window.rs b/examples/test/src/window.rs index 0954ea5..5de1cca 100644 --- a/examples/test/src/window.rs +++ b/examples/test/src/window.rs @@ -10,4 +10,4 @@ pub async fn create_window() -> anyhow::Result<()> { win.close().await; Ok(()) -} \ No newline at end of file +} diff --git a/src/app.rs b/src/app.rs index fae2cfb..6107110 100644 --- a/src/app.rs +++ b/src/app.rs @@ -1,5 +1,7 @@ use semver::Version; +use crate::Error; + /// Gets the application name. /// /// # Example @@ -9,8 +11,10 @@ use semver::Version; /// const appName = await getName(); /// ``` #[inline(always)] -pub async fn get_name() -> String { - inner::getName().await.as_string().unwrap() +pub async fn get_name() -> crate::Result { + let js_val = inner::getName().await.map_err(Error::Other)?; + + Ok(serde_wasm_bindgen::from_value(js_val)?) } /// Gets the application version. @@ -23,8 +27,10 @@ pub async fn get_name() -> String { /// let version = get_version().await; /// ``` #[inline(always)] -pub async fn get_version() -> Version { - Version::parse(&inner::getVersion().await.as_string().unwrap()).unwrap() +pub async fn get_version() -> crate::Result { + let js_val = inner::getVersion().await.map_err(Error::Other)?; + + Ok(serde_wasm_bindgen::from_value(js_val)?) } /// Gets the Tauri version. @@ -37,8 +43,10 @@ pub async fn get_version() -> Version { /// let version = get_tauri_version().await; /// ``` #[inline(always)] -pub async fn get_tauri_version() -> Version { - Version::parse(&inner::getTauriVersion().await.as_string().unwrap()).unwrap() +pub async fn get_tauri_version() -> crate::Result { + let js_val = inner::getTauriVersion().await.map_err(Error::Other)?; + + Ok(serde_wasm_bindgen::from_value(js_val)?) } /// Shows the application on macOS. This function does not automatically focuses any app window. @@ -51,8 +59,8 @@ pub async fn get_tauri_version() -> Version { /// show().await; /// ``` #[inline(always)] -pub async fn show() { - inner::show().await; +pub async fn show() -> crate::Result<()> { + inner::show().await.map_err(Error::Other) } /// Hides the application on macOS. @@ -65,8 +73,8 @@ pub async fn show() { /// hide().await; /// ``` #[inline(always)] -pub async fn hide() { - inner::hide().await; +pub async fn hide() -> crate::Result<()> { + inner::hide().await.map_err(Error::Other) } mod inner { @@ -74,10 +82,15 @@ mod inner { #[wasm_bindgen(module = "/dist/app.js")] extern "C" { - pub async fn getName() -> JsValue; - pub async fn getTauriVersion() -> JsValue; - pub async fn getVersion() -> JsValue; - pub async fn hide(); - pub async fn show(); + #[wasm_bindgen(catch)] + pub async fn getName() -> Result; + #[wasm_bindgen(catch)] + pub async fn getTauriVersion() -> Result; + #[wasm_bindgen(catch)] + pub async fn getVersion() -> Result; + #[wasm_bindgen(catch)] + pub async fn hide() -> Result<(), JsValue>; + #[wasm_bindgen(catch)] + pub async fn show() -> Result<(), JsValue>; } } diff --git a/src/clipboard.rs b/src/clipboard.rs index a716929..04155f4 100644 --- a/src/clipboard.rs +++ b/src/clipboard.rs @@ -1,3 +1,5 @@ +use crate::Error; + /// Gets the clipboard content as plain text. /// /// # Example @@ -8,8 +10,10 @@ /// let clipboard_text = read_text().await; /// ``` #[inline(always)] -pub async fn read_text() -> Option { - inner::readText().await.as_string() +pub async fn read_text() -> crate::Result { + let js_val = inner::readText().await.map_err(Error::Other)?; + + Ok(serde_wasm_bindgen::from_value(js_val)?) } /// Writes plain text to the clipboard. @@ -25,8 +29,8 @@ pub async fn read_text() -> Option { /// /// @returns A promise indicating the success or failure of the operation. #[inline(always)] -pub async fn write_text(text: &str) { - inner::writeText(text).await +pub async fn write_text(text: &str) -> crate::Result<()> { + inner::writeText(text).await.map_err(Error::Other) } mod inner { @@ -34,7 +38,9 @@ mod inner { #[wasm_bindgen(module = "/dist/clipboard.js")] extern "C" { - pub async fn readText() -> JsValue; - pub async fn writeText(text: &str); + #[wasm_bindgen(catch)] + pub async fn readText() -> Result; + #[wasm_bindgen(catch)] + pub async fn writeText(text: &str) -> Result<(), JsValue>; } } diff --git a/src/event.rs b/src/event.rs index 37cdb0f..fb89b77 100644 --- a/src/event.rs +++ b/src/event.rs @@ -3,6 +3,8 @@ use std::fmt::Debug; use serde::{de::DeserializeOwned, Deserialize, Serialize}; use wasm_bindgen::{prelude::Closure, JsValue}; +use crate::Error; + #[derive(Deserialize)] pub struct Event { /// Event name @@ -45,8 +47,10 @@ impl Debug for Event { /// /// @param event Event name. Must include only alphanumeric characters, `-`, `/`, `:` and `_`. #[inline(always)] -pub async fn emit(event: &str, payload: &T) { - inner::emit(event, serde_wasm_bindgen::to_value(payload).unwrap()).await +pub async fn emit(event: &str, payload: &T) -> crate::Result<()> { + inner::emit(event, serde_wasm_bindgen::to_value(payload)?) + .await + .map_err(Error::Other) } /// Listen to an event from the backend. @@ -70,7 +74,7 @@ pub async fn emit(event: &str, payload: &T) { /// /// Note that removing the listener is required if your listener goes out of scope e.g. the component is unmounted. #[inline(always)] -pub async fn listen(event: &str, mut handler: H) -> impl FnOnce() +pub async fn listen(event: &str, mut handler: H) -> crate::Result where T: DeserializeOwned, H: FnMut(Event) + 'static, @@ -79,14 +83,14 @@ where (handler)(serde_wasm_bindgen::from_value(raw).unwrap()) }); - let unlisten = inner::listen(event, &closure).await; + let unlisten = inner::listen(event, &closure).await.map_err(Error::Other)?; closure.forget(); let unlisten = js_sys::Function::from(unlisten); - move || { + Ok(move || { unlisten.call0(&wasm_bindgen::JsValue::NULL).unwrap(); - } + }) } /// Listen to an one-off event from the backend. @@ -115,7 +119,7 @@ where /// /// Note that removing the listener is required if your listener goes out of scope e.g. the component is unmounted. #[inline(always)] -pub async fn once(event: &str, mut handler: H) -> impl FnOnce() +pub async fn once(event: &str, mut handler: H) -> crate::Result where T: DeserializeOwned, H: FnMut(Event) + 'static, @@ -124,14 +128,14 @@ where (handler)(serde_wasm_bindgen::from_value(raw).unwrap()) }); - let unlisten = inner::once(event, &closure).await; + let unlisten = inner::once(event, &closure).await.map_err(Error::Other)?; closure.forget(); let unlisten = js_sys::Function::from(unlisten); - move || { + Ok(move || { unlisten.call0(&wasm_bindgen::JsValue::NULL).unwrap(); - } + }) } mod inner { @@ -142,8 +146,17 @@ mod inner { #[wasm_bindgen(module = "/dist/event.js")] extern "C" { - pub async fn emit(event: &str, payload: JsValue); - pub async fn listen(event: &str, handler: &Closure) -> JsValue; - pub async fn once(event: &str, handler: &Closure) -> JsValue; + #[wasm_bindgen(catch)] + pub async fn emit(event: &str, payload: JsValue) -> Result<(), JsValue>; + #[wasm_bindgen(catch)] + pub async fn listen( + event: &str, + handler: &Closure, + ) -> Result; + #[wasm_bindgen(catch)] + pub async fn once( + event: &str, + handler: &Closure, + ) -> Result; } } diff --git a/src/lib.rs b/src/lib.rs index f65d708..780ee6f 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -8,17 +8,23 @@ pub mod clipboard; pub mod event; #[cfg(feature = "mocks")] pub mod mocks; +#[cfg(feature = "process")] +pub mod process; #[cfg(feature = "tauri")] pub mod tauri; #[cfg(feature = "window")] pub mod window; -#[cfg(feature = "process")] -pub mod process; #[derive(Debug, thiserror::Error)] pub enum Error { #[error(transparent)] Serde(#[from] serde_wasm_bindgen::Error), + #[error("Unknown Theme \"{0}\". Expected one of \"light\",\"dark\"")] + UnknownTheme(String), + #[error("Invalid Url {0}")] + InvalidUrl(#[from] url::ParseError), + #[error("Invalid Version {0}")] + InvalidVersion(#[from] semver::Error), #[error("{0:?}")] Other(JsValue), } diff --git a/src/tauri.rs b/src/tauri.rs index ad43df3..98654e6 100644 --- a/src/tauri.rs +++ b/src/tauri.rs @@ -1,6 +1,8 @@ use serde::{de::DeserializeOwned, Serialize}; use url::Url; +use crate::Error; + /// Convert a device file path to an URL that can be loaded by the webview. /// Note that `asset:` and `https://asset.localhost` must be added to [`tauri.security.csp`](https://tauri.app/v1/api/config/#securityconfig.csp) in `tauri.conf.json`. /// Example CSP value: `"csp": "default-src 'self'; img-src 'self' asset: https://asset.localhost"` to use the asset protocol on image sources. @@ -36,14 +38,12 @@ use url::Url; /// /// @return the URL that can be used as source on the webview. #[inline(always)] -pub async fn convert_file_src(file_path: &str, protocol: Option<&str>) -> Url { - Url::parse( - &inner::convertFileSrc(file_path, protocol) - .await - .as_string() - .unwrap(), - ) - .unwrap() +pub async fn convert_file_src(file_path: &str, protocol: Option<&str>) -> crate::Result { + let js_val = inner::convertFileSrc(file_path, protocol) + .await + .map_err(Error::Other)?; + + Ok(serde_wasm_bindgen::from_value(js_val)?) } /// Sends a message to the backend. @@ -66,9 +66,10 @@ pub async fn convert_file_src(file_path: &str, protocol: Option<&str>) -> Url { /// @return A promise resolving or rejecting to the backend response. #[inline(always)] pub async fn invoke(cmd: &str, args: &A) -> crate::Result { - let res = inner::invoke(cmd, serde_wasm_bindgen::to_value(args).unwrap()).await; + let raw = inner::invoke(cmd, serde_wasm_bindgen::to_value(args)?) + .await + .map_err(crate::Error::Other)?; - let raw = res.map_err(crate::Error::Other)?; serde_wasm_bindgen::from_value(raw).map_err(Into::into) } @@ -77,14 +78,18 @@ pub async fn invoke(cmd: &str, args: &A) -> c /// /// @return A unique identifier associated with the callback function. #[inline(always)] -pub async fn transform_callback(callback: &dyn Fn(T), once: bool) -> f64 { - inner::transformCallback( +pub async fn transform_callback( + callback: &dyn Fn(T), + once: bool, +) -> crate::Result { + let js_val = inner::transformCallback( &|raw| callback(serde_wasm_bindgen::from_value(raw).unwrap()), once, ) .await - .as_f64() - .unwrap() + .map_err(Error::Other)?; + + Ok(serde_wasm_bindgen::from_value(js_val)?) } mod inner { @@ -92,9 +97,17 @@ mod inner { #[wasm_bindgen(module = "/dist/tauri.js")] extern "C" { - pub async fn convertFileSrc(filePath: &str, protocol: Option<&str>) -> JsValue; + #[wasm_bindgen(catch)] + pub async fn convertFileSrc( + filePath: &str, + protocol: Option<&str>, + ) -> Result; #[wasm_bindgen(catch)] pub async fn invoke(cmd: &str, args: JsValue) -> Result; - pub async fn transformCallback(callback: &dyn Fn(JsValue), once: bool) -> JsValue; + #[wasm_bindgen(catch)] + pub async fn transformCallback( + callback: &dyn Fn(JsValue), + once: bool, + ) -> Result; } } diff --git a/src/window.rs b/src/window.rs index 3bec133..d0a88bd 100644 --- a/src/window.rs +++ b/src/window.rs @@ -1,4 +1,4 @@ -use crate::event::Event; +use crate::{event::Event, Error}; use serde::{de::DeserializeOwned, Serialize}; use std::fmt::Display; use wasm_bindgen::{prelude::Closure, JsCast, JsValue}; @@ -135,192 +135,279 @@ impl WebviewWindow { self.0.label() } - pub async fn scale_factor(&self) -> f64 { - self.0.scaleFactor().await.as_f64().unwrap() + pub async fn scale_factor(&self) -> crate::Result { + let js_val = self.0.scaleFactor().await.map_err(Error::Other)?; + + Ok(serde_wasm_bindgen::from_value(js_val)?) } - pub async fn inner_position(&self) -> PhysicalPosition { - PhysicalPosition(self.0.innerPosition().await.unchecked_into()) + pub async fn inner_position(&self) -> crate::Result { + Ok(PhysicalPosition( + self.0 + .innerPosition() + .await + .map_err(Error::Other)? + .unchecked_into(), + )) } - pub async fn outer_position(&self) -> PhysicalPosition { - PhysicalPosition(self.0.outerPosition().await.unchecked_into()) + pub async fn outer_position(&self) -> crate::Result { + Ok(PhysicalPosition( + self.0 + .outerPosition() + .await + .map_err(Error::Other)? + .unchecked_into(), + )) } - pub async fn inner_size(&self) -> PhysicalSize { - PhysicalSize(self.0.innerSize().await.unchecked_into()) + pub async fn inner_size(&self) -> crate::Result { + Ok(PhysicalSize( + self.0 + .innerSize() + .await + .map_err(Error::Other)? + .unchecked_into(), + )) } - pub async fn outer_size(&self) -> PhysicalSize { - PhysicalSize(self.0.outerSize().await.unchecked_into()) + pub async fn outer_size(&self) -> crate::Result { + Ok(PhysicalSize( + self.0 + .outerSize() + .await + .map_err(Error::Other)? + .unchecked_into(), + )) } - pub async fn is_fullscreen(&self) -> bool { - self.0.isFullscreen().await.as_bool().unwrap() + pub async fn is_fullscreen(&self) -> crate::Result { + let js_val = self.0.isFullscreen().await.map_err(Error::Other)?; + + Ok(serde_wasm_bindgen::from_value(js_val)?) } - pub async fn is_maximized(&self) -> bool { - self.0.isMaximized().await.as_bool().unwrap() + pub async fn is_maximized(&self) -> crate::Result { + let js_val = self.0.isMaximized().await.map_err(Error::Other)?; + + Ok(serde_wasm_bindgen::from_value(js_val)?) } - pub async fn is_decorated(&self) -> bool { - self.0.isDecorated().await.as_bool().unwrap() + pub async fn is_decorated(&self) -> crate::Result { + let js_val = self.0.isDecorated().await.map_err(Error::Other)?; + + Ok(serde_wasm_bindgen::from_value(js_val)?) } - pub async fn is_resizable(&self) -> bool { - self.0.isResizable().await.as_bool().unwrap() + pub async fn is_resizable(&self) -> crate::Result { + let js_val = self.0.isResizable().await.map_err(Error::Other)?; + + Ok(serde_wasm_bindgen::from_value(js_val)?) } - pub async fn is_visible(&self) -> bool { - self.0.isVisible().await.as_bool().unwrap() + pub async fn is_visible(&self) -> crate::Result { + let js_val = self.0.isVisible().await.map_err(Error::Other)?; + + Ok(serde_wasm_bindgen::from_value(js_val)?) } - pub async fn theme(&self) -> Theme { - match self.0.theme().await.as_string().unwrap().as_str() { - "light" => Theme::Light, - "dark" => Theme::Dark, - _ => panic!("Unknown theme"), + pub async fn theme(&self) -> crate::Result { + let js_val = self.0.theme().await.map_err(Error::Other)?; + + let str = serde_wasm_bindgen::from_value::(js_val)?; + + match str.as_str() { + "light" => Ok(Theme::Light), + "dark" => Ok(Theme::Dark), + _ => Err(Error::UnknownTheme(str)), } } - pub async fn center(&self) { - self.0.center().await; + pub async fn center(&self) -> crate::Result<()> { + self.0.center().await.map_err(Error::Other) } - pub async fn request_user_attention(&self, request_type: UserAttentionType) { - self.0.requestUserAttention(request_type as u32).await; + pub async fn request_user_attention( + &self, + request_type: UserAttentionType, + ) -> crate::Result<()> { + self.0 + .requestUserAttention(request_type as u32) + .await + .map_err(Error::Other) } - pub async fn set_resizable(&self, resizable: bool) { - self.0.setResizable(resizable).await; + pub async fn set_resizable(&self, resizable: bool) -> crate::Result<()> { + self.0.setResizable(resizable).await.map_err(Error::Other) } - pub async fn set_title(&self, title: impl AsRef) { - self.0.setTitle(title.as_ref()).await; + pub async fn set_title(&self, title: impl AsRef) -> crate::Result<()> { + self.0.setTitle(title.as_ref()).await.map_err(Error::Other) } - pub async fn maximize(&self) { - self.0.maximize().await; + pub async fn maximize(&self) -> crate::Result<()> { + self.0.maximize().await.map_err(Error::Other) } - pub async fn unmaximize(&self) { - self.0.unmaximize().await; + pub async fn unmaximize(&self) -> crate::Result<()> { + self.0.unmaximize().await.map_err(Error::Other) } - pub async fn toggle_maximize(&self) { - self.0.toggleMaximize().await; + pub async fn toggle_maximize(&self) -> crate::Result<()> { + self.0.toggleMaximize().await.map_err(Error::Other) } - pub async fn minimize(&self) { - self.0.minimize().await; + pub async fn minimize(&self) -> crate::Result<()> { + self.0.minimize().await.map_err(Error::Other) } - pub async fn unminimize(&self) { - self.0.unminimize().await; + pub async fn unminimize(&self) -> crate::Result<()> { + self.0.unminimize().await.map_err(Error::Other) } - pub async fn show(&self) { - self.0.show().await; + pub async fn show(&self) -> crate::Result<()> { + self.0.show().await.map_err(Error::Other) } - pub async fn hide(&self) { - self.0.hide().await; + pub async fn hide(&self) -> crate::Result<()> { + self.0.hide().await.map_err(Error::Other) } - pub async fn close(&self) { - self.0.close().await; + pub async fn close(&self) -> crate::Result<()> { + self.0.close().await.map_err(Error::Other) } - pub async fn set_decorations(&self, decorations: bool) { - self.0.setDecorations(decorations).await; + pub async fn set_decorations(&self, decorations: bool) -> crate::Result<()> { + self.0 + .setDecorations(decorations) + .await + .map_err(Error::Other) } - pub async fn set_always_on_top(&self, always_on_top: bool) { - self.0.setAlwaysOnTop(always_on_top).await; + pub async fn set_always_on_top(&self, always_on_top: bool) -> crate::Result<()> { + self.0 + .setAlwaysOnTop(always_on_top) + .await + .map_err(Error::Other) } - pub async fn set_size(&self, size: Size) { + pub async fn set_size(&self, size: Size) -> crate::Result<()> { match size { - Size::Physical(size) => self.0.setSizePhysical(size.0).await, - Size::Logical(size) => self.0.setSizeLogical(size.0).await, - }; - } - - pub async fn set_min_size(&self, size: Option) { - match size { - None => self.0.setMinSizePhysical(None).await, - Some(Size::Physical(size)) => self.0.setMinSizePhysical(Some(size.0)).await, - Some(Size::Logical(size)) => self.0.setMinSizeLogical(Some(size.0)).await, + Size::Physical(size) => self.0.setSizePhysical(size.0).await.map_err(Error::Other), + Size::Logical(size) => self.0.setSizeLogical(size.0).await.map_err(Error::Other), } } - pub async fn set_max_size(&self, size: Option) { + pub async fn set_min_size(&self, size: Option) -> crate::Result<()> { match size { - None => self.0.setMaxSizePhysical(None).await, - Some(Size::Physical(size)) => self.0.setMaxSizePhysical(Some(size.0)).await, - Some(Size::Logical(size)) => self.0.setMaxSizeLogical(Some(size.0)).await, + None => self.0.setMinSizePhysical(None).await.map_err(Error::Other), + Some(Size::Physical(size)) => self + .0 + .setMinSizePhysical(Some(size.0)) + .await + .map_err(Error::Other), + Some(Size::Logical(size)) => self + .0 + .setMinSizeLogical(Some(size.0)) + .await + .map_err(Error::Other), } } - pub async fn set_position(&self, position: Position) { + pub async fn set_max_size(&self, size: Option) -> crate::Result<()> { + match size { + None => self.0.setMaxSizePhysical(None).await.map_err(Error::Other), + Some(Size::Physical(size)) => self + .0 + .setMaxSizePhysical(Some(size.0)) + .await + .map_err(Error::Other), + Some(Size::Logical(size)) => self + .0 + .setMaxSizeLogical(Some(size.0)) + .await + .map_err(Error::Other), + } + } + + pub async fn set_position(&self, position: Position) -> crate::Result<()> { match position { - Position::Physical(pos) => self.0.setPositionPhysical(pos.0).await, - Position::Logical(pos) => self.0.setPositionLogical(pos.0).await, + Position::Physical(pos) => self + .0 + .setPositionPhysical(pos.0) + .await + .map_err(Error::Other), + Position::Logical(pos) => self.0.setPositionLogical(pos.0).await.map_err(Error::Other), } } - pub async fn set_fullscreen(&self, fullscreen: bool) { - self.0.setFullscreen(fullscreen).await; + pub async fn set_fullscreen(&self, fullscreen: bool) -> crate::Result<()> { + self.0.setFullscreen(fullscreen).await.map_err(Error::Other) } - pub async fn set_focus(&self) { - self.0.setFocus().await; + pub async fn set_focus(&self) -> crate::Result<()> { + self.0.setFocus().await.map_err(Error::Other) } - pub async fn set_icon(&self, icon: &[u8]) { - self.0.setIcon(icon).await; + pub async fn set_icon(&self, icon: &[u8]) -> crate::Result<()> { + self.0.setIcon(icon).await.map_err(Error::Other) } - pub async fn set_skip_taskbar(&self, skip: bool) { - self.0.setSkipTaskbar(skip).await; + pub async fn set_skip_taskbar(&self, skip: bool) -> crate::Result<()> { + self.0.setSkipTaskbar(skip).await.map_err(Error::Other) } - pub async fn set_cursor_grab(&self, grab: bool) { - self.0.setCursorGrab(grab).await; + pub async fn set_cursor_grab(&self, grab: bool) -> crate::Result<()> { + self.0.setCursorGrab(grab).await.map_err(Error::Other) } - pub async fn set_cursor_visible(&self, visible: bool) { - self.0.setCursorVisible(visible).await; + pub async fn set_cursor_visible(&self, visible: bool) -> crate::Result<()> { + self.0.setCursorVisible(visible).await.map_err(Error::Other) } - pub async fn set_cursor_icon(&self, icon: CursorIcon) { - self.0.setCursorIcon(&icon.to_string()).await; + pub async fn set_cursor_icon(&self, icon: CursorIcon) -> crate::Result<()> { + self.0 + .setCursorIcon(&icon.to_string()) + .await + .map_err(Error::Other) } - pub async fn set_cursor_position(&self, position: Position) { + pub async fn set_cursor_position(&self, position: Position) -> crate::Result<()> { match position { - Position::Physical(pos) => self.0.setCursorPositionPhysical(pos.0).await, - Position::Logical(pos) => self.0.setCursorPositionLogical(pos.0).await, + Position::Physical(pos) => self + .0 + .setCursorPositionPhysical(pos.0) + .await + .map_err(Error::Other), + Position::Logical(pos) => self + .0 + .setCursorPositionLogical(pos.0) + .await + .map_err(Error::Other), } } - pub async fn set_ignore_cursor_events(&self, ignore: bool) { - self.0.setIgnoreCursorEvents(ignore).await; + pub async fn set_ignore_cursor_events(&self, ignore: bool) -> crate::Result<()> { + self.0 + .setIgnoreCursorEvents(ignore) + .await + .map_err(Error::Other) } - pub async fn start_dragging(&self) { - self.0.startDragging().await; + pub async fn start_dragging(&self) -> crate::Result<()> { + self.0.startDragging().await.map_err(Error::Other) } #[inline(always)] - pub async fn emit(&self, event: &str, payload: &T) { + pub async fn emit(&self, event: &str, payload: &T) -> crate::Result<()> { self.0 .emit(event, serde_wasm_bindgen::to_value(payload).unwrap()) - .await; + .await + .map_err(Error::Other) } #[inline(always)] - pub async fn listen(&self, event: &str, mut handler: H) -> impl FnOnce() + pub async fn listen(&self, event: &str, mut handler: H) -> crate::Result where T: DeserializeOwned, H: FnMut(Event) + 'static, @@ -329,18 +416,18 @@ impl WebviewWindow { (handler)(serde_wasm_bindgen::from_value(raw).unwrap()) }); - let unlisten = self.0.listen(event, &closure).await; + let unlisten = self.0.listen(event, &closure).await.map_err(Error::Other)?; closure.forget(); let unlisten = js_sys::Function::from(unlisten); - move || { + Ok(move || { unlisten.call0(&wasm_bindgen::JsValue::NULL).unwrap(); - } + }) } #[inline(always)] - pub async fn once(&self, event: &str, mut handler: H) -> impl FnOnce() + pub async fn once(&self, event: &str, mut handler: H) -> crate::Result where T: DeserializeOwned, H: FnMut(Event) + 'static, @@ -349,14 +436,14 @@ impl WebviewWindow { (handler)(serde_wasm_bindgen::from_value(raw).unwrap()) }); - let unlisten = self.0.once(event, &closure).await; + let unlisten = self.0.once(event, &closure).await.map_err(Error::Other)?; closure.forget(); let unlisten = js_sys::Function::from(unlisten); - move || { + Ok(move || { unlisten.call0(&wasm_bindgen::JsValue::NULL).unwrap(); - } + }) } } @@ -529,7 +616,7 @@ impl Iterator for AvailableMonitors { pub async fn available_monitors() -> AvailableMonitors { AvailableMonitors { idx: 0, - array: inner::availableMonitors().await.unchecked_into() + array: inner::availableMonitors().await.unchecked_into(), } } @@ -613,20 +700,24 @@ mod inner { pub type WebviewWindowHandle; #[wasm_bindgen(constructor)] pub fn new(label: &str) -> WebviewWindowHandle; - #[wasm_bindgen(method)] + #[wasm_bindgen(method, catch)] pub async fn listen( this: &WebviewWindowHandle, event: &str, handler: &Closure, - ) -> JsValue; - #[wasm_bindgen(method)] + ) -> Result; + #[wasm_bindgen(method, catch)] pub async fn once( this: &WebviewWindowHandle, event: &str, handler: &Closure, - ) -> JsValue; - #[wasm_bindgen(method)] - pub async fn emit(this: &WebviewWindowHandle, event: &str, payload: JsValue); + ) -> Result; + #[wasm_bindgen(method, catch)] + pub async fn emit( + this: &WebviewWindowHandle, + event: &str, + payload: JsValue, + ) -> Result<(), JsValue>; } #[wasm_bindgen(module = "/dist/window.js")] @@ -638,94 +729,130 @@ mod inner { pub fn new(label: &str) -> WindowManager; #[wasm_bindgen(method, getter)] pub fn label(this: &WindowManager) -> String; - #[wasm_bindgen(method)] - pub async fn scaleFactor(this: &WindowManager) -> JsValue; - #[wasm_bindgen(method)] - pub async fn innerPosition(this: &WindowManager) -> JsValue; - #[wasm_bindgen(method)] - pub async fn outerPosition(this: &WindowManager) -> JsValue; - #[wasm_bindgen(method)] - pub async fn innerSize(this: &WindowManager) -> JsValue; - #[wasm_bindgen(method)] - pub async fn outerSize(this: &WindowManager) -> JsValue; - #[wasm_bindgen(method)] - pub async fn isFullscreen(this: &WindowManager) -> JsValue; - #[wasm_bindgen(method)] - pub async fn isMaximized(this: &WindowManager) -> JsValue; - #[wasm_bindgen(method)] - pub async fn isDecorated(this: &WindowManager) -> JsValue; - #[wasm_bindgen(method)] - pub async fn isResizable(this: &WindowManager) -> JsValue; - #[wasm_bindgen(method)] - pub async fn isVisible(this: &WindowManager) -> JsValue; - #[wasm_bindgen(method)] - pub async fn theme(this: &WindowManager) -> JsValue; - #[wasm_bindgen(method)] - pub async fn center(this: &WindowManager); - #[wasm_bindgen(method)] - pub async fn requestUserAttention(this: &WindowManager, requestType: u32); - #[wasm_bindgen(method)] - pub async fn setResizable(this: &WindowManager, resizable: bool); - #[wasm_bindgen(method)] - pub async fn setTitle(this: &WindowManager, title: &str); - #[wasm_bindgen(method)] - pub async fn maximize(this: &WindowManager); - #[wasm_bindgen(method)] - pub async fn unmaximize(this: &WindowManager); - #[wasm_bindgen(method)] - pub async fn toggleMaximize(this: &WindowManager); - #[wasm_bindgen(method)] - pub async fn minimize(this: &WindowManager); - #[wasm_bindgen(method)] - pub async fn unminimize(this: &WindowManager); - #[wasm_bindgen(method)] - pub async fn show(this: &WindowManager); - #[wasm_bindgen(method)] - pub async fn hide(this: &WindowManager); - #[wasm_bindgen(method)] - pub async fn close(this: &WindowManager); - #[wasm_bindgen(method)] - pub async fn setDecorations(this: &WindowManager, decorations: bool); - #[wasm_bindgen(method)] - pub async fn setAlwaysOnTop(this: &WindowManager, alwaysOnTop: bool); - #[wasm_bindgen(method, js_name = setSize)] - pub async fn setSizePhysical(this: &WindowManager, size: PhysicalSize); - #[wasm_bindgen(method, js_name = setSize)] - pub async fn setSizeLogical(this: &WindowManager, size: LogicalSize); - #[wasm_bindgen(method, js_name = setMinSize)] - pub async fn setMinSizePhysical(this: &WindowManager, size: Option); - #[wasm_bindgen(method, js_name = setMinSize)] - pub async fn setMinSizeLogical(this: &WindowManager, size: Option); - #[wasm_bindgen(method, js_name = setMaxSize)] - pub async fn setMaxSizePhysical(this: &WindowManager, size: Option); - #[wasm_bindgen(method, js_name = setMinSize)] - pub async fn setMaxSizeLogical(this: &WindowManager, size: Option); - #[wasm_bindgen(method, js_name = setPosition)] - pub async fn setPositionPhysical(this: &WindowManager, position: PhysicalPosition); - #[wasm_bindgen(method, js_name = setPosition)] - pub async fn setPositionLogical(this: &WindowManager, position: LogicalPosition); - #[wasm_bindgen(method)] - pub async fn setFullscreen(this: &WindowManager, fullscreen: bool); - #[wasm_bindgen(method)] - pub async fn setFocus(this: &WindowManager); - #[wasm_bindgen(method)] - pub async fn setIcon(this: &WindowManager, icon: &[u8]); - #[wasm_bindgen(method)] - pub async fn setSkipTaskbar(this: &WindowManager, skip: bool); - #[wasm_bindgen(method)] - pub async fn setCursorGrab(this: &WindowManager, grab: bool); - #[wasm_bindgen(method)] - pub async fn setCursorVisible(this: &WindowManager, visible: bool); - #[wasm_bindgen(method)] - pub async fn setCursorIcon(this: &WindowManager, icon: &str); - #[wasm_bindgen(method, js_name = setCursorPosition)] - pub async fn setCursorPositionPhysical(this: &WindowManager, position: PhysicalPosition); - #[wasm_bindgen(method, js_name = setCursorPosition)] - pub async fn setCursorPositionLogical(this: &WindowManager, position: LogicalPosition); - #[wasm_bindgen(method)] - pub async fn setIgnoreCursorEvents(this: &WindowManager, ignore: bool); - #[wasm_bindgen(method)] - pub async fn startDragging(this: &WindowManager); + #[wasm_bindgen(method, catch)] + pub async fn scaleFactor(this: &WindowManager) -> Result; + #[wasm_bindgen(method, catch)] + pub async fn innerPosition(this: &WindowManager) -> Result; + #[wasm_bindgen(method, catch)] + pub async fn outerPosition(this: &WindowManager) -> Result; + #[wasm_bindgen(method, catch)] + pub async fn innerSize(this: &WindowManager) -> Result; + #[wasm_bindgen(method, catch)] + pub async fn outerSize(this: &WindowManager) -> Result; + #[wasm_bindgen(method, catch)] + pub async fn isFullscreen(this: &WindowManager) -> Result; + #[wasm_bindgen(method, catch)] + pub async fn isMaximized(this: &WindowManager) -> Result; + #[wasm_bindgen(method, catch)] + pub async fn isDecorated(this: &WindowManager) -> Result; + #[wasm_bindgen(method, catch)] + pub async fn isResizable(this: &WindowManager) -> Result; + #[wasm_bindgen(method, catch)] + pub async fn isVisible(this: &WindowManager) -> Result; + #[wasm_bindgen(method, catch)] + pub async fn theme(this: &WindowManager) -> Result; + #[wasm_bindgen(method, catch)] + pub async fn center(this: &WindowManager) -> Result<(), JsValue>; + #[wasm_bindgen(method, catch)] + pub async fn requestUserAttention( + this: &WindowManager, + requestType: u32, + ) -> Result<(), JsValue>; + #[wasm_bindgen(method, catch)] + pub async fn setResizable(this: &WindowManager, resizable: bool) -> Result<(), JsValue>; + #[wasm_bindgen(method, catch)] + pub async fn setTitle(this: &WindowManager, title: &str) -> Result<(), JsValue>; + #[wasm_bindgen(method, catch)] + pub async fn maximize(this: &WindowManager) -> Result<(), JsValue>; + #[wasm_bindgen(method, catch)] + pub async fn unmaximize(this: &WindowManager) -> Result<(), JsValue>; + #[wasm_bindgen(method, catch)] + pub async fn toggleMaximize(this: &WindowManager) -> Result<(), JsValue>; + #[wasm_bindgen(method, catch)] + pub async fn minimize(this: &WindowManager) -> Result<(), JsValue>; + #[wasm_bindgen(method, catch)] + pub async fn unminimize(this: &WindowManager) -> Result<(), JsValue>; + #[wasm_bindgen(method, catch)] + pub async fn show(this: &WindowManager) -> Result<(), JsValue>; + #[wasm_bindgen(method, catch)] + pub async fn hide(this: &WindowManager) -> Result<(), JsValue>; + #[wasm_bindgen(method, catch)] + pub async fn close(this: &WindowManager) -> Result<(), JsValue>; + #[wasm_bindgen(method, catch)] + pub async fn setDecorations(this: &WindowManager, decorations: bool) + -> Result<(), JsValue>; + #[wasm_bindgen(method, catch)] + pub async fn setAlwaysOnTop(this: &WindowManager, alwaysOnTop: bool) + -> Result<(), JsValue>; + #[wasm_bindgen(method, js_name = setSize, catch)] + pub async fn setSizePhysical( + this: &WindowManager, + size: PhysicalSize, + ) -> Result<(), JsValue>; + #[wasm_bindgen(method, js_name = setSize, catch)] + pub async fn setSizeLogical(this: &WindowManager, size: LogicalSize) + -> Result<(), JsValue>; + #[wasm_bindgen(method, js_name = setMinSize, catch)] + pub async fn setMinSizePhysical( + this: &WindowManager, + size: Option, + ) -> Result<(), JsValue>; + #[wasm_bindgen(method, js_name = setMinSize, catch)] + pub async fn setMinSizeLogical( + this: &WindowManager, + size: Option, + ) -> Result<(), JsValue>; + #[wasm_bindgen(method, js_name = setMaxSize, catch)] + pub async fn setMaxSizePhysical( + this: &WindowManager, + size: Option, + ) -> Result<(), JsValue>; + #[wasm_bindgen(method, js_name = setMinSize, catch)] + pub async fn setMaxSizeLogical( + this: &WindowManager, + size: Option, + ) -> Result<(), JsValue>; + #[wasm_bindgen(method, js_name = setPosition, catch)] + pub async fn setPositionPhysical( + this: &WindowManager, + position: PhysicalPosition, + ) -> Result<(), JsValue>; + #[wasm_bindgen(method, js_name = setPosition, catch)] + pub async fn setPositionLogical( + this: &WindowManager, + position: LogicalPosition, + ) -> Result<(), JsValue>; + #[wasm_bindgen(method, catch)] + pub async fn setFullscreen(this: &WindowManager, fullscreen: bool) -> Result<(), JsValue>; + #[wasm_bindgen(method, catch)] + pub async fn setFocus(this: &WindowManager) -> Result<(), JsValue>; + #[wasm_bindgen(method, catch)] + pub async fn setIcon(this: &WindowManager, icon: &[u8]) -> Result<(), JsValue>; + #[wasm_bindgen(method, catch)] + pub async fn setSkipTaskbar(this: &WindowManager, skip: bool) -> Result<(), JsValue>; + #[wasm_bindgen(method, catch)] + pub async fn setCursorGrab(this: &WindowManager, grab: bool) -> Result<(), JsValue>; + #[wasm_bindgen(method, catch)] + pub async fn setCursorVisible(this: &WindowManager, visible: bool) -> Result<(), JsValue>; + #[wasm_bindgen(method, catch)] + pub async fn setCursorIcon(this: &WindowManager, icon: &str) -> Result<(), JsValue>; + #[wasm_bindgen(method, js_name = setCursorPosition, catch)] + pub async fn setCursorPositionPhysical( + this: &WindowManager, + position: PhysicalPosition, + ) -> Result<(), JsValue>; + #[wasm_bindgen(method, js_name = setCursorPosition, catch)] + pub async fn setCursorPositionLogical( + this: &WindowManager, + position: LogicalPosition, + ) -> Result<(), JsValue>; + #[wasm_bindgen(method, catch)] + pub async fn setIgnoreCursorEvents( + this: &WindowManager, + ignore: bool, + ) -> Result<(), JsValue>; + #[wasm_bindgen(method, catch)] + pub async fn startDragging(this: &WindowManager) -> Result<(), JsValue>; } #[wasm_bindgen(module = "/dist/window.js")] From e431dc89a8048d16670580ecc53136244641b984 Mon Sep 17 00:00:00 2001 From: Jonas Kruckenberg Date: Sun, 13 Nov 2022 21:07:28 +0100 Subject: [PATCH 12/29] fix js paths --- src/app.rs | 2 +- src/clipboard.rs | 2 +- src/event.rs | 2 +- src/mocks.rs | 2 +- src/process.rs | 2 +- src/tauri.rs | 2 +- src/window.rs | 16 ++++++++-------- 7 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/app.rs b/src/app.rs index 6107110..70f20ca 100644 --- a/src/app.rs +++ b/src/app.rs @@ -80,7 +80,7 @@ pub async fn hide() -> crate::Result<()> { mod inner { use wasm_bindgen::{prelude::wasm_bindgen, JsValue}; - #[wasm_bindgen(module = "/dist/app.js")] + #[wasm_bindgen(module = "/src/app.js")] extern "C" { #[wasm_bindgen(catch)] pub async fn getName() -> Result; diff --git a/src/clipboard.rs b/src/clipboard.rs index 04155f4..e2a9ffb 100644 --- a/src/clipboard.rs +++ b/src/clipboard.rs @@ -36,7 +36,7 @@ pub async fn write_text(text: &str) -> crate::Result<()> { mod inner { use wasm_bindgen::{prelude::wasm_bindgen, JsValue}; - #[wasm_bindgen(module = "/dist/clipboard.js")] + #[wasm_bindgen(module = "/src/clipboard.js")] extern "C" { #[wasm_bindgen(catch)] pub async fn readText() -> Result; diff --git a/src/event.rs b/src/event.rs index fb89b77..4fc0e7d 100644 --- a/src/event.rs +++ b/src/event.rs @@ -144,7 +144,7 @@ mod inner { JsValue, }; - #[wasm_bindgen(module = "/dist/event.js")] + #[wasm_bindgen(module = "/src/event.js")] extern "C" { #[wasm_bindgen(catch)] pub async fn emit(event: &str, payload: JsValue) -> Result<(), JsValue>; diff --git a/src/mocks.rs b/src/mocks.rs index f8c4877..aa51e9e 100644 --- a/src/mocks.rs +++ b/src/mocks.rs @@ -55,7 +55,7 @@ mod inner { JsValue, }; - #[wasm_bindgen(module = "/dist/mocks.js")] + #[wasm_bindgen(module = "/src/mocks.js")] extern "C" { #[wasm_bindgen(variadic)] pub fn mockWindows(current: &str, rest: JsValue); diff --git a/src/process.rs b/src/process.rs index 0a725d7..8f6effa 100644 --- a/src/process.rs +++ b/src/process.rs @@ -10,7 +10,7 @@ pub fn relaunch() { mod inner { use wasm_bindgen::prelude::wasm_bindgen; - #[wasm_bindgen(module = "/dist/process.js")] + #[wasm_bindgen(module = "/src/process.js")] extern "C" { pub fn exit(exitCode: u32); pub fn relaunch(); diff --git a/src/tauri.rs b/src/tauri.rs index 98654e6..3d484ee 100644 --- a/src/tauri.rs +++ b/src/tauri.rs @@ -95,7 +95,7 @@ pub async fn transform_callback( mod inner { use wasm_bindgen::{prelude::wasm_bindgen, JsValue}; - #[wasm_bindgen(module = "/dist/tauri.js")] + #[wasm_bindgen(module = "/src/tauri.js")] extern "C" { #[wasm_bindgen(catch)] pub async fn convertFileSrc( diff --git a/src/window.rs b/src/window.rs index d0a88bd..9fa4e2b 100644 --- a/src/window.rs +++ b/src/window.rs @@ -626,7 +626,7 @@ mod inner { JsValue, }; - #[wasm_bindgen(module = "/dist/window.js")] + #[wasm_bindgen(module = "/src/window.js")] extern "C" { #[derive(Debug, Clone, PartialEq)] pub type LogicalPosition; @@ -642,7 +642,7 @@ mod inner { pub fn set_y(this: &LogicalPosition, y: u32); } - #[wasm_bindgen(module = "/dist/window.js")] + #[wasm_bindgen(module = "/src/window.js")] extern "C" { #[derive(Debug, Clone, PartialEq)] pub type PhysicalPosition; @@ -660,7 +660,7 @@ mod inner { pub fn set_y(this: &PhysicalPosition, y: u32); } - #[wasm_bindgen(module = "/dist/window.js")] + #[wasm_bindgen(module = "/src/window.js")] extern "C" { #[derive(Debug, Clone, PartialEq)] pub type LogicalSize; @@ -676,7 +676,7 @@ mod inner { pub fn set_height(this: &LogicalSize, height: u32); } - #[wasm_bindgen(module = "/dist/window.js")] + #[wasm_bindgen(module = "/src/window.js")] extern "C" { #[derive(Debug, Clone, PartialEq)] pub type PhysicalSize; @@ -694,7 +694,7 @@ mod inner { pub fn set_height(this: &PhysicalSize, height: u32); } - #[wasm_bindgen(module = "/dist/window.js")] + #[wasm_bindgen(module = "/src/window.js")] extern "C" { #[derive(Debug, Clone, PartialEq)] pub type WebviewWindowHandle; @@ -720,7 +720,7 @@ mod inner { ) -> Result<(), JsValue>; } - #[wasm_bindgen(module = "/dist/window.js")] + #[wasm_bindgen(module = "/src/window.js")] extern "C" { #[wasm_bindgen(extends = WebviewWindowHandle)] #[derive(Debug, Clone, PartialEq)] @@ -855,7 +855,7 @@ mod inner { pub async fn startDragging(this: &WindowManager) -> Result<(), JsValue>; } - #[wasm_bindgen(module = "/dist/window.js")] + #[wasm_bindgen(module = "/src/window.js")] extern "C" { #[wasm_bindgen(extends = WindowManager)] #[derive(Debug, Clone, PartialEq)] @@ -866,7 +866,7 @@ mod inner { pub fn getByLabel(label: &str) -> Option; } - #[wasm_bindgen(module = "/dist/window.js")] + #[wasm_bindgen(module = "/src/window.js")] extern "C" { pub fn getCurrent() -> WebviewWindow; pub fn getAll() -> Vec; From bd652c956f167e8b52cf22d8cc2bc4eeb0ddcd7e Mon Sep 17 00:00:00 2001 From: Jonas Kruckenberg Date: Sun, 13 Nov 2022 21:19:00 +0100 Subject: [PATCH 13/29] simplify error handling --- examples/test/src/app.rs | 2 +- examples/test/src/clipboard.rs | 2 +- src/app.rs | 12 +-- src/clipboard.rs | 6 +- src/event.rs | 12 +-- src/lib.rs | 20 +++- src/tauri.rs | 13 +-- src/window.rs | 174 ++++++++++++--------------------- 8 files changed, 94 insertions(+), 147 deletions(-) diff --git a/examples/test/src/app.rs b/examples/test/src/app.rs index 5ed8b4d..45da708 100644 --- a/examples/test/src/app.rs +++ b/examples/test/src/app.rs @@ -10,7 +10,7 @@ pub async fn get_name() -> anyhow::Result<()> { } pub async fn get_version() -> anyhow::Result<()> { - let version = app::get_version().await; + let version = app::get_version().await?; ensure!(version.major == 0); ensure!(version.minor == 0); diff --git a/examples/test/src/clipboard.rs b/examples/test/src/clipboard.rs index 816b459..452d401 100644 --- a/examples/test/src/clipboard.rs +++ b/examples/test/src/clipboard.rs @@ -4,7 +4,7 @@ use tauri_sys::clipboard; pub async fn test() -> anyhow::Result<()> { clipboard::write_text("foobar").await; - let text = clipboard::read_text().await; + let text = clipboard::read_text().await?; ensure!(text == Some("foobar".to_string())); diff --git a/src/app.rs b/src/app.rs index 70f20ca..e2464e2 100644 --- a/src/app.rs +++ b/src/app.rs @@ -1,7 +1,5 @@ use semver::Version; -use crate::Error; - /// Gets the application name. /// /// # Example @@ -12,7 +10,7 @@ use crate::Error; /// ``` #[inline(always)] pub async fn get_name() -> crate::Result { - let js_val = inner::getName().await.map_err(Error::Other)?; + let js_val = inner::getName().await?; Ok(serde_wasm_bindgen::from_value(js_val)?) } @@ -28,7 +26,7 @@ pub async fn get_name() -> crate::Result { /// ``` #[inline(always)] pub async fn get_version() -> crate::Result { - let js_val = inner::getVersion().await.map_err(Error::Other)?; + let js_val = inner::getVersion().await?; Ok(serde_wasm_bindgen::from_value(js_val)?) } @@ -44,7 +42,7 @@ pub async fn get_version() -> crate::Result { /// ``` #[inline(always)] pub async fn get_tauri_version() -> crate::Result { - let js_val = inner::getTauriVersion().await.map_err(Error::Other)?; + let js_val = inner::getTauriVersion().await?; Ok(serde_wasm_bindgen::from_value(js_val)?) } @@ -60,7 +58,7 @@ pub async fn get_tauri_version() -> crate::Result { /// ``` #[inline(always)] pub async fn show() -> crate::Result<()> { - inner::show().await.map_err(Error::Other) + Ok(inner::show().await?) } /// Hides the application on macOS. @@ -74,7 +72,7 @@ pub async fn show() -> crate::Result<()> { /// ``` #[inline(always)] pub async fn hide() -> crate::Result<()> { - inner::hide().await.map_err(Error::Other) + Ok(inner::hide().await?) } mod inner { diff --git a/src/clipboard.rs b/src/clipboard.rs index e2a9ffb..1715f18 100644 --- a/src/clipboard.rs +++ b/src/clipboard.rs @@ -1,5 +1,3 @@ -use crate::Error; - /// Gets the clipboard content as plain text. /// /// # Example @@ -11,7 +9,7 @@ use crate::Error; /// ``` #[inline(always)] pub async fn read_text() -> crate::Result { - let js_val = inner::readText().await.map_err(Error::Other)?; + let js_val = inner::readText().await?; Ok(serde_wasm_bindgen::from_value(js_val)?) } @@ -30,7 +28,7 @@ pub async fn read_text() -> crate::Result { /// @returns A promise indicating the success or failure of the operation. #[inline(always)] pub async fn write_text(text: &str) -> crate::Result<()> { - inner::writeText(text).await.map_err(Error::Other) + Ok(inner::writeText(text).await?) } mod inner { diff --git a/src/event.rs b/src/event.rs index 4fc0e7d..8015bdc 100644 --- a/src/event.rs +++ b/src/event.rs @@ -1,10 +1,7 @@ use std::fmt::Debug; - use serde::{de::DeserializeOwned, Deserialize, Serialize}; use wasm_bindgen::{prelude::Closure, JsValue}; -use crate::Error; - #[derive(Deserialize)] pub struct Event { /// Event name @@ -49,8 +46,9 @@ impl Debug for Event { #[inline(always)] pub async fn emit(event: &str, payload: &T) -> crate::Result<()> { inner::emit(event, serde_wasm_bindgen::to_value(payload)?) - .await - .map_err(Error::Other) + .await?; + + Ok(()) } /// Listen to an event from the backend. @@ -83,7 +81,7 @@ where (handler)(serde_wasm_bindgen::from_value(raw).unwrap()) }); - let unlisten = inner::listen(event, &closure).await.map_err(Error::Other)?; + let unlisten = inner::listen(event, &closure).await?; closure.forget(); @@ -128,7 +126,7 @@ where (handler)(serde_wasm_bindgen::from_value(raw).unwrap()) }); - let unlisten = inner::once(event, &closure).await.map_err(Error::Other)?; + let unlisten = inner::once(event, &closure).await?; closure.forget(); diff --git a/src/lib.rs b/src/lib.rs index 780ee6f..acdbac1 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -17,16 +17,28 @@ pub mod window; #[derive(Debug, thiserror::Error)] pub enum Error { - #[error(transparent)] - Serde(#[from] serde_wasm_bindgen::Error), + #[error("{0}")] + Serde(String), #[error("Unknown Theme \"{0}\". Expected one of \"light\",\"dark\"")] UnknownTheme(String), #[error("Invalid Url {0}")] InvalidUrl(#[from] url::ParseError), #[error("Invalid Version {0}")] InvalidVersion(#[from] semver::Error), - #[error("{0:?}")] - Other(JsValue), + #[error("{0}")] + Other(String), +} + +impl From for Error { + fn from(e: serde_wasm_bindgen::Error) -> Self { + Self::Serde(format!("{:?}", e)) + } +} + +impl From for Error { + fn from(e: JsValue) -> Self { + Self::Serde(format!("{:?}", e)) + } } pub(crate) type Result = std::result::Result; diff --git a/src/tauri.rs b/src/tauri.rs index 3d484ee..ea3cf68 100644 --- a/src/tauri.rs +++ b/src/tauri.rs @@ -1,8 +1,6 @@ use serde::{de::DeserializeOwned, Serialize}; use url::Url; -use crate::Error; - /// Convert a device file path to an URL that can be loaded by the webview. /// Note that `asset:` and `https://asset.localhost` must be added to [`tauri.security.csp`](https://tauri.app/v1/api/config/#securityconfig.csp) in `tauri.conf.json`. /// Example CSP value: `"csp": "default-src 'self'; img-src 'self' asset: https://asset.localhost"` to use the asset protocol on image sources. @@ -39,9 +37,7 @@ use crate::Error; /// @return the URL that can be used as source on the webview. #[inline(always)] pub async fn convert_file_src(file_path: &str, protocol: Option<&str>) -> crate::Result { - let js_val = inner::convertFileSrc(file_path, protocol) - .await - .map_err(Error::Other)?; + let js_val = inner::convertFileSrc(file_path, protocol).await?; Ok(serde_wasm_bindgen::from_value(js_val)?) } @@ -66,9 +62,7 @@ pub async fn convert_file_src(file_path: &str, protocol: Option<&str>) -> crate: /// @return A promise resolving or rejecting to the backend response. #[inline(always)] pub async fn invoke(cmd: &str, args: &A) -> crate::Result { - let raw = inner::invoke(cmd, serde_wasm_bindgen::to_value(args)?) - .await - .map_err(crate::Error::Other)?; + let raw = inner::invoke(cmd, serde_wasm_bindgen::to_value(args)?).await?; serde_wasm_bindgen::from_value(raw).map_err(Into::into) } @@ -86,8 +80,7 @@ pub async fn transform_callback( &|raw| callback(serde_wasm_bindgen::from_value(raw).unwrap()), once, ) - .await - .map_err(Error::Other)?; + .await?; Ok(serde_wasm_bindgen::from_value(js_val)?) } diff --git a/src/window.rs b/src/window.rs index 9fa4e2b..a2d6045 100644 --- a/src/window.rs +++ b/src/window.rs @@ -136,83 +136,63 @@ impl WebviewWindow { } pub async fn scale_factor(&self) -> crate::Result { - let js_val = self.0.scaleFactor().await.map_err(Error::Other)?; + let js_val = self.0.scaleFactor().await?; Ok(serde_wasm_bindgen::from_value(js_val)?) } pub async fn inner_position(&self) -> crate::Result { Ok(PhysicalPosition( - self.0 - .innerPosition() - .await - .map_err(Error::Other)? - .unchecked_into(), + self.0.innerPosition().await?.unchecked_into(), )) } pub async fn outer_position(&self) -> crate::Result { Ok(PhysicalPosition( - self.0 - .outerPosition() - .await - .map_err(Error::Other)? - .unchecked_into(), + self.0.outerPosition().await?.unchecked_into(), )) } pub async fn inner_size(&self) -> crate::Result { - Ok(PhysicalSize( - self.0 - .innerSize() - .await - .map_err(Error::Other)? - .unchecked_into(), - )) + Ok(PhysicalSize(self.0.innerSize().await?.unchecked_into())) } pub async fn outer_size(&self) -> crate::Result { - Ok(PhysicalSize( - self.0 - .outerSize() - .await - .map_err(Error::Other)? - .unchecked_into(), - )) + Ok(PhysicalSize(self.0.outerSize().await?.unchecked_into())) } pub async fn is_fullscreen(&self) -> crate::Result { - let js_val = self.0.isFullscreen().await.map_err(Error::Other)?; + let js_val = self.0.isFullscreen().await?; Ok(serde_wasm_bindgen::from_value(js_val)?) } pub async fn is_maximized(&self) -> crate::Result { - let js_val = self.0.isMaximized().await.map_err(Error::Other)?; + let js_val = self.0.isMaximized().await?; Ok(serde_wasm_bindgen::from_value(js_val)?) } pub async fn is_decorated(&self) -> crate::Result { - let js_val = self.0.isDecorated().await.map_err(Error::Other)?; + let js_val = self.0.isDecorated().await?; Ok(serde_wasm_bindgen::from_value(js_val)?) } pub async fn is_resizable(&self) -> crate::Result { - let js_val = self.0.isResizable().await.map_err(Error::Other)?; + let js_val = self.0.isResizable().await?; Ok(serde_wasm_bindgen::from_value(js_val)?) } pub async fn is_visible(&self) -> crate::Result { - let js_val = self.0.isVisible().await.map_err(Error::Other)?; + let js_val = self.0.isVisible().await?; Ok(serde_wasm_bindgen::from_value(js_val)?) } pub async fn theme(&self) -> crate::Result { - let js_val = self.0.theme().await.map_err(Error::Other)?; + let js_val = self.0.theme().await?; let str = serde_wasm_bindgen::from_value::(js_val)?; @@ -224,186 +204,154 @@ impl WebviewWindow { } pub async fn center(&self) -> crate::Result<()> { - self.0.center().await.map_err(Error::Other) + Ok(self.0.center().await?) } pub async fn request_user_attention( &self, request_type: UserAttentionType, ) -> crate::Result<()> { - self.0 - .requestUserAttention(request_type as u32) - .await - .map_err(Error::Other) + Ok(self.0.requestUserAttention(request_type as u32).await?) } pub async fn set_resizable(&self, resizable: bool) -> crate::Result<()> { - self.0.setResizable(resizable).await.map_err(Error::Other) + Ok(self.0.setResizable(resizable).await?) } pub async fn set_title(&self, title: impl AsRef) -> crate::Result<()> { - self.0.setTitle(title.as_ref()).await.map_err(Error::Other) + Ok(self.0.setTitle(title.as_ref()).await?) } pub async fn maximize(&self) -> crate::Result<()> { - self.0.maximize().await.map_err(Error::Other) + Ok(self.0.maximize().await?) } pub async fn unmaximize(&self) -> crate::Result<()> { - self.0.unmaximize().await.map_err(Error::Other) + Ok(self.0.unmaximize().await?) } pub async fn toggle_maximize(&self) -> crate::Result<()> { - self.0.toggleMaximize().await.map_err(Error::Other) + Ok(self.0.toggleMaximize().await?) } pub async fn minimize(&self) -> crate::Result<()> { - self.0.minimize().await.map_err(Error::Other) + Ok(self.0.minimize().await?) } pub async fn unminimize(&self) -> crate::Result<()> { - self.0.unminimize().await.map_err(Error::Other) + Ok(self.0.unminimize().await?) } pub async fn show(&self) -> crate::Result<()> { - self.0.show().await.map_err(Error::Other) + Ok(self.0.show().await?) } pub async fn hide(&self) -> crate::Result<()> { - self.0.hide().await.map_err(Error::Other) + Ok(self.0.hide().await?) } pub async fn close(&self) -> crate::Result<()> { - self.0.close().await.map_err(Error::Other) + Ok(self.0.close().await?) } pub async fn set_decorations(&self, decorations: bool) -> crate::Result<()> { - self.0 - .setDecorations(decorations) - .await - .map_err(Error::Other) + Ok(self.0.setDecorations(decorations).await?) } pub async fn set_always_on_top(&self, always_on_top: bool) -> crate::Result<()> { - self.0 - .setAlwaysOnTop(always_on_top) - .await - .map_err(Error::Other) + Ok(self.0.setAlwaysOnTop(always_on_top).await?) } pub async fn set_size(&self, size: Size) -> crate::Result<()> { match size { - Size::Physical(size) => self.0.setSizePhysical(size.0).await.map_err(Error::Other), - Size::Logical(size) => self.0.setSizeLogical(size.0).await.map_err(Error::Other), + Size::Physical(size) => self.0.setSizePhysical(size.0).await?, + Size::Logical(size) => self.0.setSizeLogical(size.0).await?, } + + Ok(()) } pub async fn set_min_size(&self, size: Option) -> crate::Result<()> { match size { - None => self.0.setMinSizePhysical(None).await.map_err(Error::Other), - Some(Size::Physical(size)) => self - .0 - .setMinSizePhysical(Some(size.0)) - .await - .map_err(Error::Other), - Some(Size::Logical(size)) => self - .0 - .setMinSizeLogical(Some(size.0)) - .await - .map_err(Error::Other), + None => self.0.setMinSizePhysical(None).await?, + Some(Size::Physical(size)) => self.0.setMinSizePhysical(Some(size.0)).await?, + Some(Size::Logical(size)) => self.0.setMinSizeLogical(Some(size.0)).await?, } + + Ok(()) } pub async fn set_max_size(&self, size: Option) -> crate::Result<()> { match size { - None => self.0.setMaxSizePhysical(None).await.map_err(Error::Other), - Some(Size::Physical(size)) => self - .0 - .setMaxSizePhysical(Some(size.0)) - .await - .map_err(Error::Other), - Some(Size::Logical(size)) => self - .0 - .setMaxSizeLogical(Some(size.0)) - .await - .map_err(Error::Other), + None => self.0.setMaxSizePhysical(None).await?, + Some(Size::Physical(size)) => self.0.setMaxSizePhysical(Some(size.0)).await?, + Some(Size::Logical(size)) => self.0.setMaxSizeLogical(Some(size.0)).await?, } + + Ok(()) } pub async fn set_position(&self, position: Position) -> crate::Result<()> { match position { - Position::Physical(pos) => self - .0 - .setPositionPhysical(pos.0) - .await - .map_err(Error::Other), - Position::Logical(pos) => self.0.setPositionLogical(pos.0).await.map_err(Error::Other), + Position::Physical(pos) => self.0.setPositionPhysical(pos.0).await?, + Position::Logical(pos) => self.0.setPositionLogical(pos.0).await?, } + + Ok(()) } pub async fn set_fullscreen(&self, fullscreen: bool) -> crate::Result<()> { - self.0.setFullscreen(fullscreen).await.map_err(Error::Other) + Ok(self.0.setFullscreen(fullscreen).await?) } pub async fn set_focus(&self) -> crate::Result<()> { - self.0.setFocus().await.map_err(Error::Other) + Ok(self.0.setFocus().await?) } pub async fn set_icon(&self, icon: &[u8]) -> crate::Result<()> { - self.0.setIcon(icon).await.map_err(Error::Other) + Ok(self.0.setIcon(icon).await?) } pub async fn set_skip_taskbar(&self, skip: bool) -> crate::Result<()> { - self.0.setSkipTaskbar(skip).await.map_err(Error::Other) + Ok(self.0.setSkipTaskbar(skip).await?) } pub async fn set_cursor_grab(&self, grab: bool) -> crate::Result<()> { - self.0.setCursorGrab(grab).await.map_err(Error::Other) + Ok(self.0.setCursorGrab(grab).await?) } pub async fn set_cursor_visible(&self, visible: bool) -> crate::Result<()> { - self.0.setCursorVisible(visible).await.map_err(Error::Other) + Ok(self.0.setCursorVisible(visible).await?) } pub async fn set_cursor_icon(&self, icon: CursorIcon) -> crate::Result<()> { - self.0 - .setCursorIcon(&icon.to_string()) - .await - .map_err(Error::Other) + Ok(self.0.setCursorIcon(&icon.to_string()).await?) } pub async fn set_cursor_position(&self, position: Position) -> crate::Result<()> { match position { - Position::Physical(pos) => self - .0 - .setCursorPositionPhysical(pos.0) - .await - .map_err(Error::Other), - Position::Logical(pos) => self - .0 - .setCursorPositionLogical(pos.0) - .await - .map_err(Error::Other), + Position::Physical(pos) => self.0.setCursorPositionPhysical(pos.0).await?, + Position::Logical(pos) => self.0.setCursorPositionLogical(pos.0).await? } + + Ok(()) } pub async fn set_ignore_cursor_events(&self, ignore: bool) -> crate::Result<()> { - self.0 - .setIgnoreCursorEvents(ignore) - .await - .map_err(Error::Other) + Ok(self.0.setIgnoreCursorEvents(ignore).await?) } pub async fn start_dragging(&self) -> crate::Result<()> { - self.0.startDragging().await.map_err(Error::Other) + Ok(self.0.startDragging().await?) } #[inline(always)] pub async fn emit(&self, event: &str, payload: &T) -> crate::Result<()> { self.0 .emit(event, serde_wasm_bindgen::to_value(payload).unwrap()) - .await - .map_err(Error::Other) + .await?; + + Ok(()) } #[inline(always)] @@ -416,7 +364,7 @@ impl WebviewWindow { (handler)(serde_wasm_bindgen::from_value(raw).unwrap()) }); - let unlisten = self.0.listen(event, &closure).await.map_err(Error::Other)?; + let unlisten = self.0.listen(event, &closure).await?; closure.forget(); @@ -436,7 +384,7 @@ impl WebviewWindow { (handler)(serde_wasm_bindgen::from_value(raw).unwrap()) }); - let unlisten = self.0.once(event, &closure).await.map_err(Error::Other)?; + let unlisten = self.0.once(event, &closure).await?; closure.forget(); From f74bcd3127688bba222d55e936eb042bfadc1523 Mon Sep 17 00:00:00 2001 From: Jonas Kruckenberg Date: Sun, 13 Nov 2022 21:19:10 +0100 Subject: [PATCH 14/29] fmt --- src/event.rs | 5 ++--- src/window.rs | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/event.rs b/src/event.rs index 8015bdc..9ba40f1 100644 --- a/src/event.rs +++ b/src/event.rs @@ -1,5 +1,5 @@ -use std::fmt::Debug; use serde::{de::DeserializeOwned, Deserialize, Serialize}; +use std::fmt::Debug; use wasm_bindgen::{prelude::Closure, JsValue}; #[derive(Deserialize)] @@ -45,8 +45,7 @@ impl Debug for Event { /// @param event Event name. Must include only alphanumeric characters, `-`, `/`, `:` and `_`. #[inline(always)] pub async fn emit(event: &str, payload: &T) -> crate::Result<()> { - inner::emit(event, serde_wasm_bindgen::to_value(payload)?) - .await?; + inner::emit(event, serde_wasm_bindgen::to_value(payload)?).await?; Ok(()) } diff --git a/src/window.rs b/src/window.rs index a2d6045..5d28453 100644 --- a/src/window.rs +++ b/src/window.rs @@ -331,7 +331,7 @@ impl WebviewWindow { pub async fn set_cursor_position(&self, position: Position) -> crate::Result<()> { match position { Position::Physical(pos) => self.0.setCursorPositionPhysical(pos.0).await?, - Position::Logical(pos) => self.0.setCursorPositionLogical(pos.0).await? + Position::Logical(pos) => self.0.setCursorPositionLogical(pos.0).await?, } Ok(()) From 45d5720f1610fe288d7e6e3a2734f35f50f193f1 Mon Sep 17 00:00:00 2001 From: Jonas Kruckenberg Date: Mon, 14 Nov 2022 10:13:24 +0100 Subject: [PATCH 15/29] improve error handling --- src/clipboard.rs | 4 --- src/dialog.rs | 63 ++++++++++++++++++++++++++++-------------------- 2 files changed, 37 insertions(+), 30 deletions(-) diff --git a/src/clipboard.rs b/src/clipboard.rs index 3fd5d93..1715f18 100644 --- a/src/clipboard.rs +++ b/src/clipboard.rs @@ -1,7 +1,3 @@ -use wasm_bindgen_futures::JsFuture; - -use crate::Error; - /// Gets the clipboard content as plain text. /// /// # Example diff --git a/src/dialog.rs b/src/dialog.rs index 2127741..8933ed1 100644 --- a/src/dialog.rs +++ b/src/dialog.rs @@ -136,10 +136,10 @@ impl SaveDialogOptions { /// @param options Dialog options. /// @returns Whether the user selected `Yes` or `No`. #[inline(always)] -pub async fn ask(message: &str, options: Option) -> Option { - inner::ask(message, serde_wasm_bindgen::to_value(&options).unwrap()) - .await - .as_bool() +pub async fn ask(message: &str, options: Option) -> crate::Result { + let js_val = inner::ask(message, serde_wasm_bindgen::to_value(&options)?).await?; + + Ok(serde_wasm_bindgen::from_value(js_val)?) } /// Shows a question dialog with `Ok` and `Cancel` buttons. @@ -152,10 +152,10 @@ pub async fn ask(message: &str, options: Option) -> Option /// let confirmed = confirm("Are you sure?", None).await; /// ``` /// @returns Whether the user selelced `Ok` or `Cancel`. -pub async fn confirm(message: &str, options: Option) -> Option { - inner::confirm(message, serde_wasm_bindgen::to_value(&options).unwrap()) - .await - .as_bool() +pub async fn confirm(message: &str, options: Option) -> crate::Result { + let js_val = inner::confirm(message, serde_wasm_bindgen::to_value(&options)?).await?; + + Ok(serde_wasm_bindgen::from_value(js_val)?) } /// Shows a message dialog with an `Ok` button. @@ -170,8 +170,8 @@ pub async fn confirm(message: &str, options: Option) -> Op /// @param message Message to display. /// @param options Dialog options. /// @returns Promise resolved when user closes the dialog. -pub async fn message(message: &str, options: Option) { - inner::message(message, serde_wasm_bindgen::to_value(&options).unwrap()).await +pub async fn message(message: &str, options: Option) -> crate::Result<()> { + Ok(inner::message(message, serde_wasm_bindgen::to_value(&options)?).await?) } /// Opens a file/directory selection dialog for a single file. @@ -198,9 +198,10 @@ pub async fn message(message: &str, options: Option) { /// ``` /// @param options Dialog options. /// @returns List of file paths, or `None` if user cancelled the dialog. -pub async fn open(options: Option) -> Option { - let file = inner::open(serde_wasm_bindgen::to_value(&options).unwrap()).await; - serde_wasm_bindgen::from_value(file).unwrap() +pub async fn open(options: Option) -> crate::Result> { + let file = inner::open(serde_wasm_bindgen::to_value(&options)?).await?; + + Ok(serde_wasm_bindgen::from_value(file)?) } /// Opens a file/directory selection dialog for multiple files. @@ -228,9 +229,12 @@ pub async fn open(options: Option) -> Option { /// ``` /// @param options Dialog options. /// @returns List of file paths, or `None` if user cancelled the dialog. -pub async fn open_multiple(options: Option) -> Option> { - let files = inner::open_multiple(serde_wasm_bindgen::to_value(&options).unwrap()).await; - serde_wasm_bindgen::from_value(files).unwrap() +pub async fn open_multiple( + options: Option, +) -> crate::Result>> { + let files = inner::open_multiple(serde_wasm_bindgen::to_value(&options)?).await?; + + Ok(serde_wasm_bindgen::from_value(files)?) } /// Opens a file/directory save dialog. @@ -252,21 +256,28 @@ pub async fn open_multiple(options: Option) -> Option) -> Option { - let path = inner::save(serde_wasm_bindgen::to_value(&options).unwrap()).await; - serde_wasm_bindgen::from_value(path).unwrap() +pub async fn save(options: Option) -> crate::Result> { + let path = inner::save(serde_wasm_bindgen::to_value(&options)?).await?; + + Ok(serde_wasm_bindgen::from_value(path)?) } mod inner { use wasm_bindgen::{prelude::wasm_bindgen, JsValue}; - #[wasm_bindgen(module = "/dist/dialog.js")] + #[wasm_bindgen(module = "/src/dialog.js")] extern "C" { - pub async fn ask(message: &str, options: JsValue) -> JsValue; - pub async fn confirm(message: &str, options: JsValue) -> JsValue; - pub async fn open(options: JsValue) -> JsValue; - pub async fn open_multiple(options: JsValue) -> JsValue; - pub async fn message(message: &str, option: JsValue); - pub async fn save(options: JsValue) -> JsValue; + #[wasm_bindgen(catch)] + pub async fn ask(message: &str, options: JsValue) -> Result; + #[wasm_bindgen(catch)] + pub async fn confirm(message: &str, options: JsValue) -> Result; + #[wasm_bindgen(catch)] + pub async fn open(options: JsValue) -> Result; + #[wasm_bindgen(catch)] + pub async fn open_multiple(options: JsValue) -> Result; + #[wasm_bindgen(catch)] + pub async fn message(message: &str, option: JsValue) -> Result<(), JsValue>; + #[wasm_bindgen(catch)] + pub async fn save(options: JsValue) -> Result; } } From ccd4f2ea14d2bf86d4f92b9a1b23520e63e53829 Mon Sep 17 00:00:00 2001 From: Jonas Kruckenberg Date: Mon, 14 Nov 2022 10:20:18 +0100 Subject: [PATCH 16/29] update tauri to 1.2.0 --- src/http.js | 36 ++++++++++++++++++++++++------------ src/index.js | 36 ++++++++++++++++++++++++------------ tauri | 2 +- 3 files changed, 49 insertions(+), 25 deletions(-) diff --git a/src/http.js b/src/http.js index 7147405..078629f 100644 --- a/src/http.js +++ b/src/http.js @@ -55,19 +55,31 @@ var Body = class { } static form(data) { const form = {}; - for (const key in data) { - const v = data[key]; - let r; - if (typeof v === "string") { - r = v; - } else if (v instanceof Uint8Array || Array.isArray(v)) { - r = Array.from(v); - } else if (typeof v.file === "string") { - r = { file: v.file, mime: v.mime, fileName: v.fileName }; - } else { - r = { file: Array.from(v.file), mime: v.mime, fileName: v.fileName }; + const append = (key, v) => { + if (v !== null) { + let r; + if (typeof v === "string") { + r = v; + } else if (v instanceof Uint8Array || Array.isArray(v)) { + r = Array.from(v); + } else if (v instanceof File) { + r = { file: v.name, mime: v.type, fileName: v.name }; + } else if (typeof v.file === "string") { + r = { file: v.file, mime: v.mime, fileName: v.fileName }; + } else { + r = { file: Array.from(v.file), mime: v.mime, fileName: v.fileName }; + } + form[String(key)] = r; + } + }; + if (data instanceof FormData) { + for (const [key, value] of data) { + append(key, value); + } + } else { + for (const [key, value] of Object.entries(data)) { + append(key, value); } - form[key] = r; } return new Body("Form", form); } diff --git a/src/index.js b/src/index.js index 211e255..a683b61 100644 --- a/src/index.js +++ b/src/index.js @@ -583,19 +583,31 @@ var Body = class { } static form(data) { const form = {}; - for (const key in data) { - const v = data[key]; - let r; - if (typeof v === "string") { - r = v; - } else if (v instanceof Uint8Array || Array.isArray(v)) { - r = Array.from(v); - } else if (typeof v.file === "string") { - r = { file: v.file, mime: v.mime, fileName: v.fileName }; - } else { - r = { file: Array.from(v.file), mime: v.mime, fileName: v.fileName }; + const append = (key, v) => { + if (v !== null) { + let r; + if (typeof v === "string") { + r = v; + } else if (v instanceof Uint8Array || Array.isArray(v)) { + r = Array.from(v); + } else if (v instanceof File) { + r = { file: v.name, mime: v.type, fileName: v.name }; + } else if (typeof v.file === "string") { + r = { file: v.file, mime: v.mime, fileName: v.fileName }; + } else { + r = { file: Array.from(v.file), mime: v.mime, fileName: v.fileName }; + } + form[String(key)] = r; + } + }; + if (data instanceof FormData) { + for (const [key, value] of data) { + append(key, value); + } + } else { + for (const [key, value] of Object.entries(data)) { + append(key, value); } - form[key] = r; } return new Body("Form", form); } diff --git a/tauri b/tauri index 35264b4..2e1bd04 160000 --- a/tauri +++ b/tauri @@ -1 +1 @@ -Subproject commit 35264b4c1801b381e0b867c1c35540f0fbb43365 +Subproject commit 2e1bd04775c0f05f1c0b67605e6abec4465dbf84 From c3dd326b714dd29db9fc0e092de213c4df2f5ea6 Mon Sep 17 00:00:00 2001 From: Jonas Kruckenberg Date: Mon, 14 Nov 2022 10:22:47 +0100 Subject: [PATCH 17/29] Update test.yml --- .github/workflows/test.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 4fb03d3..dbafcd7 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -35,7 +35,7 @@ jobs: - name: Install native deps run: | sudo apt-get update - sudo apt-get install -y webkit2gtk-4.0 + sudo apt-get install -y webkit2gtk-4.0 at-spi2-core - name: Install Tauri CLI run: | cd examples/test @@ -48,4 +48,5 @@ jobs: run: | cd examples/test export CARGO_UNSTABLE_SPARSE_REGISTRY=true + export NO_AT_BRIDGE=1 xvfb-run cargo tauri dev --exit-on-panic --config ./src-tauri/ci.tauri.conf.json From 1f436c01782bf4d9fc433e35fa93c870062c9dba Mon Sep 17 00:00:00 2001 From: Jonas Kruckenberg Date: Mon, 14 Nov 2022 10:24:21 +0100 Subject: [PATCH 18/29] Update test.yml --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index dbafcd7..6e15fe7 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -35,7 +35,7 @@ jobs: - name: Install native deps run: | sudo apt-get update - sudo apt-get install -y webkit2gtk-4.0 at-spi2-core + sudo apt-get install -y webkit2gtk-4.0 - name: Install Tauri CLI run: | cd examples/test From 8b1c03b3d16fe10d9dd848aa233e1160fbdaaa30 Mon Sep 17 00:00:00 2001 From: Jonas Kruckenberg Date: Mon, 14 Nov 2022 10:29:44 +0100 Subject: [PATCH 19/29] Update test.yml --- .github/workflows/test.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 6e15fe7..7ba74b6 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -31,6 +31,7 @@ jobs: with: toolchain: stable override: true + target: wasm32-unknown-unknown x86_64-unknown-linux-gnu - uses: Swatinem/rust-cache@v1 - name: Install native deps run: | From a546f675fd217b5da6be3554df11e8f04497c6c8 Mon Sep 17 00:00:00 2001 From: Jonas Kruckenberg Date: Mon, 14 Nov 2022 10:32:37 +0100 Subject: [PATCH 20/29] Update test.yml --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 7ba74b6..71b41b3 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -31,7 +31,7 @@ jobs: with: toolchain: stable override: true - target: wasm32-unknown-unknown x86_64-unknown-linux-gnu + target: wasm32-unknown-unknown - uses: Swatinem/rust-cache@v1 - name: Install native deps run: | From 52acfb3b3dd3debb9efe26f1852405d5a85cbf82 Mon Sep 17 00:00:00 2001 From: Jonas Kruckenberg Date: Mon, 14 Nov 2022 10:44:20 +0100 Subject: [PATCH 21/29] Update test.yml --- .github/workflows/test.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 71b41b3..72d37e7 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -36,7 +36,7 @@ jobs: - name: Install native deps run: | sudo apt-get update - sudo apt-get install -y webkit2gtk-4.0 + sudo apt-get install -y webkit2gtk-4.0 at-spi2-core - name: Install Tauri CLI run: | cd examples/test @@ -49,5 +49,4 @@ jobs: run: | cd examples/test export CARGO_UNSTABLE_SPARSE_REGISTRY=true - export NO_AT_BRIDGE=1 xvfb-run cargo tauri dev --exit-on-panic --config ./src-tauri/ci.tauri.conf.json From 6441a58a05e15f469e4854fbb9bd4bd847a66c52 Mon Sep 17 00:00:00 2001 From: Jonas Kruckenberg Date: Mon, 14 Nov 2022 10:44:28 +0100 Subject: [PATCH 22/29] fix example --- Cargo.toml | 4 +- examples/test/dist/index.html | 6 +- .../{dist => src}/app.js | 0 .../{dist => src}/clipboard.js | 0 .../tauri-sys-91bd50ded94e0ed7/src/dialog.js | 111 +++++++++++++++ .../{dist => src}/event.js | 0 .../{dist => src}/mocks.js | 0 .../{dist => src}/process.js | 0 .../{dist => src}/tauri.js | 0 .../{dist => src}/window.js | 0 ...tauri-sys-test-ui-3eb704384493bbf2_bg.wasm | Bin 1678833 -> 0 bytes ... => tauri-sys-test-ui-f3731bf7a986379f.js} | 132 +++++++++--------- ...tauri-sys-test-ui-f3731bf7a986379f_bg.wasm | Bin 0 -> 1540975 bytes examples/test/src/app.rs | 4 +- examples/test/src/clipboard.rs | 4 +- examples/test/src/event.rs | 6 +- examples/test/src/window.rs | 4 +- 17 files changed, 190 insertions(+), 81 deletions(-) rename examples/test/dist/snippets/tauri-sys-91bd50ded94e0ed7/{dist => src}/app.js (100%) rename examples/test/dist/snippets/tauri-sys-91bd50ded94e0ed7/{dist => src}/clipboard.js (100%) create mode 100644 examples/test/dist/snippets/tauri-sys-91bd50ded94e0ed7/src/dialog.js rename examples/test/dist/snippets/tauri-sys-91bd50ded94e0ed7/{dist => src}/event.js (100%) rename examples/test/dist/snippets/tauri-sys-91bd50ded94e0ed7/{dist => src}/mocks.js (100%) rename examples/test/dist/snippets/tauri-sys-91bd50ded94e0ed7/{dist => src}/process.js (100%) rename examples/test/dist/snippets/tauri-sys-91bd50ded94e0ed7/{dist => src}/tauri.js (100%) rename examples/test/dist/snippets/tauri-sys-91bd50ded94e0ed7/{dist => src}/window.js (100%) delete mode 100644 examples/test/dist/tauri-sys-test-ui-3eb704384493bbf2_bg.wasm rename examples/test/dist/{tauri-sys-test-ui-3eb704384493bbf2.js => tauri-sys-test-ui-f3731bf7a986379f.js} (94%) create mode 100644 examples/test/dist/tauri-sys-test-ui-f3731bf7a986379f_bg.wasm diff --git a/Cargo.toml b/Cargo.toml index ebd5e3e..655c997 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,9 +11,9 @@ js-sys = "0.3.59" serde = { version = "1.0.140", features = ["derive"] } wasm-bindgen = { version = "0.2.82", features = ["serde_json"] } wasm-bindgen-futures = "0.4.32" -url = { version = "2.3.1", optional = true } +url = { version = "2.3.1", optional = true, features = ["serde"] } thiserror = "1.0.37" -semver = { version = "1.0.14", optional = true } +semver = { version = "1.0.14", optional = true, features = ["serde"] } [dev-dependencies] wasm-bindgen-test = "0.3.33" diff --git a/examples/test/dist/index.html b/examples/test/dist/index.html index 6f47821..299ceb8 100644 --- a/examples/test/dist/index.html +++ b/examples/test/dist/index.html @@ -2,10 +2,10 @@ Tauri + Yew App - - + + - \ No newline at end of file diff --git a/examples/test/dist/snippets/tauri-sys-91bd50ded94e0ed7/src/app.js b/examples/test/dist/snippets/tauri-sys-91bd50ded94e0ed7/src/app.js deleted file mode 100644 index 6b66a23..0000000 --- a/examples/test/dist/snippets/tauri-sys-91bd50ded94e0ed7/src/app.js +++ /dev/null @@ -1,91 +0,0 @@ -// tauri/tooling/api/src/tauri.ts -function uid() { - return window.crypto.getRandomValues(new Uint32Array(1))[0]; -} -function transformCallback(callback, once = false) { - const identifier = uid(); - const prop = `_${identifier}`; - Object.defineProperty(window, prop, { - value: (result) => { - if (once) { - Reflect.deleteProperty(window, prop); - } - return callback?.(result); - }, - writable: false, - configurable: true - }); - return identifier; -} -async function invoke(cmd, args = {}) { - return new Promise((resolve, reject) => { - const callback = transformCallback((e) => { - resolve(e); - Reflect.deleteProperty(window, `_${error}`); - }, true); - const error = transformCallback((e) => { - reject(e); - Reflect.deleteProperty(window, `_${callback}`); - }, true); - window.__TAURI_IPC__({ - cmd, - callback, - error, - ...args - }); - }); -} - -// tauri/tooling/api/src/helpers/tauri.ts -async function invokeTauriCommand(command) { - return invoke("tauri", command); -} - -// tauri/tooling/api/src/app.ts -async function getVersion() { - return invokeTauriCommand({ - __tauriModule: "App", - message: { - cmd: "getAppVersion" - } - }); -} -async function getName() { - return invokeTauriCommand({ - __tauriModule: "App", - message: { - cmd: "getAppName" - } - }); -} -async function getTauriVersion() { - return invokeTauriCommand({ - __tauriModule: "App", - message: { - cmd: "getTauriVersion" - } - }); -} -async function show() { - return invokeTauriCommand({ - __tauriModule: "App", - message: { - cmd: "show" - } - }); -} -async function hide() { - return invokeTauriCommand({ - __tauriModule: "App", - message: { - cmd: "hide" - } - }); -} -export { - getName, - getTauriVersion, - getVersion, - hide, - show -}; diff --git a/examples/test/dist/snippets/tauri-sys-91bd50ded94e0ed7/src/clipboard.js b/examples/test/dist/snippets/tauri-sys-91bd50ded94e0ed7/src/clipboard.js deleted file mode 100644 index 16bd040..0000000 --- a/examples/test/dist/snippets/tauri-sys-91bd50ded94e0ed7/src/clipboard.js +++ /dev/null @@ -1,66 +0,0 @@ -// tauri/tooling/api/src/tauri.ts -function uid() { - return window.crypto.getRandomValues(new Uint32Array(1))[0]; -} -function transformCallback(callback, once = false) { - const identifier = uid(); - const prop = `_${identifier}`; - Object.defineProperty(window, prop, { - value: (result) => { - if (once) { - Reflect.deleteProperty(window, prop); - } - return callback?.(result); - }, - writable: false, - configurable: true - }); - return identifier; -} -async function invoke(cmd, args = {}) { - return new Promise((resolve, reject) => { - const callback = transformCallback((e) => { - resolve(e); - Reflect.deleteProperty(window, `_${error}`); - }, true); - const error = transformCallback((e) => { - reject(e); - Reflect.deleteProperty(window, `_${callback}`); - }, true); - window.__TAURI_IPC__({ - cmd, - callback, - error, - ...args - }); - }); -} - -// tauri/tooling/api/src/helpers/tauri.ts -async function invokeTauriCommand(command) { - return invoke("tauri", command); -} - -// tauri/tooling/api/src/clipboard.ts -async function writeText(text) { - return invokeTauriCommand({ - __tauriModule: "Clipboard", - message: { - cmd: "writeText", - data: text - } - }); -} -async function readText() { - return invokeTauriCommand({ - __tauriModule: "Clipboard", - message: { - cmd: "readText", - data: null - } - }); -} -export { - readText, - writeText -}; diff --git a/examples/test/dist/snippets/tauri-sys-91bd50ded94e0ed7/src/dialog.js b/examples/test/dist/snippets/tauri-sys-91bd50ded94e0ed7/src/dialog.js deleted file mode 100644 index 53811e1..0000000 --- a/examples/test/dist/snippets/tauri-sys-91bd50ded94e0ed7/src/dialog.js +++ /dev/null @@ -1,111 +0,0 @@ -// tauri/tooling/api/src/tauri.ts -function uid() { - return window.crypto.getRandomValues(new Uint32Array(1))[0]; -} -function transformCallback(callback, once = false) { - const identifier = uid(); - const prop = `_${identifier}`; - Object.defineProperty(window, prop, { - value: (result) => { - if (once) { - Reflect.deleteProperty(window, prop); - } - return callback?.(result); - }, - writable: false, - configurable: true - }); - return identifier; -} -async function invoke(cmd, args = {}) { - return new Promise((resolve, reject) => { - const callback = transformCallback((e) => { - resolve(e); - Reflect.deleteProperty(window, `_${error}`); - }, true); - const error = transformCallback((e) => { - reject(e); - Reflect.deleteProperty(window, `_${callback}`); - }, true); - window.__TAURI_IPC__({ - cmd, - callback, - error, - ...args - }); - }); -} - -// tauri/tooling/api/src/helpers/tauri.ts -async function invokeTauriCommand(command) { - return invoke("tauri", command); -} - -// tauri/tooling/api/src/dialog.ts -async function open(options = {}) { - if (typeof options === "object") { - Object.freeze(options); - } - return invokeTauriCommand({ - __tauriModule: "Dialog", - message: { - cmd: "openDialog", - options - } - }); -} -async function save(options = {}) { - if (typeof options === "object") { - Object.freeze(options); - } - return invokeTauriCommand({ - __tauriModule: "Dialog", - message: { - cmd: "saveDialog", - options - } - }); -} -async function message(message2, options) { - const opts = typeof options === "string" ? { title: options } : options; - return invokeTauriCommand({ - __tauriModule: "Dialog", - message: { - cmd: "messageDialog", - message: message2.toString(), - title: opts?.title?.toString(), - type: opts?.type - } - }); -} -async function ask(message2, options) { - const opts = typeof options === "string" ? { title: options } : options; - return invokeTauriCommand({ - __tauriModule: "Dialog", - message: { - cmd: "askDialog", - message: message2.toString(), - title: opts?.title?.toString(), - type: opts?.type - } - }); -} -async function confirm(message2, options) { - const opts = typeof options === "string" ? { title: options } : options; - return invokeTauriCommand({ - __tauriModule: "Dialog", - message: { - cmd: "confirmDialog", - message: message2.toString(), - title: opts?.title?.toString(), - type: opts?.type - } - }); -} -export { - ask, - confirm, - message, - open, - save -}; diff --git a/examples/test/dist/snippets/tauri-sys-91bd50ded94e0ed7/src/event.js b/examples/test/dist/snippets/tauri-sys-91bd50ded94e0ed7/src/event.js deleted file mode 100644 index 934f20b..0000000 --- a/examples/test/dist/snippets/tauri-sys-91bd50ded94e0ed7/src/event.js +++ /dev/null @@ -1,123 +0,0 @@ -// tauri/tooling/api/src/tauri.ts -function uid() { - return window.crypto.getRandomValues(new Uint32Array(1))[0]; -} -function transformCallback(callback, once3 = false) { - const identifier = uid(); - const prop = `_${identifier}`; - Object.defineProperty(window, prop, { - value: (result) => { - if (once3) { - Reflect.deleteProperty(window, prop); - } - return callback?.(result); - }, - writable: false, - configurable: true - }); - return identifier; -} -async function invoke(cmd, args = {}) { - return new Promise((resolve, reject) => { - const callback = transformCallback((e) => { - resolve(e); - Reflect.deleteProperty(window, `_${error}`); - }, true); - const error = transformCallback((e) => { - reject(e); - Reflect.deleteProperty(window, `_${callback}`); - }, true); - window.__TAURI_IPC__({ - cmd, - callback, - error, - ...args - }); - }); -} - -// tauri/tooling/api/src/helpers/tauri.ts -async function invokeTauriCommand(command) { - return invoke("tauri", command); -} - -// tauri/tooling/api/src/helpers/event.ts -async function _unlisten(event, eventId) { - return invokeTauriCommand({ - __tauriModule: "Event", - message: { - cmd: "unlisten", - event, - eventId - } - }); -} -async function emit(event, windowLabel, payload) { - await invokeTauriCommand({ - __tauriModule: "Event", - message: { - cmd: "emit", - event, - windowLabel, - payload - } - }); -} -async function listen(event, windowLabel, handler) { - return invokeTauriCommand({ - __tauriModule: "Event", - message: { - cmd: "listen", - event, - windowLabel, - handler: transformCallback(handler) - } - }).then((eventId) => { - return async () => _unlisten(event, eventId); - }); -} -async function once(event, windowLabel, handler) { - return listen(event, windowLabel, (eventData) => { - handler(eventData); - _unlisten(event, eventData.id).catch(() => { - }); - }); -} - -// tauri/tooling/api/src/event.ts -var TauriEvent = /* @__PURE__ */ ((TauriEvent2) => { - TauriEvent2["WINDOW_RESIZED"] = "tauri://resize"; - TauriEvent2["WINDOW_MOVED"] = "tauri://move"; - TauriEvent2["WINDOW_CLOSE_REQUESTED"] = "tauri://close-requested"; - TauriEvent2["WINDOW_CREATED"] = "tauri://window-created"; - TauriEvent2["WINDOW_DESTROYED"] = "tauri://destroyed"; - TauriEvent2["WINDOW_FOCUS"] = "tauri://focus"; - TauriEvent2["WINDOW_BLUR"] = "tauri://blur"; - TauriEvent2["WINDOW_SCALE_FACTOR_CHANGED"] = "tauri://scale-change"; - TauriEvent2["WINDOW_THEME_CHANGED"] = "tauri://theme-changed"; - TauriEvent2["WINDOW_FILE_DROP"] = "tauri://file-drop"; - TauriEvent2["WINDOW_FILE_DROP_HOVER"] = "tauri://file-drop-hover"; - TauriEvent2["WINDOW_FILE_DROP_CANCELLED"] = "tauri://file-drop-cancelled"; - TauriEvent2["MENU"] = "tauri://menu"; - TauriEvent2["CHECK_UPDATE"] = "tauri://update"; - TauriEvent2["UPDATE_AVAILABLE"] = "tauri://update-available"; - TauriEvent2["INSTALL_UPDATE"] = "tauri://update-install"; - TauriEvent2["STATUS_UPDATE"] = "tauri://update-status"; - TauriEvent2["DOWNLOAD_PROGRESS"] = "tauri://update-download-progress"; - return TauriEvent2; -})(TauriEvent || {}); -async function listen2(event, handler) { - return listen(event, null, handler); -} -async function once2(event, handler) { - return once(event, null, handler); -} -async function emit2(event, payload) { - return emit(event, void 0, payload); -} -export { - TauriEvent, - emit2 as emit, - listen2 as listen, - once2 as once -}; diff --git a/examples/test/dist/snippets/tauri-sys-91bd50ded94e0ed7/src/mocks.js b/examples/test/dist/snippets/tauri-sys-91bd50ded94e0ed7/src/mocks.js deleted file mode 100644 index 4342d8f..0000000 --- a/examples/test/dist/snippets/tauri-sys-91bd50ded94e0ed7/src/mocks.js +++ /dev/null @@ -1,30 +0,0 @@ -// tauri/tooling/api/src/mocks.ts -function mockIPC(cb) { - window.__TAURI_IPC__ = async ({ - cmd, - callback, - error, - ...args - }) => { - try { - window[`_${callback}`](await cb(cmd, args)); - } catch (err) { - window[`_${error}`](err); - } - }; -} -function mockWindows(current, ...additionalWindows) { - window.__TAURI_METADATA__ = { - __windows: [current, ...additionalWindows].map((label) => ({ label })), - __currentWindow: { label: current } - }; -} -function clearMocks() { - delete window.__TAURI_IPC__; - delete window.__TAURI_METADATA__; -} -export { - clearMocks, - mockIPC, - mockWindows -}; diff --git a/examples/test/dist/snippets/tauri-sys-91bd50ded94e0ed7/src/process.js b/examples/test/dist/snippets/tauri-sys-91bd50ded94e0ed7/src/process.js deleted file mode 100644 index 9356313..0000000 --- a/examples/test/dist/snippets/tauri-sys-91bd50ded94e0ed7/src/process.js +++ /dev/null @@ -1,65 +0,0 @@ -// tauri/tooling/api/src/tauri.ts -function uid() { - return window.crypto.getRandomValues(new Uint32Array(1))[0]; -} -function transformCallback(callback, once = false) { - const identifier = uid(); - const prop = `_${identifier}`; - Object.defineProperty(window, prop, { - value: (result) => { - if (once) { - Reflect.deleteProperty(window, prop); - } - return callback?.(result); - }, - writable: false, - configurable: true - }); - return identifier; -} -async function invoke(cmd, args = {}) { - return new Promise((resolve, reject) => { - const callback = transformCallback((e) => { - resolve(e); - Reflect.deleteProperty(window, `_${error}`); - }, true); - const error = transformCallback((e) => { - reject(e); - Reflect.deleteProperty(window, `_${callback}`); - }, true); - window.__TAURI_IPC__({ - cmd, - callback, - error, - ...args - }); - }); -} - -// tauri/tooling/api/src/helpers/tauri.ts -async function invokeTauriCommand(command) { - return invoke("tauri", command); -} - -// tauri/tooling/api/src/process.ts -async function exit(exitCode = 0) { - return invokeTauriCommand({ - __tauriModule: "Process", - message: { - cmd: "exit", - exitCode - } - }); -} -async function relaunch() { - return invokeTauriCommand({ - __tauriModule: "Process", - message: { - cmd: "relaunch" - } - }); -} -export { - exit, - relaunch -}; diff --git a/examples/test/dist/snippets/tauri-sys-91bd50ded94e0ed7/src/tauri.js b/examples/test/dist/snippets/tauri-sys-91bd50ded94e0ed7/src/tauri.js deleted file mode 100644 index 5360e6f..0000000 --- a/examples/test/dist/snippets/tauri-sys-91bd50ded94e0ed7/src/tauri.js +++ /dev/null @@ -1,46 +0,0 @@ -// tauri/tooling/api/src/tauri.ts -function uid() { - return window.crypto.getRandomValues(new Uint32Array(1))[0]; -} -function transformCallback(callback, once = false) { - const identifier = uid(); - const prop = `_${identifier}`; - Object.defineProperty(window, prop, { - value: (result) => { - if (once) { - Reflect.deleteProperty(window, prop); - } - return callback?.(result); - }, - writable: false, - configurable: true - }); - return identifier; -} -async function invoke(cmd, args = {}) { - return new Promise((resolve, reject) => { - const callback = transformCallback((e) => { - resolve(e); - Reflect.deleteProperty(window, `_${error}`); - }, true); - const error = transformCallback((e) => { - reject(e); - Reflect.deleteProperty(window, `_${callback}`); - }, true); - window.__TAURI_IPC__({ - cmd, - callback, - error, - ...args - }); - }); -} -function convertFileSrc(filePath, protocol = "asset") { - const path = encodeURIComponent(filePath); - return navigator.userAgent.includes("Windows") ? `https://${protocol}.localhost/${path}` : `${protocol}://localhost/${path}`; -} -export { - convertFileSrc, - invoke, - transformCallback -}; diff --git a/examples/test/dist/snippets/tauri-sys-91bd50ded94e0ed7/src/window.js b/examples/test/dist/snippets/tauri-sys-91bd50ded94e0ed7/src/window.js deleted file mode 100644 index e0b637b..0000000 --- a/examples/test/dist/snippets/tauri-sys-91bd50ded94e0ed7/src/window.js +++ /dev/null @@ -1,1004 +0,0 @@ -// tauri/tooling/api/src/tauri.ts -function uid() { - return window.crypto.getRandomValues(new Uint32Array(1))[0]; -} -function transformCallback(callback, once2 = false) { - const identifier = uid(); - const prop = `_${identifier}`; - Object.defineProperty(window, prop, { - value: (result) => { - if (once2) { - Reflect.deleteProperty(window, prop); - } - return callback?.(result); - }, - writable: false, - configurable: true - }); - return identifier; -} -async function invoke(cmd, args = {}) { - return new Promise((resolve, reject) => { - const callback = transformCallback((e) => { - resolve(e); - Reflect.deleteProperty(window, `_${error}`); - }, true); - const error = transformCallback((e) => { - reject(e); - Reflect.deleteProperty(window, `_${callback}`); - }, true); - window.__TAURI_IPC__({ - cmd, - callback, - error, - ...args - }); - }); -} - -// tauri/tooling/api/src/helpers/tauri.ts -async function invokeTauriCommand(command) { - return invoke("tauri", command); -} - -// tauri/tooling/api/src/helpers/event.ts -async function _unlisten(event, eventId) { - return invokeTauriCommand({ - __tauriModule: "Event", - message: { - cmd: "unlisten", - event, - eventId - } - }); -} -async function emit(event, windowLabel, payload) { - await invokeTauriCommand({ - __tauriModule: "Event", - message: { - cmd: "emit", - event, - windowLabel, - payload - } - }); -} -async function listen(event, windowLabel, handler) { - return invokeTauriCommand({ - __tauriModule: "Event", - message: { - cmd: "listen", - event, - windowLabel, - handler: transformCallback(handler) - } - }).then((eventId) => { - return async () => _unlisten(event, eventId); - }); -} -async function once(event, windowLabel, handler) { - return listen(event, windowLabel, (eventData) => { - handler(eventData); - _unlisten(event, eventData.id).catch(() => { - }); - }); -} - -// tauri/tooling/api/src/window.ts -var LogicalSize = class { - constructor(width, height) { - this.type = "Logical"; - this.width = width; - this.height = height; - } -}; -var PhysicalSize = class { - constructor(width, height) { - this.type = "Physical"; - this.width = width; - this.height = height; - } - toLogical(scaleFactor) { - return new LogicalSize(this.width / scaleFactor, this.height / scaleFactor); - } -}; -var LogicalPosition = class { - constructor(x, y) { - this.type = "Logical"; - this.x = x; - this.y = y; - } -}; -var PhysicalPosition = class { - constructor(x, y) { - this.type = "Physical"; - this.x = x; - this.y = y; - } - toLogical(scaleFactor) { - return new LogicalPosition(this.x / scaleFactor, this.y / scaleFactor); - } -}; -var UserAttentionType = /* @__PURE__ */ ((UserAttentionType2) => { - UserAttentionType2[UserAttentionType2["Critical"] = 1] = "Critical"; - UserAttentionType2[UserAttentionType2["Informational"] = 2] = "Informational"; - return UserAttentionType2; -})(UserAttentionType || {}); -function getCurrent() { - return new WebviewWindow(window.__TAURI_METADATA__.__currentWindow.label, { - skip: true - }); -} -function getAll() { - return window.__TAURI_METADATA__.__windows.map( - (w) => new WebviewWindow(w.label, { - skip: true - }) - ); -} -var localTauriEvents = ["tauri://created", "tauri://error"]; -var WebviewWindowHandle = class { - constructor(label) { - this.label = label; - this.listeners = /* @__PURE__ */ Object.create(null); - } - async listen(event, handler) { - if (this._handleTauriEvent(event, handler)) { - return Promise.resolve(() => { - const listeners = this.listeners[event]; - listeners.splice(listeners.indexOf(handler), 1); - }); - } - return listen(event, this.label, handler); - } - async once(event, handler) { - if (this._handleTauriEvent(event, handler)) { - return Promise.resolve(() => { - const listeners = this.listeners[event]; - listeners.splice(listeners.indexOf(handler), 1); - }); - } - return once(event, this.label, handler); - } - async emit(event, payload) { - if (localTauriEvents.includes(event)) { - for (const handler of this.listeners[event] || []) { - handler({ event, id: -1, windowLabel: this.label, payload }); - } - return Promise.resolve(); - } - return emit(event, this.label, payload); - } - _handleTauriEvent(event, handler) { - if (localTauriEvents.includes(event)) { - if (!(event in this.listeners)) { - this.listeners[event] = [handler]; - } else { - this.listeners[event].push(handler); - } - return true; - } - return false; - } -}; -var WindowManager = class extends WebviewWindowHandle { - async scaleFactor() { - return invokeTauriCommand({ - __tauriModule: "Window", - message: { - cmd: "manage", - data: { - label: this.label, - cmd: { - type: "scaleFactor" - } - } - } - }); - } - async innerPosition() { - return invokeTauriCommand({ - __tauriModule: "Window", - message: { - cmd: "manage", - data: { - label: this.label, - cmd: { - type: "innerPosition" - } - } - } - }).then(({ x, y }) => new PhysicalPosition(x, y)); - } - async outerPosition() { - return invokeTauriCommand({ - __tauriModule: "Window", - message: { - cmd: "manage", - data: { - label: this.label, - cmd: { - type: "outerPosition" - } - } - } - }).then(({ x, y }) => new PhysicalPosition(x, y)); - } - async innerSize() { - return invokeTauriCommand({ - __tauriModule: "Window", - message: { - cmd: "manage", - data: { - label: this.label, - cmd: { - type: "innerSize" - } - } - } - }).then(({ width, height }) => new PhysicalSize(width, height)); - } - async outerSize() { - return invokeTauriCommand({ - __tauriModule: "Window", - message: { - cmd: "manage", - data: { - label: this.label, - cmd: { - type: "outerSize" - } - } - } - }).then(({ width, height }) => new PhysicalSize(width, height)); - } - async isFullscreen() { - return invokeTauriCommand({ - __tauriModule: "Window", - message: { - cmd: "manage", - data: { - label: this.label, - cmd: { - type: "isFullscreen" - } - } - } - }); - } - async isMaximized() { - return invokeTauriCommand({ - __tauriModule: "Window", - message: { - cmd: "manage", - data: { - label: this.label, - cmd: { - type: "isMaximized" - } - } - } - }); - } - async isDecorated() { - return invokeTauriCommand({ - __tauriModule: "Window", - message: { - cmd: "manage", - data: { - label: this.label, - cmd: { - type: "isDecorated" - } - } - } - }); - } - async isResizable() { - return invokeTauriCommand({ - __tauriModule: "Window", - message: { - cmd: "manage", - data: { - label: this.label, - cmd: { - type: "isResizable" - } - } - } - }); - } - async isVisible() { - return invokeTauriCommand({ - __tauriModule: "Window", - message: { - cmd: "manage", - data: { - label: this.label, - cmd: { - type: "isVisible" - } - } - } - }); - } - async theme() { - return invokeTauriCommand({ - __tauriModule: "Window", - message: { - cmd: "manage", - data: { - label: this.label, - cmd: { - type: "theme" - } - } - } - }); - } - async center() { - return invokeTauriCommand({ - __tauriModule: "Window", - message: { - cmd: "manage", - data: { - label: this.label, - cmd: { - type: "center" - } - } - } - }); - } - async requestUserAttention(requestType) { - let requestType_ = null; - if (requestType) { - if (requestType === 1 /* Critical */) { - requestType_ = { type: "Critical" }; - } else { - requestType_ = { type: "Informational" }; - } - } - return invokeTauriCommand({ - __tauriModule: "Window", - message: { - cmd: "manage", - data: { - label: this.label, - cmd: { - type: "requestUserAttention", - payload: requestType_ - } - } - } - }); - } - async setResizable(resizable) { - return invokeTauriCommand({ - __tauriModule: "Window", - message: { - cmd: "manage", - data: { - label: this.label, - cmd: { - type: "setResizable", - payload: resizable - } - } - } - }); - } - async setTitle(title) { - return invokeTauriCommand({ - __tauriModule: "Window", - message: { - cmd: "manage", - data: { - label: this.label, - cmd: { - type: "setTitle", - payload: title - } - } - } - }); - } - async maximize() { - return invokeTauriCommand({ - __tauriModule: "Window", - message: { - cmd: "manage", - data: { - label: this.label, - cmd: { - type: "maximize" - } - } - } - }); - } - async unmaximize() { - return invokeTauriCommand({ - __tauriModule: "Window", - message: { - cmd: "manage", - data: { - label: this.label, - cmd: { - type: "unmaximize" - } - } - } - }); - } - async toggleMaximize() { - return invokeTauriCommand({ - __tauriModule: "Window", - message: { - cmd: "manage", - data: { - label: this.label, - cmd: { - type: "toggleMaximize" - } - } - } - }); - } - async minimize() { - return invokeTauriCommand({ - __tauriModule: "Window", - message: { - cmd: "manage", - data: { - label: this.label, - cmd: { - type: "minimize" - } - } - } - }); - } - async unminimize() { - return invokeTauriCommand({ - __tauriModule: "Window", - message: { - cmd: "manage", - data: { - label: this.label, - cmd: { - type: "unminimize" - } - } - } - }); - } - async show() { - return invokeTauriCommand({ - __tauriModule: "Window", - message: { - cmd: "manage", - data: { - label: this.label, - cmd: { - type: "show" - } - } - } - }); - } - async hide() { - return invokeTauriCommand({ - __tauriModule: "Window", - message: { - cmd: "manage", - data: { - label: this.label, - cmd: { - type: "hide" - } - } - } - }); - } - async close() { - return invokeTauriCommand({ - __tauriModule: "Window", - message: { - cmd: "manage", - data: { - label: this.label, - cmd: { - type: "close" - } - } - } - }); - } - async setDecorations(decorations) { - return invokeTauriCommand({ - __tauriModule: "Window", - message: { - cmd: "manage", - data: { - label: this.label, - cmd: { - type: "setDecorations", - payload: decorations - } - } - } - }); - } - async setAlwaysOnTop(alwaysOnTop) { - return invokeTauriCommand({ - __tauriModule: "Window", - message: { - cmd: "manage", - data: { - label: this.label, - cmd: { - type: "setAlwaysOnTop", - payload: alwaysOnTop - } - } - } - }); - } - async setSize(size) { - if (!size || size.type !== "Logical" && size.type !== "Physical") { - throw new Error( - "the `size` argument must be either a LogicalSize or a PhysicalSize instance" - ); - } - return invokeTauriCommand({ - __tauriModule: "Window", - message: { - cmd: "manage", - data: { - label: this.label, - cmd: { - type: "setSize", - payload: { - type: size.type, - data: { - width: size.width, - height: size.height - } - } - } - } - } - }); - } - async setMinSize(size) { - if (size && size.type !== "Logical" && size.type !== "Physical") { - throw new Error( - "the `size` argument must be either a LogicalSize or a PhysicalSize instance" - ); - } - return invokeTauriCommand({ - __tauriModule: "Window", - message: { - cmd: "manage", - data: { - label: this.label, - cmd: { - type: "setMinSize", - payload: size ? { - type: size.type, - data: { - width: size.width, - height: size.height - } - } : null - } - } - } - }); - } - async setMaxSize(size) { - if (size && size.type !== "Logical" && size.type !== "Physical") { - throw new Error( - "the `size` argument must be either a LogicalSize or a PhysicalSize instance" - ); - } - return invokeTauriCommand({ - __tauriModule: "Window", - message: { - cmd: "manage", - data: { - label: this.label, - cmd: { - type: "setMaxSize", - payload: size ? { - type: size.type, - data: { - width: size.width, - height: size.height - } - } : null - } - } - } - }); - } - async setPosition(position) { - if (!position || position.type !== "Logical" && position.type !== "Physical") { - throw new Error( - "the `position` argument must be either a LogicalPosition or a PhysicalPosition instance" - ); - } - return invokeTauriCommand({ - __tauriModule: "Window", - message: { - cmd: "manage", - data: { - label: this.label, - cmd: { - type: "setPosition", - payload: { - type: position.type, - data: { - x: position.x, - y: position.y - } - } - } - } - } - }); - } - async setFullscreen(fullscreen) { - return invokeTauriCommand({ - __tauriModule: "Window", - message: { - cmd: "manage", - data: { - label: this.label, - cmd: { - type: "setFullscreen", - payload: fullscreen - } - } - } - }); - } - async setFocus() { - return invokeTauriCommand({ - __tauriModule: "Window", - message: { - cmd: "manage", - data: { - label: this.label, - cmd: { - type: "setFocus" - } - } - } - }); - } - async setIcon(icon) { - return invokeTauriCommand({ - __tauriModule: "Window", - message: { - cmd: "manage", - data: { - label: this.label, - cmd: { - type: "setIcon", - payload: { - icon: typeof icon === "string" ? icon : Array.from(icon) - } - } - } - } - }); - } - async setSkipTaskbar(skip) { - return invokeTauriCommand({ - __tauriModule: "Window", - message: { - cmd: "manage", - data: { - label: this.label, - cmd: { - type: "setSkipTaskbar", - payload: skip - } - } - } - }); - } - async setCursorGrab(grab) { - return invokeTauriCommand({ - __tauriModule: "Window", - message: { - cmd: "manage", - data: { - label: this.label, - cmd: { - type: "setCursorGrab", - payload: grab - } - } - } - }); - } - async setCursorVisible(visible) { - return invokeTauriCommand({ - __tauriModule: "Window", - message: { - cmd: "manage", - data: { - label: this.label, - cmd: { - type: "setCursorVisible", - payload: visible - } - } - } - }); - } - async setCursorIcon(icon) { - return invokeTauriCommand({ - __tauriModule: "Window", - message: { - cmd: "manage", - data: { - label: this.label, - cmd: { - type: "setCursorIcon", - payload: icon - } - } - } - }); - } - async setCursorPosition(position) { - if (!position || position.type !== "Logical" && position.type !== "Physical") { - throw new Error( - "the `position` argument must be either a LogicalPosition or a PhysicalPosition instance" - ); - } - return invokeTauriCommand({ - __tauriModule: "Window", - message: { - cmd: "manage", - data: { - label: this.label, - cmd: { - type: "setCursorPosition", - payload: { - type: position.type, - data: { - x: position.x, - y: position.y - } - } - } - } - } - }); - } - async setIgnoreCursorEvents(ignore) { - return invokeTauriCommand({ - __tauriModule: "Window", - message: { - cmd: "manage", - data: { - label: this.label, - cmd: { - type: "setIgnoreCursorEvents", - payload: ignore - } - } - } - }); - } - async startDragging() { - return invokeTauriCommand({ - __tauriModule: "Window", - message: { - cmd: "manage", - data: { - label: this.label, - cmd: { - type: "startDragging" - } - } - } - }); - } - async onResized(handler) { - return this.listen("tauri://resize" /* WINDOW_RESIZED */, handler); - } - async onMoved(handler) { - return this.listen("tauri://move" /* WINDOW_MOVED */, handler); - } - async onCloseRequested(handler) { - return this.listen("tauri://close-requested" /* WINDOW_CLOSE_REQUESTED */, (event) => { - const evt = new CloseRequestedEvent(event); - void Promise.resolve(handler(evt)).then(() => { - if (!evt.isPreventDefault()) { - return this.close(); - } - }); - }); - } - async onFocusChanged(handler) { - const unlistenFocus = await this.listen( - "tauri://focus" /* WINDOW_FOCUS */, - (event) => { - handler({ ...event, payload: true }); - } - ); - const unlistenBlur = await this.listen( - "tauri://blur" /* WINDOW_BLUR */, - (event) => { - handler({ ...event, payload: false }); - } - ); - return () => { - unlistenFocus(); - unlistenBlur(); - }; - } - async onScaleChanged(handler) { - return this.listen( - "tauri://scale-change" /* WINDOW_SCALE_FACTOR_CHANGED */, - handler - ); - } - async onMenuClicked(handler) { - return this.listen("tauri://menu" /* MENU */, handler); - } - async onFileDropEvent(handler) { - const unlistenFileDrop = await this.listen( - "tauri://file-drop" /* WINDOW_FILE_DROP */, - (event) => { - handler({ ...event, payload: { type: "drop", paths: event.payload } }); - } - ); - const unlistenFileHover = await this.listen( - "tauri://file-drop-hover" /* WINDOW_FILE_DROP_HOVER */, - (event) => { - handler({ ...event, payload: { type: "hover", paths: event.payload } }); - } - ); - const unlistenCancel = await this.listen( - "tauri://file-drop-cancelled" /* WINDOW_FILE_DROP_CANCELLED */, - (event) => { - handler({ ...event, payload: { type: "cancel" } }); - } - ); - return () => { - unlistenFileDrop(); - unlistenFileHover(); - unlistenCancel(); - }; - } - async onThemeChanged(handler) { - return this.listen("tauri://theme-changed" /* WINDOW_THEME_CHANGED */, handler); - } -}; -var CloseRequestedEvent = class { - constructor(event) { - this._preventDefault = false; - this.event = event.event; - this.windowLabel = event.windowLabel; - this.id = event.id; - } - preventDefault() { - this._preventDefault = true; - } - isPreventDefault() { - return this._preventDefault; - } -}; -var WebviewWindow = class extends WindowManager { - constructor(label, options = {}) { - super(label); - if (!options?.skip) { - invokeTauriCommand({ - __tauriModule: "Window", - message: { - cmd: "createWebview", - data: { - options: { - label, - ...options - } - } - } - }).then(async () => this.emit("tauri://created")).catch(async (e) => this.emit("tauri://error", e)); - } - } - static getByLabel(label) { - if (getAll().some((w) => w.label === label)) { - return new WebviewWindow(label, { skip: true }); - } - return null; - } -}; -var appWindow; -if ("__TAURI_METADATA__" in window) { - appWindow = new WebviewWindow( - window.__TAURI_METADATA__.__currentWindow.label, - { - skip: true - } - ); -} else { - console.warn( - `Could not find "window.__TAURI_METADATA__". The "appWindow" value will reference the "main" window label. -Note that this is not an issue if running this frontend on a browser instead of a Tauri window.` - ); - appWindow = new WebviewWindow("main", { - skip: true - }); -} -function mapMonitor(m) { - return m === null ? null : { - name: m.name, - scaleFactor: m.scaleFactor, - position: new PhysicalPosition(m.position.x, m.position.y), - size: new PhysicalSize(m.size.width, m.size.height) - }; -} -async function currentMonitor() { - return invokeTauriCommand({ - __tauriModule: "Window", - message: { - cmd: "manage", - data: { - cmd: { - type: "currentMonitor" - } - } - } - }).then(mapMonitor); -} -async function primaryMonitor() { - return invokeTauriCommand({ - __tauriModule: "Window", - message: { - cmd: "manage", - data: { - cmd: { - type: "primaryMonitor" - } - } - } - }).then(mapMonitor); -} -async function availableMonitors() { - return invokeTauriCommand({ - __tauriModule: "Window", - message: { - cmd: "manage", - data: { - cmd: { - type: "availableMonitors" - } - } - } - }).then((ms) => ms.map(mapMonitor)); -} -export { - CloseRequestedEvent, - LogicalPosition, - LogicalSize, - PhysicalPosition, - PhysicalSize, - UserAttentionType, - WebviewWindow, - WebviewWindowHandle, - WindowManager, - appWindow, - availableMonitors, - currentMonitor, - getAll, - getCurrent, - primaryMonitor -}; diff --git a/examples/test/dist/tauri-sys-test-ui-94e40ba9adfa8fe6.js b/examples/test/dist/tauri-sys-test-ui-94e40ba9adfa8fe6.js deleted file mode 100644 index c930c00..0000000 --- a/examples/test/dist/tauri-sys-test-ui-94e40ba9adfa8fe6.js +++ /dev/null @@ -1,656 +0,0 @@ -import { getName, getTauriVersion, getVersion } from './snippets/tauri-sys-91bd50ded94e0ed7/src/app.js'; -import { readText, writeText } from './snippets/tauri-sys-91bd50ded94e0ed7/src/clipboard.js'; -import { emit } from './snippets/tauri-sys-91bd50ded94e0ed7/src/event.js'; -import { exit } from './snippets/tauri-sys-91bd50ded94e0ed7/src/process.js'; -import { invoke } from './snippets/tauri-sys-91bd50ded94e0ed7/src/tauri.js'; - -let wasm; - -const cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }); - -cachedTextDecoder.decode(); - -let cachedUint8Memory0 = new Uint8Array(); - -function getUint8Memory0() { - if (cachedUint8Memory0.byteLength === 0) { - cachedUint8Memory0 = new Uint8Array(wasm.memory.buffer); - } - return cachedUint8Memory0; -} - -function getStringFromWasm0(ptr, len) { - return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len)); -} - -const heap = new Array(32).fill(undefined); - -heap.push(undefined, null, true, false); - -let heap_next = heap.length; - -function addHeapObject(obj) { - if (heap_next === heap.length) heap.push(heap.length + 1); - const idx = heap_next; - heap_next = heap[idx]; - - heap[idx] = obj; - return idx; -} - -function getObject(idx) { return heap[idx]; } - -let WASM_VECTOR_LEN = 0; - -const cachedTextEncoder = new TextEncoder('utf-8'); - -const encodeString = (typeof cachedTextEncoder.encodeInto === 'function' - ? function (arg, view) { - return cachedTextEncoder.encodeInto(arg, view); -} - : function (arg, view) { - const buf = cachedTextEncoder.encode(arg); - view.set(buf); - return { - read: arg.length, - written: buf.length - }; -}); - -function passStringToWasm0(arg, malloc, realloc) { - - if (realloc === undefined) { - const buf = cachedTextEncoder.encode(arg); - const ptr = malloc(buf.length); - getUint8Memory0().subarray(ptr, ptr + buf.length).set(buf); - WASM_VECTOR_LEN = buf.length; - return ptr; - } - - let len = arg.length; - let ptr = malloc(len); - - const mem = getUint8Memory0(); - - let offset = 0; - - for (; offset < len; offset++) { - const code = arg.charCodeAt(offset); - if (code > 0x7F) break; - mem[ptr + offset] = code; - } - - if (offset !== len) { - if (offset !== 0) { - arg = arg.slice(offset); - } - ptr = realloc(ptr, len, len = offset + arg.length * 3); - const view = getUint8Memory0().subarray(ptr + offset, ptr + len); - const ret = encodeString(arg, view); - - offset += ret.written; - } - - WASM_VECTOR_LEN = offset; - return ptr; -} - -function isLikeNone(x) { - return x === undefined || x === null; -} - -let cachedInt32Memory0 = new Int32Array(); - -function getInt32Memory0() { - if (cachedInt32Memory0.byteLength === 0) { - cachedInt32Memory0 = new Int32Array(wasm.memory.buffer); - } - return cachedInt32Memory0; -} - -let cachedFloat64Memory0 = new Float64Array(); - -function getFloat64Memory0() { - if (cachedFloat64Memory0.byteLength === 0) { - cachedFloat64Memory0 = new Float64Array(wasm.memory.buffer); - } - return cachedFloat64Memory0; -} - -function dropObject(idx) { - if (idx < 36) return; - heap[idx] = heap_next; - heap_next = idx; -} - -function takeObject(idx) { - const ret = getObject(idx); - dropObject(idx); - return ret; -} - -function debugString(val) { - // primitive types - const type = typeof val; - if (type == 'number' || type == 'boolean' || val == null) { - return `${val}`; - } - if (type == 'string') { - return `"${val}"`; - } - if (type == 'symbol') { - const description = val.description; - if (description == null) { - return 'Symbol'; - } else { - return `Symbol(${description})`; - } - } - if (type == 'function') { - const name = val.name; - if (typeof name == 'string' && name.length > 0) { - return `Function(${name})`; - } else { - return 'Function'; - } - } - // objects - if (Array.isArray(val)) { - const length = val.length; - let debug = '['; - if (length > 0) { - debug += debugString(val[0]); - } - for(let i = 1; i < length; i++) { - debug += ', ' + debugString(val[i]); - } - debug += ']'; - return debug; - } - // Test for built-in - const builtInMatches = /\[object ([^\]]+)\]/.exec(toString.call(val)); - let className; - if (builtInMatches.length > 1) { - className = builtInMatches[1]; - } else { - // Failed to match the standard '[object ClassName]' - return toString.call(val); - } - if (className == 'Object') { - // we're a user defined class or Object - // JSON.stringify avoids problems with cycles, and is generally much - // easier than looping through ownProperties of `val`. - try { - return 'Object(' + JSON.stringify(val) + ')'; - } catch (_) { - return 'Object'; - } - } - // errors - if (val instanceof Error) { - return `${val.name}: ${val.message}\n${val.stack}`; - } - // TODO we could test for more things here, like `Set`s and `Map`s. - return className; -} - -function makeMutClosure(arg0, arg1, dtor, f) { - const state = { a: arg0, b: arg1, cnt: 1, dtor }; - const real = (...args) => { - // First up with a closure we increment the internal reference - // count. This ensures that the Rust closure environment won't - // be deallocated while we're invoking it. - state.cnt++; - const a = state.a; - state.a = 0; - try { - return f(a, state.b, ...args); - } finally { - if (--state.cnt === 0) { - wasm.__wbindgen_export_2.get(state.dtor)(a, state.b); - - } else { - state.a = a; - } - } - }; - real.original = state; - - return real; -} -function __wbg_adapter_28(arg0, arg1, arg2) { - wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h1531275bccc70f0a(arg0, arg1, addHeapObject(arg2)); -} - -function getCachedStringFromWasm0(ptr, len) { - if (ptr === 0) { - return getObject(len); - } else { - return getStringFromWasm0(ptr, len); - } -} - -function handleError(f, args) { - try { - return f.apply(this, args); - } catch (e) { - wasm.__wbindgen_exn_store(addHeapObject(e)); - } -} - -async function load(module, imports) { - if (typeof Response === 'function' && module instanceof Response) { - if (typeof WebAssembly.instantiateStreaming === 'function') { - try { - return await WebAssembly.instantiateStreaming(module, imports); - - } catch (e) { - if (module.headers.get('Content-Type') != 'application/wasm') { - console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e); - - } else { - throw e; - } - } - } - - const bytes = await module.arrayBuffer(); - return await WebAssembly.instantiate(bytes, imports); - - } else { - const instance = await WebAssembly.instantiate(module, imports); - - if (instance instanceof WebAssembly.Instance) { - return { instance, module }; - - } else { - return instance; - } - } -} - -function getImports() { - const imports = {}; - imports.wbg = {}; - imports.wbg.__wbg_readText_94a6e8d9907e78cc = function() { return handleError(function () { - const ret = readText(); - return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_writeText_f97e44754fa0ff39 = function() { return handleError(function (arg0, arg1) { - var v0 = getCachedStringFromWasm0(arg0, arg1); - const ret = writeText(v0); - return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_invoke_9b778281ea803eaa = function() { return handleError(function (arg0, arg1, arg2) { - var v0 = getCachedStringFromWasm0(arg0, arg1); - const ret = invoke(v0, takeObject(arg2)); - return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_getVersion_ffafb063403bc617 = function() { return handleError(function () { - const ret = getVersion(); - return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_getTauriVersion_e328534c86bd2dc2 = function() { return handleError(function () { - const ret = getTauriVersion(); - return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_getName_68a59771155ee2ce = function() { return handleError(function () { - const ret = getName(); - return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbindgen_error_new = function(arg0, arg1) { - const ret = new Error(getStringFromWasm0(arg0, arg1)); - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_boolean_get = function(arg0) { - const v = getObject(arg0); - const ret = typeof(v) === 'boolean' ? (v ? 1 : 0) : 2; - return ret; - }; - imports.wbg.__wbindgen_string_get = function(arg0, arg1) { - const obj = getObject(arg1); - const ret = typeof(obj) === 'string' ? obj : undefined; - var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - var len0 = WASM_VECTOR_LEN; - getInt32Memory0()[arg0 / 4 + 1] = len0; - getInt32Memory0()[arg0 / 4 + 0] = ptr0; - }; - imports.wbg.__wbindgen_object_clone_ref = function(arg0) { - const ret = getObject(arg0); - return addHeapObject(ret); - }; - imports.wbg.__wbg_emit_d58da538f5751592 = function() { return handleError(function (arg0, arg1, arg2) { - var v0 = getCachedStringFromWasm0(arg0, arg1); - const ret = emit(v0, takeObject(arg2)); - return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_exit_20b0b9ccb0860063 = function(arg0) { - const ret = exit(arg0 >>> 0); - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_string_new = function(arg0, arg1) { - const ret = getStringFromWasm0(arg0, arg1); - return addHeapObject(ret); - }; - imports.wbg.__wbg_nodeId_bbf0efafa303e805 = function(arg0, arg1) { - const ret = getObject(arg1).$$$nodeId; - getInt32Memory0()[arg0 / 4 + 1] = isLikeNone(ret) ? 0 : ret; - getInt32Memory0()[arg0 / 4 + 0] = !isLikeNone(ret); - }; - imports.wbg.__wbg_setnodeId_433ef8ed15bd1612 = function(arg0, arg1) { - getObject(arg0).$$$nodeId = arg1 >>> 0; - }; - imports.wbg.__wbg_createTextNode_a7d5f5b956acda97 = function(arg0, arg1) { - const ret = getObject(arg0).createTextNode(arg1); - return addHeapObject(ret); - }; - imports.wbg.__wbg_instanceof_Window_acc97ff9f5d2c7b4 = function(arg0) { - let result; - try { - result = getObject(arg0) instanceof Window; - } catch { - result = false; - } - const ret = result; - return ret; - }; - imports.wbg.__wbg_document_3ead31dbcad65886 = function(arg0) { - const ret = getObject(arg0).document; - return isLikeNone(ret) ? 0 : addHeapObject(ret); - }; - imports.wbg.__wbg_body_3cb4b4042b9a632b = function(arg0) { - const ret = getObject(arg0).body; - return isLikeNone(ret) ? 0 : addHeapObject(ret); - }; - imports.wbg.__wbg_createComment_0df3a4d0d91032e7 = function(arg0, arg1, arg2) { - var v0 = getCachedStringFromWasm0(arg1, arg2); - const ret = getObject(arg0).createComment(v0); - return addHeapObject(ret); - }; - imports.wbg.__wbg_createElement_976dbb84fe1661b5 = function() { return handleError(function (arg0, arg1, arg2) { - var v0 = getCachedStringFromWasm0(arg1, arg2); - const ret = getObject(arg0).createElement(v0); - return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_createElementNS_1561aca8ee3693c0 = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) { - var v0 = getCachedStringFromWasm0(arg1, arg2); - var v1 = getCachedStringFromWasm0(arg3, arg4); - const ret = getObject(arg0).createElementNS(v0, v1); - return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_createTextNode_300f845fab76642f = function(arg0, arg1, arg2) { - var v0 = getCachedStringFromWasm0(arg1, arg2); - const ret = getObject(arg0).createTextNode(v0); - return addHeapObject(ret); - }; - imports.wbg.__wbg_instanceof_Comment_1758f7164ca9ea81 = function(arg0) { - let result; - try { - result = getObject(arg0) instanceof Comment; - } catch { - result = false; - } - const ret = result; - return ret; - }; - imports.wbg.__wbg_instanceof_Text_6855016c7825859b = function(arg0) { - let result; - try { - result = getObject(arg0) instanceof Text; - } catch { - result = false; - } - const ret = result; - return ret; - }; - imports.wbg.__wbg_instanceof_Element_33bd126d58f2021b = function(arg0) { - let result; - try { - result = getObject(arg0) instanceof Element; - } catch { - result = false; - } - const ret = result; - return ret; - }; - imports.wbg.__wbg_outerHTML_bf662bdff92e5910 = function(arg0, arg1) { - const ret = getObject(arg1).outerHTML; - const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len0 = WASM_VECTOR_LEN; - getInt32Memory0()[arg0 / 4 + 1] = len0; - getInt32Memory0()[arg0 / 4 + 0] = ptr0; - }; - imports.wbg.__wbg_parentNode_e397bbbe28be7b28 = function(arg0) { - const ret = getObject(arg0).parentNode; - return isLikeNone(ret) ? 0 : addHeapObject(ret); - }; - imports.wbg.__wbg_nextSibling_62338ec2a05607b4 = function(arg0) { - const ret = getObject(arg0).nextSibling; - return isLikeNone(ret) ? 0 : addHeapObject(ret); - }; - imports.wbg.__wbg_textContent_77bd294928962f93 = function(arg0, arg1) { - const ret = getObject(arg1).textContent; - var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - var len0 = WASM_VECTOR_LEN; - getInt32Memory0()[arg0 / 4 + 1] = len0; - getInt32Memory0()[arg0 / 4 + 0] = ptr0; - }; - imports.wbg.__wbg_settextContent_538ceb17614272d8 = function(arg0, arg1, arg2) { - var v0 = getCachedStringFromWasm0(arg1, arg2); - getObject(arg0).textContent = v0; - }; - imports.wbg.__wbg_appendChild_e513ef0e5098dfdd = function() { return handleError(function (arg0, arg1) { - const ret = getObject(arg0).appendChild(getObject(arg1)); - return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_insertBefore_9f2d2defb9471006 = function() { return handleError(function (arg0, arg1, arg2) { - const ret = getObject(arg0).insertBefore(getObject(arg1), getObject(arg2)); - return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_removeChild_6751e9ca5d9aaf00 = function() { return handleError(function (arg0, arg1) { - const ret = getObject(arg0).removeChild(getObject(arg1)); - return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_replaceChild_4793d6269c04dd25 = function() { return handleError(function (arg0, arg1, arg2) { - const ret = getObject(arg0).replaceChild(getObject(arg1), getObject(arg2)); - return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbindgen_is_undefined = function(arg0) { - const ret = getObject(arg0) === undefined; - return ret; - }; - imports.wbg.__wbindgen_number_get = function(arg0, arg1) { - const obj = getObject(arg1); - const ret = typeof(obj) === 'number' ? obj : undefined; - getFloat64Memory0()[arg0 / 8 + 1] = isLikeNone(ret) ? 0 : ret; - getInt32Memory0()[arg0 / 4 + 0] = !isLikeNone(ret); - }; - imports.wbg.__wbindgen_cb_drop = function(arg0) { - const obj = takeObject(arg0).original; - if (obj.cnt-- == 1) { - obj.a = 0; - return true; - } - const ret = false; - return ret; - }; - imports.wbg.__wbindgen_jsval_loose_eq = function(arg0, arg1) { - const ret = getObject(arg0) == getObject(arg1); - return ret; - }; - imports.wbg.__wbg_set_20cbc34131e76824 = function(arg0, arg1, arg2) { - getObject(arg0)[takeObject(arg1)] = takeObject(arg2); - }; - imports.wbg.__wbg_instanceof_ArrayBuffer_e5e48f4762c5610b = function(arg0) { - let result; - try { - result = getObject(arg0) instanceof ArrayBuffer; - } catch { - result = false; - } - const ret = result; - return ret; - }; - imports.wbg.__wbg_newnoargs_b5b063fc6c2f0376 = function(arg0, arg1) { - var v0 = getCachedStringFromWasm0(arg0, arg1); - const ret = new Function(v0); - return addHeapObject(ret); - }; - imports.wbg.__wbg_call_97ae9d8645dc388b = function() { return handleError(function (arg0, arg1) { - const ret = getObject(arg0).call(getObject(arg1)); - return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_is_40a66842732708e7 = function(arg0, arg1) { - const ret = Object.is(getObject(arg0), getObject(arg1)); - return ret; - }; - imports.wbg.__wbg_new_0b9bfdd97583284e = function() { - const ret = new Object(); - return addHeapObject(ret); - }; - imports.wbg.__wbg_toString_7be108a12ef03bc2 = function(arg0) { - const ret = getObject(arg0).toString(); - return addHeapObject(ret); - }; - imports.wbg.__wbg_resolve_99fe17964f31ffc0 = function(arg0) { - const ret = Promise.resolve(getObject(arg0)); - return addHeapObject(ret); - }; - imports.wbg.__wbg_then_11f7a54d67b4bfad = function(arg0, arg1) { - const ret = getObject(arg0).then(getObject(arg1)); - return addHeapObject(ret); - }; - imports.wbg.__wbg_then_cedad20fbbd9418a = function(arg0, arg1, arg2) { - const ret = getObject(arg0).then(getObject(arg1), getObject(arg2)); - return addHeapObject(ret); - }; - imports.wbg.__wbg_globalThis_7f206bda628d5286 = function() { return handleError(function () { - const ret = globalThis.globalThis; - return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_self_6d479506f72c6a71 = function() { return handleError(function () { - const ret = self.self; - return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_window_f2557cc78490aceb = function() { return handleError(function () { - const ret = window.window; - return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_global_ba75c50d1cf384f4 = function() { return handleError(function () { - const ret = global.global; - return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_instanceof_Uint8Array_971eeda69eb75003 = function(arg0) { - let result; - try { - result = getObject(arg0) instanceof Uint8Array; - } catch { - result = false; - } - const ret = result; - return ret; - }; - imports.wbg.__wbg_new_8c3f0052272a457a = function(arg0) { - const ret = new Uint8Array(getObject(arg0)); - return addHeapObject(ret); - }; - imports.wbg.__wbg_length_9e1ae1900cb0fbd5 = function(arg0) { - const ret = getObject(arg0).length; - return ret; - }; - imports.wbg.__wbg_set_83db9690f9353e79 = function(arg0, arg1, arg2) { - getObject(arg0).set(getObject(arg1), arg2 >>> 0); - }; - imports.wbg.__wbg_buffer_3f3d764d4747d564 = function(arg0) { - const ret = getObject(arg0).buffer; - return addHeapObject(ret); - }; - imports.wbg.__wbg_error_f851667af71bcfc6 = function(arg0, arg1) { - var v0 = getCachedStringFromWasm0(arg0, arg1); - if (arg0 !== 0) { wasm.__wbindgen_free(arg0, arg1); } - console.error(v0); -}; -imports.wbg.__wbg_new_abda76e883ba8a5f = function() { - const ret = new Error(); - return addHeapObject(ret); -}; -imports.wbg.__wbg_stack_658279fe44541cf6 = function(arg0, arg1) { - const ret = getObject(arg1).stack; - const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len0 = WASM_VECTOR_LEN; - getInt32Memory0()[arg0 / 4 + 1] = len0; - getInt32Memory0()[arg0 / 4 + 0] = ptr0; -}; -imports.wbg.__wbindgen_debug_string = function(arg0, arg1) { - const ret = debugString(getObject(arg1)); - const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len0 = WASM_VECTOR_LEN; - getInt32Memory0()[arg0 / 4 + 1] = len0; - getInt32Memory0()[arg0 / 4 + 0] = ptr0; -}; -imports.wbg.__wbindgen_object_drop_ref = function(arg0) { - takeObject(arg0); -}; -imports.wbg.__wbindgen_throw = function(arg0, arg1) { - throw new Error(getStringFromWasm0(arg0, arg1)); -}; -imports.wbg.__wbindgen_memory = function() { - const ret = wasm.memory; - return addHeapObject(ret); -}; -imports.wbg.__wbindgen_closure_wrapper5161 = function(arg0, arg1, arg2) { - const ret = makeMutClosure(arg0, arg1, 322, __wbg_adapter_28); - return addHeapObject(ret); -}; - -return imports; -} - -function initMemory(imports, maybe_memory) { - -} - -function finalizeInit(instance, module) { - wasm = instance.exports; - init.__wbindgen_wasm_module = module; - cachedFloat64Memory0 = new Float64Array(); - cachedInt32Memory0 = new Int32Array(); - cachedUint8Memory0 = new Uint8Array(); - - wasm.__wbindgen_start(); - return wasm; -} - -function initSync(module) { - const imports = getImports(); - - initMemory(imports); - - if (!(module instanceof WebAssembly.Module)) { - module = new WebAssembly.Module(module); - } - - const instance = new WebAssembly.Instance(module, imports); - - return finalizeInit(instance, module); -} - -async function init(input) { - if (typeof input === 'undefined') { - input = new URL('tauri-sys-test-ui-94e40ba9adfa8fe6_bg.wasm', import.meta.url); - } - const imports = getImports(); - - if (typeof input === 'string' || (typeof Request === 'function' && input instanceof Request) || (typeof URL === 'function' && input instanceof URL)) { - input = fetch(input); - } - - initMemory(imports); - - const { instance, module } = await load(await input, imports); - - return finalizeInit(instance, module); -} - -export { initSync } -export default init; diff --git a/examples/test/dist/tauri-sys-test-ui-94e40ba9adfa8fe6_bg.wasm b/examples/test/dist/tauri-sys-test-ui-94e40ba9adfa8fe6_bg.wasm deleted file mode 100644 index 8e3477e56b2fc3f7467746e8e7a41557ccf6b85e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1593879 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

cXJwc@h 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

QIcD|JVzo<0 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

Miq0@u9E7N%#47stJUttcqlw4F? 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° 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%0A%sVLC-w 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

  • 6A~tP_WFwq4(gpG{L*-pV0};}FP@Mxdf% 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
  • _ubHEcOv!pjJ5zPqe`;Y0F;9g&6VsjSNAkaA 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 z%0A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 E2Sk6gP5=M^ diff --git a/examples/test/src/app.rs b/examples/test/src/app.rs index 26b160d..1b40ee3 100644 --- a/examples/test/src/app.rs +++ b/examples/test/src/app.rs @@ -1,4 +1,5 @@ use anyhow::ensure; +use log::debug; use tauri_sys::app; pub async fn get_name() -> anyhow::Result<()> { @@ -24,6 +25,8 @@ pub async fn get_version() -> anyhow::Result<()> { pub async fn get_tauri_version() -> anyhow::Result<()> { let version = app::get_tauri_version().await?; + debug!("version {}", version); + ensure!(version.major == 1); ensure!(version.minor == 1); ensure!(version.patch == 0); diff --git a/examples/test/src/main.rs b/examples/test/src/main.rs index 4ec54a6..eaff250 100644 --- a/examples/test/src/main.rs +++ b/examples/test/src/main.rs @@ -59,6 +59,8 @@ where } fn main() { + wasm_logger::init(wasm_logger::Config::default()); + panic::set_hook(Box::new(|info| { console_error_panic_hook::hook(info); @@ -67,6 +69,11 @@ fn main() { })); sycamore::render(|cx| { + #[cfg(feature = "ci")] + sycamore::suspense::await_suspense(cx, async { + tauri_sys::process::exit(0).await; + }); + view! { cx, table { tbody { @@ -82,7 +89,4 @@ fn main() { } } }); - - #[cfg(feature = "ci")] - wasm_bindgen_futures::spawn_local(async { tauri_sys::process::exit(0).await; }); } From 44b0a5491b405139715d540db70a90f0d1b896f6 Mon Sep 17 00:00:00 2001 From: Jonas Kruckenberg Date: Mon, 14 Nov 2022 11:27:48 +0100 Subject: [PATCH 26/29] Update app.rs --- examples/test/src/app.rs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/examples/test/src/app.rs b/examples/test/src/app.rs index 1b40ee3..693516b 100644 --- a/examples/test/src/app.rs +++ b/examples/test/src/app.rs @@ -1,5 +1,4 @@ use anyhow::ensure; -use log::debug; use tauri_sys::app; pub async fn get_name() -> anyhow::Result<()> { @@ -24,11 +23,9 @@ pub async fn get_version() -> anyhow::Result<()> { pub async fn get_tauri_version() -> anyhow::Result<()> { let version = app::get_tauri_version().await?; - - debug!("version {}", version); ensure!(version.major == 1); - ensure!(version.minor == 1); + ensure!(version.minor == 2); ensure!(version.patch == 0); ensure!(version.build.is_empty()); ensure!(version.pre.is_empty()); From 1046f511496e9f10a36dfdec5c3f5ac646203cd0 Mon Sep 17 00:00:00 2001 From: Jonas Kruckenberg Date: Mon, 14 Nov 2022 14:01:25 +0100 Subject: [PATCH 27/29] rework dialog module --- src/dialog.rs | 788 +++++++++++++++++++++++++++++++++++--------------- 1 file changed, 554 insertions(+), 234 deletions(-) diff --git a/src/dialog.rs b/src/dialog.rs index e98a2b3..8074d5c 100644 --- a/src/dialog.rs +++ b/src/dialog.rs @@ -1,267 +1,589 @@ -//! User interaction with the file system using dialog boxes. -//! -//! # Example -//! -//! ```rust,no_run -//! use tauri_api::dialog::open; -//! -//! let path = open(None).await; -//! ``` use serde::Serialize; -use std::path::PathBuf; +use std::path::{Path, PathBuf}; -/// Extension filter for the file dialog. -/// -/// # Example -/// -/// ```rust,no_run -/// let filter = DialogFilter { -/// extension: vec![".jpg", ".jpeg", ".png", ".bmp"], -/// name: "images", -/// }; -/// ``` -#[derive(Serialize)] -pub struct DialogFilter { - /// Extensions to filter, without a `.` prefix. - pub extensions: Vec, - - /// Filter name - pub name: String, +#[derive(Debug, Serialize)] +struct DialogFilter<'a> { + extensions: &'a [&'a str], + name: &'a str, } -/// Types of a [`message`] dialog. -#[derive(Serialize)] +#[derive(Debug, Default, Serialize)] +#[serde(rename = "camelCase")] +pub struct FileDialogBuilder<'a> { + default_path: Option<&'a Path>, + filters: Vec>, + title: Option<&'a str>, + directory: bool, + multiple: bool, + recursive: bool, +} + +impl<'a> FileDialogBuilder<'a> { + /// Gets the default file dialog builder. + pub fn new() -> Self { + Self::default() + } + + /// Set starting file name or directory of the dialog. + pub fn set_default_path(&mut self, default_path: &'a Path) { + self.default_path = Some(default_path); + } + + /// If directory is true, indicates that it will be read recursively later. + /// Defines whether subdirectories will be allowed on the scope or not. + /// + /// # Example + /// + /// ```rust + /// use tauri_sys::dialog::FileDialogBuilder; + /// + /// # fn main() -> Result<(), Box> { + /// let _builder = FileDialogBuilder::new().set_recursive(true); + /// # Ok(()) + /// # } + /// ``` + pub fn set_recursive(&mut self, recursive: bool) { + self.recursive = recursive; + } + + /// Set the title of the dialog. + /// + /// # Example + /// + /// ```rust + /// use tauri_sys::dialog::FileDialogBuilder; + /// + /// # fn main() -> Result<(), Box> { + /// let _builder = FileDialogBuilder::new().set_title("Test Title"); + /// # Ok(()) + /// # } + /// ``` + pub fn set_title(&mut self, title: &'a str) { + self.title = Some(title); + } + + /// Add file extension filter. Takes in the name of the filter, and list of extensions + /// + /// # Example + /// + /// ```rust + /// use tauri_sys::dialog::FileDialogBuilder; + /// + /// # fn main() -> Result<(), Box> { + /// let _builder = FileDialogBuilder::new().add_filter("Image", &["png", "jpeg"]); + /// # Ok(()) + /// # } + /// ``` + pub fn add_filter(&mut self, name: &'a str, extensions: &'a [&'a str]) { + self.filters.push(DialogFilter { name, extensions }); + } + + /// Add many file extension filters. + /// + /// # Example + /// + /// ```rust + /// use tauri_sys::dialog::FileDialogBuilder; + /// + /// # fn main() -> Result<(), Box> { + /// let _builder = FileDialogBuilder::new().add_filters(&[("Image", &["png", "jpeg"]),("Video", &["mp4"])]); + /// # Ok(()) + /// # } + /// ``` + pub fn add_filters(&mut self, filters: impl IntoIterator) { + for (name, extensions) in filters.into_iter() { + self.filters.push(DialogFilter { + name: name.as_ref(), + extensions, + }); + } + } + + /// Shows the dialog to select a single file. + /// + /// # Example + /// + /// ```rust,no_run + /// use tauri_sys::dialog::FileDialogBuilder; + /// + /// # async fn main() -> Result<(), Box> { + /// let file = FileDialogBuilder::new().pick_file().await?; + /// # Ok(()) + /// # } + /// ``` + pub async fn pick_file(self) -> crate::Result> { + let raw = inner::open(serde_wasm_bindgen::to_value(&self)?).await?; + + Ok(serde_wasm_bindgen::from_value(raw)?) + } + + /// Shows the dialog to select multiple files. + /// + /// # Example + /// + /// ```rust,no_run + /// use tauri_sys::dialog::FileDialogBuilder; + /// + /// # async fn main() -> Result<(), Box> { + /// let files = FileDialogBuilder::new().pick_files().await?; + /// # Ok(()) + /// # } + /// ``` + pub async fn pick_files(mut self) -> crate::Result>> { + self.multiple = true; + + let raw = inner::open(serde_wasm_bindgen::to_value(&self)?).await?; + + Ok(serde_wasm_bindgen::from_value(raw)?) + } + + /// Shows the dialog to select a single folder. + /// + /// # Example + /// + /// ```rust,no_run + /// use tauri_sys::dialog::FileDialogBuilder; + /// + /// # async fn main() -> Result<(), Box> { + /// let files = FileDialogBuilder::new().pick_folder().await?; + /// # Ok(()) + /// # } + /// ``` + pub async fn pick_folder(mut self) -> crate::Result> { + self.directory = true; + + let raw = inner::open(serde_wasm_bindgen::to_value(&self)?).await?; + + Ok(serde_wasm_bindgen::from_value(raw)?) + } + + /// Shows the dialog to select multiple folders. + /// + /// # Example + /// + /// ```rust,no_run + /// use tauri_sys::dialog::FileDialogBuilder; + /// + /// # async fn main() -> Result<(), Box> { + /// let files = FileDialogBuilder::new().pick_folders().await?; + /// # Ok(()) + /// # } + /// ``` + pub async fn pick_folders(mut self) -> crate::Result>> { + self.directory = true; + self.multiple = true; + + let raw = inner::open(serde_wasm_bindgen::to_value(&self)?).await?; + + Ok(serde_wasm_bindgen::from_value(raw)?) + } + + /// Open a file/directory save dialog. + /// + /// The selected path is added to the filesystem and asset protocol allowlist scopes. + /// When security is more important than the easy of use of this API, prefer writing a dedicated command instead. + /// + /// Note that the allowlist scope change is not persisted, so the values are cleared when the application is restarted. + /// You can save it to the filesystem using tauri-plugin-persisted-scope. + /// + /// # Example + /// + /// ```rust,no_run + /// use tauri_sys::dialog::FileDialogBuilder; + /// + /// # async fn main() -> Result<(), Box> { + /// let file = FileDialogBuilder::new().save().await?; + /// # Ok(()) + /// # } + /// ``` + pub async fn save(self) -> crate::Result> { + let raw = inner::save(serde_wasm_bindgen::to_value(&self)?).await?; + + Ok(serde_wasm_bindgen::from_value(raw)?) + } +} + +#[derive(Debug, Default)] pub enum MessageDialogType { - Error, + #[default] Info, Warning, + Error, } -/// Options for the [`message`] dialog. -#[derive(Serialize)] -pub struct MessageDialogOptions { - /// The title of the dialog. Defaults to the app name. - pub title: Option, - - /// The type of the dialog. Defaults to MessageDialogType::Info. - #[serde(rename(serialize = "type"))] - pub kind: MessageDialogType, -} - -impl MessageDialogOptions { - /// Creates a new `MessageDialogOptions` with sensible default values. - pub fn new() -> Self { - Self { - title: None, - kind: MessageDialogType::Info, +impl Serialize for MessageDialogType { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + match self { + MessageDialogType::Info => serializer.serialize_str("info"), + MessageDialogType::Warning => serializer.serialize_str("warning"), + MessageDialogType::Error => serializer.serialize_str("error"), } } } -/// Options for an [`open`] dialog. -#[derive(Serialize)] -pub struct OpenDialogOptions { - /// Initial directory or file path. - #[serde(rename(serialize = "defaultPath"))] - pub default_path: Option, - - /// Whether the dialog is a directory selection or not. - pub directory: bool, - - /// The filters of the dialog. - pub filters: Vec, - - /// Whether the dialgo allows multiple selection or not. - pub multiple: bool, - - /// If `directory` is `true`, indicatees that it will be read recursivley later. - /// Defines whether subdirectories will be allowed on the scope or not. - pub recursive: bool, - - /// The title of the dialog window. - pub title: Option, +#[derive(Debug, Default, Serialize)] +pub struct MessageDialogBuilder<'a> { + title: Option<&'a str>, + r#type: MessageDialogType, } -impl OpenDialogOptions { - /// Creates a new `OpenDialogOptions` with sensible default values. +impl<'a> MessageDialogBuilder<'a> { pub fn new() -> Self { - Self { - default_path: None, - directory: false, - filters: Vec::new(), - multiple: false, - recursive: false, - title: None, - } + Self::default() + } + + /// Set the title of the dialog. + /// + /// # Example + /// + /// ```rust + /// use tauri_sys::dialog::MessageDialogBuilder; + /// + /// # fn main() -> Result<(), Box> { + /// let _builder = MessageDialogBuilder::new().set_title("Test Title"); + /// # Ok(()) + /// # } + /// ``` + pub fn set_title(&mut self, title: &'a str) { + self.title = Some(title); + } + + /// Set the type of the dialog. + /// + /// # Example + /// + /// ```rust + /// use tauri_sys::dialog::{MessageDialogBuilder,MessageDialogType}; + /// + /// # fn main() -> Result<(), Box> { + /// let _builder = MessageDialogBuilder::new().set_type(MessageDialogType::Error); + /// # Ok(()) + /// # } + /// ``` + pub fn set_type(&mut self, r#type: MessageDialogType) { + self.r#type = r#type; + } + + /// Shows a message dialog with an `Ok` button. + /// + /// # Example + /// + /// ```rust,no_run + /// use tauri_sys::dialog::MessageDialogBuilder; + /// + /// # async fn main() -> Result<(), Box> { + /// let file = MessageDialogBuilder::new().message("Tauri is awesome").await?; + /// # Ok(()) + /// # } + /// ``` + pub async fn message(self, message: &str) -> crate::Result<()> { + Ok(inner::message(message, serde_wasm_bindgen::to_value(&self)?).await?) + } + + /// Shows a question dialog with `Yes` and `No` buttons. + /// + /// # Example + /// + /// ```rust,no_run + /// use tauri_sys::dialog::MessageDialogBuilder; + /// + /// # async fn main() -> Result<(), Box> { + /// let confirmation = MessageDialogBuilder::new().ask("Are you sure?").await?; + /// # Ok(()) + /// # } + /// ``` + pub async fn ask(self, message: &str) -> crate::Result { + let raw = inner::ask(message, serde_wasm_bindgen::to_value(&self)?).await?; + + Ok(serde_wasm_bindgen::from_value(raw)?) + } + + /// Shows a question dialog with `Ok` and `Cancel` buttons. + /// + /// # Example + /// + /// ```rust,no_run + /// use tauri_sys::dialog::MessageDialogBuilder; + /// + /// # async fn main() -> Result<(), Box> { + /// let confirmation = MessageDialogBuilder::new().confirm("Are you sure?").await?; + /// # Ok(()) + /// # } + /// ``` + pub async fn confirm(self, message: &str) -> crate::Result { + let raw = inner::confirm(message, serde_wasm_bindgen::to_value(&self)?).await?; + + Ok(serde_wasm_bindgen::from_value(raw)?) } } -/// Options for the save dialog. -#[derive(Serialize)] -pub struct SaveDialogOptions { - /// Initial directory of the file path. - /// If it's not a directory path, the dialog interface will change to that folder. - /// If it's not an existing directory, the file name will be set to the dialog's - /// file name input and the dialog will be set to the parent folder. - #[serde(rename(serialize = "defaultPath"))] - pub default_path: Option, +// //! User interaction with the file system using dialog boxes. +// //! +// //! # Example +// //! +// //! ```rust,no_run +// //! use tauri_api::dialog::open; +// //! +// //! let path = open(None).await; +// //! ``` +// use serde::Serialize; +// use std::path::PathBuf; - /// The filters of the dialog. - pub filters: Vec, +// /// Extension filter for the file dialog. +// /// +// /// # Example +// /// +// /// ```rust,no_run +// /// let filter = DialogFilter { +// /// extension: vec![".jpg", ".jpeg", ".png", ".bmp"], +// /// name: "images", +// /// }; +// /// ``` +// #[derive(Serialize)] +// pub struct DialogFilter { +// /// Extensions to filter, without a `.` prefix. +// pub extensions: Vec, - /// The title of the dialog window. - pub title: Option, -} +// /// Filter name +// pub name: String, +// } -impl SaveDialogOptions { - /// Creates a new `SaveDialogOptions` with sensible default values. - pub fn new() -> Self { - Self { - default_path: None, - filters: Vec::new(), - title: None, - } - } -} +// /// Types of a [`message`] dialog. +// #[derive(Serialize)] +// pub enum MessageDialogType { +// Error, +// Info, +// Warning, +// } -/// Show a question dialog with `Yes` and `No` buttons. -/// -/// # Example -/// -/// ```rust,no_run -/// use tauri_api::dialog::{ask, MessageDialogOptions}; -/// -/// let yes = ask("Are you sure?", None).await; -/// ``` -/// @param message Message to display. -/// @param options Dialog options. -/// @returns Whether the user selected `Yes` or `No`. -#[inline(always)] -pub async fn ask(message: &str, options: Option) -> crate::Result { - let js_val = inner::ask(message, serde_wasm_bindgen::to_value(&options)?).await?; +// /// Options for the [`message`] dialog. +// #[derive(Serialize)] +// pub struct MessageDialogOptions { +// /// The title of the dialog. Defaults to the app name. +// pub title: Option, - Ok(serde_wasm_bindgen::from_value(js_val)?) -} +// /// The type of the dialog. Defaults to MessageDialogType::Info. +// #[serde(rename(serialize = "type"))] +// pub kind: MessageDialogType, +// } -/// Shows a question dialog with `Ok` and `Cancel` buttons. -/// -/// # Example -/// -/// ```rust,no_run -/// use tauri_api::dialog::{confirm, MessageDialogOptions}; -/// -/// let confirmed = confirm("Are you sure?", None).await; -/// ``` -/// @returns Whether the user selelced `Ok` or `Cancel`. -pub async fn confirm(message: &str, options: Option) -> crate::Result { - let js_val = inner::confirm(message, serde_wasm_bindgen::to_value(&options)?).await?; +// impl MessageDialogOptions { +// /// Creates a new `MessageDialogOptions` with sensible default values. +// pub fn new() -> Self { +// Self { +// title: None, +// kind: MessageDialogType::Info, +// } +// } +// } - Ok(serde_wasm_bindgen::from_value(js_val)?) -} +// /// Options for an [`open`] dialog. +// #[derive(Serialize)] +// pub struct OpenDialogOptions { +// /// Initial directory or file path. +// #[serde(rename(serialize = "defaultPath"))] +// pub default_path: Option, -/// Shows a message dialog with an `Ok` button. -/// -/// # Example -/// -/// ```rust,no_run -/// use tauri_api::dialog::{message, MessageDialogOptions}; -/// -/// message("Tauri is awesome", None).await; -/// ``` -/// @param message Message to display. -/// @param options Dialog options. -/// @returns Promise resolved when user closes the dialog. -pub async fn message(message: &str, options: Option) -> crate::Result<()> { - Ok(inner::message(message, serde_wasm_bindgen::to_value(&options)?).await?) -} +// /// Whether the dialog is a directory selection or not. +// pub directory: bool, -/// Opens a file/directory selection dialog for a single file. -/// `multiple` field of [`options`](OpenDialogOptions) must be `false`, if provided. -/// -/// The selected paths are added to the filesystem and asset protocol allowlist scopes. -/// When security is mroe important than the ease of use of this API, -/// prefer writing a dedicated command instead. -/// -/// Note that the allowlist scope change is not persisited, -/// so the values are cleared when the applicaiton is restarted. -/// You can save it to the filessytem using the [tauri-plugin-persisted-scope](https://github.com/tauri-apps/tauri-plugin-persisted-scope). -/// -/// # Example -/// -/// ```rust,no_run -/// use tauri_api::dialog::{open, OpenDialogOptions}; -/// -/// let file = open(None).await; -/// -/// let mut opts = OpenDialogOptions::new(); -/// opts.directory = true; -/// let dir = open(Some(opts)).await; -/// ``` -/// @param options Dialog options. -/// @returns List of file paths, or `None` if user cancelled the dialog. -pub async fn open(options: Option) -> crate::Result> { - let file = inner::open(serde_wasm_bindgen::to_value(&options)?).await?; +// /// The filters of the dialog. +// pub filters: Vec, - Ok(serde_wasm_bindgen::from_value(file)?) -} +// /// Whether the dialog allows multiple selection or not. +// pub multiple: bool, -/// Opens a file/directory selection dialog for multiple files. -/// `multiple` field of [`options`](OpenDialogOptions) must be `true`, if provided. -/// -/// The selected paths are added to the filesystem and asset protocol allowlist scopes. -/// When security is mroe important than the ease of use of this API, -/// prefer writing a dedicated command instead. -/// -/// Note that the allowlist scope change is not persisited, -/// so the values are cleared when the applicaiton is restarted. -/// You can save it to the filessytem using the [tauri-plugin-persisted-scope](https://github.com/tauri-apps/tauri-plugin-persisted-scope). -/// -/// # Example -/// -/// ```rust,no_run -/// use tauri_api::dialog::{open, OpenDialogOptions}; -/// -/// let files = open_multiple(None).await; -/// -/// let mut opts = OpenDialogOptions::new(); -/// opts.multiple = true; -/// opts.directory = true; -/// let dirs = open(Some(opts)).await; -/// ``` -/// @param options Dialog options. -/// @returns List of file paths, or `None` if user cancelled the dialog. -pub async fn open_multiple( - options: Option, -) -> crate::Result>> { - let files = inner::open_multiple(serde_wasm_bindgen::to_value(&options)?).await?; +// /// If `directory` is `true`, indicatees that it will be read recursivley later. +// /// Defines whether subdirectories will be allowed on the scope or not. +// pub recursive: bool, - Ok(serde_wasm_bindgen::from_value(files)?) -} +// /// The title of the dialog window. +// pub title: Option, +// } -/// Opens a file/directory save dialog. -/// -/// The selected paths are added to the filesystem and asset protocol allowlist scopes. -/// When security is mroe important than the ease of use of this API, -/// prefer writing a dedicated command instead. -/// -/// Note that the allowlist scope change is not persisited, -/// so the values are cleared when the applicaiton is restarted. -/// You can save it to the filessytem using the [tauri-plugin-persisted-scope](https://github.com/tauri-apps/tauri-plugin-persisted-scope). -/// -/// # Example -/// -/// ```rust,no_run -/// use tauri_api::dialog::{save, SaveDialogOptions}; -/// -/// let file = save(None).await; -/// ``` -/// @param options Dialog options. -/// @returns File path, or `None` if user cancelled the dialog. -pub async fn save(options: Option) -> crate::Result> { - let path = inner::save(serde_wasm_bindgen::to_value(&options)?).await?; - - Ok(serde_wasm_bindgen::from_value(path)?) -} +// impl OpenDialogOptions { +// /// Creates a new `OpenDialogOptions` with sensible default values. +// pub fn new() -> Self { +// Self { +// default_path: None, +// directory: false, +// filters: Vec::new(), +// multiple: false, +// recursive: false, +// title: None, +// } +// } +// } + +// /// Options for the save dialog. +// #[derive(Serialize)] +// pub struct SaveDialogOptions { +// /// Initial directory of the file path. +// /// If it's not a directory path, the dialog interface will change to that folder. +// /// If it's not an existing directory, the file name will be set to the dialog's +// /// file name input and the dialog will be set to the parent folder. +// #[serde(rename(serialize = "defaultPath"))] +// pub default_path: Option, + +// /// The filters of the dialog. +// pub filters: Vec, + +// /// The title of the dialog window. +// pub title: Option, +// } + +// impl SaveDialogOptions { +// /// Creates a new `SaveDialogOptions` with sensible default values. +// pub fn new() -> Self { +// Self { +// default_path: None, +// filters: Vec::new(), +// title: None, +// } +// } +// } + +// /// Show a question dialog with `Yes` and `No` buttons. +// /// +// /// # Example +// /// +// /// ```rust,no_run +// /// use tauri_api::dialog::{ask, MessageDialogOptions}; +// /// +// /// let yes = ask("Are you sure?", None).await; +// /// ``` +// /// @param message Message to display. +// /// @param options Dialog options. +// /// @returns Whether the user selected `Yes` or `No`. +// #[inline(always)] +// pub async fn ask(message: &str, options: Option) -> crate::Result { +// let js_val = inner::ask(message, serde_wasm_bindgen::to_value(&options)?).await?; + +// Ok(serde_wasm_bindgen::from_value(js_val)?) +// } + +// /// Shows a question dialog with `Ok` and `Cancel` buttons. +// /// +// /// # Example +// /// +// /// ```rust,no_run +// /// use tauri_api::dialog::{confirm, MessageDialogOptions}; +// /// +// /// let confirmed = confirm("Are you sure?", None).await; +// /// ``` +// /// @returns Whether the user selelced `Ok` or `Cancel`. +// pub async fn confirm(message: &str, options: Option) -> crate::Result { +// let js_val = inner::confirm(message, serde_wasm_bindgen::to_value(&options)?).await?; + +// Ok(serde_wasm_bindgen::from_value(js_val)?) +// } + +// /// Shows a message dialog with an `Ok` button. +// /// +// /// # Example +// /// +// /// ```rust,no_run +// /// use tauri_api::dialog::{message, MessageDialogOptions}; +// /// +// /// message("Tauri is awesome", None).await; +// /// ``` +// /// @param message Message to display. +// /// @param options Dialog options. +// /// @returns Promise resolved when user closes the dialog. +// pub async fn message(message: &str, options: Option) -> crate::Result<()> { +// Ok(inner::message(message, serde_wasm_bindgen::to_value(&options)?).await?) +// } + +// /// Opens a file/directory selection dialog for a single file. +// /// `multiple` field of [`options`](OpenDialogOptions) must be `false`, if provided. +// /// +// /// The selected paths are added to the filesystem and asset protocol allowlist scopes. +// /// When security is mroe important than the ease of use of this API, +// /// prefer writing a dedicated command instead. +// /// +// /// Note that the allowlist scope change is not persisited, +// /// so the values are cleared when the applicaiton is restarted. +// /// You can save it to the filessytem using the [tauri-plugin-persisted-scope](https://github.com/tauri-apps/tauri-plugin-persisted-scope). +// /// +// /// # Example +// /// +// /// ```rust,no_run +// /// use tauri_api::dialog::{open, OpenDialogOptions}; +// /// +// /// let file = open(None).await; +// /// +// /// let mut opts = OpenDialogOptions::new(); +// /// opts.directory = true; +// /// let dir = open(Some(opts)).await; +// /// ``` +// /// @param options Dialog options. +// /// @returns List of file paths, or `None` if user cancelled the dialog. +// pub async fn open(options: Option) -> crate::Result> { +// let file = inner::open(serde_wasm_bindgen::to_value(&options)?).await?; + +// Ok(serde_wasm_bindgen::from_value(file)?) +// } + +// /// Opens a file/directory selection dialog for multiple files. +// /// `multiple` field of [`options`](OpenDialogOptions) must be `true`, if provided. +// /// +// /// The selected paths are added to the filesystem and asset protocol allowlist scopes. +// /// When security is mroe important than the ease of use of this API, +// /// prefer writing a dedicated command instead. +// /// +// /// Note that the allowlist scope change is not persisited, +// /// so the values are cleared when the applicaiton is restarted. +// /// You can save it to the filessytem using the [tauri-plugin-persisted-scope](https://github.com/tauri-apps/tauri-plugin-persisted-scope). +// /// +// /// # Example +// /// +// /// ```rust,no_run +// /// use tauri_api::dialog::{open, OpenDialogOptions}; +// /// +// /// let files = open_multiple(None).await; +// /// +// /// let mut opts = OpenDialogOptions::new(); +// /// opts.multiple = true; +// /// opts.directory = true; +// /// let dirs = open(Some(opts)).await; +// /// ``` +// /// @param options Dialog options. +// /// @returns List of file paths, or `None` if user cancelled the dialog. +// pub async fn open_multiple( +// options: Option, +// ) -> crate::Result>> { +// let files = inner::open_multiple(serde_wasm_bindgen::to_value(&options)?).await?; + +// Ok(serde_wasm_bindgen::from_value(files)?) +// } + +// /// Opens a file/directory save dialog. +// /// +// /// The selected paths are added to the filesystem and asset protocol allowlist scopes. +// /// When security is mroe important than the ease of use of this API, +// /// prefer writing a dedicated command instead. +// /// +// /// Note that the allowlist scope change is not persisited, +// /// so the values are cleared when the applicaiton is restarted. +// /// You can save it to the filessytem using the [tauri-plugin-persisted-scope](https://github.com/tauri-apps/tauri-plugin-persisted-scope). +// /// +// /// # Example +// /// +// /// ```rust,no_run +// /// use tauri_api::dialog::{save, SaveDialogOptions}; +// /// +// /// let file = save(None).await; +// /// ``` +// /// @param options Dialog options. +// /// @returns File path, or `None` if user cancelled the dialog. +// pub async fn save(options: Option) -> crate::Result> { +// let path = inner::save(serde_wasm_bindgen::to_value(&options)?).await?; + +// Ok(serde_wasm_bindgen::from_value(path)?) +// } mod inner { use wasm_bindgen::{prelude::wasm_bindgen, JsValue}; @@ -275,8 +597,6 @@ mod inner { #[wasm_bindgen(catch)] pub async fn open(options: JsValue) -> Result; #[wasm_bindgen(catch)] - pub async fn open_multiple(options: JsValue) -> Result; - #[wasm_bindgen(catch)] pub async fn message(message: &str, option: JsValue) -> Result<(), JsValue>; #[wasm_bindgen(catch)] pub async fn save(options: JsValue) -> Result; From 373bdcd86065ab51c05d8bdf1995b0f3c4b891bf Mon Sep 17 00:00:00 2001 From: Jonas Kruckenberg Date: Mon, 14 Nov 2022 14:01:31 +0100 Subject: [PATCH 28/29] Update test.yml --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 36a1d83..24e33a9 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -23,7 +23,7 @@ concurrency: jobs: build-and-test: runs-on: ubuntu-latest - + timeout-minutes: 15 steps: - uses: actions/checkout@v3 - name: Install stable toolchain From d1459f8ae30e5b1cc5147a663142479041e93831 Mon Sep 17 00:00:00 2001 From: Jonas Kruckenberg Date: Mon, 14 Nov 2022 14:01:39 +0100 Subject: [PATCH 29/29] add interactive tests --- examples/test/.taurignore | 3 ++ examples/test/src/dialog.rs | 97 +++++++++++++++++++++++++++++++++++++ examples/test/src/main.rs | 83 +++++++++++++++++++++++++++++-- 3 files changed, 178 insertions(+), 5 deletions(-) create mode 100644 examples/test/.taurignore create mode 100644 examples/test/src/dialog.rs diff --git a/examples/test/.taurignore b/examples/test/.taurignore new file mode 100644 index 0000000..1ebdc6d --- /dev/null +++ b/examples/test/.taurignore @@ -0,0 +1,3 @@ +/src +/public +/Cargo.toml \ No newline at end of file diff --git a/examples/test/src/dialog.rs b/examples/test/src/dialog.rs new file mode 100644 index 0000000..c852a77 --- /dev/null +++ b/examples/test/src/dialog.rs @@ -0,0 +1,97 @@ +use anyhow::ensure; +use tauri_sys::dialog::{FileDialogBuilder, MessageDialogBuilder, MessageDialogType}; + +pub async fn ask() -> anyhow::Result<()> { + let mut builder = MessageDialogBuilder::new(); + builder.set_title("Tauri"); + builder.set_type(MessageDialogType::Warning); + + let works = builder + .ask("Does this work? \n Click Yes to mark this test as passing") + .await?; + + ensure!(works); + + Ok(()) +} + +pub async fn confirm() -> anyhow::Result<()> { + let mut builder = MessageDialogBuilder::new(); + builder.set_title("Tauri"); + builder.set_type(MessageDialogType::Warning); + + let works = builder + .confirm("Does this work? \n Click Ok to mark this test as passing") + .await?; + + ensure!(works); + + Ok(()) +} + +pub async fn message() -> anyhow::Result<()> { + let mut builder = MessageDialogBuilder::new(); + builder.set_title("Tauri"); + builder.set_type(MessageDialogType::Warning); + + builder.message("This is a message just for you!").await?; + + Ok(()) +} + +pub async fn pick_file() -> anyhow::Result<()> { + let mut builder = FileDialogBuilder::new(); + builder.set_title("Select a file to mark this test as passing"); + + let file = builder.pick_file().await?; + + ensure!(file.is_some()); + + Ok(()) +} + +pub async fn pick_files() -> anyhow::Result<()> { + let mut builder = FileDialogBuilder::new(); + builder.set_title("Select a multiple files to mark this test as passing"); + + let file = builder.pick_files().await?; + + ensure!(file.is_some()); + ensure!(file.unwrap().len() > 1); + + Ok(()) +} + +pub async fn pick_folder() -> anyhow::Result<()> { + let mut builder = FileDialogBuilder::new(); + builder.set_title("Select a folder to mark this test as passing"); + + let file = builder.pick_folder().await?; + + ensure!(file.is_some()); + + Ok(()) +} + +pub async fn pick_folders() -> anyhow::Result<()> { + let mut builder = FileDialogBuilder::new(); + builder.set_title("Select a multiple folders to mark this test as passing"); + + let file = builder.pick_folders().await?; + + ensure!(file.is_some()); + ensure!(file.unwrap().len() > 1); + + Ok(()) +} + +pub async fn save() -> anyhow::Result<()> { + let mut builder = FileDialogBuilder::new(); + builder.set_title("Select a file to mark this test as passing"); + + let file = builder.save().await?; + + ensure!(file.is_some()); + + Ok(()) +} \ No newline at end of file diff --git a/examples/test/src/main.rs b/examples/test/src/main.rs index eaff250..e4ff326 100644 --- a/examples/test/src/main.rs +++ b/examples/test/src/main.rs @@ -2,6 +2,7 @@ mod app; mod clipboard; mod event; mod window; +mod dialog; extern crate console_error_panic_hook; use std::future::Future; @@ -58,6 +59,72 @@ where } } +#[cfg(not(feature = "ci"))] +#[component] +pub async fn InteractiveTest<'a, G: Html, F>(cx: Scope<'a>, props: TestProps<'a, F>) -> View +where + F: Future> + 'a, +{ + let mut test = Some(props.test); + let render_test = create_signal(cx, false); + + let run_test = |_| { + render_test.set(true); + }; + + view! { cx, + (if *render_test.get() { + let test = test.take().unwrap(); + + let fallback = view! { cx, + tr { + td { code { (props.name.to_string()) } } + td { + "Running Test..." + } + } + }; + + view! { cx, + Suspense(fallback=fallback) { + Test(name=props.name, test=test) + } + } + } else { + view! { cx, + tr { + td { code { (props.name.to_string()) } } + td { + button(on:click=run_test) { "Run Interactive Test"} + } + } + } + }) + } +} + +#[cfg(feature = "ci")] +#[component] +pub async fn InteractiveTest<'a, G: Html, F>(cx: Scope<'a>, _props: TestProps<'a, F>) -> View +where + F: Future> + 'a, +{ + view! { cx, "Interactive tests are not run in CI mode" } +} + +#[component] +pub async fn Terminate<'a, G: Html>(cx: Scope<'a>) -> View { + #[cfg(feature = "ci")] + sycamore::suspense::await_suspense(cx, async { + tauri_sys::process::exit(0).await; + }) + .await; + + view! { + cx, + } +} + fn main() { wasm_logger::init(wasm_logger::Config::default()); @@ -69,11 +136,6 @@ fn main() { })); sycamore::render(|cx| { - #[cfg(feature = "ci")] - sycamore::suspense::await_suspense(cx, async { - tauri_sys::process::exit(0).await; - }); - view! { cx, table { tbody { @@ -83,7 +145,18 @@ fn main() { Test(name="app::get_tauri_version",test=app::get_tauri_version()) Test(name="clipboard::read_text | clipboard::write_text",test=clipboard::test()) Test(name="event::emit",test=event::emit()) + InteractiveTest(name="dialog::message",test=dialog::message()) + InteractiveTest(name="dialog::ask",test=dialog::ask()) + InteractiveTest(name="dialog::confirm",test=dialog::confirm()) + InteractiveTest(name="dialog::pick_file",test=dialog::pick_file()) + InteractiveTest(name="dialog::pick_files",test=dialog::pick_files()) + InteractiveTest(name="dialog::pick_folder",test=dialog::pick_folder()) + InteractiveTest(name="dialog::pick_folders",test=dialog::pick_folders()) + InteractiveTest(name="dialog::save",test=dialog::save()) + // Test(name="window::WebviewWindow::new",test=window::create_window()) + + Terminate } } }