diff --git a/.gitignore b/.gitignore index 72e0728..5740407 100644 --- a/.gitignore +++ b/.gitignore @@ -13,6 +13,7 @@ dist-ssr *.local # Editor directories and files +.vscode .vscode/* !.vscode/extensions.json .idea diff --git a/.vscode/extensions.json b/.vscode/extensions.json deleted file mode 100644 index 61343e9..0000000 --- a/.vscode/extensions.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "recommendations": [ - "svelte.svelte-vscode", - "tauri-apps.tauri-vscode", - "rust-lang.rust-analyzer" - ] -} diff --git a/src-tauri/.gitignore b/app/.gitignore similarity index 100% rename from src-tauri/.gitignore rename to app/.gitignore diff --git a/src-tauri/Cargo.lock b/app/Cargo.lock similarity index 59% rename from src-tauri/Cargo.lock rename to app/Cargo.lock index feedbde..aa87800 100644 --- a/src-tauri/Cargo.lock +++ b/app/Cargo.lock @@ -2,45 +2,28 @@ # It is not intended for manual editing. version = 3 +[[package]] +name = "ab_glyph" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5110f1c78cf582855d895ecd0746b653db010cec6d9f5575293f27934d980a39" +dependencies = [ + "ab_glyph_rasterizer", + "owned_ttf_parser", +] + +[[package]] +name = "ab_glyph_rasterizer" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c71b1793ee61086797f5c80b6efa2b8ffa6d5dd703f118545808a7f2e27f7046" + [[package]] name = "adler" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" -[[package]] -name = "aho-corasick" -version = "0.7.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" -dependencies = [ - "memchr", -] - -[[package]] -name = "aho-corasick" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67fc08ce920c31afb70f013dcce1bfc3a3195de6a228474e45e1f145b36f8d04" -dependencies = [ - "memchr", -] - -[[package]] -name = "alloc-no-stdlib" -version = "2.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" - -[[package]] -name = "alloc-stdlib" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" -dependencies = [ - "alloc-no-stdlib", -] - [[package]] name = "alsa" version = "0.7.0" @@ -50,7 +33,7 @@ dependencies = [ "alsa-sys", "bitflags 1.3.2", "libc", - "nix", + "nix 0.24.3", ] [[package]] @@ -64,16 +47,61 @@ dependencies = [ ] [[package]] -name = "anyhow" -version = "1.0.70" +name = "android-activity" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7de8ce5e0f9f8d88245311066a578d72b7af3e7088f32783804676302df237e4" +checksum = "7c77a0045eda8b888c76ea473c2b0515ba6f471d318f8927c5c72240937035a6" +dependencies = [ + "android-properties", + "bitflags 1.3.2", + "cc", + "jni-sys", + "libc", + "log", + "ndk", + "ndk-context", + "ndk-sys", + "num_enum", +] + +[[package]] +name = "android-properties" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7eb209b1518d6bb87b283c20095f5228ecda460da70b44f0802523dea6da04" + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anyhow" +version = "1.0.71" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c7d0618f0e0b7e8ff11427422b64564d5fb0be1940354bfe2e0529b18a9d9b8" [[package]] name = "arc-swap" -version = "1.6.0" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bddcadddf5e9015d310179a59bb28c4d4b9920ad0f11e8e14dbadf654890c9a6" +checksum = "dabe5a181f83789739c194cbe5a897dde195078fac08568d09221fd6137a7ba8" + +[[package]] +name = "arrayref" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" [[package]] name = "arrayvec" @@ -83,9 +111,9 @@ checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" [[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", @@ -95,16 +123,22 @@ dependencies = [ [[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.5", + "system-deps", ] +[[package]] +name = "atomic-arena" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5450eca8ce5abcfd5520727e975ebab30ccca96030550406b0ca718b224ead10" + [[package]] name = "atomic_enum" version = "0.2.0" @@ -122,18 +156,6 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" -[[package]] -name = "base64" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" - -[[package]] -name = "base64" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a4ddaa51a5bc52a6948f74c06d20aaaddb71924eab79b8c97a8c556e942d6a" - [[package]] name = "bindgen" version = "0.64.0" @@ -154,6 +176,12 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "bit_field" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc827186963e592360843fb5ba4b973e145841266c1357f7180c43526f2e5b61" + [[package]] name = "bitflags" version = "0.7.0" @@ -173,50 +201,29 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" [[package]] -name = "block-buffer" -version = "0.10.4" +name = "block-sys" +version = "0.1.0-beta.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +checksum = "0fa55741ee90902547802152aaf3f8e5248aab7e21468089560d4c8840561146" dependencies = [ - "generic-array", + "objc-sys", ] [[package]] -name = "brotli" -version = "3.3.4" +name = "block2" +version = "0.2.0-alpha.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1a0b1dbcc8ae29329621f8d4f0d835787c1c38bb1401979b49d13b0b305ff68" +checksum = "8dd9e63c1744f755c2f60332b88de39d341e5e86239014ad839bd71c106dec42" dependencies = [ - "alloc-no-stdlib", - "alloc-stdlib", - "brotli-decompressor", -] - -[[package]] -name = "brotli-decompressor" -version = "2.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b6561fd3f895a11e8f72af2cb7d22e08366bebc2b6b57f7744c4bda27034744" -dependencies = [ - "alloc-no-stdlib", - "alloc-stdlib", -] - -[[package]] -name = "bstr" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3d4260bcc2e8fc9df1eac4919a720effeb63a3f0952f5bf4944adfa18897f09" -dependencies = [ - "memchr", - "serde", + "block-sys", + "objc2-encode", ] [[package]] name = "bumpalo" -version = "3.12.1" +version = "3.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b1ce199063694f33ffb7dd4e0ee620741495c32833cde5aa08f02a0bf96f0c8" +checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" [[package]] name = "bytemuck" @@ -236,44 +243,43 @@ version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" -[[package]] -name = "bytesize" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38fcc2979eff34a4b84e1cf9a1e3da42a7d44b3b690a40cdcb23e3d556cfb2e5" - [[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", "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.5", + "system-deps", ] [[package]] -name = "cargo_toml" -version = "0.13.3" +name = "calloop" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497049e9477329f8f6a559972ee42e117487d01d1e8c2cc9f836ea6fa23a9e1a" +checksum = "52e0d00eb1ea24371a97d2da6201c6747a633dc6dc1988ef503403b4c59504a8" dependencies = [ - "serde", - "toml 0.5.11", + "bitflags 1.3.2", + "log", + "nix 0.25.1", + "slotmap", + "thiserror", + "vec_map", ] [[package]] @@ -300,30 +306,11 @@ dependencies = [ "nom", ] -[[package]] -name = "cfb" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74f89d248799e3f15f91b70917f65381062a01bb8e222700ea0e5a7ff9785f9c" -dependencies = [ - "byteorder", - "uuid 0.8.2", -] - [[package]] name = "cfg-expr" -version = "0.9.1" +version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3431df59f28accaf4cb4eed4a9acc66bea3f3c3753aa6cdc2f024174ef232af7" -dependencies = [ - "smallvec", -] - -[[package]] -name = "cfg-expr" -version = "0.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8790cf1286da485c72cf5fc7aeba308438800036ec67d89425924c4807268c9" +checksum = "e70d3ad08698a0568b0562f22710fe6bfc1f4a61a367c77d0398c562eadd453a" dependencies = [ "smallvec", "target-lexicon", @@ -336,10 +323,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] -name = "ciborium" -version = "0.2.0" +name = "cfg_aliases" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0c137568cc60b904a7724001b35ce2630fd00d5d84805fbb608ab89509d788f" +checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" + +[[package]] +name = "chrono" +version = "0.4.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec837a71355b28f6556dbd569b37b3f363091c0bd4b2e735674521b4c5fd9bc5" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "js-sys", + "num-traits", + "time", + "wasm-bindgen", + "winapi", +] + +[[package]] +name = "ciborium" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "effd91f6c78e5a4ace8a5d3c0b6bfaec9e2baaef55f3efc00e45fb2e477ee926" dependencies = [ "ciborium-io", "ciborium-ll", @@ -348,18 +356,18 @@ dependencies = [ [[package]] name = "ciborium-io" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "346de753af073cc87b52b2083a506b38ac176a44cfb05497b622e27be899b369" +checksum = "cdf919175532b369853f5d5e20b26b43112613fd6fe7aee757e35f7a44642656" [[package]] name = "ciborium-ll" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "213030a2b5a4e0c0892b6652260cf6ccac84827b83a85a534e178e3906c4cf1b" +checksum = "defaa24ecc093c77630e6c15e17c51f5e187bf35ee514f4e2d67baaa96dae22b" dependencies = [ "ciborium-io", - "half", + "half 1.8.2", ] [[package]] @@ -428,9 +436,9 @@ dependencies = [ [[package]] name = "convert_case" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" +checksum = "fb4a24b1aaf0fd0ce8b45161144d6f42cd91677fd5940fd431183eb023b3a2b8" [[package]] name = "core-foundation" @@ -513,26 +521,17 @@ dependencies = [ "js-sys", "libc", "mach2", - "ndk 0.7.0", + "ndk", "ndk-context", "oboe", "once_cell", - "parking_lot", + "parking_lot 0.12.1", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", "windows 0.46.0", ] -[[package]] -name = "cpufeatures" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e4c1eaa2012c47becbbad2ab175484c2a84d1185b566fb2cc5b8707343dfe58" -dependencies = [ - "libc", -] - [[package]] name = "crc32fast" version = "1.3.2" @@ -552,6 +551,30 @@ dependencies = [ "crossbeam-utils", ] +[[package]] +name = "crossbeam-deque" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" +dependencies = [ + "cfg-if", + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695" +dependencies = [ + "autocfg", + "cfg-if", + "crossbeam-utils", + "memoffset 0.8.0", + "scopeguard", +] + [[package]] name = "crossbeam-utils" version = "0.8.15" @@ -562,86 +585,16 @@ dependencies = [ ] [[package]] -name = "crypto-common" -version = "0.1.6" +name = "crunchy" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" -dependencies = [ - "generic-array", - "typenum", -] +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" [[package]] -name = "cssparser" -version = "0.27.2" +name = "cty" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "754b69d351cdc2d8ee09ae203db831e005560fc6030da058f86ad60c92a9cb0a" -dependencies = [ - "cssparser-macros", - "dtoa-short", - "itoa 0.4.8", - "matches", - "phf 0.8.0", - "proc-macro2", - "quote", - "smallvec", - "syn 1.0.109", -] - -[[package]] -name = "cssparser-macros" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfae75de57f2b2e85e8768c3ea840fd159c8f33e2b6522c7835b7abac81be16e" -dependencies = [ - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ctor" -version = "0.1.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d2301688392eb071b0bf1a37be05c469d3cc4dbbd95df672fe28ab021e6a096" -dependencies = [ - "quote", - "syn 1.0.109", -] - -[[package]] -name = "darling" -version = "0.13.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c" -dependencies = [ - "darling_core", - "darling_macro", -] - -[[package]] -name = "darling_core" -version = "0.13.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610" -dependencies = [ - "fnv", - "ident_case", - "proc-macro2", - "quote", - "strsim", - "syn 1.0.109", -] - -[[package]] -name = "darling_macro" -version = "0.13.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" -dependencies = [ - "darling_core", - "quote", - "syn 1.0.109", -] +checksum = "b365fabc795046672053e29c954733ec3b05e4be654ab130fe8f1f94d7051f35" [[package]] name = "dasp_sample" @@ -650,26 +603,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c87e182de0887fd5361989c677c4e8f5000cd9491d6d563161a8f3a5519fc7f" [[package]] -name = "derive_more" -version = "0.99.17" +name = "dirs-next" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" +checksum = "cf36e65a80337bea855cd4ef9b8401ffce06a7baedf2e85ec467b1ac3f6e82b6" dependencies = [ - "convert_case", - "proc-macro2", - "quote", - "rustc_version", - "syn 1.0.109", -] - -[[package]] -name = "digest" -version = "0.10.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f" -dependencies = [ - "block-buffer", - "crypto-common", + "cfg-if", + "dirs-sys-next", ] [[package]] @@ -700,31 +640,25 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" [[package]] -name = "dtoa" -version = "0.4.8" +name = "dlib" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56899898ce76aaf4a0f24d914c97ea6ed976d42fec6ad33fcbb0a1103e07b2b0" - -[[package]] -name = "dtoa-short" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bde03329ae10e79ede66c9ce4dc930aa8599043b0743008548680f25b91502d6" +checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" dependencies = [ - "dtoa", + "libloading", ] [[package]] -name = "dunce" -version = "1.0.4" +name = "downcast-rs" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b" +checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" [[package]] -name = "embed_plist" -version = "1.2.2" +name = "either" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ef6b89e5b37196644d8796de5268852ff179b44e96276cf4290264843743bb7" +checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" [[package]] name = "encoding_rs" @@ -736,33 +670,19 @@ dependencies = [ ] [[package]] -name = "errno" -version = "0.3.1" +name = "exr" +version = "1.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" +checksum = "279d3efcc55e19917fff7ab3ddd6c14afb6a90881a0078465196fe2f99d08c56" dependencies = [ - "errno-dragonfly", - "libc", - "windows-sys 0.48.0", -] - -[[package]] -name = "errno-dragonfly" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" -dependencies = [ - "cc", - "libc", -] - -[[package]] -name = "fastrand" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" -dependencies = [ - "instant", + "bit_field", + "flume", + "half 2.2.1", + "lebe", + "miniz_oxide", + "rayon-core", + "smallvec", + "zune-inflate", ] [[package]] @@ -776,34 +696,35 @@ dependencies = [ [[package]] name = "field-offset" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3cf3a800ff6e860c863ca6d4b16fd999db8b752819c1606884047b73e468535" +checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f" dependencies = [ - "memoffset", + "memoffset 0.9.0", "rustc_version", ] [[package]] -name = "filetime" -version = "0.2.21" +name = "flate2" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cbc844cecaee9d4443931972e1289c8ff485cb4cc2767cb03ca139ed6885153" +checksum = "3b9429470923de8e8cbd4d2dc513535400b4b3fef0319fb5c4e1f520a7bef743" dependencies = [ - "cfg-if", - "libc", - "redox_syscall 0.2.16", - "windows-sys 0.48.0", + "crc32fast", + "miniz_oxide", ] [[package]] -name = "flate2" -version = "1.0.25" +name = "flume" +version = "0.10.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8a2db397cb1c8772f31494cb8917e48cd1e64f0fa7efac59fbd741a0a8ce841" +checksum = "1657b4441c3403d9f7b3409e47575237dac27b1b5726df654a6ecbf92f0f7577" dependencies = [ - "crc32fast", - "miniz_oxide 0.6.2", + "futures-core", + "futures-sink", + "nanorand", + "pin-project", + "spin", ] [[package]] @@ -827,25 +748,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" -[[package]] -name = "form_urlencoded" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8" -dependencies = [ - "percent-encoding", -] - -[[package]] -name = "futf" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df420e2e84819663797d1ec6544b13c5be84629e7bb00dc960d6917db2987843" -dependencies = [ - "mac", - "new_debug_unreachable", -] - [[package]] name = "futures-channel" version = "0.3.28" @@ -886,9 +788,15 @@ checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" dependencies = [ "proc-macro2", "quote", - "syn 2.0.15", + "syn 2.0.18", ] +[[package]] +name = "futures-sink" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" + [[package]] name = "futures-task" version = "0.3.28" @@ -909,20 +817,11 @@ dependencies = [ "slab", ] -[[package]] -name = "fxhash" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" -dependencies = [ - "byteorder", -] - [[package]] name = "gdk" -version = "0.15.4" +version = "0.16.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6e05c1f572ab0e1f15be94217f0dc29088c248b14f792a5ff0af0d84bcda9e8" +checksum = "aa9cb33da481c6c040404a11f8212d193889e9b435db2c14fd86987f630d3ce1" dependencies = [ "bitflags 1.3.2", "cairo-rs", @@ -936,9 +835,9 @@ 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", "gdk-pixbuf-sys", @@ -949,22 +848,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.5", + "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", @@ -974,108 +873,87 @@ dependencies = [ "libc", "pango-sys", "pkg-config", - "system-deps 6.0.5", -] - -[[package]] -name = "gdkx11-sys" -version = "0.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4b7f8c7a84b407aa9b143877e267e848ff34106578b64d1e0a24bf550716178" -dependencies = [ - "gdk-sys", - "glib-sys", - "libc", - "system-deps 6.0.5", - "x11", -] - -[[package]] -name = "generator" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3e123d9ae7c02966b4d892e550bdc32164f05853cd40ab570650ad600596a8a" -dependencies = [ - "cc", - "libc", - "log", - "rustversion", - "windows 0.48.0", -] - -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", + "system-deps", ] [[package]] name = "getrandom" -version = "0.1.16" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" -dependencies = [ - "cfg-if", - "libc", - "wasi 0.9.0+wasi-snapshot-preview1", -] - -[[package]] -name = "getrandom" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c85e1d9ab2eadba7e5040d4e09cbd6d072b76a557ad64e797c2cb9d4da21d7e4" +checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" dependencies = [ "cfg-if", + "js-sys", "libc", "wasi 0.11.0+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "gif" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80792593675e051cf94a4b111980da2ba60d4a83e43e0048c5693baab3977045" +dependencies = [ + "color_quant", + "weezl", ] [[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", "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.5", + "system-deps", "winapi", ] [[package]] -name = "glib" -version = "0.15.12" +name = "glam" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edb0306fbad0ab5428b0ca674a23893db909a98582969c9b537be4ced78c505d" +checksum = "ad83ab008a4fa3b31dfa713dd41b5a9bdea1e94e4cf1e2fc274ffbd49b0271d3" +dependencies = [ + "mint", +] + +[[package]] +name = "glib" +version = "0.16.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16aa2475c9debed5a32832cb5ff2af5a3f9e1ab9e69df58eaadc1ab2004d6eba" dependencies = [ "bitflags 1.3.2", "futures-channel", "futures-core", "futures-executor", "futures-task", + "futures-util", + "gio-sys", "glib-macros", "glib-sys", "gobject-sys", @@ -1087,12 +965,12 @@ dependencies = [ [[package]] name = "glib-macros" -version = "0.15.13" +version = "0.16.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10c6ae9f6fa26f4fb2ac16b528d138d971ead56141de489f8111e259b9df3c4a" +checksum = "fb1a9325847aa46f1e96ffea37611b9d51fc4827e67f79e7de502a297560a67b" dependencies = [ "anyhow", - "heck 0.4.1", + "heck", "proc-macro-crate", "proc-macro-error", "proc-macro2", @@ -1102,12 +980,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.5", + "system-deps", ] [[package]] @@ -1116,35 +994,22 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" -[[package]] -name = "globset" -version = "0.4.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "029d74589adefde59de1a0c4f4732695c32805624aec7b68d91503d4dba79afc" -dependencies = [ - "aho-corasick 0.7.20", - "bstr", - "fnv", - "log", - "regex", -] - [[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.5", + "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", @@ -1165,9 +1030,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", @@ -1178,14 +1043,14 @@ dependencies = [ "gobject-sys", "libc", "pango-sys", - "system-deps 6.0.5", + "system-deps", ] [[package]] name = "gtk3-macros" -version = "0.15.6" +version = "0.16.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "684c0456c086e8e7e9af73ec5b84e35938df394712054550e81558d21c44ab0d" +checksum = "096eb63c6fedf03bafe65e5924595785eaf1bcb7200dac0f2cbe9c9738f05ad8" dependencies = [ "anyhow", "proc-macro-crate", @@ -1201,21 +1066,21 @@ version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" +[[package]] +name = "half" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02b4af3693f1b705df946e9fe5631932443781d0aabb423b62fcd4d73f6d2fd0" +dependencies = [ + "crunchy", +] + [[package]] name = "hashbrown" version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" -[[package]] -name = "heck" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" -dependencies = [ - "unicode-segmentation", -] - [[package]] name = "heck" version = "0.4.1" @@ -1231,12 +1096,6 @@ dependencies = [ "libc", ] -[[package]] -name = "hermit-abi" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" - [[package]] name = "hound" version = "3.5.0" @@ -1244,78 +1103,35 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4d13cdbd5dbb29f9c88095bbdc2590c9cba0d0a1269b983fef6b2cdd7e9f4db1" [[package]] -name = "html5ever" -version = "0.25.2" +name = "humantime" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5c13fb08e5d4dfc151ee5e88bae63f7773d61852f3bdc73c9f4b9e1bde03148" +checksum = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f" dependencies = [ - "log", - "mac", - "markup5ever", - "proc-macro2", - "quote", - "syn 1.0.109", + "quick-error", ] [[package]] -name = "http" -version = "0.2.9" +name = "iana-time-zone" +version = "0.1.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" +checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613" dependencies = [ - "bytes", - "fnv", - "itoa 1.0.6", + "android_system_properties", + "core-foundation-sys 0.8.4", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows 0.48.0", ] [[package]] -name = "http-range" -version = "0.1.5" +name = "iana-time-zone-haiku" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21dec9db110f5f872ed9699c3ecf50cf16f423502706ba5c72462e28d3157573" - -[[package]] -name = "ico" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "031530fe562d8c8d71c0635013d6d155bbfe8ba0aa4b4d2d24ce8af6b71047bd" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" dependencies = [ - "byteorder", - "png", -] - -[[package]] -name = "ident_case" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" - -[[package]] -name = "idna" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" -dependencies = [ - "unicode-bidi", - "unicode-normalization", -] - -[[package]] -name = "ignore" -version = "0.4.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "713f1b139373f96a2e0ce3ac931cd01ee973c3c5dd7c40c0c2efe96ad2b6751d" -dependencies = [ - "crossbeam-utils", - "globset", - "lazy_static", - "log", - "memchr", - "regex", - "same-file", - "thread_local", - "walkdir", - "winapi-util", + "cc", ] [[package]] @@ -1327,8 +1143,14 @@ dependencies = [ "bytemuck", "byteorder", "color_quant", + "exr", + "gif", + "jpeg-decoder", "num-rational", "num-traits", + "png", + "qoi", + "tiff", ] [[package]] @@ -1341,15 +1163,6 @@ dependencies = [ "hashbrown", ] -[[package]] -name = "infer" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20b2b533137b9cad970793453d4f921c2e91312a6d88b1085c07bc15fc51bb3b" -dependencies = [ - "cfb", -] - [[package]] name = "instant" version = "0.1.12" @@ -1357,24 +1170,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" dependencies = [ "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", ] [[package]] -name = "io-lifetimes" -version = "1.0.10" +name = "is_debug" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c66c74d2ae7e79a5a8f7ac924adbe38ee42a859c6539ad869eb51f0b52dc220" -dependencies = [ - "hermit-abi 0.3.1", - "libc", - "windows-sys 0.48.0", -] - -[[package]] -name = "itoa" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" +checksum = "06d198e9919d9822d5f7083ba8530e04de87841eaf21ead9af8f2304efd57c89" [[package]] name = "itoa" @@ -1384,54 +1189,29 @@ checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" [[package]] name = "jarvis-app" -version = "0.0.2" +version = "0.0.3" dependencies = [ - "arc-swap", "atomic_enum", "hound", - "lazy_static", + "image", + "kira", "log", "once_cell", - "peak_alloc", - "pickledb", + "platform-dirs", "portaudio", "pv_porcupine", "pv_recorder", - "rand 0.8.5", + "rand", "rodio", "rustpotter", "seqdiff", "serde", "serde_json", - "serde_yaml", - "simple-logging", - "systemstat", - "tauri", - "tauri-build", + "serde_yaml 0.9.21", + "simple-log", + "tray-icon", "vosk", -] - -[[package]] -name = "javascriptcore-rs" -version = "0.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf053e7843f2812ff03ef5afe34bb9c06ffee120385caad4f6b9967fcd37d41c" -dependencies = [ - "bitflags 1.3.2", - "glib", - "javascriptcore-rs-sys", -] - -[[package]] -name = "javascriptcore-rs-sys" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "905fbb87419c5cde6e3269537e4ea7d46431f3008c5d057e915ef3f115e7793c" -dependencies = [ - "glib-sys", - "gobject-sys", - "libc", - "system-deps 5.0.0", + "winit", ] [[package]] @@ -1478,35 +1258,46 @@ dependencies = [ ] [[package]] -name = "js-sys" -version = "0.3.61" +name = "jpeg-decoder" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730" +checksum = "bc0000e42512c92e31c2252315bda326620a4e034105e900c98ec492fa077b3e" +dependencies = [ + "rayon", +] + +[[package]] +name = "js-sys" +version = "0.3.63" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f37a4a5928311ac501dee68b3c7613a1037d0edb30c8e5427bd832d55d1b790" dependencies = [ "wasm-bindgen", ] [[package]] -name = "json-patch" -version = "0.2.7" +name = "keyboard-types" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb3fa5a61630976fc4c353c70297f2e93f1930e3ccee574d59d618ccbd5154ce" +checksum = "0b7668b7cff6a51fe61cdde64cd27c8a220786f399501b57ebe36f7d8112fd68" dependencies = [ + "bitflags 1.3.2", "serde", - "serde_json", - "treediff", + "unicode-segmentation", ] [[package]] -name = "kuchiki" -version = "0.8.1" +name = "kira" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ea8e9c6e031377cff82ee3001dc8026cdf431ed4e2e6b51f98ab8c73484a358" +checksum = "3974058fcf12557b10602f1145fd22d554815f0fb2fdc470441828cc0effa74e" dependencies = [ - "cssparser", - "html5ever", - "matches", - "selectors", + "atomic-arena", + "cpal", + "glam", + "mint", + "ringbuf", + "symphonia", ] [[package]] @@ -1521,6 +1312,12 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" +[[package]] +name = "lebe" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8" + [[package]] name = "lewton" version = "0.10.2" @@ -1533,10 +1330,34 @@ dependencies = [ ] [[package]] -name = "libc" -version = "0.2.142" +name = "libappindicator" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a987beff54b60ffa6d51982e1aa1146bc42f19bd26be28b0586f252fccf5317" +checksum = "89e1edfdc9b0853358306c6dfb4b77c79c779174256fe93d80c0b5ebca451a2f" +dependencies = [ + "glib", + "gtk", + "gtk-sys", + "libappindicator-sys", + "log", +] + +[[package]] +name = "libappindicator-sys" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08fcb2bea89cee9613982501ec83eaa2d09256b24540ae463c52a28906163918" +dependencies = [ + "gtk-sys", + "libloading", + "once_cell", +] + +[[package]] +name = "libc" +version = "0.2.146" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b" [[package]] name = "libloading" @@ -1549,25 +1370,35 @@ dependencies = [ ] [[package]] -name = "line-wrap" -version = "0.1.1" +name = "libxdo" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f30344350a2a51da54c1d53be93fade8a237e545dbcc4bdbe635413f2117cab9" +checksum = "00333b8756a3d28e78def82067a377de7fa61b24909000aeaa2b446a948d14db" dependencies = [ - "safemem", + "libxdo-sys", ] [[package]] -name = "linux-raw-sys" -version = "0.3.3" +name = "libxdo-sys" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b085a4f2cde5781fc4b1717f2e86c62f5cda49de7ba99a7c2eae02b61c9064c" +checksum = "db23b9e7e2b7831bbd8aac0bbeeeb7b68cbebc162b227e7052e8e55829a09212" +dependencies = [ + "libc", + "x11", +] + +[[package]] +name = "linked-hash-map" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" [[package]] name = "lock_api" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" +checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" dependencies = [ "autocfg", "scopeguard", @@ -1575,33 +1406,42 @@ dependencies = [ [[package]] name = "log" -version = "0.4.17" +version = "0.4.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" +checksum = "518ef76f2f87365916b142844c16d8fefd85039bc5699050210a7778ee1cd1de" dependencies = [ - "cfg-if", -] - -[[package]] -name = "loom" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff50ecb28bb86013e935fb6683ab1f6d3a20016f123c76fd4c27470076ac30f5" -dependencies = [ - "cfg-if", - "generator", - "scoped-tls", "serde", - "serde_json", - "tracing", - "tracing-subscriber", ] [[package]] -name = "mac" -version = "0.1.1" +name = "log-mdc" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" +checksum = "a94d21414c1f4a51209ad204c1776a3d0765002c76c6abcb602a6f09f1e881c7" + +[[package]] +name = "log4rs" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1e1ad45e4584824d760c35d71868dd7e6e5acd8f5195a9573743b369fc86cd6" +dependencies = [ + "arc-swap", + "chrono", + "flate2", + "fnv", + "humantime", + "libc", + "log", + "log-mdc", + "parking_lot 0.11.2", + "serde", + "serde-value", + "serde_derive", + "serde_json", + "serde_yaml 0.8.26", + "thread-id", + "winapi", +] [[package]] name = "mach2" @@ -1621,41 +1461,30 @@ dependencies = [ "libc", ] -[[package]] -name = "markup5ever" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a24f40fb03852d1cdd84330cddcaf98e9ec08a7b7768e952fad3b4cf048ec8fd" -dependencies = [ - "log", - "phf 0.8.0", - "phf_codegen", - "string_cache", - "string_cache_codegen", - "tendril", -] - -[[package]] -name = "matchers" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" -dependencies = [ - "regex-automata", -] - -[[package]] -name = "matches" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" - [[package]] name = "memchr" version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" +[[package]] +name = "memmap2" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" +dependencies = [ + "libc", +] + +[[package]] +name = "memoffset" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" +dependencies = [ + "autocfg", +] + [[package]] name = "memoffset" version = "0.8.0" @@ -1665,21 +1494,21 @@ dependencies = [ "autocfg", ] +[[package]] +name = "memoffset" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" +dependencies = [ + "autocfg", +] + [[package]] name = "minimal-lexical" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" -[[package]] -name = "miniz_oxide" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa" -dependencies = [ - "adler", -] - [[package]] name = "miniz_oxide" version = "0.7.1" @@ -1691,16 +1520,50 @@ dependencies = [ ] [[package]] -name = "ndk" -version = "0.6.0" +name = "mint" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2032c77e030ddee34a6787a64166008da93f6a352b629261d0fee232b8742dd4" +checksum = "e53debba6bda7a793e5f99b8dacf19e626084f525f7829104ba9898f367d85ff" + +[[package]] +name = "mio" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" dependencies = [ - "bitflags 1.3.2", - "jni-sys", - "ndk-sys 0.3.0", - "num_enum", + "libc", + "log", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys 0.48.0", +] + +[[package]] +name = "muda" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3c820db003e601413e835a33b10cf51452b6415ef34ff1d862401826431c675" +dependencies = [ + "cocoa", + "crossbeam-channel", + "gdk", + "gdk-pixbuf", + "gtk", + "keyboard-types", + "libxdo", + "objc", + "once_cell", + "png", "thiserror", + "windows-sys 0.48.0", +] + +[[package]] +name = "nanorand" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" +dependencies = [ + "getrandom", ] [[package]] @@ -1711,7 +1574,7 @@ checksum = "451422b7e4718271c8b5b3aadf5adedba43dc76312454b387e98fae0fc951aa0" dependencies = [ "bitflags 1.3.2", "jni-sys", - "ndk-sys 0.4.1+23.1.7779620", + "ndk-sys", "num_enum", "raw-window-handle", "thiserror", @@ -1723,15 +1586,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" -[[package]] -name = "ndk-sys" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e5a6ae77c8ee183dcbbba6150e2e6b9f3f4196a7666c02a715a95692ec1fa97" -dependencies = [ - "jni-sys", -] - [[package]] name = "ndk-sys" version = "0.4.1+23.1.7779620" @@ -1741,12 +1595,6 @@ dependencies = [ "jni-sys", ] -[[package]] -name = "new_debug_unreachable" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54" - [[package]] name = "nix" version = "0.24.3" @@ -1756,13 +1604,21 @@ dependencies = [ "bitflags 1.3.2", "cfg-if", "libc", + "memoffset 0.6.5", ] [[package]] -name = "nodrop" -version = "0.1.14" +name = "nix" +version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" +checksum = "f346ff70e7dbfd675fe90590b92d59ef2de15a8779ae305ebcbfd3f0caf59be4" +dependencies = [ + "autocfg", + "bitflags 1.3.2", + "cfg-if", + "libc", + "memoffset 0.6.5", +] [[package]] name = "nom" @@ -1774,16 +1630,6 @@ dependencies = [ "minimal-lexical", ] -[[package]] -name = "nu-ansi-term" -version = "0.46.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" -dependencies = [ - "overload", - "winapi", -] - [[package]] name = "num" version = "0.1.42" @@ -1862,7 +1708,7 @@ version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" dependencies = [ - "hermit-abi 0.2.6", + "hermit-abi", "libc", ] @@ -1894,36 +1740,32 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" dependencies = [ "malloc_buf", - "objc_exception", ] [[package]] -name = "objc-foundation" -version = "0.1.1" +name = "objc-sys" +version = "0.2.0-beta.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9" +checksum = "df3b9834c1e95694a05a828b59f55fa2afec6288359cda67146126b3f90a55d7" + +[[package]] +name = "objc2" +version = "0.3.0-beta.3.patch-leaks.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e01640f9f2cb1220bbe80325e179e532cb3379ebcd1bf2279d703c19fe3a468" dependencies = [ - "block", - "objc", - "objc_id", + "block2", + "objc-sys", + "objc2-encode", ] [[package]] -name = "objc_exception" -version = "0.1.2" +name = "objc2-encode" +version = "2.0.0-pre.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad970fb455818ad6cba4c122ad012fae53ae8b4795f86378bce65e4f6bab2ca4" +checksum = "abfcac41015b00a120608fdaa6938c44cb983fee294351cc4bac7638b4e50512" dependencies = [ - "cc", -] - -[[package]] -name = "objc_id" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b" -dependencies = [ - "objc", + "objc-sys", ] [[package]] @@ -1933,7 +1775,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8868cc237ee02e2d9618539a23a8d228b9bb3fc2e7a5b11eed3831de77c395d0" dependencies = [ "jni 0.20.0", - "ndk 0.7.0", + "ndk", "ndk-context", "num-derive", "num-traits", @@ -1960,33 +1802,45 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.17.1" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" +checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" [[package]] -name = "open" -version = "3.2.0" +name = "orbclient" +version = "0.3.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2078c0039e6a54a0c42c28faa984e115fb4c2d5bf2208f77d1961002df8576f8" +checksum = "221d488cd70617f1bd599ed8ceb659df2147d9393717954d82a0f5e8032a6ab1" dependencies = [ - "pathdiff", - "windows-sys 0.42.0", + "redox_syscall 0.3.5", ] [[package]] -name = "overload" -version = "0.1.1" +name = "ordered-float" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" +checksum = "3305af35278dd29f46fcdd139e0b1fbfae2153f0e5928b39b035542dd31e37b7" +dependencies = [ + "num-traits", +] + +[[package]] +name = "owned_ttf_parser" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "706de7e2214113d63a8238d1910463cfce781129a6f263d13fdb09ff64355ba4" +dependencies = [ + "ttf-parser", +] [[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", + "gio", "glib", "libc", "once_cell", @@ -1995,14 +1849,25 @@ 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.5", + "system-deps", +] + +[[package]] +name = "parking_lot" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" +dependencies = [ + "instant", + "lock_api", + "parking_lot_core 0.8.6", ] [[package]] @@ -2012,39 +1877,35 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" dependencies = [ "lock_api", - "parking_lot_core", + "parking_lot_core 0.9.8", ] [[package]] name = "parking_lot_core" -version = "0.9.7" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9069cbb9f99e3a5083476ccb29ceb1de18b9118cafa53e90c9551235de2b9521" +checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" dependencies = [ "cfg-if", + "instant", "libc", "redox_syscall 0.2.16", "smallvec", - "windows-sys 0.45.0", + "winapi", ] [[package]] -name = "paste" -version = "1.0.12" +name = "parking_lot_core" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f746c4065a8fa3fe23974dd82f15431cc8d40779821001404d10d2e79ca7d79" - -[[package]] -name = "pathdiff" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" - -[[package]] -name = "peak_alloc" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84d3978b0aa7d46c34452384c28264ac859c652b67635f6acfd598e1b6608de5" +checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall 0.3.5", + "smallvec", + "windows-targets 0.48.0", +] [[package]] name = "peeking_take_while" @@ -2054,116 +1915,28 @@ checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" [[package]] name = "percent-encoding" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" +checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" [[package]] -name = "phf" -version = "0.8.0" +name = "pin-project" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dfb61232e34fcb633f43d12c58f83c1df82962dcdfa565a4e866ffc17dafe12" +checksum = "c95a7476719eab1e366eaf73d0260af3021184f18177925b07f54b30089ceead" dependencies = [ - "phf_macros 0.8.0", - "phf_shared 0.8.0", - "proc-macro-hack", + "pin-project-internal", ] [[package]] -name = "phf" -version = "0.10.1" +name = "pin-project-internal" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259" +checksum = "39407670928234ebc5e6e580247dd567ad73a3578460c5990f9503df207e8f07" dependencies = [ - "phf_macros 0.10.0", - "phf_shared 0.10.0", - "proc-macro-hack", -] - -[[package]] -name = "phf_codegen" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbffee61585b0411840d3ece935cce9cb6321f01c45477d30066498cd5e1a815" -dependencies = [ - "phf_generator 0.8.0", - "phf_shared 0.8.0", -] - -[[package]] -name = "phf_generator" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17367f0cc86f2d25802b2c26ee58a7b23faeccf78a396094c13dced0d0182526" -dependencies = [ - "phf_shared 0.8.0", - "rand 0.7.3", -] - -[[package]] -name = "phf_generator" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6" -dependencies = [ - "phf_shared 0.10.0", - "rand 0.8.5", -] - -[[package]] -name = "phf_macros" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f6fde18ff429ffc8fe78e2bf7f8b7a5a5a6e2a8b58bc5a9ac69198bbda9189c" -dependencies = [ - "phf_generator 0.8.0", - "phf_shared 0.8.0", - "proc-macro-hack", "proc-macro2", "quote", - "syn 1.0.109", -] - -[[package]] -name = "phf_macros" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58fdf3184dd560f160dd73922bea2d5cd6e8f064bf4b13110abd81b03697b4e0" -dependencies = [ - "phf_generator 0.10.0", - "phf_shared 0.10.0", - "proc-macro-hack", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "phf_shared" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c00cf8b9eafe68dde5e9eaa2cef8ee84a9336a47d566ec55ca16589633b65af7" -dependencies = [ - "siphasher", -] - -[[package]] -name = "phf_shared" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" -dependencies = [ - "siphasher", -] - -[[package]] -name = "pickledb" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c53a5ade47760e8cc4986bdc5e72daeffaaaee64cbc374f9cfe0a00c1cd87b1f" -dependencies = [ - "serde", - "serde_json", + "syn 2.0.18", ] [[package]] @@ -2180,22 +1953,17 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkg-config" -version = "0.3.26" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" +checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" [[package]] -name = "plist" -version = "1.4.3" +name = "platform-dirs" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bd9647b268a3d3e14ff09c23201133a62589c658db02bb7388c7246aafe0590" +checksum = "e188d043c1a692985f78b5464853a263f1a27e5bd6322bad3a4078ee3c998a38" dependencies = [ - "base64 0.21.0", - "indexmap", - "line-wrap", - "quick-xml", - "serde", - "time", + "dirs-next 1.0.2", ] [[package]] @@ -2208,7 +1976,7 @@ dependencies = [ "crc32fast", "fdeflate", "flate2", - "miniz_oxide 0.7.1", + "miniz_oxide", ] [[package]] @@ -2229,12 +1997,6 @@ version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" -[[package]] -name = "precomputed-hash" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" - [[package]] name = "primal-check" version = "0.3.3" @@ -2278,26 +2040,20 @@ dependencies = [ "version_check", ] -[[package]] -name = "proc-macro-hack" -version = "0.5.20+deprecated" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" - [[package]] name = "proc-macro2" -version = "1.0.56" +version = "1.0.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b63bdb0cd06f1f4dedf69b254734f9b45af66e4a031e42a7480257d9898b435" +checksum = "dec2b086b7a862cf4de201096214fa870344cf922b2b30c167badb3af3195406" dependencies = [ "unicode-ident", ] [[package]] name = "pv_porcupine" -version = "2.2.0" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae03954126b8952a4cb30630db971502953feb06786003dc86afc6329082fd78" +checksum = "ae7af04db856a9c23f9f35f5b4b3a224dc4d16555a0f1079f3573127f429d102" dependencies = [ "libc", "libloading", @@ -2305,46 +2061,38 @@ dependencies = [ [[package]] name = "pv_recorder" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae96949bb558aada42e66de6fe37d57e365db61e6c3f7bda0413de22daab6c1a" +checksum = "695fa4ace21418ae0dd58626babf2c7a40db6b8e12dd371f1eb297328f7de927" dependencies = [ "libc", "libloading", ] [[package]] -name = "quick-xml" -version = "0.28.2" +name = "qoi" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ce5e73202a820a31f8a0ee32ada5e21029c81fd9e3ebf668a40832e4219d9d1" +checksum = "7f6d64c71eb498fe9eae14ce4ec935c555749aef511cca85b5568910d6e48001" dependencies = [ - "memchr", + "bytemuck", ] +[[package]] +name = "quick-error" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" + [[package]] name = "quote" -version = "1.0.26" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc" +checksum = "1b9ab9c7eadfd8df19006f1cf1a4aed13540ed5cbc047010ece5826e10825488" dependencies = [ "proc-macro2", ] -[[package]] -name = "rand" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" -dependencies = [ - "getrandom 0.1.16", - "libc", - "rand_chacha 0.2.2", - "rand_core 0.5.1", - "rand_hc", - "rand_pcg", -] - [[package]] name = "rand" version = "0.8.5" @@ -2352,18 +2100,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", - "rand_chacha 0.3.1", - "rand_core 0.6.4", -] - -[[package]] -name = "rand_chacha" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" -dependencies = [ - "ppv-lite86", - "rand_core 0.5.1", + "rand_chacha", + "rand_core", ] [[package]] @@ -2373,16 +2111,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core 0.6.4", -] - -[[package]] -name = "rand_core" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" -dependencies = [ - "getrandom 0.1.16", + "rand_core", ] [[package]] @@ -2391,38 +2120,45 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.9", -] - -[[package]] -name = "rand_hc" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" -dependencies = [ - "rand_core 0.5.1", -] - -[[package]] -name = "rand_pcg" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429" -dependencies = [ - "rand_core 0.5.1", + "getrandom", ] [[package]] name = "raw-window-handle" -version = "0.5.2" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9" +checksum = "ed7e3d950b66e19e0c372f3fa3fbbcf85b1746b571f74e0c2af6042a5c93420a" +dependencies = [ + "cty", +] + +[[package]] +name = "rayon" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" +dependencies = [ + "crossbeam-channel", + "crossbeam-deque", + "crossbeam-utils", + "num_cpus", +] [[package]] name = "realfft" -version = "3.2.0" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d6b8e8f0c6d2234aa58048d7290c60bf92cd36fd2888cd8331c66ad4f2e1d2" +checksum = "953d9f7e5cdd80963547b456251296efc2626ed4e3cbf36c869d9564e0220571" dependencies = [ "rustfft", ] @@ -2457,65 +2193,33 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" dependencies = [ - "getrandom 0.2.9", + "getrandom", "redox_syscall 0.2.16", "thiserror", ] [[package]] name = "regex" -version = "1.8.0" +version = "1.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac6cf59af1067a3fb53fbe5c88c053764e930f932be1d71d3ffe032cbe147f59" +checksum = "d0ab3ca65655bb1e41f2a8c8cd662eb4fb035e67c3f78da1d61dffe89d07300f" dependencies = [ - "aho-corasick 1.0.1", - "memchr", - "regex-syntax 0.7.0", -] - -[[package]] -name = "regex-automata" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" -dependencies = [ - "regex-syntax 0.6.29", + "regex-syntax", ] [[package]] name = "regex-syntax" -version = "0.6.29" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" +checksum = "436b050e76ed2903236f032a59761c1eb99e1b0aead2c257922771dab1fc8c78" [[package]] -name = "regex-syntax" -version = "0.7.0" +name = "ringbuf" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6868896879ba532248f33598de5181522d8b3d9d724dfd230911e1a7d4822f5" - -[[package]] -name = "rfd" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0149778bd99b6959285b0933288206090c50e2327f47a9c463bfdbf45c8823ea" +checksum = "79abed428d1fd2a128201cec72c5f6938e2da607c6f3745f769fabea399d950a" dependencies = [ - "block", - "dispatch", - "glib-sys", - "gobject-sys", - "gtk-sys", - "js-sys", - "lazy_static", - "log", - "objc", - "objc-foundation", - "objc_id", - "raw-window-handle", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "windows 0.37.0", + "crossbeam-utils", ] [[package]] @@ -2573,20 +2277,6 @@ dependencies = [ "version_check", ] -[[package]] -name = "rustix" -version = "0.37.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f79bef90eb6d984c72722595b5b1348ab39275a5e5123faca6863bf07d75a4e0" -dependencies = [ - "bitflags 1.3.2", - "errno", - "io-lifetimes", - "libc", - "linux-raw-sys", - "windows-sys 0.48.0", -] - [[package]] name = "rustpotter" version = "2.0.0" @@ -2600,24 +2290,12 @@ dependencies = [ "serde", ] -[[package]] -name = "rustversion" -version = "1.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f3208ce4d8448b3f3e7d168a73f5e0c43a61e32930de3bceeccedb388b6bf06" - [[package]] name = "ryu" version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" -[[package]] -name = "safemem" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072" - [[package]] name = "same-file" version = "1.0.6" @@ -2640,23 +2318,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" [[package]] -name = "selectors" -version = "0.22.0" +name = "sctk-adwaita" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df320f1889ac4ba6bc0cdc9c9af7af4bd64bb927bccdf32d81140dc1f9be12fe" +checksum = "cda4e97be1fd174ccc2aae81c8b694e803fa99b34e8fd0f057a9d70698e3ed09" dependencies = [ - "bitflags 1.3.2", - "cssparser", - "derive_more", - "fxhash", + "ab_glyph", "log", - "matches", - "phf 0.8.0", - "phf_codegen", - "precomputed-hash", - "servo_arc", - "smallvec", - "thin-slice", + "memmap2", + "smithay-client-toolkit", + "tiny-skia", ] [[package]] @@ -2664,9 +2335,6 @@ name = "semver" version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed" -dependencies = [ - "serde", -] [[package]] name = "seqdiff" @@ -2676,22 +2344,32 @@ checksum = "e058ed56aee6d266fa5aa7809f99899b07d350c30aecd4f3d859b4f0d9dbbbdf" [[package]] name = "serde" -version = "1.0.160" +version = "1.0.164" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb2f3770c8bce3bcda7e149193a069a0f4365bda1fa5cd88e03bca26afc1216c" +checksum = "9e8c8cf938e98f769bc164923b06dce91cea1751522f46f8466461af04c9027d" dependencies = [ "serde_derive", ] [[package]] -name = "serde_derive" -version = "1.0.160" +name = "serde-value" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291a097c63d8497e00160b166a967a4a79c64f3facdd01cbd7502231688d77df" +checksum = "5a65a7291a8a568adcae4c10a677ebcedbc6c9cec91c054dee2ce40b0e3290eb" +dependencies = [ + "ordered-float", + "serde", +] + +[[package]] +name = "serde_derive" +version = "1.0.164" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9735b638ccc51c28bf6914d90a2e9725b377144fc612c49a611fddd1b631d68" dependencies = [ "proc-macro2", "quote", - "syn 2.0.15", + "syn 2.0.18", ] [[package]] @@ -2700,51 +2378,30 @@ version = "1.0.96" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "057d394a50403bcac12672b2b18fb387ab6d289d957dab67dd201875391e52f1" dependencies = [ - "itoa 1.0.6", + "itoa", "ryu", "serde", ] -[[package]] -name = "serde_repr" -version = "0.1.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcec881020c684085e55a25f7fd888954d56609ef363479dc5a1305eb0d40cab" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.15", -] - [[package]] name = "serde_spanned" -version = "0.6.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0efd8caf556a6cebd3b285caf480045fcc1ac04f6bd786b09a6f11af30c4fcf4" +checksum = "93107647184f6027e3b7dcb2e11034cf95ffa1e3a682c67951963ac69c1c007d" dependencies = [ "serde", ] [[package]] -name = "serde_with" -version = "1.14.0" +name = "serde_yaml" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "678b5a069e50bf00ecd22d0cd8ddf7c236f68581b03db652061ed5eb13a312ff" +checksum = "578a7433b776b56a35785ed5ce9a7e777ac0598aac5a6dd1b4b18a307c7fc71b" dependencies = [ + "indexmap", + "ryu", "serde", - "serde_with_macros", -] - -[[package]] -name = "serde_with_macros" -version = "1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e182d6ec6f05393cc0e5ed1bf81ad6db3a8feedf8ee515ecdd369809bcce8082" -dependencies = [ - "darling", - "proc-macro2", - "quote", - "syn 1.0.109", + "yaml-rust", ] [[package]] @@ -2754,64 +2411,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9d684e3ec7de3bf5466b32bd75303ac16f0736426e5a4e0d6e489559ce1249c" dependencies = [ "indexmap", - "itoa 1.0.6", + "itoa", "ryu", "serde", "unsafe-libyaml", ] -[[package]] -name = "serialize-to-javascript" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9823f2d3b6a81d98228151fdeaf848206a7855a7a042bbf9bf870449a66cafb" -dependencies = [ - "serde", - "serde_json", - "serialize-to-javascript-impl", -] - -[[package]] -name = "serialize-to-javascript-impl" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74064874e9f6a15f04c1f3cb627902d0e6b410abbf36668afa873c61889f1763" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "servo_arc" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d98238b800e0d1576d8b6e3de32827c2d74bee68bb97748dcf5071fb53965432" -dependencies = [ - "nodrop", - "stable_deref_trait", -] - -[[package]] -name = "sha2" -version = "0.10.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - -[[package]] -name = "sharded-slab" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" -dependencies = [ - "lazy_static", -] - [[package]] name = "shlex" version = "1.1.0" @@ -2825,22 +2430,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "238abfbb77c1915110ad968465608b68e869e0772622c9656714e73e5a1a522f" [[package]] -name = "simple-logging" -version = "2.0.2" +name = "simple-log" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b00d48e85675326bb182a2286ea7c1a0b264333ae10f27a937a72be08628b542" +checksum = "110feefe2a808cadb7fe8c07c615ac82e899f1795fec063ed2fb1d72de5d417b" dependencies = [ - "lazy_static", + "convert_case", + "is_debug", "log", - "thread-id", + "log4rs", + "once_cell", + "serde", ] -[[package]] -name = "siphasher" -version = "0.3.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de" - [[package]] name = "slab" version = "0.4.8" @@ -2850,6 +2452,15 @@ dependencies = [ "autocfg", ] +[[package]] +name = "slotmap" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1e08e261d0e8f5c43123b7adf3e4ca1690d655377ac93a03b2c9d3e98de1342" +dependencies = [ + "version_check", +] + [[package]] name = "smallvec" version = "1.10.0" @@ -2857,46 +2468,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" [[package]] -name = "soup2" -version = "0.2.1" +name = "smithay-client-toolkit" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2b4d76501d8ba387cf0fefbe055c3e0a59891d09f0f995ae4e4b16f6b60f3c0" +checksum = "f307c47d32d2715eb2e0ece5589057820e0e5e70d07c247d1063e844e107f454" dependencies = [ "bitflags 1.3.2", - "gio", - "glib", - "libc", - "once_cell", - "soup2-sys", + "calloop", + "dlib", + "lazy_static", + "log", + "memmap2", + "nix 0.24.3", + "pkg-config", + "wayland-client", + "wayland-cursor", + "wayland-protocols", ] [[package]] -name = "soup2-sys" -version = "0.2.0" +name = "spin" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "009ef427103fcb17f802871647a7fa6c60cbb654b4c4e4c0ac60a31c5f6dc9cf" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" dependencies = [ - "bitflags 1.3.2", - "gio-sys", - "glib-sys", - "gobject-sys", - "libc", - "system-deps 5.0.0", -] - -[[package]] -name = "stable_deref_trait" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" - -[[package]] -name = "state" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbe866e1e51e8260c9eed836a042a5e7f6726bb2b411dffeaa712e19c388f23b" -dependencies = [ - "loom", + "lock_api", ] [[package]] @@ -2906,54 +2502,45 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82" [[package]] -name = "string_cache" -version = "0.8.7" +name = "strict-num" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" -dependencies = [ - "new_debug_unreachable", - "once_cell", - "parking_lot", - "phf_shared 0.10.0", - "precomputed-hash", - "serde", -] - -[[package]] -name = "string_cache_codegen" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bb30289b722be4ff74a408c3cc27edeaad656e06cb1fe8fa9231fa59c728988" -dependencies = [ - "phf_generator 0.10.0", - "phf_shared 0.10.0", - "proc-macro2", - "quote", -] - -[[package]] -name = "strsim" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" +checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731" [[package]] name = "symphonia" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3671dd6f64f4f9d5c87179525054cfc1f60de23ba1f193bd6ceab812737403f1" +checksum = "62e48dba70095f265fdb269b99619b95d04c89e619538138383e63310b14d941" dependencies = [ "lazy_static", + "symphonia-bundle-flac", "symphonia-bundle-mp3", + "symphonia-codec-pcm", + "symphonia-codec-vorbis", "symphonia-core", + "symphonia-format-ogg", + "symphonia-format-wav", "symphonia-metadata", ] [[package]] -name = "symphonia-bundle-mp3" -version = "0.5.2" +name = "symphonia-bundle-flac" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55a0846e7a2c9a8081ff799fc83a975170417ad2a143f644a77ec2e3e82a2b73" +checksum = "7f23b0482a7cb18fcdf9981ab0b78df800ef0080187d294650023c462439058d" +dependencies = [ + "log", + "symphonia-core", + "symphonia-metadata", + "symphonia-utils-xiph", +] + +[[package]] +name = "symphonia-bundle-mp3" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f31d7fece546f1e6973011a9eceae948133bbd18fd3d52f6073b1e38ae6368a" dependencies = [ "bitflags 1.3.2", "lazy_static", @@ -2963,10 +2550,31 @@ dependencies = [ ] [[package]] -name = "symphonia-core" -version = "0.5.2" +name = "symphonia-codec-pcm" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b9567e2d8a5f866b2f94f5d366d811e0c6826babcff6d37de9e1a6690d38869" +checksum = "47f1fbd220a06a641c8ce2ddad10f5ef6ee5cc0c54d9044d25d43b0d3119deaa" +dependencies = [ + "log", + "symphonia-core", +] + +[[package]] +name = "symphonia-codec-vorbis" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3953397e3506aa01350c4205817e4f95b58d476877a42f0458d07b665749e203" +dependencies = [ + "log", + "symphonia-core", + "symphonia-utils-xiph", +] + +[[package]] +name = "symphonia-core" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7c73eb88fee79705268cc7b742c7bc93a7b76e092ab751d0833866970754142" dependencies = [ "arrayvec", "bitflags 1.3.2", @@ -2976,10 +2584,33 @@ dependencies = [ ] [[package]] -name = "symphonia-metadata" -version = "0.5.2" +name = "symphonia-format-ogg" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acd35c263223ef6161000be79b124a75de3e065eea563bf3ef169b3e94c7bb2e" +checksum = "9bf1a00ccd11452d44048a0368828040f778ae650418dbd9d8765b7ee2574c8d" +dependencies = [ + "log", + "symphonia-core", + "symphonia-metadata", + "symphonia-utils-xiph", +] + +[[package]] +name = "symphonia-format-wav" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da76614728fa27c003bdcdfbac51396bd8fcbf94c95fe8e62f1d2bac58ef03a4" +dependencies = [ + "log", + "symphonia-core", + "symphonia-metadata", +] + +[[package]] +name = "symphonia-metadata" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89c3e1937e31d0e068bbe829f66b2f2bfaa28d056365279e0ef897172c3320c0" dependencies = [ "encoding_rs", "lazy_static", @@ -2987,6 +2618,16 @@ dependencies = [ "symphonia-core", ] +[[package]] +name = "symphonia-utils-xiph" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a450ca645b80d69aff8b35576cbfdc7f20940b29998202aab910045714c951f8" +dependencies = [ + "symphonia-core", + "symphonia-metadata", +] + [[package]] name = "syn" version = "1.0.109" @@ -3000,9 +2641,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.15" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a34fcf3e8b60f57e6a14301a2e916d323af98b0ea63c599441eec8558660c822" +checksum = "32d41677bcbe24c20c52e7c70b0d8db04134c5d1066bf98662e2871ad200ea3e" dependencies = [ "proc-macro2", "quote", @@ -3011,308 +2652,22 @@ dependencies = [ [[package]] name = "system-deps" -version = "5.0.0" +version = "6.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18db855554db7bd0e73e06cf7ba3df39f97812cb11d3f75e71c39bf45171797e" +checksum = "e5fa6fb9ee296c0dc2df41a656ca7948546d061958115ddb0bcaae43ad0d17d2" dependencies = [ - "cfg-expr 0.9.1", - "heck 0.3.3", + "cfg-expr", + "heck", "pkg-config", - "toml 0.5.11", - "version-compare 0.0.11", -] - -[[package]] -name = "system-deps" -version = "6.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0fe581ad25d11420b873cf9aedaca0419c2b411487b134d4d21065f3d092055" -dependencies = [ - "cfg-expr 0.15.1", - "heck 0.4.1", - "pkg-config", - "toml 0.7.3", - "version-compare 0.1.1", -] - -[[package]] -name = "systemstat" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a24aec24a9312c83999a28e3ef9db7e2afd5c64bf47725b758cdc1cafd5b0bd2" -dependencies = [ - "bytesize", - "lazy_static", - "libc", - "nom", - "time", - "winapi", -] - -[[package]] -name = "tao" -version = "0.15.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac8e6399427c8494f9849b58694754d7cc741293348a6836b6c8d2c5aa82d8e6" -dependencies = [ - "bitflags 1.3.2", - "cairo-rs", - "cc", - "cocoa", - "core-foundation", - "core-graphics", - "crossbeam-channel", - "dispatch", - "gdk", - "gdk-pixbuf", - "gdk-sys", - "gdkx11-sys", - "gio", - "glib", - "glib-sys", - "gtk", - "image", - "instant", - "jni 0.20.0", - "lazy_static", - "libc", - "log", - "ndk 0.6.0", - "ndk-context", - "ndk-sys 0.3.0", - "objc", - "once_cell", - "parking_lot", - "paste", - "png", - "raw-window-handle", - "scopeguard", - "serde", - "unicode-segmentation", - "uuid 1.3.1", - "windows 0.39.0", - "windows-implement", - "x11-dl", -] - -[[package]] -name = "tar" -version = "0.4.38" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b55807c0344e1e6c04d7c965f5289c39a8d94ae23ed5c0b57aabac549f871c6" -dependencies = [ - "filetime", - "libc", - "xattr", + "toml", + "version-compare", ] [[package]] name = "target-lexicon" -version = "0.12.6" +version = "0.12.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ae9980cab1db3fceee2f6c6f643d5d8de2997c58ee8d25fb0cc8a9e9e7348e5" - -[[package]] -name = "tauri" -version = "1.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe7e0f1d535e7cbbbab43c82be4fc992b84f9156c16c160955617e0260ebc449" -dependencies = [ - "anyhow", - "cocoa", - "dirs-next", - "embed_plist", - "encoding_rs", - "flate2", - "futures-util", - "glib", - "glob", - "gtk", - "heck 0.4.1", - "http", - "ignore", - "objc", - "once_cell", - "open", - "percent-encoding", - "rand 0.8.5", - "raw-window-handle", - "regex", - "rfd", - "semver", - "serde", - "serde_json", - "serde_repr", - "serialize-to-javascript", - "state", - "tar", - "tauri-macros", - "tauri-runtime", - "tauri-runtime-wry", - "tauri-utils", - "tempfile", - "thiserror", - "tokio", - "url", - "uuid 1.3.1", - "webkit2gtk", - "webview2-com", - "windows 0.39.0", -] - -[[package]] -name = "tauri-build" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8807c85d656b2b93927c19fe5a5f1f1f348f96c2de8b90763b3c2d561511f9b4" -dependencies = [ - "anyhow", - "cargo_toml", - "heck 0.4.1", - "json-patch", - "semver", - "serde_json", - "tauri-utils", - "winres", -] - -[[package]] -name = "tauri-codegen" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14388d484b6b1b5dc0f6a7d6cc6433b3b230bec85eaa576adcdf3f9fafa49251" -dependencies = [ - "base64 0.13.1", - "brotli", - "ico", - "json-patch", - "plist", - "png", - "proc-macro2", - "quote", - "regex", - "semver", - "serde", - "serde_json", - "sha2", - "tauri-utils", - "thiserror", - "time", - "uuid 1.3.1", - "walkdir", -] - -[[package]] -name = "tauri-macros" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "069319e5ecbe653a799b94b0690d9f9bf5d00f7b1d3989aa331c524d4e354075" -dependencies = [ - "heck 0.4.1", - "proc-macro2", - "quote", - "syn 1.0.109", - "tauri-codegen", - "tauri-utils", -] - -[[package]] -name = "tauri-runtime" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c507d954d08ac8705d235bc70ec6975b9054fb95ff7823af72dbb04186596f3b" -dependencies = [ - "gtk", - "http", - "http-range", - "rand 0.8.5", - "raw-window-handle", - "serde", - "serde_json", - "tauri-utils", - "thiserror", - "uuid 1.3.1", - "webview2-com", - "windows 0.39.0", -] - -[[package]] -name = "tauri-runtime-wry" -version = "0.12.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36b1c5764a41a13176a4599b5b7bd0881bea7d94dfe45e1e755f789b98317e30" -dependencies = [ - "cocoa", - "gtk", - "percent-encoding", - "rand 0.8.5", - "raw-window-handle", - "tauri-runtime", - "tauri-utils", - "uuid 1.3.1", - "webkit2gtk", - "webview2-com", - "windows 0.39.0", - "wry", -] - -[[package]] -name = "tauri-utils" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5abbc109a6eb45127956ffcc26ef0e875d160150ac16cfa45d26a6b2871686f1" -dependencies = [ - "brotli", - "ctor", - "glob", - "heck 0.4.1", - "html5ever", - "infer", - "json-patch", - "kuchiki", - "memchr", - "phf 0.10.1", - "proc-macro2", - "quote", - "semver", - "serde", - "serde_json", - "serde_with", - "thiserror", - "url", - "walkdir", - "windows 0.39.0", -] - -[[package]] -name = "tempfile" -version = "3.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9fbec84f381d5795b08656e4912bec604d162bff9291d6189a78f4c8ab87998" -dependencies = [ - "cfg-if", - "fastrand", - "redox_syscall 0.3.5", - "rustix", - "windows-sys 0.45.0", -] - -[[package]] -name = "tendril" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d24a120c5fc464a3458240ee02c299ebcb9d67b5249c8848b09d639dca8d7bb0" -dependencies = [ - "futf", - "mac", - "utf-8", -] - -[[package]] -name = "thin-slice" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eaa81235c7058867fa8c0e7314f33dcce9c215f535d1913822a2b3f5e289f3c" +checksum = "fd1ba337640d60c3e96bc6f0638a939b9c9a7f2c316a1598c279828b3d1dc8c5" [[package]] name = "thiserror" @@ -3331,7 +2686,7 @@ checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.15", + "syn 2.0.18", ] [[package]] @@ -3346,40 +2701,50 @@ dependencies = [ ] [[package]] -name = "thread_local" -version = "1.1.7" +name = "tiff" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" +checksum = "7449334f9ff2baf290d55d73983a7d6fa15e01198faef72af07e2a8db851e471" dependencies = [ - "cfg-if", - "once_cell", + "flate2", + "jpeg-decoder", + "weezl", ] [[package]] name = "time" -version = "0.3.20" +version = "0.1.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd0cbfecb4d19b5ea75bb31ad904eb5b9fa13f21079c3b92017ebdf4999a5890" +checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" dependencies = [ - "itoa 1.0.6", - "serde", - "time-core", - "time-macros", + "libc", + "wasi 0.10.0+wasi-snapshot-preview1", + "winapi", ] [[package]] -name = "time-core" -version = "0.1.0" +name = "tiny-skia" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd" +checksum = "df8493a203431061e901613751931f047d1971337153f96d0e5e363d6dbf6a67" +dependencies = [ + "arrayref", + "arrayvec", + "bytemuck", + "cfg-if", + "png", + "tiny-skia-path", +] [[package]] -name = "time-macros" -version = "0.2.8" +name = "tiny-skia-path" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd80a657e71da814b8e5d60d3374fc6d35045062245d80224748ae522dd76f36" +checksum = "adbfb5d3f3dd57a0e11d12f4f13d4ebbbc1b5c15b7ab0a156d030b21da5f677c" dependencies = [ - "time-core", + "arrayref", + "bytemuck", + "strict-num", ] [[package]] @@ -3397,28 +2762,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" -[[package]] -name = "tokio" -version = "1.27.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0de47a4eecbe11f498978a9b29d792f0d2692d1dd003650c24c76510e3bc001" -dependencies = [ - "autocfg", - "bytes", - "num_cpus", - "pin-project-lite", - "windows-sys 0.45.0", -] - -[[package]] -name = "toml" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" -dependencies = [ - "serde", -] - [[package]] name = "toml" version = "0.7.3" @@ -3433,9 +2776,9 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622" +checksum = "5a76a9312f5ba4c2dec6b9161fdf25d87ad8a09256ccea5a556fef03c706a10f" dependencies = [ "serde", ] @@ -3453,68 +2796,6 @@ dependencies = [ "winnow", ] -[[package]] -name = "tracing" -version = "0.1.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" -dependencies = [ - "cfg-if", - "pin-project-lite", - "tracing-attributes", - "tracing-core", -] - -[[package]] -name = "tracing-attributes" -version = "0.1.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "tracing-core" -version = "0.1.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" -dependencies = [ - "once_cell", - "valuable", -] - -[[package]] -name = "tracing-log" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" -dependencies = [ - "lazy_static", - "log", - "tracing-core", -] - -[[package]] -name = "tracing-subscriber" -version = "0.3.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6176eae26dd70d0c919749377897b54a9276bd7061339665dd68777926b5a70" -dependencies = [ - "matchers", - "nu-ansi-term", - "once_cell", - "regex", - "sharded-slab", - "smallvec", - "thread_local", - "tracing", - "tracing-core", - "tracing-log", -] - [[package]] name = "transpose" version = "0.2.2" @@ -3526,40 +2807,35 @@ dependencies = [ ] [[package]] -name = "treediff" -version = "3.0.2" +name = "tray-icon" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "761e8d5ad7ce14bb82b7e61ccc0ca961005a275a060b9644a2431aa11553c2ff" +checksum = "e0a1ba93b51da357afb4064093d925ded565154aca52f60d5a088b826150d7a8" dependencies = [ - "serde_json", + "cocoa", + "core-graphics", + "crossbeam-channel", + "dirs-next 2.0.0", + "libappindicator", + "muda", + "objc", + "once_cell", + "png", + "thiserror", + "windows-sys 0.48.0", ] [[package]] -name = "typenum" -version = "1.16.0" +name = "ttf-parser" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" - -[[package]] -name = "unicode-bidi" -version = "0.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" +checksum = "44dcf002ae3b32cd25400d6df128c5babec3927cd1eb7ce813cfff20eb6c3746" [[package]] name = "unicode-ident" -version = "1.0.8" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" - -[[package]] -name = "unicode-normalization" -version = "0.1.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" -dependencies = [ - "tinyvec", -] +checksum = "b15811caf2415fb889178633e7724bad2509101cde276048e013b9def5e51fa0" [[package]] name = "unicode-segmentation" @@ -3574,49 +2850,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1865806a559042e51ab5414598446a5871b561d21b6764f2eabb0dd481d880a6" [[package]] -name = "url" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643" -dependencies = [ - "form_urlencoded", - "idna", - "percent-encoding", - "serde", -] - -[[package]] -name = "utf-8" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" - -[[package]] -name = "uuid" +name = "vec_map" version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" - -[[package]] -name = "uuid" -version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b55a3fef2a1e3b3a00ce878640918820d3c51081576ac657d23af9fc7928fdb" -dependencies = [ - "getrandom 0.2.9", -] - -[[package]] -name = "valuable" -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" +checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" [[package]] name = "version-compare" @@ -3659,9 +2896,9 @@ dependencies = [ [[package]] name = "wasi" -version = "0.9.0+wasi-snapshot-preview1" +version = "0.10.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" +checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" [[package]] name = "wasi" @@ -3671,9 +2908,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.84" +version = "0.2.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b" +checksum = "5bba0e8cb82ba49ff4e229459ff22a191bbe9a1cb3a341610c9c33efc27ddf73" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -3681,24 +2918,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.84" +version = "0.2.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9" +checksum = "19b04bc93f9d6bdee709f6bd2118f57dd6679cf1176a1af464fca3ab0d66d8fb" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.18", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.34" +version = "0.4.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f219e0d211ba40266969f6dbdd90636da12f75bee4fc9d6c23d1260dadb51454" +checksum = "2d1985d03709c53167ce907ff394f5316aa22cb4e12761295c5dc57dacb6297e" dependencies = [ "cfg-if", "js-sys", @@ -3708,9 +2945,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.84" +version = "0.2.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5" +checksum = "14d6b024f1a526bb0234f52840389927257beb670610081360e5a03c5df9c258" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3718,117 +2955,111 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.84" +version = "0.2.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6" +checksum = "e128beba882dd1eb6200e1dc92ae6c5dbaa4311aa7bb211ca035779e5efc39f8" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.18", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.84" +version = "0.2.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" +checksum = "ed9d5b4305409d1fc9482fee2d7f9bcbf24b3972bf59817ef757e23982242a93" + +[[package]] +name = "wayland-client" +version = "0.29.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f3b068c05a039c9f755f881dc50f01732214f5685e379829759088967c46715" +dependencies = [ + "bitflags 1.3.2", + "downcast-rs", + "libc", + "nix 0.24.3", + "scoped-tls", + "wayland-commons", + "wayland-scanner", + "wayland-sys", +] + +[[package]] +name = "wayland-commons" +version = "0.29.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8691f134d584a33a6606d9d717b95c4fa20065605f798a3f350d78dced02a902" +dependencies = [ + "nix 0.24.3", + "once_cell", + "smallvec", + "wayland-sys", +] + +[[package]] +name = "wayland-cursor" +version = "0.29.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6865c6b66f13d6257bef1cd40cbfe8ef2f150fb8ebbdb1e8e873455931377661" +dependencies = [ + "nix 0.24.3", + "wayland-client", + "xcursor", +] + +[[package]] +name = "wayland-protocols" +version = "0.29.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b950621f9354b322ee817a23474e479b34be96c2e909c14f7bc0100e9a970bc6" +dependencies = [ + "bitflags 1.3.2", + "wayland-client", + "wayland-commons", + "wayland-scanner", +] + +[[package]] +name = "wayland-scanner" +version = "0.29.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f4303d8fa22ab852f789e75a967f0a2cdc430a607751c0499bada3e451cbd53" +dependencies = [ + "proc-macro2", + "quote", + "xml-rs", +] + +[[package]] +name = "wayland-sys" +version = "0.29.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be12ce1a3c39ec7dba25594b97b42cb3195d54953ddb9d3d95a7c3902bc6e9d4" +dependencies = [ + "dlib", + "lazy_static", + "pkg-config", +] [[package]] name = "web-sys" -version = "0.3.61" +version = "0.3.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97" +checksum = "3bdd9ef4e984da1187bf8110c5cf5b845fbc87a23602cdf912386a76fcd3a7c2" dependencies = [ "js-sys", "wasm-bindgen", ] [[package]] -name = "webkit2gtk" -version = "0.18.2" +name = "weezl" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8f859735e4a452aeb28c6c56a852967a8a76c8eb1cc32dbf931ad28a13d6370" -dependencies = [ - "bitflags 1.3.2", - "cairo-rs", - "gdk", - "gdk-sys", - "gio", - "gio-sys", - "glib", - "glib-sys", - "gobject-sys", - "gtk", - "gtk-sys", - "javascriptcore-rs", - "libc", - "once_cell", - "soup2", - "webkit2gtk-sys", -] - -[[package]] -name = "webkit2gtk-sys" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d76ca6ecc47aeba01ec61e480139dda143796abcae6f83bcddf50d6b5b1dcf3" -dependencies = [ - "atk-sys", - "bitflags 1.3.2", - "cairo-sys-rs", - "gdk-pixbuf-sys", - "gdk-sys", - "gio-sys", - "glib-sys", - "gobject-sys", - "gtk-sys", - "javascriptcore-rs-sys", - "libc", - "pango-sys", - "pkg-config", - "soup2-sys", - "system-deps 6.0.5", -] - -[[package]] -name = "webview2-com" -version = "0.19.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4a769c9f1a64a8734bde70caafac2b96cada12cd4aefa49196b3a386b8b4178" -dependencies = [ - "webview2-com-macros", - "webview2-com-sys", - "windows 0.39.0", - "windows-implement", -] - -[[package]] -name = "webview2-com-macros" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaebe196c01691db62e9e4ca52c5ef1e4fd837dcae27dae3ada599b5a8fd05ac" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "webview2-com-sys" -version = "0.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aac48ef20ddf657755fdcda8dfed2a7b4fc7e4581acce6fe9b88c3d64f29dee7" -dependencies = [ - "regex", - "serde", - "serde_json", - "thiserror", - "windows 0.39.0", - "windows-bindgen", - "windows-metadata", -] +checksum = "9193164d4de03a926d909d3bc7c30543cecb35400c02114792c2cae20d5e2dbb" [[package]] name = "winapi" @@ -3861,33 +3092,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -[[package]] -name = "windows" -version = "0.37.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57b543186b344cc61c85b5aab0d2e3adf4e0f99bc076eff9aa5927bcc0b8a647" -dependencies = [ - "windows_aarch64_msvc 0.37.0", - "windows_i686_gnu 0.37.0", - "windows_i686_msvc 0.37.0", - "windows_x86_64_gnu 0.37.0", - "windows_x86_64_msvc 0.37.0", -] - -[[package]] -name = "windows" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1c4bd0a50ac6020f65184721f758dba47bb9fbc2133df715ec74a237b26794a" -dependencies = [ - "windows-implement", - "windows_aarch64_msvc 0.39.0", - "windows_i686_gnu 0.39.0", - "windows_i686_msvc 0.39.0", - "windows_x86_64_gnu 0.39.0", - "windows_x86_64_msvc 0.39.0", -] - [[package]] name = "windows" version = "0.46.0" @@ -3906,47 +3110,6 @@ dependencies = [ "windows-targets 0.48.0", ] -[[package]] -name = "windows-bindgen" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68003dbd0e38abc0fb85b939240f4bce37c43a5981d3df37ccbaaa981b47cb41" -dependencies = [ - "windows-metadata", - "windows-tokens", -] - -[[package]] -name = "windows-implement" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba01f98f509cb5dc05f4e5fc95e535f78260f15fea8fe1a8abdd08f774f1cee7" -dependencies = [ - "syn 1.0.109", - "windows-tokens", -] - -[[package]] -name = "windows-metadata" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ee5e275231f07c6e240d14f34e1b635bf1faa1c76c57cfd59a5cdb9848e4278" - -[[package]] -name = "windows-sys" -version = "0.42.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" -dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", -] - [[package]] name = "windows-sys" version = "0.45.0" @@ -3995,12 +3158,6 @@ dependencies = [ "windows_x86_64_msvc 0.48.0", ] -[[package]] -name = "windows-tokens" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f838de2fe15fe6bac988e74b798f26499a8b21a9d97edec321e79b28d1d7f597" - [[package]] name = "windows_aarch64_gnullvm" version = "0.42.2" @@ -4013,18 +3170,6 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" -[[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" @@ -4037,18 +3182,6 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" -[[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" @@ -4061,18 +3194,6 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" -[[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" @@ -4085,18 +3206,6 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" -[[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" @@ -4121,18 +3230,6 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" -[[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" @@ -4145,6 +3242,41 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" +[[package]] +name = "winit" +version = "0.28.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "866db3f712fffba75d31bf0cdecf357c8aeafd158c5b7ab51dba2a2b2d47f196" +dependencies = [ + "android-activity", + "bitflags 1.3.2", + "cfg_aliases", + "core-foundation", + "core-graphics", + "dispatch", + "instant", + "libc", + "log", + "mio", + "ndk", + "objc2", + "once_cell", + "orbclient", + "percent-encoding", + "raw-window-handle", + "redox_syscall 0.3.5", + "sctk-adwaita", + "smithay-client-toolkit", + "wasm-bindgen", + "wayland-client", + "wayland-commons", + "wayland-protocols", + "wayland-scanner", + "web-sys", + "windows-sys 0.45.0", + "x11-dl", +] + [[package]] name = "winnow" version = "0.4.1" @@ -4154,53 +3286,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "winres" -version = "0.1.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b68db261ef59e9e52806f688020631e987592bd83619edccda9c47d42cde4f6c" -dependencies = [ - "toml 0.5.11", -] - -[[package]] -name = "wry" -version = "0.23.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c1ad8e2424f554cc5bdebe8aa374ef5b433feff817aebabca0389961fc7ef98" -dependencies = [ - "base64 0.13.1", - "block", - "cocoa", - "core-graphics", - "crossbeam-channel", - "dunce", - "gdk", - "gio", - "glib", - "gtk", - "html5ever", - "http", - "kuchiki", - "libc", - "log", - "objc", - "objc_id", - "once_cell", - "serde", - "serde_json", - "sha2", - "soup2", - "tao", - "thiserror", - "url", - "webkit2gtk", - "webkit2gtk-sys", - "webview2-com", - "windows 0.39.0", - "windows-implement", -] - [[package]] name = "x11" version = "2.21.0" @@ -4223,10 +3308,34 @@ dependencies = [ ] [[package]] -name = "xattr" -version = "0.2.3" +name = "xcursor" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d1526bbe5aaeb5eb06885f4d987bcdfa5e23187055de9b83fe00156a821fabc" +checksum = "463705a63313cd4301184381c5e8042f0a7e9b4bb63653f216311d4ae74690b7" dependencies = [ - "libc", + "nom", +] + +[[package]] +name = "xml-rs" +version = "0.8.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52839dc911083a8ef63efa4d039d1f58b5e409f923e44c80828f206f66e5541c" + +[[package]] +name = "yaml-rust" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85" +dependencies = [ + "linked-hash-map", +] + +[[package]] +name = "zune-inflate" +version = "0.2.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73ab332fe2f6680068f3582b16a24f90ad7096d5d39b974d1c0aff0125116f02" +dependencies = [ + "simd-adler32", ] diff --git a/app/Cargo.toml b/app/Cargo.toml new file mode 100644 index 0000000..47bdd5a --- /dev/null +++ b/app/Cargo.toml @@ -0,0 +1,35 @@ +[package] +name = "jarvis-app" +version = "0.0.3" +description = "Jarvis Voice Assistant" +authors = ["Abraham Tugalov"] +license = "GPL-3.0-only" +repository = "https://github.com/Priler/jarvis" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +serde = { version = "1.0.164", features = ["derive"] } +serde_json = "1.0.96" +hound = "3.5.0" +pv_recorder = "1.1.2" +pv_porcupine = "2.2.1" +seqdiff = "0.3.0" +vosk = "0.2.0" +rand = "0.8.5" +rodio = "0.17.1" +rustpotter = "2.0.0" +log = "0.4.18" +once_cell = "1.18.0" +atomic_enum = "0.2.0" +portaudio = "0.7.0" +platform-dirs = "0.3.0" +simple-log = "1.6.0" +tray-icon = { version = "0.5.1" } +winit = "0.28.6" +image = "0.24.6" +serde_yaml = "0.9.21" +kira = "0.8.3" + +[features] diff --git a/app/Makefile.toml b/app/Makefile.toml new file mode 100644 index 0000000..9946861 --- /dev/null +++ b/app/Makefile.toml @@ -0,0 +1,45 @@ +[tasks.format] +install_crate = "rustfmt" +command = "cargo" +args = ["fmt", "--", "--emit=files"] + +[tasks.clean] +command = "cargo" +args = ["clean"] + +[tasks.build_debug] +command = "cargo" +args = ["build"] + +[tasks.run] +command = "cargo" +args = ["run"] + +[tasks.build_release] +command = "cargo" +args = ["build", "--release"] +dependencies = ["clean"] + +[tasks.test] +command = "cargo" +args = ["test"] +# dependencies = ["clean"] + +[tasks.post_build] +script_runner = "python" +script_extension = "py" +script = { file = "post_build.py" } + +[tasks.debug] +dependencies = [ + "format", + "build_debug", + "post_build" +] + +[tasks.release] +dependencies = [ + "format", + "build_release", + "post_build" +] \ No newline at end of file diff --git a/app/build.rs b/app/build.rs new file mode 100644 index 0000000..7bfa6b1 --- /dev/null +++ b/app/build.rs @@ -0,0 +1,4 @@ +fn main() { + // link to Vosk lib + // println!("cargo:rustc-link-lib=libvosk.dll"); +} diff --git a/src-tauri/commands/browser/ahk/Close browser.ahk b/app/commands/browser/ahk/Close browser.ahk similarity index 100% rename from src-tauri/commands/browser/ahk/Close browser.ahk rename to app/commands/browser/ahk/Close browser.ahk diff --git a/src-tauri/commands/browser/ahk/Close browser.exe b/app/commands/browser/ahk/Close browser.exe similarity index 100% rename from src-tauri/commands/browser/ahk/Close browser.exe rename to app/commands/browser/ahk/Close browser.exe diff --git a/src-tauri/commands/browser/ahk/Run browser.ahk b/app/commands/browser/ahk/Run browser.ahk similarity index 100% rename from src-tauri/commands/browser/ahk/Run browser.ahk rename to app/commands/browser/ahk/Run browser.ahk diff --git a/src-tauri/commands/browser/ahk/Run browser.exe b/app/commands/browser/ahk/Run browser.exe similarity index 100% rename from src-tauri/commands/browser/ahk/Run browser.exe rename to app/commands/browser/ahk/Run browser.exe diff --git a/src-tauri/commands/browser/ahk/Run website.ahk b/app/commands/browser/ahk/Run website.ahk similarity index 100% rename from src-tauri/commands/browser/ahk/Run website.ahk rename to app/commands/browser/ahk/Run website.ahk diff --git a/src-tauri/commands/browser/ahk/Run website.exe b/app/commands/browser/ahk/Run website.exe similarity index 100% rename from src-tauri/commands/browser/ahk/Run website.exe rename to app/commands/browser/ahk/Run website.exe diff --git a/src-tauri/commands/browser/ahk/_include.ahk b/app/commands/browser/ahk/_include.ahk similarity index 100% rename from src-tauri/commands/browser/ahk/_include.ahk rename to app/commands/browser/ahk/_include.ahk diff --git a/src-tauri/commands/browser/command.yaml b/app/commands/browser/command.yaml similarity index 100% rename from src-tauri/commands/browser/command.yaml rename to app/commands/browser/command.yaml diff --git a/src-tauri/commands/calculator/command.yaml b/app/commands/calculator/command.yaml similarity index 100% rename from src-tauri/commands/calculator/command.yaml rename to app/commands/calculator/command.yaml diff --git a/src-tauri/commands/jarvis/ahk/reboot.ahk b/app/commands/jarvis/ahk/reboot.ahk similarity index 100% rename from src-tauri/commands/jarvis/ahk/reboot.ahk rename to app/commands/jarvis/ahk/reboot.ahk diff --git a/src-tauri/commands/jarvis/ahk/reboot.exe b/app/commands/jarvis/ahk/reboot.exe similarity index 100% rename from src-tauri/commands/jarvis/ahk/reboot.exe rename to app/commands/jarvis/ahk/reboot.exe diff --git a/src-tauri/commands/jarvis/command.yaml b/app/commands/jarvis/command.yaml similarity index 100% rename from src-tauri/commands/jarvis/command.yaml rename to app/commands/jarvis/command.yaml diff --git a/src-tauri/commands/steam/ahk/Close steam.ahk b/app/commands/steam/ahk/Close steam.ahk similarity index 100% rename from src-tauri/commands/steam/ahk/Close steam.ahk rename to app/commands/steam/ahk/Close steam.ahk diff --git a/src-tauri/commands/steam/ahk/Close steam.exe b/app/commands/steam/ahk/Close steam.exe similarity index 100% rename from src-tauri/commands/steam/ahk/Close steam.exe rename to app/commands/steam/ahk/Close steam.exe diff --git a/src-tauri/commands/steam/ahk/Open steam.ahk b/app/commands/steam/ahk/Open steam.ahk similarity index 100% rename from src-tauri/commands/steam/ahk/Open steam.ahk rename to app/commands/steam/ahk/Open steam.ahk diff --git a/src-tauri/commands/steam/ahk/Open steam.exe b/app/commands/steam/ahk/Open steam.exe similarity index 100% rename from src-tauri/commands/steam/ahk/Open steam.exe rename to app/commands/steam/ahk/Open steam.exe diff --git a/src-tauri/commands/steam/command.yaml b/app/commands/steam/command.yaml similarity index 100% rename from src-tauri/commands/steam/command.yaml rename to app/commands/steam/command.yaml diff --git a/src-tauri/commands/stop/command.yaml b/app/commands/stop/command.yaml similarity index 100% rename from src-tauri/commands/stop/command.yaml rename to app/commands/stop/command.yaml diff --git a/src-tauri/commands/terminate/command.yaml b/app/commands/terminate/command.yaml similarity index 100% rename from src-tauri/commands/terminate/command.yaml rename to app/commands/terminate/command.yaml diff --git a/src-tauri/commands/volume/ahk/Mute volume.ahk b/app/commands/volume/ahk/Mute volume.ahk similarity index 100% rename from src-tauri/commands/volume/ahk/Mute volume.ahk rename to app/commands/volume/ahk/Mute volume.ahk diff --git a/src-tauri/commands/volume/ahk/Mute volume.exe b/app/commands/volume/ahk/Mute volume.exe similarity index 100% rename from src-tauri/commands/volume/ahk/Mute volume.exe rename to app/commands/volume/ahk/Mute volume.exe diff --git a/src-tauri/commands/volume/ahk/Set sound.ahk b/app/commands/volume/ahk/Set sound.ahk similarity index 100% rename from src-tauri/commands/volume/ahk/Set sound.ahk rename to app/commands/volume/ahk/Set sound.ahk diff --git a/src-tauri/commands/volume/ahk/Set sound.exe b/app/commands/volume/ahk/Set sound.exe similarity index 100% rename from src-tauri/commands/volume/ahk/Set sound.exe rename to app/commands/volume/ahk/Set sound.exe diff --git a/src-tauri/commands/volume/command.yaml b/app/commands/volume/command.yaml similarity index 100% rename from src-tauri/commands/volume/command.yaml rename to app/commands/volume/command.yaml diff --git a/src-tauri/commands/windows/ahk/Empty trash.ahk b/app/commands/windows/ahk/Empty trash.ahk similarity index 100% rename from src-tauri/commands/windows/ahk/Empty trash.ahk rename to app/commands/windows/ahk/Empty trash.ahk diff --git a/src-tauri/commands/windows/ahk/Empty trash.exe b/app/commands/windows/ahk/Empty trash.exe similarity index 100% rename from src-tauri/commands/windows/ahk/Empty trash.exe rename to app/commands/windows/ahk/Empty trash.exe diff --git a/src-tauri/commands/windows/ahk/Roll up windows.ahk b/app/commands/windows/ahk/Roll up windows.ahk similarity index 100% rename from src-tauri/commands/windows/ahk/Roll up windows.ahk rename to app/commands/windows/ahk/Roll up windows.ahk diff --git a/src-tauri/commands/windows/ahk/Roll up windows.exe b/app/commands/windows/ahk/Roll up windows.exe similarity index 100% rename from src-tauri/commands/windows/ahk/Roll up windows.exe rename to app/commands/windows/ahk/Roll up windows.exe diff --git a/src-tauri/commands/windows/ahk/Set language.ahk b/app/commands/windows/ahk/Set language.ahk similarity index 100% rename from src-tauri/commands/windows/ahk/Set language.ahk rename to app/commands/windows/ahk/Set language.ahk diff --git a/src-tauri/commands/windows/ahk/Set language.exe b/app/commands/windows/ahk/Set language.exe similarity index 100% rename from src-tauri/commands/windows/ahk/Set language.exe rename to app/commands/windows/ahk/Set language.exe diff --git a/src-tauri/commands/windows/ahk/Task manager open.ahk b/app/commands/windows/ahk/Task manager open.ahk similarity index 100% rename from src-tauri/commands/windows/ahk/Task manager open.ahk rename to app/commands/windows/ahk/Task manager open.ahk diff --git a/src-tauri/commands/windows/ahk/Task manager open.exe b/app/commands/windows/ahk/Task manager open.exe similarity index 100% rename from src-tauri/commands/windows/ahk/Task manager open.exe rename to app/commands/windows/ahk/Task manager open.exe diff --git a/src-tauri/commands/windows/ahk/blocking.ahk b/app/commands/windows/ahk/blocking.ahk similarity index 100% rename from src-tauri/commands/windows/ahk/blocking.ahk rename to app/commands/windows/ahk/blocking.ahk diff --git a/src-tauri/commands/windows/ahk/blocking.exe b/app/commands/windows/ahk/blocking.exe similarity index 100% rename from src-tauri/commands/windows/ahk/blocking.exe rename to app/commands/windows/ahk/blocking.exe diff --git a/src-tauri/commands/windows/ahk/clipboard.ahk b/app/commands/windows/ahk/clipboard.ahk similarity index 100% rename from src-tauri/commands/windows/ahk/clipboard.ahk rename to app/commands/windows/ahk/clipboard.ahk diff --git a/src-tauri/commands/windows/ahk/clipboard.exe b/app/commands/windows/ahk/clipboard.exe similarity index 100% rename from src-tauri/commands/windows/ahk/clipboard.exe rename to app/commands/windows/ahk/clipboard.exe diff --git a/src-tauri/commands/windows/ahk/screenshot.ahk b/app/commands/windows/ahk/screenshot.ahk similarity index 100% rename from src-tauri/commands/windows/ahk/screenshot.ahk rename to app/commands/windows/ahk/screenshot.ahk diff --git a/src-tauri/commands/windows/ahk/screenshot.exe b/app/commands/windows/ahk/screenshot.exe similarity index 100% rename from src-tauri/commands/windows/ahk/screenshot.exe rename to app/commands/windows/ahk/screenshot.exe diff --git a/src-tauri/commands/windows/ahk/sleep.ahk b/app/commands/windows/ahk/sleep.ahk similarity index 100% rename from src-tauri/commands/windows/ahk/sleep.ahk rename to app/commands/windows/ahk/sleep.ahk diff --git a/src-tauri/commands/windows/ahk/sleep.exe b/app/commands/windows/ahk/sleep.exe similarity index 100% rename from src-tauri/commands/windows/ahk/sleep.exe rename to app/commands/windows/ahk/sleep.exe diff --git a/src-tauri/commands/windows/command.yaml b/app/commands/windows/command.yaml similarity index 100% rename from src-tauri/commands/windows/command.yaml rename to app/commands/windows/command.yaml diff --git a/src-tauri/icons/128x128.png b/app/icons/128x128.png similarity index 100% rename from src-tauri/icons/128x128.png rename to app/icons/128x128.png diff --git a/src-tauri/icons/128x128@2x.png b/app/icons/128x128@2x.png similarity index 100% rename from src-tauri/icons/128x128@2x.png rename to app/icons/128x128@2x.png diff --git a/src-tauri/icons/32x32.png b/app/icons/32x32.png similarity index 100% rename from src-tauri/icons/32x32.png rename to app/icons/32x32.png diff --git a/src-tauri/icons/Square107x107Logo.png b/app/icons/Square107x107Logo.png similarity index 100% rename from src-tauri/icons/Square107x107Logo.png rename to app/icons/Square107x107Logo.png diff --git a/src-tauri/icons/Square142x142Logo.png b/app/icons/Square142x142Logo.png similarity index 100% rename from src-tauri/icons/Square142x142Logo.png rename to app/icons/Square142x142Logo.png diff --git a/src-tauri/icons/Square150x150Logo.png b/app/icons/Square150x150Logo.png similarity index 100% rename from src-tauri/icons/Square150x150Logo.png rename to app/icons/Square150x150Logo.png diff --git a/src-tauri/icons/Square284x284Logo.png b/app/icons/Square284x284Logo.png similarity index 100% rename from src-tauri/icons/Square284x284Logo.png rename to app/icons/Square284x284Logo.png diff --git a/src-tauri/icons/Square30x30Logo.png b/app/icons/Square30x30Logo.png similarity index 100% rename from src-tauri/icons/Square30x30Logo.png rename to app/icons/Square30x30Logo.png diff --git a/src-tauri/icons/Square310x310Logo.png b/app/icons/Square310x310Logo.png similarity index 100% rename from src-tauri/icons/Square310x310Logo.png rename to app/icons/Square310x310Logo.png diff --git a/src-tauri/icons/Square44x44Logo.png b/app/icons/Square44x44Logo.png similarity index 100% rename from src-tauri/icons/Square44x44Logo.png rename to app/icons/Square44x44Logo.png diff --git a/src-tauri/icons/Square71x71Logo.png b/app/icons/Square71x71Logo.png similarity index 100% rename from src-tauri/icons/Square71x71Logo.png rename to app/icons/Square71x71Logo.png diff --git a/src-tauri/icons/Square89x89Logo.png b/app/icons/Square89x89Logo.png similarity index 100% rename from src-tauri/icons/Square89x89Logo.png rename to app/icons/Square89x89Logo.png diff --git a/src-tauri/icons/StoreLogo.png b/app/icons/StoreLogo.png similarity index 100% rename from src-tauri/icons/StoreLogo.png rename to app/icons/StoreLogo.png diff --git a/src-tauri/icons/icon.icns b/app/icons/icon.icns similarity index 100% rename from src-tauri/icons/icon.icns rename to app/icons/icon.icns diff --git a/src-tauri/icons/icon.ico b/app/icons/icon.ico similarity index 100% rename from src-tauri/icons/icon.ico rename to app/icons/icon.ico diff --git a/src-tauri/icons/icon.png b/app/icons/icon.png similarity index 100% rename from src-tauri/icons/icon.png rename to app/icons/icon.png diff --git a/src-tauri/picovoice/keywords/jarvis_windows.ppn b/app/keywords/jarvis_windows.ppn similarity index 100% rename from src-tauri/picovoice/keywords/jarvis_windows.ppn rename to app/keywords/jarvis_windows.ppn diff --git a/src-tauri/picovoice/lib/common/porcupine_params.pv b/app/lib/common/porcupine_params.pv similarity index 100% rename from src-tauri/picovoice/lib/common/porcupine_params.pv rename to app/lib/common/porcupine_params.pv diff --git a/src-tauri/picovoice/lib/common/porcupine_params_ru.pv b/app/lib/common/porcupine_params_ru.pv similarity index 100% rename from src-tauri/picovoice/lib/common/porcupine_params_ru.pv rename to app/lib/common/porcupine_params_ru.pv diff --git a/app/lib/windows/amd64/libpv_porcupine.dll b/app/lib/windows/amd64/libpv_porcupine.dll new file mode 100644 index 0000000..2eb1af8 Binary files /dev/null and b/app/lib/windows/amd64/libpv_porcupine.dll differ diff --git a/src-tauri/picovoice/lib/windows/amd64/libpv_recorder.dll b/app/lib/windows/amd64/libpv_recorder.dll similarity index 100% rename from src-tauri/picovoice/lib/windows/amd64/libpv_recorder.dll rename to app/lib/windows/amd64/libpv_recorder.dll diff --git a/src-tauri/libgcc_s_seh-1.dll b/app/libgcc_s_seh-1.dll similarity index 100% rename from src-tauri/libgcc_s_seh-1.dll rename to app/libgcc_s_seh-1.dll diff --git a/src-tauri/libstdc++-6.dll b/app/libstdc++-6.dll similarity index 100% rename from src-tauri/libstdc++-6.dll rename to app/libstdc++-6.dll diff --git a/src-tauri/libvosk.dll b/app/libvosk.dll similarity index 100% rename from src-tauri/libvosk.dll rename to app/libvosk.dll diff --git a/src-tauri/libvosk.lib b/app/libvosk.lib similarity index 100% rename from src-tauri/libvosk.lib rename to app/libvosk.lib diff --git a/src-tauri/libwinpthread-1.dll b/app/libwinpthread-1.dll similarity index 100% rename from src-tauri/libwinpthread-1.dll rename to app/libwinpthread-1.dll diff --git a/app/post_build.py b/app/post_build.py new file mode 100644 index 0000000..ddf1e5e --- /dev/null +++ b/app/post_build.py @@ -0,0 +1,63 @@ +# Simple python script used to +# copy some libraries to the "target" directory +# after Rust build + +# Note that Rust build should be run via "cargo make " command +# in order to automate all the compile process + +import os +from pathlib import Path +import shutil + +# some config vars +SOURCE = ( + "commands/", + "vosk/", + "lib/", + "keywords/", + "libgcc_s_seh-1.dll", + "libstdc++-6.dll", + "libvosk.dll", + "libvosk.lib", + "libwinpthread-1.dll" +) + +TARGET_DIRS = ( + "target/debug", + "target/release" +) + +ABS_PATH = os.getcwd() + "/" + +for tdir in TARGET_DIRS: + tdir = ABS_PATH + tdir + + if not Path(tdir).is_dir(): + print("Skipping target, not a directory: ", tdir) + continue + + # copy lib files + for src in SOURCE: + if os.path.isdir(ABS_PATH + src): + # copy the whole directory + full_target_dir_path = os.path.join(tdir, src) + + if os.path.isdir(full_target_dir_path): + print("[-] Directory already exists, skipping: ", src) + else: + shutil.copytree(ABS_PATH + src, os.path.join(tdir, src)) + + print("[+] Directory copied: ", src) + elif os.path.isfile(ABS_PATH + src): + # copy file + full_target_file_path = os.path.join(tdir, src) + if os.path.isfile(full_target_file_path): + print("[-] File already exists, skipping: ", src) + else: + shutil.copy(ABS_PATH + src, tdir) + print("[+] File copied: ", src) + else: + print("[?] Unknown entity to copy: ", src) + + + print("Post compile build done.") \ No newline at end of file diff --git a/src-tauri/rustpotter/___default.rpw b/app/rustpotter/___default.rpw similarity index 100% rename from src-tauri/rustpotter/___default.rpw rename to app/rustpotter/___default.rpw diff --git a/src-tauri/rustpotter/jarvis-community-1.rpw b/app/rustpotter/jarvis-community-1.rpw similarity index 100% rename from src-tauri/rustpotter/jarvis-community-1.rpw rename to app/rustpotter/jarvis-community-1.rpw diff --git a/src-tauri/rustpotter/jarvis-community-2.rpw b/app/rustpotter/jarvis-community-2.rpw similarity index 100% rename from src-tauri/rustpotter/jarvis-community-2.rpw rename to app/rustpotter/jarvis-community-2.rpw diff --git a/src-tauri/rustpotter/jarvis-community-3.rpw b/app/rustpotter/jarvis-community-3.rpw similarity index 100% rename from src-tauri/rustpotter/jarvis-community-3.rpw rename to app/rustpotter/jarvis-community-3.rpw diff --git a/src-tauri/rustpotter/jarvis-community-4.rpw b/app/rustpotter/jarvis-community-4.rpw similarity index 100% rename from src-tauri/rustpotter/jarvis-community-4.rpw rename to app/rustpotter/jarvis-community-4.rpw diff --git a/src-tauri/rustpotter/jarvis-community-5.rpw b/app/rustpotter/jarvis-community-5.rpw similarity index 100% rename from src-tauri/rustpotter/jarvis-community-5.rpw rename to app/rustpotter/jarvis-community-5.rpw diff --git a/src-tauri/rustpotter/jarvis-default.rpw b/app/rustpotter/jarvis-default.rpw similarity index 100% rename from src-tauri/rustpotter/jarvis-default.rpw rename to app/rustpotter/jarvis-default.rpw diff --git a/src-tauri/sound/jarvis-og/game_mode.wav b/app/sound/jarvis-og/game_mode.wav similarity index 100% rename from src-tauri/sound/jarvis-og/game_mode.wav rename to app/sound/jarvis-og/game_mode.wav diff --git a/src-tauri/sound/jarvis-og/greet1.wav b/app/sound/jarvis-og/greet1.wav similarity index 100% rename from src-tauri/sound/jarvis-og/greet1.wav rename to app/sound/jarvis-og/greet1.wav diff --git a/src-tauri/sound/jarvis-og/greet2.wav b/app/sound/jarvis-og/greet2.wav similarity index 100% rename from src-tauri/sound/jarvis-og/greet2.wav rename to app/sound/jarvis-og/greet2.wav diff --git a/src-tauri/sound/jarvis-og/greet3.wav b/app/sound/jarvis-og/greet3.wav similarity index 100% rename from src-tauri/sound/jarvis-og/greet3.wav rename to app/sound/jarvis-og/greet3.wav diff --git a/src-tauri/sound/jarvis-og/not_found.wav b/app/sound/jarvis-og/not_found.wav similarity index 100% rename from src-tauri/sound/jarvis-og/not_found.wav rename to app/sound/jarvis-og/not_found.wav diff --git a/src-tauri/sound/jarvis-og/off.wav b/app/sound/jarvis-og/off.wav similarity index 100% rename from src-tauri/sound/jarvis-og/off.wav rename to app/sound/jarvis-og/off.wav diff --git a/src-tauri/sound/jarvis-og/ok1.wav b/app/sound/jarvis-og/ok1.wav similarity index 100% rename from src-tauri/sound/jarvis-og/ok1.wav rename to app/sound/jarvis-og/ok1.wav diff --git a/src-tauri/sound/jarvis-og/ok2.wav b/app/sound/jarvis-og/ok2.wav similarity index 100% rename from src-tauri/sound/jarvis-og/ok2.wav rename to app/sound/jarvis-og/ok2.wav diff --git a/src-tauri/sound/jarvis-og/ok3.wav b/app/sound/jarvis-og/ok3.wav similarity index 100% rename from src-tauri/sound/jarvis-og/ok3.wav rename to app/sound/jarvis-og/ok3.wav diff --git a/src-tauri/sound/jarvis-og/ok4.wav b/app/sound/jarvis-og/ok4.wav similarity index 100% rename from src-tauri/sound/jarvis-og/ok4.wav rename to app/sound/jarvis-og/ok4.wav diff --git a/src-tauri/sound/jarvis-og/run.wav b/app/sound/jarvis-og/run.wav similarity index 100% rename from src-tauri/sound/jarvis-og/run.wav rename to app/sound/jarvis-og/run.wav diff --git a/src-tauri/sound/jarvis-og/stupid.wav b/app/sound/jarvis-og/stupid.wav similarity index 100% rename from src-tauri/sound/jarvis-og/stupid.wav rename to app/sound/jarvis-og/stupid.wav diff --git a/src-tauri/sound/jarvis-og/thanks.wav b/app/sound/jarvis-og/thanks.wav similarity index 100% rename from src-tauri/sound/jarvis-og/thanks.wav rename to app/sound/jarvis-og/thanks.wav diff --git a/src-tauri/sound/jarvis-remake/game_mode.wav b/app/sound/jarvis-remake/game_mode.wav similarity index 100% rename from src-tauri/sound/jarvis-remake/game_mode.wav rename to app/sound/jarvis-remake/game_mode.wav diff --git a/src-tauri/sound/jarvis-remake/greet1.wav b/app/sound/jarvis-remake/greet1.wav similarity index 100% rename from src-tauri/sound/jarvis-remake/greet1.wav rename to app/sound/jarvis-remake/greet1.wav diff --git a/src-tauri/sound/jarvis-remake/greet2.wav b/app/sound/jarvis-remake/greet2.wav similarity index 100% rename from src-tauri/sound/jarvis-remake/greet2.wav rename to app/sound/jarvis-remake/greet2.wav diff --git a/src-tauri/sound/jarvis-remake/greet3.wav b/app/sound/jarvis-remake/greet3.wav similarity index 100% rename from src-tauri/sound/jarvis-remake/greet3.wav rename to app/sound/jarvis-remake/greet3.wav diff --git a/src-tauri/sound/jarvis-remake/joke1.wav b/app/sound/jarvis-remake/joke1.wav similarity index 100% rename from src-tauri/sound/jarvis-remake/joke1.wav rename to app/sound/jarvis-remake/joke1.wav diff --git a/src-tauri/sound/jarvis-remake/joke2.wav b/app/sound/jarvis-remake/joke2.wav similarity index 100% rename from src-tauri/sound/jarvis-remake/joke2.wav rename to app/sound/jarvis-remake/joke2.wav diff --git a/src-tauri/sound/jarvis-remake/joke3.wav b/app/sound/jarvis-remake/joke3.wav similarity index 100% rename from src-tauri/sound/jarvis-remake/joke3.wav rename to app/sound/jarvis-remake/joke3.wav diff --git a/src-tauri/sound/jarvis-remake/joke4.wav b/app/sound/jarvis-remake/joke4.wav similarity index 100% rename from src-tauri/sound/jarvis-remake/joke4.wav rename to app/sound/jarvis-remake/joke4.wav diff --git a/src-tauri/sound/jarvis-remake/joke5.wav b/app/sound/jarvis-remake/joke5.wav similarity index 100% rename from src-tauri/sound/jarvis-remake/joke5.wav rename to app/sound/jarvis-remake/joke5.wav diff --git a/src-tauri/sound/jarvis-remake/not_found.wav b/app/sound/jarvis-remake/not_found.wav similarity index 100% rename from src-tauri/sound/jarvis-remake/not_found.wav rename to app/sound/jarvis-remake/not_found.wav diff --git a/src-tauri/sound/jarvis-remake/ok1.wav b/app/sound/jarvis-remake/ok1.wav similarity index 100% rename from src-tauri/sound/jarvis-remake/ok1.wav rename to app/sound/jarvis-remake/ok1.wav diff --git a/src-tauri/sound/jarvis-remake/ok2.wav b/app/sound/jarvis-remake/ok2.wav similarity index 100% rename from src-tauri/sound/jarvis-remake/ok2.wav rename to app/sound/jarvis-remake/ok2.wav diff --git a/src-tauri/sound/jarvis-remake/ok3.wav b/app/sound/jarvis-remake/ok3.wav similarity index 100% rename from src-tauri/sound/jarvis-remake/ok3.wav rename to app/sound/jarvis-remake/ok3.wav diff --git a/src-tauri/sound/jarvis-remake/ok4.wav b/app/sound/jarvis-remake/ok4.wav similarity index 100% rename from src-tauri/sound/jarvis-remake/ok4.wav rename to app/sound/jarvis-remake/ok4.wav diff --git a/src-tauri/sound/jarvis-remake/ready.wav b/app/sound/jarvis-remake/ready.wav similarity index 100% rename from src-tauri/sound/jarvis-remake/ready.wav rename to app/sound/jarvis-remake/ready.wav diff --git a/src-tauri/sound/jarvis-remake/run.wav b/app/sound/jarvis-remake/run.wav similarity index 100% rename from src-tauri/sound/jarvis-remake/run.wav rename to app/sound/jarvis-remake/run.wav diff --git a/src-tauri/sound/jarvis-remake/stupid.wav b/app/sound/jarvis-remake/stupid.wav similarity index 100% rename from src-tauri/sound/jarvis-remake/stupid.wav rename to app/sound/jarvis-remake/stupid.wav diff --git a/src-tauri/sound/jarvis-remake/thanks.wav b/app/sound/jarvis-remake/thanks.wav similarity index 100% rename from src-tauri/sound/jarvis-remake/thanks.wav rename to app/sound/jarvis-remake/thanks.wav diff --git a/src-tauri/src/main.rs b/app/src/_main.rs similarity index 84% rename from src-tauri/src/main.rs rename to app/src/_main.rs index a4f48ff..6e716df 100644 --- a/src-tauri/src/main.rs +++ b/app/src/_main.rs @@ -1,5 +1,4 @@ -// Prevents additional console window on Windows in release, DO NOT REMOVE!! -// #![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] + #[macro_use] extern crate lazy_static; // better switch to once_cell ? @@ -8,13 +7,6 @@ use log::{info}; use log::LevelFilter; use std::sync::Mutex; -// expose the config -mod config; -use config::*; - -// include tauri commands -mod tauri_commands; - // include assistant commands mod assistant_commands; use assistant_commands::AssistantCommand; @@ -28,16 +20,6 @@ mod events; // include recorder mod recorder; -// app dir -lazy_static! { - static ref APP_CONFIG_DIR: Mutex = Mutex::new(String::new()); -} - -// data dir -lazy_static! { - static ref APP_LOG_DIR: Mutex = Mutex::new(String::new()); -} - // init PickleDb connection lazy_static! { static ref DB: Mutex = Mutex::new( @@ -57,11 +39,6 @@ lazy_static! { ); } -// init commands -lazy_static! { - static ref COMMANDS: Vec = assistant_commands::parse_commands().unwrap(); -} - fn main() { // init vosk vosk::init_vosk(); diff --git a/app/src/app.rs b/app/src/app.rs new file mode 100644 index 0000000..2cd19d5 --- /dev/null +++ b/app/src/app.rs @@ -0,0 +1,122 @@ +use std::time::SystemTime; + +use crate::{config, audio, recorder, listener, stt, commands, COMMANDS_LIST}; +use rand::seq::SliceRandom; + +pub fn start() -> Result<(), ()> { + // start the loop + main_loop() +} + +fn main_loop() -> Result<(), ()> { + let mut start: SystemTime; + let sounds_directory = audio::get_sound_directory().unwrap(); + let frame_length: usize = 512; // default for every wake-word engine + let mut frame_buffer: Vec = vec![0; frame_length]; + + // play some run phrase + // @TODO. Different sounds? Or better make it via commands or upcoming events system. + audio::play_sound(&sounds_directory.join("run.wav")); + + // start recording + match recorder::start_recording() { + Ok(_) => info!("Recording started."), + Err(_) => { + error!("Cannot start recording."); + return Err(()); // quit + } + } + + // the loop + 'wake_word: loop { + // read from microphone + recorder::read_microphone(&mut frame_buffer); + + // recognize wake-word + match listener::data_callback(&frame_buffer) { + Some(keyword_index) => { + // wake-word activated, process further commands + // capture current time + start = SystemTime::now(); + + // play some greet phrase + // @TODO. Make it via commands or upcoming events system. + audio::play_sound(&sounds_directory.join(format!("{}.wav", config::ASSISTANT_GREET_PHRASES.choose(&mut rand::thread_rng()).unwrap()))); + + // wait for voice commands + 'voice_recognition: loop { + // read from microphone + recorder::read_microphone(&mut frame_buffer); + + // stt part (without partials) + if let Some(mut recognized_voice) = stt::recognize(&frame_buffer, false) { + // something was recognized + info!("Recognized voice: {}", recognized_voice); + + // filter recognized voice + // @TODO. Better recognized voice filtration. + recognized_voice = recognized_voice.to_lowercase(); + for tbr in config::ASSISTANT_PHRASES_TBR { + recognized_voice = recognized_voice.replace(tbr, ""); + } + recognized_voice = recognized_voice.trim().into(); + + // infer command + if let Some((cmd_path, cmd_config)) = commands::fetch_command(&recognized_voice, &COMMANDS_LIST.get().unwrap()) { + // some debug info + info!("Recognized voice (filtered): {}", recognized_voice); + info!("Command found: {:?}", cmd_path); + info!("Executing!"); + + // execute the command + match commands::execute_command(&cmd_path, &cmd_config) { + Ok(chain) => { + // success + info!("Command executed successfully."); + + if chain { + // chain commands + start = SystemTime::now(); + } else { + // skip, if chaining is not required + start = start.checked_sub(core::time::Duration::from_secs(1000)).unwrap(); + } + + continue 'voice_recognition; // continue voice recognition + }, + Err(msg) => { + // fail + error!("Error executing command: {}", msg); + } + } + } + + // return to wake-word listening after command execution (no matter successful or not) + break 'voice_recognition; + } + + // only recognize voice for a certain period of time + match start.elapsed() { + Ok(elapsed) if elapsed > config::CMS_WAIT_DELAY => { + // return to wake-word listening after N seconds + break 'voice_recognition; + }, + _ => () + } + } + }, + None => () + } + } + + Ok(()) +} + +fn keyword_callback(keyword_index: i32) { + +} + +pub fn close(code: i32) { + info!("Closing application."); + std::process::exit(code); +} \ No newline at end of file diff --git a/app/src/audio.rs b/app/src/audio.rs new file mode 100644 index 0000000..598c580 --- /dev/null +++ b/app/src/audio.rs @@ -0,0 +1,86 @@ +mod rodio; +mod kira; + +use std::cmp::Ordering; +use std::path::PathBuf; +use once_cell::sync::OnceCell; + +use crate::{config, DB, SOUND_DIR}; +use crate::config::structs::AudioType; + +static AUDIO_TYPE: OnceCell = OnceCell::new(); + + +pub fn init() -> Result<(), ()> { + if !AUDIO_TYPE.get().is_none() {return Ok(());} // already initialized + + // set default audio type + // @TODO. Make it configurable? + AUDIO_TYPE.set(config::DEFAULT_AUDIO_TYPE).unwrap(); + + // load given audio backend + match AUDIO_TYPE.get().unwrap() { + AudioType::Rodio => { + // Init Rodio + info!("Initializing Rodio audio backend."); + + match rodio::init() { + Ok(_) => { + info!("Successfully initialized Rodio audio backend."); + }, + Err(msg) => { + error!("Failed to initialize Rodio audio backend."); + + return Err(()) + } + } + }, + AudioType::Kira => { + // Init Kira + info!("Initializing Kira audio backend."); + + match kira::init() { + Ok(_) => { + info!("Successfully initialized Kira audio backend."); + }, + Err(msg) => { + error!("Failed to initialize Kira audio backend."); + + return Err(()) + } + } + } + } + + Ok(()) +} + +pub fn play_sound(filename: &PathBuf) { + info!("Playing {}", filename.display()); + + match AUDIO_TYPE.get().unwrap() { + AudioType::Rodio => { + rodio::play_sound(filename, true); + }, + AudioType::Kira => { + kira::play_sound(filename) + } + } +} + +pub fn get_sound_directory() -> Option { + let voice = DB.get().unwrap().voice.as_str(); + let voice_path = SOUND_DIR.join(voice); + + match voice_path.exists() && voice_path.cmp(&SOUND_DIR) != Ordering::Equal { + true => Some(voice_path), + _ => { + let default_voice_path = SOUND_DIR.join(config::DEFAULT_VOICE); + + match default_voice_path.exists() { + true => Some(default_voice_path), + _ => None + } + } + } +} \ No newline at end of file diff --git a/app/src/audio/kira.rs b/app/src/audio/kira.rs new file mode 100644 index 0000000..f158a4b --- /dev/null +++ b/app/src/audio/kira.rs @@ -0,0 +1,55 @@ +use std::path::PathBuf; +use std::sync::Mutex; +use once_cell::sync::OnceCell; + +use kira::{ + manager::{ + AudioManager, AudioManagerSettings, + backend::DefaultBackend, + }, + sound::static_sound::{StaticSoundData, StaticSoundSettings}, +}; + +thread_local!(static MANAGER: OnceCell> = OnceCell::new()); + +pub fn init() -> Result<(), ()> { + MANAGER.with(|m| { + if !m.get().is_none() {return Ok(());} // already initialized + + // Create an audio manager. This plays sounds and manages resources. + match AudioManager::::new(AudioManagerSettings::default()) { + Ok(x) => { + // store + m.set(Mutex::new(x)); + + // success + Ok(()) + }, + Err(msg) => { + error!("Failed to initialize audio stream.\nError details: {}", msg); + + // failed + Err(()) + } + } + }) +} + +// @TODO. Cache sounds in memory? With a pool of a certain size, for instance. +pub fn play_sound(filename: &PathBuf) { + // load the file + match StaticSoundData::from_file(filename, StaticSoundSettings::default()) { + Ok(sound_data) => { + // sound_data.duration() can be used in order to sleep, if (for some reason) blocking behaviour is required + + // play it (non-blocking) + MANAGER.with(|m| { + let audio_manager = &mut m.get().unwrap().lock().unwrap(); + audio_manager.play(sound_data.clone()).unwrap(); + }); + }, + Err(msg) => { + warn!("Cannot find sound file: {}", filename.display()); + } + } +} \ No newline at end of file diff --git a/app/src/audio/rodio.rs b/app/src/audio/rodio.rs new file mode 100644 index 0000000..721a55d --- /dev/null +++ b/app/src/audio/rodio.rs @@ -0,0 +1,76 @@ +/* + Abandoned temporary. + Problems with blocking behaviour. + Possible fixes are running rodio in a separate thread or smthng. +*/ + +use std::fs::File; +use std::path::PathBuf; +use std::io::BufReader; +use once_cell::sync::OnceCell; + +use rodio::{Decoder, OutputStream, OutputStreamHandle, Sink}; + +// static STREAM: OnceCell = OnceCell::new(); +static STREAM_HANDLE: OnceCell = OnceCell::new(); +static SINK: OnceCell = OnceCell::new(); + +pub fn init() -> Result<(), ()> { + if !STREAM_HANDLE.get().is_none() {return Ok(());} // already initialized + + // get output stream handle to the default physical sound device + match OutputStream::try_default() { + Ok(out) => { + // divide + let (_stream, stream_handle) = out; + + // create sink + let sink; + match Sink::try_new(&stream_handle) { + Ok(s) => { + info!("Sink initialized."); + sink = s; + }, + Err(msg) => { + error!("Cannot create sink.\nError details: {}", msg); + + // failed + return Err(()) + } + } + + // store + // STREAM.set(_stream).unwrap(); + STREAM_HANDLE.set(stream_handle); + SINK.set(sink); + + // success + Ok(()) + }, + Err(msg) => { + error!("Failed to initialize audio stream.\nError details: {}", msg); + + // failed + Err(()) + } + } +} + +pub fn play_sound(filename: &PathBuf, sleep: bool) { + // Load a sound from a file, using a path relative to Cargo.toml + // let filepath = format!("{PUBLIC_PATH}/sound/{filename}.wav"); + let file = BufReader::new(File::open(&filename).unwrap()); + + // Decode that sound file into a source + let source = Decoder::new(file).unwrap(); + + // Play the sound directly on the device + // STREAM_HANDLE.get().unwrap().play_raw(source.convert_samples()); + SINK.get().unwrap().append(source); + + if sleep { + // The sound plays in a separate thread. This call will block the current thread until the sink + // has finished playing all its queued sounds. + SINK.get().unwrap().sleep_until_end(); + } +} \ No newline at end of file diff --git a/src-tauri/src/assistant_commands.rs b/app/src/commands.rs similarity index 75% rename from src-tauri/src/assistant_commands.rs rename to app/src/commands.rs index 0e689c9..cc171b9 100644 --- a/src-tauri/src/assistant_commands.rs +++ b/app/src/commands.rs @@ -3,7 +3,6 @@ use seqdiff::ratio; use serde_yaml; use std::path::Path; use std::{fs, fs::File}; -use log::{info, warn, error}; use core::time::Duration; use std::path::PathBuf; @@ -13,9 +12,9 @@ use std::process::{Command, Child}; mod structs; pub use structs::*; -use crate::config; -use crate::events; +use crate::{config, audio}; +// @TODO. Allow commands both in yaml and json format. pub fn parse_commands() -> Result, String> { // collect commands let mut commands: Vec = vec![]; @@ -39,7 +38,6 @@ pub fn parse_commands() -> Result, String> { }, Err(msg) => { warn!("Can't parse {}, skipping ...\nCommand parse error is: {:?}", &cc_file.display(), msg); - eprintln!("Can't parse {}, skipping ...\nCommand parse error is: {:?}", &cc_file.display(), msg); continue; } } @@ -63,6 +61,7 @@ pub fn parse_commands() -> Result, String> { } } +// @TODO. NLU or smthng else is required, in order to infer commands with highest accuracy possible. pub fn fetch_command<'a>( phrase: &str, commands: &'a Vec, @@ -106,6 +105,7 @@ pub fn fetch_command<'a>( } } +// @TODO. Rewrite executors by executor type struct. (with match arms) pub fn execute_exe(exe: &str, args: &Vec) -> std::io::Result { Command::new(exe).args(args).spawn() } @@ -132,17 +132,16 @@ pub fn execute_cli(cmd: &str, args: &Vec) -> std::io::Result { pub fn execute_command( cmd_path: &PathBuf, cmd_config: &Config, - app_handle: &tauri::AppHandle, + // app_handle: &tauri::AppHandle, ) -> Result { + let sounds_directory = audio::get_sound_directory().unwrap(); + match cmd_config.command.action.as_str() { "voice" => { // VOICE command type - let random_cmd_sound = cmd_config - .voice - .sounds - .choose(&mut rand::thread_rng()) - .unwrap(); - events::play(random_cmd_sound, app_handle); + let random_cmd_sound = format!("{}.wav", cmd_config.voice.sounds.choose(&mut rand::thread_rng()).unwrap()); + // events::play(random_cmd_sound, app_handle); + audio::play_sound(&sounds_directory.join(random_cmd_sound)); Ok(true) } @@ -159,12 +158,9 @@ pub fn execute_command( }, &cmd_config.command.exe_args, ) { - let random_cmd_sound = cmd_config - .voice - .sounds - .choose(&mut rand::thread_rng()) - .unwrap(); - events::play(random_cmd_sound, app_handle); + let random_cmd_sound = format!("{}.wav", cmd_config.voice.sounds.choose(&mut rand::thread_rng()).unwrap()); + // events::play(random_cmd_sound, app_handle); + audio::play_sound(&sounds_directory.join(random_cmd_sound)); Ok(true) } else { @@ -181,12 +177,9 @@ pub fn execute_command( &cmd_config.command.cli_args, ) { Ok(_) => { - let random_cmd_sound = cmd_config - .voice - .sounds - .choose(&mut rand::thread_rng()) - .unwrap(); - events::play(random_cmd_sound, app_handle); + let random_cmd_sound = format!("{}.wav", cmd_config.voice.sounds.choose(&mut rand::thread_rng()).unwrap()); + // events::play(random_cmd_sound, app_handle); + audio::play_sound(&sounds_directory.join(random_cmd_sound)); Ok(true) }, @@ -198,24 +191,18 @@ pub fn execute_command( } "terminate" => { // TERMINATE command type - let random_cmd_sound = cmd_config - .voice - .sounds - .choose(&mut rand::thread_rng()) - .unwrap(); - events::play(random_cmd_sound, app_handle); + let random_cmd_sound = format!("{}.wav", cmd_config.voice.sounds.choose(&mut rand::thread_rng()).unwrap()); + // events::play(random_cmd_sound, app_handle); + audio::play_sound(&sounds_directory.join(random_cmd_sound)); std::thread::sleep(Duration::from_secs(2)); std::process::exit(0); } "stop_chaining" => { // STOP_CHAINING command type - let random_cmd_sound = cmd_config - .voice - .sounds - .choose(&mut rand::thread_rng()) - .unwrap(); - events::play(random_cmd_sound, app_handle); + let random_cmd_sound = format!("{}.wav", cmd_config.voice.sounds.choose(&mut rand::thread_rng()).unwrap()); + // events::play(random_cmd_sound, app_handle); + audio::play_sound(&sounds_directory.join(random_cmd_sound)); Ok(false) } @@ -225,3 +212,14 @@ pub fn execute_command( }, } } + +pub fn list(from: &[AssistantCommand]) -> Vec { + let mut out: Vec = vec![]; + + for x in from.iter() { + out.push(String::from(x.path.to_str().unwrap())); + // out.append() + } + + out +} \ No newline at end of file diff --git a/src-tauri/src/assistant_commands/structs.rs b/app/src/commands/structs.rs similarity index 100% rename from src-tauri/src/assistant_commands/structs.rs rename to app/src/commands/structs.rs diff --git a/app/src/config.rs b/app/src/config.rs new file mode 100644 index 0000000..b4045bc --- /dev/null +++ b/app/src/config.rs @@ -0,0 +1,144 @@ +pub mod structs; +use structs::WakeWordEngine; +use structs::SpeechToTextEngine; +use structs::RecorderType; +use structs::AudioType; + +use std::fs; +use std::env; +use std::path::PathBuf; +use once_cell::sync::Lazy; + +use platform_dirs::{AppDirs}; +use rustpotter::{RustpotterConfig, WavFmt, DetectorConfig, FiltersConfig, ScoreMode, GainNormalizationConfig, BandPassConfig}; + +use crate::{config, APP_DIRS, APP_CONFIG_DIR, APP_LOG_DIR}; + +#[allow(dead_code)] + +pub fn init_dirs() -> Result<(), String> { + // infer app dirs + if APP_DIRS.get().is_some() { + return Ok(()); + } + + // cache_dir, config_dir, data_dir, state_dir + APP_DIRS.set(AppDirs::new(Some(config::BUNDLE_IDENTIFIER), false).unwrap()).unwrap(); + + // setup directories + let mut config_dir = PathBuf::from(&APP_DIRS.get().unwrap().config_dir); + let mut log_dir = PathBuf::from(&APP_DIRS.get().unwrap().config_dir); + + // create dirs, if required + if !config_dir.exists() { + if fs::create_dir_all(&config_dir).is_err() { + config_dir = env::current_dir().expect("Cannot infer the config directory"); + fs::create_dir_all(&config_dir).expect("Cannot create config directory, access denied?"); + } + } + + if !log_dir.exists() { + if fs::create_dir_all(&log_dir).is_err() { + log_dir = env::current_dir().expect("Cannot infer the log directory"); + fs::create_dir_all(&log_dir).expect("Cannot create log directory, access denied?"); + } + } + + // store inferred paths + APP_CONFIG_DIR.set(config_dir).unwrap(); + APP_LOG_DIR.set(log_dir).unwrap(); + + Ok(()) +} + + +/* + Defaults. + */ +pub const DEFAULT_AUDIO_TYPE: AudioType = AudioType::Kira; +pub const DEFAULT_RECORDER_TYPE: RecorderType = RecorderType::PvRecorder; +pub const DEFAULT_WAKE_WORD_ENGINE: WakeWordEngine = WakeWordEngine::Rustpotter; +pub const DEFAULT_SPEECH_TO_TEXT_ENGINE: SpeechToTextEngine = SpeechToTextEngine::Vosk; + +pub const DEFAULT_VOICE: &str = "jarvis-og"; + +pub const BUNDLE_IDENTIFIER: &str = "com.priler.jarvis"; +pub const DB_FILE_NAME: &str = "app.db"; +pub const LOG_FILE_NAME: &str = "log.txt"; +pub const APP_VERSION: Option<&str> = option_env!("CARGO_PKG_VERSION"); +pub const AUTHOR_NAME: Option<&str> = option_env!("CARGO_PKG_AUTHORS"); +pub const REPOSITORY_LINK: Option<&str> = option_env!("CARGO_PKG_REPOSITORY"); +pub const TG_OFFICIAL_LINK: Option<&str> = Some("https://t.me/howdyho_official"); +pub const FEEDBACK_LINK: Option<&str> = Some("https://t.me/jarvis_feedback_bot"); + +/* + Tray. + */ +pub const TRAY_ICON: &str = "32x32.png"; +pub const TRAY_TOOLTIP: &str = "Jarvis Voice Assistant"; + +// RUSPOTTER +pub const RUSPOTTER_MIN_SCORE: f32 = 0.62; +pub const RUSTPOTTER_DEFAULT_CONFIG: Lazy = Lazy::new(|| { + RustpotterConfig { + fmt: WavFmt::default(), + detector: DetectorConfig { + avg_threshold: 0., + threshold: 0.5, + min_scores: 15, + score_mode: ScoreMode::Average, + comparator_band_size: 5, + comparator_ref: 0.22 + }, + filters: FiltersConfig { + gain_normalizer: GainNormalizationConfig { + enabled: true, + gain_ref: None, + min_gain: 0.7, + max_gain: 1.0, + }, + band_pass: BandPassConfig { + enabled: true, + low_cutoff: 80., + high_cutoff: 400., + } + } + } +}); + +// PICOVOICE +pub const COMMANDS_PATH: &str = "commands/"; +pub const KEYWORDS_PATH: &str = "picovoice/keywords/"; +pub const DEFAULT_KEYWORD: &str = "jarvis_windows.ppn"; +pub const DEFAULT_SENSITIVITY: f32 = 1.0; + +// VOSK +// pub const VOSK_MODEL_PATH: &str = const_concat!(PUBLIC_PATH, "/vosk/model_small"); +pub const VOSK_FETCH_PHRASE: &str = "джарвис"; +pub const VOSK_MODEL_PATH: &str = "vosk/model_small"; +pub const VOSK_MIN_RATIO: f64 = 70.0; + +// ETC +pub const CMD_RATIO_THRESHOLD: f64 = 65f64; +pub const CMS_WAIT_DELAY: std::time::Duration = std::time::Duration::from_secs(15); + +pub const ASSISTANT_GREET_PHRASES: [&str; 3] = ["greet1", "greet2", "greet3"]; +pub const ASSISTANT_PHRASES_TBR: [&str; 17] = [ + "джарвис", + "сэр", + "слушаю сэр", + "всегда к услугам", + "произнеси", + "ответь", + "покажи", + "скажи", + "давай", + "да сэр", + "к вашим услугам сэр", + "всегда к вашим услугам сэр", + "запрос выполнен сэр", + "выполнен сэр", + "есть", + "загружаю сэр", + "очень тонкое замечание сэр", +]; diff --git a/app/src/config/structs.rs b/app/src/config/structs.rs new file mode 100644 index 0000000..e33f236 --- /dev/null +++ b/app/src/config/structs.rs @@ -0,0 +1,30 @@ +use serde::{Deserialize, Serialize}; + +#[derive(Clone, Copy, Serialize, Deserialize, Debug)] +pub enum WakeWordEngine { + Rustpotter, + Vosk, + Porcupine +} + +#[derive(Serialize, Deserialize, Debug)] +pub enum SpeechToTextEngine { + Vosk +} + +#[derive(PartialEq, Debug)] +pub enum RecorderType { + Cpal, + PvRecorder, + PortAudio +} + +#[derive(PartialEq, Debug)] +pub enum AudioType { + Rodio, + Kira +} + +// pub enum TextToSpeechEngine {} + +// pub enum IntentRecognitionEngine {} \ No newline at end of file diff --git a/app/src/db.rs b/app/src/db.rs new file mode 100644 index 0000000..9fed42e --- /dev/null +++ b/app/src/db.rs @@ -0,0 +1,51 @@ +pub mod structs; +use crate::{config, APP_CONFIG_DIR}; + +use std::path::PathBuf; +use std::fs::File; +use std::io::{BufReader, Read}; +use log::info; + +use serde_json; + +fn get_db_file_path() -> PathBuf { + PathBuf::from(format!("{}/{}", APP_CONFIG_DIR.get().unwrap().display(), config::DB_FILE_NAME)) +} + +pub fn init_settings() -> structs::Settings { + let mut db = None; + let db_file_path = get_db_file_path(); + + info!("Loading settings db file located at: {}", db_file_path.display()); + + if db_file_path.exists() { + // try load existing settings + if let Ok(mut db_file) = File::open(db_file_path) { + let reader = BufReader::new(db_file); + if let Ok(parsed_json) = serde_json::from_reader(reader) { + info!("Settings loaded."); + db = Some(parsed_json); + } + } + } + + if db.is_none() { + // create default settings db file + warn!("No settings file found or there was an error parsing it. Creating default struct."); + db = Some(structs::Settings::default()); + } + + db.unwrap() +} + +pub fn save_settings(settings: &structs::Settings) -> Result<(), std::io::Error> { + let db_file_path = get_db_file_path(); + + std::fs::write( + db_file_path, + serde_json::to_string_pretty(&settings).unwrap() + )?; + + info!("Settings saved."); + Ok(()) +} \ No newline at end of file diff --git a/app/src/db/structs.rs b/app/src/db/structs.rs new file mode 100644 index 0000000..768fe91 --- /dev/null +++ b/app/src/db/structs.rs @@ -0,0 +1,39 @@ +use serde::{Deserialize, Serialize}; +use crate::config; + +use crate::config::structs::WakeWordEngine; +use crate::config::structs::SpeechToTextEngine; + +#[derive(Serialize, Deserialize, Debug)] +pub struct Settings { + pub microphone: i32, + pub voice: String, + + pub wake_word_engine: WakeWordEngine, + pub speech_to_text_engine: SpeechToTextEngine, + + pub api_keys: ApiKeys +} + +impl Default for Settings { + fn default() -> Settings { + Settings { + microphone: -1, + voice: String::from(""), + + wake_word_engine: config::DEFAULT_WAKE_WORD_ENGINE, + speech_to_text_engine: config::DEFAULT_SPEECH_TO_TEXT_ENGINE, + + api_keys: ApiKeys { + picovoice: String::from(""), + openai: String::from("") + } + } + } +} + +#[derive(Serialize, Deserialize, Debug)] +pub struct ApiKeys { + pub picovoice: String, + pub openai: String +} \ No newline at end of file diff --git a/app/src/listener.rs b/app/src/listener.rs new file mode 100644 index 0000000..43fe1cd --- /dev/null +++ b/app/src/listener.rs @@ -0,0 +1,63 @@ +mod porcupine; + +mod rustpotter; + +mod vosk; + +use once_cell::sync::OnceCell; +use std::sync::atomic::{AtomicBool, Ordering}; + +use crate::{config, stt}; +use crate::config::structs::WakeWordEngine; + +use crate::DB; + +// store wake-word engine being used +static WAKE_WORD_ENGINE: OnceCell = OnceCell::new(); + +// track listening state +static LISTENING: AtomicBool = AtomicBool::new(false); + +pub fn init() -> Result<(), ()> { + if !WAKE_WORD_ENGINE.get().is_none() {return Ok(());} // already initialized + + // store current engine + WAKE_WORD_ENGINE.set(DB.get().unwrap().wake_word_engine).unwrap(); + + // load given wake-word engine + match WAKE_WORD_ENGINE.get().unwrap() { + WakeWordEngine::Porcupine => { + // Init Porcupine wake-word engine + info!("Initializing Porcupine wake-word engine."); + + return porcupine::init(); + }, + WakeWordEngine::Rustpotter => { + // Init Rustpotter wake-word engine + info!("Initializing Rustpotter wake-word engine."); + + return rustpotter::init(); + }, + WakeWordEngine::Vosk => { + // Init Vosk as wake-word engine (very slow, though) + info!("Initializing Vosk as wake-word engine."); + warn!("Using Vosk as wake-word engine is highly not recommended, because it's very slow for this task."); + + return vosk::init(); + }, + } +} + +pub fn data_callback(frame_buffer: &[i16]) -> Option { + match WAKE_WORD_ENGINE.get().unwrap() { + WakeWordEngine::Porcupine => { + porcupine::data_callback(frame_buffer) + }, + WakeWordEngine::Rustpotter => { + rustpotter::data_callback(frame_buffer) + }, + WakeWordEngine::Vosk => { + vosk::data_callback(frame_buffer) + } + } +} \ No newline at end of file diff --git a/app/src/listener/porcupine.rs b/app/src/listener/porcupine.rs new file mode 100644 index 0000000..bfb4aa7 --- /dev/null +++ b/app/src/listener/porcupine.rs @@ -0,0 +1,52 @@ +use std::path::Path; + +use once_cell::sync::OnceCell; +use porcupine::{Porcupine, PorcupineBuilder}; + +use crate::DB; +use crate::config; + +// store porcupine instance +static PORCUPINE: OnceCell = OnceCell::new(); + +pub fn init() -> Result<(), ()> { + let picovoice_api_key: String; + + // retrieve picovoice api key + picovoice_api_key = DB.get().unwrap().api_keys.picovoice.clone(); + if picovoice_api_key.trim().is_empty() { + warn!("Picovoice API key is not set."); + return Err(()) + } + + // create porcupine instance with the given API key + match PorcupineBuilder::new_with_keyword_paths(picovoice_api_key, &[Path::new(config::KEYWORDS_PATH).join(config::DEFAULT_KEYWORD)]) + .sensitivities(&[config::DEFAULT_SENSITIVITY]) // set sensitivity + .init() { + Ok(pinstance) => { + // success + info!("Porcupine successfully initialized with the given API key."); + + // store + PORCUPINE.set(pinstance); + }, + Err(msg) => { + error!("Porcupine failed to initialize, either API key is not valid or there is no internet connection."); + error!("Error details: {}", msg); + + return Err(()); + } + } + + Ok(()) +} + +pub fn data_callback(frame_buffer: &[i16]) -> Option { + if let Ok(keyword_index) = PORCUPINE.get().unwrap().process(&frame_buffer) { + if keyword_index >= 0 { + return Some(keyword_index) + } + } + + None +} \ No newline at end of file diff --git a/app/src/listener/rustpotter.rs b/app/src/listener/rustpotter.rs new file mode 100644 index 0000000..75b73c9 --- /dev/null +++ b/app/src/listener/rustpotter.rs @@ -0,0 +1,65 @@ +use std::path::Path; +use std::sync::Mutex; + +use once_cell::sync::OnceCell; +use rustpotter::{Rustpotter, RustpotterConfig, WavFmt, DetectorConfig, FiltersConfig, ScoreMode, GainNormalizationConfig, BandPassConfig}; + +use crate::DB; +use crate::config; + +// store rustpotter instance +static RUSTPOTTER: OnceCell> = OnceCell::new(); + +pub fn init() -> Result<(), ()> { + let rustpotter_config = config::RUSTPOTTER_DEFAULT_CONFIG; + + // create rustpotter instance + match Rustpotter::new(&rustpotter_config) { + Ok(mut rinstance) => { + // success + // wake word files list + // @TODO. Make it configurable via GUI for custom user voice. + let rustpotter_wake_word_files: [&str; 5] = [ + "rustpotter/jarvis-default.rpw", + "rustpotter/jarvis-community-1.rpw", + "rustpotter/jarvis-community-2.rpw", + "rustpotter/jarvis-community-3.rpw", + "rustpotter/jarvis-community-4.rpw", + // "rustpotter/jarvis-community-5.rpw", + ]; + + // load wake word files + for rpw in rustpotter_wake_word_files { + rinstance.add_wakeword_from_file(rpw).unwrap(); + } + + // store + RUSTPOTTER.set(Mutex::new(rinstance)); + }, + Err(msg) => { + error!("Rustpotter failed to initialize.\nError details: {}", msg); + + return Err(()); + } + } + + Ok(()) +} + +pub fn data_callback(frame_buffer: &[i16]) -> Option { + let mut lock = RUSTPOTTER.get().unwrap().lock(); + let rustpotter = lock.as_mut().unwrap(); + let detection = rustpotter.process_i16(&frame_buffer); + + if let Some(detection) = detection { + if detection.score > config::RUSPOTTER_MIN_SCORE { + info!("Rustpotter detection info:\n{:?}", detection); + + return Some(0) + } else { + info!("Rustpotter detection info:\n{:?}", detection) + } + } + + None +} \ No newline at end of file diff --git a/app/src/listener/vosk.rs b/app/src/listener/vosk.rs new file mode 100644 index 0000000..4d4f5df --- /dev/null +++ b/app/src/listener/vosk.rs @@ -0,0 +1,33 @@ +use crate::{config, stt}; + +pub fn init() -> Result<(), ()> { + Ok(()) // nothing to init for Vosk +} + +// @TODO. Make it better somehow (more accurate or with higher sensitivity). +pub fn data_callback(frame_buffer: &[i16]) -> Option { + // recognize & convert to sequence + let recognized_phrase = stt::recognize(&frame_buffer, true).unwrap_or("".into()); + + if !recognized_phrase.trim().is_empty() { + info!("Vosk wake-word debug info:"); + info!("rec: {}", recognized_phrase); + let recognized_phrases = recognized_phrase.split_whitespace(); + for phrase in recognized_phrases { + let recognized_phrase_chars = phrase.trim().to_lowercase().chars().collect::>(); + + // compare + let compare_ratio = seqdiff::ratio(&config::VOSK_FETCH_PHRASE.chars().collect::>(), &recognized_phrase_chars); + info!("og phrase: {:?}", &config::VOSK_FETCH_PHRASE); + info!("recognized phrase: {:?}", &recognized_phrase_chars); + info!("compare ratio: {}", compare_ratio); + + if compare_ratio >= config::VOSK_MIN_RATIO { + info!("Phrase activated."); + return Some(0) + } + } + } + + None +} \ No newline at end of file diff --git a/app/src/log.rs b/app/src/log.rs new file mode 100644 index 0000000..3f5bf11 --- /dev/null +++ b/app/src/log.rs @@ -0,0 +1,21 @@ +use simple_log::LogConfigBuilder; + +use crate::config; +use crate::APP_LOG_DIR; + +pub fn init_logging() -> Result<(), String> { + // configure logging + let config = LogConfigBuilder::builder() + .path(format!("{}/{}", APP_LOG_DIR.get().unwrap().display(), config::LOG_FILE_NAME)) + .size(1 * 100) + .roll_count(10) + .time_format("%Y-%m-%d %H:%M:%S.%f") //E.g:%H:%M:%S.%f + .level("debug") + .output_file() + .output_console() + .build(); + + simple_log::new(config)?; + + Ok(()) +} \ No newline at end of file diff --git a/app/src/main.rs b/app/src/main.rs new file mode 100644 index 0000000..3408f39 --- /dev/null +++ b/app/src/main.rs @@ -0,0 +1,114 @@ +use std::env; +use std::error::Error; +use std::path::PathBuf; + +use once_cell::sync::{Lazy, OnceCell}; +use platform_dirs::{AppDirs}; + +// expose the config +mod config; + +// include log +#[macro_use] +extern crate simple_log; +mod log; + +// include app +mod app; + +// include db +mod db; + +// include tray +// @TODO. macOS currently not supported for tray functionality. +#[cfg(not(target_os = "macos"))] +mod tray; + +// include recorder +mod recorder; + +// include speech-to-text +mod stt; + +// include text-to-speech +// empty + +// include commands +mod commands; +use commands::AssistantCommand; +use crate::commands::list; + +// include audio +mod audio; + +// include listener +mod listener; + +// some global data +static APP_DIR: Lazy = Lazy::new(|| {env::current_dir().unwrap()}); +static SOUND_DIR: Lazy = Lazy::new(|| {APP_DIR.clone().join("sound")}); +static APP_DIRS: OnceCell = OnceCell::new(); +static APP_CONFIG_DIR: OnceCell = OnceCell::new(); +static APP_LOG_DIR: OnceCell = OnceCell::new(); +static DB: OnceCell = OnceCell::new(); +static COMMANDS_LIST: OnceCell> = OnceCell::new(); + +fn main() -> Result<(), String> { + // initialize directories + config::init_dirs()?; + + // initialize logging + log::init_logging()?; + + // log some base info + info!("Starting Jarvis v{} ...", config::APP_VERSION.unwrap()); + info!("Config directory is: {}", APP_CONFIG_DIR.get().unwrap().display()); + info!("Log directory is: {}", APP_LOG_DIR.get().unwrap().display()); + + // initialize database (settings) + DB.set(db::init_settings()); + + // initialize tray + // @TODO. macOS currently not supported for tray functionality, + // due to the separate thread in which tray processing works, + // but macOS requires it to be processed in the main thread only + // The solution may be to include wake-word detection etc. in the winit event loop. (only for MacOS, though?) + #[cfg(not(target_os = "macos"))] + tray::init(); + + // init recorder + if recorder::init().is_err() { + app::close(1); // cannot continue without recorder + } + + // init stt engine + if stt::init().is_err() { + // @TODO. Allow continuing even without STT, if commands is using keywords or smthng? + app::close(1); // cannot continue without stt + } + + // init tts engine + // none for now (Silero-rs coming) + + // init commands + info!("Initializing commands."); + let commands = commands::parse_commands().unwrap(); + info!("Commands initialized.\nOverall commands parsed: {}\nParsed commands: {:?}", commands.len(), commands::list(&commands)); + COMMANDS_LIST.set(commands).unwrap(); + + // init audio + if audio::init().is_err() { + // @TODO. Allow continuing even without audio? + app::close(1); // cannot continue without audio + } + + // init wake-word engine + if listener::init().is_err() { + app::close(1); // cannot continue without wake-word engine + } + + // start the app + app::start(); + + Ok(()) +} \ No newline at end of file diff --git a/src-tauri/src/recorder.rs b/app/src/recorder.rs similarity index 57% rename from src-tauri/src/recorder.rs rename to app/src/recorder.rs index c590ff5..b857f7c 100644 --- a/src-tauri/src/recorder.rs +++ b/app/src/recorder.rs @@ -1,46 +1,39 @@ -// use once_cell::sync::OnceCell; -use std::sync::atomic::{AtomicU32, Ordering}; -use log::{info, warn, error}; -use atomic_enum::atomic_enum; - mod pvrecorder; // mod cpal; // mod portaudio; -use crate::DB; +use once_cell::sync::OnceCell; -#[atomic_enum] -#[derive(PartialEq)] -pub enum RecorderType { - Cpal, - PvRecorder, - PortAudio -} +use crate::{DB, config, config::structs::RecorderType}; -pub static RECORDER_TYPE: AtomicRecorderType = AtomicRecorderType::new(RecorderType::PvRecorder); // use pvrecorder as default -pub static FRAME_LENGTH: AtomicU32 = AtomicU32::new(0); +static RECORDER_TYPE: OnceCell = OnceCell::new(); +static FRAME_LENGTH: OnceCell = OnceCell::new(); +pub fn init() -> Result<(), ()> { + // set default recorder type + // @TODO. Make it configurable? + RECORDER_TYPE.set(config::DEFAULT_RECORDER_TYPE).unwrap(); -pub fn init() { - match RECORDER_TYPE.load(Ordering::SeqCst) { + // load given recorder + match RECORDER_TYPE.get().unwrap() { RecorderType::PvRecorder => { // Init Pv Recorder - info!("Initializing Pv Recorder audio backend."); - match pvrecorder::init_microphone(get_selected_microphone_index(), FRAME_LENGTH.load(Ordering::SeqCst)) { + info!("Initializing PvRecorder recording backend."); + FRAME_LENGTH.set(512u32).unwrap(); // pvrecorder requires frame buffer of 512 + match pvrecorder::init_microphone(get_selected_microphone_index(), FRAME_LENGTH.get().unwrap().to_owned()) { false => { - // Switch to CPAL recorder - warn!("Pv Recorder audio backend failed."); - // RECORDER_TYPE.store(RecorderType::PortAudio, Ordering::SeqCst); + error!("Recorder initialization failed."); - // init again - init(); + return Err(()) }, - _ => () + _ => { + info!("Recorder initialization success."); + } } }, RecorderType::PortAudio => { // Init PortAudio - info!("Initializing PortAudio audio backend"); + info!("Initializing PortAudio recording backend"); todo!(); // match portaudio::init_microphone(get_selected_microphone_index(), FRAME_LENGTH.load(Ordering::SeqCst)) { // false => { @@ -52,7 +45,7 @@ pub fn init() { }, RecorderType::Cpal => { // Init CPAL - info!("Initializing CPAL audio backend"); + info!("Initializing CPAL recording backend"); todo!(); // match cpal::init_microphone(get_selected_microphone_index(), FRAME_LENGTH.load(Ordering::SeqCst)) { // false => { @@ -63,10 +56,12 @@ pub fn init() { // } } } + + Ok(()) } pub fn read_microphone(frame_buffer: &mut [i16]) { - match RECORDER_TYPE.load(Ordering::SeqCst) { + match RECORDER_TYPE.get().unwrap() { RecorderType::PvRecorder => { pvrecorder::read_microphone(frame_buffer); }, @@ -81,45 +76,38 @@ pub fn read_microphone(frame_buffer: &mut [i16]) { } } -pub fn start_recording() { - match RECORDER_TYPE.load(Ordering::SeqCst) { +pub fn start_recording() -> Result<(), ()> { + match RECORDER_TYPE.get().unwrap() { RecorderType::PvRecorder => { - pvrecorder::start_recording(get_selected_microphone_index(), FRAME_LENGTH.load(Ordering::SeqCst)); + return pvrecorder::start_recording(get_selected_microphone_index(), FRAME_LENGTH.get().unwrap().to_owned()); }, RecorderType::PortAudio => { todo!(); // portaudio::start_recording(get_selected_microphone_index(), FRAME_LENGTH.load(Ordering::SeqCst)); }, RecorderType::Cpal => { + todo!(); // cpal::start_recording(get_selected_microphone_index(), FRAME_LENGTH.load(Ordering::SeqCst)); } } } -pub fn stop_recording() { - match RECORDER_TYPE.load(Ordering::SeqCst) { +pub fn stop_recording() -> Result<(), ()> { + match RECORDER_TYPE.get().unwrap() { RecorderType::PvRecorder => { - pvrecorder::stop_recording(); + pvrecorder::stop_recording() }, RecorderType::PortAudio => { todo!(); // portaudio::stop_recording(); }, RecorderType::Cpal => { + todo!(); // cpal::stop_recording(); } } } pub fn get_selected_microphone_index() -> i32 { - let selected_microphone: i32; - - // Retrieve microphone index - if let Some(smic) = DB.lock().unwrap().get::("selected_microphone") { - selected_microphone = smic.parse().unwrap_or(-1); - } else { - selected_microphone = -1; - } - - selected_microphone + DB.get().unwrap().microphone } \ No newline at end of file diff --git a/src-tauri/src/recorder/cpal.rs b/app/src/recorder/cpal.rs similarity index 99% rename from src-tauri/src/recorder/cpal.rs rename to app/src/recorder/cpal.rs index 27840fe..8b4d0ed 100644 --- a/src-tauri/src/recorder/cpal.rs +++ b/app/src/recorder/cpal.rs @@ -1,3 +1,8 @@ +/* + Abandoned temporary. + Problems with frame size. +*/ + use cpal::traits::{DeviceTrait, HostTrait, StreamTrait}; use cpal::{BufferSize, StreamConfig, SampleRate, Host, Device, Stream, SampleFormat}; use log::{info, warn, error}; diff --git a/src-tauri/src/recorder/portaudio.rs b/app/src/recorder/portaudio.rs similarity index 99% rename from src-tauri/src/recorder/portaudio.rs rename to app/src/recorder/portaudio.rs index e69a374..36a995a 100644 --- a/src-tauri/src/recorder/portaudio.rs +++ b/app/src/recorder/portaudio.rs @@ -1,3 +1,7 @@ +/* + Abandoned temporary. +*/ + use portaudio as pa; use pa::{DeviceIndex, Stream}; use log::{info, warn, error}; diff --git a/app/src/recorder/pvrecorder.rs b/app/src/recorder/pvrecorder.rs new file mode 100644 index 0000000..e1711c9 --- /dev/null +++ b/app/src/recorder/pvrecorder.rs @@ -0,0 +1,98 @@ +use once_cell::sync::OnceCell; +use std::sync::atomic::{AtomicBool, Ordering}; +use pv_recorder::{Recorder, RecorderBuilder}; + +static RECORDER: OnceCell = OnceCell::new(); +static IS_RECORDING: AtomicBool = AtomicBool::new(false); + +pub fn init_microphone(device_index: i32, frame_length: u32) -> bool { + match RECORDER.get().is_none() { + true => { + let pv_recorder = RecorderBuilder::new() + .device_index(device_index) + .frame_length(frame_length as i32) + .init(); + + match pv_recorder { + Ok(pv) => { + // store + RECORDER.set(pv); + + // success + true + }, + Err(msg) => { + error!("Failed to initialize pvrecorder.\nError details: {:?}", msg); + + // fail + false + } + } + }, + _ => true // already initialized + } +} + +pub fn read_microphone(frame_buffer: &mut [i16]) { + // ensure microphone is initialized + if !RECORDER.get().is_none() { + // read to frame buffer + match RECORDER.get().unwrap().read(frame_buffer) { + Err(msg) => { + // @TODO: Fix? PvRecorder always wait for PCM buffer size of 512. + error!("Failed to read audio frame. {:?}", msg); + }, + _ => () + } + } +} + +pub fn start_recording(device_index: i32, frame_length: u32) -> Result<(), ()> { + // ensure microphone is initialized + init_microphone(device_index, frame_length); + + // start recording + match RECORDER.get().unwrap().start() { + Ok(_) => { + info!("START recording from microphone ..."); + + // change recording state + IS_RECORDING.store(true, Ordering::SeqCst); + + // success + Ok(()) + }, + Err(msg) => { + error!("Failed to start audio recording!"); + + // fail + Err(()) + } + } +} + +pub fn stop_recording() -> Result<(), ()> { + // ensure microphone is initialized & recording is in process + if !RECORDER.get().is_none() && IS_RECORDING.load(Ordering::SeqCst) { + // stop recording + match RECORDER.get().unwrap().stop() { + Ok(_) => { + info!("STOP recording from microphone ..."); + + // change recording state + IS_RECORDING.store(false, Ordering::SeqCst); + + // success + return Ok(()) + }, + Err(msg) => { + error!("Failed to stop audio recording!"); + + // fail + return Err(()) + } + } + } + + Ok(()) // if already stopped or not yet initialized +} \ No newline at end of file diff --git a/app/src/stt.rs b/app/src/stt.rs new file mode 100644 index 0000000..3d24f28 --- /dev/null +++ b/app/src/stt.rs @@ -0,0 +1,36 @@ +mod vosk; + +use once_cell::sync::OnceCell; +use crate::config; + +use crate::config::structs::SpeechToTextEngine; + +static STT_TYPE: OnceCell = OnceCell::new(); + +pub fn init() -> Result<(), ()> { + if !STT_TYPE.get().is_none() {return Ok(());} // already initialized + + // set default stt type + // @TODO. Make it configurable? + STT_TYPE.set(config::DEFAULT_SPEECH_TO_TEXT_ENGINE).unwrap(); + + // load given recorder + match STT_TYPE.get().unwrap() { + SpeechToTextEngine::Vosk => { + // Init Vosk + info!("Initializing Vosk STT backend."); + vosk::init_vosk(); + info!("STT backend initialized."); + } + } + + Ok(()) +} + +pub fn recognize(data: &[i16], partial: bool) -> Option { + match STT_TYPE.get().unwrap() { + SpeechToTextEngine::Vosk => { + vosk::recognize(data, partial) + } + } +} \ No newline at end of file diff --git a/src-tauri/src/vosk.rs b/app/src/stt/vosk.rs similarity index 59% rename from src-tauri/src/vosk.rs rename to app/src/stt/vosk.rs index 57d08ef..8704555 100644 --- a/src-tauri/src/vosk.rs +++ b/app/src/stt/vosk.rs @@ -1,30 +1,34 @@ -use std::sync::Mutex; +use once_cell::sync::OnceCell; use vosk::{DecodingState, Model, Recognizer}; +use std::sync::Mutex; + use crate::config::VOSK_MODEL_PATH; -lazy_static! { - static ref MODEL: Model = Model::new(VOSK_MODEL_PATH).unwrap(); -} - -lazy_static! { - static ref RECOGNIZER: Mutex = - Mutex::new(Recognizer::new(&MODEL, 16000.0).unwrap()); -} +static MODEL: OnceCell = OnceCell::new(); +static RECOGNIZER: OnceCell> = OnceCell::new(); pub fn init_vosk() { - RECOGNIZER.lock().unwrap().set_max_alternatives(10); - RECOGNIZER.lock().unwrap().set_words(true); - RECOGNIZER.lock().unwrap().set_partial_words(true); + if !RECOGNIZER.get().is_none() {return;} // already initialized + + let model = Model::new(VOSK_MODEL_PATH).unwrap(); + let mut recognizer = Recognizer::new(&model, 16000.0).unwrap(); + + recognizer.set_max_alternatives(10); + recognizer.set_words(true); + recognizer.set_partial_words(true); + + MODEL.set(model); + RECOGNIZER.set(Mutex::new(recognizer)); } pub fn recognize(data: &[i16], include_partial: bool) -> Option { - let state = RECOGNIZER.lock().unwrap().accept_waveform(data); + let state = RECOGNIZER.get().unwrap().lock().unwrap().accept_waveform(data); match state { DecodingState::Running => { if include_partial { - Some(RECOGNIZER.lock().unwrap().partial_result().partial.into()) + Some(RECOGNIZER.get().unwrap().lock().unwrap().partial_result().partial.into()) } else { None } @@ -32,9 +36,7 @@ pub fn recognize(data: &[i16], include_partial: bool) -> Option { DecodingState::Finalized => { // Result will always be multiple because we called set_max_alternatives Some( - RECOGNIZER - .lock() - .unwrap() + RECOGNIZER.get().unwrap().lock().unwrap() .result() .multiple() .unwrap() diff --git a/app/src/tray.rs b/app/src/tray.rs new file mode 100644 index 0000000..87c3fc1 --- /dev/null +++ b/app/src/tray.rs @@ -0,0 +1,95 @@ +mod menu; + +use tray_icon::{ + menu::{AboutMetadata, Menu, MenuEvent, MenuItem, PredefinedMenuItem}, + TrayEvent, TrayIconBuilder, +}; +use winit::event_loop::{ControlFlow, EventLoopBuilder}; +use image; +use winit::platform::windows::EventLoopBuilderExtWindows; + +use crate::config; + +pub fn init() { + // spawn tray icon + // New thread will prevent tray icon to work on MacOS + // @TODO: MacOS support. + std::thread::spawn(|| { + + // load tray icon + let icon_path = format!("{}/icons/{}", env!("CARGO_MANIFEST_DIR"), config::TRAY_ICON); + let icon = load_icon(std::path::Path::new(&icon_path)); + + // form tray menu + let tray_menu = Menu::with_items(&[ + &MenuItem::new("Перезапуск", true, None), + &MenuItem::new("Настройки", true, None), + &MenuItem::new("Выход", true, None) + ]); + + #[cfg(not(target_os = "linux"))] + let mut tray_icon = Some( + TrayIconBuilder::new() + .with_menu(Box::new(tray_menu)) + .with_tooltip(config::TRAY_TOOLTIP) + .with_icon(icon) + .build() + .unwrap() + ); + + // Since winit doesn't use gtk on Linux, and we need gtk for + // the tray icon to show up, we need to initialize gtk and create the tray_icon + #[cfg(target_os = "linux")] + { + use tray_icon::menu::Menu; + + gtk::init().unwrap(); + let _tray_icon = TrayIconBuilder::new() + .with_menu(Box::new(tray_menu)) + .with_tooltip(config::TRAY_TOOLTIP) + .with_icon(icon) + .build() + .unwrap(); + + gtk::main(); + } + + // run the event loop + let event_loop = EventLoopBuilder::new().with_any_thread(true).build(); + + let menu_channel = MenuEvent::receiver(); + let tray_channel = TrayEvent::receiver(); + + event_loop.run(move |_event, _, control_flow| { + *control_flow = ControlFlow::Poll; + + //if let Ok(event) = tray_channel.try_recv() { + // println!("tray event: {event:?}"); + //} + + if let Ok(event) = menu_channel.try_recv() { + println!("menu event: {:?}", event); + + if event.id == 1002 { + std::process::exit(0); + } + } + }); + + }); + + info!("Tray initialized."); +} + +fn load_icon(path: &std::path::Path) -> tray_icon::icon::Icon { + let (icon_rgba, icon_width, icon_height) = { + let image = image::open(path) + .expect("Failed to open icon path") + .into_rgba8(); + let (width, height) = image.dimensions(); + let rgba = image.into_raw(); + (rgba, width, height) + }; + tray_icon::icon::Icon::from_rgba(icon_rgba, icon_width, icon_height) + .expect("Failed to open icon") +} \ No newline at end of file diff --git a/app/src/tray/menu.rs b/app/src/tray/menu.rs new file mode 100644 index 0000000..b72c224 --- /dev/null +++ b/app/src/tray/menu.rs @@ -0,0 +1,15 @@ +pub enum TrayMenuItem { + Restart, + Settings, + Exit +} + +impl TrayMenuItem { + pub fn label(&self) -> &str { + match *self { + TrayMenuItem::Restart => "Перезапустить", + TrayMenuItem::Settings => "Настройки", + TrayMenuItem::Exit => "Выход" + } + } +} \ No newline at end of file diff --git a/src-tauri/vosk/model_small/README b/app/vosk/model_small/README similarity index 100% rename from src-tauri/vosk/model_small/README rename to app/vosk/model_small/README diff --git a/src-tauri/vosk/model_small/am/final.mdl b/app/vosk/model_small/am/final.mdl similarity index 100% rename from src-tauri/vosk/model_small/am/final.mdl rename to app/vosk/model_small/am/final.mdl diff --git a/src-tauri/vosk/model_small/conf/mfcc.conf b/app/vosk/model_small/conf/mfcc.conf similarity index 100% rename from src-tauri/vosk/model_small/conf/mfcc.conf rename to app/vosk/model_small/conf/mfcc.conf diff --git a/src-tauri/vosk/model_small/conf/model.conf b/app/vosk/model_small/conf/model.conf similarity index 100% rename from src-tauri/vosk/model_small/conf/model.conf rename to app/vosk/model_small/conf/model.conf diff --git a/src-tauri/vosk/model_small/graph/Gr.fst b/app/vosk/model_small/graph/Gr.fst similarity index 100% rename from src-tauri/vosk/model_small/graph/Gr.fst rename to app/vosk/model_small/graph/Gr.fst diff --git a/src-tauri/vosk/model_small/graph/HCLr.fst b/app/vosk/model_small/graph/HCLr.fst similarity index 100% rename from src-tauri/vosk/model_small/graph/HCLr.fst rename to app/vosk/model_small/graph/HCLr.fst diff --git a/src-tauri/vosk/model_small/graph/disambig_tid.int b/app/vosk/model_small/graph/disambig_tid.int similarity index 100% rename from src-tauri/vosk/model_small/graph/disambig_tid.int rename to app/vosk/model_small/graph/disambig_tid.int diff --git a/src-tauri/vosk/model_small/graph/phones/word_boundary.int b/app/vosk/model_small/graph/phones/word_boundary.int similarity index 100% rename from src-tauri/vosk/model_small/graph/phones/word_boundary.int rename to app/vosk/model_small/graph/phones/word_boundary.int diff --git a/src-tauri/vosk/model_small/ivector/final.dubm b/app/vosk/model_small/ivector/final.dubm similarity index 100% rename from src-tauri/vosk/model_small/ivector/final.dubm rename to app/vosk/model_small/ivector/final.dubm diff --git a/src-tauri/vosk/model_small/ivector/final.ie b/app/vosk/model_small/ivector/final.ie similarity index 100% rename from src-tauri/vosk/model_small/ivector/final.ie rename to app/vosk/model_small/ivector/final.ie diff --git a/src-tauri/vosk/model_small/ivector/final.mat b/app/vosk/model_small/ivector/final.mat similarity index 100% rename from src-tauri/vosk/model_small/ivector/final.mat rename to app/vosk/model_small/ivector/final.mat diff --git a/src-tauri/vosk/model_small/ivector/global_cmvn.stats b/app/vosk/model_small/ivector/global_cmvn.stats similarity index 100% rename from src-tauri/vosk/model_small/ivector/global_cmvn.stats rename to app/vosk/model_small/ivector/global_cmvn.stats diff --git a/src-tauri/vosk/model_small/ivector/online_cmvn.conf b/app/vosk/model_small/ivector/online_cmvn.conf similarity index 100% rename from src-tauri/vosk/model_small/ivector/online_cmvn.conf rename to app/vosk/model_small/ivector/online_cmvn.conf diff --git a/src-tauri/vosk/model_small/ivector/splice.conf b/app/vosk/model_small/ivector/splice.conf similarity index 100% rename from src-tauri/vosk/model_small/ivector/splice.conf rename to app/vosk/model_small/ivector/splice.conf diff --git a/gui/src-tauri/Cargo.lock b/gui/src-tauri/Cargo.lock new file mode 100644 index 0000000..4f18bd8 --- /dev/null +++ b/gui/src-tauri/Cargo.lock @@ -0,0 +1,2582 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "alsa" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8512c9117059663fb5606788fbca3619e2a91dac0e3fe516242eab1fa6be5e44" +dependencies = [ + "alsa-sys", + "bitflags 1.3.2", + "libc", + "nix", +] + +[[package]] +name = "alsa-sys" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db8fee663d06c4e303404ef5f40488a53e062f89ba8bfed81f42325aafad1527" +dependencies = [ + "libc", + "pkg-config", +] + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anyhow" +version = "1.0.71" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c7d0618f0e0b7e8ff11427422b64564d5fb0be1940354bfe2e0529b18a9d9b8" + +[[package]] +name = "arc-swap" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dabe5a181f83789739c194cbe5a897dde195078fac08568d09221fd6137a7ba8" + +[[package]] +name = "arc-swap" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bddcadddf5e9015d310179a59bb28c4d4b9920ad0f11e8e14dbadf654890c9a6" + +[[package]] +name = "arrayvec" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" + +[[package]] +name = "atomic_enum" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6227a8d6fdb862bcb100c4314d0d9579e5cd73fa6df31a2e6f6e1acd3c5f1207" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "bindgen" +version = "0.64.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4243e6031260db77ede97ad86c27e501d646a27ab57b59a574f725d98ab1fb4" +dependencies = [ + "bitflags 1.3.2", + "cexpr", + "clang-sys", + "lazy_static", + "lazycell", + "peeking_take_while", + "proc-macro2", + "quote", + "regex", + "rustc-hash", + "shlex", + "syn 1.0.109", +] + +[[package]] +name = "bitflags" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aad18937a628ec6abcd26d1489012cc0e18c21798210f491af69ded9b881106d" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bumpalo" +version = "3.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" + +[[package]] +name = "bytemuck" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17febce684fd15d89027105661fec94afb475cb995fbc59d2865198446ba2eea" + +[[package]] +name = "byteorder" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" + +[[package]] +name = "bytes" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" + +[[package]] +name = "cargo_toml" +version = "0.15.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "599aa35200ffff8f04c1925aa1acc92fa2e08874379ef42e210a80e527e60838" +dependencies = [ + "serde", + "toml", +] + +[[package]] +name = "cc" +version = "1.0.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" +dependencies = [ + "jobserver", +] + +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + +[[package]] +name = "cexpr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom", +] + +[[package]] +name = "cfb" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d38f2da7a0a2c4ccf0065be06397cc26a81f4e528be095826eee9d4adbb8c60f" +dependencies = [ + "byteorder", + "fnv", + "uuid", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "chrono" +version = "0.4.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec837a71355b28f6556dbd569b37b3f363091c0bd4b2e735674521b4c5fd9bc5" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "js-sys", + "num-traits", + "serde", + "time 0.1.45", + "wasm-bindgen", + "winapi", +] + +[[package]] +name = "ciborium" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "effd91f6c78e5a4ace8a5d3c0b6bfaec9e2baaef55f3efc00e45fb2e477ee926" +dependencies = [ + "ciborium-io", + "ciborium-ll", + "serde", +] + +[[package]] +name = "ciborium-io" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdf919175532b369853f5d5e20b26b43112613fd6fe7aee757e35f7a44642656" + +[[package]] +name = "ciborium-ll" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "defaa24ecc093c77630e6c15e17c51f5e187bf35ee514f4e2d67baaa96dae22b" +dependencies = [ + "ciborium-io", + "half", +] + +[[package]] +name = "clang-sys" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c688fc74432808e3eb684cae8830a86be1d66a2bd58e1f248ed0960a590baf6f" +dependencies = [ + "glob", + "libc", + "libloading", +] + +[[package]] +name = "claxon" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bfbf56724aa9eca8afa4fcfadeb479e722935bb2a0900c2d37e0cc477af0688" + +[[package]] +name = "combine" +version = "4.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4" +dependencies = [ + "bytes", + "memchr", +] + +[[package]] +name = "convert_case" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" + +[[package]] +name = "convert_case" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb4a24b1aaf0fd0ce8b45161144d6f42cd91677fd5940fd431183eb023b3a2b8" + +[[package]] +name = "core-foundation-sys" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7ca8a5221364ef15ce201e8ed2f609fc312682a8f4e0e3d4aa5879764e0fa3b" + +[[package]] +name = "core-foundation-sys" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" + +[[package]] +name = "coreaudio-rs" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb17e2d1795b1996419648915df94bc7103c28f7b48062d7acf4652fc371b2ff" +dependencies = [ + "bitflags 1.3.2", + "core-foundation-sys 0.6.2", + "coreaudio-sys", +] + +[[package]] +name = "coreaudio-sys" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f034b2258e6c4ade2f73bf87b21047567fb913ee9550837c2316d139b0262b24" +dependencies = [ + "bindgen", +] + +[[package]] +name = "cpal" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d959d90e938c5493000514b446987c07aed46c668faaa7d34d6c7a67b1a578c" +dependencies = [ + "alsa", + "core-foundation-sys 0.8.4", + "coreaudio-rs", + "dasp_sample", + "jni 0.19.0", + "js-sys", + "libc", + "mach2", + "ndk", + "ndk-context", + "oboe", + "once_cell", + "parking_lot 0.12.1", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "windows 0.46.0", +] + +[[package]] +name = "crc32fast" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "cssparser" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "754b69d351cdc2d8ee09ae203db831e005560fc6030da058f86ad60c92a9cb0a" +dependencies = [ + "cssparser-macros", + "dtoa-short", + "itoa 0.4.8", + "matches", + "phf 0.8.0", + "proc-macro2", + "quote", + "smallvec", + "syn 1.0.109", +] + +[[package]] +name = "cssparser-macros" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" +dependencies = [ + "quote", + "syn 2.0.18", +] + +[[package]] +name = "ctor" +version = "0.1.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d2301688392eb071b0bf1a37be05c469d3cc4dbbd95df672fe28ab021e6a096" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "darling" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0558d22a7b463ed0241e993f76f09f30b126687447751a8638587b864e4b3944" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab8bfa2e259f8ee1ce5e97824a3c55ec4404a0d772ca7fa96bf19f0752a046eb" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.18", +] + +[[package]] +name = "darling_macro" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29a358ff9f12ec09c3e61fef9b5a9902623a695a46a917b07f269bff1445611a" +dependencies = [ + "darling_core", + "quote", + "syn 2.0.18", +] + +[[package]] +name = "dasp_sample" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c87e182de0887fd5361989c677c4e8f5000cd9491d6d563161a8f3a5519fc7f" + +[[package]] +name = "derive_more" +version = "0.99.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" +dependencies = [ + "convert_case 0.4.0", + "proc-macro2", + "quote", + "rustc_version", + "syn 1.0.109", +] + +[[package]] +name = "dirs-next" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf36e65a80337bea855cd4ef9b8401ffce06a7baedf2e85ec467b1ac3f6e82b6" +dependencies = [ + "cfg-if", + "dirs-sys-next", +] + +[[package]] +name = "dirs-sys-next" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" +dependencies = [ + "libc", + "redox_users", + "winapi", +] + +[[package]] +name = "dtoa" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65d09067bfacaa79114679b279d7f5885b53295b1e2cfb4e79c8e4bd3d633169" + +[[package]] +name = "dtoa-short" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbaceec3c6e4211c79e7b1800fb9680527106beb2f9c51904a3210c03a448c74" +dependencies = [ + "dtoa", +] + +[[package]] +name = "embed-resource" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80663502655af01a2902dff3f06869330782267924bf1788410b74edcd93770a" +dependencies = [ + "cc", + "rustc_version", + "toml", + "vswhom", + "winreg", +] + +[[package]] +name = "encoding_rs" +version = "0.8.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "flate2" +version = "1.0.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b9429470923de8e8cbd4d2dc513535400b4b3fef0319fb5c4e1f520a7bef743" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "form_urlencoded" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futf" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df420e2e84819663797d1ec6544b13c5be84629e7bb00dc960d6917db2987843" +dependencies = [ + "mac", + "new_debug_unreachable", +] + +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", +] + +[[package]] +name = "glob" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" + +[[package]] +name = "half" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hound" +version = "3.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d13cdbd5dbb29f9c88095bbdc2590c9cba0d0a1269b983fef6b2cdd7e9f4db1" + +[[package]] +name = "html5ever" +version = "0.25.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5c13fb08e5d4dfc151ee5e88bae63f7773d61852f3bdc73c9f4b9e1bde03148" +dependencies = [ + "log", + "mac", + "markup5ever", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "humantime" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f" +dependencies = [ + "quick-error", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613" +dependencies = [ + "android_system_properties", + "core-foundation-sys 0.8.4", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows 0.48.0", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown", + "serde", +] + +[[package]] +name = "infer" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a898e4b7951673fce96614ce5751d13c40fc5674bc2d759288e46c3ab62598b3" +dependencies = [ + "cfb", +] + +[[package]] +name = "instant" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "is_debug" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06d198e9919d9822d5f7083ba8530e04de87841eaf21ead9af8f2304efd57c89" + +[[package]] +name = "itoa" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" + +[[package]] +name = "itoa" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" + +[[package]] +name = "jarvis-app" +version = "0.0.3" +dependencies = [ + "arc-swap 1.6.0", + "atomic_enum", + "hound", + "log", + "once_cell", + "platform-dirs", + "portaudio", + "pv_porcupine", + "pv_recorder", + "rand 0.8.5", + "rodio", + "rustpotter", + "seqdiff", + "serde", + "serde_json", + "simple-log", + "tauri-build", + "vosk", +] + +[[package]] +name = "jni" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6df18c2e3db7e453d3c6ac5b3e9d5182664d28788126d39b91f2d1e22b017ec" +dependencies = [ + "cesu8", + "combine", + "jni-sys", + "log", + "thiserror", + "walkdir", +] + +[[package]] +name = "jni" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "039022cdf4d7b1cf548d31f60ae783138e5fd42013f6271049d7df7afadef96c" +dependencies = [ + "cesu8", + "combine", + "jni-sys", + "log", + "thiserror", + "walkdir", +] + +[[package]] +name = "jni-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" + +[[package]] +name = "jobserver" +version = "0.1.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "936cfd212a0155903bcbc060e316fb6cc7cbf2e1907329391ebadc1fe0ce77c2" +dependencies = [ + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.63" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f37a4a5928311ac501dee68b3c7613a1037d0edb30c8e5427bd832d55d1b790" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "json-patch" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f54898088ccb91df1b492cc80029a6fdf1c48ca0db7c6822a8babad69c94658" +dependencies = [ + "serde", + "serde_json", + "thiserror", + "treediff", +] + +[[package]] +name = "kuchiki" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ea8e9c6e031377cff82ee3001dc8026cdf431ed4e2e6b51f98ab8c73484a358" +dependencies = [ + "cssparser", + "html5ever", + "matches", + "selectors", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "lazycell" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" + +[[package]] +name = "lewton" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "777b48df9aaab155475a83a7df3070395ea1ac6902f5cd062b8f2b028075c030" +dependencies = [ + "byteorder", + "ogg", + "tinyvec", +] + +[[package]] +name = "libc" +version = "0.2.146" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b" + +[[package]] +name = "libloading" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +dependencies = [ + "cfg-if", + "winapi", +] + +[[package]] +name = "linked-hash-map" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" + +[[package]] +name = "lock_api" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "518ef76f2f87365916b142844c16d8fefd85039bc5699050210a7778ee1cd1de" +dependencies = [ + "serde", +] + +[[package]] +name = "log-mdc" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a94d21414c1f4a51209ad204c1776a3d0765002c76c6abcb602a6f09f1e881c7" + +[[package]] +name = "log4rs" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1e1ad45e4584824d760c35d71868dd7e6e5acd8f5195a9573743b369fc86cd6" +dependencies = [ + "arc-swap 0.4.8", + "chrono", + "flate2", + "fnv", + "humantime", + "libc", + "log", + "log-mdc", + "parking_lot 0.11.2", + "serde", + "serde-value", + "serde_derive", + "serde_json", + "serde_yaml", + "thread-id", + "winapi", +] + +[[package]] +name = "mac" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" + +[[package]] +name = "mach2" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d0d1830bcd151a6fc4aea1369af235b36c1528fe976b8ff678683c9995eade8" +dependencies = [ + "libc", +] + +[[package]] +name = "markup5ever" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a24f40fb03852d1cdd84330cddcaf98e9ec08a7b7768e952fad3b4cf048ec8fd" +dependencies = [ + "log", + "phf 0.8.0", + "phf_codegen", + "string_cache", + "string_cache_codegen", + "tendril", +] + +[[package]] +name = "matches" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" + +[[package]] +name = "memchr" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +dependencies = [ + "adler", +] + +[[package]] +name = "ndk" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "451422b7e4718271c8b5b3aadf5adedba43dc76312454b387e98fae0fc951aa0" +dependencies = [ + "bitflags 1.3.2", + "jni-sys", + "ndk-sys", + "num_enum", + "raw-window-handle", + "thiserror", +] + +[[package]] +name = "ndk-context" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" + +[[package]] +name = "ndk-sys" +version = "0.4.1+23.1.7779620" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3cf2aae958bd232cac5069850591667ad422d263686d75b52a065f9badeee5a3" +dependencies = [ + "jni-sys", +] + +[[package]] +name = "new_debug_unreachable" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54" + +[[package]] +name = "nix" +version = "0.24.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa52e972a9a719cecb6864fb88568781eb706bac2cd1d4f04a648542dbf78069" +dependencies = [ + "bitflags 1.3.2", + "cfg-if", + "libc", +] + +[[package]] +name = "nodrop" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "num" +version = "0.1.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4703ad64153382334aa8db57c637364c322d3372e097840c72000dabdcf6156e" +dependencies = [ + "num-integer", + "num-iter", + "num-traits", +] + +[[package]] +name = "num-complex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02e0d21255c828d6f128a1e41534206671e8c3ea0c62f32291e808dc82cff17d" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-derive" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "num-integer" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_enum" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9" +dependencies = [ + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "oboe" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8868cc237ee02e2d9618539a23a8d228b9bb3fc2e7a5b11eed3831de77c395d0" +dependencies = [ + "jni 0.20.0", + "ndk", + "ndk-context", + "num-derive", + "num-traits", + "oboe-sys", +] + +[[package]] +name = "oboe-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f44155e7fb718d3cfddcf70690b2b51ac4412f347cd9e4fbe511abe9cd7b5f2" +dependencies = [ + "cc", +] + +[[package]] +name = "ogg" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6951b4e8bf21c8193da321bcce9c9dd2e13c858fe078bf9054a288b419ae5d6e" +dependencies = [ + "byteorder", +] + +[[package]] +name = "once_cell" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" + +[[package]] +name = "ordered-float" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3305af35278dd29f46fcdd139e0b1fbfae2153f0e5928b39b035542dd31e37b7" +dependencies = [ + "num-traits", +] + +[[package]] +name = "parking_lot" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" +dependencies = [ + "instant", + "lock_api", + "parking_lot_core 0.8.6", +] + +[[package]] +name = "parking_lot" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core 0.9.8", +] + +[[package]] +name = "parking_lot_core" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" +dependencies = [ + "cfg-if", + "instant", + "libc", + "redox_syscall 0.2.16", + "smallvec", + "winapi", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall 0.3.5", + "smallvec", + "windows-targets 0.48.0", +] + +[[package]] +name = "peeking_take_while" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" + +[[package]] +name = "percent-encoding" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" + +[[package]] +name = "phf" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3dfb61232e34fcb633f43d12c58f83c1df82962dcdfa565a4e866ffc17dafe12" +dependencies = [ + "phf_macros 0.8.0", + "phf_shared 0.8.0", + "proc-macro-hack", +] + +[[package]] +name = "phf" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259" +dependencies = [ + "phf_macros 0.10.0", + "phf_shared 0.10.0", + "proc-macro-hack", +] + +[[package]] +name = "phf_codegen" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbffee61585b0411840d3ece935cce9cb6321f01c45477d30066498cd5e1a815" +dependencies = [ + "phf_generator 0.8.0", + "phf_shared 0.8.0", +] + +[[package]] +name = "phf_generator" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17367f0cc86f2d25802b2c26ee58a7b23faeccf78a396094c13dced0d0182526" +dependencies = [ + "phf_shared 0.8.0", + "rand 0.7.3", +] + +[[package]] +name = "phf_generator" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6" +dependencies = [ + "phf_shared 0.10.0", + "rand 0.8.5", +] + +[[package]] +name = "phf_macros" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f6fde18ff429ffc8fe78e2bf7f8b7a5a5a6e2a8b58bc5a9ac69198bbda9189c" +dependencies = [ + "phf_generator 0.8.0", + "phf_shared 0.8.0", + "proc-macro-hack", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "phf_macros" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58fdf3184dd560f160dd73922bea2d5cd6e8f064bf4b13110abd81b03697b4e0" +dependencies = [ + "phf_generator 0.10.0", + "phf_shared 0.10.0", + "proc-macro-hack", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "phf_shared" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c00cf8b9eafe68dde5e9eaa2cef8ee84a9336a47d566ec55ca16589633b65af7" +dependencies = [ + "siphasher", +] + +[[package]] +name = "phf_shared" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" +dependencies = [ + "siphasher", +] + +[[package]] +name = "pkg-config" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" + +[[package]] +name = "platform-dirs" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e188d043c1a692985f78b5464853a263f1a27e5bd6322bad3a4078ee3c998a38" +dependencies = [ + "dirs-next", +] + +[[package]] +name = "portaudio" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d289315f6155a7608b6d8757786c79ed2243afeab8a5eda8989effda3fdc5c3" +dependencies = [ + "bitflags 0.7.0", + "libc", + "num", + "pkg-config", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "precomputed-hash" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" + +[[package]] +name = "primal-check" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9df7f93fd637f083201473dab4fee2db4c429d32e55e3299980ab3957ab916a0" +dependencies = [ + "num-integer", +] + +[[package]] +name = "proc-macro-crate" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit", +] + +[[package]] +name = "proc-macro-hack" +version = "0.5.20+deprecated" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" + +[[package]] +name = "proc-macro2" +version = "1.0.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dec2b086b7a862cf4de201096214fa870344cf922b2b30c167badb3af3195406" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "pv_porcupine" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae7af04db856a9c23f9f35f5b4b3a224dc4d16555a0f1079f3573127f429d102" +dependencies = [ + "libc", + "libloading", +] + +[[package]] +name = "pv_recorder" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "695fa4ace21418ae0dd58626babf2c7a40db6b8e12dd371f1eb297328f7de927" +dependencies = [ + "libc", + "libloading", +] + +[[package]] +name = "quick-error" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" + +[[package]] +name = "quote" +version = "1.0.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9ab9c7eadfd8df19006f1cf1a4aed13540ed5cbc047010ece5826e10825488" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.16", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc", + "rand_pcg", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.10", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "rand_pcg" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "raw-window-handle" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9" + +[[package]] +name = "realfft" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "953d9f7e5cdd80963547b456251296efc2626ed4e3cbf36c869d9564e0220571" +dependencies = [ + "rustfft", +] + +[[package]] +name = "redox_syscall" +version = "0.1.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" + +[[package]] +name = "redox_syscall" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_syscall" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_users" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" +dependencies = [ + "getrandom 0.2.10", + "redox_syscall 0.2.16", + "thiserror", +] + +[[package]] +name = "regex" +version = "1.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0ab3ca65655bb1e41f2a8c8cd662eb4fb035e67c3f78da1d61dffe89d07300f" +dependencies = [ + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "436b050e76ed2903236f032a59761c1eb99e1b0aead2c257922771dab1fc8c78" + +[[package]] +name = "rodio" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdf1d4dea18dff2e9eb6dca123724f8b60ef44ad74a9ad283cdfe025df7e73fa" +dependencies = [ + "claxon", + "cpal", + "hound", + "lewton", + "symphonia", +] + +[[package]] +name = "rubato" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd70209c27d5b08f5528bdc779ea3ffb418954e28987f9f9775c6eac41003f9c" +dependencies = [ + "num-complex", + "num-integer", + "num-traits", + "realfft", +] + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver", +] + +[[package]] +name = "rustfft" +version = "6.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e17d4f6cbdb180c9f4b2a26bbf01c4e647f1e1dea22fe8eb9db54198b32f9434" +dependencies = [ + "num-complex", + "num-integer", + "num-traits", + "primal-check", + "strength_reduce", + "transpose", + "version_check", +] + +[[package]] +name = "rustpotter" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6a88d0514dd5dcc988c78f61be4f60fdb37d4872e23c7d8d6d2d3ea23655f97" +dependencies = [ + "ciborium", + "hound", + "rubato", + "rustfft", + "serde", +] + +[[package]] +name = "ryu" +version = "1.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "scopeguard" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" + +[[package]] +name = "selectors" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df320f1889ac4ba6bc0cdc9c9af7af4bd64bb927bccdf32d81140dc1f9be12fe" +dependencies = [ + "bitflags 1.3.2", + "cssparser", + "derive_more", + "fxhash", + "log", + "matches", + "phf 0.8.0", + "phf_codegen", + "precomputed-hash", + "servo_arc", + "smallvec", + "thin-slice", +] + +[[package]] +name = "semver" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed" + +[[package]] +name = "seqdiff" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e058ed56aee6d266fa5aa7809f99899b07d350c30aecd4f3d859b4f0d9dbbbdf" + +[[package]] +name = "serde" +version = "1.0.164" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e8c8cf938e98f769bc164923b06dce91cea1751522f46f8466461af04c9027d" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde-value" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a65a7291a8a568adcae4c10a677ebcedbc6c9cec91c054dee2ce40b0e3290eb" +dependencies = [ + "ordered-float", + "serde", +] + +[[package]] +name = "serde_derive" +version = "1.0.164" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9735b638ccc51c28bf6914d90a2e9725b377144fc612c49a611fddd1b631d68" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.18", +] + +[[package]] +name = "serde_json" +version = "1.0.96" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "057d394a50403bcac12672b2b18fb387ab6d289d957dab67dd201875391e52f1" +dependencies = [ + "itoa 1.0.6", + "ryu", + "serde", +] + +[[package]] +name = "serde_spanned" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93107647184f6027e3b7dcb2e11034cf95ffa1e3a682c67951963ac69c1c007d" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_with" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07ff71d2c147a7b57362cead5e22f772cd52f6ab31cfcd9edcd7f6aeb2a0afbe" +dependencies = [ + "base64", + "chrono", + "hex", + "indexmap", + "serde", + "serde_json", + "serde_with_macros", + "time 0.3.22", +] + +[[package]] +name = "serde_with_macros" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "881b6f881b17d13214e5d494c939ebab463d01264ce1811e9d4ac3a882e7695f" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.18", +] + +[[package]] +name = "serde_yaml" +version = "0.8.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "578a7433b776b56a35785ed5ce9a7e777ac0598aac5a6dd1b4b18a307c7fc71b" +dependencies = [ + "indexmap", + "ryu", + "serde", + "yaml-rust", +] + +[[package]] +name = "servo_arc" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d98238b800e0d1576d8b6e3de32827c2d74bee68bb97748dcf5071fb53965432" +dependencies = [ + "nodrop", + "stable_deref_trait", +] + +[[package]] +name = "shlex" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3" + +[[package]] +name = "simple-log" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "110feefe2a808cadb7fe8c07c615ac82e899f1795fec063ed2fb1d72de5d417b" +dependencies = [ + "convert_case 0.5.0", + "is_debug", + "log", + "log4rs", + "once_cell", + "serde", +] + +[[package]] +name = "siphasher" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de" + +[[package]] +name = "smallvec" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "strength_reduce" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82" + +[[package]] +name = "string_cache" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" +dependencies = [ + "new_debug_unreachable", + "once_cell", + "parking_lot 0.12.1", + "phf_shared 0.10.0", + "precomputed-hash", + "serde", +] + +[[package]] +name = "string_cache_codegen" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bb30289b722be4ff74a408c3cc27edeaad656e06cb1fe8fa9231fa59c728988" +dependencies = [ + "phf_generator 0.10.0", + "phf_shared 0.10.0", + "proc-macro2", + "quote", +] + +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "symphonia" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62e48dba70095f265fdb269b99619b95d04c89e619538138383e63310b14d941" +dependencies = [ + "lazy_static", + "symphonia-bundle-mp3", + "symphonia-core", + "symphonia-metadata", +] + +[[package]] +name = "symphonia-bundle-mp3" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f31d7fece546f1e6973011a9eceae948133bbd18fd3d52f6073b1e38ae6368a" +dependencies = [ + "bitflags 1.3.2", + "lazy_static", + "log", + "symphonia-core", + "symphonia-metadata", +] + +[[package]] +name = "symphonia-core" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7c73eb88fee79705268cc7b742c7bc93a7b76e092ab751d0833866970754142" +dependencies = [ + "arrayvec", + "bitflags 1.3.2", + "bytemuck", + "lazy_static", + "log", +] + +[[package]] +name = "symphonia-metadata" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89c3e1937e31d0e068bbe829f66b2f2bfaa28d056365279e0ef897172c3320c0" +dependencies = [ + "encoding_rs", + "lazy_static", + "log", + "symphonia-core", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32d41677bcbe24c20c52e7c70b0d8db04134c5d1066bf98662e2871ad200ea3e" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "tauri-build" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "929b3bd1248afc07b63e33a6a53c3f82c32d0b0a5e216e4530e94c467e019389" +dependencies = [ + "anyhow", + "cargo_toml", + "heck", + "json-patch", + "semver", + "serde", + "serde_json", + "tauri-utils", + "tauri-winres", + "winnow", +] + +[[package]] +name = "tauri-utils" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6f9c2dafef5cbcf52926af57ce9561bd33bb41d7394f8bb849c0330260d864" +dependencies = [ + "ctor", + "glob", + "heck", + "html5ever", + "infer", + "json-patch", + "kuchiki", + "memchr", + "phf 0.10.1", + "proc-macro2", + "quote", + "semver", + "serde", + "serde_json", + "serde_with", + "thiserror", + "url", + "walkdir", + "windows 0.39.0", +] + +[[package]] +name = "tauri-winres" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5993dc129e544393574288923d1ec447c857f3f644187f4fbf7d9a875fbfc4fb" +dependencies = [ + "embed-resource", + "toml", +] + +[[package]] +name = "tendril" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d24a120c5fc464a3458240ee02c299ebcb9d67b5249c8848b09d639dca8d7bb0" +dependencies = [ + "futf", + "mac", + "utf-8", +] + +[[package]] +name = "thin-slice" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eaa81235c7058867fa8c0e7314f33dcce9c215f535d1913822a2b3f5e289f3c" + +[[package]] +name = "thiserror" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.18", +] + +[[package]] +name = "thread-id" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7fbf4c9d56b320106cd64fd024dadfa0be7cb4706725fc44a7d7ce952d820c1" +dependencies = [ + "libc", + "redox_syscall 0.1.57", + "winapi", +] + +[[package]] +name = "time" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" +dependencies = [ + "libc", + "wasi 0.10.0+wasi-snapshot-preview1", + "winapi", +] + +[[package]] +name = "time" +version = "0.3.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea9e1b3cf1243ae005d9e74085d4d542f3125458f3a81af210d901dcd7411efd" +dependencies = [ + "itoa 1.0.6", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb" + +[[package]] +name = "time-macros" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "372950940a5f07bf38dbe211d7283c9e6d7327df53794992d293e534c733d09b" +dependencies = [ + "time-core", +] + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[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.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a76a9312f5ba4c2dec6b9161fdf25d87ad8a09256ccea5a556fef03c706a10f" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.19.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13" +dependencies = [ + "indexmap", + "serde", + "serde_spanned", + "toml_datetime", + "winnow", +] + +[[package]] +name = "transpose" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6522d49d03727ffb138ae4cbc1283d3774f0d10aa7f9bf52e6784c45daf9b23" +dependencies = [ + "num-integer", + "strength_reduce", +] + +[[package]] +name = "treediff" +version = "4.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52984d277bdf2a751072b5df30ec0377febdb02f7696d64c2d7d54630bac4303" +dependencies = [ + "serde_json", +] + +[[package]] +name = "unicode-bidi" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" + +[[package]] +name = "unicode-ident" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15811caf2415fb889178633e7724bad2509101cde276048e013b9def5e51fa0" + +[[package]] +name = "unicode-normalization" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "url" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + +[[package]] +name = "uuid" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "345444e32442451b267fc254ae85a209c64be56d2890e601a0c37ff0c3c5ecd2" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "vosk" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e24b8dd868df76aea46929b460640896b170d64eefffcd773084fdd4fcd67ec" +dependencies = [ + "serde", + "serde_json", + "vosk-sys", +] + +[[package]] +name = "vosk-sys" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4119af93ca109482d71c6c01511a88c93131fcfdcf4ab4f5f1d8e4e4f5099d29" + +[[package]] +name = "vswhom" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be979b7f07507105799e854203b470ff7c78a1639e330a58f183b5fea574608b" +dependencies = [ + "libc", + "vswhom-sys", +] + +[[package]] +name = "vswhom-sys" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3b17ae1f6c8a2b28506cd96d412eebf83b4a0ff2cbefeeb952f2f9dfa44ba18" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "walkdir" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + +[[package]] +name = "wasi" +version = "0.10.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.86" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5bba0e8cb82ba49ff4e229459ff22a191bbe9a1cb3a341610c9c33efc27ddf73" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.86" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19b04bc93f9d6bdee709f6bd2118f57dd6679cf1176a1af464fca3ab0d66d8fb" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.18", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d1985d03709c53167ce907ff394f5316aa22cb4e12761295c5dc57dacb6297e" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.86" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14d6b024f1a526bb0234f52840389927257beb670610081360e5a03c5df9c258" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.86" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e128beba882dd1eb6200e1dc92ae6c5dbaa4311aa7bb211ca035779e5efc39f8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.18", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.86" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed9d5b4305409d1fc9482fee2d7f9bcbf24b3972bf59817ef757e23982242a93" + +[[package]] +name = "web-sys" +version = "0.3.63" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3bdd9ef4e984da1187bf8110c5cf5b845fbc87a23602cdf912386a76fcd3a7c2" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +dependencies = [ + "winapi", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1c4bd0a50ac6020f65184721f758dba47bb9fbc2133df715ec74a237b26794a" +dependencies = [ + "windows-implement", + "windows_aarch64_msvc 0.39.0", + "windows_i686_gnu 0.39.0", + "windows_i686_msvc 0.39.0", + "windows_x86_64_gnu 0.39.0", + "windows_x86_64_msvc 0.39.0", +] + +[[package]] +name = "windows" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdacb41e6a96a052c6cb63a144f24900236121c6f63f4f8219fef5977ecb0c25" +dependencies = [ + "windows-targets 0.42.2", +] + +[[package]] +name = "windows" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +dependencies = [ + "windows-targets 0.48.0", +] + +[[package]] +name = "windows-implement" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba01f98f509cb5dc05f4e5fc95e535f78260f15fea8fe1a8abdd08f774f1cee7" +dependencies = [ + "syn 1.0.109", + "windows-tokens", +] + +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + +[[package]] +name = "windows-targets" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" +dependencies = [ + "windows_aarch64_gnullvm 0.48.0", + "windows_aarch64_msvc 0.48.0", + "windows_i686_gnu 0.48.0", + "windows_i686_msvc 0.48.0", + "windows_x86_64_gnu 0.48.0", + "windows_x86_64_gnullvm 0.48.0", + "windows_x86_64_msvc 0.48.0", +] + +[[package]] +name = "windows-tokens" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f838de2fe15fe6bac988e74b798f26499a8b21a9d97edec321e79b28d1d7f597" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" + +[[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_aarch64_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" + +[[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_gnu" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" + +[[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_i686_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" + +[[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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" + +[[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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" + +[[package]] +name = "winnow" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae8970b36c66498d8ff1d66685dc86b91b29db0c7739899012f63a63814b4b28" +dependencies = [ + "memchr", +] + +[[package]] +name = "winreg" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a1a57ff50e9b408431e8f97d5456f2807f8eb2a2cd79b06068fc87f8ecf189" +dependencies = [ + "cfg-if", + "winapi", +] + +[[package]] +name = "yaml-rust" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85" +dependencies = [ + "linked-hash-map", +] diff --git a/src-tauri/src/events.rs b/gui/src-tauri/src/events.rs similarity index 100% rename from src-tauri/src/events.rs rename to gui/src-tauri/src/events.rs diff --git a/index.html b/index.html deleted file mode 100644 index e308fa2..0000000 --- a/index.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - Проект J.A.R.V.I.S. - - - -
- - - diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 983ca0a..0000000 --- a/package-lock.json +++ /dev/null @@ -1,2825 +0,0 @@ -{ - "name": "jarvis-app", - "version": "0.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "jarvis-app", - "version": "0.0.0", - "dependencies": { - "@svelteuidev/composables": "^0.11.1", - "@svelteuidev/core": "^0.11.1", - "@svelteuidev/motion": "^0.11.1", - "@tauri-apps/api": "^1.2.0", - "howler": "^2.2.3", - "radix-icons-svelte": "^1.2.1", - "worker-timers": "^7.0.64" - }, - "devDependencies": { - "@roxi/routify": "^2.18.11", - "@sveltejs/vite-plugin-svelte": "^2.0.0", - "@tauri-apps/cli": "^1.2.2", - "@tsconfig/svelte": "^3.0.0", - "@types/node": "^18.7.10", - "sass": "^1.62.0", - "svelte": "^3.54.0", - "svelte-check": "^3.0.0", - "svelte-preprocess": "^5.0.0", - "tslib": "^2.4.1", - "typescript": "^4.9.5", - "vite": "^4.2.1", - "vite-tsconfig-paths": "^4.2.0" - } - }, - "node_modules/@babel/runtime": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz", - "integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==", - "dependencies": { - "regenerator-runtime": "^0.13.11" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.17.tgz", - "integrity": "sha512-E6VAZwN7diCa3labs0GYvhEPL2M94WLF8A+czO8hfjREXxba8Ng7nM5VxV+9ihNXIY1iQO1XxUU4P7hbqbICxg==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.17.tgz", - "integrity": "sha512-jaJ5IlmaDLFPNttv0ofcwy/cfeY4bh/n705Tgh+eLObbGtQBK3EPAu+CzL95JVE4nFAliyrnEu0d32Q5foavqg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.17.tgz", - "integrity": "sha512-446zpfJ3nioMC7ASvJB1pszHVskkw4u/9Eu8s5yvvsSDTzYh4p4ZIRj0DznSl3FBF0Z/mZfrKXTtt0QCoFmoHA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.17.tgz", - "integrity": "sha512-m/gwyiBwH3jqfUabtq3GH31otL/0sE0l34XKpSIqR7NjQ/XHQ3lpmQHLHbG8AHTGCw8Ao059GvV08MS0bhFIJQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.17.tgz", - "integrity": "sha512-4utIrsX9IykrqYaXR8ob9Ha2hAY2qLc6ohJ8c0CN1DR8yWeMrTgYFjgdeQ9LIoTOfLetXjuCu5TRPHT9yKYJVg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.17.tgz", - "integrity": "sha512-4PxjQII/9ppOrpEwzQ1b0pXCsFLqy77i0GaHodrmzH9zq2/NEhHMAMJkJ635Ns4fyJPFOlHMz4AsklIyRqFZWA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.17.tgz", - "integrity": "sha512-lQRS+4sW5S3P1sv0z2Ym807qMDfkmdhUYX30GRBURtLTrJOPDpoU0kI6pVz1hz3U0+YQ0tXGS9YWveQjUewAJw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.17.tgz", - "integrity": "sha512-biDs7bjGdOdcmIk6xU426VgdRUpGg39Yz6sT9Xp23aq+IEHDb/u5cbmu/pAANpDB4rZpY/2USPhCA+w9t3roQg==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.17.tgz", - "integrity": "sha512-2+pwLx0whKY1/Vqt8lyzStyda1v0qjJ5INWIe+d8+1onqQxHLLi3yr5bAa4gvbzhZqBztifYEu8hh1La5+7sUw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.17.tgz", - "integrity": "sha512-IBTTv8X60dYo6P2t23sSUYym8fGfMAiuv7PzJ+0LcdAndZRzvke+wTVxJeCq4WgjppkOpndL04gMZIFvwoU34Q==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.17.tgz", - "integrity": "sha512-WVMBtcDpATjaGfWfp6u9dANIqmU9r37SY8wgAivuKmgKHE+bWSuv0qXEFt/p3qXQYxJIGXQQv6hHcm7iWhWjiw==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.17.tgz", - "integrity": "sha512-2kYCGh8589ZYnY031FgMLy0kmE4VoGdvfJkxLdxP4HJvWNXpyLhjOvxVsYjYZ6awqY4bgLR9tpdYyStgZZhi2A==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.17.tgz", - "integrity": "sha512-KIdG5jdAEeAKogfyMTcszRxy3OPbZhq0PPsW4iKKcdlbk3YE4miKznxV2YOSmiK/hfOZ+lqHri3v8eecT2ATwQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.17.tgz", - "integrity": "sha512-Cj6uWLBR5LWhcD/2Lkfg2NrkVsNb2sFM5aVEfumKB2vYetkA/9Uyc1jVoxLZ0a38sUhFk4JOVKH0aVdPbjZQeA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.17.tgz", - "integrity": "sha512-lK+SffWIr0XsFf7E0srBjhpkdFVJf3HEgXCwzkm69kNbRar8MhezFpkIwpk0qo2IOQL4JE4mJPJI8AbRPLbuOQ==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.17.tgz", - "integrity": "sha512-XcSGTQcWFQS2jx3lZtQi7cQmDYLrpLRyz1Ns1DzZCtn898cWfm5Icx/DEWNcTU+T+tyPV89RQtDnI7qL2PObPg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.17.tgz", - "integrity": "sha512-RNLCDmLP5kCWAJR+ItLM3cHxzXRTe4N00TQyQiimq+lyqVqZWGPAvcyfUBM0isE79eEZhIuGN09rAz8EL5KdLA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.17.tgz", - "integrity": "sha512-PAXswI5+cQq3Pann7FNdcpSUrhrql3wKjj3gVkmuz6OHhqqYxKvi6GgRBoaHjaG22HV/ZZEgF9TlS+9ftHVigA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.17.tgz", - "integrity": "sha512-V63egsWKnx/4V0FMYkr9NXWrKTB5qFftKGKuZKFIrAkO/7EWLFnbBZNM1CvJ6Sis+XBdPws2YQSHF1Gqf1oj/Q==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.17.tgz", - "integrity": "sha512-YtUXLdVnd6YBSYlZODjWzH+KzbaubV0YVd6UxSfoFfa5PtNJNaW+1i+Hcmjpg2nEe0YXUCNF5bkKy1NnBv1y7Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.17.tgz", - "integrity": "sha512-yczSLRbDdReCO74Yfc5tKG0izzm+lPMYyO1fFTcn0QNwnKmc3K+HdxZWLGKg4pZVte7XVgcFku7TIZNbWEJdeQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.17.tgz", - "integrity": "sha512-FNZw7H3aqhF9OyRQbDDnzUApDXfC1N6fgBhkqEO2jvYCJ+DxMTfZVqg3AX0R1khg1wHTBRD5SdcibSJ+XF6bFg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@floating-ui/core": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-0.7.3.tgz", - "integrity": "sha512-buc8BXHmG9l82+OQXOFU3Kr2XQx9ys01U/Q9HMIrZ300iLc8HLMgh7dcCqgYzAzf4BkoQvDcXf5Y+CuEZ5JBYg==" - }, - "node_modules/@floating-ui/dom": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-0.5.2.tgz", - "integrity": "sha512-z1DnEa7F3d8Fm/eXSbii8UEGpcjZGkQaYYUI0WpEVgD3vBfebDW8j/3ysusxonuMexoigA+A3b/fYH7sEqiwyg==", - "dependencies": { - "@floating-ui/core": "^0.7.2" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", - "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@roxi/routify": { - "version": "2.18.11", - "resolved": "https://registry.npmjs.org/@roxi/routify/-/routify-2.18.11.tgz", - "integrity": "sha512-7G1pPSYaEXZ+NoDbIvZRblI/tFDNrbPKs0K4+KApOn1Rb3YGzAu5o2DU1v2BTG4F+0Ro0CS8FmSfvoDiYMimUQ==", - "dev": true, - "dependencies": { - "@roxi/ssr": "^0.2.1", - "@types/node": "^12.20.52", - "chalk": "^4.1.2", - "cheap-watch": "^1.0.4", - "commander": "^7.2.0", - "configent": "^2.2.0", - "esm": "^3.2.25", - "fs-extra": "^9.1.0", - "log-symbols": "^3.0.0", - "picomatch": "^2.3.1", - "rollup-pluginutils": "^2.8.2" - }, - "bin": { - "routify": "plugins/cli.js" - } - }, - "node_modules/@roxi/routify/node_modules/@types/node": { - "version": "12.20.55", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", - "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", - "dev": true - }, - "node_modules/@roxi/ssr": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@roxi/ssr/-/ssr-0.2.1.tgz", - "integrity": "sha512-C86xWJOmtCGZr/U4MURqePM0oDKFkTlLeEyT07R+7jSKvREKZ2manJAeAebYudJLYEGITEPGqObhRan32bUUbg==", - "dev": true, - "dependencies": { - "bufferutil": "^4.0.1", - "jsdom": "^16.0.1", - "node-fetch": "^2.6.0", - "utf-8-validate": "^5.0.2" - } - }, - "node_modules/@stitches/core": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@stitches/core/-/core-1.2.8.tgz", - "integrity": "sha512-Gfkvwk9o9kE9r9XNBmJRfV8zONvXThnm1tcuojL04Uy5uRyqg93DC83lDebl0rocZCfKSjUv+fWYtMQmEDJldg==" - }, - "node_modules/@sveltejs/vite-plugin-svelte": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-2.0.4.tgz", - "integrity": "sha512-pjqhW00KwK2uzDGEr+yJBwut+D+4XfJO/+bHHdHzPRXn9+1Jeq5JcFHyrUiYaXgHtyhX0RsllCTm4ssAx4ZY7Q==", - "dev": true, - "dependencies": { - "debug": "^4.3.4", - "deepmerge": "^4.3.1", - "kleur": "^4.1.5", - "magic-string": "^0.30.0", - "svelte-hmr": "^0.15.1", - "vitefu": "^0.2.4" - }, - "engines": { - "node": "^14.18.0 || >= 16" - }, - "peerDependencies": { - "svelte": "^3.54.0", - "vite": "^4.0.0" - } - }, - "node_modules/@svelteuidev/composables": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/@svelteuidev/composables/-/composables-0.11.1.tgz", - "integrity": "sha512-TTRGTDlrJD22KT/X8L2he5hu3rDorzzB591sgzDjtCi35vKF6Z/ijuc/ngNCFHA+2WxcDGBGPs7YewEgv2yEKg==" - }, - "node_modules/@svelteuidev/core": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/@svelteuidev/core/-/core-0.11.1.tgz", - "integrity": "sha512-Dy16B6OaoSgMPyWL+WvrJwFB529N6Gmr4S4qdUWmE3LrJwhm9rNtwoEQn167dhOlmTQhfgJDot+DuIRRwtGXrw==", - "dependencies": { - "@floating-ui/dom": "0.5.2", - "@stitches/core": "1.2.8" - }, - "peerDependencies": { - "@svelteuidev/composables": "0.11.1", - "svelte": ">=3.55.0" - } - }, - "node_modules/@svelteuidev/motion": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/@svelteuidev/motion/-/motion-0.11.1.tgz", - "integrity": "sha512-XyN/s43w9Y8JPmogy2iDbdzVsaawQYgM9amBbywGaKeSkcbeJ1Wwdh6LpeLJ2/oXYJ0iymQNSM+VxK5ICA9lyg==", - "peerDependencies": { - "svelte": ">=3.55.0" - } - }, - "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==", - "engines": { - "node": ">= 14.6.0", - "npm": ">= 6.6.0", - "yarn": ">= 1.19.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/tauri" - } - }, - "node_modules/@tauri-apps/cli": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli/-/cli-1.2.3.tgz", - "integrity": "sha512-erxtXuPhMEGJPBtnhPILD4AjuT81GZsraqpFvXAmEJZ2p8P6t7MVBifCL8LznRknznM3jn90D3M8RNBP3wcXTw==", - "dev": true, - "bin": { - "tauri": "tauri.js" - }, - "engines": { - "node": ">= 10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/tauri" - }, - "optionalDependencies": { - "@tauri-apps/cli-darwin-arm64": "1.2.3", - "@tauri-apps/cli-darwin-x64": "1.2.3", - "@tauri-apps/cli-linux-arm-gnueabihf": "1.2.3", - "@tauri-apps/cli-linux-arm64-gnu": "1.2.3", - "@tauri-apps/cli-linux-arm64-musl": "1.2.3", - "@tauri-apps/cli-linux-x64-gnu": "1.2.3", - "@tauri-apps/cli-linux-x64-musl": "1.2.3", - "@tauri-apps/cli-win32-ia32-msvc": "1.2.3", - "@tauri-apps/cli-win32-x64-msvc": "1.2.3" - } - }, - "node_modules/@tauri-apps/cli-darwin-arm64": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-darwin-arm64/-/cli-darwin-arm64-1.2.3.tgz", - "integrity": "sha512-phJN3fN8FtZZwqXg08bcxfq1+X1JSDglLvRxOxB7VWPq+O5SuB8uLyssjJsu+PIhyZZnIhTGdjhzLSFhSXfLsw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tauri-apps/cli-darwin-x64": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-darwin-x64/-/cli-darwin-x64-1.2.3.tgz", - "integrity": "sha512-jFZ/y6z8z6v4yliIbXKBXA7BJgtZVMsITmEXSuD6s5+eCOpDhQxbRkr6CA+FFfr+/r96rWSDSgDenDQuSvPAKw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tauri-apps/cli-linux-arm-gnueabihf": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm-gnueabihf/-/cli-linux-arm-gnueabihf-1.2.3.tgz", - "integrity": "sha512-C7h5vqAwXzY0kRGSU00Fj8PudiDWFCiQqqUNI1N+fhCILrzWZB9TPBwdx33ZfXKt/U4+emdIoo/N34v3TiAOmQ==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tauri-apps/cli-linux-arm64-gnu": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm64-gnu/-/cli-linux-arm64-gnu-1.2.3.tgz", - "integrity": "sha512-buf1c8sdkuUzVDkGPQpyUdAIIdn5r0UgXU6+H5fGPq/Xzt5K69JzXaeo6fHsZEZghbV0hOK+taKV4J0m30UUMQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tauri-apps/cli-linux-arm64-musl": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm64-musl/-/cli-linux-arm64-musl-1.2.3.tgz", - "integrity": "sha512-x88wPS9W5xAyk392vc4uNHcKBBvCp0wf4H9JFMF9OBwB7vfd59LbQCFcPSu8f0BI7bPrOsyHqspWHuFL8ojQEA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tauri-apps/cli-linux-x64-gnu": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-x64-gnu/-/cli-linux-x64-gnu-1.2.3.tgz", - "integrity": "sha512-ZMz1jxEVe0B4/7NJnlPHmwmSIuwiD6ViXKs8F+OWWz2Y4jn5TGxWKFg7DLx5OwQTRvEIZxxT7lXHi5CuTNAxKg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tauri-apps/cli-linux-x64-musl": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-x64-musl/-/cli-linux-x64-musl-1.2.3.tgz", - "integrity": "sha512-B/az59EjJhdbZDzawEVox0LQu2ZHCZlk8rJf85AMIktIUoAZPFbwyiUv7/zjzA/sY6Nb58OSJgaPL2/IBy7E0A==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tauri-apps/cli-win32-ia32-msvc": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-ia32-msvc/-/cli-win32-ia32-msvc-1.2.3.tgz", - "integrity": "sha512-ypdO1OdC5ugNJAKO2m3sb1nsd+0TSvMS9Tr5qN/ZSMvtSduaNwrcZ3D7G/iOIanrqu/Nl8t3LYlgPZGBKlw7Ng==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tauri-apps/cli-win32-x64-msvc": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-x64-msvc/-/cli-win32-x64-msvc-1.2.3.tgz", - "integrity": "sha512-CsbHQ+XhnV/2csOBBDVfH16cdK00gNyNYUW68isedmqcn8j+s0e9cQ1xXIqi+Hue3awp8g3ImYN5KPepf3UExw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@tsconfig/svelte": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@tsconfig/svelte/-/svelte-3.0.0.tgz", - "integrity": "sha512-pYrtLtOwku/7r1i9AMONsJMVYAtk3hzOfiGNekhtq5tYBGA7unMve8RvUclKLMT3PrihvJqUmzsRGh0RP84hKg==", - "dev": true - }, - "node_modules/@types/node": { - "version": "18.15.13", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz", - "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==", - "dev": true - }, - "node_modules/@types/pug": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/pug/-/pug-2.0.6.tgz", - "integrity": "sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==", - "dev": true - }, - "node_modules/abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "dev": true - }, - "node_modules/acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-globals": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", - "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", - "dev": true, - "dependencies": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" - } - }, - "node_modules/acorn-globals/node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true - }, - "node_modules/at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true - }, - "node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/bufferutil": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.7.tgz", - "integrity": "sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "node-gyp-build": "^4.3.0" - }, - "engines": { - "node": ">=6.14.2" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/cheap-watch": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cheap-watch/-/cheap-watch-1.0.4.tgz", - "integrity": "sha512-QR/9FrtRL5fjfUJBhAKCdi0lSRQ3rVRRum3GF9wDKp2TJbEIMGhUEr2yU8lORzm9Isdjx7/k9S0DFDx+z5VGtw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/configent": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/configent/-/configent-2.2.0.tgz", - "integrity": "sha512-yIN6zfOWk2nycNJ2JFNiWEai0oiqAhISIht8+pbEBP8bdcpwoQ74AhCZPbUv9aRVJwo7wh1MbCBDUV44UJa7Kw==", - "dev": true, - "dependencies": { - "dotenv": "^8.2.0" - } - }, - "node_modules/cssom": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", - "dev": true - }, - "node_modules/cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "dev": true, - "dependencies": { - "cssom": "~0.3.6" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - }, - "node_modules/data-urls": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", - "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", - "dev": true, - "dependencies": { - "abab": "^2.0.3", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decimal.js": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", - "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", - "dev": true - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/detect-indent": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", - "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/domexception": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", - "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", - "dev": true, - "dependencies": { - "webidl-conversions": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/domexception/node_modules/webidl-conversions": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", - "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/dotenv": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", - "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/es6-promise": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", - "integrity": "sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==", - "dev": true - }, - "node_modules/esbuild": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.17.tgz", - "integrity": "sha512-/jUywtAymR8jR4qsa2RujlAF7Krpt5VWi72Q2yuLD4e/hvtNcFQ0I1j8m/bxq238pf3/0KO5yuXNpuLx8BE1KA==", - "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/android-arm": "0.17.17", - "@esbuild/android-arm64": "0.17.17", - "@esbuild/android-x64": "0.17.17", - "@esbuild/darwin-arm64": "0.17.17", - "@esbuild/darwin-x64": "0.17.17", - "@esbuild/freebsd-arm64": "0.17.17", - "@esbuild/freebsd-x64": "0.17.17", - "@esbuild/linux-arm": "0.17.17", - "@esbuild/linux-arm64": "0.17.17", - "@esbuild/linux-ia32": "0.17.17", - "@esbuild/linux-loong64": "0.17.17", - "@esbuild/linux-mips64el": "0.17.17", - "@esbuild/linux-ppc64": "0.17.17", - "@esbuild/linux-riscv64": "0.17.17", - "@esbuild/linux-s390x": "0.17.17", - "@esbuild/linux-x64": "0.17.17", - "@esbuild/netbsd-x64": "0.17.17", - "@esbuild/openbsd-x64": "0.17.17", - "@esbuild/sunos-x64": "0.17.17", - "@esbuild/win32-arm64": "0.17.17", - "@esbuild/win32-ia32": "0.17.17", - "@esbuild/win32-x64": "0.17.17" - } - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/escodegen": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", - "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", - "dev": true, - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/esm": { - "version": "3.2.25", - "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", - "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estree-walker": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", - "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", - "dev": true - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "node_modules/fast-unique-numbers": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/fast-unique-numbers/-/fast-unique-numbers-8.0.0.tgz", - "integrity": "sha512-okNyVf1JPLcyqziVls/CHOXS+tmoF0m4HGWz3kCuBEeEXCc5H1dGwEHC2bUV+TC+cI7oiNQ+gAHfYpcXyh8Djg==", - "dependencies": { - "@babel/runtime": "^7.21.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=16.1.0" - } - }, - "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/globrex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", - "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", - "dev": true - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/howler": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/howler/-/howler-2.2.3.tgz", - "integrity": "sha512-QM0FFkw0LRX1PR8pNzJVAY25JhIWvbKMBFM4gqk+QdV+kPXOhleWGCB6AiAF/goGjIHK2e/nIElplvjQwhr0jg==" - }, - "node_modules/html-encoding-sniffer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", - "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", - "dev": true, - "dependencies": { - "whatwg-encoding": "^1.0.5" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/immutable": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz", - "integrity": "sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==", - "dev": true - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true - }, - "node_modules/jsdom": { - "version": "16.7.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", - "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", - "dev": true, - "dependencies": { - "abab": "^2.0.5", - "acorn": "^8.2.4", - "acorn-globals": "^6.0.0", - "cssom": "^0.4.4", - "cssstyle": "^2.3.0", - "data-urls": "^2.0.0", - "decimal.js": "^10.2.1", - "domexception": "^2.0.1", - "escodegen": "^2.0.0", - "form-data": "^3.0.0", - "html-encoding-sniffer": "^2.0.1", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "saxes": "^5.0.1", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^2.0.0", - "webidl-conversions": "^6.1.0", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.5.0", - "ws": "^7.4.6", - "xml-name-validator": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/kleur": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", - "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/log-symbols": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", - "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/log-symbols/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/log-symbols/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/log-symbols/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/log-symbols/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/log-symbols/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/log-symbols/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/magic-string": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz", - "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==", - "dev": true, - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.13" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/mri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", - "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/node-fetch": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", - "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", - "dev": true, - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-fetch/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true - }, - "node_modules/node-fetch/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true - }, - "node_modules/node-fetch/node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/node-gyp-build": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", - "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==", - "dev": true, - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nwsapi": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.4.tgz", - "integrity": "sha512-NHj4rzRo0tQdijE9ZqAx6kYDcoRwYwSYzCA8MY3JzfxlrvEU0jhnhJT9BhqhJs7I/dKcrDm6TyulaRqZPIhN5g==", - "dev": true - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/postcss": { - "version": "8.4.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.23.tgz", - "integrity": "sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "dev": true - }, - "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/radix-icons-svelte": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/radix-icons-svelte/-/radix-icons-svelte-1.2.1.tgz", - "integrity": "sha512-svmiMd0ocpdTm9cvAz0klcZpnh639lVctj6psQiawd4pYalVzOG4cX+JizAgRckyTAsRVdzObP7D2EBrSfdghA==" - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" - }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/rollup": { - "version": "3.20.7", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.20.7.tgz", - "integrity": "sha512-P7E2zezKSLhWnTz46XxjSmInrbOCiul1yf+kJccMxT56vxjHwCbDfoLbiqFgu+WQoo9ij2PkraYaBstgB2prBA==", - "dev": true, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=14.18.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/rollup-pluginutils": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", - "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", - "dev": true, - "dependencies": { - "estree-walker": "^0.6.1" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/sade": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", - "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", - "dev": true, - "dependencies": { - "mri": "^1.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "node_modules/sander": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/sander/-/sander-0.5.1.tgz", - "integrity": "sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==", - "dev": true, - "dependencies": { - "es6-promise": "^3.1.2", - "graceful-fs": "^4.1.3", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.2" - } - }, - "node_modules/sass": { - "version": "1.62.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.62.0.tgz", - "integrity": "sha512-Q4USplo4pLYgCi+XlipZCWUQz5pkg/ruSSgJ0WRDSb/+3z9tXUOkQ7QPYn4XrhZKYAK4HlpaQecRwKLJX6+DBg==", - "dev": true, - "dependencies": { - "chokidar": ">=3.0.0 <4.0.0", - "immutable": "^4.0.0", - "source-map-js": ">=0.6.2 <2.0.0" - }, - "bin": { - "sass": "sass.js" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", - "dev": true, - "dependencies": { - "xmlchars": "^2.2.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/sorcery": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.11.0.tgz", - "integrity": "sha512-J69LQ22xrQB1cIFJhPfgtLuI6BpWRiWu1Y3vSsIwK/eAScqJxd/+CJlUuHQRdX2C9NGFamq+KqNywGgaThwfHw==", - "dev": true, - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.14", - "buffer-crc32": "^0.2.5", - "minimist": "^1.2.0", - "sander": "^0.5.0" - }, - "bin": { - "sorcery": "bin/sorcery" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "dev": true, - "dependencies": { - "min-indent": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/svelte": { - "version": "3.58.0", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.58.0.tgz", - "integrity": "sha512-brIBNNB76mXFmU/Kerm4wFnkskBbluBDCjx/8TcpYRb298Yh2dztS2kQ6bhtjMcvUhd5ynClfwpz5h2gnzdQ1A==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/svelte-check": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-3.2.0.tgz", - "integrity": "sha512-6ZnscN8dHEN5Eq5LgIzjj07W9nc9myyBH+diXsUAuiY/3rt0l65/LCIQYlIuoFEjp2F1NhXqZiJwV9omPj9tMw==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.17", - "chokidar": "^3.4.1", - "fast-glob": "^3.2.7", - "import-fresh": "^3.2.1", - "picocolors": "^1.0.0", - "sade": "^1.7.4", - "svelte-preprocess": "^5.0.3", - "typescript": "^5.0.3" - }, - "bin": { - "svelte-check": "bin/svelte-check" - }, - "peerDependencies": { - "svelte": "^3.55.0" - } - }, - "node_modules/svelte-check/node_modules/typescript": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", - "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=12.20" - } - }, - "node_modules/svelte-hmr": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.1.tgz", - "integrity": "sha512-BiKB4RZ8YSwRKCNVdNxK/GfY+r4Kjgp9jCLEy0DuqAKfmQtpL38cQK3afdpjw4sqSs4PLi3jIPJIFp259NkZtA==", - "dev": true, - "engines": { - "node": "^12.20 || ^14.13.1 || >= 16" - }, - "peerDependencies": { - "svelte": ">=3.19.0" - } - }, - "node_modules/svelte-preprocess": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-5.0.3.tgz", - "integrity": "sha512-GrHF1rusdJVbOZOwgPWtpqmaexkydznKzy5qIC2FabgpFyKN57bjMUUUqPRfbBXK5igiEWn1uO/DXsa2vJ5VHA==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "@types/pug": "^2.0.6", - "detect-indent": "^6.1.0", - "magic-string": "^0.27.0", - "sorcery": "^0.11.0", - "strip-indent": "^3.0.0" - }, - "engines": { - "node": ">= 14.10.0" - }, - "peerDependencies": { - "@babel/core": "^7.10.2", - "coffeescript": "^2.5.1", - "less": "^3.11.3 || ^4.0.0", - "postcss": "^7 || ^8", - "postcss-load-config": "^2.1.0 || ^3.0.0 || ^4.0.0", - "pug": "^3.0.0", - "sass": "^1.26.8", - "stylus": "^0.55.0", - "sugarss": "^2.0.0 || ^3.0.0 || ^4.0.0", - "svelte": "^3.23.0", - "typescript": ">=3.9.5 || ^4.0.0 || ^5.0.0" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "coffeescript": { - "optional": true - }, - "less": { - "optional": true - }, - "postcss": { - "optional": true - }, - "postcss-load-config": { - "optional": true - }, - "pug": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "typescript": { - "optional": true - } - } - }, - "node_modules/svelte-preprocess/node_modules/magic-string": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", - "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", - "dev": true, - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.13" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/tough-cookie": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", - "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", - "dev": true, - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tough-cookie/node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", - "dev": true, - "dependencies": { - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/tsconfck": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-2.1.1.tgz", - "integrity": "sha512-ZPCkJBKASZBmBUNqGHmRhdhM8pJYDdOXp4nRgj/O0JwUwsMq50lCDRQP/M5GBNAA0elPrq4gAeu4dkaVCuKWww==", - "dev": true, - "bin": { - "tsconfck": "bin/tsconfck.js" - }, - "engines": { - "node": "^14.13.1 || ^16 || >=18" - }, - "peerDependencies": { - "typescript": "^4.3.5 || ^5.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" - }, - "node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dev": true, - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "node_modules/utf-8-validate": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", - "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "node-gyp-build": "^4.3.0" - }, - "engines": { - "node": ">=6.14.2" - } - }, - "node_modules/vite": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.3.1.tgz", - "integrity": "sha512-EPmfPLAI79Z/RofuMvkIS0Yr091T2ReUoXQqc5ppBX/sjFRhHKiPPF/R46cTdoci/XgeQpB23diiJxq5w30vdg==", - "dev": true, - "dependencies": { - "esbuild": "^0.17.5", - "postcss": "^8.4.21", - "rollup": "^3.20.2" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - }, - "peerDependencies": { - "@types/node": ">= 14", - "less": "*", - "sass": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } - } - }, - "node_modules/vite-tsconfig-paths": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/vite-tsconfig-paths/-/vite-tsconfig-paths-4.2.0.tgz", - "integrity": "sha512-jGpus0eUy5qbbMVGiTxCL1iB9ZGN6Bd37VGLJU39kTDD6ZfULTTb1bcc5IeTWqWJKiWV5YihCaibeASPiGi8kw==", - "dev": true, - "dependencies": { - "debug": "^4.1.1", - "globrex": "^0.1.2", - "tsconfck": "^2.1.0" - }, - "peerDependencies": { - "vite": "*" - }, - "peerDependenciesMeta": { - "vite": { - "optional": true - } - } - }, - "node_modules/vitefu": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.4.tgz", - "integrity": "sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==", - "dev": true, - "peerDependencies": { - "vite": "^3.0.0 || ^4.0.0" - }, - "peerDependenciesMeta": { - "vite": { - "optional": true - } - } - }, - "node_modules/w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", - "dev": true, - "dependencies": { - "browser-process-hrtime": "^1.0.0" - } - }, - "node_modules/w3c-xmlserializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", - "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", - "dev": true, - "dependencies": { - "xml-name-validator": "^3.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "dev": true, - "engines": { - "node": ">=10.4" - } - }, - "node_modules/whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "dev": true, - "dependencies": { - "iconv-lite": "0.4.24" - } - }, - "node_modules/whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true - }, - "node_modules/whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", - "dev": true, - "dependencies": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/worker-timers": { - "version": "7.0.64", - "resolved": "https://registry.npmjs.org/worker-timers/-/worker-timers-7.0.64.tgz", - "integrity": "sha512-F7YRueu9Rq0TfFcgg7vJ3Yzh1PngQifkQP82x4gvU3B/moK2OHk6Crv3vQATPMu2Ux1qGaSCSTg3Z9PbG3sKjA==", - "dependencies": { - "@babel/runtime": "^7.21.0", - "tslib": "^2.5.0", - "worker-timers-broker": "^6.0.84", - "worker-timers-worker": "^7.0.49" - } - }, - "node_modules/worker-timers-broker": { - "version": "6.0.84", - "resolved": "https://registry.npmjs.org/worker-timers-broker/-/worker-timers-broker-6.0.84.tgz", - "integrity": "sha512-ZJY9zGJ8dBSHzfc27cEeRz65o7xc+IVCelz/fzuMBm6Hflzb0Cy9MfqI5WpmkNwZjuwCMt/4SGnFqe5URRK/yg==", - "dependencies": { - "@babel/runtime": "^7.21.0", - "fast-unique-numbers": "^8.0.0", - "tslib": "^2.5.0", - "worker-timers-worker": "^7.0.49" - } - }, - "node_modules/worker-timers-worker": { - "version": "7.0.49", - "resolved": "https://registry.npmjs.org/worker-timers-worker/-/worker-timers-worker-7.0.49.tgz", - "integrity": "sha512-pKx9/HYUu83z2CbbL7/HcYxgT+5Qtrty5VZcOU4FmVEqp9Y8eHuy3F3KHrxwOd/1kR02/ftSBWPGZUkls659vQ==", - "dependencies": { - "@babel/runtime": "^7.21.0", - "tslib": "^2.5.0" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "dev": true, - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true - }, - "node_modules/xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true - } - } -} diff --git a/package.json b/package.json deleted file mode 100644 index cc3adcf..0000000 --- a/package.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "name": "jarvis-app", - "private": true, - "version": "0.0.2", - "type": "module", - "scripts": { - "dev": "routify -c dev:vite", - "dev:routify": "routify", - "dev:vite": "vite", - "build": "svelte-check && routify -b && vite build", - "preview": "vite preview", - "check": "svelte-check --tsconfig ./tsconfig.json", - "tauri": "tauri" - }, - "dependencies": { - "@svelteuidev/composables": "^0.11.1", - "@svelteuidev/core": "^0.11.1", - "@svelteuidev/motion": "^0.11.1", - "@tauri-apps/api": "^1.2.0", - "howler": "^2.2.3", - "radix-icons-svelte": "^1.2.1", - "worker-timers": "^7.0.64" - }, - "devDependencies": { - "@roxi/routify": "^2.18.11", - "@sveltejs/vite-plugin-svelte": "^2.0.0", - "@tauri-apps/cli": "^1.2.2", - "@tsconfig/svelte": "^3.0.0", - "@types/node": "^18.7.10", - "sass": "^1.62.0", - "svelte": "^3.54.0", - "svelte-check": "^3.0.0", - "svelte-preprocess": "^5.0.0", - "tslib": "^2.4.1", - "typescript": "^4.9.5", - "vite": "^4.2.1", - "vite-tsconfig-paths": "^4.2.0" - } -} diff --git a/public/assets/media/images/decor.png b/public/assets/media/images/decor.png deleted file mode 100644 index a292813..0000000 Binary files a/public/assets/media/images/decor.png and /dev/null differ diff --git a/public/media/header-logo.png b/public/media/header-logo.png deleted file mode 100644 index ddc6d4e..0000000 Binary files a/public/media/header-logo.png and /dev/null differ diff --git a/public/media/icons/github-logo.png b/public/media/icons/github-logo.png deleted file mode 100644 index 2318c8f..0000000 Binary files a/public/media/icons/github-logo.png and /dev/null differ diff --git a/public/media/icons/howdy-logo.png b/public/media/icons/howdy-logo.png deleted file mode 100644 index b71474b..0000000 Binary files a/public/media/icons/howdy-logo.png and /dev/null differ diff --git a/public/media/images/bg/bg1.gif b/public/media/images/bg/bg1.gif deleted file mode 100644 index a782614..0000000 Binary files a/public/media/images/bg/bg1.gif and /dev/null differ diff --git a/public/media/images/bg/bg10.gif b/public/media/images/bg/bg10.gif deleted file mode 100644 index d8bf16b..0000000 Binary files a/public/media/images/bg/bg10.gif and /dev/null differ diff --git a/public/media/images/bg/bg11.gif b/public/media/images/bg/bg11.gif deleted file mode 100644 index 004e171..0000000 Binary files a/public/media/images/bg/bg11.gif and /dev/null differ diff --git a/public/media/images/bg/bg12.gif b/public/media/images/bg/bg12.gif deleted file mode 100644 index 8ff81c7..0000000 Binary files a/public/media/images/bg/bg12.gif and /dev/null differ diff --git a/public/media/images/bg/bg13.gif b/public/media/images/bg/bg13.gif deleted file mode 100644 index d119c31..0000000 Binary files a/public/media/images/bg/bg13.gif and /dev/null differ diff --git a/public/media/images/bg/bg18.gif b/public/media/images/bg/bg18.gif deleted file mode 100644 index db268ac..0000000 Binary files a/public/media/images/bg/bg18.gif and /dev/null differ diff --git a/public/media/images/bg/bg19.gif b/public/media/images/bg/bg19.gif deleted file mode 100644 index 3fb10af..0000000 Binary files a/public/media/images/bg/bg19.gif and /dev/null differ diff --git a/public/media/images/bg/bg2.gif b/public/media/images/bg/bg2.gif deleted file mode 100644 index d330d15..0000000 Binary files a/public/media/images/bg/bg2.gif and /dev/null differ diff --git a/public/media/images/bg/bg20.gif b/public/media/images/bg/bg20.gif deleted file mode 100644 index 4e726ad..0000000 Binary files a/public/media/images/bg/bg20.gif and /dev/null differ diff --git a/public/media/images/bg/bg21.gif b/public/media/images/bg/bg21.gif deleted file mode 100644 index 8a870ab..0000000 Binary files a/public/media/images/bg/bg21.gif and /dev/null differ diff --git a/public/media/images/bg/bg22.gif b/public/media/images/bg/bg22.gif deleted file mode 100644 index a867f1c..0000000 Binary files a/public/media/images/bg/bg22.gif and /dev/null differ diff --git a/public/media/images/bg/bg24.gif b/public/media/images/bg/bg24.gif deleted file mode 100644 index 2bc40b1..0000000 Binary files a/public/media/images/bg/bg24.gif and /dev/null differ diff --git a/public/media/images/bg/bg25.gif b/public/media/images/bg/bg25.gif deleted file mode 100644 index b482f00..0000000 Binary files a/public/media/images/bg/bg25.gif and /dev/null differ diff --git a/public/media/images/bg/bg26.gif b/public/media/images/bg/bg26.gif deleted file mode 100644 index 4ed97ff..0000000 Binary files a/public/media/images/bg/bg26.gif and /dev/null differ diff --git a/public/media/images/bg/bg3.gif b/public/media/images/bg/bg3.gif deleted file mode 100644 index 1d43a70..0000000 Binary files a/public/media/images/bg/bg3.gif and /dev/null differ diff --git a/public/media/images/bg/bg4.gif b/public/media/images/bg/bg4.gif deleted file mode 100644 index 9fd0da0..0000000 Binary files a/public/media/images/bg/bg4.gif and /dev/null differ diff --git a/public/media/images/bg/bg5.gif b/public/media/images/bg/bg5.gif deleted file mode 100644 index 70d2338..0000000 Binary files a/public/media/images/bg/bg5.gif and /dev/null differ diff --git a/public/media/images/bg/bg6.gif b/public/media/images/bg/bg6.gif deleted file mode 100644 index 67170fc..0000000 Binary files a/public/media/images/bg/bg6.gif and /dev/null differ diff --git a/public/media/images/bg/bg7.gif b/public/media/images/bg/bg7.gif deleted file mode 100644 index 9f6ad78..0000000 Binary files a/public/media/images/bg/bg7.gif and /dev/null differ diff --git a/public/media/images/bg/bg8.gif b/public/media/images/bg/bg8.gif deleted file mode 100644 index 1b0ee93..0000000 Binary files a/public/media/images/bg/bg8.gif and /dev/null differ diff --git a/public/media/images/bg/bg9.gif b/public/media/images/bg/bg9.gif deleted file mode 100644 index 76e7c92..0000000 Binary files a/public/media/images/bg/bg9.gif and /dev/null differ diff --git a/public/media/images/cote1.gif b/public/media/images/cote1.gif deleted file mode 100644 index 22c8d78..0000000 Binary files a/public/media/images/cote1.gif and /dev/null differ diff --git a/public/media/images/decor.png b/public/media/images/decor.png deleted file mode 100644 index a292813..0000000 Binary files a/public/media/images/decor.png and /dev/null differ diff --git a/public/media/images/man-1.png b/public/media/images/man-1.png deleted file mode 100644 index 57a206f..0000000 Binary files a/public/media/images/man-1.png and /dev/null differ diff --git a/public/media/images/nero.png b/public/media/images/nero.png deleted file mode 100644 index d6ef125..0000000 Binary files a/public/media/images/nero.png and /dev/null differ diff --git a/public/media/images/preloaders/loader-hd.gif b/public/media/images/preloaders/loader-hd.gif deleted file mode 100644 index 70a8a5d..0000000 Binary files a/public/media/images/preloaders/loader-hd.gif and /dev/null differ diff --git a/public/media/images/preloaders/loader.gif b/public/media/images/preloaders/loader.gif deleted file mode 100644 index 267b1c3..0000000 Binary files a/public/media/images/preloaders/loader.gif and /dev/null differ diff --git a/public/media/images/preloaders/spinner.gif b/public/media/images/preloaders/spinner.gif deleted file mode 100644 index 73af712..0000000 Binary files a/public/media/images/preloaders/spinner.gif and /dev/null differ diff --git a/public/media/images/tenor.gif b/public/media/images/tenor.gif deleted file mode 100644 index d8d3bdb..0000000 Binary files a/public/media/images/tenor.gif and /dev/null differ diff --git a/public/media/images/vk.png b/public/media/images/vk.png deleted file mode 100644 index 5a589ee..0000000 Binary files a/public/media/images/vk.png and /dev/null differ diff --git a/public/media/images/youtube.png b/public/media/images/youtube.png deleted file mode 100644 index 96bff12..0000000 Binary files a/public/media/images/youtube.png and /dev/null differ diff --git a/src-tauri/.taurignore b/src-tauri/.taurignore deleted file mode 100644 index 3997bea..0000000 --- a/src-tauri/.taurignore +++ /dev/null @@ -1 +0,0 @@ -*.db \ No newline at end of file diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml deleted file mode 100644 index d3dfc63..0000000 --- a/src-tauri/Cargo.toml +++ /dev/null @@ -1,46 +0,0 @@ -[package] -name = "jarvis-app" -version = "0.0.2" -description = "Jarvis Voice Assistant" -authors = ["Abraham Tugalov"] -license = "GPL-3.0-only" -repository = "https://github.com/Priler/jarvis" -edition = "2021" - -[lib] -name = "const_concat" -path = "src/lib.rs" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[build-dependencies] -tauri-build = { version = "1.2", features = [] } - -[dependencies] -tauri = { version = "1.2", features = ["dialog-message", "path-all", "shell-open"] } -serde = { version = "1.0", features = ["derive"] } -serde_json = "1.0" -lazy_static = "1.4.0" -pickledb = "0.5.1" -peak_alloc = "0.2.0" -systemstat = "0.2.3" -hound = "3.5.0" -pv_recorder = "1.1.1" -pv_porcupine = "2.2.0" -serde_yaml = "0.9.21" -seqdiff = "0.3.0" -vosk = "0.2.0" -rand = "0.8.5" -rodio = "0.17.1" -rustpotter = "2.0.0" -simple-logging = "2.0.2" -log = "0.4.17" -once_cell = "1.17.1" -arc-swap = "1.6.0" -atomic_enum = "0.2.0" -portaudio = "0.7.0" - -[features] -# this feature is used for production builds or when `devPath` points to the filesystem -# DO NOT REMOVE!! -custom-protocol = ["tauri/custom-protocol"] diff --git a/src-tauri/app-icon.png b/src-tauri/app-icon.png deleted file mode 100644 index 650df94..0000000 Binary files a/src-tauri/app-icon.png and /dev/null differ diff --git a/src-tauri/build.rs b/src-tauri/build.rs deleted file mode 100644 index 3623023..0000000 --- a/src-tauri/build.rs +++ /dev/null @@ -1,7 +0,0 @@ -fn main() { - // link to Vosk lib - println!("cargo:rustc-link-lib=libvosk.dll"); - - // Tauri build - tauri_build::build() -} diff --git a/src-tauri/picovoice/lib/windows/amd64/libpv_porcupine.dll b/src-tauri/picovoice/lib/windows/amd64/libpv_porcupine.dll deleted file mode 100644 index 4d1e0ff..0000000 Binary files a/src-tauri/picovoice/lib/windows/amd64/libpv_porcupine.dll and /dev/null differ diff --git a/src-tauri/src/config.rs b/src-tauri/src/config.rs deleted file mode 100644 index 9c48b77..0000000 --- a/src-tauri/src/config.rs +++ /dev/null @@ -1,58 +0,0 @@ -mod structs; -use structs::WakeWordEngine; -use structs::SpeechToTextEngine; - - -/* - Defaults. - */ -pub const DEFAULT_WAKE_WORD_ENGINE: WakeWordEngine = WakeWordEngine::Rustpotter; -pub const DEFAULT_SPEECH_TO_TEXT_ENGINE: SpeechToTextEngine = SpeechToTextEngine::Vosk; - - - -pub const DB_FILE_NAME: &str = "app.db"; -pub const LOG_FILE_NAME: &str = "log.txt"; -pub const APP_VERSION: Option<&str> = option_env!("CARGO_PKG_VERSION"); -pub const AUTHOR_NAME: Option<&str> = option_env!("CARGO_PKG_AUTHORS"); -pub const REPOSITORY_LINK: Option<&str> = option_env!("CARGO_PKG_REPOSITORY"); -pub const TG_OFFICIAL_LINK: Option<&str> = Some("https://t.me/howdyho_official"); -pub const FEEDBACK_LINK: Option<&str> = Some("https://t.me/jarvis_feedback_bot"); - -// RUSPOTTER -pub const RUSPOTTER_MIN_SCORE: f32 = 0.62; - -// PICOVOICE -pub const COMMANDS_PATH: &str = "commands/"; -pub const KEYWORDS_PATH: &str = "picovoice/keywords/"; - -// VOSK -// pub const VOSK_MODEL_PATH: &str = const_concat!(PUBLIC_PATH, "/vosk/model_small"); -pub const VOSK_FETCH_PHRASE: &str = "джарвис"; -pub const VOSK_MODEL_PATH: &str = "vosk/model_small"; -pub const VOSK_MIN_RATIO: f64 = 70.0; - -// ETC -pub const CMD_RATIO_THRESHOLD: f64 = 65f64; -pub const CMS_WAIT_DELAY: std::time::Duration = std::time::Duration::from_secs(15); - -pub const ASSISTANT_GREET_PHRASES: [&str; 3] = ["greet1", "greet2", "greet3"]; -pub const ASSISTANT_PHRASES_TBR: [&str; 17] = [ - "джарвис", - "сэр", - "слушаю сэр", - "всегда к услугам", - "произнеси", - "ответь", - "покажи", - "скажи", - "давай", - "да сэр", - "к вашим услугам сэр", - "всегда к вашим услугам сэр", - "запрос выполнен сэр", - "выполнен сэр", - "есть", - "загружаю сэр", - "очень тонкое замечание сэр", -]; diff --git a/src-tauri/src/config/structs.rs b/src-tauri/src/config/structs.rs deleted file mode 100644 index 6073065..0000000 --- a/src-tauri/src/config/structs.rs +++ /dev/null @@ -1,13 +0,0 @@ -pub enum WakeWordEngine { - Rustpotter, - Vosk, - Porcupine -} - -pub enum SpeechToTextEngine { - Vosk -} - -// pub enum TextToSpeechEngine {} - -// pub enum IntentRecognitionEngine {} \ No newline at end of file diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs deleted file mode 100644 index efe62f6..0000000 --- a/src-tauri/src/lib.rs +++ /dev/null @@ -1,71 +0,0 @@ -// Taken from https://github.com/Vurich/const-concat/issues/13 - -#![no_std] - -use core::mem::ManuallyDrop; - -const unsafe fn transmute_prefix(from: From) -> To { - union Transmute { - from: ManuallyDrop, - to: ManuallyDrop, - } - - ManuallyDrop::into_inner( - Transmute { - from: ManuallyDrop::new(from), - } - .to, - ) -} - -/// # Safety -/// -/// `Len1 + Len2 >= Len3` -#[doc(hidden)] -#[allow(non_upper_case_globals)] -pub const unsafe fn concat( - arr1: [u8; Len1], - arr2: [u8; Len2], -) -> [u8; Len3] { - #[repr(C)] - struct Concat(A, B); - transmute_prefix(Concat(arr1, arr2)) -} - -#[macro_export] -macro_rules! const_concat { - () => (""); - ($a:expr) => ($a); - - ($a:expr, $b:expr $(,)?) => {{ - const A: &str = $a; - const B: &str = $b; - const BYTES: [u8; { A.len() + B.len() }] = unsafe { - $crate::concat::< - { A.len() }, - { B.len() }, - { A.len() + B.len() } - >( - *A.as_ptr().cast(), - *B.as_ptr().cast(), - ) - }; - unsafe { ::core::str::from_utf8_unchecked(&BYTES) } - }}; - - ($a:expr, $b:expr, $($rest:expr),+ $(,)?) => {{ - const TAIL: &str = $crate::const_concat!($b, $($rest),+); - $crate::const_concat!($a, TAIL) - }} -} - -#[test] -fn tests() { - const SALUTATION: &str = "Hello"; - const TARGET: &str = "world"; - const GREETING: &str = const_concat!(SALUTATION, ", ", TARGET, "!"); - const GREETING_TRAILING_COMMA: &str = const_concat!(SALUTATION, ", ", TARGET, "!",); - - assert_eq!(GREETING, "Hello, world!"); - assert_eq!(GREETING_TRAILING_COMMA, "Hello, world!"); -} diff --git a/src-tauri/src/recorder/pvrecorder.rs b/src-tauri/src/recorder/pvrecorder.rs deleted file mode 100644 index 183a7d2..0000000 --- a/src-tauri/src/recorder/pvrecorder.rs +++ /dev/null @@ -1,105 +0,0 @@ -use pv_recorder::{Recorder, RecorderBuilder}; -use log::{info, warn, error}; - -use once_cell::sync::OnceCell; -use std::sync::Arc; -use arc_swap::ArcSwap; -use std::sync::atomic::{AtomicBool, AtomicI32, AtomicU32, Ordering}; - -static RECORDER: OnceCell> = OnceCell::new(); -static SELECTED_MICROPHONE_IDX: AtomicI32 = AtomicI32::new(0); -static FRAME_LENGTH: AtomicU32 = AtomicU32::new(0); -static IS_RECORDING: AtomicBool = AtomicBool::new(false); - -pub fn init_microphone(device_index: i32, frame_length: u32) -> bool { - match RECORDER.get().is_none() { - true => { - let pv_recorder = RecorderBuilder::new() - .device_index(device_index) - .frame_length(frame_length as i32) - .init(); - - match pv_recorder { - Ok(pv) => { - // store - RECORDER.set(ArcSwap::from_pointee(pv)); - - // remember current configuration - SELECTED_MICROPHONE_IDX.store(device_index, Ordering::SeqCst); - FRAME_LENGTH.store(frame_length, Ordering::SeqCst); - - // success - true - }, - Err(msg) => { - error!("Failed to initialize pvrecorder.\nError details: {:?}", msg); - - // fail - false - } - } - }, - _ => { - // check if re-initialization required (i.e. selecetd microphoneor frame-length was changed ) - if SELECTED_MICROPHONE_IDX.load(Ordering::SeqCst) != device_index - || - RECORDER.get().unwrap().load().frame_length() != frame_length as usize { - warn!("Selected microphone or frame length was changed, re-initializing ..."); - // initialize again with new device index - if IS_RECORDING.load(Ordering::SeqCst) { - // RECORDER.get().unwrap().load().stop().expect("Failed to start audio recording!"); - stop_recording(); - } - - // remember new configuration - SELECTED_MICROPHONE_IDX.store(device_index, Ordering::SeqCst); - FRAME_LENGTH.store(frame_length, Ordering::SeqCst); - - // store - RECORDER.get().unwrap().store(Arc::new(RecorderBuilder::new() - .device_index(device_index) - .frame_length(frame_length as i32) - .init() - .expect("Failed to initialize pvrecorder"))); - } - - // success - true - } - } -} - -pub fn read_microphone(frame_buffer: &mut [i16]) { - // ensure microphone is initialized - if !RECORDER.get().is_none() { - // read to frame buffer - match RECORDER.get().unwrap().load().read(frame_buffer) { - Err(msg) => { - // @TODO: Fix somehow. PvRecorder always wait for PCM buffer size of 512. - // error!("Failed to read audio frame. {:?}", msg); - // eprintln!("Failed to read audio frame. {:?}", msg); - }, - _ => () - } - } -} - -pub fn start_recording(device_index: i32, frame_length: u32) { - // ensure microphone is initialized - init_microphone(device_index, frame_length); - - // start recording - RECORDER.get().unwrap().load().start().expect("Failed to start audio recording!"); - IS_RECORDING.store(true, Ordering::SeqCst); - info!("START recording from microphone ..."); -} - -pub fn stop_recording() { - // ensure microphone is initialized - if !RECORDER.get().is_none() && IS_RECORDING.load(Ordering::SeqCst) { - // stop recording - RECORDER.get().unwrap().load().stop().expect("Failed to stop audio recording!"); - IS_RECORDING.store(false, Ordering::SeqCst); - info!("STOP recording from microphone ..."); - } -} \ No newline at end of file diff --git a/src-tauri/src/tauri_commands.rs b/src-tauri/src/tauri_commands.rs deleted file mode 100644 index bda0cb7..0000000 --- a/src-tauri/src/tauri_commands.rs +++ /dev/null @@ -1,27 +0,0 @@ -// import DB related commands -mod db; -pub use db::*; - -// import RECORDER commands -mod audio; -pub use audio::*; - -// import PORCUPINE commands -mod listener; -pub use listener::*; - -// import SYS commands -mod sys; -pub use sys::*; - -// import VOICE commands -mod voice; -pub use voice::*; - -// import FS commands -mod fs; -pub use fs::*; - -// import ETC commands -mod etc; -pub use etc::*; diff --git a/src-tauri/src/tauri_commands/audio.rs b/src-tauri/src/tauri_commands/audio.rs deleted file mode 100644 index 8ef6097..0000000 --- a/src-tauri/src/tauri_commands/audio.rs +++ /dev/null @@ -1,33 +0,0 @@ -use pv_recorder::RecorderBuilder; - -#[tauri::command] -pub fn pv_get_audio_devices() -> Vec { - let audio_devices = RecorderBuilder::default().get_audio_devices(); - match audio_devices { - Ok(audio_devices) => audio_devices, - Err(err) => panic!("Failed to get audio devices: {}", err), - } -} - -#[tauri::command] -pub fn pv_get_audio_device_name(idx: i32) -> String { - let audio_devices = RecorderBuilder::default().get_audio_devices(); - let mut first_device: String = String::new(); - match audio_devices { - Ok(audio_devices) => { - for (_idx, device) in audio_devices.iter().enumerate() { - if idx as usize == _idx { - return device.to_string(); - } - - if _idx == 0 { - first_device = device.to_string() - } - } - } - Err(err) => panic!("Failed to get audio devices: {}", err), - }; - - // return first device as default, if none were matched - first_device -} diff --git a/src-tauri/src/tauri_commands/db.rs b/src-tauri/src/tauri_commands/db.rs deleted file mode 100644 index 8283778..0000000 --- a/src-tauri/src/tauri_commands/db.rs +++ /dev/null @@ -1,19 +0,0 @@ -use crate::DB; - -#[tauri::command] -pub fn db_read(key: &str) -> String { - if let Some(value) = DB.lock().unwrap().get::(key) { - return value - } - - String::from("") -} - -#[tauri::command] -pub fn db_write(key: &str, val: &str) -> bool { - if let Ok(_) = DB.lock().unwrap().set(key, &val) { - true - } else { - false - } -} diff --git a/src-tauri/src/tauri_commands/etc.rs b/src-tauri/src/tauri_commands/etc.rs deleted file mode 100644 index f8c4ad0..0000000 --- a/src-tauri/src/tauri_commands/etc.rs +++ /dev/null @@ -1,54 +0,0 @@ -use crate::config; -use crate::APP_LOG_DIR; - -// Learn more about Tauri commands at https://tauri.app/v1/guides/features/command - -#[tauri::command] -pub fn get_app_version() -> String { - if let Some(res) = config::APP_VERSION { - res.to_string() - } else { - String::from("error") - } -} - -#[tauri::command] -pub fn get_author_name() -> String { - if let Some(res) = config::AUTHOR_NAME { - res.to_string() - } else { - String::from("error") - } -} - -#[tauri::command] -pub fn get_repository_link() -> String { - if let Some(res) = config::REPOSITORY_LINK { - res.to_string() - } else { - String::from("error") - } -} - -#[tauri::command] -pub fn get_tg_official_link() -> String { - if let Some(ver) = config::TG_OFFICIAL_LINK { - ver.to_string() - } else { - String::from("error") - } -} - -#[tauri::command] -pub fn get_feedback_link() -> String { - if let Some(res) = config::FEEDBACK_LINK { - res.to_string() - } else { - String::from("error") - } -} - -#[tauri::command] -pub fn get_log_file_path() -> String { - format!("{}", APP_LOG_DIR.lock().unwrap()) -} \ No newline at end of file diff --git a/src-tauri/src/tauri_commands/fs.rs b/src-tauri/src/tauri_commands/fs.rs deleted file mode 100644 index b91e48d..0000000 --- a/src-tauri/src/tauri_commands/fs.rs +++ /dev/null @@ -1,47 +0,0 @@ -use std::process::Command; - -// taken from https://github.com/tauri-apps/tauri/issues/4062#issuecomment-1338048169 -#[tauri::command] -pub fn show_in_folder(path: String) { - #[cfg(target_os = "windows")] - { - Command::new("explorer") - .args(["/select,", &path]) // The comma after select is not a typo - .spawn() - .unwrap(); - } - - #[cfg(target_os = "linux")] - { - if path.contains(",") { - // see https://gitlab.freedesktop.org/dbus/dbus/-/issues/76 - let new_path = match metadata(&path).unwrap().is_dir() { - true => path, - false => { - let mut path2 = PathBuf::from(path); - path2.pop(); - path2.into_os_string().into_string().unwrap() - } - }; - Command::new("xdg-open") - .arg(&new_path) - .spawn() - .unwrap(); - } else { - Command::new("dbus-send") - .args(["--session", "--dest=org.freedesktop.FileManager1", "--type=method_call", - "/org/freedesktop/FileManager1", "org.freedesktop.FileManager1.ShowItems", - format!("array:string:\"file://{path}\"").as_str(), "string:\"\""]) - .spawn() - .unwrap(); - } - } - - #[cfg(target_os = "macos")] - { - Command::new("open") - .args(["-R", &path]) - .spawn() - .unwrap(); - } -} \ No newline at end of file diff --git a/src-tauri/src/tauri_commands/listener.rs b/src-tauri/src/tauri_commands/listener.rs deleted file mode 100644 index 1b979ca..0000000 --- a/src-tauri/src/tauri_commands/listener.rs +++ /dev/null @@ -1,416 +0,0 @@ -use porcupine::{Porcupine, PorcupineBuilder}; -use std::ops::Sub; -use std::sync::atomic::{AtomicBool, Ordering}; -use std::path::Path; -use log::{info, warn, error}; -use rustpotter::{Rustpotter, RustpotterConfig, WavFmt, DetectorConfig, FiltersConfig, ScoreMode, GainNormalizationConfig, BandPassConfig}; -// use dasp::{sample::ToSample, Sample}; - -// use crate::events::Payload; -use tauri::Manager; - -use rand::seq::SliceRandom; -use std::time::SystemTime; -use once_cell::sync::OnceCell; -use std::sync::Mutex; - -use crate::assistant_commands; -use crate::events; - -use crate::config; -use crate::vosk; -use crate::recorder::{self, FRAME_LENGTH}; - -use crate::COMMANDS; -use crate::DB; - -// track listening state -static LISTENING: AtomicBool = AtomicBool::new(false); - -// stop listening with Atomic flag (to make it work between different threads) -static STOP_LISTENING: AtomicBool = AtomicBool::new(false); - -// store tauri app_handle -static TAURI_APP_HANDLE: OnceCell = OnceCell::new(); - -// store porcupine instance -static PORCUPINE: OnceCell = OnceCell::new(); - -// store rustpotter instance -static RUSTPOTTER: OnceCell> = OnceCell::new(); - -#[tauri::command] -pub fn is_listening() -> bool { - LISTENING.load(Ordering::SeqCst) -} - -#[tauri::command] -pub fn stop_listening() { - if is_listening() { - STOP_LISTENING.store(true, Ordering::SeqCst); - stop_recording(); - } - - // wait until listening stops - while is_listening() {} -} - -fn get_wake_word_engine() -> config::WakeWordEngine { - let selected_wake_word_engine; - if let Some(wwengine) = DB.lock().unwrap().get::("selected_wake_word_engine") { - // from db - match wwengine.trim().to_lowercase().as_str() { - "rustpotter" => selected_wake_word_engine = config::WakeWordEngine::Rustpotter, - "vosk" => selected_wake_word_engine = config::WakeWordEngine::Vosk, - "picovoice" => selected_wake_word_engine = config::WakeWordEngine::Porcupine, - _ => selected_wake_word_engine = config::DEFAULT_WAKE_WORD_ENGINE - } - } else { - // default - selected_wake_word_engine = config::DEFAULT_WAKE_WORD_ENGINE; // set default wake_word engine - } - - selected_wake_word_engine -} - -#[tauri::command(async)] -pub fn start_listening(app_handle: tauri::AppHandle) -> Result { - // only one listener thread is allowed - if is_listening() { - return Err("Already listening.".into()); - } - - // keep app handle - if TAURI_APP_HANDLE.get().is_none() { - TAURI_APP_HANDLE.set(app_handle); - } - - // call selected wake-word engine listener command - match get_wake_word_engine() { - config::WakeWordEngine::Rustpotter => { - info!("Starting RUSTPOTTER wake-word engine ..."); - return rustpotter_init(); - }, - config::WakeWordEngine::Vosk => { - info!("Starting VOSK wake-word engine ..."); - return vosk_init(); - }, - config::WakeWordEngine::Porcupine => { - info!("Starting PICOVOICE PORCUPINE wake-word engine ..."); - return picovoice_init(); - } - } -} - -fn keyword_callback(_keyword_index: i32) { - // vars - let mut start: SystemTime = SystemTime::now(); - let mut frame_buffer = vec![0; recorder::FRAME_LENGTH.load(Ordering::SeqCst) as usize]; - - // play greet phrase - events::play( - config::ASSISTANT_GREET_PHRASES - .choose(&mut rand::thread_rng()) - .unwrap(), - TAURI_APP_HANDLE.get().unwrap(), - ); - - // emit assistant greet event - TAURI_APP_HANDLE.get().unwrap() - .emit_all(events::EventTypes::AssistantGreet.get(), ()) - .unwrap(); - - // the loop - while !STOP_LISTENING.load(Ordering::SeqCst) { - recorder::read_microphone(&mut frame_buffer); - - // vosk part (partials included) - if let Some(mut test) = vosk::recognize(&frame_buffer, false) { - if !test.is_empty() { - println!("Recognized: {}", test); - - // some filtration - test = test.to_lowercase(); - for tbr in config::ASSISTANT_PHRASES_TBR { - test = test.replace(tbr, ""); - } - test = test.trim().into(); - - // infer command - if let Some((cmd_path, cmd_config)) = - assistant_commands::fetch_command(&test, &COMMANDS) - { - println!("Recognized (filtered): {}", test); - println!("Command found: {:?}", cmd_path); - println!("Executing ..."); - - let cmd_result = assistant_commands::execute_command( - &cmd_path, - &cmd_config, - TAURI_APP_HANDLE.get().unwrap(), - ); - - match cmd_result { - Ok(chain) => { - println!("Command executed successfully!"); - - if chain { - // continue chaining commands - start = SystemTime::now(); // listen for more commands - } else { - // skip forward if chaining is not required - start = start.checked_sub(core::time::Duration::from_secs(1000)).unwrap(); - } - - continue; - } - Err(error_message) => { - println!("Error executing command: {}", error_message); - } - } - - TAURI_APP_HANDLE.get().unwrap() - .emit_all(events::EventTypes::AssistantWaiting.get(), ()) - .unwrap(); - break; // return to picovoice after command execution (no matter successfull or not) - } - } - } - - match start.elapsed() { - Ok(elapsed) if elapsed > config::CMS_WAIT_DELAY => { - // return to picovoice after N seconds - TAURI_APP_HANDLE.get().unwrap() - .emit_all(events::EventTypes::AssistantWaiting.get(), ()) - .unwrap(); - break; - } - _ => (), - } - } -} - -pub fn data_callback(frame_buffer: &[i16]) { - // println!("DATA CALLBACK {}", frame_buffer.len()); - match get_wake_word_engine() { - config::WakeWordEngine::Rustpotter => { - let mut lock = RUSTPOTTER.get().unwrap().lock(); - let rustpotter = lock.as_mut().unwrap(); - let detection = rustpotter.process_i16(&frame_buffer); - - if let Some(detection) = detection { - if detection.score > config::RUSPOTTER_MIN_SCORE { - info!("Rustpotter detection info:\n{:?}", detection); - keyword_callback(0); - } else { - info!("Rustpotter detection info:\n{:?}", detection); - } - } - }, - config::WakeWordEngine::Vosk => { - // recognize & convert to sequence - let recognized_phrase = vosk::recognize(&frame_buffer, true).unwrap_or("".into()); - - if !recognized_phrase.trim().is_empty() { - info!("Rec: {}", recognized_phrase); - let recognized_phrases = recognized_phrase.split_whitespace(); - for phrase in recognized_phrases { - let recognized_phrase_chars = phrase.trim().to_lowercase().chars().collect::>(); - - // compare - let compare_ratio = seqdiff::ratio(&config::VOSK_FETCH_PHRASE.chars().collect::>(), &recognized_phrase_chars); - info!("OG phrase: {:?}", &config::VOSK_FETCH_PHRASE); - info!("Recognized phrase: {:?}", &recognized_phrase_chars); - info!("Compare ratio: {}", compare_ratio); - - if compare_ratio >= config::VOSK_MIN_RATIO { - info!("Phrase activated."); - keyword_callback(0); - break; - } - } - } - }, - config::WakeWordEngine::Porcupine => { - if let Ok(keyword_index) = PORCUPINE.get().unwrap().process(&frame_buffer) { - if keyword_index >= 0 { - // println!("Yes, sir! {}", keyword_index); - keyword_callback(keyword_index); - } - } - } - } -} - -fn start_recording() -> Result { - // vars - let frame_length: usize; - - // idenfity frame length - match get_wake_word_engine() { - config::WakeWordEngine::Rustpotter => { - // start recording for Rustpotter - // You need a buffer of size `rustpotter.get_samples_per_frame()` when using samples. - // You need a buffer of size `rustpotter.get_bytes_per_frame()` when using bytes. - frame_length = RUSTPOTTER.get().unwrap().lock().unwrap().get_samples_per_frame(); - recorder::FRAME_LENGTH.store(frame_length as u32, Ordering::SeqCst); - }, - config::WakeWordEngine::Vosk => { - // start recording for Vosk - frame_length = 128; - recorder::FRAME_LENGTH.store(frame_length as u32, Ordering::SeqCst); - }, - config::WakeWordEngine::Porcupine => { - // start recording for Porcupine - frame_length = PORCUPINE.get().unwrap().frame_length() as usize; - recorder::FRAME_LENGTH.store(PORCUPINE.get().unwrap().frame_length(), Ordering::SeqCst); - } - } - - // define frame buffer - let mut frame_buffer: Vec = vec![0; frame_length]; - - // init stuff - recorder::init(); // init - recorder::start_recording(); // start - LISTENING.store(true, Ordering::SeqCst); - info!("START listening ..."); - - // greet user - events::play("run", TAURI_APP_HANDLE.get().unwrap()); - - // record - match recorder::RECORDER_TYPE.load(Ordering::SeqCst) { - recorder::RecorderType::PvRecorder => { - while !STOP_LISTENING.load(Ordering::SeqCst) { - recorder::read_microphone(&mut frame_buffer); - data_callback(&frame_buffer); - } - - // stop - stop_recording(); - - Ok(true) - }, - recorder::RecorderType::PortAudio => { - while !STOP_LISTENING.load(Ordering::SeqCst) { - recorder::read_microphone(&mut frame_buffer); - data_callback(&frame_buffer); - } - - // stop - stop_recording(); - - Ok(true) - } - recorder::RecorderType::Cpal => { - todo!() - } - } -} - -fn stop_recording() { - // Stop listening - recorder::stop_recording(); - - LISTENING.store(false, Ordering::SeqCst); - STOP_LISTENING.store(false, Ordering::SeqCst); - info!("STOP listening ..."); -} - -fn rustpotter_init() -> Result { - - // init rustpotter - let rustpotter_config = RustpotterConfig { - fmt: WavFmt::default(), - detector: DetectorConfig { - avg_threshold: 0., - threshold: 0.5, - min_scores: 15, - score_mode: ScoreMode::Average, - comparator_band_size: 5, - comparator_ref: 0.22 - }, - filters: FiltersConfig { - gain_normalizer: GainNormalizationConfig { - enabled: true, - gain_ref: None, - min_gain: 0.7, - max_gain: 1.0, - }, - band_pass: BandPassConfig { - enabled: true, - low_cutoff: 80., - high_cutoff: 400., - } - } - }; - let mut rustpotter = Rustpotter::new(&rustpotter_config).unwrap(); - - // load a wakeword - let rustpotter_wake_word_files: [&str; 5] = [ - "rustpotter/jarvis-default.rpw", - "rustpotter/jarvis-community-1.rpw", - "rustpotter/jarvis-community-2.rpw", - "rustpotter/jarvis-community-3.rpw", - "rustpotter/jarvis-community-4.rpw", - // "rustpotter/jarvis-community-5.rpw", - ]; - - for rpw in rustpotter_wake_word_files { - rustpotter.add_wakeword_from_file(rpw).unwrap(); - } - - // store rustpotter - if RUSTPOTTER.get().is_none() { - RUSTPOTTER.set(Mutex::new(rustpotter)); - } - - // start recording - start_recording() -} - -fn vosk_init() -> Result { - start_recording() -} - -fn picovoice_init() -> Result { - // VARS - let porcupine: Porcupine; - let picovoice_api_key: String; - - // Retrieve API key from DB - if let Some(pkey) = DB.lock().unwrap().get::("api_key__picovoice") { - picovoice_api_key = pkey; - } else { - warn!("Picovoice API key is not set!"); - return Err("Picovoice API key is not set!".into()); - } - - // Create instance of Porcupine with the given API key - match PorcupineBuilder::new_with_keyword_paths(picovoice_api_key, &[Path::new(config::KEYWORDS_PATH).join("jarvis_windows.ppn")]) - .sensitivities(&[1.0f32]) // max sensitivity possible - .init() { - Ok(pinstance) => { - // porcupine successfully initialized with the valid API key - info!("Porcupine successfully initialized with the valid API key ..."); - porcupine = pinstance; - } - Err(e) => { - error!("Porcupine error: either API key is not valid or there is no internet connection"); - error!("Error details: {}", e); - return Err( - "Porcupine error: either API key is not valid or there is no internet connection" - .into(), - ); - } - } - - // store - if PORCUPINE.get().is_none() { - PORCUPINE.set(porcupine); - } - - // start recording - start_recording() -} \ No newline at end of file diff --git a/src-tauri/src/tauri_commands/sys.rs b/src-tauri/src/tauri_commands/sys.rs deleted file mode 100644 index e44ab5a..0000000 --- a/src-tauri/src/tauri_commands/sys.rs +++ /dev/null @@ -1,48 +0,0 @@ -use peak_alloc::PeakAlloc; - -#[global_allocator] -static PEAK_ALLOC: PeakAlloc = PeakAlloc; - -extern crate systemstat; -use std::thread; -use std::time::Duration; -use systemstat::{Platform, System}; - -lazy_static! { - static ref SYS: System = System::new(); -} - -#[tauri::command] -pub fn get_current_ram_usage() -> String { - let result = String::from(format!("{}", PEAK_ALLOC.current_usage_as_mb())); - - result -} - -#[tauri::command] -pub fn get_peak_ram_usage() -> String { - let result = String::from(format!("{}", PEAK_ALLOC.peak_usage_as_gb())); - - result -} - -#[tauri::command] -pub fn get_cpu_temp() -> String { - if let Ok(cpu_temp) = SYS.cpu_temp() { - String::from(format!("{}", cpu_temp)) - } else { - String::from("error") - } -} - -// https://github.com/valpackett/systemstat/blob/trunk/examples/info.rs -#[tauri::command(async)] -pub async fn get_cpu_usage() -> String { - if let Ok(cpu) = SYS.cpu_load_aggregate() { - thread::sleep(Duration::from_secs(1)); - let cpu = cpu.done().unwrap(); - String::from(format!("{}", cpu.user * 100.0)) - } else { - String::from("error") - } -} diff --git a/src-tauri/src/tauri_commands/voice.rs b/src-tauri/src/tauri_commands/voice.rs deleted file mode 100644 index a6490b5..0000000 --- a/src-tauri/src/tauri_commands/voice.rs +++ /dev/null @@ -1,29 +0,0 @@ -use std::fs::File; -use std::io::BufReader; -use rodio::{Decoder, OutputStream, Sink}; - -#[tauri::command(async)] -pub fn play_sound(filename: &str, sleep: bool) { - // Get a output stream handle to the default physical sound device - let (_stream, stream_handle) = OutputStream::try_default().unwrap(); - let sink = Sink::try_new(&stream_handle).unwrap(); - - // Load a sound from a file, using a path relative to Cargo.toml - // let filepath = format!("{PUBLIC_PATH}/sound/{filename}.wav"); - let filepath = filename; - let file = BufReader::new(File::open(&filepath).unwrap()); - - // Decode that sound file into a source - let source = Decoder::new(file).unwrap(); - - // Play the sound directly on the device - println!("Playing {} ...", filepath); - // stream_handle.play_raw(source.convert_samples()); - sink.append(source); - - if sleep { - // The sound plays in a separate thread. This call will block the current thread until the sink - // has finished playing all its queued sounds. - sink.sleep_until_end(); - } -} \ No newline at end of file diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json deleted file mode 100644 index eec2c34..0000000 --- a/src-tauri/tauri.conf.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "build": { - "beforeDevCommand": "npm run dev", - "beforeBuildCommand": "npm run build", - "devPath": "http://localhost:1420", - "distDir": "../dist", - "withGlobalTauri": false - }, - "package": { - "productName": "jarvis-app", - "version": "0.0.2" - }, - "tauri": { - "allowlist": { - "all": false, - "shell": { - "all": false, - "open": true - }, - "dialog": { "message": true }, - "fs": { - "scope": ["$RESOURCE/*"] - }, - "path": { - "all": true - } - }, - "bundle": { - "active": true, - "icon": [ - "icons/32x32.png", - "icons/128x128.png", - "icons/128x128@2x.png", - "icons/icon.icns", - "icons/icon.ico" - ], - "identifier": "com.priler.jarvis", - "targets": "all", - "resources": [ - "commands", - "sound", - "vosk/model_small", - "picovoice", - "rustpotter", - "libvosk.dll", - "libstdc++-6.dll", - "libwinpthread-1.dll", - "libgcc_s_seh-1.dll", - "libvosk.lib" - ] - }, - "security": { - "csp": null - }, - "updater": { - "active": false - }, - "windows": [ - { - "fullscreen": false, - "resizable": false, - "title": "Jarvis Voice Assistant", - "width": 550, - "height": 700 - } - ] - } -} diff --git a/src/App.svelte b/src/App.svelte deleted file mode 100644 index cf6a112..0000000 --- a/src/App.svelte +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/src/Events.svelte b/src/Events.svelte deleted file mode 100644 index f0a8b87..0000000 --- a/src/Events.svelte +++ /dev/null @@ -1,44 +0,0 @@ - \ No newline at end of file diff --git a/src/components/Footer.svelte b/src/components/Footer.svelte deleted file mode 100644 index dc46f0e..0000000 --- a/src/components/Footer.svelte +++ /dev/null @@ -1,73 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/components/Header.svelte b/src/components/Header.svelte deleted file mode 100644 index 9dd3ba1..0000000 --- a/src/components/Header.svelte +++ /dev/null @@ -1,28 +0,0 @@ - - \ No newline at end of file diff --git a/src/components/Nav.svelte b/src/components/Nav.svelte deleted file mode 100644 index c8f8ccb..0000000 --- a/src/components/Nav.svelte +++ /dev/null @@ -1,5 +0,0 @@ - - \ No newline at end of file diff --git a/src/components/elements/ArcReactor.svelte b/src/components/elements/ArcReactor.svelte deleted file mode 100644 index adf9ee5..0000000 --- a/src/components/elements/ArcReactor.svelte +++ /dev/null @@ -1,647 +0,0 @@ - -
-
-
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - \ No newline at end of file diff --git a/src/components/elements/HDivider.svelte b/src/components/elements/HDivider.svelte deleted file mode 100644 index 5c8cea9..0000000 --- a/src/components/elements/HDivider.svelte +++ /dev/null @@ -1,18 +0,0 @@ - - -
- - \ No newline at end of file diff --git a/src/components/elements/SearchBar.svelte b/src/components/elements/SearchBar.svelte deleted file mode 100644 index 3e48b10..0000000 --- a/src/components/elements/SearchBar.svelte +++ /dev/null @@ -1,11 +0,0 @@ - - - \ No newline at end of file diff --git a/src/components/elements/Stats.svelte b/src/components/elements/Stats.svelte deleted file mode 100644 index 5492f67..0000000 --- a/src/components/elements/Stats.svelte +++ /dev/null @@ -1,377 +0,0 @@ - - -
-
-
-
- Микрофон - {microphone_label} -
-
-
-
-
- Нейросети - {nn_details["ww_engine"]} + {nn_details["stt_engine"]} -
-
-
-
-
- Ресурсы - RAM {resources_ram_usage}mb -
-
-
- - diff --git a/src/css/main.scss b/src/css/main.scss deleted file mode 100644 index 2cc520d..0000000 --- a/src/css/main.scss +++ /dev/null @@ -1,308 +0,0 @@ -$prim-font: "Roboto", sans-serif; -$sec-font: "Roboto Condensed", sans-serif; - -html, body { - overflow-x: hidden; -} - -::-webkit-scrollbar { - width: 15px; -} - -::-webkit-scrollbar-track { - -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3); -} - -::-webkit-scrollbar-thumb { - background: -webkit-gradient(linear,left top,left bottom,from(#999),to(#27292F)); - background: linear-gradient(to bottom,#999,#27292F); -} - -::selection { - background: #FF8901!important; /* WebKit/Blink Browsers */ - color: white!important; - text-shadow: 1px 1px 1px rgba(0, 0, 0, .5)!important; -} -::-moz-selection { - background: #FF8901!important; /* WebKit/Blink Browsers */ - color: white!important; - text-shadow: 1px 1px 1px rgba(0, 0, 0, .5)!important; -} - -/* - * HEADER - */ - -#header { - height: 80px; - background-color: #0c1013; - box-shadow: 0 0 19px 2px rgba(0, 0, 0, 0.91); - position: relative; - z-index: 100; - text-align: justify; - - display: flex; - justify-content: space-between; - - .logo { - margin-top: 12px; - - & > a > img { - width: 57px; - display: inline-block; - transition: .5s opacity ease-in; - - &:hover { - opacity: .8; - } - } - - & > div { - display: inline-block; - margin-left: 13px; - margin-top: 8px; - vertical-align: top; - } - - h1 { - color: #ffffff; - font-family: $sec-font; - font-size: 20px; - font-weight: bold; - text-transform: uppercase; - letter-spacing: 0.1px; - margin: 0; - - & > a { - color: white; - text-shadow: 1px 1px 1px rgba(0, 0, 0, .5); - text-decoration: none; - - &:hover { - color: #8AC832; - } - } - } - - h2 { - color: #888; - font-family: $sec-font; - font-size: 14px; - font-weight: bold; - letter-spacing: 0.1px; - margin-top: 2px; - letter-spacing: -0.01px; - } - } - - .top-menu { - vertical-align: top; - margin-top: 18px; - margin-left: 50px; - - & > ul { - margin: 0; - padding: 0; - list-style: none; - - & > li { - display: inline-block; - position: relative; - - &:not(:first-child) { - margin-left: 20px; - } - - & > a { - display: inline-block; - text-decoration: none; - color: #c6c6c6; - font-family: $sec-font; - font-size: 16px; - text-transform: uppercase; - font-weight: bold; - transition: .2s color; - padding: 10px 0; - - & > svg { - height: 20px; - width: 20px; - vertical-align: middle; - margin-bottom: 4px; - margin-right: 3px; - margin-left: 3px; - } - - &:hover, &.active { - color: #8AC832; - - &:after { - -webkit-transform: scaleX(1); - -ms-transform: scaleX(1); - transform: scaleX(1); - -webkit-transform-origin: left; - -ms-transform-origin: left; - transform-origin: left; - } - } - - &:after { - content: ""; - display: block; - height: 3px; - border-radius: 10px; - -webkit-transform: scaleX(0); - -ms-transform: scaleX(0); - transform: scaleX(0); - transition: .4s -webkit-transform; - transition: .4s transform; - -webkit-transform-origin: 100% 0; - -ms-transform-origin: 100% 0; - transform-origin: 100% 0; - background: #8AC832; - opacity: 0.90; - position: absolute; - bottom: 5px; - left: 0; - width: 100%; - z-index: 333; - } - - } - } - } - } -} - -.search { - display: block; - margin: 20px 0; - text-align: center; - - & > form { - position: relative; - - & > input { - width: 380px; - height: 38px; - box-shadow: inset 0 0 5px 1px rgba(0, 0, 0, 0.6); - border: 1px solid rgba(6, 6, 6, 0.99); - background-color: #0f1012; - outline: none; - - color: #D1D1D1; - font-family: $sec-font; - font-size: 17px; - font-weight: 600; - line-height: 70.58px; - padding-left: 20px; - padding-right: 45px; - padding-right: 45px; - - &::placeholder { - color: #676767; - font-weight: 400; - } - - &:focus + button + small { - opacity: .3; - } - } - - & > button { - position: absolute; - padding: 0; - margin: 0; - background: none; - border: none; - right: 35px; - top: 4px; - width: 30px; - height: 30px; - opacity: 1; - transition: .3s opacity; - - &::before { - content: ""; - position: absolute; - top: 0; - left: 0; - width: 110%; - height: 110%; - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAbCAYAAABvCO8sAAAC4ElEQVRIiaXWX4hXRRTA8c/etkwy+gNBEVRCmxFl1ouZGlEWFUQZPfVQRLAjKvSylEFBf16EiChJOxhLQY8RtA+lRZtpRv8ohUJQNMiHooKyojZNtoeZy95+/fZ3r+uBy5xz5pzznYGZc2dodHRUB1lVviUYwXkYwk84iK8wGRHb2goNtQDXYxRXdVkV9mFrRDx/osCl2IxrG75PsAv75Z1NyzsdwQosb8R+jXURsbML8AG82rDH8TI+77eyiAAppSVYg9SYXhsRW5rxVU/+Qw3Yd7ip+PrCesB7ImKNvNMDxb05pbR+NuBSvFL0L7EYH7SB+oA/Lrm7i2tTSmlVL3AYbxf9eyzDkROFNaBTWCmfYJhIKc1rAh/DuUW/HUfnCmtAp3FrMefjmRp4Kh4tE+PYO6DO6fKp7Ao9hJeKOZZSWlBhNc4ozidbaqyUr8W4/x+42aSuOYT7KtxZHF/gcEvyvDI+KF/yFW20iPgZk8W8o8KVxZjsn/IfOdbQL8OulNLTHfJ2lHFRhYuKcbB/bKs8kVLanVK6ZkBMfS8vqLCgGL/NEQjX48MB8/UVm1/hz2KceRLAfbh3wHxde2pYbmFnY+EcYVsiYm1LzKVl/KHCN8W4sUPxUxr6j7i7AwxuKOP+ykxLW4bzWxKnyziBRXirjZRSOstMx9lW4Q38XRyPt+R/hOtwF35tgzVqDhX99QpTeK441pWVzya/49OOICmlCzFWzE0RcaRuT0/hj6Jv71qwg7xbxuNKv66BR820uIuxE6edDCmltB1XFPOeiPiL/B+sZQcexgtyk96L+3X42/eAFuM1+YUHGyJiop4f7ol/Ef/Iv5TL8VlZQMiXexBoRH7hjTXcj0TEs8242V5tNxdo8wC9J5/Sfq+25bitEfut/Gp7p7dw7w5reV/e4Yay6oW4pXyD5DC2YmNEHOsXMBuwlo3lWy3v+mpcgnPku/WL3Br3yA+uNyPi+KCC/wJQGMGINsMjCwAAAABJRU5ErkJggg=="); - background-repeat: no-repeat; - background-size: 75%; - background-position: center center; - transition: all .3s; - } - - &:hover { - &::before { - cursor: pointer; - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAbCAYAAABvCO8sAAABN2lDQ1BBZG9iZSBSR0IgKDE5OTgpAAAokZWPv0rDUBSHvxtFxaFWCOLgcCdRUGzVwYxJW4ogWKtDkq1JQ5ViEm6uf/oQjm4dXNx9AidHwUHxCXwDxamDQ4QMBYvf9J3fORzOAaNi152GUYbzWKt205Gu58vZF2aYAoBOmKV2q3UAECdxxBjf7wiA10277jTG+38yH6ZKAyNguxtlIYgK0L/SqQYxBMygn2oQD4CpTto1EE9AqZf7G1AKcv8ASsr1fBBfgNlzPR+MOcAMcl8BTB1da4Bakg7UWe9Uy6plWdLuJkEkjweZjs4zuR+HiUoT1dFRF8jvA2AxH2w3HblWtay99X/+PRHX82Vun0cIQCw9F1lBeKEuf1UYO5PrYsdwGQ7vYXpUZLs3cLcBC7dFtlqF8hY8Dn8AwMZP/fNTP8gAAAAJcEhZcwAACxMAAAsTAQCanBgAAAXRaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjYtYzE0MiA3OS4xNjA5MjQsIDIwMTcvMDcvMTMtMDE6MDY6MzkgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIiB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE4IChXaW5kb3dzKSIgeG1wOkNyZWF0ZURhdGU9IjIwMjMtMDQtMjNUMDQ6MzE6NTgrMDU6MDAiIHhtcDpNb2RpZnlEYXRlPSIyMDIzLTA0LTIzVDA0OjM0OjI3KzA1OjAwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDIzLTA0LTIzVDA0OjM0OjI3KzA1OjAwIiBkYzpmb3JtYXQ9ImltYWdlL3BuZyIgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowZDA5NTdiMi0zYmM3LTcxNDItODcyNS01ODA3MjA2NTFlYTIiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDoxM2UwZWYxNi03OGM0LTE2NGMtODc1Mi0xYjY5OTQ1OTczMGMiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo5YjNkZTI4Yy1iOTBmLTNjNDUtYjAwNS1kNTExOTE3ZDhkNzIiPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjcmVhdGVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjliM2RlMjhjLWI5MGYtM2M0NS1iMDA1LWQ1MTE5MTdkOGQ3MiIgc3RFdnQ6d2hlbj0iMjAyMy0wNC0yM1QwNDozMTo1OCswNTowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTggKFdpbmRvd3MpIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDowZDA5NTdiMi0zYmM3LTcxNDItODcyNS01ODA3MjA2NTFlYTIiIHN0RXZ0OndoZW49IjIwMjMtMDQtMjNUMDQ6MzQ6MjcrMDU6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE4IChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4Wh528AAAC7UlEQVRIiaXWX4gXVRTA8c9v2jLJ6A8ERVAJbUakTr2YqRFl0QRRRk89FBGYqNDLUgY51PQiRERJWhhLQY8RtA+OFm2mGf2RGqEQDAvyoaigrKhNk+3h3mGnX7/9zbgeGO45555zvvfCvWdub/POpTrI6vilGMVF6OEnHMEXmCyyaldboV4LcCPWYnGXVeEQdhRZ9fypApdhG65v+D7GPhwWdjYt7HQUK7GiEfslNhRZtbcL8EG81rDH8TI+G7SyIqtAXqYp1uGRxvT6Iqu2N+OTvvyHG7DvcEv0DYT1gasiq9YJO/06urflZbpxNuAyvBr1z7EE77eBBoA/irn7o2trXqar+4Ej2Bn177Ecx04V1oBOYZVwgmEiL9N5TeATuDDqGY7PFdaATuP2aM7HMzXwTDweJ8ZxcEids4VT2RX6DV6K5lhepgsSrME50flUS41VwrUY9/8DN5vUNXu4P8Fd0XEAR1uS58XxIeGSr2yjFVn1MyajeWeCa6MxOTjlP3KioV+FfXmZFh3y9sRxUYLLonFkcGyrbM7LdH9eptcNianv5SUJFkTjtzkC4UZ8MGS+vmLzE/wZjXNPA3gI9w2Zr2tPjQgt7HwsnCNse5FV61tirozjDwm+isbNHYqf0dB/xD0dYHBTHA8nZlraclzckjgdxwkswtttpLxMzzPTcXYleBN/R8eTLfkf4gbcjV/bYI2avai/kWAKz0XHhrjy2eR3fNIRJC/TSzEWza1FVh2r29PT+CPqu7sW7CDvxPGk2K9r4HEzLe5y7MVZp0PKy3Q3ronmvUVW/UX4D9ayB4/iBaFJH8QDOvzt+0BL8LrwwoNNRVZN1PMjffEv4h/hl3I1Po0LeEW43MNAo8ILb6zhfqzIqmebcbO92m6N0OYBelc4pYNebStwRyP2W+HVVvYX7t9hLe8JO9wUV70Qt8VvmBzFDmwpsurEoIDZgLVsid8aYddLcQUuEO7WL0JrrIQH11tFVp0cVvBfVZDA+HDoxOQAAAAASUVORK5CYII="); - } - } - } - - & > small { - position: absolute; - font-family: $sec-font; - font-size: 14px; - font-weight: bold; - line-height: 1.7em; - top: 8px; - right: 75px; - background-color: #D1D1D1; - color: #080C0F; - padding: 0 7px; - padding-top: 2px; - border-radius: 4px; - opacity: 0; - transition: opacity .3s; - cursor: default; - } - } - - &.active { - small { - opacity: .3; - } - } -} - -@media (max-width: 1364px) { - #content>.inner>section.materials>header>h1 { - font-size: 26px; - } - - #content>.inner>section.materials>article>.details>h1 { - font-size: 25px; - } - - #content>.inner>section.materials>article>.details>blockquote { - font-size: 17px; - line-height: 24px; - -webkit-line-clamp: 4; - } - - .btn { - font-size: 16px!important; - } - - #paginator>header>h1 { - font-size: 30px!important; - } - - #paginator>.paginator-wrapper>.paginator-box { - transform: scale(1.5); - margin-top: 15px; - } - - #paginator>.paginator-wrapper>small:first-child { - display: none; - } - - #paginator>.paginator-wrapper>small:last-child { - display: none; - } -} \ No newline at end of file diff --git a/src/css/styles.scss b/src/css/styles.scss deleted file mode 100644 index 1cbb6ab..0000000 --- a/src/css/styles.scss +++ /dev/null @@ -1,92 +0,0 @@ -/* - SOME DEFAULT CSS. -*/ -html, body { - margin: 0; - padding: 0; - min-height: 100vh; - min-width: 100vw; - - background-color: #4C5062; - color: white; - - - &.assist-page { - background: rgb(24,123,123); - background: -moz-radial-gradient(circle, rgba(24,123,123,0.4906337535014006) 0%, rgba(13,15,19,1) 64%); - background: -webkit-radial-gradient(circle, rgba(24,123,123,0.4906337535014006) 0%, rgba(13,15,19,1) 64%); - background: radial-gradient(circle, rgba(24,123,123,0.4906337535014006) 0%, rgba(13,15,19,1) 64%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#187b7b",endColorstr="#0d0f13",GradientType=1); - - &.assist-active { - background: rgb(24,81,123); - background: -moz-radial-gradient(circle, rgba(24,81,123,0.6418942577030813) 0%, rgba(13,15,19,1) 64%); - background: -webkit-radial-gradient(circle, rgba(24,81,123,0.6418942577030813) 0%, rgba(13,15,19,1) 64%); - background: radial-gradient(circle, rgba(24,81,123,0.6418942577030813) 0%, rgba(13,15,19,1) 64%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#18517b",endColorstr="#0d0f13",GradientType=1); - } - - } -} - -:root { - font-family: Inter, Avenir, Helvetica, Arial, sans-serif; - font-size: 16px; - line-height: 24px; - font-weight: 400; - - color: #0f0f0f; - background-color: #f6f6f6; - - font-synthesis: none; - text-rendering: optimizeLegibility; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - -webkit-text-size-adjust: 100%; -} - - -a { - color: #2A9CD0; - text-decoration: none; - font-weight: bold; - - &:hover { - color: #1dabed; - text-decoration: underline; - } -} - -/* - OVERRIDES. -*/ -#wrapper { - padding: 0; - margin: 0; -} - -#header, main { - padding: 0 30px; -} - -select, input { - color: #ccc!important; -} - -.form { - label { - font-weight: bold!important; - color: #8AC832!important; - font-size: 15px!important; - border-bottom: 1px dotted gray; - margin-bottom: 10px!important; - - & + div { - line-height: 1.2em; - } - } - - .svelteui-Tab-label { - font-size: 18px!important; - } -} \ No newline at end of file diff --git a/src/functions.ts b/src/functions.ts deleted file mode 100644 index 57f8d22..0000000 --- a/src/functions.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { invoke } from "@tauri-apps/api/tauri" -import { is_listening, isListening } from "@/stores" -import { clearInterval, clearTimeout, setInterval, setTimeout } from 'worker-timers'; - -setInterval(() => { - (async () => { - is_listening.set(await invoke("is_listening")); - })().catch(err => { - console.error(err); - }); -}, 1000); - -export function startListening() { - (async () => { - invoke('start_listening') - .then((message) => { - is_listening.set(true); - }) - .catch((error) => { - is_listening.set(false); - console.error(error); - // alert("Ошибка: " + error); - }) - })().catch(err => { - console.error(err); - }); -} - -export function stopListening(callback) { - (async () => { - invoke('stop_listening') - .then((message) => { - is_listening.set(false); - if(callback) { - callback(); - } - }) - .catch((error) => { - console.error(error); - }) - })().catch(err => { - console.error(err); - }); -} - -export function capitalizeFirstLetter(string) { - return string.charAt(0).toUpperCase() + string.slice(1); -} - -export function showInExplorer(path) { - (async () => { - invoke('show_in_folder', {path: path}) - .then((message) => {}) - .catch((error) => { - console.error(error); - // alert("Ошибка: " + error); - }) - })().catch(err => { - console.error(err); - }); -} \ No newline at end of file diff --git a/src/main.ts b/src/main.ts deleted file mode 100644 index be9c929..0000000 --- a/src/main.ts +++ /dev/null @@ -1,13 +0,0 @@ -// Klondike project old CSS file -import "./css/main.scss"; - -// App current CSS file -import "./css/styles.scss"; - -// deploy app -import App from "./App.svelte"; -const app = new App({ - target: document.getElementById("app"), -}); - -export default app; \ No newline at end of file diff --git a/src/pages/_layout.svelte b/src/pages/_layout.svelte deleted file mode 100644 index f307626..0000000 --- a/src/pages/_layout.svelte +++ /dev/null @@ -1,12 +0,0 @@ - - - - -
-
- -
- \ No newline at end of file diff --git a/src/pages/commands.svelte b/src/pages/commands.svelte deleted file mode 100644 index d724d7b..0000000 --- a/src/pages/commands.svelte +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - Тут будет список команд + полноценный редактор команд.
- Следите за обновлениями в нашем телеграм канале! -
- -
- bruh -
- - -