From 512ca994e27c47e5d54376017eedda16476cf782 Mon Sep 17 00:00:00 2001 From: Sebastian Moser Date: Fri, 22 Dec 2023 22:43:54 +0100 Subject: [PATCH] fresh start --- Cargo.lock | 2826 ----------------------------- Cargo.toml | 37 +- errors.toml | 107 -- js-client | 2 +- proto-spec.md | 15 - src/error.rs | 254 --- src/hyper-server.rs | 34 - src/integrated_types/async.rs | 0 src/integrated_types/keep_same.rs | 0 src/integrated_types/sync.rs | 0 src/integrated_types/test_same.rs | 2 - src/lib.rs | 13 - src/main.rs | 91 - src/server.rs | 656 ------- src/server/itemstore.rs | 231 --- src/server/proto.rs | 470 ----- src/server/server_utils.rs | 28 - 17 files changed, 19 insertions(+), 4747 deletions(-) delete mode 100644 Cargo.lock delete mode 100644 errors.toml delete mode 100644 proto-spec.md delete mode 100644 src/error.rs delete mode 100644 src/hyper-server.rs delete mode 100644 src/integrated_types/async.rs delete mode 100644 src/integrated_types/keep_same.rs delete mode 100644 src/integrated_types/sync.rs delete mode 100644 src/integrated_types/test_same.rs delete mode 100644 src/lib.rs delete mode 100644 src/main.rs delete mode 100644 src/server.rs delete mode 100644 src/server/itemstore.rs delete mode 100644 src/server/proto.rs delete mode 100644 src/server/server_utils.rs diff --git a/Cargo.lock b/Cargo.lock deleted file mode 100644 index f9e7da7..0000000 --- a/Cargo.lock +++ /dev/null @@ -1,2826 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 3 - -[[package]] -name = "addr" -version = "0.15.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a93b8a41dbe230ad5087cc721f8d41611de654542180586b315d9f4cf6b72bef" -dependencies = [ - "psl-types", -] - -[[package]] -name = "aho-corasick" -version = "0.7.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" -dependencies = [ - "memchr", -] - -[[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 = "any_ascii" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea50b14b7a4b9343f8c627a7a53c52076482bd4bdad0a24fd3ec533ed616cc2c" - -[[package]] -name = "approx" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6" -dependencies = [ - "num-traits", -] - -[[package]] -name = "argon2" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95c2fcf79ad1932ac6269a738109997a83c227c09b75842ae564dc8ede6a861c" -dependencies = [ - "base64ct", - "blake2", - "password-hash", -] - -[[package]] -name = "async-channel" -version = "1.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf46fee83e5ccffc220104713af3292ff9bc7c64c7de289f66dae8e38d826833" -dependencies = [ - "concurrent-queue", - "event-listener", - "futures-core", -] - -[[package]] -name = "async-executor" -version = "1.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fa3dc5f2a8564f07759c008b9109dc0d39de92a88d5588b8a5036d286383afb" -dependencies = [ - "async-lock", - "async-task", - "concurrent-queue", - "fastrand", - "futures-lite", - "slab", -] - -[[package]] -name = "async-lock" -version = "2.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa24f727524730b077666307f2734b4a1a1c57acb79193127dcc8914d5242dd7" -dependencies = [ - "event-listener", -] - -[[package]] -name = "async-recursion" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e97ce7de6cf12de5d7226c73f5ba9811622f4db3a5b91b55c53e987e5f91cba" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.14", -] - -[[package]] -name = "async-task" -version = "4.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecc7ab41815b3c653ccd2978ec3255c81349336702dfdf62ee6f7069b12a3aae" - -[[package]] -name = "async-trait" -version = "0.1.68" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9ccdd8f2a161be9bd5c023df56f1b2a0bd1d83872ae53b71a84a12c9bf6e842" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.14", -] - -[[package]] -name = "async_io_stream" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6d7b9decdf35d8908a7e3ef02f64c5e9b1695e230154c0e8de3969142d9b94c" -dependencies = [ - "futures", - "pharos", - "rustc_version", -] - -[[package]] -name = "atomic" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b88d82667eca772c4aa12f0f1348b3ae643424c8876448f3f7bd5787032e234c" -dependencies = [ - "autocfg", -] - -[[package]] -name = "atomic-polyfill" -version = "0.1.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3ff7eb3f316534d83a8a2c3d1674ace8a5a71198eba31e2e2b597833f699b28" -dependencies = [ - "critical-section", -] - -[[package]] -name = "atty" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" -dependencies = [ - "hermit-abi 0.1.19", - "libc", - "winapi", -] - -[[package]] -name = "autocfg" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" - -[[package]] -name = "axum" -version = "0.6.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b32c5ea3aabaf4deb5f5ced2d688ec0844c881c9e6c696a8b769a05fc691e62" -dependencies = [ - "async-trait", - "axum-core", - "base64 0.21.0", - "bitflags", - "bytes", - "futures-util", - "headers", - "http", - "http-body", - "hyper", - "itoa", - "matchit", - "memchr", - "mime", - "percent-encoding", - "pin-project-lite", - "rustversion", - "serde", - "serde_json", - "serde_path_to_error", - "serde_urlencoded", - "sha1", - "sync_wrapper", - "tokio", - "tokio-tungstenite", - "tower", - "tower-layer", - "tower-service", -] - -[[package]] -name = "axum-core" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c" -dependencies = [ - "async-trait", - "bytes", - "futures-util", - "http", - "http-body", - "mime", - "rustversion", - "tower-layer", - "tower-service", -] - -[[package]] -name = "axum-extra" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9a320103719de37b7b4da4c8eb629d4573f6bcfd3dfe80d3208806895ccf81d" -dependencies = [ - "axum", - "bytes", - "futures-util", - "http", - "mime", - "pin-project-lite", - "tokio", - "tower", - "tower-http", - "tower-layer", - "tower-service", -] - -[[package]] -name = "axum-macros" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bb524613be645939e280b7279f7b017f98cf7f5ef084ec374df373530e73277" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "syn 2.0.14", -] - -[[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 = "base64ct" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" - -[[package]] -name = "bcrypt" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9df288bec72232f78c1ec5fe4e8f1d108aa0265476e93097593c803c8c02062a" -dependencies = [ - "base64 0.21.0", - "blowfish", - "getrandom", - "subtle", - "zeroize", -] - -[[package]] -name = "bigdecimal" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6aaf33151a6429fe9211d1b276eafdf70cdff28b071e76c0b0e1503221ea3744" -dependencies = [ - "num-bigint", - "num-integer", - "num-traits", - "serde", -] - -[[package]] -name = "bindgen" -version = "0.64.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4243e6031260db77ede97ad86c27e501d646a27ab57b59a574f725d98ab1fb4" -dependencies = [ - "bitflags", - "cexpr", - "clang-sys", - "lazy_static", - "lazycell", - "peeking_take_while", - "proc-macro2", - "quote", - "regex", - "rustc-hash", - "shlex", - "syn 1.0.109", -] - -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "bitvec" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" -dependencies = [ - "funty", - "radium", - "tap", - "wyz", -] - -[[package]] -name = "blake2" -version = "0.10.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" -dependencies = [ - "digest", -] - -[[package]] -name = "block-buffer" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" -dependencies = [ - "generic-array", -] - -[[package]] -name = "blowfish" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e412e2cd0f2b2d93e02543ceae7917b3c70331573df19ee046bcbc35e45e87d7" -dependencies = [ - "byteorder", - "cipher", -] - -[[package]] -name = "bumpalo" -version = "3.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535" - -[[package]] -name = "bung" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da8bcf29331f126c3b4f20a6698909d58004290723aac75e3eafab41ae3c2953" -dependencies = [ - "byteorder", - "rmp", - "serde", -] - -[[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 = "bzip2-sys" -version = "0.1.11+1.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" -dependencies = [ - "cc", - "libc", - "pkg-config", -] - -[[package]] -name = "cc" -version = "1.0.79" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" -dependencies = [ - "jobserver", -] - -[[package]] -name = "cexpr" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" -dependencies = [ - "nom", -] - -[[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.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e3c5919066adf22df73762e50cffcde3a758f2a848b113b586d1f86728b673b" -dependencies = [ - "iana-time-zone", - "js-sys", - "num-integer", - "num-traits", - "serde", - "time", - "wasm-bindgen", - "winapi", -] - -[[package]] -name = "cipher" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" -dependencies = [ - "crypto-common", - "inout", -] - -[[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 = "codespan-reporting" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" -dependencies = [ - "termcolor", - "unicode-width", -] - -[[package]] -name = "colored" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3616f750b84d8f0de8a58bda93e08e2a81ad3f523089b05f1dffecab48c6cbd" -dependencies = [ - "atty", - "lazy_static", - "winapi", -] - -[[package]] -name = "concurrent-queue" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62ec6771ecfa0762d24683ee5a32ad78487a3d3afdc0fb8cae19d2c5deb50b7c" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "convert_case" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" - -[[package]] -name = "core-foundation-sys" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" - -[[package]] -name = "cpufeatures" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "280a9f2d8b3a38871a3c8a46fb80db65e5e5ed97da80c4d08bf27fb63e35e181" -dependencies = [ - "libc", -] - -[[package]] -name = "critical-section" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6548a0ad5d2549e111e1f6a11a6c2e2d00ce6a3dafe22948d67c2b443f775e52" - -[[package]] -name = "crossbeam-utils" -version = "0.8.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "crypto-common" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" -dependencies = [ - "generic-array", - "typenum", -] - -[[package]] -name = "cxx" -version = "1.0.94" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f61f1b6389c3fe1c316bf8a4dccc90a38208354b330925bce1f74a6c4756eb93" -dependencies = [ - "cc", - "cxxbridge-flags", - "cxxbridge-macro", - "link-cplusplus", -] - -[[package]] -name = "cxx-build" -version = "1.0.94" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12cee708e8962df2aeb38f594aae5d827c022b6460ac71a7a3e2c3c2aae5a07b" -dependencies = [ - "cc", - "codespan-reporting", - "once_cell", - "proc-macro2", - "quote", - "scratch", - "syn 2.0.14", -] - -[[package]] -name = "cxxbridge-flags" -version = "1.0.94" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7944172ae7e4068c533afbb984114a56c46e9ccddda550499caa222902c7f7bb" - -[[package]] -name = "cxxbridge-macro" -version = "1.0.94" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2345488264226bf682893e25de0769f3360aac9957980ec49361b083ddaa5bc5" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.14", -] - -[[package]] -name = "derive_more" -version = "0.99.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" -dependencies = [ - "convert_case", - "proc-macro2", - "quote", - "rustc_version", - "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", - "subtle", -] - -[[package]] -name = "dmp" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1796e147190351ab441586c68b74494b18a70b0e39fb9bf8e84e38635bf4c92a" -dependencies = [ - "regex", - "urlencoding", -] - -[[package]] -name = "either" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" - -[[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 = "event-listener" -version = "2.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" - -[[package]] -name = "fastrand" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" -dependencies = [ - "instant", -] - -[[package]] -name = "float_next_after" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bf7cc16383c4b8d58b9905a8509f02926ce3058053c056376248d958c9df1e8" - -[[package]] -name = "flume" -version = "0.10.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1657b4441c3403d9f7b3409e47575237dac27b1b5726df654a6ecbf92f0f7577" -dependencies = [ - "futures-core", - "futures-sink", - "nanorand", - "pin-project", - "spin 0.9.8", -] - -[[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.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8" -dependencies = [ - "percent-encoding", -] - -[[package]] -name = "funty" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" - -[[package]] -name = "futures" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40" -dependencies = [ - "futures-channel", - "futures-core", - "futures-executor", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-channel" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" -dependencies = [ - "futures-core", - "futures-sink", -] - -[[package]] -name = "futures-concurrency" -version = "7.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30ce9739c5655304eced9aaea4220e4393b8f60a3a5f1b84d09a206d6a5078a9" -dependencies = [ - "bitvec", - "futures-core", - "pin-project", -] - -[[package]] -name = "futures-core" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" - -[[package]] -name = "futures-executor" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0" -dependencies = [ - "futures-core", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-io" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" - -[[package]] -name = "futures-lite" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" -dependencies = [ - "fastrand", - "futures-core", - "futures-io", - "memchr", - "parking", - "pin-project-lite", - "waker-fn", -] - -[[package]] -name = "futures-macro" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.14", -] - -[[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" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" - -[[package]] -name = "futures-util" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" -dependencies = [ - "futures-channel", - "futures-core", - "futures-io", - "futures-macro", - "futures-sink", - "futures-task", - "memchr", - "pin-project-lite", - "pin-utils", - "slab", -] - -[[package]] -name = "fuzzy-matcher" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54614a3312934d066701a80f20f15fa3b56d67ac7722b39eea5b4c9dd1d66c94" -dependencies = [ - "thread_local", -] - -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", -] - -[[package]] -name = "geo" -version = "0.24.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7d640a4dd1d1c98b45f4653c841a8ec15f461a71b86bc30533ae64c6f20f268" -dependencies = [ - "float_next_after", - "geo-types", - "geographiclib-rs", - "log", - "num-traits", - "robust", - "rstar", - "serde", -] - -[[package]] -name = "geo-types" -version = "0.7.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5f0b3068e1537a4b861ec3734f4aa9c317d537cf0845bf6fb6221973499d26c" -dependencies = [ - "approx", - "num-traits", - "rstar", - "serde", -] - -[[package]] -name = "geographiclib-rs" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ea804e7bd3c6a4ca6a01edfa35231557a8a81d4d3f3e1e2b650d028c42592be" -dependencies = [ - "lazy_static", -] - -[[package]] -name = "getrandom" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c85e1d9ab2eadba7e5040d4e09cbd6d072b76a557ad64e797c2cb9d4da21d7e4" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "wasi 0.11.0+wasi-snapshot-preview1", - "wasm-bindgen", -] - -[[package]] -name = "glob" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" - -[[package]] -name = "h2" -version = "0.3.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5be7b54589b581f624f566bf5d8eb2bab1db736c51528720b6bd36b96b55924d" -dependencies = [ - "bytes", - "fnv", - "futures-core", - "futures-sink", - "futures-util", - "http", - "indexmap", - "slab", - "tokio", - "tokio-util", - "tracing", -] - -[[package]] -name = "hash32" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67" -dependencies = [ - "byteorder", -] - -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" - -[[package]] -name = "headers" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3e372db8e5c0d213e0cd0b9be18be2aca3d44cf2fe30a9d46a65581cd454584" -dependencies = [ - "base64 0.13.1", - "bitflags", - "bytes", - "headers-core", - "http", - "httpdate", - "mime", - "sha1", -] - -[[package]] -name = "headers-core" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7f66481bfee273957b1f20485a4ff3362987f85b2c236580d81b4eb7a326429" -dependencies = [ - "http", -] - -[[package]] -name = "heapless" -version = "0.7.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db04bc24a18b9ea980628ecf00e6c0264f3c1426dac36c00cb49b6fbad8b0743" -dependencies = [ - "atomic-polyfill", - "hash32", - "rustc_version", - "spin 0.9.8", - "stable_deref_trait", -] - -[[package]] -name = "heck" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" - -[[package]] -name = "hermit-abi" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" -dependencies = [ - "libc", -] - -[[package]] -name = "hermit-abi" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" -dependencies = [ - "libc", -] - -[[package]] -name = "hmac" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" -dependencies = [ - "digest", -] - -[[package]] -name = "http" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" -dependencies = [ - "bytes", - "fnv", - "itoa", -] - -[[package]] -name = "http-body" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" -dependencies = [ - "bytes", - "http", - "pin-project-lite", -] - -[[package]] -name = "http-range-header" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bfe8eed0a9285ef776bb792479ea3834e8b94e13d615c2f66d03dd50a435a29" - -[[package]] -name = "httparse" -version = "1.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" - -[[package]] -name = "httpdate" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" - -[[package]] -name = "hyper" -version = "0.14.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc5e554ff619822309ffd57d8734d77cd5ce6238bc956f037ea06c58238c9899" -dependencies = [ - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "httparse", - "httpdate", - "itoa", - "pin-project-lite", - "socket2", - "tokio", - "tower-service", - "tracing", - "want", -] - -[[package]] -name = "hyper-rustls" -version = "0.23.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1788965e61b367cd03a62950836d5cd41560c3577d90e40e0819373194d1661c" -dependencies = [ - "http", - "hyper", - "rustls", - "tokio", - "tokio-rustls", -] - -[[package]] -name = "iana-time-zone" -version = "0.1.56" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0722cd7114b7de04316e7ea5456a0bbb20e4adb46fd27a3697adb812cff0f37c" -dependencies = [ - "android_system_properties", - "core-foundation-sys", - "iana-time-zone-haiku", - "js-sys", - "wasm-bindgen", - "windows", -] - -[[package]] -name = "iana-time-zone-haiku" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0703ae284fc167426161c2e3f1da3ea71d94b21bedbcc9494e92b28e334e3dca" -dependencies = [ - "cxx", - "cxx-build", -] - -[[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 = "indexmap" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown", - "serde", -] - -[[package]] -name = "inout" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" -dependencies = [ - "generic-array", -] - -[[package]] -name = "instant" -version = "0.1.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "ipnet" -version = "2.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12b6ee2129af8d4fb011108c73d99a1b83a85977f23b82460c0ae2e25bb4b57f" - -[[package]] -name = "itertools" -version = "0.10.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" -dependencies = [ - "either", -] - -[[package]] -name = "itoa" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" - -[[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.61" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730" -dependencies = [ - "wasm-bindgen", -] - -[[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 = "lexicmp" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7378d131ddf24063b32cbd7e91668d183140c4b3906270635a4d633d1068ea5d" -dependencies = [ - "any_ascii", -] - -[[package]] -name = "libc" -version = "0.2.141" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3304a64d199bb964be99741b7a14d26972741915b3649639149b2479bb46f4b5" - -[[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 = "libm" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "348108ab3fba42ec82ff6e9564fc4ca0247bdccdc68dd8af9764bbc79c3c8ffb" - -[[package]] -name = "librocksdb-sys" -version = "0.10.0+7.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fe4d5874f5ff2bc616e55e8c6086d478fcda13faf9495768a4aa1c22042d30b" -dependencies = [ - "bindgen", - "bzip2-sys", - "cc", - "glob", - "libc", - "libz-sys", - "lz4-sys", - "zstd-sys", -] - -[[package]] -name = "libz-sys" -version = "1.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9702761c3935f8cc2f101793272e202c72b99da8f4224a19ddcf1279a6450bbf" -dependencies = [ - "cc", - "pkg-config", - "vcpkg", -] - -[[package]] -name = "link-cplusplus" -version = "1.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecd207c9c713c34f95a097a5b029ac2ce6010530c7b49d7fea24d977dede04f5" -dependencies = [ - "cc", -] - -[[package]] -name = "lock_api" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" -dependencies = [ - "autocfg", - "scopeguard", -] - -[[package]] -name = "log" -version = "0.4.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "lz4-sys" -version = "1.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57d27b317e207b10f69f5e75494119e391a96f48861ae870d1da6edac98ca900" -dependencies = [ - "cc", - "libc", -] - -[[package]] -name = "matchit" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b87248edafb776e59e6ee64a79086f65890d3510f2c656c000bf2a7e8a0aea40" - -[[package]] -name = "md-5" -version = "0.10.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6365506850d44bff6e2fbcb5176cf63650e48bd45ef2fe2665ae1570e0f4b9ca" -dependencies = [ - "digest", -] - -[[package]] -name = "memchr" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" - -[[package]] -name = "mime" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" - -[[package]] -name = "mime_guess" -version = "2.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef" -dependencies = [ - "mime", - "unicase", -] - -[[package]] -name = "minimal-lexical" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" - -[[package]] -name = "mio" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b9d9a46eff5b4ff64b45a9e316a6d1e0bc719ef429cbec4dc630684212bfdf9" -dependencies = [ - "libc", - "log", - "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys", -] - -[[package]] -name = "mize" -version = "0.1.0" -dependencies = [ - "axum", - "axum-extra", - "axum-macros", - "colored", - "derive_more", - "futures-util", - "itertools", - "lazy_static", - "serde", - "serde_json", - "surrealdb", - "tokio", - "tokio-stream", - "toml", - "tower-http", - "uuid", -] - -[[package]] -name = "nanoid" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ffa00dec017b5b1a8b7cf5e2c008bfda1aa7e0697ac1508b491fdf2622fb4d8" -dependencies = [ - "rand", -] - -[[package]] -name = "nanorand" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" -dependencies = [ - "getrandom", -] - -[[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-bigint" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", -] - -[[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-traits" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" -dependencies = [ - "autocfg", - "libm", -] - -[[package]] -name = "num_cpus" -version = "1.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" -dependencies = [ - "hermit-abi 0.2.6", - "libc", -] - -[[package]] -name = "once_cell" -version = "1.17.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" - -[[package]] -name = "parking" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14f2252c834a40ed9bb5422029649578e63aa341ac401f74e719dd1afda8394e" - -[[package]] -name = "parking_lot" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" -dependencies = [ - "lock_api", - "parking_lot_core", -] - -[[package]] -name = "parking_lot_core" -version = "0.9.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9069cbb9f99e3a5083476ccb29ceb1de18b9118cafa53e90c9551235de2b9521" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall", - "smallvec", - "windows-sys", -] - -[[package]] -name = "password-hash" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "346f04948ba92c43e8469c1ee6736c7563d71012b17d40745260fe106aac2166" -dependencies = [ - "base64ct", - "rand_core", - "subtle", -] - -[[package]] -name = "paste" -version = "1.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f746c4065a8fa3fe23974dd82f15431cc8d40779821001404d10d2e79ca7d79" - -[[package]] -name = "pbkdf2" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0ca0b5a68607598bf3bad68f32227a8164f6254833f84eafaac409cd6746c31" -dependencies = [ - "digest", - "hmac", - "password-hash", - "sha2", -] - -[[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.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" - -[[package]] -name = "pharos" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9567389417feee6ce15dd6527a8a1ecac205ef62c2932bcf3d9f6fc5b78b414" -dependencies = [ - "futures", - "rustc_version", -] - -[[package]] -name = "pin-project" -version = "1.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad29a609b6bcd67fee905812e544992d216af9d755757c05ed2d0e15a74c6ecc" -dependencies = [ - "pin-project-internal", -] - -[[package]] -name = "pin-project-internal" -version = "1.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "pin-project-lite" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" - -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" - -[[package]] -name = "pkg-config" -version = "0.3.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" - -[[package]] -name = "ppv-lite86" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" - -[[package]] -name = "proc-macro2" -version = "1.0.56" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b63bdb0cd06f1f4dedf69b254734f9b45af66e4a031e42a7480257d9898b435" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "psl-types" -version = "2.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33cb294fe86a74cbcf50d4445b37da762029549ebeea341421c7c70370f86cac" - -[[package]] -name = "quote" -version = "1.0.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "radium" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" - -[[package]] -name = "rand" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" -dependencies = [ - "libc", - "rand_chacha", - "rand_core", -] - -[[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", -] - -[[package]] -name = "rand_core" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom", -] - -[[package]] -name = "redox_syscall" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" -dependencies = [ - "bitflags", -] - -[[package]] -name = "regex" -version = "1.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b1f693b24f6ac912f4893ef08244d70b6067480d2f1a46e950c9691e6749d1d" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax", -] - -[[package]] -name = "regex-syntax" -version = "0.6.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" - -[[package]] -name = "reqwest" -version = "0.11.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27b71749df584b7f4cac2c426c127a7c785a5106cc98f7a8feb044115f0fa254" -dependencies = [ - "base64 0.21.0", - "bytes", - "encoding_rs", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "hyper", - "hyper-rustls", - "ipnet", - "js-sys", - "log", - "mime", - "once_cell", - "percent-encoding", - "pin-project-lite", - "rustls", - "rustls-pemfile", - "serde", - "serde_json", - "serde_urlencoded", - "tokio", - "tokio-rustls", - "tokio-util", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "wasm-streams", - "web-sys", - "webpki-roots", - "winreg", -] - -[[package]] -name = "ring" -version = "0.16.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" -dependencies = [ - "cc", - "libc", - "once_cell", - "spin 0.5.2", - "untrusted", - "web-sys", - "winapi", -] - -[[package]] -name = "rmp" -version = "0.8.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44519172358fd6d58656c86ab8e7fbc9e1490c3e8f14d35ed78ca0dd07403c9f" -dependencies = [ - "byteorder", - "num-traits", - "paste", -] - -[[package]] -name = "robust" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5864e7ef1a6b7bcf1d6ca3f655e65e724ed3b52546a0d0a663c991522f552ea" - -[[package]] -name = "rocksdb" -version = "0.20.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "015439787fce1e75d55f279078d33ff14b4af5d93d995e8838ee4631301c8a99" -dependencies = [ - "libc", - "librocksdb-sys", -] - -[[package]] -name = "rstar" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f39465655a1e3d8ae79c6d9e007f4953bfc5d55297602df9dc38f9ae9f1359a" -dependencies = [ - "heapless", - "num-traits", - "smallvec", -] - -[[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 = "rustls" -version = "0.20.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fff78fc74d175294f4e83b28343315ffcfb114b156f0185e9741cb5570f50e2f" -dependencies = [ - "log", - "ring", - "sct", - "webpki", -] - -[[package]] -name = "rustls-pemfile" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d194b56d58803a43635bdc398cd17e383d6f71f9182b9a192c127ca42494a59b" -dependencies = [ - "base64 0.21.0", -] - -[[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 = "salsa20" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213" -dependencies = [ - "cipher", -] - -[[package]] -name = "scopeguard" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" - -[[package]] -name = "scratch" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1792db035ce95be60c3f8853017b3999209281c24e2ba5bc8e59bf97a0c590c1" - -[[package]] -name = "scrypt" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0516a385866c09368f0b5bcd1caff3366aace790fcd46e2bb032697bb172fd1f" -dependencies = [ - "password-hash", - "pbkdf2", - "salsa20", - "sha2", -] - -[[package]] -name = "sct" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" -dependencies = [ - "ring", - "untrusted", -] - -[[package]] -name = "semver" -version = "1.0.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed" -dependencies = [ - "serde", -] - -[[package]] -name = "send_wrapper" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" - -[[package]] -name = "serde" -version = "1.0.160" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb2f3770c8bce3bcda7e149193a069a0f4365bda1fa5cd88e03bca26afc1216c" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_derive" -version = "1.0.160" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291a097c63d8497e00160b166a967a4a79c64f3facdd01cbd7502231688d77df" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.14", -] - -[[package]] -name = "serde_json" -version = "1.0.96" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "057d394a50403bcac12672b2b18fb387ab6d289d957dab67dd201875391e52f1" -dependencies = [ - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "serde_path_to_error" -version = "0.1.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7f05c1d5476066defcdfacce1f52fc3cae3af1d3089727100c02ae92e5abbe0" -dependencies = [ - "serde", -] - -[[package]] -name = "serde_urlencoded" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" -dependencies = [ - "form_urlencoded", - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "sha-1" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5058ada175748e33390e40e872bd0fe59a19f265d0158daa551c5a88a76009c" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - -[[package]] -name = "sha1" -version = "0.10.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - -[[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 = "shlex" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3" - -[[package]] -name = "signal-hook-registry" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" -dependencies = [ - "libc", -] - -[[package]] -name = "slab" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" -dependencies = [ - "autocfg", -] - -[[package]] -name = "smallvec" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" - -[[package]] -name = "socket2" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" -dependencies = [ - "libc", - "winapi", -] - -[[package]] -name = "spin" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" - -[[package]] -name = "spin" -version = "0.9.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" -dependencies = [ - "lock_api", -] - -[[package]] -name = "stable_deref_trait" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" - -[[package]] -name = "storekey" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "475592c1aa8849fa7874777c9df46aa93ffc47851c7c60bee88b1745a1adb893" -dependencies = [ - "byteorder", - "serde", - "thiserror", -] - -[[package]] -name = "subtle" -version = "2.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" - -[[package]] -name = "surrealdb" -version = "1.0.0-beta.9+20230402" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f02e7f6cba9dcb779fe13984a064b7f68e398425355430dcf7184fc4abfc0f97" -dependencies = [ - "addr", - "any_ascii", - "argon2", - "async-channel", - "async-executor", - "async-recursion", - "bcrypt", - "bigdecimal", - "bung", - "chrono", - "dmp", - "flume", - "futures", - "futures-concurrency", - "fuzzy-matcher", - "geo", - "indexmap", - "lexicmp", - "log", - "md-5", - "nanoid", - "nom", - "once_cell", - "pbkdf2", - "pharos", - "rand", - "regex", - "reqwest", - "rocksdb", - "rustls", - "scrypt", - "semver", - "serde", - "serde_json", - "sha-1", - "sha2", - "storekey", - "surrealdb-derive", - "thiserror", - "tokio", - "tokio-stream", - "tokio-tungstenite", - "tracing", - "trice", - "ulid", - "url", - "uuid", - "wasm-bindgen-futures", - "ws_stream_wasm", -] - -[[package]] -name = "surrealdb-derive" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e0f2a75e22417f587cf23a5efa9f680f4002b8655b8481a01ee5e787f15d82b" -dependencies = [ - "quote", - "syn 1.0.109", -] - -[[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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcf316d5356ed6847742d036f8a39c3b8435cac10bd528a4bd461928a6ab34d5" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "sync_wrapper" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" - -[[package]] -name = "tap" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" - -[[package]] -name = "termcolor" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" -dependencies = [ - "winapi-util", -] - -[[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.14", -] - -[[package]] -name = "thread_local" -version = "1.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" -dependencies = [ - "cfg-if", - "once_cell", -] - -[[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 = "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 = "tokio" -version = "1.27.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0de47a4eecbe11f498978a9b29d792f0d2692d1dd003650c24c76510e3bc001" -dependencies = [ - "autocfg", - "bytes", - "libc", - "mio", - "num_cpus", - "parking_lot", - "pin-project-lite", - "signal-hook-registry", - "socket2", - "tokio-macros", - "windows-sys", -] - -[[package]] -name = "tokio-macros" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61a573bdc87985e9d6ddeed1b3d864e8a302c847e40d647746df2f1de209d1ce" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.14", -] - -[[package]] -name = "tokio-rustls" -version = "0.23.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59" -dependencies = [ - "rustls", - "tokio", - "webpki", -] - -[[package]] -name = "tokio-stream" -version = "0.1.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fb52b74f05dbf495a8fba459fdc331812b96aa086d9eb78101fa0d4569c3313" -dependencies = [ - "futures-core", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "tokio-tungstenite" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54319c93411147bced34cb5609a80e0a8e44c5999c93903a81cd866630ec0bfd" -dependencies = [ - "futures-util", - "log", - "rustls", - "tokio", - "tokio-rustls", - "tungstenite", - "webpki", -] - -[[package]] -name = "tokio-util" -version = "0.7.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5427d89453009325de0d8f342c9490009f76e999cb7672d77e46267448f7e6b2" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "pin-project-lite", - "tokio", - "tracing", -] - -[[package]] -name = "toml" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" -dependencies = [ - "serde", -] - -[[package]] -name = "tower" -version = "0.4.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" -dependencies = [ - "futures-core", - "futures-util", - "pin-project", - "pin-project-lite", - "tokio", - "tower-layer", - "tower-service", - "tracing", -] - -[[package]] -name = "tower-http" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f873044bf02dd1e8239e9c1293ea39dad76dc594ec16185d0a1bf31d8dc8d858" -dependencies = [ - "bitflags", - "bytes", - "futures-core", - "futures-util", - "http", - "http-body", - "http-range-header", - "httpdate", - "mime", - "mime_guess", - "percent-encoding", - "pin-project-lite", - "tokio", - "tokio-util", - "tower-layer", - "tower-service", -] - -[[package]] -name = "tower-layer" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" - -[[package]] -name = "tower-service" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" - -[[package]] -name = "tracing" -version = "0.1.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" -dependencies = [ - "cfg-if", - "log", - "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", -] - -[[package]] -name = "trice" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61aa4cd1c1dca57255b92cb9e53d5b3ac5a22da6d8a63045337eb3da1a065d43" -dependencies = [ - "js-sys", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "try-lock" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" - -[[package]] -name = "tungstenite" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30ee6ab729cd4cf0fd55218530c4522ed30b7b6081752839b68fcec8d0960788" -dependencies = [ - "base64 0.13.1", - "byteorder", - "bytes", - "http", - "httparse", - "log", - "rand", - "rustls", - "sha1", - "thiserror", - "url", - "utf-8", - "webpki", -] - -[[package]] -name = "typenum" -version = "1.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" - -[[package]] -name = "ulid" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13a3aaa69b04e5b66cc27309710a569ea23593612387d67daaf102e73aa974fd" -dependencies = [ - "rand", - "serde", -] - -[[package]] -name = "unicase" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" -dependencies = [ - "version_check", -] - -[[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.8" -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", -] - -[[package]] -name = "unicode-width" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" - -[[package]] -name = "untrusted" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" - -[[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", -] - -[[package]] -name = "urlencoding" -version = "2.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8db7427f936968176eaa7cdf81b7f98b980b18495ec28f1b5791ac3bfe3eea9" - -[[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.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b55a3fef2a1e3b3a00ce878640918820d3c51081576ac657d23af9fc7928fdb" -dependencies = [ - "atomic", - "getrandom", - "serde", - "wasm-bindgen", -] - -[[package]] -name = "vcpkg" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" - -[[package]] -name = "version_check" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" - -[[package]] -name = "waker-fn" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca" - -[[package]] -name = "want" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" -dependencies = [ - "log", - "try-lock", -] - -[[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.84" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b" -dependencies = [ - "cfg-if", - "wasm-bindgen-macro", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.84" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9" -dependencies = [ - "bumpalo", - "log", - "once_cell", - "proc-macro2", - "quote", - "syn 1.0.109", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-futures" -version = "0.4.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f219e0d211ba40266969f6dbdd90636da12f75bee4fc9d6c23d1260dadb51454" -dependencies = [ - "cfg-if", - "js-sys", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.84" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.84" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", - "wasm-bindgen-backend", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.84" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" - -[[package]] -name = "wasm-streams" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bbae3363c08332cadccd13b67db371814cd214c2524020932f0804b8cf7c078" -dependencies = [ - "futures-util", - "js-sys", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", -] - -[[package]] -name = "web-sys" -version = "0.3.61" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "webpki" -version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bd" -dependencies = [ - "ring", - "untrusted", -] - -[[package]] -name = "webpki-roots" -version = "0.22.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c71e40d7d2c34a5106301fb632274ca37242cd0c9d3e64dbece371a40a2d87" -dependencies = [ - "webpki", -] - -[[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.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" -dependencies = [ - "windows-targets 0.48.0", -] - -[[package]] -name = "windows-sys" -version = "0.45.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" -dependencies = [ - "windows-targets 0.42.2", -] - -[[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_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.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.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.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.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.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 = "winreg" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" -dependencies = [ - "winapi", -] - -[[package]] -name = "ws_stream_wasm" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7999f5f4217fe3818726b66257a4475f71e74ffd190776ad053fa159e50737f5" -dependencies = [ - "async_io_stream", - "futures", - "js-sys", - "log", - "pharos", - "rustc_version", - "send_wrapper", - "thiserror", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", -] - -[[package]] -name = "wyz" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" -dependencies = [ - "tap", -] - -[[package]] -name = "zeroize" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a0956f1ba7c7909bfb66c2e9e4124ab6f6482560f6628b5aaeba39207c9aad9" - -[[package]] -name = "zstd-sys" -version = "2.0.8+zstd.1.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5556e6ee25d32df2586c098bbfa278803692a20d0ab9565e049480d52707ec8c" -dependencies = [ - "cc", - "libc", - "pkg-config", -] diff --git a/Cargo.toml b/Cargo.toml index 386f9c1..c779f04 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,24 +1,23 @@ [package] name = "mize" -version = "0.1.0" +version = "0.1.1" edition = "2021" -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - [dependencies] -axum = { version = "0.6.1", features = ["ws", "headers"] } -axum-extra = { version = "0.4.2", features = ["spa"] } -axum-macros = "0.3.0" -colored = "2.0.0" -derive_more = "0.99.17" -futures-util = "0.3.24" -itertools = "0.10.5" -lazy_static = "1.4.0" -serde = "1.0.152" -serde_json = "1.0.91" -surrealdb = { version = "1.0.0-beta.7", features = ["kv-rocksdb"] } -tokio = {version = "1.21.0", features = ["full"]} -tokio-stream = "0.1.9" -toml = "0.5.10" -tower-http = "0.3.5" -uuid = "1.3.0" +#axum = { version = "0.6.1", features = ["ws", "headers"] } +#axum-extra = { version = "0.4.2", features = ["spa"] } +#axum-macros = "0.3.0" +#colored = "2.0.0" +#derive_more = "0.99.17" +#futures-util = "0.3.24" +#itertools = "0.10.5" +#lazy_static = "1.4.0" +#rmp-serde = "1.1.1" +#rmpv = { version = "1.0.0", features = ["serde", "with-serde"] } +#serde = "1.0.152" +#serde_json = "1.0.91" +#tokio = {version = "1.21.0", features = ["full"]} +#tokio-stream = "0.1.9" +#toml = "0.5.10" +#tower-http = "0.3.5" +#uuid = "1.3.0" diff --git a/errors.toml b/errors.toml deleted file mode 100644 index 66fcdcf..0000000 --- a/errors.toml +++ /dev/null @@ -1,107 +0,0 @@ - -[[error]] -code = 11 -category = "don't know yet" -message = "Something went wrong. //TODO: give this error it's own category and code." - -[[error]] -category = "data_storage" -code = 28 -message = "Something went wrong in the data storage." - -[[error]] -code = 29 -category = "data_storage:surrealdb_error" -message = "Something went wrong internally with the data-storage (surrealdb/rocksdb): {}" - -[[error]] -code = 30 -category = "data_storage:surrealdb_error" -message = "Could not create data_storeage at {}" - -[[error]] -code = 31 -category = "data_storage:surrealdb_error" -message = "No item with id 0. There definetly should be one" - -[[error]] -code = 32 -category = "data_storage" -message = "item {} was not found in storage" - -[[error]] -code = 100 -category = "don't know yet" -message = "You can't delete item number 0. This item contains mandatory Config for the Server." - -[[error]] -code = 101 -category = "key_missing::item0::num_of_items" -message = "num_of_items missing in item0" - -[[error]] -code = 102 -category = "key_missing::item0::next_free_id" -message = "next_free_id missing in item0" - -[[error]] -message = "_commit missing in item0" -code = 103 -category = "key_missing::item0::_commit" - -[[error]] -message = "_commit missing" -code = 103 -category = "key_missing::_commit" - -[[error]] -code = 104 -category = "data_storage::index_not_found" -message = "could not read index of item" - -[[error]] -code = 105 -category = "don't know yet" -message = "_commit not 8 bytes long" - -[[error]] -code = 106 -category = "parse_error" -message = "error while parsing to an int" - -[[error]] -code = 107 -category = "faulty_message" -message = "some error with message sent to the server" - -[[error]] -code = 108 -category = "faulty_message" -message = "There was not metadata in a message, that should have some." - -[[error]] -code = 109 -category = "faulty_message" -message = "something that should be utf8 valid was not" - -[[error]] -code = 111 -category = "faulty_update" -message = "mize-commit can't be updated manually" - -[[error]] -code = 113 -category = "don't know yet" -message = "module header not a String" - -[[error]] -code = 114 -category = "error with error system" -message = "the error with code {} was not found in the errors.toml file" - -[[error]] -code = 115 -category = "WebSocket Error" -message = "Error reviecing a message from the WebSocket" - - diff --git a/js-client b/js-client index 53c3b6c..ad865da 160000 --- a/js-client +++ b/js-client @@ -1 +1 @@ -Subproject commit 53c3b6cc38c13519ef6c6e50f3144e71192a9b82 +Subproject commit ad865dac9b82538d44094d44dfda337df53fbd3b diff --git a/proto-spec.md b/proto-spec.md deleted file mode 100644 index 79eb80d..0000000 --- a/proto-spec.md +++ /dev/null @@ -1,15 +0,0 @@ - -# The miZe Protocol - -Simple Messages that are sent between client and server via WebSockets or unix sockets. - -## A Message - - -## Commands - -### From client to server -- - -### From server to client - diff --git a/src/error.rs b/src/error.rs deleted file mode 100644 index b1dd554..0000000 --- a/src/error.rs +++ /dev/null @@ -1,254 +0,0 @@ - -use std::collections::HashMap; -use std::fmt::format; -use std::string::FromUtf8Error; -use toml::Value; -use colored::Colorize; - -use serde::{Serialize, Deserialize}; -use serde_json::Value as JsonValue; -use toml; - -use crate::server::proto::{self, JsonMessage}; -use crate::error::proto::ErrMessage; -use crate::server::proto::MizeMessage; -use crate::server::Peer; - -lazy_static::lazy_static! { - pub static ref ERRORS: HashMap = parse_errors(); -} - -fn parse_errors() -> HashMap{ - let mut map = HashMap::new(); - let binding = include_str!("../errors.toml") - .parse::() - .expect("Error pasting errors.toml file to Toml."); - - let toml_error = binding.get("error") - .expect("Error getting error table from errors.toml file for Error handling"); - - if let Value::Array(error_arr) = toml_error { - for err in error_arr { - - let code: u32 = if let Value::Integer(code) = err.get("code") - .expect("some error object in errors.toml has no code field.") { - u32::try_from(*code).expect(&format!("Error converting the error code {} &i64 to u32", code)) - } else { - panic!("code value exists in errors.toml, but is not an Integer") - }; - - let message = if let Value::String(message) = err.get("message") - .unwrap_or(&Value::String("".to_string())) {message.to_string()} else { - panic!("message value exists in errors.toml on error obect with code {}, but is not a String", code) - }; - - let category = if let Value::String(category) = err.get("category") - .expect(&format!("the error object in errors.toml with code {} has no category field", code)) {category.to_string()} else { - panic!("category value exists in errors.toml on error obect with code {}, but is not a String", code) - }; - - let error = MizeError{code, message, category, extra_msg: Vec::new(), caused_by_msg: None, code_location: None}; - - map.insert(code, error); - } - } else { - panic!("errors.toml File wrong. error path is not an array") - } - - return map; -} - - -#[derive(Debug, Clone, Serialize, Deserialize)] -pub struct MizeError { - pub category: String, - pub code: u32, - pub message: String, - pub extra_msg: Vec, - pub caused_by_msg: Option, - pub code_location: Option, -} - -#[derive(Debug, Clone, Serialize, Deserialize)] -pub struct CausedByMessage { - client_id: u64, - msg: Box, -} - -#[derive(Debug, Clone, Serialize, Deserialize)] -pub struct MizeCodeLocation { - file: String, - line: u32, - column: u32, -} - -impl From<&std::panic::Location <'_>> for MizeCodeLocation { - fn from(panic_location: &std::panic::Location) -> MizeCodeLocation { - let file = panic_location.file().to_string(); - let line = panic_location.line(); - let column = panic_location.column(); - MizeCodeLocation {file, line, column} - } -} - -impl MizeError { - #[track_caller] - pub fn new(code: u32) -> MizeError { - let caller_location = std::panic::Location::caller(); - - if let Some(err_ref) = ERRORS.get(&code) { - let mut err = err_ref.clone(); - err.code_location = Some(caller_location.into()); - return err; - } else { - return MizeError { - category: "error with error system".to_string(), - code: 114, - message: format!("The error with code {} was not found in the Errors that where imported from the errors.toml file at build time.", code), - extra_msg: Vec::new(), - caused_by_msg: None, - code_location: Some(caller_location.into()), - }; - } - } - - pub fn extra_msg(mut self, msg: E) -> MizeError - where E: std::fmt::Display - { - self.extra_msg.push(format!("{}", msg)); - return self; - } - - pub fn format(mut self, values: Vec<&str>) -> MizeError { - let count = 0; - for val in values { - self.message += &(" FORMAT_".to_string() + &format!("{}", count) + ": " + val) - } - return self; - } - - fn set_msg(self, msg: MizeMessage, origin: Peer) -> MizeError { - MizeError::new(11).extra_msg("in set_msg TODO!!") - } - - fn send(self) -> MizeError{ - self - } - - fn add_to_err_item(self) -> MizeError { - self - } - - fn write_to_stderr(self) -> MizeError { - eprintln!("[{}] {}", "ERROR".red(), self.to_json()); - self - } - - pub fn handle(self) -> MizeError { - return self.send().add_to_err_item().write_to_stderr(); - } - - pub fn is_critical(self){ - panic!("Aborting because of a critical Error") - } - - pub fn to_json(&self) -> JsonValue{ - if let Ok(string) = serde_json::to_string(self) { - if let Ok(json) = serde_json::from_str(&string) { - return json; - } else { - return serde_json::json!({ - "category": "error with error system", - "code": 114, - "message": "error converting a String to a JsonValue for the ErrMsg", - }) - } - } else { - return serde_json::json!({ - "category": "error with error system", - "code": 114, - "message": "error converting an MizeError to String", - }) - } - } - - pub fn to_json_message(self) -> JsonMessage { - proto::JsonMessage::ErrMsg( - ErrMessage{ - err: self, - } - ) - } -} - -pub trait MizeResultExtension { - fn extra_msg(self, msg: E) -> Result - where E: std::fmt::Display - ; - fn handle(self) -> Result; - - fn is_critical(self) -> T; -} - -impl MizeResultExtension for Result { - fn extra_msg(mut self, msg: E) -> Result - where E: std::fmt::Display - { - match self { - Err(ref mut e) => { - e.extra_msg.push(format!("{}", msg)); - return self; - }, - Ok(something) => Ok(something), - } - } - fn handle(self) -> Result { - match self { - Err(e) => { - Err(e.send().add_to_err_item().write_to_stderr()) - }, - Ok(something) => Ok(something) - } - } - fn is_critical(self) -> T { - self.expect("Aborting because of a critical Error") - } -} - -impl From for MizeError { - #[track_caller] - fn from(utf_err: FromUtf8Error) -> MizeError{ - let caller_location = std::panic::Location::caller(); - - let mut err = MizeError::new(109).extra_msg(format!("From std::string::FromUtf8Error: {}", utf_err)); - err.code_location = Some(caller_location.into()); - return err; - } -} - -impl From for MizeError { - #[track_caller] - fn from(sur_err: surrealdb::error::Db) -> MizeError { - let caller_location = std::panic::Location::caller(); - - let mut err = MizeError::new(129).extra_msg(format!("From surrealdb Error: {}", sur_err)); - err.code_location = Some(caller_location.into()); - return err; - } -} - -impl From for MizeError { - #[track_caller] - fn from(serde_err: serde_json::Error) -> MizeError { - let caller_location = std::panic::Location::caller(); - - let mut err = MizeError::new(11).extra_msg(format!("From an serde_json::Error: {}", serde_err)); - err.code_location = Some(caller_location.into()); - return err; - } -} - - - - - diff --git a/src/hyper-server.rs b/src/hyper-server.rs deleted file mode 100644 index 08d00ea..0000000 --- a/src/hyper-server.rs +++ /dev/null @@ -1,34 +0,0 @@ - -use std::convert::Infallible; -use std::net::SocketAddr; -use hyper::{Body, Request, Response, Server}; -use hyper::service::{make_service_fn, service_fn}; -use hyper::body::Bytes; - -#[tokio::main] -async fn hyper_server() { - // Construct our SocketAddr to listen on... - let addr = SocketAddr::from(([127, 0, 0, 1], 3000)); - - // And a MakeService to handle each connection... - let make_service = make_service_fn(|_conn| async { - Ok::<_, Infallible>(service_fn(handle)) - }); - - // Then bind and serve... - let server = Server::bind(&addr).serve(make_service); - - // And run forever... - if let Err(e) = server.await { - eprintln!("server error: {}", e); - } -} - -async fn handle(req: Request) -> Result, Infallible> { - let (mut sender, _body) = Body::channel(); - sender.send_data(Bytes::from("sending from the sender\n")); - sender.abort(); - println!("{:?}", req.body()); - //println!("{:?}", Body::to_bytes()); - Ok(Response::new(Body::from("hi"))) -} diff --git a/src/integrated_types/async.rs b/src/integrated_types/async.rs deleted file mode 100644 index e69de29..0000000 diff --git a/src/integrated_types/keep_same.rs b/src/integrated_types/keep_same.rs deleted file mode 100644 index e69de29..0000000 diff --git a/src/integrated_types/sync.rs b/src/integrated_types/sync.rs deleted file mode 100644 index e69de29..0000000 diff --git a/src/integrated_types/test_same.rs b/src/integrated_types/test_same.rs deleted file mode 100644 index 5806f2e..0000000 --- a/src/integrated_types/test_same.rs +++ /dev/null @@ -1,2 +0,0 @@ - -pub fn main(){} diff --git a/src/lib.rs b/src/lib.rs deleted file mode 100644 index f7d7655..0000000 --- a/src/lib.rs +++ /dev/null @@ -1,13 +0,0 @@ - -#![ allow( warnings ) ] - -static PROTO_VERSION: u8 = 1; - -pub mod server; -pub mod error; -pub mod integrated_types { - pub mod test_same; -} - - - diff --git a/src/main.rs b/src/main.rs deleted file mode 100644 index 4f14961..0000000 --- a/src/main.rs +++ /dev/null @@ -1,91 +0,0 @@ - -#![ allow( warnings ) ] - -extern crate mize; - -static HELP_MESSAGE: &str = "\ -Usage: - mize-server [options] [command] [options for command] - -Available Commands: - run starts the server - help prints this help message - version prints the version - import imports a file as a item of type file into the server - -Available options - -h --help prints this help message - -v --version prints the version - -f --folder the mize-server-folder -"; - -//some flags e.g: "--file /tmp" can require that the next argument belongs to them instead of being -//the command -static FLAGS_WITH_ARGUMENTS: [&str; 2] = ["--folder", "-f"]; - -static AVAILABLE_COMMANDS: [&str; 6] = ["run", "help", "version", "import-js", "import-render", "import"]; - -static AVAILABLE_FLAGS: [&str; 4] = ["--version", "--help", "--folder", "-f"]; -//static AVAILABLE_ONE_LETTER_FLAGS: [&str; 2] = ["v", "h"]; - -static VERSION_MESSAGE: &str = "\ -Version: 0 -"; - - -fn main() { - /* - * WHAT IT DOES - * - get the arguments passed to the programm - * - * - sort out the flags for the main programm and the args for the comand - * - in "mize -h -u --lol server --file=/tmp --folder /home" the flags for the main programm would be ["-h","-u","--lol"] - * - and the args for the command would be ["server", "--file=/tmp --folder /home"] - * - * - get the command to "run" - * - in "mize -h -u --lol server --file=/tmp" it would be "server" - * - * - "run" the command and pass the options and subcommands to it - * - */ - - //### get the arguments passed to the programm - let args: Vec = std::env::args().collect(); - - //### sort out the flags for the main program and the args for the command - let mut main_flags:Vec = Vec::new(); - let mut command= String::from(""); - let mut command_args = Vec::new(); - - for i in 1..args.len() { - if args[i].chars().next().unwrap() == '-' { - main_flags.push(args[i].clone()); - // i != 0 bcs what if the programm name is in FLAGS_WITH_ARGUMENTS for some reason? - } else if i != 0 && FLAGS_WITH_ARGUMENTS.contains(&&args[i -1][..]) { - main_flags.push(args[i].clone()); - - //#### get the command to "run" - } else if AVAILABLE_COMMANDS.contains(&&args[i][..]){ - command = args[i].clone(); - for a in i..args.len(){ - command_args.push(args[a].clone()); - } - break; - } else { - println!("Command \"{}\" not found!!\n", args[i]); - println!("{}", HELP_MESSAGE); - std::process::exit(1); - } - } - - //#### "run" the command and pass the options and subcommands to it - match &command[..] { - "run" => mize::server::run_server(args), - "import" => mize::server::server_utils::import(args), - "help" => println!("{}", HELP_MESSAGE), - "version" => println!("{}", VERSION_MESSAGE), - _ => {println!("Command not found!!\n"); println!("{}", HELP_MESSAGE);}, - } - -} - diff --git a/src/server.rs b/src/server.rs deleted file mode 100644 index 8dce319..0000000 --- a/src/server.rs +++ /dev/null @@ -1,656 +0,0 @@ - - -pub mod server_utils; -pub mod itemstore; - -pub mod proto; - -//use futures_util::lock::Mutex; -use futures_util::{FutureExt, StreamExt, SinkExt}; -use std::collections::HashMap; -use std::boxed::Box; -use std::path::Path; -use crate::error; -use crate::error::MizeError; -use crate::error::ERRORS; -use crate::server::proto::MizeMessage; -use crate::server::proto::MizeId; -use crate::server::proto::Update; -use crate::server::proto::update_thread; -use crate::error::MizeResultExtension; - -use serde_json::Value as JsonValue; -use serde::{Serialize, Deserialize}; -use uuid::Uuid; -use std::str::FromStr; -use std::borrow::Cow; - -use tokio::sync::mpsc::{Sender, channel, Receiver}; -use tokio_stream::wrappers::ReceiverStream; -use std::alloc::handle_alloc_error; -use std::fs; -use std::sync::Arc; -use tokio::sync::Mutex; -use tokio::sync::mpsc; - -use self::itemstore::Itemstore; - -use axum_extra::routing::SpaRouter; -use axum::Router; -use axum::routing::{get, get_service}; -use std::net::SocketAddr; -use axum::response::{IntoResponse, Html}; -use axum::extract::ws::{Message, WebSocket, WebSocketUpgrade, CloseFrame}; -use axum::extract::{State, self}; -use axum::http::{StatusCode, Uri, Response, self}; -use axum::http::header::{HeaderName, HeaderValue, HeaderMap}; -use tower_http::services::{ServeDir, ServeFile}; - -static SERVER_PORT: u16 = 9432; - -//static API_PATH_STRING: &str = "$api"; -static SOCKET_CHANNEL_SIZE: usize = 200; -static UPDATE_CHANNEL_SIZE: usize = 200; - -// max file sizez in the mize/data folder (in bytes) -static MAX_INDEX_FILE_SIZE: usize = 1_800_000; -static MAX_FIELDS_FILE_SIZE: usize = 2_600_000; -static MAX_KEYS_FILE_SIZE: usize = 30_000_000; -static MAX_DATA_FILE_SIZE: usize = 3_000_000_000; - - -//static HELP_MESSAGE: &str = "\ -//Usage: - //mize-server server [options] -// -//Available options - //-h --help prints this help message - //-v --version prints the version - //--folder= mize-folder: where mize stores all it's stuff. -//"; - -//some flags e.g: "--file /tmp" can require that the next argument belongs to them instead of being -//the command -//static FLAGS_WITH_ARGUMENTS: [&str; 0] = []; - -//static AVAILABLE_COMMANDS: [&str; 3] = ["run", "help", "version"]; - -//static AVAILABLE_FLAGS: [&str; 2] = ["--version", "--help"]; -//static AVAILABLE_ONE_LETTER_FLAGS: [&str; 2] = ["v", "h"]; - -//static VERSION_MESSAGE: &str = "\ -//Version: 0 -//"; - -#[derive(Clone, Debug)] -pub enum Peer { - Client(Client), //the client id - Module(Module), //Module_name - Upstream(Upstream), //a hostname Type, but for now just a string -} - -impl Peer { - pub async fn send (&self, message: T) where T: Into{ - let message: proto::MizeMessage = message.into(); - match self { - Peer::Client(client) => {client.tx.send(message).await;}, - Peer::Module(module) => {module.tx.send(message).await;}, - Peer::Upstream(_) => {}, - } - } - pub fn get_id(&self) -> u64{ - match self { - Peer::Client(client) => client.id, - Peer::Module(module) => module.client_id, - Peer::Upstream(_) => 0, - } - } -} - -#[derive(Clone, Debug)] -pub struct Upstream { - id: Uuid, -} - -#[derive(Clone, Debug)] -pub struct Client { -// rx: UnboundedReceiverStream>, - tx: Sender, - id: u64, -} - -#[derive(Clone, Debug)] -pub struct Module { - tx: Sender, - name: String, - client_id: u64, - kind: ModuleKind, - registered_types: Vec, -} - -#[derive(Clone, Debug)] -pub enum ModuleKind { - Rust(), - Python(), - JS(), - Lua(), - - //connects to ws server - Extern(), -} - -#[derive(Deserialize, Serialize, Debug)] -pub struct Render { - #[serde(rename="type")] - render_type: RenderType, - webroot: String, - name: String, - main: String, - folder: String, -} - -#[derive(Deserialize, Serialize, Debug)] -pub enum RenderType { - #[serde(rename="json-ui")] - JsonUi, - #[serde(rename="webcomponent")] - WebComponent, -} - -trait SendMize where T: Into { - fn send(&self, msg: T); -} - -impl SendMize for Sender where MizeMessage: From { - fn send(&self, msg: T){ - self.send(msg.into()); - } -} - -//pub struct Upstream maybe???? ... I'd say later.... - - -// A collection of all the things, that most functions need -#[derive(Clone)] -pub struct Mutexes { - next_free_client_id: Arc>, - clients: Arc>>, - modules: Arc>>, - subs: Arc>>>, - renders: Arc>>, - //maybe a list of upstream servers?? - itemstore: Arc>, - mize_folder: String, - server_uuid: Uuid, - update_tx: mpsc::Sender<(Update, Peer)>, -} - -impl Mutexes { - pub fn clone(mutexes: &Mutexes) -> Mutexes { - Mutexes { - next_free_client_id: Arc::clone(&mutexes.next_free_client_id), - clients: Arc::clone(&mutexes.clients), - modules: Arc::clone(&mutexes.modules), - renders: Arc::clone(&mutexes.renders), - subs: Arc::clone(&mutexes.subs), - mize_folder: mutexes.mize_folder.clone(), - itemstore: Arc::clone(&mutexes.itemstore), - server_uuid: mutexes.server_uuid, - update_tx: mutexes.update_tx.clone(), - } - } -} - -#[tokio::main] -pub async fn run_server(args: Vec) { - /* - * WHAT IT DOES - * - */ - - // - //### get the mize_folder - let mut mize_folder = String::new(); - for i in 1..args.len() { - if args[i].contains('=') { - let split: Vec<_> = args[i].split('=').collect(); - if split[0] == "--folder" { - mize_folder += split[1]; - } - } - } - - - let (server_uuid, itemstore, renders) = init_server(mize_folder.clone()).await.extra_msg("Could not init server").handle().is_critical(); - - // the channel to send updates to, that are then handeled in another thread - let (update_tx, update_rx) = mpsc::channel::<(Update, Peer)>(UPDATE_CHANNEL_SIZE); - - // Collection of all the things, that most functions need - let mutexes: Mutexes = Mutexes { - next_free_client_id: Arc::new(Mutex::new(0)), - clients: Arc::new(Mutex::new(Vec::new())), - subs: Arc::new(Mutex::new(HashMap::new())), - modules: Arc::new(Mutex::new(Vec::new())), - renders: Arc::new(Mutex::new(renders)), - itemstore: Arc::new(Mutex::new(itemstore)), - mize_folder: mize_folder.clone(), - server_uuid, - update_tx, - }; - - // the update handling task - let update_mutexes = mutexes.clone(); - tokio::spawn(async move { - proto::update_thread(update_rx, update_mutexes).await.handle().extra_msg("update thread crashed").is_critical(); - }); - - - //listen on the local unix socket - //local_socket_server(mize_folder); - - //run the webserver - axum_server(mize_folder, mutexes).await; -} - - -async fn axum_server(mize_folder: String, mutexes: Mutexes) { - /* - * - * - */ - - //### Main Endpoints: - //## any number (with "-" in them) is interpreted as an item id - //## $api/socket/id - //## $api/rest/ - - let mutexes_clone = Mutexes::clone(&mutexes); - - let serve_client = get_service(ServeDir::new("js-client/src")).handle_error(handle_error); - - let mut app = Router::new() - .route("/api/socket", get(websocket_handler)) - .route("/api/render/:id", get(get_render_main)) -// .route("/$api/file", get(get_file_handler)) -// .merge(SpaRouter::new("/$api/client", "js-client/src").index_file("main.html")) - .nest_service("/api/client", serve_client) - .with_state(mutexes.clone()) - .fallback(render_item); - - let renders = mutexes.renders.lock().await; - - for render in &*renders { - match render.render_type { - RenderType::JsonUi => {}, - RenderType::WebComponent => { - let url_path = String::from("/api/render/") + &render.name + "/webroot"; - let file_path = mutexes.mize_folder.clone() + "/mr/" + &render.folder[..] + "/" + &render.webroot.clone()[..]; - let serve_dir = get_service(ServeDir::new(&file_path)).handle_error(handle_error); - - app = app.nest_service(&url_path, serve_dir); - }, - } - } - drop(renders); - - let addr = SocketAddr::from(([0, 0, 0, 0], SERVER_PORT)); -// tracing::debug!("listening on {}", addr); - axum::Server::bind(&addr) - .serve(app.into_make_service()) - .await - .unwrap(); - -} - -async fn handle_error(_err: std::io::Error) -> impl IntoResponse { - (StatusCode::INTERNAL_SERVER_ERROR, "Something went wrong...") -} - -async fn render_item(uri: Uri) -> impl IntoResponse { - Html(fs::read_to_string("js-client/src/main.html").unwrap()) -} - -//#[axum_macros::debug_handler] -async fn get_render_main(extract::Path(id): extract::Path, State(mutexes): State) -> http::Response { - let renders = &*mutexes.renders.lock().await; - - let render = renders.iter().filter(|&render| render.name == id).nth(0) - .unwrap_or(renders.iter().filter(|&render| render.name == "mize-mmejs").nth(0).expect("mize-mmejs")); - - let file_path = mutexes.mize_folder.clone() + "/mr/" + &render.folder + "/" + &render.main; - - match render.render_type { - RenderType::JsonUi => { - return Response::builder() - .header("content-type", "application/json") - .status(StatusCode::OK) - .body(fs::read_to_string(file_path).unwrap()).unwrap(); - }, - RenderType::WebComponent => { - return Response::builder() - .header("content-type", "application/javascript") - .status(StatusCode::OK) - .body(fs::read_to_string(file_path).unwrap()).unwrap(); - }, - } -} - -async fn websocket_handler( - ws: WebSocketUpgrade, - State(mutexes): State, - headers: HeaderMap, -) -> impl IntoResponse { - ws.on_upgrade(|socket| handle_websocket_connection(socket, mutexes, headers)) -} - -async fn handle_websocket_connection( - socket: WebSocket, - mutexes: Mutexes, - headers: HeaderMap, -){ - let (mut socket_tx, mut socket_rx) = socket.split(); - let (msg_tx, msg_rx): (Sender, Receiver) = mpsc::channel(SOCKET_CHANNEL_SIZE); - - let mut msg_rx = ReceiverStream::new(msg_rx); - - // check if mize-module header exists - let origin = if let Some(mod_header_val) = headers.get("mize-module"){ - - let mut mods = mutexes.modules.lock().await; - let mut client_id = mutexes.next_free_client_id.lock().await; - let mut module = Module{ - tx: msg_tx.clone(), - client_id: *client_id, - name: String::from("tmp"), - kind: ModuleKind::Extern(), - registered_types: Vec::new(), - }; - - *client_id += 1; - - if let Ok(name) = mod_header_val.to_str() { - module.name = name.to_string(); - } else { - let err = MizeError::new(113) - .extra_msg("The mize-module Header could not be decoded into a String."); - - msg_tx.send(proto::MizeMessage::Json(err.to_json_message())).await; - return; - }; - println!("module {} connected", module.name); - mods.push(module.clone()); - drop(mods); - Peer::Module(module) - - } else { - let mut cli = mutexes.clients.lock().await; - let mut client_id = mutexes.next_free_client_id.lock().await; - let client = Client{tx: msg_tx.clone(), id: *client_id}; - cli.push(client.clone()); - *client_id += 1; - drop(cli); - Peer::Client(client) - }; - - // Forwarding messages - let myorigin = origin.clone(); - let mymutexes = mutexes.clone(); - tokio::spawn(async move { - while let Some(msg) = msg_rx.next().await { - match msg { - proto::MizeMessage::Json(json_msg) => { - if let Ok(msg) = serde_json::to_string(&json_msg) { - let result = socket_tx.send(Message::Text(msg.clone())).await; - if let Err(e) = result { - println!("Client no longer Connected: {:?}", e); - remove_peer(myorigin.clone(), mymutexes.clone()).await; - } else { - println!("SENDING: {}", msg); - } - } else { - let err: MizeError = MizeError::new(11).extra_msg("error while serializing a json message").handle(); - if let Ok(text) = serde_json::to_string(&err.to_json()){ - socket_tx.send(Message::Text(text)); - } else { - MizeError::new(11).extra_msg("not even being able to serialize an error, while failing to serializing a message").handle(); - } - } - } - proto::MizeMessage::Bin(bin_msg) => { - socket_tx.send(Message::Binary(bin_msg.raw)).await; - } - proto::MizeMessage::Pong() => { - socket_tx.send(Message::Pong(Vec::new())).await; - } - proto::MizeMessage::Close((num, reason)) => { - println!("SENDING Close message"); - socket_tx.send(Message::Close(Some(CloseFrame{code: num, reason: Cow::Owned(reason)}))).await; - } - } - } - }); - - // Reading messages - while let Some(result) = socket_rx.next().await { - let msg = if let Ok(msg) = result {msg} else { - let err = MizeError::new(115).extra_msg("TCP Connection Closed"); - remove_peer(origin.clone(), mutexes.clone()); - return; - }; - match msg { - Message::Binary(b) => { - println!("Recieved a Binary Message. Those are not implemented yet.") - }, - - - Message::Text(text) => { - println!("GOT: {}", text); - let json_msg: proto::JsonMessage = serde_json::from_str(&text).expect("error parsing json"); - if let Err(err) = proto::handle_json_msg(json_msg, origin.clone(), mutexes.clone()).await { - let err_msg: MizeMessage = err.handle().into(); - origin.send(err_msg).await; - }; - }, - - Message::Close(inner) => { - match inner { - Some(CloseFrame{code, reason}) => { - origin.send(MizeMessage::Close((code, reason.into_owned()))).await; - }, - None => { - origin.send(MizeMessage::Close((1000, "You didn't send a Close Reason".to_owned()))).await; - } - }; - - println!("Close from Client"); - remove_peer(origin.clone(), mutexes.clone()).await; - } - - - Message::Ping(_) => { - msg_tx.send(MizeMessage::Pong()); - }, - - - Message::Pong(_) => { - let err = MizeError::new(11) - .extra_msg("unhandeld WebSocket-Message type: Pong") - .handle(); - msg_tx.send(proto::MizeMessage::Json(err.to_json_message())).await; - }, - - }; - }; -} - -fn load_mr(mize_folder: String) -> Result, MizeError> { - //load modules and renders - - let mr_folders = std::fs::read_dir(mize_folder.clone() + "/mr") - .expect("error reading the modules-renders dir in the mize-folder") - .filter(|entry| entry.as_ref().unwrap().file_type().unwrap().is_dir()); - - let mut renders: Vec = Vec::new(); - - for mr_folder in mr_folders { - - let mr_folder = match mr_folder { - Err(_) => {MizeError::new(11).extra_msg("Error unwrapping DirEntry").handle(); continue;}, - Ok(idk) => idk, - }; - - let mr_string = match fs::read_to_string(format!("{}/mize.toml", mr_folder.path().display())) { - Err(_) => {MizeError::new(11).extra_msg("Error parsing mize.toml file to a toml string").handle(); continue;}, - Ok(idk) => idk, - }; - - let mut mr_data = match mr_string.parse::() { - Err(_) => {MizeError::new(11).extra_msg("Error parsing mize.toml string to toml::Value").handle(); continue;}, - Ok(idk) => idk, - }; - - if let Some(local_renders) = mr_data.get_mut("render") { - if let Some(arr) = local_renders.as_array_mut(){ - //add folder to local_renders - for mut el in arr.iter_mut() { - if let Some(table) = el.as_table_mut(){ - table.insert("folder".to_owned(), toml::Value::String(mr_folder.file_name().into_string().unwrap())); - table.insert("type".to_owned(), toml::Value::String("json-ui".to_owned())); - table.insert("webroot".to_owned(), toml::Value::String("".to_owned())); - } - - let render = match Render::deserialize(el.clone()) { - Ok(render) => render, - Err(err) => {MizeError::new(11).extra_msg(&format!("{}", err)).handle(); continue;} - }; - - renders.push(render); - } - } - } - - if let Some(local_webcomponents) = mr_data.get_mut("webcomponent") { - if let Some(arr) = local_webcomponents.as_array_mut(){ - //add folder to local_renders - for mut el in arr.iter_mut() { - if let Some(table) = el.as_table_mut(){ - table.insert("folder".to_owned(), toml::Value::String(mr_folder.file_name().into_string().unwrap())); - table.insert("type".to_owned(), toml::Value::String("webcomponent".to_owned())); - } - - let render = match Render::deserialize(el.clone()) { - Ok(render) => render, - Err(err) => {MizeError::new(11).extra_msg(&format!("{}", err)).handle(); continue;} - }; - - renders.push(render); - } - } - } - - } - - return Ok((renders)); -} - -async fn init_server(mize_folder: String) -> Result<(Uuid, Itemstore, Vec), MizeError> { - /* - * This function initializes the server. - * - create a mize folder if not there yet - * - get or generate the uuid for the server - * - load the renders and modules from the /mr folder - * - create a surrealdb::Datastore inside the /db folder - * - */ - - let server_uuid; - - //create mize.toml with id inside in folder if net yet done - match fs::read_to_string(format!("{}/mize.toml", mize_folder)) { - Err(err) => { - match err.kind() { - std::io::ErrorKind::NotFound => { - //create the file with new uuid - server_uuid = uuid::Uuid::new_v4(); - let mut toml_val = toml::Value::Table(toml::map::Map::new()); - toml_val.as_table_mut() - .ok_or(MizeError::new(11))? - .insert("uuid".to_owned(), toml::Value::String(server_uuid.to_string())); - - fs::write(format!("{}/mize.toml", mize_folder), toml::to_string(&toml_val) - .map_err(|e| MizeError::new(11).extra_msg(e))?) - .map_err(|e| MizeError::new(11).extra_msg(e))?; - - } - _ => { - server_uuid = uuid::Uuid::new_v4(); - Err(err) - .map_err(|e| MizeError::new(11).extra_msg(e)) - .extra_msg("Could not read /mize.toml file")?; - } - } - }, - Ok(toml_string) => { - let mut toml_val = toml_string.parse::().map_err(|e| MizeError::new(11).extra_msg(e))?; - - if let Some(uuid) = toml_val.get("uuid") { - server_uuid = Uuid::from_str(uuid.as_str().ok_or(MizeError::new(11))?) - .map_err(|e| MizeError::new(11).extra_msg(e))?; - } else { - //generate uuid and write that to toml file - server_uuid = uuid::Uuid::new_v4(); - toml_val.as_table_mut().ok_or(MizeError::new(11))?.insert("uuid".to_owned(), toml::Value::String(server_uuid.to_string())); - - fs::write(format!("{}/mize.toml", mize_folder), toml::to_string(&toml_val) - .map_err(|e| MizeError::new(11).extra_msg(e))?) - .map_err(|e| MizeError::new(11).extra_msg(e))?; - } - }, - }; - - // create the itemstore - let itemstore = crate::server::itemstore::Itemstore::new(mize_folder.clone() + "/db").await.expect("error creating itemstore"); - - // load the modules and renders from /mr - let renders = load_mr(mize_folder.clone()) - .map_err(|e| MizeError::new(11)) - .extra_msg("Error loading Modules and Renders")?; - - return Ok((server_uuid, itemstore, renders)); -} - -pub async fn remove_peer(origin: Peer, mutexes: Mutexes) { - match origin { - Peer::Client(ref client) => { - //remove client from client list - let mut clients = mutexes.clients.lock().await; - let index = match clients.iter() - .position(|client_iter| client_iter.id == client.id) - .ok_or(MizeError::new(11).extra_msg("A Client disconected, that had never connected......")){ - Ok(index) => index, - Err(err) => { - let msg: MizeMessage = err.into(); - origin.send(msg); - return; - }, - }; - clients.remove(index); - return; - }, - Peer::Module(module) => { - //remove module from module list - let mut modules = mutexes.modules.lock().await; - let index = modules.iter() - .position(|module_iter| module_iter.client_id == module.client_id) - .expect("A Module disconected, that had never connected....."); - modules.remove(index); - println!("Close from Module"); - return; - } - Peer::Upstream(_) => { - return; - } - } -} - diff --git a/src/server/itemstore.rs b/src/server/itemstore.rs deleted file mode 100644 index 13b8ec2..0000000 --- a/src/server/itemstore.rs +++ /dev/null @@ -1,231 +0,0 @@ - -use std::net::ToSocketAddrs; -use std::{io, fmt::format, vec}; -use surrealdb::kvs::{Datastore, Key, Val}; -use itertools::Itertools; -use crate::error; -use crate::error::MizeError; -use crate::server::proto::{self}; -use crate::server::Mutexes; -use crate::server::Peer; - -use serde_json::Value as JsonValue; -use serde::{Serialize, Deserialize}; - -use super::proto::{Delta, MizeId}; - -// The struct to do the storage and updates to it -// is responsible, that no illegal states can occur in the storage, by using transactions -// currently it's just a surrealdb Datastore. should be replaced by a completely custom File-System in the future. -pub struct Itemstore { - db: Datastore, -} - -#[derive(Debug, Clone, Serialize, Deserialize)] -pub struct Item { - #[serde(flatten)] - pub json: JsonValue, -} - -pub struct Array { -} - -//later -//pub struct Map { -//} - -//pub struct Table { -//} - -impl Item { - pub fn get_id(&self) -> Result { - if let JsonValue::Object(ob) = &self.json{ - if let Some(id_val) = ob.get("__item__") { - if let JsonValue::String(id) = id_val { - return Ok(id.to_string()) - } else { - return Err(MizeError::new(11).extra_msg("mize-id field in an item was not a String")); - } - } else { - return Err(MizeError::new(11).extra_msg("There was no mize-id field in an item")); - } - } else { - return Err(MizeError::new(11).extra_msg("An Item was not a JsonValue::Object")); - } - } - - pub fn apply_delta(&mut self, delta: Delta) -> Result<(), MizeError> { - //println!("DELTA: {:?}", delta); - for (path, value) in delta.delta { - let mut to_replace = &mut self.json; - let mut counter = path.len() as i32; - for name in path { - counter -= 1; - -// if let Some(inner) = to_replace.get(&name) { -// to_replace = inner - -// } else if let JsonValue::Object(ob) = to_replace { - //let mut new_map = JsonValue::Object(serde_json::Map::new()); - //ob.insert(name, new_map); - //to_replace = &mut new_map; -// } else { -// return Err(MizeError::new(11) -// .extra_msg("Error applying a Delta to an Item. The path could not be followed.")); -// } - - - //on last iteration - if counter == 0 { - if value.is_none() { - if to_replace.is_object() { - to_replace.as_object_mut().ok_or(MizeError::new(11))?.remove(&name); - return Ok(()) - } - } - } - - to_replace = if to_replace.get_mut(&name).is_some() { - to_replace.get_mut(&name).ok_or(MizeError::new(11))? - - } else if to_replace.is_object() { - // when path does not exist - - let mut new_map = JsonValue::Object(serde_json::Map::new()); - to_replace.as_object_mut().ok_or(MizeError::new(11))?.insert(name.clone(), new_map); - to_replace.get_mut(&name).ok_or(MizeError::new(11))? - - } else { - - return Err(MizeError::new(11) - .extra_msg("Error applying a Delta to an Item. The path could not be followed.")); - }; - - } - - // replace with value from the delta - *to_replace = value.into(); - } - - //println!("After applying a Delta, {}", self.json); - return Ok(()) - } - - pub fn from_bytes(vec: Vec) -> Result { - let string = String::from_utf8(vec)?; - let item = serde_json::from_str(&string)?; - return Ok(item); - } -} - -impl Itemstore { - pub async fn new(path: String) -> Result { - //println!("PATH of DB: {}", path); - let ds = Datastore::new(&(String::from("file://") + &path[..])[..]).await - .map_err(|e| MizeError::new(30).extra_msg(format!("surrealdb Error: {}", e)).extra_msg(format!("Trying to create at Location: {}", path)))?; - - let mut tr = ds.transaction(true, false).await?; - - match tr.get(MizeId::zero().into_bytes()).await { - Ok(Some(val)) => println!("Item 0 already created"), - Ok(None) => { - let data = serde_json::json!({ - "num_of_items": 1, - "next_free_id": 1, - "__commit__": 0, - "__type__": "mize-main", - "__item__": "0" - }); - - tr.set(MizeId::zero().into_bytes(), data.to_string()).await?; - tr.commit().await?; - }, - - Err(e) => {return Err(MizeError::from(e))}, - }; - return Ok(Itemstore {db:ds}); - } - - pub async fn create(&self, mut item: Item, mutexes: Mutexes, origin: Peer) -> Result { - let mut tr = self.db.transaction(true, false).await?; - - //get next_free_id - let json: JsonValue = serde_json::from_str(&String::from_utf8(tr.get(MizeId::zero().into_bytes()).await?.ok_or(MizeError::new(31))?) - .map_err(|_| MizeError::new(11))?) - .map_err(|_| MizeError::new(11))?; - - let new_id_u64: u64 = json.get("next_free_id").ok_or(MizeError::new(11))?.as_u64().ok_or(MizeError::new(11))?; - let new_id = MizeId::new(format!("{}", new_id_u64)); - - let num_of_items: u64 = json.get("num_of_items").ok_or(MizeError::new(11))?.as_u64().ok_or(MizeError::new(11))?; - - let new_next_id = new_id_u64 +1; - let new_num = num_of_items + 1; - - //add mize-id field to item - //let delta: Delta = serde_json::from_str(&format!("[[[\"__item__\"], \"{}\"]]", new_id))?; - let mut delta = Delta::new(); - delta.append(vec!["__item__"], serde_json::json!(new_id_u64)); - item.apply_delta(delta)?; - - tr.set(new_id.clone().into_bytes(), item.json.to_string()).await?; - - tr.commit().await?; - - //handle update to item0 - let mut delta_item0: Delta = Delta::new(); - delta_item0.append(vec!["num_of_items"], serde_json::json!(new_num)); - delta_item0.append(vec!["next_free_id"], serde_json::json!(new_next_id)); - - proto::handle_update(vec![(proto::MizeId::new(format!("0")), delta_item0)], origin, mutexes.clone()).await?; - - return Ok(new_id); - } - - - pub async fn update(&self, id: MizeId, delta: Delta) -> Result<(), MizeError>{ - let mut tr = self.db.transaction(true, true).await?; - - let item_bytes: Vec = tr.get(id.clone().into_bytes()).await? - .ok_or(MizeError::new(11) - .extra_msg("The Item an update should be applied to does not exist."))?; - - let mut item = Item::from_bytes(item_bytes)?; - - item.apply_delta(delta)?; - //println!("after applying delta: {:?}", item); - - tr.set(id.into_bytes(), serde_json::to_string(&item)?).await?; - - tr.commit().await?; - return Ok(()); - } - - - - pub async fn delete(&self, id: MizeId) -> Result<(), error::MizeError>{ - let mut tr = self.db.transaction(true, true).await?; - - tr.del(id.into_bytes()).await?; - - tr.commit().await?; - - return Ok(()); - } - - - pub async fn get(&self, id: MizeId) -> Result { - let mut tr = self.db.transaction(false, false).await?; - - let item_res = tr.get(id.clone().into_bytes()).await?; - if let Some(item_vec) = item_res { - let item_str: String = String::from_utf8(item_vec).map_err(|_|MizeError::new(11))?; - let item: JsonValue = serde_json::from_str(&item_str).map_err(|_|MizeError::new(11))?; - return Ok(Item { json: item }) - } else { - return Err(MizeError::new(32).format(vec![&format!("{:?}", id)])); - } - return Err(MizeError::new(11)); - } -} - diff --git a/src/server/proto.rs b/src/server/proto.rs deleted file mode 100644 index 67aade7..0000000 --- a/src/server/proto.rs +++ /dev/null @@ -1,470 +0,0 @@ -use derive_more::From; -use futures_util::stream::select_all::Iter; -use serde::de::Error; -use serde_json::json; -use serde::de::Visitor; -use serde::de; - -use std::time::Duration; -//use std::panic::update_hook; -use std::vec; -use std::collections::HashMap; - -use crate::server::itemstore; -use crate::server::Mutexes; -use crate::server::Peer; -use crate::error; -use crate::server::Client; -use std::sync::Arc; -use futures_util::stream::Collect; -use tokio::sync::{Mutex, mpsc}; -use crate::server; -use crate::error::MizeError; -use crate::server::itemstore::Item; -use crate::server::proto; -use axum::extract::ws::CloseFrame; - -use serde_json::Value as JsonValue; -use serde::{Serialize, Deserialize}; - -//###//=================================================== -//all the structs and enums -#[derive(From, Debug, Clone)] -pub enum MizeMessage { - Json(JsonMessage), - Bin(BinMessage), - Pong(), - Close((u16, String)), -} - - -#[derive(Debug, Clone)] -pub struct BinMessage { - pub raw: Vec, -} - -#[derive(From, Debug, Clone, Serialize, Deserialize)] -pub struct ErrMessage { - //pub cat: String, - pub err: MizeError, -} - -//enum variant and a struct for every cmd a good idea??? -#[derive(From, Debug, Clone, Serialize, Deserialize)] -#[serde(tag = "cmd")] -pub enum JsonMessage { - #[serde(rename="err")] - ErrMsg(ErrMessage), - #[serde(rename="item.get")] - Get(GetItemMessage), - #[serde(rename="item.get-sub")] - GetSub(GetSubMessage), - #[serde(rename="item.give")] - Give(GiveItemMessage), - #[serde(rename="item.create")] - Create(CreateItemMessage), - #[serde(rename="item.created-id")] - CreatedId(CreatedIdMessage), - #[serde(rename="item.delete")] - Delete(DeleteItemMessage), - #[serde(rename="item.sub")] - Sub(SubItemMessage), - #[serde(rename="item.unsub")] - Unsub(UnsubItemMessage), - #[serde(rename="item.update-req")] - UpdateRequest(UpdateRequestMessage), - #[serde(rename="item.update")] - Update(UpdateMessage), -} - -#[derive(Debug, Clone, Serialize, Deserialize)] -pub struct GetItemMessage { - //pub cat: String, - //cmd: String, - #[serde(flatten)] - id: MizeId, -} - -#[derive(Debug, Clone, Serialize, Deserialize)] -pub struct GetSubMessage { - //pub cat: String, - //cmd: String, - #[serde(flatten)] - id: MizeId, -} - -#[derive(Debug, Clone, Serialize, Deserialize)] -pub struct GiveItemMessage { - //pub cat: String, - //cmd: String, - #[serde(flatten)] - id: MizeId, - item: Item, -} - -#[derive(Debug, Clone, Serialize, Deserialize)] -pub struct CreateItemMessage { - //pub cat: String, - //cmd: String, - item: Item, -} - -#[derive(Debug, Clone, Serialize, Deserialize)] -pub struct CreatedIdMessage { - //pub cat: String, - //cmd: String, - #[serde(flatten)] - id: MizeId, -} - -#[derive(Debug, Clone, Serialize, Deserialize)] -pub struct DeleteItemMessage { - //pub cat: String, - //cmd: String, - #[serde(flatten)] - id: MizeId, -} - -#[derive(Debug, Clone, Serialize, Deserialize)] -pub struct SubItemMessage { - //pub cat: String, - //cmd: String, - #[serde(flatten)] - id: MizeId, -} - -#[derive(Debug, Clone, Serialize, Deserialize)] -pub struct UnsubItemMessage { - //pub cat: String, - //cmd: String, - #[serde(flatten)] - id: MizeId, -} - -#[derive(Debug, Clone, Serialize, Deserialize)] -pub struct UpdateRequestMessage { - //pub cat: String, - //cmd: String, - #[serde(flatten)] - id: MizeId, - #[serde(flatten)] - delta: Delta, -} - -#[derive(Debug, Clone, Serialize, Deserialize)] -pub struct UpdateMessage { - //pub cat: String, - //cmd: String, - #[serde(flatten)] - id: MizeId, - #[serde(flatten)] - delta: Delta, -} - -#[serde(from = "SerdeDelta")] -#[serde(into = "SerdeDelta")] -#[derive(Clone, Debug, Serialize, Deserialize, Default)] -pub struct Delta { - pub delta: Vec<(Path, Option)>, -} - -#[derive(Clone, Debug, Serialize, Deserialize, Default)] -pub struct SerdeDelta { - pub delta: Vec, -} - -impl From for Delta { - fn from(serde: SerdeDelta) -> Delta { - let mut delta = Delta {delta: Vec::new()}; - for SerdeDeltaEntry(path, json) in serde.delta { - delta.delta.push((path, json)); - } - return delta; - } -} - -impl From for SerdeDelta { - fn from(delta: Delta) -> SerdeDelta { - let mut serde = SerdeDelta {delta: Vec::new()}; - for (path, json) in delta.delta { - serde.delta.push(SerdeDeltaEntry(path, json)); - } - return serde; - } -} - -#[derive(Clone, Debug, Serialize, Deserialize, Default)] -pub struct SerdeDeltaEntry ( - pub Path, - #[serde(default)] - #[serde(skip_serializing_if = "Option::is_none")] - pub Option, - ); - -pub type Path = Vec; - -pub type Update = Vec<(MizeId, Delta)>; - - -#[derive(Debug, Default, Clone, Serialize, Deserialize, Eq, Hash, PartialEq)] -pub struct MizeId { - #[serde(rename="id")] - main: String, -} - -pub enum MizeIdKind<'a>{ - Module{mod_name: &'a str, id: &'a str}, - Upstream(&'a server::Peer), - Local(u64), -} - -impl MizeId { - pub fn new(main: String) -> MizeId { - MizeId { main } - } - - pub fn from_local(local: u64) -> MizeId { - MizeId::new(format!("{}", local)) - } - - pub fn into_bytes(self) -> Vec { - self.main.into_bytes() - } - - pub fn zero() -> MizeId { - MizeId::new("0".to_owned()) - } - - pub fn to_string(self) -> String { - self.main - } - - pub fn new_local(local_part: &str) -> MizeId { - MizeId { main: local_part.to_owned() } - } - - pub fn kind(&self) -> Result { - let first_char = match self.main.chars().nth(0) { - Some(ch) => ch, - None => { - return Err(MizeError::new(11).extra_msg("Couldn't get the first char from a MizeId")); - }, - }; - - if (first_char == '#'){ - let iter = self.main.chars(); - - //scip the # - let mod_name_end = iter.enumerate().find(|&r| r.1 == '#' || r.1 == '/').ok_or(MizeError::new(11))?; - - let mod_name = &self.main[0..mod_name_end.0]; - let id = &self.main[mod_name_end.0..]; - - return Ok(MizeIdKind::Module{ mod_name, id}); - - } else { - let id: u64 = match self.main.parse(){ - Ok(num) => num, - Err(_) => { - return Err(MizeError::new(11).extra_msg("Couldn't parse a local id into an integer")) - }, - }; - return Ok(MizeIdKind::Local(id)); - } - } - -} - -impl Delta { - pub fn new() -> Delta{ - Delta { delta: Vec::new() } - } - - pub fn append(&mut self, path: Vec<&str>, json: JsonValue){ - let new_path: Vec = path.into_iter().map(|e| e.to_owned()).collect(); - self.delta.push((new_path, Some(json))); - } -} - - -//###//=================================================== -//From trait implementations, to be able to treat everything as a MizeMessage that can be - -impl From for MizeMessage { - fn from(give: GiveItemMessage) -> MizeMessage { - let two: JsonMessage = give.into(); - return two.into(); - } -} - -impl From for MizeMessage { - fn from(err: MizeError) -> MizeMessage { - let hi: ErrMessage = err.into(); - let two: JsonMessage = hi.into(); - return two.into(); - } -} - -impl From for MizeMessage { - fn from(give: CreatedIdMessage) -> MizeMessage { - let two: JsonMessage = give.into(); - return two.into(); - } -} - -impl From for MizeMessage { - fn from(give: UpdateMessage) -> MizeMessage { - let two: JsonMessage = give.into(); - return two.into(); - } -} - -//###//=================================================== -// functions - -pub async fn handle_json_msg(msg: JsonMessage, origin: Peer, mutexes: Mutexes) -> Result<(), MizeError>{ - - match msg { - - JsonMessage::Get(msg) => { - match msg.id.kind()? { - //MizeId::Module { mod_name, id } => { - //TODO: get type of module with mod_name .... and then either forward msg or call - //module_get_code - //}, - - MizeIdKind::Local(id) => { - let itemstore = mutexes.itemstore.lock().await; - let response = GiveItemMessage { - id: msg.id, - item: itemstore.get(MizeId::from_local(id)).await?, - }; - origin.send(response).await; - }, - - _ => {return Err(MizeError::new(11).extra_msg("id type is not implemented"));}, - }; - return Ok(()); - }, - - - JsonMessage::GetSub(msg) => { - - //sub to item - let mut subs = mutexes.subs.lock().await; - if let Some(mut vec_ids) = subs.get_mut(&msg.id) { - vec_ids.push(origin.clone()); - } else { - subs.insert(msg.id.clone(), vec![origin.clone()]); - }; - - match msg.id.kind()? { - //MizeId::Module { mod_name, id } => { - //TODO: get type of module with mod_name .... and then either forward msg or call - //module_get_code - //}, - - MizeIdKind::Local(id) => { - let itemstore = mutexes.itemstore.lock().await; - let response = GiveItemMessage { - id: msg.id, - item: itemstore.get(MizeId::from_local(id)).await?, - }; - origin.send(response).await; - }, - - _ => {return Err(MizeError::new(11).extra_msg("id types not implemented"));}, - } - - return Ok(()); - } - - - JsonMessage::UpdateRequest(mut msg) => { - let update: Update = vec![(msg.id, msg.delta)]; - handle_update(update, origin, mutexes.clone()).await?; - -// let subs = mutexes.subs.lock().await; - -// for (id, delta) in new_update { - //send that delta to every origin that is subbed the item -// let peers = match subs.get(&id) { -// Some(vec) => vec, -// None => continue, -// }; -// let message = UpdateMessage{id, delta}; - -// for peer in peers { - //TODO: send should only take a reference -// peer.send(message.clone()).await -// } -// } - }, - - - JsonMessage::Create(msg) => { - let itemstore = mutexes.itemstore.lock().await; - let id = itemstore.create(msg.item, mutexes.clone(), origin.clone()).await?; - let response = CreatedIdMessage {id}; - - origin.send(response).await; - return Ok(()); - }, - - - JsonMessage::Delete(msg) => { - match msg.id.kind()? { - MizeIdKind::Local(id) => { - let itemstore = mutexes.itemstore.lock().await; - itemstore.delete(MizeId::from_local(id)).await?; - return Ok(()); - }, - _ => {return Err(MizeError::new(11).extra_msg("deleteng non Local items not implemented yet"));} - } - }, - - - _ => { - return Err(MizeError::new(11).extra_msg("ItemMessage cmd not handeld")); - }, - }; - return Ok(()) -} - -pub async fn handle_update(update: Update, origin: Peer, mutexes: Mutexes) -> Result<(), MizeError> { - mutexes.update_tx.send((update, origin)).await.map_err(|err| MizeError::new(11).extra_msg(format!("From SendError: {}", err))); - Ok(()) -} - -pub async fn update_thread(mut update_rx: mpsc::Receiver<(Update, Peer)>, mutexes: Mutexes) -> Result<(), MizeError> { - while let Some((update, origin)) = update_rx.recv().await { - println!("UPDATE on id: {:?}", update.iter().next().unwrap().0.main); - //TODO: run update code from modules and types - - let itemstore = mutexes.itemstore.lock().await; - let subs = mutexes.subs.lock().await; - - for (id, delta) in update { - - //update the items in the itemstore - if let MizeIdKind::Local(id) = id.kind()? { - itemstore.update(MizeId::from_local(id), delta.clone()).await?; - } else { - return Err(MizeError::new(11).extra_msg("updates to non local items are not handeld yet")); - } - - //send a update msg to subbed clients - let peers = match subs.get(&id) { - Some(hi) => hi, - None => break, - }; - let msg = UpdateMessage{id, delta}; - for peer in peers { - peer.send(msg.clone()).await; - } - } - - } - Ok(()) -} - diff --git a/src/server/server_utils.rs b/src/server/server_utils.rs deleted file mode 100644 index 04ac9e5..0000000 --- a/src/server/server_utils.rs +++ /dev/null @@ -1,28 +0,0 @@ -use std::io::{self, ErrorKind, SeekFrom}; -use std::collections::HashMap; -use std::io::prelude::*; -use std::fs; -use std::fs::File; -use std::path::Path; -use crate::error::MizeError; - -pub struct Fields{ - key: u64, - data: u64 -} - -pub struct Index{ - commit_number: u64, - //fields: Vec -} - -pub fn import(args: Vec){ - -} - -pub fn update_item(id: u64, key: String, update_string: String){ - -} - - -