diff --git a/.github/workflows/debug.yml b/.github/workflows/debug.yml index 3ec36f11..28b29771 100644 --- a/.github/workflows/debug.yml +++ b/.github/workflows/debug.yml @@ -32,7 +32,7 @@ jobs: - name: Install dependencies run: | sudo apt-get update - sudo apt-get install -y libwebkit2gtk-4.0-dev + sudo apt-get install -y libwebkit2gtk-4.1-dev if: matrix.platform.name == 'linux-x64' - name: Install targets run: | diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7b7eec2f..01d4f2b7 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -38,7 +38,7 @@ jobs: - name: Install dependencies run: | sudo apt-get update - sudo apt-get install -y libwebkit2gtk-4.0-dev + sudo apt-get install -y libwebkit2gtk-4.1-dev if: matrix.platform.name == 'linux-x64' - name: Install targets run: | diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 60d117e0..5d98d882 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -16,11 +16,6 @@ jobs: runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v2 - - name: Install dependencies - run: | - sudo apt-get update - sudo apt-get install -y libwebkit2gtk-4.0-dev - if: matrix.os == 'ubuntu-latest' - name: Install targets run: | rustup target add wasm32-unknown-unknown diff --git a/.gitignore b/.gitignore index d6a6d7a9..808cd13d 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,6 @@ .vscode .cache .clangd +compile_flags.txt .vs +.DS_Store diff --git a/Makefile b/Makefile index 389d0aad..818ad258 100644 --- a/Makefile +++ b/Makefile @@ -19,7 +19,7 @@ book: serve-book: cd book && $(MAKE) serve -.PHONY: plugins debug-cross release release-cross +.PHONY: plugins debug-cross release release-cross release-android plugins: cd plugins && $(MAKE) plugins debug-cross: @@ -28,6 +28,8 @@ release: cd bins && $(MAKE) release release-cross: cd bins && $(MAKE) release-cross TARGET=$(TARGET) +release-android: + cd bins && $(MAKE) release-android examples/plugins.ayapack: plugins (cd -P examples && tar -cf $(abspath $@) -- plugins) @@ -53,4 +55,10 @@ $(eval $(foreach ex,$(EXAMPLES),$(call example-tpl,$(ex)))) %.pdf: %.tex cd $(dir $<) && latexmk -lualatex $(notdir $<) +.PHONY: example-android example-ios +example-android: + cd bins && $(MAKE) run-android +example-ios: + cd bins && $(MAKE) run-ios + .SECONDARY: diff --git a/bins/Cargo.lock b/bins/Cargo.lock index aa0eaf90..f4897808 100644 --- a/bins/Cargo.lock +++ b/bins/Cargo.lock @@ -32,6 +32,24 @@ dependencies = [ "alloc-no-stdlib", ] +[[package]] +name = "android_log-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27f0fc03f560e1aebde41c2398b691cb98b5ea5996a6184a7a67bbbb77448969" + +[[package]] +name = "android_logger" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fa490e751f3878eb9accb9f18988eca52c2337ce000a8bf31ef50d4c723ca9e" +dependencies = [ + "android_log-sys", + "env_logger", + "log", + "once_cell", +] + [[package]] name = "android_system_properties" version = "0.1.5" @@ -41,6 +59,46 @@ dependencies = [ "libc", ] +[[package]] +name = "anstream" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "342258dd14006105c2b75ab1bd7543a03bdf0cfc94383303ac212a04939dff6f" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-wincon", + "concolor-override", + "concolor-query", + "is-terminal", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23ea9e81bd02e310c216d080f6223c179012256e5151c41db88d12c88a1684d2" + +[[package]] +name = "anstyle-parse" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7d1bb534e9efed14f3e5f44e7dd1a4f709384023a4165199a4241e18dff0116" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-wincon" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3127af6145b149f3287bb9a0d10ad9c5692dba8c53ad48285e5bec4063834fa" +dependencies = [ + "anstyle", + "windows-sys", +] + [[package]] name = "anyhow" version = "1.0.70" @@ -56,39 +114,68 @@ dependencies = [ "term", ] +[[package]] +name = "async-io" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af" +dependencies = [ + "async-lock", + "autocfg", + "cfg-if", + "concurrent-queue", + "futures-lite", + "log", + "parking", + "polling", + "rustix", + "slab", + "socket2", + "waker-fn", +] + +[[package]] +name = "async-lock" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa24f727524730b077666307f2734b4a1a1c57acb79193127dcc8914d5242dd7" +dependencies = [ + "event-listener", +] + [[package]] name = "async-trait" -version = "0.1.67" +version = "0.1.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86ea188f25f0255d8f92797797c97ebf5631fa88178beb1a46fdf5622c9a00e4" +checksum = "b9ccdd8f2a161be9bd5c023df56f1b2a0bd1d83872ae53b71a84a12c9bf6e842" dependencies = [ "proc-macro2", "quote", - "syn 2.0.4", + "syn 2.0.11", ] [[package]] name = "atk" -version = "0.15.1" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c3d816ce6f0e2909a96830d6911c2aff044370b1ef92d7f267b43bae5addedd" +checksum = "39991bc421ddf72f70159011b323ff49b0f783cc676a7287c59453da2e2531cf" dependencies = [ "atk-sys", - "bitflags 1.3.2", + "bitflags", "glib", "libc", ] [[package]] name = "atk-sys" -version = "0.15.1" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58aeb089fb698e06db8089971c7ee317ab9644bade33383f63631437b03aafb6" +checksum = "11ad703eb64dc058024f0e57ccfa069e15a413b98dbd50a1a950e743b7f11148" dependencies = [ "glib-sys", "gobject-sys", "libc", - "system-deps 6.0.3", + "system-deps", ] [[package]] @@ -110,13 +197,13 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "axum" -version = "0.6.11" +version = "0.6.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13d8068b6ccb8b34db9de397c7043f91db8b4c66414952c6db944f238c4d3db3" +checksum = "349f8ccfd9221ee7d1f3d4b33e1f8319b3a81ed8f61f2ea40b37b859794b4491" dependencies = [ "async-trait", "axum-core", - "bitflags 1.3.2", + "bitflags", "bytes", "futures-util", "headers", @@ -172,7 +259,7 @@ version = "0.2.0" dependencies = [ "ayaka-plugin-wasmi", "ayaka-runtime", - "clap 4.1.11", + "clap 4.2.0", "flexi_logger", "tokio", ] @@ -181,10 +268,12 @@ dependencies = [ name = "ayaka-gui" version = "0.2.0" dependencies = [ + "android_logger", "axum", "ayaka-model", "ayaka-plugin-wasmi", - "cargo_toml", + "file-picker-android", + "file-picker-ios", "flexi_logger", "mime_guess", "serde", @@ -192,7 +281,9 @@ dependencies = [ "tauri", "tauri-build", "tauri-plugin-window-state", + "tokio", "tower-http", + "vfs-tar", ] [[package]] @@ -201,7 +292,7 @@ version = "0.2.0" dependencies = [ "ayaka-plugin-wasmi", "ayaka-runtime", - "clap 4.1.11", + "clap 4.2.0", "flexi_logger", "tokio", ] @@ -323,12 +414,6 @@ version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" -[[package]] -name = "bitflags" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "487f1e0fcbe47deb8b0574e646def1c903389d95241dd1bbcc6ce4a715dfc0c1" - [[package]] name = "block" version = "0.1.6" @@ -398,39 +483,43 @@ name = "bytes" version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" +dependencies = [ + "serde", +] [[package]] name = "cairo-rs" -version = "0.15.12" +version = "0.16.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c76ee391b03d35510d9fa917357c7f1855bd9a6659c95a1b392e33f49b3369bc" +checksum = "f3125b15ec28b84c238f6f476c6034016a5f6cc0221cb514ca46c532139fc97d" dependencies = [ - "bitflags 1.3.2", + "bitflags", "cairo-sys-rs", "glib", "libc", + "once_cell", "thiserror", ] [[package]] name = "cairo-sys-rs" -version = "0.15.1" +version = "0.16.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c55d429bef56ac9172d25fecb85dc8068307d17acd74b377866b7a1ef25d3c8" +checksum = "7c48f4af05fabdcfa9658178e1326efa061853f040ce7d72e33af6885196f421" dependencies = [ "glib-sys", "libc", - "system-deps 6.0.3", + "system-deps", ] [[package]] name = "cargo_toml" -version = "0.13.2" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "864033604b7f5813cc5367da430a304a2a9084aa44aaac61cafe7c71366a8aa5" +checksum = "2bfbc36312494041e2cdd5f06697b7e89d4b76f42773a0b5556ac290ff22acc2" dependencies = [ "serde", - "toml", + "toml 0.5.11", ] [[package]] @@ -447,28 +536,20 @@ checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" [[package]] name = "cfb" -version = "0.6.1" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74f89d248799e3f15f91b70917f65381062a01bb8e222700ea0e5a7ff9785f9c" +checksum = "d38f2da7a0a2c4ccf0065be06397cc26a81f4e528be095826eee9d4adbb8c60f" 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", + "fnv", + "uuid", ] [[package]] name = "cfg-expr" -version = "0.11.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0357a6402b295ca3a86bc148e84df46c02e41f41fef186bda662557ef6328aa" +checksum = "a35b255461940a32985c627ce82900867c61db1659764d3675ea81963f72a4c6" dependencies = [ "smallvec", ] @@ -499,7 +580,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5" dependencies = [ "atty", - "bitflags 1.3.2", + "bitflags", "clap_lex 0.2.4", "indexmap", "strsim", @@ -509,30 +590,38 @@ dependencies = [ [[package]] name = "clap" -version = "4.1.11" +version = "4.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42dfd32784433290c51d92c438bb72ea5063797fc3cc9a21a8c4346bebbb2098" +checksum = "6efb5f0a41b5ef5b50c5da28c07609c20091df0c1fc33d418fa2a7e693c2b624" dependencies = [ - "bitflags 2.0.2", + "clap_builder", "clap_derive", - "clap_lex 0.3.3", - "is-terminal", "once_cell", +] + +[[package]] +name = "clap_builder" +version = "4.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "671fcaa5debda4b9a84aa7fde49c907c8986c0e6ab927e04217c9cb74e7c8bc9" +dependencies = [ + "anstream", + "anstyle", + "bitflags", + "clap_lex 0.4.1", "strsim", - "termcolor", ] [[package]] name = "clap_derive" -version = "4.1.9" +version = "4.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fddf67631444a3a3e3e5ac51c36a5e01335302de677bd78759eaa90ab1f46644" +checksum = "3f9644cd56d6b87dbe899ef8b053e331c0637664e9e21a33dfcdc36093f5c5c4" dependencies = [ - "heck 0.4.1", - "proc-macro-error", + "heck", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.11", ] [[package]] @@ -546,12 +635,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.3.3" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "033f6b7a4acb1f358c742aaca805c939ee73b4c6209ae4318ec7aca81c42e646" -dependencies = [ - "os_str_bytes", -] +checksum = "8a2dd5a6fe8c6e3502f568a6353e5273bbb15193ad9a89e457b9970798efbea1" [[package]] name = "cobs" @@ -565,7 +651,7 @@ version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f425db7937052c684daec3bd6375c8abe2d146dca4b8b143d6db777c39138f3a" dependencies = [ - "bitflags 1.3.2", + "bitflags", "block", "cocoa-foundation", "core-foundation", @@ -581,7 +667,7 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "931d3837c286f56e3c58423ce4eba12d08db2374461a785c86f672b08b5650d6" dependencies = [ - "bitflags 1.3.2", + "bitflags", "block", "core-foundation", "core-graphics-types", @@ -616,6 +702,30 @@ dependencies = [ "memchr", ] +[[package]] +name = "concolor-override" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a855d4a1978dc52fb0536a04d384c2c0c1aa273597f08b77c8c4d3b2eec6037f" + +[[package]] +name = "concolor-query" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88d11d52c3d7ca2e6d0040212be9e4dbbcd78b6447f535b6b561f449427944cf" +dependencies = [ + "windows-sys", +] + +[[package]] +name = "concurrent-queue" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c278839b831783b70278b14df4d45e1beb1aad306c07bb796637de9a0e323e8e" +dependencies = [ + "crossbeam-utils", +] + [[package]] name = "convert_case" version = "0.4.0" @@ -644,7 +754,7 @@ version = "0.22.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2581bbab3b8ffc6fcbd550bf46c355135d16e9ff2a6ea032ad6b9bf1d7efe4fb" dependencies = [ - "bitflags 1.3.2", + "bitflags", "core-foundation", "core-graphics-types", "foreign-types", @@ -657,7 +767,7 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3a68b68b3446082644c91ac778bf50cd4104bfb002b5a6a7c44cca5a2c70788b" dependencies = [ - "bitflags 1.3.2", + "bitflags", "core-foundation", "foreign-types", "libc", @@ -665,9 +775,9 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28d997bd5e24a5928dd43e46dc529867e207907fe0b239c3477d924f7f2ca320" +checksum = "280a9f2d8b3a38871a3c8a46fb80db65e5e5ed97da80c4d08bf27fb63e35e181" dependencies = [ "libc", ] @@ -753,11 +863,17 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "cty" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b365fabc795046672053e29c954733ec3b05e4be654ab130fe8f1f94d7051f35" + [[package]] name = "cxx" -version = "1.0.93" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9c00419335c41018365ddf7e4d5f1c12ee3659ddcf3e01974650ba1de73d038" +checksum = "f61f1b6389c3fe1c316bf8a4dccc90a38208354b330925bce1f74a6c4756eb93" dependencies = [ "cc", "cxxbridge-flags", @@ -767,9 +883,9 @@ dependencies = [ [[package]] name = "cxx-build" -version = "1.0.93" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb8307ad413a98fff033c8545ecf133e3257747b3bae935e7602aab8aa92d4ca" +checksum = "12cee708e8962df2aeb38f594aae5d827c022b6460ac71a7a3e2c3c2aae5a07b" dependencies = [ "cc", "codespan-reporting", @@ -777,24 +893,24 @@ dependencies = [ "proc-macro2", "quote", "scratch", - "syn 2.0.4", + "syn 2.0.11", ] [[package]] name = "cxxbridge-flags" -version = "1.0.93" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edc52e2eb08915cb12596d29d55f0b5384f00d697a646dbd269b6ecb0fbd9d31" +checksum = "7944172ae7e4068c533afbb984114a56c46e9ccddda550499caa222902c7f7bb" [[package]] name = "cxxbridge-macro" -version = "1.0.93" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "631569015d0d8d54e6c241733f944042623ab6df7bc3be7466874b05fcdb1c5f" +checksum = "2345488264226bf682893e25de0769f3360aac9957980ec49361b083ddaa5bc5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.4", + "syn 2.0.11", ] [[package]] @@ -991,15 +1107,25 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "env_logger" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85cdab6a89accf66733ad5a1693a4dcced6aeff64602b634530dd73c1f3ee9f0" +dependencies = [ + "log", + "regex", +] + [[package]] name = "errno" -version = "0.2.8" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1" +checksum = "50d6a0976c999d473fe89ad888d5a284e55366d9dc9038b1ba2aa15128c4afa0" dependencies = [ "errno-dragonfly", "libc", - "winapi", + "windows-sys", ] [[package]] @@ -1012,6 +1138,12 @@ dependencies = [ "libc", ] +[[package]] +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + [[package]] name = "fallback" version = "0.1.2" @@ -1029,7 +1161,7 @@ checksum = "acdaca309bd042f5eb18ea35d0b105e60ed78d4f94ad9ac8423f7d28b0c29bc4" dependencies = [ "proc-macro2", "quote", - "syn 2.0.4", + "syn 2.0.11", ] [[package]] @@ -1051,6 +1183,29 @@ dependencies = [ "rustc_version", ] +[[package]] +name = "file-picker-android" +version = "0.1.0" +source = "git+https://github.com/Berrysoft/file-picker-android.git#614cb91b527b80a2867f2606eabbb05308c25b93" +dependencies = [ + "serde", + "tauri", + "tauri-build", +] + +[[package]] +name = "file-picker-ios" +version = "0.1.0" +source = "git+https://github.com/Berrysoft/file-picker-ios.git#0d4ba9e5345ac85a01c7731fa89e10d01b1260cb" +dependencies = [ + "cc", + "objc", + "pin-project", + "stable_deref_trait", + "tokio", + "tokio-stream", +] + [[package]] name = "filetime" version = "0.2.20" @@ -1059,8 +1214,8 @@ checksum = "8a3de6e8d11b22ff9edc6d916f890800597d60f8b2da1caf2955c274638d6412" dependencies = [ "cfg-if", "libc", - "redox_syscall", - "windows-sys 0.45.0", + "redox_syscall 0.2.16", + "windows-sys", ] [[package]] @@ -1166,6 +1321,21 @@ version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "89d422fa3cbe3b40dca574ab087abb5bc98258ea57eea3fd6f1fa7162c778b91" +[[package]] +name = "futures-lite" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7694489acd39452c77daa48516b894c153f192c3578d5a839b62c58099fcbf48" +dependencies = [ + "fastrand", + "futures-core", + "futures-io", + "memchr", + "parking", + "pin-project-lite", + "waker-fn", +] + [[package]] name = "futures-macro" version = "0.3.27" @@ -1177,6 +1347,12 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "futures-sink" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec93083a4aecafb2a80a885c9de1f0ccae9dbd32c2bb54b0c3a65690e0b8d2f2" + [[package]] name = "futures-task" version = "0.3.27" @@ -1190,8 +1366,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3ef6b17e481503ec85211fed8f39d1970f128935ca1f814cd32ac4a6842e84ab" dependencies = [ "futures-core", + "futures-io", "futures-macro", + "futures-sink", "futures-task", + "memchr", "pin-project-lite", "pin-utils", "slab", @@ -1208,11 +1387,11 @@ dependencies = [ [[package]] name = "gdk" -version = "0.15.4" +version = "0.16.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6e05c1f572ab0e1f15be94217f0dc29088c248b14f792a5ff0af0d84bcda9e8" +checksum = "aa9cb33da481c6c040404a11f8212d193889e9b435db2c14fd86987f630d3ce1" dependencies = [ - "bitflags 1.3.2", + "bitflags", "cairo-rs", "gdk-pixbuf", "gdk-sys", @@ -1224,11 +1403,11 @@ dependencies = [ [[package]] name = "gdk-pixbuf" -version = "0.15.11" +version = "0.16.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad38dd9cc8b099cceecdf41375bb6d481b1b5a7cd5cd603e10a69a9383f8619a" +checksum = "c3578c60dee9d029ad86593ed88cb40f35c1b83360e12498d055022385dd9a05" dependencies = [ - "bitflags 1.3.2", + "bitflags", "gdk-pixbuf-sys", "gio", "glib", @@ -1237,22 +1416,22 @@ dependencies = [ [[package]] name = "gdk-pixbuf-sys" -version = "0.15.10" +version = "0.16.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "140b2f5378256527150350a8346dbdb08fadc13453a7a2d73aecd5fab3c402a7" +checksum = "3092cf797a5f1210479ea38070d9ae8a5b8e9f8f1be9f32f4643c529c7d70016" dependencies = [ "gio-sys", "glib-sys", "gobject-sys", "libc", - "system-deps 6.0.3", + "system-deps", ] [[package]] name = "gdk-sys" -version = "0.15.1" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32e7a08c1e8f06f4177fb7e51a777b8c1689f743a7bc11ea91d44d2226073a88" +checksum = "d76354f97a913e55b984759a997b693aa7dc71068c9e98bcce51aa167a0a5c5a" dependencies = [ "cairo-sys-rs", "gdk-pixbuf-sys", @@ -1262,19 +1441,33 @@ dependencies = [ "libc", "pango-sys", "pkg-config", - "system-deps 6.0.3", + "system-deps", +] + +[[package]] +name = "gdkwayland-sys" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4511710212ed3020b61a8622a37aa6f0dd2a84516575da92e9b96928dcbe83ba" +dependencies = [ + "gdk-sys", + "glib-sys", + "gobject-sys", + "libc", + "pkg-config", + "system-deps", ] [[package]] name = "gdkx11-sys" -version = "0.15.1" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4b7f8c7a84b407aa9b143877e267e848ff34106578b64d1e0a24bf550716178" +checksum = "9fa2bf8b5b8c414bc5d05e48b271896d0fd3ddb57464a3108438082da61de6af" dependencies = [ "gdk-sys", "glib-sys", "libc", - "system-deps 6.0.3", + "system-deps", "x11", ] @@ -1293,9 +1486,9 @@ dependencies = [ [[package]] name = "generic-array" -version = "0.14.6" +version = "0.14.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", "version_check", @@ -1325,45 +1518,50 @@ dependencies = [ [[package]] name = "gio" -version = "0.15.12" +version = "0.16.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68fdbc90312d462781a395f7a16d96a2b379bb6ef8cd6310a2df272771c4283b" +checksum = "2a1c84b4534a290a29160ef5c6eff2a9c95833111472e824fc5cb78b513dd092" dependencies = [ - "bitflags 1.3.2", + "bitflags", "futures-channel", "futures-core", "futures-io", + "futures-util", "gio-sys", "glib", "libc", "once_cell", + "pin-project-lite", + "smallvec", "thiserror", ] [[package]] name = "gio-sys" -version = "0.15.10" +version = "0.16.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32157a475271e2c4a023382e9cab31c4584ee30a97da41d3c4e9fdd605abcf8d" +checksum = "e9b693b8e39d042a95547fc258a7b07349b1f0b48f4b2fa3108ba3c51c0b5229" dependencies = [ "glib-sys", "gobject-sys", "libc", - "system-deps 6.0.3", + "system-deps", "winapi", ] [[package]] name = "glib" -version = "0.15.12" +version = "0.16.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edb0306fbad0ab5428b0ca674a23893db909a98582969c9b537be4ced78c505d" +checksum = "ddd4df61a866ed7259d6189b8bcb1464989a77f1d85d25d002279bbe9dd38b2f" dependencies = [ - "bitflags 1.3.2", + "bitflags", "futures-channel", "futures-core", "futures-executor", "futures-task", + "futures-util", + "gio-sys", "glib-macros", "glib-sys", "gobject-sys", @@ -1375,12 +1573,12 @@ dependencies = [ [[package]] name = "glib-macros" -version = "0.15.11" +version = "0.16.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25a68131a662b04931e71891fb14aaf65ee4b44d08e8abc10f49e77418c86c64" +checksum = "fb1a9325847aa46f1e96ffea37611b9d51fc4827e67f79e7de502a297560a67b" dependencies = [ "anyhow", - "heck 0.4.1", + "heck", "proc-macro-crate", "proc-macro-error", "proc-macro2", @@ -1390,12 +1588,12 @@ dependencies = [ [[package]] name = "glib-sys" -version = "0.15.10" +version = "0.16.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef4b192f8e65e9cf76cbf4ea71fa8e3be4a0e18ffe3d68b8da6836974cc5bad4" +checksum = "c61a4f46316d06bfa33a7ac22df6f0524c8be58e3db2d9ca99ccb1f357b62a65" dependencies = [ "libc", - "system-deps 6.0.3", + "system-deps", ] [[package]] @@ -1419,23 +1617,23 @@ dependencies = [ [[package]] name = "gobject-sys" -version = "0.15.10" +version = "0.16.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d57ce44246becd17153bd035ab4d32cfee096a657fc01f2231c9278378d1e0a" +checksum = "3520bb9c07ae2a12c7f2fbb24d4efc11231c8146a86956413fb1a79bb760a0f1" dependencies = [ "glib-sys", "libc", - "system-deps 6.0.3", + "system-deps", ] [[package]] name = "gtk" -version = "0.15.5" +version = "0.16.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e3004a2d5d6d8b5057d2b57b3712c9529b62e82c77f25c1fecde1fd5c23bd0" +checksum = "e4d3507d43908c866c805f74c9dd593c0ce7ba5c38e576e41846639cdcd4bee6" dependencies = [ "atk", - "bitflags 1.3.2", + "bitflags", "cairo-rs", "field-offset", "futures-channel", @@ -1453,9 +1651,9 @@ dependencies = [ [[package]] name = "gtk-sys" -version = "0.15.3" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5bc2f0587cba247f60246a0ca11fe25fb733eabc3de12d1965fc07efab87c84" +checksum = "89b5f8946685d5fe44497007786600c2f368ff6b1e61a16251c89f72a97520a3" dependencies = [ "atk-sys", "cairo-sys-rs", @@ -1466,14 +1664,14 @@ dependencies = [ "gobject-sys", "libc", "pango-sys", - "system-deps 6.0.3", + "system-deps", ] [[package]] name = "gtk3-macros" -version = "0.15.4" +version = "0.16.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24f518afe90c23fba585b2d7697856f9e6a7bbc62f65588035e66f6afb01a2e9" +checksum = "096eb63c6fedf03bafe65e5924595785eaf1bcb7200dac0f2cbe9c9738f05ad8" dependencies = [ "anyhow", "proc-macro-crate", @@ -1483,6 +1681,25 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "h2" +version = "0.3.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5be7b54589b581f624f566bf5d8eb2bab1db736c51528720b6bd36b96b55924d" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + [[package]] name = "hashbrown" version = "0.12.3" @@ -1496,7 +1713,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f3e372db8e5c0d213e0cd0b9be18be2aca3d44cf2fe30a9d46a65581cd454584" dependencies = [ "base64 0.13.1", - "bitflags 1.3.2", + "bitflags", "bytes", "headers-core", "http", @@ -1514,15 +1731,6 @@ dependencies = [ "http", ] -[[package]] -name = "heck" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" -dependencies = [ - "unicode-segmentation", -] - [[package]] name = "heck" version = "0.4.1" @@ -1629,6 +1837,7 @@ dependencies = [ "futures-channel", "futures-core", "futures-util", + "h2", "http", "http-body", "httparse", @@ -1644,16 +1853,16 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.53" +version = "0.1.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64c122667b287044802d6ce17ee2ddf13207ed924c712de9a66a5814d5b64765" +checksum = "0c17cc76786e99f8d2f055c11159e7f0091c42474dcc3189fbab96072e873e6d" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", "wasm-bindgen", - "winapi", + "windows 0.46.0", ] [[package]] @@ -1668,9 +1877,9 @@ dependencies = [ [[package]] name = "ico" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "031530fe562d8c8d71c0635013d6d155bbfe8ba0aa4b4d2d24ce8af6b71047bd" +checksum = "e3804960be0bb5e4edb1e1ad67afd321a9ecfd875c3e65c099468fd2717d7cae" dependencies = [ "byteorder", "png", @@ -1783,9 +1992,9 @@ dependencies = [ [[package]] name = "image" -version = "0.24.5" +version = "0.24.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69b7ea949b537b0fd0af141fff8c77690f2ce96f4f41f042ccb6c69c6c965945" +checksum = "527909aa81e20ac3a44803521443a765550f09b5130c2c2fa1ea59c2f8f50a3a" dependencies = [ "bytemuck", "byteorder", @@ -1796,9 +2005,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "1.9.2" +version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ "autocfg", "hashbrown", @@ -1813,9 +2022,9 @@ checksum = "8e04e2fd2b8188ea827b32ef11de88377086d690286ab35747ef7f9bf3ccb590" [[package]] name = "infer" -version = "0.7.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20b2b533137b9cad970793453d4f921c2e91312a6d88b1085c07bc15fc51bb3b" +checksum = "a898e4b7951673fce96614ce5751d13c40fc5674bc2d759288e46c3ab62598b3" dependencies = [ "cfb", ] @@ -1837,19 +2046,25 @@ checksum = "09270fd4fa1111bc614ed2246c7ef56239a3063d5be0d1ec3b589c505d400aeb" dependencies = [ "hermit-abi 0.3.1", "libc", - "windows-sys 0.45.0", + "windows-sys", ] +[[package]] +name = "ipnet" +version = "2.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12b6ee2129af8d4fb011108c73d99a1b83a85977f23b82460c0ae2e25bb4b57f" + [[package]] name = "is-terminal" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8687c819457e979cc940d09cb16e42a1bf70aa6b60a549de6d3a62a0ee90c69e" +checksum = "256017f749ab3117e93acb91063009e1f1bb56d03965b14c2c8df4eb02c524d8" dependencies = [ "hermit-abi 0.3.1", "io-lifetimes", "rustix", - "windows-sys 0.45.0", + "windows-sys", ] [[package]] @@ -1875,25 +2090,25 @@ checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" [[package]] name = "javascriptcore-rs" -version = "0.16.0" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf053e7843f2812ff03ef5afe34bb9c06ffee120385caad4f6b9967fcd37d41c" +checksum = "110b9902c80c12bf113c432d0b71c7a94490b294a8234f326fd0abca2fac0b00" dependencies = [ - "bitflags 1.3.2", + "bitflags", "glib", "javascriptcore-rs-sys", ] [[package]] name = "javascriptcore-rs-sys" -version = "0.4.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "905fbb87419c5cde6e3269537e4ea7d46431f3008c5d057e915ef3f115e7793c" +checksum = "98a216519a52cd941a733a0ad3f1023cfdb1cd47f3955e8e863ed56f558f916c" dependencies = [ "glib-sys", "gobject-sys", "libc", - "system-deps 5.0.0", + "system-deps", ] [[package]] @@ -1927,12 +2142,13 @@ dependencies = [ [[package]] name = "json-patch" -version = "0.2.7" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb3fa5a61630976fc4c353c70297f2e93f1930e3ccee574d59d618ccbd5154ce" +checksum = "e712e62827c382a77b87f590532febb1f8b2fdbc3eefa1ee37fe7281687075ef" dependencies = [ "serde", "serde_json", + "thiserror", "treediff", ] @@ -1950,15 +2166,15 @@ dependencies = [ [[package]] name = "lalrpop" -version = "0.19.8" +version = "0.19.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b30455341b0e18f276fa64540aff54deafb54c589de6aca68659c63dd2d5d823" +checksum = "f34313ec00c2eb5c3c87ca6732ea02dcf3af99c3ff7a8fb622ffb99c9d860a87" dependencies = [ "ascii-canvas", - "atty", "bit-set", "diff", "ena", + "is-terminal", "itertools", "lalrpop-util", "petgraph", @@ -1973,9 +2189,9 @@ dependencies = [ [[package]] name = "lalrpop-util" -version = "0.19.8" +version = "0.19.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcf796c978e9b4d983414f4caedc9273aa33ee214c5b887bd55fde84c85d2dc4" +checksum = "e5c1f7869c94d214466c5fd432dfed12c379fd87786768d36455892d46b18edd" dependencies = [ "regex", ] @@ -2032,9 +2248,9 @@ dependencies = [ [[package]] name = "linux-raw-sys" -version = "0.1.4" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4" +checksum = "cd550e73688e6d578f0ac2119e32b797a327631a42f9433e59d02e139c8df60d" [[package]] name = "litemap" @@ -2140,6 +2356,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" dependencies = [ "libc", + "stable_deref_trait", ] [[package]] @@ -2191,7 +2408,7 @@ dependencies = [ "libc", "log", "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.45.0", + "windows-sys", ] [[package]] @@ -2200,7 +2417,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2032c77e030ddee34a6787a64166008da93f6a352b629261d0fee232b8742dd4" dependencies = [ - "bitflags 1.3.2", + "bitflags", "jni-sys", "ndk-sys", "num_enum", @@ -2315,6 +2532,15 @@ dependencies = [ "syn 1.0.109", ] +[[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" @@ -2360,6 +2586,17 @@ version = "1.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" +[[package]] +name = "os_info" +version = "3.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5209b2162b2c140df493a93689e04f8deab3a67634f5bc7a553c0a98e5b8d399" +dependencies = [ + "log", + "serde", + "winapi", +] + [[package]] name = "os_str_bytes" version = "6.5.0" @@ -2374,11 +2611,12 @@ checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" [[package]] name = "pango" -version = "0.15.10" +version = "0.16.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22e4045548659aee5313bde6c582b0d83a627b7904dd20dc2d9ef0895d414e4f" +checksum = "cdff66b271861037b89d028656184059e03b0b6ccb36003820be19f7200b1e94" dependencies = [ - "bitflags 1.3.2", + "bitflags", + "gio", "glib", "libc", "once_cell", @@ -2387,16 +2625,22 @@ dependencies = [ [[package]] name = "pango-sys" -version = "0.15.10" +version = "0.16.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2a00081cde4661982ed91d80ef437c20eacaf6aa1a5962c0279ae194662c3aa" +checksum = "9e134909a9a293e04d2cc31928aa95679c5e4df954d0b85483159bd20d8f047f" dependencies = [ "glib-sys", "gobject-sys", "libc", - "system-deps 6.0.3", + "system-deps", ] +[[package]] +name = "parking" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72" + [[package]] name = "parking_lot" version = "0.12.1" @@ -2415,9 +2659,9 @@ checksum = "9069cbb9f99e3a5083476ccb29ceb1de18b9118cafa53e90c9551235de2b9521" dependencies = [ "cfg-if", "libc", - "redox_syscall", + "redox_syscall 0.2.16", "smallvec", - "windows-sys 0.45.0", + "windows-sys", ] [[package]] @@ -2604,23 +2848,39 @@ version = "0.17.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d708eaf860a19b19ce538740d2b4bdeeb8337fa53f7738455e706623ad5c638" dependencies = [ - "bitflags 1.3.2", + "bitflags", "crc32fast", "flate2", "miniz_oxide", ] [[package]] -name = "postcard" -version = "1.0.4" +name = "polling" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfa512cd0d087cc9f99ad30a1bf64795b67871edbead083ffc3a4dfafa59aa00" +checksum = "7e1f879b2998099c2d69ab9605d145d5b661195627eccc680002c4918a7fb6fa" dependencies = [ - "cobs", - "serde", -] - -[[package]] + "autocfg", + "bitflags", + "cfg-if", + "concurrent-queue", + "libc", + "log", + "pin-project-lite", + "windows-sys", +] + +[[package]] +name = "postcard" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfa512cd0d087cc9f99ad30a1bf64795b67871edbead083ffc3a4dfafa59aa00" +dependencies = [ + "cobs", + "serde", +] + +[[package]] name = "ppv-lite86" version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -2674,9 +2934,9 @@ checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" [[package]] name = "proc-macro2" -version = "1.0.52" +version = "1.0.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d0e1ae9e836cc3beddd63db0df682593d7e2d3d891ae8c9083d2113e1744224" +checksum = "e472a104799c74b514a57226160104aa483546de37e839ec50e3c2e41dd87534" dependencies = [ "unicode-ident", ] @@ -2792,9 +3052,12 @@ dependencies = [ [[package]] name = "raw-window-handle" -version = "0.5.1" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f851a03551ceefd30132e447f07f96cb7011d6b658374f3aed847333adb5559" +checksum = "ed7e3d950b66e19e0c372f3fa3fbbcf85b1746b571f74e0c2af6042a5c93420a" +dependencies = [ + "cty", +] [[package]] name = "redox_syscall" @@ -2802,7 +3065,16 @@ version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" dependencies = [ - "bitflags 1.3.2", + "bitflags", +] + +[[package]] +name = "redox_syscall" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +dependencies = [ + "bitflags", ] [[package]] @@ -2812,15 +3084,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" dependencies = [ "getrandom 0.2.8", - "redox_syscall", + "redox_syscall 0.2.16", "thiserror", ] [[package]] name = "regex" -version = "1.7.1" +version = "1.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48aaa5748ba571fb95cd2c85c09f629215d3a6ece942baa100950af03a34f733" +checksum = "8b1f693b24f6ac912f4893ef08244d70b6067480d2f1a46e950c9691e6749d1d" dependencies = [ "aho-corasick", "memchr", @@ -2838,23 +3110,60 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.6.28" +version = "0.6.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + +[[package]] +name = "reqwest" +version = "0.11.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27b71749df584b7f4cac2c426c127a7c785a5106cc98f7a8feb044115f0fa254" +dependencies = [ + "base64 0.21.0", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "hyper", + "ipnet", + "js-sys", + "log", + "mime", + "once_cell", + "percent-encoding", + "pin-project-lite", + "serde", + "serde_json", + "serde_urlencoded", + "tokio", + "tokio-util", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams", + "web-sys", + "winreg", +] [[package]] name = "rfd" -version = "0.10.0" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0149778bd99b6959285b0933288206090c50e2327f47a9c463bfdbf45c8823ea" +checksum = "7cb2988ec50c9bcdb0c012b89643a6094a35a785a37897211ee62e1639342f7b" dependencies = [ + "async-io", "block", "dispatch", + "futures-util", "glib-sys", "gobject-sys", "gtk-sys", "js-sys", - "lazy_static", "log", "objc", "objc-foundation", @@ -2863,7 +3172,7 @@ dependencies = [ "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "windows 0.37.0", + "windows 0.44.0", ] [[package]] @@ -2899,16 +3208,16 @@ dependencies = [ [[package]] name = "rustix" -version = "0.36.11" +version = "0.37.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db4165c9963ab29e422d6c26fbc1d37f15bace6b2810221f9d925023480fcf0e" +checksum = "c348b5dc624ecee40108aa2922fed8bad89d7fcc2b9f8cb18f632898ac4a37f9" dependencies = [ - "bitflags 1.3.2", + "bitflags", "errno", "io-lifetimes", "libc", "linux-raw-sys", - "windows-sys 0.45.0", + "windows-sys", ] [[package]] @@ -2962,7 +3271,7 @@ version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df320f1889ac4ba6bc0cdc9c9af7af4bd64bb927bccdf32d81140dc1f9be12fe" dependencies = [ - "bitflags 1.3.2", + "bitflags", "cssparser", "derive_more", "fxhash", @@ -2987,29 +3296,29 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.158" +version = "1.0.159" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "771d4d9c4163ee138805e12c710dd365e4f44be8be0503cb1bb9eb989425d9c9" +checksum = "3c04e8343c3daeec41f58990b9d77068df31209f2af111e059e9fe9646693065" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.158" +version = "1.0.159" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e801c1712f48475582b7696ac71e0ca34ebb30e09338425384269d9717c62cad" +checksum = "4c614d17805b093df4b147b51339e7e44bf05ef59fba1e45d83500bcfb4d8585" dependencies = [ "proc-macro2", "quote", - "syn 2.0.4", + "syn 2.0.11", ] [[package]] name = "serde_json" -version = "1.0.94" +version = "1.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c533a59c9d8a93a09c6ab31f0fd5e5f4dd1b8fc9434804029839884765d04ea" +checksum = "d721eca97ac802aa7777b701877c8004d950fc142651367300d21c1cc0194744" dependencies = [ "itoa 1.0.6", "ryu", @@ -3024,7 +3333,28 @@ checksum = "bcec881020c684085e55a25f7fd888954d56609ef363479dc5a1305eb0d40cab" dependencies = [ "proc-macro2", "quote", - "syn 2.0.4", + "syn 2.0.11", +] + +[[package]] +name = "serde_spanned" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0efd8caf556a6cebd3b285caf480045fcc1ac04f6bd786b09a6f11af30c4fcf4" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa 1.0.6", + "ryu", + "serde", ] [[package]] @@ -3185,31 +3515,31 @@ dependencies = [ ] [[package]] -name = "soup2" -version = "0.2.1" +name = "soup3" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2b4d76501d8ba387cf0fefbe055c3e0a59891d09f0f995ae4e4b16f6b60f3c0" +checksum = "82bc46048125fefd69d30b32b9d263d6556c9ffe82a7a7df181a86d912da5616" dependencies = [ - "bitflags 1.3.2", + "bitflags", + "futures-channel", "gio", "glib", "libc", "once_cell", - "soup2-sys", + "soup3-sys", ] [[package]] -name = "soup2-sys" -version = "0.2.0" +name = "soup3-sys" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "009ef427103fcb17f802871647a7fa6c60cbb654b4c4e4c0ac60a31c5f6dc9cf" +checksum = "014bbeb1c4cdb30739dc181e8d98b7908f124d9555843afa89b5570aaf4ec62b" dependencies = [ - "bitflags 1.3.2", "gio-sys", "glib-sys", "gobject-sys", "libc", - "system-deps 5.0.0", + "system-deps", ] [[package]] @@ -3252,7 +3582,7 @@ checksum = "70833300018c3ee1f99d54ab1292d4e8d16d232d860be85fce9faef784d82a80" dependencies = [ "proc-macro2", "quote", - "syn 2.0.4", + "syn 2.0.11", ] [[package]] @@ -3287,6 +3617,17 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" +[[package]] +name = "swift-rs" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2eab55f44d02ced20ffa22fd5b4bd083ab59c940c7637d37fec4426b1a01d769" +dependencies = [ + "base64 0.21.0", + "serde", + "serde_json", +] + [[package]] name = "syn" version = "1.0.109" @@ -3300,9 +3641,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.4" +version = "2.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c622ae390c9302e214c31013517c2061ecb2699935882c60a9b37f82f8625ae" +checksum = "21e3787bb71465627110e7d87ed4faaa36c1f61042ee67badb9e2ef173accc40" dependencies = [ "proc-macro2", "quote", @@ -3337,42 +3678,29 @@ dependencies = [ "libc", "wasm-bindgen", "web-sys", - "windows-sys 0.45.0", + "windows-sys", ] [[package]] name = "system-deps" -version = "5.0.0" +version = "6.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18db855554db7bd0e73e06cf7ba3df39f97812cb11d3f75e71c39bf45171797e" +checksum = "555fc8147af6256f3931a36bb83ad0023240ce9cf2b319dec8236fd1f220b05f" dependencies = [ - "cfg-expr 0.9.1", - "heck 0.3.3", + "cfg-expr", + "heck", "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.1", - "pkg-config", - "toml", - "version-compare 0.1.1", + "toml 0.7.3", + "version-compare", ] [[package]] name = "tao" -version = "0.15.8" +version = "0.18.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac8e6399427c8494f9849b58694754d7cc741293348a6836b6c8d2c5aa82d8e6" +checksum = "8f2340617d383561b0ea25358b97ec2c2ba04db48c458ce71dd1b38d7fd09ac5" dependencies = [ - "bitflags 1.3.2", + "bitflags", "cairo-rs", "cc", "cocoa", @@ -3383,6 +3711,7 @@ dependencies = [ "gdk", "gdk-pixbuf", "gdk-sys", + "gdkwayland-sys", "gdkx11-sys", "gio", "glib", @@ -3400,18 +3729,29 @@ dependencies = [ "objc", "once_cell", "parking_lot", - "paste", "png", "raw-window-handle", "scopeguard", "serde", + "tao-macros", "unicode-segmentation", - "uuid 1.3.0", - "windows 0.39.0", + "uuid", + "windows 0.44.0", "windows-implement", "x11-dl", ] +[[package]] +name = "tao-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b27a4bcc5eb524658234589bdffc7e7bfb996dbae6ce9393bfd39cb4159b445" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "tar" version = "0.4.38" @@ -3434,11 +3774,12 @@ dependencies = [ [[package]] name = "tauri" -version = "1.2.4" +version = "2.0.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe7e0f1d535e7cbbbab43c82be4fc992b84f9156c16c160955617e0260ebc449" +checksum = "e113835bb47f8cab6d1fb3b1a2e3d96ddd64730248638a5ab3f46a598c02a81c" dependencies = [ "anyhow", + "bytes", "clap 3.2.23", "cocoa", "dirs-next", @@ -3449,14 +3790,19 @@ dependencies = [ "glib", "glob", "gtk", - "heck 0.4.1", + "heck", "http", "ignore", + "jni", + "libc", + "log", "objc", "once_cell", + "os_info", "percent-encoding", "rand 0.8.5", "raw-window-handle", + "reqwest", "rfd", "semver", "serde", @@ -3464,7 +3810,9 @@ dependencies = [ "serde_repr", "serialize-to-javascript", "state", + "swift-rs", "tar", + "tauri-build", "tauri-macros", "tauri-runtime", "tauri-runtime-wry", @@ -3473,35 +3821,39 @@ dependencies = [ "thiserror", "tokio", "url", - "uuid 1.3.0", + "uuid", "webkit2gtk", "webview2-com", - "windows 0.39.0", + "windows 0.44.0", ] [[package]] name = "tauri-build" -version = "1.2.1" +version = "2.0.0-alpha.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8807c85d656b2b93927c19fe5a5f1f1f348f96c2de8b90763b3c2d561511f9b4" +checksum = "383f94e1b46fb4e249e4eafbd0589ffbe02b241b49dadebd47640598a17e584e" dependencies = [ "anyhow", "cargo_toml", - "heck 0.4.1", + "filetime", + "heck", "json-patch", "semver", + "serde", "serde_json", + "swift-rs", "tauri-utils", - "winres", + "tauri-winres", + "walkdir", ] [[package]] name = "tauri-codegen" -version = "1.2.1" +version = "2.0.0-alpha.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14388d484b6b1b5dc0f6a7d6cc6433b3b230bec85eaa576adcdf3f9fafa49251" +checksum = "5914e68c4ba4d9b761373dcce86f6721de78c2ffd84f376b1e0fee9321c0fc7e" dependencies = [ - "base64 0.13.1", + "base64 0.21.0", "brotli", "ico", "json-patch", @@ -3516,17 +3868,18 @@ dependencies = [ "tauri-utils", "thiserror", "time", - "uuid 1.3.0", + "url", + "uuid", "walkdir", ] [[package]] name = "tauri-macros" -version = "1.2.1" +version = "2.0.0-alpha.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "069319e5ecbe653a799b94b0690d9f9bf5d00f7b1d3989aa331c524d4e354075" +checksum = "adedb0845af0d5840b54410f83135bb285ab372956678e0b12046a87999486fb" dependencies = [ - "heck 0.4.1", + "heck", "proc-macro2", "quote", "syn 1.0.109", @@ -3537,65 +3890,70 @@ dependencies = [ [[package]] name = "tauri-plugin-window-state" version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f15dab0be2ce3ce8a57d0d2de17d201d0c2f3230d68981ff3f0942684de03eb" +source = "git+https://github.com/tauri-apps/plugins-workspace.git?branch=next#39b144df42e6f3e485beef4d0d31101f13d4c24e" dependencies = [ "bincode", + "bitflags", + "log", "serde", + "serde_json", "tauri", "thiserror", ] [[package]] name = "tauri-runtime" -version = "0.12.1" +version = "0.13.0-alpha.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c507d954d08ac8705d235bc70ec6975b9054fb95ff7823af72dbb04186596f3b" +checksum = "11c9ce3ab30f6a95a09131510a624d5de24455ba9e8fcae6a6fe9e0922f833c8" dependencies = [ "gtk", "http", "http-range", + "jni", "rand 0.8.5", "raw-window-handle", "serde", "serde_json", "tauri-utils", "thiserror", - "uuid 1.3.0", + "url", + "uuid", "webview2-com", - "windows 0.39.0", + "windows 0.44.0", ] [[package]] name = "tauri-runtime-wry" -version = "0.12.2" +version = "0.13.0-alpha.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36b1c5764a41a13176a4599b5b7bd0881bea7d94dfe45e1e755f789b98317e30" +checksum = "0e176af0987e4ced285bec0faf56eed0f13a1b3851d9176fa6758181f867cdc3" dependencies = [ "cocoa", "gtk", + "jni", "percent-encoding", "rand 0.8.5", "raw-window-handle", "tauri-runtime", "tauri-utils", - "uuid 1.3.0", + "uuid", "webkit2gtk", "webview2-com", - "windows 0.39.0", + "windows 0.44.0", "wry", ] [[package]] name = "tauri-utils" -version = "1.2.1" +version = "2.0.0-alpha.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5abbc109a6eb45127956ffcc26ef0e875d160150ac16cfa45d26a6b2871686f1" +checksum = "3a488bb0c60e2ce9efbe8283a11299675e01f55caf12304889f8639b3c35713c" dependencies = [ "brotli", "ctor", "glob", - "heck 0.4.1", + "heck", "html5ever", "infer", "json-patch", @@ -3611,20 +3969,30 @@ dependencies = [ "thiserror", "url", "walkdir", - "windows 0.39.0", + "windows 0.44.0", +] + +[[package]] +name = "tauri-winres" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b7a78dc04f75fb5ab815e66ac561c81e92a968a40f29e7c21afd152d694fad8" +dependencies = [ + "toml 0.5.11", + "version_check", ] [[package]] name = "tempfile" -version = "3.4.0" +version = "3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af18f7ae1acd354b992402e9ec5864359d693cd8a79dcbef59f76891701c1e95" +checksum = "b9fbec84f381d5795b08656e4912bec604d162bff9291d6189a78f4c8ab87998" dependencies = [ "cfg-if", "fastrand", - "redox_syscall", + "redox_syscall 0.3.5", "rustix", - "windows-sys 0.42.0", + "windows-sys", ] [[package]] @@ -3687,7 +4055,7 @@ checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.4", + "syn 2.0.11", ] [[package]] @@ -3702,29 +4070,14 @@ dependencies = [ [[package]] name = "time" -version = "0.3.20" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd0cbfecb4d19b5ea75bb31ad904eb5b9fa13f21079c3b92017ebdf4999a5890" +checksum = "d634a985c4d4238ec39cacaed2e7ae552fbd3c476b552c1deac3021b7d7eaf0c" dependencies = [ "itoa 1.0.6", + "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.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd80a657e71da814b8e5d60d3374fc6d35045062245d80224748ae522dd76f36" -dependencies = [ - "time-core", ] [[package]] @@ -3764,31 +4117,56 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.26.0" +version = "1.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03201d01c3c27a29c8a5cee5b55a93ddae1ccf6f08f65365c2c918f8c1b76f64" +checksum = "d0de47a4eecbe11f498978a9b29d792f0d2692d1dd003650c24c76510e3bc001" dependencies = [ "autocfg", "bytes", "libc", - "memchr", "mio", "num_cpus", "pin-project-lite", "socket2", "tokio-macros", - "windows-sys 0.45.0", + "windows-sys", ] [[package]] name = "tokio-macros" -version = "1.8.2" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d266c00fde287f55d3f1c3e96c500c362a2b8c695076ec180f27918820bc6df8" +checksum = "61a573bdc87985e9d6ddeed1b3d864e8a302c847e40d647746df2f1de209d1ce" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.11", +] + +[[package]] +name = "tokio-stream" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fb52b74f05dbf495a8fba459fdc331812b96aa086d9eb78101fa0d4569c3313" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", + "tokio-util", +] + +[[package]] +name = "tokio-util" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5427d89453009325de0d8f342c9490009f76e999cb7672d77e46267448f7e6b2" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", + "tracing", ] [[package]] @@ -3800,19 +4178,36 @@ dependencies = [ "serde", ] +[[package]] +name = "toml" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b403acf6f2bb0859c93c7f0d967cb4a75a7ac552100f9322faf64dc047669b21" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit", +] + [[package]] name = "toml_datetime" version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622" +dependencies = [ + "serde", +] [[package]] name = "toml_edit" -version = "0.19.7" +version = "0.19.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc18466501acd8ac6a3f615dd29a3438f8ca6bb3b19537138b3106e575621274" +checksum = "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13" dependencies = [ "indexmap", + "serde", + "serde_spanned", "toml_datetime", "winnow", ] @@ -3838,7 +4233,7 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d1d42a9b3f3ec46ba828e8d376aec14592ea199f70a06a548587ecd1c4ab658" dependencies = [ - "bitflags 1.3.2", + "bitflags", "bytes", "futures-core", "futures-util", @@ -3927,9 +4322,9 @@ dependencies = [ [[package]] name = "treediff" -version = "3.0.2" +version = "4.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "761e8d5ad7ce14bb82b7e61ccc0ca961005a275a060b9644a2431aa11553c2ff" +checksum = "52984d277bdf2a751072b5df30ec0377febdb02f7696d64c2d7d54630bac4303" dependencies = [ "serde_json", ] @@ -4028,10 +4423,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" [[package]] -name = "uuid" -version = "0.8.2" +name = "utf8parse" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" +checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" [[package]] name = "uuid" @@ -4048,12 +4443,6 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" -[[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.1" @@ -4074,15 +4463,22 @@ checksum = "ded573c92d7b32013bdab82676be59f56106895e837504568f32804980ec7868" [[package]] name = "vfs-tar" -version = "0.3.2" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbc4b6f04e3d6f22a7899b3ee07df9a71e3bb0b068e4544961de221a9f851dce" +checksum = "cb6eea209e00a567e5966323e2e3f83b91b9c662711c6e44a21c479604f8fd52" dependencies = [ "memmap2", + "stable_deref_trait", "tar-parser2", "vfs", ] +[[package]] +name = "waker-fn" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca" + [[package]] name = "walkdir" version = "2.3.3" @@ -4181,6 +4577,19 @@ version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" +[[package]] +name = "wasm-streams" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bbae3363c08332cadccd13b67db371814cd214c2524020932f0804b8cf7c078" +dependencies = [ + "futures-util", + "js-sys", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + [[package]] name = "wasmi" version = "0.29.0" @@ -4233,11 +4642,11 @@ dependencies = [ [[package]] name = "webkit2gtk" -version = "0.18.2" +version = "0.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8f859735e4a452aeb28c6c56a852967a8a76c8eb1cc32dbf931ad28a13d6370" +checksum = "d8eea819afe15eb8dcdff4f19d8bfda540bae84d874c10e6f4b8faf2d6704bd1" dependencies = [ - "bitflags 1.3.2", + "bitflags", "cairo-rs", "gdk", "gdk-sys", @@ -4251,20 +4660,18 @@ dependencies = [ "javascriptcore-rs", "libc", "once_cell", - "soup2", + "soup3", "webkit2gtk-sys", ] [[package]] name = "webkit2gtk-sys" -version = "0.18.0" +version = "0.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d76ca6ecc47aeba01ec61e480139dda143796abcae6f83bcddf50d6b5b1dcf3" +checksum = "d0ac7a95ddd3fdfcaf83d8e513b4b1ad101b95b413b6aa6662ed95f284fc3d5b" dependencies = [ - "atk-sys", - "bitflags 1.3.2", + "bitflags", "cairo-sys-rs", - "gdk-pixbuf-sys", "gdk-sys", "gio-sys", "glib-sys", @@ -4272,21 +4679,20 @@ dependencies = [ "gtk-sys", "javascriptcore-rs-sys", "libc", - "pango-sys", "pkg-config", - "soup2-sys", - "system-deps 6.0.3", + "soup3-sys", + "system-deps", ] [[package]] name = "webview2-com" -version = "0.19.1" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4a769c9f1a64a8734bde70caafac2b96cada12cd4aefa49196b3a386b8b4178" +checksum = "11296e5daf3a653b79bf47d66c380e4143d5b9c975818871179a3bda79499562" dependencies = [ "webview2-com-macros", "webview2-com-sys", - "windows 0.39.0", + "windows 0.44.0", "windows-implement", ] @@ -4303,15 +4709,15 @@ dependencies = [ [[package]] name = "webview2-com-sys" -version = "0.19.0" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aac48ef20ddf657755fdcda8dfed2a7b4fc7e4581acce6fe9b88c3d64f29dee7" +checksum = "cde542bed28058a5b028d459689ee57f1d06685bb6c266da3b91b1be6703952f" dependencies = [ "regex", "serde", "serde_json", "thiserror", - "windows 0.39.0", + "windows 0.44.0", "windows-bindgen", "windows-metadata", ] @@ -4349,45 +4755,29 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows" -version = "0.37.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57b543186b344cc61c85b5aab0d2e3adf4e0f99bc076eff9aa5927bcc0b8a647" -dependencies = [ - "windows_aarch64_msvc 0.37.0", - "windows_i686_gnu 0.37.0", - "windows_i686_msvc 0.37.0", - "windows_x86_64_gnu 0.37.0", - "windows_x86_64_msvc 0.37.0", -] - -[[package]] -name = "windows" -version = "0.39.0" +version = "0.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1c4bd0a50ac6020f65184721f758dba47bb9fbc2133df715ec74a237b26794a" +checksum = "9e745dab35a0c4c77aa3ce42d595e13d2003d6902d6b08c9ef5fc326d08da12b" 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", + "windows-interface", + "windows-targets", ] [[package]] name = "windows" -version = "0.44.0" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e745dab35a0c4c77aa3ce42d595e13d2003d6902d6b08c9ef5fc326d08da12b" +checksum = "cdacb41e6a96a052c6cb63a144f24900236121c6f63f4f8219fef5977ecb0c25" dependencies = [ "windows-targets", ] [[package]] name = "windows-bindgen" -version = "0.39.0" +version = "0.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68003dbd0e38abc0fb85b939240f4bce37c43a5981d3df37ccbaaa981b47cb41" +checksum = "222204ecf46521382a4d88b4a1bbefca9f8855697b4ab7d20803901425e061a3" dependencies = [ "windows-metadata", "windows-tokens", @@ -4395,34 +4785,31 @@ dependencies = [ [[package]] name = "windows-implement" -version = "0.39.0" +version = "0.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba01f98f509cb5dc05f4e5fc95e535f78260f15fea8fe1a8abdd08f774f1cee7" +checksum = "6ce87ca8e3417b02dc2a8a22769306658670ec92d78f1bd420d6310a67c245c6" dependencies = [ + "proc-macro2", + "quote", "syn 1.0.109", - "windows-tokens", ] [[package]] -name = "windows-metadata" -version = "0.39.0" +name = "windows-interface" +version = "0.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ee5e275231f07c6e240d14f34e1b635bf1faa1c76c57cfd59a5cdb9848e4278" +checksum = "853f69a591ecd4f810d29f17e902d40e349fb05b0b11fff63b08b826bfe39c7f" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] [[package]] -name = "windows-sys" -version = "0.42.0" +name = "windows-metadata" +version = "0.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" -dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc 0.42.2", -] +checksum = "ee78911e3f4ce32c1ad9d3c7b0bd95389662ad8d8f1a3155688fed70bd96e2b6" [[package]] name = "windows-sys" @@ -4440,19 +4827,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" dependencies = [ "windows_aarch64_gnullvm", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", "windows_x86_64_gnullvm", - "windows_x86_64_msvc 0.42.2", + "windows_x86_64_msvc", ] [[package]] name = "windows-tokens" -version = "0.39.0" +version = "0.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f838de2fe15fe6bac988e74b798f26499a8b21a9d97edec321e79b28d1d7f597" +checksum = "fa4251900975a0d10841c5d4bde79c56681543367ef811f3fabb8d1803b0959b" [[package]] name = "windows_aarch64_gnullvm" @@ -4460,72 +4847,24 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" -[[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.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" -[[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.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" -[[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.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" -[[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.2" @@ -4538,18 +4877,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" -[[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.2" @@ -4558,20 +4885,20 @@ checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" [[package]] name = "winnow" -version = "0.3.6" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23d020b441f92996c80d94ae9166e8501e59c7bb56121189dc9eab3bd8216966" +checksum = "ae8970b36c66498d8ff1d66685dc86b91b29db0c7739899012f63a63814b4b28" dependencies = [ "memchr", ] [[package]] -name = "winres" -version = "0.1.12" +name = "winreg" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b68db261ef59e9e52806f688020631e987592bd83619edccda9c47d42cde4f6c" +checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" dependencies = [ - "toml", + "winapi", ] [[package]] @@ -4582,9 +4909,9 @@ checksum = "92d74a687e3b9a7a129db0a8c82b4d464eb9c36f5a66ca68572a7e5f1cfdb5bc" [[package]] name = "wry" -version = "0.23.4" +version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c1ad8e2424f554cc5bdebe8aa374ef5b433feff817aebabca0389961fc7ef98" +checksum = "b958a84f347bf8ec2e882b3f767bdb3f7797e89867bb9d6f0d1fe3df26754fe9" dependencies = [ "base64 0.13.1", "block", @@ -4598,6 +4925,7 @@ dependencies = [ "gtk", "html5ever", "http", + "javascriptcore-rs", "kuchiki", "libc", "log", @@ -4607,14 +4935,14 @@ dependencies = [ "serde", "serde_json", "sha2", - "soup2", + "soup3", "tao", "thiserror", "url", "webkit2gtk", "webkit2gtk-sys", "webview2-com", - "windows 0.39.0", + "windows 0.44.0", "windows-implement", ] diff --git a/bins/Makefile b/bins/Makefile index 93cebaba..bf06bcb4 100644 --- a/bins/Makefile +++ b/bins/Makefile @@ -5,7 +5,7 @@ clean: update: cargo update -.PHONY: dist debug-cross release release-cross +.PHONY: dist debug-cross release release-cross release-android dist: cd ayaka-gui && $(MAKE) dist debug-cross: dist @@ -14,6 +14,8 @@ release: dist cargo build --release release-cross: dist cargo build --release --target=$(TARGET) +release-android: + cd ayaka-gui && $(MAKE) build-android .PHONY: run run-gui run-latex run: @@ -22,3 +24,9 @@ run-gui: cd ayaka-gui && $(MAKE) run FILE='$(FILE)' run-latex: cargo run --package ayaka-latex -- $(FILE) -o $(TEXOUT) + +.PHONY: run-android run-ios +run-android: + cd ayaka-gui && $(MAKE) run-android +run-ios: + cd ayaka-gui && $(MAKE) run-ios diff --git a/bins/ayaka-check/src/main.rs b/bins/ayaka-check/src/main.rs index b9acae4c..a8171866 100644 --- a/bins/ayaka-check/src/main.rs +++ b/bins/ayaka-check/src/main.rs @@ -45,7 +45,9 @@ async fn main() -> Result<()> { .use_utc() .start()?; let linker = WasmiLinker::new(())?; - let context = Context::::open(&opts.input, FrontendType::Text, linker); + let context = ContextBuilder::::new(FrontendType::Text, linker) + .with_paths(&opts.input)? + .open(); let mut context = pin!(context); while let Some(status) = context.next().await { match status { diff --git a/bins/ayaka-gui/Makefile b/bins/ayaka-gui/Makefile index 62f773c3..0d7905c0 100644 --- a/bins/ayaka-gui/Makefile +++ b/bins/ayaka-gui/Makefile @@ -12,3 +12,19 @@ run: node_modules cargo tauri dev -- -- $(FILE) dist: node_modules npm run build + +build-android: dist + cargo tauri android build + rm -r src-tauri/.cargo + +build-ios: dist + cargo tauri ios build + rm -r src-tauri/.cargo + +run-android: node_modules + cargo tauri android dev + rm -r src-tauri/.cargo + +run-ios: node_modules + cargo tauri ios dev + rm -r src-tauri/.cargo diff --git a/bins/ayaka-gui/package-lock.json b/bins/ayaka-gui/package-lock.json index 389b2fde..c9bd157a 100644 --- a/bins/ayaka-gui/package-lock.json +++ b/bins/ayaka-gui/package-lock.json @@ -11,7 +11,7 @@ "@fortawesome/fontawesome-svg-core": "^6.4.0", "@fortawesome/free-solid-svg-icons": "^6.4.0", "@fortawesome/vue-fontawesome": "^3.0.3", - "@tauri-apps/api": "^1.2.0", + "@tauri-apps/api": "^2.0.0-alpha.1", "async-mutex": "^0.4.0", "bootstrap": "^5.2.3", "bootstrap-dark-5": "^1.1.3", @@ -29,6 +29,7 @@ "@types/node": "^18.15.10", "@vitejs/plugin-vue": "^3.2.0", "@vue/tsconfig": "^0.1.3", + "internal-ip": "^7.0.0", "process": "^0.11.10", "typescript": "~5.0.2", "vite": "^3.2.5", @@ -568,9 +569,9 @@ } }, "node_modules/@tauri-apps/api": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-1.2.0.tgz", - "integrity": "sha512-lsI54KI6HGf7VImuf/T9pnoejfgkNoXveP14pVV7XarrQ46rOejIVJLFqHI9sRReJMGdh2YuCoI3cc/yCWCsrw==", + "version": "2.0.0-alpha.1", + "resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-2.0.0-alpha.1.tgz", + "integrity": "sha512-KNFNtO67atq2Bl+2+HZOQgYjmqDB42fimFVSkd8yLjU/kO1I0rmhxplKffHlB1Mc9mAqE/VX56tCE3PGAeumAg==", "engines": { "node": ">= 14.6.0", "npm": ">= 6.6.0", @@ -917,6 +918,20 @@ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/csstype": { "version": "2.6.21", "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz", @@ -928,6 +943,18 @@ "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", "dev": true }, + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dev": true, + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, "node_modules/earcut": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.4.tgz", @@ -1313,6 +1340,29 @@ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==" }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, "node_modules/filename-reserved-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", @@ -1403,6 +1453,18 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/gh-pages": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/gh-pages/-/gh-pages-4.0.0.tgz", @@ -1484,6 +1546,15 @@ "he": "bin/he" } }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -1498,6 +1569,42 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, + "node_modules/internal-ip": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-7.0.0.tgz", + "integrity": "sha512-qE4TeD4brqC45Vq/+VASeMiS1KRyfBkR6HT2sh9pZVVCzSjPkaCEfKFU+dL0PRv7NHJtvoKN2r82G6wTfzorkw==", + "dev": true, + "dependencies": { + "default-gateway": "^6.0.3", + "ipaddr.js": "^2.0.1", + "is-ip": "^3.1.0", + "p-event": "^4.2.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/internal-ip?sponsor=1" + } + }, + "node_modules/ip-regex": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz", + "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ipaddr.js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", + "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, "node_modules/is-core-module": { "version": "2.11.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", @@ -1510,6 +1617,36 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-ip": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-ip/-/is-ip-3.1.0.tgz", + "integrity": "sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q==", + "dev": true, + "dependencies": { + "ip-regex": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, "node_modules/jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", @@ -1556,6 +1693,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -1584,6 +1736,18 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -1600,6 +1764,45 @@ "wrappy": "1" } }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-event": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/p-event/-/p-event-4.2.0.tgz", + "integrity": "sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==", + "dev": true, + "dependencies": { + "p-timeout": "^3.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", @@ -1625,6 +1828,18 @@ "node": ">=8" } }, + "node_modules/p-timeout": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "dev": true, + "dependencies": { + "p-finally": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", @@ -1649,6 +1864,15 @@ "node": ">=0.10.0" } }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", @@ -1852,6 +2076,33 @@ "semver": "bin/semver.js" } }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -1874,6 +2125,15 @@ "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", "deprecated": "Please use @jridgewell/sourcemap-codec instead" }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/strip-outer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", @@ -2066,6 +2326,21 @@ "typescript": "*" } }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -2389,9 +2664,9 @@ "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==" }, "@tauri-apps/api": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-1.2.0.tgz", - "integrity": "sha512-lsI54KI6HGf7VImuf/T9pnoejfgkNoXveP14pVV7XarrQ46rOejIVJLFqHI9sRReJMGdh2YuCoI3cc/yCWCsrw==" + "version": "2.0.0-alpha.1", + "resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-2.0.0-alpha.1.tgz", + "integrity": "sha512-KNFNtO67atq2Bl+2+HZOQgYjmqDB42fimFVSkd8yLjU/kO1I0rmhxplKffHlB1Mc9mAqE/VX56tCE3PGAeumAg==" }, "@types/bootstrap": { "version": "5.2.6", @@ -2688,6 +2963,17 @@ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, "csstype": { "version": "2.6.21", "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz", @@ -2699,6 +2985,15 @@ "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", "dev": true }, + "default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dev": true, + "requires": { + "execa": "^5.0.0" + } + }, "earcut": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.4.tgz", @@ -2894,6 +3189,23 @@ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==" }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, "filename-reserved-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", @@ -2956,6 +3268,12 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, "gh-pages": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/gh-pages/-/gh-pages-4.0.0.tgz", @@ -3015,6 +3333,12 @@ "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -3029,6 +3353,30 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, + "internal-ip": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-7.0.0.tgz", + "integrity": "sha512-qE4TeD4brqC45Vq/+VASeMiS1KRyfBkR6HT2sh9pZVVCzSjPkaCEfKFU+dL0PRv7NHJtvoKN2r82G6wTfzorkw==", + "dev": true, + "requires": { + "default-gateway": "^6.0.3", + "ipaddr.js": "^2.0.1", + "is-ip": "^3.1.0", + "p-event": "^4.2.0" + } + }, + "ip-regex": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz", + "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==", + "dev": true + }, + "ipaddr.js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", + "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", + "dev": true + }, "is-core-module": { "version": "2.11.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", @@ -3038,6 +3386,27 @@ "has": "^1.0.3" } }, + "is-ip": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-ip/-/is-ip-3.1.0.tgz", + "integrity": "sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q==", + "dev": true, + "requires": { + "ip-regex": "^4.0.0" + } + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, "jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", @@ -3075,6 +3444,18 @@ "semver": "^6.0.0" } }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, "minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -3094,6 +3475,15 @@ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==" }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -3107,6 +3497,30 @@ "wrappy": "1" } }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "p-event": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/p-event/-/p-event-4.2.0.tgz", + "integrity": "sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==", + "dev": true, + "requires": { + "p-timeout": "^3.1.0" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "dev": true + }, "p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", @@ -3123,6 +3537,15 @@ "p-limit": "^2.2.0" } }, + "p-timeout": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "dev": true, + "requires": { + "p-finally": "^1.0.0" + } + }, "p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", @@ -3138,6 +3561,12 @@ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, "path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", @@ -3282,6 +3711,27 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -3297,6 +3747,12 @@ "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, "strip-outer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", @@ -3413,6 +3869,15 @@ "@volar/vue-typescript": "1.2.0" } }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/bins/ayaka-gui/package.json b/bins/ayaka-gui/package.json index 0626812d..da9bd889 100644 --- a/bins/ayaka-gui/package.json +++ b/bins/ayaka-gui/package.json @@ -12,7 +12,7 @@ "@fortawesome/fontawesome-svg-core": "^6.4.0", "@fortawesome/free-solid-svg-icons": "^6.4.0", "@fortawesome/vue-fontawesome": "^3.0.3", - "@tauri-apps/api": "^1.2.0", + "@tauri-apps/api": "^2.0.0-alpha.1", "async-mutex": "^0.4.0", "bootstrap": "^5.2.3", "bootstrap-dark-5": "^1.1.3", @@ -30,9 +30,10 @@ "@types/node": "^18.15.10", "@vitejs/plugin-vue": "^3.2.0", "@vue/tsconfig": "^0.1.3", + "internal-ip": "^7.0.0", "process": "^0.11.10", "typescript": "~5.0.2", "vite": "^3.2.5", "vue-tsc": "^1.1.4" } -} \ No newline at end of file +} diff --git a/bins/ayaka-gui/src-tauri/Cargo.toml b/bins/ayaka-gui/src-tauri/Cargo.toml index 39feeabf..5aad9c40 100644 --- a/bins/ayaka-gui/src-tauri/Cargo.toml +++ b/bins/ayaka-gui/src-tauri/Cargo.toml @@ -1,24 +1,28 @@ [package] name = "ayaka-gui" description = "GUI frontend for Ayaka." -# TODO: inherit from workspace -version = "0.2.0" -edition = "2021" +version.workspace = true +edition.workspace = true +authors.workspace = true +categories.workspace = true +keywords.workspace = true +license.workspace = true +repository.workspace = true + +[lib] +name = "ayaka_gui_lib" +crate-type = ["staticlib", "cdylib", "rlib"] [build-dependencies] -# TODO: remove this -# Avoid 0.13.3, because we use workspace dependencies. -cargo_toml = "=0.13.2" -tauri-build = { version = "1.2", features = [] } +tauri-build = { version = "2.0.0-alpha.2", features = [] } [dependencies] ayaka-plugin-wasmi = { workspace = true } ayaka-model = { workspace = true } -flexi_logger = { workspace = true } serde_json = "1.0" serde = { version = "1.0", features = ["derive"] } -tauri = { version = "1.2", features = ["cli", "dialog-open", "window-all"] } -tauri-plugin-window-state = "0.1" +tauri = { version = "2.0.0-alpha.4", features = ["cli", "dialog-open", "os-all", "window-all"] } +tokio = { workspace = true, features = ["sync"] } axum = { version = "0.6", default-features = false, features = [ "http1", "tokio", @@ -26,6 +30,18 @@ axum = { version = "0.6", default-features = false, features = [ ] } tower-http = { version = "0.4", features = ["cors", "trace"] } mime_guess = "2.0" +vfs-tar = { version = "0.4", features = ["mmap"] } + +[target.'cfg(not(any(target_os = "android", target_os = "ios")))'.dependencies] +tauri-plugin-window-state = { git = "https://github.com/tauri-apps/plugins-workspace.git", branch = "next" } +flexi_logger = { workspace = true } + +[target.'cfg(target_os = "ios")'.dependencies] +file-picker-ios = { git = "https://github.com/Berrysoft/file-picker-ios.git" } + +[target.'cfg(target_os = "android")'.dependencies] +android_logger = "0.13" +file-picker-android = { git = "https://github.com/Berrysoft/file-picker-android.git" } [features] default = ["custom-protocol"] diff --git a/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/.gitignore b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/.gitignore new file mode 100644 index 00000000..7ea77cce --- /dev/null +++ b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/.gitignore @@ -0,0 +1,19 @@ +*.iml +.gradle +/local.properties +/.idea/caches +/.idea/libraries +/.idea/modules.xml +/.idea/workspace.xml +/.idea/navEditor.xml +/.idea/assetWizardSettings.xml +.DS_Store +build +/buildSrc/src/main/java/com/unigal/ayaka_gui/kotlin/BuildTask.kt +/buildSrc/src/main/java/com/unigal/ayaka_gui/kotlin/RustPlugin.kt +/captures +.externalNativeBuild +.cxx +local.properties + +/.tauri diff --git a/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/.gitignore b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/.gitignore new file mode 100644 index 00000000..2b1dc1ac --- /dev/null +++ b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/.gitignore @@ -0,0 +1,2 @@ +/src/main/java/com/unigal/ayaka_gui/generated +/src/main/jniLibs diff --git a/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/build.gradle.kts b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/build.gradle.kts new file mode 100644 index 00000000..b434b7c3 --- /dev/null +++ b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/build.gradle.kts @@ -0,0 +1,117 @@ +plugins { + id("com.android.application") + id("org.jetbrains.kotlin.android") + id("rustPlugin") +} + +android { + compileSdk = 33 + defaultConfig { + manifestPlaceholders["usesCleartextTraffic"] = "false" + applicationId = "com.unigal.ayaka_gui" + minSdk = 24 + targetSdk = 33 + versionCode = 1 + versionName = "1.0" + } + sourceSets.getByName("main") { + // Vulkan validation layers + val ndkHome = System.getenv("NDK_HOME") + jniLibs.srcDir("${ndkHome}/sources/third_party/vulkan/src/build-android/jniLibs") + } + buildTypes { + getByName("debug") { + manifestPlaceholders["usesCleartextTraffic"] = "true" + isDebuggable = true + isJniDebuggable = true + isMinifyEnabled = false + packagingOptions { + jniLibs.keepDebugSymbols.add("*/arm64-v8a/*.so") + + jniLibs.keepDebugSymbols.add("*/armeabi-v7a/*.so") + + jniLibs.keepDebugSymbols.add("*/x86/*.so") + + jniLibs.keepDebugSymbols.add("*/x86_64/*.so") + } + } + getByName("release") { + isMinifyEnabled = true + val proguards = fileTree(".") { + include("*.pro") + } + proguardFiles(*proguards.toList().toTypedArray()) + } + } + flavorDimensions.add("abi") + productFlavors { + create("universal") { + val abiList = findProperty("abiList") as? String + + dimension = "abi" + ndk { + abiFilters += abiList?.split(",")?.map { it.trim() } ?: listOf( "arm64-v8a", "armeabi-v7a", "x86", "x86_64", + ) + } + } + create("arm64") { + dimension = "abi" + ndk { + abiFilters += listOf("arm64-v8a") + } + } + + create("arm") { + dimension = "abi" + ndk { + abiFilters += listOf("armeabi-v7a") + } + } + + create("x86") { + dimension = "abi" + ndk { + abiFilters += listOf("x86") + } + } + + create("x86_64") { + dimension = "abi" + ndk { + abiFilters += listOf("x86_64") + } + } + } + + assetPacks += mutableSetOf() + namespace = "com.unigal.ayaka_gui" +} + +rust { + rootDirRel = "../../../../" + targets = listOf("aarch64", "armv7", "i686", "x86_64") + arches = listOf("arm64", "arm", "x86", "x86_64") +} + +dependencies { + implementation("androidx.webkit:webkit:1.5.0") + implementation("androidx.appcompat:appcompat:1.5.1") + implementation("com.google.android.material:material:1.7.0") + testImplementation("junit:junit:4.13.2") + androidTestImplementation("androidx.test.ext:junit:1.1.4") + androidTestImplementation("androidx.test.espresso:espresso-core:3.5.0") + implementation(project(":tauri-android")) +} + +apply(from = "tauri.build.gradle.kts") + +afterEvaluate { + android.applicationVariants.all { + tasks["mergeUniversalReleaseJniLibFolders"].dependsOn(tasks["rustBuildRelease"]) + tasks["mergeUniversalDebugJniLibFolders"].dependsOn(tasks["rustBuildDebug"]) + productFlavors.filter{ it.name != "universal" }.forEach { _ -> + val archAndBuildType = name.capitalize() + tasks["merge${archAndBuildType}JniLibFolders"].dependsOn(tasks["rustBuild${archAndBuildType}"]) + } + } +} diff --git a/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/proguard-rules.pro b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/proguard-rules.pro new file mode 100644 index 00000000..481bb434 --- /dev/null +++ b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/proguard-tauri.pro b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/proguard-tauri.pro new file mode 100644 index 00000000..2834690f --- /dev/null +++ b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/proguard-tauri.pro @@ -0,0 +1,24 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. + +-keep class com.unigal.ayaka_gui.TauriActivity { + getAppClass(...); + getVersion(); +} + +-keep class com.unigal.ayaka_gui.RustWebView { + public (...); + loadUrlMainThread(...); +} + +-keep class com.unigal.ayaka_gui.Ipc { + public (...); + @android.webkit.JavascriptInterface public ; +} + +-keep class com.unigal.ayaka_gui.RustWebChromeClient,com.unigal.ayaka_gui.RustWebViewClient { + public (...); +} + +-keep class com.unigal.ayaka_gui.MainActivity { + public getPluginManager(); +} diff --git a/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/AndroidManifest.xml b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/AndroidManifest.xml new file mode 100644 index 00000000..611a554b --- /dev/null +++ b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/AndroidManifest.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + diff --git a/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/java/com/unigal/ayaka_gui/MainActivity.kt b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/java/com/unigal/ayaka_gui/MainActivity.kt new file mode 100644 index 00000000..fda12cb2 --- /dev/null +++ b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/java/com/unigal/ayaka_gui/MainActivity.kt @@ -0,0 +1,7 @@ +package com.unigal.ayaka_gui + +import app.tauri.plugin.PluginManager + +class MainActivity : TauriActivity() { + var pluginManager: PluginManager = PluginManager(this) +} diff --git a/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/drawable-v24/ic_launcher_foreground.xml new file mode 100644 index 00000000..2b068d11 --- /dev/null +++ b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/drawable-v24/ic_launcher_foreground.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/drawable/ic_launcher_background.xml b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 00000000..07d5da9c --- /dev/null +++ b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/layout/activity_main.xml b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/layout/activity_main.xml new file mode 100644 index 00000000..4fc24441 --- /dev/null +++ b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,18 @@ + + + + + + \ No newline at end of file diff --git a/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/mipmap-hdpi/ic_launcher.png b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 00000000..fca39295 Binary files /dev/null and b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png new file mode 100644 index 00000000..94c84272 Binary files /dev/null and b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png differ diff --git a/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/mipmap-hdpi/ic_launcher_round.png new file mode 100644 index 00000000..fca39295 Binary files /dev/null and b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ diff --git a/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/mipmap-mdpi/ic_launcher.png b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 00000000..66d24523 Binary files /dev/null and b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png new file mode 100644 index 00000000..6df2696e Binary files /dev/null and b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png differ diff --git a/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/mipmap-mdpi/ic_launcher_round.png new file mode 100644 index 00000000..66d24523 Binary files /dev/null and b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ diff --git a/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 00000000..44416778 Binary files /dev/null and b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png new file mode 100644 index 00000000..9c7e4670 Binary files /dev/null and b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png differ diff --git a/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png new file mode 100644 index 00000000..44416778 Binary files /dev/null and b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ diff --git a/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 00000000..214868d8 Binary files /dev/null and b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png new file mode 100644 index 00000000..cff02faa Binary files /dev/null and b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png differ diff --git a/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png new file mode 100644 index 00000000..214868d8 Binary files /dev/null and b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ diff --git a/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 00000000..eb7e166b Binary files /dev/null and b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png new file mode 100644 index 00000000..f3e35bbd Binary files /dev/null and b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png differ diff --git a/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png new file mode 100644 index 00000000..eb7e166b Binary files /dev/null and b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ diff --git a/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/values-night/themes.xml b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/values-night/themes.xml new file mode 100644 index 00000000..c6182fef --- /dev/null +++ b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/values-night/themes.xml @@ -0,0 +1,16 @@ + + + + diff --git a/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/values/colors.xml b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/values/colors.xml new file mode 100644 index 00000000..f8c6127d --- /dev/null +++ b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/values/colors.xml @@ -0,0 +1,10 @@ + + + #FFBB86FC + #FF6200EE + #FF3700B3 + #FF03DAC5 + #FF018786 + #FF000000 + #FFFFFFFF + \ No newline at end of file diff --git a/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/values/strings.xml b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/values/strings.xml new file mode 100644 index 00000000..a644c60c --- /dev/null +++ b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/values/strings.xml @@ -0,0 +1,4 @@ + + ayaka-gui + ayaka-gui + \ No newline at end of file diff --git a/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/values/themes.xml b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/values/themes.xml new file mode 100644 index 00000000..8cb6e503 --- /dev/null +++ b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/values/themes.xml @@ -0,0 +1,16 @@ + + + + diff --git a/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/xml/file_paths.xml b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/xml/file_paths.xml new file mode 100644 index 00000000..782d63b9 --- /dev/null +++ b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/src/main/res/xml/file_paths.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/tauri.build.gradle.kts b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/tauri.build.gradle.kts new file mode 100644 index 00000000..961bbfe2 --- /dev/null +++ b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/app/tauri.build.gradle.kts @@ -0,0 +1,5 @@ +// THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +val implementation by configurations +dependencies { + implementation(project(":file-picker-android")) +} \ No newline at end of file diff --git a/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/build.gradle.kts b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/build.gradle.kts new file mode 100644 index 00000000..8c6fe584 --- /dev/null +++ b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/build.gradle.kts @@ -0,0 +1,25 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. +buildscript { + repositories { + google() + mavenCentral() + } + dependencies { + classpath("com.android.tools.build:gradle:7.3.1") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.10") + // NOTE: Do not place your application dependencies here; they belong + // in the individual module build.gradle files + } +} + +allprojects { + repositories { + google() + mavenCentral() + } +} + +tasks.register("clean").configure { + delete("build") +} + diff --git a/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/buildSrc/build.gradle.kts b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/buildSrc/build.gradle.kts new file mode 100644 index 00000000..2ebcbf17 --- /dev/null +++ b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/buildSrc/build.gradle.kts @@ -0,0 +1,23 @@ +plugins { + `kotlin-dsl` +} + +gradlePlugin { + plugins { + create("pluginsForCoolKids") { + id = "rustPlugin" + implementationClass = "com.unigal.RustPlugin" + } + } +} + +repositories { + google() + mavenCentral() +} + +dependencies { + compileOnly(gradleApi()) + implementation("com.android.tools.build:gradle:7.3.1") +} + diff --git a/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/gradle.properties b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/gradle.properties new file mode 100644 index 00000000..cd0519bb --- /dev/null +++ b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/gradle.properties @@ -0,0 +1,23 @@ +# Project-wide Gradle settings. +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true +# AndroidX package structure to make it clearer which packages are bundled with the +# Android operating system, and which are packaged with your app"s APK +# https://developer.android.com/topic/libraries/support-library/androidx-rn +android.useAndroidX=true +# Kotlin code style for this project: "official" or "obsolete": +kotlin.code.style=official +# Enables namespacing of each library's R class so that its R class includes only the +# resources declared in the library itself and none from the library's dependencies, +# thereby reducing the size of the R class for that library +android.nonTransitiveRClass=true \ No newline at end of file diff --git a/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/gradle/wrapper/gradle-wrapper.jar b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 00000000..e708b1c0 Binary files /dev/null and b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/gradle/wrapper/gradle-wrapper.jar differ diff --git a/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/gradle/wrapper/gradle-wrapper.properties b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..de8c362b --- /dev/null +++ b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Tue May 10 19:22:52 CST 2022 +distributionBase=GRADLE_USER_HOME +distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip +distributionPath=wrapper/dists +zipStorePath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME diff --git a/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/gradlew b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/gradlew new file mode 100644 index 00000000..4f906e0c --- /dev/null +++ b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/gradlew @@ -0,0 +1,185 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=`expr $i + 1` + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/gradlew.bat b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/gradlew.bat new file mode 100644 index 00000000..ac1b06f9 --- /dev/null +++ b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/gradlew.bat @@ -0,0 +1,89 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/settings.gradle b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/settings.gradle new file mode 100644 index 00000000..b179eac8 --- /dev/null +++ b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/settings.gradle @@ -0,0 +1,6 @@ +include ':app' + +include ':tauri-android' +project(':tauri-android').projectDir = new File('./.tauri/tauri-api') + +apply from: 'tauri.settings.gradle' diff --git a/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/tauri.settings.gradle b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/tauri.settings.gradle new file mode 100644 index 00000000..604f2986 --- /dev/null +++ b/bins/ayaka-gui/src-tauri/gen/android/ayaka_gui/tauri.settings.gradle @@ -0,0 +1,3 @@ +// THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +include ':file-picker-android' +project(':file-picker-android').projectDir = new File('./.tauri/plugins/file-picker-android') diff --git a/bins/ayaka-gui/src-tauri/gen/apple/.gitignore b/bins/ayaka-gui/src-tauri/gen/apple/.gitignore new file mode 100644 index 00000000..6aecd276 --- /dev/null +++ b/bins/ayaka-gui/src-tauri/gen/apple/.gitignore @@ -0,0 +1,2 @@ +xcuserdata/ +build/ diff --git a/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-20x20@1x.png b/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-20x20@1x.png new file mode 100644 index 00000000..8f626b44 Binary files /dev/null and b/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-20x20@1x.png differ diff --git a/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-20x20@2x-1.png b/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-20x20@2x-1.png new file mode 100644 index 00000000..2d85b49e Binary files /dev/null and b/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-20x20@2x-1.png differ diff --git a/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-20x20@2x.png b/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-20x20@2x.png new file mode 100644 index 00000000..2d85b49e Binary files /dev/null and b/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-20x20@2x.png differ diff --git a/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-20x20@3x.png b/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-20x20@3x.png new file mode 100644 index 00000000..0a0fd1f1 Binary files /dev/null and b/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-20x20@3x.png differ diff --git a/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@1x.png b/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@1x.png new file mode 100644 index 00000000..24089372 Binary files /dev/null and b/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@1x.png differ diff --git a/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@2x-1.png b/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@2x-1.png new file mode 100644 index 00000000..b8beda87 Binary files /dev/null and b/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@2x-1.png differ diff --git a/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@2x.png b/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@2x.png new file mode 100644 index 00000000..b8beda87 Binary files /dev/null and b/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@2x.png differ diff --git a/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@3x.png b/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@3x.png new file mode 100644 index 00000000..bfac23e2 Binary files /dev/null and b/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@3x.png differ diff --git a/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@1x.png b/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@1x.png new file mode 100644 index 00000000..2d85b49e Binary files /dev/null and b/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@1x.png differ diff --git a/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@2x-1.png b/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@2x-1.png new file mode 100644 index 00000000..64a7e0c4 Binary files /dev/null and b/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@2x-1.png differ diff --git a/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@2x.png b/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@2x.png new file mode 100644 index 00000000..64a7e0c4 Binary files /dev/null and b/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@2x.png differ diff --git a/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@3x.png b/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@3x.png new file mode 100644 index 00000000..be8f9d53 Binary files /dev/null and b/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@3x.png differ diff --git a/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png b/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png new file mode 100644 index 00000000..60aa4b45 Binary files /dev/null and b/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png differ diff --git a/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-512x512@2x.png b/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-512x512@2x.png new file mode 100644 index 00000000..6bbcd196 Binary files /dev/null and b/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-512x512@2x.png differ diff --git a/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-60x60@2x.png b/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-60x60@2x.png new file mode 100644 index 00000000..be8f9d53 Binary files /dev/null and b/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-60x60@2x.png differ diff --git a/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-60x60@3x.png b/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-60x60@3x.png new file mode 100644 index 00000000..fe9858c0 Binary files /dev/null and b/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-60x60@3x.png differ diff --git a/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-76x76@1x.png b/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-76x76@1x.png new file mode 100644 index 00000000..a2b3b58a Binary files /dev/null and b/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-76x76@1x.png differ diff --git a/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-76x76@2x.png b/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-76x76@2x.png new file mode 100644 index 00000000..c5e05f7a Binary files /dev/null and b/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-76x76@2x.png differ diff --git a/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-83.5x83.5@2x.png b/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-83.5x83.5@2x.png new file mode 100644 index 00000000..3c48c8b3 Binary files /dev/null and b/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-83.5x83.5@2x.png differ diff --git a/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/Contents.json b/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 00000000..90eea7ec --- /dev/null +++ b/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,116 @@ +{ + "images" : [ + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "AppIcon-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "AppIcon-20x20@3x.png", + "scale" : "3x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "AppIcon-29x29@2x-1.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "AppIcon-29x29@3x.png", + "scale" : "3x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "AppIcon-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "AppIcon-40x40@3x.png", + "scale" : "3x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "AppIcon-60x60@2x.png", + "scale" : "2x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "AppIcon-60x60@3x.png", + "scale" : "3x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "AppIcon-20x20@1x.png", + "scale" : "1x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "AppIcon-20x20@2x-1.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "AppIcon-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "AppIcon-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "AppIcon-40x40@1x.png", + "scale" : "1x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "AppIcon-40x40@2x-1.png", + "scale" : "2x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "AppIcon-76x76@1x.png", + "scale" : "1x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "AppIcon-76x76@2x.png", + "scale" : "2x" + }, + { + "size" : "83.5x83.5", + "idiom" : "ipad", + "filename" : "AppIcon-83.5x83.5@2x.png", + "scale" : "2x" + }, + { + "size" : "1024x1024", + "idiom" : "ios-marketing", + "filename" : "AppIcon-512@2x.png", + "scale" : "1x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/Contents.json b/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/Contents.json new file mode 100644 index 00000000..da4a164c --- /dev/null +++ b/bins/ayaka-gui/src-tauri/gen/apple/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/bins/ayaka-gui/src-tauri/gen/apple/ExportOptions.plist b/bins/ayaka-gui/src-tauri/gen/apple/ExportOptions.plist new file mode 100644 index 00000000..b69cf1de --- /dev/null +++ b/bins/ayaka-gui/src-tauri/gen/apple/ExportOptions.plist @@ -0,0 +1,8 @@ + + + + + method + development + + diff --git a/bins/ayaka-gui/src-tauri/gen/apple/Externals/.gitignore b/bins/ayaka-gui/src-tauri/gen/apple/Externals/.gitignore new file mode 100644 index 00000000..a285baf6 --- /dev/null +++ b/bins/ayaka-gui/src-tauri/gen/apple/Externals/.gitignore @@ -0,0 +1,2 @@ +debug/ +release/ diff --git a/bins/ayaka-gui/src-tauri/gen/apple/Podfile b/bins/ayaka-gui/src-tauri/gen/apple/Podfile new file mode 100644 index 00000000..90139a57 --- /dev/null +++ b/bins/ayaka-gui/src-tauri/gen/apple/Podfile @@ -0,0 +1,21 @@ +# Uncomment the next line to define a global platform for your project + +target 'ayaka-gui_iOS' do +platform :ios, '14.0' + # Pods for ayaka-gui_iOS +end + +target 'ayaka-gui_macOS' do +platform :osx, '11.0' + # Pods for ayaka-gui_macOS +end + +# Delete the deployment target for iOS and macOS, causing it to be inherited from the Podfile +post_install do |installer| + installer.pods_project.targets.each do |target| + target.build_configurations.each do |config| + config.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET' + config.build_settings.delete 'MACOSX_DEPLOYMENT_TARGET' + end + end +end diff --git a/bins/ayaka-gui/src-tauri/gen/apple/Sources/ayaka-gui/bindings/bindings.h b/bins/ayaka-gui/src-tauri/gen/apple/Sources/ayaka-gui/bindings/bindings.h new file mode 100644 index 00000000..51522007 --- /dev/null +++ b/bins/ayaka-gui/src-tauri/gen/apple/Sources/ayaka-gui/bindings/bindings.h @@ -0,0 +1,8 @@ +#pragma once + +namespace ffi { + extern "C" { + void start_app(); + } +} + diff --git a/bins/ayaka-gui/src-tauri/gen/apple/Sources/ayaka-gui/main.mm b/bins/ayaka-gui/src-tauri/gen/apple/Sources/ayaka-gui/main.mm new file mode 100644 index 00000000..7793a9d5 --- /dev/null +++ b/bins/ayaka-gui/src-tauri/gen/apple/Sources/ayaka-gui/main.mm @@ -0,0 +1,6 @@ +#include "bindings/bindings.h" + +int main(int argc, char * argv[]) { + ffi::start_app(); + return 0; +} diff --git a/bins/ayaka-gui/src-tauri/gen/apple/ayaka-gui.xcodeproj/project.pbxproj b/bins/ayaka-gui/src-tauri/gen/apple/ayaka-gui.xcodeproj/project.pbxproj new file mode 100644 index 00000000..6560b70c --- /dev/null +++ b/bins/ayaka-gui/src-tauri/gen/apple/ayaka-gui.xcodeproj/project.pbxproj @@ -0,0 +1,492 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + 0CBDD357117FAEC5D89D5482 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CEBE98C9001BA738BB51E223 /* QuartzCore.framework */; }; + 0FE6867EC84D5801E482C18F /* MetalKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5D287069D256FE38137744D0 /* MetalKit.framework */; }; + 4917B737EF5837B06C68EEFE /* main.mm in Sources */ = {isa = PBXBuildFile; fileRef = AC0978CE50F1C022143D0BDA /* main.mm */; }; + 50428C9729CC31C9003D4B1A /* UniformTypeIdentifiers.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 50428C9629CC31C9003D4B1A /* UniformTypeIdentifiers.framework */; }; + 8E45888FED210D5D539EA5B5 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 435C8BA84E1A66CBDC0AF268 /* UIKit.framework */; }; + A97E96E4829B22DADD7A586D /* assets in Resources */ = {isa = PBXBuildFile; fileRef = 742C4E3AE13F30716727AD1E /* assets */; }; + AD3575B49A10277C11DD3DC6 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7AF4B6880F0FB638558AB0EB /* Security.framework */; }; + AF4428BF663A847EF29C584B /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BC18D8216F33DEF5C4D1B05A /* Metal.framework */; }; + CE55D4488CE2AEFA45553ADD /* libayaka_gui_lib.a in Frameworks */ = {isa = PBXBuildFile; fileRef = C731FF0818A0018979DF7EA7 /* libayaka_gui_lib.a */; }; + E888DFA3181D1FA78AA16D3C /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = FB21B17CE7EF4E6DEF0D7866 /* Assets.xcassets */; }; + ED86986BA94EB9547130D068 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00A2B4DAFDAEFB22747D72DF /* CoreGraphics.framework */; }; + FA5AA78866423126F2650495 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 743602BB3ED0EEA7168A12D9 /* WebKit.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 00A2B4DAFDAEFB22747D72DF /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; + 435C8BA84E1A66CBDC0AF268 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; + 50428C9629CC31C9003D4B1A /* UniformTypeIdentifiers.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UniformTypeIdentifiers.framework; path = System/Library/Frameworks/UniformTypeIdentifiers.framework; sourceTree = SDKROOT; }; + 590AB4E79B1008E49184AA4D /* ayaka-gui.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "ayaka-gui.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 5D287069D256FE38137744D0 /* MetalKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MetalKit.framework; path = System/Library/Frameworks/MetalKit.framework; sourceTree = SDKROOT; }; + 742C4E3AE13F30716727AD1E /* assets */ = {isa = PBXFileReference; lastKnownFileType = folder; path = assets; sourceTree = SOURCE_ROOT; }; + 743602BB3ED0EEA7168A12D9 /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; }; + 7779FDE860C09A21880BB253 /* main.rs */ = {isa = PBXFileReference; lastKnownFileType = text; path = main.rs; sourceTree = ""; }; + 7AF4B6880F0FB638558AB0EB /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; }; + 9BD1F62E510E0A4862C6AD62 /* lib.rs */ = {isa = PBXFileReference; lastKnownFileType = text; path = lib.rs; sourceTree = ""; }; + 9E3A98A865C1823B1C6754B7 /* bindings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bindings.h; sourceTree = ""; }; + AC0978CE50F1C022143D0BDA /* main.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = main.mm; sourceTree = ""; }; + BA39914C8AE1D42D950C3744 /* settings.rs */ = {isa = PBXFileReference; lastKnownFileType = text; path = settings.rs; sourceTree = ""; }; + BC18D8216F33DEF5C4D1B05A /* Metal.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Metal.framework; path = System/Library/Frameworks/Metal.framework; sourceTree = SDKROOT; }; + BC26CDE0238E8A8814BD1C52 /* mobile.rs */ = {isa = PBXFileReference; lastKnownFileType = text; path = mobile.rs; sourceTree = ""; }; + C731FF0818A0018979DF7EA7 /* libayaka_gui_lib.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libayaka_gui_lib.a; sourceTree = ""; }; + CEBE98C9001BA738BB51E223 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; + F8437775BA743714F7B3496A /* asset_resolver.rs */ = {isa = PBXFileReference; lastKnownFileType = text; path = asset_resolver.rs; sourceTree = ""; }; + FB21B17CE7EF4E6DEF0D7866 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 68C91F2ADB689765D20BED9E /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + CE55D4488CE2AEFA45553ADD /* libayaka_gui_lib.a in Frameworks */, + ED86986BA94EB9547130D068 /* CoreGraphics.framework in Frameworks */, + AF4428BF663A847EF29C584B /* Metal.framework in Frameworks */, + 50428C9729CC31C9003D4B1A /* UniformTypeIdentifiers.framework in Frameworks */, + 0FE6867EC84D5801E482C18F /* MetalKit.framework in Frameworks */, + 0CBDD357117FAEC5D89D5482 /* QuartzCore.framework in Frameworks */, + AD3575B49A10277C11DD3DC6 /* Security.framework in Frameworks */, + 8E45888FED210D5D539EA5B5 /* UIKit.framework in Frameworks */, + FA5AA78866423126F2650495 /* WebKit.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 25D8D3E3BDDD0E5204B942E8 /* bindings */ = { + isa = PBXGroup; + children = ( + 9E3A98A865C1823B1C6754B7 /* bindings.h */, + ); + path = bindings; + sourceTree = ""; + }; + 673545F42A53A12CD454362A /* Sources */ = { + isa = PBXGroup; + children = ( + 8405B9C94882DA381657A038 /* ayaka-gui */, + ); + path = Sources; + sourceTree = ""; + }; + 8405B9C94882DA381657A038 /* ayaka-gui */ = { + isa = PBXGroup; + children = ( + AC0978CE50F1C022143D0BDA /* main.mm */, + 25D8D3E3BDDD0E5204B942E8 /* bindings */, + ); + path = "ayaka-gui"; + sourceTree = ""; + }; + B1936D7EE8086293F73C7EFF /* Externals */ = { + isa = PBXGroup; + children = ( + ); + path = Externals; + sourceTree = ""; + }; + BA23C4293E9A23C4FB4285AE /* Frameworks */ = { + isa = PBXGroup; + children = ( + 50428C9629CC31C9003D4B1A /* UniformTypeIdentifiers.framework */, + 00A2B4DAFDAEFB22747D72DF /* CoreGraphics.framework */, + C731FF0818A0018979DF7EA7 /* libayaka_gui_lib.a */, + BC18D8216F33DEF5C4D1B05A /* Metal.framework */, + 5D287069D256FE38137744D0 /* MetalKit.framework */, + CEBE98C9001BA738BB51E223 /* QuartzCore.framework */, + 7AF4B6880F0FB638558AB0EB /* Security.framework */, + 435C8BA84E1A66CBDC0AF268 /* UIKit.framework */, + 743602BB3ED0EEA7168A12D9 /* WebKit.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + BAF3CBDDBED020EE0FC84B9C /* Products */ = { + isa = PBXGroup; + children = ( + 590AB4E79B1008E49184AA4D /* ayaka-gui.app */, + ); + name = Products; + sourceTree = ""; + }; + EBE7D5E3B1F6F0448BC87FCD = { + isa = PBXGroup; + children = ( + 742C4E3AE13F30716727AD1E /* assets */, + FB21B17CE7EF4E6DEF0D7866 /* Assets.xcassets */, + B1936D7EE8086293F73C7EFF /* Externals */, + 673545F42A53A12CD454362A /* Sources */, + F3106D15CF02FDFA227B3E3B /* src */, + BA23C4293E9A23C4FB4285AE /* Frameworks */, + BAF3CBDDBED020EE0FC84B9C /* Products */, + ); + sourceTree = ""; + }; + F3106D15CF02FDFA227B3E3B /* src */ = { + isa = PBXGroup; + children = ( + F8437775BA743714F7B3496A /* asset_resolver.rs */, + 9BD1F62E510E0A4862C6AD62 /* lib.rs */, + 7779FDE860C09A21880BB253 /* main.rs */, + BC26CDE0238E8A8814BD1C52 /* mobile.rs */, + BA39914C8AE1D42D950C3744 /* settings.rs */, + ); + name = src; + path = ../../src; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 044A0072E0A5766B5A9FE4AE /* ayaka-gui_iOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = 7328ECEA50DDCA89242C10FC /* Build configuration list for PBXNativeTarget "ayaka-gui_iOS" */; + buildPhases = ( + 076D75A4ABB4B12D410227B2 /* Build Rust Code */, + 519B7D1055DDCA0096E66FF5 /* Sources */, + 9669FC0C8FCAC1F12EE1AD75 /* Resources */, + 68C91F2ADB689765D20BED9E /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "ayaka-gui_iOS"; + productName = "ayaka-gui_iOS"; + productReference = 590AB4E79B1008E49184AA4D /* ayaka-gui.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + C409D6CFB5A706F11CE708BE /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 1200; + TargetAttributes = { + 044A0072E0A5766B5A9FE4AE = { + DevelopmentTeam = DCX6WL5KCS; + }; + }; + }; + buildConfigurationList = E9216210172BFBAC7DA498B8 /* Build configuration list for PBXProject "ayaka-gui" */; + compatibilityVersion = "Xcode 11.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + Base, + en, + ); + mainGroup = EBE7D5E3B1F6F0448BC87FCD; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 044A0072E0A5766B5A9FE4AE /* ayaka-gui_iOS */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 9669FC0C8FCAC1F12EE1AD75 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + E888DFA3181D1FA78AA16D3C /* Assets.xcassets in Resources */, + A97E96E4829B22DADD7A586D /* assets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 076D75A4ABB4B12D410227B2 /* Build Rust Code */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + name = "Build Rust Code"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(SRCROOT)/target/aarch64-apple-ios/${CONFIGURATION}/deps/libayaka_gui_lib.a", + "$(SRCROOT)/target/x86_64-apple-ios/${CONFIGURATION}/deps/libayaka_gui_lib.a", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "tauri ios xcode-script -v --platform ${PLATFORM_DISPLAY_NAME:?} --sdk-root ${SDKROOT:?} --framework-search-paths \"${FRAMEWORK_SEARCH_PATHS:?}\" --header-search-paths \"${HEADER_SEARCH_PATHS:?}\" --gcc-preprocessor-definitions \"${GCC_PREPROCESSOR_DEFINITIONS:-}\" --configuration ${CONFIGURATION:?} ${FORCE_COLOR} ${ARCHS:?}"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 519B7D1055DDCA0096E66FF5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4917B737EF5837B06C68EEFE /* main.mm in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 3C02134CF3636EBC4441D1BE /* release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + ARCHS = ( + arm64, + x86_64, + ); + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_ENTITLEMENTS = "ayaka-gui_iOS/Entitlements.plist"; + CODE_SIGN_IDENTITY = "iPhone Developer"; + DEVELOPMENT_TEAM = DCX6WL5KCS; + ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "\".\"", + ); + INFOPLIST_FILE = "ayaka-gui_iOS/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + "LIBRARY_SEARCH_PATHS[arch=arm64-sim]" = ( + "$(inherited)", + "$(PROJECT_DIR)/Externals/$(CONFIGURATION)", + "$(SDKROOT)/usr/lib/swift", + "$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)", + "$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)", + ); + "LIBRARY_SEARCH_PATHS[arch=arm64]" = ( + "$(inherited)", + "$(PROJECT_DIR)/Externals/$(CONFIGURATION)", + "$(SDKROOT)/usr/lib/swift", + "$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)", + "$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)", + ); + "LIBRARY_SEARCH_PATHS[arch=x86_64]" = ( + "$(inherited)", + "$(PROJECT_DIR)/Externals/$(CONFIGURATION)", + "$(SDKROOT)/usr/lib/swift", + "$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)", + "$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.unigal.ayaka-gui"; + PRODUCT_NAME = "ayaka-gui"; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALID_ARCHS = "arm64 x86_64"; + }; + name = release; + }; + 4F2B574A2AA2B38236BE7F23 /* release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + SWIFT_VERSION = 5.0; + }; + name = release; + }; + 55400D12033942D4E23BF738 /* debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "$(inherited)", + "DEBUG=1", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + }; + name = debug; + }; + 9EA1FF93ECA3138DD84E6ACC /* debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + ARCHS = ( + arm64, + x86_64, + ); + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_ENTITLEMENTS = "ayaka-gui_iOS/Entitlements.plist"; + CODE_SIGN_IDENTITY = "iPhone Developer"; + DEVELOPMENT_TEAM = DCX6WL5KCS; + ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "\".\"", + ); + INFOPLIST_FILE = "ayaka-gui_iOS/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + "LIBRARY_SEARCH_PATHS[arch=arm64-sim]" = ( + "$(inherited)", + "$(PROJECT_DIR)/Externals/$(CONFIGURATION)", + "$(SDKROOT)/usr/lib/swift", + "$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)", + "$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)", + ); + "LIBRARY_SEARCH_PATHS[arch=arm64]" = ( + "$(inherited)", + "$(PROJECT_DIR)/Externals/$(CONFIGURATION)", + "$(SDKROOT)/usr/lib/swift", + "$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)", + "$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)", + ); + "LIBRARY_SEARCH_PATHS[arch=x86_64]" = ( + "$(inherited)", + "$(PROJECT_DIR)/Externals/$(CONFIGURATION)", + "$(SDKROOT)/usr/lib/swift", + "$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)", + "$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.unigal.ayaka-gui"; + PRODUCT_NAME = "ayaka-gui"; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALID_ARCHS = "arm64 x86_64"; + }; + name = debug; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 7328ECEA50DDCA89242C10FC /* Build configuration list for PBXNativeTarget "ayaka-gui_iOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9EA1FF93ECA3138DD84E6ACC /* debug */, + 3C02134CF3636EBC4441D1BE /* release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = debug; + }; + E9216210172BFBAC7DA498B8 /* Build configuration list for PBXProject "ayaka-gui" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 55400D12033942D4E23BF738 /* debug */, + 4F2B574A2AA2B38236BE7F23 /* release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = debug; + }; +/* End XCConfigurationList section */ + }; + rootObject = C409D6CFB5A706F11CE708BE /* Project object */; +} diff --git a/bins/ayaka-gui/src-tauri/gen/apple/ayaka-gui.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/bins/ayaka-gui/src-tauri/gen/apple/ayaka-gui.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..919434a6 --- /dev/null +++ b/bins/ayaka-gui/src-tauri/gen/apple/ayaka-gui.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/bins/ayaka-gui/src-tauri/gen/apple/ayaka-gui.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/bins/ayaka-gui/src-tauri/gen/apple/ayaka-gui.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000..18d98100 --- /dev/null +++ b/bins/ayaka-gui/src-tauri/gen/apple/ayaka-gui.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/bins/ayaka-gui/src-tauri/gen/apple/ayaka-gui.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/bins/ayaka-gui/src-tauri/gen/apple/ayaka-gui.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 00000000..ac90d5ac --- /dev/null +++ b/bins/ayaka-gui/src-tauri/gen/apple/ayaka-gui.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,10 @@ + + + + + BuildSystemType + Original + DisableBuildSystemDeprecationDiagnostic + + + diff --git a/bins/ayaka-gui/src-tauri/gen/apple/ayaka-gui.xcodeproj/xcshareddata/xcschemes/ayaka-gui_iOS.xcscheme b/bins/ayaka-gui/src-tauri/gen/apple/ayaka-gui.xcodeproj/xcshareddata/xcschemes/ayaka-gui_iOS.xcscheme new file mode 100644 index 00000000..d47a2132 --- /dev/null +++ b/bins/ayaka-gui/src-tauri/gen/apple/ayaka-gui.xcodeproj/xcshareddata/xcschemes/ayaka-gui_iOS.xcscheme @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bins/ayaka-gui/src-tauri/gen/apple/ayaka-gui_iOS/Entitlements.plist b/bins/ayaka-gui/src-tauri/gen/apple/ayaka-gui_iOS/Entitlements.plist new file mode 100644 index 00000000..5516ebf3 --- /dev/null +++ b/bins/ayaka-gui/src-tauri/gen/apple/ayaka-gui_iOS/Entitlements.plist @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/bins/ayaka-gui/src-tauri/gen/apple/ayaka-gui_iOS/Info.plist b/bins/ayaka-gui/src-tauri/gen/apple/ayaka-gui_iOS/Info.plist new file mode 100644 index 00000000..ed086acd --- /dev/null +++ b/bins/ayaka-gui/src-tauri/gen/apple/ayaka-gui_iOS/Info.plist @@ -0,0 +1,49 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 0.2.0 + CFBundleVersion + 0.2.0 + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + NSAppTransportSecurity + + NSAllowsArbitraryLoads + + + UIRequiredDeviceCapabilities + + arm64 + metal + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/bins/ayaka-gui/src-tauri/gen/apple/project.yml b/bins/ayaka-gui/src-tauri/gen/apple/project.yml new file mode 100644 index 00000000..47daa484 --- /dev/null +++ b/bins/ayaka-gui/src-tauri/gen/apple/project.yml @@ -0,0 +1,86 @@ +name: ayaka-gui +options: + bundleIdPrefix: com.unigal + deploymentTarget: + iOS: 14.0 +fileGroups: [../../src] +configs: + debug: debug + release: release +settingGroups: + app: + base: + PRODUCT_NAME: ayaka-gui + PRODUCT_BUNDLE_IDENTIFIER: com.unigal.ayaka-gui + DEVELOPMENT_TEAM: DCX6WL5KCS +targetTemplates: + app: + type: application + sources: + - path: Sources + scheme: + environmentVariables: + RUST_BACKTRACE: full + RUST_LOG: info + settings: + groups: [app] +targets: + ayaka-gui_iOS: + type: application + platform: iOS + sources: + - path: Sources + - path: Assets.xcassets + - path: Externals + - path: assets + buildPhase: resources + type: folder + info: + path: ayaka-gui_iOS/Info.plist + properties: + LSRequiresIPhoneOS: true + UILaunchStoryboardName: LaunchScreen + UIRequiredDeviceCapabilities: [arm64, metal] + UISupportedInterfaceOrientations: + - UIInterfaceOrientationPortrait + - UIInterfaceOrientationLandscapeLeft + - UIInterfaceOrientationLandscapeRight + UISupportedInterfaceOrientations~ipad: + - UIInterfaceOrientationPortrait + - UIInterfaceOrientationPortraitUpsideDown + - UIInterfaceOrientationLandscapeLeft + - UIInterfaceOrientationLandscapeRight + CFBundleShortVersionString: 0.2.0 + CFBundleVersion: 0.2.0 + scheme: + environmentVariables: + RUST_BACKTRACE: full + RUST_LOG: info + settings: + base: + ENABLE_BITCODE: false + ARCHS: [arm64, x86_64] + VALID_ARCHS: arm64 x86_64 + LIBRARY_SEARCH_PATHS[arch=x86_64]: $(inherited) $(PROJECT_DIR)/Externals/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME) + LIBRARY_SEARCH_PATHS[arch=arm64]: $(inherited) $(PROJECT_DIR)/Externals/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME) + LIBRARY_SEARCH_PATHS[arch=arm64-sim]: $(inherited) $(PROJECT_DIR)/Externals/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME) + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES: true + groups: [app] + dependencies: + - framework: libayaka_gui_lib.a + embed: false + - sdk: CoreGraphics.framework + - sdk: Metal.framework + - sdk: MetalKit.framework + - sdk: QuartzCore.framework + - sdk: Security.framework + - sdk: UIKit.framework + - sdk: WebKit.framework + - sdk: UniformTypeIdentifiers.framework + preBuildScripts: + - script: cargo tauri ios xcode-script -v --platform ${PLATFORM_DISPLAY_NAME:?} --sdk-root ${SDKROOT:?} --framework-search-paths "${FRAMEWORK_SEARCH_PATHS:?}" --header-search-paths "${HEADER_SEARCH_PATHS:?}" --gcc-preprocessor-definitions "${GCC_PREPROCESSOR_DEFINITIONS:-}" --configuration ${CONFIGURATION:?} ${FORCE_COLOR} ${ARCHS:?} + name: Build Rust Code + basedOnDependencyAnalysis: false + outputFiles: + - $(SRCROOT)/target/aarch64-apple-ios/${CONFIGURATION}/deps/libayaka_gui_lib.a + - $(SRCROOT)/target/x86_64-apple-ios/${CONFIGURATION}/deps/libayaka_gui_lib.a \ No newline at end of file diff --git a/bins/ayaka-gui/src-tauri/src/asset_resolver.rs b/bins/ayaka-gui/src-tauri/src/asset_resolver.rs index 9576e154..6401faf1 100644 --- a/bins/ayaka-gui/src-tauri/src/asset_resolver.rs +++ b/bins/ayaka-gui/src-tauri/src/asset_resolver.rs @@ -146,7 +146,7 @@ async fn resolver(app: AppHandle, req: Request) -> impl Int pub fn init(listener: TcpListener) -> TauriPlugin { Builder::new("asset_resolver") - .setup(move |app| { + .setup(move |app, _| { let app = app.clone(); tauri::async_runtime::spawn(async { let app = Router::new() diff --git a/bins/ayaka-gui/src-tauri/src/dir_resolver.rs b/bins/ayaka-gui/src-tauri/src/dir_resolver.rs new file mode 100644 index 00000000..5e69a71d --- /dev/null +++ b/bins/ayaka-gui/src-tauri/src/dir_resolver.rs @@ -0,0 +1,49 @@ +#[cfg(target_os = "android")] +mod r#impl { + use std::path::{Path, PathBuf}; + use tauri::App; + + pub struct DirResolver(String); + + impl DirResolver { + pub fn new(app: &App) -> Self { + Self(app.config().tauri.bundle.identifier.clone()) + } + + fn app_data_dir_base() -> &'static Path { + Path::new("/data/app") + } + + pub fn app_local_data_dir(&self) -> Option { + Some(Self::app_data_dir_base().join(&self.0)) + } + + pub fn app_config_dir(&self) -> Option { + Some(Self::app_data_dir_base().join(&self.0)) + } + } +} + +#[cfg(not(target_os = "android"))] +mod r#impl { + use std::ops::Deref; + use tauri::{App, PathResolver}; + + pub struct DirResolver(PathResolver); + + impl DirResolver { + pub fn new(app: &App) -> Self { + Self(app.path_resolver()) + } + } + + impl Deref for DirResolver { + type Target = PathResolver; + + fn deref(&self) -> &Self::Target { + &self.0 + } + } +} + +pub use r#impl::*; diff --git a/bins/ayaka-gui/src-tauri/src/lib.rs b/bins/ayaka-gui/src-tauri/src/lib.rs new file mode 100644 index 00000000..fae308cc --- /dev/null +++ b/bins/ayaka-gui/src-tauri/src/lib.rs @@ -0,0 +1,452 @@ +#![feature(once_cell)] +#![feature(read_buf)] +#![feature(return_position_impl_trait_in_trait)] +#![allow(incomplete_features)] + +mod asset_resolver; +mod dir_resolver; +mod settings; + +#[cfg(mobile)] +mod mobile; + +use ayaka_model::{ + anyhow::{self, Result}, + vfs::VfsPath, + *, +}; +use ayaka_plugin_wasmi::{WasmiLinker, WasmiModule}; +use dir_resolver::DirResolver; +use serde::{Deserialize, Serialize}; +use settings::*; +use std::{ + collections::{HashMap, HashSet}, + fmt::Display, + net::TcpListener, + path::PathBuf, + pin::pin, +}; +use tauri::{ + async_runtime::RwLock, command, utils::config::AppUrl, AppHandle, Manager, State, Window, + WindowUrl, +}; +use vfs_tar::TarFS; + +type CommandResult = Result; + +#[derive(Debug, Default, Serialize)] +struct CommandError { + msg: String, +} + +impl> From for CommandError { + fn from(e: E) -> Self { + Self { + msg: e.into().to_string(), + } + } +} + +impl Display for CommandError { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.write_str(&self.msg) + } +} + +#[command] +fn ayaka_version() -> &'static str { + ayaka_model::version() +} + +struct Storage { + config: Vec, + dist_port: u16, + model: RwLock>, +} + +impl Storage { + pub fn new(resolver: &DirResolver, config: Vec, dist_port: u16) -> Self { + let manager = FileSettingsManager::new(resolver); + Self { + config, + dist_port, + model: RwLock::new(GameViewModel::new(manager)), + } + } +} + +#[derive(Debug, Serialize, Deserialize)] +struct GameInfo { + pub title: String, + pub author: String, + pub props: HashMap, +} + +impl GameInfo { + pub fn new(game: &Game) -> Self { + Self { + title: game.config.title.clone(), + author: game.config.author.clone(), + props: game.config.props.clone(), + } + } +} + +#[command] +fn dist_port(storage: State) -> u16 { + storage.dist_port +} + +#[cfg(desktop)] +async fn show_pick_files(_handle: &AppHandle, window: &Window) -> Result> { + tauri::api::dialog::blocking::FileDialogBuilder::new() + .add_filter("Ayaka package", &["ayapack"]) + .set_parent(&window) + .pick_files() + .unwrap_or_default() + .into_iter() + .map(|p| { + TarFS::new_mmap(p) + .map(VfsPath::from) + .map_err(anyhow::Error::from) + }) + .collect() +} + +#[cfg(target_os = "ios")] +async fn show_pick_files(_handle: &AppHandle, window: &Window) -> Result> { + let (tx, rx) = tokio::sync::oneshot::channel(); + window.with_webview(move |webview| { + let picked = file_picker_ios::pick_files(webview.view_controller(), &["ayapack"]); + tx.send(picked).ok(); + })?; + let picked = rx.await?; + let paths = picked + .map(|file| { + TarFS::new(file) + .map(VfsPath::from) + .map_err(anyhow::Error::from) + }) + .try_collect::>() + .await?; + Ok(paths) +} + +#[cfg(target_os = "android")] +async fn show_pick_files(handle: &AppHandle, _window: &Window) -> Result> { + handle + .state::>() + .pick_files()? + .into_iter() + .map(|p| { + TarFS::new_mmap(p) + .map(VfsPath::from) + .map_err(anyhow::Error::from) + }) + .collect() +} + +#[command] +async fn open_game(handle: AppHandle, storage: State<'_, Storage>) -> CommandResult<()> { + let window = handle.get_window("main").expect("cannot get main window"); + + const OPEN_STATUS_EVENT: &str = "ayaka://open_status"; + let mut model = storage.model.write().await; + let linker = WasmiLinker::new(())?; + let builder = ContextBuilder::::new(FrontendType::Html, linker); + let builder = if storage.config.is_empty() { + let files = show_pick_files(&handle, &window).await?; + builder.with_vfs(&files)? + } else { + builder.with_paths(&storage.config)? + }; + { + let context = builder.open(); + let mut context = pin!(context); + while let Some(status) = context.next().await { + handle.emit_all(OPEN_STATUS_EVENT, status)?; + } + let context = model.open_game(context.await?); + let mut context = pin!(context); + while let Some(status) = context.next().await { + handle.emit_all(OPEN_STATUS_EVENT, status)?; + } + context.await?; + } + + asset_resolver::ROOT_PATH + .set(model.context().root_path().clone()) + .expect("cannot set ROOT_PATH"); + + #[cfg(desktop)] + { + window.set_title(&model.context().game().config.title)?; + } + + Ok(()) +} + +#[command] +async fn get_settings(storage: State<'_, Storage>) -> CommandResult { + Ok(storage.model.read().await.settings().clone()) +} + +#[command] +async fn set_settings(settings: Settings, storage: State<'_, Storage>) -> CommandResult<()> { + storage.model.write().await.set_settings(settings); + Ok(()) +} + +#[command] +async fn get_records(storage: State<'_, Storage>) -> CommandResult> { + Ok(storage.model.read().await.records_text().collect()) +} + +#[command] +async fn save_record_to(index: usize, storage: State<'_, Storage>) -> CommandResult<()> { + storage.model.write().await.save_current_to(index); + Ok(()) +} + +#[command] +async fn save_all(storage: State<'_, Storage>) -> CommandResult<()> { + storage.model.read().await.save_settings()?; + Ok(()) +} + +#[command] +async fn avaliable_locale( + storage: State<'_, Storage>, + locales: HashSet, +) -> CommandResult> { + Ok(storage + .model + .read() + .await + .avaliable_locale() + .cloned() + .collect::>() + .intersection(&locales) + .cloned() + .collect()) +} + +#[command] +async fn choose_locale( + storage: State<'_, Storage>, + locales: HashSet, +) -> CommandResult> { + let locales = avaliable_locale(storage, locales).await?; + let current = Locale::current(); + log::debug!("Choose {} from {:?}", current, locales); + Ok(current.choose_from(&locales).cloned()) +} + +#[command] +async fn info(storage: State<'_, Storage>) -> CommandResult> { + Ok(Some(GameInfo::new( + storage.model.read().await.context().game(), + ))) +} + +#[command] +async fn start_new(storage: State<'_, Storage>) -> CommandResult<()> { + storage.model.write().await.init_new(); + Ok(()) +} + +#[command] +async fn start_record(index: usize, storage: State<'_, Storage>) -> CommandResult<()> { + storage.model.write().await.init_context_by_index(index); + Ok(()) +} + +#[command] +async fn next_run(storage: State<'_, Storage>) -> CommandResult { + loop { + let mut model = storage.model.write().await; + if model.next_run() { + let is_empty = { + let action = model + .current_action() + .expect("current action cannot be None because next_run succeeds"); + match action { + Action::Empty => true, + Action::Custom(vars) => !vars.contains_key("video"), + _ => false, + } + }; + if !is_empty { + return Ok(true); + } + } else { + return Ok(false); + } + } +} + +#[command] +async fn next_back_run(storage: State<'_, Storage>) -> CommandResult { + Ok(storage.model.write().await.next_back_run()) +} + +#[command] +async fn current_visited(storage: State<'_, Storage>) -> CommandResult { + Ok(storage.model.read().await.current_visited()) +} + +#[command] +async fn current_run(storage: State<'_, Storage>) -> CommandResult> { + Ok(storage.model.read().await.current_run().cloned()) +} + +#[command] +async fn current_action( + storage: State<'_, Storage>, +) -> CommandResult)>> { + Ok(storage.model.read().await.current_actions()) +} + +#[command] +async fn current_title(storage: State<'_, Storage>) -> CommandResult> { + Ok(storage.model.read().await.current_title().cloned()) +} + +#[command] +async fn switch(i: usize, storage: State<'_, Storage>) -> CommandResult<()> { + storage.model.write().await.switch(i); + Ok(()) +} + +#[command] +async fn history(storage: State<'_, Storage>) -> CommandResult)>> { + Ok(storage.model.read().await.current_history().rev().collect()) +} + +pub fn run() -> Result<()> { + let listener = TcpListener::bind("127.0.0.1:0")?; + let port = listener.local_addr()?.port(); + let builder = tauri::Builder::default().plugin(asset_resolver::init(listener)); + #[cfg(desktop)] + let builder = builder.plugin(tauri_plugin_window_state::Builder::default().build()); + #[cfg(target_os = "android")] + let builder = builder.plugin(file_picker_android::init()); + builder + .setup(move |app| { + let resolver = DirResolver::new(app); + #[cfg(target_os = "android")] + { + use android_logger::{Config, FilterBuilder}; + use log::LevelFilter; + + android_logger::init_once( + Config::default().with_filter( + FilterBuilder::new() + .filter_module("ayaka", LevelFilter::Debug) + .filter_module("tower_http", LevelFilter::Debug) + .filter(None, LevelFilter::Warn) + .build(), + ), + ); + } + #[cfg(desktop)] + { + use flexi_logger::{FileSpec, LogSpecification, Logger}; + + let spec = LogSpecification::parse("warn,ayaka=debug,tower_http=debug")?; + let log_handle = if cfg!(debug_assertions) { + Logger::with(spec) + .log_to_stdout() + .set_palette("b1;3;2;4;6".to_string()) + .use_utc() + .start()? + } else { + Logger::with(spec) + .log_to_file( + FileSpec::default() + .directory(resolver.app_log_dir().expect("cannot get app log dir")) + .basename("ayaka-gui"), + ) + .use_utc() + .start()? + }; + app.manage(log_handle); + } + #[cfg(debug_assertions)] + { + let window = app.get_window("main").expect("cannot get main window"); + window.open_devtools(); + } + + use serde_json::Value; + + let matches = app.get_cli_matches()?; + let config = match &matches.args["config"].value { + Value::String(s) => vec![PathBuf::from(s)], + Value::Array(arr) => arr + .iter() + .filter_map(|v| v.as_str()) + .map(PathBuf::from) + .collect::>(), + _ => { + let current = std::env::current_exe()?; + let current = current + .parent() + .expect("cannot get parent dir of current exe"); + let mut paths = vec![]; + + let data = current.join("data.ayapack"); + if data.exists() { + paths.push(data); + paths.extend( + ('a'..='z') + .map(|c| current.join(format!("data.{}.ayapack", c))) + .filter(|p| p.exists()), + ); + } else { + let current_config = current.join("config.yaml"); + if current_config.exists() { + paths.push(current_config); + } + } + + paths + } + }; + app.manage(Storage::new(&resolver, config, port)); + Ok(()) + }) + .invoke_handler(tauri::generate_handler![ + ayaka_version, + dist_port, + open_game, + get_settings, + set_settings, + get_records, + save_record_to, + save_all, + avaliable_locale, + choose_locale, + info, + start_new, + start_record, + next_run, + next_back_run, + current_run, + current_action, + current_title, + current_visited, + switch, + history, + ]) + .run({ + let mut context = tauri::generate_context!(); + context.config_mut().build.dist_dir = AppUrl::Url(WindowUrl::External( + format!("http://127.0.0.1:{port}") + .parse() + .expect("cannot parse url"), + )); + context + })?; + Ok(()) +} diff --git a/bins/ayaka-gui/src-tauri/src/main.rs b/bins/ayaka-gui/src-tauri/src/main.rs index 833a5fde..85023d55 100644 --- a/bins/ayaka-gui/src-tauri/src/main.rs +++ b/bins/ayaka-gui/src-tauri/src/main.rs @@ -2,371 +2,9 @@ all(not(debug_assertions), target_os = "windows"), windows_subsystem = "windows" )] -#![feature(once_cell)] -#![feature(read_buf)] -#![feature(return_position_impl_trait_in_trait)] -#![allow(incomplete_features)] -mod asset_resolver; -mod settings; +use ayaka_model::anyhow::Result; -use ayaka_model::{ - anyhow::{self, Result}, - *, -}; -use ayaka_plugin_wasmi::{WasmiLinker, WasmiModule}; -use flexi_logger::{FileSpec, LogSpecification, Logger}; -use serde::{Deserialize, Serialize}; -use settings::*; -use std::{ - borrow::Cow, - collections::{HashMap, HashSet}, - fmt::Display, - net::TcpListener, - path::PathBuf, - pin::pin, -}; -use tauri::{ - api::dialog::blocking::FileDialogBuilder, async_runtime::RwLock, command, - utils::config::AppUrl, AppHandle, Manager, PathResolver, State, WindowUrl, -}; - -type CommandResult = Result; - -#[derive(Debug, Default, Serialize)] -struct CommandError { - msg: String, -} - -impl> From for CommandError { - fn from(e: E) -> Self { - Self { - msg: e.into().to_string(), - } - } -} - -impl Display for CommandError { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str(&self.msg) - } -} - -#[command] -fn ayaka_version() -> &'static str { - ayaka_model::version() -} - -struct Storage { - config: Vec, - dist_port: u16, - model: RwLock>, -} - -impl Storage { - pub fn new(resolver: &PathResolver, config: Vec, dist_port: u16) -> Self { - let manager = FileSettingsManager::new(resolver); - Self { - config, - dist_port, - model: RwLock::new(GameViewModel::new(manager)), - } - } -} - -#[derive(Debug, Serialize, Deserialize)] -struct GameInfo { - pub title: String, - pub author: String, - pub props: HashMap, -} - -impl GameInfo { - pub fn new(game: &Game) -> Self { - Self { - title: game.config.title.clone(), - author: game.config.author.clone(), - props: game.config.props.clone(), - } - } -} - -#[command] -fn dist_port(storage: State) -> u16 { - storage.dist_port -} - -#[command] -async fn open_game(handle: AppHandle, storage: State<'_, Storage>) -> CommandResult<()> { - let config = if storage.config.is_empty() { - Cow::Owned( - FileDialogBuilder::new() - .add_filter("Ayaka package", &["ayapack"]) - .pick_files() - .unwrap_or_default(), - ) - } else { - Cow::Borrowed(&storage.config) - }; - let mut model = storage.model.write().await; - { - let linker = WasmiLinker::new(())?; - let context = model.open_game(&config, FrontendType::Html, linker); - let mut context = pin!(context); - while let Some(status) = context.next().await { - handle.emit_all("ayaka://open_status", status)?; - } - context.await?; - } - - asset_resolver::ROOT_PATH - .set(model.context().root_path().clone()) - .expect("cannot set ROOT_PATH"); - - let window = handle.get_window("main").expect("cannot get main window"); - window.set_title(&model.context().game().config.title)?; - - Ok(()) -} - -#[command] -async fn get_settings(storage: State<'_, Storage>) -> CommandResult { - Ok(storage.model.read().await.settings().clone()) -} - -#[command] -async fn set_settings(settings: Settings, storage: State<'_, Storage>) -> CommandResult<()> { - storage.model.write().await.set_settings(settings); - Ok(()) -} - -#[command] -async fn get_records(storage: State<'_, Storage>) -> CommandResult> { - Ok(storage.model.read().await.records_text().collect()) -} - -#[command] -async fn save_record_to(index: usize, storage: State<'_, Storage>) -> CommandResult<()> { - storage.model.write().await.save_current_to(index); - Ok(()) -} - -#[command] -async fn save_all(storage: State<'_, Storage>) -> CommandResult<()> { - storage.model.read().await.save_settings()?; - Ok(()) -} - -#[command] -async fn avaliable_locale( - storage: State<'_, Storage>, - locales: HashSet, -) -> CommandResult> { - Ok(storage - .model - .read() - .await - .avaliable_locale() - .cloned() - .collect::>() - .intersection(&locales) - .cloned() - .collect()) -} - -#[command] -async fn choose_locale( - storage: State<'_, Storage>, - locales: HashSet, -) -> CommandResult> { - let locales = avaliable_locale(storage, locales).await?; - let current = Locale::current(); - log::debug!("Choose {} from {:?}", current, locales); - Ok(current.choose_from(&locales).cloned()) -} - -#[command] -async fn info(storage: State<'_, Storage>) -> CommandResult> { - Ok(Some(GameInfo::new( - storage.model.read().await.context().game(), - ))) -} - -#[command] -async fn start_new(storage: State<'_, Storage>) -> CommandResult<()> { - storage.model.write().await.init_new(); - Ok(()) -} - -#[command] -async fn start_record(index: usize, storage: State<'_, Storage>) -> CommandResult<()> { - storage.model.write().await.init_context_by_index(index); - Ok(()) -} - -#[command] -async fn next_run(storage: State<'_, Storage>) -> CommandResult { - loop { - let mut model = storage.model.write().await; - if model.next_run() { - let is_empty = { - let action = model - .current_action() - .expect("current action cannot be None because next_run succeeds"); - match action { - Action::Empty => true, - Action::Custom(vars) => !vars.contains_key("video"), - _ => false, - } - }; - if !is_empty { - return Ok(true); - } - } else { - return Ok(false); - } - } -} - -#[command] -async fn next_back_run(storage: State<'_, Storage>) -> CommandResult { - Ok(storage.model.write().await.next_back_run()) -} - -#[command] -async fn current_visited(storage: State<'_, Storage>) -> CommandResult { - Ok(storage.model.read().await.current_visited()) -} - -#[command] -async fn current_run(storage: State<'_, Storage>) -> CommandResult> { - Ok(storage.model.read().await.current_run().cloned()) -} - -#[command] -async fn current_action( - storage: State<'_, Storage>, -) -> CommandResult)>> { - Ok(storage.model.read().await.current_actions()) -} - -#[command] -async fn current_title(storage: State<'_, Storage>) -> CommandResult> { - Ok(storage.model.read().await.current_title().cloned()) -} - -#[command] -async fn switch(i: usize, storage: State<'_, Storage>) -> CommandResult<()> { - storage.model.write().await.switch(i); - Ok(()) -} - -#[command] -async fn history(storage: State<'_, Storage>) -> CommandResult)>> { - Ok(storage.model.read().await.current_history().rev().collect()) -} - -fn main() -> Result<()> { - let listener = TcpListener::bind("127.0.0.1:0")?; - let port = listener.local_addr()?.port(); - tauri::Builder::default() - .plugin(asset_resolver::init(listener)) - .plugin(tauri_plugin_window_state::Builder::default().build()) - .setup(move |app| { - let resolver = app.path_resolver(); - let spec = LogSpecification::parse("warn,ayaka=debug,tower_http=debug")?; - let log_handle = if cfg!(debug_assertions) { - Logger::with(spec) - .log_to_stdout() - .set_palette("b1;3;2;4;6".to_string()) - .use_utc() - .start()? - } else { - Logger::with(spec) - .log_to_file( - FileSpec::default() - .directory(resolver.app_log_dir().expect("cannot get app log dir")) - .basename("ayaka-gui"), - ) - .use_utc() - .start()? - }; - app.manage(log_handle); - #[cfg(debug_assertions)] - { - let window = app.get_window("main").expect("cannot get main window"); - window.open_devtools(); - } - - use serde_json::Value; - - let matches = app.get_cli_matches()?; - let config = match &matches.args["config"].value { - Value::String(s) => vec![PathBuf::from(s)], - Value::Array(arr) => arr - .iter() - .filter_map(|v| v.as_str()) - .map(PathBuf::from) - .collect::>(), - _ => { - let current = std::env::current_exe()?; - let current = current - .parent() - .expect("cannot get parent dir of current exe"); - let mut paths = vec![]; - - let data = current.join("data.ayapack"); - if data.exists() { - paths.push(data); - paths.extend( - ('a'..='z') - .map(|c| current.join(format!("data.{}.ayapack", c))) - .filter(|p| p.exists()), - ); - } else { - let current_config = current.join("config.yaml"); - if current_config.exists() { - paths.push(current_config); - } - } - - paths - } - }; - app.manage(Storage::new(&resolver, config, port)); - Ok(()) - }) - .invoke_handler(tauri::generate_handler![ - ayaka_version, - dist_port, - open_game, - get_settings, - set_settings, - get_records, - save_record_to, - save_all, - avaliable_locale, - choose_locale, - info, - start_new, - start_record, - next_run, - next_back_run, - current_run, - current_action, - current_title, - current_visited, - switch, - history, - ]) - .run({ - let mut context = tauri::generate_context!(); - context.config_mut().build.dist_dir = AppUrl::Url(WindowUrl::External( - format!("http://127.0.0.1:{port}") - .parse() - .expect("cannot parse url"), - )); - context - })?; - Ok(()) +pub fn main() -> Result<()> { + ayaka_gui_lib::run() } diff --git a/bins/ayaka-gui/src-tauri/src/mobile.rs b/bins/ayaka-gui/src-tauri/src/mobile.rs new file mode 100644 index 00000000..900ce387 --- /dev/null +++ b/bins/ayaka-gui/src-tauri/src/mobile.rs @@ -0,0 +1,4 @@ +#[tauri::mobile_entry_point] +fn main() { + super::run().unwrap() +} diff --git a/bins/ayaka-gui/src-tauri/src/settings.rs b/bins/ayaka-gui/src-tauri/src/settings.rs index a0ebe9f7..06f4909a 100644 --- a/bins/ayaka-gui/src-tauri/src/settings.rs +++ b/bins/ayaka-gui/src-tauri/src/settings.rs @@ -1,10 +1,10 @@ +use crate::dir_resolver::DirResolver; use ayaka_model::{ anyhow::{self, Result}, *, }; use serde::{de::DeserializeOwned, Serialize}; use std::path::{Path, PathBuf}; -use tauri::PathResolver; #[derive(Default)] pub struct FileSettingsManager { @@ -13,7 +13,7 @@ pub struct FileSettingsManager { } impl FileSettingsManager { - pub fn new(resolver: &PathResolver) -> Self { + pub fn new(resolver: &DirResolver) -> Self { Self { local_data_dir: resolver .app_local_data_dir() diff --git a/bins/ayaka-gui/src-tauri/tauri.conf.json b/bins/ayaka-gui/src-tauri/tauri.conf.json index f0952e2b..64c779ee 100644 --- a/bins/ayaka-gui/src-tauri/tauri.conf.json +++ b/bins/ayaka-gui/src-tauri/tauri.conf.json @@ -1,5 +1,4 @@ { - "$schema": "../node_modules/@tauri-apps/cli/schema.json", "build": { "beforeBuildCommand": "npm run build", "beforeDevCommand": "npm run dev", @@ -19,6 +18,9 @@ "dialog": { "all": false, "open": true + }, + "os": { + "all": true } }, "bundle": { @@ -27,7 +29,7 @@ "copyright": "", "deb": { "depends": [ - "libwebkit2gtk-4.0-37" + "libwebkit2gtk-4.1-0" ] }, "externalBin": [], diff --git a/bins/ayaka-gui/src/App.vue b/bins/ayaka-gui/src/App.vue index 259f015d..04915221 100644 --- a/bins/ayaka-gui/src/App.vue +++ b/bins/ayaka-gui/src/App.vue @@ -1,7 +1,7 @@ @@ -17,7 +17,6 @@ export default { modal.show() }, async quit_direct() { - await save_all() await appWindow.close() } } diff --git a/bins/ayaka-gui/src/interop/index.ts b/bins/ayaka-gui/src/interop/index.ts index 6f260763..b55c5cdd 100644 --- a/bins/ayaka-gui/src/interop/index.ts +++ b/bins/ayaka-gui/src/interop/index.ts @@ -9,7 +9,7 @@ export async function init(): Promise { export function conv_src(path?: string): string | undefined { if (path) { - return decodeURIComponent(`//127.0.0.1:${DIST_PORT}/fs${path}`) + return decodeURIComponent(`http://127.0.0.1:${DIST_PORT}/fs${path}`) } return undefined } @@ -110,16 +110,18 @@ export function get_settings(): Promise { return invoke("get_settings") } -export function set_settings(settings: Settings): Promise { - return invoke("set_settings", { settings: settings }) +export async function set_settings(settings: Settings): Promise { + await invoke("set_settings", { settings: settings }) + await save_all() } export function get_records(): Promise { return invoke("get_records") } -export function save_record_to(index: number): Promise { - return invoke("save_record_to", { index: index }) +export async function save_record_to(index: number): Promise { + await invoke("save_record_to", { index: index }) + await save_all() } export async function set_locale(loc: Locale): Promise { diff --git a/bins/ayaka-gui/src/views/GameView.vue b/bins/ayaka-gui/src/views/GameView.vue index 8224f7e5..36f6799b 100644 --- a/bins/ayaka-gui/src/views/GameView.vue +++ b/bins/ayaka-gui/src/views/GameView.vue @@ -3,7 +3,7 @@ import { setTimeout } from 'timers-promises' import { Mutex, tryAcquire } from 'async-mutex' import ActionCard from '../components/ActionCard.vue' import IconButton from '../components/IconButton.vue' -import { conv_src, current_run, current_action, current_title, next_run, next_back_run, switch_, merge_lines, RawContext, ActionType, ActionText, CustomVars, Switch, ActionLineType, ActionLine, current_visited, get_settings } from '../interop' +import { conv_src, current_run, current_action, current_title, next_run, next_back_run, switch_, merge_lines, RawContext, ActionType, ActionText, CustomVars, Switch, ActionLineType, ActionLine, current_visited, get_settings, save_all } from '../interop' import { cloneDeep } from 'lodash' import Live2D from '../components/Live2D.vue' import { Modal } from 'bootstrap' @@ -69,6 +69,7 @@ export default { modal.show() }, async go_home_direct() { + await save_all() await this.$router.replace("/home") }, // Should be called in mutex diff --git a/bins/ayaka-gui/src/views/HomeView.vue b/bins/ayaka-gui/src/views/HomeView.vue index 7a2792e2..e426b1eb 100644 --- a/bins/ayaka-gui/src/views/HomeView.vue +++ b/bins/ayaka-gui/src/views/HomeView.vue @@ -1,5 +1,6 @@ @@ -13,31 +12,39 @@ export default { text: "", error: "", progress: 0, - unlisten_fn: null as UnlistenFn | null + unlisten_fn: undefined as UnlistenFn | undefined, + modal: undefined as Modal | undefined } }, async mounted() { + this.modal = new Modal(this.$refs.errorModal as HTMLElement) this.unlisten_fn = await listen('ayaka://open_status', this.on_open_status) - try { - await open_game() - } - catch (e) { - if (e instanceof Error) { - this.error = e.message - } else { - this.error = JSON.stringify(e) - } - let modal = new Modal(this.$refs.errorModal as HTMLElement) - modal.show() - } + await this.open_game() }, unmounted() { if (this.unlisten_fn) { this.unlisten_fn() - this.unlisten_fn = null + this.unlisten_fn = undefined } }, methods: { + async open_game() { + try { + await open_game() + } + catch (e) { + if (e instanceof Error) { + this.error = e.message + } else { + this.error = JSON.stringify(e) + } + this.modal?.show() + } + }, + async reopen_game() { + this.modal?.hide() + await this.open_game() + }, async on_open_status(e: TauriEvent) { console.log(e.payload) const status = e.payload; @@ -126,7 +133,7 @@ export default { diff --git a/bins/ayaka-gui/vite.config.ts b/bins/ayaka-gui/vite.config.ts index e2b60226..0bd6a7df 100644 --- a/bins/ayaka-gui/vite.config.ts +++ b/bins/ayaka-gui/vite.config.ts @@ -1,21 +1,36 @@ import { env } from 'process' -import { defineConfig } from 'vite' +import { defineConfig, UserConfig } from 'vite' import vue from '@vitejs/plugin-vue' // https://vitejs.dev/config/ -export default defineConfig({ - plugins: [vue()], - clearScreen: false, - envPrefix: ['VITE_', 'TAURI_'], - build: { - target: ['es2021', 'chrome97', 'safari13'], - minify: !env.TAURI_DEBUG ? 'esbuild' : false, - sourcemap: !!env.TAURI_DEBUG, - chunkSizeWarningLimit: 1000, - }, - server: { - fs: { - strict: false +export default defineConfig(async () => { + const internal_ip = await import("internal-ip") + const host = await internal_ip.internalIpV4() + + const config: UserConfig = { + plugins: [vue()], + clearScreen: false, + envPrefix: ['VITE_', 'TAURI_'], + build: { + target: ['es2021', 'chrome97', 'safari13'], + minify: !env.TAURI_DEBUG ? 'esbuild' : false, + sourcemap: !!env.TAURI_DEBUG, + chunkSizeWarningLimit: 1000, + }, + server: { + fs: { + strict: false + }, + host: '0.0.0.0', // listen on all addresses + port: 5173, + strictPort: true, + hmr: { + protocol: 'ws', + host, + port: 5183, + }, } } + + return config }) diff --git a/bins/ayaka-latex/src/main.rs b/bins/ayaka-latex/src/main.rs index c0c69d1b..2756abc7 100644 --- a/bins/ayaka-latex/src/main.rs +++ b/bins/ayaka-latex/src/main.rs @@ -32,7 +32,9 @@ async fn main() -> Result<()> { .use_utc() .start()?; let linker = WasmiLinker::new(())?; - let context = Context::::open(&opts.input, FrontendType::Latex, linker); + let context = ContextBuilder::::new(FrontendType::Latex, linker) + .with_paths(&opts.input)? + .open(); let mut ctx = context.await?; let output = tokio::fs::File::create(&opts.output).await?; diff --git a/utils/ayaka-model/src/view_model.rs b/utils/ayaka-model/src/view_model.rs index 051ca15c..86a2b462 100644 --- a/utils/ayaka-model/src/view_model.rs +++ b/utils/ayaka-model/src/view_model.rs @@ -2,7 +2,6 @@ use crate::*; use anyhow::Result; use ayaka_plugin::RawModule; use serde::Serialize; -use std::{path::Path, pin::pin}; use stream_future::stream; use trylog::macros::*; @@ -10,18 +9,6 @@ use trylog::macros::*; #[derive(Debug, Clone, PartialEq, Eq, Serialize)] #[serde(tag = "t", content = "data")] pub enum OpenGameStatus { - /// Start loading config file. - LoadProfile, - /// Start creating plugin runtime. - CreateRuntime, - /// Loading the plugin. - LoadPlugin(String, usize, usize), - /// Executing game plugins. - GamePlugin, - /// Loading the resources. - LoadResource, - /// Loading the paragraphs. - LoadParagraph, /// Loading the settings. LoadSettings, /// Loading the global records. @@ -32,19 +19,6 @@ pub enum OpenGameStatus { Loaded, } -impl From for OpenGameStatus { - fn from(value: OpenStatus) -> Self { - match value { - OpenStatus::LoadProfile => Self::LoadProfile, - OpenStatus::CreateRuntime => Self::CreateRuntime, - OpenStatus::LoadPlugin(name, i, len) => Self::LoadPlugin(name, i, len), - OpenStatus::GamePlugin => Self::GamePlugin, - OpenStatus::LoadResource => Self::LoadResource, - OpenStatus::LoadParagraph => Self::LoadParagraph, - } - } -} - /// A view model of Ayaka. /// It manages all settings and provides high-level APIs. pub struct GameViewModel { @@ -71,21 +45,9 @@ impl GameViewModel( - &'a mut self, - paths: &'a [impl AsRef], - frontend_type: FrontendType, - linker: M::Linker, - ) -> Result<()> { - let context = Context::open(paths, frontend_type, linker); - let mut context = pin!(context); - while let Some(status) = context.next().await { - yield status.into(); - } - let context = context.await?; - + pub async fn open_game<'a>(&'a mut self, context: Context) -> Result<()> { yield OpenGameStatus::LoadSettings; let settings = unwrap_or_default_log!( self.settings_manager.load_settings(), diff --git a/utils/ayaka-model/tests/basic_model.rs b/utils/ayaka-model/tests/basic_model.rs index a43c2869..8c7d794b 100644 --- a/utils/ayaka-model/tests/basic_model.rs +++ b/utils/ayaka-model/tests/basic_model.rs @@ -92,7 +92,13 @@ async fn progress() { let mut model = GameViewModel::::new(NopSettingsManager::new().unwrap()); let linker = WasmiLinker::new(()).unwrap(); - let mut context = model.open_game(&[CONFIG_PATH], FrontendType::Text, linker); + let context = ContextBuilder::::new(FrontendType::Text, linker) + .with_paths(&[CONFIG_PATH]) + .unwrap() + .open() + .await + .unwrap(); + let mut context = model.open_game(context); let progresses = unsafe { Pin::new_unchecked(&mut context) } .collect::>() .await; @@ -100,11 +106,6 @@ async fn progress() { assert_eq!( &progresses, &[ - OpenGameStatus::LoadProfile, - OpenGameStatus::CreateRuntime, - OpenGameStatus::GamePlugin, - OpenGameStatus::LoadResource, - OpenGameStatus::LoadParagraph, OpenGameStatus::LoadSettings, OpenGameStatus::LoadGlobalRecords, OpenGameStatus::LoadRecords, @@ -133,10 +134,13 @@ async fn paras() { }; let mut model = GameViewModel::::new(manager); let linker = WasmiLinker::new(()).unwrap(); - model - .open_game(&[CONFIG_PATH], FrontendType::Text, linker) + let context = ContextBuilder::::new(FrontendType::Text, linker) + .with_paths(&[CONFIG_PATH]) + .unwrap() + .open() .await .unwrap(); + model.open_game(context).await.unwrap(); model.init_new(); let actions = std::iter::from_fn(|| { if model.next_run() { diff --git a/utils/ayaka-model/tests/basic_runtime.rs b/utils/ayaka-model/tests/basic_runtime.rs index 7d5d866d..a649c88f 100644 --- a/utils/ayaka-model/tests/basic_runtime.rs +++ b/utils/ayaka-model/tests/basic_runtime.rs @@ -7,7 +7,10 @@ const CONFIG_PATH: &str = "tests/basic/config.yaml"; #[tokio::test(flavor = "current_thread")] async fn progress() { let linker = WasmiLinker::new(()).unwrap(); - let mut context = Context::::open(&[CONFIG_PATH], FrontendType::Text, linker); + let mut context = ContextBuilder::::new(FrontendType::Text, linker) + .with_paths(&[CONFIG_PATH]) + .unwrap() + .open(); let progresses = unsafe { Pin::new_unchecked(&mut context) } .collect::>() .await; @@ -27,7 +30,10 @@ async fn progress() { #[tokio::test(flavor = "current_thread")] async fn config() { let linker = WasmiLinker::new(()).unwrap(); - let context = Context::::open(&[CONFIG_PATH], FrontendType::Text, linker) + let context = ContextBuilder::::new(FrontendType::Text, linker) + .with_paths(&[CONFIG_PATH]) + .unwrap() + .open() .await .unwrap(); let config = &context.game().config; @@ -57,7 +63,10 @@ fn paras(mut context: Context, loc: Locale, expected_actions: &[Act #[tokio::test(flavor = "current_thread")] async fn paras_en() { let linker = WasmiLinker::new(()).unwrap(); - let context = Context::::open(&[CONFIG_PATH], FrontendType::Text, linker) + let context = ContextBuilder::::new(FrontendType::Text, linker) + .with_paths(&[CONFIG_PATH]) + .unwrap() + .open() .await .unwrap(); let loc = locale!("en"); @@ -76,7 +85,10 @@ async fn paras_en() { #[tokio::test(flavor = "current_thread")] async fn paras_zh() { let linker = WasmiLinker::new(()).unwrap(); - let context = Context::::open(&[CONFIG_PATH], FrontendType::Text, linker) + let context = ContextBuilder::::new(FrontendType::Text, linker) + .with_paths(&[CONFIG_PATH]) + .unwrap() + .open() .await .unwrap(); let loc = locale!("zh"); diff --git a/utils/ayaka-model/tests/fibonacci.rs b/utils/ayaka-model/tests/fibonacci.rs index 17c0e912..f35b1bb1 100644 --- a/utils/ayaka-model/tests/fibonacci.rs +++ b/utils/ayaka-model/tests/fibonacci.rs @@ -21,7 +21,10 @@ fn custom_default() -> Action { #[tokio::test(flavor = "current_thread")] async fn calculate() { let linker = WasmiLinker::new(()).unwrap(); - let mut context = Context::::open(&[CONFIG_PATH], FrontendType::Text, linker) + let mut context = ContextBuilder::::new(FrontendType::Text, linker) + .with_paths(&[CONFIG_PATH]) + .unwrap() + .open() .await .unwrap(); context.set_start_context(); diff --git a/utils/ayaka-runtime/Cargo.toml b/utils/ayaka-runtime/Cargo.toml index 5898bed3..30632816 100644 --- a/utils/ayaka-runtime/Cargo.toml +++ b/utils/ayaka-runtime/Cargo.toml @@ -27,7 +27,7 @@ log = { workspace = true } trylog = { workspace = true } cfg-if = "1.0" vfs = { workspace = true } -vfs-tar = "0.3" +vfs-tar = { version = "0.4", features = ["mmap"] } rand = "0.8" slab = "0.4" diff --git a/utils/ayaka-runtime/src/context.rs b/utils/ayaka-runtime/src/context.rs index 9cbe9454..8639d827 100644 --- a/utils/ayaka-runtime/src/context.rs +++ b/utils/ayaka-runtime/src/context.rs @@ -7,8 +7,9 @@ use ayaka_bindings_types::*; use ayaka_plugin::RawModule; use fallback::Fallback; use log::error; -use std::{borrow::Cow, collections::HashMap, path::Path, pin::pin, sync::Arc}; -use stream_future::stream; +use serde::Serialize; +use std::{borrow::Cow, collections::HashMap, future::Future, path::Path, pin::pin, sync::Arc}; +use stream_future::{stream, Stream}; use trylog::macros::*; use vfs::*; use vfs_tar::TarFS; @@ -25,7 +26,8 @@ pub struct Context { } /// The open status when creating [`Context`]. -#[derive(Debug, Clone, PartialEq, Eq)] +#[derive(Debug, Clone, PartialEq, Eq, Serialize)] +#[serde(tag = "t", content = "data")] pub enum OpenStatus { /// Start loading config file. LoadProfile, @@ -50,24 +52,106 @@ impl From for OpenStatus { } } -impl Context { - /// Open a config file with frontend type. +/// Builder of [`Context`]. +pub struct ContextBuilder { + frontend: FrontendType, + linker: M::Linker, +} + +impl ContextBuilder { + /// Create a new [`ContextBuilder`] with frontend type and plugin runtime linker. + pub fn new(frontend: FrontendType, linker: M::Linker) -> Self { + Self { frontend, linker } + } + + fn open_fs_from_paths(paths: &[impl AsRef]) -> Result<(VfsPath, Cow)> { + let (root_path, filename) = if paths.len() == 1 { + let path = paths[0].as_ref(); + let ext = path.extension().unwrap_or_default(); + if ext == "yaml" { + let root_path = path + .parent() + .ok_or_else(|| anyhow!("Cannot get parent from input path."))?; + ( + VfsPath::from(PhysicalFS::new(root_path)), + path.file_name().unwrap_or_default().to_string_lossy(), + ) + } else if ext == "ayapack" { + (TarFS::new_mmap(path)?.into(), "config.yaml".into()) + } else { + bail!("Cannot determine filesystem.") + } + } else { + let files = paths + .iter() + .rev() + .map(|path| TarFS::new_mmap(path.as_ref()).map(VfsPath::from)) + .collect::, _>>()?; + (OverlayFS::new(&files).into(), "config.yaml".into()) + }; + Ok((root_path, filename)) + } + + /// Open a context with config paths. /// /// If the input `paths` contains only one element, it may be a YAML or an FRFS file. /// If the input `paths` contains many element, they should all be FRFS files, /// and the latter one will override the former one. - #[stream(OpenStatus, lifetime = 'a)] - pub async fn open<'a>( + pub fn with_paths<'a>( + self, paths: &'a [impl AsRef], - frontend: FrontendType, - linker: M::Linker, - ) -> Result { + ) -> Result> { if paths.is_empty() { bail!("At least one path should be input."); } - yield OpenStatus::LoadProfile; let (root_path, filename) = Self::open_fs_from_paths(paths)?; - let file = root_path.join(&filename)?.open_file()?; + Ok(ContextBuilderWithPaths { + root_path, + filename, + frontend: self.frontend, + linker: self.linker, + }) + } + + /// Open a context with config paths. + pub fn with_vfs(self, paths: &[VfsPath]) -> Result> { + if paths.is_empty() { + bail!("At least one path should be input."); + } + Ok(ContextBuilderWithPaths { + root_path: OverlayFS::new(paths).into(), + filename: "config.yaml".into(), + frontend: self.frontend, + linker: self.linker, + }) + } +} + +/// Builder of [`Context`]. +pub struct ContextBuilderWithPaths<'a, M: RawModule + Send + Sync + 'static> { + root_path: VfsPath, + filename: Cow<'a, str>, + frontend: FrontendType, + linker: M::Linker, +} + +impl<'a, M: RawModule + Send + Sync + 'static> ContextBuilderWithPaths<'a, M> { + /// Open the config and load the [`Context`]. + pub fn open(self) -> impl Future>> + Stream + 'a { + Context::::open(self.root_path, self.filename, self.frontend, self.linker) + } +} + +impl Context { + #[stream(OpenStatus, lifetime = 'a)] + async fn open<'a>( + root_path: VfsPath, + filename: impl AsRef + 'a, + frontend: FrontendType, + linker: M::Linker, + ) -> Result { + yield OpenStatus::LoadProfile; + let file = root_path.join(filename.as_ref())?.open_file()?; let mut config: GameConfig = serde_yaml::from_reader(file)?; let runtime = { let runtime = Runtime::load( @@ -103,34 +187,6 @@ impl Context { }) } - fn open_fs_from_paths(paths: &[impl AsRef]) -> Result<(VfsPath, Cow)> { - let (root_path, filename) = if paths.len() == 1 { - let path = paths[0].as_ref(); - let ext = path.extension().unwrap_or_default(); - if ext == "yaml" { - let root_path = path - .parent() - .ok_or_else(|| anyhow!("Cannot get parent from input path."))?; - ( - VfsPath::from(PhysicalFS::new(root_path)), - path.file_name().unwrap_or_default().to_string_lossy(), - ) - } else if ext == "ayapack" { - (TarFS::new(path)?.into(), "config.yaml".into()) - } else { - bail!("Cannot determine filesystem.") - } - } else { - let files = paths - .iter() - .rev() - .map(|path| TarFS::new(path.as_ref()).map(VfsPath::from)) - .collect::, _>>()?; - (OverlayFS::new(&files).into(), "config.yaml".into()) - }; - Ok((root_path, filename)) - } - fn preprocess_game(config: &mut GameConfig, runtime: &Runtime) -> Result<()> { for module in runtime.game_modules() { let ctx = GameProcessContextRef {