Merge pull request #383 from spacedriveapp/use-rust-shortcuts

This commit is contained in:
maxichrome 2022-09-15 04:12:08 -05:00 committed by GitHub
commit 8c5ce8ef81
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
12 changed files with 316 additions and 224 deletions

303
Cargo.lock generated
View file

@ -42,33 +42,33 @@ dependencies = [
[[package]]
name = "aho-corasick"
version = "0.7.18"
version = "0.7.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f"
checksum = "b4f55bd91a0978cbfd91c457a164bab8b4001c833b7f323132c0a4e1922dd44e"
dependencies = [
"memchr",
]
[[package]]
name = "alloc-no-stdlib"
version = "2.0.3"
version = "2.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "35ef4730490ad1c4eae5c4325b2a95f521d023e5c885853ff7aca0a6a1631db3"
checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3"
[[package]]
name = "alloc-stdlib"
version = "0.2.1"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "697ed7edc0f1711de49ce108c541623a0af97c6c60b2f6e2b65229847ac843c2"
checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece"
dependencies = [
"alloc-no-stdlib",
]
[[package]]
name = "android_system_properties"
version = "0.1.4"
version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d7ed72e1635e121ca3e79420540282af22da58be50de153d36f81ddc6b83aa9e"
checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
dependencies = [
"libc",
]
@ -84,9 +84,9 @@ dependencies = [
[[package]]
name = "anyhow"
version = "1.0.62"
version = "1.0.65"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1485d4d2cc45e7b201ee3767015c96faa5904387c9d87c6efdd0fb511f12d305"
checksum = "98161a4e3e2184da77bb14f02184cdd111e83bbbcc9979dfee3c44b9a85f5602"
[[package]]
name = "arrayvec"
@ -227,9 +227,9 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
[[package]]
name = "axum"
version = "0.5.15"
version = "0.5.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9de18bc5f2e9df8f52da03856bf40e29b747de5a84e43aefff90e3dc4a21529b"
checksum = "c9e3356844c4d6a6d6467b8da2cffb4a2820be256f50a3a386c9d152bab31043"
dependencies = [
"async-trait",
"axum-core",
@ -261,9 +261,9 @@ dependencies = [
[[package]]
name = "axum-core"
version = "0.2.7"
version = "0.2.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e4f44a0e6200e9d11a1cdc989e4b358f6e3d354fbf48478f345a17f4e43f8635"
checksum = "d9f0c0a60006f2a293d82d571f635042a72edf927539b7685bd62d361963839b"
dependencies = [
"async-trait",
"bytes",
@ -271,6 +271,8 @@ dependencies = [
"http",
"http-body",
"mime",
"tower-layer",
"tower-service",
]
[[package]]
@ -371,9 +373,9 @@ dependencies = [
[[package]]
name = "bitvec"
version = "0.22.3"
version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5237f00a8c86130a0cc317830e558b966dd7850d48a953d998c813f01a41b527"
checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c"
dependencies = [
"funty",
"radium",
@ -398,9 +400,9 @@ dependencies = [
[[package]]
name = "block-buffer"
version = "0.10.2"
version = "0.10.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0bf7fe51849ea569fd452f37822f606a5cabb684dc918707a0193fd4664ff324"
checksum = "69cce20737498f97b993470a6e536b8523f0af7892a4f928cceb1ac5e52ebe7e"
dependencies = [
"generic-array",
]
@ -506,9 +508,9 @@ dependencies = [
[[package]]
name = "cargo_toml"
version = "0.11.5"
version = "0.11.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5809dd3e6444651fd1cdd3dbec71eca438c439a0fcc8081674a14da0afe50185"
checksum = "a4419e9adae9fd7e231b60d50467481bf8181ddeef6ed54683b23ae925c74c9c"
dependencies = [
"serde",
"serde_derive",
@ -697,10 +699,11 @@ dependencies = [
[[package]]
name = "connection-string"
version = "0.1.13"
version = "0.1.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b97faeec45f49581c458f8bf81992c5e3ec17d82cda99f59d3cea14eff62698d"
checksum = "8c4ecb0dc8c35d2c626e45ae70bbfcb1050b302f42bcdf025d913cc0c5a0b443"
dependencies = [
"js-sys",
"wasm-bindgen",
]
@ -759,9 +762,9 @@ dependencies = [
[[package]]
name = "cpufeatures"
version = "0.2.4"
version = "0.2.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dc948ebb96241bb40ab73effeb80d9f93afaad49359d159a5e61be51619fe813"
checksum = "28d997bd5e24a5928dd43e46dc529867e207907fe0b239c3477d924f7f2ca320"
dependencies = [
"libc",
]
@ -1054,15 +1057,6 @@ dependencies = [
"byteorder",
]
[[package]]
name = "deflate"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c86f7e25f518f4b81808a2cf1c50996a61f5c2eb394b2393bd87f2a4780a432f"
dependencies = [
"adler32",
]
[[package]]
name = "derivative"
version = "2.2.0"
@ -1120,7 +1114,7 @@ version = "0.10.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506"
dependencies = [
"block-buffer 0.10.2",
"block-buffer 0.10.3",
"crypto-common",
"subtle",
]
@ -1504,11 +1498,10 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
[[package]]
name = "form_urlencoded"
version = "1.0.1"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191"
checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8"
dependencies = [
"matches",
"percent-encoding",
]
@ -1584,9 +1577,9 @@ checksum = "2022715d62ab30faffd124d40b76f4134a550a87792276512b18d63272333394"
[[package]]
name = "funty"
version = "1.2.0"
version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1847abb9cb65d566acd5942e94aea9c8f547ad02c98e1649326fc0e8910b8b1e"
checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c"
[[package]]
name = "futf"
@ -2038,7 +2031,7 @@ dependencies = [
"indexmap",
"slab",
"tokio",
"tokio-util 0.7.3",
"tokio-util 0.7.4",
"tracing",
]
@ -2185,9 +2178,9 @@ checksum = "0bfe8eed0a9285ef776bb792479ea3834e8b94e13d615c2f66d03dd50a435a29"
[[package]]
name = "httparse"
version = "1.7.1"
version = "1.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "496ce29bb5a52785b44e0f7ca2847ae0bb839c9bd28f69acac9b99d461c0c04c"
checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904"
[[package]]
name = "httpdate"
@ -2234,13 +2227,14 @@ dependencies = [
[[package]]
name = "iana-time-zone"
version = "0.1.46"
version = "0.1.48"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ad2bfd338099682614d3ee3fe0cd72e0b6a41ca6a87f6a74a3bd593c91650501"
checksum = "237a0714f28b1ee39ccec0770ccb544eb02c9ef2c82bb096230eefcffa6468b0"
dependencies = [
"android_system_properties",
"core-foundation-sys",
"js-sys",
"once_cell",
"wasm-bindgen",
"winapi",
]
@ -2272,6 +2266,16 @@ dependencies = [
"unicode-normalization",
]
[[package]]
name = "idna"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6"
dependencies = [
"unicode-bidi",
"unicode-normalization",
]
[[package]]
name = "ignore"
version = "0.4.18"
@ -2318,7 +2322,7 @@ dependencies = [
"jpeg-decoder",
"num-rational",
"num-traits",
"png 0.17.5",
"png 0.17.6",
"scoped_threadpool",
"tiff",
]
@ -2430,9 +2434,9 @@ checksum = "879d54834c8c76457ef4293a689b2a8c59b076067ad77b15efafbb05f92a592b"
[[package]]
name = "itertools"
version = "0.10.3"
version = "0.10.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3"
checksum = "d8bf247779e67a9082a4790b45e71ac7cfd1321331a5c856a74a9faebdab78d0"
dependencies = [
"either",
]
@ -2526,9 +2530,9 @@ dependencies = [
[[package]]
name = "js-sys"
version = "0.3.59"
version = "0.3.56"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "258451ab10b34f8af53416d1fdab72c22e805f0c92a1136d59470ec0b11138b2"
checksum = "a38fc24e30fd564ce974c02bf1d337caddff65be6cc4735a1f7eab22a7440f04"
dependencies = [
"wasm-bindgen",
]
@ -2898,9 +2902,9 @@ checksum = "73cbba799671b762df5a175adf59ce145165747bb891505c43d09aefbbf38beb"
[[package]]
name = "md-5"
version = "0.10.1"
version = "0.10.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "658646b21e0b72f7866c7038ab086d3d5e1cd6271f060fd37defb241949d0582"
checksum = "66b48670c893079d3c2ed79114e3644b7004df1c361a4e0ad52e2e6940d07c3d"
dependencies = [
"digest 0.10.3",
]
@ -3065,9 +3069,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
[[package]]
name = "miniz_oxide"
version = "0.5.3"
version = "0.5.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6f5c75688da582b8ffc1f1799e9db273f32133c49e048f614d22ec3256773ccc"
checksum = "96590ba8f175222643a85693f33d26e9c8a015f599c216509b1a6894af675d34"
dependencies = [
"adler",
]
@ -3132,7 +3136,7 @@ dependencies = [
"serde_bytes",
"serde_with",
"sha-1",
"sha2 0.10.2",
"sha2 0.10.5",
"socket2",
"stringprep",
"strsim",
@ -3140,7 +3144,7 @@ dependencies = [
"thiserror",
"tokio",
"tokio-rustls",
"tokio-util 0.7.3",
"tokio-util 0.7.4",
"trust-dns-proto",
"trust-dns-resolver",
"typed-builder",
@ -3257,8 +3261,8 @@ dependencies = [
[[package]]
name = "mysql_async"
version = "0.29.0"
source = "git+https://github.com/prisma/mysql_async?branch=vendored-openssl#650f07121681ada8a5baec3669197e5ce7e0e6d7"
version = "0.30.0"
source = "git+https://github.com/prisma/mysql_async?branch=vendored-openssl#e3f8bdb41d57e769412f53d0f479bf67fdcc0ee3"
dependencies = [
"bytes",
"crossbeam",
@ -3281,17 +3285,16 @@ dependencies = [
"thiserror",
"tokio",
"tokio-native-tls 0.3.0 (git+https://github.com/pimeys/tls?branch=vendored-openssl)",
"tokio-util 0.6.10",
"tokio-util 0.7.4",
"twox-hash",
"url",
"uuid 0.8.2",
]
[[package]]
name = "mysql_common"
version = "0.28.2"
version = "0.29.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4140827f2d12750de1e8755442577e4292a835f26ff2f659f0a380d1d71020b0"
checksum = "522f2f30f72de409fc04f88df25a031f98cfc5c398a94e0b892cabb33a1464cb"
dependencies = [
"base64 0.13.0",
"bigdecimal 0.3.0",
@ -3316,12 +3319,12 @@ dependencies = [
"serde",
"serde_json",
"sha-1",
"sha2 0.10.2",
"sha2 0.10.5",
"smallvec",
"subprocess",
"thiserror",
"time 0.3.14",
"uuid 0.8.2",
"uuid 1.1.2",
]
[[package]]
@ -3622,9 +3625,9 @@ dependencies = [
[[package]]
name = "once_cell"
version = "1.13.1"
version = "1.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "074864da206b4973b84eb91683020dbefd6a8c3f0f38e054d93954e891935e4e"
checksum = "2f7254b99e31cad77da24b08ebf628882739a608578bb1bcdfc1f9c21260d7c0"
[[package]]
name = "opaque-debug"
@ -3895,9 +3898,9 @@ dependencies = [
[[package]]
name = "paste"
version = "1.0.8"
version = "1.0.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9423e2b32f7a043629287a536f21951e8c6a82482d0acb1eeebfc90bc2225b22"
checksum = "b1de2e551fb905ac83f73f7aedf2f0cb4a0da7e35efa24a202a936269f1f18e1"
[[package]]
name = "pathdiff"
@ -3931,15 +3934,15 @@ dependencies = [
[[package]]
name = "percent-encoding"
version = "2.1.0"
version = "2.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e"
checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e"
[[package]]
name = "pest"
version = "2.3.0"
version = "2.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4b0560d531d1febc25a3c9398a62a71256c0178f2e3443baedd9ad4bb8c9deb4"
checksum = "cb779fcf4bb850fbbb0edc96ff6cf34fd90c4b1a112ce042653280d9a7364048"
dependencies = [
"thiserror",
"ucd-trie",
@ -3947,9 +3950,9 @@ dependencies = [
[[package]]
name = "pest_derive"
version = "2.3.0"
version = "2.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "905708f7f674518498c1f8d644481440f476d39ca6ecae83319bba7c6c12da91"
checksum = "502b62a6d0245378b04ffe0a7fb4f4419a4815fce813bd8a0ec89a56e07d67b1"
dependencies = [
"pest",
"pest_generator",
@ -3957,9 +3960,9 @@ dependencies = [
[[package]]
name = "pest_generator"
version = "2.3.0"
version = "2.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5803d8284a629cc999094ecd630f55e91b561a1d1ba75e233b00ae13b91a69ad"
checksum = "451e629bf49b750254da26132f1a5a9d11fd8a95a3df51d15c4abd1ba154cb6c"
dependencies = [
"pest",
"pest_meta",
@ -3970,13 +3973,13 @@ dependencies = [
[[package]]
name = "pest_meta"
version = "2.3.0"
version = "2.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1538eb784f07615c6d9a8ab061089c6c54a344c5b4301db51990ca1c241e8c04"
checksum = "bcec162c71c45e269dfc3fc2916eaeb97feab22993a21bcce4721d08cd7801a6"
dependencies = [
"once_cell",
"pest",
"sha-1",
"sha1",
]
[[package]]
@ -4011,6 +4014,15 @@ dependencies = [
"proc-macro-hack",
]
[[package]]
name = "phf"
version = "0.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "928c6535de93548188ef63bb7c4036bd415cd8f36ad25af44b9789b2ee72a48c"
dependencies = [
"phf_shared 0.11.1",
]
[[package]]
name = "phf_codegen"
version = "0.8.0"
@ -4087,6 +4099,15 @@ dependencies = [
"siphasher",
]
[[package]]
name = "phf_shared"
version = "0.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e1fb5f6f826b772a8d4c0394209441e7d37cbbb967ae9c7e0e8134365c9ee676"
dependencies = [
"siphasher",
]
[[package]]
name = "pin-project"
version = "1.0.12"
@ -4146,29 +4167,28 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f0b0cabbbd20c2d7f06dbf015e06aad59b6ca3d9ed14848783e98af9aaf19925"
dependencies = [
"bitflags",
"deflate 0.7.20",
"deflate",
"inflate",
"num-iter",
]
[[package]]
name = "png"
version = "0.17.5"
version = "0.17.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dc38c0ad57efb786dd57b9864e5b18bae478c00c824dc55a38bbc9da95dde3ba"
checksum = "8f0e7f4c94ec26ff209cee506314212639d6c91b80afb82984819fafce9df01c"
dependencies = [
"bitflags",
"crc32fast",
"deflate 1.0.0",
"flate2",
"miniz_oxide",
]
[[package]]
name = "postgres-native-tls"
version = "0.5.0"
source = "git+https://github.com/pimeys/rust-postgres?branch=pgbouncer-mode#5ec2a4fa4635c721faf01dc560e48646479ec1b6"
source = "git+https://github.com/pimeys/rust-postgres?branch=pgbouncer-mode#064a6a50427542e2c166e870027735aab3b52e77"
dependencies = [
"futures",
"native-tls",
"tokio",
"tokio-native-tls 0.3.0 (git+https://github.com/pimeys/tls?branch=vendored-openssl)",
@ -4178,7 +4198,7 @@ dependencies = [
[[package]]
name = "postgres-protocol"
version = "0.6.4"
source = "git+https://github.com/pimeys/rust-postgres?branch=pgbouncer-mode#5ec2a4fa4635c721faf01dc560e48646479ec1b6"
source = "git+https://github.com/pimeys/rust-postgres?branch=pgbouncer-mode#064a6a50427542e2c166e870027735aab3b52e77"
dependencies = [
"base64 0.13.0",
"byteorder",
@ -4188,14 +4208,14 @@ dependencies = [
"md-5",
"memchr",
"rand 0.8.5",
"sha2 0.10.2",
"sha2 0.10.5",
"stringprep",
]
[[package]]
name = "postgres-types"
version = "0.2.3"
source = "git+https://github.com/pimeys/rust-postgres?branch=pgbouncer-mode#5ec2a4fa4635c721faf01dc560e48646479ec1b6"
version = "0.2.4"
source = "git+https://github.com/pimeys/rust-postgres?branch=pgbouncer-mode#064a6a50427542e2c166e870027735aab3b52e77"
dependencies = [
"bit-vec",
"bytes",
@ -4576,9 +4596,9 @@ dependencies = [
[[package]]
name = "radium"
version = "0.6.2"
version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "643f8f41a8ebc4c5dc4515c82bb8abd397b527fc20fd681b7c011c2aee5d44fb"
checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09"
[[package]]
name = "radix_trie"
@ -4682,9 +4702,9 @@ dependencies = [
[[package]]
name = "raw-cpuid"
version = "10.5.0"
version = "10.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6aa2540135b6a94f74c7bc90ad4b794f822026a894f3d7bcd185c100d13d4ad6"
checksum = "a6823ea29436221176fe662da99998ad3b4db2c7f31e7b6f5fe43adccd6320bb"
dependencies = [
"bitflags",
]
@ -5461,6 +5481,17 @@ dependencies = [
"digest 0.10.3",
]
[[package]]
name = "sha1"
version = "0.10.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "006769ba83e921b3085caa8334186b00cf92b4cb1a6cf4632fbccc8eff5c7549"
dependencies = [
"cfg-if 1.0.0",
"cpufeatures",
"digest 0.10.3",
]
[[package]]
name = "sha2"
version = "0.9.9"
@ -5476,9 +5507,9 @@ dependencies = [
[[package]]
name = "sha2"
version = "0.10.2"
version = "0.10.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "55deaec60f81eefe3cce0dc50bda92d6d8e88f2a27df7c5033b42afeb1ed2676"
checksum = "cf9db03534dff993187064c4e0c05a5708d2a9728ace9a8959b77bedf415dac5"
dependencies = [
"cfg-if 1.0.0",
"cpufeatures",
@ -5558,9 +5589,9 @@ checksum = "2fd0db749597d91ff862fd1d55ea87f7855a744a8425a64695b6fca237d1dad1"
[[package]]
name = "socket2"
version = "0.4.6"
version = "0.4.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "10c98bba371b9b22a71a9414e420f92ddeb2369239af08200816169d5e2dd7aa"
checksum = "02e2d2db9033d13a1567121ddd7a095ee144db4e1ca1b1bda3419bc0da294ebd"
dependencies = [
"libc",
"winapi",
@ -5999,7 +6030,7 @@ dependencies = [
"once_cell",
"parking_lot 0.12.1",
"paste",
"png 0.17.5",
"png 0.17.6",
"raw-window-handle",
"scopeguard",
"serde",
@ -6107,14 +6138,14 @@ dependencies = [
"ico",
"json-patch",
"plist",
"png 0.17.5",
"png 0.17.6",
"proc-macro2",
"quote",
"regex",
"semver 1.0.13",
"serde",
"serde_json",
"sha2 0.10.2",
"sha2 0.10.5",
"tauri-utils",
"thiserror",
"time 0.3.14",
@ -6245,18 +6276,18 @@ checksum = "8eaa81235c7058867fa8c0e7314f33dcce9c215f535d1913822a2b3f5e289f3c"
[[package]]
name = "thiserror"
version = "1.0.32"
version = "1.0.35"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f5f6586b7f764adc0231f4c79be7b920e766bb2f3e51b3661cdb263828f19994"
checksum = "c53f98874615aea268107765aa1ed8f6116782501d18e53d08b471733bea6c85"
dependencies = [
"thiserror-impl",
]
[[package]]
name = "thiserror-impl"
version = "1.0.32"
version = "1.0.35"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "12bafc5b54507e0149cdf1b145a5d80ab80a90bcd9275df43d4fff68460f6c21"
checksum = "f8b463991b4eab2d801e724172285ec4195c650e8ec79b149e6c2a8e6dd3f783"
dependencies = [
"proc-macro2",
"quote",
@ -6369,9 +6400,9 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c"
[[package]]
name = "tokio"
version = "1.20.1"
version = "1.21.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7a8325f63a7d4774dd041e363b2409ed1c5cbbd0f867795e661df066b2b0a581"
checksum = "0020c875007ad96677dcc890298f4b942882c5d4eb7cc8f439fc3bf813dc9c95"
dependencies = [
"autocfg",
"bytes",
@ -6420,24 +6451,25 @@ dependencies = [
[[package]]
name = "tokio-postgres"
version = "0.7.6"
source = "git+https://github.com/pimeys/rust-postgres?branch=pgbouncer-mode#5ec2a4fa4635c721faf01dc560e48646479ec1b6"
version = "0.7.7"
source = "git+https://github.com/pimeys/rust-postgres?branch=pgbouncer-mode#064a6a50427542e2c166e870027735aab3b52e77"
dependencies = [
"async-trait",
"byteorder",
"bytes",
"fallible-iterator",
"futures",
"futures-channel",
"futures-util",
"log",
"parking_lot 0.12.1",
"percent-encoding",
"phf 0.10.1",
"phf 0.11.1",
"pin-project-lite",
"postgres-protocol",
"postgres-types",
"socket2",
"tokio",
"tokio-util 0.7.3",
"tokio-util 0.7.4",
]
[[package]]
@ -6480,9 +6512,9 @@ dependencies = [
[[package]]
name = "tokio-util"
version = "0.7.3"
version = "0.7.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cc463cd8deddc3770d20f9852143d50bf6094e640b485cb2e189a2099085ff45"
checksum = "0bb2e075f03b3d66d8d8785356224ba688d2906a371015e225beeb65ca92c740"
dependencies = [
"bytes",
"futures-core",
@ -6690,7 +6722,7 @@ dependencies = [
"futures-channel",
"futures-io",
"futures-util",
"idna",
"idna 0.2.3",
"ipnet",
"lazy_static",
"log",
@ -6777,9 +6809,9 @@ checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987"
[[package]]
name = "ucd-trie"
version = "0.1.4"
version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "89570599c4fe5585de2b388aab47e99f7fa4e9238a1399f707a02e356058141c"
checksum = "9e79c4d996edb816c91e4308506774452e55e95c3c9de07b6729e17e15a5ef81"
[[package]]
name = "unicode-bidi"
@ -6831,13 +6863,12 @@ checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a"
[[package]]
name = "url"
version = "2.2.2"
version = "2.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a507c383b2d33b5fc35d1861e77e6b383d158b2da5e14fe51b83dfedf6fd578c"
checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643"
dependencies = [
"form_urlencoded",
"idna",
"matches",
"idna 0.3.0",
"percent-encoding",
"serde",
]
@ -7019,9 +7050,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
[[package]]
name = "wasm-bindgen"
version = "0.2.82"
version = "0.2.79"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fc7652e3f6c4706c8d9cd54832c4a4ccb9b5336e2c3bd154d5cccfbf1c1f5f7d"
checksum = "25f1af7423d8588a3d840681122e72e6a24ddbcb3f0ec385cac0d12d24256c06"
dependencies = [
"cfg-if 1.0.0",
"wasm-bindgen-macro",
@ -7029,13 +7060,13 @@ dependencies = [
[[package]]
name = "wasm-bindgen-backend"
version = "0.2.82"
version = "0.2.79"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "662cd44805586bd52971b9586b1df85cdbbd9112e4ef4d8f41559c334dc6ac3f"
checksum = "8b21c0df030f5a177f3cba22e9bc4322695ec43e7257d865302900290bcdedca"
dependencies = [
"bumpalo",
"lazy_static",
"log",
"once_cell",
"proc-macro2",
"quote",
"syn",
@ -7044,9 +7075,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-futures"
version = "0.4.32"
version = "0.4.29"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fa76fb221a1f8acddf5b54ace85912606980ad661ac7a503b4570ffd3a624dad"
checksum = "2eb6ec270a31b1d3c7e266b999739109abce8b6c87e4b31fcfcd788b65267395"
dependencies = [
"cfg-if 1.0.0",
"js-sys",
@ -7056,9 +7087,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro"
version = "0.2.82"
version = "0.2.79"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b260f13d3012071dfb1512849c033b1925038373aea48ced3012c09df952c602"
checksum = "2f4203d69e40a52ee523b2529a773d5ffc1dc0071801c87b3d270b471b80ed01"
dependencies = [
"quote",
"wasm-bindgen-macro-support",
@ -7066,9 +7097,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro-support"
version = "0.2.82"
version = "0.2.79"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5be8e654bdd9b79216c2929ab90721aa82faf65c48cdf08bdc4e7f51357b80da"
checksum = "bfa8a30d46208db204854cadbb5d4baf5fcf8071ba5bf48190c3e59937962ebc"
dependencies = [
"proc-macro2",
"quote",
@ -7079,15 +7110,15 @@ dependencies = [
[[package]]
name = "wasm-bindgen-shared"
version = "0.2.82"
version = "0.2.79"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6598dd0bd3c7d51095ff6531a5b23e02acdc81804e30d8f07afb77b7215a140a"
checksum = "3d958d035c4438e28c70e4321a2911302f10135ce78a9c7834c0cab4123d06a2"
[[package]]
name = "web-sys"
version = "0.3.59"
version = "0.3.56"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ed055ab27f941423197eb86b2035720b1a3ce40504df082cac2ecc6ed73335a1"
checksum = "c060b319f29dd25724f09a2ba1418f142f539b2be99fbf4d2d5a8f7330afb8eb"
dependencies = [
"js-sys",
"wasm-bindgen",
@ -7559,9 +7590,9 @@ dependencies = [
[[package]]
name = "wyz"
version = "0.4.0"
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "129e027ad65ce1453680623c3fb5163cbf7107bfe1aa32257e7d0e63f9ced188"
checksum = "30b31594f29d27036c383b53b59ed3476874d518f0efb151b27a4c275141390e"
dependencies = [
"tap",
]

View file

@ -1,17 +1,9 @@
use std::env::consts;
use serde::Serialize;
use tauri::{
AboutMetadata, CustomMenuItem, Manager, Menu, MenuItem, Submenu, WindowMenuEvent, Wry,
};
#[derive(Serialize, Clone)]
pub struct DOMKeyboardEvent {
#[serde(rename = "metaKey")]
meta_key: bool,
key: String,
}
pub(crate) fn get_menu() -> Menu {
match consts::OS {
"macos" => custom_menu_bar(),
@ -27,9 +19,7 @@ fn custom_menu_bar() -> Menu {
)) // TODO: fill out about metadata
.add_native_item(MenuItem::Separator)
.add_item(
// macOS 13 Ventura automatically changes "Preferences" to "Settings" for system-wide consistency.
// Use "Preferences" here to keep consistency on older versions
CustomMenuItem::new("open_settings".to_string(), "Preferences...")
CustomMenuItem::new("open_settings".to_string(), "Settings...")
.accelerator("CmdOrCtrl+Comma"),
)
.add_native_item(MenuItem::Separator)
@ -55,9 +45,7 @@ fn custom_menu_bar() -> Menu {
.add_native_item(MenuItem::Paste)
.add_native_item(MenuItem::SelectAll);
let view_menu = Menu::new()
.add_item(
CustomMenuItem::new("open_search".to_string(), "Search").accelerator("CmdOrCtrl+L"),
)
.add_item(CustomMenuItem::new("open_search".to_string(), "Search...").accelerator("CmdOrCtrl+F"))
// .add_item(
// CustomMenuItem::new("command_pallete".to_string(), "Command Pallete")
// .accelerator("CmdOrCtrl+P"),
@ -94,16 +82,7 @@ pub(crate) fn handle_menu_event(event: WindowMenuEvent<Wry>) {
let app = event.window().app_handle();
app.exit(0);
}
"open_settings" => event
.window()
.emit(
"do_keyboard_input",
DOMKeyboardEvent {
meta_key: true,
key: ",".into(),
},
)
.unwrap(),
"open_settings" => event.window().emit("keybind", "open_settings").unwrap(),
"close" => {
let window = event.window();
@ -119,13 +98,7 @@ pub(crate) fn handle_menu_event(event: WindowMenuEvent<Wry>) {
}
"open_search" => event
.window()
.emit(
"do_keyboard_input",
DOMKeyboardEvent {
meta_key: true,
key: "l".into(),
},
)
.emit("keybind", "open_search".to_string())
.unwrap(),
"reload_app" => {
#[cfg(target_os = "macos")]

View file

@ -2,6 +2,7 @@ import { createClient } from '@rspc/client';
import { TauriTransport } from '@rspc/tauri';
import { OperatingSystem, Operations, PlatformProvider, queryClient, rspc } from '@sd/client';
import SpacedriveInterface, { Platform } from '@sd/interface';
import { KeybindEvent } from '@sd/interface';
import { dialog, invoke, os } from '@tauri-apps/api';
import { listen } from '@tauri-apps/api/event';
import React, { useEffect } from 'react';
@ -38,15 +39,15 @@ function App() {
useEffect(() => {
// This tells Tauri to show the current window because it's finished loading
invoke('app_ready');
}, []);
// This is a hacky solution to run the action items in the macOS menu bar by executing their keyboard shortcuts in the DOM.
// This means we can build shortcuts that work on web while calling them like native actions.
const unlisten = listen('do_keyboard_input', (input) => {
document.dispatchEvent(new KeyboardEvent('keydown', input.payload as any));
useEffect(() => {
const keybindListener = listen('keybind', (input) => {
document.dispatchEvent(new KeybindEvent(input.payload as string));
});
return () => {
unlisten.then((unlisten) => unlisten());
keybindListener.then((unlisten) => unlisten());
};
}, []);

1
apps/server/.gitignore vendored Normal file
View file

@ -0,0 +1 @@
/sdserver_data/

View file

@ -4,7 +4,7 @@ import { Route, Routes } from 'react-router-dom';
import { AppLayout } from './AppLayout';
import { NotFound } from './NotFound';
import OnboardingScreen from './components/onboarding/Onboarding';
import { useKeyboardHandler } from './hooks/useKeyboardHandler';
import { useKeybindHandler } from './hooks/useKeyboardHandler';
import { ContentScreen } from './screens/Content';
import { DebugScreen } from './screens/Debug';
import { LocationExplorer } from './screens/LocationExplorer';
@ -37,7 +37,7 @@ import P2PSettings from './screens/settings/node/P2PSettings';
export function AppRouter() {
const { library } = useCurrentLibrary();
useKeyboardHandler();
useKeybindHandler();
useInvalidateQuery();
return (

View file

@ -1,5 +1,10 @@
import { ChevronLeftIcon, ChevronRightIcon } from '@heroicons/react/24/outline';
import { getExplorerStore, useExplorerStore, useLibraryMutation } from '@sd/client';
import {
OperatingSystem,
getExplorerStore,
useExplorerStore,
useLibraryMutation
} from '@sd/client';
import { Dropdown } from '@sd/ui';
import clsx from 'clsx';
import {
@ -12,9 +17,11 @@ import {
SquaresFour
} from 'phosphor-react';
import { DetailedHTMLProps, HTMLAttributes, forwardRef, useEffect, useRef } from 'react';
import { useForm } from 'react-hook-form';
import { useNavigate } from 'react-router-dom';
import { useOperatingSystem } from '../../hooks/useOperatingSystem';
import { KeybindEvent } from '../../util/keybind';
import { Shortcut } from '../primitive/Shortcut';
import { DefaultProps } from '../primitive/types';
import { Tooltip } from '../tooltip/Tooltip';
@ -57,25 +64,61 @@ const TopBarButton: React.FC<TopBarButtonProps> = ({
);
};
const SearchBar = forwardRef<HTMLInputElement, DefaultProps>((props, ref) => {
const SearchBar = forwardRef<HTMLInputElement, DefaultProps>((props, forwardedRef) => {
const {
register,
handleSubmit,
reset,
formState: { isDirty, dirtyFields }
} = useForm();
const { ref, ...searchField } = register('searchField', {
onBlur: (e) => {
// if there's no text in the search bar, don't mark it as dirty so the key hint shows
if (!dirtyFields.searchField) reset();
}
});
const platform = useOperatingSystem(false);
const os = useOperatingSystem(true);
return (
<div className="relative flex h-7">
<form onSubmit={handleSubmit(() => null)} className="relative flex h-7">
<input
ref={ref}
ref={(el) => {
ref(el);
if (typeof forwardedRef === 'function') forwardedRef(el);
else if (forwardedRef) forwardedRef.current = el;
}}
placeholder="Search"
className="peer w-32 h-[30px] focus:w-52 text-sm p-3 rounded-lg outline-none focus:ring-2 placeholder-gray-400 dark:placeholder-gray-450 bg-[#F6F2F6] border border-gray-50 shadow-md dark:bg-gray-600 dark:border-gray-550 focus:ring-gray-100 dark:focus:ring-gray-550 dark:focus:bg-gray-800 transition-all"
{...searchField}
/>
<div className="space-x-1 absolute top-[2px] right-1 peer-focus:invisible">
<Shortcut chars={os === 'macOS' ? '⌘L' : 'CTRL+L'} />
<div
className={clsx(
'space-x-1 absolute top-[2px] right-1 peer-focus:invisible pointer-events-none',
isDirty && 'hidden'
)}
>
{platform === 'browser' ? (
<Shortcut chars="/" aria-label={'Press slash to focus search bar'} />
) : os === 'macOS' ? (
<Shortcut chars="⌘F" aria-label={'Press Command-F to focus search bar'} />
) : (
<Shortcut chars="CTRL+F" aria-label={'Press CTRL-F to focus search bar'} />
)}
{/* <Shortcut chars="S" /> */}
</div>
</div>
</form>
);
});
export const TopBar: React.FC<TopBarProps> = (props) => {
const platform = useOperatingSystem(false);
const os = useOperatingSystem(true);
const store = useExplorerStore();
const { mutate: generateThumbsForLocation } = useLibraryMutation(
'jobs.generateThumbsForLocation',
@ -99,32 +142,60 @@ export const TopBar: React.FC<TopBarProps> = (props) => {
//create function to focus on search box when cmd+k is pressed
const searchRef = useRef<HTMLInputElement>(null);
const focusSearchBar = (bar: HTMLInputElement, e?: Event): boolean => {
bar.focus();
e?.preventDefault();
return false;
};
useEffect(() => {
const handler = (e: KeyboardEvent) => {
if (e.metaKey && e.key === 'l') {
if (searchRef.current) searchRef.current.focus();
const searchBar = searchRef.current;
if (searchBar === null || !searchBar) return;
const handleKeybindAction = (e: KeybindEvent) => {
if (e.detail.action === 'open_search') {
return focusSearchBar(searchBar, e);
}
};
const handleDOMKeydown = (e: KeyboardEvent) => {
if (e.target === searchBar && e.key === 'Escape') {
(e.target as HTMLInputElement).blur();
e.preventDefault();
return;
}
if (e.target instanceof HTMLInputElement || e.target instanceof HTMLTextAreaElement) {
if (e.key === 'Escape') {
e.target.blur();
e.preventDefault();
return;
}
} else {
if (e.key === '/') {
if (searchRef.current) searchRef.current.focus();
e.preventDefault();
return;
}
const isBrowser = platform === 'browser';
// use cmd on macOS and ctrl on Windows
const hasModifier = os === 'macOS' ? e.metaKey : e.ctrlKey;
if (
// allow slash on all platforms
(e.key === '/' &&
!(document.activeElement instanceof HTMLInputElement) &&
!(document.activeElement instanceof HTMLTextAreaElement)) ||
// only do the cmd-f keybind check on browser to allow for native keybind functionality
// this is particularly useful for power-user niche use cases,
// like how macOS lets you redefine keybinds for apps
(isBrowser && hasModifier && e.key === 'f')
) {
document.dispatchEvent(new KeybindEvent('open_search'));
e.preventDefault();
return;
}
};
document.addEventListener('keydown', handler);
return () => document.removeEventListener('keydown', handler);
}, []);
document.addEventListener('keydown', handleDOMKeydown);
document.addEventListener('keybindexec', handleKeybindAction);
return () => {
document.removeEventListener('keydown', handleDOMKeydown);
document.removeEventListener('keybindexec', handleKeybindAction);
};
}, [os, platform]);
return (
<>
@ -168,6 +239,7 @@ export const TopBar: React.FC<TopBarProps> = (props) => {
/>
</Tooltip>
</div>
<SearchBar ref={searchRef} />
<div className="flex mx-8 space-x-2">

View file

@ -2,7 +2,7 @@ import clsx from 'clsx';
import { DefaultProps } from './types';
interface InputContainerProps extends DefaultProps {
interface InputContainerProps extends DefaultProps<HTMLDivElement> {
title: string;
description?: string;
children: React.ReactNode;

View file

@ -7,27 +7,20 @@ export interface ShortcutProps extends DefaultProps {
}
export const Shortcut: React.FC<ShortcutProps> = (props) => {
const { className, chars, ...rest } = props;
return (
<span
<kbd
className={clsx(
`
px-1
py-0.5
text-xs
font-bold
text-gray-400
bg-gray-200
border-gray-300
dark:text-gray-400
dark:bg-gray-600
dark:border-gray-500
border-t-2
rounded-lg
`,
props.className
`px-1 py-0.5 border border-b-2`,
`rounded-lg text-xs font-bold`,
`text-gray-400 bg-gray-200 border-gray-300`,
`dark:text-gray-400 dark:bg-gray-600 dark:border-gray-500`,
className
)}
{...rest}
>
{props.chars}
</span>
{chars}
</kbd>
);
};

View file

@ -1,3 +1,6 @@
export interface DefaultProps {
import { DetailedHTMLProps, HTMLAttributes } from 'react';
export interface DefaultProps<E extends HTMLElement = HTMLElement>
extends DetailedHTMLProps<HTMLAttributes<E>, E> {
className?: string;
}

View file

@ -1,19 +1,21 @@
import { useEffect } from 'react';
import { useNavigate } from 'react-router';
export function useKeyboardHandler() {
import { KeybindEvent } from '../util/keybind';
export function useKeybindHandler() {
const navigate = useNavigate();
useEffect(() => {
const handler = (e: KeyboardEvent) => {
if (e.metaKey && e.key === ',') {
const handler = (e: KeybindEvent) => {
if (e.detail.action === 'open_settings') {
navigate('/settings');
e.preventDefault();
return;
}
};
document.addEventListener('keydown', handler);
return () => document.removeEventListener('keydown', handler);
document.addEventListener('keybindexec', handler);
return () => document.removeEventListener('keybindexec', handler);
}, [navigate]);
}

View file

@ -3,5 +3,6 @@ import { Platform } from '@sd/client';
import SpacedriveInterface from './App';
export type { Platform };
export { KeybindEvent } from './util/keybind';
export default SpacedriveInterface;

View file

@ -0,0 +1,15 @@
declare global {
interface GlobalEventHandlersEventMap {
keybindexec: KeybindEvent;
}
}
export class KeybindEvent extends CustomEvent<{ action: string }> {
constructor(action: string) {
super('keybindexec', {
detail: {
action
}
});
}
}