mirror of
https://github.com/MercuryWorkshop/epoxy-tls.git
synced 2025-05-12 14:00:01 -04:00
add a minimal build
This commit is contained in:
parent
b5263a06fa
commit
93e5812211
10 changed files with 151 additions and 99 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -2,5 +2,7 @@
|
||||||
**/*.pem
|
**/*.pem
|
||||||
client/pkg
|
client/pkg
|
||||||
client/out
|
client/out
|
||||||
|
client/full
|
||||||
|
client/minimal
|
||||||
.direnv
|
.direnv
|
||||||
pnpm-lock.yaml
|
pnpm-lock.yaml
|
||||||
|
|
120
Cargo.lock
generated
120
Cargo.lock
generated
|
@ -219,9 +219,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "backtrace"
|
name = "backtrace"
|
||||||
version = "0.3.72"
|
version = "0.3.73"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "17c6a35df3749d2e8bb1b7b21a976d82b15548788d2735b9d82f329268f71a11"
|
checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"addr2line",
|
"addr2line",
|
||||||
"cc",
|
"cc",
|
||||||
|
@ -252,9 +252,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "bitflags"
|
name = "bitflags"
|
||||||
version = "2.5.0"
|
version = "2.6.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1"
|
checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "block-buffer"
|
name = "block-buffer"
|
||||||
|
@ -306,9 +306,9 @@ checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cc"
|
name = "cc"
|
||||||
version = "1.0.99"
|
version = "1.0.104"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "96c51067fd44124faa7f870b4b1c969379ad32b2ba805aa959430ceaa384f695"
|
checksum = "74b6a57f98764a267ff415d50a25e6e166f3831a5071af4995296ea97d210490"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "certs-grabber"
|
name = "certs-grabber"
|
||||||
|
@ -326,9 +326,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "clap"
|
name = "clap"
|
||||||
version = "4.5.7"
|
version = "4.5.8"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "5db83dced34638ad474f39f250d7fea9598bdd239eaced1bdf45d597da0f433f"
|
checksum = "84b3edb18336f4df585bc9aa31dd99c036dfa5dc5e9a2939a722a188f3a8970d"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"clap_builder",
|
"clap_builder",
|
||||||
"clap_derive",
|
"clap_derive",
|
||||||
|
@ -336,9 +336,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "clap_builder"
|
name = "clap_builder"
|
||||||
version = "4.5.7"
|
version = "4.5.8"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f7e204572485eb3fbf28f871612191521df159bc3e15a9f5064c66dba3a8c05f"
|
checksum = "c1c09dd5ada6c6c78075d6fd0da3f90d8080651e2d6cc8eb2f1aaa4034ced708"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anstream",
|
"anstream",
|
||||||
"anstyle",
|
"anstyle",
|
||||||
|
@ -349,9 +349,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "clap_derive"
|
name = "clap_derive"
|
||||||
version = "4.5.5"
|
version = "4.5.8"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "c780290ccf4fb26629baa7a1081e68ced113f1d3ec302fa5948f1c381ebf06c6"
|
checksum = "2bac35c6dafb060fd4d275d9a4ffae97917c13a6327903a8be2153cd964f7085"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"heck",
|
"heck",
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
|
@ -516,18 +516,19 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "either"
|
name = "either"
|
||||||
version = "1.12.0"
|
version = "1.13.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "3dca9240753cf90908d7e4aac30f630662b02aebaa1b58a3cadabdb23385b58b"
|
checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "epoxy-client"
|
name = "epoxy-client"
|
||||||
version = "2.0.2"
|
version = "2.0.3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"async-compression",
|
"async-compression",
|
||||||
"async-trait",
|
"async-trait",
|
||||||
"base64 0.22.1",
|
"base64 0.22.1",
|
||||||
"bytes",
|
"bytes",
|
||||||
|
"cfg-if",
|
||||||
"event-listener",
|
"event-listener",
|
||||||
"fastwebsockets",
|
"fastwebsockets",
|
||||||
"flume",
|
"flume",
|
||||||
|
@ -536,7 +537,7 @@ dependencies = [
|
||||||
"getrandom",
|
"getrandom",
|
||||||
"http 1.1.0",
|
"http 1.1.0",
|
||||||
"http-body-util",
|
"http-body-util",
|
||||||
"hyper 1.3.1",
|
"hyper 1.4.0",
|
||||||
"hyper-util-wasm",
|
"hyper-util-wasm",
|
||||||
"js-sys",
|
"js-sys",
|
||||||
"pin-project-lite",
|
"pin-project-lite",
|
||||||
|
@ -565,7 +566,7 @@ dependencies = [
|
||||||
"fastwebsockets",
|
"fastwebsockets",
|
||||||
"futures-util",
|
"futures-util",
|
||||||
"http-body-util",
|
"http-body-util",
|
||||||
"hyper 1.3.1",
|
"hyper 1.4.0",
|
||||||
"hyper-util",
|
"hyper-util",
|
||||||
"tokio",
|
"tokio",
|
||||||
"tokio-util",
|
"tokio-util",
|
||||||
|
@ -614,7 +615,7 @@ dependencies = [
|
||||||
"base64 0.21.7",
|
"base64 0.21.7",
|
||||||
"bytes",
|
"bytes",
|
||||||
"http-body-util",
|
"http-body-util",
|
||||||
"hyper 1.3.1",
|
"hyper 1.4.0",
|
||||||
"hyper-util",
|
"hyper-util",
|
||||||
"pin-project",
|
"pin-project",
|
||||||
"rand",
|
"rand",
|
||||||
|
@ -952,9 +953,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "httparse"
|
name = "httparse"
|
||||||
version = "1.9.3"
|
version = "1.9.4"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "d0e7a4dd27b9476dc40cb050d3632d3bba3a70ddbff012285f7f8559a1e7e545"
|
checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "httpdate"
|
name = "httpdate"
|
||||||
|
@ -994,9 +995,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "hyper"
|
name = "hyper"
|
||||||
version = "1.3.1"
|
version = "1.4.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "fe575dd17d0862a9a33781c8c4696a55c320909004a67a00fb286ba8b1bc496d"
|
checksum = "c4fe55fb7a772d59a5ff1dfbff4fe0258d19b89fec4b233e75d35d5d2316badc"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bytes",
|
"bytes",
|
||||||
"futures-channel",
|
"futures-channel",
|
||||||
|
@ -1027,31 +1028,31 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "hyper-util"
|
name = "hyper-util"
|
||||||
version = "0.1.5"
|
version = "0.1.6"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "7b875924a60b96e5d7b9ae7b066540b1dd1cbd90d1828f54c92e02a283351c56"
|
checksum = "3ab92f4f49ee4fb4f997c784b7a2e0fa70050211e0b6a287f898c3c9785ca956"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bytes",
|
"bytes",
|
||||||
"futures-util",
|
"futures-util",
|
||||||
"http 1.1.0",
|
"http 1.1.0",
|
||||||
"http-body 1.0.0",
|
"http-body 1.0.0",
|
||||||
"hyper 1.3.1",
|
"hyper 1.4.0",
|
||||||
"pin-project-lite",
|
"pin-project-lite",
|
||||||
"tokio",
|
"tokio",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "hyper-util-wasm"
|
name = "hyper-util-wasm"
|
||||||
version = "0.1.3"
|
version = "0.1.7"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "4d75266d8a7846ac2878c0337387caeb96b75d7a2ebe58317611df0f8f0861ee"
|
checksum = "185e0d2e1af65e61860ad821d8ceafd38715f264f4abbed62456851ff5415e55"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bytes",
|
"bytes",
|
||||||
"futures-channel",
|
"futures-channel",
|
||||||
"futures-util",
|
"futures-util",
|
||||||
"http 1.1.0",
|
"http 1.1.0",
|
||||||
"http-body 1.0.0",
|
"http-body 1.0.0",
|
||||||
"hyper 1.3.1",
|
"hyper 1.4.0",
|
||||||
"pin-project-lite",
|
"pin-project-lite",
|
||||||
"tower",
|
"tower",
|
||||||
"tower-service",
|
"tower-service",
|
||||||
|
@ -1123,9 +1124,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "lazy_static"
|
name = "lazy_static"
|
||||||
version = "1.4.0"
|
version = "1.5.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
|
checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "libc"
|
name = "libc"
|
||||||
|
@ -1151,9 +1152,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "log"
|
name = "log"
|
||||||
version = "0.4.21"
|
version = "0.4.22"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c"
|
checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "matchers"
|
name = "matchers"
|
||||||
|
@ -1172,9 +1173,9 @@ checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "memchr"
|
name = "memchr"
|
||||||
version = "2.7.2"
|
version = "2.7.4"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d"
|
checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "mime"
|
name = "mime"
|
||||||
|
@ -1190,9 +1191,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "miniz_oxide"
|
name = "miniz_oxide"
|
||||||
version = "0.7.3"
|
version = "0.7.4"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "87dfd01fe195c66b572b37921ad8803d010623c0aca821bea2302239d155cdae"
|
checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"adler",
|
"adler",
|
||||||
]
|
]
|
||||||
|
@ -1265,9 +1266,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "object"
|
name = "object"
|
||||||
version = "0.35.0"
|
version = "0.36.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "b8ec7ab813848ba4522158d5517a6093db1ded27575b070f4177b8d12b41db5e"
|
checksum = "081b846d1d56ddfc18fdf1a922e4f6e07a11768ea1b92dec44e42b72712ccfce"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"memchr",
|
"memchr",
|
||||||
]
|
]
|
||||||
|
@ -1284,7 +1285,7 @@ version = "0.10.64"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f"
|
checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags 2.5.0",
|
"bitflags 2.6.0",
|
||||||
"cfg-if",
|
"cfg-if",
|
||||||
"foreign-types",
|
"foreign-types",
|
||||||
"libc",
|
"libc",
|
||||||
|
@ -1403,9 +1404,9 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "proc-macro2"
|
name = "proc-macro2"
|
||||||
version = "1.0.85"
|
version = "1.0.86"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "22244ce15aa966053a896d1accb3a6e68469b97c7f33f284b99f0d576879fc23"
|
checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"unicode-ident",
|
"unicode-ident",
|
||||||
]
|
]
|
||||||
|
@ -1483,11 +1484,11 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "redox_syscall"
|
name = "redox_syscall"
|
||||||
version = "0.5.1"
|
version = "0.5.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e"
|
checksum = "c82cf8cff14456045f55ec4241383baeff27af886adb72ffb2162f99911de0fd"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags 2.5.0",
|
"bitflags 2.6.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -1570,7 +1571,7 @@ version = "0.38.34"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f"
|
checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags 2.5.0",
|
"bitflags 2.6.0",
|
||||||
"errno",
|
"errno",
|
||||||
"libc",
|
"libc",
|
||||||
"linux-raw-sys",
|
"linux-raw-sys",
|
||||||
|
@ -1579,9 +1580,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rustls"
|
name = "rustls"
|
||||||
version = "0.23.9"
|
version = "0.23.10"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "a218f0f6d05669de4eabfb24f31ce802035c952429d037507b4a4a39f0e60c5b"
|
checksum = "05cff451f60db80f490f3c182b77c35260baace73209e9cdbbe526bfe3a4d402"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"once_cell",
|
"once_cell",
|
||||||
"ring",
|
"ring",
|
||||||
|
@ -1602,9 +1603,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rustls-webpki"
|
name = "rustls-webpki"
|
||||||
version = "0.102.4"
|
version = "0.102.5"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "ff448f7e92e913c4b7d4c6d8e4540a1724b319b4152b8aef6d4cf8339712b33e"
|
checksum = "f9a6fccd794a42c2c105b513a2f62bc3fd8f3ba57a4593677ceb0bd035164d78"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"ring",
|
"ring",
|
||||||
"rustls-pki-types",
|
"rustls-pki-types",
|
||||||
|
@ -1653,7 +1654,7 @@ version = "2.11.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "c627723fd09706bacdb5cf41499e95098555af3c3c29d014dc3c458ef6be11c0"
|
checksum = "c627723fd09706bacdb5cf41499e95098555af3c3c29d014dc3c458ef6be11c0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags 2.5.0",
|
"bitflags 2.6.0",
|
||||||
"core-foundation",
|
"core-foundation",
|
||||||
"core-foundation-sys",
|
"core-foundation-sys",
|
||||||
"libc",
|
"libc",
|
||||||
|
@ -1704,9 +1705,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "serde_json"
|
name = "serde_json"
|
||||||
version = "1.0.117"
|
version = "1.0.120"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3"
|
checksum = "4e0d21c9a8cae1235ad58a00c11cb40d4b1e5c784f1ef2c537876ed6ffd8b7c5"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"itoa",
|
"itoa",
|
||||||
"ryu",
|
"ryu",
|
||||||
|
@ -1760,7 +1761,7 @@ dependencies = [
|
||||||
"futures",
|
"futures",
|
||||||
"http-body-util",
|
"http-body-util",
|
||||||
"humantime",
|
"humantime",
|
||||||
"hyper 1.3.1",
|
"hyper 1.4.0",
|
||||||
"simple_moving_average",
|
"simple_moving_average",
|
||||||
"tokio",
|
"tokio",
|
||||||
"tokio-native-tls",
|
"tokio-native-tls",
|
||||||
|
@ -1819,15 +1820,15 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "subtle"
|
name = "subtle"
|
||||||
version = "2.5.0"
|
version = "2.6.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc"
|
checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "syn"
|
name = "syn"
|
||||||
version = "2.0.66"
|
version = "2.0.68"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5"
|
checksum = "901fa70d88b9d6c98022e23b4136f9f3e54e4662c3bc1bd1d84a42a9a0f0c1e9"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
|
@ -2032,7 +2033,6 @@ version = "0.1.40"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef"
|
checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"log",
|
|
||||||
"pin-project-lite",
|
"pin-project-lite",
|
||||||
"tracing-attributes",
|
"tracing-attributes",
|
||||||
"tracing-core",
|
"tracing-core",
|
||||||
|
@ -2268,9 +2268,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "webpki-roots"
|
name = "webpki-roots"
|
||||||
version = "0.26.2"
|
version = "0.26.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "3c452ad30530b54a4d8e71952716a212b08efd0f3562baa66c29a618b07da7c3"
|
checksum = "bd7c23921eeb1713a4e851530e9b9756e4fb0e89978582942612524cf09f01cd"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"rustls-pki-types",
|
"rustls-pki-types",
|
||||||
]
|
]
|
||||||
|
|
|
@ -1,3 +1,2 @@
|
||||||
[profile.release]
|
[profile.release]
|
||||||
opt-level = 'z'
|
opt-level = 'z'
|
||||||
debug = false
|
|
||||||
|
|
|
@ -4,3 +4,4 @@ serve.py
|
||||||
src
|
src
|
||||||
tests
|
tests
|
||||||
test.sh
|
test.sh
|
||||||
|
.cargo
|
||||||
|
|
|
@ -1,22 +1,23 @@
|
||||||
[package]
|
[package]
|
||||||
name = "epoxy-client"
|
name = "epoxy-client"
|
||||||
version = "2.0.2"
|
version = "2.0.3"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
|
|
||||||
[lib]
|
[lib]
|
||||||
crate-type = ["cdylib"]
|
crate-type = ["cdylib"]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
async-compression = { version = "0.4.11", features = ["futures-io", "gzip", "brotli"] }
|
async-compression = { version = "0.4.11", features = ["futures-io", "gzip", "brotli"], optional = true }
|
||||||
async-trait = "0.1.80"
|
async-trait = "0.1.80"
|
||||||
base64 = "0.22.1"
|
base64 = { version = "0.22.1", optional = true }
|
||||||
bytes = "1.6.0"
|
bytes = "1.6.0"
|
||||||
|
cfg-if = "1.0.0"
|
||||||
event-listener = "5.3.1"
|
event-listener = "5.3.1"
|
||||||
fastwebsockets = { version = "0.7.2", features = ["unstable-split"] }
|
fastwebsockets = { version = "0.7.2", features = ["unstable-split"], optional = true }
|
||||||
flume = "0.11.0"
|
flume = "0.11.0"
|
||||||
futures-rustls = { version = "0.26.0", default-features = false, features = ["tls12", "ring"] }
|
futures-rustls = { version = "0.26.0", default-features = false, features = ["tls12", "ring"] }
|
||||||
futures-util = { version = "0.3.30", features = ["sink"] }
|
futures-util = { version = "0.3.30", features = ["sink"] }
|
||||||
getrandom = { version = "0.2.15", features = ["js"] }
|
getrandom = { version = "0.2.15", features = ["js", "std"], optional = true }
|
||||||
http = "1.1.0"
|
http = "1.1.0"
|
||||||
http-body-util = "0.1.2"
|
http-body-util = "0.1.2"
|
||||||
hyper = "1.3.1"
|
hyper = "1.3.1"
|
||||||
|
@ -42,3 +43,7 @@ features = ["wasm32_unknown_unknown_js"]
|
||||||
# update whenever rustls updates
|
# update whenever rustls updates
|
||||||
version = "1.4.1"
|
version = "1.4.1"
|
||||||
features = ["web"]
|
features = ["web"]
|
||||||
|
|
||||||
|
[features]
|
||||||
|
default = ["full"]
|
||||||
|
full = ["fastwebsockets", "base64", "async-compression", "getrandom"]
|
||||||
|
|
|
@ -6,7 +6,7 @@ mkdir out/ || true
|
||||||
rm -r pkg/ || true
|
rm -r pkg/ || true
|
||||||
mkdir pkg/
|
mkdir pkg/
|
||||||
|
|
||||||
RUSTFLAGS='-C target-feature=+atomics,+bulk-memory,+simd128' cargo build --target wasm32-unknown-unknown -Z build-std=panic_abort,std --release
|
RUSTFLAGS='-C target-feature=+atomics,+bulk-memory,+simd128' cargo build --target wasm32-unknown-unknown -Z build-std=panic_abort,std --release "$@"
|
||||||
echo "[epx] cargo finished"
|
echo "[epx] cargo finished"
|
||||||
wasm-bindgen --weak-refs --target no-modules --no-modules-global epoxy --out-dir out/ ../target/wasm32-unknown-unknown/release/epoxy_client.wasm
|
wasm-bindgen --weak-refs --target no-modules --no-modules-global epoxy --out-dir out/ ../target/wasm32-unknown-unknown/release/epoxy_client.wasm
|
||||||
echo "[epx] wasm-bindgen finished"
|
echo "[epx] wasm-bindgen finished"
|
||||||
|
|
|
@ -182,7 +182,7 @@ onmessage = async (msg) => {
|
||||||
);
|
);
|
||||||
let ws = await epoxy_client.connect_websocket(
|
let ws = await epoxy_client.connect_websocket(
|
||||||
handlers,
|
handlers,
|
||||||
"ws://localhost:5000",
|
"wss://echo.websocket.events",
|
||||||
[],
|
[],
|
||||||
{ "x-header": "abc" },
|
{ "x-header": "abc" },
|
||||||
);
|
);
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "@mercuryworkshop/epoxy-tls",
|
"name": "@mercuryworkshop/epoxy-tls",
|
||||||
"version": "2.0.2-1",
|
"version": "2.0.3-1",
|
||||||
"description": "A wasm library for using raw encrypted tls/ssl/https/websocket streams on the browser",
|
"description": "A wasm library for using raw encrypted tls/ssl/https/websocket streams on the browser",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "./build.sh"
|
"build": "./build.sh"
|
||||||
|
|
11
client/publish.sh
Executable file
11
client/publish.sh
Executable file
|
@ -0,0 +1,11 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
shopt -s inherit_errexit
|
||||||
|
|
||||||
|
rm -r full minimal || true
|
||||||
|
|
||||||
|
cargo clean
|
||||||
|
bash build.sh
|
||||||
|
mv pkg full
|
||||||
|
bash build.sh --no-default-features
|
||||||
|
mv pkg minimal
|
|
@ -1,9 +1,13 @@
|
||||||
#![feature(let_chains, impl_trait_in_assoc_type)]
|
#![feature(let_chains, impl_trait_in_assoc_type)]
|
||||||
use std::{str::FromStr, sync::Arc};
|
use std::{str::FromStr, sync::Arc};
|
||||||
|
|
||||||
|
#[cfg(feature = "full")]
|
||||||
use async_compression::futures::bufread as async_comp;
|
use async_compression::futures::bufread as async_comp;
|
||||||
use bytes::Bytes;
|
use bytes::Bytes;
|
||||||
use futures_util::{future::Either, TryStreamExt};
|
use cfg_if::cfg_if;
|
||||||
|
use futures_util::TryStreamExt;
|
||||||
|
#[cfg(feature = "full")]
|
||||||
|
use futures_util::future::Either;
|
||||||
use http::{
|
use http::{
|
||||||
header::{InvalidHeaderName, InvalidHeaderValue},
|
header::{InvalidHeaderName, InvalidHeaderValue},
|
||||||
method::InvalidMethod,
|
method::InvalidMethod,
|
||||||
|
@ -12,6 +16,7 @@ use http::{
|
||||||
};
|
};
|
||||||
use hyper::{body::Incoming, Uri};
|
use hyper::{body::Incoming, Uri};
|
||||||
use hyper_util_wasm::client::legacy::Client;
|
use hyper_util_wasm::client::legacy::Client;
|
||||||
|
#[cfg(feature = "full")]
|
||||||
use io_stream::{EpoxyIoStream, EpoxyUdpStream};
|
use io_stream::{EpoxyIoStream, EpoxyUdpStream};
|
||||||
use js_sys::{Array, Function, Object, Reflect};
|
use js_sys::{Array, Function, Object, Reflect};
|
||||||
use stream_provider::{StreamProvider, StreamProviderService};
|
use stream_provider::{StreamProvider, StreamProviderService};
|
||||||
|
@ -23,13 +28,17 @@ use utils::{
|
||||||
use wasm_bindgen::prelude::*;
|
use wasm_bindgen::prelude::*;
|
||||||
use wasm_streams::ReadableStream;
|
use wasm_streams::ReadableStream;
|
||||||
use web_sys::ResponseInit;
|
use web_sys::ResponseInit;
|
||||||
|
#[cfg(feature = "full")]
|
||||||
use websocket::EpoxyWebSocket;
|
use websocket::EpoxyWebSocket;
|
||||||
|
#[cfg(feature = "full")]
|
||||||
use wisp_mux::StreamType;
|
use wisp_mux::StreamType;
|
||||||
|
|
||||||
|
#[cfg(feature = "full")]
|
||||||
mod io_stream;
|
mod io_stream;
|
||||||
mod stream_provider;
|
mod stream_provider;
|
||||||
mod tokioio;
|
mod tokioio;
|
||||||
mod utils;
|
mod utils;
|
||||||
|
#[cfg(feature = "full")]
|
||||||
mod websocket;
|
mod websocket;
|
||||||
mod ws_wrapper;
|
mod ws_wrapper;
|
||||||
|
|
||||||
|
@ -51,8 +60,10 @@ pub enum EpoxyError {
|
||||||
Hyper(#[from] hyper::Error),
|
Hyper(#[from] hyper::Error),
|
||||||
#[error("HTTP ToStr: {0:?}")]
|
#[error("HTTP ToStr: {0:?}")]
|
||||||
ToStr(#[from] http::header::ToStrError),
|
ToStr(#[from] http::header::ToStrError),
|
||||||
|
#[cfg(feature = "full")]
|
||||||
#[error("Getrandom: {0:?}")]
|
#[error("Getrandom: {0:?}")]
|
||||||
GetRandom(#[from] getrandom::Error),
|
GetRandom(#[from] getrandom::Error),
|
||||||
|
#[cfg(feature = "full")]
|
||||||
#[error("Fastwebsockets: {0:?}")]
|
#[error("Fastwebsockets: {0:?}")]
|
||||||
FastWebSockets(#[from] fastwebsockets::WebSocketError),
|
FastWebSockets(#[from] fastwebsockets::WebSocketError),
|
||||||
|
|
||||||
|
@ -134,6 +145,7 @@ enum EpoxyResponse {
|
||||||
Redirect((Response<Incoming>, http::Request<HttpBody>)),
|
Redirect((Response<Incoming>, http::Request<HttpBody>)),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(feature = "full")]
|
||||||
enum EpoxyCompression {
|
enum EpoxyCompression {
|
||||||
Brotli,
|
Brotli,
|
||||||
Gzip,
|
Gzip,
|
||||||
|
@ -178,6 +190,7 @@ pub struct EpoxyHandlers {
|
||||||
pub onmessage: Function,
|
pub onmessage: Function,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(feature = "full")]
|
||||||
#[wasm_bindgen]
|
#[wasm_bindgen]
|
||||||
impl EpoxyHandlers {
|
impl EpoxyHandlers {
|
||||||
#[wasm_bindgen(constructor)]
|
#[wasm_bindgen(constructor)]
|
||||||
|
@ -240,16 +253,18 @@ impl EpoxyClient {
|
||||||
self.stream_provider.replace_client().await
|
self.stream_provider.replace_client().await
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(feature = "full")]
|
||||||
pub async fn connect_websocket(
|
pub async fn connect_websocket(
|
||||||
&self,
|
&self,
|
||||||
handlers: EpoxyHandlers,
|
handlers: EpoxyHandlers,
|
||||||
url: String,
|
url: String,
|
||||||
protocols: Vec<String>,
|
protocols: Vec<String>,
|
||||||
headers: JsValue,
|
headers: JsValue,
|
||||||
) -> Result<EpoxyWebSocket, EpoxyError> {
|
) -> Result<EpoxyWebSocket, EpoxyError> {
|
||||||
EpoxyWebSocket::connect(self, handlers, url, protocols, headers, &self.user_agent).await
|
EpoxyWebSocket::connect(self, handlers, url, protocols, headers, &self.user_agent).await
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(feature = "full")]
|
||||||
pub async fn connect_tcp(
|
pub async fn connect_tcp(
|
||||||
&self,
|
&self,
|
||||||
handlers: EpoxyHandlers,
|
handlers: EpoxyHandlers,
|
||||||
|
@ -273,6 +288,7 @@ impl EpoxyClient {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(feature = "full")]
|
||||||
pub async fn connect_tls(
|
pub async fn connect_tls(
|
||||||
&self,
|
&self,
|
||||||
handlers: EpoxyHandlers,
|
handlers: EpoxyHandlers,
|
||||||
|
@ -296,6 +312,7 @@ impl EpoxyClient {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(feature = "full")]
|
||||||
pub async fn connect_udp(
|
pub async fn connect_udp(
|
||||||
&self,
|
&self,
|
||||||
handlers: EpoxyHandlers,
|
handlers: EpoxyHandlers,
|
||||||
|
@ -433,7 +450,13 @@ impl EpoxyClient {
|
||||||
.headers_mut()
|
.headers_mut()
|
||||||
.ok_or(EpoxyError::InvalidRequest)?;
|
.ok_or(EpoxyError::InvalidRequest)?;
|
||||||
|
|
||||||
headers_map.insert("Accept-Encoding", HeaderValue::from_static("identity"));
|
cfg_if! {
|
||||||
|
if #[cfg(feature = "full")] {
|
||||||
|
headers_map.insert("Accept-Encoding", HeaderValue::from_static("gzip, br"));
|
||||||
|
} else {
|
||||||
|
headers_map.insert("Accept-Encoding", HeaderValue::from_static("identity"));
|
||||||
|
}
|
||||||
|
}
|
||||||
headers_map.insert("Connection", HeaderValue::from_static("keep-alive"));
|
headers_map.insert("Connection", HeaderValue::from_static("keep-alive"));
|
||||||
headers_map.insert("User-Agent", HeaderValue::from_str(&self.user_agent)?);
|
headers_map.insert("User-Agent", HeaderValue::from_str(&self.user_agent)?);
|
||||||
headers_map.insert("Host", HeaderValue::from_str(host)?);
|
headers_map.insert("Host", HeaderValue::from_str(host)?);
|
||||||
|
@ -480,34 +503,45 @@ impl EpoxyClient {
|
||||||
.status(response.status().as_u16())
|
.status(response.status().as_u16())
|
||||||
.status_text(response.status().canonical_reason().unwrap_or_default());
|
.status_text(response.status().canonical_reason().unwrap_or_default());
|
||||||
|
|
||||||
let response_stream = if !is_null_body(response.status().as_u16()) {
|
cfg_if! {
|
||||||
let compression = match response
|
if #[cfg(feature = "full")] {
|
||||||
.headers()
|
let response_stream = if !is_null_body(response.status().as_u16()) {
|
||||||
.get("Content-Encoding")
|
let compression = match response
|
||||||
.and_then(|val| val.to_str().ok())
|
.headers()
|
||||||
.unwrap_or_default()
|
.get("Content-Encoding")
|
||||||
{
|
.and_then(|val| val.to_str().ok())
|
||||||
"gzip" => Some(EpoxyCompression::Gzip),
|
.unwrap_or_default()
|
||||||
"br" => Some(EpoxyCompression::Brotli),
|
{
|
||||||
_ => None,
|
"gzip" => Some(EpoxyCompression::Gzip),
|
||||||
};
|
"br" => Some(EpoxyCompression::Brotli),
|
||||||
|
_ => None,
|
||||||
|
};
|
||||||
|
|
||||||
let response_body = IncomingBody::new(response.into_body()).into_async_read();
|
let response_body = IncomingBody::new(response.into_body()).into_async_read();
|
||||||
let decompressed_body = match compression {
|
let decompressed_body = match compression {
|
||||||
Some(alg) => match alg {
|
Some(alg) => match alg {
|
||||||
EpoxyCompression::Gzip => {
|
EpoxyCompression::Gzip => {
|
||||||
Either::Left(Either::Left(async_comp::GzipDecoder::new(response_body)))
|
Either::Left(Either::Left(async_comp::GzipDecoder::new(response_body)))
|
||||||
}
|
}
|
||||||
EpoxyCompression::Brotli => {
|
EpoxyCompression::Brotli => {
|
||||||
Either::Left(Either::Right(async_comp::BrotliDecoder::new(response_body)))
|
Either::Left(Either::Right(async_comp::BrotliDecoder::new(response_body)))
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
None => Either::Right(response_body),
|
None => Either::Right(response_body),
|
||||||
};
|
};
|
||||||
Some(ReadableStream::from_async_read(decompressed_body, 1024).into_raw())
|
Some(ReadableStream::from_async_read(decompressed_body, 1024).into_raw())
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
};
|
};
|
||||||
|
} else {
|
||||||
|
let response_stream = if !is_null_body(response.status().as_u16()) {
|
||||||
|
let response_body = IncomingBody::new(response.into_body()).into_async_read();
|
||||||
|
Some(ReadableStream::from_async_read(response_body, 1024).into_raw())
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let resp = web_sys::Response::new_with_opt_readable_stream_and_init(
|
let resp = web_sys::Response::new_with_opt_readable_stream_and_init(
|
||||||
response_stream.as_ref(),
|
response_stream.as_ref(),
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue