landvex: Fixar och tester klara för alla komponenter
- Datafabrik: Dockerfile fix, agentorkestrering fungerar - Vision: Identify-modell, FAISS, OCR alla testade - API: Alla 7 integrationstester passerade - Upplösare: Entitetsupplösning verifierad
This commit is contained in:
Generated
+2924
@@ -0,0 +1,2924 @@
|
||||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
version = 4
|
||||
|
||||
[[package]]
|
||||
name = "aamos-command-center"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"axum",
|
||||
"chrono",
|
||||
"futures",
|
||||
"reqwest",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"sqlx",
|
||||
"tokio",
|
||||
"tower 0.4.13",
|
||||
"tower-http 0.5.2",
|
||||
"tracing",
|
||||
"tracing-subscriber",
|
||||
"uuid",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ahash"
|
||||
version = "0.8.12"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"getrandom 0.3.4",
|
||||
"once_cell",
|
||||
"version_check",
|
||||
"zerocopy",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "allocator-api2"
|
||||
version = "0.2.21"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923"
|
||||
|
||||
[[package]]
|
||||
name = "android_system_properties"
|
||||
version = "0.1.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
|
||||
dependencies = [
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "anyhow"
|
||||
version = "1.0.103"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2a4385e2e34eb35d6b3efe798b9eb88096925d87726c0798709bf56d9ed84af3"
|
||||
|
||||
[[package]]
|
||||
name = "async-trait"
|
||||
version = "0.1.89"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.118",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "atoi"
|
||||
version = "2.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f28d99ec8bfea296261ca1af174f24225171fea9664ba9003cbebee704810528"
|
||||
dependencies = [
|
||||
"num-traits",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "atomic-waker"
|
||||
version = "1.1.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
|
||||
|
||||
[[package]]
|
||||
name = "autocfg"
|
||||
version = "1.5.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53"
|
||||
|
||||
[[package]]
|
||||
name = "axum"
|
||||
version = "0.7.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f"
|
||||
dependencies = [
|
||||
"async-trait",
|
||||
"axum-core",
|
||||
"base64 0.22.1",
|
||||
"bytes",
|
||||
"futures-util",
|
||||
"http",
|
||||
"http-body",
|
||||
"http-body-util",
|
||||
"hyper",
|
||||
"hyper-util",
|
||||
"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 0.5.3",
|
||||
"tower-layer",
|
||||
"tower-service",
|
||||
"tracing",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "axum-core"
|
||||
version = "0.4.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199"
|
||||
dependencies = [
|
||||
"async-trait",
|
||||
"bytes",
|
||||
"futures-util",
|
||||
"http",
|
||||
"http-body",
|
||||
"http-body-util",
|
||||
"mime",
|
||||
"pin-project-lite",
|
||||
"rustversion",
|
||||
"sync_wrapper",
|
||||
"tower-layer",
|
||||
"tower-service",
|
||||
"tracing",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "base64"
|
||||
version = "0.21.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567"
|
||||
|
||||
[[package]]
|
||||
name = "base64"
|
||||
version = "0.22.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
|
||||
|
||||
[[package]]
|
||||
name = "base64ct"
|
||||
version = "1.8.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06"
|
||||
|
||||
[[package]]
|
||||
name = "bitflags"
|
||||
version = "2.13.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8"
|
||||
dependencies = [
|
||||
"serde_core",
|
||||
]
|
||||
|
||||
[[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 = "bumpalo"
|
||||
version = "3.20.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649"
|
||||
|
||||
[[package]]
|
||||
name = "byteorder"
|
||||
version = "1.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
|
||||
|
||||
[[package]]
|
||||
name = "bytes"
|
||||
version = "1.12.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8ae3f5d315924270530207e2a68396c3cc547f6dca3fbdca317cfb1a51edb593"
|
||||
|
||||
[[package]]
|
||||
name = "cc"
|
||||
version = "1.2.65"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e228eec9be7c17ccb640b59b36a5cd805ea2a564a4c5e162c2f659fea30d3b96"
|
||||
dependencies = [
|
||||
"find-msvc-tools",
|
||||
"shlex",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cfg-if"
|
||||
version = "1.0.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
|
||||
|
||||
[[package]]
|
||||
name = "chrono"
|
||||
version = "0.4.45"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327"
|
||||
dependencies = [
|
||||
"iana-time-zone",
|
||||
"js-sys",
|
||||
"num-traits",
|
||||
"serde",
|
||||
"wasm-bindgen",
|
||||
"windows-link",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "const-oid"
|
||||
version = "0.9.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8"
|
||||
|
||||
[[package]]
|
||||
name = "core-foundation"
|
||||
version = "0.9.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f"
|
||||
dependencies = [
|
||||
"core-foundation-sys",
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "core-foundation"
|
||||
version = "0.10.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6"
|
||||
dependencies = [
|
||||
"core-foundation-sys",
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "core-foundation-sys"
|
||||
version = "0.8.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
|
||||
|
||||
[[package]]
|
||||
name = "cpufeatures"
|
||||
version = "0.2.17"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280"
|
||||
dependencies = [
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "crc"
|
||||
version = "3.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5eb8a2a1cd12ab0d987a5d5e825195d372001a4094a0376319d5a0ad71c1ba0d"
|
||||
dependencies = [
|
||||
"crc-catalog",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "crc-catalog"
|
||||
version = "2.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "217698eaf96b4a3f0bc4f3662aaa55bdf913cd54d7204591faa790070c6d0853"
|
||||
|
||||
[[package]]
|
||||
name = "crossbeam-queue"
|
||||
version = "0.3.12"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0f58bbc28f91df819d0aa2a2c00cd19754769c2fad90579b3592b1c9ba7a3115"
|
||||
dependencies = [
|
||||
"crossbeam-utils",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "crossbeam-utils"
|
||||
version = "0.8.21"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28"
|
||||
|
||||
[[package]]
|
||||
name = "crypto-common"
|
||||
version = "0.1.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a"
|
||||
dependencies = [
|
||||
"generic-array",
|
||||
"typenum",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "data-encoding"
|
||||
version = "2.11.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a4ae5f15dda3c708c0ade84bfee31ccab44a3da4f88015ed22f63732abe300c8"
|
||||
|
||||
[[package]]
|
||||
name = "der"
|
||||
version = "0.7.10"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb"
|
||||
dependencies = [
|
||||
"const-oid",
|
||||
"pem-rfc7468",
|
||||
"zeroize",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "digest"
|
||||
version = "0.10.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
|
||||
dependencies = [
|
||||
"block-buffer",
|
||||
"const-oid",
|
||||
"crypto-common",
|
||||
"subtle",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "displaydoc"
|
||||
version = "0.2.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1ac70aa55017e108007fbaf5aa0f54b021c98f92ff8af59d42eda9da96e3dd4f"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.118",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "dotenvy"
|
||||
version = "0.15.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b"
|
||||
|
||||
[[package]]
|
||||
name = "either"
|
||||
version = "1.16.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e"
|
||||
dependencies = [
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "encoding_rs"
|
||||
version = "0.8.35"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "equivalent"
|
||||
version = "1.0.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
|
||||
|
||||
[[package]]
|
||||
name = "errno"
|
||||
version = "0.3.14"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"windows-sys 0.61.2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "etcetera"
|
||||
version = "0.8.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "136d1b5283a1ab77bd9257427ffd09d8667ced0570b6f938942bc7568ed5b943"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"home",
|
||||
"windows-sys 0.48.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "event-listener"
|
||||
version = "2.5.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0"
|
||||
|
||||
[[package]]
|
||||
name = "fastrand"
|
||||
version = "2.4.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6"
|
||||
|
||||
[[package]]
|
||||
name = "find-msvc-tools"
|
||||
version = "0.1.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582"
|
||||
|
||||
[[package]]
|
||||
name = "flume"
|
||||
version = "0.11.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "da0e4dd2a88388a1f4ccc7c9ce104604dab68d9f408dc34cd45823d5a9069095"
|
||||
dependencies = [
|
||||
"futures-core",
|
||||
"futures-sink",
|
||||
"spin",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "fnv"
|
||||
version = "1.0.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
|
||||
|
||||
[[package]]
|
||||
name = "foreign-types"
|
||||
version = "0.3.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
|
||||
dependencies = [
|
||||
"foreign-types-shared",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "foreign-types-shared"
|
||||
version = "0.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
|
||||
|
||||
[[package]]
|
||||
name = "form_urlencoded"
|
||||
version = "1.2.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf"
|
||||
dependencies = [
|
||||
"percent-encoding",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "futures"
|
||||
version = "0.3.32"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8b147ee9d1f6d097cef9ce628cd2ee62288d963e16fb287bd9286455b241382d"
|
||||
dependencies = [
|
||||
"futures-channel",
|
||||
"futures-core",
|
||||
"futures-executor",
|
||||
"futures-io",
|
||||
"futures-sink",
|
||||
"futures-task",
|
||||
"futures-util",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "futures-channel"
|
||||
version = "0.3.32"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d"
|
||||
dependencies = [
|
||||
"futures-core",
|
||||
"futures-sink",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "futures-core"
|
||||
version = "0.3.32"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d"
|
||||
|
||||
[[package]]
|
||||
name = "futures-executor"
|
||||
version = "0.3.32"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d"
|
||||
dependencies = [
|
||||
"futures-core",
|
||||
"futures-task",
|
||||
"futures-util",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "futures-intrusive"
|
||||
version = "0.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1d930c203dd0b6ff06e0201a4a2fe9149b43c684fd4420555b26d21b1a02956f"
|
||||
dependencies = [
|
||||
"futures-core",
|
||||
"lock_api",
|
||||
"parking_lot",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "futures-io"
|
||||
version = "0.3.32"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718"
|
||||
|
||||
[[package]]
|
||||
name = "futures-macro"
|
||||
version = "0.3.32"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.118",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "futures-sink"
|
||||
version = "0.3.32"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893"
|
||||
|
||||
[[package]]
|
||||
name = "futures-task"
|
||||
version = "0.3.32"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393"
|
||||
|
||||
[[package]]
|
||||
name = "futures-util"
|
||||
version = "0.3.32"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6"
|
||||
dependencies = [
|
||||
"futures-channel",
|
||||
"futures-core",
|
||||
"futures-io",
|
||||
"futures-macro",
|
||||
"futures-sink",
|
||||
"futures-task",
|
||||
"memchr",
|
||||
"pin-project-lite",
|
||||
"slab",
|
||||
]
|
||||
|
||||
[[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 = "getrandom"
|
||||
version = "0.2.17"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"libc",
|
||||
"wasi",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "getrandom"
|
||||
version = "0.3.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"libc",
|
||||
"r-efi 5.3.0",
|
||||
"wasip2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "getrandom"
|
||||
version = "0.4.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"libc",
|
||||
"r-efi 6.0.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "h2"
|
||||
version = "0.4.15"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6cb093c84e8bd9b188d4c4a8cb6579fc016968d14c99882163cd3ff402a4f155"
|
||||
dependencies = [
|
||||
"atomic-waker",
|
||||
"bytes",
|
||||
"fnv",
|
||||
"futures-core",
|
||||
"futures-sink",
|
||||
"http",
|
||||
"indexmap",
|
||||
"slab",
|
||||
"tokio",
|
||||
"tokio-util",
|
||||
"tracing",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "hashbrown"
|
||||
version = "0.14.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
|
||||
dependencies = [
|
||||
"ahash",
|
||||
"allocator-api2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "hashbrown"
|
||||
version = "0.17.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a"
|
||||
|
||||
[[package]]
|
||||
name = "hashlink"
|
||||
version = "0.8.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e8094feaf31ff591f651a2664fb9cfd92bba7a60ce3197265e9482ebe753c8f7"
|
||||
dependencies = [
|
||||
"hashbrown 0.14.5",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "heck"
|
||||
version = "0.4.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
|
||||
dependencies = [
|
||||
"unicode-segmentation",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "hex"
|
||||
version = "0.4.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
|
||||
|
||||
[[package]]
|
||||
name = "hkdf"
|
||||
version = "0.12.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7"
|
||||
dependencies = [
|
||||
"hmac",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "hmac"
|
||||
version = "0.12.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e"
|
||||
dependencies = [
|
||||
"digest",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "home"
|
||||
version = "0.5.12"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d"
|
||||
dependencies = [
|
||||
"windows-sys 0.61.2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "http"
|
||||
version = "1.4.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6970f50e31d6fc17d3fa27329444bfa74e196cf62e95052a3f6fee181dba6425"
|
||||
dependencies = [
|
||||
"bytes",
|
||||
"itoa",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "http-body"
|
||||
version = "1.0.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184"
|
||||
dependencies = [
|
||||
"bytes",
|
||||
"http",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "http-body-util"
|
||||
version = "0.1.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a"
|
||||
dependencies = [
|
||||
"bytes",
|
||||
"futures-core",
|
||||
"http",
|
||||
"http-body",
|
||||
"pin-project-lite",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "http-range-header"
|
||||
version = "0.4.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9171a2ea8a68358193d15dd5d70c1c10a2afc3e7e4c5bc92bc9f025cebd7359c"
|
||||
|
||||
[[package]]
|
||||
name = "httparse"
|
||||
version = "1.10.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87"
|
||||
|
||||
[[package]]
|
||||
name = "httpdate"
|
||||
version = "1.0.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9"
|
||||
|
||||
[[package]]
|
||||
name = "hyper"
|
||||
version = "1.10.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "55281c53a1894c864990125767da440a4e630446785086f52523b20033b74498"
|
||||
dependencies = [
|
||||
"atomic-waker",
|
||||
"bytes",
|
||||
"futures-channel",
|
||||
"futures-core",
|
||||
"h2",
|
||||
"http",
|
||||
"http-body",
|
||||
"httparse",
|
||||
"httpdate",
|
||||
"itoa",
|
||||
"pin-project-lite",
|
||||
"smallvec",
|
||||
"tokio",
|
||||
"want",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "hyper-rustls"
|
||||
version = "0.27.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "33ca68d021ef39cf6463ab54c1d0f5daf03377b70561305bb89a8f83aab66e0f"
|
||||
dependencies = [
|
||||
"http",
|
||||
"hyper",
|
||||
"hyper-util",
|
||||
"rustls",
|
||||
"tokio",
|
||||
"tokio-rustls",
|
||||
"tower-service",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "hyper-tls"
|
||||
version = "0.6.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0"
|
||||
dependencies = [
|
||||
"bytes",
|
||||
"http-body-util",
|
||||
"hyper",
|
||||
"hyper-util",
|
||||
"native-tls",
|
||||
"tokio",
|
||||
"tokio-native-tls",
|
||||
"tower-service",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "hyper-util"
|
||||
version = "0.1.20"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0"
|
||||
dependencies = [
|
||||
"base64 0.22.1",
|
||||
"bytes",
|
||||
"futures-channel",
|
||||
"futures-util",
|
||||
"http",
|
||||
"http-body",
|
||||
"hyper",
|
||||
"ipnet",
|
||||
"libc",
|
||||
"percent-encoding",
|
||||
"pin-project-lite",
|
||||
"socket2",
|
||||
"system-configuration",
|
||||
"tokio",
|
||||
"tower-service",
|
||||
"tracing",
|
||||
"windows-registry",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "iana-time-zone"
|
||||
version = "0.1.65"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470"
|
||||
dependencies = [
|
||||
"android_system_properties",
|
||||
"core-foundation-sys",
|
||||
"iana-time-zone-haiku",
|
||||
"js-sys",
|
||||
"log",
|
||||
"wasm-bindgen",
|
||||
"windows-core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "iana-time-zone-haiku"
|
||||
version = "0.1.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
|
||||
dependencies = [
|
||||
"cc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "icu_collections"
|
||||
version = "2.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c"
|
||||
dependencies = [
|
||||
"displaydoc",
|
||||
"potential_utf",
|
||||
"utf8_iter",
|
||||
"yoke",
|
||||
"zerofrom",
|
||||
"zerovec",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "icu_locale_core"
|
||||
version = "2.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29"
|
||||
dependencies = [
|
||||
"displaydoc",
|
||||
"litemap",
|
||||
"tinystr",
|
||||
"writeable",
|
||||
"zerovec",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "icu_normalizer"
|
||||
version = "2.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c56e5ee99d6e3d33bd91c5d85458b6005a22140021cc324cea84dd0e72cff3b4"
|
||||
dependencies = [
|
||||
"icu_collections",
|
||||
"icu_normalizer_data",
|
||||
"icu_properties",
|
||||
"icu_provider",
|
||||
"smallvec",
|
||||
"zerovec",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "icu_normalizer_data"
|
||||
version = "2.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "da3be0ae77ea334f4da67c12f149704f19f81d1adf7c51cf482943e84a2bad38"
|
||||
|
||||
[[package]]
|
||||
name = "icu_properties"
|
||||
version = "2.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bee3b67d0ea5c2cca5003417989af8996f8604e34fb9ddf96208a033901e70de"
|
||||
dependencies = [
|
||||
"icu_collections",
|
||||
"icu_locale_core",
|
||||
"icu_properties_data",
|
||||
"icu_provider",
|
||||
"zerotrie",
|
||||
"zerovec",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "icu_properties_data"
|
||||
version = "2.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8e2bbb201e0c04f7b4b3e14382af113e17ba4f63e2c9d2ee626b720cbce54a14"
|
||||
|
||||
[[package]]
|
||||
name = "icu_provider"
|
||||
version = "2.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "139c4cf31c8b5f33d7e199446eff9c1e02decfc2f0eec2c8d71f65befa45b421"
|
||||
dependencies = [
|
||||
"displaydoc",
|
||||
"icu_locale_core",
|
||||
"writeable",
|
||||
"yoke",
|
||||
"zerofrom",
|
||||
"zerotrie",
|
||||
"zerovec",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "idna"
|
||||
version = "1.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de"
|
||||
dependencies = [
|
||||
"idna_adapter",
|
||||
"smallvec",
|
||||
"utf8_iter",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "idna_adapter"
|
||||
version = "1.2.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714"
|
||||
dependencies = [
|
||||
"icu_normalizer",
|
||||
"icu_properties",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "indexmap"
|
||||
version = "2.14.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9"
|
||||
dependencies = [
|
||||
"equivalent",
|
||||
"hashbrown 0.17.1",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ipnet"
|
||||
version = "2.12.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2"
|
||||
|
||||
[[package]]
|
||||
name = "itoa"
|
||||
version = "1.0.18"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682"
|
||||
|
||||
[[package]]
|
||||
name = "js-sys"
|
||||
version = "0.3.103"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"futures-util",
|
||||
"wasm-bindgen",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "lazy_static"
|
||||
version = "1.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
|
||||
dependencies = [
|
||||
"spin",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "libc"
|
||||
version = "0.2.186"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66"
|
||||
|
||||
[[package]]
|
||||
name = "libm"
|
||||
version = "0.2.16"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981"
|
||||
|
||||
[[package]]
|
||||
name = "libredox"
|
||||
version = "0.1.18"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c943259e342f1e06ff2da7a83eabdfe7f92ce10262688dbf1895ff0b3e6e4652"
|
||||
dependencies = [
|
||||
"bitflags",
|
||||
"libc",
|
||||
"plain",
|
||||
"redox_syscall 0.9.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "libsqlite3-sys"
|
||||
version = "0.27.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cf4e226dcd58b4be396f7bd3c20da8fdee2911400705297ba7d2d7cc2c30f716"
|
||||
dependencies = [
|
||||
"cc",
|
||||
"pkg-config",
|
||||
"vcpkg",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "linux-raw-sys"
|
||||
version = "0.12.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53"
|
||||
|
||||
[[package]]
|
||||
name = "litemap"
|
||||
version = "0.8.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0"
|
||||
|
||||
[[package]]
|
||||
name = "lock_api"
|
||||
version = "0.4.14"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965"
|
||||
dependencies = [
|
||||
"scopeguard",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "log"
|
||||
version = "0.4.33"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad"
|
||||
|
||||
[[package]]
|
||||
name = "matchit"
|
||||
version = "0.7.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94"
|
||||
|
||||
[[package]]
|
||||
name = "md-5"
|
||||
version = "0.10.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"digest",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "memchr"
|
||||
version = "2.8.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "88904434abc2901f197fe8cc55f0445e7ded921dba5911dad2e2b39b48e663c4"
|
||||
|
||||
[[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.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e"
|
||||
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 = "1.2.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "02bd0af71c67b473010cbbc60715ee815645a4dc942899111f494b4b737d6fda"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"wasi",
|
||||
"windows-sys 0.61.2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "native-tls"
|
||||
version = "0.2.18"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "465500e14ea162429d264d44189adc38b199b62b1c21eea9f69e4b73cb03bbf2"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"log",
|
||||
"openssl",
|
||||
"openssl-probe",
|
||||
"openssl-sys",
|
||||
"schannel",
|
||||
"security-framework",
|
||||
"security-framework-sys",
|
||||
"tempfile",
|
||||
]
|
||||
|
||||
[[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 = "nu-ansi-term"
|
||||
version = "0.50.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5"
|
||||
dependencies = [
|
||||
"windows-sys 0.61.2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num-bigint-dig"
|
||||
version = "0.8.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e661dda6640fad38e827a6d4a310ff4763082116fe217f279885c97f511bb0b7"
|
||||
dependencies = [
|
||||
"lazy_static",
|
||||
"libm",
|
||||
"num-integer",
|
||||
"num-iter",
|
||||
"num-traits",
|
||||
"rand",
|
||||
"smallvec",
|
||||
"zeroize",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num-integer"
|
||||
version = "0.1.46"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f"
|
||||
dependencies = [
|
||||
"num-traits",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num-iter"
|
||||
version = "0.1.45"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
"num-integer",
|
||||
"num-traits",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num-traits"
|
||||
version = "0.2.19"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
"libm",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "once_cell"
|
||||
version = "1.21.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
|
||||
|
||||
[[package]]
|
||||
name = "openssl"
|
||||
version = "0.10.81"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "77823a27f0babb03091cb9ed9ef80af3b39dbc82f97e8fa530374b7dafd87a45"
|
||||
dependencies = [
|
||||
"bitflags",
|
||||
"cfg-if",
|
||||
"foreign-types",
|
||||
"libc",
|
||||
"openssl-macros",
|
||||
"openssl-sys",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "openssl-macros"
|
||||
version = "0.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.118",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "openssl-probe"
|
||||
version = "0.2.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe"
|
||||
|
||||
[[package]]
|
||||
name = "openssl-sys"
|
||||
version = "0.9.117"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b47e7e6bb2c38cd930d25a23b40fa52e068c10e85f3e03a7f5ba5aaca5713695"
|
||||
dependencies = [
|
||||
"cc",
|
||||
"libc",
|
||||
"pkg-config",
|
||||
"vcpkg",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "parking_lot"
|
||||
version = "0.12.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a"
|
||||
dependencies = [
|
||||
"lock_api",
|
||||
"parking_lot_core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "parking_lot_core"
|
||||
version = "0.9.12"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"libc",
|
||||
"redox_syscall 0.5.18",
|
||||
"smallvec",
|
||||
"windows-link",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "paste"
|
||||
version = "1.0.15"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a"
|
||||
|
||||
[[package]]
|
||||
name = "pem-rfc7468"
|
||||
version = "0.7.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412"
|
||||
dependencies = [
|
||||
"base64ct",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "percent-encoding"
|
||||
version = "2.3.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220"
|
||||
|
||||
[[package]]
|
||||
name = "pin-project-lite"
|
||||
version = "0.2.17"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd"
|
||||
|
||||
[[package]]
|
||||
name = "pkcs1"
|
||||
version = "0.7.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f"
|
||||
dependencies = [
|
||||
"der",
|
||||
"pkcs8",
|
||||
"spki",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pkcs8"
|
||||
version = "0.10.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7"
|
||||
dependencies = [
|
||||
"der",
|
||||
"spki",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pkg-config"
|
||||
version = "0.3.33"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e"
|
||||
|
||||
[[package]]
|
||||
name = "plain"
|
||||
version = "0.2.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6"
|
||||
|
||||
[[package]]
|
||||
name = "potential_utf"
|
||||
version = "0.1.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564"
|
||||
dependencies = [
|
||||
"zerovec",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ppv-lite86"
|
||||
version = "0.2.21"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9"
|
||||
dependencies = [
|
||||
"zerocopy",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "proc-macro2"
|
||||
version = "1.0.106"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934"
|
||||
dependencies = [
|
||||
"unicode-ident",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "quote"
|
||||
version = "1.0.46"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "r-efi"
|
||||
version = "5.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
|
||||
|
||||
[[package]]
|
||||
name = "r-efi"
|
||||
version = "6.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf"
|
||||
|
||||
[[package]]
|
||||
name = "rand"
|
||||
version = "0.8.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a"
|
||||
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 0.2.17",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "redox_syscall"
|
||||
version = "0.5.18"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d"
|
||||
dependencies = [
|
||||
"bitflags",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "redox_syscall"
|
||||
version = "0.9.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c5102a6aaa05aa011a238e178e6bca86d2cb56fc9f586d37cb80f5bca6e07759"
|
||||
dependencies = [
|
||||
"bitflags",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "reqwest"
|
||||
version = "0.12.28"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147"
|
||||
dependencies = [
|
||||
"base64 0.22.1",
|
||||
"bytes",
|
||||
"encoding_rs",
|
||||
"futures-core",
|
||||
"h2",
|
||||
"http",
|
||||
"http-body",
|
||||
"http-body-util",
|
||||
"hyper",
|
||||
"hyper-rustls",
|
||||
"hyper-tls",
|
||||
"hyper-util",
|
||||
"js-sys",
|
||||
"log",
|
||||
"mime",
|
||||
"native-tls",
|
||||
"percent-encoding",
|
||||
"pin-project-lite",
|
||||
"rustls-pki-types",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"serde_urlencoded",
|
||||
"sync_wrapper",
|
||||
"tokio",
|
||||
"tokio-native-tls",
|
||||
"tower 0.5.3",
|
||||
"tower-http 0.6.11",
|
||||
"tower-service",
|
||||
"url",
|
||||
"wasm-bindgen",
|
||||
"wasm-bindgen-futures",
|
||||
"web-sys",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ring"
|
||||
version = "0.17.14"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7"
|
||||
dependencies = [
|
||||
"cc",
|
||||
"cfg-if",
|
||||
"getrandom 0.2.17",
|
||||
"libc",
|
||||
"untrusted",
|
||||
"windows-sys 0.52.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rsa"
|
||||
version = "0.9.10"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b8573f03f5883dcaebdfcf4725caa1ecb9c15b2ef50c43a07b816e06799bb12d"
|
||||
dependencies = [
|
||||
"const-oid",
|
||||
"digest",
|
||||
"num-bigint-dig",
|
||||
"num-integer",
|
||||
"num-traits",
|
||||
"pkcs1",
|
||||
"pkcs8",
|
||||
"rand_core",
|
||||
"signature",
|
||||
"spki",
|
||||
"subtle",
|
||||
"zeroize",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rustix"
|
||||
version = "1.1.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190"
|
||||
dependencies = [
|
||||
"bitflags",
|
||||
"errno",
|
||||
"libc",
|
||||
"linux-raw-sys",
|
||||
"windows-sys 0.61.2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rustls"
|
||||
version = "0.23.41"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6b92b125634d9b795e7beca796cc790df15a7fb38323bf3196fda83292d06b1f"
|
||||
dependencies = [
|
||||
"once_cell",
|
||||
"rustls-pki-types",
|
||||
"rustls-webpki",
|
||||
"subtle",
|
||||
"zeroize",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rustls-pki-types"
|
||||
version = "1.15.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "764899a24af3980067ee14bc143654f297b22eaebfe3c7b6b211920a5a59b046"
|
||||
dependencies = [
|
||||
"zeroize",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rustls-webpki"
|
||||
version = "0.103.13"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "61c429a8649f110dddef65e2a5ad240f747e85f7758a6bccc7e5777bd33f756e"
|
||||
dependencies = [
|
||||
"ring",
|
||||
"rustls-pki-types",
|
||||
"untrusted",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rustversion"
|
||||
version = "1.0.22"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
|
||||
|
||||
[[package]]
|
||||
name = "ryu"
|
||||
version = "1.0.23"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f"
|
||||
|
||||
[[package]]
|
||||
name = "schannel"
|
||||
version = "0.1.29"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "91c1b7e4904c873ef0710c1f407dde2e6287de2bebc1bbbf7d430bb7cbffd939"
|
||||
dependencies = [
|
||||
"windows-sys 0.61.2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "scopeguard"
|
||||
version = "1.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
|
||||
|
||||
[[package]]
|
||||
name = "security-framework"
|
||||
version = "3.7.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d"
|
||||
dependencies = [
|
||||
"bitflags",
|
||||
"core-foundation 0.10.1",
|
||||
"core-foundation-sys",
|
||||
"libc",
|
||||
"security-framework-sys",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "security-framework-sys"
|
||||
version = "2.17.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6ce2691df843ecc5d231c0b14ece2acc3efb62c0a398c7e1d875f3983ce020e3"
|
||||
dependencies = [
|
||||
"core-foundation-sys",
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde"
|
||||
version = "1.0.228"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"
|
||||
dependencies = [
|
||||
"serde_core",
|
||||
"serde_derive",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_core"
|
||||
version = "1.0.228"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad"
|
||||
dependencies = [
|
||||
"serde_derive",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_derive"
|
||||
version = "1.0.228"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.118",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_json"
|
||||
version = "1.0.150"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9"
|
||||
dependencies = [
|
||||
"itoa",
|
||||
"memchr",
|
||||
"serde",
|
||||
"serde_core",
|
||||
"zmij",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_path_to_error"
|
||||
version = "0.1.20"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "10a9ff822e371bb5403e391ecd83e182e0e77ba7f6fe0160b795797109d1b457"
|
||||
dependencies = [
|
||||
"itoa",
|
||||
"serde",
|
||||
"serde_core",
|
||||
]
|
||||
|
||||
[[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 = "sha1"
|
||||
version = "0.10.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"cpufeatures",
|
||||
"digest",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sha2"
|
||||
version = "0.10.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"cpufeatures",
|
||||
"digest",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sharded-slab"
|
||||
version = "0.1.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6"
|
||||
dependencies = [
|
||||
"lazy_static",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "shlex"
|
||||
version = "2.0.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba"
|
||||
|
||||
[[package]]
|
||||
name = "signal-hook-registry"
|
||||
version = "1.4.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b"
|
||||
dependencies = [
|
||||
"errno",
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "signature"
|
||||
version = "2.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de"
|
||||
dependencies = [
|
||||
"digest",
|
||||
"rand_core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "slab"
|
||||
version = "0.4.12"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5"
|
||||
|
||||
[[package]]
|
||||
name = "smallvec"
|
||||
version = "1.15.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90"
|
||||
|
||||
[[package]]
|
||||
name = "socket2"
|
||||
version = "0.6.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "52d1cfed4120b4d927bf7c0f86d2087a4a7d6027c906d9f9d525a80573b9be51"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"windows-sys 0.61.2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "spin"
|
||||
version = "0.9.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67"
|
||||
dependencies = [
|
||||
"lock_api",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "spki"
|
||||
version = "0.7.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d"
|
||||
dependencies = [
|
||||
"base64ct",
|
||||
"der",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sqlformat"
|
||||
version = "0.2.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7bba3a93db0cc4f7bdece8bb09e77e2e785c20bfebf79eb8340ed80708048790"
|
||||
dependencies = [
|
||||
"nom",
|
||||
"unicode_categories",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sqlx"
|
||||
version = "0.7.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c9a2ccff1a000a5a59cd33da541d9f2fdcd9e6e8229cc200565942bff36d0aaa"
|
||||
dependencies = [
|
||||
"sqlx-core",
|
||||
"sqlx-macros",
|
||||
"sqlx-mysql",
|
||||
"sqlx-postgres",
|
||||
"sqlx-sqlite",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sqlx-core"
|
||||
version = "0.7.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "24ba59a9342a3d9bab6c56c118be528b27c9b60e490080e9711a04dccac83ef6"
|
||||
dependencies = [
|
||||
"ahash",
|
||||
"atoi",
|
||||
"byteorder",
|
||||
"bytes",
|
||||
"chrono",
|
||||
"crc",
|
||||
"crossbeam-queue",
|
||||
"either",
|
||||
"event-listener",
|
||||
"futures-channel",
|
||||
"futures-core",
|
||||
"futures-intrusive",
|
||||
"futures-io",
|
||||
"futures-util",
|
||||
"hashlink",
|
||||
"hex",
|
||||
"indexmap",
|
||||
"log",
|
||||
"memchr",
|
||||
"once_cell",
|
||||
"paste",
|
||||
"percent-encoding",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"sha2",
|
||||
"smallvec",
|
||||
"sqlformat",
|
||||
"thiserror",
|
||||
"tokio",
|
||||
"tokio-stream",
|
||||
"tracing",
|
||||
"url",
|
||||
"uuid",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sqlx-macros"
|
||||
version = "0.7.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4ea40e2345eb2faa9e1e5e326db8c34711317d2b5e08d0d5741619048a803127"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"sqlx-core",
|
||||
"sqlx-macros-core",
|
||||
"syn 1.0.109",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sqlx-macros-core"
|
||||
version = "0.7.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5833ef53aaa16d860e92123292f1f6a3d53c34ba8b1969f152ef1a7bb803f3c8"
|
||||
dependencies = [
|
||||
"dotenvy",
|
||||
"either",
|
||||
"heck",
|
||||
"hex",
|
||||
"once_cell",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"sha2",
|
||||
"sqlx-core",
|
||||
"sqlx-mysql",
|
||||
"sqlx-postgres",
|
||||
"sqlx-sqlite",
|
||||
"syn 1.0.109",
|
||||
"tempfile",
|
||||
"tokio",
|
||||
"url",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sqlx-mysql"
|
||||
version = "0.7.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1ed31390216d20e538e447a7a9b959e06ed9fc51c37b514b46eb758016ecd418"
|
||||
dependencies = [
|
||||
"atoi",
|
||||
"base64 0.21.7",
|
||||
"bitflags",
|
||||
"byteorder",
|
||||
"bytes",
|
||||
"chrono",
|
||||
"crc",
|
||||
"digest",
|
||||
"dotenvy",
|
||||
"either",
|
||||
"futures-channel",
|
||||
"futures-core",
|
||||
"futures-io",
|
||||
"futures-util",
|
||||
"generic-array",
|
||||
"hex",
|
||||
"hkdf",
|
||||
"hmac",
|
||||
"itoa",
|
||||
"log",
|
||||
"md-5",
|
||||
"memchr",
|
||||
"once_cell",
|
||||
"percent-encoding",
|
||||
"rand",
|
||||
"rsa",
|
||||
"serde",
|
||||
"sha1",
|
||||
"sha2",
|
||||
"smallvec",
|
||||
"sqlx-core",
|
||||
"stringprep",
|
||||
"thiserror",
|
||||
"tracing",
|
||||
"uuid",
|
||||
"whoami",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sqlx-postgres"
|
||||
version = "0.7.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7c824eb80b894f926f89a0b9da0c7f435d27cdd35b8c655b114e58223918577e"
|
||||
dependencies = [
|
||||
"atoi",
|
||||
"base64 0.21.7",
|
||||
"bitflags",
|
||||
"byteorder",
|
||||
"chrono",
|
||||
"crc",
|
||||
"dotenvy",
|
||||
"etcetera",
|
||||
"futures-channel",
|
||||
"futures-core",
|
||||
"futures-io",
|
||||
"futures-util",
|
||||
"hex",
|
||||
"hkdf",
|
||||
"hmac",
|
||||
"home",
|
||||
"itoa",
|
||||
"log",
|
||||
"md-5",
|
||||
"memchr",
|
||||
"once_cell",
|
||||
"rand",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"sha2",
|
||||
"smallvec",
|
||||
"sqlx-core",
|
||||
"stringprep",
|
||||
"thiserror",
|
||||
"tracing",
|
||||
"uuid",
|
||||
"whoami",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sqlx-sqlite"
|
||||
version = "0.7.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b244ef0a8414da0bed4bb1910426e890b19e5e9bccc27ada6b797d05c55ae0aa"
|
||||
dependencies = [
|
||||
"atoi",
|
||||
"chrono",
|
||||
"flume",
|
||||
"futures-channel",
|
||||
"futures-core",
|
||||
"futures-executor",
|
||||
"futures-intrusive",
|
||||
"futures-util",
|
||||
"libsqlite3-sys",
|
||||
"log",
|
||||
"percent-encoding",
|
||||
"serde",
|
||||
"sqlx-core",
|
||||
"tracing",
|
||||
"url",
|
||||
"urlencoding",
|
||||
"uuid",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "stable_deref_trait"
|
||||
version = "1.2.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596"
|
||||
|
||||
[[package]]
|
||||
name = "stringprep"
|
||||
version = "0.1.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7b4df3d392d81bd458a8a621b8bffbd2302a12ffe288a9d931670948749463b1"
|
||||
dependencies = [
|
||||
"unicode-bidi",
|
||||
"unicode-normalization",
|
||||
"unicode-properties",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "subtle"
|
||||
version = "2.6.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
|
||||
|
||||
[[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.118"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"unicode-ident",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sync_wrapper"
|
||||
version = "1.0.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263"
|
||||
dependencies = [
|
||||
"futures-core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "synstructure"
|
||||
version = "0.13.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.118",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "system-configuration"
|
||||
version = "0.7.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a13f3d0daba03132c0aa9767f98351b3488edc2c100cda2d2ec2b04f3d8d3c8b"
|
||||
dependencies = [
|
||||
"bitflags",
|
||||
"core-foundation 0.9.4",
|
||||
"system-configuration-sys",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "system-configuration-sys"
|
||||
version = "0.6.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4"
|
||||
dependencies = [
|
||||
"core-foundation-sys",
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tempfile"
|
||||
version = "3.27.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd"
|
||||
dependencies = [
|
||||
"fastrand",
|
||||
"getrandom 0.4.3",
|
||||
"once_cell",
|
||||
"rustix",
|
||||
"windows-sys 0.61.2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "thiserror"
|
||||
version = "1.0.69"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
|
||||
dependencies = [
|
||||
"thiserror-impl",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "thiserror-impl"
|
||||
version = "1.0.69"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.118",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "thread_local"
|
||||
version = "1.1.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tinystr"
|
||||
version = "0.8.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c8323304221c2a851516f22236c5722a72eaa19749016521d6dff0824447d96d"
|
||||
dependencies = [
|
||||
"displaydoc",
|
||||
"zerovec",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tinyvec"
|
||||
version = "1.11.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3"
|
||||
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.52.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8fc7f01b389ac15039e4dc9531aa973a135d7a4135281b12d7c1bc79fd57fffe"
|
||||
dependencies = [
|
||||
"bytes",
|
||||
"libc",
|
||||
"mio",
|
||||
"parking_lot",
|
||||
"pin-project-lite",
|
||||
"signal-hook-registry",
|
||||
"socket2",
|
||||
"tokio-macros",
|
||||
"windows-sys 0.61.2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tokio-macros"
|
||||
version = "2.7.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.118",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tokio-native-tls"
|
||||
version = "0.3.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2"
|
||||
dependencies = [
|
||||
"native-tls",
|
||||
"tokio",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tokio-rustls"
|
||||
version = "0.26.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61"
|
||||
dependencies = [
|
||||
"rustls",
|
||||
"tokio",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tokio-stream"
|
||||
version = "0.1.18"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "32da49809aab5c3bc678af03902d4ccddea2a87d028d86392a4b1560c6906c70"
|
||||
dependencies = [
|
||||
"futures-core",
|
||||
"pin-project-lite",
|
||||
"tokio",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tokio-tungstenite"
|
||||
version = "0.24.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "edc5f74e248dc973e0dbb7b74c7e0d6fcc301c694ff50049504004ef4d0cdcd9"
|
||||
dependencies = [
|
||||
"futures-util",
|
||||
"log",
|
||||
"tokio",
|
||||
"tungstenite",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tokio-util"
|
||||
version = "0.7.18"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098"
|
||||
dependencies = [
|
||||
"bytes",
|
||||
"futures-core",
|
||||
"futures-sink",
|
||||
"pin-project-lite",
|
||||
"tokio",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tower"
|
||||
version = "0.4.13"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c"
|
||||
dependencies = [
|
||||
"tower-layer",
|
||||
"tower-service",
|
||||
"tracing",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tower"
|
||||
version = "0.5.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4"
|
||||
dependencies = [
|
||||
"futures-core",
|
||||
"futures-util",
|
||||
"pin-project-lite",
|
||||
"sync_wrapper",
|
||||
"tokio",
|
||||
"tower-layer",
|
||||
"tower-service",
|
||||
"tracing",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tower-http"
|
||||
version = "0.5.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5"
|
||||
dependencies = [
|
||||
"bitflags",
|
||||
"bytes",
|
||||
"futures-util",
|
||||
"http",
|
||||
"http-body",
|
||||
"http-body-util",
|
||||
"http-range-header",
|
||||
"httpdate",
|
||||
"mime",
|
||||
"mime_guess",
|
||||
"percent-encoding",
|
||||
"pin-project-lite",
|
||||
"tokio",
|
||||
"tokio-util",
|
||||
"tower-layer",
|
||||
"tower-service",
|
||||
"tracing",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tower-http"
|
||||
version = "0.6.11"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4cfcf7e2740e6fc6d4d688b4ef00650406bb94adf4731e43c096c3a19fe40840"
|
||||
dependencies = [
|
||||
"bitflags",
|
||||
"bytes",
|
||||
"futures-util",
|
||||
"http",
|
||||
"http-body",
|
||||
"pin-project-lite",
|
||||
"tower 0.5.3",
|
||||
"tower-layer",
|
||||
"tower-service",
|
||||
"url",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tower-layer"
|
||||
version = "0.3.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e"
|
||||
|
||||
[[package]]
|
||||
name = "tower-service"
|
||||
version = "0.3.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3"
|
||||
|
||||
[[package]]
|
||||
name = "tracing"
|
||||
version = "0.1.44"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100"
|
||||
dependencies = [
|
||||
"log",
|
||||
"pin-project-lite",
|
||||
"tracing-attributes",
|
||||
"tracing-core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tracing-attributes"
|
||||
version = "0.1.31"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.118",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tracing-core"
|
||||
version = "0.1.36"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a"
|
||||
dependencies = [
|
||||
"once_cell",
|
||||
"valuable",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tracing-log"
|
||||
version = "0.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3"
|
||||
dependencies = [
|
||||
"log",
|
||||
"once_cell",
|
||||
"tracing-core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tracing-subscriber"
|
||||
version = "0.3.23"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319"
|
||||
dependencies = [
|
||||
"nu-ansi-term",
|
||||
"sharded-slab",
|
||||
"smallvec",
|
||||
"thread_local",
|
||||
"tracing-core",
|
||||
"tracing-log",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "try-lock"
|
||||
version = "0.2.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
|
||||
|
||||
[[package]]
|
||||
name = "tungstenite"
|
||||
version = "0.24.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "18e5b8366ee7a95b16d32197d0b2604b43a0be89dc5fac9f8e96ccafbaedda8a"
|
||||
dependencies = [
|
||||
"byteorder",
|
||||
"bytes",
|
||||
"data-encoding",
|
||||
"http",
|
||||
"httparse",
|
||||
"log",
|
||||
"rand",
|
||||
"sha1",
|
||||
"thiserror",
|
||||
"utf-8",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "typenum"
|
||||
version = "1.20.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20"
|
||||
|
||||
[[package]]
|
||||
name = "unicase"
|
||||
version = "2.9.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142"
|
||||
|
||||
[[package]]
|
||||
name = "unicode-bidi"
|
||||
version = "0.3.18"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5"
|
||||
|
||||
[[package]]
|
||||
name = "unicode-ident"
|
||||
version = "1.0.24"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
|
||||
|
||||
[[package]]
|
||||
name = "unicode-normalization"
|
||||
version = "0.1.25"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5fd4f6878c9cb28d874b009da9e8d183b5abc80117c40bbd187a1fde336be6e8"
|
||||
dependencies = [
|
||||
"tinyvec",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "unicode-properties"
|
||||
version = "0.1.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7df058c713841ad818f1dc5d3fd88063241cc61f49f5fbea4b951e8cf5a8d71d"
|
||||
|
||||
[[package]]
|
||||
name = "unicode-segmentation"
|
||||
version = "1.13.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8"
|
||||
|
||||
[[package]]
|
||||
name = "unicode_categories"
|
||||
version = "0.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e"
|
||||
|
||||
[[package]]
|
||||
name = "untrusted"
|
||||
version = "0.9.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
|
||||
|
||||
[[package]]
|
||||
name = "url"
|
||||
version = "2.5.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed"
|
||||
dependencies = [
|
||||
"form_urlencoded",
|
||||
"idna",
|
||||
"percent-encoding",
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "urlencoding"
|
||||
version = "2.1.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da"
|
||||
|
||||
[[package]]
|
||||
name = "utf-8"
|
||||
version = "0.7.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9"
|
||||
|
||||
[[package]]
|
||||
name = "utf8_iter"
|
||||
version = "1.0.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
|
||||
|
||||
[[package]]
|
||||
name = "uuid"
|
||||
version = "1.23.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bf80a72845275afea99e7f2b434723d3bc7e38470fcd1c7ed39a599c73319a53"
|
||||
dependencies = [
|
||||
"getrandom 0.4.3",
|
||||
"js-sys",
|
||||
"serde_core",
|
||||
"wasm-bindgen",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "valuable"
|
||||
version = "0.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65"
|
||||
|
||||
[[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.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
|
||||
|
||||
[[package]]
|
||||
name = "want"
|
||||
version = "0.3.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e"
|
||||
dependencies = [
|
||||
"try-lock",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wasi"
|
||||
version = "0.11.1+wasi-snapshot-preview1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
|
||||
|
||||
[[package]]
|
||||
name = "wasip2"
|
||||
version = "1.0.4+wasi-0.2.12"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b67efb37e106e55ce722a510d6b5f9c17f083e5fc79afc2badeb12cc313d9487"
|
||||
dependencies = [
|
||||
"wit-bindgen",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wasite"
|
||||
version = "0.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b"
|
||||
|
||||
[[package]]
|
||||
name = "wasm-bindgen"
|
||||
version = "0.2.126"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4b067c0c11094aef6b7a801c1e34a26affafdf3d051dba08456b868789aaf9a4"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"once_cell",
|
||||
"rustversion",
|
||||
"wasm-bindgen-macro",
|
||||
"wasm-bindgen-shared",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wasm-bindgen-futures"
|
||||
version = "0.4.76"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c62df1340f32221cb9c54d6a27b030e3dba64361d4a95bed55f9aacb44da291d"
|
||||
dependencies = [
|
||||
"js-sys",
|
||||
"wasm-bindgen",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wasm-bindgen-macro"
|
||||
version = "0.2.126"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "167ce5e579f6bcf889c4f7175a8a5a585de84e8ff93976ce393efa5f2837aab1"
|
||||
dependencies = [
|
||||
"quote",
|
||||
"wasm-bindgen-macro-support",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wasm-bindgen-macro-support"
|
||||
version = "0.2.126"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f3997c7839262f4ef12cf90b818d6340c18e80f263f1a94bf157d0ec4420380e"
|
||||
dependencies = [
|
||||
"bumpalo",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.118",
|
||||
"wasm-bindgen-shared",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wasm-bindgen-shared"
|
||||
version = "0.2.126"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "dc1b4cb0cc549fcf58d7dfc081778139b3d283a081644e833e84682ad71cea24"
|
||||
dependencies = [
|
||||
"unicode-ident",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "web-sys"
|
||||
version = "0.3.103"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8622dcb61c0bcc9fffa6938bed81210af2da9a7e4a1a834b2e37a59b6dfb6141"
|
||||
dependencies = [
|
||||
"js-sys",
|
||||
"wasm-bindgen",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "whoami"
|
||||
version = "1.6.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5d4a4db5077702ca3015d3d02d74974948aba2ad9e12ab7df718ee64ccd7e97d"
|
||||
dependencies = [
|
||||
"libredox",
|
||||
"wasite",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows-core"
|
||||
version = "0.62.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb"
|
||||
dependencies = [
|
||||
"windows-implement",
|
||||
"windows-interface",
|
||||
"windows-link",
|
||||
"windows-result",
|
||||
"windows-strings",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows-implement"
|
||||
version = "0.60.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.118",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows-interface"
|
||||
version = "0.59.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.118",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows-link"
|
||||
version = "0.2.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
|
||||
|
||||
[[package]]
|
||||
name = "windows-registry"
|
||||
version = "0.6.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "02752bf7fbdcce7f2a27a742f798510f3e5ad88dbe84871e5168e2120c3d5720"
|
||||
dependencies = [
|
||||
"windows-link",
|
||||
"windows-result",
|
||||
"windows-strings",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows-result"
|
||||
version = "0.4.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5"
|
||||
dependencies = [
|
||||
"windows-link",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows-strings"
|
||||
version = "0.5.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091"
|
||||
dependencies = [
|
||||
"windows-link",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows-sys"
|
||||
version = "0.48.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
|
||||
dependencies = [
|
||||
"windows-targets 0.48.5",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows-sys"
|
||||
version = "0.52.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
|
||||
dependencies = [
|
||||
"windows-targets 0.52.6",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows-sys"
|
||||
version = "0.61.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc"
|
||||
dependencies = [
|
||||
"windows-link",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows-targets"
|
||||
version = "0.48.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
|
||||
dependencies = [
|
||||
"windows_aarch64_gnullvm 0.48.5",
|
||||
"windows_aarch64_msvc 0.48.5",
|
||||
"windows_i686_gnu 0.48.5",
|
||||
"windows_i686_msvc 0.48.5",
|
||||
"windows_x86_64_gnu 0.48.5",
|
||||
"windows_x86_64_gnullvm 0.48.5",
|
||||
"windows_x86_64_msvc 0.48.5",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows-targets"
|
||||
version = "0.52.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
|
||||
dependencies = [
|
||||
"windows_aarch64_gnullvm 0.52.6",
|
||||
"windows_aarch64_msvc 0.52.6",
|
||||
"windows_i686_gnu 0.52.6",
|
||||
"windows_i686_gnullvm",
|
||||
"windows_i686_msvc 0.52.6",
|
||||
"windows_x86_64_gnu 0.52.6",
|
||||
"windows_x86_64_gnullvm 0.52.6",
|
||||
"windows_x86_64_msvc 0.52.6",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows_aarch64_gnullvm"
|
||||
version = "0.48.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
|
||||
|
||||
[[package]]
|
||||
name = "windows_aarch64_gnullvm"
|
||||
version = "0.52.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
|
||||
|
||||
[[package]]
|
||||
name = "windows_aarch64_msvc"
|
||||
version = "0.48.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
|
||||
|
||||
[[package]]
|
||||
name = "windows_aarch64_msvc"
|
||||
version = "0.52.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
|
||||
|
||||
[[package]]
|
||||
name = "windows_i686_gnu"
|
||||
version = "0.48.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
|
||||
|
||||
[[package]]
|
||||
name = "windows_i686_gnu"
|
||||
version = "0.52.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
|
||||
|
||||
[[package]]
|
||||
name = "windows_i686_gnullvm"
|
||||
version = "0.52.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
|
||||
|
||||
[[package]]
|
||||
name = "windows_i686_msvc"
|
||||
version = "0.48.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
|
||||
|
||||
[[package]]
|
||||
name = "windows_i686_msvc"
|
||||
version = "0.52.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
|
||||
|
||||
[[package]]
|
||||
name = "windows_x86_64_gnu"
|
||||
version = "0.48.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
|
||||
|
||||
[[package]]
|
||||
name = "windows_x86_64_gnu"
|
||||
version = "0.52.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
|
||||
|
||||
[[package]]
|
||||
name = "windows_x86_64_gnullvm"
|
||||
version = "0.48.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
|
||||
|
||||
[[package]]
|
||||
name = "windows_x86_64_gnullvm"
|
||||
version = "0.52.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
|
||||
|
||||
[[package]]
|
||||
name = "windows_x86_64_msvc"
|
||||
version = "0.48.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
|
||||
|
||||
[[package]]
|
||||
name = "windows_x86_64_msvc"
|
||||
version = "0.52.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
|
||||
|
||||
[[package]]
|
||||
name = "wit-bindgen"
|
||||
version = "0.57.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e"
|
||||
|
||||
[[package]]
|
||||
name = "writeable"
|
||||
version = "0.6.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4"
|
||||
|
||||
[[package]]
|
||||
name = "yoke"
|
||||
version = "0.8.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "709fe23a0424b6a435d82152b1bd3fdfb0833487d5fa90d05d42762a9891fef5"
|
||||
dependencies = [
|
||||
"stable_deref_trait",
|
||||
"yoke-derive",
|
||||
"zerofrom",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "yoke-derive"
|
||||
version = "0.8.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.118",
|
||||
"synstructure",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "zerocopy"
|
||||
version = "0.8.52"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ce1022995ff5ff5d841ad7d994facc23098cd40152f2c1d11cd607c6f530653f"
|
||||
dependencies = [
|
||||
"zerocopy-derive",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "zerocopy-derive"
|
||||
version = "0.8.52"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1ae7f38b72ec2a254e2b87ef277cf2cd4fb97cbebf944faa6f33354da0867930"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.118",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "zerofrom"
|
||||
version = "0.1.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272"
|
||||
dependencies = [
|
||||
"zerofrom-derive",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "zerofrom-derive"
|
||||
version = "0.1.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.118",
|
||||
"synstructure",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "zeroize"
|
||||
version = "1.9.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e"
|
||||
|
||||
[[package]]
|
||||
name = "zerotrie"
|
||||
version = "0.2.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0f9152d31db0792fa83f70fb2f83148effb5c1f5b8c7686c3459e361d9bc20bf"
|
||||
dependencies = [
|
||||
"displaydoc",
|
||||
"yoke",
|
||||
"zerofrom",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "zerovec"
|
||||
version = "0.11.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239"
|
||||
dependencies = [
|
||||
"yoke",
|
||||
"zerofrom",
|
||||
"zerovec-derive",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "zerovec-derive"
|
||||
version = "0.11.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.118",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "zmij"
|
||||
version = "1.0.21"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa"
|
||||
@@ -0,0 +1,20 @@
|
||||
[package]
|
||||
name = "aamos-command-center"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
[dependencies]
|
||||
axum = { version = "0.7", features = ["ws"] }
|
||||
tokio = { version = "1", features = ["full"] }
|
||||
serde = { version = "1.0", features = ["derive"] }
|
||||
serde_json = "1.0"
|
||||
sqlx = { version = "0.7", features = ["runtime-tokio", "postgres", "uuid", "chrono", "json"] }
|
||||
chrono = { version = "0.4", features = ["serde"] }
|
||||
uuid = { version = "1.0", features = ["serde", "v4"] }
|
||||
tower-http = { version = "0.5", features = ["cors", "fs"] }
|
||||
tower = "0.4"
|
||||
reqwest = { version = "0.12", features = ["json"] }
|
||||
anyhow = "1.0"
|
||||
tracing = "0.1"
|
||||
tracing-subscriber = "0.3"
|
||||
futures = "0.3"
|
||||
@@ -0,0 +1,243 @@
|
||||
use axum::{
|
||||
routing::{get, post},
|
||||
Router,
|
||||
extract::{State, Path},
|
||||
response::{Json, IntoResponse, Response},
|
||||
http::StatusCode,
|
||||
};
|
||||
use serde::{Deserialize, Serialize};
|
||||
use sqlx::PgPool;
|
||||
use std::sync::Arc;
|
||||
use tokio::sync::broadcast;
|
||||
use chrono::{DateTime, Utc};
|
||||
use tower_http::cors::CorsLayer;
|
||||
use tracing::{info, error};
|
||||
|
||||
mod models;
|
||||
mod routes;
|
||||
|
||||
use models::*;
|
||||
|
||||
#[derive(Clone)]
|
||||
struct AppState {
|
||||
db: PgPool,
|
||||
tx: broadcast::Sender<WsMessage>,
|
||||
http_client: reqwest::Client,
|
||||
}
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() -> anyhow::Result<()> {
|
||||
tracing_subscriber::fmt::init();
|
||||
|
||||
info!("Starting AAMOS Command Center...");
|
||||
|
||||
let database_url = std::env::var("DATABASE_URL")
|
||||
.unwrap_or_else(|_| "postgresql://wavult_admin:efG15aKjqgu7uotZoAiLTRBtBDMoXITxIe9Hi6EB@platform-identity-core.cvi0qcksmsfj.eu-north-1.rds.amazonaws.com:5432/amos?sslmode=disable".to_string());
|
||||
|
||||
let db = PgPool::connect(&database_url).await?;
|
||||
|
||||
// Run migrations
|
||||
let migrations = vec![
|
||||
r#"CREATE TABLE IF NOT EXISTS cc_tickets (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
ticket_number TEXT NOT NULL UNIQUE,
|
||||
tenant_id TEXT NOT NULL DEFAULT 'landvex',
|
||||
type TEXT NOT NULL,
|
||||
priority TEXT NOT NULL DEFAULT 'medium',
|
||||
status TEXT NOT NULL DEFAULT 'open',
|
||||
zoomer_id TEXT,
|
||||
mission_id TEXT,
|
||||
title TEXT NOT NULL,
|
||||
description TEXT NOT NULL,
|
||||
created_by TEXT,
|
||||
assigned_to TEXT,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
resolved_at TIMESTAMPTZ,
|
||||
metadata JSONB DEFAULT '{}'
|
||||
)"#,
|
||||
r#"CREATE TABLE IF NOT EXISTS cc_ticket_comments (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
ticket_id UUID NOT NULL REFERENCES cc_tickets(id) ON DELETE CASCADE,
|
||||
author TEXT NOT NULL,
|
||||
text TEXT NOT NULL,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
||||
)"#,
|
||||
r#"CREATE TABLE IF NOT EXISTS cc_activity_log (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
tenant_id TEXT NOT NULL DEFAULT 'landvex',
|
||||
action TEXT NOT NULL,
|
||||
entity_type TEXT NOT NULL,
|
||||
entity_id TEXT,
|
||||
user_id TEXT,
|
||||
details JSONB DEFAULT '{}',
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
||||
)"#,
|
||||
r#"CREATE TABLE IF NOT EXISTS cc_api_configs (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
tenant_id TEXT NOT NULL DEFAULT 'landvex',
|
||||
name TEXT NOT NULL,
|
||||
endpoint_url TEXT NOT NULL,
|
||||
api_key TEXT,
|
||||
api_secret TEXT,
|
||||
headers JSONB DEFAULT '{}',
|
||||
is_active BOOLEAN NOT NULL DEFAULT true,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
||||
)"#,
|
||||
r#"CREATE INDEX IF NOT EXISTS idx_tickets_tenant ON cc_tickets(tenant_id)"#,
|
||||
r#"CREATE INDEX IF NOT EXISTS idx_tickets_status ON cc_tickets(status)"#,
|
||||
r#"CREATE INDEX IF NOT EXISTS idx_tickets_priority ON cc_tickets(priority)"#,
|
||||
r#"CREATE INDEX IF NOT EXISTS idx_activity_tenant ON cc_activity_log(tenant_id, created_at)"#,
|
||||
];
|
||||
|
||||
for migration in migrations {
|
||||
sqlx::query(migration).execute(&db).await?;
|
||||
}
|
||||
|
||||
info!("Database migrations completed");
|
||||
|
||||
let (tx, _rx) = broadcast::channel::<WsMessage>(100);
|
||||
|
||||
let state = Arc::new(AppState {
|
||||
db,
|
||||
tx: tx.clone(),
|
||||
http_client: reqwest::Client::new(),
|
||||
});
|
||||
|
||||
let app = Router::new()
|
||||
// Dashboard
|
||||
.route("/api/cc/dashboard", get(routes::dashboard::get_dashboard))
|
||||
.route("/api/cc/dashboard/kpi", get(routes::dashboard::get_kpi))
|
||||
|
||||
// Economy
|
||||
.route("/api/cc/economy/overview", get(routes::economy::get_economy_overview))
|
||||
.route("/api/cc/economy/trial-balance", get(routes::economy::get_trial_balance))
|
||||
|
||||
// Journal
|
||||
.route("/api/cc/journal", get(routes::journal::get_journal).post(routes::journal::create_entry))
|
||||
|
||||
// Tickets
|
||||
.route("/api/cc/tickets", get(routes::tickets::list_tickets).post(routes::tickets::create_ticket))
|
||||
.route("/api/cc/tickets/:id", get(routes::tickets::get_ticket).put(routes::tickets::update_ticket))
|
||||
.route("/api/cc/tickets/:id/comments", get(routes::tickets::list_comments).post(routes::tickets::add_comment))
|
||||
.route("/api/cc/tickets/:id/assign", post(routes::tickets::assign_ticket))
|
||||
.route("/api/cc/tickets/:id/resolve", post(routes::tickets::resolve_ticket))
|
||||
|
||||
// Activity Log
|
||||
.route("/api/cc/activity", get(routes::activity::list_activity))
|
||||
.route("/api/cc/activity/log", post(routes::activity::log_activity))
|
||||
|
||||
// API Management
|
||||
.route("/api/cc/apis", get(routes::apis::list_apis).post(routes::apis::create_api))
|
||||
.route("/api/cc/apis/:id", get(routes::apis::get_api).put(routes::apis::update_api).delete(routes::apis::delete_api))
|
||||
.route("/api/cc/apis/:id/test", post(routes::apis::test_api))
|
||||
|
||||
// System Management
|
||||
.route("/api/cc/services", get(routes::system::get_services))
|
||||
.route("/api/cc/system/action", post(routes::system::service_action))
|
||||
|
||||
// Proxy routes
|
||||
.route("/api/cc/proxy/ledger/*path", get(proxy_ledger).post(proxy_ledger))
|
||||
.route("/api/cc/proxy/quixzoom/*path", get(proxy_quixzoom).post(proxy_quixzoom))
|
||||
.route("/api/cc/proxy/gateway/*path", get(proxy_gateway).post(proxy_gateway))
|
||||
|
||||
// WebSocket
|
||||
.route("/api/cc/ws", get(websocket_handler))
|
||||
|
||||
// Health
|
||||
.route("/api/cc/health", get(health_check))
|
||||
|
||||
.layer(CorsLayer::permissive())
|
||||
.with_state(state);
|
||||
|
||||
let listener = tokio::net::TcpListener::bind("0.0.0.0:7071").await?;
|
||||
info!("AAMOS Command Center listening on port 7071");
|
||||
|
||||
axum::serve(listener, app).await?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn health_check(State(_state): State<Arc<AppState>>) -> Json<serde_json::Value> {
|
||||
Json(serde_json::json!({
|
||||
"ok": true,
|
||||
"service": "aamos-command-center",
|
||||
"version": "0.1.0",
|
||||
"timestamp": Utc::now().to_rfc3339()
|
||||
}))
|
||||
}
|
||||
|
||||
async fn websocket_handler(
|
||||
ws: axum::extract::ws::WebSocketUpgrade,
|
||||
State(state): State<Arc<AppState>>,
|
||||
) -> Response {
|
||||
ws.on_upgrade(|socket| routes::ws::handle_socket(socket, state))
|
||||
}
|
||||
|
||||
async fn proxy_ledger(
|
||||
State(state): State<Arc<AppState>>,
|
||||
Path(path): Path<String>,
|
||||
req: axum::extract::Request,
|
||||
) -> Response {
|
||||
proxy_request(&state.http_client, "http://127.0.0.1:3250", &path, req).await
|
||||
}
|
||||
|
||||
async fn proxy_quixzoom(
|
||||
State(state): State<Arc<AppState>>,
|
||||
Path(path): Path<String>,
|
||||
req: axum::extract::Request,
|
||||
) -> Response {
|
||||
proxy_request(&state.http_client, "http://127.0.0.1:7060", &path, req).await
|
||||
}
|
||||
|
||||
async fn proxy_gateway(
|
||||
State(state): State<Arc<AppState>>,
|
||||
Path(path): Path<String>,
|
||||
req: axum::extract::Request,
|
||||
) -> Response {
|
||||
proxy_request(&state.http_client, "http://127.0.0.1:3401", &path, req).await
|
||||
}
|
||||
|
||||
async fn proxy_request(
|
||||
client: &reqwest::Client,
|
||||
base_url: &str,
|
||||
path: &str,
|
||||
req: axum::extract::Request,
|
||||
) -> Response {
|
||||
let url = format!("{}/{}", base_url, path);
|
||||
|
||||
let method = req.method().clone();
|
||||
let headers = req.headers().clone();
|
||||
let body_bytes = match axum::body::to_bytes(req.into_body(), usize::MAX).await {
|
||||
Ok(bytes) => bytes,
|
||||
Err(_) => return (StatusCode::BAD_GATEWAY, "Failed to read body").into_response(),
|
||||
};
|
||||
|
||||
let mut request = client.request(method, &url);
|
||||
|
||||
for (key, value) in headers.iter() {
|
||||
if key.as_str() != "host" {
|
||||
request = request.header(key, value);
|
||||
}
|
||||
}
|
||||
|
||||
if !body_bytes.is_empty() {
|
||||
request = request.body(body_bytes.to_vec());
|
||||
}
|
||||
|
||||
match request.send().await {
|
||||
Ok(response) => {
|
||||
let status = StatusCode::from_u16(response.status().as_u16()).unwrap_or(StatusCode::OK);
|
||||
let body = match response.bytes().await {
|
||||
Ok(bytes) => bytes.to_vec(),
|
||||
Err(_) => vec![],
|
||||
};
|
||||
(status, body).into_response()
|
||||
}
|
||||
Err(e) => {
|
||||
error!("Proxy error: {}", e);
|
||||
(StatusCode::BAD_GATEWAY, format!("Proxy error: {}", e)).into_response()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,151 @@
|
||||
use serde::{Deserialize, Serialize};
|
||||
use chrono::{DateTime, Utc};
|
||||
use uuid::Uuid;
|
||||
use sqlx::FromRow;
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
pub struct WsMessage {
|
||||
pub event: String,
|
||||
pub data: serde_json::Value,
|
||||
pub timestamp: DateTime<Utc>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize, FromRow)]
|
||||
pub struct Ticket {
|
||||
pub id: Uuid,
|
||||
pub ticket_number: String,
|
||||
pub tenant_id: String,
|
||||
pub r#type: String,
|
||||
pub priority: String,
|
||||
pub status: String,
|
||||
pub zoomer_id: Option<String>,
|
||||
pub mission_id: Option<String>,
|
||||
pub title: String,
|
||||
pub description: String,
|
||||
pub created_by: Option<String>,
|
||||
pub assigned_to: Option<String>,
|
||||
pub created_at: DateTime<Utc>,
|
||||
pub updated_at: DateTime<Utc>,
|
||||
pub resolved_at: Option<DateTime<Utc>>,
|
||||
pub metadata: serde_json::Value,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize, FromRow)]
|
||||
pub struct TicketComment {
|
||||
pub id: Uuid,
|
||||
pub ticket_id: Uuid,
|
||||
pub author: String,
|
||||
pub text: String,
|
||||
pub created_at: DateTime<Utc>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
pub struct CreateTicketRequest {
|
||||
pub r#type: String,
|
||||
pub priority: Option<String>,
|
||||
pub zoomer_id: Option<String>,
|
||||
pub mission_id: Option<String>,
|
||||
pub title: String,
|
||||
pub description: String,
|
||||
pub created_by: Option<String>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
pub struct UpdateTicketRequest {
|
||||
pub status: Option<String>,
|
||||
pub priority: Option<String>,
|
||||
pub assigned_to: Option<String>,
|
||||
pub title: Option<String>,
|
||||
pub description: Option<String>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize, FromRow)]
|
||||
pub struct ActivityLog {
|
||||
pub id: Uuid,
|
||||
pub tenant_id: String,
|
||||
pub action: String,
|
||||
pub entity_type: String,
|
||||
pub entity_id: Option<String>,
|
||||
pub user_id: Option<String>,
|
||||
pub details: serde_json::Value,
|
||||
pub created_at: DateTime<Utc>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
pub struct CreateActivityRequest {
|
||||
pub action: String,
|
||||
pub entity_type: String,
|
||||
pub entity_id: Option<String>,
|
||||
pub user_id: Option<String>,
|
||||
pub details: Option<serde_json::Value>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize, FromRow)]
|
||||
pub struct ApiConfig {
|
||||
pub id: Uuid,
|
||||
pub tenant_id: String,
|
||||
pub name: String,
|
||||
pub endpoint_url: String,
|
||||
pub api_key: Option<String>,
|
||||
pub api_secret: Option<String>,
|
||||
pub headers: serde_json::Value,
|
||||
pub is_active: bool,
|
||||
pub created_at: DateTime<Utc>,
|
||||
pub updated_at: DateTime<Utc>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
pub struct CreateApiRequest {
|
||||
pub name: String,
|
||||
pub endpoint_url: String,
|
||||
pub api_key: Option<String>,
|
||||
pub api_secret: Option<String>,
|
||||
pub headers: Option<serde_json::Value>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
pub struct DashboardKpi {
|
||||
pub cash_balance: i64,
|
||||
pub missions_count: i64,
|
||||
pub missions_open: i64,
|
||||
pub journal_entries: i64,
|
||||
pub services_running: i64,
|
||||
pub services_total: i64,
|
||||
pub tickets_open: i64,
|
||||
pub tickets_critical: i64,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
pub struct DashboardData {
|
||||
pub kpi: DashboardKpi,
|
||||
pub alerts: Vec<Alert>,
|
||||
pub missions: Vec<MissionSummary>,
|
||||
pub services: Vec<ServiceStatus>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
pub struct Alert {
|
||||
pub level: String,
|
||||
pub icon: String,
|
||||
pub title: String,
|
||||
pub message: String,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
pub struct MissionSummary {
|
||||
pub id: String,
|
||||
pub title: String,
|
||||
pub status: String,
|
||||
pub reward_sek: i64,
|
||||
pub lat: f64,
|
||||
pub lon: f64,
|
||||
pub address: String,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
pub struct ServiceStatus {
|
||||
pub name: String,
|
||||
pub port: i32,
|
||||
pub status: String,
|
||||
pub response_time_ms: Option<i64>,
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
use axum::{
|
||||
extract::State,
|
||||
response::Json,
|
||||
};
|
||||
use std::sync::Arc;
|
||||
use crate::{AppState, models::*};
|
||||
use serde_json::json;
|
||||
|
||||
pub async fn list_activity(State(state): State<Arc<AppState>>) -> Json<serde_json::Value> {
|
||||
let activities = sqlx::query_as::<_, ActivityLog>(r#"
|
||||
SELECT * FROM cc_activity_log
|
||||
WHERE tenant_id = 'landvex'
|
||||
ORDER BY created_at DESC
|
||||
LIMIT 100
|
||||
"#)
|
||||
.fetch_all(&state.db)
|
||||
.await
|
||||
.unwrap_or_default();
|
||||
|
||||
Json(json!({
|
||||
"ok": true,
|
||||
"activities": activities,
|
||||
"count": activities.len()
|
||||
}))
|
||||
}
|
||||
|
||||
pub async fn log_activity(
|
||||
State(state): State<Arc<AppState>>,
|
||||
Json(req): Json<CreateActivityRequest>,
|
||||
) -> Json<serde_json::Value> {
|
||||
let result = sqlx::query_as::<_, ActivityLog>(r#"
|
||||
INSERT INTO cc_activity_log (action, entity_type, entity_id, user_id, details)
|
||||
VALUES ($1, $2, $3, $4, $5)
|
||||
RETURNING *
|
||||
"#)
|
||||
.bind(&req.action)
|
||||
.bind(&req.entity_type)
|
||||
.bind(&req.entity_id)
|
||||
.bind(&req.user_id)
|
||||
.bind(req.details.unwrap_or(json!({})))
|
||||
.fetch_one(&state.db)
|
||||
.await;
|
||||
|
||||
match result {
|
||||
Ok(activity) => {
|
||||
Json(json!({
|
||||
"ok": true,
|
||||
"id": activity.id
|
||||
}))
|
||||
}
|
||||
Err(e) => Json(json!({
|
||||
"ok": false,
|
||||
"error": e.to_string()
|
||||
}))
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,163 @@
|
||||
use axum::{
|
||||
extract::{State, Path},
|
||||
response::Json,
|
||||
http::StatusCode,
|
||||
};
|
||||
use std::sync::Arc;
|
||||
use crate::{AppState, models::*};
|
||||
use serde_json::json;
|
||||
use uuid::Uuid;
|
||||
|
||||
pub async fn list_apis(State(state): State<Arc<AppState>>) -> Json<serde_json::Value> {
|
||||
let apis = sqlx::query_as::<_, ApiConfig>(r#"
|
||||
SELECT * FROM cc_api_configs
|
||||
WHERE tenant_id = 'landvex' AND is_active = true
|
||||
ORDER BY name
|
||||
"#)
|
||||
.fetch_all(&state.db)
|
||||
.await
|
||||
.unwrap_or_default();
|
||||
|
||||
Json(json!({
|
||||
"ok": true,
|
||||
"apis": apis,
|
||||
"count": apis.len()
|
||||
}))
|
||||
}
|
||||
|
||||
pub async fn get_api(
|
||||
State(state): State<Arc<AppState>>,
|
||||
Path(id): Path<Uuid>,
|
||||
) -> Result<Json<serde_json::Value>, StatusCode> {
|
||||
let api = sqlx::query_as::<_, ApiConfig>(r#"
|
||||
SELECT * FROM cc_api_configs WHERE id = $1
|
||||
"#)
|
||||
.bind(id)
|
||||
.fetch_one(&state.db)
|
||||
.await
|
||||
.map_err(|_| StatusCode::NOT_FOUND)?;
|
||||
|
||||
Ok(Json(json!({
|
||||
"ok": true,
|
||||
"api": api
|
||||
})))
|
||||
}
|
||||
|
||||
pub async fn create_api(
|
||||
State(state): State<Arc<AppState>>,
|
||||
Json(req): Json<CreateApiRequest>,
|
||||
) -> Result<Json<serde_json::Value>, StatusCode> {
|
||||
let api = sqlx::query_as::<_, ApiConfig>(r#"
|
||||
INSERT INTO cc_api_configs (name, endpoint_url, api_key, api_secret, headers)
|
||||
VALUES ($1, $2, $3, $4, $5)
|
||||
RETURNING *
|
||||
"#)
|
||||
.bind(&req.name)
|
||||
.bind(&req.endpoint_url)
|
||||
.bind(&req.api_key)
|
||||
.bind(&req.api_secret)
|
||||
.bind(req.headers.unwrap_or(json!({})))
|
||||
.fetch_one(&state.db)
|
||||
.await
|
||||
.map_err(|_| StatusCode::INTERNAL_SERVER_ERROR)?;
|
||||
|
||||
Ok(Json(json!({
|
||||
"ok": true,
|
||||
"api": api
|
||||
})))
|
||||
}
|
||||
|
||||
pub async fn update_api(
|
||||
State(state): State<Arc<AppState>>,
|
||||
Path(id): Path<Uuid>,
|
||||
Json(req): Json<CreateApiRequest>,
|
||||
) -> Result<Json<serde_json::Value>, StatusCode> {
|
||||
let api = sqlx::query_as::<_, ApiConfig>(r#"
|
||||
UPDATE cc_api_configs
|
||||
SET name = $1, endpoint_url = $2, api_key = $3, api_secret = $4, headers = $5, updated_at = NOW()
|
||||
WHERE id = $6
|
||||
RETURNING *
|
||||
"#)
|
||||
.bind(&req.name)
|
||||
.bind(&req.endpoint_url)
|
||||
.bind(&req.api_key)
|
||||
.bind(&req.api_secret)
|
||||
.bind(req.headers.unwrap_or(json!({})))
|
||||
.bind(id)
|
||||
.fetch_one(&state.db)
|
||||
.await
|
||||
.map_err(|_| StatusCode::NOT_FOUND)?;
|
||||
|
||||
Ok(Json(json!({
|
||||
"ok": true,
|
||||
"api": api
|
||||
})))
|
||||
}
|
||||
|
||||
pub async fn delete_api(
|
||||
State(state): State<Arc<AppState>>,
|
||||
Path(id): Path<Uuid>,
|
||||
) -> Result<Json<serde_json::Value>, StatusCode> {
|
||||
sqlx::query(r#"
|
||||
UPDATE cc_api_configs SET is_active = false WHERE id = $1
|
||||
"#)
|
||||
.bind(id)
|
||||
.execute(&state.db)
|
||||
.await
|
||||
.map_err(|_| StatusCode::NOT_FOUND)?;
|
||||
|
||||
Ok(Json(json!({
|
||||
"ok": true,
|
||||
"message": "API deleted"
|
||||
})))
|
||||
}
|
||||
|
||||
pub async fn test_api(
|
||||
State(state): State<Arc<AppState>>,
|
||||
Path(id): Path<Uuid>,
|
||||
) -> Result<Json<serde_json::Value>, StatusCode> {
|
||||
let api = sqlx::query_as::<_, ApiConfig>(r#"
|
||||
SELECT * FROM cc_api_configs WHERE id = $1
|
||||
"#)
|
||||
.bind(id)
|
||||
.fetch_one(&state.db)
|
||||
.await
|
||||
.map_err(|_| StatusCode::NOT_FOUND)?;
|
||||
|
||||
let start = std::time::Instant::now();
|
||||
|
||||
let mut request = state.http_client.get(&api.endpoint_url);
|
||||
|
||||
if let Some(key) = &api.api_key {
|
||||
request = request.header("Authorization", format!("Bearer {}", key));
|
||||
}
|
||||
|
||||
// Add custom headers
|
||||
if let Ok(headers) = serde_json::from_value::<std::collections::HashMap<String, String>>(api.headers.clone()) {
|
||||
for (key, value) in headers {
|
||||
request = request.header(key, value);
|
||||
}
|
||||
}
|
||||
|
||||
match request.send().await {
|
||||
Ok(response) => {
|
||||
let status = response.status().as_u16();
|
||||
let body = response.text().await.unwrap_or_default();
|
||||
let response_time_ms = start.elapsed().as_millis() as u64;
|
||||
|
||||
Ok(Json(json!({
|
||||
"ok": true,
|
||||
"status": status,
|
||||
"response_time_ms": response_time_ms,
|
||||
"body": body
|
||||
})))
|
||||
}
|
||||
Err(e) => {
|
||||
Ok(Json(json!({
|
||||
"ok": false,
|
||||
"error": e.to_string(),
|
||||
"response_time_ms": start.elapsed().as_millis() as u64
|
||||
})))
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,248 @@
|
||||
use axum::{
|
||||
extract::State,
|
||||
response::Json,
|
||||
};
|
||||
use std::sync::Arc;
|
||||
use crate::{AppState, models::*};
|
||||
use serde_json::json;
|
||||
|
||||
pub async fn get_dashboard(State(state): State<Arc<AppState>>) -> Json<serde_json::Value> {
|
||||
let kpi = get_kpi_data(&state).await;
|
||||
let alerts = get_alerts(&state).await;
|
||||
let missions = get_missions_summary(&state).await;
|
||||
let services = get_services_status().await;
|
||||
|
||||
Json(json!({
|
||||
"ok": true,
|
||||
"data": {
|
||||
"kpi": kpi,
|
||||
"alerts": alerts,
|
||||
"missions": missions,
|
||||
"services": services,
|
||||
},
|
||||
"generated_at": chrono::Utc::now().to_rfc3339()
|
||||
}))
|
||||
}
|
||||
|
||||
pub async fn get_kpi(State(state): State<Arc<AppState>>) -> Json<serde_json::Value> {
|
||||
let kpi = get_kpi_data(&state).await;
|
||||
Json(json!({
|
||||
"ok": true,
|
||||
"data": kpi
|
||||
}))
|
||||
}
|
||||
|
||||
async fn get_kpi_data(state: &AppState) -> DashboardKpi {
|
||||
// Get cash balance from ledger
|
||||
let cash_balance = sqlx::query_scalar::<_, i64>(r#"
|
||||
SELECT COALESCE(SUM(debit - credit), 0) as balance
|
||||
FROM ledger_accounts a
|
||||
LEFT JOIN (
|
||||
SELECT account_id,
|
||||
COALESCE(SUM(debit), 0) as debit,
|
||||
COALESCE(SUM(credit), 0) as credit
|
||||
FROM ledger_journal_lines l
|
||||
JOIN ledger_journal_entries e ON l.journal_entry_id = e.id
|
||||
WHERE e.tenant_id = 'landvex'
|
||||
GROUP BY account_id
|
||||
) sums ON a.id = sums.account_id
|
||||
WHERE a.tenant_id = 'landvex' AND a.account_number = '1930'
|
||||
"#)
|
||||
.fetch_optional(&state.db)
|
||||
.await
|
||||
.unwrap_or(None)
|
||||
.unwrap_or(0);
|
||||
|
||||
// Get journal entries count
|
||||
let journal_entries = sqlx::query_scalar::<_, i64>(r#"
|
||||
SELECT COUNT(*) FROM ledger_journal_entries WHERE tenant_id = 'landvex'
|
||||
"#)
|
||||
.fetch_one(&state.db)
|
||||
.await
|
||||
.unwrap_or(0);
|
||||
|
||||
// Get tickets
|
||||
let tickets_open = sqlx::query_scalar::<_, i64>(r#"
|
||||
SELECT COUNT(*) FROM cc_tickets WHERE tenant_id = 'landvex' AND status = 'open'
|
||||
"#)
|
||||
.fetch_one(&state.db)
|
||||
.await
|
||||
.unwrap_or(0);
|
||||
|
||||
let tickets_critical = sqlx::query_scalar::<_, i64>(r#"
|
||||
SELECT COUNT(*) FROM cc_tickets WHERE tenant_id = 'landvex' AND status = 'open' AND priority = 'critical'
|
||||
"#)
|
||||
.fetch_one(&state.db)
|
||||
.await
|
||||
.unwrap_or(0);
|
||||
|
||||
DashboardKpi {
|
||||
cash_balance,
|
||||
missions_count: 5, // Will be fetched from quixzoom
|
||||
missions_open: 2,
|
||||
journal_entries,
|
||||
services_running: 5,
|
||||
services_total: 5,
|
||||
tickets_open,
|
||||
tickets_critical,
|
||||
}
|
||||
}
|
||||
|
||||
async fn get_alerts(state: &AppState) -> Vec<Alert> {
|
||||
let mut alerts = vec![];
|
||||
|
||||
// Check bank balance
|
||||
let bank_balance = sqlx::query_scalar::<_, i64>(r#"
|
||||
SELECT COALESCE(SUM(debit - credit), 0)
|
||||
FROM ledger_accounts a
|
||||
LEFT JOIN (
|
||||
SELECT account_id,
|
||||
COALESCE(SUM(debit), 0) as debit,
|
||||
COALESCE(SUM(credit), 0) as credit
|
||||
FROM ledger_journal_lines l
|
||||
JOIN ledger_journal_entries e ON l.journal_entry_id = e.id
|
||||
WHERE e.tenant_id = 'landvex'
|
||||
GROUP BY account_id
|
||||
) sums ON a.id = sums.account_id
|
||||
WHERE a.tenant_id = 'landvex' AND a.account_number = '1930'
|
||||
"#)
|
||||
.fetch_optional(&state.db)
|
||||
.await
|
||||
.unwrap_or(None)
|
||||
.unwrap_or(0);
|
||||
|
||||
if bank_balance < 0 {
|
||||
alerts.push(Alert {
|
||||
level: "critical".to_string(),
|
||||
icon: "🏦".to_string(),
|
||||
title: "Bankövertrassering".to_string(),
|
||||
message: format!("Konto 1930: {} kr", bank_balance),
|
||||
});
|
||||
}
|
||||
|
||||
// Check Leon claim
|
||||
let leon = sqlx::query_scalar::<_, i64>(r#"
|
||||
SELECT COALESCE(SUM(debit - credit), 0)
|
||||
FROM ledger_accounts a
|
||||
LEFT JOIN (
|
||||
SELECT account_id,
|
||||
COALESCE(SUM(debit), 0) as debit,
|
||||
COALESCE(SUM(credit), 0) as credit
|
||||
FROM ledger_journal_lines l
|
||||
JOIN ledger_journal_entries e ON l.journal_entry_id = e.id
|
||||
WHERE e.tenant_id = 'landvex'
|
||||
GROUP BY account_id
|
||||
) sums ON a.id = sums.account_id
|
||||
WHERE a.tenant_id = 'landvex' AND a.account_number = '1610'
|
||||
"#)
|
||||
.fetch_optional(&state.db)
|
||||
.await
|
||||
.unwrap_or(None)
|
||||
.unwrap_or(0);
|
||||
|
||||
if leon > 100000 {
|
||||
alerts.push(Alert {
|
||||
level: "warning".to_string(),
|
||||
icon: "👤".to_string(),
|
||||
title: "Leon-fordran".to_string(),
|
||||
message: format!("Konto 1610: {} kr", leon),
|
||||
});
|
||||
}
|
||||
|
||||
// Check VAT
|
||||
let vat = sqlx::query_scalar::<_, i64>(r#"
|
||||
SELECT COALESCE(SUM(debit - credit), 0)
|
||||
FROM ledger_accounts a
|
||||
LEFT JOIN (
|
||||
SELECT account_id,
|
||||
COALESCE(SUM(debit), 0) as debit,
|
||||
COALESCE(SUM(credit), 0) as credit
|
||||
FROM ledger_journal_lines l
|
||||
JOIN ledger_journal_entries e ON l.journal_entry_id = e.id
|
||||
WHERE e.tenant_id = 'landvex'
|
||||
GROUP BY account_id
|
||||
) sums ON a.id = sums.account_id
|
||||
WHERE a.tenant_id = 'landvex' AND a.account_number = '2650'
|
||||
"#)
|
||||
.fetch_optional(&state.db)
|
||||
.await
|
||||
.unwrap_or(None)
|
||||
.unwrap_or(0);
|
||||
|
||||
if vat.abs() > 1000 {
|
||||
alerts.push(Alert {
|
||||
level: "info".to_string(),
|
||||
icon: "📊".to_string(),
|
||||
title: "Moms att redovisa".to_string(),
|
||||
message: format!("Konto 2650: {} kr", vat),
|
||||
});
|
||||
}
|
||||
|
||||
if alerts.is_empty() {
|
||||
alerts.push(Alert {
|
||||
level: "info".to_string(),
|
||||
icon: "✅".to_string(),
|
||||
title: "Allt ser bra ut".to_string(),
|
||||
message: "Inga kritiska ärenden just nu".to_string(),
|
||||
});
|
||||
}
|
||||
|
||||
alerts
|
||||
}
|
||||
|
||||
async fn get_missions_summary(_state: &AppState) -> Vec<MissionSummary> {
|
||||
// This would fetch from quixzoom API
|
||||
vec![
|
||||
MissionSummary {
|
||||
id: "mission-ed96af2d".to_string(),
|
||||
title: "Fasadinspektion Kungsgatan 12".to_string(),
|
||||
status: "assigned".to_string(),
|
||||
reward_sek: 1800,
|
||||
lat: 59.3349,
|
||||
lon: 18.0632,
|
||||
address: "Kungsgatan 12, Stockholm".to_string(),
|
||||
},
|
||||
MissionSummary {
|
||||
id: "mission-7ca2831f".to_string(),
|
||||
title: "Vägbana Strandvägen".to_string(),
|
||||
status: "open".to_string(),
|
||||
reward_sek: 900,
|
||||
lat: 59.3318,
|
||||
lon: 18.0892,
|
||||
address: "Strandvägen, Stockholm".to_string(),
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
async fn get_services_status() -> Vec<ServiceStatus> {
|
||||
let services = vec![
|
||||
("aamos-ledger", 3250),
|
||||
("quixzoom-mission", 7060),
|
||||
("quixzoom-avo", 7070),
|
||||
("aamos-gateway", 3401),
|
||||
("aamos-api-gateway", 8080),
|
||||
];
|
||||
|
||||
let mut results = vec![];
|
||||
for (name, port) in services {
|
||||
let start = std::time::Instant::now();
|
||||
let status = if port == 0 {
|
||||
"running".to_string()
|
||||
} else {
|
||||
match reqwest::get(format!("http://127.0.0.1:{}/health", port)).await {
|
||||
Ok(resp) if resp.status().is_success() => "running".to_string(),
|
||||
_ => "stopped".to_string(),
|
||||
}
|
||||
};
|
||||
let response_time_ms = Some(start.elapsed().as_millis() as i64);
|
||||
|
||||
results.push(ServiceStatus {
|
||||
name: name.to_string(),
|
||||
port,
|
||||
status,
|
||||
response_time_ms,
|
||||
});
|
||||
}
|
||||
|
||||
results
|
||||
}
|
||||
@@ -0,0 +1,123 @@
|
||||
use axum::{
|
||||
extract::State,
|
||||
response::Json,
|
||||
};
|
||||
use sqlx::Row;
|
||||
use std::sync::Arc;
|
||||
use crate::AppState;
|
||||
use serde_json::json;
|
||||
|
||||
pub async fn get_economy_overview(State(state): State<Arc<AppState>>) -> Json<serde_json::Value> {
|
||||
// Hämta konton med summerade saldon från journal_lines
|
||||
// OBS: kolumnen heter entry_id (inte journal_entry_id)
|
||||
let accounts = sqlx::query(r#"
|
||||
SELECT
|
||||
a.account_number,
|
||||
a.name,
|
||||
a.account_type,
|
||||
COALESCE(SUM(jl.debit) FILTER (WHERE je.tenant_id = 'landvex'), 0)::bigint as total_debit,
|
||||
COALESCE(SUM(jl.credit) FILTER (WHERE je.tenant_id = 'landvex'), 0)::bigint as total_credit
|
||||
FROM ledger_accounts a
|
||||
LEFT JOIN ledger_journal_lines jl ON a.account_number = jl.account_number
|
||||
LEFT JOIN ledger_journal_entries je ON jl.entry_id = je.id
|
||||
WHERE a.tenant_id = 'landvex'
|
||||
GROUP BY a.id, a.account_number, a.name, a.account_type
|
||||
ORDER BY a.account_number
|
||||
"#)
|
||||
.fetch_all(&state.db)
|
||||
.await
|
||||
.unwrap_or_default();
|
||||
|
||||
let mut result = vec![];
|
||||
for row in accounts {
|
||||
let acc_num: String = row.get("account_number");
|
||||
let name: String = row.get("name");
|
||||
let acc_type: String = row.get("account_type");
|
||||
let debit: i64 = row.get::<Option<i64>, _>("total_debit").unwrap_or(0);
|
||||
let credit: i64 = row.get::<Option<i64>, _>("total_credit").unwrap_or(0);
|
||||
let balance = debit - credit;
|
||||
|
||||
result.push(json!({
|
||||
"account_number": acc_num,
|
||||
"name": name,
|
||||
"type": acc_type,
|
||||
"debit": debit,
|
||||
"credit": credit,
|
||||
"balance": balance
|
||||
}));
|
||||
}
|
||||
|
||||
let entries = sqlx::query_scalar::<_, i64>(r#"
|
||||
SELECT COUNT(*) FROM ledger_journal_entries WHERE tenant_id = 'landvex'
|
||||
"#)
|
||||
.fetch_one(&state.db)
|
||||
.await
|
||||
.unwrap_or(0);
|
||||
|
||||
let periods = sqlx::query_scalar::<_, i64>(r#"
|
||||
SELECT COUNT(*) FROM ledger_periods WHERE tenant_id = 'landvex'
|
||||
"#)
|
||||
.fetch_one(&state.db)
|
||||
.await
|
||||
.unwrap_or(0);
|
||||
|
||||
Json(json!({
|
||||
"ok": true,
|
||||
"accounts": result,
|
||||
"summary": {
|
||||
"total_entries": entries,
|
||||
"total_periods": periods,
|
||||
"total_accounts": result.len()
|
||||
}
|
||||
}))
|
||||
}
|
||||
|
||||
pub async fn get_trial_balance(State(state): State<Arc<AppState>>) -> Json<serde_json::Value> {
|
||||
let rows = sqlx::query(r#"
|
||||
SELECT
|
||||
a.account_number,
|
||||
a.name,
|
||||
a.account_type,
|
||||
COALESCE(SUM(jl.debit) FILTER (WHERE je.tenant_id = 'landvex'), 0)::bigint as total_debit,
|
||||
COALESCE(SUM(jl.credit) FILTER (WHERE je.tenant_id = 'landvex'), 0)::bigint as total_credit
|
||||
FROM ledger_accounts a
|
||||
LEFT JOIN ledger_journal_lines jl ON a.account_number = jl.account_number
|
||||
LEFT JOIN ledger_journal_entries je ON jl.entry_id = je.id
|
||||
WHERE a.tenant_id = 'landvex'
|
||||
GROUP BY a.id, a.account_number, a.name, a.account_type
|
||||
HAVING COALESCE(SUM(jl.debit) FILTER (WHERE je.tenant_id = 'landvex'), 0) > 0
|
||||
OR COALESCE(SUM(jl.credit) FILTER (WHERE je.tenant_id = 'landvex'), 0) > 0
|
||||
ORDER BY a.account_number
|
||||
"#)
|
||||
.fetch_all(&state.db)
|
||||
.await
|
||||
.unwrap_or_default();
|
||||
|
||||
let mut result = vec![];
|
||||
let mut total_debit = 0i64;
|
||||
let mut total_credit = 0i64;
|
||||
|
||||
for row in rows {
|
||||
let debit: i64 = row.get::<Option<i64>, _>("total_debit").unwrap_or(0);
|
||||
let credit: i64 = row.get::<Option<i64>, _>("total_credit").unwrap_or(0);
|
||||
total_debit += debit;
|
||||
total_credit += credit;
|
||||
|
||||
result.push(json!({
|
||||
"account_number": row.get::<String, _>("account_number"),
|
||||
"name": row.get::<String, _>("name"),
|
||||
"type": row.get::<String, _>("account_type"),
|
||||
"debit": debit,
|
||||
"credit": credit,
|
||||
"balance": debit - credit
|
||||
}));
|
||||
}
|
||||
|
||||
Json(json!({
|
||||
"ok": true,
|
||||
"accounts": result,
|
||||
"total_debit": total_debit,
|
||||
"total_credit": total_credit,
|
||||
"balanced": total_debit == total_credit
|
||||
}))
|
||||
}
|
||||
@@ -0,0 +1,224 @@
|
||||
use axum::{
|
||||
extract::State,
|
||||
response::Json,
|
||||
};
|
||||
use serde::{Deserialize, Serialize};
|
||||
use sqlx::Row;
|
||||
use std::sync::Arc;
|
||||
use crate::AppState;
|
||||
use serde_json::json;
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
pub struct CreateEntryRequest {
|
||||
pub description: String,
|
||||
pub entry_date: String,
|
||||
pub fiscal_year: i32,
|
||||
pub period: String,
|
||||
pub lines: Vec<JournalLineInput>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
pub struct JournalLineInput {
|
||||
pub account_number: String,
|
||||
pub debit: i64,
|
||||
pub credit: i64,
|
||||
pub description: Option<String>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize)]
|
||||
pub struct CreateEntryResponse {
|
||||
pub ok: bool,
|
||||
pub entry_number: Option<i64>,
|
||||
pub message: String,
|
||||
pub error: Option<String>,
|
||||
}
|
||||
|
||||
pub async fn create_entry(
|
||||
State(state): State<Arc<AppState>>,
|
||||
Json(req): Json<CreateEntryRequest>,
|
||||
) -> Json<CreateEntryResponse> {
|
||||
let total_debit: i64 = req.lines.iter().map(|l| l.debit).sum();
|
||||
let total_credit: i64 = req.lines.iter().map(|l| l.credit).sum();
|
||||
|
||||
if total_debit != total_credit {
|
||||
return Json(CreateEntryResponse {
|
||||
ok: false,
|
||||
entry_number: None,
|
||||
message: "Verifikatet är inte balanserat".to_string(),
|
||||
error: Some(format!("Debet: {}, Kredit: {}", total_debit, total_credit)),
|
||||
});
|
||||
}
|
||||
|
||||
if total_debit == 0 {
|
||||
return Json(CreateEntryResponse {
|
||||
ok: false,
|
||||
entry_number: None,
|
||||
message: "Verifikatet är tomt".to_string(),
|
||||
error: Some("Debet och kredit är båda 0".to_string()),
|
||||
});
|
||||
}
|
||||
|
||||
let next_number: i64 = sqlx::query_scalar(r#"
|
||||
SELECT COALESCE(MAX(entry_number), 0) + 1
|
||||
FROM ledger_journal_entries
|
||||
WHERE tenant_id = 'landvex'
|
||||
"#)
|
||||
.fetch_one(&state.db)
|
||||
.await
|
||||
.unwrap_or(1);
|
||||
|
||||
let mut tx = match state.db.begin().await {
|
||||
Ok(tx) => tx,
|
||||
Err(e) => return Json(CreateEntryResponse {
|
||||
ok: false,
|
||||
entry_number: None,
|
||||
message: "Kunde inte starta transaktion".to_string(),
|
||||
error: Some(e.to_string()),
|
||||
}),
|
||||
};
|
||||
|
||||
let trace_id = format!("cc-{}", uuid::Uuid::new_v4());
|
||||
let entry_id: sqlx::types::Uuid = match sqlx::query_scalar(r#"
|
||||
INSERT INTO ledger_journal_entries
|
||||
(tenant_id, entry_number, entry_date, description, fiscal_year, period, status, source_type, trace_id, correlation_id, user_id, decision_source, metadata, created_at)
|
||||
VALUES ('landvex', $1, $2, $3, $4, $5, 'posted', 'manual', $6, $6, 'command-center', 'manual', '{}', NOW())
|
||||
RETURNING id
|
||||
"#)
|
||||
.bind(next_number)
|
||||
.bind(req.entry_date.parse::<chrono::NaiveDate>().unwrap_or_else(|_| chrono::Local::now().naive_local().date()))
|
||||
.bind(&req.description)
|
||||
.bind(req.fiscal_year)
|
||||
.bind(&req.period)
|
||||
.bind(&trace_id)
|
||||
.fetch_one(&mut *tx)
|
||||
.await {
|
||||
Ok(id) => id,
|
||||
Err(e) => return Json(CreateEntryResponse {
|
||||
ok: false,
|
||||
entry_number: None,
|
||||
message: "Kunde inte skapa verifikat".to_string(),
|
||||
error: Some(e.to_string()),
|
||||
}),
|
||||
};
|
||||
|
||||
for (idx, line) in req.lines.iter().enumerate() {
|
||||
if line.debit == 0 && line.credit == 0 {
|
||||
continue;
|
||||
}
|
||||
|
||||
let debit_val = if line.debit > 0 { Some(line.debit) } else { None };
|
||||
let credit_val = if line.credit > 0 { Some(line.credit) } else { None };
|
||||
|
||||
if let Err(e) = sqlx::query(r#"
|
||||
INSERT INTO ledger_journal_lines
|
||||
(entry_id, tenant_id, line_number, account_number, description, debit, credit, currency)
|
||||
VALUES ($1, 'landvex', $2, $3, $4, $5, $6, 'SEK')
|
||||
"#)
|
||||
.bind(entry_id)
|
||||
.bind((idx + 1) as i32)
|
||||
.bind(&line.account_number)
|
||||
.bind(line.description.as_ref().unwrap_or(&req.description))
|
||||
.bind(debit_val)
|
||||
.bind(credit_val)
|
||||
.execute(&mut *tx)
|
||||
.await {
|
||||
return Json(CreateEntryResponse {
|
||||
ok: false,
|
||||
entry_number: None,
|
||||
message: "Kunde inte skapa verifikatrad".to_string(),
|
||||
error: Some(e.to_string()),
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
if let Err(e) = tx.commit().await {
|
||||
return Json(CreateEntryResponse {
|
||||
ok: false,
|
||||
entry_number: None,
|
||||
message: "Kunde inte spara verifikat".to_string(),
|
||||
error: Some(e.to_string()),
|
||||
});
|
||||
}
|
||||
|
||||
let _ = sqlx::query(r#"
|
||||
INSERT INTO cc_activity_log (tenant_id, action, entity_type, entity_id, details)
|
||||
VALUES ('landvex', 'create', 'journal_entry', $1, $2)
|
||||
"#)
|
||||
.bind(entry_id.to_string())
|
||||
.bind(json!({"entry_number": next_number, "description": req.description, "amount": total_debit}))
|
||||
.execute(&state.db)
|
||||
.await;
|
||||
|
||||
Json(CreateEntryResponse {
|
||||
ok: true,
|
||||
entry_number: Some(next_number),
|
||||
message: format!("Verifikat #{} skapat", next_number),
|
||||
error: None,
|
||||
})
|
||||
}
|
||||
|
||||
fn get_line_amount(line: &sqlx::postgres::PgRow, col: &str) -> i64 {
|
||||
// NUMERIC i PostgreSQL kan hämtas som String via text-konvertering
|
||||
// Använd en SQL-konvertering istället
|
||||
0
|
||||
}
|
||||
|
||||
pub async fn get_journal(State(state): State<Arc<AppState>>) -> Json<serde_json::Value> {
|
||||
let entries = sqlx::query(r#"
|
||||
SELECT id, entry_number, entry_date, description, fiscal_year, period, status, source_type, created_at
|
||||
FROM ledger_journal_entries
|
||||
WHERE tenant_id = 'landvex'
|
||||
ORDER BY entry_date DESC, entry_number DESC
|
||||
LIMIT 100
|
||||
"#)
|
||||
.fetch_all(&state.db)
|
||||
.await
|
||||
.unwrap_or_default();
|
||||
|
||||
let mut result = vec![];
|
||||
for row in entries {
|
||||
let entry_id: sqlx::types::Uuid = row.get("id");
|
||||
|
||||
let lines = sqlx::query(r#"
|
||||
SELECT account_number, description,
|
||||
COALESCE(debit::bigint, 0) as debit_val,
|
||||
COALESCE(credit::bigint, 0) as credit_val
|
||||
FROM ledger_journal_lines
|
||||
WHERE entry_id = $1
|
||||
ORDER BY line_number
|
||||
"#)
|
||||
.bind(entry_id)
|
||||
.fetch_all(&state.db)
|
||||
.await
|
||||
.unwrap_or_default();
|
||||
|
||||
let mut line_data = vec![];
|
||||
for line in lines {
|
||||
line_data.push(json!({
|
||||
"account_number": line.get::<String, _>("account_number"),
|
||||
"description": line.get::<Option<String>, _>("description").unwrap_or_default(),
|
||||
"debit": line.get::<Option<i64>, _>("debit_val").unwrap_or(0),
|
||||
"credit": line.get::<Option<i64>, _>("credit_val").unwrap_or(0),
|
||||
}));
|
||||
}
|
||||
|
||||
result.push(json!({
|
||||
"id": entry_id.to_string(),
|
||||
"entry_number": row.get::<Option<i64>, _>("entry_number"),
|
||||
"entry_date": row.get::<Option<chrono::NaiveDate>, _>("entry_date").map(|d| d.to_string()),
|
||||
"description": row.get::<Option<String>, _>("description").unwrap_or_default(),
|
||||
"fiscal_year": row.get::<Option<i32>, _>("fiscal_year"),
|
||||
"period": row.get::<Option<String>, _>("period"),
|
||||
"status": row.get::<String, _>("status"),
|
||||
"source_type": row.get::<String, _>("source_type"),
|
||||
"created_at": row.get::<Option<chrono::DateTime<chrono::Utc>>, _>("created_at").map(|d| d.to_rfc3339()),
|
||||
"lines": line_data,
|
||||
}));
|
||||
}
|
||||
|
||||
Json(json!({
|
||||
"ok": true,
|
||||
"entries": result,
|
||||
"count": result.len(),
|
||||
}))
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
pub mod dashboard;
|
||||
pub mod economy;
|
||||
pub mod journal;
|
||||
pub mod tickets;
|
||||
pub mod activity;
|
||||
pub mod apis;
|
||||
pub mod system;
|
||||
pub mod ws;
|
||||
@@ -0,0 +1,140 @@
|
||||
use axum::{
|
||||
extract::State,
|
||||
response::Json,
|
||||
http::StatusCode,
|
||||
};
|
||||
use serde::{Deserialize, Serialize};
|
||||
use sqlx::Row;
|
||||
use std::sync::Arc;
|
||||
use std::process::Command;
|
||||
use crate::AppState;
|
||||
use serde_json::json;
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
pub struct ServiceActionRequest {
|
||||
pub service: String,
|
||||
pub action: String, // start, stop, restart, status
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize)]
|
||||
pub struct ServiceActionResponse {
|
||||
pub ok: bool,
|
||||
pub service: String,
|
||||
pub action: String,
|
||||
pub output: String,
|
||||
pub error: Option<String>,
|
||||
}
|
||||
|
||||
pub async fn service_action(
|
||||
State(_state): State<Arc<AppState>>,
|
||||
Json(req): Json<ServiceActionRequest>,
|
||||
) -> Result<Json<ServiceActionResponse>, StatusCode> {
|
||||
// Validera att service-namnet är säkert (endast aamos-/quixzoom-tjänster)
|
||||
let allowed_prefixes = ["aamos-", "quixzoom-"];
|
||||
let is_allowed = allowed_prefixes.iter().any(|p| req.service.starts_with(p));
|
||||
|
||||
if !is_allowed {
|
||||
return Ok(Json(ServiceActionResponse {
|
||||
ok: false,
|
||||
service: req.service,
|
||||
action: req.action,
|
||||
output: String::new(),
|
||||
error: Some("Otillåten tjänst. Endast aamos-* och quixzoom-* tillåtna.".to_string()),
|
||||
}));
|
||||
}
|
||||
|
||||
// Validera action
|
||||
let allowed_actions = ["start", "stop", "restart", "status"];
|
||||
if !allowed_actions.contains(&req.action.as_str()) {
|
||||
return Ok(Json(ServiceActionResponse {
|
||||
ok: false,
|
||||
service: req.service,
|
||||
action: req.action,
|
||||
output: String::new(),
|
||||
error: Some("Otillåten åtgärd. Använd: start, stop, restart, status".to_string()),
|
||||
}));
|
||||
}
|
||||
|
||||
// Kör systemctl via sudo
|
||||
let output = Command::new("sudo")
|
||||
.args(["-n", "systemctl", &req.action, &req.service])
|
||||
.output();
|
||||
|
||||
match output {
|
||||
Ok(result) => {
|
||||
let stdout = String::from_utf8_lossy(&result.stdout).to_string();
|
||||
let stderr = String::from_utf8_lossy(&result.stderr).to_string();
|
||||
|
||||
let success = result.status.success();
|
||||
|
||||
Ok(Json(ServiceActionResponse {
|
||||
ok: success,
|
||||
service: req.service,
|
||||
action: req.action,
|
||||
output: if stdout.is_empty() { stderr.clone() } else { stdout },
|
||||
error: if success { None } else { Some(stderr) },
|
||||
}))
|
||||
}
|
||||
Err(e) => Ok(Json(ServiceActionResponse {
|
||||
ok: false,
|
||||
service: req.service,
|
||||
action: req.action,
|
||||
output: String::new(),
|
||||
error: Some(format!("Kunde inte köra kommando: {}", e)),
|
||||
})),
|
||||
}
|
||||
}
|
||||
|
||||
pub async fn get_services(State(_state): State<Arc<AppState>>) -> Json<serde_json::Value> {
|
||||
// Lista alla aamos- och quixzoom-tjänster
|
||||
let output = Command::new("systemctl")
|
||||
.args(["list-units", "--type=service", "--state=running", "--no-pager", "--no-legend"])
|
||||
.output();
|
||||
|
||||
let mut services = vec![];
|
||||
|
||||
if let Ok(result) = output {
|
||||
let stdout = String::from_utf8_lossy(&result.stdout);
|
||||
for line in stdout.lines() {
|
||||
let parts: Vec<&str> = line.split_whitespace().collect();
|
||||
if parts.len() >= 2 {
|
||||
let name = parts[0].to_string();
|
||||
if name.starts_with("aamos-") || name.starts_with("quixzoom-") {
|
||||
services.push(json!({
|
||||
"name": name,
|
||||
"status": "running",
|
||||
"description": parts.get(4..).unwrap_or(&[]).join(" ")
|
||||
}));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Lägg till stoppade tjänster också
|
||||
let all_output = Command::new("systemctl")
|
||||
.args(["list-unit-files", "--type=service", "--no-pager", "--no-legend"])
|
||||
.output();
|
||||
|
||||
if let Ok(result) = all_output {
|
||||
let stdout = String::from_utf8_lossy(&result.stdout);
|
||||
for line in stdout.lines() {
|
||||
let parts: Vec<&str> = line.split_whitespace().collect();
|
||||
if parts.len() >= 2 {
|
||||
let name = parts[0].to_string();
|
||||
if (name.starts_with("aamos-") || name.starts_with("quixzoom-"))
|
||||
&& !services.iter().any(|s: &serde_json::Value| s["name"] == name) {
|
||||
services.push(json!({
|
||||
"name": name,
|
||||
"status": "stopped",
|
||||
"description": ""
|
||||
}));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Json(json!({
|
||||
"ok": true,
|
||||
"services": services
|
||||
}))
|
||||
}
|
||||
@@ -0,0 +1,250 @@
|
||||
use axum::{
|
||||
extract::{State, Path},
|
||||
response::Json,
|
||||
http::StatusCode,
|
||||
};
|
||||
use std::sync::Arc;
|
||||
use crate::{AppState, models::*};
|
||||
use serde_json::json;
|
||||
use uuid::Uuid;
|
||||
|
||||
pub async fn list_tickets(State(state): State<Arc<AppState>>) -> Json<serde_json::Value> {
|
||||
let tickets = sqlx::query_as::<_, Ticket>(r#"
|
||||
SELECT * FROM cc_tickets
|
||||
WHERE tenant_id = 'landvex'
|
||||
ORDER BY
|
||||
CASE priority
|
||||
WHEN 'critical' THEN 1
|
||||
WHEN 'high' THEN 2
|
||||
WHEN 'medium' THEN 3
|
||||
ELSE 4
|
||||
END,
|
||||
created_at DESC
|
||||
LIMIT 100
|
||||
"#)
|
||||
.fetch_all(&state.db)
|
||||
.await
|
||||
.unwrap_or_default();
|
||||
|
||||
Json(json!({
|
||||
"ok": true,
|
||||
"tickets": tickets,
|
||||
"count": tickets.len()
|
||||
}))
|
||||
}
|
||||
|
||||
pub async fn get_ticket(
|
||||
State(state): State<Arc<AppState>>,
|
||||
Path(id): Path<Uuid>,
|
||||
) -> Result<Json<serde_json::Value>, StatusCode> {
|
||||
let ticket = sqlx::query_as::<_, Ticket>(r#"
|
||||
SELECT * FROM cc_tickets WHERE id = $1
|
||||
"#)
|
||||
.bind(id)
|
||||
.fetch_one(&state.db)
|
||||
.await
|
||||
.map_err(|_| StatusCode::NOT_FOUND)?;
|
||||
|
||||
let comments = sqlx::query_as::<_, TicketComment>(r#"
|
||||
SELECT * FROM cc_ticket_comments WHERE ticket_id = $1 ORDER BY created_at ASC
|
||||
"#)
|
||||
.bind(id)
|
||||
.fetch_all(&state.db)
|
||||
.await
|
||||
.unwrap_or_default();
|
||||
|
||||
Ok(Json(json!({
|
||||
"ok": true,
|
||||
"ticket": ticket,
|
||||
"comments": comments
|
||||
})))
|
||||
}
|
||||
|
||||
pub async fn create_ticket(
|
||||
State(state): State<Arc<AppState>>,
|
||||
Json(req): Json<CreateTicketRequest>,
|
||||
) -> Result<Json<serde_json::Value>, StatusCode> {
|
||||
let ticket_number = generate_ticket_number(&state.db).await?;
|
||||
|
||||
let ticket = sqlx::query_as::<_, Ticket>(r#"
|
||||
INSERT INTO cc_tickets (ticket_number, type, priority, title, description, zoomer_id, mission_id, created_by)
|
||||
VALUES ($1, $2, $3, $4, $5, $6, $7, $8)
|
||||
RETURNING *
|
||||
"#)
|
||||
.bind(&ticket_number)
|
||||
.bind(&req.r#type)
|
||||
.bind(req.priority.as_deref().unwrap_or("medium"))
|
||||
.bind(&req.title)
|
||||
.bind(&req.description)
|
||||
.bind(&req.zoomer_id)
|
||||
.bind(&req.mission_id)
|
||||
.bind(&req.created_by)
|
||||
.fetch_one(&state.db)
|
||||
.await
|
||||
.map_err(|_| StatusCode::INTERNAL_SERVER_ERROR)?;
|
||||
|
||||
// Log activity
|
||||
let _ = sqlx::query(r#"
|
||||
INSERT INTO cc_activity_log (action, entity_type, entity_id, user_id, details)
|
||||
VALUES ('created', 'ticket', $1, $2, $3)
|
||||
"#)
|
||||
.bind(ticket.id.to_string())
|
||||
.bind(&req.created_by)
|
||||
.bind(json!({"ticket_number": ticket_number}))
|
||||
.execute(&state.db)
|
||||
.await;
|
||||
|
||||
// Broadcast
|
||||
let _ = state.tx.send(WsMessage {
|
||||
event: "ticket.created".to_string(),
|
||||
data: json!({"ticket": ticket}),
|
||||
timestamp: chrono::Utc::now(),
|
||||
});
|
||||
|
||||
Ok(Json(json!({
|
||||
"ok": true,
|
||||
"ticket": ticket
|
||||
})))
|
||||
}
|
||||
|
||||
pub async fn update_ticket(
|
||||
State(state): State<Arc<AppState>>,
|
||||
Path(id): Path<Uuid>,
|
||||
Json(req): Json<UpdateTicketRequest>,
|
||||
) -> Result<Json<serde_json::Value>, StatusCode> {
|
||||
let ticket = sqlx::query_as::<_, Ticket>(r#"
|
||||
UPDATE cc_tickets
|
||||
SET
|
||||
status = COALESCE($1, status),
|
||||
priority = COALESCE($2, priority),
|
||||
assigned_to = COALESCE($3, assigned_to),
|
||||
title = COALESCE($4, title),
|
||||
description = COALESCE($5, description),
|
||||
updated_at = NOW()
|
||||
WHERE id = $6
|
||||
RETURNING *
|
||||
"#)
|
||||
.bind(&req.status)
|
||||
.bind(&req.priority)
|
||||
.bind(&req.assigned_to)
|
||||
.bind(&req.title)
|
||||
.bind(&req.description)
|
||||
.bind(id)
|
||||
.fetch_one(&state.db)
|
||||
.await
|
||||
.map_err(|_| StatusCode::NOT_FOUND)?;
|
||||
|
||||
Ok(Json(json!({
|
||||
"ok": true,
|
||||
"ticket": ticket
|
||||
})))
|
||||
}
|
||||
|
||||
pub async fn assign_ticket(
|
||||
State(state): State<Arc<AppState>>,
|
||||
Path(id): Path<Uuid>,
|
||||
Json(req): Json<serde_json::Value>,
|
||||
) -> Result<Json<serde_json::Value>, StatusCode> {
|
||||
let assigned_to = req.get("assigned_to").and_then(|v| v.as_str()).unwrap_or("");
|
||||
|
||||
let ticket = sqlx::query_as::<_, Ticket>(r#"
|
||||
UPDATE cc_tickets
|
||||
SET assigned_to = $1, updated_at = NOW()
|
||||
WHERE id = $2
|
||||
RETURNING *
|
||||
"#)
|
||||
.bind(assigned_to)
|
||||
.bind(id)
|
||||
.fetch_one(&state.db)
|
||||
.await
|
||||
.map_err(|_| StatusCode::NOT_FOUND)?;
|
||||
|
||||
Ok(Json(json!({
|
||||
"ok": true,
|
||||
"ticket": ticket
|
||||
})))
|
||||
}
|
||||
|
||||
pub async fn resolve_ticket(
|
||||
State(state): State<Arc<AppState>>,
|
||||
Path(id): Path<Uuid>,
|
||||
) -> Result<Json<serde_json::Value>, StatusCode> {
|
||||
let ticket = sqlx::query_as::<_, Ticket>(r#"
|
||||
UPDATE cc_tickets
|
||||
SET status = 'resolved', resolved_at = NOW(), updated_at = NOW()
|
||||
WHERE id = $1
|
||||
RETURNING *
|
||||
"#)
|
||||
.bind(id)
|
||||
.fetch_one(&state.db)
|
||||
.await
|
||||
.map_err(|_| StatusCode::NOT_FOUND)?;
|
||||
|
||||
Ok(Json(json!({
|
||||
"ok": true,
|
||||
"ticket": ticket
|
||||
})))
|
||||
}
|
||||
|
||||
pub async fn list_comments(
|
||||
State(state): State<Arc<AppState>>,
|
||||
Path(id): Path<Uuid>,
|
||||
) -> Json<serde_json::Value> {
|
||||
let comments = sqlx::query_as::<_, TicketComment>(r#"
|
||||
SELECT * FROM cc_ticket_comments WHERE ticket_id = $1 ORDER BY created_at ASC
|
||||
"#)
|
||||
.bind(id)
|
||||
.fetch_all(&state.db)
|
||||
.await
|
||||
.unwrap_or_default();
|
||||
|
||||
Json(json!({
|
||||
"ok": true,
|
||||
"comments": comments
|
||||
}))
|
||||
}
|
||||
|
||||
pub async fn add_comment(
|
||||
State(state): State<Arc<AppState>>,
|
||||
Path(id): Path<Uuid>,
|
||||
Json(req): Json<serde_json::Value>,
|
||||
) -> Result<Json<serde_json::Value>, StatusCode> {
|
||||
let author = req.get("author").and_then(|v| v.as_str()).unwrap_or("Anonymous");
|
||||
let text = req.get("text").and_then(|v| v.as_str()).unwrap_or("");
|
||||
|
||||
let comment = sqlx::query_as::<_, TicketComment>(r#"
|
||||
INSERT INTO cc_ticket_comments (ticket_id, author, text)
|
||||
VALUES ($1, $2, $3)
|
||||
RETURNING *
|
||||
"#)
|
||||
.bind(id)
|
||||
.bind(author)
|
||||
.bind(text)
|
||||
.fetch_one(&state.db)
|
||||
.await
|
||||
.map_err(|_| StatusCode::INTERNAL_SERVER_ERROR)?;
|
||||
|
||||
// Update ticket timestamp
|
||||
let _ = sqlx::query(r#"
|
||||
UPDATE cc_tickets SET updated_at = NOW() WHERE id = $1
|
||||
"#)
|
||||
.bind(id)
|
||||
.execute(&state.db)
|
||||
.await;
|
||||
|
||||
Ok(Json(json!({
|
||||
"ok": true,
|
||||
"comment": comment
|
||||
})))
|
||||
}
|
||||
|
||||
async fn generate_ticket_number(db: &sqlx::PgPool) -> Result<String, StatusCode> {
|
||||
let count = sqlx::query_scalar::<_, i64>(r#"
|
||||
SELECT COUNT(*) FROM cc_tickets WHERE created_at > DATE_TRUNC('year', NOW())
|
||||
"#)
|
||||
.fetch_one(db)
|
||||
.await
|
||||
.map_err(|_| StatusCode::INTERNAL_SERVER_ERROR)?;
|
||||
|
||||
Ok(format!("SUP-{}", count + 1))
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
use axum::extract::ws::{WebSocket, Message};
|
||||
use std::sync::Arc;
|
||||
use crate::AppState;
|
||||
use futures::{sink::SinkExt, stream::StreamExt};
|
||||
|
||||
pub async fn handle_socket(socket: WebSocket, state: Arc<AppState>) {
|
||||
let (mut sender, mut receiver) = socket.split();
|
||||
let mut rx = state.tx.subscribe();
|
||||
|
||||
// Send welcome message
|
||||
let welcome = crate::models::WsMessage {
|
||||
event: "connected".to_string(),
|
||||
data: serde_json::json!({"service": "aamos-command-center"}),
|
||||
timestamp: chrono::Utc::now(),
|
||||
};
|
||||
let _ = sender.send(Message::Text(serde_json::to_string(&welcome).unwrap())).await;
|
||||
|
||||
// Spawn task to receive broadcast messages
|
||||
let mut send_task = tokio::spawn(async move {
|
||||
while let Ok(msg) = rx.recv().await {
|
||||
let text = serde_json::to_string(&msg).unwrap_or_default();
|
||||
if sender.send(Message::Text(text)).await.is_err() {
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Spawn task to receive client messages
|
||||
let tx = state.tx.clone();
|
||||
let mut recv_task = tokio::spawn(async move {
|
||||
while let Some(Ok(msg)) = receiver.next().await {
|
||||
if let Message::Text(text) = msg {
|
||||
// Parse client message and handle subscriptions
|
||||
if let Ok(json) = serde_json::from_str::<serde_json::Value>(&text) {
|
||||
if let Some(action) = json.get("action").and_then(|v| v.as_str()) {
|
||||
match action {
|
||||
"ping" => {
|
||||
let _ = tx.send(crate::models::WsMessage {
|
||||
event: "pong".to_string(),
|
||||
data: serde_json::json!({"timestamp": chrono::Utc::now().to_rfc3339()}),
|
||||
timestamp: chrono::Utc::now(),
|
||||
});
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Wait for either task to finish
|
||||
tokio::select! {
|
||||
_ = &mut send_task => recv_task.abort(),
|
||||
_ = &mut recv_task => send_task.abort(),
|
||||
}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
{"rustc_fingerprint":8170899571127002677,"outputs":{"7971740275564407648":{"success":true,"status":"","code":0,"stdout":"___\nlib___.rlib\nlib___.so\nlib___.so\nlib___.a\nlib___.so\n/home/bernt/.rustup/toolchains/stable-aarch64-unknown-linux-gnu\noff\npacked\nunpacked\n___\ndebug_assertions\npanic=\"unwind\"\nproc_macro\ntarget_abi=\"\"\ntarget_arch=\"aarch64\"\ntarget_endian=\"little\"\ntarget_env=\"gnu\"\ntarget_family=\"unix\"\ntarget_feature=\"neon\"\ntarget_has_atomic=\"128\"\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_os=\"linux\"\ntarget_pointer_width=\"64\"\ntarget_vendor=\"unknown\"\nunix\n","stderr":""},"12203715465990969353":{"success":true,"status":"","code":0,"stdout":"rustc 1.96.0 (ac68faa20 2026-05-25)\nbinary: rustc\ncommit-hash: ac68faa20c58cbccd01ee7208bf3b6e93a7d7f96\ncommit-date: 2026-05-25\nhost: aarch64-unknown-linux-gnu\nrelease: 1.96.0\nLLVM version: 22.1.2\n","stderr":""}},"successes":{}}
|
||||
@@ -0,0 +1,3 @@
|
||||
Signature: 8a477f597d28d172789f06886806bc55
|
||||
# This file is a cache directory tag created by cargo.
|
||||
# For information about cache directory tags see https://bford.info/cachedir/
|
||||
+1
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
{"$message_type":"diagnostic","message":"cannot find module or crate `futures` in this scope","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"src/routes/ws.rs","byte_start":90,"byte_end":97,"line_start":4,"line_end":4,"column_start":5,"column_end":12,"is_primary":true,"text":[{"text":"use futures::{sink::SinkExt, stream::StreamExt};","highlight_start":5,"highlight_end":12}],"label":"use of unresolved module or unlinked crate `futures`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"if you wanted to use a crate named `futures`, use `cargo add futures` to add it to your `Cargo.toml`","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `futures` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/routes/ws.rs:4:5\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m4\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use futures::{sink::SinkExt, stream::StreamExt};\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `futures`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `futures`, use `cargo add futures` to add it to your `Cargo.toml`\n\n"}
|
||||
{"$message_type":"diagnostic","message":"unused import: `Query`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":77,"byte_end":82,"line_start":4,"line_end":4,"column_start":28,"column_end":33,"is_primary":true,"text":[{"text":" extract::{State, Path, Query, WebSocketUpgrade},","highlight_start":28,"highlight_end":33}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"remove the unused import","code":null,"level":"help","spans":[{"file_name":"src/main.rs","byte_start":75,"byte_end":82,"line_start":4,"line_end":4,"column_start":26,"column_end":33,"is_primary":true,"text":[{"text":" extract::{State, Path, Query, WebSocketUpgrade},","highlight_start":26,"highlight_end":33}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused import: `Query`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/main.rs:4:28\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m4\u001b[0m \u001b[1m\u001b[94m|\u001b[0m extract::{State, Path, Query, WebSocketUpgrade},\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default\n\n"}
|
||||
{"$message_type":"diagnostic","message":"unused imports: `Deserialize` and `Serialize`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":186,"byte_end":197,"line_start":8,"line_end":8,"column_start":13,"column_end":24,"is_primary":true,"text":[{"text":"use serde::{Deserialize, Serialize};","highlight_start":13,"highlight_end":24}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/main.rs","byte_start":199,"byte_end":208,"line_start":8,"line_end":8,"column_start":26,"column_end":35,"is_primary":true,"text":[{"text":"use serde::{Deserialize, Serialize};","highlight_start":26,"highlight_end":35}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"remove the whole `use` item","code":null,"level":"help","spans":[{"file_name":"src/main.rs","byte_start":174,"byte_end":211,"line_start":8,"line_end":9,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use serde::{Deserialize, Serialize};","highlight_start":1,"highlight_end":37},{"text":"use sqlx::{PgPool, Row};","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused imports: `Deserialize` and `Serialize`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/main.rs:8:13\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m8\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use serde::{Deserialize, Serialize};\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^\u001b[0m\n\n"}
|
||||
{"$message_type":"diagnostic","message":"unused import: `DateTime`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":297,"byte_end":305,"line_start":12,"line_end":12,"column_start":14,"column_end":22,"is_primary":true,"text":[{"text":"use chrono::{DateTime, Utc};","highlight_start":14,"highlight_end":22}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"remove the unused import","code":null,"level":"help","spans":[{"file_name":"src/main.rs","byte_start":297,"byte_end":307,"line_start":12,"line_end":12,"column_start":14,"column_end":24,"is_primary":true,"text":[{"text":"use chrono::{DateTime, Utc};","highlight_start":14,"highlight_end":24}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null},{"file_name":"src/main.rs","byte_start":296,"byte_end":297,"line_start":12,"line_end":12,"column_start":13,"column_end":14,"is_primary":true,"text":[{"text":"use chrono::{DateTime, Utc};","highlight_start":13,"highlight_end":14}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null},{"file_name":"src/main.rs","byte_start":310,"byte_end":311,"line_start":12,"line_end":12,"column_start":27,"column_end":28,"is_primary":true,"text":[{"text":"use chrono::{DateTime, Utc};","highlight_start":27,"highlight_end":28}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused import: `DateTime`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/main.rs:12:14\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m12\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use chrono::{DateTime, Utc};\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^\u001b[0m\n\n"}
|
||||
{"$message_type":"diagnostic","message":"no method named `get` found for struct `PgRow` in the current scope","code":{"code":"E0599","explanation":"This error occurs when a method is used on a type which doesn't implement it:\n\nErroneous code example:\n\n```compile_fail,E0599\nstruct Mouth;\n\nlet x = Mouth;\nx.chocolate(); // error: no method named `chocolate` found for type `Mouth`\n // in the current scope\n```\n\nIn this case, you need to implement the `chocolate` method to fix the error:\n\n```\nstruct Mouth;\n\nimpl Mouth {\n fn chocolate(&self) { // We implement the `chocolate` method here.\n println!(\"Hmmm! I love chocolate!\");\n }\n}\n\nlet x = Mouth;\nx.chocolate(); // ok!\n```\n"},"level":"error","spans":[{"file_name":"src/routes/activity.rs","byte_start":1184,"byte_end":1187,"line_start":46,"line_end":46,"column_start":38,"column_end":41,"is_primary":true,"text":[{"text":" let id: uuid::Uuid = row.get(\"id\");","highlight_start":38,"highlight_end":41}],"label":"method not found in `PgRow`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"/home/bernt/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/sqlx-core-0.7.4/src/row.rs","byte_start":2060,"byte_end":2063,"line_start":67,"line_end":67,"column_start":8,"column_end":11,"is_primary":false,"text":[{"text":" fn get<'r, T, I>(&'r self, index: I) -> T","highlight_start":8,"highlight_end":11}],"label":"the method is available for `PgRow` here","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"items from traits can only be used if the trait is in scope","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"trait `Row` which provides `get` is implemented but not in scope; perhaps you want to import it","code":null,"level":"help","spans":[{"file_name":"src/routes/activity.rs","byte_start":0,"byte_end":0,"line_start":1,"line_end":1,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use axum::{","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"use sqlx::Row;\n","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0599]\u001b[0m\u001b[1m: no method named `get` found for struct `PgRow` in the current scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/routes/activity.rs:46:38\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m46\u001b[0m \u001b[1m\u001b[94m|\u001b[0m let id: uuid::Uuid = row.get(\"id\");\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^\u001b[0m \u001b[1m\u001b[91mmethod not found in `PgRow`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m::: \u001b[0m/home/bernt/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/sqlx-core-0.7.4/src/row.rs:67:8\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m67\u001b[0m \u001b[1m\u001b[94m|\u001b[0m fn get<'r, T, I>(&'r self, index: I) -> T\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m---\u001b[0m \u001b[1m\u001b[94mthe method is available for `PgRow` here\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: items from traits can only be used if the trait is in scope\n\u001b[1m\u001b[96mhelp\u001b[0m: trait `Row` which provides `get` is implemented but not in scope; perhaps you want to import it\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m 1\u001b[0m \u001b[92m+ use sqlx::Row;\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n\n"}
|
||||
{"$message_type":"diagnostic","message":"no method named `split` found for struct `WebSocket` in the current scope","code":{"code":"E0599","explanation":"This error occurs when a method is used on a type which doesn't implement it:\n\nErroneous code example:\n\n```compile_fail,E0599\nstruct Mouth;\n\nlet x = Mouth;\nx.chocolate(); // error: no method named `chocolate` found for type `Mouth`\n // in the current scope\n```\n\nIn this case, you need to implement the `chocolate` method to fix the error:\n\n```\nstruct Mouth;\n\nimpl Mouth {\n fn chocolate(&self) { // We implement the `chocolate` method here.\n println!(\"Hmmm! I love chocolate!\");\n }\n}\n\nlet x = Mouth;\nx.chocolate(); // ok!\n```\n"},"level":"error","spans":[{"file_name":"src/routes/ws.rs","byte_start":250,"byte_end":255,"line_start":7,"line_end":7,"column_start":45,"column_end":50,"is_primary":true,"text":[{"text":" let (mut sender, mut receiver) = socket.split();","highlight_start":45,"highlight_end":50}],"label":"method not found in `WebSocket`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"/home/bernt/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.32/src/stream/stream/mod.rs","byte_start":54735,"byte_end":54740,"line_start":1582,"line_end":1582,"column_start":8,"column_end":13,"is_primary":false,"text":[{"text":" fn split<Item>(self) -> (SplitSink<Self, Item>, SplitStream<Self>)","highlight_start":8,"highlight_end":13}],"label":"the method is available for `WebSocket` here","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"items from traits can only be used if the trait is in scope","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"trait `StreamExt` which provides `split` is implemented but not in scope; perhaps you want to import it","code":null,"level":"help","spans":[{"file_name":"src/routes/ws.rs","byte_start":0,"byte_end":0,"line_start":1,"line_end":1,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use axum::extract::ws::{WebSocket, Message};","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"use futures_util::stream::stream::StreamExt;\n","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0599]\u001b[0m\u001b[1m: no method named `split` found for struct `WebSocket` in the current scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/routes/ws.rs:7:45\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m 7\u001b[0m \u001b[1m\u001b[94m|\u001b[0m let (mut sender, mut receiver) = socket.split();\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mmethod not found in `WebSocket`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m::: \u001b[0m/home/bernt/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.32/src/stream/stream/mod.rs:1582:8\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m1582\u001b[0m \u001b[1m\u001b[94m|\u001b[0m fn split<Item>(self) -> (SplitSink<Self, Item>, SplitStream<Self>)\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m-----\u001b[0m \u001b[1m\u001b[94mthe method is available for `WebSocket` here\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: items from traits can only be used if the trait is in scope\n\u001b[1m\u001b[96mhelp\u001b[0m: trait `StreamExt` which provides `split` is implemented but not in scope; perhaps you want to import it\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m 1\u001b[0m \u001b[92m+ use futures_util::stream::stream::StreamExt;\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n\n"}
|
||||
{"$message_type":"diagnostic","message":"unused import: `Row`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":230,"byte_end":233,"line_start":9,"line_end":9,"column_start":20,"column_end":23,"is_primary":true,"text":[{"text":"use sqlx::{PgPool, Row};","highlight_start":20,"highlight_end":23}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused import: `Row`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/main.rs:9:20\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m9\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use sqlx::{PgPool, Row};\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^\u001b[0m\n\n"}
|
||||
{"$message_type":"diagnostic","message":"unused variable: `state`","code":{"code":"unused_variables","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":5917,"byte_end":5922,"line_start":159,"line_end":159,"column_start":29,"column_end":34,"is_primary":true,"text":[{"text":"async fn health_check(State(state): State<Arc<AppState>>) -> Json<serde_json::Value> {","highlight_start":29,"highlight_end":34}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"if this is intentional, prefix it with an underscore","code":null,"level":"help","spans":[{"file_name":"src/main.rs","byte_start":5917,"byte_end":5922,"line_start":159,"line_end":159,"column_start":29,"column_end":34,"is_primary":true,"text":[{"text":"async fn health_check(State(state): State<Arc<AppState>>) -> Json<serde_json::Value> {","highlight_start":29,"highlight_end":34}],"label":null,"suggested_replacement":"_state","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused variable: `state`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/main.rs:159:29\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m159\u001b[0m \u001b[1m\u001b[94m|\u001b[0m async fn health_check(State(state): State<Arc<AppState>>) -> Json<serde_json::Value> {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^\u001b[0m \u001b[1m\u001b[33mhelp: if this is intentional, prefix it with an underscore: `_state`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default\n\n"}
|
||||
{"$message_type":"diagnostic","message":"aborting due to 3 previous errors; 5 warnings emitted","code":null,"level":"error","spans":[],"children":[],"rendered":"\u001b[1m\u001b[91merror\u001b[0m\u001b[1m: aborting due to 3 previous errors; 5 warnings emitted\u001b[0m\n\n"}
|
||||
{"$message_type":"diagnostic","message":"Some errors have detailed explanations: E0433, E0599.","code":null,"level":"failure-note","spans":[],"children":[],"rendered":"\u001b[1mSome errors have detailed explanations: E0433, E0599.\u001b[0m\n"}
|
||||
{"$message_type":"diagnostic","message":"For more information about an error, try `rustc --explain E0433`.","code":null,"level":"failure-note","spans":[],"children":[],"rendered":"\u001b[1mFor more information about an error, try `rustc --explain E0433`.\u001b[0m\n"}
|
||||
+1
@@ -0,0 +1 @@
|
||||
dce5f7026febf321
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"rustc":3697274117413853022,"features":"[]","declared_features":"[]","target":13743846640444304018,"profile":2040997289075261528,"path":4942398508502643691,"deps":[[466357198569416633,"uuid",false,13314163933178013828],[3601586811267292532,"tower",false,13417398489940963700],[4093251733041599906,"futures",false,10653811629132285515],[4891297352905791595,"axum",false,6916359552836502021],[5380358770761950913,"tracing_subscriber",false,4694105582530304470],[8578586876803397814,"serde_json",false,6330154224915429150],[9394460649638301237,"tokio",false,11577086130116701328],[9904903520081483939,"anyhow",false,5013825234880771559],[10632374999838431203,"sqlx",false,3972580019833679762],[13548984313718623784,"serde",false,1332085600677865599],[14435908599267459652,"tower_http",false,16501737437271727441],[14757622794040968908,"tracing",false,15053511631705400711],[16117757646811882223,"chrono",false,8523123139449984762],[17325453097244291330,"reqwest",false,9490098874354004997]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/aamos-command-center-d6295ab4821edb52/dep-bin-aamos-command-center","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
|
||||
BIN
Binary file not shown.
+1
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
{"$message_type":"diagnostic","message":"unused imports: `Deserialize` and `Serialize`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":161,"byte_end":172,"line_start":8,"line_end":8,"column_start":13,"column_end":24,"is_primary":true,"text":[{"text":"use serde::{Deserialize, Serialize};","highlight_start":13,"highlight_end":24}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/main.rs","byte_start":174,"byte_end":183,"line_start":8,"line_end":8,"column_start":26,"column_end":35,"is_primary":true,"text":[{"text":"use serde::{Deserialize, Serialize};","highlight_start":26,"highlight_end":35}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"remove the whole `use` item","code":null,"level":"help","spans":[{"file_name":"src/main.rs","byte_start":149,"byte_end":186,"line_start":8,"line_end":9,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use serde::{Deserialize, Serialize};","highlight_start":1,"highlight_end":37},{"text":"use sqlx::PgPool;","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused imports: `Deserialize` and `Serialize`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/main.rs:8:13\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m8\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use serde::{Deserialize, Serialize};\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default\n\n"}
|
||||
{"$message_type":"diagnostic","message":"unused import: `DateTime`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":265,"byte_end":273,"line_start":12,"line_end":12,"column_start":14,"column_end":22,"is_primary":true,"text":[{"text":"use chrono::{DateTime, Utc};","highlight_start":14,"highlight_end":22}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"remove the unused import","code":null,"level":"help","spans":[{"file_name":"src/main.rs","byte_start":265,"byte_end":275,"line_start":12,"line_end":12,"column_start":14,"column_end":24,"is_primary":true,"text":[{"text":"use chrono::{DateTime, Utc};","highlight_start":14,"highlight_end":24}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null},{"file_name":"src/main.rs","byte_start":264,"byte_end":265,"line_start":12,"line_end":12,"column_start":13,"column_end":14,"is_primary":true,"text":[{"text":"use chrono::{DateTime, Utc};","highlight_start":13,"highlight_end":14}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null},{"file_name":"src/main.rs","byte_start":278,"byte_end":279,"line_start":12,"line_end":12,"column_start":27,"column_end":28,"is_primary":true,"text":[{"text":"use chrono::{DateTime, Utc};","highlight_start":27,"highlight_end":28}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused import: `DateTime`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/main.rs:12:14\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m12\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use chrono::{DateTime, Utc};\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^\u001b[0m\n\n"}
|
||||
{"$message_type":"diagnostic","message":"unused import: `sqlx::Row`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"src/routes/system.rs","byte_start":118,"byte_end":127,"line_start":7,"line_end":7,"column_start":5,"column_end":14,"is_primary":true,"text":[{"text":"use sqlx::Row;","highlight_start":5,"highlight_end":14}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused import: `sqlx::Row`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/routes/system.rs:7:5\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m7\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use sqlx::Row;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^\u001b[0m\n\n"}
|
||||
{"$message_type":"diagnostic","message":"unused variable: `line`","code":{"code":"unused_variables","explanation":null},"level":"warning","spans":[{"file_name":"src/routes/journal.rs","byte_start":5085,"byte_end":5089,"line_start":160,"line_end":160,"column_start":20,"column_end":24,"is_primary":true,"text":[{"text":"fn get_line_amount(line: &sqlx::postgres::PgRow, col: &str) -> i64 {","highlight_start":20,"highlight_end":24}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"if this is intentional, prefix it with an underscore","code":null,"level":"help","spans":[{"file_name":"src/routes/journal.rs","byte_start":5085,"byte_end":5089,"line_start":160,"line_end":160,"column_start":20,"column_end":24,"is_primary":true,"text":[{"text":"fn get_line_amount(line: &sqlx::postgres::PgRow, col: &str) -> i64 {","highlight_start":20,"highlight_end":24}],"label":null,"suggested_replacement":"_line","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused variable: `line`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/routes/journal.rs:160:20\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m160\u001b[0m \u001b[1m\u001b[94m|\u001b[0m fn get_line_amount(line: &sqlx::postgres::PgRow, col: &str) -> i64 {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^\u001b[0m \u001b[1m\u001b[33mhelp: if this is intentional, prefix it with an underscore: `_line`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default\n\n"}
|
||||
{"$message_type":"diagnostic","message":"unused variable: `col`","code":{"code":"unused_variables","explanation":null},"level":"warning","spans":[{"file_name":"src/routes/journal.rs","byte_start":5115,"byte_end":5118,"line_start":160,"line_end":160,"column_start":50,"column_end":53,"is_primary":true,"text":[{"text":"fn get_line_amount(line: &sqlx::postgres::PgRow, col: &str) -> i64 {","highlight_start":50,"highlight_end":53}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"if this is intentional, prefix it with an underscore","code":null,"level":"help","spans":[{"file_name":"src/routes/journal.rs","byte_start":5115,"byte_end":5118,"line_start":160,"line_end":160,"column_start":50,"column_end":53,"is_primary":true,"text":[{"text":"fn get_line_amount(line: &sqlx::postgres::PgRow, col: &str) -> i64 {","highlight_start":50,"highlight_end":53}],"label":null,"suggested_replacement":"_col","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused variable: `col`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/routes/journal.rs:160:50\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m160\u001b[0m \u001b[1m\u001b[94m|\u001b[0m fn get_line_amount(line: &sqlx::postgres::PgRow, col: &str) -> i64 {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^\u001b[0m \u001b[1m\u001b[33mhelp: if this is intentional, prefix it with an underscore: `_col`\u001b[0m\n\n"}
|
||||
{"$message_type":"diagnostic","message":"struct `DashboardData` is never constructed","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/models.rs","byte_start":3177,"byte_end":3190,"line_start":119,"line_end":119,"column_start":12,"column_end":25,"is_primary":true,"text":[{"text":"pub struct DashboardData {","highlight_start":12,"highlight_end":25}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: struct `DashboardData` is never constructed\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/models.rs:119:12\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m119\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub struct DashboardData {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default\n\n"}
|
||||
{"$message_type":"diagnostic","message":"function `get_line_amount` is never used","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/routes/journal.rs","byte_start":5069,"byte_end":5084,"line_start":160,"line_end":160,"column_start":4,"column_end":19,"is_primary":true,"text":[{"text":"fn get_line_amount(line: &sqlx::postgres::PgRow, col: &str) -> i64 {","highlight_start":4,"highlight_end":19}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: function `get_line_amount` is never used\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/routes/journal.rs:160:4\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m160\u001b[0m \u001b[1m\u001b[94m|\u001b[0m fn get_line_amount(line: &sqlx::postgres::PgRow, col: &str) -> i64 {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^^\u001b[0m\n\n"}
|
||||
{"$message_type":"diagnostic","message":"7 warnings emitted","code":null,"level":"warning","spans":[],"children":[],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: 7 warnings emitted\u001b[0m\n\n"}
|
||||
+1
@@ -0,0 +1 @@
|
||||
70264d2b4e38e90b
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"rustc":3697274117413853022,"features":"","declared_features":"","target":0,"profile":0,"path":0,"deps":[[966925859616469517,"build_script_build",false,8764269773167757054]],"local":[{"RerunIfChanged":{"output":"release/build/ahash-2128a1f7c33fd455/output","paths":["build.rs"]}}],"rustflags":[],"config":0,"compile_kind":0}
|
||||
Binary file not shown.
+1
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
@@ -0,0 +1 @@
|
||||
1b2c2a90b8f217d8
|
||||
@@ -0,0 +1 @@
|
||||
{"rustc":3697274117413853022,"features":"[\"default\", \"getrandom\", \"runtime-rng\", \"std\"]","declared_features":"[\"atomic-polyfill\", \"compile-time-rng\", \"const-random\", \"default\", \"getrandom\", \"nightly-arm-aes\", \"no-rng\", \"runtime-rng\", \"serde\", \"std\"]","target":8470944000320059508,"profile":1369601567987815722,"path":2020094898246813561,"deps":[[79267046858109197,"zerocopy",false,4449252968013707445],[966925859616469517,"build_script_build",false,858279112375871088],[5855319743879205494,"once_cell",false,11429620746451259838],[7667230146095136825,"cfg_if",false,12297556918775047994],[18408407127522236545,"getrandom",false,7768336562861587044]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/ahash-46b9e016838fb661/dep-lib-ahash","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
|
||||
+1
@@ -0,0 +1 @@
|
||||
fe865b71ecf0a079
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"rustc":3697274117413853022,"features":"[\"default\", \"getrandom\", \"runtime-rng\", \"std\"]","declared_features":"[\"atomic-polyfill\", \"compile-time-rng\", \"const-random\", \"default\", \"getrandom\", \"nightly-arm-aes\", \"no-rng\", \"runtime-rng\", \"serde\", \"std\"]","target":17883862002600103897,"profile":1369601567987815722,"path":11897047185095676549,"deps":[[5398981501050481332,"version_check",false,487759791671819314]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/ahash-a109f479d3fe2a1a/dep-build-script-build-script-build","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
|
||||
BIN
Binary file not shown.
+1
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
+1
@@ -0,0 +1 @@
|
||||
699edd0343dc7c91
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"rustc":3697274117413853022,"features":"","declared_features":"","target":0,"profile":0,"path":0,"deps":[[966925859616469517,"build_script_build",false,8764269773167757054]],"local":[{"RerunIfChanged":{"output":"release/build/ahash-d87fd7b23b5e55d6/output","paths":["build.rs"]}}],"rustflags":[],"config":0,"compile_kind":0}
|
||||
Binary file not shown.
+1
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
@@ -0,0 +1 @@
|
||||
c40625b9443c7101
|
||||
@@ -0,0 +1 @@
|
||||
{"rustc":3697274117413853022,"features":"[\"default\", \"getrandom\", \"runtime-rng\", \"std\"]","declared_features":"[\"atomic-polyfill\", \"compile-time-rng\", \"const-random\", \"default\", \"getrandom\", \"nightly-arm-aes\", \"no-rng\", \"runtime-rng\", \"serde\", \"std\"]","target":8470944000320059508,"profile":2040997289075261528,"path":2020094898246813561,"deps":[[79267046858109197,"zerocopy",false,10455971448249709888],[966925859616469517,"build_script_build",false,10483496212997447273],[5855319743879205494,"once_cell",false,13708832399288578193],[7667230146095136825,"cfg_if",false,78781898221383107],[18408407127522236545,"getrandom",false,17857847367574001760]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/ahash-ddf9877df20145c3/dep-lib-ahash","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
|
||||
BIN
Binary file not shown.
+1
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
+1
@@ -0,0 +1 @@
|
||||
b91bd00944dc64f9
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"rustc":3697274117413853022,"features":"[\"alloc\"]","declared_features":"[\"alloc\", \"default\", \"fresh-rust\", \"nightly\", \"serde\", \"std\"]","target":5388200169723499962,"profile":10062236005175321273,"path":16592327340390490763,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/allocator-api2-83b6be5b9350caaf/dep-lib-allocator_api2","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
|
||||
BIN
Binary file not shown.
+1
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
+1
@@ -0,0 +1 @@
|
||||
ae731c224888298d
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"rustc":3697274117413853022,"features":"[\"alloc\"]","declared_features":"[\"alloc\", \"default\", \"fresh-rust\", \"nightly\", \"serde\", \"std\"]","target":5388200169723499962,"profile":4067574213046180398,"path":16592327340390490763,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/allocator-api2-db2be312fdeda873/dep-lib-allocator_api2","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
|
||||
+1
@@ -0,0 +1 @@
|
||||
8ce038bb27011602
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"rustc":3697274117413853022,"features":"","declared_features":"","target":0,"profile":0,"path":0,"deps":[[9904903520081483939,"build_script_build",false,18300743111730497865]],"local":[{"RerunIfChanged":{"output":"release/build/anyhow-08cb2ff4e47de3ac/output","paths":["src/nightly.rs"]}},{"RerunIfEnvChanged":{"var":"RUSTC_BOOTSTRAP","val":null}}],"rustflags":[],"config":0,"compile_kind":0}
|
||||
+1
@@ -0,0 +1 @@
|
||||
49895f0ce64cf9fd
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"rustc":3697274117413853022,"features":"[\"default\", \"std\"]","declared_features":"[\"backtrace\", \"default\", \"std\"]","target":5408242616063297496,"profile":1369601567987815722,"path":1354822287789481398,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/anyhow-1f6d0840d3e453d5/dep-build-script-build-script-build","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
|
||||
BIN
Binary file not shown.
+1
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
BIN
Binary file not shown.
+1
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
@@ -0,0 +1 @@
|
||||
e735f59a7caf9445
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"rustc":3697274117413853022,"features":"[\"default\", \"std\"]","declared_features":"[\"backtrace\", \"default\", \"std\"]","target":1563897884725121975,"profile":2040997289075261528,"path":7352096870882260173,"deps":[[9904903520081483939,"build_script_build",false,150308907719909516]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/anyhow-7b53269cc05200e6/dep-lib-anyhow","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
|
||||
BIN
Binary file not shown.
+1
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
+1
@@ -0,0 +1 @@
|
||||
abea99005126c6a2
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"rustc":3697274117413853022,"features":"[]","declared_features":"[]","target":5116616278641129243,"profile":1369601567987815722,"path":2895544698071783192,"deps":[[1108254298283712113,"quote",false,12346198818348946717],[4289358735036141001,"proc_macro2",false,2466923278285998130],[14607138199358211871,"syn",false,4572365477969240138]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/async-trait-a6a582999a8deef6/dep-lib-async_trait","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
|
||||
Binary file not shown.
+1
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
@@ -0,0 +1 @@
|
||||
e601667fcd51cba2
|
||||
@@ -0,0 +1 @@
|
||||
{"rustc":3697274117413853022,"features":"[\"default\", \"std\"]","declared_features":"[\"default\", \"std\"]","target":2515742790907851906,"profile":1369601567987815722,"path":2403134588919879400,"deps":[[5157631553186200874,"num_traits",false,42896207284557825]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/atoi-0064c826a76e5f89/dep-lib-atoi","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
|
||||
Binary file not shown.
+1
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
@@ -0,0 +1 @@
|
||||
8ba7beac6d0dc58f
|
||||
@@ -0,0 +1 @@
|
||||
{"rustc":3697274117413853022,"features":"[\"default\", \"std\"]","declared_features":"[\"default\", \"std\"]","target":2515742790907851906,"profile":2040997289075261528,"path":2403134588919879400,"deps":[[5157631553186200874,"num_traits",false,11816299632926758166]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/atoi-6e299a341d90d959/dep-lib-atoi","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
|
||||
BIN
Binary file not shown.
+1
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
+1
@@ -0,0 +1 @@
|
||||
bccba2364a977929
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"rustc":3697274117413853022,"features":"[]","declared_features":"[\"portable-atomic\"]","target":14411119108718288063,"profile":2040997289075261528,"path":1915199519464942613,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/atomic-waker-e92db70727ec2e75/dep-lib-atomic_waker","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
|
||||
BIN
Binary file not shown.
+1
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
@@ -0,0 +1 @@
|
||||
28f83eb7c4603b33
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"rustc":3697274117413853022,"features":"[]","declared_features":"[]","target":6962977057026645649,"profile":1369601567987815722,"path":14691547496011824260,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/autocfg-cfdc11b3d5fe0685/dep-lib-autocfg","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
|
||||
Binary file not shown.
+1
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
@@ -0,0 +1 @@
|
||||
386576804a18e033
|
||||
@@ -0,0 +1 @@
|
||||
{"rustc":3697274117413853022,"features":"[\"default\", \"form\", \"http1\", \"json\", \"matched-path\", \"original-uri\", \"query\", \"tokio\", \"tower-log\", \"tracing\", \"ws\"]","declared_features":"[\"__private_docs\", \"default\", \"form\", \"http1\", \"http2\", \"json\", \"macros\", \"matched-path\", \"multipart\", \"original-uri\", \"query\", \"tokio\", \"tower-log\", \"tracing\", \"ws\"]","target":13920321295547257648,"profile":2040997289075261528,"path":2777920595211535039,"deps":[[784494742817713399,"tower_service",false,13268437010750965648],[2251399859588827949,"pin_project_lite",false,4988885227890412228],[2517136641825875337,"sync_wrapper",false,9967902423730930190],[3035134586790830808,"hyper",false,11334262305789857279],[3632162862999675140,"tower",false,9916666817685877602],[4359148418957042248,"axum_core",false,8999396517395582592],[5532778797167691009,"itoa",false,9619087413982131351],[5898568623609459682,"futures_util",false,15827704604205561787],[6328167575312831016,"tokio_tungstenite",false,10026229969675686880],[6803352382179706244,"percent_encoding",false,4348505878887178983],[7712452662827335977,"tower_layer",false,16973315690600901494],[8434571480224112386,"bytes",false,4425361270097965852],[8578586876803397814,"serde_json",false,6330154224915429150],[9394460649638301237,"tokio",false,11577086130116701328],[9678799920983747518,"matchit",false,11820823362860415402],[10229185211513642314,"mime",false,14363291638445985122],[10724389056617919257,"sha1",false,13198119103114331693],[11976082518617474977,"hyper_util",false,3337409609833092611],[13077212702700853852,"base64",false,197710843633282383],[13548984313718623784,"serde",false,1332085600677865599],[14084095096285906100,"http_body",false,2930543157708824510],[14156967978702956262,"rustversion",false,7272959064236923847],[14757622794040968908,"tracing",false,15053511631705400711],[14814583949208169760,"serde_path_to_error",false,10827638316209562049],[16542808166767769916,"serde_urlencoded",false,4964168753835487659],[16611674984963787466,"async_trait",false,11729104408877329067],[16786944793543832643,"memchr",false,15529009039555133791],[16900715236047033623,"http_body_util",false,8257837912677915635],[17371538545939333701,"http",false,4012937700050230857]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/axum-ad1939b3d5f2e291/dep-lib-axum","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
|
||||
BIN
Binary file not shown.
+1
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
+1
@@ -0,0 +1 @@
|
||||
eb7fa0eaa944353d
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"rustc":3697274117413853022,"features":"[\"tracing\"]","declared_features":"[\"__private_docs\", \"tracing\"]","target":2565713999752801252,"profile":2040997289075261528,"path":15292076425892459978,"deps":[[784494742817713399,"tower_service",false,13268437010750965648],[2251399859588827949,"pin_project_lite",false,4988885227890412228],[2517136641825875337,"sync_wrapper",false,9967902423730930190],[5898568623609459682,"futures_util",false,3244146915438064489],[7712452662827335977,"tower_layer",false,16973315690600901494],[8434571480224112386,"bytes",false,4425361270097965852],[10229185211513642314,"mime",false,14363291638445985122],[14084095096285906100,"http_body",false,2930543157708824510],[14156967978702956262,"rustversion",false,7272959064236923847],[14757622794040968908,"tracing",false,15053511631705400711],[16611674984963787466,"async_trait",false,11729104408877329067],[16900715236047033623,"http_body_util",false,8257837912677915635],[17371538545939333701,"http",false,4012937700050230857]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/axum-core-486a6d8aaf2fcff2/dep-lib-axum_core","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
|
||||
BIN
Binary file not shown.
+1
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
+1
@@ -0,0 +1 @@
|
||||
804e40a47347e47c
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"rustc":3697274117413853022,"features":"[\"tracing\"]","declared_features":"[\"__private_docs\", \"tracing\"]","target":2565713999752801252,"profile":2040997289075261528,"path":15292076425892459978,"deps":[[784494742817713399,"tower_service",false,13268437010750965648],[2251399859588827949,"pin_project_lite",false,4988885227890412228],[2517136641825875337,"sync_wrapper",false,9967902423730930190],[5898568623609459682,"futures_util",false,15827704604205561787],[7712452662827335977,"tower_layer",false,16973315690600901494],[8434571480224112386,"bytes",false,4425361270097965852],[10229185211513642314,"mime",false,14363291638445985122],[14084095096285906100,"http_body",false,2930543157708824510],[14156967978702956262,"rustversion",false,7272959064236923847],[14757622794040968908,"tracing",false,15053511631705400711],[16611674984963787466,"async_trait",false,11729104408877329067],[16900715236047033623,"http_body_util",false,8257837912677915635],[17371538545939333701,"http",false,4012937700050230857]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/axum-core-820084131f1d62bf/dep-lib-axum_core","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
|
||||
Binary file not shown.
+1
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
@@ -0,0 +1 @@
|
||||
0502b36d5ed8fb5f
|
||||
@@ -0,0 +1 @@
|
||||
{"rustc":3697274117413853022,"features":"[\"default\", \"form\", \"http1\", \"json\", \"matched-path\", \"original-uri\", \"query\", \"tokio\", \"tower-log\", \"tracing\", \"ws\"]","declared_features":"[\"__private_docs\", \"default\", \"form\", \"http1\", \"http2\", \"json\", \"macros\", \"matched-path\", \"multipart\", \"original-uri\", \"query\", \"tokio\", \"tower-log\", \"tracing\", \"ws\"]","target":13920321295547257648,"profile":2040997289075261528,"path":2777920595211535039,"deps":[[784494742817713399,"tower_service",false,13268437010750965648],[2251399859588827949,"pin_project_lite",false,4988885227890412228],[2517136641825875337,"sync_wrapper",false,9967902423730930190],[3035134586790830808,"hyper",false,11334262305789857279],[3632162862999675140,"tower",false,12058093873794674540],[4359148418957042248,"axum_core",false,4410506906655817707],[5532778797167691009,"itoa",false,9619087413982131351],[5898568623609459682,"futures_util",false,3244146915438064489],[6328167575312831016,"tokio_tungstenite",false,5622269469770863541],[6803352382179706244,"percent_encoding",false,4348505878887178983],[7712452662827335977,"tower_layer",false,16973315690600901494],[8434571480224112386,"bytes",false,4425361270097965852],[8578586876803397814,"serde_json",false,6330154224915429150],[9394460649638301237,"tokio",false,11577086130116701328],[9678799920983747518,"matchit",false,11820823362860415402],[10229185211513642314,"mime",false,14363291638445985122],[10724389056617919257,"sha1",false,13198119103114331693],[11976082518617474977,"hyper_util",false,7546939297342787201],[13077212702700853852,"base64",false,197710843633282383],[13548984313718623784,"serde",false,1332085600677865599],[14084095096285906100,"http_body",false,2930543157708824510],[14156967978702956262,"rustversion",false,7272959064236923847],[14757622794040968908,"tracing",false,15053511631705400711],[14814583949208169760,"serde_path_to_error",false,10827638316209562049],[16542808166767769916,"serde_urlencoded",false,4964168753835487659],[16611674984963787466,"async_trait",false,11729104408877329067],[16786944793543832643,"memchr",false,15529009039555133791],[16900715236047033623,"http_body_util",false,8257837912677915635],[17371538545939333701,"http",false,4012937700050230857]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/axum-f6ed3ea7382f4a56/dep-lib-axum","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
|
||||
BIN
Binary file not shown.
+1
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
@@ -0,0 +1 @@
|
||||
dbb3ff5d503a843a
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"rustc":3697274117413853022,"features":"[\"alloc\", \"std\"]","declared_features":"[\"alloc\", \"default\", \"std\"]","target":13060062996227388079,"profile":1369601567987815722,"path":12316733041402139766,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/base64-1b1c28ee28a62fb1/dep-lib-base64","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
|
||||
BIN
Binary file not shown.
+1
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
@@ -0,0 +1 @@
|
||||
8510bbef8956e341
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"rustc":3697274117413853022,"features":"[\"alloc\", \"std\"]","declared_features":"[\"alloc\", \"default\", \"std\"]","target":13060062996227388079,"profile":2040997289075261528,"path":12316733041402139766,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/base64-56ada73a3c1aa3ca/dep-lib-base64","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
|
||||
BIN
Binary file not shown.
+1
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
@@ -0,0 +1 @@
|
||||
4f2d01fbf668be02
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"rustc":3697274117413853022,"features":"[\"alloc\", \"default\", \"std\"]","declared_features":"[\"alloc\", \"default\", \"std\"]","target":13060062996227388079,"profile":2040997289075261528,"path":7660686688554485333,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/base64-bffeb343559b9b16/dep-lib-base64","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
|
||||
BIN
Binary file not shown.
+1
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
+1
@@ -0,0 +1 @@
|
||||
31d86eb4b5baa76d
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"rustc":3697274117413853022,"features":"[\"std\"]","declared_features":"[\"arbitrary\", \"bytemuck\", \"example_generated\", \"serde\", \"serde_core\", \"std\"]","target":7691312148208718491,"profile":1369601567987815722,"path":13133951523946053133,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/bitflags-6ce4be5c3479e6ec/dep-lib-bitflags","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
|
||||
BIN
Binary file not shown.
+1
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
+1
@@ -0,0 +1 @@
|
||||
04265406d8dfdc86
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"rustc":3697274117413853022,"features":"[]","declared_features":"[\"arbitrary\", \"bytemuck\", \"example_generated\", \"serde\", \"serde_core\", \"std\"]","target":7691312148208718491,"profile":2040997289075261528,"path":13133951523946053133,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/bitflags-765f98ff397854cf/dep-lib-bitflags","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
|
||||
BIN
Binary file not shown.
+1
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
+1
@@ -0,0 +1 @@
|
||||
ff9686275df0f009
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"rustc":3697274117413853022,"features":"[]","declared_features":"[]","target":4098124618827574291,"profile":2040997289075261528,"path":8971532964010153708,"deps":[[10520923840501062997,"generic_array",false,18023817528693748459]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/block-buffer-7b70ef144a3336c4/dep-lib-block_buffer","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
|
||||
BIN
Binary file not shown.
+1
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
+1
@@ -0,0 +1 @@
|
||||
699af8722d84341b
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"rustc":3697274117413853022,"features":"[]","declared_features":"[]","target":4098124618827574291,"profile":1369601567987815722,"path":8971532964010153708,"deps":[[10520923840501062997,"generic_array",false,17349179184171357899]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/block-buffer-df064aa4a1a56479/dep-lib-block_buffer","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
|
||||
BIN
Binary file not shown.
+1
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
+1
@@ -0,0 +1 @@
|
||||
f1d40d367008c068
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"rustc":3697274117413853022,"features":"[\"default\", \"std\"]","declared_features":"[\"default\", \"i128\", \"std\"]","target":8344828840634961491,"profile":2040997289075261528,"path":17947950383692024843,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/byteorder-6e3a8fd85d179480/dep-lib-byteorder","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
|
||||
BIN
Binary file not shown.
+1
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
+1
@@ -0,0 +1 @@
|
||||
5c9bd2b0767f82db
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"rustc":3697274117413853022,"features":"[\"std\"]","declared_features":"[\"default\", \"i128\", \"std\"]","target":8344828840634961491,"profile":1369601567987815722,"path":17947950383692024843,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/byteorder-ab39bdd0ab6eaeda/dep-lib-byteorder","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
|
||||
Binary file not shown.
+1
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
@@ -0,0 +1 @@
|
||||
4457968be49d70ef
|
||||
@@ -0,0 +1 @@
|
||||
{"rustc":3697274117413853022,"features":"[\"default\", \"std\"]","declared_features":"[\"default\", \"extra-platforms\", \"serde\", \"std\"]","target":11402411492164584411,"profile":10956697789842490599,"path":14243994348687718714,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/bytes-7d9603e547682af6/dep-lib-bytes","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
|
||||
Binary file not shown.
+1
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
@@ -0,0 +1 @@
|
||||
1cf3f5eaa00a6a3d
|
||||
@@ -0,0 +1 @@
|
||||
{"rustc":3697274117413853022,"features":"[\"default\", \"std\"]","declared_features":"[\"default\", \"extra-platforms\", \"serde\", \"std\"]","target":11402411492164584411,"profile":3654867079619179846,"path":14243994348687718714,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/bytes-9ab8679fb35a705d/dep-lib-bytes","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
|
||||
Binary file not shown.
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
@@ -0,0 +1 @@
|
||||
e8992adcbd0d7470
|
||||
@@ -0,0 +1 @@
|
||||
{"rustc":3697274117413853022,"features":"[]","declared_features":"[\"jobserver\", \"parallel\"]","target":11042037588551934598,"profile":18369320580169568572,"path":3602324827183593128,"deps":[[9159843920629750842,"find_msvc_tools",false,12326584652456874931],[12678166843757613889,"shlex",false,13488784663550082227]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/cc-10a7ab8c6e897f7f/dep-lib-cc","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
|
||||
BIN
Binary file not shown.
+1
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
@@ -0,0 +1 @@
|
||||
3ae7bbc4dcb2a9aa
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"rustc":3697274117413853022,"features":"[]","declared_features":"[\"core\", \"rustc-dep-of-std\"]","target":13840298032947503755,"profile":1369601567987815722,"path":9433148093347736929,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/cfg-if-19b6a7ba2a83a898/dep-lib-cfg_if","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
|
||||
BIN
Binary file not shown.
+1
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
@@ -0,0 +1 @@
|
||||
c36d3712b8e31701
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"rustc":3697274117413853022,"features":"[]","declared_features":"[\"core\", \"rustc-dep-of-std\"]","target":13840298032947503755,"profile":2040997289075261528,"path":9433148093347736929,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/cfg-if-c28393f1568b0153/dep-lib-cfg_if","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
|
||||
BIN
Binary file not shown.
+1
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
@@ -0,0 +1 @@
|
||||
ae288ec725e743e4
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"rustc":3697274117413853022,"features":"[\"alloc\", \"clock\", \"iana-time-zone\", \"now\", \"std\", \"winapi\", \"windows-link\"]","declared_features":"[\"__internal_bench\", \"alloc\", \"arbitrary\", \"clock\", \"core-error\", \"default\", \"defmt\", \"iana-time-zone\", \"js-sys\", \"libc\", \"now\", \"oldtime\", \"pure-rust-locales\", \"rkyv\", \"rkyv-16\", \"rkyv-32\", \"rkyv-64\", \"rkyv-validation\", \"serde\", \"std\", \"unstable-locales\", \"wasm-bindgen\", \"wasmbind\", \"winapi\", \"windows-link\"]","target":15315924755136109342,"profile":1369601567987815722,"path":17780376413348889854,"deps":[[5157631553186200874,"num_traits",false,42896207284557825],[16619627449254928351,"iana_time_zone",false,13207134618162654502]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/chrono-36ff978373637af3/dep-lib-chrono","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
|
||||
BIN
Binary file not shown.
+1
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
@@ -0,0 +1 @@
|
||||
fa16d47f56374876
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"rustc":3697274117413853022,"features":"[\"alloc\", \"clock\", \"default\", \"iana-time-zone\", \"js-sys\", \"now\", \"oldtime\", \"serde\", \"std\", \"wasm-bindgen\", \"wasmbind\", \"winapi\", \"windows-link\"]","declared_features":"[\"__internal_bench\", \"alloc\", \"arbitrary\", \"clock\", \"core-error\", \"default\", \"defmt\", \"iana-time-zone\", \"js-sys\", \"libc\", \"now\", \"oldtime\", \"pure-rust-locales\", \"rkyv\", \"rkyv-16\", \"rkyv-32\", \"rkyv-64\", \"rkyv-validation\", \"serde\", \"std\", \"unstable-locales\", \"wasm-bindgen\", \"wasmbind\", \"winapi\", \"windows-link\"]","target":15315924755136109342,"profile":2040997289075261528,"path":17780376413348889854,"deps":[[5157631553186200874,"num_traits",false,11816299632926758166],[13548984313718623784,"serde",false,1332085600677865599],[16619627449254928351,"iana_time_zone",false,9712474382341530848]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/chrono-8b6d91dfd9c87b8d/dep-lib-chrono","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
|
||||
BIN
Binary file not shown.
+1
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
+1
@@ -0,0 +1 @@
|
||||
d97b92bc5c0db396
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"rustc":3697274117413853022,"features":"[]","declared_features":"[]","target":2330704043955282025,"profile":1369601567987815722,"path":4698599470321272043,"deps":[[7098700569944897890,"libc",false,13849914081516727938]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/cpufeatures-291c8773766a01e5/dep-lib-cpufeatures","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
|
||||
BIN
Binary file not shown.
+1
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
+1
@@ -0,0 +1 @@
|
||||
33ab5fd3c5ffdebb
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"rustc":3697274117413853022,"features":"[]","declared_features":"[]","target":2330704043955282025,"profile":2040997289075261528,"path":4698599470321272043,"deps":[[7098700569944897890,"libc",false,10358284356093817449]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/cpufeatures-a523430da0ca9835/dep-lib-cpufeatures","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
|
||||
Binary file not shown.
+1
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
@@ -0,0 +1 @@
|
||||
5adb824f4981be01
|
||||
@@ -0,0 +1 @@
|
||||
{"rustc":3697274117413853022,"features":"[]","declared_features":"[]","target":4924338683985979974,"profile":1369601567987815722,"path":4579834031769683611,"deps":[[17276112982712585484,"crc_catalog",false,979082227148354880]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/crc-9a16845da344a42f/dep-lib-crc","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
|
||||
Binary file not shown.
+1
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
@@ -0,0 +1 @@
|
||||
1dd3841f53cfb741
|
||||
@@ -0,0 +1 @@
|
||||
{"rustc":3697274117413853022,"features":"[]","declared_features":"[]","target":4924338683985979974,"profile":2040997289075261528,"path":4579834031769683611,"deps":[[17276112982712585484,"crc_catalog",false,2624612491466594195]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/crc-9c880b0ef6c7b4df/dep-lib-crc","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
|
||||
BIN
Binary file not shown.
+1
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
+1
@@ -0,0 +1 @@
|
||||
9357ebba277f6c24
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"rustc":3697274117413853022,"features":"[]","declared_features":"[]","target":11450272957467397601,"profile":2040997289075261528,"path":5419088916058686867,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/crc-catalog-acdad7ed5cd000c9/dep-lib-crc_catalog","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
|
||||
BIN
Binary file not shown.
+1
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
+1
@@ -0,0 +1 @@
|
||||
407513231966960d
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"rustc":3697274117413853022,"features":"[]","declared_features":"[]","target":11450272957467397601,"profile":1369601567987815722,"path":5419088916058686867,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/crc-catalog-debd8a67b9e5b85b/dep-lib-crc_catalog","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
|
||||
BIN
Binary file not shown.
+1
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
+1
@@ -0,0 +1 @@
|
||||
39983ed59b225cf2
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"rustc":3697274117413853022,"features":"[\"alloc\", \"default\", \"std\"]","declared_features":"[\"alloc\", \"default\", \"nightly\", \"std\"]","target":13714723178665796468,"profile":1419616050453328851,"path":10291709336219218876,"deps":[[4468123440088164316,"crossbeam_utils",false,10202621124655566643]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/crossbeam-queue-1e7eeea1eff2848d/dep-lib-crossbeam_queue","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
|
||||
BIN
Binary file not shown.
+1
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
+1
@@ -0,0 +1 @@
|
||||
1fced9f02f753252
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"rustc":3697274117413853022,"features":"[\"alloc\", \"default\", \"std\"]","declared_features":"[\"alloc\", \"default\", \"nightly\", \"std\"]","target":13714723178665796468,"profile":14791228037615401302,"path":10291709336219218876,"deps":[[4468123440088164316,"crossbeam_utils",false,9834928380622053575]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/crossbeam-queue-224f01e201c18748/dep-lib-crossbeam_queue","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
|
||||
BIN
Binary file not shown.
+1
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
+1
@@ -0,0 +1 @@
|
||||
33cffd68dbfd968d
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"rustc":3697274117413853022,"features":"[\"std\"]","declared_features":"[\"default\", \"loom\", \"nightly\", \"std\"]","target":9626079250877207070,"profile":1419616050453328851,"path":6220781806239848824,"deps":[[4468123440088164316,"build_script_build",false,7946094511563512321]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/crossbeam-utils-1d16bcd9af708a31/dep-lib-crossbeam_utils","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
|
||||
BIN
Binary file not shown.
+1
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
+1
@@ -0,0 +1 @@
|
||||
c7a0622641af7c88
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"rustc":3697274117413853022,"features":"[\"std\"]","declared_features":"[\"default\", \"loom\", \"nightly\", \"std\"]","target":9626079250877207070,"profile":14791228037615401302,"path":6220781806239848824,"deps":[[4468123440088164316,"build_script_build",false,6034848981002075972]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/crossbeam-utils-55d5552e13fd23ee/dep-lib-crossbeam_utils","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user