lychee/lychee-lib/Cargo.toml
Matthias 166c86c30e
Use tokenizer for extraction; add benchmark (#424)
This avoids creating a DOM tree for link extraction and instead uses a `TokenSink` for on-the-fly extraction. In hyperfine benchmarks it was about 10-25% faster than the master.

Old: 4.557 s ± 0.404 s
New: 3.832 s ± 0.131 s

The performance fluctuates a little less as well.

Some missing element/attribute pairs were also added, which contain links according to the HTML spec. These occur very rarely, but it's good to parse them for completeness' sake.

Furthermore tried to clean up a lot of papercuts around our types. We now differentiate between a `RawUri` (stringy-types) and a Uri, which is a properly parsed `URI` type.
The extractor now only deals with extracting `RawUri`s while the collector creates the request objects.
2021-12-16 18:45:52 +01:00

62 lines
1.5 KiB
TOML

[package]
name = "lychee-lib"
authors = ["Matthias Endler <matthias@endler.dev>"]
description = "A glorious link checker"
documentation = "https://github.com/lycheeverse/lychee/blob/master/README.md"
edition = "2018"
homepage = "https://github.com/lycheeverse/lychee"
keywords = [
"link",
"checker",
"cli",
"link-checker",
"validator",
]
license = "Apache-2.0/MIT"
repository = "https://github.com/lycheeverse/lychee"
version = "0.8.1"
[dependencies]
check-if-email-exists = "0.8.25"
fast_chemail = "0.9.6"
glob = "0.3.0"
html5ever = "0.25.1"
http = "0.2.5"
hubcaps = "0.6.2"
linkify = "0.8.0"
openssl-sys = "0.9.72"
pulldown-cmark = "0.8.0"
regex = "1.4.6"
reqwest = { version = "0.11.7", features = ["gzip"] }
# Make build work on Apple Silicon.
# See https://github.com/briansmith/ring/issues/1163
# This is necessary for the homebrew build
# https://github.com/Homebrew/homebrew-core/pull/70216
ring = "0.16.20"
serde = { version = "1.0.125", features = ["derive"] }
shellexpand = "2.1.0"
tokio = { version = "1.14.0", features = ["full"] }
typed-builder = "0.9.1"
url = { version = "2.2.2", features = ["serde"] }
log = "0.4.14"
path-clean = "0.1.0"
percent-encoding = "2.1.0"
async-stream = "0.3.2"
jwalk = "0.6.0"
cached = "0.26.2"
once_cell = "1.9.0"
thiserror = "1.0"
futures = "0.3.18"
[dependencies.par-stream]
version = "0.7.0"
features = ["runtime-tokio"]
[dev-dependencies]
doc-comment = "0.3.3"
pretty_assertions = "1.0.0"
tempfile = "3.2.0"
wiremock = "0.5.7"
[features]
vendored-openssl = ["openssl-sys/vendored"]