mirror of
https://github.com/denoland/deno.git
synced 2024-12-22 07:14:47 -05:00
42c426e769
Implements `WebSocket` over http/2. This requires a conformant http/2 server supporting the extended connect protocol. Passes approximately 100 new WPT tests (mostly `?wpt_flags=h2` versions of existing websockets APIs). This is implemented as a fallback when http/1.1 fails, so a server that supports both h1 and h2 WebSockets will still end up on the http/1.1 upgrade path. The patch also cleas up the websockets handshake to split it up into http, https+http1 and https+http2, making it a little less intertwined. This uncovered a likely bug in the WPT test server: https://github.com/web-platform-tests/wpt/issues/42896
341 lines
9.6 KiB
TOML
341 lines
9.6 KiB
TOML
# Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.
|
|
|
|
[workspace]
|
|
resolver = "2"
|
|
members = [
|
|
"bench_util",
|
|
"cli",
|
|
"cli/napi/sym",
|
|
"runtime",
|
|
"test_ffi",
|
|
"test_napi",
|
|
"test_util",
|
|
"ext/broadcast_channel",
|
|
"ext/cache",
|
|
"ext/console",
|
|
"ext/cron",
|
|
"ext/crypto",
|
|
"ext/fetch",
|
|
"ext/ffi",
|
|
"ext/fs",
|
|
"ext/http",
|
|
"ext/io",
|
|
"ext/kv",
|
|
"ext/net",
|
|
"ext/node",
|
|
"ext/url",
|
|
"ext/web",
|
|
"ext/webidl",
|
|
"ext/websocket",
|
|
"ext/webstorage",
|
|
"ext/napi",
|
|
]
|
|
exclude = ["test_util/std/hash/_wasm"]
|
|
|
|
[workspace.package]
|
|
authors = ["the Deno authors"]
|
|
edition = "2021"
|
|
license = "MIT"
|
|
repository = "https://github.com/denoland/deno"
|
|
|
|
[workspace.dependencies]
|
|
deno_ast = { version = "0.31.2", features = ["transpiling"] }
|
|
deno_core = { version = "0.224.0" }
|
|
|
|
deno_runtime = { version = "0.129.0", path = "./runtime" }
|
|
napi_sym = { version = "0.51.0", path = "./cli/napi/sym" }
|
|
deno_bench_util = { version = "0.115.0", path = "./bench_util" }
|
|
test_util = { path = "./test_util" }
|
|
deno_lockfile = "0.17.2"
|
|
deno_media_type = { version = "0.1.1", features = ["module_specifier"] }
|
|
|
|
denokv_proto = "0.2.1"
|
|
denokv_sqlite = "0.2.1"
|
|
denokv_remote = "0.2.3"
|
|
|
|
# exts
|
|
deno_broadcast_channel = { version = "0.115.0", path = "./ext/broadcast_channel" }
|
|
deno_cache = { version = "0.53.0", path = "./ext/cache" }
|
|
deno_console = { version = "0.121.0", path = "./ext/console" }
|
|
deno_cron = { version = "0.1.0", path = "./ext/cron" }
|
|
deno_crypto = { version = "0.135.0", path = "./ext/crypto" }
|
|
deno_fetch = { version = "0.145.0", path = "./ext/fetch" }
|
|
deno_ffi = { version = "0.108.0", path = "./ext/ffi" }
|
|
deno_fs = { version = "0.31.0", path = "./ext/fs" }
|
|
deno_http = { version = "0.116.0", path = "./ext/http" }
|
|
deno_io = { version = "0.31.0", path = "./ext/io" }
|
|
deno_net = { version = "0.113.0", path = "./ext/net" }
|
|
deno_node = { version = "0.58.0", path = "./ext/node" }
|
|
deno_kv = { version = "0.29.0", path = "./ext/kv" }
|
|
deno_tls = { version = "0.108.0", path = "./ext/tls" }
|
|
deno_url = { version = "0.121.0", path = "./ext/url" }
|
|
deno_web = { version = "0.152.0", path = "./ext/web" }
|
|
deno_webidl = { version = "0.121.0", path = "./ext/webidl" }
|
|
deno_websocket = { version = "0.126.0", path = "./ext/websocket" }
|
|
deno_webstorage = { version = "0.116.0", path = "./ext/webstorage" }
|
|
deno_napi = { version = "0.51.0", path = "./ext/napi" }
|
|
|
|
aes = "=0.8.3"
|
|
anyhow = "1.0.57"
|
|
async-trait = "0.1.73"
|
|
base64 = "0.21.4"
|
|
bencher = "0.1"
|
|
brotli = "3.3.4"
|
|
bytes = "1.4.0"
|
|
cache_control = "=0.2.0"
|
|
cbc = { version = "=0.1.2", features = ["alloc"] }
|
|
# Note: Do not use the "clock" feature of chrono, as it links us to CoreFoundation on macOS.
|
|
# Instead use util::time::utc_now()
|
|
chrono = { version = "0.4", default-features = false, features = ["std", "serde"] }
|
|
console_static_text = "=0.8.1"
|
|
data-url = "=0.3.0"
|
|
data-encoding = "2.3.3"
|
|
dlopen = "0.1.8"
|
|
encoding_rs = "=0.8.33"
|
|
ecb = "=0.1.2"
|
|
fastwebsockets = "=0.5.0"
|
|
filetime = "0.2.16"
|
|
flate2 = { version = "1.0.26", features = ["zlib-ng"], default-features = false }
|
|
fs3 = "0.5.0"
|
|
futures = "0.3.21"
|
|
glob = "0.3.1"
|
|
hex = "0.4"
|
|
http = "0.2.9"
|
|
h2 = { version = "0.3.17", features = ["unstable"] }
|
|
httparse = "1.8.0"
|
|
hyper = { version = "0.14.26", features = ["runtime", "http1"] }
|
|
# TODO(mmastrac): indexmap 2.0 will require multiple synchronized changes
|
|
indexmap1 = { package = "indexmap", version = "1", features = ["serde"] }
|
|
indexmap = { version = "2", features = ["serde"] }
|
|
libc = "0.2.126"
|
|
log = "=0.4.20"
|
|
lsp-types = "=0.94.1" # used by tower-lsp and "proposed" feature is unstable in patch releases
|
|
memmem = "0.1.1"
|
|
monch = "=0.4.3"
|
|
notify = "=5.0.0"
|
|
num-bigint = { version = "0.4", features = ["rand"] }
|
|
once_cell = "1.17.1"
|
|
os_pipe = "=1.1.4"
|
|
parking_lot = "0.12.0"
|
|
percent-encoding = "=2.3.0"
|
|
pin-project = "1.0.11" # don't pin because they yank crates from cargo
|
|
pretty_assertions = "=1.4.0"
|
|
prost = "0.11"
|
|
prost-build = "0.11"
|
|
rand = "=0.8.5"
|
|
regex = "^1.7.0"
|
|
lazy-regex = "3"
|
|
reqwest = { version = "0.11.20", default-features = false, features = ["rustls-tls", "stream", "gzip", "brotli", "socks", "json"] }
|
|
ring = "^0.17.0"
|
|
rusqlite = { version = "=0.29.0", features = ["unlock_notify", "bundled"] }
|
|
rustls = "0.21.8"
|
|
rustls-pemfile = "1.0.0"
|
|
rustls-tokio-stream = "=0.2.7"
|
|
rustls-webpki = "0.101.4"
|
|
rustls-native-certs = "0.6.2"
|
|
webpki-roots = "0.25.2"
|
|
scopeguard = "1.2.0"
|
|
saffron = "=0.1.0"
|
|
serde = { version = "1.0.149", features = ["derive"] }
|
|
serde_bytes = "0.11"
|
|
serde_json = "1.0.85"
|
|
serde_repr = "=0.1.16"
|
|
sha2 = { version = "0.10.6", features = ["oid"] }
|
|
signature = "=1.6.4"
|
|
slab = "0.4"
|
|
smallvec = "1.8"
|
|
socket2 = { version = "0.5.3", features = ["all"] }
|
|
tar = "=0.4.40"
|
|
tempfile = "3.4.0"
|
|
termcolor = "1.1.3"
|
|
thiserror = "1.0.40"
|
|
tokio = { version = "1.28.1", features = ["full"] }
|
|
tokio-metrics = { version = "0.3.0", features = ["rt"] }
|
|
tokio-rustls = "0.24.0"
|
|
tokio-util = "0.7.4"
|
|
tower-lsp = { version = "=0.20.0", features = ["proposed"] }
|
|
url = { version = "2.3.1", features = ["serde", "expose_internals"] }
|
|
uuid = { version = "1.3.0", features = ["v4"] }
|
|
zstd = "=0.12.4"
|
|
elliptic-curve = { version = "0.13.4", features = ["alloc", "arithmetic", "ecdh", "std", "pem"] }
|
|
p224 = { version = "0.13.0", features = ["ecdh"] }
|
|
p256 = { version = "0.13.2", features = ["ecdh"] }
|
|
p384 = { version = "0.13.0", features = ["ecdh"] }
|
|
|
|
# crypto
|
|
rsa = { version = "0.9.3", default-features = false, features = ["std", "pem", "hazmat"] } # hazmat needed for PrehashSigner in ext/node
|
|
hkdf = "0.12.3"
|
|
|
|
# macros
|
|
proc-macro2 = "1"
|
|
quote = "1"
|
|
syn = { version = "2", features = ["full", "extra-traits"] }
|
|
|
|
# unix
|
|
nix = "=0.26.2"
|
|
|
|
# windows deps
|
|
fwdansi = "=1.1.0"
|
|
winres = "=0.1.12"
|
|
winapi = "=0.3.9"
|
|
windows-sys = { version = "0.48.0", features = ["Win32_Media"] }
|
|
|
|
# NB: the `bench` and `release` profiles must remain EXACTLY the same.
|
|
[profile.release]
|
|
codegen-units = 1
|
|
incremental = true
|
|
lto = true
|
|
opt-level = 'z' # Optimize for size
|
|
|
|
# Build release with debug symbols: cargo build --profile=release-with-debug
|
|
[profile.release-with-debug]
|
|
inherits = "release"
|
|
debug = true
|
|
|
|
# NB: the `bench` and `release` profiles must remain EXACTLY the same.
|
|
[profile.bench]
|
|
codegen-units = 1
|
|
incremental = true
|
|
lto = true
|
|
opt-level = 'z' # Optimize for size
|
|
|
|
# Key generation is too slow on `debug`
|
|
[profile.dev.package.num-bigint-dig]
|
|
opt-level = 3
|
|
|
|
# Optimize these packages for performance.
|
|
# NB: the `bench` and `release` profiles must remain EXACTLY the same.
|
|
[profile.bench.package.rand]
|
|
opt-level = 3
|
|
[profile.bench.package.flate2]
|
|
opt-level = 3
|
|
[profile.bench.package.brotli]
|
|
opt-level = 3
|
|
[profile.bench.package.miniz_oxide]
|
|
opt-level = 3
|
|
[profile.bench.package.async-compression]
|
|
opt-level = 3
|
|
[profile.bench.package.brotli-decompressor]
|
|
opt-level = 3
|
|
[profile.bench.package.deno_bench_util]
|
|
opt-level = 3
|
|
[profile.bench.package.deno_core]
|
|
opt-level = 3
|
|
[profile.bench.package.deno_runtime]
|
|
opt-level = 3
|
|
[profile.bench.package.deno_http]
|
|
opt-level = 3
|
|
[profile.bench.package.deno_web]
|
|
opt-level = 3
|
|
[profile.bench.package.deno_broadcast_channel]
|
|
opt-level = 3
|
|
[profile.bench.package.deno_fetch]
|
|
opt-level = 3
|
|
[profile.bench.package.deno_ffi]
|
|
opt-level = 3
|
|
[profile.bench.package.deno_tls]
|
|
opt-level = 3
|
|
[profile.bench.package.deno_websocket]
|
|
opt-level = 3
|
|
[profile.bench.package.deno_net]
|
|
opt-level = 3
|
|
[profile.bench.package.deno_crypto]
|
|
opt-level = 3
|
|
[profile.bench.package.deno_node]
|
|
opt-level = 3
|
|
[profile.bench.package.num-bigint-dig]
|
|
opt-level = 3
|
|
[profile.bench.package.v8]
|
|
opt-level = 3
|
|
[profile.bench.package.serde_v8]
|
|
opt-level = 3
|
|
[profile.bench.package.serde]
|
|
opt-level = 3
|
|
[profile.bench.package.deno_url]
|
|
opt-level = 3
|
|
[profile.bench.package.url]
|
|
opt-level = 3
|
|
[profile.bench.package.bytes]
|
|
opt-level = 3
|
|
[profile.bench.package.futures-util]
|
|
opt-level = 3
|
|
[profile.bench.package.hyper]
|
|
opt-level = 3
|
|
[profile.bench.package.tokio]
|
|
opt-level = 3
|
|
[profile.bench.package.zstd]
|
|
opt-level = 3
|
|
[profile.bench.package.zstd-sys]
|
|
opt-level = 3
|
|
[profile.bench.package.base64-simd]
|
|
opt-level = 3
|
|
|
|
# NB: the `bench` and `release` profiles must remain EXACTLY the same.
|
|
[profile.release.package.rand]
|
|
opt-level = 3
|
|
[profile.release.package.flate2]
|
|
opt-level = 3
|
|
[profile.release.package.brotli]
|
|
opt-level = 3
|
|
[profile.release.package.miniz_oxide]
|
|
opt-level = 3
|
|
[profile.release.package.async-compression]
|
|
opt-level = 3
|
|
[profile.release.package.brotli-decompressor]
|
|
opt-level = 3
|
|
[profile.release.package.deno_bench_util]
|
|
opt-level = 3
|
|
[profile.release.package.deno_core]
|
|
opt-level = 3
|
|
[profile.release.package.deno_runtime]
|
|
opt-level = 3
|
|
[profile.release.package.deno_http]
|
|
opt-level = 3
|
|
[profile.release.package.deno_net]
|
|
opt-level = 3
|
|
[profile.release.package.deno_web]
|
|
opt-level = 3
|
|
[profile.release.package.deno_crypto]
|
|
opt-level = 3
|
|
[profile.release.package.deno_node]
|
|
opt-level = 3
|
|
[profile.release.package.deno_broadcast_channel]
|
|
opt-level = 3
|
|
[profile.release.package.deno_fetch]
|
|
opt-level = 3
|
|
[profile.release.package.deno_ffi]
|
|
opt-level = 3
|
|
[profile.release.package.deno_tls]
|
|
opt-level = 3
|
|
[profile.release.package.deno_websocket]
|
|
opt-level = 3
|
|
[profile.release.package.deno_napi]
|
|
opt-level = 3
|
|
[profile.release.package.test_napi]
|
|
opt-level = 3
|
|
[profile.release.package.num-bigint-dig]
|
|
opt-level = 3
|
|
[profile.release.package.v8]
|
|
opt-level = 3
|
|
[profile.release.package.serde_v8]
|
|
opt-level = 3
|
|
[profile.release.package.serde]
|
|
opt-level = 3
|
|
[profile.release.package.deno_url]
|
|
opt-level = 3
|
|
[profile.release.package.url]
|
|
opt-level = 3
|
|
[profile.release.package.bytes]
|
|
opt-level = 3
|
|
[profile.release.package.futures-util]
|
|
opt-level = 3
|
|
[profile.release.package.hyper]
|
|
opt-level = 3
|
|
[profile.release.package.tokio]
|
|
opt-level = 3
|
|
[profile.release.package.zstd]
|
|
opt-level = 3
|
|
[profile.release.package.zstd-sys]
|
|
opt-level = 3
|
|
[profile.release.package.base64-simd]
|
|
opt-level = 3
|